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

index 0861069..37f3e7e 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T08:00:06.232Z",
+    "time": "2022-05-19T08:21:25.717Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 97c7074..4f8facf 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T08:00:06.232Z",
+    "time": "2022-05-19T08:21:25.717Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 729f936..b061703 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
-    "SEARCH": "Otsi mida tahes",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
+    "SEARCH": "Search for anything",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index eb1d0e2..b218b70 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Nonii, oled interneti katki teinud!",
-    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
-    "REPORT": "Teata sellest probleemist",
-    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
-    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Well, you broke the internet!",
+    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
+    "REPORT": "Report this problem",
+    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
+    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index ee6d003..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index dc70b81..be7b81a 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Taasta oma parool",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
-    "GO_BACK": "Mine tagasi sisse logima",
-    "LINK_SENT": "Link saadetud",
-    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
-    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
+    "TITLE": "Recover your password",
+    "EMAIL_ADRESS": "Email address",
+    "SEND_RESET_LINK": "SEND RESET LINK",
+    "GO_BACK": "Go back to login",
+    "LINK_SENT": "Link Sent",
+    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format"
     }
   }
 }
index 1f1d597..f78785b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
+    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
     "ERRORS": {}
   }
 }
index 4eb3084..e371b06 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telefonid",
-    "SELECT": "Vali",
-    "CANCEL": "Tühista",
-    "TITLE": "Logi sisse oma kontole",
-    "EMAIL": "E-post",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "REMEMBER_ME": "Pea mind meeles",
-    "FORGOT_PASSWORD": "Unustasid Parooli?",
-    "LOG_IN": "LOGI SISSE",
-    "OR": "VÕI",
-    "WITH_GOOGLE": "Logi sisse Google kontoga",
-    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
-    "DONT_HAVE_ACCOUNT": "Konto puudub?",
-    "CREATE_ACCOUNT": "Loo konto",
+    "TELEPHONES": "Telephones",
+    "SELECT": "Select",
+    "CANCEL": "Cancel",
+    "TITLE": "Log in to your account",
+    "EMAIL": "Email",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "REMEMBER_ME": "Remember Me",
+    "FORGOT_PASSWORD": "Forgot Password?",
+    "LOG_IN": "LOG IN",
+    "OR": "OR",
+    "WITH_GOOGLE": "Log in with Google",
+    "WITH_FACEBOOK": "Log in with Facebook",
+    "DONT_HAVE_ACCOUNT": "No account?",
+    "CREATE_ACCOUNT": "Create an account",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field"
     },
-    "WITH_AD": "Logi sisse Active Directory kontoga"
+    "WITH_AD": "Logige sisse Active Directoryga"
   }
 }
index 8d3f3e2..6d01d84 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Saada tühjana",
-    "REPORTNAME": "Aruande Nimi",
-    "DELETE": "Kustuta",
-    "NAME": "Nimi",
-    "ANALYTICS": "Analüüs",
-    "METRICS": "Mõõdik",
-    "ID": "ID",
-    "TABLE": "Tabel",
-    "DESCRIPTION": "Kirjeldus",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "METRIC": "Mõõdik",
+    "SEND_IF_EMPTY": "Send if empty",
+    "REPORTNAME": "Report Name",
+    "DELETE": "Delete",
+    "NAME": "Name",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Metrics",
+    "ID": "Id",
+    "TABLE": "Table",
+    "DESCRIPTION": "Description",
+    "SEARCH_FOR_ANYONE": "Search",
+    "METRIC": "Metric",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "METRIC_REQUIRED": "Kohustuslik väli",
-      "COLUMN_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli"
+      "NAME_REQUIRED": "Mandatory field",
+      "METRIC_REQUIRED": "Mandatory field",
+      "COLUMN_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field"
     },
-    "NEW_METRIC": "Uus Mõõdik",
-    "ADD_METRIC": "Lisa Mõõdik",
-    "EDIT_METRIC": "Redigeeri Mõõdikut",
-    "DELETE_METRIC": "Kustuta Mõõdik",
-    "SAVE": "Salvesta",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "TYPE": "Tüüp",
-    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
-    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
-    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
-    "GENERATED_AT": "Loomisaeg",
-    "STATUS": "Staatus",
-    "OUTPUT": "Väljund",
-    "REPORTS": "Aruanded",
-    "SEARCH_FOR_FOLDER": "Otsi kausta",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_REPORT": "Uus Aruanne",
-    "ADD_REPORT": "Lisa Aruanne",
-    "COPY_REPORT": "Kopeeri Aruanne",
-    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
-    "RUN_REPORT": "Käivita Aruanne",
-    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
-    "EDIT_REPORT": "Redigeeri Aruannet",
-    "DELETE_REPORT": "Kustuta Aruanne",
-    "CREATE": "Loo Kaust",
-    "RENAME": "Nimeta Kaust ümber",
-    "REMOVE": "Eemalda Kaust",
-    "SELECT_NODE": "Vali Kaust",
-    "ERROR": "Viga",
-    "QUERY_ERROR": "Päringu Tõrge",
-    "MESSAGE": "Sõnum",
-    "CLOSE": "Sule",
-    "FORMAT": "Vorming",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FIELDS": "Väljad",
-    "CONDITION": "Tingimus",
-    "OPERATOR": "Operaator",
-    "GROUP": "Rühm",
-    "COLUMN": "Veerg",
-    "VALUE": "Väärtus",
-    "PREVIEW": "Eelvaade",
-    "LIMITED_RESULT": "*Piiratud Tulemused",
-    "NO_DATA": "Andmete tulemid puuduvad",
-    "CONDITIONS": "Tingimused",
-    "ALIAS": "Pseudonüüm",
-    "FUNCTION": "Funktsioon",
-    "GROUP_BY": "Rühmita Vastavalt",
-    "ORDER_BY": "Telli Vastavalt",
-    "ADD_REPORTFIELD": "Lisa Väli",
-    "EDIT_REPORTFIELD": "Redigeeri Välja",
-    "DELETE_REPORTFIELD": "Kustuta Väli",
-    "METRIC_NAME": "Mõõdik",
-    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "CUSTOM_METRIC": "Kohandatud Mõõdik",
-    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
-    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
-    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "NEW_METRIC": "New Metric",
+    "ADD_METRIC": "Add Metric",
+    "EDIT_METRIC": "Edit Metric",
+    "DELETE_METRIC": "Delete Metric",
+    "SAVE": "Save",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TYPE": "Type",
+    "EXTRACTEDREPORTS": "Extracted Reports",
+    "DATE_RANGE_FROM": "Date Range From",
+    "DATE_RANGE_TO": "Date Range To",
+    "GENERATED_AT": "Generated At",
+    "STATUS": "Status",
+    "OUTPUT": "Output",
+    "REPORTS": "Reports",
+    "SEARCH_FOR_FOLDER": "Search for folder",
+    "CREATED_AT": "Created At",
+    "NEW_REPORT": "New Report",
+    "ADD_REPORT": "Add Report",
+    "COPY_REPORT": "Copy Report",
+    "PREVIEW_REPORT": "Preview Report",
+    "RUN_REPORT": "Run Report",
+    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
+    "EDIT_REPORT": "Edit Report",
+    "DELETE_REPORT": "Delete Report",
+    "CREATE": "Create Folder",
+    "RENAME": "Rename Folder",
+    "REMOVE": "Remove Folder",
+    "SELECT_NODE": "Select Folder",
+    "ERROR": "Error",
+    "QUERY_ERROR": "Query Error",
+    "MESSAGE": "Message",
+    "CLOSE": "Close",
+    "FORMAT": "Format",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FIELDS": "Fields",
+    "CONDITION": "Condition",
+    "OPERATOR": "Operator",
+    "GROUP": "Group",
+    "COLUMN": "Column",
+    "VALUE": "Value",
+    "PREVIEW": "Preview",
+    "LIMITED_RESULT": "*Limited Results",
+    "NO_DATA": "No data results",
+    "CONDITIONS": "Conditions",
+    "ALIAS": "Alias",
+    "FUNCTION": "Function",
+    "GROUP_BY": "Group By",
+    "ORDER_BY": "Order By",
+    "ADD_REPORTFIELD": "Add Field",
+    "EDIT_REPORTFIELD": "Edit Field",
+    "DELETE_REPORTFIELD": "Delete Field",
+    "METRIC_NAME": "Metric",
+    "NO_METRIC_FOUND": "No metric found",
+    "NO_AVAILABLE_INFO": "No available info",
+    "CUSTOM_METRIC": "Custom Metric",
+    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
+    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 2389db1..8b74f11 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Konto",
-    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
-    "ADD_ODBC": "Lisa ODBC",
-    "ADD_PROJECT": "Lisa Projekt",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "AGENTS": "Agendid",
+    "ACCOUNT_ID": "Account",
+    "ADDUSER_PROJECTS": "Add Users to Project",
+    "ADD_ODBC": "Add ODBC",
+    "ADD_PROJECT": "Add Project",
+    "ADD_VARIABLE": "Add Variable",
+    "AGENTS": "Agents",
     "AGI": "AGI",
-    "ALL_USERS": "Kõik Kasutajad",
-    "ANSWER": "Vastus",
-    "APIKEY": "API võti",
-    "APPID": "Rakenduse ID",
-    "Rakendus": "Avaldus",
-    "APPSECRET": "Rakenduse Saladus",
-    "ARGS": "Argumendid",
-    "ATTACHMENT_NAME": "Manuse Nimi",
-    "ATTACHMENT_PATH": "Manuse Tee",
-    "ATTACHMENT_TYPE": "Manuse Tüüp",
+    "ALL_USERS": "All Users",
+    "ANSWER": "Answer",
+    "APIKEY": "ApiKey",
+    "APPID": "App ID",
+    "APPLICATION": "Application",
+    "APPSECRET": "App Secret",
+    "ARGS": "Arguments",
+    "ATTACHMENT_NAME": "Attachment Name",
+    "ATTACHMENT_PATH": "Attachment Path",
+    "ATTACHMENT_TYPE": "Attachment Type",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
-    "AWS_BOT_NAME": "Boti nimi",
-    "AWS_LEX_REGION": "Piirkond",
-    "AWS_POLLY_REGION": "Piirkond",
-    "AWS_POLLY_VOICE": "Hääl",
-    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
-    "AWS_TEXT_TYPE": "Teksti tüüp",
-    "BACK": "Tagasi",
+    "AWSPOLLY": "AWS Polly",
+    "AWS_ACCESS_KEY_ID": "Access Key ID",
+    "AWS_BOT_NAME": "Bot name",
+    "AWS_LEX_REGION": "Region",
+    "AWS_POLLY_REGION": "Region",
+    "AWS_POLLY_VOICE": "Voice",
+    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_TEXT_TYPE": "Text type",
+    "BACK": "Back",
     "BCC": "BCC",
-    "BEEP": "Piiks",
+    "BEEP": "Beep",
     "BODY": "Keha",
-    "CALLBACK": "Tagasihelistamine",
-    "CALLBACK_PRIORITY": "Prioriteet",
+    "CALLBACK": "Callback",
+    "CALLBACK_PRIORITY": "Priority",
     "CALLYSQUARE": "Cally Square",
-    "CC": "Koop",
-    "CHOOSE_ATTACHMENT": "Vali Manus",
-    "CLOSE": "Sule",
-    "COMMAND": "Käsk",
+    "CC": "CC",
+    "CHOOSE_ATTACHMENT": "Choose Attachment",
+    "CLOSE": "Close",
+    "COMMAND": "Command",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Tingimus",
-    "CONTEXT": "Kontekst",
-    "COPY": "Koopia",
-    "COPY_PROJECT": "Kopeeri Projekt",
-    "CREATED_AT": "Loomisaeg",
+    "CONDITION": "Condition",
+    "CONTEXT": "Context",
+    "COPY": "Copy",
+    "COPY_PROJECT": "Copy Project",
+    "CREATED_AT": "Created At",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Kohandatud Rakendus",
-    "DATABASE": "Andmebaas",
-    "DELAY": "viivitus [min]",
-    "DELETE": "Kustuta",
-    "DELETE_ODBC": "Kustuta ODBC",
-    "DELETE_PROJECT": "Kustuta Projekt",
-    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
-    "DESCRIPTION": "Kirjeldus",
-    "DIAL": "Helista",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DIALOGFLOW_LANGUAGE": "Keel",
-    "DIGIT": "Maks. Numbrimärke",
-    "DIGITS": "Number",
-    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
-    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
-    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
+    "CUSTOM_APP": "Custom Application",
+    "DATABASE": "Database",
+    "DELAY": "delay [min]",
+    "DELETE": "Delete",
+    "DELETE_ODBC": "Delete ODBC",
+    "DELETE_PROJECT": "Delete Project",
+    "DELETE_SQUARERECORDING": "Delete Square Recording",
+    "DESCRIPTION": "Description",
+    "DIAL": "Dial",
+    "DIALOGFLOW": "Dialogflow",
+    "DIALOGFLOW_LANGUAGE": "Language",
+    "DIGIT": "Max Digits",
+    "DIGITS": "Digits",
+    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
+    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
     "DSN": "DSN",
-    "EDIT": "Redigeeri",
-    "EDIT_ODBC": "Redigeeri ODBC",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
-    "EDIT_XML": "Redigeeri XMLi",
-    "END": "Lõpeta",
+    "EDIT": "Edit",
+    "EDIT_ODBC": "Edit ODBC",
+    "EDIT_PROJECT": "Edit Project",
+    "EDIT_SQUARERECORDING": "Edit Square Recording",
+    "EDIT_XML": "Edit XML",
+    "END": "End",
     "ERRORS": {
-      "DSN_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "DSN_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-
-    "ESCAPE_DIGITS": "Väldi numbrimärke",
+    "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Exten",
-    "EXTENSION": "Laiendus",
-    "EXT_DIAL": "Väline Helistamine",
-    "FILE": "Faili nimi",
-    "FILENAME": "Faili nimi",
+    "EXTENSION": "Extension",
+    "EXT_DIAL": "External Dial",
+    "FILE": "Filename",
+    "FILENAME": "Filename",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Otsitav",
-    "GETDIGITS": "Hangi Numbrimärgid",
-    "GETSECRETDIGITS": "Hangi Salanumbrid",
-    "GOAL": "Eesmärk",
-    "GOALNAME": "Eesmärgi Nimi",
+    "FINDBY": "Find By",
+    "GETDIGITS": "Get Digits",
+    "GETSECRETDIGITS": "Get Secret Digits",
+    "GOAL": "Goal",
+    "GOALNAME": "Goal Name",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Keel",
+    "GOOGLE_ASR_LANGUAGE": "Language",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Keel",
+    "GOOGLE_TTS_LANGUAGE": "Language",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Mine projektide juurde",
-    "GRAMMAR": "Grammatika",
-    "HANGUP": "Lõpeta kõne",
+    "GO_TO_PROJECTS": "Go to projects",
+    "GRAMMAR": "Grammar",
+    "HANGUP": "Hangup",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
-    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
-    "ID": "ID",
-    "IMPORT": "Impordi",
-    "IMPORT_XML": "Impordi XML",
-    "INTERVAL_ID": "Intervall",
-    "INTKEY": "Katkestusklahv",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
+    "ID": "Id",
+    "IMPORT": "Import",
+    "IMPORT_XML": "Import XML",
+    "INTERVAL_ID": "Interval",
+    "INTKEY": "Interrupt Key",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Keel",
-    "ISPEECH_TTS_LANGUAGE": "Keel",
-    "KEY": "Võti",
-    "LABEL": "Sedel",
+    "ISPEECH_ASR_LANGUAGE": "Language",
+    "ISPEECH_TTS_LANGUAGE": "Language",
+    "KEY": "Key",
+    "LABEL": "Label",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Perekonnanimi",
-    "LIST_ID": "Loend",
-    "LOGIN": "Logi sissse",
-    "LOGOUT": "Logi välja",
+    "LASTNAME": "Last Name",
+    "LIST_ID": "List",
+    "LOGIN": "Login",
+    "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Makro",
-    "MAILBOX": "Postkast",
-    "MATH": "Matemaatika",
-    "MAXDIGIT": "Maks. numbrimärke",
-    "MENU": "Manüü",
+    "MACRO": "Macro",
+    "MAILBOX": "Mailbox",
+    "MATH": "Math",
+    "MAXDIGIT": "Maximum Digits",
+    "MENU": "Menu",
     "METHOD": "Meetod",
-    "MINDIGIT": "Min. numbrimärke",
-    "MODEL": "Mudel",
+    "MINDIGIT": "Minimum Digits",
+    "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSynth",
-    "NAME": "Nimi",
+    "MRCPSYNTH": "MRCPSünth",
+    "NAME": "Name",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANTi URL",
+    "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "Uus",
-    "NEW_ODBC": "Uus ODBC ühendus",
-    "NEW_PROJECT": "Uus Projekt",
-    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW": "New",
+    "NEW_ODBC": "New ODBC connection",
+    "NEW_PROJECT": "New Project",
+    "NEW_VARIABLE": "New Variable",
     "NOOP": "NoOp",
-    "NOTES": "Märkmed",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NOTES": "Notes",
+    "NO_AVAILABLE_INFO": "No available info",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Ühendus",
+    "ODBC_ID": "ODBC Connection",
     "OF": "of",
-    "OPEN": "Ava",
-    "OPEN_NEW_WINDOW": "Ava uues aknas",
-    "OPEN_PROJECT": "Ava Projekt",
-    "OPERATION": "Toiming",
-    "OPTIONS": "Suvandid",
-    "OPTS": "Suvandid",
-    "OUTPUT": "Väljund",
-    "PAGE": "Lehekülg",
+    "OPEN": "Open",
+    "OPEN_NEW_WINDOW": "Open in a new window",
+    "OPEN_PROJECT": "Open Project",
+    "OPERATION": "Operation",
+    "OPTIONS": "Options",
+    "OPTS": "Options",
+    "OUTPUT": "Output",
+    "PAGE": "Page",
     "PASSWORD": "Parool",
-    "PAUSE": "Paus",
-    "PAUSE_ID": "Pausi tüüp",
-    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
-    "PHONE": "Telefon",
-    "PLAYBACK": "Taasesita",
-    "POSITION": "Positsioon",
-    "PRIORITY": "Prioriteet",
-    "PROJECT": "Projekt",
-    "PROJECTS": "Projektid",
-    "PROJECT_ID": "Projekt",
-    "QUERY": "Päring",
-    "QUEUE": "Järjekord",
-    "QUEUE_ID": "Järjekord",
+    "PAUSE": "Pause",
+    "PAUSE_ID": "Pause type",
+    "PERMISSIONADD_PROJECTS": "Add Users to Project",
+    "PHONE": "Phone",
+    "PLAYBACK": "Playback",
+    "POSITION": "Position",
+    "PRIORITY": "Priority",
+    "PROJECT": "Project",
+    "PROJECTS": "Projects",
+    "PROJECT_ID": "Project",
+    "QUERY": "Query",
+    "QUEUE": "Queue",
+    "QUEUE_ID": "Queue",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestuse formaat",
-    "RESPONSE": "Reaktsiooniaja Aegumine",
+    "RECORD": "Record",
+    "RECORDINGFORMAT": "Recording Format",
+    "RESPONSE": "Response Timeout",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Korduskatsed",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "SAVE": "Salvesta",
-    "SAYDIGITS": "Ütle Numbrimärgid",
-    "SAYNUMBER": "Ütle Number",
-    "SAYPHONETIC": "Ütle Häälikud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "SENDFAX": "Saada Faks",
-    "SENDMAIL": "Saada E-kiri",
-    "SENDSMS": "Saada Sõnum",
+    "RETRY": "Retries",
+    "ROWSPERPAGE": "Rows per page",
+    "SAVE": "Save",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECTED_USERS": "Selected Users",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "SENDFAX": "Send Fax",
+    "SENDMAIL": "Send Email",
+    "SENDSMS": "Send SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Hulk",
+    "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Konto",
-    "SMS_TEXT": "Tekst",
-    "SPEED": "Kiirus",
-    "SQUARERECORDINGS": "Salvestused",
+    "SMS_ACCOUNT_ID": "Account",
+    "SMS_TEXT": "Text",
+    "SPEED": "Speed",
+    "SQUARERECORDINGS": "Recordings",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subjekt",
-    "SUBPROJECT": "Alamprojekt",
-    "SYSTEM": "Süsteem",
-    "TELEPHONES": "Telefonid",
-    "TEMPLATE_ID": "Mall",
+    "SUBJECT": "Subject",
+    "SUBPROJECT": "Sub Project",
+    "SYSTEM": "System",
+    "TELEPHONES": "Telephones",
+    "TEMPLATE_ID": "Template",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Tekst",
+    "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Aegumine",
-    "TO": "Kellele",
-    "TRUNK_NAME": "Magistraal",
+    "TIMEOUT": "Timeout",
+    "TO": "To",
+    "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unikaalne ID",
-    "UNPAUSE": "Lõpeta Paus",
-    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
-    "UPDATE_INFO": "Uuenda Infot",
+    "UNIQUEID": "Unique ID",
+    "UNPAUSE": "End Pause",
+    "UPDATE_DESCRIPTION": "Update Description",
+    "UPDATE_INFO": "Update Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Kasutajad",
-    "VARIABLE_ID": "Muutuja",
-    "VARIABLE_VALUE": "Väärtus",
-    "VOICEMAIL": "Kõnepost",
-    "VSWITCH": "Muutuja Vahetus",
+    "USERS": "Users",
+    "VARIABLE_ID": "Variable",
+    "VARIABLE_VALUE": "Value",
+    "VOICEMAIL": "Voicemail",
+    "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "Dialoogivoog V2",
+    "DIALOGFLOWV2": "DialoogivoogV2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 5dc84d3..2f3b48e 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
+    "EDIT_AMAZONLEX": "Edit Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Pääsuvõtme ID",
-    "SECRETACCESSKEY": "Salajane Pääsuvõti",
-    "LEXREGION": "Piirkond",
-    "BOTNAME": "Boti Nimi",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
-    "TRANSFER": "Edasta",
-    "QUEUETRANSFER": "Ooteaja Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
-    "SYSTEMAVATAR": "Süsteemi Avatar",
-    "SYSTEMALIAS": "Süsteemi Alias",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "LANGUAGE": "Keel",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
-    "DIALOGFLOW": "Dialoogivoog",
-    "BACKGROUNDCOLOR": "Taustavärv",
-    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "CUSTOMERALIAS": "Kliendi Alias",
-    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
-    "CUSTOMERAVATAR": "Kleindi Avatar",
-    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
-    "DEFAULTTITLE": "Vaiketiitel",
-    "MESSAGESALIGNMENT": "Sõnumite Joondus",
-    "ALTERNATE": "Alternatiiv",
-    "CENTERED": "Keskele",
-    "POSITION": "Paigutus",
-    "VERTICALPOSITION": "Vertikaalne Paigutus",
-    "ALIGNMENT": "Joondus",
-    "VERTICALALIGNMENT": "Vertikaalne Joondus",
-    "BOTTOM_RIGHT": "All paremal",
-    "RIGHT": "Paremal",
-    "LEFT": "Vasakul",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "AGENTIDENTIFIER": "Identifikaator",
-    "WEBSITEALIAS": "Veebileehe alias",
-    "AGENTALIAS": "Agendi Alias",
-    "AGENTFULLNAME": "Agendi Täisnimi",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "HIDEWHENOFFLINE": "Peida",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "TEXTCOLOR": "Teksti Värv",
-    "FONTSIZE": "Fondi Suurus",
-    "WEBSCRIPT": "Veebi skript",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "CHATCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
-    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri",
-    "DELETE_CHATCANNEDANSWER": "Kustuta",
-    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
-    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
-    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
-    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
-    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
-    "NOTETITLE": "Märkme pealkiri",
-    "CLOSINGQUESTION": "Lõpetav küsimus",
-    "TAGS": "Sildid",
-    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
-    "AGENTAVATAR": "Agendi Avatar",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "WRITING": "Ootel",
-    "CHAT": "Vestlus",
-    "MAIL": "E-kiri",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Avatud kanal",
-    "FAX": "Faks",
-    "PAUSE": "Ootele",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Olek",
-    "LOGOUT": "Logi välja",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
-    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
-    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
-    "OFFLINESTATUS": "Võrgust väljas staatus",
-    "NAME": "Nimi",
-    "CHATQUEUES": "Vestluse Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Ajalõpp",
-    "DESCRIPTION": "Kirjeldus",
-    "KEY": "Võti",
+    "ACCESSKEYID": "Access Key ID",
+    "SECRETACCESSKEY": "Secret Access Key",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot Name",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "SYSTEMAVATAR": "System Avatar",
+    "SYSTEMALIAS": "System Alias",
+    "WELCOMEMESSAGE": "Welcome Message",
+    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Edit Dialogflow",
+    "DIALOGFLOW": "Dialogflow",
+    "BACKGROUNDCOLOR": "Background Color",
+    "MESSAGEFONTSIZE": "Message Font Size",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "CUSTOMERALIAS": "Customer Alias",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
+    "CUSTOMERAVATAR": "Customer Avatar",
+    "SHOWCUSTOMERAVATAR": "Show customer avatar",
+    "DEFAULTTITLE": "Default Title",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ALTERNATE": "Alternate",
+    "CENTERED": "Centered",
+    "POSITION": "Position",
+    "VERTICALPOSITION": "Vertical position",
+    "ALIGNMENT": "Alignment",
+    "VERTICALALIGNMENT": "Vertical alignment",
+    "BOTTOM_RIGHT": "Bottom right",
+    "RIGHT": "Right",
+    "LEFT": "Left",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "AGENTIDENTIFIER": "Identifier",
+    "WEBSITEALIAS": "Website Alias",
+    "AGENTALIAS": "Agent Alias",
+    "AGENTFULLNAME": "Agent Fullname",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "HIDEWHENOFFLINE": "Hide",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "TEXTCOLOR": "Text Color",
+    "FONTSIZE": "Font Size",
+    "WEBSCRIPT": "Web Script",
+    "CANNEDANSWERS": "Canned Answers",
+    "CHATCANNEDANSWERS": "Canned Answers",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_CHATCANNEDANSWER": "New Canned Answer",
+    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit",
+    "DELETE_CHATCANNEDANSWER": "Delete",
+    "OFFLINEMESSAGESUBJECT": "Message subject",
+    "OFFLINEMESSAGEBODY": "Message body",
+    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
+    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
+    "PLACEHOLDERMESSAGE": "Message placeholder",
+    "NOTETITLE": "Note's title",
+    "CLOSINGQUESTION": "Closing question",
+    "TAGS": "Tags",
+    "SHOWAGENTAVATAR": "Show personal agent avatar",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "WRITING": "Writing",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Openchannel",
+    "FAX": "Fax",
+    "PAUSE": "Pause",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "UNPAUSE": "End Pause",
+    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NEW_CHATDISPOSITION": "New Chat Disposition",
+    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
+    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
+    "OFFLINESTATUS": "Offline Status",
+    "NAME": "Name",
+    "CHATQUEUES": "Chat Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "KEY": "Key",
     "ALIAS": "Alias",
-    "VARIABLE": "Muutuja",
-    "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "TIMEZONE": "Ajavöönd",
-    "MESSAGE": "Sõnum",
-    "ADVANCED": "Täpsem",
-    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
-    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
-    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
-    "EDIT_MESSAGE": "Redigeeri Sõnumit",
-    "CONDITION_AGREEMENT": "Tingimusleping",
-    "NONE": "Pole",
-    "PRIORITY": "Prioriteet",
-    "ONLINESTATUS": "Võrgusolek",
-    "UNMANAGEDSTATUS": "Haldamata Olek",
-    "AUTOCLOSE": "Luba Automaatne Sulgemine",
-    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
-    "UNMANAGEDMESSAGE": "Sõnum",
-    "SKIPUNMANAGED": "Jäta vahele Sõnum",
-    "SENDUNMANAGED": "Saada Sõnum",
-    "WEBSITESCRIPT": "Veebilehe Skript",
-    "DELETE_OFFLINEMESSAGE": "Kustuta",
-    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
-    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
-    "SHOW_OFFLINEMESSAGE": "Näita",
-    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
-    "CLOSINGFORM": "Sulgemise Vorm",
-    "ENABLERATING": "Luba Hindamine",
-    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
-    "ENABLEFEEDBACK": "Luba Tagasiside",
-    "RATINGTYPE": "Hinnangu Tüüp",
-    "CLOSINGMESSAGE": "Sulgemise Vorm",
-    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
-    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
-    "EDIT_GOTOIF": "Redigeeri GotoIfi",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
+    "VARIABLE": "Variable",
+    "INTERVAL": "Interval",
+    "EDIT_CLOSE": "Edit Close",
+    "TIMEZONE": "Timezone",
+    "MESSAGE": "Message",
+    "ADVANCED": "Advanced",
+    "FORWARDTRANSCRIPT": "Forward Transcript",
+    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
+    "SKIPMESSAGEBUTTON": "Skip Message Button",
+    "EDIT_MESSAGE": "Edit Message",
+    "CONDITION_AGREEMENT": "Condition Agreement",
+    "NONE": "None",
+    "PRIORITY": "Priority",
+    "ONLINESTATUS": "Online Status",
+    "UNMANAGEDSTATUS": "Unmanaged Status",
+    "AUTOCLOSE": "Enable Autoclose",
+    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
+    "UNMANAGEDMESSAGE": "Message",
+    "SKIPUNMANAGED": "Skip Message",
+    "SENDUNMANAGED": "Send Message",
+    "WEBSITESCRIPT": "Website Script",
+    "DELETE_OFFLINEMESSAGE": "Delete",
+    "OFFLINEMESSAGES": "Offline Messages",
+    "FORWARD_OFFLINE": "Forward Offline",
+    "SHOW_OFFLINEMESSAGE": "Show",
+    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
+    "CLOSINGFORM": "Closing Form",
+    "ENABLERATING": "Enable Rating",
+    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
+    "ENABLEFEEDBACK": "Enable Feedback",
+    "RATINGTYPE": "Rating Type",
+    "CLOSINGMESSAGE": "Closing Message",
+    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
+    "RATINGSTARSNUMBER": "Rating Stars Number",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Kohustuslik Väli",
-      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
-      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
-      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
-      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TAG_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "TEXT_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "BOTNAME_REQUIRED": "Mandatory Field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
+      "AGENTALIAS_REQUIRED": "Mandatory Field",
+      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Vale formaat",
-      "ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
-      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "EMAIL_MUST_BE_VALID": "Wrong format",
+      "ADDRESS_REQUIRED": "Mandatory Field",
+      "ADDRESS_MUST_VALID_URL": "Wrong format",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
+      "WAITINGTITLE_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Kontakteeru Esindajaga väli",
-    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
-    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
-    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
-    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
-    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
-    "MOUSEOVER": "Kursor Peal",
-    "TIMEOUT": "Aegumine",
-    "TYPE": "Tüüp",
-    "SELECTOR": "Selektor",
+    "CM_FIELD": "Contact Manager Field",
+    "CHATPROACTIVEACTIONS": "Proactive Actions",
+    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
+    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
+    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
+    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
+    "MOUSEOVER": "Mouse Over",
+    "TIMEOUT": "Timeout",
+    "TYPE": "Type",
+    "SELECTOR": "Selector",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord Queue",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_GOTOIf": "Redigeeri GotoIf",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
-    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
-    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
-    "SETTINGS": "Sätted",
-    "SAVE": "Salvesta",
-    "SCRIPT": "Skript",
-    "TOKEN": "Luba",
-    "CREATED_AT": "Loodud",
-    "CHATWEBSITES": "Vestluse Veebisaidid",
-    "MOTIONADDRESS": "Veebisaididomeen",
-    "MOTIONPROXY": "Puhvri või Liikumise domeen",
-    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
-    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
-    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
-    "LIST": "Loend",
-    "SNIPPET": "Lõigend",
-    "FORMS": "Vormid",
-    "UP": "Üles",
-    "DOWN": "Alla",
-    "COLLAPSE": "Ahenda",
-    "PROACTIVEACTIONS": "Ennetavad Tegevused",
-    "DISPOSITIONS": "kasutaminesed",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "FIDELITY": "Kvaliteet",
-    "APPEARANCE": "Välimus",
-    "MAINCOLOR": "Põhivärv",
-    "FOCUSCOLOR": "Fookuse Värv",
-    "BUTTONCOLOR": "Nupu Värv",
-    "HEADERSHAPE": "Päise Kujund",
-    "ANIMATION": "Animatsioon",
-    "DEFAULT": "Vaikimisi",
-    "WHITELABEL": "Valge sedel",
+    "QUEUE": "Queue",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_GOTOIf": "Edit GotoIf",
+    "EDIT_NOOP": "Edit Noop",
+    "ADD_CHATQUEUE": "Add Chat Queue",
+    "EDIT_CHATQUEUE": "Edit Chat Queue",
+    "DELETE_CHATQUEUE": "Delete Chat Queue",
+    "SETTINGS": "Settings",
+    "SAVE": "Save",
+    "SCRIPT": "Script",
+    "TOKEN": "Token",
+    "CREATED_AT": "Created At",
+    "CHATWEBSITES": "Chat Websites",
+    "MOTIONADDRESS": "Website Domain",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "ADD_CHATWEBSITE": "Add Chat Website",
+    "EDIT_CHATWEBSITE": "Edit Chat Website",
+    "DELETE_CHATWEBSITE": "Delete Chat Website",
+    "LIST": "List",
+    "SNIPPET": "Snippet",
+    "FORMS": "Forms",
+    "UP": "Up",
+    "DOWN": "Down",
+    "COLLAPSE": "Collapse",
+    "PROACTIVEACTIONS": "Proactive Actions",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "FIDELITY": "Fidelity",
+    "APPEARANCE": "Appearance",
+    "MAINCOLOR": "Main Color",
+    "FOCUSCOLOR": "Focus Color",
+    "BUTTONCOLOR": "Button Color",
+    "HEADERSHAPE": "Header Shape",
+    "ANIMATION": "Animation",
+    "DEFAULT": "Default",
+    "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
-    "ENQUIRY_ENABLE": "Päringu Lubamine",
-    "ENQUIRY_FORWARDING": "Päringu Edastamine",
-    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
-    "LABELS": "Sildid",
-    "HEADER_ONLINE": "Võrguühendusega Päis",
-    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
-    "NAME_TITLE": "Nime Sisendi Sedel",
-    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
-    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
-    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
-    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
-    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
-    "HEADER_OFFLINE": "Võrguühenduseta Päis",
-    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
-    "MESSAGE_TITLE": "Sõnumi Sedel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
-    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
-    "RATING_MESSAGE": "Hinnangu Sõnum",
-    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
-    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
-    "ONLINE": "Võrguühendusega",
-    "OFFLINE": "Võrguühenduseta",
-    "PROACTIVE": "Ennetav",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka Tagasi",
-    "REJECTMETHOD": "Lükka Tagasi Meetod",
-    "REJECTURL": "Lükka Tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "EMBEDDING": "Manustamine",
-    "GENERAL": "Üldine",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "DOWNLOADTRANSCRIPT": "Download Transcript",
+    "ENQUIRY_ENABLE": "Enquiry Enable",
+    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
+    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
+    "LABELS": "Labels",
+    "HEADER_ONLINE": "Online Header",
+    "ONLINE_MESSAGE": "Online Message",
+    "NAME_TITLE": "Name Input Label",
+    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
+    "EMAIL_TITLE": "Email Input Label",
+    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
+    "START_CHAT_BUTTON": "'Start Chat' Button",
+    "AGENTS_BUSY": "Busy Agents Message",
+    "HEADER_OFFLINE": "Offline Header",
+    "OFFLINE_MESSAGE": "Offline Message",
+    "MESSAGE_TITLE": "Message Label",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
+    "ENQUIRY_BUTTON": "Enquiry Button Text",
+    "RATING_MESSAGE": "Rating Message",
+    "RATING_SEND": "Rating Send Button Text",
+    "RATING_SKIP": "Rating Skip Button Text",
+    "ONLINE": "Online",
+    "OFFLINE": "Offline",
+    "PROACTIVE": "Proactive",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "EMBEDDING": "Embedding",
+    "GENERAL": "General",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
     "HELP": {
-      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
-      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
-      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
-      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
-      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
-      "INTEVAL": "Valitav saadaolevate intervallide loendist",
-      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
-      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
-      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
-      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
-      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
-      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
-      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
-      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
-      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
-      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
-      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "INTERVAL": "Vali loendist üks",
-      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
+      "VERTICALPOSITION": "Represents the distance in percentage from top",
+      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
+      "HIDEWHENOFFLINE": "Hides snippet when offline",
+      "KEY": "Website short name (5 char) shown on the Agent Tab",
+      "TOKEN": "Automatically generated token used in the Script",
+      "INTEVAL": "To be selected from the list of the available intervals",
+      "TIMEZONE": "Select one from the list (default=local timezone)",
+      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
+      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
+      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
+      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
+      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
+      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "The following Motion Contact Manager field:",
+      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
+      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
+      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate Contacts",
+      "INTERVAL": "Select one from the list",
+      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
     },
-    "ADDRESS": "Aadress",
-    "ONLINESTATE": "Võrguühendusega Olek",
-    "OFFLINESTATE": "Võrguühenduseta Olek",
-    "RATINGSTATE": "Hindamise Staatus",
-    "ENQUIRY": "Päring",
-    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
-    "CHATDISPOSITIONS": "Vestluse Kasutused",
-    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
-    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
-    "DELETE": "Kustuta",
-    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
-    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
-    "ID": "ID",
-    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
-    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
-    "ROUNDED": "Ümargune",
-    "SQUARED": "Ruudukujuline",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "ADDRESS": "Address",
+    "ONLINESTATE": "Online Status",
+    "OFFLINESTATE": "Offline Status",
+    "RATINGSTATE": "Rating State",
+    "ENQUIRY": "Enquiry",
+    "OFFLINETEMPLATE": "Offline Template",
+    "CHATDISPOSITIONS": "Chat Dispositions",
+    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
+    "ADD_CHATDISPOSITION": "Add Chat Disposition",
+    "DELETE": "Delete",
+    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
+    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
+    "ID": "Id",
+    "NEW_CHATQUEUE": "New Chat Queue",
+    "NEW_CHATWEBSITE": "New Chat Website",
+    "ROUNDED": "Rounded",
+    "SQUARED": "Squared",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Alustamise aeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Avatud",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "WEBSITE": "Veebisait",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali Staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "WEBSITE": "Website",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
-    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSEDAT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutamine",
-    "CREATEDAT": "Loomise aeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
-    "SELECTED_WEBSITE": "Vali veebisait",
+    "FILTERS": "Filters",
+    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
+    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CREATEDAT": "Created At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECTED_WEBSITE": "Select a website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "SELECT_WEBSITE": "Vali veebisait",
-    "INFO": "Teave",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
-    "WAITINGTITLE": "Ootamise Pealkiri",
-    "WAITINGMESSAGE": "Ootamise Sõnum",
-    "RATING": "Hindamine",
-    "NO_RATINGVALUE": "Hindamine puudub",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "UNKNOWN": "Tundmatu",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_GOTOP": "Edit Gotop",
+    "SELECT_WEBSITE": "Select a website",
+    "INFO": "Info",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
+    "WAITINGTITLE": "Waiting Title",
+    "WAITINGMESSAGE": "Waiting Message",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "No Rating",
+    "DEFAULT_PAUSE": "Default pause",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "NOTE": "Märkus",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "NOTE": "Märge",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muuda TVoxi",
+    "EDIT_TVOX": "Muutke TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP-aadress",
+    "TVOXIP": "TVoxi IP -aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP-aadress",
+    "TVOXURL": "TVoxi IP -aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 494d629..2592ba3 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Vali sildid",
-    "CUSTOMER_JOURNEY": "Klienditeekond",
-    "USERID": "Kutsu tagasi Agendi ID",
-    "PRIORITY": "Prioriteet",
-    "MOTIONDIALER": "Liikumise Pull",
-    "IMPORT_CONTACTS": "Impordi Kontaktid",
-    "PREFIX": "Helistamise Eesliide",
-    "VOICEQUEUEID": "Hääljärjekorra ID",
-    "CAMPAIGNID": "Kampaania ID",
-    "STATE": "Olek",
-    "NAME": "Nimi",
-    "LISTS": "Loendid",
-    "UNIQUEID": "Unikaalne ID",
-    "STATUS": "Staatus",
-    "STARTTIME": "Algusaeg",
-    "ENDTIME": "Lõpuaeg",
-    "MOTION_BULL": "Liikumise Pull",
+    "SELECT_TAG": "Select tags",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "USERID": "Recall Agent ID",
+    "PRIORITY": "Priority",
+    "MOTIONDIALER": "Motion Bull",
+    "IMPORT_CONTACTS": "Import Contacts",
+    "PREFIX": "Dial Prefix",
+    "VOICEQUEUEID": "VoiceQueue ID",
+    "CAMPAIGNID": "Campaign ID",
+    "STATE": "State",
+    "NAME": "Name",
+    "LISTS": "Lists",
+    "UNIQUEID": "Unique Id",
+    "STATUS": "Status",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopperi Finaal",
-    "HISTORY": "Hopperi Ajalugu",
-    "SCHEDULEDAT": "Ajastatud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_LIST": "Redigeeri loendit",
-    "EDIT_HOPPER": "Redigeeri Hopperit",
-    "DELETE_LIST": "Kustuta Loend",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "RELOAD": "Laadi uuesti",
-    "NO_COMPANIES": "Ettevõte puudub",
-    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
-    "ADD": "Lisa",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper History",
+    "SCHEDULEDAT": "Scheduled At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_LIST": "Edit List",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Delete List",
+    "DELETE_HOPPER": "Delete Hopper",
+    "RELOAD": "Reload",
+    "NO_COMPANIES": "No Company",
+    "NO_AVAILABLE_ITEMS": "No Available Items",
+    "ADD": "Add",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
+      "NAME_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Kirjeldus",
-    "DISPOSITION": "Kasutus",
-    "DISPOSITIONS": "Kasutused",
-    "VOICEDISPOSITIONS": "Hääle Kasutused",
-    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "ADD_LIST": "Lisa Loendid",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "COMPANIES": "Ettevõtted",
-    "EDIT_COMPANY": "Redigeeri Ettevõtet",
-    "DELETE_COMPANY": "Kustuta Ettevõtted",
-    "PHONE": "Telefon",
-    "EMAIL": "E-post",
-    "ADD_COMPANY": "Lisa Ettevõte",
-    "CONTACTS": "Kontaktid",
-    "NEW_LIST": "Uus loend",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "LIST": "Loend",
-    "COMPANY": "Ettevõte",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "EDIT_CONTACT": "Muuda Kontakti",
-    "MERGE_CONTACT": "Koosta Kontakt",
-    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
-    "DELETE_CONTACT": "Kustuta Kontakt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "DETAIL": "Üksikasi",
-    "PERSONAL_INFO": "Isiklik teave",
-    "MOBILE": "Mobiil",
-    "FAX": "Faks",
-    "TAGS": "Sildid",
-    "SHOW_ALL_FIELDS": "Näita kõik väljad",
-    "FEWER_FIELDS": "Näita vähem välju",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "DELETE": "Kustuta",
-    "DELETE_ALL": "Kustuta Kõik",
-    "CONTACTMANAGER": "Kontaktide Haldur",
-    "ID": "ID",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CUSTOMFIELDS": "Kohandatud Väljad",
-    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
-    "ADD_TAG": "Lisa Silt",
-    "NO_TAG": "Sildid Puuduvad",
+    "DESCRIPTION": "Description",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositions",
+    "VOICEDISPOSITIONS": "Voice Dispositions",
+    "NEW_VOICEDISPOSITION": "New Voice Disposition",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "ADD_LIST": "Add List",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "COMPANIES": "Companies",
+    "EDIT_COMPANY": "Edit Company",
+    "DELETE_COMPANY": "Delete Company",
+    "PHONE": "Phone",
+    "EMAIL": "Email",
+    "ADD_COMPANY": "Add Company",
+    "CONTACTS": "Contacts",
+    "NEW_LIST": "New List",
+    "FIRSTNAME": "First Name",
+    "LASTNAME": "Last Name",
+    "LIST": "List",
+    "COMPANY": "Company",
+    "ADD_CONTACT": "Add Contact",
+    "EDIT_CONTACT": "Edit Contact",
+    "MERGE_CONTACT": "Merge Contact",
+    "DUPLICATE_CONTACT": "Duplicate Contact",
+    "DELETE_CONTACT": "Delete Contact",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "DETAIL": "Detail",
+    "PERSONAL_INFO": "Personal Info",
+    "MOBILE": "Mobile",
+    "FAX": "Fax",
+    "TAGS": "Tags",
+    "SHOW_ALL_FIELDS": "Show all fields",
+    "FEWER_FIELDS": "Show less fields",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "DELETE": "Delete",
+    "DELETE_ALL": "Delete All",
+    "CONTACTMANAGER": "Contacts Manager",
+    "ID": "Id",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CUSTOMFIELDS": "Custom Fields",
+    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
+    "ADD_TAG": "Add Tag",
+    "NO_TAG": "No Tags",
     "ALIAS": "Alias",
-    "TYPE": "Tüüp",
-    "VALUE": "Väärtus",
-    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
-    "NEW_COMPANY": "Uus Ettevõte",
-    "NEW_CONTACT": "Uus Kontakt",
-    "NEW_TAG": "Uus Silt",
-    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
-    "FINISH": "Lõpp",
-    "SUCCESS": "Õnnestus",
-    "FAILURE": "Nurjus",
-    "ALL_CONTACTS": "Kõik Kontaktid",
-    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
-    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "VAT": "KM",
-    "COMPANYID": "Ettevõtte ID",
-    "WEBSITE": "Veebisait",
-    "EMAIL_DOMAIN": "E-posti Domeen",
-    "ADDRESS": "Aadress",
-    "POSTAL_CODE": "Postiindeks",
-    "SHIPMENTADDRESS": "Saadetise Aadress",
-    "COPY_CONTACT": "Kopeeri Kontakt",
-    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
-    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
-    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
-    "AGENTADD_LIST": "Lisa Agendid Loendisse",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NONE": "Ühtegi",
-    "FULLNAME": "Täisnimi",
-    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
-    "DUPLICATES": "Dublikaadid",
-    "UPLOAD_CSV": "Laadi üles CSV",
-    "TAG": "Silt",
-    "UPLOAD": "Laadi üles",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "DATEOFBIRTH": "Sünnikuupäev",
-    "NOTES": "Märkmed",
-    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
-    "GOTO_LIST": "Kuva Kontaktid",
-    "GOTO_COMPANY": "Kuva Kontaktid",
-    "REQUIRED": "Nõutud",
-    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
-    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
-    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "TYPE": "Type",
+    "VALUE": "Value",
+    "ADD_CUSTOMFIELD": "Add Custom Field",
+    "EDIT_CUSTOMFIELD": "Edit Custom Field",
+    "DELETE_CUSTOMFIELD": "Delete Custom Field",
+    "NEW_COMPANY": "New Company",
+    "NEW_CONTACT": "New Contact",
+    "NEW_TAG": "New Tag",
+    "UPLOAD_CONTACTS": "Upload Contacts",
+    "FINISH": "Finish",
+    "SUCCESS": "Success",
+    "FAILURE": "Failure",
+    "ALL_CONTACTS": "All Contacts",
+    "NEW_CUSTOMFIELD": "New Custom Field",
+    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
+    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "VAT": "VAT",
+    "COMPANYID": "Company ID",
+    "WEBSITE": "Website",
+    "EMAIL_DOMAIN": "Email Domain",
+    "ADDRESS": "Address",
+    "POSTAL_CODE": "Postal Code",
+    "SHIPMENTADDRESS": "Shipment Address",
+    "COPY_CONTACT": "Copy Contact",
+    "GOTOCONTACTS_LIST": "Show Contacts",
+    "GOTOCONTACTS_COMPANY": "Show Contacts",
+    "ADD_AGENT_TO_LIST": "Add Agent to List",
+    "AGENTADD_LIST": "Add Agents to List",
+    "NO_AVAILABLE_INFO": "No available info",
+    "NONE": "None",
+    "FULLNAME": "Full Name",
+    "CHECK_DUPLICATES": "Check Duplicates",
+    "DUPLICATES": "Duplicates",
+    "UPLOAD_CSV": "Upload CSV",
+    "TAG": "Tag",
+    "UPLOAD": "Upload",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "DATE_OF_BIRTH": "Birthdate",
+    "DATEOFBIRTH": "Birthdate",
+    "NOTES": "Notes",
+    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
+    "GOTO_LIST": "Show Contacts",
+    "GOTO_COMPANY": "Show Contacts",
+    "REQUIRED": "Required",
+    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
+    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
+    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
+    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
+    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessioonid",
+    "SESSIONS": "Sessions",
     "AGENT": "Agent",
-    "PROJECT": "Projekt",
-    "SELECT_LIST": "Vali loend",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_TAGS": "Vali üks või enam silte",
+    "PROJECT": "Project",
+    "SELECT_LIST": "Select a list",
+    "SELECT_COMPANY": "Select a company",
+    "SELECT_TAGS": "Select one or more tags",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
-      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
+      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
+      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu leheküljel",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "SOCIAL": "Sotsiaalne",
-    "ROW": "Rida",
-    "EXPORT_ERRORS": "Ekspordi Vead",
-    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
-    "STOP": "Peata",
-    "SELECT_FILE": "Vali Fail",
+    "SOCIAL": "Social",
+    "ROW": "Row",
+    "EXPORT_ERRORS": "Export Errors",
+    "UPLOAD_COMPLETED": "Upload Completed",
+    "STOP": "Stop",
+    "SELECT_FILE": "Select File",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
+    "ADDITIONAL_PHONES": "Täiendavad telefonid",
+    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd"
+    "TIMEZONE": "Vali ajavöönd",
+    "MOVE_DOWN": "Liigu alla",
+    "MOVE_UP": "Üles liikuma"
   }
 }
index 739750c..0a5b7eb 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Allalaadimine",
-    "UNMANAGED_RATE": "Haldamata Määr",
-    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
-    "VOICE_WAITING": "OOTEL",
-    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
-    "VOICE_TALKING": "RÄÄKIMINE",
-    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
-    "VOICE_ANSWERED": "VASTATUD",
-    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
-    "VOICE_ABANDONED": "TAGASILÜKATUD",
-    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
-    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
-    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
-    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
-    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
-    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
-    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
-    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
-    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
-    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
-    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
-    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
-    "VOICE_UNMANAGED": "HALDAMATA",
-    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
-    "OPENED_TEXT": "Avatud Suhtlused",
-    "MANAGED": "Hallatud",
-    "MANAGED_TEXT": "Hallatud Suhtlused",
-    "ABANDONED": "Tagasilükatud",
-    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
-    "ABANDONED_RATE": "Tagasilükatud Määr",
-    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
-    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
-    "MANAGED_RATE": "Hallatud Määr",
-    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
-    "AVG_MANAGED_TIME": "AVG Haldusaeg",
-    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
-    "NO_DISPOSITION_SET": "Kasutust pole määratud",
-    "AGENTS": "Agendid",
-    "TRANSFER": "Edastus",
-    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
-    "CUSTOMER_JOURNEY": "Kliendi Teekond",
-    "ME": "Mina",
-    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
-    "NOTAVAILABLE": "Pole saadaval",
-    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
-    "ASSIGNTO": "Määra",
-    "SELECT_CAMPAIGN": "Vali Järjekord",
-    "FREE": "Vaba",
-    "RESERVED": "Reserveeritud",
-    "QUEUECALLEREXITREASON": "Põhjus",
-    "QUEUECALLEREXITAT": "Katkestatud",
-    "LASTASSIGNEDTO": "Viimati määratud",
-    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
-    "ABANDONAT": "Tagasilükatud",
-    "QUEUE": "Järjekord",
-    "SELECT_SUBSTATUS": "Vali Alamstaatus",
-    "READ": "Loetud",
-    "UNREAD": "Lugemata",
-    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
-    "SELECT_AGENT": "Vali Agent",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
-    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
-    "CHANNEL_QUEUE": "Järjekord",
-    "CHANNEL_FROM": "Alates",
-    "LOADING_INTERACTION": "Laadime suhtlust...",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "DOWNLOAD": "Download",
+    "UNMANAGED_RATE": "Unmanaged Rate",
+    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
+    "VOICE_WAITING": "WAITING",
+    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
+    "VOICE_TALKING": "TALKING",
+    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
+    "VOICE_ANSWERED": "ANSWERED",
+    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
+    "VOICE_ABANDONED": "ABANDONED",
+    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
+    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
+    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
+    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
+    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
+    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
+    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
+    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
+    "VOICE_ANSWER_RATE": "ANSWER RATE",
+    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
+    "VOICE_ABANDON_RATE": "ABANDON RATE",
+    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
+    "VOICE_UNMANAGED": "UNMANAGED",
+    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
+    "ABANDONED": "Abandoned",
+    "ABANDONED_TEXT": "Abandoned Interactions",
+    "ABANDONED_RATE": "Abandoned Rate",
+    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
+    "TOTAL_OFFERED": "Total Offered",
+    "TOTAL_OFFERED_TEXT": "Offered Interactions",
+    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
+    "MANAGED_RATE": "Managed Rate",
+    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
+    "AVG_MANAGED_TIME": "AVG Management Time",
+    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
+    "NO_DISPOSITION_SET": "No disposition set",
+    "AGENTS": "Agents",
+    "TRANSFER": "Transfer",
+    "NO_DATA_AVAILABLE": "No data available",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "ME": "Me",
+    "CURRENTLY_IN_USE_BY": "Currently in use by",
+    "NOTAVAILABLE": "Not available",
+    "CLICKRELOAD": "New abandoned calls! Reload please",
+    "ASSIGNTO": "Assign to",
+    "SELECT_CAMPAIGN": "Select a Queue",
+    "FREE": "Free",
+    "RESERVED": "Reserved",
+    "QUEUECALLEREXITREASON": "Reason",
+    "QUEUECALLEREXITAT": "Dropped",
+    "LASTASSIGNEDTO": "Last Assigned To",
+    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
+    "ABANDONAT": "Abandoned",
+    "QUEUE": "Queue",
+    "SELECT_SUBSTATUS": "Select Substatus",
+    "READ": "Read",
+    "UNREAD": "Unread",
+    "SELECT_READ_UNREAD": "Select Read/Unread",
+    "SELECT_AGENT": "Select Agent",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
+    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
+    "CHANNEL_QUEUE": "Queue",
+    "CHANNEL_FROM": "From",
+    "LOADING_INTERACTION": "We are loading the interaction...",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "MON": "E",
-    "TUE": "T",
-    "WED": "K",
-    "THU": "N",
-    "FRI": "R",
-    "SAT": "L",
-    "SUN": "P",
-    "DELETE": "Kustuta",
-    "LAST_3_DAYS": "Viimased 3 Päeva",
-    "LAST_YEAR": "Viimane Aasta",
-    "THIS_YEAR": "See Aasta",
-    "LAST_MONTH": "Viimane Kuu",
-    "THIS_MONTH": "See Kuu",
-    "LAST_WEEK": "Viimane Nädal",
-    "THIS_WEEK": "See Nädal",
-    "YESTERDAY": "Eile",
-    "TODAY": "Täna",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "HOME": "Kodu",
-    "SET_AS": "Määra kui",
-    "PENDING": "Ootel",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
-    "TAGS": "Sildid",
-    "SELECT_TAG": "Vali Silt",
-    "TYPE": "Tüüp",
-    "SOURCE": "Lähtekoht",
-    "DESTINATION": "Sihtpunkt",
-    "CALLERID": "Helistaja ID",
-    "END_AT": "Lõpetamise aeg",
-    "DURATION": "Kestus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "FAX": "Faks",
-    "NOT_ASSIGNED": "Pole määratud",
-    "UNKNOWN": "Teadmata",
-    "SELECT_USER": "Vali Kasutaja",
-    "LAST_MESSAGE": "Viimane sõnum",
-    "USER": "Kasutaja",
-    "RATING": "Hinnang",
-    "FEEDBACK": "Tagasiside",
-    "SUBJECT": "Teema",
-    "CUSTOMER_IP": "Kliendi IP",
-    "REFERER": "Viitaja",
-    "ACCOUNT": "Konto",
-    "WEBSITE": "Veebisait",
+    "DECEMBER": "December",
+    "MON": "Mon",
+    "TUE": "Tue",
+    "WED": "Wed",
+    "THU": "Thu",
+    "FRI": "Fri",
+    "SAT": "Sat",
+    "SUN": "Sun",
+    "DELETE": "Delete",
+    "LAST_3_DAYS": "Last 3 Day",
+    "LAST_YEAR": "Last Year",
+    "THIS_YEAR": "This Year",
+    "LAST_MONTH": "Last Month",
+    "THIS_MONTH": "This Month",
+    "LAST_WEEK": "Last Week",
+    "THIS_WEEK": "This Week",
+    "YESTERDAY": "Yesterday",
+    "TODAY": "Today",
+    "SELECT_DATE": "Select Start Date",
+    "HOME": "Home",
+    "SET_AS": "Set As",
+    "PENDING": "Pending",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "TAGS": "Tags",
+    "SELECT_TAG": "Select Tag",
+    "TYPE": "Type",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "CALLERID": "Caller ID",
+    "END_AT": "End At",
+    "DURATION": "Duration",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "NOT_ASSIGNED": "Not Assigned",
+    "UNKNOWN": "Unknown",
+    "SELECT_USER": "Select User",
+    "LAST_MESSAGE": "Last message",
+    "USER": "User",
+    "RATING": "Rating",
+    "FEEDBACK": "Feedback",
+    "SUBJECT": "Subject",
+    "CUSTOMER_IP": "Customer IP",
+    "REFERER": "Referer",
+    "ACCOUNT": "Account",
+    "WEBSITE": "Website",
     "AGENT": "Agent",
-    "CREATED_AT": "Loomisaeg",
-    "CLOSED_AT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutus",
-    "CONTACT": "Kontakt",
-    "INTERACTION": "Suhtlus",
-    "BROWSER_NAME": "Brauseri Nimi",
-    "BROWSER_VERSION": "Brauseri Versioon",
-    "OS_NAME": "Operatsioonisüsteemi Nimi",
-    "OS_VERSION": "Operatsioonisüsteemi Versioon",
-    "DEVICE_MODEL": "Seadme Mudel",
-    "DEVICE_VENDOR": "Seadme Tarnija",
-    "DEVICE_TYPE": "Seadme Tüüp",
-    "RECALLME": "Kutsu Mind tagasi",
-    "DROP_RATE": "Katkesta Määr",
-    "DROPPED": "Katkestatud",
-    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
-    "DETAIL": "Üksikasi",
-    "MOTION_BULL": "Liikumise Pull",
-    "LIMITED": "Piiratud",
-    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
-    "DASHBOARDS": "Töölauad",
-    "RECORDINGS": "Salvestused",
-    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
-    "ORIGINATED": "Päritolu",
-    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
-    "UPDATE": "Värskendamine",
-    "MORE": "Rohkem",
-    "MOTIONDIALER": "Liikumise Pull",
-    "DISPOSE": "Likvideeri",
-    "QUEUES": "Järjekorrad",
-    "DIALER_CALL": "Numbrivalija Kõne",
-    "ELAPSED_TIME": "Kulunud Aeg",
-    "EDIT": "Redigeeri",
-    "MERGE": "Ühenda",
-    "DUPLICATE": "Dubleeri",
-    "UNIQUEID": "Kordumatu ID",
-    "CAMPAIGN": "Kampaania",
-    "NONE": "Ühtegi",
-    "NAME": "Nimi",
-    "ANSWER_MACHINE": "Automaatvastaja",
-    "INTERESTED": "Huvitatud",
-    "NOT_INTERESTED": "Pole Huvitatud",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "SOLD": "Müüdud",
-    "SPECIAL": "Muud",
-    "BLACKLIST": "Must nimekiri",
-    "RESCHEDULE": "Planeeri uuesti",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "MOBILE": "Mobiil",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "COMPANY": "Ettevõte",
-    "TAG": "Silt",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "GENERAL": "Üldine",
-    "VOICE": "Hääl",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
-    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
-    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
-    "INBOUND_ANSWERED": "Vastatud",
-    "OUTBOUND_ANSWERED": "Vastatud",
-    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
-    "INBOUND_ANSWER_RATE": "Vastuse Määr",
-    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
-    "ABANDON_RATE": "Tagasilükkamise Määr",
-    "UNMANAGED": "Haldamata",
-    "TOTAL": "Kokku",
-    "TOT_DURATION": "Kestus Kokku",
-    "AVG_DURATION": "Keskmine Kestus",
+    "CREATED_AT": "Created At",
+    "CLOSED_AT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CONTACT": "Contact",
+    "INTERACTION": "Interaction",
+    "BROWSER_NAME": "Browser Name",
+    "BROWSER_VERSION": "Browser Version",
+    "OS_NAME": "Operating System Name",
+    "OS_VERSION": "Operating System Version",
+    "DEVICE_MODEL": "Device Model",
+    "DEVICE_VENDOR": "Device Vendor",
+    "DEVICE_TYPE": "Device Type",
+    "RECALLME": "Recall Me",
+    "DROP_RATE": "Drop Rate",
+    "DROPPED": "Dropped",
+    "DROPPED_TEXT": "Dropped Queue Calls",
+    "DETAIL": "Detail",
+    "MOTION_BULL": "Motion Bull",
+    "LIMITED": "Limited",
+    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
+    "DASHBOARDS": "Dashboards",
+    "RECORDINGS": "Recordings",
+    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
+    "ORIGINATED": "Originated",
+    "ORIGINATED_TEXT": "Queue Calls Originated",
+    "UPDATE": "Update",
+    "MORE": "More",
+    "MOTIONDIALER": "Motion Bull",
+    "DISPOSE": "Dispose",
+    "QUEUES": "Queues",
+    "DIALER_CALL": "Dialer Call",
+    "ELAPSED_TIME": "Elapsed Time",
+    "EDIT": "Edit",
+    "MERGE": "Merge",
+    "DUPLICATE": "Duplicate",
+    "UNIQUEID": "Uniqueid",
+    "CAMPAIGN": "Campaign",
+    "NONE": "None",
+    "NAME": "Name",
+    "ANSWER_MACHINE": "Answer Machine",
+    "INTERESTED": "Interested",
+    "NOT_INTERESTED": "Not Interested",
+    "PERSONAL_INFO": "Personal Info",
+    "SOLD": "Sold",
+    "SPECIAL": "Special",
+    "BLACKLIST": "Blacklist",
+    "RESCHEDULE": "Reschedule",
+    "FIRSTNAME": "Firstname",
+    "LASTNAME": "Lastname",
+    "MOBILE": "Mobile",
+    "DATE_OF_BIRTH": "Birthdate",
+    "COMPANY": "Company",
+    "TAG": "Tag",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "GENERAL": "General",
+    "VOICE": "Voice",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
+    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
+    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "INBOUND_ANSWERED": "Answered",
+    "OUTBOUND_ANSWERED": "Answered",
+    "AVG_HOLD_TIME": "Average Hold Time",
+    "INBOUND_ANSWER_RATE": "Answer Rate",
+    "OUTBOUND_ANSWER_RATE": "Answer Rate",
+    "ABANDON_RATE": "Abandon Rate",
+    "UNMANAGED": "Unmanaged",
+    "TOTAL": "Total",
+    "TOT_DURATION": "Total Duration",
+    "AVG_DURATION": "Average Duration",
     "HELP": {
-      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
-      "WAITING": "Ootel Suhtluste koguarv",
-      "OPENED": "Aktiivsete Suhtluste koguarv",
-      "MANAGED": "Lõpetatud Suhtluste koguarv",
-      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
-      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
-      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
-      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
-      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
-      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
-      "UNMANAGED": "Haldamata Suhtluste koguarv",
-      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
-      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
-      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
-      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
-      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
-      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
-      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
-      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
-      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
-      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
-      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
-      "TOTAL": "Väljuvate Kõnede koguarv",
-      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
-      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
+      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
+      "WAITING": "The total number of Waiting Interactions",
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
+      "ABANDONED": "The total number of Abandoned Interactions",
+      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
+      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
+      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
+      "MANAGED_RATE": "The Managed Rate of all the Interactions",
+      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
+      "UNMANAGED": "The total number of Unmanaged Interactions",
+      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
+      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
+      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
+      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
+      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
+      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
+      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
+      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
+      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
+      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
+      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
+      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
+      "DROP_RATE": "The Drop Rate of all the Queue Calls",
+      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
+      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
+      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
+      "TOTAL": "The total number of Outbound Calls",
+      "TOT_DURATION": "The total duration of all the Outbound Calls",
+      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "AGENT_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
-    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
-    "ADD": "Lisa",
-    "CONTACTMANAGER": "Kontakti Haldur",
-    "DASHBOARD": "Töölaud",
-    "EDIT_CONTACT": "Redigeeri kontakti",
-    "EMAIL": "E-post",
-    "FULLNAME": "Täisnimi",
-    "LIST": "Loend",
-    "NEW_CONTACT": "Uus Kontakt",
-    "PHONE": "Telefon",
-    "SAVE": "Salvesta",
-    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
-    "CONTACTS": "Kontaktid",
-    "MYCONTACTS": "Minu Kontaktid",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "RELOAD": "Laadi uuesti",
-    "WAITING_TEXT": "Ootel Suhtlused",
-    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
-    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
-    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
-    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
-    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
-    "UNMANAGED_TEXT": "Haldamata Suhtlused",
-    "TOTAL_TEXT": "Väljuvad Kõned kokku",
-    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
-    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
-    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridy lehekülje kohta",
+    "NO_AVAILABLE_INFO": "No available info",
+    "WELCOME_TO_MOTION": "Welcome to Motion",
+    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
+    "ADD": "Add",
+    "CONTACTMANAGER": "Contact Manager",
+    "DASHBOARD": "Dashboard",
+    "EDIT_CONTACT": "Edit contact",
+    "EMAIL": "Email",
+    "FULLNAME": "Fullname",
+    "LIST": "List",
+    "NEW_CONTACT": "New Contact",
+    "PHONE": "Phone",
+    "SAVE": "Save",
+    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
+    "CONTACTS": "Contacts",
+    "MYCONTACTS": "My Contacts",
+    "ADD_CONTACT": "Add Contact",
+    "RELOAD": "Reload",
+    "WAITING_TEXT": "Waiting Interactions",
+    "TALKING_TEXT": "Active Queue Calls",
+    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
+    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
+    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
+    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
+    "UNMANAGED_TEXT": "Unmanaged Interactions",
+    "TOTAL_TEXT": "Total Outbound Calls",
+    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
+    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
+    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
-    "CONTACT_INFO": "Kontakti Teave",
-    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
-    "DISPOSITIONS": "Kasutused",
-    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
-    "ACCEPT": "Aktsepteeri",
-    "REJECT": "Hülga",
-    "CLOSED": "Suletud",
-    "INFO": "Teave",
-    "NOTE": "Märge",
-    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
-    "ATTENTION": "Tähelepanu",
-    "SOCIAL": "Sotsiaalne",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
-    "OPENED": "Avatud",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "SELECT_WEBSITE": "Vali Veebisait",
-    "ALL": "Kõik",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "OPEN": "Ava",
-    "SHOW": "Kuba",
-    "SHOW_DETAILS": "Kuva Üksikasjad",
-    "HIDE_DETAILS": "Peida Üksikasjad",
-    "EXTERNAL_URL": "Väline Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
-    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
-    "CLEAR": "Tühjenda",
-    "CALL_NUMBER": "Helista",
-    "TRANSFER_NUMBER": "Edasta",
-    "CALL_SAVED": "Kõne õigesti salvestatud",
-    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
+    "CONTACT_INFO": "Contact Info",
+    "CLOSE_AND_DISPOSE": "Close and dispose",
+    "DISPOSITIONS": "Dispositions",
+    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
+    "ACCEPT": "Accept",
+    "REJECT": "Reject",
+    "CLOSED": "Closed",
+    "INFO": "Info",
+    "NOTE": "Note",
+    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
+    "ATTENTION": "Attention",
+    "SOCIAL": "Social",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
+    "OPENED": "Opened",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "SELECT_ACCOUNT": "Select Account",
+    "SELECT_WEBSITE": "Select Website",
+    "ALL": "All",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "OPEN": "Open",
+    "SHOW": "Show",
+    "SHOW_DETAILS": "Show Details",
+    "HIDE_DETAILS": "Hide Details",
+    "EXTERNAL_URL": "External Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
+    "SELECT_DATE_RANGE": "Select Date Range",
+    "CLEAR": "Clear",
+    "CALL_NUMBER": "Call",
+    "TRANSFER_NUMBER": "Transfer",
+    "CALL_SAVED": "Call properly saved",
+    "CALL_DISPOSED": "Call properly disposed",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse suhtlused",
+    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi suhtlused",
+    "FAX_INTERACTIONS": "Faksi interaktsioonid",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "ID",
+    "ID": "Id",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
-    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
+    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
+    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Väljastatud",
+    "INVOICEEMITED": "Välja antud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On väiksem kui",
+    "IS_LESS_THAN": "On vähem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti suhtlused",
+    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
+    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Kirjuta üle",
+    "OVERWRITE": "Üle kirjutada",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
+    "QUOTATIONPRODUCTNOTE": "Toote märkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_FIELD": "Vali väli",
+    "SELECT_COMPANY": "Valige ettevõte",
+    "SELECT_FIELD": "Valige väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Vali vahemik",
-    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
-    "SELECT_PERIOD_START": "Vali kuupäev",
-    "SELECT_PRODUCT": "Vali toode",
-    "SELECT_PRODUCTTYPE": "Vali tüüp",
-    "SELECT_QUEUE": "Vali järjekord",
-    "SELECT_WORKFLOW": "Vali Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
-    "SMS_INTERACTIONS": "Sõnumi suhtlused",
+    "SELECT_PERIOD": "Valige vahemik",
+    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
+    "SELECT_PERIOD_START": "Valige kuupäev",
+    "SELECT_PRODUCT": "Valige toode",
+    "SELECT_PRODUCTTYPE": "Valige tüüp",
+    "SELECT_QUEUE": "Valige järjekord",
+    "SELECT_WORKFLOW": "Valige Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
+    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastad",
+    "YEARS": "Aastaid",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Vali",
-    "SELECT_CONTACT": "Vali kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
+    "SELECT": "Valige",
+    "SELECT_CONTACT": "Valige kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Tiim",
+    "SELECT_TEAM": "Valige Meeskond",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnita",
+    "CONFIRM": "Kinnitage",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
-    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
-    "SETFILTERS": "Määra filtrid",
+    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
+    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
+    "SETFILTERS": "Määrake filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
-    "SCHEDULED_AT": "kavas kl",
-    "SYSTEM_TIME": "Süsteemi aeg"
+    "SYSTEM_TIME": "Süsteemi aeg",
+    "CONTACT_NAME": "kontaktisiku nimi",
+    "CONTACT_PHONE": "Kontakt Telefon",
+    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
+    "SCHEDULED_TIME": "Planeeritud aeg",
+    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
   }
 }
index fd6d9b8..7e03440 100644 (file)
 {
   "FAX": {
-    "LOGIN_TIME": "Sisselogimise Aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "FAXCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
-    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SPYINTERACTION": "Spioon",
-    "TAGS": "Sildid",
-    "REPLY": "Vasta",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
-    "EDIT_TRUNK": "Redigeeri Magistraali",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "ACCOUNTS": "Kontod",
-    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "PAUSE": "Paus",
-    "INFO": "Teave",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "LOGOUT": "Logi välja",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "PRIORITY": "Prioriteet",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_CLOSE": "Redigeeri Sule",
-    "QUEUE": "Järjekord",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "CANNEDANSWERS": "Canned Answers",
+    "FAXCANNEDANSWERS": "Canned Answers",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_FAXCANNEDANSWER": "New Canned Answer",
+    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "TAGS": "Tags",
+    "REPLY": "Reply",
+    "SEND": "Send",
+    "TO": "To",
+    "FROM": "From",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
+    "EDIT_TRUNK": "Edit Trunk",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "EDIT_ACCOUNT": "Edit Fax Account",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
+    "ACCOUNTS": "Accounts",
+    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
+    "TRUNK_STATUS": "Trunk Status",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "PAUSE": "Pause",
+    "INFO": "Info",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "DEFAULT_PAUSE": "Default pause",
+    "AGENTADD_QUEUE": "Add Agent to Fax queue",
+    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
+    "UNPAUSE": "End Pause",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "PRIORITY": "Priority",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "EDIT_FAXQUEUE": "Edit Fax Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOP": "Edit GotoP",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "EDIT_QUEUE": "Edit Fax Queue",
+    "EDIT_CLOSE": "Edit Close",
+    "QUEUE": "Queue",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Märkmed",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutamine",
-    "REALTIME": "Reaalaeg",
-    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
-    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
-    "NAME": "Nimi",
-    "FAXQUEUES": "Faksi Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "NOTES": "Notes",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "REALTIME": "Realtime",
+    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
+    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
+    "NAME": "Name",
+    "FAXQUEUES": "Fax Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
-      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
-      "MODEM_REQUIRED": "Kohustuslik Väli",
-      "GATEWAY_REQUIRED": "Kohustuslik Väli",
-      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
-      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
-      "TRUNK_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
+      "MODEM_REQUIRED": "Mandatory Field",
+      "GATEWAY_REQUIRED": "Mandatory Field",
+      "FAXDETECT_REQUIRED": "Mandatory Field",
+      "T38TIMEOUT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "HEADERINFO_REQUIRED": "Mandatory Field",
+      "TRUNK_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
-    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FAXACCOUNTS": "Faksi Kontod",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
-    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
-    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "TRUNK": "Magistraal",
-    "LOCALSTATIONID": "Kohaliku Jaama ID",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_FAXQUEUE": "Add Fax Queue",
+    "DELETE_FAXQUEUE": "Delete Fax Queue",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FAXACCOUNTS": "Fax Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_FAXACCOUNT": "Add Fax Account",
+    "EDIT_FAXACCOUNT": "Edit Fax Account",
+    "DELETE_FAXACCOUNT": "Delete Fax Account",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "TRUNK": "Trunk",
+    "LOCALSTATIONID": "Local Station Identifier",
     "HELP": {
-      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
-      "HEADERINFO": "Väljuva Faksi Päise teave",
-      "MODEM": "Modemi Tüüp (v17/v27/v29)",
-      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
-      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
-      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
-      "ECM": "Ühenduse Režiimi Viga (ECM)",
-      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
-      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
+      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
+      "HEADERINFO": "Outbound Fax Header information",
+      "MODEM": "Modem Type (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
+      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
+      "ECM": "Error Connection Mode (ECM)",
+      "MINRATE": "Minimum transfer rate set before transmission",
+      "MAXRATE": "Maximum transfer rate set before transmission",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
     },
-    "ADVANCED": "Täpsem",
+    "ADVANCED": "Advanced",
     "ECM": "ECM",
-    "MINRATE": "Min Määr",
-    "MAXRATE": "Maks Määr",
+    "MINRATE": "Min Rate",
+    "MAXRATE": "Max Rate",
     "MODEM": "Modem",
-    "GATEWAY": "Portaal",
-    "FAXDETECT": "Faksi Tuvastus",
-    "T38TIMEOUT": "T.38 Aegumine",
-    "SIP": "Tehnoloogia",
-    "HEADERINFO": "Päise Teave",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "FAX": "Faks",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "FAXDISPOSITIONS": "Faksi Kasutus",
-    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
-    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
-    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
-    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
-    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
-    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
-    "NEW_FAXACCOUNT": "Uus Faksi Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "GATEWAY": "Gateway",
+    "FAXDETECT": "Fax Detect",
+    "T38TIMEOUT": "T.38 Timeout",
+    "SIP": "Technology",
+    "HEADERINFO": "Header Info",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "FAX": "Fax",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Fax Dispositions",
+    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
+    "NEW_FAXDISPOSITION": "New Fax Disposition",
+    "ADD_FAXDISPOSITION": "Add Fax Disposition",
+    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
+    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
+    "NEW_FAXQUEUE": "New Fax Queue",
+    "NEW_FAXACCOUNT": "New Fax Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "DELETE": "Kustuta",
-    "KEY": "Võti",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "ALL": "Kõik",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "INTERACTIONS": "Suhtlused",
-    "CONTACT": "Kontact",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "UNKNOWN": "Teadmata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutuses",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DELETE": "Delete",
+    "KEY": "Key",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "ALL": "All",
+    "CLOSED": "Closed",
+    "OPENED": "Opened",
+    "SELECT_ACCOUNT": "Select Account",
+    "INTERACTIONS": "Interactions",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "UNKNOWN": "Unknown",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index b43fb9a..4c1be43 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Kohta",
-    "CONTACT_US": "Võta meiega ühendust",
-    "HELP": "Abi",
-    "USEFUL_LINKS": "Kasulikud lingid"
+    "ABOUT": "About",
+    "CONTACT_US": "Contact us",
+    "HELP": "Help",
+    "USEFUL_LINKS": "Useful links"
   }
 }
index 7444e6b..0a98fe6 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Täpsem",
-    "MODULE_SEARCH": "Mooduli Otsing",
-    "MODULE_CREATE": "Mooduli Loomine",
-    "INTEGRATIONS": "Integreerimised",
-    "ZENDESKACCOUNTS": "Zendesk Kontod",
-    "ID": "ID",
-    "NAME": "Nimi",
-    "USERNAME": "Kasutajanimi",
+    "ADVANCED": "Advanced",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
-    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
-    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
-    "AUTHTYPE": "Autentimise Tüüp",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TOKEN": "Luba",
-    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
+    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
+    "AUTHTYPE": "Authentication Type",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TOKEN": "Token",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
+    "DESCRIPTION": "Description",
+    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "URI_REQUIRED": "Kohustuslik väli",
-      "URI_MUST_VALID_URL": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "TOKEN_REQUIRED": "Kohustuslik väli",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
-      "CLIENTID_REQUIRED": "Kohustuslik väli",
-      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
-      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
-      "APIKEY_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
-      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
-      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
-      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
-      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "URI_REQUIRED": "Mandatory field",
+      "URI_MUST_VALID_URL": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TOKEN_REQUIRED": "Mandatory field",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
+      "CLIENTID_REQUIRED": "Mandatory field",
+      "CLIENTSECRET_REQUIRED": "Mandatory field",
+      "SECURITYTOKEN_REQUIRED": "Mandatory field",
+      "APIKEY_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "VARIABLENAME_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "CONSUMERKEY_REQUIRED": "Mandatory field",
+      "CONSUMERSECRET_REQUIRED": "Mandatory field",
+      "TOKENSECRET_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "AUTHTOKEN_REQUIRED": "Mandatory field",
+      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
+      "ACCESS_KEY_REQUIRED": "Mandatory field",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
+      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
     },
-    "ACCOUNT": "Konto",
-    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
-    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
-    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
-    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
-    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
-    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
-    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
-    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
-    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
-    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
-    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
-    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
-    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
-    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
-    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
-    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
-    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
-    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
-    "SALESFORCEACCOUNTS": "Salesforce Kontod",
-    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
-    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
-    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
-    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
-    "CLIENTID": "Kliendi ID",
-    "CLIENTSECRET": "Kliendi Saladus",
-    "SECURITYTOKEN": "Turvalisuse Luba",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "APIKEY": "Api Võti",
-    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
-    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
-    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
-    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
-    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
-    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
-    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
-    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
-    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
-    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
-    "CONFIGURATIONS": "Konfiguratsioonid",
-    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
-    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
-    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
-    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
-    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
-    "SUBJECTS": "Teemad",
-    "DESCRIPTIONS": "Kirjeldused",
-    "FIELDS": "Väljad",
-    "TAGS": "Sildid",
-    "TYPE": "Tüüp",
-    "CONTENT": "Sisu",
-    "EDIT_SUBJECT": "Redigeeri Teemat",
-    "DELETE_SUBJECT": "Kustuta Teema",
-    "NEW_SUBJECT": "Uus Teema",
-    "ADD_SUBJECT": "Lisa Teema",
-    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
-    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
-    "NEW_DESCRIPTION": "Uus Kirjeldus",
-    "ADD_DESCRIPTION": "Lisa Kirjeldus",
-    "EDIT_FIELD": "Redigeeri Väli",
-    "DELETE_FIELD": "Kustuta Väli",
-    "NEW_FIELD": "Uus Väli",
-    "ADD_FIELD": "Lisa Väli",
-    "ADD": "Lisa",
-    "VOICE": "Hääl",
-    "MAIL": "E-post",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
-    "OUTBOUND_CALL": "Väljuv Kõne",
-    "VALUE": "Väärtus",
-    "FIELD": "Väli",
-    "KEY": "Võti",
-    "CHANNEL": "Kanal",
-    "DELETE": "Kustuta",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
-    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
-    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
-    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
-    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
-    "NEW_TAB": "Uus Vahekaart",
-    "DESKACCOUNTS": "Desk Kontod",
-    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
-    "TEST_DESKACCOUNT": "Testi Desk Kontot",
-    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
-    "CONSUMERKEY": "Tarbija Võti",
-    "CONSUMERSECRET": "Tarbija Saladus",
-    "TOKENSECRET": "Loa Saladus",
-    "ADD_DESKACCOUNT": "Lisa Desk Konto",
-    "NEW_DESKACCOUNT": "Uus Desk Konto",
-    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
-    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
-    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
-    "ZOHOACCOUNTS": "Zoho Kontod",
-    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
-    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
-    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
-    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
-    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
-    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
-    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
-    "AUTHTOKEN": "Autoriseerimise Luba",
+    "ACCOUNT": "Account",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
+    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
+    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
+    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
+    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
+    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
+    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
+    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
+    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
+    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
+    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
+    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
+    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
+    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
+    "CLIENTID": "Client ID",
+    "CLIENTSECRET": "Client Secret",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
+    "APIKEY": "Api Key",
+    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
+    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
+    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
+    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
+    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
+    "CONFIGURATIONS": "Configurations",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
+    "ADD_CONFIGURATION": "Add Configuration",
+    "EDIT_CONFIGURATION": "Edit Configuration",
+    "DELETE_CONFIGURATION": "Delete Configuration",
+    "SUBJECTS": "Subjects",
+    "DESCRIPTIONS": "Descriptions",
+    "FIELDS": "Fields",
+    "TAGS": "Tags",
+    "TYPE": "Type",
+    "CONTENT": "Content",
+    "EDIT_SUBJECT": "Edit Subject",
+    "DELETE_SUBJECT": "Delete Subject",
+    "NEW_SUBJECT": "New Subject",
+    "ADD_SUBJECT": "Add Subject",
+    "EDIT_DESCRIPTION": "Edit Description",
+    "DELETE_DESCRIPTION": "Delete Description",
+    "NEW_DESCRIPTION": "New Description",
+    "ADD_DESCRIPTION": "Add Description",
+    "EDIT_FIELD": "Edit Field",
+    "DELETE_FIELD": "Delete Field",
+    "NEW_FIELD": "New Field",
+    "ADD_FIELD": "Add Field",
+    "ADD": "Add",
+    "VOICE": "Voice",
+    "MAIL": "Email",
+    "CHAT": "Chat",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
+    "FIELD": "Field",
+    "KEY": "Key",
+    "CHANNEL": "Channel",
+    "DELETE": "Delete",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
+    "DESKACCOUNTS": "Desk Accounts",
+    "EDIT_DESKACCOUNT": "Edit Desk Account",
+    "TEST_DESKACCOUNT": "Test Desk Account",
+    "DELETE_DESKACCOUNT": "Delete Desk Account",
+    "CONSUMERKEY": "Consumer Key",
+    "CONSUMERSECRET": "Consumer Secret",
+    "TOKENSECRET": "Token Secret",
+    "ADD_DESKACCOUNT": "Add Desk Account",
+    "NEW_DESKACCOUNT": "New Desk Account",
+    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
+    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
+    "ZOHOACCOUNTS": "Zoho Accounts",
+    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
+    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
+    "ADD_ZOHOACCOUNT": "Add Zoho Account",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
+    "AUTHTOKEN": "Authorization Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Kontod",
-    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
-    "MODULE_NAME": "vTiger Mooduli Nimi",
-    "ACCESS_KEY": "vTiger Pääsuvõti",
-    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
-    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
-    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
-    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
-    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
-    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
-    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
-    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
-    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
+    "ACCESS_KEY": "vTiger Access Key",
+    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
+    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
+    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
+    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
+    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
+    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võta ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võtke ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
+    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Freshsales kontod",
-    "LEADS": "Vihjed",
+    "FRESHSALESACCOUNTS": "Värske müügi kontod",
+    "LEADS": "Plii",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba",
+    "REFRESHTOKEN": "Värskenda luba (loodud)",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Rentniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
-    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
+    "TENANTID": "Üürniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
-    "LEADID": "Vihje ID"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
+    "LEADID": "Plii ID",
+    "DYNAMIC365CONTACT": "Võtke ühendust",
+    "DYNAMIC365NOTHING": "Mitte midagi",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
+    "OPENNEWTAB": "Ava uus vaheleht"
   }
 }
index 0aa355b..054f558 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Klooni Projekti",
-    "NAME": "Nimi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "DESCRIPTION": "Kirjeldus",
+    "CLONE_PROJECT": "Clone Project",
+    "NAME": "Name",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DESCRIPTION": "Description",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat"
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format"
     },
-    "SAVE": "Salvesta",
-    "PROJECTS": "Projektid",
-    "ADD_PROJECT": "Lisa Projekt",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "DELETE_PROJECT": "Kustuta Projekt",
+    "SAVE": "Save",
+    "PROJECTS": "Projects",
+    "ADD_PROJECT": "Add Project",
+    "EDIT_PROJECT": "Edit Project",
+    "DELETE_PROJECT": "Delete Project",
     "JSCRIPTY": "Jscripty",
-    "ID": "ID",
-    "PROJECT": "Projekt",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_PROJECT": "Uus Projekt",
-    "EDIT": "Redigeeri",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "OPEN_CONTACT": "Ava Kontakt",
+    "ID": "Id",
+    "PROJECT": "Project",
+    "CREATED_AT": "Created At",
+    "NEW_PROJECT": "New Project",
+    "EDIT": "Edit",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "OPEN_CONTACT": "Open Contact",
     "HELP": {
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
-    "SESSIONS": "Sessioonid",
-    "STARTTIME": "Alguse Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "MEMBERNAME": "Liikme Nimi",
-    "CALLERIDNUM": "Helistaja Number",
-    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
-    "SESSION_RESULTS": "Sessiooni Tulemused",
-    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
-    "ANSWERS": "Vastused",
-    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
-    "TOTAL": "Kokku",
-    "ANSWER": "Vastus",
-    "EXPORT_TO_CSV": "Ekspordi CSVsse",
-    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
-    "DELETE_SESSION": "Kustuta Sessioon",
-    "RESET_SESSION": "Lähtesta Sessioon",
-    "YES": "Jah",
-    "NO": "Ei",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
-    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
-    "SUBMIT": "Esita",
-    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
-    "COMPLETE": "Vii lõpule",
-    "SESSIONS_PROJECT": "Mine Sessioonidesse",
-    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
+    "JSCRIPTYSESSIONS": "Project Sessions",
+    "SESSIONS": "Sessions",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MEMBERNAME": "Member Name",
+    "CALLERIDNUM": "Caller Number",
+    "NO_SESSION_AVAILABLE": "No Sessions available",
+    "SESSION_RESULTS": "Session Results",
+    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "ANSWERS": "Answers",
+    "NO_RESULTS_AVAILABLE": "No results available",
+    "TOTAL": "Total",
+    "ANSWER": "Answer",
+    "EXPORT_TO_CSV": "Export to CSV",
+    "NO_ANSWERS_AVAILABLE": "No answers available",
+    "DELETE_SESSION": "Delete Session",
+    "RESET_SESSION": "Reset Session",
+    "YES": "Yes",
+    "NO": "No",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
+    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
+    "SUBMIT": "Submit",
+    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "COMPLETE": "Complete",
+    "SESSIONS_PROJECT": "Go to Sessions",
+    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
   },
   "mwForm": {
     "form": {
-      "name": "Pealkiri",
-      "name.placeholder": "Vormi pealkiri",
-      "description": "Kirjeldus"
+      "name": "Title",
+      "name.placeholder": "Form title",
+      "description": "Description"
     },
     "buttons": {
-      "addPage": "Lisa lehekülg",
-      "moveDown": "Liigu alla",
-      "moveUp": "Liigu üles",
-      "removePage": "Eemalda lehekülg",
-      "remove": "Eemalda",
-      "addElement": "Lisa element",
-      "questionReady": "Valmis",
-      "next": "Järgmine",
-      "back": "Tagasi",
-      "submit": "Esita",
-      "begin": "Alusta",
-      "fold": "Voldi",
-      "unfold": "Voldi lahti",
-      "edit": "Redigeeri",
-      "clone": "Klooni",
-      "view": "Vaata"
+      "addPage": "Add page",
+      "moveDown": "Move down",
+      "moveUp": "Move up",
+      "removePage": "Remove page",
+      "remove": "Remove",
+      "addElement": "Add element",
+      "questionReady": "Ready",
+      "next": "Next",
+      "back": "Back",
+      "submit": "Submit",
+      "begin": "Begin",
+      "fold": "Fold",
+      "unfold": "Unfold",
+      "edit": "Edit",
+      "clone": "Clone",
+      "view": "View"
     },
     "page": {
       "tab": {
-        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
+        "heading": "Page {{page}} of {{allPages}}"
       },
       "elements": {
-        "empty": "Tühi lehekülg"
+        "empty": "Empty page"
       },
-      "pageWithNameCheckbox": "nimetatud",
-      "name": "Lehekülje nimi"
+      "pageWithNameCheckbox": "named",
+      "name": "Page name"
     },
     "pageFlow": {
-      "afterPage": "Pärast lehekülge {{lehekülg}}:",
-      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
-      "goToPage": "Mine leheküljele {{lehekülje number}}",
-      "goToNextPage": "Jätke järgmisel leheküljel",
-      "submitForm": "Esita vorm"
+      "afterPage": "After page {{page}}:",
+      "afterQuestionAnswer": "Go to page based on answer",
+      "goToPage": "Go to page {{page.number}}",
+      "goToNextPage": "Continue to next page",
+      "submitForm": "Submit form"
     },
     "elements": {
-      "question": "Küsimus",
-      "image": "Pilt",
-      "paragraph": "Lõik"
+      "question": "Question",
+      "image": "Image",
+      "paragraph": "Paragraph"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Lühike tekst"
+          "name": "Short text"
         },
         "textarea": {
-          "name": "Pikk tekst"
+          "name": "Long text"
         },
         "radio": {
-          "name": "Raadio"
+          "name": "Radio"
         },
         "select": {
-          "name": "Vali"
+          "name": "Select"
         },
         "checkbox": {
-          "name": "Märkeruudud"
+          "name": "Checkboxes"
         },
         "grid": {
-          "name": "Ruudustik"
+          "name": "Grid"
         },
         "priority": {
-          "name": "Prioriteet"
+          "name": "Priority"
         },
         "division": {
-          "name": "Jaotus"
+          "name": "Division"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Kuupäev"
+          "name": "Date"
         },
         "datetime": {
-          "name": "Kuupäev ja kellaaeg"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Kellaaeg"
+          "name": "Time"
         },
         "email": {
-          "name": "E-post"
+          "name": "Email"
         },
         "range": {
-          "name": "Vahemik"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Küsimuse tekst",
-      "type": "Küsimuse tüüp",
-      "required": "Nõutud",
+      "text": "Question text",
+      "type": "Question type",
+      "required": "Required",
       "preview": {
-        "text": "Lühivastuse tekst",
-        "textarea": "Pika vastuse tekst",
-        "otherAnswer": "Muu"
+        "text": "Short answer text",
+        "textarea": "Long answer text",
+        "otherAnswer": "Other"
       },
       "division": {
-        "quantity": "Kogus",
-        "unit": "Ühiku sedel",
-        "assignedSumLabel": "Määratud",
-        "fromRequiredLabel": "alates nõutavast"
+        "quantity": "Quantity",
+        "unit": "Unit label",
+        "assignedSumLabel": "Assigned",
+        "fromRequiredLabel": "from required"
       },
       "priority": {
-        "sorted": "Sorditud",
-        "available": "Saadaval",
-        "clickToAddItem": "Kliki üksuse lisamiseks"
+        "sorted": "Sorted",
+        "available": "Available",
+        "clickToAddItem": "Click to add item"
       },
       "grid": {
-        "cellInputType": "Lahtri sisendi tüüp",
+        "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Raadio",
-          "checkbox": "Märkeruut",
-          "text": "Tekst",
+          "radio": "Radio",
+          "checkbox": "Checkbox",
+          "text": "Text",
           "number": "Number",
-          "date": "Kuupäev",
-          "time": "Kellaaeg"
+          "date": "Date",
+          "time": "Time"
         },
-        "rowLabel": "Rida {{rida}}",
-        "clickToAddRow": "Kliki rea lisamiseks",
-        "columnLabel": "Veerg {{veerg}}",
-        "clickToAddColumn": "Kliki veeru lisamiseks"
+        "rowLabel": "Row {{row}}",
+        "clickToAddRow": "Click to add row",
+        "columnLabel": "Column {{col}}",
+        "clickToAddColumn": "Click to add column"
       },
       "range": {
-        "from": "Vahemik alates",
-        "to": "kuni"
+        "from": "Range from",
+        "to": "to"
       },
       "number": {
         "min": "Min",
-        "max": "Maks"
+        "max": "Max"
       },
-      "orLabel": "või ",
-      "otherLabel": "Muu: ",
-      "userAnswer": "Kasutaja vastus",
+      "orLabel": "or ",
+      "otherLabel": "Other: ",
+      "userAnswer": "User answer",
       "buttons": {
-        "addOption": "Kliki valiku lisamiseks",
-        "addOther": "Lisa 'Muu'"
+        "addOption": "Click to add option",
+        "addOther": "Add 'Other'"
       }
     },
     "image": {
-      "selectImageButton": "Vali pilt",
-      "caption": "Pildi pealdis"
+      "selectImageButton": "Select image",
+      "caption": "Image caption"
     },
     "paragraph": {
-      "placeholder": "Sisesta lõigu tekst"
+      "placeholder": "Enter paragraph text"
     },
     "confirmationPage": {
-      "title": "Kinnituse lehekülg",
-      "customMessage": "Kohandatud kinnitussõnum",
-      "defaultMessage": "Sinu vastus on salvestatud",
-      "errorMessage": "Viga! Sinu vastust ei salvestatud",
-      "pendingMessage": "Sinu vastust salvestatakse"
+      "title": "Confirmation page",
+      "customMessage": "Custom confirmation message",
+      "defaultMessage": "Your response has been saved",
+      "errorMessage": "Error! Your response has not been saved",
+      "pendingMessage": "Your response is being saved"
     }
   }
 }
index 9c16790..6a860d9 100644 (file)
 {
   "MAIL": {
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
-    "DOWNLOAD": "Laadi alla",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "SEND_AS": "Saada kui",
-    "NEW_MAILSUBSTATUS": "Uus Alamolek",
-    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
-    "MAILSUBSTATUSES": "E-posti Alamolekud",
-    "EDIT_MAILSUBSTATUS": "Redigeeri",
-    "DELETE_MAILSUBSTATUS": "Kustuta",
-    "FONT_FAMILY": "Fondipere",
-    "FONT_SIZE": "Fondi Suurus",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "ACCEPTED": "Aktsepteeritud",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "MAILCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
-    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
-    "PENDING": "Ootel",
-    "SEND_AS_PENDING": "Saada Ootel olekus",
-    "SEND_AND_CLOSE": "Saada ja Sule",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
-    "SPYINTERACTION": "Spioon",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
-    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "ACCOUNTS": "Kontod",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGGED_IN": "Sisse Logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "IMAP_STATUS": "IMAP Staatus",
-    "SMTP_STATUS": "SMTP Staatus",
-    "DISABLED": "Mitteaktiivne",
-    "CONNECTED": "Ühendatud",
-    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
-    "ERROR": "Viga",
-    "EDIT_ACCOUNT": "Redigeeri Kontot",
-    "VERIFY_SMTP": "Kinnita SMTP",
-    "VERIFIED": "Kinnitatud",
-    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "AUTOREPLY": "Automaatvastus",
-    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
-    "SHOW_DETAILS": "Kuva üksikasjad",
-    "HIDE_DETAILS": "Varja üksikasjad",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "DATE": "Kuupäev",
-    "CC": "Koopia",
-    "REPLY": "Vasta",
-    "REPLY_ALL": "Vasta Kõigile",
-    "FORWARD": "Saada edasi",
-    "SUBJECT": "Teema",
-    "BCC": "Salakoopia",
-    "SEND": "Saada",
-    "ATTACHMENT": "Manus",
-    "ATTACHMENTS": "Manused",
-    "NAME": "Nimi",
-    "MAILQUEUES": "E-maili Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
+    "DOWNLOAD": "Download",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "SEND_AS": "Send as",
+    "NEW_MAILSUBSTATUS": "New Sub Status",
+    "ADD_MAILSUBSTATUS": "Add Sub Status",
+    "MAILSUBSTATUSES": "Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Edit",
+    "DELETE_MAILSUBSTATUS": "Delete",
+    "FONT_FAMILY": "Font Family",
+    "FONT_SIZE": "Font Size",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "ACCEPTED": "Accepted",
+    "CANNEDANSWERS": "Canned Answers",
+    "MAILCANNEDANSWERS": "Canned Answers",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_MAILCANNEDANSWER": "New Canned Answer",
+    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
+    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Show original message",
+    "PENDING": "Pending",
+    "SEND_AS_PENDING": "Send as Pending",
+    "SEND_AND_CLOSE": "Send and Close",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to Email queue",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "ACCOUNTS": "Accounts",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGGED_IN": "Logged In",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "IMAP_STATUS": "IMAP Status",
+    "SMTP_STATUS": "SMTP Status",
+    "DISABLED": "Disabled",
+    "CONNECTED": "Connected",
+    "NEVER_VERIFIED": "Never Verified",
+    "ERROR": "Error",
+    "EDIT_ACCOUNT": "Edit Account",
+    "VERIFY_SMTP": "Verify SMTP",
+    "VERIFIED": "Verified",
+    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
+    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "SHOW_AUTOREPLY": "Show Auto Reply",
+    "SHOW_DETAILS": "Show details",
+    "HIDE_DETAILS": "Hide details",
+    "TO": "To",
+    "FROM": "From",
+    "DATE": "Date",
+    "CC": "Cc",
+    "REPLY": "Reply",
+    "REPLY_ALL": "Reply All",
+    "FORWARD": "Forward",
+    "SUBJECT": "Subject",
+    "BCC": "Bcc",
+    "SEND": "Send",
+    "ATTACHMENT": "Attachment",
+    "ATTACHMENTS": "Attachments",
+    "NAME": "Name",
+    "MAILQUEUES": "Email Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
-      "HOST_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PORT_REQUIRED": "Kohustuslik Väli",
-      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "SERVICE_REQUIRED": "Kohustuslik Väli",
-      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
-      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
-      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
-      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
+      "HOST_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PORT_REQUIRED": "Mandatory Field",
+      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
+      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "SERVICE_REQUIRED": "Mandatory Field",
+      "IMAP_HOST_REQUIRED": "Mandatory Field",
+      "IMAP_PORT_REQUIRED": "Mandatory Field",
+      "SMTP_HOST_REQUIRED": "Mandatory Field",
+      "SMTP_PORT_REQUIRED": "Mandatory Field",
+      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
-    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
-    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "SAVE": "Salvesta",
-    "MAILACCOUNTS": "E-maili Kontod",
-    "EMAIL_ADDRESS": "E-maili Aadress",
-    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
-    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
-    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaak",
-    "ACTIONS": "Tegevused",
-    "OTHERS": "Teised",
-    "LIST": "Loend",
-    "TEMPLATE": "Mall",
-    "FIDELITY": "Kvaliteet",
-    "SERVICE": "Teenus",
-    "CREATED_AT": "Loomisaeg",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetud",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "WHITELABEL": "Valge Sedel",
-    "SIGNATURE": "Allkiri",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_MAILQUEUE": "Add Email Queue",
+    "EDIT_MAILQUEUE": "Edit Email Queue",
+    "DELETE_MAILQUEUE": "Delete Email Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "SAVE": "Save",
+    "MAILACCOUNTS": "Email Accounts",
+    "EMAIL_ADDRESS": "Email Address",
+    "ADD_MAILACCOUNT": "Add Email Account",
+    "EDIT_MAILACCOUNT": "Edit Email Account",
+    "DELETE_MAILACCOUNT": "Delete Email Accounts",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "OTHERS": "Others",
+    "LIST": "List",
+    "TEMPLATE": "Template",
+    "FIDELITY": "Fidelity",
+    "SERVICE": "Service",
+    "CREATED_AT": "Created At",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "WHITELABEL": "White Label",
+    "SIGNATURE": "Signature",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Kasutajanimi",
+    "USERNAME": "Username",
     "PORT": "Port",
-    "MAILBOX": "Postkast",
-    "FILTER": "Filtreerimine",
-    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
-    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
-    "DELETE": "Kustuta E-mail Serverist",
+    "MAILBOX": "Mailbox",
+    "FILTER": "Filter",
+    "CONNTIMEOUT": "Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Authentication Timeout [sec]",
+    "DELETE": "Delete Email From Server",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Küsitlemine",
+    "POLLING": "Polling",
     "SMTP": "SMTP",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "BACK": "Tagasi",
-    "MAIL": "E-mail",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "PASSWORD": "Parool",
-    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
-    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
-    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
-    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
-    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
-    "MAILDISPOSITIONS": "E-maili Kasutused",
-    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
-    "NEW_MAILACCOUNT": "Uus E-maili Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "MAIL": "Email",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "PASSWORD": "Password",
+    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
+    "ADD_MAILDISPOSITION": "Add Email Disposition",
+    "NEW_MAILDISPOSITION": "New Email Disposition",
+    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
+    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
+    "MAILDISPOSITIONS": "Email Dispositions",
+    "NEW_MAILQUEUE": "New Email Queue",
+    "NEW_MAILACCOUNT": "New Email Account",
+    "NO_AVAILABLE_INFO": "No availables info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
     "HELP": {
-      "FONT_FAMILY": "Vaikimisi Fondipere",
-      "FONT_SIZE": "Vaikimisi Fondi Suurus",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "USERNAME": "Kasutajanimi autentimise jaoks",
-      "PASSWORD": "Parool autentimise jaoks",
-      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
-      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "FONT_FAMILY": "Default Font Family",
+      "FONT_SIZE": "Default Font Size",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Username used for authentication",
+      "PASSWORD": "Password used for authentication",
+      "SECURE": "If true, the connection will use TLS when connecting to server",
+      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
+    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
+    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "DISPOSITION": "Kasutamine",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_CLOSE": "Edit Close",
+    "DISPOSITION": "Disposition",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Tõene Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "PRIORITY": "Prioriteet",
+    "EDIT_GOTOP": "Edit GotoP",
+    "PRIORITY": "Priority",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "VALUE": "Väärtus",
-    "QUEUE": "Järjekord",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "CONTACT": "Kontakt",
-    "CLOSEDAT": "Sulgemisaeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "ACTIVE": "Aktiivne",
-    "SECURE": "Turvaline",
-    "AUTHENTICATION": "Autentimine",
+    "EDIT_NOOP": "Edit Noop",
+    "VALUE": "Value",
+    "QUEUE": "Queue",
+    "EDIT_QUEUE": "Edit Queue",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "CONTACT": "Contact",
+    "CLOSEDAT": "Closed At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "ACTIVE": "Active",
+    "SECURE": "Secure",
+    "AUTHENTICATION": "Authentication",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SELECT_STATUS": "Vali Staatus",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "KEY": "Võti",
-    "SMTPSERVICE": "SMTP Teenus",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
-    "INFO": "Teave",
-    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
-    "ADVANCED": "Täpsem",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SELECT_STATUS": "Select Status",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select Account",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "KEY": "Key",
+    "SMTPSERVICE": "SMTP Service",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTSADD_QUEUE": "Add agents to Email Queue",
+    "INFO": "Info",
+    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
+    "ADVANCED": "Täpsemad",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vastamise tüüp",
+    "REPLY_TYPE": "Vasta tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud"
+    "CUSTOM": "Kohandatud",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
   }
 }
index 779913f..e80fbe2 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "Rakenduse Tsoon",
-    "PLUGINS": "Lisandmoodulid",
-    "BACK": "Tagasi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ära vali midagi",
-    "NAME": "Nimi",
-    "DESCRIPTION": "Kirjeldus",
-    "ACTIVE": "Aktiivne",
-    "TYPE": "Tüüp",
-    "ICON": "Ikoon",
-    "ADMINURL": "Admini url",
-    "AGENTURL": "Agendi url",
-    "SCRIPTNAME": "Skripti nimi",
-    "SCRIPTPATH": "Skripti tee",
-    "SIDEBAR": "Küljeriba",
-    "VERSION": "Versioon",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "MORE": "Rohkem",
-    "INSTALL_PLUGIN": "Installi lisandmoodul",
-    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
-    "STOP_PLUGIN": "Peata lisandmoodul",
-    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
-    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
-    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
-    "DELETE_PLUGIN": "Eemalda lisandmoodul",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DELETE": "Kustuta",
-    "SAVE": "Salvesta",
-    "INSTALLING": "Installimine",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
-    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
-    "UPLOADING": "Üleslaadimine",
-    "CREATED_AT": "Loomisaeg",
-    "GENERAL": "Üldine",
-    "SETTINGS": "Sätted",
-    "EDITOR": "Redaktor",
+    "MARKETPLACE": "App Zone",
+    "PLUGINS": "Plugins",
+    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select none",
+    "NAME": "Name",
+    "DESCRIPTION": "Description",
+    "ACTIVE": "Active",
+    "TYPE": "Type",
+    "ICON": "Icon",
+    "ADMINURL": "Admin url",
+    "AGENTURL": "Agent url",
+    "SCRIPTNAME": "Script name",
+    "SCRIPTPATH": "Script path",
+    "SIDEBAR": "Sidebar",
+    "VERSION": "Version",
+    "NO_AVAILABLE_INFO": "No available info",
+    "MORE": "More",
+    "INSTALL_PLUGIN": "Install plugin",
+    "EDIT_PLUGIN": "Edit plugin",
+    "STOP_PLUGIN": "Stop plugin",
+    "RESTART_PLUGIN": "Restart plugin",
+    "DOWNLOAD_PLUGIN": "Download plugin",
+    "UNINSTALL_PLUGIN": "Uninstall plugin",
+    "DELETE_PLUGIN": "Remove plugin",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DELETE": "Delete",
+    "SAVE": "Save",
+    "INSTALLING": "Installing",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "UPLOAD_PLUGIN": "Upload plugin",
+    "UPLOADING": "Uploading",
+    "CREATED_AT": "Created at",
+    "GENERAL": "General",
+    "SETTINGS": "Settings",
+    "EDITOR": "Editor",
     "ERRORS": {
-      "URL_REQUIRED": "Kohustuslik väli"
+      "URL_REQUIRED": "Mandatory field"
     },
     "HELP": {},
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of"
   }
 }
index db6abd5..96861de 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "CUTDIGIT": "Lõika Numbrid",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
-    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
-    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
-    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
-    "HOPPERWIDGET": "Kokkuvõte",
-    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
-    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
-    "RESET": "Lähtesta",
-    "RESETLIST": "Lähtesta Loendid",
-    "SELECTALL": "Vali Kõik",
-    "UNSELECTALL": "Ära Vali Kõiki",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TIMEOUT": "Aegumine",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
-    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
-    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "TIMER": "Taimer",
-    "MOVE_HOPPERFINAL": "Taasta kontakt",
-    "RESTORECONTACTS": "Taasta Kontaktid",
-    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
-    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "CUTDIGIT": "Cut Digits",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
+    "CLONE_IVRCAMPAIGN": "Clone Campaign",
+    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "HOPPERWIDGET": "Summary",
+    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
+    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
+    "RESET": "Reset",
+    "RESETLIST": "Reset Lists",
+    "SELECTALL": "Select All",
+    "UNSELECTALL": "Un-Select All",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
+    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Parital Pause",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "TIMER": "Timer",
+    "MOVE_HOPPERFINAL": "Restore contact",
+    "RESTORECONTACTS": "Restore Contacts",
+    "NO_SUCH_NUMBER": "No Such Number",
+    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Kutsu tagasi Agent",
-    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
-    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
-    "RECALLME": "Kutsu tagasi Mind",
-    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
-    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
-    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
-    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
-    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
+    "RECALLAGENT": "Recall Agent",
+    "DIALRECALLINQUEUE": "Recall In Queue",
+    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
+    "RECALLME": "Recall Me",
+    "RECALLFAILEDTIMEOUT": "Recall Failed",
+    "PREVIEW_CAMPAIGN": "Preview Campaigns",
+    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
+    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "AMDTOTALANALYSISTIME": "Total Analysis Time",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Esialgne Vaikus",
-    "AMDGREETING": "Tervitus",
-    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
-    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
-    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
-    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
-    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
-    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "LOGOUT": "Logi välja",
-    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
-    "LIMITED": "Piiratud",
-    "IVR_CAMPAIGNS": "IVR Kampaaniad",
+    "AMDINITIALSILENCE": "Initial Silence",
+    "AMDGREETING": "Greeting",
+    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
+    "AMDSILENCETHRESHOLD": "Silence Threshold",
+    "AMDMINWORDLENGTH": "Min Word Length",
+    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
+    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
+    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "LOGOUT": "Logout",
+    "EDIT_CAMPAIGN": "Edit Campaign",
+    "LIMITED": "Limited",
+    "IVR_CAMPAIGNS": "IVR Campaigns",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
-    "IVRCAMPAIGNS": "IVR Kampaaniad",
-    "MANAGED": "Hallatud",
-    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
-    "HISTORY": "Ajalugu",
-    "SCHEDULEDAT": "Planeeritud ajaks",
-    "HOPPERBLACKS": "Hopperi Must nimekiri",
-    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERFINALS": "Hopperi Finaal",
-    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERHISTORIES": "Kõneajalugu",
-    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
-    "DELETE_HOPPERHISTORY": "Kustuta",
-    "DELETE_HOPPERFINAL": "Kustuta",
-    "CONTACTID": "Kontakti ID",
-    "STARTTIME": "Algusaeg",
-    "RESPONSETIME": "Vastamise Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "STATUS": "Staatus",
+    "QUEUECAMPAIGNS": "Queue Campaigns",
+    "IVRCAMPAIGNS": "IVR Campaigns",
+    "MANAGED": "Managed",
+    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
+    "HISTORY": "History",
+    "SCHEDULEDAT": "Scheduled At",
+    "HOPPERBLACKS": "Hopper Blacklist",
+    "NO_HOPPERBLACK_AVAILABLE": "No items available",
+    "HOPPERFINALS": "Hopper Final",
+    "NO_HOPPERFINAL_AVAILABLE": "No items available",
+    "HOPPERHISTORIES": "Call history",
+    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
+    "DELETE_HOPPERHISTORY": "Delete",
+    "DELETE_HOPPERFINAL": "Delete",
+    "CONTACTID": "Contact ID",
+    "STARTTIME": "Start Time",
+    "RESPONSETIME": "Response Time",
+    "ENDTIME": "End Time",
+    "STATUS": "Status",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
-    "EDIT_HOPPER": "Redigeeri Hopper",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "FINAL": "Finaal",
-    "BLACKLIST": "Must nimekiri",
-    "NAME": "Nimi",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "NO_HOPPER_AVAILABLE": "No items available",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_HOPPER": "Delete Hopper",
+    "FINAL": "Final",
+    "BLACKLIST": "Blacklist",
+    "NAME": "Name",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
     "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "INTERVAL": "Aja Intervall",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
-    "ACTIVE": "Aktiivne",
-    "METHOD": "Meetod",
-    "POWERLEVEL": "Võimsuse Tase",
-    "DROPRATE": "Kukuta Määr",
-    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
-    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
-    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
-    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
-    "CAMPAIGN": "Kampaania",
-    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "ORIGINATE": "Päritolu",
-    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
-    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
-    "ORIGINATETIMEOUT": "Päritolu Aegumine",
-    "QUEUEOPTIONS": "Järjekorra Valikud",
-    "QUEUETIMEOUT": "Järjekorra Aegumine",
-    "CALLYSQUAREPROJECT": "Cally Square Projekt",
-    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
-    "GLOBAL": "Üldine",
-    "GLOBALMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTION": "Ummik",
-    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
-    "BUSYMAXRETRY": "Maks Uusi Katseid",
-    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
-    "NOANSWER": "Vastus puudub",
-    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
-    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "ORIGINATED": "Päritolu",
-    "MESSAGE": "Sõnum",
-    "DROPPED": "Kukutatud",
-    "CREATED_AT": "Loomisaeg",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "INTERVAL": "Time Interval",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
+    "ACTIVE": "Active",
+    "METHOD": "Method",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Drop Rate",
+    "AGENTBUSYFACTOR": "Agent Busy Factor",
+    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
+    "PREDICTIVEINTERVAL": "Predictive Interval",
+    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
+    "CAMPAIGN": "Campaign",
+    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
+    "CONCURRENTCALLS": "Max Concurrent Calls",
+    "ORIGINATE": "Originate",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Originate Timeout",
+    "QUEUEOPTIONS": "Queue Options",
+    "QUEUETIMEOUT": "Queue Timeout",
+    "CALLYSQUAREPROJECT": "Cally Square Project",
+    "RETRYANDFREQUENCY": "Retry Settings",
+    "GLOBAL": "Global",
+    "GLOBALMAXRETRY": "Max Retries",
+    "CONGESTION": "Congestion",
+    "CONGESTIONMAXRETRY": "Max Retries",
+    "CONGESTIONRETRYTIME": "Retry Time [min]",
+    "BUSYMAXRETRY": "Max Retries",
+    "BUSYRETRYTIME": "Retry Time [min]",
+    "NOANSWER": "No Answer",
+    "NOANSWERMAXRETRY": "Max Retries",
+    "NOANSWERRETRYTIME": "Retry Time [min]",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "ORIGINATED": "Originated",
+    "MESSAGE": "Message",
+    "DROPPED": "Dropped",
+    "CREATED_AT": "Created At",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
-      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "INTERVAL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Parool ei ühti",
-      "TIMEZONE_REQUIRED": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
-      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CUTDIGIT_REQUIRED": "Mandatory field",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
+      "INTERVAL_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
+      "NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
+      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
+      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
+      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
+      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
+      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
+      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
+      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
+      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "Üldine",
-    "AGENTTIMEOUT": "Agendi Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Uus Katse",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "AGENTTIMEOUT": "Agent Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
-      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
-      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
-      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
-      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
-      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
-      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
-      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
-      "PRIORITY": "Prioriteet loendis",
-      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
-      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
-      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
-      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
-      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
-      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
-      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
-      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
-      "PREFIX": "Telefoni eesliide",
-      "ACTIVE": "Aktiivne",
-      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
-      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
-      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
-      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
-      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
-      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
-      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
-      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
-      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
-      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
-      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
-      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=are”. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
-      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
-      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
-      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
-      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
-      "METHOD": "Väljuva valija meetod",
-      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
-      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
-      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
-      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
-      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
-      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
-      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
-      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
-      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
-      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
-      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
-      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
-      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
-      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
-      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
-      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
-      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
+      "TIMEOUT": "Number of seconds to ring agent in queue",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
+      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
+      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
+      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
+      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
+      "PRIORITY": "Priority in the list",
+      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
+      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
+      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
+      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
+      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
+      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
+      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
+      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
+      "PREFIX": "Telephone prefix",
+      "ACTIVE": "Active",
+      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
+      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
+      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
+      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
+      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
+      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
+      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "METHOD": "Outbound dialer method",
+      "POWERLEVEL": "Number of contacts to call for any available agent",
+      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
+      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
+      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
+      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
+      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
+      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
+      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
+      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
+      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
+      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
+      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
+      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
+      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
+      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
+      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
+      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "MUSICONHOLD": "Muusika Ootel",
-    "ANNOUNCETOAGENT": "Teavitus Agendile",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCEDPREVIEW": "Täpsem",
-    "ADVANCED": "Täpsem",
-    "ADVANCE": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
-    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'There are' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minutite Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Kõnejärgne Töö",
-    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
-    "RINGINUSE": "Kasutusel Helin",
-    "MEMBERDELAY": "Liikme Viivitus",
-    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
-    "MONITORFORMAT": "Salvestuse Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sisenevad Protsessid",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
-    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljuvad Protsessid",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
-    "CUTDIGITS": "Lõika Numbrimärke",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Protsessid",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepost",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-post",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Manusta",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-kirja Sisu",
-    "EMAILSUBJECT": "E-kirja Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kaust",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCEDPREVIEW": "Advanced",
+    "ADVANCED": "Advanced",
+    "ADVANCE": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Suvandid",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonis",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
     "AGI": "AGI",
-    "DIAL": "Valimine",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Väline Valimine",
-    "RINGGROUP": "Helista Grupile",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Kõnepost",
+    "DIAL": "Dial",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Lõpeta kõne",
-    "CUSTOM": "Kohandatus",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast@Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljuv Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
     "AGENT": "Agent",
-    "TYPE": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
-    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
-    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Häälestamist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Hangup",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise Aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muutunud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
-    "HANGUPCAUSE_38": "38 = Võrk vale",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Kättesaamatu",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Kättesaamatu",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Heliseb",
-    "UP": "Üles",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not in use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
     "INFO": "Info",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
-    "PAUSED": "Pausil",
-    "DISPOSITION": "Kasutamine",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No registry",
+    "LOGGED_IN": "Logged in (SIP connected)",
+    "PAUSED": "Paused",
+    "DISPOSITION": "Disposition",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Katkestatud",
-    "UNMANAGED": "Haldamata",
-    "REDIRECT_TO_NUMBER": "Suuna numbrile",
-    "REDIRECT_TO_AGENT": "Suuna agendile",
-    "CLOSING": "Sulgemine",
-    "AVG_HOLD_TIME": "Avg Ooteage",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Tagasi lükatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse Nimi",
-    "ARGUMENTS": "Argumendid",
-    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
-    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
-    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
-    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
-    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
-    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
-    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
-    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
-    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
-    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
-    "ENABLED": "Lubatud",
-    "READY": "Valmis",
-    "PAUSE": "Paus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
-    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_LISTS": "Kõik Nimekirjad",
-    "SELECTED_LISTS": "Valitud Nimekirjad",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "WAITING_FOR_AGENT": "Agendi Ootamine",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "RUNNING": "Jookseb",
-    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
-    "AGENTS_NOT_LOGGED": "Agent pole logitud",
-    "NOT_ACTIVE": "Pole Aktiivne",
-    "IS_DISACTIVED": "Deaktiveeritud",
-    "BACKUPTRUNK": "Varumagistraal",
-    "GLOBALINTERVAL": "Üldine Intervall",
-    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
-    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
-    "INTERVAL_IS_NULL": "Intervall on Null",
-    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
-    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
-    "TOTAL_MANAGED": "Kokku Hallatud",
-    "OPEN": "Avatud",
-    "FRESH": "Värske",
-    "CLOSED": "Suletud",
-    "ALWAYS": "Alati",
-    "NEVER": "Mitte kunagi",
-    "ONLY_IF_OPEN": "Ainult kui Avatud",
-    "CHECKDUPLICATE": "Kontrolli Duplikaati",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "REDIRECT_TO_NUMBER": "Redirect to a number",
+    "REDIRECT_TO_AGENT": "Redirect to an agent",
+    "CLOSING": "Closing",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Avg Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
+    "LISTADD_QUEUECAMPAIGN": "Add List",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Add Team",
+    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
+    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
+    "DELETE_IVRCAMPAIGN": "Delete Campaign",
+    "EDIT_IVRCAMPAIGN": "Edit Campaign",
+    "NEW_IVRCAMPAIGN": "New IVR Campaign",
+    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
+    "LISTADD_IVRCAMPAIGN": "Add List",
+    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
+    "ENABLED": "Enabled",
+    "READY": "Ready",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default Pause",
+    "AGENTADD_QUEUE": "Add Agent to queue campaign",
+    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_LISTS": "All Lists",
+    "SELECTED_LISTS": "Selected Lists",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "WAITING_FOR_AGENT": "Waiting for Agent",
+    "TOTAL_OFFERED": "Total Offered",
+    "RUNNING": "Running",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
+    "AGENTS_NOT_LOGGED": "Agent not logged",
+    "NOT_ACTIVE": "Not Active",
+    "IS_DISACTIVED": "Deactivated",
+    "BACKUPTRUNK": "Backup Trunk",
+    "GLOBALINTERVAL": "Global Interval",
+    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
+    "INTERVAL_IS_OVERTIME": "Out of Interval",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Interval is Null",
+    "TIMEZONE_UNKNOW": "Timezone Unknow",
+    "INTERVAL_IS_EMPTY": "Interval is Empty",
+    "TOTAL_MANAGED": "Total Managed",
+    "OPEN": "Open",
+    "FRESH": "Fresh",
+    "CLOSED": "Closed",
+    "ALWAYS": "Always",
+    "NEVER": "Never",
+    "ONLY_IF_OPEN": "Only If Open",
+    "CHECKDUPLICATE": "Check Duplicate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "SÕnum",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Vali kampaania",
-    "SELECT_DATE": "Vali kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
+    "SELECT_CAMPAIGN": "Valige kampaania",
+    "SELECT_DATE": "Valige kuupäev",
+    "SELECT_TYPE": "Valige Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Maks uued katsed",
+    "ABANDONEDMAXRETRY": "Max proovib uuesti",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agendi Keeldumine",
-    "AGENTREJECTMAXRETRY": "Maks uued katsed",
+    "AGENTREJECT": "Agent Keeldu",
+    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Katkestamine",
-    "DROPMAXRETRY": "Maks uued katsed",
+    "DROP": "Tilk",
+    "DROPMAXRETRY": "Max proovib uuesti",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Seade",
-    "MACHINEMAXRETRY": "Maks uued katsed",
+    "MACHINE": "Masin",
+    "MACHINEMAXRETRY": "Max proovib uuesti",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
+    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "ADDITIONALPHONES": "Täiendavad telefonid",
+    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index c07979f..23ab65b 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "ADVANCED": "Täpsem",
-    "PROXY": "Puhver",
-    "TOKEN": "Luba",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "DELETE": "Kustuta",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
-    "TAGS": "Sildid",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "REALTIME": "Reaalaeg",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NAME": "Nimi",
-    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsing",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "ADVANCED": "Advanced",
+    "PROXY": "Proxy",
+    "TOKEN": "Token",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "DELETE": "Delete",
+    "CANNEDANSWERS": "Canned Answers",
+    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
+    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "TAGS": "Tags",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "REALTIME": "Realtime",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NAME": "Name",
+    "OPENCHANNELQUEUES": "Open Channel Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "REPLYURI_REQUIRED": "Kohustuslik Väli",
-      "REPLYURI_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "KEY_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "The field text is required",
+      "NAME_REQUIRED": "Mandatory field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "REPLYURI_REQUIRED": "Mandatory field",
+      "REPLYURI_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "CONDITION_REQUIRED": "Mandatory field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strateegia",
+    "STRATEGY": "Strategy",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "PRIORITY": "Prioriteet",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
-    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
-    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
-    "PENALTY": "Trahv",
-    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
-    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "lvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
-    "MOTIONADDRESS": "Liikuv Aadress",
-    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
-    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
-    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
+    "QUEUE": "Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "PRIORITY": "Priority",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
+    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
+    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
+    "PENALTY": "Penalty",
+    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
+    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
+    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
+    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka tagasi",
-    "REJECTMETHOD": "Lükka tagasi Meetod",
-    "REJECTURL": "Lükka tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "OPENCHANNEL": "Ava Kanal",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
-    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
-    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
-    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
-    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
-    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
-    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "REPLYURI": "Vastuse URL",
-    "RECEIVEURI": "Vastuvõtu URL",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "OPENCHANNEL": "Open Channel",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
+    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
+    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
+    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
+    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
+    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
+    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "REPLYURI": "Reply URL",
+    "RECEIVEURI": "Receive URL",
     "HELP": {
-      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
-      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
+      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Ava",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "SELECT_ACCOUNT": "Vali konto",
+    "FILTERS": "Filters",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECT_ACCOUNT": "Select an account",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sule",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
     "INFO": "Info",
-    "KEY": "Võti",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Pausile",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "Sõnum",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MAPKEY": "Kaardi Võti",
+    "KEY": "Key",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
+    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
+    "SEND": "Send",
+    "TO": "To",
+    "MAPKEY": "Map Key",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index 90c89fb..be8be0f 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Lisandmoodul",
+    "PLUGINS": "Plugins",
     "ERRORS": {},
     "HELP": {}
   }
index 3fc4dff..054b0d7 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Pea mind meeles",
-    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
-    "VIRTUAL": "Vestlus",
-    "VOICE": "Hääl",
-    "SESSIONS": "Sessioonid",
-    "ADDONS": "Lisandmoodul",
-    "REPORT": "Raport",
-    "SPLIT": "Poolita raportit",
-    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
-    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
-    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
-    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
+    "MOTIONBARREMEMBERME": "Remember Me",
+    "CHATTIMEOUT": "Chat closing interaction timeout",
+    "VIRTUAL": "Chat",
+    "VOICE": "Voice",
+    "SESSIONS": "Sessions",
+    "ADDONS": "Add-ons",
+    "REPORT": "Report",
+    "SPLIT": "Split report",
+    "SPLITSIZECSV": "Split report size [CSV records]",
+    "SPLITSIZEPDF": "Split report size [PDF records]",
+    "SPLITSIZEXLSX": "Split report size [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Enable Email Preview",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Liikumisriba",
-    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
-    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
+    "MOTIONBAR": "Motionbar",
+    "MOTIONBARAUTOUPDATER": "Auto Updater",
+    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
-    "TURNADDR": "TURN Aadress",
-    "TURN_USERNAME": "TURN Kasutajanimi",
-    "TURN_PASSWORD": "TURN Parool",
+    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
+    "TURNADDR": "TURN Address",
+    "TURN_USERNAME": "TURN Username",
+    "TURN_PASSWORD": "TURN Password",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Lubatud",
-    "DISABLED": "Keelatud",
-    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
-    "RELOAD": "Laadi uuesti",
-    "VERIFY": "Kinnita",
-    "INTERFACE": "Liides",
-    "UPDATING": "Värskendamine",
-    "REMOTE_VERSION": "Kaugversioon",
-    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
-    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
-    "SYSTEM": "Süsteem",
-    "FILE_SYSTEM": "Faili Süsteem",
-    "PROCESSES": "Protsess",
-    "MOUNT_POINT": "Ühenda",
+    "ENABLED": "Enabled",
+    "DISABLED": "Disabled",
+    "UNLIMITED_CHANNELS": "Unlimited Channels",
+    "RELOAD": "Reload",
+    "VERIFY": "Verify",
+    "INTERFACE": "Interface",
+    "UPDATING": "Updating",
+    "REMOTE_VERSION": "Remote Version",
+    "NO_NEW_VERSION_AVAILABLE": "No new version available",
+    "TOP_N_PROCESSES": "Top {{value}} processes",
+    "SYSTEM": "System",
+    "FILE_SYSTEM": "File System",
+    "PROCESSES": "Processes",
+    "MOUNT_POINT": "Mount",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Totaalne",
-    "USED": "Kasutatud",
-    "FREE": "Vaba",
-    "NAME": "Nimi",
-    "STATE": "Olek",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "MESSAGING": "Sõnum",
-    "FAX": "Faks",
-    "OPENCHANNEL": "Avatud Kanal",
-    "AGENTS": "Agendid",
-    "USERS": "Kasutajad",
-    "TELEPHONES": "Telefonid",
-    "STAFF": "Personal",
-    "CHANNELS": "Kanalis",
-    "MODULES": "Moodulid",
-    "CM": "Kontaktide Haldur",
-    "DIALER": "Valija",
+    "TOTAL": "Total",
+    "USED": "Used",
+    "FREE": "Free",
+    "NAME": "Name",
+    "STATE": "State",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "MESSAGING": "Sms",
+    "FAX": "Fax",
+    "OPENCHANNEL": "Open Channel",
+    "AGENTS": "Agents",
+    "USERS": "Users",
+    "TELEPHONES": "Telephones",
+    "STAFF": "Staff",
+    "CHANNELS": "Channels",
+    "MODULES": "Modules",
+    "CM": "Contacts Manager",
+    "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Kohandamine",
-    "UPDATE": "Värskenda",
-    "OTHERS": "Teised",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
+    "CUSTOM": "Customization",
+    "UPDATE": "Update",
+    "OTHERS": "Others",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
     "SMTP": "SMTP",
-    "NETWORKS": "Võrgud",
-    "UPDATES": "Värskendused",
-    "LICENSE": "Litsents",
-    "ID": "ID",
-    "MIN_INTERNAL": "Minm Sisemine",
-    "MIN_MAILBOX": "Min Postkast",
-    "INSTALLED_AT": "Installimise aeg",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_GENERAL": "Redigeeri Üldine",
-    "SECURE_PASSWORD": "Kindlusta Parool",
+    "NETWORKS": "Networks",
+    "UPDATES": "Updates",
+    "LICENSE": "License",
+    "ID": "Id",
+    "MIN_INTERNAL": "Min Internal",
+    "MIN_MAILBOX": "Min Mailbox",
+    "INSTALLED_AT": "Installed At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_GENERAL": "Edit General",
+    "SECURE_PASSWORD": "Secure Password",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Vaikimisi Logo",
-    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
-    "WHITELABEL": "Valge Sedel",
-    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
-    "HEADER_WHITELABEL": "Päis Valge Silt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMTP_SERVICE": "Teenus",
+    "DEFAULT_LOGO": "Default Logo",
+    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "WHITELABEL": "White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
+    "HEADER_WHITELABEL": "Header White Label",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMTP_SERVICE": "Service",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Kasutajanimi",
-    "DESCRIPTION": "Kirjeldus",
-    "SMTP_PASSWORD": "Parool",
+    "SMTP_USERNAME": "Username",
+    "DESCRIPTION": "Description",
+    "SMTP_PASSWORD": "Password",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Turvaline",
-    "TYPE": "Tüüp",
-    "ADDRESS": "Aadress",
-    "NEW_NETWORK": "Uus Võrk",
-    "ADD_NETWORK": "Lisa Võrk",
+    "SMTP_SECURE": "Secure",
+    "TYPE": "Type",
+    "ADDRESS": "Address",
+    "NEW_NETWORK": "New Network",
+    "ADD_NETWORK": "Add Network",
     "HELP": {
-      "ADDRESS": "Väline (avalik) IP-aadress",
-      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
-      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
-      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
-      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
-      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
-      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
-      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
-      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "ADDRESS": "External (public) ip address",
+      "LOCALNETADDRESS": "Local ip address/subnet",
+      "SMTP_SECURE": "If true, the connection to the server will use TLS",
+      "SMTP_USERNAME": "Username used for authentication",
+      "SMTP_PASSWORD": "Password used for authentication",
+      "EMAILADDRESS": "The message origin Email address (from)",
+      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
+      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
+      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
-      "ADDRESS_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
-      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PLAN_REQUIRED": "Kohustuslik väli",
-      "LICENSE_REQUIRED": "Kohustuslik väli",
+      "CHATTIMEOUT_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
+      "ADDRESS_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_REQUIRED": "Mandatory field",
+      "MIN_MAILBOX_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "SMTP_USERNAME_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "SMTP_HOST_REQUIRED": "Mandatory field",
+      "SMTP_PORT_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PAGE_TITLE_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PLAN_REQUIRED": "Mandatory field",
+      "LICENSE_REQUIRED": "Mandatory field",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat"
+      "WRONG_FORMAT": "Vale formaat",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
     },
-    "EDIT_NETWORK": "Redigeeri Võrku",
-    "DELETE_NETWORK": "Kustuta Võrk",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Ühtegi",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "REQUEST_LICENSE": "Päri Litsentsi",
-    "EMAIL": "E-mail",
-    "SEND": "Saada",
-    "PLAN": "Plaan",
-    "MONTH_TO_MONTH": "Kuust kuusse",
-    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
-    "USEFUL_COMMANDS": "Kasulikud Käsud",
-    "COMMAND": "Käsk",
-    "PM2_LIST": "Loenda kõik protsessid",
-    "PM2_START": "Alusta protsessi ID või nime järgi",
-    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
-    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
-    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
-    "PASSWORD": "Parool",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "STUNADDR": "STUN Aadress",
+    "EDIT_NETWORK": "Edit Network",
+    "DELETE_NETWORK": "Delete Network",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EXPIRATION_DATE": "Expiration Date",
+    "REQUEST_LICENSE": "Request License",
+    "EMAIL": "Email",
+    "SEND": "Send",
+    "PLAN": "Plan",
+    "MONTH_TO_MONTH": "Month to month",
+    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
+    "USEFUL_COMMANDS": "Useful Commands",
+    "COMMAND": "Command",
+    "PM2_LIST": "List all processes",
+    "PM2_START": "Start a process by id or name",
+    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
+    "PM2_RESTART": "Restart a process by id or name",
+    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
+    "PASSWORD": "Password",
+    "NO_AVAILABLE_INFO": "No available info",
+    "STUNADDR": "STUN Address",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Jooksev versioon",
-    "CUSTOMIZATIONS": "Kohandamised",
-    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
-    "NEW_VERSION": "Uus Versioon",
-    "TRIAL_VERSION": "Prooviversioon",
-    "TOKEN": "Luba",
-    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NEW_TOKEN": "Uus Luba",
-    "PRICES": "Hinnad",
-    "UPDATE_LICENSE": "Värskenda Litsentsid",
-    "LOGOLOGIN": "Logini Logo",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "GLOBAL": "Üldine",
-    "SMTP_AUTHENTICATION": "Autentimine",
-    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
-    "ACCOUNTNAME": "Konto Nimi",
-    "EMAILADDRESS": "E-posti Aadress",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
-    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-kiri kellele",
-    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CURRENT_VERSION": "Current version",
+    "CUSTOMIZATIONS": "Customizations",
+    "LOCALNETADDRESS": "Localnet Address",
+    "NEW_VERSION": "New Version",
+    "TRIAL_VERSION": "Trial Version",
+    "TOKEN": "Token",
+    "NEW_TOKEN_DETECTED": "New Token Detected",
+    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
+    "NEW_TOKEN": "New Token",
+    "PRICES": "Prices",
+    "UPDATE_LICENSE": "Update License",
+    "LOGOLOGIN": "Login Logo",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "GLOBAL": "Global",
+    "SMTP_AUTHENTICATION": "Authentication",
+    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
+    "ACCOUNTNAME": "Account Name",
+    "EMAILADDRESS": "Email Address",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
+    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email to",
+    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "PAGE_TITLE": "Lehekülje Pealkiri",
-    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
-    "PERPETUAL": "Lõpmatu",
-    "SECURITY_SUITE": "Turvapakett",
-    "ANNUALLY": "Iga-aastaselt",
-    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
-    "MESSAGESALIGNMENT": "Sõnumi Joondus",
-    "ENTER_LICENSE": "Sisesta oma litsents",
-    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
+    "PAGE_TITLE": "Page Title",
+    "DEFAULT_PAGE_TITLE": "Default Page Title",
+    "PERPETUAL": "Perpetual",
+    "SECURITY_SUITE": "Security Suite",
+    "ANNUALLY": "Annually",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ENTER_LICENSE": "Enter your license",
+    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Salv",
+    "BUCKET": "Ämber",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp ühendus",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp-pistik",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 2645fe3..9d0b322 100644 (file)
 {
   "SMS": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "AUTHID": "Autentimise ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "SMSCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_SMSCANNEDANSWER": "Redigeeri",
-    "DELETE_SMSCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
-    "DELETE": "Kustuta",
-    "SENDERSTRING": "Saatja String",
-    "DELIVERYREPORT": "Kohaletoimetamise Raport",
-    "METHOD": "Meetod",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "SPYINTERACTION": "Spioon",
-    "AUTOREPLY": "Automaatvastus",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "TIMES": "Kordade arv suhtluse korda",
-    "TEXT": "Tekst",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MESSAGE": "Sõnum",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "PROXY": "Puhver",
-    "ADVANCED": "Täpsem",
-    "MOTIONPROXY": "Puhver või Liikumise Domeen",
-    "REALTIME": "Reaalaeg",
-    "KEY": "Võti",
-    "NAME": "Nimi",
-    "SMSQUEUES": "SMS Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "AUTHID": "Auth ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
+    "CANNEDANSWERS": "Canned Answers",
+    "SMSCANNEDANSWERS": "Canned Answers",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_SMSCANNEDANSWER": "New Canned Answer",
+    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
+    "EDIT_SMSCANNEDANSWER": "Edit",
+    "DELETE_SMSCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "DELETE": "Delete",
+    "SENDERSTRING": "Sender String",
+    "DELIVERYREPORT": "Delivery Report",
+    "METHOD": "Method",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "SPYINTERACTION": "Spy",
+    "AUTOREPLY": "Auto Reply",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "TIMES": "Number of times per interaction",
+    "TEXT": "Text",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SEND": "Send",
+    "TO": "To",
+    "MESSAGE": "Message",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "PROXY": "Proxy",
+    "ADVANCED": "Advanced",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "REALTIME": "Realtime",
+    "KEY": "Key",
+    "NAME": "Name",
+    "SMSQUEUES": "SMS Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "AUTHID_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
-      "METHOD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "PHONE_REQUIRED": "Kohustuslik Väli",
-      "SID_REQUIRED": "Kohustuslik Väli",
-      "TOKEN_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "TYPE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "AUTHID_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
+      "METHOD_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "PHONE_REQUIRED": "Mandatory Field",
+      "SID_REQUIRED": "Mandatory Field",
+      "TOKEN_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "TYPE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "ACCOUNTSID_REQUIRED": "Mandatory Field",
+      "AUTHTOKEN_REQUIRED": "Mandatory Field",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
-    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
-    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMSACCOUNTS": "SMS Kontod",
-    "TYPE": "Tüüp",
-    "PHONE": "Telefon",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_SMSQUEUE": "Add SMS Queue",
+    "EDIT_SMSQUEUE": "Edit SMS Queue",
+    "DELETE_SMSQUEUE": "Delete SMS Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMSACCOUNTS": "SMS Accounts",
+    "TYPE": "Type",
+    "PHONE": "Phone",
     "SID": "SID",
-    "TOKEN": "Luba",
-    "SMSTYPE": "SMS Tüüp",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_SMSACCOUNT": "Lisa SMS Konto",
-    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
-    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
+    "TOKEN": "Token",
+    "SMSTYPE": "SMS Type",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_SMSACCOUNT": "Add SMS Account",
+    "EDIT_SMSACCOUNT": "Edit SMS Account",
+    "DELETE_SMSACCOUNT": "Delete SMS Account",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Method",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
     "SMS": "SMS",
-    "ID": "ID",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SMSDISPOSITIONS": "SMS Kasutused",
-    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
-    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
-    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
-    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
-    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
-    "NEW_SMSQUEUE": "Uus SMS Järjekord",
-    "NEW_SMSACCOUNT": "Uus SMS Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ID": "Id",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SMSDISPOSITIONS": "SMS Dispositions",
+    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
+    "NEW_SMSDISPOSITION": "New SMS Disposition",
+    "ADD_SMSDISPOSITION": "Add SMS Disposition",
+    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
+    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
+    "NEW_SMSQUEUE": "New SMS Queue",
+    "NEW_SMSACCOUNT": "New SMS Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
     "HELP": {
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate contacts",
+      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
       "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu Lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
-    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "RECEIVEURL": "URL vastuvõtmine",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
+    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
+    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "RECEIVEURL": "Receive URL",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
     "AGENT": "Agent",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "TIMEOUT": "Aegumine",
-    "VALUE": "Väärtus",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "PRIORITY": "Prioriteet",
+    "QUEUE": "Queue",
+    "TIMEOUT": "Timeout",
+    "VALUE": "Value",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "PRIORITY": "Priority",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali staatus",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "INFO": "Teave",
-    "ACCOUNTSID": "Konto SID",
-    "AUTHTOKEN": "Autentimisluba",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agentdid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
-    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select a status",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select an account",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "INFO": "Info",
+    "ACCOUNTSID": "Account SID",
+    "AUTHTOKEN": "Auth Token",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to SMS queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to SMS queue",
+    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 75fb8d9..0d93402 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hostseade",
-    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
-    "OLD_PASSWORD": "Vana Parool",
-    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
+    "HOTDESK": "Hot desk",
+    "ENABLEVIDEORECORDING": "Enable Video Recording",
+    "OLD_PASSWORD": "Old Password",
+    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
-    "SECURITY_SUITE": "Turvapakett",
-    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
+    "NO_PASSWORD_CHANGE": "No Password Change",
+    "SECURITY_SUITE": "Security Suite",
+    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Sätted",
+    "SETTINGS_WEBRTC": "Settings",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS sertifikaat",
-    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
-    "CONTEXT": "Kontekst",
-    "RINGINUSE": "Helistamine Kasutusel",
-    "USERS": "Kasutajad",
-    "AGENTS": "Agendid",
-    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "SELECTED": "Valitud",
-    "DELETE_SELECTED": "Kustuta valitud",
-    "EXPORT_SELECTED": "Ekspordi valitud",
-    "ALL_USERS": "Kõik kasutajad",
-    "ALL_AGENTS": "Kõik agendid",
-    "SORT": "sordi",
-    "NAME": "Nimi",
-    "FULLNAME": "Täisnimi",
-    "A_TO_Z": "(A-st Z-ni)",
-    "Z_TO_A": "(Z-st to A-ni)",
-    "MORE": "Rohkem",
-    "DELETE_USER": "Kustuta Kasutaja",
-    "EDIT_USER": "Redigeeri Kasutajat",
-    "DELETE_AGENT": "Kustuta Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "DELETE": "KUSTUTA",
-    "SAVE": "SALVESTA",
-    "ADD_USER": "LISA KASUTAJA",
-    "ADD_AGENT": "LISA AGENT",
-    "NO_RESULTS": "Tulemused puuduvad..",
-    "CLOSE_DIALOG": "Sule dialoog",
-    "NAME_REQUIRED": "Nimi (nõutav)",
-    "USERNAME": "Kasutajanimi",
-    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
-    "PHONE_NUMBER": "Telefoninumber",
-    "EMAIL": "E-mail",
-    "PASSWORD": "Parool",
+    "DTLSCERTFILE": "TLS certificate",
+    "DTLSPRIVATEKEY": "TLS certificate's private key",
+    "CONTEXT": "Context",
+    "RINGINUSE": "Ring In Use",
+    "USERS": "Users",
+    "AGENTS": "Agents",
+    "TOGGLE_SIDENAV": "Toggle sidenav",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "MULTI_SELECT_TOGGLE": "multi select toggle",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select None",
+    "SELECTED": "Selected",
+    "DELETE_SELECTED": "Delete selected",
+    "EXPORT_SELECTED": "Export selected",
+    "ALL_USERS": "All users",
+    "ALL_AGENTS": "All agents",
+    "SORT": "sort",
+    "NAME": "Name",
+    "FULLNAME": "Full Name",
+    "A_TO_Z": "(A to Z)",
+    "Z_TO_A": "(Z to A)",
+    "MORE": "More",
+    "DELETE_USER": "Delete User",
+    "EDIT_USER": "Edit User",
+    "DELETE_AGENT": "Delete Agent",
+    "EDIT_AGENT": "Edit Agent",
+    "DELETE": "DELETE",
+    "SAVE": "SAVE",
+    "ADD_USER": "ADD USER",
+    "ADD_AGENT": "ADD AGENT",
+    "NO_RESULTS": "No results..",
+    "CLOSE_DIALOG": "Close dialog",
+    "NAME_REQUIRED": "Name (required)",
+    "USERNAME": "Username",
+    "SHOW_ALL_FIELDS": "Show All Fields",
+    "PHONE_NUMBER": "Phone number",
+    "EMAIL": "Email",
+    "PASSWORD": "Password",
     "ERRORS": {
-      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
-      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
-      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
-      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
-      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
-      "SIPPORT_REQUIRED": "Kohustuslik väli",
-      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
-      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
-      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
-      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
-      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
-      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
+      "ALLOWCODECS_REQUIRED": "Mandatory field",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "DTLSCERTFILE_REQUIRED": "Mandatory field",
+      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_REQUIRED": "Mandatory field",
+      "MAILCAPACITY_REQUIRED": "Mandatory field",
+      "FAXCAPACITY_REQUIRED": "Mandatory field",
+      "SMSCAPACITY_REQUIRED": "Mandatory field",
+      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
+      "SIPEXPIRES_REQUIRED": "Mandatory field",
+      "SIPPORT_REQUIRED": "Mandatory field",
+      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
+      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
+      "BUSYNUMBER_REQUIRED": "Mandatory field",
+      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
+      "MONITOREXTENSION_REQUIRED": "Mandatory field",
+      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Konto",
-    "VOICE": "Hääl",
-    "CREATED_AT": "Loomisaeg",
-    "ROLE": "Roll",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "DESCRIPTION": "Kirjeldus",
-    "CHANGE_AVATAR": "Muuda Avatari",
-    "GENERAL": "Üldine",
-    "INTERNAL": "Sisemine",
+    "ACCOUNT": "Account",
+    "VOICE": "Voice",
+    "CREATED_AT": "Created At",
+    "ROLE": "Role",
+    "PERSONAL_INFO": "Personal Info",
+    "DESCRIPTION": "Description",
+    "CHANGE_AVATAR": "Change Avatar",
+    "GENERAL": "General",
+    "INTERNAL": "Internal",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Lubatud Koodeks",
+    "ALLOWCODECS": "Allowed Codecs",
     "HELP": {
-      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
-      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
-      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
-      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
-      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
-      "SIPEXPIRES": "Vaikimisi: 160",
-      "SIPPORT": "Vaikimisi: 5060",
-      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
-      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
-      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "CALLGROUP": "Agendi kõnegrupp",
-      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
-      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldur”",
+      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
+      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Allowed Codecs in order of preference",
+      "TRANSPORT": "Set the default transports in order of preference",
+      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
+      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
+      "SIPEXPIRES": "Default: 160",
+      "SIPPORT": "Default: 5060",
+      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
+      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "CALLGROUP": "The agent's callgroup",
+      "PICKUPGROUP": "The groups in which the agent can answer calls",
+      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "NEW_PASSWORD": "Uus Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "CHANGE_PASSWORD": "Muuda Parooli",
-    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
-    "CHANGEPASSWORD_USER": "Muuda Parooli",
-    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
-    "LOGININPAUSE": "Sisselogimine Pausis",
+    "NEW_PASSWORD": "New Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "CHANGE_PASSWORD": "Change Password",
+    "CHANGEPASSWORD_AGENT": "Change Password",
+    "CHANGEPASSWORD_USER": "Change Password",
+    "CHANGEPASSWORD_TELEPHONE": "Change Password",
+    "LOGININPAUSE": "Login In Pause",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Teised Kanalid",
-    "CHATCAPACITY": "Vestluse Võimsus",
-    "MAILCAPACITY": "E-posti Maht",
-    "FAXCAPACITY": "Faksi Maht",
-    "SMSCAPACITY": "SMSi Maht",
-    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
-    "MOTIONBAR": "Liikumisriba",
-    "SETTINGS": "Sätted",
-    "AUTOANSWER": "Automaatvastus",
-    "ENABLESETTINGS": "Luba Sätted",
-    "CALL_FORWARDING": "Kõne Suunamine",
-    "UNCONDITIONAL": "Tingimusteta",
-    "UNCONDITIONALNUMBER": "Tingimusteta Number",
-    "NOREPLY": "Vastamine puudub",
-    "NOREPLYNUMBER": "Number, millele ei saa vastata",
-    "BUSY": "Hõivatud",
-    "BUSYNUMBER": "Hõivatud Number",
-    "REMOTE_CONTROL": "Kaugjuhtimine",
-    "REMOTECONTROL": "Kaugjuhtimine",
-    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
+    "OTHER_CHANNELS": "Other Channels",
+    "CHATCAPACITY": "Chat Capacity",
+    "MAILCAPACITY": "Email Capacity",
+    "FAXCAPACITY": "Fax Capacity",
+    "SMSCAPACITY": "Sms Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "MOTIONBAR": "Motion Bar",
+    "SETTINGS": "Settings",
+    "AUTOANSWER": "Auto Answer",
+    "ENABLESETTINGS": "Enable Settings",
+    "CALL_FORWARDING": "Call Forwarding",
+    "UNCONDITIONAL": "Unconditional",
+    "UNCONDITIONALNUMBER": "Unconditional Number",
+    "NOREPLY": "No Reply",
+    "NOREPLYNUMBER": "No Reply Number",
+    "BUSY": "Busy",
+    "BUSYNUMBER": "Busy Number",
+    "REMOTE_CONTROL": "Remote Control",
+    "REMOTECONTROL": "Remote Control",
+    "REMOTECONTROLPORT": "Remote Control Port",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP aegub [sek]",
+    "SIPEXPIRES": "SIP Expires [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Trahv",
-    "ACCOUNTNAME": "Konto Nimi",
-    "ADD_TELEPHONE": "Lisa Telefon",
-    "EDIT_TELEPHONE": "Redigeeri Telefoni",
-    "DELETE_TELEPHONE": "Kustuta Telefon",
-    "TEAMS": "Tiimid",
-    "DELETE_TEAM": "Kustuta Tiim",
-    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
-    "EDIT_TEAM": "Redigeeri Tiimi",
-    "TYPE": "Tüüp",
-    "TELEPHONES": "Telefonid",
-    "CALLERID": "Helistaja ID",
-    "ENABLERECORDING": "Luba Salvestamine",
-    "STAFF": "Personal",
-    "ID": "ID",
-    "NEW_USER": "Uus Kasutaja",
-    "NEW_AGENT": "Uus Agent",
-    "NEW_TELEPHONE": "Uus Telefon",
-    "NEW_TEAM": "Uus Tiim",
-    "ADD_TEAM": "Lisa Tiim",
-    "JOIN_QUEUE": "Liitu Järjekorraga",
-    "CAPACITY": "Maht",
-    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
-    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
-    "TEAMADD_AGENT": "Lisa Agent Tiimi",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "PERMISSIONS": "Load",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
-    "CALLGROUP": "Helistamise Grupp",
-    "PICKUPGROUP": "Vastuvõtu Grupp",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
-    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
-    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
-    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
-    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
-    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
-    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
-    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
-    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
-    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
-    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
-    "VOICEMAIL": "Kõnepost",
-    "SHOWWEBCONTROL": "Tüpoloogia",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PENALTY": "Penalty",
+    "ACCOUNTNAME": "Account Name",
+    "ADD_TELEPHONE": "Add Telephone",
+    "EDIT_TELEPHONE": "Edit Telephone",
+    "DELETE_TELEPHONE": "Delete Telephone",
+    "TEAMS": "Teams",
+    "DELETE_TEAM": "Delete Team",
+    "AGENTADD_TEAM": "Add Agents to Team",
+    "EDIT_TEAM": "Edit Team",
+    "TYPE": "Type",
+    "TELEPHONES": "Telephones",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Enable Recording",
+    "STAFF": "Staff",
+    "ID": "Id",
+    "NEW_USER": "New User",
+    "NEW_AGENT": "New Agent",
+    "NEW_TELEPHONE": "New Telephone",
+    "NEW_TEAM": "New Team",
+    "ADD_TEAM": "Add Team",
+    "JOIN_QUEUE": "Join Queue",
+    "CAPACITY": "Capacity",
+    "AUTOINTERNAL": "Auto generate internal number",
+    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
+    "TEAMADD_AGENT": "Add Agent to Team",
+    "NO_AVAILABLE_INFO": "No available info",
+    "PERMISSIONS": "Permissions",
+    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
+    "ALL_MODULES_AVAILABLE": "All modules available",
+    "CALLGROUP": "Call Group",
+    "PICKUPGROUP": "Pickup Group",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
+    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
+    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
+    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
+    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
+    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "SELECTED_AGENTS": "Selected Agents",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
+    "VOICEMAIL": "Voicemail",
+    "SHOWWEBCONTROL": "Typology",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CALLFORWARDING": "Kõne Suunamine",
-    "DND": "Ära tülita pausi jooksul",
-    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
-    "ENABLEDTMFTONE": "Luba Dtmf toonid",
-    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
-    "ENCRYPTION": "Krüptimine",
-    "CHANNELS": "Kanalid",
-    "CHAT": "Vestlus",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
-    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
-    "EDITPERMISSIONS": "Redigeerimise Luba",
-    "READANDEDIT": "Loe, Redigeeri",
-    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
-    "GENERAL_PERMISSIONS": "Üldine",
-    "ENABLEMESSENGER": "Luba Sisemine Messenger",
-    "OUTBOUNDPROXY": "Väljuv Puhver",
-    "PHONE": "Telefon",
-    "MOBILE": "Mobiil",
-    "PREFIXREQUIRED": "Eesliide Nõutav",
-    "MANAGE_PERMISSIONS": "Halda Lubasid",
-    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
-    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
-    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
-    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
-    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
-    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
-    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
-    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
-    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
-    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
-    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
-    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
-    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
-    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
-    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
-    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
-    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
-    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
-    "ALL_PROJECTS": "Kõik Cally Square Projektid",
-    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
-    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
-    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
-    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
-    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
-    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
-    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
-    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
-    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
-    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
-    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
-    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
-    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
-    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
-    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
-    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
-    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
-    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
-    "ADD_USERPROFILE": "Lisa kasutaja profiil",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "CALLFORWARDING": "Call Forwarding",
+    "DND": "Do not disturb during pause",
+    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
+    "ENABLEDTMFTONE": "Enable Dtmf tones",
+    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
+    "ENCRYPTION": "Encryption",
+    "CHANNELS": "Channels",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
+    "MONITOREXTENSION": "Record calls to user extension",
+    "EDITPERMISSIONS": "Editing Permissions",
+    "READANDEDIT": "Read, Edit",
+    "READANDEDITANDDELETE": "Read, Edit, Delete",
+    "GENERAL_PERMISSIONS": "General",
+    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "OUTBOUNDPROXY": "Oubound Proxy",
+    "PHONE": "Phone",
+    "MOBILE": "Mobile",
+    "PREFIXREQUIRED": "Prefix Required",
+    "MANAGE_PERMISSIONS": "Manage Permissions",
+    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
+    "ALL_VOICEQUEUES": "All Voice Queues",
+    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
+    "USERADD_CHATQUEUES": "Add Chat Queue to User",
+    "ALL_CHATQUEUES": "All Chat Queues",
+    "SELECTED_CHATQUEUES": "Selected Email Queues",
+    "USERADD_MAILQUEUES": "Add Email Queue to User",
+    "ALL_MAILQUEUES": "All Email Queues",
+    "SELECTED_MAILQUEUES": "Selected Chat Queues",
+    "USERADD_SMSQUEUES": "Add SMS Queue to User",
+    "ALL_SMSQUEUES": "All SMS Queues",
+    "SELECTED_SMSQUEUES": "Selected SMS Queues",
+    "USERADD_FAXQUEUES": "Add Fax Queue to User",
+    "ALL_FAXQUEUES": "All Fax Queues",
+    "SELECTED_FAXQUEUES": "Selected Fax Queues",
+    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
+    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
+    "USERADD_PROJECTS": "Add Cally Square Project to User",
+    "ALL_PROJECTS": "All Cally Square Projects",
+    "SELECTED_PROJECTS": "Selected Cally Square Projects",
+    "USERADD_CHATWEBSITES": "Add Chat Website to User",
+    "ALL_CHATWEBSITES": "All Chat Websites",
+    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
+    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
+    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
+    "USERADD_MAILACCOUNTS": "Add Email Account to User",
+    "ALL_MAILACCOUNTS": "All Email Accounts",
+    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
+    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
+    "ALL_FAXACCOUNTS": "All Fax Accounts",
+    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
+    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
+    "ALL_SMSACCOUNTS": "All SMS Accounts",
+    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
+    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
+    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
+    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
+    "ADD_USERPROFILE": "Lisage kasutaja profiil",
+    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sule",
-    "CONFIRM": "Kinnita",
+    "CLOSE": "Sulge",
+    "CONFIRM": "Kinnitage",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereeri",
+    "GENERATE": "Genereerima",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereeri",
+    "REGENERATE": "Regenereerige",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
+    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Tiimidee liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp ühendus",
-    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
-    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
+    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
+    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
+    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
+    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
+    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
+    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
+    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
+    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
+    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
+    "AUTO_ANSWER": "Automaatne vastus",
+    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
+    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
+    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
+    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
+    "FAX_AUTOANSWER": "Faksi automaatne vastus",
+    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
+    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
+    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
+    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
   }
 }
index e2ccdbf..48b85d3 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Häälbot",
-    "CLONE_TRUNK": "Magistraali Kloonimine",
-    "DISPOSITIONS": "Kasutused",
-    "NEW_DISPOSITION": "Uud Kasutus",
-    "ADD_DISPOSITION": "Lisa Kasutus",
-    "EDIT_DISPOSITION": "Redigeeri Kasutust",
-    "DELETE_DISPOSITION": "Kustuta Kasutus",
-    "RUN_SCHEDULE": "Käivita graafik",
-    "SENDIFEMPTY": "Saada, kui on tühi",
-    "NEXTCONTACT": "Järgmine",
-    "OUTBOUND_ROUTE": "Väljuv Teekond",
-    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
-    "FONTSIZE": "Fonsi Suurus",
-    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
+    "BOT": "Voicebot",
+    "CLONE_TRUNK": "Clone Trunk",
+    "DISPOSITIONS": "Dispositions",
+    "NEW_DISPOSITION": "New Disposition",
+    "ADD_DISPOSITION": "Add Disposition",
+    "EDIT_DISPOSITION": "Edit Disposition",
+    "DELETE_DISPOSITION": "Delete Disposition",
+    "RUN_SCHEDULE": "Run schedule",
+    "SENDIFEMPTY": "Send if empty",
+    "NEXTCONTACT": "Next",
+    "OUTBOUND_ROUTE": "Outbound Route",
+    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
+    "FONTSIZE": "Font Size",
+    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Taust",
-    "FOREGROUND": "Esiplaan",
-    "NONE": "Pole ühtegi",
-    "TOTAL": "Kokku",
-    "ABANDONED": "Tagasilükatud",
-    "WAITING": "Ootel",
-    "TALKING": "Rääkimine",
-    "ANSWERED": "Vastatud",
-    "UNMANAGED": "Haldamata",
-    "CUSTOMTYPE": "Kohandatud [tee]",
-    "WEBREPORT": "Veebi Raport",
-    "PIECHART": "Sektordiagramm",
-    "MULTIBARCHART": "Tulpdiagramm",
-    "MOVE_WIDGET": "Liiguta Vidinat",
-    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "METRIC": "Mõõdik",
-    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
-    "SERIE1": "Seeria 1",
-    "SERIE2": "Seeria 2",
-    "SERIE3": "Seeria 3",
-    "REFRESH": "Värskenda [s]",
-    "FORMAT": "Formaat",
-    "PATH": "Absoluutne tee",
-    "ALL_USERS": "Kõik Kasutajad",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "ADD_WIDGET": "Lisa Vidin",
-    "COLOR": "Värv",
-    "FAX": "Faks",
-    "INTERACTION": "Suhtlus",
-    "MESSAGE": "Sõnum",
+    "BACKGROUND": "Background",
+    "FOREGROUND": "Foreground",
+    "NONE": "None",
+    "TOTAL": "Total",
+    "ABANDONED": "Abandoned",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "ANSWERED": "Answered",
+    "UNMANAGED": "Unmanaged",
+    "CUSTOMTYPE": "Custom [path]",
+    "WEBREPORT": "Web Report",
+    "PIECHART": "Pie Chart",
+    "MULTIBARCHART": "Multibar Chart",
+    "MOVE_WIDGET": "Move Widget",
+    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "METRIC": "Metric",
+    "FILTERVOICEQUEUES": "Filter Voice Queues",
+    "SERIE1": "Serie 1",
+    "SERIE2": "Serie 2",
+    "SERIE3": "Serie 3",
+    "REFRESH": "Refresh [s]",
+    "FORMAT": "Format",
+    "PATH": "Absolute Path",
+    "ALL_USERS": "All Users",
+    "SELECTED_USERS": "Selected Users",
+    "ADD_WIDGET": "Add Widget",
+    "COLOR": "Color",
+    "FAX": "Fax",
+    "INTERACTION": "Interaction",
+    "MESSAGE": "Message",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Kõne",
-    "NAME": "Nimi",
-    "TRUNKS": "Magistraalid",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "CALL": "Call",
+    "NAME": "Name",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "REFRESH_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "PATH_REQUIRED": "Kohustuslik väli",
-      "FORMAT_REQUIRED": "Kohustuslik väli",
-      "REPORT_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "ACCOUNT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
-      "CALLERID_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
-      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
-      "MONTHDAY_REQUIRED": "Kohustuslik väli",
-      "HOUR_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "URL_REQUIRED": "Kohustuslik väli",
-      "URL_MUST_VALID_URL": "Vale formaat",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
-      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
-      "INTEGRATION_REQUIRED": "Kohustuslik väli",
-      "LIST_REQUIRED": "Kohustuslik väli",
-      "TEMPLATE_REQUIRED": "Kohustuslik väli",
-      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
-      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_TO_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_FROM_INVALID": "Vale formaat",
-      "TIME_RANGE_TO_INVALID": "Vale formaat",
-      "ACTION_REQUIRED": "Kohustuslik väli",
-      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "LOCATION_REQUIRED": "Kohustuslik väli",
-      "OUTPUT_REQUIRED": "Kohustuslik väli",
-      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
-      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
-      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
+      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "REFRESH_REQUIRED": "Mandatory field",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory field",
+      "PATH_REQUIRED": "Mandatory field",
+      "FORMAT_REQUIRED": "Mandatory field",
+      "REPORT_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "ACCOUNT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "DEFAULTUSER_REQUIRED": "Mandatory field",
+      "CALLERID_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The Passwords don't match",
+      "VALIDITYSTART_REQUIRED": "Mandatory field",
+      "VALIDITYEND_REQUIRED": "Mandatory field",
+      "MONTHDAY_REQUIRED": "Mandatory field",
+      "HOUR_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "URL_REQUIRED": "Mandatory field",
+      "URL_MUST_VALID_URL": "Wrong format",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "ARGUMENTS_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
+      "TITLE_REQUIRED": "Mandatory field",
+      "EMAILADDRESS_REQUIRED": "Mandatory field",
+      "EVENTVARIABLES_REQUIRED": "Mandatory field",
+      "INTEGRATION_REQUIRED": "Mandatory field",
+      "LIST_REQUIRED": "Mandatory field",
+      "TEMPLATE_REQUIRED": "Mandatory field",
+      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
+      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_TO_REQUIRED": "Mandatory field",
+      "TIME_RANGE_FROM_INVALID": "Wrong Format",
+      "TIME_RANGE_TO_INVALID": "Wrong Format",
+      "ACTION_REQUIRED": "Mandatory field",
+      "CONFIGURATION_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "LOCATION_REQUIRED": "Mandatory field",
+      "OUTPUT_REQUIRED": "Mandatory field",
+      "REPORTTYPE_REQUIRED": "Mandatory field",
+      "REPORTFOLDER_REQUIRED": "Mandatory field",
+      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Saladus",
-    "DEFAULTUSER": "Vaikimisi Kasutaja",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_TRUNK": "Lisa Magistraal",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Default User",
+    "DESCRIPTION": "Description",
+    "ADD_TRUNK": "Add Trunk",
     "HELP": {
-      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
-      "SECRET": "Autentimise parool",
-      "HOST": "Domeen või hosti nimi",
-      "DEFAULTUSER": "Autentimise kasutajanimi",
-      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
-      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
-      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
-      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
-      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
-      "PORT": "SIP pordi number",
-      "CONTEXT": "Kontekst magistraali jaoks",
-      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
-      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
-      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
-      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
-      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
-      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
-      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
-      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
-      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
-      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
-      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
-      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
-      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
-      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
-      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
-      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
+      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
+      "SECRET": "Authentication password",
+      "HOST": "The domain or host name",
+      "DEFAULTUSER": "Authentication username",
+      "CALLERID": "The Caller ID, in the format \"name\" <number>",
+      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
+      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
+      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
+      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
+      "PORT": "The SIP port number",
+      "CONTEXT": "The context for the trunk",
+      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
+      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
+      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
+      "QUALIFY": "Determine when the SIP is achievable",
+      "ALLOWCODECS": "Allowed codecs in order of preference",
+      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
+      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
+      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
+      "CALLCOUNTER": "Enable call counters on devices",
+      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
+      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
+      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
+      "TRANSPORT": "Set the default transports, in order of preference",
+      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
+      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
+      "BODY": "If not filled out, the default value will be sent",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisesta pealkiri",
-      "SCRIPT": "Sisesta skript",
-      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
+      "INFO": "Sisestage pealkiri",
+      "SCRIPT": "Sisestage skript",
+      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "EDIT_TRUNK": "Muuda Magistraali",
-    "DELETE_TRUNK": "Kustuta Magistraal",
-    "CREATED_AT": "Loomisaeg",
-    "SETTINGS": "Sätted",
-    "ADVANCED": "Täpsem",
-    "OTHER": "Muu",
-    "ACTIVE": "Aktiivne",
-    "CONTEXT": "Kontekst",
-    "CALLERID": "Helistaja ID",
-    "TYPE": "Tüüp",
-    "DTMFMODE": "DTMF Režiim",
+    "EDIT_TRUNK": "Edit Trunk",
+    "DELETE_TRUNK": "Delete Trunk",
+    "CREATED_AT": "Created At",
+    "SETTINGS": "Settings",
+    "ADVANCED": "Advanced",
+    "OTHER": "Other",
+    "ACTIVE": "Active",
+    "CONTEXT": "Context",
+    "CALLERID": "Caller ID",
+    "TYPE": "Type",
+    "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Kvalifitseerima",
-    "ALLOWCODECS": "Lubatud Koodeks",
-    "INSECURE": "Ebaturvaline",
-    "REGISTRY": "Register",
-    "DIRECTMEDIA": "Otsene Meedium",
-    "CALLCOUNTER": "Kõnede Loendur",
-    "FROMDOMAIN": "Domeenilt",
-    "FROMUSER": "Kasutajalt",
-    "OUTBOUNDPROXY": "Väljaminev Puhver",
-    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
-    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
-    "ENCRYPTION": "Krüpteerimine",
+    "QUALIFY": "Qualify",
+    "ALLOWCODECS": "Allowed Codecs",
+    "INSECURE": "Insecure",
+    "REGISTRY": "Registry",
+    "DIRECTMEDIA": "Direct Media",
+    "CALLCOUNTER": "Call Counter",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From User",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Add Phone to URL",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "ENCRYPTION": "Encryption",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Salvesta",
-    "VARIABLES": "Muutujad",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "EDIT_VARIABLE": "Redigeeri Muutuja",
-    "DELETE_VARIABLE": "Kustuta Muutuja",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "TAGS": "Sildid",
-    "ADD_TAG": "Lisa Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "DELETE_TAG": "Kustuta Silt",
-    "PAUSES": "Pausile",
-    "ADD_PAUSE": "Lisa Paus",
-    "EDIT_PAUSE": "Redigeeri Pausi",
-    "DELETE_PAUSE": "Kustuta Paus",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
-    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "KEY": "Võti",
-    "VALUE": "Väärtus",
-    "SOUNDS": "Helid",
-    "EDIT_SOUND": "Redigeeri Heli",
-    "DELETE_SOUND": "Kustuta Heli",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "UPLOADING": "Üleslaadimine",
-    "TRIGGERS": "Käivitamised",
-    "EDIT_TRIGGER": "Redigeeri Käivitust",
-    "DELETE_TRIGGER": "Kustuta Käivitus",
-    "ADD_TRIGGER": "Lisa Käivitus",
-    "DELETE": "Kustuta",
-    "AUTOMATIONS": "Automaatika",
-    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
-    "DELETE_AUTOMATION": "Kustuta Automaatika",
-    "ADD_AUTOMATION": "Lisa Automaatika",
-    "INTERVALS": "Intervallid",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_INTERVAL": "Kustuta Intervall",
-    "ADD_INTERVAL": "Lisa Intervall",
-    "TOOLS": "Tööriistad",
-    "ID": "ID",
+    "SAVE": "Save",
+    "VARIABLES": "Variables",
+    "ADD_VARIABLE": "Add Variable",
+    "EDIT_VARIABLE": "Edit Variable",
+    "DELETE_VARIABLE": "Delete Variable",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TAGS": "Tags",
+    "ADD_TAG": "Add Tag",
+    "EDIT_TAG": "Edit Tag",
+    "DELETE_TAG": "Delete Tag",
+    "PAUSES": "Pauses",
+    "ADD_PAUSE": "Add Pause",
+    "EDIT_PAUSE": "Edit Pause",
+    "DELETE_PAUSE": "Delete Pause",
+    "CANNEDANSWERS": "Canned Answers",
+    "ADD_CANNEDANSWER": "Add Canned Answer",
+    "EDIT_CANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CANNEDANSWER": "Delete Canned Answer",
+    "KEY": "Key",
+    "VALUE": "Value",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Edit Sound",
+    "DELETE_SOUND": "Delete Sound",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "UPLOADING": "Uploading",
+    "TRIGGERS": "Triggers",
+    "EDIT_TRIGGER": "Edit Trigger",
+    "DELETE_TRIGGER": "Delete Trigger",
+    "ADD_TRIGGER": "Add Trigger",
+    "DELETE": "Delete",
+    "AUTOMATIONS": "Automations",
+    "EDIT_AUTOMATION": "Edit Automation",
+    "DELETE_AUTOMATION": "Delete Automation",
+    "ADD_AUTOMATION": "Add Automation",
+    "INTERVALS": "Intervals",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_INTERVAL": "Delete Interval",
+    "ADD_INTERVAL": "Add Interval",
+    "TOOLS": "Tools",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Laadi alla Heli",
-    "UPLOAD_SOUND": "Tööriistad",
-    "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Uus Käivitus",
-    "GENERAL": "Üldine",
-    "STATUS": "Staatus",
-    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
-    "ALLCONDITIONS": "Täida kõik need tingimused:",
-    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
-    "ACTIONS": "Tegevused:",
-    "NEW_AUTOMATION": "Uus Automaatika",
-    "TIMEOUT": "Aegumine",
-    "PEERSTATUS": "Partneri Staatus",
-    "CALL_LIMIT": "Kõnede Limiit",
-    "OTHERFIELDS": "Muud Väljad",
-    "NEW_VARIABLE": "Uus Muutuja",
-    "NEW_TAG": "Uus Silt",
-    "NEW_PAUSE": "Uus Paus",
-    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "NEW_TRUNK": "Uus Magistraal",
-    "FROM": "Kellelt",
-    "TO": "Kellele",
-    "WEEKDAY": "Nädalapäev",
-    "MONTHDAY": "Kuupäev",
-    "MONTH": "Kuu",
-    "ALWAYS": "Alati",
-    "MON": "Esmaspäev",
-    "TUE": "Teisipäev",
-    "WED": "Kolmapäev",
-    "THU": "Neljapäev",
-    "FRI": "Reede",
-    "SAT": "Laupäev",
-    "SUN": "Pühapäev",
-    "JAN": "Jaanuar",
-    "FEB": "Veebruar",
-    "MAR": "Märts",
-    "APR": "Aprill",
-    "MAY": "Mai",
-    "JUN": "Juuni",
-    "JUL": "Juuli",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Tools",
+    "CHANNEL": "Channel",
+    "NEW_TRIGGER": "New Trigger",
+    "GENERAL": "General",
+    "STATUS": "Status",
+    "CONDITIONS&ACTIONS": "Conditions & Actions",
+    "ALLCONDITIONS": "Meet all these conditions:",
+    "ANYCONDITIONS": "Meet any of these conditions:",
+    "ACTIONS": "Actions:",
+    "NEW_AUTOMATION": "New Automation",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Peer Status",
+    "CALL_LIMIT": "Calls Limit",
+    "OTHERFIELDS": "Other Fields",
+    "NEW_VARIABLE": "New Variable",
+    "NEW_TAG": "New Tag",
+    "NEW_PAUSE": "New Pause",
+    "NEW_CANNEDANSWER": "New Canned Answer",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "NEW_TRUNK": "New Trunk",
+    "FROM": "From",
+    "TO": "To",
+    "WEEKDAY": "Week Day",
+    "MONTHDAY": "Month Day",
+    "MONTH": "Month",
+    "ALWAYS": "Always",
+    "MON": "Monday",
+    "TUE": "Tuesday",
+    "WED": "Wednesday",
+    "THU": "Thursday",
+    "FRI": "Friday",
+    "SAT": "Saturday",
+    "SUN": "Sunday",
+    "JAN": "January",
+    "FEB": "February",
+    "MAR": "March",
+    "APR": "April",
+    "MAY": "May",
+    "JUN": "June",
+    "JUL": "July",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "Oktober",
+    "OCT": "October",
     "NOV": "November",
-    "DEC": "Detsember",
-    "PASSWORD": "Parool",
-    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
-    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
-    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
-    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
-    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
-    "SCHEDULER": "Plaanija",
-    "NEW_SCHEDULE": "Uus Plaanija",
-    "ADD_SCHEDULE": "Lisa Plaanija",
-    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
-    "DELETE_SCHEDULE": "Kustuta Plaanija",
-    "SENDMAIL": "Saada E-mail",
-    "CONFIGURATION": "Konfiguratsioon",
-    "MAIL": "E-mail",
-    "REPORTTYPE": "Rapordi Tüüp",
-    "REPORT": "Raport",
-    "OUTPUT": "Väljund",
-    "EXECUTEON": "Käivita",
-    "REPORTRANGE": "Rapordi Vahemik",
-    "VALIDITYSTART": "Alguse Aeg",
-    "VALIDITYEND": "Lõpu Aeg",
-    "EXECUTEEVERY": "Täida iga",
-    "ACCOUNT": "Konto",
-    "EMAILADDRESS": "E-maili aadress",
-    "EMAILCCADDRESS": "Koopia",
-    "EMAILBCCADDRESS": "Salakoopia",
-    "CURRENTDAY": "Jooksev Päev",
-    "DAILY": "Igapäevane",
-    "WEEKLY": "Iganädalane",
-    "MONTHLY": "Igakuine",
-    "PREVIOUS_DAY": "Eemine päev",
-    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
-    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
-    "LAST_MONTH": "Viimane Kuu",
-    "WEEKDAYS": "Nädalapäevad",
-    "HOUR": "Tund",
-    "DEFAULT": "Vaikimisi",
+    "DEC": "December",
+    "PASSWORD": "Password",
+    "CUSTOMDASHBOARDS": "Custom Dashboards",
+    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
+    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
+    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "New Schedule",
+    "ADD_SCHEDULE": "Add Schedule",
+    "EDIT_SCHEDULE": "Edit Schedule",
+    "DELETE_SCHEDULE": "Delete Schedule",
+    "SENDMAIL": "Send Email",
+    "CONFIGURATION": "Configuration",
+    "MAIL": "Email",
+    "REPORTTYPE": "Report Type",
+    "REPORT": "Report",
+    "OUTPUT": "Output",
+    "EXECUTEON": "Execute On",
+    "REPORTRANGE": "Report Range",
+    "VALIDITYSTART": "Start Time",
+    "VALIDITYEND": "End Time",
+    "EXECUTEEVERY": "Execute every",
+    "ACCOUNT": "Account",
+    "EMAILADDRESS": "Email Address",
+    "EMAILCCADDRESS": "Cc",
+    "EMAILBCCADDRESS": "Bcc",
+    "CURRENTDAY": "Current Day",
+    "DAILY": "Daily",
+    "WEEKLY": "Weekly",
+    "MONTHLY": "Monthly",
+    "PREVIOUS_DAY": "Previous Day",
+    "LAST_SEVEN_DAYS": "Last Seven Days",
+    "LAST_THIRTY_DAYS": "Last Thirthy Days",
+    "LAST_MONTH": "Last Month",
+    "WEEKDAYS": "Week Days",
+    "HOUR": "Hour",
+    "DEFAULT": "Default",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutit",
-    "30MIN": "30 minutit",
-    "1H": "1 tund",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
+    "15MIN": "15 minutes",
+    "30MIN": "30 minutes",
+    "1H": "1 hour",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
     "SMS": "SMS",
-    "OPENCHANNEL": "Ava Kanal",
-    "TEMPLATES": "Mallid",
-    "EDIT_TEMPLATE": "Redigeeri Malli",
-    "DELETE_TEMPLATE": "Kustuta Mall",
-    "NEW_TEMPLATE": "Uus Mall",
-    "ADD_TEMPLATE": "Lisa Mall",
-    "CONTENT": "Sisu",
-    "FIELD": "Väli",
-    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
-    "ACTION": "Tegevus",
-    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
-    "DELETE_ANYCONDITION": "Kustuta Tingimus",
-    "NEW_ANYCONDITION": "Uus Tingimus",
-    "ADD_ANYCONDITION": "Lisa Tingimus",
-    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
-    "DELETE_ALLCONDITION": "Kustuta Tingimus",
-    "NEW_ALLCONDITION": "Uus Tingimus",
-    "ADD_ALLCONDITION": "Lisa Tingimus",
-    "EDIT_ACTION": "Redigeeri Tegevust",
-    "DELETE_ACTION": "Kustuta Tegevus",
-    "NEW_ACTION": "Uus Tegevus",
-    "ADD_ACTION": "Lisa Tegevus",
-    "QUEUE": "Järjekord",
-    "CALL_STATUS": "Kõne Staatus",
-    "OUTBOUNDROUTE": "Väljaminev Tee",
-    "EQUALS": "Võrduvad",
-    "NOT_EQUALS": "Ei Võrdu",
-    "CONTACT_MANAGER": "Kontaktide Haldur",
-    "INTEGRATIONS": "Integratsioonid",
-    "MOTIONBAR": "Liikumisriba",
+    "OPENCHANNEL": "Open Channel",
+    "TEMPLATES": "Templates",
+    "EDIT_TEMPLATE": "Edit Template",
+    "DELETE_TEMPLATE": "Delete Template",
+    "NEW_TEMPLATE": "New Template",
+    "ADD_TEMPLATE": "Add Template",
+    "CONTENT": "Content",
+    "FIELD": "Field",
+    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ACTION_AVAILABLE": "No Actions available",
+    "ACTION": "Action",
+    "EDIT_ANYCONDITION": "Edit Condition",
+    "DELETE_ANYCONDITION": "Delete Condition",
+    "NEW_ANYCONDITION": "New Condition",
+    "ADD_ANYCONDITION": "Add Condition",
+    "EDIT_ALLCONDITION": "Edit Condition",
+    "DELETE_ALLCONDITION": "Delete Condition",
+    "NEW_ALLCONDITION": "New Condition",
+    "ADD_ALLCONDITION": "Add Condition",
+    "EDIT_ACTION": "Edit Action",
+    "DELETE_ACTION": "Delete Action",
+    "NEW_ACTION": "New Action",
+    "ADD_ACTION": "Add Action",
+    "QUEUE": "Queue",
+    "CALL_STATUS": "Call Status",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "EQUALS": "Equals",
+    "NOT_EQUALS": "Not Equals",
+    "CONTACT_MANAGER": "Contacts Manager",
+    "INTEGRATIONS": "Integrations",
+    "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Edastamine",
-    "WEB_POPUP": "Veebi Hüpik",
-    "LIST": "Loend",
-    "INTEGRATION": "Integratsioon",
-    "TEMPLATE": "Mall",
+    "URL_FORWARD": "URL Forward",
+    "WEB_POPUP": "Web Popup",
+    "LIST": "List",
+    "INTEGRATION": "Integration",
+    "TEMPLATE": "Template",
     "URL": "URL",
-    "APPLICATION": "Rakendus",
+    "APPLICATION": "Application",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "NEW_INTERVAL": "Uus Intervall",
-    "OPERATOR": "Operaator",
-    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
-    "YES": "Jah",
-    "NO": "Ei",
-    "SUBJECT": "Teema",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "BROWSER": "Brauser",
-    "INTERVAL": "Intervall",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "NEW_INTERVAL": "New Interval",
+    "OPERATOR": "Operator",
+    "NO_INTERVALS_AVAILABLE": "No intervals available",
+    "YES": "Yes",
+    "NO": "No",
+    "SUBJECT": "Subject",
+    "NO_AVAILABLE_INFO": "No available info",
+    "BROWSER": "Browser",
+    "INTERVAL": "Interval",
     "INFO": "Info",
-    "TIME_RANGE": "Ajavahemik",
-    "WEEK_DAYS": "Nädalapäevad",
-    "MONTH_DAYS": "Kuupäevad",
-    "MONTHS": "Kuud",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
-    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
-    "DASHBOARD": "Töölaud",
-    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
-    "COUNTER": "Loendur",
+    "TIME_RANGE": "Time Range",
+    "WEEK_DAYS": "Week Days",
+    "MONTH_DAYS": "Month Days",
+    "MONTHS": "Months",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Polling Interval (seconds)",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "New Dashboard Widget",
+    "COUNTER": "Counter",
     "IFRAME": "IFrame",
-    "CLOCK": "Kell",
-    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
-    "EDIT_WIDGET": "Redigeeri Vidinat",
-    "DELETE_WIDGET": "Kustuta Vidin",
-    "FLIP_WIDGET": "Pööra Vidinat",
-    "TITLE": "Pealkiri",
-    "UPDATE": "Uuenda",
-    "LAYOUT": "Paigutus",
-    "BACKGROUND_COLOR": "Taustavärv",
-    "FOREGROUND_COLOR": "Esiplaani Värv",
-    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
-    "THEME": "Teema",
-    "LIGHT": "Hele",
-    "DARK": "Tume",
-    "TIMEZONE": "Ajavöönd",
-    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
-    "TOOLS_QUERY": "Päring",
-    "SELECT": "Vali",
-    "WHERE": "Kus",
-    "BACK": "Tagasi",
-    "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
-    "GOTO_TRUNK": "Mine Magistraali",
+    "CLOCK": "Clock",
+    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
+    "EDIT_WIDGET": "Edit Widget",
+    "DELETE_WIDGET": "Delete Widget",
+    "FLIP_WIDGET": "Flip Widget",
+    "TITLE": "Title",
+    "UPDATE": "Update",
+    "LAYOUT": "Layout",
+    "BACKGROUND_COLOR": "Background Color",
+    "FOREGROUND_COLOR": "Foreground Color",
+    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
+    "THEME": "Theme",
+    "LIGHT": "Light",
+    "DARK": "Dark",
+    "TIMEZONE": "TimeZone",
+    "DIGITAL_FORMAT": "Digital Date Format",
+    "TOOLS_QUERY": "Query",
+    "SELECT": "Select",
+    "WHERE": "Where",
+    "BACK": "Back",
+    "PROJECT": "Project",
+    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
+    "GOTO_TRUNK": "Go To Trunk",
     "CRON": "Cron",
-    "MINUTES": "Minutid",
-    "HOURLY": "Igatunnine",
-    "YEARLY": "Iga-aastane",
-    "EVERY": "Iga",
-    "MINUTE": "Minut",
-    "ON_SECOND": "Teisel",
-    "HOUR_ON_MINUTE": "Tund minutil",
-    "AND_SECOND": "Ja teine",
+    "MINUTES": "Minutes",
+    "HOURLY": "Hourly",
+    "YEARLY": "Yearly",
+    "EVERY": "Every",
+    "MINUTE": "Minute",
+    "ON_SECOND": "On second",
+    "HOUR_ON_MINUTE": "Hour on minute",
+    "AND_SECOND": "And second",
     "DAY_AT": "Day at",
-    "START_TIME": "Algusaeg",
+    "START_TIME": "Start Time",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Eelmine",
-    "LASTUNIT": "Üksus",
-    "MAILACCOUNT": "E-maili Konto",
+    "LAST": "Last",
+    "LASTUNIT": "Unit",
+    "MAILACCOUNT": "Email Account",
     "OF": "of",
-    "PAST_THE_HOUR": "Üle täistunni",
-    "DAY": "Päev",
-    "WEEK": "Nädal",
-    "YEAR": "Aasta",
+    "PAST_THE_HOUR": "Past the hour",
+    "DAY": "Day",
+    "WEEK": "Week",
+    "YEAR": "Year",
     "ON": "On",
-    "PAI": "P-Tõendatud-Identiteet",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "EVENTVARIABLES": "Sündmuse Muutujad",
-    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
-    "LOCATION": "Asukoht",
-    "NEW_TAB": "Uus Vahekaart",
-    "NEW_WINDOW": "Uus Aken",
-    "WINDOWWIDTH": "Akna Laius(px)",
-    "WINDOWHEIGHT": "kna Kõrgus(px)",
-    "BODY": "Sisu",
-    "REPORTFOLDER": "Rapordi Kaust",
-    "REPORTSUBFOLDER": "Rapordi Alamkaust",
+    "PAI": "P-Asserted-Identity",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "EVENTVARIABLES": "Event Variables",
+    "AUTOCREATECONTACT": "Create contact automatically",
+    "LOCATION": "Location",
+    "NEW_TAB": "New Tab",
+    "NEW_WINDOW": "New Window",
+    "WINDOWWIDTH": "Window Width(px)",
+    "WINDOWHEIGHT": "Window Height(px)",
+    "BODY": "Body",
+    "REPORTFOLDER": "Report Folder",
+    "REPORTSUBFOLDER": "Report Subfolder",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP": "WhatsApp-pistik",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Üldised",
+    "GLOBALS": "Globaalid",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Liikumisriba",
+    "MOTION_BAR": "Motion Bar",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik kasutused",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
+    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
+    "ADD_CONTACTITEMTYPE": "Lisama",
+    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
+    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
+    "ORDER_BY": "Telli",
+    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
+    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
+    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
+    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
   }
 }
index 3b220a5..116fbad 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "ID",
-    "INTERACTIONID": "Suhtluse ID",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ID": "Id",
+    "INTERACTIONID": "Koostoime ID",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
     "NO_RATING": "Hinnang puudub",
-    "OF": "of",
-    "PAGE": "Lehekülg",
+    "OF": "kohta",
+    "PAGE": "Leht",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Atribuudid",
+    "PROPERTIES": "Omadused",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvesta lõpuaeg",
-    "RECORDSTARTTIME": "Salvesta algusaeg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECORDENDTIME": "Salvestage lõpuaeg",
+    "RECORDSTARTTIME": "Salvestage algusaeg",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvesta algusaeg",
+    "STARTEDAT": "Salvestage algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index fe28adb..e8fc04a 100644 (file)
 {
   "VOICE": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
-    "WAITING_FOR_AGENTS": "Agendi ootel",
-    "ACTIVE": "Aktiivne",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "STATUS": "Staatus",
-    "TIMER": "Taimer",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "EDIT_TRUNK": "Redigeeri Magistraal",
-    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
-    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
-    "NAME": "Nimi",
-    "LOGOUT": "Logi välja",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
-    "MOHSOUNDS": "Moh Helid",
-    "STRATEGY": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
-    "APPLICATIONS_LIST": "Rakenduste Loend",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "WAITING_FOR_AGENTS": "Waiting for agents",
+    "ACTIVE": "Active",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Partial Pause",
+    "STATUS": "Status",
+    "TIMER": "Timer",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "EDIT_TRUNK": "Edit Trunk",
+    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "NAME": "Name",
+    "LOGOUT": "Logout",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "MOHSOUNDS": "Moh Sounds",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "CREATED_AT": "Created At",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
+    "APPLICATIONS_LIST": "Applications List",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
+      "CUSTOM_APPLICATION": "(*) - Custom application"
     },
     "ERRORS": {
-      "TRUNK_REQUIRED": "Kohustuslik väli",
-      "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "TRUNK_REQUIRED": "Mandatory field",
+      "VARIABLE_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "APPLICATION_NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
+      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
+      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
     },
-    "GENERAL": "Üldine",
-    "TIMEOUT": "Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Proovi uuesti",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "TIMEOUT": "Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
-      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
-      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
-      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
-      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
-      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
-      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
-      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
-      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
-      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
-      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
-      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaeg”. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimene”. Määramata=teavitust pole.",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere are”. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootel”. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg on”. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutit”. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutit”. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekundit”. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eest”. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
-      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
-      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
-      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
-      "NAME": "ja erimärgid (._) on toetatud",
-      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
+      "TIMEOUT": "How many seconds to ring a device",
+      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
+      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
+      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
+      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
+      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
+      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
+      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "MUSICONHOLD": "Muusika Ooteajal",
-    "ANNOUNCETOAGENT": "Teavita Agenti",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCED": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
-    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'Seal on' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minuti Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Tööjärgne Kõne",
-    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
-    "RINGINUSE": "Helin Kasutusel",
-    "MEMBERDELAY": "Osalise Viivitus",
-    "TIMEOUTRESTART": "Aegumise Lähtestamine",
-    "MONITORFORMAT": "Salvestamise Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "VARIABLE": "Muutuja",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sissetulevad Teed",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
-    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljaminevad Teed",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
-    "CUTDIGITS": "Eemalda Numbrid",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Teed",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepostid",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-mail",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Lisa",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-maili Sisu",
-    "EMAILSUBJECT": "E-maili Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kataloog",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCED": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "VARIABLE": "Variable",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Valikud",
-    "AUTH": "Autentimine",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonid",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
     "AGI": "Agi",
-    "DIAL": "Valimine",
+    "DIAL": "Dial",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Välimine Valimine",
-    "RINGGROUP": "Helistamise Grupp",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Häälkõne",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Katkestamine",
-    "CUSTOM": "Kohandatud",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljaminev Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
     "AGENT": "Agent",
-    "TYPE": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
-    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
-    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Määramist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Katkestamist",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muudetud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
-    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Pole kättesaadav",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole Kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Pole kättesaadav",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Helista",
-    "UP": "Üles",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "TRUNK_STATUS": "Trunk Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not In Use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
     "INFO": "Info",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
-    "PAUSED": "Pausil",
-    "WAITING": "OOtel",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "LOGGED_IN": "Logged In (SIP Connected)",
+    "PAUSED": "Paused",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Tagasi lükatud",
-    "UNMANAGED": "Haldamata",
-    "AVG_HOLD_TIME": "Avg Ooteaeg",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Katkestatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse nimi",
-    "ARGUMENTS": "Argumendid",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
-    "PAUSE": "Pausile",
-    "UNPAUSE": "Lõpeta Paus",
-    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
-    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
-    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "APPLICATION": "Rakendus",
-    "FILES": "Failid",
-    "FORMAT": "Formaat",
-    "MODE": "Režiim",
-    "RECORD": "Kirje",
-    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "NEW_MOHSOUND": "Uus Ootemuusika heli",
-    "DOWNLOAD_MESSAGE": "Allalaadimine",
-    "DELETE_MESSAGE": "Kustuta",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "READY": "Valmis",
-    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSING": "Sulgemine",
-    "TAGS": "Sildid",
-    "WAITING_FOR_AGENT": "Agentide Ootamine",
-    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
-    "ACCOUNTNAME": "Konto Nimi",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Av Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "NO_AVAILABLE_INFO": "No Available Info",
+    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
+    "DEFAULT_PAUSE": "DEFAULT PAUSE",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "REDIRECT_TO_NUMBER": "Redirect To Number",
+    "REDIRECT_TO_AGENT": "Redirect To Agent",
+    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
+    "APPLICATION": "Application",
+    "FILES": "Files",
+    "FORMAT": "Format",
+    "MODE": "Mode",
+    "RECORD": "Record",
+    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
+    "NEW_MOHSOUND": "New Music On Hold sound",
+    "DOWNLOAD_MESSAGE": "Download",
+    "DELETE_MESSAGE": "Delete",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "TOTAL_OFFERED": "Total Offered",
+    "READY": "Ready",
+    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
+    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSING": "Closing",
+    "TAGS": "Tags",
+    "WAITING_FOR_AGENT": "Waiting For Agents",
+    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
+    "ACCOUNTNAME": "Account Name",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "DISPOSITION": "Kasutus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
+    "DISPOSITION": "Disposition",
+    "CHAT": "Chat",
+    "MAIL": "Email",
     "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "CLEAR": "Puhasta",
-    "CALLS": "Kõned",
-    "STARTEDAT": "Algusaeg",
-    "ENDEDAT": "Lõpu aeg",
-    "TAG": "Silt",
-    "DETAILS": "Üksikasjad",
-    "BILLABLESECONDS": "Tasustatavad sekundid",
-    "ANSWEREDAT": "Vastamise aeg",
-    "NOTE": "Märge",
-    "CLOSE": "Sule",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
-    "VOICEPREFIXES": "Välised Eesliited",
-    "NEW_VOICEPREFIX": "Uus Eesliide",
-    "ADD_VOICEPREFIX": "Lisa Eesliide",
-    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
-    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
-    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
-    "OUTBOUNDROUTE": "Väljuv Tee",
-    "CALLERIDALL": "Helistaja ID",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "CLEAR": "Clear",
+    "CALLS": "Calls",
+    "STARTEDAT": "Started At",
+    "ENDEDAT": "Ended At",
+    "TAG": "Tag",
+    "DETAILS": "Details",
+    "BILLABLESECONDS": "Billable seconds",
+    "ANSWEREDAT": "Answered At",
+    "NOTE": "Note",
+    "CLOSE": "Close",
+    "SELECT_DATE": "Select Start Date",
+    "SELECT_TYPE": "Select Type",
+    "VOICEPREFIXES": "Out Prefixes",
+    "NEW_VOICEPREFIX": "New Prefix",
+    "ADD_VOICEPREFIX": "Add Prefix",
+    "EDIT_VOICEPREFIX": "Edit Prefix",
+    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
+    "DELETE_VOICEPREFIX": "Delete Prefix",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "CALLERIDALL": "Caller Id",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Arvamus",
-    "SENTIMENTANALYSIS": "Arvamuste analüüs",
-    "SENTIMENT_MIXED": "Kombineeritud",
+    "SENTIMENT": "Tunne",
+    "SENTIMENTANALYSIS": "Sentimentide analüüs",
+    "SENTIMENT_MIXED": "Segatud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "iimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeeri",
+    "TRANSCRIBE": "Transkribeerida",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
+    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Transkriptsioon",
-    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
+    "TRANSCRIPT": "Ärakiri",
+    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega"
+    "ALIAS": "Teise nimega",
+    "MAXCAPACITY": "Maksimaalne mahutavus",
+    "WORKING": "Töötab"
   }
 }
index e8c6282..7c8316a 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli",
+      "BASEURL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisa märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisa",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
-    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
+    "ADD_NOTE": "Lisada märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisama",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
+    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTS": "Agendid",
-    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "AGENT_TIMEOUT": "Agendi aegumine",
+    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTS": "Agentid",
+    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "AGENT_TIMEOUT": "Agent aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik tiimid",
+    "ALL_TEAMS": "Kõik võistkonnad",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimisluba",
+    "AUTHTOKEN": "Autentimismärk",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Salvestatud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
+    "CANNEDANSWERS": "Konserveeritud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sule",
+    "CLOSE": "Sulge",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Suge URL",
+    "CLOSEURL": "Sulge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loomisaeg",
+    "CREATED_AT": "Loodud kell",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta suhtlus",
+    "DELETE_INTERACTION": "Kustuta interaktsioon",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
-    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
+    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
+    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DISPOSITION": "Kasutused",
-    "DISPOSITIONS": "Kasutused",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "EDIT_AGENT": "Redigeeri agenti",
+    "DIALOGFLOW": "DialogFlow",
+    "DISPOSITION": "Dispositsioon",
+    "DISPOSITIONS": "Dispositsioonid",
+    "DOWNLOAD_INTERACTION": "Lae alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_AGENT": "Redigeeri esindajat",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulgemine",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_CLOSE": "Redigeerimine Sulge",
+    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoifi",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_NOOP": "Redigeeri Noopi",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
-    "ID": "ID",
-    "IDLE": "Jõude",
-    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
-    "INTERACTIONS": "Suhtlused",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
+    "ID": "Id",
+    "IDLE": "Tühikäik",
+    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
+    "INTERACTIONS": "Koostoimed",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
-    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
+    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONSHAKE": "Raputama",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
-    "OF": "of",
+    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
+    "OF": "kohta",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
+    "QUEUETRANSFER": "Järjekorra ülekandmine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "URL-i vastuvõtmine",
-    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
-    "REMOTE": "Kaugjuhtimine",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECEIVEURL": "Saate URL-i",
+    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
+    "REMOTE": "Kaugjuhtimispult",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud agendid",
-    "SELECTED_TEAMS": "Valitud tiimid",
+    "SELECTED_AGENTS": "Valitud esindajad",
+    "SELECTED_TEAMS": "Valitud meeskonnad",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ärge valige ühtegi",
+    "SELECT_NONE": "Valige ükski",
     "SEND": "Saada",
-    "SETTINGS": "Sätted",
-    "SPYINTERACTION": "Spiooni suhtlus",
-    "STARTEDAT": "Alustatud kell",
+    "SETTINGS": "Seadistused",
+    "SPYINTERACTION": "Spioonide interaktsioon",
+    "STARTEDAT": "Alustati kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Kellele",
+    "TO": "Et",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõene prioriteet",
+    "TRUEPRIORITY": "Tõeline prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuja",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
-    "WAITING": "Ootamine",
-    "WELCOMEMESSAGE": "Tervitussõµnum",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
-    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-mail",
+    "VARIABLE": "Muutuv",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
+    "WAITING": "Ootan",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPACCOUNTS": "WhatsApi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
+    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-post",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID"
+    "PROJECTID": "Projekti ID",
+    "BASEURL": "Baas-URL",
+    "DELIVERYREPORTURL": "Edastamisaruande URL"
   }
 }
index f98da63..fd2a755 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
-    "SAVE": "Salvesta",
+    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
+    "NO_AVAILABLE_GROUPS": "No Available Groups",
+    "SAVE": "Save",
     "INFO": "Info",
-    "NEW_CHATGROUP": "Uus Grupp",
-    "NAME": "Nimi",
-    "MEMBERS": "Liikmed",
-    "ENABLE_WRITING": "Luba Kirjutamine",
-    "GROUPS": "Gruppid",
-    "YOU": "Teie + {{osalejad}}",
-    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
-    "DELETE": "Kustuta",
-    "SEARCH": "Otsi",
-    "USERS": "Kasutajad",
-    "TODAY": "TÄNA",
-    "MONDAY": "Esmaspäev",
-    "TUESDAY": "Teisipäev",
-    "WEDNESDAY": "Kolmapäev",
-    "THURSDAY": "Neljapäev",
-    "FRIDAY": "Reede",
-    "SATURDAY": "Laupäev",
-    "SUNDAY": "Pühapäev",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "NEW_CHATGROUP": "New Group",
+    "NAME": "Name",
+    "MEMBERS": "Members",
+    "ENABLE_WRITING": "Enable Writing",
+    "GROUPS": "Groups",
+    "YOU": "You + {{participants}}",
+    "NEW_INTERNAL_MESSAGE": "New internal message",
+    "DELETE": "Delete",
+    "SEARCH": "Search",
+    "USERS": "Users",
+    "TODAY": "TODAY",
+    "MONDAY": "Monday",
+    "TUESDAY": "Tuesday",
+    "WEDNESDAY": "Wednesday",
+    "THURSDAY": "Thursday",
+    "FRIDAY": "Friday",
+    "SATURDAY": "Saturday",
+    "SUNDAY": "Sunday",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "CHAT": "VESTLUS",
-    "ACTIVITY": "TEGEVUS",
-    "FRIENDS": "Sõbrad",
-    "APP_SERVERS": "Rakenduse Serverid",
-    "USER_STATS": "Kasutaja Stat",
-    "EVENTS": "Sündmused",
-    "NOTES": "Märkmed",
-    "QUICK_SETTINGS": "Kiirsätted",
-    "NOTIFICATIONS": "Teatised",
-    "CLOUD_SYNC": "Pilve Sünk",
+    "DECEMBER": "December",
+    "CHAT": "CHAT",
+    "ACTIVITY": "ACTIVITY",
+    "FRIENDS": "Friends",
+    "APP_SERVERS": "Application Servers",
+    "USER_STATS": "User Stats",
+    "EVENTS": "Events",
+    "NOTES": "Notes",
+    "QUICK_SETTINGS": "Quick Settings",
+    "NOTIFICATIONS": "Notifications",
+    "CLOUD_SYNC": "Cloud Sync",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Hiljutine",
-    "START_NEW_CHAT": "Alusta Uut Vestlust",
-    "BACK": "Tagasi",
-    "CALL": "Helista",
-    "MORE": "Rohkem",
-    "SEND_MESSAGE": "Saada sõnum",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "LICENSE": "Litsents",
-    "NEW_TOKEN": "Uus Luba",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-mail Kellele",
-    "TOKEN": "Luba",
-    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
-    "WARNING": "Hoiatus",
+    "RECENT": "Recent",
+    "START_NEW_CHAT": "Start New Chat",
+    "BACK": "Back",
+    "CALL": "Call",
+    "MORE": "More",
+    "SEND_MESSAGE": "Send message",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
+    "EXPIRATION_DATE": "Expiration Date",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "LICENSE": "License",
+    "NEW_TOKEN": "New Token",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email To",
+    "TOKEN": "Token",
+    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
+    "WARNING": "Warning",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik Väli"
+      "NAME_REQUIRED": "Mandatory Field"
     }
   }
 }
index c0ce982..c3cf8da 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Uuendage oma parooli",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "PASSWORD": "Parool",
-    "PASSWORD_CONFIRM": "Parool (Kinnita)",
-    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
-    "GO_BACK": "Mine tagasi sisselogimise lehele",
-    "PASSWORD_RESET": "Parooli Uuendamine",
-    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
-    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
+    "TITLE": "Reset your password",
+    "EMAIL_ADRESS": "Email address",
+    "PASSWORD": "Password",
+    "PASSWORD_CONFIRM": "Password (Confirm)",
+    "UPDATE_PASSWORD": "RESET MY PASSWORD",
+    "GO_BACK": "Go back to login",
+    "PASSWORD_RESET": "Password Reset",
+    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
-      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
-      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "Email field is required",
+      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
+      "PASSWORD_REQUIRED": "Password field is required",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index 05c0e62..7bb2214 100644 (file)
@@ -30,7 +30,6 @@
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "WHATSAPP": "Whatsapp connector",
-    "WAITINGQUEUECALLS": "Waiting queue calls",
     "WEBRTCSUPPORT": "WebRTC Support",
     "REGISTERED": "Registered",
     "NOT_REGISTERED": "Not registered",
index 5470b3d..7e3c26d 100644 (file)
@@ -12,7 +12,6 @@
     "REQUIREMENTS": "Requisiti",
     "LICENSE": "Licenza",
     "HTTPS": "HTTPS",
-    "WAITINGQUEUECALLS": "Chiamate in attesa",
     "WEBRTCSUPPORT": "Supporto WebRTC",
     "REGISTERED": "Registrato",
     "NOT_REGISTERED": "Non Registrato",
index 474eaf5..d04a4ab 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.6414467d.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.5b258a76.js"></script>
+  <script src="scripts/app.d44c05b7.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.5b258a76.js
rename to public/scripts/app.d44c05b7.js
index c747ef3..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",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,W),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(U()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!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 98%
rename from public/styles/app.6414467d.css
rename to public/styles/app.d45f5a7f.css
index 147ae28..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}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{left:25px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.badge-count{position:absolute;top:1px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.queues-call-count{left:27px}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[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 81612ca..f6bd14f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc87a=['VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0xc87a,0xfb));var _0xac87=function(_0x13c04b,_0x4d2a4d){_0x13c04b=_0x13c04b-0x0;var _0x575ce6=_0xc87a[_0x13c04b];return _0x575ce6;};'use strict';var Sequelize=require(_0xac87('0x0'));module[_0xac87('0x1')]={'name':{'type':Sequelize[_0xac87('0x2')],'get':function(_0x43d566){return this[_0xac87('0x3')](_0xac87('0x4'));}},'action':{'type':Sequelize[_0xac87('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0xac87('0x6'),_0xac87('0x7'),_0xac87('0x8'),_0xac87('0x9'),_0xac87('0xa'),_0xac87('0xb'),_0xac87('0xc'),_0xac87('0xd')]],'msg':_0xac87('0xe')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xac87('0x5')](0x1000),'comment':_0xac87('0xf')},'data2':{'type':Sequelize[_0xac87('0x5')](0x1000),'comment':_0xac87('0x10')},'data3':{'type':Sequelize[_0xac87('0x5')](0x1000),'comment':_0xac87('0x11')},'data4':{'type':Sequelize[_0xac87('0x5')](0x1000),'comments':_0xac87('0x12')},'data5':{'type':Sequelize[_0xac87('0x5')](0x1000),'comments':_0xac87('0x13')},'data6':{'type':Sequelize['STRING'],'comments':_0xac87('0x14')},'data7':{'type':Sequelize[_0xac87('0x15')],'comments':_0xac87('0x16')}};
\ No newline at end of file
+var _0x75ca=['Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','jscripty','browser','bot','script'];(function(_0x4a29a9,_0x58cd04){var _0x386570=function(_0x1d2d09){while(--_0x1d2d09){_0x4a29a9['push'](_0x4a29a9['shift']());}};_0x386570(++_0x58cd04);}(_0x75ca,0xd1));var _0xa75c=function(_0x35d3a8,_0x44406a){_0x35d3a8=_0x35d3a8-0x0;var _0x182378=_0x75ca[_0x35d3a8];return _0x182378;};'use strict';var Sequelize=require('sequelize');module[_0xa75c('0x0')]={'name':{'type':Sequelize[_0xa75c('0x1')],'get':function(_0x5df765){return this[_0xa75c('0x2')](_0xa75c('0x3'));}},'action':{'type':Sequelize[_0xa75c('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xa75c('0x5'),_0xa75c('0x6'),'motionbar',_0xa75c('0x7'),'urlForward',_0xa75c('0x8'),_0xa75c('0x9'),_0xa75c('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xa75c('0xb')},'data1':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xc')},'data2':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xd')},'data3':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comment':_0xa75c('0xe')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xa75c('0xf')},'data5':{'type':Sequelize[_0xa75c('0x4')](0x1000),'comments':_0xa75c('0x10')},'data6':{'type':Sequelize[_0xa75c('0x4')],'comments':_0xa75c('0x11')},'data7':{'type':Sequelize[_0xa75c('0x12')],'comments':_0xa75c('0x13')}};
\ No newline at end of file
index a1777cc..1228455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x198c=['querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','destroy','error','stack','name','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','to-csv'];(function(_0x2fcadf,_0x401da6){var _0x2a2c05=function(_0x54d612){while(--_0x54d612){_0x2fcadf['push'](_0x2fcadf['shift']());}};_0x2a2c05(++_0x401da6);}(_0x198c,0xd8));var _0xc198=function(_0x6a259,_0x10fd04){_0x6a259=_0x6a259-0x0;var _0xd9640d=_0x198c[_0x6a259];return _0xd9640d;};'use strict';var emlformat=require(_0xc198('0x0'));var rimraf=require(_0xc198('0x1'));var zipdir=require(_0xc198('0x2'));var jsonpatch=require(_0xc198('0x3'));var rp=require(_0xc198('0x4'));var moment=require(_0xc198('0x5'));var BPromise=require(_0xc198('0x6'));var Mustache=require(_0xc198('0x7'));var util=require(_0xc198('0x8'));var path=require(_0xc198('0x9'));var sox=require(_0xc198('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc198('0xb'));var squel=require(_0xc198('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc198('0xd'));var querystring=require(_0xc198('0xe'));var Papa=require(_0xc198('0xf'));var Redis=require('ioredis');var authService=require(_0xc198('0x10'));var qs=require(_0xc198('0x11'));var as=require(_0xc198('0x12'));var hardwareService=require(_0xc198('0x13'));var logger=require(_0xc198('0x14'))('api');var utils=require(_0xc198('0x15'));var config=require(_0xc198('0x16'));var licenseUtil=require(_0xc198('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xca46e0,_0x58669f){_0x58669f=_0x58669f||0xcc;return function(_0x151e05){if(_0x151e05){return _0xca46e0[_0xc198('0x18')](_0x58669f);}return _0xca46e0[_0xc198('0x19')](_0x58669f)[_0xc198('0x1a')]();};}function respondWithResult(_0x698bdc,_0x12bf5a){_0x12bf5a=_0x12bf5a||0xc8;return function(_0x2a727e){if(_0x2a727e){return _0x698bdc['status'](_0x12bf5a)[_0xc198('0x1b')](_0x2a727e);}};}function respondWithFilteredResult(_0x3c08e5,_0x375c53){return function(_0x2014a6){if(_0x2014a6){var _0x20b58a=typeof _0x375c53['offset']===_0xc198('0x1c')&&typeof _0x375c53[_0xc198('0x1d')]===_0xc198('0x1c');var _0x2a4292=_0x2014a6[_0xc198('0x1e')];var _0x482b66=_0x20b58a?0x0:_0x375c53[_0xc198('0x1f')];var _0x2ff38a=_0x20b58a?_0x2014a6['count']:_0x375c53[_0xc198('0x1f')]+_0x375c53[_0xc198('0x1d')];var _0x5e0f59;if(_0x2ff38a>=_0x2a4292){_0x2ff38a=_0x2a4292;_0x5e0f59=0xc8;}else{_0x5e0f59=0xce;}_0x3c08e5[_0xc198('0x19')](_0x5e0f59);return _0x3c08e5['set'](_0xc198('0x20'),_0x482b66+'-'+_0x2ff38a+'/'+_0x2a4292)[_0xc198('0x1b')](_0x2014a6);}return null;};}function patchUpdates(_0x198c12){return function(_0x32c441){try{jsonpatch[_0xc198('0x21')](_0x32c441,_0x198c12,!![]);}catch(_0x45f85b){return BPromise[_0xc198('0x22')](_0x45f85b);}return _0x32c441['save']();};}function saveUpdates(_0x14ac9d,_0x15372c){return function(_0x58a3d3){if(_0x58a3d3){return _0x58a3d3[_0xc198('0x23')](_0x14ac9d)[_0xc198('0x24')](function(_0x2a9591){return _0x2a9591;});}return null;};}function removeEntity(_0xe72792,_0x447720){return function(_0x28f291){if(_0x28f291){return _0x28f291[_0xc198('0x25')]()[_0xc198('0x24')](function(){_0xe72792[_0xc198('0x19')](0xcc)[_0xc198('0x1a')]();});}};}function handleEntityNotFound(_0xc4d79e,_0x17eb3f){return function(_0x1bedc0){if(!_0x1bedc0){_0xc4d79e[_0xc198('0x18')](0x194);}return _0x1bedc0;};}function handleError(_0x15b912,_0x316a98){_0x316a98=_0x316a98||0x1f4;return function(_0x3873ee){logger[_0xc198('0x26')](_0x3873ee[_0xc198('0x27')]);if(_0x3873ee[_0xc198('0x28')]){delete _0x3873ee[_0xc198('0x28')];}_0x15b912[_0xc198('0x19')](_0x316a98)['send'](_0x3873ee);};}exports[_0xc198('0x23')]=function(_0x125ab2,_0x2baaad){if(_0x125ab2[_0xc198('0x29')]['id']){delete _0x125ab2[_0xc198('0x29')]['id'];}return db[_0xc198('0x2a')][_0xc198('0x2b')]({'where':{'id':_0x125ab2[_0xc198('0x2c')]['id']}})[_0xc198('0x24')](handleEntityNotFound(_0x2baaad,null))[_0xc198('0x24')](saveUpdates(_0x125ab2['body'],null))[_0xc198('0x24')](respondWithResult(_0x2baaad,null))[_0xc198('0x2d')](handleError(_0x2baaad,null));};exports[_0xc198('0x25')]=function(_0x957777,_0x5c519c){return db['Action'][_0xc198('0x2b')]({'where':{'id':_0x957777[_0xc198('0x2c')]['id']}})[_0xc198('0x24')](handleEntityNotFound(_0x5c519c,null))[_0xc198('0x24')](removeEntity(_0x5c519c,null))[_0xc198('0x2d')](handleError(_0x5c519c,null));};
\ No newline at end of file
+var _0xd825=['squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','body','Action','find','params','catch','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xd825,0x7f));var _0x5d82=function(_0x19c0b9,_0xc64c4a){_0x19c0b9=_0x19c0b9-0x0;var _0xb07c11=_0xd825[_0x19c0b9];return _0xb07c11;};'use strict';var emlformat=require(_0x5d82('0x0'));var rimraf=require(_0x5d82('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5d82('0x2'));var rp=require(_0x5d82('0x3'));var moment=require('moment');var BPromise=require(_0x5d82('0x4'));var Mustache=require(_0x5d82('0x5'));var util=require(_0x5d82('0x6'));var path=require(_0x5d82('0x7'));var sox=require(_0x5d82('0x8'));var csv=require('to-csv');var ejs=require(_0x5d82('0x9'));var fs=require('fs');var fs_extra=require(_0x5d82('0xa'));var _=require('lodash');var squel=require(_0x5d82('0xb'));var crypto=require(_0x5d82('0xc'));var jsforce=require(_0x5d82('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5d82('0xe'));var Redis=require('ioredis');var authService=require(_0x5d82('0xf'));var qs=require(_0x5d82('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d82('0x11'));var logger=require(_0x5d82('0x12'))(_0x5d82('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5d82('0x14'));var db=require(_0x5d82('0x15'))['db'];function respondWithStatusCode(_0x1a1758,_0x136f88){_0x136f88=_0x136f88||0xcc;return function(_0x5939e1){if(_0x5939e1){return _0x1a1758[_0x5d82('0x16')](_0x136f88);}return _0x1a1758[_0x5d82('0x17')](_0x136f88)['end']();};}function respondWithResult(_0x1405bf,_0x32ad04){_0x32ad04=_0x32ad04||0xc8;return function(_0x1e73f6){if(_0x1e73f6){return _0x1405bf[_0x5d82('0x17')](_0x32ad04)[_0x5d82('0x18')](_0x1e73f6);}};}function respondWithFilteredResult(_0x22bdf5,_0x25941f){return function(_0xe73bbf){if(_0xe73bbf){var _0x47dd6d=typeof _0x25941f[_0x5d82('0x19')]===_0x5d82('0x1a')&&typeof _0x25941f[_0x5d82('0x1b')]===_0x5d82('0x1a');var _0x27dfc3=_0xe73bbf[_0x5d82('0x1c')];var _0x5dee15=_0x47dd6d?0x0:_0x25941f[_0x5d82('0x19')];var _0x369deb=_0x47dd6d?_0xe73bbf['count']:_0x25941f[_0x5d82('0x19')]+_0x25941f['limit'];var _0x42ba07;if(_0x369deb>=_0x27dfc3){_0x369deb=_0x27dfc3;_0x42ba07=0xc8;}else{_0x42ba07=0xce;}_0x22bdf5[_0x5d82('0x17')](_0x42ba07);return _0x22bdf5[_0x5d82('0x1d')](_0x5d82('0x1e'),_0x5dee15+'-'+_0x369deb+'/'+_0x27dfc3)[_0x5d82('0x18')](_0xe73bbf);}return null;};}function patchUpdates(_0xc9cd01){return function(_0x5b953c){try{jsonpatch[_0x5d82('0x1f')](_0x5b953c,_0xc9cd01,!![]);}catch(_0x189c1e){return BPromise[_0x5d82('0x20')](_0x189c1e);}return _0x5b953c[_0x5d82('0x21')]();};}function saveUpdates(_0x1a7e7e,_0x527027){return function(_0x439898){if(_0x439898){return _0x439898[_0x5d82('0x22')](_0x1a7e7e)[_0x5d82('0x23')](function(_0x1e76b8){return _0x1e76b8;});}return null;};}function removeEntity(_0x40b1af,_0x541ee0){return function(_0x2cb872){if(_0x2cb872){return _0x2cb872[_0x5d82('0x24')]()[_0x5d82('0x23')](function(){_0x40b1af[_0x5d82('0x17')](0xcc)[_0x5d82('0x25')]();});}};}function handleEntityNotFound(_0x222edb,_0xc36c88){return function(_0x5ed308){if(!_0x5ed308){_0x222edb[_0x5d82('0x16')](0x194);}return _0x5ed308;};}function handleError(_0x18193e,_0x34fa54){_0x34fa54=_0x34fa54||0x1f4;return function(_0xa8c593){logger[_0x5d82('0x26')](_0xa8c593[_0x5d82('0x27')]);if(_0xa8c593[_0x5d82('0x28')]){delete _0xa8c593[_0x5d82('0x28')];}_0x18193e['status'](_0x34fa54)['send'](_0xa8c593);};}exports[_0x5d82('0x22')]=function(_0x3d8df6,_0x23086a){if(_0x3d8df6['body']['id']){delete _0x3d8df6[_0x5d82('0x29')]['id'];}return db[_0x5d82('0x2a')][_0x5d82('0x2b')]({'where':{'id':_0x3d8df6[_0x5d82('0x2c')]['id']}})[_0x5d82('0x23')](handleEntityNotFound(_0x23086a,null))[_0x5d82('0x23')](saveUpdates(_0x3d8df6[_0x5d82('0x29')],null))[_0x5d82('0x23')](respondWithResult(_0x23086a,null))[_0x5d82('0x2d')](handleError(_0x23086a,null));};exports['destroy']=function(_0x28a9f6,_0x207137){return db[_0x5d82('0x2a')][_0x5d82('0x2b')]({'where':{'id':_0x28a9f6[_0x5d82('0x2c')]['id']}})[_0x5d82('0x23')](handleEntityNotFound(_0x207137,null))[_0x5d82('0x23')](removeEntity(_0x207137,null))[_0x5d82('0x2d')](handleError(_0x207137,null));};
\ No newline at end of file
index ffadaa5..eb164e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x557d=['request-promise','path','exports','define','Action','lodash','util','../../config/logger','api'];(function(_0xc976c5,_0x2db376){var _0x4352ee=function(_0x133dff){while(--_0x133dff){_0xc976c5['push'](_0xc976c5['shift']());}};_0x4352ee(++_0x2db376);}(_0x557d,0xcb));var _0xd557=function(_0x3faff0,_0x8dde90){_0x3faff0=_0x3faff0-0x0;var _0x482657=_0x557d[_0x3faff0];return _0x482657;};'use strict';var _=require(_0xd557('0x0'));var util=require(_0xd557('0x1'));var logger=require(_0xd557('0x2'))(_0xd557('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd557('0x4'));var fs=require('fs');var path=require(_0xd557('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./action.attributes');module[_0xd557('0x6')]=function(_0x598348,_0x477de0){return _0x598348[_0xd557('0x7')](_0xd557('0x8'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc260=['request-promise','path','../../config/environment','exports','define','Action','tools_actions','lodash','util','../../config/logger','api','moment'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0xc260,0x10f));var _0x0c26=function(_0x5e5008,_0x533770){_0x5e5008=_0x5e5008-0x0;var _0x3782c4=_0xc260[_0x5e5008];return _0x3782c4;};'use strict';var _=require(_0x0c26('0x0'));var util=require(_0x0c26('0x1'));var logger=require(_0x0c26('0x2'))(_0x0c26('0x3'));var moment=require(_0x0c26('0x4'));var BPromise=require('bluebird');var rp=require(_0x0c26('0x5'));var fs=require('fs');var path=require(_0x0c26('0x6'));var rimraf=require('rimraf');var config=require(_0x0c26('0x7'));var attributes=require('./action.attributes');module[_0x0c26('0x8')]=function(_0x5383e2,_0x292992){return _0x5383e2[_0x0c26('0x9')](_0x0c26('0xa'),attributes,{'tableName':_0x0c26('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34966cf..9cf61ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4e85ec,_0x2913b6){var _0x1c1ab3=function(_0x2c55b6){while(--_0x2c55b6){_0x4e85ec['push'](_0x4e85ec['shift']());}};_0x1c1ab3(++_0x2913b6);}(_0x5fab,0x177));var _0xb5fa=function(_0x53b398,_0x39bfd8){_0x53b398=_0x53b398-0x0;var _0x32c9ed=_0x5fab[_0x53b398];return _0x32c9ed;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
+var _0x1261=['then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\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(_0xf0cd3c,_0x309795){var _0x5f2125=function(_0x307f82){while(--_0x307f82){_0xf0cd3c['push'](_0xf0cd3c['shift']());}};_0x5f2125(++_0x309795);}(_0x1261,0x144));var _0x1126=function(_0xd8f7bd,_0x45dc8c){_0xd8f7bd=_0xd8f7bd-0x0;var _0x1bd5ee=_0x1261[_0xd8f7bd];return _0x1bd5ee;};'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')]('Action,\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
index 2fdee67..4fe4433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a2=['put','/:id','isAuthenticated','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x23807f,_0x3c5892){var _0x5351a7=function(_0x38a5e5){while(--_0x38a5e5){_0x23807f['push'](_0x23807f['shift']());}};_0x5351a7(++_0x3c5892);}(_0xd8a2,0xbc));var _0x2d8a=function(_0x1d3c5a,_0x287abf){_0x1d3c5a=_0x1d3c5a-0x0;var _0x689b1c=_0xd8a2[_0x1d3c5a];return _0x689b1c;};'use strict';var multer=require('multer');var util=require(_0x2d8a('0x0'));var path=require(_0x2d8a('0x1'));var timeout=require(_0x2d8a('0x2'));var express=require('express');var router=express[_0x2d8a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2d8a('0x4'));var interaction=require(_0x2d8a('0x5'));var config=require(_0x2d8a('0x6'));var controller=require(_0x2d8a('0x7'));router[_0x2d8a('0x8')](_0x2d8a('0x9'),auth[_0x2d8a('0xa')](),controller['update']);router[_0x2d8a('0xb')]('/:id',auth[_0x2d8a('0xa')](),controller[_0x2d8a('0xc')]);module[_0x2d8a('0xd')]=router;
\ No newline at end of file
+var _0xdd18=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','delete','destroy','exports','util'];(function(_0xb7b878,_0x5c3b92){var _0x3c84b9=function(_0x21d5a2){while(--_0x21d5a2){_0xb7b878['push'](_0xb7b878['shift']());}};_0x3c84b9(++_0x5c3b92);}(_0xdd18,0xd1));var _0x8dd1=function(_0x36e248,_0x47ec86){_0x36e248=_0x36e248-0x0;var _0x392b69=_0xdd18[_0x36e248];return _0x392b69;};'use strict';var multer=require('multer');var util=require(_0x8dd1('0x0'));var path=require(_0x8dd1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8dd1('0x2')]();var fs_extra=require(_0x8dd1('0x3'));var auth=require(_0x8dd1('0x4'));var interaction=require(_0x8dd1('0x5'));var config=require(_0x8dd1('0x6'));var controller=require(_0x8dd1('0x7'));router[_0x8dd1('0x8')](_0x8dd1('0x9'),auth[_0x8dd1('0xa')](),controller['update']);router[_0x8dd1('0xb')](_0x8dd1('0x9'),auth[_0x8dd1('0xa')](),controller[_0x8dd1('0xc')]);module[_0x8dd1('0xd')]=router;
\ No newline at end of file
index d8e7471..a405806 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(_0x3d5f84,_0x569548){_0x3d5f84=_0x3d5f84-0x0;var _0x1981b8=_0x7da7[_0x3d5f84];return _0x1981b8;};'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 _0x1cb9=['TEXT','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1ffdbc,_0x93e190){_0x1ffdbc=_0x1ffdbc-0x0;var _0x4b9281=_0x1cb9[_0x1ffdbc];return _0x4b9281;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x91cb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x91cb('0x1')]},'parent':{'type':Sequelize[_0x91cb('0x1')]},'table':{'type':Sequelize[_0x91cb('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x91cb('0x2')]}};
\ No newline at end of file
index 9935a46..34c500e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe455=['ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','end','error','stack','name','send','index','map','AnalyticCustomReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','filter','where','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','create','user','role','Reports','UserProfileSection','find','userProfileId','autoAssociation','catch','body','preview','join','left_join','right_join','cross_join','SUM(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','metric','field','function','replace','format','groupBy','orderBy','order','DESC','alias','joins','parse','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','table','parentKey','conditions','clone','debug','toString','sequelize','SELECT','IS\x20NOT\x20NULL','fullPath','%s-%s.%s','randomstring','output','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','countTable','COUNT(*)','run','COUNT(%s)','COUNT(DISTINCT\x20%s)','Limited\x20Query:','QueryTypes','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','fs-extra','desk.js'];(function(_0x41a2ae,_0x43594d){var _0x2c4445=function(_0x113f29){while(--_0x113f29){_0x41a2ae['push'](_0x41a2ae['shift']());}};_0x2c4445(++_0x43594d);}(_0xe455,0x1ca));var _0x5e45=function(_0x2ac047,_0x18b398){_0x2ac047=_0x2ac047-0x0;var _0x35aa18=_0xe455[_0x2ac047];return _0x35aa18;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e45('0x0'));var zipdir=require(_0x5e45('0x1'));var jsonpatch=require(_0x5e45('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5e45('0x3'));var Mustache=require(_0x5e45('0x4'));var util=require('util');var path=require(_0x5e45('0x5'));var sox=require(_0x5e45('0x6'));var csv=require(_0x5e45('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5e45('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5e45('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5e45('0xa'));var authService=require(_0x5e45('0xb'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e45('0xc'));var logger=require(_0x5e45('0xd'))('api');var utils=require(_0x5e45('0xe'));var config=require('../../config/environment');var licenseUtil=require(_0x5e45('0xf'));var db=require('../../mysqldb')['db'];var dbH=require(_0x5e45('0x10'))['dbH'];function respondWithStatusCode(_0x324baa,_0x84ba1c){_0x84ba1c=_0x84ba1c||0xcc;return function(_0xe39656){if(_0xe39656){return _0x324baa[_0x5e45('0x11')](_0x84ba1c);}return _0x324baa[_0x5e45('0x12')](_0x84ba1c)['end']();};}function respondWithResult(_0x587cba,_0x358e4f){_0x358e4f=_0x358e4f||0xc8;return function(_0x130ebc){if(_0x130ebc){return _0x587cba[_0x5e45('0x12')](_0x358e4f)[_0x5e45('0x13')](_0x130ebc);}};}function respondWithFilteredResult(_0x514b2a,_0x1ea776){return function(_0x39ed41){if(_0x39ed41){var _0x2722fe=typeof _0x1ea776['offset']===_0x5e45('0x14')&&typeof _0x1ea776[_0x5e45('0x15')]===_0x5e45('0x14');var _0x35e27f=_0x39ed41[_0x5e45('0x16')];var _0x494c52=_0x2722fe?0x0:_0x1ea776[_0x5e45('0x17')];var _0x397332=_0x2722fe?_0x39ed41['count']:_0x1ea776[_0x5e45('0x17')]+_0x1ea776['limit'];var _0x19ec60;if(_0x397332>=_0x35e27f){_0x397332=_0x35e27f;_0x19ec60=0xc8;}else{_0x19ec60=0xce;}_0x514b2a[_0x5e45('0x12')](_0x19ec60);return _0x514b2a[_0x5e45('0x18')]('Content-Range',_0x494c52+'-'+_0x397332+'/'+_0x35e27f)[_0x5e45('0x13')](_0x39ed41);}return null;};}function patchUpdates(_0x12dbef){return function(_0x3d21a3){try{jsonpatch['apply'](_0x3d21a3,_0x12dbef,!![]);}catch(_0x5892c9){return BPromise[_0x5e45('0x19')](_0x5892c9);}return _0x3d21a3[_0x5e45('0x1a')]();};}function saveUpdates(_0x119318,_0x5babe7){return function(_0x51d7c3){if(_0x51d7c3){return _0x51d7c3[_0x5e45('0x1b')](_0x119318)[_0x5e45('0x1c')](function(_0x258626){return _0x258626;});}return null;};}function removeEntity(_0x15c231,_0x13c1f8){return function(_0x186627){if(_0x186627){return _0x186627[_0x5e45('0x1d')]()[_0x5e45('0x1c')](function(){var _0xb9758d=_0x186627[_0x5e45('0x1e')]({'plain':!![]});var _0x4fe07b=_0x5e45('0x1f');return db[_0x5e45('0x20')]['destroy']({'where':{'type':_0x4fe07b,'resourceId':_0xb9758d['id']}})[_0x5e45('0x1c')](function(){return _0x186627;});})[_0x5e45('0x1c')](function(){_0x15c231[_0x5e45('0x12')](0xcc)[_0x5e45('0x21')]();});}};}function handleEntityNotFound(_0x2f2af6,_0x3a30c6){return function(_0x5e5f32){if(!_0x5e5f32){_0x2f2af6[_0x5e45('0x11')](0x194);}return _0x5e5f32;};}function handleError(_0xf053d4,_0x41e4ea){_0x41e4ea=_0x41e4ea||0x1f4;return function(_0x23ac76){logger[_0x5e45('0x22')](_0x23ac76[_0x5e45('0x23')]);if(_0x23ac76[_0x5e45('0x24')]){delete _0x23ac76[_0x5e45('0x24')];}_0xf053d4['status'](_0x41e4ea)[_0x5e45('0x25')](_0x23ac76);};}exports[_0x5e45('0x26')]=function(_0x10d1bb,_0x574a24){var _0x36f442={},_0x23f56a={},_0x1e142c={'count':0x0,'rows':[]};var _0x41e761=_[_0x5e45('0x27')](db[_0x5e45('0x28')]['rawAttributes'],function(_0x192015){return{'name':_0x192015[_0x5e45('0x29')],'type':_0x192015[_0x5e45('0x2a')][_0x5e45('0x2b')]};});_0x23f56a[_0x5e45('0x2c')]=_[_0x5e45('0x27')](_0x41e761,'name');_0x23f56a[_0x5e45('0x2d')]=_[_0x5e45('0x2e')](_0x10d1bb[_0x5e45('0x2d')]);_0x23f56a[_0x5e45('0x2f')]=_['intersection'](_0x23f56a[_0x5e45('0x2c')],_0x23f56a[_0x5e45('0x2d')]);_0x36f442['attributes']=_[_0x5e45('0x30')](_0x23f56a[_0x5e45('0x2c')],qs[_0x5e45('0x31')](_0x10d1bb[_0x5e45('0x2d')][_0x5e45('0x31')]));_0x36f442[_0x5e45('0x32')]=_0x36f442['attributes'][_0x5e45('0x33')]?_0x36f442[_0x5e45('0x32')]:_0x23f56a[_0x5e45('0x2c')];if(!_0x10d1bb[_0x5e45('0x2d')]['hasOwnProperty'](_0x5e45('0x34'))){_0x36f442[_0x5e45('0x15')]=qs[_0x5e45('0x15')](_0x10d1bb['query'][_0x5e45('0x15')]);_0x36f442['offset']=qs[_0x5e45('0x17')](_0x10d1bb['query'][_0x5e45('0x17')]);}_0x36f442['order']=qs[_0x5e45('0x35')](_0x10d1bb[_0x5e45('0x2d')][_0x5e45('0x35')]);_0x36f442['where']=qs['filters'](_['pick'](_0x10d1bb[_0x5e45('0x2d')],_0x23f56a['filters']),_0x41e761);if(_0x10d1bb['query'][_0x5e45('0x36')]){_0x36f442[_0x5e45('0x37')]=_[_0x5e45('0x38')](_0x36f442[_0x5e45('0x37')],{'$or':_[_0x5e45('0x27')](_0x41e761,function(_0x316ab5){if(_0x316ab5[_0x5e45('0x2a')]!=='VIRTUAL'){var _0x3aa1b7={};_0x3aa1b7[_0x316ab5['name']]={'$like':'%'+_0x10d1bb[_0x5e45('0x2d')][_0x5e45('0x36')]+'%'};return _0x3aa1b7;}})});}_0x36f442=_[_0x5e45('0x38')]({},_0x36f442,_0x10d1bb[_0x5e45('0x39')]);var _0x4e1cad={'where':_0x36f442[_0x5e45('0x37')]};return db[_0x5e45('0x28')][_0x5e45('0x16')](_0x4e1cad)[_0x5e45('0x1c')](function(_0x250778){_0x1e142c['count']=_0x250778;if(_0x10d1bb[_0x5e45('0x2d')][_0x5e45('0x3a')]){_0x36f442[_0x5e45('0x3b')]=[{'all':!![]}];}return db[_0x5e45('0x28')][_0x5e45('0x3c')](_0x36f442);})[_0x5e45('0x1c')](function(_0x54a764){_0x1e142c[_0x5e45('0x3d')]=_0x54a764;return _0x1e142c;})[_0x5e45('0x1c')](respondWithFilteredResult(_0x574a24,_0x36f442))['catch'](handleError(_0x574a24,null));};exports[_0x5e45('0x3e')]=function(_0x4b294c,_0x429b1d){var _0x54f901={'raw':![],'where':{'id':_0x4b294c[_0x5e45('0x3f')]['id']}},_0x399c98={};_0x399c98[_0x5e45('0x2c')]=_['keys'](db[_0x5e45('0x28')][_0x5e45('0x40')]);_0x399c98[_0x5e45('0x2d')]=_[_0x5e45('0x2e')](_0x4b294c['query']);_0x399c98[_0x5e45('0x2f')]=_[_0x5e45('0x30')](_0x399c98[_0x5e45('0x2c')],_0x399c98[_0x5e45('0x2d')]);_0x54f901[_0x5e45('0x32')]=_[_0x5e45('0x30')](_0x399c98[_0x5e45('0x2c')],qs[_0x5e45('0x31')](_0x4b294c[_0x5e45('0x2d')]['fields']));_0x54f901[_0x5e45('0x32')]=_0x54f901[_0x5e45('0x32')][_0x5e45('0x33')]?_0x54f901[_0x5e45('0x32')]:_0x399c98[_0x5e45('0x2c')];if(_0x4b294c[_0x5e45('0x2d')][_0x5e45('0x3a')]){_0x54f901[_0x5e45('0x3b')]=[{'all':!![]}];}_0x54f901=_[_0x5e45('0x38')]({},_0x54f901,_0x4b294c[_0x5e45('0x39')]);return db[_0x5e45('0x28')]['find'](_0x54f901)[_0x5e45('0x1c')](handleEntityNotFound(_0x429b1d,null))[_0x5e45('0x1c')](respondWithResult(_0x429b1d,null))['catch'](handleError(_0x429b1d,null));};exports[_0x5e45('0x41')]=function(_0x5b9c22,_0x2a21e7){return db[_0x5e45('0x28')][_0x5e45('0x41')](_0x5b9c22['body'],{})[_0x5e45('0x1c')](function(_0x503933){var _0x595ab0=_0x5b9c22[_0x5e45('0x42')][_0x5e45('0x1e')]({'plain':!![]});if(!_0x595ab0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x595ab0[_0x5e45('0x43')]===_0x5e45('0x42')){var _0x5b44bc=_0x503933['get']({'plain':!![]});var _0x5611f1=_0x5e45('0x44');return db[_0x5e45('0x45')][_0x5e45('0x46')]({'where':{'name':_0x5611f1,'userProfileId':_0x595ab0[_0x5e45('0x47')]},'raw':!![]})[_0x5e45('0x1c')](function(_0x595bb0){if(_0x595bb0&&_0x595bb0[_0x5e45('0x48')]===0x0){return db[_0x5e45('0x20')][_0x5e45('0x41')]({'name':_0x5b44bc[_0x5e45('0x24')],'resourceId':_0x5b44bc['id'],'type':_0x5e45('0x1f'),'sectionId':_0x595bb0['id']},{})[_0x5e45('0x1c')](function(){return _0x503933;});}else{return _0x503933;}})[_0x5e45('0x49')](function(_0x455759){logger[_0x5e45('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x455759);throw _0x455759;});}return _0x503933;})[_0x5e45('0x1c')](respondWithResult(_0x2a21e7,0xc9))[_0x5e45('0x49')](handleError(_0x2a21e7,null));};exports['update']=function(_0x34048d,_0x503ab1){if(_0x34048d[_0x5e45('0x4a')]['id']){delete _0x34048d['body']['id'];}return db[_0x5e45('0x28')][_0x5e45('0x46')]({'where':{'id':_0x34048d[_0x5e45('0x3f')]['id']}})['then'](handleEntityNotFound(_0x503ab1,null))[_0x5e45('0x1c')](saveUpdates(_0x34048d['body'],null))['then'](respondWithResult(_0x503ab1,null))['catch'](handleError(_0x503ab1,null));};exports[_0x5e45('0x1d')]=function(_0xccdec5,_0x952303){return db[_0x5e45('0x28')][_0x5e45('0x46')]({'where':{'id':_0xccdec5[_0x5e45('0x3f')]['id']}})['then'](handleEntityNotFound(_0x952303,null))[_0x5e45('0x1c')](removeEntity(_0x952303,null))[_0x5e45('0x49')](handleError(_0x952303,null));};exports[_0x5e45('0x4b')]=function(_0x512327,_0x44c953){var _0x1bfa05=0xa;var _0x5ab2d3=[_0x5e45('0x4c'),_0x5e45('0x4d'),_0x5e45('0x4e'),_0x5e45('0x4f')];var _0x33eb5c={'SUM':_0x5e45('0x50'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5e45('0x51'),'MIN':_0x5e45('0x52'),'AVG':_0x5e45('0x53'),'GROUP_CONCAT':_0x5e45('0x54'),'GROUP_CONCAT ASC':_0x5e45('0x55'),'GROUP_CONCAT DESC':_0x5e45('0x56')};var _0x24639f={'SEC_TO_TIME':_0x5e45('0x57'),'DATE':_0x5e45('0x58'),'HOUR':_0x5e45('0x59'),'ROUND':_0x5e45('0x5a'),'UNIX_TIMESTAMP':_0x5e45('0x5b')};var _0x24e548=function(_0x37dd87){return!_[_0x5e45('0x5c')]([_0x5e45('0x5d'),'IS\x20NOT\x20NULL',_0x5e45('0x5e'),_0x5e45('0x5f')],_0x37dd87);};var _0x27e570=function(_0x2412b0){if(!_0x2412b0||!_0x2412b0['rules'][_0x5e45('0x33')]){return'';}for(var _0x523361='(',_0x552ed9=0x0;_0x552ed9<_0x2412b0[_0x5e45('0x60')][_0x5e45('0x33')];_0x552ed9+=0x1){_0x552ed9>0x0&&(_0x523361+='\x20'+_0x2412b0[_0x5e45('0x61')]+'\x20');_0x523361+=_0x2412b0[_0x5e45('0x60')][_0x552ed9][_0x5e45('0x62')]?_0x27e570(_0x2412b0[_0x5e45('0x60')][_0x552ed9][_0x5e45('0x62')]):_0x2412b0['rules'][_0x552ed9]['field']+'\x20'+_0x2412b0['rules'][_0x552ed9][_0x5e45('0x63')]+(_0x24e548(_0x2412b0['rules'][_0x552ed9][_0x5e45('0x63')])?'\x20'+_0x2412b0['rules'][_0x552ed9][_0x5e45('0x64')]:'');}return _0x523361+')';};var _0x3894d6={'where':{'id':_0x512327['params']['id']}},_0x3be32f,_0x4b5396,_0x417946,_0x4f43cc,_0x566923;_0x3894d6=_['merge']({},_0x3894d6,_0x512327[_0x5e45('0x39')]);return db[_0x5e45('0x28')][_0x5e45('0x46')](_0x3894d6)[_0x5e45('0x1c')](function(_0x166c4b){if(_0x166c4b){_0x3be32f=_0x166c4b;return _0x166c4b[_0x5e45('0x65')]();}return null;})['then'](function(_0x549290){if(_0x549290){if(!_0x549290[_0x5e45('0x33')]){throw new db[(_0x5e45('0x66'))][(_0x5e45('0x67'))](_0x5e45('0x68'),0x193);}_0x4b5396=_0x549290;return db[_0x5e45('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5e45('0x1c')](function(_0x5543ca){if(_0x5543ca){_0x417946=_[_0x5e45('0x6a')](_0x5543ca,'id');var _0x5f5ed5;var _0x14cd74=squel[_0x5e45('0x6b')]();_0x14cd74[_0x5e45('0x6c')](_0x3be32f['table']);for(var _0xe24d91=0x0;_0xe24d91<_0x4b5396['length'];_0xe24d91+=0x1){_0x5f5ed5=_0x4b5396[_0xe24d91][_0x5e45('0x6d')]?_0x417946[_0x4b5396[_0xe24d91][_0x5e45('0x6d')]][_0x5e45('0x6e')]:_0x4b5396[_0xe24d91][_0x5e45('0x6f')];_0x5f5ed5=_0x4b5396[_0xe24d91][_0x5e45('0x70')]?_[_0x5e45('0x71')](_0x33eb5c[_0x4b5396[_0xe24d91]['function']],'%s',_0x5f5ed5):_0x5f5ed5;_0x5f5ed5=_0x4b5396[_0xe24d91][_0x5e45('0x72')]?_['replace'](_0x24639f[_0x4b5396[_0xe24d91][_0x5e45('0x72')]],'%s',_0x5f5ed5):_0x5f5ed5;if(_0x4b5396[_0xe24d91][_0x5e45('0x73')]){_0x14cd74[_0x5e45('0x62')](_0x5f5ed5);}_0x4b5396[_0xe24d91][_0x5e45('0x74')]&&_0x14cd74[_0x5e45('0x75')](_0x5f5ed5,_0x4b5396[_0xe24d91][_0x5e45('0x74')]===_0x5e45('0x76')?![]:!![]);_0x14cd74['field'](_0x5f5ed5,_0x4b5396[_0xe24d91][_0x5e45('0x77')]||_0x5f5ed5);}if(_0x3be32f['joins']){_0x3be32f[_0x5e45('0x78')]=JSON[_0x5e45('0x79')](_0x3be32f['joins']);for(var _0xb11103=0x0;_0xb11103<_0x3be32f['joins'][_0x5e45('0x33')];_0xb11103+=0x1){if(_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x2a')]&&_[_0x5e45('0x5c')](_0x5ab2d3,_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x2a')])&&_0x3be32f[_0x5e45('0x78')][_0xb11103]['parentKey']&&_0x3be32f[_0x5e45('0x78')][_0xb11103]['foreignTable']&&_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x7a')]){_0x14cd74[_0x3be32f['joins'][_0xb11103]['type']](_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x7b')],null,util['format'](_0x5e45('0x7c'),_0x3be32f[_0x5e45('0x7d')],_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x7e')],_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x7b')],_0x3be32f[_0x5e45('0x78')][_0xb11103][_0x5e45('0x7a')]));}}}if(_0x3be32f['conditions']){_0x3be32f[_0x5e45('0x7f')]=JSON[_0x5e45('0x79')](_0x3be32f[_0x5e45('0x7f')]);_0x14cd74[_0x5e45('0x37')](_0x27e570(_0x3be32f[_0x5e45('0x7f')][_0x5e45('0x62')]));}_0x566923=_0x14cd74[_0x5e45('0x80')]();_0x14cd74[_0x5e45('0x15')](_0x1bfa05);_0x14cd74[_0x5e45('0x17')](0x0);logger[_0x5e45('0x81')]('Limited\x20Query:',_0x14cd74[_0x5e45('0x82')]());return dbH[_0x5e45('0x83')][_0x5e45('0x2d')](_0x14cd74[_0x5e45('0x82')](),{'type':dbH[_0x5e45('0x83')]['QueryTypes'][_0x5e45('0x84')]});}})[_0x5e45('0x1c')](respondWithResult(_0x44c953,null))[_0x5e45('0x49')](handleError(_0x44c953,null));};function runReport(_0x5d2317,_0x300029,_0x3248da){var _0x5c29aa=_0x300029[_0x5e45('0x24')];var _0x119d9d=0xa;var _0x4c4026=[_0x5e45('0x4c'),_0x5e45('0x4d'),_0x5e45('0x4e'),'cross_join'];var _0x372126={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5e45('0x51'),'MIN':_0x5e45('0x52'),'AVG':_0x5e45('0x53'),'GROUP_CONCAT':_0x5e45('0x54'),'GROUP_CONCAT ASC':_0x5e45('0x55'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x11e57f={'SEC_TO_TIME':_0x5e45('0x57'),'DATE':_0x5e45('0x58'),'HOUR':'HOUR(%s)','ROUND':_0x5e45('0x5a'),'UNIX_TIMESTAMP':_0x5e45('0x5b')};var _0x3aa043=function(_0x744063){return!_[_0x5e45('0x5c')]([_0x5e45('0x5d'),_0x5e45('0x85'),_0x5e45('0x5e'),_0x5e45('0x5f')],_0x744063);};var _0x474738=function(_0x273799){if(!_0x273799||!_0x273799[_0x5e45('0x60')]['length']){return'';}for(var _0x47b28f='(',_0x17475b=0x0;_0x17475b<_0x273799[_0x5e45('0x60')][_0x5e45('0x33')];_0x17475b+=0x1){_0x17475b>0x0&&(_0x47b28f+='\x20'+_0x273799[_0x5e45('0x61')]+'\x20');_0x47b28f+=_0x273799[_0x5e45('0x60')][_0x17475b][_0x5e45('0x62')]?_0x474738(_0x273799[_0x5e45('0x60')][_0x17475b][_0x5e45('0x62')]):_0x273799[_0x5e45('0x60')][_0x17475b][_0x5e45('0x6f')]+'\x20'+_0x273799['rules'][_0x17475b][_0x5e45('0x63')]+(_0x3aa043(_0x273799[_0x5e45('0x60')][_0x17475b][_0x5e45('0x63')])?'\x20'+_0x273799[_0x5e45('0x60')][_0x17475b]['value']:'');}return _0x47b28f+')';};var _0x2721e6={'where':{'id':_0x5d2317['id']}},_0x3464e0,_0x3a5c41,_0x47ff99,_0x13a6c4,_0x33d356;_0x2721e6=_[_0x5e45('0x38')]({},_0x2721e6,_0x3248da);return db['AnalyticCustomReport']['find'](_0x2721e6)['then'](function(_0x45703c){if(_0x45703c){_0x3464e0=_0x45703c;return _0x45703c[_0x5e45('0x65')]();}return null;})[_0x5e45('0x1c')](function(_0x268172){if(_0x268172){if(!_0x268172['length']){throw new db[(_0x5e45('0x66'))]['ValidationErrorItem'](_0x5e45('0x68'),0x193);}_0x3a5c41=_0x268172;return db[_0x5e45('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5e45('0x1c')](function(_0x5944b3){if(_0x5944b3){_0x47ff99=_[_0x5e45('0x6a')](_0x5944b3,'id');var _0x56a7cc;var _0x1c34fe=squel[_0x5e45('0x6b')]();_0x1c34fe[_0x5e45('0x6c')](_0x3464e0[_0x5e45('0x7d')]);for(var _0x1a9eec=0x0;_0x1a9eec<_0x3a5c41[_0x5e45('0x33')];_0x1a9eec+=0x1){_0x56a7cc=_0x3a5c41[_0x1a9eec][_0x5e45('0x6d')]?_0x47ff99[_0x3a5c41[_0x1a9eec][_0x5e45('0x6d')]][_0x5e45('0x6e')]:_0x3a5c41[_0x1a9eec]['field'];_0x56a7cc=_0x3a5c41[_0x1a9eec][_0x5e45('0x70')]?_['replace'](_0x372126[_0x3a5c41[_0x1a9eec][_0x5e45('0x70')]],'%s',_0x56a7cc):_0x56a7cc;_0x56a7cc=_0x3a5c41[_0x1a9eec]['format']?_[_0x5e45('0x71')](_0x11e57f[_0x3a5c41[_0x1a9eec][_0x5e45('0x72')]],'%s',_0x56a7cc):_0x56a7cc;if(_0x3a5c41[_0x1a9eec][_0x5e45('0x73')]){_0x1c34fe[_0x5e45('0x62')](_0x56a7cc);}_0x3a5c41[_0x1a9eec]['orderBy']&&_0x1c34fe[_0x5e45('0x75')](_0x56a7cc,_0x3a5c41[_0x1a9eec][_0x5e45('0x74')]==='DESC'?![]:!![]);_0x1c34fe['field'](_0x56a7cc,_0x3a5c41[_0x1a9eec][_0x5e45('0x77')]||_0x56a7cc);}if(_0x3464e0[_0x5e45('0x78')]){_0x3464e0[_0x5e45('0x78')]=JSON[_0x5e45('0x79')](_0x3464e0['joins']);for(var _0x503ff3=0x0;_0x503ff3<_0x3464e0[_0x5e45('0x78')][_0x5e45('0x33')];_0x503ff3+=0x1){if(_0x3464e0[_0x5e45('0x78')][_0x503ff3][_0x5e45('0x2a')]&&_['includes'](_0x4c4026,_0x3464e0[_0x5e45('0x78')][_0x503ff3]['type'])&&_0x3464e0[_0x5e45('0x78')][_0x503ff3][_0x5e45('0x7e')]&&_0x3464e0[_0x5e45('0x78')][_0x503ff3]['foreignTable']&&_0x3464e0[_0x5e45('0x78')][_0x503ff3]['foreignKey']){_0x1c34fe[_0x3464e0[_0x5e45('0x78')][_0x503ff3][_0x5e45('0x2a')]](_0x3464e0[_0x5e45('0x78')][_0x503ff3]['foreignTable'],null,util[_0x5e45('0x72')](_0x5e45('0x7c'),_0x3464e0[_0x5e45('0x7d')],_0x3464e0[_0x5e45('0x78')][_0x503ff3][_0x5e45('0x7e')],_0x3464e0['joins'][_0x503ff3][_0x5e45('0x7b')],_0x3464e0[_0x5e45('0x78')][_0x503ff3][_0x5e45('0x7a')]));}}}if(_0x3464e0[_0x5e45('0x7f')]){_0x3464e0[_0x5e45('0x7f')]=JSON[_0x5e45('0x79')](_0x3464e0[_0x5e45('0x7f')]);_0x1c34fe[_0x5e45('0x37')](_0x474738(_0x3464e0[_0x5e45('0x7f')][_0x5e45('0x62')]));}_0x33d356=_0x1c34fe['clone']();_0x1c34fe[_0x5e45('0x15')](_0x119d9d);_0x1c34fe[_0x5e45('0x17')](0x0);return;}})[_0x5e45('0x1c')](function(){if(_0x300029['output']==='web'){return null;}var _0x1ee5f5=_[_0x5e45('0x38')](_0x300029,{'name':_0x300029[_0x5e45('0x86')]||_0x300029[_0x5e45('0x24')]||_0x3464e0['name'],'basename':_0x5c29aa,'savename':util[_0x5e45('0x72')](_0x5e45('0x87'),_0x300029[_0x5e45('0x24')]||_0x3464e0[_0x5e45('0x24')],require(_0x5e45('0x88'))['generate'](0x4),_0x300029[_0x5e45('0x89')]||'csv'),'reportId':_0x3464e0['id'],'reportType':'custom'});return db[_0x5e45('0x8a')][_0x5e45('0x41')](_0x1ee5f5,{'raw':!![]});})['then'](function(_0x2a3b86){if(_0x3464e0['table']===_0x5e45('0x8b')){_0x33d356['where'](_0x3464e0[_0x5e45('0x7d')]+_0x5e45('0x8c'),_0x300029[_0x5e45('0x8d')],_0x300029[_0x5e45('0x8e')]);}else{_0x33d356[_0x5e45('0x37')](_0x3464e0[_0x5e45('0x7d')]+_0x5e45('0x8f'),_0x300029['startDate'],_0x300029['endDate']);}if(_0x2a3b86){logger['info'](_0x5e45('0x90'),_0x33d356[_0x5e45('0x82')]());require(_0x5e45('0x91'))[_0x5e45('0x92')](path['join'](__dirname,_0x5e45('0x93'),_0x2a3b86['output']),[_0x2a3b86['id'],_0x33d356['toString'](),path[_0x5e45('0x4c')](__dirname,_0x5e45('0x94'),_0x2a3b86['savename']),_0x5c29aa]);return _0x2a3b86;}else{var _0x40b6f5=squel[_0x5e45('0x6b')]();_0x40b6f5['from']('('+_0x33d356[_0x5e45('0x82')]()+')',_0x5e45('0x95'));_0x40b6f5[_0x5e45('0x6f')](_0x5e45('0x96'),'count');_0x33d356[_0x5e45('0x15')](_0x300029[_0x5e45('0x15')]||_0x119d9d);_0x33d356[_0x5e45('0x17')](_0x300029[_0x5e45('0x17')]||0x0);return dbH[_0x5e45('0x83')][_0x5e45('0x2d')](_0x40b6f5[_0x5e45('0x82')](),{'type':dbH[_0x5e45('0x83')]['QueryTypes'][_0x5e45('0x84')]})[_0x5e45('0x1c')](function(_0x855c08){if(!_0x855c08[_0x5e45('0x33')]){_0x13a6c4=0x0;}else{_0x13a6c4=_0x855c08[0x0]['count']||0x0;}return dbH[_0x5e45('0x83')][_0x5e45('0x2d')](_0x33d356[_0x5e45('0x82')](),{'type':dbH[_0x5e45('0x83')]['QueryTypes'][_0x5e45('0x84')]});})['then'](function(_0x27b70e){return{'rows':_0x27b70e||[],'count':_0x13a6c4};});}});}exports[_0x5e45('0x97')]=function(_0x33e4d5,_0x3d8265){return runReport(_0x33e4d5[_0x5e45('0x3f')],_0x33e4d5['query'],_0x33e4d5[_0x5e45('0x39')])['then'](respondWithResult(_0x3d8265,null))[_0x5e45('0x49')](handleError(_0x3d8265,null));};exports['runReport']=runReport;exports[_0x5e45('0x2d')]=function(_0x5519ad,_0x5376d1){var _0x184694=0xa;var _0x264fce=[_0x5e45('0x4c'),_0x5e45('0x4d'),_0x5e45('0x4e'),_0x5e45('0x4f')];var _0x44bc4d={'SUM':_0x5e45('0x50'),'COUNT':_0x5e45('0x98'),'COUNT DISTINCT':_0x5e45('0x99'),'MAX':_0x5e45('0x51'),'MIN':'MIN(%s)','AVG':_0x5e45('0x53'),'GROUP_CONCAT':_0x5e45('0x54'),'GROUP_CONCAT ASC':_0x5e45('0x55'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5f5689={'SEC_TO_TIME':_0x5e45('0x57'),'DATE':_0x5e45('0x58'),'HOUR':_0x5e45('0x59'),'ROUND':_0x5e45('0x5a'),'UNIX_TIMESTAMP':_0x5e45('0x5b')};var _0x2b84ad=function(_0x54948b){return!_[_0x5e45('0x5c')](['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY',_0x5e45('0x5f')],_0x54948b);};var _0x29a8b8=function(_0x4a7e93){if(!_0x4a7e93||!_0x4a7e93[_0x5e45('0x60')]['length']){return'';}for(var _0x133e08='(',_0x2123f3=0x0;_0x2123f3<_0x4a7e93['rules']['length'];_0x2123f3+=0x1){_0x2123f3>0x0&&(_0x133e08+='\x20'+_0x4a7e93[_0x5e45('0x61')]+'\x20');_0x133e08+=_0x4a7e93[_0x5e45('0x60')][_0x2123f3]['group']?_0x29a8b8(_0x4a7e93[_0x5e45('0x60')][_0x2123f3][_0x5e45('0x62')]):_0x4a7e93[_0x5e45('0x60')][_0x2123f3][_0x5e45('0x6f')]+'\x20'+_0x4a7e93['rules'][_0x2123f3][_0x5e45('0x63')]+(_0x2b84ad(_0x4a7e93['rules'][_0x2123f3]['condition'])?'\x20'+_0x4a7e93[_0x5e45('0x60')][_0x2123f3][_0x5e45('0x64')]:'');}return _0x133e08+')';};var _0x25aeb1={'where':{'id':_0x5519ad[_0x5e45('0x3f')]['id']}},_0x171dd8,_0xfd9cae,_0x3ff8a3,_0x29908d,_0x5176ff;_0x25aeb1=_[_0x5e45('0x38')]({},_0x25aeb1,_0x5519ad['options']);return db[_0x5e45('0x28')][_0x5e45('0x46')](_0x25aeb1)[_0x5e45('0x1c')](function(_0x9ae949){if(_0x9ae949){_0x171dd8=_0x9ae949;return _0x9ae949[_0x5e45('0x65')]();}return null;})[_0x5e45('0x1c')](function(_0x2b0d0d){if(_0x2b0d0d){if(!_0x2b0d0d[_0x5e45('0x33')]){throw new db[(_0x5e45('0x66'))][(_0x5e45('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xfd9cae=_0x2b0d0d;return db[_0x5e45('0x69')][_0x5e45('0x3c')]({'raw':!![]});}return null;})[_0x5e45('0x1c')](function(_0xa9b7ed){if(_0xa9b7ed){_0x3ff8a3=_[_0x5e45('0x6a')](_0xa9b7ed,'id');var _0x48a3b5;var _0x578492=squel[_0x5e45('0x6b')]();_0x578492[_0x5e45('0x6c')](_0x171dd8[_0x5e45('0x7d')]);for(var _0x291203=0x0;_0x291203<_0xfd9cae[_0x5e45('0x33')];_0x291203+=0x1){_0x48a3b5=_0xfd9cae[_0x291203]['MetricId']?_0x3ff8a3[_0xfd9cae[_0x291203][_0x5e45('0x6d')]][_0x5e45('0x6e')]:_0xfd9cae[_0x291203]['field'];_0x48a3b5=_0xfd9cae[_0x291203][_0x5e45('0x70')]?_[_0x5e45('0x71')](_0x44bc4d[_0xfd9cae[_0x291203][_0x5e45('0x70')]],'%s',_0x48a3b5):_0x48a3b5;_0x48a3b5=_0xfd9cae[_0x291203][_0x5e45('0x72')]?_['replace'](_0x5f5689[_0xfd9cae[_0x291203][_0x5e45('0x72')]],'%s',_0x48a3b5):_0x48a3b5;if(_0xfd9cae[_0x291203][_0x5e45('0x73')]){_0x578492['group'](_0x48a3b5);}_0xfd9cae[_0x291203][_0x5e45('0x74')]&&_0x578492[_0x5e45('0x75')](_0x48a3b5,_0xfd9cae[_0x291203][_0x5e45('0x74')]===_0x5e45('0x76')?![]:!![]);_0x578492[_0x5e45('0x6f')](_0x48a3b5,_0xfd9cae[_0x291203][_0x5e45('0x77')]||_0x48a3b5);}if(_0x171dd8[_0x5e45('0x78')]){_0x171dd8[_0x5e45('0x78')]=JSON[_0x5e45('0x79')](_0x171dd8[_0x5e45('0x78')]);for(var _0x35224e=0x0;_0x35224e<_0x171dd8[_0x5e45('0x78')]['length'];_0x35224e+=0x1){if(_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x2a')]&&_['includes'](_0x264fce,_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x2a')])&&_0x171dd8[_0x5e45('0x78')][_0x35224e]['parentKey']&&_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x7b')]&&_0x171dd8['joins'][_0x35224e][_0x5e45('0x7a')]){_0x578492[_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x2a')]](_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x7b')],null,util[_0x5e45('0x72')]('%s.%s\x20=\x20%s.%s',_0x171dd8[_0x5e45('0x7d')],_0x171dd8['joins'][_0x35224e]['parentKey'],_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x7b')],_0x171dd8[_0x5e45('0x78')][_0x35224e][_0x5e45('0x7a')]));}}}if(_0x171dd8[_0x5e45('0x7f')]){_0x171dd8['conditions']=JSON[_0x5e45('0x79')](_0x171dd8['conditions']);_0x578492[_0x5e45('0x37')](_0x29a8b8(_0x171dd8['conditions'][_0x5e45('0x62')]));}_0x5176ff=_0x578492[_0x5e45('0x80')]();_0x578492[_0x5e45('0x15')](_0x184694);_0x578492[_0x5e45('0x17')](0x0);logger[_0x5e45('0x81')](_0x5e45('0x9a'),_0x578492[_0x5e45('0x82')]());return dbH[_0x5e45('0x83')]['query'](_0x578492[_0x5e45('0x82')](),{'type':dbH[_0x5e45('0x83')][_0x5e45('0x9b')]['SELECT']});}})[_0x5e45('0x1c')](function(){return{'sql':_0x5176ff['toString']()};})[_0x5e45('0x1c')](respondWithResult(_0x5376d1,null))[_0x5e45('0x49')](handleError(_0x5376d1,null));};
\ No newline at end of file
+var _0x4ea5=['parentKey','foreignKey','foreignTable','conditions','clone','Limited\x20Query:','toString','sequelize','SELECT','SUM(%s)','COUNT(DISTINCT\x20%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','keyBy','function','%s.%s\x20=\x20%s.%s','fullPath','%s-%s.%s','randomstring','generate','output','csv','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','../../components/export/','countTable','COUNT(*)','QueryTypes','run','runReport','groupBy','debug','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','undefined','limit','set','save','update','then','get','CustomReports','UserProfileResource','destroy','end','stack','name','send','index','AnalyticCustomReport','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','filter','options','count','includeAll','include','findAll','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','join','left_join','right_join','cross_join','COUNT(%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)','ROUND(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','from','table','MetricId','metric','field','replace','format','orderBy','order','DESC','alias','joins','parse','includes'];(function(_0x139e2d,_0x3efe24){var _0x4a0a40=function(_0xde6697){while(--_0xde6697){_0x139e2d['push'](_0x139e2d['shift']());}};_0x4a0a40(++_0x3efe24);}(_0x4ea5,0xcb));var _0x54ea=function(_0x27dba4,_0x419253){_0x27dba4=_0x27dba4-0x0;var _0x35ec9d=_0x4ea5[_0x27dba4];return _0x35ec9d;};'use strict';var emlformat=require(_0x54ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x54ea('0x1'));var jsonpatch=require(_0x54ea('0x2'));var rp=require(_0x54ea('0x3'));var moment=require('moment');var BPromise=require(_0x54ea('0x4'));var Mustache=require(_0x54ea('0x5'));var util=require('util');var path=require(_0x54ea('0x6'));var sox=require(_0x54ea('0x7'));var csv=require('to-csv');var ejs=require(_0x54ea('0x8'));var fs=require('fs');var fs_extra=require(_0x54ea('0x9'));var _=require('lodash');var squel=require(_0x54ea('0xa'));var crypto=require(_0x54ea('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x54ea('0xc'));var toCsv=require(_0x54ea('0xd'));var querystring=require(_0x54ea('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x54ea('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x54ea('0x10'));var logger=require('../../config/logger')(_0x54ea('0x11'));var utils=require(_0x54ea('0x12'));var config=require(_0x54ea('0x13'));var licenseUtil=require(_0x54ea('0x14'));var db=require(_0x54ea('0x15'))['db'];var dbH=require('../../mysqldb')[_0x54ea('0x16')];function respondWithStatusCode(_0x1a2cdd,_0xbc72d2){_0xbc72d2=_0xbc72d2||0xcc;return function(_0x1f5e41){if(_0x1f5e41){return _0x1a2cdd[_0x54ea('0x17')](_0xbc72d2);}return _0x1a2cdd[_0x54ea('0x18')](_0xbc72d2)['end']();};}function respondWithResult(_0x708dc7,_0x337452){_0x337452=_0x337452||0xc8;return function(_0x26fc14){if(_0x26fc14){return _0x708dc7[_0x54ea('0x18')](_0x337452)['json'](_0x26fc14);}};}function respondWithFilteredResult(_0x3e8d12,_0x1de5d0){return function(_0x24007b){if(_0x24007b){var _0x49a374=typeof _0x1de5d0[_0x54ea('0x19')]===_0x54ea('0x1a')&&typeof _0x1de5d0[_0x54ea('0x1b')]==='undefined';var _0x43659a=_0x24007b['count'];var _0x11c986=_0x49a374?0x0:_0x1de5d0[_0x54ea('0x19')];var _0x3c1b29=_0x49a374?_0x24007b['count']:_0x1de5d0[_0x54ea('0x19')]+_0x1de5d0[_0x54ea('0x1b')];var _0x289e29;if(_0x3c1b29>=_0x43659a){_0x3c1b29=_0x43659a;_0x289e29=0xc8;}else{_0x289e29=0xce;}_0x3e8d12[_0x54ea('0x18')](_0x289e29);return _0x3e8d12[_0x54ea('0x1c')]('Content-Range',_0x11c986+'-'+_0x3c1b29+'/'+_0x43659a)['json'](_0x24007b);}return null;};}function patchUpdates(_0xec612f){return function(_0x21a443){try{jsonpatch['apply'](_0x21a443,_0xec612f,!![]);}catch(_0xf0524){return BPromise['reject'](_0xf0524);}return _0x21a443[_0x54ea('0x1d')]();};}function saveUpdates(_0x4b3db5,_0x1eab89){return function(_0x4b9e72){if(_0x4b9e72){return _0x4b9e72[_0x54ea('0x1e')](_0x4b3db5)[_0x54ea('0x1f')](function(_0x1df0ae){return _0x1df0ae;});}return null;};}function removeEntity(_0x210e73,_0x1e4ef8){return function(_0x31d7dd){if(_0x31d7dd){return _0x31d7dd['destroy']()[_0x54ea('0x1f')](function(){var _0x4eba90=_0x31d7dd[_0x54ea('0x20')]({'plain':!![]});var _0x701525=_0x54ea('0x21');return db[_0x54ea('0x22')][_0x54ea('0x23')]({'where':{'type':_0x701525,'resourceId':_0x4eba90['id']}})[_0x54ea('0x1f')](function(){return _0x31d7dd;});})[_0x54ea('0x1f')](function(){_0x210e73[_0x54ea('0x18')](0xcc)[_0x54ea('0x24')]();});}};}function handleEntityNotFound(_0x2813fe,_0x567b9b){return function(_0x26cbc6){if(!_0x26cbc6){_0x2813fe[_0x54ea('0x17')](0x194);}return _0x26cbc6;};}function handleError(_0x5c2056,_0x4eff53){_0x4eff53=_0x4eff53||0x1f4;return function(_0x126c8b){logger['error'](_0x126c8b[_0x54ea('0x25')]);if(_0x126c8b[_0x54ea('0x26')]){delete _0x126c8b['name'];}_0x5c2056[_0x54ea('0x18')](_0x4eff53)[_0x54ea('0x27')](_0x126c8b);};}exports[_0x54ea('0x28')]=function(_0x22a2ec,_0x69f9aa){var _0x27a696={},_0x2de574={},_0x1b8976={'count':0x0,'rows':[]};var _0x30c875=_['map'](db[_0x54ea('0x29')][_0x54ea('0x2a')],function(_0x21784a){return{'name':_0x21784a[_0x54ea('0x2b')],'type':_0x21784a[_0x54ea('0x2c')]['key']};});_0x2de574[_0x54ea('0x2d')]=_[_0x54ea('0x2e')](_0x30c875,_0x54ea('0x26'));_0x2de574['query']=_[_0x54ea('0x2f')](_0x22a2ec[_0x54ea('0x30')]);_0x2de574[_0x54ea('0x31')]=_['intersection'](_0x2de574[_0x54ea('0x2d')],_0x2de574[_0x54ea('0x30')]);_0x27a696[_0x54ea('0x32')]=_[_0x54ea('0x33')](_0x2de574[_0x54ea('0x2d')],qs[_0x54ea('0x34')](_0x22a2ec['query'][_0x54ea('0x34')]));_0x27a696['attributes']=_0x27a696[_0x54ea('0x32')]['length']?_0x27a696[_0x54ea('0x32')]:_0x2de574[_0x54ea('0x2d')];if(!_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x35')](_0x54ea('0x36'))){_0x27a696[_0x54ea('0x1b')]=qs[_0x54ea('0x1b')](_0x22a2ec[_0x54ea('0x30')]['limit']);_0x27a696[_0x54ea('0x19')]=qs['offset'](_0x22a2ec[_0x54ea('0x30')]['offset']);}_0x27a696['order']=qs['sort'](_0x22a2ec['query'][_0x54ea('0x37')]);_0x27a696['where']=qs[_0x54ea('0x31')](_[_0x54ea('0x38')](_0x22a2ec['query'],_0x2de574[_0x54ea('0x31')]),_0x30c875);if(_0x22a2ec[_0x54ea('0x30')]['filter']){_0x27a696['where']=_[_0x54ea('0x39')](_0x27a696[_0x54ea('0x3a')],{'$or':_[_0x54ea('0x2e')](_0x30c875,function(_0x551ff7){if(_0x551ff7['type']!==_0x54ea('0x3b')){var _0x2662e0={};_0x2662e0[_0x551ff7[_0x54ea('0x26')]]={'$like':'%'+_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x3c')]+'%'};return _0x2662e0;}})});}_0x27a696=_[_0x54ea('0x39')]({},_0x27a696,_0x22a2ec[_0x54ea('0x3d')]);var _0x104877={'where':_0x27a696['where']};return db[_0x54ea('0x29')][_0x54ea('0x3e')](_0x104877)['then'](function(_0x2ef80a){_0x1b8976[_0x54ea('0x3e')]=_0x2ef80a;if(_0x22a2ec[_0x54ea('0x30')][_0x54ea('0x3f')]){_0x27a696[_0x54ea('0x40')]=[{'all':!![]}];}return db[_0x54ea('0x29')][_0x54ea('0x41')](_0x27a696);})[_0x54ea('0x1f')](function(_0x1306d0){_0x1b8976['rows']=_0x1306d0;return _0x1b8976;})[_0x54ea('0x1f')](respondWithFilteredResult(_0x69f9aa,_0x27a696))[_0x54ea('0x42')](handleError(_0x69f9aa,null));};exports[_0x54ea('0x43')]=function(_0x5cb31b,_0x3fad13){var _0x22b729={'raw':![],'where':{'id':_0x5cb31b[_0x54ea('0x44')]['id']}},_0x24253c={};_0x24253c[_0x54ea('0x2d')]=_[_0x54ea('0x2f')](db[_0x54ea('0x29')][_0x54ea('0x2a')]);_0x24253c[_0x54ea('0x30')]=_[_0x54ea('0x2f')](_0x5cb31b[_0x54ea('0x30')]);_0x24253c[_0x54ea('0x31')]=_[_0x54ea('0x33')](_0x24253c['model'],_0x24253c[_0x54ea('0x30')]);_0x22b729[_0x54ea('0x32')]=_[_0x54ea('0x33')](_0x24253c['model'],qs[_0x54ea('0x34')](_0x5cb31b[_0x54ea('0x30')]['fields']));_0x22b729[_0x54ea('0x32')]=_0x22b729[_0x54ea('0x32')][_0x54ea('0x45')]?_0x22b729[_0x54ea('0x32')]:_0x24253c[_0x54ea('0x2d')];if(_0x5cb31b[_0x54ea('0x30')][_0x54ea('0x3f')]){_0x22b729[_0x54ea('0x40')]=[{'all':!![]}];}_0x22b729=_['merge']({},_0x22b729,_0x5cb31b[_0x54ea('0x3d')]);return db[_0x54ea('0x29')][_0x54ea('0x46')](_0x22b729)[_0x54ea('0x1f')](handleEntityNotFound(_0x3fad13,null))[_0x54ea('0x1f')](respondWithResult(_0x3fad13,null))[_0x54ea('0x42')](handleError(_0x3fad13,null));};exports['create']=function(_0x123aae,_0x576d8b){return db[_0x54ea('0x29')][_0x54ea('0x47')](_0x123aae['body'],{})[_0x54ea('0x1f')](function(_0x1e1eaa){var _0x457fde=_0x123aae[_0x54ea('0x48')]['get']({'plain':!![]});if(!_0x457fde)throw new Error(_0x54ea('0x49'));if(_0x457fde['role']===_0x54ea('0x48')){var _0x3afe26=_0x1e1eaa[_0x54ea('0x20')]({'plain':!![]});var _0x59a66e=_0x54ea('0x4a');return db[_0x54ea('0x4b')]['find']({'where':{'name':_0x59a66e,'userProfileId':_0x457fde[_0x54ea('0x4c')]},'raw':!![]})[_0x54ea('0x1f')](function(_0x346953){if(_0x346953&&_0x346953[_0x54ea('0x4d')]===0x0){return db['UserProfileResource'][_0x54ea('0x47')]({'name':_0x3afe26['name'],'resourceId':_0x3afe26['id'],'type':_0x54ea('0x21'),'sectionId':_0x346953['id']},{})[_0x54ea('0x1f')](function(){return _0x1e1eaa;});}else{return _0x1e1eaa;}})[_0x54ea('0x42')](function(_0xfc5402){logger[_0x54ea('0x4e')](_0x54ea('0x4f'),_0xfc5402);throw _0xfc5402;});}return _0x1e1eaa;})[_0x54ea('0x1f')](respondWithResult(_0x576d8b,0xc9))[_0x54ea('0x42')](handleError(_0x576d8b,null));};exports['update']=function(_0xc83de,_0x8a6f60){if(_0xc83de['body']['id']){delete _0xc83de[_0x54ea('0x50')]['id'];}return db[_0x54ea('0x29')][_0x54ea('0x46')]({'where':{'id':_0xc83de[_0x54ea('0x44')]['id']}})[_0x54ea('0x1f')](handleEntityNotFound(_0x8a6f60,null))[_0x54ea('0x1f')](saveUpdates(_0xc83de[_0x54ea('0x50')],null))['then'](respondWithResult(_0x8a6f60,null))[_0x54ea('0x42')](handleError(_0x8a6f60,null));};exports[_0x54ea('0x23')]=function(_0x2edfb5,_0x5a5903){return db[_0x54ea('0x29')]['find']({'where':{'id':_0x2edfb5[_0x54ea('0x44')]['id']}})[_0x54ea('0x1f')](handleEntityNotFound(_0x5a5903,null))[_0x54ea('0x1f')](removeEntity(_0x5a5903,null))[_0x54ea('0x42')](handleError(_0x5a5903,null));};exports[_0x54ea('0x51')]=function(_0x38c3a1,_0x592f6c){var _0x2b516a=0xa;var _0x387e18=[_0x54ea('0x52'),_0x54ea('0x53'),_0x54ea('0x54'),_0x54ea('0x55')];var _0x103dca={'SUM':'SUM(%s)','COUNT':_0x54ea('0x56'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x54ea('0x57'),'MIN':_0x54ea('0x58'),'AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':_0x54ea('0x5b'),'GROUP_CONCAT DESC':_0x54ea('0x5c')};var _0x2a31ae={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x54ea('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1a3d8a=function(_0x6f07cd){return!_['includes']([_0x54ea('0x5e'),_0x54ea('0x5f'),_0x54ea('0x60'),_0x54ea('0x61')],_0x6f07cd);};var _0x1b7016=function(_0x56604b){if(!_0x56604b||!_0x56604b['rules'][_0x54ea('0x45')]){return'';}for(var _0xea7b1d='(',_0x5ded00=0x0;_0x5ded00<_0x56604b[_0x54ea('0x62')][_0x54ea('0x45')];_0x5ded00+=0x1){_0x5ded00>0x0&&(_0xea7b1d+='\x20'+_0x56604b[_0x54ea('0x63')]+'\x20');_0xea7b1d+=_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x64')]?_0x1b7016(_0x56604b['rules'][_0x5ded00][_0x54ea('0x64')]):_0x56604b[_0x54ea('0x62')][_0x5ded00]['field']+'\x20'+_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x65')]+(_0x1a3d8a(_0x56604b[_0x54ea('0x62')][_0x5ded00]['condition'])?'\x20'+_0x56604b[_0x54ea('0x62')][_0x5ded00][_0x54ea('0x66')]:'');}return _0xea7b1d+')';};var _0xc50868={'where':{'id':_0x38c3a1[_0x54ea('0x44')]['id']}},_0x5412c0,_0x546d5a,_0x54ea3d,_0x2a0088,_0x3fac70;_0xc50868=_[_0x54ea('0x39')]({},_0xc50868,_0x38c3a1[_0x54ea('0x3d')]);return db['AnalyticCustomReport']['find'](_0xc50868)['then'](function(_0x2c61d4){if(_0x2c61d4){_0x5412c0=_0x2c61d4;return _0x2c61d4[_0x54ea('0x67')]();}return null;})[_0x54ea('0x1f')](function(_0x42b66f){if(_0x42b66f){if(!_0x42b66f['length']){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))](_0x54ea('0x6a'),0x193);}_0x546d5a=_0x42b66f;return db[_0x54ea('0x6b')]['findAll']({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x5edf6e){if(_0x5edf6e){_0x54ea3d=_['keyBy'](_0x5edf6e,'id');var _0x2601b3;var _0x1e897b=squel[_0x54ea('0x6c')]();_0x1e897b[_0x54ea('0x6d')](_0x5412c0[_0x54ea('0x6e')]);for(var _0x34e878=0x0;_0x34e878<_0x546d5a['length'];_0x34e878+=0x1){_0x2601b3=_0x546d5a[_0x34e878][_0x54ea('0x6f')]?_0x54ea3d[_0x546d5a[_0x34e878]['MetricId']][_0x54ea('0x70')]:_0x546d5a[_0x34e878][_0x54ea('0x71')];_0x2601b3=_0x546d5a[_0x34e878]['function']?_[_0x54ea('0x72')](_0x103dca[_0x546d5a[_0x34e878]['function']],'%s',_0x2601b3):_0x2601b3;_0x2601b3=_0x546d5a[_0x34e878][_0x54ea('0x73')]?_[_0x54ea('0x72')](_0x2a31ae[_0x546d5a[_0x34e878][_0x54ea('0x73')]],'%s',_0x2601b3):_0x2601b3;if(_0x546d5a[_0x34e878]['groupBy']){_0x1e897b[_0x54ea('0x64')](_0x2601b3);}_0x546d5a[_0x34e878][_0x54ea('0x74')]&&_0x1e897b[_0x54ea('0x75')](_0x2601b3,_0x546d5a[_0x34e878][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x1e897b['field'](_0x2601b3,_0x546d5a[_0x34e878][_0x54ea('0x77')]||_0x2601b3);}if(_0x5412c0[_0x54ea('0x78')]){_0x5412c0[_0x54ea('0x78')]=JSON[_0x54ea('0x79')](_0x5412c0[_0x54ea('0x78')]);for(var _0x3f76b4=0x0;_0x3f76b4<_0x5412c0[_0x54ea('0x78')][_0x54ea('0x45')];_0x3f76b4+=0x1){if(_0x5412c0['joins'][_0x3f76b4][_0x54ea('0x2c')]&&_[_0x54ea('0x7a')](_0x387e18,_0x5412c0['joins'][_0x3f76b4][_0x54ea('0x2c')])&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7b')]&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4]['foreignTable']&&_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7c')]){_0x1e897b[_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x2c')]](_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7d')],null,util[_0x54ea('0x73')]('%s.%s\x20=\x20%s.%s',_0x5412c0['table'],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7b')],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7d')],_0x5412c0[_0x54ea('0x78')][_0x3f76b4][_0x54ea('0x7c')]));}}}if(_0x5412c0['conditions']){_0x5412c0[_0x54ea('0x7e')]=JSON[_0x54ea('0x79')](_0x5412c0[_0x54ea('0x7e')]);_0x1e897b[_0x54ea('0x3a')](_0x1b7016(_0x5412c0[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x3fac70=_0x1e897b[_0x54ea('0x7f')]();_0x1e897b[_0x54ea('0x1b')](_0x2b516a);_0x1e897b['offset'](0x0);logger['debug'](_0x54ea('0x80'),_0x1e897b[_0x54ea('0x81')]());return dbH[_0x54ea('0x82')][_0x54ea('0x30')](_0x1e897b['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x54ea('0x83')]});}})[_0x54ea('0x1f')](respondWithResult(_0x592f6c,null))[_0x54ea('0x42')](handleError(_0x592f6c,null));};function runReport(_0xf522b4,_0x398705,_0x9360a3){var _0xc43c85=_0x398705[_0x54ea('0x26')];var _0x1d1d6a=0xa;var _0x4026ce=['join','left_join',_0x54ea('0x54'),_0x54ea('0x55')];var _0x21034b={'SUM':_0x54ea('0x84'),'COUNT':_0x54ea('0x56'),'COUNT DISTINCT':_0x54ea('0x85'),'MAX':_0x54ea('0x57'),'MIN':'MIN(%s)','AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1c9c30={'SEC_TO_TIME':_0x54ea('0x86'),'DATE':_0x54ea('0x87'),'HOUR':_0x54ea('0x88'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x54ea('0x89')};var _0x1b529e=function(_0x3b373d){return!_['includes']([_0x54ea('0x5e'),'IS\x20NOT\x20NULL',_0x54ea('0x60'),_0x54ea('0x61')],_0x3b373d);};var _0x18c625=function(_0x3d522f){if(!_0x3d522f||!_0x3d522f[_0x54ea('0x62')][_0x54ea('0x45')]){return'';}for(var _0xa6620b='(',_0x8bd7e2=0x0;_0x8bd7e2<_0x3d522f['rules']['length'];_0x8bd7e2+=0x1){_0x8bd7e2>0x0&&(_0xa6620b+='\x20'+_0x3d522f[_0x54ea('0x63')]+'\x20');_0xa6620b+=_0x3d522f['rules'][_0x8bd7e2]['group']?_0x18c625(_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x64')]):_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x71')]+'\x20'+_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x65')]+(_0x1b529e(_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x65')])?'\x20'+_0x3d522f[_0x54ea('0x62')][_0x8bd7e2][_0x54ea('0x66')]:'');}return _0xa6620b+')';};var _0x36f967={'where':{'id':_0xf522b4['id']}},_0x266c4b,_0x539873,_0x16f649,_0x5b1b1b,_0x1be1dd;_0x36f967=_[_0x54ea('0x39')]({},_0x36f967,_0x9360a3);return db[_0x54ea('0x29')][_0x54ea('0x46')](_0x36f967)[_0x54ea('0x1f')](function(_0x166373){if(_0x166373){_0x266c4b=_0x166373;return _0x166373[_0x54ea('0x67')]();}return null;})['then'](function(_0x488fa8){if(_0x488fa8){if(!_0x488fa8[_0x54ea('0x45')]){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x539873=_0x488fa8;return db[_0x54ea('0x6b')][_0x54ea('0x41')]({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x55b180){if(_0x55b180){_0x16f649=_[_0x54ea('0x8a')](_0x55b180,'id');var _0xc37435;var _0x5a0d28=squel[_0x54ea('0x6c')]();_0x5a0d28[_0x54ea('0x6d')](_0x266c4b[_0x54ea('0x6e')]);for(var _0x6f4f2e=0x0;_0x6f4f2e<_0x539873['length'];_0x6f4f2e+=0x1){_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x6f')]?_0x16f649[_0x539873[_0x6f4f2e]['MetricId']][_0x54ea('0x70')]:_0x539873[_0x6f4f2e]['field'];_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x8b')]?_[_0x54ea('0x72')](_0x21034b[_0x539873[_0x6f4f2e][_0x54ea('0x8b')]],'%s',_0xc37435):_0xc37435;_0xc37435=_0x539873[_0x6f4f2e][_0x54ea('0x73')]?_['replace'](_0x1c9c30[_0x539873[_0x6f4f2e]['format']],'%s',_0xc37435):_0xc37435;if(_0x539873[_0x6f4f2e]['groupBy']){_0x5a0d28[_0x54ea('0x64')](_0xc37435);}_0x539873[_0x6f4f2e][_0x54ea('0x74')]&&_0x5a0d28['order'](_0xc37435,_0x539873[_0x6f4f2e][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x5a0d28[_0x54ea('0x71')](_0xc37435,_0x539873[_0x6f4f2e][_0x54ea('0x77')]||_0xc37435);}if(_0x266c4b[_0x54ea('0x78')]){_0x266c4b[_0x54ea('0x78')]=JSON[_0x54ea('0x79')](_0x266c4b[_0x54ea('0x78')]);for(var _0x5be84a=0x0;_0x5be84a<_0x266c4b['joins']['length'];_0x5be84a+=0x1){if(_0x266c4b[_0x54ea('0x78')][_0x5be84a]['type']&&_[_0x54ea('0x7a')](_0x4026ce,_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x2c')])&&_0x266c4b['joins'][_0x5be84a][_0x54ea('0x7b')]&&_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')]&&_0x266c4b['joins'][_0x5be84a][_0x54ea('0x7c')]){_0x5a0d28[_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x2c')]](_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')],null,util['format'](_0x54ea('0x8c'),_0x266c4b[_0x54ea('0x6e')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7b')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7d')],_0x266c4b[_0x54ea('0x78')][_0x5be84a][_0x54ea('0x7c')]));}}}if(_0x266c4b[_0x54ea('0x7e')]){_0x266c4b['conditions']=JSON[_0x54ea('0x79')](_0x266c4b[_0x54ea('0x7e')]);_0x5a0d28[_0x54ea('0x3a')](_0x18c625(_0x266c4b[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x1be1dd=_0x5a0d28[_0x54ea('0x7f')]();_0x5a0d28[_0x54ea('0x1b')](_0x1d1d6a);_0x5a0d28[_0x54ea('0x19')](0x0);return;}})[_0x54ea('0x1f')](function(){if(_0x398705['output']==='web'){return null;}var _0xe4a6b0=_[_0x54ea('0x39')](_0x398705,{'name':_0x398705[_0x54ea('0x8d')]||_0x398705[_0x54ea('0x26')]||_0x266c4b[_0x54ea('0x26')],'basename':_0xc43c85,'savename':util['format'](_0x54ea('0x8e'),_0x398705[_0x54ea('0x26')]||_0x266c4b[_0x54ea('0x26')],require(_0x54ea('0x8f'))[_0x54ea('0x90')](0x4),_0x398705[_0x54ea('0x91')]||_0x54ea('0x92')),'reportId':_0x266c4b['id'],'reportType':'custom'});return db[_0x54ea('0x93')][_0x54ea('0x47')](_0xe4a6b0,{'raw':!![]});})[_0x54ea('0x1f')](function(_0x18b4ea){if(_0x266c4b['table']==='cdr'){_0x1be1dd[_0x54ea('0x3a')](_0x266c4b[_0x54ea('0x6e')]+_0x54ea('0x94'),_0x398705[_0x54ea('0x95')],_0x398705[_0x54ea('0x96')]);}else{_0x1be1dd[_0x54ea('0x3a')](_0x266c4b[_0x54ea('0x6e')]+_0x54ea('0x97'),_0x398705['startDate'],_0x398705[_0x54ea('0x96')]);}if(_0x18b4ea){logger[_0x54ea('0x98')](_0x54ea('0x99'),_0x1be1dd[_0x54ea('0x81')]());require('child_process')[_0x54ea('0x9a')](path['join'](__dirname,_0x54ea('0x9b'),_0x18b4ea[_0x54ea('0x91')]),[_0x18b4ea['id'],_0x1be1dd['toString'](),path[_0x54ea('0x52')](__dirname,'../../files/reports',_0x18b4ea['savename']),_0xc43c85]);return _0x18b4ea;}else{var _0x423a43=squel[_0x54ea('0x6c')]();_0x423a43[_0x54ea('0x6d')]('('+_0x1be1dd[_0x54ea('0x81')]()+')',_0x54ea('0x9c'));_0x423a43[_0x54ea('0x71')](_0x54ea('0x9d'),_0x54ea('0x3e'));_0x1be1dd[_0x54ea('0x1b')](_0x398705[_0x54ea('0x1b')]||_0x1d1d6a);_0x1be1dd[_0x54ea('0x19')](_0x398705[_0x54ea('0x19')]||0x0);return dbH['sequelize'][_0x54ea('0x30')](_0x423a43[_0x54ea('0x81')](),{'type':dbH['sequelize'][_0x54ea('0x9e')][_0x54ea('0x83')]})[_0x54ea('0x1f')](function(_0x60e508){if(!_0x60e508[_0x54ea('0x45')]){_0x5b1b1b=0x0;}else{_0x5b1b1b=_0x60e508[0x0][_0x54ea('0x3e')]||0x0;}return dbH[_0x54ea('0x82')][_0x54ea('0x30')](_0x1be1dd[_0x54ea('0x81')](),{'type':dbH[_0x54ea('0x82')]['QueryTypes'][_0x54ea('0x83')]});})[_0x54ea('0x1f')](function(_0x67e27){return{'rows':_0x67e27||[],'count':_0x5b1b1b};});}});}exports[_0x54ea('0x9f')]=function(_0x21b25f,_0x2d8924){return runReport(_0x21b25f[_0x54ea('0x44')],_0x21b25f['query'],_0x21b25f['options'])['then'](respondWithResult(_0x2d8924,null))[_0x54ea('0x42')](handleError(_0x2d8924,null));};exports[_0x54ea('0xa0')]=runReport;exports[_0x54ea('0x30')]=function(_0x39e6e2,_0x26d6ce){var _0x45b5c0=0xa;var _0xde76d0=[_0x54ea('0x52'),_0x54ea('0x53'),'right_join',_0x54ea('0x55')];var _0x31c064={'SUM':_0x54ea('0x84'),'COUNT':_0x54ea('0x56'),'COUNT DISTINCT':_0x54ea('0x85'),'MAX':_0x54ea('0x57'),'MIN':_0x54ea('0x58'),'AVG':_0x54ea('0x59'),'GROUP_CONCAT':_0x54ea('0x5a'),'GROUP_CONCAT ASC':_0x54ea('0x5b'),'GROUP_CONCAT DESC':_0x54ea('0x5c')};var _0x4fdafe={'SEC_TO_TIME':_0x54ea('0x86'),'DATE':_0x54ea('0x87'),'HOUR':_0x54ea('0x88'),'ROUND':_0x54ea('0x5d'),'UNIX_TIMESTAMP':_0x54ea('0x89')};var _0x49591d=function(_0x19f926){return!_['includes']([_0x54ea('0x5e'),_0x54ea('0x5f'),_0x54ea('0x60'),'IS\x20NOT\x20EMPTY'],_0x19f926);};var _0x2d7995=function(_0x469b80){if(!_0x469b80||!_0x469b80[_0x54ea('0x62')][_0x54ea('0x45')]){return'';}for(var _0x16472c='(',_0x4ebfbd=0x0;_0x4ebfbd<_0x469b80['rules'][_0x54ea('0x45')];_0x4ebfbd+=0x1){_0x4ebfbd>0x0&&(_0x16472c+='\x20'+_0x469b80['operator']+'\x20');_0x16472c+=_0x469b80[_0x54ea('0x62')][_0x4ebfbd]['group']?_0x2d7995(_0x469b80['rules'][_0x4ebfbd][_0x54ea('0x64')]):_0x469b80[_0x54ea('0x62')][_0x4ebfbd]['field']+'\x20'+_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x65')]+(_0x49591d(_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x65')])?'\x20'+_0x469b80[_0x54ea('0x62')][_0x4ebfbd][_0x54ea('0x66')]:'');}return _0x16472c+')';};var _0x5e0458={'where':{'id':_0x39e6e2[_0x54ea('0x44')]['id']}},_0xc5582f,_0x29873a,_0xd70812,_0x52d26a,_0x517f17;_0x5e0458=_['merge']({},_0x5e0458,_0x39e6e2[_0x54ea('0x3d')]);return db['AnalyticCustomReport'][_0x54ea('0x46')](_0x5e0458)[_0x54ea('0x1f')](function(_0x44fb2d){if(_0x44fb2d){_0xc5582f=_0x44fb2d;return _0x44fb2d['getFields']();}return null;})[_0x54ea('0x1f')](function(_0x77e00a){if(_0x77e00a){if(!_0x77e00a[_0x54ea('0x45')]){throw new db[(_0x54ea('0x68'))][(_0x54ea('0x69'))](_0x54ea('0x6a'),0x193);}_0x29873a=_0x77e00a;return db[_0x54ea('0x6b')][_0x54ea('0x41')]({'raw':!![]});}return null;})[_0x54ea('0x1f')](function(_0x46ebd6){if(_0x46ebd6){_0xd70812=_[_0x54ea('0x8a')](_0x46ebd6,'id');var _0x1f6242;var _0x4eaf7e=squel['select']();_0x4eaf7e[_0x54ea('0x6d')](_0xc5582f[_0x54ea('0x6e')]);for(var _0x4c4177=0x0;_0x4c4177<_0x29873a['length'];_0x4c4177+=0x1){_0x1f6242=_0x29873a[_0x4c4177][_0x54ea('0x6f')]?_0xd70812[_0x29873a[_0x4c4177][_0x54ea('0x6f')]][_0x54ea('0x70')]:_0x29873a[_0x4c4177][_0x54ea('0x71')];_0x1f6242=_0x29873a[_0x4c4177]['function']?_['replace'](_0x31c064[_0x29873a[_0x4c4177][_0x54ea('0x8b')]],'%s',_0x1f6242):_0x1f6242;_0x1f6242=_0x29873a[_0x4c4177][_0x54ea('0x73')]?_[_0x54ea('0x72')](_0x4fdafe[_0x29873a[_0x4c4177]['format']],'%s',_0x1f6242):_0x1f6242;if(_0x29873a[_0x4c4177][_0x54ea('0xa1')]){_0x4eaf7e[_0x54ea('0x64')](_0x1f6242);}_0x29873a[_0x4c4177][_0x54ea('0x74')]&&_0x4eaf7e['order'](_0x1f6242,_0x29873a[_0x4c4177][_0x54ea('0x74')]===_0x54ea('0x76')?![]:!![]);_0x4eaf7e['field'](_0x1f6242,_0x29873a[_0x4c4177][_0x54ea('0x77')]||_0x1f6242);}if(_0xc5582f[_0x54ea('0x78')]){_0xc5582f['joins']=JSON[_0x54ea('0x79')](_0xc5582f[_0x54ea('0x78')]);for(var _0x312e46=0x0;_0x312e46<_0xc5582f[_0x54ea('0x78')][_0x54ea('0x45')];_0x312e46+=0x1){if(_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x2c')]&&_[_0x54ea('0x7a')](_0xde76d0,_0xc5582f['joins'][_0x312e46][_0x54ea('0x2c')])&&_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7b')]&&_0xc5582f['joins'][_0x312e46][_0x54ea('0x7d')]&&_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7c')]){_0x4eaf7e[_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x2c')]](_0xc5582f['joins'][_0x312e46][_0x54ea('0x7d')],null,util[_0x54ea('0x73')](_0x54ea('0x8c'),_0xc5582f[_0x54ea('0x6e')],_0xc5582f['joins'][_0x312e46][_0x54ea('0x7b')],_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7d')],_0xc5582f[_0x54ea('0x78')][_0x312e46][_0x54ea('0x7c')]));}}}if(_0xc5582f['conditions']){_0xc5582f[_0x54ea('0x7e')]=JSON[_0x54ea('0x79')](_0xc5582f['conditions']);_0x4eaf7e[_0x54ea('0x3a')](_0x2d7995(_0xc5582f[_0x54ea('0x7e')][_0x54ea('0x64')]));}_0x517f17=_0x4eaf7e[_0x54ea('0x7f')]();_0x4eaf7e['limit'](_0x45b5c0);_0x4eaf7e[_0x54ea('0x19')](0x0);logger[_0x54ea('0xa2')](_0x54ea('0x80'),_0x4eaf7e['toString']());return dbH['sequelize']['query'](_0x4eaf7e[_0x54ea('0x81')](),{'type':dbH[_0x54ea('0x82')][_0x54ea('0x9e')][_0x54ea('0x83')]});}})[_0x54ea('0x1f')](function(){return{'sql':_0x517f17[_0x54ea('0x81')]()};})[_0x54ea('0x1f')](respondWithResult(_0x26d6ce,null))['catch'](handleError(_0x26d6ce,null));};
\ No newline at end of file
index 31366e1..3f96bcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa696=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports'];(function(_0x5b6330,_0x1e6918){var _0x1b8289=function(_0x5c7b62){while(--_0x5c7b62){_0x5b6330['push'](_0x5b6330['shift']());}};_0x1b8289(++_0x1e6918);}(_0xa696,0xe4));var _0x6a69=function(_0x593564,_0x43583f){_0x593564=_0x593564-0x0;var _0x211a89=_0xa696[_0x593564];return _0x211a89;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6a69('0x0'))(_0x6a69('0x1'));var moment=require(_0x6a69('0x2'));var BPromise=require(_0x6a69('0x3'));var rp=require(_0x6a69('0x4'));var fs=require('fs');var path=require(_0x6a69('0x5'));var rimraf=require(_0x6a69('0x6'));var config=require('../../config/environment');var attributes=require(_0x6a69('0x7'));module[_0x6a69('0x8')]=function(_0x2a0323,_0x43a0bd){return _0x2a0323[_0x6a69('0x9')](_0x6a69('0xa'),attributes,{'tableName':_0x6a69('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa17a=['moment','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','api'];(function(_0x3660ce,_0x54d3c7){var _0xdae095=function(_0x168d43){while(--_0x168d43){_0x3660ce['push'](_0x3660ce['shift']());}};_0xdae095(++_0x54d3c7);}(_0xa17a,0xf9));var _0xaa17=function(_0x427f38,_0x34f332){_0x427f38=_0x427f38-0x0;var _0x2f39d7=_0xa17a[_0x427f38];return _0x2f39d7;};'use strict';var _=require(_0xaa17('0x0'));var util=require(_0xaa17('0x1'));var logger=require('../../config/logger')(_0xaa17('0x2'));var moment=require(_0xaa17('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa17('0x4'));var fs=require('fs');var path=require(_0xaa17('0x5'));var rimraf=require(_0xaa17('0x6'));var config=require(_0xaa17('0x7'));var attributes=require(_0xaa17('0x8'));module['exports']=function(_0xf285ac,_0x455f03){return _0xf285ac[_0xaa17('0x9')](_0xaa17('0xa'),attributes,{'tableName':_0xaa17('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eff2987..68bd79d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf756=['error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s'];(function(_0x300dbb,_0xd7fd5b){var _0x1a4120=function(_0x10d5d0){while(--_0x10d5d0){_0x300dbb['push'](_0x300dbb['shift']());}};_0x1a4120(++_0xd7fd5b);}(_0xf756,0x122));var _0x6f75=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf756[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x6f75('0x0'));var util=require(_0x6f75('0x1'));var moment=require(_0x6f75('0x2'));var BPromise=require(_0x6f75('0x3'));var rs=require(_0x6f75('0x4'));var fs=require('fs');var Redis=require(_0x6f75('0x5'));var db=require(_0x6f75('0x6'))['db'];var utils=require(_0x6f75('0x7'));var logger=require(_0x6f75('0x8'))(_0x6f75('0x9'));var config=require(_0x6f75('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x293f54,_0x41c2a2,_0x2c5789){return new BPromise(function(_0x444837,_0x1f169c){return client['request'](_0x293f54,_0x2c5789)[_0x6f75('0xb')](function(_0x33d801){logger[_0x6f75('0xc')](_0x6f75('0xd'),_0x41c2a2,_0x6f75('0xe'));logger['debug'](_0x6f75('0xf'),_0x41c2a2,_0x6f75('0xe'),JSON['stringify'](_0x33d801));if(_0x33d801[_0x6f75('0x10')]){if(_0x33d801[_0x6f75('0x10')]['code']===0x1f4){logger['error'](_0x6f75('0xd'),_0x41c2a2,_0x33d801['error']['message']);return _0x1f169c(_0x33d801['error'][_0x6f75('0x11')]);}logger[_0x6f75('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x41c2a2,_0x33d801[_0x6f75('0x10')][_0x6f75('0x11')]);return _0x444837(_0x33d801['error']['message']);}else{logger[_0x6f75('0xc')](_0x6f75('0xd'),_0x41c2a2,_0x6f75('0xe'));_0x444837(_0x33d801['result']['message']);}})['catch'](function(_0x496a23){logger['error'](_0x6f75('0xd'),_0x41c2a2,_0x496a23);_0x1f169c(_0x496a23);});});}
\ No newline at end of file
+var _0x57b2=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x506c23,_0xb6fdda){var _0x1c0c47=function(_0x422e0b){while(--_0x422e0b){_0x506c23['push'](_0x506c23['shift']());}};_0x1c0c47(++_0xb6fdda);}(_0x57b2,0xd3));var _0x257b=function(_0x5a8cde,_0x533a4c){_0x5a8cde=_0x5a8cde-0x0;var _0x3f99ca=_0x57b2[_0x5a8cde];return _0x3f99ca;};'use strict';var _=require(_0x257b('0x0'));var util=require(_0x257b('0x1'));var moment=require('moment');var BPromise=require(_0x257b('0x2'));var rs=require(_0x257b('0x3'));var fs=require('fs');var Redis=require(_0x257b('0x4'));var db=require(_0x257b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x257b('0x6'))(_0x257b('0x7'));var config=require('../../config/environment');var jayson=require(_0x257b('0x8'));var client=jayson[_0x257b('0x9')][_0x257b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56dd98,_0x4ed8f7,_0x4ee80f){return new BPromise(function(_0x565fe4,_0x4a9bac){return client[_0x257b('0xb')](_0x56dd98,_0x4ee80f)[_0x257b('0xc')](function(_0x5609b5){logger[_0x257b('0xd')](_0x257b('0xe'),_0x4ed8f7,'request\x20sent');logger[_0x257b('0xf')](_0x257b('0x10'),_0x4ed8f7,_0x257b('0x11'),JSON['stringify'](_0x5609b5));if(_0x5609b5['error']){if(_0x5609b5[_0x257b('0x12')][_0x257b('0x13')]===0x1f4){logger[_0x257b('0x12')](_0x257b('0xe'),_0x4ed8f7,_0x5609b5[_0x257b('0x12')][_0x257b('0x14')]);return _0x4a9bac(_0x5609b5[_0x257b('0x12')]['message']);}logger[_0x257b('0x12')](_0x257b('0xe'),_0x4ed8f7,_0x5609b5[_0x257b('0x12')]['message']);return _0x565fe4(_0x5609b5[_0x257b('0x12')][_0x257b('0x14')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x4ed8f7,'request\x20sent');_0x565fe4(_0x5609b5[_0x257b('0x15')][_0x257b('0x14')]);}})[_0x257b('0x16')](function(_0x10a425){logger[_0x257b('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4ed8f7,_0x10a425);_0x4a9bac(_0x10a425);});});}
\ No newline at end of file
index 8bdf5f9..ac2dd60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x496e=['destroy','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','index','/:id','isAuthenticated','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','update','delete'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x496e,0x121));var _0xe496=function(_0xb818c3,_0x56f962){_0xb818c3=_0xb818c3-0x0;var _0x2abee4=_0x496e[_0xb818c3];return _0x2abee4;};'use strict';var multer=require('multer');var util=require(_0xe496('0x0'));var path=require('path');var timeout=require(_0xe496('0x1'));var express=require(_0xe496('0x2'));var router=express['Router']();var fs_extra=require(_0xe496('0x3'));var auth=require(_0xe496('0x4'));var interaction=require(_0xe496('0x5'));var config=require('../../config/environment');var controller=require(_0xe496('0x6'));router[_0xe496('0x7')]('/',auth['isAuthenticated'](),controller[_0xe496('0x8')]);router[_0xe496('0x7')](_0xe496('0x9'),auth[_0xe496('0xa')](),controller[_0xe496('0xb')]);router[_0xe496('0x7')](_0xe496('0xc'),auth[_0xe496('0xa')](),controller[_0xe496('0xd')]);router[_0xe496('0x7')](_0xe496('0xe'),auth[_0xe496('0xa')](),controller[_0xe496('0xf')]);router[_0xe496('0x7')](_0xe496('0x10'),auth[_0xe496('0xa')](),controller[_0xe496('0x11')]);router[_0xe496('0x12')]('/',auth[_0xe496('0xa')](),controller[_0xe496('0x13')]);router[_0xe496('0x14')]('/:id',auth[_0xe496('0xa')](),controller[_0xe496('0x15')]);router[_0xe496('0x16')](_0xe496('0x9'),auth[_0xe496('0xa')](),controller[_0xe496('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x5011=['isAuthenticated','index','show','/:id/preview','/:id/run','/:id/query','query','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','../../config/environment','./analyticCustomReport.controller','get'];(function(_0x1d6608,_0x163d37){var _0x25b5f9=function(_0x12e924){while(--_0x12e924){_0x1d6608['push'](_0x1d6608['shift']());}};_0x25b5f9(++_0x163d37);}(_0x5011,0x189));var _0x1501=function(_0x1d58b5,_0x1639c5){_0x1d58b5=_0x1d58b5-0x0;var _0x4cf978=_0x5011[_0x1d58b5];return _0x4cf978;};'use strict';var multer=require('multer');var util=require(_0x1501('0x0'));var path=require(_0x1501('0x1'));var timeout=require(_0x1501('0x2'));var express=require(_0x1501('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(_0x1501('0x4'));var controller=require(_0x1501('0x5'));router[_0x1501('0x6')]('/',auth[_0x1501('0x7')](),controller[_0x1501('0x8')]);router[_0x1501('0x6')]('/:id',auth[_0x1501('0x7')](),controller[_0x1501('0x9')]);router[_0x1501('0x6')](_0x1501('0xa'),auth[_0x1501('0x7')](),controller['preview']);router[_0x1501('0x6')](_0x1501('0xb'),auth[_0x1501('0x7')](),controller['run']);router['get'](_0x1501('0xc'),auth['isAuthenticated'](),controller[_0x1501('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1501('0xe')]);router['put'](_0x1501('0xf'),auth[_0x1501('0x7')](),controller[_0x1501('0x10')]);router[_0x1501('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1501('0x12')]);module[_0x1501('0x13')]=router;
\ No newline at end of file
index 325c40e..44848cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['exports','STRING','TEXT','sequelize'];(function(_0x1ac77b,_0x10ee7a){var _0x161584=function(_0x5a810d){while(--_0x5a810d){_0x1ac77b['push'](_0x1ac77b['shift']());}};_0x161584(++_0x10ee7a);}(_0x5fab,0x177));var _0xb5fa=function(_0x5e0e90,_0x1c8363){_0x5e0e90=_0x5e0e90-0x0;var _0x33cfe3=_0x5fab[_0x5e0e90];return _0x33cfe3;};'use strict';var Sequelize=require(_0xb5fa('0x0'));module[_0xb5fa('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb5fa('0x2')]},'parent':{'type':Sequelize[_0xb5fa('0x2')]},'table':{'type':Sequelize[_0xb5fa('0x2')]},'conditions':{'type':Sequelize[_0xb5fa('0x3')]},'joins':{'type':Sequelize[_0xb5fa('0x3')]}};
\ No newline at end of file
+var _0xafc4=['sequelize','STRING','TEXT'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xafc4,0x69));var _0x4afc=function(_0x38fbc2,_0x2ebb94){_0x38fbc2=_0x38fbc2-0x0;var _0x40dd51=_0xafc4[_0x38fbc2];return _0x40dd51;};'use strict';var Sequelize=require(_0x4afc('0x0'));module['exports']={'name':{'type':Sequelize[_0x4afc('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4afc('0x1')]},'table':{'type':Sequelize[_0x4afc('0x1')]},'conditions':{'type':Sequelize[_0x4afc('0x2')]},'joins':{'type':Sequelize[_0x4afc('0x2')]}};
\ No newline at end of file
index a6fd682..6d9da10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['keyBy','table','metric','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','from','countTable','COUNT(*)','SELECT','run','cross_join','COUNT(DISTINCT\x20%s)','debug','Limited\x20Query:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../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','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','error','stack','name','send','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','AnalyticDefaultReport','includeAll','include','findAll','rows','show','params','keys','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','body','preview','join','left_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','field','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','MetricId','function','replace','format','groupBy','group','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20NULL','IS\x20EMPTY','operator','condition'];(function(_0x468dac,_0x1ffdb3){var _0x62391=function(_0x4adf43){while(--_0x4adf43){_0x468dac['push'](_0x468dac['shift']());}};_0x62391(++_0x1ffdb3);}(_0x4819,0xcd));var _0x9481=function(_0x4b03c9,_0x17ce03){_0x4b03c9=_0x4b03c9-0x0;var _0x161ba2=_0x4819[_0x4b03c9];return _0x161ba2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9481('0x0'));var zipdir=require(_0x9481('0x1'));var jsonpatch=require(_0x9481('0x2'));var rp=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var BPromise=require(_0x9481('0x5'));var Mustache=require(_0x9481('0x6'));var util=require(_0x9481('0x7'));var path=require(_0x9481('0x8'));var sox=require(_0x9481('0x9'));var csv=require('to-csv');var ejs=require(_0x9481('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9481('0xb'));var crypto=require(_0x9481('0xc'));var jsforce=require(_0x9481('0xd'));var deskjs=require(_0x9481('0xe'));var toCsv=require(_0x9481('0xf'));var querystring=require('querystring');var Papa=require(_0x9481('0x10'));var Redis=require('ioredis');var authService=require(_0x9481('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9481('0x12'));var hardwareService=require(_0x9481('0x13'));var logger=require(_0x9481('0x14'))(_0x9481('0x15'));var utils=require(_0x9481('0x16'));var config=require(_0x9481('0x17'));var licenseUtil=require(_0x9481('0x18'));var db=require(_0x9481('0x19'))['db'];var dbH=require(_0x9481('0x19'))['dbH'];function respondWithStatusCode(_0x5aac02,_0xce6fa2){_0xce6fa2=_0xce6fa2||0xcc;return function(_0x150276){if(_0x150276){return _0x5aac02[_0x9481('0x1a')](_0xce6fa2);}return _0x5aac02[_0x9481('0x1b')](_0xce6fa2)[_0x9481('0x1c')]();};}function respondWithResult(_0xc7a0b5,_0x3fb97f){_0x3fb97f=_0x3fb97f||0xc8;return function(_0x495b30){if(_0x495b30){return _0xc7a0b5[_0x9481('0x1b')](_0x3fb97f)[_0x9481('0x1d')](_0x495b30);}};}function respondWithFilteredResult(_0x5b1fe6,_0x2266d5){return function(_0x518150){if(_0x518150){var _0x34108d=typeof _0x2266d5[_0x9481('0x1e')]===_0x9481('0x1f')&&typeof _0x2266d5[_0x9481('0x20')]==='undefined';var _0x5eda66=_0x518150[_0x9481('0x21')];var _0x50a559=_0x34108d?0x0:_0x2266d5['offset'];var _0x26671c=_0x34108d?_0x518150[_0x9481('0x21')]:_0x2266d5[_0x9481('0x1e')]+_0x2266d5[_0x9481('0x20')];var _0x7000e7;if(_0x26671c>=_0x5eda66){_0x26671c=_0x5eda66;_0x7000e7=0xc8;}else{_0x7000e7=0xce;}_0x5b1fe6[_0x9481('0x1b')](_0x7000e7);return _0x5b1fe6['set'](_0x9481('0x22'),_0x50a559+'-'+_0x26671c+'/'+_0x5eda66)[_0x9481('0x1d')](_0x518150);}return null;};}function patchUpdates(_0x45f9df){return function(_0x615e02){try{jsonpatch[_0x9481('0x23')](_0x615e02,_0x45f9df,!![]);}catch(_0x56da97){return BPromise[_0x9481('0x24')](_0x56da97);}return _0x615e02[_0x9481('0x25')]();};}function saveUpdates(_0x572599,_0x2bcf37){return function(_0xd1cd1a){if(_0xd1cd1a){return _0xd1cd1a[_0x9481('0x26')](_0x572599)[_0x9481('0x27')](function(_0x2dc02e){return _0x2dc02e;});}return null;};}function removeEntity(_0x49ecfa,_0x91e3d9){return function(_0x22f0b5){if(_0x22f0b5){return _0x22f0b5['destroy']()['then'](function(){var _0x12b0c3=_0x22f0b5[_0x9481('0x28')]({'plain':!![]});var _0x550fce=_0x9481('0x29');return db[_0x9481('0x2a')][_0x9481('0x2b')]({'where':{'type':_0x550fce,'resourceId':_0x12b0c3['id']}})[_0x9481('0x27')](function(){return _0x22f0b5;});})['then'](function(){_0x49ecfa[_0x9481('0x1b')](0xcc)[_0x9481('0x1c')]();});}};}function handleEntityNotFound(_0x3c2585,_0x587706){return function(_0x1791b2){if(!_0x1791b2){_0x3c2585['sendStatus'](0x194);}return _0x1791b2;};}function handleError(_0x2e1eff,_0xe153ab){_0xe153ab=_0xe153ab||0x1f4;return function(_0x22ab26){logger[_0x9481('0x2c')](_0x22ab26[_0x9481('0x2d')]);if(_0x22ab26['name']){delete _0x22ab26[_0x9481('0x2e')];}_0x2e1eff[_0x9481('0x1b')](_0xe153ab)[_0x9481('0x2f')](_0x22ab26);};}exports['index']=function(_0x56752e,_0x1addc8){var _0x427c25={},_0x42df68={},_0x2b33f8={'count':0x0,'rows':[]};var _0x5d9926=_['map'](db['AnalyticDefaultReport'][_0x9481('0x30')],function(_0x5d6c65){return{'name':_0x5d6c65[_0x9481('0x31')],'type':_0x5d6c65['type'][_0x9481('0x32')]};});_0x42df68[_0x9481('0x33')]=_[_0x9481('0x34')](_0x5d9926,_0x9481('0x2e'));_0x42df68[_0x9481('0x35')]=_['keys'](_0x56752e[_0x9481('0x35')]);_0x42df68[_0x9481('0x36')]=_[_0x9481('0x37')](_0x42df68['model'],_0x42df68[_0x9481('0x35')]);_0x427c25[_0x9481('0x38')]=_[_0x9481('0x37')](_0x42df68[_0x9481('0x33')],qs[_0x9481('0x39')](_0x56752e[_0x9481('0x35')]['fields']));_0x427c25[_0x9481('0x38')]=_0x427c25['attributes'][_0x9481('0x3a')]?_0x427c25[_0x9481('0x38')]:_0x42df68[_0x9481('0x33')];if(!_0x56752e[_0x9481('0x35')][_0x9481('0x3b')](_0x9481('0x3c'))){_0x427c25['limit']=qs[_0x9481('0x20')](_0x56752e[_0x9481('0x35')]['limit']);_0x427c25['offset']=qs[_0x9481('0x1e')](_0x56752e['query'][_0x9481('0x1e')]);}_0x427c25[_0x9481('0x3d')]=qs[_0x9481('0x3e')](_0x56752e[_0x9481('0x35')]['sort']);_0x427c25[_0x9481('0x3f')]=qs['filters'](_[_0x9481('0x40')](_0x56752e['query'],_0x42df68[_0x9481('0x36')]),_0x5d9926);if(_0x56752e['query'][_0x9481('0x41')]){_0x427c25[_0x9481('0x3f')]=_[_0x9481('0x42')](_0x427c25[_0x9481('0x3f')],{'$or':_[_0x9481('0x34')](_0x5d9926,function(_0x3b7998){if(_0x3b7998[_0x9481('0x43')]!=='VIRTUAL'){var _0x464080={};_0x464080[_0x3b7998[_0x9481('0x2e')]]={'$like':'%'+_0x56752e[_0x9481('0x35')][_0x9481('0x41')]+'%'};return _0x464080;}})});}_0x427c25=_[_0x9481('0x42')]({},_0x427c25,_0x56752e[_0x9481('0x44')]);var _0x2e4241={'where':_0x427c25['where']};return db[_0x9481('0x45')][_0x9481('0x21')](_0x2e4241)['then'](function(_0x704e81){_0x2b33f8[_0x9481('0x21')]=_0x704e81;if(_0x56752e[_0x9481('0x35')][_0x9481('0x46')]){_0x427c25[_0x9481('0x47')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x9481('0x48')](_0x427c25);})['then'](function(_0x23811a){_0x2b33f8[_0x9481('0x49')]=_0x23811a;return _0x2b33f8;})['then'](respondWithFilteredResult(_0x1addc8,_0x427c25))['catch'](handleError(_0x1addc8,null));};exports[_0x9481('0x4a')]=function(_0x1d0df0,_0x42b19a){var _0x4c4caf={'raw':!![],'where':{'id':_0x1d0df0[_0x9481('0x4b')]['id']}},_0x4402f6={};_0x4402f6['model']=_['keys'](db[_0x9481('0x45')]['rawAttributes']);_0x4402f6[_0x9481('0x35')]=_[_0x9481('0x4c')](_0x1d0df0[_0x9481('0x35')]);_0x4402f6[_0x9481('0x36')]=_[_0x9481('0x37')](_0x4402f6['model'],_0x4402f6[_0x9481('0x35')]);_0x4c4caf[_0x9481('0x38')]=_['intersection'](_0x4402f6[_0x9481('0x33')],qs[_0x9481('0x39')](_0x1d0df0[_0x9481('0x35')][_0x9481('0x39')]));_0x4c4caf[_0x9481('0x38')]=_0x4c4caf[_0x9481('0x38')][_0x9481('0x3a')]?_0x4c4caf[_0x9481('0x38')]:_0x4402f6[_0x9481('0x33')];if(_0x1d0df0['query'][_0x9481('0x46')]){_0x4c4caf['include']=[{'all':!![]}];}_0x4c4caf=_['merge']({},_0x4c4caf,_0x1d0df0[_0x9481('0x44')]);return db['AnalyticDefaultReport'][_0x9481('0x4d')](_0x4c4caf)[_0x9481('0x27')](handleEntityNotFound(_0x42b19a,null))['then'](respondWithResult(_0x42b19a,null))[_0x9481('0x4e')](handleError(_0x42b19a,null));};exports[_0x9481('0x4f')]=function(_0x2f3413,_0x13b674){return db[_0x9481('0x45')][_0x9481('0x4f')](_0x2f3413['body'],{})['then'](function(_0x424b22){var _0x44d7e0=_0x2f3413[_0x9481('0x50')][_0x9481('0x28')]({'plain':!![]});if(!_0x44d7e0)throw new Error(_0x9481('0x51'));if(_0x44d7e0[_0x9481('0x52')]===_0x9481('0x50')){var _0x3d2250=_0x424b22['get']({'plain':!![]});var _0x3972c1=_0x9481('0x53');return db[_0x9481('0x54')][_0x9481('0x4d')]({'where':{'name':_0x3972c1,'userProfileId':_0x44d7e0[_0x9481('0x55')]},'raw':!![]})['then'](function(_0x4c3048){if(_0x4c3048&&_0x4c3048[_0x9481('0x56')]===0x0){return db[_0x9481('0x2a')][_0x9481('0x4f')]({'name':_0x3d2250['name'],'resourceId':_0x3d2250['id'],'type':'DefaultReports','sectionId':_0x4c3048['id']},{})['then'](function(){return _0x424b22;});}else{return _0x424b22;}})['catch'](function(_0x538507){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x538507);throw _0x538507;});}return _0x424b22;})[_0x9481('0x27')](respondWithResult(_0x13b674,0xc9))[_0x9481('0x4e')](handleError(_0x13b674,null));};exports['update']=function(_0xd8351c,_0x5f210c){if(_0xd8351c[_0x9481('0x57')]['id']){delete _0xd8351c[_0x9481('0x57')]['id'];}return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0xd8351c[_0x9481('0x4b')]['id']}})[_0x9481('0x27')](handleEntityNotFound(_0x5f210c,null))[_0x9481('0x27')](saveUpdates(_0xd8351c['body'],null))[_0x9481('0x27')](respondWithResult(_0x5f210c,null))[_0x9481('0x4e')](handleError(_0x5f210c,null));};exports['destroy']=function(_0x16416a,_0x1240dc){return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0x16416a[_0x9481('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1240dc,null))[_0x9481('0x27')](removeEntity(_0x1240dc,null))[_0x9481('0x4e')](handleError(_0x1240dc,null));};exports[_0x9481('0x58')]=function(_0x3fc0f9,_0x559dd2){var _0x3ac428=0xa;var _0x2927f5=[_0x9481('0x59'),_0x9481('0x5a'),'right_join','cross_join'];var _0x5b4234={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x589b16={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x239676=function(_0x205b96){return!_['includes'](['IS\x20NULL',_0x9481('0x67'),'IS\x20EMPTY',_0x9481('0x68')],_0x205b96);};var _0x59637f=function(_0x9af916){if(!_0x9af916||!_0x9af916[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x492464='(',_0x28d331=0x0;_0x28d331<_0x9af916[_0x9481('0x69')]['length'];_0x28d331+=0x1){_0x28d331>0x0&&(_0x492464+='\x20'+_0x9af916['operator']+'\x20');_0x492464+=_0x9af916['rules'][_0x28d331]['group']?_0x59637f(_0x9af916[_0x9481('0x69')][_0x28d331]['group']):_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6a')]+'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331]['condition']+(_0x239676(_0x9af916[_0x9481('0x69')][_0x28d331]['condition'])?'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6b')]:'');}return _0x492464+')';};var _0x3c267b={'where':{'id':_0x3fc0f9[_0x9481('0x4b')]['id']}},_0x4f157d,_0x2f20b4,_0x40fed2,_0x4ff016,_0x321972;_0x3c267b=_[_0x9481('0x42')]({},_0x3c267b,_0x3fc0f9[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x3c267b)[_0x9481('0x27')](function(_0x32ebde){if(_0x32ebde){_0x4f157d=_0x32ebde;return _0x32ebde[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x237d9b){if(_0x237d9b){if(!_0x237d9b[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x2f20b4=_0x237d9b;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})['then'](function(_0x1e05f8){if(_0x1e05f8){_0x40fed2=_['keyBy'](_0x1e05f8,'id');var _0x47bf37;var _0x1a7892=squel['select']();_0x1a7892['from'](_0x4f157d['table']);for(var _0x1b1967=0x0;_0x1b1967<_0x2f20b4[_0x9481('0x3a')];_0x1b1967+=0x1){_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x71')]?_0x40fed2[_0x2f20b4[_0x1b1967][_0x9481('0x71')]]['metric']:_0x2f20b4[_0x1b1967][_0x9481('0x6a')];_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x72')]?_[_0x9481('0x73')](_0x5b4234[_0x2f20b4[_0x1b1967][_0x9481('0x72')]],'%s',_0x47bf37):_0x47bf37;_0x47bf37=_0x2f20b4[_0x1b1967]['format']?_['replace'](_0x589b16[_0x2f20b4[_0x1b1967][_0x9481('0x74')]],'%s',_0x47bf37):_0x47bf37;if(_0x2f20b4[_0x1b1967][_0x9481('0x75')]){_0x1a7892[_0x9481('0x76')](_0x47bf37);}_0x2f20b4[_0x1b1967][_0x9481('0x77')]&&_0x1a7892[_0x9481('0x3d')](_0x47bf37,_0x2f20b4[_0x1b1967]['orderBy']===_0x9481('0x78')?![]:!![]);_0x1a7892[_0x9481('0x6a')](_0x47bf37,_0x2f20b4[_0x1b1967][_0x9481('0x79')]||_0x47bf37);}if(_0x4f157d[_0x9481('0x7a')]){_0x4f157d[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x4f157d[_0x9481('0x7a')]);for(var _0x42a6d2=0x0;_0x42a6d2<_0x4f157d[_0x9481('0x7a')][_0x9481('0x3a')];_0x42a6d2+=0x1){if(_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2927f5,_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')])&&_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7d')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7e')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7f')]){_0x1a7892[_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]](_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x4f157d['table'],_0x4f157d[_0x9481('0x7a')][_0x42a6d2]['parentKey'],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7f')]));}}}if(_0x4f157d[_0x9481('0x80')]){_0x4f157d[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x4f157d['conditions']);_0x1a7892[_0x9481('0x3f')](_0x59637f(_0x4f157d['conditions'][_0x9481('0x76')]));}_0x321972=_0x1a7892[_0x9481('0x81')]();_0x1a7892[_0x9481('0x20')](_0x3ac428);_0x1a7892['offset'](0x0);logger['debug']('Limited\x20Query:',_0x1a7892[_0x9481('0x82')]());return dbH['sequelize']['query'](_0x1a7892[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')]['SELECT']});}})[_0x9481('0x27')](respondWithResult(_0x559dd2,null))[_0x9481('0x4e')](handleError(_0x559dd2,null));};function runReport(_0x545457,_0x226932,_0x3c8241){var _0x1ea93a=_0x226932[_0x9481('0x2e')];var _0x5f4be2=0xa;var _0x2e585d=['join',_0x9481('0x5a'),_0x9481('0x85'),'cross_join'];var _0x1c82a1={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x9481('0x5e'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x55b428={'SEC_TO_TIME':_0x9481('0x86'),'DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9481('0x66')};var _0x31e097=function(_0x339a30){return!_[_0x9481('0x7c')]([_0x9481('0x87'),_0x9481('0x67'),_0x9481('0x88'),_0x9481('0x68')],_0x339a30);};var _0x22e787=function(_0x31b70b){if(!_0x31b70b||!_0x31b70b['rules'][_0x9481('0x3a')]){return'';}for(var _0x5c430e='(',_0x4f55b5=0x0;_0x4f55b5<_0x31b70b['rules'][_0x9481('0x3a')];_0x4f55b5+=0x1){_0x4f55b5>0x0&&(_0x5c430e+='\x20'+_0x31b70b[_0x9481('0x89')]+'\x20');_0x5c430e+=_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x76')]?_0x22e787(_0x31b70b[_0x9481('0x69')][_0x4f55b5]['group']):_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6a')]+'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')]+(_0x31e097(_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')])?'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6b')]:'');}return _0x5c430e+')';};var _0x28d924={'where':{'id':_0x545457['id']}},_0x426d56,_0x5808c8,_0x27be69,_0x1d49ba,_0x458a6f;_0x28d924=_[_0x9481('0x42')]({},_0x28d924,_0x3c8241);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x28d924)[_0x9481('0x27')](function(_0x1173e9){if(_0x1173e9){_0x426d56=_0x1173e9;return _0x1173e9[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x5557d7){if(_0x5557d7){if(!_0x5557d7[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x5808c8=_0x5557d7;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x3ae3e2){if(_0x3ae3e2){_0x27be69=_[_0x9481('0x8b')](_0x3ae3e2,'id');var _0x538fe0;var _0x44e2c2=squel['select']();_0x44e2c2['from'](_0x426d56[_0x9481('0x8c')]);for(var _0x382455=0x0;_0x382455<_0x5808c8[_0x9481('0x3a')];_0x382455+=0x1){_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x71')]?_0x27be69[_0x5808c8[_0x382455][_0x9481('0x71')]][_0x9481('0x8d')]:_0x5808c8[_0x382455]['field'];_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x72')]?_['replace'](_0x1c82a1[_0x5808c8[_0x382455][_0x9481('0x72')]],'%s',_0x538fe0):_0x538fe0;_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x74')]?_[_0x9481('0x73')](_0x55b428[_0x5808c8[_0x382455]['format']],'%s',_0x538fe0):_0x538fe0;if(_0x5808c8[_0x382455]['groupBy']){_0x44e2c2[_0x9481('0x76')](_0x538fe0);}_0x5808c8[_0x382455][_0x9481('0x77')]&&_0x44e2c2[_0x9481('0x3d')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x44e2c2[_0x9481('0x6a')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x79')]||_0x538fe0);}if(_0x426d56[_0x9481('0x7a')]){_0x426d56[_0x9481('0x7a')]=JSON['parse'](_0x426d56[_0x9481('0x7a')]);for(var _0xd64114=0x0;_0xd64114<_0x426d56['joins'][_0x9481('0x3a')];_0xd64114+=0x1){if(_0x426d56['joins'][_0xd64114][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2e585d,_0x426d56['joins'][_0xd64114][_0x9481('0x43')])&&_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')]&&_0x426d56['joins'][_0xd64114][_0x9481('0x7e')]&&_0x426d56[_0x9481('0x7a')][_0xd64114]['foreignKey']){_0x44e2c2[_0x426d56[_0x9481('0x7a')][_0xd64114]['type']](_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x426d56['table'],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7f')]));}}}if(_0x426d56['conditions']){_0x426d56[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x426d56[_0x9481('0x80')]);_0x44e2c2[_0x9481('0x3f')](_0x22e787(_0x426d56[_0x9481('0x80')][_0x9481('0x76')]));}_0x458a6f=_0x44e2c2[_0x9481('0x81')]();_0x44e2c2['limit'](_0x5f4be2);_0x44e2c2[_0x9481('0x1e')](0x0);return;}})[_0x9481('0x27')](function(){if(_0x226932[_0x9481('0x8e')]===_0x9481('0x8f')){return null;}var _0x4e5a8d=_[_0x9481('0x42')](_0x226932,{'name':_0x226932[_0x9481('0x90')]||_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],'basename':_0x1ea93a,'savename':util['format'](_0x9481('0x91'),_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],require(_0x9481('0x92'))[_0x9481('0x93')](0x4),_0x226932[_0x9481('0x8e')]||_0x9481('0x94')),'reportId':_0x426d56['id'],'reportType':_0x9481('0x95')});return db[_0x9481('0x96')][_0x9481('0x4f')](_0x4e5a8d,{'raw':!![]});})[_0x9481('0x27')](function(_0x5930d6){if(_0x426d56[_0x9481('0x8c')]==='cdr'){_0x458a6f[_0x9481('0x3f')](_0x426d56[_0x9481('0x8c')]+_0x9481('0x97'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}else{_0x458a6f['where'](_0x426d56[_0x9481('0x8c')]+_0x9481('0x9a'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}if(_0x5930d6){logger[_0x9481('0x9b')](_0x9481('0x9c'),_0x458a6f['toString']());require(_0x9481('0x9d'))[_0x9481('0x9e')](path[_0x9481('0x59')](__dirname,_0x9481('0x9f'),_0x5930d6[_0x9481('0x8e')]),[_0x5930d6['id'],_0x458a6f[_0x9481('0x82')](),path[_0x9481('0x59')](__dirname,_0x9481('0xa0'),_0x5930d6[_0x9481('0xa1')]),_0x1ea93a]);return _0x5930d6;}else{var _0x26a666=squel[_0x9481('0xa2')]();_0x26a666[_0x9481('0xa3')]('('+_0x458a6f['toString']()+')',_0x9481('0xa4'));_0x26a666[_0x9481('0x6a')](_0x9481('0xa5'),_0x9481('0x21'));_0x458a6f[_0x9481('0x20')](_0x226932[_0x9481('0x20')]||_0x5f4be2);_0x458a6f[_0x9481('0x1e')](_0x226932[_0x9481('0x1e')]||0x0);return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x26a666[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]})[_0x9481('0x27')](function(_0xcf83d2){if(!_0xcf83d2[_0x9481('0x3a')]){_0x1d49ba=0x0;}else{_0x1d49ba=_0xcf83d2[0x0][_0x9481('0x21')]||0x0;}return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x458a6f['toString'](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});})[_0x9481('0x27')](function(_0x4553fc){return{'rows':_0x4553fc||[],'count':_0x1d49ba};});}});}exports[_0x9481('0xa7')]=function(_0x55c4ab,_0x57928a){return runReport(_0x55c4ab[_0x9481('0x4b')],_0x55c4ab[_0x9481('0x35')],_0x55c4ab[_0x9481('0x44')])[_0x9481('0x27')](respondWithResult(_0x57928a,null))['catch'](handleError(_0x57928a,null));};exports['runReport']=runReport;exports['query']=function(_0x52b980,_0x5792b1){var _0x3a199b=0xa;var _0x4b779b=[_0x9481('0x59'),_0x9481('0x5a'),_0x9481('0x85'),_0x9481('0xa8')];var _0x55a65f={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':_0x9481('0xa9'),'MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x583490={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':'HOUR(%s)','ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x1e40fe=function(_0x26c87b){return!_[_0x9481('0x7c')](['IS\x20NULL',_0x9481('0x67'),_0x9481('0x88'),'IS\x20NOT\x20EMPTY'],_0x26c87b);};var _0x4ea411=function(_0x1cdca0){if(!_0x1cdca0||!_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x15c53f='(',_0x7ee854=0x0;_0x7ee854<_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')];_0x7ee854+=0x1){_0x7ee854>0x0&&(_0x15c53f+='\x20'+_0x1cdca0[_0x9481('0x89')]+'\x20');_0x15c53f+=_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x76')]?_0x4ea411(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x76')]):_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x6a')]+'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x8a')]+(_0x1e40fe(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x8a')])?'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854]['value']:'');}return _0x15c53f+')';};var _0x49a6db={'where':{'id':_0x52b980['params']['id']}},_0x224b16,_0x83543f,_0x58c043,_0x97a67a,_0xe157e4;_0x49a6db=_[_0x9481('0x42')]({},_0x49a6db,_0x52b980[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x49a6db)['then'](function(_0x1a1058){if(_0x1a1058){_0x224b16=_0x1a1058;return _0x1a1058['getFields']();}return null;})[_0x9481('0x27')](function(_0x206661){if(_0x206661){if(!_0x206661[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x83543f=_0x206661;return db['AnalyticMetric'][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x40cdf9){if(_0x40cdf9){_0x58c043=_['keyBy'](_0x40cdf9,'id');var _0x5467fe;var _0x440d88=squel['select']();_0x440d88[_0x9481('0xa3')](_0x224b16['table']);for(var _0x2a0367=0x0;_0x2a0367<_0x83543f[_0x9481('0x3a')];_0x2a0367+=0x1){_0x5467fe=_0x83543f[_0x2a0367]['MetricId']?_0x58c043[_0x83543f[_0x2a0367][_0x9481('0x71')]][_0x9481('0x8d')]:_0x83543f[_0x2a0367][_0x9481('0x6a')];_0x5467fe=_0x83543f[_0x2a0367]['function']?_[_0x9481('0x73')](_0x55a65f[_0x83543f[_0x2a0367][_0x9481('0x72')]],'%s',_0x5467fe):_0x5467fe;_0x5467fe=_0x83543f[_0x2a0367][_0x9481('0x74')]?_[_0x9481('0x73')](_0x583490[_0x83543f[_0x2a0367][_0x9481('0x74')]],'%s',_0x5467fe):_0x5467fe;if(_0x83543f[_0x2a0367][_0x9481('0x75')]){_0x440d88[_0x9481('0x76')](_0x5467fe);}_0x83543f[_0x2a0367]['orderBy']&&_0x440d88[_0x9481('0x3d')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x440d88[_0x9481('0x6a')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x79')]||_0x5467fe);}if(_0x224b16['joins']){_0x224b16[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x7a')]);for(var _0x527ef6=0x0;_0x527ef6<_0x224b16['joins'][_0x9481('0x3a')];_0x527ef6+=0x1){if(_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x4b779b,_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')])&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7d')]&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')]&&_0x224b16['joins'][_0x527ef6][_0x9481('0x7f')]){_0x440d88[_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]](_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x224b16[_0x9481('0x8c')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['parentKey'],_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['foreignKey']));}}}if(_0x224b16[_0x9481('0x80')]){_0x224b16[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x80')]);_0x440d88['where'](_0x4ea411(_0x224b16[_0x9481('0x80')][_0x9481('0x76')]));}_0xe157e4=_0x440d88[_0x9481('0x81')]();_0x440d88[_0x9481('0x20')](_0x3a199b);_0x440d88['offset'](0x0);logger[_0x9481('0xaa')](_0x9481('0xab'),_0x440d88[_0x9481('0x82')]());return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x440d88[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});}})[_0x9481('0x27')](function(){return{'sql':_0xe157e4['toString']()};})[_0x9481('0x27')](respondWithResult(_0x5792b1,null))[_0x9481('0x4e')](handleError(_0x5792b1,null));};
\ No newline at end of file
+var _0x1261=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','limit','undefined','set','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','error','name','index','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','count','include','findAll','rows','show','length','includeAll','options','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','conditions','parse','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','AVG(%s)','DATE(%s)','value','keyBy','select','order','%s.%s\x20=\x20%s.%s','clone','web','fullPath','randomstring','generate','output','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','Run\x20Query:','../../components/export/','savename','COUNT(*)','run','runReport','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','debug'];(function(_0x2003e7,_0x84c23b){var _0x5ccbab=function(_0x230907){while(--_0x230907){_0x2003e7['push'](_0x2003e7['shift']());}};_0x5ccbab(++_0x84c23b);}(_0x1261,0x144));var _0x1126=function(_0x2dd976,_0x1b5dc4){_0x2dd976=_0x2dd976-0x0;var _0x2265fd=_0x1261[_0x2dd976];return _0x2265fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1126('0x0'));var zipdir=require(_0x1126('0x1'));var jsonpatch=require(_0x1126('0x2'));var rp=require(_0x1126('0x3'));var moment=require(_0x1126('0x4'));var BPromise=require(_0x1126('0x5'));var Mustache=require(_0x1126('0x6'));var util=require(_0x1126('0x7'));var path=require(_0x1126('0x8'));var sox=require(_0x1126('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1126('0xa'));var _=require(_0x1126('0xb'));var squel=require('squel');var crypto=require(_0x1126('0xc'));var jsforce=require(_0x1126('0xd'));var deskjs=require(_0x1126('0xe'));var toCsv=require(_0x1126('0xf'));var querystring=require(_0x1126('0x10'));var Papa=require('papaparse');var Redis=require(_0x1126('0x11'));var authService=require(_0x1126('0x12'));var qs=require(_0x1126('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1126('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1126('0x16'));var db=require(_0x1126('0x17'))['db'];var dbH=require(_0x1126('0x17'))[_0x1126('0x18')];function respondWithStatusCode(_0xca0355,_0x3f10e9){_0x3f10e9=_0x3f10e9||0xcc;return function(_0xd8ca42){if(_0xd8ca42){return _0xca0355[_0x1126('0x19')](_0x3f10e9);}return _0xca0355[_0x1126('0x1a')](_0x3f10e9)['end']();};}function respondWithResult(_0x5de9a7,_0x1af673){_0x1af673=_0x1af673||0xc8;return function(_0x154e20){if(_0x154e20){return _0x5de9a7[_0x1126('0x1a')](_0x1af673)['json'](_0x154e20);}};}function respondWithFilteredResult(_0x45149c,_0x4794a7){return function(_0x35fe9f){if(_0x35fe9f){var _0x42f379=typeof _0x4794a7[_0x1126('0x1b')]==='undefined'&&typeof _0x4794a7[_0x1126('0x1c')]===_0x1126('0x1d');var _0x4a7b49=_0x35fe9f['count'];var _0x22ae0b=_0x42f379?0x0:_0x4794a7[_0x1126('0x1b')];var _0x58d11a=_0x42f379?_0x35fe9f['count']:_0x4794a7[_0x1126('0x1b')]+_0x4794a7['limit'];var _0x22ed37;if(_0x58d11a>=_0x4a7b49){_0x58d11a=_0x4a7b49;_0x22ed37=0xc8;}else{_0x22ed37=0xce;}_0x45149c[_0x1126('0x1a')](_0x22ed37);return _0x45149c[_0x1126('0x1e')]('Content-Range',_0x22ae0b+'-'+_0x58d11a+'/'+_0x4a7b49)[_0x1126('0x1f')](_0x35fe9f);}return null;};}function patchUpdates(_0x49d209){return function(_0x56efeb){try{jsonpatch[_0x1126('0x20')](_0x56efeb,_0x49d209,!![]);}catch(_0x3a9bed){return BPromise[_0x1126('0x21')](_0x3a9bed);}return _0x56efeb[_0x1126('0x22')]();};}function saveUpdates(_0x526ca1,_0x29ab60){return function(_0x477e6a){if(_0x477e6a){return _0x477e6a['update'](_0x526ca1)[_0x1126('0x23')](function(_0x59cd8e){return _0x59cd8e;});}return null;};}function removeEntity(_0x529dd9,_0x4b57ab){return function(_0x2199d9){if(_0x2199d9){return _0x2199d9[_0x1126('0x24')]()[_0x1126('0x23')](function(){var _0x34bcf1=_0x2199d9[_0x1126('0x25')]({'plain':!![]});var _0x1b07a7=_0x1126('0x26');return db[_0x1126('0x27')]['destroy']({'where':{'type':_0x1b07a7,'resourceId':_0x34bcf1['id']}})[_0x1126('0x23')](function(){return _0x2199d9;});})[_0x1126('0x23')](function(){_0x529dd9[_0x1126('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x541bc9,_0xeb7d89){return function(_0x39bf0e){if(!_0x39bf0e){_0x541bc9['sendStatus'](0x194);}return _0x39bf0e;};}function handleError(_0x2fb797,_0x23d2bc){_0x23d2bc=_0x23d2bc||0x1f4;return function(_0x4a334a){logger[_0x1126('0x28')](_0x4a334a['stack']);if(_0x4a334a[_0x1126('0x29')]){delete _0x4a334a['name'];}_0x2fb797[_0x1126('0x1a')](_0x23d2bc)['send'](_0x4a334a);};}exports[_0x1126('0x2a')]=function(_0x5f2611,_0x5252e0){var _0x4a53ab={},_0x17646e={},_0xa8906d={'count':0x0,'rows':[]};var _0x1cef48=_['map'](db[_0x1126('0x2b')][_0x1126('0x2c')],function(_0x56f7f8){return{'name':_0x56f7f8[_0x1126('0x2d')],'type':_0x56f7f8[_0x1126('0x2e')][_0x1126('0x2f')]};});_0x17646e[_0x1126('0x30')]=_['map'](_0x1cef48,'name');_0x17646e[_0x1126('0x31')]=_[_0x1126('0x32')](_0x5f2611[_0x1126('0x31')]);_0x17646e[_0x1126('0x33')]=_['intersection'](_0x17646e[_0x1126('0x30')],_0x17646e[_0x1126('0x31')]);_0x4a53ab[_0x1126('0x34')]=_[_0x1126('0x35')](_0x17646e[_0x1126('0x30')],qs['fields'](_0x5f2611[_0x1126('0x31')][_0x1126('0x36')]));_0x4a53ab[_0x1126('0x34')]=_0x4a53ab[_0x1126('0x34')]['length']?_0x4a53ab['attributes']:_0x17646e[_0x1126('0x30')];if(!_0x5f2611[_0x1126('0x31')]['hasOwnProperty'](_0x1126('0x37'))){_0x4a53ab[_0x1126('0x1c')]=qs[_0x1126('0x1c')](_0x5f2611['query']['limit']);_0x4a53ab[_0x1126('0x1b')]=qs[_0x1126('0x1b')](_0x5f2611[_0x1126('0x31')][_0x1126('0x1b')]);}_0x4a53ab['order']=qs[_0x1126('0x38')](_0x5f2611['query'][_0x1126('0x38')]);_0x4a53ab[_0x1126('0x39')]=qs[_0x1126('0x33')](_[_0x1126('0x3a')](_0x5f2611[_0x1126('0x31')],_0x17646e['filters']),_0x1cef48);if(_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]){_0x4a53ab[_0x1126('0x39')]=_[_0x1126('0x3c')](_0x4a53ab[_0x1126('0x39')],{'$or':_[_0x1126('0x3d')](_0x1cef48,function(_0x3052f9){if(_0x3052f9['type']!==_0x1126('0x3e')){var _0x154c28={};_0x154c28[_0x3052f9[_0x1126('0x29')]]={'$like':'%'+_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]+'%'};return _0x154c28;}})});}_0x4a53ab=_['merge']({},_0x4a53ab,_0x5f2611['options']);var _0x1c4f06={'where':_0x4a53ab[_0x1126('0x39')]};return db[_0x1126('0x2b')][_0x1126('0x3f')](_0x1c4f06)[_0x1126('0x23')](function(_0x276fd5){_0xa8906d['count']=_0x276fd5;if(_0x5f2611['query']['includeAll']){_0x4a53ab[_0x1126('0x40')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x1126('0x41')](_0x4a53ab);})[_0x1126('0x23')](function(_0x3584a3){_0xa8906d[_0x1126('0x42')]=_0x3584a3;return _0xa8906d;})['then'](respondWithFilteredResult(_0x5252e0,_0x4a53ab))['catch'](handleError(_0x5252e0,null));};exports[_0x1126('0x43')]=function(_0xa93167,_0x1d63b9){var _0x5f5d3a={'raw':!![],'where':{'id':_0xa93167['params']['id']}},_0x2f8551={};_0x2f8551[_0x1126('0x30')]=_['keys'](db[_0x1126('0x2b')][_0x1126('0x2c')]);_0x2f8551[_0x1126('0x31')]=_['keys'](_0xa93167[_0x1126('0x31')]);_0x2f8551[_0x1126('0x33')]=_[_0x1126('0x35')](_0x2f8551['model'],_0x2f8551['query']);_0x5f5d3a['attributes']=_[_0x1126('0x35')](_0x2f8551['model'],qs[_0x1126('0x36')](_0xa93167['query'][_0x1126('0x36')]));_0x5f5d3a[_0x1126('0x34')]=_0x5f5d3a[_0x1126('0x34')][_0x1126('0x44')]?_0x5f5d3a[_0x1126('0x34')]:_0x2f8551['model'];if(_0xa93167[_0x1126('0x31')][_0x1126('0x45')]){_0x5f5d3a['include']=[{'all':!![]}];}_0x5f5d3a=_[_0x1126('0x3c')]({},_0x5f5d3a,_0xa93167[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x5f5d3a)[_0x1126('0x23')](handleEntityNotFound(_0x1d63b9,null))['then'](respondWithResult(_0x1d63b9,null))[_0x1126('0x48')](handleError(_0x1d63b9,null));};exports[_0x1126('0x49')]=function(_0x213a76,_0x59656d){return db[_0x1126('0x2b')][_0x1126('0x49')](_0x213a76[_0x1126('0x4a')],{})[_0x1126('0x23')](function(_0x224456){var _0x2081f2=_0x213a76[_0x1126('0x4b')][_0x1126('0x25')]({'plain':!![]});if(!_0x2081f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2081f2[_0x1126('0x4c')]==='user'){var _0x40168e=_0x224456[_0x1126('0x25')]({'plain':!![]});var _0x4a1831='Reports';return db[_0x1126('0x4d')][_0x1126('0x47')]({'where':{'name':_0x4a1831,'userProfileId':_0x2081f2[_0x1126('0x4e')]},'raw':!![]})['then'](function(_0x3cb44c){if(_0x3cb44c&&_0x3cb44c[_0x1126('0x4f')]===0x0){return db[_0x1126('0x27')][_0x1126('0x49')]({'name':_0x40168e['name'],'resourceId':_0x40168e['id'],'type':_0x1126('0x26'),'sectionId':_0x3cb44c['id']},{})[_0x1126('0x23')](function(){return _0x224456;});}else{return _0x224456;}})['catch'](function(_0x4bcc08){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bcc08);throw _0x4bcc08;});}return _0x224456;})[_0x1126('0x23')](respondWithResult(_0x59656d,0xc9))[_0x1126('0x48')](handleError(_0x59656d,null));};exports['update']=function(_0x16552b,_0x1c7a2b){if(_0x16552b[_0x1126('0x4a')]['id']){delete _0x16552b[_0x1126('0x4a')]['id'];}return db[_0x1126('0x2b')]['find']({'where':{'id':_0x16552b[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x1c7a2b,null))['then'](saveUpdates(_0x16552b[_0x1126('0x4a')],null))[_0x1126('0x23')](respondWithResult(_0x1c7a2b,null))[_0x1126('0x48')](handleError(_0x1c7a2b,null));};exports[_0x1126('0x24')]=function(_0xc8a0f,_0x59c3d0){return db[_0x1126('0x2b')]['find']({'where':{'id':_0xc8a0f[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x59c3d0,null))[_0x1126('0x23')](removeEntity(_0x59c3d0,null))['catch'](handleError(_0x59c3d0,null));};exports[_0x1126('0x51')]=function(_0x2340f8,_0x5763b4){var _0x30812d=0xa;var _0x25038f=[_0x1126('0x52'),'left_join',_0x1126('0x53'),_0x1126('0x54')];var _0x22ab18={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x2a5422={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':'DATE(%s)','HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3767e4=function(_0x5246aa){return!_[_0x1126('0x60')]([_0x1126('0x61'),'IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0x5246aa);};var _0x375b76=function(_0x592960){if(!_0x592960||!_0x592960[_0x1126('0x64')]['length']){return'';}for(var _0x558b6e='(',_0xbdc58=0x0;_0xbdc58<_0x592960[_0x1126('0x64')][_0x1126('0x44')];_0xbdc58+=0x1){_0xbdc58>0x0&&(_0x558b6e+='\x20'+_0x592960[_0x1126('0x65')]+'\x20');_0x558b6e+=_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x66')]?_0x375b76(_0x592960[_0x1126('0x64')][_0xbdc58]['group']):_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x67')]+'\x20'+_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')]+(_0x3767e4(_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')])?'\x20'+_0x592960['rules'][_0xbdc58]['value']:'');}return _0x558b6e+')';};var _0x16a343={'where':{'id':_0x2340f8[_0x1126('0x50')]['id']}},_0x3921c2,_0x4bf2b3,_0x5ee130,_0x5e9260,_0x51a28d;_0x16a343=_[_0x1126('0x3c')]({},_0x16a343,_0x2340f8[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x16a343)[_0x1126('0x23')](function(_0x170bf0){if(_0x170bf0){_0x3921c2=_0x170bf0;return _0x170bf0[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x3f007b){if(_0x3f007b){if(!_0x3f007b[_0x1126('0x44')]){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4bf2b3=_0x3f007b;return db[_0x1126('0x6c')][_0x1126('0x41')]({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x56c003){if(_0x56c003){_0x5ee130=_['keyBy'](_0x56c003,'id');var _0x15cf3d;var _0x2643d7=squel['select']();_0x2643d7[_0x1126('0x6d')](_0x3921c2[_0x1126('0x6e')]);for(var _0x366675=0x0;_0x366675<_0x4bf2b3[_0x1126('0x44')];_0x366675+=0x1){_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x6f')]?_0x5ee130[_0x4bf2b3[_0x366675][_0x1126('0x6f')]][_0x1126('0x70')]:_0x4bf2b3[_0x366675][_0x1126('0x67')];_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x71')]?_[_0x1126('0x72')](_0x22ab18[_0x4bf2b3[_0x366675][_0x1126('0x71')]],'%s',_0x15cf3d):_0x15cf3d;_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x73')]?_[_0x1126('0x72')](_0x2a5422[_0x4bf2b3[_0x366675]['format']],'%s',_0x15cf3d):_0x15cf3d;if(_0x4bf2b3[_0x366675][_0x1126('0x74')]){_0x2643d7[_0x1126('0x66')](_0x15cf3d);}_0x4bf2b3[_0x366675][_0x1126('0x75')]&&_0x2643d7['order'](_0x15cf3d,_0x4bf2b3[_0x366675]['orderBy']===_0x1126('0x76')?![]:!![]);_0x2643d7[_0x1126('0x67')](_0x15cf3d,_0x4bf2b3[_0x366675][_0x1126('0x77')]||_0x15cf3d);}if(_0x3921c2[_0x1126('0x78')]){_0x3921c2['joins']=JSON['parse'](_0x3921c2['joins']);for(var _0x79afca=0x0;_0x79afca<_0x3921c2[_0x1126('0x78')][_0x1126('0x44')];_0x79afca+=0x1){if(_0x3921c2[_0x1126('0x78')][_0x79afca]['type']&&_[_0x1126('0x60')](_0x25038f,_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')])&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x79')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7b')]){_0x2643d7[_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')]](_0x3921c2['joins'][_0x79afca][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x3921c2[_0x1126('0x6e')],_0x3921c2[_0x1126('0x78')][_0x79afca]['parentKey'],_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')],_0x3921c2['joins'][_0x79afca]['foreignKey']));}}}if(_0x3921c2[_0x1126('0x7c')]){_0x3921c2[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x3921c2['conditions']);_0x2643d7['where'](_0x375b76(_0x3921c2['conditions'][_0x1126('0x66')]));}_0x51a28d=_0x2643d7['clone']();_0x2643d7['limit'](_0x30812d);_0x2643d7[_0x1126('0x1b')](0x0);logger['debug'](_0x1126('0x7e'),_0x2643d7[_0x1126('0x7f')]());return dbH['sequelize'][_0x1126('0x31')](_0x2643d7[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](respondWithResult(_0x5763b4,null))[_0x1126('0x48')](handleError(_0x5763b4,null));};function runReport(_0x426faa,_0x5679ec,_0xd182b1){var _0x2d6fcf=_0x5679ec[_0x1126('0x29')];var _0x2af2d0=0xa;var _0x2598a7=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x9a2af0={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':_0x1126('0x84'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x33cccf={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':'HOUR(%s)','ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5bdb30=function(_0xb1199b){return!_[_0x1126('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0xb1199b);};var _0x228552=function(_0x1ee970){if(!_0x1ee970||!_0x1ee970[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x2d7150='(',_0x35a9a4=0x0;_0x35a9a4<_0x1ee970[_0x1126('0x64')]['length'];_0x35a9a4+=0x1){_0x35a9a4>0x0&&(_0x2d7150+='\x20'+_0x1ee970[_0x1126('0x65')]+'\x20');_0x2d7150+=_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]?_0x228552(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]):_0x1ee970[_0x1126('0x64')][_0x35a9a4]['field']+'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')]+(_0x5bdb30(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')])?'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x86')]:'');}return _0x2d7150+')';};var _0x2418ca={'where':{'id':_0x426faa['id']}},_0x2d2dfc,_0x38eac6,_0xc3503b,_0x5d6edb,_0x50238d;_0x2418ca=_[_0x1126('0x3c')]({},_0x2418ca,_0xd182b1);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x2418ca)['then'](function(_0x4461ae){if(_0x4461ae){_0x2d2dfc=_0x4461ae;return _0x4461ae['getFields']();}return null;})[_0x1126('0x23')](function(_0x4fbd44){if(_0x4fbd44){if(!_0x4fbd44['length']){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x38eac6=_0x4fbd44;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0xe2f82d){if(_0xe2f82d){_0xc3503b=_[_0x1126('0x87')](_0xe2f82d,'id');var _0x5dfb8f;var _0x48f914=squel[_0x1126('0x88')]();_0x48f914['from'](_0x2d2dfc[_0x1126('0x6e')]);for(var _0x39d9a0=0x0;_0x39d9a0<_0x38eac6[_0x1126('0x44')];_0x39d9a0+=0x1){_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x6f')]?_0xc3503b[_0x38eac6[_0x39d9a0][_0x1126('0x6f')]]['metric']:_0x38eac6[_0x39d9a0]['field'];_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x71')]?_[_0x1126('0x72')](_0x9a2af0[_0x38eac6[_0x39d9a0][_0x1126('0x71')]],'%s',_0x5dfb8f):_0x5dfb8f;_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x73')]?_[_0x1126('0x72')](_0x33cccf[_0x38eac6[_0x39d9a0][_0x1126('0x73')]],'%s',_0x5dfb8f):_0x5dfb8f;if(_0x38eac6[_0x39d9a0][_0x1126('0x74')]){_0x48f914[_0x1126('0x66')](_0x5dfb8f);}_0x38eac6[_0x39d9a0][_0x1126('0x75')]&&_0x48f914[_0x1126('0x89')](_0x5dfb8f,_0x38eac6[_0x39d9a0][_0x1126('0x75')]==='DESC'?![]:!![]);_0x48f914[_0x1126('0x67')](_0x5dfb8f,_0x38eac6[_0x39d9a0]['alias']||_0x5dfb8f);}if(_0x2d2dfc[_0x1126('0x78')]){_0x2d2dfc['joins']=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x78')]);for(var _0x215d4d=0x0;_0x215d4d<_0x2d2dfc[_0x1126('0x78')]['length'];_0x215d4d+=0x1){if(_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x2e')]&&_['includes'](_0x2598a7,_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x2e')])&&_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x79')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7a')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7b')]){_0x48f914[_0x2d2dfc[_0x1126('0x78')][_0x215d4d]['type']](_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],null,util[_0x1126('0x73')](_0x1126('0x8a'),_0x2d2dfc[_0x1126('0x6e')],_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x79')],_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],_0x2d2dfc['joins'][_0x215d4d]['foreignKey']));}}}if(_0x2d2dfc['conditions']){_0x2d2dfc[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x7c')]);_0x48f914[_0x1126('0x39')](_0x228552(_0x2d2dfc['conditions'][_0x1126('0x66')]));}_0x50238d=_0x48f914[_0x1126('0x8b')]();_0x48f914[_0x1126('0x1c')](_0x2af2d0);_0x48f914[_0x1126('0x1b')](0x0);return;}})[_0x1126('0x23')](function(){if(_0x5679ec['output']===_0x1126('0x8c')){return null;}var _0x21c487=_['merge'](_0x5679ec,{'name':_0x5679ec[_0x1126('0x8d')]||_0x5679ec['name']||_0x2d2dfc['name'],'basename':_0x2d6fcf,'savename':util[_0x1126('0x73')]('%s-%s.%s',_0x5679ec[_0x1126('0x29')]||_0x2d2dfc[_0x1126('0x29')],require(_0x1126('0x8e'))[_0x1126('0x8f')](0x4),_0x5679ec[_0x1126('0x90')]||_0x1126('0x91')),'reportId':_0x2d2dfc['id'],'reportType':_0x1126('0x92')});return db[_0x1126('0x93')][_0x1126('0x49')](_0x21c487,{'raw':!![]});})['then'](function(_0x2577f5){if(_0x2d2dfc[_0x1126('0x6e')]===_0x1126('0x94')){_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+_0x1126('0x95'),_0x5679ec[_0x1126('0x96')],_0x5679ec[_0x1126('0x97')]);}else{_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5679ec['startDate'],_0x5679ec[_0x1126('0x97')]);}if(_0x2577f5){logger['info'](_0x1126('0x98'),_0x50238d[_0x1126('0x7f')]());require('child_process')['fork'](path[_0x1126('0x52')](__dirname,_0x1126('0x99'),_0x2577f5['output']),[_0x2577f5['id'],_0x50238d[_0x1126('0x7f')](),path[_0x1126('0x52')](__dirname,'../../files/reports',_0x2577f5[_0x1126('0x9a')]),_0x2d6fcf]);return _0x2577f5;}else{var _0x4a9941=squel[_0x1126('0x88')]();_0x4a9941[_0x1126('0x6d')]('('+_0x50238d[_0x1126('0x7f')]()+')','countTable');_0x4a9941[_0x1126('0x67')](_0x1126('0x9b'),_0x1126('0x3f'));_0x50238d[_0x1126('0x1c')](_0x5679ec[_0x1126('0x1c')]||_0x2af2d0);_0x50238d[_0x1126('0x1b')](_0x5679ec[_0x1126('0x1b')]||0x0);return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x4a9941[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]})[_0x1126('0x23')](function(_0x12ffa5){if(!_0x12ffa5[_0x1126('0x44')]){_0x5d6edb=0x0;}else{_0x5d6edb=_0x12ffa5[0x0][_0x1126('0x3f')]||0x0;}return dbH['sequelize'][_0x1126('0x31')](_0x50238d[_0x1126('0x7f')](),{'type':dbH['sequelize']['QueryTypes'][_0x1126('0x82')]});})[_0x1126('0x23')](function(_0x35065c){return{'rows':_0x35065c||[],'count':_0x5d6edb};});}});}exports[_0x1126('0x9c')]=function(_0x5c0215,_0x444f94){return runReport(_0x5c0215[_0x1126('0x50')],_0x5c0215['query'],_0x5c0215[_0x1126('0x46')])['then'](respondWithResult(_0x444f94,null))[_0x1126('0x48')](handleError(_0x444f94,null));};exports[_0x1126('0x9d')]=runReport;exports['query']=function(_0x4d43ad,_0xa02d9e){var _0x548f9e=0xa;var _0x5edb83=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x4f29ce={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':'MIN(%s)','AVG':_0x1126('0x84'),'GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x17b25d={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':_0x1126('0x9e')};var _0x3a4a91=function(_0x55145f){return!_[_0x1126('0x60')](['IS\x20NULL',_0x1126('0x9f'),_0x1126('0x62'),_0x1126('0x63')],_0x55145f);};var _0x4c7dc7=function(_0x33a27b){if(!_0x33a27b||!_0x33a27b[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x578c1b='(',_0x1562b2=0x0;_0x1562b2<_0x33a27b[_0x1126('0x64')][_0x1126('0x44')];_0x1562b2+=0x1){_0x1562b2>0x0&&(_0x578c1b+='\x20'+_0x33a27b[_0x1126('0x65')]+'\x20');_0x578c1b+=_0x33a27b[_0x1126('0x64')][_0x1562b2]['group']?_0x4c7dc7(_0x33a27b['rules'][_0x1562b2][_0x1126('0x66')]):_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x67')]+'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')]+(_0x3a4a91(_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')])?'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x86')]:'');}return _0x578c1b+')';};var _0x2fb228={'where':{'id':_0x4d43ad[_0x1126('0x50')]['id']}},_0x2c95b6,_0x4a4b43,_0x588f4f,_0x5ac4d6,_0x1168a5;_0x2fb228=_['merge']({},_0x2fb228,_0x4d43ad['options']);return db[_0x1126('0x2b')][_0x1126('0x47')](_0x2fb228)[_0x1126('0x23')](function(_0x48b088){if(_0x48b088){_0x2c95b6=_0x48b088;return _0x48b088[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x5a28f9){if(_0x5a28f9){if(!_0x5a28f9[_0x1126('0x44')]){throw new db[(_0x1126('0xa0'))][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4a4b43=_0x5a28f9;return db[_0x1126('0x6c')]['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x1140ec){if(_0x1140ec){_0x588f4f=_['keyBy'](_0x1140ec,'id');var _0x578f5c;var _0x559dae=squel[_0x1126('0x88')]();_0x559dae[_0x1126('0x6d')](_0x2c95b6[_0x1126('0x6e')]);for(var _0x9d7819=0x0;_0x9d7819<_0x4a4b43[_0x1126('0x44')];_0x9d7819+=0x1){_0x578f5c=_0x4a4b43[_0x9d7819]['MetricId']?_0x588f4f[_0x4a4b43[_0x9d7819][_0x1126('0x6f')]]['metric']:_0x4a4b43[_0x9d7819][_0x1126('0x67')];_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x71')]?_['replace'](_0x4f29ce[_0x4a4b43[_0x9d7819]['function']],'%s',_0x578f5c):_0x578f5c;_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x73')]?_[_0x1126('0x72')](_0x17b25d[_0x4a4b43[_0x9d7819]['format']],'%s',_0x578f5c):_0x578f5c;if(_0x4a4b43[_0x9d7819]['groupBy']){_0x559dae[_0x1126('0x66')](_0x578f5c);}_0x4a4b43[_0x9d7819][_0x1126('0x75')]&&_0x559dae[_0x1126('0x89')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x75')]===_0x1126('0x76')?![]:!![]);_0x559dae[_0x1126('0x67')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x77')]||_0x578f5c);}if(_0x2c95b6[_0x1126('0x78')]){_0x2c95b6[_0x1126('0x78')]=JSON[_0x1126('0x7d')](_0x2c95b6['joins']);for(var _0x4d6528=0x0;_0x4d6528<_0x2c95b6[_0x1126('0x78')][_0x1126('0x44')];_0x4d6528+=0x1){if(_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x2e')]&&_[_0x1126('0x60')](_0x5edb83,_0x2c95b6[_0x1126('0x78')][_0x4d6528]['type'])&&_0x2c95b6['joins'][_0x4d6528][_0x1126('0x79')]&&_0x2c95b6['joins'][_0x4d6528]['foreignTable']&&_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]){_0x559dae[_0x2c95b6['joins'][_0x4d6528][_0x1126('0x2e')]](_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x2c95b6[_0x1126('0x6e')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x79')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]));}}}if(_0x2c95b6['conditions']){_0x2c95b6[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2c95b6[_0x1126('0x7c')]);_0x559dae[_0x1126('0x39')](_0x4c7dc7(_0x2c95b6['conditions'][_0x1126('0x66')]));}_0x1168a5=_0x559dae[_0x1126('0x8b')]();_0x559dae['limit'](_0x548f9e);_0x559dae[_0x1126('0x1b')](0x0);logger[_0x1126('0xa1')](_0x1126('0x7e'),_0x559dae['toString']());return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x559dae[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](function(){return{'sql':_0x1168a5[_0x1126('0x7f')]()};})[_0x1126('0x23')](respondWithResult(_0xa02d9e,null))['catch'](handleError(_0xa02d9e,null));};
\ No newline at end of file
index 121675f..febacac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c33=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x107f4a,_0x3df98e){var _0x4bdd80=function(_0x5f2727){while(--_0x5f2727){_0x107f4a['push'](_0x107f4a['shift']());}};_0x4bdd80(++_0x3df98e);}(_0x0c33,0xfd));var _0x30c3=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x0c33[_0x433a86];return _0x23000c;};'use strict';var _=require(_0x30c3('0x0'));var util=require('util');var logger=require(_0x30c3('0x1'))(_0x30c3('0x2'));var moment=require(_0x30c3('0x3'));var BPromise=require(_0x30c3('0x4'));var rp=require(_0x30c3('0x5'));var fs=require('fs');var path=require(_0x30c3('0x6'));var rimraf=require('rimraf');var config=require(_0x30c3('0x7'));var attributes=require(_0x30c3('0x8'));module[_0x30c3('0x9')]=function(_0x4dbeac,_0x4e1b70){return _0x4dbeac[_0x30c3('0xa')](_0x30c3('0xb'),attributes,{'tableName':_0x30c3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75d5=['request-promise','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','api'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x75d5,0xf9));var _0x575d=function(_0x7a4b16,_0x3a59d9){_0x7a4b16=_0x7a4b16-0x0;var _0x493760=_0x75d5[_0x7a4b16];return _0x493760;};'use strict';var _=require(_0x575d('0x0'));var util=require(_0x575d('0x1'));var logger=require('../../config/logger')(_0x575d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x575d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x575d('0x4'));var attributes=require(_0x575d('0x5'));module['exports']=function(_0x3f3c20,_0x396310){return _0x3f3c20[_0x575d('0x6')](_0x575d('0x7'),attributes,{'tableName':_0x575d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ac8161..9e4cb29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2de4=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','client','http','request'];(function(_0x21fd45,_0x32e491){var _0x537a12=function(_0x5d446c){while(--_0x5d446c){_0x21fd45['push'](_0x21fd45['shift']());}};_0x537a12(++_0x32e491);}(_0x2de4,0x6e));var _0x42de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2de4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x42de('0x0'));var util=require(_0x42de('0x1'));var moment=require(_0x42de('0x2'));var BPromise=require(_0x42de('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x42de('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x42de('0x5'))(_0x42de('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x42de('0x7')][_0x42de('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x52cee9,_0x1ee567,_0x1963a5){return new BPromise(function(_0x3c42aa,_0x3ce477){return client[_0x42de('0x9')](_0x52cee9,_0x1963a5)[_0x42de('0xa')](function(_0x4beab1){logger[_0x42de('0xb')](_0x42de('0xc'),_0x1ee567,_0x42de('0xd'));logger[_0x42de('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x1ee567,'request\x20sent',JSON['stringify'](_0x4beab1));if(_0x4beab1[_0x42de('0xf')]){if(_0x4beab1[_0x42de('0xf')][_0x42de('0x10')]===0x1f4){logger[_0x42de('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x1ee567,_0x4beab1['error']['message']);return _0x3ce477(_0x4beab1[_0x42de('0xf')][_0x42de('0x11')]);}logger[_0x42de('0xf')](_0x42de('0xc'),_0x1ee567,_0x4beab1[_0x42de('0xf')]['message']);return _0x3c42aa(_0x4beab1[_0x42de('0xf')][_0x42de('0x11')]);}else{logger[_0x42de('0xb')](_0x42de('0xc'),_0x1ee567,_0x42de('0xd'));_0x3c42aa(_0x4beab1[_0x42de('0x12')][_0x42de('0x11')]);}})[_0x42de('0x13')](function(_0x54d3b8){logger['error'](_0x42de('0xc'),_0x1ee567,_0x54d3b8);_0x3ce477(_0x54d3b8);});});}
\ No newline at end of file
+var _0x7c1a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x5c2d75,_0x4035fc){var _0x48f399=function(_0x576db0){while(--_0x576db0){_0x5c2d75['push'](_0x5c2d75['shift']());}};_0x48f399(++_0x4035fc);}(_0x7c1a,0x12b));var _0xa7c1=function(_0x464829,_0x83eb3f){_0x464829=_0x464829-0x0;var _0x5af5cb=_0x7c1a[_0x464829];return _0x5af5cb;};'use strict';var _=require(_0xa7c1('0x0'));var util=require('util');var moment=require(_0xa7c1('0x1'));var BPromise=require(_0xa7c1('0x2'));var rs=require(_0xa7c1('0x3'));var fs=require('fs');var Redis=require(_0xa7c1('0x4'));var db=require(_0xa7c1('0x5'))['db'];var utils=require(_0xa7c1('0x6'));var logger=require(_0xa7c1('0x7'))(_0xa7c1('0x8'));var config=require(_0xa7c1('0x9'));var jayson=require(_0xa7c1('0xa'));var client=jayson['client'][_0xa7c1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ea665,_0x4d336d,_0x38438d){return new BPromise(function(_0x33d6b4,_0x29442a){return client[_0xa7c1('0xc')](_0x5ea665,_0x38438d)[_0xa7c1('0xd')](function(_0x4eaae5){logger[_0xa7c1('0xe')](_0xa7c1('0xf'),_0x4d336d,_0xa7c1('0x10'));logger[_0xa7c1('0x11')](_0xa7c1('0x12'),_0x4d336d,_0xa7c1('0x10'),JSON[_0xa7c1('0x13')](_0x4eaae5));if(_0x4eaae5[_0xa7c1('0x14')]){if(_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x15')]===0x1f4){logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);return _0x29442a(_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);}logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x4eaae5[_0xa7c1('0x14')][_0xa7c1('0x16')]);return _0x33d6b4(_0x4eaae5['error'][_0xa7c1('0x16')]);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x4d336d,_0xa7c1('0x10'));_0x33d6b4(_0x4eaae5[_0xa7c1('0x17')][_0xa7c1('0x16')]);}})[_0xa7c1('0x18')](function(_0x539fb3){logger[_0xa7c1('0x14')](_0xa7c1('0xf'),_0x4d336d,_0x539fb3);_0x29442a(_0x539fb3);});});}
\ No newline at end of file
index 0f3f4bd..c603112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d1=['Router','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','index','isAuthenticated','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0xc4749f,_0x32d3ac){var _0x4c413f=function(_0xe0f57c){while(--_0xe0f57c){_0xc4749f['push'](_0xc4749f['shift']());}};_0x4c413f(++_0x32d3ac);}(_0xc9d1,0x156));var _0x1c9d=function(_0x52b8eb,_0x395554){_0x52b8eb=_0x52b8eb-0x0;var _0x4b2c00=_0xc9d1[_0x52b8eb];return _0x4b2c00;};'use strict';var multer=require(_0x1c9d('0x0'));var util=require(_0x1c9d('0x1'));var path=require('path');var timeout=require(_0x1c9d('0x2'));var express=require('express');var router=express[_0x1c9d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1c9d('0x4'));var interaction=require(_0x1c9d('0x5'));var config=require('../../config/environment');var controller=require(_0x1c9d('0x6'));router[_0x1c9d('0x7')]('/',auth['isAuthenticated'](),controller[_0x1c9d('0x8')]);router['get']('/:id',auth[_0x1c9d('0x9')](),controller['show']);router[_0x1c9d('0x7')](_0x1c9d('0xa'),auth[_0x1c9d('0x9')](),controller[_0x1c9d('0xb')]);router[_0x1c9d('0x7')](_0x1c9d('0xc'),auth['isAuthenticated'](),controller[_0x1c9d('0xd')]);router[_0x1c9d('0x7')](_0x1c9d('0xe'),auth['isAuthenticated'](),controller[_0x1c9d('0xf')]);router[_0x1c9d('0x10')]('/',auth['isAuthenticated'](),controller[_0x1c9d('0x11')]);router['put'](_0x1c9d('0x12'),auth['isAuthenticated'](),controller[_0x1c9d('0x13')]);router[_0x1c9d('0x14')](_0x1c9d('0x12'),auth[_0x1c9d('0x9')](),controller[_0x1c9d('0x15')]);module[_0x1c9d('0x16')]=router;
\ No newline at end of file
+var _0x0c41=['../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x17d831,_0x2bacc7){var _0x13250d=function(_0x3fe6c7){while(--_0x3fe6c7){_0x17d831['push'](_0x17d831['shift']());}};_0x13250d(++_0x2bacc7);}(_0x0c41,0xf9));var _0x10c4=function(_0xbc9a72,_0x230dc8){_0xbc9a72=_0xbc9a72-0x0;var _0x959761=_0x0c41[_0xbc9a72];return _0x959761;};'use strict';var multer=require(_0x10c4('0x0'));var util=require('util');var path=require(_0x10c4('0x1'));var timeout=require(_0x10c4('0x2'));var express=require(_0x10c4('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x10c4('0x4'));var config=require(_0x10c4('0x5'));var controller=require(_0x10c4('0x6'));router[_0x10c4('0x7')]('/',auth[_0x10c4('0x8')](),controller['index']);router[_0x10c4('0x7')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xa')]);router[_0x10c4('0x7')](_0x10c4('0xb'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xc')]);router['get'](_0x10c4('0xd'),auth[_0x10c4('0x8')](),controller[_0x10c4('0xe')]);router[_0x10c4('0x7')](_0x10c4('0xf'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x10')]);router[_0x10c4('0x11')]('/',auth[_0x10c4('0x8')](),controller['create']);router[_0x10c4('0x12')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x13')]);router[_0x10c4('0x14')](_0x10c4('0x9'),auth[_0x10c4('0x8')](),controller[_0x10c4('0x15')]);module[_0x10c4('0x16')]=router;
\ No newline at end of file
index 66e760e..c05ed3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d62=['Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3d62,0xc9));var _0x23d6=function(_0xbb3c38,_0x32a4a0){_0xbb3c38=_0xbb3c38-0x0;var _0x56f70b=_0x3d62[_0xbb3c38];return _0x56f70b;};'use strict';var Sequelize=require(_0x23d6('0x0'));var moment=require(_0x23d6('0x1'));module[_0x23d6('0x2')]={'name':{'type':Sequelize[_0x23d6('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x23d6('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x23d6('0x4')](_0x23d6('0x5'),_0x23d6('0x6'),_0x23d6('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x23d6('0x8')]},'status':{'type':Sequelize[_0x23d6('0x3')],'defaultValue':_0x23d6('0x9')},'type':{'type':Sequelize[_0x23d6('0x4')](_0x23d6('0xa'),_0x23d6('0xb')),'allowNull':![],'defaultValue':_0x23d6('0xa')},'reportId':{'type':Sequelize[_0x23d6('0xc')](0xb)[_0x23d6('0xd')]},'reportType':{'type':Sequelize[_0x23d6('0x3')]}};
\ No newline at end of file
+var _0xa3df=['csv','pdf','DATE','Loading','manual','UNSIGNED','sequelize','STRING'];(function(_0x6f3151,_0x406745){var _0x305fb8=function(_0x24e5a8){while(--_0x24e5a8){_0x6f3151['push'](_0x6f3151['shift']());}};_0x305fb8(++_0x406745);}(_0xa3df,0x186));var _0xfa3d=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa3df[_0x38a7ac];return _0x53061a;};'use strict';var Sequelize=require(_0xfa3d('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0xfa3d('0x2'),_0xfa3d('0x3'),'xlsx'),'allowNull':![],'defaultValue':_0xfa3d('0x2')},'savename':{'type':Sequelize[_0xfa3d('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0xfa3d('0x4')]},'endDate':{'type':Sequelize[_0xfa3d('0x4')]},'status':{'type':Sequelize[_0xfa3d('0x1')],'defaultValue':_0xfa3d('0x5')},'type':{'type':Sequelize['ENUM'](_0xfa3d('0x6'),'scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xfa3d('0x7')]},'reportType':{'type':Sequelize[_0xfa3d('0x1')]}};
\ No newline at end of file
index a12ccc4..5605148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b5=['limit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','download','basename','output','existsSync','join','root','server/files/reports','savename','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','stack','name','index','map','AnalyticExtractedReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x22536,_0xec6bc6){var _0x1a7159=function(_0x341304){while(--_0x341304){_0x22536['push'](_0x22536['shift']());}};_0x1a7159(++_0xec6bc6);}(_0xb0b5,0x194));var _0x5b0b=function(_0x1ec7b0,_0x2eb52a){_0x1ec7b0=_0x1ec7b0-0x0;var _0x5aff54=_0xb0b5[_0x1ec7b0];return _0x5aff54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5b0b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b0b('0x1'));var rp=require(_0x5b0b('0x2'));var moment=require(_0x5b0b('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5b0b('0x4'));var path=require(_0x5b0b('0x5'));var sox=require(_0x5b0b('0x6'));var csv=require(_0x5b0b('0x7'));var ejs=require(_0x5b0b('0x8'));var fs=require('fs');var fs_extra=require(_0x5b0b('0x9'));var _=require(_0x5b0b('0xa'));var squel=require('squel');var crypto=require(_0x5b0b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5b0b('0xc'));var toCsv=require(_0x5b0b('0x7'));var querystring=require('querystring');var Papa=require(_0x5b0b('0xd'));var Redis=require(_0x5b0b('0xe'));var authService=require(_0x5b0b('0xf'));var qs=require(_0x5b0b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b0b('0x11'));var logger=require(_0x5b0b('0x12'))(_0x5b0b('0x13'));var utils=require(_0x5b0b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x5b0b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x134f9e,_0x4d049c){_0x4d049c=_0x4d049c||0xcc;return function(_0x71ba5b){if(_0x71ba5b){return _0x134f9e[_0x5b0b('0x16')](_0x4d049c);}return _0x134f9e[_0x5b0b('0x17')](_0x4d049c)[_0x5b0b('0x18')]();};}function respondWithResult(_0x354dfd,_0x4c5644){_0x4c5644=_0x4c5644||0xc8;return function(_0x51c155){if(_0x51c155){return _0x354dfd[_0x5b0b('0x17')](_0x4c5644)[_0x5b0b('0x19')](_0x51c155);}};}function respondWithFilteredResult(_0x3aff6f,_0x1d33bf){return function(_0xda9eb){if(_0xda9eb){var _0x277415=typeof _0x1d33bf[_0x5b0b('0x1a')]===_0x5b0b('0x1b')&&typeof _0x1d33bf['limit']===_0x5b0b('0x1b');var _0x573079=_0xda9eb[_0x5b0b('0x1c')];var _0x4227e2=_0x277415?0x0:_0x1d33bf[_0x5b0b('0x1a')];var _0x3d8464=_0x277415?_0xda9eb[_0x5b0b('0x1c')]:_0x1d33bf[_0x5b0b('0x1a')]+_0x1d33bf['limit'];var _0x389d69;if(_0x3d8464>=_0x573079){_0x3d8464=_0x573079;_0x389d69=0xc8;}else{_0x389d69=0xce;}_0x3aff6f[_0x5b0b('0x17')](_0x389d69);return _0x3aff6f[_0x5b0b('0x1d')](_0x5b0b('0x1e'),_0x4227e2+'-'+_0x3d8464+'/'+_0x573079)[_0x5b0b('0x19')](_0xda9eb);}return null;};}function patchUpdates(_0x40b111){return function(_0x277824){try{jsonpatch['apply'](_0x277824,_0x40b111,!![]);}catch(_0x4aedac){return BPromise[_0x5b0b('0x1f')](_0x4aedac);}return _0x277824[_0x5b0b('0x20')]();};}function saveUpdates(_0x11a62f,_0x87e08){return function(_0x489b7a){if(_0x489b7a){return _0x489b7a[_0x5b0b('0x21')](_0x11a62f)[_0x5b0b('0x22')](function(_0x2f6c58){return _0x2f6c58;});}return null;};}function removeEntity(_0x537686,_0x482553){return function(_0xc7cdff){if(_0xc7cdff){return _0xc7cdff[_0x5b0b('0x23')]()[_0x5b0b('0x22')](function(){var _0x295f55=_0xc7cdff[_0x5b0b('0x24')]({'plain':!![]});var _0x2c0ef8='ExtractedReports';return db[_0x5b0b('0x25')]['destroy']({'where':{'type':_0x2c0ef8,'resourceId':_0x295f55['id']}})[_0x5b0b('0x22')](function(){return _0xc7cdff;});})['then'](function(){_0x537686[_0x5b0b('0x17')](0xcc)[_0x5b0b('0x18')]();});}};}function handleEntityNotFound(_0x3aaec5,_0x226e33){return function(_0x39b8b8){if(!_0x39b8b8){_0x3aaec5[_0x5b0b('0x16')](0x194);}return _0x39b8b8;};}function handleError(_0x52ae9b,_0x2e3f4c){_0x2e3f4c=_0x2e3f4c||0x1f4;return function(_0x16edf5){logger['error'](_0x16edf5[_0x5b0b('0x26')]);if(_0x16edf5[_0x5b0b('0x27')]){delete _0x16edf5[_0x5b0b('0x27')];}_0x52ae9b[_0x5b0b('0x17')](_0x2e3f4c)['send'](_0x16edf5);};}exports[_0x5b0b('0x28')]=function(_0x153826,_0x38e513){var _0x481f72={},_0x10fbdb={},_0x513494={'count':0x0,'rows':[]};var _0x5cd95a=_[_0x5b0b('0x29')](db[_0x5b0b('0x2a')][_0x5b0b('0x2b')],function(_0x5e8ed4){return{'name':_0x5e8ed4['fieldName'],'type':_0x5e8ed4[_0x5b0b('0x2c')][_0x5b0b('0x2d')]};});_0x10fbdb[_0x5b0b('0x2e')]=_[_0x5b0b('0x29')](_0x5cd95a,'name');_0x10fbdb[_0x5b0b('0x2f')]=_[_0x5b0b('0x30')](_0x153826[_0x5b0b('0x2f')]);_0x10fbdb[_0x5b0b('0x31')]=_[_0x5b0b('0x32')](_0x10fbdb['model'],_0x10fbdb[_0x5b0b('0x2f')]);_0x481f72[_0x5b0b('0x33')]=_[_0x5b0b('0x32')](_0x10fbdb['model'],qs[_0x5b0b('0x34')](_0x153826['query'][_0x5b0b('0x34')]));_0x481f72[_0x5b0b('0x33')]=_0x481f72[_0x5b0b('0x33')][_0x5b0b('0x35')]?_0x481f72['attributes']:_0x10fbdb[_0x5b0b('0x2e')];if(!_0x153826[_0x5b0b('0x2f')][_0x5b0b('0x36')](_0x5b0b('0x37'))){_0x481f72[_0x5b0b('0x38')]=qs['limit'](_0x153826[_0x5b0b('0x2f')]['limit']);_0x481f72[_0x5b0b('0x1a')]=qs[_0x5b0b('0x1a')](_0x153826[_0x5b0b('0x2f')][_0x5b0b('0x1a')]);}_0x481f72[_0x5b0b('0x39')]=qs['sort'](_0x153826['query'][_0x5b0b('0x3a')]);_0x481f72[_0x5b0b('0x3b')]=qs[_0x5b0b('0x31')](_['pick'](_0x153826[_0x5b0b('0x2f')],_0x10fbdb[_0x5b0b('0x31')]),_0x5cd95a);if(_0x153826[_0x5b0b('0x2f')][_0x5b0b('0x3c')]){_0x481f72[_0x5b0b('0x3b')]=_['merge'](_0x481f72[_0x5b0b('0x3b')],{'$or':_[_0x5b0b('0x29')](_0x5cd95a,function(_0x387a12){if(_0x387a12[_0x5b0b('0x2c')]!==_0x5b0b('0x3d')){var _0x7a386e={};_0x7a386e[_0x387a12[_0x5b0b('0x27')]]={'$like':'%'+_0x153826['query']['filter']+'%'};return _0x7a386e;}})});}_0x481f72=_[_0x5b0b('0x3e')]({},_0x481f72,_0x153826[_0x5b0b('0x3f')]);var _0x2936b6={'where':_0x481f72[_0x5b0b('0x3b')]};return db[_0x5b0b('0x2a')]['count'](_0x2936b6)[_0x5b0b('0x22')](function(_0x1a6dc8){_0x513494[_0x5b0b('0x1c')]=_0x1a6dc8;if(_0x153826[_0x5b0b('0x2f')][_0x5b0b('0x40')]){_0x481f72[_0x5b0b('0x41')]=[{'all':!![]}];}return db[_0x5b0b('0x2a')][_0x5b0b('0x42')](_0x481f72);})[_0x5b0b('0x22')](function(_0x1a48c0){_0x513494[_0x5b0b('0x43')]=_0x1a48c0;return _0x513494;})[_0x5b0b('0x22')](respondWithFilteredResult(_0x38e513,_0x481f72))[_0x5b0b('0x44')](handleError(_0x38e513,null));};exports[_0x5b0b('0x45')]=function(_0x23ff90,_0x357746){var _0x1c635e={'raw':!![],'where':{'id':_0x23ff90['params']['id']}},_0x36abd1={};_0x36abd1['model']=_[_0x5b0b('0x30')](db[_0x5b0b('0x2a')]['rawAttributes']);_0x36abd1[_0x5b0b('0x2f')]=_[_0x5b0b('0x30')](_0x23ff90['query']);_0x36abd1[_0x5b0b('0x31')]=_[_0x5b0b('0x32')](_0x36abd1['model'],_0x36abd1[_0x5b0b('0x2f')]);_0x1c635e['attributes']=_['intersection'](_0x36abd1[_0x5b0b('0x2e')],qs[_0x5b0b('0x34')](_0x23ff90[_0x5b0b('0x2f')]['fields']));_0x1c635e[_0x5b0b('0x33')]=_0x1c635e[_0x5b0b('0x33')][_0x5b0b('0x35')]?_0x1c635e[_0x5b0b('0x33')]:_0x36abd1[_0x5b0b('0x2e')];if(_0x23ff90['query'][_0x5b0b('0x40')]){_0x1c635e['include']=[{'all':!![]}];}_0x1c635e=_['merge']({},_0x1c635e,_0x23ff90[_0x5b0b('0x3f')]);return db['AnalyticExtractedReport'][_0x5b0b('0x46')](_0x1c635e)['then'](handleEntityNotFound(_0x357746,null))[_0x5b0b('0x22')](respondWithResult(_0x357746,null))['catch'](handleError(_0x357746,null));};exports[_0x5b0b('0x47')]=function(_0x51a215,_0x11cd99){return db[_0x5b0b('0x2a')][_0x5b0b('0x47')](_0x51a215['body'],{})[_0x5b0b('0x22')](function(_0x522b7a){var _0x50ac9a=_0x51a215[_0x5b0b('0x48')][_0x5b0b('0x24')]({'plain':!![]});if(!_0x50ac9a)throw new Error(_0x5b0b('0x49'));if(_0x50ac9a['role']===_0x5b0b('0x48')){var _0x296bdc=_0x522b7a[_0x5b0b('0x24')]({'plain':!![]});var _0xd7525b='ExtractedReports';return db['UserProfileSection'][_0x5b0b('0x46')]({'where':{'name':_0xd7525b,'userProfileId':_0x50ac9a['userProfileId']},'raw':!![]})[_0x5b0b('0x22')](function(_0x575f24){if(_0x575f24&&_0x575f24[_0x5b0b('0x4a')]===0x0){return db[_0x5b0b('0x25')][_0x5b0b('0x47')]({'name':_0x296bdc[_0x5b0b('0x27')],'resourceId':_0x296bdc['id'],'type':_0x575f24['name'],'sectionId':_0x575f24['id']},{})[_0x5b0b('0x22')](function(){return _0x522b7a;});}else{return _0x522b7a;}})[_0x5b0b('0x44')](function(_0x340db8){logger[_0x5b0b('0x4b')](_0x5b0b('0x4c'),_0x340db8);throw _0x340db8;});}return _0x522b7a;})[_0x5b0b('0x22')](respondWithResult(_0x11cd99,0xc9))[_0x5b0b('0x44')](handleError(_0x11cd99,null));};exports['update']=function(_0xea41f8,_0x4f73ab){if(_0xea41f8['body']['id']){delete _0xea41f8[_0x5b0b('0x4d')]['id'];}return db['AnalyticExtractedReport'][_0x5b0b('0x46')]({'where':{'id':_0xea41f8['params']['id']}})[_0x5b0b('0x22')](handleEntityNotFound(_0x4f73ab,null))[_0x5b0b('0x22')](saveUpdates(_0xea41f8['body'],null))[_0x5b0b('0x22')](respondWithResult(_0x4f73ab,null))[_0x5b0b('0x44')](handleError(_0x4f73ab,null));};exports[_0x5b0b('0x23')]=function(_0x5e48b0,_0x2cbca5){return db[_0x5b0b('0x2a')][_0x5b0b('0x46')]({'where':{'id':_0x5e48b0[_0x5b0b('0x4e')]['id']}})[_0x5b0b('0x22')](handleEntityNotFound(_0x2cbca5,null))[_0x5b0b('0x22')](removeEntity(_0x2cbca5,null))[_0x5b0b('0x44')](handleError(_0x2cbca5,null));};exports[_0x5b0b('0x4f')]=function(_0x3dd998,_0x85d629,_0x1b3f74){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x3dd998[_0x5b0b('0x4e')]['id']},'attributes':[_0x5b0b('0x27'),_0x5b0b('0x50'),'savename',_0x5b0b('0x51')],'raw':!![]})[_0x5b0b('0x22')](handleEntityNotFound(_0x85d629,null))[_0x5b0b('0x22')](function(_0x3d4108){if(_0x3d4108){if(!fs[_0x5b0b('0x52')](path[_0x5b0b('0x53')](config[_0x5b0b('0x54')],_0x5b0b('0x55'),_0x3d4108[_0x5b0b('0x56')]))){throw new db[(_0x5b0b('0x57'))]['ValidationError'](_0x5b0b('0x58'));}if(_0x3dd998[_0x5b0b('0x2f')][_0x5b0b('0x59')]){return _0x85d629[_0x5b0b('0x16')](0xc8);}return _0x85d629[_0x5b0b('0x4f')](path[_0x5b0b('0x53')](config[_0x5b0b('0x54')],_0x5b0b('0x55'),_0x3d4108['savename']),util[_0x5b0b('0x5a')](_0x5b0b('0x5b'),_0x3d4108[_0x5b0b('0x50')]||_0x3d4108[_0x5b0b('0x27')],_0x3d4108[_0x5b0b('0x51')]['toLowerCase']()));}})[_0x5b0b('0x44')](handleError(_0x85d629,null));};
\ No newline at end of file
+var _0xcde9=['exists','format','%s.%s','toLowerCase','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','index','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticExtractedReport','rows','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcde9,0x174));var _0x9cde=function(_0xde1fd1,_0x1691fb){_0xde1fd1=_0xde1fd1-0x0;var _0x13e1cc=_0xcde9[_0xde1fd1];return _0x13e1cc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9cde('0x0'));var rp=require(_0x9cde('0x1'));var moment=require('moment');var BPromise=require(_0x9cde('0x2'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x9cde('0x3'));var csv=require(_0x9cde('0x4'));var ejs=require(_0x9cde('0x5'));var fs=require('fs');var fs_extra=require(_0x9cde('0x6'));var _=require(_0x9cde('0x7'));var squel=require(_0x9cde('0x8'));var crypto=require('crypto');var jsforce=require(_0x9cde('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x9cde('0x4'));var querystring=require(_0x9cde('0xa'));var Papa=require(_0x9cde('0xb'));var Redis=require(_0x9cde('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x9cde('0xd'));var as=require(_0x9cde('0xe'));var hardwareService=require(_0x9cde('0xf'));var logger=require(_0x9cde('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x9cde('0x11'));var licenseUtil=require(_0x9cde('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xff67a2,_0x2c10f){_0x2c10f=_0x2c10f||0xcc;return function(_0x553b65){if(_0x553b65){return _0xff67a2[_0x9cde('0x13')](_0x2c10f);}return _0xff67a2[_0x9cde('0x14')](_0x2c10f)[_0x9cde('0x15')]();};}function respondWithResult(_0x17a27e,_0x1ebe2a){_0x1ebe2a=_0x1ebe2a||0xc8;return function(_0x2fd47c){if(_0x2fd47c){return _0x17a27e[_0x9cde('0x14')](_0x1ebe2a)['json'](_0x2fd47c);}};}function respondWithFilteredResult(_0x4a3aaa,_0x17fc5e){return function(_0x25fdd9){if(_0x25fdd9){var _0x4282ee=typeof _0x17fc5e[_0x9cde('0x16')]===_0x9cde('0x17')&&typeof _0x17fc5e['limit']===_0x9cde('0x17');var _0x8ff624=_0x25fdd9[_0x9cde('0x18')];var _0x467750=_0x4282ee?0x0:_0x17fc5e[_0x9cde('0x16')];var _0x1d2d9d=_0x4282ee?_0x25fdd9[_0x9cde('0x18')]:_0x17fc5e[_0x9cde('0x16')]+_0x17fc5e[_0x9cde('0x19')];var _0x41882b;if(_0x1d2d9d>=_0x8ff624){_0x1d2d9d=_0x8ff624;_0x41882b=0xc8;}else{_0x41882b=0xce;}_0x4a3aaa[_0x9cde('0x14')](_0x41882b);return _0x4a3aaa['set'](_0x9cde('0x1a'),_0x467750+'-'+_0x1d2d9d+'/'+_0x8ff624)[_0x9cde('0x1b')](_0x25fdd9);}return null;};}function patchUpdates(_0x533a3c){return function(_0x72bf4a){try{jsonpatch[_0x9cde('0x1c')](_0x72bf4a,_0x533a3c,!![]);}catch(_0x3d19df){return BPromise[_0x9cde('0x1d')](_0x3d19df);}return _0x72bf4a[_0x9cde('0x1e')]();};}function saveUpdates(_0x24930f,_0x5cb8d1){return function(_0x2eb09c){if(_0x2eb09c){return _0x2eb09c[_0x9cde('0x1f')](_0x24930f)[_0x9cde('0x20')](function(_0x20da74){return _0x20da74;});}return null;};}function removeEntity(_0x7168e8,_0x22607d){return function(_0x1dffd2){if(_0x1dffd2){return _0x1dffd2[_0x9cde('0x21')]()[_0x9cde('0x20')](function(){var _0x4e1465=_0x1dffd2[_0x9cde('0x22')]({'plain':!![]});var _0x3f552a=_0x9cde('0x23');return db[_0x9cde('0x24')][_0x9cde('0x21')]({'where':{'type':_0x3f552a,'resourceId':_0x4e1465['id']}})['then'](function(){return _0x1dffd2;});})[_0x9cde('0x20')](function(){_0x7168e8[_0x9cde('0x14')](0xcc)[_0x9cde('0x15')]();});}};}function handleEntityNotFound(_0xf78003,_0x5c0ccd){return function(_0x28b5ad){if(!_0x28b5ad){_0xf78003['sendStatus'](0x194);}return _0x28b5ad;};}function handleError(_0x311945,_0x4c0f86){_0x4c0f86=_0x4c0f86||0x1f4;return function(_0x19bb7b){logger[_0x9cde('0x25')](_0x19bb7b['stack']);if(_0x19bb7b['name']){delete _0x19bb7b[_0x9cde('0x26')];}_0x311945['status'](_0x4c0f86)['send'](_0x19bb7b);};}exports[_0x9cde('0x27')]=function(_0x509557,_0x57782f){var _0x4e63d8={},_0x1fd26e={},_0x34f1f6={'count':0x0,'rows':[]};var _0x4b0d77=_['map'](db['AnalyticExtractedReport'][_0x9cde('0x28')],function(_0x3aff97){return{'name':_0x3aff97[_0x9cde('0x29')],'type':_0x3aff97[_0x9cde('0x2a')]['key']};});_0x1fd26e[_0x9cde('0x2b')]=_[_0x9cde('0x2c')](_0x4b0d77,_0x9cde('0x26'));_0x1fd26e[_0x9cde('0x2d')]=_['keys'](_0x509557[_0x9cde('0x2d')]);_0x1fd26e[_0x9cde('0x2e')]=_[_0x9cde('0x2f')](_0x1fd26e[_0x9cde('0x2b')],_0x1fd26e['query']);_0x4e63d8[_0x9cde('0x30')]=_[_0x9cde('0x2f')](_0x1fd26e[_0x9cde('0x2b')],qs[_0x9cde('0x31')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x31')]));_0x4e63d8[_0x9cde('0x30')]=_0x4e63d8['attributes'][_0x9cde('0x32')]?_0x4e63d8[_0x9cde('0x30')]:_0x1fd26e['model'];if(!_0x509557[_0x9cde('0x2d')][_0x9cde('0x33')](_0x9cde('0x34'))){_0x4e63d8[_0x9cde('0x19')]=qs[_0x9cde('0x19')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x19')]);_0x4e63d8[_0x9cde('0x16')]=qs[_0x9cde('0x16')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x16')]);}_0x4e63d8['order']=qs[_0x9cde('0x35')](_0x509557[_0x9cde('0x2d')][_0x9cde('0x35')]);_0x4e63d8[_0x9cde('0x36')]=qs[_0x9cde('0x2e')](_[_0x9cde('0x37')](_0x509557['query'],_0x1fd26e[_0x9cde('0x2e')]),_0x4b0d77);if(_0x509557[_0x9cde('0x2d')][_0x9cde('0x38')]){_0x4e63d8[_0x9cde('0x36')]=_[_0x9cde('0x39')](_0x4e63d8[_0x9cde('0x36')],{'$or':_['map'](_0x4b0d77,function(_0x307be7){if(_0x307be7['type']!==_0x9cde('0x3a')){var _0x6e441d={};_0x6e441d[_0x307be7[_0x9cde('0x26')]]={'$like':'%'+_0x509557[_0x9cde('0x2d')][_0x9cde('0x38')]+'%'};return _0x6e441d;}})});}_0x4e63d8=_[_0x9cde('0x39')]({},_0x4e63d8,_0x509557[_0x9cde('0x3b')]);var _0x2ffb09={'where':_0x4e63d8[_0x9cde('0x36')]};return db['AnalyticExtractedReport']['count'](_0x2ffb09)[_0x9cde('0x20')](function(_0x3cfdd8){_0x34f1f6[_0x9cde('0x18')]=_0x3cfdd8;if(_0x509557[_0x9cde('0x2d')][_0x9cde('0x3c')]){_0x4e63d8[_0x9cde('0x3d')]=[{'all':!![]}];}return db[_0x9cde('0x3e')]['findAll'](_0x4e63d8);})[_0x9cde('0x20')](function(_0x462973){_0x34f1f6[_0x9cde('0x3f')]=_0x462973;return _0x34f1f6;})['then'](respondWithFilteredResult(_0x57782f,_0x4e63d8))['catch'](handleError(_0x57782f,null));};exports['show']=function(_0x42a722,_0x5ed745){var _0x1febc6={'raw':!![],'where':{'id':_0x42a722['params']['id']}},_0x756789={};_0x756789[_0x9cde('0x2b')]=_['keys'](db[_0x9cde('0x3e')][_0x9cde('0x28')]);_0x756789['query']=_[_0x9cde('0x40')](_0x42a722[_0x9cde('0x2d')]);_0x756789[_0x9cde('0x2e')]=_[_0x9cde('0x2f')](_0x756789[_0x9cde('0x2b')],_0x756789[_0x9cde('0x2d')]);_0x1febc6[_0x9cde('0x30')]=_[_0x9cde('0x2f')](_0x756789[_0x9cde('0x2b')],qs['fields'](_0x42a722[_0x9cde('0x2d')][_0x9cde('0x31')]));_0x1febc6[_0x9cde('0x30')]=_0x1febc6[_0x9cde('0x30')][_0x9cde('0x32')]?_0x1febc6[_0x9cde('0x30')]:_0x756789[_0x9cde('0x2b')];if(_0x42a722['query'][_0x9cde('0x3c')]){_0x1febc6[_0x9cde('0x3d')]=[{'all':!![]}];}_0x1febc6=_[_0x9cde('0x39')]({},_0x1febc6,_0x42a722[_0x9cde('0x3b')]);return db[_0x9cde('0x3e')][_0x9cde('0x41')](_0x1febc6)[_0x9cde('0x20')](handleEntityNotFound(_0x5ed745,null))[_0x9cde('0x20')](respondWithResult(_0x5ed745,null))['catch'](handleError(_0x5ed745,null));};exports[_0x9cde('0x42')]=function(_0x16d9a8,_0x448dcc){return db['AnalyticExtractedReport'][_0x9cde('0x42')](_0x16d9a8[_0x9cde('0x43')],{})[_0x9cde('0x20')](function(_0x507e1d){var _0x524ebd=_0x16d9a8[_0x9cde('0x44')]['get']({'plain':!![]});if(!_0x524ebd)throw new Error(_0x9cde('0x45'));if(_0x524ebd[_0x9cde('0x46')]==='user'){var _0x2aaba1=_0x507e1d[_0x9cde('0x22')]({'plain':!![]});var _0x5604c7=_0x9cde('0x23');return db[_0x9cde('0x47')]['find']({'where':{'name':_0x5604c7,'userProfileId':_0x524ebd[_0x9cde('0x48')]},'raw':!![]})[_0x9cde('0x20')](function(_0xba84a3){if(_0xba84a3&&_0xba84a3[_0x9cde('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x2aaba1[_0x9cde('0x26')],'resourceId':_0x2aaba1['id'],'type':_0xba84a3[_0x9cde('0x26')],'sectionId':_0xba84a3['id']},{})[_0x9cde('0x20')](function(){return _0x507e1d;});}else{return _0x507e1d;}})[_0x9cde('0x4a')](function(_0x1b92b9){logger[_0x9cde('0x25')](_0x9cde('0x4b'),_0x1b92b9);throw _0x1b92b9;});}return _0x507e1d;})[_0x9cde('0x20')](respondWithResult(_0x448dcc,0xc9))[_0x9cde('0x4a')](handleError(_0x448dcc,null));};exports[_0x9cde('0x1f')]=function(_0x5275e0,_0x5aba69){if(_0x5275e0[_0x9cde('0x43')]['id']){delete _0x5275e0[_0x9cde('0x43')]['id'];}return db[_0x9cde('0x3e')]['find']({'where':{'id':_0x5275e0['params']['id']}})[_0x9cde('0x20')](handleEntityNotFound(_0x5aba69,null))[_0x9cde('0x20')](saveUpdates(_0x5275e0['body'],null))['then'](respondWithResult(_0x5aba69,null))[_0x9cde('0x4a')](handleError(_0x5aba69,null));};exports[_0x9cde('0x21')]=function(_0x31ae59,_0x3d0fdd){return db[_0x9cde('0x3e')][_0x9cde('0x41')]({'where':{'id':_0x31ae59[_0x9cde('0x4c')]['id']}})[_0x9cde('0x20')](handleEntityNotFound(_0x3d0fdd,null))[_0x9cde('0x20')](removeEntity(_0x3d0fdd,null))[_0x9cde('0x4a')](handleError(_0x3d0fdd,null));};exports[_0x9cde('0x4d')]=function(_0x42b5a5,_0x55e5e2,_0xcbc4c4){return db['AnalyticExtractedReport'][_0x9cde('0x41')]({'where':{'id':_0x42b5a5[_0x9cde('0x4c')]['id']},'attributes':[_0x9cde('0x26'),_0x9cde('0x4e'),_0x9cde('0x4f'),_0x9cde('0x50')],'raw':!![]})[_0x9cde('0x20')](handleEntityNotFound(_0x55e5e2,null))[_0x9cde('0x20')](function(_0x285c57){if(_0x285c57){if(!fs[_0x9cde('0x51')](path[_0x9cde('0x52')](config[_0x9cde('0x53')],_0x9cde('0x54'),_0x285c57['savename']))){throw new db[(_0x9cde('0x55'))][(_0x9cde('0x56'))](_0x9cde('0x57'));}if(_0x42b5a5['query'][_0x9cde('0x58')]){return _0x55e5e2[_0x9cde('0x13')](0xc8);}return _0x55e5e2[_0x9cde('0x4d')](path[_0x9cde('0x52')](config[_0x9cde('0x53')],'server/files/reports',_0x285c57['savename']),util[_0x9cde('0x59')](_0x9cde('0x5a'),_0x285c57[_0x9cde('0x4e')]||_0x285c57[_0x9cde('0x26')],_0x285c57['output'][_0x9cde('0x5b')]()));}})[_0x9cde('0x4a')](handleError(_0x55e5e2,null));};
\ No newline at end of file
index c2fdef9..ccd0a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1592=['define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x1592,0x189));var _0x2159=function(_0x436f7c,_0x4cb1ed){_0x436f7c=_0x436f7c-0x0;var _0x2f20c7=_0x1592[_0x436f7c];return _0x2f20c7;};'use strict';var _=require(_0x2159('0x0'));var util=require(_0x2159('0x1'));var logger=require(_0x2159('0x2'))(_0x2159('0x3'));var moment=require(_0x2159('0x4'));var BPromise=require(_0x2159('0x5'));var rp=require(_0x2159('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2159('0x7'));var config=require(_0x2159('0x8'));var attributes=require(_0x2159('0x9'));module['exports']=function(_0x4cf131,_0x5b97ad){return _0x4cf131[_0x2159('0xa')](_0x2159('0xb'),attributes,{'tableName':_0x2159('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5890=['exports','define','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0xbbc360,_0x4807d1){var _0xb291cc=function(_0x539b8c){while(--_0x539b8c){_0xbbc360['push'](_0xbbc360['shift']());}};_0xb291cc(++_0x4807d1);}(_0x5890,0xc6));var _0x0589=function(_0x2f0928,_0x4dd5ec){_0x2f0928=_0x2f0928-0x0;var _0x21a5bf=_0x5890[_0x2f0928];return _0x21a5bf;};'use strict';var _=require(_0x0589('0x0'));var util=require(_0x0589('0x1'));var logger=require(_0x0589('0x2'))(_0x0589('0x3'));var moment=require(_0x0589('0x4'));var BPromise=require(_0x0589('0x5'));var rp=require(_0x0589('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0589('0x7'));var config=require(_0x0589('0x8'));var attributes=require(_0x0589('0x9'));module[_0x0589('0xa')]=function(_0x53b4ad,_0x296de2){return _0x53b4ad[_0x0589('0xb')]('AnalyticExtractedReport',attributes,{'tableName':_0x0589('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a52ef27..097e556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf6=['rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xbaf6,0xd0));var _0x6baf=function(_0x295583,_0x4756aa){_0x295583=_0x295583-0x0;var _0x4c2ae6=_0xbaf6[_0x295583];return _0x4c2ae6;};'use strict';var _=require(_0x6baf('0x0'));var util=require(_0x6baf('0x1'));var moment=require(_0x6baf('0x2'));var BPromise=require(_0x6baf('0x3'));var rs=require(_0x6baf('0x4'));var fs=require('fs');var Redis=require(_0x6baf('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6baf('0x6'));var logger=require(_0x6baf('0x7'))(_0x6baf('0x8'));var config=require(_0x6baf('0x9'));var jayson=require(_0x6baf('0xa'));var client=jayson[_0x6baf('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e75fc,_0x28dd43,_0x3b9a72){return new BPromise(function(_0x524e71,_0x21eebc){return client[_0x6baf('0xc')](_0x2e75fc,_0x3b9a72)[_0x6baf('0xd')](function(_0x317213){logger[_0x6baf('0xe')](_0x6baf('0xf'),_0x28dd43,_0x6baf('0x10'));logger[_0x6baf('0x11')](_0x6baf('0x12'),_0x28dd43,_0x6baf('0x10'),JSON[_0x6baf('0x13')](_0x317213));if(_0x317213[_0x6baf('0x14')]){if(_0x317213['error'][_0x6baf('0x15')]===0x1f4){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x28dd43,_0x317213[_0x6baf('0x14')][_0x6baf('0x16')]);return _0x21eebc(_0x317213[_0x6baf('0x14')][_0x6baf('0x16')]);}logger[_0x6baf('0x14')](_0x6baf('0xf'),_0x28dd43,_0x317213[_0x6baf('0x14')]['message']);return _0x524e71(_0x317213[_0x6baf('0x14')][_0x6baf('0x16')]);}else{logger[_0x6baf('0xe')](_0x6baf('0xf'),_0x28dd43,_0x6baf('0x10'));_0x524e71(_0x317213['result'][_0x6baf('0x16')]);}})[_0x6baf('0x17')](function(_0x189184){logger[_0x6baf('0x14')](_0x6baf('0xf'),_0x28dd43,_0x189184);_0x21eebc(_0x189184);});});}
\ No newline at end of file
+var _0xc8fe=['message','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x1a80f4,_0x1de53b){var _0x55e867=function(_0x4a4933){while(--_0x4a4933){_0x1a80f4['push'](_0x1a80f4['shift']());}};_0x55e867(++_0x1de53b);}(_0xc8fe,0xe7));var _0xec8f=function(_0x17e2fa,_0x24e26d){_0x17e2fa=_0x17e2fa-0x0;var _0x51216e=_0xc8fe[_0x17e2fa];return _0x51216e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xec8f('0x0'));var BPromise=require(_0xec8f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xec8f('0x2'))['db'];var utils=require(_0xec8f('0x3'));var logger=require(_0xec8f('0x4'))(_0xec8f('0x5'));var config=require(_0xec8f('0x6'));var jayson=require(_0xec8f('0x7'));var client=jayson[_0xec8f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f2764,_0x28f7e8,_0x54af3e){return new BPromise(function(_0x46f33d,_0x56381a){return client['request'](_0x1f2764,_0x54af3e)[_0xec8f('0x9')](function(_0x450f16){logger[_0xec8f('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x28f7e8,'request\x20sent');logger[_0xec8f('0xb')](_0xec8f('0xc'),_0x28f7e8,'request\x20sent',JSON['stringify'](_0x450f16));if(_0x450f16[_0xec8f('0xd')]){if(_0x450f16[_0xec8f('0xd')][_0xec8f('0xe')]===0x1f4){logger[_0xec8f('0xd')](_0xec8f('0xf'),_0x28f7e8,_0x450f16[_0xec8f('0xd')][_0xec8f('0x10')]);return _0x56381a(_0x450f16[_0xec8f('0xd')][_0xec8f('0x10')]);}logger[_0xec8f('0xd')](_0xec8f('0xf'),_0x28f7e8,_0x450f16['error'][_0xec8f('0x10')]);return _0x46f33d(_0x450f16['error'][_0xec8f('0x10')]);}else{logger[_0xec8f('0xa')](_0xec8f('0xf'),_0x28f7e8,'request\x20sent');_0x46f33d(_0x450f16[_0xec8f('0x11')]['message']);}})[_0xec8f('0x12')](function(_0x5bd1a5){logger[_0xec8f('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x28f7e8,_0x5bd1a5);_0x56381a(_0x5bd1a5);});});}
\ No newline at end of file
index 2042192..a8c4f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd488=['get','isAuthenticated','index','/:id','show','download','create','put','update','multer','util','path','Router','fs-extra','../../components/interaction/service','./analyticExtractedReport.controller'];(function(_0x37ad3f,_0x4d4aba){var _0x45db28=function(_0x102c26){while(--_0x102c26){_0x37ad3f['push'](_0x37ad3f['shift']());}};_0x45db28(++_0x4d4aba);}(_0xd488,0x99));var _0x8d48=function(_0x25d5e9,_0x340fda){_0x25d5e9=_0x25d5e9-0x0;var _0xa351e2=_0xd488[_0x25d5e9];return _0xa351e2;};'use strict';var multer=require(_0x8d48('0x0'));var util=require(_0x8d48('0x1'));var path=require(_0x8d48('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8d48('0x3')]();var fs_extra=require(_0x8d48('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8d48('0x5'));var config=require('../../config/environment');var controller=require(_0x8d48('0x6'));router[_0x8d48('0x7')]('/',auth[_0x8d48('0x8')](),controller[_0x8d48('0x9')]);router[_0x8d48('0x7')](_0x8d48('0xa'),auth[_0x8d48('0x8')](),controller[_0x8d48('0xb')]);router[_0x8d48('0x7')]('/:id/download',auth[_0x8d48('0x8')](),controller[_0x8d48('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8d48('0xd')]);router[_0x8d48('0xe')](_0x8d48('0xa'),auth['isAuthenticated'](),controller[_0x8d48('0xf')]);router['delete'](_0x8d48('0xa'),auth[_0x8d48('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6e9d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','create','put','delete','destroy','multer','util','path','connect-timeout','express','fs-extra'];(function(_0xccb90c,_0x3b6bf1){var _0x1864ec=function(_0x1a68f9){while(--_0x1a68f9){_0xccb90c['push'](_0xccb90c['shift']());}};_0x1864ec(++_0x3b6bf1);}(_0x6e9d,0xf6));var _0xd6e9=function(_0x472c59,_0x182078){_0x472c59=_0x472c59-0x0;var _0x322b8d=_0x6e9d[_0x472c59];return _0x322b8d;};'use strict';var multer=require(_0xd6e9('0x0'));var util=require(_0xd6e9('0x1'));var path=require(_0xd6e9('0x2'));var timeout=require(_0xd6e9('0x3'));var express=require(_0xd6e9('0x4'));var router=express['Router']();var fs_extra=require(_0xd6e9('0x5'));var auth=require(_0xd6e9('0x6'));var interaction=require(_0xd6e9('0x7'));var config=require(_0xd6e9('0x8'));var controller=require(_0xd6e9('0x9'));router[_0xd6e9('0xa')]('/',auth[_0xd6e9('0xb')](),controller[_0xd6e9('0xc')]);router['get'](_0xd6e9('0xd'),auth[_0xd6e9('0xb')](),controller[_0xd6e9('0xe')]);router[_0xd6e9('0xa')](_0xd6e9('0xf'),auth[_0xd6e9('0xb')](),controller[_0xd6e9('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd6e9('0x11')]);router[_0xd6e9('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd6e9('0x13')]('/:id',auth[_0xd6e9('0xb')](),controller[_0xd6e9('0x14')]);module['exports']=router;
\ No newline at end of file
index 22d3bfb..ecbdd29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa8=['BOOLEAN','exports','TEXT','STRING'];(function(_0x4ae862,_0x4bd49f){var _0x3b9a7a=function(_0x4c61f6){while(--_0x4c61f6){_0x4ae862['push'](_0x4ae862['shift']());}};_0x3b9a7a(++_0x4bd49f);}(_0x7aa8,0x1ad));var _0x87aa=function(_0x5e6575,_0x5a876e){_0x5e6575=_0x5e6575-0x0;var _0x54e5b7=_0x7aa8[_0x5e6575];return _0x54e5b7;};'use strict';var Sequelize=require('sequelize');module[_0x87aa('0x0')]={'field':{'type':Sequelize[_0x87aa('0x1')]},'alias':{'type':Sequelize[_0x87aa('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x87aa('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x87aa('0x2')]},'custom':{'type':Sequelize[_0x87aa('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xde7f=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xde7f,0x86));var _0xfde7=function(_0x40e79a,_0x45b7ae){_0x40e79a=_0x40e79a-0x0;var _0x30538a=_0xde7f[_0x40e79a];return _0x30538a;};'use strict';var Sequelize=require(_0xfde7('0x0'));module[_0xfde7('0x1')]={'field':{'type':Sequelize[_0xfde7('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xfde7('0x3')]},'groupBy':{'type':Sequelize[_0xfde7('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xfde7('0x3')]},'custom':{'type':Sequelize[_0xfde7('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 6dc94e6..e0ef36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe588=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','include','options','find','create','bulkCreate','body','params','bulkDestroy','ids','addFields','transaction','CustomReportId','eml-format','rimraf','request-promise','moment','mustache','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xe588,0xe1));var _0x8e58=function(_0x3d9b04,_0x1e851a){_0x3d9b04=_0x3d9b04-0x0;var _0x557936=_0xe588[_0x3d9b04];return _0x557936;};'use strict';var emlformat=require(_0x8e58('0x0'));var rimraf=require(_0x8e58('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8e58('0x2'));var moment=require(_0x8e58('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8e58('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8e58('0x5'));var fs=require('fs');var fs_extra=require(_0x8e58('0x6'));var _=require(_0x8e58('0x7'));var squel=require(_0x8e58('0x8'));var crypto=require(_0x8e58('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x8e58('0xa'));var toCsv=require(_0x8e58('0xb'));var querystring=require(_0x8e58('0xc'));var Papa=require('papaparse');var Redis=require(_0x8e58('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x8e58('0xe'));var as=require(_0x8e58('0xf'));var hardwareService=require(_0x8e58('0x10'));var logger=require('../../config/logger')(_0x8e58('0x11'));var utils=require(_0x8e58('0x12'));var config=require(_0x8e58('0x13'));var licenseUtil=require(_0x8e58('0x14'));var db=require(_0x8e58('0x15'))['db'];function respondWithStatusCode(_0x2c6381,_0x320153){_0x320153=_0x320153||0xcc;return function(_0x3969d7){if(_0x3969d7){return _0x2c6381[_0x8e58('0x16')](_0x320153);}return _0x2c6381[_0x8e58('0x17')](_0x320153)[_0x8e58('0x18')]();};}function respondWithResult(_0x304e8d,_0x5b5628){_0x5b5628=_0x5b5628||0xc8;return function(_0x38b3f6){if(_0x38b3f6){return _0x304e8d[_0x8e58('0x17')](_0x5b5628)[_0x8e58('0x19')](_0x38b3f6);}};}function respondWithFilteredResult(_0x4d4756,_0x2b3a8b){return function(_0x1d68a2){if(_0x1d68a2){var _0x4acae4=typeof _0x2b3a8b['offset']==='undefined'&&typeof _0x2b3a8b[_0x8e58('0x1a')]===_0x8e58('0x1b');var _0x3fffc0=_0x1d68a2[_0x8e58('0x1c')];var _0x54a426=_0x4acae4?0x0:_0x2b3a8b[_0x8e58('0x1d')];var _0x4f6049=_0x4acae4?_0x1d68a2[_0x8e58('0x1c')]:_0x2b3a8b[_0x8e58('0x1d')]+_0x2b3a8b[_0x8e58('0x1a')];var _0x2ce9bf;if(_0x4f6049>=_0x3fffc0){_0x4f6049=_0x3fffc0;_0x2ce9bf=0xc8;}else{_0x2ce9bf=0xce;}_0x4d4756['status'](_0x2ce9bf);return _0x4d4756[_0x8e58('0x1e')](_0x8e58('0x1f'),_0x54a426+'-'+_0x4f6049+'/'+_0x3fffc0)[_0x8e58('0x19')](_0x1d68a2);}return null;};}function patchUpdates(_0xec0695){return function(_0x922726){try{jsonpatch['apply'](_0x922726,_0xec0695,!![]);}catch(_0x2a3315){return BPromise[_0x8e58('0x20')](_0x2a3315);}return _0x922726[_0x8e58('0x21')]();};}function saveUpdates(_0x2cc18f,_0xe243c3){return function(_0x5318dc){if(_0x5318dc){return _0x5318dc[_0x8e58('0x22')](_0x2cc18f)[_0x8e58('0x23')](function(_0x17b61d){return _0x17b61d;});}return null;};}function removeEntity(_0x17aa6f,_0x55707d){return function(_0x24caec){if(_0x24caec){return _0x24caec[_0x8e58('0x24')]()[_0x8e58('0x23')](function(){_0x17aa6f[_0x8e58('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26988f,_0x327c2b){return function(_0x5113a6){if(!_0x5113a6){_0x26988f['sendStatus'](0x194);}return _0x5113a6;};}function handleError(_0x1df961,_0x5567c7){_0x5567c7=_0x5567c7||0x1f4;return function(_0x5688f9){logger[_0x8e58('0x25')](_0x5688f9[_0x8e58('0x26')]);if(_0x5688f9['name']){delete _0x5688f9[_0x8e58('0x27')];}_0x1df961['status'](_0x5567c7)[_0x8e58('0x28')](_0x5688f9);};}exports[_0x8e58('0x29')]=function(_0x2cac2b,_0x3a9850){var _0x1cec58={},_0x3d4259={},_0x4e051e={'count':0x0,'rows':[]};var _0x2eec31=_[_0x8e58('0x2a')](db[_0x8e58('0x2b')][_0x8e58('0x2c')],function(_0x429cbf){return{'name':_0x429cbf[_0x8e58('0x2d')],'type':_0x429cbf[_0x8e58('0x2e')][_0x8e58('0x2f')]};});_0x3d4259[_0x8e58('0x30')]=_[_0x8e58('0x2a')](_0x2eec31,_0x8e58('0x27'));_0x3d4259[_0x8e58('0x31')]=_[_0x8e58('0x32')](_0x2cac2b[_0x8e58('0x31')]);_0x3d4259['filters']=_[_0x8e58('0x33')](_0x3d4259[_0x8e58('0x30')],_0x3d4259['query']);_0x1cec58[_0x8e58('0x34')]=_['intersection'](_0x3d4259[_0x8e58('0x30')],qs[_0x8e58('0x35')](_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x35')]));_0x1cec58['attributes']=_0x1cec58[_0x8e58('0x34')][_0x8e58('0x36')]?_0x1cec58[_0x8e58('0x34')]:_0x3d4259[_0x8e58('0x30')];if(!_0x2cac2b['query'][_0x8e58('0x37')](_0x8e58('0x38'))){_0x1cec58[_0x8e58('0x1a')]=qs['limit'](_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x1a')]);_0x1cec58[_0x8e58('0x1d')]=qs['offset'](_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x1d')]);}_0x1cec58['order']=qs['sort'](_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x39')]);_0x1cec58[_0x8e58('0x3a')]=qs['filters'](_[_0x8e58('0x3b')](_0x2cac2b['query'],_0x3d4259[_0x8e58('0x3c')]),_0x2eec31);if(_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x3d')]){_0x1cec58[_0x8e58('0x3a')]=_['merge'](_0x1cec58[_0x8e58('0x3a')],{'$or':_[_0x8e58('0x2a')](_0x2eec31,function(_0x320287){if(_0x320287['type']!==_0x8e58('0x3e')){var _0x3b6b55={};_0x3b6b55[_0x320287[_0x8e58('0x27')]]={'$like':'%'+_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x3d')]+'%'};return _0x3b6b55;}})});}_0x1cec58=_[_0x8e58('0x3f')]({},_0x1cec58,_0x2cac2b['options']);var _0x4693b2={'where':_0x1cec58[_0x8e58('0x3a')]};return db[_0x8e58('0x2b')][_0x8e58('0x1c')](_0x4693b2)[_0x8e58('0x23')](function(_0x863b89){_0x4e051e['count']=_0x863b89;if(_0x2cac2b[_0x8e58('0x31')][_0x8e58('0x40')]){_0x1cec58['include']=[{'all':!![]}];}return db[_0x8e58('0x2b')][_0x8e58('0x41')](_0x1cec58);})['then'](function(_0x6cf8bf){_0x4e051e[_0x8e58('0x42')]=_0x6cf8bf;return _0x4e051e;})[_0x8e58('0x23')](respondWithFilteredResult(_0x3a9850,_0x1cec58))[_0x8e58('0x43')](handleError(_0x3a9850,null));};exports[_0x8e58('0x44')]=function(_0x3fad13,_0x166453){var _0x5ce2eb={'raw':![],'where':{'id':_0x3fad13['params']['id']}},_0x721dc={};_0x721dc[_0x8e58('0x30')]=_[_0x8e58('0x32')](db[_0x8e58('0x2b')][_0x8e58('0x2c')]);_0x721dc['query']=_['keys'](_0x3fad13['query']);_0x721dc[_0x8e58('0x3c')]=_[_0x8e58('0x33')](_0x721dc[_0x8e58('0x30')],_0x721dc[_0x8e58('0x31')]);_0x5ce2eb['attributes']=_['intersection'](_0x721dc[_0x8e58('0x30')],qs[_0x8e58('0x35')](_0x3fad13[_0x8e58('0x31')][_0x8e58('0x35')]));_0x5ce2eb['attributes']=_0x5ce2eb[_0x8e58('0x34')][_0x8e58('0x36')]?_0x5ce2eb[_0x8e58('0x34')]:_0x721dc[_0x8e58('0x30')];if(_0x3fad13[_0x8e58('0x31')][_0x8e58('0x40')]){_0x5ce2eb[_0x8e58('0x45')]=[{'all':!![]}];}_0x5ce2eb=_[_0x8e58('0x3f')]({},_0x5ce2eb,_0x3fad13[_0x8e58('0x46')]);return db[_0x8e58('0x2b')][_0x8e58('0x47')](_0x5ce2eb)['then'](handleEntityNotFound(_0x166453,null))[_0x8e58('0x23')](respondWithResult(_0x166453,null))[_0x8e58('0x43')](handleError(_0x166453,null));};exports[_0x8e58('0x48')]=function(_0x5055b6,_0x7b4a9a){return db['AnalyticFieldReport']['create'](_0x5055b6['body'],{})[_0x8e58('0x23')](respondWithResult(_0x7b4a9a,0xc9))[_0x8e58('0x43')](handleError(_0x7b4a9a,null));};exports['bulkCreate']=function(_0x3e3707,_0x1998a4){return db[_0x8e58('0x2b')][_0x8e58('0x49')](_0x3e3707[_0x8e58('0x4a')],{'raw':![],'individualHooks':!![]})[_0x8e58('0x23')](respondWithResult(_0x1998a4,0xc9))[_0x8e58('0x43')](handleError(_0x1998a4,null));};exports['update']=function(_0x26f114,_0x19d465){if(_0x26f114[_0x8e58('0x4a')]['id']){delete _0x26f114[_0x8e58('0x4a')]['id'];}return db[_0x8e58('0x2b')][_0x8e58('0x47')]({'where':{'id':_0x26f114[_0x8e58('0x4b')]['id']}})['then'](handleEntityNotFound(_0x19d465,null))[_0x8e58('0x23')](saveUpdates(_0x26f114[_0x8e58('0x4a')],null))['then'](respondWithResult(_0x19d465,null))[_0x8e58('0x43')](handleError(_0x19d465,null));};exports[_0x8e58('0x24')]=function(_0x21c5ce,_0x140b50){return db[_0x8e58('0x2b')][_0x8e58('0x47')]({'where':{'id':_0x21c5ce[_0x8e58('0x4b')]['id']}})[_0x8e58('0x23')](handleEntityNotFound(_0x140b50,null))[_0x8e58('0x23')](removeEntity(_0x140b50,null))[_0x8e58('0x43')](handleError(_0x140b50,null));};exports[_0x8e58('0x4c')]=function(_0x33aef4,_0x43c71b){return db[_0x8e58('0x2b')]['destroy']({'where':{'id':_0x33aef4[_0x8e58('0x31')][_0x8e58('0x4d')]||[]},'raw':![],'individualHooks':!![]})[_0x8e58('0x23')](respondWithResult(_0x43c71b,0xcc))[_0x8e58('0x43')](handleError(_0x43c71b,null));};exports[_0x8e58('0x4e')]=function(_0x347287,_0x4a6a4b,_0x55ff88){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x347287[_0x8e58('0x4b')]['id']}})[_0x8e58('0x23')](handleEntityNotFound(_0x4a6a4b,null))['then'](function(_0x2e6f6b){if(_0x2e6f6b){return db['sequelize'][_0x8e58('0x4f')](function(_0x4ba164){return db['AnalyticFieldReport'][_0x8e58('0x24')]({'where':{'CustomReportId':_0x347287[_0x8e58('0x4b')]['id']},'transaction':_0x4ba164})[_0x8e58('0x23')](function(_0x4a2aa8){var _0x3b2c3f=_[_0x8e58('0x2a')](_0x347287[_0x8e58('0x4a')],function(_0xc633f0){delete _0xc633f0['id'];_0xc633f0[_0x8e58('0x50')]=_0x347287[_0x8e58('0x4b')]['id'];return _0xc633f0;});return db['AnalyticFieldReport'][_0x8e58('0x49')](_0x3b2c3f,{'transaction':_0x4ba164});});})['then'](function(){return db[_0x8e58('0x2b')][_0x8e58('0x41')]({'where':{'CustomReportId':_0x347287[_0x8e58('0x4b')]['id']}});});}})['then'](respondWithResult(_0x4a6a4b,null))[_0x8e58('0x43')](handleError(_0x4a6a4b,null));};
\ No newline at end of file
+var _0xdedf=['../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','end','sendStatus','error','stack','name','send','map','AnalyticFieldReport','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','options','rows','catch','show','rawAttributes','includeAll','find','create','body','bulkCreate','params','bulkDestroy','ids','addFields','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xdedf,0x82));var _0xfded=function(_0x4fcf0d,_0x1435ec){_0x4fcf0d=_0x4fcf0d-0x0;var _0x5ade91=_0xdedf[_0x4fcf0d];return _0x5ade91;};'use strict';var emlformat=require(_0xfded('0x0'));var rimraf=require(_0xfded('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfded('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfded('0x3'));var Mustache=require(_0xfded('0x4'));var util=require(_0xfded('0x5'));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(_0xfded('0x6'));var _=require(_0xfded('0x7'));var squel=require(_0xfded('0x8'));var crypto=require(_0xfded('0x9'));var jsforce=require(_0xfded('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xfded('0xb'));var querystring=require(_0xfded('0xc'));var Papa=require(_0xfded('0xd'));var Redis=require(_0xfded('0xe'));var authService=require(_0xfded('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfded('0x10'));var hardwareService=require(_0xfded('0x11'));var logger=require('../../config/logger')(_0xfded('0x12'));var utils=require(_0xfded('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfded('0x14'))['db'];function respondWithStatusCode(_0x23628d,_0x246ddf){_0x246ddf=_0x246ddf||0xcc;return function(_0x179f0b){if(_0x179f0b){return _0x23628d['sendStatus'](_0x246ddf);}return _0x23628d[_0xfded('0x15')](_0x246ddf)['end']();};}function respondWithResult(_0x373b2b,_0x5f0fe4){_0x5f0fe4=_0x5f0fe4||0xc8;return function(_0x425f7a){if(_0x425f7a){return _0x373b2b[_0xfded('0x15')](_0x5f0fe4)['json'](_0x425f7a);}};}function respondWithFilteredResult(_0x2d3a50,_0x359398){return function(_0x3e72b6){if(_0x3e72b6){var _0x2b2d3c=typeof _0x359398[_0xfded('0x16')]===_0xfded('0x17')&&typeof _0x359398[_0xfded('0x18')]===_0xfded('0x17');var _0x3331bf=_0x3e72b6['count'];var _0x4ef21d=_0x2b2d3c?0x0:_0x359398[_0xfded('0x16')];var _0x446809=_0x2b2d3c?_0x3e72b6[_0xfded('0x19')]:_0x359398['offset']+_0x359398[_0xfded('0x18')];var _0x584814;if(_0x446809>=_0x3331bf){_0x446809=_0x3331bf;_0x584814=0xc8;}else{_0x584814=0xce;}_0x2d3a50[_0xfded('0x15')](_0x584814);return _0x2d3a50[_0xfded('0x1a')](_0xfded('0x1b'),_0x4ef21d+'-'+_0x446809+'/'+_0x3331bf)[_0xfded('0x1c')](_0x3e72b6);}return null;};}function patchUpdates(_0x3435a6){return function(_0x2fa36c){try{jsonpatch[_0xfded('0x1d')](_0x2fa36c,_0x3435a6,!![]);}catch(_0x7ce46){return BPromise['reject'](_0x7ce46);}return _0x2fa36c['save']();};}function saveUpdates(_0x40ee0d,_0x44f89c){return function(_0x544faf){if(_0x544faf){return _0x544faf[_0xfded('0x1e')](_0x40ee0d)[_0xfded('0x1f')](function(_0x383c9b){return _0x383c9b;});}return null;};}function removeEntity(_0x3c63a6,_0x552c99){return function(_0x202bfb){if(_0x202bfb){return _0x202bfb[_0xfded('0x20')]()[_0xfded('0x1f')](function(){_0x3c63a6['status'](0xcc)[_0xfded('0x21')]();});}};}function handleEntityNotFound(_0x2993e8,_0xe9d250){return function(_0xa30523){if(!_0xa30523){_0x2993e8[_0xfded('0x22')](0x194);}return _0xa30523;};}function handleError(_0x3f0649,_0x73fed0){_0x73fed0=_0x73fed0||0x1f4;return function(_0x3947b2){logger[_0xfded('0x23')](_0x3947b2[_0xfded('0x24')]);if(_0x3947b2['name']){delete _0x3947b2[_0xfded('0x25')];}_0x3f0649[_0xfded('0x15')](_0x73fed0)[_0xfded('0x26')](_0x3947b2);};}exports['index']=function(_0x1f89ed,_0x267d5e){var _0x42ccf0={},_0x3aac56={},_0xcc9923={'count':0x0,'rows':[]};var _0x5cf152=_[_0xfded('0x27')](db[_0xfded('0x28')]['rawAttributes'],function(_0x209acf){return{'name':_0x209acf[_0xfded('0x29')],'type':_0x209acf[_0xfded('0x2a')]['key']};});_0x3aac56['model']=_[_0xfded('0x27')](_0x5cf152,_0xfded('0x25'));_0x3aac56[_0xfded('0x2b')]=_[_0xfded('0x2c')](_0x1f89ed[_0xfded('0x2b')]);_0x3aac56[_0xfded('0x2d')]=_[_0xfded('0x2e')](_0x3aac56[_0xfded('0x2f')],_0x3aac56[_0xfded('0x2b')]);_0x42ccf0[_0xfded('0x30')]=_[_0xfded('0x2e')](_0x3aac56[_0xfded('0x2f')],qs[_0xfded('0x31')](_0x1f89ed['query']['fields']));_0x42ccf0[_0xfded('0x30')]=_0x42ccf0[_0xfded('0x30')][_0xfded('0x32')]?_0x42ccf0[_0xfded('0x30')]:_0x3aac56[_0xfded('0x2f')];if(!_0x1f89ed[_0xfded('0x2b')]['hasOwnProperty'](_0xfded('0x33'))){_0x42ccf0['limit']=qs[_0xfded('0x18')](_0x1f89ed['query'][_0xfded('0x18')]);_0x42ccf0[_0xfded('0x16')]=qs[_0xfded('0x16')](_0x1f89ed[_0xfded('0x2b')][_0xfded('0x16')]);}_0x42ccf0['order']=qs[_0xfded('0x34')](_0x1f89ed['query'][_0xfded('0x34')]);_0x42ccf0[_0xfded('0x35')]=qs[_0xfded('0x2d')](_['pick'](_0x1f89ed[_0xfded('0x2b')],_0x3aac56[_0xfded('0x2d')]),_0x5cf152);if(_0x1f89ed['query'][_0xfded('0x36')]){_0x42ccf0['where']=_['merge'](_0x42ccf0[_0xfded('0x35')],{'$or':_['map'](_0x5cf152,function(_0x371a5d){if(_0x371a5d[_0xfded('0x2a')]!==_0xfded('0x37')){var _0x165463={};_0x165463[_0x371a5d['name']]={'$like':'%'+_0x1f89ed['query']['filter']+'%'};return _0x165463;}})});}_0x42ccf0=_[_0xfded('0x38')]({},_0x42ccf0,_0x1f89ed[_0xfded('0x39')]);var _0x1c6beb={'where':_0x42ccf0[_0xfded('0x35')]};return db[_0xfded('0x28')]['count'](_0x1c6beb)[_0xfded('0x1f')](function(_0x173b75){_0xcc9923[_0xfded('0x19')]=_0x173b75;if(_0x1f89ed[_0xfded('0x2b')]['includeAll']){_0x42ccf0['include']=[{'all':!![]}];}return db[_0xfded('0x28')]['findAll'](_0x42ccf0);})[_0xfded('0x1f')](function(_0x16064d){_0xcc9923[_0xfded('0x3a')]=_0x16064d;return _0xcc9923;})['then'](respondWithFilteredResult(_0x267d5e,_0x42ccf0))[_0xfded('0x3b')](handleError(_0x267d5e,null));};exports[_0xfded('0x3c')]=function(_0x31d365,_0x1904cc){var _0x1f7f12={'raw':![],'where':{'id':_0x31d365['params']['id']}},_0x354232={};_0x354232[_0xfded('0x2f')]=_[_0xfded('0x2c')](db[_0xfded('0x28')][_0xfded('0x3d')]);_0x354232[_0xfded('0x2b')]=_[_0xfded('0x2c')](_0x31d365['query']);_0x354232[_0xfded('0x2d')]=_[_0xfded('0x2e')](_0x354232[_0xfded('0x2f')],_0x354232[_0xfded('0x2b')]);_0x1f7f12[_0xfded('0x30')]=_[_0xfded('0x2e')](_0x354232[_0xfded('0x2f')],qs['fields'](_0x31d365[_0xfded('0x2b')][_0xfded('0x31')]));_0x1f7f12['attributes']=_0x1f7f12[_0xfded('0x30')][_0xfded('0x32')]?_0x1f7f12['attributes']:_0x354232['model'];if(_0x31d365[_0xfded('0x2b')][_0xfded('0x3e')]){_0x1f7f12['include']=[{'all':!![]}];}_0x1f7f12=_[_0xfded('0x38')]({},_0x1f7f12,_0x31d365['options']);return db[_0xfded('0x28')][_0xfded('0x3f')](_0x1f7f12)[_0xfded('0x1f')](handleEntityNotFound(_0x1904cc,null))['then'](respondWithResult(_0x1904cc,null))[_0xfded('0x3b')](handleError(_0x1904cc,null));};exports[_0xfded('0x40')]=function(_0x2743bb,_0x2218b6){return db[_0xfded('0x28')][_0xfded('0x40')](_0x2743bb[_0xfded('0x41')],{})[_0xfded('0x1f')](respondWithResult(_0x2218b6,0xc9))[_0xfded('0x3b')](handleError(_0x2218b6,null));};exports['bulkCreate']=function(_0x42324a,_0x2518bd){return db[_0xfded('0x28')][_0xfded('0x42')](_0x42324a[_0xfded('0x41')],{'raw':![],'individualHooks':!![]})[_0xfded('0x1f')](respondWithResult(_0x2518bd,0xc9))['catch'](handleError(_0x2518bd,null));};exports['update']=function(_0x2cb882,_0x511a87){if(_0x2cb882[_0xfded('0x41')]['id']){delete _0x2cb882[_0xfded('0x41')]['id'];}return db[_0xfded('0x28')]['find']({'where':{'id':_0x2cb882[_0xfded('0x43')]['id']}})[_0xfded('0x1f')](handleEntityNotFound(_0x511a87,null))[_0xfded('0x1f')](saveUpdates(_0x2cb882['body'],null))['then'](respondWithResult(_0x511a87,null))[_0xfded('0x3b')](handleError(_0x511a87,null));};exports[_0xfded('0x20')]=function(_0x539050,_0x3a664a){return db['AnalyticFieldReport'][_0xfded('0x3f')]({'where':{'id':_0x539050[_0xfded('0x43')]['id']}})[_0xfded('0x1f')](handleEntityNotFound(_0x3a664a,null))[_0xfded('0x1f')](removeEntity(_0x3a664a,null))[_0xfded('0x3b')](handleError(_0x3a664a,null));};exports[_0xfded('0x44')]=function(_0x474179,_0x3629e4){return db[_0xfded('0x28')][_0xfded('0x20')]({'where':{'id':_0x474179['query'][_0xfded('0x45')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3629e4,0xcc))[_0xfded('0x3b')](handleError(_0x3629e4,null));};exports[_0xfded('0x46')]=function(_0x2c5f15,_0x53e770,_0xc6d5ff){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x2c5f15['params']['id']}})['then'](handleEntityNotFound(_0x53e770,null))[_0xfded('0x1f')](function(_0x543698){if(_0x543698){return db[_0xfded('0x47')][_0xfded('0x48')](function(_0x3ce6c4){return db['AnalyticFieldReport'][_0xfded('0x20')]({'where':{'CustomReportId':_0x2c5f15[_0xfded('0x43')]['id']},'transaction':_0x3ce6c4})[_0xfded('0x1f')](function(_0x4d3211){var _0x19d4b7=_[_0xfded('0x27')](_0x2c5f15[_0xfded('0x41')],function(_0x1cfda9){delete _0x1cfda9['id'];_0x1cfda9[_0xfded('0x49')]=_0x2c5f15[_0xfded('0x43')]['id'];return _0x1cfda9;});return db['AnalyticFieldReport'][_0xfded('0x42')](_0x19d4b7,{'transaction':_0x3ce6c4});});})['then'](function(){return db[_0xfded('0x28')][_0xfded('0x4a')]({'where':{'CustomReportId':_0x2c5f15['params']['id']}});});}})['then'](respondWithResult(_0x53e770,null))[_0xfded('0x3b')](handleError(_0x53e770,null));};
\ No newline at end of file
index 5261acf..73030cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d03=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','AnalyticFieldReport','analytics_report_fields','util'];(function(_0x2c508c,_0x2a365b){var _0x5af45a=function(_0x2ac397){while(--_0x2ac397){_0x2c508c['push'](_0x2c508c['shift']());}};_0x5af45a(++_0x2a365b);}(_0x6d03,0x1df));var _0x36d0=function(_0x4ec5bd,_0xbf371d){_0x4ec5bd=_0x4ec5bd-0x0;var _0x4170a3=_0x6d03[_0x4ec5bd];return _0x4170a3;};'use strict';var _=require('lodash');var util=require(_0x36d0('0x0'));var logger=require(_0x36d0('0x1'))(_0x36d0('0x2'));var moment=require(_0x36d0('0x3'));var BPromise=require(_0x36d0('0x4'));var rp=require(_0x36d0('0x5'));var fs=require('fs');var path=require(_0x36d0('0x6'));var rimraf=require(_0x36d0('0x7'));var config=require(_0x36d0('0x8'));var attributes=require(_0x36d0('0x9'));module['exports']=function(_0x2cefee,_0x32b0b9){return _0x2cefee['define'](_0x36d0('0xa'),attributes,{'tableName':_0x36d0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72b8=['moment','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api'];(function(_0x110eb3,_0x5b7c94){var _0x69b14e=function(_0x34b5a9){while(--_0x34b5a9){_0x110eb3['push'](_0x110eb3['shift']());}};_0x69b14e(++_0x5b7c94);}(_0x72b8,0x105));var _0x872b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x72b8[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x872b('0x0'));var util=require(_0x872b('0x1'));var logger=require('../../config/logger')(_0x872b('0x2'));var moment=require(_0x872b('0x3'));var BPromise=require('bluebird');var rp=require(_0x872b('0x4'));var fs=require('fs');var path=require(_0x872b('0x5'));var rimraf=require(_0x872b('0x6'));var config=require(_0x872b('0x7'));var attributes=require(_0x872b('0x8'));module['exports']=function(_0x1b9bb4,_0x2f775b){return _0x1b9bb4[_0x872b('0x9')](_0x872b('0xa'),attributes,{'tableName':_0x872b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edf307c..bb84b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec8=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util'];(function(_0x1102a0,_0x262ce4){var _0xf950f0=function(_0x4e72c9){while(--_0x4e72c9){_0x1102a0['push'](_0x1102a0['shift']());}};_0xf950f0(++_0x262ce4);}(_0x2ec8,0x163));var _0x82ec=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2ec8[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x82ec('0x0'));var util=require(_0x82ec('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x82ec('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x82ec('0x3'));var logger=require(_0x82ec('0x4'))(_0x82ec('0x5'));var config=require(_0x82ec('0x6'));var jayson=require(_0x82ec('0x7'));var client=jayson['client'][_0x82ec('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x37a537,_0x4802e7,_0x74152f){return new BPromise(function(_0xf52d8b,_0x39a67c){return client[_0x82ec('0x9')](_0x37a537,_0x74152f)[_0x82ec('0xa')](function(_0x6d89b8){logger[_0x82ec('0xb')](_0x82ec('0xc'),_0x4802e7,_0x82ec('0xd'));logger[_0x82ec('0xe')](_0x82ec('0xf'),_0x4802e7,_0x82ec('0xd'),JSON[_0x82ec('0x10')](_0x6d89b8));if(_0x6d89b8[_0x82ec('0x11')]){if(_0x6d89b8[_0x82ec('0x11')][_0x82ec('0x12')]===0x1f4){logger[_0x82ec('0x11')](_0x82ec('0xc'),_0x4802e7,_0x6d89b8['error']['message']);return _0x39a67c(_0x6d89b8[_0x82ec('0x11')]['message']);}logger[_0x82ec('0x11')](_0x82ec('0xc'),_0x4802e7,_0x6d89b8[_0x82ec('0x11')][_0x82ec('0x13')]);return _0xf52d8b(_0x6d89b8[_0x82ec('0x11')][_0x82ec('0x13')]);}else{logger[_0x82ec('0xb')](_0x82ec('0xc'),_0x4802e7,_0x82ec('0xd'));_0xf52d8b(_0x6d89b8['result'][_0x82ec('0x13')]);}})[_0x82ec('0x14')](function(_0x4a1588){logger[_0x82ec('0x11')](_0x82ec('0xc'),_0x4802e7,_0x4a1588);_0x39a67c(_0x4a1588);});});}
\ No newline at end of file
+var _0xe78a=['http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe78a,0x185));var _0xae78=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe78a[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xae78('0x0'));var util=require(_0xae78('0x1'));var moment=require(_0xae78('0x2'));var BPromise=require(_0xae78('0x3'));var rs=require(_0xae78('0x4'));var fs=require('fs');var Redis=require(_0xae78('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xae78('0x6'));var logger=require(_0xae78('0x7'))(_0xae78('0x8'));var config=require('../../config/environment');var jayson=require(_0xae78('0x9'));var client=jayson[_0xae78('0xa')][_0xae78('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a42cc,_0x337e02,_0x1167d6){return new BPromise(function(_0x135fa6,_0x72d36){return client[_0xae78('0xc')](_0x4a42cc,_0x1167d6)[_0xae78('0xd')](function(_0x40c239){logger[_0xae78('0xe')](_0xae78('0xf'),_0x337e02,_0xae78('0x10'));logger[_0xae78('0x11')](_0xae78('0x12'),_0x337e02,'request\x20sent',JSON[_0xae78('0x13')](_0x40c239));if(_0x40c239[_0xae78('0x14')]){if(_0x40c239[_0xae78('0x14')][_0xae78('0x15')]===0x1f4){logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x40c239['error']['message']);return _0x72d36(_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);}logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);return _0x135fa6(_0x40c239[_0xae78('0x14')][_0xae78('0x16')]);}else{logger['info'](_0xae78('0xf'),_0x337e02,_0xae78('0x10'));_0x135fa6(_0x40c239[_0xae78('0x17')][_0xae78('0x16')]);}})[_0xae78('0x18')](function(_0x493c85){logger[_0xae78('0x14')](_0xae78('0xf'),_0x337e02,_0x493c85);_0x72d36(_0x493c85);});});}
\ No newline at end of file
index 6acb1be..b1fd1c4 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(_0x5b1ad8,_0x423b6c){var _0xf95fbb=function(_0x12df85){while(--_0x12df85){_0x5b1ad8['push'](_0x5b1ad8['shift']());}};_0xf95fbb(++_0x423b6c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'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(_0x49ebe6,_0x5452bb){var _0xf3908b=function(_0x2df00f){while(--_0x2df00f){_0x49ebe6['push'](_0x49ebe6['shift']());}};_0xf3908b(++_0x5452bb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 87b6475..37f48ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d5=['STRING','TEXT','sequelize','exports','name'];(function(_0x3513d5,_0x47a0f9){var _0xf832b1=function(_0x2b639c){while(--_0x2b639c){_0x3513d5['push'](_0x3513d5['shift']());}};_0xf832b1(++_0x47a0f9);}(_0x81d5,0x1ab));var _0x581d=function(_0x57ae80,_0x24fcc7){_0x57ae80=_0x57ae80-0x0;var _0x399126=_0x81d5[_0x57ae80];return _0x399126;};'use strict';var Sequelize=require(_0x581d('0x0'));module[_0x581d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x581d('0x2')},'table':{'type':Sequelize[_0x581d('0x3')]},'metric':{'type':Sequelize[_0x581d('0x4')]},'description':{'type':Sequelize[_0x581d('0x3')]}};
\ No newline at end of file
+var _0x81fa=['TEXT','sequelize','exports','name','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x81fa,0xdd));var _0xa81f=function(_0x49655b,_0x40c634){_0x49655b=_0x49655b-0x0;var _0x1878c9=_0x81fa[_0x49655b];return _0x1878c9;};'use strict';var Sequelize=require(_0xa81f('0x0'));module[_0xa81f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa81f('0x2')},'table':{'type':Sequelize[_0xa81f('0x3')]},'metric':{'type':Sequelize[_0xa81f('0x4')]},'description':{'type':Sequelize[_0xa81f('0x3')]}};
\ No newline at end of file
index 01f8f2e..b6818fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0x10760e,_0x4fa605){var _0x36e2f8=function(_0x2b8b25){while(--_0x2b8b25){_0x10760e['push'](_0x10760e['shift']());}};_0x36e2f8(++_0x4fa605);}(_0x00bb,0x1d8));var _0xb00b=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x00bb[_0x29b609];return _0x54c952;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
+var _0x425d=['VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','where','merge'];(function(_0x2f5a7f,_0x519e7){var _0x285bf6=function(_0x3aeff4){while(--_0x3aeff4){_0x2f5a7f['push'](_0x2f5a7f['shift']());}};_0x285bf6(++_0x519e7);}(_0x425d,0x1e0));var _0xd425=function(_0x188a2a,_0x368961){_0x188a2a=_0x188a2a-0x0;var _0x38598a=_0x425d[_0x188a2a];return _0x38598a;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];function respondWithStatusCode(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xcc;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x1d')](_0x3cacf7);}return _0x9bb611['status'](_0x3cacf7)[_0xd425('0x1e')]();};}function respondWithResult(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0xc8;return function(_0x5d3d60){if(_0x5d3d60){return _0x17a498[_0xd425('0x1f')](_0x336dc3)[_0xd425('0x20')](_0x5d3d60);}};}function respondWithFilteredResult(_0x643fd2,_0x41f34d){return function(_0x1fc822){if(_0x1fc822){var _0x538a0a=typeof _0x41f34d[_0xd425('0x21')]===_0xd425('0x22')&&typeof _0x41f34d[_0xd425('0x23')]===_0xd425('0x22');var _0x5d6585=_0x1fc822[_0xd425('0x24')];var _0x434d97=_0x538a0a?0x0:_0x41f34d[_0xd425('0x21')];var _0x1155bc=_0x538a0a?_0x1fc822['count']:_0x41f34d['offset']+_0x41f34d['limit'];var _0x4b293a;if(_0x1155bc>=_0x5d6585){_0x1155bc=_0x5d6585;_0x4b293a=0xc8;}else{_0x4b293a=0xce;}_0x643fd2[_0xd425('0x1f')](_0x4b293a);return _0x643fd2[_0xd425('0x25')](_0xd425('0x26'),_0x434d97+'-'+_0x1155bc+'/'+_0x5d6585)['json'](_0x1fc822);}return null;};}function patchUpdates(_0x355af0){return function(_0x7e982e){try{jsonpatch['apply'](_0x7e982e,_0x355af0,!![]);}catch(_0x2e1ec4){return BPromise[_0xd425('0x27')](_0x2e1ec4);}return _0x7e982e[_0xd425('0x28')]();};}function saveUpdates(_0x1d3fc0,_0x3e93db){return function(_0xb240c4){if(_0xb240c4){return _0xb240c4[_0xd425('0x29')](_0x1d3fc0)[_0xd425('0x2a')](function(_0x314201){return _0x314201;});}return null;};}function removeEntity(_0x2b030b,_0x151ad9){return function(_0x40e84b){if(_0x40e84b){return _0x40e84b['destroy']()[_0xd425('0x2a')](function(){var _0x264b0e=_0x40e84b[_0xd425('0x2b')]({'plain':!![]});var _0x1908a5=_0xd425('0x2c');return db[_0xd425('0x2d')][_0xd425('0x2e')]({'where':{'type':_0x1908a5,'resourceId':_0x264b0e['id']}})['then'](function(){return _0x40e84b;});})[_0xd425('0x2a')](function(){_0x2b030b[_0xd425('0x1f')](0xcc)[_0xd425('0x1e')]();});}};}function handleEntityNotFound(_0x57c950,_0x27ef8a){return function(_0x3ad9bd){if(!_0x3ad9bd){_0x57c950[_0xd425('0x1d')](0x194);}return _0x3ad9bd;};}function handleError(_0x999fb9,_0x27d29a){_0x27d29a=_0x27d29a||0x1f4;return function(_0x185d7e){logger[_0xd425('0x2f')](_0x185d7e[_0xd425('0x30')]);if(_0x185d7e[_0xd425('0x31')]){delete _0x185d7e[_0xd425('0x31')];}_0x999fb9['status'](_0x27d29a)[_0xd425('0x32')](_0x185d7e);};}exports[_0xd425('0x33')]=function(_0x298602,_0x3695dd){var _0x3275b1={},_0x1abf33={},_0x47405f={'count':0x0,'rows':[]};var _0x40c392=_[_0xd425('0x34')](db[_0xd425('0x35')][_0xd425('0x36')],function(_0x5f3dab){return{'name':_0x5f3dab[_0xd425('0x37')],'type':_0x5f3dab[_0xd425('0x38')][_0xd425('0x39')]};});_0x1abf33[_0xd425('0x3a')]=_[_0xd425('0x34')](_0x40c392,'name');_0x1abf33[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x298602['query']);_0x1abf33['filters']=_['intersection'](_0x1abf33[_0xd425('0x3a')],_0x1abf33[_0xd425('0x3b')]);_0x3275b1[_0xd425('0x3d')]=_[_0xd425('0x3e')](_0x1abf33['model'],qs[_0xd425('0x3f')](_0x298602[_0xd425('0x3b')][_0xd425('0x3f')]));_0x3275b1[_0xd425('0x3d')]=_0x3275b1[_0xd425('0x3d')][_0xd425('0x40')]?_0x3275b1[_0xd425('0x3d')]:_0x1abf33['model'];if(!_0x298602[_0xd425('0x3b')]['hasOwnProperty'](_0xd425('0x41'))){_0x3275b1[_0xd425('0x23')]=qs[_0xd425('0x23')](_0x298602['query'][_0xd425('0x23')]);_0x3275b1[_0xd425('0x21')]=qs[_0xd425('0x21')](_0x298602[_0xd425('0x3b')]['offset']);}_0x3275b1[_0xd425('0x42')]=qs[_0xd425('0x43')](_0x298602['query']['sort']);_0x3275b1['where']=qs[_0xd425('0x44')](_[_0xd425('0x45')](_0x298602[_0xd425('0x3b')],_0x1abf33['filters']),_0x40c392);if(_0x298602['query']['filter']){_0x3275b1[_0xd425('0x46')]=_[_0xd425('0x47')](_0x3275b1[_0xd425('0x46')],{'$or':_[_0xd425('0x34')](_0x40c392,function(_0xa9fd7c){if(_0xa9fd7c[_0xd425('0x38')]!==_0xd425('0x48')){var _0x4b922f={};_0x4b922f[_0xa9fd7c[_0xd425('0x31')]]={'$like':'%'+_0x298602[_0xd425('0x3b')][_0xd425('0x49')]+'%'};return _0x4b922f;}})});}_0x3275b1=_['merge']({},_0x3275b1,_0x298602[_0xd425('0x4a')]);var _0x2dffc7={'where':_0x3275b1[_0xd425('0x46')]};return db['AnalyticMetric'][_0xd425('0x24')](_0x2dffc7)[_0xd425('0x2a')](function(_0x1c5ba6){_0x47405f[_0xd425('0x24')]=_0x1c5ba6;if(_0x298602['query'][_0xd425('0x4b')]){_0x3275b1[_0xd425('0x4c')]=[{'all':!![]}];}return db[_0xd425('0x35')][_0xd425('0x4d')](_0x3275b1);})[_0xd425('0x2a')](function(_0x2f6bf7){_0x47405f[_0xd425('0x4e')]=_0x2f6bf7;return _0x47405f;})['then'](respondWithFilteredResult(_0x3695dd,_0x3275b1))[_0xd425('0x4f')](handleError(_0x3695dd,null));};exports[_0xd425('0x50')]=function(_0x5b65fe,_0x1a44a8){var _0x491c51={'raw':!![],'where':{'id':_0x5b65fe[_0xd425('0x51')]['id']}},_0x5e12bf={};_0x5e12bf['model']=_[_0xd425('0x3c')](db['AnalyticMetric'][_0xd425('0x36')]);_0x5e12bf[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x5b65fe[_0xd425('0x3b')]);_0x5e12bf[_0xd425('0x44')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],_0x5e12bf['query']);_0x491c51[_0xd425('0x3d')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],qs[_0xd425('0x3f')](_0x5b65fe[_0xd425('0x3b')][_0xd425('0x3f')]));_0x491c51[_0xd425('0x3d')]=_0x491c51['attributes'][_0xd425('0x40')]?_0x491c51[_0xd425('0x3d')]:_0x5e12bf[_0xd425('0x3a')];if(_0x5b65fe[_0xd425('0x3b')][_0xd425('0x4b')]){_0x491c51['include']=[{'all':!![]}];}_0x491c51=_[_0xd425('0x47')]({},_0x491c51,_0x5b65fe[_0xd425('0x4a')]);return db[_0xd425('0x35')][_0xd425('0x52')](_0x491c51)[_0xd425('0x2a')](handleEntityNotFound(_0x1a44a8,null))[_0xd425('0x2a')](respondWithResult(_0x1a44a8,null))['catch'](handleError(_0x1a44a8,null));};exports[_0xd425('0x53')]=function(_0x128cb3,_0x5bfac6){return db[_0xd425('0x35')][_0xd425('0x53')](_0x128cb3[_0xd425('0x54')],{})[_0xd425('0x2a')](function(_0x5c0219){var _0x54f1d=_0x128cb3[_0xd425('0x55')][_0xd425('0x2b')]({'plain':!![]});if(!_0x54f1d)throw new Error(_0xd425('0x56'));if(_0x54f1d[_0xd425('0x57')]==='user'){var _0x4be6fa=_0x5c0219[_0xd425('0x2b')]({'plain':!![]});var _0x5496d8=_0xd425('0x2c');return db[_0xd425('0x58')]['find']({'where':{'name':_0x5496d8,'userProfileId':_0x54f1d[_0xd425('0x59')]},'raw':!![]})['then'](function(_0x48d5b8){if(_0x48d5b8&&_0x48d5b8[_0xd425('0x5a')]===0x0){return db[_0xd425('0x2d')][_0xd425('0x53')]({'name':_0x4be6fa[_0xd425('0x31')],'resourceId':_0x4be6fa['id'],'type':_0x48d5b8[_0xd425('0x31')],'sectionId':_0x48d5b8['id']},{})[_0xd425('0x2a')](function(){return _0x5c0219;});}else{return _0x5c0219;}})[_0xd425('0x4f')](function(_0x4118fe){logger['error'](_0xd425('0x5b'),_0x4118fe);throw _0x4118fe;});}return _0x5c0219;})[_0xd425('0x2a')](respondWithResult(_0x5bfac6,0xc9))[_0xd425('0x4f')](handleError(_0x5bfac6,null));};exports[_0xd425('0x29')]=function(_0x7b1080,_0x1c80c2){if(_0x7b1080[_0xd425('0x54')]['id']){delete _0x7b1080[_0xd425('0x54')]['id'];}return db['AnalyticMetric']['find']({'where':{'id':_0x7b1080['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x1c80c2,null))[_0xd425('0x2a')](saveUpdates(_0x7b1080[_0xd425('0x54')],null))[_0xd425('0x2a')](respondWithResult(_0x1c80c2,null))['catch'](handleError(_0x1c80c2,null));};exports['destroy']=function(_0x499a60,_0x5e1294){return db[_0xd425('0x35')][_0xd425('0x52')]({'where':{'id':_0x499a60['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x5e1294,null))[_0xd425('0x2a')](removeEntity(_0x5e1294,null))[_0xd425('0x4f')](handleError(_0x5e1294,null));};
\ No newline at end of file
index c8e169f..5f3c4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb41=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash'];(function(_0x12553d,_0x160725){var _0x166267=function(_0x49f7ae){while(--_0x49f7ae){_0x12553d['push'](_0x12553d['shift']());}};_0x166267(++_0x160725);}(_0xcb41,0x1df));var _0x1cb4=function(_0xb5dfbf,_0x27c23d){_0xb5dfbf=_0xb5dfbf-0x0;var _0x97b7bc=_0xcb41[_0xb5dfbf];return _0x97b7bc;};'use strict';var _=require(_0x1cb4('0x0'));var util=require(_0x1cb4('0x1'));var logger=require(_0x1cb4('0x2'))(_0x1cb4('0x3'));var moment=require('moment');var BPromise=require(_0x1cb4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb4('0x5'));var rimraf=require(_0x1cb4('0x6'));var config=require(_0x1cb4('0x7'));var attributes=require(_0x1cb4('0x8'));module[_0x1cb4('0x9')]=function(_0x547f4,_0x2eaeb4){return _0x547f4[_0x1cb4('0xa')]('AnalyticMetric',attributes,{'tableName':_0x1cb4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a2a=['analytics_metrics','lodash','util','../../config/logger','api','path','rimraf','./analyticMetric.attributes','exports','define'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x1eb8a6,_0x4b531f){_0x1eb8a6=_0x1eb8a6-0x0;var _0x3e0a80=_0x5a2a[_0x1eb8a6];return _0x3e0a80;};'use strict';var _=require(_0xa5a2('0x0'));var util=require(_0xa5a2('0x1'));var logger=require(_0xa5a2('0x2'))(_0xa5a2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5a2('0x4'));var rimraf=require(_0xa5a2('0x5'));var config=require('../../config/environment');var attributes=require(_0xa5a2('0x6'));module[_0xa5a2('0x7')]=function(_0x2e97d3,_0x55728b){return _0x2e97d3[_0xa5a2('0x8')]('AnalyticMetric',attributes,{'tableName':_0xa5a2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c7025c3..797f33a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3089=['code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x19e38e,_0xb15cc7){var _0x14bec3=function(_0xd38dd3){while(--_0xd38dd3){_0x19e38e['push'](_0x19e38e['shift']());}};_0x14bec3(++_0xb15cc7);}(_0x3089,0x1a6));var _0x9308=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x3089[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x9308('0x0'));var moment=require(_0x9308('0x1'));var BPromise=require(_0x9308('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9308('0x3'));var db=require(_0x9308('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9308('0x5'));var config=require(_0x9308('0x6'));var jayson=require(_0x9308('0x7'));var client=jayson['client'][_0x9308('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2e254f,_0x3e73ba,_0x238222){return new BPromise(function(_0x56bf6a,_0xd997d1){return client[_0x9308('0x9')](_0x2e254f,_0x238222)[_0x9308('0xa')](function(_0x4b0109){logger[_0x9308('0xb')](_0x9308('0xc'),_0x3e73ba,_0x9308('0xd'));logger[_0x9308('0xe')](_0x9308('0xf'),_0x3e73ba,'request\x20sent',JSON[_0x9308('0x10')](_0x4b0109));if(_0x4b0109[_0x9308('0x11')]){if(_0x4b0109['error'][_0x9308('0x12')]===0x1f4){logger[_0x9308('0x11')](_0x9308('0xc'),_0x3e73ba,_0x4b0109['error'][_0x9308('0x13')]);return _0xd997d1(_0x4b0109[_0x9308('0x11')][_0x9308('0x13')]);}logger[_0x9308('0x11')](_0x9308('0xc'),_0x3e73ba,_0x4b0109[_0x9308('0x11')]['message']);return _0x56bf6a(_0x4b0109[_0x9308('0x11')][_0x9308('0x13')]);}else{logger['info'](_0x9308('0xc'),_0x3e73ba,_0x9308('0xd'));_0x56bf6a(_0x4b0109[_0x9308('0x14')][_0x9308('0x13')]);}})[_0x9308('0x15')](function(_0x1b4496){logger[_0x9308('0x11')](_0x9308('0xc'),_0x3e73ba,_0x1b4496);_0xd997d1(_0x1b4496);});});}
\ No newline at end of file
+var _0x801c=['http','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticMetric,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x801c,0x181));var _0xc801=function(_0x12dd20,_0x110895){_0x12dd20=_0x12dd20-0x0;var _0x1ff3f2=_0x801c[_0x12dd20];return _0x1ff3f2;};'use strict';var _=require(_0xc801('0x0'));var util=require(_0xc801('0x1'));var moment=require(_0xc801('0x2'));var BPromise=require(_0xc801('0x3'));var rs=require(_0xc801('0x4'));var fs=require('fs');var Redis=require(_0xc801('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc801('0x6'));var logger=require(_0xc801('0x7'))(_0xc801('0x8'));var config=require(_0xc801('0x9'));var jayson=require(_0xc801('0xa'));var client=jayson['client'][_0xc801('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1217dc,_0x2d5533,_0x234cab){return new BPromise(function(_0x1ff9bd,_0x3d6c6c){return client['request'](_0x1217dc,_0x234cab)['then'](function(_0x31b4d5){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x2d5533,_0xc801('0xc'));logger[_0xc801('0xd')](_0xc801('0xe'),_0x2d5533,_0xc801('0xc'),JSON[_0xc801('0xf')](_0x31b4d5));if(_0x31b4d5[_0xc801('0x10')]){if(_0x31b4d5[_0xc801('0x10')]['code']===0x1f4){logger[_0xc801('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x2d5533,_0x31b4d5[_0xc801('0x10')]['message']);return _0x3d6c6c(_0x31b4d5['error']['message']);}logger['error'](_0xc801('0x11'),_0x2d5533,_0x31b4d5[_0xc801('0x10')][_0xc801('0x12')]);return _0x1ff9bd(_0x31b4d5['error'][_0xc801('0x12')]);}else{logger[_0xc801('0x13')](_0xc801('0x11'),_0x2d5533,_0xc801('0xc'));_0x1ff9bd(_0x31b4d5[_0xc801('0x14')][_0xc801('0x12')]);}})[_0xc801('0x15')](function(_0x591744){logger[_0xc801('0x10')](_0xc801('0x11'),_0x2d5533,_0x591744);_0x3d6c6c(_0x591744);});});}
\ No newline at end of file
index 32da027..3d6572c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['express','Router','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','util','connect-timeout'];(function(_0x3bdf13,_0x1a59bc){var _0x14b2f5=function(_0x11c1a3){while(--_0x11c1a3){_0x3bdf13['push'](_0x3bdf13['shift']());}};_0x14b2f5(++_0x1a59bc);}(_0x14f5,0xae));var _0x514f=function(_0x1c7a96,_0x2b618f){_0x1c7a96=_0x1c7a96-0x0;var _0x4c6dc1=_0x14f5[_0x1c7a96];return _0x4c6dc1;};'use strict';var multer=require('multer');var util=require(_0x514f('0x0'));var path=require('path');var timeout=require(_0x514f('0x1'));var express=require(_0x514f('0x2'));var router=express[_0x514f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x514f('0x4'));var interaction=require(_0x514f('0x5'));var config=require('../../config/environment');var controller=require(_0x514f('0x6'));router[_0x514f('0x7')]('/',auth[_0x514f('0x8')](),controller[_0x514f('0x9')]);router[_0x514f('0x7')](_0x514f('0xa'),auth[_0x514f('0x8')](),controller['show']);router[_0x514f('0xb')]('/',auth['isAuthenticated'](),controller[_0x514f('0xc')]);router[_0x514f('0xd')](_0x514f('0xa'),auth[_0x514f('0x8')](),controller[_0x514f('0xe')]);router[_0x514f('0xf')](_0x514f('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xfd7b=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x7e7e8a,_0x333912){var _0x3e4085=function(_0x5ebf0f){while(--_0x5ebf0f){_0x7e7e8a['push'](_0x7e7e8a['shift']());}};_0x3e4085(++_0x333912);}(_0xfd7b,0x1df));var _0xbfd7=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xfd7b[_0x9aada2];return _0x196dff;};'use strict';var multer=require('multer');var util=require(_0xbfd7('0x0'));var path=require(_0xbfd7('0x1'));var timeout=require(_0xbfd7('0x2'));var express=require(_0xbfd7('0x3'));var router=express[_0xbfd7('0x4')]();var fs_extra=require(_0xbfd7('0x5'));var auth=require(_0xbfd7('0x6'));var interaction=require(_0xbfd7('0x7'));var config=require(_0xbfd7('0x8'));var controller=require(_0xbfd7('0x9'));router[_0xbfd7('0xa')]('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xc')]);router['get'](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0xe')]);router['post']('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xf')]);router[_0xbfd7('0x10')](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0x11')]);router[_0xbfd7('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xbfd7('0x13')]);module[_0xbfd7('0x14')]=router;
\ No newline at end of file
index 6fd267a..3b71f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x386b=['TEXT','sequelize','exports'];(function(_0x11c349,_0x53bce8){var _0x41e457=function(_0x376457){while(--_0x376457){_0x11c349['push'](_0x11c349['shift']());}};_0x41e457(++_0x53bce8);}(_0x386b,0x1d5));var _0xb386=function(_0x281c71,_0x51f9d4){_0x281c71=_0x281c71-0x0;var _0x14ea14=_0x386b[_0x281c71];return _0x14ea14;};'use strict';var Sequelize=require(_0xb386('0x0'));module[_0xb386('0x1')]={'tree':{'type':Sequelize[_0xb386('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x9a38=['sequelize','exports','TEXT'];(function(_0x59309f,_0x4feec4){var _0x21f015=function(_0x2091f4){while(--_0x2091f4){_0x59309f['push'](_0x59309f['shift']());}};_0x21f015(++_0x4feec4);}(_0x9a38,0xfc));var _0x89a3=function(_0x350823,_0x2ff503){_0x350823=_0x350823-0x0;var _0x1ba2d0=_0x9a38[_0x350823];return _0x1ba2d0;};'use strict';var Sequelize=require(_0x89a3('0x0'));module[_0x89a3('0x1')]={'tree':{'type':Sequelize[_0x89a3('0x2')],'allowNull':![]}};
\ No newline at end of file
index b55e7f8..f3d76f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9206=['type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','request-promise','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','AnalyticTreeReport','rawAttributes'];(function(_0x16adf1,_0x1273a5){var _0xc13362=function(_0x35e767){while(--_0x35e767){_0x16adf1['push'](_0x16adf1['shift']());}};_0xc13362(++_0x1273a5);}(_0x9206,0xfe));var _0x6920=function(_0x2001f3,_0x58f296){_0x2001f3=_0x2001f3-0x0;var _0x510ed7=_0x9206[_0x2001f3];return _0x510ed7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6920('0x0'));var zipdir=require(_0x6920('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6920('0x2'));var moment=require(_0x6920('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6920('0x4'));var util=require(_0x6920('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x6920('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6920('0x7'));var _=require(_0x6920('0x8'));var squel=require(_0x6920('0x9'));var crypto=require(_0x6920('0xa'));var jsforce=require(_0x6920('0xb'));var deskjs=require(_0x6920('0xc'));var toCsv=require(_0x6920('0x6'));var querystring=require(_0x6920('0xd'));var Papa=require(_0x6920('0xe'));var Redis=require(_0x6920('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6920('0x10'));var as=require(_0x6920('0x11'));var hardwareService=require(_0x6920('0x12'));var logger=require(_0x6920('0x13'))(_0x6920('0x14'));var utils=require(_0x6920('0x15'));var config=require(_0x6920('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x6920('0x17'))['db'];function respondWithStatusCode(_0x1bce79,_0x136a15){_0x136a15=_0x136a15||0xcc;return function(_0x2dc75b){if(_0x2dc75b){return _0x1bce79[_0x6920('0x18')](_0x136a15);}return _0x1bce79[_0x6920('0x19')](_0x136a15)[_0x6920('0x1a')]();};}function respondWithResult(_0x4017b4,_0x471286){_0x471286=_0x471286||0xc8;return function(_0x2b72b2){if(_0x2b72b2){return _0x4017b4[_0x6920('0x19')](_0x471286)[_0x6920('0x1b')](_0x2b72b2);}};}function respondWithFilteredResult(_0x3ba85e,_0x5e8114){return function(_0x2d6809){if(_0x2d6809){var _0x2b809c=typeof _0x5e8114[_0x6920('0x1c')]===_0x6920('0x1d')&&typeof _0x5e8114[_0x6920('0x1e')]===_0x6920('0x1d');var _0x157c67=_0x2d6809[_0x6920('0x1f')];var _0xdfbdca=_0x2b809c?0x0:_0x5e8114[_0x6920('0x1c')];var _0x25b7f8=_0x2b809c?_0x2d6809[_0x6920('0x1f')]:_0x5e8114[_0x6920('0x1c')]+_0x5e8114[_0x6920('0x1e')];var _0x4cf23b;if(_0x25b7f8>=_0x157c67){_0x25b7f8=_0x157c67;_0x4cf23b=0xc8;}else{_0x4cf23b=0xce;}_0x3ba85e[_0x6920('0x19')](_0x4cf23b);return _0x3ba85e[_0x6920('0x20')](_0x6920('0x21'),_0xdfbdca+'-'+_0x25b7f8+'/'+_0x157c67)[_0x6920('0x1b')](_0x2d6809);}return null;};}function patchUpdates(_0x374962){return function(_0x182340){try{jsonpatch[_0x6920('0x22')](_0x182340,_0x374962,!![]);}catch(_0x27b0ca){return BPromise[_0x6920('0x23')](_0x27b0ca);}return _0x182340['save']();};}function saveUpdates(_0x5ca3bd,_0x34988d){return function(_0x403069){if(_0x403069){return _0x403069[_0x6920('0x24')](_0x5ca3bd)[_0x6920('0x25')](function(_0x34106d){return _0x34106d;});}return null;};}function removeEntity(_0x446c07,_0x58a87d){return function(_0xeff957){if(_0xeff957){return _0xeff957[_0x6920('0x26')]()[_0x6920('0x25')](function(){_0x446c07['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1609b4,_0x46e668){return function(_0x265f59){if(!_0x265f59){_0x1609b4[_0x6920('0x18')](0x194);}return _0x265f59;};}function handleError(_0x51c548,_0x3a9a59){_0x3a9a59=_0x3a9a59||0x1f4;return function(_0x2cd41f){logger[_0x6920('0x27')](_0x2cd41f[_0x6920('0x28')]);if(_0x2cd41f[_0x6920('0x29')]){delete _0x2cd41f['name'];}_0x51c548[_0x6920('0x19')](_0x3a9a59)[_0x6920('0x2a')](_0x2cd41f);};}exports['index']=function(_0x3cc4df,_0x406248){var _0x337e22={},_0x20aee1={},_0x7e4b18={'count':0x0,'rows':[]};var _0x75307f=_[_0x6920('0x2b')](db[_0x6920('0x2c')][_0x6920('0x2d')],function(_0x2ffdfe){return{'name':_0x2ffdfe['fieldName'],'type':_0x2ffdfe[_0x6920('0x2e')][_0x6920('0x2f')]};});_0x20aee1[_0x6920('0x30')]=_[_0x6920('0x2b')](_0x75307f,_0x6920('0x29'));_0x20aee1[_0x6920('0x31')]=_[_0x6920('0x32')](_0x3cc4df[_0x6920('0x31')]);_0x20aee1['filters']=_['intersection'](_0x20aee1[_0x6920('0x30')],_0x20aee1['query']);_0x337e22[_0x6920('0x33')]=_[_0x6920('0x34')](_0x20aee1[_0x6920('0x30')],qs[_0x6920('0x35')](_0x3cc4df[_0x6920('0x31')][_0x6920('0x35')]));_0x337e22['attributes']=_0x337e22[_0x6920('0x33')][_0x6920('0x36')]?_0x337e22[_0x6920('0x33')]:_0x20aee1[_0x6920('0x30')];if(!_0x3cc4df[_0x6920('0x31')][_0x6920('0x37')](_0x6920('0x38'))){_0x337e22[_0x6920('0x1e')]=qs['limit'](_0x3cc4df['query'][_0x6920('0x1e')]);_0x337e22[_0x6920('0x1c')]=qs[_0x6920('0x1c')](_0x3cc4df[_0x6920('0x31')]['offset']);}_0x337e22[_0x6920('0x39')]=qs[_0x6920('0x3a')](_0x3cc4df[_0x6920('0x31')][_0x6920('0x3a')]);_0x337e22['where']=qs['filters'](_[_0x6920('0x3b')](_0x3cc4df[_0x6920('0x31')],_0x20aee1[_0x6920('0x3c')]),_0x75307f);if(_0x3cc4df[_0x6920('0x31')][_0x6920('0x3d')]){_0x337e22[_0x6920('0x3e')]=_['merge'](_0x337e22['where'],{'$or':_[_0x6920('0x2b')](_0x75307f,function(_0x3f4c95){if(_0x3f4c95[_0x6920('0x2e')]!=='VIRTUAL'){var _0x22c5a3={};_0x22c5a3[_0x3f4c95[_0x6920('0x29')]]={'$like':'%'+_0x3cc4df[_0x6920('0x31')][_0x6920('0x3d')]+'%'};return _0x22c5a3;}})});}_0x337e22=_[_0x6920('0x3f')]({},_0x337e22,_0x3cc4df[_0x6920('0x40')]);var _0x3298d9={'where':_0x337e22[_0x6920('0x3e')]};return db[_0x6920('0x2c')][_0x6920('0x1f')](_0x3298d9)[_0x6920('0x25')](function(_0x4edbea){_0x7e4b18[_0x6920('0x1f')]=_0x4edbea;if(_0x3cc4df['query'][_0x6920('0x41')]){_0x337e22[_0x6920('0x42')]=[{'all':!![]}];}return db[_0x6920('0x2c')][_0x6920('0x43')](_0x337e22);})[_0x6920('0x25')](function(_0x3b2b19){_0x7e4b18[_0x6920('0x44')]=_0x3b2b19;return _0x7e4b18;})['then'](respondWithFilteredResult(_0x406248,_0x337e22))[_0x6920('0x45')](handleError(_0x406248,null));};exports[_0x6920('0x46')]=function(_0x9bfb2f,_0x123808){var _0x44e9dc={'raw':!![],'where':{'id':_0x9bfb2f[_0x6920('0x47')]['id']}},_0x4b5736={};_0x4b5736[_0x6920('0x30')]=_[_0x6920('0x32')](db[_0x6920('0x2c')][_0x6920('0x2d')]);_0x4b5736[_0x6920('0x31')]=_['keys'](_0x9bfb2f['query']);_0x4b5736[_0x6920('0x3c')]=_[_0x6920('0x34')](_0x4b5736[_0x6920('0x30')],_0x4b5736['query']);_0x44e9dc[_0x6920('0x33')]=_['intersection'](_0x4b5736[_0x6920('0x30')],qs[_0x6920('0x35')](_0x9bfb2f[_0x6920('0x31')][_0x6920('0x35')]));_0x44e9dc[_0x6920('0x33')]=_0x44e9dc['attributes']['length']?_0x44e9dc[_0x6920('0x33')]:_0x4b5736[_0x6920('0x30')];if(_0x9bfb2f[_0x6920('0x31')][_0x6920('0x41')]){_0x44e9dc['include']=[{'all':!![]}];}_0x44e9dc=_['merge']({},_0x44e9dc,_0x9bfb2f[_0x6920('0x40')]);return db[_0x6920('0x2c')][_0x6920('0x48')](_0x44e9dc)[_0x6920('0x25')](handleEntityNotFound(_0x123808,null))[_0x6920('0x25')](respondWithResult(_0x123808,null))[_0x6920('0x45')](handleError(_0x123808,null));};exports[_0x6920('0x49')]=function(_0x2cb1c3,_0x3a8d68){return db[_0x6920('0x2c')][_0x6920('0x49')](_0x2cb1c3['body'],{})[_0x6920('0x25')](respondWithResult(_0x3a8d68,0xc9))[_0x6920('0x45')](handleError(_0x3a8d68,null));};exports['update']=function(_0x4e8efd,_0x380274){if(_0x4e8efd[_0x6920('0x4a')]['id']){delete _0x4e8efd[_0x6920('0x4a')]['id'];}return db[_0x6920('0x2c')][_0x6920('0x48')]({'where':{'id':_0x4e8efd[_0x6920('0x47')]['id']}})[_0x6920('0x25')](handleEntityNotFound(_0x380274,null))['then'](saveUpdates(_0x4e8efd['body'],null))[_0x6920('0x25')](respondWithResult(_0x380274,null))[_0x6920('0x45')](handleError(_0x380274,null));};exports[_0x6920('0x26')]=function(_0x3791c7,_0x18508e){return db[_0x6920('0x2c')]['find']({'where':{'id':_0x3791c7[_0x6920('0x47')]['id']}})['then'](handleEntityNotFound(_0x18508e,null))[_0x6920('0x25')](removeEntity(_0x18508e,null))[_0x6920('0x45')](handleError(_0x18508e,null));};
\ No newline at end of file
+var _0x4deb=['update','destroy','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','rows','catch','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0x4deb,0x74));var _0xb4de=function(_0x404cde,_0x27b51c){_0x404cde=_0x404cde-0x0;var _0x139882=_0x4deb[_0x404cde];return _0x139882;};'use strict';var emlformat=require(_0xb4de('0x0'));var rimraf=require(_0xb4de('0x1'));var zipdir=require(_0xb4de('0x2'));var jsonpatch=require(_0xb4de('0x3'));var rp=require('request-promise');var moment=require(_0xb4de('0x4'));var BPromise=require(_0xb4de('0x5'));var Mustache=require('mustache');var util=require(_0xb4de('0x6'));var path=require('path');var sox=require(_0xb4de('0x7'));var csv=require(_0xb4de('0x8'));var ejs=require(_0xb4de('0x9'));var fs=require('fs');var fs_extra=require(_0xb4de('0xa'));var _=require(_0xb4de('0xb'));var squel=require('squel');var crypto=require(_0xb4de('0xc'));var jsforce=require(_0xb4de('0xd'));var deskjs=require(_0xb4de('0xe'));var toCsv=require(_0xb4de('0x8'));var querystring=require('querystring');var Papa=require(_0xb4de('0xf'));var Redis=require(_0xb4de('0x10'));var authService=require(_0xb4de('0x11'));var qs=require(_0xb4de('0x12'));var as=require(_0xb4de('0x13'));var hardwareService=require(_0xb4de('0x14'));var logger=require(_0xb4de('0x15'))(_0xb4de('0x16'));var utils=require(_0xb4de('0x17'));var config=require(_0xb4de('0x18'));var licenseUtil=require(_0xb4de('0x19'));var db=require(_0xb4de('0x1a'))['db'];function respondWithStatusCode(_0xbf27bc,_0x206317){_0x206317=_0x206317||0xcc;return function(_0x3ff2f7){if(_0x3ff2f7){return _0xbf27bc[_0xb4de('0x1b')](_0x206317);}return _0xbf27bc[_0xb4de('0x1c')](_0x206317)[_0xb4de('0x1d')]();};}function respondWithResult(_0x4af619,_0x33f715){_0x33f715=_0x33f715||0xc8;return function(_0xf75e0b){if(_0xf75e0b){return _0x4af619[_0xb4de('0x1c')](_0x33f715)[_0xb4de('0x1e')](_0xf75e0b);}};}function respondWithFilteredResult(_0x219b69,_0x4de05c){return function(_0x475aea){if(_0x475aea){var _0x4df5ec=typeof _0x4de05c[_0xb4de('0x1f')]===_0xb4de('0x20')&&typeof _0x4de05c[_0xb4de('0x21')]===_0xb4de('0x20');var _0x215546=_0x475aea[_0xb4de('0x22')];var _0x41cb90=_0x4df5ec?0x0:_0x4de05c[_0xb4de('0x1f')];var _0x3f831c=_0x4df5ec?_0x475aea['count']:_0x4de05c[_0xb4de('0x1f')]+_0x4de05c[_0xb4de('0x21')];var _0x15265e;if(_0x3f831c>=_0x215546){_0x3f831c=_0x215546;_0x15265e=0xc8;}else{_0x15265e=0xce;}_0x219b69['status'](_0x15265e);return _0x219b69[_0xb4de('0x23')](_0xb4de('0x24'),_0x41cb90+'-'+_0x3f831c+'/'+_0x215546)['json'](_0x475aea);}return null;};}function patchUpdates(_0x245059){return function(_0x35c9d6){try{jsonpatch[_0xb4de('0x25')](_0x35c9d6,_0x245059,!![]);}catch(_0x419db2){return BPromise[_0xb4de('0x26')](_0x419db2);}return _0x35c9d6[_0xb4de('0x27')]();};}function saveUpdates(_0xcdce61,_0x32cd66){return function(_0x4ec95b){if(_0x4ec95b){return _0x4ec95b[_0xb4de('0x28')](_0xcdce61)['then'](function(_0x3e5b52){return _0x3e5b52;});}return null;};}function removeEntity(_0x5218fc,_0x245d8c){return function(_0x2f8113){if(_0x2f8113){return _0x2f8113[_0xb4de('0x29')]()['then'](function(){_0x5218fc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xaaf1aa,_0x208c59){return function(_0x3541f0){if(!_0x3541f0){_0xaaf1aa[_0xb4de('0x1b')](0x194);}return _0x3541f0;};}function handleError(_0xfd18fb,_0x38efa9){_0x38efa9=_0x38efa9||0x1f4;return function(_0x3fc863){logger['error'](_0x3fc863[_0xb4de('0x2a')]);if(_0x3fc863[_0xb4de('0x2b')]){delete _0x3fc863[_0xb4de('0x2b')];}_0xfd18fb[_0xb4de('0x1c')](_0x38efa9)['send'](_0x3fc863);};}exports[_0xb4de('0x2c')]=function(_0x41bbe8,_0x129ab1){var _0x29d494={},_0x565f33={},_0x138626={'count':0x0,'rows':[]};var _0x1de5fe=_[_0xb4de('0x2d')](db[_0xb4de('0x2e')][_0xb4de('0x2f')],function(_0x16af81){return{'name':_0x16af81[_0xb4de('0x30')],'type':_0x16af81['type'][_0xb4de('0x31')]};});_0x565f33[_0xb4de('0x32')]=_[_0xb4de('0x2d')](_0x1de5fe,_0xb4de('0x2b'));_0x565f33[_0xb4de('0x33')]=_[_0xb4de('0x34')](_0x41bbe8[_0xb4de('0x33')]);_0x565f33[_0xb4de('0x35')]=_[_0xb4de('0x36')](_0x565f33[_0xb4de('0x32')],_0x565f33[_0xb4de('0x33')]);_0x29d494['attributes']=_['intersection'](_0x565f33[_0xb4de('0x32')],qs['fields'](_0x41bbe8['query'][_0xb4de('0x37')]));_0x29d494[_0xb4de('0x38')]=_0x29d494['attributes'][_0xb4de('0x39')]?_0x29d494[_0xb4de('0x38')]:_0x565f33[_0xb4de('0x32')];if(!_0x41bbe8['query'][_0xb4de('0x3a')](_0xb4de('0x3b'))){_0x29d494[_0xb4de('0x21')]=qs[_0xb4de('0x21')](_0x41bbe8[_0xb4de('0x33')]['limit']);_0x29d494[_0xb4de('0x1f')]=qs[_0xb4de('0x1f')](_0x41bbe8['query'][_0xb4de('0x1f')]);}_0x29d494[_0xb4de('0x3c')]=qs['sort'](_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x3d')]);_0x29d494[_0xb4de('0x3e')]=qs[_0xb4de('0x35')](_[_0xb4de('0x3f')](_0x41bbe8['query'],_0x565f33[_0xb4de('0x35')]),_0x1de5fe);if(_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x40')]){_0x29d494[_0xb4de('0x3e')]=_[_0xb4de('0x41')](_0x29d494[_0xb4de('0x3e')],{'$or':_['map'](_0x1de5fe,function(_0x404d15){if(_0x404d15[_0xb4de('0x42')]!==_0xb4de('0x43')){var _0x3467d4={};_0x3467d4[_0x404d15['name']]={'$like':'%'+_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x40')]+'%'};return _0x3467d4;}})});}_0x29d494=_[_0xb4de('0x41')]({},_0x29d494,_0x41bbe8[_0xb4de('0x44')]);var _0x348735={'where':_0x29d494[_0xb4de('0x3e')]};return db[_0xb4de('0x2e')][_0xb4de('0x22')](_0x348735)[_0xb4de('0x45')](function(_0x57d833){_0x138626['count']=_0x57d833;if(_0x41bbe8[_0xb4de('0x33')][_0xb4de('0x46')]){_0x29d494[_0xb4de('0x47')]=[{'all':!![]}];}return db[_0xb4de('0x2e')]['findAll'](_0x29d494);})['then'](function(_0x1bbcd6){_0x138626[_0xb4de('0x48')]=_0x1bbcd6;return _0x138626;})[_0xb4de('0x45')](respondWithFilteredResult(_0x129ab1,_0x29d494))[_0xb4de('0x49')](handleError(_0x129ab1,null));};exports['show']=function(_0x280b6b,_0x58425e){var _0x2066ec={'raw':!![],'where':{'id':_0x280b6b['params']['id']}},_0xe78886={};_0xe78886['model']=_['keys'](db[_0xb4de('0x2e')][_0xb4de('0x2f')]);_0xe78886[_0xb4de('0x33')]=_[_0xb4de('0x34')](_0x280b6b[_0xb4de('0x33')]);_0xe78886['filters']=_['intersection'](_0xe78886[_0xb4de('0x32')],_0xe78886['query']);_0x2066ec[_0xb4de('0x38')]=_[_0xb4de('0x36')](_0xe78886[_0xb4de('0x32')],qs[_0xb4de('0x37')](_0x280b6b[_0xb4de('0x33')][_0xb4de('0x37')]));_0x2066ec[_0xb4de('0x38')]=_0x2066ec[_0xb4de('0x38')][_0xb4de('0x39')]?_0x2066ec[_0xb4de('0x38')]:_0xe78886['model'];if(_0x280b6b[_0xb4de('0x33')][_0xb4de('0x46')]){_0x2066ec['include']=[{'all':!![]}];}_0x2066ec=_[_0xb4de('0x41')]({},_0x2066ec,_0x280b6b[_0xb4de('0x44')]);return db['AnalyticTreeReport'][_0xb4de('0x4a')](_0x2066ec)['then'](handleEntityNotFound(_0x58425e,null))[_0xb4de('0x45')](respondWithResult(_0x58425e,null))[_0xb4de('0x49')](handleError(_0x58425e,null));};exports[_0xb4de('0x4b')]=function(_0x2d480e,_0x3da0bb){return db[_0xb4de('0x2e')][_0xb4de('0x4b')](_0x2d480e[_0xb4de('0x4c')],{})[_0xb4de('0x45')](respondWithResult(_0x3da0bb,0xc9))[_0xb4de('0x49')](handleError(_0x3da0bb,null));};exports['update']=function(_0x44e6b8,_0x2659de){if(_0x44e6b8[_0xb4de('0x4c')]['id']){delete _0x44e6b8[_0xb4de('0x4c')]['id'];}return db[_0xb4de('0x2e')][_0xb4de('0x4a')]({'where':{'id':_0x44e6b8[_0xb4de('0x4d')]['id']}})[_0xb4de('0x45')](handleEntityNotFound(_0x2659de,null))[_0xb4de('0x45')](saveUpdates(_0x44e6b8[_0xb4de('0x4c')],null))['then'](respondWithResult(_0x2659de,null))['catch'](handleError(_0x2659de,null));};exports[_0xb4de('0x29')]=function(_0x107817,_0x1027f6){return db[_0xb4de('0x2e')][_0xb4de('0x4a')]({'where':{'id':_0x107817['params']['id']}})[_0xb4de('0x45')](handleEntityNotFound(_0x1027f6,null))[_0xb4de('0x45')](removeEntity(_0x1027f6,null))[_0xb4de('0x49')](handleError(_0x1027f6,null));};
\ No newline at end of file
index 995c72f..0e0a25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ee=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','define','AnalyticTreeReport','util','../../config/logger'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xa1ee,0x12a));var _0xea1e=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0xa1ee[_0x3a3b9e];return _0x148103;};'use strict';var _=require('lodash');var util=require(_0xea1e('0x0'));var logger=require(_0xea1e('0x1'))(_0xea1e('0x2'));var moment=require(_0xea1e('0x3'));var BPromise=require(_0xea1e('0x4'));var rp=require(_0xea1e('0x5'));var fs=require('fs');var path=require(_0xea1e('0x6'));var rimraf=require(_0xea1e('0x7'));var config=require(_0xea1e('0x8'));var attributes=require(_0xea1e('0x9'));module['exports']=function(_0x481fbb,_0x191996){return _0x481fbb[_0xea1e('0xa')](_0xea1e('0xb'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc0f9=['rimraf','exports','define','AnalyticTreeReport','analytics_report_trees','util','api','moment','request-promise','path'];(function(_0x1ba9d2,_0x5d8007){var _0x59feaf=function(_0x133d23){while(--_0x133d23){_0x1ba9d2['push'](_0x1ba9d2['shift']());}};_0x59feaf(++_0x5d8007);}(_0xc0f9,0x1e5));var _0x9c0f=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0xc0f9[_0x12833b];return _0x3acad3;};'use strict';var _=require('lodash');var util=require(_0x9c0f('0x0'));var logger=require('../../config/logger')(_0x9c0f('0x1'));var moment=require(_0x9c0f('0x2'));var BPromise=require('bluebird');var rp=require(_0x9c0f('0x3'));var fs=require('fs');var path=require(_0x9c0f('0x4'));var rimraf=require(_0x9c0f('0x5'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0x9c0f('0x6')]=function(_0x3affbe,_0x18b851){return _0x3affbe[_0x9c0f('0x7')](_0x9c0f('0x8'),attributes,{'tableName':_0x9c0f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3588967..105b13b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x2df7a0,_0x516793){var _0x41cfa1=function(_0x941d16){while(--_0x941d16){_0x2df7a0['push'](_0x2df7a0['shift']());}};_0x41cfa1(++_0x516793);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3b30cf,_0x17b43c){_0x3b30cf=_0x3b30cf-0x0;var _0x438e91=_0x5f2f[_0x3b30cf];return _0x438e91;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x54fcba,_0x399187){_0x54fcba=_0x54fcba-0x0;var _0x195942=_0x7a54[_0x54fcba];return _0x195942;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 6f77985..b71972a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f9c=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3f9c,0xe3));var _0xc3f9=function(_0x3e5aad,_0x1fa71c){_0x3e5aad=_0x3e5aad-0x0;var _0x17b1e1=_0x3f9c[_0x3e5aad];return _0x17b1e1;};'use strict';var multer=require('multer');var util=require(_0xc3f9('0x0'));var path=require(_0xc3f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xc3f9('0x2'));var router=express[_0xc3f9('0x3')]();var fs_extra=require(_0xc3f9('0x4'));var auth=require(_0xc3f9('0x5'));var interaction=require(_0xc3f9('0x6'));var config=require(_0xc3f9('0x7'));var controller=require('./analyticTreeReport.controller');router[_0xc3f9('0x8')]('/',auth[_0xc3f9('0x9')](),controller[_0xc3f9('0xa')]);router[_0xc3f9('0x8')](_0xc3f9('0xb'),auth[_0xc3f9('0x9')](),controller['show']);router[_0xc3f9('0xc')]('/',auth[_0xc3f9('0x9')](),controller['create']);router['put'](_0xc3f9('0xb'),auth[_0xc3f9('0x9')](),controller['update']);router[_0xc3f9('0xd')](_0xc3f9('0xb'),auth[_0xc3f9('0x9')](),controller[_0xc3f9('0xe')]);module[_0xc3f9('0xf')]=router;
\ No newline at end of file
+var _0x26aa=['/:id','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticTreeReport.controller','get','isAuthenticated','index'];(function(_0x569caa,_0x5174ce){var _0x44cb5a=function(_0x456df4){while(--_0x456df4){_0x569caa['push'](_0x569caa['shift']());}};_0x44cb5a(++_0x5174ce);}(_0x26aa,0xeb));var _0xa26a=function(_0x5b3670,_0x41dc7f){_0x5b3670=_0x5b3670-0x0;var _0x2c1f24=_0x26aa[_0x5b3670];return _0x2c1f24;};'use strict';var multer=require(_0xa26a('0x0'));var util=require(_0xa26a('0x1'));var path=require(_0xa26a('0x2'));var timeout=require(_0xa26a('0x3'));var express=require(_0xa26a('0x4'));var router=express[_0xa26a('0x5')]();var fs_extra=require(_0xa26a('0x6'));var auth=require(_0xa26a('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa26a('0x8'));router[_0xa26a('0x9')]('/',auth[_0xa26a('0xa')](),controller[_0xa26a('0xb')]);router[_0xa26a('0x9')](_0xa26a('0xc'),auth[_0xa26a('0xa')](),controller[_0xa26a('0xd')]);router['post']('/',auth[_0xa26a('0xa')](),controller[_0xa26a('0xe')]);router[_0xa26a('0xf')]('/:id',auth[_0xa26a('0xa')](),controller[_0xa26a('0x10')]);router['delete']('/:id',auth[_0xa26a('0xa')](),controller[_0xa26a('0x11')]);module[_0xa26a('0x12')]=router;
\ No newline at end of file
index 2e6d056..f8a1867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d9=['sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x80d9,0x15c));var _0x980d=function(_0x23e5af,_0x1dff78){_0x23e5af=_0x23e5af-0x0;var _0x128eb8=_0x80d9[_0x23e5af];return _0x128eb8;};'use strict';var Sequelize=require(_0x980d('0x0'));module['exports']={'name':{'type':Sequelize[_0x980d('0x1')]},'basename':{'type':Sequelize[_0x980d('0x1')]},'type':{'type':Sequelize[_0x980d('0x1')]}};
\ No newline at end of file
+var _0xb31a=['exports','STRING','sequelize'];(function(_0xd0ce,_0x3926d6){var _0x3b72c4=function(_0x47f155){while(--_0x47f155){_0xd0ce['push'](_0xd0ce['shift']());}};_0x3b72c4(++_0x3926d6);}(_0xb31a,0xd4));var _0xab31=function(_0x3c7acb,_0x580f95){_0x3c7acb=_0x3c7acb-0x0;var _0x3cf9d4=_0xb31a[_0x3c7acb];return _0x3cf9d4;};'use strict';var Sequelize=require(_0xab31('0x0'));module[_0xab31('0x1')]={'name':{'type':Sequelize[_0xab31('0x2')]},'basename':{'type':Sequelize[_0xab31('0x2')]},'type':{'type':Sequelize[_0xab31('0x2')]}};
\ No newline at end of file
index 92bb287..fc832ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e20=['moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','end','status','json','undefined','limit','offset','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','count','include','rows','catch','show','params','includeAll','find','clone','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','filename','findOne','join','offline-chat/','rimraf','zip-dir','request-promise'];(function(_0x5c5208,_0x3db00e){var _0x42928d=function(_0x2baa31){while(--_0x2baa31){_0x5c5208['push'](_0x5c5208['shift']());}};_0x42928d(++_0x3db00e);}(_0x3e20,0x1a6));var _0x03e2=function(_0x969378,_0x4c659c){_0x969378=_0x969378-0x0;var _0x4428eb=_0x3e20[_0x969378];return _0x4428eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x03e2('0x0'));var zipdir=require(_0x03e2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x03e2('0x2'));var moment=require(_0x03e2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x03e2('0x4'));var util=require(_0x03e2('0x5'));var path=require(_0x03e2('0x6'));var sox=require(_0x03e2('0x7'));var csv=require(_0x03e2('0x8'));var ejs=require(_0x03e2('0x9'));var fs=require('fs');var fs_extra=require(_0x03e2('0xa'));var _=require(_0x03e2('0xb'));var squel=require(_0x03e2('0xc'));var crypto=require(_0x03e2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x03e2('0xe'));var toCsv=require(_0x03e2('0x8'));var querystring=require(_0x03e2('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x03e2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x03e2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x03e2('0x12'))(_0x03e2('0x13'));var utils=require('../../config/utils');var config=require(_0x03e2('0x14'));var licenseUtil=require(_0x03e2('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23d180,_0x3fa4f6){_0x3fa4f6=_0x3fa4f6||0xcc;return function(_0x354408){if(_0x354408){return _0x23d180['sendStatus'](_0x3fa4f6);}return _0x23d180['status'](_0x3fa4f6)[_0x03e2('0x16')]();};}function respondWithResult(_0x197ff8,_0x13ea84){_0x13ea84=_0x13ea84||0xc8;return function(_0x2be228){if(_0x2be228){return _0x197ff8[_0x03e2('0x17')](_0x13ea84)[_0x03e2('0x18')](_0x2be228);}};}function respondWithFilteredResult(_0x4101cc,_0x313228){return function(_0x5ce0e3){if(_0x5ce0e3){var _0x1f2237=typeof _0x313228['offset']===_0x03e2('0x19')&&typeof _0x313228[_0x03e2('0x1a')]==='undefined';var _0x9dacd7=_0x5ce0e3['count'];var _0x296d7f=_0x1f2237?0x0:_0x313228[_0x03e2('0x1b')];var _0x23bdde=_0x1f2237?_0x5ce0e3['count']:_0x313228[_0x03e2('0x1b')]+_0x313228[_0x03e2('0x1a')];var _0x1de4e6;if(_0x23bdde>=_0x9dacd7){_0x23bdde=_0x9dacd7;_0x1de4e6=0xc8;}else{_0x1de4e6=0xce;}_0x4101cc[_0x03e2('0x17')](_0x1de4e6);return _0x4101cc[_0x03e2('0x1c')]('Content-Range',_0x296d7f+'-'+_0x23bdde+'/'+_0x9dacd7)[_0x03e2('0x18')](_0x5ce0e3);}return null;};}function patchUpdates(_0x19e26b){return function(_0x1c90d5){try{jsonpatch[_0x03e2('0x1d')](_0x1c90d5,_0x19e26b,!![]);}catch(_0x584b94){return BPromise[_0x03e2('0x1e')](_0x584b94);}return _0x1c90d5[_0x03e2('0x1f')]();};}function saveUpdates(_0x4dce36,_0x7b843){return function(_0x1d18b7){if(_0x1d18b7){return _0x1d18b7[_0x03e2('0x20')](_0x4dce36)[_0x03e2('0x21')](function(_0x2a4cfe){return _0x2a4cfe;});}return null;};}function removeEntity(_0x3f8ab2,_0x12c318){return function(_0x1c39c1){if(_0x1c39c1){return _0x1c39c1[_0x03e2('0x22')]()[_0x03e2('0x21')](function(){_0x3f8ab2[_0x03e2('0x17')](0xcc)[_0x03e2('0x16')]();});}};}function handleEntityNotFound(_0x4b262a,_0x55a1f3){return function(_0x45007e){if(!_0x45007e){_0x4b262a['sendStatus'](0x194);}return _0x45007e;};}function handleError(_0x55da7e,_0x51da53){_0x51da53=_0x51da53||0x1f4;return function(_0x41fe6e){logger[_0x03e2('0x23')](_0x41fe6e[_0x03e2('0x24')]);if(_0x41fe6e['name']){delete _0x41fe6e[_0x03e2('0x25')];}_0x55da7e[_0x03e2('0x17')](_0x51da53)[_0x03e2('0x26')](_0x41fe6e);};}exports[_0x03e2('0x27')]=function(_0x3cad22,_0x3cfa35){var _0x408b76={},_0x40dec3={},_0xa46ba3={'count':0x0,'rows':[]};var _0x46034e=_[_0x03e2('0x28')](db[_0x03e2('0x29')][_0x03e2('0x2a')],function(_0x3ba5f8){return{'name':_0x3ba5f8[_0x03e2('0x2b')],'type':_0x3ba5f8[_0x03e2('0x2c')][_0x03e2('0x2d')]};});_0x40dec3[_0x03e2('0x2e')]=_['map'](_0x46034e,'name');_0x40dec3[_0x03e2('0x2f')]=_[_0x03e2('0x30')](_0x3cad22[_0x03e2('0x2f')]);_0x40dec3[_0x03e2('0x31')]=_[_0x03e2('0x32')](_0x40dec3[_0x03e2('0x2e')],_0x40dec3[_0x03e2('0x2f')]);_0x408b76[_0x03e2('0x33')]=_[_0x03e2('0x32')](_0x40dec3[_0x03e2('0x2e')],qs[_0x03e2('0x34')](_0x3cad22['query'][_0x03e2('0x34')]));_0x408b76[_0x03e2('0x33')]=_0x408b76[_0x03e2('0x33')]['length']?_0x408b76[_0x03e2('0x33')]:_0x40dec3[_0x03e2('0x2e')];if(!_0x3cad22[_0x03e2('0x2f')][_0x03e2('0x35')](_0x03e2('0x36'))){_0x408b76[_0x03e2('0x1a')]=qs[_0x03e2('0x1a')](_0x3cad22[_0x03e2('0x2f')]['limit']);_0x408b76[_0x03e2('0x1b')]=qs['offset'](_0x3cad22[_0x03e2('0x2f')]['offset']);}_0x408b76[_0x03e2('0x37')]=qs[_0x03e2('0x38')](_0x3cad22[_0x03e2('0x2f')][_0x03e2('0x38')]);_0x408b76[_0x03e2('0x39')]=qs[_0x03e2('0x31')](_[_0x03e2('0x3a')](_0x3cad22[_0x03e2('0x2f')],_0x40dec3['filters']),_0x46034e);if(_0x3cad22['query']['filter']){_0x408b76[_0x03e2('0x39')]=_[_0x03e2('0x3b')](_0x408b76['where'],{'$or':_['map'](_0x46034e,function(_0x13d9e){if(_0x13d9e[_0x03e2('0x2c')]!==_0x03e2('0x3c')){var _0xb86f3c={};_0xb86f3c[_0x13d9e[_0x03e2('0x25')]]={'$like':'%'+_0x3cad22[_0x03e2('0x2f')][_0x03e2('0x3d')]+'%'};return _0xb86f3c;}})});}_0x408b76=_[_0x03e2('0x3b')]({},_0x408b76,_0x3cad22[_0x03e2('0x3e')]);var _0x1f70eb={'where':_0x408b76[_0x03e2('0x39')]};return db[_0x03e2('0x29')][_0x03e2('0x3f')](_0x1f70eb)[_0x03e2('0x21')](function(_0x931e17){_0xa46ba3[_0x03e2('0x3f')]=_0x931e17;if(_0x3cad22[_0x03e2('0x2f')]['includeAll']){_0x408b76[_0x03e2('0x40')]=[{'all':!![]}];}return db[_0x03e2('0x29')]['findAll'](_0x408b76);})[_0x03e2('0x21')](function(_0x36c063){_0xa46ba3[_0x03e2('0x41')]=_0x36c063;return _0xa46ba3;})[_0x03e2('0x21')](respondWithFilteredResult(_0x3cfa35,_0x408b76))[_0x03e2('0x42')](handleError(_0x3cfa35,null));};exports[_0x03e2('0x43')]=function(_0x136dbc,_0x178215){var _0x5eb4a5={'raw':!![],'where':{'id':_0x136dbc[_0x03e2('0x44')]['id']}},_0x34df8e={};_0x34df8e[_0x03e2('0x2e')]=_[_0x03e2('0x30')](db[_0x03e2('0x29')][_0x03e2('0x2a')]);_0x34df8e['query']=_[_0x03e2('0x30')](_0x136dbc[_0x03e2('0x2f')]);_0x34df8e[_0x03e2('0x31')]=_[_0x03e2('0x32')](_0x34df8e[_0x03e2('0x2e')],_0x34df8e['query']);_0x5eb4a5[_0x03e2('0x33')]=_[_0x03e2('0x32')](_0x34df8e[_0x03e2('0x2e')],qs['fields'](_0x136dbc[_0x03e2('0x2f')]['fields']));_0x5eb4a5[_0x03e2('0x33')]=_0x5eb4a5[_0x03e2('0x33')]['length']?_0x5eb4a5[_0x03e2('0x33')]:_0x34df8e[_0x03e2('0x2e')];if(_0x136dbc[_0x03e2('0x2f')][_0x03e2('0x45')]){_0x5eb4a5['include']=[{'all':!![]}];}_0x5eb4a5=_[_0x03e2('0x3b')]({},_0x5eb4a5,_0x136dbc[_0x03e2('0x3e')]);return db['Attachment'][_0x03e2('0x46')](_0x5eb4a5)['then'](handleEntityNotFound(_0x178215,null))[_0x03e2('0x21')](respondWithResult(_0x178215,null))[_0x03e2('0x42')](handleError(_0x178215,null));};exports[_0x03e2('0x47')]=function(_0x38477a,_0xb2705){var _0x45f59f={'where':{'id':_0x38477a['params']['id']}},_0x304cea={};_0x304cea['model']=_[_0x03e2('0x30')](db[_0x03e2('0x29')][_0x03e2('0x2a')]);_0x45f59f[_0x03e2('0x33')]=_[_0x03e2('0x32')](_0x304cea[_0x03e2('0x2e')],qs['fields'](_0x38477a[_0x03e2('0x2f')][_0x03e2('0x34')]));_0x45f59f[_0x03e2('0x33')]=_0x45f59f['attributes']['length']?_0x45f59f[_0x03e2('0x33')]:_0x304cea['model'];if(_0x38477a[_0x03e2('0x2f')][_0x03e2('0x45')]){_0x45f59f[_0x03e2('0x40')]=[{'all':!![]}];}_0x45f59f=_['merge']({},_0x45f59f,_0x38477a[_0x03e2('0x3e')]);return db[_0x03e2('0x29')][_0x03e2('0x46')](_0x45f59f)[_0x03e2('0x21')](handleEntityNotFound(_0xb2705,null))['then'](function(_0x536c1a){if(_0x536c1a){var _0x26b4ca=_0x536c1a[_0x03e2('0x48')]({'plain':!![]});_0x26b4ca=qs[_0x03e2('0x49')](_0x26b4ca,['id',_0x03e2('0x4a'),_0x03e2('0x4b')]);_0x38477a['body']=_['omit'](_0x38477a[_0x03e2('0x4c')],['id',_0x03e2('0x4a'),_0x03e2('0x4b')]);return db[_0x03e2('0x29')][_0x03e2('0x4d')](_[_0x03e2('0x3b')](_0x26b4ca,_0x38477a['body']),{'include':_0x38477a[_0x03e2('0x2f')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x03e2('0x21')](respondWithResult(_0xb2705,0xc9))[_0x03e2('0x42')](handleError(_0xb2705,null));};exports[_0x03e2('0x20')]=function(_0x21a4bd,_0x4ebb69){if(_0x21a4bd[_0x03e2('0x4c')]['id']){delete _0x21a4bd[_0x03e2('0x4c')]['id'];}return db['Attachment'][_0x03e2('0x46')]({'where':{'id':_0x21a4bd[_0x03e2('0x44')]['id']}})[_0x03e2('0x21')](handleEntityNotFound(_0x4ebb69,null))[_0x03e2('0x21')](saveUpdates(_0x21a4bd['body'],null))['then'](respondWithResult(_0x4ebb69,null))[_0x03e2('0x42')](handleError(_0x4ebb69,null));};exports['destroy']=function(_0x3056be,_0x12046e){return db[_0x03e2('0x29')][_0x03e2('0x46')]({'where':{'id':_0x3056be[_0x03e2('0x44')]['id']}})['then'](handleEntityNotFound(_0x12046e,null))[_0x03e2('0x21')](removeEntity(_0x12046e,null))[_0x03e2('0x42')](handleError(_0x12046e,null));};exports[_0x03e2('0x4d')]=function(_0x31b499,_0x5afac9,_0x2f54b4){_0x31b499[_0x03e2('0x4c')][_0x03e2('0x25')]=_0x31b499[_0x03e2('0x4e')][_0x03e2('0x4f')];_0x31b499['body'][_0x03e2('0x50')]=_0x31b499['file'][_0x03e2('0x51')];_0x31b499['body'][_0x03e2('0x2c')]=_0x31b499['file']['mimetype'];return db[_0x03e2('0x29')]['create'](_0x31b499[_0x03e2('0x4c')])[_0x03e2('0x21')](respondWithResult(_0x5afac9,0xc9))[_0x03e2('0x42')](handleError(_0x5afac9,null));};exports['download']=function(_0x8e6634,_0x3ef8d0,_0x147989){return db[_0x03e2('0x29')][_0x03e2('0x52')]({'where':{'id':_0x8e6634[_0x03e2('0x44')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x3ef8d0,null))[_0x03e2('0x21')](function(_0x26c562){if(_0x26c562){var _0x2bf4f4=_0x26c562['ChatOfflineMessageId']!==null;var _0x27f157=path[_0x03e2('0x53')](config['root'],'server/files/attachments/');if(_0x2bf4f4){_0x27f157=path[_0x03e2('0x53')](_0x27f157,_0x03e2('0x54'));}var _0x5b5f4d=path[_0x03e2('0x53')](_0x27f157,_0x26c562['basename']);return _0x3ef8d0['download'](_0x5b5f4d);}})['catch'](handleError(_0x3ef8d0,null));};
\ No newline at end of file
+var _0xb67f=['to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','destroy','then','error','stack','name','send','Attachment','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','show','params','includeAll','include','find','length','get','updatedAt','body','omit','createdAt','create','originalname','file','filename','mimetype','download','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xb67f,0x104));var _0xfb67=function(_0x2b31b3,_0x49e1d8){_0x2b31b3=_0x2b31b3-0x0;var _0x44acd8=_0xb67f[_0x2b31b3];return _0x44acd8;};'use strict';var emlformat=require(_0xfb67('0x0'));var rimraf=require(_0xfb67('0x1'));var zipdir=require(_0xfb67('0x2'));var jsonpatch=require(_0xfb67('0x3'));var rp=require(_0xfb67('0x4'));var moment=require(_0xfb67('0x5'));var BPromise=require(_0xfb67('0x6'));var Mustache=require(_0xfb67('0x7'));var util=require('util');var path=require(_0xfb67('0x8'));var sox=require(_0xfb67('0x9'));var csv=require(_0xfb67('0xa'));var ejs=require(_0xfb67('0xb'));var fs=require('fs');var fs_extra=require(_0xfb67('0xc'));var _=require('lodash');var squel=require(_0xfb67('0xd'));var crypto=require(_0xfb67('0xe'));var jsforce=require(_0xfb67('0xf'));var deskjs=require(_0xfb67('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfb67('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfb67('0x12'));var as=require(_0xfb67('0x13'));var hardwareService=require(_0xfb67('0x14'));var logger=require(_0xfb67('0x15'))('api');var utils=require(_0xfb67('0x16'));var config=require(_0xfb67('0x17'));var licenseUtil=require(_0xfb67('0x18'));var db=require(_0xfb67('0x19'))['db'];function respondWithStatusCode(_0x186fa4,_0x986b18){_0x986b18=_0x986b18||0xcc;return function(_0x39c7a3){if(_0x39c7a3){return _0x186fa4[_0xfb67('0x1a')](_0x986b18);}return _0x186fa4[_0xfb67('0x1b')](_0x986b18)[_0xfb67('0x1c')]();};}function respondWithResult(_0x48296e,_0x40c9f7){_0x40c9f7=_0x40c9f7||0xc8;return function(_0x48161e){if(_0x48161e){return _0x48296e[_0xfb67('0x1b')](_0x40c9f7)['json'](_0x48161e);}};}function respondWithFilteredResult(_0x29880,_0x29e727){return function(_0x29ef2e){if(_0x29ef2e){var _0x5c253b=typeof _0x29e727[_0xfb67('0x1d')]===_0xfb67('0x1e')&&typeof _0x29e727['limit']===_0xfb67('0x1e');var _0x433af6=_0x29ef2e[_0xfb67('0x1f')];var _0x78bb9d=_0x5c253b?0x0:_0x29e727[_0xfb67('0x1d')];var _0x189838=_0x5c253b?_0x29ef2e[_0xfb67('0x1f')]:_0x29e727[_0xfb67('0x1d')]+_0x29e727[_0xfb67('0x20')];var _0x51cd12;if(_0x189838>=_0x433af6){_0x189838=_0x433af6;_0x51cd12=0xc8;}else{_0x51cd12=0xce;}_0x29880['status'](_0x51cd12);return _0x29880[_0xfb67('0x21')](_0xfb67('0x22'),_0x78bb9d+'-'+_0x189838+'/'+_0x433af6)[_0xfb67('0x23')](_0x29ef2e);}return null;};}function patchUpdates(_0x1a89d0){return function(_0x4a54bb){try{jsonpatch['apply'](_0x4a54bb,_0x1a89d0,!![]);}catch(_0x33a302){return BPromise[_0xfb67('0x24')](_0x33a302);}return _0x4a54bb[_0xfb67('0x25')]();};}function saveUpdates(_0x447bd9,_0x1d84eb){return function(_0x5e1d17){if(_0x5e1d17){return _0x5e1d17['update'](_0x447bd9)['then'](function(_0x254797){return _0x254797;});}return null;};}function removeEntity(_0x18ab6c,_0xaae98){return function(_0x573ca9){if(_0x573ca9){return _0x573ca9[_0xfb67('0x26')]()[_0xfb67('0x27')](function(){_0x18ab6c[_0xfb67('0x1b')](0xcc)[_0xfb67('0x1c')]();});}};}function handleEntityNotFound(_0x259a68,_0x1c5098){return function(_0x48f17d){if(!_0x48f17d){_0x259a68[_0xfb67('0x1a')](0x194);}return _0x48f17d;};}function handleError(_0x202f16,_0x5c1731){_0x5c1731=_0x5c1731||0x1f4;return function(_0x2b60b1){logger[_0xfb67('0x28')](_0x2b60b1[_0xfb67('0x29')]);if(_0x2b60b1[_0xfb67('0x2a')]){delete _0x2b60b1[_0xfb67('0x2a')];}_0x202f16[_0xfb67('0x1b')](_0x5c1731)[_0xfb67('0x2b')](_0x2b60b1);};}exports['index']=function(_0xc85ae8,_0x1fa666){var _0x16c939={},_0x80df24={},_0x6917cc={'count':0x0,'rows':[]};var _0x32671f=_['map'](db[_0xfb67('0x2c')][_0xfb67('0x2d')],function(_0x3bb244){return{'name':_0x3bb244[_0xfb67('0x2e')],'type':_0x3bb244[_0xfb67('0x2f')][_0xfb67('0x30')]};});_0x80df24[_0xfb67('0x31')]=_[_0xfb67('0x32')](_0x32671f,'name');_0x80df24['query']=_[_0xfb67('0x33')](_0xc85ae8[_0xfb67('0x34')]);_0x80df24[_0xfb67('0x35')]=_[_0xfb67('0x36')](_0x80df24[_0xfb67('0x31')],_0x80df24[_0xfb67('0x34')]);_0x16c939['attributes']=_[_0xfb67('0x36')](_0x80df24[_0xfb67('0x31')],qs['fields'](_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x37')]));_0x16c939[_0xfb67('0x38')]=_0x16c939[_0xfb67('0x38')]['length']?_0x16c939[_0xfb67('0x38')]:_0x80df24[_0xfb67('0x31')];if(!_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x39')]('nolimit')){_0x16c939[_0xfb67('0x20')]=qs['limit'](_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x20')]);_0x16c939['offset']=qs[_0xfb67('0x1d')](_0xc85ae8[_0xfb67('0x34')]['offset']);}_0x16c939[_0xfb67('0x3a')]=qs[_0xfb67('0x3b')](_0xc85ae8[_0xfb67('0x34')]['sort']);_0x16c939[_0xfb67('0x3c')]=qs[_0xfb67('0x35')](_[_0xfb67('0x3d')](_0xc85ae8[_0xfb67('0x34')],_0x80df24[_0xfb67('0x35')]),_0x32671f);if(_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x3e')]){_0x16c939[_0xfb67('0x3c')]=_[_0xfb67('0x3f')](_0x16c939[_0xfb67('0x3c')],{'$or':_[_0xfb67('0x32')](_0x32671f,function(_0x8af521){if(_0x8af521[_0xfb67('0x2f')]!==_0xfb67('0x40')){var _0x265aab={};_0x265aab[_0x8af521[_0xfb67('0x2a')]]={'$like':'%'+_0xc85ae8[_0xfb67('0x34')][_0xfb67('0x3e')]+'%'};return _0x265aab;}})});}_0x16c939=_[_0xfb67('0x3f')]({},_0x16c939,_0xc85ae8[_0xfb67('0x41')]);var _0x2752b1={'where':_0x16c939['where']};return db[_0xfb67('0x2c')][_0xfb67('0x1f')](_0x2752b1)[_0xfb67('0x27')](function(_0x4222e3){_0x6917cc[_0xfb67('0x1f')]=_0x4222e3;if(_0xc85ae8[_0xfb67('0x34')]['includeAll']){_0x16c939['include']=[{'all':!![]}];}return db[_0xfb67('0x2c')][_0xfb67('0x42')](_0x16c939);})[_0xfb67('0x27')](function(_0x459011){_0x6917cc['rows']=_0x459011;return _0x6917cc;})[_0xfb67('0x27')](respondWithFilteredResult(_0x1fa666,_0x16c939))[_0xfb67('0x43')](handleError(_0x1fa666,null));};exports[_0xfb67('0x44')]=function(_0x3e1d5e,_0x1aa9c5){var _0xa42282={'raw':!![],'where':{'id':_0x3e1d5e[_0xfb67('0x45')]['id']}},_0x30afb2={};_0x30afb2[_0xfb67('0x31')]=_[_0xfb67('0x33')](db[_0xfb67('0x2c')][_0xfb67('0x2d')]);_0x30afb2[_0xfb67('0x34')]=_[_0xfb67('0x33')](_0x3e1d5e[_0xfb67('0x34')]);_0x30afb2['filters']=_[_0xfb67('0x36')](_0x30afb2[_0xfb67('0x31')],_0x30afb2['query']);_0xa42282['attributes']=_[_0xfb67('0x36')](_0x30afb2['model'],qs[_0xfb67('0x37')](_0x3e1d5e[_0xfb67('0x34')]['fields']));_0xa42282[_0xfb67('0x38')]=_0xa42282[_0xfb67('0x38')]['length']?_0xa42282['attributes']:_0x30afb2['model'];if(_0x3e1d5e['query'][_0xfb67('0x46')]){_0xa42282[_0xfb67('0x47')]=[{'all':!![]}];}_0xa42282=_[_0xfb67('0x3f')]({},_0xa42282,_0x3e1d5e[_0xfb67('0x41')]);return db[_0xfb67('0x2c')][_0xfb67('0x48')](_0xa42282)['then'](handleEntityNotFound(_0x1aa9c5,null))[_0xfb67('0x27')](respondWithResult(_0x1aa9c5,null))[_0xfb67('0x43')](handleError(_0x1aa9c5,null));};exports['clone']=function(_0x367904,_0x17608e){var _0x1bb6bc={'where':{'id':_0x367904[_0xfb67('0x45')]['id']}},_0x2e3e8e={};_0x2e3e8e[_0xfb67('0x31')]=_[_0xfb67('0x33')](db[_0xfb67('0x2c')][_0xfb67('0x2d')]);_0x1bb6bc[_0xfb67('0x38')]=_[_0xfb67('0x36')](_0x2e3e8e[_0xfb67('0x31')],qs[_0xfb67('0x37')](_0x367904['query'][_0xfb67('0x37')]));_0x1bb6bc[_0xfb67('0x38')]=_0x1bb6bc[_0xfb67('0x38')][_0xfb67('0x49')]?_0x1bb6bc[_0xfb67('0x38')]:_0x2e3e8e[_0xfb67('0x31')];if(_0x367904[_0xfb67('0x34')][_0xfb67('0x46')]){_0x1bb6bc['include']=[{'all':!![]}];}_0x1bb6bc=_[_0xfb67('0x3f')]({},_0x1bb6bc,_0x367904[_0xfb67('0x41')]);return db[_0xfb67('0x2c')]['find'](_0x1bb6bc)[_0xfb67('0x27')](handleEntityNotFound(_0x17608e,null))['then'](function(_0x2460ae){if(_0x2460ae){var _0x5999e3=_0x2460ae[_0xfb67('0x4a')]({'plain':!![]});_0x5999e3=qs['omit'](_0x5999e3,['id','createdAt',_0xfb67('0x4b')]);_0x367904[_0xfb67('0x4c')]=_[_0xfb67('0x4d')](_0x367904[_0xfb67('0x4c')],['id',_0xfb67('0x4e'),'updatedAt']);return db[_0xfb67('0x2c')]['create'](_['merge'](_0x5999e3,_0x367904[_0xfb67('0x4c')]),{'include':_0x367904[_0xfb67('0x34')][_0xfb67('0x46')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x17608e,0xc9))[_0xfb67('0x43')](handleError(_0x17608e,null));};exports['update']=function(_0x51465c,_0x550e26){if(_0x51465c[_0xfb67('0x4c')]['id']){delete _0x51465c[_0xfb67('0x4c')]['id'];}return db[_0xfb67('0x2c')][_0xfb67('0x48')]({'where':{'id':_0x51465c[_0xfb67('0x45')]['id']}})['then'](handleEntityNotFound(_0x550e26,null))['then'](saveUpdates(_0x51465c['body'],null))['then'](respondWithResult(_0x550e26,null))[_0xfb67('0x43')](handleError(_0x550e26,null));};exports[_0xfb67('0x26')]=function(_0x3b8d8c,_0x13661a){return db[_0xfb67('0x2c')][_0xfb67('0x48')]({'where':{'id':_0x3b8d8c[_0xfb67('0x45')]['id']}})[_0xfb67('0x27')](handleEntityNotFound(_0x13661a,null))[_0xfb67('0x27')](removeEntity(_0x13661a,null))[_0xfb67('0x43')](handleError(_0x13661a,null));};exports[_0xfb67('0x4f')]=function(_0x6f836b,_0x388060,_0x15cf2f){_0x6f836b[_0xfb67('0x4c')]['name']=_0x6f836b['file'][_0xfb67('0x50')];_0x6f836b[_0xfb67('0x4c')]['basename']=_0x6f836b[_0xfb67('0x51')][_0xfb67('0x52')];_0x6f836b['body'][_0xfb67('0x2f')]=_0x6f836b['file'][_0xfb67('0x53')];return db[_0xfb67('0x2c')][_0xfb67('0x4f')](_0x6f836b[_0xfb67('0x4c')])['then'](respondWithResult(_0x388060,0xc9))[_0xfb67('0x43')](handleError(_0x388060,null));};exports[_0xfb67('0x54')]=function(_0xd2fe34,_0x309f78,_0x16c25f){return db['Attachment']['findOne']({'where':{'id':_0xd2fe34[_0xfb67('0x45')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x309f78,null))['then'](function(_0x592a4b){if(_0x592a4b){var _0x393f55=_0x592a4b[_0xfb67('0x55')]!==null;var _0x5b2e40=path[_0xfb67('0x56')](config['root'],_0xfb67('0x57'));if(_0x393f55){_0x5b2e40=path[_0xfb67('0x56')](_0x5b2e40,_0xfb67('0x58'));}var _0x400512=path[_0xfb67('0x56')](_0x5b2e40,_0x592a4b[_0xfb67('0x59')]);return _0x309f78[_0xfb67('0x54')](_0x400512);}})[_0xfb67('0x43')](handleError(_0x309f78,null));};
\ No newline at end of file
index b81b92d..0542133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391b=['path','rimraf','./attachment.attributes','attachments','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4da56f,_0x20d795){var _0x5e2586=function(_0x15a07b){while(--_0x15a07b){_0x4da56f['push'](_0x4da56f['shift']());}};_0x5e2586(++_0x20d795);}(_0x391b,0xd3));var _0xb391=function(_0x3585fb,_0x5df075){_0x3585fb=_0x3585fb-0x0;var _0x48fb79=_0x391b[_0x3585fb];return _0x48fb79;};'use strict';var _=require(_0xb391('0x0'));var util=require(_0xb391('0x1'));var logger=require(_0xb391('0x2'))('api');var moment=require(_0xb391('0x3'));var BPromise=require(_0xb391('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb391('0x5'));var rimraf=require(_0xb391('0x6'));var config=require('../../config/environment');var attributes=require(_0xb391('0x7'));module['exports']=function(_0x3deac7,_0x564ef3){return _0x3deac7['define']('Attachment',attributes,{'tableName':_0xb391('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5f0=['request-promise','path','../../config/environment','exports','Attachment','attachments','lodash','../../config/logger','api','moment'];(function(_0x543eac,_0x3a39a1){var _0x16c036=function(_0x446e5d){while(--_0x446e5d){_0x543eac['push'](_0x543eac['shift']());}};_0x16c036(++_0x3a39a1);}(_0xa5f0,0x1e6));var _0x0a5f=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xa5f0[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0x0a5f('0x0'));var util=require('util');var logger=require(_0x0a5f('0x1'))(_0x0a5f('0x2'));var moment=require(_0x0a5f('0x3'));var BPromise=require('bluebird');var rp=require(_0x0a5f('0x4'));var fs=require('fs');var path=require(_0x0a5f('0x5'));var rimraf=require('rimraf');var config=require(_0x0a5f('0x6'));var attributes=require('./attachment.attributes');module[_0x0a5f('0x7')]=function(_0x5511ad,_0x1faa87){return _0x5511ad['define'](_0x0a5f('0x8'),attributes,{'tableName':_0x0a5f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 975d364..3d2bd68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x688a=['result','catch','create','body','options','CreateAttachment','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','Attachment,\x20%s,\x20%s'];(function(_0x5881b0,_0x392301){var _0x4f838f=function(_0x2a95a5){while(--_0x2a95a5){_0x5881b0['push'](_0x5881b0['shift']());}};_0x4f838f(++_0x392301);}(_0x688a,0x124));var _0xa688=function(_0x3d45a3,_0x1a4414){_0x3d45a3=_0x3d45a3-0x0;var _0x3eb049=_0x688a[_0x3d45a3];return _0x3eb049;};'use strict';var _=require(_0xa688('0x0'));var util=require(_0xa688('0x1'));var moment=require(_0xa688('0x2'));var BPromise=require('bluebird');var rs=require(_0xa688('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa688('0x4'))['db'];var utils=require(_0xa688('0x5'));var logger=require('../../config/logger')(_0xa688('0x6'));var config=require(_0xa688('0x7'));var jayson=require(_0xa688('0x8'));var client=jayson[_0xa688('0x9')][_0xa688('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a362a,_0x49e75d,_0x5aee29){return new BPromise(function(_0x45c969,_0x3f3d81){return client[_0xa688('0xb')](_0x2a362a,_0x5aee29)['then'](function(_0x4d3b92){logger[_0xa688('0xc')]('Attachment,\x20%s,\x20%s',_0x49e75d,'request\x20sent');logger[_0xa688('0xd')](_0xa688('0xe'),_0x49e75d,_0xa688('0xf'),JSON[_0xa688('0x10')](_0x4d3b92));if(_0x4d3b92[_0xa688('0x11')]){if(_0x4d3b92[_0xa688('0x11')]['code']===0x1f4){logger['error']('Attachment,\x20%s,\x20%s',_0x49e75d,_0x4d3b92[_0xa688('0x11')][_0xa688('0x12')]);return _0x3f3d81(_0x4d3b92['error'][_0xa688('0x12')]);}logger['error'](_0xa688('0x13'),_0x49e75d,_0x4d3b92[_0xa688('0x11')]['message']);return _0x45c969(_0x4d3b92['error'][_0xa688('0x12')]);}else{logger['info'](_0xa688('0x13'),_0x49e75d,'request\x20sent');_0x45c969(_0x4d3b92[_0xa688('0x14')][_0xa688('0x12')]);}})[_0xa688('0x15')](function(_0x25b453){logger[_0xa688('0x11')](_0xa688('0x13'),_0x49e75d,_0x25b453);_0x3f3d81(_0x25b453);});});}exports['CreateAttachment']=function(_0x59e392){var _0x14ca3c=this;return new Promise(function(_0x1330d5,_0x5dc07f){return db['Attachment'][_0xa688('0x16')](_0x59e392[_0xa688('0x17')],{'raw':_0x59e392['options']?_0x59e392[_0xa688('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x152cfe){logger[_0xa688('0xc')](_0xa688('0x19'),_0x59e392);logger[_0xa688('0xd')](_0xa688('0x19'),_0x59e392,JSON[_0xa688('0x10')](_0x152cfe));_0x1330d5(_0x152cfe);})[_0xa688('0x15')](function(_0x203214){logger[_0xa688('0x11')](_0xa688('0x19'),_0x203214[_0xa688('0x12')],_0x59e392);_0x5dc07f(_0x14ca3c[_0xa688('0x11')](0x1f4,_0x203214[_0xa688('0x12')]));});});};
\ No newline at end of file
+var _0x447b=['catch','CreateAttachment','body','options','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0xe28bfb,_0x239603){var _0x323aea=function(_0x29c2a9){while(--_0x29c2a9){_0xe28bfb['push'](_0xe28bfb['shift']());}};_0x323aea(++_0x239603);}(_0x447b,0xe4));var _0xb447=function(_0x217dea,_0x150e9d){_0x217dea=_0x217dea-0x0;var _0x471b5a=_0x447b[_0x217dea];return _0x471b5a;};'use strict';var _=require(_0xb447('0x0'));var util=require(_0xb447('0x1'));var moment=require('moment');var BPromise=require(_0xb447('0x2'));var rs=require(_0xb447('0x3'));var fs=require('fs');var Redis=require(_0xb447('0x4'));var db=require(_0xb447('0x5'))['db'];var utils=require(_0xb447('0x6'));var logger=require(_0xb447('0x7'))(_0xb447('0x8'));var config=require(_0xb447('0x9'));var jayson=require(_0xb447('0xa'));var client=jayson[_0xb447('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0f42,_0x2e919c,_0x588700){return new BPromise(function(_0x3ea00b,_0x210bc5){return client[_0xb447('0xc')](_0x4e0f42,_0x588700)[_0xb447('0xd')](function(_0x1972c9){logger['info'](_0xb447('0xe'),_0x2e919c,_0xb447('0xf'));logger[_0xb447('0x10')](_0xb447('0x11'),_0x2e919c,'request\x20sent',JSON[_0xb447('0x12')](_0x1972c9));if(_0x1972c9[_0xb447('0x13')]){if(_0x1972c9[_0xb447('0x13')][_0xb447('0x14')]===0x1f4){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);return _0x210bc5(_0x1972c9[_0xb447('0x13')]['message']);}logger['error'](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')]['message']);return _0x3ea00b(_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);}else{logger[_0xb447('0x16')]('Attachment,\x20%s,\x20%s',_0x2e919c,'request\x20sent');_0x3ea00b(_0x1972c9[_0xb447('0x17')]['message']);}})[_0xb447('0x18')](function(_0x5c98a9){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x5c98a9);_0x210bc5(_0x5c98a9);});});}exports[_0xb447('0x19')]=function(_0x23825c){var _0x1552bd=this;return new Promise(function(_0x3015ab,_0x2a019c){return db['Attachment']['create'](_0x23825c[_0xb447('0x1a')],{'raw':_0x23825c[_0xb447('0x1b')]?_0x23825c[_0xb447('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xb447('0xd')](function(_0x176366){logger[_0xb447('0x16')](_0xb447('0x19'),_0x23825c);logger[_0xb447('0x10')]('CreateAttachment',_0x23825c,JSON[_0xb447('0x12')](_0x176366));_0x3015ab(_0x176366);})[_0xb447('0x18')](function(_0xcba626){logger[_0xb447('0x13')](_0xb447('0x19'),_0xcba626[_0xb447('0x15')],_0x23825c);_0x2a019c(_0x1552bd['error'](0x1f4,_0xcba626[_0xb447('0x15')]));});});};
\ No newline at end of file
index 34f6325..ccb23a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x14194a,_0x3e2025){var _0x154c0d=function(_0x31ebc9){while(--_0x31ebc9){_0x14194a['push'](_0x14194a['shift']());}};_0x154c0d(++_0x3e2025);}(_0x2032,0xd9));var _0x2203=function(_0x58b94e,_0x427237){_0x58b94e=_0x58b94e-0x0;var _0x4e8fab=_0x2032[_0x58b94e];return _0x4e8fab;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x279cf7,_0x2359d8){var _0x1f7d4c=function(_0x222879){while(--_0x222879){_0x279cf7['push'](_0x279cf7['shift']());}};_0x1f7d4c(++_0x2359d8);}(_0xb10b,0x12a));var _0xbb10=function(_0xc40b9f,_0x17ec1f){_0xc40b9f=_0xc40b9f-0x0;var _0x535b9c=_0xb10b[_0xc40b9f];return _0x535b9c;};'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('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
index 48f53d4..a72c749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x359b=['findOne','password','salt','disabled','blockedAt','admin','user','agent','then','name','blockDuration','blocked','add','clearBlockUser','getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','online','ad-login','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','../../config/logger','api','undefined','activedirectory','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled'];(function(_0x234415,_0x8206ad){var _0x1f47f1=function(_0x1d647){while(--_0x1d647){_0x234415['push'](_0x234415['shift']());}};_0x1f47f1(++_0x8206ad);}(_0x359b,0x7a));var _0xb359=function(_0x3b5355,_0x3a12b2){_0x3b5355=_0x3b5355-0x0;var _0x322132=_0x359b[_0x3b5355];return _0x322132;};'use strict';var passport=require(_0xb359('0x0'));var LocalStrategy=require(_0xb359('0x1'))[_0xb359('0x2')];var moment=require(_0xb359('0x3'));var ActiveDirectory=require(_0xb359('0x4'));var BPromise=require(_0xb359('0x5'));var util=require(_0xb359('0x6'));var db=require(_0xb359('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xb359('0x8'));var config=require('../../config/environment');var logger=require(_0xb359('0x9'))(_0xb359('0xa'));function isActiveDirectoryConfigured(_0x489966){var _0x2eeac8=![];if(typeof _0x489966['activedirectory']!==_0xb359('0xb')){_0x2eeac8=_0x489966[_0xb359('0xc')]['baseDN']&&_0x489966[_0xb359('0xc')]['url']&&_0x489966['activedirectory'][_0xb359('0xd')];}return _0x2eeac8;}function adAuthenticate(_0x17e8ef,_0x476cf9,_0x2a1a84){return new BPromise(function(_0x1756c8,_0x31aef3){try{var _0xc8069b=new ActiveDirectory(_0x17e8ef);_0xc8069b[_0xb359('0xe')](_0x476cf9,_0x2a1a84,function(_0x1268aa,_0x4b0fcc){if(_0x1268aa){logger[_0xb359('0xf')](_0xb359('0x10'),_0x476cf9,util['inspect'](_0x1268aa,{'showHidden':![],'depth':null}));_0x31aef3(_0xb359('0x11'));}else if(!_0x4b0fcc){logger[_0xb359('0xf')](_0xb359('0x12'),_0x476cf9);_0x31aef3(_0xb359('0x11'));}else{_0x1756c8(_0x4b0fcc);}});}catch(_0xf5021b){_0x31aef3(_0xf5021b);}});}function ActiveDirectoryAuthenticate(_0x539f00,_0x852ebd,_0x117f70,_0x1a2d8f){var _0x17df10,_0x4e2d8c;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xb359('0x13'),_0x852ebd);return _0x1a2d8f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xb359('0x14')]['findOne']({'where':{'id':0x1},'attributes':['adSsoEnabled','blockDuration'],'raw':!![]})['then'](function(_0x339f44){_0x17df10=_0x339f44;if(!_0x17df10['adSsoEnabled']){logger[_0xb359('0xf')](_0xb359('0x15'),_0x852ebd);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x539f00[_0xb359('0x16')]({'attributes':['id','name',_0xb359('0x17'),_0xb359('0x18'),'role',_0xb359('0x19'),'blocked',_0xb359('0x1a'),'online'],'where':{'name':_0x852ebd,'role':{'$or':[_0xb359('0x1b'),_0xb359('0x1c'),_0xb359('0x1d')]},'adSsoEnabled':!![]}});})[_0xb359('0x1e')](function(_0x50687a){if(!_0x50687a||_0x50687a&&_0x50687a[_0xb359('0x1f')]!==_0x852ebd){throw new Error(_0xb359('0x11'));}_0x4e2d8c=_0x50687a;var _0x22e2c6=_0x4e2d8c[_0xb359('0x1f')]+'@'+config['activedirectory']['domain'];return adAuthenticate(config[_0xb359('0xc')],_0x22e2c6,_0x117f70);})[_0xb359('0x1e')](function(_0x3b08c9){if(_0x4e2d8c[_0xb359('0x19')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x17df10[_0xb359('0x20')]>0x0){if(_0x4e2d8c[_0xb359('0x21')]){if(moment(_0x4e2d8c[_0xb359('0x1a')])[_0xb359('0x22')](_0x17df10['blockDuration'],'minutes')>moment()){throw new Error(_0xb359('0x11'));}return utils[_0xb359('0x23')](_0x4e2d8c,0x0,![],null)[_0xb359('0x1e')](function(){return utils['getLicense'](_0x4e2d8c);})[_0xb359('0x1e')](function(){return _0x1a2d8f(null,_0x4e2d8c);});}else{return utils[_0xb359('0x24')](_0x4e2d8c)[_0xb359('0x1e')](function(){return _0x1a2d8f(null,_0x4e2d8c);});}}else{return utils[_0xb359('0x24')](_0x4e2d8c)['then'](function(){return _0x1a2d8f(null,_0x4e2d8c);});}})[_0xb359('0x25')](function(_0x575050){return _0x1a2d8f(null,![],_0x575050);});}function handleError(_0xb0f64b,_0x40a5f2,_0x5055bf){return _0xb0f64b[_0xb359('0x26')](_0x40a5f2||0x1f4)[_0xb359('0x27')]({'message':_0x5055bf?_0x5055bf[_0xb359('0x28')]||_0x5055bf:''});}exports[_0xb359('0x29')]=function(_0x1abf03,_0x5e5263,_0x1e3ec4){passport[_0xb359('0xe')]('ad-login',function(_0x5aa332,_0x2a4407,_0x2bc5cc){var _0x85e37a=_0x5aa332||_0x2bc5cc;if(_0x85e37a){return handleError(_0x5e5263,0x191,_0x85e37a);}if(!_0x2a4407){return handleError(_0x5e5263,0x194,{'message':_0xb359('0x2a')});}else{var _0x2ffe53={'payload':{'id':_0x2a4407['id'],'role':_0x2a4407[_0xb359('0x2b')]},'options':{'expiresIn':0x15180}};return authService[_0xb359('0x2c')](_0x2ffe53)['then'](function(_0x259e9f){_0x5e5263['json']({'id':_0x2a4407['id'],'token':_0x259e9f,'statusCall':'','isAlreadyLogged':_0x2a4407[_0xb359('0x2d')]});});}})(_0x1abf03,_0x5e5263,_0x1e3ec4);};passport['use'](_0xb359('0x2e'),new LocalStrategy({'usernameField':_0xb359('0x1f'),'passwordField':_0xb359('0x17')},function(_0x118c59,_0x46073c,_0x42494a){return ActiveDirectoryAuthenticate(db[_0xb359('0x2f')],_0x118c59,_0x46073c,_0x42494a);}));
\ No newline at end of file
+var _0x8fbe=['user','agent','domain','disabled','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','status','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','use','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','activedirectory','baseDN','url','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','online','admin'];(function(_0x4fe8af,_0x565def){var _0x175f53=function(_0x790076){while(--_0x790076){_0x4fe8af['push'](_0x4fe8af['shift']());}};_0x175f53(++_0x565def);}(_0x8fbe,0xd7));var _0xe8fb=function(_0x1ee1f8,_0x521594){_0x1ee1f8=_0x1ee1f8-0x0;var _0x21e756=_0x8fbe[_0x1ee1f8];return _0x21e756;};'use strict';var passport=require(_0xe8fb('0x0'));var LocalStrategy=require(_0xe8fb('0x1'))[_0xe8fb('0x2')];var moment=require(_0xe8fb('0x3'));var ActiveDirectory=require(_0xe8fb('0x4'));var BPromise=require(_0xe8fb('0x5'));var util=require(_0xe8fb('0x6'));var db=require(_0xe8fb('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xe8fb('0x8'));var config=require('../../config/environment');var logger=require('../../config/logger')('api');function isActiveDirectoryConfigured(_0x217923){var _0x238d91=![];if(typeof _0x217923[_0xe8fb('0x9')]!=='undefined'){_0x238d91=_0x217923[_0xe8fb('0x9')][_0xe8fb('0xa')]&&_0x217923['activedirectory'][_0xe8fb('0xb')]&&_0x217923[_0xe8fb('0x9')]['domain'];}return _0x238d91;}function adAuthenticate(_0x31a64c,_0x1ef867,_0x2f8d07){return new BPromise(function(_0x243662,_0x573160){try{var _0x375f3d=new ActiveDirectory(_0x31a64c);_0x375f3d[_0xe8fb('0xc')](_0x1ef867,_0x2f8d07,function(_0x57210c,_0x3db029){if(_0x57210c){logger[_0xe8fb('0xd')](_0xe8fb('0xe'),_0x1ef867,util[_0xe8fb('0xf')](_0x57210c,{'showHidden':![],'depth':null}));_0x573160(_0xe8fb('0x10'));}else if(!_0x3db029){logger[_0xe8fb('0xd')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x1ef867);_0x573160('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x243662(_0x3db029);}});}catch(_0x36bdd0){_0x573160(_0x36bdd0);}});}function ActiveDirectoryAuthenticate(_0x2946b0,_0x1ecc50,_0x3341c2,_0x59d0be){var _0x1d266d,_0x5079b1;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xe8fb('0x11'),_0x1ecc50);return _0x59d0be(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xe8fb('0x12')][_0xe8fb('0x13')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0xe8fb('0x14')],'raw':!![]})[_0xe8fb('0x15')](function(_0x5cfd1d){_0x1d266d=_0x5cfd1d;if(!_0x1d266d[_0xe8fb('0x16')]){logger[_0xe8fb('0xd')](_0xe8fb('0x17'),_0x1ecc50);throw new Error(_0xe8fb('0x10'));}return _0x2946b0[_0xe8fb('0x13')]({'attributes':['id',_0xe8fb('0x18'),_0xe8fb('0x19'),_0xe8fb('0x1a'),_0xe8fb('0x1b'),'disabled','blocked','blockedAt',_0xe8fb('0x1c')],'where':{'name':_0x1ecc50,'role':{'$or':[_0xe8fb('0x1d'),_0xe8fb('0x1e'),_0xe8fb('0x1f')]},'adSsoEnabled':!![]}});})[_0xe8fb('0x15')](function(_0x19fba5){if(!_0x19fba5||_0x19fba5&&_0x19fba5[_0xe8fb('0x18')]!==_0x1ecc50){throw new Error(_0xe8fb('0x10'));}_0x5079b1=_0x19fba5;var _0x17f32f=_0x5079b1['name']+'@'+config[_0xe8fb('0x9')][_0xe8fb('0x20')];return adAuthenticate(config[_0xe8fb('0x9')],_0x17f32f,_0x3341c2);})[_0xe8fb('0x15')](function(_0x48385b){if(_0x5079b1[_0xe8fb('0x21')]){throw new Error(_0xe8fb('0x10'));}if(_0x1d266d[_0xe8fb('0x14')]>0x0){if(_0x5079b1[_0xe8fb('0x22')]){if(moment(_0x5079b1[_0xe8fb('0x23')])[_0xe8fb('0x24')](_0x1d266d[_0xe8fb('0x14')],_0xe8fb('0x25'))>moment()){throw new Error(_0xe8fb('0x10'));}return utils[_0xe8fb('0x26')](_0x5079b1,0x0,![],null)[_0xe8fb('0x15')](function(){return utils[_0xe8fb('0x27')](_0x5079b1);})[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}else{return utils[_0xe8fb('0x27')](_0x5079b1)[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}}else{return utils['getLicense'](_0x5079b1)[_0xe8fb('0x15')](function(){return _0x59d0be(null,_0x5079b1);});}})[_0xe8fb('0x28')](function(_0xdfefd2){return _0x59d0be(null,![],_0xdfefd2);});}function handleError(_0x45df94,_0x49c7a5,_0x15f51f){return _0x45df94[_0xe8fb('0x29')](_0x49c7a5||0x1f4)['send']({'message':_0x15f51f?_0x15f51f[_0xe8fb('0x2a')]||_0x15f51f:''});}exports[_0xe8fb('0x2b')]=function(_0x3a88dd,_0x3305c1,_0x5238f3){passport[_0xe8fb('0xc')](_0xe8fb('0x2c'),function(_0x5a4069,_0x73e836,_0x1752cd){var _0x20ebcc=_0x5a4069||_0x1752cd;if(_0x20ebcc){return handleError(_0x3305c1,0x191,_0x20ebcc);}if(!_0x73e836){return handleError(_0x3305c1,0x194,{'message':_0xe8fb('0x2d')});}else{var _0x2a24c7={'payload':{'id':_0x73e836['id'],'role':_0x73e836[_0xe8fb('0x1b')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x2a24c7)['then'](function(_0x11749c){_0x3305c1[_0xe8fb('0x2e')]({'id':_0x73e836['id'],'token':_0x11749c,'statusCall':'','isAlreadyLogged':_0x73e836[_0xe8fb('0x1c')]});});}})(_0x3a88dd,_0x3305c1,_0x5238f3);};passport[_0xe8fb('0x2f')](_0xe8fb('0x2c'),new LocalStrategy({'usernameField':_0xe8fb('0x18'),'passwordField':_0xe8fb('0x19')},function(_0x35192a,_0x23f1b6,_0x3b441e){return ActiveDirectoryAuthenticate(db[_0xe8fb('0x30')],_0x35192a,_0x23f1b6,_0x3b441e);}));
\ No newline at end of file
index efe0655..fffc51d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd88b=['./authActiveDirectory.controller','login','exports','express'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd88b,0xab));var _0xbd88=function(_0x479726,_0x3c262c){_0x479726=_0x479726-0x0;var _0x336016=_0xd88b[_0x479726];return _0x336016;};'use strict';var express=require(_0xbd88('0x0'));var router=express['Router']();var controller=require(_0xbd88('0x1'));router['post']('/',controller[_0xbd88('0x2')]);module[_0xbd88('0x3')]=router;
\ No newline at end of file
+var _0x6a35=['exports','./authActiveDirectory.controller','post','login'];(function(_0x24a452,_0x326f0a){var _0x586c9e=function(_0x35e9f7){while(--_0x35e9f7){_0x24a452['push'](_0x24a452['shift']());}};_0x586c9e(++_0x326f0a);}(_0x6a35,0x175));var _0x56a3=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x6a35[_0x556927];return _0x5f1235;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x56a3('0x0'));router[_0x56a3('0x1')]('/',controller[_0x56a3('0x2')]);module[_0x56a3('0x3')]=router;
\ No newline at end of file
index 9d0817a..6387d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x7a54,0x106));var _0x47a5=function(_0x37b5f6,_0x41c3b5){_0x37b5f6=_0x37b5f6-0x0;var _0x4e2191=_0x7a54[_0x37b5f6];return _0x4e2191;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x7a54,0x106));var _0x47a5=function(_0x2bd63a,_0xd19a66){_0x2bd63a=_0x2bd63a-0x0;var _0x41b5ba=_0x7a54[_0x2bd63a];return _0x41b5ba;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 6f8cca1..2e6efc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fe9=['express','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback','isMiddleware','login','setTokenCookie','exports'];(function(_0x5d0df2,_0x147d5c){var _0xf9b291=function(_0x34166f){while(--_0x34166f){_0x5d0df2['push'](_0x5d0df2['shift']());}};_0xf9b291(++_0x147d5c);}(_0x5fe9,0x1d6));var _0x95fe=function(_0x2c3311,_0x5ef9e6){_0x2c3311=_0x2c3311-0x0;var _0x4205b6=_0x5fe9[_0x2c3311];return _0x4205b6;};'use strict';var express=require(_0x95fe('0x0'));var passport=require('passport');var router=express['Router']();var controller=require(_0x95fe('0x1'));var userController=require(_0x95fe('0x2'));var authService=require(_0x95fe('0x3'));router['get']('/',controller['login']);router[_0x95fe('0x4')](_0x95fe('0x5'),controller['callback'],authService[_0x95fe('0x6')],userController[_0x95fe('0x7')],authService[_0x95fe('0x8')]);module[_0x95fe('0x9')]=router;
\ No newline at end of file
+var _0xddf6=['get','callback','login','exports','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service'];(function(_0xb582d9,_0x40de97){var _0x3a570e=function(_0x4b3af9){while(--_0x4b3af9){_0xb582d9['push'](_0xb582d9['shift']());}};_0x3a570e(++_0x40de97);}(_0xddf6,0xf7));var _0x6ddf=function(_0x242a3f,_0x276dc3){_0x242a3f=_0x242a3f-0x0;var _0x5854b0=_0xddf6[_0x242a3f];return _0x5854b0;};'use strict';var express=require('express');var passport=require(_0x6ddf('0x0'));var router=express[_0x6ddf('0x1')]();var controller=require(_0x6ddf('0x2'));var userController=require(_0x6ddf('0x3'));var authService=require(_0x6ddf('0x4'));router[_0x6ddf('0x5')]('/',controller['login']);router['get']('/callback',controller[_0x6ddf('0x6')],authService['isMiddleware'],userController[_0x6ddf('0x7')],authService['setTokenCookie']);module[_0x6ddf('0x8')]=router;
\ No newline at end of file
index 265dcaf..4b8d5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8536=['minutes','clearBlockUser','getLicense','catch','MailAccount','find','MailServerOut','Smtp','CloudProvider','merge','\x22%s\x22\x20<%s>','email','user','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','Setting','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','https://','headers','host','status','send','reset','User','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','use','util','passport','passport-local','Strategy','jayson/promise','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','allowedLoginAttempts','blockDuration','then','name','password','role','blocked','blockedAt','loginAttempts','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','add'];(function(_0x5dffed,_0x1c5a24){var _0xe73e8b=function(_0x416f4e){while(--_0x416f4e){_0x5dffed['push'](_0x5dffed['shift']());}};_0xe73e8b(++_0x1c5a24);}(_0x8536,0x1d1));var _0x6853=function(_0x242573,_0x478742){_0x242573=_0x242573-0x0;var _0x2e500d=_0x8536[_0x242573];return _0x2e500d;};'use strict';var util=require(_0x6853('0x0'));var passport=require(_0x6853('0x1'));var LocalStrategy=require(_0x6853('0x2'))[_0x6853('0x3')];var jayson=require(_0x6853('0x4'));var _=require('lodash');var rs=require('randomstring');var moment=require(_0x6853('0x5'));var db=require(_0x6853('0x6'))['db'];var authService=require(_0x6853('0x7'));var utils=require(_0x6853('0x8'));var client=jayson[_0x6853('0x9')][_0x6853('0xa')]({'port':0x232b});function localAuthenticate(_0x27de7b,_0x1c98ca,_0x132ef8,_0x5d5218){var _0x2cef44,_0x23cffe;return db['Setting'][_0x6853('0xb')]({'where':{'id':0x1},'attributes':[_0x6853('0xc'),_0x6853('0xd')],'raw':!![]})[_0x6853('0xe')](function(_0x2ab373){_0x2cef44=_0x2ab373;return _0x27de7b[_0x6853('0xb')]({'attributes':['id',_0x6853('0xf'),_0x6853('0x10'),'salt',_0x6853('0x11'),'disabled',_0x6853('0x12'),_0x6853('0x13'),_0x6853('0x14')],'where':{'name':_0x1c98ca,'role':{'$or':[_0x6853('0x15'),'user',_0x6853('0x16')]}}});})[_0x6853('0xe')](function(_0x59d942){if(!_0x59d942||_0x59d942&&_0x59d942[_0x6853('0xf')]!==_0x1c98ca){throw new Error(_0x6853('0x17'));}else{_0x23cffe=_0x59d942;return _0x23cffe;}})[_0x6853('0xe')](function(){_0x23cffe[_0x6853('0x18')](_0x132ef8,function(_0x732b65,_0x3c621f){var _0x34398c=_0x23cffe['loginAttempts']+0x1;if(_0x732b65){return _0x5d5218(_0x732b65);}else if(!_0x3c621f){if(_0x23cffe[_0x6853('0x19')]){return _0x5d5218(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x2cef44['allowedLoginAttempts']>0x0){if(_0x23cffe[_0x6853('0x12')]){if(_0x2cef44[_0x6853('0xd')]>0x0){if(moment(_0x23cffe[_0x6853('0x13')])[_0x6853('0x1a')](_0x2cef44[_0x6853('0xd')],_0x6853('0x1b'))>moment()){return _0x5d5218(null,![],{'message':_0x6853('0x17')});}else{return utils[_0x6853('0x1c')](_0x23cffe,_0x34398c,![],null)[_0x6853('0xe')](function(){return _0x5d5218(null,![],{'message':_0x6853('0x17')});});}}else{return _0x5d5218(null,![],{'message':_0x6853('0x17')});}}else{if(_0x34398c>=_0x2cef44[_0x6853('0xc')]){return utils[_0x6853('0x1c')](_0x23cffe,0x0,!![],moment())['then'](function(){return _0x5d5218(null,![],{'message':_0x6853('0x17')});});}else{return utils['clearBlockUser'](_0x23cffe,_0x34398c,![],null)[_0x6853('0xe')](function(){return _0x5d5218(null,![],{'message':_0x6853('0x17')});});}}}else{return _0x5d5218(null,![],{'message':_0x6853('0x17')});}}else{if(_0x23cffe[_0x6853('0x19')]){return _0x5d5218(null,![],{'message':_0x6853('0x17')});}else if(_0x2cef44['allowedLoginAttempts']>0x0){if(_0x23cffe[_0x6853('0x12')]){if(_0x2cef44[_0x6853('0xd')]>0x0){if(moment(_0x23cffe[_0x6853('0x13')])[_0x6853('0x1a')](_0x2cef44[_0x6853('0xd')],_0x6853('0x1b'))>moment()){return _0x5d5218(null,![],{'message':_0x6853('0x17')});}else{return utils[_0x6853('0x1c')](_0x23cffe,0x0,![],null)['then'](function(){return utils[_0x6853('0x1d')](_0x23cffe);})[_0x6853('0xe')](function(){return _0x5d5218(null,_0x23cffe);});}}else{return _0x5d5218(null,![],{'message':_0x6853('0x17')});}}else{return utils[_0x6853('0x1c')](_0x23cffe,0x0,![],null)[_0x6853('0xe')](function(){return utils[_0x6853('0x1d')](_0x23cffe);})[_0x6853('0xe')](function(){return _0x5d5218(null,_0x23cffe);})[_0x6853('0x1e')](function(_0x3caeda){return _0x5d5218(null,![],_0x3caeda);});}}else{if(_0x23cffe[_0x6853('0x12')]){return _0x5d5218(null,![],{'message':_0x6853('0x17')});}else{return utils['getLicense'](_0x23cffe)[_0x6853('0xe')](function(){return _0x5d5218(null,_0x23cffe);});}}}});})[_0x6853('0x1e')](function(_0x52941a){return _0x5d5218(null,![],_0x52941a);});}function sendServiceMail(_0x23ac97){return db[_0x6853('0x1f')][_0x6853('0x20')]({'where':{'service':!![]},'attributes':['id',_0x6853('0xf'),'email'],'include':[{'model':db[_0x6853('0x21')],'as':_0x6853('0x22'),'include':[{'model':db[_0x6853('0x23')],'as':_0x6853('0x23')}]}]})[_0x6853('0xe')](function(_0x52d15f){if(!_0x52d15f){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x1bb5a2=_0x52d15f['getSmtpOptions']();var _0x486cd6={'account':_0x1bb5a2,'message':_[_0x6853('0x24')]({'from':util['format'](_0x6853('0x25'),_0x52d15f[_0x6853('0xf')],_0x52d15f[_0x6853('0x26')]||_0x52d15f['Smtp'][_0x6853('0x27')])},_0x23ac97)};return client['request'](_0x6853('0x28'),_0x486cd6);})['then'](function(_0x11dc71){if(_0x11dc71[_0x6853('0x29')]){throw new Error(util['format'](_0x6853('0x2a'),_0x11dc71[_0x6853('0x29')][_0x6853('0x2b')]||JSON[_0x6853('0x2c')](_0x11dc71['error'])));}return!![];});}function handleError(_0xd3851e,_0x24ae45,_0x4bce88){return _0xd3851e['status'](_0x24ae45||0x1f4)['send']({'message':_0x4bce88?_0x4bce88[_0x6853('0x2b')]||_0x4bce88:''});}exports[_0x6853('0x2d')]=function(_0x3d4290,_0x21a3fe,_0x3111bb){passport['authenticate']('local-login',function(_0x2403f0,_0x20dc33,_0x4749bb){var _0xf3296c=_0x2403f0||_0x4749bb;if(_0xf3296c){return handleError(_0x21a3fe,0x191,_0xf3296c);}if(!_0x20dc33){return handleError(_0x21a3fe,0x194,{'message':_0x6853('0x2e')});}else{var _0xb1f52d={'payload':{'id':_0x20dc33['id'],'role':_0x20dc33['role']},'options':{'expiresIn':0x15180}};return authService[_0x6853('0x2f')](_0xb1f52d)['then'](function(_0xe0cc74){_0x21a3fe[_0x6853('0x30')]({'id':_0x20dc33['id'],'token':_0xe0cc74,'statusCall':'','isAlreadyLogged':_0x20dc33[_0x6853('0x31')]});});}})(_0x3d4290,_0x21a3fe,_0x3111bb);};exports[_0x6853('0x32')]=function(_0x21a1f2,_0x422ace){if(!_0x21a1f2[_0x6853('0x33')]['email']){return handleError(_0x422ace,0x1f4,{'message':_0x6853('0x34')});}var _0x5ee655=rs[_0x6853('0x35')]();_0x21a1f2['body'][_0x6853('0x26')]=_0x21a1f2['body'][_0x6853('0x26')][_0x6853('0x36')]()[_0x6853('0x37')]();var _0x1326e1;return db[_0x6853('0x38')][_0x6853('0xb')]({'where':{'id':0x1},'attributes':[_0x6853('0xc'),_0x6853('0xd')],'raw':!![]})[_0x6853('0xe')](function(_0x120056){_0x1326e1=_0x120056;return db['User'][_0x6853('0x20')]({'where':{'email':_0x21a1f2['body'][_0x6853('0x26')]}});})[_0x6853('0xe')](function(_0x4a9018){if(!_0x4a9018){throw new Error(_0x6853('0x39'));}if(_0x4a9018[_0x6853('0x19')]){throw new Error(_0x6853('0x3a'));}if(_0x4a9018['blocked']){if(moment(_0x4a9018[_0x6853('0x13')])[_0x6853('0x1a')](_0x1326e1[_0x6853('0xd')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x4a9018[_0x6853('0x12')]=![];_0x4a9018[_0x6853('0x13')]=null;}}_0x4a9018[_0x6853('0x3b')]=_0x5ee655;_0x4a9018[_0x6853('0x3c')]=Date[_0x6853('0x3d')]()+0x36ee80;return _0x4a9018[_0x6853('0x3e')]();})[_0x6853('0xe')](function(){return sendServiceMail({'to':_0x21a1f2[_0x6853('0x33')]['email'],'subject':_0x6853('0x3f'),'text':_0x6853('0x40')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x6853('0x41')+_0x21a1f2[_0x6853('0x42')][_0x6853('0x43')]+'/reset/'+_0x5ee655+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x6853('0xe')](function(){_0x422ace[_0x6853('0x44')](0xc8)[_0x6853('0x45')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x273c9c){return handleError(_0x422ace,0x1f4,_0x273c9c);});};exports[_0x6853('0x46')]=function(_0xd68f0d,_0x296f2e){return db[_0x6853('0x47')][_0x6853('0x20')]({'where':{'resetPasswordToken':_0xd68f0d[_0x6853('0x48')][_0x6853('0x49')],'resetPasswordExpires':{'$gt':Date[_0x6853('0x3d')]()}}})[_0x6853('0xe')](function(_0x27f8e8){if(!_0x27f8e8){throw new Error(_0x6853('0x4a'));}return db[_0x6853('0x38')][_0x6853('0xb')]({'attributes':['id',_0x6853('0x4b'),_0x6853('0x4c'),'passwordHistoryLimit']})['then'](function(_0x14c027){if(_0x14c027[_0x6853('0x4b')])authService[_0x6853('0x4d')](_0xd68f0d[_0x6853('0x33')][_0x6853('0x10')]);if(!_0x14c027[_0x6853('0x4c')]||!_0x27f8e8[_0x6853('0x4e')])return _0x27f8e8;authService[_0x6853('0x4f')](_0xd68f0d[_0x6853('0x33')][_0x6853('0x10')],_0x27f8e8[_0x6853('0x4e')],_0x14c027[_0x6853('0x50')]);return _0x27f8e8;})[_0x6853('0xe')](function(){_0x27f8e8['password']=_0xd68f0d['body'][_0x6853('0x10')];_0x27f8e8[_0x6853('0x3b')]=null;_0x27f8e8[_0x6853('0x3c')]=null;return _0x27f8e8[_0x6853('0x3e')]();});})[_0x6853('0xe')](function(){_0x296f2e['status'](0xc8)[_0x6853('0x45')]({'message':'Password\x20reset!'});})[_0x6853('0x1e')](function(_0x10e962){return handleError(_0x296f2e,0x1f4,_0x10e962);});};passport[_0x6853('0x51')]('local-login',new LocalStrategy({'usernameField':_0x6853('0xf'),'passwordField':_0x6853('0x10')},function(_0x54ac73,_0x5f221f,_0x18afea){return localAuthenticate(db[_0x6853('0x47')],_0x54ac73,_0x5f221f,_0x18afea);}));
\ No newline at end of file
+var _0x8873=['\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','findOne','User','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','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','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','resetPasswordExpires','use','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','client','Setting','blockDuration','name','password','salt','role','disabled','blocked','blockedAt','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','loginAttempts','allowedLoginAttempts','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','getSmtpOptions','merge','format'];(function(_0x1afced,_0x5030a7){var _0x2a10a6=function(_0x12c90f){while(--_0x12c90f){_0x1afced['push'](_0x1afced['shift']());}};_0x2a10a6(++_0x5030a7);}(_0x8873,0x114));var _0x3887=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0x8873[_0x119b3e];return _0x1169ae;};'use strict';var util=require('util');var passport=require('passport');var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0x3887('0x0'));var _=require(_0x3887('0x1'));var rs=require(_0x3887('0x2'));var moment=require('moment');var db=require(_0x3887('0x3'))['db'];var authService=require(_0x3887('0x4'));var utils=require('../../config/utils');var client=jayson[_0x3887('0x5')]['http']({'port':0x232b});function localAuthenticate(_0x41d4a8,_0x334f31,_0xd01379,_0x305af9){var _0x4f4517,_0x19253b;return db[_0x3887('0x6')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3887('0x7')],'raw':!![]})['then'](function(_0x2ddead){_0x4f4517=_0x2ddead;return _0x41d4a8['findOne']({'attributes':['id',_0x3887('0x8'),_0x3887('0x9'),_0x3887('0xa'),_0x3887('0xb'),_0x3887('0xc'),_0x3887('0xd'),_0x3887('0xe'),'loginAttempts'],'where':{'name':_0x334f31,'role':{'$or':['admin',_0x3887('0xf'),_0x3887('0x10')]}}});})['then'](function(_0x9e2ca0){if(!_0x9e2ca0||_0x9e2ca0&&_0x9e2ca0[_0x3887('0x8')]!==_0x334f31){throw new Error(_0x3887('0x11'));}else{_0x19253b=_0x9e2ca0;return _0x19253b;}})[_0x3887('0x12')](function(){_0x19253b[_0x3887('0x13')](_0xd01379,function(_0x1c8a61,_0x14a399){var _0x27941d=_0x19253b[_0x3887('0x14')]+0x1;if(_0x1c8a61){return _0x305af9(_0x1c8a61);}else if(!_0x14a399){if(_0x19253b[_0x3887('0xc')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else if(_0x4f4517[_0x3887('0x15')]>0x0){if(_0x19253b['blocked']){if(_0x4f4517[_0x3887('0x7')]>0x0){if(moment(_0x19253b['blockedAt'])[_0x3887('0x16')](_0x4f4517[_0x3887('0x7')],_0x3887('0x17'))>moment()){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils[_0x3887('0x18')](_0x19253b,_0x27941d,![],null)['then'](function(){return _0x305af9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{if(_0x27941d>=_0x4f4517[_0x3887('0x15')]){return utils[_0x3887('0x18')](_0x19253b,0x0,!![],moment())[_0x3887('0x12')](function(){return _0x305af9(null,![],{'message':_0x3887('0x11')});});}else{return utils[_0x3887('0x18')](_0x19253b,_0x27941d,![],null)[_0x3887('0x12')](function(){return _0x305af9(null,![],{'message':_0x3887('0x11')});});}}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{if(_0x19253b[_0x3887('0xc')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else if(_0x4f4517[_0x3887('0x15')]>0x0){if(_0x19253b[_0x3887('0xd')]){if(_0x4f4517[_0x3887('0x7')]>0x0){if(moment(_0x19253b['blockedAt'])[_0x3887('0x16')](_0x4f4517[_0x3887('0x7')],_0x3887('0x17'))>moment()){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils['clearBlockUser'](_0x19253b,0x0,![],null)[_0x3887('0x12')](function(){return utils[_0x3887('0x19')](_0x19253b);})[_0x3887('0x12')](function(){return _0x305af9(null,_0x19253b);});}}else{return _0x305af9(null,![],{'message':_0x3887('0x11')});}}else{return utils['clearBlockUser'](_0x19253b,0x0,![],null)[_0x3887('0x12')](function(){return utils[_0x3887('0x19')](_0x19253b);})['then'](function(){return _0x305af9(null,_0x19253b);})[_0x3887('0x1a')](function(_0x3fff76){return _0x305af9(null,![],_0x3fff76);});}}else{if(_0x19253b[_0x3887('0xd')]){return _0x305af9(null,![],{'message':_0x3887('0x11')});}else{return utils['getLicense'](_0x19253b)[_0x3887('0x12')](function(){return _0x305af9(null,_0x19253b);});}}}});})[_0x3887('0x1a')](function(_0x1ea237){return _0x305af9(null,![],_0x1ea237);});}function sendServiceMail(_0x2da507){return db[_0x3887('0x1b')][_0x3887('0x1c')]({'where':{'service':!![]},'attributes':['id','name',_0x3887('0x1d')],'include':[{'model':db[_0x3887('0x1e')],'as':_0x3887('0x1f'),'include':[{'model':db[_0x3887('0x20')],'as':_0x3887('0x20')}]}]})['then'](function(_0x52816c){if(!_0x52816c){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x6dfde1=_0x52816c[_0x3887('0x21')]();var _0xca6a17={'account':_0x6dfde1,'message':_[_0x3887('0x22')]({'from':util[_0x3887('0x23')](_0x3887('0x24'),_0x52816c[_0x3887('0x8')],_0x52816c['email']||_0x52816c[_0x3887('0x1f')]['user'])},_0x2da507)};return client[_0x3887('0x25')](_0x3887('0x26'),_0xca6a17);})[_0x3887('0x12')](function(_0x55e998){if(_0x55e998[_0x3887('0x27')]){throw new Error(util[_0x3887('0x23')](_0x3887('0x28'),_0x55e998[_0x3887('0x27')][_0x3887('0x29')]||JSON[_0x3887('0x2a')](_0x55e998[_0x3887('0x27')])));}return!![];});}function handleError(_0x5e6576,_0x3a09fc,_0x2b3d09){return _0x5e6576[_0x3887('0x2b')](_0x3a09fc||0x1f4)[_0x3887('0x2c')]({'message':_0x2b3d09?_0x2b3d09[_0x3887('0x29')]||_0x2b3d09:''});}exports['login']=function(_0x592b4f,_0x58d29c,_0x65966){passport['authenticate']('local-login',function(_0x4858d7,_0x3729b8,_0xc970e3){var _0x1a19dd=_0x4858d7||_0xc970e3;if(_0x1a19dd){return handleError(_0x58d29c,0x191,_0x1a19dd);}if(!_0x3729b8){return handleError(_0x58d29c,0x194,{'message':_0x3887('0x2d')});}else{var _0x3f48e8={'payload':{'id':_0x3729b8['id'],'role':_0x3729b8[_0x3887('0xb')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x3f48e8)[_0x3887('0x12')](function(_0x1e451b){_0x58d29c[_0x3887('0x2e')]({'id':_0x3729b8['id'],'token':_0x1e451b,'statusCall':'','isAlreadyLogged':_0x3729b8[_0x3887('0x2f')]});});}})(_0x592b4f,_0x58d29c,_0x65966);};exports[_0x3887('0x30')]=function(_0xbd285d,_0x280968){if(!_0xbd285d['body'][_0x3887('0x1d')]){return handleError(_0x280968,0x1f4,{'message':_0x3887('0x31')});}var _0x1b6995=rs[_0x3887('0x32')]();_0xbd285d[_0x3887('0x33')][_0x3887('0x1d')]=_0xbd285d['body'][_0x3887('0x1d')][_0x3887('0x34')]()['toLowerCase']();var _0x32b560;return db[_0x3887('0x6')][_0x3887('0x35')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3887('0x7')],'raw':!![]})['then'](function(_0x498751){_0x32b560=_0x498751;return db[_0x3887('0x36')][_0x3887('0x1c')]({'where':{'email':_0xbd285d[_0x3887('0x33')][_0x3887('0x1d')]}});})[_0x3887('0x12')](function(_0x26022a){if(!_0x26022a){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x26022a[_0x3887('0xc')]){throw new Error(_0x3887('0x37'));}if(_0x26022a['blocked']){if(moment(_0x26022a[_0x3887('0xe')])[_0x3887('0x16')](_0x32b560[_0x3887('0x7')],'minutes')>moment()){throw new Error(_0x3887('0x38'));}else{_0x26022a[_0x3887('0xd')]=![];_0x26022a['blockedAt']=null;}}_0x26022a[_0x3887('0x39')]=_0x1b6995;_0x26022a['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x26022a[_0x3887('0x3a')]();})[_0x3887('0x12')](function(){return sendServiceMail({'to':_0xbd285d['body']['email'],'subject':_0x3887('0x3b'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x3887('0x3c')+'https://'+_0xbd285d[_0x3887('0x3d')][_0x3887('0x3e')]+_0x3887('0x3f')+_0x1b6995+'\x0a\x0a'+_0x3887('0x40')});})[_0x3887('0x12')](function(){_0x280968[_0x3887('0x2b')](0xc8)[_0x3887('0x2c')]({'message':_0x3887('0x41')});})[_0x3887('0x1a')](function(_0x413d91){return handleError(_0x280968,0x1f4,_0x413d91);});};exports[_0x3887('0x42')]=function(_0x34f492,_0x39bf13){return db[_0x3887('0x36')][_0x3887('0x1c')]({'where':{'resetPasswordToken':_0x34f492[_0x3887('0x43')][_0x3887('0x44')],'resetPasswordExpires':{'$gt':Date[_0x3887('0x45')]()}}})['then'](function(_0x17250b){if(!_0x17250b){throw new Error(_0x3887('0x46'));}return db[_0x3887('0x6')][_0x3887('0x35')]({'attributes':['id',_0x3887('0x47'),_0x3887('0x48'),_0x3887('0x49')]})['then'](function(_0x2f61c5){if(_0x2f61c5[_0x3887('0x47')])authService[_0x3887('0x4a')](_0x34f492[_0x3887('0x33')]['password']);if(!_0x2f61c5[_0x3887('0x48')]||!_0x17250b['previousPasswords'])return _0x17250b;authService['validatePasswordHistory'](_0x34f492[_0x3887('0x33')]['password'],_0x17250b[_0x3887('0x4b')],_0x2f61c5['passwordHistoryLimit']);return _0x17250b;})[_0x3887('0x12')](function(){_0x17250b['password']=_0x34f492['body'][_0x3887('0x9')];_0x17250b[_0x3887('0x39')]=null;_0x17250b[_0x3887('0x4c')]=null;return _0x17250b[_0x3887('0x3a')]();});})['then'](function(){_0x39bf13[_0x3887('0x2b')](0xc8)[_0x3887('0x2c')]({'message':'Password\x20reset!'});})[_0x3887('0x1a')](function(_0x22ff55){return handleError(_0x39bf13,0x1f4,_0x22ff55);});};passport[_0x3887('0x4d')]('local-login',new LocalStrategy({'usernameField':_0x3887('0x8'),'passwordField':_0x3887('0x9')},function(_0x21ce2e,_0x452d95,_0xf16bf9){return localAuthenticate(db['User'],_0x21ce2e,_0x452d95,_0xf16bf9);}));
\ No newline at end of file
index a8445ca..78e3390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a19=['post','login','/forgot','forgot','reset','exports','express','Router','./authLocal.controller'];(function(_0x8697,_0x85c015){var _0x36f90b=function(_0x349aa0){while(--_0x349aa0){_0x8697['push'](_0x8697['shift']());}};_0x36f90b(++_0x85c015);}(_0x8a19,0xcc));var _0x98a1=function(_0x11c219,_0x40b861){_0x11c219=_0x11c219-0x0;var _0x38d681=_0x8a19[_0x11c219];return _0x38d681;};'use strict';var express=require(_0x98a1('0x0'));var router=express[_0x98a1('0x1')]();var controller=require(_0x98a1('0x2'));router[_0x98a1('0x3')]('/',controller[_0x98a1('0x4')]);router[_0x98a1('0x3')](_0x98a1('0x5'),controller[_0x98a1('0x6')]);router['post']('/reset/:token',controller[_0x98a1('0x7')]);module[_0x98a1('0x8')]=router;
\ No newline at end of file
+var _0xb342=['post','forgot','/reset/:token','exports','express','Router','./authLocal.controller'];(function(_0x317f76,_0x2ddebf){var _0x2847d7=function(_0x564894){while(--_0x564894){_0x317f76['push'](_0x317f76['shift']());}};_0x2847d7(++_0x2ddebf);}(_0xb342,0x17e));var _0x2b34=function(_0x28d138,_0x21196d){_0x28d138=_0x28d138-0x0;var _0x4beedb=_0xb342[_0x28d138];return _0x4beedb;};'use strict';var express=require(_0x2b34('0x0'));var router=express[_0x2b34('0x1')]();var controller=require(_0x2b34('0x2'));router[_0x2b34('0x3')]('/',controller['login']);router[_0x2b34('0x3')]('/forgot',controller[_0x2b34('0x4')]);router['post'](_0x2b34('0x5'),controller['reset']);module[_0x2b34('0x6')]=router;
\ No newline at end of file
index d78515b..5d53ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3212=['BOOLEAN','INTEGER','exports','STRING'];(function(_0xd7ad1c,_0x1eae0a){var _0x52cdb0=function(_0x2b314a){while(--_0x2b314a){_0xd7ad1c['push'](_0xd7ad1c['shift']());}};_0x52cdb0(++_0x1eae0a);}(_0x3212,0x14e));var _0x2321=function(_0x51d1fb,_0x3e4db5){_0x51d1fb=_0x51d1fb-0x0;var _0x2e292b=_0x3212[_0x51d1fb];return _0x2e292b;};'use strict';var Sequelize=require('sequelize');module[_0x2321('0x0')]={'name':{'type':Sequelize[_0x2321('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x2321('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x2321('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x2321('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x53c9=['STRING','BOOLEAN','INTEGER'];(function(_0x1f4528,_0x1571f7){var _0x15ec4c=function(_0x360679){while(--_0x360679){_0x1f4528['push'](_0x1f4528['shift']());}};_0x15ec4c(++_0x1571f7);}(_0x53c9,0x1c8));var _0x953c=function(_0x4d79bc,_0x32c905){_0x4d79bc=_0x4d79bc-0x0;var _0x4b4760=_0x53c9[_0x4d79bc];return _0x4b4760;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x953c('0x0')],'allowNull':![]},'channel':{'type':Sequelize[_0x953c('0x0')]},'description':{'type':Sequelize[_0x953c('0x0')]},'status':{'type':Sequelize[_0x953c('0x1')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x953c('0x2')],'defaultValue':0xa}};
\ No newline at end of file
index de8d5f6..ab8fb9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3d=['includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','addConditions','Condition','ids','findOne','getConditions','Action','addActions','omit','getActions','order','hasOwnProperty','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','Automation','rawAttributes','type','key','query','keys','filters','intersection','attributes','fields','model','nolimit','sort','where','pick','merge','filter','options','count'];(function(_0x16b13d,_0x2faf09){var _0x1f1e77=function(_0x2c4d2a){while(--_0x2c4d2a){_0x16b13d['push'](_0x16b13d['shift']());}};_0x1f1e77(++_0x2faf09);}(_0xcd3d,0x6b));var _0xdcd3=function(_0x3a0edf,_0x84d62f){_0x3a0edf=_0x3a0edf-0x0;var _0x4862dd=_0xcd3d[_0x3a0edf];return _0x4862dd;};'use strict';var emlformat=require(_0xdcd3('0x0'));var rimraf=require(_0xdcd3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdcd3('0x2'));var rp=require(_0xdcd3('0x3'));var moment=require(_0xdcd3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdcd3('0x5'));var util=require('util');var path=require(_0xdcd3('0x6'));var sox=require(_0xdcd3('0x7'));var csv=require(_0xdcd3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdcd3('0x9'));var _=require(_0xdcd3('0xa'));var squel=require(_0xdcd3('0xb'));var crypto=require(_0xdcd3('0xc'));var jsforce=require(_0xdcd3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdcd3('0x8'));var querystring=require(_0xdcd3('0xe'));var Papa=require(_0xdcd3('0xf'));var Redis=require('ioredis');var authService=require(_0xdcd3('0x10'));var qs=require(_0xdcd3('0x11'));var as=require(_0xdcd3('0x12'));var hardwareService=require(_0xdcd3('0x13'));var logger=require(_0xdcd3('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xdcd3('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdcd3('0x16'))['db'];function respondWithStatusCode(_0x19eb29,_0x3585fb){_0x3585fb=_0x3585fb||0xcc;return function(_0x21a47e){if(_0x21a47e){return _0x19eb29[_0xdcd3('0x17')](_0x3585fb);}return _0x19eb29[_0xdcd3('0x18')](_0x3585fb)[_0xdcd3('0x19')]();};}function respondWithResult(_0xd44beb,_0x45f619){_0x45f619=_0x45f619||0xc8;return function(_0x530163){if(_0x530163){return _0xd44beb['status'](_0x45f619)[_0xdcd3('0x1a')](_0x530163);}};}function respondWithFilteredResult(_0x4e44a0,_0x5e0e2d){return function(_0x4f1a2d){if(_0x4f1a2d){var _0x3cd7e2=typeof _0x5e0e2d[_0xdcd3('0x1b')]===_0xdcd3('0x1c')&&typeof _0x5e0e2d[_0xdcd3('0x1d')]===_0xdcd3('0x1c');var _0x5a90b3=_0x4f1a2d['count'];var _0xb74ca6=_0x3cd7e2?0x0:_0x5e0e2d[_0xdcd3('0x1b')];var _0x545f=_0x3cd7e2?_0x4f1a2d['count']:_0x5e0e2d['offset']+_0x5e0e2d['limit'];var _0x1aae09;if(_0x545f>=_0x5a90b3){_0x545f=_0x5a90b3;_0x1aae09=0xc8;}else{_0x1aae09=0xce;}_0x4e44a0['status'](_0x1aae09);return _0x4e44a0[_0xdcd3('0x1e')](_0xdcd3('0x1f'),_0xb74ca6+'-'+_0x545f+'/'+_0x5a90b3)['json'](_0x4f1a2d);}return null;};}function patchUpdates(_0x5ba93e){return function(_0x3e9d7c){try{jsonpatch[_0xdcd3('0x20')](_0x3e9d7c,_0x5ba93e,!![]);}catch(_0x318be2){return BPromise[_0xdcd3('0x21')](_0x318be2);}return _0x3e9d7c[_0xdcd3('0x22')]();};}function saveUpdates(_0x1b5ed2,_0x553456){return function(_0x3797bc){if(_0x3797bc){return _0x3797bc[_0xdcd3('0x23')](_0x1b5ed2)[_0xdcd3('0x24')](function(_0x33d5b9){return _0x33d5b9;});}return null;};}function removeEntity(_0xd7b695,_0x43c459){return function(_0x1674d9){if(_0x1674d9){return _0x1674d9['destroy']()[_0xdcd3('0x24')](function(){_0xd7b695[_0xdcd3('0x18')](0xcc)[_0xdcd3('0x19')]();});}};}function handleEntityNotFound(_0x1337d8,_0x2837bc){return function(_0x1247a0){if(!_0x1247a0){_0x1337d8[_0xdcd3('0x17')](0x194);}return _0x1247a0;};}function handleError(_0x5b307d,_0x270382){_0x270382=_0x270382||0x1f4;return function(_0x873678){logger[_0xdcd3('0x25')](_0x873678[_0xdcd3('0x26')]);if(_0x873678[_0xdcd3('0x27')]){delete _0x873678[_0xdcd3('0x27')];}_0x5b307d['status'](_0x270382)['send'](_0x873678);};}exports[_0xdcd3('0x28')]=function(_0x1a1d9e,_0x4e5d87){var _0x5a15de={},_0x44d259={},_0x473586={'count':0x0,'rows':[]};var _0x444968=_[_0xdcd3('0x29')](db[_0xdcd3('0x2a')][_0xdcd3('0x2b')],function(_0x2069ff){return{'name':_0x2069ff['fieldName'],'type':_0x2069ff[_0xdcd3('0x2c')][_0xdcd3('0x2d')]};});_0x44d259['model']=_[_0xdcd3('0x29')](_0x444968,_0xdcd3('0x27'));_0x44d259[_0xdcd3('0x2e')]=_[_0xdcd3('0x2f')](_0x1a1d9e[_0xdcd3('0x2e')]);_0x44d259[_0xdcd3('0x30')]=_[_0xdcd3('0x31')](_0x44d259['model'],_0x44d259[_0xdcd3('0x2e')]);_0x5a15de[_0xdcd3('0x32')]=_['intersection'](_0x44d259['model'],qs['fields'](_0x1a1d9e['query'][_0xdcd3('0x33')]));_0x5a15de['attributes']=_0x5a15de[_0xdcd3('0x32')]['length']?_0x5a15de[_0xdcd3('0x32')]:_0x44d259[_0xdcd3('0x34')];if(!_0x1a1d9e[_0xdcd3('0x2e')]['hasOwnProperty'](_0xdcd3('0x35'))){_0x5a15de[_0xdcd3('0x1d')]=qs[_0xdcd3('0x1d')](_0x1a1d9e['query'][_0xdcd3('0x1d')]);_0x5a15de[_0xdcd3('0x1b')]=qs[_0xdcd3('0x1b')](_0x1a1d9e['query'][_0xdcd3('0x1b')]);}_0x5a15de['order']=qs[_0xdcd3('0x36')](_0x1a1d9e['query'][_0xdcd3('0x36')]);_0x5a15de[_0xdcd3('0x37')]=qs['filters'](_[_0xdcd3('0x38')](_0x1a1d9e['query'],_0x44d259[_0xdcd3('0x30')]),_0x444968);if(_0x1a1d9e['query']['filter']){_0x5a15de[_0xdcd3('0x37')]=_[_0xdcd3('0x39')](_0x5a15de[_0xdcd3('0x37')],{'$or':_[_0xdcd3('0x29')](_0x444968,function(_0x57e505){if(_0x57e505[_0xdcd3('0x2c')]!=='VIRTUAL'){var _0x5b6811={};_0x5b6811[_0x57e505[_0xdcd3('0x27')]]={'$like':'%'+_0x1a1d9e[_0xdcd3('0x2e')][_0xdcd3('0x3a')]+'%'};return _0x5b6811;}})});}_0x5a15de=_[_0xdcd3('0x39')]({},_0x5a15de,_0x1a1d9e[_0xdcd3('0x3b')]);var _0x470a7f={'where':_0x5a15de[_0xdcd3('0x37')]};return db[_0xdcd3('0x2a')][_0xdcd3('0x3c')](_0x470a7f)[_0xdcd3('0x24')](function(_0x42cb6){_0x473586[_0xdcd3('0x3c')]=_0x42cb6;if(_0x1a1d9e[_0xdcd3('0x2e')][_0xdcd3('0x3d')]){_0x5a15de[_0xdcd3('0x3e')]=[{'all':!![]}];}return db[_0xdcd3('0x2a')][_0xdcd3('0x3f')](_0x5a15de);})[_0xdcd3('0x24')](function(_0xe01110){_0x473586[_0xdcd3('0x40')]=_0xe01110;return _0x473586;})['then'](respondWithFilteredResult(_0x4e5d87,_0x5a15de))[_0xdcd3('0x41')](handleError(_0x4e5d87,null));};exports[_0xdcd3('0x42')]=function(_0x411ede,_0x487520){var _0x2894d4={'raw':![],'where':{'id':_0x411ede[_0xdcd3('0x43')]['id']}},_0xafb7a7={};_0xafb7a7[_0xdcd3('0x34')]=_['keys'](db['Automation'][_0xdcd3('0x2b')]);_0xafb7a7[_0xdcd3('0x2e')]=_[_0xdcd3('0x2f')](_0x411ede[_0xdcd3('0x2e')]);_0xafb7a7['filters']=_[_0xdcd3('0x31')](_0xafb7a7['model'],_0xafb7a7['query']);_0x2894d4['attributes']=_[_0xdcd3('0x31')](_0xafb7a7[_0xdcd3('0x34')],qs[_0xdcd3('0x33')](_0x411ede[_0xdcd3('0x2e')][_0xdcd3('0x33')]));_0x2894d4['attributes']=_0x2894d4[_0xdcd3('0x32')][_0xdcd3('0x44')]?_0x2894d4[_0xdcd3('0x32')]:_0xafb7a7[_0xdcd3('0x34')];if(_0x411ede[_0xdcd3('0x2e')]['includeAll']){_0x2894d4[_0xdcd3('0x3e')]=[{'all':!![]}];}_0x2894d4=_[_0xdcd3('0x39')]({},_0x2894d4,_0x411ede[_0xdcd3('0x3b')]);return db['Automation'][_0xdcd3('0x45')](_0x2894d4)[_0xdcd3('0x24')](handleEntityNotFound(_0x487520,null))[_0xdcd3('0x24')](respondWithResult(_0x487520,null))[_0xdcd3('0x41')](handleError(_0x487520,null));};exports[_0xdcd3('0x46')]=function(_0xc218b,_0x527ca7){return db[_0xdcd3('0x2a')][_0xdcd3('0x46')](_0xc218b[_0xdcd3('0x47')],{})[_0xdcd3('0x24')](respondWithResult(_0x527ca7,0xc9))[_0xdcd3('0x41')](handleError(_0x527ca7,null));};exports['update']=function(_0x3514c3,_0x369b63){if(_0x3514c3[_0xdcd3('0x47')]['id']){delete _0x3514c3[_0xdcd3('0x47')]['id'];}return db['Automation'][_0xdcd3('0x45')]({'where':{'id':_0x3514c3[_0xdcd3('0x43')]['id']}})[_0xdcd3('0x24')](handleEntityNotFound(_0x369b63,null))[_0xdcd3('0x24')](saveUpdates(_0x3514c3[_0xdcd3('0x47')],null))[_0xdcd3('0x24')](respondWithResult(_0x369b63,null))[_0xdcd3('0x41')](handleError(_0x369b63,null));};exports[_0xdcd3('0x48')]=function(_0x447ffb,_0x1cbb2b){return db[_0xdcd3('0x2a')][_0xdcd3('0x45')]({'where':{'id':_0x447ffb[_0xdcd3('0x43')]['id']}})[_0xdcd3('0x24')](handleEntityNotFound(_0x1cbb2b,null))[_0xdcd3('0x24')](removeEntity(_0x1cbb2b,null))[_0xdcd3('0x41')](handleError(_0x1cbb2b,null));};exports[_0xdcd3('0x49')]=function(_0x815acc,_0x47c225,_0x5813f6){return db[_0xdcd3('0x4a')][_0xdcd3('0x45')]({'where':{'id':_0x815acc[_0xdcd3('0x43')]['id']}})[_0xdcd3('0x24')](handleEntityNotFound(_0x47c225,null))[_0xdcd3('0x24')](function(_0x88793f){if(_0x88793f){return _0x88793f['addConditions'](_0x815acc[_0xdcd3('0x47')][_0xdcd3('0x4b')],_['omit'](_0x815acc[_0xdcd3('0x47')],[_0xdcd3('0x4b'),'id'])||{});}})[_0xdcd3('0x24')](respondWithResult(_0x47c225,null))[_0xdcd3('0x41')](handleError(_0x47c225,null));};exports['getConditions']=function(_0x33a658,_0x1bdbad,_0x48eba0){var _0x43485e={};var _0x14f9a1={};var _0x14132b;var _0x141ecf;return db[_0xdcd3('0x2a')][_0xdcd3('0x4c')]({'where':{'id':_0x33a658['params']['id']}})[_0xdcd3('0x24')](handleEntityNotFound(_0x1bdbad,null))['then'](function(_0x4254eb){if(_0x4254eb){_0x14132b=_0x4254eb;_0x14f9a1[_0xdcd3('0x34')]=_['keys'](db[_0xdcd3('0x4a')][_0xdcd3('0x2b')]);_0x14f9a1['query']=_[_0xdcd3('0x2f')](_0x33a658[_0xdcd3('0x2e')]);_0x14f9a1[_0xdcd3('0x30')]=_['intersection'](_0x14f9a1[_0xdcd3('0x34')],_0x14f9a1[_0xdcd3('0x2e')]);_0x43485e[_0xdcd3('0x32')]=_[_0xdcd3('0x31')](_0x14f9a1[_0xdcd3('0x34')],qs['fields'](_0x33a658['query'][_0xdcd3('0x33')]));_0x43485e[_0xdcd3('0x32')]=_0x43485e[_0xdcd3('0x32')][_0xdcd3('0x44')]?_0x43485e['attributes']:_0x14f9a1[_0xdcd3('0x34')];_0x43485e['order']=qs['sort'](_0x33a658['query']['sort']);_0x43485e['where']=qs[_0xdcd3('0x30')](_[_0xdcd3('0x38')](_0x33a658[_0xdcd3('0x2e')],_0x14f9a1[_0xdcd3('0x30')]));if(_0x33a658[_0xdcd3('0x2e')][_0xdcd3('0x3a')]){_0x43485e[_0xdcd3('0x37')]=_[_0xdcd3('0x39')](_0x43485e[_0xdcd3('0x37')],{'$or':_[_0xdcd3('0x29')](_0x43485e[_0xdcd3('0x32')],function(_0x41adaa){var _0x442a18={};_0x442a18[_0x41adaa]={'$like':'%'+_0x33a658[_0xdcd3('0x2e')][_0xdcd3('0x3a')]+'%'};return _0x442a18;})});}_0x43485e=_[_0xdcd3('0x39')]({},_0x43485e,_0x33a658[_0xdcd3('0x3b')]);return _0x14132b[_0xdcd3('0x4d')](_0x43485e);}})[_0xdcd3('0x24')](function(_0x457e24){if(_0x457e24){_0x141ecf=_0x457e24['length'];if(!_0x33a658[_0xdcd3('0x2e')]['hasOwnProperty'](_0xdcd3('0x35'))){_0x43485e[_0xdcd3('0x1d')]=qs[_0xdcd3('0x1d')](_0x33a658['query'][_0xdcd3('0x1d')]);_0x43485e[_0xdcd3('0x1b')]=qs[_0xdcd3('0x1b')](_0x33a658['query'][_0xdcd3('0x1b')]);}return _0x14132b[_0xdcd3('0x4d')](_0x43485e);}})[_0xdcd3('0x24')](function(_0x4e763c){if(_0x4e763c){return _0x4e763c?{'count':_0x141ecf,'rows':_0x4e763c}:null;}})[_0xdcd3('0x24')](respondWithResult(_0x1bdbad,null))[_0xdcd3('0x41')](handleError(_0x1bdbad,null));};exports['addActions']=function(_0x21c7e0,_0x12b17b,_0x3d71df){return db[_0xdcd3('0x4e')][_0xdcd3('0x45')]({'where':{'id':_0x21c7e0[_0xdcd3('0x43')]['id']}})[_0xdcd3('0x24')](handleEntityNotFound(_0x12b17b,null))['then'](function(_0x57cbe2){if(_0x57cbe2){return _0x57cbe2[_0xdcd3('0x4f')](_0x21c7e0[_0xdcd3('0x47')]['ids'],_[_0xdcd3('0x50')](_0x21c7e0['body'],[_0xdcd3('0x4b'),'id'])||{});}})[_0xdcd3('0x24')](respondWithResult(_0x12b17b,null))[_0xdcd3('0x41')](handleError(_0x12b17b,null));};exports[_0xdcd3('0x51')]=function(_0x57039f,_0x40aa74,_0x3e2444){var _0xce5ab1={};var _0x1eb220={};var _0x261eed;var _0x3d0906;return db[_0xdcd3('0x2a')]['findOne']({'where':{'id':_0x57039f[_0xdcd3('0x43')]['id']}})['then'](handleEntityNotFound(_0x40aa74,null))[_0xdcd3('0x24')](function(_0xa55a45){if(_0xa55a45){_0x261eed=_0xa55a45;_0x1eb220[_0xdcd3('0x34')]=_[_0xdcd3('0x2f')](db[_0xdcd3('0x4e')][_0xdcd3('0x2b')]);_0x1eb220[_0xdcd3('0x2e')]=_[_0xdcd3('0x2f')](_0x57039f[_0xdcd3('0x2e')]);_0x1eb220['filters']=_['intersection'](_0x1eb220['model'],_0x1eb220[_0xdcd3('0x2e')]);_0xce5ab1[_0xdcd3('0x32')]=_[_0xdcd3('0x31')](_0x1eb220[_0xdcd3('0x34')],qs[_0xdcd3('0x33')](_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x33')]));_0xce5ab1[_0xdcd3('0x32')]=_0xce5ab1[_0xdcd3('0x32')][_0xdcd3('0x44')]?_0xce5ab1[_0xdcd3('0x32')]:_0x1eb220[_0xdcd3('0x34')];_0xce5ab1[_0xdcd3('0x52')]=qs[_0xdcd3('0x36')](_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x36')]);_0xce5ab1[_0xdcd3('0x37')]=qs[_0xdcd3('0x30')](_[_0xdcd3('0x38')](_0x57039f[_0xdcd3('0x2e')],_0x1eb220['filters']));if(_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x3a')]){_0xce5ab1['where']=_[_0xdcd3('0x39')](_0xce5ab1[_0xdcd3('0x37')],{'$or':_[_0xdcd3('0x29')](_0xce5ab1[_0xdcd3('0x32')],function(_0xdf225e){var _0x2d5c14={};_0x2d5c14[_0xdf225e]={'$like':'%'+_0x57039f[_0xdcd3('0x2e')]['filter']+'%'};return _0x2d5c14;})});}_0xce5ab1=_[_0xdcd3('0x39')]({},_0xce5ab1,_0x57039f['options']);return _0x261eed[_0xdcd3('0x51')](_0xce5ab1);}})[_0xdcd3('0x24')](function(_0x3f401c){if(_0x3f401c){_0x3d0906=_0x3f401c['length'];if(!_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x53')](_0xdcd3('0x35'))){_0xce5ab1['limit']=qs['limit'](_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x1d')]);_0xce5ab1[_0xdcd3('0x1b')]=qs['offset'](_0x57039f[_0xdcd3('0x2e')][_0xdcd3('0x1b')]);}return _0x261eed[_0xdcd3('0x51')](_0xce5ab1);}})[_0xdcd3('0x24')](function(_0xffccd6){if(_0xffccd6){return _0xffccd6?{'count':_0x3d0906,'rows':_0xffccd6}:null;}})[_0xdcd3('0x24')](respondWithResult(_0x40aa74,null))[_0xdcd3('0x41')](handleError(_0x40aa74,null));};
\ No newline at end of file
+var _0x1f7e=['mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','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','count','limit','set','Content-Range','reject','update','then','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','Automation','include','findAll','rows','params','fields','includeAll','options','find','catch','create','body','destroy','Condition','ids','omit','findOne','length','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x4584f1,_0x566d68){var _0x34fe53=function(_0x19244e){while(--_0x19244e){_0x4584f1['push'](_0x4584f1['shift']());}};_0x34fe53(++_0x566d68);}(_0x1f7e,0xf0));var _0xe1f7=function(_0x3376f4,_0xc1a3ac){_0x3376f4=_0x3376f4-0x0;var _0x14f8be=_0x1f7e[_0x3376f4];return _0x14f8be;};'use strict';var emlformat=require(_0xe1f7('0x0'));var rimraf=require(_0xe1f7('0x1'));var zipdir=require(_0xe1f7('0x2'));var jsonpatch=require(_0xe1f7('0x3'));var rp=require('request-promise');var moment=require(_0xe1f7('0x4'));var BPromise=require(_0xe1f7('0x5'));var Mustache=require(_0xe1f7('0x6'));var util=require(_0xe1f7('0x7'));var path=require('path');var sox=require(_0xe1f7('0x8'));var csv=require(_0xe1f7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe1f7('0xa'));var _=require(_0xe1f7('0xb'));var squel=require(_0xe1f7('0xc'));var crypto=require(_0xe1f7('0xd'));var jsforce=require(_0xe1f7('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe1f7('0xf'));var authService=require(_0xe1f7('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe1f7('0x11'));var hardwareService=require(_0xe1f7('0x12'));var logger=require(_0xe1f7('0x13'))(_0xe1f7('0x14'));var utils=require(_0xe1f7('0x15'));var config=require(_0xe1f7('0x16'));var licenseUtil=require(_0xe1f7('0x17'));var db=require(_0xe1f7('0x18'))['db'];function respondWithStatusCode(_0x249f48,_0x28c79b){_0x28c79b=_0x28c79b||0xcc;return function(_0x2d44a0){if(_0x2d44a0){return _0x249f48['sendStatus'](_0x28c79b);}return _0x249f48[_0xe1f7('0x19')](_0x28c79b)[_0xe1f7('0x1a')]();};}function respondWithResult(_0x473f61,_0x1e3522){_0x1e3522=_0x1e3522||0xc8;return function(_0x18b97f){if(_0x18b97f){return _0x473f61[_0xe1f7('0x19')](_0x1e3522)[_0xe1f7('0x1b')](_0x18b97f);}};}function respondWithFilteredResult(_0x44f07f,_0x313b89){return function(_0x24330d){if(_0x24330d){var _0x1bc606=typeof _0x313b89[_0xe1f7('0x1c')]==='undefined'&&typeof _0x313b89['limit']==='undefined';var _0x4ad7fb=_0x24330d['count'];var _0x9ce1e6=_0x1bc606?0x0:_0x313b89[_0xe1f7('0x1c')];var _0x1bbe23=_0x1bc606?_0x24330d[_0xe1f7('0x1d')]:_0x313b89[_0xe1f7('0x1c')]+_0x313b89[_0xe1f7('0x1e')];var _0x2655c7;if(_0x1bbe23>=_0x4ad7fb){_0x1bbe23=_0x4ad7fb;_0x2655c7=0xc8;}else{_0x2655c7=0xce;}_0x44f07f[_0xe1f7('0x19')](_0x2655c7);return _0x44f07f[_0xe1f7('0x1f')](_0xe1f7('0x20'),_0x9ce1e6+'-'+_0x1bbe23+'/'+_0x4ad7fb)[_0xe1f7('0x1b')](_0x24330d);}return null;};}function patchUpdates(_0xcdfaf2){return function(_0x24bf00){try{jsonpatch['apply'](_0x24bf00,_0xcdfaf2,!![]);}catch(_0x43c878){return BPromise[_0xe1f7('0x21')](_0x43c878);}return _0x24bf00['save']();};}function saveUpdates(_0x195516,_0x4fc577){return function(_0x70e8f1){if(_0x70e8f1){return _0x70e8f1[_0xe1f7('0x22')](_0x195516)[_0xe1f7('0x23')](function(_0xb3df8b){return _0xb3df8b;});}return null;};}function removeEntity(_0x3bbc5d,_0x8ceb0d){return function(_0x1a52a3){if(_0x1a52a3){return _0x1a52a3['destroy']()[_0xe1f7('0x23')](function(){_0x3bbc5d['status'](0xcc)[_0xe1f7('0x1a')]();});}};}function handleEntityNotFound(_0x2efbe2,_0x317905){return function(_0x3cec11){if(!_0x3cec11){_0x2efbe2[_0xe1f7('0x24')](0x194);}return _0x3cec11;};}function handleError(_0x2ad39f,_0x4ffaed){_0x4ffaed=_0x4ffaed||0x1f4;return function(_0x65d2cc){logger[_0xe1f7('0x25')](_0x65d2cc[_0xe1f7('0x26')]);if(_0x65d2cc[_0xe1f7('0x27')]){delete _0x65d2cc[_0xe1f7('0x27')];}_0x2ad39f[_0xe1f7('0x19')](_0x4ffaed)[_0xe1f7('0x28')](_0x65d2cc);};}exports[_0xe1f7('0x29')]=function(_0x3a5e5d,_0x3e14c2){var _0x2e30b8={},_0x39d004={},_0x34b8f5={'count':0x0,'rows':[]};var _0x2b5c12=_['map'](db['Automation'][_0xe1f7('0x2a')],function(_0x53f605){return{'name':_0x53f605[_0xe1f7('0x2b')],'type':_0x53f605[_0xe1f7('0x2c')]['key']};});_0x39d004[_0xe1f7('0x2d')]=_[_0xe1f7('0x2e')](_0x2b5c12,'name');_0x39d004[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x3a5e5d[_0xe1f7('0x2f')]);_0x39d004[_0xe1f7('0x31')]=_['intersection'](_0x39d004[_0xe1f7('0x2d')],_0x39d004[_0xe1f7('0x2f')]);_0x2e30b8[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x39d004['model'],qs['fields'](_0x3a5e5d[_0xe1f7('0x2f')]['fields']));_0x2e30b8['attributes']=_0x2e30b8[_0xe1f7('0x32')]['length']?_0x2e30b8['attributes']:_0x39d004[_0xe1f7('0x2d')];if(!_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x34')](_0xe1f7('0x35'))){_0x2e30b8['limit']=qs[_0xe1f7('0x1e')](_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x1e')]);_0x2e30b8['offset']=qs[_0xe1f7('0x1c')](_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x1c')]);}_0x2e30b8[_0xe1f7('0x36')]=qs[_0xe1f7('0x37')](_0x3a5e5d[_0xe1f7('0x2f')]['sort']);_0x2e30b8[_0xe1f7('0x38')]=qs['filters'](_[_0xe1f7('0x39')](_0x3a5e5d[_0xe1f7('0x2f')],_0x39d004[_0xe1f7('0x31')]),_0x2b5c12);if(_0x3a5e5d[_0xe1f7('0x2f')]['filter']){_0x2e30b8['where']=_[_0xe1f7('0x3a')](_0x2e30b8[_0xe1f7('0x38')],{'$or':_['map'](_0x2b5c12,function(_0x41aff3){if(_0x41aff3[_0xe1f7('0x2c')]!=='VIRTUAL'){var _0x3b1f0b={};_0x3b1f0b[_0x41aff3[_0xe1f7('0x27')]]={'$like':'%'+_0x3a5e5d[_0xe1f7('0x2f')][_0xe1f7('0x3b')]+'%'};return _0x3b1f0b;}})});}_0x2e30b8=_[_0xe1f7('0x3a')]({},_0x2e30b8,_0x3a5e5d['options']);var _0x168c47={'where':_0x2e30b8['where']};return db[_0xe1f7('0x3c')][_0xe1f7('0x1d')](_0x168c47)['then'](function(_0x21e184){_0x34b8f5[_0xe1f7('0x1d')]=_0x21e184;if(_0x3a5e5d['query']['includeAll']){_0x2e30b8[_0xe1f7('0x3d')]=[{'all':!![]}];}return db[_0xe1f7('0x3c')][_0xe1f7('0x3e')](_0x2e30b8);})['then'](function(_0x405fd1){_0x34b8f5[_0xe1f7('0x3f')]=_0x405fd1;return _0x34b8f5;})[_0xe1f7('0x23')](respondWithFilteredResult(_0x3e14c2,_0x2e30b8))['catch'](handleError(_0x3e14c2,null));};exports['show']=function(_0x531cbc,_0x353351){var _0x3aa408={'raw':![],'where':{'id':_0x531cbc[_0xe1f7('0x40')]['id']}},_0x14350b={};_0x14350b[_0xe1f7('0x2d')]=_[_0xe1f7('0x30')](db[_0xe1f7('0x3c')]['rawAttributes']);_0x14350b['query']=_['keys'](_0x531cbc[_0xe1f7('0x2f')]);_0x14350b[_0xe1f7('0x31')]=_[_0xe1f7('0x33')](_0x14350b[_0xe1f7('0x2d')],_0x14350b['query']);_0x3aa408['attributes']=_[_0xe1f7('0x33')](_0x14350b[_0xe1f7('0x2d')],qs[_0xe1f7('0x41')](_0x531cbc[_0xe1f7('0x2f')][_0xe1f7('0x41')]));_0x3aa408[_0xe1f7('0x32')]=_0x3aa408['attributes']['length']?_0x3aa408['attributes']:_0x14350b[_0xe1f7('0x2d')];if(_0x531cbc[_0xe1f7('0x2f')][_0xe1f7('0x42')]){_0x3aa408[_0xe1f7('0x3d')]=[{'all':!![]}];}_0x3aa408=_[_0xe1f7('0x3a')]({},_0x3aa408,_0x531cbc[_0xe1f7('0x43')]);return db[_0xe1f7('0x3c')][_0xe1f7('0x44')](_0x3aa408)[_0xe1f7('0x23')](handleEntityNotFound(_0x353351,null))[_0xe1f7('0x23')](respondWithResult(_0x353351,null))[_0xe1f7('0x45')](handleError(_0x353351,null));};exports[_0xe1f7('0x46')]=function(_0x4941f4,_0x589bdf){return db[_0xe1f7('0x3c')]['create'](_0x4941f4[_0xe1f7('0x47')],{})[_0xe1f7('0x23')](respondWithResult(_0x589bdf,0xc9))[_0xe1f7('0x45')](handleError(_0x589bdf,null));};exports['update']=function(_0x3893b8,_0x4866ab){if(_0x3893b8[_0xe1f7('0x47')]['id']){delete _0x3893b8['body']['id'];}return db[_0xe1f7('0x3c')][_0xe1f7('0x44')]({'where':{'id':_0x3893b8[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x4866ab,null))[_0xe1f7('0x23')](saveUpdates(_0x3893b8[_0xe1f7('0x47')],null))[_0xe1f7('0x23')](respondWithResult(_0x4866ab,null))[_0xe1f7('0x45')](handleError(_0x4866ab,null));};exports[_0xe1f7('0x48')]=function(_0x24957e,_0x1c00bc){return db[_0xe1f7('0x3c')][_0xe1f7('0x44')]({'where':{'id':_0x24957e[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x1c00bc,null))[_0xe1f7('0x23')](removeEntity(_0x1c00bc,null))[_0xe1f7('0x45')](handleError(_0x1c00bc,null));};exports['addConditions']=function(_0x1b5be1,_0x138419,_0x2bf0a9){return db[_0xe1f7('0x49')][_0xe1f7('0x44')]({'where':{'id':_0x1b5be1[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x138419,null))[_0xe1f7('0x23')](function(_0x167a1b){if(_0x167a1b){return _0x167a1b['addConditions'](_0x1b5be1[_0xe1f7('0x47')][_0xe1f7('0x4a')],_[_0xe1f7('0x4b')](_0x1b5be1[_0xe1f7('0x47')],['ids','id'])||{});}})[_0xe1f7('0x23')](respondWithResult(_0x138419,null))[_0xe1f7('0x45')](handleError(_0x138419,null));};exports['getConditions']=function(_0x8fa95b,_0x2ff2ed,_0x550c54){var _0x37fb63={};var _0x389f4c={};var _0xab8890;var _0x2e583d;return db[_0xe1f7('0x3c')][_0xe1f7('0x4c')]({'where':{'id':_0x8fa95b[_0xe1f7('0x40')]['id']}})['then'](handleEntityNotFound(_0x2ff2ed,null))['then'](function(_0x45c869){if(_0x45c869){_0xab8890=_0x45c869;_0x389f4c[_0xe1f7('0x2d')]=_[_0xe1f7('0x30')](db['Condition']['rawAttributes']);_0x389f4c[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x8fa95b[_0xe1f7('0x2f')]);_0x389f4c['filters']=_[_0xe1f7('0x33')](_0x389f4c[_0xe1f7('0x2d')],_0x389f4c[_0xe1f7('0x2f')]);_0x37fb63[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x389f4c[_0xe1f7('0x2d')],qs[_0xe1f7('0x41')](_0x8fa95b[_0xe1f7('0x2f')]['fields']));_0x37fb63[_0xe1f7('0x32')]=_0x37fb63[_0xe1f7('0x32')][_0xe1f7('0x4d')]?_0x37fb63[_0xe1f7('0x32')]:_0x389f4c[_0xe1f7('0x2d')];_0x37fb63['order']=qs['sort'](_0x8fa95b[_0xe1f7('0x2f')]['sort']);_0x37fb63[_0xe1f7('0x38')]=qs['filters'](_[_0xe1f7('0x39')](_0x8fa95b[_0xe1f7('0x2f')],_0x389f4c['filters']));if(_0x8fa95b[_0xe1f7('0x2f')]['filter']){_0x37fb63[_0xe1f7('0x38')]=_['merge'](_0x37fb63[_0xe1f7('0x38')],{'$or':_['map'](_0x37fb63['attributes'],function(_0x4094ad){var _0x4bca67={};_0x4bca67[_0x4094ad]={'$like':'%'+_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x3b')]+'%'};return _0x4bca67;})});}_0x37fb63=_[_0xe1f7('0x3a')]({},_0x37fb63,_0x8fa95b[_0xe1f7('0x43')]);return _0xab8890[_0xe1f7('0x4e')](_0x37fb63);}})[_0xe1f7('0x23')](function(_0x56cb97){if(_0x56cb97){_0x2e583d=_0x56cb97[_0xe1f7('0x4d')];if(!_0x8fa95b['query'][_0xe1f7('0x34')](_0xe1f7('0x35'))){_0x37fb63['limit']=qs[_0xe1f7('0x1e')](_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x1e')]);_0x37fb63['offset']=qs[_0xe1f7('0x1c')](_0x8fa95b[_0xe1f7('0x2f')][_0xe1f7('0x1c')]);}return _0xab8890['getConditions'](_0x37fb63);}})[_0xe1f7('0x23')](function(_0x6f3cd6){if(_0x6f3cd6){return _0x6f3cd6?{'count':_0x2e583d,'rows':_0x6f3cd6}:null;}})[_0xe1f7('0x23')](respondWithResult(_0x2ff2ed,null))[_0xe1f7('0x45')](handleError(_0x2ff2ed,null));};exports[_0xe1f7('0x4f')]=function(_0x42e422,_0x49a142,_0x46603b){return db[_0xe1f7('0x50')][_0xe1f7('0x44')]({'where':{'id':_0x42e422['params']['id']}})[_0xe1f7('0x23')](handleEntityNotFound(_0x49a142,null))[_0xe1f7('0x23')](function(_0x13e22d){if(_0x13e22d){return _0x13e22d[_0xe1f7('0x4f')](_0x42e422[_0xe1f7('0x47')][_0xe1f7('0x4a')],_[_0xe1f7('0x4b')](_0x42e422[_0xe1f7('0x47')],[_0xe1f7('0x4a'),'id'])||{});}})[_0xe1f7('0x23')](respondWithResult(_0x49a142,null))[_0xe1f7('0x45')](handleError(_0x49a142,null));};exports[_0xe1f7('0x51')]=function(_0x5721fa,_0x2c1ee5,_0x53e758){var _0x45dbec={};var _0x546e2b={};var _0x2eee05;var _0x5416d4;return db[_0xe1f7('0x3c')][_0xe1f7('0x4c')]({'where':{'id':_0x5721fa[_0xe1f7('0x40')]['id']}})[_0xe1f7('0x23')](handleEntityNotFound(_0x2c1ee5,null))[_0xe1f7('0x23')](function(_0x3edb79){if(_0x3edb79){_0x2eee05=_0x3edb79;_0x546e2b[_0xe1f7('0x2d')]=_['keys'](db[_0xe1f7('0x50')][_0xe1f7('0x2a')]);_0x546e2b[_0xe1f7('0x2f')]=_[_0xe1f7('0x30')](_0x5721fa[_0xe1f7('0x2f')]);_0x546e2b[_0xe1f7('0x31')]=_['intersection'](_0x546e2b[_0xe1f7('0x2d')],_0x546e2b[_0xe1f7('0x2f')]);_0x45dbec[_0xe1f7('0x32')]=_[_0xe1f7('0x33')](_0x546e2b[_0xe1f7('0x2d')],qs['fields'](_0x5721fa['query']['fields']));_0x45dbec['attributes']=_0x45dbec[_0xe1f7('0x32')][_0xe1f7('0x4d')]?_0x45dbec[_0xe1f7('0x32')]:_0x546e2b[_0xe1f7('0x2d')];_0x45dbec[_0xe1f7('0x36')]=qs[_0xe1f7('0x37')](_0x5721fa[_0xe1f7('0x2f')][_0xe1f7('0x37')]);_0x45dbec[_0xe1f7('0x38')]=qs[_0xe1f7('0x31')](_['pick'](_0x5721fa['query'],_0x546e2b[_0xe1f7('0x31')]));if(_0x5721fa['query']['filter']){_0x45dbec[_0xe1f7('0x38')]=_[_0xe1f7('0x3a')](_0x45dbec[_0xe1f7('0x38')],{'$or':_['map'](_0x45dbec[_0xe1f7('0x32')],function(_0x302a65){var _0x185abe={};_0x185abe[_0x302a65]={'$like':'%'+_0x5721fa[_0xe1f7('0x2f')]['filter']+'%'};return _0x185abe;})});}_0x45dbec=_[_0xe1f7('0x3a')]({},_0x45dbec,_0x5721fa[_0xe1f7('0x43')]);return _0x2eee05[_0xe1f7('0x51')](_0x45dbec);}})['then'](function(_0x4e04e9){if(_0x4e04e9){_0x5416d4=_0x4e04e9['length'];if(!_0x5721fa[_0xe1f7('0x2f')]['hasOwnProperty']('nolimit')){_0x45dbec[_0xe1f7('0x1e')]=qs[_0xe1f7('0x1e')](_0x5721fa['query'][_0xe1f7('0x1e')]);_0x45dbec['offset']=qs['offset'](_0x5721fa['query'][_0xe1f7('0x1c')]);}return _0x2eee05[_0xe1f7('0x51')](_0x45dbec);}})[_0xe1f7('0x23')](function(_0x4add32){if(_0x4add32){return _0x4add32?{'count':_0x5416d4,'rows':_0x4add32}:null;}})['then'](respondWithResult(_0x2c1ee5,null))['catch'](handleError(_0x2c1ee5,null));};
\ No newline at end of file
index 37977b3..16ab586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50de=['lodash','util','api','bluebird','rimraf','../../config/environment','./automation.attributes','define','Automation','tools_automations'];(function(_0x32bb89,_0x1a4c8f){var _0x95c5f5=function(_0xc92e61){while(--_0xc92e61){_0x32bb89['push'](_0x32bb89['shift']());}};_0x95c5f5(++_0x1a4c8f);}(_0x50de,0x17c));var _0xe50d=function(_0x56b138,_0x2396d6){_0x56b138=_0x56b138-0x0;var _0x3df878=_0x50de[_0x56b138];return _0x3df878;};'use strict';var _=require(_0xe50d('0x0'));var util=require(_0xe50d('0x1'));var logger=require('../../config/logger')(_0xe50d('0x2'));var moment=require('moment');var BPromise=require(_0xe50d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe50d('0x4'));var config=require(_0xe50d('0x5'));var attributes=require(_0xe50d('0x6'));module['exports']=function(_0x3aca39,_0x41e79c){return _0x3aca39[_0xe50d('0x7')](_0xe50d('0x8'),attributes,{'tableName':_0xe50d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81c9=['./automation.attributes','define','Automation','tools_automations','lodash','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x325ba7,_0x68f81){var _0x6e8de5=function(_0x17d957){while(--_0x17d957){_0x325ba7['push'](_0x325ba7['shift']());}};_0x6e8de5(++_0x68f81);}(_0x81c9,0x164));var _0x981c=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x81c9[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x981c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x981c('0x1'));var moment=require(_0x981c('0x2'));var BPromise=require(_0x981c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x981c('0x4'));var rimraf=require(_0x981c('0x5'));var config=require(_0x981c('0x6'));var attributes=require(_0x981c('0x7'));module['exports']=function(_0x4c3239,_0x4b4499){return _0x4c3239[_0x981c('0x8')](_0x981c('0x9'),attributes,{'tableName':_0x981c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb62cef..6ef9980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['jayson/promise','client','http','request','then','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','stringify','error','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc'];(function(_0x27b9a7,_0x215ec2){var _0x3c38dd=function(_0x54fc99){while(--_0x54fc99){_0x27b9a7['push'](_0x27b9a7['shift']());}};_0x3c38dd(++_0x215ec2);}(_0xcf66,0x71));var _0x6cf6=function(_0x2c418a,_0x8d1486){_0x2c418a=_0x2c418a-0x0;var _0x54ca21=_0xcf66[_0x2c418a];return _0x54ca21;};'use strict';var _=require(_0x6cf6('0x0'));var util=require(_0x6cf6('0x1'));var moment=require(_0x6cf6('0x2'));var BPromise=require('bluebird');var rs=require(_0x6cf6('0x3'));var fs=require('fs');var Redis=require(_0x6cf6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6cf6('0x5'))(_0x6cf6('0x6'));var config=require('../../config/environment');var jayson=require(_0x6cf6('0x7'));var client=jayson[_0x6cf6('0x8')][_0x6cf6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5eb082,_0x94c6a9,_0x308d0d){return new BPromise(function(_0x36b892,_0x748c93){return client[_0x6cf6('0xa')](_0x5eb082,_0x308d0d)[_0x6cf6('0xb')](function(_0x5b3827){logger['info']('Automation,\x20%s,\x20%s',_0x94c6a9,_0x6cf6('0xc'));logger['debug'](_0x6cf6('0xd'),_0x94c6a9,_0x6cf6('0xc'),JSON[_0x6cf6('0xe')](_0x5b3827));if(_0x5b3827[_0x6cf6('0xf')]){if(_0x5b3827['error']['code']===0x1f4){logger['error'](_0x6cf6('0x10'),_0x94c6a9,_0x5b3827[_0x6cf6('0xf')][_0x6cf6('0x11')]);return _0x748c93(_0x5b3827[_0x6cf6('0xf')][_0x6cf6('0x11')]);}logger[_0x6cf6('0xf')]('Automation,\x20%s,\x20%s',_0x94c6a9,_0x5b3827[_0x6cf6('0xf')]['message']);return _0x36b892(_0x5b3827[_0x6cf6('0xf')][_0x6cf6('0x11')]);}else{logger['info'](_0x6cf6('0x10'),_0x94c6a9,_0x6cf6('0xc'));_0x36b892(_0x5b3827[_0x6cf6('0x12')][_0x6cf6('0x11')]);}})[_0x6cf6('0x13')](function(_0x2bdb12){logger[_0x6cf6('0xf')](_0x6cf6('0x10'),_0x94c6a9,_0x2bdb12);_0x748c93(_0x2bdb12);});});}
\ No newline at end of file
+var _0xdacc=['Automation,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent'];(function(_0x20fc96,_0x181164){var _0x548f8f=function(_0x5c727e){while(--_0x5c727e){_0x20fc96['push'](_0x20fc96['shift']());}};_0x548f8f(++_0x181164);}(_0xdacc,0x14f));var _0xcdac=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdacc[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xcdac('0x0'));var moment=require(_0xcdac('0x1'));var BPromise=require(_0xcdac('0x2'));var rs=require(_0xcdac('0x3'));var fs=require('fs');var Redis=require(_0xcdac('0x4'));var db=require(_0xcdac('0x5'))['db'];var utils=require(_0xcdac('0x6'));var logger=require('../../config/logger')(_0xcdac('0x7'));var config=require(_0xcdac('0x8'));var jayson=require(_0xcdac('0x9'));var client=jayson[_0xcdac('0xa')][_0xcdac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a10a1,_0x20a66e,_0x46ad29){return new BPromise(function(_0xe906b8,_0x213c05){return client[_0xcdac('0xc')](_0x2a10a1,_0x46ad29)[_0xcdac('0xd')](function(_0x33c4af){logger[_0xcdac('0xe')](_0xcdac('0xf'),_0x20a66e,_0xcdac('0x10'));logger['debug'](_0xcdac('0x11'),_0x20a66e,_0xcdac('0x10'),JSON['stringify'](_0x33c4af));if(_0x33c4af[_0xcdac('0x12')]){if(_0x33c4af[_0xcdac('0x12')][_0xcdac('0x13')]===0x1f4){logger[_0xcdac('0x12')](_0xcdac('0xf'),_0x20a66e,_0x33c4af['error']['message']);return _0x213c05(_0x33c4af[_0xcdac('0x12')]['message']);}logger[_0xcdac('0x12')]('Automation,\x20%s,\x20%s',_0x20a66e,_0x33c4af['error'][_0xcdac('0x14')]);return _0xe906b8(_0x33c4af[_0xcdac('0x12')][_0xcdac('0x14')]);}else{logger[_0xcdac('0xe')](_0xcdac('0xf'),_0x20a66e,_0xcdac('0x10'));_0xe906b8(_0x33c4af['result'][_0xcdac('0x14')]);}})[_0xcdac('0x15')](function(_0x542a27){logger[_0xcdac('0x12')](_0xcdac('0xf'),_0x20a66e,_0x542a27);_0x213c05(_0x542a27);});});}
\ No newline at end of file
index f6ae60e..9d1250e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed95=['isAuthenticated','show','/:id/conditions','/:id/actions','getActions','create','post','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','/:id'];(function(_0x5380f3,_0x202695){var _0x3b1d15=function(_0x4dc2e6){while(--_0x4dc2e6){_0x5380f3['push'](_0x5380f3['shift']());}};_0x3b1d15(++_0x202695);}(_0xed95,0xb9));var _0x5ed9=function(_0x17b94f,_0x1c971e){_0x17b94f=_0x17b94f-0x0;var _0x5ec4da=_0xed95[_0x17b94f];return _0x5ec4da;};'use strict';var multer=require(_0x5ed9('0x0'));var util=require(_0x5ed9('0x1'));var path=require(_0x5ed9('0x2'));var timeout=require(_0x5ed9('0x3'));var express=require(_0x5ed9('0x4'));var router=express[_0x5ed9('0x5')]();var fs_extra=require(_0x5ed9('0x6'));var auth=require(_0x5ed9('0x7'));var interaction=require(_0x5ed9('0x8'));var config=require(_0x5ed9('0x9'));var controller=require(_0x5ed9('0xa'));router[_0x5ed9('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5ed9('0xb')](_0x5ed9('0xc'),auth[_0x5ed9('0xd')](),controller[_0x5ed9('0xe')]);router[_0x5ed9('0xb')](_0x5ed9('0xf'),auth['isAuthenticated'](),controller['getConditions']);router[_0x5ed9('0xb')](_0x5ed9('0x10'),auth[_0x5ed9('0xd')](),controller[_0x5ed9('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5ed9('0x12')]);router[_0x5ed9('0x13')](_0x5ed9('0xf'),auth[_0x5ed9('0xd')](),controller['addConditions']);router[_0x5ed9('0x13')](_0x5ed9('0x10'),auth[_0x5ed9('0xd')](),controller['addActions']);router['put'](_0x5ed9('0xc'),auth[_0x5ed9('0xd')](),controller['update']);router[_0x5ed9('0x14')](_0x5ed9('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x5ed9('0x15')]=router;
\ No newline at end of file
+var _0xac8d=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/actions','getActions','post','create','/:id/conditions','addConditions','put','update','delete','exports','multer','util','path'];(function(_0x4ad6bc,_0x52025a){var _0x318739=function(_0x3a5b38){while(--_0x3a5b38){_0x4ad6bc['push'](_0x4ad6bc['shift']());}};_0x318739(++_0x52025a);}(_0xac8d,0x1d8));var _0xdac8=function(_0x5f265e,_0x5f29c3){_0x5f265e=_0x5f265e-0x0;var _0x197592=_0xac8d[_0x5f265e];return _0x197592;};'use strict';var multer=require(_0xdac8('0x0'));var util=require(_0xdac8('0x1'));var path=require(_0xdac8('0x2'));var timeout=require(_0xdac8('0x3'));var express=require(_0xdac8('0x4'));var router=express[_0xdac8('0x5')]();var fs_extra=require(_0xdac8('0x6'));var auth=require(_0xdac8('0x7'));var interaction=require(_0xdac8('0x8'));var config=require('../../config/environment');var controller=require(_0xdac8('0x9'));router[_0xdac8('0xa')]('/',auth[_0xdac8('0xb')](),controller[_0xdac8('0xc')]);router[_0xdac8('0xa')](_0xdac8('0xd'),auth[_0xdac8('0xb')](),controller[_0xdac8('0xe')]);router[_0xdac8('0xa')]('/:id/conditions',auth[_0xdac8('0xb')](),controller['getConditions']);router[_0xdac8('0xa')](_0xdac8('0xf'),auth[_0xdac8('0xb')](),controller[_0xdac8('0x10')]);router[_0xdac8('0x11')]('/',auth['isAuthenticated'](),controller[_0xdac8('0x12')]);router['post'](_0xdac8('0x13'),auth[_0xdac8('0xb')](),controller[_0xdac8('0x14')]);router['post'](_0xdac8('0xf'),auth['isAuthenticated'](),controller['addActions']);router[_0xdac8('0x15')]('/:id',auth[_0xdac8('0xb')](),controller[_0xdac8('0x16')]);router[_0xdac8('0x17')](_0xdac8('0xd'),auth[_0xdac8('0xb')](),controller['destroy']);module[_0xdac8('0x18')]=router;
\ No newline at end of file
index f0c6f53..470881c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ef=['#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','ivr','STRING','BOOLEAN','UNSIGNED','Max\x20200\x20calls.','INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','ASC','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x4a219c,_0x429ecc){var _0x14fd85=function(_0x125ed8){while(--_0x125ed8){_0x4a219c['push'](_0x4a219c['shift']());}};_0x14fd85(++_0x429ecc);}(_0x95ef,0x12a));var _0xf95e=function(_0x2e2b2c,_0x3fe3eb){_0x2e2b2c=_0x2e2b2c-0x0;var _0x2ac80a=_0x95ef[_0x2e2b2c];return _0x2ac80a;};'use strict';var Sequelize=require(_0xf95e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0xf95e('0x1')},'description':{'type':Sequelize[_0xf95e('0x2')]},'active':{'type':Sequelize[_0xf95e('0x3')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xf95e('0x4')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf95e('0x5')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf95e('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf95e('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xf95e('0x6')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xf95e('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x7')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf95e('0x4')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x8')},'dialBusyMaxRetry':{'type':Sequelize[_0xf95e('0x6')](0x3)[_0xf95e('0x4')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x9')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf95e('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0xa')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf95e('0x4')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0xb')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf95e('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf95e('0xc')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xf95e('0xd')},'dialCheckDuplicateType':{'type':Sequelize[_0xf95e('0xe')]('always','never',_0xf95e('0xf')),'defaultValue':_0xf95e('0x10')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf95e('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0xf95e('0x6')](0x9)[_0xf95e('0x4')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf95e('0x12')},'dialAMDGreeting':{'type':Sequelize[_0xf95e('0x6')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf95e('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xf95e('0x4')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf95e('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf95e('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xf95e('0x6')](0x9)[_0xf95e('0x4')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf95e('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf95e('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf95e('0x6')](0x9)[_0xf95e('0x4')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf95e('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf95e('0x6')](0x5)[_0xf95e('0x4')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf95e('0x6')](0x9)[_0xf95e('0x4')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf95e('0x18')},'dialOrderByScheduledAt':{'type':Sequelize[_0xf95e('0xe')]('DESC',_0xf95e('0x19')),'defaultValue':_0xf95e('0x1a')},'dialPrefix':{'type':Sequelize[_0xf95e('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf95e('0x6')](0x3)[_0xf95e('0x4')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xf95e('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf95e('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf95e('0x4')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x1c')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf95e('0x4')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x1d')},'dialDropRetryFrequency':{'type':Sequelize[_0xf95e('0x6')](0x5)[_0xf95e('0x4')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf95e('0x6')](0x3)[_0xf95e('0x4')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x1f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf95e('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x20')},'dialMachineMaxRetry':{'type':Sequelize[_0xf95e('0x6')](0x3)[_0xf95e('0x4')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf95e('0x6')](0x5)[_0xf95e('0x4')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf95e('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf95e('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf95e('0x24')}};
\ No newline at end of file
+var _0xd64b=['Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','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)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','always'];(function(_0x38a05d,_0x2f59e9){var _0x2b5be8=function(_0x4a2c9f){while(--_0x4a2c9f){_0x38a05d['push'](_0x38a05d['shift']());}};_0x2b5be8(++_0x2f59e9);}(_0xd64b,0x18f));var _0xbd64=function(_0x8957ed,_0x1b1553){_0x8957ed=_0x8957ed-0x0;var _0xcc833a=_0xd64b[_0x8957ed];return _0xcc833a;};'use strict';var Sequelize=require(_0xbd64('0x0'));module[_0xbd64('0x1')]={'name':{'type':Sequelize[_0xbd64('0x2')],'unique':_0xbd64('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xbd64('0x6')],'defaultValue':0x0,'comment':_0xbd64('0x7')},'limitCalls':{'type':Sequelize[_0xbd64('0x8')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xbd64('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xbd64('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xbd64('0x8')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'comment':_0xbd64('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0xf')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x10'),'never','onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xbd64('0x6')],'defaultValue':0x0,'comment':_0xbd64('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xbd64('0x12')},'dialAMDGreeting':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xbd64('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbd64('0x14')},'dialAMDMinWordLength':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xbd64('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xbd64('0x8')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xbd64('0x8')](0x9)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xbd64('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xbd64('0xa')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbd64('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0xbd64('0x4')](_0xbd64('0x18'),_0xbd64('0x19')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x1a')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1b')},'dialDropMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1c')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1d')},'dialMachineMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbd64('0x1e')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbd64('0x1f')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xbd64('0x8')](0x3)[_0xbd64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xbd64('0x8')](0x5)[_0xbd64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index 0710fae..a81a38e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9cc=['insert','cm_hopper','phone','ContactId','ListId','select','field','NOW()','CmListId','toString','from','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','scheduledAt','cm_contacts','into','fromQuery','cmHopperId','OrderBy','h.id','cm_contact_has_items','h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','h.createdAt\x20=\x20?','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','ListId\x20=\x20?','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','IvrCampaigns','UserProfileResource','destroy','error','stack','name','index','map','Campaign','rawAttributes','fieldName','key','model','keys','query','attributes','intersection','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','params','filters','length','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','options','omit','updatedAt','createdAt','getHoppers','findOne','CmHopper','findAll','getHopperHistories','hasOwnProperty','order','CampaignId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xd9cc,0x1e1));var _0xcd9c=function(_0x3f4e03,_0x1699bc){_0x3f4e03=_0x3f4e03-0x0;var _0x11f84f=_0xd9cc[_0x3f4e03];return _0x11f84f;};'use strict';var emlformat=require(_0xcd9c('0x0'));var rimraf=require(_0xcd9c('0x1'));var zipdir=require(_0xcd9c('0x2'));var jsonpatch=require(_0xcd9c('0x3'));var rp=require(_0xcd9c('0x4'));var moment=require('moment');var BPromise=require(_0xcd9c('0x5'));var Mustache=require(_0xcd9c('0x6'));var util=require(_0xcd9c('0x7'));var path=require('path');var sox=require(_0xcd9c('0x8'));var csv=require(_0xcd9c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcd9c('0xa'));var _=require(_0xcd9c('0xb'));var squel=require(_0xcd9c('0xc'));var crypto=require(_0xcd9c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xcd9c('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcd9c('0xf'));var Papa=require(_0xcd9c('0x10'));var Redis=require(_0xcd9c('0x11'));var authService=require(_0xcd9c('0x12'));var qs=require(_0xcd9c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xcd9c('0x14'))(_0xcd9c('0x15'));var utils=require(_0xcd9c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcd9c('0x17'));var db=require(_0xcd9c('0x18'))['db'];function respondWithStatusCode(_0x29063e,_0x55ec76){_0x55ec76=_0x55ec76||0xcc;return function(_0x4195a2){if(_0x4195a2){return _0x29063e[_0xcd9c('0x19')](_0x55ec76);}return _0x29063e[_0xcd9c('0x1a')](_0x55ec76)[_0xcd9c('0x1b')]();};}function respondWithResult(_0x35b637,_0x580d15){_0x580d15=_0x580d15||0xc8;return function(_0x539905){if(_0x539905){return _0x35b637[_0xcd9c('0x1a')](_0x580d15)[_0xcd9c('0x1c')](_0x539905);}};}function respondWithFilteredResult(_0x24053f,_0x315543){return function(_0x2d7b1a){if(_0x2d7b1a){var _0x714eb2=typeof _0x315543[_0xcd9c('0x1d')]===_0xcd9c('0x1e')&&typeof _0x315543[_0xcd9c('0x1f')]===_0xcd9c('0x1e');var _0x247b35=_0x2d7b1a['count'];var _0x2d418f=_0x714eb2?0x0:_0x315543['offset'];var _0x227df9=_0x714eb2?_0x2d7b1a[_0xcd9c('0x20')]:_0x315543[_0xcd9c('0x1d')]+_0x315543[_0xcd9c('0x1f')];var _0x578006;if(_0x227df9>=_0x247b35){_0x227df9=_0x247b35;_0x578006=0xc8;}else{_0x578006=0xce;}_0x24053f[_0xcd9c('0x1a')](_0x578006);return _0x24053f[_0xcd9c('0x21')](_0xcd9c('0x22'),_0x2d418f+'-'+_0x227df9+'/'+_0x247b35)[_0xcd9c('0x1c')](_0x2d7b1a);}return null;};}function patchUpdates(_0x1cccbe){return function(_0x9f11f7){try{jsonpatch[_0xcd9c('0x23')](_0x9f11f7,_0x1cccbe,!![]);}catch(_0x35e585){return BPromise[_0xcd9c('0x24')](_0x35e585);}return _0x9f11f7[_0xcd9c('0x25')]();};}function saveUpdates(_0x1bd598,_0x954c03){return function(_0x230399){if(_0x230399){return _0x230399[_0xcd9c('0x26')](_0x1bd598)[_0xcd9c('0x27')](function(_0x34eb32){return _0x34eb32;});}return null;};}function removeEntity(_0x544466,_0x6f3a40){return function(_0x12cf9d){if(_0x12cf9d){return _0x12cf9d['destroy']()[_0xcd9c('0x27')](function(){var _0x125067=_0x12cf9d[_0xcd9c('0x28')]({'plain':!![]});var _0x34b6d6=_0xcd9c('0x29');return db[_0xcd9c('0x2a')][_0xcd9c('0x2b')]({'where':{'type':_0x34b6d6,'resourceId':_0x125067['id']}})[_0xcd9c('0x27')](function(){return _0x12cf9d;});})['then'](function(){_0x544466[_0xcd9c('0x1a')](0xcc)[_0xcd9c('0x1b')]();});}};}function handleEntityNotFound(_0x4ddd6a,_0x3a3494){return function(_0x464a31){if(!_0x464a31){_0x4ddd6a[_0xcd9c('0x19')](0x194);}return _0x464a31;};}function handleError(_0x5b95bf,_0x5a7262){_0x5a7262=_0x5a7262||0x1f4;return function(_0x1463f5){logger[_0xcd9c('0x2c')](_0x1463f5[_0xcd9c('0x2d')]);if(_0x1463f5[_0xcd9c('0x2e')]){delete _0x1463f5[_0xcd9c('0x2e')];}_0x5b95bf[_0xcd9c('0x1a')](_0x5a7262)['send'](_0x1463f5);};}exports[_0xcd9c('0x2f')]=function(_0xaf2617,_0x5ae8b1){var _0x3172b4={},_0x510c2f={},_0x546b84={'count':0x0,'rows':[]};var _0x59092c=_[_0xcd9c('0x30')](db[_0xcd9c('0x31')][_0xcd9c('0x32')],function(_0x4cfb28){return{'name':_0x4cfb28[_0xcd9c('0x33')],'type':_0x4cfb28['type'][_0xcd9c('0x34')]};});_0x510c2f[_0xcd9c('0x35')]=_['map'](_0x59092c,_0xcd9c('0x2e'));_0x510c2f['query']=_[_0xcd9c('0x36')](_0xaf2617[_0xcd9c('0x37')]);_0x510c2f['filters']=_['intersection'](_0x510c2f[_0xcd9c('0x35')],_0x510c2f[_0xcd9c('0x37')]);_0x3172b4[_0xcd9c('0x38')]=_[_0xcd9c('0x39')](_0x510c2f[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0xaf2617[_0xcd9c('0x37')][_0xcd9c('0x3a')]));_0x3172b4[_0xcd9c('0x38')]=_0x3172b4['attributes']['length']?_0x3172b4[_0xcd9c('0x38')]:_0x510c2f[_0xcd9c('0x35')];if(!_0xaf2617[_0xcd9c('0x37')]['hasOwnProperty'](_0xcd9c('0x3b'))){_0x3172b4[_0xcd9c('0x1f')]=qs['limit'](_0xaf2617[_0xcd9c('0x37')]['limit']);_0x3172b4[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0xaf2617['query'][_0xcd9c('0x1d')]);}_0x3172b4['order']=qs[_0xcd9c('0x3c')](_0xaf2617['query'][_0xcd9c('0x3c')]);_0x3172b4[_0xcd9c('0x3d')]=qs['filters'](_[_0xcd9c('0x3e')](_0xaf2617[_0xcd9c('0x37')],_0x510c2f['filters']),_0x59092c);if(_0xaf2617[_0xcd9c('0x37')][_0xcd9c('0x3f')]){_0x3172b4[_0xcd9c('0x3d')]=_[_0xcd9c('0x40')](_0x3172b4[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x59092c,function(_0x3ea3dd){if(_0x3ea3dd['type']!==_0xcd9c('0x41')){var _0x32faf3={};_0x32faf3[_0x3ea3dd[_0xcd9c('0x2e')]]={'$like':'%'+_0xaf2617['query'][_0xcd9c('0x3f')]+'%'};return _0x32faf3;}})});}_0x3172b4=_['merge']({},_0x3172b4,_0xaf2617['options']);var _0x26a30e={'where':_0x3172b4[_0xcd9c('0x3d')]};return db[_0xcd9c('0x31')][_0xcd9c('0x20')](_0x26a30e)[_0xcd9c('0x27')](function(_0x1fac68){_0x546b84['count']=_0x1fac68;if(_0xaf2617['query'][_0xcd9c('0x42')]){_0x3172b4[_0xcd9c('0x43')]=[{'all':!![]}];}return db[_0xcd9c('0x31')]['findAll'](_0x3172b4);})['then'](function(_0x587678){_0x546b84[_0xcd9c('0x44')]=_0x587678;return _0x546b84;})[_0xcd9c('0x27')](respondWithFilteredResult(_0x5ae8b1,_0x3172b4))['catch'](handleError(_0x5ae8b1,null));};exports[_0xcd9c('0x45')]=function(_0x115e79,_0x49ae57){var _0x886d12={'raw':![],'where':{'id':_0x115e79[_0xcd9c('0x46')]['id']}},_0x26fc0b={};_0x26fc0b[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db['Campaign']['rawAttributes']);_0x26fc0b[_0xcd9c('0x37')]=_[_0xcd9c('0x36')](_0x115e79[_0xcd9c('0x37')]);_0x26fc0b[_0xcd9c('0x47')]=_[_0xcd9c('0x39')](_0x26fc0b['model'],_0x26fc0b[_0xcd9c('0x37')]);_0x886d12[_0xcd9c('0x38')]=_[_0xcd9c('0x39')](_0x26fc0b[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x115e79[_0xcd9c('0x37')][_0xcd9c('0x3a')]));_0x886d12[_0xcd9c('0x38')]=_0x886d12[_0xcd9c('0x38')][_0xcd9c('0x48')]?_0x886d12[_0xcd9c('0x38')]:_0x26fc0b[_0xcd9c('0x35')];if(_0x115e79[_0xcd9c('0x37')][_0xcd9c('0x42')]){_0x886d12['include']=[{'all':!![]}];}_0x886d12=_[_0xcd9c('0x40')]({},_0x886d12,_0x115e79['options']);return db['Campaign'][_0xcd9c('0x49')](_0x886d12)[_0xcd9c('0x27')](handleEntityNotFound(_0x49ae57,null))[_0xcd9c('0x27')](respondWithResult(_0x49ae57,null))[_0xcd9c('0x4a')](handleError(_0x49ae57,null));};exports[_0xcd9c('0x4b')]=function(_0x364672,_0xe1b3b2){return db['Campaign'][_0xcd9c('0x4b')](_0x364672[_0xcd9c('0x4c')],{})[_0xcd9c('0x27')](function(_0x1aa52f){var _0x524519=_0x364672[_0xcd9c('0x4d')][_0xcd9c('0x28')]({'plain':!![]});if(!_0x524519)throw new Error(_0xcd9c('0x4e'));if(_0x524519[_0xcd9c('0x4f')]==='user'){var _0x57588c=_0x1aa52f[_0xcd9c('0x28')]({'plain':!![]});var _0x148fc3='IvrCampaigns';return db[_0xcd9c('0x50')][_0xcd9c('0x49')]({'where':{'name':_0x148fc3,'userProfileId':_0x524519[_0xcd9c('0x51')]},'raw':!![]})[_0xcd9c('0x27')](function(_0x22c46e){if(_0x22c46e&&_0x22c46e[_0xcd9c('0x52')]===0x0){return db[_0xcd9c('0x2a')][_0xcd9c('0x4b')]({'name':_0x57588c[_0xcd9c('0x2e')],'resourceId':_0x57588c['id'],'type':_0x22c46e[_0xcd9c('0x2e')],'sectionId':_0x22c46e['id']},{})[_0xcd9c('0x27')](function(){return _0x1aa52f;});}else{return _0x1aa52f;}})[_0xcd9c('0x4a')](function(_0x50af1f){logger['error'](_0xcd9c('0x53'),_0x50af1f);throw _0x50af1f;});}return _0x1aa52f;})[_0xcd9c('0x27')](respondWithResult(_0xe1b3b2,0xc9))[_0xcd9c('0x4a')](handleError(_0xe1b3b2,null));};exports[_0xcd9c('0x54')]=function(_0x11fbf8,_0x4775cf){var _0x1aa7e0={'where':{'id':_0x11fbf8['params']['id']}},_0xeadccc={};_0xeadccc[_0xcd9c('0x35')]=_['keys'](db[_0xcd9c('0x31')][_0xcd9c('0x32')]);_0x1aa7e0[_0xcd9c('0x38')]=_['intersection'](_0xeadccc[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x11fbf8['query'][_0xcd9c('0x3a')]));_0x1aa7e0[_0xcd9c('0x38')]=_0x1aa7e0[_0xcd9c('0x38')][_0xcd9c('0x48')]?_0x1aa7e0['attributes']:_0xeadccc[_0xcd9c('0x35')];if(_0x11fbf8[_0xcd9c('0x37')][_0xcd9c('0x42')]){_0x1aa7e0[_0xcd9c('0x43')]=[{'all':!![]}];}_0x1aa7e0=_[_0xcd9c('0x40')]({},_0x1aa7e0,_0x11fbf8[_0xcd9c('0x55')]);return db[_0xcd9c('0x31')][_0xcd9c('0x49')](_0x1aa7e0)[_0xcd9c('0x27')](handleEntityNotFound(_0x4775cf,null))[_0xcd9c('0x27')](function(_0x1c8d3f){if(_0x1c8d3f){var _0x14b16f=_0x1c8d3f[_0xcd9c('0x28')]({'plain':!![]});_0x14b16f=qs[_0xcd9c('0x56')](_0x14b16f,['id','createdAt',_0xcd9c('0x57')]);_0x11fbf8['body']=_[_0xcd9c('0x56')](_0x11fbf8[_0xcd9c('0x4c')],['id',_0xcd9c('0x58'),_0xcd9c('0x57')]);return db['Campaign'][_0xcd9c('0x4b')](_[_0xcd9c('0x40')](_0x14b16f,_0x11fbf8['body']),{'include':_0x11fbf8[_0xcd9c('0x37')][_0xcd9c('0x42')]?[{'all':!![]}]:undefined})[_0xcd9c('0x27')](function(_0x326759){var _0x52ac2a=_0x11fbf8[_0xcd9c('0x4d')][_0xcd9c('0x28')]({'plain':!![]});if(!_0x52ac2a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52ac2a[_0xcd9c('0x4f')]===_0xcd9c('0x4d')){var _0x28a4bd=_0x326759[_0xcd9c('0x28')]({'plain':!![]});var _0xc5fe5e=_0xcd9c('0x29');return db[_0xcd9c('0x50')][_0xcd9c('0x49')]({'where':{'name':_0xc5fe5e,'userProfileId':_0x52ac2a[_0xcd9c('0x51')]},'raw':!![]})[_0xcd9c('0x27')](function(_0x1894b8){if(_0x1894b8&&_0x1894b8[_0xcd9c('0x52')]===0x0){return db[_0xcd9c('0x2a')][_0xcd9c('0x4b')]({'name':_0x28a4bd['name'],'resourceId':_0x28a4bd['id'],'type':_0x1894b8['name'],'sectionId':_0x1894b8['id']},{})[_0xcd9c('0x27')](function(){return _0x326759;});}else{return _0x326759;}})[_0xcd9c('0x4a')](function(_0x68417e){logger[_0xcd9c('0x2c')](_0xcd9c('0x53'),_0x68417e);throw _0x68417e;});}return _0x326759;});}})[_0xcd9c('0x27')](respondWithResult(_0x4775cf,0xc9))[_0xcd9c('0x4a')](handleError(_0x4775cf,null));};exports[_0xcd9c('0x26')]=function(_0x4195fb,_0x3faf64){if(_0x4195fb['body']['id']){delete _0x4195fb[_0xcd9c('0x4c')]['id'];}return db[_0xcd9c('0x31')]['find']({'where':{'id':_0x4195fb['params']['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x3faf64,null))[_0xcd9c('0x27')](saveUpdates(_0x4195fb[_0xcd9c('0x4c')],null))['then'](respondWithResult(_0x3faf64,null))[_0xcd9c('0x4a')](handleError(_0x3faf64,null));};exports[_0xcd9c('0x2b')]=function(_0xdb1c9a,_0x1a96e4){return db['Campaign']['find']({'where':{'id':_0xdb1c9a[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x1a96e4,null))['then'](removeEntity(_0x1a96e4,null))[_0xcd9c('0x4a')](handleError(_0x1a96e4,null));};exports[_0xcd9c('0x59')]=function(_0x50ea8f,_0x48cca3,_0x287761){var _0x10d3f3={'raw':!![],'where':{}};var _0x43f320={};var _0x1f59d0={'count':0x0,'rows':[]};return db[_0xcd9c('0x31')][_0xcd9c('0x5a')]({'where':{'id':_0x50ea8f[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x48cca3,null))[_0xcd9c('0x27')](function(_0x5a78d4){if(_0x5a78d4){_0x43f320[_0xcd9c('0x35')]=_['keys'](db[_0xcd9c('0x5b')][_0xcd9c('0x32')]);_0x43f320[_0xcd9c('0x37')]=_['keys'](_0x50ea8f[_0xcd9c('0x37')]);_0x43f320[_0xcd9c('0x47')]=_['intersection'](_0x43f320[_0xcd9c('0x35')],_0x43f320[_0xcd9c('0x37')]);_0x10d3f3[_0xcd9c('0x38')]=_[_0xcd9c('0x39')](_0x43f320[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x50ea8f[_0xcd9c('0x37')][_0xcd9c('0x3a')]));_0x10d3f3[_0xcd9c('0x38')]=_0x10d3f3['attributes']['length']?_0x10d3f3[_0xcd9c('0x38')]:_0x43f320[_0xcd9c('0x35')];if(!_0x50ea8f['query']['hasOwnProperty']('nolimit')){_0x10d3f3['limit']=qs[_0xcd9c('0x1f')](_0x50ea8f[_0xcd9c('0x37')][_0xcd9c('0x1f')]);_0x10d3f3[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x50ea8f['query'][_0xcd9c('0x1d')]);}_0x10d3f3['order']=qs[_0xcd9c('0x3c')](_0x50ea8f[_0xcd9c('0x37')][_0xcd9c('0x3c')]);_0x10d3f3[_0xcd9c('0x3d')]=qs[_0xcd9c('0x47')](_[_0xcd9c('0x3e')](_0x50ea8f[_0xcd9c('0x37')],_0x43f320[_0xcd9c('0x47')]));_0x10d3f3[_0xcd9c('0x3d')]['CampaignId']=_0x5a78d4['id'];if(_0x50ea8f['query'][_0xcd9c('0x3f')]){_0x10d3f3[_0xcd9c('0x3d')]=_[_0xcd9c('0x40')](_0x10d3f3[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x10d3f3[_0xcd9c('0x38')],function(_0x872a97){var _0x94b221={};_0x94b221[_0x872a97]={'$like':'%'+_0x50ea8f[_0xcd9c('0x37')][_0xcd9c('0x3f')]+'%'};return _0x94b221;})});}_0x10d3f3=_[_0xcd9c('0x40')]({},_0x10d3f3,_0x50ea8f[_0xcd9c('0x55')]);return db[_0xcd9c('0x5b')][_0xcd9c('0x20')]({'where':_0x10d3f3[_0xcd9c('0x3d')]})[_0xcd9c('0x27')](function(_0x3335a7){_0x1f59d0['count']=_0x3335a7;if(_0x50ea8f['query'][_0xcd9c('0x42')]){_0x10d3f3[_0xcd9c('0x43')]=[{'all':!![]}];}return db[_0xcd9c('0x5b')][_0xcd9c('0x5c')](_0x10d3f3);})[_0xcd9c('0x27')](function(_0x46ade1){_0x1f59d0[_0xcd9c('0x44')]=_0x46ade1;return _0x1f59d0;});}})[_0xcd9c('0x27')](respondWithFilteredResult(_0x48cca3,_0x10d3f3))[_0xcd9c('0x4a')](handleError(_0x48cca3,null));};exports[_0xcd9c('0x5d')]=function(_0x7b09da,_0x35a10c,_0x42196f){var _0x5ae0b6={'raw':!![],'where':{}};var _0x2a0402={};var _0x47107c={'count':0x0,'rows':[]};return db['Campaign'][_0xcd9c('0x5a')]({'where':{'id':_0x7b09da[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x35a10c,null))[_0xcd9c('0x27')](function(_0x4feff7){if(_0x4feff7){_0x2a0402[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db['CmHopperHistory']['rawAttributes']);_0x2a0402[_0xcd9c('0x37')]=_[_0xcd9c('0x36')](_0x7b09da['query']);_0x2a0402[_0xcd9c('0x47')]=_[_0xcd9c('0x39')](_0x2a0402['model'],_0x2a0402[_0xcd9c('0x37')]);_0x5ae0b6['attributes']=_['intersection'](_0x2a0402[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x7b09da[_0xcd9c('0x37')]['fields']));_0x5ae0b6[_0xcd9c('0x38')]=_0x5ae0b6['attributes'][_0xcd9c('0x48')]?_0x5ae0b6[_0xcd9c('0x38')]:_0x2a0402[_0xcd9c('0x35')];if(!_0x7b09da[_0xcd9c('0x37')][_0xcd9c('0x5e')](_0xcd9c('0x3b'))){_0x5ae0b6[_0xcd9c('0x1f')]=qs[_0xcd9c('0x1f')](_0x7b09da['query']['limit']);_0x5ae0b6[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x7b09da[_0xcd9c('0x37')][_0xcd9c('0x1d')]);}_0x5ae0b6[_0xcd9c('0x5f')]=qs[_0xcd9c('0x3c')](_0x7b09da[_0xcd9c('0x37')][_0xcd9c('0x3c')]);_0x5ae0b6[_0xcd9c('0x3d')]=qs[_0xcd9c('0x47')](_[_0xcd9c('0x3e')](_0x7b09da['query'],_0x2a0402[_0xcd9c('0x47')]));_0x5ae0b6[_0xcd9c('0x3d')][_0xcd9c('0x60')]=_0x4feff7['id'];if(_0x7b09da[_0xcd9c('0x37')][_0xcd9c('0x3f')]){_0x5ae0b6['where']=_[_0xcd9c('0x40')](_0x5ae0b6[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x5ae0b6['attributes'],function(_0x2ea9fc){var _0x4dfbfc={};_0x4dfbfc[_0x2ea9fc]={'$like':'%'+_0x7b09da[_0xcd9c('0x37')]['filter']+'%'};return _0x4dfbfc;})});}_0x5ae0b6=_[_0xcd9c('0x40')]({},_0x5ae0b6,_0x7b09da[_0xcd9c('0x55')]);return db[_0xcd9c('0x61')][_0xcd9c('0x20')]({'where':_0x5ae0b6[_0xcd9c('0x3d')]})[_0xcd9c('0x27')](function(_0x226244){_0x47107c[_0xcd9c('0x20')]=_0x226244;if(_0x7b09da[_0xcd9c('0x37')][_0xcd9c('0x42')]){_0x5ae0b6[_0xcd9c('0x43')]=[{'all':!![]}];}return db[_0xcd9c('0x61')][_0xcd9c('0x5c')](_0x5ae0b6);})[_0xcd9c('0x27')](function(_0x38c83c){_0x47107c[_0xcd9c('0x44')]=_0x38c83c;return _0x47107c;});}})[_0xcd9c('0x27')](respondWithFilteredResult(_0x35a10c,_0x5ae0b6))['catch'](handleError(_0x35a10c,null));};exports[_0xcd9c('0x62')]=function(_0x53b66a,_0x4ae155,_0x7ab672){var _0x564e07={'raw':!![],'where':{}};var _0x44f7f4={};var _0xe68792={'count':0x0,'rows':[]};return db[_0xcd9c('0x31')][_0xcd9c('0x5a')]({'where':{'id':_0x53b66a[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x4ae155,null))[_0xcd9c('0x27')](function(_0x41697c){if(_0x41697c){_0x44f7f4[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db[_0xcd9c('0x63')][_0xcd9c('0x32')]);_0x44f7f4[_0xcd9c('0x37')]=_['keys'](_0x53b66a[_0xcd9c('0x37')]);_0x44f7f4[_0xcd9c('0x47')]=_['intersection'](_0x44f7f4['model'],_0x44f7f4[_0xcd9c('0x37')]);_0x564e07['attributes']=_[_0xcd9c('0x39')](_0x44f7f4['model'],qs[_0xcd9c('0x3a')](_0x53b66a['query'][_0xcd9c('0x3a')]));_0x564e07[_0xcd9c('0x38')]=_0x564e07[_0xcd9c('0x38')][_0xcd9c('0x48')]?_0x564e07[_0xcd9c('0x38')]:_0x44f7f4[_0xcd9c('0x35')];if(!_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x5e')](_0xcd9c('0x3b'))){_0x564e07[_0xcd9c('0x1f')]=qs[_0xcd9c('0x1f')](_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x1f')]);_0x564e07[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x1d')]);}_0x564e07[_0xcd9c('0x5f')]=qs['sort'](_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x3c')]);_0x564e07[_0xcd9c('0x3d')]=qs[_0xcd9c('0x47')](_['pick'](_0x53b66a['query'],_0x44f7f4[_0xcd9c('0x47')]));_0x564e07[_0xcd9c('0x3d')][_0xcd9c('0x60')]=_0x41697c['id'];if(_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x3f')]){_0x564e07[_0xcd9c('0x3d')]=_['merge'](_0x564e07['where'],{'$or':_[_0xcd9c('0x30')](_0x564e07[_0xcd9c('0x38')],function(_0x199b67){var _0x30de17={};_0x30de17[_0x199b67]={'$like':'%'+_0x53b66a['query']['filter']+'%'};return _0x30de17;})});}_0x564e07=_[_0xcd9c('0x40')]({},_0x564e07,_0x53b66a['options']);return db[_0xcd9c('0x63')][_0xcd9c('0x20')]({'where':_0x564e07['where']})[_0xcd9c('0x27')](function(_0x2eb98e){_0xe68792[_0xcd9c('0x20')]=_0x2eb98e;if(_0x53b66a[_0xcd9c('0x37')][_0xcd9c('0x42')]){_0x564e07[_0xcd9c('0x43')]=[{'all':!![]}];}return db[_0xcd9c('0x63')][_0xcd9c('0x5c')](_0x564e07);})['then'](function(_0x2a212f){_0xe68792[_0xcd9c('0x44')]=_0x2a212f;return _0xe68792;});}})[_0xcd9c('0x27')](respondWithFilteredResult(_0x4ae155,_0x564e07))[_0xcd9c('0x4a')](handleError(_0x4ae155,null));};exports[_0xcd9c('0x64')]=function(_0x13065a,_0x4dfe4c,_0x490ae0){var _0x8e1bc0={'raw':!![],'where':{}};var _0x33d490={};var _0x37895b={'count':0x0,'rows':[]};return db[_0xcd9c('0x31')][_0xcd9c('0x5a')]({'where':{'id':_0x13065a[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x4dfe4c,null))[_0xcd9c('0x27')](function(_0x2450c1){if(_0x2450c1){_0x33d490[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db[_0xcd9c('0x65')][_0xcd9c('0x32')]);_0x33d490['query']=_['keys'](_0x13065a[_0xcd9c('0x37')]);_0x33d490[_0xcd9c('0x47')]=_[_0xcd9c('0x39')](_0x33d490['model'],_0x33d490[_0xcd9c('0x37')]);_0x8e1bc0['attributes']=_['intersection'](_0x33d490[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x13065a['query'][_0xcd9c('0x3a')]));_0x8e1bc0['attributes']=_0x8e1bc0[_0xcd9c('0x38')][_0xcd9c('0x48')]?_0x8e1bc0['attributes']:_0x33d490[_0xcd9c('0x35')];if(!_0x13065a[_0xcd9c('0x37')]['hasOwnProperty'](_0xcd9c('0x3b'))){_0x8e1bc0[_0xcd9c('0x1f')]=qs[_0xcd9c('0x1f')](_0x13065a[_0xcd9c('0x37')]['limit']);_0x8e1bc0[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x13065a['query']['offset']);}_0x8e1bc0[_0xcd9c('0x5f')]=qs[_0xcd9c('0x3c')](_0x13065a[_0xcd9c('0x37')]['sort']);_0x8e1bc0[_0xcd9c('0x3d')]=qs[_0xcd9c('0x47')](_['pick'](_0x13065a['query'],_0x33d490[_0xcd9c('0x47')]));_0x8e1bc0[_0xcd9c('0x3d')][_0xcd9c('0x60')]=_0x2450c1['id'];if(_0x13065a[_0xcd9c('0x37')][_0xcd9c('0x3f')]){_0x8e1bc0[_0xcd9c('0x3d')]=_['merge'](_0x8e1bc0[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x8e1bc0[_0xcd9c('0x38')],function(_0x41107a){var _0x1276dc={};_0x1276dc[_0x41107a]={'$like':'%'+_0x13065a['query'][_0xcd9c('0x3f')]+'%'};return _0x1276dc;})});}_0x8e1bc0=_[_0xcd9c('0x40')]({},_0x8e1bc0,_0x13065a[_0xcd9c('0x55')]);return db[_0xcd9c('0x65')][_0xcd9c('0x20')]({'where':_0x8e1bc0[_0xcd9c('0x3d')]})[_0xcd9c('0x27')](function(_0x266d0){_0x37895b[_0xcd9c('0x20')]=_0x266d0;if(_0x13065a['query'][_0xcd9c('0x42')]){_0x8e1bc0[_0xcd9c('0x43')]=[{'all':!![]}];}return db[_0xcd9c('0x65')][_0xcd9c('0x5c')](_0x8e1bc0);})['then'](function(_0x14625b){_0x37895b[_0xcd9c('0x44')]=_0x14625b;return _0x37895b;});}})[_0xcd9c('0x27')](respondWithFilteredResult(_0x4dfe4c,_0x8e1bc0))[_0xcd9c('0x4a')](handleError(_0x4dfe4c,null));};exports[_0xcd9c('0x66')]=function(_0x434494,_0x5def44,_0x270dcb){var _0x5e3129={};var _0x633999={};var _0xd871cd;var _0x26101b;return db[_0xcd9c('0x31')][_0xcd9c('0x5a')]({'where':{'id':_0x434494['params']['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x5def44,null))[_0xcd9c('0x27')](function(_0x30b61a){if(_0x30b61a){_0xd871cd=_0x30b61a;_0x633999[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db[_0xcd9c('0x67')]['rawAttributes']);_0x633999['query']=_['keys'](_0x434494[_0xcd9c('0x37')]);_0x633999[_0xcd9c('0x47')]=_[_0xcd9c('0x39')](_0x633999[_0xcd9c('0x35')],_0x633999['query']);_0x5e3129[_0xcd9c('0x38')]=_[_0xcd9c('0x39')](_0x633999[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x434494[_0xcd9c('0x37')][_0xcd9c('0x3a')]));_0x5e3129['attributes']=_0x5e3129['attributes']['length']?_0x5e3129[_0xcd9c('0x38')]:_0x633999['model'];_0x5e3129['order']=qs[_0xcd9c('0x3c')](_0x434494[_0xcd9c('0x37')][_0xcd9c('0x3c')]);_0x5e3129[_0xcd9c('0x3d')]=qs['filters'](_[_0xcd9c('0x3e')](_0x434494[_0xcd9c('0x37')],_0x633999[_0xcd9c('0x47')]));if(_0x434494[_0xcd9c('0x37')][_0xcd9c('0x3f')]){_0x5e3129[_0xcd9c('0x3d')]=_[_0xcd9c('0x40')](_0x5e3129[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x5e3129[_0xcd9c('0x38')],function(_0x4f7fdc){var _0x40c042={};_0x40c042[_0x4f7fdc]={'$like':'%'+_0x434494[_0xcd9c('0x37')][_0xcd9c('0x3f')]+'%'};return _0x40c042;})});}_0x5e3129=_[_0xcd9c('0x40')]({},_0x5e3129,_0x434494[_0xcd9c('0x55')]);return _0xd871cd[_0xcd9c('0x66')](_0x5e3129);}})[_0xcd9c('0x27')](function(_0x207ecf){if(_0x207ecf){_0x26101b=_0x207ecf[_0xcd9c('0x48')];if(!_0x434494[_0xcd9c('0x37')]['hasOwnProperty']('nolimit')){_0x5e3129[_0xcd9c('0x1f')]=qs[_0xcd9c('0x1f')](_0x434494[_0xcd9c('0x37')][_0xcd9c('0x1f')]);_0x5e3129[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x434494[_0xcd9c('0x37')]['offset']);}return _0xd871cd[_0xcd9c('0x66')](_0x5e3129);}})['then'](function(_0x16c369){if(_0x16c369){return _0x16c369?{'count':_0x26101b,'rows':_0x16c369}:null;}})['then'](respondWithResult(_0x5def44,null))[_0xcd9c('0x4a')](handleError(_0x5def44,null));};exports[_0xcd9c('0x68')]=function(_0x41548b,_0x28d1be,_0x2cf591){var _0x2e6a3c,_0x2beec1;var _0x397804=[];var _0x1493e2=moment()[_0xcd9c('0x69')](_0xcd9c('0x6a'));return db[_0xcd9c('0x31')]['find']({'where':{'id':_0x41548b[_0xcd9c('0x46')]['id']}})['then'](handleEntityNotFound(_0x28d1be,null))[_0xcd9c('0x27')](function(_0xfb0615){if(_0xfb0615){_0x2beec1=_0xfb0615;return _0xfb0615[_0xcd9c('0x68')](_0x41548b[_0xcd9c('0x4c')][_0xcd9c('0x6b')],_[_0xcd9c('0x56')](_0x41548b[_0xcd9c('0x4c')],[_0xcd9c('0x6b'),'id'])||{});}return null;})[_0xcd9c('0x6c')](function(_0x1ef2c0){var _0x450e7e;var _0x3b39ea;_0x2e6a3c=_0x1ef2c0||[];var _0x3d6d5d=[];if(_0x1ef2c0){for(var _0x14a343=0x0;_0x14a343<_0x1ef2c0[_0xcd9c('0x48')];_0x14a343+=0x1){var _0x234f9e=_0x1ef2c0[_0x14a343][_0xcd9c('0x28')]({'plain':!![]});_0x2beec1[_0xcd9c('0x6d')]=_0x41548b[_0xcd9c('0x4c')][_0xcd9c('0x6d')]?_0x41548b[_0xcd9c('0x4c')][_0xcd9c('0x6d')]:_0x2beec1['dialCheckDuplicateType'];switch(_0x2beec1[_0xcd9c('0x6d')]){case _0xcd9c('0x6e'):_0x450e7e=squel[_0xcd9c('0x6f')]()['into'](_0xcd9c('0x70'))['fromQuery']([_0xcd9c('0x71'),'scheduledAt',_0xcd9c('0x72'),_0xcd9c('0x73'),_0xcd9c('0x60'),_0xcd9c('0x58'),_0xcd9c('0x57')],squel[_0xcd9c('0x74')]()[_0xcd9c('0x75')](_0xcd9c('0x71'),_0xcd9c('0x71'))[_0xcd9c('0x75')](_0xcd9c('0x76'),'scheduledAt')[_0xcd9c('0x75')]('id','ContactId')[_0xcd9c('0x75')](_0x234f9e[_0xcd9c('0x77')]['toString'](),_0xcd9c('0x73'))['field'](_0x41548b[_0xcd9c('0x46')]['id'][_0xcd9c('0x78')](),'CampaignId')[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27',_0xcd9c('0x58'))[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27',_0xcd9c('0x57'))[_0xcd9c('0x79')]('cm_contacts')[_0xcd9c('0x3d')](_0xcd9c('0x7a'))[_0xcd9c('0x3d')]('ListId\x20=\x20?',_0x234f9e[_0xcd9c('0x77')][_0xcd9c('0x78')]())['where'](_0xcd9c('0x7b'))['where'](_0xcd9c('0x7c'),squel['select']()[_0xcd9c('0x75')](_0xcd9c('0x7d'))[_0xcd9c('0x79')](_0xcd9c('0x7e'))[_0xcd9c('0x3d')]('CampaignId\x20=\x20?',_0x41548b[_0xcd9c('0x46')]['id'][_0xcd9c('0x78')]()))['where'](_0xcd9c('0x7c'),squel[_0xcd9c('0x74')]()[_0xcd9c('0x75')]('COALESCE(phone,\x27\x27)')[_0xcd9c('0x79')](_0xcd9c('0x70'))[_0xcd9c('0x3d')](_0xcd9c('0x7f'),_0x41548b[_0xcd9c('0x46')]['id']['toString']())))[_0xcd9c('0x78')]();break;case _0xcd9c('0x80'):_0x450e7e=squel['insert']()['into']('cm_hopper')['fromQuery']([_0xcd9c('0x71'),_0xcd9c('0x81'),'ContactId','ListId',_0xcd9c('0x60'),_0xcd9c('0x58'),_0xcd9c('0x57')],squel[_0xcd9c('0x74')]()['field'](_0xcd9c('0x71'),_0xcd9c('0x71'))[_0xcd9c('0x75')](_0xcd9c('0x76'),'scheduledAt')[_0xcd9c('0x75')]('id','ContactId')[_0xcd9c('0x75')](_0x234f9e['CmListId'][_0xcd9c('0x78')](),_0xcd9c('0x73'))[_0xcd9c('0x75')](_0x41548b[_0xcd9c('0x46')]['id'][_0xcd9c('0x78')](),'CampaignId')[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27','createdAt')['field']('\x27'+_0x1493e2+'\x27','updatedAt')[_0xcd9c('0x79')](_0xcd9c('0x82'))[_0xcd9c('0x3d')](_0xcd9c('0x7a'))[_0xcd9c('0x3d')]('ListId\x20=\x20?',_0x234f9e[_0xcd9c('0x77')][_0xcd9c('0x78')]())[_0xcd9c('0x3d')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xcd9c('0x7c'),squel['select']()['field']('COALESCE(phone,\x27\x27)')['from']('cm_hopper')[_0xcd9c('0x3d')]('CampaignId\x20=\x20?',_0x41548b['params']['id'][_0xcd9c('0x78')]())))[_0xcd9c('0x78')]();break;default:_0x450e7e=squel[_0xcd9c('0x6f')]()[_0xcd9c('0x83')]('cm_hopper')[_0xcd9c('0x84')]([_0xcd9c('0x71'),_0xcd9c('0x81'),_0xcd9c('0x72'),_0xcd9c('0x73'),_0xcd9c('0x60'),_0xcd9c('0x58'),_0xcd9c('0x57')],squel['select']()[_0xcd9c('0x75')](_0xcd9c('0x71'),_0xcd9c('0x71'))[_0xcd9c('0x75')](_0xcd9c('0x76'),_0xcd9c('0x81'))['field']('id','ContactId')['field'](_0x234f9e[_0xcd9c('0x77')][_0xcd9c('0x78')](),'ListId')[_0xcd9c('0x75')](_0x41548b[_0xcd9c('0x46')]['id'][_0xcd9c('0x78')](),'CampaignId')[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27',_0xcd9c('0x58'))[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27',_0xcd9c('0x57'))[_0xcd9c('0x79')](_0xcd9c('0x82'))[_0xcd9c('0x3d')]('deletedAt\x20IS\x20NULL')[_0xcd9c('0x3d')]('ListId\x20=\x20?',_0x234f9e[_0xcd9c('0x77')][_0xcd9c('0x78')]())['where'](_0xcd9c('0x7b')))[_0xcd9c('0x78')]();}_0x3b39ea=squel[_0xcd9c('0x6f')]()[_0xcd9c('0x83')]('cm_hopper_additional_phones')[_0xcd9c('0x84')]([_0xcd9c('0x85'),'scheduledAt',_0xcd9c('0x71'),_0xcd9c('0x86'),_0xcd9c('0x58'),_0xcd9c('0x57')],squel[_0xcd9c('0x74')]()[_0xcd9c('0x75')](_0xcd9c('0x87'),'id')[_0xcd9c('0x75')]('NOW()',_0xcd9c('0x81'))[_0xcd9c('0x75')]('ci.item',_0xcd9c('0x71'))[_0xcd9c('0x75')]('ci.OrderBY',_0xcd9c('0x86'))[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27',_0xcd9c('0x58'))[_0xcd9c('0x75')]('\x27'+_0x1493e2+'\x27','updatedAt')[_0xcd9c('0x79')](_0xcd9c('0x88'),'ci')['join']('cm_hopper','h',_0xcd9c('0x89'))[_0xcd9c('0x3d')]('h.ListId\x20=\x20?',_0x234f9e[_0xcd9c('0x77')][_0xcd9c('0x78')]())['where'](_0xcd9c('0x8a'),_0x41548b['params']['id']['toString']())[_0xcd9c('0x3d')](_0xcd9c('0x8b'),_0x1493e2))[_0xcd9c('0x78')]();_0x3d6d5d['push'](db[_0xcd9c('0x8c')][_0xcd9c('0x37')](_0x450e7e));_0x397804['push'](db[_0xcd9c('0x8c')]['query'](_0x3b39ea));}return BPromise['all'](_0x3d6d5d);}})['then'](function(){return BPromise[_0xcd9c('0x8d')](_0x397804);})[_0xcd9c('0x27')](function(){return _0x2e6a3c;})[_0xcd9c('0x27')](respondWithResult(_0x28d1be,null))[_0xcd9c('0x4a')](handleError(_0x28d1be,null));};exports[_0xcd9c('0x8e')]=function(_0x7c526c,_0x25eb67,_0x26385f){return db['Campaign']['find']({'where':{'id':_0x7c526c[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x25eb67,null))['then'](function(_0x1f2374){if(_0x1f2374){return _0x1f2374[_0xcd9c('0x8e')](_0x7c526c['query'][_0xcd9c('0x6b')]);}})['then'](function(_0x43135a){if(_0x43135a){return db[_0xcd9c('0x5b')][_0xcd9c('0x2b')]({'where':{'ListId':_0x7c526c['query'][_0xcd9c('0x6b')],'CampaignId':_0x7c526c[_0xcd9c('0x46')]['id']}})['then'](function(){return _0x43135a;});}})['then'](respondWithStatusCode(_0x25eb67,null))['catch'](handleError(_0x25eb67,null));};exports['getBlackLists']=function(_0x2985a5,_0x3a6b38,_0x6ed276){var _0x34f1e5={};var _0x2f82e5={};var _0x330717;var _0x129105;return db[_0xcd9c('0x31')][_0xcd9c('0x5a')]({'where':{'id':_0x2985a5['params']['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x3a6b38,null))[_0xcd9c('0x27')](function(_0x4bfe3e){if(_0x4bfe3e){_0x330717=_0x4bfe3e;_0x2f82e5[_0xcd9c('0x35')]=_[_0xcd9c('0x36')](db[_0xcd9c('0x67')][_0xcd9c('0x32')]);_0x2f82e5[_0xcd9c('0x37')]=_['keys'](_0x2985a5[_0xcd9c('0x37')]);_0x2f82e5[_0xcd9c('0x47')]=_['intersection'](_0x2f82e5[_0xcd9c('0x35')],_0x2f82e5[_0xcd9c('0x37')]);_0x34f1e5[_0xcd9c('0x38')]=_[_0xcd9c('0x39')](_0x2f82e5[_0xcd9c('0x35')],qs[_0xcd9c('0x3a')](_0x2985a5[_0xcd9c('0x37')][_0xcd9c('0x3a')]));_0x34f1e5[_0xcd9c('0x38')]=_0x34f1e5[_0xcd9c('0x38')]['length']?_0x34f1e5[_0xcd9c('0x38')]:_0x2f82e5['model'];_0x34f1e5['order']=qs['sort'](_0x2985a5[_0xcd9c('0x37')][_0xcd9c('0x3c')]);_0x34f1e5[_0xcd9c('0x3d')]=qs[_0xcd9c('0x47')](_['pick'](_0x2985a5[_0xcd9c('0x37')],_0x2f82e5['filters']));if(_0x2985a5[_0xcd9c('0x37')]['filter']){_0x34f1e5[_0xcd9c('0x3d')]=_['merge'](_0x34f1e5[_0xcd9c('0x3d')],{'$or':_[_0xcd9c('0x30')](_0x34f1e5['attributes'],function(_0x596090){var _0x2afd78={};_0x2afd78[_0x596090]={'$like':'%'+_0x2985a5[_0xcd9c('0x37')][_0xcd9c('0x3f')]+'%'};return _0x2afd78;})});}_0x34f1e5=_[_0xcd9c('0x40')]({},_0x34f1e5,_0x2985a5['options']);return _0x330717[_0xcd9c('0x8f')](_0x34f1e5);}})['then'](function(_0x559ac6){if(_0x559ac6){_0x129105=_0x559ac6['length'];if(!_0x2985a5[_0xcd9c('0x37')][_0xcd9c('0x5e')]('nolimit')){_0x34f1e5[_0xcd9c('0x1f')]=qs[_0xcd9c('0x1f')](_0x2985a5['query'][_0xcd9c('0x1f')]);_0x34f1e5[_0xcd9c('0x1d')]=qs[_0xcd9c('0x1d')](_0x2985a5['query']['offset']);}return _0x330717[_0xcd9c('0x8f')](_0x34f1e5);}})[_0xcd9c('0x27')](function(_0x8aa57){if(_0x8aa57){return _0x8aa57?{'count':_0x129105,'rows':_0x8aa57}:null;}})[_0xcd9c('0x27')](respondWithResult(_0x3a6b38,null))[_0xcd9c('0x4a')](handleError(_0x3a6b38,null));};exports[_0xcd9c('0x90')]=function(_0x3363d8,_0x509835,_0x39caca){var _0x4d77ea,_0x128af4;var _0x34137e=[];var _0x102aed=moment()[_0xcd9c('0x69')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign'][_0xcd9c('0x49')]({'where':{'id':_0x3363d8[_0xcd9c('0x46')]['id']}})['then'](handleEntityNotFound(_0x509835,null))['then'](function(_0x703989){if(_0x703989){_0x128af4=_0x703989;return _0x703989[_0xcd9c('0x90')](_0x3363d8['body'][_0xcd9c('0x6b')],_['omit'](_0x3363d8['body'],[_0xcd9c('0x6b'),'id'])||{});}return null;})[_0xcd9c('0x6c')](function(_0x346533){var _0x5ce5b4;var _0x925848;_0x4d77ea=_0x346533||[];var _0x22eaf2=[];if(_0x346533){for(var _0x288435=0x0;_0x288435<_0x346533['length'];_0x288435+=0x1){var _0x259678=_0x346533[_0x288435][_0xcd9c('0x28')]({'plain':!![]});_0x5ce5b4=squel['insert']()[_0xcd9c('0x83')](_0xcd9c('0x91'))[_0xcd9c('0x84')]([_0xcd9c('0x71'),_0xcd9c('0x72'),_0xcd9c('0x73'),'CampaignId',_0xcd9c('0x58'),'updatedAt'],squel[_0xcd9c('0x74')]()['field'](_0xcd9c('0x71'),_0xcd9c('0x71'))[_0xcd9c('0x75')]('id',_0xcd9c('0x72'))[_0xcd9c('0x75')](_0x259678[_0xcd9c('0x77')][_0xcd9c('0x78')](),'ListId')[_0xcd9c('0x75')](_0x3363d8[_0xcd9c('0x46')]['id'][_0xcd9c('0x78')](),_0xcd9c('0x60'))[_0xcd9c('0x75')](_0xcd9c('0x76'),'createdAt')[_0xcd9c('0x75')]('NOW()',_0xcd9c('0x57'))[_0xcd9c('0x79')]('cm_contacts')[_0xcd9c('0x3d')]('deletedAt\x20IS\x20NULL')[_0xcd9c('0x3d')](_0xcd9c('0x92'),_0x259678[_0xcd9c('0x77')][_0xcd9c('0x78')]())[_0xcd9c('0x3d')]('phone\x20IS\x20NOT\x20NULL'))[_0xcd9c('0x78')]();_0x22eaf2['push'](db[_0xcd9c('0x8c')][_0xcd9c('0x37')](_0x5ce5b4));}return BPromise['all'](_0x22eaf2);}})['then'](function(){return _0x4d77ea;})[_0xcd9c('0x27')](respondWithResult(_0x509835,null))[_0xcd9c('0x4a')](handleError(_0x509835,null));};exports['removeBlackLists']=function(_0x5318bf,_0x4f7656,_0x12ff2f){return db[_0xcd9c('0x31')][_0xcd9c('0x49')]({'where':{'id':_0x5318bf[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](handleEntityNotFound(_0x4f7656,null))[_0xcd9c('0x27')](function(_0x3b4be9){if(_0x3b4be9){return _0x3b4be9[_0xcd9c('0x93')](_0x5318bf[_0xcd9c('0x37')]['ids']);}})[_0xcd9c('0x27')](function(_0x4da902){if(_0x4da902){return db[_0xcd9c('0x65')]['destroy']({'where':{'ListId':_0x5318bf[_0xcd9c('0x37')][_0xcd9c('0x6b')],'CampaignId':_0x5318bf[_0xcd9c('0x46')]['id']}})[_0xcd9c('0x27')](function(){return _0x4da902;});}})[_0xcd9c('0x27')](respondWithStatusCode(_0x4f7656,null))[_0xcd9c('0x4a')](handleError(_0x4f7656,null));};
\ No newline at end of file
+var _0x145d=['CmHopperHistory','nolimit','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','insert','fromQuery','phone','scheduledAt','ListId','select','field','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','COALESCE(phone,\x27\x27)','cm_hopper','CampaignId\x20=\x20?','onlyIfOpen','into','ContactId','NOW()','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../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','Content-Range','reject','update','destroy','then','get','IvrCampaigns','UserProfileResource','stack','name','send','index','map','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','Campaign','includeAll','include','findAll','rows','catch','show','options','find','create','user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','getHoppers','findOne','CmHopper','CampaignId','getHopperHistories'];(function(_0x29ce34,_0x13380a){var _0x1abafd=function(_0x336e45){while(--_0x336e45){_0x29ce34['push'](_0x29ce34['shift']());}};_0x1abafd(++_0x13380a);}(_0x145d,0xc9));var _0xd145=function(_0x243117,_0x1ab0d3){_0x243117=_0x243117-0x0;var _0x3b62dc=_0x145d[_0x243117];return _0x3b62dc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd145('0x0'));var zipdir=require(_0xd145('0x1'));var jsonpatch=require(_0xd145('0x2'));var rp=require(_0xd145('0x3'));var moment=require('moment');var BPromise=require(_0xd145('0x4'));var Mustache=require(_0xd145('0x5'));var util=require(_0xd145('0x6'));var path=require('path');var sox=require(_0xd145('0x7'));var csv=require('to-csv');var ejs=require(_0xd145('0x8'));var fs=require('fs');var fs_extra=require(_0xd145('0x9'));var _=require(_0xd145('0xa'));var squel=require(_0xd145('0xb'));var crypto=require('crypto');var jsforce=require(_0xd145('0xc'));var deskjs=require(_0xd145('0xd'));var toCsv=require(_0xd145('0xe'));var querystring=require(_0xd145('0xf'));var Papa=require(_0xd145('0x10'));var Redis=require(_0xd145('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd145('0x12'));var hardwareService=require(_0xd145('0x13'));var logger=require(_0xd145('0x14'))('api');var utils=require(_0xd145('0x15'));var config=require(_0xd145('0x16'));var licenseUtil=require(_0xd145('0x17'));var db=require(_0xd145('0x18'))['db'];function respondWithStatusCode(_0x41c68e,_0x297fbf){_0x297fbf=_0x297fbf||0xcc;return function(_0x29a1ab){if(_0x29a1ab){return _0x41c68e[_0xd145('0x19')](_0x297fbf);}return _0x41c68e[_0xd145('0x1a')](_0x297fbf)[_0xd145('0x1b')]();};}function respondWithResult(_0x4c209e,_0x49201b){_0x49201b=_0x49201b||0xc8;return function(_0x4d9d29){if(_0x4d9d29){return _0x4c209e[_0xd145('0x1a')](_0x49201b)[_0xd145('0x1c')](_0x4d9d29);}};}function respondWithFilteredResult(_0x736c5a,_0x3141c8){return function(_0x22d25a){if(_0x22d25a){var _0x558e93=typeof _0x3141c8['offset']===_0xd145('0x1d')&&typeof _0x3141c8[_0xd145('0x1e')]===_0xd145('0x1d');var _0x411280=_0x22d25a['count'];var _0x2e085d=_0x558e93?0x0:_0x3141c8['offset'];var _0x1ffb5d=_0x558e93?_0x22d25a[_0xd145('0x1f')]:_0x3141c8[_0xd145('0x20')]+_0x3141c8[_0xd145('0x1e')];var _0x9a8813;if(_0x1ffb5d>=_0x411280){_0x1ffb5d=_0x411280;_0x9a8813=0xc8;}else{_0x9a8813=0xce;}_0x736c5a[_0xd145('0x1a')](_0x9a8813);return _0x736c5a[_0xd145('0x21')](_0xd145('0x22'),_0x2e085d+'-'+_0x1ffb5d+'/'+_0x411280)['json'](_0x22d25a);}return null;};}function patchUpdates(_0x25b041){return function(_0x18e08e){try{jsonpatch['apply'](_0x18e08e,_0x25b041,!![]);}catch(_0x12c939){return BPromise[_0xd145('0x23')](_0x12c939);}return _0x18e08e['save']();};}function saveUpdates(_0x142983,_0x2dc684){return function(_0x5e57a8){if(_0x5e57a8){return _0x5e57a8[_0xd145('0x24')](_0x142983)['then'](function(_0x491a11){return _0x491a11;});}return null;};}function removeEntity(_0xb0997d,_0x4c0d99){return function(_0x8707c6){if(_0x8707c6){return _0x8707c6[_0xd145('0x25')]()[_0xd145('0x26')](function(){var _0x4a8164=_0x8707c6[_0xd145('0x27')]({'plain':!![]});var _0x41b820=_0xd145('0x28');return db[_0xd145('0x29')]['destroy']({'where':{'type':_0x41b820,'resourceId':_0x4a8164['id']}})[_0xd145('0x26')](function(){return _0x8707c6;});})[_0xd145('0x26')](function(){_0xb0997d['status'](0xcc)[_0xd145('0x1b')]();});}};}function handleEntityNotFound(_0xbdbbfc,_0x14e7b0){return function(_0x3fa391){if(!_0x3fa391){_0xbdbbfc[_0xd145('0x19')](0x194);}return _0x3fa391;};}function handleError(_0x5c7ebe,_0x375846){_0x375846=_0x375846||0x1f4;return function(_0x285665){logger['error'](_0x285665[_0xd145('0x2a')]);if(_0x285665['name']){delete _0x285665[_0xd145('0x2b')];}_0x5c7ebe[_0xd145('0x1a')](_0x375846)[_0xd145('0x2c')](_0x285665);};}exports[_0xd145('0x2d')]=function(_0x407187,_0x1557ca){var _0x4ce391={},_0x2e7815={},_0x10e031={'count':0x0,'rows':[]};var _0x5f0776=_[_0xd145('0x2e')](db['Campaign'][_0xd145('0x2f')],function(_0x1c5576){return{'name':_0x1c5576['fieldName'],'type':_0x1c5576['type']['key']};});_0x2e7815[_0xd145('0x30')]=_['map'](_0x5f0776,_0xd145('0x2b'));_0x2e7815[_0xd145('0x31')]=_[_0xd145('0x32')](_0x407187[_0xd145('0x31')]);_0x2e7815[_0xd145('0x33')]=_[_0xd145('0x34')](_0x2e7815[_0xd145('0x30')],_0x2e7815[_0xd145('0x31')]);_0x4ce391[_0xd145('0x35')]=_[_0xd145('0x34')](_0x2e7815[_0xd145('0x30')],qs[_0xd145('0x36')](_0x407187[_0xd145('0x31')][_0xd145('0x36')]));_0x4ce391[_0xd145('0x35')]=_0x4ce391['attributes'][_0xd145('0x37')]?_0x4ce391[_0xd145('0x35')]:_0x2e7815['model'];if(!_0x407187['query'][_0xd145('0x38')]('nolimit')){_0x4ce391['limit']=qs['limit'](_0x407187['query']['limit']);_0x4ce391['offset']=qs['offset'](_0x407187[_0xd145('0x31')][_0xd145('0x20')]);}_0x4ce391[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x407187[_0xd145('0x31')][_0xd145('0x3a')]);_0x4ce391[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x407187[_0xd145('0x31')],_0x2e7815['filters']),_0x5f0776);if(_0x407187[_0xd145('0x31')][_0xd145('0x3d')]){_0x4ce391[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x4ce391[_0xd145('0x3b')],{'$or':_['map'](_0x5f0776,function(_0x5b691d){if(_0x5b691d['type']!==_0xd145('0x3f')){var _0x2f6881={};_0x2f6881[_0x5b691d['name']]={'$like':'%'+_0x407187[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x2f6881;}})});}_0x4ce391=_[_0xd145('0x3e')]({},_0x4ce391,_0x407187['options']);var _0x34482d={'where':_0x4ce391['where']};return db[_0xd145('0x40')][_0xd145('0x1f')](_0x34482d)[_0xd145('0x26')](function(_0x1801c4){_0x10e031[_0xd145('0x1f')]=_0x1801c4;if(_0x407187[_0xd145('0x31')][_0xd145('0x41')]){_0x4ce391[_0xd145('0x42')]=[{'all':!![]}];}return db['Campaign'][_0xd145('0x43')](_0x4ce391);})[_0xd145('0x26')](function(_0x15a7cc){_0x10e031[_0xd145('0x44')]=_0x15a7cc;return _0x10e031;})[_0xd145('0x26')](respondWithFilteredResult(_0x1557ca,_0x4ce391))[_0xd145('0x45')](handleError(_0x1557ca,null));};exports[_0xd145('0x46')]=function(_0x3dfce3,_0x5eb93e){var _0x28e8fb={'raw':![],'where':{'id':_0x3dfce3['params']['id']}},_0x3a01cf={};_0x3a01cf[_0xd145('0x30')]=_['keys'](db['Campaign'][_0xd145('0x2f')]);_0x3a01cf[_0xd145('0x31')]=_[_0xd145('0x32')](_0x3dfce3[_0xd145('0x31')]);_0x3a01cf[_0xd145('0x33')]=_[_0xd145('0x34')](_0x3a01cf[_0xd145('0x30')],_0x3a01cf['query']);_0x28e8fb[_0xd145('0x35')]=_[_0xd145('0x34')](_0x3a01cf[_0xd145('0x30')],qs[_0xd145('0x36')](_0x3dfce3[_0xd145('0x31')][_0xd145('0x36')]));_0x28e8fb[_0xd145('0x35')]=_0x28e8fb[_0xd145('0x35')][_0xd145('0x37')]?_0x28e8fb[_0xd145('0x35')]:_0x3a01cf[_0xd145('0x30')];if(_0x3dfce3['query']['includeAll']){_0x28e8fb[_0xd145('0x42')]=[{'all':!![]}];}_0x28e8fb=_['merge']({},_0x28e8fb,_0x3dfce3[_0xd145('0x47')]);return db['Campaign'][_0xd145('0x48')](_0x28e8fb)[_0xd145('0x26')](handleEntityNotFound(_0x5eb93e,null))[_0xd145('0x26')](respondWithResult(_0x5eb93e,null))['catch'](handleError(_0x5eb93e,null));};exports[_0xd145('0x49')]=function(_0x13d815,_0x31d465){return db[_0xd145('0x40')][_0xd145('0x49')](_0x13d815['body'],{})[_0xd145('0x26')](function(_0x1f527e){var _0x586887=_0x13d815[_0xd145('0x4a')][_0xd145('0x27')]({'plain':!![]});if(!_0x586887)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x586887[_0xd145('0x4b')]===_0xd145('0x4a')){var _0x42559f=_0x1f527e[_0xd145('0x27')]({'plain':!![]});var _0x4bfda5=_0xd145('0x28');return db[_0xd145('0x4c')][_0xd145('0x48')]({'where':{'name':_0x4bfda5,'userProfileId':_0x586887[_0xd145('0x4d')]},'raw':!![]})[_0xd145('0x26')](function(_0x1e003a){if(_0x1e003a&&_0x1e003a['autoAssociation']===0x0){return db[_0xd145('0x29')][_0xd145('0x49')]({'name':_0x42559f[_0xd145('0x2b')],'resourceId':_0x42559f['id'],'type':_0x1e003a['name'],'sectionId':_0x1e003a['id']},{})[_0xd145('0x26')](function(){return _0x1f527e;});}else{return _0x1f527e;}})[_0xd145('0x45')](function(_0x317ec0){logger[_0xd145('0x4e')](_0xd145('0x4f'),_0x317ec0);throw _0x317ec0;});}return _0x1f527e;})[_0xd145('0x26')](respondWithResult(_0x31d465,0xc9))[_0xd145('0x45')](handleError(_0x31d465,null));};exports[_0xd145('0x50')]=function(_0x325639,_0x35a3f9){var _0x3a77c7={'where':{'id':_0x325639[_0xd145('0x51')]['id']}},_0x28c2af={};_0x28c2af[_0xd145('0x30')]=_['keys'](db[_0xd145('0x40')][_0xd145('0x2f')]);_0x3a77c7[_0xd145('0x35')]=_[_0xd145('0x34')](_0x28c2af['model'],qs[_0xd145('0x36')](_0x325639[_0xd145('0x31')][_0xd145('0x36')]));_0x3a77c7[_0xd145('0x35')]=_0x3a77c7[_0xd145('0x35')][_0xd145('0x37')]?_0x3a77c7[_0xd145('0x35')]:_0x28c2af[_0xd145('0x30')];if(_0x325639[_0xd145('0x31')]['includeAll']){_0x3a77c7[_0xd145('0x42')]=[{'all':!![]}];}_0x3a77c7=_['merge']({},_0x3a77c7,_0x325639[_0xd145('0x47')]);return db[_0xd145('0x40')][_0xd145('0x48')](_0x3a77c7)[_0xd145('0x26')](handleEntityNotFound(_0x35a3f9,null))[_0xd145('0x26')](function(_0x31cd1a){if(_0x31cd1a){var _0x3e71c3=_0x31cd1a[_0xd145('0x27')]({'plain':!![]});_0x3e71c3=qs[_0xd145('0x52')](_0x3e71c3,['id',_0xd145('0x53'),_0xd145('0x54')]);_0x325639['body']=_[_0xd145('0x52')](_0x325639[_0xd145('0x55')],['id','createdAt','updatedAt']);return db[_0xd145('0x40')]['create'](_[_0xd145('0x3e')](_0x3e71c3,_0x325639[_0xd145('0x55')]),{'include':_0x325639[_0xd145('0x31')][_0xd145('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x5d5dc4){var _0xa0f4a5=_0x325639[_0xd145('0x4a')][_0xd145('0x27')]({'plain':!![]});if(!_0xa0f4a5)throw new Error(_0xd145('0x56'));if(_0xa0f4a5[_0xd145('0x4b')]===_0xd145('0x4a')){var _0x42282f=_0x5d5dc4[_0xd145('0x27')]({'plain':!![]});var _0x219f03='IvrCampaigns';return db[_0xd145('0x4c')][_0xd145('0x48')]({'where':{'name':_0x219f03,'userProfileId':_0xa0f4a5[_0xd145('0x4d')]},'raw':!![]})[_0xd145('0x26')](function(_0x13bd89){if(_0x13bd89&&_0x13bd89[_0xd145('0x57')]===0x0){return db[_0xd145('0x29')][_0xd145('0x49')]({'name':_0x42282f['name'],'resourceId':_0x42282f['id'],'type':_0x13bd89[_0xd145('0x2b')],'sectionId':_0x13bd89['id']},{})[_0xd145('0x26')](function(){return _0x5d5dc4;});}else{return _0x5d5dc4;}})[_0xd145('0x45')](function(_0x1704b5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1704b5);throw _0x1704b5;});}return _0x5d5dc4;});}})[_0xd145('0x26')](respondWithResult(_0x35a3f9,0xc9))[_0xd145('0x45')](handleError(_0x35a3f9,null));};exports[_0xd145('0x24')]=function(_0x196db9,_0x56f46a){if(_0x196db9[_0xd145('0x55')]['id']){delete _0x196db9['body']['id'];}return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x196db9[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x56f46a,null))[_0xd145('0x26')](saveUpdates(_0x196db9[_0xd145('0x55')],null))[_0xd145('0x26')](respondWithResult(_0x56f46a,null))[_0xd145('0x45')](handleError(_0x56f46a,null));};exports['destroy']=function(_0x11abe5,_0x13c385){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x11abe5['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x13c385,null))['then'](removeEntity(_0x13c385,null))[_0xd145('0x45')](handleError(_0x13c385,null));};exports[_0xd145('0x58')]=function(_0x1f2846,_0x480d4c,_0x2f295e){var _0xe580e9={'raw':!![],'where':{}};var _0x33e58c={};var _0x481b53={'count':0x0,'rows':[]};return db[_0xd145('0x40')][_0xd145('0x59')]({'where':{'id':_0x1f2846[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x480d4c,null))[_0xd145('0x26')](function(_0x5e53a6){if(_0x5e53a6){_0x33e58c['model']=_['keys'](db[_0xd145('0x5a')][_0xd145('0x2f')]);_0x33e58c['query']=_[_0xd145('0x32')](_0x1f2846[_0xd145('0x31')]);_0x33e58c[_0xd145('0x33')]=_['intersection'](_0x33e58c[_0xd145('0x30')],_0x33e58c[_0xd145('0x31')]);_0xe580e9['attributes']=_['intersection'](_0x33e58c[_0xd145('0x30')],qs[_0xd145('0x36')](_0x1f2846[_0xd145('0x31')][_0xd145('0x36')]));_0xe580e9[_0xd145('0x35')]=_0xe580e9[_0xd145('0x35')][_0xd145('0x37')]?_0xe580e9['attributes']:_0x33e58c[_0xd145('0x30')];if(!_0x1f2846[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0xe580e9['limit']=qs[_0xd145('0x1e')](_0x1f2846[_0xd145('0x31')][_0xd145('0x1e')]);_0xe580e9[_0xd145('0x20')]=qs[_0xd145('0x20')](_0x1f2846['query'][_0xd145('0x20')]);}_0xe580e9['order']=qs[_0xd145('0x3a')](_0x1f2846[_0xd145('0x31')][_0xd145('0x3a')]);_0xe580e9[_0xd145('0x3b')]=qs[_0xd145('0x33')](_['pick'](_0x1f2846[_0xd145('0x31')],_0x33e58c[_0xd145('0x33')]));_0xe580e9[_0xd145('0x3b')][_0xd145('0x5b')]=_0x5e53a6['id'];if(_0x1f2846[_0xd145('0x31')]['filter']){_0xe580e9[_0xd145('0x3b')]=_['merge'](_0xe580e9[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0xe580e9[_0xd145('0x35')],function(_0x1f2fa8){var _0x23bc48={};_0x23bc48[_0x1f2fa8]={'$like':'%'+_0x1f2846['query']['filter']+'%'};return _0x23bc48;})});}_0xe580e9=_['merge']({},_0xe580e9,_0x1f2846[_0xd145('0x47')]);return db['CmHopper'][_0xd145('0x1f')]({'where':_0xe580e9[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x641d12){_0x481b53[_0xd145('0x1f')]=_0x641d12;if(_0x1f2846[_0xd145('0x31')][_0xd145('0x41')]){_0xe580e9[_0xd145('0x42')]=[{'all':!![]}];}return db[_0xd145('0x5a')][_0xd145('0x43')](_0xe580e9);})['then'](function(_0x26f1ac){_0x481b53['rows']=_0x26f1ac;return _0x481b53;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x480d4c,_0xe580e9))['catch'](handleError(_0x480d4c,null));};exports[_0xd145('0x5c')]=function(_0x2e8649,_0x48ee42,_0x188326){var _0x2a3774={'raw':!![],'where':{}};var _0x3049b9={};var _0x194511={'count':0x0,'rows':[]};return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x2e8649['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x48ee42,null))['then'](function(_0x52fe10){if(_0x52fe10){_0x3049b9['model']=_['keys'](db[_0xd145('0x5d')]['rawAttributes']);_0x3049b9[_0xd145('0x31')]=_[_0xd145('0x32')](_0x2e8649[_0xd145('0x31')]);_0x3049b9[_0xd145('0x33')]=_[_0xd145('0x34')](_0x3049b9[_0xd145('0x30')],_0x3049b9[_0xd145('0x31')]);_0x2a3774[_0xd145('0x35')]=_[_0xd145('0x34')](_0x3049b9[_0xd145('0x30')],qs[_0xd145('0x36')](_0x2e8649['query']['fields']));_0x2a3774[_0xd145('0x35')]=_0x2a3774[_0xd145('0x35')][_0xd145('0x37')]?_0x2a3774[_0xd145('0x35')]:_0x3049b9['model'];if(!_0x2e8649[_0xd145('0x31')][_0xd145('0x38')](_0xd145('0x5e'))){_0x2a3774['limit']=qs['limit'](_0x2e8649[_0xd145('0x31')][_0xd145('0x1e')]);_0x2a3774['offset']=qs['offset'](_0x2e8649[_0xd145('0x31')][_0xd145('0x20')]);}_0x2a3774[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x2e8649[_0xd145('0x31')][_0xd145('0x3a')]);_0x2a3774[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x2e8649[_0xd145('0x31')],_0x3049b9[_0xd145('0x33')]));_0x2a3774['where'][_0xd145('0x5b')]=_0x52fe10['id'];if(_0x2e8649[_0xd145('0x31')]['filter']){_0x2a3774[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x2a3774[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x2a3774['attributes'],function(_0x94311b){var _0x2e581c={};_0x2e581c[_0x94311b]={'$like':'%'+_0x2e8649[_0xd145('0x31')]['filter']+'%'};return _0x2e581c;})});}_0x2a3774=_[_0xd145('0x3e')]({},_0x2a3774,_0x2e8649[_0xd145('0x47')]);return db[_0xd145('0x5d')]['count']({'where':_0x2a3774[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x36a25e){_0x194511[_0xd145('0x1f')]=_0x36a25e;if(_0x2e8649[_0xd145('0x31')][_0xd145('0x41')]){_0x2a3774[_0xd145('0x42')]=[{'all':!![]}];}return db[_0xd145('0x5d')]['findAll'](_0x2a3774);})[_0xd145('0x26')](function(_0x30b395){_0x194511['rows']=_0x30b395;return _0x194511;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x48ee42,_0x2a3774))['catch'](handleError(_0x48ee42,null));};exports['getHopperFinals']=function(_0x55b2d6,_0x2ea86d,_0x11b34e){var _0x2d425f={'raw':!![],'where':{}};var _0x31b70c={};var _0xfaa809={'count':0x0,'rows':[]};return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x55b2d6[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x2ea86d,null))[_0xd145('0x26')](function(_0x24039e){if(_0x24039e){_0x31b70c[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x5f')][_0xd145('0x2f')]);_0x31b70c[_0xd145('0x31')]=_['keys'](_0x55b2d6['query']);_0x31b70c[_0xd145('0x33')]=_[_0xd145('0x34')](_0x31b70c['model'],_0x31b70c[_0xd145('0x31')]);_0x2d425f['attributes']=_[_0xd145('0x34')](_0x31b70c[_0xd145('0x30')],qs[_0xd145('0x36')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x36')]));_0x2d425f['attributes']=_0x2d425f['attributes'][_0xd145('0x37')]?_0x2d425f['attributes']:_0x31b70c[_0xd145('0x30')];if(!_0x55b2d6[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x2d425f[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x1e')]);_0x2d425f['offset']=qs[_0xd145('0x20')](_0x55b2d6[_0xd145('0x31')][_0xd145('0x20')]);}_0x2d425f[_0xd145('0x39')]=qs['sort'](_0x55b2d6[_0xd145('0x31')][_0xd145('0x3a')]);_0x2d425f[_0xd145('0x3b')]=qs[_0xd145('0x33')](_['pick'](_0x55b2d6[_0xd145('0x31')],_0x31b70c[_0xd145('0x33')]));_0x2d425f['where'][_0xd145('0x5b')]=_0x24039e['id'];if(_0x55b2d6['query'][_0xd145('0x3d')]){_0x2d425f[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x2d425f[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x2d425f['attributes'],function(_0x281d48){var _0x4c316a={};_0x4c316a[_0x281d48]={'$like':'%'+_0x55b2d6[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x4c316a;})});}_0x2d425f=_[_0xd145('0x3e')]({},_0x2d425f,_0x55b2d6['options']);return db[_0xd145('0x5f')][_0xd145('0x1f')]({'where':_0x2d425f[_0xd145('0x3b')]})[_0xd145('0x26')](function(_0x16093c){_0xfaa809['count']=_0x16093c;if(_0x55b2d6['query'][_0xd145('0x41')]){_0x2d425f[_0xd145('0x42')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd145('0x43')](_0x2d425f);})[_0xd145('0x26')](function(_0x58e007){_0xfaa809['rows']=_0x58e007;return _0xfaa809;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x2ea86d,_0x2d425f))[_0xd145('0x45')](handleError(_0x2ea86d,null));};exports[_0xd145('0x60')]=function(_0x530827,_0x5aa0e1,_0x54f6ac){var _0x5243f3={'raw':!![],'where':{}};var _0xfe178f={};var _0xd78b9f={'count':0x0,'rows':[]};return db[_0xd145('0x40')][_0xd145('0x59')]({'where':{'id':_0x530827[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x5aa0e1,null))['then'](function(_0x1e14fd){if(_0x1e14fd){_0xfe178f[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x61')][_0xd145('0x2f')]);_0xfe178f['query']=_['keys'](_0x530827[_0xd145('0x31')]);_0xfe178f[_0xd145('0x33')]=_['intersection'](_0xfe178f[_0xd145('0x30')],_0xfe178f[_0xd145('0x31')]);_0x5243f3[_0xd145('0x35')]=_[_0xd145('0x34')](_0xfe178f['model'],qs[_0xd145('0x36')](_0x530827[_0xd145('0x31')]['fields']));_0x5243f3['attributes']=_0x5243f3['attributes'][_0xd145('0x37')]?_0x5243f3[_0xd145('0x35')]:_0xfe178f[_0xd145('0x30')];if(!_0x530827['query'][_0xd145('0x38')](_0xd145('0x5e'))){_0x5243f3[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x530827[_0xd145('0x31')][_0xd145('0x1e')]);_0x5243f3['offset']=qs[_0xd145('0x20')](_0x530827[_0xd145('0x31')]['offset']);}_0x5243f3[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x530827[_0xd145('0x31')][_0xd145('0x3a')]);_0x5243f3[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x530827[_0xd145('0x31')],_0xfe178f[_0xd145('0x33')]));_0x5243f3[_0xd145('0x3b')][_0xd145('0x5b')]=_0x1e14fd['id'];if(_0x530827[_0xd145('0x31')]['filter']){_0x5243f3[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x5243f3[_0xd145('0x3b')],{'$or':_['map'](_0x5243f3[_0xd145('0x35')],function(_0x4afec2){var _0x44abe9={};_0x44abe9[_0x4afec2]={'$like':'%'+_0x530827[_0xd145('0x31')][_0xd145('0x3d')]+'%'};return _0x44abe9;})});}_0x5243f3=_[_0xd145('0x3e')]({},_0x5243f3,_0x530827[_0xd145('0x47')]);return db[_0xd145('0x61')][_0xd145('0x1f')]({'where':_0x5243f3[_0xd145('0x3b')]})['then'](function(_0x5de26b){_0xd78b9f[_0xd145('0x1f')]=_0x5de26b;if(_0x530827[_0xd145('0x31')][_0xd145('0x41')]){_0x5243f3[_0xd145('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xd145('0x43')](_0x5243f3);})[_0xd145('0x26')](function(_0x238ef8){_0xd78b9f[_0xd145('0x44')]=_0x238ef8;return _0xd78b9f;});}})[_0xd145('0x26')](respondWithFilteredResult(_0x5aa0e1,_0x5243f3))['catch'](handleError(_0x5aa0e1,null));};exports[_0xd145('0x62')]=function(_0x2da72e,_0x19fd4c,_0x256664){var _0x1b909b={};var _0x5af9e9={};var _0x172672;var _0x3504ad;return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x2da72e['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x19fd4c,null))[_0xd145('0x26')](function(_0x47e599){if(_0x47e599){_0x172672=_0x47e599;_0x5af9e9['model']=_[_0xd145('0x32')](db[_0xd145('0x63')][_0xd145('0x2f')]);_0x5af9e9[_0xd145('0x31')]=_[_0xd145('0x32')](_0x2da72e[_0xd145('0x31')]);_0x5af9e9[_0xd145('0x33')]=_['intersection'](_0x5af9e9[_0xd145('0x30')],_0x5af9e9[_0xd145('0x31')]);_0x1b909b[_0xd145('0x35')]=_[_0xd145('0x34')](_0x5af9e9[_0xd145('0x30')],qs[_0xd145('0x36')](_0x2da72e['query'][_0xd145('0x36')]));_0x1b909b[_0xd145('0x35')]=_0x1b909b['attributes'][_0xd145('0x37')]?_0x1b909b[_0xd145('0x35')]:_0x5af9e9['model'];_0x1b909b[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x2da72e['query'][_0xd145('0x3a')]);_0x1b909b[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x2da72e[_0xd145('0x31')],_0x5af9e9[_0xd145('0x33')]));if(_0x2da72e['query'][_0xd145('0x3d')]){_0x1b909b[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x1b909b['where'],{'$or':_['map'](_0x1b909b[_0xd145('0x35')],function(_0x3779e5){var _0xeb272b={};_0xeb272b[_0x3779e5]={'$like':'%'+_0x2da72e['query'][_0xd145('0x3d')]+'%'};return _0xeb272b;})});}_0x1b909b=_[_0xd145('0x3e')]({},_0x1b909b,_0x2da72e[_0xd145('0x47')]);return _0x172672[_0xd145('0x62')](_0x1b909b);}})[_0xd145('0x26')](function(_0x4bf6e0){if(_0x4bf6e0){_0x3504ad=_0x4bf6e0[_0xd145('0x37')];if(!_0x2da72e[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x1b909b[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x2da72e[_0xd145('0x31')][_0xd145('0x1e')]);_0x1b909b[_0xd145('0x20')]=qs['offset'](_0x2da72e[_0xd145('0x31')][_0xd145('0x20')]);}return _0x172672[_0xd145('0x62')](_0x1b909b);}})[_0xd145('0x26')](function(_0x8e3f8c){if(_0x8e3f8c){return _0x8e3f8c?{'count':_0x3504ad,'rows':_0x8e3f8c}:null;}})[_0xd145('0x26')](respondWithResult(_0x19fd4c,null))[_0xd145('0x45')](handleError(_0x19fd4c,null));};exports[_0xd145('0x64')]=function(_0x344f95,_0x41b4a4,_0x31eb23){var _0x38bb2d,_0x18516e;var _0x228a2e=[];var _0x56e23f=moment()[_0xd145('0x65')](_0xd145('0x66'));return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x344f95['params']['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x41b4a4,null))[_0xd145('0x26')](function(_0x3afc4d){if(_0x3afc4d){_0x18516e=_0x3afc4d;return _0x3afc4d['addLists'](_0x344f95[_0xd145('0x55')]['ids'],_[_0xd145('0x52')](_0x344f95[_0xd145('0x55')],[_0xd145('0x67'),'id'])||{});}return null;})[_0xd145('0x68')](function(_0x8442f0){var _0x2a0b40;var _0x525e5c;_0x38bb2d=_0x8442f0||[];var _0x112603=[];if(_0x8442f0){for(var _0x18cb3a=0x0;_0x18cb3a<_0x8442f0[_0xd145('0x37')];_0x18cb3a+=0x1){var _0x5e80f5=_0x8442f0[_0x18cb3a][_0xd145('0x27')]({'plain':!![]});_0x18516e[_0xd145('0x69')]=_0x344f95[_0xd145('0x55')][_0xd145('0x69')]?_0x344f95[_0xd145('0x55')][_0xd145('0x69')]:_0x18516e['dialCheckDuplicateType'];switch(_0x18516e[_0xd145('0x69')]){case _0xd145('0x6a'):_0x2a0b40=squel[_0xd145('0x6b')]()['into']('cm_hopper')[_0xd145('0x6c')]([_0xd145('0x6d'),_0xd145('0x6e'),'ContactId',_0xd145('0x6f'),'CampaignId',_0xd145('0x53'),_0xd145('0x54')],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),'phone')['field']('NOW()','scheduledAt')[_0xd145('0x71')]('id','ContactId')['field'](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),'ListId')[_0xd145('0x71')](_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')](),_0xd145('0x5b'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x53'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))['from'](_0xd145('0x74'))[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())['where'](_0xd145('0x77'))[_0xd145('0x3b')](_0xd145('0x78'),squel[_0xd145('0x70')]()['field'](_0xd145('0x79'))[_0xd145('0x7a')]('cm_hopper_final')[_0xd145('0x3b')]('CampaignId\x20=\x20?',_0x344f95[_0xd145('0x51')]['id']['toString']()))[_0xd145('0x3b')](_0xd145('0x78'),squel['select']()['field'](_0xd145('0x7b'))[_0xd145('0x7a')](_0xd145('0x7c'))['where'](_0xd145('0x7d'),_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')]())))[_0xd145('0x73')]();break;case _0xd145('0x7e'):_0x2a0b40=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x7c'))[_0xd145('0x6c')]([_0xd145('0x6d'),_0xd145('0x6e'),_0xd145('0x80'),'ListId',_0xd145('0x5b'),'createdAt','updatedAt'],squel[_0xd145('0x70')]()['field'](_0xd145('0x6d'),'phone')['field'](_0xd145('0x81'),'scheduledAt')[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))[_0xd145('0x71')](_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')](),_0xd145('0x5b'))[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27','createdAt')['field']('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')]('cm_contacts')[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x77'))['where'](_0xd145('0x78'),squel['select']()[_0xd145('0x71')](_0xd145('0x7b'))[_0xd145('0x7a')](_0xd145('0x7c'))[_0xd145('0x3b')](_0xd145('0x7d'),_0x344f95['params']['id'][_0xd145('0x73')]())))[_0xd145('0x73')]();break;default:_0x2a0b40=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x7c'))['fromQuery']([_0xd145('0x6d'),_0xd145('0x6e'),_0xd145('0x80'),'ListId','CampaignId',_0xd145('0x53'),_0xd145('0x54')],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),'phone')[_0xd145('0x71')](_0xd145('0x81'),_0xd145('0x6e'))[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))['field'](_0x344f95['params']['id']['toString'](),'CampaignId')['field']('\x27'+_0x56e23f+'\x27','createdAt')[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x74'))['where'](_0xd145('0x75'))['where']('ListId\x20=\x20?',_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x77')))[_0xd145('0x73')]();}_0x525e5c=squel['insert']()[_0xd145('0x7f')]('cm_hopper_additional_phones')[_0xd145('0x6c')]([_0xd145('0x82'),_0xd145('0x6e'),'phone',_0xd145('0x83'),'createdAt','updatedAt'],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x84'),'id')[_0xd145('0x71')](_0xd145('0x81'),'scheduledAt')[_0xd145('0x71')](_0xd145('0x85'),'phone')[_0xd145('0x71')](_0xd145('0x86'),_0xd145('0x83'))['field']('\x27'+_0x56e23f+'\x27','createdAt')[_0xd145('0x71')]('\x27'+_0x56e23f+'\x27',_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x87'),'ci')[_0xd145('0x88')](_0xd145('0x7c'),'h',_0xd145('0x89'))[_0xd145('0x3b')]('h.ListId\x20=\x20?',_0x5e80f5[_0xd145('0x72')][_0xd145('0x73')]())[_0xd145('0x3b')](_0xd145('0x8a'),_0x344f95[_0xd145('0x51')]['id'][_0xd145('0x73')]())[_0xd145('0x3b')]('h.createdAt\x20=\x20?',_0x56e23f))[_0xd145('0x73')]();_0x112603[_0xd145('0x8b')](db[_0xd145('0x8c')][_0xd145('0x31')](_0x2a0b40));_0x228a2e[_0xd145('0x8b')](db['sequelize'][_0xd145('0x31')](_0x525e5c));}return BPromise['all'](_0x112603);}})['then'](function(){return BPromise[_0xd145('0x8d')](_0x228a2e);})[_0xd145('0x26')](function(){return _0x38bb2d;})[_0xd145('0x26')](respondWithResult(_0x41b4a4,null))[_0xd145('0x45')](handleError(_0x41b4a4,null));};exports[_0xd145('0x8e')]=function(_0x528b30,_0x414dea,_0x1ca858){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x528b30[_0xd145('0x51')]['id']}})['then'](handleEntityNotFound(_0x414dea,null))['then'](function(_0x44c69){if(_0x44c69){return _0x44c69[_0xd145('0x8e')](_0x528b30[_0xd145('0x31')][_0xd145('0x67')]);}})['then'](function(_0x34978a){if(_0x34978a){return db[_0xd145('0x5a')][_0xd145('0x25')]({'where':{'ListId':_0x528b30[_0xd145('0x31')][_0xd145('0x67')],'CampaignId':_0x528b30[_0xd145('0x51')]['id']}})[_0xd145('0x26')](function(){return _0x34978a;});}})[_0xd145('0x26')](respondWithStatusCode(_0x414dea,null))['catch'](handleError(_0x414dea,null));};exports['getBlackLists']=function(_0x5df7aa,_0x1446ce,_0x416a9b){var _0x1e1790={};var _0x9a4a9f={};var _0x47d1cc;var _0x3a139e;return db['Campaign'][_0xd145('0x59')]({'where':{'id':_0x5df7aa[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x1446ce,null))[_0xd145('0x26')](function(_0x2ff4c0){if(_0x2ff4c0){_0x47d1cc=_0x2ff4c0;_0x9a4a9f[_0xd145('0x30')]=_[_0xd145('0x32')](db[_0xd145('0x63')][_0xd145('0x2f')]);_0x9a4a9f[_0xd145('0x31')]=_[_0xd145('0x32')](_0x5df7aa[_0xd145('0x31')]);_0x9a4a9f[_0xd145('0x33')]=_['intersection'](_0x9a4a9f[_0xd145('0x30')],_0x9a4a9f['query']);_0x1e1790[_0xd145('0x35')]=_[_0xd145('0x34')](_0x9a4a9f[_0xd145('0x30')],qs[_0xd145('0x36')](_0x5df7aa[_0xd145('0x31')]['fields']));_0x1e1790['attributes']=_0x1e1790['attributes'][_0xd145('0x37')]?_0x1e1790[_0xd145('0x35')]:_0x9a4a9f[_0xd145('0x30')];_0x1e1790[_0xd145('0x39')]=qs[_0xd145('0x3a')](_0x5df7aa['query'][_0xd145('0x3a')]);_0x1e1790[_0xd145('0x3b')]=qs[_0xd145('0x33')](_[_0xd145('0x3c')](_0x5df7aa[_0xd145('0x31')],_0x9a4a9f['filters']));if(_0x5df7aa[_0xd145('0x31')][_0xd145('0x3d')]){_0x1e1790[_0xd145('0x3b')]=_[_0xd145('0x3e')](_0x1e1790[_0xd145('0x3b')],{'$or':_[_0xd145('0x2e')](_0x1e1790[_0xd145('0x35')],function(_0x33b940){var _0x2f59d6={};_0x2f59d6[_0x33b940]={'$like':'%'+_0x5df7aa['query'][_0xd145('0x3d')]+'%'};return _0x2f59d6;})});}_0x1e1790=_[_0xd145('0x3e')]({},_0x1e1790,_0x5df7aa[_0xd145('0x47')]);return _0x47d1cc[_0xd145('0x8f')](_0x1e1790);}})[_0xd145('0x26')](function(_0x5f2fd5){if(_0x5f2fd5){_0x3a139e=_0x5f2fd5[_0xd145('0x37')];if(!_0x5df7aa[_0xd145('0x31')][_0xd145('0x38')]('nolimit')){_0x1e1790[_0xd145('0x1e')]=qs[_0xd145('0x1e')](_0x5df7aa[_0xd145('0x31')][_0xd145('0x1e')]);_0x1e1790[_0xd145('0x20')]=qs[_0xd145('0x20')](_0x5df7aa[_0xd145('0x31')][_0xd145('0x20')]);}return _0x47d1cc[_0xd145('0x8f')](_0x1e1790);}})[_0xd145('0x26')](function(_0x3629e8){if(_0x3629e8){return _0x3629e8?{'count':_0x3a139e,'rows':_0x3629e8}:null;}})[_0xd145('0x26')](respondWithResult(_0x1446ce,null))[_0xd145('0x45')](handleError(_0x1446ce,null));};exports[_0xd145('0x90')]=function(_0x2a86ef,_0x3593e9,_0xfe21a5){var _0x1786ed,_0x171a31;var _0x33f65c=[];var _0x2c60bb=moment()[_0xd145('0x65')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign'][_0xd145('0x48')]({'where':{'id':_0x2a86ef[_0xd145('0x51')]['id']}})['then'](handleEntityNotFound(_0x3593e9,null))['then'](function(_0xfd928e){if(_0xfd928e){_0x171a31=_0xfd928e;return _0xfd928e['addBlackLists'](_0x2a86ef[_0xd145('0x55')]['ids'],_[_0xd145('0x52')](_0x2a86ef[_0xd145('0x55')],['ids','id'])||{});}return null;})[_0xd145('0x68')](function(_0x1e0227){var _0x3f011e;var _0x529eb5;_0x1786ed=_0x1e0227||[];var _0x137473=[];if(_0x1e0227){for(var _0x48f6f0=0x0;_0x48f6f0<_0x1e0227[_0xd145('0x37')];_0x48f6f0+=0x1){var _0x577999=_0x1e0227[_0x48f6f0][_0xd145('0x27')]({'plain':!![]});_0x3f011e=squel[_0xd145('0x6b')]()[_0xd145('0x7f')](_0xd145('0x91'))[_0xd145('0x6c')](['phone',_0xd145('0x80'),_0xd145('0x6f'),_0xd145('0x5b'),_0xd145('0x53'),'updatedAt'],squel[_0xd145('0x70')]()[_0xd145('0x71')](_0xd145('0x6d'),_0xd145('0x6d'))[_0xd145('0x71')]('id',_0xd145('0x80'))[_0xd145('0x71')](_0x577999[_0xd145('0x72')][_0xd145('0x73')](),_0xd145('0x6f'))[_0xd145('0x71')](_0x2a86ef[_0xd145('0x51')]['id']['toString'](),_0xd145('0x5b'))['field'](_0xd145('0x81'),'createdAt')[_0xd145('0x71')](_0xd145('0x81'),_0xd145('0x54'))[_0xd145('0x7a')](_0xd145('0x74'))[_0xd145('0x3b')](_0xd145('0x75'))[_0xd145('0x3b')](_0xd145('0x76'),_0x577999[_0xd145('0x72')][_0xd145('0x73')]())['where'](_0xd145('0x77')))[_0xd145('0x73')]();_0x137473['push'](db[_0xd145('0x8c')][_0xd145('0x31')](_0x3f011e));}return BPromise[_0xd145('0x8d')](_0x137473);}})[_0xd145('0x26')](function(){return _0x1786ed;})[_0xd145('0x26')](respondWithResult(_0x3593e9,null))['catch'](handleError(_0x3593e9,null));};exports[_0xd145('0x92')]=function(_0x5b55bc,_0x2ef504,_0x149b4f){return db[_0xd145('0x40')][_0xd145('0x48')]({'where':{'id':_0x5b55bc[_0xd145('0x51')]['id']}})[_0xd145('0x26')](handleEntityNotFound(_0x2ef504,null))[_0xd145('0x26')](function(_0x140004){if(_0x140004){return _0x140004[_0xd145('0x92')](_0x5b55bc[_0xd145('0x31')][_0xd145('0x67')]);}})[_0xd145('0x26')](function(_0x78aa53){if(_0x78aa53){return db[_0xd145('0x61')][_0xd145('0x25')]({'where':{'ListId':_0x5b55bc[_0xd145('0x31')][_0xd145('0x67')],'CampaignId':_0x5b55bc[_0xd145('0x51')]['id']}})['then'](function(){return _0x78aa53;});}})['then'](respondWithStatusCode(_0x2ef504,null))['catch'](handleError(_0x2ef504,null));};
\ No newline at end of file
index 2047f6a..9f4ef5a 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(_0x35783b,_0x1be2fa){var _0x19e19b=function(_0x3fd261){while(--_0x3fd261){_0x35783b['push'](_0x35783b['shift']());}};_0x19e19b(++_0x1be2fa);}(_0x7a54,0x106));var _0x47a5=function(_0x539413,_0x71f576){_0x539413=_0x539413-0x0;var _0x4c300d=_0x7a54[_0x539413];return _0x4c300d;};'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(_0x7590ca,_0x486b4c){var _0x2e5b5f=function(_0x8e51d2){while(--_0x8e51d2){_0x7590ca['push'](_0x7590ca['shift']());}};_0x2e5b5f(++_0x486b4c);}(_0x7a54,0x106));var _0x47a5=function(_0x58356f,_0xf2d973){_0x58356f=_0x58356f-0x0;var _0x27945f=_0x7a54[_0x58356f];return _0x27945f;};'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 2b354fd..191535c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6658=['message','result','catch','GetCampaign','Campaign','findAll','options','raw','attributes','map','model','include','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x191332,_0x1b71e3){var _0x31d2d7=function(_0x48815c){while(--_0x48815c){_0x191332['push'](_0x191332['shift']());}};_0x31d2d7(++_0x1b71e3);}(_0x6658,0x198));var _0x8665=function(_0x941727,_0x442ab8){_0x941727=_0x941727-0x0;var _0x503d9a=_0x6658[_0x941727];return _0x503d9a;};'use strict';var _=require(_0x8665('0x0'));var util=require(_0x8665('0x1'));var moment=require(_0x8665('0x2'));var BPromise=require(_0x8665('0x3'));var rs=require(_0x8665('0x4'));var fs=require('fs');var Redis=require(_0x8665('0x5'));var db=require(_0x8665('0x6'))['db'];var utils=require(_0x8665('0x7'));var logger=require('../../config/logger')(_0x8665('0x8'));var config=require(_0x8665('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8665('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x290df7,_0x24c89f,_0x242f58){return new BPromise(function(_0xe73687,_0x861e11){return client[_0x8665('0xb')](_0x290df7,_0x242f58)[_0x8665('0xc')](function(_0x5c25bf){logger[_0x8665('0xd')](_0x8665('0xe'),_0x24c89f,_0x8665('0xf'));logger[_0x8665('0x10')](_0x8665('0x11'),_0x24c89f,_0x8665('0xf'),JSON[_0x8665('0x12')](_0x5c25bf));if(_0x5c25bf[_0x8665('0x13')]){if(_0x5c25bf[_0x8665('0x13')][_0x8665('0x14')]===0x1f4){logger[_0x8665('0x13')](_0x8665('0xe'),_0x24c89f,_0x5c25bf[_0x8665('0x13')][_0x8665('0x15')]);return _0x861e11(_0x5c25bf['error'][_0x8665('0x15')]);}logger['error'](_0x8665('0xe'),_0x24c89f,_0x5c25bf[_0x8665('0x13')][_0x8665('0x15')]);return _0xe73687(_0x5c25bf[_0x8665('0x13')][_0x8665('0x15')]);}else{logger[_0x8665('0xd')]('Campaign,\x20%s,\x20%s',_0x24c89f,_0x8665('0xf'));_0xe73687(_0x5c25bf[_0x8665('0x16')]['message']);}})[_0x8665('0x17')](function(_0x53dcb5){logger[_0x8665('0x13')](_0x8665('0xe'),_0x24c89f,_0x53dcb5);_0x861e11(_0x53dcb5);});});}exports[_0x8665('0x18')]=function(_0x50ba7d){var _0x331e01=this;return new Promise(function(_0x235617,_0x5b7984){return db[_0x8665('0x19')][_0x8665('0x1a')]({'raw':_0x50ba7d[_0x8665('0x1b')]?_0x50ba7d['options'][_0x8665('0x1c')]===undefined?!![]:![]:!![],'where':_0x50ba7d[_0x8665('0x1b')]?_0x50ba7d[_0x8665('0x1b')]['where']||null:null,'attributes':_0x50ba7d['options']?_0x50ba7d['options'][_0x8665('0x1d')]||null:null,'limit':_0x50ba7d['options']?_0x50ba7d[_0x8665('0x1b')]['limit']||null:null,'include':_0x50ba7d[_0x8665('0x1b')]?_0x50ba7d['options']['include']?_[_0x8665('0x1e')](_0x50ba7d[_0x8665('0x1b')]['include'],function(_0x38e3f5){return{'model':db[_0x38e3f5[_0x8665('0x1f')]],'as':_0x38e3f5['as'],'attributes':_0x38e3f5[_0x8665('0x1d')],'include':_0x38e3f5[_0x8665('0x20')]?_['map'](_0x38e3f5[_0x8665('0x20')],function(_0x41394e){return{'model':db[_0x41394e[_0x8665('0x1f')]],'as':_0x41394e['as'],'attributes':_0x41394e[_0x8665('0x1d')],'include':_0x41394e[_0x8665('0x20')]?_[_0x8665('0x1e')](_0x41394e[_0x8665('0x20')],function(_0x172f47){return{'model':db[_0x172f47['model']],'as':_0x172f47['as'],'attributes':_0x172f47[_0x8665('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8665('0xc')](function(_0x44e880){logger['info'](_0x8665('0x18'),_0x50ba7d);logger[_0x8665('0x10')](_0x8665('0x18'),_0x50ba7d,JSON[_0x8665('0x12')](_0x44e880));_0x235617(_0x44e880);})[_0x8665('0x17')](function(_0x3b0302){logger[_0x8665('0x13')](_0x8665('0x18'),_0x3b0302['message'],_0x50ba7d);_0x5b7984(_0x331e01[_0x8665('0x13')](0x1f4,_0x3b0302[_0x8665('0x15')]));});});};
\ No newline at end of file
+var _0x81d5=['Campaign','options','raw','where','attributes','limit','include','map','model','then','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x81d5,0x1ab));var _0x581d=function(_0x4203b0,_0x2d5664){_0x4203b0=_0x4203b0-0x0;var _0x5bba44=_0x81d5[_0x4203b0];return _0x5bba44;};'use strict';var _=require(_0x581d('0x0'));var util=require(_0x581d('0x1'));var moment=require('moment');var BPromise=require(_0x581d('0x2'));var rs=require(_0x581d('0x3'));var fs=require('fs');var Redis=require(_0x581d('0x4'));var db=require(_0x581d('0x5'))['db'];var utils=require(_0x581d('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x581d('0x7'));var jayson=require(_0x581d('0x8'));var client=jayson[_0x581d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16067b,_0x2f32bf,_0x43124c){return new BPromise(function(_0x497368,_0xf1a3b6){return client['request'](_0x16067b,_0x43124c)['then'](function(_0x5d8fa3){logger[_0x581d('0xa')](_0x581d('0xb'),_0x2f32bf,_0x581d('0xc'));logger[_0x581d('0xd')](_0x581d('0xe'),_0x2f32bf,'request\x20sent',JSON[_0x581d('0xf')](_0x5d8fa3));if(_0x5d8fa3[_0x581d('0x10')]){if(_0x5d8fa3[_0x581d('0x10')][_0x581d('0x11')]===0x1f4){logger[_0x581d('0x10')](_0x581d('0xb'),_0x2f32bf,_0x5d8fa3[_0x581d('0x10')][_0x581d('0x12')]);return _0xf1a3b6(_0x5d8fa3[_0x581d('0x10')][_0x581d('0x12')]);}logger['error'](_0x581d('0xb'),_0x2f32bf,_0x5d8fa3[_0x581d('0x10')]['message']);return _0x497368(_0x5d8fa3['error']['message']);}else{logger['info'](_0x581d('0xb'),_0x2f32bf,'request\x20sent');_0x497368(_0x5d8fa3[_0x581d('0x13')][_0x581d('0x12')]);}})['catch'](function(_0x1890d0){logger['error'](_0x581d('0xb'),_0x2f32bf,_0x1890d0);_0xf1a3b6(_0x1890d0);});});}exports[_0x581d('0x14')]=function(_0x1e059d){var _0x42f7db=this;return new Promise(function(_0x1f790f,_0x2cff0d){return db[_0x581d('0x15')]['findAll']({'raw':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x17')]===undefined?!![]:![]:!![],'where':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x18')]||null:null,'attributes':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x19')]||null:null,'limit':_0x1e059d[_0x581d('0x16')]?_0x1e059d[_0x581d('0x16')][_0x581d('0x1a')]||null:null,'include':_0x1e059d['options']?_0x1e059d[_0x581d('0x16')][_0x581d('0x1b')]?_[_0x581d('0x1c')](_0x1e059d[_0x581d('0x16')][_0x581d('0x1b')],function(_0x4f7420){return{'model':db[_0x4f7420[_0x581d('0x1d')]],'as':_0x4f7420['as'],'attributes':_0x4f7420[_0x581d('0x19')],'include':_0x4f7420['include']?_[_0x581d('0x1c')](_0x4f7420[_0x581d('0x1b')],function(_0x2c8fdb){return{'model':db[_0x2c8fdb['model']],'as':_0x2c8fdb['as'],'attributes':_0x2c8fdb[_0x581d('0x19')],'include':_0x2c8fdb[_0x581d('0x1b')]?_[_0x581d('0x1c')](_0x2c8fdb[_0x581d('0x1b')],function(_0x38f213){return{'model':db[_0x38f213[_0x581d('0x1d')]],'as':_0x38f213['as'],'attributes':_0x38f213['attributes']};}):[]};}):[]};}):[]:[]})[_0x581d('0x1e')](function(_0x2b75d8){logger[_0x581d('0xa')]('GetCampaign',_0x1e059d);logger['debug']('GetCampaign',_0x1e059d,JSON['stringify'](_0x2b75d8));_0x1f790f(_0x2b75d8);})[_0x581d('0x1f')](function(_0x266a2b){logger[_0x581d('0x10')](_0x581d('0x14'),_0x266a2b[_0x581d('0x12')],_0x1e059d);_0x2cff0d(_0x42f7db[_0x581d('0x10')](0x1f4,_0x266a2b[_0x581d('0x12')]));});});};
\ No newline at end of file
index ab777a1..b820168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x772d=['./campaign.controller','get','isAuthenticated','index','show','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','getLists','/:id/blacklists','post','create','clone','/:id/lists','addLists','put','/:id','delete','removeLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5b350a,_0x60510e){var _0x5f1e67=function(_0x369f8){while(--_0x369f8){_0x5b350a['push'](_0x5b350a['shift']());}};_0x5f1e67(++_0x60510e);}(_0x772d,0x197));var _0xd772=function(_0x3dbe4e,_0x377a01){_0x3dbe4e=_0x3dbe4e-0x0;var _0x4aeac3=_0x772d[_0x3dbe4e];return _0x4aeac3;};'use strict';var multer=require('multer');var util=require(_0xd772('0x0'));var path=require(_0xd772('0x1'));var timeout=require(_0xd772('0x2'));var express=require(_0xd772('0x3'));var router=express[_0xd772('0x4')]();var fs_extra=require(_0xd772('0x5'));var auth=require(_0xd772('0x6'));var interaction=require(_0xd772('0x7'));var config=require(_0xd772('0x8'));var controller=require(_0xd772('0x9'));router[_0xd772('0xa')]('/',auth[_0xd772('0xb')](),controller[_0xd772('0xc')]);router[_0xd772('0xa')]('/:id',auth[_0xd772('0xb')](),controller[_0xd772('0xd')]);router['get'](_0xd772('0xe'),auth['isAuthenticated'](),controller[_0xd772('0xf')]);router[_0xd772('0xa')]('/:id/hopper_histories',auth[_0xd772('0xb')](),controller[_0xd772('0x10')]);router[_0xd772('0xa')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xd772('0x11')]);router[_0xd772('0xa')](_0xd772('0x12'),auth['isAuthenticated'](),controller[_0xd772('0x13')]);router[_0xd772('0xa')]('/:id/lists',auth[_0xd772('0xb')](),controller[_0xd772('0x14')]);router[_0xd772('0xa')](_0xd772('0x15'),auth[_0xd772('0xb')](),controller['getBlackLists']);router[_0xd772('0x16')]('/',auth['isAuthenticated'](),controller[_0xd772('0x17')]);router[_0xd772('0x16')]('/:id/clone',auth[_0xd772('0xb')](),controller[_0xd772('0x18')]);router[_0xd772('0x16')](_0xd772('0x19'),auth[_0xd772('0xb')](),controller[_0xd772('0x1a')]);router[_0xd772('0x16')](_0xd772('0x15'),auth[_0xd772('0xb')](),controller['addBlackLists']);router[_0xd772('0x1b')]('/:id',auth[_0xd772('0xb')](),controller['update']);router['delete'](_0xd772('0x1c'),auth['isAuthenticated'](),controller['destroy']);router[_0xd772('0x1d')](_0xd772('0x19'),auth[_0xd772('0xb')](),controller[_0xd772('0x1e')]);router[_0xd772('0x1d')](_0xd772('0x15'),auth[_0xd772('0xb')](),controller['removeBlackLists']);module[_0xd772('0x1f')]=router;
\ No newline at end of file
+var _0x1a66=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./campaign.controller','/:id','isAuthenticated','get','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','/:id/lists','addLists','put','delete','destroy','removeLists','multer','util','path'];(function(_0x1e7739,_0x53c933){var _0x493c5b=function(_0x3b17d3){while(--_0x3b17d3){_0x1e7739['push'](_0x1e7739['shift']());}};_0x493c5b(++_0x53c933);}(_0x1a66,0x102));var _0x61a6=function(_0x224e32,_0x31f1ec){_0x224e32=_0x224e32-0x0;var _0x891ab9=_0x1a66[_0x224e32];return _0x891ab9;};'use strict';var multer=require(_0x61a6('0x0'));var util=require(_0x61a6('0x1'));var path=require(_0x61a6('0x2'));var timeout=require(_0x61a6('0x3'));var express=require(_0x61a6('0x4'));var router=express[_0x61a6('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x61a6('0x6'));var config=require(_0x61a6('0x7'));var controller=require(_0x61a6('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller['show']);router[_0x61a6('0xb')]('/:id/hoppers',auth[_0x61a6('0xa')](),controller[_0x61a6('0xc')]);router['get'](_0x61a6('0xd'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x61a6('0xb')](_0x61a6('0xe'),auth[_0x61a6('0xa')](),controller[_0x61a6('0xf')]);router['get'](_0x61a6('0x10'),auth[_0x61a6('0xa')](),controller['getHopperBlacks']);router[_0x61a6('0xb')]('/:id/lists',auth[_0x61a6('0xa')](),controller['getLists']);router['get'](_0x61a6('0x11'),auth[_0x61a6('0xa')](),controller[_0x61a6('0x12')]);router[_0x61a6('0x13')]('/',auth[_0x61a6('0xa')](),controller[_0x61a6('0x14')]);router[_0x61a6('0x13')](_0x61a6('0x15'),auth['isAuthenticated'](),controller[_0x61a6('0x16')]);router['post'](_0x61a6('0x17'),auth[_0x61a6('0xa')](),controller[_0x61a6('0x18')]);router[_0x61a6('0x13')](_0x61a6('0x11'),auth[_0x61a6('0xa')](),controller['addBlackLists']);router[_0x61a6('0x19')](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller['update']);router[_0x61a6('0x1a')]('/:id',auth[_0x61a6('0xa')](),controller[_0x61a6('0x1b')]);router[_0x61a6('0x1a')](_0x61a6('0x17'),auth['isAuthenticated'](),controller[_0x61a6('0x1c')]);router[_0x61a6('0x1a')]('/:id/blacklists',auth[_0x61a6('0xa')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
index fe59854..d7ccf9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4891=['exports','STRING','TEXT','VIRTUAL','getDataValue','key','sequelize'];(function(_0x1234cd,_0x3a11e3){var _0x5e83b2=function(_0x3ca27d){while(--_0x3ca27d){_0x1234cd['push'](_0x1234cd['shift']());}};_0x5e83b2(++_0x3a11e3);}(_0x4891,0x1e9));var _0x1489=function(_0x1ad0e0,_0x4a1c36){_0x1ad0e0=_0x1ad0e0-0x0;var _0x3c0923=_0x4891[_0x1ad0e0];return _0x3c0923;};'use strict';var Sequelize=require(_0x1489('0x0'));module[_0x1489('0x1')]={'key':{'type':Sequelize[_0x1489('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x1489('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x1489('0x4')],'get':function(){return this[_0x1489('0x5')](_0x1489('0x6'));}}};
\ No newline at end of file
+var _0xcdc8=['STRING','VIRTUAL','sequelize'];(function(_0x300b8a,_0x44b9eb){var _0x3d9cc0=function(_0x3817ee){while(--_0x3817ee){_0x300b8a['push'](_0x300b8a['shift']());}};_0x3d9cc0(++_0x44b9eb);}(_0xcdc8,0x1dc));var _0x8cdc=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xcdc8[_0x4d07cc];return _0x42de3b;};'use strict';var Sequelize=require(_0x8cdc('0x0'));module['exports']={'key':{'type':Sequelize[_0x8cdc('0x1')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x8cdc('0x2')],'get':function(){return this['getDataValue']('key');}}};
\ No newline at end of file
index d7d85af..3061a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68dc=['fields','nolimit','order','sort','pick','filters','filter','where','merge','options','includeAll','rows','catch','keys','find','update','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','map','CannedAnswer','rawAttributes','fieldName','type','key','query','intersection','model','attributes'];(function(_0x435fa4,_0x1c8431){var _0x2253d9=function(_0x4e62f9){while(--_0x4e62f9){_0x435fa4['push'](_0x435fa4['shift']());}};_0x2253d9(++_0x1c8431);}(_0x68dc,0x128));var _0xc68d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x68dc[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xc68d('0x0'));var rimraf=require(_0xc68d('0x1'));var zipdir=require(_0xc68d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc68d('0x3'));var moment=require('moment');var BPromise=require(_0xc68d('0x4'));var Mustache=require(_0xc68d('0x5'));var util=require(_0xc68d('0x6'));var path=require(_0xc68d('0x7'));var sox=require(_0xc68d('0x8'));var csv=require(_0xc68d('0x9'));var ejs=require(_0xc68d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc68d('0xb'));var crypto=require(_0xc68d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xc68d('0xd'));var toCsv=require(_0xc68d('0x9'));var querystring=require('querystring');var Papa=require(_0xc68d('0xe'));var Redis=require(_0xc68d('0xf'));var authService=require(_0xc68d('0x10'));var qs=require(_0xc68d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc68d('0x12'));var logger=require(_0xc68d('0x13'))(_0xc68d('0x14'));var utils=require(_0xc68d('0x15'));var config=require(_0xc68d('0x16'));var licenseUtil=require(_0xc68d('0x17'));var db=require(_0xc68d('0x18'))['db'];function respondWithStatusCode(_0x4ea1e1,_0x49f7b5){_0x49f7b5=_0x49f7b5||0xcc;return function(_0x4b2776){if(_0x4b2776){return _0x4ea1e1[_0xc68d('0x19')](_0x49f7b5);}return _0x4ea1e1['status'](_0x49f7b5)[_0xc68d('0x1a')]();};}function respondWithResult(_0x529b5f,_0x2b56ae){_0x2b56ae=_0x2b56ae||0xc8;return function(_0x4831cf){if(_0x4831cf){return _0x529b5f['status'](_0x2b56ae)[_0xc68d('0x1b')](_0x4831cf);}};}function respondWithFilteredResult(_0x2e0508,_0x2ad3d4){return function(_0x168b20){if(_0x168b20){var _0x5d39ba=typeof _0x2ad3d4[_0xc68d('0x1c')]==='undefined'&&typeof _0x2ad3d4[_0xc68d('0x1d')]===_0xc68d('0x1e');var _0x5913d5=_0x168b20[_0xc68d('0x1f')];var _0x1b3b0d=_0x5d39ba?0x0:_0x2ad3d4[_0xc68d('0x1c')];var _0x486a43=_0x5d39ba?_0x168b20['count']:_0x2ad3d4[_0xc68d('0x1c')]+_0x2ad3d4[_0xc68d('0x1d')];var _0x25d7c4;if(_0x486a43>=_0x5913d5){_0x486a43=_0x5913d5;_0x25d7c4=0xc8;}else{_0x25d7c4=0xce;}_0x2e0508[_0xc68d('0x20')](_0x25d7c4);return _0x2e0508[_0xc68d('0x21')](_0xc68d('0x22'),_0x1b3b0d+'-'+_0x486a43+'/'+_0x5913d5)[_0xc68d('0x1b')](_0x168b20);}return null;};}function patchUpdates(_0x51d3cb){return function(_0x291e8c){try{jsonpatch[_0xc68d('0x23')](_0x291e8c,_0x51d3cb,!![]);}catch(_0x21a7c5){return BPromise[_0xc68d('0x24')](_0x21a7c5);}return _0x291e8c[_0xc68d('0x25')]();};}function saveUpdates(_0x25e02f,_0x1b9c03){return function(_0x48f89b){if(_0x48f89b){return _0x48f89b['update'](_0x25e02f)[_0xc68d('0x26')](function(_0x312456){return _0x312456;});}return null;};}function removeEntity(_0xf93d9,_0x3fabb0){return function(_0x54474e){if(_0x54474e){return _0x54474e[_0xc68d('0x27')]()[_0xc68d('0x26')](function(){var _0x46c58b=_0x54474e[_0xc68d('0x28')]({'plain':!![]});var _0xc32628='CannedAnswers';return db[_0xc68d('0x29')][_0xc68d('0x27')]({'where':{'type':_0xc32628,'resourceId':_0x46c58b['id']}})[_0xc68d('0x26')](function(){return _0x54474e;});})[_0xc68d('0x26')](function(){_0xf93d9[_0xc68d('0x20')](0xcc)[_0xc68d('0x1a')]();});}};}function handleEntityNotFound(_0x3ba41d,_0x11e010){return function(_0x865754){if(!_0x865754){_0x3ba41d[_0xc68d('0x19')](0x194);}return _0x865754;};}function handleError(_0x78092c,_0x4aaacd){_0x4aaacd=_0x4aaacd||0x1f4;return function(_0x3f8595){logger[_0xc68d('0x2a')](_0x3f8595[_0xc68d('0x2b')]);if(_0x3f8595[_0xc68d('0x2c')]){delete _0x3f8595[_0xc68d('0x2c')];}_0x78092c[_0xc68d('0x20')](_0x4aaacd)['send'](_0x3f8595);};}exports[_0xc68d('0x2d')]=function(_0x31e061,_0x1dd915){var _0x189bb0={},_0x308574={},_0x371ad1={'count':0x0,'rows':[]};var _0x2c5221=_[_0xc68d('0x2e')](db[_0xc68d('0x2f')][_0xc68d('0x30')],function(_0x497438){return{'name':_0x497438[_0xc68d('0x31')],'type':_0x497438[_0xc68d('0x32')][_0xc68d('0x33')]};});_0x308574['model']=_[_0xc68d('0x2e')](_0x2c5221,_0xc68d('0x2c'));_0x308574[_0xc68d('0x34')]=_['keys'](_0x31e061[_0xc68d('0x34')]);_0x308574['filters']=_[_0xc68d('0x35')](_0x308574[_0xc68d('0x36')],_0x308574[_0xc68d('0x34')]);_0x189bb0[_0xc68d('0x37')]=_[_0xc68d('0x35')](_0x308574[_0xc68d('0x36')],qs[_0xc68d('0x38')](_0x31e061[_0xc68d('0x34')][_0xc68d('0x38')]));_0x189bb0[_0xc68d('0x37')]=_0x189bb0[_0xc68d('0x37')]['length']?_0x189bb0[_0xc68d('0x37')]:_0x308574[_0xc68d('0x36')];if(!_0x31e061[_0xc68d('0x34')]['hasOwnProperty'](_0xc68d('0x39'))){_0x189bb0[_0xc68d('0x1d')]=qs[_0xc68d('0x1d')](_0x31e061[_0xc68d('0x34')][_0xc68d('0x1d')]);_0x189bb0[_0xc68d('0x1c')]=qs[_0xc68d('0x1c')](_0x31e061[_0xc68d('0x34')]['offset']);}_0x189bb0[_0xc68d('0x3a')]=qs[_0xc68d('0x3b')](_0x31e061[_0xc68d('0x34')][_0xc68d('0x3b')]);_0x189bb0['where']=qs['filters'](_[_0xc68d('0x3c')](_0x31e061[_0xc68d('0x34')],_0x308574[_0xc68d('0x3d')]),_0x2c5221);if(_0x31e061[_0xc68d('0x34')][_0xc68d('0x3e')]){_0x189bb0[_0xc68d('0x3f')]=_[_0xc68d('0x40')](_0x189bb0[_0xc68d('0x3f')],{'$or':[{'key':{'$like':'%'+_0x31e061[_0xc68d('0x34')][_0xc68d('0x3e')]+'%'}},{'value':{'$like':'%'+_0x31e061['query'][_0xc68d('0x3e')]+'%'}}]});}_0x189bb0=_['merge']({},_0x189bb0,_0x31e061[_0xc68d('0x41')]);var _0x140050={'where':_0x189bb0['where']};return db[_0xc68d('0x2f')][_0xc68d('0x1f')](_0x140050)[_0xc68d('0x26')](function(_0x254006){_0x371ad1[_0xc68d('0x1f')]=_0x254006;if(_0x31e061[_0xc68d('0x34')][_0xc68d('0x42')]){_0x189bb0['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x189bb0);})[_0xc68d('0x26')](function(_0x1cae76){_0x371ad1[_0xc68d('0x43')]=_0x1cae76;return _0x371ad1;})['then'](respondWithFilteredResult(_0x1dd915,_0x189bb0))[_0xc68d('0x44')](handleError(_0x1dd915,null));};exports['show']=function(_0x48cd55,_0x1111c6){var _0x21a103={'raw':!![],'where':{'id':_0x48cd55['params']['id']}},_0x48f1b3={};_0x48f1b3['model']=_[_0xc68d('0x45')](db['CannedAnswer'][_0xc68d('0x30')]);_0x48f1b3['query']=_[_0xc68d('0x45')](_0x48cd55[_0xc68d('0x34')]);_0x48f1b3['filters']=_['intersection'](_0x48f1b3[_0xc68d('0x36')],_0x48f1b3[_0xc68d('0x34')]);_0x21a103[_0xc68d('0x37')]=_[_0xc68d('0x35')](_0x48f1b3['model'],qs['fields'](_0x48cd55[_0xc68d('0x34')][_0xc68d('0x38')]));_0x21a103[_0xc68d('0x37')]=_0x21a103[_0xc68d('0x37')]['length']?_0x21a103['attributes']:_0x48f1b3[_0xc68d('0x36')];if(_0x48cd55['query'][_0xc68d('0x42')]){_0x21a103['include']=[{'all':!![]}];}_0x21a103=_[_0xc68d('0x40')]({},_0x21a103,_0x48cd55[_0xc68d('0x41')]);return db[_0xc68d('0x2f')][_0xc68d('0x46')](_0x21a103)[_0xc68d('0x26')](handleEntityNotFound(_0x1111c6,null))['then'](respondWithResult(_0x1111c6,null))[_0xc68d('0x44')](handleError(_0x1111c6,null));};exports[_0xc68d('0x47')]=function(_0x44f8e8,_0x45d3b0){if(_0x44f8e8[_0xc68d('0x48')]['id']){delete _0x44f8e8[_0xc68d('0x48')]['id'];}return db[_0xc68d('0x2f')][_0xc68d('0x46')]({'where':{'id':_0x44f8e8[_0xc68d('0x49')]['id']}})[_0xc68d('0x26')](handleEntityNotFound(_0x45d3b0,null))['then'](saveUpdates(_0x44f8e8[_0xc68d('0x48')],null))[_0xc68d('0x26')](respondWithResult(_0x45d3b0,null))[_0xc68d('0x44')](handleError(_0x45d3b0,null));};exports[_0xc68d('0x27')]=function(_0x9f7caa,_0x26ade8){return db[_0xc68d('0x2f')][_0xc68d('0x46')]({'where':{'id':_0x9f7caa[_0xc68d('0x49')]['id']}})['then'](handleEntityNotFound(_0x26ade8,null))['then'](removeEntity(_0x26ade8,null))['catch'](handleError(_0x26ade8,null));};exports[_0xc68d('0x4a')]=function(_0x1abb66,_0x278058){var _0x546b04={'key':_0x1abb66[_0xc68d('0x48')][_0xc68d('0x33')]};if(_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4b')]){_0x546b04[_0xc68d('0x4b')]=_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4b')];}else if(_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4c')]){_0x546b04[_0xc68d('0x4c')]=_0x1abb66['body']['SmsAccountId'];}else if(_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4d')]){_0x546b04[_0xc68d('0x4d')]=_0x1abb66['body'][_0xc68d('0x4d')];}else if(_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4e')]){_0x546b04['ChatWebsiteId']=_0x1abb66[_0xc68d('0x48')][_0xc68d('0x4e')];}return db[_0xc68d('0x2f')][_0xc68d('0x46')]({'where':_0x546b04})[_0xc68d('0x26')](function(_0x5d2c2d){if(_0x5d2c2d){throw new db[(_0xc68d('0x4f'))][(_0xc68d('0x50'))](_0xc68d('0x51'));}return db[_0xc68d('0x2f')][_0xc68d('0x4a')](_0x1abb66[_0xc68d('0x48')]);})['then'](function(_0x201c6d){var _0x58e6e0=_0x1abb66[_0xc68d('0x52')][_0xc68d('0x28')]({'plain':!![]});if(!_0x58e6e0)throw new Error(_0xc68d('0x53'));if(_0x58e6e0['role']===_0xc68d('0x52')){var _0x264fc2=_0x201c6d[_0xc68d('0x28')]({'plain':!![]});return db[_0xc68d('0x54')][_0xc68d('0x46')]({'where':{'name':_0xc68d('0x55'),'userProfileId':_0x58e6e0[_0xc68d('0x56')]},'raw':!![]})[_0xc68d('0x26')](function(_0xae5dda){if(_0xae5dda&&_0xae5dda[_0xc68d('0x57')]===0x0){return db[_0xc68d('0x29')][_0xc68d('0x4a')]({'name':_0x264fc2[_0xc68d('0x2c')],'resourceId':_0x264fc2['id'],'type':_0xae5dda[_0xc68d('0x2c')],'sectionId':_0xae5dda['id']},{})[_0xc68d('0x26')](function(){return _0x201c6d;});}else{return _0x201c6d;}})[_0xc68d('0x44')](function(_0x48e0d3){logger[_0xc68d('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x48e0d3);throw _0x48e0d3;});}return _0x201c6d;})[_0xc68d('0x26')](respondWithResult(_0x278058,0xc9))['catch'](handleError(_0x278058,null));};
\ No newline at end of file
+var _0x31ef=['limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','CannedAnswer','includeAll','rows','catch','show','params','include','options','find','update','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x31ef,0x8b));var _0xf31e=function(_0x350076,_0x3b866a){_0x350076=_0x350076-0x0;var _0xade97c=_0x31ef[_0x350076];return _0xade97c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf31e('0x0'));var jsonpatch=require(_0xf31e('0x1'));var rp=require(_0xf31e('0x2'));var moment=require(_0xf31e('0x3'));var BPromise=require(_0xf31e('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf31e('0x5'));var csv=require(_0xf31e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf31e('0x7'));var squel=require('squel');var crypto=require(_0xf31e('0x8'));var jsforce=require(_0xf31e('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xf31e('0x6'));var querystring=require(_0xf31e('0xa'));var Papa=require(_0xf31e('0xb'));var Redis=require(_0xf31e('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xf31e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf31e('0xe'));var logger=require(_0xf31e('0xf'))(_0xf31e('0x10'));var utils=require(_0xf31e('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xf31e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54446d,_0x2f99c4){_0x2f99c4=_0x2f99c4||0xcc;return function(_0x4bd1bd){if(_0x4bd1bd){return _0x54446d['sendStatus'](_0x2f99c4);}return _0x54446d['status'](_0x2f99c4)[_0xf31e('0x13')]();};}function respondWithResult(_0x5ead3b,_0x41fa1d){_0x41fa1d=_0x41fa1d||0xc8;return function(_0x35edb9){if(_0x35edb9){return _0x5ead3b[_0xf31e('0x14')](_0x41fa1d)[_0xf31e('0x15')](_0x35edb9);}};}function respondWithFilteredResult(_0xa200a1,_0x474cea){return function(_0x5ca4b7){if(_0x5ca4b7){var _0x456c1a=typeof _0x474cea[_0xf31e('0x16')]==='undefined'&&typeof _0x474cea[_0xf31e('0x17')]===_0xf31e('0x18');var _0x48a5e6=_0x5ca4b7[_0xf31e('0x19')];var _0x4577f3=_0x456c1a?0x0:_0x474cea[_0xf31e('0x16')];var _0x4e1a42=_0x456c1a?_0x5ca4b7[_0xf31e('0x19')]:_0x474cea[_0xf31e('0x16')]+_0x474cea[_0xf31e('0x17')];var _0x1ce0b1;if(_0x4e1a42>=_0x48a5e6){_0x4e1a42=_0x48a5e6;_0x1ce0b1=0xc8;}else{_0x1ce0b1=0xce;}_0xa200a1[_0xf31e('0x14')](_0x1ce0b1);return _0xa200a1[_0xf31e('0x1a')](_0xf31e('0x1b'),_0x4577f3+'-'+_0x4e1a42+'/'+_0x48a5e6)[_0xf31e('0x15')](_0x5ca4b7);}return null;};}function patchUpdates(_0x1e2ad9){return function(_0x5dafc0){try{jsonpatch[_0xf31e('0x1c')](_0x5dafc0,_0x1e2ad9,!![]);}catch(_0x4b13a6){return BPromise[_0xf31e('0x1d')](_0x4b13a6);}return _0x5dafc0[_0xf31e('0x1e')]();};}function saveUpdates(_0x552510,_0x4bf014){return function(_0x37b410){if(_0x37b410){return _0x37b410['update'](_0x552510)[_0xf31e('0x1f')](function(_0x3085bd){return _0x3085bd;});}return null;};}function removeEntity(_0x13cb52,_0x1876a0){return function(_0x414ac5){if(_0x414ac5){return _0x414ac5[_0xf31e('0x20')]()[_0xf31e('0x1f')](function(){var _0xa40d2c=_0x414ac5['get']({'plain':!![]});var _0x22bcc6='CannedAnswers';return db['UserProfileResource'][_0xf31e('0x20')]({'where':{'type':_0x22bcc6,'resourceId':_0xa40d2c['id']}})[_0xf31e('0x1f')](function(){return _0x414ac5;});})[_0xf31e('0x1f')](function(){_0x13cb52[_0xf31e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b0858,_0x509d91){return function(_0x26935e){if(!_0x26935e){_0x2b0858[_0xf31e('0x21')](0x194);}return _0x26935e;};}function handleError(_0x5657de,_0x4b18e4){_0x4b18e4=_0x4b18e4||0x1f4;return function(_0x5f23fa){logger[_0xf31e('0x22')](_0x5f23fa['stack']);if(_0x5f23fa[_0xf31e('0x23')]){delete _0x5f23fa[_0xf31e('0x23')];}_0x5657de[_0xf31e('0x14')](_0x4b18e4)[_0xf31e('0x24')](_0x5f23fa);};}exports[_0xf31e('0x25')]=function(_0x7a404a,_0x466e8d){var _0x4bfd3d={},_0xfe0803={},_0x57c983={'count':0x0,'rows':[]};var _0x5a3930=_[_0xf31e('0x26')](db['CannedAnswer'][_0xf31e('0x27')],function(_0x274394){return{'name':_0x274394[_0xf31e('0x28')],'type':_0x274394['type'][_0xf31e('0x29')]};});_0xfe0803[_0xf31e('0x2a')]=_[_0xf31e('0x26')](_0x5a3930,'name');_0xfe0803[_0xf31e('0x2b')]=_[_0xf31e('0x2c')](_0x7a404a[_0xf31e('0x2b')]);_0xfe0803[_0xf31e('0x2d')]=_[_0xf31e('0x2e')](_0xfe0803['model'],_0xfe0803['query']);_0x4bfd3d[_0xf31e('0x2f')]=_[_0xf31e('0x2e')](_0xfe0803[_0xf31e('0x2a')],qs['fields'](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x30')]));_0x4bfd3d[_0xf31e('0x2f')]=_0x4bfd3d[_0xf31e('0x2f')][_0xf31e('0x31')]?_0x4bfd3d[_0xf31e('0x2f')]:_0xfe0803[_0xf31e('0x2a')];if(!_0x7a404a[_0xf31e('0x2b')]['hasOwnProperty'](_0xf31e('0x32'))){_0x4bfd3d[_0xf31e('0x17')]=qs['limit'](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x17')]);_0x4bfd3d[_0xf31e('0x16')]=qs[_0xf31e('0x16')](_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x16')]);}_0x4bfd3d[_0xf31e('0x33')]=qs['sort'](_0x7a404a[_0xf31e('0x2b')]['sort']);_0x4bfd3d[_0xf31e('0x34')]=qs[_0xf31e('0x2d')](_[_0xf31e('0x35')](_0x7a404a[_0xf31e('0x2b')],_0xfe0803[_0xf31e('0x2d')]),_0x5a3930);if(_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x36')]){_0x4bfd3d[_0xf31e('0x34')]=_[_0xf31e('0x37')](_0x4bfd3d[_0xf31e('0x34')],{'$or':[{'key':{'$like':'%'+_0x7a404a[_0xf31e('0x2b')]['filter']+'%'}},{'value':{'$like':'%'+_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x36')]+'%'}}]});}_0x4bfd3d=_[_0xf31e('0x37')]({},_0x4bfd3d,_0x7a404a['options']);var _0x50f79d={'where':_0x4bfd3d[_0xf31e('0x34')]};return db[_0xf31e('0x38')][_0xf31e('0x19')](_0x50f79d)[_0xf31e('0x1f')](function(_0x48823b){_0x57c983[_0xf31e('0x19')]=_0x48823b;if(_0x7a404a[_0xf31e('0x2b')][_0xf31e('0x39')]){_0x4bfd3d['include']=[{'all':!![]}];}return db[_0xf31e('0x38')]['findAll'](_0x4bfd3d);})[_0xf31e('0x1f')](function(_0x2a6a6c){_0x57c983[_0xf31e('0x3a')]=_0x2a6a6c;return _0x57c983;})[_0xf31e('0x1f')](respondWithFilteredResult(_0x466e8d,_0x4bfd3d))[_0xf31e('0x3b')](handleError(_0x466e8d,null));};exports[_0xf31e('0x3c')]=function(_0xfaba17,_0x33aea3){var _0xfb0e17={'raw':!![],'where':{'id':_0xfaba17[_0xf31e('0x3d')]['id']}},_0x1725ca={};_0x1725ca[_0xf31e('0x2a')]=_[_0xf31e('0x2c')](db[_0xf31e('0x38')][_0xf31e('0x27')]);_0x1725ca[_0xf31e('0x2b')]=_[_0xf31e('0x2c')](_0xfaba17['query']);_0x1725ca[_0xf31e('0x2d')]=_['intersection'](_0x1725ca[_0xf31e('0x2a')],_0x1725ca[_0xf31e('0x2b')]);_0xfb0e17[_0xf31e('0x2f')]=_[_0xf31e('0x2e')](_0x1725ca[_0xf31e('0x2a')],qs[_0xf31e('0x30')](_0xfaba17[_0xf31e('0x2b')][_0xf31e('0x30')]));_0xfb0e17[_0xf31e('0x2f')]=_0xfb0e17['attributes']['length']?_0xfb0e17[_0xf31e('0x2f')]:_0x1725ca['model'];if(_0xfaba17[_0xf31e('0x2b')][_0xf31e('0x39')]){_0xfb0e17[_0xf31e('0x3e')]=[{'all':!![]}];}_0xfb0e17=_[_0xf31e('0x37')]({},_0xfb0e17,_0xfaba17[_0xf31e('0x3f')]);return db[_0xf31e('0x38')][_0xf31e('0x40')](_0xfb0e17)[_0xf31e('0x1f')](handleEntityNotFound(_0x33aea3,null))[_0xf31e('0x1f')](respondWithResult(_0x33aea3,null))['catch'](handleError(_0x33aea3,null));};exports[_0xf31e('0x41')]=function(_0x441428,_0x5a2caa){if(_0x441428[_0xf31e('0x42')]['id']){delete _0x441428[_0xf31e('0x42')]['id'];}return db[_0xf31e('0x38')][_0xf31e('0x40')]({'where':{'id':_0x441428[_0xf31e('0x3d')]['id']}})[_0xf31e('0x1f')](handleEntityNotFound(_0x5a2caa,null))[_0xf31e('0x1f')](saveUpdates(_0x441428[_0xf31e('0x42')],null))[_0xf31e('0x1f')](respondWithResult(_0x5a2caa,null))['catch'](handleError(_0x5a2caa,null));};exports[_0xf31e('0x20')]=function(_0x270044,_0x76f190){return db['CannedAnswer'][_0xf31e('0x40')]({'where':{'id':_0x270044[_0xf31e('0x3d')]['id']}})[_0xf31e('0x1f')](handleEntityNotFound(_0x76f190,null))[_0xf31e('0x1f')](removeEntity(_0x76f190,null))[_0xf31e('0x3b')](handleError(_0x76f190,null));};exports[_0xf31e('0x43')]=function(_0x118116,_0x4733f5){var _0x38bce3={'key':_0x118116[_0xf31e('0x42')][_0xf31e('0x29')]};if(_0x118116[_0xf31e('0x42')][_0xf31e('0x44')]){_0x38bce3[_0xf31e('0x44')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x44')];}else if(_0x118116[_0xf31e('0x42')][_0xf31e('0x45')]){_0x38bce3[_0xf31e('0x45')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x45')];}else if(_0x118116['body']['OpenchannelAccountId']){_0x38bce3[_0xf31e('0x46')]=_0x118116[_0xf31e('0x42')][_0xf31e('0x46')];}else if(_0x118116[_0xf31e('0x42')][_0xf31e('0x47')]){_0x38bce3['ChatWebsiteId']=_0x118116[_0xf31e('0x42')]['ChatWebsiteId'];}return db[_0xf31e('0x38')]['find']({'where':_0x38bce3})[_0xf31e('0x1f')](function(_0x272a94){if(_0x272a94){throw new db['Sequelize'][(_0xf31e('0x48'))](_0xf31e('0x49'));}return db[_0xf31e('0x38')][_0xf31e('0x43')](_0x118116[_0xf31e('0x42')]);})['then'](function(_0x2567b4){var _0x4faa87=_0x118116['user'][_0xf31e('0x4a')]({'plain':!![]});if(!_0x4faa87)throw new Error(_0xf31e('0x4b'));if(_0x4faa87[_0xf31e('0x4c')]==='user'){var _0x483064=_0x2567b4[_0xf31e('0x4a')]({'plain':!![]});return db[_0xf31e('0x4d')][_0xf31e('0x40')]({'where':{'name':_0xf31e('0x4e'),'userProfileId':_0x4faa87[_0xf31e('0x4f')]},'raw':!![]})['then'](function(_0x29d37c){if(_0x29d37c&&_0x29d37c['autoAssociation']===0x0){return db['UserProfileResource'][_0xf31e('0x43')]({'name':_0x483064[_0xf31e('0x23')],'resourceId':_0x483064['id'],'type':_0x29d37c[_0xf31e('0x23')],'sectionId':_0x29d37c['id']},{})[_0xf31e('0x1f')](function(){return _0x2567b4;});}else{return _0x2567b4;}})[_0xf31e('0x3b')](function(_0x331afd){logger[_0xf31e('0x22')](_0xf31e('0x50'),_0x331afd);throw _0x331afd;});}return _0x2567b4;})['then'](respondWithResult(_0x4733f5,0xc9))['catch'](handleError(_0x4733f5,null));};
\ No newline at end of file
index 0f13db1..115b7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa28=['../../config/environment','./cannedAnswer.attributes','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4074ce,_0x21cf32){var _0x2313a3=function(_0x415f86){while(--_0x415f86){_0x4074ce['push'](_0x4074ce['shift']());}};_0x2313a3(++_0x21cf32);}(_0xfa28,0x1c6));var _0x8fa2=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xfa28[_0x1969a7];return _0x3d665f;};'use strict';var _=require(_0x8fa2('0x0'));var util=require(_0x8fa2('0x1'));var logger=require(_0x8fa2('0x2'))(_0x8fa2('0x3'));var moment=require(_0x8fa2('0x4'));var BPromise=require(_0x8fa2('0x5'));var rp=require(_0x8fa2('0x6'));var fs=require('fs');var path=require(_0x8fa2('0x7'));var rimraf=require('rimraf');var config=require(_0x8fa2('0x8'));var attributes=require(_0x8fa2('0x9'));module['exports']=function(_0x48263e,_0x4df001){return _0x48263e['define'](_0x8fa2('0xa'),attributes,{'tableName':_0x8fa2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8fa2('0xc'),'collate':_0x8fa2('0xd')});};
\ No newline at end of file
+var _0x4228=['bluebird','request-promise','../../config/environment','./cannedAnswer.attributes','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x1d321e,_0x2f57a8){var _0x4c9ab2=function(_0x503f73){while(--_0x503f73){_0x1d321e['push'](_0x1d321e['shift']());}};_0x4c9ab2(++_0x2f57a8);}(_0x4228,0x1ab));var _0x8422=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4228[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x8422('0x0'));var util=require(_0x8422('0x1'));var logger=require(_0x8422('0x2'))(_0x8422('0x3'));var moment=require(_0x8422('0x4'));var BPromise=require(_0x8422('0x5'));var rp=require(_0x8422('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8422('0x7'));var attributes=require(_0x8422('0x8'));module['exports']=function(_0x191b2e,_0x474173){return _0x191b2e[_0x8422('0x9')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8422('0xa'),'collate':_0x8422('0xb')});};
\ No newline at end of file
index 6ccdd51..20a6afb 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(_0x4903fd,_0x33ace1){var _0x54adfb=function(_0x11c4c6){while(--_0x11c4c6){_0x4903fd['push'](_0x4903fd['shift']());}};_0x54adfb(++_0x33ace1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'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(_0x4d626b,_0x4f169c){var _0x565663=function(_0x6671a2){while(--_0x6671a2){_0x4d626b['push'](_0x4d626b['shift']());}};_0x565663(++_0x4f169c);}(_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
index 55266ad..e530cc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2fc=['./cannedAnswer.controller','isAuthenticated','index','get','/:id','post','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x215f48,_0x2956c7){var _0x4c70aa=function(_0xd83ac){while(--_0xd83ac){_0x215f48['push'](_0x215f48['shift']());}};_0x4c70aa(++_0x2956c7);}(_0xd2fc,0xac));var _0xcd2f=function(_0x246f8a,_0x334a61){_0x246f8a=_0x246f8a-0x0;var _0x141c51=_0xd2fc[_0x246f8a];return _0x141c51;};'use strict';var multer=require('multer');var util=require(_0xcd2f('0x0'));var path=require(_0xcd2f('0x1'));var timeout=require(_0xcd2f('0x2'));var express=require(_0xcd2f('0x3'));var router=express[_0xcd2f('0x4')]();var fs_extra=require(_0xcd2f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xcd2f('0x6'));var config=require(_0xcd2f('0x7'));var controller=require(_0xcd2f('0x8'));router['get']('/',auth[_0xcd2f('0x9')](),controller[_0xcd2f('0xa')]);router[_0xcd2f('0xb')](_0xcd2f('0xc'),auth[_0xcd2f('0x9')](),controller['show']);router[_0xcd2f('0xd')]('/',auth[_0xcd2f('0x9')](),controller['create']);router[_0xcd2f('0xe')](_0xcd2f('0xc'),auth[_0xcd2f('0x9')](),controller[_0xcd2f('0xf')]);router['delete'](_0xcd2f('0xc'),auth[_0xcd2f('0x9')](),controller[_0xcd2f('0x10')]);module[_0xcd2f('0x11')]=router;
\ No newline at end of file
+var _0xce0f=['show','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated'];(function(_0x23b1d5,_0x3043fa){var _0x3f5702=function(_0xc9b7eb){while(--_0xc9b7eb){_0x23b1d5['push'](_0x23b1d5['shift']());}};_0x3f5702(++_0x3043fa);}(_0xce0f,0xf1));var _0xfce0=function(_0x362be5,_0x156a41){_0x362be5=_0x362be5-0x0;var _0x71a015=_0xce0f[_0x362be5];return _0x71a015;};'use strict';var multer=require('multer');var util=require(_0xfce0('0x0'));var path=require(_0xfce0('0x1'));var timeout=require(_0xfce0('0x2'));var express=require(_0xfce0('0x3'));var router=express[_0xfce0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfce0('0x5'));var interaction=require(_0xfce0('0x6'));var config=require(_0xfce0('0x7'));var controller=require('./cannedAnswer.controller');router[_0xfce0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfce0('0x8')](_0xfce0('0x9'),auth[_0xfce0('0xa')](),controller[_0xfce0('0xb')]);router[_0xfce0('0xc')]('/',auth[_0xfce0('0xa')](),controller[_0xfce0('0xd')]);router[_0xfce0('0xe')]('/:id',auth[_0xfce0('0xa')](),controller[_0xfce0('0xf')]);router[_0xfce0('0x10')](_0xfce0('0x9'),auth[_0xfce0('0xa')](),controller['destroy']);module[_0xfce0('0x11')]=router;
\ No newline at end of file
index 2cc350e..5d83f6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc52f=['exports','STRING','INTEGER','sequelize'];(function(_0x47216b,_0x9e6e12){var _0x4c1958=function(_0x3f42a0){while(--_0x3f42a0){_0x47216b['push'](_0x47216b['shift']());}};_0x4c1958(++_0x9e6e12);}(_0xc52f,0x1e3));var _0xfc52=function(_0x1cb3ef,_0x373350){_0x1cb3ef=_0x1cb3ef-0x0;var _0x2fc772=_0xc52f[_0x1cb3ef];return _0x2fc772;};'use strict';var Sequelize=require(_0xfc52('0x0'));module[_0xfc52('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xfc52('0x2')]},'dst':{'type':Sequelize[_0xfc52('0x2')]},'dcontext':{'type':Sequelize[_0xfc52('0x2')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xfc52('0x2')]},'lastdata':{'type':Sequelize[_0xfc52('0x2')]},'duration':{'type':Sequelize[_0xfc52('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfc52('0x2')]},'amaflags':{'type':Sequelize[_0xfc52('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xfc52('0x2')]},'userfield':{'type':Sequelize[_0xfc52('0x2')]},'uniqueid':{'type':Sequelize[_0xfc52('0x2')]},'linkedid':{'type':Sequelize[_0xfc52('0x2')]},'sequence':{'type':Sequelize[_0xfc52('0x2')]},'peeraccount':{'type':Sequelize[_0xfc52('0x2')]},'type':{'type':Sequelize[_0xfc52('0x2')]},'tag':{'type':Sequelize[_0xfc52('0x2')]}};
\ No newline at end of file
+var _0xbf83=['INTEGER','sequelize','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x4d4e7c,_0x1a8689){var _0x408125=function(_0x4db103){while(--_0x4db103){_0x4d4e7c['push'](_0x4d4e7c['shift']());}};_0x408125(++_0x1a8689);}(_0xbf83,0x11e));var _0x3bf8=function(_0x494721,_0x44d181){_0x494721=_0x494721-0x0;var _0x248b62=_0xbf83[_0x494721];return _0x248b62;};'use strict';var Sequelize=require(_0x3bf8('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x3bf8('0x1')],'allowNull':![],'defaultValue':_0x3bf8('0x2')},'clid':{'type':Sequelize[_0x3bf8('0x3')]},'src':{'type':Sequelize[_0x3bf8('0x3')]},'dst':{'type':Sequelize[_0x3bf8('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x3bf8('0x3')]},'lastapp':{'type':Sequelize[_0x3bf8('0x3')]},'lastdata':{'type':Sequelize[_0x3bf8('0x3')]},'duration':{'type':Sequelize[_0x3bf8('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x3bf8('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x3bf8('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x3bf8('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x3bf8('0x3')]},'peeraccount':{'type':Sequelize[_0x3bf8('0x3')]},'type':{'type':Sequelize[_0x3bf8('0x3')]},'tag':{'type':Sequelize[_0x3bf8('0x3')]}};
\ No newline at end of file
index f73ce0d..47ba80d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x029b=['fieldName','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','merge','type','VIRTUAL','name','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','error','stack','send','index','map','Cdr'];(function(_0xc173a4,_0x4bb6ea){var _0x26f308=function(_0x42f1df){while(--_0x42f1df){_0xc173a4['push'](_0xc173a4['shift']());}};_0x26f308(++_0x4bb6ea);}(_0x029b,0x66));var _0xb029=function(_0x24e79f,_0x5dfa39){_0x24e79f=_0x24e79f-0x0;var _0x4e469f=_0x029b[_0x24e79f];return _0x4e469f;};'use strict';var emlformat=require(_0xb029('0x0'));var rimraf=require(_0xb029('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb029('0x2'));var rp=require(_0xb029('0x3'));var moment=require('moment');var BPromise=require(_0xb029('0x4'));var Mustache=require(_0xb029('0x5'));var util=require('util');var path=require('path');var sox=require(_0xb029('0x6'));var csv=require(_0xb029('0x7'));var ejs=require(_0xb029('0x8'));var fs=require('fs');var fs_extra=require(_0xb029('0x9'));var _=require(_0xb029('0xa'));var squel=require('squel');var crypto=require(_0xb029('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb029('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb029('0xd'));var Papa=require('papaparse');var Redis=require(_0xb029('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb029('0xf'));var as=require(_0xb029('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb029('0x11'))(_0xb029('0x12'));var utils=require(_0xb029('0x13'));var config=require(_0xb029('0x14'));var licenseUtil=require(_0xb029('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c87c,_0x4b6202){_0x4b6202=_0x4b6202||0xcc;return function(_0x2ba6c2){if(_0x2ba6c2){return _0x13c87c[_0xb029('0x16')](_0x4b6202);}return _0x13c87c[_0xb029('0x17')](_0x4b6202)[_0xb029('0x18')]();};}function respondWithResult(_0x5ce391,_0x337ab5){_0x337ab5=_0x337ab5||0xc8;return function(_0x356552){if(_0x356552){return _0x5ce391[_0xb029('0x17')](_0x337ab5)['json'](_0x356552);}};}function respondWithFilteredResult(_0x5617c,_0x3afa2b){return function(_0x379fdb){if(_0x379fdb){var _0x3434cf=typeof _0x3afa2b[_0xb029('0x19')]===_0xb029('0x1a')&&typeof _0x3afa2b[_0xb029('0x1b')]===_0xb029('0x1a');var _0x3f91cb=_0x379fdb['count'];var _0x58fbe7=_0x3434cf?0x0:_0x3afa2b[_0xb029('0x19')];var _0x5373cd=_0x3434cf?_0x379fdb[_0xb029('0x1c')]:_0x3afa2b[_0xb029('0x19')]+_0x3afa2b[_0xb029('0x1b')];var _0x497ca0;if(_0x5373cd>=_0x3f91cb){_0x5373cd=_0x3f91cb;_0x497ca0=0xc8;}else{_0x497ca0=0xce;}_0x5617c['status'](_0x497ca0);return _0x5617c[_0xb029('0x1d')](_0xb029('0x1e'),_0x58fbe7+'-'+_0x5373cd+'/'+_0x3f91cb)[_0xb029('0x1f')](_0x379fdb);}return null;};}function patchUpdates(_0x3381b2){return function(_0x3c4396){try{jsonpatch[_0xb029('0x20')](_0x3c4396,_0x3381b2,!![]);}catch(_0x530486){return BPromise['reject'](_0x530486);}return _0x3c4396['save']();};}function saveUpdates(_0x5a79fa,_0x3e1dc4){return function(_0x1e16a3){if(_0x1e16a3){return _0x1e16a3[_0xb029('0x21')](_0x5a79fa)[_0xb029('0x22')](function(_0x500bb6){return _0x500bb6;});}return null;};}function removeEntity(_0x3642b5,_0x379ef3){return function(_0x42b91e){if(_0x42b91e){return _0x42b91e[_0xb029('0x23')]()[_0xb029('0x22')](function(){_0x3642b5[_0xb029('0x17')](0xcc)[_0xb029('0x18')]();});}};}function handleEntityNotFound(_0x3eb5ac,_0x147ad0){return function(_0x3671e6){if(!_0x3671e6){_0x3eb5ac[_0xb029('0x16')](0x194);}return _0x3671e6;};}function handleError(_0x22dccd,_0x279e4a){_0x279e4a=_0x279e4a||0x1f4;return function(_0x599a14){logger[_0xb029('0x24')](_0x599a14[_0xb029('0x25')]);if(_0x599a14['name']){delete _0x599a14['name'];}_0x22dccd[_0xb029('0x17')](_0x279e4a)[_0xb029('0x26')](_0x599a14);};}exports[_0xb029('0x27')]=function(_0x45cb0c,_0x3632a0){var _0x4af2ad={},_0x605a61={},_0x4a4100={'count':0x0,'rows':[]};var _0x2b2d98=_[_0xb029('0x28')](db[_0xb029('0x29')]['rawAttributes'],function(_0x1aa94b){return{'name':_0x1aa94b[_0xb029('0x2a')],'type':_0x1aa94b['type'][_0xb029('0x2b')]};});_0x605a61['model']=_[_0xb029('0x28')](_0x2b2d98,'name');_0x605a61[_0xb029('0x2c')]=_[_0xb029('0x2d')](_0x45cb0c[_0xb029('0x2c')]);_0x605a61[_0xb029('0x2e')]=_[_0xb029('0x2f')](_0x605a61[_0xb029('0x30')],_0x605a61[_0xb029('0x2c')]);_0x4af2ad[_0xb029('0x31')]=_['intersection'](_0x605a61[_0xb029('0x30')],qs[_0xb029('0x32')](_0x45cb0c[_0xb029('0x2c')]['fields']));_0x4af2ad[_0xb029('0x31')]=_0x4af2ad[_0xb029('0x31')]['length']?_0x4af2ad[_0xb029('0x31')]:_0x605a61['model'];if(!_0x45cb0c[_0xb029('0x2c')]['hasOwnProperty'](_0xb029('0x33'))){_0x4af2ad[_0xb029('0x1b')]=qs[_0xb029('0x1b')](_0x45cb0c[_0xb029('0x2c')][_0xb029('0x1b')]);_0x4af2ad[_0xb029('0x19')]=qs[_0xb029('0x19')](_0x45cb0c['query'][_0xb029('0x19')]);}_0x4af2ad[_0xb029('0x34')]=qs['sort'](_0x45cb0c[_0xb029('0x2c')][_0xb029('0x35')]);_0x4af2ad[_0xb029('0x36')]=qs[_0xb029('0x2e')](_['pick'](_0x45cb0c[_0xb029('0x2c')],_0x605a61[_0xb029('0x2e')]),_0x2b2d98);if(_0x45cb0c[_0xb029('0x2c')]['filter']){_0x4af2ad[_0xb029('0x36')]=_[_0xb029('0x37')](_0x4af2ad[_0xb029('0x36')],{'$or':_[_0xb029('0x28')](_0x2b2d98,function(_0x109fe6){if(_0x109fe6[_0xb029('0x38')]!==_0xb029('0x39')){var _0x30cb15={};_0x30cb15[_0x109fe6[_0xb029('0x3a')]]={'$like':'%'+_0x45cb0c[_0xb029('0x2c')]['filter']+'%'};return _0x30cb15;}})});}_0x4af2ad=_[_0xb029('0x37')]({},_0x4af2ad,_0x45cb0c[_0xb029('0x3b')]);var _0x117b1a={'where':_0x4af2ad['where']};return db['Cdr']['count'](_0x117b1a)[_0xb029('0x22')](function(_0x41a857){_0x4a4100['count']=_0x41a857;if(_0x45cb0c[_0xb029('0x2c')][_0xb029('0x3c')]){_0x4af2ad[_0xb029('0x3d')]=[{'all':!![]}];}return db[_0xb029('0x29')][_0xb029('0x3e')](_0x4af2ad);})['then'](function(_0x2f5599){_0x4a4100[_0xb029('0x3f')]=_0x2f5599;return _0x4a4100;})['then'](respondWithFilteredResult(_0x3632a0,_0x4af2ad))[_0xb029('0x40')](handleError(_0x3632a0,null));};exports[_0xb029('0x41')]=function(_0x3ab1ed,_0x56a470){var _0x100680={'raw':!![],'where':{'id':_0x3ab1ed['params']['id']}},_0x72212c={};_0x72212c['model']=_[_0xb029('0x2d')](db[_0xb029('0x29')][_0xb029('0x42')]);_0x72212c[_0xb029('0x2c')]=_['keys'](_0x3ab1ed['query']);_0x72212c[_0xb029('0x2e')]=_['intersection'](_0x72212c[_0xb029('0x30')],_0x72212c['query']);_0x100680[_0xb029('0x31')]=_[_0xb029('0x2f')](_0x72212c[_0xb029('0x30')],qs[_0xb029('0x32')](_0x3ab1ed[_0xb029('0x2c')][_0xb029('0x32')]));_0x100680['attributes']=_0x100680[_0xb029('0x31')]['length']?_0x100680['attributes']:_0x72212c[_0xb029('0x30')];if(_0x3ab1ed['query'][_0xb029('0x3c')]){_0x100680['include']=[{'all':!![]}];}_0x100680=_[_0xb029('0x37')]({},_0x100680,_0x3ab1ed[_0xb029('0x3b')]);return db[_0xb029('0x29')][_0xb029('0x43')](_0x100680)['then'](handleEntityNotFound(_0x56a470,null))[_0xb029('0x22')](respondWithResult(_0x56a470,null))[_0xb029('0x40')](handleError(_0x56a470,null));};exports[_0xb029('0x44')]=function(_0x39782b,_0x370b39){return db[_0xb029('0x29')][_0xb029('0x44')](_0x39782b[_0xb029('0x45')],{})[_0xb029('0x22')](respondWithResult(_0x370b39,0xc9))[_0xb029('0x40')](handleError(_0x370b39,null));};exports['update']=function(_0x6c5bd5,_0x2345cd){if(_0x6c5bd5[_0xb029('0x45')]['id']){delete _0x6c5bd5[_0xb029('0x45')]['id'];}return db['Cdr'][_0xb029('0x43')]({'where':{'id':_0x6c5bd5['params']['id']}})[_0xb029('0x22')](handleEntityNotFound(_0x2345cd,null))[_0xb029('0x22')](saveUpdates(_0x6c5bd5[_0xb029('0x45')],null))[_0xb029('0x22')](respondWithResult(_0x2345cd,null))[_0xb029('0x40')](handleError(_0x2345cd,null));};exports['destroy']=function(_0x4d994f,_0x35b25e){return db[_0xb029('0x29')][_0xb029('0x43')]({'where':{'id':_0x4d994f[_0xb029('0x46')]['id']}})[_0xb029('0x22')](handleEntityNotFound(_0x35b25e,null))[_0xb029('0x22')](removeEntity(_0x35b25e,null))['catch'](handleError(_0x35b25e,null));};exports[_0xb029('0x47')]=function(_0x1b584d,_0x7eee04){return db['Cdr']['describe']()[_0xb029('0x22')](respondWithResult(_0x7eee04,null))['catch'](handleError(_0x7eee04,null));};
\ No newline at end of file
+var _0x950a=['end','status','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0x2cacef,_0xba1573){var _0x289ba6=function(_0x4ac8b9){while(--_0x4ac8b9){_0x2cacef['push'](_0x2cacef['shift']());}};_0x289ba6(++_0xba1573);}(_0x950a,0x111));var _0xa950=function(_0x368a10,_0x1c1555){_0x368a10=_0x368a10-0x0;var _0x36e702=_0x950a[_0x368a10];return _0x36e702;};'use strict';var emlformat=require(_0xa950('0x0'));var rimraf=require(_0xa950('0x1'));var zipdir=require(_0xa950('0x2'));var jsonpatch=require(_0xa950('0x3'));var rp=require('request-promise');var moment=require(_0xa950('0x4'));var BPromise=require(_0xa950('0x5'));var Mustache=require(_0xa950('0x6'));var util=require(_0xa950('0x7'));var path=require('path');var sox=require(_0xa950('0x8'));var csv=require(_0xa950('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa950('0xa'));var _=require(_0xa950('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa950('0xc'));var deskjs=require(_0xa950('0xd'));var toCsv=require(_0xa950('0x9'));var querystring=require(_0xa950('0xe'));var Papa=require(_0xa950('0xf'));var Redis=require(_0xa950('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa950('0x11'));var logger=require('../../config/logger')(_0xa950('0x12'));var utils=require(_0xa950('0x13'));var config=require(_0xa950('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa950('0x15'))['db'];function respondWithStatusCode(_0x4f9c04,_0x10e64a){_0x10e64a=_0x10e64a||0xcc;return function(_0x439097){if(_0x439097){return _0x4f9c04[_0xa950('0x16')](_0x10e64a);}return _0x4f9c04['status'](_0x10e64a)[_0xa950('0x17')]();};}function respondWithResult(_0x2aed6a,_0x1c7adb){_0x1c7adb=_0x1c7adb||0xc8;return function(_0x4ba74f){if(_0x4ba74f){return _0x2aed6a[_0xa950('0x18')](_0x1c7adb)[_0xa950('0x19')](_0x4ba74f);}};}function respondWithFilteredResult(_0x425201,_0x5d5f4c){return function(_0x31b25b){if(_0x31b25b){var _0x46fca7=typeof _0x5d5f4c[_0xa950('0x1a')]==='undefined'&&typeof _0x5d5f4c[_0xa950('0x1b')]===_0xa950('0x1c');var _0x162586=_0x31b25b[_0xa950('0x1d')];var _0x16aabc=_0x46fca7?0x0:_0x5d5f4c[_0xa950('0x1a')];var _0x2b0e44=_0x46fca7?_0x31b25b[_0xa950('0x1d')]:_0x5d5f4c[_0xa950('0x1a')]+_0x5d5f4c[_0xa950('0x1b')];var _0x28fedf;if(_0x2b0e44>=_0x162586){_0x2b0e44=_0x162586;_0x28fedf=0xc8;}else{_0x28fedf=0xce;}_0x425201[_0xa950('0x18')](_0x28fedf);return _0x425201[_0xa950('0x1e')]('Content-Range',_0x16aabc+'-'+_0x2b0e44+'/'+_0x162586)[_0xa950('0x19')](_0x31b25b);}return null;};}function patchUpdates(_0x1a10fe){return function(_0x50abe1){try{jsonpatch[_0xa950('0x1f')](_0x50abe1,_0x1a10fe,!![]);}catch(_0x41c405){return BPromise['reject'](_0x41c405);}return _0x50abe1[_0xa950('0x20')]();};}function saveUpdates(_0x5ad191,_0x2eda79){return function(_0x14ada5){if(_0x14ada5){return _0x14ada5[_0xa950('0x21')](_0x5ad191)[_0xa950('0x22')](function(_0x5617cd){return _0x5617cd;});}return null;};}function removeEntity(_0x11b8af,_0x3f4633){return function(_0x31c135){if(_0x31c135){return _0x31c135[_0xa950('0x23')]()[_0xa950('0x22')](function(){_0x11b8af[_0xa950('0x18')](0xcc)[_0xa950('0x17')]();});}};}function handleEntityNotFound(_0x23cb20,_0x12dcb8){return function(_0xc4894b){if(!_0xc4894b){_0x23cb20[_0xa950('0x16')](0x194);}return _0xc4894b;};}function handleError(_0x26f366,_0x43f8c8){_0x43f8c8=_0x43f8c8||0x1f4;return function(_0x5d82d8){logger[_0xa950('0x24')](_0x5d82d8[_0xa950('0x25')]);if(_0x5d82d8[_0xa950('0x26')]){delete _0x5d82d8[_0xa950('0x26')];}_0x26f366[_0xa950('0x18')](_0x43f8c8)[_0xa950('0x27')](_0x5d82d8);};}exports[_0xa950('0x28')]=function(_0x52e133,_0x19ad7a){var _0x442a94={},_0x5e4c94={},_0x44ee6e={'count':0x0,'rows':[]};var _0x2e7674=_[_0xa950('0x29')](db[_0xa950('0x2a')][_0xa950('0x2b')],function(_0x1945ca){return{'name':_0x1945ca[_0xa950('0x2c')],'type':_0x1945ca[_0xa950('0x2d')][_0xa950('0x2e')]};});_0x5e4c94[_0xa950('0x2f')]=_['map'](_0x2e7674,_0xa950('0x26'));_0x5e4c94['query']=_['keys'](_0x52e133[_0xa950('0x30')]);_0x5e4c94['filters']=_[_0xa950('0x31')](_0x5e4c94[_0xa950('0x2f')],_0x5e4c94[_0xa950('0x30')]);_0x442a94[_0xa950('0x32')]=_['intersection'](_0x5e4c94[_0xa950('0x2f')],qs['fields'](_0x52e133[_0xa950('0x30')][_0xa950('0x33')]));_0x442a94['attributes']=_0x442a94['attributes'][_0xa950('0x34')]?_0x442a94[_0xa950('0x32')]:_0x5e4c94[_0xa950('0x2f')];if(!_0x52e133[_0xa950('0x30')][_0xa950('0x35')](_0xa950('0x36'))){_0x442a94['limit']=qs['limit'](_0x52e133[_0xa950('0x30')]['limit']);_0x442a94[_0xa950('0x1a')]=qs[_0xa950('0x1a')](_0x52e133[_0xa950('0x30')][_0xa950('0x1a')]);}_0x442a94[_0xa950('0x37')]=qs[_0xa950('0x38')](_0x52e133[_0xa950('0x30')][_0xa950('0x38')]);_0x442a94[_0xa950('0x39')]=qs[_0xa950('0x3a')](_['pick'](_0x52e133[_0xa950('0x30')],_0x5e4c94['filters']),_0x2e7674);if(_0x52e133[_0xa950('0x30')][_0xa950('0x3b')]){_0x442a94['where']=_['merge'](_0x442a94[_0xa950('0x39')],{'$or':_[_0xa950('0x29')](_0x2e7674,function(_0x57e9cb){if(_0x57e9cb[_0xa950('0x2d')]!==_0xa950('0x3c')){var _0x4bf63b={};_0x4bf63b[_0x57e9cb[_0xa950('0x26')]]={'$like':'%'+_0x52e133[_0xa950('0x30')][_0xa950('0x3b')]+'%'};return _0x4bf63b;}})});}_0x442a94=_[_0xa950('0x3d')]({},_0x442a94,_0x52e133[_0xa950('0x3e')]);var _0x35cfcc={'where':_0x442a94[_0xa950('0x39')]};return db[_0xa950('0x2a')]['count'](_0x35cfcc)[_0xa950('0x22')](function(_0x1764b2){_0x44ee6e['count']=_0x1764b2;if(_0x52e133[_0xa950('0x30')][_0xa950('0x3f')]){_0x442a94[_0xa950('0x40')]=[{'all':!![]}];}return db['Cdr'][_0xa950('0x41')](_0x442a94);})[_0xa950('0x22')](function(_0x8bdd37){_0x44ee6e['rows']=_0x8bdd37;return _0x44ee6e;})['then'](respondWithFilteredResult(_0x19ad7a,_0x442a94))[_0xa950('0x42')](handleError(_0x19ad7a,null));};exports[_0xa950('0x43')]=function(_0x1f2572,_0x54dc62){var _0x49a235={'raw':!![],'where':{'id':_0x1f2572[_0xa950('0x44')]['id']}},_0x51f5a5={};_0x51f5a5[_0xa950('0x2f')]=_[_0xa950('0x45')](db[_0xa950('0x2a')][_0xa950('0x2b')]);_0x51f5a5['query']=_[_0xa950('0x45')](_0x1f2572[_0xa950('0x30')]);_0x51f5a5['filters']=_['intersection'](_0x51f5a5[_0xa950('0x2f')],_0x51f5a5[_0xa950('0x30')]);_0x49a235['attributes']=_['intersection'](_0x51f5a5['model'],qs['fields'](_0x1f2572[_0xa950('0x30')][_0xa950('0x33')]));_0x49a235['attributes']=_0x49a235['attributes'][_0xa950('0x34')]?_0x49a235['attributes']:_0x51f5a5[_0xa950('0x2f')];if(_0x1f2572[_0xa950('0x30')][_0xa950('0x3f')]){_0x49a235[_0xa950('0x40')]=[{'all':!![]}];}_0x49a235=_[_0xa950('0x3d')]({},_0x49a235,_0x1f2572[_0xa950('0x3e')]);return db[_0xa950('0x2a')][_0xa950('0x46')](_0x49a235)['then'](handleEntityNotFound(_0x54dc62,null))[_0xa950('0x22')](respondWithResult(_0x54dc62,null))['catch'](handleError(_0x54dc62,null));};exports[_0xa950('0x47')]=function(_0x42813e,_0x22675d){return db[_0xa950('0x2a')][_0xa950('0x47')](_0x42813e[_0xa950('0x48')],{})[_0xa950('0x22')](respondWithResult(_0x22675d,0xc9))[_0xa950('0x42')](handleError(_0x22675d,null));};exports[_0xa950('0x21')]=function(_0x4f777a,_0x3cf01c){if(_0x4f777a[_0xa950('0x48')]['id']){delete _0x4f777a[_0xa950('0x48')]['id'];}return db[_0xa950('0x2a')][_0xa950('0x46')]({'where':{'id':_0x4f777a['params']['id']}})[_0xa950('0x22')](handleEntityNotFound(_0x3cf01c,null))[_0xa950('0x22')](saveUpdates(_0x4f777a[_0xa950('0x48')],null))[_0xa950('0x22')](respondWithResult(_0x3cf01c,null))[_0xa950('0x42')](handleError(_0x3cf01c,null));};exports[_0xa950('0x23')]=function(_0x2752e7,_0x5dd6ce){return db[_0xa950('0x2a')][_0xa950('0x46')]({'where':{'id':_0x2752e7[_0xa950('0x44')]['id']}})['then'](handleEntityNotFound(_0x5dd6ce,null))['then'](removeEntity(_0x5dd6ce,null))[_0xa950('0x42')](handleError(_0x5dd6ce,null));};exports[_0xa950('0x49')]=function(_0x38c370,_0x16572e){return db[_0xa950('0x2a')][_0xa950('0x49')]()[_0xa950('0x22')](respondWithResult(_0x16572e,null))[_0xa950('0x42')](handleError(_0x16572e,null));};
\ No newline at end of file
index 5cbe2f5..1a8ea51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x4ad448,_0x3bf7ae){var _0x407f9d=function(_0x28e60b){while(--_0x28e60b){_0x4ad448['push'](_0x4ad448['shift']());}};_0x407f9d(++_0x3bf7ae);}(_0x7a54,0x106));var _0x47a5=function(_0x54fd0e,_0x5a3e93){_0x54fd0e=_0x54fd0e-0x0;var _0x576766=_0x7a54[_0x54fd0e];return _0x576766;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0xd8b4f,_0x3fe442){var _0x172698=function(_0x3bf2a9){while(--_0x3bf2a9){_0xd8b4f['push'](_0xd8b4f['shift']());}};_0x172698(++_0x3fe442);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 54f49e3..0770491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2602=['code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','error'];(function(_0x229672,_0x3d731a){var _0x290745=function(_0x23cc83){while(--_0x23cc83){_0x229672['push'](_0x229672['shift']());}};_0x290745(++_0x3d731a);}(_0x2602,0xc1));var _0x2260=function(_0x18ad19,_0x5c35a1){_0x18ad19=_0x18ad19-0x0;var _0x34d0cd=_0x2602[_0x18ad19];return _0x34d0cd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2260('0x0'));var BPromise=require(_0x2260('0x1'));var rs=require(_0x2260('0x2'));var fs=require('fs');var Redis=require(_0x2260('0x3'));var db=require(_0x2260('0x4'))['db'];var utils=require(_0x2260('0x5'));var logger=require(_0x2260('0x6'))(_0x2260('0x7'));var config=require('../../config/environment');var jayson=require(_0x2260('0x8'));var client=jayson[_0x2260('0x9')][_0x2260('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4721aa,_0x3483d9,_0x4ddb93){return new BPromise(function(_0x51021d,_0x4f03c4){return client[_0x2260('0xb')](_0x4721aa,_0x4ddb93)[_0x2260('0xc')](function(_0x1ba6af){logger[_0x2260('0xd')](_0x2260('0xe'),_0x3483d9,_0x2260('0xf'));logger['debug']('Cdr,\x20%s,\x20%s,\x20%s',_0x3483d9,_0x2260('0xf'),JSON['stringify'](_0x1ba6af));if(_0x1ba6af[_0x2260('0x10')]){if(_0x1ba6af['error'][_0x2260('0x11')]===0x1f4){logger[_0x2260('0x10')](_0x2260('0xe'),_0x3483d9,_0x1ba6af[_0x2260('0x10')][_0x2260('0x12')]);return _0x4f03c4(_0x1ba6af[_0x2260('0x10')][_0x2260('0x12')]);}logger[_0x2260('0x10')](_0x2260('0xe'),_0x3483d9,_0x1ba6af[_0x2260('0x10')][_0x2260('0x12')]);return _0x51021d(_0x1ba6af[_0x2260('0x10')][_0x2260('0x12')]);}else{logger['info'](_0x2260('0xe'),_0x3483d9,_0x2260('0xf'));_0x51021d(_0x1ba6af[_0x2260('0x13')][_0x2260('0x12')]);}})[_0x2260('0x14')](function(_0x1313e9){logger[_0x2260('0x10')](_0x2260('0xe'),_0x3483d9,_0x1313e9);_0x4f03c4(_0x1313e9);});});}
\ No newline at end of file
+var _0x5597=['Cdr,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x466957,_0x28f578){var _0x5894ce=function(_0x1e4117){while(--_0x1e4117){_0x466957['push'](_0x466957['shift']());}};_0x5894ce(++_0x28f578);}(_0x5597,0x117));var _0x7559=function(_0x353396,_0x265966){_0x353396=_0x353396-0x0;var _0xd5571=_0x5597[_0x353396];return _0xd5571;};'use strict';var _=require(_0x7559('0x0'));var util=require(_0x7559('0x1'));var moment=require(_0x7559('0x2'));var BPromise=require(_0x7559('0x3'));var rs=require(_0x7559('0x4'));var fs=require('fs');var Redis=require(_0x7559('0x5'));var db=require(_0x7559('0x6'))['db'];var utils=require(_0x7559('0x7'));var logger=require(_0x7559('0x8'))(_0x7559('0x9'));var config=require(_0x7559('0xa'));var jayson=require(_0x7559('0xb'));var client=jayson['client'][_0x7559('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4912ab,_0x510f1f,_0x4baceb){return new BPromise(function(_0x23da93,_0x5ba008){return client['request'](_0x4912ab,_0x4baceb)[_0x7559('0xd')](function(_0xf5dc2f){logger[_0x7559('0xe')]('Cdr,\x20%s,\x20%s',_0x510f1f,_0x7559('0xf'));logger[_0x7559('0x10')](_0x7559('0x11'),_0x510f1f,_0x7559('0xf'),JSON[_0x7559('0x12')](_0xf5dc2f));if(_0xf5dc2f[_0x7559('0x13')]){if(_0xf5dc2f[_0x7559('0x13')][_0x7559('0x14')]===0x1f4){logger['error'](_0x7559('0x15'),_0x510f1f,_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);return _0x5ba008(_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);}logger[_0x7559('0x13')](_0x7559('0x15'),_0x510f1f,_0xf5dc2f[_0x7559('0x13')][_0x7559('0x16')]);return _0x23da93(_0xf5dc2f['error']['message']);}else{logger['info'](_0x7559('0x15'),_0x510f1f,'request\x20sent');_0x23da93(_0xf5dc2f[_0x7559('0x17')]['message']);}})[_0x7559('0x18')](function(_0x2aace4){logger[_0x7559('0x13')](_0x7559('0x15'),_0x510f1f,_0x2aace4);_0x5ba008(_0x2aace4);});});}
\ No newline at end of file
index 9c6b068..548bee8 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(_0x581d90,_0x40fa2a){var _0x39247f=function(_0x2dfc96){while(--_0x2dfc96){_0x581d90['push'](_0x581d90['shift']());}};_0x39247f(++_0x40fa2a);}(_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 _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x47427f,_0x410bf6){var _0x36f236=function(_0x506227){while(--_0x506227){_0x47427f['push'](_0x47427f['shift']());}};_0x36f236(++_0x410bf6);}(_0xb10b,0x12a));var _0xbb10=function(_0x4717b8,_0x565c94){_0x4717b8=_0x4717b8-0x0;var _0x3daaa8=_0xb10b[_0x4717b8];return _0x3daaa8;};'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')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
index 143e651..d1109c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28aa=['noop','TEXT','STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x3bda96,_0x48a767){var _0x2ff5d3=function(_0x3a58e1){while(--_0x3a58e1){_0x3bda96['push'](_0x3bda96['shift']());}};_0x2ff5d3(++_0x48a767);}(_0x28aa,0x1d9));var _0xa28a=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x28aa[_0x710815];return _0x5b3b89;};'use strict';var Sequelize=require(_0xa28a('0x0'));module[_0xa28a('0x1')]={'priority':{'type':Sequelize[_0xa28a('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa28a('0x3')},'appdata':{'type':Sequelize[_0xa28a('0x4')]()},'description':{'type':Sequelize[_0xa28a('0x5')]},'interval':{'type':Sequelize[_0xa28a('0x5')],'defaultValue':_0xa28a('0x6')}};
\ No newline at end of file
+var _0x2d4c=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2d4c,0xdd));var _0xc2d4=function(_0x5854dc,_0xf3177a){_0x5854dc=_0x5854dc-0x0;var _0x167b6d=_0x2d4c[_0x5854dc];return _0x167b6d;};'use strict';var Sequelize=require('sequelize');module[_0xc2d4('0x0')]={'priority':{'type':Sequelize[_0xc2d4('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc2d4('0x2')},'appdata':{'type':Sequelize[_0xc2d4('0x3')]()},'description':{'type':Sequelize[_0xc2d4('0x4')]},'interval':{'type':Sequelize[_0xc2d4('0x4')],'defaultValue':_0xc2d4('0x5')}};
\ No newline at end of file
index d17fc02..0f6733a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa68=['intersection','model','fields','attributes','length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','show','params','ChatApplication','rawAttributes','query','keys','filters'];(function(_0x3a2118,_0x31fc3c){var _0x1d181d=function(_0x26a734){while(--_0x26a734){_0x3a2118['push'](_0x3a2118['shift']());}};_0x1d181d(++_0x31fc3c);}(_0xfa68,0x86));var _0x8fa6=function(_0xbea02,_0x2cb9e7){_0xbea02=_0xbea02-0x0;var _0x44d15b=_0xfa68[_0xbea02];return _0x44d15b;};'use strict';var emlformat=require(_0x8fa6('0x0'));var rimraf=require(_0x8fa6('0x1'));var zipdir=require(_0x8fa6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8fa6('0x3'));var moment=require(_0x8fa6('0x4'));var BPromise=require(_0x8fa6('0x5'));var Mustache=require('mustache');var util=require(_0x8fa6('0x6'));var path=require(_0x8fa6('0x7'));var sox=require(_0x8fa6('0x8'));var csv=require(_0x8fa6('0x9'));var ejs=require(_0x8fa6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fa6('0xb'));var squel=require(_0x8fa6('0xc'));var crypto=require('crypto');var jsforce=require(_0x8fa6('0xd'));var deskjs=require(_0x8fa6('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8fa6('0xf'));var Redis=require(_0x8fa6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8fa6('0x11'));var as=require(_0x8fa6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8fa6('0x13'));var utils=require(_0x8fa6('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8fa6('0x15'));var db=require(_0x8fa6('0x16'))['db'];function respondWithStatusCode(_0x59b7f9,_0x1ed90e){_0x1ed90e=_0x1ed90e||0xcc;return function(_0x1c621f){if(_0x1c621f){return _0x59b7f9['sendStatus'](_0x1ed90e);}return _0x59b7f9[_0x8fa6('0x17')](_0x1ed90e)[_0x8fa6('0x18')]();};}function respondWithResult(_0x22d83f,_0x86f607){_0x86f607=_0x86f607||0xc8;return function(_0xd2cce0){if(_0xd2cce0){return _0x22d83f['status'](_0x86f607)['json'](_0xd2cce0);}};}function respondWithFilteredResult(_0x3426a7,_0x5eff0e){return function(_0x1425a7){if(_0x1425a7){var _0x22bb50=typeof _0x5eff0e[_0x8fa6('0x19')]==='undefined'&&typeof _0x5eff0e[_0x8fa6('0x1a')]===_0x8fa6('0x1b');var _0x300f68=_0x1425a7['count'];var _0x329f97=_0x22bb50?0x0:_0x5eff0e[_0x8fa6('0x19')];var _0x8de44e=_0x22bb50?_0x1425a7[_0x8fa6('0x1c')]:_0x5eff0e['offset']+_0x5eff0e[_0x8fa6('0x1a')];var _0x516d42;if(_0x8de44e>=_0x300f68){_0x8de44e=_0x300f68;_0x516d42=0xc8;}else{_0x516d42=0xce;}_0x3426a7[_0x8fa6('0x17')](_0x516d42);return _0x3426a7[_0x8fa6('0x1d')](_0x8fa6('0x1e'),_0x329f97+'-'+_0x8de44e+'/'+_0x300f68)[_0x8fa6('0x1f')](_0x1425a7);}return null;};}function patchUpdates(_0x50e633){return function(_0x3072f7){try{jsonpatch[_0x8fa6('0x20')](_0x3072f7,_0x50e633,!![]);}catch(_0x5b6acb){return BPromise[_0x8fa6('0x21')](_0x5b6acb);}return _0x3072f7[_0x8fa6('0x22')]();};}function saveUpdates(_0x29d361,_0x50f8d2){return function(_0x149ace){if(_0x149ace){return _0x149ace[_0x8fa6('0x23')](_0x29d361)[_0x8fa6('0x24')](function(_0x49225a){return _0x49225a;});}return null;};}function removeEntity(_0x59f0b6,_0x588001){return function(_0x283805){if(_0x283805){return _0x283805[_0x8fa6('0x25')]()['then'](function(){_0x59f0b6['status'](0xcc)[_0x8fa6('0x18')]();});}};}function handleEntityNotFound(_0x3f86d8,_0x5775b7){return function(_0x57db95){if(!_0x57db95){_0x3f86d8[_0x8fa6('0x26')](0x194);}return _0x57db95;};}function handleError(_0x1914bc,_0x424546){_0x424546=_0x424546||0x1f4;return function(_0x4efd81){logger[_0x8fa6('0x27')](_0x4efd81[_0x8fa6('0x28')]);if(_0x4efd81['name']){delete _0x4efd81[_0x8fa6('0x29')];}_0x1914bc[_0x8fa6('0x17')](_0x424546)['send'](_0x4efd81);};}exports[_0x8fa6('0x2a')]=function(_0x39cf7c,_0x4cdbdb){var _0x5e1a88={'raw':!![],'where':{'id':_0x39cf7c[_0x8fa6('0x2b')]['id']}},_0x23fdc9={};_0x23fdc9['model']=_['keys'](db[_0x8fa6('0x2c')][_0x8fa6('0x2d')]);_0x23fdc9[_0x8fa6('0x2e')]=_[_0x8fa6('0x2f')](_0x39cf7c[_0x8fa6('0x2e')]);_0x23fdc9[_0x8fa6('0x30')]=_[_0x8fa6('0x31')](_0x23fdc9[_0x8fa6('0x32')],_0x23fdc9['query']);_0x5e1a88['attributes']=_[_0x8fa6('0x31')](_0x23fdc9['model'],qs[_0x8fa6('0x33')](_0x39cf7c[_0x8fa6('0x2e')][_0x8fa6('0x33')]));_0x5e1a88['attributes']=_0x5e1a88[_0x8fa6('0x34')][_0x8fa6('0x35')]?_0x5e1a88['attributes']:_0x23fdc9[_0x8fa6('0x32')];if(_0x39cf7c[_0x8fa6('0x2e')][_0x8fa6('0x36')]){_0x5e1a88[_0x8fa6('0x37')]=[{'all':!![]}];}_0x5e1a88=_[_0x8fa6('0x38')]({},_0x5e1a88,_0x39cf7c[_0x8fa6('0x39')]);return db[_0x8fa6('0x2c')][_0x8fa6('0x3a')](_0x5e1a88)[_0x8fa6('0x24')](handleEntityNotFound(_0x4cdbdb,null))[_0x8fa6('0x24')](respondWithResult(_0x4cdbdb,null))[_0x8fa6('0x3b')](handleError(_0x4cdbdb,null));};exports[_0x8fa6('0x23')]=function(_0x4f86ae,_0x309d0c){if(_0x4f86ae[_0x8fa6('0x3c')]['id']){delete _0x4f86ae[_0x8fa6('0x3c')]['id'];}return db[_0x8fa6('0x2c')][_0x8fa6('0x3a')]({'where':{'id':_0x4f86ae[_0x8fa6('0x2b')]['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x309d0c,null))['then'](saveUpdates(_0x4f86ae['body'],null))[_0x8fa6('0x24')](respondWithResult(_0x309d0c,null))['catch'](handleError(_0x309d0c,null));};exports['destroy']=function(_0x5b2d34,_0x5087d3){return db['ChatApplication']['find']({'where':{'id':_0x5b2d34[_0x8fa6('0x2b')]['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x5087d3,null))[_0x8fa6('0x24')](removeEntity(_0x5087d3,null))['catch'](handleError(_0x5087d3,null));};
\ No newline at end of file
+var _0x9000=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','then','destroy','stack','name','show','params','keys','rawAttributes','query','filters','intersection','model','fields','attributes','length','includeAll','merge','options','ChatApplication','find','catch','update','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0xd6bcb2,_0x5f5309){var _0x5df1d4=function(_0x4a299e){while(--_0x4a299e){_0xd6bcb2['push'](_0xd6bcb2['shift']());}};_0x5df1d4(++_0x5f5309);}(_0x9000,0x19e));var _0x0900=function(_0x1f0c9b,_0x234e61){_0x1f0c9b=_0x1f0c9b-0x0;var _0x1283e6=_0x9000[_0x1f0c9b];return _0x1283e6;};'use strict';var emlformat=require(_0x0900('0x0'));var rimraf=require(_0x0900('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0900('0x2'));var rp=require(_0x0900('0x3'));var moment=require(_0x0900('0x4'));var BPromise=require(_0x0900('0x5'));var Mustache=require(_0x0900('0x6'));var util=require(_0x0900('0x7'));var path=require(_0x0900('0x8'));var sox=require(_0x0900('0x9'));var csv=require(_0x0900('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0900('0xb'));var _=require('lodash');var squel=require(_0x0900('0xc'));var crypto=require(_0x0900('0xd'));var jsforce=require(_0x0900('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0900('0xf'));var Papa=require(_0x0900('0x10'));var Redis=require(_0x0900('0x11'));var authService=require(_0x0900('0x12'));var qs=require(_0x0900('0x13'));var as=require(_0x0900('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0900('0x15'))(_0x0900('0x16'));var utils=require(_0x0900('0x17'));var config=require(_0x0900('0x18'));var licenseUtil=require(_0x0900('0x19'));var db=require(_0x0900('0x1a'))['db'];function respondWithStatusCode(_0xe8ae24,_0x11d1b6){_0x11d1b6=_0x11d1b6||0xcc;return function(_0x3a235b){if(_0x3a235b){return _0xe8ae24[_0x0900('0x1b')](_0x11d1b6);}return _0xe8ae24['status'](_0x11d1b6)[_0x0900('0x1c')]();};}function respondWithResult(_0x183ca6,_0x4ea071){_0x4ea071=_0x4ea071||0xc8;return function(_0x52bb65){if(_0x52bb65){return _0x183ca6[_0x0900('0x1d')](_0x4ea071)['json'](_0x52bb65);}};}function respondWithFilteredResult(_0x3d58eb,_0x4f5eee){return function(_0x35dbd6){if(_0x35dbd6){var _0xb184b6=typeof _0x4f5eee[_0x0900('0x1e')]===_0x0900('0x1f')&&typeof _0x4f5eee['limit']==='undefined';var _0x2a6b91=_0x35dbd6[_0x0900('0x20')];var _0x3f09ee=_0xb184b6?0x0:_0x4f5eee[_0x0900('0x1e')];var _0x5bc7ec=_0xb184b6?_0x35dbd6[_0x0900('0x20')]:_0x4f5eee[_0x0900('0x1e')]+_0x4f5eee[_0x0900('0x21')];var _0x34968a;if(_0x5bc7ec>=_0x2a6b91){_0x5bc7ec=_0x2a6b91;_0x34968a=0xc8;}else{_0x34968a=0xce;}_0x3d58eb[_0x0900('0x1d')](_0x34968a);return _0x3d58eb[_0x0900('0x22')](_0x0900('0x23'),_0x3f09ee+'-'+_0x5bc7ec+'/'+_0x2a6b91)[_0x0900('0x24')](_0x35dbd6);}return null;};}function patchUpdates(_0x4de1d3){return function(_0x5ed4e8){try{jsonpatch[_0x0900('0x25')](_0x5ed4e8,_0x4de1d3,!![]);}catch(_0x5c54a9){return BPromise[_0x0900('0x26')](_0x5c54a9);}return _0x5ed4e8['save']();};}function saveUpdates(_0x41b74a,_0x1f3738){return function(_0x3dc6bc){if(_0x3dc6bc){return _0x3dc6bc['update'](_0x41b74a)[_0x0900('0x27')](function(_0x492a51){return _0x492a51;});}return null;};}function removeEntity(_0x2fd307,_0x369f5a){return function(_0xce8f6e){if(_0xce8f6e){return _0xce8f6e[_0x0900('0x28')]()[_0x0900('0x27')](function(){_0x2fd307[_0x0900('0x1d')](0xcc)[_0x0900('0x1c')]();});}};}function handleEntityNotFound(_0x51fe9f,_0x7b6765){return function(_0x34d63f){if(!_0x34d63f){_0x51fe9f[_0x0900('0x1b')](0x194);}return _0x34d63f;};}function handleError(_0x569856,_0x574307){_0x574307=_0x574307||0x1f4;return function(_0x51ee3a){logger['error'](_0x51ee3a[_0x0900('0x29')]);if(_0x51ee3a[_0x0900('0x2a')]){delete _0x51ee3a['name'];}_0x569856[_0x0900('0x1d')](_0x574307)['send'](_0x51ee3a);};}exports[_0x0900('0x2b')]=function(_0x13fa35,_0x2a8a71){var _0x257914={'raw':!![],'where':{'id':_0x13fa35[_0x0900('0x2c')]['id']}},_0x3fbd95={};_0x3fbd95['model']=_[_0x0900('0x2d')](db['ChatApplication'][_0x0900('0x2e')]);_0x3fbd95[_0x0900('0x2f')]=_[_0x0900('0x2d')](_0x13fa35['query']);_0x3fbd95[_0x0900('0x30')]=_[_0x0900('0x31')](_0x3fbd95[_0x0900('0x32')],_0x3fbd95[_0x0900('0x2f')]);_0x257914['attributes']=_[_0x0900('0x31')](_0x3fbd95['model'],qs[_0x0900('0x33')](_0x13fa35[_0x0900('0x2f')][_0x0900('0x33')]));_0x257914[_0x0900('0x34')]=_0x257914[_0x0900('0x34')][_0x0900('0x35')]?_0x257914['attributes']:_0x3fbd95[_0x0900('0x32')];if(_0x13fa35[_0x0900('0x2f')][_0x0900('0x36')]){_0x257914['include']=[{'all':!![]}];}_0x257914=_[_0x0900('0x37')]({},_0x257914,_0x13fa35[_0x0900('0x38')]);return db[_0x0900('0x39')][_0x0900('0x3a')](_0x257914)[_0x0900('0x27')](handleEntityNotFound(_0x2a8a71,null))[_0x0900('0x27')](respondWithResult(_0x2a8a71,null))[_0x0900('0x3b')](handleError(_0x2a8a71,null));};exports[_0x0900('0x3c')]=function(_0x4b06e2,_0x4d67ad){if(_0x4b06e2['body']['id']){delete _0x4b06e2[_0x0900('0x3d')]['id'];}return db[_0x0900('0x39')][_0x0900('0x3a')]({'where':{'id':_0x4b06e2['params']['id']}})['then'](handleEntityNotFound(_0x4d67ad,null))[_0x0900('0x27')](saveUpdates(_0x4b06e2[_0x0900('0x3d')],null))[_0x0900('0x27')](respondWithResult(_0x4d67ad,null))['catch'](handleError(_0x4d67ad,null));};exports[_0x0900('0x28')]=function(_0x2622d1,_0x108d1a){return db[_0x0900('0x39')][_0x0900('0x3a')]({'where':{'id':_0x2622d1[_0x0900('0x2c')]['id']}})[_0x0900('0x27')](handleEntityNotFound(_0x108d1a,null))[_0x0900('0x27')](removeEntity(_0x108d1a,null))[_0x0900('0x3b')](handleError(_0x108d1a,null));};
\ No newline at end of file
index e990384..42281ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f42=['utf8mb4','lodash','util','../../config/logger','request-promise','rimraf','exports','define','ChatApplication','chat_applications'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x5f42,0x10f));var _0x25f4=function(_0x8188de,_0x46c723){_0x8188de=_0x8188de-0x0;var _0x4a5033=_0x5f42[_0x8188de];return _0x4a5033;};'use strict';var _=require(_0x25f4('0x0'));var util=require(_0x25f4('0x1'));var logger=require(_0x25f4('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x25f4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x25f4('0x4'));var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module[_0x25f4('0x5')]=function(_0xd4f328,_0x53031c){return _0xd4f328[_0x25f4('0x6')](_0x25f4('0x7'),attributes,{'tableName':_0x25f4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x25f4('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa61f=['bluebird','request-promise','path','../../config/environment','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x3b5991,_0x1e02a1){var _0x3cd934=function(_0x23556a){while(--_0x23556a){_0x3b5991['push'](_0x3b5991['shift']());}};_0x3cd934(++_0x1e02a1);}(_0xa61f,0x14d));var _0xfa61=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa61f[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xfa61('0x0'));var util=require(_0xfa61('0x1'));var logger=require(_0xfa61('0x2'))(_0xfa61('0x3'));var moment=require(_0xfa61('0x4'));var BPromise=require(_0xfa61('0x5'));var rp=require(_0xfa61('0x6'));var fs=require('fs');var path=require(_0xfa61('0x7'));var rimraf=require('rimraf');var config=require(_0xfa61('0x8'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x1ba2b0,_0x662720){return _0x1ba2b0[_0xfa61('0x9')](_0xfa61('0xa'),attributes,{'tableName':_0xfa61('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xfa61('0xc')});};
\ No newline at end of file
index ac11ca4..5167e1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3e6=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb3e6,0x169));var _0x6b3e=function(_0x39caaa,_0x1f37bc){_0x39caaa=_0x39caaa-0x0;var _0x9b9c7d=_0xb3e6[_0x39caaa];return _0x9b9c7d;};'use strict';var _=require(_0x6b3e('0x0'));var util=require(_0x6b3e('0x1'));var moment=require(_0x6b3e('0x2'));var BPromise=require(_0x6b3e('0x3'));var rs=require(_0x6b3e('0x4'));var fs=require('fs');var Redis=require(_0x6b3e('0x5'));var db=require(_0x6b3e('0x6'))['db'];var utils=require(_0x6b3e('0x7'));var logger=require(_0x6b3e('0x8'))(_0x6b3e('0x9'));var config=require(_0x6b3e('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6b3e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x499d37,_0x23f9b1,_0x2da1a4){return new BPromise(function(_0x152a87,_0x1948c6){return client[_0x6b3e('0xc')](_0x499d37,_0x2da1a4)[_0x6b3e('0xd')](function(_0x444df4){logger[_0x6b3e('0xe')](_0x6b3e('0xf'),_0x23f9b1,_0x6b3e('0x10'));logger[_0x6b3e('0x11')](_0x6b3e('0x12'),_0x23f9b1,'request\x20sent',JSON['stringify'](_0x444df4));if(_0x444df4[_0x6b3e('0x13')]){if(_0x444df4[_0x6b3e('0x13')][_0x6b3e('0x14')]===0x1f4){logger[_0x6b3e('0x13')](_0x6b3e('0xf'),_0x23f9b1,_0x444df4[_0x6b3e('0x13')][_0x6b3e('0x15')]);return _0x1948c6(_0x444df4[_0x6b3e('0x13')][_0x6b3e('0x15')]);}logger[_0x6b3e('0x13')](_0x6b3e('0xf'),_0x23f9b1,_0x444df4[_0x6b3e('0x13')][_0x6b3e('0x15')]);return _0x152a87(_0x444df4[_0x6b3e('0x13')][_0x6b3e('0x15')]);}else{logger[_0x6b3e('0xe')](_0x6b3e('0xf'),_0x23f9b1,_0x6b3e('0x10'));_0x152a87(_0x444df4[_0x6b3e('0x16')][_0x6b3e('0x15')]);}})[_0x6b3e('0x17')](function(_0x21acf2){logger['error']('ChatApplication,\x20%s,\x20%s',_0x23f9b1,_0x21acf2);_0x1948c6(_0x21acf2);});});}
\ No newline at end of file
+var _0x8dee=['result','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x569aed,_0x237f17){var _0xe8992d=function(_0x5f3929){while(--_0x5f3929){_0x569aed['push'](_0x569aed['shift']());}};_0xe8992d(++_0x237f17);}(_0x8dee,0x8d));var _0xe8de=function(_0x4fbce9,_0x372bfc){_0x4fbce9=_0x4fbce9-0x0;var _0x4dca41=_0x8dee[_0x4fbce9];return _0x4dca41;};'use strict';var _=require('lodash');var util=require(_0xe8de('0x0'));var moment=require(_0xe8de('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe8de('0x2'));var db=require(_0xe8de('0x3'))['db'];var utils=require(_0xe8de('0x4'));var logger=require(_0xe8de('0x5'))(_0xe8de('0x6'));var config=require(_0xe8de('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe8de('0x8')][_0xe8de('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3bf965,_0x49576c,_0x5a60b8){return new BPromise(function(_0x3f47ac,_0x1404e3){return client[_0xe8de('0xa')](_0x3bf965,_0x5a60b8)[_0xe8de('0xb')](function(_0x7747da){logger[_0xe8de('0xc')](_0xe8de('0xd'),_0x49576c,_0xe8de('0xe'));logger['debug'](_0xe8de('0xf'),_0x49576c,_0xe8de('0xe'),JSON[_0xe8de('0x10')](_0x7747da));if(_0x7747da[_0xe8de('0x11')]){if(_0x7747da[_0xe8de('0x11')]['code']===0x1f4){logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x7747da['error'][_0xe8de('0x12')]);return _0x1404e3(_0x7747da[_0xe8de('0x11')]['message']);}logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x7747da[_0xe8de('0x11')]['message']);return _0x3f47ac(_0x7747da[_0xe8de('0x11')]['message']);}else{logger[_0xe8de('0xc')](_0xe8de('0xd'),_0x49576c,_0xe8de('0xe'));_0x3f47ac(_0x7747da[_0xe8de('0x13')][_0xe8de('0x12')]);}})['catch'](function(_0x40e611){logger[_0xe8de('0x11')](_0xe8de('0xd'),_0x49576c,_0x40e611);_0x1404e3(_0x40e611);});});}
\ No newline at end of file
index 0ec3833..35cfcd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74fb=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller','/:id','show','put','delete'];(function(_0x57d79f,_0x27ba27){var _0x17743d=function(_0x2d6959){while(--_0x2d6959){_0x57d79f['push'](_0x57d79f['shift']());}};_0x17743d(++_0x27ba27);}(_0x74fb,0xe2));var _0xb74f=function(_0x2bf466,_0x4929a5){_0x2bf466=_0x2bf466-0x0;var _0x856885=_0x74fb[_0x2bf466];return _0x856885;};'use strict';var multer=require(_0xb74f('0x0'));var util=require(_0xb74f('0x1'));var path=require(_0xb74f('0x2'));var timeout=require(_0xb74f('0x3'));var express=require(_0xb74f('0x4'));var router=express[_0xb74f('0x5')]();var fs_extra=require(_0xb74f('0x6'));var auth=require(_0xb74f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb74f('0x8'));var controller=require(_0xb74f('0x9'));router['get'](_0xb74f('0xa'),auth['isAuthenticated'](),controller[_0xb74f('0xb')]);router[_0xb74f('0xc')](_0xb74f('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xb74f('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xb74f('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xbb30=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy'];(function(_0x22e496,_0x4529b3){var _0x4e6c1a=function(_0x3db486){while(--_0x3db486){_0x22e496['push'](_0x22e496['shift']());}};_0x4e6c1a(++_0x4529b3);}(_0xbb30,0x169));var _0x0bb3=function(_0x1d4940,_0x31b9d1){_0x1d4940=_0x1d4940-0x0;var _0x167b1f=_0xbb30[_0x1d4940];return _0x167b1f;};'use strict';var multer=require(_0x0bb3('0x0'));var util=require(_0x0bb3('0x1'));var path=require(_0x0bb3('0x2'));var timeout=require(_0x0bb3('0x3'));var express=require(_0x0bb3('0x4'));var router=express[_0x0bb3('0x5')]();var fs_extra=require(_0x0bb3('0x6'));var auth=require(_0x0bb3('0x7'));var interaction=require(_0x0bb3('0x8'));var config=require(_0x0bb3('0x9'));var controller=require(_0x0bb3('0xa'));router[_0x0bb3('0xb')](_0x0bb3('0xc'),auth[_0x0bb3('0xd')](),controller[_0x0bb3('0xe')]);router[_0x0bb3('0xf')](_0x0bb3('0xc'),auth[_0x0bb3('0xd')](),controller[_0x0bb3('0x10')]);router[_0x0bb3('0x11')](_0x0bb3('0xc'),auth['isAuthenticated'](),controller[_0x0bb3('0x12')]);module[_0x0bb3('0x13')]=router;
\ No newline at end of file
index d943bd2..714e74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf03a=['STRING','BOOLEAN','exports'];(function(_0x5358bc,_0x1410ba){var _0x3805e7=function(_0xc7638b){while(--_0xc7638b){_0x5358bc['push'](_0x5358bc['shift']());}};_0x3805e7(++_0x1410ba);}(_0xf03a,0x1a0));var _0xaf03=function(_0x36e062,_0x14b5fe){_0x36e062=_0x36e062-0x0;var _0xab4101=_0xf03a[_0x36e062];return _0xab4101;};'use strict';var Sequelize=require('sequelize');module[_0xaf03('0x0')]={'name':{'type':Sequelize[_0xaf03('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xaf03('0x1')]},'write':{'type':Sequelize[_0xaf03('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xfc03=['exports','STRING','BOOLEAN','sequelize'];(function(_0x567fef,_0x30e116){var _0x3a637a=function(_0xf383bb){while(--_0xf383bb){_0x567fef['push'](_0x567fef['shift']());}};_0x3a637a(++_0x30e116);}(_0xfc03,0x103));var _0x3fc0=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xfc03[_0x4ae6ef];return _0x3cbb4e;};'use strict';var Sequelize=require(_0x3fc0('0x0'));module[_0x3fc0('0x1')]={'name':{'type':Sequelize[_0x3fc0('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3fc0('0x2')]},'write':{'type':Sequelize[_0x3fc0('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 2ffe301..b8d4bcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb294=['../../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','update','then','error','stack','name','send','index','map','ChatGroup','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','destroy','describe','ChatInternalMessage','toInteger','addMembers','ids','getMembers','User','hasOwnProperty','removeMembers','addMessage','ChatGroupId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','fast-json-patch','bluebird','mustache','sox','to-csv','ejs','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x597484,_0x199340){var _0x218e64=function(_0x390d55){while(--_0x390d55){_0x597484['push'](_0x597484['shift']());}};_0x218e64(++_0x199340);}(_0xb294,0x1ad));var _0x4b29=function(_0x49cf82,_0x59d92e){_0x49cf82=_0x49cf82-0x0;var _0x5da06a=_0xb294[_0x49cf82];return _0x5da06a;};'use strict';var emlformat=require(_0x4b29('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4b29('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4b29('0x2'));var Mustache=require(_0x4b29('0x3'));var util=require('util');var path=require('path');var sox=require(_0x4b29('0x4'));var csv=require(_0x4b29('0x5'));var ejs=require(_0x4b29('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4b29('0x7'));var deskjs=require(_0x4b29('0x8'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4b29('0x9'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4b29('0xa'));var as=require(_0x4b29('0xb'));var hardwareService=require(_0x4b29('0xc'));var logger=require(_0x4b29('0xd'))(_0x4b29('0xe'));var utils=require(_0x4b29('0xf'));var config=require(_0x4b29('0x10'));var licenseUtil=require(_0x4b29('0x11'));var db=require(_0x4b29('0x12'))['db'];config[_0x4b29('0x13')]=_[_0x4b29('0x14')](config[_0x4b29('0x13')],{'host':_0x4b29('0x15'),'port':0x18eb});var socket=require(_0x4b29('0x16'))(new Redis(config['redis']));require(_0x4b29('0x17'))['register'](socket);function respondWithStatusCode(_0x233426,_0x58311a){_0x58311a=_0x58311a||0xcc;return function(_0x51e868){if(_0x51e868){return _0x233426[_0x4b29('0x18')](_0x58311a);}return _0x233426[_0x4b29('0x19')](_0x58311a)[_0x4b29('0x1a')]();};}function respondWithResult(_0x4f2683,_0xae1f2f){_0xae1f2f=_0xae1f2f||0xc8;return function(_0x40e1af){if(_0x40e1af){return _0x4f2683[_0x4b29('0x19')](_0xae1f2f)[_0x4b29('0x1b')](_0x40e1af);}};}function respondWithFilteredResult(_0x4c1f84,_0x5c7534){return function(_0x497f85){if(_0x497f85){var _0x5768a1=typeof _0x5c7534[_0x4b29('0x1c')]===_0x4b29('0x1d')&&typeof _0x5c7534[_0x4b29('0x1e')]===_0x4b29('0x1d');var _0x4c5748=_0x497f85[_0x4b29('0x1f')];var _0x10d179=_0x5768a1?0x0:_0x5c7534['offset'];var _0x540c78=_0x5768a1?_0x497f85[_0x4b29('0x1f')]:_0x5c7534[_0x4b29('0x1c')]+_0x5c7534['limit'];var _0x15aeae;if(_0x540c78>=_0x4c5748){_0x540c78=_0x4c5748;_0x15aeae=0xc8;}else{_0x15aeae=0xce;}_0x4c1f84[_0x4b29('0x19')](_0x15aeae);return _0x4c1f84[_0x4b29('0x20')](_0x4b29('0x21'),_0x10d179+'-'+_0x540c78+'/'+_0x4c5748)['json'](_0x497f85);}return null;};}function patchUpdates(_0x2e9e9a){return function(_0xf56a26){try{jsonpatch[_0x4b29('0x22')](_0xf56a26,_0x2e9e9a,!![]);}catch(_0x37c80f){return BPromise[_0x4b29('0x23')](_0x37c80f);}return _0xf56a26['save']();};}function saveUpdates(_0x4fca9d,_0x2e8a58){return function(_0x2824db){if(_0x2824db){return _0x2824db[_0x4b29('0x24')](_0x4fca9d)[_0x4b29('0x25')](function(_0x1a9efa){return _0x1a9efa;});}return null;};}function removeEntity(_0x48ac83,_0x53169f){return function(_0x5b3f9e){if(_0x5b3f9e){return _0x5b3f9e['destroy']()[_0x4b29('0x25')](function(){_0x48ac83[_0x4b29('0x19')](0xcc)[_0x4b29('0x1a')]();});}};}function handleEntityNotFound(_0x4a5aa4,_0xdcbaa5){return function(_0x1f80b2){if(!_0x1f80b2){_0x4a5aa4['sendStatus'](0x194);}return _0x1f80b2;};}function handleError(_0x285497,_0x25420b){_0x25420b=_0x25420b||0x1f4;return function(_0x31f04d){logger[_0x4b29('0x26')](_0x31f04d[_0x4b29('0x27')]);if(_0x31f04d['name']){delete _0x31f04d[_0x4b29('0x28')];}_0x285497[_0x4b29('0x19')](_0x25420b)[_0x4b29('0x29')](_0x31f04d);};}exports[_0x4b29('0x2a')]=function(_0x4298c8,_0x351408){var _0x3eb436={},_0x4ab165={},_0x194fc0={'count':0x0,'rows':[]};var _0x565c2e=_[_0x4b29('0x2b')](db[_0x4b29('0x2c')]['rawAttributes'],function(_0x5e67d4){return{'name':_0x5e67d4['fieldName'],'type':_0x5e67d4[_0x4b29('0x2d')]['key']};});_0x4ab165[_0x4b29('0x2e')]=_[_0x4b29('0x2b')](_0x565c2e,_0x4b29('0x28'));_0x4ab165[_0x4b29('0x2f')]=_[_0x4b29('0x30')](_0x4298c8['query']);_0x4ab165[_0x4b29('0x31')]=_[_0x4b29('0x32')](_0x4ab165[_0x4b29('0x2e')],_0x4ab165['query']);_0x3eb436[_0x4b29('0x33')]=_[_0x4b29('0x32')](_0x4ab165[_0x4b29('0x2e')],qs['fields'](_0x4298c8['query'][_0x4b29('0x34')]));_0x3eb436[_0x4b29('0x33')]=_0x3eb436[_0x4b29('0x33')][_0x4b29('0x35')]?_0x3eb436[_0x4b29('0x33')]:_0x4ab165[_0x4b29('0x2e')];if(!_0x4298c8[_0x4b29('0x2f')]['hasOwnProperty'](_0x4b29('0x36'))){_0x3eb436[_0x4b29('0x1e')]=qs[_0x4b29('0x1e')](_0x4298c8[_0x4b29('0x2f')][_0x4b29('0x1e')]);_0x3eb436[_0x4b29('0x1c')]=qs[_0x4b29('0x1c')](_0x4298c8['query'][_0x4b29('0x1c')]);}_0x3eb436[_0x4b29('0x37')]=qs[_0x4b29('0x38')](_0x4298c8[_0x4b29('0x2f')][_0x4b29('0x38')]);_0x3eb436[_0x4b29('0x39')]=qs['filters'](_[_0x4b29('0x3a')](_0x4298c8['query'],_0x4ab165[_0x4b29('0x31')]),_0x565c2e);if(_0x4298c8[_0x4b29('0x2f')][_0x4b29('0x3b')]){_0x3eb436['where']=_[_0x4b29('0x3c')](_0x3eb436['where'],{'$or':_[_0x4b29('0x2b')](_0x565c2e,function(_0x3cab5f){if(_0x3cab5f[_0x4b29('0x2d')]!=='VIRTUAL'){var _0x383a2d={};_0x383a2d[_0x3cab5f[_0x4b29('0x28')]]={'$like':'%'+_0x4298c8[_0x4b29('0x2f')][_0x4b29('0x3b')]+'%'};return _0x383a2d;}})});}_0x3eb436=_[_0x4b29('0x3c')]({},_0x3eb436,_0x4298c8[_0x4b29('0x3d')]);var _0x5dd49f={'where':_0x3eb436['where']};return db['ChatGroup']['count'](_0x5dd49f)['then'](function(_0x1c2bad){_0x194fc0[_0x4b29('0x1f')]=_0x1c2bad;if(_0x4298c8[_0x4b29('0x2f')][_0x4b29('0x3e')]){_0x3eb436[_0x4b29('0x3f')]=[{'all':!![]}];}return db[_0x4b29('0x2c')]['findAll'](_0x3eb436);})[_0x4b29('0x25')](function(_0x2bf397){_0x194fc0[_0x4b29('0x40')]=_0x2bf397;return _0x194fc0;})[_0x4b29('0x25')](respondWithFilteredResult(_0x351408,_0x3eb436))[_0x4b29('0x41')](handleError(_0x351408,null));};exports[_0x4b29('0x42')]=function(_0x1b6887,_0x17c40b){var _0xcaad53={'raw':!![],'where':{'id':_0x1b6887[_0x4b29('0x43')]['id']}},_0xdf9ba0={};_0xdf9ba0[_0x4b29('0x2e')]=_['keys'](db[_0x4b29('0x2c')][_0x4b29('0x44')]);_0xdf9ba0[_0x4b29('0x2f')]=_[_0x4b29('0x30')](_0x1b6887[_0x4b29('0x2f')]);_0xdf9ba0[_0x4b29('0x31')]=_[_0x4b29('0x32')](_0xdf9ba0['model'],_0xdf9ba0[_0x4b29('0x2f')]);_0xcaad53[_0x4b29('0x33')]=_[_0x4b29('0x32')](_0xdf9ba0['model'],qs[_0x4b29('0x34')](_0x1b6887[_0x4b29('0x2f')][_0x4b29('0x34')]));_0xcaad53[_0x4b29('0x33')]=_0xcaad53[_0x4b29('0x33')][_0x4b29('0x35')]?_0xcaad53[_0x4b29('0x33')]:_0xdf9ba0[_0x4b29('0x2e')];if(_0x1b6887[_0x4b29('0x2f')]['includeAll']){_0xcaad53['include']=[{'all':!![]}];}_0xcaad53=_[_0x4b29('0x3c')]({},_0xcaad53,_0x1b6887[_0x4b29('0x3d')]);return db[_0x4b29('0x2c')][_0x4b29('0x45')](_0xcaad53)[_0x4b29('0x25')](handleEntityNotFound(_0x17c40b,null))['then'](respondWithResult(_0x17c40b,null))[_0x4b29('0x41')](handleError(_0x17c40b,null));};exports[_0x4b29('0x46')]=function(_0x54387c,_0x51b1ae){return db['ChatGroup'][_0x4b29('0x46')](_0x54387c[_0x4b29('0x47')],{})[_0x4b29('0x25')](respondWithResult(_0x51b1ae,0xc9))['catch'](handleError(_0x51b1ae,null));};exports[_0x4b29('0x24')]=function(_0x21dc05,_0x5368a9){if(_0x21dc05[_0x4b29('0x47')]['id']){delete _0x21dc05['body']['id'];}return db[_0x4b29('0x2c')]['find']({'where':{'id':_0x21dc05[_0x4b29('0x43')]['id']}})['then'](handleEntityNotFound(_0x5368a9,null))[_0x4b29('0x25')](saveUpdates(_0x21dc05['body'],null))[_0x4b29('0x25')](respondWithResult(_0x5368a9,null))[_0x4b29('0x41')](handleError(_0x5368a9,null));};exports[_0x4b29('0x48')]=function(_0x521dd2,_0x2a0de0){return db[_0x4b29('0x2c')]['find']({'where':{'id':_0x521dd2['params']['id']}})[_0x4b29('0x25')](handleEntityNotFound(_0x2a0de0,null))[_0x4b29('0x25')](removeEntity(_0x2a0de0,null))['catch'](handleError(_0x2a0de0,null));};exports['describe']=function(_0x25730e,_0x2cd251){return db['ChatGroup'][_0x4b29('0x49')]()[_0x4b29('0x25')](respondWithResult(_0x2cd251,null))[_0x4b29('0x41')](handleError(_0x2cd251,null));};exports['getUnread']=function(_0x146581,_0x50dfd8,_0x50caf5){return db[_0x4b29('0x4a')][_0x4b29('0x1f')]({'where':{'ChatGroupId':_0x146581[_0x4b29('0x43')]['id'],'ToId':_0x146581['user']['id'],'read':![]}})['then'](function(_0x31fbde){return{'id':_[_0x4b29('0x4b')](_0x146581[_0x4b29('0x43')]['id']),'count':_0x31fbde};})['then'](respondWithResult(_0x50dfd8,null))['catch'](handleError(_0x50dfd8,null));};exports[_0x4b29('0x4c')]=function(_0x2e6f3a,_0x4efcf9,_0x3d7ad1){return db[_0x4b29('0x2c')]['find']({'where':{'id':_0x2e6f3a[_0x4b29('0x43')]['id']}})['then'](handleEntityNotFound(_0x4efcf9,null))[_0x4b29('0x25')](function(_0x33bacb){if(_0x33bacb){return _0x33bacb[_0x4b29('0x4c')](_0x2e6f3a['body'][_0x4b29('0x4d')],_['omit'](_0x2e6f3a[_0x4b29('0x47')],['ids','id'])||{});}})[_0x4b29('0x25')](respondWithResult(_0x4efcf9,null))[_0x4b29('0x41')](handleError(_0x4efcf9,null));};exports[_0x4b29('0x4e')]=function(_0x5c1ead,_0x436160,_0x324a5d){var _0x6dcff7={};var _0x573220={};var _0x1cc342;var _0x40e576;return db[_0x4b29('0x2c')]['findOne']({'where':{'id':_0x5c1ead[_0x4b29('0x43')]['id']}})['then'](handleEntityNotFound(_0x436160,null))['then'](function(_0x5a4195){if(_0x5a4195){_0x1cc342=_0x5a4195;_0x573220[_0x4b29('0x2e')]=_[_0x4b29('0x30')](db[_0x4b29('0x4f')][_0x4b29('0x44')]);_0x573220[_0x4b29('0x2f')]=_[_0x4b29('0x30')](_0x5c1ead[_0x4b29('0x2f')]);_0x573220[_0x4b29('0x31')]=_[_0x4b29('0x32')](_0x573220[_0x4b29('0x2e')],_0x573220[_0x4b29('0x2f')]);_0x6dcff7[_0x4b29('0x33')]=_[_0x4b29('0x32')](_0x573220['model'],qs[_0x4b29('0x34')](_0x5c1ead[_0x4b29('0x2f')][_0x4b29('0x34')]));_0x6dcff7[_0x4b29('0x33')]=_0x6dcff7['attributes'][_0x4b29('0x35')]?_0x6dcff7['attributes']:_0x573220[_0x4b29('0x2e')];_0x6dcff7[_0x4b29('0x37')]=qs[_0x4b29('0x38')](_0x5c1ead[_0x4b29('0x2f')][_0x4b29('0x38')]);_0x6dcff7[_0x4b29('0x39')]=qs[_0x4b29('0x31')](_[_0x4b29('0x3a')](_0x5c1ead[_0x4b29('0x2f')],_0x573220['filters']));if(_0x5c1ead[_0x4b29('0x2f')][_0x4b29('0x3b')]){_0x6dcff7[_0x4b29('0x39')]=_[_0x4b29('0x3c')](_0x6dcff7['where'],{'$or':_['map'](_0x6dcff7[_0x4b29('0x33')],function(_0x286eaf){var _0x20da74={};_0x20da74[_0x286eaf]={'$like':'%'+_0x5c1ead[_0x4b29('0x2f')][_0x4b29('0x3b')]+'%'};return _0x20da74;})});}_0x6dcff7=_[_0x4b29('0x3c')]({},_0x6dcff7,_0x5c1ead[_0x4b29('0x3d')]);return _0x1cc342[_0x4b29('0x4e')](_0x6dcff7);}})[_0x4b29('0x25')](function(_0x55b86b){if(_0x55b86b){_0x40e576=_0x55b86b[_0x4b29('0x35')];if(!_0x5c1ead['query'][_0x4b29('0x50')]('nolimit')){_0x6dcff7['limit']=qs[_0x4b29('0x1e')](_0x5c1ead[_0x4b29('0x2f')][_0x4b29('0x1e')]);_0x6dcff7['offset']=qs[_0x4b29('0x1c')](_0x5c1ead['query'][_0x4b29('0x1c')]);}return _0x1cc342['getMembers'](_0x6dcff7);}})[_0x4b29('0x25')](function(_0x870830){if(_0x870830){return _0x870830?{'count':_0x40e576,'rows':_0x870830}:null;}})[_0x4b29('0x25')](respondWithResult(_0x436160,null))['catch'](handleError(_0x436160,null));};exports[_0x4b29('0x51')]=function(_0x26d371,_0x26185d,_0x55828d){return db[_0x4b29('0x2c')][_0x4b29('0x45')]({'where':{'id':_0x26d371['params']['id']}})[_0x4b29('0x25')](handleEntityNotFound(_0x26185d,null))[_0x4b29('0x25')](function(_0x59d25e){if(_0x59d25e){return _0x59d25e[_0x4b29('0x51')](_0x26d371[_0x4b29('0x2f')][_0x4b29('0x4d')]);}})['then'](respondWithStatusCode(_0x26185d,null))[_0x4b29('0x41')](handleError(_0x26185d,null));};exports[_0x4b29('0x52')]=function(_0x4acabc,_0x2ba557,_0x3212e6){if(_0x4acabc[_0x4b29('0x47')]['id']){delete _0x4acabc[_0x4b29('0x47')]['id'];}return db[_0x4b29('0x2c')][_0x4b29('0x45')]({'where':{'id':_0x4acabc['params']['id']}})[_0x4b29('0x25')](handleEntityNotFound(_0x2ba557,null))[_0x4b29('0x25')](function(_0x5e2606){if(_0x5e2606){_0x4acabc[_0x4b29('0x47')][_0x4b29('0x53')]=_0x5e2606['id'];return db[_0x4b29('0x4a')]['create'](_0x4acabc[_0x4b29('0x47')]);}})[_0x4b29('0x25')](respondWithResult(_0x2ba557,null))[_0x4b29('0x41')](handleError(_0x2ba557,null));};exports['getMessages']=function(_0xe1b581,_0x1e440c,_0xbe8b71){var _0x3d57c9={};var _0x4dc386={};var _0x166631;var _0x4cbdbc;return db['ChatGroup']['findOne']({'where':{'id':_0xe1b581[_0x4b29('0x43')]['id']}})['then'](handleEntityNotFound(_0x1e440c,null))['then'](function(_0x1f2f3f){if(_0x1f2f3f){_0x166631=_0x1f2f3f;_0x4dc386[_0x4b29('0x2e')]=_[_0x4b29('0x30')](db[_0x4b29('0x4a')][_0x4b29('0x44')]);_0x4dc386[_0x4b29('0x2f')]=_[_0x4b29('0x30')](_0xe1b581[_0x4b29('0x2f')]);_0x4dc386['filters']=_[_0x4b29('0x32')](_0x4dc386[_0x4b29('0x2e')],_0x4dc386[_0x4b29('0x2f')]);_0x3d57c9[_0x4b29('0x33')]=_[_0x4b29('0x32')](_0x4dc386[_0x4b29('0x2e')],qs[_0x4b29('0x34')](_0xe1b581[_0x4b29('0x2f')][_0x4b29('0x34')]));_0x3d57c9['attributes']=_0x3d57c9[_0x4b29('0x33')][_0x4b29('0x35')]?_0x3d57c9[_0x4b29('0x33')]:_0x4dc386['model'];_0x3d57c9[_0x4b29('0x37')]=qs[_0x4b29('0x38')](_0xe1b581[_0x4b29('0x2f')]['sort']);_0x3d57c9[_0x4b29('0x39')]=qs[_0x4b29('0x31')](_[_0x4b29('0x3a')](_0xe1b581[_0x4b29('0x2f')],_0x4dc386[_0x4b29('0x31')]));if(_0xe1b581['query'][_0x4b29('0x3b')]){_0x3d57c9[_0x4b29('0x39')]=_[_0x4b29('0x3c')](_0x3d57c9[_0x4b29('0x39')],{'$or':_[_0x4b29('0x2b')](_0x3d57c9[_0x4b29('0x33')],function(_0x154ebb){var _0x52affb={};_0x52affb[_0x154ebb]={'$like':'%'+_0xe1b581[_0x4b29('0x2f')][_0x4b29('0x3b')]+'%'};return _0x52affb;})});}if(_0xe1b581[_0x4b29('0x2f')][_0x4b29('0x54')]){var _0x1dcc4c=_0xe1b581[_0x4b29('0x2f')]['$gte'][_0x4b29('0x55')](',');var _0x55638b={};_0x55638b[_0x1dcc4c[0x0]]={'$gte':moment(_0x1dcc4c[0x1])[_0x4b29('0x56')](_0x4b29('0x57'))};_0x3d57c9[_0x4b29('0x39')]=_[_0x4b29('0x3c')](_0x3d57c9[_0x4b29('0x39')],_0x55638b);}_0x3d57c9=_[_0x4b29('0x3c')]({},_0x3d57c9,_0xe1b581[_0x4b29('0x3d')]);return _0x166631[_0x4b29('0x58')](_0x3d57c9);}})[_0x4b29('0x25')](function(_0x330e51){if(_0x330e51){_0x4cbdbc=_0x330e51[_0x4b29('0x35')];if(!_0xe1b581[_0x4b29('0x2f')][_0x4b29('0x50')](_0x4b29('0x36'))){_0x3d57c9[_0x4b29('0x1e')]=qs[_0x4b29('0x1e')](_0xe1b581[_0x4b29('0x2f')]['limit']);_0x3d57c9[_0x4b29('0x1c')]=qs[_0x4b29('0x1c')](_0xe1b581[_0x4b29('0x2f')][_0x4b29('0x1c')]);}return _0x166631[_0x4b29('0x58')](_0x3d57c9);}})[_0x4b29('0x25')](function(_0x1e8246){if(_0x1e8246){return _0x1e8246?{'count':_0x4cbdbc,'rows':_0x1e8246}:null;}})[_0x4b29('0x25')](respondWithResult(_0x1e440c,null))[_0x4b29('0x41')](handleError(_0x1e440c,null));};
\ No newline at end of file
+var _0x6d5f=['name','send','map','ChatGroup','rawAttributes','fieldName','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','findOne','User','pick','filter','getMembers','removeMembers','ChatGroupId','getMessages','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./chatGroup.socket','register','status','end','json','undefined','limit','offset','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x58b8c8,_0x310b46){var _0x53b222=function(_0x47d783){while(--_0x47d783){_0x58b8c8['push'](_0x58b8c8['shift']());}};_0x53b222(++_0x310b46);}(_0x6d5f,0x90));var _0xf6d5=function(_0x7f1e57,_0x6e3251){_0x7f1e57=_0x7f1e57-0x0;var _0x4dee17=_0x6d5f[_0x7f1e57];return _0x4dee17;};'use strict';var emlformat=require(_0xf6d5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf6d5('0x1'));var rp=require('request-promise');var moment=require(_0xf6d5('0x2'));var BPromise=require(_0xf6d5('0x3'));var Mustache=require(_0xf6d5('0x4'));var util=require('util');var path=require(_0xf6d5('0x5'));var sox=require('sox');var csv=require(_0xf6d5('0x6'));var ejs=require(_0xf6d5('0x7'));var fs=require('fs');var fs_extra=require(_0xf6d5('0x8'));var _=require(_0xf6d5('0x9'));var squel=require('squel');var crypto=require(_0xf6d5('0xa'));var jsforce=require(_0xf6d5('0xb'));var deskjs=require(_0xf6d5('0xc'));var toCsv=require(_0xf6d5('0x6'));var querystring=require(_0xf6d5('0xd'));var Papa=require(_0xf6d5('0xe'));var Redis=require('ioredis');var authService=require(_0xf6d5('0xf'));var qs=require(_0xf6d5('0x10'));var as=require(_0xf6d5('0x11'));var hardwareService=require(_0xf6d5('0x12'));var logger=require('../../config/logger')(_0xf6d5('0x13'));var utils=require(_0xf6d5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf6d5('0x15'));var db=require('../../mysqldb')['db'];config[_0xf6d5('0x16')]=_[_0xf6d5('0x17')](config[_0xf6d5('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xf6d5('0x18'))(new Redis(config['redis']));require(_0xf6d5('0x19'))[_0xf6d5('0x1a')](socket);function respondWithStatusCode(_0x2fb6de,_0x156cf6){_0x156cf6=_0x156cf6||0xcc;return function(_0x146547){if(_0x146547){return _0x2fb6de['sendStatus'](_0x156cf6);}return _0x2fb6de[_0xf6d5('0x1b')](_0x156cf6)[_0xf6d5('0x1c')]();};}function respondWithResult(_0x14b58c,_0x5340d6){_0x5340d6=_0x5340d6||0xc8;return function(_0xc52501){if(_0xc52501){return _0x14b58c[_0xf6d5('0x1b')](_0x5340d6)[_0xf6d5('0x1d')](_0xc52501);}};}function respondWithFilteredResult(_0x36b13f,_0x579363){return function(_0xfbc928){if(_0xfbc928){var _0x31556c=typeof _0x579363['offset']===_0xf6d5('0x1e')&&typeof _0x579363[_0xf6d5('0x1f')]==='undefined';var _0x17628b=_0xfbc928['count'];var _0x15b7b4=_0x31556c?0x0:_0x579363[_0xf6d5('0x20')];var _0x1cee5a=_0x31556c?_0xfbc928[_0xf6d5('0x21')]:_0x579363[_0xf6d5('0x20')]+_0x579363[_0xf6d5('0x1f')];var _0x182fa1;if(_0x1cee5a>=_0x17628b){_0x1cee5a=_0x17628b;_0x182fa1=0xc8;}else{_0x182fa1=0xce;}_0x36b13f[_0xf6d5('0x1b')](_0x182fa1);return _0x36b13f[_0xf6d5('0x22')]('Content-Range',_0x15b7b4+'-'+_0x1cee5a+'/'+_0x17628b)[_0xf6d5('0x1d')](_0xfbc928);}return null;};}function patchUpdates(_0x362740){return function(_0x3cc015){try{jsonpatch[_0xf6d5('0x23')](_0x3cc015,_0x362740,!![]);}catch(_0x5f2c6d){return BPromise[_0xf6d5('0x24')](_0x5f2c6d);}return _0x3cc015[_0xf6d5('0x25')]();};}function saveUpdates(_0x1fbe2e,_0x97374e){return function(_0x1dd495){if(_0x1dd495){return _0x1dd495[_0xf6d5('0x26')](_0x1fbe2e)[_0xf6d5('0x27')](function(_0x1a817a){return _0x1a817a;});}return null;};}function removeEntity(_0x47dbc6,_0x503720){return function(_0x85033){if(_0x85033){return _0x85033[_0xf6d5('0x28')]()[_0xf6d5('0x27')](function(){_0x47dbc6['status'](0xcc)[_0xf6d5('0x1c')]();});}};}function handleEntityNotFound(_0x14354e,_0x48ffb7){return function(_0x58e1c7){if(!_0x58e1c7){_0x14354e[_0xf6d5('0x29')](0x194);}return _0x58e1c7;};}function handleError(_0x817b9a,_0x2080ad){_0x2080ad=_0x2080ad||0x1f4;return function(_0x3a9ad3){logger[_0xf6d5('0x2a')](_0x3a9ad3[_0xf6d5('0x2b')]);if(_0x3a9ad3[_0xf6d5('0x2c')]){delete _0x3a9ad3[_0xf6d5('0x2c')];}_0x817b9a[_0xf6d5('0x1b')](_0x2080ad)[_0xf6d5('0x2d')](_0x3a9ad3);};}exports['index']=function(_0x1a7b05,_0x25e9cb){var _0x5b5f18={},_0xfc8dee={},_0x52de12={'count':0x0,'rows':[]};var _0x4a9c1c=_[_0xf6d5('0x2e')](db[_0xf6d5('0x2f')][_0xf6d5('0x30')],function(_0x78517d){return{'name':_0x78517d[_0xf6d5('0x31')],'type':_0x78517d['type'][_0xf6d5('0x32')]};});_0xfc8dee['model']=_['map'](_0x4a9c1c,_0xf6d5('0x2c'));_0xfc8dee[_0xf6d5('0x33')]=_['keys'](_0x1a7b05[_0xf6d5('0x33')]);_0xfc8dee['filters']=_[_0xf6d5('0x34')](_0xfc8dee[_0xf6d5('0x35')],_0xfc8dee[_0xf6d5('0x33')]);_0x5b5f18[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0xfc8dee[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x5b5f18[_0xf6d5('0x36')]=_0x5b5f18['attributes']['length']?_0x5b5f18[_0xf6d5('0x36')]:_0xfc8dee[_0xf6d5('0x35')];if(!_0x1a7b05['query'][_0xf6d5('0x38')](_0xf6d5('0x39'))){_0x5b5f18[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x1a7b05['query'][_0xf6d5('0x1f')]);_0x5b5f18[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x20')]);}_0x5b5f18[_0xf6d5('0x3a')]=qs['sort'](_0x1a7b05['query'][_0xf6d5('0x3b')]);_0x5b5f18['where']=qs[_0xf6d5('0x3c')](_['pick'](_0x1a7b05[_0xf6d5('0x33')],_0xfc8dee['filters']),_0x4a9c1c);if(_0x1a7b05[_0xf6d5('0x33')]['filter']){_0x5b5f18[_0xf6d5('0x3d')]=_[_0xf6d5('0x3e')](_0x5b5f18[_0xf6d5('0x3d')],{'$or':_[_0xf6d5('0x2e')](_0x4a9c1c,function(_0x10eb99){if(_0x10eb99[_0xf6d5('0x3f')]!==_0xf6d5('0x40')){var _0x57c446={};_0x57c446[_0x10eb99[_0xf6d5('0x2c')]]={'$like':'%'+_0x1a7b05[_0xf6d5('0x33')]['filter']+'%'};return _0x57c446;}})});}_0x5b5f18=_['merge']({},_0x5b5f18,_0x1a7b05[_0xf6d5('0x41')]);var _0x2a7ac4={'where':_0x5b5f18[_0xf6d5('0x3d')]};return db[_0xf6d5('0x2f')][_0xf6d5('0x21')](_0x2a7ac4)['then'](function(_0x35bad5){_0x52de12[_0xf6d5('0x21')]=_0x35bad5;if(_0x1a7b05[_0xf6d5('0x33')][_0xf6d5('0x42')]){_0x5b5f18[_0xf6d5('0x43')]=[{'all':!![]}];}return db[_0xf6d5('0x2f')][_0xf6d5('0x44')](_0x5b5f18);})['then'](function(_0x3d5012){_0x52de12[_0xf6d5('0x45')]=_0x3d5012;return _0x52de12;})['then'](respondWithFilteredResult(_0x25e9cb,_0x5b5f18))[_0xf6d5('0x46')](handleError(_0x25e9cb,null));};exports[_0xf6d5('0x47')]=function(_0x591228,_0x2624fc){var _0x5bcfe8={'raw':!![],'where':{'id':_0x591228[_0xf6d5('0x48')]['id']}},_0x2fb628={};_0x2fb628[_0xf6d5('0x35')]=_[_0xf6d5('0x49')](db['ChatGroup']['rawAttributes']);_0x2fb628['query']=_[_0xf6d5('0x49')](_0x591228[_0xf6d5('0x33')]);_0x2fb628[_0xf6d5('0x3c')]=_['intersection'](_0x2fb628[_0xf6d5('0x35')],_0x2fb628[_0xf6d5('0x33')]);_0x5bcfe8[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0x2fb628['model'],qs[_0xf6d5('0x37')](_0x591228[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x5bcfe8['attributes']=_0x5bcfe8['attributes'][_0xf6d5('0x4a')]?_0x5bcfe8[_0xf6d5('0x36')]:_0x2fb628['model'];if(_0x591228[_0xf6d5('0x33')]['includeAll']){_0x5bcfe8[_0xf6d5('0x43')]=[{'all':!![]}];}_0x5bcfe8=_[_0xf6d5('0x3e')]({},_0x5bcfe8,_0x591228[_0xf6d5('0x41')]);return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')](_0x5bcfe8)[_0xf6d5('0x27')](handleEntityNotFound(_0x2624fc,null))['then'](respondWithResult(_0x2624fc,null))[_0xf6d5('0x46')](handleError(_0x2624fc,null));};exports[_0xf6d5('0x4c')]=function(_0x231fe6,_0x3ff919){return db[_0xf6d5('0x2f')][_0xf6d5('0x4c')](_0x231fe6['body'],{})[_0xf6d5('0x27')](respondWithResult(_0x3ff919,0xc9))[_0xf6d5('0x46')](handleError(_0x3ff919,null));};exports['update']=function(_0x44da9f,_0x3bffab){if(_0x44da9f[_0xf6d5('0x4d')]['id']){delete _0x44da9f['body']['id'];}return db[_0xf6d5('0x2f')]['find']({'where':{'id':_0x44da9f[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x3bffab,null))['then'](saveUpdates(_0x44da9f[_0xf6d5('0x4d')],null))[_0xf6d5('0x27')](respondWithResult(_0x3bffab,null))['catch'](handleError(_0x3bffab,null));};exports[_0xf6d5('0x28')]=function(_0x1b43f5,_0x46b8a3){return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')]({'where':{'id':_0x1b43f5[_0xf6d5('0x48')]['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x46b8a3,null))[_0xf6d5('0x27')](removeEntity(_0x46b8a3,null))[_0xf6d5('0x46')](handleError(_0x46b8a3,null));};exports[_0xf6d5('0x4e')]=function(_0x162cff,_0x55d8ef){return db[_0xf6d5('0x2f')][_0xf6d5('0x4e')]()[_0xf6d5('0x27')](respondWithResult(_0x55d8ef,null))['catch'](handleError(_0x55d8ef,null));};exports[_0xf6d5('0x4f')]=function(_0x2c6304,_0x46c946,_0x14f436){return db[_0xf6d5('0x50')][_0xf6d5('0x21')]({'where':{'ChatGroupId':_0x2c6304[_0xf6d5('0x48')]['id'],'ToId':_0x2c6304['user']['id'],'read':![]}})[_0xf6d5('0x27')](function(_0x91a73f){return{'id':_[_0xf6d5('0x51')](_0x2c6304[_0xf6d5('0x48')]['id']),'count':_0x91a73f};})[_0xf6d5('0x27')](respondWithResult(_0x46c946,null))[_0xf6d5('0x46')](handleError(_0x46c946,null));};exports[_0xf6d5('0x52')]=function(_0x25416a,_0x288fed,_0x1546d6){return db[_0xf6d5('0x2f')][_0xf6d5('0x4b')]({'where':{'id':_0x25416a[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x288fed,null))['then'](function(_0xb3a521){if(_0xb3a521){return _0xb3a521[_0xf6d5('0x52')](_0x25416a['body'][_0xf6d5('0x53')],_['omit'](_0x25416a['body'],[_0xf6d5('0x53'),'id'])||{});}})['then'](respondWithResult(_0x288fed,null))[_0xf6d5('0x46')](handleError(_0x288fed,null));};exports['getMembers']=function(_0x399929,_0x13032b,_0x15a105){var _0x6a8842={};var _0x3aface={};var _0x514c0c;var _0x2e9bba;return db[_0xf6d5('0x2f')][_0xf6d5('0x54')]({'where':{'id':_0x399929[_0xf6d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x13032b,null))[_0xf6d5('0x27')](function(_0x3450e1){if(_0x3450e1){_0x514c0c=_0x3450e1;_0x3aface[_0xf6d5('0x35')]=_[_0xf6d5('0x49')](db[_0xf6d5('0x55')][_0xf6d5('0x30')]);_0x3aface[_0xf6d5('0x33')]=_['keys'](_0x399929[_0xf6d5('0x33')]);_0x3aface[_0xf6d5('0x3c')]=_[_0xf6d5('0x34')](_0x3aface[_0xf6d5('0x35')],_0x3aface[_0xf6d5('0x33')]);_0x6a8842[_0xf6d5('0x36')]=_['intersection'](_0x3aface[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x37')]));_0x6a8842['attributes']=_0x6a8842['attributes'][_0xf6d5('0x4a')]?_0x6a8842['attributes']:_0x3aface[_0xf6d5('0x35')];_0x6a8842[_0xf6d5('0x3a')]=qs[_0xf6d5('0x3b')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x3b')]);_0x6a8842['where']=qs[_0xf6d5('0x3c')](_[_0xf6d5('0x56')](_0x399929[_0xf6d5('0x33')],_0x3aface[_0xf6d5('0x3c')]));if(_0x399929[_0xf6d5('0x33')][_0xf6d5('0x57')]){_0x6a8842[_0xf6d5('0x3d')]=_['merge'](_0x6a8842[_0xf6d5('0x3d')],{'$or':_[_0xf6d5('0x2e')](_0x6a8842['attributes'],function(_0xf8ce81){var _0x447a29={};_0x447a29[_0xf8ce81]={'$like':'%'+_0x399929[_0xf6d5('0x33')][_0xf6d5('0x57')]+'%'};return _0x447a29;})});}_0x6a8842=_[_0xf6d5('0x3e')]({},_0x6a8842,_0x399929[_0xf6d5('0x41')]);return _0x514c0c['getMembers'](_0x6a8842);}})[_0xf6d5('0x27')](function(_0x29867a){if(_0x29867a){_0x2e9bba=_0x29867a[_0xf6d5('0x4a')];if(!_0x399929[_0xf6d5('0x33')][_0xf6d5('0x38')]('nolimit')){_0x6a8842[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x1f')]);_0x6a8842[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x399929[_0xf6d5('0x33')][_0xf6d5('0x20')]);}return _0x514c0c[_0xf6d5('0x58')](_0x6a8842);}})[_0xf6d5('0x27')](function(_0x14b6eb){if(_0x14b6eb){return _0x14b6eb?{'count':_0x2e9bba,'rows':_0x14b6eb}:null;}})[_0xf6d5('0x27')](respondWithResult(_0x13032b,null))[_0xf6d5('0x46')](handleError(_0x13032b,null));};exports[_0xf6d5('0x59')]=function(_0x351ead,_0x47957a,_0x391472){return db['ChatGroup']['find']({'where':{'id':_0x351ead['params']['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x47957a,null))[_0xf6d5('0x27')](function(_0x53ed7b){if(_0x53ed7b){return _0x53ed7b['removeMembers'](_0x351ead[_0xf6d5('0x33')][_0xf6d5('0x53')]);}})[_0xf6d5('0x27')](respondWithStatusCode(_0x47957a,null))[_0xf6d5('0x46')](handleError(_0x47957a,null));};exports['addMessage']=function(_0xbfbf23,_0x55e4c1,_0x5bf9cb){if(_0xbfbf23[_0xf6d5('0x4d')]['id']){delete _0xbfbf23['body']['id'];}return db[_0xf6d5('0x2f')]['find']({'where':{'id':_0xbfbf23[_0xf6d5('0x48')]['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x55e4c1,null))[_0xf6d5('0x27')](function(_0x2162d0){if(_0x2162d0){_0xbfbf23['body'][_0xf6d5('0x5a')]=_0x2162d0['id'];return db[_0xf6d5('0x50')][_0xf6d5('0x4c')](_0xbfbf23[_0xf6d5('0x4d')]);}})[_0xf6d5('0x27')](respondWithResult(_0x55e4c1,null))['catch'](handleError(_0x55e4c1,null));};exports[_0xf6d5('0x5b')]=function(_0x421670,_0x23452a,_0x1beb3b){var _0x4edfa6={};var _0x11dd29={};var _0x36e20d;var _0x155ec9;return db['ChatGroup']['findOne']({'where':{'id':_0x421670['params']['id']}})[_0xf6d5('0x27')](handleEntityNotFound(_0x23452a,null))['then'](function(_0x48339c){if(_0x48339c){_0x36e20d=_0x48339c;_0x11dd29[_0xf6d5('0x35')]=_['keys'](db[_0xf6d5('0x50')][_0xf6d5('0x30')]);_0x11dd29['query']=_[_0xf6d5('0x49')](_0x421670[_0xf6d5('0x33')]);_0x11dd29[_0xf6d5('0x3c')]=_[_0xf6d5('0x34')](_0x11dd29[_0xf6d5('0x35')],_0x11dd29[_0xf6d5('0x33')]);_0x4edfa6[_0xf6d5('0x36')]=_[_0xf6d5('0x34')](_0x11dd29[_0xf6d5('0x35')],qs[_0xf6d5('0x37')](_0x421670[_0xf6d5('0x33')]['fields']));_0x4edfa6[_0xf6d5('0x36')]=_0x4edfa6['attributes'][_0xf6d5('0x4a')]?_0x4edfa6['attributes']:_0x11dd29[_0xf6d5('0x35')];_0x4edfa6['order']=qs[_0xf6d5('0x3b')](_0x421670[_0xf6d5('0x33')][_0xf6d5('0x3b')]);_0x4edfa6[_0xf6d5('0x3d')]=qs['filters'](_[_0xf6d5('0x56')](_0x421670[_0xf6d5('0x33')],_0x11dd29['filters']));if(_0x421670[_0xf6d5('0x33')]['filter']){_0x4edfa6['where']=_['merge'](_0x4edfa6['where'],{'$or':_['map'](_0x4edfa6[_0xf6d5('0x36')],function(_0x2d5f0b){var _0x554ef4={};_0x554ef4[_0x2d5f0b]={'$like':'%'+_0x421670[_0xf6d5('0x33')]['filter']+'%'};return _0x554ef4;})});}if(_0x421670[_0xf6d5('0x33')]['$gte']){var _0x115df2=_0x421670[_0xf6d5('0x33')]['$gte']['split'](',');var _0x4a23c2={};_0x4a23c2[_0x115df2[0x0]]={'$gte':moment(_0x115df2[0x1])[_0xf6d5('0x5c')](_0xf6d5('0x5d'))};_0x4edfa6[_0xf6d5('0x3d')]=_['merge'](_0x4edfa6[_0xf6d5('0x3d')],_0x4a23c2);}_0x4edfa6=_[_0xf6d5('0x3e')]({},_0x4edfa6,_0x421670[_0xf6d5('0x41')]);return _0x36e20d[_0xf6d5('0x5b')](_0x4edfa6);}})[_0xf6d5('0x27')](function(_0x5a5bc4){if(_0x5a5bc4){_0x155ec9=_0x5a5bc4[_0xf6d5('0x4a')];if(!_0x421670[_0xf6d5('0x33')][_0xf6d5('0x38')](_0xf6d5('0x39'))){_0x4edfa6[_0xf6d5('0x1f')]=qs['limit'](_0x421670[_0xf6d5('0x33')][_0xf6d5('0x1f')]);_0x4edfa6[_0xf6d5('0x20')]=qs[_0xf6d5('0x20')](_0x421670['query'][_0xf6d5('0x20')]);}return _0x36e20d['getMessages'](_0x4edfa6);}})[_0xf6d5('0x27')](function(_0x529423){if(_0x529423){return _0x529423?{'count':_0x155ec9,'rows':_0x529423}:null;}})['then'](respondWithResult(_0x23452a,null))['catch'](handleError(_0x23452a,null));};
\ No newline at end of file
index 8c3763f..c521171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['ChatGroup','setMaxListeners','save','update','remove','emit','events','../../mysqldb'];(function(_0x38d9cb,_0x30654d){var _0x15102a=function(_0x13db6b){while(--_0x13db6b){_0x38d9cb['push'](_0x38d9cb['shift']());}};_0x15102a(++_0x30654d);}(_0x3d04,0xbe));var _0x43d0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3d04[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require(_0x43d0('0x0'));var ChatGroup=require(_0x43d0('0x1'))['db'][_0x43d0('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x43d0('0x3')](0x0);var events={'afterCreate':_0x43d0('0x4'),'afterUpdate':_0x43d0('0x5'),'afterDestroy':_0x43d0('0x6')};function emitEvent(_0x1f80fd){return function(_0x5a9e1d,_0x2a4d4c,_0x1a75d4){ChatGroupEvents[_0x43d0('0x7')](_0x1f80fd+':'+_0x5a9e1d['id'],_0x5a9e1d);ChatGroupEvents[_0x43d0('0x7')](_0x1f80fd,_0x5a9e1d);_0x1a75d4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xe2d7=['emit','hasOwnProperty','hook','exports','events','ChatGroup','setMaxListeners','save','update','remove'];(function(_0xbb9dbf,_0x5dafa4){var _0x30223c=function(_0xaa9ca){while(--_0xaa9ca){_0xbb9dbf['push'](_0xbb9dbf['shift']());}};_0x30223c(++_0x5dafa4);}(_0xe2d7,0x112));var _0x7e2d=function(_0x841c2d,_0x4f4448){_0x841c2d=_0x841c2d-0x0;var _0x219515=_0xe2d7[_0x841c2d];return _0x219515;};'use strict';var EventEmitter=require(_0x7e2d('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x7e2d('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x7e2d('0x2')](0x0);var events={'afterCreate':_0x7e2d('0x3'),'afterUpdate':_0x7e2d('0x4'),'afterDestroy':_0x7e2d('0x5')};function emitEvent(_0x2bc0c6){return function(_0x1788bb,_0x55bab2,_0x3fad07){ChatGroupEvents[_0x7e2d('0x6')](_0x2bc0c6+':'+_0x1788bb['id'],_0x1788bb);ChatGroupEvents[_0x7e2d('0x6')](_0x2bc0c6,_0x1788bb);_0x3fad07(null);};}for(var e in events){if(events[_0x7e2d('0x7')](e)){var event=events[e];ChatGroup[_0x7e2d('0x8')](e,emitEvent(event));}}module[_0x7e2d('0x9')]=ChatGroupEvents;
\ No newline at end of file
index a072126..29bf2f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28d7=['../../config/environment','./chatGroup.attributes','exports','ChatGroup','chat_groups','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x1d5df0,_0x26fd83){var _0x4447f3=function(_0x2095bf){while(--_0x2095bf){_0x1d5df0['push'](_0x1d5df0['shift']());}};_0x4447f3(++_0x26fd83);}(_0x28d7,0xd1));var _0x728d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28d7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x728d('0x0'));var util=require(_0x728d('0x1'));var logger=require(_0x728d('0x2'))('api');var moment=require(_0x728d('0x3'));var BPromise=require(_0x728d('0x4'));var rp=require(_0x728d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x728d('0x6'));var config=require(_0x728d('0x7'));var attributes=require(_0x728d('0x8'));module[_0x728d('0x9')]=function(_0xf79d90,_0x384ea7){return _0xf79d90['define'](_0x728d('0xa'),attributes,{'tableName':_0x728d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3164=['util','../../config/logger','api','request-promise','path','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x3164,0xfb));var _0x4316=function(_0x25b430,_0x342119){_0x25b430=_0x25b430-0x0;var _0x32d9e3=_0x3164[_0x25b430];return _0x32d9e3;};'use strict';var _=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var logger=require(_0x4316('0x2'))(_0x4316('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4316('0x4'));var fs=require('fs');var path=require(_0x4316('0x5'));var rimraf=require('rimraf');var config=require(_0x4316('0x6'));var attributes=require(_0x4316('0x7'));module[_0x4316('0x8')]=function(_0x5bff3b,_0x2e197b){return _0x5bff3b[_0x4316('0x9')](_0x4316('0xa'),attributes,{'tableName':_0x4316('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d6be09..c73fbd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f5=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','socket.io-emitter','./chatGroup.socket','register','request','then','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x01f5,0x9a));var _0x501f=function(_0x56951d,_0x3f44d7){_0x56951d=_0x56951d-0x0;var _0x34b8ef=_0x01f5[_0x56951d];return _0x34b8ef;};'use strict';var _=require(_0x501f('0x0'));var util=require(_0x501f('0x1'));var moment=require(_0x501f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x501f('0x3'));var db=require(_0x501f('0x4'))['db'];var utils=require(_0x501f('0x5'));var logger=require(_0x501f('0x6'))(_0x501f('0x7'));var config=require(_0x501f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x501f('0x9')][_0x501f('0xa')]({'port':0x232a});config[_0x501f('0xb')]=_['defaults'](config[_0x501f('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x501f('0xc'))(new Redis(config[_0x501f('0xb')]));require(_0x501f('0xd'))[_0x501f('0xe')](socket);function respondWithRpcPromise(_0x1dc845,_0x25f2c5,_0x354564){return new BPromise(function(_0x5776b0,_0x103809){return client[_0x501f('0xf')](_0x1dc845,_0x354564)[_0x501f('0x10')](function(_0x1de62f){logger['info'](_0x501f('0x11'),_0x25f2c5,_0x501f('0x12'));logger['debug'](_0x501f('0x13'),_0x25f2c5,_0x501f('0x12'),JSON[_0x501f('0x14')](_0x1de62f));if(_0x1de62f[_0x501f('0x15')]){if(_0x1de62f[_0x501f('0x15')][_0x501f('0x16')]===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0x25f2c5,_0x1de62f[_0x501f('0x15')][_0x501f('0x17')]);return _0x103809(_0x1de62f[_0x501f('0x15')]['message']);}logger[_0x501f('0x15')](_0x501f('0x11'),_0x25f2c5,_0x1de62f['error']['message']);return _0x5776b0(_0x1de62f['error'][_0x501f('0x17')]);}else{logger[_0x501f('0x18')](_0x501f('0x11'),_0x25f2c5,_0x501f('0x12'));_0x5776b0(_0x1de62f[_0x501f('0x19')][_0x501f('0x17')]);}})['catch'](function(_0x4fa3b8){logger[_0x501f('0x15')]('ChatGroup,\x20%s,\x20%s',_0x25f2c5,_0x4fa3b8);_0x103809(_0x4fa3b8);});});}
\ No newline at end of file
+var _0x3efa=['client','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0xec4e5b,_0x1cbe41){var _0xe7ebc8=function(_0x20de97){while(--_0x20de97){_0xec4e5b['push'](_0xec4e5b['shift']());}};_0xe7ebc8(++_0x1cbe41);}(_0x3efa,0x147));var _0xa3ef=function(_0x4b49f0,_0x2c16e4){_0x4b49f0=_0x4b49f0-0x0;var _0x5c0d5e=_0x3efa[_0x4b49f0];return _0x5c0d5e;};'use strict';var _=require('lodash');var util=require(_0xa3ef('0x0'));var moment=require('moment');var BPromise=require(_0xa3ef('0x1'));var rs=require(_0xa3ef('0x2'));var fs=require('fs');var Redis=require(_0xa3ef('0x3'));var db=require(_0xa3ef('0x4'))['db'];var utils=require(_0xa3ef('0x5'));var logger=require(_0xa3ef('0x6'))('rpc');var config=require(_0xa3ef('0x7'));var jayson=require(_0xa3ef('0x8'));var client=jayson[_0xa3ef('0x9')]['http']({'port':0x232a});config[_0xa3ef('0xa')]=_[_0xa3ef('0xb')](config['redis'],{'host':_0xa3ef('0xc'),'port':0x18eb});var socket=require(_0xa3ef('0xd'))(new Redis(config[_0xa3ef('0xa')]));require(_0xa3ef('0xe'))[_0xa3ef('0xf')](socket);function respondWithRpcPromise(_0x24d215,_0xbfbfd1,_0x595d9e){return new BPromise(function(_0x52f6f6,_0x2c71c2){return client[_0xa3ef('0x10')](_0x24d215,_0x595d9e)['then'](function(_0x252764){logger[_0xa3ef('0x11')]('ChatGroup,\x20%s,\x20%s',_0xbfbfd1,_0xa3ef('0x12'));logger[_0xa3ef('0x13')](_0xa3ef('0x14'),_0xbfbfd1,_0xa3ef('0x12'),JSON[_0xa3ef('0x15')](_0x252764));if(_0x252764[_0xa3ef('0x16')]){if(_0x252764['error'][_0xa3ef('0x17')]===0x1f4){logger['error'](_0xa3ef('0x18'),_0xbfbfd1,_0x252764[_0xa3ef('0x16')]['message']);return _0x2c71c2(_0x252764[_0xa3ef('0x16')][_0xa3ef('0x19')]);}logger[_0xa3ef('0x16')](_0xa3ef('0x18'),_0xbfbfd1,_0x252764[_0xa3ef('0x16')]['message']);return _0x52f6f6(_0x252764[_0xa3ef('0x16')][_0xa3ef('0x19')]);}else{logger[_0xa3ef('0x11')](_0xa3ef('0x18'),_0xbfbfd1,_0xa3ef('0x12'));_0x52f6f6(_0x252764[_0xa3ef('0x1a')]['message']);}})[_0xa3ef('0x1b')](function(_0x201937){logger[_0xa3ef('0x16')](_0xa3ef('0x18'),_0xbfbfd1,_0x201937);_0x2c71c2(_0x201937);});});}
\ No newline at end of file
index ef5ac0e..fcdc42e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47f1=['update','emit','removeListener','register','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0xca06ca,_0x527a3b){var _0x39ae92=function(_0x13d19a){while(--_0x13d19a){_0xca06ca['push'](_0xca06ca['shift']());}};_0x39ae92(++_0x527a3b);}(_0x47f1,0x1c8));var _0x147f=function(_0x1a4070,_0x570a3f){_0x1a4070=_0x1a4070-0x0;var _0x3d995e=_0x47f1[_0x1a4070];return _0x3d995e;};'use strict';var ChatGroupEvents=require(_0x147f('0x0'));var events=[_0x147f('0x1'),_0x147f('0x2'),_0x147f('0x3')];function createListener(_0x4ef88f,_0x5874f8){return function(_0x3dce03){_0x5874f8[_0x147f('0x4')](_0x4ef88f,_0x3dce03);};}function removeListener(_0xdc9d30,_0x22fd9d){return function(){ChatGroupEvents[_0x147f('0x5')](_0xdc9d30,_0x22fd9d);};}exports[_0x147f('0x6')]=function(_0xdc5918){for(var _0x21fc13=0x0,_0x6130c2=events[_0x147f('0x7')];_0x21fc13<_0x6130c2;_0x21fc13++){var _0x4a01b4=events[_0x21fc13];var _0x8a4b4c=createListener(_0x147f('0x8')+_0x4a01b4,_0xdc5918);ChatGroupEvents['on'](_0x4a01b4,_0x8a4b4c);}};
\ No newline at end of file
+var _0xb4a5=['emit','removeListener','register','length','chatGroup:','./chatGroup.events','save','remove','update'];(function(_0x1b64bf,_0x357c3b){var _0x23afb2=function(_0x2b5418){while(--_0x2b5418){_0x1b64bf['push'](_0x1b64bf['shift']());}};_0x23afb2(++_0x357c3b);}(_0xb4a5,0xef));var _0x5b4a=function(_0x279683,_0x293ce9){_0x279683=_0x279683-0x0;var _0x41af94=_0xb4a5[_0x279683];return _0x41af94;};'use strict';var ChatGroupEvents=require(_0x5b4a('0x0'));var events=[_0x5b4a('0x1'),_0x5b4a('0x2'),_0x5b4a('0x3')];function createListener(_0x46e76c,_0x5577d6){return function(_0x505b90){_0x5577d6[_0x5b4a('0x4')](_0x46e76c,_0x505b90);};}function removeListener(_0x3713db,_0x346514){return function(){ChatGroupEvents[_0x5b4a('0x5')](_0x3713db,_0x346514);};}exports[_0x5b4a('0x6')]=function(_0x1d6e65){for(var _0x2a60b5=0x0,_0x49ea9c=events[_0x5b4a('0x7')];_0x2a60b5<_0x49ea9c;_0x2a60b5++){var _0x5c5b86=events[_0x2a60b5];var _0x10f3dd=createListener(_0x5b4a('0x8')+_0x5c5b86,_0x1d6e65);ChatGroupEvents['on'](_0x5c5b86,_0x10f3dd);}};
\ No newline at end of file
index df20ac8..eb23784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc1=['getUnread','/:id/members','getMessages','post','create','addMembers','/:id/messages','addMessage','put','delete','destroy','removeMembers','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/unread'];(function(_0x254076,_0x5e7b8d){var _0x21a93e=function(_0x26aa78){while(--_0x26aa78){_0x254076['push'](_0x254076['shift']());}};_0x21a93e(++_0x5e7b8d);}(_0x3dc1,0xb5));var _0x13dc=function(_0x2e1fde,_0x52a23b){_0x2e1fde=_0x2e1fde-0x0;var _0x1cfcc8=_0x3dc1[_0x2e1fde];return _0x1cfcc8;};'use strict';var multer=require('multer');var util=require(_0x13dc('0x0'));var path=require('path');var timeout=require(_0x13dc('0x1'));var express=require(_0x13dc('0x2'));var router=express[_0x13dc('0x3')]();var fs_extra=require(_0x13dc('0x4'));var auth=require(_0x13dc('0x5'));var interaction=require(_0x13dc('0x6'));var config=require(_0x13dc('0x7'));var controller=require('./chatGroup.controller');router[_0x13dc('0x8')]('/',auth[_0x13dc('0x9')](),controller[_0x13dc('0xa')]);router[_0x13dc('0x8')](_0x13dc('0xb'),auth[_0x13dc('0x9')](),controller[_0x13dc('0xc')]);router[_0x13dc('0x8')](_0x13dc('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x13dc('0x8')](_0x13dc('0xe'),auth['isAuthenticated'](),controller[_0x13dc('0xf')]);router['get'](_0x13dc('0x10'),auth[_0x13dc('0x9')](),controller['getMembers']);router[_0x13dc('0x8')]('/:id/messages',auth[_0x13dc('0x9')](),controller[_0x13dc('0x11')]);router[_0x13dc('0x12')]('/',auth[_0x13dc('0x9')](),controller[_0x13dc('0x13')]);router[_0x13dc('0x12')]('/:id/members',auth[_0x13dc('0x9')](),controller[_0x13dc('0x14')]);router['post'](_0x13dc('0x15'),auth[_0x13dc('0x9')](),controller[_0x13dc('0x16')]);router[_0x13dc('0x17')](_0x13dc('0xd'),auth[_0x13dc('0x9')](),controller['update']);router[_0x13dc('0x18')](_0x13dc('0xd'),auth[_0x13dc('0x9')](),controller[_0x13dc('0x19')]);router[_0x13dc('0x18')](_0x13dc('0x10'),auth[_0x13dc('0x9')](),controller[_0x13dc('0x1a')]);module[_0x13dc('0x1b')]=router;
\ No newline at end of file
+var _0x0bce=['./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bce,0x1f0));var _0xe0bc=function(_0x39befc,_0x163fbf){_0x39befc=_0x39befc-0x0;var _0x1edde5=_0x0bce[_0x39befc];return _0x1edde5;};'use strict';var multer=require('multer');var util=require(_0xe0bc('0x0'));var path=require(_0xe0bc('0x1'));var timeout=require(_0xe0bc('0x2'));var express=require(_0xe0bc('0x3'));var router=express['Router']();var fs_extra=require(_0xe0bc('0x4'));var auth=require(_0xe0bc('0x5'));var interaction=require(_0xe0bc('0x6'));var config=require(_0xe0bc('0x7'));var controller=require(_0xe0bc('0x8'));router[_0xe0bc('0x9')]('/',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xb')]);router['get'](_0xe0bc('0xc'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xd')]);router['get'](_0xe0bc('0xe'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0xf')]);router['get'](_0xe0bc('0x10'),auth['isAuthenticated'](),controller['getUnread']);router[_0xe0bc('0x9')](_0xe0bc('0x11'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x12')]);router[_0xe0bc('0x9')](_0xe0bc('0x13'),auth[_0xe0bc('0xa')](),controller['getMessages']);router[_0xe0bc('0x14')]('/',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x15')]);router[_0xe0bc('0x14')](_0xe0bc('0x11'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x16')]);router[_0xe0bc('0x14')]('/:id/messages',auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x17')]);router[_0xe0bc('0x18')](_0xe0bc('0xe'),auth[_0xe0bc('0xa')](),controller[_0xe0bc('0x19')]);router['delete'](_0xe0bc('0xe'),auth['isAuthenticated'](),controller[_0xe0bc('0x1a')]);router['delete']('/:id/members',auth[_0xe0bc('0xa')](),controller['removeMembers']);module[_0xe0bc('0x1b')]=router;
\ No newline at end of file
index 1a45d64..bdf1970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235a=['star','TEXT','STRING','DATE','out','sequelize','exports','BOOLEAN','ENUM','thumb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x235a,0x1ef));var _0xa235=function(_0x156ca,_0x28f8e2){_0x156ca=_0x156ca-0x0;var _0x51d663=_0x235a[_0x156ca];return _0x51d663;};'use strict';var Sequelize=require(_0xa235('0x0'));module[_0xa235('0x1')]={'closed':{'type':Sequelize[_0xa235('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xa235('0x3')]('star',_0xa235('0x4')),'defaultValue':_0xa235('0x5')},'ratingMessage':{'type':Sequelize[_0xa235('0x6')]},'pathTranscript':{'type':Sequelize[_0xa235('0x6')]},'mailTranscript':{'type':Sequelize[_0xa235('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xa235('0x8')]},'disposition':{'type':Sequelize[_0xa235('0x7')]},'secondDisposition':{'type':Sequelize[_0xa235('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xa235('0x7')]},'browserName':{'type':Sequelize[_0xa235('0x7')]},'browserVersion':{'type':Sequelize[_0xa235('0x7')]},'osName':{'type':Sequelize[_0xa235('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0xa235('0x7')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0xa235('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xa235('0x6')]('long')},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xa235('0x3')]('in',_0xa235('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xa235('0x7')]},'customerPort':{'type':Sequelize[_0xa235('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x68b7=['thumb','star','TEXT','STRING','DATE','sequelize','BOOLEAN','INTEGER','ENUM'];(function(_0x4dcc2d,_0x422839){var _0x1bbd79=function(_0x173341){while(--_0x173341){_0x4dcc2d['push'](_0x4dcc2d['shift']());}};_0x1bbd79(++_0x422839);}(_0x68b7,0x8c));var _0x768b=function(_0x2a245c,_0x961888){_0x2a245c=_0x2a245c-0x0;var _0xcafb26=_0x68b7[_0x2a245c];return _0xcafb26;};'use strict';var Sequelize=require(_0x768b('0x0'));module['exports']={'closed':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x768b('0x2')]},'ratingType':{'type':Sequelize[_0x768b('0x3')]('star',_0x768b('0x4')),'defaultValue':_0x768b('0x5')},'ratingMessage':{'type':Sequelize[_0x768b('0x6')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x768b('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x768b('0x8')]},'disposition':{'type':Sequelize[_0x768b('0x7')]},'secondDisposition':{'type':Sequelize[_0x768b('0x7')]},'thirdDisposition':{'type':Sequelize[_0x768b('0x7')]},'note':{'type':Sequelize[_0x768b('0x7')]},'browserName':{'type':Sequelize[_0x768b('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x768b('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x768b('0x7')]},'deviceVendor':{'type':Sequelize[_0x768b('0x7')]},'deviceType':{'type':Sequelize[_0x768b('0x7')]},'referer':{'type':Sequelize[_0x768b('0x6')]},'customerIp':{'type':Sequelize[_0x768b('0x7')]},'formData':{'type':Sequelize[_0x768b('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgAt':{'type':Sequelize[_0x768b('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x768b('0x7')]},'customerPort':{'type':Sequelize[_0x768b('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x768b('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x768b('0x1')],'defaultValue':![]}};
\ No newline at end of file
index cb2c2cd..2b473b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x327a=['localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','destroy','status','stack','name','send','render','merge','body','contact','agent','interaction','account','index','map','ChatInteraction','fieldName','type','key','getOptions','findAll','chat','query','show','params','keys','filters','intersection','attributes','model','fields','length','includeAll','include','options','find','catch','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooMetadata','user','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','parse','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','CmContact','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','update','closed','disposition','attachmentUpload','originalname','file','filename','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','root','server/files/attachments/','join','basename','download','close','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','User','ChatWebsiteId','agentAlias','System','customer','%s%d','Visitor','ContactId','agentIdentifier','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','direction','secret','appendFileSync','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','mailTranscript','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','sort','pick','where','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','includeAgent','push','addTags','setTags','color','emit','removeTags','unix','toString','server','tmp','files','transcript-%d-%s.zip','firstName','attachments','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','createWriteStream','lastName','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis'];(function(_0x2e772a,_0x2dab33){var _0x409bca=function(_0x2596fa){while(--_0x2596fa){_0x2e772a['push'](_0x2e772a['shift']());}};_0x409bca(++_0x2dab33);}(_0x327a,0x19e));var _0xa327=function(_0x5343d1,_0x5e88e8){_0x5343d1=_0x5343d1-0x0;var _0x1bc9f1=_0x327a[_0x5343d1];return _0x1bc9f1;};'use strict';var rimraf=require(_0xa327('0x0'));var zipdir=require(_0xa327('0x1'));var rp=require(_0xa327('0x2'));var moment=require(_0xa327('0x3'));var BPromise=require(_0xa327('0x4'));var Mustache=require(_0xa327('0x5'));var util=require(_0xa327('0x6'));var path=require('path');var ejs=require(_0xa327('0x7'));var fs=require('fs');var _=require(_0xa327('0x8'));var Redis=require(_0xa327('0x9'));var interaction=require(_0xa327('0xa'));var qs=require('../../components/parsers/qs');var pdf=require(_0xa327('0xb'));var logger=require('../../config/logger')(_0xa327('0xc'));var config=require(_0xa327('0xd'));var db=require(_0xa327('0xe'))['db'];config[_0xa327('0xf')]=_['defaults'](config[_0xa327('0xf')],{'host':_0xa327('0x10'),'port':0x18eb});var socket=require(_0xa327('0x11'))(new Redis(config['redis']));require(_0xa327('0x12'))['register'](socket);var jayson=require(_0xa327('0x13'));var client=jayson[_0xa327('0x14')][_0xa327('0x15')]({'port':0x232b});var client9004=jayson['client'][_0xa327('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x4799c7,_0x365884,_0x1e93d8,_0x3f1e50){return new BPromise(function(_0x569045,_0x1a0d7c){var _0x1a5731=_0x3f1e50||client;return _0x1a5731['request'](_0x4799c7,_0x1e93d8)[_0xa327('0x16')](function(_0x52319f){logger[_0xa327('0x17')](_0xa327('0x18'),_0x365884,_0xa327('0x19'));logger[_0xa327('0x1a')](_0xa327('0x1b'),_0x365884,_0xa327('0x19'),JSON[_0xa327('0x1c')](_0x52319f));if(_0x52319f[_0xa327('0x1d')]){if(_0x52319f[_0xa327('0x1d')]['code']===0x1f4){logger['error'](_0xa327('0x18'),_0x365884,_0x52319f[_0xa327('0x1d')][_0xa327('0x1e')]);return _0x1a0d7c(_0x52319f[_0xa327('0x1d')][_0xa327('0x1e')]);}logger['error'](_0xa327('0x18'),_0x365884,_0x52319f[_0xa327('0x1d')][_0xa327('0x1e')]);return _0x569045(_0x52319f['error'][_0xa327('0x1e')]);}else{logger[_0xa327('0x17')](_0xa327('0x18'),_0x365884,_0xa327('0x19'));_0x569045(_0x52319f['result'][_0xa327('0x1e')]);}})['catch'](function(_0x51b43f){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x365884,_0x51b43f);_0x1a0d7c(_0x51b43f);});});}function respondWithStatusCode(_0x3fb883,_0x3b1acf){_0x3b1acf=_0x3b1acf||0xcc;return function(_0x4ccd23){if(_0x4ccd23){return _0x3fb883[_0xa327('0x1f')](_0x3b1acf);}return _0x3fb883['status'](_0x3b1acf)[_0xa327('0x20')]();};}function respondWithResult(_0x463145,_0x261b7a){_0x261b7a=_0x261b7a||0xc8;return function(_0xa7783b){if(_0xa7783b){return _0x463145['status'](_0x261b7a)[_0xa327('0x21')](_0xa7783b);}};}function respondWithFilteredResult(_0x58cc70,_0x21bb39){return function(_0x36c017){if(_0x36c017){var _0x5a86ff=typeof _0x21bb39[_0xa327('0x22')]===_0xa327('0x23')&&typeof _0x21bb39[_0xa327('0x24')]===_0xa327('0x23');var _0x189d5e=_0x36c017['count'];var _0xb9a98=_0x5a86ff?0x0:_0x21bb39[_0xa327('0x22')];var _0x45b7c8=_0x5a86ff?_0x36c017[_0xa327('0x25')]:_0x21bb39[_0xa327('0x22')]+_0x21bb39[_0xa327('0x24')];var _0x23ef81;if(_0x45b7c8>=_0x189d5e){_0x45b7c8=_0x189d5e;_0x23ef81=0xc8;}else{_0x23ef81=0xce;}_0x58cc70['status'](_0x23ef81);return _0x58cc70[_0xa327('0x26')](_0xa327('0x27'),_0xb9a98+'-'+_0x45b7c8+'/'+_0x189d5e)[_0xa327('0x21')](_0x36c017);}return null;};}function saveUpdates(_0x25f3fd){return function(_0xd9e045){if(_0xd9e045){return _0xd9e045['update'](_0x25f3fd)[_0xa327('0x16')](function(_0x236b1d){return _0x236b1d;});}return null;};}function removeEntity(_0x1db18e){return function(_0x53e581){if(_0x53e581){return _0x53e581[_0xa327('0x28')]()[_0xa327('0x16')](function(){_0x1db18e[_0xa327('0x29')](0xcc)[_0xa327('0x20')]();});}};}function handleEntityNotFound(_0x48c5ba){return function(_0x2239c0){if(!_0x2239c0){_0x48c5ba[_0xa327('0x1f')](0x194);}return _0x2239c0;};}function handleError(_0x18c1ae,_0xe6442b){_0xe6442b=_0xe6442b||0x1f4;return function(_0x5c1b92){logger[_0xa327('0x1d')](_0x5c1b92[_0xa327('0x2a')]);if(_0x5c1b92[_0xa327('0x2b')]){delete _0x5c1b92[_0xa327('0x2b')];}_0x18c1ae[_0xa327('0x29')](_0xe6442b)[_0xa327('0x2c')](_0x5c1b92);};}function getMustacheRender(_0x15c188,_0x2960fd){return Mustache[_0xa327('0x2d')](_0x15c188,_[_0xa327('0x2e')](_0x2960fd[_0xa327('0x2f')],{'contact':_0x2960fd[_0xa327('0x30')],'message':_0x2960fd[_0xa327('0x1e')],'agent':_0x2960fd[_0xa327('0x31')],'interaction':_0x2960fd[_0xa327('0x32')],'account':_0x2960fd[_0xa327('0x33')]}))||'';}exports[_0xa327('0x34')]=function(_0x2a5641,_0x4b2246){var _0x351ca5={};var _0x33350e=_[_0xa327('0x35')](db[_0xa327('0x36')]['rawAttributes'],function(_0x48a760){return{'name':_0x48a760[_0xa327('0x37')],'type':_0x48a760[_0xa327('0x38')][_0xa327('0x39')]};});_0x351ca5=qs[_0xa327('0x3a')](_0x33350e,_0x2a5641);return interaction[_0xa327('0x3b')](_0xa327('0x3c'),_0x2a5641[_0xa327('0x3d')],_0x2a5641['user'],_0x351ca5,_0x33350e)[_0xa327('0x16')](respondWithFilteredResult(_0x4b2246,_0x351ca5))['catch'](handleError(_0x4b2246,null));};exports[_0xa327('0x3e')]=function(_0x20e84f,_0x2413ee){var _0x4602c2={'raw':![],'where':{'id':_0x20e84f[_0xa327('0x3f')]['id']}},_0x29565f={};_0x29565f['model']=_[_0xa327('0x40')](db[_0xa327('0x36')]['rawAttributes']);_0x29565f['query']=_['keys'](_0x20e84f['query']);_0x29565f[_0xa327('0x41')]=_[_0xa327('0x42')](_0x29565f['model'],_0x29565f[_0xa327('0x3d')]);_0x4602c2[_0xa327('0x43')]=_['intersection'](_0x29565f[_0xa327('0x44')],qs[_0xa327('0x45')](_0x20e84f[_0xa327('0x3d')][_0xa327('0x45')]));_0x4602c2[_0xa327('0x43')]=_0x4602c2['attributes'][_0xa327('0x46')]?_0x4602c2[_0xa327('0x43')]:_0x29565f[_0xa327('0x44')];if(_0x20e84f[_0xa327('0x3d')][_0xa327('0x47')]){_0x4602c2[_0xa327('0x48')]=[{'all':!![]}];}_0x4602c2=_['merge']({},_0x4602c2,_0x20e84f[_0xa327('0x49')]);return db[_0xa327('0x36')][_0xa327('0x4a')](_0x4602c2)[_0xa327('0x16')](handleEntityNotFound(_0x2413ee,null))['then'](respondWithResult(_0x2413ee,null))[_0xa327('0x4b')](handleError(_0x2413ee,null));};exports['create']=function(_0x3419e5,_0x1ec5ec){return db[_0xa327('0x36')][_0xa327('0x4c')](_0x3419e5['body'],{})[_0xa327('0x16')](respondWithResult(_0x1ec5ec,0xc9))[_0xa327('0x4b')](handleError(_0x1ec5ec,null));};exports['update']=function(_0x1068f6,_0x2ba531){if(_0x1068f6[_0xa327('0x2f')]['id']){delete _0x1068f6[_0xa327('0x2f')]['id'];}return db[_0xa327('0x36')][_0xa327('0x4a')]({'where':{'id':_0x1068f6[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x2ba531,null))[_0xa327('0x16')](saveUpdates(_0x1068f6['body'],null))[_0xa327('0x16')](respondWithResult(_0x2ba531,null))[_0xa327('0x4b')](handleError(_0x2ba531,null));};exports[_0xa327('0x28')]=function(_0x327e2f,_0x157fcf){return db['ChatInteraction'][_0xa327('0x4a')]({'where':{'id':_0x327e2f[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x157fcf,null))[_0xa327('0x16')](removeEntity(_0x157fcf,null))['catch'](handleError(_0x157fcf,null));};exports['describe']=function(_0x36a4bd,_0x2c13fe){return db[_0xa327('0x36')][_0xa327('0x4d')]()['then'](respondWithResult(_0x2c13fe,null))[_0xa327('0x4b')](handleError(_0x2c13fe,null));};exports[_0xa327('0x4e')]=function(_0x495144,_0x4add0f){var _0x2e9d41=_0x495144[_0xa327('0x3f')]['id'];var _0x4cdff5;var _0x519489;var _0x17ce3a;return db['ChatInteraction'][_0xa327('0x4f')]({'where':{'id':_0x2e9d41}})[_0xa327('0x16')](function(_0x17ea41){_0x4cdff5=_0x17ea41;return db[_0xa327('0x50')][_0xa327('0x4f')]({'where':{'id':_0x17ea41['ChatWebsiteId']},'attributes':['id',_0xa327('0x51'),_0xa327('0x52'),'vidaooTopic','vidaooNote',_0xa327('0x53')],'raw':!![]});})[_0xa327('0x16')](function(_0x5ad335){if(_0x5ad335&&_0x5ad335['vidaooApiKey']&&_0x5ad335[_0xa327('0x52')]){_0x519489=_0x5ad335;var _0x23ea2f={'interaction':{'id':_0x2e9d41},'agent':{'id':_0x495144[_0xa327('0x54')]['id'],'name':_0x495144[_0xa327('0x54')][_0xa327('0x2b')],'fullname':_0x495144[_0xa327('0x54')][_0xa327('0x55')],'email':_0x495144[_0xa327('0x54')][_0xa327('0x56')]},'contact':_0x495144['body'][_0xa327('0x30')],'account':_0x495144[_0xa327('0x2f')][_0xa327('0x33')]};var _0x3e094d={'rejectUnauthorized':![],'method':_0xa327('0x57'),'url':_0xa327('0x58'),'headers':{'X-APIKEY':_0x5ad335[_0xa327('0x51')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x495144[_0xa327('0x54')]['email']],'buttons':null,'topic':_0x519489[_0xa327('0x59')],'note':_[_0xa327('0x5a')](_0x519489['vidaooNote'])?null:getMustacheRender(_0x519489['vidaooNote'],_0x23ea2f),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0xa327('0x5a')](_0x519489[_0xa327('0x53')])){var _0x16c66d=getMustacheRender(_0x519489[_0xa327('0x53')],_0x23ea2f);var _0x57c4ce=JSON[_0xa327('0x5b')](_0x16c66d);_0x3e094d[_0xa327('0x2f')][_0xa327('0x5c')]=_0x57c4ce;}}catch(_0x2d445a){throw new db[(_0xa327('0x5d'))][(_0xa327('0x5e'))](_0xa327('0x5f'));}return rp(_0x3e094d);}else{throw new db[(_0xa327('0x5d'))]['ValidationError'](_0xa327('0x60'));}})['then'](function(_0x461eed){_0x17ce3a=_0x461eed;if(_0x17ce3a['id']){var _0x2df9ff={'body':_0x17ce3a[_0xa327('0x61')],'ChatWebsiteId':_0x519489['id'],'ChatInteractionId':_0x4cdff5['id'],'direction':_0xa327('0x62'),'UserId':_0x495144['user']['id']};return db['ChatMessage'][_0xa327('0x4c')](_0x2df9ff,{});}else{throw new db[(_0xa327('0x5d'))][(_0xa327('0x5e'))](_0xa327('0x63'));}})[_0xa327('0x16')](function(){return _0x4cdff5['updateAttributes']({'vidaooSessionId':_0x17ce3a['id']});})[_0xa327('0x16')](respondWithResult(_0x4add0f,null))[_0xa327('0x4b')](handleError(_0x4add0f,null));};exports['customUpdate']=function(_0x56dcc5,_0x4c4668){if(_0x56dcc5[_0xa327('0x2f')]['id']){delete _0x56dcc5[_0xa327('0x2f')]['id'];}return db[_0xa327('0x36')][_0xa327('0x4a')]({'where':{'id':_0x56dcc5[_0xa327('0x3f')]['id']},'include':[{'model':db[_0xa327('0x64')],'as':_0xa327('0x65')}]})[_0xa327('0x16')](handleEntityNotFound(_0x4c4668,null))[_0xa327('0x16')](saveUpdates(_0x56dcc5[_0xa327('0x2f')],null))['then'](respondWithResult(_0x4c4668,null))['catch'](handleError(_0x4c4668,null));};exports['abandon']=function(_0x4860d6,_0x14f20a){if(_0x4860d6[_0xa327('0x2f')]['id']){delete _0x4860d6[_0xa327('0x2f')]['id'];}return db[_0xa327('0x36')]['find']({'where':{'id':_0x4860d6[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](function(_0x17d591){if(!_0x17d591){logger[_0xa327('0x1d')](_0xa327('0x66'),_0xa327('0x67'),0x194,_0xa327('0x68'));_0x14f20a[_0xa327('0x1f')](0x194);}else{if(_0x17d591[_0xa327('0x69')]){throw new db[(_0xa327('0x5d'))][(_0xa327('0x5e'))](_0xa327('0x6a'));}}return _0x17d591;})[_0xa327('0x16')](function(_0x4d2e26){if(_0x4d2e26){return _0x4d2e26[_0xa327('0x6b')]({'closed':_0x4860d6[_0xa327('0x2f')][_0xa327('0x6c')],'disposition':_0x4860d6[_0xa327('0x2f')][_0xa327('0x6d')]})[_0xa327('0x16')](function(_0xd7f6a3){return _0xd7f6a3;});}})[_0xa327('0x16')](function(){return respondWithRpcPromise('AbandonInteraction',_0xa327('0x67'),_0x4860d6['body'],client9004);})[_0xa327('0x16')](respondWithResult(_0x14f20a,null))['catch'](handleError(_0x14f20a,null));};exports[_0xa327('0x6e')]=function(_0x54e1ce,_0x49de32){_0x54e1ce['body'][_0xa327('0x2b')]=_0x54e1ce['file'][_0xa327('0x6f')];_0x54e1ce[_0xa327('0x2f')]['basename']=_0x54e1ce[_0xa327('0x70')][_0xa327('0x71')];_0x54e1ce[_0xa327('0x2f')]['type']=_0x54e1ce[_0xa327('0x70')][_0xa327('0x72')];return db[_0xa327('0x73')][_0xa327('0x4c')](_0x54e1ce[_0xa327('0x2f')])[_0xa327('0x16')](respondWithResult(_0x49de32,0xc9))['catch'](handleError(_0x49de32,null));};exports[_0xa327('0x74')]=function(_0x43d60d,_0x2e05dc){return db['ChatInteraction'][_0xa327('0x4f')]({'where':{'id':_0x43d60d[_0xa327('0x3f')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2e05dc,null))['then'](function(_0x3b01bf){if(_0x3b01bf){if(_0x3b01bf[_0xa327('0x6c')]){return _0x2e05dc[_0xa327('0x29')](0x193)[_0xa327('0x21')]({'status':0x193,'message':_0xa327('0x75')});}return db['Attachment'][_0xa327('0x4f')]({'where':{'id':_0x43d60d[_0xa327('0x3d')][_0xa327('0x76')]},'raw':!![]})[_0xa327('0x16')](handleEntityNotFound(_0x2e05dc,null));}})[_0xa327('0x16')](function(_0x52749b){if(_0x52749b){var _0x385055=_0x52749b[_0xa327('0x77')]!==null;var _0x1c140b=path['join'](config[_0xa327('0x78')],_0xa327('0x79'));if(_0x385055){_0x1c140b=path[_0xa327('0x7a')](_0x1c140b,'offline-chat/');}var _0x11bd7f=path[_0xa327('0x7a')](_0x1c140b,_0x52749b[_0xa327('0x7b')]);return _0x2e05dc[_0xa327('0x7c')](_0x11bd7f);}})['catch'](handleError(_0x2e05dc,null));};exports[_0xa327('0x7d')]=function(_0x23be45,_0x2e8de7){var _0x48acd0=null;var _0x51987c=null;var _0x139c01=null;if(_0x23be45[_0xa327('0x2f')]['id']){delete _0x23be45['body']['id'];}if(_0x23be45['body']['mailTranscript']){_0x139c01=path['join'](config['root'],_0xa327('0x7e'),util[_0xa327('0x7f')](_0xa327('0x80'),Date[_0xa327('0x81')]()));_0x23be45['body'][_0xa327('0x82')]=_0x139c01;}return db[_0xa327('0x36')][_0xa327('0x4a')]({'where':{'id':_0x23be45[_0xa327('0x3f')]['id']},'include':[{'model':db[_0xa327('0x83')],'as':_0xa327('0x84'),'include':[{'model':db[_0xa327('0x85')],'as':'User'}]}]})['then'](handleEntityNotFound(_0x2e8de7,null))[_0xa327('0x16')](saveUpdates(_0x23be45['body'],null))[_0xa327('0x16')](function(_0x32b428){if(_0x32b428){_0x48acd0=_0x32b428;return db[_0xa327('0x50')][_0xa327('0x4a')]({'where':{'id':_0x48acd0[_0xa327('0x86')]}});}})[_0xa327('0x16')](function(_0x147e6c){if(_0x147e6c){_0x51987c=_0x147e6c;return db[_0xa327('0x64')][_0xa327('0x4a')]({'where':{'id':_0x48acd0['ContactId']}});}})['then'](function(_0x52d910){if(_0x52d910){if(_0x139c01){var _0x10ae53=null;for(var _0x954b92=0x1;_0x954b92<_0x48acd0[_0xa327('0x84')]['length'];++_0x954b92){_0x10ae53=_0x48acd0['Messages'][_0x954b92];var _0x22915e=_0x10ae53[_0xa327('0x69')]?util['format']('%s%d',_0x51987c[_0xa327('0x87')],_0x10ae53[_0xa327('0x69')]):_0xa327('0x88');var _0x1c59f6=_0x23be45[_0xa327('0x2f')][_0xa327('0x89')]||util[_0xa327('0x7f')](_0xa327('0x8a'),_0xa327('0x8b'),_0x10ae53[_0xa327('0x8c')]);switch(_0x51987c[_0xa327('0x8d')]){case'website_alias':_0x22915e=_0x10ae53[_0xa327('0x69')]?util[_0xa327('0x7f')](_0xa327('0x8a'),_0x51987c[_0xa327('0x87')],_0x10ae53['UserId']):'System';break;case _0xa327('0x8e'):_0x22915e=_0x10ae53[_0xa327('0x69')]?_0x10ae53['User'][_0xa327('0x8f')]||_0x10ae53[_0xa327('0x85')][_0xa327('0x55')]:_0xa327('0x88');break;case'agent_fullname':_0x22915e=_0x10ae53['UserId']?_0x10ae53[_0xa327('0x85')][_0xa327('0x55')]:_0xa327('0x88');break;default:_0x22915e=_0x10ae53[_0xa327('0x69')]?util[_0xa327('0x7f')](_0xa327('0x8a'),_0x51987c['agentAlias'],_0x10ae53[_0xa327('0x69')]):'System';}var _0x4f63e4=util[_0xa327('0x7f')](_0xa327('0x90'),moment(_0x10ae53[_0xa327('0x91')])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x10ae53[_0xa327('0x92')]==='in'?_0x1c59f6:_0x22915e,_0x10ae53[_0xa327('0x2f')]);if(!_0x10ae53[_0xa327('0x93')]){fs[_0xa327('0x94')](_0x139c01,_0x4f63e4);}}return db['MailAccount'][_0xa327('0x4f')]({'where':{'service':!![]},'include':[{'model':db[_0xa327('0x95')],'as':_0xa327('0x96'),'raw':!![],'include':[{'model':db[_0xa327('0x97')],'as':_0xa327('0x97'),'raw':!![]}]}]});}}})[_0xa327('0x16')](function(_0xf8fb7a){if(!_0xf8fb7a||!_0xf8fb7a[_0xa327('0x96')]||!_0x23be45[_0xa327('0x2f')])return _0x48acd0;var _0x40b483=_0xf8fb7a[_0xa327('0x98')]();return respondWithRpcPromise(_0xa327('0x99'),_0xa327('0x9a'),{'account':_0x40b483,'message':{'from':util[_0xa327('0x7f')](_0xa327('0x9b'),_0xf8fb7a['name'],_0xf8fb7a['email']||_0xf8fb7a[_0xa327('0x96')][_0xa327('0x54')]),'to':_0x23be45[_0xa327('0x2f')][_0xa327('0x9c')],'subject':_0xa327('0x9d'),'text':util['format'](_0xa327('0x9e'),_0x23be45['body']['mailTranscript']),'attachments':[{'path':_0x139c01}]}})[_0xa327('0x16')](function(){return _0x48acd0;})[_0xa327('0x4b')](function(_0x503a5f){logger[_0xa327('0x1d')](_0x503a5f);});})[_0xa327('0x16')](respondWithStatusCode(_0x2e8de7,0xc8))[_0xa327('0x4b')](handleError(_0x2e8de7,null));};exports['addMessage']=function(_0x232fc1,_0x45b8de){return db[_0xa327('0x83')][_0xa327('0x4a')]({'where':{'id':_0x232fc1[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x45b8de,null))[_0xa327('0x16')](function(_0x3a3f36){if(_0x3a3f36){return _0x3a3f36[_0xa327('0x9f')](_0x232fc1[_0xa327('0x2f')][_0xa327('0xa0')],_[_0xa327('0xa1')](_0x232fc1[_0xa327('0x2f')],[_0xa327('0xa0'),'id'])||{});}})[_0xa327('0x16')](respondWithResult(_0x45b8de,null))[_0xa327('0x4b')](handleError(_0x45b8de,null));};exports[_0xa327('0xa2')]=function(_0x566d0f,_0x40861b){var _0x380b7a={'raw':![],'where':{}};var _0x1ee455={};var _0xbaff08={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xa327('0x4f')]({'where':{'id':_0x566d0f[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x40861b,null))['then'](function(_0x59287d){if(_0x59287d){_0x1ee455['model']=_['keys'](db[_0xa327('0x83')]['rawAttributes']);_0x1ee455[_0xa327('0x3d')]=_['keys'](_0x566d0f[_0xa327('0x3d')]);_0x1ee455[_0xa327('0x41')]=_['intersection'](_0x1ee455[_0xa327('0x44')],_0x1ee455[_0xa327('0x3d')]);_0x380b7a[_0xa327('0x43')]=_[_0xa327('0x42')](_0x1ee455[_0xa327('0x44')],qs[_0xa327('0x45')](_0x566d0f[_0xa327('0x3d')][_0xa327('0x45')]));_0x380b7a[_0xa327('0x43')]=_0x380b7a[_0xa327('0x43')][_0xa327('0x46')]?_0x380b7a[_0xa327('0x43')]:_0x1ee455[_0xa327('0x44')];if(!_0x566d0f[_0xa327('0x3d')]['hasOwnProperty']('nolimit')){_0x380b7a['limit']=qs[_0xa327('0x24')](_0x566d0f['query'][_0xa327('0x24')]);_0x380b7a[_0xa327('0x22')]=qs[_0xa327('0x22')](_0x566d0f['query'][_0xa327('0x22')]);}_0x380b7a['order']=qs[_0xa327('0xa3')](_0x566d0f[_0xa327('0x3d')][_0xa327('0xa3')]);_0x380b7a['where']=qs[_0xa327('0x41')](_[_0xa327('0xa4')](_0x566d0f['query'],_0x1ee455[_0xa327('0x41')]));_0x380b7a[_0xa327('0xa5')][_0xa327('0xa6')]=_0x59287d['id'];if(_0x566d0f['query'][_0xa327('0xa7')]){_0x380b7a[_0xa327('0xa5')]=_[_0xa327('0x2e')](_0x380b7a[_0xa327('0xa5')],{'$or':_[_0xa327('0x35')](_0x380b7a[_0xa327('0x43')],function(_0x260442){var _0x9f8ed5={};_0x9f8ed5[_0x260442]={'$like':'%'+_0x566d0f[_0xa327('0x3d')][_0xa327('0xa7')]+'%'};return _0x9f8ed5;})});}if(_0x566d0f['query'][_0xa327('0xa8')]){var _0x4c240e=_0x566d0f[_0xa327('0x3d')]['$gte'][_0xa327('0xa9')](',');var _0x1e1504={};_0x1e1504[_0x4c240e[0x0]]={'$gte':moment(_0x4c240e[0x1])[_0xa327('0x7f')](_0xa327('0xaa'))};_0x380b7a[_0xa327('0xa5')]=_[_0xa327('0x2e')](_0x380b7a[_0xa327('0xa5')],_0x1e1504);}_0x380b7a=_[_0xa327('0x2e')]({},_0x380b7a,_0x566d0f['options']);return db[_0xa327('0x83')][_0xa327('0x25')]({'where':_0x380b7a[_0xa327('0xa5')]})[_0xa327('0x16')](function(_0x185e31){_0xbaff08['count']=_0x185e31;if(_0x566d0f['query'][_0xa327('0x47')]){_0x380b7a[_0xa327('0x48')]=[{'all':!![]}];}return db[_0xa327('0x83')]['findAll'](_0x380b7a);})['then'](function(_0x46bc74){_0xbaff08[_0xa327('0xab')]=_0x46bc74;return _0xbaff08;});}})[_0xa327('0x16')](respondWithFilteredResult(_0x40861b,_0x380b7a))[_0xa327('0x4b')](handleError(_0x40861b,null));};exports[_0xa327('0xac')]=function(_0x10e97c,_0x6fe58e){var _0x1e7d98={'where':{}},_0x404ae4={},_0xd77e07={'count':0x0,'rows':[]};return db[_0xa327('0x36')][_0xa327('0x4f')]({'where':{'id':_0x10e97c[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x6fe58e,null))['then'](function(_0x29a8ae){if(_0x29a8ae){_0x404ae4[_0xa327('0x44')]=_[_0xa327('0x40')](db['ChatMessage']['rawAttributes']);_0x404ae4[_0xa327('0x3d')]=_['keys'](_0x10e97c['query']);_0x404ae4[_0xa327('0x41')]=_[_0xa327('0x42')](_0x404ae4['model'],_0x404ae4[_0xa327('0x3d')]);_0x1e7d98[_0xa327('0x43')]=_['intersection'](_0x404ae4['model'],qs['fields'](_0x10e97c['query'][_0xa327('0x45')]));_0x1e7d98[_0xa327('0x43')]=_0x1e7d98['attributes'][_0xa327('0x46')]?_0x1e7d98['attributes']:_0x404ae4[_0xa327('0x44')];if(!_0x10e97c[_0xa327('0x3d')]['hasOwnProperty']('nolimit')){_0x1e7d98[_0xa327('0x24')]=qs[_0xa327('0x24')](_0x10e97c[_0xa327('0x3d')]['limit']);_0x1e7d98[_0xa327('0x22')]=qs[_0xa327('0x22')](_0x10e97c[_0xa327('0x3d')][_0xa327('0x22')]);}_0x1e7d98['order']=qs[_0xa327('0xa3')](_0x10e97c['query']['sort']);_0x1e7d98[_0xa327('0xa5')]=qs['filters'](_['pick'](_0x10e97c[_0xa327('0x3d')],_0x404ae4[_0xa327('0x41')]));_0x1e7d98['where'][_0xa327('0xa6')]=_0x29a8ae['id'];if(_0x10e97c[_0xa327('0x3d')][_0xa327('0xa7')]){_0x1e7d98['where']=_[_0xa327('0x2e')](_0x1e7d98[_0xa327('0xa5')],{'$or':_[_0xa327('0x35')](_0x1e7d98[_0xa327('0x43')],function(_0x4e7202){var _0x59e0e6={};_0x59e0e6[_0x4e7202]={'$like':'%'+_0x10e97c[_0xa327('0x3d')][_0xa327('0xa7')]+'%'};return _0x59e0e6;})});}_0x1e7d98[_0xa327('0xa5')][_0xa327('0x93')]=![];if(_0x10e97c[_0xa327('0x3d')]['id']){_0x1e7d98[_0xa327('0xa5')]['id']={'$gt':_0x10e97c[_0xa327('0x3d')]['id']};}_0x1e7d98=_[_0xa327('0x2e')]({},_0x1e7d98,_0x10e97c['options']);return db[_0xa327('0x83')]['count']({'where':_0x1e7d98['where']})['then'](function(_0x308dcc){_0xd77e07['count']=_0x308dcc;_0x1e7d98['include']=[];if(_0x10e97c[_0xa327('0x3d')][_0xa327('0xad')]){_0x1e7d98[_0xa327('0x48')][_0xa327('0xae')]({'model':db[_0xa327('0x85')],'as':'User','attributes':['id','fullname',_0xa327('0x8f')]});}if(_0x10e97c[_0xa327('0x3d')][_0xa327('0x47')]){_0x1e7d98[_0xa327('0x48')]=[{'all':!![]}];}return db[_0xa327('0x83')][_0xa327('0x3b')](_0x1e7d98);})[_0xa327('0x16')](function(_0x6e28da){_0xd77e07[_0xa327('0xab')]=_0x6e28da;return _0xd77e07;});}})['then'](respondWithFilteredResult(_0x6fe58e,_0x1e7d98))[_0xa327('0x4b')](handleError(_0x6fe58e,null));};exports[_0xa327('0xaf')]=function(_0x5e3415,_0x59507b){return db[_0xa327('0x36')][_0xa327('0x4a')]({'where':{'id':_0x5e3415[_0xa327('0x3f')]['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x59507b,null))[_0xa327('0x16')](function(_0x363dd9){if(_0x363dd9){return _0x363dd9[_0xa327('0xb0')](_0x5e3415[_0xa327('0x2f')][_0xa327('0xa0')],_[_0xa327('0xa1')](_0x5e3415[_0xa327('0x2f')],[_0xa327('0xa0'),'id'])||{})['spread'](function(){return db['Tag'][_0xa327('0x3b')]({'attributes':['id',_0xa327('0x2b'),_0xa327('0xb1')],'where':{'id':_0x5e3415[_0xa327('0x2f')][_0xa327('0xa0')]}});})['then'](function(_0x576df6){socket[_0xa327('0xb2')]('chatInteractionTags:save',{'id':Number(_0x5e3415[_0xa327('0x3f')]['id']),'tags':_0x576df6||[]});return{'id':Number(_0x5e3415[_0xa327('0x3f')]['id']),'tags':_0x576df6||[]};});}})[_0xa327('0x16')](respondWithResult(_0x59507b,null))[_0xa327('0x4b')](handleError(_0x59507b,null));};exports[_0xa327('0xb3')]=function(_0x3ce368,_0x46f96d){return db[_0xa327('0x36')][_0xa327('0x4a')]({'where':{'id':_0x3ce368['params']['id']}})[_0xa327('0x16')](handleEntityNotFound(_0x46f96d,null))[_0xa327('0x16')](function(_0x15a953){if(_0x15a953){return _0x15a953[_0xa327('0xb3')](_0x3ce368[_0xa327('0x3d')]['ids']);}})[_0xa327('0x16')](respondWithStatusCode(_0x46f96d,null))[_0xa327('0x4b')](handleError(_0x46f96d,null));};exports['download']=function(_0x8df027,_0x3e1877){var _0x2dc92a=moment()[_0xa327('0xb4')]()[_0xa327('0xb5')]();var _0x864aad=path[_0xa327('0x7a')](config[_0xa327('0x78')],_0xa327('0xb6'),'files',_0xa327('0xb7'));var _0x1b6d5a=path['join'](config[_0xa327('0x78')],_0xa327('0xb6'),_0xa327('0xb8'),'attachments');var _0x4af711=path[_0xa327('0x7a')](_0x864aad,_0x2dc92a);var _0x177ee5=util['format'](_0xa327('0xb9'),_0x8df027[_0xa327('0x3f')]['id'],_0x2dc92a);var _0x36900c=path[_0xa327('0x7a')](_0x864aad,_0x177ee5);var _0x1aced1=[];_0x1aced1[_0xa327('0xae')]({'model':db['User'],'as':_0xa327('0x85'),'attributes':['id',_0xa327('0x55')],'raw':!![]});_0x1aced1[_0xa327('0xae')]({'model':db[_0xa327('0x64')],'as':_0xa327('0x65'),'attributes':['id',_0xa327('0xba'),'lastName'],'raw':!![]});if(_0x8df027[_0xa327('0x3d')][_0xa327('0xbb')]){_0x1aced1[_0xa327('0xae')]({'model':db['Attachment'],'as':_0xa327('0x73'),'raw':!![]});}var _0x554f9c=[{'model':db[_0xa327('0x83')],'as':_0xa327('0x84'),'attributes':['id',_0xa327('0x2f'),_0xa327('0x91'),_0xa327('0x92'),_0xa327('0x93'),'read'],'include':_0x1aced1}];_0x554f9c[_0xa327('0xae')]({'model':db[_0xa327('0x50')],'as':_0xa327('0xbc'),'attributes':['id',_0xa327('0x2b')]});_0x554f9c[_0xa327('0xae')]({'model':db[_0xa327('0x85')],'as':_0xa327('0xbd'),'attributes':['id',_0xa327('0x55')]});return db['ChatInteraction'][_0xa327('0x4a')]({'where':{'id':_0x8df027[_0xa327('0x3f')]['id']},'include':_0x554f9c})['then'](handleEntityNotFound(_0x3e1877,null))[_0xa327('0x16')](function(_0x360105){if(_0x360105){var _0x12bf73=_0x360105[_0xa327('0xbe')]({'plain':!![]});fs[_0xa327('0xbf')](_0x4af711);var _0x49fe64={'channel':_0xa327('0xc0'),'account':_0x12bf73[_0xa327('0xbc')][_0xa327('0x2b')],'agent':_0x12bf73['Owner']?_0x12bf73['Owner']['fullname']:_0xa327('0xc1'),'createdAt':moment(_0x12bf73['createdAt'])[_0xa327('0x7f')](_0xa327('0xaa'))['toString'](),'closedAt':_0x12bf73[_0xa327('0x6c')]?moment(_0x12bf73[_0xa327('0xc2')])[_0xa327('0x7f')](_0xa327('0xaa'))[_0xa327('0xb5')]():'','disposition':_0x12bf73[_0xa327('0x6d')],'chatInfo':{'browser':_0x12bf73[_0xa327('0xc3')],'os':_0x12bf73[_0xa327('0xc4')],'referer':_0x12bf73[_0xa327('0xc5')],'customerIp':_0x12bf73[_0xa327('0xc6')],'customerPort':_0x12bf73[_0xa327('0xc7')]?_0x12bf73[_0xa327('0xc7')]:_0xa327('0xc1')},'messages':_(_0x12bf73[_0xa327('0x84')])[_0xa327('0xc8')]()[_0xa327('0xa7')]({'secret':![]})[_0xa327('0x35')](function(_0x2de6d4){if(_0x2de6d4[_0xa327('0x73')]){var _0x2040ca=path['join'](_0x1b6d5a,_0x2de6d4[_0xa327('0x73')][_0xa327('0x7b')]);if(fs[_0xa327('0xc9')](_0x2040ca)){fs[_0xa327('0xca')](_0x2040ca)['pipe'](fs[_0xa327('0xcb')](path[_0xa327('0x7a')](_0x4af711,_0x2de6d4['Attachment']['basename'])));}}return{'date':moment(_0x2de6d4['createdAt'])[_0xa327('0x7f')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x2de6d4['direction']===_0xa327('0x62')?_0x2de6d4[_0xa327('0x85')]?_0x2de6d4['User'][_0xa327('0x55')]:_0xa327('0x88'):_0x2de6d4[_0xa327('0x65')][_0xa327('0xba')]+(_0x2de6d4[_0xa327('0x65')][_0xa327('0xcc')]?'\x20'+_0x2de6d4[_0xa327('0x65')][_0xa327('0xcc')]:''),'body':_0x2de6d4['Attachment']?_0x2de6d4['Attachment'][_0xa327('0x7b')]:_0x2de6d4[_0xa327('0x2f')],'direction':_0x2de6d4[_0xa327('0x92')]===_0xa327('0x62')?'A':'C','secret':_0x2de6d4['secret'],'read':_0x2de6d4[_0xa327('0xcd')],'attachment':_0x2de6d4[_0xa327('0x73')]};})[_0xa327('0xce')]()};return ejs[_0xa327('0xcf')](path[_0xa327('0x7a')](config[_0xa327('0x78')],'server',_0xa327('0xd0'),_0xa327('0xd1')),{'interaction':_0x49fe64})['then'](function(_0x946755){var _0x2da23f=path[_0xa327('0x7a')](_0x4af711,_0xa327('0xd2')+_0x12bf73['id']+'-'+_0x2dc92a+_0xa327('0xd3'));var _0x2be577={'path':_0x2da23f,'channel':_0xa327('0xc0'),'interactionId':_0x12bf73['id']};return pdf[_0xa327('0xd4')](_0x946755,_0x2be577);})[_0xa327('0x16')](function(){return new Promise(function(_0x6256db,_0x43661f){zipdir(_0x4af711,{'saveTo':_0x36900c},function(_0x3caea0,_0x2f8a9d){if(_0x3caea0)return _0x43661f(_0x3caea0);return _0x6256db(_0x2f8a9d);});})[_0xa327('0x16')](function(){return new BPromise(function(_0x58049a,_0x3bbba1){rimraf(_0x4af711,function(_0x142f39){if(_0x142f39)_0x3bbba1(_0x142f39);return _0x58049a();});});})[_0xa327('0x16')](function(){return _0x3e1877['download'](_0x36900c,_0x177ee5,function(_0x2e17cd){if(_0x2e17cd){logger[_0xa327('0x1d')](_0xa327('0xd5'),_0x2e17cd);}else{fs[_0xa327('0xd6')](_0x36900c);}});});});}else{return _0x3e1877[_0xa327('0x1f')](0xc8);}})['catch'](handleError(_0x3e1877,null));};
\ No newline at end of file
+var _0x3a52=['then','info','request\x20sent','stringify','code','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','name','render','body','agent','interaction','ChatInteraction','rawAttributes','type','key','chat','query','show','params','model','keys','filters','intersection','fields','attributes','includeAll','include','merge','create','update','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','user','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','join_url','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','find','CmContact','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','basename','filename','mimetype','Attachment','closed','Unauthorized','attachId','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','User','ChatWebsite','ChatWebsiteId','%s%d','agentAlias','System','customer','ContactId','agentIdentifier','website_alias','UserId','agent_alias','alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','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','length','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','map','$gte','findAll','rows','options','push','addTags','setTags','spread','color','emit','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','lastName','read','Account','mkdirSync','Chat','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','toString','disposition','osName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','out','firstName','value','renderFile','views','downloadInteraction.ejs','transcript-','err','rimraf','request-promise','mustache','util','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3a52,0xb9));var _0x23a5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3a52[_0x321bb2];return _0x9c12ed;};'use strict';var rimraf=require(_0x23a5('0x0'));var zipdir=require('zip-dir');var rp=require(_0x23a5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x23a5('0x2'));var util=require(_0x23a5('0x3'));var path=require('path');var ejs=require(_0x23a5('0x4'));var fs=require('fs');var _=require(_0x23a5('0x5'));var Redis=require('ioredis');var interaction=require(_0x23a5('0x6'));var qs=require(_0x23a5('0x7'));var pdf=require(_0x23a5('0x8'));var logger=require(_0x23a5('0x9'))(_0x23a5('0xa'));var config=require(_0x23a5('0xb'));var db=require(_0x23a5('0xc'))['db'];config[_0x23a5('0xd')]=_['defaults'](config[_0x23a5('0xd')],{'host':_0x23a5('0xe'),'port':0x18eb});var socket=require(_0x23a5('0xf'))(new Redis(config['redis']));require(_0x23a5('0x10'))[_0x23a5('0x11')](socket);var jayson=require(_0x23a5('0x12'));var client=jayson[_0x23a5('0x13')][_0x23a5('0x14')]({'port':0x232b});var client9004=jayson['client'][_0x23a5('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x1933a4,_0x110a50,_0x27ab44,_0x1d69e5){return new BPromise(function(_0x5186e7,_0x270494){var _0x2676c3=_0x1d69e5||client;return _0x2676c3['request'](_0x1933a4,_0x27ab44)[_0x23a5('0x15')](function(_0x3fa3f0){logger[_0x23a5('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'),JSON[_0x23a5('0x18')](_0x3fa3f0));if(_0x3fa3f0['error']){if(_0x3fa3f0['error'][_0x23a5('0x19')]===0x1f4){logger[_0x23a5('0x1a')](_0x23a5('0x1b'),_0x110a50,_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);return _0x270494(_0x3fa3f0['error'][_0x23a5('0x1c')]);}logger[_0x23a5('0x1a')](_0x23a5('0x1b'),_0x110a50,_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);return _0x5186e7(_0x3fa3f0[_0x23a5('0x1a')][_0x23a5('0x1c')]);}else{logger[_0x23a5('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x110a50,_0x23a5('0x17'));_0x5186e7(_0x3fa3f0[_0x23a5('0x1d')][_0x23a5('0x1c')]);}})[_0x23a5('0x1e')](function(_0x4e64fe){logger['error'](_0x23a5('0x1b'),_0x110a50,_0x4e64fe);_0x270494(_0x4e64fe);});});}function respondWithStatusCode(_0x2174fd,_0x5519c8){_0x5519c8=_0x5519c8||0xcc;return function(_0xce6ab6){if(_0xce6ab6){return _0x2174fd[_0x23a5('0x1f')](_0x5519c8);}return _0x2174fd[_0x23a5('0x20')](_0x5519c8)['end']();};}function respondWithResult(_0x429419,_0x3faf3f){_0x3faf3f=_0x3faf3f||0xc8;return function(_0x56a1d8){if(_0x56a1d8){return _0x429419[_0x23a5('0x20')](_0x3faf3f)[_0x23a5('0x21')](_0x56a1d8);}};}function respondWithFilteredResult(_0x5eb313,_0x18ef6d){return function(_0x30e2ab){if(_0x30e2ab){var _0x5e3ff1=typeof _0x18ef6d[_0x23a5('0x22')]===_0x23a5('0x23')&&typeof _0x18ef6d[_0x23a5('0x24')]===_0x23a5('0x23');var _0x5d2e0f=_0x30e2ab[_0x23a5('0x25')];var _0x3ba955=_0x5e3ff1?0x0:_0x18ef6d[_0x23a5('0x22')];var _0x575cfc=_0x5e3ff1?_0x30e2ab[_0x23a5('0x25')]:_0x18ef6d[_0x23a5('0x22')]+_0x18ef6d[_0x23a5('0x24')];var _0x248213;if(_0x575cfc>=_0x5d2e0f){_0x575cfc=_0x5d2e0f;_0x248213=0xc8;}else{_0x248213=0xce;}_0x5eb313['status'](_0x248213);return _0x5eb313[_0x23a5('0x26')](_0x23a5('0x27'),_0x3ba955+'-'+_0x575cfc+'/'+_0x5d2e0f)['json'](_0x30e2ab);}return null;};}function saveUpdates(_0x3a0895){return function(_0x2cfd9b){if(_0x2cfd9b){return _0x2cfd9b['update'](_0x3a0895)['then'](function(_0x547a73){return _0x547a73;});}return null;};}function removeEntity(_0x36477a){return function(_0x7172e6){if(_0x7172e6){return _0x7172e6[_0x23a5('0x28')]()['then'](function(){_0x36477a['status'](0xcc)[_0x23a5('0x29')]();});}};}function handleEntityNotFound(_0x41ca13){return function(_0x146c39){if(!_0x146c39){_0x41ca13[_0x23a5('0x1f')](0x194);}return _0x146c39;};}function handleError(_0x5c5386,_0x218b87){_0x218b87=_0x218b87||0x1f4;return function(_0x850579){logger[_0x23a5('0x1a')](_0x850579['stack']);if(_0x850579[_0x23a5('0x2a')]){delete _0x850579[_0x23a5('0x2a')];}_0x5c5386[_0x23a5('0x20')](_0x218b87)['send'](_0x850579);};}function getMustacheRender(_0x5bc441,_0x1ca474){return Mustache[_0x23a5('0x2b')](_0x5bc441,_['merge'](_0x1ca474[_0x23a5('0x2c')],{'contact':_0x1ca474['contact'],'message':_0x1ca474[_0x23a5('0x1c')],'agent':_0x1ca474[_0x23a5('0x2d')],'interaction':_0x1ca474[_0x23a5('0x2e')],'account':_0x1ca474['account']}))||'';}exports['index']=function(_0x518b9c,_0x1c2077){var _0x16745b={};var _0xd1e5d4=_['map'](db[_0x23a5('0x2f')][_0x23a5('0x30')],function(_0x22db14){return{'name':_0x22db14['fieldName'],'type':_0x22db14[_0x23a5('0x31')][_0x23a5('0x32')]};});_0x16745b=qs['getOptions'](_0xd1e5d4,_0x518b9c);return interaction['findAll'](_0x23a5('0x33'),_0x518b9c[_0x23a5('0x34')],_0x518b9c['user'],_0x16745b,_0xd1e5d4)[_0x23a5('0x15')](respondWithFilteredResult(_0x1c2077,_0x16745b))[_0x23a5('0x1e')](handleError(_0x1c2077,null));};exports[_0x23a5('0x35')]=function(_0x3b8fa3,_0x27cc80){var _0x152916={'raw':![],'where':{'id':_0x3b8fa3[_0x23a5('0x36')]['id']}},_0x1a594b={};_0x1a594b[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x2f')][_0x23a5('0x30')]);_0x1a594b['query']=_[_0x23a5('0x38')](_0x3b8fa3[_0x23a5('0x34')]);_0x1a594b[_0x23a5('0x39')]=_[_0x23a5('0x3a')](_0x1a594b[_0x23a5('0x37')],_0x1a594b['query']);_0x152916['attributes']=_[_0x23a5('0x3a')](_0x1a594b[_0x23a5('0x37')],qs[_0x23a5('0x3b')](_0x3b8fa3[_0x23a5('0x34')][_0x23a5('0x3b')]));_0x152916[_0x23a5('0x3c')]=_0x152916['attributes']['length']?_0x152916[_0x23a5('0x3c')]:_0x1a594b['model'];if(_0x3b8fa3['query'][_0x23a5('0x3d')]){_0x152916[_0x23a5('0x3e')]=[{'all':!![]}];}_0x152916=_[_0x23a5('0x3f')]({},_0x152916,_0x3b8fa3['options']);return db[_0x23a5('0x2f')]['find'](_0x152916)[_0x23a5('0x15')](handleEntityNotFound(_0x27cc80,null))['then'](respondWithResult(_0x27cc80,null))[_0x23a5('0x1e')](handleError(_0x27cc80,null));};exports[_0x23a5('0x40')]=function(_0x25e0f3,_0x24c682){return db[_0x23a5('0x2f')][_0x23a5('0x40')](_0x25e0f3[_0x23a5('0x2c')],{})['then'](respondWithResult(_0x24c682,0xc9))[_0x23a5('0x1e')](handleError(_0x24c682,null));};exports[_0x23a5('0x41')]=function(_0x5e8510,_0x510ee1){if(_0x5e8510[_0x23a5('0x2c')]['id']){delete _0x5e8510[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x5e8510[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0x510ee1,null))[_0x23a5('0x15')](saveUpdates(_0x5e8510[_0x23a5('0x2c')],null))['then'](respondWithResult(_0x510ee1,null))[_0x23a5('0x1e')](handleError(_0x510ee1,null));};exports[_0x23a5('0x28')]=function(_0x2e3986,_0x1ca5f9){return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x2e3986[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x1ca5f9,null))[_0x23a5('0x15')](removeEntity(_0x1ca5f9,null))[_0x23a5('0x1e')](handleError(_0x1ca5f9,null));};exports['describe']=function(_0x75b757,_0x5d8948){return db[_0x23a5('0x2f')]['describe']()[_0x23a5('0x15')](respondWithResult(_0x5d8948,null))[_0x23a5('0x1e')](handleError(_0x5d8948,null));};exports[_0x23a5('0x42')]=function(_0x287cb8,_0x4a96f){var _0x1a9d9e=_0x287cb8[_0x23a5('0x36')]['id'];var _0x14a00e;var _0x56a1bb;var _0x2d0b15;return db[_0x23a5('0x2f')][_0x23a5('0x43')]({'where':{'id':_0x1a9d9e}})[_0x23a5('0x15')](function(_0x59f77e){_0x14a00e=_0x59f77e;return db['ChatWebsite']['findOne']({'where':{'id':_0x59f77e['ChatWebsiteId']},'attributes':['id',_0x23a5('0x44'),_0x23a5('0x45'),_0x23a5('0x46'),_0x23a5('0x47'),_0x23a5('0x48')],'raw':!![]});})[_0x23a5('0x15')](function(_0x25d35d){if(_0x25d35d&&_0x25d35d[_0x23a5('0x44')]&&_0x25d35d['vidaooEscalation']){_0x56a1bb=_0x25d35d;var _0x3bb32e={'interaction':{'id':_0x1a9d9e},'agent':{'id':_0x287cb8[_0x23a5('0x49')]['id'],'name':_0x287cb8[_0x23a5('0x49')][_0x23a5('0x2a')],'fullname':_0x287cb8['user']['fullname'],'email':_0x287cb8['user'][_0x23a5('0x4a')]},'contact':_0x287cb8[_0x23a5('0x2c')][_0x23a5('0x4b')],'account':_0x287cb8['body']['account']};var _0x56742f={'rejectUnauthorized':![],'method':_0x23a5('0x4c'),'url':_0x23a5('0x4d'),'headers':{'X-APIKEY':_0x25d35d[_0x23a5('0x44')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x287cb8['user'][_0x23a5('0x4a')]],'buttons':null,'topic':_0x56a1bb[_0x23a5('0x46')],'note':_[_0x23a5('0x4e')](_0x56a1bb[_0x23a5('0x47')])?null:getMustacheRender(_0x56a1bb[_0x23a5('0x47')],_0x3bb32e),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x23a5('0x4e')](_0x56a1bb[_0x23a5('0x48')])){var _0x41bac4=getMustacheRender(_0x56a1bb[_0x23a5('0x48')],_0x3bb32e);var _0xffcd96=JSON['parse'](_0x41bac4);_0x56742f['body'][_0x23a5('0x4f')]=_0xffcd96;}}catch(_0x4b80e5){throw new db['Sequelize'][(_0x23a5('0x50'))](_0x23a5('0x51'));}return rp(_0x56742f);}else{throw new db[(_0x23a5('0x52'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x232a0c){_0x2d0b15=_0x232a0c;if(_0x2d0b15['id']){var _0x4cba9f={'body':_0x2d0b15[_0x23a5('0x53')],'ChatWebsiteId':_0x56a1bb['id'],'ChatInteractionId':_0x14a00e['id'],'direction':'out','UserId':_0x287cb8[_0x23a5('0x49')]['id']};return db['ChatMessage'][_0x23a5('0x40')](_0x4cba9f,{});}else{throw new db[(_0x23a5('0x52'))][(_0x23a5('0x50'))](_0x23a5('0x54'));}})[_0x23a5('0x15')](function(){return _0x14a00e[_0x23a5('0x55')]({'vidaooSessionId':_0x2d0b15['id']});})[_0x23a5('0x15')](respondWithResult(_0x4a96f,null))[_0x23a5('0x1e')](handleError(_0x4a96f,null));};exports[_0x23a5('0x56')]=function(_0x17ffcd,_0x116360){if(_0x17ffcd[_0x23a5('0x2c')]['id']){delete _0x17ffcd[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x17ffcd['params']['id']},'include':[{'model':db[_0x23a5('0x58')],'as':_0x23a5('0x59')}]})[_0x23a5('0x15')](handleEntityNotFound(_0x116360,null))[_0x23a5('0x15')](saveUpdates(_0x17ffcd[_0x23a5('0x2c')],null))[_0x23a5('0x15')](respondWithResult(_0x116360,null))[_0x23a5('0x1e')](handleError(_0x116360,null));};exports['abandon']=function(_0x5d3b15,_0x572472){if(_0x5d3b15[_0x23a5('0x2c')]['id']){delete _0x5d3b15[_0x23a5('0x2c')]['id'];}return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x5d3b15[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](function(_0x566c9a){if(!_0x566c9a){logger[_0x23a5('0x1a')](_0x23a5('0x5a'),_0x23a5('0x5b'),0x194,'entity\x20not\x20found');_0x572472['sendStatus'](0x194);}else{if(_0x566c9a['UserId']){throw new db[(_0x23a5('0x52'))]['ValidationError'](_0x23a5('0x5c'));}}return _0x566c9a;})[_0x23a5('0x15')](function(_0x3d9035){if(_0x3d9035){return _0x3d9035['update']({'closed':_0x5d3b15[_0x23a5('0x2c')]['closed'],'disposition':_0x5d3b15[_0x23a5('0x2c')]['disposition']})[_0x23a5('0x15')](function(_0x137c9a){return _0x137c9a;});}})[_0x23a5('0x15')](function(){return respondWithRpcPromise(_0x23a5('0x5d'),'abandon',_0x5d3b15[_0x23a5('0x2c')],client9004);})[_0x23a5('0x15')](respondWithResult(_0x572472,null))[_0x23a5('0x1e')](handleError(_0x572472,null));};exports[_0x23a5('0x5e')]=function(_0x1df071,_0x44659d){_0x1df071[_0x23a5('0x2c')]['name']=_0x1df071[_0x23a5('0x5f')]['originalname'];_0x1df071['body'][_0x23a5('0x60')]=_0x1df071[_0x23a5('0x5f')][_0x23a5('0x61')];_0x1df071[_0x23a5('0x2c')][_0x23a5('0x31')]=_0x1df071['file'][_0x23a5('0x62')];return db[_0x23a5('0x63')]['create'](_0x1df071[_0x23a5('0x2c')])[_0x23a5('0x15')](respondWithResult(_0x44659d,0xc9))[_0x23a5('0x1e')](handleError(_0x44659d,null));};exports['attachmentDownload']=function(_0x3c8632,_0x247c09){return db['ChatInteraction']['findOne']({'where':{'id':_0x3c8632[_0x23a5('0x36')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x247c09,null))[_0x23a5('0x15')](function(_0x59e7ce){if(_0x59e7ce){if(_0x59e7ce[_0x23a5('0x64')]){return _0x247c09[_0x23a5('0x20')](0x193)[_0x23a5('0x21')]({'status':0x193,'message':_0x23a5('0x65')});}return db[_0x23a5('0x63')][_0x23a5('0x43')]({'where':{'id':_0x3c8632[_0x23a5('0x34')][_0x23a5('0x66')]},'raw':!![]})['then'](handleEntityNotFound(_0x247c09,null));}})[_0x23a5('0x15')](function(_0x116714){if(_0x116714){var _0x25f69b=_0x116714[_0x23a5('0x67')]!==null;var _0x1e9e4b=path['join'](config[_0x23a5('0x68')],_0x23a5('0x69'));if(_0x25f69b){_0x1e9e4b=path[_0x23a5('0x6a')](_0x1e9e4b,_0x23a5('0x6b'));}var _0x695f98=path[_0x23a5('0x6a')](_0x1e9e4b,_0x116714[_0x23a5('0x60')]);return _0x247c09[_0x23a5('0x6c')](_0x695f98);}})[_0x23a5('0x1e')](handleError(_0x247c09,null));};exports[_0x23a5('0x6d')]=function(_0x5d8357,_0x39c92a){var _0x5779be=null;var _0x3ab248=null;var _0x37d855=null;if(_0x5d8357[_0x23a5('0x2c')]['id']){delete _0x5d8357[_0x23a5('0x2c')]['id'];}if(_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')]){_0x37d855=path[_0x23a5('0x6a')](config[_0x23a5('0x68')],_0x23a5('0x6f'),util[_0x23a5('0x70')](_0x23a5('0x71'),Date[_0x23a5('0x72')]()));_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x73')]=_0x37d855;}return db[_0x23a5('0x2f')]['find']({'where':{'id':_0x5d8357[_0x23a5('0x36')]['id']},'include':[{'model':db[_0x23a5('0x74')],'as':_0x23a5('0x75'),'include':[{'model':db[_0x23a5('0x76')],'as':_0x23a5('0x76')}]}]})['then'](handleEntityNotFound(_0x39c92a,null))[_0x23a5('0x15')](saveUpdates(_0x5d8357[_0x23a5('0x2c')],null))[_0x23a5('0x15')](function(_0x396727){if(_0x396727){_0x5779be=_0x396727;return db[_0x23a5('0x77')][_0x23a5('0x57')]({'where':{'id':_0x5779be[_0x23a5('0x78')]}});}})[_0x23a5('0x15')](function(_0x40265){if(_0x40265){_0x3ab248=_0x40265;return db[_0x23a5('0x58')][_0x23a5('0x57')]({'where':{'id':_0x5779be['ContactId']}});}})['then'](function(_0x23fccd){if(_0x23fccd){if(_0x37d855){var _0x50dd12=null;for(var _0x4bba04=0x1;_0x4bba04<_0x5779be[_0x23a5('0x75')]['length'];++_0x4bba04){_0x50dd12=_0x5779be['Messages'][_0x4bba04];var _0x4c3c79=_0x50dd12['UserId']?util['format'](_0x23a5('0x79'),_0x3ab248[_0x23a5('0x7a')],_0x50dd12['UserId']):_0x23a5('0x7b');var _0x9dd962=_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x7c')]||util['format']('%s%d','Visitor',_0x50dd12[_0x23a5('0x7d')]);switch(_0x3ab248[_0x23a5('0x7e')]){case _0x23a5('0x7f'):_0x4c3c79=_0x50dd12[_0x23a5('0x80')]?util[_0x23a5('0x70')]('%s%d',_0x3ab248['agentAlias'],_0x50dd12[_0x23a5('0x80')]):_0x23a5('0x7b');break;case _0x23a5('0x81'):_0x4c3c79=_0x50dd12[_0x23a5('0x80')]?_0x50dd12['User'][_0x23a5('0x82')]||_0x50dd12[_0x23a5('0x76')][_0x23a5('0x83')]:_0x23a5('0x7b');break;case _0x23a5('0x84'):_0x4c3c79=_0x50dd12['UserId']?_0x50dd12['User'][_0x23a5('0x83')]:_0x23a5('0x7b');break;default:_0x4c3c79=_0x50dd12['UserId']?util['format'](_0x23a5('0x79'),_0x3ab248[_0x23a5('0x7a')],_0x50dd12[_0x23a5('0x80')]):_0x23a5('0x7b');}var _0x20fe8d=util[_0x23a5('0x70')](_0x23a5('0x85'),moment(_0x50dd12[_0x23a5('0x86')])[_0x23a5('0x70')](_0x23a5('0x87')),_0x50dd12[_0x23a5('0x88')]==='in'?_0x9dd962:_0x4c3c79,_0x50dd12[_0x23a5('0x2c')]);if(!_0x50dd12[_0x23a5('0x89')]){fs[_0x23a5('0x8a')](_0x37d855,_0x20fe8d);}}return db[_0x23a5('0x8b')][_0x23a5('0x43')]({'where':{'service':!![]},'include':[{'model':db[_0x23a5('0x8c')],'as':_0x23a5('0x8d'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x23a5('0x8e'),'raw':!![]}]}]});}}})[_0x23a5('0x15')](function(_0x5a4981){if(!_0x5a4981||!_0x5a4981[_0x23a5('0x8d')]||!_0x5d8357[_0x23a5('0x2c')])return _0x5779be;var _0x2b9f92=_0x5a4981[_0x23a5('0x8f')]();return respondWithRpcPromise(_0x23a5('0x90'),_0x23a5('0x91'),{'account':_0x2b9f92,'message':{'from':util[_0x23a5('0x70')](_0x23a5('0x92'),_0x5a4981[_0x23a5('0x2a')],_0x5a4981[_0x23a5('0x4a')]||_0x5a4981['Smtp']['user']),'to':_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')],'subject':_0x23a5('0x93'),'text':util[_0x23a5('0x70')](_0x23a5('0x94'),_0x5d8357[_0x23a5('0x2c')][_0x23a5('0x6e')]),'attachments':[{'path':_0x37d855}]}})[_0x23a5('0x15')](function(){return _0x5779be;})['catch'](function(_0x1877ad){logger['error'](_0x1877ad);});})[_0x23a5('0x15')](respondWithStatusCode(_0x39c92a,0xc8))['catch'](handleError(_0x39c92a,null));};exports[_0x23a5('0x95')]=function(_0x5700fc,_0x4f614e){return db['ChatMessage']['find']({'where':{'id':_0x5700fc[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x4f614e,null))[_0x23a5('0x15')](function(_0x9e2e55){if(_0x9e2e55){return _0x9e2e55['addMessage'](_0x5700fc['body'][_0x23a5('0x96')],_[_0x23a5('0x97')](_0x5700fc[_0x23a5('0x2c')],['ids','id'])||{});}})[_0x23a5('0x15')](respondWithResult(_0x4f614e,null))[_0x23a5('0x1e')](handleError(_0x4f614e,null));};exports[_0x23a5('0x98')]=function(_0x241325,_0x576408){var _0x4221ba={'raw':![],'where':{}};var _0xaa80c9={};var _0x2e30e7={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0x241325['params']['id']}})['then'](handleEntityNotFound(_0x576408,null))[_0x23a5('0x15')](function(_0x6ca3eb){if(_0x6ca3eb){_0xaa80c9[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x74')][_0x23a5('0x30')]);_0xaa80c9[_0x23a5('0x34')]=_[_0x23a5('0x38')](_0x241325[_0x23a5('0x34')]);_0xaa80c9[_0x23a5('0x39')]=_[_0x23a5('0x3a')](_0xaa80c9[_0x23a5('0x37')],_0xaa80c9[_0x23a5('0x34')]);_0x4221ba[_0x23a5('0x3c')]=_[_0x23a5('0x3a')](_0xaa80c9[_0x23a5('0x37')],qs[_0x23a5('0x3b')](_0x241325['query'][_0x23a5('0x3b')]));_0x4221ba[_0x23a5('0x3c')]=_0x4221ba['attributes'][_0x23a5('0x99')]?_0x4221ba[_0x23a5('0x3c')]:_0xaa80c9[_0x23a5('0x37')];if(!_0x241325['query'][_0x23a5('0x9a')](_0x23a5('0x9b'))){_0x4221ba[_0x23a5('0x24')]=qs[_0x23a5('0x24')](_0x241325[_0x23a5('0x34')][_0x23a5('0x24')]);_0x4221ba[_0x23a5('0x22')]=qs[_0x23a5('0x22')](_0x241325[_0x23a5('0x34')][_0x23a5('0x22')]);}_0x4221ba[_0x23a5('0x9c')]=qs[_0x23a5('0x9d')](_0x241325[_0x23a5('0x34')][_0x23a5('0x9d')]);_0x4221ba[_0x23a5('0x9e')]=qs['filters'](_[_0x23a5('0x9f')](_0x241325[_0x23a5('0x34')],_0xaa80c9['filters']));_0x4221ba[_0x23a5('0x9e')][_0x23a5('0xa0')]=_0x6ca3eb['id'];if(_0x241325[_0x23a5('0x34')][_0x23a5('0xa1')]){_0x4221ba['where']=_[_0x23a5('0x3f')](_0x4221ba['where'],{'$or':_[_0x23a5('0xa2')](_0x4221ba[_0x23a5('0x3c')],function(_0x1049b5){var _0x5ae48f={};_0x5ae48f[_0x1049b5]={'$like':'%'+_0x241325['query'][_0x23a5('0xa1')]+'%'};return _0x5ae48f;})});}if(_0x241325['query'][_0x23a5('0xa3')]){var _0x426418=_0x241325['query'][_0x23a5('0xa3')]['split'](',');var _0x419991={};_0x419991[_0x426418[0x0]]={'$gte':moment(_0x426418[0x1])[_0x23a5('0x70')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4221ba[_0x23a5('0x9e')]=_[_0x23a5('0x3f')](_0x4221ba[_0x23a5('0x9e')],_0x419991);}_0x4221ba=_[_0x23a5('0x3f')]({},_0x4221ba,_0x241325['options']);return db[_0x23a5('0x74')][_0x23a5('0x25')]({'where':_0x4221ba[_0x23a5('0x9e')]})['then'](function(_0xd2ccb4){_0x2e30e7['count']=_0xd2ccb4;if(_0x241325[_0x23a5('0x34')]['includeAll']){_0x4221ba[_0x23a5('0x3e')]=[{'all':!![]}];}return db[_0x23a5('0x74')][_0x23a5('0xa4')](_0x4221ba);})[_0x23a5('0x15')](function(_0x243d38){_0x2e30e7[_0x23a5('0xa5')]=_0x243d38;return _0x2e30e7;});}})[_0x23a5('0x15')](respondWithFilteredResult(_0x576408,_0x4221ba))[_0x23a5('0x1e')](handleError(_0x576408,null));};exports['getMyMessages']=function(_0x21774b,_0x1a2a8b){var _0x148bf7={'where':{}},_0x351cb7={},_0x378260={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x23a5('0x43')]({'where':{'id':_0x21774b[_0x23a5('0x36')]['id']}})[_0x23a5('0x15')](handleEntityNotFound(_0x1a2a8b,null))[_0x23a5('0x15')](function(_0xef8323){if(_0xef8323){_0x351cb7[_0x23a5('0x37')]=_[_0x23a5('0x38')](db[_0x23a5('0x74')][_0x23a5('0x30')]);_0x351cb7[_0x23a5('0x34')]=_[_0x23a5('0x38')](_0x21774b['query']);_0x351cb7[_0x23a5('0x39')]=_['intersection'](_0x351cb7[_0x23a5('0x37')],_0x351cb7[_0x23a5('0x34')]);_0x148bf7[_0x23a5('0x3c')]=_[_0x23a5('0x3a')](_0x351cb7['model'],qs['fields'](_0x21774b[_0x23a5('0x34')][_0x23a5('0x3b')]));_0x148bf7['attributes']=_0x148bf7[_0x23a5('0x3c')][_0x23a5('0x99')]?_0x148bf7[_0x23a5('0x3c')]:_0x351cb7[_0x23a5('0x37')];if(!_0x21774b[_0x23a5('0x34')][_0x23a5('0x9a')]('nolimit')){_0x148bf7[_0x23a5('0x24')]=qs[_0x23a5('0x24')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x24')]);_0x148bf7[_0x23a5('0x22')]=qs[_0x23a5('0x22')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x22')]);}_0x148bf7[_0x23a5('0x9c')]=qs[_0x23a5('0x9d')](_0x21774b[_0x23a5('0x34')][_0x23a5('0x9d')]);_0x148bf7[_0x23a5('0x9e')]=qs['filters'](_[_0x23a5('0x9f')](_0x21774b[_0x23a5('0x34')],_0x351cb7[_0x23a5('0x39')]));_0x148bf7[_0x23a5('0x9e')]['ChatInteractionId']=_0xef8323['id'];if(_0x21774b[_0x23a5('0x34')]['filter']){_0x148bf7[_0x23a5('0x9e')]=_['merge'](_0x148bf7['where'],{'$or':_[_0x23a5('0xa2')](_0x148bf7[_0x23a5('0x3c')],function(_0x1b1870){var _0x475241={};_0x475241[_0x1b1870]={'$like':'%'+_0x21774b[_0x23a5('0x34')][_0x23a5('0xa1')]+'%'};return _0x475241;})});}_0x148bf7[_0x23a5('0x9e')]['secret']=![];if(_0x21774b[_0x23a5('0x34')]['id']){_0x148bf7[_0x23a5('0x9e')]['id']={'$gt':_0x21774b[_0x23a5('0x34')]['id']};}_0x148bf7=_[_0x23a5('0x3f')]({},_0x148bf7,_0x21774b[_0x23a5('0xa6')]);return db['ChatMessage'][_0x23a5('0x25')]({'where':_0x148bf7[_0x23a5('0x9e')]})[_0x23a5('0x15')](function(_0x598460){_0x378260[_0x23a5('0x25')]=_0x598460;_0x148bf7[_0x23a5('0x3e')]=[];if(_0x21774b[_0x23a5('0x34')]['includeAgent']){_0x148bf7[_0x23a5('0x3e')][_0x23a5('0xa7')]({'model':db[_0x23a5('0x76')],'as':'User','attributes':['id',_0x23a5('0x83'),'alias']});}if(_0x21774b['query']['includeAll']){_0x148bf7[_0x23a5('0x3e')]=[{'all':!![]}];}return db[_0x23a5('0x74')][_0x23a5('0xa4')](_0x148bf7);})[_0x23a5('0x15')](function(_0x380f70){_0x378260[_0x23a5('0xa5')]=_0x380f70;return _0x378260;});}})[_0x23a5('0x15')](respondWithFilteredResult(_0x1a2a8b,_0x148bf7))[_0x23a5('0x1e')](handleError(_0x1a2a8b,null));};exports[_0x23a5('0xa8')]=function(_0x420440,_0xd01168){return db['ChatInteraction']['find']({'where':{'id':_0x420440[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0xd01168,null))[_0x23a5('0x15')](function(_0x50ad53){if(_0x50ad53){return _0x50ad53[_0x23a5('0xa9')](_0x420440['body'][_0x23a5('0x96')],_[_0x23a5('0x97')](_0x420440[_0x23a5('0x2c')],[_0x23a5('0x96'),'id'])||{})[_0x23a5('0xaa')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0x23a5('0xab')],'where':{'id':_0x420440['body'][_0x23a5('0x96')]}});})['then'](function(_0x1e197f){socket[_0x23a5('0xac')]('chatInteractionTags:save',{'id':Number(_0x420440['params']['id']),'tags':_0x1e197f||[]});return{'id':Number(_0x420440['params']['id']),'tags':_0x1e197f||[]};});}})[_0x23a5('0x15')](respondWithResult(_0xd01168,null))[_0x23a5('0x1e')](handleError(_0xd01168,null));};exports[_0x23a5('0xad')]=function(_0x3eca0a,_0x1329f1){return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x3eca0a[_0x23a5('0x36')]['id']}})['then'](handleEntityNotFound(_0x1329f1,null))[_0x23a5('0x15')](function(_0x459fd7){if(_0x459fd7){return _0x459fd7['removeTags'](_0x3eca0a[_0x23a5('0x34')]['ids']);}})['then'](respondWithStatusCode(_0x1329f1,null))['catch'](handleError(_0x1329f1,null));};exports[_0x23a5('0x6c')]=function(_0x20e2ef,_0x24aa55){var _0xcb560=moment()[_0x23a5('0xae')]()['toString']();var _0x25bb32=path['join'](config['root'],_0x23a5('0xaf'),_0x23a5('0xb0'),_0x23a5('0xb1'));var _0x33cfef=path[_0x23a5('0x6a')](config['root'],'server','files',_0x23a5('0xb2'));var _0x623047=path[_0x23a5('0x6a')](_0x25bb32,_0xcb560);var _0x47e935=util['format'](_0x23a5('0xb3'),_0x20e2ef[_0x23a5('0x36')]['id'],_0xcb560);var _0x421e7b=path[_0x23a5('0x6a')](_0x25bb32,_0x47e935);var _0x49ca84=[];_0x49ca84['push']({'model':db[_0x23a5('0x76')],'as':'User','attributes':['id',_0x23a5('0x83')],'raw':!![]});_0x49ca84[_0x23a5('0xa7')]({'model':db[_0x23a5('0x58')],'as':'Contact','attributes':['id','firstName',_0x23a5('0xb4')],'raw':!![]});if(_0x20e2ef[_0x23a5('0x34')][_0x23a5('0xb2')]){_0x49ca84['push']({'model':db['Attachment'],'as':_0x23a5('0x63'),'raw':!![]});}var _0xedac92=[{'model':db[_0x23a5('0x74')],'as':_0x23a5('0x75'),'attributes':['id',_0x23a5('0x2c'),_0x23a5('0x86'),_0x23a5('0x88'),'secret',_0x23a5('0xb5')],'include':_0x49ca84}];_0xedac92[_0x23a5('0xa7')]({'model':db['ChatWebsite'],'as':_0x23a5('0xb6'),'attributes':['id',_0x23a5('0x2a')]});_0xedac92['push']({'model':db[_0x23a5('0x76')],'as':'Owner','attributes':['id',_0x23a5('0x83')]});return db[_0x23a5('0x2f')][_0x23a5('0x57')]({'where':{'id':_0x20e2ef[_0x23a5('0x36')]['id']},'include':_0xedac92})[_0x23a5('0x15')](handleEntityNotFound(_0x24aa55,null))['then'](function(_0x988e78){if(_0x988e78){var _0x4c4005=_0x988e78['get']({'plain':!![]});fs[_0x23a5('0xb7')](_0x623047);var _0x1a2397={'channel':_0x23a5('0xb8'),'account':_0x4c4005[_0x23a5('0xb6')]['name'],'agent':_0x4c4005[_0x23a5('0xb9')]?_0x4c4005['Owner'][_0x23a5('0x83')]:_0x23a5('0xba'),'createdAt':moment(_0x4c4005[_0x23a5('0x86')])[_0x23a5('0x70')](_0x23a5('0xbb'))['toString'](),'closedAt':_0x4c4005[_0x23a5('0x64')]?moment(_0x4c4005[_0x23a5('0xbc')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x23a5('0xbd')]():'','disposition':_0x4c4005[_0x23a5('0xbe')],'chatInfo':{'browser':_0x4c4005['browserName'],'os':_0x4c4005[_0x23a5('0xbf')],'referer':_0x4c4005['referer'],'customerIp':_0x4c4005[_0x23a5('0xc0')],'customerPort':_0x4c4005['customerPort']?_0x4c4005[_0x23a5('0xc1')]:_0x23a5('0xba')},'messages':_(_0x4c4005['Messages'])[_0x23a5('0xc2')]()[_0x23a5('0xa1')]({'secret':![]})[_0x23a5('0xa2')](function(_0x5cbf45){if(_0x5cbf45[_0x23a5('0x63')]){var _0x4738ce=path[_0x23a5('0x6a')](_0x33cfef,_0x5cbf45[_0x23a5('0x63')][_0x23a5('0x60')]);if(fs[_0x23a5('0xc3')](_0x4738ce)){fs[_0x23a5('0xc4')](_0x4738ce)[_0x23a5('0xc5')](fs['createWriteStream'](path[_0x23a5('0x6a')](_0x623047,_0x5cbf45[_0x23a5('0x63')][_0x23a5('0x60')])));}}return{'date':moment(_0x5cbf45['createdAt'])[_0x23a5('0x70')](_0x23a5('0xbb'))[_0x23a5('0xbd')](),'sender':_0x5cbf45['direction']===_0x23a5('0xc6')?_0x5cbf45[_0x23a5('0x76')]?_0x5cbf45[_0x23a5('0x76')][_0x23a5('0x83')]:'System':_0x5cbf45['Contact'][_0x23a5('0xc7')]+(_0x5cbf45[_0x23a5('0x59')][_0x23a5('0xb4')]?'\x20'+_0x5cbf45[_0x23a5('0x59')][_0x23a5('0xb4')]:''),'body':_0x5cbf45[_0x23a5('0x63')]?_0x5cbf45[_0x23a5('0x63')]['basename']:_0x5cbf45[_0x23a5('0x2c')],'direction':_0x5cbf45[_0x23a5('0x88')]===_0x23a5('0xc6')?'A':'C','secret':_0x5cbf45[_0x23a5('0x89')],'read':_0x5cbf45[_0x23a5('0xb5')],'attachment':_0x5cbf45[_0x23a5('0x63')]};})[_0x23a5('0xc8')]()};return ejs[_0x23a5('0xc9')](path[_0x23a5('0x6a')](config['root'],'server',_0x23a5('0xca'),_0x23a5('0xcb')),{'interaction':_0x1a2397})['then'](function(_0x42426){var _0x860348=path['join'](_0x623047,_0x23a5('0xcc')+_0x4c4005['id']+'-'+_0xcb560+'.pdf');var _0x45c7be={'path':_0x860348,'channel':_0x23a5('0xb8'),'interactionId':_0x4c4005['id']};return pdf['createPdfFromHTML'](_0x42426,_0x45c7be);})['then'](function(){return new Promise(function(_0x5c04fd,_0x2f7797){zipdir(_0x623047,{'saveTo':_0x421e7b},function(_0x54b9cb,_0x2bc442){if(_0x54b9cb)return _0x2f7797(_0x54b9cb);return _0x5c04fd(_0x2bc442);});})[_0x23a5('0x15')](function(){return new BPromise(function(_0x47d2b6,_0x18c056){rimraf(_0x623047,function(_0x35822d){if(_0x35822d)_0x18c056(_0x35822d);return _0x47d2b6();});});})[_0x23a5('0x15')](function(){return _0x24aa55[_0x23a5('0x6c')](_0x421e7b,_0x47e935,function(_0xec0de2){if(_0xec0de2){logger[_0x23a5('0x1a')](_0x23a5('0xcd'),_0xec0de2);}else{fs['unlinkSync'](_0x421e7b);}});});});}else{return _0x24aa55[_0x23a5('0x1f')](0xc8);}})[_0x23a5('0x1e')](handleError(_0x24aa55,null));};
\ No newline at end of file
index d236357..9f8d629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dcd=['hasOwnProperty','hook','events','../../mysqldb','ChatInteraction','setMaxListeners','save','remove','getUsers','then','setDataValue','unreadMessages','length','emit'];(function(_0x40747a,_0x5c1df1){var _0x26aa7c=function(_0x1c47fb){while(--_0x1c47fb){_0x40747a['push'](_0x40747a['shift']());}};_0x26aa7c(++_0x5c1df1);}(_0x8dcd,0xe2));var _0xd8dc=function(_0x592953,_0x15e2e7){_0x592953=_0x592953-0x0;var _0x28c565=_0x8dcd[_0x592953];return _0x28c565;};'use strict';var EventEmitter=require(_0xd8dc('0x0'));var ChatInteraction=require(_0xd8dc('0x1'))['db'][_0xd8dc('0x2')];var ChatMessage=require(_0xd8dc('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xd8dc('0x3')](0x0);var events={'afterCreate':_0xd8dc('0x4'),'afterUpdate':'update','afterDestroy':_0xd8dc('0x5')};function emitEvent(_0x4d8da9){return function(_0x20d0ba,_0x25a397,_0x4351db){_0x20d0ba[_0xd8dc('0x6')]({'attributes':['id'],'raw':!![]})[_0xd8dc('0x7')](function(_0x38ad77){_0x20d0ba['setDataValue']('Users',_0x38ad77['map'](function(_0x2b82be){return{'id':_0x2b82be['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x20d0ba['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd8dc('0x7')](function(_0x1c0fd4){_0x20d0ba[_0xd8dc('0x8')](_0xd8dc('0x9'),_0x1c0fd4[_0xd8dc('0xa')]);ChatInteractionEvents[_0xd8dc('0xb')](_0x4d8da9+':'+_0x20d0ba['id'],_0x20d0ba);ChatInteractionEvents[_0xd8dc('0xb')](_0x4d8da9,_0x20d0ba);_0x4351db(null);})['catch'](_0x4351db(null));};}for(var e in events){if(events[_0xd8dc('0xc')](e)){var event=events[e];ChatInteraction[_0xd8dc('0xd')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x7f8b=['setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0xe6be68,_0x5dd847){var _0x448fff=function(_0x12c248){while(--_0x12c248){_0xe6be68['push'](_0xe6be68['shift']());}};_0x448fff(++_0x5dd847);}(_0x7f8b,0x1ea));var _0xb7f8=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x7f8b[_0x45d3f0];return _0x314b79;};'use strict';var EventEmitter=require(_0xb7f8('0x0'));var ChatInteraction=require(_0xb7f8('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xb7f8('0x1'))['db'][_0xb7f8('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xb7f8('0x3')](0x0);var events={'afterCreate':_0xb7f8('0x4'),'afterUpdate':_0xb7f8('0x5'),'afterDestroy':_0xb7f8('0x6')};function emitEvent(_0x2baae1){return function(_0x492d3b,_0x595c92,_0x23ee26){_0x492d3b['getUsers']({'attributes':['id'],'raw':!![]})[_0xb7f8('0x7')](function(_0x35d476){_0x492d3b[_0xb7f8('0x8')](_0xb7f8('0x9'),_0x35d476[_0xb7f8('0xa')](function(_0x591952){return{'id':_0x591952['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x492d3b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x310add){_0x492d3b[_0xb7f8('0x8')](_0xb7f8('0xb'),_0x310add['length']);ChatInteractionEvents[_0xb7f8('0xc')](_0x2baae1+':'+_0x492d3b['id'],_0x492d3b);ChatInteractionEvents['emit'](_0x2baae1,_0x492d3b);_0x23ee26(null);})[_0xb7f8('0xd')](_0x23ee26(null));};}for(var e in events){if(events[_0xb7f8('0xe')](e)){var event=events[e];ChatInteraction[_0xb7f8('0xf')](e,emitEvent(event));}}module[_0xb7f8('0x10')]=ChatInteractionEvents;
\ No newline at end of file
index 5e21f15..fd94af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4053=['utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4'];(function(_0x213823,_0x420359){var _0x94134f=function(_0x558680){while(--_0x558680){_0x213823['push'](_0x213823['shift']());}};_0x94134f(++_0x420359);}(_0x4053,0x1dd));var _0x3405=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0x4053[_0x1bbc08];return _0x5d825b;};'use strict';var _=require(_0x3405('0x0'));var util=require(_0x3405('0x1'));var logger=require('../../config/logger')(_0x3405('0x2'));var moment=require(_0x3405('0x3'));var BPromise=require('bluebird');var rp=require(_0x3405('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3405('0x5'));var config=require(_0x3405('0x6'));var attributes=require(_0x3405('0x7'));module[_0x3405('0x8')]=function(_0x535386,_0xc7202c){return _0x535386[_0x3405('0x9')](_0x3405('0xa'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5d05f4,_0x244a05,_0x147f83){if(_0x5d05f4[_0x3405('0xb')]('closed')){_0x5d05f4[_0x3405('0xc')]=moment()[_0x3405('0xd')](_0x3405('0xe'));}_0x147f83(null,_0x5d05f4);}},'charset':_0x3405('0xf'),'collate':_0x3405('0x10')});};
\ No newline at end of file
+var _0x449c=['chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','ChatInteraction'];(function(_0x51496c,_0x2e540a){var _0x1d03d0=function(_0x366894){while(--_0x366894){_0x51496c['push'](_0x51496c['shift']());}};_0x1d03d0(++_0x2e540a);}(_0x449c,0x7c));var _0xc449=function(_0x11918f,_0x4f640b){_0x11918f=_0x11918f-0x0;var _0x1145ab=_0x449c[_0x11918f];return _0x1145ab;};'use strict';var _=require(_0xc449('0x0'));var util=require(_0xc449('0x1'));var logger=require(_0xc449('0x2'))(_0xc449('0x3'));var moment=require(_0xc449('0x4'));var BPromise=require(_0xc449('0x5'));var rp=require(_0xc449('0x6'));var fs=require('fs');var path=require(_0xc449('0x7'));var rimraf=require('rimraf');var config=require(_0xc449('0x8'));var attributes=require('./chatInteraction.attributes');module[_0xc449('0x9')]=function(_0x3aa8a0,_0x20c562){return _0x3aa8a0[_0xc449('0xa')](_0xc449('0xb'),attributes,{'tableName':_0xc449('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x7eaa3a,_0x4e70a6,_0x11944d){if(_0x7eaa3a[_0xc449('0xd')](_0xc449('0xe'))){_0x7eaa3a[_0xc449('0xf')]=moment()['format'](_0xc449('0x10'));}_0x11944d(null,_0x7eaa3a);}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 199d636..45e3141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd144=['catch','ChatInteraction','update','body','options','where','limit','AddTagsToChatInteraction','find','addTags','ids','omit','spread','AddTags','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatInteraction.socket','request','then','info','request\x20sent','debug','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xd144,0x80));var _0x4d14=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd144[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4d14('0x0'));var BPromise=require(_0x4d14('0x1'));var rs=require(_0x4d14('0x2'));var fs=require('fs');var Redis=require(_0x4d14('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4d14('0x4'))(_0x4d14('0x5'));var config=require(_0x4d14('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4d14('0x7')][_0x4d14('0x8')]({'port':0x232a});config[_0x4d14('0x9')]=_[_0x4d14('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4d14('0xb'))(new Redis(config[_0x4d14('0x9')]));require(_0x4d14('0xc'))['register'](socket);function respondWithRpcPromise(_0x5ca2f5,_0x44c53c,_0x49373d){return new BPromise(function(_0x128243,_0x21f985){return client[_0x4d14('0xd')](_0x5ca2f5,_0x49373d)[_0x4d14('0xe')](function(_0x279d44){logger[_0x4d14('0xf')]('ChatInteraction,\x20%s,\x20%s',_0x44c53c,_0x4d14('0x10'));logger[_0x4d14('0x11')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x44c53c,_0x4d14('0x10'),JSON[_0x4d14('0x12')](_0x279d44));if(_0x279d44[_0x4d14('0x13')]){if(_0x279d44[_0x4d14('0x13')][_0x4d14('0x14')]===0x1f4){logger[_0x4d14('0x13')](_0x4d14('0x15'),_0x44c53c,_0x279d44[_0x4d14('0x13')][_0x4d14('0x16')]);return _0x21f985(_0x279d44[_0x4d14('0x13')]['message']);}logger['error'](_0x4d14('0x15'),_0x44c53c,_0x279d44['error'][_0x4d14('0x16')]);return _0x128243(_0x279d44[_0x4d14('0x13')][_0x4d14('0x16')]);}else{logger['info'](_0x4d14('0x15'),_0x44c53c,_0x4d14('0x10'));_0x128243(_0x279d44[_0x4d14('0x17')][_0x4d14('0x16')]);}})[_0x4d14('0x18')](function(_0x39e1c1){logger['error'](_0x4d14('0x15'),_0x44c53c,_0x39e1c1);_0x21f985(_0x39e1c1);});});}exports['UpdateChatInteraction']=function(_0x135c3d){var _0xb378d5=this;return new Promise(function(_0x207d4e,_0x3bb419){return db[_0x4d14('0x19')][_0x4d14('0x1a')](_0x135c3d[_0x4d14('0x1b')],{'raw':_0x135c3d['options']?_0x135c3d[_0x4d14('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x135c3d[_0x4d14('0x1c')]?_0x135c3d['options'][_0x4d14('0x1d')]||null:null,'attributes':_0x135c3d['options']?_0x135c3d[_0x4d14('0x1c')]['attributes']||null:null,'limit':_0x135c3d['options']?_0x135c3d['options'][_0x4d14('0x1e')]||null:null})[_0x4d14('0xe')](function(_0x404089){logger[_0x4d14('0xf')]('UpdateChatInteraction',_0x135c3d);logger[_0x4d14('0x11')]('UpdateChatInteraction',_0x135c3d,JSON[_0x4d14('0x12')](_0x404089));_0x207d4e(_0x404089);})[_0x4d14('0x18')](function(_0x5ddef7){logger[_0x4d14('0x13')]('UpdateChatInteraction',_0x5ddef7[_0x4d14('0x16')],_0x135c3d);_0x3bb419(_0xb378d5['error'](0x1f4,_0x5ddef7['message']));});});};exports[_0x4d14('0x1f')]=function(_0x12c43a){return new Promise(function(_0x5ba782,_0x2109d6){return db[_0x4d14('0x19')][_0x4d14('0x20')]({'where':_0x12c43a[_0x4d14('0x1c')]?_0x12c43a[_0x4d14('0x1c')][_0x4d14('0x1d')]||null:null})[_0x4d14('0xe')](function(_0x28dfa7){if(_0x28dfa7){return _0x28dfa7[_0x4d14('0x21')](_0x12c43a[_0x4d14('0x1b')][_0x4d14('0x22')],_[_0x4d14('0x23')](_0x12c43a[_0x4d14('0x1b')],[_0x4d14('0x22'),'id'])||{});}})[_0x4d14('0x24')](function(_0x3309ed){logger[_0x4d14('0xf')](_0x4d14('0x25'),_0x12c43a);logger[_0x4d14('0x11')](_0x4d14('0x25'),_0x12c43a,JSON[_0x4d14('0x12')](_0x3309ed));_0x5ba782(_0x3309ed);})[_0x4d14('0x18')](function(_0x4b0ea5){logger[_0x4d14('0x13')]('AddTags',_0x4b0ea5[_0x4d14('0x16')],_0x12c43a);_0x2109d6(_this[_0x4d14('0x13')](0x1f4,_0x4b0ea5[_0x4d14('0x16')]));});});};
\ No newline at end of file
+var _0x9783=['where','attributes','limit','AddTagsToChatInteraction','find','body','omit','ids','spread','AddTags','lodash','util','bluebird','randomstring','rpc','client','http','redis','localhost','socket.io-emitter','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateChatInteraction','ChatInteraction','update','options','raw'];(function(_0xb617a6,_0x5db959){var _0x56008c=function(_0x16f8ab){while(--_0x16f8ab){_0xb617a6['push'](_0xb617a6['shift']());}};_0x56008c(++_0x5db959);}(_0x9783,0xa2));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3978('0x0'));var util=require(_0x3978('0x1'));var moment=require('moment');var BPromise=require(_0x3978('0x2'));var rs=require(_0x3978('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3978('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3978('0x5')][_0x3978('0x6')]({'port':0x232a});config[_0x3978('0x7')]=_['defaults'](config['redis'],{'host':_0x3978('0x8'),'port':0x18eb});var socket=require(_0x3978('0x9'))(new Redis(config[_0x3978('0x7')]));require('./chatInteraction.socket')[_0x3978('0xa')](socket);function respondWithRpcPromise(_0x1d513c,_0x1f870b,_0x2e3c99){return new BPromise(function(_0x3fc896,_0x1a29e){return client[_0x3978('0xb')](_0x1d513c,_0x2e3c99)[_0x3978('0xc')](function(_0x315149){logger[_0x3978('0xd')](_0x3978('0xe'),_0x1f870b,_0x3978('0xf'));logger[_0x3978('0x10')](_0x3978('0x11'),_0x1f870b,_0x3978('0xf'),JSON[_0x3978('0x12')](_0x315149));if(_0x315149[_0x3978('0x13')]){if(_0x315149[_0x3978('0x13')][_0x3978('0x14')]===0x1f4){logger['error'](_0x3978('0xe'),_0x1f870b,_0x315149[_0x3978('0x13')][_0x3978('0x15')]);return _0x1a29e(_0x315149['error'][_0x3978('0x15')]);}logger[_0x3978('0x13')](_0x3978('0xe'),_0x1f870b,_0x315149['error'][_0x3978('0x15')]);return _0x3fc896(_0x315149['error'][_0x3978('0x15')]);}else{logger['info'](_0x3978('0xe'),_0x1f870b,_0x3978('0xf'));_0x3fc896(_0x315149['result']['message']);}})[_0x3978('0x16')](function(_0x57caba){logger[_0x3978('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x1f870b,_0x57caba);_0x1a29e(_0x57caba);});});}exports[_0x3978('0x17')]=function(_0x3523a2){var _0x4db35c=this;return new Promise(function(_0x371975,_0x254f89){return db[_0x3978('0x18')][_0x3978('0x19')](_0x3523a2['body'],{'raw':_0x3523a2[_0x3978('0x1a')]?_0x3523a2['options'][_0x3978('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3523a2['options']?_0x3523a2[_0x3978('0x1a')][_0x3978('0x1c')]||null:null,'attributes':_0x3523a2[_0x3978('0x1a')]?_0x3523a2[_0x3978('0x1a')][_0x3978('0x1d')]||null:null,'limit':_0x3523a2[_0x3978('0x1a')]?_0x3523a2['options'][_0x3978('0x1e')]||null:null})[_0x3978('0xc')](function(_0x1d6850){logger[_0x3978('0xd')](_0x3978('0x17'),_0x3523a2);logger[_0x3978('0x10')](_0x3978('0x17'),_0x3523a2,JSON[_0x3978('0x12')](_0x1d6850));_0x371975(_0x1d6850);})[_0x3978('0x16')](function(_0xb1d079){logger[_0x3978('0x13')](_0x3978('0x17'),_0xb1d079[_0x3978('0x15')],_0x3523a2);_0x254f89(_0x4db35c[_0x3978('0x13')](0x1f4,_0xb1d079[_0x3978('0x15')]));});});};exports[_0x3978('0x1f')]=function(_0xd36954){return new Promise(function(_0x4ad150,_0x554b26){return db['ChatInteraction'][_0x3978('0x20')]({'where':_0xd36954[_0x3978('0x1a')]?_0xd36954[_0x3978('0x1a')][_0x3978('0x1c')]||null:null})['then'](function(_0x2447f6){if(_0x2447f6){return _0x2447f6['addTags'](_0xd36954[_0x3978('0x21')]['ids'],_[_0x3978('0x22')](_0xd36954['body'],[_0x3978('0x23'),'id'])||{});}})[_0x3978('0x24')](function(_0x10abf1){logger[_0x3978('0xd')](_0x3978('0x25'),_0xd36954);logger[_0x3978('0x10')](_0x3978('0x25'),_0xd36954,JSON[_0x3978('0x12')](_0x10abf1));_0x4ad150(_0x10abf1);})[_0x3978('0x16')](function(_0x341c9a){logger[_0x3978('0x13')]('AddTags',_0x341c9a[_0x3978('0x15')],_0xd36954);_0x554b26(_this[_0x3978('0x13')](0x1f4,_0x341c9a[_0x3978('0x15')]));});});};
\ No newline at end of file
index 8bd33cd..8b2670d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb5c=['./chatInteraction.events','remove','update','emit','removeListener','register'];(function(_0x50512a,_0x2c37e5){var _0x2ab7ae=function(_0x39dd10){while(--_0x39dd10){_0x50512a['push'](_0x50512a['shift']());}};_0x2ab7ae(++_0x2c37e5);}(_0xcb5c,0x96));var _0xccb5=function(_0x3dfb1e,_0x5d7d8f){_0x3dfb1e=_0x3dfb1e-0x0;var _0x27756a=_0xcb5c[_0x3dfb1e];return _0x27756a;};'use strict';var ChatInteractionEvents=require(_0xccb5('0x0'));var events=['save',_0xccb5('0x1'),_0xccb5('0x2')];function createListener(_0x1ef22d,_0xf272d4){return function(_0x4d4a2b){_0xf272d4[_0xccb5('0x3')](_0x1ef22d,_0x4d4a2b);};}function removeListener(_0x5ebf5b,_0x35b8e0){return function(){ChatInteractionEvents[_0xccb5('0x4')](_0x5ebf5b,_0x35b8e0);};}exports[_0xccb5('0x5')]=function(_0x1bf076){for(var _0x4a6767=0x0,_0xd6e1ff=events['length'];_0x4a6767<_0xd6e1ff;_0x4a6767++){var _0x2b250c=events[_0x4a6767];var _0x5c4752=createListener('chatInteraction:'+_0x2b250c,_0x1bf076);ChatInteractionEvents['on'](_0x2b250c,_0x5c4752);}};
\ No newline at end of file
+var _0xd1b3=['removeListener','register','length','chatInteraction:','./chatInteraction.events','save','remove','update'];(function(_0x20cd1a,_0x547422){var _0x15f5ad=function(_0x10fcee){while(--_0x10fcee){_0x20cd1a['push'](_0x20cd1a['shift']());}};_0x15f5ad(++_0x547422);}(_0xd1b3,0xec));var _0x3d1b=function(_0x2e6a05,_0x5277a){_0x2e6a05=_0x2e6a05-0x0;var _0x39d0ed=_0xd1b3[_0x2e6a05];return _0x39d0ed;};'use strict';var ChatInteractionEvents=require(_0x3d1b('0x0'));var events=[_0x3d1b('0x1'),_0x3d1b('0x2'),_0x3d1b('0x3')];function createListener(_0x526bde,_0x4f4999){return function(_0x4bd3c4){_0x4f4999['emit'](_0x526bde,_0x4bd3c4);};}function removeListener(_0x18480d,_0x26034b){return function(){ChatInteractionEvents[_0x3d1b('0x4')](_0x18480d,_0x26034b);};}exports[_0x3d1b('0x5')]=function(_0x1c409e){for(var _0x45bd2b=0x0,_0x67c7d6=events[_0x3d1b('0x6')];_0x45bd2b<_0x67c7d6;_0x45bd2b++){var _0x3d12d8=events[_0x45bd2b];var _0x47614f=createListener(_0x3d1b('0x7')+_0x3d12d8,_0x1c409e);ChatInteractionEvents['on'](_0x3d12d8,_0x47614f);}};
\ No newline at end of file
index 0b34ab3..48d7dfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a29=['download','post','create','diskStorage','join','root','server/files/attachments/','%s-%s','now','/:id/attachment_upload','/:id/messages','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','close','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','getMyMessages','/:id/download'];(function(_0x53d1ba,_0x935486){var _0x1a8621=function(_0x251018){while(--_0x251018){_0x53d1ba['push'](_0x53d1ba['shift']());}};_0x1a8621(++_0x935486);}(_0x1a29,0x80));var _0x91a2=function(_0x4755bc,_0x316e2a){_0x4755bc=_0x4755bc-0x0;var _0x359711=_0x1a29[_0x4755bc];return _0x359711;};'use strict';var multer=require(_0x91a2('0x0'));var util=require(_0x91a2('0x1'));var path=require(_0x91a2('0x2'));var timeout=require(_0x91a2('0x3'));var express=require(_0x91a2('0x4'));var router=express[_0x91a2('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x91a2('0x6'));var config=require(_0x91a2('0x7'));var controller=require(_0x91a2('0x8'));router[_0x91a2('0x9')]('/',auth[_0x91a2('0xa')](),controller[_0x91a2('0xb')]);router['get'](_0x91a2('0xc'),auth[_0x91a2('0xa')](),controller[_0x91a2('0xd')]);router['get'](_0x91a2('0xe'),auth[_0x91a2('0xf')](),controller[_0x91a2('0x10')]);router['get'](_0x91a2('0x11'),auth[_0x91a2('0xf')](),controller[_0x91a2('0x12')]);router[_0x91a2('0x9')]('/:id/messages',auth[_0x91a2('0xa')](),controller[_0x91a2('0x13')]);router[_0x91a2('0x9')]('/:id/my_messages',auth[_0x91a2('0xf')](),controller[_0x91a2('0x14')]);router['get'](_0x91a2('0x15'),auth['isAuthenticated'](),controller[_0x91a2('0x16')]);router[_0x91a2('0x17')]('/',auth[_0x91a2('0xa')](),controller[_0x91a2('0x18')]);router[_0x91a2('0x17')]('/:id/vidaoo',auth[_0x91a2('0xa')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x91a2('0x19')]({'destination':function(_0x3126a3,_0x3e2166,_0x22a4ab){_0x22a4ab(null,path[_0x91a2('0x1a')](config[_0x91a2('0x1b')],_0x91a2('0x1c')));},'filename':function(_0x410457,_0x332319,_0x3da460){_0x3da460(null,util['format'](_0x91a2('0x1d'),Date[_0x91a2('0x1e')](),_0x332319['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x91a2('0x17')](_0x91a2('0x1f'),upload['single']('file'),controller['attachmentUpload']);router[_0x91a2('0x17')](_0x91a2('0x20'),auth[_0x91a2('0xf')](),controller[_0x91a2('0x21')]);router['post'](_0x91a2('0x22'),auth[_0x91a2('0xa')](),interaction[_0x91a2('0x23')](_0x91a2('0x24'),_0x91a2('0x25')),controller[_0x91a2('0x26')]);router[_0x91a2('0x27')](_0x91a2('0xe'),auth[_0x91a2('0xa')](),interaction[_0x91a2('0x23')]('chat',_0x91a2('0x28')),controller[_0x91a2('0x29')]);router[_0x91a2('0x27')](_0x91a2('0x2a'),controller['customUpdate']);router[_0x91a2('0x27')](_0x91a2('0x2b'),auth[_0x91a2('0xf')](),controller[_0x91a2('0x2c')]);router['put']('/:id/close',controller[_0x91a2('0x2d')]);router[_0x91a2('0x2e')](_0x91a2('0xe'),auth[_0x91a2('0xa')](),interaction[_0x91a2('0x23')](_0x91a2('0x24'),'chatinteraction:destroy'),controller[_0x91a2('0x2f')]);router[_0x91a2('0x2e')](_0x91a2('0x22'),auth[_0x91a2('0xa')](),controller[_0x91a2('0x30')]);module[_0x91a2('0x31')]=router;
\ No newline at end of file
+var _0x4b91=['/describe','isAuthenticated','describe','isChatInteractionAuthorized','show','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','post','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','/:id','update','put','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','index'];(function(_0x1c68da,_0x4e5b38){var _0x16a482=function(_0x523767){while(--_0x523767){_0x1c68da['push'](_0x1c68da['shift']());}};_0x16a482(++_0x4e5b38);}(_0x4b91,0x1e5));var _0x14b9=function(_0x7c1a20,_0x24ff49){_0x7c1a20=_0x7c1a20-0x0;var _0xc4f12b=_0x4b91[_0x7c1a20];return _0xc4f12b;};'use strict';var multer=require(_0x14b9('0x0'));var util=require(_0x14b9('0x1'));var path=require(_0x14b9('0x2'));var timeout=require(_0x14b9('0x3'));var express=require(_0x14b9('0x4'));var router=express[_0x14b9('0x5')]();var fs_extra=require(_0x14b9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x14b9('0x7'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x14b9('0x8')]('/',auth['isAuthenticated'](),controller[_0x14b9('0x9')]);router[_0x14b9('0x8')](_0x14b9('0xa'),auth[_0x14b9('0xb')](),controller[_0x14b9('0xc')]);router[_0x14b9('0x8')]('/:id',auth[_0x14b9('0xd')](),controller[_0x14b9('0xe')]);router[_0x14b9('0x8')]('/:id/attachment_download',auth[_0x14b9('0xd')](),controller[_0x14b9('0xf')]);router[_0x14b9('0x8')](_0x14b9('0x10'),auth[_0x14b9('0xb')](),controller[_0x14b9('0x11')]);router[_0x14b9('0x8')](_0x14b9('0x12'),auth[_0x14b9('0xd')](),controller[_0x14b9('0x13')]);router[_0x14b9('0x8')](_0x14b9('0x14'),auth['isAuthenticated'](),controller['download']);router[_0x14b9('0x15')]('/',auth[_0x14b9('0xb')](),controller['create']);router['post']('/:id/vidaoo',auth[_0x14b9('0xb')](),controller[_0x14b9('0x16')]);var upload=multer({'storage':multer[_0x14b9('0x17')]({'destination':function(_0xa5a51d,_0xafb5d,_0x4c790c){_0x4c790c(null,path[_0x14b9('0x18')](config[_0x14b9('0x19')],_0x14b9('0x1a')));},'filename':function(_0x54379d,_0x48e616,_0xcb978e){_0xcb978e(null,util[_0x14b9('0x1b')](_0x14b9('0x1c'),Date[_0x14b9('0x1d')](),_0x48e616[_0x14b9('0x1e')][_0x14b9('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x14b9('0x15')](_0x14b9('0x20'),upload[_0x14b9('0x21')](_0x14b9('0x22')),controller[_0x14b9('0x23')]);router[_0x14b9('0x15')]('/:id/messages',auth[_0x14b9('0xd')](),controller[_0x14b9('0x24')]);router['post'](_0x14b9('0x25'),auth['isAuthenticated'](),interaction[_0x14b9('0x26')](_0x14b9('0x27'),_0x14b9('0x28')),controller[_0x14b9('0x29')]);router['put'](_0x14b9('0x2a'),auth[_0x14b9('0xb')](),interaction[_0x14b9('0x26')](_0x14b9('0x27'),'chatinteraction:update'),controller[_0x14b9('0x2b')]);router[_0x14b9('0x2c')](_0x14b9('0x2d'),controller[_0x14b9('0x2e')]);router[_0x14b9('0x2c')](_0x14b9('0x2f'),auth[_0x14b9('0xd')](),controller['abandon']);router[_0x14b9('0x2c')](_0x14b9('0x30'),controller[_0x14b9('0x31')]);router[_0x14b9('0x32')]('/:id',auth[_0x14b9('0xb')](),interaction['tracked'](_0x14b9('0x27'),_0x14b9('0x33')),controller[_0x14b9('0x34')]);router[_0x14b9('0x32')]('/:id/tags',auth[_0x14b9('0xb')](),controller[_0x14b9('0x35')]);module[_0x14b9('0x36')]=router;
\ No newline at end of file
index 54ab33d..fa18fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f37=['medium','BOOLEAN','INTEGER','sequelize','exports','TEXT'];(function(_0x192b43,_0x131962){var _0x166a43=function(_0xdfe863){while(--_0xdfe863){_0x192b43['push'](_0x192b43['shift']());}};_0x166a43(++_0x131962);}(_0x7f37,0x141));var _0x77f3=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x7f37[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x77f3('0x0'));module[_0x77f3('0x1')]={'body':{'type':Sequelize[_0x77f3('0x2')](_0x77f3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x77f3('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x77f3('0x5')]}};
\ No newline at end of file
+var _0xc37e=['TEXT','medium','BOOLEAN','exports'];(function(_0x192ef3,_0x58252d){var _0x170a3d=function(_0x17a7bc){while(--_0x17a7bc){_0x192ef3['push'](_0x192ef3['shift']());}};_0x170a3d(++_0x58252d);}(_0xc37e,0xa7));var _0xec37=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc37e[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0xec37('0x0')]={'body':{'type':Sequelize[_0xec37('0x1')](_0xec37('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xec37('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 7e3add2..2680cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7c7=['defaults','socket.io-emitter','./chatInternalMessage.socket','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','keys','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','catch','show','params','create','find','body','destroy','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','user','fullname','role','userpic','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','isEmpty','agent','resourceId','push','FromId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x3c9038,_0x8157ff){var _0x103439=function(_0x5f47eb){while(--_0x5f47eb){_0x3c9038['push'](_0x3c9038['shift']());}};_0x103439(++_0x8157ff);}(_0xa7c7,0xc7));var _0x7a7c=function(_0x19ea34,_0x1b0d9d){_0x19ea34=_0x19ea34-0x0;var _0x44c64d=_0xa7c7[_0x19ea34];return _0x44c64d;};'use strict';var emlformat=require(_0x7a7c('0x0'));var rimraf=require(_0x7a7c('0x1'));var zipdir=require(_0x7a7c('0x2'));var jsonpatch=require(_0x7a7c('0x3'));var rp=require(_0x7a7c('0x4'));var moment=require(_0x7a7c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7a7c('0x6'));var util=require(_0x7a7c('0x7'));var path=require(_0x7a7c('0x8'));var sox=require(_0x7a7c('0x9'));var csv=require(_0x7a7c('0xa'));var ejs=require(_0x7a7c('0xb'));var fs=require('fs');var fs_extra=require(_0x7a7c('0xc'));var _=require('lodash');var squel=require(_0x7a7c('0xd'));var crypto=require(_0x7a7c('0xe'));var jsforce=require(_0x7a7c('0xf'));var deskjs=require(_0x7a7c('0x10'));var toCsv=require(_0x7a7c('0xa'));var querystring=require(_0x7a7c('0x11'));var Papa=require(_0x7a7c('0x12'));var Redis=require(_0x7a7c('0x13'));var authService=require(_0x7a7c('0x14'));var qs=require(_0x7a7c('0x15'));var as=require(_0x7a7c('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7a7c('0x17'))(_0x7a7c('0x18'));var utils=require('../../config/utils');var config=require(_0x7a7c('0x19'));var licenseUtil=require(_0x7a7c('0x1a'));var db=require(_0x7a7c('0x1b'))['db'];config[_0x7a7c('0x1c')]=_[_0x7a7c('0x1d')](config[_0x7a7c('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x7a7c('0x1e'))(new Redis(config[_0x7a7c('0x1c')]));require(_0x7a7c('0x1f'))['register'](socket);function respondWithStatusCode(_0x3eb666,_0x1d6d3f){_0x1d6d3f=_0x1d6d3f||0xcc;return function(_0x2cbb2a){if(_0x2cbb2a){return _0x3eb666[_0x7a7c('0x20')](_0x1d6d3f);}return _0x3eb666['status'](_0x1d6d3f)[_0x7a7c('0x21')]();};}function respondWithResult(_0x4e92c4,_0x504ff7){_0x504ff7=_0x504ff7||0xc8;return function(_0x349f66){if(_0x349f66){return _0x4e92c4[_0x7a7c('0x22')](_0x504ff7)['json'](_0x349f66);}};}function respondWithFilteredResult(_0x4d2639,_0x25f171){return function(_0x98a4bd){if(_0x98a4bd){var _0x551cce=typeof _0x25f171[_0x7a7c('0x23')]===_0x7a7c('0x24')&&typeof _0x25f171['limit']==='undefined';var _0x458c28=_0x98a4bd[_0x7a7c('0x25')];var _0x5bf678=_0x551cce?0x0:_0x25f171[_0x7a7c('0x23')];var _0x62766c=_0x551cce?_0x98a4bd[_0x7a7c('0x25')]:_0x25f171['offset']+_0x25f171[_0x7a7c('0x26')];var _0xc24570;if(_0x62766c>=_0x458c28){_0x62766c=_0x458c28;_0xc24570=0xc8;}else{_0xc24570=0xce;}_0x4d2639[_0x7a7c('0x22')](_0xc24570);return _0x4d2639[_0x7a7c('0x27')](_0x7a7c('0x28'),_0x5bf678+'-'+_0x62766c+'/'+_0x458c28)['json'](_0x98a4bd);}return null;};}function patchUpdates(_0x4f1b09){return function(_0x2e4510){try{jsonpatch[_0x7a7c('0x29')](_0x2e4510,_0x4f1b09,!![]);}catch(_0x37d323){return BPromise[_0x7a7c('0x2a')](_0x37d323);}return _0x2e4510[_0x7a7c('0x2b')]();};}function saveUpdates(_0x4f7ac7,_0x5cbe3c){return function(_0x3ea3eb){if(_0x3ea3eb){return _0x3ea3eb[_0x7a7c('0x2c')](_0x4f7ac7)[_0x7a7c('0x2d')](function(_0x4f745d){return _0x4f745d;});}return null;};}function removeEntity(_0x57845d,_0x208a2b){return function(_0x5e1d86){if(_0x5e1d86){return _0x5e1d86['destroy']()['then'](function(){_0x57845d['status'](0xcc)[_0x7a7c('0x21')]();});}};}function handleEntityNotFound(_0x887616,_0x3a34d1){return function(_0x11bac1){if(!_0x11bac1){_0x887616[_0x7a7c('0x20')](0x194);}return _0x11bac1;};}function handleError(_0x324c5e,_0x4dd980){_0x4dd980=_0x4dd980||0x1f4;return function(_0x1fa848){logger[_0x7a7c('0x2e')](_0x1fa848[_0x7a7c('0x2f')]);if(_0x1fa848[_0x7a7c('0x30')]){delete _0x1fa848[_0x7a7c('0x30')];}_0x324c5e[_0x7a7c('0x22')](_0x4dd980)['send'](_0x1fa848);};}exports[_0x7a7c('0x31')]=function(_0x5d1a0e,_0x2c5e64){var _0x511c00={},_0x56479a={},_0x348475={'count':0x0,'rows':[]};var _0x14877d=_[_0x7a7c('0x32')](db[_0x7a7c('0x33')][_0x7a7c('0x34')],function(_0x262ea9){return{'name':_0x262ea9[_0x7a7c('0x35')],'type':_0x262ea9[_0x7a7c('0x36')][_0x7a7c('0x37')]};});_0x56479a['model']=_[_0x7a7c('0x32')](_0x14877d,_0x7a7c('0x30'));_0x56479a['query']=_[_0x7a7c('0x38')](_0x5d1a0e['query']);_0x56479a['filters']=_[_0x7a7c('0x39')](_0x56479a[_0x7a7c('0x3a')],_0x56479a[_0x7a7c('0x3b')]);_0x511c00['attributes']=_['intersection'](_0x56479a['model'],qs[_0x7a7c('0x3c')](_0x5d1a0e[_0x7a7c('0x3b')][_0x7a7c('0x3c')]));_0x511c00[_0x7a7c('0x3d')]=_0x511c00['attributes'][_0x7a7c('0x3e')]?_0x511c00['attributes']:_0x56479a[_0x7a7c('0x3a')];if(!_0x5d1a0e[_0x7a7c('0x3b')][_0x7a7c('0x3f')](_0x7a7c('0x40'))){_0x511c00['limit']=qs['limit'](_0x5d1a0e[_0x7a7c('0x3b')][_0x7a7c('0x26')]);_0x511c00[_0x7a7c('0x23')]=qs[_0x7a7c('0x23')](_0x5d1a0e['query'][_0x7a7c('0x23')]);}_0x511c00[_0x7a7c('0x41')]=qs[_0x7a7c('0x42')](_0x5d1a0e['query'][_0x7a7c('0x42')]);_0x511c00[_0x7a7c('0x43')]=qs[_0x7a7c('0x44')](_['pick'](_0x5d1a0e[_0x7a7c('0x3b')],_0x56479a[_0x7a7c('0x44')]),_0x14877d);if(_0x5d1a0e[_0x7a7c('0x3b')][_0x7a7c('0x45')]){_0x511c00[_0x7a7c('0x43')]=_[_0x7a7c('0x46')](_0x511c00[_0x7a7c('0x43')],{'$or':_[_0x7a7c('0x32')](_0x14877d,function(_0x1c46a6){if(_0x1c46a6['type']!==_0x7a7c('0x47')){var _0x1c2858={};_0x1c2858[_0x1c46a6[_0x7a7c('0x30')]]={'$like':'%'+_0x5d1a0e['query'][_0x7a7c('0x45')]+'%'};return _0x1c2858;}})});}_0x511c00=_[_0x7a7c('0x46')]({},_0x511c00,_0x5d1a0e['options']);var _0xcb44fc={'where':_0x511c00[_0x7a7c('0x43')]};return db[_0x7a7c('0x33')][_0x7a7c('0x25')](_0xcb44fc)['then'](function(_0x4d902d){_0x348475[_0x7a7c('0x25')]=_0x4d902d;if(_0x5d1a0e[_0x7a7c('0x3b')][_0x7a7c('0x48')]){_0x511c00[_0x7a7c('0x49')]=[{'all':!![]}];}return db[_0x7a7c('0x33')]['findAll'](_0x511c00);})[_0x7a7c('0x2d')](function(_0x23ab98){_0x348475['rows']=_0x23ab98;return _0x348475;})['then'](respondWithFilteredResult(_0x2c5e64,_0x511c00))[_0x7a7c('0x4a')](handleError(_0x2c5e64,null));};exports[_0x7a7c('0x4b')]=function(_0x1e3d30,_0x470a48){var _0x3c695a={'raw':!![],'where':{'id':_0x1e3d30[_0x7a7c('0x4c')]['id']}},_0x1d8582={};_0x1d8582['model']=_['keys'](db[_0x7a7c('0x33')][_0x7a7c('0x34')]);_0x1d8582[_0x7a7c('0x3b')]=_[_0x7a7c('0x38')](_0x1e3d30[_0x7a7c('0x3b')]);_0x1d8582[_0x7a7c('0x44')]=_[_0x7a7c('0x39')](_0x1d8582[_0x7a7c('0x3a')],_0x1d8582['query']);_0x3c695a[_0x7a7c('0x3d')]=_['intersection'](_0x1d8582['model'],qs[_0x7a7c('0x3c')](_0x1e3d30[_0x7a7c('0x3b')][_0x7a7c('0x3c')]));_0x3c695a[_0x7a7c('0x3d')]=_0x3c695a[_0x7a7c('0x3d')][_0x7a7c('0x3e')]?_0x3c695a[_0x7a7c('0x3d')]:_0x1d8582[_0x7a7c('0x3a')];if(_0x1e3d30[_0x7a7c('0x3b')][_0x7a7c('0x48')]){_0x3c695a[_0x7a7c('0x49')]=[{'all':!![]}];}_0x3c695a=_[_0x7a7c('0x46')]({},_0x3c695a,_0x1e3d30['options']);return db[_0x7a7c('0x33')]['find'](_0x3c695a)[_0x7a7c('0x2d')](handleEntityNotFound(_0x470a48,null))[_0x7a7c('0x2d')](respondWithResult(_0x470a48,null))[_0x7a7c('0x4a')](handleError(_0x470a48,null));};exports[_0x7a7c('0x4d')]=function(_0x1b9760,_0xe385b8){return db['ChatInternalMessage'][_0x7a7c('0x4d')](_0x1b9760['body'],{})[_0x7a7c('0x2d')](respondWithResult(_0xe385b8,0xc9))[_0x7a7c('0x4a')](handleError(_0xe385b8,null));};exports[_0x7a7c('0x2c')]=function(_0x112d5e,_0x54530e){if(_0x112d5e['body']['id']){delete _0x112d5e['body']['id'];}return db['ChatInternalMessage'][_0x7a7c('0x4e')]({'where':{'id':_0x112d5e[_0x7a7c('0x4c')]['id']}})[_0x7a7c('0x2d')](handleEntityNotFound(_0x54530e,null))[_0x7a7c('0x2d')](saveUpdates(_0x112d5e[_0x7a7c('0x4f')],null))[_0x7a7c('0x2d')](respondWithResult(_0x54530e,null))[_0x7a7c('0x4a')](handleError(_0x54530e,null));};exports[_0x7a7c('0x50')]=function(_0x2dd8ef,_0x585cf9){return db[_0x7a7c('0x33')]['find']({'where':{'id':_0x2dd8ef[_0x7a7c('0x4c')]['id']}})[_0x7a7c('0x2d')](handleEntityNotFound(_0x585cf9,null))[_0x7a7c('0x2d')](removeEntity(_0x585cf9,null))['catch'](handleError(_0x585cf9,null));};exports[_0x7a7c('0x51')]=function(_0x230147,_0x25ec91){return db[_0x7a7c('0x33')][_0x7a7c('0x51')]()['then'](respondWithResult(_0x25ec91,null))[_0x7a7c('0x4a')](handleError(_0x25ec91,null));};function wrapUser(_0x3ebfec){return function(_0x5294e9){var _0x199e46=_0x3ebfec[_0x7a7c('0x52')]({'plain':!![]});_0x199e46[_0x7a7c('0x53')]=[];if(_0x5294e9){_0x199e46[_0x7a7c('0x54')]=_0x5294e9[_0x7a7c('0x55')];_0x199e46[_0x7a7c('0x56')]=_0x5294e9;}else{_0x199e46[_0x7a7c('0x54')]=moment(0x0)[_0x7a7c('0x57')](_0x7a7c('0x58'));_0x199e46[_0x7a7c('0x56')]={};}return _0x199e46;};}exports[_0x7a7c('0x59')]=function(_0x3b00fb,_0x1912da,_0x10882d){var _0x4da0c2=[];return db[_0x7a7c('0x5a')][_0x7a7c('0x5b')]({'where':{'role':['agent','admin',_0x7a7c('0x5c')]},'attributes':['id',_0x7a7c('0x5d'),'name',_0x7a7c('0x5e'),_0x7a7c('0x5f'),'internal',_0x7a7c('0x60'),_0x7a7c('0x61'),_0x7a7c('0x62'),_0x7a7c('0x63')],'order':qs[_0x7a7c('0x42')](_0x7a7c('0x64')),'include':[{'model':db['VoiceQueue'],'as':_0x7a7c('0x65'),'attributes':['id',_0x7a7c('0x30'),_0x7a7c('0x36')],'through':{'attributes':[]}}]})[_0x7a7c('0x2d')](function(_0x406bb6){if(_0x406bb6){var _0xe1dc6=_0x3b00fb[_0x7a7c('0x5c')][_0x7a7c('0x52')]({'plain':!![]});if(!_0xe1dc6)throw new Error(_0x7a7c('0x66'));if(_0xe1dc6[_0x7a7c('0x5e')]===_0x7a7c('0x5c')){return db[_0x7a7c('0x67')][_0x7a7c('0x4e')]({'where':{'name':'Agents','userProfileId':_0xe1dc6[_0x7a7c('0x68')]},'raw':!![]})[_0x7a7c('0x2d')](function(_0x38ed49){if(_0x38ed49){if(_0x38ed49['autoAssociation']===0x0){return db[_0x7a7c('0x69')][_0x7a7c('0x5b')]({'where':{'sectionId':_0x38ed49['id']},'raw':!![]})['then'](function(_0x1073a8){var _0x35d562=[];if(_[_0x7a7c('0x6a')](_0x1073a8)){_0x35d562=_['filter'](_0x406bb6,function(_0x7e1086){if(_0x7e1086[_0x7a7c('0x5e')]!==_0x7a7c('0x6b')){return _0x7e1086;}});return _0x35d562;}else{for(var _0x1072e5=0x0;_0x1072e5<_0x406bb6[_0x7a7c('0x3e')];_0x1072e5++){var _0x4c4dc5=_0x406bb6[_0x1072e5];if(_0x4c4dc5[_0x7a7c('0x5e')]===_0x7a7c('0x6b')){var _0x4593eb=_['find'](_0x1073a8,function(_0x4d3414){return _0x4d3414[_0x7a7c('0x6c')]===_0x4c4dc5['id'];});if(_0x4593eb)_0x35d562['push'](_0x4c4dc5);}else{_0x35d562['push'](_0x4c4dc5);}}return _0x35d562;}});}else{return _0x406bb6;}}else{var _0x17b781=_[_0x7a7c('0x45')](_0x406bb6,function(_0x518918){if(_0x518918[_0x7a7c('0x5e')]!==_0x7a7c('0x6b')){return _0x518918;}});return _0x17b781;}});}else{return _0x406bb6;}}})[_0x7a7c('0x2d')](function(_0x25be34){var _0x1a9450=[];if(_0x25be34){_0x4da0c2=_0x25be34;for(var _0x3d0e2a=0x0;_0x3d0e2a<_0x25be34[_0x7a7c('0x3e')];_0x3d0e2a+=0x1){_0x4da0c2[_0x3d0e2a][_0x7a7c('0x53')]=[];_0x1a9450[_0x7a7c('0x6d')](db[_0x7a7c('0x33')][_0x7a7c('0x4e')]({'where':{'FromId':[_0x3b00fb[_0x7a7c('0x5c')]['id'],_0x25be34[_0x3d0e2a]['id']],'ToId':[_0x3b00fb['user']['id'],_0x25be34[_0x3d0e2a]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x7a7c('0x6e'),'ToId',_0x7a7c('0x6f'),_0x7a7c('0x4f')],'order':qs[_0x7a7c('0x42')](_0x7a7c('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x7a7c('0x2d')](wrapUser(_0x25be34[_0x3d0e2a])));}return BPromise[_0x7a7c('0x71')](_0x1a9450);}return[];})[_0x7a7c('0x2d')](function(_0x2f39fd){return{'rows':_0x2f39fd,'count':_0x2f39fd[_0x7a7c('0x3e')]};})[_0x7a7c('0x2d')](respondWithResult(_0x1912da,null))[_0x7a7c('0x4a')](handleError(_0x1912da,null));};
\ No newline at end of file
+var _0xfc42=['admin','user','fullname','role','userpic','lastLoginAt','-online','VoiceQueue','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','ToId','read','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','then','end','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','body','update','destroy','describe','get','messages','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0xfc42,0xf1));var _0x2fc4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfc42[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x2fc4('0x0'));var rimraf=require(_0x2fc4('0x1'));var zipdir=require(_0x2fc4('0x2'));var jsonpatch=require(_0x2fc4('0x3'));var rp=require(_0x2fc4('0x4'));var moment=require(_0x2fc4('0x5'));var BPromise=require(_0x2fc4('0x6'));var Mustache=require(_0x2fc4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2fc4('0x8'));var csv=require('to-csv');var ejs=require(_0x2fc4('0x9'));var fs=require('fs');var fs_extra=require(_0x2fc4('0xa'));var _=require(_0x2fc4('0xb'));var squel=require(_0x2fc4('0xc'));var crypto=require(_0x2fc4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2fc4('0xe'));var toCsv=require(_0x2fc4('0xf'));var querystring=require(_0x2fc4('0x10'));var Papa=require(_0x2fc4('0x11'));var Redis=require('ioredis');var authService=require(_0x2fc4('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2fc4('0x13'));var hardwareService=require(_0x2fc4('0x14'));var logger=require(_0x2fc4('0x15'))(_0x2fc4('0x16'));var utils=require(_0x2fc4('0x17'));var config=require(_0x2fc4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fc4('0x19'))['db'];config[_0x2fc4('0x1a')]=_[_0x2fc4('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2fc4('0x1c'))(new Redis(config[_0x2fc4('0x1a')]));require(_0x2fc4('0x1d'))['register'](socket);function respondWithStatusCode(_0x1ae65b,_0x44b970){_0x44b970=_0x44b970||0xcc;return function(_0x2ee8b5){if(_0x2ee8b5){return _0x1ae65b[_0x2fc4('0x1e')](_0x44b970);}return _0x1ae65b['status'](_0x44b970)['end']();};}function respondWithResult(_0x475331,_0x28fce2){_0x28fce2=_0x28fce2||0xc8;return function(_0xb04d1c){if(_0xb04d1c){return _0x475331['status'](_0x28fce2)[_0x2fc4('0x1f')](_0xb04d1c);}};}function respondWithFilteredResult(_0x4c5782,_0xd32081){return function(_0x3bff2b){if(_0x3bff2b){var _0x705d9=typeof _0xd32081[_0x2fc4('0x20')]===_0x2fc4('0x21')&&typeof _0xd32081[_0x2fc4('0x22')]===_0x2fc4('0x21');var _0x47b2d6=_0x3bff2b[_0x2fc4('0x23')];var _0x19199e=_0x705d9?0x0:_0xd32081[_0x2fc4('0x20')];var _0x209564=_0x705d9?_0x3bff2b[_0x2fc4('0x23')]:_0xd32081[_0x2fc4('0x20')]+_0xd32081[_0x2fc4('0x22')];var _0xb32d56;if(_0x209564>=_0x47b2d6){_0x209564=_0x47b2d6;_0xb32d56=0xc8;}else{_0xb32d56=0xce;}_0x4c5782[_0x2fc4('0x24')](_0xb32d56);return _0x4c5782[_0x2fc4('0x25')](_0x2fc4('0x26'),_0x19199e+'-'+_0x209564+'/'+_0x47b2d6)[_0x2fc4('0x1f')](_0x3bff2b);}return null;};}function patchUpdates(_0x789d3){return function(_0x3fb3d1){try{jsonpatch[_0x2fc4('0x27')](_0x3fb3d1,_0x789d3,!![]);}catch(_0x1a02f4){return BPromise['reject'](_0x1a02f4);}return _0x3fb3d1[_0x2fc4('0x28')]();};}function saveUpdates(_0x596a24,_0x239cfa){return function(_0x950438){if(_0x950438){return _0x950438['update'](_0x596a24)[_0x2fc4('0x29')](function(_0x348309){return _0x348309;});}return null;};}function removeEntity(_0x1af6be,_0x397210){return function(_0xbf8967){if(_0xbf8967){return _0xbf8967['destroy']()['then'](function(){_0x1af6be[_0x2fc4('0x24')](0xcc)[_0x2fc4('0x2a')]();});}};}function handleEntityNotFound(_0x30541e,_0x3d2f86){return function(_0x376330){if(!_0x376330){_0x30541e['sendStatus'](0x194);}return _0x376330;};}function handleError(_0x8c7766,_0x17bfeb){_0x17bfeb=_0x17bfeb||0x1f4;return function(_0x3bd24d){logger[_0x2fc4('0x2b')](_0x3bd24d[_0x2fc4('0x2c')]);if(_0x3bd24d[_0x2fc4('0x2d')]){delete _0x3bd24d[_0x2fc4('0x2d')];}_0x8c7766['status'](_0x17bfeb)[_0x2fc4('0x2e')](_0x3bd24d);};}exports[_0x2fc4('0x2f')]=function(_0x460652,_0x5ad26d){var _0x885066={},_0x58b152={},_0x4b5821={'count':0x0,'rows':[]};var _0x4fd4ec=_[_0x2fc4('0x30')](db[_0x2fc4('0x31')][_0x2fc4('0x32')],function(_0x4451ac){return{'name':_0x4451ac[_0x2fc4('0x33')],'type':_0x4451ac[_0x2fc4('0x34')][_0x2fc4('0x35')]};});_0x58b152[_0x2fc4('0x36')]=_['map'](_0x4fd4ec,'name');_0x58b152[_0x2fc4('0x37')]=_[_0x2fc4('0x38')](_0x460652['query']);_0x58b152[_0x2fc4('0x39')]=_['intersection'](_0x58b152[_0x2fc4('0x36')],_0x58b152[_0x2fc4('0x37')]);_0x885066[_0x2fc4('0x3a')]=_[_0x2fc4('0x3b')](_0x58b152[_0x2fc4('0x36')],qs[_0x2fc4('0x3c')](_0x460652['query'][_0x2fc4('0x3c')]));_0x885066[_0x2fc4('0x3a')]=_0x885066[_0x2fc4('0x3a')][_0x2fc4('0x3d')]?_0x885066[_0x2fc4('0x3a')]:_0x58b152[_0x2fc4('0x36')];if(!_0x460652[_0x2fc4('0x37')][_0x2fc4('0x3e')](_0x2fc4('0x3f'))){_0x885066[_0x2fc4('0x22')]=qs[_0x2fc4('0x22')](_0x460652[_0x2fc4('0x37')]['limit']);_0x885066[_0x2fc4('0x20')]=qs['offset'](_0x460652[_0x2fc4('0x37')][_0x2fc4('0x20')]);}_0x885066[_0x2fc4('0x40')]=qs[_0x2fc4('0x41')](_0x460652['query'][_0x2fc4('0x41')]);_0x885066[_0x2fc4('0x42')]=qs[_0x2fc4('0x39')](_[_0x2fc4('0x43')](_0x460652[_0x2fc4('0x37')],_0x58b152[_0x2fc4('0x39')]),_0x4fd4ec);if(_0x460652[_0x2fc4('0x37')]['filter']){_0x885066[_0x2fc4('0x42')]=_[_0x2fc4('0x44')](_0x885066[_0x2fc4('0x42')],{'$or':_[_0x2fc4('0x30')](_0x4fd4ec,function(_0x208e20){if(_0x208e20[_0x2fc4('0x34')]!==_0x2fc4('0x45')){var _0x42e7a8={};_0x42e7a8[_0x208e20[_0x2fc4('0x2d')]]={'$like':'%'+_0x460652[_0x2fc4('0x37')]['filter']+'%'};return _0x42e7a8;}})});}_0x885066=_[_0x2fc4('0x44')]({},_0x885066,_0x460652[_0x2fc4('0x46')]);var _0x22ba72={'where':_0x885066['where']};return db[_0x2fc4('0x31')][_0x2fc4('0x23')](_0x22ba72)[_0x2fc4('0x29')](function(_0x1a4c07){_0x4b5821[_0x2fc4('0x23')]=_0x1a4c07;if(_0x460652['query'][_0x2fc4('0x47')]){_0x885066[_0x2fc4('0x48')]=[{'all':!![]}];}return db[_0x2fc4('0x31')][_0x2fc4('0x49')](_0x885066);})[_0x2fc4('0x29')](function(_0x35e1e2){_0x4b5821[_0x2fc4('0x4a')]=_0x35e1e2;return _0x4b5821;})[_0x2fc4('0x29')](respondWithFilteredResult(_0x5ad26d,_0x885066))['catch'](handleError(_0x5ad26d,null));};exports[_0x2fc4('0x4b')]=function(_0x30e837,_0x2aa13c){var _0x27fa01={'raw':!![],'where':{'id':_0x30e837[_0x2fc4('0x4c')]['id']}},_0x56c6a3={};_0x56c6a3[_0x2fc4('0x36')]=_[_0x2fc4('0x38')](db[_0x2fc4('0x31')][_0x2fc4('0x32')]);_0x56c6a3['query']=_['keys'](_0x30e837[_0x2fc4('0x37')]);_0x56c6a3['filters']=_[_0x2fc4('0x3b')](_0x56c6a3[_0x2fc4('0x36')],_0x56c6a3['query']);_0x27fa01[_0x2fc4('0x3a')]=_['intersection'](_0x56c6a3[_0x2fc4('0x36')],qs[_0x2fc4('0x3c')](_0x30e837[_0x2fc4('0x37')][_0x2fc4('0x3c')]));_0x27fa01[_0x2fc4('0x3a')]=_0x27fa01[_0x2fc4('0x3a')]['length']?_0x27fa01['attributes']:_0x56c6a3[_0x2fc4('0x36')];if(_0x30e837[_0x2fc4('0x37')]['includeAll']){_0x27fa01[_0x2fc4('0x48')]=[{'all':!![]}];}_0x27fa01=_[_0x2fc4('0x44')]({},_0x27fa01,_0x30e837[_0x2fc4('0x46')]);return db[_0x2fc4('0x31')][_0x2fc4('0x4d')](_0x27fa01)[_0x2fc4('0x29')](handleEntityNotFound(_0x2aa13c,null))[_0x2fc4('0x29')](respondWithResult(_0x2aa13c,null))[_0x2fc4('0x4e')](handleError(_0x2aa13c,null));};exports['create']=function(_0x3b829b,_0xee4b20){return db[_0x2fc4('0x31')]['create'](_0x3b829b[_0x2fc4('0x4f')],{})['then'](respondWithResult(_0xee4b20,0xc9))['catch'](handleError(_0xee4b20,null));};exports[_0x2fc4('0x50')]=function(_0x5e7575,_0x3c161b){if(_0x5e7575[_0x2fc4('0x4f')]['id']){delete _0x5e7575['body']['id'];}return db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'id':_0x5e7575[_0x2fc4('0x4c')]['id']}})[_0x2fc4('0x29')](handleEntityNotFound(_0x3c161b,null))['then'](saveUpdates(_0x5e7575[_0x2fc4('0x4f')],null))[_0x2fc4('0x29')](respondWithResult(_0x3c161b,null))[_0x2fc4('0x4e')](handleError(_0x3c161b,null));};exports[_0x2fc4('0x51')]=function(_0x1c0169,_0x544752){return db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'id':_0x1c0169[_0x2fc4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x544752,null))[_0x2fc4('0x29')](removeEntity(_0x544752,null))[_0x2fc4('0x4e')](handleError(_0x544752,null));};exports[_0x2fc4('0x52')]=function(_0x3c8e91,_0x1486fa){return db['ChatInternalMessage'][_0x2fc4('0x52')]()['then'](respondWithResult(_0x1486fa,null))['catch'](handleError(_0x1486fa,null));};function wrapUser(_0x4e062c){return function(_0x1b5680){var _0x1170f6=_0x4e062c[_0x2fc4('0x53')]({'plain':!![]});_0x1170f6[_0x2fc4('0x54')]=[];if(_0x1b5680){_0x1170f6['lastMessageAt']=_0x1b5680[_0x2fc4('0x55')];_0x1170f6[_0x2fc4('0x56')]=_0x1b5680;}else{_0x1170f6['lastMessageAt']=moment(0x0)[_0x2fc4('0x57')](_0x2fc4('0x58'));_0x1170f6[_0x2fc4('0x56')]={};}return _0x1170f6;};}exports[_0x2fc4('0x59')]=function(_0x7452d3,_0x2647c4,_0x4d579a){var _0x4b6d39=[];return db[_0x2fc4('0x5a')][_0x2fc4('0x49')]({'where':{'role':[_0x2fc4('0x5b'),_0x2fc4('0x5c'),_0x2fc4('0x5d')]},'attributes':['id',_0x2fc4('0x5e'),_0x2fc4('0x2d'),_0x2fc4('0x5f'),_0x2fc4('0x60'),'internal','online',_0x2fc4('0x61'),'allowmessenger','showWebBar'],'order':qs['sort'](_0x2fc4('0x62')),'include':[{'model':db[_0x2fc4('0x63')],'as':_0x2fc4('0x64'),'attributes':['id','name',_0x2fc4('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x550ddf){if(_0x550ddf){var _0x55de21=_0x7452d3[_0x2fc4('0x5d')]['get']({'plain':!![]});if(!_0x55de21)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55de21[_0x2fc4('0x5f')]===_0x2fc4('0x5d')){return db[_0x2fc4('0x65')]['find']({'where':{'name':_0x2fc4('0x66'),'userProfileId':_0x55de21[_0x2fc4('0x67')]},'raw':!![]})[_0x2fc4('0x29')](function(_0x55e09b){if(_0x55e09b){if(_0x55e09b[_0x2fc4('0x68')]===0x0){return db[_0x2fc4('0x69')]['findAll']({'where':{'sectionId':_0x55e09b['id']},'raw':!![]})['then'](function(_0x52dbbc){var _0x3203c2=[];if(_[_0x2fc4('0x6a')](_0x52dbbc)){_0x3203c2=_['filter'](_0x550ddf,function(_0x2af297){if(_0x2af297['role']!=='agent'){return _0x2af297;}});return _0x3203c2;}else{for(var _0x1a0432=0x0;_0x1a0432<_0x550ddf[_0x2fc4('0x3d')];_0x1a0432++){var _0x544a01=_0x550ddf[_0x1a0432];if(_0x544a01[_0x2fc4('0x5f')]==='agent'){var _0x3ea7af=_[_0x2fc4('0x4d')](_0x52dbbc,function(_0x59245b){return _0x59245b['resourceId']===_0x544a01['id'];});if(_0x3ea7af)_0x3203c2['push'](_0x544a01);}else{_0x3203c2[_0x2fc4('0x6b')](_0x544a01);}}return _0x3203c2;}});}else{return _0x550ddf;}}else{var _0x474ffa=_['filter'](_0x550ddf,function(_0x3b423c){if(_0x3b423c[_0x2fc4('0x5f')]!==_0x2fc4('0x5b')){return _0x3b423c;}});return _0x474ffa;}});}else{return _0x550ddf;}}})[_0x2fc4('0x29')](function(_0x471596){var _0x2273cd=[];if(_0x471596){_0x4b6d39=_0x471596;for(var _0x29ed82=0x0;_0x29ed82<_0x471596[_0x2fc4('0x3d')];_0x29ed82+=0x1){_0x4b6d39[_0x29ed82][_0x2fc4('0x54')]=[];_0x2273cd[_0x2fc4('0x6b')](db[_0x2fc4('0x31')][_0x2fc4('0x4d')]({'where':{'FromId':[_0x7452d3[_0x2fc4('0x5d')]['id'],_0x471596[_0x29ed82]['id']],'ToId':[_0x7452d3[_0x2fc4('0x5d')]['id'],_0x471596[_0x29ed82]['id']],'ChatGroupId':null},'attributes':['id',_0x2fc4('0x55'),'FromId',_0x2fc4('0x6c'),_0x2fc4('0x6d'),_0x2fc4('0x4f')],'order':qs[_0x2fc4('0x41')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2fc4('0x29')](wrapUser(_0x471596[_0x29ed82])));}return BPromise[_0x2fc4('0x6e')](_0x2273cd);}return[];})['then'](function(_0x548298){return{'rows':_0x548298,'count':_0x548298[_0x2fc4('0x3d')]};})[_0x2fc4('0x29')](respondWithResult(_0x2647c4,null))['catch'](handleError(_0x2647c4,null));};
\ No newline at end of file
index be7c109..625c412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed53=['hook','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x5650b4,_0x2723ba){var _0x297a62=function(_0x4ceedf){while(--_0x4ceedf){_0x5650b4['push'](_0x5650b4['shift']());}};_0x297a62(++_0x2723ba);}(_0xed53,0xf9));var _0x3ed5=function(_0x400dad,_0x4ac5d9){_0x400dad=_0x400dad-0x0;var _0x371bba=_0xed53[_0x400dad];return _0x371bba;};'use strict';var EventEmitter=require(_0x3ed5('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x3ed5('0x1')](0x0);var events={'afterCreate':_0x3ed5('0x2'),'afterUpdate':_0x3ed5('0x3'),'afterDestroy':_0x3ed5('0x4')};function emitEvent(_0x38d682){return function(_0x185c13,_0x439f64,_0x2485a9){ChatInternalMessageEvents[_0x3ed5('0x5')](_0x38d682+':'+_0x185c13['id'],_0x185c13);ChatInternalMessageEvents[_0x3ed5('0x5')](_0x38d682,_0x185c13);_0x2485a9(null);};}for(var e in events){if(events[_0x3ed5('0x6')](e)){var event=events[e];ChatInternalMessage[_0x3ed5('0x7')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x7be8=['ChatInternalMessage','setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x24fe8c,_0x340495){var _0x34665b=function(_0x4eb605){while(--_0x4eb605){_0x24fe8c['push'](_0x24fe8c['shift']());}};_0x34665b(++_0x340495);}(_0x7be8,0x148));var _0x87be=function(_0x12a4c2,_0x23b55f){_0x12a4c2=_0x12a4c2-0x0;var _0x234d4c=_0x7be8[_0x12a4c2];return _0x234d4c;};'use strict';var EventEmitter=require(_0x87be('0x0'));var ChatInternalMessage=require(_0x87be('0x1'))['db'][_0x87be('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x87be('0x3')](0x0);var events={'afterCreate':_0x87be('0x4'),'afterUpdate':_0x87be('0x5'),'afterDestroy':_0x87be('0x6')};function emitEvent(_0x5eef54){return function(_0xc1fd1e,_0x2c8b33,_0xec7abc){ChatInternalMessageEvents[_0x87be('0x7')](_0x5eef54+':'+_0xc1fd1e['id'],_0xc1fd1e);ChatInternalMessageEvents[_0x87be('0x7')](_0x5eef54,_0xc1fd1e);_0xec7abc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x87be('0x8')](e,emitEvent(event));}}module[_0x87be('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 5cdeaed..4cfd4c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dec=['../../config/environment','./chatInternalMessage.attributes','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','lodash','util','api','bluebird','rimraf'];(function(_0x33ab57,_0x449de8){var _0x3af8ce=function(_0x4e8220){while(--_0x4e8220){_0x33ab57['push'](_0x33ab57['shift']());}};_0x3af8ce(++_0x449de8);}(_0x8dec,0x18b));var _0xc8de=function(_0x5680d1,_0x22eb8e){_0x5680d1=_0x5680d1-0x0;var _0x5b1d61=_0x8dec[_0x5680d1];return _0x5b1d61;};'use strict';var _=require(_0xc8de('0x0'));var util=require(_0xc8de('0x1'));var logger=require('../../config/logger')(_0xc8de('0x2'));var moment=require('moment');var BPromise=require(_0xc8de('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc8de('0x4'));var config=require(_0xc8de('0x5'));var attributes=require(_0xc8de('0x6'));module['exports']=function(_0x48862d,_0x89c2fe){return _0x48862d['define'](_0xc8de('0x7'),attributes,{'tableName':_0xc8de('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc8de('0x9')});};
\ No newline at end of file
+var _0x989a=['rimraf','../../config/environment','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x406fbe,_0x4e558a){var _0x56c234=function(_0xaaecef){while(--_0xaaecef){_0x406fbe['push'](_0x406fbe['shift']());}};_0x56c234(++_0x4e558a);}(_0x989a,0xa3));var _0xa989=function(_0x4a6fa1,_0x4c2a48){_0x4a6fa1=_0x4a6fa1-0x0;var _0x4cc522=_0x989a[_0x4a6fa1];return _0x4cc522;};'use strict';var _=require(_0xa989('0x0'));var util=require('util');var logger=require(_0xa989('0x1'))(_0xa989('0x2'));var moment=require(_0xa989('0x3'));var BPromise=require('bluebird');var rp=require(_0xa989('0x4'));var fs=require('fs');var path=require(_0xa989('0x5'));var rimraf=require(_0xa989('0x6'));var config=require(_0xa989('0x7'));var attributes=require('./chatInternalMessage.attributes');module[_0xa989('0x8')]=function(_0x2f3a82,_0x2d42e6){return _0x2f3a82[_0xa989('0x9')](_0xa989('0xa'),attributes,{'tableName':_0xa989('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa989('0xc')});};
\ No newline at end of file
index 1e28b8c..894c46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a6d=['debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','info','ChatInternalMessage,\x20%s,\x20%s'];(function(_0x55bd46,_0x348ff2){var _0x4302a1=function(_0x24a503){while(--_0x24a503){_0x55bd46['push'](_0x55bd46['shift']());}};_0x4302a1(++_0x348ff2);}(_0x7a6d,0x99));var _0xd7a6=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0x7a6d[_0xce6f11];return _0x35b709;};'use strict';var _=require(_0xd7a6('0x0'));var util=require(_0xd7a6('0x1'));var moment=require('moment');var BPromise=require(_0xd7a6('0x2'));var rs=require(_0xd7a6('0x3'));var fs=require('fs');var Redis=require(_0xd7a6('0x4'));var db=require(_0xd7a6('0x5'))['db'];var utils=require(_0xd7a6('0x6'));var logger=require('../../config/logger')(_0xd7a6('0x7'));var config=require(_0xd7a6('0x8'));var jayson=require(_0xd7a6('0x9'));var client=jayson[_0xd7a6('0xa')][_0xd7a6('0xb')]({'port':0x232a});config[_0xd7a6('0xc')]=_[_0xd7a6('0xd')](config[_0xd7a6('0xc')],{'host':_0xd7a6('0xe'),'port':0x18eb});var socket=require(_0xd7a6('0xf'))(new Redis(config['redis']));require(_0xd7a6('0x10'))[_0xd7a6('0x11')](socket);function respondWithRpcPromise(_0x3bae55,_0x5c07ea,_0x4aface){return new BPromise(function(_0x129a89,_0x2c7aa7){return client[_0xd7a6('0x12')](_0x3bae55,_0x4aface)['then'](function(_0x18417b){logger[_0xd7a6('0x13')](_0xd7a6('0x14'),_0x5c07ea,'request\x20sent');logger[_0xd7a6('0x15')](_0xd7a6('0x16'),_0x5c07ea,_0xd7a6('0x17'),JSON[_0xd7a6('0x18')](_0x18417b));if(_0x18417b[_0xd7a6('0x19')]){if(_0x18417b[_0xd7a6('0x19')][_0xd7a6('0x1a')]===0x1f4){logger[_0xd7a6('0x19')]('ChatInternalMessage,\x20%s,\x20%s',_0x5c07ea,_0x18417b[_0xd7a6('0x19')][_0xd7a6('0x1b')]);return _0x2c7aa7(_0x18417b['error'][_0xd7a6('0x1b')]);}logger[_0xd7a6('0x19')](_0xd7a6('0x14'),_0x5c07ea,_0x18417b[_0xd7a6('0x19')][_0xd7a6('0x1b')]);return _0x129a89(_0x18417b[_0xd7a6('0x19')]['message']);}else{logger['info'](_0xd7a6('0x14'),_0x5c07ea,_0xd7a6('0x17'));_0x129a89(_0x18417b['result'][_0xd7a6('0x1b')]);}})[_0xd7a6('0x1c')](function(_0x3a08a8){logger[_0xd7a6('0x19')](_0xd7a6('0x14'),_0x5c07ea,_0x3a08a8);_0x2c7aa7(_0x3a08a8);});});}
\ No newline at end of file
+var _0x221b=['result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13ef0d,_0x4ce8b7){var _0x2a6745=function(_0x37628e){while(--_0x37628e){_0x13ef0d['push'](_0x13ef0d['shift']());}};_0x2a6745(++_0x4ce8b7);}(_0x221b,0xbf));var _0xb221=function(_0x1814ed,_0x532584){_0x1814ed=_0x1814ed-0x0;var _0x20247c=_0x221b[_0x1814ed];return _0x20247c;};'use strict';var _=require(_0xb221('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb221('0x1'));var rs=require(_0xb221('0x2'));var fs=require('fs');var Redis=require(_0xb221('0x3'));var db=require(_0xb221('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb221('0x5'))(_0xb221('0x6'));var config=require(_0xb221('0x7'));var jayson=require(_0xb221('0x8'));var client=jayson[_0xb221('0x9')][_0xb221('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xb221('0xb')],{'host':_0xb221('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb221('0xb')]));require('./chatInternalMessage.socket')[_0xb221('0xd')](socket);function respondWithRpcPromise(_0x23983d,_0x610dd6,_0x5e5fa8){return new BPromise(function(_0x3a17d0,_0x12dde2){return client[_0xb221('0xe')](_0x23983d,_0x5e5fa8)[_0xb221('0xf')](function(_0xfe5410){logger[_0xb221('0x10')](_0xb221('0x11'),_0x610dd6,_0xb221('0x12'));logger[_0xb221('0x13')](_0xb221('0x14'),_0x610dd6,_0xb221('0x12'),JSON[_0xb221('0x15')](_0xfe5410));if(_0xfe5410['error']){if(_0xfe5410[_0xb221('0x16')][_0xb221('0x17')]===0x1f4){logger[_0xb221('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x610dd6,_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);return _0x12dde2(_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);}logger[_0xb221('0x16')](_0xb221('0x11'),_0x610dd6,_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);return _0x3a17d0(_0xfe5410[_0xb221('0x16')][_0xb221('0x18')]);}else{logger[_0xb221('0x10')](_0xb221('0x11'),_0x610dd6,'request\x20sent');_0x3a17d0(_0xfe5410[_0xb221('0x19')][_0xb221('0x18')]);}})[_0xb221('0x1a')](function(_0x43c530){logger[_0xb221('0x16')](_0xb221('0x11'),_0x610dd6,_0x43c530);_0x12dde2(_0x43c530);});});}
\ No newline at end of file
index d529a91..bac49a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb124=['save','remove','update','emit','removeListener','register','chatInternalMessage:'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0xb124,0xbd));var _0x4b12=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xb124[_0x55f8b4];return _0x2475f9;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x4b12('0x0'),_0x4b12('0x1'),_0x4b12('0x2')];function createListener(_0x4cc72e,_0x903118){return function(_0x10808e){_0x903118[_0x4b12('0x3')](_0x4cc72e,_0x10808e);};}function removeListener(_0x3299a7,_0x1a3aac){return function(){ChatInternalMessageEvents[_0x4b12('0x4')](_0x3299a7,_0x1a3aac);};}exports[_0x4b12('0x5')]=function(_0x7f8ba4){for(var _0x3a6e7e=0x0,_0x22c0fa=events['length'];_0x3a6e7e<_0x22c0fa;_0x3a6e7e++){var _0x2b4c01=events[_0x3a6e7e];var _0x143bb8=createListener(_0x4b12('0x6')+_0x2b4c01,_0x7f8ba4);ChatInternalMessageEvents['on'](_0x2b4c01,_0x143bb8);}};
\ No newline at end of file
+var _0xfa84=['save','update','removeListener','register','length','./chatInternalMessage.events'];(function(_0x915047,_0x52bed9){var _0x12e688=function(_0xb53120){while(--_0xb53120){_0x915047['push'](_0x915047['shift']());}};_0x12e688(++_0x52bed9);}(_0xfa84,0xc5));var _0x4fa8=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xfa84[_0x3bf83f];return _0x22c4a9;};'use strict';var ChatInternalMessageEvents=require(_0x4fa8('0x0'));var events=[_0x4fa8('0x1'),'remove',_0x4fa8('0x2')];function createListener(_0x9d8a40,_0x2e07fd){return function(_0x3f40b2){_0x2e07fd['emit'](_0x9d8a40,_0x3f40b2);};}function removeListener(_0x3704de,_0x258ee5){return function(){ChatInternalMessageEvents[_0x4fa8('0x3')](_0x3704de,_0x258ee5);};}exports[_0x4fa8('0x4')]=function(_0x117350){for(var _0x1bb801=0x0,_0x369c2e=events[_0x4fa8('0x5')];_0x1bb801<_0x369c2e;_0x1bb801++){var _0x4ef413=events[_0x1bb801];var _0x34ee50=createListener('chatInternalMessage:'+_0x4ef413,_0x117350);ChatInternalMessageEvents['on'](_0x4ef413,_0x34ee50);}};
\ No newline at end of file
index b310afd..acfeb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6839=['index','/describe','getUsers','show','post','create','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x7097e8,_0x53e913){var _0x212772=function(_0x862906){while(--_0x862906){_0x7097e8['push'](_0x7097e8['shift']());}};_0x212772(++_0x53e913);}(_0x6839,0x11c));var _0x9683=function(_0x5c2c72,_0x22cf09){_0x5c2c72=_0x5c2c72-0x0;var _0x11c44c=_0x6839[_0x5c2c72];return _0x11c44c;};'use strict';var multer=require(_0x9683('0x0'));var util=require(_0x9683('0x1'));var path=require('path');var timeout=require(_0x9683('0x2'));var express=require(_0x9683('0x3'));var router=express[_0x9683('0x4')]();var fs_extra=require(_0x9683('0x5'));var auth=require(_0x9683('0x6'));var interaction=require(_0x9683('0x7'));var config=require(_0x9683('0x8'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth[_0x9683('0x9')](),controller[_0x9683('0xa')]);router['get'](_0x9683('0xb'),auth[_0x9683('0x9')](),controller['describe']);router['get']('/users',auth['isAuthenticated'](),controller[_0x9683('0xc')]);router['get']('/:id',auth[_0x9683('0x9')](),controller[_0x9683('0xd')]);router[_0x9683('0xe')]('/',auth[_0x9683('0x9')](),controller[_0x9683('0xf')]);router[_0x9683('0x10')](_0x9683('0x11'),controller[_0x9683('0x12')]);router[_0x9683('0x13')]('/:id',auth[_0x9683('0x9')](),controller['destroy']);module[_0x9683('0x14')]=router;
\ No newline at end of file
+var _0x6aaa=['/:id','show','post','create','put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../config/environment','/describe','isAuthenticated','describe','get','/users','getUsers'];(function(_0x16b1b3,_0x1a2147){var _0x4c5afe=function(_0x380e64){while(--_0x380e64){_0x16b1b3['push'](_0x16b1b3['shift']());}};_0x4c5afe(++_0x1a2147);}(_0x6aaa,0x1e8));var _0xa6aa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6aaa[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xa6aa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa6aa('0x1'));var express=require(_0xa6aa('0x2'));var router=express[_0xa6aa('0x3')]();var fs_extra=require(_0xa6aa('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa6aa('0x5'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa6aa('0x6'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0x8')]);router[_0xa6aa('0x9')](_0xa6aa('0xa'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xb')]);router[_0xa6aa('0x9')](_0xa6aa('0xc'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xd')]);router[_0xa6aa('0xe')]('/',auth[_0xa6aa('0x7')](),controller[_0xa6aa('0xf')]);router[_0xa6aa('0x10')](_0xa6aa('0xc'),controller[_0xa6aa('0x11')]);router['delete'](_0xa6aa('0xc'),auth[_0xa6aa('0x7')](),controller[_0xa6aa('0x12')]);module[_0xa6aa('0x13')]=router;
\ No newline at end of file
index bc05203..9e272af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['out','DATE','STRING','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x19730f,_0x4f2e5d){var _0x636320=function(_0x16ba08){while(--_0x16ba08){_0x19730f['push'](_0x19730f['shift']());}};_0x636320(++_0x4f2e5d);}(_0xb03e,0x1eb));var _0xeb03=function(_0x31d9b6,_0x51c76c){_0x31d9b6=_0x31d9b6-0x0;var _0xd95bed=_0xb03e[_0x31d9b6];return _0xd95bed;};'use strict';var Sequelize=require('sequelize');module[_0xeb03('0x0')]={'body':{'type':Sequelize[_0xeb03('0x1')](_0xeb03('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xeb03('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xeb03('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xeb03('0x4')]('in',_0xeb03('0x5')),'defaultValue':_0xeb03('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xeb03('0x6')]},'providerName':{'type':Sequelize[_0xeb03('0x7')]},'providerResponse':{'type':Sequelize[_0xeb03('0x1')]}};
\ No newline at end of file
+var _0xa571=['medium','BOOLEAN','ENUM','DATE','sequelize','exports','TEXT'];(function(_0x4edf36,_0x499604){var _0xd08151=function(_0x116777){while(--_0x116777){_0x4edf36['push'](_0x4edf36['shift']());}};_0xd08151(++_0x499604);}(_0xa571,0x107));var _0x1a57=function(_0x3e47a6,_0x38a9af){_0x3e47a6=_0x3e47a6-0x0;var _0x2c40e5=_0xa571[_0x3e47a6];return _0x2c40e5;};'use strict';var Sequelize=require(_0x1a57('0x0'));module[_0x1a57('0x1')]={'body':{'type':Sequelize[_0x1a57('0x2')](_0x1a57('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1a57('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a57('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x1a57('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x1a57('0x2')]}};
\ No newline at end of file
index 8512a87..10203e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd46a=['attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','keys','length','create','body','params','destroy','describe','chat-interactions','accept','read','readAt','format','UserId','agent','find','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','channel','event','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','contact','email','interface','SIP/%s','motionChannel','EventManager','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','defaults','localhost','socket.io-emitter','redis','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','sendStatus','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','model','query','filters','intersection'];(function(_0x5ace28,_0x4adca0){var _0x5910c9=function(_0x2a6f69){while(--_0x2a6f69){_0x5ace28['push'](_0x5ace28['shift']());}};_0x5910c9(++_0x4adca0);}(_0xd46a,0x152));var _0xad46=function(_0x331254,_0x526d33){_0x331254=_0x331254-0x0;var _0x473c47=_0xd46a[_0x331254];return _0x473c47;};'use strict';var emlformat=require(_0xad46('0x0'));var rimraf=require(_0xad46('0x1'));var zipdir=require(_0xad46('0x2'));var jsonpatch=require(_0xad46('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xad46('0x4'));var Mustache=require(_0xad46('0x5'));var util=require(_0xad46('0x6'));var path=require(_0xad46('0x7'));var sox=require(_0xad46('0x8'));var csv=require(_0xad46('0x9'));var ejs=require(_0xad46('0xa'));var fs=require('fs');var fs_extra=require(_0xad46('0xb'));var _=require(_0xad46('0xc'));var squel=require(_0xad46('0xd'));var crypto=require(_0xad46('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xad46('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xad46('0x10'));var Redis=require('ioredis');var authService=require(_0xad46('0x11'));var qs=require(_0xad46('0x12'));var as=require(_0xad46('0x13'));var hardwareService=require(_0xad46('0x14'));var logger=require(_0xad46('0x15'))(_0xad46('0x16'));var utils=require(_0xad46('0x17'));var config=require(_0xad46('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xad46('0x19')](config['redis'],{'host':_0xad46('0x1a'),'port':0x18eb});var socket=require(_0xad46('0x1b'))(new Redis(config[_0xad46('0x1c')]));require('./chatMessage.socket')[_0xad46('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0xad46('0x1e')][_0xad46('0x1f')]({'port':0x232c});var client9002=jayson[_0xad46('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x148a34,_0x5cf6ee,_0x5c9c34,_0x268e2b){return new BPromise(function(_0x82a5c9,_0x27174a){var _0x4588be=_0x268e2b||client;return _0x4588be[_0xad46('0x20')](_0x148a34,_0x5c9c34)[_0xad46('0x21')](function(_0x3989a2){logger[_0xad46('0x22')](_0xad46('0x23'),_0x5cf6ee,_0xad46('0x24'));logger[_0xad46('0x25')](_0xad46('0x26'),_0x5cf6ee,_0xad46('0x24'),JSON[_0xad46('0x27')](_0x3989a2));if(_0x3989a2[_0xad46('0x28')]){if(_0x3989a2['error'][_0xad46('0x29')]===0x1f4){logger['error'](_0xad46('0x23'),_0x5cf6ee,_0x3989a2[_0xad46('0x28')]['message']);return _0x27174a(_0x3989a2[_0xad46('0x28')][_0xad46('0x2a')]);}logger['error'](_0xad46('0x23'),_0x5cf6ee,_0x3989a2[_0xad46('0x28')]['message']);return _0x82a5c9(_0x3989a2[_0xad46('0x28')][_0xad46('0x2a')]);}else{logger['info'](_0xad46('0x23'),_0x5cf6ee,_0xad46('0x24'));_0x82a5c9(_0x3989a2[_0xad46('0x2b')][_0xad46('0x2a')]);}})[_0xad46('0x2c')](function(_0x43c131){logger[_0xad46('0x28')](_0xad46('0x23'),_0x5cf6ee,_0x43c131);_0x27174a(_0x43c131);});});}function respondWithStatusCode(_0x4c0d96,_0x4562d3){_0x4562d3=_0x4562d3||0xcc;return function(_0x59c59a){if(_0x59c59a){return _0x4c0d96['sendStatus'](_0x4562d3);}return _0x4c0d96['status'](_0x4562d3)[_0xad46('0x2d')]();};}function respondWithResult(_0x39664a,_0x1e31f8){_0x1e31f8=_0x1e31f8||0xc8;return function(_0x269fa9){if(_0x269fa9){return _0x39664a[_0xad46('0x2e')](_0x1e31f8)[_0xad46('0x2f')](_0x269fa9);}};}function respondWithFilteredResult(_0x18d2ab,_0x59a870){return function(_0x50f203){if(_0x50f203){var _0x509817=typeof _0x59a870[_0xad46('0x30')]===_0xad46('0x31')&&typeof _0x59a870[_0xad46('0x32')]===_0xad46('0x31');var _0x411d7a=_0x50f203[_0xad46('0x33')];var _0x200e8f=_0x509817?0x0:_0x59a870[_0xad46('0x30')];var _0x588b20=_0x509817?_0x50f203[_0xad46('0x33')]:_0x59a870[_0xad46('0x30')]+_0x59a870[_0xad46('0x32')];var _0x2795c1;if(_0x588b20>=_0x411d7a){_0x588b20=_0x411d7a;_0x2795c1=0xc8;}else{_0x2795c1=0xce;}_0x18d2ab[_0xad46('0x2e')](_0x2795c1);return _0x18d2ab[_0xad46('0x34')](_0xad46('0x35'),_0x200e8f+'-'+_0x588b20+'/'+_0x411d7a)[_0xad46('0x2f')](_0x50f203);}return null;};}function patchUpdates(_0x251a7b){return function(_0x6158d4){try{jsonpatch['apply'](_0x6158d4,_0x251a7b,!![]);}catch(_0xc3afde){return BPromise[_0xad46('0x36')](_0xc3afde);}return _0x6158d4['save']();};}function saveUpdates(_0xb036ea,_0x503ed5){return function(_0x3c4b16){if(_0x3c4b16){return _0x3c4b16[_0xad46('0x37')](_0xb036ea)[_0xad46('0x21')](function(_0x1c10b9){return _0x1c10b9;});}return null;};}function removeEntity(_0x3cc087,_0x2287ab){return function(_0x327276){if(_0x327276){return _0x327276['destroy']()[_0xad46('0x21')](function(){_0x3cc087[_0xad46('0x2e')](0xcc)[_0xad46('0x2d')]();});}};}function handleEntityNotFound(_0x514966,_0x440008){return function(_0xe96f28){if(!_0xe96f28){_0x514966[_0xad46('0x38')](0x194);}return _0xe96f28;};}function handleError(_0x3073f0,_0x54301c){_0x54301c=_0x54301c||0x1f4;return function(_0xd354c8){logger[_0xad46('0x28')](_0xd354c8[_0xad46('0x39')]);if(_0xd354c8['name']){delete _0xd354c8[_0xad46('0x3a')];}_0x3073f0['status'](_0x54301c)[_0xad46('0x3b')](_0xd354c8);};}exports[_0xad46('0x3c')]=function(_0x596baa,_0x58b3f8){var _0x57a2a3={},_0x43b1cb={},_0x134654={'count':0x0,'rows':[]};var _0x3b2482=_[_0xad46('0x3d')](db[_0xad46('0x3e')][_0xad46('0x3f')],function(_0x347035){return{'name':_0x347035[_0xad46('0x40')],'type':_0x347035[_0xad46('0x41')]['key']};});_0x43b1cb[_0xad46('0x42')]=_[_0xad46('0x3d')](_0x3b2482,_0xad46('0x3a'));_0x43b1cb[_0xad46('0x43')]=_['keys'](_0x596baa[_0xad46('0x43')]);_0x43b1cb[_0xad46('0x44')]=_[_0xad46('0x45')](_0x43b1cb[_0xad46('0x42')],_0x43b1cb[_0xad46('0x43')]);_0x57a2a3[_0xad46('0x46')]=_[_0xad46('0x45')](_0x43b1cb[_0xad46('0x42')],qs[_0xad46('0x47')](_0x596baa[_0xad46('0x43')][_0xad46('0x47')]));_0x57a2a3[_0xad46('0x46')]=_0x57a2a3['attributes']['length']?_0x57a2a3[_0xad46('0x46')]:_0x43b1cb['model'];if(!_0x596baa[_0xad46('0x43')][_0xad46('0x48')]('nolimit')){_0x57a2a3[_0xad46('0x32')]=qs[_0xad46('0x32')](_0x596baa['query'][_0xad46('0x32')]);_0x57a2a3[_0xad46('0x30')]=qs[_0xad46('0x30')](_0x596baa[_0xad46('0x43')]['offset']);}_0x57a2a3[_0xad46('0x49')]=qs[_0xad46('0x4a')](_0x596baa[_0xad46('0x43')][_0xad46('0x4a')]);_0x57a2a3[_0xad46('0x4b')]=qs['filters'](_[_0xad46('0x4c')](_0x596baa[_0xad46('0x43')],_0x43b1cb[_0xad46('0x44')]),_0x3b2482);if(_0x596baa[_0xad46('0x43')][_0xad46('0x4d')]){_0x57a2a3[_0xad46('0x4b')]=_['merge'](_0x57a2a3[_0xad46('0x4b')],{'$or':_['map'](_0x3b2482,function(_0x359967){if(_0x359967[_0xad46('0x41')]!==_0xad46('0x4e')){var _0x118e36={};_0x118e36[_0x359967[_0xad46('0x3a')]]={'$like':'%'+_0x596baa[_0xad46('0x43')][_0xad46('0x4d')]+'%'};return _0x118e36;}})});}_0x57a2a3=_[_0xad46('0x4f')]({},_0x57a2a3,_0x596baa[_0xad46('0x50')]);var _0x3864f9={'where':_0x57a2a3[_0xad46('0x4b')]};return db[_0xad46('0x3e')][_0xad46('0x33')](_0x3864f9)[_0xad46('0x21')](function(_0x2a5db6){_0x134654[_0xad46('0x33')]=_0x2a5db6;if(_0x596baa['query']['includeAll']){_0x57a2a3[_0xad46('0x51')]=[{'all':!![]}];}return db[_0xad46('0x3e')][_0xad46('0x52')](_0x57a2a3);})[_0xad46('0x21')](function(_0x395c5b){_0x134654[_0xad46('0x53')]=_0x395c5b;return _0x134654;})['then'](respondWithFilteredResult(_0x58b3f8,_0x57a2a3))['catch'](handleError(_0x58b3f8,null));};exports[_0xad46('0x54')]=function(_0x6c5d43,_0x11aaeb){var _0x1e9d29={'raw':!![],'where':{'id':_0x6c5d43['params']['id']}},_0xbae94d={};_0xbae94d[_0xad46('0x42')]=_[_0xad46('0x55')](db[_0xad46('0x3e')][_0xad46('0x3f')]);_0xbae94d[_0xad46('0x43')]=_[_0xad46('0x55')](_0x6c5d43[_0xad46('0x43')]);_0xbae94d[_0xad46('0x44')]=_[_0xad46('0x45')](_0xbae94d[_0xad46('0x42')],_0xbae94d[_0xad46('0x43')]);_0x1e9d29['attributes']=_[_0xad46('0x45')](_0xbae94d[_0xad46('0x42')],qs[_0xad46('0x47')](_0x6c5d43[_0xad46('0x43')][_0xad46('0x47')]));_0x1e9d29[_0xad46('0x46')]=_0x1e9d29[_0xad46('0x46')][_0xad46('0x56')]?_0x1e9d29['attributes']:_0xbae94d[_0xad46('0x42')];if(_0x6c5d43[_0xad46('0x43')]['includeAll']){_0x1e9d29[_0xad46('0x51')]=[{'all':!![]}];}_0x1e9d29=_[_0xad46('0x4f')]({},_0x1e9d29,_0x6c5d43['options']);return db['ChatMessage']['find'](_0x1e9d29)[_0xad46('0x21')](handleEntityNotFound(_0x11aaeb,null))[_0xad46('0x21')](respondWithResult(_0x11aaeb,null))[_0xad46('0x2c')](handleError(_0x11aaeb,null));};exports['create']=function(_0x18db6d,_0x4a7add){return db[_0xad46('0x3e')][_0xad46('0x57')](_0x18db6d[_0xad46('0x58')],{})[_0xad46('0x21')](respondWithResult(_0x4a7add,0xc9))[_0xad46('0x2c')](handleError(_0x4a7add,null));};exports[_0xad46('0x37')]=function(_0x612408,_0x33d685){if(_0x612408[_0xad46('0x58')]['id']){delete _0x612408[_0xad46('0x58')]['id'];}return db[_0xad46('0x3e')]['find']({'where':{'id':_0x612408[_0xad46('0x59')]['id']}})[_0xad46('0x21')](handleEntityNotFound(_0x33d685,null))[_0xad46('0x21')](saveUpdates(_0x612408[_0xad46('0x58')],null))[_0xad46('0x21')](respondWithResult(_0x33d685,null))[_0xad46('0x2c')](handleError(_0x33d685,null));};exports[_0xad46('0x5a')]=function(_0x5edb52,_0x527356){return db[_0xad46('0x3e')]['find']({'where':{'id':_0x5edb52[_0xad46('0x59')]['id']}})[_0xad46('0x21')](handleEntityNotFound(_0x527356,null))[_0xad46('0x21')](removeEntity(_0x527356,null))[_0xad46('0x2c')](handleError(_0x527356,null));};exports[_0xad46('0x5b')]=function(_0x2a42f0,_0x4b2f50){return db[_0xad46('0x3e')][_0xad46('0x5b')]()[_0xad46('0x21')](respondWithResult(_0x4b2f50,null))[_0xad46('0x2c')](handleError(_0x4b2f50,null));};var interaction_log=require(_0xad46('0x15'))(_0xad46('0x5c'));exports[_0xad46('0x5d')]=function(_0x91fca1,_0x47874f,_0xcf37ea){var _0x3491c4={'agent':{},'channel':'chat'};if(_0x91fca1[_0xad46('0x58')]['id']){delete _0x91fca1[_0xad46('0x58')]['id'];}_0x91fca1[_0xad46('0x58')][_0xad46('0x5e')]=!![];_0x91fca1['body'][_0xad46('0x5f')]=moment()[_0xad46('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x91fca1[_0xad46('0x58')]['UserId']=_0x91fca1[_0xad46('0x58')][_0xad46('0x61')]||_0x91fca1['user']['id'];_0x3491c4[_0xad46('0x62')]['id']=_0x91fca1[_0xad46('0x58')][_0xad46('0x61')];return db[_0xad46('0x3e')][_0xad46('0x63')]({'where':{'id':_0x91fca1['params']['id'],'UserId':null}})[_0xad46('0x21')](handleEntityNotFound(_0x47874f,null))[_0xad46('0x21')](saveUpdates(_0x91fca1[_0xad46('0x58')],null))['then'](function(_0x27e7b7){if(_0x27e7b7){_0x3491c4['message']=_0x27e7b7[_0xad46('0x64')]({'plain':!![]});return db[_0xad46('0x65')][_0xad46('0x63')]({'where':{'id':_0x27e7b7[_0xad46('0x66')]}});}return null;})[_0xad46('0x21')](handleEntityNotFound(_0x47874f,null))[_0xad46('0x21')](function(_0x1e4b3b){if(_0x1e4b3b){return _0x1e4b3b[_0xad46('0x37')]({'UserId':_0x91fca1[_0xad46('0x58')][_0xad46('0x61')],'read1stAt':_[_0xad46('0x67')](_0x1e4b3b[_0xad46('0x68')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xad46('0x21')](function(_0x235feb){if(_0x235feb){_0x3491c4[_0xad46('0x69')]=_0x235feb[_0xad46('0x64')]({'plain':!![]});interaction_log[_0xad46('0x22')](_0xad46('0x6a'),_0x91fca1['user']['id'],_0x91fca1[_0xad46('0x6b')][_0xad46('0x3a')],_0x91fca1['user'][_0xad46('0x6c')],_0x3491c4[_0xad46('0x69')]['id'],_0x91fca1[_0xad46('0x58')]?JSON[_0xad46('0x27')](_0x91fca1['body']):'null');return respondWithRpcPromise(_0xad46('0x6d'),_0xad46('0x6e'),_0x3491c4);}return null;})['then'](function(_0x35189d){var _0x4414a4=_0xad46('0x6f')+_0x35189d[_0xad46('0x2a')][_0xad46('0x70')];return db[_0xad46('0x71')][_0xad46('0x43')](_0x4414a4,{'type':db[_0xad46('0x72')][_0xad46('0x73')][_0xad46('0x74')],'raw':!![]})[_0xad46('0x21')](function(_0x257aef){return _0x257aef;});})[_0xad46('0x21')](function(_0x3397af){if(_0x3397af){_0x3491c4['message']['contact']=_0x3397af[0x0];if(!_0x91fca1[_0xad46('0x58')]['UserId'])return;return db[_0xad46('0x75')][_0xad46('0x63')]({'where':{'id':_0x91fca1['body'][_0xad46('0x61')],'role':_0xad46('0x62')},'attributes':['id',_0xad46('0x3a'),_0xad46('0x76'),'email',_0xad46('0x77')],'raw':!![]});}return null;})[_0xad46('0x21')](function(_0x48963d){if(!_0x48963d)return null;_0x3491c4[_0xad46('0x2a')][_0xad46('0x62')]=_0x48963d;return _0x3491c4;})['then'](function(_0x377814){if(_0x377814){if(_0x91fca1[_0xad46('0x58')][_0xad46('0x78')]){_0x3491c4[_0xad46('0x2a')]['interface']=util[_0xad46('0x60')]('SIP/%s',_0x91fca1[_0xad46('0x6b')]['name']);_0x3491c4[_0xad46('0x2a')][_0xad46('0x79')]=_0x3491c4['channel'];_0x3491c4[_0xad46('0x2a')]['motionChannel']=_0x3491c4[_0xad46('0x79')];_0x3491c4[_0xad46('0x2a')][_0xad46('0x7a')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_[_0xad46('0x4f')](_0x3491c4[_0xad46('0x2a')],JSON[_0xad46('0x7b')](_0x3491c4[_0xad46('0x69')][_0xad46('0x7c')]))},client9002)[_0xad46('0x21')](function(){return _0x3491c4;});}return _0x3491c4;}return null;})[_0xad46('0x21')](respondWithResult(_0x47874f,null))[_0xad46('0x2c')](handleError(_0x47874f,null));};var interaction_log=require(_0xad46('0x15'))(_0xad46('0x5c'));exports[_0xad46('0x36')]=function(_0x30137e,_0x4ddec9,_0x31edca){var _0x32b9b0={'agent':{},'channel':'chat'};if(_0x30137e[_0xad46('0x58')]['id']){delete _0x30137e[_0xad46('0x58')]['id'];}_0x30137e[_0xad46('0x58')][_0xad46('0x61')]=_0x30137e[_0xad46('0x58')]['UserId']||_0x30137e[_0xad46('0x6b')]['id'];_0x32b9b0['agent']['id']=_0x30137e[_0xad46('0x58')][_0xad46('0x61')];return db[_0xad46('0x3e')][_0xad46('0x63')]({'where':{'id':_0x30137e[_0xad46('0x59')]['id'],'UserId':null}})[_0xad46('0x21')](handleEntityNotFound(_0x4ddec9,null))[_0xad46('0x21')](function(_0x52ca06){if(_0x52ca06){_0x32b9b0[_0xad46('0x2a')]=_0x52ca06[_0xad46('0x64')]({'plain':!![]});return db[_0xad46('0x65')]['find']({'where':{'id':_0x52ca06['ChatInteractionId']}});}return null;})[_0xad46('0x21')](handleEntityNotFound(_0x4ddec9,null))[_0xad46('0x21')](function(_0x28aadc){if(_0x28aadc){_0x32b9b0['interaction']=_0x28aadc[_0xad46('0x64')]({'plain':!![]});interaction_log['info'](_0xad46('0x7d'),_0x30137e[_0xad46('0x6b')]['id'],_0x30137e[_0xad46('0x6b')][_0xad46('0x3a')],_0x30137e[_0xad46('0x6b')][_0xad46('0x6c')],_0x32b9b0[_0xad46('0x69')]['id'],_0x30137e[_0xad46('0x58')]?JSON['stringify'](_0x30137e['body']):_0xad46('0x7e'));return respondWithRpcPromise(_0xad46('0x7f'),_0xad46('0x80'),_0x32b9b0);}return null;})[_0xad46('0x21')](function(_0x4907be){var _0xefe16f=_0xad46('0x6f')+_0x4907be[_0xad46('0x2a')][_0xad46('0x70')];return db[_0xad46('0x71')][_0xad46('0x43')](_0xefe16f,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0xad46('0x21')](function(_0x4256b7){return _0x4256b7;});})[_0xad46('0x21')](function(_0x57bb46){if(_0x57bb46){_0x32b9b0[_0xad46('0x2a')][_0xad46('0x81')]=_0x57bb46[0x0];if(!_0x30137e[_0xad46('0x58')][_0xad46('0x61')])return;return db['User']['find']({'where':{'id':_0x30137e['body'][_0xad46('0x61')],'role':_0xad46('0x62')},'attributes':['id',_0xad46('0x3a'),_0xad46('0x76'),_0xad46('0x82'),_0xad46('0x77')],'raw':!![]});}return null;})[_0xad46('0x21')](function(_0x477473){if(!_0x477473)return null;_0x32b9b0[_0xad46('0x2a')][_0xad46('0x62')]=_0x477473;return _0x32b9b0;})[_0xad46('0x21')](function(_0x53fc6b){if(_0x53fc6b){_0x53fc6b['message'][_0xad46('0x83')]=util[_0xad46('0x60')](_0xad46('0x84'),_0x30137e[_0xad46('0x6b')]['name']);_0x53fc6b[_0xad46('0x2a')][_0xad46('0x79')]=_0x32b9b0['channel'];_0x53fc6b[_0xad46('0x2a')][_0xad46('0x85')]=_0x32b9b0[_0xad46('0x79')];_0x53fc6b['message'][_0xad46('0x7a')]=_0xad46('0x36');respondWithRpcPromise(_0xad46('0x86'),_0xad46('0x86'),{'event':_0xad46('0x87'),'message':_[_0xad46('0x4f')](_0x32b9b0[_0xad46('0x2a')],JSON[_0xad46('0x7b')](_0x32b9b0[_0xad46('0x69')][_0xad46('0x7c')]))},client9002);return _0x32b9b0;}return null;})[_0xad46('0x21')](respondWithResult(_0x4ddec9,null))[_0xad46('0x2c')](handleError(_0x4ddec9,null));};
\ No newline at end of file
+var _0x42ea=['ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','then','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','rawAttributes','find','create','body','params','destroy','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','stringify','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','sequelize','email','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x9f8ae1,_0x43147a){var _0x1cdcfe=function(_0x1d0149){while(--_0x1d0149){_0x9f8ae1['push'](_0x9f8ae1['shift']());}};_0x1cdcfe(++_0x43147a);}(_0x42ea,0x79));var _0xa42e=function(_0x274cd5,_0x4cea50){_0x274cd5=_0x274cd5-0x0;var _0x51f4d8=_0x42ea[_0x274cd5];return _0x51f4d8;};'use strict';var emlformat=require(_0xa42e('0x0'));var rimraf=require(_0xa42e('0x1'));var zipdir=require(_0xa42e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa42e('0x3'));var moment=require(_0xa42e('0x4'));var BPromise=require(_0xa42e('0x5'));var Mustache=require(_0xa42e('0x6'));var util=require(_0xa42e('0x7'));var path=require(_0xa42e('0x8'));var sox=require(_0xa42e('0x9'));var csv=require(_0xa42e('0xa'));var ejs=require(_0xa42e('0xb'));var fs=require('fs');var fs_extra=require(_0xa42e('0xc'));var _=require(_0xa42e('0xd'));var squel=require(_0xa42e('0xe'));var crypto=require('crypto');var jsforce=require(_0xa42e('0xf'));var deskjs=require(_0xa42e('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa42e('0x11'));var Papa=require(_0xa42e('0x12'));var Redis=require('ioredis');var authService=require(_0xa42e('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa42e('0x14'));var hardwareService=require(_0xa42e('0x15'));var logger=require(_0xa42e('0x16'))('api');var utils=require(_0xa42e('0x17'));var config=require(_0xa42e('0x18'));var licenseUtil=require(_0xa42e('0x19'));var db=require(_0xa42e('0x1a'))['db'];config[_0xa42e('0x1b')]=_[_0xa42e('0x1c')](config['redis'],{'host':_0xa42e('0x1d'),'port':0x18eb});var socket=require(_0xa42e('0x1e'))(new Redis(config[_0xa42e('0x1b')]));require(_0xa42e('0x1f'))[_0xa42e('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0xa42e('0x21')][_0xa42e('0x22')]({'port':0x232c});var client9002=jayson[_0xa42e('0x21')][_0xa42e('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5b83ce,_0x2b8b5c,_0x20a024,_0x445162){return new BPromise(function(_0x3f0e92,_0x17d9f6){var _0x1df728=_0x445162||client;return _0x1df728['request'](_0x5b83ce,_0x20a024)[_0xa42e('0x23')](function(_0x3adfc3){logger[_0xa42e('0x24')](_0xa42e('0x25'),_0x2b8b5c,'request\x20sent');logger['debug'](_0xa42e('0x26'),_0x2b8b5c,'request\x20sent',JSON['stringify'](_0x3adfc3));if(_0x3adfc3[_0xa42e('0x27')]){if(_0x3adfc3[_0xa42e('0x27')]['code']===0x1f4){logger[_0xa42e('0x27')](_0xa42e('0x25'),_0x2b8b5c,_0x3adfc3['error']['message']);return _0x17d9f6(_0x3adfc3['error'][_0xa42e('0x28')]);}logger[_0xa42e('0x27')]('ChatMessage,\x20%s,\x20%s',_0x2b8b5c,_0x3adfc3[_0xa42e('0x27')][_0xa42e('0x28')]);return _0x3f0e92(_0x3adfc3[_0xa42e('0x27')][_0xa42e('0x28')]);}else{logger[_0xa42e('0x24')](_0xa42e('0x25'),_0x2b8b5c,_0xa42e('0x29'));_0x3f0e92(_0x3adfc3[_0xa42e('0x2a')][_0xa42e('0x28')]);}})[_0xa42e('0x2b')](function(_0x4134df){logger[_0xa42e('0x27')](_0xa42e('0x25'),_0x2b8b5c,_0x4134df);_0x17d9f6(_0x4134df);});});}function respondWithStatusCode(_0x37562b,_0x10bc88){_0x10bc88=_0x10bc88||0xcc;return function(_0x165557){if(_0x165557){return _0x37562b[_0xa42e('0x2c')](_0x10bc88);}return _0x37562b['status'](_0x10bc88)[_0xa42e('0x2d')]();};}function respondWithResult(_0x127a8d,_0x1e992e){_0x1e992e=_0x1e992e||0xc8;return function(_0x49becd){if(_0x49becd){return _0x127a8d[_0xa42e('0x2e')](_0x1e992e)[_0xa42e('0x2f')](_0x49becd);}};}function respondWithFilteredResult(_0x56dad9,_0x90664f){return function(_0x16c2ce){if(_0x16c2ce){var _0x48372a=typeof _0x90664f[_0xa42e('0x30')]===_0xa42e('0x31')&&typeof _0x90664f[_0xa42e('0x32')]===_0xa42e('0x31');var _0x2a16ae=_0x16c2ce[_0xa42e('0x33')];var _0x5823bb=_0x48372a?0x0:_0x90664f[_0xa42e('0x30')];var _0x4eab43=_0x48372a?_0x16c2ce['count']:_0x90664f['offset']+_0x90664f[_0xa42e('0x32')];var _0x3b8b91;if(_0x4eab43>=_0x2a16ae){_0x4eab43=_0x2a16ae;_0x3b8b91=0xc8;}else{_0x3b8b91=0xce;}_0x56dad9['status'](_0x3b8b91);return _0x56dad9['set'](_0xa42e('0x34'),_0x5823bb+'-'+_0x4eab43+'/'+_0x2a16ae)['json'](_0x16c2ce);}return null;};}function patchUpdates(_0x4f5ec1){return function(_0x2da37a){try{jsonpatch[_0xa42e('0x35')](_0x2da37a,_0x4f5ec1,!![]);}catch(_0x320051){return BPromise[_0xa42e('0x36')](_0x320051);}return _0x2da37a[_0xa42e('0x37')]();};}function saveUpdates(_0x462751,_0x43a197){return function(_0x284c6a){if(_0x284c6a){return _0x284c6a[_0xa42e('0x38')](_0x462751)[_0xa42e('0x23')](function(_0x134dab){return _0x134dab;});}return null;};}function removeEntity(_0x5212a1,_0x54b7c7){return function(_0x4a0b7b){if(_0x4a0b7b){return _0x4a0b7b['destroy']()[_0xa42e('0x23')](function(){_0x5212a1[_0xa42e('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1192b1,_0x28c16b){return function(_0x371adc){if(!_0x371adc){_0x1192b1[_0xa42e('0x2c')](0x194);}return _0x371adc;};}function handleError(_0xa2604,_0x11f585){_0x11f585=_0x11f585||0x1f4;return function(_0x4481f3){logger[_0xa42e('0x27')](_0x4481f3[_0xa42e('0x39')]);if(_0x4481f3[_0xa42e('0x3a')]){delete _0x4481f3[_0xa42e('0x3a')];}_0xa2604[_0xa42e('0x2e')](_0x11f585)[_0xa42e('0x3b')](_0x4481f3);};}exports['index']=function(_0x25e5ce,_0x37919b){var _0x4c16be={},_0x161fe7={},_0x50e407={'count':0x0,'rows':[]};var _0x2f6b84=_[_0xa42e('0x3c')](db[_0xa42e('0x3d')]['rawAttributes'],function(_0x75fece){return{'name':_0x75fece[_0xa42e('0x3e')],'type':_0x75fece[_0xa42e('0x3f')]['key']};});_0x161fe7['model']=_[_0xa42e('0x3c')](_0x2f6b84,_0xa42e('0x3a'));_0x161fe7['query']=_[_0xa42e('0x40')](_0x25e5ce[_0xa42e('0x41')]);_0x161fe7[_0xa42e('0x42')]=_[_0xa42e('0x43')](_0x161fe7[_0xa42e('0x44')],_0x161fe7[_0xa42e('0x41')]);_0x4c16be[_0xa42e('0x45')]=_[_0xa42e('0x43')](_0x161fe7[_0xa42e('0x44')],qs[_0xa42e('0x46')](_0x25e5ce[_0xa42e('0x41')]['fields']));_0x4c16be[_0xa42e('0x45')]=_0x4c16be['attributes'][_0xa42e('0x47')]?_0x4c16be[_0xa42e('0x45')]:_0x161fe7[_0xa42e('0x44')];if(!_0x25e5ce['query'][_0xa42e('0x48')](_0xa42e('0x49'))){_0x4c16be[_0xa42e('0x32')]=qs['limit'](_0x25e5ce[_0xa42e('0x41')]['limit']);_0x4c16be[_0xa42e('0x30')]=qs[_0xa42e('0x30')](_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x30')]);}_0x4c16be['order']=qs[_0xa42e('0x4a')](_0x25e5ce[_0xa42e('0x41')]['sort']);_0x4c16be[_0xa42e('0x4b')]=qs['filters'](_[_0xa42e('0x4c')](_0x25e5ce[_0xa42e('0x41')],_0x161fe7['filters']),_0x2f6b84);if(_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x4d')]){_0x4c16be[_0xa42e('0x4b')]=_[_0xa42e('0x4e')](_0x4c16be[_0xa42e('0x4b')],{'$or':_[_0xa42e('0x3c')](_0x2f6b84,function(_0xf2b9dc){if(_0xf2b9dc[_0xa42e('0x3f')]!==_0xa42e('0x4f')){var _0x41a60c={};_0x41a60c[_0xf2b9dc['name']]={'$like':'%'+_0x25e5ce[_0xa42e('0x41')][_0xa42e('0x4d')]+'%'};return _0x41a60c;}})});}_0x4c16be=_[_0xa42e('0x4e')]({},_0x4c16be,_0x25e5ce['options']);var _0x59a68b={'where':_0x4c16be[_0xa42e('0x4b')]};return db[_0xa42e('0x3d')][_0xa42e('0x33')](_0x59a68b)[_0xa42e('0x23')](function(_0x4be51f){_0x50e407[_0xa42e('0x33')]=_0x4be51f;if(_0x25e5ce['query'][_0xa42e('0x50')]){_0x4c16be[_0xa42e('0x51')]=[{'all':!![]}];}return db[_0xa42e('0x3d')][_0xa42e('0x52')](_0x4c16be);})[_0xa42e('0x23')](function(_0x3d85ec){_0x50e407['rows']=_0x3d85ec;return _0x50e407;})[_0xa42e('0x23')](respondWithFilteredResult(_0x37919b,_0x4c16be))[_0xa42e('0x2b')](handleError(_0x37919b,null));};exports[_0xa42e('0x53')]=function(_0x5b582f,_0x4ec3fb){var _0x5bce64={'raw':!![],'where':{'id':_0x5b582f['params']['id']}},_0x1b2736={};_0x1b2736[_0xa42e('0x44')]=_[_0xa42e('0x40')](db[_0xa42e('0x3d')][_0xa42e('0x54')]);_0x1b2736[_0xa42e('0x41')]=_[_0xa42e('0x40')](_0x5b582f[_0xa42e('0x41')]);_0x1b2736[_0xa42e('0x42')]=_[_0xa42e('0x43')](_0x1b2736[_0xa42e('0x44')],_0x1b2736[_0xa42e('0x41')]);_0x5bce64[_0xa42e('0x45')]=_[_0xa42e('0x43')](_0x1b2736['model'],qs[_0xa42e('0x46')](_0x5b582f[_0xa42e('0x41')][_0xa42e('0x46')]));_0x5bce64[_0xa42e('0x45')]=_0x5bce64[_0xa42e('0x45')]['length']?_0x5bce64[_0xa42e('0x45')]:_0x1b2736['model'];if(_0x5b582f[_0xa42e('0x41')][_0xa42e('0x50')]){_0x5bce64['include']=[{'all':!![]}];}_0x5bce64=_[_0xa42e('0x4e')]({},_0x5bce64,_0x5b582f['options']);return db[_0xa42e('0x3d')][_0xa42e('0x55')](_0x5bce64)[_0xa42e('0x23')](handleEntityNotFound(_0x4ec3fb,null))[_0xa42e('0x23')](respondWithResult(_0x4ec3fb,null))[_0xa42e('0x2b')](handleError(_0x4ec3fb,null));};exports['create']=function(_0x169d2d,_0x3dc241){return db[_0xa42e('0x3d')][_0xa42e('0x56')](_0x169d2d[_0xa42e('0x57')],{})[_0xa42e('0x23')](respondWithResult(_0x3dc241,0xc9))[_0xa42e('0x2b')](handleError(_0x3dc241,null));};exports[_0xa42e('0x38')]=function(_0x59a381,_0x172fc9){if(_0x59a381[_0xa42e('0x57')]['id']){delete _0x59a381[_0xa42e('0x57')]['id'];}return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x59a381[_0xa42e('0x58')]['id']}})[_0xa42e('0x23')](handleEntityNotFound(_0x172fc9,null))[_0xa42e('0x23')](saveUpdates(_0x59a381[_0xa42e('0x57')],null))[_0xa42e('0x23')](respondWithResult(_0x172fc9,null))['catch'](handleError(_0x172fc9,null));};exports[_0xa42e('0x59')]=function(_0x35adcb,_0x2aa9bb){return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x35adcb['params']['id']}})['then'](handleEntityNotFound(_0x2aa9bb,null))[_0xa42e('0x23')](removeEntity(_0x2aa9bb,null))['catch'](handleError(_0x2aa9bb,null));};exports[_0xa42e('0x5a')]=function(_0x532eec,_0xbd1d71){return db[_0xa42e('0x3d')][_0xa42e('0x5a')]()[_0xa42e('0x23')](respondWithResult(_0xbd1d71,null))['catch'](handleError(_0xbd1d71,null));};var interaction_log=require(_0xa42e('0x16'))(_0xa42e('0x5b'));exports[_0xa42e('0x5c')]=function(_0x51108d,_0x567383,_0x5cd7ea){var _0x4a4d75={'agent':{},'channel':_0xa42e('0x5d')};if(_0x51108d[_0xa42e('0x57')]['id']){delete _0x51108d[_0xa42e('0x57')]['id'];}_0x51108d[_0xa42e('0x57')][_0xa42e('0x5e')]=!![];_0x51108d[_0xa42e('0x57')][_0xa42e('0x5f')]=moment()[_0xa42e('0x60')](_0xa42e('0x61'));_0x51108d[_0xa42e('0x57')]['UserId']=_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')]||_0x51108d['user']['id'];_0x4a4d75[_0xa42e('0x63')]['id']=_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')];return db[_0xa42e('0x3d')][_0xa42e('0x55')]({'where':{'id':_0x51108d['params']['id'],'UserId':null}})[_0xa42e('0x23')](handleEntityNotFound(_0x567383,null))[_0xa42e('0x23')](saveUpdates(_0x51108d['body'],null))[_0xa42e('0x23')](function(_0x2ce6c6){if(_0x2ce6c6){_0x4a4d75[_0xa42e('0x28')]=_0x2ce6c6[_0xa42e('0x64')]({'plain':!![]});return db[_0xa42e('0x65')][_0xa42e('0x55')]({'where':{'id':_0x2ce6c6[_0xa42e('0x66')]}});}return null;})[_0xa42e('0x23')](handleEntityNotFound(_0x567383,null))[_0xa42e('0x23')](function(_0x26edf5){if(_0x26edf5){return _0x26edf5[_0xa42e('0x38')]({'UserId':_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')],'read1stAt':_['isNil'](_0x26edf5[_0xa42e('0x67')])?moment()[_0xa42e('0x60')](_0xa42e('0x61')):undefined});}return null;})[_0xa42e('0x23')](function(_0x1f3ff9){if(_0x1f3ff9){_0x4a4d75[_0xa42e('0x68')]=_0x1f3ff9[_0xa42e('0x64')]({'plain':!![]});interaction_log[_0xa42e('0x24')](_0xa42e('0x69'),_0x51108d[_0xa42e('0x6a')]['id'],_0x51108d[_0xa42e('0x6a')][_0xa42e('0x3a')],_0x51108d[_0xa42e('0x6a')]['role'],_0x4a4d75[_0xa42e('0x68')]['id'],_0x51108d[_0xa42e('0x57')]?JSON[_0xa42e('0x6b')](_0x51108d['body']):_0xa42e('0x6c'));return respondWithRpcPromise(_0xa42e('0x6d'),'acceptMessage',_0x4a4d75);}return null;})[_0xa42e('0x23')](function(_0x103839){var _0x1aea68=_0xa42e('0x6e')+_0x103839[_0xa42e('0x28')][_0xa42e('0x6f')];return db['sequelize'][_0xa42e('0x41')](_0x1aea68,{'type':db[_0xa42e('0x70')][_0xa42e('0x71')][_0xa42e('0x72')],'raw':!![]})[_0xa42e('0x23')](function(_0x5f3c7b){return _0x5f3c7b;});})[_0xa42e('0x23')](function(_0x23e49e){if(_0x23e49e){_0x4a4d75['message']['contact']=_0x23e49e[0x0];if(!_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')])return;return db[_0xa42e('0x73')][_0xa42e('0x55')]({'where':{'id':_0x51108d[_0xa42e('0x57')][_0xa42e('0x62')],'role':'agent'},'attributes':['id',_0xa42e('0x3a'),_0xa42e('0x74'),'email',_0xa42e('0x75')],'raw':!![]});}return null;})[_0xa42e('0x23')](function(_0x33ad4b){if(!_0x33ad4b)return null;_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x63')]=_0x33ad4b;return _0x4a4d75;})[_0xa42e('0x23')](function(_0x20ffdd){if(_0x20ffdd){if(_0x51108d['body'][_0xa42e('0x76')]){_0x4a4d75['message'][_0xa42e('0x77')]=util[_0xa42e('0x60')](_0xa42e('0x78'),_0x51108d[_0xa42e('0x6a')][_0xa42e('0x3a')]);_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x79')]=_0x4a4d75[_0xa42e('0x79')];_0x4a4d75['message'][_0xa42e('0x7a')]=_0x4a4d75[_0xa42e('0x79')];_0x4a4d75[_0xa42e('0x28')][_0xa42e('0x7b')]=_0xa42e('0x5c');return respondWithRpcPromise(_0xa42e('0x7c'),'EventManager',{'event':_0xa42e('0x7d'),'message':_[_0xa42e('0x4e')](_0x4a4d75['message'],JSON['parse'](_0x4a4d75['interaction'][_0xa42e('0x7e')]))},client9002)[_0xa42e('0x23')](function(){return _0x4a4d75;});}return _0x4a4d75;}return null;})[_0xa42e('0x23')](respondWithResult(_0x567383,null))[_0xa42e('0x2b')](handleError(_0x567383,null));};var interaction_log=require(_0xa42e('0x16'))(_0xa42e('0x5b'));exports[_0xa42e('0x36')]=function(_0x4ad730,_0x3f56d4,_0x39af74){var _0x3c9423={'agent':{},'channel':'chat'};if(_0x4ad730[_0xa42e('0x57')]['id']){delete _0x4ad730[_0xa42e('0x57')]['id'];}_0x4ad730[_0xa42e('0x57')]['UserId']=_0x4ad730['body'][_0xa42e('0x62')]||_0x4ad730[_0xa42e('0x6a')]['id'];_0x3c9423[_0xa42e('0x63')]['id']=_0x4ad730[_0xa42e('0x57')]['UserId'];return db['ChatMessage'][_0xa42e('0x55')]({'where':{'id':_0x4ad730['params']['id'],'UserId':null}})[_0xa42e('0x23')](handleEntityNotFound(_0x3f56d4,null))[_0xa42e('0x23')](function(_0x1fb7f3){if(_0x1fb7f3){_0x3c9423[_0xa42e('0x28')]=_0x1fb7f3['get']({'plain':!![]});return db[_0xa42e('0x65')]['find']({'where':{'id':_0x1fb7f3['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3f56d4,null))[_0xa42e('0x23')](function(_0x247bd2){if(_0x247bd2){_0x3c9423[_0xa42e('0x68')]=_0x247bd2[_0xa42e('0x64')]({'plain':!![]});interaction_log[_0xa42e('0x24')](_0xa42e('0x7f'),_0x4ad730['user']['id'],_0x4ad730[_0xa42e('0x6a')]['name'],_0x4ad730['user']['role'],_0x3c9423[_0xa42e('0x68')]['id'],_0x4ad730[_0xa42e('0x57')]?JSON[_0xa42e('0x6b')](_0x4ad730[_0xa42e('0x57')]):'null');return respondWithRpcPromise('RejectMessage',_0xa42e('0x80'),_0x3c9423);}return null;})[_0xa42e('0x23')](function(_0x527df1){var _0x39ca05=_0xa42e('0x6e')+_0x527df1[_0xa42e('0x28')][_0xa42e('0x6f')];return db[_0xa42e('0x81')]['query'](_0x39ca05,{'type':db[_0xa42e('0x70')]['QueryTypes'][_0xa42e('0x72')],'raw':!![]})[_0xa42e('0x23')](function(_0x5982c3){return _0x5982c3;});})[_0xa42e('0x23')](function(_0x130d2c){if(_0x130d2c){_0x3c9423[_0xa42e('0x28')]['contact']=_0x130d2c[0x0];if(!_0x4ad730[_0xa42e('0x57')]['UserId'])return;return db[_0xa42e('0x73')][_0xa42e('0x55')]({'where':{'id':_0x4ad730[_0xa42e('0x57')][_0xa42e('0x62')],'role':'agent'},'attributes':['id',_0xa42e('0x3a'),_0xa42e('0x74'),_0xa42e('0x82'),'internal'],'raw':!![]});}return null;})[_0xa42e('0x23')](function(_0x5cd75f){if(!_0x5cd75f)return null;_0x3c9423[_0xa42e('0x28')][_0xa42e('0x63')]=_0x5cd75f;return _0x3c9423;})['then'](function(_0x4e19e0){if(_0x4e19e0){_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x77')]=util[_0xa42e('0x60')](_0xa42e('0x78'),_0x4ad730[_0xa42e('0x6a')][_0xa42e('0x3a')]);_0x4e19e0['message'][_0xa42e('0x79')]=_0x3c9423[_0xa42e('0x79')];_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x7a')]=_0x3c9423[_0xa42e('0x79')];_0x4e19e0[_0xa42e('0x28')][_0xa42e('0x7b')]='reject';respondWithRpcPromise(_0xa42e('0x7c'),'EventManager',{'event':_0xa42e('0x83'),'message':_['merge'](_0x3c9423[_0xa42e('0x28')],JSON['parse'](_0x3c9423['interaction']['formData']))},client9002);return _0x3c9423;}return null;})[_0xa42e('0x23')](respondWithResult(_0x3f56d4,null))[_0xa42e('0x2b')](handleError(_0x3f56d4,null));};
\ No newline at end of file
index 1b6b9f4..9da61bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4477=['hasOwnProperty','hook','exports','events','ChatMessage','setMaxListeners','update','remove','emit'];(function(_0x3f5bf5,_0x498786){var _0x59e229=function(_0x57aac2){while(--_0x57aac2){_0x3f5bf5['push'](_0x3f5bf5['shift']());}};_0x59e229(++_0x498786);}(_0x4477,0xc9));var _0x7447=function(_0x1c4291,_0x34896f){_0x1c4291=_0x1c4291-0x0;var _0x9acde6=_0x4477[_0x1c4291];return _0x9acde6;};'use strict';var EventEmitter=require(_0x7447('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x7447('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x7447('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7447('0x3'),'afterDestroy':_0x7447('0x4')};function emitEvent(_0x3dde9b){return function(_0x4b5be4,_0x3113e6,_0x1f2828){ChatMessageEvents[_0x7447('0x5')](_0x3dde9b+':'+_0x4b5be4['id'],_0x4b5be4);ChatMessageEvents['emit'](_0x3dde9b,_0x4b5be4);_0x1f2828(null);};}for(var e in events){if(events[_0x7447('0x6')](e)){var event=events[e];ChatMessage[_0x7447('0x7')](e,emitEvent(event));}}module[_0x7447('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0xd7ee=['hook','exports','events','../../mysqldb','ChatMessage','save','update','emit','hasOwnProperty'];(function(_0x275e0b,_0x4abb0a){var _0x32a74f=function(_0x212856){while(--_0x212856){_0x275e0b['push'](_0x275e0b['shift']());}};_0x32a74f(++_0x4abb0a);}(_0xd7ee,0x1cd));var _0xed7e=function(_0x13419e,_0x3e04e9){_0x13419e=_0x13419e-0x0;var _0x112be5=_0xd7ee[_0x13419e];return _0x112be5;};'use strict';var EventEmitter=require(_0xed7e('0x0'));var ChatMessage=require(_0xed7e('0x1'))['db'][_0xed7e('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xed7e('0x3'),'afterUpdate':_0xed7e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x7486c5){return function(_0x301127,_0x5e929f,_0x38e58c){ChatMessageEvents[_0xed7e('0x5')](_0x7486c5+':'+_0x301127['id'],_0x301127);ChatMessageEvents[_0xed7e('0x5')](_0x7486c5,_0x301127);_0x38e58c(null);};}for(var e in events){if(events[_0xed7e('0x6')](e)){var event=events[e];ChatMessage[_0xed7e('0x7')](e,emitEvent(event));}}module[_0xed7e('0x8')]=ChatMessageEvents;
\ No newline at end of file
index faccbba..fa7db0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b2=['exports','ChatMessage','chat_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','update','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes'];(function(_0x1055d3,_0x22ee14){var _0x34be22=function(_0x4ca4e5){while(--_0x4ca4e5){_0x1055d3['push'](_0x1055d3['shift']());}};_0x34be22(++_0x22ee14);}(_0x02b2,0x1b5));var _0x202b=function(_0x478eff,_0x287288){_0x478eff=_0x478eff-0x0;var _0x2105e3=_0x02b2[_0x478eff];return _0x2105e3;};'use strict';var _=require(_0x202b('0x0'));var util=require(_0x202b('0x1'));var logger=require(_0x202b('0x2'))(_0x202b('0x3'));var moment=require(_0x202b('0x4'));var BPromise=require(_0x202b('0x5'));var rp=require(_0x202b('0x6'));var fs=require('fs');var path=require(_0x202b('0x7'));var rimraf=require(_0x202b('0x8'));var config=require(_0x202b('0x9'));var attributes=require(_0x202b('0xa'));module[_0x202b('0xb')]=function(_0x37d19b,_0x2e8b26){return _0x37d19b['define'](_0x202b('0xc'),attributes,{'tableName':_0x202b('0xd'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x202b('0xe')],'type':_0x202b('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f07ad,_0x10dfe2,_0x939abe){var _0x137f5c=_0x37d19b[_0x202b('0x10')];var _0x11273f=_0x3f07ad['get']({'plain':!![]});if(_0x11273f[_0x202b('0x11')][_0x202b('0x12')]()==='in'||_0x11273f['direction'][_0x202b('0x12')]()===_0x202b('0x13')&&!_0x11273f[_0x202b('0x14')]&&!_[_0x202b('0x15')](_0x11273f[_0x202b('0x16')])){_0x137f5c[_0x202b('0x17')][_0x202b('0x18')]({'where':{'id':_0x11273f['ChatInteractionId']}})['then'](function(_0x28a1f1){if(_0x28a1f1){_0x28a1f1[_0x202b('0x19')]({'lastMsgAt':_0x11273f['createdAt'],'lastMsgDirection':_0x11273f[_0x202b('0x11')]['toLowerCase']()});}})['catch'](function(_0x38848c){console[_0x202b('0x1a')](_0x38848c);});}_0x939abe();}},'charset':'utf8mb4','collate':_0x202b('0x1b')});};
\ No newline at end of file
+var _0x809e=['bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT','get','direction','toLowerCase','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x441f4c,_0x21b828){var _0x23d9b0=function(_0x2d3ad6){while(--_0x2d3ad6){_0x441f4c['push'](_0x441f4c['shift']());}};_0x23d9b0(++_0x21b828);}(_0x809e,0x1e8));var _0xe809=function(_0x38f9ec,_0xcbb90d){_0x38f9ec=_0x38f9ec-0x0;var _0x36b2e7=_0x809e[_0x38f9ec];return _0x36b2e7;};'use strict';var _=require(_0xe809('0x0'));var util=require(_0xe809('0x1'));var logger=require(_0xe809('0x2'))(_0xe809('0x3'));var moment=require(_0xe809('0x4'));var BPromise=require(_0xe809('0x5'));var rp=require(_0xe809('0x6'));var fs=require('fs');var path=require(_0xe809('0x7'));var rimraf=require('rimraf');var config=require(_0xe809('0x8'));var attributes=require(_0xe809('0x9'));module[_0xe809('0xa')]=function(_0x5578b0,_0x26832e){return _0x5578b0[_0xe809('0xb')](_0xe809('0xc'),attributes,{'tableName':_0xe809('0xd'),'paranoid':![],'indexes':[{'name':_0xe809('0xe'),'fields':['body'],'type':_0xe809('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x474c98,_0x46514a,_0x3da1b0){var _0x252fd1=_0x5578b0['models'];var _0x10578f=_0x474c98[_0xe809('0x10')]({'plain':!![]});if(_0x10578f[_0xe809('0x11')][_0xe809('0x12')]()==='in'||_0x10578f[_0xe809('0x11')]['toLowerCase']()==='out'&&!_0x10578f['secret']&&!_[_0xe809('0x13')](_0x10578f[_0xe809('0x14')])){_0x252fd1[_0xe809('0x15')][_0xe809('0x16')]({'where':{'id':_0x10578f[_0xe809('0x17')]}})[_0xe809('0x18')](function(_0x2a642f){if(_0x2a642f){_0x2a642f['update']({'lastMsgAt':_0x10578f[_0xe809('0x19')],'lastMsgDirection':_0x10578f['direction']['toLowerCase']()});}})[_0xe809('0x1a')](function(_0x23471b){console[_0xe809('0x1b')](_0x23471b);});}_0x3da1b0();}},'charset':'utf8mb4','collate':_0xe809('0x1c')});};
\ No newline at end of file
index 994f5a9..28c87bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dde=['localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ChatMessage','create','body','options','raw','CreateChatMessage','debug','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x52849b,_0x190993){var _0x2413f8=function(_0x206e38){while(--_0x206e38){_0x52849b['push'](_0x52849b['shift']());}};_0x2413f8(++_0x190993);}(_0x2dde,0x164));var _0xe2dd=function(_0x3a7be7,_0x70dd6c){_0x3a7be7=_0x3a7be7-0x0;var _0x3e5dc8=_0x2dde[_0x3a7be7];return _0x3e5dc8;};'use strict';var _=require(_0xe2dd('0x0'));var util=require(_0xe2dd('0x1'));var moment=require('moment');var BPromise=require(_0xe2dd('0x2'));var rs=require(_0xe2dd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe2dd('0x4'))['db'];var utils=require(_0xe2dd('0x5'));var logger=require(_0xe2dd('0x6'))(_0xe2dd('0x7'));var config=require(_0xe2dd('0x8'));var jayson=require(_0xe2dd('0x9'));var client=jayson[_0xe2dd('0xa')][_0xe2dd('0xb')]({'port':0x232a});config[_0xe2dd('0xc')]=_[_0xe2dd('0xd')](config[_0xe2dd('0xc')],{'host':_0xe2dd('0xe'),'port':0x18eb});var socket=require(_0xe2dd('0xf'))(new Redis(config['redis']));require(_0xe2dd('0x10'))[_0xe2dd('0x11')](socket);function respondWithRpcPromise(_0x467931,_0x433529,_0x2d6075){return new BPromise(function(_0x383cec,_0x1cf151){return client[_0xe2dd('0x12')](_0x467931,_0x2d6075)[_0xe2dd('0x13')](function(_0x37cba4){logger[_0xe2dd('0x14')](_0xe2dd('0x15'),_0x433529,'request\x20sent');logger['debug'](_0xe2dd('0x16'),_0x433529,_0xe2dd('0x17'),JSON[_0xe2dd('0x18')](_0x37cba4));if(_0x37cba4[_0xe2dd('0x19')]){if(_0x37cba4[_0xe2dd('0x19')][_0xe2dd('0x1a')]===0x1f4){logger[_0xe2dd('0x19')](_0xe2dd('0x15'),_0x433529,_0x37cba4[_0xe2dd('0x19')]['message']);return _0x1cf151(_0x37cba4[_0xe2dd('0x19')][_0xe2dd('0x1b')]);}logger[_0xe2dd('0x19')]('ChatMessage,\x20%s,\x20%s',_0x433529,_0x37cba4[_0xe2dd('0x19')][_0xe2dd('0x1b')]);return _0x383cec(_0x37cba4[_0xe2dd('0x19')][_0xe2dd('0x1b')]);}else{logger['info'](_0xe2dd('0x15'),_0x433529,'request\x20sent');_0x383cec(_0x37cba4[_0xe2dd('0x1c')][_0xe2dd('0x1b')]);}})['catch'](function(_0xe95366){logger[_0xe2dd('0x19')](_0xe2dd('0x15'),_0x433529,_0xe95366);_0x1cf151(_0xe95366);});});}exports['CreateChatMessage']=function(_0x310d3b){var _0x2ebd6e=this;return new Promise(function(_0x42d172,_0x8672d6){return db[_0xe2dd('0x1d')][_0xe2dd('0x1e')](_0x310d3b[_0xe2dd('0x1f')],{'raw':_0x310d3b['options']?_0x310d3b[_0xe2dd('0x20')][_0xe2dd('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x52a55f){logger['info'](_0xe2dd('0x22'),_0x310d3b);logger[_0xe2dd('0x23')](_0xe2dd('0x22'),_0x310d3b,JSON[_0xe2dd('0x18')](_0x52a55f));_0x42d172(_0x52a55f);})[_0xe2dd('0x24')](function(_0x4f1f68){logger[_0xe2dd('0x19')](_0xe2dd('0x22'),_0x4f1f68['message'],_0x310d3b);_0x8672d6(_0x2ebd6e[_0xe2dd('0x19')](0x1f4,_0x4f1f68[_0xe2dd('0x1b')]));});});};
\ No newline at end of file
+var _0x6222=['catch','ChatMessage','create','options','CreateChatMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','register','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6222,0xb3));var _0x2622=function(_0x5a283d,_0x40f58a){_0x5a283d=_0x5a283d-0x0;var _0x1c5fef=_0x6222[_0x5a283d];return _0x1c5fef;};'use strict';var _=require(_0x2622('0x0'));var util=require(_0x2622('0x1'));var moment=require(_0x2622('0x2'));var BPromise=require('bluebird');var rs=require(_0x2622('0x3'));var fs=require('fs');var Redis=require(_0x2622('0x4'));var db=require(_0x2622('0x5'))['db'];var utils=require(_0x2622('0x6'));var logger=require(_0x2622('0x7'))(_0x2622('0x8'));var config=require('../../config/environment');var jayson=require(_0x2622('0x9'));var client=jayson[_0x2622('0xa')]['http']({'port':0x232a});config[_0x2622('0xb')]=_[_0x2622('0xc')](config[_0x2622('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2622('0xd'))(new Redis(config[_0x2622('0xb')]));require('./chatMessage.socket')[_0x2622('0xe')](socket);function respondWithRpcPromise(_0x1be18a,_0x305901,_0x305759){return new BPromise(function(_0x57fa85,_0x3d99cd){return client['request'](_0x1be18a,_0x305759)[_0x2622('0xf')](function(_0x44bc8b){logger[_0x2622('0x10')](_0x2622('0x11'),_0x305901,_0x2622('0x12'));logger[_0x2622('0x13')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x305901,'request\x20sent',JSON[_0x2622('0x14')](_0x44bc8b));if(_0x44bc8b[_0x2622('0x15')]){if(_0x44bc8b['error']['code']===0x1f4){logger[_0x2622('0x15')]('ChatMessage,\x20%s,\x20%s',_0x305901,_0x44bc8b['error'][_0x2622('0x16')]);return _0x3d99cd(_0x44bc8b[_0x2622('0x15')]['message']);}logger[_0x2622('0x15')]('ChatMessage,\x20%s,\x20%s',_0x305901,_0x44bc8b['error'][_0x2622('0x16')]);return _0x57fa85(_0x44bc8b[_0x2622('0x15')][_0x2622('0x16')]);}else{logger[_0x2622('0x10')](_0x2622('0x11'),_0x305901,'request\x20sent');_0x57fa85(_0x44bc8b[_0x2622('0x17')]['message']);}})[_0x2622('0x18')](function(_0x737186){logger['error']('ChatMessage,\x20%s,\x20%s',_0x305901,_0x737186);_0x3d99cd(_0x737186);});});}exports['CreateChatMessage']=function(_0x172c25){var _0x19f32e=this;return new Promise(function(_0x1915e4,_0x21ef00){return db[_0x2622('0x19')][_0x2622('0x1a')](_0x172c25['body'],{'raw':_0x172c25[_0x2622('0x1b')]?_0x172c25[_0x2622('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x2622('0xf')](function(_0x4ce4ff){logger['info'](_0x2622('0x1c'),_0x172c25);logger['debug'](_0x2622('0x1c'),_0x172c25,JSON[_0x2622('0x14')](_0x4ce4ff));_0x1915e4(_0x4ce4ff);})[_0x2622('0x18')](function(_0x2c8d13){logger[_0x2622('0x15')](_0x2622('0x1c'),_0x2c8d13[_0x2622('0x16')],_0x172c25);_0x21ef00(_0x19f32e[_0x2622('0x15')](0x1f4,_0x2c8d13[_0x2622('0x16')]));});});};
\ No newline at end of file
index 175d6e9..8665e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f4=['length','chatMessage:','./chatMessage.events','save','remove','update','register'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x86f4,0x18a));var _0x486f=function(_0x42e0c4,_0x2e4aff){_0x42e0c4=_0x42e0c4-0x0;var _0x364cef=_0x86f4[_0x42e0c4];return _0x364cef;};'use strict';var ChatMessageEvents=require(_0x486f('0x0'));var events=[_0x486f('0x1'),_0x486f('0x2'),_0x486f('0x3')];function createListener(_0x3e0b4f,_0x10339c){return function(_0x45067a){_0x10339c['emit'](_0x3e0b4f,_0x45067a);};}function removeListener(_0xf8d50f,_0x1539b1){return function(){ChatMessageEvents['removeListener'](_0xf8d50f,_0x1539b1);};}exports[_0x486f('0x4')]=function(_0x1adb27){for(var _0x39f767=0x0,_0x207201=events[_0x486f('0x5')];_0x39f767<_0x207201;_0x39f767++){var _0x3a0791=events[_0x39f767];var _0x5bfabc=createListener(_0x486f('0x6')+_0x3a0791,_0x1adb27);ChatMessageEvents['on'](_0x3a0791,_0x5bfabc);}};
\ No newline at end of file
+var _0x14f5=['update','emit','removeListener','register','length','chatMessage:','save'];(function(_0x1fcbcc,_0xadd85e){var _0x2f2228=function(_0x480b5e){while(--_0x480b5e){_0x1fcbcc['push'](_0x1fcbcc['shift']());}};_0x2f2228(++_0xadd85e);}(_0x14f5,0xae));var _0x514f=function(_0x45cdce,_0x5529e8){_0x45cdce=_0x45cdce-0x0;var _0x9c4a50=_0x14f5[_0x45cdce];return _0x9c4a50;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x514f('0x0'),'remove',_0x514f('0x1')];function createListener(_0x2e8eb2,_0x12d5e2){return function(_0x5281a3){_0x12d5e2[_0x514f('0x2')](_0x2e8eb2,_0x5281a3);};}function removeListener(_0x2443e8,_0x483c2a){return function(){ChatMessageEvents[_0x514f('0x3')](_0x2443e8,_0x483c2a);};}exports[_0x514f('0x4')]=function(_0xc2ca56){for(var _0x434452=0x0,_0x463985=events[_0x514f('0x5')];_0x434452<_0x463985;_0x434452++){var _0xdb9614=events[_0x434452];var _0x4a5497=createListener(_0x514f('0x6')+_0xdb9614,_0xc2ca56);ChatMessageEvents['on'](_0xdb9614,_0x4a5497);}};
\ No newline at end of file
index cad6030..280ecb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a5=['update','/:id/accept','accept','/:id/reject','reject','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','create','put'];(function(_0x42d3b0,_0x1415f1){var _0x18da15=function(_0x1d52c0){while(--_0x1d52c0){_0x42d3b0['push'](_0x42d3b0['shift']());}};_0x18da15(++_0x1415f1);}(_0x71a5,0x8d));var _0x571a=function(_0x1caf63,_0x13e3a5){_0x1caf63=_0x1caf63-0x0;var _0xd111c=_0x71a5[_0x1caf63];return _0xd111c;};'use strict';var multer=require(_0x571a('0x0'));var util=require('util');var path=require(_0x571a('0x1'));var timeout=require(_0x571a('0x2'));var express=require(_0x571a('0x3'));var router=express[_0x571a('0x4')]();var fs_extra=require(_0x571a('0x5'));var auth=require(_0x571a('0x6'));var interaction=require(_0x571a('0x7'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0x571a('0x8')]('/',auth[_0x571a('0x9')](),controller[_0x571a('0xa')]);router[_0x571a('0x8')](_0x571a('0xb'),auth[_0x571a('0x9')](),controller[_0x571a('0xc')]);router['get'](_0x571a('0xd'),auth[_0x571a('0x9')](),controller[_0x571a('0xe')]);router[_0x571a('0xf')]('/',auth['isAuthenticated'](),interaction[_0x571a('0x10')](_0x571a('0x11'),_0x571a('0x12')),controller[_0x571a('0x13')]);router[_0x571a('0x14')](_0x571a('0xd'),controller[_0x571a('0x15')]);router[_0x571a('0x14')](_0x571a('0x16'),auth[_0x571a('0x9')](),controller[_0x571a('0x17')]);router['put'](_0x571a('0x18'),auth[_0x571a('0x9')](),controller[_0x571a('0x19')]);router[_0x571a('0x1a')](_0x571a('0xd'),auth[_0x571a('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xb7ce=['Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','index','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','create','update','put','/:id/accept','isAuthenticated','reject','delete','exports','util','path','connect-timeout','express'];(function(_0x106210,_0x29f230){var _0xf02bb5=function(_0x53c49a){while(--_0x53c49a){_0x106210['push'](_0x106210['shift']());}};_0xf02bb5(++_0x29f230);}(_0xb7ce,0x15b));var _0xeb7c=function(_0x299f5e,_0x485b97){_0x299f5e=_0x299f5e-0x0;var _0x55fded=_0xb7ce[_0x299f5e];return _0x55fded;};'use strict';var multer=require('multer');var util=require(_0xeb7c('0x0'));var path=require(_0xeb7c('0x1'));var timeout=require(_0xeb7c('0x2'));var express=require(_0xeb7c('0x3'));var router=express[_0xeb7c('0x4')]();var fs_extra=require(_0xeb7c('0x5'));var auth=require(_0xeb7c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xeb7c('0x7'));var controller=require(_0xeb7c('0x8'));router[_0xeb7c('0x9')]('/',auth['isAuthenticated'](),controller[_0xeb7c('0xa')]);router[_0xeb7c('0x9')](_0xeb7c('0xb'),auth['isAuthenticated'](),controller[_0xeb7c('0xc')]);router[_0xeb7c('0x9')](_0xeb7c('0xd'),auth['isAuthenticated'](),controller[_0xeb7c('0xe')]);router[_0xeb7c('0xf')]('/',auth['isAuthenticated'](),interaction[_0xeb7c('0x10')](_0xeb7c('0x11'),_0xeb7c('0x12')),controller[_0xeb7c('0x13')]);router['put'](_0xeb7c('0xd'),controller[_0xeb7c('0x14')]);router[_0xeb7c('0x15')](_0xeb7c('0x16'),auth['isAuthenticated'](),controller['accept']);router['put']('/:id/reject',auth[_0xeb7c('0x17')](),controller[_0xeb7c('0x18')]);router[_0xeb7c('0x19')](_0xeb7c('0xd'),auth[_0xeb7c('0x17')](),controller['destroy']);module[_0xeb7c('0x1a')]=router;
\ No newline at end of file
index ea7ef0c..590ecce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['medium','sequelize','TEXT'];(function(_0x260231,_0x1dc403){var _0x24f97e=function(_0x330d9d){while(--_0x330d9d){_0x260231['push'](_0x260231['shift']());}};_0x24f97e(++_0x1dc403);}(_0xb10b,0x12a));var _0xbb10=function(_0x28e27c,_0x2216ff){_0x28e27c=_0x28e27c-0x0;var _0x45ae93=_0xb10b[_0x28e27c];return _0x45ae93;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'body':{'type':Sequelize[_0xbb10('0x1')](_0xbb10('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xbb10('0x1')]('medium'),'allowNull':![]}};
\ No newline at end of file
+var _0x5f66=['medium','TEXT','exports'];(function(_0xf1e681,_0x566433){var _0x54bfd7=function(_0x41725c){while(--_0x41725c){_0xf1e681['push'](_0xf1e681['shift']());}};_0x54bfd7(++_0x566433);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'body':{'type':Sequelize['TEXT'](_0x65f6('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x65f6('0x2')](_0x65f6('0x1')),'allowNull':![]}};
\ No newline at end of file
index 791e20b..273268d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x21a4c1,_0x36fdb3){var _0x3cfbcf=function(_0x4f1221){while(--_0x4f1221){_0x21a4c1['push'](_0x21a4c1['shift']());}};_0x3cfbcf(++_0x36fdb3);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+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(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x7a54,0x106));var _0x47a5=function(_0x25983d,_0x165a82){_0x25983d=_0x25983d-0x0;var _0x16b797=_0x7a54[_0x25983d];return _0x16b797;};'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 5003495..8a0a762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf79=['hook','events','ChatOfflineMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xaf79,0x1f0));var _0x9af7=function(_0x4ee893,_0x3d73bb){_0x4ee893=_0x4ee893-0x0;var _0x31382c=_0xaf79[_0x4ee893];return _0x31382c;};'use strict';var EventEmitter=require(_0x9af7('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x9af7('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x9af7('0x2')](0x0);var events={'afterCreate':_0x9af7('0x3'),'afterUpdate':_0x9af7('0x4'),'afterDestroy':_0x9af7('0x5')};function emitEvent(_0x4c8e0b){return function(_0x4818e2,_0x526874,_0x5b50be){ChatOfflineMessageEvents[_0x9af7('0x6')](_0x4c8e0b+':'+_0x4818e2['id'],_0x4818e2);ChatOfflineMessageEvents[_0x9af7('0x6')](_0x4c8e0b,_0x4818e2);_0x5b50be(null);};}for(var e in events){if(events[_0x9af7('0x7')](e)){var event=events[e];ChatOfflineMessage[_0x9af7('0x8')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x91c6=['hook','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x585b69,_0x110cdf){var _0x2a8c6f=function(_0x82b603){while(--_0x82b603){_0x585b69['push'](_0x585b69['shift']());}};_0x2a8c6f(++_0x110cdf);}(_0x91c6,0xf9));var _0x691c=function(_0x15f876,_0x2e8f05){_0x15f876=_0x15f876-0x0;var _0x255c66=_0x91c6[_0x15f876];return _0x255c66;};'use strict';var EventEmitter=require(_0x691c('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x691c('0x1')](0x0);var events={'afterCreate':_0x691c('0x2'),'afterUpdate':_0x691c('0x3'),'afterDestroy':_0x691c('0x4')};function emitEvent(_0xa7799c){return function(_0x4944ce,_0xa14528,_0x10c5df){ChatOfflineMessageEvents[_0x691c('0x5')](_0xa7799c+':'+_0x4944ce['id'],_0x4944ce);ChatOfflineMessageEvents[_0x691c('0x5')](_0xa7799c,_0x4944ce);_0x10c5df(null);};}for(var e in events){if(events[_0x691c('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x691c('0x7')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
index fc6944d..2d0e116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa244=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa244,0x14a));var _0x4a24=function(_0x4a668a,_0x50b238){_0x4a668a=_0x4a668a-0x0;var _0x250642=_0xa244[_0x4a668a];return _0x250642;};'use strict';var attributes=require(_0x4a24('0x0'));module[_0x4a24('0x1')]=function(_0x1c582d){return _0x1c582d[_0x4a24('0x2')](_0x4a24('0x3'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4a24('0x4'),'collate':_0x4a24('0x5')});};
\ No newline at end of file
+var _0x4624=['chat_offline_messages','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define'];(function(_0x121350,_0x361f4d){var _0x2e21c7=function(_0x3b6d51){while(--_0x3b6d51){_0x121350['push'](_0x121350['shift']());}};_0x2e21c7(++_0x361f4d);}(_0x4624,0x110));var _0x4462=function(_0x51980b,_0x2fed27){_0x51980b=_0x51980b-0x0;var _0x22dbf4=_0x4624[_0x51980b];return _0x22dbf4;};'use strict';var attributes=require(_0x4462('0x0'));module[_0x4462('0x1')]=function(_0x44154d){return _0x44154d[_0x4462('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x4462('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4462('0x4')});};
\ No newline at end of file
index d399e9e..78f7140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x890c=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x890c,0xf1));var _0xc890=function(_0x2bc80d,_0x2c6a09){_0x2bc80d=_0x2bc80d-0x0;var _0x1d6b7e=_0x890c[_0x2bc80d];return _0x1d6b7e;};'use strict';var _=require(_0xc890('0x0'));var util=require(_0xc890('0x1'));var moment=require('moment');var BPromise=require(_0xc890('0x2'));var rs=require(_0xc890('0x3'));var fs=require('fs');var Redis=require(_0xc890('0x4'));var db=require(_0xc890('0x5'))['db'];var utils=require(_0xc890('0x6'));var logger=require(_0xc890('0x7'))(_0xc890('0x8'));var config=require(_0xc890('0x9'));var jayson=require(_0xc890('0xa'));var client=jayson[_0xc890('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bd38e,_0x57b65c,_0x4cfb0b){return new BPromise(function(_0x58f54e,_0x41b680){return client['request'](_0x1bd38e,_0x4cfb0b)['then'](function(_0xd530b5){logger[_0xc890('0xc')](_0xc890('0xd'),_0x57b65c,_0xc890('0xe'));logger[_0xc890('0xf')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x57b65c,_0xc890('0xe'),JSON[_0xc890('0x10')](_0xd530b5));if(_0xd530b5[_0xc890('0x11')]){if(_0xd530b5[_0xc890('0x11')][_0xc890('0x12')]===0x1f4){logger[_0xc890('0x11')](_0xc890('0xd'),_0x57b65c,_0xd530b5[_0xc890('0x11')][_0xc890('0x13')]);return _0x41b680(_0xd530b5[_0xc890('0x11')][_0xc890('0x13')]);}logger[_0xc890('0x11')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57b65c,_0xd530b5[_0xc890('0x11')][_0xc890('0x13')]);return _0x58f54e(_0xd530b5[_0xc890('0x11')]['message']);}else{logger[_0xc890('0xc')](_0xc890('0xd'),_0x57b65c,_0xc890('0xe'));_0x58f54e(_0xd530b5[_0xc890('0x14')][_0xc890('0x13')]);}})[_0xc890('0x15')](function(_0x216382){logger[_0xc890('0x11')](_0xc890('0xd'),_0x57b65c,_0x216382);_0x41b680(_0x216382);});});}
\ No newline at end of file
+var _0xc4a7=['code','message','result','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','stringify','error'];(function(_0x1a8f3e,_0x5bc3ff){var _0x1c8b1c=function(_0x37c049){while(--_0x37c049){_0x1a8f3e['push'](_0x1a8f3e['shift']());}};_0x1c8b1c(++_0x5bc3ff);}(_0xc4a7,0x1ac));var _0x7c4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4a7[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x7c4a('0x0'));var util=require('util');var moment=require(_0x7c4a('0x1'));var BPromise=require(_0x7c4a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7c4a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c4a('0x4'));var logger=require(_0x7c4a('0x5'))(_0x7c4a('0x6'));var config=require(_0x7c4a('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7c4a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b0b97,_0x5eb0cd,_0x347403){return new BPromise(function(_0x4e1692,_0x480d7f){return client[_0x7c4a('0x9')](_0x3b0b97,_0x347403)['then'](function(_0x5a23c9){logger[_0x7c4a('0xa')](_0x7c4a('0xb'),_0x5eb0cd,'request\x20sent');logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x5eb0cd,'request\x20sent',JSON[_0x7c4a('0xc')](_0x5a23c9));if(_0x5a23c9['error']){if(_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xe')]===0x1f4){logger[_0x7c4a('0xd')](_0x7c4a('0xb'),_0x5eb0cd,_0x5a23c9['error'][_0x7c4a('0xf')]);return _0x480d7f(_0x5a23c9[_0x7c4a('0xd')]['message']);}logger[_0x7c4a('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0x5eb0cd,_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xf')]);return _0x4e1692(_0x5a23c9[_0x7c4a('0xd')][_0x7c4a('0xf')]);}else{logger[_0x7c4a('0xa')](_0x7c4a('0xb'),_0x5eb0cd,'request\x20sent');_0x4e1692(_0x5a23c9[_0x7c4a('0x10')][_0x7c4a('0xf')]);}})['catch'](function(_0x3cb2df){logger[_0x7c4a('0xd')](_0x7c4a('0xb'),_0x5eb0cd,_0x3cb2df);_0x480d7f(_0x3cb2df);});});}
\ No newline at end of file
index 5e7125e..a660d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b02=['create','put','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x25a628,_0x4a4f07){var _0x2edd00=function(_0x27b1ba){while(--_0x27b1ba){_0x25a628['push'](_0x25a628['shift']());}};_0x2edd00(++_0x4a4f07);}(_0x1b02,0x141));var _0x21b0=function(_0x4df7b3,_0xc1cadb){_0x4df7b3=_0x4df7b3-0x0;var _0x3dd819=_0x1b02[_0x4df7b3];return _0x3dd819;};'use strict';var multer=require('multer');var util=require(_0x21b0('0x0'));var path=require(_0x21b0('0x1'));var timeout=require(_0x21b0('0x2'));var express=require(_0x21b0('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x21b0('0x4'));var interaction=require(_0x21b0('0x5'));var config=require('../../config/environment');var controller=require(_0x21b0('0x6'));router[_0x21b0('0x7')]('/',auth[_0x21b0('0x8')](),controller[_0x21b0('0x9')]);router[_0x21b0('0x7')](_0x21b0('0xa'),auth['isAuthenticated'](),controller[_0x21b0('0xb')]);router[_0x21b0('0x7')](_0x21b0('0xc'),auth[_0x21b0('0x8')](),controller[_0x21b0('0xd')]);router[_0x21b0('0xe')]('/',auth['isAuthenticated'](),controller[_0x21b0('0xf')]);router[_0x21b0('0x10')](_0x21b0('0xc'),auth[_0x21b0('0x8')](),controller[_0x21b0('0x11')]);router[_0x21b0('0x12')]('/:id',auth[_0x21b0('0x8')](),controller[_0x21b0('0x13')]);module[_0x21b0('0x14')]=router;
\ No newline at end of file
+var _0x2cc7=['delete','destroy','exports','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update'];(function(_0x9dc9b7,_0x35e059){var _0x22e28e=function(_0x5e0e18){while(--_0x5e0e18){_0x9dc9b7['push'](_0x9dc9b7['shift']());}};_0x22e28e(++_0x35e059);}(_0x2cc7,0xa3));var _0x72cc=function(_0x19a8bd,_0x498641){_0x19a8bd=_0x19a8bd-0x0;var _0x16199b=_0x2cc7[_0x19a8bd];return _0x16199b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x72cc('0x0'));var timeout=require(_0x72cc('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x72cc('0x2'));var interaction=require(_0x72cc('0x3'));var config=require(_0x72cc('0x4'));var controller=require(_0x72cc('0x5'));router['get']('/',auth[_0x72cc('0x6')](),controller[_0x72cc('0x7')]);router[_0x72cc('0x8')](_0x72cc('0x9'),auth[_0x72cc('0x6')](),controller[_0x72cc('0xa')]);router[_0x72cc('0x8')](_0x72cc('0xb'),auth[_0x72cc('0x6')](),controller[_0x72cc('0xc')]);router[_0x72cc('0xd')]('/',auth['isAuthenticated'](),controller[_0x72cc('0xe')]);router[_0x72cc('0xf')]('/:id',auth[_0x72cc('0x6')](),controller[_0x72cc('0x10')]);router[_0x72cc('0x11')](_0x72cc('0xb'),auth['isAuthenticated'](),controller[_0x72cc('0x12')]);module[_0x72cc('0x13')]=router;
\ No newline at end of file
index 2a6ab78..10bcd3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1173=['timeout','INTEGER','exports','STRING','mouseOver'];(function(_0x1a7f10,_0x517a22){var _0x1eeefc=function(_0x2bc19b){while(--_0x2bc19b){_0x1a7f10['push'](_0x1a7f10['shift']());}};_0x1eeefc(++_0x517a22);}(_0x1173,0x1ce));var _0x3117=function(_0x59df9c,_0x5668b9){_0x59df9c=_0x59df9c-0x0;var _0x248b8a=_0x1173[_0x59df9c];return _0x248b8a;};'use strict';var Sequelize=require('sequelize');module[_0x3117('0x0')]={'name':{'type':Sequelize[_0x3117('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x3117('0x2'),_0x3117('0x3')),'defaultValue':_0x3117('0x2')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x3117('0x4')]}};
\ No newline at end of file
+var _0xe0f7=['ENUM','mouseOver','sequelize','STRING'];(function(_0x23e6bb,_0x5c2d69){var _0x1e3b4c=function(_0x1afc46){while(--_0x1afc46){_0x23e6bb['push'](_0x23e6bb['shift']());}};_0x1e3b4c(++_0x5c2d69);}(_0xe0f7,0x142));var _0x7e0f=function(_0x4495f6,_0xaac6bd){_0x4495f6=_0x4495f6-0x0;var _0x3856a8=_0xe0f7[_0x4495f6];return _0x3856a8;};'use strict';var Sequelize=require(_0x7e0f('0x0'));module['exports']={'name':{'type':Sequelize[_0x7e0f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7e0f('0x2')](_0x7e0f('0x3'),'timeout'),'defaultValue':_0x7e0f('0x3')},'selector':{'type':Sequelize[_0x7e0f('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 125105e..d8e7dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861c=['reject','save','update','then','destroy','sendStatus','error','send','show','params','keys','ChatProactiveAction','rawAttributes','filters','intersection','model','query','fields','attributes','length','include','merge','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','undefined','set','Content-Range','json','apply'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x861c,0xdb));var _0xc861=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x861c[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0xc861('0x0'));var rimraf=require(_0xc861('0x1'));var zipdir=require(_0xc861('0x2'));var jsonpatch=require(_0xc861('0x3'));var rp=require(_0xc861('0x4'));var moment=require(_0xc861('0x5'));var BPromise=require(_0xc861('0x6'));var Mustache=require(_0xc861('0x7'));var util=require(_0xc861('0x8'));var path=require(_0xc861('0x9'));var sox=require(_0xc861('0xa'));var csv=require(_0xc861('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc861('0xc'));var _=require(_0xc861('0xd'));var squel=require(_0xc861('0xe'));var crypto=require(_0xc861('0xf'));var jsforce=require(_0xc861('0x10'));var deskjs=require(_0xc861('0x11'));var toCsv=require(_0xc861('0xb'));var querystring=require(_0xc861('0x12'));var Papa=require(_0xc861('0x13'));var Redis=require(_0xc861('0x14'));var authService=require(_0xc861('0x15'));var qs=require(_0xc861('0x16'));var as=require(_0xc861('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc861('0x18'))(_0xc861('0x19'));var utils=require(_0xc861('0x1a'));var config=require(_0xc861('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xc861('0x1c'))['db'];function respondWithStatusCode(_0x2404f6,_0x1f4dcb){_0x1f4dcb=_0x1f4dcb||0xcc;return function(_0x145b5f){if(_0x145b5f){return _0x2404f6['sendStatus'](_0x1f4dcb);}return _0x2404f6['status'](_0x1f4dcb)[_0xc861('0x1d')]();};}function respondWithResult(_0x289a68,_0x5f3c1a){_0x5f3c1a=_0x5f3c1a||0xc8;return function(_0x190fab){if(_0x190fab){return _0x289a68[_0xc861('0x1e')](_0x5f3c1a)['json'](_0x190fab);}};}function respondWithFilteredResult(_0x21941e,_0x3ca46d){return function(_0x2e2b94){if(_0x2e2b94){var _0xd8e34a=typeof _0x3ca46d[_0xc861('0x1f')]===_0xc861('0x20')&&typeof _0x3ca46d['limit']==='undefined';var _0x44a1fb=_0x2e2b94['count'];var _0x5a2ecd=_0xd8e34a?0x0:_0x3ca46d[_0xc861('0x1f')];var _0x42d2b9=_0xd8e34a?_0x2e2b94['count']:_0x3ca46d[_0xc861('0x1f')]+_0x3ca46d['limit'];var _0x1613ee;if(_0x42d2b9>=_0x44a1fb){_0x42d2b9=_0x44a1fb;_0x1613ee=0xc8;}else{_0x1613ee=0xce;}_0x21941e[_0xc861('0x1e')](_0x1613ee);return _0x21941e[_0xc861('0x21')](_0xc861('0x22'),_0x5a2ecd+'-'+_0x42d2b9+'/'+_0x44a1fb)[_0xc861('0x23')](_0x2e2b94);}return null;};}function patchUpdates(_0x331516){return function(_0x30ebe4){try{jsonpatch[_0xc861('0x24')](_0x30ebe4,_0x331516,!![]);}catch(_0x3cbd2d){return BPromise[_0xc861('0x25')](_0x3cbd2d);}return _0x30ebe4[_0xc861('0x26')]();};}function saveUpdates(_0x6b9d80,_0x5c4c35){return function(_0xa9d8bc){if(_0xa9d8bc){return _0xa9d8bc[_0xc861('0x27')](_0x6b9d80)[_0xc861('0x28')](function(_0x4cfd43){return _0x4cfd43;});}return null;};}function removeEntity(_0x2cab96,_0xd1b342){return function(_0x172b90){if(_0x172b90){return _0x172b90[_0xc861('0x29')]()[_0xc861('0x28')](function(){_0x2cab96[_0xc861('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11abae,_0x1bd814){return function(_0x9dc3){if(!_0x9dc3){_0x11abae[_0xc861('0x2a')](0x194);}return _0x9dc3;};}function handleError(_0x38a737,_0x1cefa7){_0x1cefa7=_0x1cefa7||0x1f4;return function(_0x48cf94){logger[_0xc861('0x2b')](_0x48cf94['stack']);if(_0x48cf94['name']){delete _0x48cf94['name'];}_0x38a737[_0xc861('0x1e')](_0x1cefa7)[_0xc861('0x2c')](_0x48cf94);};}exports[_0xc861('0x2d')]=function(_0x30b9f4,_0x2f3790){var _0xff9c32={'raw':!![],'where':{'id':_0x30b9f4[_0xc861('0x2e')]['id']}},_0x431695={};_0x431695['model']=_[_0xc861('0x2f')](db[_0xc861('0x30')][_0xc861('0x31')]);_0x431695['query']=_[_0xc861('0x2f')](_0x30b9f4['query']);_0x431695[_0xc861('0x32')]=_[_0xc861('0x33')](_0x431695[_0xc861('0x34')],_0x431695[_0xc861('0x35')]);_0xff9c32['attributes']=_[_0xc861('0x33')](_0x431695[_0xc861('0x34')],qs[_0xc861('0x36')](_0x30b9f4[_0xc861('0x35')][_0xc861('0x36')]));_0xff9c32[_0xc861('0x37')]=_0xff9c32[_0xc861('0x37')][_0xc861('0x38')]?_0xff9c32[_0xc861('0x37')]:_0x431695['model'];if(_0x30b9f4[_0xc861('0x35')]['includeAll']){_0xff9c32[_0xc861('0x39')]=[{'all':!![]}];}_0xff9c32=_[_0xc861('0x3a')]({},_0xff9c32,_0x30b9f4[_0xc861('0x3b')]);return db[_0xc861('0x30')][_0xc861('0x3c')](_0xff9c32)[_0xc861('0x28')](handleEntityNotFound(_0x2f3790,null))[_0xc861('0x28')](respondWithResult(_0x2f3790,null))[_0xc861('0x3d')](handleError(_0x2f3790,null));};exports[_0xc861('0x3e')]=function(_0xae9e69,_0x26d9a3){return db[_0xc861('0x30')]['create'](_0xae9e69[_0xc861('0x3f')],{})[_0xc861('0x28')](respondWithResult(_0x26d9a3,0xc9))[_0xc861('0x3d')](handleError(_0x26d9a3,null));};exports[_0xc861('0x27')]=function(_0x43e5e9,_0x34c287){if(_0x43e5e9[_0xc861('0x3f')]['id']){delete _0x43e5e9[_0xc861('0x3f')]['id'];}return db[_0xc861('0x30')][_0xc861('0x3c')]({'where':{'id':_0x43e5e9['params']['id']}})[_0xc861('0x28')](handleEntityNotFound(_0x34c287,null))['then'](saveUpdates(_0x43e5e9[_0xc861('0x3f')],null))[_0xc861('0x28')](respondWithResult(_0x34c287,null))[_0xc861('0x3d')](handleError(_0x34c287,null));};exports[_0xc861('0x29')]=function(_0x4b409c,_0x5aa93e){return db[_0xc861('0x30')]['find']({'where':{'id':_0x4b409c[_0xc861('0x2e')]['id']}})[_0xc861('0x28')](handleEntityNotFound(_0x5aa93e,null))[_0xc861('0x28')](removeEntity(_0x5aa93e,null))['catch'](handleError(_0x5aa93e,null));};
\ No newline at end of file
+var _0x85d8=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','end','stack','name','send','show','params','keys','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x2ee0d6,_0x2562ff){var _0x299d21=function(_0x16cb6c){while(--_0x16cb6c){_0x2ee0d6['push'](_0x2ee0d6['shift']());}};_0x299d21(++_0x2562ff);}(_0x85d8,0x1b0));var _0x885d=function(_0x410140,_0x57d529){_0x410140=_0x410140-0x0;var _0xf0227e=_0x85d8[_0x410140];return _0xf0227e;};'use strict';var emlformat=require(_0x885d('0x0'));var rimraf=require(_0x885d('0x1'));var zipdir=require(_0x885d('0x2'));var jsonpatch=require(_0x885d('0x3'));var rp=require(_0x885d('0x4'));var moment=require('moment');var BPromise=require(_0x885d('0x5'));var Mustache=require(_0x885d('0x6'));var util=require(_0x885d('0x7'));var path=require(_0x885d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x885d('0x9'));var fs=require('fs');var fs_extra=require(_0x885d('0xa'));var _=require(_0x885d('0xb'));var squel=require(_0x885d('0xc'));var crypto=require(_0x885d('0xd'));var jsforce=require(_0x885d('0xe'));var deskjs=require(_0x885d('0xf'));var toCsv=require(_0x885d('0x10'));var querystring=require(_0x885d('0x11'));var Papa=require(_0x885d('0x12'));var Redis=require(_0x885d('0x13'));var authService=require(_0x885d('0x14'));var qs=require(_0x885d('0x15'));var as=require(_0x885d('0x16'));var hardwareService=require(_0x885d('0x17'));var logger=require(_0x885d('0x18'))(_0x885d('0x19'));var utils=require(_0x885d('0x1a'));var config=require(_0x885d('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28b541,_0x127cd8){_0x127cd8=_0x127cd8||0xcc;return function(_0x495a56){if(_0x495a56){return _0x28b541[_0x885d('0x1c')](_0x127cd8);}return _0x28b541[_0x885d('0x1d')](_0x127cd8)['end']();};}function respondWithResult(_0x527a40,_0x466be5){_0x466be5=_0x466be5||0xc8;return function(_0x3a0ab7){if(_0x3a0ab7){return _0x527a40[_0x885d('0x1d')](_0x466be5)[_0x885d('0x1e')](_0x3a0ab7);}};}function respondWithFilteredResult(_0x2ecb5c,_0x1b837f){return function(_0x5d8bcd){if(_0x5d8bcd){var _0x594a29=typeof _0x1b837f[_0x885d('0x1f')]===_0x885d('0x20')&&typeof _0x1b837f[_0x885d('0x21')]===_0x885d('0x20');var _0x22c285=_0x5d8bcd[_0x885d('0x22')];var _0x1e2a42=_0x594a29?0x0:_0x1b837f[_0x885d('0x1f')];var _0x4b565a=_0x594a29?_0x5d8bcd[_0x885d('0x22')]:_0x1b837f[_0x885d('0x1f')]+_0x1b837f[_0x885d('0x21')];var _0x3cadff;if(_0x4b565a>=_0x22c285){_0x4b565a=_0x22c285;_0x3cadff=0xc8;}else{_0x3cadff=0xce;}_0x2ecb5c[_0x885d('0x1d')](_0x3cadff);return _0x2ecb5c['set'](_0x885d('0x23'),_0x1e2a42+'-'+_0x4b565a+'/'+_0x22c285)[_0x885d('0x1e')](_0x5d8bcd);}return null;};}function patchUpdates(_0x55738d){return function(_0x175e05){try{jsonpatch['apply'](_0x175e05,_0x55738d,!![]);}catch(_0x1bca4b){return BPromise[_0x885d('0x24')](_0x1bca4b);}return _0x175e05[_0x885d('0x25')]();};}function saveUpdates(_0x90589,_0x261c0f){return function(_0x2e76ef){if(_0x2e76ef){return _0x2e76ef[_0x885d('0x26')](_0x90589)[_0x885d('0x27')](function(_0x598b20){return _0x598b20;});}return null;};}function removeEntity(_0x38af62,_0x2b7e32){return function(_0x3032ac){if(_0x3032ac){return _0x3032ac['destroy']()[_0x885d('0x27')](function(){_0x38af62[_0x885d('0x1d')](0xcc)[_0x885d('0x28')]();});}};}function handleEntityNotFound(_0x7dc85b,_0x284faf){return function(_0x3f0955){if(!_0x3f0955){_0x7dc85b[_0x885d('0x1c')](0x194);}return _0x3f0955;};}function handleError(_0x32754e,_0x402440){_0x402440=_0x402440||0x1f4;return function(_0x54e121){logger['error'](_0x54e121[_0x885d('0x29')]);if(_0x54e121['name']){delete _0x54e121[_0x885d('0x2a')];}_0x32754e[_0x885d('0x1d')](_0x402440)[_0x885d('0x2b')](_0x54e121);};}exports[_0x885d('0x2c')]=function(_0x16f4c1,_0x4589ee){var _0x537886={'raw':!![],'where':{'id':_0x16f4c1[_0x885d('0x2d')]['id']}},_0x172d26={};_0x172d26['model']=_[_0x885d('0x2e')](db['ChatProactiveAction']['rawAttributes']);_0x172d26[_0x885d('0x2f')]=_['keys'](_0x16f4c1[_0x885d('0x2f')]);_0x172d26[_0x885d('0x30')]=_[_0x885d('0x31')](_0x172d26[_0x885d('0x32')],_0x172d26[_0x885d('0x2f')]);_0x537886[_0x885d('0x33')]=_['intersection'](_0x172d26[_0x885d('0x32')],qs[_0x885d('0x34')](_0x16f4c1[_0x885d('0x2f')][_0x885d('0x34')]));_0x537886[_0x885d('0x33')]=_0x537886['attributes'][_0x885d('0x35')]?_0x537886[_0x885d('0x33')]:_0x172d26['model'];if(_0x16f4c1[_0x885d('0x2f')][_0x885d('0x36')]){_0x537886[_0x885d('0x37')]=[{'all':!![]}];}_0x537886=_[_0x885d('0x38')]({},_0x537886,_0x16f4c1[_0x885d('0x39')]);return db[_0x885d('0x3a')][_0x885d('0x3b')](_0x537886)[_0x885d('0x27')](handleEntityNotFound(_0x4589ee,null))['then'](respondWithResult(_0x4589ee,null))['catch'](handleError(_0x4589ee,null));};exports['create']=function(_0x488a93,_0x3d6ce7){return db[_0x885d('0x3a')]['create'](_0x488a93[_0x885d('0x3c')],{})['then'](respondWithResult(_0x3d6ce7,0xc9))[_0x885d('0x3d')](handleError(_0x3d6ce7,null));};exports[_0x885d('0x26')]=function(_0x3bc1cc,_0xfc0dbe){if(_0x3bc1cc[_0x885d('0x3c')]['id']){delete _0x3bc1cc[_0x885d('0x3c')]['id'];}return db[_0x885d('0x3a')]['find']({'where':{'id':_0x3bc1cc['params']['id']}})[_0x885d('0x27')](handleEntityNotFound(_0xfc0dbe,null))['then'](saveUpdates(_0x3bc1cc[_0x885d('0x3c')],null))['then'](respondWithResult(_0xfc0dbe,null))['catch'](handleError(_0xfc0dbe,null));};exports[_0x885d('0x3e')]=function(_0x3974d2,_0x112e9a){return db[_0x885d('0x3a')][_0x885d('0x3b')]({'where':{'id':_0x3974d2[_0x885d('0x2d')]['id']}})[_0x885d('0x27')](handleEntityNotFound(_0x112e9a,null))[_0x885d('0x27')](removeEntity(_0x112e9a,null))[_0x885d('0x3d')](handleError(_0x112e9a,null));};
\ No newline at end of file
index 78dfeea..4f0b95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a88=['ChatProactiveAction','util','bluebird','request-promise','rimraf','../../config/environment','define'];(function(_0x469ac7,_0x38e416){var _0x22f3b0=function(_0x1a1447){while(--_0x1a1447){_0x469ac7['push'](_0x469ac7['shift']());}};_0x22f3b0(++_0x38e416);}(_0x4a88,0x1b3));var _0x84a8=function(_0x10dfad,_0x5e59df){_0x10dfad=_0x10dfad-0x0;var _0x35ff8f=_0x4a88[_0x10dfad];return _0x35ff8f;};'use strict';var _=require('lodash');var util=require(_0x84a8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x84a8('0x1'));var rp=require(_0x84a8('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x84a8('0x3'));var config=require(_0x84a8('0x4'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x315085,_0x364973){return _0x315085[_0x84a8('0x5')](_0x84a8('0x6'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3594=['ChatProactiveAction','chat_proactive_actions','util','../../config/logger','bluebird','request-promise','path','rimraf','./chatProactiveAction.attributes','exports'];(function(_0x20a817,_0x76533f){var _0x5510ae=function(_0x31b869){while(--_0x31b869){_0x20a817['push'](_0x20a817['shift']());}};_0x5510ae(++_0x76533f);}(_0x3594,0xac));var _0x4359=function(_0x24f2e9,_0x4e08e1){_0x24f2e9=_0x24f2e9-0x0;var _0x59272a=_0x3594[_0x24f2e9];return _0x59272a;};'use strict';var _=require('lodash');var util=require(_0x4359('0x0'));var logger=require(_0x4359('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4359('0x2'));var rp=require(_0x4359('0x3'));var fs=require('fs');var path=require(_0x4359('0x4'));var rimraf=require(_0x4359('0x5'));var config=require('../../config/environment');var attributes=require(_0x4359('0x6'));module[_0x4359('0x7')]=function(_0x4edeec,_0x567cfc){return _0x4edeec['define'](_0x4359('0x8'),attributes,{'tableName':_0x4359('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c08659..d094e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ff=['then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x6b515b,_0x5a7fd6){var _0x4dc2cd=function(_0x1c54ae){while(--_0x1c54ae){_0x6b515b['push'](_0x6b515b['shift']());}};_0x4dc2cd(++_0x5a7fd6);}(_0xe5ff,0xc3));var _0xfe5f=function(_0x58c934,_0x231623){_0x58c934=_0x58c934-0x0;var _0x3af7be=_0xe5ff[_0x58c934];return _0x3af7be;};'use strict';var _=require('lodash');var util=require(_0xfe5f('0x0'));var moment=require(_0xfe5f('0x1'));var BPromise=require(_0xfe5f('0x2'));var rs=require(_0xfe5f('0x3'));var fs=require('fs');var Redis=require(_0xfe5f('0x4'));var db=require(_0xfe5f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfe5f('0x6'))(_0xfe5f('0x7'));var config=require('../../config/environment');var jayson=require(_0xfe5f('0x8'));var client=jayson[_0xfe5f('0x9')][_0xfe5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x580de1,_0x3c58e6,_0x513ee8){return new BPromise(function(_0x135917,_0x520524){return client[_0xfe5f('0xb')](_0x580de1,_0x513ee8)[_0xfe5f('0xc')](function(_0xf2c777){logger[_0xfe5f('0xd')](_0xfe5f('0xe'),_0x3c58e6,_0xfe5f('0xf'));logger[_0xfe5f('0x10')](_0xfe5f('0x11'),_0x3c58e6,'request\x20sent',JSON[_0xfe5f('0x12')](_0xf2c777));if(_0xf2c777[_0xfe5f('0x13')]){if(_0xf2c777['error']['code']===0x1f4){logger['error'](_0xfe5f('0xe'),_0x3c58e6,_0xf2c777[_0xfe5f('0x13')][_0xfe5f('0x14')]);return _0x520524(_0xf2c777[_0xfe5f('0x13')][_0xfe5f('0x14')]);}logger[_0xfe5f('0x13')](_0xfe5f('0xe'),_0x3c58e6,_0xf2c777['error']['message']);return _0x135917(_0xf2c777[_0xfe5f('0x13')]['message']);}else{logger[_0xfe5f('0xd')](_0xfe5f('0xe'),_0x3c58e6,'request\x20sent');_0x135917(_0xf2c777[_0xfe5f('0x15')][_0xfe5f('0x14')]);}})[_0xfe5f('0x16')](function(_0x3fb329){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x3c58e6,_0x3fb329);_0x520524(_0x3fb329);});});}
\ No newline at end of file
+var _0xeff6=['request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x49f7c5,_0x28b850){var _0x5df162=function(_0x2ee43d){while(--_0x2ee43d){_0x49f7c5['push'](_0x49f7c5['shift']());}};_0x5df162(++_0x28b850);}(_0xeff6,0x114));var _0x6eff=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeff6[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x6eff('0x0'));var moment=require(_0x6eff('0x1'));var BPromise=require(_0x6eff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6eff('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6eff('0x4'))('rpc');var config=require(_0x6eff('0x5'));var jayson=require(_0x6eff('0x6'));var client=jayson[_0x6eff('0x7')][_0x6eff('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x436d2,_0x277de,_0x3aa012){return new BPromise(function(_0x3580ac,_0x3e11e1){return client[_0x6eff('0x9')](_0x436d2,_0x3aa012)['then'](function(_0x25111c){logger[_0x6eff('0xa')](_0x6eff('0xb'),_0x277de,_0x6eff('0xc'));logger[_0x6eff('0xd')](_0x6eff('0xe'),_0x277de,'request\x20sent',JSON['stringify'](_0x25111c));if(_0x25111c[_0x6eff('0xf')]){if(_0x25111c['error']['code']===0x1f4){logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x25111c[_0x6eff('0xf')]['message']);return _0x3e11e1(_0x25111c['error'][_0x6eff('0x10')]);}logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x25111c[_0x6eff('0xf')][_0x6eff('0x10')]);return _0x3580ac(_0x25111c[_0x6eff('0xf')][_0x6eff('0x10')]);}else{logger['info'](_0x6eff('0xb'),_0x277de,_0x6eff('0xc'));_0x3580ac(_0x25111c[_0x6eff('0x11')][_0x6eff('0x10')]);}})[_0x6eff('0x12')](function(_0x1e4db4){logger[_0x6eff('0xf')](_0x6eff('0xb'),_0x277de,_0x1e4db4);_0x3e11e1(_0x1e4db4);});});}
\ No newline at end of file
index ee33b5f..87fea9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x2ddaf7,_0x3ffc35){var _0x6e6c75=function(_0x55dd8f){while(--_0x55dd8f){_0x2ddaf7['push'](_0x2ddaf7['shift']());}};_0x6e6c75(++_0x3ffc35);}(_0x207c,0x1e8));var _0xc207=function(_0x29af0e,_0x35f669){_0x29af0e=_0x29af0e-0x0;var _0x349e39=_0x207c[_0x29af0e];return _0x349e39;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./chatProactiveAction.controller');router['get']('/:id',auth[_0xc207('0x8')](),controller[_0xc207('0x9')]);router[_0xc207('0xa')]('/',auth['isAuthenticated'](),controller[_0xc207('0xb')]);router[_0xc207('0xc')](_0xc207('0xd'),auth['isAuthenticated'](),controller[_0xc207('0xe')]);router[_0xc207('0xf')](_0xc207('0xd'),auth[_0xc207('0x8')](),controller[_0xc207('0x10')]);module[_0xc207('0x11')]=router;
\ No newline at end of file
+var _0xeff8=['isAuthenticated','show','post','create','put','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xeff8,0x186));var _0x8eff=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xeff8[_0x342700];return _0x53406f;};'use strict';var multer=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var path=require('path');var timeout=require(_0x8eff('0x2'));var express=require(_0x8eff('0x3'));var router=express[_0x8eff('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8eff('0x5'));var interaction=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var controller=require(_0x8eff('0x8'));router['get'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xb')]);router[_0x8eff('0xc')]('/',auth['isAuthenticated'](),controller[_0x8eff('0xd')]);router[_0x8eff('0xe')](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller['update']);router['delete'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xf')]);module['exports']=router;
\ No newline at end of file
index 81bddd3..d65e414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd01f=['sequelize','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x1da63d,_0x46caac){var _0x143f52=function(_0x4fb9b8){while(--_0x4fb9b8){_0x1da63d['push'](_0x1da63d['shift']());}};_0x143f52(++_0x46caac);}(_0xd01f,0x72));var _0xfd01=function(_0x5e18e5,_0x5a37f4){_0x5e18e5=_0x5e18e5-0x0;var _0x3ab0a4=_0xd01f[_0x5e18e5];return _0x3ab0a4;};'use strict';var Sequelize=require(_0xfd01('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xfd01('0x1')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfd01('0x2')](_0xfd01('0x3'),_0xfd01('0x4'),_0xfd01('0x5'))}};
\ No newline at end of file
+var _0x788d=['beepall','roundrobin','name','STRING','INTEGER','rrmemory'];(function(_0x5c36fe,_0x1a90e3){var _0x18a432=function(_0x14460c){while(--_0x14460c){_0x5c36fe['push'](_0x5c36fe['shift']());}};_0x18a432(++_0x1a90e3);}(_0x788d,0x1d6));var _0xd788=function(_0xa45b07,_0x1c79a8){_0xa45b07=_0xa45b07-0x0;var _0x29980f=_0x788d[_0xa45b07];return _0x29980f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xd788('0x0'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd788('0x1')]},'timeout':{'type':Sequelize[_0xd788('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd788('0x3'),_0xd788('0x4'),_0xd788('0x5'))}};
\ No newline at end of file
index d030533..100df1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc280=['catch','sendStatus','status','end','offset','limit','undefined','count','set','reject','update','destroy','get','ChatQueues','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','fields','attributes','hasOwnProperty','nolimit','sort','pick','filters','where','merge','filter','options','ChatQueue','includeAll','include','findAll','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserChatQueue','order','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','getTeams','findOne','Team','intersection','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','userChatQueue:save','removeTeams','select','field','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','TeamId','all','union','compact','value','transaction','emit','addAgents','omit','spread','isArray','userChatQueue:remove','getAgents','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result'];(function(_0x3b541f,_0x3e17ad){var _0x508723=function(_0x4ba2b2){while(--_0x4ba2b2){_0x3b541f['push'](_0x3b541f['shift']());}};_0x508723(++_0x3e17ad);}(_0xc280,0xfa));var _0x0c28=function(_0x4ac8cd,_0x4517c3){_0x4ac8cd=_0x4ac8cd-0x0;var _0x117c61=_0xc280[_0x4ac8cd];return _0x117c61;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c28('0x0'));var jsonpatch=require(_0x0c28('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0c28('0x2'));var Mustache=require(_0x0c28('0x3'));var util=require(_0x0c28('0x4'));var path=require(_0x0c28('0x5'));var sox=require('sox');var csv=require(_0x0c28('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0c28('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0c28('0x8'));var jsforce=require(_0x0c28('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x0c28('0x6'));var querystring=require(_0x0c28('0xa'));var Papa=require(_0x0c28('0xb'));var Redis=require(_0x0c28('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0c28('0xd'));var hardwareService=require(_0x0c28('0xe'));var logger=require(_0x0c28('0xf'))(_0x0c28('0x10'));var utils=require(_0x0c28('0x11'));var config=require(_0x0c28('0x12'));var licenseUtil=require(_0x0c28('0x13'));var db=require(_0x0c28('0x14'))['db'];config[_0x0c28('0x15')]=_['defaults'](config[_0x0c28('0x15')],{'host':_0x0c28('0x16'),'port':0x18eb});var socket=require(_0x0c28('0x17'))(new Redis(config[_0x0c28('0x15')]));require('./chatQueue.socket')[_0x0c28('0x18')](socket);var jayson=require(_0x0c28('0x19'));var client=jayson[_0x0c28('0x1a')][_0x0c28('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xc8a618,_0x45c0bd,_0x40c08b,_0x3d4475){return new BPromise(function(_0x5d60b5,_0x487486){var _0x73a2bb=_0x3d4475||client;return _0x73a2bb[_0x0c28('0x1c')](_0xc8a618,_0x40c08b)[_0x0c28('0x1d')](function(_0x4861){logger[_0x0c28('0x1e')](_0x0c28('0x1f'),_0x45c0bd,_0x0c28('0x20'));logger[_0x0c28('0x21')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x45c0bd,_0x0c28('0x20'),JSON['stringify'](_0x4861));if(_0x4861[_0x0c28('0x22')]){if(_0x4861[_0x0c28('0x22')][_0x0c28('0x23')]===0x1f4){logger[_0x0c28('0x22')](_0x0c28('0x1f'),_0x45c0bd,_0x4861[_0x0c28('0x22')][_0x0c28('0x24')]);return _0x487486(_0x4861[_0x0c28('0x22')][_0x0c28('0x24')]);}logger[_0x0c28('0x22')](_0x0c28('0x1f'),_0x45c0bd,_0x4861['error']['message']);return _0x5d60b5(_0x4861[_0x0c28('0x22')][_0x0c28('0x24')]);}else{logger['info'](_0x0c28('0x1f'),_0x45c0bd,'request\x20sent');_0x5d60b5(_0x4861[_0x0c28('0x25')]['message']);}})[_0x0c28('0x26')](function(_0x42db27){logger[_0x0c28('0x22')](_0x0c28('0x1f'),_0x45c0bd,_0x42db27);_0x487486(_0x42db27);});});}function respondWithStatusCode(_0x16062f,_0x4e500e){_0x4e500e=_0x4e500e||0xcc;return function(_0x425691){if(_0x425691){return _0x16062f[_0x0c28('0x27')](_0x4e500e);}return _0x16062f[_0x0c28('0x28')](_0x4e500e)[_0x0c28('0x29')]();};}function respondWithResult(_0x2a5a19,_0x54eb3a){_0x54eb3a=_0x54eb3a||0xc8;return function(_0x5dc9dc){if(_0x5dc9dc){return _0x2a5a19[_0x0c28('0x28')](_0x54eb3a)['json'](_0x5dc9dc);}};}function respondWithFilteredResult(_0x1883e4,_0x2d3b67){return function(_0x5676a0){if(_0x5676a0){var _0x3d1fc8=typeof _0x2d3b67[_0x0c28('0x2a')]==='undefined'&&typeof _0x2d3b67[_0x0c28('0x2b')]===_0x0c28('0x2c');var _0x34d1da=_0x5676a0[_0x0c28('0x2d')];var _0x168b70=_0x3d1fc8?0x0:_0x2d3b67[_0x0c28('0x2a')];var _0x493633=_0x3d1fc8?_0x5676a0[_0x0c28('0x2d')]:_0x2d3b67[_0x0c28('0x2a')]+_0x2d3b67[_0x0c28('0x2b')];var _0x93db42;if(_0x493633>=_0x34d1da){_0x493633=_0x34d1da;_0x93db42=0xc8;}else{_0x93db42=0xce;}_0x1883e4[_0x0c28('0x28')](_0x93db42);return _0x1883e4[_0x0c28('0x2e')]('Content-Range',_0x168b70+'-'+_0x493633+'/'+_0x34d1da)['json'](_0x5676a0);}return null;};}function patchUpdates(_0x54a10e){return function(_0x3134d9){try{jsonpatch['apply'](_0x3134d9,_0x54a10e,!![]);}catch(_0x11fa3c){return BPromise[_0x0c28('0x2f')](_0x11fa3c);}return _0x3134d9['save']();};}function saveUpdates(_0x487e4d,_0x1f6d66){return function(_0x90074b){if(_0x90074b){return _0x90074b[_0x0c28('0x30')](_0x487e4d)[_0x0c28('0x1d')](function(_0x4ea25e){return _0x4ea25e;});}return null;};}function removeEntity(_0x4ce7e6,_0x43d816){return function(_0x4d9635){if(_0x4d9635){return _0x4d9635[_0x0c28('0x31')]()[_0x0c28('0x1d')](function(){var _0x5705e8=_0x4d9635[_0x0c28('0x32')]({'plain':!![]});var _0x292ca2=_0x0c28('0x33');return db[_0x0c28('0x34')][_0x0c28('0x31')]({'where':{'type':_0x292ca2,'resourceId':_0x5705e8['id']}})[_0x0c28('0x1d')](function(){return _0x4d9635;});})[_0x0c28('0x1d')](function(){_0x4ce7e6[_0x0c28('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd5275d,_0x4a286f){return function(_0x263d7a){if(!_0x263d7a){_0xd5275d['sendStatus'](0x194);}return _0x263d7a;};}function handleError(_0x47934a,_0xee009a){_0xee009a=_0xee009a||0x1f4;return function(_0x453fad){logger[_0x0c28('0x22')](_0x453fad[_0x0c28('0x35')]);if(_0x453fad[_0x0c28('0x36')]){delete _0x453fad[_0x0c28('0x36')];}_0x47934a[_0x0c28('0x28')](_0xee009a)[_0x0c28('0x37')](_0x453fad);};}exports[_0x0c28('0x38')]=function(_0x5a0fb2,_0x5d5cca){var _0x222cc7={},_0x153d0e={},_0x26a468={'count':0x0,'rows':[]};var _0x205988=_[_0x0c28('0x39')](db['ChatQueue'][_0x0c28('0x3a')],function(_0x5bc871){return{'name':_0x5bc871[_0x0c28('0x3b')],'type':_0x5bc871[_0x0c28('0x3c')]['key']};});_0x153d0e[_0x0c28('0x3d')]=_['map'](_0x205988,_0x0c28('0x36'));_0x153d0e['query']=_['keys'](_0x5a0fb2[_0x0c28('0x3e')]);_0x153d0e['filters']=_['intersection'](_0x153d0e[_0x0c28('0x3d')],_0x153d0e[_0x0c28('0x3e')]);_0x222cc7['attributes']=_['intersection'](_0x153d0e['model'],qs[_0x0c28('0x3f')](_0x5a0fb2[_0x0c28('0x3e')][_0x0c28('0x3f')]));_0x222cc7[_0x0c28('0x40')]=_0x222cc7['attributes']['length']?_0x222cc7[_0x0c28('0x40')]:_0x153d0e[_0x0c28('0x3d')];if(!_0x5a0fb2[_0x0c28('0x3e')][_0x0c28('0x41')](_0x0c28('0x42'))){_0x222cc7[_0x0c28('0x2b')]=qs[_0x0c28('0x2b')](_0x5a0fb2[_0x0c28('0x3e')]['limit']);_0x222cc7[_0x0c28('0x2a')]=qs[_0x0c28('0x2a')](_0x5a0fb2['query'][_0x0c28('0x2a')]);}_0x222cc7['order']=qs[_0x0c28('0x43')](_0x5a0fb2['query'][_0x0c28('0x43')]);_0x222cc7['where']=qs['filters'](_[_0x0c28('0x44')](_0x5a0fb2[_0x0c28('0x3e')],_0x153d0e[_0x0c28('0x45')]),_0x205988);if(_0x5a0fb2[_0x0c28('0x3e')]['filter']){_0x222cc7[_0x0c28('0x46')]=_[_0x0c28('0x47')](_0x222cc7[_0x0c28('0x46')],{'$or':_[_0x0c28('0x39')](_0x205988,function(_0x3644d0){if(_0x3644d0[_0x0c28('0x3c')]!=='VIRTUAL'){var _0x9df903={};_0x9df903[_0x3644d0[_0x0c28('0x36')]]={'$like':'%'+_0x5a0fb2[_0x0c28('0x3e')][_0x0c28('0x48')]+'%'};return _0x9df903;}})});}_0x222cc7=_[_0x0c28('0x47')]({},_0x222cc7,_0x5a0fb2[_0x0c28('0x49')]);var _0x1cb13c={'where':_0x222cc7[_0x0c28('0x46')]};return db[_0x0c28('0x4a')][_0x0c28('0x2d')](_0x1cb13c)[_0x0c28('0x1d')](function(_0xb7bc70){_0x26a468['count']=_0xb7bc70;if(_0x5a0fb2['query'][_0x0c28('0x4b')]){_0x222cc7[_0x0c28('0x4c')]=[{'all':!![]}];}return db[_0x0c28('0x4a')][_0x0c28('0x4d')](_0x222cc7);})[_0x0c28('0x1d')](function(_0x19a74c){_0x26a468['rows']=_0x19a74c;return _0x26a468;})[_0x0c28('0x1d')](respondWithFilteredResult(_0x5d5cca,_0x222cc7))[_0x0c28('0x26')](handleError(_0x5d5cca,null));};exports[_0x0c28('0x4e')]=function(_0x21c9d9,_0x105c51){var _0x51b4e1={'raw':!![],'where':{'id':_0x21c9d9[_0x0c28('0x4f')]['id']}},_0x4b2775={};_0x4b2775['model']=_[_0x0c28('0x50')](db[_0x0c28('0x4a')][_0x0c28('0x3a')]);_0x4b2775[_0x0c28('0x3e')]=_[_0x0c28('0x50')](_0x21c9d9[_0x0c28('0x3e')]);_0x4b2775[_0x0c28('0x45')]=_['intersection'](_0x4b2775['model'],_0x4b2775[_0x0c28('0x3e')]);_0x51b4e1['attributes']=_['intersection'](_0x4b2775[_0x0c28('0x3d')],qs[_0x0c28('0x3f')](_0x21c9d9[_0x0c28('0x3e')][_0x0c28('0x3f')]));_0x51b4e1[_0x0c28('0x40')]=_0x51b4e1[_0x0c28('0x40')][_0x0c28('0x51')]?_0x51b4e1[_0x0c28('0x40')]:_0x4b2775[_0x0c28('0x3d')];if(_0x21c9d9[_0x0c28('0x3e')]['includeAll']){_0x51b4e1['include']=[{'all':!![]}];}_0x51b4e1=_['merge']({},_0x51b4e1,_0x21c9d9[_0x0c28('0x49')]);return db[_0x0c28('0x4a')][_0x0c28('0x52')](_0x51b4e1)[_0x0c28('0x1d')](handleEntityNotFound(_0x105c51,null))[_0x0c28('0x1d')](respondWithResult(_0x105c51,null))['catch'](handleError(_0x105c51,null));};exports[_0x0c28('0x53')]=function(_0x3da609,_0x384be7){return db[_0x0c28('0x4a')]['create'](_0x3da609[_0x0c28('0x54')],{})[_0x0c28('0x1d')](function(_0x3e51dd){var _0x3f2c56=_0x3da609[_0x0c28('0x55')][_0x0c28('0x32')]({'plain':!![]});if(!_0x3f2c56)throw new Error(_0x0c28('0x56'));if(_0x3f2c56[_0x0c28('0x57')]===_0x0c28('0x55')){var _0x39b585=_0x3e51dd[_0x0c28('0x32')]({'plain':!![]});var _0xed727c='ChatQueues';return db[_0x0c28('0x58')][_0x0c28('0x52')]({'where':{'name':_0xed727c,'userProfileId':_0x3f2c56[_0x0c28('0x59')]},'raw':!![]})[_0x0c28('0x1d')](function(_0x5f1374){if(_0x5f1374&&_0x5f1374['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x39b585[_0x0c28('0x36')],'resourceId':_0x39b585['id'],'type':_0x5f1374['name'],'sectionId':_0x5f1374['id']},{})[_0x0c28('0x1d')](function(){return _0x3e51dd;});}else{return _0x3e51dd;}})['catch'](function(_0x445322){logger[_0x0c28('0x22')](_0x0c28('0x5a'),_0x445322);throw _0x445322;});}return _0x3e51dd;})[_0x0c28('0x1d')](respondWithResult(_0x384be7,0xc9))[_0x0c28('0x26')](handleError(_0x384be7,null));};exports[_0x0c28('0x30')]=function(_0x2f5fad,_0x312be1){if(_0x2f5fad['body']['id']){delete _0x2f5fad[_0x0c28('0x54')]['id'];}return db['ChatQueue'][_0x0c28('0x52')]({'where':{'id':_0x2f5fad[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x312be1,null))[_0x0c28('0x1d')](saveUpdates(_0x2f5fad[_0x0c28('0x54')],null))[_0x0c28('0x1d')](respondWithResult(_0x312be1,null))[_0x0c28('0x26')](handleError(_0x312be1,null));};exports[_0x0c28('0x31')]=function(_0x25a793,_0x11bff9){return db[_0x0c28('0x4a')][_0x0c28('0x52')]({'where':{'id':_0x25a793[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x11bff9,null))[_0x0c28('0x1d')](removeEntity(_0x11bff9,null))['catch'](handleError(_0x11bff9,null));};exports[_0x0c28('0x5b')]=function(_0x42c19f,_0x119e91){return db[_0x0c28('0x4a')][_0x0c28('0x5b')]()[_0x0c28('0x1d')](respondWithResult(_0x119e91,null))['catch'](handleError(_0x119e91,null));};exports[_0x0c28('0x5c')]=function(_0x1e566d,_0x29a84e,_0x56e0ee){var _0x311413={'raw':!![],'where':{}},_0x1ce38f={},_0x3100c6;return db[_0x0c28('0x4a')]['findOne']({'where':{'id':_0x1e566d[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x29a84e,null))['then'](function(_0x225141){if(_0x225141){_0x3100c6=_0x225141['get']({'plain':!![]});_0x1ce38f['model']=_['keys'](db[_0x0c28('0x5d')][_0x0c28('0x3a')]);_0x1ce38f['query']=_[_0x0c28('0x50')](_0x1e566d[_0x0c28('0x3e')]);_0x1ce38f[_0x0c28('0x45')]=_['intersection'](_0x1ce38f['model'],_0x1ce38f[_0x0c28('0x3e')]);_0x311413['attributes']=_['intersection'](_0x1ce38f[_0x0c28('0x3d')],qs[_0x0c28('0x3f')](_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x3f')]));_0x311413[_0x0c28('0x40')]=_0x311413['attributes']['length']?_0x311413[_0x0c28('0x40')]:_0x1ce38f['model'];if(!_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x41')](_0x0c28('0x42'))){_0x311413[_0x0c28('0x2b')]=qs[_0x0c28('0x2b')](_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x2b')]);_0x311413[_0x0c28('0x2a')]=qs['offset'](_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x2a')]);}_0x311413[_0x0c28('0x5e')]=qs['sort'](_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x43')]);_0x311413[_0x0c28('0x46')]=qs[_0x0c28('0x45')](_['pick'](_0x1e566d[_0x0c28('0x3e')],_0x1ce38f[_0x0c28('0x45')]));_0x311413['where'][_0x0c28('0x5f')]=_0x225141['id'];if(_0x1e566d[_0x0c28('0x3e')][_0x0c28('0x48')]){_0x311413['where']=_[_0x0c28('0x47')](_0x311413[_0x0c28('0x46')],{'$or':_[_0x0c28('0x39')](_0x311413['attributes'],function(_0x158b47){var _0xbf869f={};_0xbf869f[_0x158b47]={'$like':'%'+_0x1e566d['query']['filter']+'%'};return _0xbf869f;})});}_0x311413=_[_0x0c28('0x47')]({},_0x311413,_0x1e566d['options']);return db[_0x0c28('0x5d')][_0x0c28('0x4d')](_0x311413);}})[_0x0c28('0x1d')](function(_0x5f4299){if(_0x5f4299){return db[_0x0c28('0x60')][_0x0c28('0x61')]({'where':{'id':_[_0x0c28('0x39')](_0x5f4299,_0x0c28('0x62')),'role':_0x0c28('0x63')},'attributes':['id',_0x0c28('0x36'),_0x0c28('0x64'),_0x0c28('0x65'),_0x0c28('0x66')]});}})[_0x0c28('0x1d')](function(_0x525b32){if(_0x525b32){return{'count':_0x525b32[_0x0c28('0x2d')],'rows':_['map'](_0x525b32['rows'],function(_0x16a526){return{'membername':_0x16a526['name'],'UserId':_0x16a526['id'],'queue_name':_0x3100c6[_0x0c28('0x36')],'ChatQueueId':_0x3100c6['id'],'interface':util[_0x0c28('0x67')]('%s/%s','SIP',_0x16a526[_0x0c28('0x36')]),'penalty':0x0,'paused':_0x16a526[_0x0c28('0x64')],'createdAt':_0x16a526[_0x0c28('0x66')],'updatedAt':_0x16a526[_0x0c28('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0c28('0x1d')](respondWithFilteredResult(_0x29a84e,_0x311413))['catch'](handleError(_0x29a84e,null));};exports[_0x0c28('0x68')]=function(_0x86306b,_0x1d0a25,_0x36a3bc){var _0x3ace56={};var _0x266760={};var _0x1e7031;var _0x2ea032;return db[_0x0c28('0x4a')][_0x0c28('0x69')]({'where':{'id':_0x86306b[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x1d0a25,null))['then'](function(_0x21b139){if(_0x21b139){_0x1e7031=_0x21b139;_0x266760[_0x0c28('0x3d')]=_['keys'](db[_0x0c28('0x6a')][_0x0c28('0x3a')]);_0x266760[_0x0c28('0x3e')]=_[_0x0c28('0x50')](_0x86306b[_0x0c28('0x3e')]);_0x266760['filters']=_[_0x0c28('0x6b')](_0x266760['model'],_0x266760[_0x0c28('0x3e')]);_0x3ace56['attributes']=_[_0x0c28('0x6b')](_0x266760[_0x0c28('0x3d')],qs[_0x0c28('0x3f')](_0x86306b['query']['fields']));_0x3ace56['attributes']=_0x3ace56[_0x0c28('0x40')]['length']?_0x3ace56[_0x0c28('0x40')]:_0x266760[_0x0c28('0x3d')];_0x3ace56[_0x0c28('0x5e')]=qs[_0x0c28('0x43')](_0x86306b[_0x0c28('0x3e')][_0x0c28('0x43')]);_0x3ace56[_0x0c28('0x46')]=qs[_0x0c28('0x45')](_[_0x0c28('0x44')](_0x86306b[_0x0c28('0x3e')],_0x266760['filters']));if(_0x86306b[_0x0c28('0x3e')][_0x0c28('0x48')]){_0x3ace56[_0x0c28('0x46')]=_[_0x0c28('0x47')](_0x3ace56[_0x0c28('0x46')],{'$or':_[_0x0c28('0x39')](_0x3ace56[_0x0c28('0x40')],function(_0x1bd37){var _0x5b7359={};_0x5b7359[_0x1bd37]={'$like':'%'+_0x86306b[_0x0c28('0x3e')][_0x0c28('0x48')]+'%'};return _0x5b7359;})});}_0x3ace56=_[_0x0c28('0x47')]({},_0x3ace56,_0x86306b['options']);return _0x1e7031['getTeams'](_0x3ace56);}})['then'](function(_0x2d292b){if(_0x2d292b){_0x2ea032=_0x2d292b['length'];if(!_0x86306b[_0x0c28('0x3e')][_0x0c28('0x41')](_0x0c28('0x42'))){_0x3ace56[_0x0c28('0x2b')]=qs['limit'](_0x86306b['query']['limit']);_0x3ace56[_0x0c28('0x2a')]=qs[_0x0c28('0x2a')](_0x86306b[_0x0c28('0x3e')]['offset']);}return _0x1e7031[_0x0c28('0x68')](_0x3ace56);}})['then'](function(_0x223c81){if(_0x223c81){return _0x223c81?{'count':_0x2ea032,'rows':_0x223c81}:null;}})[_0x0c28('0x1d')](respondWithResult(_0x1d0a25,null))['catch'](handleError(_0x1d0a25,null));};exports[_0x0c28('0x6c')]=function(_0x58ac76,_0x4aeda3,_0x4e38c7){var _0xc3fdd2=_0x58ac76[_0x0c28('0x54')][_0x0c28('0x6d')];return db['Team'][_0x0c28('0x4d')]({'where':{'id':_0xc3fdd2},'attributes':['id'],'include':[{'model':db[_0x0c28('0x60')],'as':_0x0c28('0x6e'),'attributes':['id',_0x0c28('0x36'),_0x0c28('0x6f'),_0x0c28('0x70'),_0x0c28('0x71')],'raw':!![]}]})[_0x0c28('0x1d')](function(_0x499815){if(_0x499815){var _0x24d894=_[_0x0c28('0x72')](_0x499815,function(_0x38ab94){var _0x36a3fc=_0x38ab94['get']({'plain':!![]});return _0x36a3fc[_0x0c28('0x6e')];});return db[_0x0c28('0x4a')][_0x0c28('0x52')]({'where':{'id':_0x58ac76[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](function(_0x2c3e6f){return db[_0x0c28('0x73')]['transaction'](function(_0x1c0be5){return _0x2c3e6f[_0x0c28('0x6c')](_0xc3fdd2,{'transaction':_0x1c0be5})[_0x0c28('0x1d')](function(){return BPromise[_0x0c28('0x74')](_0x24d894,function(_0x16f509){return db[_0x0c28('0x5d')][_0x0c28('0x75')]({'where':{'UserId':_0x16f509['id'],'ChatQueueId':_0x58ac76[_0x0c28('0x4f')]['id']},'transaction':_0x1c0be5});});})[_0x0c28('0x1d')](function(){_0x24d894[_0x0c28('0x76')](function(_0x44057a){socket['emit'](_0x0c28('0x77'),{'UserId':_0x44057a['id'],'ChatQueueId':_0x2c3e6f['id']});});});});});}})[_0x0c28('0x1d')](respondWithStatusCode(_0x4aeda3,null))[_0x0c28('0x26')](handleError(_0x4aeda3,null));};exports[_0x0c28('0x78')]=function(_0x49b477,_0x5ace01,_0x2731aa){return db['Team']['findAll']({'where':{'id':_0x49b477[_0x0c28('0x3e')][_0x0c28('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x0c28('0x60')],'as':_0x0c28('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x0c28('0x1d')](handleEntityNotFound(_0x5ace01,null))[_0x0c28('0x1d')](function(_0x1a2eae){var _0x359a12=_['map'](_0x1a2eae,'id');var _0x169770=[];var _0x12150b=[];var _0x2decb9=squel[_0x0c28('0x79')]();_0x2decb9[_0x0c28('0x7a')]('tq.TeamId')['from'](_0x0c28('0x7b'),'tq')[_0x0c28('0x7c')](_0x0c28('0x7d'),'ut',_0x0c28('0x7e'))[_0x0c28('0x46')](_0x0c28('0x7f'),_0x49b477['params']['id']);for(var _0x235bf1=0x0;_0x235bf1<_0x1a2eae[_0x0c28('0x51')];_0x235bf1+=0x1){let _0x4f3e92=_0x1a2eae[_0x235bf1];for(var _0x242ad7=0x0;_0x242ad7<_0x4f3e92['Agents'][_0x0c28('0x51')];_0x242ad7+=0x1){let _0x5efad2=_0x4f3e92[_0x0c28('0x6e')][_0x242ad7];var _0x505170=_0x2decb9[_0x0c28('0x80')]();_0x505170[_0x0c28('0x46')]('ut.UserId\x20=\x20?',_0x5efad2['id']);_0x12150b['push'](db['sequelize'][_0x0c28('0x3e')](_0x505170[_0x0c28('0x81')](),{'type':db[_0x0c28('0x73')][_0x0c28('0x82')]['SELECT']})[_0x0c28('0x1d')](function(_0x363b7d){if(_0x363b7d[_0x0c28('0x51')]===0x1){return _0x5efad2['id'];}else{var _0x1c9852=_['every'](_['map'](_0x363b7d,_0x0c28('0x83')),function(_0x17e0bb){return _['includes'](_0x359a12,_0x17e0bb);});if(_0x1c9852){return _0x5efad2['id'];}}}));}}return BPromise[_0x0c28('0x84')](_0x12150b)['then'](function(_0x5e9ac0){_0x169770=_(_0x169770)[_0x0c28('0x85')](_0x5e9ac0)[_0x0c28('0x86')]()[_0x0c28('0x87')]();return db[_0x0c28('0x4a')][_0x0c28('0x52')]({'where':{'id':_0x49b477['params']['id']}})[_0x0c28('0x1d')](function(_0xf2148c){return db[_0x0c28('0x73')][_0x0c28('0x88')](function(_0x29d109){return _0xf2148c['removeTeams'](_0x49b477[_0x0c28('0x3e')][_0x0c28('0x6d')],{'transaction':_0x29d109})[_0x0c28('0x1d')](function(){if(!_['isEmpty'](_0x169770)){return _0xf2148c['removeAgents'](_0x169770,{'transaction':_0x29d109});}})[_0x0c28('0x1d')](function(){_0x169770[_0x0c28('0x76')](function(_0x34e050){socket[_0x0c28('0x89')]('userChatQueue:remove',{'UserId':_0x34e050,'ChatQueueId':_0xf2148c['id']});});});});});});})['then'](respondWithStatusCode(_0x5ace01,null))['catch'](handleError(_0x5ace01,null));};exports[_0x0c28('0x8a')]=function(_0x2c975c,_0x4aa5c5,_0x30ff2f){return db[_0x0c28('0x4a')][_0x0c28('0x52')]({'where':{'id':_0x2c975c[_0x0c28('0x4f')]['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x4aa5c5,null))[_0x0c28('0x1d')](function(_0x51ba1e){if(_0x51ba1e){return _0x51ba1e[_0x0c28('0x8a')](_0x2c975c[_0x0c28('0x54')][_0x0c28('0x6d')],_[_0x0c28('0x8b')](_0x2c975c[_0x0c28('0x54')],['ids','id'])||{})[_0x0c28('0x8c')](function(_0xb6e3fb){for(var _0xac88f1=0x0;_0xac88f1<_0x2c975c['body'][_0x0c28('0x6d')][_0x0c28('0x51')];_0xac88f1+=0x1){socket['emit'](_0x0c28('0x77'),{'UserId':Number(_0x2c975c[_0x0c28('0x54')]['ids'][_0xac88f1]),'ChatQueueId':Number(_0x2c975c['params']['id'])});}return _0xb6e3fb;});}})[_0x0c28('0x1d')](respondWithResult(_0x4aa5c5,null))['catch'](handleError(_0x4aa5c5,null));};exports['removeAgents']=function(_0x4f90ca,_0x35b40f,_0x531212){return db[_0x0c28('0x4a')][_0x0c28('0x52')]({'where':{'id':_0x4f90ca[_0x0c28('0x4f')]['id']}})['then'](handleEntityNotFound(_0x35b40f,null))['then'](function(_0x29b3c9){if(_0x29b3c9){return _0x29b3c9['removeAgents'](_0x4f90ca[_0x0c28('0x3e')][_0x0c28('0x6d')])[_0x0c28('0x1d')](function(){if(_[_0x0c28('0x8d')](_0x4f90ca[_0x0c28('0x3e')][_0x0c28('0x6d')])){for(var _0x45081b=0x0;_0x45081b<_0x4f90ca[_0x0c28('0x3e')]['ids'][_0x0c28('0x51')];_0x45081b+=0x1){socket[_0x0c28('0x89')](_0x0c28('0x8e'),{'UserId':Number(_0x4f90ca['query'][_0x0c28('0x6d')][_0x45081b]),'ChatQueueId':Number(_0x4f90ca[_0x0c28('0x4f')]['id'])});}}else{socket[_0x0c28('0x89')]('userChatQueue:remove',{'UserId':Number(_0x4f90ca['query'][_0x0c28('0x6d')]),'ChatQueueId':Number(_0x4f90ca[_0x0c28('0x4f')]['id'])});}});}})[_0x0c28('0x1d')](respondWithStatusCode(_0x35b40f,null))[_0x0c28('0x26')](handleError(_0x35b40f,null));};exports['getAgents']=function(_0x599d72,_0x5ad3b0,_0x3af676){var _0x1885c9={};var _0x7e0097={};var _0xb05c75;var _0x57d0b5;return db[_0x0c28('0x4a')][_0x0c28('0x69')]({'where':{'id':_0x599d72['params']['id']}})[_0x0c28('0x1d')](handleEntityNotFound(_0x5ad3b0,null))[_0x0c28('0x1d')](function(_0x44a9f2){if(_0x44a9f2){_0xb05c75=_0x44a9f2;_0x7e0097[_0x0c28('0x3d')]=_[_0x0c28('0x50')](db['User'][_0x0c28('0x3a')]);_0x7e0097[_0x0c28('0x3e')]=_['keys'](_0x599d72[_0x0c28('0x3e')]);_0x7e0097[_0x0c28('0x45')]=_[_0x0c28('0x6b')](_0x7e0097[_0x0c28('0x3d')],_0x7e0097[_0x0c28('0x3e')]);_0x1885c9['attributes']=_['intersection'](_0x7e0097[_0x0c28('0x3d')],qs[_0x0c28('0x3f')](_0x599d72['query'][_0x0c28('0x3f')]));_0x1885c9[_0x0c28('0x40')]=_0x1885c9[_0x0c28('0x40')][_0x0c28('0x51')]?_0x1885c9[_0x0c28('0x40')]:_0x7e0097['model'];_0x1885c9[_0x0c28('0x5e')]=qs[_0x0c28('0x43')](_0x599d72[_0x0c28('0x3e')][_0x0c28('0x43')]);_0x1885c9[_0x0c28('0x46')]=qs['filters'](_[_0x0c28('0x44')](_0x599d72[_0x0c28('0x3e')],_0x7e0097[_0x0c28('0x45')]));if(_0x599d72[_0x0c28('0x3e')][_0x0c28('0x48')]){_0x1885c9[_0x0c28('0x46')]=_['merge'](_0x1885c9[_0x0c28('0x46')],{'$or':_[_0x0c28('0x39')](_0x1885c9[_0x0c28('0x40')],function(_0x102308){var _0x22635d={};_0x22635d[_0x102308]={'$like':'%'+_0x599d72[_0x0c28('0x3e')]['filter']+'%'};return _0x22635d;})});}_0x1885c9=_['merge']({},_0x1885c9,_0x599d72[_0x0c28('0x49')]);return _0xb05c75[_0x0c28('0x8f')](_0x1885c9);}})[_0x0c28('0x1d')](function(_0x503843){if(_0x503843){_0x57d0b5=_0x503843['length'];if(!_0x599d72['query'][_0x0c28('0x41')](_0x0c28('0x42'))){_0x1885c9[_0x0c28('0x2b')]=qs['limit'](_0x599d72[_0x0c28('0x3e')][_0x0c28('0x2b')]);_0x1885c9[_0x0c28('0x2a')]=qs[_0x0c28('0x2a')](_0x599d72[_0x0c28('0x3e')][_0x0c28('0x2a')]);}return _0xb05c75[_0x0c28('0x8f')](_0x1885c9);}})[_0x0c28('0x1d')](function(_0x40b9f5){if(_0x40b9f5){return _0x40b9f5?{'count':_0x57d0b5,'rows':_0x40b9f5}:null;}})['then'](respondWithResult(_0x5ad3b0,null))[_0x0c28('0x26')](handleError(_0x5ad3b0,null));};
\ No newline at end of file
+var _0xf481=['UserProfileSection','userProfileId','autoAssociation','catch','body','destroy','describe','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','emit','addAgents','omit','removeAgents','isArray','userChatQueue:remove','getAgents','findOne','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./chatQueue.socket','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','UserProfileResource','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','ChatQueue','includeAll','findAll','rows','params','rawAttributes','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues'];(function(_0x9c01f4,_0x348e48){var _0x544153=function(_0x3add77){while(--_0x3add77){_0x9c01f4['push'](_0x9c01f4['shift']());}};_0x544153(++_0x348e48);}(_0xf481,0xd9));var _0x1f48=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0xf481[_0x12bcf7];return _0x2825a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1f48('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1f48('0x1'));var rp=require('request-promise');var moment=require(_0x1f48('0x2'));var BPromise=require(_0x1f48('0x3'));var Mustache=require(_0x1f48('0x4'));var util=require(_0x1f48('0x5'));var path=require(_0x1f48('0x6'));var sox=require(_0x1f48('0x7'));var csv=require(_0x1f48('0x8'));var ejs=require(_0x1f48('0x9'));var fs=require('fs');var fs_extra=require(_0x1f48('0xa'));var _=require(_0x1f48('0xb'));var squel=require(_0x1f48('0xc'));var crypto=require(_0x1f48('0xd'));var jsforce=require(_0x1f48('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1f48('0x8'));var querystring=require(_0x1f48('0xf'));var Papa=require(_0x1f48('0x10'));var Redis=require(_0x1f48('0x11'));var authService=require(_0x1f48('0x12'));var qs=require(_0x1f48('0x13'));var as=require(_0x1f48('0x14'));var hardwareService=require(_0x1f48('0x15'));var logger=require(_0x1f48('0x16'))('api');var utils=require(_0x1f48('0x17'));var config=require(_0x1f48('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x1f48('0x19'))['db'];config['redis']=_[_0x1f48('0x1a')](config[_0x1f48('0x1b')],{'host':_0x1f48('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1f48('0x1b')]));require(_0x1f48('0x1d'))['register'](socket);var jayson=require(_0x1f48('0x1e'));var client=jayson[_0x1f48('0x1f')][_0x1f48('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xbb4939,_0x5dfa25,_0x5aa82e,_0x1608a5){return new BPromise(function(_0x59aa7c,_0x246067){var _0x54d9d7=_0x1608a5||client;return _0x54d9d7[_0x1f48('0x21')](_0xbb4939,_0x5aa82e)[_0x1f48('0x22')](function(_0x2c7402){logger[_0x1f48('0x23')](_0x1f48('0x24'),_0x5dfa25,_0x1f48('0x25'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x5dfa25,'request\x20sent',JSON[_0x1f48('0x26')](_0x2c7402));if(_0x2c7402[_0x1f48('0x27')]){if(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x28')]===0x1f4){logger[_0x1f48('0x27')](_0x1f48('0x24'),_0x5dfa25,_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);return _0x246067(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);}logger[_0x1f48('0x27')](_0x1f48('0x24'),_0x5dfa25,_0x2c7402['error'][_0x1f48('0x29')]);return _0x59aa7c(_0x2c7402[_0x1f48('0x27')][_0x1f48('0x29')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x5dfa25,_0x1f48('0x25'));_0x59aa7c(_0x2c7402['result']['message']);}})['catch'](function(_0x46ea56){logger['error'](_0x1f48('0x24'),_0x5dfa25,_0x46ea56);_0x246067(_0x46ea56);});});}function respondWithStatusCode(_0x5cf2e1,_0x5c6215){_0x5c6215=_0x5c6215||0xcc;return function(_0x51f6ae){if(_0x51f6ae){return _0x5cf2e1[_0x1f48('0x2a')](_0x5c6215);}return _0x5cf2e1[_0x1f48('0x2b')](_0x5c6215)[_0x1f48('0x2c')]();};}function respondWithResult(_0x5c4d60,_0x56b31f){_0x56b31f=_0x56b31f||0xc8;return function(_0x96392f){if(_0x96392f){return _0x5c4d60[_0x1f48('0x2b')](_0x56b31f)[_0x1f48('0x2d')](_0x96392f);}};}function respondWithFilteredResult(_0x3794df,_0x368ea5){return function(_0x25b4ed){if(_0x25b4ed){var _0x80aee3=typeof _0x368ea5[_0x1f48('0x2e')]===_0x1f48('0x2f')&&typeof _0x368ea5[_0x1f48('0x30')]===_0x1f48('0x2f');var _0x2705c1=_0x25b4ed['count'];var _0x3d37a1=_0x80aee3?0x0:_0x368ea5[_0x1f48('0x2e')];var _0xcabde8=_0x80aee3?_0x25b4ed[_0x1f48('0x31')]:_0x368ea5[_0x1f48('0x2e')]+_0x368ea5[_0x1f48('0x30')];var _0x2535e4;if(_0xcabde8>=_0x2705c1){_0xcabde8=_0x2705c1;_0x2535e4=0xc8;}else{_0x2535e4=0xce;}_0x3794df[_0x1f48('0x2b')](_0x2535e4);return _0x3794df[_0x1f48('0x32')](_0x1f48('0x33'),_0x3d37a1+'-'+_0xcabde8+'/'+_0x2705c1)[_0x1f48('0x2d')](_0x25b4ed);}return null;};}function patchUpdates(_0x42ee00){return function(_0xe56d76){try{jsonpatch['apply'](_0xe56d76,_0x42ee00,!![]);}catch(_0x179af9){return BPromise[_0x1f48('0x34')](_0x179af9);}return _0xe56d76[_0x1f48('0x35')]();};}function saveUpdates(_0x26b0be,_0x510d65){return function(_0x4f843e){if(_0x4f843e){return _0x4f843e[_0x1f48('0x36')](_0x26b0be)['then'](function(_0x1fe854){return _0x1fe854;});}return null;};}function removeEntity(_0xed9015,_0x46330b){return function(_0x1c7ce2){if(_0x1c7ce2){return _0x1c7ce2['destroy']()[_0x1f48('0x22')](function(){var _0x747d28=_0x1c7ce2['get']({'plain':!![]});var _0x3c674b='ChatQueues';return db[_0x1f48('0x37')]['destroy']({'where':{'type':_0x3c674b,'resourceId':_0x747d28['id']}})[_0x1f48('0x22')](function(){return _0x1c7ce2;});})[_0x1f48('0x22')](function(){_0xed9015[_0x1f48('0x2b')](0xcc)[_0x1f48('0x2c')]();});}};}function handleEntityNotFound(_0x5e19b9,_0x10b77a){return function(_0x32cca9){if(!_0x32cca9){_0x5e19b9['sendStatus'](0x194);}return _0x32cca9;};}function handleError(_0x13d272,_0xf37aeb){_0xf37aeb=_0xf37aeb||0x1f4;return function(_0x571267){logger['error'](_0x571267['stack']);if(_0x571267[_0x1f48('0x38')]){delete _0x571267[_0x1f48('0x38')];}_0x13d272[_0x1f48('0x2b')](_0xf37aeb)[_0x1f48('0x39')](_0x571267);};}exports[_0x1f48('0x3a')]=function(_0x14b66f,_0x979732){var _0x48732e={},_0x1ea847={},_0x23e891={'count':0x0,'rows':[]};var _0x2afb25=_[_0x1f48('0x3b')](db['ChatQueue']['rawAttributes'],function(_0x1d4127){return{'name':_0x1d4127[_0x1f48('0x3c')],'type':_0x1d4127[_0x1f48('0x3d')][_0x1f48('0x3e')]};});_0x1ea847[_0x1f48('0x3f')]=_[_0x1f48('0x3b')](_0x2afb25,_0x1f48('0x38'));_0x1ea847[_0x1f48('0x40')]=_[_0x1f48('0x41')](_0x14b66f['query']);_0x1ea847['filters']=_[_0x1f48('0x42')](_0x1ea847['model'],_0x1ea847[_0x1f48('0x40')]);_0x48732e[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x1ea847[_0x1f48('0x3f')],qs['fields'](_0x14b66f[_0x1f48('0x40')][_0x1f48('0x44')]));_0x48732e[_0x1f48('0x43')]=_0x48732e['attributes'][_0x1f48('0x45')]?_0x48732e['attributes']:_0x1ea847[_0x1f48('0x3f')];if(!_0x14b66f['query'][_0x1f48('0x46')](_0x1f48('0x47'))){_0x48732e[_0x1f48('0x30')]=qs['limit'](_0x14b66f['query']['limit']);_0x48732e['offset']=qs[_0x1f48('0x2e')](_0x14b66f[_0x1f48('0x40')][_0x1f48('0x2e')]);}_0x48732e[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x14b66f[_0x1f48('0x40')]['sort']);_0x48732e[_0x1f48('0x4a')]=qs[_0x1f48('0x4b')](_[_0x1f48('0x4c')](_0x14b66f['query'],_0x1ea847[_0x1f48('0x4b')]),_0x2afb25);if(_0x14b66f[_0x1f48('0x40')][_0x1f48('0x4d')]){_0x48732e[_0x1f48('0x4a')]=_[_0x1f48('0x4e')](_0x48732e[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0x2afb25,function(_0x2e1ce5){if(_0x2e1ce5['type']!=='VIRTUAL'){var _0x3f3ca4={};_0x3f3ca4[_0x2e1ce5['name']]={'$like':'%'+_0x14b66f[_0x1f48('0x40')][_0x1f48('0x4d')]+'%'};return _0x3f3ca4;}})});}_0x48732e=_[_0x1f48('0x4e')]({},_0x48732e,_0x14b66f[_0x1f48('0x4f')]);var _0x37338b={'where':_0x48732e[_0x1f48('0x4a')]};return db[_0x1f48('0x50')][_0x1f48('0x31')](_0x37338b)[_0x1f48('0x22')](function(_0x13500c){_0x23e891[_0x1f48('0x31')]=_0x13500c;if(_0x14b66f['query'][_0x1f48('0x51')]){_0x48732e['include']=[{'all':!![]}];}return db[_0x1f48('0x50')][_0x1f48('0x52')](_0x48732e);})['then'](function(_0x400587){_0x23e891[_0x1f48('0x53')]=_0x400587;return _0x23e891;})[_0x1f48('0x22')](respondWithFilteredResult(_0x979732,_0x48732e))['catch'](handleError(_0x979732,null));};exports['show']=function(_0x184182,_0x2e78ee){var _0x18b4cc={'raw':!![],'where':{'id':_0x184182[_0x1f48('0x54')]['id']}},_0x1ceafe={};_0x1ceafe[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x50')][_0x1f48('0x55')]);_0x1ceafe[_0x1f48('0x40')]=_[_0x1f48('0x41')](_0x184182[_0x1f48('0x40')]);_0x1ceafe[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x1ceafe[_0x1f48('0x3f')],_0x1ceafe[_0x1f48('0x40')]);_0x18b4cc[_0x1f48('0x43')]=_['intersection'](_0x1ceafe[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x184182[_0x1f48('0x40')][_0x1f48('0x44')]));_0x18b4cc[_0x1f48('0x43')]=_0x18b4cc['attributes'][_0x1f48('0x45')]?_0x18b4cc[_0x1f48('0x43')]:_0x1ceafe[_0x1f48('0x3f')];if(_0x184182['query'][_0x1f48('0x51')]){_0x18b4cc['include']=[{'all':!![]}];}_0x18b4cc=_[_0x1f48('0x4e')]({},_0x18b4cc,_0x184182['options']);return db[_0x1f48('0x50')][_0x1f48('0x56')](_0x18b4cc)[_0x1f48('0x22')](handleEntityNotFound(_0x2e78ee,null))[_0x1f48('0x22')](respondWithResult(_0x2e78ee,null))['catch'](handleError(_0x2e78ee,null));};exports[_0x1f48('0x57')]=function(_0x49c82c,_0x4b21aa){return db['ChatQueue'][_0x1f48('0x57')](_0x49c82c['body'],{})[_0x1f48('0x22')](function(_0x15a80c){var _0x2b1560=_0x49c82c[_0x1f48('0x58')][_0x1f48('0x59')]({'plain':!![]});if(!_0x2b1560)throw new Error(_0x1f48('0x5a'));if(_0x2b1560[_0x1f48('0x5b')]==='user'){var _0x5ec395=_0x15a80c['get']({'plain':!![]});var _0x5cf6aa=_0x1f48('0x5c');return db[_0x1f48('0x5d')][_0x1f48('0x56')]({'where':{'name':_0x5cf6aa,'userProfileId':_0x2b1560[_0x1f48('0x5e')]},'raw':!![]})['then'](function(_0x5338bd){if(_0x5338bd&&_0x5338bd[_0x1f48('0x5f')]===0x0){return db[_0x1f48('0x37')][_0x1f48('0x57')]({'name':_0x5ec395[_0x1f48('0x38')],'resourceId':_0x5ec395['id'],'type':_0x5338bd[_0x1f48('0x38')],'sectionId':_0x5338bd['id']},{})[_0x1f48('0x22')](function(){return _0x15a80c;});}else{return _0x15a80c;}})['catch'](function(_0x5293c3){logger[_0x1f48('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5293c3);throw _0x5293c3;});}return _0x15a80c;})['then'](respondWithResult(_0x4b21aa,0xc9))[_0x1f48('0x60')](handleError(_0x4b21aa,null));};exports[_0x1f48('0x36')]=function(_0x21e861,_0x87673a){if(_0x21e861[_0x1f48('0x61')]['id']){delete _0x21e861[_0x1f48('0x61')]['id'];}return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x21e861['params']['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x87673a,null))[_0x1f48('0x22')](saveUpdates(_0x21e861[_0x1f48('0x61')],null))[_0x1f48('0x22')](respondWithResult(_0x87673a,null))['catch'](handleError(_0x87673a,null));};exports[_0x1f48('0x62')]=function(_0x323437,_0x3cc886){return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x323437[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x3cc886,null))[_0x1f48('0x22')](removeEntity(_0x3cc886,null))[_0x1f48('0x60')](handleError(_0x3cc886,null));};exports[_0x1f48('0x63')]=function(_0x394ecf,_0x28c37e){return db['ChatQueue'][_0x1f48('0x63')]()[_0x1f48('0x22')](respondWithResult(_0x28c37e,null))['catch'](handleError(_0x28c37e,null));};exports['getMembers']=function(_0x1fb781,_0x448611,_0x3244ed){var _0x2e6cb8={'raw':!![],'where':{}},_0x578133={},_0x173c59;return db['ChatQueue']['findOne']({'where':{'id':_0x1fb781[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x448611,null))[_0x1f48('0x22')](function(_0x6db6df){if(_0x6db6df){_0x173c59=_0x6db6df[_0x1f48('0x59')]({'plain':!![]});_0x578133[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x64')][_0x1f48('0x55')]);_0x578133['query']=_[_0x1f48('0x41')](_0x1fb781[_0x1f48('0x40')]);_0x578133['filters']=_[_0x1f48('0x42')](_0x578133['model'],_0x578133['query']);_0x2e6cb8[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x578133[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x1fb781[_0x1f48('0x40')][_0x1f48('0x44')]));_0x2e6cb8[_0x1f48('0x43')]=_0x2e6cb8['attributes'][_0x1f48('0x45')]?_0x2e6cb8['attributes']:_0x578133[_0x1f48('0x3f')];if(!_0x1fb781[_0x1f48('0x40')]['hasOwnProperty'](_0x1f48('0x47'))){_0x2e6cb8['limit']=qs['limit'](_0x1fb781['query']['limit']);_0x2e6cb8[_0x1f48('0x2e')]=qs[_0x1f48('0x2e')](_0x1fb781[_0x1f48('0x40')][_0x1f48('0x2e')]);}_0x2e6cb8[_0x1f48('0x48')]=qs['sort'](_0x1fb781[_0x1f48('0x40')]['sort']);_0x2e6cb8[_0x1f48('0x4a')]=qs['filters'](_[_0x1f48('0x4c')](_0x1fb781[_0x1f48('0x40')],_0x578133['filters']));_0x2e6cb8[_0x1f48('0x4a')][_0x1f48('0x65')]=_0x6db6df['id'];if(_0x1fb781[_0x1f48('0x40')]['filter']){_0x2e6cb8['where']=_[_0x1f48('0x4e')](_0x2e6cb8[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0x2e6cb8['attributes'],function(_0x53ec53){var _0x2e4b21={};_0x2e4b21[_0x53ec53]={'$like':'%'+_0x1fb781['query']['filter']+'%'};return _0x2e4b21;})});}_0x2e6cb8=_[_0x1f48('0x4e')]({},_0x2e6cb8,_0x1fb781['options']);return db['UserChatQueue'][_0x1f48('0x52')](_0x2e6cb8);}})[_0x1f48('0x22')](function(_0x47c438){if(_0x47c438){return db[_0x1f48('0x66')][_0x1f48('0x67')]({'where':{'id':_[_0x1f48('0x3b')](_0x47c438,_0x1f48('0x68')),'role':_0x1f48('0x69')},'attributes':['id',_0x1f48('0x38'),_0x1f48('0x6a'),'updatedAt',_0x1f48('0x6b')]});}})[_0x1f48('0x22')](function(_0x52cbfa){if(_0x52cbfa){return{'count':_0x52cbfa['count'],'rows':_[_0x1f48('0x3b')](_0x52cbfa[_0x1f48('0x53')],function(_0x3a00fb){return{'membername':_0x3a00fb['name'],'UserId':_0x3a00fb['id'],'queue_name':_0x173c59['name'],'ChatQueueId':_0x173c59['id'],'interface':util[_0x1f48('0x6c')](_0x1f48('0x6d'),_0x1f48('0x6e'),_0x3a00fb['name']),'penalty':0x0,'paused':_0x3a00fb[_0x1f48('0x6a')],'createdAt':_0x3a00fb[_0x1f48('0x6b')],'updatedAt':_0x3a00fb[_0x1f48('0x6f')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x448611,_0x2e6cb8))[_0x1f48('0x60')](handleError(_0x448611,null));};exports[_0x1f48('0x70')]=function(_0x414ae8,_0x260e2b,_0x4452a7){var _0xf07679={};var _0x52a94d={};var _0x467dc5;var _0x23f59f;return db[_0x1f48('0x50')]['findOne']({'where':{'id':_0x414ae8[_0x1f48('0x54')]['id']}})['then'](handleEntityNotFound(_0x260e2b,null))[_0x1f48('0x22')](function(_0x1abed2){if(_0x1abed2){_0x467dc5=_0x1abed2;_0x52a94d[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db['Team']['rawAttributes']);_0x52a94d['query']=_[_0x1f48('0x41')](_0x414ae8['query']);_0x52a94d[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x52a94d[_0x1f48('0x3f')],_0x52a94d[_0x1f48('0x40')]);_0xf07679[_0x1f48('0x43')]=_['intersection'](_0x52a94d[_0x1f48('0x3f')],qs['fields'](_0x414ae8[_0x1f48('0x40')][_0x1f48('0x44')]));_0xf07679[_0x1f48('0x43')]=_0xf07679[_0x1f48('0x43')][_0x1f48('0x45')]?_0xf07679[_0x1f48('0x43')]:_0x52a94d[_0x1f48('0x3f')];_0xf07679[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x414ae8[_0x1f48('0x40')][_0x1f48('0x49')]);_0xf07679['where']=qs[_0x1f48('0x4b')](_[_0x1f48('0x4c')](_0x414ae8['query'],_0x52a94d[_0x1f48('0x4b')]));if(_0x414ae8[_0x1f48('0x40')][_0x1f48('0x4d')]){_0xf07679['where']=_[_0x1f48('0x4e')](_0xf07679[_0x1f48('0x4a')],{'$or':_[_0x1f48('0x3b')](_0xf07679['attributes'],function(_0x5d9f8c){var _0x1ae10f={};_0x1ae10f[_0x5d9f8c]={'$like':'%'+_0x414ae8[_0x1f48('0x40')][_0x1f48('0x4d')]+'%'};return _0x1ae10f;})});}_0xf07679=_[_0x1f48('0x4e')]({},_0xf07679,_0x414ae8['options']);return _0x467dc5[_0x1f48('0x70')](_0xf07679);}})[_0x1f48('0x22')](function(_0x244d0a){if(_0x244d0a){_0x23f59f=_0x244d0a[_0x1f48('0x45')];if(!_0x414ae8[_0x1f48('0x40')][_0x1f48('0x46')](_0x1f48('0x47'))){_0xf07679[_0x1f48('0x30')]=qs[_0x1f48('0x30')](_0x414ae8['query'][_0x1f48('0x30')]);_0xf07679['offset']=qs[_0x1f48('0x2e')](_0x414ae8['query'][_0x1f48('0x2e')]);}return _0x467dc5[_0x1f48('0x70')](_0xf07679);}})['then'](function(_0x162440){if(_0x162440){return _0x162440?{'count':_0x23f59f,'rows':_0x162440}:null;}})[_0x1f48('0x22')](respondWithResult(_0x260e2b,null))[_0x1f48('0x60')](handleError(_0x260e2b,null));};exports[_0x1f48('0x71')]=function(_0x591979,_0x83cba8,_0x5d2d2a){var _0x5e127c=_0x591979['body'][_0x1f48('0x72')];return db[_0x1f48('0x73')][_0x1f48('0x52')]({'where':{'id':_0x5e127c},'attributes':['id'],'include':[{'model':db[_0x1f48('0x66')],'as':_0x1f48('0x74'),'attributes':['id',_0x1f48('0x38'),_0x1f48('0x75'),_0x1f48('0x76'),_0x1f48('0x77')],'raw':!![]}]})[_0x1f48('0x22')](function(_0x87bf13){if(_0x87bf13){var _0xedd4bc=_[_0x1f48('0x78')](_0x87bf13,function(_0x45e7a5){var _0x523b61=_0x45e7a5[_0x1f48('0x59')]({'plain':!![]});return _0x523b61['Agents'];});return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x591979[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](function(_0x560ae6){return db[_0x1f48('0x79')][_0x1f48('0x7a')](function(_0x21bd83){return _0x560ae6[_0x1f48('0x71')](_0x5e127c,{'transaction':_0x21bd83})[_0x1f48('0x22')](function(){return BPromise[_0x1f48('0x7b')](_0xedd4bc,function(_0x25fdf3){return db[_0x1f48('0x64')][_0x1f48('0x7c')]({'where':{'UserId':_0x25fdf3['id'],'ChatQueueId':_0x591979[_0x1f48('0x54')]['id']},'transaction':_0x21bd83});});})['then'](function(){_0xedd4bc[_0x1f48('0x7d')](function(_0x152da7){socket['emit'](_0x1f48('0x7e'),{'UserId':_0x152da7['id'],'ChatQueueId':_0x560ae6['id']});});});});});}})[_0x1f48('0x22')](respondWithStatusCode(_0x83cba8,null))[_0x1f48('0x60')](handleError(_0x83cba8,null));};exports['removeTeams']=function(_0x2978ff,_0x5e3424,_0x25efcc){return db['Team'][_0x1f48('0x52')]({'where':{'id':_0x2978ff[_0x1f48('0x40')][_0x1f48('0x72')]},'attributes':['id'],'include':[{'model':db[_0x1f48('0x66')],'as':_0x1f48('0x74'),'attributes':['id'],'raw':!![]}]})[_0x1f48('0x22')](handleEntityNotFound(_0x5e3424,null))[_0x1f48('0x22')](function(_0x2c313e){var _0xaa57ba=_[_0x1f48('0x3b')](_0x2c313e,'id');var _0x190067=[];var _0x5e207c=[];var _0x221ab4=squel['select']();_0x221ab4['field'](_0x1f48('0x7f'))[_0x1f48('0x80')](_0x1f48('0x81'),'tq')[_0x1f48('0x82')](_0x1f48('0x83'),'ut',_0x1f48('0x84'))[_0x1f48('0x4a')](_0x1f48('0x85'),_0x2978ff[_0x1f48('0x54')]['id']);for(var _0x2e1b42=0x0;_0x2e1b42<_0x2c313e[_0x1f48('0x45')];_0x2e1b42+=0x1){let _0x28375e=_0x2c313e[_0x2e1b42];for(var _0x30b2b5=0x0;_0x30b2b5<_0x28375e[_0x1f48('0x74')][_0x1f48('0x45')];_0x30b2b5+=0x1){let _0x309e77=_0x28375e['Agents'][_0x30b2b5];var _0x473dcf=_0x221ab4[_0x1f48('0x86')]();_0x473dcf['where']('ut.UserId\x20=\x20?',_0x309e77['id']);_0x5e207c[_0x1f48('0x87')](db[_0x1f48('0x79')][_0x1f48('0x40')](_0x473dcf[_0x1f48('0x88')](),{'type':db[_0x1f48('0x79')][_0x1f48('0x89')]['SELECT']})[_0x1f48('0x22')](function(_0x3e85e1){if(_0x3e85e1[_0x1f48('0x45')]===0x1){return _0x309e77['id'];}else{var _0xc0998b=_[_0x1f48('0x8a')](_[_0x1f48('0x3b')](_0x3e85e1,_0x1f48('0x8b')),function(_0x1ddb70){return _[_0x1f48('0x8c')](_0xaa57ba,_0x1ddb70);});if(_0xc0998b){return _0x309e77['id'];}}}));}}return BPromise[_0x1f48('0x8d')](_0x5e207c)[_0x1f48('0x22')](function(_0x5a3d8b){_0x190067=_(_0x190067)[_0x1f48('0x8e')](_0x5a3d8b)[_0x1f48('0x8f')]()[_0x1f48('0x90')]();return db[_0x1f48('0x50')][_0x1f48('0x56')]({'where':{'id':_0x2978ff['params']['id']}})[_0x1f48('0x22')](function(_0x24433a){return db['sequelize'][_0x1f48('0x7a')](function(_0x4f0f64){return _0x24433a[_0x1f48('0x91')](_0x2978ff['query'][_0x1f48('0x72')],{'transaction':_0x4f0f64})['then'](function(){if(!_[_0x1f48('0x92')](_0x190067)){return _0x24433a['removeAgents'](_0x190067,{'transaction':_0x4f0f64});}})['then'](function(){_0x190067['forEach'](function(_0x11bc8b){socket[_0x1f48('0x93')]('userChatQueue:remove',{'UserId':_0x11bc8b,'ChatQueueId':_0x24433a['id']});});});});});});})[_0x1f48('0x22')](respondWithStatusCode(_0x5e3424,null))[_0x1f48('0x60')](handleError(_0x5e3424,null));};exports[_0x1f48('0x94')]=function(_0x16bc1d,_0x2b8a51,_0x2bdd3a){return db[_0x1f48('0x50')][_0x1f48('0x56')]({'where':{'id':_0x16bc1d[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x2b8a51,null))[_0x1f48('0x22')](function(_0x425ab0){if(_0x425ab0){return _0x425ab0['addAgents'](_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')],_[_0x1f48('0x95')](_0x16bc1d[_0x1f48('0x61')],[_0x1f48('0x72'),'id'])||{})['spread'](function(_0x3fe93d){for(var _0x66606f=0x0;_0x66606f<_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')][_0x1f48('0x45')];_0x66606f+=0x1){socket['emit'](_0x1f48('0x7e'),{'UserId':Number(_0x16bc1d[_0x1f48('0x61')][_0x1f48('0x72')][_0x66606f]),'ChatQueueId':Number(_0x16bc1d[_0x1f48('0x54')]['id'])});}return _0x3fe93d;});}})[_0x1f48('0x22')](respondWithResult(_0x2b8a51,null))['catch'](handleError(_0x2b8a51,null));};exports[_0x1f48('0x96')]=function(_0x2fb1c5,_0x5478eb,_0x8fb8cd){return db['ChatQueue'][_0x1f48('0x56')]({'where':{'id':_0x2fb1c5[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x5478eb,null))[_0x1f48('0x22')](function(_0x293395){if(_0x293395){return _0x293395['removeAgents'](_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')])['then'](function(){if(_[_0x1f48('0x97')](_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')])){for(var _0x1e4ac0=0x0;_0x1e4ac0<_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')][_0x1f48('0x45')];_0x1e4ac0+=0x1){socket[_0x1f48('0x93')](_0x1f48('0x98'),{'UserId':Number(_0x2fb1c5[_0x1f48('0x40')][_0x1f48('0x72')][_0x1e4ac0]),'ChatQueueId':Number(_0x2fb1c5[_0x1f48('0x54')]['id'])});}}else{socket[_0x1f48('0x93')](_0x1f48('0x98'),{'UserId':Number(_0x2fb1c5['query']['ids']),'ChatQueueId':Number(_0x2fb1c5['params']['id'])});}});}})['then'](respondWithStatusCode(_0x5478eb,null))[_0x1f48('0x60')](handleError(_0x5478eb,null));};exports[_0x1f48('0x99')]=function(_0x4c5dc6,_0x862e31,_0x17ac27){var _0x4f58e5={};var _0x3b2a8d={};var _0x451ddf;var _0x50aefe;return db['ChatQueue'][_0x1f48('0x9a')]({'where':{'id':_0x4c5dc6[_0x1f48('0x54')]['id']}})[_0x1f48('0x22')](handleEntityNotFound(_0x862e31,null))['then'](function(_0x53e0bc){if(_0x53e0bc){_0x451ddf=_0x53e0bc;_0x3b2a8d[_0x1f48('0x3f')]=_[_0x1f48('0x41')](db[_0x1f48('0x66')][_0x1f48('0x55')]);_0x3b2a8d['query']=_['keys'](_0x4c5dc6['query']);_0x3b2a8d[_0x1f48('0x4b')]=_[_0x1f48('0x42')](_0x3b2a8d[_0x1f48('0x3f')],_0x3b2a8d[_0x1f48('0x40')]);_0x4f58e5[_0x1f48('0x43')]=_[_0x1f48('0x42')](_0x3b2a8d[_0x1f48('0x3f')],qs[_0x1f48('0x44')](_0x4c5dc6[_0x1f48('0x40')]['fields']));_0x4f58e5[_0x1f48('0x43')]=_0x4f58e5[_0x1f48('0x43')][_0x1f48('0x45')]?_0x4f58e5[_0x1f48('0x43')]:_0x3b2a8d[_0x1f48('0x3f')];_0x4f58e5[_0x1f48('0x48')]=qs[_0x1f48('0x49')](_0x4c5dc6['query']['sort']);_0x4f58e5[_0x1f48('0x4a')]=qs['filters'](_[_0x1f48('0x4c')](_0x4c5dc6[_0x1f48('0x40')],_0x3b2a8d['filters']));if(_0x4c5dc6[_0x1f48('0x40')][_0x1f48('0x4d')]){_0x4f58e5['where']=_[_0x1f48('0x4e')](_0x4f58e5['where'],{'$or':_[_0x1f48('0x3b')](_0x4f58e5[_0x1f48('0x43')],function(_0x417f97){var _0x36a400={};_0x36a400[_0x417f97]={'$like':'%'+_0x4c5dc6[_0x1f48('0x40')]['filter']+'%'};return _0x36a400;})});}_0x4f58e5=_[_0x1f48('0x4e')]({},_0x4f58e5,_0x4c5dc6[_0x1f48('0x4f')]);return _0x451ddf[_0x1f48('0x99')](_0x4f58e5);}})[_0x1f48('0x22')](function(_0x21b5bd){if(_0x21b5bd){_0x50aefe=_0x21b5bd['length'];if(!_0x4c5dc6['query'][_0x1f48('0x46')](_0x1f48('0x47'))){_0x4f58e5[_0x1f48('0x30')]=qs[_0x1f48('0x30')](_0x4c5dc6[_0x1f48('0x40')]['limit']);_0x4f58e5[_0x1f48('0x2e')]=qs[_0x1f48('0x2e')](_0x4c5dc6['query'][_0x1f48('0x2e')]);}return _0x451ddf[_0x1f48('0x99')](_0x4f58e5);}})[_0x1f48('0x22')](function(_0x34123f){if(_0x34123f){return _0x34123f?{'count':_0x50aefe,'rows':_0x34123f}:null;}})['then'](respondWithResult(_0x862e31,null))[_0x1f48('0x60')](handleError(_0x862e31,null));};
\ No newline at end of file
index 3e13f0a..33a64c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b1=['save','update','emit','hasOwnProperty','hook','exports','ChatQueue'];(function(_0x43fdf8,_0x8426b3){var _0x1160c6=function(_0x281fb6){while(--_0x281fb6){_0x43fdf8['push'](_0x43fdf8['shift']());}};_0x1160c6(++_0x8426b3);}(_0xc3b1,0x1c6));var _0x1c3b=function(_0x7b8dc9,_0x15fec9){_0x7b8dc9=_0x7b8dc9-0x0;var _0x1fbf95=_0xc3b1[_0x7b8dc9];return _0x1fbf95;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db'][_0x1c3b('0x0')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1c3b('0x1'),'afterUpdate':_0x1c3b('0x2'),'afterDestroy':'remove'};function emitEvent(_0x1c1989){return function(_0x407298,_0x9b754b,_0x3e423f){ChatQueueEvents[_0x1c3b('0x3')](_0x1c1989+':'+_0x407298['id'],_0x407298);ChatQueueEvents['emit'](_0x1c1989,_0x407298);_0x3e423f(null);};}for(var e in events){if(events[_0x1c3b('0x4')](e)){var event=events[e];ChatQueue[_0x1c3b('0x5')](e,emitEvent(event));}}module[_0x1c3b('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0xaf5a=['remove','emit','hook','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x18d72a,_0x20db5f){var _0x37153e=function(_0x5cfd82){while(--_0x5cfd82){_0x18d72a['push'](_0x18d72a['shift']());}};_0x37153e(++_0x20db5f);}(_0xaf5a,0x144));var _0xaaf5=function(_0x40d728,_0x190ef2){_0x40d728=_0x40d728-0x0;var _0x207740=_0xaf5a[_0x40d728];return _0x207740;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xaaf5('0x0'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xaaf5('0x1')](0x0);var events={'afterCreate':_0xaaf5('0x2'),'afterUpdate':_0xaaf5('0x3'),'afterDestroy':_0xaaf5('0x4')};function emitEvent(_0x337a3){return function(_0x277e58,_0x2f9a11,_0xc037e5){ChatQueueEvents['emit'](_0x337a3+':'+_0x277e58['id'],_0x277e58);ChatQueueEvents[_0xaaf5('0x5')](_0x337a3,_0x277e58);_0xc037e5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xaaf5('0x6')](e,emitEvent(event));}}module[_0xaaf5('0x7')]=ChatQueueEvents;
\ No newline at end of file
index 2bfc0ed..81bbb59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfed5=['lodash','api','moment','bluebird','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues'];(function(_0x578b3b,_0x248d6c){var _0x34a847=function(_0x5ab69a){while(--_0x5ab69a){_0x578b3b['push'](_0x578b3b['shift']());}};_0x34a847(++_0x248d6c);}(_0xfed5,0xfc));var _0x5fed=function(_0x16d81c,_0x50533d){_0x16d81c=_0x16d81c-0x0;var _0x157970=_0xfed5[_0x16d81c];return _0x157970;};'use strict';var _=require(_0x5fed('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5fed('0x1'));var moment=require(_0x5fed('0x2'));var BPromise=require(_0x5fed('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5fed('0x4'));var rimraf=require(_0x5fed('0x5'));var config=require(_0x5fed('0x6'));var attributes=require(_0x5fed('0x7'));module[_0x5fed('0x8')]=function(_0x1508a7,_0x51bae8){return _0x1508a7[_0x5fed('0x9')](_0x5fed('0xa'),attributes,{'tableName':_0x5fed('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0cee=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','ChatQueue','lodash','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0cee,0xb2));var _0xe0ce=function(_0x3e21f5,_0x49d2e0){_0x3e21f5=_0x3e21f5-0x0;var _0x2858a7=_0x0cee[_0x3e21f5];return _0x2858a7;};'use strict';var _=require(_0xe0ce('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe0ce('0x1'));var moment=require('moment');var BPromise=require(_0xe0ce('0x2'));var rp=require(_0xe0ce('0x3'));var fs=require('fs');var path=require(_0xe0ce('0x4'));var rimraf=require(_0xe0ce('0x5'));var config=require(_0xe0ce('0x6'));var attributes=require(_0xe0ce('0x7'));module[_0xe0ce('0x8')]=function(_0x236da1,_0x3741b7){return _0x236da1['define'](_0xe0ce('0x9'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fab51a6..46628ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076b=['rpc','../../config/environment','redis','defaults','socket.io-emitter','register','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','GetChatQueue','ChatQueue','findAll','options','where','attributes','limit','include','map','model','then','find','raw','ShowChatQueue','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger'];(function(_0xa3fadc,_0xd1e16){var _0x23ecb8=function(_0x2c71f7){while(--_0x2c71f7){_0xa3fadc['push'](_0xa3fadc['shift']());}};_0x23ecb8(++_0xd1e16);}(_0x076b,0x1c1));var _0xb076=function(_0x33d643,_0x2128eb){_0x33d643=_0x33d643-0x0;var _0x32a972=_0x076b[_0x33d643];return _0x32a972;};'use strict';var _=require(_0xb076('0x0'));var util=require(_0xb076('0x1'));var moment=require(_0xb076('0x2'));var BPromise=require(_0xb076('0x3'));var rs=require(_0xb076('0x4'));var fs=require('fs');var Redis=require(_0xb076('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb076('0x6'))(_0xb076('0x7'));var config=require(_0xb076('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xb076('0x9')]=_[_0xb076('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb076('0xb'))(new Redis(config[_0xb076('0x9')]));require('./chatQueue.socket')[_0xb076('0xc')](socket);function respondWithRpcPromise(_0x2f5ba4,_0x378611,_0x348694){return new BPromise(function(_0x127b44,_0x10a011){return client['request'](_0x2f5ba4,_0x348694)['then'](function(_0x43dcb4){logger[_0xb076('0xd')](_0xb076('0xe'),_0x378611,'request\x20sent');logger[_0xb076('0xf')](_0xb076('0x10'),_0x378611,'request\x20sent',JSON['stringify'](_0x43dcb4));if(_0x43dcb4[_0xb076('0x11')]){if(_0x43dcb4[_0xb076('0x11')][_0xb076('0x12')]===0x1f4){logger[_0xb076('0x11')]('ChatQueue,\x20%s,\x20%s',_0x378611,_0x43dcb4[_0xb076('0x11')]['message']);return _0x10a011(_0x43dcb4['error']['message']);}logger['error'](_0xb076('0xe'),_0x378611,_0x43dcb4[_0xb076('0x11')]['message']);return _0x127b44(_0x43dcb4[_0xb076('0x11')][_0xb076('0x13')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x378611,_0xb076('0x14'));_0x127b44(_0x43dcb4[_0xb076('0x15')][_0xb076('0x13')]);}})[_0xb076('0x16')](function(_0x29bb92){logger['error'](_0xb076('0xe'),_0x378611,_0x29bb92);_0x10a011(_0x29bb92);});});}exports[_0xb076('0x17')]=function(_0x128232){var _0x41795b=this;return new Promise(function(_0x4733a4,_0x3b63c7){return db[_0xb076('0x18')][_0xb076('0x19')]({'raw':_0x128232[_0xb076('0x1a')]?_0x128232['options']['raw']===undefined?!![]:![]:!![],'where':_0x128232[_0xb076('0x1a')]?_0x128232[_0xb076('0x1a')][_0xb076('0x1b')]||null:null,'attributes':_0x128232['options']?_0x128232['options'][_0xb076('0x1c')]||null:null,'limit':_0x128232['options']?_0x128232[_0xb076('0x1a')][_0xb076('0x1d')]||null:null,'include':_0x128232[_0xb076('0x1a')]?_0x128232[_0xb076('0x1a')][_0xb076('0x1e')]?_[_0xb076('0x1f')](_0x128232['options'][_0xb076('0x1e')],function(_0x4b846f){return{'model':db[_0x4b846f[_0xb076('0x20')]],'as':_0x4b846f['as'],'attributes':_0x4b846f[_0xb076('0x1c')],'include':_0x4b846f[_0xb076('0x1e')]?_[_0xb076('0x1f')](_0x4b846f[_0xb076('0x1e')],function(_0x1ea796){return{'model':db[_0x1ea796[_0xb076('0x20')]],'as':_0x1ea796['as'],'attributes':_0x1ea796[_0xb076('0x1c')],'include':_0x1ea796['include']?_['map'](_0x1ea796['include'],function(_0x2ba856){return{'model':db[_0x2ba856['model']],'as':_0x2ba856['as'],'attributes':_0x2ba856[_0xb076('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb076('0x21')](function(_0x1861b2){logger[_0xb076('0xd')](_0xb076('0x17'),_0x128232);logger['debug'](_0xb076('0x17'),_0x128232,JSON['stringify'](_0x1861b2));_0x4733a4(_0x1861b2);})[_0xb076('0x16')](function(_0x5ee194){logger[_0xb076('0x11')](_0xb076('0x17'),_0x5ee194['message'],_0x128232);_0x3b63c7(_0x41795b[_0xb076('0x11')](0x1f4,_0x5ee194[_0xb076('0x13')]));});});};exports['ShowChatQueue']=function(_0x543829){var _0x405e30=this;return new Promise(function(_0x409231,_0x4da6af){return db[_0xb076('0x18')][_0xb076('0x22')]({'raw':_0x543829[_0xb076('0x1a')]?_0x543829[_0xb076('0x1a')][_0xb076('0x23')]===undefined?!![]:![]:!![],'where':_0x543829[_0xb076('0x1a')]?_0x543829[_0xb076('0x1a')]['where']||null:null,'attributes':_0x543829[_0xb076('0x1a')]?_0x543829[_0xb076('0x1a')][_0xb076('0x1c')]||null:null,'include':_0x543829['options']?_0x543829[_0xb076('0x1a')][_0xb076('0x1e')]?_[_0xb076('0x1f')](_0x543829[_0xb076('0x1a')]['include'],function(_0x586243){return{'model':db[_0x586243['model']],'as':_0x586243['as'],'attributes':_0x586243[_0xb076('0x1c')],'include':_0x586243['include']?_[_0xb076('0x1f')](_0x586243['include'],function(_0x5bc330){return{'model':db[_0x5bc330['model']],'as':_0x5bc330['as'],'attributes':_0x5bc330[_0xb076('0x1c')],'include':_0x5bc330[_0xb076('0x1e')]?_['map'](_0x5bc330[_0xb076('0x1e')],function(_0x3f6bbe){return{'model':db[_0x3f6bbe[_0xb076('0x20')]],'as':_0x3f6bbe['as'],'attributes':_0x3f6bbe[_0xb076('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb076('0x21')](function(_0x4cace9){logger[_0xb076('0xd')](_0xb076('0x24'),_0x543829);logger['debug']('ShowChatQueue',_0x543829,JSON[_0xb076('0x25')](_0x4cace9));_0x409231(_0x4cace9);})[_0xb076('0x16')](function(_0x2b4760){logger[_0xb076('0x11')](_0xb076('0x24'),_0x2b4760[_0xb076('0x13')],_0x543829);_0x4da6af(_0x405e30[_0xb076('0x11')](0x1f4,_0x2b4760[_0xb076('0x13')]));});});};
\ No newline at end of file
+var _0x6426=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetChatQueue','raw','options','where','attributes','limit','include','map','model','debug','ShowChatQueue','find','lodash','util','moment','bluebird'];(function(_0x355e0e,_0x5401d1){var _0x3a10ea=function(_0x52d4c7){while(--_0x52d4c7){_0x355e0e['push'](_0x355e0e['shift']());}};_0x3a10ea(++_0x5401d1);}(_0x6426,0x15b));var _0x6642=function(_0x518940,_0x316148){_0x518940=_0x518940-0x0;var _0x2bca4a=_0x6426[_0x518940];return _0x2bca4a;};'use strict';var _=require(_0x6642('0x0'));var util=require(_0x6642('0x1'));var moment=require(_0x6642('0x2'));var BPromise=require(_0x6642('0x3'));var rs=require(_0x6642('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6642('0x5'))['db'];var utils=require(_0x6642('0x6'));var logger=require('../../config/logger')(_0x6642('0x7'));var config=require(_0x6642('0x8'));var jayson=require(_0x6642('0x9'));var client=jayson[_0x6642('0xa')][_0x6642('0xb')]({'port':0x232a});config[_0x6642('0xc')]=_['defaults'](config[_0x6642('0xc')],{'host':_0x6642('0xd'),'port':0x18eb});var socket=require(_0x6642('0xe'))(new Redis(config[_0x6642('0xc')]));require(_0x6642('0xf'))[_0x6642('0x10')](socket);function respondWithRpcPromise(_0x18e2b3,_0x451f34,_0x15e26b){return new BPromise(function(_0x1c4e57,_0xcb2bda){return client[_0x6642('0x11')](_0x18e2b3,_0x15e26b)[_0x6642('0x12')](function(_0x588474){logger[_0x6642('0x13')](_0x6642('0x14'),_0x451f34,_0x6642('0x15'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x451f34,_0x6642('0x15'),JSON[_0x6642('0x16')](_0x588474));if(_0x588474[_0x6642('0x17')]){if(_0x588474[_0x6642('0x17')][_0x6642('0x18')]===0x1f4){logger[_0x6642('0x17')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x588474[_0x6642('0x17')][_0x6642('0x19')]);return _0xcb2bda(_0x588474[_0x6642('0x17')][_0x6642('0x19')]);}logger[_0x6642('0x17')](_0x6642('0x14'),_0x451f34,_0x588474['error'][_0x6642('0x19')]);return _0x1c4e57(_0x588474[_0x6642('0x17')][_0x6642('0x19')]);}else{logger[_0x6642('0x13')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x6642('0x15'));_0x1c4e57(_0x588474['result'][_0x6642('0x19')]);}})[_0x6642('0x1a')](function(_0x1c4bb3){logger[_0x6642('0x17')]('ChatQueue,\x20%s,\x20%s',_0x451f34,_0x1c4bb3);_0xcb2bda(_0x1c4bb3);});});}exports[_0x6642('0x1b')]=function(_0x5d5716){var _0x53082c=this;return new Promise(function(_0x29db40,_0x49198c){return db['ChatQueue']['findAll']({'raw':_0x5d5716['options']?_0x5d5716['options'][_0x6642('0x1c')]===undefined?!![]:![]:!![],'where':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x1e')]||null:null,'attributes':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x1f')]||null:null,'limit':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x20')]||null:null,'include':_0x5d5716[_0x6642('0x1d')]?_0x5d5716[_0x6642('0x1d')][_0x6642('0x21')]?_[_0x6642('0x22')](_0x5d5716['options'][_0x6642('0x21')],function(_0xd129fd){return{'model':db[_0xd129fd[_0x6642('0x23')]],'as':_0xd129fd['as'],'attributes':_0xd129fd[_0x6642('0x1f')],'include':_0xd129fd['include']?_[_0x6642('0x22')](_0xd129fd['include'],function(_0x1ff1fd){return{'model':db[_0x1ff1fd['model']],'as':_0x1ff1fd['as'],'attributes':_0x1ff1fd[_0x6642('0x1f')],'include':_0x1ff1fd[_0x6642('0x21')]?_[_0x6642('0x22')](_0x1ff1fd[_0x6642('0x21')],function(_0x54406c){return{'model':db[_0x54406c[_0x6642('0x23')]],'as':_0x54406c['as'],'attributes':_0x54406c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6642('0x12')](function(_0x152674){logger[_0x6642('0x13')]('GetChatQueue',_0x5d5716);logger[_0x6642('0x24')]('GetChatQueue',_0x5d5716,JSON['stringify'](_0x152674));_0x29db40(_0x152674);})[_0x6642('0x1a')](function(_0x5df6bf){logger[_0x6642('0x17')](_0x6642('0x1b'),_0x5df6bf[_0x6642('0x19')],_0x5d5716);_0x49198c(_0x53082c[_0x6642('0x17')](0x1f4,_0x5df6bf[_0x6642('0x19')]));});});};exports[_0x6642('0x25')]=function(_0x40e126){var _0x1b4fdd=this;return new Promise(function(_0x2cb478,_0x1f4a61){return db['ChatQueue'][_0x6642('0x26')]({'raw':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1c')]===undefined?!![]:![]:!![],'where':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1e')]||null:null,'attributes':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x1f')]||null:null,'include':_0x40e126[_0x6642('0x1d')]?_0x40e126[_0x6642('0x1d')][_0x6642('0x21')]?_[_0x6642('0x22')](_0x40e126[_0x6642('0x1d')]['include'],function(_0x87c9bd){return{'model':db[_0x87c9bd[_0x6642('0x23')]],'as':_0x87c9bd['as'],'attributes':_0x87c9bd[_0x6642('0x1f')],'include':_0x87c9bd['include']?_[_0x6642('0x22')](_0x87c9bd[_0x6642('0x21')],function(_0x4c2e87){return{'model':db[_0x4c2e87[_0x6642('0x23')]],'as':_0x4c2e87['as'],'attributes':_0x4c2e87[_0x6642('0x1f')],'include':_0x4c2e87['include']?_[_0x6642('0x22')](_0x4c2e87[_0x6642('0x21')],function(_0x45c147){return{'model':db[_0x45c147[_0x6642('0x23')]],'as':_0x45c147['as'],'attributes':_0x45c147[_0x6642('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4f62b8){logger[_0x6642('0x13')]('ShowChatQueue',_0x40e126);logger[_0x6642('0x24')]('ShowChatQueue',_0x40e126,JSON[_0x6642('0x16')](_0x4f62b8));_0x2cb478(_0x4f62b8);})['catch'](function(_0x129eff){logger['error']('ShowChatQueue',_0x129eff[_0x6642('0x19')],_0x40e126);_0x1f4a61(_0x1b4fdd['error'](0x1f4,_0x129eff[_0x6642('0x19')]));});});};
\ No newline at end of file
index 4f26e34..c49895e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['update','emit','length','chatQueue:','./chatQueue.events','remove'];(function(_0x31c6b6,_0xdd33b7){var _0x32b27b=function(_0x32f195){while(--_0x32f195){_0x31c6b6['push'](_0x31c6b6['shift']());}};_0x32b27b(++_0xdd33b7);}(_0x6aa7,0x178));var _0x76aa=function(_0x583f5c,_0x27a42f){_0x583f5c=_0x583f5c-0x0;var _0x2e3d00=_0x6aa7[_0x583f5c];return _0x2e3d00;};'use strict';var ChatQueueEvents=require(_0x76aa('0x0'));var events=['save',_0x76aa('0x1'),_0x76aa('0x2')];function createListener(_0x25c818,_0x2db4fe){return function(_0x4f007e){_0x2db4fe[_0x76aa('0x3')](_0x25c818,_0x4f007e);};}function removeListener(_0xef15ef,_0x1d6e04){return function(){ChatQueueEvents['removeListener'](_0xef15ef,_0x1d6e04);};}exports['register']=function(_0x1aceaa){for(var _0x4d53f6=0x0,_0x32dee5=events[_0x76aa('0x4')];_0x4d53f6<_0x32dee5;_0x4d53f6++){var _0xa9b695=events[_0x4d53f6];var _0x56d6bc=createListener(_0x76aa('0x5')+_0xa9b695,_0x1aceaa);ChatQueueEvents['on'](_0xa9b695,_0x56d6bc);}};
\ No newline at end of file
+var _0x17ba=['register','length','chatQueue:','./chatQueue.events','save','update','emit','removeListener'];(function(_0x4a90ea,_0x477e37){var _0x4fbdca=function(_0x37ea5e){while(--_0x37ea5e){_0x4a90ea['push'](_0x4a90ea['shift']());}};_0x4fbdca(++_0x477e37);}(_0x17ba,0xab));var _0xa17b=function(_0x979a4a,_0x23ce26){_0x979a4a=_0x979a4a-0x0;var _0x8aa004=_0x17ba[_0x979a4a];return _0x8aa004;};'use strict';var ChatQueueEvents=require(_0xa17b('0x0'));var events=[_0xa17b('0x1'),'remove',_0xa17b('0x2')];function createListener(_0x4563da,_0x2806ac){return function(_0x3c60e5){_0x2806ac[_0xa17b('0x3')](_0x4563da,_0x3c60e5);};}function removeListener(_0x38c13c,_0x11d7b7){return function(){ChatQueueEvents[_0xa17b('0x4')](_0x38c13c,_0x11d7b7);};}exports[_0xa17b('0x5')]=function(_0x3cced2){for(var _0xf72ed4=0x0,_0x2e3d43=events[_0xa17b('0x6')];_0xf72ed4<_0x2e3d43;_0xf72ed4++){var _0x57f9cd=events[_0xf72ed4];var _0x2ca4d3=createListener(_0xa17b('0x7')+_0x57f9cd,_0x3cced2);ChatQueueEvents['on'](_0x57f9cd,_0x2ca4d3);}};
\ No newline at end of file
index 44f4f33..3988aeb 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(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3da707,_0x30c36d){_0x3da707=_0x3da707-0x0;var _0x342ee7=_0x5fc3[_0x3da707];return _0x342ee7;};'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 _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(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1b5aea,_0x1afe6f){_0x1b5aea=_0x1b5aea-0x0;var _0x51cae9=_0x5fc3[_0x1b5aea];return _0x51cae9;};'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
index c408e7e..35047c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c18=['moment','sequelize','exports','STRING','DATE'];(function(_0x31922c,_0x23812a){var _0x5195f5=function(_0x2ea60c){while(--_0x2ea60c){_0x31922c['push'](_0x31922c['shift']());}};_0x5195f5(++_0x23812a);}(_0x6c18,0x195));var _0x86c1=function(_0x37adb6,_0x226bc7){_0x37adb6=_0x37adb6-0x0;var _0x374794=_0x6c18[_0x37adb6];return _0x374794;};'use strict';var moment=require(_0x86c1('0x0'));var Sequelize=require(_0x86c1('0x1'));module[_0x86c1('0x2')]={'uniqueid':{'type':Sequelize[_0x86c1('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x86c1('0x3')]},'joinAt':{'type':Sequelize[_0x86c1('0x4')]},'leaveAt':{'type':Sequelize[_0x86c1('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x86c1('0x4')]},'reason':{'type':Sequelize[_0x86c1('0x3')]}};
\ No newline at end of file
+var _0x3f7d=['moment','sequelize','exports','STRING','DATE'];(function(_0x3c3e28,_0x3247e0){var _0x5e71c2=function(_0x1f3cbb){while(--_0x1f3cbb){_0x3c3e28['push'](_0x3c3e28['shift']());}};_0x5e71c2(++_0x3247e0);}(_0x3f7d,0x18b));var _0xd3f7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f7d[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xd3f7('0x0'));var Sequelize=require(_0xd3f7('0x1'));module[_0xd3f7('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xd3f7('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xd3f7('0x4')]},'acceptAt':{'type':Sequelize[_0xd3f7('0x4')]},'exitAt':{'type':Sequelize[_0xd3f7('0x4')]},'reason':{'type':Sequelize[_0xd3f7('0x3')]}};
\ No newline at end of file
index 5669ac1..c80cedd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a1c=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','keys','find','create','body','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0a1c,0xd2));var _0xc0a1=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x0a1c[_0x46aff0];return _0x9d78cf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc0a1('0x0'));var jsonpatch=require(_0xc0a1('0x1'));var rp=require(_0xc0a1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc0a1('0x3'));var util=require(_0xc0a1('0x4'));var path=require(_0xc0a1('0x5'));var sox=require(_0xc0a1('0x6'));var csv=require(_0xc0a1('0x7'));var ejs=require(_0xc0a1('0x8'));var fs=require('fs');var fs_extra=require(_0xc0a1('0x9'));var _=require(_0xc0a1('0xa'));var squel=require(_0xc0a1('0xb'));var crypto=require(_0xc0a1('0xc'));var jsforce=require(_0xc0a1('0xd'));var deskjs=require(_0xc0a1('0xe'));var toCsv=require(_0xc0a1('0x7'));var querystring=require(_0xc0a1('0xf'));var Papa=require(_0xc0a1('0x10'));var Redis=require(_0xc0a1('0x11'));var authService=require(_0xc0a1('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc0a1('0x13'));var hardwareService=require(_0xc0a1('0x14'));var logger=require(_0xc0a1('0x15'))('api');var utils=require(_0xc0a1('0x16'));var config=require(_0xc0a1('0x17'));var licenseUtil=require(_0xc0a1('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1565f4,_0x138338){_0x138338=_0x138338||0xcc;return function(_0x4969b9){if(_0x4969b9){return _0x1565f4[_0xc0a1('0x19')](_0x138338);}return _0x1565f4[_0xc0a1('0x1a')](_0x138338)[_0xc0a1('0x1b')]();};}function respondWithResult(_0x395ade,_0x32c3b9){_0x32c3b9=_0x32c3b9||0xc8;return function(_0x517689){if(_0x517689){return _0x395ade['status'](_0x32c3b9)[_0xc0a1('0x1c')](_0x517689);}};}function respondWithFilteredResult(_0x3f5ce8,_0x49a97c){return function(_0x5a3e1d){if(_0x5a3e1d){var _0x8aa354=typeof _0x49a97c[_0xc0a1('0x1d')]==='undefined'&&typeof _0x49a97c[_0xc0a1('0x1e')]===_0xc0a1('0x1f');var _0x27ad22=_0x5a3e1d[_0xc0a1('0x20')];var _0x234067=_0x8aa354?0x0:_0x49a97c[_0xc0a1('0x1d')];var _0x36620e=_0x8aa354?_0x5a3e1d[_0xc0a1('0x20')]:_0x49a97c[_0xc0a1('0x1d')]+_0x49a97c[_0xc0a1('0x1e')];var _0x1e02aa;if(_0x36620e>=_0x27ad22){_0x36620e=_0x27ad22;_0x1e02aa=0xc8;}else{_0x1e02aa=0xce;}_0x3f5ce8[_0xc0a1('0x1a')](_0x1e02aa);return _0x3f5ce8[_0xc0a1('0x21')](_0xc0a1('0x22'),_0x234067+'-'+_0x36620e+'/'+_0x27ad22)[_0xc0a1('0x1c')](_0x5a3e1d);}return null;};}function patchUpdates(_0x3e8940){return function(_0x563987){try{jsonpatch[_0xc0a1('0x23')](_0x563987,_0x3e8940,!![]);}catch(_0x4f0f02){return BPromise[_0xc0a1('0x24')](_0x4f0f02);}return _0x563987[_0xc0a1('0x25')]();};}function saveUpdates(_0x19e24b,_0x316f1a){return function(_0x40eaa4){if(_0x40eaa4){return _0x40eaa4['update'](_0x19e24b)[_0xc0a1('0x26')](function(_0x1ae706){return _0x1ae706;});}return null;};}function removeEntity(_0x247179,_0x3e7997){return function(_0xb78441){if(_0xb78441){return _0xb78441[_0xc0a1('0x27')]()[_0xc0a1('0x26')](function(){_0x247179[_0xc0a1('0x1a')](0xcc)[_0xc0a1('0x1b')]();});}};}function handleEntityNotFound(_0x161bff,_0x5d9925){return function(_0x569816){if(!_0x569816){_0x161bff[_0xc0a1('0x19')](0x194);}return _0x569816;};}function handleError(_0xcd9b89,_0x5b5d13){_0x5b5d13=_0x5b5d13||0x1f4;return function(_0x52ba51){logger[_0xc0a1('0x28')](_0x52ba51[_0xc0a1('0x29')]);if(_0x52ba51['name']){delete _0x52ba51[_0xc0a1('0x2a')];}_0xcd9b89[_0xc0a1('0x1a')](_0x5b5d13)[_0xc0a1('0x2b')](_0x52ba51);};}exports[_0xc0a1('0x2c')]=function(_0x8f4588,_0x1814ac){var _0x114f76={},_0x2bc99f={},_0x4b4c93={'count':0x0,'rows':[]};var _0x26604b=_[_0xc0a1('0x2d')](db[_0xc0a1('0x2e')][_0xc0a1('0x2f')],function(_0x254c32){return{'name':_0x254c32[_0xc0a1('0x30')],'type':_0x254c32['type']['key']};});_0x2bc99f[_0xc0a1('0x31')]=_[_0xc0a1('0x2d')](_0x26604b,'name');_0x2bc99f[_0xc0a1('0x32')]=_['keys'](_0x8f4588[_0xc0a1('0x32')]);_0x2bc99f['filters']=_[_0xc0a1('0x33')](_0x2bc99f[_0xc0a1('0x31')],_0x2bc99f[_0xc0a1('0x32')]);_0x114f76['attributes']=_[_0xc0a1('0x33')](_0x2bc99f['model'],qs[_0xc0a1('0x34')](_0x8f4588[_0xc0a1('0x32')]['fields']));_0x114f76[_0xc0a1('0x35')]=_0x114f76[_0xc0a1('0x35')][_0xc0a1('0x36')]?_0x114f76[_0xc0a1('0x35')]:_0x2bc99f[_0xc0a1('0x31')];if(!_0x8f4588[_0xc0a1('0x32')]['hasOwnProperty'](_0xc0a1('0x37'))){_0x114f76[_0xc0a1('0x1e')]=qs[_0xc0a1('0x1e')](_0x8f4588[_0xc0a1('0x32')][_0xc0a1('0x1e')]);_0x114f76[_0xc0a1('0x1d')]=qs['offset'](_0x8f4588['query'][_0xc0a1('0x1d')]);}_0x114f76[_0xc0a1('0x38')]=qs[_0xc0a1('0x39')](_0x8f4588['query']['sort']);_0x114f76[_0xc0a1('0x3a')]=qs[_0xc0a1('0x3b')](_[_0xc0a1('0x3c')](_0x8f4588['query'],_0x2bc99f[_0xc0a1('0x3b')]),_0x26604b);if(_0x8f4588[_0xc0a1('0x32')]['filter']){_0x114f76[_0xc0a1('0x3a')]=_[_0xc0a1('0x3d')](_0x114f76['where'],{'$or':_[_0xc0a1('0x2d')](_0x26604b,function(_0x32f40b){if(_0x32f40b[_0xc0a1('0x3e')]!==_0xc0a1('0x3f')){var _0x442c1c={};_0x442c1c[_0x32f40b[_0xc0a1('0x2a')]]={'$like':'%'+_0x8f4588[_0xc0a1('0x32')][_0xc0a1('0x40')]+'%'};return _0x442c1c;}})});}_0x114f76=_['merge']({},_0x114f76,_0x8f4588['options']);var _0x300df9={'where':_0x114f76[_0xc0a1('0x3a')]};return db['ChatQueueReport'][_0xc0a1('0x20')](_0x300df9)[_0xc0a1('0x26')](function(_0x273b64){_0x4b4c93[_0xc0a1('0x20')]=_0x273b64;if(_0x8f4588[_0xc0a1('0x32')][_0xc0a1('0x41')]){_0x114f76['include']=[{'all':!![]}];}return db[_0xc0a1('0x2e')][_0xc0a1('0x42')](_0x114f76);})['then'](function(_0x289501){_0x4b4c93[_0xc0a1('0x43')]=_0x289501;return _0x4b4c93;})[_0xc0a1('0x26')](respondWithFilteredResult(_0x1814ac,_0x114f76))[_0xc0a1('0x44')](handleError(_0x1814ac,null));};exports[_0xc0a1('0x45')]=function(_0x1b58ec,_0x41d73d){var _0x4d9b35={'raw':!![],'where':{'id':_0x1b58ec[_0xc0a1('0x46')]['id']}},_0x542fb3={};_0x542fb3['model']=_[_0xc0a1('0x47')](db['ChatQueueReport']['rawAttributes']);_0x542fb3[_0xc0a1('0x32')]=_[_0xc0a1('0x47')](_0x1b58ec[_0xc0a1('0x32')]);_0x542fb3[_0xc0a1('0x3b')]=_[_0xc0a1('0x33')](_0x542fb3[_0xc0a1('0x31')],_0x542fb3[_0xc0a1('0x32')]);_0x4d9b35[_0xc0a1('0x35')]=_[_0xc0a1('0x33')](_0x542fb3[_0xc0a1('0x31')],qs[_0xc0a1('0x34')](_0x1b58ec[_0xc0a1('0x32')][_0xc0a1('0x34')]));_0x4d9b35[_0xc0a1('0x35')]=_0x4d9b35[_0xc0a1('0x35')][_0xc0a1('0x36')]?_0x4d9b35['attributes']:_0x542fb3[_0xc0a1('0x31')];if(_0x1b58ec[_0xc0a1('0x32')]['includeAll']){_0x4d9b35['include']=[{'all':!![]}];}_0x4d9b35=_[_0xc0a1('0x3d')]({},_0x4d9b35,_0x1b58ec['options']);return db[_0xc0a1('0x2e')][_0xc0a1('0x48')](_0x4d9b35)[_0xc0a1('0x26')](handleEntityNotFound(_0x41d73d,null))['then'](respondWithResult(_0x41d73d,null))[_0xc0a1('0x44')](handleError(_0x41d73d,null));};exports[_0xc0a1('0x49')]=function(_0x5b1244,_0x934f6d){return db[_0xc0a1('0x2e')]['create'](_0x5b1244['body'],{})[_0xc0a1('0x26')](respondWithResult(_0x934f6d,0xc9))[_0xc0a1('0x44')](handleError(_0x934f6d,null));};exports['update']=function(_0x437380,_0x216a82){if(_0x437380[_0xc0a1('0x4a')]['id']){delete _0x437380[_0xc0a1('0x4a')]['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x437380[_0xc0a1('0x46')]['id']}})['then'](handleEntityNotFound(_0x216a82,null))[_0xc0a1('0x26')](saveUpdates(_0x437380['body'],null))[_0xc0a1('0x26')](respondWithResult(_0x216a82,null))['catch'](handleError(_0x216a82,null));};exports[_0xc0a1('0x27')]=function(_0x280bbc,_0x5b5069){return db[_0xc0a1('0x2e')][_0xc0a1('0x48')]({'where':{'id':_0x280bbc[_0xc0a1('0x46')]['id']}})[_0xc0a1('0x26')](handleEntityNotFound(_0x5b5069,null))[_0xc0a1('0x26')](removeEntity(_0x5b5069,null))['catch'](handleError(_0x5b5069,null));};exports['describe']=function(_0x46fd8d,_0x4820bf){return db[_0xc0a1('0x2e')]['describe']()[_0xc0a1('0x26')](respondWithResult(_0x4820bf,null))[_0xc0a1('0x44')](handleError(_0x4820bf,null));};
\ No newline at end of file
+var _0xf96b=['model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','params','includeAll','find','create','body','catch','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','key'];(function(_0xc2c13a,_0x1070d3){var _0x2b8e2f=function(_0x3ebc15){while(--_0x3ebc15){_0xc2c13a['push'](_0xc2c13a['shift']());}};_0x2b8e2f(++_0x1070d3);}(_0xf96b,0x109));var _0xbf96=function(_0x11af48,_0x50d630){_0x11af48=_0x11af48-0x0;var _0xfed59c=_0xf96b[_0x11af48];return _0xfed59c;};'use strict';var emlformat=require(_0xbf96('0x0'));var rimraf=require(_0xbf96('0x1'));var zipdir=require(_0xbf96('0x2'));var jsonpatch=require(_0xbf96('0x3'));var rp=require(_0xbf96('0x4'));var moment=require(_0xbf96('0x5'));var BPromise=require(_0xbf96('0x6'));var Mustache=require(_0xbf96('0x7'));var util=require(_0xbf96('0x8'));var path=require(_0xbf96('0x9'));var sox=require(_0xbf96('0xa'));var csv=require(_0xbf96('0xb'));var ejs=require(_0xbf96('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf96('0xd'));var squel=require(_0xbf96('0xe'));var crypto=require(_0xbf96('0xf'));var jsforce=require(_0xbf96('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xbf96('0xb'));var querystring=require(_0xbf96('0x11'));var Papa=require(_0xbf96('0x12'));var Redis=require(_0xbf96('0x13'));var authService=require(_0xbf96('0x14'));var qs=require(_0xbf96('0x15'));var as=require(_0xbf96('0x16'));var hardwareService=require(_0xbf96('0x17'));var logger=require('../../config/logger')(_0xbf96('0x18'));var utils=require(_0xbf96('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xbf96('0x1a'));var db=require(_0xbf96('0x1b'))['db'];function respondWithStatusCode(_0x17115d,_0x48a709){_0x48a709=_0x48a709||0xcc;return function(_0xafd96c){if(_0xafd96c){return _0x17115d[_0xbf96('0x1c')](_0x48a709);}return _0x17115d[_0xbf96('0x1d')](_0x48a709)[_0xbf96('0x1e')]();};}function respondWithResult(_0x424819,_0x3e7a6b){_0x3e7a6b=_0x3e7a6b||0xc8;return function(_0x59c141){if(_0x59c141){return _0x424819[_0xbf96('0x1d')](_0x3e7a6b)[_0xbf96('0x1f')](_0x59c141);}};}function respondWithFilteredResult(_0x1f1814,_0x2dc5c4){return function(_0x38205a){if(_0x38205a){var _0xbb399b=typeof _0x2dc5c4[_0xbf96('0x20')]==='undefined'&&typeof _0x2dc5c4[_0xbf96('0x21')]==='undefined';var _0x41254f=_0x38205a[_0xbf96('0x22')];var _0x568425=_0xbb399b?0x0:_0x2dc5c4[_0xbf96('0x20')];var _0x64b2f9=_0xbb399b?_0x38205a['count']:_0x2dc5c4[_0xbf96('0x20')]+_0x2dc5c4[_0xbf96('0x21')];var _0x2bef74;if(_0x64b2f9>=_0x41254f){_0x64b2f9=_0x41254f;_0x2bef74=0xc8;}else{_0x2bef74=0xce;}_0x1f1814[_0xbf96('0x1d')](_0x2bef74);return _0x1f1814[_0xbf96('0x23')](_0xbf96('0x24'),_0x568425+'-'+_0x64b2f9+'/'+_0x41254f)[_0xbf96('0x1f')](_0x38205a);}return null;};}function patchUpdates(_0x5450e4){return function(_0x38cc22){try{jsonpatch['apply'](_0x38cc22,_0x5450e4,!![]);}catch(_0xa44474){return BPromise[_0xbf96('0x25')](_0xa44474);}return _0x38cc22[_0xbf96('0x26')]();};}function saveUpdates(_0x4c65ae,_0x21cf3c){return function(_0x55025c){if(_0x55025c){return _0x55025c[_0xbf96('0x27')](_0x4c65ae)[_0xbf96('0x28')](function(_0xdd84d9){return _0xdd84d9;});}return null;};}function removeEntity(_0x4e511b,_0x1c92f9){return function(_0xf132af){if(_0xf132af){return _0xf132af['destroy']()['then'](function(){_0x4e511b[_0xbf96('0x1d')](0xcc)[_0xbf96('0x1e')]();});}};}function handleEntityNotFound(_0x363379,_0x56d265){return function(_0x527558){if(!_0x527558){_0x363379['sendStatus'](0x194);}return _0x527558;};}function handleError(_0x57c5cd,_0x8c3967){_0x8c3967=_0x8c3967||0x1f4;return function(_0x30f345){logger[_0xbf96('0x29')](_0x30f345[_0xbf96('0x2a')]);if(_0x30f345['name']){delete _0x30f345[_0xbf96('0x2b')];}_0x57c5cd[_0xbf96('0x1d')](_0x8c3967)[_0xbf96('0x2c')](_0x30f345);};}exports[_0xbf96('0x2d')]=function(_0x5e99b3,_0x59edc6){var _0x16a659={},_0x1366e6={},_0x4138ef={'count':0x0,'rows':[]};var _0xb248da=_[_0xbf96('0x2e')](db[_0xbf96('0x2f')][_0xbf96('0x30')],function(_0x2764e0){return{'name':_0x2764e0['fieldName'],'type':_0x2764e0[_0xbf96('0x31')][_0xbf96('0x32')]};});_0x1366e6[_0xbf96('0x33')]=_['map'](_0xb248da,'name');_0x1366e6[_0xbf96('0x34')]=_['keys'](_0x5e99b3[_0xbf96('0x34')]);_0x1366e6[_0xbf96('0x35')]=_[_0xbf96('0x36')](_0x1366e6[_0xbf96('0x33')],_0x1366e6[_0xbf96('0x34')]);_0x16a659[_0xbf96('0x37')]=_[_0xbf96('0x36')](_0x1366e6[_0xbf96('0x33')],qs[_0xbf96('0x38')](_0x5e99b3['query'][_0xbf96('0x38')]));_0x16a659['attributes']=_0x16a659[_0xbf96('0x37')][_0xbf96('0x39')]?_0x16a659[_0xbf96('0x37')]:_0x1366e6['model'];if(!_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x3a')](_0xbf96('0x3b'))){_0x16a659[_0xbf96('0x21')]=qs[_0xbf96('0x21')](_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x21')]);_0x16a659[_0xbf96('0x20')]=qs['offset'](_0x5e99b3[_0xbf96('0x34')]['offset']);}_0x16a659[_0xbf96('0x3c')]=qs[_0xbf96('0x3d')](_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x3d')]);_0x16a659[_0xbf96('0x3e')]=qs['filters'](_[_0xbf96('0x3f')](_0x5e99b3['query'],_0x1366e6[_0xbf96('0x35')]),_0xb248da);if(_0x5e99b3[_0xbf96('0x34')][_0xbf96('0x40')]){_0x16a659[_0xbf96('0x3e')]=_[_0xbf96('0x41')](_0x16a659[_0xbf96('0x3e')],{'$or':_['map'](_0xb248da,function(_0x1ef8cd){if(_0x1ef8cd['type']!==_0xbf96('0x42')){var _0x3db5f7={};_0x3db5f7[_0x1ef8cd[_0xbf96('0x2b')]]={'$like':'%'+_0x5e99b3['query'][_0xbf96('0x40')]+'%'};return _0x3db5f7;}})});}_0x16a659=_[_0xbf96('0x41')]({},_0x16a659,_0x5e99b3[_0xbf96('0x43')]);var _0x4caef2={'where':_0x16a659[_0xbf96('0x3e')]};return db[_0xbf96('0x2f')][_0xbf96('0x22')](_0x4caef2)[_0xbf96('0x28')](function(_0x17f345){_0x4138ef[_0xbf96('0x22')]=_0x17f345;if(_0x5e99b3[_0xbf96('0x34')]['includeAll']){_0x16a659[_0xbf96('0x44')]=[{'all':!![]}];}return db[_0xbf96('0x2f')]['findAll'](_0x16a659);})[_0xbf96('0x28')](function(_0x3cfb3c){_0x4138ef[_0xbf96('0x45')]=_0x3cfb3c;return _0x4138ef;})[_0xbf96('0x28')](respondWithFilteredResult(_0x59edc6,_0x16a659))['catch'](handleError(_0x59edc6,null));};exports[_0xbf96('0x46')]=function(_0x1b6cfd,_0x1a39d1){var _0x2b565f={'raw':!![],'where':{'id':_0x1b6cfd[_0xbf96('0x47')]['id']}},_0x27b78d={};_0x27b78d['model']=_['keys'](db[_0xbf96('0x2f')][_0xbf96('0x30')]);_0x27b78d[_0xbf96('0x34')]=_['keys'](_0x1b6cfd[_0xbf96('0x34')]);_0x27b78d[_0xbf96('0x35')]=_[_0xbf96('0x36')](_0x27b78d[_0xbf96('0x33')],_0x27b78d[_0xbf96('0x34')]);_0x2b565f[_0xbf96('0x37')]=_[_0xbf96('0x36')](_0x27b78d[_0xbf96('0x33')],qs[_0xbf96('0x38')](_0x1b6cfd['query'][_0xbf96('0x38')]));_0x2b565f['attributes']=_0x2b565f['attributes'][_0xbf96('0x39')]?_0x2b565f['attributes']:_0x27b78d[_0xbf96('0x33')];if(_0x1b6cfd['query'][_0xbf96('0x48')]){_0x2b565f[_0xbf96('0x44')]=[{'all':!![]}];}_0x2b565f=_[_0xbf96('0x41')]({},_0x2b565f,_0x1b6cfd['options']);return db[_0xbf96('0x2f')][_0xbf96('0x49')](_0x2b565f)['then'](handleEntityNotFound(_0x1a39d1,null))[_0xbf96('0x28')](respondWithResult(_0x1a39d1,null))['catch'](handleError(_0x1a39d1,null));};exports[_0xbf96('0x4a')]=function(_0xa852de,_0x1bb569){return db[_0xbf96('0x2f')][_0xbf96('0x4a')](_0xa852de[_0xbf96('0x4b')],{})['then'](respondWithResult(_0x1bb569,0xc9))[_0xbf96('0x4c')](handleError(_0x1bb569,null));};exports[_0xbf96('0x27')]=function(_0x86135f,_0x4bb10e){if(_0x86135f['body']['id']){delete _0x86135f[_0xbf96('0x4b')]['id'];}return db[_0xbf96('0x2f')][_0xbf96('0x49')]({'where':{'id':_0x86135f[_0xbf96('0x47')]['id']}})[_0xbf96('0x28')](handleEntityNotFound(_0x4bb10e,null))['then'](saveUpdates(_0x86135f[_0xbf96('0x4b')],null))[_0xbf96('0x28')](respondWithResult(_0x4bb10e,null))[_0xbf96('0x4c')](handleError(_0x4bb10e,null));};exports[_0xbf96('0x4d')]=function(_0x5874b7,_0x4f173f){return db[_0xbf96('0x2f')][_0xbf96('0x49')]({'where':{'id':_0x5874b7[_0xbf96('0x47')]['id']}})['then'](handleEntityNotFound(_0x4f173f,null))[_0xbf96('0x28')](removeEntity(_0x4f173f,null))['catch'](handleError(_0x4f173f,null));};exports['describe']=function(_0x45129c,_0x32cca5){return db[_0xbf96('0x2f')][_0xbf96('0x4e')]()[_0xbf96('0x28')](respondWithResult(_0x32cca5,null))['catch'](handleError(_0x32cca5,null));};
\ No newline at end of file
index cd8ff79..8fe4206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x432191,_0x31e3fe){var _0x214512=function(_0x5d2e8f){while(--_0x5d2e8f){_0x432191['push'](_0x432191['shift']());}};_0x214512(++_0x31e3fe);}(_0x757a,0xde));var _0xa757=function(_0x3bb955,_0x512838){_0x3bb955=_0x3bb955-0x0;var _0x346ae5=_0x757a[_0x3bb955];return _0x346ae5;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x216dae,_0x373b5c){var _0x1dd153=function(_0x331a5e){while(--_0x331a5e){_0x216dae['push'](_0x216dae['shift']());}};_0x1dd153(++_0x373b5c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c61437d..b766515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f65=['util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','then','UpdateChatQueueReport','update','raw','where','attributes','limit','debug','lodash'];(function(_0xcfd77b,_0x31d11b){var _0x4b8646=function(_0x383103){while(--_0x383103){_0xcfd77b['push'](_0xcfd77b['shift']());}};_0x4b8646(++_0x31d11b);}(_0x6f65,0x7f));var _0x56f6=function(_0x34cec7,_0x1e589b){_0x34cec7=_0x34cec7-0x0;var _0x502b23=_0x6f65[_0x34cec7];return _0x502b23;};'use strict';var _=require(_0x56f6('0x0'));var util=require(_0x56f6('0x1'));var moment=require(_0x56f6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x56f6('0x3'));var logger=require(_0x56f6('0x4'))(_0x56f6('0x5'));var config=require(_0x56f6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x56f6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x41c26e,_0x28048a,_0x39a233){return new BPromise(function(_0x4a15a2,_0x4ace7a){return client[_0x56f6('0x8')](_0x41c26e,_0x39a233)['then'](function(_0x4aa948){logger[_0x56f6('0x9')](_0x56f6('0xa'),_0x28048a,_0x56f6('0xb'));logger['debug'](_0x56f6('0xc'),_0x28048a,'request\x20sent',JSON[_0x56f6('0xd')](_0x4aa948));if(_0x4aa948[_0x56f6('0xe')]){if(_0x4aa948[_0x56f6('0xe')][_0x56f6('0xf')]===0x1f4){logger['error'](_0x56f6('0xa'),_0x28048a,_0x4aa948[_0x56f6('0xe')][_0x56f6('0x10')]);return _0x4ace7a(_0x4aa948[_0x56f6('0xe')][_0x56f6('0x10')]);}logger[_0x56f6('0xe')](_0x56f6('0xa'),_0x28048a,_0x4aa948[_0x56f6('0xe')][_0x56f6('0x10')]);return _0x4a15a2(_0x4aa948[_0x56f6('0xe')][_0x56f6('0x10')]);}else{logger[_0x56f6('0x9')](_0x56f6('0xa'),_0x28048a,'request\x20sent');_0x4a15a2(_0x4aa948[_0x56f6('0x11')]['message']);}})[_0x56f6('0x12')](function(_0x4c7e18){logger[_0x56f6('0xe')](_0x56f6('0xa'),_0x28048a,_0x4c7e18);_0x4ace7a(_0x4c7e18);});});}exports[_0x56f6('0x13')]=function(_0x4e6989){var _0x442a51=this;return new Promise(function(_0x18a86c,_0x1d6aca){return db[_0x56f6('0x14')][_0x56f6('0x15')](_0x4e6989[_0x56f6('0x16')],{'raw':_0x4e6989[_0x56f6('0x17')]?_0x4e6989['options']['raw']===undefined?!![]:![]:!![]})[_0x56f6('0x18')](function(_0x19939c){logger['info'](_0x56f6('0x13'),_0x4e6989);logger['debug'](_0x56f6('0x13'),_0x4e6989,JSON[_0x56f6('0xd')](_0x19939c));_0x18a86c(_0x19939c);})['catch'](function(_0x5ee9db){logger[_0x56f6('0xe')]('CreateChatQueueReport',_0x5ee9db['message'],_0x4e6989);_0x1d6aca(_0x442a51['error'](0x1f4,_0x5ee9db[_0x56f6('0x10')]));});});};exports[_0x56f6('0x19')]=function(_0x1772a2){var _0xcd457d=this;return new Promise(function(_0x3ff33e,_0x362a58){return db[_0x56f6('0x14')][_0x56f6('0x1a')](_0x1772a2[_0x56f6('0x16')],{'raw':_0x1772a2[_0x56f6('0x17')]?_0x1772a2[_0x56f6('0x17')][_0x56f6('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1772a2[_0x56f6('0x17')]?_0x1772a2[_0x56f6('0x17')][_0x56f6('0x1c')]||null:null,'attributes':_0x1772a2[_0x56f6('0x17')]?_0x1772a2[_0x56f6('0x17')][_0x56f6('0x1d')]||null:null,'limit':_0x1772a2[_0x56f6('0x17')]?_0x1772a2[_0x56f6('0x17')][_0x56f6('0x1e')]||null:null})['then'](function(_0x122a49){logger[_0x56f6('0x9')](_0x56f6('0x19'),_0x1772a2);logger[_0x56f6('0x1f')](_0x56f6('0x19'),_0x1772a2,JSON['stringify'](_0x122a49));_0x3ff33e(_0x122a49);})[_0x56f6('0x12')](function(_0x54840c){logger['error'](_0x56f6('0x19'),_0x54840c[_0x56f6('0x10')],_0x1772a2);_0x362a58(_0xcd457d['error'](0x1f4,_0x54840c[_0x56f6('0x10')]));});});};
\ No newline at end of file
+var _0xae1b=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','attributes','limit','UpdateChatQueueReport','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4ec4c2,_0x57310a){var _0x5141c9=function(_0x1ac9ea){while(--_0x1ac9ea){_0x4ec4c2['push'](_0x4ec4c2['shift']());}};_0x5141c9(++_0x57310a);}(_0xae1b,0x96));var _0xbae1=function(_0x29e834,_0x3817f0){_0x29e834=_0x29e834-0x0;var _0x232b53=_0xae1b[_0x29e834];return _0x232b53;};'use strict';var _=require('lodash');var util=require(_0xbae1('0x0'));var moment=require('moment');var BPromise=require(_0xbae1('0x1'));var rs=require(_0xbae1('0x2'));var fs=require('fs');var Redis=require(_0xbae1('0x3'));var db=require(_0xbae1('0x4'))['db'];var utils=require(_0xbae1('0x5'));var logger=require(_0xbae1('0x6'))('rpc');var config=require(_0xbae1('0x7'));var jayson=require(_0xbae1('0x8'));var client=jayson['client'][_0xbae1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d7130,_0xac9c47,_0x54ba1f){return new BPromise(function(_0x3f0ff5,_0x340ff9){return client['request'](_0x5d7130,_0x54ba1f)[_0xbae1('0xa')](function(_0x366106){logger[_0xbae1('0xb')](_0xbae1('0xc'),_0xac9c47,_0xbae1('0xd'));logger[_0xbae1('0xe')](_0xbae1('0xf'),_0xac9c47,_0xbae1('0xd'),JSON[_0xbae1('0x10')](_0x366106));if(_0x366106[_0xbae1('0x11')]){if(_0x366106[_0xbae1('0x11')][_0xbae1('0x12')]===0x1f4){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0xac9c47,_0x366106['error']['message']);return _0x340ff9(_0x366106[_0xbae1('0x11')][_0xbae1('0x13')]);}logger[_0xbae1('0x11')](_0xbae1('0xc'),_0xac9c47,_0x366106[_0xbae1('0x11')]['message']);return _0x3f0ff5(_0x366106[_0xbae1('0x11')][_0xbae1('0x13')]);}else{logger[_0xbae1('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0xac9c47,_0xbae1('0xd'));_0x3f0ff5(_0x366106[_0xbae1('0x14')][_0xbae1('0x13')]);}})[_0xbae1('0x15')](function(_0x7d92b7){logger[_0xbae1('0x11')](_0xbae1('0xc'),_0xac9c47,_0x7d92b7);_0x340ff9(_0x7d92b7);});});}exports[_0xbae1('0x16')]=function(_0x1190b7){var _0x19b91c=this;return new Promise(function(_0x2943df,_0x3fd99b){return db[_0xbae1('0x17')][_0xbae1('0x18')](_0x1190b7[_0xbae1('0x19')],{'raw':_0x1190b7['options']?_0x1190b7[_0xbae1('0x1a')][_0xbae1('0x1b')]===undefined?!![]:![]:!![]})[_0xbae1('0xa')](function(_0x17a4b6){logger[_0xbae1('0xb')](_0xbae1('0x16'),_0x1190b7);logger[_0xbae1('0xe')](_0xbae1('0x16'),_0x1190b7,JSON[_0xbae1('0x10')](_0x17a4b6));_0x2943df(_0x17a4b6);})[_0xbae1('0x15')](function(_0x21f994){logger[_0xbae1('0x11')](_0xbae1('0x16'),_0x21f994[_0xbae1('0x13')],_0x1190b7);_0x3fd99b(_0x19b91c[_0xbae1('0x11')](0x1f4,_0x21f994[_0xbae1('0x13')]));});});};exports['UpdateChatQueueReport']=function(_0x45d1db){var _0x1086cd=this;return new Promise(function(_0x5b219c,_0x4ea545){return db[_0xbae1('0x17')]['update'](_0x45d1db[_0xbae1('0x19')],{'raw':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')][_0xbae1('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')]['where']||null:null,'attributes':_0x45d1db[_0xbae1('0x1a')]?_0x45d1db[_0xbae1('0x1a')][_0xbae1('0x1c')]||null:null,'limit':_0x45d1db['options']?_0x45d1db['options'][_0xbae1('0x1d')]||null:null})[_0xbae1('0xa')](function(_0x9d58d7){logger[_0xbae1('0xb')](_0xbae1('0x1e'),_0x45d1db);logger[_0xbae1('0xe')](_0xbae1('0x1e'),_0x45d1db,JSON[_0xbae1('0x10')](_0x9d58d7));_0x5b219c(_0x9d58d7);})[_0xbae1('0x15')](function(_0x37dfba){logger['error'](_0xbae1('0x1e'),_0x37dfba['message'],_0x45d1db);_0x4ea545(_0x1086cd['error'](0x1f4,_0x37dfba['message']));});});};
\ No newline at end of file
index 4c93900..d73aa55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe438=['update','/:id','destroy','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','post','create'];(function(_0x3faea4,_0x410619){var _0x24f357=function(_0x5692eb){while(--_0x5692eb){_0x3faea4['push'](_0x3faea4['shift']());}};_0x24f357(++_0x410619);}(_0xe438,0xe0));var _0x8e43=function(_0xe15547,_0x51bf05){_0xe15547=_0xe15547-0x0;var _0x41ede3=_0xe438[_0xe15547];return _0x41ede3;};'use strict';var multer=require('multer');var util=require(_0x8e43('0x0'));var path=require(_0x8e43('0x1'));var timeout=require('connect-timeout');var express=require(_0x8e43('0x2'));var router=express[_0x8e43('0x3')]();var fs_extra=require(_0x8e43('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8e43('0x5'));var config=require(_0x8e43('0x6'));var controller=require(_0x8e43('0x7'));router[_0x8e43('0x8')]('/',auth[_0x8e43('0x9')](),controller[_0x8e43('0xa')]);router[_0x8e43('0x8')](_0x8e43('0xb'),auth[_0x8e43('0x9')](),controller['describe']);router[_0x8e43('0x8')]('/:id',auth[_0x8e43('0x9')](),controller['show']);router[_0x8e43('0xc')]('/',auth[_0x8e43('0x9')](),controller[_0x8e43('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x8e43('0xe')]);router['delete'](_0x8e43('0xf'),auth['isAuthenticated'](),controller[_0x8e43('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x2cb9=['post','put','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2cb9,0x146));var _0x92cb=function(_0x246334,_0x289b42){_0x246334=_0x246334-0x0;var _0x2037c0=_0x2cb9[_0x246334];return _0x2037c0;};'use strict';var multer=require(_0x92cb('0x0'));var util=require('util');var path=require(_0x92cb('0x1'));var timeout=require(_0x92cb('0x2'));var express=require('express');var router=express[_0x92cb('0x3')]();var fs_extra=require(_0x92cb('0x4'));var auth=require(_0x92cb('0x5'));var interaction=require(_0x92cb('0x6'));var config=require(_0x92cb('0x7'));var controller=require('./chatQueueReport.controller');router['get']('/',auth[_0x92cb('0x8')](),controller[_0x92cb('0x9')]);router[_0x92cb('0xa')](_0x92cb('0xb'),auth['isAuthenticated'](),controller[_0x92cb('0xc')]);router[_0x92cb('0xa')](_0x92cb('0xd'),auth[_0x92cb('0x8')](),controller['show']);router[_0x92cb('0xe')]('/',auth[_0x92cb('0x8')](),controller['create']);router[_0x92cb('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x92cb('0xd'),auth['isAuthenticated'](),controller[_0x92cb('0x10')]);module['exports']=router;
\ No newline at end of file
index fd2019a..912ac68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0xc84cea,_0x7058f1){var _0x572c6c=function(_0x512a34){while(--_0x512a34){_0xc84cea['push'](_0xc84cea['shift']());}};_0x572c6c(++_0x7058f1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x19dde4,_0xe6db22){var _0x48a213=function(_0x405116){while(--_0x405116){_0x19dde4['push'](_0x19dde4['shift']());}};_0x48a213(++_0xe6db22);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x26fc81,_0x57fc19){_0x26fc81=_0x26fc81-0x0;var _0x9feece=_0xcb91[_0x26fc81];return _0x9feece;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index eb47931..58e4c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84c=['includeAll','include','catch','show','find','create','update','body','params','destroy','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','../../config/license/util','end','offset','undefined','count','limit','status','set','Content-Range','json','apply','reject','then','sendStatus','error','stack','name','send','index','map','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','type','VIRTUAL','merge','ChatTransferReport'];(function(_0x10a710,_0x9d3947){var _0x4e190c=function(_0x4914b3){while(--_0x4914b3){_0x10a710['push'](_0x10a710['shift']());}};_0x4e190c(++_0x9d3947);}(_0xd84c,0x17d));var _0xcd84=function(_0x3a84e4,_0x5d983c){_0x3a84e4=_0x3a84e4-0x0;var _0x5efaee=_0xd84c[_0x3a84e4];return _0x5efaee;};'use strict';var emlformat=require(_0xcd84('0x0'));var rimraf=require(_0xcd84('0x1'));var zipdir=require(_0xcd84('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcd84('0x3'));var BPromise=require(_0xcd84('0x4'));var Mustache=require(_0xcd84('0x5'));var util=require(_0xcd84('0x6'));var path=require(_0xcd84('0x7'));var sox=require(_0xcd84('0x8'));var csv=require(_0xcd84('0x9'));var ejs=require(_0xcd84('0xa'));var fs=require('fs');var fs_extra=require(_0xcd84('0xb'));var _=require('lodash');var squel=require(_0xcd84('0xc'));var crypto=require(_0xcd84('0xd'));var jsforce=require(_0xcd84('0xe'));var deskjs=require(_0xcd84('0xf'));var toCsv=require(_0xcd84('0x9'));var querystring=require('querystring');var Papa=require(_0xcd84('0x10'));var Redis=require('ioredis');var authService=require(_0xcd84('0x11'));var qs=require(_0xcd84('0x12'));var as=require(_0xcd84('0x13'));var hardwareService=require(_0xcd84('0x14'));var logger=require(_0xcd84('0x15'))(_0xcd84('0x16'));var utils=require(_0xcd84('0x17'));var config=require(_0xcd84('0x18'));var licenseUtil=require(_0xcd84('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21dacc,_0x251746){_0x251746=_0x251746||0xcc;return function(_0x4755e7){if(_0x4755e7){return _0x21dacc['sendStatus'](_0x251746);}return _0x21dacc['status'](_0x251746)[_0xcd84('0x1a')]();};}function respondWithResult(_0x1a1232,_0x476887){_0x476887=_0x476887||0xc8;return function(_0x286685){if(_0x286685){return _0x1a1232['status'](_0x476887)['json'](_0x286685);}};}function respondWithFilteredResult(_0x32d66d,_0x58d769){return function(_0x1f8853){if(_0x1f8853){var _0x28c0dc=typeof _0x58d769[_0xcd84('0x1b')]===_0xcd84('0x1c')&&typeof _0x58d769['limit']==='undefined';var _0x232eeb=_0x1f8853[_0xcd84('0x1d')];var _0xd4503a=_0x28c0dc?0x0:_0x58d769[_0xcd84('0x1b')];var _0x53c080=_0x28c0dc?_0x1f8853[_0xcd84('0x1d')]:_0x58d769[_0xcd84('0x1b')]+_0x58d769[_0xcd84('0x1e')];var _0x3d6a87;if(_0x53c080>=_0x232eeb){_0x53c080=_0x232eeb;_0x3d6a87=0xc8;}else{_0x3d6a87=0xce;}_0x32d66d[_0xcd84('0x1f')](_0x3d6a87);return _0x32d66d[_0xcd84('0x20')](_0xcd84('0x21'),_0xd4503a+'-'+_0x53c080+'/'+_0x232eeb)[_0xcd84('0x22')](_0x1f8853);}return null;};}function patchUpdates(_0x5ac0d8){return function(_0x1ac203){try{jsonpatch[_0xcd84('0x23')](_0x1ac203,_0x5ac0d8,!![]);}catch(_0x20eb4a){return BPromise[_0xcd84('0x24')](_0x20eb4a);}return _0x1ac203['save']();};}function saveUpdates(_0x5ecff7,_0x3b953e){return function(_0x26c656){if(_0x26c656){return _0x26c656['update'](_0x5ecff7)[_0xcd84('0x25')](function(_0x15bed5){return _0x15bed5;});}return null;};}function removeEntity(_0x1b7bb6,_0x10d155){return function(_0xa67457){if(_0xa67457){return _0xa67457['destroy']()[_0xcd84('0x25')](function(){_0x1b7bb6[_0xcd84('0x1f')](0xcc)[_0xcd84('0x1a')]();});}};}function handleEntityNotFound(_0x236304,_0x5ee18b){return function(_0x4cdb55){if(!_0x4cdb55){_0x236304[_0xcd84('0x26')](0x194);}return _0x4cdb55;};}function handleError(_0x4b4d15,_0x5d956f){_0x5d956f=_0x5d956f||0x1f4;return function(_0x123608){logger[_0xcd84('0x27')](_0x123608[_0xcd84('0x28')]);if(_0x123608[_0xcd84('0x29')]){delete _0x123608[_0xcd84('0x29')];}_0x4b4d15[_0xcd84('0x1f')](_0x5d956f)[_0xcd84('0x2a')](_0x123608);};}exports[_0xcd84('0x2b')]=function(_0x275105,_0x210c45){var _0x49faca={},_0x4bde42={},_0x4e5394={'count':0x0,'rows':[]};var _0x5dd2e7=_[_0xcd84('0x2c')](db['ChatTransferReport']['rawAttributes'],function(_0x192514){return{'name':_0x192514[_0xcd84('0x2d')],'type':_0x192514['type']['key']};});_0x4bde42[_0xcd84('0x2e')]=_[_0xcd84('0x2c')](_0x5dd2e7,_0xcd84('0x29'));_0x4bde42['query']=_[_0xcd84('0x2f')](_0x275105[_0xcd84('0x30')]);_0x4bde42[_0xcd84('0x31')]=_[_0xcd84('0x32')](_0x4bde42['model'],_0x4bde42[_0xcd84('0x30')]);_0x49faca['attributes']=_[_0xcd84('0x32')](_0x4bde42[_0xcd84('0x2e')],qs[_0xcd84('0x33')](_0x275105[_0xcd84('0x30')][_0xcd84('0x33')]));_0x49faca[_0xcd84('0x34')]=_0x49faca[_0xcd84('0x34')][_0xcd84('0x35')]?_0x49faca['attributes']:_0x4bde42[_0xcd84('0x2e')];if(!_0x275105[_0xcd84('0x30')][_0xcd84('0x36')]('nolimit')){_0x49faca[_0xcd84('0x1e')]=qs[_0xcd84('0x1e')](_0x275105[_0xcd84('0x30')][_0xcd84('0x1e')]);_0x49faca[_0xcd84('0x1b')]=qs['offset'](_0x275105['query']['offset']);}_0x49faca[_0xcd84('0x37')]=qs[_0xcd84('0x38')](_0x275105[_0xcd84('0x30')][_0xcd84('0x38')]);_0x49faca[_0xcd84('0x39')]=qs[_0xcd84('0x31')](_['pick'](_0x275105[_0xcd84('0x30')],_0x4bde42['filters']),_0x5dd2e7);if(_0x275105[_0xcd84('0x30')][_0xcd84('0x3a')]){_0x49faca[_0xcd84('0x39')]=_['merge'](_0x49faca['where'],{'$or':_['map'](_0x5dd2e7,function(_0x2cfbf0){if(_0x2cfbf0[_0xcd84('0x3b')]!==_0xcd84('0x3c')){var _0x4a145a={};_0x4a145a[_0x2cfbf0['name']]={'$like':'%'+_0x275105[_0xcd84('0x30')][_0xcd84('0x3a')]+'%'};return _0x4a145a;}})});}_0x49faca=_[_0xcd84('0x3d')]({},_0x49faca,_0x275105['options']);var _0x2fa4a6={'where':_0x49faca['where']};return db[_0xcd84('0x3e')][_0xcd84('0x1d')](_0x2fa4a6)[_0xcd84('0x25')](function(_0x20f7f8){_0x4e5394[_0xcd84('0x1d')]=_0x20f7f8;if(_0x275105[_0xcd84('0x30')][_0xcd84('0x3f')]){_0x49faca[_0xcd84('0x40')]=[{'all':!![]}];}return db[_0xcd84('0x3e')]['findAll'](_0x49faca);})[_0xcd84('0x25')](function(_0x1df508){_0x4e5394['rows']=_0x1df508;return _0x4e5394;})['then'](respondWithFilteredResult(_0x210c45,_0x49faca))[_0xcd84('0x41')](handleError(_0x210c45,null));};exports[_0xcd84('0x42')]=function(_0x5c57d3,_0x52fd33){var _0x1e104f={'raw':!![],'where':{'id':_0x5c57d3['params']['id']}},_0x14f61c={};_0x14f61c[_0xcd84('0x2e')]=_[_0xcd84('0x2f')](db['ChatTransferReport']['rawAttributes']);_0x14f61c[_0xcd84('0x30')]=_[_0xcd84('0x2f')](_0x5c57d3[_0xcd84('0x30')]);_0x14f61c['filters']=_[_0xcd84('0x32')](_0x14f61c['model'],_0x14f61c['query']);_0x1e104f['attributes']=_[_0xcd84('0x32')](_0x14f61c[_0xcd84('0x2e')],qs[_0xcd84('0x33')](_0x5c57d3[_0xcd84('0x30')][_0xcd84('0x33')]));_0x1e104f[_0xcd84('0x34')]=_0x1e104f[_0xcd84('0x34')][_0xcd84('0x35')]?_0x1e104f['attributes']:_0x14f61c[_0xcd84('0x2e')];if(_0x5c57d3['query']['includeAll']){_0x1e104f['include']=[{'all':!![]}];}_0x1e104f=_[_0xcd84('0x3d')]({},_0x1e104f,_0x5c57d3['options']);return db[_0xcd84('0x3e')][_0xcd84('0x43')](_0x1e104f)['then'](handleEntityNotFound(_0x52fd33,null))[_0xcd84('0x25')](respondWithResult(_0x52fd33,null))[_0xcd84('0x41')](handleError(_0x52fd33,null));};exports[_0xcd84('0x44')]=function(_0x32b8dd,_0x27e1ec){return db[_0xcd84('0x3e')]['create'](_0x32b8dd['body'],{})[_0xcd84('0x25')](respondWithResult(_0x27e1ec,0xc9))[_0xcd84('0x41')](handleError(_0x27e1ec,null));};exports[_0xcd84('0x45')]=function(_0x478e3c,_0xc9376e){if(_0x478e3c['body']['id']){delete _0x478e3c[_0xcd84('0x46')]['id'];}return db['ChatTransferReport'][_0xcd84('0x43')]({'where':{'id':_0x478e3c[_0xcd84('0x47')]['id']}})[_0xcd84('0x25')](handleEntityNotFound(_0xc9376e,null))[_0xcd84('0x25')](saveUpdates(_0x478e3c[_0xcd84('0x46')],null))[_0xcd84('0x25')](respondWithResult(_0xc9376e,null))[_0xcd84('0x41')](handleError(_0xc9376e,null));};exports[_0xcd84('0x48')]=function(_0x13a961,_0x1c06c8){return db[_0xcd84('0x3e')]['find']({'where':{'id':_0x13a961[_0xcd84('0x47')]['id']}})[_0xcd84('0x25')](handleEntityNotFound(_0x1c06c8,null))['then'](removeEntity(_0x1c06c8,null))[_0xcd84('0x41')](handleError(_0x1c06c8,null));};exports[_0xcd84('0x49')]=function(_0x5dccc4,_0x45fa48){return db[_0xcd84('0x3e')]['describe']()['then'](respondWithResult(_0x45fa48,null))[_0xcd84('0x41')](handleError(_0x45fa48,null));};
\ No newline at end of file
+var _0x4818=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','destroy','end','error','name','send','index','map','ChatTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','count','then','includeAll','rows','catch','show','params','include','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x51b47d,_0x5ec0f5){var _0x4d709b=function(_0x25cb77){while(--_0x25cb77){_0x51b47d['push'](_0x51b47d['shift']());}};_0x4d709b(++_0x5ec0f5);}(_0x4818,0x8a));var _0x8481=function(_0x18b649,_0x4c3958){_0x18b649=_0x18b649-0x0;var _0x3059d3=_0x4818[_0x18b649];return _0x3059d3;};'use strict';var emlformat=require(_0x8481('0x0'));var rimraf=require(_0x8481('0x1'));var zipdir=require(_0x8481('0x2'));var jsonpatch=require(_0x8481('0x3'));var rp=require(_0x8481('0x4'));var moment=require('moment');var BPromise=require(_0x8481('0x5'));var Mustache=require('mustache');var util=require(_0x8481('0x6'));var path=require(_0x8481('0x7'));var sox=require(_0x8481('0x8'));var csv=require('to-csv');var ejs=require(_0x8481('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8481('0xa'));var squel=require('squel');var crypto=require(_0x8481('0xb'));var jsforce=require(_0x8481('0xc'));var deskjs=require(_0x8481('0xd'));var toCsv=require(_0x8481('0xe'));var querystring=require(_0x8481('0xf'));var Papa=require(_0x8481('0x10'));var Redis=require(_0x8481('0x11'));var authService=require(_0x8481('0x12'));var qs=require(_0x8481('0x13'));var as=require(_0x8481('0x14'));var hardwareService=require(_0x8481('0x15'));var logger=require(_0x8481('0x16'))(_0x8481('0x17'));var utils=require(_0x8481('0x18'));var config=require(_0x8481('0x19'));var licenseUtil=require(_0x8481('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57d76c,_0x53b9d8){_0x53b9d8=_0x53b9d8||0xcc;return function(_0x33a7ec){if(_0x33a7ec){return _0x57d76c[_0x8481('0x1b')](_0x53b9d8);}return _0x57d76c[_0x8481('0x1c')](_0x53b9d8)['end']();};}function respondWithResult(_0x16da34,_0x7596f9){_0x7596f9=_0x7596f9||0xc8;return function(_0x380b5b){if(_0x380b5b){return _0x16da34[_0x8481('0x1c')](_0x7596f9)[_0x8481('0x1d')](_0x380b5b);}};}function respondWithFilteredResult(_0x353e51,_0x4fe998){return function(_0x16a62d){if(_0x16a62d){var _0x5b121a=typeof _0x4fe998[_0x8481('0x1e')]===_0x8481('0x1f')&&typeof _0x4fe998[_0x8481('0x20')]===_0x8481('0x1f');var _0x405115=_0x16a62d['count'];var _0x3df4ce=_0x5b121a?0x0:_0x4fe998[_0x8481('0x1e')];var _0x14b7a0=_0x5b121a?_0x16a62d['count']:_0x4fe998[_0x8481('0x1e')]+_0x4fe998[_0x8481('0x20')];var _0xd23848;if(_0x14b7a0>=_0x405115){_0x14b7a0=_0x405115;_0xd23848=0xc8;}else{_0xd23848=0xce;}_0x353e51['status'](_0xd23848);return _0x353e51[_0x8481('0x21')](_0x8481('0x22'),_0x3df4ce+'-'+_0x14b7a0+'/'+_0x405115)[_0x8481('0x1d')](_0x16a62d);}return null;};}function patchUpdates(_0x3dd801){return function(_0x24a6bf){try{jsonpatch[_0x8481('0x23')](_0x24a6bf,_0x3dd801,!![]);}catch(_0x5ba8b8){return BPromise[_0x8481('0x24')](_0x5ba8b8);}return _0x24a6bf['save']();};}function saveUpdates(_0xdef41c,_0x56b02e){return function(_0x5f23da){if(_0x5f23da){return _0x5f23da['update'](_0xdef41c)['then'](function(_0x332b83){return _0x332b83;});}return null;};}function removeEntity(_0xb2df3b,_0x47008f){return function(_0x5bd27e){if(_0x5bd27e){return _0x5bd27e[_0x8481('0x25')]()['then'](function(){_0xb2df3b[_0x8481('0x1c')](0xcc)[_0x8481('0x26')]();});}};}function handleEntityNotFound(_0x3e45bc,_0x1b0625){return function(_0x21ffc5){if(!_0x21ffc5){_0x3e45bc['sendStatus'](0x194);}return _0x21ffc5;};}function handleError(_0x2141e8,_0x782d5){_0x782d5=_0x782d5||0x1f4;return function(_0x27fa13){logger[_0x8481('0x27')](_0x27fa13['stack']);if(_0x27fa13[_0x8481('0x28')]){delete _0x27fa13[_0x8481('0x28')];}_0x2141e8[_0x8481('0x1c')](_0x782d5)[_0x8481('0x29')](_0x27fa13);};}exports[_0x8481('0x2a')]=function(_0x31f82b,_0x47a220){var _0x59315d={},_0x3a59c1={},_0x2c2abd={'count':0x0,'rows':[]};var _0x335212=_[_0x8481('0x2b')](db[_0x8481('0x2c')][_0x8481('0x2d')],function(_0x96c98f){return{'name':_0x96c98f['fieldName'],'type':_0x96c98f[_0x8481('0x2e')][_0x8481('0x2f')]};});_0x3a59c1[_0x8481('0x30')]=_['map'](_0x335212,_0x8481('0x28'));_0x3a59c1[_0x8481('0x31')]=_[_0x8481('0x32')](_0x31f82b['query']);_0x3a59c1[_0x8481('0x33')]=_[_0x8481('0x34')](_0x3a59c1['model'],_0x3a59c1[_0x8481('0x31')]);_0x59315d[_0x8481('0x35')]=_[_0x8481('0x34')](_0x3a59c1['model'],qs[_0x8481('0x36')](_0x31f82b[_0x8481('0x31')][_0x8481('0x36')]));_0x59315d['attributes']=_0x59315d[_0x8481('0x35')][_0x8481('0x37')]?_0x59315d[_0x8481('0x35')]:_0x3a59c1[_0x8481('0x30')];if(!_0x31f82b[_0x8481('0x31')][_0x8481('0x38')](_0x8481('0x39'))){_0x59315d[_0x8481('0x20')]=qs[_0x8481('0x20')](_0x31f82b[_0x8481('0x31')][_0x8481('0x20')]);_0x59315d[_0x8481('0x1e')]=qs[_0x8481('0x1e')](_0x31f82b[_0x8481('0x31')][_0x8481('0x1e')]);}_0x59315d[_0x8481('0x3a')]=qs[_0x8481('0x3b')](_0x31f82b[_0x8481('0x31')][_0x8481('0x3b')]);_0x59315d['where']=qs[_0x8481('0x33')](_[_0x8481('0x3c')](_0x31f82b[_0x8481('0x31')],_0x3a59c1['filters']),_0x335212);if(_0x31f82b[_0x8481('0x31')][_0x8481('0x3d')]){_0x59315d[_0x8481('0x3e')]=_[_0x8481('0x3f')](_0x59315d[_0x8481('0x3e')],{'$or':_[_0x8481('0x2b')](_0x335212,function(_0x5061f3){if(_0x5061f3[_0x8481('0x2e')]!==_0x8481('0x40')){var _0x2c2d49={};_0x2c2d49[_0x5061f3[_0x8481('0x28')]]={'$like':'%'+_0x31f82b['query'][_0x8481('0x3d')]+'%'};return _0x2c2d49;}})});}_0x59315d=_['merge']({},_0x59315d,_0x31f82b[_0x8481('0x41')]);var _0x34d3a5={'where':_0x59315d['where']};return db['ChatTransferReport'][_0x8481('0x42')](_0x34d3a5)[_0x8481('0x43')](function(_0x2726a9){_0x2c2abd['count']=_0x2726a9;if(_0x31f82b['query'][_0x8481('0x44')]){_0x59315d['include']=[{'all':!![]}];}return db[_0x8481('0x2c')]['findAll'](_0x59315d);})[_0x8481('0x43')](function(_0x21eece){_0x2c2abd[_0x8481('0x45')]=_0x21eece;return _0x2c2abd;})['then'](respondWithFilteredResult(_0x47a220,_0x59315d))[_0x8481('0x46')](handleError(_0x47a220,null));};exports[_0x8481('0x47')]=function(_0x2b7054,_0x3425c8){var _0x5a2505={'raw':!![],'where':{'id':_0x2b7054[_0x8481('0x48')]['id']}},_0x3daac2={};_0x3daac2[_0x8481('0x30')]=_[_0x8481('0x32')](db[_0x8481('0x2c')]['rawAttributes']);_0x3daac2[_0x8481('0x31')]=_[_0x8481('0x32')](_0x2b7054['query']);_0x3daac2[_0x8481('0x33')]=_[_0x8481('0x34')](_0x3daac2[_0x8481('0x30')],_0x3daac2[_0x8481('0x31')]);_0x5a2505[_0x8481('0x35')]=_[_0x8481('0x34')](_0x3daac2[_0x8481('0x30')],qs[_0x8481('0x36')](_0x2b7054[_0x8481('0x31')]['fields']));_0x5a2505[_0x8481('0x35')]=_0x5a2505[_0x8481('0x35')]['length']?_0x5a2505[_0x8481('0x35')]:_0x3daac2['model'];if(_0x2b7054[_0x8481('0x31')][_0x8481('0x44')]){_0x5a2505[_0x8481('0x49')]=[{'all':!![]}];}_0x5a2505=_[_0x8481('0x3f')]({},_0x5a2505,_0x2b7054[_0x8481('0x41')]);return db[_0x8481('0x2c')]['find'](_0x5a2505)[_0x8481('0x43')](handleEntityNotFound(_0x3425c8,null))[_0x8481('0x43')](respondWithResult(_0x3425c8,null))['catch'](handleError(_0x3425c8,null));};exports[_0x8481('0x4a')]=function(_0xcb585c,_0x121ae9){return db['ChatTransferReport'][_0x8481('0x4a')](_0xcb585c[_0x8481('0x4b')],{})['then'](respondWithResult(_0x121ae9,0xc9))[_0x8481('0x46')](handleError(_0x121ae9,null));};exports[_0x8481('0x4c')]=function(_0x334fcc,_0x5492b3){if(_0x334fcc[_0x8481('0x4b')]['id']){delete _0x334fcc[_0x8481('0x4b')]['id'];}return db[_0x8481('0x2c')][_0x8481('0x4d')]({'where':{'id':_0x334fcc[_0x8481('0x48')]['id']}})[_0x8481('0x43')](handleEntityNotFound(_0x5492b3,null))['then'](saveUpdates(_0x334fcc['body'],null))[_0x8481('0x43')](respondWithResult(_0x5492b3,null))[_0x8481('0x46')](handleError(_0x5492b3,null));};exports[_0x8481('0x25')]=function(_0x7aa681,_0x40f22a){return db[_0x8481('0x2c')][_0x8481('0x4d')]({'where':{'id':_0x7aa681[_0x8481('0x48')]['id']}})['then'](handleEntityNotFound(_0x40f22a,null))['then'](removeEntity(_0x40f22a,null))[_0x8481('0x46')](handleError(_0x40f22a,null));};exports['describe']=function(_0x5b0371,_0x42b304){return db['ChatTransferReport'][_0x8481('0x4e')]()[_0x8481('0x43')](respondWithResult(_0x42b304,null))[_0x8481('0x46')](handleError(_0x42b304,null));};
\ No newline at end of file
index 552ed0e..043f75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c79=['rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','moment','bluebird','request-promise'];(function(_0x16e4cc,_0x3049a6){var _0x9bf887=function(_0x128aa4){while(--_0x128aa4){_0x16e4cc['push'](_0x16e4cc['shift']());}};_0x9bf887(++_0x3049a6);}(_0x7c79,0x11b));var _0x97c7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c79[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x97c7('0x0'));var util=require(_0x97c7('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x97c7('0x2'));var BPromise=require(_0x97c7('0x3'));var rp=require(_0x97c7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x97c7('0x5'));var config=require(_0x97c7('0x6'));var attributes=require(_0x97c7('0x7'));module['exports']=function(_0x56dc77,_0x49c0d6){return _0x56dc77[_0x97c7('0x8')](_0x97c7('0x9'),attributes,{'tableName':_0x97c7('0xa'),'paranoid':![],'indexes':[{'name':_0x97c7('0xb'),'fields':[_0x97c7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6fb8=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','report_chat_transfer'];(function(_0x3d1996,_0x1f08f0){var _0x550afd=function(_0xb3b511){while(--_0xb3b511){_0x3d1996['push'](_0x3d1996['shift']());}};_0x550afd(++_0x1f08f0);}(_0x6fb8,0x6e));var _0x86fb=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x6fb8[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x86fb('0x0'));var util=require('util');var logger=require(_0x86fb('0x1'))(_0x86fb('0x2'));var moment=require(_0x86fb('0x3'));var BPromise=require(_0x86fb('0x4'));var rp=require(_0x86fb('0x5'));var fs=require('fs');var path=require(_0x86fb('0x6'));var rimraf=require(_0x86fb('0x7'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x86fb('0x8')]=function(_0x2b3ad5,_0x3b3a56){return _0x2b3ad5[_0x86fb('0x9')]('ChatTransferReport',attributes,{'tableName':_0x86fb('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 75dbb4a..b7ab246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd41b=['../../config/environment','client','http','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x3e1ee3,_0x121b24){var _0x27e604=function(_0xdd5c9e){while(--_0xdd5c9e){_0x3e1ee3['push'](_0x3e1ee3['shift']());}};_0x27e604(++_0x121b24);}(_0xd41b,0x1c2));var _0xbd41=function(_0xe321ec,_0x162ffa){_0xe321ec=_0xe321ec-0x0;var _0x4e862b=_0xd41b[_0xe321ec];return _0x4e862b;};'use strict';var _=require(_0xbd41('0x0'));var util=require(_0xbd41('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbd41('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd41('0x3'))['db'];var utils=require(_0xbd41('0x4'));var logger=require('../../config/logger')(_0xbd41('0x5'));var config=require(_0xbd41('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbd41('0x7')][_0xbd41('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8d4dcd,_0x3a84ed,_0x1189b4){return new BPromise(function(_0x13dc18,_0x36e9db){return client['request'](_0x8d4dcd,_0x1189b4)['then'](function(_0x5e0e96){logger[_0xbd41('0x9')](_0xbd41('0xa'),_0x3a84ed,_0xbd41('0xb'));logger['debug'](_0xbd41('0xc'),_0x3a84ed,_0xbd41('0xb'),JSON[_0xbd41('0xd')](_0x5e0e96));if(_0x5e0e96[_0xbd41('0xe')]){if(_0x5e0e96['error'][_0xbd41('0xf')]===0x1f4){logger[_0xbd41('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0x3a84ed,_0x5e0e96[_0xbd41('0xe')][_0xbd41('0x10')]);return _0x36e9db(_0x5e0e96[_0xbd41('0xe')][_0xbd41('0x10')]);}logger[_0xbd41('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0x3a84ed,_0x5e0e96[_0xbd41('0xe')]['message']);return _0x13dc18(_0x5e0e96['error'][_0xbd41('0x10')]);}else{logger[_0xbd41('0x9')]('ChatTransferReport,\x20%s,\x20%s',_0x3a84ed,_0xbd41('0xb'));_0x13dc18(_0x5e0e96[_0xbd41('0x11')][_0xbd41('0x10')]);}})[_0xbd41('0x12')](function(_0x4f002f){logger[_0xbd41('0xe')](_0xbd41('0xa'),_0x3a84ed,_0x4f002f);_0x36e9db(_0x4f002f);});});}
\ No newline at end of file
+var _0x04ce=['ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info'];(function(_0x5b2b3b,_0x4f76c0){var _0x1f41bc=function(_0x2b4381){while(--_0x2b4381){_0x5b2b3b['push'](_0x5b2b3b['shift']());}};_0x1f41bc(++_0x4f76c0);}(_0x04ce,0xc4));var _0xe04c=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x04ce[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xe04c('0x0'));var util=require(_0xe04c('0x1'));var moment=require('moment');var BPromise=require(_0xe04c('0x2'));var rs=require(_0xe04c('0x3'));var fs=require('fs');var Redis=require(_0xe04c('0x4'));var db=require(_0xe04c('0x5'))['db'];var utils=require(_0xe04c('0x6'));var logger=require(_0xe04c('0x7'))(_0xe04c('0x8'));var config=require(_0xe04c('0x9'));var jayson=require(_0xe04c('0xa'));var client=jayson[_0xe04c('0xb')][_0xe04c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x381b19,_0x30e512,_0xddb494){return new BPromise(function(_0x35a264,_0x284007){return client['request'](_0x381b19,_0xddb494)['then'](function(_0x755f7e){logger[_0xe04c('0xd')](_0xe04c('0xe'),_0x30e512,_0xe04c('0xf'));logger['debug'](_0xe04c('0x10'),_0x30e512,_0xe04c('0xf'),JSON['stringify'](_0x755f7e));if(_0x755f7e['error']){if(_0x755f7e[_0xe04c('0x11')]['code']===0x1f4){logger[_0xe04c('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x30e512,_0x755f7e[_0xe04c('0x11')]['message']);return _0x284007(_0x755f7e[_0xe04c('0x11')][_0xe04c('0x12')]);}logger[_0xe04c('0x11')](_0xe04c('0xe'),_0x30e512,_0x755f7e[_0xe04c('0x11')]['message']);return _0x35a264(_0x755f7e[_0xe04c('0x11')][_0xe04c('0x12')]);}else{logger['info'](_0xe04c('0xe'),_0x30e512,_0xe04c('0xf'));_0x35a264(_0x755f7e[_0xe04c('0x13')][_0xe04c('0x12')]);}})[_0xe04c('0x14')](function(_0x4b918b){logger[_0xe04c('0x11')](_0xe04c('0xe'),_0x30e512,_0x4b918b);_0x284007(_0x4b918b);});});}
\ No newline at end of file
index 5294e25..326dce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5ef=['index','/describe','isAuthenticated','get','/:id','show','post','put','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller'];(function(_0x2a1332,_0xca252b){var _0x59fc7=function(_0x274d06){while(--_0x274d06){_0x2a1332['push'](_0x2a1332['shift']());}};_0x59fc7(++_0xca252b);}(_0xb5ef,0x1d3));var _0xfb5e=function(_0x348c91,_0x36d64b){_0x348c91=_0x348c91-0x0;var _0x51f2db=_0xb5ef[_0x348c91];return _0x51f2db;};'use strict';var multer=require(_0xfb5e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfb5e('0x1'));var express=require(_0xfb5e('0x2'));var router=express[_0xfb5e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfb5e('0x4'));var interaction=require(_0xfb5e('0x5'));var config=require(_0xfb5e('0x6'));var controller=require(_0xfb5e('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xfb5e('0x8')]);router['get'](_0xfb5e('0x9'),auth[_0xfb5e('0xa')](),controller['describe']);router[_0xfb5e('0xb')](_0xfb5e('0xc'),auth[_0xfb5e('0xa')](),controller[_0xfb5e('0xd')]);router[_0xfb5e('0xe')]('/',auth[_0xfb5e('0xa')](),controller['create']);router[_0xfb5e('0xf')]('/:id',auth[_0xfb5e('0xa')](),controller['update']);router[_0xfb5e('0x10')](_0xfb5e('0xc'),auth['isAuthenticated'](),controller[_0xfb5e('0x11')]);module[_0xfb5e('0x12')]=router;
\ No newline at end of file
+var _0x9859=['put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0x317c1f,_0x3047b8){var _0x402d73=function(_0x167e00){while(--_0x167e00){_0x317c1f['push'](_0x317c1f['shift']());}};_0x402d73(++_0x3047b8);}(_0x9859,0x193));var _0x9985=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x9859[_0x35885a];return _0xe86249;};'use strict';var multer=require('multer');var util=require(_0x9985('0x0'));var path=require(_0x9985('0x1'));var timeout=require(_0x9985('0x2'));var express=require(_0x9985('0x3'));var router=express[_0x9985('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9985('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9985('0x6'));var controller=require(_0x9985('0x7'));router[_0x9985('0x8')]('/',auth[_0x9985('0x9')](),controller[_0x9985('0xa')]);router['get'](_0x9985('0xb'),auth['isAuthenticated'](),controller[_0x9985('0xc')]);router['get'](_0x9985('0xd'),auth[_0x9985('0x9')](),controller[_0x9985('0xe')]);router[_0x9985('0xf')]('/',auth[_0x9985('0x9')](),controller[_0x9985('0x10')]);router[_0x9985('0x11')](_0x9985('0xd'),auth[_0x9985('0x9')](),controller[_0x9985('0x12')]);router[_0x9985('0x13')](_0x9985('0xd'),auth[_0x9985('0x9')](),controller['destroy']);module[_0x9985('0x14')]=router;
\ No newline at end of file
index 31b3836..5044c25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Send','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','star','thumb','stringify','input','name','onlineForm','textarea','Comments','Leave\x20your\x20comments','getDataValue','offlineForm','parse','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING'];(function(_0x3b0b7a,_0x166fde){var _0x188c84=function(_0x4b848e){while(--_0x4b848e){_0x3b0b7a['push'](_0x3b0b7a['shift']());}};_0x188c84(++_0x166fde);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x5989e9,_0xef6905){_0x5989e9=_0x5989e9-0x0;var _0xac49f2=_0xbdb7[_0x5989e9];return _0xac49f2;};'use strict';var Sequelize=require(_0x7bdb('0x0'));var rs=require(_0x7bdb('0x1'));module[_0x7bdb('0x2')]={'name':{'type':Sequelize[_0x7bdb('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x7bdb('0x3')],'allowNull':![],'unique':_0x7bdb('0x4')},'description':{'type':Sequelize[_0x7bdb('0x3')]},'mapKey':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x5')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x5')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x6')},'customerAlias':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x7bdb('0x3')],'allowNull':![],'defaultValue':_0x7bdb('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x7bdb('0x3')],'allowNull':![],'defaultValue':_0x7bdb('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x7bdb('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x7bdb('0x3')]},'animation':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x7bdb('0xd')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0xe')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0xf')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x7bdb('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x7bdb('0x10')]},'closingQuestion':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x13')},'noteTitle':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x14')},'closingMessage':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x15')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0xf')},'skipMessageButton':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM'](_0x7bdb('0x16'),_0x7bdb('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0x7bdb('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x7bdb('0x10')],'defaultValue':function(){return JSON[_0x7bdb('0x18')]({'items':[{'type':_0x7bdb('0x19'),'variable':null,'config':{'placeholder':_0x7bdb('0x1a'),'type':'text','required':!![]},'props':{'title':_0x7bdb('0x1a'),'helpText':''}},{'type':_0x7bdb('0x19'),'props':{'title':_0x7bdb('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x7bdb('0x5'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x7bdb('0x1b'))?JSON['parse'](this['getDataValue']('onlineForm')):{};},'set':function(_0x2abef6){return this['setDataValue'](_0x7bdb('0x1b'),JSON[_0x7bdb('0x18')](_0x2abef6));}},'offlineForm':{'type':Sequelize[_0x7bdb('0x10')],'defaultValue':function(){return JSON[_0x7bdb('0x18')]({'items':[{'type':_0x7bdb('0x19'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x7bdb('0x5'),'type':_0x7bdb('0x5')},'variable':null},{'type':_0x7bdb('0x1c'),'config':{'placeholder':_0x7bdb('0x1d')},'props':{'title':_0x7bdb('0x1d'),'helpText':_0x7bdb('0x1e')}}],'fromKey':0x0});},'get':function(){return this[_0x7bdb('0x1f')](_0x7bdb('0x20'))?JSON[_0x7bdb('0x21')](this[_0x7bdb('0x1f')](_0x7bdb('0x20'))):{};},'set':function(_0x81ca6f){return this['setDataValue'](_0x7bdb('0x20'),JSON[_0x7bdb('0x18')](_0x81ca6f));}},'token':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':function(){return rs[_0x7bdb('0x22')]();}},'autoclose':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x7bdb('0x3')]},'forwardOffline':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x7bdb('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x23')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x24')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x25')},'enableUnmanagedNote':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0xf')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x7bdb('0x3')]},'notificationTemplate':{'type':Sequelize[_0x7bdb('0x10')],'defaultValue':function(){return _0x7bdb('0x26');}},'notificationSound':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0x7bdb('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x28')},'verticalAlignment':{'type':Sequelize[_0x7bdb('0x9')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x29')},'messagesAlignment':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':_0x7bdb('0x2a')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x7bdb('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x7bdb('0x3')],'allowNull':![],'defaultValue':_0x7bdb('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7bdb('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':_0x7bdb('0x2c')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7bdb('0x9')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x7bdb('0x2d'),'set':function(_0x2d578e){if(!_0x2d578e)this[_0x7bdb('0x2e')](_0x7bdb('0x2f'),null);this[_0x7bdb('0x2e')](_0x7bdb('0x30'),_0x2d578e);}},'vidaooEscalation':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7bdb('0x31')},'vidaooNote':{'type':Sequelize[_0x7bdb('0x3')],'defaultValue':function(){return _0x7bdb('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x7bdb('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x7bdb('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x7bdb('0x10')]}};
\ No newline at end of file
+var _0x2dae=['Send','Contact\x20us','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','TEXT','textarea','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','CHAT','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared'];(function(_0x18c627,_0x926f18){var _0x1e9cbf=function(_0x63fb22){while(--_0x63fb22){_0x18c627['push'](_0x18c627['shift']());}};_0x1e9cbf(++_0x926f18);}(_0x2dae,0xc3));var _0xe2da=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x2dae[_0x2df507];return _0x1f7167;};'use strict';var Sequelize=require(_0xe2da('0x0'));var rs=require('randomstring');module[_0xe2da('0x1')]={'name':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'unique':_0xe2da('0x3')},'description':{'type':Sequelize[_0xe2da('0x2')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x4')},'mapKeyOffline':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x4')},'key':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x5')},'customerAlias':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xe2da('0x2')]},'animation':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xe2da('0xa')](_0xe2da('0xb'),_0xe2da('0xc')),'defaultValue':_0xe2da('0xb')},'header_online':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'header_offline':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xe')},'download_transcript':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x10')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0xe2da('0x11')},'noteTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x12')},'placeholderMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x13')},'closingMessageButton':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'skipMessageButton':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x14')},'ratingType':{'type':Sequelize[_0xe2da('0xa')](_0xe2da('0x15'),_0xe2da('0x16')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0xe2da('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xe2da('0x17')]({'items':[{'type':_0xe2da('0x18'),'variable':null,'config':{'placeholder':_0xe2da('0x19'),'type':_0xe2da('0x1a'),'required':!![]},'props':{'title':_0xe2da('0x19'),'helpText':''}},{'type':_0xe2da('0x18'),'props':{'title':_0xe2da('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xe2da('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xe2da('0x1b')](_0xe2da('0x1c'))?JSON[_0xe2da('0x1d')](this[_0xe2da('0x1b')](_0xe2da('0x1c'))):{};},'set':function(_0x230fb8){return this[_0xe2da('0x1e')]('onlineForm',JSON[_0xe2da('0x17')](_0x230fb8));}},'offlineForm':{'type':Sequelize[_0xe2da('0x1f')],'defaultValue':function(){return JSON[_0xe2da('0x17')]({'items':[{'type':_0xe2da('0x18'),'props':{'title':_0xe2da('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xe2da('0x4'),'type':_0xe2da('0x4')},'variable':null},{'type':_0xe2da('0x20'),'config':{'placeholder':'Comments'},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xe2da('0x1b')](_0xe2da('0x21'))?JSON[_0xe2da('0x1d')](this[_0xe2da('0x1b')]('offlineForm')):{};},'set':function(_0x490794){return this[_0xe2da('0x1e')](_0xe2da('0x21'),JSON[_0xe2da('0x17')](_0x490794));}},'token':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':function(){return rs[_0xe2da('0x22')]();}},'autoclose':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xe2da('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x23')},'waitingMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x24')},'offlineMessageSubject':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x25')},'offlineMessageBody':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x27')},'skipUnmanaged':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x28')},'sendUnmanaged':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xe2da('0x1f')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xe2da('0x2')]},'notificationTemplate':{'type':Sequelize[_0xe2da('0x1f')],'defaultValue':function(){return _0xe2da('0x29');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2b')},'messagesAlignment':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2c')},'defaultTitle':{'type':Sequelize[_0xe2da('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe2da('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe2da('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':_0xe2da('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![],'comment':_0xe2da('0x2f'),'set':function(_0x26ba99){if(!_0x26ba99)this[_0xe2da('0x1e')](_0xe2da('0x30'),null);this[_0xe2da('0x1e')](_0xe2da('0x31'),_0x26ba99);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xe2da('0x2')]},'vidaooTopic':{'type':Sequelize[_0xe2da('0x2')],'allowNull':![],'defaultValue':_0xe2da('0x32')},'vidaooNote':{'type':Sequelize[_0xe2da('0x2')],'defaultValue':function(){return _0xe2da('0x33');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xe2da('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xe2da('0x1f')]}};
\ No newline at end of file
index 37df222..4c997ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e78=['server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','sequelize','transaction','Attachment','MailServerOut','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','MailAccountId','toPairsIn','mapValues','subjectOffline','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','pick','User','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','License','all','some','readFileSync','server/files/chat/iframe.ejs','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','omit','ChatProactiveAction','online','false','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','getAgents','bluebird','mustache','util','path','ejs','fs-extra','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','html-to-text','jayson/promise','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','status','end','offset','undefined','limit','count','Content-Range','json','destroy','get','stack','name','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','rawAttributes','hasOwnProperty','order','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','isNil','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','Contacts','DESC','ChatApplication','Applications','List','list','applications','orderBy','priority','account','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','unshift','forcedOwnership','Start','startRouting','EventManager','offline','files','send','from\x20is\x20mandatory','mapKeyOffline','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6e78,0x194));var _0x86e7=function(_0x2dc4c5,_0x115bf6){_0x2dc4c5=_0x2dc4c5-0x0;var _0x439cbe=_0x6e78[_0x2dc4c5];return _0x439cbe;};'use strict';var BPromise=require(_0x86e7('0x0'));var Mustache=require(_0x86e7('0x1'));var util=require(_0x86e7('0x2'));var path=require(_0x86e7('0x3'));var ejs=require(_0x86e7('0x4'));var fs=require('fs');var fs_extra=require(_0x86e7('0x5'));var _=require(_0x86e7('0x6'));var querystring=require('querystring');var Redis=require(_0x86e7('0x7'));var qs=require(_0x86e7('0x8'));var logger=require(_0x86e7('0x9'))(_0x86e7('0xa'));var config=require(_0x86e7('0xb'));var db=require(_0x86e7('0xc'))['db'];config[_0x86e7('0xd')]=_[_0x86e7('0xe')](config[_0x86e7('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x86e7('0xf'))(new Redis(config[_0x86e7('0xd')]));require(_0x86e7('0x10'))['register'](socket);var htmlToText=require(_0x86e7('0x11'));var jayson=require(_0x86e7('0x12'));var client=jayson[_0x86e7('0x13')][_0x86e7('0x14')]({'port':0x232c});var client9002=jayson[_0x86e7('0x13')][_0x86e7('0x14')]({'port':0x232a});var client9003=jayson['client'][_0x86e7('0x14')]({'port':0x232b});var client9001=jayson[_0x86e7('0x13')][_0x86e7('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x33d001,_0x55b527,_0x2ec4a7,_0x191a29){return new BPromise(function(_0x2d2a6f,_0x2a32f8){var _0x9f05f8=_0x191a29||client;return _0x9f05f8[_0x86e7('0x15')](_0x33d001,_0x2ec4a7)[_0x86e7('0x16')](function(_0x296494){logger[_0x86e7('0x17')](_0x86e7('0x18'),_0x55b527,_0x86e7('0x19'));logger[_0x86e7('0x1a')](_0x86e7('0x1b'),_0x55b527,_0x86e7('0x19'),JSON[_0x86e7('0x1c')](_0x296494));if(_0x296494['error']){if(_0x296494[_0x86e7('0x1d')]['code']===0x1f4){logger[_0x86e7('0x1d')](_0x86e7('0x18'),_0x55b527,_0x296494[_0x86e7('0x1d')][_0x86e7('0x1e')]);return _0x2a32f8(_0x296494[_0x86e7('0x1d')][_0x86e7('0x1e')]);}logger[_0x86e7('0x1d')]('ChatWebsite,\x20%s,\x20%s',_0x55b527,_0x296494[_0x86e7('0x1d')][_0x86e7('0x1e')]);return _0x2d2a6f(_0x296494['error'][_0x86e7('0x1e')]);}else{logger[_0x86e7('0x17')](_0x86e7('0x18'),_0x55b527,_0x86e7('0x19'));_0x2d2a6f(_0x296494[_0x86e7('0x1f')][_0x86e7('0x1e')]);}})[_0x86e7('0x20')](function(_0x4ca4d0){logger[_0x86e7('0x1d')](_0x86e7('0x18'),_0x55b527,_0x4ca4d0);_0x2a32f8(_0x4ca4d0);});});}function respondWithStatusCode(_0x16badf,_0x37fcd5){_0x37fcd5=_0x37fcd5||0xcc;return function(_0x2ba79c){if(_0x2ba79c){return _0x16badf[_0x86e7('0x21')](_0x37fcd5);}return _0x16badf[_0x86e7('0x22')](_0x37fcd5)[_0x86e7('0x23')]();};}function respondWithResult(_0x5f3340,_0x1c6234){_0x1c6234=_0x1c6234||0xc8;return function(_0x129a27){if(_0x129a27){return _0x5f3340[_0x86e7('0x22')](_0x1c6234)['json'](_0x129a27);}};}function respondWithFilteredResult(_0x82f57d,_0x476839){return function(_0x45c3fb){if(_0x45c3fb){var _0x1d7f20=typeof _0x476839[_0x86e7('0x24')]===_0x86e7('0x25')&&typeof _0x476839[_0x86e7('0x26')]==='undefined';var _0x3c6d79=_0x45c3fb[_0x86e7('0x27')];var _0xe7863=_0x1d7f20?0x0:_0x476839[_0x86e7('0x24')];var _0x19c4a8=_0x1d7f20?_0x45c3fb[_0x86e7('0x27')]:_0x476839[_0x86e7('0x24')]+_0x476839[_0x86e7('0x26')];var _0x65e88a;if(_0x19c4a8>=_0x3c6d79){_0x19c4a8=_0x3c6d79;_0x65e88a=0xc8;}else{_0x65e88a=0xce;}_0x82f57d[_0x86e7('0x22')](_0x65e88a);return _0x82f57d['set'](_0x86e7('0x28'),_0xe7863+'-'+_0x19c4a8+'/'+_0x3c6d79)[_0x86e7('0x29')](_0x45c3fb);}return null;};}function saveUpdates(_0x191283){return function(_0x419673){if(_0x419673){return _0x419673['update'](_0x191283)[_0x86e7('0x16')](function(_0x14e2dd){return _0x14e2dd;});}return null;};}function removeEntity(_0x4ceb6a){return function(_0x442fb0){if(_0x442fb0){return _0x442fb0[_0x86e7('0x2a')]()[_0x86e7('0x16')](function(){var _0x26a3ba=_0x442fb0[_0x86e7('0x2b')]({'plain':!![]});var _0x3d268e='ChatWebsites';return db['UserProfileResource'][_0x86e7('0x2a')]({'where':{'type':_0x3d268e,'resourceId':_0x26a3ba['id']}})['then'](function(){return _0x442fb0;});})[_0x86e7('0x16')](function(){_0x4ceb6a['status'](0xcc)[_0x86e7('0x23')]();});}};}function handleEntityNotFound(_0x5e8d2a){return function(_0x5db8f4){if(!_0x5db8f4){_0x5e8d2a['sendStatus'](0x194);}return _0x5db8f4;};}function handleError(_0x293d30,_0x364b61){_0x364b61=_0x364b61||0x1f4;return function(_0x142975){logger['error'](_0x142975[_0x86e7('0x2c')]);if(_0x142975[_0x86e7('0x2d')]){delete _0x142975[_0x86e7('0x2d')];}_0x293d30[_0x86e7('0x22')](_0x364b61)['send'](_0x142975);};}exports[_0x86e7('0x2e')]=function(_0x2f881c,_0x5177df){var _0x44ce66={'include':[{'model':db[_0x86e7('0x2f')],'as':_0x86e7('0x30')}]},_0xdf92a9={},_0x56e22b={'count':0x0,'rows':[]};var _0x15c56f=_[_0x86e7('0x31')](db[_0x86e7('0x32')]['rawAttributes'],function(_0x564a45){return{'name':_0x564a45[_0x86e7('0x33')],'type':_0x564a45[_0x86e7('0x34')][_0x86e7('0x35')]};});_0xdf92a9[_0x86e7('0x36')]=_[_0x86e7('0x31')](_0x15c56f,_0x86e7('0x2d'));_0xdf92a9[_0x86e7('0x37')]=_['keys'](_0x2f881c['query']);_0xdf92a9[_0x86e7('0x38')]=_[_0x86e7('0x39')](_0xdf92a9[_0x86e7('0x36')],_0xdf92a9[_0x86e7('0x37')]);_0x44ce66[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0xdf92a9[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x2f881c['query'][_0x86e7('0x3b')]));_0x44ce66[_0x86e7('0x3a')]=_0x44ce66['attributes'][_0x86e7('0x3c')]?_0x44ce66[_0x86e7('0x3a')]:_0xdf92a9[_0x86e7('0x36')];if(!_0x2f881c[_0x86e7('0x37')]['hasOwnProperty'](_0x86e7('0x3d'))){_0x44ce66[_0x86e7('0x26')]=qs[_0x86e7('0x26')](_0x2f881c[_0x86e7('0x37')][_0x86e7('0x26')]);_0x44ce66[_0x86e7('0x24')]=qs[_0x86e7('0x24')](_0x2f881c[_0x86e7('0x37')][_0x86e7('0x24')]);}_0x44ce66['order']=qs[_0x86e7('0x3e')](_0x2f881c['query'][_0x86e7('0x3e')]);_0x44ce66[_0x86e7('0x3f')]=qs['filters'](_['pick'](_0x2f881c[_0x86e7('0x37')],_0xdf92a9[_0x86e7('0x38')]),_0x15c56f);if(_0x2f881c[_0x86e7('0x37')][_0x86e7('0x40')]){_0x44ce66[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x44ce66[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x15c56f,function(_0xc5b9c9){if(_0xc5b9c9[_0x86e7('0x34')]!==_0x86e7('0x42')){var _0x18b068={};_0x18b068[_0xc5b9c9[_0x86e7('0x2d')]]={'$like':'%'+_0x2f881c[_0x86e7('0x37')]['filter']+'%'};return _0x18b068;}})});}_0x44ce66=_[_0x86e7('0x41')]({},_0x44ce66,_0x2f881c[_0x86e7('0x43')]);var _0x33fda0={'where':_0x44ce66[_0x86e7('0x3f')]};return db[_0x86e7('0x32')]['count'](_0x33fda0)[_0x86e7('0x16')](function(_0x2c99c8){_0x56e22b[_0x86e7('0x27')]=_0x2c99c8;if(_0x2f881c[_0x86e7('0x37')][_0x86e7('0x44')]){_0x44ce66[_0x86e7('0x45')]=[{'all':!![]}];}return db[_0x86e7('0x32')]['findAll'](_0x44ce66);})['then'](function(_0x48f4ac){_0x56e22b[_0x86e7('0x46')]=_0x48f4ac;return _0x56e22b;})[_0x86e7('0x16')](respondWithFilteredResult(_0x5177df,_0x44ce66))['catch'](handleError(_0x5177df,null));};exports[_0x86e7('0x47')]=function(_0x3a7182,_0xa0a3b5){var _0x263db6={'raw':![],'where':{'id':_0x3a7182[_0x86e7('0x48')]['id']},'include':[{'model':db[_0x86e7('0x2f')],'as':_0x86e7('0x30')}]},_0x1ae777={};_0x1ae777[_0x86e7('0x36')]=_[_0x86e7('0x49')](db['ChatWebsite']['rawAttributes']);_0x1ae777['query']=_[_0x86e7('0x49')](_0x3a7182[_0x86e7('0x37')]);_0x1ae777['filters']=_['intersection'](_0x1ae777[_0x86e7('0x36')],_0x1ae777[_0x86e7('0x37')]);_0x263db6[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0x1ae777['model'],qs[_0x86e7('0x3b')](_0x3a7182[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x263db6[_0x86e7('0x3a')]=_0x263db6[_0x86e7('0x3a')][_0x86e7('0x3c')]?_0x263db6[_0x86e7('0x3a')]:_0x1ae777[_0x86e7('0x36')];if(_0x3a7182[_0x86e7('0x37')][_0x86e7('0x44')]){_0x263db6[_0x86e7('0x45')]=[{'all':!![]}];}_0x263db6=_[_0x86e7('0x41')]({},_0x263db6,_0x3a7182[_0x86e7('0x43')]);return db[_0x86e7('0x32')][_0x86e7('0x4a')](_0x263db6)['then'](handleEntityNotFound(_0xa0a3b5,null))[_0x86e7('0x16')](respondWithResult(_0xa0a3b5,null))[_0x86e7('0x20')](handleError(_0xa0a3b5,null));};exports[_0x86e7('0x4b')]=function(_0x586752,_0x2abf9a){return db[_0x86e7('0x32')][_0x86e7('0x4b')](_0x586752[_0x86e7('0x4c')],{})[_0x86e7('0x16')](function(_0x31efdb){var _0x4f90b3=_0x586752[_0x86e7('0x4d')][_0x86e7('0x2b')]({'plain':!![]});if(!_0x4f90b3)throw new Error(_0x86e7('0x4e'));if(_0x4f90b3[_0x86e7('0x4f')]===_0x86e7('0x4d')){var _0x3827f6=_0x31efdb['get']({'plain':!![]});var _0x385a43=_0x86e7('0x50');return db['UserProfileSection'][_0x86e7('0x4a')]({'where':{'name':_0x385a43,'userProfileId':_0x4f90b3[_0x86e7('0x51')]},'raw':!![]})['then'](function(_0x25d882){if(_0x25d882&&_0x25d882['autoAssociation']===0x0){return db[_0x86e7('0x52')][_0x86e7('0x4b')]({'name':_0x3827f6[_0x86e7('0x2d')],'resourceId':_0x3827f6['id'],'type':_0x25d882['name'],'sectionId':_0x25d882['id']},{})[_0x86e7('0x16')](function(){return _0x31efdb;});}else{return _0x31efdb;}})[_0x86e7('0x20')](function(_0x277865){logger[_0x86e7('0x1d')](_0x86e7('0x53'),_0x277865);throw _0x277865;});}return _0x31efdb;})[_0x86e7('0x16')](respondWithResult(_0x2abf9a,0xc9))[_0x86e7('0x20')](handleError(_0x2abf9a,null));};exports[_0x86e7('0x54')]=function(_0xe04dee,_0x2e8d20){if(_0xe04dee[_0x86e7('0x4c')]['id']){delete _0xe04dee[_0x86e7('0x4c')]['id'];}return db[_0x86e7('0x32')]['find']({'where':{'id':_0xe04dee[_0x86e7('0x48')]['id']},'include':[{'model':db[_0x86e7('0x2f')],'as':_0x86e7('0x30')}]})[_0x86e7('0x16')](handleEntityNotFound(_0x2e8d20,null))[_0x86e7('0x16')](saveUpdates(_0xe04dee['body'],null))[_0x86e7('0x16')](respondWithResult(_0x2e8d20,null))[_0x86e7('0x20')](handleError(_0x2e8d20,null));};exports[_0x86e7('0x2a')]=function(_0x1f6976,_0x449011){return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x1f6976[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x449011,null))['then'](removeEntity(_0x449011,null))[_0x86e7('0x20')](handleError(_0x449011,null));};exports[_0x86e7('0x55')]=function(_0x3ec892,_0x232a34){return db[_0x86e7('0x32')][_0x86e7('0x55')]()['then'](respondWithResult(_0x232a34,null))[_0x86e7('0x20')](handleError(_0x232a34,null));};exports[_0x86e7('0x56')]=function(_0x3d8cc8,_0x1827c7){if(_0x3d8cc8[_0x86e7('0x4c')]['id']){delete _0x3d8cc8[_0x86e7('0x4c')]['id'];}return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x3d8cc8[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x1827c7,null))['then'](function(_0x190b32){if(_0x190b32){_0x3d8cc8[_0x86e7('0x4c')][_0x86e7('0x57')]=_0x190b32['id'];return db['Disposition'][_0x86e7('0x4b')](_0x3d8cc8['body']);}})[_0x86e7('0x16')](respondWithResult(_0x1827c7,null))[_0x86e7('0x20')](handleError(_0x1827c7,null));};exports[_0x86e7('0x58')]=function(_0x3e3916,_0x325b23){var _0x255912={'raw':![],'where':{}};var _0x3936c8={};var _0x3af579={'count':0x0,'rows':[]};return db[_0x86e7('0x32')][_0x86e7('0x59')]({'where':{'id':_0x3e3916[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x325b23,null))['then'](function(_0x2873bc){if(_0x2873bc){_0x3936c8[_0x86e7('0x36')]=_[_0x86e7('0x49')](db['Disposition'][_0x86e7('0x5a')]);_0x3936c8['query']=_[_0x86e7('0x49')](_0x3e3916['query']);_0x3936c8[_0x86e7('0x38')]=_[_0x86e7('0x39')](_0x3936c8[_0x86e7('0x36')],_0x3936c8['query']);_0x255912['attributes']=_['intersection'](_0x3936c8[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x3e3916['query']['fields']));_0x255912[_0x86e7('0x3a')]=_0x255912[_0x86e7('0x3a')]['length']?_0x255912[_0x86e7('0x3a')]:_0x3936c8['model'];if(!_0x3e3916[_0x86e7('0x37')][_0x86e7('0x5b')](_0x86e7('0x3d'))){_0x255912[_0x86e7('0x26')]=qs['limit'](_0x3e3916[_0x86e7('0x37')][_0x86e7('0x26')]);_0x255912[_0x86e7('0x24')]=qs[_0x86e7('0x24')](_0x3e3916[_0x86e7('0x37')][_0x86e7('0x24')]);}_0x255912[_0x86e7('0x5c')]=qs['sort'](_0x3e3916[_0x86e7('0x37')]['sort']);_0x255912[_0x86e7('0x3f')]=qs[_0x86e7('0x38')](_['pick'](_0x3e3916['query'],_0x3936c8['filters']));_0x255912[_0x86e7('0x3f')]['ChatWebsiteId']=_0x2873bc['id'];if(_0x3e3916[_0x86e7('0x37')]['filter']){_0x255912[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x255912[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x255912[_0x86e7('0x3a')],function(_0x1268f4){var _0x1b3dd0={};_0x1b3dd0[_0x1268f4]={'$like':'%'+_0x3e3916['query'][_0x86e7('0x40')]+'%'};return _0x1b3dd0;})});}_0x255912=_[_0x86e7('0x41')]({},_0x255912,_0x3e3916[_0x86e7('0x43')]);return db[_0x86e7('0x5d')][_0x86e7('0x27')]({'where':_0x255912[_0x86e7('0x3f')]})['then'](function(_0xe3f502){_0x3af579['count']=_0xe3f502;if(_0x3e3916[_0x86e7('0x37')][_0x86e7('0x44')]){_0x255912['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x255912);})[_0x86e7('0x16')](function(_0x3409c6){_0x3af579['rows']=_0x3409c6;return _0x3af579;});}})[_0x86e7('0x16')](respondWithFilteredResult(_0x325b23,_0x255912))[_0x86e7('0x20')](handleError(_0x325b23,null));};exports[_0x86e7('0x5e')]=function(_0x54b24c,_0x1533b6){return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x54b24c[_0x86e7('0x48')]['id']}})['then'](handleEntityNotFound(_0x1533b6,null))[_0x86e7('0x16')](function(_0x1f5de5){if(_0x1f5de5){return _0x1f5de5[_0x86e7('0x5e')](_0x54b24c[_0x86e7('0x37')][_0x86e7('0x5f')]);}})[_0x86e7('0x16')](respondWithStatusCode(_0x1533b6,null))['catch'](handleError(_0x1533b6,null));};exports[_0x86e7('0x60')]=function(_0x354fae,_0x4bf98b){if(_0x354fae['body']['id']){delete _0x354fae[_0x86e7('0x4c')]['id'];}return db[_0x86e7('0x32')]['find']({'where':{'id':_0x354fae[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x4bf98b,null))[_0x86e7('0x16')](function(_0x847fa6){if(_0x847fa6){_0x354fae['body'][_0x86e7('0x57')]=_0x847fa6['id'];return db[_0x86e7('0x61')]['create'](_0x354fae['body']);}})[_0x86e7('0x16')](respondWithResult(_0x4bf98b,null))['catch'](handleError(_0x4bf98b,null));};exports[_0x86e7('0x62')]=function(_0x47c2b1,_0x34b4b3){var _0x30b6d6={'raw':![],'where':{}};var _0x27b8d2={};var _0x537351={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x86e7('0x59')]({'where':{'id':_0x47c2b1[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x34b4b3,null))['then'](function(_0x423d43){if(_0x423d43){_0x27b8d2[_0x86e7('0x36')]=_[_0x86e7('0x49')](db['CannedAnswer'][_0x86e7('0x5a')]);_0x27b8d2['query']=_[_0x86e7('0x49')](_0x47c2b1[_0x86e7('0x37')]);_0x27b8d2[_0x86e7('0x38')]=_[_0x86e7('0x39')](_0x27b8d2[_0x86e7('0x36')],_0x27b8d2[_0x86e7('0x37')]);_0x30b6d6['attributes']=_[_0x86e7('0x39')](_0x27b8d2['model'],qs[_0x86e7('0x3b')](_0x47c2b1[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x30b6d6[_0x86e7('0x3a')]=_0x30b6d6[_0x86e7('0x3a')][_0x86e7('0x3c')]?_0x30b6d6[_0x86e7('0x3a')]:_0x27b8d2[_0x86e7('0x36')];if(!_0x47c2b1[_0x86e7('0x37')]['hasOwnProperty'](_0x86e7('0x3d'))){_0x30b6d6[_0x86e7('0x26')]=qs[_0x86e7('0x26')](_0x47c2b1[_0x86e7('0x37')][_0x86e7('0x26')]);_0x30b6d6['offset']=qs[_0x86e7('0x24')](_0x47c2b1['query'][_0x86e7('0x24')]);}_0x30b6d6[_0x86e7('0x5c')]=qs[_0x86e7('0x3e')](_0x47c2b1[_0x86e7('0x37')][_0x86e7('0x3e')]);_0x30b6d6['where']=qs[_0x86e7('0x38')](_['pick'](_0x47c2b1[_0x86e7('0x37')],_0x27b8d2[_0x86e7('0x38')]));_0x30b6d6[_0x86e7('0x3f')][_0x86e7('0x57')]=_0x423d43['id'];if(_0x47c2b1[_0x86e7('0x37')][_0x86e7('0x40')]){_0x30b6d6[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x30b6d6[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x30b6d6['attributes'],function(_0x25feda){var _0x14a3a3={};_0x14a3a3[_0x25feda]={'$like':'%'+_0x47c2b1[_0x86e7('0x37')][_0x86e7('0x40')]+'%'};return _0x14a3a3;})});}_0x30b6d6=_['merge']({},_0x30b6d6,_0x47c2b1['options']);return db[_0x86e7('0x61')][_0x86e7('0x27')]({'where':_0x30b6d6[_0x86e7('0x3f')]})[_0x86e7('0x16')](function(_0x1c4e8b){_0x537351[_0x86e7('0x27')]=_0x1c4e8b;if(_0x47c2b1['query'][_0x86e7('0x44')]){_0x30b6d6[_0x86e7('0x45')]=[{'all':!![]}];}return db[_0x86e7('0x61')][_0x86e7('0x63')](_0x30b6d6);})[_0x86e7('0x16')](function(_0x4e5199){_0x537351[_0x86e7('0x46')]=_0x4e5199;return _0x537351;});}})[_0x86e7('0x16')](respondWithFilteredResult(_0x34b4b3,_0x30b6d6))[_0x86e7('0x20')](handleError(_0x34b4b3,null));};exports[_0x86e7('0x64')]=function(_0xac05b9,_0x66c353){return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0xac05b9['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x66c353,null))[_0x86e7('0x16')](function(_0x26e7de){if(_0x26e7de){return _0x26e7de[_0x86e7('0x64')](_0xac05b9['query'][_0x86e7('0x5f')]);}})[_0x86e7('0x16')](respondWithStatusCode(_0x66c353,null))[_0x86e7('0x20')](handleError(_0x66c353,null));};exports[_0x86e7('0x65')]=function(_0x302bb1,_0x2e9116){_0x302bb1[_0x86e7('0x4c')][_0x86e7('0x66')]=_0x302bb1[_0x86e7('0x67')][_0x86e7('0x68')];return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x302bb1[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x2e9116,null))[_0x86e7('0x16')](saveUpdates(_0x302bb1[_0x86e7('0x4c')],null))[_0x86e7('0x16')](respondWithResult(_0x2e9116,null))[_0x86e7('0x20')](handleError(_0x2e9116,null));};exports[_0x86e7('0x69')]=function(_0x58491e,_0x1b3af7){_0x58491e['body'][_0x86e7('0x6a')]=_0x58491e[_0x86e7('0x67')]['filename'];return db[_0x86e7('0x32')]['find']({'where':{'id':_0x58491e[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x1b3af7,null))[_0x86e7('0x16')](saveUpdates(_0x58491e[_0x86e7('0x4c')],null))['then'](respondWithResult(_0x1b3af7,null))[_0x86e7('0x20')](handleError(_0x1b3af7,null));};exports[_0x86e7('0x6b')]=function(_0x22bce5,_0x190ade){_0x22bce5[_0x86e7('0x4c')][_0x86e7('0x6c')]=_0x22bce5[_0x86e7('0x67')][_0x86e7('0x68')];return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x22bce5[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x190ade,null))[_0x86e7('0x16')](saveUpdates(_0x22bce5[_0x86e7('0x4c')],null))[_0x86e7('0x16')](respondWithResult(_0x190ade,null))[_0x86e7('0x20')](handleError(_0x190ade,null));};exports[_0x86e7('0x6d')]=function(_0x485330,_0x5ed59c){_0x485330['body'][_0x86e7('0x6e')]=_0x485330['file'][_0x86e7('0x68')];return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x485330[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x5ed59c,null))[_0x86e7('0x16')](saveUpdates(_0x485330['body'],null))[_0x86e7('0x16')](respondWithResult(_0x5ed59c,null))[_0x86e7('0x20')](handleError(_0x5ed59c,null));};exports[_0x86e7('0x6f')]=function(_0x292b71,_0x4a300d){var _0x430029=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x72'));var _0x29cda0={'where':{'id':_0x292b71[_0x86e7('0x48')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x44cb23=![];return require(_0x86e7('0x73'))['getLicense']()[_0x86e7('0x16')](function(_0xbc831d){if(_0xbc831d){_0x44cb23=_0xbc831d['custom'];}})['then'](function(){return db[_0x86e7('0x32')][_0x86e7('0x4a')](_0x29cda0);})['then'](handleEntityNotFound(_0x4a300d,null))['then'](function(_0x2cadd9){if(_0x2cadd9){if(!_[_0x86e7('0x74')](_0x2cadd9[_0x86e7('0x66')])){if(fs[_0x86e7('0x75')](path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x76'),_0x2cadd9[_0x86e7('0x66')]))&&_0x44cb23){_0x430029=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x76'),_0x2cadd9[_0x86e7('0x66')]);}}return _0x4a300d[_0x86e7('0x77')](_0x430029);}})[_0x86e7('0x20')](handleError(_0x4a300d,null));};exports['getAvatar']=function(_0x3fd25f,_0x1f0fb7){var _0x437446=path[_0x86e7('0x70')](config['root'],_0x86e7('0x78'));var _0x194617={'where':{'id':_0x3fd25f[_0x86e7('0x48')]['id']},'attributes':['id',_0x86e7('0x6a')],'raw':!![]};return db['ChatWebsite'][_0x86e7('0x4a')](_0x194617)[_0x86e7('0x16')](handleEntityNotFound(_0x1f0fb7,null))[_0x86e7('0x16')](function(_0x55c715){if(_0x55c715){if(!_[_0x86e7('0x74')](_0x55c715[_0x86e7('0x6a')])){if(fs[_0x86e7('0x75')](path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x79'),_0x55c715[_0x86e7('0x6a')]))){_0x437446=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x79'),_0x55c715[_0x86e7('0x6a')]);}}return _0x1f0fb7[_0x86e7('0x77')](_0x437446);}})[_0x86e7('0x20')](handleError(_0x1f0fb7,null));};exports[_0x86e7('0x7a')]=function(_0x570d15,_0x1a5a63){var _0xcce477=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x7b'));var _0x5696d7={'where':{'id':_0x570d15[_0x86e7('0x48')]['id']},'attributes':['id',_0x86e7('0x6c'),_0x86e7('0x7c')],'raw':!![]};return db[_0x86e7('0x32')][_0x86e7('0x4a')](_0x5696d7)[_0x86e7('0x16')](handleEntityNotFound(_0x1a5a63,null))[_0x86e7('0x16')](function(_0x47cc3f){if(_0x47cc3f){if(!_[_0x86e7('0x74')](_0x47cc3f['customerAvatar'])){if(fs[_0x86e7('0x75')](path['join'](config['root'],'server/files/images/avatars/',_0x47cc3f[_0x86e7('0x6c')]))&&_0x47cc3f['showCustomerAvatar']){_0xcce477=path[_0x86e7('0x70')](config['root'],'server/files/images/avatars/',_0x47cc3f[_0x86e7('0x6c')]);}}return _0x1a5a63['download'](_0xcce477);}})[_0x86e7('0x20')](handleError(_0x1a5a63,null));};exports[_0x86e7('0x7d')]=function(_0x703c2d,_0x20c968){var _0x2d7244=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x7e'));var _0x4d6bf8={'where':{'id':_0x703c2d['params']['id']},'attributes':['id',_0x86e7('0x6e')],'raw':!![]};return db[_0x86e7('0x32')][_0x86e7('0x4a')](_0x4d6bf8)['then'](handleEntityNotFound(_0x20c968,null))[_0x86e7('0x16')](function(_0x28e657){if(_0x28e657){if(!_['isNil'](_0x28e657[_0x86e7('0x6e')])){if(fs[_0x86e7('0x75')](path[_0x86e7('0x70')](config[_0x86e7('0x71')],'server/files/images/avatars/',_0x28e657[_0x86e7('0x6e')]))){_0x2d7244=path['join'](config['root'],_0x86e7('0x79'),_0x28e657['systemAvatar']);}}return _0x20c968[_0x86e7('0x77')](_0x2d7244);}})['catch'](handleError(_0x20c968,null));};exports[_0x86e7('0x7f')]=function(_0x26e0b5,_0x4ac8f1){var _0x2a76e7=require(_0x86e7('0x80'));var _0x33f7e4=new _0x2a76e7();var _0x113969=_0x33f7e4[_0x86e7('0x81')](_0x26e0b5[_0x86e7('0x82')][_0x86e7('0x83')])[_0x86e7('0x84')]();var _0x219625={'body':_0x26e0b5['body'],'channel':_0x86e7('0x85')};var _0x59b957=[];var _0x59a1b3=[];var _0x12b5a8={};var _0x154912=![];return db[_0x86e7('0x86')]['describe']()[_0x86e7('0x16')](function(_0x40cf88){if(!_0x40cf88){throw new db[(_0x86e7('0x87'))][(_0x86e7('0x88'))](_0x86e7('0x89'));}_0x59b957=_[_0x86e7('0x8a')](_[_0x86e7('0x49')](_0x40cf88),[_0x86e7('0x8b'),_0x86e7('0x8c')]);_0x59a1b3=_['difference'](_[_0x86e7('0x49')](_0x40cf88),[_0x86e7('0x8b'),_0x86e7('0x8c'),_0x86e7('0x8d'),'ListId']);if(_0x26e0b5[_0x86e7('0x4c')]['id']){delete _0x26e0b5[_0x86e7('0x4c')]['id'];}if(_[_0x86e7('0x74')](_0x26e0b5['body'][_0x86e7('0x8e')])){throw new db[(_0x86e7('0x87'))][(_0x86e7('0x88'))]('from\x20is\x20mandatory');}if(_[_0x86e7('0x74')](_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x4c')])||_0x26e0b5['body']['body']===''){throw new db[(_0x86e7('0x87'))][(_0x86e7('0x88'))](_0x86e7('0x8f'));}if(_[_0x86e7('0x74')](_0x26e0b5['body']['mapKey'])){throw new db[(_0x86e7('0x87'))]['ValidationError'](_0x86e7('0x90')+_0x59a1b3);}if(!_['includes'](_0x59a1b3,_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x91')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x59a1b3);}_0x12b5a8[_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x91')]]=_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x8e')];})['then'](function(){return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x26e0b5[_0x86e7('0x48')]['id']},'include':[{'model':db[_0x86e7('0x92')],'as':'List','include':[{'model':db[_0x86e7('0x86')],'as':_0x86e7('0x93'),'where':_0x12b5a8,'limit':0x1,'order':[[_0x86e7('0x8c'),_0x86e7('0x94')]]}]},{'model':db[_0x86e7('0x95')],'as':_0x86e7('0x96')}]});})[_0x86e7('0x16')](handleEntityNotFound(_0x4ac8f1,null))['then'](function(_0x4f71ae){if(_0x4f71ae&&_0x4f71ae[_0x86e7('0x97')]){_0x219625['account']=_0x4f71ae;_0x219625['applications']=_0x4f71ae['Applications'];_0x219625[_0x86e7('0x98')]=_0x4f71ae['List'];_0x219625[_0x86e7('0x99')]=_[_0x86e7('0x9a')](_0x219625[_0x86e7('0x99')],[_0x86e7('0x9b')],['asc']);if(_0x219625[_0x86e7('0x9c')][_0x86e7('0x96')]){delete _0x219625[_0x86e7('0x9c')]['Applications'];}if(_0x219625[_0x86e7('0x9c')][_0x86e7('0x97')]&&_0x219625[_0x86e7('0x9c')][_0x86e7('0x97')][_0x86e7('0x93')][_0x86e7('0x3c')]){return _0x219625[_0x86e7('0x9c')][_0x86e7('0x97')][_0x86e7('0x93')][0x0];}var _0x47490e=_[_0x86e7('0xe')](_0x26e0b5[_0x86e7('0x4c')],{'firstName':_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x8e')],'ListId':_0x4f71ae[_0x86e7('0x9d')]});_0x47490e[_0x26e0b5[_0x86e7('0x4c')]['mapKey']]=_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x8e')];return db[_0x86e7('0x86')][_0x86e7('0x4b')](_0x47490e,{'fields':_0x59b957,'raw':!![]});}})[_0x86e7('0x16')](handleEntityNotFound(_0x4ac8f1,null))[_0x86e7('0x16')](function(_0x2adb9c){_0x219625[_0x86e7('0x9e')]=_0x2adb9c;var _0xc2d437=_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x9f')];if(_0x26e0b5[_0x86e7('0x82')][_0x86e7('0xa0')]){_0xc2d437=_0x26e0b5['headers'][_0x86e7('0xa0')];}else if(_0x26e0b5['headers'][_0x86e7('0xa1')]){_0xc2d437=_[_0x86e7('0xa2')](_0x26e0b5[_0x86e7('0x82')]['x-forwarded-for'][_0x86e7('0xa3')](','));}if(_0x2adb9c){var _0x33fe20={'ContactId':_0x2adb9c['id'],'ChatWebsiteId':_0x26e0b5[_0x86e7('0x48')]['id'],'from':(_0x2adb9c[_0x86e7('0xa4')]||'')+'\x20'+(_0x2adb9c[_0x86e7('0xa5')]||''),'customerIp':_0xc2d437,'customerPort':_0x26e0b5[_0x86e7('0x82')][_0x86e7('0xa6')]?_0x26e0b5['headers'][_0x86e7('0xa6')]:null,'referer':_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xa7')],'browserName':_0x113969[_0x86e7('0xa8')]['name']&&_0x113969[_0x86e7('0xa8')][_0x86e7('0xa9')]?util[_0x86e7('0xaa')](_0x86e7('0xab'),_0x113969[_0x86e7('0xa8')][_0x86e7('0x2d')],_0x113969[_0x86e7('0xa8')]['version']):_0x86e7('0xac'),'browserVersion':_0x113969[_0x86e7('0xa8')][_0x86e7('0xa9')]||_0x86e7('0xac'),'osName':util['format'](_0x86e7('0xab'),_0x113969['os'][_0x86e7('0x2d')],_0x113969['os'][_0x86e7('0xa9')]),'osVersion':_0x113969['os'][_0x86e7('0xa9')],'deviceModel':_0x113969['device'][_0x86e7('0x36')]&&_0x113969[_0x86e7('0xad')]['vendor']?util[_0x86e7('0xaa')](_0x86e7('0xae'),_0x113969[_0x86e7('0xad')][_0x86e7('0x36')],_0x113969[_0x86e7('0xad')][_0x86e7('0xaf')],_0x113969[_0x86e7('0xad')][_0x86e7('0x34')]):null,'deviceVendor':_0x113969['device'][_0x86e7('0xaf')],'deviceType':_0x113969[_0x86e7('0xad')][_0x86e7('0x34')],'formData':JSON[_0x86e7('0x1c')](_0x26e0b5[_0x86e7('0x4c')])};var _0x4823d9={'ChatWebsiteId':_0x26e0b5[_0x86e7('0x48')]['id'],'closed':![]};if(_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb0')]){_0x4823d9['threadId']=_0x26e0b5[_0x86e7('0x4c')]['threadId'];return db[_0x86e7('0xb1')][_0x86e7('0x4a')]({'where':_0x4823d9})[_0x86e7('0x16')](function(_0xaf32cb){if(_0xaf32cb){return[_0xaf32cb,![]];}_0x33fe20['threadId']=_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb0')];_0x33fe20[_0x86e7('0xb2')]=_0x26e0b5[_0x86e7('0x4c')]['externalUrl'];return db['ChatInteraction'][_0x86e7('0x4b')](_0x33fe20)[_0x86e7('0x16')](function(_0x5e9c38){return[_0x5e9c38,!![]];});});}_0x4823d9[_0x86e7('0xb3')]=_0x2adb9c['id'];if(_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb4')]&&_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb4')]['id']){_0x4823d9['id']=_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb4')]['id'];return db[_0x86e7('0xb1')][_0x86e7('0x4a')]({'where':_0x4823d9})['then'](function(_0x257565){if(_0x257565){return[_0x257565,![]];}return db['ChatInteraction']['create'](_0x33fe20)[_0x86e7('0x16')](function(_0x194bda){return[_0x194bda,!![]];});});}return db[_0x86e7('0xb1')][_0x86e7('0x4b')](_0x33fe20)['then'](function(_0x51bb85){return[_0x51bb85,!![]];});}})['spread'](function(_0xda920d,_0x20e8fc){if(_0xda920d){_0x154912=_0x20e8fc;if(!_0x20e8fc){var _0x1700ac={'from':(_0x219625['contact']['firstName']||'')+'\x20'+(_0x219625[_0x86e7('0x9e')][_0x86e7('0xa5')]||'')};if(_0x26e0b5[_0x86e7('0x4c')]['threadId']&&_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb5')]&&_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xb0')]!=_0x26e0b5['body'][_0x86e7('0xb5')]){_0x1700ac[_0x86e7('0xb0')]=_0x26e0b5['body']['messageId'];}return _0xda920d['update'](_0x1700ac);}else{return _0xda920d;}}})['then'](function(_0x2b62a0){_0x219625['interaction']=_0x2b62a0[_0x86e7('0x2b')]({'plain':!![]});_0x219625[_0x86e7('0xb4')][_0x86e7('0xb6')]=_0x154912;if(_0x219625['interaction'][_0x86e7('0xb6')]){if(_0x219625[_0x86e7('0x9c')]['autoclose']){_0x219625[_0x86e7('0x99')][_0x86e7('0xb7')]({'id':0x0,'priority':_0x219625[_0x86e7('0x99')][_0x86e7('0x3c')]+0x1,'app':_0x86e7('0xb8'),'appdata':_0x86e7('0xb9'),'interval':_0x86e7('0xba')});}}return db['ChatMessage'][_0x86e7('0x4b')]({'body':_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0x4c')],'ChatWebsiteId':_0x26e0b5[_0x86e7('0x48')]['id'],'ChatInteractionId':_0x2b62a0['id'],'direction':'in','ContactId':_0x219625[_0x86e7('0x9e')]['id'],'AttachmentId':_0x26e0b5[_0x86e7('0x4c')][_0x86e7('0xbb')]});})[_0x86e7('0x16')](function(_0x414cda){_0x219625[_0x86e7('0x1e')]=_0x414cda;if(_0x219625[_0x86e7('0xb4')][_0x86e7('0xbc')]){return db['User'][_0x86e7('0x4a')]({'attributes':['id',_0x86e7('0x2d')],'where':{'id':_0x219625[_0x86e7('0xb4')][_0x86e7('0xbc')]}})[_0x86e7('0x16')](function(_0x35a8da){if(_0x35a8da){_0x219625['applications'][_0x86e7('0xbd')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x35a8da[_0x86e7('0x2d')]+','+(_0x219625[_0x86e7('0x9c')]['waitForTheAssignedAgent']||0xa),'interval':_0x86e7('0xba')});_0x219625[_0x86e7('0xbe')]=!![];}return respondWithRpcPromise(_0x86e7('0xbf'),_0x86e7('0xc0'),_0x219625);});}return respondWithRpcPromise(_0x86e7('0xbf'),_0x86e7('0xc0'),_0x219625);})[_0x86e7('0x16')](function(_0x25e1ac){respondWithRpcPromise(_0x86e7('0xc1'),'EventManager',{'event':_0x86e7('0x7f'),'message':_0x25e1ac},client9002);return _0x25e1ac;})[_0x86e7('0x16')](respondWithResult(_0x4ac8f1,null))[_0x86e7('0x20')](handleError(_0x4ac8f1,null));};exports[_0x86e7('0xc2')]=function(_0x2de658,_0x2f191b){var _0x15a0b8,_0x19bb94,_0x28a447;var _0x3eb3d3=[];var _0x17aa50={};var _0x3ef404=_0x2de658[_0x86e7('0xc3')]||[];var _0x550426=[];var _0x5377e9;return db[_0x86e7('0x86')][_0x86e7('0x55')]()[_0x86e7('0x16')](function(_0x4c7502){if(!_0x4c7502){throw new db[(_0x86e7('0x87'))]['ValidationError'](_0x86e7('0x89'));}_0x3eb3d3=_[_0x86e7('0x8a')](_[_0x86e7('0x49')](_0x4c7502),[_0x86e7('0x8b'),_0x86e7('0x8c'),_0x86e7('0x8d'),_0x86e7('0x9d')]);if(_0x2de658[_0x86e7('0x4c')]['id']){delete _0x2de658['body']['id'];}if(_[_0x86e7('0x74')](_0x2de658[_0x86e7('0x4c')][_0x86e7('0x8e')])){throw _0x2f191b[_0x86e7('0x22')](0x1f4)[_0x86e7('0xc4')](new db[(_0x86e7('0x87'))]['ValidationError'](_0x86e7('0xc5')));}if(_[_0x86e7('0x74')](_0x2de658[_0x86e7('0x4c')][_0x86e7('0x4c')])||_0x2de658['body'][_0x86e7('0x4c')]===''){throw _0x2f191b[_0x86e7('0x22')](0x1f4)[_0x86e7('0xc4')](new db['Sequelize'][(_0x86e7('0x88'))](_0x86e7('0x8f')));}if(_[_0x86e7('0x74')](_0x2de658[_0x86e7('0x4c')][_0x86e7('0xc6')])){throw _0x2f191b[_0x86e7('0x22')](0x1f4)[_0x86e7('0xc4')](new db['Sequelize']['ValidationError']('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3eb3d3));}if(!_[_0x86e7('0xc7')](_0x3eb3d3,_0x2de658[_0x86e7('0x4c')][_0x86e7('0xc6')])){throw _0x2f191b[_0x86e7('0x22')](0x1f4)['send'](new db['Sequelize'][(_0x86e7('0x88'))](_0x86e7('0xc8')+_0x3eb3d3));}_0x17aa50[_0x2de658['body'][_0x86e7('0xc6')]]=_0x2de658[_0x86e7('0x4c')][_0x86e7('0x8e')];})[_0x86e7('0x16')](function(){return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x2de658[_0x86e7('0x48')]['id']},'include':[{'model':db[_0x86e7('0x92')],'as':_0x86e7('0x97')},{'model':db[_0x86e7('0xc9')],'as':_0x86e7('0xc9')}]});})['then'](handleEntityNotFound(_0x2f191b,null))[_0x86e7('0x16')](function(_0x4853ca){if(_0x4853ca&&_0x4853ca[_0x86e7('0x97')]){_0x19bb94=_0x4853ca;var _0x220a09=_[_0x86e7('0xe')](_0x2de658[_0x86e7('0x4c')],{'firstName':_0x2de658[_0x86e7('0x4c')]['from'],'phone':_0x2de658[_0x86e7('0x4c')][_0x86e7('0x8e')],'ListId':_0x4853ca[_0x86e7('0x9d')]});_0x220a09[_0x2de658[_0x86e7('0x4c')][_0x86e7('0xc6')]]=_0x2de658[_0x86e7('0x4c')][_0x86e7('0x8e')];return db[_0x86e7('0x86')][_0x86e7('0xca')]({'where':_0x17aa50,'defaults':_0x220a09});}})[_0x86e7('0xcb')](function(_0x3d12d0){if(_0x3d12d0){_0x28a447=_0x3d12d0;var _0x3f4137=fs['readFileSync'](path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0xcc')),'utf8');var _0x5eea62=ejs[_0x86e7('0xcd')](_0x3f4137,{'body':_[_0x86e7('0xce')](_0x2de658[_0x86e7('0x4c')][_0x86e7('0x4c')]),'bodyTitle':_0x19bb94[_0x86e7('0xcf')]});return db[_0x86e7('0xd0')][_0x86e7('0x4b')]({'body':_0x5eea62,'plainBody':htmlToText[_0x86e7('0xd1')](_0x5eea62),'ContactId':_0x3d12d0['id'],'ChatWebsiteId':_0x19bb94['id']});}})[_0x86e7('0x16')](function(_0x7fd901){_0x5377e9=_0x7fd901;if(_0x3ef404[_0x86e7('0x3c')]){var _0x23991c=_0x3ef404[_0x86e7('0x31')](function(_0x5348da){return{'name':_0x5348da[_0x86e7('0xd2')],'basename':_0x5348da['filename'],'type':_0x5348da[_0x86e7('0xd3')],'ChatOfflineMessageId':_0x7fd901['id']};});_0x550426=_0x23991c['map'](_0x14ad20=>{var _0xb3e185={'filename':_0x14ad20[_0x86e7('0x2d')],'path':path[_0x86e7('0x70')](config['root'],_0x86e7('0xd4'),_0x86e7('0xc3'),_0x86e7('0xd5'),_0x86e7('0xd6'),_0x14ad20['basename'])};return _0xb3e185;});if(!_0x19bb94['openNewInteraction']){return db[_0x86e7('0xd7')][_0x86e7('0xd8')](function(_0x2fe066){return db[_0x86e7('0xd9')]['bulkCreate'](_0x23991c,{'transaction':_0x2fe066});});}}})[_0x86e7('0x16')](function(){if(_0x5377e9){_0x15a0b8=_0x5377e9;return db[_0x86e7('0xc9')][_0x86e7('0x59')]({'where':{'service':!![]},'include':[{'model':db[_0x86e7('0xda')],'as':_0x86e7('0xdb'),'raw':!![],'include':[{'model':db[_0x86e7('0xdc')],'as':_0x86e7('0xdc'),'raw':!![]}]}]});}})[_0x86e7('0x16')](function(_0xc5acd2){if(_0xc5acd2&&_0xc5acd2[_0x86e7('0xdb')]&&_0x19bb94['forwardOffline']&&_0x19bb94[_0x86e7('0xdd')]){var _0x3647bf=_0xc5acd2[_0x86e7('0xde')]();return respondWithRpcPromise(_0x86e7('0xdf'),_0x86e7('0xe0'),{'account':_0x3647bf,'message':{'from':util[_0x86e7('0xaa')](_0x86e7('0xe1'),_0xc5acd2[_0x86e7('0x2d')],_0xc5acd2[_0x86e7('0xe2')]||_0xc5acd2[_0x86e7('0xdb')][_0x86e7('0x4d')]),'to':_0x19bb94['forwardOfflineAddress'],'subject':_0x19bb94[_0x86e7('0xe3')],'html':_0x15a0b8[_0x86e7('0x4c')],'attachments':_0x550426}},client9003)[_0x86e7('0x16')](function(){return _0x15a0b8;})[_0x86e7('0x20')](function(_0x159ade){logger['error'](_0x159ade);});}})[_0x86e7('0x16')](function(){if(_0x19bb94&&_0x19bb94[_0x86e7('0xe4')]&&_0x19bb94[_0x86e7('0xe5')]){var _0x40b6a6=[];if(_0x3ef404[_0x86e7('0x3c')]){_0x40b6a6=_0x3ef404['map'](function(_0x1921e4){return{'name':_0x1921e4[_0x86e7('0xd2')],'basename':_0x1921e4[_0x86e7('0x68')],'type':_0x1921e4[_0x86e7('0xd3')],'ChatOfflineMessageId':_0x5377e9['id']};});}var _0x5464a8;if(!_['isNil'](_0x19bb94['subjectOffline'])){var _0x2ed2e7=_[_0x86e7('0x31')](_0x2de658['body'],function(_0x1cc608){return _0x1cc608;});var _0x424fd5=_[_0x86e7('0xe6')](_0x2ed2e7)[0x0];var _0x468705=_[_0x86e7('0xe7')](_0x424fd5,function(_0x3124fa){return _0x3124fa;});_0x5464a8=_0x468705[0x1][_0x19bb94[_0x86e7('0xe8')]];}var _0x272d70={'from':_0x28a447[_0x86e7('0xe2')],'firstName':_0x28a447[_0x86e7('0xa4')],'lastName':_0x28a447[_0x86e7('0xa5')],'mapKey':_0x86e7('0xe2'),'message':{'from':_0x28a447[_0x86e7('0xe2')],'to':_0x19bb94[_0x86e7('0xc9')]['email'],'cc':'','subject':_[_0x86e7('0x74')](_0x5464a8)?_0x19bb94[_0x86e7('0xe3')]:_0x5464a8,'messageId':'','sentAt':new Date(),'attach':_0x40b6a6[_0x86e7('0x3c')],'attachments':_0x40b6a6,'originChannel':'Chat','ChatWebsiteId':_0x19bb94['id'],'ChatOfflineMessageId':_0x15a0b8['id'],'originTo':_0x19bb94['MailAccount']['email']},'body':_0x15a0b8[_0x86e7('0x4c')]};var _0x4ed622={'account':{'id':_0x19bb94[_0x86e7('0xe5')]},'body':_0x272d70,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x86e7('0xe9'),'notifyMail',_0x4ed622,client9001)[_0x86e7('0x16')](function(){return _0x15a0b8;})[_0x86e7('0x20')](function(_0x212368){logger[_0x86e7('0x1d')](_0x212368);});}return;})['then'](function(){if(_0x15a0b8){return _0x15a0b8;}})['then'](respondWithResult(_0x2f191b,null))['catch'](function(_0x1e78e4){logger[_0x86e7('0x1d')](_0x86e7('0x20'),_0x1e78e4);for(var _0x42f516 of _0x3ef404){var _0x4c5404=path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0xd4'),_0x86e7('0xc3'),_0x86e7('0xd5'),_0x86e7('0xd6'),_0x42f516[_0x86e7('0x68')]);fs_extra[_0x86e7('0xea')](_0x4c5404)[_0x86e7('0x20')](function(_0x59142c){logger[_0x86e7('0x1d')](_0x86e7('0xeb'),_0x4c5404,_0x59142c);});}});};exports[_0x86e7('0xec')]=function(_0xd93f5b,_0x52870b){return db['ChatInteraction'][_0x86e7('0x4a')]({'where':{'id':_0xd93f5b['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x52870b,null))[_0x86e7('0x16')](function(_0xa79c17){if(_0xa79c17){return _0xa79c17[_0x86e7('0xec')](_0xd93f5b[_0x86e7('0x4c')][_0x86e7('0x5f')],_['omit'](_0xd93f5b[_0x86e7('0x4c')],['ids','id'])||{});}})['then'](respondWithResult(_0x52870b,null))[_0x86e7('0x20')](handleError(_0x52870b,null));};exports['getInteractions']=function(_0x16b19f,_0x45b97c){var _0x3a3e80={'raw':![],'where':{}};var _0x5b3df3={};var _0x5d609f={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x86e7('0x59')]({'where':{'id':_0x16b19f['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x45b97c,null))['then'](function(_0x49e211){if(_0x49e211){_0x5b3df3[_0x86e7('0x36')]=_[_0x86e7('0x49')](db[_0x86e7('0xb1')][_0x86e7('0x5a')]);_0x5b3df3[_0x86e7('0x37')]=_['keys'](_0x16b19f[_0x86e7('0x37')]);_0x5b3df3[_0x86e7('0x38')]=_[_0x86e7('0x39')](_0x5b3df3[_0x86e7('0x36')],_0x5b3df3[_0x86e7('0x37')]);_0x3a3e80[_0x86e7('0x3a')]=_['intersection'](_0x5b3df3[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x16b19f[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x3a3e80[_0x86e7('0x3a')]=_0x3a3e80[_0x86e7('0x3a')][_0x86e7('0x3c')]?_0x3a3e80[_0x86e7('0x3a')]:_0x5b3df3['model'];if(!_0x16b19f[_0x86e7('0x37')][_0x86e7('0x5b')](_0x86e7('0x3d'))){_0x3a3e80['limit']=qs[_0x86e7('0x26')](_0x16b19f[_0x86e7('0x37')][_0x86e7('0x26')]);_0x3a3e80[_0x86e7('0x24')]=qs['offset'](_0x16b19f['query'][_0x86e7('0x24')]);}_0x3a3e80[_0x86e7('0x5c')]=qs[_0x86e7('0x3e')](_0x16b19f[_0x86e7('0x37')]['sort']);_0x3a3e80[_0x86e7('0x3f')]=qs[_0x86e7('0x38')](_[_0x86e7('0xed')](_0x16b19f['query'],_0x5b3df3[_0x86e7('0x38')]));_0x3a3e80['where'][_0x86e7('0x57')]=_0x49e211['id'];if(_0x16b19f[_0x86e7('0x37')][_0x86e7('0x40')]){_0x3a3e80['where']=_[_0x86e7('0x41')](_0x3a3e80[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x3a3e80[_0x86e7('0x3a')],function(_0x42b684){var _0x2cbe4c={};_0x2cbe4c[_0x42b684]={'$like':'%'+_0x16b19f[_0x86e7('0x37')]['filter']+'%'};return _0x2cbe4c;})});}_0x3a3e80=_[_0x86e7('0x41')]({},_0x3a3e80,_0x16b19f[_0x86e7('0x43')]);return db[_0x86e7('0xb1')][_0x86e7('0x27')]({'where':_0x3a3e80[_0x86e7('0x3f')]})[_0x86e7('0x16')](function(_0x544639){_0x5d609f[_0x86e7('0x27')]=_0x544639;if(_0x16b19f['query'][_0x86e7('0x44')]){_0x3a3e80[_0x86e7('0x45')]=[{'model':db[_0x86e7('0x86')],'as':'Contact','required':![]},{'model':db[_0x86e7('0xee')],'as':_0x86e7('0xef'),'attributes':[_0x86e7('0x2d'),_0x86e7('0xf0'),_0x86e7('0xf1')],'required':![]},{'model':db[_0x86e7('0xf2')],'as':_0x86e7('0xf3'),'attributes':['id','name',_0x86e7('0xf4')],'where':_0x16b19f[_0x86e7('0x37')][_0x86e7('0xf5')]?{'id':_0x16b19f['query'][_0x86e7('0xf5')]}:undefined,'required':_0x16b19f['query'][_0x86e7('0xf5')]?!![]:![]}];}return db['ChatInteraction']['findAll'](_0x3a3e80);})[_0x86e7('0x16')](function(_0x28fca6){_0x5d609f[_0x86e7('0x46')]=_0x28fca6;return _0x5d609f;});}})['then'](respondWithFilteredResult(_0x45b97c,_0x3a3e80))[_0x86e7('0x20')](handleError(_0x45b97c,null));};function iftimePromise(_0xb7519f,_0x92ed33){return respondWithRpcPromise(_0x86e7('0xf6'),_0x86e7('0xf7'),{'command':_0x92ed33[_0x86e7('0xf8')]?util[_0x86e7('0xaa')](_0x86e7('0xf9'),_0xb7519f[_0x86e7('0xfa')],_0x92ed33['timezone']):util[_0x86e7('0xaa')](_0x86e7('0xfb'),_0xb7519f['interval'])},client9002)[_0x86e7('0x16')](function(_0x539bb8){var _0x3ada0f=_0x539bb8&&_0x539bb8[_0x86e7('0xfc')](_0x86e7('0xfd'))>=0x0?!![]:![];logger['info'](_0x86e7('0xfe'),_0x92ed33['id'],_0xb7519f['id'],_0xb7519f['interval'],_0x3ada0f?_0x86e7('0xff'):_0x86e7('0x100'),_0x92ed33['timezone']?_0x92ed33[_0x86e7('0xf8')]:_0x86e7('0x101'));return _0x3ada0f;})[_0x86e7('0x20')](function(_0x306fbd){logger[_0x86e7('0x1d')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x92ed33['id'],_0xb7519f['id'],_0xb7519f[_0x86e7('0xfa')],util[_0x86e7('0x102')](_0x306fbd,{'showHidden':![],'depth':null}),_0x92ed33[_0x86e7('0xf8')]?_0x92ed33[_0x86e7('0xf8')]:_0x86e7('0x101'));return![];});}exports[_0x86e7('0xf7')]=function(_0x8239c1,_0x43cc9d){var _0x23ce8c=0x0;var _0x30155a=0x0;var _0x53cf7e=![];var _0x183c4e;var _0x2ddc22;return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'where':{'id':_0x8239c1[_0x86e7('0x48')]['id']},'include':[{'model':db[_0x86e7('0x103')],'as':'Interval','include':[{'model':db['Interval'],'as':_0x86e7('0x104'),'attributes':['id',_0x86e7('0xfa')],'raw':!![]}]}]})[_0x86e7('0x16')](handleEntityNotFound(_0x43cc9d,null))[_0x86e7('0x16')](function(_0x15bc6c){if(_0x15bc6c){_0x183c4e=_0x15bc6c;return _0x15bc6c[_0x86e7('0x105')]({'raw':!![]});}})[_0x86e7('0x16')](function(_0x5d0726){if(_0x183c4e){if(_0x5d0726){_0x2ddc22=_0x5d0726;}}return require(_0x86e7('0x73'))[_0x86e7('0x106')]();})[_0x86e7('0x16')](function(_0x307cff){if(_0x307cff){_0x30155a=_0x307cff[_0x86e7('0x107')];_0x53cf7e=_0x307cff['custom'];}})['then'](function(){return db[_0x86e7('0xb1')]['count']({'where':{'closed':![]}});})['then'](function(_0x4aa31e){_0x23ce8c=_0x4aa31e;if(_0x30155a&&_0x4aa31e>_0x30155a){return db[_0x86e7('0x108')][_0x86e7('0x59')]({'where':{'id':0x1}})[_0x86e7('0x16')](function(_0x4a9e9b){if(_0x4a9e9b){_0x4a9e9b['increment']('chatLicenseExceeded');}});}})[_0x86e7('0x16')](function(){if(_0x183c4e['Interval']&&_0x183c4e[_0x86e7('0x103')][_0x86e7('0x104')]){var _0x2000c2=[];for(var _0x2bdaa5=0x0;_0x2bdaa5<_0x183c4e[_0x86e7('0x103')]['Intervals'][_0x86e7('0x3c')];_0x2bdaa5++){var _0x3e8927=_0x183c4e[_0x86e7('0x103')][_0x86e7('0x104')][_0x2bdaa5][_0x86e7('0x2b')]({'plain':!![]});_0x2000c2[_0x86e7('0xb7')](iftimePromise(_0x3e8927,_0x183c4e));}return BPromise[_0x86e7('0x109')](_0x2000c2)[_0x86e7('0x16')](function(_0x2689c7){return _[_0x86e7('0x10a')](_0x2689c7);});}else{return!![];}})[_0x86e7('0x16')](function(_0x1f6f7e){var _0xdcfb80=fs[_0x86e7('0x10b')](path[_0x86e7('0x70')](config[_0x86e7('0x71')],_0x86e7('0x10c')),'utf8');var _0x57e1f1={'remote':_0x183c4e['remote'],'query':querystring[_0x86e7('0x1c')](_[_0x86e7('0x41')](_0x183c4e[_0x86e7('0x2b')]({'plain':!![]}),{'customerIp':_0x8239c1[_0x86e7('0x82')][_0x86e7('0xa1')]||_0x8239c1[_0x86e7('0x82')][_0x86e7('0x10d')]||_0x8239c1[_0x86e7('0x10e')][_0x86e7('0x10f')]||_0x8239c1['ip'],'referer':_0x8239c1[_0x86e7('0x82')]['referer'],'openedInteractions':_0x23ce8c,'maxInteractions':_0x30155a,'virtual':_0x53cf7e[_0x86e7('0x107')],'online':_0x1f6f7e,'custom':_0x53cf7e}))[_0x86e7('0x110')](/'/g,'\x5c\x27')};_0x43cc9d[_0x86e7('0xc4')](ejs[_0x86e7('0xcd')](Mustache[_0x86e7('0xcd')](_0xdcfb80,_0x57e1f1),{'proactiveActions':_0x2ddc22,'alignment':_0x183c4e[_0x86e7('0x111')],'verticalAlignment':_0x183c4e[_0x86e7('0x112')],'div_color':_0x183c4e[_0x86e7('0xf4')],'labelText':_0x183c4e['labelText'],'text_color':_0x183c4e[_0x86e7('0x113')],'text_button_color':_0x183c4e[_0x86e7('0x114')],'button_color':_0x183c4e[_0x86e7('0x115')],'background_color':_0x183c4e[_0x86e7('0x116')],'hideWhenOffline':_0x183c4e[_0x86e7('0x117')],'interval':_0x183c4e[_0x86e7('0x118')]}));})['catch'](handleError(_0x43cc9d,null));};exports['addApplications']=function(_0x195a48,_0x1babc8){var _0x22f93d=_0x195a48[_0x86e7('0x48')]['id'];var _0x16e1dc=_0x195a48[_0x86e7('0x4c')];var _0x5cbfd3=0xc8;var _0x1d024a=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x86e7('0xd7')][_0x86e7('0x119')][_0x86e7('0x11a')][_0x86e7('0x11b')]},function(_0xd0036){return db[_0x86e7('0x32')][_0x86e7('0x59')]({'where':{'id':_0x22f93d},'transaction':_0xd0036})['then'](function(_0x2835da){if(_0x2835da){return db[_0x86e7('0x95')][_0x86e7('0x2a')]({'where':{'ChatWebsiteId':_0x22f93d},'transaction':_0xd0036})[_0x86e7('0x16')](function(){var _0x5af483=_['map'](_0x16e1dc,function(_0x252750){_0x252750[_0x86e7('0x57')]=_0x22f93d;return _0x252750;});return db[_0x86e7('0x95')][_0x86e7('0x11c')](_0x5af483,{'transaction':_0xd0036});});}else{_0x5cbfd3=0x194;_0x1d024a=[];}});})[_0x86e7('0x16')](function(){if(_0x5cbfd3!==0x194){return db[_0x86e7('0x95')][_0x86e7('0x11d')]({'where':{'ChatWebsiteId':_0x22f93d},'order':_0x86e7('0x9b')})['then'](function(_0x642431){_0x1d024a=_0x642431;});}})[_0x86e7('0x20')](function(_0x176b9a){_0x5cbfd3=0x1f4;logger[_0x86e7('0x1d')](_0x176b9a['stack']);if(_0x176b9a['name']){delete _0x176b9a[_0x86e7('0x2d')];}_0x1d024a=_0x176b9a;})[_0x86e7('0x11e')](function(){if(_0x1d024a===null){_0x1babc8[_0x86e7('0x21')](_0x5cbfd3);}else{if(_0x5cbfd3===0x1f4){_0x1babc8[_0x86e7('0x22')](_0x5cbfd3)['send'](_0x1d024a);}else{_0x1babc8['status'](_0x5cbfd3)[_0x86e7('0x29')](_0x1d024a);}}});};exports[_0x86e7('0x11f')]=function(_0xf0b3b4,_0x54e528){var _0x20dff9={};var _0x41334f={};var _0x295e9d;var _0x179759;return db[_0x86e7('0x32')][_0x86e7('0x59')]({'where':{'id':_0xf0b3b4[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x54e528,null))[_0x86e7('0x16')](function(_0x33c536){if(_0x33c536){_0x295e9d=_0x33c536;_0x41334f[_0x86e7('0x36')]=_[_0x86e7('0x49')](db['ChatApplication']['rawAttributes']);_0x41334f[_0x86e7('0x37')]=_[_0x86e7('0x49')](_0xf0b3b4[_0x86e7('0x37')]);_0x41334f['filters']=_[_0x86e7('0x39')](_0x41334f[_0x86e7('0x36')],_0x41334f[_0x86e7('0x37')]);_0x20dff9[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0x41334f[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x20dff9[_0x86e7('0x3a')]=_0x20dff9[_0x86e7('0x3a')][_0x86e7('0x3c')]?_0x20dff9[_0x86e7('0x3a')]:_0x41334f['model'];_0x20dff9[_0x86e7('0x5c')]=qs['sort'](_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x3e')]);_0x20dff9['where']=qs[_0x86e7('0x38')](_[_0x86e7('0xed')](_0xf0b3b4[_0x86e7('0x37')],_0x41334f[_0x86e7('0x38')]));if(_0xf0b3b4[_0x86e7('0x37')]['filter']){_0x20dff9[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x20dff9[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x20dff9[_0x86e7('0x3a')],function(_0x35db3e){var _0x1b7799={};_0x1b7799[_0x35db3e]={'$like':'%'+_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x40')]+'%'};return _0x1b7799;})});}_0x20dff9=_[_0x86e7('0x41')]({},_0x20dff9,_0xf0b3b4[_0x86e7('0x43')]);return _0x295e9d['getApplications'](_0x20dff9);}})['then'](function(_0x20526c){if(_0x20526c){_0x179759=_0x20526c[_0x86e7('0x3c')];if(!_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x5b')]('nolimit')){_0x20dff9['limit']=qs[_0x86e7('0x26')](_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x26')]);_0x20dff9['offset']=qs[_0x86e7('0x24')](_0xf0b3b4[_0x86e7('0x37')][_0x86e7('0x24')]);}return _0x295e9d[_0x86e7('0x11f')](_0x20dff9);}})[_0x86e7('0x16')](function(_0x67d948){if(_0x67d948){return _0x67d948?{'count':_0x179759,'rows':_0x67d948}:null;}})['then'](respondWithResult(_0x54e528,null))[_0x86e7('0x20')](handleError(_0x54e528,null));};exports[_0x86e7('0x120')]=function(_0x487e78,_0x217325){return db[_0x86e7('0x121')][_0x86e7('0x4a')]({'where':{'id':_0x487e78[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x217325,null))[_0x86e7('0x16')](function(_0x27f488){if(_0x27f488){return _0x27f488[_0x86e7('0x120')](_0x487e78[_0x86e7('0x4c')]['ids'],_[_0x86e7('0x122')](_0x487e78[_0x86e7('0x4c')],[_0x86e7('0x5f'),'id'])||{});}})[_0x86e7('0x16')](respondWithResult(_0x217325,null))[_0x86e7('0x20')](handleError(_0x217325,null));};exports['getProactiveActions']=function(_0x36b165,_0x391f8e){var _0x3a8ba9={};var _0xcd6279={};var _0x40d67f;var _0x5c8398;return db['ChatWebsite']['findOne']({'where':{'id':_0x36b165['params']['id']}})['then'](handleEntityNotFound(_0x391f8e,null))['then'](function(_0x54af2a){if(_0x54af2a){_0x40d67f=_0x54af2a;_0xcd6279[_0x86e7('0x36')]=_[_0x86e7('0x49')](db[_0x86e7('0x123')][_0x86e7('0x5a')]);_0xcd6279[_0x86e7('0x37')]=_[_0x86e7('0x49')](_0x36b165[_0x86e7('0x37')]);_0xcd6279[_0x86e7('0x38')]=_['intersection'](_0xcd6279[_0x86e7('0x36')],_0xcd6279[_0x86e7('0x37')]);_0x3a8ba9[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0xcd6279[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x36b165[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x3a8ba9[_0x86e7('0x3a')]=_0x3a8ba9[_0x86e7('0x3a')][_0x86e7('0x3c')]?_0x3a8ba9[_0x86e7('0x3a')]:_0xcd6279['model'];_0x3a8ba9[_0x86e7('0x5c')]=qs[_0x86e7('0x3e')](_0x36b165['query'][_0x86e7('0x3e')]);_0x3a8ba9[_0x86e7('0x3f')]=qs[_0x86e7('0x38')](_['pick'](_0x36b165[_0x86e7('0x37')],_0xcd6279[_0x86e7('0x38')]));if(_0x36b165['query'][_0x86e7('0x40')]){_0x3a8ba9[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x3a8ba9[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x3a8ba9[_0x86e7('0x3a')],function(_0x2f6ebe){var _0x493fa2={};_0x493fa2[_0x2f6ebe]={'$like':'%'+_0x36b165[_0x86e7('0x37')][_0x86e7('0x40')]+'%'};return _0x493fa2;})});}_0x3a8ba9=_[_0x86e7('0x41')]({},_0x3a8ba9,_0x36b165['options']);return _0x40d67f[_0x86e7('0x105')](_0x3a8ba9);}})[_0x86e7('0x16')](function(_0x5d047a){if(_0x5d047a){_0x5c8398=_0x5d047a[_0x86e7('0x3c')];if(!_0x36b165[_0x86e7('0x37')]['hasOwnProperty']('nolimit')){_0x3a8ba9[_0x86e7('0x26')]=qs['limit'](_0x36b165[_0x86e7('0x37')][_0x86e7('0x26')]);_0x3a8ba9[_0x86e7('0x24')]=qs[_0x86e7('0x24')](_0x36b165[_0x86e7('0x37')][_0x86e7('0x24')]);}return _0x40d67f[_0x86e7('0x105')](_0x3a8ba9);}})['then'](function(_0x32896f){if(_0x32896f){return _0x32896f?{'count':_0x5c8398,'rows':_0x32896f}:null;}})['then'](respondWithResult(_0x391f8e,null))['catch'](handleError(_0x391f8e,null));};exports['getFields']=function(_0x100d94,_0x52a660){var _0x323b44=_0x100d94['query'][_0x86e7('0x124')]===_0x86e7('0x125')?'offlineForm':'onlineForm';return db[_0x86e7('0x32')][_0x86e7('0x4a')]({'attributes':['id',_0x323b44],'where':{'id':_0x100d94['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x52a660,null))[_0x86e7('0x16')](function(_0x3d0752){if(_0x3d0752){var _0x3207a5=_0x3d0752[_0x323b44];var _0x2ef5a5=_0x3207a5&&_0x3207a5[_0x86e7('0x126')]?_0x3207a5[_0x86e7('0x126')]:[];_0x52a660[_0x86e7('0xc4')]({'fromKey':_[_0x86e7('0x74')](_0x3207a5[_0x86e7('0x127')])?undefined:_0x3207a5[_0x86e7('0x127')],'count':_0x2ef5a5['length'],'rows':_0x2ef5a5});}})[_0x86e7('0x20')](handleError(_0x52a660,null));};exports[_0x86e7('0x128')]=function(_0x3c759b,_0x8bc1c6){var _0x3bc7d1={'raw':![],'where':{}};var _0x3102bb={};var _0x5a1694={'count':0x0,'rows':[]};return db[_0x86e7('0x32')][_0x86e7('0x59')]({'where':{'id':_0x3c759b[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x8bc1c6,null))['then'](function(_0x1000d7){if(_0x1000d7){_0x3102bb[_0x86e7('0x36')]=_[_0x86e7('0x49')](db[_0x86e7('0xd0')][_0x86e7('0x5a')]);_0x3102bb['query']=_[_0x86e7('0x49')](_0x3c759b[_0x86e7('0x37')]);_0x3102bb['filters']=_[_0x86e7('0x39')](_0x3102bb[_0x86e7('0x36')],_0x3102bb[_0x86e7('0x37')]);_0x3bc7d1[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0x3102bb[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x3c759b[_0x86e7('0x37')][_0x86e7('0x3b')]));_0x3bc7d1['attributes']=_0x3bc7d1['attributes'][_0x86e7('0x3c')]?_0x3bc7d1[_0x86e7('0x3a')]:_0x3102bb[_0x86e7('0x36')];if(!_0x3c759b['query'][_0x86e7('0x5b')](_0x86e7('0x3d'))){_0x3bc7d1['limit']=qs['limit'](_0x3c759b[_0x86e7('0x37')][_0x86e7('0x26')]);_0x3bc7d1[_0x86e7('0x24')]=qs[_0x86e7('0x24')](_0x3c759b[_0x86e7('0x37')]['offset']);}_0x3bc7d1['order']=qs[_0x86e7('0x3e')](_0x3c759b[_0x86e7('0x37')][_0x86e7('0x3e')]);_0x3bc7d1[_0x86e7('0x3f')]=qs[_0x86e7('0x38')](_[_0x86e7('0xed')](_0x3c759b[_0x86e7('0x37')],_0x3102bb[_0x86e7('0x38')]));_0x3bc7d1[_0x86e7('0x3f')][_0x86e7('0x57')]=_0x1000d7['id'];if(_0x3c759b[_0x86e7('0x37')][_0x86e7('0x40')]){_0x3bc7d1[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x3bc7d1['where'],{'$or':_['map'](_0x3bc7d1[_0x86e7('0x3a')],function(_0x423497){var _0x1d90ee={};_0x1d90ee[_0x423497]={'$like':'%'+_0x3c759b[_0x86e7('0x37')][_0x86e7('0x40')]+'%'};return _0x1d90ee;})});}_0x3bc7d1=_[_0x86e7('0x41')]({},_0x3bc7d1,_0x3c759b[_0x86e7('0x43')]);return db['ChatOfflineMessage'][_0x86e7('0x27')]({'where':_0x3bc7d1['where']})[_0x86e7('0x16')](function(_0x610e0d){_0x5a1694[_0x86e7('0x27')]=_0x610e0d;if(_0x3c759b[_0x86e7('0x37')][_0x86e7('0x44')]){_0x3bc7d1[_0x86e7('0x45')]=[{'all':!![]}];}else{_0x3bc7d1['include']=[{'model':db[_0x86e7('0x86')],'as':'Contact','required':![]},{'model':db[_0x86e7('0xd9')],'as':_0x86e7('0x129'),'required':![]}];}return db[_0x86e7('0xd0')][_0x86e7('0x63')](_0x3bc7d1);})[_0x86e7('0x16')](function(_0x22efeb){_0x5a1694[_0x86e7('0x46')]=_0x22efeb;return _0x5a1694;});}})['then'](respondWithFilteredResult(_0x8bc1c6,_0x3bc7d1))[_0x86e7('0x20')](handleError(_0x8bc1c6,null));};exports[_0x86e7('0x12a')]=function(_0x2b7bf2,_0x295563){return db[_0x86e7('0x32')]['find']({'where':{'id':_0x2b7bf2['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x295563,null))['then'](function(_0x3adfd8){if(_0x3adfd8){return _0x3adfd8[_0x86e7('0x12a')](_0x2b7bf2['body']['ids'],_['omit'](_0x2b7bf2[_0x86e7('0x4c')],[_0x86e7('0x5f'),'id'])||{})[_0x86e7('0xcb')](function(_0x5f4774){for(var _0x218bcb=0x0;_0x218bcb<_0x2b7bf2[_0x86e7('0x4c')][_0x86e7('0x5f')][_0x86e7('0x3c')];_0x218bcb+=0x1){socket[_0x86e7('0x12b')](_0x86e7('0x12c'),{'UserId':Number(_0x2b7bf2[_0x86e7('0x4c')][_0x86e7('0x5f')][_0x218bcb]),'ChatWebsiteId':Number(_0x2b7bf2['params']['id'])});}return _0x5f4774;});}})[_0x86e7('0x16')](respondWithResult(_0x295563,null))['catch'](handleError(_0x295563,null));};exports['removeAgents']=function(_0x13c45f,_0x49a8f1){return db[_0x86e7('0x32')]['find']({'where':{'id':_0x13c45f[_0x86e7('0x48')]['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x49a8f1,null))[_0x86e7('0x16')](function(_0x35695c){if(_0x35695c){return _0x35695c[_0x86e7('0x12d')](_0x13c45f['query'][_0x86e7('0x5f')])[_0x86e7('0x16')](function(){if(_[_0x86e7('0x12e')](_0x13c45f['query'][_0x86e7('0x5f')])){for(var _0x3010f2=0x0;_0x3010f2<_0x13c45f['query'][_0x86e7('0x5f')][_0x86e7('0x3c')];_0x3010f2+=0x1){socket[_0x86e7('0x12b')]('userChatWebsite:remove',{'UserId':Number(_0x13c45f[_0x86e7('0x37')]['ids'][_0x3010f2]),'ChatWebsiteId':Number(_0x13c45f[_0x86e7('0x48')]['id'])});}}else{socket[_0x86e7('0x12b')]('userChatWebsite:remove',{'UserId':Number(_0x13c45f[_0x86e7('0x37')][_0x86e7('0x5f')]),'ChatWebsiteId':Number(_0x13c45f['params']['id'])});}});}})[_0x86e7('0x16')](respondWithStatusCode(_0x49a8f1,null))[_0x86e7('0x20')](handleError(_0x49a8f1,null));};exports[_0x86e7('0x12f')]=function(_0x18046c,_0x1de01f){var _0x25f720={};var _0x37d0ac={};var _0x2fb574;var _0x37dd11;return db[_0x86e7('0x32')][_0x86e7('0x59')]({'where':{'id':_0x18046c['params']['id']}})[_0x86e7('0x16')](handleEntityNotFound(_0x1de01f,null))[_0x86e7('0x16')](function(_0x285f29){if(_0x285f29){_0x2fb574=_0x285f29;_0x37d0ac['model']=_[_0x86e7('0x49')](db['User'][_0x86e7('0x5a')]);_0x37d0ac[_0x86e7('0x37')]=_[_0x86e7('0x49')](_0x18046c[_0x86e7('0x37')]);_0x37d0ac[_0x86e7('0x38')]=_['intersection'](_0x37d0ac['model'],_0x37d0ac[_0x86e7('0x37')]);_0x25f720[_0x86e7('0x3a')]=_[_0x86e7('0x39')](_0x37d0ac[_0x86e7('0x36')],qs[_0x86e7('0x3b')](_0x18046c[_0x86e7('0x37')]['fields']));_0x25f720[_0x86e7('0x3a')]=_0x25f720['attributes']['length']?_0x25f720[_0x86e7('0x3a')]:_0x37d0ac[_0x86e7('0x36')];_0x25f720[_0x86e7('0x5c')]=qs[_0x86e7('0x3e')](_0x18046c[_0x86e7('0x37')][_0x86e7('0x3e')]);_0x25f720[_0x86e7('0x3f')]=qs[_0x86e7('0x38')](_[_0x86e7('0xed')](_0x18046c['query'],_0x37d0ac[_0x86e7('0x38')]));if(_0x18046c[_0x86e7('0x37')][_0x86e7('0x40')]){_0x25f720[_0x86e7('0x3f')]=_[_0x86e7('0x41')](_0x25f720[_0x86e7('0x3f')],{'$or':_[_0x86e7('0x31')](_0x25f720['attributes'],function(_0x14414){var _0x24a178={};_0x24a178[_0x14414]={'$like':'%'+_0x18046c[_0x86e7('0x37')][_0x86e7('0x40')]+'%'};return _0x24a178;})});}_0x25f720=_[_0x86e7('0x41')]({},_0x25f720,_0x18046c['options']);return _0x2fb574[_0x86e7('0x12f')](_0x25f720);}})['then'](function(_0x44720f){if(_0x44720f){_0x37dd11=_0x44720f['length'];if(!_0x18046c[_0x86e7('0x37')]['hasOwnProperty'](_0x86e7('0x3d'))){_0x25f720[_0x86e7('0x26')]=qs[_0x86e7('0x26')](_0x18046c['query'][_0x86e7('0x26')]);_0x25f720[_0x86e7('0x24')]=qs['offset'](_0x18046c[_0x86e7('0x37')]['offset']);}return _0x2fb574[_0x86e7('0x12f')](_0x25f720);}})['then'](function(_0x5911fd){if(_0x5911fd){return _0x5911fd?{'count':_0x37dd11,'rows':_0x5911fd}:null;}})[_0x86e7('0x16')](respondWithResult(_0x1de01f,null))[_0x86e7('0x20')](handleError(_0x1de01f,null));};
\ No newline at end of file
+var _0x16cb=['CloudProvider','Smtp','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','rawAttributes','Contact','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','iftime\x20%s,%s','timezone','iftime\x20%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','increment','chatLicenseExceeded','push','all','some','server/files/chat/iframe.ejs','x-forwarded-for','x-real-ip','connection','remoteAddress','replace','render','alignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','items','fromKey','getOfflineMessages','addAgents','userChatWebsite:save','removeAgents','userChatWebsite:remove','emit','getAgents','bluebird','util','ejs','fs-extra','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','localhost','socket.io-emitter','redis','register','html-to-text','jayson/promise','http','client','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','ChatWebsites','end','stack','name','send','index','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','Pause','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','nolimit','order','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','custom','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','chat','CmContact','Sequelize','ValidationError','createdAt','difference','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','List','Contacts','DESC','ChatApplication','Applications','applications','orderBy','priority','asc','account','defaults','customerIp','cf-connecting-ip','split','firstName','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','lastName','messageId','autoclose','close','unmanaged','ChatMessage','contact','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','EventManager','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','toPairs','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','transaction','Attachment','MailServerOut'];(function(_0x22995b,_0x10617f){var _0x1c28bd=function(_0x45fa1c){while(--_0x45fa1c){_0x22995b['push'](_0x22995b['shift']());}};_0x1c28bd(++_0x10617f);}(_0x16cb,0x181));var _0xb16c=function(_0x3425ac,_0x58c805){_0x3425ac=_0x3425ac-0x0;var _0x28aafc=_0x16cb[_0x3425ac];return _0x28aafc;};'use strict';var BPromise=require(_0xb16c('0x0'));var Mustache=require('mustache');var util=require(_0xb16c('0x1'));var path=require('path');var ejs=require(_0xb16c('0x2'));var fs=require('fs');var fs_extra=require(_0xb16c('0x3'));var _=require('lodash');var querystring=require(_0xb16c('0x4'));var Redis=require(_0xb16c('0x5'));var qs=require(_0xb16c('0x6'));var logger=require('../../config/logger')(_0xb16c('0x7'));var config=require(_0xb16c('0x8'));var db=require(_0xb16c('0x9'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb16c('0xa'),'port':0x18eb});var socket=require(_0xb16c('0xb'))(new Redis(config[_0xb16c('0xc')]));require('./chatWebsite.socket')[_0xb16c('0xd')](socket);var htmlToText=require(_0xb16c('0xe'));var jayson=require(_0xb16c('0xf'));var client=jayson['client'][_0xb16c('0x10')]({'port':0x232c});var client9002=jayson[_0xb16c('0x11')][_0xb16c('0x10')]({'port':0x232a});var client9003=jayson['client'][_0xb16c('0x10')]({'port':0x232b});var client9001=jayson[_0xb16c('0x11')][_0xb16c('0x10')]({'port':0x2329});function respondWithRpcPromise(_0x589894,_0x261cf7,_0x4f63c5,_0xca8a71){return new BPromise(function(_0x165971,_0x3f6ae2){var _0x31fa4f=_0xca8a71||client;return _0x31fa4f['request'](_0x589894,_0x4f63c5)[_0xb16c('0x12')](function(_0x6b5023){logger[_0xb16c('0x13')](_0xb16c('0x14'),_0x261cf7,_0xb16c('0x15'));logger[_0xb16c('0x16')](_0xb16c('0x17'),_0x261cf7,'request\x20sent',JSON[_0xb16c('0x18')](_0x6b5023));if(_0x6b5023[_0xb16c('0x19')]){if(_0x6b5023[_0xb16c('0x19')]['code']===0x1f4){logger['error'](_0xb16c('0x14'),_0x261cf7,_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);return _0x3f6ae2(_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);}logger[_0xb16c('0x19')](_0xb16c('0x14'),_0x261cf7,_0x6b5023[_0xb16c('0x19')][_0xb16c('0x1a')]);return _0x165971(_0x6b5023['error']['message']);}else{logger[_0xb16c('0x13')](_0xb16c('0x14'),_0x261cf7,_0xb16c('0x15'));_0x165971(_0x6b5023[_0xb16c('0x1b')][_0xb16c('0x1a')]);}})['catch'](function(_0x10cd5d){logger[_0xb16c('0x19')](_0xb16c('0x14'),_0x261cf7,_0x10cd5d);_0x3f6ae2(_0x10cd5d);});});}function respondWithStatusCode(_0x394de9,_0xbaa877){_0xbaa877=_0xbaa877||0xcc;return function(_0x44f9db){if(_0x44f9db){return _0x394de9[_0xb16c('0x1c')](_0xbaa877);}return _0x394de9[_0xb16c('0x1d')](_0xbaa877)['end']();};}function respondWithResult(_0x11ec22,_0x1c1d6f){_0x1c1d6f=_0x1c1d6f||0xc8;return function(_0x29a6dc){if(_0x29a6dc){return _0x11ec22[_0xb16c('0x1d')](_0x1c1d6f)[_0xb16c('0x1e')](_0x29a6dc);}};}function respondWithFilteredResult(_0x55b183,_0x3c5ad2){return function(_0x3e0c79){if(_0x3e0c79){var _0x7cfbb0=typeof _0x3c5ad2[_0xb16c('0x1f')]===_0xb16c('0x20')&&typeof _0x3c5ad2[_0xb16c('0x21')]==='undefined';var _0x19d83c=_0x3e0c79[_0xb16c('0x22')];var _0x273192=_0x7cfbb0?0x0:_0x3c5ad2[_0xb16c('0x1f')];var _0x503086=_0x7cfbb0?_0x3e0c79[_0xb16c('0x22')]:_0x3c5ad2[_0xb16c('0x1f')]+_0x3c5ad2[_0xb16c('0x21')];var _0xfc51df;if(_0x503086>=_0x19d83c){_0x503086=_0x19d83c;_0xfc51df=0xc8;}else{_0xfc51df=0xce;}_0x55b183['status'](_0xfc51df);return _0x55b183[_0xb16c('0x23')](_0xb16c('0x24'),_0x273192+'-'+_0x503086+'/'+_0x19d83c)[_0xb16c('0x1e')](_0x3e0c79);}return null;};}function saveUpdates(_0x20a1fb){return function(_0x4715c6){if(_0x4715c6){return _0x4715c6[_0xb16c('0x25')](_0x20a1fb)[_0xb16c('0x12')](function(_0x1a76d8){return _0x1a76d8;});}return null;};}function removeEntity(_0x17a087){return function(_0x36c15d){if(_0x36c15d){return _0x36c15d[_0xb16c('0x26')]()[_0xb16c('0x12')](function(){var _0x374f32=_0x36c15d[_0xb16c('0x27')]({'plain':!![]});var _0x1180c7=_0xb16c('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x1180c7,'resourceId':_0x374f32['id']}})['then'](function(){return _0x36c15d;});})[_0xb16c('0x12')](function(){_0x17a087[_0xb16c('0x1d')](0xcc)[_0xb16c('0x29')]();});}};}function handleEntityNotFound(_0x5110e7){return function(_0x23e5fc){if(!_0x23e5fc){_0x5110e7['sendStatus'](0x194);}return _0x23e5fc;};}function handleError(_0x4e1d96,_0x85108a){_0x85108a=_0x85108a||0x1f4;return function(_0x4b5b38){logger[_0xb16c('0x19')](_0x4b5b38[_0xb16c('0x2a')]);if(_0x4b5b38[_0xb16c('0x2b')]){delete _0x4b5b38[_0xb16c('0x2b')];}_0x4e1d96['status'](_0x85108a)[_0xb16c('0x2c')](_0x4b5b38);};}exports[_0xb16c('0x2d')]=function(_0x520e86,_0xa60067){var _0x1e960f={'include':[{'model':db['Pause'],'as':_0xb16c('0x2e')}]},_0x5acb59={},_0xdd9222={'count':0x0,'rows':[]};var _0x3e894e=_[_0xb16c('0x2f')](db[_0xb16c('0x30')]['rawAttributes'],function(_0x43bdbb){return{'name':_0x43bdbb[_0xb16c('0x31')],'type':_0x43bdbb[_0xb16c('0x32')][_0xb16c('0x33')]};});_0x5acb59[_0xb16c('0x34')]=_[_0xb16c('0x2f')](_0x3e894e,_0xb16c('0x2b'));_0x5acb59[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x520e86['query']);_0x5acb59['filters']=_[_0xb16c('0x37')](_0x5acb59[_0xb16c('0x34')],_0x5acb59[_0xb16c('0x35')]);_0x1e960f['attributes']=_['intersection'](_0x5acb59[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x520e86[_0xb16c('0x35')]['fields']));_0x1e960f[_0xb16c('0x39')]=_0x1e960f['attributes'][_0xb16c('0x3a')]?_0x1e960f[_0xb16c('0x39')]:_0x5acb59[_0xb16c('0x34')];if(!_0x520e86[_0xb16c('0x35')]['hasOwnProperty']('nolimit')){_0x1e960f['limit']=qs[_0xb16c('0x21')](_0x520e86[_0xb16c('0x35')][_0xb16c('0x21')]);_0x1e960f[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x520e86[_0xb16c('0x35')]['offset']);}_0x1e960f['order']=qs[_0xb16c('0x3b')](_0x520e86['query']['sort']);_0x1e960f[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x520e86[_0xb16c('0x35')],_0x5acb59[_0xb16c('0x3d')]),_0x3e894e);if(_0x520e86[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x1e960f[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x1e960f[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x3e894e,function(_0x194938){if(_0x194938[_0xb16c('0x32')]!==_0xb16c('0x41')){var _0x4e53dc={};_0x4e53dc[_0x194938['name']]={'$like':'%'+_0x520e86['query'][_0xb16c('0x3f')]+'%'};return _0x4e53dc;}})});}_0x1e960f=_['merge']({},_0x1e960f,_0x520e86[_0xb16c('0x42')]);var _0x317d0d={'where':_0x1e960f[_0xb16c('0x3c')]};return db[_0xb16c('0x30')][_0xb16c('0x22')](_0x317d0d)['then'](function(_0x25c9f0){_0xdd9222[_0xb16c('0x22')]=_0x25c9f0;if(_0x520e86[_0xb16c('0x35')]['includeAll']){_0x1e960f[_0xb16c('0x43')]=[{'all':!![]}];}return db[_0xb16c('0x30')][_0xb16c('0x44')](_0x1e960f);})[_0xb16c('0x12')](function(_0x4f5fc7){_0xdd9222['rows']=_0x4f5fc7;return _0xdd9222;})[_0xb16c('0x12')](respondWithFilteredResult(_0xa60067,_0x1e960f))[_0xb16c('0x45')](handleError(_0xa60067,null));};exports[_0xb16c('0x46')]=function(_0x1a3c14,_0x4f9b96){var _0x39db54={'raw':![],'where':{'id':_0x1a3c14['params']['id']},'include':[{'model':db[_0xb16c('0x47')],'as':_0xb16c('0x2e')}]},_0x2f2f05={};_0x2f2f05[_0xb16c('0x34')]=_['keys'](db['ChatWebsite']['rawAttributes']);_0x2f2f05[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x1a3c14[_0xb16c('0x35')]);_0x2f2f05[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x2f2f05[_0xb16c('0x34')],_0x2f2f05[_0xb16c('0x35')]);_0x39db54['attributes']=_[_0xb16c('0x37')](_0x2f2f05[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x1a3c14[_0xb16c('0x35')][_0xb16c('0x38')]));_0x39db54[_0xb16c('0x39')]=_0x39db54[_0xb16c('0x39')][_0xb16c('0x3a')]?_0x39db54['attributes']:_0x2f2f05[_0xb16c('0x34')];if(_0x1a3c14[_0xb16c('0x35')][_0xb16c('0x48')]){_0x39db54['include']=[{'all':!![]}];}_0x39db54=_[_0xb16c('0x40')]({},_0x39db54,_0x1a3c14[_0xb16c('0x42')]);return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x39db54)[_0xb16c('0x12')](handleEntityNotFound(_0x4f9b96,null))[_0xb16c('0x12')](respondWithResult(_0x4f9b96,null))[_0xb16c('0x45')](handleError(_0x4f9b96,null));};exports['create']=function(_0x2319bf,_0x3655a0){return db['ChatWebsite'][_0xb16c('0x4a')](_0x2319bf[_0xb16c('0x4b')],{})[_0xb16c('0x12')](function(_0x5f33cd){var _0x559f4b=_0x2319bf[_0xb16c('0x4c')]['get']({'plain':!![]});if(!_0x559f4b)throw new Error(_0xb16c('0x4d'));if(_0x559f4b[_0xb16c('0x4e')]===_0xb16c('0x4c')){var _0xe8d16a=_0x5f33cd['get']({'plain':!![]});var _0x153966=_0xb16c('0x28');return db['UserProfileSection'][_0xb16c('0x49')]({'where':{'name':_0x153966,'userProfileId':_0x559f4b[_0xb16c('0x4f')]},'raw':!![]})[_0xb16c('0x12')](function(_0x267c5c){if(_0x267c5c&&_0x267c5c[_0xb16c('0x50')]===0x0){return db['UserProfileResource'][_0xb16c('0x4a')]({'name':_0xe8d16a['name'],'resourceId':_0xe8d16a['id'],'type':_0x267c5c[_0xb16c('0x2b')],'sectionId':_0x267c5c['id']},{})[_0xb16c('0x12')](function(){return _0x5f33cd;});}else{return _0x5f33cd;}})[_0xb16c('0x45')](function(_0x2391d0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2391d0);throw _0x2391d0;});}return _0x5f33cd;})[_0xb16c('0x12')](respondWithResult(_0x3655a0,0xc9))['catch'](handleError(_0x3655a0,null));};exports[_0xb16c('0x25')]=function(_0x553ab2,_0x1e2959){if(_0x553ab2[_0xb16c('0x4b')]['id']){delete _0x553ab2[_0xb16c('0x4b')]['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x553ab2[_0xb16c('0x51')]['id']},'include':[{'model':db[_0xb16c('0x47')],'as':_0xb16c('0x2e')}]})['then'](handleEntityNotFound(_0x1e2959,null))[_0xb16c('0x12')](saveUpdates(_0x553ab2[_0xb16c('0x4b')],null))[_0xb16c('0x12')](respondWithResult(_0x1e2959,null))[_0xb16c('0x45')](handleError(_0x1e2959,null));};exports['destroy']=function(_0x4bab3f,_0x1ecb10){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x4bab3f[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1ecb10,null))[_0xb16c('0x12')](removeEntity(_0x1ecb10,null))['catch'](handleError(_0x1ecb10,null));};exports[_0xb16c('0x52')]=function(_0x56c2e9,_0x468116){return db[_0xb16c('0x30')]['describe']()[_0xb16c('0x12')](respondWithResult(_0x468116,null))['catch'](handleError(_0x468116,null));};exports[_0xb16c('0x53')]=function(_0x43a546,_0x15eb1f){if(_0x43a546['body']['id']){delete _0x43a546['body']['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x43a546[_0xb16c('0x51')]['id']}})['then'](handleEntityNotFound(_0x15eb1f,null))[_0xb16c('0x12')](function(_0x4e195a){if(_0x4e195a){_0x43a546['body'][_0xb16c('0x54')]=_0x4e195a['id'];return db[_0xb16c('0x55')][_0xb16c('0x4a')](_0x43a546[_0xb16c('0x4b')]);}})[_0xb16c('0x12')](respondWithResult(_0x15eb1f,null))[_0xb16c('0x45')](handleError(_0x15eb1f,null));};exports[_0xb16c('0x56')]=function(_0x386538,_0x4e203){var _0x260263={'raw':![],'where':{}};var _0x1a8126={};var _0x1177f9={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb16c('0x57')]({'where':{'id':_0x386538[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x4e203,null))[_0xb16c('0x12')](function(_0x496b80){if(_0x496b80){_0x1a8126[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x55')]['rawAttributes']);_0x1a8126[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x386538[_0xb16c('0x35')]);_0x1a8126['filters']=_['intersection'](_0x1a8126[_0xb16c('0x34')],_0x1a8126[_0xb16c('0x35')]);_0x260263[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x1a8126[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x386538[_0xb16c('0x35')][_0xb16c('0x38')]));_0x260263[_0xb16c('0x39')]=_0x260263[_0xb16c('0x39')][_0xb16c('0x3a')]?_0x260263[_0xb16c('0x39')]:_0x1a8126[_0xb16c('0x34')];if(!_0x386538[_0xb16c('0x35')]['hasOwnProperty'](_0xb16c('0x58'))){_0x260263[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x386538[_0xb16c('0x35')][_0xb16c('0x21')]);_0x260263[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x386538[_0xb16c('0x35')]['offset']);}_0x260263[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x386538[_0xb16c('0x35')]['sort']);_0x260263[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_['pick'](_0x386538[_0xb16c('0x35')],_0x1a8126['filters']));_0x260263['where'][_0xb16c('0x54')]=_0x496b80['id'];if(_0x386538[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x260263[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x260263[_0xb16c('0x3c')],{'$or':_['map'](_0x260263[_0xb16c('0x39')],function(_0x43fcda){var _0x4ede1c={};_0x4ede1c[_0x43fcda]={'$like':'%'+_0x386538[_0xb16c('0x35')]['filter']+'%'};return _0x4ede1c;})});}_0x260263=_[_0xb16c('0x40')]({},_0x260263,_0x386538[_0xb16c('0x42')]);return db[_0xb16c('0x55')][_0xb16c('0x22')]({'where':_0x260263[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x48f7de){_0x1177f9[_0xb16c('0x22')]=_0x48f7de;if(_0x386538['query'][_0xb16c('0x48')]){_0x260263[_0xb16c('0x43')]=[{'all':!![]}];}return db['Disposition'][_0xb16c('0x44')](_0x260263);})['then'](function(_0x1033d3){_0x1177f9[_0xb16c('0x5a')]=_0x1033d3;return _0x1177f9;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x4e203,_0x260263))[_0xb16c('0x45')](handleError(_0x4e203,null));};exports['removeDispositions']=function(_0xf94f89,_0x103000){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0xf94f89[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x103000,null))[_0xb16c('0x12')](function(_0xbffced){if(_0xbffced){return _0xbffced[_0xb16c('0x5b')](_0xf94f89[_0xb16c('0x35')][_0xb16c('0x5c')]);}})[_0xb16c('0x12')](respondWithStatusCode(_0x103000,null))[_0xb16c('0x45')](handleError(_0x103000,null));};exports[_0xb16c('0x5d')]=function(_0x333db9,_0x340465){if(_0x333db9[_0xb16c('0x4b')]['id']){delete _0x333db9[_0xb16c('0x4b')]['id'];}return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x333db9[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x340465,null))[_0xb16c('0x12')](function(_0x4a4dfd){if(_0x4a4dfd){_0x333db9[_0xb16c('0x4b')][_0xb16c('0x54')]=_0x4a4dfd['id'];return db[_0xb16c('0x5e')][_0xb16c('0x4a')](_0x333db9['body']);}})['then'](respondWithResult(_0x340465,null))[_0xb16c('0x45')](handleError(_0x340465,null));};exports[_0xb16c('0x5f')]=function(_0x3e6fbf,_0x9e7856){var _0x290c60={'raw':![],'where':{}};var _0x433f5b={};var _0x12de82={'count':0x0,'rows':[]};return db[_0xb16c('0x30')]['findOne']({'where':{'id':_0x3e6fbf[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x9e7856,null))['then'](function(_0x554194){if(_0x554194){_0x433f5b[_0xb16c('0x34')]=_['keys'](db[_0xb16c('0x5e')]['rawAttributes']);_0x433f5b[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x3e6fbf['query']);_0x433f5b[_0xb16c('0x3d')]=_['intersection'](_0x433f5b[_0xb16c('0x34')],_0x433f5b[_0xb16c('0x35')]);_0x290c60[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x433f5b[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x38')]));_0x290c60[_0xb16c('0x39')]=_0x290c60['attributes'][_0xb16c('0x3a')]?_0x290c60[_0xb16c('0x39')]:_0x433f5b['model'];if(!_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x290c60[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x3e6fbf[_0xb16c('0x35')]['limit']);_0x290c60[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x290c60[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x290c60[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x3e6fbf['query'],_0x433f5b[_0xb16c('0x3d')]));_0x290c60['where'][_0xb16c('0x54')]=_0x554194['id'];if(_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x290c60[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x290c60[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x290c60[_0xb16c('0x39')],function(_0x2c8fbf){var _0x2da763={};_0x2da763[_0x2c8fbf]={'$like':'%'+_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x2da763;})});}_0x290c60=_['merge']({},_0x290c60,_0x3e6fbf['options']);return db[_0xb16c('0x5e')]['count']({'where':_0x290c60['where']})[_0xb16c('0x12')](function(_0x2e7157){_0x12de82[_0xb16c('0x22')]=_0x2e7157;if(_0x3e6fbf[_0xb16c('0x35')][_0xb16c('0x48')]){_0x290c60[_0xb16c('0x43')]=[{'all':!![]}];}return db[_0xb16c('0x5e')][_0xb16c('0x44')](_0x290c60);})[_0xb16c('0x12')](function(_0xaa42b6){_0x12de82['rows']=_0xaa42b6;return _0x12de82;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x9e7856,_0x290c60))['catch'](handleError(_0x9e7856,null));};exports[_0xb16c('0x61')]=function(_0x261d0b,_0x5120ae){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x261d0b[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x5120ae,null))[_0xb16c('0x12')](function(_0x1f37c3){if(_0x1f37c3){return _0x1f37c3['removeAnswers'](_0x261d0b[_0xb16c('0x35')]['ids']);}})['then'](respondWithStatusCode(_0x5120ae,null))[_0xb16c('0x45')](handleError(_0x5120ae,null));};exports[_0xb16c('0x62')]=function(_0x4158b8,_0x588605){_0x4158b8[_0xb16c('0x4b')][_0xb16c('0x63')]=_0x4158b8[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')]['find']({'where':{'id':_0x4158b8['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x588605,null))[_0xb16c('0x12')](saveUpdates(_0x4158b8[_0xb16c('0x4b')],null))[_0xb16c('0x12')](respondWithResult(_0x588605,null))['catch'](handleError(_0x588605,null));};exports['addAvatar']=function(_0xceb773,_0x18ff47){_0xceb773['body']['agentAvatar']=_0xceb773[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')]['find']({'where':{'id':_0xceb773[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x18ff47,null))['then'](saveUpdates(_0xceb773[_0xb16c('0x4b')],null))['then'](respondWithResult(_0x18ff47,null))[_0xb16c('0x45')](handleError(_0x18ff47,null));};exports[_0xb16c('0x66')]=function(_0x37559e,_0x1e2829){_0x37559e[_0xb16c('0x4b')][_0xb16c('0x67')]=_0x37559e[_0xb16c('0x64')][_0xb16c('0x65')];return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x37559e[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1e2829,null))[_0xb16c('0x12')](saveUpdates(_0x37559e['body'],null))['then'](respondWithResult(_0x1e2829,null))[_0xb16c('0x45')](handleError(_0x1e2829,null));};exports['addSystemAvatar']=function(_0x6dad20,_0xf3d002){_0x6dad20[_0xb16c('0x4b')][_0xb16c('0x68')]=_0x6dad20['file'][_0xb16c('0x65')];return db['ChatWebsite'][_0xb16c('0x49')]({'where':{'id':_0x6dad20['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0xf3d002,null))['then'](saveUpdates(_0x6dad20[_0xb16c('0x4b')],null))['then'](respondWithResult(_0xf3d002,null))[_0xb16c('0x45')](handleError(_0xf3d002,null));};exports[_0xb16c('0x69')]=function(_0x1a92c3,_0x54d563){var _0x435212=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x6c'));var _0x56af68={'where':{'id':_0x1a92c3['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x269240=![];return require('../../config/license/util')['getLicense']()[_0xb16c('0x12')](function(_0x4f5bde){if(_0x4f5bde){_0x269240=_0x4f5bde[_0xb16c('0x6d')];}})[_0xb16c('0x12')](function(){return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x56af68);})['then'](handleEntityNotFound(_0x54d563,null))['then'](function(_0x36c30d){if(_0x36c30d){if(!_[_0xb16c('0x6e')](_0x36c30d['sitepic'])){if(fs[_0xb16c('0x6f')](path['join'](config[_0xb16c('0x6b')],_0xb16c('0x70'),_0x36c30d['sitepic']))&&_0x269240){_0x435212=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x70'),_0x36c30d['sitepic']);}}return _0x54d563['download'](_0x435212);}})[_0xb16c('0x45')](handleError(_0x54d563,null));};exports[_0xb16c('0x71')]=function(_0x189fac,_0x29404){var _0x123440=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x72'));var _0x487abb={'where':{'id':_0x189fac[_0xb16c('0x51')]['id']},'attributes':['id',_0xb16c('0x73')],'raw':!![]};return db['ChatWebsite'][_0xb16c('0x49')](_0x487abb)[_0xb16c('0x12')](handleEntityNotFound(_0x29404,null))[_0xb16c('0x12')](function(_0xd2b1a3){if(_0xd2b1a3){if(!_[_0xb16c('0x6e')](_0xd2b1a3['agentAvatar'])){if(fs[_0xb16c('0x6f')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0xd2b1a3['agentAvatar']))){_0x123440=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/images/avatars/',_0xd2b1a3[_0xb16c('0x73')]);}}return _0x29404[_0xb16c('0x75')](_0x123440);}})['catch'](handleError(_0x29404,null));};exports[_0xb16c('0x76')]=function(_0x59d79c,_0xb64f0b){var _0x4d0648=path[_0xb16c('0x6a')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x33ef11={'where':{'id':_0x59d79c['params']['id']},'attributes':['id','customerAvatar',_0xb16c('0x77')],'raw':!![]};return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x33ef11)[_0xb16c('0x12')](handleEntityNotFound(_0xb64f0b,null))[_0xb16c('0x12')](function(_0x46b88e){if(_0x46b88e){if(!_[_0xb16c('0x6e')](_0x46b88e[_0xb16c('0x67')])){if(fs[_0xb16c('0x6f')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/images/avatars/',_0x46b88e['customerAvatar']))&&_0x46b88e[_0xb16c('0x77')]){_0x4d0648=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x46b88e[_0xb16c('0x67')]);}}return _0xb64f0b[_0xb16c('0x75')](_0x4d0648);}})[_0xb16c('0x45')](handleError(_0xb64f0b,null));};exports[_0xb16c('0x78')]=function(_0x33a99f,_0x47b8c3){var _0x165731=path['join'](config[_0xb16c('0x6b')],_0xb16c('0x79'));var _0x1ce407={'where':{'id':_0x33a99f['params']['id']},'attributes':['id',_0xb16c('0x68')],'raw':!![]};return db[_0xb16c('0x30')][_0xb16c('0x49')](_0x1ce407)[_0xb16c('0x12')](handleEntityNotFound(_0x47b8c3,null))['then'](function(_0x58080f){if(_0x58080f){if(!_[_0xb16c('0x6e')](_0x58080f[_0xb16c('0x68')])){if(fs[_0xb16c('0x6f')](path['join'](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x58080f[_0xb16c('0x68')]))){_0x165731=path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x74'),_0x58080f['systemAvatar']);}}return _0x47b8c3[_0xb16c('0x75')](_0x165731);}})['catch'](handleError(_0x47b8c3,null));};exports[_0xb16c('0x7a')]=function(_0x38b177,_0x1698d1){var _0x11300c=require(_0xb16c('0x7b'));var _0x2e2643=new _0x11300c();var _0x5dc2a0=_0x2e2643['setUA'](_0x38b177[_0xb16c('0x7c')]['user-agent'])['getResult']();var _0x5c5a30={'body':_0x38b177['body'],'channel':_0xb16c('0x7d')};var _0x1c06bd=[];var _0x205880=[];var _0x1c5758={};var _0x1fc3bc=![];return db[_0xb16c('0x7e')][_0xb16c('0x52')]()[_0xb16c('0x12')](function(_0x4941c5){if(!_0x4941c5){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))]('no\x20available\x20attributes');}_0x1c06bd=_['difference'](_[_0xb16c('0x36')](_0x4941c5),[_0xb16c('0x81'),'updatedAt']);_0x205880=_[_0xb16c('0x82')](_[_0xb16c('0x36')](_0x4941c5),[_0xb16c('0x81'),_0xb16c('0x83'),_0xb16c('0x84'),_0xb16c('0x85')]);if(_0x38b177[_0xb16c('0x4b')]['id']){delete _0x38b177[_0xb16c('0x4b')]['id'];}if(_[_0xb16c('0x6e')](_0x38b177['body'][_0xb16c('0x86')])){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0x87'));}if(_[_0xb16c('0x6e')](_0x38b177['body']['body'])||_0x38b177[_0xb16c('0x4b')][_0xb16c('0x4b')]===''){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0x88'));}if(_['isNil'](_0x38b177['body']['mapKey'])){throw new db['Sequelize'][(_0xb16c('0x80'))](_0xb16c('0x89')+_0x205880);}if(!_[_0xb16c('0x8a')](_0x205880,_0x38b177[_0xb16c('0x4b')]['mapKey'])){throw new db[(_0xb16c('0x7f'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x205880);}_0x1c5758[_0x38b177[_0xb16c('0x4b')][_0xb16c('0x8b')]]=_0x38b177['body'][_0xb16c('0x86')];})['then'](function(){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x38b177[_0xb16c('0x51')]['id']},'include':[{'model':db['CmList'],'as':_0xb16c('0x8c'),'include':[{'model':db[_0xb16c('0x7e')],'as':_0xb16c('0x8d'),'where':_0x1c5758,'limit':0x1,'order':[[_0xb16c('0x83'),_0xb16c('0x8e')]]}]},{'model':db[_0xb16c('0x8f')],'as':_0xb16c('0x90')}]});})[_0xb16c('0x12')](handleEntityNotFound(_0x1698d1,null))[_0xb16c('0x12')](function(_0x636268){if(_0x636268&&_0x636268[_0xb16c('0x8c')]){_0x5c5a30['account']=_0x636268;_0x5c5a30['applications']=_0x636268[_0xb16c('0x90')];_0x5c5a30['list']=_0x636268['List'];_0x5c5a30[_0xb16c('0x91')]=_[_0xb16c('0x92')](_0x5c5a30['applications'],[_0xb16c('0x93')],[_0xb16c('0x94')]);if(_0x5c5a30[_0xb16c('0x95')][_0xb16c('0x90')]){delete _0x5c5a30[_0xb16c('0x95')][_0xb16c('0x90')];}if(_0x5c5a30['account'][_0xb16c('0x8c')]&&_0x5c5a30['account'][_0xb16c('0x8c')][_0xb16c('0x8d')][_0xb16c('0x3a')]){return _0x5c5a30[_0xb16c('0x95')][_0xb16c('0x8c')]['Contacts'][0x0];}var _0x35ccf5=_[_0xb16c('0x96')](_0x38b177['body'],{'firstName':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x86')],'ListId':_0x636268[_0xb16c('0x85')]});_0x35ccf5[_0x38b177[_0xb16c('0x4b')]['mapKey']]=_0x38b177['body']['from'];return db[_0xb16c('0x7e')][_0xb16c('0x4a')](_0x35ccf5,{'fields':_0x1c06bd,'raw':!![]});}})[_0xb16c('0x12')](handleEntityNotFound(_0x1698d1,null))['then'](function(_0x25fbac){_0x5c5a30['contact']=_0x25fbac;var _0x1bcb28=_0x38b177[_0xb16c('0x4b')][_0xb16c('0x97')];if(_0x38b177[_0xb16c('0x7c')][_0xb16c('0x98')]){_0x1bcb28=_0x38b177[_0xb16c('0x7c')][_0xb16c('0x98')];}else if(_0x38b177[_0xb16c('0x7c')]['x-forwarded-for']){_0x1bcb28=_['first'](_0x38b177['headers']['x-forwarded-for'][_0xb16c('0x99')](','));}if(_0x25fbac){var _0x4635d8={'ContactId':_0x25fbac['id'],'ChatWebsiteId':_0x38b177['params']['id'],'from':(_0x25fbac[_0xb16c('0x9a')]||'')+'\x20'+(_0x25fbac['lastName']||''),'customerIp':_0x1bcb28,'customerPort':_0x38b177['headers']['x-real-port']?_0x38b177[_0xb16c('0x7c')]['x-real-port']:null,'referer':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x9b')],'browserName':_0x5dc2a0[_0xb16c('0x9c')]['name']&&_0x5dc2a0[_0xb16c('0x9c')][_0xb16c('0x9d')]?util[_0xb16c('0x9e')](_0xb16c('0x9f'),_0x5dc2a0[_0xb16c('0x9c')]['name'],_0x5dc2a0[_0xb16c('0x9c')][_0xb16c('0x9d')]):_0xb16c('0xa0'),'browserVersion':_0x5dc2a0['browser'][_0xb16c('0x9d')]||_0xb16c('0xa0'),'osName':util['format']('%s\x20%s',_0x5dc2a0['os'][_0xb16c('0x2b')],_0x5dc2a0['os'][_0xb16c('0x9d')]),'osVersion':_0x5dc2a0['os'][_0xb16c('0x9d')],'deviceModel':_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0x34')]&&_0x5dc2a0['device']['vendor']?util[_0xb16c('0x9e')](_0xb16c('0xa2'),_0x5dc2a0['device'][_0xb16c('0x34')],_0x5dc2a0['device'][_0xb16c('0xa3')],_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0x32')]):null,'deviceVendor':_0x5dc2a0[_0xb16c('0xa1')][_0xb16c('0xa3')],'deviceType':_0x5dc2a0['device'][_0xb16c('0x32')],'formData':JSON[_0xb16c('0x18')](_0x38b177[_0xb16c('0x4b')])};var _0x49eb7b={'ChatWebsiteId':_0x38b177[_0xb16c('0x51')]['id'],'closed':![]};if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]){_0x49eb7b[_0xb16c('0xa4')]=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')];return db[_0xb16c('0xa5')][_0xb16c('0x49')]({'where':_0x49eb7b})[_0xb16c('0x12')](function(_0x8fee1d){if(_0x8fee1d){return[_0x8fee1d,![]];}_0x4635d8[_0xb16c('0xa4')]=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')];_0x4635d8['externalUrl']=_0x38b177['body'][_0xb16c('0xa6')];return db['ChatInteraction']['create'](_0x4635d8)[_0xb16c('0x12')](function(_0xe9a987){return[_0xe9a987,!![]];});});}_0x49eb7b[_0xb16c('0xa7')]=_0x25fbac['id'];if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa8')]&&_0x38b177['body'][_0xb16c('0xa8')]['id']){_0x49eb7b['id']=_0x38b177['body'][_0xb16c('0xa8')]['id'];return db['ChatInteraction'][_0xb16c('0x49')]({'where':_0x49eb7b})[_0xb16c('0x12')](function(_0x5bb353){if(_0x5bb353){return[_0x5bb353,![]];}return db['ChatInteraction'][_0xb16c('0x4a')](_0x4635d8)[_0xb16c('0x12')](function(_0x4e648b){return[_0x4e648b,!![]];});});}return db['ChatInteraction']['create'](_0x4635d8)[_0xb16c('0x12')](function(_0x3b76a3){return[_0x3b76a3,!![]];});}})[_0xb16c('0xa9')](function(_0x54c9ea,_0x214862){if(_0x54c9ea){_0x1fc3bc=_0x214862;if(!_0x214862){var _0x1850a0={'from':(_0x5c5a30['contact'][_0xb16c('0x9a')]||'')+'\x20'+(_0x5c5a30['contact'][_0xb16c('0xaa')]||'')};if(_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]&&_0x38b177[_0xb16c('0x4b')]['messageId']&&_0x38b177[_0xb16c('0x4b')][_0xb16c('0xa4')]!=_0x38b177[_0xb16c('0x4b')][_0xb16c('0xab')]){_0x1850a0[_0xb16c('0xa4')]=_0x38b177['body'][_0xb16c('0xab')];}return _0x54c9ea[_0xb16c('0x25')](_0x1850a0);}else{return _0x54c9ea;}}})[_0xb16c('0x12')](function(_0x425973){_0x5c5a30[_0xb16c('0xa8')]=_0x425973['get']({'plain':!![]});_0x5c5a30['interaction']['created']=_0x1fc3bc;if(_0x5c5a30[_0xb16c('0xa8')]['created']){if(_0x5c5a30['account'][_0xb16c('0xac')]){_0x5c5a30[_0xb16c('0x91')]['push']({'id':0x0,'priority':_0x5c5a30[_0xb16c('0x91')]['length']+0x1,'app':_0xb16c('0xad'),'appdata':_0xb16c('0xae'),'interval':'*,*,*,*'});}}return db[_0xb16c('0xaf')][_0xb16c('0x4a')]({'body':_0x38b177[_0xb16c('0x4b')][_0xb16c('0x4b')],'ChatWebsiteId':_0x38b177[_0xb16c('0x51')]['id'],'ChatInteractionId':_0x425973['id'],'direction':'in','ContactId':_0x5c5a30[_0xb16c('0xb0')]['id'],'AttachmentId':_0x38b177[_0xb16c('0x4b')][_0xb16c('0xb1')]});})[_0xb16c('0x12')](function(_0x455f4f){_0x5c5a30[_0xb16c('0x1a')]=_0x455f4f;if(_0x5c5a30['interaction'][_0xb16c('0xb2')]){return db[_0xb16c('0xb3')][_0xb16c('0x49')]({'attributes':['id',_0xb16c('0x2b')],'where':{'id':_0x5c5a30[_0xb16c('0xa8')][_0xb16c('0xb2')]}})[_0xb16c('0x12')](function(_0xd23c18){if(_0xd23c18){_0x5c5a30[_0xb16c('0x91')][_0xb16c('0xb4')]({'id':0x0,'priority':0x0,'app':_0xb16c('0xb5'),'appdata':_0xd23c18[_0xb16c('0x2b')]+','+(_0x5c5a30['account'][_0xb16c('0xb6')]||0xa),'interval':'*,*,*,*'});_0x5c5a30['forcedOwnership']=!![];}return respondWithRpcPromise('Start',_0xb16c('0xb7'),_0x5c5a30);});}return respondWithRpcPromise('Start','startRouting',_0x5c5a30);})['then'](function(_0x211cd8){respondWithRpcPromise(_0xb16c('0xb8'),'EventManager',{'event':_0xb16c('0x7a'),'message':_0x211cd8},client9002);return _0x211cd8;})[_0xb16c('0x12')](respondWithResult(_0x1698d1,null))['catch'](handleError(_0x1698d1,null));};exports['offline']=function(_0x41a3c3,_0x551d77){var _0x5bd7a6,_0x5c8fe4,_0x1d2e9c;var _0x4bccc0=[];var _0x50c049={};var _0x243a4f=_0x41a3c3[_0xb16c('0xb9')]||[];var _0x28b137=[];var _0x4e63b5;return db['CmContact'][_0xb16c('0x52')]()[_0xb16c('0x12')](function(_0x130851){if(!_0x130851){throw new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0xba'));}_0x4bccc0=_[_0xb16c('0x82')](_[_0xb16c('0x36')](_0x130851),[_0xb16c('0x81'),_0xb16c('0x83'),'CompanyId',_0xb16c('0x85')]);if(_0x41a3c3[_0xb16c('0x4b')]['id']){delete _0x41a3c3['body']['id'];}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))]('from\x20is\x20mandatory'));}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x4b')])||_0x41a3c3['body'][_0xb16c('0x4b')]===''){throw _0x551d77[_0xb16c('0x1d')](0x1f4)['send'](new db[(_0xb16c('0x7f'))]['ValidationError'](_0xb16c('0x88')));}if(_[_0xb16c('0x6e')](_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0xbb')])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db['Sequelize'][(_0xb16c('0x80'))](_0xb16c('0xbc')+_0x4bccc0));}if(!_[_0xb16c('0x8a')](_0x4bccc0,_0x41a3c3['body']['mapKeyOffline'])){throw _0x551d77[_0xb16c('0x1d')](0x1f4)[_0xb16c('0x2c')](new db[(_0xb16c('0x7f'))][(_0xb16c('0x80'))](_0xb16c('0xbd')+_0x4bccc0));}_0x50c049[_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0xbb')]]=_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')];})['then'](function(){return db[_0xb16c('0x30')]['find']({'where':{'id':_0x41a3c3[_0xb16c('0x51')]['id']},'include':[{'model':db['CmList'],'as':_0xb16c('0x8c')},{'model':db['MailAccount'],'as':_0xb16c('0xbe')}]});})[_0xb16c('0x12')](handleEntityNotFound(_0x551d77,null))[_0xb16c('0x12')](function(_0x399be1){if(_0x399be1&&_0x399be1['List']){_0x5c8fe4=_0x399be1;var _0x3fb952=_['defaults'](_0x41a3c3[_0xb16c('0x4b')],{'firstName':_0x41a3c3[_0xb16c('0x4b')][_0xb16c('0x86')],'phone':_0x41a3c3[_0xb16c('0x4b')]['from'],'ListId':_0x399be1['ListId']});_0x3fb952[_0x41a3c3['body']['mapKeyOffline']]=_0x41a3c3[_0xb16c('0x4b')]['from'];return db[_0xb16c('0x7e')]['findOrCreate']({'where':_0x50c049,'defaults':_0x3fb952});}})['spread'](function(_0x4a4774){if(_0x4a4774){_0x1d2e9c=_0x4a4774;var _0x8f8dae=fs[_0xb16c('0xbf')](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x369405=ejs['render'](_0x8f8dae,{'body':_[_0xb16c('0xc0')](_0x41a3c3['body']['body']),'bodyTitle':_0x5c8fe4['offlineMessageBody']});return db[_0xb16c('0xc1')]['create']({'body':_0x369405,'plainBody':htmlToText[_0xb16c('0xc2')](_0x369405),'ContactId':_0x4a4774['id'],'ChatWebsiteId':_0x5c8fe4['id']});}})[_0xb16c('0x12')](function(_0x299328){_0x4e63b5=_0x299328;if(_0x243a4f[_0xb16c('0x3a')]){var _0x35c92c=_0x243a4f['map'](function(_0x2f7b8f){return{'name':_0x2f7b8f[_0xb16c('0xc3')],'basename':_0x2f7b8f[_0xb16c('0x65')],'type':_0x2f7b8f[_0xb16c('0xc4')],'ChatOfflineMessageId':_0x299328['id']};});_0x28b137=_0x35c92c[_0xb16c('0x2f')](_0x576e9f=>{var _0xaa2b14={'filename':_0x576e9f[_0xb16c('0x2b')],'path':path[_0xb16c('0x6a')](config['root'],_0xb16c('0xc5'),_0xb16c('0xb9'),_0xb16c('0xc6'),_0xb16c('0xc7'),_0x576e9f['basename'])};return _0xaa2b14;});if(!_0x5c8fe4['openNewInteraction']){return db['sequelize'][_0xb16c('0xc8')](function(_0x1009f1){return db[_0xb16c('0xc9')]['bulkCreate'](_0x35c92c,{'transaction':_0x1009f1});});}}})[_0xb16c('0x12')](function(){if(_0x4e63b5){_0x5bd7a6=_0x4e63b5;return db[_0xb16c('0xbe')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xb16c('0xca')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xb16c('0xcb')],'as':_0xb16c('0xcb'),'raw':!![]}]}]});}})['then'](function(_0x7b68d5){if(_0x7b68d5&&_0x7b68d5[_0xb16c('0xcc')]&&_0x5c8fe4[_0xb16c('0xcd')]&&_0x5c8fe4['forwardOfflineAddress']){var _0x5c578f=_0x7b68d5[_0xb16c('0xce')]();return respondWithRpcPromise(_0xb16c('0xcf'),_0xb16c('0xd0'),{'account':_0x5c578f,'message':{'from':util[_0xb16c('0x9e')](_0xb16c('0xd1'),_0x7b68d5[_0xb16c('0x2b')],_0x7b68d5[_0xb16c('0xd2')]||_0x7b68d5['Smtp'][_0xb16c('0x4c')]),'to':_0x5c8fe4['forwardOfflineAddress'],'subject':_0x5c8fe4[_0xb16c('0xd3')],'html':_0x5bd7a6[_0xb16c('0x4b')],'attachments':_0x28b137}},client9003)[_0xb16c('0x12')](function(){return _0x5bd7a6;})[_0xb16c('0x45')](function(_0x3f91f9){logger[_0xb16c('0x19')](_0x3f91f9);});}})['then'](function(){if(_0x5c8fe4&&_0x5c8fe4[_0xb16c('0xd4')]&&_0x5c8fe4['MailAccountId']){var _0x1b6d98=[];if(_0x243a4f[_0xb16c('0x3a')]){_0x1b6d98=_0x243a4f[_0xb16c('0x2f')](function(_0x1ef322){return{'name':_0x1ef322[_0xb16c('0xc3')],'basename':_0x1ef322[_0xb16c('0x65')],'type':_0x1ef322[_0xb16c('0xc4')],'ChatOfflineMessageId':_0x4e63b5['id']};});}var _0x2c770a;if(!_[_0xb16c('0x6e')](_0x5c8fe4[_0xb16c('0xd5')])){var _0x39a066=_[_0xb16c('0x2f')](_0x41a3c3[_0xb16c('0x4b')],function(_0x52e441){return _0x52e441;});var _0x478dc1=_[_0xb16c('0xd6')](_0x39a066)[0x0];var _0x17cb32=_[_0xb16c('0xd7')](_0x478dc1,function(_0x174cca){return _0x174cca;});_0x2c770a=_0x17cb32[0x1][_0x5c8fe4[_0xb16c('0xd5')]];}var _0x197bba={'from':_0x1d2e9c[_0xb16c('0xd2')],'firstName':_0x1d2e9c[_0xb16c('0x9a')],'lastName':_0x1d2e9c[_0xb16c('0xaa')],'mapKey':_0xb16c('0xd2'),'message':{'from':_0x1d2e9c[_0xb16c('0xd2')],'to':_0x5c8fe4['MailAccount'][_0xb16c('0xd2')],'cc':'','subject':_[_0xb16c('0x6e')](_0x2c770a)?_0x5c8fe4[_0xb16c('0xd3')]:_0x2c770a,'messageId':'','sentAt':new Date(),'attach':_0x1b6d98[_0xb16c('0x3a')],'attachments':_0x1b6d98,'originChannel':_0xb16c('0xd8'),'ChatWebsiteId':_0x5c8fe4['id'],'ChatOfflineMessageId':_0x5bd7a6['id'],'originTo':_0x5c8fe4[_0xb16c('0xbe')][_0xb16c('0xd2')]},'body':_0x5bd7a6['body']};var _0x418778={'account':{'id':_0x5c8fe4[_0xb16c('0xd9')]},'body':_0x197bba,'log':_0xb16c('0xda')};return respondWithRpcPromise(_0xb16c('0xda'),_0xb16c('0xdb'),_0x418778,client9001)[_0xb16c('0x12')](function(){return _0x5bd7a6;})['catch'](function(_0x13719d){logger[_0xb16c('0x19')](_0x13719d);});}return;})[_0xb16c('0x12')](function(){if(_0x5bd7a6){return _0x5bd7a6;}})[_0xb16c('0x12')](respondWithResult(_0x551d77,null))[_0xb16c('0x45')](function(_0x523157){logger[_0xb16c('0x19')](_0xb16c('0x45'),_0x523157);for(var _0xfcf4bb of _0x243a4f){var _0x58c246=path['join'](config[_0xb16c('0x6b')],_0xb16c('0xc5'),_0xb16c('0xb9'),_0xb16c('0xc6'),'offline-chat',_0xfcf4bb[_0xb16c('0x65')]);fs_extra[_0xb16c('0xdc')](_0x58c246)['catch'](function(_0x4882b2){logger[_0xb16c('0x19')](_0xb16c('0xdd'),_0x58c246,_0x4882b2);});}});};exports[_0xb16c('0xde')]=function(_0x3f8f3a,_0x1f7c67){return db['ChatInteraction'][_0xb16c('0x49')]({'where':{'id':_0x3f8f3a[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1f7c67,null))[_0xb16c('0x12')](function(_0x54ec75){if(_0x54ec75){return _0x54ec75['addInteraction'](_0x3f8f3a[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x3f8f3a['body'],[_0xb16c('0x5c'),'id'])||{});}})['then'](respondWithResult(_0x1f7c67,null))['catch'](handleError(_0x1f7c67,null));};exports['getInteractions']=function(_0x436268,_0x57f6d0){var _0x2dd18b={'raw':![],'where':{}};var _0x4520a9={};var _0x1c8c7e={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb16c('0x57')]({'where':{'id':_0x436268[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x57f6d0,null))['then'](function(_0x44c5c7){if(_0x44c5c7){_0x4520a9[_0xb16c('0x34')]=_[_0xb16c('0x36')](db['ChatInteraction'][_0xb16c('0xe0')]);_0x4520a9['query']=_[_0xb16c('0x36')](_0x436268[_0xb16c('0x35')]);_0x4520a9[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x4520a9[_0xb16c('0x34')],_0x4520a9[_0xb16c('0x35')]);_0x2dd18b['attributes']=_[_0xb16c('0x37')](_0x4520a9[_0xb16c('0x34')],qs[_0xb16c('0x38')](_0x436268['query'][_0xb16c('0x38')]));_0x2dd18b['attributes']=_0x2dd18b[_0xb16c('0x39')]['length']?_0x2dd18b[_0xb16c('0x39')]:_0x4520a9['model'];if(!_0x436268[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x2dd18b['limit']=qs[_0xb16c('0x21')](_0x436268[_0xb16c('0x35')][_0xb16c('0x21')]);_0x2dd18b[_0xb16c('0x1f')]=qs['offset'](_0x436268[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x2dd18b[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x436268['query'][_0xb16c('0x3b')]);_0x2dd18b[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x436268[_0xb16c('0x35')],_0x4520a9['filters']));_0x2dd18b[_0xb16c('0x3c')]['ChatWebsiteId']=_0x44c5c7['id'];if(_0x436268[_0xb16c('0x35')]['filter']){_0x2dd18b[_0xb16c('0x3c')]=_['merge'](_0x2dd18b[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x2dd18b['attributes'],function(_0x511c60){var _0x3e827d={};_0x3e827d[_0x511c60]={'$like':'%'+_0x436268[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x3e827d;})});}_0x2dd18b=_[_0xb16c('0x40')]({},_0x2dd18b,_0x436268['options']);return db[_0xb16c('0xa5')][_0xb16c('0x22')]({'where':_0x2dd18b[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x39bb42){_0x1c8c7e[_0xb16c('0x22')]=_0x39bb42;if(_0x436268['query'][_0xb16c('0x48')]){_0x2dd18b['include']=[{'model':db['CmContact'],'as':_0xb16c('0xe1'),'required':![]},{'model':db[_0xb16c('0xb3')],'as':_0xb16c('0xe2'),'attributes':[_0xb16c('0x2b'),_0xb16c('0xe3'),_0xb16c('0xe4')],'required':![]},{'model':db[_0xb16c('0xe5')],'as':_0xb16c('0xe6'),'attributes':['id','name',_0xb16c('0xe7')],'where':_0x436268[_0xb16c('0x35')][_0xb16c('0xe8')]?{'id':_0x436268['query']['tag']}:undefined,'required':_0x436268[_0xb16c('0x35')][_0xb16c('0xe8')]?!![]:![]}];}return db['ChatInteraction'][_0xb16c('0x44')](_0x2dd18b);})[_0xb16c('0x12')](function(_0x409a94){_0x1c8c7e['rows']=_0x409a94;return _0x1c8c7e;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x57f6d0,_0x2dd18b))[_0xb16c('0x45')](handleError(_0x57f6d0,null));};function iftimePromise(_0x20cc96,_0x2317f5){return respondWithRpcPromise(_0xb16c('0xe9'),_0xb16c('0xea'),{'command':_0x2317f5['timezone']?util[_0xb16c('0x9e')](_0xb16c('0xeb'),_0x20cc96['interval'],_0x2317f5[_0xb16c('0xec')]):util[_0xb16c('0x9e')](_0xb16c('0xed'),_0x20cc96[_0xb16c('0xee')])},client9002)[_0xb16c('0x12')](function(_0x1206d9){var _0x49245a=_0x1206d9&&_0x1206d9[_0xb16c('0xef')](_0xb16c('0xf0'))>=0x0?!![]:![];logger[_0xb16c('0x13')](_0xb16c('0xf1'),_0x2317f5['id'],_0x20cc96['id'],_0x20cc96[_0xb16c('0xee')],_0x49245a?_0xb16c('0xf2'):_0xb16c('0xf3'),_0x2317f5[_0xb16c('0xec')]?_0x2317f5[_0xb16c('0xec')]:_0xb16c('0xf4'));return _0x49245a;})['catch'](function(_0x2b6ac7){logger[_0xb16c('0x19')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x2317f5['id'],_0x20cc96['id'],_0x20cc96[_0xb16c('0xee')],util[_0xb16c('0xf5')](_0x2b6ac7,{'showHidden':![],'depth':null}),_0x2317f5[_0xb16c('0xec')]?_0x2317f5[_0xb16c('0xec')]:_0xb16c('0xf4'));return![];});}exports[_0xb16c('0xea')]=function(_0x218b71,_0x1c1704){var _0x3300ed=0x0;var _0x236685=0x0;var _0x387cde=![];var _0x23f2c0;var _0x157c5b;return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x218b71[_0xb16c('0x51')]['id']},'include':[{'model':db[_0xb16c('0xf6')],'as':_0xb16c('0xf6'),'include':[{'model':db[_0xb16c('0xf6')],'as':_0xb16c('0xf7'),'attributes':['id','interval'],'raw':!![]}]}]})[_0xb16c('0x12')](handleEntityNotFound(_0x1c1704,null))[_0xb16c('0x12')](function(_0x3d33fe){if(_0x3d33fe){_0x23f2c0=_0x3d33fe;return _0x3d33fe[_0xb16c('0xf8')]({'raw':!![]});}})['then'](function(_0x3b176b){if(_0x23f2c0){if(_0x3b176b){_0x157c5b=_0x3b176b;}}return require('../../config/license/util')[_0xb16c('0xf9')]();})[_0xb16c('0x12')](function(_0x5b7978){if(_0x5b7978){_0x236685=_0x5b7978[_0xb16c('0xfa')];_0x387cde=_0x5b7978['custom'];}})[_0xb16c('0x12')](function(){return db['ChatInteraction']['count']({'where':{'closed':![]}});})['then'](function(_0x142800){_0x3300ed=_0x142800;if(_0x236685&&_0x142800>_0x236685){return db['License'][_0xb16c('0x57')]({'where':{'id':0x1}})[_0xb16c('0x12')](function(_0x152069){if(_0x152069){_0x152069[_0xb16c('0xfb')](_0xb16c('0xfc'));}});}})['then'](function(){if(_0x23f2c0['Interval']&&_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')]){var _0x910f4d=[];for(var _0x3ee63e=0x0;_0x3ee63e<_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')][_0xb16c('0x3a')];_0x3ee63e++){var _0x1996b0=_0x23f2c0[_0xb16c('0xf6')][_0xb16c('0xf7')][_0x3ee63e]['get']({'plain':!![]});_0x910f4d[_0xb16c('0xfd')](iftimePromise(_0x1996b0,_0x23f2c0));}return BPromise[_0xb16c('0xfe')](_0x910f4d)[_0xb16c('0x12')](function(_0x36d9f7){return _[_0xb16c('0xff')](_0x36d9f7);});}else{return!![];}})[_0xb16c('0x12')](function(_0x4fb46b){var _0x372a32=fs['readFileSync'](path[_0xb16c('0x6a')](config[_0xb16c('0x6b')],_0xb16c('0x100')),'utf8');var _0x57f9ea={'remote':_0x23f2c0['remote'],'query':querystring[_0xb16c('0x18')](_[_0xb16c('0x40')](_0x23f2c0[_0xb16c('0x27')]({'plain':!![]}),{'customerIp':_0x218b71[_0xb16c('0x7c')][_0xb16c('0x101')]||_0x218b71[_0xb16c('0x7c')][_0xb16c('0x102')]||_0x218b71[_0xb16c('0x103')][_0xb16c('0x104')]||_0x218b71['ip'],'referer':_0x218b71[_0xb16c('0x7c')][_0xb16c('0x9b')],'openedInteractions':_0x3300ed,'maxInteractions':_0x236685,'virtual':_0x387cde['virtual'],'online':_0x4fb46b,'custom':_0x387cde}))[_0xb16c('0x105')](/'/g,'\x5c\x27')};_0x1c1704['send'](ejs['render'](Mustache[_0xb16c('0x106')](_0x372a32,_0x57f9ea),{'proactiveActions':_0x157c5b,'alignment':_0x23f2c0[_0xb16c('0x107')],'verticalAlignment':_0x23f2c0['verticalAlignment'],'div_color':_0x23f2c0[_0xb16c('0xe7')],'labelText':_0x23f2c0[_0xb16c('0x108')],'text_color':_0x23f2c0[_0xb16c('0x109')],'text_button_color':_0x23f2c0[_0xb16c('0x10a')],'button_color':_0x23f2c0[_0xb16c('0x10b')],'background_color':_0x23f2c0[_0xb16c('0x10c')],'hideWhenOffline':_0x23f2c0[_0xb16c('0x10d')],'interval':_0x23f2c0[_0xb16c('0x10e')]}));})['catch'](handleError(_0x1c1704,null));};exports[_0xb16c('0x10f')]=function(_0xb5759c,_0x110798){var _0x33bbb3=_0xb5759c[_0xb16c('0x51')]['id'];var _0xd351b0=_0xb5759c[_0xb16c('0x4b')];var _0x59fbcc=0xc8;var _0x2c888e=null;return db['sequelize'][_0xb16c('0xc8')]({'isolationLevel':db[_0xb16c('0x110')]['Transaction'][_0xb16c('0x111')][_0xb16c('0x112')]},function(_0x486921){return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x33bbb3},'transaction':_0x486921})[_0xb16c('0x12')](function(_0x5bb1d9){if(_0x5bb1d9){return db['ChatApplication'][_0xb16c('0x26')]({'where':{'ChatWebsiteId':_0x33bbb3},'transaction':_0x486921})[_0xb16c('0x12')](function(){var _0x1d42ef=_[_0xb16c('0x2f')](_0xd351b0,function(_0x2f322f){_0x2f322f[_0xb16c('0x54')]=_0x33bbb3;return _0x2f322f;});return db[_0xb16c('0x8f')][_0xb16c('0x113')](_0x1d42ef,{'transaction':_0x486921});});}else{_0x59fbcc=0x194;_0x2c888e=[];}});})[_0xb16c('0x12')](function(){if(_0x59fbcc!==0x194){return db[_0xb16c('0x8f')][_0xb16c('0x114')]({'where':{'ChatWebsiteId':_0x33bbb3},'order':_0xb16c('0x93')})[_0xb16c('0x12')](function(_0x1b3d7c){_0x2c888e=_0x1b3d7c;});}})['catch'](function(_0x398d3b){_0x59fbcc=0x1f4;logger[_0xb16c('0x19')](_0x398d3b['stack']);if(_0x398d3b[_0xb16c('0x2b')]){delete _0x398d3b[_0xb16c('0x2b')];}_0x2c888e=_0x398d3b;})[_0xb16c('0x115')](function(){if(_0x2c888e===null){_0x110798['sendStatus'](_0x59fbcc);}else{if(_0x59fbcc===0x1f4){_0x110798['status'](_0x59fbcc)['send'](_0x2c888e);}else{_0x110798['status'](_0x59fbcc)[_0xb16c('0x1e')](_0x2c888e);}}});};exports[_0xb16c('0x116')]=function(_0x5589b6,_0x1e036e){var _0x38b3df={};var _0x5e5126={};var _0x57c360;var _0x591d2a;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x5589b6['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x1e036e,null))[_0xb16c('0x12')](function(_0x12cf6d){if(_0x12cf6d){_0x57c360=_0x12cf6d;_0x5e5126[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x8f')]['rawAttributes']);_0x5e5126[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x5589b6[_0xb16c('0x35')]);_0x5e5126[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x5e5126[_0xb16c('0x34')],_0x5e5126[_0xb16c('0x35')]);_0x38b3df[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x5e5126['model'],qs[_0xb16c('0x38')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x38')]));_0x38b3df[_0xb16c('0x39')]=_0x38b3df['attributes'][_0xb16c('0x3a')]?_0x38b3df['attributes']:_0x5e5126['model'];_0x38b3df[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x38b3df[_0xb16c('0x3c')]=qs['filters'](_[_0xb16c('0x3e')](_0x5589b6['query'],_0x5e5126[_0xb16c('0x3d')]));if(_0x5589b6[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x38b3df[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x38b3df[_0xb16c('0x3c')],{'$or':_[_0xb16c('0x2f')](_0x38b3df['attributes'],function(_0x14e273){var _0xb0b0d6={};_0xb0b0d6[_0x14e273]={'$like':'%'+_0x5589b6[_0xb16c('0x35')]['filter']+'%'};return _0xb0b0d6;})});}_0x38b3df=_[_0xb16c('0x40')]({},_0x38b3df,_0x5589b6[_0xb16c('0x42')]);return _0x57c360[_0xb16c('0x116')](_0x38b3df);}})[_0xb16c('0x12')](function(_0x491643){if(_0x491643){_0x591d2a=_0x491643[_0xb16c('0x3a')];if(!_0x5589b6[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x38b3df[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x21')]);_0x38b3df[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0x5589b6[_0xb16c('0x35')][_0xb16c('0x1f')]);}return _0x57c360[_0xb16c('0x116')](_0x38b3df);}})[_0xb16c('0x12')](function(_0x17dc9e){if(_0x17dc9e){return _0x17dc9e?{'count':_0x591d2a,'rows':_0x17dc9e}:null;}})[_0xb16c('0x12')](respondWithResult(_0x1e036e,null))[_0xb16c('0x45')](handleError(_0x1e036e,null));};exports[_0xb16c('0x117')]=function(_0x10e973,_0x486f5f){return db['chatProactiveAction'][_0xb16c('0x49')]({'where':{'id':_0x10e973[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x486f5f,null))[_0xb16c('0x12')](function(_0x44684c){if(_0x44684c){return _0x44684c[_0xb16c('0x117')](_0x10e973[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x10e973[_0xb16c('0x4b')],['ids','id'])||{});}})[_0xb16c('0x12')](respondWithResult(_0x486f5f,null))[_0xb16c('0x45')](handleError(_0x486f5f,null));};exports[_0xb16c('0xf8')]=function(_0x3bd713,_0x38caa2){var _0x27c575={};var _0x93ef64={};var _0x42efa3;var _0x113db5;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x3bd713[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x38caa2,null))[_0xb16c('0x12')](function(_0x2ca490){if(_0x2ca490){_0x42efa3=_0x2ca490;_0x93ef64[_0xb16c('0x34')]=_[_0xb16c('0x36')](db[_0xb16c('0x118')]['rawAttributes']);_0x93ef64[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x3bd713[_0xb16c('0x35')]);_0x93ef64[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x93ef64[_0xb16c('0x34')],_0x93ef64[_0xb16c('0x35')]);_0x27c575[_0xb16c('0x39')]=_[_0xb16c('0x37')](_0x93ef64['model'],qs[_0xb16c('0x38')](_0x3bd713[_0xb16c('0x35')]['fields']));_0x27c575[_0xb16c('0x39')]=_0x27c575['attributes']['length']?_0x27c575[_0xb16c('0x39')]:_0x93ef64[_0xb16c('0x34')];_0x27c575[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3b')]);_0x27c575['where']=qs['filters'](_[_0xb16c('0x3e')](_0x3bd713[_0xb16c('0x35')],_0x93ef64[_0xb16c('0x3d')]));if(_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x27c575[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x27c575[_0xb16c('0x3c')],{'$or':_['map'](_0x27c575[_0xb16c('0x39')],function(_0x250d18){var _0x22a712={};_0x22a712[_0x250d18]={'$like':'%'+_0x3bd713[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x22a712;})});}_0x27c575=_[_0xb16c('0x40')]({},_0x27c575,_0x3bd713[_0xb16c('0x42')]);return _0x42efa3[_0xb16c('0xf8')](_0x27c575);}})[_0xb16c('0x12')](function(_0x183581){if(_0x183581){_0x113db5=_0x183581[_0xb16c('0x3a')];if(!_0x3bd713[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x27c575[_0xb16c('0x21')]=qs['limit'](_0x3bd713['query']['limit']);_0x27c575[_0xb16c('0x1f')]=qs['offset'](_0x3bd713['query'][_0xb16c('0x1f')]);}return _0x42efa3[_0xb16c('0xf8')](_0x27c575);}})[_0xb16c('0x12')](function(_0x48d3b0){if(_0x48d3b0){return _0x48d3b0?{'count':_0x113db5,'rows':_0x48d3b0}:null;}})['then'](respondWithResult(_0x38caa2,null))[_0xb16c('0x45')](handleError(_0x38caa2,null));};exports[_0xb16c('0x119')]=function(_0x21a8a3,_0x192008){var _0x167ec9=_0x21a8a3[_0xb16c('0x35')][_0xb16c('0x11a')]===_0xb16c('0x11b')?_0xb16c('0x11c'):'onlineForm';return db['ChatWebsite'][_0xb16c('0x49')]({'attributes':['id',_0x167ec9],'where':{'id':_0x21a8a3['params']['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x192008,null))[_0xb16c('0x12')](function(_0x35b215){if(_0x35b215){var _0x55a7fc=_0x35b215[_0x167ec9];var _0x330a80=_0x55a7fc&&_0x55a7fc[_0xb16c('0x11d')]?_0x55a7fc['items']:[];_0x192008[_0xb16c('0x2c')]({'fromKey':_['isNil'](_0x55a7fc[_0xb16c('0x11e')])?undefined:_0x55a7fc['fromKey'],'count':_0x330a80[_0xb16c('0x3a')],'rows':_0x330a80});}})[_0xb16c('0x45')](handleError(_0x192008,null));};exports[_0xb16c('0x11f')]=function(_0x167b00,_0x257abb){var _0x7c8ffc={'raw':![],'where':{}};var _0x3d449d={};var _0x337192={'count':0x0,'rows':[]};return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0x167b00[_0xb16c('0x51')]['id']}})['then'](handleEntityNotFound(_0x257abb,null))[_0xb16c('0x12')](function(_0x59f5fd){if(_0x59f5fd){_0x3d449d['model']=_[_0xb16c('0x36')](db[_0xb16c('0xc1')][_0xb16c('0xe0')]);_0x3d449d[_0xb16c('0x35')]=_[_0xb16c('0x36')](_0x167b00[_0xb16c('0x35')]);_0x3d449d[_0xb16c('0x3d')]=_[_0xb16c('0x37')](_0x3d449d['model'],_0x3d449d['query']);_0x7c8ffc[_0xb16c('0x39')]=_['intersection'](_0x3d449d[_0xb16c('0x34')],qs['fields'](_0x167b00[_0xb16c('0x35')]['fields']));_0x7c8ffc[_0xb16c('0x39')]=_0x7c8ffc['attributes'][_0xb16c('0x3a')]?_0x7c8ffc[_0xb16c('0x39')]:_0x3d449d[_0xb16c('0x34')];if(!_0x167b00[_0xb16c('0x35')][_0xb16c('0x60')]('nolimit')){_0x7c8ffc[_0xb16c('0x21')]=qs['limit'](_0x167b00[_0xb16c('0x35')][_0xb16c('0x21')]);_0x7c8ffc[_0xb16c('0x1f')]=qs['offset'](_0x167b00[_0xb16c('0x35')][_0xb16c('0x1f')]);}_0x7c8ffc[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0x167b00['query'][_0xb16c('0x3b')]);_0x7c8ffc[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0x167b00[_0xb16c('0x35')],_0x3d449d[_0xb16c('0x3d')]));_0x7c8ffc[_0xb16c('0x3c')][_0xb16c('0x54')]=_0x59f5fd['id'];if(_0x167b00[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x7c8ffc[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x7c8ffc['where'],{'$or':_[_0xb16c('0x2f')](_0x7c8ffc['attributes'],function(_0x5e0110){var _0x11c382={};_0x11c382[_0x5e0110]={'$like':'%'+_0x167b00[_0xb16c('0x35')]['filter']+'%'};return _0x11c382;})});}_0x7c8ffc=_[_0xb16c('0x40')]({},_0x7c8ffc,_0x167b00[_0xb16c('0x42')]);return db[_0xb16c('0xc1')]['count']({'where':_0x7c8ffc[_0xb16c('0x3c')]})[_0xb16c('0x12')](function(_0x4eca9d){_0x337192[_0xb16c('0x22')]=_0x4eca9d;if(_0x167b00[_0xb16c('0x35')][_0xb16c('0x48')]){_0x7c8ffc[_0xb16c('0x43')]=[{'all':!![]}];}else{_0x7c8ffc['include']=[{'model':db[_0xb16c('0x7e')],'as':_0xb16c('0xe1'),'required':![]},{'model':db['Attachment'],'as':'Attachments','required':![]}];}return db[_0xb16c('0xc1')]['findAll'](_0x7c8ffc);})[_0xb16c('0x12')](function(_0x2aaa68){_0x337192[_0xb16c('0x5a')]=_0x2aaa68;return _0x337192;});}})[_0xb16c('0x12')](respondWithFilteredResult(_0x257abb,_0x7c8ffc))[_0xb16c('0x45')](handleError(_0x257abb,null));};exports[_0xb16c('0x120')]=function(_0x197f32,_0x2598b3){return db[_0xb16c('0x30')]['find']({'where':{'id':_0x197f32[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x2598b3,null))[_0xb16c('0x12')](function(_0x1d3912){if(_0x1d3912){return _0x1d3912[_0xb16c('0x120')](_0x197f32[_0xb16c('0x4b')][_0xb16c('0x5c')],_[_0xb16c('0xdf')](_0x197f32[_0xb16c('0x4b')],[_0xb16c('0x5c'),'id'])||{})[_0xb16c('0xa9')](function(_0x2df603){for(var _0x71881e=0x0;_0x71881e<_0x197f32[_0xb16c('0x4b')][_0xb16c('0x5c')][_0xb16c('0x3a')];_0x71881e+=0x1){socket['emit'](_0xb16c('0x121'),{'UserId':Number(_0x197f32['body']['ids'][_0x71881e]),'ChatWebsiteId':Number(_0x197f32[_0xb16c('0x51')]['id'])});}return _0x2df603;});}})[_0xb16c('0x12')](respondWithResult(_0x2598b3,null))[_0xb16c('0x45')](handleError(_0x2598b3,null));};exports[_0xb16c('0x122')]=function(_0x2f9345,_0x47cd2d){return db[_0xb16c('0x30')][_0xb16c('0x49')]({'where':{'id':_0x2f9345[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x47cd2d,null))[_0xb16c('0x12')](function(_0x3d80c3){if(_0x3d80c3){return _0x3d80c3[_0xb16c('0x122')](_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')])['then'](function(){if(_['isArray'](_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')])){for(var _0x28cdf0=0x0;_0x28cdf0<_0x2f9345[_0xb16c('0x35')][_0xb16c('0x5c')]['length'];_0x28cdf0+=0x1){socket['emit'](_0xb16c('0x123'),{'UserId':Number(_0x2f9345['query'][_0xb16c('0x5c')][_0x28cdf0]),'ChatWebsiteId':Number(_0x2f9345[_0xb16c('0x51')]['id'])});}}else{socket[_0xb16c('0x124')](_0xb16c('0x123'),{'UserId':Number(_0x2f9345['query'][_0xb16c('0x5c')]),'ChatWebsiteId':Number(_0x2f9345['params']['id'])});}});}})['then'](respondWithStatusCode(_0x47cd2d,null))[_0xb16c('0x45')](handleError(_0x47cd2d,null));};exports[_0xb16c('0x125')]=function(_0xd367d3,_0x49acfc){var _0x24fb62={};var _0x46a02d={};var _0x4a24d8;var _0xa97b29;return db[_0xb16c('0x30')][_0xb16c('0x57')]({'where':{'id':_0xd367d3[_0xb16c('0x51')]['id']}})[_0xb16c('0x12')](handleEntityNotFound(_0x49acfc,null))['then'](function(_0x4358ea){if(_0x4358ea){_0x4a24d8=_0x4358ea;_0x46a02d[_0xb16c('0x34')]=_[_0xb16c('0x36')](db['User'][_0xb16c('0xe0')]);_0x46a02d['query']=_[_0xb16c('0x36')](_0xd367d3[_0xb16c('0x35')]);_0x46a02d[_0xb16c('0x3d')]=_['intersection'](_0x46a02d[_0xb16c('0x34')],_0x46a02d[_0xb16c('0x35')]);_0x24fb62['attributes']=_[_0xb16c('0x37')](_0x46a02d[_0xb16c('0x34')],qs['fields'](_0xd367d3['query'][_0xb16c('0x38')]));_0x24fb62['attributes']=_0x24fb62['attributes'][_0xb16c('0x3a')]?_0x24fb62[_0xb16c('0x39')]:_0x46a02d[_0xb16c('0x34')];_0x24fb62[_0xb16c('0x59')]=qs[_0xb16c('0x3b')](_0xd367d3['query'][_0xb16c('0x3b')]);_0x24fb62[_0xb16c('0x3c')]=qs[_0xb16c('0x3d')](_[_0xb16c('0x3e')](_0xd367d3[_0xb16c('0x35')],_0x46a02d[_0xb16c('0x3d')]));if(_0xd367d3[_0xb16c('0x35')][_0xb16c('0x3f')]){_0x24fb62[_0xb16c('0x3c')]=_[_0xb16c('0x40')](_0x24fb62[_0xb16c('0x3c')],{'$or':_['map'](_0x24fb62['attributes'],function(_0xce1337){var _0x583511={};_0x583511[_0xce1337]={'$like':'%'+_0xd367d3[_0xb16c('0x35')][_0xb16c('0x3f')]+'%'};return _0x583511;})});}_0x24fb62=_['merge']({},_0x24fb62,_0xd367d3['options']);return _0x4a24d8[_0xb16c('0x125')](_0x24fb62);}})[_0xb16c('0x12')](function(_0x2b75c3){if(_0x2b75c3){_0xa97b29=_0x2b75c3[_0xb16c('0x3a')];if(!_0xd367d3[_0xb16c('0x35')][_0xb16c('0x60')](_0xb16c('0x58'))){_0x24fb62[_0xb16c('0x21')]=qs[_0xb16c('0x21')](_0xd367d3['query'][_0xb16c('0x21')]);_0x24fb62[_0xb16c('0x1f')]=qs[_0xb16c('0x1f')](_0xd367d3[_0xb16c('0x35')]['offset']);}return _0x4a24d8[_0xb16c('0x125')](_0x24fb62);}})['then'](function(_0x271a1c){if(_0x271a1c){return _0x271a1c?{'count':_0xa97b29,'rows':_0x271a1c}:null;}})[_0xb16c('0x12')](respondWithResult(_0x49acfc,null))['catch'](handleError(_0x49acfc,null));};
\ No newline at end of file
index c36c55f..4228063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7764=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','ChatWebsite','setMaxListeners','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7764,0xa4));var _0x4776=function(_0x38af48,_0x400460){_0x38af48=_0x38af48-0x0;var _0x445384=_0x7764[_0x38af48];return _0x445384;};'use strict';var EventEmitter=require(_0x4776('0x0'));var ChatWebsite=require(_0x4776('0x1'))['db'][_0x4776('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x4776('0x3')](0x0);var events={'afterCreate':_0x4776('0x4'),'afterUpdate':_0x4776('0x5'),'afterDestroy':_0x4776('0x6')};function emitEvent(_0x424a79){return function(_0x3b28ba,_0x1f5638,_0x5ab4c2){ChatWebsiteEvents['emit'](_0x424a79+':'+_0x3b28ba['id'],_0x3b28ba);ChatWebsiteEvents[_0x4776('0x7')](_0x424a79,_0x3b28ba);_0x5ab4c2(null);};}for(var e in events){if(events[_0x4776('0x8')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x4776('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xe77f=['save','remove','emit','hasOwnProperty','events','../../mysqldb','setMaxListeners'];(function(_0x2010b8,_0x4de5d1){var _0x96a8cb=function(_0x1af514){while(--_0x1af514){_0x2010b8['push'](_0x2010b8['shift']());}};_0x96a8cb(++_0x4de5d1);}(_0xe77f,0xba));var _0xfe77=function(_0x484ff3,_0x12d944){_0x484ff3=_0x484ff3-0x0;var _0x5c00c3=_0xe77f[_0x484ff3];return _0x5c00c3;};'use strict';var EventEmitter=require(_0xfe77('0x0'));var ChatWebsite=require(_0xfe77('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xfe77('0x2')](0x0);var events={'afterCreate':_0xfe77('0x3'),'afterUpdate':'update','afterDestroy':_0xfe77('0x4')};function emitEvent(_0xd99b0d){return function(_0x55a414,_0x150fc9,_0x406c8b){ChatWebsiteEvents[_0xfe77('0x5')](_0xd99b0d+':'+_0x55a414['id'],_0x55a414);ChatWebsiteEvents[_0xfe77('0x5')](_0xd99b0d,_0x55a414);_0x406c8b(null);};}for(var e in events){if(events[_0xfe77('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 8f14d67..3dd4715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951c=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','lodash'];(function(_0x8d4818,_0x441162){var _0x1eb21f=function(_0x3f8539){while(--_0x3f8539){_0x8d4818['push'](_0x8d4818['shift']());}};_0x1eb21f(++_0x441162);}(_0x951c,0x19f));var _0xc951=function(_0x80f259,_0x1cdfa6){_0x80f259=_0x80f259-0x0;var _0x320284=_0x951c[_0x80f259];return _0x320284;};'use strict';var _=require(_0xc951('0x0'));var util=require(_0xc951('0x1'));var logger=require(_0xc951('0x2'))(_0xc951('0x3'));var moment=require(_0xc951('0x4'));var BPromise=require(_0xc951('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc951('0x6'));var config=require(_0xc951('0x7'));var attributes=require(_0xc951('0x8'));module[_0xc951('0x9')]=function(_0x21c135,_0x43001b){return _0x21c135[_0xc951('0xa')](_0xc951('0xb'),attributes,{'tableName':_0xc951('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd61e=['moment','bluebird','request-promise','path','rimraf','./chatWebsite.attributes','define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xd61e,0x19c));var _0xed61=function(_0x2cfd8f,_0xaad2bd){_0x2cfd8f=_0x2cfd8f-0x0;var _0x46a0e8=_0xd61e[_0x2cfd8f];return _0x46a0e8;};'use strict';var _=require(_0xed61('0x0'));var util=require(_0xed61('0x1'));var logger=require(_0xed61('0x2'))(_0xed61('0x3'));var moment=require(_0xed61('0x4'));var BPromise=require(_0xed61('0x5'));var rp=require(_0xed61('0x6'));var fs=require('fs');var path=require(_0xed61('0x7'));var rimraf=require(_0xed61('0x8'));var config=require('../../config/environment');var attributes=require(_0xed61('0x9'));module['exports']=function(_0x31e5a6,_0x11cb69){return _0x31e5a6[_0xed61('0xa')](_0xed61('0xb'),attributes,{'tableName':_0xed61('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38e76e6..75b811e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87c6=['then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register'];(function(_0x4f1da5,_0x4ced17){var _0xe972a8=function(_0x278ba3){while(--_0x278ba3){_0x4f1da5['push'](_0x4f1da5['shift']());}};_0xe972a8(++_0x4ced17);}(_0x87c6,0xe3));var _0x687c=function(_0x13fc7d,_0x339240){_0x13fc7d=_0x13fc7d-0x0;var _0x381c24=_0x87c6[_0x13fc7d];return _0x381c24;};'use strict';var _=require(_0x687c('0x0'));var util=require('util');var moment=require(_0x687c('0x1'));var BPromise=require(_0x687c('0x2'));var rs=require(_0x687c('0x3'));var fs=require('fs');var Redis=require(_0x687c('0x4'));var db=require(_0x687c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x687c('0x6'))(_0x687c('0x7'));var config=require(_0x687c('0x8'));var jayson=require(_0x687c('0x9'));var client=jayson[_0x687c('0xa')][_0x687c('0xb')]({'port':0x232a});config[_0x687c('0xc')]=_[_0x687c('0xd')](config[_0x687c('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x687c('0xe'))(new Redis(config['redis']));require('./chatWebsite.socket')[_0x687c('0xf')](socket);function respondWithRpcPromise(_0x4cb8d3,_0x4f9447,_0x9afdfb){return new BPromise(function(_0x10df95,_0x517513){return client['request'](_0x4cb8d3,_0x9afdfb)[_0x687c('0x10')](function(_0x556005){logger[_0x687c('0x11')](_0x687c('0x12'),_0x4f9447,_0x687c('0x13'));logger['debug'](_0x687c('0x14'),_0x4f9447,_0x687c('0x13'),JSON[_0x687c('0x15')](_0x556005));if(_0x556005[_0x687c('0x16')]){if(_0x556005[_0x687c('0x16')][_0x687c('0x17')]===0x1f4){logger['error'](_0x687c('0x12'),_0x4f9447,_0x556005[_0x687c('0x16')][_0x687c('0x18')]);return _0x517513(_0x556005['error']['message']);}logger[_0x687c('0x16')](_0x687c('0x12'),_0x4f9447,_0x556005[_0x687c('0x16')][_0x687c('0x18')]);return _0x10df95(_0x556005[_0x687c('0x16')]['message']);}else{logger[_0x687c('0x11')](_0x687c('0x12'),_0x4f9447,_0x687c('0x13'));_0x10df95(_0x556005[_0x687c('0x19')][_0x687c('0x18')]);}})[_0x687c('0x1a')](function(_0x25b2c6){logger[_0x687c('0x16')](_0x687c('0x12'),_0x4f9447,_0x25b2c6);_0x517513(_0x25b2c6);});});}
\ No newline at end of file
+var _0x6fd1=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird'];(function(_0x1ad96a,_0xab1aee){var _0x11256f=function(_0x94305a){while(--_0x94305a){_0x1ad96a['push'](_0x1ad96a['shift']());}};_0x11256f(++_0xab1aee);}(_0x6fd1,0x7f));var _0x16fd=function(_0x1ae518,_0x23a449){_0x1ae518=_0x1ae518-0x0;var _0x35b832=_0x6fd1[_0x1ae518];return _0x35b832;};'use strict';var _=require(_0x16fd('0x0'));var util=require('util');var moment=require(_0x16fd('0x1'));var BPromise=require(_0x16fd('0x2'));var rs=require(_0x16fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x16fd('0x4'));var logger=require(_0x16fd('0x5'))(_0x16fd('0x6'));var config=require(_0x16fd('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x16fd('0x8')]({'port':0x232a});config[_0x16fd('0x9')]=_[_0x16fd('0xa')](config[_0x16fd('0x9')],{'host':_0x16fd('0xb'),'port':0x18eb});var socket=require(_0x16fd('0xc'))(new Redis(config[_0x16fd('0x9')]));require(_0x16fd('0xd'))[_0x16fd('0xe')](socket);function respondWithRpcPromise(_0x346805,_0x2a929d,_0x59ead2){return new BPromise(function(_0x301cad,_0x386f40){return client['request'](_0x346805,_0x59ead2)[_0x16fd('0xf')](function(_0x52a84b){logger[_0x16fd('0x10')](_0x16fd('0x11'),_0x2a929d,_0x16fd('0x12'));logger[_0x16fd('0x13')](_0x16fd('0x14'),_0x2a929d,_0x16fd('0x12'),JSON[_0x16fd('0x15')](_0x52a84b));if(_0x52a84b[_0x16fd('0x16')]){if(_0x52a84b[_0x16fd('0x16')][_0x16fd('0x17')]===0x1f4){logger[_0x16fd('0x16')](_0x16fd('0x11'),_0x2a929d,_0x52a84b[_0x16fd('0x16')][_0x16fd('0x18')]);return _0x386f40(_0x52a84b[_0x16fd('0x16')][_0x16fd('0x18')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x2a929d,_0x52a84b[_0x16fd('0x16')]['message']);return _0x301cad(_0x52a84b['error'][_0x16fd('0x18')]);}else{logger[_0x16fd('0x10')](_0x16fd('0x11'),_0x2a929d,'request\x20sent');_0x301cad(_0x52a84b[_0x16fd('0x19')]['message']);}})['catch'](function(_0x4b1799){logger[_0x16fd('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x2a929d,_0x4b1799);_0x386f40(_0x4b1799);});});}
\ No newline at end of file
index 356962e..7b84016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa6=['chatWebsite:','./chatWebsite.events','remove','emit','removeListener','length'];(function(_0x421791,_0x3625d8){var _0x495838=function(_0x5190c3){while(--_0x5190c3){_0x421791['push'](_0x421791['shift']());}};_0x495838(++_0x3625d8);}(_0x3fa6,0xd3));var _0x63fa=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x3fa6[_0x55e08b];return _0xd1a7ff;};'use strict';var ChatWebsiteEvents=require(_0x63fa('0x0'));var events=['save',_0x63fa('0x1'),'update'];function createListener(_0x10900e,_0x408c85){return function(_0x35e02c){_0x408c85[_0x63fa('0x2')](_0x10900e,_0x35e02c);};}function removeListener(_0x393b9d,_0x15bd8d){return function(){ChatWebsiteEvents[_0x63fa('0x3')](_0x393b9d,_0x15bd8d);};}exports['register']=function(_0x957c09){for(var _0x2fe9c6=0x0,_0x156d34=events[_0x63fa('0x4')];_0x2fe9c6<_0x156d34;_0x2fe9c6++){var _0x441372=events[_0x2fe9c6];var _0x43ad3f=createListener(_0x63fa('0x5')+_0x441372,_0x957c09);ChatWebsiteEvents['on'](_0x441372,_0x43ad3f);}};
\ No newline at end of file
+var _0x5327=['./chatWebsite.events','save','remove','update','emit','removeListener','register','length'];(function(_0x4fa2a8,_0x101755){var _0x57ce12=function(_0x3f4c93){while(--_0x3f4c93){_0x4fa2a8['push'](_0x4fa2a8['shift']());}};_0x57ce12(++_0x101755);}(_0x5327,0x100));var _0x7532=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5327[_0x3dd15e];return _0x231fd0;};'use strict';var ChatWebsiteEvents=require(_0x7532('0x0'));var events=[_0x7532('0x1'),_0x7532('0x2'),_0x7532('0x3')];function createListener(_0x342c83,_0x245a34){return function(_0x2e6132){_0x245a34[_0x7532('0x4')](_0x342c83,_0x2e6132);};}function removeListener(_0xd65e48,_0x37c7a9){return function(){ChatWebsiteEvents[_0x7532('0x5')](_0xd65e48,_0x37c7a9);};}exports[_0x7532('0x6')]=function(_0x480e36){for(var _0x2ddc08=0x0,_0x42de0d=events[_0x7532('0x7')];_0x2ddc08<_0x42de0d;_0x2ddc08++){var _0x516626=events[_0x2ddc08];var _0x398173=createListener('chatWebsite:'+_0x516626,_0x480e36);ChatWebsiteEvents['on'](_0x516626,_0x398173);}};
\ No newline at end of file
index 6b4a0a6..bce3117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8698=['/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','addLogo','server/files/images/avatars/','file','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','replace','extname','/:id/offline','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','update','destroy','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','/:id/canned_answers','/:id/logo','getLogo'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x8698,0x1d8));var _0x8869=function(_0x23c51b,_0x218044){_0x23c51b=_0x23c51b-0x0;var _0x3cb065=_0x8698[_0x23c51b];return _0x3cb065;};'use strict';var multer=require(_0x8869('0x0'));var util=require(_0x8869('0x1'));var path=require(_0x8869('0x2'));var timeout=require(_0x8869('0x3'));var express=require('express');var router=express[_0x8869('0x4')]();var fs_extra=require(_0x8869('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8869('0x6'));var controller=require(_0x8869('0x7'));router[_0x8869('0x8')]('/',auth[_0x8869('0x9')](),controller[_0x8869('0xa')]);router[_0x8869('0x8')](_0x8869('0xb'),auth[_0x8869('0x9')](),controller[_0x8869('0xc')]);router[_0x8869('0x8')](_0x8869('0xd'),auth[_0x8869('0x9')](),controller['show']);router[_0x8869('0x8')](_0x8869('0xe'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x8869('0x8')](_0x8869('0xf'),auth[_0x8869('0x9')](),controller['getAnswers']);router[_0x8869('0x8')](_0x8869('0x10'),controller[_0x8869('0x11')]);router[_0x8869('0x8')](_0x8869('0x12'),controller[_0x8869('0x13')]);router['get'](_0x8869('0x14'),controller[_0x8869('0x15')]);router[_0x8869('0x8')](_0x8869('0x16'),controller[_0x8869('0x17')]);router[_0x8869('0x8')](_0x8869('0x18'),auth[_0x8869('0x9')](),controller[_0x8869('0x19')]);router[_0x8869('0x8')]('/:id/snippet',controller[_0x8869('0x1a')]);router[_0x8869('0x8')]('/:id/applications',auth[_0x8869('0x9')](),controller['getApplications']);router[_0x8869('0x8')](_0x8869('0x1b'),auth['isAuthenticated'](),controller[_0x8869('0x1c')]);router[_0x8869('0x8')](_0x8869('0x1d'),controller[_0x8869('0x1e')]);router[_0x8869('0x8')](_0x8869('0x1f'),auth[_0x8869('0x9')](),controller[_0x8869('0x20')]);router[_0x8869('0x8')](_0x8869('0x21'),auth['isAuthenticated'](),controller[_0x8869('0x22')]);router[_0x8869('0x23')]('/',auth[_0x8869('0x9')](),controller['create']);router[_0x8869('0x23')]('/:id/dispositions',auth[_0x8869('0x9')](),controller[_0x8869('0x24')]);router['post'](_0x8869('0xf'),auth[_0x8869('0x9')](),controller[_0x8869('0x25')]);var upload=multer({'storage':multer[_0x8869('0x26')]({'destination':function(_0x24bd7d,_0x6687b2,_0x47eb55){_0x47eb55(null,path[_0x8869('0x27')](config[_0x8869('0x28')],'server/files/images/logos/'));},'filename':function(_0x536c6f,_0x4364db,_0x5d5d89){_0x5d5d89(null,util[_0x8869('0x29')](_0x8869('0x2a'),Date[_0x8869('0x2b')](),_0x4364db[_0x8869('0x2c')]));}})});router[_0x8869('0x23')]('/:id/logo',upload['single']('file'),controller[_0x8869('0x2d')]);var upload=multer({'storage':multer[_0x8869('0x26')]({'destination':function(_0x4bd4fc,_0x3b4b0d,_0x44fe60){_0x44fe60(null,path[_0x8869('0x27')](config[_0x8869('0x28')],_0x8869('0x2e')));},'filename':function(_0x27e258,_0x4f9938,_0x49853a){_0x49853a(null,util['format']('%s-%s',Date['now'](),_0x4f9938[_0x8869('0x2c')]));}})});router[_0x8869('0x23')](_0x8869('0x12'),upload['single'](_0x8869('0x2f')),controller[_0x8869('0x30')]);var upload=multer({'storage':multer[_0x8869('0x26')]({'destination':function(_0x4efcaf,_0xad213f,_0x4e8aea){_0x4e8aea(null,path[_0x8869('0x27')](config[_0x8869('0x28')],_0x8869('0x2e')));},'filename':function(_0x332c07,_0x541968,_0x5b6b7a){_0x5b6b7a(null,util[_0x8869('0x29')](_0x8869('0x2a'),Date[_0x8869('0x2b')](),_0x541968['originalname']));}})});router['post']('/:id/customer_avatar',upload['single'](_0x8869('0x2f')),controller[_0x8869('0x31')]);var upload=multer({'storage':multer[_0x8869('0x26')]({'destination':function(_0x52dcf4,_0x21e1ce,_0x2a3f64){_0x2a3f64(null,path[_0x8869('0x27')](config[_0x8869('0x28')],'server/files/images/avatars/'));},'filename':function(_0x58aec4,_0x4aee5b,_0x44ea89){_0x44ea89(null,util['format']('%s-%s',Date[_0x8869('0x2b')](),_0x4aee5b[_0x8869('0x2c')]));}})});router['post']('/:id/system_avatar',upload['single']('file'),controller[_0x8869('0x32')]);router['post'](_0x8869('0x33'),controller[_0x8869('0x34')]);const offlineUploadMulter=multer({'storage':multer[_0x8869('0x26')]({'destination':function(_0x24518f,_0x2b88a5,_0xa7e209){const _0x5ce52c=path[_0x8869('0x27')](config['root'],_0x8869('0x35'),'attachments',_0x8869('0x36'));fs_extra['ensureDir'](_0x5ce52c,function(){_0xa7e209(null,_0x5ce52c);});},'filename':function(_0x406473,_0x41e401,_0x3b9d48){const _0x13c3de=_0x41e401[_0x8869('0x2c')][_0x8869('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x24c260=path[_0x8869('0x38')](_0x13c3de);const _0x1d67b0=Date[_0x8869('0x2b')]()+'-'+_0x13c3de[_0x8869('0x37')](_0x24c260,'')+_0x24c260;_0x3b9d48(null,_0x1d67b0);}})});router[_0x8869('0x23')](_0x8869('0x39'),offlineUploadMulter['any'](),controller[_0x8869('0x3a')]);router[_0x8869('0x23')](_0x8869('0x18'),auth[_0x8869('0x9')](),controller[_0x8869('0x3b')]);router[_0x8869('0x23')]('/:id/applications',auth[_0x8869('0x9')](),controller[_0x8869('0x3c')]);router['post'](_0x8869('0x1b'),auth[_0x8869('0x9')](),controller[_0x8869('0x3d')]);router[_0x8869('0x23')](_0x8869('0x21'),auth[_0x8869('0x9')](),controller[_0x8869('0x3e')]);router[_0x8869('0x3f')](_0x8869('0xd'),auth[_0x8869('0x9')](),controller[_0x8869('0x40')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x8869('0x41')]);router[_0x8869('0x42')](_0x8869('0xe'),auth[_0x8869('0x9')](),controller[_0x8869('0x43')]);router[_0x8869('0x42')](_0x8869('0xf'),auth[_0x8869('0x9')](),controller['removeAnswers']);router['delete'](_0x8869('0x21'),auth[_0x8869('0x9')](),controller[_0x8869('0x44')]);module[_0x8869('0x45')]=router;
\ No newline at end of file
+var _0x1e9a=['/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','/:id/interactions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','diskStorage','join','root','server/files/images/logos/','%s-%s','originalname','single','file','addLogo','server/files/images/avatars/','now','addAvatar','format','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','/:id/offline','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','index','get','/describe','isAuthenticated','describe','show','/:id/canned_answers','getAnswers','/:id/logo','getLogo'];(function(_0x481d19,_0x33e608){var _0x35dfcf=function(_0x3d9b3c){while(--_0x3d9b3c){_0x481d19['push'](_0x481d19['shift']());}};_0x35dfcf(++_0x33e608);}(_0x1e9a,0x1e5));var _0xa1e9=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1e9a[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xa1e9('0x0'));var util=require(_0xa1e9('0x1'));var path=require(_0xa1e9('0x2'));var timeout=require('connect-timeout');var express=require(_0xa1e9('0x3'));var router=express[_0xa1e9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa1e9('0x5'));var interaction=require(_0xa1e9('0x6'));var config=require(_0xa1e9('0x7'));var controller=require(_0xa1e9('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xa1e9('0x9')]);router[_0xa1e9('0xa')](_0xa1e9('0xb'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0xd')]);router[_0xa1e9('0xa')]('/:id',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0xe')]);router['get']('/:id/dispositions',auth[_0xa1e9('0xc')](),controller['getDispositions']);router[_0xa1e9('0xa')](_0xa1e9('0xf'),auth['isAuthenticated'](),controller[_0xa1e9('0x10')]);router[_0xa1e9('0xa')](_0xa1e9('0x11'),controller[_0xa1e9('0x12')]);router[_0xa1e9('0xa')](_0xa1e9('0x13'),controller[_0xa1e9('0x14')]);router['get'](_0xa1e9('0x15'),controller['getCustomerAvatar']);router[_0xa1e9('0xa')](_0xa1e9('0x16'),controller['getSystemAvatar']);router[_0xa1e9('0xa')](_0xa1e9('0x17'),auth[_0xa1e9('0xc')](),controller['getInteractions']);router['get'](_0xa1e9('0x18'),controller[_0xa1e9('0x19')]);router[_0xa1e9('0xa')](_0xa1e9('0x1a'),auth[_0xa1e9('0xc')](),controller['getApplications']);router[_0xa1e9('0xa')](_0xa1e9('0x1b'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x1c')]);router[_0xa1e9('0xa')](_0xa1e9('0x1d'),controller[_0xa1e9('0x1e')]);router[_0xa1e9('0xa')](_0xa1e9('0x1f'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x20')]);router['get'](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x22')]);router[_0xa1e9('0x23')]('/',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x24')]);router['post'](_0xa1e9('0x25'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x26')]);router['post'](_0xa1e9('0xf'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x2a18d5,_0x26c014,_0x1adacc){_0x1adacc(null,path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x2a')));},'filename':function(_0x4a0f6d,_0x4c8f79,_0x3e279a){_0x3e279a(null,util['format'](_0xa1e9('0x2b'),Date['now'](),_0x4c8f79[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x11'),upload[_0xa1e9('0x2d')](_0xa1e9('0x2e')),controller[_0xa1e9('0x2f')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x1b5f99,_0x116003,_0x294e5e){_0x294e5e(null,path['join'](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x320b19,_0x19a341,_0x11bd1d){_0x11bd1d(null,util['format'](_0xa1e9('0x2b'),Date[_0xa1e9('0x31')](),_0x19a341['originalname']));}})});router[_0xa1e9('0x23')](_0xa1e9('0x13'),upload[_0xa1e9('0x2d')](_0xa1e9('0x2e')),controller[_0xa1e9('0x32')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x5cb194,_0x12467b,_0x2f0ded){_0x2f0ded(null,path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x1810b5,_0x2fd516,_0x52a91f){_0x52a91f(null,util[_0xa1e9('0x33')](_0xa1e9('0x2b'),Date[_0xa1e9('0x31')](),_0x2fd516[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x15'),upload[_0xa1e9('0x2d')]('file'),controller[_0xa1e9('0x34')]);var upload=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x21249c,_0x7f42ee,_0x17642a){_0x17642a(null,path['join'](config[_0xa1e9('0x29')],_0xa1e9('0x30')));},'filename':function(_0x814042,_0x490465,_0x2061e9){_0x2061e9(null,util[_0xa1e9('0x33')]('%s-%s',Date[_0xa1e9('0x31')](),_0x490465[_0xa1e9('0x2c')]));}})});router[_0xa1e9('0x23')](_0xa1e9('0x16'),upload['single']('file'),controller[_0xa1e9('0x35')]);router[_0xa1e9('0x23')](_0xa1e9('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xa1e9('0x27')]({'destination':function(_0x292d34,_0x5c8fce,_0x57aa0d){const _0x1eadd9=path[_0xa1e9('0x28')](config[_0xa1e9('0x29')],_0xa1e9('0x37'),_0xa1e9('0x38'),_0xa1e9('0x39'));fs_extra[_0xa1e9('0x3a')](_0x1eadd9,function(){_0x57aa0d(null,_0x1eadd9);});},'filename':function(_0x2ffeaa,_0x1305b2,_0x50713e){const _0x43657d=_0x1305b2['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x285487=path['extname'](_0x43657d);const _0x5bc187=Date[_0xa1e9('0x31')]()+'-'+_0x43657d['replace'](_0x285487,'')+_0x285487;_0x50713e(null,_0x5bc187);}})});router[_0xa1e9('0x23')](_0xa1e9('0x3b'),offlineUploadMulter[_0xa1e9('0x3c')](),controller[_0xa1e9('0x3d')]);router['post'](_0xa1e9('0x17'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x3e')]);router[_0xa1e9('0x23')]('/:id/applications',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x3f')]);router['post'](_0xa1e9('0x1b'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x40')]);router['post'](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x41')]);router[_0xa1e9('0x42')](_0xa1e9('0x43'),auth['isAuthenticated'](),controller[_0xa1e9('0x44')]);router[_0xa1e9('0x45')]('/:id',auth[_0xa1e9('0xc')](),controller[_0xa1e9('0x46')]);router['delete']('/:id/dispositions',auth[_0xa1e9('0xc')](),controller['removeDispositions']);router[_0xa1e9('0x45')](_0xa1e9('0xf'),auth[_0xa1e9('0xc')](),controller['removeAnswers']);router[_0xa1e9('0x45')](_0xa1e9('0x21'),auth[_0xa1e9('0xc')](),controller['removeAgents']);module[_0xa1e9('0x47')]=router;
\ No newline at end of file
index 5f468a5..1189242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fe8=['app','client-side-logger','Client-Side\x20logger\x20not\x20found!','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service','../config/environment','env','production'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x0fe8,0x1e8));var _0x80fe=function(_0x3cff9b,_0x4ec225){_0x3cff9b=_0x3cff9b-0x0;var _0x4b7ebe=_0x0fe8[_0x3cff9b];return _0x4b7ebe;};var beaverLogger=require(_0x80fe('0x0'));var express=require(_0x80fe('0x1'));var auth=require(_0x80fe('0x2'));var config=require(_0x80fe('0x3'));var router=express['Router']();var isProduction=config[_0x80fe('0x4')]===_0x80fe('0x5')||![];function clientSideLogs(_0x1120bf,_0x5b6137,_0x53d679){var _0x4b1485=_0x1120bf[_0x80fe('0x6')]['get'](_0x80fe('0x7'));if(!_0x4b1485){throw new Error(_0x80fe('0x8'));}return beaverLogger['expressEndpoint']({'uri':_0x80fe('0x9'),'logger':_0x4b1485,'enableCors':!isProduction})(_0x1120bf,_0x5b6137,_0x53d679);}router[_0x80fe('0xa')](auth[_0x80fe('0xb')](),clientSideLogs);module[_0x80fe('0xc')]=router;
\ No newline at end of file
+var _0x0928=['express','../components/auth/service','../config/environment','Router','env','production','client-side-logger','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server'];(function(_0x56daff,_0xadca9a){var _0x132c82=function(_0x19e0d7){while(--_0x19e0d7){_0x56daff['push'](_0x56daff['shift']());}};_0x132c82(++_0xadca9a);}(_0x0928,0x1b9));var _0x8092=function(_0x3e8836,_0x250351){_0x3e8836=_0x3e8836-0x0;var _0x2891d0=_0x0928[_0x3e8836];return _0x2891d0;};var beaverLogger=require(_0x8092('0x0'));var express=require(_0x8092('0x1'));var auth=require(_0x8092('0x2'));var config=require(_0x8092('0x3'));var router=express[_0x8092('0x4')]();var isProduction=config[_0x8092('0x5')]===_0x8092('0x6')||![];function clientSideLogs(_0x4c9c83,_0x38e474,_0x39e81f){var _0x245466=_0x4c9c83['app']['get'](_0x8092('0x7'));if(!_0x245466){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x8092('0x8')]({'uri':_0x8092('0x9'),'logger':_0x245466,'enableCors':!isProduction})(_0x4c9c83,_0x38e474,_0x39e81f);}router[_0x8092('0xa')](auth[_0x8092('0xb')](),clientSideLogs);module[_0x8092('0xc')]=router;
\ No newline at end of file
index eae4acc..384f599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b7b=['Google','MicrosoftAzure','STRING','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','ENUM','AmazonAWS'];(function(_0xf19a59,_0x56ada6){var _0x565d7b=function(_0x4059be){while(--_0x4059be){_0xf19a59['push'](_0xf19a59['shift']());}};_0x565d7b(++_0x56ada6);}(_0x6b7b,0x1a9));var _0xb6b7=function(_0x4e2de2,_0x409cbd){_0x4e2de2=_0x4e2de2-0x0;var _0x12e033=_0x6b7b[_0x4e2de2];return _0x12e033;};'use strict';var Sequelize=require(_0xb6b7('0x0'));module[_0xb6b7('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xb6b7('0x2')](_0xb6b7('0x3'),_0xb6b7('0x4'),_0xb6b7('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xb6b7('0x2')]('Outlook365','Dynamics365')},'data1':{'type':Sequelize[_0xb6b7('0x6')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xb6b7('0x6')],'comment':_0xb6b7('0x7')},'data3':{'type':Sequelize[_0xb6b7('0x6')],'comment':_0xb6b7('0x8')},'data4':{'type':Sequelize[_0xb6b7('0x6')],'comment':_0xb6b7('0x9')},'data5':{'type':Sequelize['TEXT'],'comment':_0xb6b7('0xa')},'data6':{'type':Sequelize['TEXT'],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0xb6b7('0xb')],'comment':_0xb6b7('0xc')}};
\ No newline at end of file
+var _0x4dca=['MicrosoftAzure','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','ENUM','AmazonAWS','Google'];(function(_0x391933,_0x2f26f5){var _0x357443=function(_0x286569){while(--_0x286569){_0x391933['push'](_0x391933['shift']());}};_0x357443(++_0x2f26f5);}(_0x4dca,0x183));var _0xa4dc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4dca[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xa4dc('0x0'));module['exports']={'name':{'type':Sequelize[_0xa4dc('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xa4dc('0x2')](_0xa4dc('0x3'),_0xa4dc('0x4'),_0xa4dc('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0xa4dc('0x6'),_0xa4dc('0x7'))},'data1':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xa4dc('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xa4dc('0x1')],'comment':_0xa4dc('0x8')},'data4':{'type':Sequelize['STRING'],'comment':_0xa4dc('0x9')},'data5':{'type':Sequelize['TEXT'],'comment':_0xa4dc('0xa')},'data6':{'type':Sequelize[_0xa4dc('0xb')],'comment':_0xa4dc('0xc')},'data7':{'type':Sequelize[_0xa4dc('0xb')],'comment':_0xa4dc('0xd')}};
\ No newline at end of file
index 1c9d087..49d28d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab67=['slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','filter','merge','options','include','findAll','rows','service','decryptString','data3','show','params','includeAll','MicrosoftAzure','catch','create','body','Name\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','find','destroy','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','id_token','oauth2Claims','getOauth2MicrosoftAccessToken','data5','access_token','data6','emit','microsoftAuthorization:success','send','stringify','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','api','defaults','localhost','sendStatus','end','status','offset','limit','undefined','count','set','update','then','error','stack','name','padEnd'];(function(_0x4af954,_0x47333e){var _0x173cfd=function(_0x538a1e){while(--_0x538a1e){_0x4af954['push'](_0x4af954['shift']());}};_0x173cfd(++_0x47333e);}(_0xab67,0x13f));var _0x7ab6=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0xab67[_0x39fd11];return _0x302799;};'use strict';var _=require('lodash');var Redis=require(_0x7ab6('0x0'));var qs=require(_0x7ab6('0x1'));var encryptor=require('../../components/encryptor');var config=require(_0x7ab6('0x2'));var logger=require(_0x7ab6('0x3'))(_0x7ab6('0x4'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_[_0x7ab6('0x5')](config['redis'],{'host':_0x7ab6('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x5a3652,_0x1f00e8){_0x1f00e8=_0x1f00e8||0xcc;return function(_0x31474f){if(_0x31474f){return _0x5a3652[_0x7ab6('0x7')](_0x1f00e8);}return _0x5a3652['status'](_0x1f00e8)[_0x7ab6('0x8')]();};}function respondWithResult(_0x4229f1,_0x1bdec2){_0x1bdec2=_0x1bdec2||0xc8;return function(_0x256cda){if(_0x256cda){return _0x4229f1[_0x7ab6('0x9')](_0x1bdec2)['json'](_0x256cda);}};}function respondWithFilteredResult(_0x461644,_0xe79587){return function(_0x3e16a2){if(_0x3e16a2){var _0x3158b7=typeof _0xe79587[_0x7ab6('0xa')]==='undefined'&&typeof _0xe79587[_0x7ab6('0xb')]===_0x7ab6('0xc');var _0x58ab56=_0x3e16a2[_0x7ab6('0xd')];var _0x2122cb=_0x3158b7?0x0:_0xe79587[_0x7ab6('0xa')];var _0x484ef5=_0x3158b7?_0x3e16a2[_0x7ab6('0xd')]:_0xe79587[_0x7ab6('0xa')]+_0xe79587[_0x7ab6('0xb')];var _0x2324e7;if(_0x484ef5>=_0x58ab56){_0x484ef5=_0x58ab56;_0x2324e7=0xc8;}else{_0x2324e7=0xce;}_0x461644[_0x7ab6('0x9')](_0x2324e7);return _0x461644[_0x7ab6('0xe')]('Content-Range',_0x2122cb+'-'+_0x484ef5+'/'+_0x58ab56)['json'](_0x3e16a2);}return null;};}function saveUpdates(_0x41c617){return function(_0x3f6024){if(_0x3f6024){return _0x3f6024[_0x7ab6('0xf')](_0x41c617)[_0x7ab6('0x10')](function(_0x35d427){return _0x35d427;});}return null;};}function removeEntity(_0x2f55d5){return function(_0x2aa57f){if(_0x2aa57f){return _0x2aa57f['destroy']()[_0x7ab6('0x10')](function(){_0x2f55d5[_0x7ab6('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x396273){return function(_0x658b80){if(!_0x658b80){_0x396273[_0x7ab6('0x7')](0x194);}return _0x658b80;};}function handleError(_0x28749b,_0x3924ac){_0x3924ac=_0x3924ac||0x1f4;return function(_0x28540a){logger[_0x7ab6('0x11')](_0x28540a[_0x7ab6('0x12')]);if(_0x28540a[_0x7ab6('0x13')]){delete _0x28540a[_0x7ab6('0x13')];}_0x28749b[_0x7ab6('0x9')](_0x3924ac)['send'](_0x28540a);};}function maskClientSecret(_0x528061){return _[_0x7ab6('0x14')](_0x528061[_0x7ab6('0x15')](0x0,0x3),0x14,'*');}exports[_0x7ab6('0x16')]=function(_0xa5dc6c,_0xbd834e){var _0x17a96f={},_0x368f70={},_0x550cfa={'count':0x0,'rows':[]};var _0x39fee6=_[_0x7ab6('0x17')](db[_0x7ab6('0x18')][_0x7ab6('0x19')],function(_0x4e0672){return{'name':_0x4e0672[_0x7ab6('0x1a')],'type':_0x4e0672[_0x7ab6('0x1b')][_0x7ab6('0x1c')]};});_0x368f70['model']=_[_0x7ab6('0x17')](_0x39fee6,'name');_0x368f70[_0x7ab6('0x1d')]=_[_0x7ab6('0x1e')](_0xa5dc6c[_0x7ab6('0x1d')]);_0x368f70[_0x7ab6('0x1f')]=_[_0x7ab6('0x20')](_0x368f70['model'],_0x368f70[_0x7ab6('0x1d')]);_0x17a96f['attributes']=_[_0x7ab6('0x20')](_0x368f70[_0x7ab6('0x21')],qs[_0x7ab6('0x22')](_0xa5dc6c[_0x7ab6('0x1d')]['fields']));_0x17a96f[_0x7ab6('0x23')]=_0x17a96f[_0x7ab6('0x23')][_0x7ab6('0x24')]?_0x17a96f[_0x7ab6('0x23')]:_0x368f70['model'];if(!_0xa5dc6c['query'][_0x7ab6('0x25')]('nolimit')){_0x17a96f[_0x7ab6('0xb')]=qs[_0x7ab6('0xb')](_0xa5dc6c['query'][_0x7ab6('0xb')]);_0x17a96f[_0x7ab6('0xa')]=qs[_0x7ab6('0xa')](_0xa5dc6c[_0x7ab6('0x1d')][_0x7ab6('0xa')]);}_0x17a96f['order']=qs[_0x7ab6('0x26')](_0xa5dc6c[_0x7ab6('0x1d')]['sort']);_0x17a96f[_0x7ab6('0x27')]=qs['filters'](_['pick'](_0xa5dc6c[_0x7ab6('0x1d')],_0x368f70[_0x7ab6('0x1f')]),_0x39fee6);if(_0xa5dc6c['query'][_0x7ab6('0x28')]){_0x17a96f[_0x7ab6('0x27')]=_[_0x7ab6('0x29')](_0x17a96f['where'],{'$or':_[_0x7ab6('0x17')](_0x39fee6,function(_0x28ed12){if(_0x28ed12[_0x7ab6('0x1b')]!=='VIRTUAL'){var _0x19fc5e={};_0x19fc5e[_0x28ed12[_0x7ab6('0x13')]]={'$like':'%'+_0xa5dc6c[_0x7ab6('0x1d')][_0x7ab6('0x28')]+'%'};return _0x19fc5e;}})});}_0x17a96f=_[_0x7ab6('0x29')]({},_0x17a96f,_0xa5dc6c[_0x7ab6('0x2a')]);var _0x2cc742={'where':_0x17a96f['where']};return db[_0x7ab6('0x18')]['count'](_0x2cc742)[_0x7ab6('0x10')](function(_0x4230a5){_0x550cfa[_0x7ab6('0xd')]=_0x4230a5;if(_0xa5dc6c['query']['includeAll']){_0x17a96f[_0x7ab6('0x2b')]=[{'all':!![]}];}return db[_0x7ab6('0x18')][_0x7ab6('0x2c')](_0x17a96f);})[_0x7ab6('0x10')](function(_0x4981ef){_0x550cfa[_0x7ab6('0x2d')]=_[_0x7ab6('0x17')](_0x4981ef,function(_0x1f04d0){if(_0x1f04d0[_0x7ab6('0x2e')]==='MicrosoftAzure'){var _0xb8ea7=encryptor[_0x7ab6('0x2f')](_0x1f04d0[_0x7ab6('0x30')]);_0x1f04d0[_0x7ab6('0x30')]=maskClientSecret(_0xb8ea7);}return _0x1f04d0;});return _0x550cfa;})[_0x7ab6('0x10')](respondWithFilteredResult(_0xbd834e,_0x17a96f))['catch'](handleError(_0xbd834e,null));};exports[_0x7ab6('0x31')]=function(_0x4aeb75,_0x2b6800){var _0x2fb5fb={'raw':!![],'where':{'id':_0x4aeb75[_0x7ab6('0x32')]['id']}},_0x5775ef={};_0x5775ef[_0x7ab6('0x21')]=_[_0x7ab6('0x1e')](db[_0x7ab6('0x18')][_0x7ab6('0x19')]);_0x5775ef['query']=_['keys'](_0x4aeb75[_0x7ab6('0x1d')]);_0x5775ef[_0x7ab6('0x1f')]=_['intersection'](_0x5775ef['model'],_0x5775ef[_0x7ab6('0x1d')]);_0x2fb5fb['attributes']=_['intersection'](_0x5775ef[_0x7ab6('0x21')],qs[_0x7ab6('0x22')](_0x4aeb75[_0x7ab6('0x1d')][_0x7ab6('0x22')]));_0x2fb5fb[_0x7ab6('0x23')]=_0x2fb5fb[_0x7ab6('0x23')][_0x7ab6('0x24')]?_0x2fb5fb[_0x7ab6('0x23')]:_0x5775ef[_0x7ab6('0x21')];if(_0x4aeb75[_0x7ab6('0x1d')][_0x7ab6('0x33')]){_0x2fb5fb[_0x7ab6('0x2b')]=[{'all':!![]}];}_0x2fb5fb=_[_0x7ab6('0x29')]({},_0x2fb5fb,_0x4aeb75[_0x7ab6('0x2a')]);return db['CloudProvider']['find'](_0x2fb5fb)[_0x7ab6('0x10')](handleEntityNotFound(_0x2b6800,null))[_0x7ab6('0x10')](function(_0x49f60b){if(_0x49f60b[_0x7ab6('0x2e')]===_0x7ab6('0x34')){var _0x3da2af=encryptor[_0x7ab6('0x2f')](_0x49f60b[_0x7ab6('0x30')]);_0x49f60b[_0x7ab6('0x30')]=maskClientSecret(_0x3da2af);}return _0x49f60b;})[_0x7ab6('0x10')](respondWithResult(_0x2b6800,null))[_0x7ab6('0x35')](handleError(_0x2b6800,null));};exports[_0x7ab6('0x36')]=function(_0x2710b5,_0x523f51){if(!_0x2710b5[_0x7ab6('0x37')][_0x7ab6('0x13')])throw new Error(_0x7ab6('0x38'));if(!_0x2710b5[_0x7ab6('0x37')][_0x7ab6('0x2e')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x45df35=db[_0x7ab6('0x18')][_0x7ab6('0x19')][_0x7ab6('0x2e')][_0x7ab6('0x39')];if(!_0x45df35[_0x7ab6('0x3a')](_0x2710b5[_0x7ab6('0x37')]['service']))throw new Error(_0x7ab6('0x3b')+_0x45df35[_0x7ab6('0x3c')](',\x20'));if(_0x2710b5[_0x7ab6('0x37')][_0x7ab6('0x2e')]==='MicrosoftAzure'&&_0x2710b5['body'][_0x7ab6('0x30')]){_0x2710b5[_0x7ab6('0x37')][_0x7ab6('0x30')]=encryptor[_0x7ab6('0x3d')](_0x2710b5[_0x7ab6('0x37')][_0x7ab6('0x30')]);}return db[_0x7ab6('0x18')]['create'](_0x2710b5['body'],{})[_0x7ab6('0x10')](respondWithResult(_0x523f51,0xc9))[_0x7ab6('0x35')](handleError(_0x523f51,null));};exports[_0x7ab6('0xf')]=function(_0x21a964,_0x3c5eab){if(_0x21a964[_0x7ab6('0x37')]['id']){delete _0x21a964['body']['id'];}return db[_0x7ab6('0x18')][_0x7ab6('0x3e')]({'where':{'id':_0x21a964[_0x7ab6('0x32')]['id']}})[_0x7ab6('0x10')](handleEntityNotFound(_0x3c5eab,null))[_0x7ab6('0x10')](function(_0x224d31){if(_0x224d31['service']===_0x7ab6('0x34')&&_0x21a964[_0x7ab6('0x37')]['data3']){_0x21a964[_0x7ab6('0x37')][_0x7ab6('0x30')]=encryptor['encryptString'](_0x21a964[_0x7ab6('0x37')][_0x7ab6('0x30')]);}return _0x224d31;})[_0x7ab6('0x10')](saveUpdates(_0x21a964[_0x7ab6('0x37')],null))[_0x7ab6('0x10')](respondWithResult(_0x3c5eab,null))['catch'](handleError(_0x3c5eab,null));};exports[_0x7ab6('0x3f')]=function(_0x58a4b3,_0x32133c){return db[_0x7ab6('0x18')][_0x7ab6('0x3e')]({'where':{'id':_0x58a4b3[_0x7ab6('0x32')]['id']}})['then'](handleEntityNotFound(_0x32133c,null))[_0x7ab6('0x10')](removeEntity(_0x32133c,null))[_0x7ab6('0x35')](handleError(_0x32133c,null));};exports[_0x7ab6('0x40')]=function(_0x32ad7a,_0x1fbafd){return db['CloudProvider']['findOne']({'where':{'id':_0x32ad7a['params']['id']},'raw':!![]})[_0x7ab6('0x10')](function(_0x9c5158){if(!_0x9c5158)return _0x1fbafd[_0x7ab6('0x7')](0x194);return{'url':oauth[_0x7ab6('0x41')](_0x9c5158,_0x32ad7a['user']['id'])};})[_0x7ab6('0x10')](respondWithResult(_0x1fbafd,null))[_0x7ab6('0x35')](handleError(_0x1fbafd,null));};exports[_0x7ab6('0x42')]=function(_0x493f2e,_0x1e4972){var _0x737465=_0x493f2e['body'];var _0x17bbc3;var _0xfbcaea;if(_0x737465['error'])throw _0x737465;redis[_0x7ab6('0x43')](_0x737465[_0x7ab6('0x44')])[_0x7ab6('0x10')](function(_0x28c2de){if(!_0x28c2de)throw new Error(_0x7ab6('0x45'));_0x17bbc3=JSON[_0x7ab6('0x46')](_0x28c2de);var _0x3bbd7a=Buffer[_0x7ab6('0x47')](_0x737465[_0x7ab6('0x44')],_0x7ab6('0x48'))[_0x7ab6('0x49')](_0x7ab6('0x4a'));_0xfbcaea=JSON[_0x7ab6('0x46')](_0x3bbd7a);if(!oauth['isValidIdToken'](_0x737465[_0x7ab6('0x4b')],_0x17bbc3[_0x7ab6('0x4c')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis['del'](_0x737465[_0x7ab6('0x44')]);return oauth[_0x7ab6('0x4d')](_0x737465['code'],_0x17bbc3);})[_0x7ab6('0x10')](function(_0x4c8210){_0x17bbc3[_0x7ab6('0x4e')]=_0x4c8210[_0x7ab6('0x4f')];_0x17bbc3[_0x7ab6('0x50')]=_0x4c8210['refresh_token'];return db['CloudProvider'][_0x7ab6('0xf')]({'data5':_0x17bbc3[_0x7ab6('0x4e')],'data6':_0x17bbc3[_0x7ab6('0x50')]},{'where':{'id':_0x17bbc3['id']}});})[_0x7ab6('0x10')](function(){oauth['startRefreshInterval'](_0x17bbc3);socket[_0x7ab6('0x51')](_0x7ab6('0x52'),{'id':_0xfbcaea['id']});return;})[_0x7ab6('0x10')](respondWithStatusCode(_0x1e4972,null))['catch'](function(_0x1fc79f){if(_0xfbcaea){socket['emit']('microsoftAuthorization:error',{'id':_0xfbcaea['id']});}if(!_0x17bbc3){logger['error']('Invalid\x20authentication\x20state\x20parameter',_0x1fc79f);return _0x1e4972[_0x7ab6('0x9')](0x1f4)[_0x7ab6('0x53')](_0x1fc79f['message']);}logger[_0x7ab6('0x11')]('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x17bbc3['id'],JSON[_0x7ab6('0x54')](_0x1fc79f));});};
\ No newline at end of file
+var _0x0fe7=['data5','access_token','data6','update','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','redis','localhost','status','json','undefined','count','limit','set','Content-Range','then','destroy','end','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','decryptString','catch','show','params','find','service','MicrosoftAzure','data3','create','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','findOne','sendStatus','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','state','Invalid\x20state\x20parameter','from','toString','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken'];(function(_0xb51dcd,_0x15798f){var _0x1e03f0=function(_0xf278ec){while(--_0xf278ec){_0xb51dcd['push'](_0xb51dcd['shift']());}};_0x1e03f0(++_0x15798f);}(_0x0fe7,0x126));var _0x70fe=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x0fe7[_0x1b6186];return _0x186121;};'use strict';var _=require(_0x70fe('0x0'));var Redis=require(_0x70fe('0x1'));var qs=require(_0x70fe('0x2'));var encryptor=require(_0x70fe('0x3'));var config=require(_0x70fe('0x4'));var logger=require(_0x70fe('0x5'))(_0x70fe('0x6'));var db=require(_0x70fe('0x7'))['db'];var oauth=require('./cloudProvider.oauth');config[_0x70fe('0x8')]=_['defaults'](config['redis'],{'host':_0x70fe('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x70fe('0x8')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x4c1e54,_0x3b2ff6){_0x3b2ff6=_0x3b2ff6||0xcc;return function(_0xd00907){if(_0xd00907){return _0x4c1e54['sendStatus'](_0x3b2ff6);}return _0x4c1e54[_0x70fe('0xa')](_0x3b2ff6)['end']();};}function respondWithResult(_0x292f90,_0x537c0d){_0x537c0d=_0x537c0d||0xc8;return function(_0x14d3f8){if(_0x14d3f8){return _0x292f90[_0x70fe('0xa')](_0x537c0d)[_0x70fe('0xb')](_0x14d3f8);}};}function respondWithFilteredResult(_0x32f85e,_0x5ba52a){return function(_0x27ed11){if(_0x27ed11){var _0x54aa79=typeof _0x5ba52a['offset']===_0x70fe('0xc')&&typeof _0x5ba52a['limit']===_0x70fe('0xc');var _0x359d87=_0x27ed11[_0x70fe('0xd')];var _0xf94176=_0x54aa79?0x0:_0x5ba52a['offset'];var _0x343759=_0x54aa79?_0x27ed11[_0x70fe('0xd')]:_0x5ba52a['offset']+_0x5ba52a[_0x70fe('0xe')];var _0x28bee1;if(_0x343759>=_0x359d87){_0x343759=_0x359d87;_0x28bee1=0xc8;}else{_0x28bee1=0xce;}_0x32f85e[_0x70fe('0xa')](_0x28bee1);return _0x32f85e[_0x70fe('0xf')](_0x70fe('0x10'),_0xf94176+'-'+_0x343759+'/'+_0x359d87)[_0x70fe('0xb')](_0x27ed11);}return null;};}function saveUpdates(_0x46c956){return function(_0x152c35){if(_0x152c35){return _0x152c35['update'](_0x46c956)[_0x70fe('0x11')](function(_0x155531){return _0x155531;});}return null;};}function removeEntity(_0x455564){return function(_0x196876){if(_0x196876){return _0x196876[_0x70fe('0x12')]()[_0x70fe('0x11')](function(){_0x455564['status'](0xcc)[_0x70fe('0x13')]();});}};}function handleEntityNotFound(_0x5eeb52){return function(_0x27ce7e){if(!_0x27ce7e){_0x5eeb52['sendStatus'](0x194);}return _0x27ce7e;};}function handleError(_0x17a9ae,_0x2e81c2){_0x2e81c2=_0x2e81c2||0x1f4;return function(_0x344d2e){logger[_0x70fe('0x14')](_0x344d2e[_0x70fe('0x15')]);if(_0x344d2e[_0x70fe('0x16')]){delete _0x344d2e['name'];}_0x17a9ae['status'](_0x2e81c2)[_0x70fe('0x17')](_0x344d2e);};}function maskClientSecret(_0x35d8d1){return _[_0x70fe('0x18')](_0x35d8d1[_0x70fe('0x19')](0x0,0x3),0x14,'*');}exports[_0x70fe('0x1a')]=function(_0x561107,_0x38e2ca){var _0x2e9e83={},_0x305b3b={},_0x3af5e9={'count':0x0,'rows':[]};var _0x3d06b=_[_0x70fe('0x1b')](db[_0x70fe('0x1c')][_0x70fe('0x1d')],function(_0x37ca17){return{'name':_0x37ca17[_0x70fe('0x1e')],'type':_0x37ca17[_0x70fe('0x1f')][_0x70fe('0x20')]};});_0x305b3b[_0x70fe('0x21')]=_[_0x70fe('0x1b')](_0x3d06b,'name');_0x305b3b[_0x70fe('0x22')]=_[_0x70fe('0x23')](_0x561107[_0x70fe('0x22')]);_0x305b3b['filters']=_['intersection'](_0x305b3b[_0x70fe('0x21')],_0x305b3b[_0x70fe('0x22')]);_0x2e9e83[_0x70fe('0x24')]=_[_0x70fe('0x25')](_0x305b3b[_0x70fe('0x21')],qs[_0x70fe('0x26')](_0x561107[_0x70fe('0x22')]['fields']));_0x2e9e83[_0x70fe('0x24')]=_0x2e9e83[_0x70fe('0x24')][_0x70fe('0x27')]?_0x2e9e83[_0x70fe('0x24')]:_0x305b3b['model'];if(!_0x561107[_0x70fe('0x22')][_0x70fe('0x28')](_0x70fe('0x29'))){_0x2e9e83['limit']=qs['limit'](_0x561107['query'][_0x70fe('0xe')]);_0x2e9e83[_0x70fe('0x2a')]=qs['offset'](_0x561107[_0x70fe('0x22')]['offset']);}_0x2e9e83['order']=qs[_0x70fe('0x2b')](_0x561107[_0x70fe('0x22')][_0x70fe('0x2b')]);_0x2e9e83[_0x70fe('0x2c')]=qs['filters'](_[_0x70fe('0x2d')](_0x561107[_0x70fe('0x22')],_0x305b3b[_0x70fe('0x2e')]),_0x3d06b);if(_0x561107[_0x70fe('0x22')][_0x70fe('0x2f')]){_0x2e9e83[_0x70fe('0x2c')]=_[_0x70fe('0x30')](_0x2e9e83[_0x70fe('0x2c')],{'$or':_[_0x70fe('0x1b')](_0x3d06b,function(_0x45a032){if(_0x45a032['type']!==_0x70fe('0x31')){var _0xf2d121={};_0xf2d121[_0x45a032[_0x70fe('0x16')]]={'$like':'%'+_0x561107[_0x70fe('0x22')]['filter']+'%'};return _0xf2d121;}})});}_0x2e9e83=_[_0x70fe('0x30')]({},_0x2e9e83,_0x561107[_0x70fe('0x32')]);var _0x1769a3={'where':_0x2e9e83[_0x70fe('0x2c')]};return db[_0x70fe('0x1c')][_0x70fe('0xd')](_0x1769a3)['then'](function(_0x17f5f9){_0x3af5e9['count']=_0x17f5f9;if(_0x561107[_0x70fe('0x22')][_0x70fe('0x33')]){_0x2e9e83[_0x70fe('0x34')]=[{'all':!![]}];}return db['CloudProvider']['findAll'](_0x2e9e83);})[_0x70fe('0x11')](function(_0x5bcade){_0x3af5e9[_0x70fe('0x35')]=_[_0x70fe('0x1b')](_0x5bcade,function(_0x17971b){if(_0x17971b['service']==='MicrosoftAzure'){var _0x296ba5=encryptor[_0x70fe('0x36')](_0x17971b['data3']);_0x17971b['data3']=maskClientSecret(_0x296ba5);}return _0x17971b;});return _0x3af5e9;})[_0x70fe('0x11')](respondWithFilteredResult(_0x38e2ca,_0x2e9e83))[_0x70fe('0x37')](handleError(_0x38e2ca,null));};exports[_0x70fe('0x38')]=function(_0x11e38d,_0x58c893){var _0x236ac5={'raw':!![],'where':{'id':_0x11e38d[_0x70fe('0x39')]['id']}},_0x20b0b3={};_0x20b0b3[_0x70fe('0x21')]=_[_0x70fe('0x23')](db[_0x70fe('0x1c')][_0x70fe('0x1d')]);_0x20b0b3[_0x70fe('0x22')]=_[_0x70fe('0x23')](_0x11e38d[_0x70fe('0x22')]);_0x20b0b3[_0x70fe('0x2e')]=_[_0x70fe('0x25')](_0x20b0b3['model'],_0x20b0b3[_0x70fe('0x22')]);_0x236ac5['attributes']=_['intersection'](_0x20b0b3[_0x70fe('0x21')],qs[_0x70fe('0x26')](_0x11e38d[_0x70fe('0x22')][_0x70fe('0x26')]));_0x236ac5['attributes']=_0x236ac5['attributes'][_0x70fe('0x27')]?_0x236ac5[_0x70fe('0x24')]:_0x20b0b3[_0x70fe('0x21')];if(_0x11e38d[_0x70fe('0x22')][_0x70fe('0x33')]){_0x236ac5[_0x70fe('0x34')]=[{'all':!![]}];}_0x236ac5=_[_0x70fe('0x30')]({},_0x236ac5,_0x11e38d[_0x70fe('0x32')]);return db[_0x70fe('0x1c')][_0x70fe('0x3a')](_0x236ac5)['then'](handleEntityNotFound(_0x58c893,null))['then'](function(_0x4b0c97){if(_0x4b0c97[_0x70fe('0x3b')]===_0x70fe('0x3c')){var _0x4b6f91=encryptor['decryptString'](_0x4b0c97[_0x70fe('0x3d')]);_0x4b0c97['data3']=maskClientSecret(_0x4b6f91);}return _0x4b0c97;})[_0x70fe('0x11')](respondWithResult(_0x58c893,null))['catch'](handleError(_0x58c893,null));};exports[_0x70fe('0x3e')]=function(_0xc87412,_0x50d2c4){if(!_0xc87412[_0x70fe('0x3f')][_0x70fe('0x16')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0xc87412['body'][_0x70fe('0x3b')])throw new Error(_0x70fe('0x40'));var _0x3c74eb=db[_0x70fe('0x1c')][_0x70fe('0x1d')][_0x70fe('0x3b')][_0x70fe('0x41')];if(!_0x3c74eb[_0x70fe('0x42')](_0xc87412[_0x70fe('0x3f')][_0x70fe('0x3b')]))throw new Error(_0x70fe('0x43')+_0x3c74eb['join'](',\x20'));if(_0xc87412['body'][_0x70fe('0x3b')]===_0x70fe('0x3c')&&_0xc87412[_0x70fe('0x3f')][_0x70fe('0x3d')]){_0xc87412['body'][_0x70fe('0x3d')]=encryptor['encryptString'](_0xc87412[_0x70fe('0x3f')]['data3']);}return db[_0x70fe('0x1c')]['create'](_0xc87412[_0x70fe('0x3f')],{})[_0x70fe('0x11')](respondWithResult(_0x50d2c4,0xc9))['catch'](handleError(_0x50d2c4,null));};exports['update']=function(_0x5df1ba,_0x420b53){if(_0x5df1ba[_0x70fe('0x3f')]['id']){delete _0x5df1ba[_0x70fe('0x3f')]['id'];}return db[_0x70fe('0x1c')]['find']({'where':{'id':_0x5df1ba['params']['id']}})[_0x70fe('0x11')](handleEntityNotFound(_0x420b53,null))[_0x70fe('0x11')](function(_0x2ef15e){if(_0x2ef15e[_0x70fe('0x3b')]===_0x70fe('0x3c')&&_0x5df1ba[_0x70fe('0x3f')]['data3']){_0x5df1ba[_0x70fe('0x3f')][_0x70fe('0x3d')]=encryptor['encryptString'](_0x5df1ba['body'][_0x70fe('0x3d')]);}return _0x2ef15e;})[_0x70fe('0x11')](saveUpdates(_0x5df1ba['body'],null))[_0x70fe('0x11')](respondWithResult(_0x420b53,null))[_0x70fe('0x37')](handleError(_0x420b53,null));};exports[_0x70fe('0x12')]=function(_0x414bd1,_0x2e9478){return db[_0x70fe('0x1c')][_0x70fe('0x3a')]({'where':{'id':_0x414bd1[_0x70fe('0x39')]['id']}})[_0x70fe('0x11')](handleEntityNotFound(_0x2e9478,null))[_0x70fe('0x11')](removeEntity(_0x2e9478,null))['catch'](handleError(_0x2e9478,null));};exports['oauth2MicrosoftAuthorize']=function(_0x5aaf52,_0x5577dd){return db[_0x70fe('0x1c')][_0x70fe('0x44')]({'where':{'id':_0x5aaf52[_0x70fe('0x39')]['id']},'raw':!![]})[_0x70fe('0x11')](function(_0x2d9492){if(!_0x2d9492)return _0x5577dd[_0x70fe('0x45')](0x194);return{'url':oauth[_0x70fe('0x46')](_0x2d9492,_0x5aaf52['user']['id'])};})[_0x70fe('0x11')](respondWithResult(_0x5577dd,null))['catch'](handleError(_0x5577dd,null));};exports[_0x70fe('0x47')]=function(_0xadb1eb,_0xc82611){var _0x939a72=_0xadb1eb['body'];var _0x49c95d;var _0x44d7c5;if(_0x939a72[_0x70fe('0x14')])throw _0x939a72;redis['get'](_0x939a72[_0x70fe('0x48')])[_0x70fe('0x11')](function(_0xe6df9f){if(!_0xe6df9f)throw new Error(_0x70fe('0x49'));_0x49c95d=JSON['parse'](_0xe6df9f);var _0x566c7a=Buffer[_0x70fe('0x4a')](_0x939a72[_0x70fe('0x48')],'base64')[_0x70fe('0x4b')](_0x70fe('0x4c'));_0x44d7c5=JSON['parse'](_0x566c7a);if(!oauth[_0x70fe('0x4d')](_0x939a72['id_token'],_0x49c95d[_0x70fe('0x4e')]))throw new Error(_0x70fe('0x4f'));redis[_0x70fe('0x50')](_0x939a72[_0x70fe('0x48')]);return oauth[_0x70fe('0x51')](_0x939a72['code'],_0x49c95d);})[_0x70fe('0x11')](function(_0x394e64){_0x49c95d[_0x70fe('0x52')]=_0x394e64[_0x70fe('0x53')];_0x49c95d[_0x70fe('0x54')]=_0x394e64['refresh_token'];return db[_0x70fe('0x1c')][_0x70fe('0x55')]({'data5':_0x49c95d[_0x70fe('0x52')],'data6':_0x49c95d[_0x70fe('0x54')]},{'where':{'id':_0x49c95d['id']}});})[_0x70fe('0x11')](function(){oauth[_0x70fe('0x56')](_0x49c95d);socket[_0x70fe('0x57')](_0x70fe('0x58'),{'id':_0x44d7c5['id']});return;})[_0x70fe('0x11')](respondWithStatusCode(_0xc82611,null))[_0x70fe('0x37')](function(_0x223754){if(_0x44d7c5){socket[_0x70fe('0x57')](_0x70fe('0x59'),{'id':_0x44d7c5['id']});}if(!_0x49c95d){logger['error'](_0x70fe('0x5a'),_0x223754);return _0xc82611[_0x70fe('0xa')](0x1f4)[_0x70fe('0x17')](_0x223754[_0x70fe('0x5b')]);}logger['error'](_0x70fe('0x5c'),_0x49c95d['id'],JSON[_0x70fe('0x5d')](_0x223754));});};
\ No newline at end of file
index 3851ae3..fdb9d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63c5=['moment','bluebird','request-promise','path','rimraf','./cloudProvider.attributes','define','CloudProvider','util','../../config/logger','api'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0x63c5,0x1b5));var _0x563c=function(_0x1e6659,_0x1f860c){_0x1e6659=_0x1e6659-0x0;var _0x4d16e4=_0x63c5[_0x1e6659];return _0x4d16e4;};'use strict';var _=require('lodash');var util=require(_0x563c('0x0'));var logger=require(_0x563c('0x1'))(_0x563c('0x2'));var moment=require(_0x563c('0x3'));var BPromise=require(_0x563c('0x4'));var rp=require(_0x563c('0x5'));var fs=require('fs');var path=require(_0x563c('0x6'));var rimraf=require(_0x563c('0x7'));var config=require('../../config/environment');var attributes=require(_0x563c('0x8'));module['exports']=function(_0x3d7fee,_0x36076d){return _0x3d7fee[_0x563c('0x9')](_0x563c('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8059=['rimraf','CloudProvider','cloud_providers','lodash','../../config/logger','moment','request-promise','path'];(function(_0x5d43b5,_0x3d1c74){var _0x2c5fba=function(_0x3532a8){while(--_0x3532a8){_0x5d43b5['push'](_0x5d43b5['shift']());}};_0x2c5fba(++_0x3d1c74);}(_0x8059,0x9b));var _0x9805=function(_0x1d0aee,_0x2c4454){_0x1d0aee=_0x1d0aee-0x0;var _0x34ee2c=_0x8059[_0x1d0aee];return _0x34ee2c;};'use strict';var _=require(_0x9805('0x0'));var util=require('util');var logger=require(_0x9805('0x1'))('api');var moment=require(_0x9805('0x2'));var BPromise=require('bluebird');var rp=require(_0x9805('0x3'));var fs=require('fs');var path=require(_0x9805('0x4'));var rimraf=require(_0x9805('0x5'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x22d82a,_0x2e0d0b){return _0x22d82a['define'](_0x9805('0x6'),attributes,{'tableName':_0x9805('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index db0a650..388f774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9d=['type','push','join','Outlook365','data7','replace','{TENANT_ID}','data2','code','id_token','toString','base64','randomBytes','hex','client_id','data1','response_type','redirect_uri','data4','response_mode','form_post','state','nonce','login','key','oauth2Claims','oauth2/','set','stringify','decode','payload','unix','exp','resolve','then','data3','CloudProvider','findOne','decryptString','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','POST','intervals','bind','findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','jsonwebtoken','moment','ioredis','util','api','../../config/schedule/cloud-provider','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','/authorize','/token','map'];(function(_0x5ca08c,_0x2c2610){var _0x31ba8d=function(_0x5e96b7){while(--_0x5e96b7){_0x5ca08c['push'](_0x5ca08c['shift']());}};_0x31ba8d(++_0x2c2610);}(_0x4d9d,0x19c));var _0xd4d9=function(_0x51ea1b,_0x1c5a3b){_0x51ea1b=_0x51ea1b-0x0;var _0x56d914=_0x4d9d[_0x51ea1b];return _0x56d914;};'use strict';var _=require(_0xd4d9('0x0'));var crypto=require(_0xd4d9('0x1'));var jwt=require(_0xd4d9('0x2'));var moment=require(_0xd4d9('0x3'));var Redis=require(_0xd4d9('0x4'));var rp=require('request-promise');var util=require(_0xd4d9('0x5'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require('../../config/logger')(_0xd4d9('0x6'));var schedule=require(_0xd4d9('0x7'));var db=require('../../mysqldb')['db'];config[_0xd4d9('0x8')]=_['defaults'](config[_0xd4d9('0x8')],{'host':_0xd4d9('0x9'),'port':0x18eb});var redis=new Redis(config[_0xd4d9('0x8')]);var MICROSOFT_AUTH_URL=_0xd4d9('0xa');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xd4d9('0xb'),'email',_0xd4d9('0xc'),_0xd4d9('0xd'),_0xd4d9('0xe'),_0xd4d9('0xf')],'Dynamics365':[_0xd4d9('0x10'),_0xd4d9('0xc')]};var MICROSOFT_AUTH_ENDPOINT=_0xd4d9('0x11');var MICROSOFT_TOKEN_ENDPOINT=_0xd4d9('0x12');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x2bb60a){var _0x3beb5f=_[_0xd4d9('0x13')](AZURE_AUTH_SCOPES[_0x2bb60a[_0xd4d9('0x14')]]);if(_0x2bb60a['type']==='Dynamics365')_0x3beb5f[_0xd4d9('0x15')](_0x2bb60a['data7']+'/.default');return _0x3beb5f[_0xd4d9('0x16')]('\x20');}function getAccessTokenScope(_0x1dfd8a){if(_0x1dfd8a['type']===_0xd4d9('0x17'))return _0xd4d9('0xd');if(_0x1dfd8a[_0xd4d9('0x14')]==='Dynamics365')return _0x1dfd8a[_0xd4d9('0x18')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x41c173,_0x591f7a){var _0x17bdf7=MICROSOFT_AUTH_URL[_0xd4d9('0x19')](_0xd4d9('0x1a'),_0x41c173[_0xd4d9('0x1b')]);var _0x584fbd=[_0xd4d9('0x1c'),_0xd4d9('0x1d')];var _0x59130b=Buffer['from'](JSON['stringify']({'id':_0x591f7a}))[_0xd4d9('0x1e')](_0xd4d9('0x1f'));var _0x5cbab7=crypto[_0xd4d9('0x20')](0x10)[_0xd4d9('0x1e')](_0xd4d9('0x21'));var _0x3956d7=getAuthorizationScopes(_0x41c173);var _0x3a90bc=[{'key':_0xd4d9('0x22'),'value':_0x41c173[_0xd4d9('0x23')]},{'key':_0xd4d9('0x24'),'value':encodeURIComponent(_0x584fbd['join']('\x20'))},{'key':_0xd4d9('0x25'),'value':_0x41c173[_0xd4d9('0x26')]},{'key':_0xd4d9('0x27'),'value':_0xd4d9('0x28')},{'key':'scope','value':encodeURIComponent(_0x3956d7)},{'key':_0xd4d9('0x29'),'value':_0x59130b},{'key':_0xd4d9('0x2a'),'value':_0x5cbab7},{'key':'prompt','value':_0xd4d9('0x2b')}];var _0x2af21c=_0x17bdf7+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xd4d9('0x13')](_0x3a90bc,function(_0x2a0c9c){return _0x2a0c9c[_0xd4d9('0x2c')]+'='+_0x2a0c9c['value'];})['join']('&');_0x41c173[_0xd4d9('0x2d')]={'issuer':_0x17bdf7['replace'](_0xd4d9('0x2e'),''),'audience':_0x41c173[_0xd4d9('0x23')],'state':_0x59130b,'nonce':_0x5cbab7};redis[_0xd4d9('0x2f')](_0x59130b,JSON[_0xd4d9('0x30')](_0x41c173));return _0x2af21c;}function isValidIdToken(_0x55a034,_0x1a2d62){try{var _0x5e64af=jwt[_0xd4d9('0x31')](_0x55a034,{'complete':!![]});var _0x334698=_0x5e64af[_0xd4d9('0x32')];if(_0x334698['iss']!==_0x1a2d62['issuer'])return![];if(_0x334698['aud']!==_0x1a2d62['audience'])return![];if(_0x334698['nonce']!==_0x1a2d62[_0xd4d9('0x2a')])return![];if(moment()['isAfter'](moment[_0xd4d9('0x33')](_0x334698[_0xd4d9('0x34')])))return![];return!![];}catch(_0x1b39e3){throw _0x1b39e3;}}function refreshOauth2MicrosoftAccessToken(_0x2e5eb0){return Promise[_0xd4d9('0x35')]()[_0xd4d9('0x36')](function(){if(_0x2e5eb0[_0xd4d9('0x37')])return _0x2e5eb0;return db[_0xd4d9('0x38')][_0xd4d9('0x39')]({'where':{'id':_0x2e5eb0['id']},'raw':!![]});})[_0xd4d9('0x36')](function(_0x23e639){var _0x1f2fc8={'grant_type':'refresh_token','refresh_token':_0x23e639['data6'],'scope':getAccessTokenScope(_0x23e639),'redirect_uri':_0x23e639[_0xd4d9('0x26')],'client_id':_0x23e639['data1'],'client_secret':encryptor[_0xd4d9('0x3a')](_0x23e639[_0xd4d9('0x37')])};var _0x36ff62={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xd4d9('0x19')](_0xd4d9('0x1a'),_0x23e639[_0xd4d9('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1f2fc8,'json':!![]};return rp(_0x36ff62);})[_0xd4d9('0x36')](function(_0x36f27c){_0x2e5eb0[_0xd4d9('0x3b')]=_0x36f27c['access_token'];_0x2e5eb0['data6']=_0x36f27c['refresh_token'];return db['CloudProvider'][_0xd4d9('0x3c')]({'data5':_0x2e5eb0[_0xd4d9('0x3b')],'data6':_0x2e5eb0['data6']},{'where':{'id':_0x2e5eb0['id']}});})[_0xd4d9('0x36')](function(){return _0x2e5eb0;})[_0xd4d9('0x3d')](function(_0x59e64c){logger[_0xd4d9('0x3e')](_0xd4d9('0x3f'),_0x2e5eb0['id'],_0x59e64c);});}function getOauth2MicrosoftAccessToken(_0x3f701d,_0x452561){var _0x59f9de={'grant_type':_0xd4d9('0x40'),'code':_0x3f701d,'scope':getAccessTokenScope(_0x452561),'redirect_uri':_0x452561[_0xd4d9('0x26')],'client_id':_0x452561[_0xd4d9('0x23')],'client_secret':encryptor[_0xd4d9('0x3a')](_0x452561['data3'])};var _0x1dcc10={'method':_0xd4d9('0x41'),'uri':MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x452561[_0xd4d9('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x59f9de,'json':!![]};return rp(_0x1dcc10);}function startRefreshInterval(_0x40e946){var _0x1f90fe=schedule[_0xd4d9('0x42')];if(_0x1f90fe[_0x40e946['id']])clearInterval(_0x1f90fe[_0x40e946['id']]);_0x1f90fe[_0x40e946['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xd4d9('0x43')](this,{'id':_0x40e946['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xd4d9('0x42')]=_0x1f90fe;}function startAllRefreshIntervals(){return db[_0xd4d9('0x38')][_0xd4d9('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xd4d9('0x36')](function(_0x6e63a0){var _0x4545cf=_0x6e63a0[_0xd4d9('0x13')](function(_0x162a1d){return refreshOauth2MicrosoftAccessToken(_0x162a1d)[_0xd4d9('0x36')](function(_0x56e646){startRefreshInterval(_0x56e646);});});return Promise[_0xd4d9('0x45')](_0x4545cf);})[_0xd4d9('0x3d')](function(_0x366b45){var _0x44aef2=_0x366b45?util['inspect'](_0x366b45,{'showHidden':![],'depth':null}):'';logger[_0xd4d9('0x3e')](_0xd4d9('0x46'),_0x44aef2);});}module[_0xd4d9('0x47')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xc483=['email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','/authorize','/token','map','type','Dynamics365','push','/.default','join','Outlook365','data7','replace','data2','code','from','stringify','base64','randomBytes','toString','hex','client_id','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','key','value','data1','decode','payload','issuer','aud','audience','isAfter','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data6','POST','{TENANT_ID}','access_token','update','data5','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','findAll','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile'];(function(_0x1ad618,_0x3fdd4c){var _0x390f3f=function(_0x1801f6){while(--_0x1801f6){_0x1ad618['push'](_0x1ad618['shift']());}};_0x390f3f(++_0x3fdd4c);}(_0xc483,0x94));var _0x3c48=function(_0x39690b,_0x2cb2a9){_0x39690b=_0x39690b-0x0;var _0x5d22f4=_0xc483[_0x39690b];return _0x5d22f4;};'use strict';var _=require(_0x3c48('0x0'));var crypto=require('crypto');var jwt=require(_0x3c48('0x1'));var moment=require(_0x3c48('0x2'));var Redis=require(_0x3c48('0x3'));var rp=require(_0x3c48('0x4'));var util=require(_0x3c48('0x5'));var encryptor=require(_0x3c48('0x6'));var config=require(_0x3c48('0x7'));var logger=require(_0x3c48('0x8'))(_0x3c48('0x9'));var schedule=require(_0x3c48('0xa'));var db=require(_0x3c48('0xb'))['db'];config[_0x3c48('0xc')]=_[_0x3c48('0xd')](config['redis'],{'host':_0x3c48('0xe'),'port':0x18eb});var redis=new Redis(config[_0x3c48('0xc')]);var MICROSOFT_AUTH_URL=_0x3c48('0xf');var AZURE_AUTH_SCOPES={'Outlook365':[_0x3c48('0x10'),_0x3c48('0x11'),_0x3c48('0x12'),_0x3c48('0x13'),_0x3c48('0x14'),_0x3c48('0x15'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x3c48('0x10'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x3c48('0x16');var MICROSOFT_TOKEN_ENDPOINT=_0x3c48('0x17');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1f9ecb){var _0x24842a=_[_0x3c48('0x18')](AZURE_AUTH_SCOPES[_0x1f9ecb[_0x3c48('0x19')]]);if(_0x1f9ecb['type']===_0x3c48('0x1a'))_0x24842a[_0x3c48('0x1b')](_0x1f9ecb['data7']+_0x3c48('0x1c'));return _0x24842a[_0x3c48('0x1d')]('\x20');}function getAccessTokenScope(_0x1fadf0){if(_0x1fadf0['type']===_0x3c48('0x1e'))return _0x3c48('0x14');if(_0x1fadf0[_0x3c48('0x19')]===_0x3c48('0x1a'))return _0x1fadf0[_0x3c48('0x1f')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x2675dd,_0x28ce4e){var _0x52c4b2=MICROSOFT_AUTH_URL[_0x3c48('0x20')]('{TENANT_ID}',_0x2675dd[_0x3c48('0x21')]);var _0x33af41=[_0x3c48('0x22'),'id_token'];var _0x5469f9=Buffer[_0x3c48('0x23')](JSON[_0x3c48('0x24')]({'id':_0x28ce4e}))['toString'](_0x3c48('0x25'));var _0x3726e6=crypto[_0x3c48('0x26')](0x10)[_0x3c48('0x27')](_0x3c48('0x28'));var _0x2d3813=getAuthorizationScopes(_0x2675dd);var _0x2e5a15=[{'key':_0x3c48('0x29'),'value':_0x2675dd['data1']},{'key':_0x3c48('0x2a'),'value':encodeURIComponent(_0x33af41[_0x3c48('0x1d')]('\x20'))},{'key':_0x3c48('0x2b'),'value':_0x2675dd[_0x3c48('0x2c')]},{'key':_0x3c48('0x2d'),'value':_0x3c48('0x2e')},{'key':_0x3c48('0x2f'),'value':encodeURIComponent(_0x2d3813)},{'key':_0x3c48('0x30'),'value':_0x5469f9},{'key':_0x3c48('0x31'),'value':_0x3726e6},{'key':'prompt','value':'login'}];var _0x1a33ec=_0x52c4b2+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x2e5a15,function(_0x240fa7){return _0x240fa7[_0x3c48('0x32')]+'='+_0x240fa7[_0x3c48('0x33')];})[_0x3c48('0x1d')]('&');_0x2675dd['oauth2Claims']={'issuer':_0x52c4b2[_0x3c48('0x20')]('oauth2/',''),'audience':_0x2675dd[_0x3c48('0x34')],'state':_0x5469f9,'nonce':_0x3726e6};redis['set'](_0x5469f9,JSON['stringify'](_0x2675dd));return _0x1a33ec;}function isValidIdToken(_0x42a196,_0x40648d){try{var _0x5b131d=jwt[_0x3c48('0x35')](_0x42a196,{'complete':!![]});var _0x1f7127=_0x5b131d[_0x3c48('0x36')];if(_0x1f7127['iss']!==_0x40648d[_0x3c48('0x37')])return![];if(_0x1f7127[_0x3c48('0x38')]!==_0x40648d[_0x3c48('0x39')])return![];if(_0x1f7127[_0x3c48('0x31')]!==_0x40648d['nonce'])return![];if(moment()[_0x3c48('0x3a')](moment['unix'](_0x1f7127[_0x3c48('0x3b')])))return![];return!![];}catch(_0x224388){throw _0x224388;}}function refreshOauth2MicrosoftAccessToken(_0x2777a5){return Promise[_0x3c48('0x3c')]()[_0x3c48('0x3d')](function(){if(_0x2777a5[_0x3c48('0x3e')])return _0x2777a5;return db[_0x3c48('0x3f')][_0x3c48('0x40')]({'where':{'id':_0x2777a5['id']},'raw':!![]});})[_0x3c48('0x3d')](function(_0x527ea1){var _0xdedea9={'grant_type':_0x3c48('0x41'),'refresh_token':_0x527ea1[_0x3c48('0x42')],'scope':getAccessTokenScope(_0x527ea1),'redirect_uri':_0x527ea1[_0x3c48('0x2c')],'client_id':_0x527ea1[_0x3c48('0x34')],'client_secret':encryptor['decryptString'](_0x527ea1[_0x3c48('0x3e')])};var _0x55e241={'method':_0x3c48('0x43'),'uri':MICROSOFT_AUTH_URL[_0x3c48('0x20')](_0x3c48('0x44'),_0x527ea1['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xdedea9,'json':!![]};return rp(_0x55e241);})['then'](function(_0x16f9b9){_0x2777a5['data5']=_0x16f9b9[_0x3c48('0x45')];_0x2777a5[_0x3c48('0x42')]=_0x16f9b9[_0x3c48('0x41')];return db[_0x3c48('0x3f')][_0x3c48('0x46')]({'data5':_0x2777a5[_0x3c48('0x47')],'data6':_0x2777a5[_0x3c48('0x42')]},{'where':{'id':_0x2777a5['id']}});})[_0x3c48('0x3d')](function(){return _0x2777a5;})[_0x3c48('0x48')](function(_0x4a91ce){logger[_0x3c48('0x49')](_0x3c48('0x4a'),_0x2777a5['id'],_0x4a91ce);});}function getOauth2MicrosoftAccessToken(_0x51efc5,_0x19cbd8){var _0x37ff27={'grant_type':_0x3c48('0x4b'),'code':_0x51efc5,'scope':getAccessTokenScope(_0x19cbd8),'redirect_uri':_0x19cbd8[_0x3c48('0x2c')],'client_id':_0x19cbd8['data1'],'client_secret':encryptor[_0x3c48('0x4c')](_0x19cbd8[_0x3c48('0x3e')])};var _0x17b21b={'method':_0x3c48('0x43'),'uri':MICROSOFT_AUTH_URL[_0x3c48('0x20')](_0x3c48('0x44'),_0x19cbd8[_0x3c48('0x21')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x37ff27,'json':!![]};return rp(_0x17b21b);}function startRefreshInterval(_0x55a3cd){var _0x5c1a5f=schedule[_0x3c48('0x4d')];if(_0x5c1a5f[_0x55a3cd['id']])clearInterval(_0x5c1a5f[_0x55a3cd['id']]);_0x5c1a5f[_0x55a3cd['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x3c48('0x4e')](this,{'id':_0x55a3cd['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x3c48('0x4d')]=_0x5c1a5f;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x3c48('0x4f')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x3c48('0x3d')](function(_0x464d0d){var _0x54f3c5=_0x464d0d[_0x3c48('0x18')](function(_0x337c1c){return refreshOauth2MicrosoftAccessToken(_0x337c1c)[_0x3c48('0x3d')](function(_0x490e74){startRefreshInterval(_0x490e74);});});return Promise['all'](_0x54f3c5);})[_0x3c48('0x48')](function(_0x2c5b5d){var _0x35a2f4=_0x2c5b5d?util[_0x3c48('0x50')](_0x2c5b5d,{'showHidden':![],'depth':null}):'';logger['error'](_0x3c48('0x51'),_0x35a2f4);});}module[_0x3c48('0x52')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 47a633a..2843815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8e8=['lodash','util','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','debug','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xe8e8,0xc6));var _0x8e8e=function(_0x4b57c2,_0x4881d6){_0x4b57c2=_0x4b57c2-0x0;var _0x2d2dad=_0xe8e8[_0x4b57c2];return _0x2d2dad;};'use strict';var _=require(_0x8e8e('0x0'));var util=require(_0x8e8e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8e8e('0x2'));var fs=require('fs');var Redis=require(_0x8e8e('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8e8e('0x4'))('rpc');var config=require(_0x8e8e('0x5'));var jayson=require(_0x8e8e('0x6'));var client=jayson[_0x8e8e('0x7')][_0x8e8e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x559147,_0x2d5ad4,_0x4edd6c){return new BPromise(function(_0x21703a,_0x35e125){return client[_0x8e8e('0x9')](_0x559147,_0x4edd6c)[_0x8e8e('0xa')](function(_0x40be2d){logger[_0x8e8e('0xb')](_0x8e8e('0xc'),_0x2d5ad4,'request\x20sent');logger[_0x8e8e('0xd')](_0x8e8e('0xe'),_0x2d5ad4,_0x8e8e('0xf'),JSON[_0x8e8e('0x10')](_0x40be2d));if(_0x40be2d['error']){if(_0x40be2d[_0x8e8e('0x11')][_0x8e8e('0x12')]===0x1f4){logger[_0x8e8e('0x11')](_0x8e8e('0xc'),_0x2d5ad4,_0x40be2d[_0x8e8e('0x11')][_0x8e8e('0x13')]);return _0x35e125(_0x40be2d[_0x8e8e('0x11')][_0x8e8e('0x13')]);}logger[_0x8e8e('0x11')](_0x8e8e('0xc'),_0x2d5ad4,_0x40be2d['error'][_0x8e8e('0x13')]);return _0x21703a(_0x40be2d[_0x8e8e('0x11')]['message']);}else{logger[_0x8e8e('0xb')](_0x8e8e('0xc'),_0x2d5ad4,'request\x20sent');_0x21703a(_0x40be2d[_0x8e8e('0x14')][_0x8e8e('0x13')]);}})[_0x8e8e('0x15')](function(_0x3b958a){logger[_0x8e8e('0x11')](_0x8e8e('0xc'),_0x2d5ad4,_0x3b958a);_0x35e125(_0x3b958a);});});}
\ No newline at end of file
+var _0xad07=['util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x410ed4,_0x5e4083){var _0x3ebce0=function(_0x568193){while(--_0x568193){_0x410ed4['push'](_0x410ed4['shift']());}};_0x3ebce0(++_0x5e4083);}(_0xad07,0xe3));var _0x7ad0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad07[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ad0('0x0'));var util=require(_0x7ad0('0x1'));var moment=require('moment');var BPromise=require(_0x7ad0('0x2'));var rs=require(_0x7ad0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7ad0('0x4'));var logger=require(_0x7ad0('0x5'))(_0x7ad0('0x6'));var config=require('../../config/environment');var jayson=require(_0x7ad0('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d09f9,_0x458ffd,_0x533282){return new BPromise(function(_0x50b4e7,_0x8684e2){return client[_0x7ad0('0x8')](_0x2d09f9,_0x533282)['then'](function(_0x5afa7c){logger[_0x7ad0('0x9')](_0x7ad0('0xa'),_0x458ffd,_0x7ad0('0xb'));logger['debug'](_0x7ad0('0xc'),_0x458ffd,_0x7ad0('0xb'),JSON[_0x7ad0('0xd')](_0x5afa7c));if(_0x5afa7c[_0x7ad0('0xe')]){if(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0xf')]===0x1f4){logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x5afa7c[_0x7ad0('0xe')]['message']);return _0x8684e2(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0x10')]);}logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x5afa7c['error']['message']);return _0x50b4e7(_0x5afa7c[_0x7ad0('0xe')][_0x7ad0('0x10')]);}else{logger[_0x7ad0('0x9')](_0x7ad0('0xa'),_0x458ffd,_0x7ad0('0xb'));_0x50b4e7(_0x5afa7c[_0x7ad0('0x11')][_0x7ad0('0x10')]);}})[_0x7ad0('0x12')](function(_0x52c802){logger[_0x7ad0('0xe')](_0x7ad0('0xa'),_0x458ffd,_0x52c802);_0x8684e2(_0x52c802);});});}
\ No newline at end of file
index 2a7d863..8dcb7d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['/:id','show','create','put','update','delete','/:id/oauth2/microsoft/authorize/','post','exports','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0x1261,0x144));var _0x1126=function(_0xc298ad,_0xea4dc2){_0xc298ad=_0xc298ad-0x0;var _0x11b2e6=_0x1261[_0xc298ad];return _0x11b2e6;};'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
+var _0x5f2f=['exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback'];(function(_0x50fda9,_0x5ee44b){var _0x36b92b=function(_0x121877){while(--_0x121877){_0x50fda9['push'](_0x50fda9['shift']());}};_0x36b92b(++_0x5ee44b);}(_0x5f2f,0x73));var _0xf5f2=function(_0x245b99,_0x4dc787){_0x245b99=_0x245b99-0x0;var _0x37b53c=_0x5f2f[_0x245b99];return _0x37b53c;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);router[_0xf5f2('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x7')]);router[_0xf5f2('0x8')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x9')]);router[_0xf5f2('0xa')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xc')]);router[_0xf5f2('0xd')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xe')]);router[_0xf5f2('0x4')](_0xf5f2('0xf'),auth['isAuthenticated'](),controller[_0xf5f2('0x10')]);router['post']('/oauth2/microsoft/callback',controller[_0xf5f2('0x11')]);module[_0xf5f2('0x12')]=router;
\ No newline at end of file
index 415e035..2f457a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ce8=['name','sequelize','STRING'];(function(_0x1ce3cf,_0x2e0bf4){var _0x168e8d=function(_0x1ce6cf){while(--_0x1ce6cf){_0x1ce3cf['push'](_0x1ce3cf['shift']());}};_0x168e8d(++_0x2e0bf4);}(_0x9ce8,0x163));var _0x89ce=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0x9ce8[_0x1bbc08];return _0x5d825b;};'use strict';var Sequelize=require(_0x89ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x89ce('0x1')],'unique':_0x89ce('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x89ce('0x1')]},'companyId':{'type':Sequelize[_0x89ce('0x1')]},'website':{'type':Sequelize[_0x89ce('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x89ce('0x1')]},'type':{'type':Sequelize[_0x89ce('0x1')]},'street':{'type':Sequelize[_0x89ce('0x1')]},'postalCode':{'type':Sequelize[_0x89ce('0x1')]},'city':{'type':Sequelize[_0x89ce('0x1')]},'country':{'type':Sequelize[_0x89ce('0x1')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x89ce('0x1')]},'sStreet':{'type':Sequelize[_0x89ce('0x1')]},'sPostalCode':{'type':Sequelize[_0x89ce('0x1')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x89ce('0x1')]},'description':{'type':Sequelize[_0x89ce('0x1')]}};
\ No newline at end of file
+var _0x9bef=['exports','name','STRING','sequelize'];(function(_0x30ab14,_0x225a5e){var _0x34b9ef=function(_0x349cae){while(--_0x349cae){_0x30ab14['push'](_0x30ab14['shift']());}};_0x34b9ef(++_0x225a5e);}(_0x9bef,0x133));var _0xf9be=function(_0x409f23,_0x437f24){_0x409f23=_0x409f23-0x0;var _0x415162=_0x9bef[_0x409f23];return _0x415162;};'use strict';var Sequelize=require(_0xf9be('0x0'));module[_0xf9be('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf9be('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xf9be('0x3')]},'website':{'type':Sequelize[_0xf9be('0x3')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xf9be('0x3')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xf9be('0x3')]},'postalCode':{'type':Sequelize[_0xf9be('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xf9be('0x3')]},'email':{'type':Sequelize[_0xf9be('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xf9be('0x3')]},'sStreet':{'type':Sequelize[_0xf9be('0x3')]},'sPostalCode':{'type':Sequelize[_0xf9be('0x3')]},'sCity':{'type':Sequelize[_0xf9be('0x3')]},'sCountry':{'type':Sequelize[_0xf9be('0x3')]},'description':{'type':Sequelize[_0xf9be('0x3')]}};
\ No newline at end of file
index dfb8dbe..f953a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f30=['bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','then','destroy','error','stack','name','send','index','describe','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','CmCompany','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','CmContact','ids','getContacts','findOne','rawAttributes','eml-format','fast-json-patch','moment'];(function(_0x5bd182,_0x192b2b){var _0x51d4f5=function(_0x5c710f){while(--_0x5c710f){_0x5bd182['push'](_0x5bd182['shift']());}};_0x51d4f5(++_0x192b2b);}(_0x7f30,0x1b5));var _0x07f3=function(_0x4747ee,_0x57bd93){_0x4747ee=_0x4747ee-0x0;var _0x2e6a83=_0x7f30[_0x4747ee];return _0x2e6a83;};'use strict';var emlformat=require(_0x07f3('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x07f3('0x1'));var rp=require('request-promise');var moment=require(_0x07f3('0x2'));var BPromise=require(_0x07f3('0x3'));var Mustache=require(_0x07f3('0x4'));var util=require(_0x07f3('0x5'));var path=require(_0x07f3('0x6'));var sox=require(_0x07f3('0x7'));var csv=require('to-csv');var ejs=require(_0x07f3('0x8'));var fs=require('fs');var fs_extra=require(_0x07f3('0x9'));var _=require(_0x07f3('0xa'));var squel=require(_0x07f3('0xb'));var crypto=require('crypto');var jsforce=require(_0x07f3('0xc'));var deskjs=require(_0x07f3('0xd'));var toCsv=require(_0x07f3('0xe'));var querystring=require(_0x07f3('0xf'));var Papa=require(_0x07f3('0x10'));var Redis=require(_0x07f3('0x11'));var authService=require(_0x07f3('0x12'));var qs=require(_0x07f3('0x13'));var as=require(_0x07f3('0x14'));var hardwareService=require(_0x07f3('0x15'));var logger=require(_0x07f3('0x16'))(_0x07f3('0x17'));var utils=require('../../config/utils');var config=require(_0x07f3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x07f3('0x19'))['db'];function respondWithStatusCode(_0x5c4adb,_0x3155a3){_0x3155a3=_0x3155a3||0xcc;return function(_0x3a8b98){if(_0x3a8b98){return _0x5c4adb[_0x07f3('0x1a')](_0x3155a3);}return _0x5c4adb[_0x07f3('0x1b')](_0x3155a3)[_0x07f3('0x1c')]();};}function respondWithResult(_0x306b57,_0xe9bb4d){_0xe9bb4d=_0xe9bb4d||0xc8;return function(_0x37f09f){if(_0x37f09f){return _0x306b57[_0x07f3('0x1b')](_0xe9bb4d)[_0x07f3('0x1d')](_0x37f09f);}};}function respondWithFilteredResult(_0x29a6fb,_0x3abc00){return function(_0x252daa){if(_0x252daa){var _0x11eb78=typeof _0x3abc00[_0x07f3('0x1e')]===_0x07f3('0x1f')&&typeof _0x3abc00[_0x07f3('0x20')]==='undefined';var _0x3e635f=_0x252daa[_0x07f3('0x21')];var _0x29c4ef=_0x11eb78?0x0:_0x3abc00[_0x07f3('0x1e')];var _0x2e7192=_0x11eb78?_0x252daa[_0x07f3('0x21')]:_0x3abc00[_0x07f3('0x1e')]+_0x3abc00[_0x07f3('0x20')];var _0x102f77;if(_0x2e7192>=_0x3e635f){_0x2e7192=_0x3e635f;_0x102f77=0xc8;}else{_0x102f77=0xce;}_0x29a6fb[_0x07f3('0x1b')](_0x102f77);return _0x29a6fb['set']('Content-Range',_0x29c4ef+'-'+_0x2e7192+'/'+_0x3e635f)[_0x07f3('0x1d')](_0x252daa);}return null;};}function patchUpdates(_0x3fb7fc){return function(_0x59e1ae){try{jsonpatch['apply'](_0x59e1ae,_0x3fb7fc,!![]);}catch(_0x50c988){return BPromise[_0x07f3('0x22')](_0x50c988);}return _0x59e1ae[_0x07f3('0x23')]();};}function saveUpdates(_0x16c8e3,_0x201be2){return function(_0x255528){if(_0x255528){return _0x255528['update'](_0x16c8e3)[_0x07f3('0x24')](function(_0x1dad0c){return _0x1dad0c;});}return null;};}function removeEntity(_0x465d4f,_0x52e285){return function(_0x228a23){if(_0x228a23){return _0x228a23['destroy']()['then'](function(){var _0x41c302=_0x228a23['get']({'plain':!![]});var _0x4344da='Companies';return db['UserProfileResource'][_0x07f3('0x25')]({'where':{'type':_0x4344da,'resourceId':_0x41c302['id']}})[_0x07f3('0x24')](function(){return _0x228a23;});})['then'](function(){_0x465d4f[_0x07f3('0x1b')](0xcc)[_0x07f3('0x1c')]();});}};}function handleEntityNotFound(_0x16a14f,_0x49ca5c){return function(_0x10d866){if(!_0x10d866){_0x16a14f['sendStatus'](0x194);}return _0x10d866;};}function handleError(_0x3a4b54,_0x6ad20b){_0x6ad20b=_0x6ad20b||0x1f4;return function(_0x2fe500){logger[_0x07f3('0x26')](_0x2fe500[_0x07f3('0x27')]);if(_0x2fe500['name']){delete _0x2fe500[_0x07f3('0x28')];}_0x3a4b54[_0x07f3('0x1b')](_0x6ad20b)[_0x07f3('0x29')](_0x2fe500);};}exports[_0x07f3('0x2a')]=function(_0x1138aa,_0x2938c2){var _0x472759={},_0x1f14d2={},_0x528e28={'count':0x0,'rows':[]};return db['CmCompany'][_0x07f3('0x2b')]()[_0x07f3('0x24')](function(_0xccaa94){_0x1f14d2[_0x07f3('0x2c')]=_[_0x07f3('0x2d')](_0xccaa94);_0x1f14d2[_0x07f3('0x2e')]=_[_0x07f3('0x2d')](_0x1138aa[_0x07f3('0x2e')]);_0x1f14d2[_0x07f3('0x2f')]=_['intersection'](_0x1f14d2[_0x07f3('0x2c')],_0x1f14d2['query']);_0x472759[_0x07f3('0x30')]=_[_0x07f3('0x31')](_0x1f14d2[_0x07f3('0x2c')],qs[_0x07f3('0x32')](_0x1138aa[_0x07f3('0x2e')][_0x07f3('0x32')]));_0x472759[_0x07f3('0x30')]=_0x472759[_0x07f3('0x30')][_0x07f3('0x33')]?_0x472759['attributes']:_0x1f14d2[_0x07f3('0x2c')];if(!_0x1138aa['query'][_0x07f3('0x34')](_0x07f3('0x35'))){_0x472759[_0x07f3('0x20')]=qs[_0x07f3('0x20')](_0x1138aa[_0x07f3('0x2e')]['limit']);_0x472759[_0x07f3('0x1e')]=qs[_0x07f3('0x1e')](_0x1138aa['query'][_0x07f3('0x1e')]);}_0x472759[_0x07f3('0x36')]=qs['sort'](_0x1138aa[_0x07f3('0x2e')][_0x07f3('0x37')]);_0x472759[_0x07f3('0x38')]=qs[_0x07f3('0x2f')](_[_0x07f3('0x39')](_0x1138aa[_0x07f3('0x2e')],_0x1f14d2[_0x07f3('0x2f')]),_0xccaa94);if(_0x1138aa[_0x07f3('0x2e')][_0x07f3('0x3a')]){_0x472759['where']=_[_0x07f3('0x3b')](_0x472759[_0x07f3('0x38')],{'$or':_[_0x07f3('0x3c')](_0x472759['attributes'],function(_0x28d73b){var _0x4e9616={};_0x4e9616[_0x28d73b]={'$like':'%'+_0x1138aa['query'][_0x07f3('0x3a')]+'%'};return _0x4e9616;})});}_0x472759=_['merge']({},_0x472759,_0x1138aa[_0x07f3('0x3d')]);var _0x1fde72={'where':_0x472759[_0x07f3('0x38')]};return db['CmCompany'][_0x07f3('0x21')](_0x1fde72)['then'](function(_0x38942b){_0x528e28[_0x07f3('0x21')]=_0x38942b;if(_0x1138aa[_0x07f3('0x2e')][_0x07f3('0x3e')]){_0x472759[_0x07f3('0x3f')]=[{'all':!![]}];}return db['CmCompany'][_0x07f3('0x40')](_0x472759);})[_0x07f3('0x24')](function(_0xda9e08){_0x528e28[_0x07f3('0x41')]=_0xda9e08;return _0x528e28;})['then'](respondWithFilteredResult(_0x2938c2,_0x472759))[_0x07f3('0x42')](handleError(_0x2938c2,null));})[_0x07f3('0x42')](handleError(_0x2938c2,null));};exports[_0x07f3('0x43')]=function(_0x8a09d,_0x2c0e0b){var _0x435048={'raw':![],'where':{'id':_0x8a09d[_0x07f3('0x44')]['id']}},_0x5ff010={};_0x5ff010[_0x07f3('0x2c')]=_[_0x07f3('0x2d')](db[_0x07f3('0x45')]['rawAttributes']);_0x5ff010[_0x07f3('0x2e')]=_[_0x07f3('0x2d')](_0x8a09d[_0x07f3('0x2e')]);_0x5ff010[_0x07f3('0x2f')]=_['intersection'](_0x5ff010[_0x07f3('0x2c')],_0x5ff010[_0x07f3('0x2e')]);_0x435048[_0x07f3('0x30')]=_['intersection'](_0x5ff010[_0x07f3('0x2c')],qs[_0x07f3('0x32')](_0x8a09d[_0x07f3('0x2e')][_0x07f3('0x32')]));_0x435048[_0x07f3('0x30')]=_0x435048[_0x07f3('0x30')][_0x07f3('0x33')]?_0x435048[_0x07f3('0x30')]:_0x5ff010[_0x07f3('0x2c')];if(_0x8a09d[_0x07f3('0x2e')][_0x07f3('0x3e')]){_0x435048[_0x07f3('0x3f')]=[{'all':!![]}];}_0x435048=_[_0x07f3('0x3b')]({},_0x435048,_0x8a09d[_0x07f3('0x3d')]);return db['CmCompany'][_0x07f3('0x46')](_0x435048)[_0x07f3('0x24')](handleEntityNotFound(_0x2c0e0b,null))['then'](respondWithResult(_0x2c0e0b,null))[_0x07f3('0x42')](handleError(_0x2c0e0b,null));};exports['create']=function(_0x4f2620,_0xa9f34){return db[_0x07f3('0x45')][_0x07f3('0x47')](_0x4f2620['body'],{})['then'](function(_0x14f95f){var _0x262364=_0x4f2620[_0x07f3('0x48')][_0x07f3('0x49')]({'plain':!![]});if(!_0x262364)throw new Error(_0x07f3('0x4a'));if(_0x262364[_0x07f3('0x4b')]===_0x07f3('0x48')){var _0x47b098=_0x14f95f[_0x07f3('0x49')]({'plain':!![]});var _0x268086=_0x07f3('0x4c');return db['UserProfileSection'][_0x07f3('0x46')]({'where':{'name':_0x268086,'userProfileId':_0x262364[_0x07f3('0x4d')]},'raw':!![]})[_0x07f3('0x24')](function(_0x1a92da){if(_0x1a92da&&_0x1a92da[_0x07f3('0x4e')]===0x0){return db[_0x07f3('0x4f')]['create']({'name':_0x47b098[_0x07f3('0x28')],'resourceId':_0x47b098['id'],'type':_0x1a92da[_0x07f3('0x28')],'sectionId':_0x1a92da['id']},{})[_0x07f3('0x24')](function(){return _0x14f95f;});}else{return _0x14f95f;}})[_0x07f3('0x42')](function(_0x46ab7d){logger[_0x07f3('0x26')](_0x07f3('0x50'),_0x46ab7d);throw _0x46ab7d;});}return _0x14f95f;})[_0x07f3('0x24')](respondWithResult(_0xa9f34,0xc9))[_0x07f3('0x42')](handleError(_0xa9f34,null));};exports['update']=function(_0x5f537b,_0x10ea3c){if(_0x5f537b[_0x07f3('0x51')]['id']){delete _0x5f537b[_0x07f3('0x51')]['id'];}return db['CmCompany'][_0x07f3('0x46')]({'where':{'id':_0x5f537b['params']['id']}})['then'](handleEntityNotFound(_0x10ea3c,null))[_0x07f3('0x24')](saveUpdates(_0x5f537b[_0x07f3('0x51')],null))[_0x07f3('0x24')](respondWithResult(_0x10ea3c,null))[_0x07f3('0x42')](handleError(_0x10ea3c,null));};exports[_0x07f3('0x25')]=function(_0x3a7ef7,_0x89853c){return db[_0x07f3('0x45')][_0x07f3('0x46')]({'where':{'id':_0x3a7ef7['params']['id']}})[_0x07f3('0x24')](handleEntityNotFound(_0x89853c,null))[_0x07f3('0x24')](removeEntity(_0x89853c,null))[_0x07f3('0x42')](handleError(_0x89853c,null));};exports[_0x07f3('0x2b')]=function(_0x2df477,_0x21bd47){return db[_0x07f3('0x45')][_0x07f3('0x2b')]()[_0x07f3('0x24')](respondWithResult(_0x21bd47,null))[_0x07f3('0x42')](handleError(_0x21bd47,null));};exports[_0x07f3('0x52')]=function(_0x57a7fb,_0x404c61,_0x4e37ed){return db[_0x07f3('0x53')][_0x07f3('0x46')]({'where':{'id':_0x57a7fb[_0x07f3('0x44')]['id']}})[_0x07f3('0x24')](handleEntityNotFound(_0x404c61,null))[_0x07f3('0x24')](function(_0x4f0854){if(_0x4f0854){return _0x4f0854[_0x07f3('0x52')](_0x57a7fb['body'][_0x07f3('0x54')],_['omit'](_0x57a7fb[_0x07f3('0x51')],[_0x07f3('0x54'),'id'])||{});}})[_0x07f3('0x24')](respondWithResult(_0x404c61,null))[_0x07f3('0x42')](handleError(_0x404c61,null));};exports[_0x07f3('0x55')]=function(_0x4a6f01,_0xccd012,_0x30fe4e){var _0x349718={};var _0x573c46={};var _0x4ec588;var _0x348c86;return db['CmCompany'][_0x07f3('0x56')]({'where':{'id':_0x4a6f01[_0x07f3('0x44')]['id']}})[_0x07f3('0x24')](handleEntityNotFound(_0xccd012,null))[_0x07f3('0x24')](function(_0x34ee57){if(_0x34ee57){_0x4ec588=_0x34ee57;_0x573c46[_0x07f3('0x2c')]=_['keys'](db['CmContact'][_0x07f3('0x57')]);_0x573c46['query']=_[_0x07f3('0x2d')](_0x4a6f01[_0x07f3('0x2e')]);_0x573c46['filters']=_[_0x07f3('0x31')](_0x573c46[_0x07f3('0x2c')],_0x573c46[_0x07f3('0x2e')]);_0x349718[_0x07f3('0x30')]=_['intersection'](_0x573c46[_0x07f3('0x2c')],qs[_0x07f3('0x32')](_0x4a6f01[_0x07f3('0x2e')][_0x07f3('0x32')]));_0x349718[_0x07f3('0x30')]=_0x349718[_0x07f3('0x30')][_0x07f3('0x33')]?_0x349718[_0x07f3('0x30')]:_0x573c46[_0x07f3('0x2c')];_0x349718[_0x07f3('0x36')]=qs[_0x07f3('0x37')](_0x4a6f01['query'][_0x07f3('0x37')]);_0x349718[_0x07f3('0x38')]=qs[_0x07f3('0x2f')](_[_0x07f3('0x39')](_0x4a6f01[_0x07f3('0x2e')],_0x573c46[_0x07f3('0x2f')]));if(_0x4a6f01['query'][_0x07f3('0x3a')]){_0x349718[_0x07f3('0x38')]=_['merge'](_0x349718[_0x07f3('0x38')],{'$or':_[_0x07f3('0x3c')](_0x349718[_0x07f3('0x30')],function(_0x7ac6cf){var _0x344216={};_0x344216[_0x7ac6cf]={'$like':'%'+_0x4a6f01[_0x07f3('0x2e')][_0x07f3('0x3a')]+'%'};return _0x344216;})});}_0x349718=_[_0x07f3('0x3b')]({},_0x349718,_0x4a6f01[_0x07f3('0x3d')]);return _0x4ec588[_0x07f3('0x55')](_0x349718);}})['then'](function(_0x4026d4){if(_0x4026d4){_0x348c86=_0x4026d4['length'];if(!_0x4a6f01['query'][_0x07f3('0x34')]('nolimit')){_0x349718[_0x07f3('0x20')]=qs[_0x07f3('0x20')](_0x4a6f01[_0x07f3('0x2e')][_0x07f3('0x20')]);_0x349718[_0x07f3('0x1e')]=qs[_0x07f3('0x1e')](_0x4a6f01[_0x07f3('0x2e')][_0x07f3('0x1e')]);}return _0x4ec588[_0x07f3('0x55')](_0x349718);}})['then'](function(_0x2a4023){if(_0x2a4023){return _0x2a4023?{'count':_0x348c86,'rows':_0x2a4023}:null;}})[_0x07f3('0x24')](respondWithResult(_0xccd012,null))[_0x07f3('0x42')](handleError(_0xccd012,null));};
\ No newline at end of file
+var _0x29ad=['filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','UserProfileSection','userProfileId','autoAssociation','body','addContacts','CmContact','ids','omit','getContacts','findOne','map','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','get','UserProfileResource','destroy','error','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge'];(function(_0x324ed1,_0x41e2dd){var _0x53af7a=function(_0x29bffb){while(--_0x29bffb){_0x324ed1['push'](_0x324ed1['shift']());}};_0x53af7a(++_0x41e2dd);}(_0x29ad,0x177));var _0xd29a=function(_0x502b94,_0x2bd7ea){_0x502b94=_0x502b94-0x0;var _0x1c1334=_0x29ad[_0x502b94];return _0x1c1334;};'use strict';var emlformat=require(_0xd29a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd29a('0x1'));var jsonpatch=require(_0xd29a('0x2'));var rp=require('request-promise');var moment=require(_0xd29a('0x3'));var BPromise=require(_0xd29a('0x4'));var Mustache=require(_0xd29a('0x5'));var util=require(_0xd29a('0x6'));var path=require(_0xd29a('0x7'));var sox=require(_0xd29a('0x8'));var csv=require('to-csv');var ejs=require(_0xd29a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd29a('0xa'));var squel=require(_0xd29a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd29a('0xc'));var toCsv=require(_0xd29a('0xd'));var querystring=require(_0xd29a('0xe'));var Papa=require(_0xd29a('0xf'));var Redis=require(_0xd29a('0x10'));var authService=require(_0xd29a('0x11'));var qs=require(_0xd29a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd29a('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd29a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd29a('0x15'))['db'];function respondWithStatusCode(_0x3c406f,_0x4d3b42){_0x4d3b42=_0x4d3b42||0xcc;return function(_0x4dbe1f){if(_0x4dbe1f){return _0x3c406f[_0xd29a('0x16')](_0x4d3b42);}return _0x3c406f['status'](_0x4d3b42)[_0xd29a('0x17')]();};}function respondWithResult(_0x3ff74d,_0x349c3c){_0x349c3c=_0x349c3c||0xc8;return function(_0xd06d45){if(_0xd06d45){return _0x3ff74d[_0xd29a('0x18')](_0x349c3c)[_0xd29a('0x19')](_0xd06d45);}};}function respondWithFilteredResult(_0xe5c011,_0x41f18e){return function(_0x34fc1e){if(_0x34fc1e){var _0x4e69e4=typeof _0x41f18e['offset']===_0xd29a('0x1a')&&typeof _0x41f18e[_0xd29a('0x1b')]===_0xd29a('0x1a');var _0x1bbfe4=_0x34fc1e[_0xd29a('0x1c')];var _0x4b4763=_0x4e69e4?0x0:_0x41f18e['offset'];var _0x30520f=_0x4e69e4?_0x34fc1e[_0xd29a('0x1c')]:_0x41f18e[_0xd29a('0x1d')]+_0x41f18e[_0xd29a('0x1b')];var _0x34c62b;if(_0x30520f>=_0x1bbfe4){_0x30520f=_0x1bbfe4;_0x34c62b=0xc8;}else{_0x34c62b=0xce;}_0xe5c011[_0xd29a('0x18')](_0x34c62b);return _0xe5c011[_0xd29a('0x1e')]('Content-Range',_0x4b4763+'-'+_0x30520f+'/'+_0x1bbfe4)[_0xd29a('0x19')](_0x34fc1e);}return null;};}function patchUpdates(_0x537c31){return function(_0x4c0a9c){try{jsonpatch[_0xd29a('0x1f')](_0x4c0a9c,_0x537c31,!![]);}catch(_0x501252){return BPromise[_0xd29a('0x20')](_0x501252);}return _0x4c0a9c[_0xd29a('0x21')]();};}function saveUpdates(_0x40f6b1,_0x188d3a){return function(_0x384a45){if(_0x384a45){return _0x384a45[_0xd29a('0x22')](_0x40f6b1)[_0xd29a('0x23')](function(_0x438a85){return _0x438a85;});}return null;};}function removeEntity(_0x4d1cd5,_0x4a1531){return function(_0x1d5b05){if(_0x1d5b05){return _0x1d5b05['destroy']()[_0xd29a('0x23')](function(){var _0x177655=_0x1d5b05[_0xd29a('0x24')]({'plain':!![]});var _0x145703='Companies';return db[_0xd29a('0x25')][_0xd29a('0x26')]({'where':{'type':_0x145703,'resourceId':_0x177655['id']}})['then'](function(){return _0x1d5b05;});})['then'](function(){_0x4d1cd5['status'](0xcc)[_0xd29a('0x17')]();});}};}function handleEntityNotFound(_0x5b5747,_0x471b64){return function(_0x3d40a2){if(!_0x3d40a2){_0x5b5747[_0xd29a('0x16')](0x194);}return _0x3d40a2;};}function handleError(_0x578163,_0x1b7957){_0x1b7957=_0x1b7957||0x1f4;return function(_0x1bfcce){logger[_0xd29a('0x27')](_0x1bfcce['stack']);if(_0x1bfcce[_0xd29a('0x28')]){delete _0x1bfcce[_0xd29a('0x28')];}_0x578163['status'](_0x1b7957)[_0xd29a('0x29')](_0x1bfcce);};}exports[_0xd29a('0x2a')]=function(_0x47246d,_0x5cdede){var _0x471e54={},_0x562f83={},_0x48cdeb={'count':0x0,'rows':[]};return db[_0xd29a('0x2b')][_0xd29a('0x2c')]()['then'](function(_0x50edbd){_0x562f83[_0xd29a('0x2d')]=_[_0xd29a('0x2e')](_0x50edbd);_0x562f83[_0xd29a('0x2f')]=_['keys'](_0x47246d[_0xd29a('0x2f')]);_0x562f83[_0xd29a('0x30')]=_[_0xd29a('0x31')](_0x562f83[_0xd29a('0x2d')],_0x562f83[_0xd29a('0x2f')]);_0x471e54[_0xd29a('0x32')]=_[_0xd29a('0x31')](_0x562f83[_0xd29a('0x2d')],qs['fields'](_0x47246d[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x471e54['attributes']=_0x471e54[_0xd29a('0x32')][_0xd29a('0x34')]?_0x471e54['attributes']:_0x562f83[_0xd29a('0x2d')];if(!_0x47246d[_0xd29a('0x2f')][_0xd29a('0x35')](_0xd29a('0x36'))){_0x471e54[_0xd29a('0x1b')]=qs[_0xd29a('0x1b')](_0x47246d['query'][_0xd29a('0x1b')]);_0x471e54[_0xd29a('0x1d')]=qs[_0xd29a('0x1d')](_0x47246d[_0xd29a('0x2f')][_0xd29a('0x1d')]);}_0x471e54[_0xd29a('0x37')]=qs['sort'](_0x47246d['query'][_0xd29a('0x38')]);_0x471e54[_0xd29a('0x39')]=qs[_0xd29a('0x30')](_[_0xd29a('0x3a')](_0x47246d[_0xd29a('0x2f')],_0x562f83[_0xd29a('0x30')]),_0x50edbd);if(_0x47246d['query']['filter']){_0x471e54[_0xd29a('0x39')]=_[_0xd29a('0x3b')](_0x471e54[_0xd29a('0x39')],{'$or':_['map'](_0x471e54['attributes'],function(_0x465d71){var _0x4810d4={};_0x4810d4[_0x465d71]={'$like':'%'+_0x47246d[_0xd29a('0x2f')][_0xd29a('0x3c')]+'%'};return _0x4810d4;})});}_0x471e54=_[_0xd29a('0x3b')]({},_0x471e54,_0x47246d[_0xd29a('0x3d')]);var _0x2ff0cf={'where':_0x471e54[_0xd29a('0x39')]};return db[_0xd29a('0x2b')]['count'](_0x2ff0cf)[_0xd29a('0x23')](function(_0x4a1569){_0x48cdeb[_0xd29a('0x1c')]=_0x4a1569;if(_0x47246d[_0xd29a('0x2f')][_0xd29a('0x3e')]){_0x471e54[_0xd29a('0x3f')]=[{'all':!![]}];}return db[_0xd29a('0x2b')][_0xd29a('0x40')](_0x471e54);})[_0xd29a('0x23')](function(_0x2a269f){_0x48cdeb[_0xd29a('0x41')]=_0x2a269f;return _0x48cdeb;})[_0xd29a('0x23')](respondWithFilteredResult(_0x5cdede,_0x471e54))[_0xd29a('0x42')](handleError(_0x5cdede,null));})[_0xd29a('0x42')](handleError(_0x5cdede,null));};exports[_0xd29a('0x43')]=function(_0xf29bb1,_0x5ca2d4){var _0x3af2e4={'raw':![],'where':{'id':_0xf29bb1[_0xd29a('0x44')]['id']}},_0xf874e6={};_0xf874e6[_0xd29a('0x2d')]=_[_0xd29a('0x2e')](db['CmCompany'][_0xd29a('0x45')]);_0xf874e6[_0xd29a('0x2f')]=_[_0xd29a('0x2e')](_0xf29bb1['query']);_0xf874e6[_0xd29a('0x30')]=_[_0xd29a('0x31')](_0xf874e6[_0xd29a('0x2d')],_0xf874e6['query']);_0x3af2e4[_0xd29a('0x32')]=_['intersection'](_0xf874e6[_0xd29a('0x2d')],qs[_0xd29a('0x33')](_0xf29bb1[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x3af2e4['attributes']=_0x3af2e4['attributes'][_0xd29a('0x34')]?_0x3af2e4[_0xd29a('0x32')]:_0xf874e6['model'];if(_0xf29bb1[_0xd29a('0x2f')][_0xd29a('0x3e')]){_0x3af2e4[_0xd29a('0x3f')]=[{'all':!![]}];}_0x3af2e4=_[_0xd29a('0x3b')]({},_0x3af2e4,_0xf29bb1['options']);return db[_0xd29a('0x2b')][_0xd29a('0x46')](_0x3af2e4)['then'](handleEntityNotFound(_0x5ca2d4,null))[_0xd29a('0x23')](respondWithResult(_0x5ca2d4,null))[_0xd29a('0x42')](handleError(_0x5ca2d4,null));};exports[_0xd29a('0x47')]=function(_0x4e0b6a,_0x5cf448){return db['CmCompany'][_0xd29a('0x47')](_0x4e0b6a['body'],{})['then'](function(_0x501d6f){var _0x5ec194=_0x4e0b6a[_0xd29a('0x48')][_0xd29a('0x24')]({'plain':!![]});if(!_0x5ec194)throw new Error(_0xd29a('0x49'));if(_0x5ec194[_0xd29a('0x4a')]===_0xd29a('0x48')){var _0x4b5436=_0x501d6f[_0xd29a('0x24')]({'plain':!![]});var _0x1ccf4b=_0xd29a('0x4b');return db[_0xd29a('0x4c')][_0xd29a('0x46')]({'where':{'name':_0x1ccf4b,'userProfileId':_0x5ec194[_0xd29a('0x4d')]},'raw':!![]})['then'](function(_0x386d9c){if(_0x386d9c&&_0x386d9c[_0xd29a('0x4e')]===0x0){return db[_0xd29a('0x25')][_0xd29a('0x47')]({'name':_0x4b5436[_0xd29a('0x28')],'resourceId':_0x4b5436['id'],'type':_0x386d9c[_0xd29a('0x28')],'sectionId':_0x386d9c['id']},{})[_0xd29a('0x23')](function(){return _0x501d6f;});}else{return _0x501d6f;}})[_0xd29a('0x42')](function(_0x1a7ce5){logger[_0xd29a('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a7ce5);throw _0x1a7ce5;});}return _0x501d6f;})[_0xd29a('0x23')](respondWithResult(_0x5cf448,0xc9))[_0xd29a('0x42')](handleError(_0x5cf448,null));};exports[_0xd29a('0x22')]=function(_0x5b6778,_0x515be2){if(_0x5b6778['body']['id']){delete _0x5b6778[_0xd29a('0x4f')]['id'];}return db[_0xd29a('0x2b')][_0xd29a('0x46')]({'where':{'id':_0x5b6778[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x515be2,null))[_0xd29a('0x23')](saveUpdates(_0x5b6778['body'],null))[_0xd29a('0x23')](respondWithResult(_0x515be2,null))[_0xd29a('0x42')](handleError(_0x515be2,null));};exports[_0xd29a('0x26')]=function(_0x121647,_0x4b9781){return db['CmCompany'][_0xd29a('0x46')]({'where':{'id':_0x121647[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x4b9781,null))[_0xd29a('0x23')](removeEntity(_0x4b9781,null))[_0xd29a('0x42')](handleError(_0x4b9781,null));};exports[_0xd29a('0x2c')]=function(_0x551257,_0x4be922){return db[_0xd29a('0x2b')][_0xd29a('0x2c')]()[_0xd29a('0x23')](respondWithResult(_0x4be922,null))[_0xd29a('0x42')](handleError(_0x4be922,null));};exports[_0xd29a('0x50')]=function(_0x1338ea,_0x20338e,_0x568a1c){return db[_0xd29a('0x51')][_0xd29a('0x46')]({'where':{'id':_0x1338ea['params']['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x20338e,null))[_0xd29a('0x23')](function(_0x37c791){if(_0x37c791){return _0x37c791['addContacts'](_0x1338ea[_0xd29a('0x4f')][_0xd29a('0x52')],_[_0xd29a('0x53')](_0x1338ea[_0xd29a('0x4f')],[_0xd29a('0x52'),'id'])||{});}})['then'](respondWithResult(_0x20338e,null))[_0xd29a('0x42')](handleError(_0x20338e,null));};exports[_0xd29a('0x54')]=function(_0x1abb53,_0x554dff,_0xd7a5c9){var _0x309625={};var _0x2cc3d6={};var _0x5de3a5;var _0x2a71f3;return db[_0xd29a('0x2b')][_0xd29a('0x55')]({'where':{'id':_0x1abb53[_0xd29a('0x44')]['id']}})[_0xd29a('0x23')](handleEntityNotFound(_0x554dff,null))[_0xd29a('0x23')](function(_0x288754){if(_0x288754){_0x5de3a5=_0x288754;_0x2cc3d6['model']=_[_0xd29a('0x2e')](db[_0xd29a('0x51')]['rawAttributes']);_0x2cc3d6[_0xd29a('0x2f')]=_[_0xd29a('0x2e')](_0x1abb53['query']);_0x2cc3d6['filters']=_[_0xd29a('0x31')](_0x2cc3d6[_0xd29a('0x2d')],_0x2cc3d6['query']);_0x309625[_0xd29a('0x32')]=_[_0xd29a('0x31')](_0x2cc3d6[_0xd29a('0x2d')],qs[_0xd29a('0x33')](_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x33')]));_0x309625[_0xd29a('0x32')]=_0x309625[_0xd29a('0x32')][_0xd29a('0x34')]?_0x309625[_0xd29a('0x32')]:_0x2cc3d6['model'];_0x309625[_0xd29a('0x37')]=qs[_0xd29a('0x38')](_0x1abb53[_0xd29a('0x2f')]['sort']);_0x309625[_0xd29a('0x39')]=qs[_0xd29a('0x30')](_[_0xd29a('0x3a')](_0x1abb53['query'],_0x2cc3d6[_0xd29a('0x30')]));if(_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x3c')]){_0x309625[_0xd29a('0x39')]=_['merge'](_0x309625[_0xd29a('0x39')],{'$or':_[_0xd29a('0x56')](_0x309625[_0xd29a('0x32')],function(_0xec87ab){var _0x3e5eea={};_0x3e5eea[_0xec87ab]={'$like':'%'+_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x3c')]+'%'};return _0x3e5eea;})});}_0x309625=_[_0xd29a('0x3b')]({},_0x309625,_0x1abb53['options']);return _0x5de3a5[_0xd29a('0x54')](_0x309625);}})['then'](function(_0x4cec3e){if(_0x4cec3e){_0x2a71f3=_0x4cec3e[_0xd29a('0x34')];if(!_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x35')](_0xd29a('0x36'))){_0x309625[_0xd29a('0x1b')]=qs['limit'](_0x1abb53['query'][_0xd29a('0x1b')]);_0x309625[_0xd29a('0x1d')]=qs[_0xd29a('0x1d')](_0x1abb53[_0xd29a('0x2f')][_0xd29a('0x1d')]);}return _0x5de3a5[_0xd29a('0x54')](_0x309625);}})['then'](function(_0x1beba8){if(_0x1beba8){return _0x1beba8?{'count':_0x2a71f3,'rows':_0x1beba8}:null;}})[_0xd29a('0x23')](respondWithResult(_0x554dff,null))[_0xd29a('0x42')](handleError(_0x554dff,null));};
\ No newline at end of file
index 63d283e..2db0839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca73=['rimraf','../../config/environment','define','cm_companies','lodash','util','../../config/logger','bluebird','path'];(function(_0x1a7704,_0x3dfc0b){var _0x1dd7fb=function(_0x5669b1){while(--_0x5669b1){_0x1a7704['push'](_0x1a7704['shift']());}};_0x1dd7fb(++_0x3dfc0b);}(_0xca73,0x13f));var _0x3ca7=function(_0x10ad76,_0x4fc94a){_0x10ad76=_0x10ad76-0x0;var _0x1ced1a=_0xca73[_0x10ad76];return _0x1ced1a;};'use strict';var _=require(_0x3ca7('0x0'));var util=require(_0x3ca7('0x1'));var logger=require(_0x3ca7('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3ca7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3ca7('0x4'));var rimraf=require(_0x3ca7('0x5'));var config=require(_0x3ca7('0x6'));var attributes=require('./cmCompany.attributes');module['exports']=function(_0x47a87f,_0x599cee){return _0x47a87f[_0x3ca7('0x7')]('CmCompany',attributes,{'tableName':_0x3ca7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcab6=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmCompany.attributes','define','lodash','util','../../config/logger','api'];(function(_0x172cb6,_0x115722){var _0xfaf7e7=function(_0xf648f5){while(--_0xf648f5){_0x172cb6['push'](_0x172cb6['shift']());}};_0xfaf7e7(++_0x115722);}(_0xcab6,0x75));var _0x6cab=function(_0x2e6a12,_0x3ea10f){_0x2e6a12=_0x2e6a12-0x0;var _0x46459d=_0xcab6[_0x2e6a12];return _0x46459d;};'use strict';var _=require(_0x6cab('0x0'));var util=require(_0x6cab('0x1'));var logger=require(_0x6cab('0x2'))(_0x6cab('0x3'));var moment=require(_0x6cab('0x4'));var BPromise=require(_0x6cab('0x5'));var rp=require(_0x6cab('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6cab('0x7'));var config=require(_0x6cab('0x8'));var attributes=require(_0x6cab('0x9'));module['exports']=function(_0x4ab6aa,_0x1c1606){return _0x4ab6aa[_0x6cab('0xa')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 513a508..77e4877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4c=['jayson/promise','client','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x4ca2b7,_0x481f9f){var _0x2a1ac8=function(_0xb62870){while(--_0xb62870){_0x4ca2b7['push'](_0x4ca2b7['shift']());}};_0x2a1ac8(++_0x481f9f);}(_0xac4c,0x116));var _0xcac4=function(_0x1c4e79,_0x8a99d3){_0x1c4e79=_0x1c4e79-0x0;var _0x482012=_0xac4c[_0x1c4e79];return _0x482012;};'use strict';var _=require(_0xcac4('0x0'));var util=require(_0xcac4('0x1'));var moment=require('moment');var BPromise=require(_0xcac4('0x2'));var rs=require(_0xcac4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcac4('0x4'));var logger=require(_0xcac4('0x5'))(_0xcac4('0x6'));var config=require('../../config/environment');var jayson=require(_0xcac4('0x7'));var client=jayson[_0xcac4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14c5db,_0x3b0889,_0x2bf74f){return new BPromise(function(_0x56f8fb,_0x1cadcd){return client[_0xcac4('0x9')](_0x14c5db,_0x2bf74f)[_0xcac4('0xa')](function(_0x25049a){logger[_0xcac4('0xb')](_0xcac4('0xc'),_0x3b0889,_0xcac4('0xd'));logger[_0xcac4('0xe')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x3b0889,'request\x20sent',JSON[_0xcac4('0xf')](_0x25049a));if(_0x25049a[_0xcac4('0x10')]){if(_0x25049a[_0xcac4('0x10')]['code']===0x1f4){logger[_0xcac4('0x10')](_0xcac4('0xc'),_0x3b0889,_0x25049a['error'][_0xcac4('0x11')]);return _0x1cadcd(_0x25049a[_0xcac4('0x10')][_0xcac4('0x11')]);}logger['error']('CmCompany,\x20%s,\x20%s',_0x3b0889,_0x25049a[_0xcac4('0x10')][_0xcac4('0x11')]);return _0x56f8fb(_0x25049a['error']['message']);}else{logger[_0xcac4('0xb')](_0xcac4('0xc'),_0x3b0889,'request\x20sent');_0x56f8fb(_0x25049a['result'][_0xcac4('0x11')]);}})[_0xcac4('0x12')](function(_0x4b8daf){logger[_0xcac4('0x10')](_0xcac4('0xc'),_0x3b0889,_0x4b8daf);_0x1cadcd(_0x4b8daf);});});}
\ No newline at end of file
+var _0x45bb=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment'];(function(_0x115621,_0x341cde){var _0x5ef5ce=function(_0x2ca3f2){while(--_0x2ca3f2){_0x115621['push'](_0x115621['shift']());}};_0x5ef5ce(++_0x341cde);}(_0x45bb,0x87));var _0xb45b=function(_0x294921,_0x45293e){_0x294921=_0x294921-0x0;var _0x10666e=_0x45bb[_0x294921];return _0x10666e;};'use strict';var _=require(_0xb45b('0x0'));var util=require(_0xb45b('0x1'));var moment=require(_0xb45b('0x2'));var BPromise=require(_0xb45b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb45b('0x4'))['db'];var utils=require(_0xb45b('0x5'));var logger=require(_0xb45b('0x6'))(_0xb45b('0x7'));var config=require(_0xb45b('0x8'));var jayson=require(_0xb45b('0x9'));var client=jayson[_0xb45b('0xa')][_0xb45b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28a522,_0x4a81d4,_0x574e23){return new BPromise(function(_0x252e45,_0x217d84){return client[_0xb45b('0xc')](_0x28a522,_0x574e23)['then'](function(_0x4988ea){logger[_0xb45b('0xd')](_0xb45b('0xe'),_0x4a81d4,_0xb45b('0xf'));logger[_0xb45b('0x10')](_0xb45b('0x11'),_0x4a81d4,_0xb45b('0xf'),JSON[_0xb45b('0x12')](_0x4988ea));if(_0x4988ea[_0xb45b('0x13')]){if(_0x4988ea[_0xb45b('0x13')][_0xb45b('0x14')]===0x1f4){logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x4988ea[_0xb45b('0x13')]['message']);return _0x217d84(_0x4988ea[_0xb45b('0x13')]['message']);}logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x4988ea['error'][_0xb45b('0x15')]);return _0x252e45(_0x4988ea[_0xb45b('0x13')][_0xb45b('0x15')]);}else{logger['info']('CmCompany,\x20%s,\x20%s',_0x4a81d4,_0xb45b('0xf'));_0x252e45(_0x4988ea[_0xb45b('0x16')][_0xb45b('0x15')]);}})['catch'](function(_0x2cac89){logger[_0xb45b('0x13')](_0xb45b('0xe'),_0x4a81d4,_0x2cac89);_0x217d84(_0x2cac89);});});}
\ No newline at end of file
index 213b9e1..b24287e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f83=['isAuthenticated','show','/:id/contacts','post','create','addContacts','put','/:id','update','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','index','/describe','describe'];(function(_0x46a671,_0x758e9a){var _0x526d75=function(_0xde3640){while(--_0xde3640){_0x46a671['push'](_0x46a671['shift']());}};_0x526d75(++_0x758e9a);}(_0x8f83,0x13e));var _0x38f8=function(_0x7c9fbc,_0x54af74){_0x7c9fbc=_0x7c9fbc-0x0;var _0xb7d0f9=_0x8f83[_0x7c9fbc];return _0xb7d0f9;};'use strict';var multer=require(_0x38f8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x38f8('0x1'));var express=require(_0x38f8('0x2'));var router=express[_0x38f8('0x3')]();var fs_extra=require(_0x38f8('0x4'));var auth=require(_0x38f8('0x5'));var interaction=require(_0x38f8('0x6'));var config=require('../../config/environment');var controller=require(_0x38f8('0x7'));router[_0x38f8('0x8')]('/',auth['isAuthenticated'](),controller[_0x38f8('0x9')]);router[_0x38f8('0x8')](_0x38f8('0xa'),auth['isAuthenticated'](),controller[_0x38f8('0xb')]);router['get']('/:id',auth[_0x38f8('0xc')](),controller[_0x38f8('0xd')]);router[_0x38f8('0x8')](_0x38f8('0xe'),auth[_0x38f8('0xc')](),controller['getContacts']);router[_0x38f8('0xf')]('/',auth[_0x38f8('0xc')](),controller[_0x38f8('0x10')]);router[_0x38f8('0xf')]('/:id/contacts',auth[_0x38f8('0xc')](),controller[_0x38f8('0x11')]);router[_0x38f8('0x12')](_0x38f8('0x13'),auth[_0x38f8('0xc')](),controller[_0x38f8('0x14')]);router['delete'](_0x38f8('0x13'),auth['isAuthenticated'](),controller[_0x38f8('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x00a6=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x1effc9,_0x4496d1){var _0x1cb7e5=function(_0x57ab6c){while(--_0x57ab6c){_0x1effc9['push'](_0x1effc9['shift']());}};_0x1cb7e5(++_0x4496d1);}(_0x00a6,0x85));var _0x600a=function(_0x552fb3,_0x4e096f){_0x552fb3=_0x552fb3-0x0;var _0x4a5588=_0x00a6[_0x552fb3];return _0x4a5588;};'use strict';var multer=require(_0x600a('0x0'));var util=require('util');var path=require(_0x600a('0x1'));var timeout=require(_0x600a('0x2'));var express=require(_0x600a('0x3'));var router=express['Router']();var fs_extra=require(_0x600a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x600a('0x5'));var config=require(_0x600a('0x6'));var controller=require('./cmCompany.controller');router[_0x600a('0x7')]('/',auth[_0x600a('0x8')](),controller[_0x600a('0x9')]);router[_0x600a('0x7')](_0x600a('0xa'),auth[_0x600a('0x8')](),controller[_0x600a('0xb')]);router[_0x600a('0x7')](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0xd')]);router[_0x600a('0x7')](_0x600a('0xe'),auth[_0x600a('0x8')](),controller[_0x600a('0xf')]);router[_0x600a('0x10')]('/',auth['isAuthenticated'](),controller[_0x600a('0x11')]);router['post'](_0x600a('0xe'),auth[_0x600a('0x8')](),controller[_0x600a('0x12')]);router[_0x600a('0x13')](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0x14')]);router['delete'](_0x600a('0xc'),auth[_0x600a('0x8')](),controller[_0x600a('0x15')]);module[_0x600a('0x16')]=router;
\ No newline at end of file
index f7c6365..d8d3873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f89=['lodash','sequelize','STRING','INTEGER','UNSIGNED','DATE'];(function(_0x5d99f7,_0x585e64){var _0x1f55c6=function(_0x29ef7c){while(--_0x29ef7c){_0x5d99f7['push'](_0x5d99f7['shift']());}};_0x1f55c6(++_0x585e64);}(_0x6f89,0x198));var _0x96f8=function(_0x237817,_0xe125ce){_0x237817=_0x237817-0x0;var _0x55bca0=_0x6f89[_0x237817];return _0x55bca0;};'use strict';var _=require(_0x96f8('0x0'));var Sequelize=require(_0x96f8('0x1'));module['exports']={'firstName':{'type':Sequelize[_0x96f8('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x96f8('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x96f8('0x2')]},'city':{'type':Sequelize[_0x96f8('0x2')]},'country':{'type':Sequelize[_0x96f8('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x96f8('0x2')]},'fax':{'type':Sequelize[_0x96f8('0x2')]},'email':{'type':Sequelize[_0x96f8('0x2')]},'url':{'type':Sequelize[_0x96f8('0x2')]},'facebook':{'type':Sequelize[_0x96f8('0x2')]},'fb_data':{'type':Sequelize[_0x96f8('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x96f8('0x2')]},'teams':{'type':Sequelize[_0x96f8('0x2')]},'viber':{'type':Sequelize[_0x96f8('0x2')]},'line':{'type':Sequelize[_0x96f8('0x2')]},'wechat':{'type':Sequelize[_0x96f8('0x2')]},'telegram':{'type':Sequelize[_0x96f8('0x2')]},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0x96f8('0x2')]},'priority':{'type':Sequelize[_0x96f8('0x3')](0x2)[_0x96f8('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x96f8('0x5')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x96f8('0x2')]},'utcOffset':{'type':Sequelize[_0x96f8('0x3')]}};
\ No newline at end of file
+var _0x9e78=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','lodash'];(function(_0x55d586,_0x3e712c){var _0x3a8600=function(_0x6ee2ea){while(--_0x6ee2ea){_0x55d586['push'](_0x55d586['shift']());}};_0x3a8600(++_0x3e712c);}(_0x9e78,0x1cd));var _0x89e7=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x9e78[_0x133277];return _0x5b4a22;};'use strict';var _=require(_0x89e7('0x0'));var Sequelize=require('sequelize');module[_0x89e7('0x1')]={'firstName':{'type':Sequelize[_0x89e7('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x89e7('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x89e7('0x2')]},'country':{'type':Sequelize[_0x89e7('0x2')]},'dateOfBirth':{'type':Sequelize[_0x89e7('0x2')]},'description':{'type':Sequelize[_0x89e7('0x3')]},'phone':{'type':Sequelize[_0x89e7('0x2')]},'mobile':{'type':Sequelize[_0x89e7('0x2')]},'fax':{'type':Sequelize[_0x89e7('0x2')]},'email':{'type':Sequelize[_0x89e7('0x2')]},'url':{'type':Sequelize[_0x89e7('0x2')]},'facebook':{'type':Sequelize[_0x89e7('0x2')]},'fb_data':{'type':Sequelize[_0x89e7('0x2')]},'twitter':{'type':Sequelize[_0x89e7('0x2')]},'skype':{'type':Sequelize[_0x89e7('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x89e7('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x89e7('0x2')]},'UserId':{'type':Sequelize[_0x89e7('0x4')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x89e7('0x4')](0x2)[_0x89e7('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x89e7('0x6')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x89e7('0x2')]},'utcOffset':{'type':Sequelize[_0x89e7('0x4')]}};
\ No newline at end of file
index a73fbc2..334bd13 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(_0x2ef44b,_0x553359){var _0x2405b9=function(_0x278290){while(--_0x278290){_0x2ef44b['push'](_0x2ef44b['shift']());}};_0x2405b9(++_0x553359);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 e026531..1676f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c90=['save','update','hook','exports','CmContact'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x0c90,0xef));var _0x00c9=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x0c90[_0x2be8c2];return _0x97f531;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0x00c9('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x00c9('0x1'),'afterUpdate':_0x00c9('0x2'),'afterDestroy':'remove'};function emitEvent(_0x2125a5){return function(_0x2c1f61,_0x3c74ee,_0x19d8ab){CmContactEvents['emit'](_0x2125a5+':'+_0x2c1f61['id'],_0x2c1f61);CmContactEvents['emit'](_0x2125a5,_0x2c1f61);_0x19d8ab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x00c9('0x3')](e,emitEvent(event));}}module[_0x00c9('0x4')]=CmContactEvents;
\ No newline at end of file
+var _0xd61e=['remove','emit','hook','exports','CmContact','setMaxListeners','save','update'];(function(_0x4604ad,_0x2c516e){var _0x3ed8ef=function(_0x2cb13e){while(--_0x2cb13e){_0x4604ad['push'](_0x4604ad['shift']());}};_0x3ed8ef(++_0x2c516e);}(_0xd61e,0x1a4));var _0xed61=function(_0x2fb58f,_0x4d8f90){_0x2fb58f=_0x2fb58f-0x0;var _0x30f062=_0xd61e[_0x2fb58f];return _0x30f062;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0xed61('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xed61('0x1')](0x0);var events={'afterCreate':_0xed61('0x2'),'afterUpdate':_0xed61('0x3'),'afterDestroy':_0xed61('0x4')};function emitEvent(_0x29796d){return function(_0x3ad9dd,_0x4c6400,_0x2d90df){CmContactEvents['emit'](_0x29796d+':'+_0x3ad9dd['id'],_0x3ad9dd);CmContactEvents[_0xed61('0x5')](_0x29796d,_0x3ad9dd);_0x2d90df(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xed61('0x6')](e,emitEvent(event));}}module[_0xed61('0x7')]=CmContactEvents;
\ No newline at end of file
index eb29282..909bbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cbc=['\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','get','always','onlyIfOpen','outbound','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','List\x20not\x20found','isEmpty','ContactId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','path','rimraf','../../config/environment','../../config/environment/shared','exports','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','minutes','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','CmHopperFinal','cmContact,\x20afterCreate,\x20','afterCreate','Campaign','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'];(function(_0x29b4d5,_0x5b94c7){var _0x241d61=function(_0x127991){while(--_0x127991){_0x29b4d5['push'](_0x29b4d5['shift']());}};_0x241d61(++_0x5b94c7);}(_0x7cbc,0x1bb));var _0xc7cb=function(_0x13a277,_0x2cacdc){_0x13a277=_0x13a277-0x0;var _0x26fa67=_0x7cbc[_0x13a277];return _0x26fa67;};'use strict';var _=require('lodash');var util=require(_0xc7cb('0x0'));var logger=require(_0xc7cb('0x1'))(_0xc7cb('0x2'));var moment=require(_0xc7cb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc7cb('0x4'));var rimraf=require(_0xc7cb('0x5'));var config=require(_0xc7cb('0x6'));var shared=require(_0xc7cb('0x7'));var attributes=require('./cmContact.attributes');module[_0xc7cb('0x8')]=function(_0x3095a6,_0x4be567){return _0x3095a6['define'](_0xc7cb('0x9'),attributes,{'tableName':_0xc7cb('0xa'),'paranoid':!![],'indexes':[{'name':_0xc7cb('0xb'),'fields':[_0xc7cb('0xb')]},{'name':_0xc7cb('0xc'),'fields':[_0xc7cb('0xd'),'lastName',_0xc7cb('0xb'),'mobile',_0xc7cb('0xe'),_0xc7cb('0xf')],'type':_0xc7cb('0x10')}],'timestamps':!![],'charset':_0xc7cb('0x11'),'collate':_0xc7cb('0x12'),'hooks':{'afterCreate':function(_0x15f982,_0x52fd74,_0x35f762){var _0x44a305=_0x3095a6[_0xc7cb('0x13')];var _0x259690=_0x15f982['get']({'plain':!![]});function _0x201227(){return function(_0x2975bb){logger[_0xc7cb('0x14')]('cmContact','afterCreate',util[_0xc7cb('0x15')](_0x2975bb,{'showHidden':![],'depth':null}));};}function _0x2a4f29(_0x1a2366,_0x1f9ba8){var _0x32b4fb=_0x1f9ba8[_0xc7cb('0x16')]?_0x1f9ba8['scheduledat']:moment()[_0xc7cb('0x17')](_0xc7cb('0x18'));return new BPromise(function(_0x597571,_0x4f0534){if(_[_0xc7cb('0x19')](_0x1f9ba8[_0xc7cb('0x1a')])){_0x597571({'ret':_0x32b4fb});}else{_0x44a305[_0xc7cb('0x1b')][_0xc7cb('0x1c')]({'where':{'id':_0x1a2366['id']}})[_0xc7cb('0x1d')](function(_0xb4489b){if(!_[_0xc7cb('0x19')](_0xb4489b)){var _0x21639b=_0xb4489b['dialTimezone'];if(!_[_0xc7cb('0x19')](_0x21639b)){var _0x47cd87=shared['timezones'];var _0x886f69=_0x47cd87[_0x21639b];var _0xddfe3b=_0x47cd87[_0x1f9ba8[_0xc7cb('0x1a')]];if(!_[_0xc7cb('0x19')](_0x886f69)&&!_[_0xc7cb('0x19')](_0xddfe3b)){var _0x4951f5=_0x886f69['utcOffset']-_0xddfe3b[_0xc7cb('0x1e')];_0x32b4fb=_0x1f9ba8[_0xc7cb('0x16')]?_0x1f9ba8[_0xc7cb('0x16')]:moment();var _0x5e2662=moment(_0x32b4fb)[_0xc7cb('0x1f')](_0x4951f5,_0xc7cb('0x20'));_0x597571({'ret':_0x5e2662[_0xc7cb('0x17')](_0xc7cb('0x18'))});}else _0x597571({'ret':_0x32b4fb});}else _0x597571({'ret':_0x32b4fb});}else{_0x597571({'ret':_0x32b4fb});}});}});return 0xa;}var _0x592db5=function(_0x526142){return new BPromise(function(_0x19209a,_0x26e449){_0x2a4f29(_0x526142,_0x259690)['then'](function(_0x4ab8d9){_0x259690[_0xc7cb('0x16')]=_0x4ab8d9[_0xc7cb('0x21')];_0x44a305[_0xc7cb('0x22')][_0xc7cb('0x1c')]({'where':{'phone':_0x259690[_0xc7cb('0xb')],'VoiceQueueId':_0x526142['id']}})[_0xc7cb('0x1d')](function(_0x574ff8){if(!_[_0xc7cb('0x19')](_0x574ff8)){throw new Error(_0xc7cb('0x23')+_0x259690[_0xc7cb('0xb')]+_0xc7cb('0x24')+_0x526142['id']);}return _0x44a305[_0xc7cb('0x22')][_0xc7cb('0x25')]({'phone':_0x259690['phone'],'ContactId':_0x259690['id'],'ListId':_0x259690[_0xc7cb('0x26')],'priority':_0x259690[_0xc7cb('0x27')]?_0x259690[_0xc7cb('0x27')]:0x2,'scheduledat':_0x259690['scheduledat']?_0x259690[_0xc7cb('0x16')]:moment()['format'](_0xc7cb('0x18')),'callback':_0x259690[_0xc7cb('0x28')]?!![]:![],'callbackuniqueid':_0x259690[_0xc7cb('0x28')]?_0x259690[_0xc7cb('0x28')]:undefined,'callbackat':_0x259690[_0xc7cb('0x28')]?moment()[_0xc7cb('0x17')](_0xc7cb('0x18')):undefined,'VoiceQueueId':_0x526142['id']});})[_0xc7cb('0x29')](function(_0x78942f){_0x26e449(_0x78942f);});});});};var _0x3ea923=function(_0x338744){return new BPromise(function(_0x50e102,_0x56fe5d){_0x2a4f29(_0x338744,_0x259690)[_0xc7cb('0x1d')](function(_0x9d843c){_0x259690[_0xc7cb('0x16')]=_0x9d843c[_0xc7cb('0x21')];_0x44a305[_0xc7cb('0x22')][_0xc7cb('0x1c')]({'where':{'phone':_0x259690['phone'],'VoiceQueueId':_0x338744['id']}})['then'](function(_0x562941){if(!_[_0xc7cb('0x19')](_0x562941)){throw new Error(_0xc7cb('0x23')+_0x259690[_0xc7cb('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x338744['id']);}return _0x44a305[_0xc7cb('0x2a')][_0xc7cb('0x1c')]({'where':{'calleridnum':_0x259690[_0xc7cb('0xb')],'VoiceQueueId':_0x338744['id']}});})[_0xc7cb('0x1d')](function(_0x45b4d8){if(!_['isNil'](_0x45b4d8)){throw new Error(_0xc7cb('0x2b')+_0x259690[_0xc7cb('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x338744['id']);}return _0x44a305[_0xc7cb('0x22')][_0xc7cb('0x25')]({'phone':_0x259690[_0xc7cb('0xb')],'ContactId':_0x259690['id'],'ListId':_0x259690[_0xc7cb('0x26')],'priority':_0x259690[_0xc7cb('0x27')]?_0x259690['priority']:0x2,'scheduledat':_0x259690[_0xc7cb('0x16')]?_0x259690[_0xc7cb('0x16')]:moment()[_0xc7cb('0x17')](_0xc7cb('0x18')),'callback':_0x259690[_0xc7cb('0x28')]?!![]:![],'callbackuniqueid':_0x259690[_0xc7cb('0x28')]?_0x259690['callbackUniqueid']:undefined,'callbackat':_0x259690[_0xc7cb('0x28')]?moment()[_0xc7cb('0x17')](_0xc7cb('0x18')):undefined,'VoiceQueueId':_0x338744['id']});})[_0xc7cb('0x29')](function(_0x3b8e22){_0x56fe5d(_0x3b8e22);});});});};function _0x22137b(){return function(_0x604ffc){logger['error']('cmContact',_0xc7cb('0x2c'),util[_0xc7cb('0x15')](_0x604ffc,{'showHidden':![],'depth':null}));};}function _0x2ff985(_0x4ced26,_0x531607){var _0x299d46=_0x531607['scheduledat']?_0x531607[_0xc7cb('0x16')]:moment()[_0xc7cb('0x17')](_0xc7cb('0x18'));return new BPromise(function(_0x36f93f,_0x540ff0){if(_[_0xc7cb('0x19')](_0x531607[_0xc7cb('0x1a')])){_0x36f93f({'ret':_0x299d46});}else{_0x44a305[_0xc7cb('0x2d')][_0xc7cb('0x1c')]({'where':{'id':_0x4ced26['id']}})[_0xc7cb('0x1d')](function(_0x444022){if(!_[_0xc7cb('0x19')](_0x444022)){var _0xee262d=_0x444022[_0xc7cb('0x1a')];if(!_[_0xc7cb('0x19')](_0xee262d)){var _0x4ad0d8=shared['timezones'];var _0x161591=_0x4ad0d8[_0xee262d];var _0x437c3e=_0x4ad0d8[_0x531607[_0xc7cb('0x1a')]];if(!_[_0xc7cb('0x19')](_0x161591)&&!_[_0xc7cb('0x19')](_0x437c3e)){var _0x4cb57e=_0x161591['utcOffset']-_0x437c3e[_0xc7cb('0x1e')];_0x299d46=_0x531607[_0xc7cb('0x16')]?_0x531607[_0xc7cb('0x16')]:moment();var _0x18e312=moment(_0x299d46)[_0xc7cb('0x1f')](_0x4cb57e,_0xc7cb('0x20'));_0x36f93f({'ret':_0x18e312[_0xc7cb('0x17')](_0xc7cb('0x18'))});}else _0x36f93f({'ret':_0x299d46});}else _0x36f93f({'ret':_0x299d46});}else{_0x36f93f({'ret':_0x299d46});}});}});return 0xa;}var _0x1c6c1e=function(_0x52a86c){return new BPromise(function(_0x402da4,_0x774dc5){_0x2ff985(_0x52a86c,_0x259690)[_0xc7cb('0x1d')](function(_0x492eaf){_0x259690['scheduledat']=_0x492eaf[_0xc7cb('0x21')];_0x44a305[_0xc7cb('0x22')][_0xc7cb('0x1c')]({'where':{'phone':_0x259690[_0xc7cb('0xb')],'CampaignId':_0x52a86c['id']}})['then'](function(_0x8c7391){if(!_[_0xc7cb('0x19')](_0x8c7391)){throw new Error('cmContact,\x20afterCreate\x20'+_0x259690[_0xc7cb('0xb')]+_0xc7cb('0x2e')+_0x52a86c['id']);}return _0x44a305[_0xc7cb('0x22')][_0xc7cb('0x25')]({'phone':_0x259690[_0xc7cb('0xb')],'ContactId':_0x259690['id'],'ListId':_0x259690[_0xc7cb('0x26')],'priority':_0x259690[_0xc7cb('0x27')]?_0x259690[_0xc7cb('0x27')]:0x2,'scheduledat':_0x259690[_0xc7cb('0x16')]?_0x259690[_0xc7cb('0x16')]:moment()[_0xc7cb('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x259690[_0xc7cb('0x28')]?!![]:![],'callbackuniqueid':_0x259690[_0xc7cb('0x28')]?_0x259690[_0xc7cb('0x28')]:undefined,'callbackat':_0x259690[_0xc7cb('0x28')]?moment()[_0xc7cb('0x17')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x52a86c['id']});})['catch'](function(_0x23abd9){_0x774dc5(_0x23abd9);});});});};var _0x34b454=function(_0x4bb5bb){return new BPromise(function(_0x58ab02,_0x6612e){_0x2ff985(_0x4bb5bb,_0x259690)[_0xc7cb('0x1d')](function(_0x2a6210){_0x259690[_0xc7cb('0x16')]=_0x2a6210[_0xc7cb('0x21')];_0x44a305[_0xc7cb('0x22')][_0xc7cb('0x1c')]({'where':{'phone':_0x259690[_0xc7cb('0xb')],'CampaignId':_0x4bb5bb['id']}})[_0xc7cb('0x1d')](function(_0x250c03){if(!_[_0xc7cb('0x19')](_0x250c03)){throw new Error(_0xc7cb('0x23')+_0x259690[_0xc7cb('0xb')]+_0xc7cb('0x2f')+_0x4bb5bb['id']);}return _0x44a305[_0xc7cb('0x2a')][_0xc7cb('0x1c')]({'where':{'calleridnum':_0x259690[_0xc7cb('0xb')],'CampaignId':_0x4bb5bb['id']}});})[_0xc7cb('0x1d')](function(_0x2c881f){if(!_[_0xc7cb('0x19')](_0x2c881f)){throw new Error(_0xc7cb('0x2b')+_0x259690[_0xc7cb('0xb')]+_0xc7cb('0x30')+_0x4bb5bb['id']);}return _0x44a305[_0xc7cb('0x22')]['create']({'phone':_0x259690['phone'],'ContactId':_0x259690['id'],'ListId':_0x259690['ListId'],'priority':_0x259690[_0xc7cb('0x27')]?_0x259690[_0xc7cb('0x27')]:0x2,'scheduledat':_0x259690[_0xc7cb('0x16')]?_0x259690[_0xc7cb('0x16')]:moment()[_0xc7cb('0x17')](_0xc7cb('0x18')),'callback':_0x259690[_0xc7cb('0x28')]?!![]:![],'callbackuniqueid':_0x259690[_0xc7cb('0x28')]?_0x259690[_0xc7cb('0x28')]:undefined,'callbackat':_0x259690[_0xc7cb('0x28')]?moment()[_0xc7cb('0x17')](_0xc7cb('0x18')):undefined,'CampaignId':_0x4bb5bb['id']});})[_0xc7cb('0x29')](function(_0x341dac){_0x6612e(_0x341dac);});});});};if(_0x259690[_0xc7cb('0x26')]){_0x44a305[_0xc7cb('0x1b')][_0xc7cb('0x31')]({'where':{'type':'outbound'},'attributes':['id',_0xc7cb('0x32'),_0xc7cb('0x1a')],'include':[{'model':_0x44a305[_0xc7cb('0x33')],'as':_0xc7cb('0x34'),'where':{'id':_0x259690['ListId']}}]})[_0xc7cb('0x1d')](function(_0x48ca50){if(_0x48ca50){var _0x3fd951=[];for(var _0x1a48c3=0x0,_0x3fc3cf;_0x1a48c3<_0x48ca50[_0xc7cb('0x35')];_0x1a48c3+=0x1){_0x3fc3cf=_0x48ca50[_0x1a48c3][_0xc7cb('0x36')]({'plain':!![]});switch(_0x3fc3cf[_0xc7cb('0x32')]){case _0xc7cb('0x37'):_0x3ea923(_0x3fc3cf)[_0xc7cb('0x29')](_0x201227());break;case _0xc7cb('0x38'):_0x592db5(_0x3fc3cf)['catch'](_0x201227());break;default:_0x2ff985(_0x3fc3cf,_0x259690)[_0xc7cb('0x1d')](function(_0x41238f){_0x259690[_0xc7cb('0x16')]=_0x41238f[_0xc7cb('0x21')];_0x44a305[_0xc7cb('0x22')]['create']({'phone':_0x259690[_0xc7cb('0xb')],'ContactId':_0x259690['id'],'ListId':_0x259690['ListId'],'scheduledat':_0x259690[_0xc7cb('0x16')]?_0x259690[_0xc7cb('0x16')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x259690['priority']?_0x259690['priority']:0x2,'callback':_0x259690['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x259690[_0xc7cb('0x28')]?_0x259690[_0xc7cb('0x28')]:undefined,'callbackat':_0x259690['callbackUniqueid']?moment()[_0xc7cb('0x17')](_0xc7cb('0x18')):undefined,'VoiceQueueId':_0x3fc3cf['id']})[_0xc7cb('0x29')](_0x201227());});}}}})[_0xc7cb('0x1d')](function(){return _0x44a305[_0xc7cb('0x1b')][_0xc7cb('0x31')]({'where':{'type':_0xc7cb('0x39')},'attributes':['id'],'include':[{'model':_0x44a305['CmList'],'as':_0xc7cb('0x3a'),'where':{'id':_0x259690['ListId']}}]})['then'](function(_0x5bcb5f){if(_0x5bcb5f){var _0x2f374d=[];for(var _0x3d3ac1=0x0,_0xf0c174;_0x3d3ac1<_0x5bcb5f['length'];_0x3d3ac1+=0x1){_0xf0c174=_0x5bcb5f[_0x3d3ac1][_0xc7cb('0x36')]({'plain':!![]});_0x44a305[_0xc7cb('0x3b')][_0xc7cb('0x25')]({'phone':_0x259690[_0xc7cb('0xb')],'ContactId':_0x259690['id'],'ListId':_0x259690['ListId'],'VoiceQueueId':_0xf0c174['id']})[_0xc7cb('0x29')](function(_0xe9ddc7){logger['error'](_0xc7cb('0x3c'),_0xc7cb('0x2c'),_0xe9ddc7['message']);});}}});})[_0xc7cb('0x1d')](function(){return _0x44a305['Campaign'][_0xc7cb('0x31')]({'attributes':['id',_0xc7cb('0x32'),_0xc7cb('0x1a')],'include':[{'model':_0x44a305['CmList'],'as':'Lists','where':{'id':_0x259690[_0xc7cb('0x26')]}}]})[_0xc7cb('0x1d')](function(_0xb7bb7){if(_0xb7bb7){var _0x59e4f3=[];for(var _0x2ee8ba=0x0,_0x232b05;_0x2ee8ba<_0xb7bb7[_0xc7cb('0x35')];_0x2ee8ba+=0x1){_0x232b05=_0xb7bb7[_0x2ee8ba][_0xc7cb('0x36')]({'plain':!![]});switch(_0x232b05[_0xc7cb('0x32')]){case _0xc7cb('0x37'):_0x34b454(_0x232b05)[_0xc7cb('0x29')](_0x22137b());break;case _0xc7cb('0x38'):_0x1c6c1e(_0x232b05)[_0xc7cb('0x29')](_0x22137b());break;default:_0x44a305[_0xc7cb('0x22')][_0xc7cb('0x25')]({'phone':_0x259690[_0xc7cb('0xb')],'ContactId':_0x259690['id'],'ListId':_0x259690[_0xc7cb('0x26')],'scheduledat':_0x259690[_0xc7cb('0x16')]?_0x259690[_0xc7cb('0x16')]:moment()['format'](_0xc7cb('0x18')),'priority':_0x259690['priority']?_0x259690[_0xc7cb('0x27')]:0x2,'callback':_0x259690[_0xc7cb('0x28')]?!![]:![],'callbackuniqueid':_0x259690['callbackUniqueid']?_0x259690['callbackUniqueid']:undefined,'callbackat':_0x259690[_0xc7cb('0x28')]?moment()[_0xc7cb('0x17')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x232b05['id']})[_0xc7cb('0x29')](_0x22137b());}}}});})[_0xc7cb('0x1d')](function(){return _0x44a305['Campaign'][_0xc7cb('0x31')]({'attributes':['id'],'include':[{'model':_0x44a305[_0xc7cb('0x33')],'as':_0xc7cb('0x3a'),'where':{'id':_0x259690[_0xc7cb('0x26')]}}]})[_0xc7cb('0x1d')](function(_0x266f5c){if(_0x266f5c){var _0x5b8edb=[];for(var _0x11e0b2=0x0,_0x1c50cf;_0x11e0b2<_0x266f5c[_0xc7cb('0x35')];_0x11e0b2+=0x1){_0x1c50cf=_0x266f5c[_0x11e0b2]['get']({'plain':!![]});_0x44a305[_0xc7cb('0x3b')][_0xc7cb('0x25')]({'phone':_0x259690['phone'],'ContactId':_0x259690['id'],'ListId':_0x259690[_0xc7cb('0x26')],'CampaignId':_0x1c50cf['id']})[_0xc7cb('0x29')](function(_0x5a2715){logger[_0xc7cb('0x14')]('cmContact,\x20%s,\x20%s',_0xc7cb('0x2c'),_0x5a2715['message']);});}}});})[_0xc7cb('0x1d')](function(){_0x35f762();})['catch'](function(_0x4fe4a1){logger[_0xc7cb('0x14')]('cmContact,\x20%s,\x20%s','afterCreate',_0x4fe4a1[_0xc7cb('0x3d')]);_0x35f762(_0x4fe4a1);});}else{_0x35f762(new Error(_0xc7cb('0x3e')));}},'afterDestroy':function(_0x5be340,_0x39dd70,_0x38d1c8){var _0x1f1228=_0x3095a6[_0xc7cb('0x13')];var _0x3bdddf=_0x5be340[_0xc7cb('0x36')]({'plain':!![]});return _0x1f1228['CmHopper'][_0xc7cb('0x31')]({'raw':!![],'where':{'ListId':_0x3bdddf['ListId'],'ContactId':_0x3bdddf['id']}})[_0xc7cb('0x1d')](function(_0x49c9f0){if(!_[_0xc7cb('0x3f')](_0x49c9f0)){var _0x631d1c=[];for(var _0x1a3f46=0x0;_0x1a3f46<_0x49c9f0[_0xc7cb('0x35')];_0x1a3f46+=0x1){var _0x4b6344=_0x1f1228[_0xc7cb('0x22')]['destroy']({'where':{'ListId':_0x49c9f0[_0x1a3f46]['ListId'],'ContactId':_0x49c9f0[_0x1a3f46][_0xc7cb('0x40')],'VoiceQueueId':_0x49c9f0[_0x1a3f46]['VoiceQueueId'],'CampaignId':_0x49c9f0[_0x1a3f46][_0xc7cb('0x41')]}});_0x631d1c[_0xc7cb('0x42')](_0x4b6344);}return BPromise[_0xc7cb('0x43')](_0x631d1c);}})['then'](function(_0x37c500){logger[_0xc7cb('0x44')]('[CmContact][afterDestroy][Succesfull]',util[_0xc7cb('0x15')](_0x37c500,{'showHidden':![],'depth':null}));_0x38d1c8();})[_0xc7cb('0x29')](function(_0xd0841f){logger[_0xc7cb('0x14')](_0xc7cb('0x45'),util[_0xc7cb('0x15')](_0xd0841f,{'showHidden':![],'depth':null}));_0x38d1c8(_0xd0841f);});}}});};
\ No newline at end of file
+var _0xc197=['onlyIfOpen','findAll','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Lists','isEmpty','destroy','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','minutes','format','cmContact,\x20afterCreate\x20','create','ListId','priority','callbackUniqueid','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','CmHopper','error','afterCreate','Campaign','catch','\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','outbound','dialCheckDuplicateType','CmList','always'];(function(_0xc03c42,_0x242c56){var _0x11b9e7=function(_0x243fb0){while(--_0x243fb0){_0xc03c42['push'](_0xc03c42['shift']());}};_0x11b9e7(++_0x242c56);}(_0xc197,0x1c1));var _0x7c19=function(_0x310781,_0x5bfe0b){_0x310781=_0x310781-0x0;var _0x23a7a6=_0xc197[_0x310781];return _0x23a7a6;};'use strict';var _=require('lodash');var util=require(_0x7c19('0x0'));var logger=require(_0x7c19('0x1'))('api');var moment=require(_0x7c19('0x2'));var BPromise=require('bluebird');var rp=require(_0x7c19('0x3'));var fs=require('fs');var path=require(_0x7c19('0x4'));var rimraf=require(_0x7c19('0x5'));var config=require('../../config/environment');var shared=require(_0x7c19('0x6'));var attributes=require(_0x7c19('0x7'));module[_0x7c19('0x8')]=function(_0x588ff1,_0x8ee623){return _0x588ff1[_0x7c19('0x9')](_0x7c19('0xa'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x7c19('0xb'),'fields':['phone']},{'name':_0x7c19('0xc'),'fields':[_0x7c19('0xd'),_0x7c19('0xe'),_0x7c19('0xb'),_0x7c19('0xf'),'fax',_0x7c19('0x10')],'type':_0x7c19('0x11')}],'timestamps':!![],'charset':_0x7c19('0x12'),'collate':_0x7c19('0x13'),'hooks':{'afterCreate':function(_0x2d7af0,_0x458b12,_0x1b618a){var _0x361954=_0x588ff1[_0x7c19('0x14')];var _0x483b13=_0x2d7af0[_0x7c19('0x15')]({'plain':!![]});function _0x1e416e(){return function(_0x508f78){logger['error'](_0x7c19('0x16'),'afterCreate',util[_0x7c19('0x17')](_0x508f78,{'showHidden':![],'depth':null}));};}function _0x5d0482(_0x273e5c,_0x3d5cae){var _0x4cdb3d=_0x3d5cae['scheduledat']?_0x3d5cae[_0x7c19('0x18')]:moment()['format'](_0x7c19('0x19'));return new BPromise(function(_0x485afc,_0x419dc8){if(_[_0x7c19('0x1a')](_0x3d5cae[_0x7c19('0x1b')])){_0x485afc({'ret':_0x4cdb3d});}else{_0x361954[_0x7c19('0x1c')][_0x7c19('0x1d')]({'where':{'id':_0x273e5c['id']}})[_0x7c19('0x1e')](function(_0x190983){if(!_[_0x7c19('0x1a')](_0x190983)){var _0x1e8882=_0x190983[_0x7c19('0x1b')];if(!_[_0x7c19('0x1a')](_0x1e8882)){var _0x8d231d=shared[_0x7c19('0x1f')];var _0xd22e8a=_0x8d231d[_0x1e8882];var _0x1c00ab=_0x8d231d[_0x3d5cae[_0x7c19('0x1b')]];if(!_[_0x7c19('0x1a')](_0xd22e8a)&&!_[_0x7c19('0x1a')](_0x1c00ab)){var _0x5e9778=_0xd22e8a[_0x7c19('0x20')]-_0x1c00ab[_0x7c19('0x20')];_0x4cdb3d=_0x3d5cae[_0x7c19('0x18')]?_0x3d5cae[_0x7c19('0x18')]:moment();var _0x39d84c=moment(_0x4cdb3d)['add'](_0x5e9778,_0x7c19('0x21'));_0x485afc({'ret':_0x39d84c[_0x7c19('0x22')](_0x7c19('0x19'))});}else _0x485afc({'ret':_0x4cdb3d});}else _0x485afc({'ret':_0x4cdb3d});}else{_0x485afc({'ret':_0x4cdb3d});}});}});return 0xa;}var _0x34189d=function(_0x1ba0bb){return new BPromise(function(_0xb9925,_0x3de8dd){_0x5d0482(_0x1ba0bb,_0x483b13)[_0x7c19('0x1e')](function(_0xedce5d){_0x483b13[_0x7c19('0x18')]=_0xedce5d['ret'];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x1ba0bb['id']}})['then'](function(_0x49d69b){if(!_[_0x7c19('0x1a')](_0x49d69b)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1ba0bb['id']);}return _0x361954['CmHopper'][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()['format'](_0x7c19('0x19')):undefined,'VoiceQueueId':_0x1ba0bb['id']});})['catch'](function(_0x4ccd60){_0x3de8dd(_0x4ccd60);});});});};var _0x30a7d8=function(_0x8e0630){return new BPromise(function(_0x17590a,_0x3f33ae){_0x5d0482(_0x8e0630,_0x483b13)[_0x7c19('0x1e')](function(_0x223600){_0x483b13['scheduledat']=_0x223600[_0x7c19('0x28')];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x8e0630['id']}})[_0x7c19('0x1e')](function(_0x469fc5){if(!_[_0x7c19('0x1a')](_0x469fc5)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+_0x7c19('0x29')+_0x8e0630['id']);}return _0x361954[_0x7c19('0x2a')][_0x7c19('0x1d')]({'where':{'calleridnum':_0x483b13[_0x7c19('0xb')],'VoiceQueueId':_0x8e0630['id']}});})[_0x7c19('0x1e')](function(_0x44f9de){if(!_[_0x7c19('0x1a')](_0x44f9de)){throw new Error(_0x7c19('0x2b')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x8e0630['id']);}return _0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13['phone'],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13['priority']?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13['scheduledat']:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13['callbackUniqueid']?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13['callbackUniqueid']?moment()[_0x7c19('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x8e0630['id']});})['catch'](function(_0x53252d){_0x3f33ae(_0x53252d);});});});};function _0x3e8442(){return function(_0x3b9536){logger[_0x7c19('0x2d')](_0x7c19('0x16'),_0x7c19('0x2e'),util[_0x7c19('0x17')](_0x3b9536,{'showHidden':![],'depth':null}));};}function _0x233c53(_0x37f26b,_0x4981e3){var _0x2681e1=_0x4981e3[_0x7c19('0x18')]?_0x4981e3[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19'));return new BPromise(function(_0xd1147e,_0x5e9c70){if(_[_0x7c19('0x1a')](_0x4981e3[_0x7c19('0x1b')])){_0xd1147e({'ret':_0x2681e1});}else{_0x361954[_0x7c19('0x2f')][_0x7c19('0x1d')]({'where':{'id':_0x37f26b['id']}})['then'](function(_0x194e6d){if(!_[_0x7c19('0x1a')](_0x194e6d)){var _0x1b00ee=_0x194e6d['dialTimezone'];if(!_['isNil'](_0x1b00ee)){var _0x322b5d=shared[_0x7c19('0x1f')];var _0x4331c6=_0x322b5d[_0x1b00ee];var _0x2abe8f=_0x322b5d[_0x4981e3['dialTimezone']];if(!_['isNil'](_0x4331c6)&&!_[_0x7c19('0x1a')](_0x2abe8f)){var _0x2b45bb=_0x4331c6[_0x7c19('0x20')]-_0x2abe8f[_0x7c19('0x20')];_0x2681e1=_0x4981e3[_0x7c19('0x18')]?_0x4981e3[_0x7c19('0x18')]:moment();var _0x36489b=moment(_0x2681e1)['add'](_0x2b45bb,_0x7c19('0x21'));_0xd1147e({'ret':_0x36489b['format'](_0x7c19('0x19'))});}else _0xd1147e({'ret':_0x2681e1});}else _0xd1147e({'ret':_0x2681e1});}else{_0xd1147e({'ret':_0x2681e1});}});}});return 0xa;}var _0x10af6a=function(_0x1a67a3){return new BPromise(function(_0x451909,_0x43723c){_0x233c53(_0x1a67a3,_0x483b13)[_0x7c19('0x1e')](function(_0x18f293){_0x483b13[_0x7c19('0x18')]=_0x18f293['ret'];_0x361954['CmHopper'][_0x7c19('0x1d')]({'where':{'phone':_0x483b13['phone'],'CampaignId':_0x1a67a3['id']}})[_0x7c19('0x1e')](function(_0x39a335){if(!_[_0x7c19('0x1a')](_0x39a335)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1a67a3['id']);}return _0x361954[_0x7c19('0x2c')]['create']({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13['priority']?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13['scheduledat']?_0x483b13['scheduledat']:moment()['format'](_0x7c19('0x19')),'callback':_0x483b13['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'CampaignId':_0x1a67a3['id']});})[_0x7c19('0x30')](function(_0x5c78ef){_0x43723c(_0x5c78ef);});});});};var _0x5598d3=function(_0x4d2dda){return new BPromise(function(_0x3d2cb6,_0x9e047d){_0x233c53(_0x4d2dda,_0x483b13)[_0x7c19('0x1e')](function(_0x515608){_0x483b13['scheduledat']=_0x515608[_0x7c19('0x28')];_0x361954[_0x7c19('0x2c')]['findOne']({'where':{'phone':_0x483b13[_0x7c19('0xb')],'CampaignId':_0x4d2dda['id']}})[_0x7c19('0x1e')](function(_0x2e86c5){if(!_[_0x7c19('0x1a')](_0x2e86c5)){throw new Error(_0x7c19('0x23')+_0x483b13[_0x7c19('0xb')]+_0x7c19('0x31')+_0x4d2dda['id']);}return _0x361954[_0x7c19('0x2a')][_0x7c19('0x1d')]({'where':{'calleridnum':_0x483b13[_0x7c19('0xb')],'CampaignId':_0x4d2dda['id']}});})[_0x7c19('0x1e')](function(_0x19ead9){if(!_['isNil'](_0x19ead9)){throw new Error(_0x7c19('0x2b')+_0x483b13['phone']+_0x7c19('0x32')+_0x4d2dda['id']);}return _0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'CampaignId':_0x4d2dda['id']});})[_0x7c19('0x30')](function(_0x1652c8){_0x9e047d(_0x1652c8);});});});};if(_0x483b13[_0x7c19('0x25')]){_0x361954[_0x7c19('0x1c')]['findAll']({'where':{'type':_0x7c19('0x33')},'attributes':['id',_0x7c19('0x34'),'dialTimezone'],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':'Lists','where':{'id':_0x483b13['ListId']}}]})['then'](function(_0x2de8b2){if(_0x2de8b2){var _0x141a1a=[];for(var _0x967f6c=0x0,_0x96d70d;_0x967f6c<_0x2de8b2['length'];_0x967f6c+=0x1){_0x96d70d=_0x2de8b2[_0x967f6c][_0x7c19('0x15')]({'plain':!![]});switch(_0x96d70d['dialCheckDuplicateType']){case _0x7c19('0x36'):_0x30a7d8(_0x96d70d)[_0x7c19('0x30')](_0x1e416e());break;case _0x7c19('0x37'):_0x34189d(_0x96d70d)[_0x7c19('0x30')](_0x1e416e());break;default:_0x233c53(_0x96d70d,_0x483b13)[_0x7c19('0x1e')](function(_0x370b32){_0x483b13[_0x7c19('0x18')]=_0x370b32[_0x7c19('0x28')];_0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13[_0x7c19('0x18')]:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'priority':_0x483b13['priority']?_0x483b13['priority']:0x2,'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13[_0x7c19('0x27')]:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')](_0x7c19('0x19')):undefined,'VoiceQueueId':_0x96d70d['id']})['catch'](_0x1e416e());});}}}})['then'](function(){return _0x361954[_0x7c19('0x1c')][_0x7c19('0x38')]({'where':{'type':_0x7c19('0x33')},'attributes':['id'],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':_0x7c19('0x39'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x1a028b){if(_0x1a028b){var _0x2cb52a=[];for(var _0x1cdbda=0x0,_0x3bbce0;_0x1cdbda<_0x1a028b[_0x7c19('0x3a')];_0x1cdbda+=0x1){_0x3bbce0=_0x1a028b[_0x1cdbda][_0x7c19('0x15')]({'plain':!![]});_0x361954[_0x7c19('0x3b')][_0x7c19('0x24')]({'phone':_0x483b13['phone'],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'VoiceQueueId':_0x3bbce0['id']})[_0x7c19('0x30')](function(_0x187ad1){logger[_0x7c19('0x2d')](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x187ad1[_0x7c19('0x3d')]);});}}});})['then'](function(){return _0x361954[_0x7c19('0x2f')]['findAll']({'attributes':['id',_0x7c19('0x34'),_0x7c19('0x1b')],'include':[{'model':_0x361954[_0x7c19('0x35')],'as':_0x7c19('0x3e'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x59a7c1){if(_0x59a7c1){var _0x3c39bb=[];for(var _0x2b86c5=0x0,_0x3f9339;_0x2b86c5<_0x59a7c1[_0x7c19('0x3a')];_0x2b86c5+=0x1){_0x3f9339=_0x59a7c1[_0x2b86c5][_0x7c19('0x15')]({'plain':!![]});switch(_0x3f9339[_0x7c19('0x34')]){case _0x7c19('0x36'):_0x5598d3(_0x3f9339)[_0x7c19('0x30')](_0x3e8442());break;case _0x7c19('0x37'):_0x10af6a(_0x3f9339)[_0x7c19('0x30')](_0x3e8442());break;default:_0x361954[_0x7c19('0x2c')][_0x7c19('0x24')]({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13['ListId'],'scheduledat':_0x483b13[_0x7c19('0x18')]?_0x483b13['scheduledat']:moment()[_0x7c19('0x22')](_0x7c19('0x19')),'priority':_0x483b13[_0x7c19('0x26')]?_0x483b13[_0x7c19('0x26')]:0x2,'callback':_0x483b13[_0x7c19('0x27')]?!![]:![],'callbackuniqueid':_0x483b13[_0x7c19('0x27')]?_0x483b13['callbackUniqueid']:undefined,'callbackat':_0x483b13[_0x7c19('0x27')]?moment()[_0x7c19('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3f9339['id']})[_0x7c19('0x30')](_0x3e8442());}}}});})[_0x7c19('0x1e')](function(){return _0x361954['Campaign'][_0x7c19('0x38')]({'attributes':['id'],'include':[{'model':_0x361954['CmList'],'as':_0x7c19('0x39'),'where':{'id':_0x483b13[_0x7c19('0x25')]}}]})[_0x7c19('0x1e')](function(_0x1ed584){if(_0x1ed584){var _0x41b47e=[];for(var _0x1bb68b=0x0,_0x31d042;_0x1bb68b<_0x1ed584[_0x7c19('0x3a')];_0x1bb68b+=0x1){_0x31d042=_0x1ed584[_0x1bb68b][_0x7c19('0x15')]({'plain':!![]});_0x361954[_0x7c19('0x3b')]['create']({'phone':_0x483b13[_0x7c19('0xb')],'ContactId':_0x483b13['id'],'ListId':_0x483b13[_0x7c19('0x25')],'CampaignId':_0x31d042['id']})['catch'](function(_0x227b62){logger['error'](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x227b62[_0x7c19('0x3d')]);});}}});})[_0x7c19('0x1e')](function(){_0x1b618a();})[_0x7c19('0x30')](function(_0x2bb7c3){logger[_0x7c19('0x2d')](_0x7c19('0x3c'),_0x7c19('0x2e'),_0x2bb7c3[_0x7c19('0x3d')]);_0x1b618a(_0x2bb7c3);});}else{_0x1b618a(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x4e98e1,_0x3bbe36,_0x52e6ea){var _0x54ce18=_0x588ff1[_0x7c19('0x14')];var _0x52082a=_0x4e98e1[_0x7c19('0x15')]({'plain':!![]});return _0x54ce18['CmHopper'][_0x7c19('0x38')]({'raw':!![],'where':{'ListId':_0x52082a['ListId'],'ContactId':_0x52082a['id']}})[_0x7c19('0x1e')](function(_0x3bfb8a){if(!_[_0x7c19('0x3f')](_0x3bfb8a)){var _0x34017c=[];for(var _0x55249c=0x0;_0x55249c<_0x3bfb8a[_0x7c19('0x3a')];_0x55249c+=0x1){var _0x40f0c9=_0x54ce18[_0x7c19('0x2c')][_0x7c19('0x40')]({'where':{'ListId':_0x3bfb8a[_0x55249c][_0x7c19('0x25')],'ContactId':_0x3bfb8a[_0x55249c]['ContactId'],'VoiceQueueId':_0x3bfb8a[_0x55249c][_0x7c19('0x41')],'CampaignId':_0x3bfb8a[_0x55249c][_0x7c19('0x42')]}});_0x34017c[_0x7c19('0x43')](_0x40f0c9);}return BPromise[_0x7c19('0x44')](_0x34017c);}})['then'](function(_0x508778){logger[_0x7c19('0x45')](_0x7c19('0x46'),util[_0x7c19('0x17')](_0x508778,{'showHidden':![],'depth':null}));_0x52e6ea();})[_0x7c19('0x30')](function(_0x48efdb){logger[_0x7c19('0x2d')](_0x7c19('0x47'),util[_0x7c19('0x17')](_0x48efdb,{'showHidden':![],'depth':null}));_0x52e6ea(_0x48efdb);});}}});};
\ No newline at end of file
index 646135d..0fbbdf6 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(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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(_0x4f6242,_0x4bcec2){var _0x13ac4b=function(_0x2c0f42){while(--_0x2c0f42){_0x4f6242['push'](_0x4f6242['shift']());}};_0x13ac4b(++_0x4bcec2);}(_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 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 178ea8c..a1d5272 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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 12053bf..4572416 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(_0x199d2f,_0x24fc33){var _0x3e8db2=function(_0x4e4c80){while(--_0x4e4c80){_0x199d2f['push'](_0x199d2f['shift']());}};_0x3e8db2(++_0x24fc33);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x2b5a4c,_0x53cb62){var _0x1a4704=function(_0x5718d9){while(--_0x5718d9){_0x2b5a4c['push'](_0x2b5a4c['shift']());}};_0x1a4704(++_0x53cb62);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 31823dc..1a0d147 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a5=['sequelize','INTEGER','STRING','PHONE'];(function(_0x420ae1,_0x161fa8){var _0xb560d3=function(_0x2d30a5){while(--_0x2d30a5){_0x420ae1['push'](_0x420ae1['shift']());}};_0xb560d3(++_0x161fa8);}(_0x61a5,0xf0));var _0x561a=function(_0x2493a8,_0x5a240d){_0x2493a8=_0x2493a8-0x0;var _0x2b06c9=_0x61a5[_0x2493a8];return _0x2b06c9;};'use strict';var Sequelize=require(_0x561a('0x0'));module['exports']={'CmContactId':{'type':Sequelize[_0x561a('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x561a('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x561a('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x561a('0x2')],'defaultValue':_0x561a('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize[_0x561a('0x2')],'defaultValue':null}};
\ No newline at end of file
+var _0xc770=['PHONE','sequelize','exports','INTEGER','STRING'];(function(_0x182c7f,_0x173606){var _0x2542f3=function(_0x4f25e1){while(--_0x4f25e1){_0x182c7f['push'](_0x182c7f['shift']());}};_0x2542f3(++_0x173606);}(_0xc770,0xd3));var _0x0c77=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc770[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0c77('0x0'));module[_0x0c77('0x1')]={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x0c77('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x0c77('0x3')],'defaultValue':_0x0c77('0x4')},'OrderBy':{'type':Sequelize[_0x0c77('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x0c77('0x3')],'defaultValue':null}};
\ No newline at end of file
index fde69cf..562beaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2846=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','CmContactHasItems','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','then','destroy','UserProfileResource','end','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','body'];(function(_0x2f48be,_0x31cbb7){var _0x98aedc=function(_0x3de05b){while(--_0x3de05b){_0x2f48be['push'](_0x2f48be['shift']());}};_0x98aedc(++_0x31cbb7);}(_0x2846,0x1a2));var _0x6284=function(_0x42004e,_0x17ac3b){_0x42004e=_0x42004e-0x0;var _0x1cabc7=_0x2846[_0x42004e];return _0x1cabc7;};'use strict';var emlformat=require(_0x6284('0x0'));var rimraf=require(_0x6284('0x1'));var zipdir=require(_0x6284('0x2'));var jsonpatch=require(_0x6284('0x3'));var rp=require(_0x6284('0x4'));var moment=require(_0x6284('0x5'));var BPromise=require(_0x6284('0x6'));var Mustache=require(_0x6284('0x7'));var util=require('util');var path=require(_0x6284('0x8'));var sox=require('sox');var csv=require(_0x6284('0x9'));var ejs=require(_0x6284('0xa'));var fs=require('fs');var fs_extra=require(_0x6284('0xb'));var _=require(_0x6284('0xc'));var squel=require(_0x6284('0xd'));var crypto=require(_0x6284('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6284('0xf'));var toCsv=require(_0x6284('0x9'));var querystring=require(_0x6284('0x10'));var Papa=require('papaparse');var Redis=require(_0x6284('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6284('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6284('0x13'))(_0x6284('0x14'));var utils=require(_0x6284('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6284('0x16'))['db'];function respondWithStatusCode(_0x2ddc01,_0x504154){_0x504154=_0x504154||0xcc;return function(_0x3045c4){if(_0x3045c4){return _0x2ddc01[_0x6284('0x17')](_0x504154);}return _0x2ddc01['status'](_0x504154)['end']();};}function respondWithResult(_0x31a152,_0x4e4896){_0x4e4896=_0x4e4896||0xc8;return function(_0x1a5b2e){if(_0x1a5b2e){return _0x31a152[_0x6284('0x18')](_0x4e4896)[_0x6284('0x19')](_0x1a5b2e);}};}function respondWithFilteredResult(_0x17bfad,_0x76378c){return function(_0x501f90){if(_0x501f90){var _0x505edf=typeof _0x76378c[_0x6284('0x1a')]===_0x6284('0x1b')&&typeof _0x76378c['limit']===_0x6284('0x1b');var _0x3d8e27=_0x501f90[_0x6284('0x1c')];var _0x1c29b7=_0x505edf?0x0:_0x76378c[_0x6284('0x1a')];var _0x4ed137=_0x505edf?_0x501f90[_0x6284('0x1c')]:_0x76378c['offset']+_0x76378c[_0x6284('0x1d')];var _0x1b7a0f;if(_0x4ed137>=_0x3d8e27){_0x4ed137=_0x3d8e27;_0x1b7a0f=0xc8;}else{_0x1b7a0f=0xce;}_0x17bfad[_0x6284('0x18')](_0x1b7a0f);return _0x17bfad[_0x6284('0x1e')]('Content-Range',_0x1c29b7+'-'+_0x4ed137+'/'+_0x3d8e27)[_0x6284('0x19')](_0x501f90);}return null;};}function patchUpdates(_0x312d74){return function(_0x168cd7){try{jsonpatch[_0x6284('0x1f')](_0x168cd7,_0x312d74,!![]);}catch(_0x422671){return BPromise[_0x6284('0x20')](_0x422671);}return _0x168cd7[_0x6284('0x21')]();};}function saveUpdates(_0x1091e1,_0x3af7bc){return function(_0x14b626){if(_0x14b626){return _0x14b626['update'](_0x1091e1)[_0x6284('0x22')](function(_0x168411){return _0x168411;});}return null;};}function removeEntity(_0x435115,_0x1de01e){return function(_0xed74c6){if(_0xed74c6){return _0xed74c6[_0x6284('0x23')]()[_0x6284('0x22')](function(){var _0xbd626c=_0xed74c6['get']({'plain':!![]});var _0x5bc05b='CmContactHasItems';return db[_0x6284('0x24')][_0x6284('0x23')]({'where':{'type':_0x5bc05b,'resourceId':_0xbd626c['id']}})[_0x6284('0x22')](function(){return _0xed74c6;});})[_0x6284('0x22')](function(){_0x435115[_0x6284('0x18')](0xcc)[_0x6284('0x25')]();});}};}function handleEntityNotFound(_0x11cb88,_0xfa5fc4){return function(_0x4a37eb){if(!_0x4a37eb){_0x11cb88[_0x6284('0x17')](0x194);}return _0x4a37eb;};}function handleError(_0x4a510f,_0x5251db){_0x5251db=_0x5251db||0x1f4;return function(_0x20e421){logger[_0x6284('0x26')](_0x20e421[_0x6284('0x27')]);if(_0x20e421[_0x6284('0x28')]){delete _0x20e421['name'];}_0x4a510f[_0x6284('0x18')](_0x5251db)[_0x6284('0x29')](_0x20e421);};}exports[_0x6284('0x2a')]=function(_0x5c40cd,_0xe6b768){var _0x2a0f28={},_0x23d6db={},_0xf0c581={'count':0x0,'rows':[]};var _0x1d0adb=_[_0x6284('0x2b')](db[_0x6284('0x2c')][_0x6284('0x2d')],function(_0x5058ee){return{'name':_0x5058ee[_0x6284('0x2e')],'type':_0x5058ee[_0x6284('0x2f')][_0x6284('0x30')]};});_0x23d6db[_0x6284('0x31')]=_[_0x6284('0x2b')](_0x1d0adb,_0x6284('0x28'));_0x23d6db[_0x6284('0x32')]=_[_0x6284('0x33')](_0x5c40cd[_0x6284('0x32')]);_0x23d6db[_0x6284('0x34')]=_['intersection'](_0x23d6db[_0x6284('0x31')],_0x23d6db[_0x6284('0x32')]);_0x2a0f28[_0x6284('0x35')]=_[_0x6284('0x36')](_0x23d6db[_0x6284('0x31')],qs[_0x6284('0x37')](_0x5c40cd['query']['fields']));_0x2a0f28['attributes']=_0x2a0f28[_0x6284('0x35')][_0x6284('0x38')]?_0x2a0f28[_0x6284('0x35')]:_0x23d6db[_0x6284('0x31')];if(!_0x5c40cd[_0x6284('0x32')][_0x6284('0x39')](_0x6284('0x3a'))){_0x2a0f28['limit']=qs[_0x6284('0x1d')](_0x5c40cd[_0x6284('0x32')][_0x6284('0x1d')]);_0x2a0f28[_0x6284('0x1a')]=qs[_0x6284('0x1a')](_0x5c40cd[_0x6284('0x32')][_0x6284('0x1a')]);}_0x2a0f28[_0x6284('0x3b')]=qs[_0x6284('0x3c')](_0x5c40cd[_0x6284('0x32')][_0x6284('0x3c')]);_0x2a0f28[_0x6284('0x3d')]=qs[_0x6284('0x34')](_['pick'](_0x5c40cd[_0x6284('0x32')],_0x23d6db[_0x6284('0x34')]),_0x1d0adb);if(_0x5c40cd[_0x6284('0x32')][_0x6284('0x3e')]){_0x2a0f28[_0x6284('0x3d')]=_[_0x6284('0x3f')](_0x2a0f28[_0x6284('0x3d')],{'$or':_[_0x6284('0x2b')](_0x1d0adb,function(_0x472aa9){if(_0x472aa9[_0x6284('0x2f')]!==_0x6284('0x40')){var _0x5871b7={};_0x5871b7[_0x472aa9[_0x6284('0x28')]]={'$like':'%'+_0x5c40cd['query'][_0x6284('0x3e')]+'%'};return _0x5871b7;}})});}_0x2a0f28=_['merge']({},_0x2a0f28,_0x5c40cd[_0x6284('0x41')]);var _0x5a4fe7={'where':_0x2a0f28[_0x6284('0x3d')]};return db[_0x6284('0x2c')]['count'](_0x5a4fe7)[_0x6284('0x22')](function(_0x3e02b8){_0xf0c581[_0x6284('0x1c')]=_0x3e02b8;if(_0x5c40cd[_0x6284('0x32')][_0x6284('0x42')]){_0x2a0f28[_0x6284('0x43')]=[{'all':!![]}];}return db[_0x6284('0x2c')]['findAll'](_0x2a0f28);})[_0x6284('0x22')](function(_0x569a6f){_0xf0c581[_0x6284('0x44')]=_0x569a6f;return _0xf0c581;})['then'](respondWithFilteredResult(_0xe6b768,_0x2a0f28))[_0x6284('0x45')](handleError(_0xe6b768,null));};exports[_0x6284('0x46')]=function(_0x4550c8,_0x55de36){var _0x4f5130={'raw':!![],'where':{'id':_0x4550c8[_0x6284('0x47')]['id']}},_0x1867b5={};_0x1867b5[_0x6284('0x31')]=_[_0x6284('0x33')](db[_0x6284('0x2c')]['rawAttributes']);_0x1867b5['query']=_[_0x6284('0x33')](_0x4550c8['query']);_0x1867b5[_0x6284('0x34')]=_[_0x6284('0x36')](_0x1867b5[_0x6284('0x31')],_0x1867b5[_0x6284('0x32')]);_0x4f5130[_0x6284('0x35')]=_[_0x6284('0x36')](_0x1867b5['model'],qs['fields'](_0x4550c8['query'][_0x6284('0x37')]));_0x4f5130['attributes']=_0x4f5130[_0x6284('0x35')][_0x6284('0x38')]?_0x4f5130[_0x6284('0x35')]:_0x1867b5[_0x6284('0x31')];if(_0x4550c8[_0x6284('0x32')][_0x6284('0x42')]){_0x4f5130[_0x6284('0x43')]=[{'all':!![]}];}_0x4f5130=_['merge']({},_0x4f5130,_0x4550c8['options']);return db[_0x6284('0x2c')][_0x6284('0x48')](_0x4f5130)[_0x6284('0x22')](handleEntityNotFound(_0x55de36,null))[_0x6284('0x22')](respondWithResult(_0x55de36,null))['catch'](handleError(_0x55de36,null));};exports['create']=function(_0x1e219f,_0x2ced0b){return db[_0x6284('0x2c')]['create'](_0x1e219f[_0x6284('0x49')],{})['then'](function(_0x44938e){var _0x3bfbce=_0x1e219f[_0x6284('0x4a')]['get']({'plain':!![]});if(!_0x3bfbce)throw new Error(_0x6284('0x4b'));if(_0x3bfbce[_0x6284('0x4c')]===_0x6284('0x4a')){var _0x155df2=_0x44938e[_0x6284('0x4d')]({'plain':!![]});var _0x514ed0=_0x6284('0x4e');return db['UserProfileSection'][_0x6284('0x48')]({'where':{'name':_0x514ed0,'userProfileId':_0x3bfbce['userProfileId']},'raw':!![]})[_0x6284('0x22')](function(_0x294104){if(_0x294104&&_0x294104[_0x6284('0x4f')]===0x0){return db[_0x6284('0x24')]['create']({'name':_0x155df2[_0x6284('0x28')],'resourceId':_0x155df2['id'],'type':_0x294104[_0x6284('0x28')],'sectionId':_0x294104['id']},{})[_0x6284('0x22')](function(){return _0x44938e;});}else{return _0x44938e;}})['catch'](function(_0x58fef0){logger[_0x6284('0x26')](_0x6284('0x50'),_0x58fef0);throw _0x58fef0;});}return _0x44938e;})[_0x6284('0x22')](respondWithResult(_0x2ced0b,0xc9))[_0x6284('0x45')](handleError(_0x2ced0b,null));};exports[_0x6284('0x51')]=function(_0x4aca1d,_0x23438a){if(_0x4aca1d['body']['id']){delete _0x4aca1d['body']['id'];}return db[_0x6284('0x2c')]['find']({'where':{'id':_0x4aca1d[_0x6284('0x47')]['id']}})[_0x6284('0x22')](handleEntityNotFound(_0x23438a,null))[_0x6284('0x22')](saveUpdates(_0x4aca1d['body'],null))[_0x6284('0x22')](respondWithResult(_0x23438a,null))[_0x6284('0x45')](handleError(_0x23438a,null));};exports[_0x6284('0x23')]=function(_0x275f35,_0x2200c3){return db[_0x6284('0x2c')][_0x6284('0x48')]({'where':{'id':_0x275f35[_0x6284('0x47')]['id']}})[_0x6284('0x22')](handleEntityNotFound(_0x2200c3,null))[_0x6284('0x22')](removeEntity(_0x2200c3,null))[_0x6284('0x45')](handleError(_0x2200c3,null));};
\ No newline at end of file
+var _0x4dc4=['map','query','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','get','CmContactHasItems','UserProfileResource','error','stack','name','index','CmContactHasItem','rawAttributes','fieldName','type'];(function(_0x33d28e,_0x3fbf98){var _0x5f1ec5=function(_0x27aef5){while(--_0x27aef5){_0x33d28e['push'](_0x33d28e['shift']());}};_0x5f1ec5(++_0x3fbf98);}(_0x4dc4,0x6f));var _0x44dc=function(_0x45742e,_0x4d3b33){_0x45742e=_0x45742e-0x0;var _0x4ff80b=_0x4dc4[_0x45742e];return _0x4ff80b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x44dc('0x0'));var jsonpatch=require(_0x44dc('0x1'));var rp=require(_0x44dc('0x2'));var moment=require(_0x44dc('0x3'));var BPromise=require(_0x44dc('0x4'));var Mustache=require(_0x44dc('0x5'));var util=require(_0x44dc('0x6'));var path=require(_0x44dc('0x7'));var sox=require(_0x44dc('0x8'));var csv=require(_0x44dc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44dc('0xa'));var _=require('lodash');var squel=require(_0x44dc('0xb'));var crypto=require(_0x44dc('0xc'));var jsforce=require(_0x44dc('0xd'));var deskjs=require(_0x44dc('0xe'));var toCsv=require(_0x44dc('0x9'));var querystring=require(_0x44dc('0xf'));var Papa=require(_0x44dc('0x10'));var Redis=require(_0x44dc('0x11'));var authService=require(_0x44dc('0x12'));var qs=require(_0x44dc('0x13'));var as=require(_0x44dc('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x44dc('0x15'))(_0x44dc('0x16'));var utils=require(_0x44dc('0x17'));var config=require(_0x44dc('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25afb1,_0x909e40){_0x909e40=_0x909e40||0xcc;return function(_0x3af7e0){if(_0x3af7e0){return _0x25afb1[_0x44dc('0x19')](_0x909e40);}return _0x25afb1[_0x44dc('0x1a')](_0x909e40)[_0x44dc('0x1b')]();};}function respondWithResult(_0x19bd36,_0x328dee){_0x328dee=_0x328dee||0xc8;return function(_0x49bffe){if(_0x49bffe){return _0x19bd36[_0x44dc('0x1a')](_0x328dee)[_0x44dc('0x1c')](_0x49bffe);}};}function respondWithFilteredResult(_0xc1bb3,_0x45ca0b){return function(_0xaec914){if(_0xaec914){var _0x21d103=typeof _0x45ca0b['offset']===_0x44dc('0x1d')&&typeof _0x45ca0b[_0x44dc('0x1e')]===_0x44dc('0x1d');var _0x194f10=_0xaec914[_0x44dc('0x1f')];var _0xe92794=_0x21d103?0x0:_0x45ca0b[_0x44dc('0x20')];var _0x17ebd3=_0x21d103?_0xaec914['count']:_0x45ca0b[_0x44dc('0x20')]+_0x45ca0b[_0x44dc('0x1e')];var _0x4f15f3;if(_0x17ebd3>=_0x194f10){_0x17ebd3=_0x194f10;_0x4f15f3=0xc8;}else{_0x4f15f3=0xce;}_0xc1bb3[_0x44dc('0x1a')](_0x4f15f3);return _0xc1bb3[_0x44dc('0x21')](_0x44dc('0x22'),_0xe92794+'-'+_0x17ebd3+'/'+_0x194f10)[_0x44dc('0x1c')](_0xaec914);}return null;};}function patchUpdates(_0x4aa1aa){return function(_0x91120e){try{jsonpatch['apply'](_0x91120e,_0x4aa1aa,!![]);}catch(_0x58ab29){return BPromise[_0x44dc('0x23')](_0x58ab29);}return _0x91120e[_0x44dc('0x24')]();};}function saveUpdates(_0x1b59b4,_0x1e802c){return function(_0x4d6b83){if(_0x4d6b83){return _0x4d6b83[_0x44dc('0x25')](_0x1b59b4)['then'](function(_0x36bd8e){return _0x36bd8e;});}return null;};}function removeEntity(_0x393a82,_0x43b6b5){return function(_0x4b3865){if(_0x4b3865){return _0x4b3865[_0x44dc('0x26')]()[_0x44dc('0x27')](function(){var _0x169531=_0x4b3865[_0x44dc('0x28')]({'plain':!![]});var _0x22b221=_0x44dc('0x29');return db[_0x44dc('0x2a')]['destroy']({'where':{'type':_0x22b221,'resourceId':_0x169531['id']}})['then'](function(){return _0x4b3865;});})[_0x44dc('0x27')](function(){_0x393a82[_0x44dc('0x1a')](0xcc)[_0x44dc('0x1b')]();});}};}function handleEntityNotFound(_0x490f8c,_0x395fdf){return function(_0x564331){if(!_0x564331){_0x490f8c[_0x44dc('0x19')](0x194);}return _0x564331;};}function handleError(_0xdf869f,_0x1ef60e){_0x1ef60e=_0x1ef60e||0x1f4;return function(_0x30bcf8){logger[_0x44dc('0x2b')](_0x30bcf8[_0x44dc('0x2c')]);if(_0x30bcf8[_0x44dc('0x2d')]){delete _0x30bcf8[_0x44dc('0x2d')];}_0xdf869f[_0x44dc('0x1a')](_0x1ef60e)['send'](_0x30bcf8);};}exports[_0x44dc('0x2e')]=function(_0x1ea77e,_0x449c68){var _0x373d31={},_0x27a783={},_0x3b7e60={'count':0x0,'rows':[]};var _0x502c50=_['map'](db[_0x44dc('0x2f')][_0x44dc('0x30')],function(_0x4db2aa){return{'name':_0x4db2aa[_0x44dc('0x31')],'type':_0x4db2aa[_0x44dc('0x32')]['key']};});_0x27a783['model']=_[_0x44dc('0x33')](_0x502c50,_0x44dc('0x2d'));_0x27a783['query']=_['keys'](_0x1ea77e[_0x44dc('0x34')]);_0x27a783[_0x44dc('0x35')]=_[_0x44dc('0x36')](_0x27a783['model'],_0x27a783[_0x44dc('0x34')]);_0x373d31[_0x44dc('0x37')]=_[_0x44dc('0x36')](_0x27a783['model'],qs[_0x44dc('0x38')](_0x1ea77e['query'][_0x44dc('0x38')]));_0x373d31[_0x44dc('0x37')]=_0x373d31[_0x44dc('0x37')]['length']?_0x373d31[_0x44dc('0x37')]:_0x27a783[_0x44dc('0x39')];if(!_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x3a')](_0x44dc('0x3b'))){_0x373d31[_0x44dc('0x1e')]=qs['limit'](_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x1e')]);_0x373d31[_0x44dc('0x20')]=qs['offset'](_0x1ea77e[_0x44dc('0x34')]['offset']);}_0x373d31['order']=qs[_0x44dc('0x3c')](_0x1ea77e[_0x44dc('0x34')][_0x44dc('0x3c')]);_0x373d31[_0x44dc('0x3d')]=qs[_0x44dc('0x35')](_['pick'](_0x1ea77e['query'],_0x27a783[_0x44dc('0x35')]),_0x502c50);if(_0x1ea77e['query']['filter']){_0x373d31[_0x44dc('0x3d')]=_[_0x44dc('0x3e')](_0x373d31[_0x44dc('0x3d')],{'$or':_[_0x44dc('0x33')](_0x502c50,function(_0x20aaf9){if(_0x20aaf9[_0x44dc('0x32')]!==_0x44dc('0x3f')){var _0x4c5c4e={};_0x4c5c4e[_0x20aaf9[_0x44dc('0x2d')]]={'$like':'%'+_0x1ea77e['query'][_0x44dc('0x40')]+'%'};return _0x4c5c4e;}})});}_0x373d31=_[_0x44dc('0x3e')]({},_0x373d31,_0x1ea77e[_0x44dc('0x41')]);var _0x2a5f65={'where':_0x373d31['where']};return db[_0x44dc('0x2f')]['count'](_0x2a5f65)['then'](function(_0x83232f){_0x3b7e60[_0x44dc('0x1f')]=_0x83232f;if(_0x1ea77e[_0x44dc('0x34')]['includeAll']){_0x373d31[_0x44dc('0x42')]=[{'all':!![]}];}return db[_0x44dc('0x2f')][_0x44dc('0x43')](_0x373d31);})[_0x44dc('0x27')](function(_0x41d8e4){_0x3b7e60[_0x44dc('0x44')]=_0x41d8e4;return _0x3b7e60;})[_0x44dc('0x27')](respondWithFilteredResult(_0x449c68,_0x373d31))[_0x44dc('0x45')](handleError(_0x449c68,null));};exports['show']=function(_0x130482,_0x330597){var _0x126bfc={'raw':!![],'where':{'id':_0x130482[_0x44dc('0x46')]['id']}},_0x1598ea={};_0x1598ea['model']=_['keys'](db[_0x44dc('0x2f')][_0x44dc('0x30')]);_0x1598ea[_0x44dc('0x34')]=_['keys'](_0x130482['query']);_0x1598ea[_0x44dc('0x35')]=_[_0x44dc('0x36')](_0x1598ea[_0x44dc('0x39')],_0x1598ea['query']);_0x126bfc[_0x44dc('0x37')]=_['intersection'](_0x1598ea['model'],qs['fields'](_0x130482[_0x44dc('0x34')][_0x44dc('0x38')]));_0x126bfc[_0x44dc('0x37')]=_0x126bfc[_0x44dc('0x37')][_0x44dc('0x47')]?_0x126bfc['attributes']:_0x1598ea[_0x44dc('0x39')];if(_0x130482['query']['includeAll']){_0x126bfc[_0x44dc('0x42')]=[{'all':!![]}];}_0x126bfc=_[_0x44dc('0x3e')]({},_0x126bfc,_0x130482[_0x44dc('0x41')]);return db['CmContactHasItem'][_0x44dc('0x48')](_0x126bfc)[_0x44dc('0x27')](handleEntityNotFound(_0x330597,null))['then'](respondWithResult(_0x330597,null))['catch'](handleError(_0x330597,null));};exports[_0x44dc('0x49')]=function(_0x532efa,_0x45f946){return db[_0x44dc('0x2f')]['create'](_0x532efa['body'],{})['then'](function(_0x160d44){var _0x27b652=_0x532efa[_0x44dc('0x4a')]['get']({'plain':!![]});if(!_0x27b652)throw new Error(_0x44dc('0x4b'));if(_0x27b652[_0x44dc('0x4c')]===_0x44dc('0x4a')){var _0x4ab545=_0x160d44[_0x44dc('0x28')]({'plain':!![]});var _0x8ec665=_0x44dc('0x29');return db['UserProfileSection'][_0x44dc('0x48')]({'where':{'name':_0x8ec665,'userProfileId':_0x27b652[_0x44dc('0x4d')]},'raw':!![]})[_0x44dc('0x27')](function(_0x408601){if(_0x408601&&_0x408601[_0x44dc('0x4e')]===0x0){return db[_0x44dc('0x2a')][_0x44dc('0x49')]({'name':_0x4ab545[_0x44dc('0x2d')],'resourceId':_0x4ab545['id'],'type':_0x408601['name'],'sectionId':_0x408601['id']},{})['then'](function(){return _0x160d44;});}else{return _0x160d44;}})[_0x44dc('0x45')](function(_0x2ed40d){logger[_0x44dc('0x2b')](_0x44dc('0x4f'),_0x2ed40d);throw _0x2ed40d;});}return _0x160d44;})[_0x44dc('0x27')](respondWithResult(_0x45f946,0xc9))[_0x44dc('0x45')](handleError(_0x45f946,null));};exports['update']=function(_0x4286ab,_0x1acb09){if(_0x4286ab[_0x44dc('0x50')]['id']){delete _0x4286ab[_0x44dc('0x50')]['id'];}return db[_0x44dc('0x2f')][_0x44dc('0x48')]({'where':{'id':_0x4286ab['params']['id']}})['then'](handleEntityNotFound(_0x1acb09,null))[_0x44dc('0x27')](saveUpdates(_0x4286ab[_0x44dc('0x50')],null))[_0x44dc('0x27')](respondWithResult(_0x1acb09,null))['catch'](handleError(_0x1acb09,null));};exports[_0x44dc('0x26')]=function(_0x44cf10,_0x22cd86){return db['CmContactHasItem'][_0x44dc('0x48')]({'where':{'id':_0x44cf10[_0x44dc('0x46')]['id']}})[_0x44dc('0x27')](handleEntityNotFound(_0x22cd86,null))[_0x44dc('0x27')](removeEntity(_0x22cd86,null))[_0x44dc('0x45')](handleError(_0x22cd86,null));};
\ No newline at end of file
index cc7dede..86a6307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d37=['define','cm_contact_has_items','lodash','util','../../config/logger','api','bluebird','request-promise','./cmContactHasItem.attributes'];(function(_0x29f1b5,_0x19ac42){var _0x5bcfbd=function(_0x126629){while(--_0x126629){_0x29f1b5['push'](_0x29f1b5['shift']());}};_0x5bcfbd(++_0x19ac42);}(_0x7d37,0xd1));var _0x77d3=function(_0xb7d133,_0x1e97d8){_0xb7d133=_0xb7d133-0x0;var _0x2644c4=_0x7d37[_0xb7d133];return _0x2644c4;};'use strict';var _=require(_0x77d3('0x0'));var util=require(_0x77d3('0x1'));var logger=require(_0x77d3('0x2'))(_0x77d3('0x3'));var moment=require('moment');var BPromise=require(_0x77d3('0x4'));var rp=require(_0x77d3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x77d3('0x6'));module['exports']=function(_0x162612,_0x2d3826){return _0x162612[_0x77d3('0x7')]('CmContactHasItem',attributes,{'tableName':_0x77d3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7cbf=['path','rimraf','../../config/environment','./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','api','moment','request-promise'];(function(_0x1d5cbb,_0x425e7f){var _0x1da5d5=function(_0x462f8d){while(--_0x462f8d){_0x1d5cbb['push'](_0x1d5cbb['shift']());}};_0x1da5d5(++_0x425e7f);}(_0x7cbf,0x11b));var _0xf7cb=function(_0x253f6a,_0x2703b9){_0x253f6a=_0x253f6a-0x0;var _0x12480b=_0x7cbf[_0x253f6a];return _0x12480b;};'use strict';var _=require('lodash');var util=require(_0xf7cb('0x0'));var logger=require(_0xf7cb('0x1'))(_0xf7cb('0x2'));var moment=require(_0xf7cb('0x3'));var BPromise=require('bluebird');var rp=require(_0xf7cb('0x4'));var fs=require('fs');var path=require(_0xf7cb('0x5'));var rimraf=require(_0xf7cb('0x6'));var config=require(_0xf7cb('0x7'));var attributes=require(_0xf7cb('0x8'));module['exports']=function(_0x19bb2e,_0x366aff){return _0x19bb2e[_0xf7cb('0x9')](_0xf7cb('0xa'),attributes,{'tableName':_0xf7cb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90f96b4..a6f25c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c1=['catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','CmContactHasItem,\x20%s,\x20%s','message','info','result'];(function(_0x3e8285,_0x1ff5e4){var _0xe21112=function(_0xf395cc){while(--_0xf395cc){_0x3e8285['push'](_0x3e8285['shift']());}};_0xe21112(++_0x1ff5e4);}(_0xa4c1,0x151));var _0x1a4c=function(_0x550aed,_0x1ba6cb){_0x550aed=_0x550aed-0x0;var _0x1c43a5=_0xa4c1[_0x550aed];return _0x1c43a5;};'use strict';var _=require('lodash');var util=require(_0x1a4c('0x0'));var moment=require(_0x1a4c('0x1'));var BPromise=require('bluebird');var rs=require(_0x1a4c('0x2'));var fs=require('fs');var Redis=require(_0x1a4c('0x3'));var db=require(_0x1a4c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x1a4c('0x5'));var jayson=require(_0x1a4c('0x6'));var client=jayson[_0x1a4c('0x7')][_0x1a4c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b2398,_0x945d40,_0x2e11a4){return new BPromise(function(_0x18bb8f,_0x29cf45){return client[_0x1a4c('0x9')](_0x2b2398,_0x2e11a4)[_0x1a4c('0xa')](function(_0x312bd9){logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x945d40,'request\x20sent');logger[_0x1a4c('0xb')](_0x1a4c('0xc'),_0x945d40,_0x1a4c('0xd'),JSON['stringify'](_0x312bd9));if(_0x312bd9[_0x1a4c('0xe')]){if(_0x312bd9[_0x1a4c('0xe')][_0x1a4c('0xf')]===0x1f4){logger[_0x1a4c('0xe')](_0x1a4c('0x10'),_0x945d40,_0x312bd9[_0x1a4c('0xe')][_0x1a4c('0x11')]);return _0x29cf45(_0x312bd9[_0x1a4c('0xe')]['message']);}logger[_0x1a4c('0xe')](_0x1a4c('0x10'),_0x945d40,_0x312bd9['error'][_0x1a4c('0x11')]);return _0x18bb8f(_0x312bd9[_0x1a4c('0xe')][_0x1a4c('0x11')]);}else{logger[_0x1a4c('0x12')](_0x1a4c('0x10'),_0x945d40,'request\x20sent');_0x18bb8f(_0x312bd9[_0x1a4c('0x13')]['message']);}})[_0x1a4c('0x14')](function(_0x5810d2){logger[_0x1a4c('0xe')](_0x1a4c('0x10'),_0x945d40,_0x5810d2);_0x29cf45(_0x5810d2);});});}
\ No newline at end of file
+var _0x23af=['request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','CmContactHasItem,\x20%s,\x20%s'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x23af,0xb0));var _0xf23a=function(_0x270125,_0x245f2b){_0x270125=_0x270125-0x0;var _0x4cfae1=_0x23af[_0x270125];return _0x4cfae1;};'use strict';var _=require(_0xf23a('0x0'));var util=require('util');var moment=require(_0xf23a('0x1'));var BPromise=require('bluebird');var rs=require(_0xf23a('0x2'));var fs=require('fs');var Redis=require(_0xf23a('0x3'));var db=require(_0xf23a('0x4'))['db'];var utils=require(_0xf23a('0x5'));var logger=require(_0xf23a('0x6'))(_0xf23a('0x7'));var config=require(_0xf23a('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf23a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e977d,_0x2120ba,_0xfbfc7d){return new BPromise(function(_0x26403f,_0x573e6c){return client[_0xf23a('0xa')](_0x3e977d,_0xfbfc7d)['then'](function(_0x291d35){logger[_0xf23a('0xb')](_0xf23a('0xc'),_0x2120ba,_0xf23a('0xd'));logger[_0xf23a('0xe')](_0xf23a('0xf'),_0x2120ba,'request\x20sent',JSON['stringify'](_0x291d35));if(_0x291d35['error']){if(_0x291d35[_0xf23a('0x10')][_0xf23a('0x11')]===0x1f4){logger[_0xf23a('0x10')](_0xf23a('0xc'),_0x2120ba,_0x291d35[_0xf23a('0x10')]['message']);return _0x573e6c(_0x291d35[_0xf23a('0x10')]['message']);}logger['error'](_0xf23a('0xc'),_0x2120ba,_0x291d35[_0xf23a('0x10')][_0xf23a('0x12')]);return _0x26403f(_0x291d35[_0xf23a('0x10')]['message']);}else{logger[_0xf23a('0xb')](_0xf23a('0xc'),_0x2120ba,'request\x20sent');_0x26403f(_0x291d35[_0xf23a('0x13')][_0xf23a('0x12')]);}})[_0xf23a('0x14')](function(_0x17cff4){logger[_0xf23a('0x10')](_0xf23a('0xc'),_0x2120ba,_0x17cff4);_0x573e6c(_0x17cff4);});});}
\ No newline at end of file
index df6b108..95c7c08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5df=['update','exports','multer','util','express','../../components/auth/service','./cmContactHasItem.controller','isAuthenticated','show','/:id'];(function(_0x5b86d7,_0x3b1410){var _0x6fd4ac=function(_0x4b4ce3){while(--_0x4b4ce3){_0x5b86d7['push'](_0x5b86d7['shift']());}};_0x6fd4ac(++_0x3b1410);}(_0xa5df,0xe8));var _0xfa5d=function(_0x126fef,_0xd6954c){_0x126fef=_0x126fef-0x0;var _0x2d7758=_0xa5df[_0x126fef];return _0x2d7758;};'use strict';var multer=require(_0xfa5d('0x0'));var util=require(_0xfa5d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfa5d('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfa5d('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfa5d('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0xfa5d('0x5')](),controller[_0xfa5d('0x6')]);router['post']('/',auth[_0xfa5d('0x5')](),controller['create']);router['put'](_0xfa5d('0x7'),auth[_0xfa5d('0x5')](),controller[_0xfa5d('0x8')]);router['delete'](_0xfa5d('0x7'),auth[_0xfa5d('0x5')](),controller['destroy']);module[_0xfa5d('0x9')]=router;
\ No newline at end of file
+var _0xce91=['post','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show'];(function(_0x4226e8,_0x5cdd46){var _0x13c031=function(_0x59356b){while(--_0x59356b){_0x4226e8['push'](_0x4226e8['shift']());}};_0x13c031(++_0x5cdd46);}(_0xce91,0x1e5));var _0x1ce9=function(_0x19a4e6,_0x2cf533){_0x19a4e6=_0x19a4e6-0x0;var _0x3407ed=_0xce91[_0x19a4e6];return _0x3407ed;};'use strict';var multer=require(_0x1ce9('0x0'));var util=require(_0x1ce9('0x1'));var path=require(_0x1ce9('0x2'));var timeout=require(_0x1ce9('0x3'));var express=require(_0x1ce9('0x4'));var router=express[_0x1ce9('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1ce9('0x6'));var interaction=require(_0x1ce9('0x7'));var config=require(_0x1ce9('0x8'));var controller=require(_0x1ce9('0x9'));router[_0x1ce9('0xa')]('/',auth[_0x1ce9('0xb')](),controller[_0x1ce9('0xc')]);router[_0x1ce9('0xa')](_0x1ce9('0xd'),auth['isAuthenticated'](),controller[_0x1ce9('0xe')]);router[_0x1ce9('0xf')]('/',auth[_0x1ce9('0xb')](),controller[_0x1ce9('0x10')]);router[_0x1ce9('0x11')](_0x1ce9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x1ce9('0x12')](_0x1ce9('0xd'),auth[_0x1ce9('0xb')](),controller[_0x1ce9('0x13')]);module['exports']=router;
\ No newline at end of file
index 4d184a5..9587403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ae=['STRING','TEXT','long','select','parse','values','setDataValue','BOOLEAN','ENUM','voice','lodash','exports','VIRTUAL','alias','getDataValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x84ae,0x19f));var _0xe84a=function(_0x2cd1de,_0x38289c){_0x2cd1de=_0x2cd1de-0x0;var _0xd44908=_0x84ae[_0x2cd1de];return _0xd44908;};'use strict';var Sequelize=require('sequelize');var _=require(_0xe84a('0x0'));module[_0xe84a('0x1')]={'name':{'type':Sequelize[_0xe84a('0x2')],'get':function(_0x3c84a4){return this['getDataValue'](_0xe84a('0x3'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x71c451){this['setDataValue'](_0xe84a('0x3'),_0x71c451?_0x71c451:this[_0xe84a('0x4')]('name'));}},'type':{'type':Sequelize[_0xe84a('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xe84a('0x6')](_0xe84a('0x7')),'get':function(){if(this[_0xe84a('0x4')]('type')===_0xe84a('0x8')){return JSON[_0xe84a('0x9')](this['getDataValue'](_0xe84a('0xa')));}else{return this[_0xe84a('0x4')]('values');}},'set':function(_0xb89f6b){if(Array['isArray'](_0xb89f6b)){this[_0xe84a('0xb')]('values',JSON['stringify'](_0xb89f6b));}else{this['setDataValue']('values',_0xb89f6b);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe84a('0xc')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xe84a('0xd')](_0xe84a('0xe'))}};
\ No newline at end of file
+var _0xd75f=['select','parse','isArray','values','setDataValue','ENUM','voice','sequelize','lodash','exports','VIRTUAL','alias','STRING','getDataValue','name','TEXT','long','type'];(function(_0x3e9582,_0x5ef882){var _0xdf59d7=function(_0xfdf61c){while(--_0xfdf61c){_0x3e9582['push'](_0x3e9582['shift']());}};_0xdf59d7(++_0x5ef882);}(_0xd75f,0x15d));var _0xfd75=function(_0x2e8093,_0x5c9051){_0x2e8093=_0x2e8093-0x0;var _0x36feef=_0xd75f[_0x2e8093];return _0x36feef;};'use strict';var Sequelize=require(_0xfd75('0x0'));var _=require(_0xfd75('0x1'));module[_0xfd75('0x2')]={'name':{'type':Sequelize[_0xfd75('0x3')],'get':function(_0x276957){return this['getDataValue'](_0xfd75('0x4'));}},'alias':{'type':Sequelize[_0xfd75('0x5')],'allowNull':![],'set':function(_0xfb5215){this['setDataValue'](_0xfd75('0x4'),_0xfb5215?_0xfb5215:this[_0xfd75('0x6')](_0xfd75('0x7')));}},'type':{'type':Sequelize[_0xfd75('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xfd75('0x8')](_0xfd75('0x9')),'get':function(){if(this[_0xfd75('0x6')](_0xfd75('0xa'))===_0xfd75('0xb')){return JSON[_0xfd75('0xc')](this[_0xfd75('0x6')]('values'));}else{return this[_0xfd75('0x6')]('values');}},'set':function(_0x32ef2f){if(Array[_0xfd75('0xd')](_0x32ef2f)){this['setDataValue'](_0xfd75('0xe'),JSON['stringify'](_0x32ef2f));}else{this[_0xfd75('0xf')]('values',_0x32ef2f);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xfd75('0x10')](_0xfd75('0x11'))}};
\ No newline at end of file
index 65be965..def45df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3209=['order','sort','pick','filter','where','merge','type','options','findAll','rows','catch','show','params','rawAttributes','includeAll','include','find','body','destroy','create','sequelize','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','format','cf_%d','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','update','then','stack','name','index','CmCustomField','fieldName','key','model','differenceBy','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0xe751f3,_0x56ce48){var _0x464001=function(_0x46411c){while(--_0x46411c){_0xe751f3['push'](_0xe751f3['shift']());}};_0x464001(++_0x56ce48);}(_0x3209,0x79));var _0x9320=function(_0x40120a,_0x452114){_0x40120a=_0x40120a-0x0;var _0x79921f=_0x3209[_0x40120a];return _0x79921f;};'use strict';var emlformat=require(_0x9320('0x0'));var rimraf=require(_0x9320('0x1'));var zipdir=require(_0x9320('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9320('0x3'));var moment=require(_0x9320('0x4'));var BPromise=require(_0x9320('0x5'));var Mustache=require('mustache');var util=require(_0x9320('0x6'));var path=require(_0x9320('0x7'));var sox=require(_0x9320('0x8'));var csv=require('to-csv');var ejs=require(_0x9320('0x9'));var fs=require('fs');var fs_extra=require(_0x9320('0xa'));var _=require(_0x9320('0xb'));var squel=require(_0x9320('0xc'));var crypto=require(_0x9320('0xd'));var jsforce=require(_0x9320('0xe'));var deskjs=require(_0x9320('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9320('0x10'));var Redis=require('ioredis');var authService=require(_0x9320('0x11'));var qs=require(_0x9320('0x12'));var as=require(_0x9320('0x13'));var hardwareService=require(_0x9320('0x14'));var logger=require(_0x9320('0x15'))(_0x9320('0x16'));var utils=require('../../config/utils');var config=require(_0x9320('0x17'));var licenseUtil=require(_0x9320('0x18'));var db=require(_0x9320('0x19'))['db'];function respondWithStatusCode(_0x4ab831,_0x4d2368){_0x4d2368=_0x4d2368||0xcc;return function(_0x40ec09){if(_0x40ec09){return _0x4ab831[_0x9320('0x1a')](_0x4d2368);}return _0x4ab831[_0x9320('0x1b')](_0x4d2368)[_0x9320('0x1c')]();};}function respondWithResult(_0x57a78d,_0x8d05ff){_0x8d05ff=_0x8d05ff||0xc8;return function(_0x23cde4){if(_0x23cde4){return _0x57a78d[_0x9320('0x1b')](_0x8d05ff)[_0x9320('0x1d')](_0x23cde4);}};}function respondWithFilteredResult(_0x3e51b9,_0x33dacd){return function(_0x326b7a){if(_0x326b7a){var _0x7b95c9=typeof _0x33dacd[_0x9320('0x1e')]==='undefined'&&typeof _0x33dacd['limit']==='undefined';var _0x542532=_0x326b7a[_0x9320('0x1f')];var _0x556e11=_0x7b95c9?0x0:_0x33dacd['offset'];var _0x4bd248=_0x7b95c9?_0x326b7a['count']:_0x33dacd[_0x9320('0x1e')]+_0x33dacd[_0x9320('0x20')];var _0x1777a9;if(_0x4bd248>=_0x542532){_0x4bd248=_0x542532;_0x1777a9=0xc8;}else{_0x1777a9=0xce;}_0x3e51b9[_0x9320('0x1b')](_0x1777a9);return _0x3e51b9[_0x9320('0x21')](_0x9320('0x22'),_0x556e11+'-'+_0x4bd248+'/'+_0x542532)['json'](_0x326b7a);}return null;};}function patchUpdates(_0x346ed2){return function(_0x426b94){try{jsonpatch[_0x9320('0x23')](_0x426b94,_0x346ed2,!![]);}catch(_0x309c46){return BPromise['reject'](_0x309c46);}return _0x426b94[_0x9320('0x24')]();};}function saveUpdates(_0x38b2ef,_0x34ffb5){return function(_0x56c57b){if(_0x56c57b){return _0x56c57b[_0x9320('0x25')](_0x38b2ef)['then'](function(_0x1dd3fb){return _0x1dd3fb;});}return null;};}function removeEntity(_0x267866,_0x3e5fb4){return function(_0x4f9d0c){if(_0x4f9d0c){return _0x4f9d0c['destroy']()[_0x9320('0x26')](function(){_0x267866[_0x9320('0x1b')](0xcc)[_0x9320('0x1c')]();});}};}function handleEntityNotFound(_0xf31c1c,_0x31bb15){return function(_0xb1200c){if(!_0xb1200c){_0xf31c1c['sendStatus'](0x194);}return _0xb1200c;};}function handleError(_0x11aa8e,_0x570edd){_0x570edd=_0x570edd||0x1f4;return function(_0x55102f){logger['error'](_0x55102f[_0x9320('0x27')]);if(_0x55102f[_0x9320('0x28')]){delete _0x55102f['name'];}_0x11aa8e[_0x9320('0x1b')](_0x570edd)['send'](_0x55102f);};}exports[_0x9320('0x29')]=function(_0x2df969,_0x5adf3c){var _0x4f2190={},_0x1c8799={},_0x56bf18={'count':0x0,'rows':[]};var _0x4d7948=_['map'](db[_0x9320('0x2a')]['rawAttributes'],function(_0x3b4f54){return{'name':_0x3b4f54[_0x9320('0x2b')],'type':_0x3b4f54['type'][_0x9320('0x2c')]};});_0x1c8799[_0x9320('0x2d')]=_[_0x9320('0x2e')](_[_0x9320('0x2f')](_0x4d7948,_0x9320('0x28')),[_0x9320('0x28')]);_0x1c8799[_0x9320('0x30')]=_[_0x9320('0x31')](_0x2df969[_0x9320('0x30')]);_0x1c8799[_0x9320('0x32')]=_['intersection'](_0x1c8799[_0x9320('0x2d')],_0x1c8799['query']);_0x4f2190['attributes']=_[_0x9320('0x33')](_0x1c8799[_0x9320('0x2d')],qs[_0x9320('0x34')](_0x2df969[_0x9320('0x30')]['fields']));_0x4f2190[_0x9320('0x35')]=_0x4f2190[_0x9320('0x35')][_0x9320('0x36')]?_0x4f2190[_0x9320('0x35')]:_0x1c8799[_0x9320('0x2d')];if(!_0x2df969[_0x9320('0x30')][_0x9320('0x37')](_0x9320('0x38'))){_0x4f2190['limit']=qs[_0x9320('0x20')](_0x2df969['query'][_0x9320('0x20')]);_0x4f2190[_0x9320('0x1e')]=qs[_0x9320('0x1e')](_0x2df969['query']['offset']);}_0x4f2190[_0x9320('0x39')]=qs[_0x9320('0x3a')](_0x2df969[_0x9320('0x30')][_0x9320('0x3a')]);_0x4f2190['where']=qs[_0x9320('0x32')](_[_0x9320('0x3b')](_0x2df969['query'],_0x1c8799[_0x9320('0x32')]),_0x4d7948);if(_0x2df969[_0x9320('0x30')][_0x9320('0x3c')]){_0x4f2190[_0x9320('0x3d')]=_[_0x9320('0x3e')](_0x4f2190[_0x9320('0x3d')],{'$or':_[_0x9320('0x2f')](_0x4d7948,function(_0x28edaa){if(_0x28edaa[_0x9320('0x3f')]!=='VIRTUAL'){var _0x2bb374={};_0x2bb374[_0x28edaa['name']]={'$like':'%'+_0x2df969[_0x9320('0x30')][_0x9320('0x3c')]+'%'};return _0x2bb374;}})});}_0x4f2190=_[_0x9320('0x3e')]({},_0x4f2190,_0x2df969[_0x9320('0x40')]);var _0x1e2f80={'where':_0x4f2190[_0x9320('0x3d')]};return db[_0x9320('0x2a')][_0x9320('0x1f')](_0x1e2f80)[_0x9320('0x26')](function(_0x342554){_0x56bf18['count']=_0x342554;if(_0x2df969['query']['includeAll']){_0x4f2190['include']=[{'all':!![]}];}return db['CmCustomField'][_0x9320('0x41')](_0x4f2190);})['then'](function(_0x3394f1){_0x56bf18[_0x9320('0x42')]=_0x3394f1;return _0x56bf18;})[_0x9320('0x26')](respondWithFilteredResult(_0x5adf3c,_0x4f2190))[_0x9320('0x43')](handleError(_0x5adf3c,null));};exports[_0x9320('0x44')]=function(_0xef0bf8,_0x356eeb){var _0x47276e={'raw':!![],'where':{'id':_0xef0bf8[_0x9320('0x45')]['id']}},_0x121f09={};_0x121f09[_0x9320('0x2d')]=_[_0x9320('0x31')](db[_0x9320('0x2a')][_0x9320('0x46')]);_0x121f09[_0x9320('0x30')]=_[_0x9320('0x31')](_0xef0bf8[_0x9320('0x30')]);_0x121f09[_0x9320('0x32')]=_[_0x9320('0x33')](_0x121f09['model'],_0x121f09[_0x9320('0x30')]);_0x47276e[_0x9320('0x35')]=_[_0x9320('0x33')](_0x121f09['model'],qs[_0x9320('0x34')](_0xef0bf8[_0x9320('0x30')][_0x9320('0x34')]));_0x47276e['attributes']=_0x47276e['attributes']['length']?_0x47276e[_0x9320('0x35')]:_0x121f09[_0x9320('0x2d')];if(_0xef0bf8[_0x9320('0x30')][_0x9320('0x47')]){_0x47276e[_0x9320('0x48')]=[{'all':!![]}];}_0x47276e=_['merge']({},_0x47276e,_0xef0bf8['options']);return db[_0x9320('0x2a')][_0x9320('0x49')](_0x47276e)['then'](handleEntityNotFound(_0x356eeb,null))['then'](respondWithResult(_0x356eeb,null))[_0x9320('0x43')](handleError(_0x356eeb,null));};exports['update']=function(_0x10b727,_0x1896fc){if(_0x10b727['body']['id']){delete _0x10b727[_0x9320('0x4a')]['id'];}return db[_0x9320('0x2a')]['find']({'where':{'id':_0x10b727[_0x9320('0x45')]['id']}})[_0x9320('0x26')](handleEntityNotFound(_0x1896fc,null))[_0x9320('0x26')](saveUpdates(_0x10b727[_0x9320('0x4a')],null))[_0x9320('0x26')](respondWithResult(_0x1896fc,null))[_0x9320('0x43')](handleError(_0x1896fc,null));};exports[_0x9320('0x4b')]=function(_0x350fa9,_0x1202e2){return db['CmCustomField'][_0x9320('0x49')]({'where':{'id':_0x350fa9[_0x9320('0x45')]['id']}})[_0x9320('0x26')](handleEntityNotFound(_0x1202e2,null))[_0x9320('0x26')](removeEntity(_0x1202e2,null))[_0x9320('0x43')](handleError(_0x1202e2,null));};exports[_0x9320('0x4c')]=function(_0x29795c,_0x30ff6d){var _0x399324;return db[_0x9320('0x4d')]['transaction'](function(_0x4bfc7d){return db[_0x9320('0x2a')][_0x9320('0x4c')](_0x29795c[_0x9320('0x4a')],{'transaction':_0x4bfc7d})[_0x9320('0x26')](function(_0x39fd7c){_0x399324=_0x39fd7c;var _0x7cc4da={'type':db[_0x9320('0x4e')][_0x9320('0x4f')],'transaction':_0x4bfc7d};switch(_0x29795c['body'][_0x9320('0x3f')]){case _0x9320('0x50'):_0x7cc4da[_0x9320('0x3f')]=db[_0x9320('0x4e')][_0x9320('0x4f')];break;case _0x9320('0x51'):_0x7cc4da[_0x9320('0x3f')]=db[_0x9320('0x4e')][_0x9320('0x52')];break;case _0x9320('0x53'):_0x7cc4da[_0x9320('0x3f')]=db[_0x9320('0x4e')][_0x9320('0x54')];_0x7cc4da[_0x9320('0x55')]=![];break;default:}return db[_0x9320('0x4d')]['queryInterface'][_0x9320('0x56')]('cm_contacts',util[_0x9320('0x57')](_0x9320('0x58'),_0x399324['id']),_0x7cc4da);})[_0x9320('0x26')](function(){return _0x399324;});})[_0x9320('0x26')](respondWithResult(_0x30ff6d,0xc9))[_0x9320('0x43')](handleError(_0x30ff6d,null));};
\ No newline at end of file
+var _0x5f7b=['filters','intersection','fields','attributes','length','order','sort','pick','where','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','merge','options','find','body','create','sequelize','Sequelize','text','TEXT','number','INTEGER','switch','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','CmCustomField','key','model','differenceBy','name','query','keys'];(function(_0x1b6563,_0x3bf0f1){var _0xdea7b8=function(_0x49e6c6){while(--_0x49e6c6){_0x1b6563['push'](_0x1b6563['shift']());}};_0xdea7b8(++_0x3bf0f1);}(_0x5f7b,0x1d3));var _0xb5f7=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x5f7b[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0xb5f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb5f7('0x1'));var jsonpatch=require(_0xb5f7('0x2'));var rp=require(_0xb5f7('0x3'));var moment=require(_0xb5f7('0x4'));var BPromise=require(_0xb5f7('0x5'));var Mustache=require('mustache');var util=require(_0xb5f7('0x6'));var path=require(_0xb5f7('0x7'));var sox=require(_0xb5f7('0x8'));var csv=require(_0xb5f7('0x9'));var ejs=require(_0xb5f7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb5f7('0xb'));var squel=require(_0xb5f7('0xc'));var crypto=require(_0xb5f7('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb5f7('0x9'));var querystring=require('querystring');var Papa=require(_0xb5f7('0xe'));var Redis=require(_0xb5f7('0xf'));var authService=require(_0xb5f7('0x10'));var qs=require(_0xb5f7('0x11'));var as=require(_0xb5f7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb5f7('0x13'))(_0xb5f7('0x14'));var utils=require('../../config/utils');var config=require(_0xb5f7('0x15'));var licenseUtil=require(_0xb5f7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x367c42,_0x5a1a64){_0x5a1a64=_0x5a1a64||0xcc;return function(_0xe4217a){if(_0xe4217a){return _0x367c42[_0xb5f7('0x17')](_0x5a1a64);}return _0x367c42[_0xb5f7('0x18')](_0x5a1a64)['end']();};}function respondWithResult(_0x4f412e,_0x254be4){_0x254be4=_0x254be4||0xc8;return function(_0xf4fe78){if(_0xf4fe78){return _0x4f412e[_0xb5f7('0x18')](_0x254be4)['json'](_0xf4fe78);}};}function respondWithFilteredResult(_0x25db45,_0x45cb8a){return function(_0x5617ed){if(_0x5617ed){var _0x3f2b60=typeof _0x45cb8a[_0xb5f7('0x19')]===_0xb5f7('0x1a')&&typeof _0x45cb8a[_0xb5f7('0x1b')]===_0xb5f7('0x1a');var _0xcd7654=_0x5617ed['count'];var _0x3207fa=_0x3f2b60?0x0:_0x45cb8a[_0xb5f7('0x19')];var _0x523d0f=_0x3f2b60?_0x5617ed[_0xb5f7('0x1c')]:_0x45cb8a['offset']+_0x45cb8a['limit'];var _0x4bff7b;if(_0x523d0f>=_0xcd7654){_0x523d0f=_0xcd7654;_0x4bff7b=0xc8;}else{_0x4bff7b=0xce;}_0x25db45[_0xb5f7('0x18')](_0x4bff7b);return _0x25db45[_0xb5f7('0x1d')](_0xb5f7('0x1e'),_0x3207fa+'-'+_0x523d0f+'/'+_0xcd7654)['json'](_0x5617ed);}return null;};}function patchUpdates(_0x1cef6e){return function(_0x2e3859){try{jsonpatch[_0xb5f7('0x1f')](_0x2e3859,_0x1cef6e,!![]);}catch(_0x7add35){return BPromise[_0xb5f7('0x20')](_0x7add35);}return _0x2e3859[_0xb5f7('0x21')]();};}function saveUpdates(_0x274740,_0x11812f){return function(_0x947dd5){if(_0x947dd5){return _0x947dd5[_0xb5f7('0x22')](_0x274740)[_0xb5f7('0x23')](function(_0x45b0ba){return _0x45b0ba;});}return null;};}function removeEntity(_0x4dc695,_0x2b806f){return function(_0x4d4306){if(_0x4d4306){return _0x4d4306[_0xb5f7('0x24')]()[_0xb5f7('0x23')](function(){_0x4dc695[_0xb5f7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f34e2,_0x530386){return function(_0xa0ac20){if(!_0xa0ac20){_0x4f34e2[_0xb5f7('0x17')](0x194);}return _0xa0ac20;};}function handleError(_0x4616a2,_0x3df795){_0x3df795=_0x3df795||0x1f4;return function(_0x341699){logger[_0xb5f7('0x25')](_0x341699[_0xb5f7('0x26')]);if(_0x341699['name']){delete _0x341699['name'];}_0x4616a2['status'](_0x3df795)[_0xb5f7('0x27')](_0x341699);};}exports[_0xb5f7('0x28')]=function(_0x3bffc4,_0xf6ec5a){var _0x4101be={},_0x1237a7={},_0x37c76e={'count':0x0,'rows':[]};var _0x2b8f11=_[_0xb5f7('0x29')](db[_0xb5f7('0x2a')]['rawAttributes'],function(_0x3d1974){return{'name':_0x3d1974['fieldName'],'type':_0x3d1974['type'][_0xb5f7('0x2b')]};});_0x1237a7[_0xb5f7('0x2c')]=_[_0xb5f7('0x2d')](_[_0xb5f7('0x29')](_0x2b8f11,_0xb5f7('0x2e')),[_0xb5f7('0x2e')]);_0x1237a7[_0xb5f7('0x2f')]=_[_0xb5f7('0x30')](_0x3bffc4['query']);_0x1237a7[_0xb5f7('0x31')]=_[_0xb5f7('0x32')](_0x1237a7[_0xb5f7('0x2c')],_0x1237a7[_0xb5f7('0x2f')]);_0x4101be['attributes']=_[_0xb5f7('0x32')](_0x1237a7[_0xb5f7('0x2c')],qs[_0xb5f7('0x33')](_0x3bffc4['query'][_0xb5f7('0x33')]));_0x4101be[_0xb5f7('0x34')]=_0x4101be[_0xb5f7('0x34')][_0xb5f7('0x35')]?_0x4101be[_0xb5f7('0x34')]:_0x1237a7[_0xb5f7('0x2c')];if(!_0x3bffc4['query']['hasOwnProperty']('nolimit')){_0x4101be[_0xb5f7('0x1b')]=qs[_0xb5f7('0x1b')](_0x3bffc4['query'][_0xb5f7('0x1b')]);_0x4101be[_0xb5f7('0x19')]=qs[_0xb5f7('0x19')](_0x3bffc4['query'][_0xb5f7('0x19')]);}_0x4101be[_0xb5f7('0x36')]=qs[_0xb5f7('0x37')](_0x3bffc4[_0xb5f7('0x2f')][_0xb5f7('0x37')]);_0x4101be['where']=qs[_0xb5f7('0x31')](_[_0xb5f7('0x38')](_0x3bffc4[_0xb5f7('0x2f')],_0x1237a7[_0xb5f7('0x31')]),_0x2b8f11);if(_0x3bffc4[_0xb5f7('0x2f')]['filter']){_0x4101be['where']=_['merge'](_0x4101be[_0xb5f7('0x39')],{'$or':_['map'](_0x2b8f11,function(_0x8eeed7){if(_0x8eeed7[_0xb5f7('0x3a')]!==_0xb5f7('0x3b')){var _0x584e26={};_0x584e26[_0x8eeed7[_0xb5f7('0x2e')]]={'$like':'%'+_0x3bffc4['query'][_0xb5f7('0x3c')]+'%'};return _0x584e26;}})});}_0x4101be=_['merge']({},_0x4101be,_0x3bffc4['options']);var _0x462417={'where':_0x4101be[_0xb5f7('0x39')]};return db[_0xb5f7('0x2a')]['count'](_0x462417)['then'](function(_0x2ed6b3){_0x37c76e[_0xb5f7('0x1c')]=_0x2ed6b3;if(_0x3bffc4['query'][_0xb5f7('0x3d')]){_0x4101be[_0xb5f7('0x3e')]=[{'all':!![]}];}return db[_0xb5f7('0x2a')][_0xb5f7('0x3f')](_0x4101be);})[_0xb5f7('0x23')](function(_0x306b2d){_0x37c76e[_0xb5f7('0x40')]=_0x306b2d;return _0x37c76e;})[_0xb5f7('0x23')](respondWithFilteredResult(_0xf6ec5a,_0x4101be))[_0xb5f7('0x41')](handleError(_0xf6ec5a,null));};exports[_0xb5f7('0x42')]=function(_0x3cd290,_0x15b322){var _0x41759c={'raw':!![],'where':{'id':_0x3cd290[_0xb5f7('0x43')]['id']}},_0x17dd0a={};_0x17dd0a[_0xb5f7('0x2c')]=_[_0xb5f7('0x30')](db[_0xb5f7('0x2a')][_0xb5f7('0x44')]);_0x17dd0a[_0xb5f7('0x2f')]=_[_0xb5f7('0x30')](_0x3cd290['query']);_0x17dd0a['filters']=_[_0xb5f7('0x32')](_0x17dd0a[_0xb5f7('0x2c')],_0x17dd0a[_0xb5f7('0x2f')]);_0x41759c[_0xb5f7('0x34')]=_[_0xb5f7('0x32')](_0x17dd0a[_0xb5f7('0x2c')],qs[_0xb5f7('0x33')](_0x3cd290[_0xb5f7('0x2f')]['fields']));_0x41759c['attributes']=_0x41759c[_0xb5f7('0x34')][_0xb5f7('0x35')]?_0x41759c[_0xb5f7('0x34')]:_0x17dd0a[_0xb5f7('0x2c')];if(_0x3cd290[_0xb5f7('0x2f')][_0xb5f7('0x3d')]){_0x41759c['include']=[{'all':!![]}];}_0x41759c=_[_0xb5f7('0x45')]({},_0x41759c,_0x3cd290[_0xb5f7('0x46')]);return db[_0xb5f7('0x2a')][_0xb5f7('0x47')](_0x41759c)[_0xb5f7('0x23')](handleEntityNotFound(_0x15b322,null))['then'](respondWithResult(_0x15b322,null))[_0xb5f7('0x41')](handleError(_0x15b322,null));};exports[_0xb5f7('0x22')]=function(_0x53106b,_0x3da308){if(_0x53106b[_0xb5f7('0x48')]['id']){delete _0x53106b[_0xb5f7('0x48')]['id'];}return db[_0xb5f7('0x2a')]['find']({'where':{'id':_0x53106b[_0xb5f7('0x43')]['id']}})['then'](handleEntityNotFound(_0x3da308,null))[_0xb5f7('0x23')](saveUpdates(_0x53106b[_0xb5f7('0x48')],null))['then'](respondWithResult(_0x3da308,null))['catch'](handleError(_0x3da308,null));};exports['destroy']=function(_0x1bd918,_0x56f6a){return db[_0xb5f7('0x2a')][_0xb5f7('0x47')]({'where':{'id':_0x1bd918[_0xb5f7('0x43')]['id']}})[_0xb5f7('0x23')](handleEntityNotFound(_0x56f6a,null))[_0xb5f7('0x23')](removeEntity(_0x56f6a,null))[_0xb5f7('0x41')](handleError(_0x56f6a,null));};exports[_0xb5f7('0x49')]=function(_0x523bdc,_0x585bbf){var _0x58be1d;return db[_0xb5f7('0x4a')]['transaction'](function(_0x4672ef){return db['CmCustomField'][_0xb5f7('0x49')](_0x523bdc[_0xb5f7('0x48')],{'transaction':_0x4672ef})['then'](function(_0x54a48f){_0x58be1d=_0x54a48f;var _0x3cc893={'type':db[_0xb5f7('0x4b')]['TEXT'],'transaction':_0x4672ef};switch(_0x523bdc[_0xb5f7('0x48')][_0xb5f7('0x3a')]){case _0xb5f7('0x4c'):_0x3cc893[_0xb5f7('0x3a')]=db[_0xb5f7('0x4b')][_0xb5f7('0x4d')];break;case _0xb5f7('0x4e'):_0x3cc893['type']=db[_0xb5f7('0x4b')][_0xb5f7('0x4f')];break;case _0xb5f7('0x50'):_0x3cc893[_0xb5f7('0x3a')]=db[_0xb5f7('0x4b')]['BOOLEAN'];_0x3cc893[_0xb5f7('0x51')]=![];break;default:}return db[_0xb5f7('0x4a')]['queryInterface'][_0xb5f7('0x52')](_0xb5f7('0x53'),util[_0xb5f7('0x54')](_0xb5f7('0x55'),_0x58be1d['id']),_0x3cc893);})[_0xb5f7('0x23')](function(){return _0x58be1d;});})[_0xb5f7('0x23')](respondWithResult(_0x585bbf,0xc9))['catch'](handleError(_0x585bbf,null));};
\ No newline at end of file
index 7712830..8b8d908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6a=['CmCustomField','cm_custom_fields','lodash','util','moment','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','define'];(function(_0x529d8d,_0x3e8914){var _0xf0ee31=function(_0x30ef4e){while(--_0x30ef4e){_0x529d8d['push'](_0x529d8d['shift']());}};_0xf0ee31(++_0x3e8914);}(_0x0a6a,0xf2));var _0xa0a6=function(_0x12b449,_0x2b8a36){_0x12b449=_0x12b449-0x0;var _0x4e3784=_0x0a6a[_0x12b449];return _0x4e3784;};'use strict';var _=require(_0xa0a6('0x0'));var util=require(_0xa0a6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa0a6('0x2'));var BPromise=require(_0xa0a6('0x3'));var rp=require(_0xa0a6('0x4'));var fs=require('fs');var path=require(_0xa0a6('0x5'));var rimraf=require('rimraf');var config=require(_0xa0a6('0x6'));var attributes=require(_0xa0a6('0x7'));module[_0xa0a6('0x8')]=function(_0x281696,_0x37df58){return _0x281696[_0xa0a6('0x9')](_0xa0a6('0xa'),attributes,{'tableName':_0xa0a6('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc19b=['../../config/environment','./cmCustomField.attributes','exports','cm_custom_fields','lodash','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0xa6aa71,_0x2a5f0c){var _0x3c02cb=function(_0x3b57e2){while(--_0x3b57e2){_0xa6aa71['push'](_0xa6aa71['shift']());}};_0x3c02cb(++_0x2a5f0c);}(_0xc19b,0x1b1));var _0xbc19=function(_0x555b2f,_0x43b622){_0x555b2f=_0x555b2f-0x0;var _0x81c0a6=_0xc19b[_0x555b2f];return _0x81c0a6;};'use strict';var _=require(_0xbc19('0x0'));var util=require(_0xbc19('0x1'));var logger=require(_0xbc19('0x2'))(_0xbc19('0x3'));var moment=require(_0xbc19('0x4'));var BPromise=require('bluebird');var rp=require(_0xbc19('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbc19('0x6'));var config=require(_0xbc19('0x7'));var attributes=require(_0xbc19('0x8'));module[_0xbc19('0x9')]=function(_0x4a24eb,_0x2c0be7){return _0x4a24eb['define']('CmCustomField',attributes,{'tableName':_0xbc19('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5410702..3d08454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed53=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmCustomField,\x20%s,\x20%s','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis'];(function(_0x11d684,_0x4d4123){var _0x78a301=function(_0x1a1966){while(--_0x1a1966){_0x11d684['push'](_0x11d684['shift']());}};_0x78a301(++_0x4d4123);}(_0xed53,0xf9));var _0x3ed5=function(_0x542766,_0x53be27){_0x542766=_0x542766-0x0;var _0x129dbe=_0xed53[_0x542766];return _0x129dbe;};'use strict';var _=require(_0x3ed5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3ed5('0x1'));var rs=require(_0x3ed5('0x2'));var fs=require('fs');var Redis=require(_0x3ed5('0x3'));var db=require(_0x3ed5('0x4'))['db'];var utils=require(_0x3ed5('0x5'));var logger=require(_0x3ed5('0x6'))(_0x3ed5('0x7'));var config=require(_0x3ed5('0x8'));var jayson=require(_0x3ed5('0x9'));var client=jayson[_0x3ed5('0xa')][_0x3ed5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36edcb,_0x5088f1,_0x2f119d){return new BPromise(function(_0x54dcd4,_0x272930){return client['request'](_0x36edcb,_0x2f119d)[_0x3ed5('0xc')](function(_0x471f85){logger[_0x3ed5('0xd')](_0x3ed5('0xe'),_0x5088f1,'request\x20sent');logger[_0x3ed5('0xf')](_0x3ed5('0x10'),_0x5088f1,_0x3ed5('0x11'),JSON['stringify'](_0x471f85));if(_0x471f85[_0x3ed5('0x12')]){if(_0x471f85[_0x3ed5('0x12')][_0x3ed5('0x13')]===0x1f4){logger[_0x3ed5('0x12')](_0x3ed5('0xe'),_0x5088f1,_0x471f85[_0x3ed5('0x12')]['message']);return _0x272930(_0x471f85[_0x3ed5('0x12')][_0x3ed5('0x14')]);}logger[_0x3ed5('0x12')](_0x3ed5('0xe'),_0x5088f1,_0x471f85[_0x3ed5('0x12')][_0x3ed5('0x14')]);return _0x54dcd4(_0x471f85[_0x3ed5('0x12')][_0x3ed5('0x14')]);}else{logger[_0x3ed5('0xd')]('CmCustomField,\x20%s,\x20%s',_0x5088f1,'request\x20sent');_0x54dcd4(_0x471f85[_0x3ed5('0x15')][_0x3ed5('0x14')]);}})[_0x3ed5('0x16')](function(_0x182073){logger[_0x3ed5('0x12')](_0x3ed5('0xe'),_0x5088f1,_0x182073);_0x272930(_0x182073);});});}
\ No newline at end of file
+var _0x6c41=['info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','CmCustomField,\x20%s,\x20%s','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0xf60b79,_0x522fa1){var _0x70d8b2=function(_0x25c432){while(--_0x25c432){_0xf60b79['push'](_0xf60b79['shift']());}};_0x70d8b2(++_0x522fa1);}(_0x6c41,0x1ab));var _0x16c4=function(_0x6eb833,_0x2bb5e5){_0x6eb833=_0x6eb833-0x0;var _0xdfc38c=_0x6c41[_0x6eb833];return _0xdfc38c;};'use strict';var _=require(_0x16c4('0x0'));var util=require('util');var moment=require(_0x16c4('0x1'));var BPromise=require('bluebird');var rs=require(_0x16c4('0x2'));var fs=require('fs');var Redis=require(_0x16c4('0x3'));var db=require(_0x16c4('0x4'))['db'];var utils=require(_0x16c4('0x5'));var logger=require(_0x16c4('0x6'))('rpc');var config=require(_0x16c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x16c4('0x8')][_0x16c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d3ec2,_0xbc3fb6,_0x5d23d6){return new BPromise(function(_0x1b01b6,_0x5e5b5a){return client['request'](_0x5d3ec2,_0x5d23d6)['then'](function(_0x3b91ae){logger[_0x16c4('0xa')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x16c4('0xb'));logger[_0x16c4('0xc')](_0x16c4('0xd'),_0xbc3fb6,_0x16c4('0xb'),JSON['stringify'](_0x3b91ae));if(_0x3b91ae[_0x16c4('0xe')]){if(_0x3b91ae[_0x16c4('0xe')][_0x16c4('0xf')]===0x1f4){logger['error'](_0x16c4('0x10'),_0xbc3fb6,_0x3b91ae[_0x16c4('0xe')][_0x16c4('0x11')]);return _0x5e5b5a(_0x3b91ae['error'][_0x16c4('0x11')]);}logger[_0x16c4('0xe')](_0x16c4('0x10'),_0xbc3fb6,_0x3b91ae['error'][_0x16c4('0x11')]);return _0x1b01b6(_0x3b91ae[_0x16c4('0xe')][_0x16c4('0x11')]);}else{logger[_0x16c4('0xa')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x16c4('0xb'));_0x1b01b6(_0x3b91ae['result']['message']);}})[_0x16c4('0x12')](function(_0x5600c8){logger[_0x16c4('0xe')]('CmCustomField,\x20%s,\x20%s',_0xbc3fb6,_0x5600c8);_0x5e5b5a(_0x5600c8);});});}
\ No newline at end of file
index bf0e54f..4a8dceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa1=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','show','post','put','update'];(function(_0x41c991,_0x6be54b){var _0x11d2c1=function(_0x4fc9c7){while(--_0x4fc9c7){_0x41c991['push'](_0x41c991['shift']());}};_0x11d2c1(++_0x6be54b);}(_0x5aa1,0x158));var _0x15aa=function(_0x2c0cbe,_0x29c8b7){_0x2c0cbe=_0x2c0cbe-0x0;var _0x42d2a7=_0x5aa1[_0x2c0cbe];return _0x42d2a7;};'use strict';var multer=require(_0x15aa('0x0'));var util=require(_0x15aa('0x1'));var path=require(_0x15aa('0x2'));var timeout=require(_0x15aa('0x3'));var express=require(_0x15aa('0x4'));var router=express['Router']();var fs_extra=require(_0x15aa('0x5'));var auth=require(_0x15aa('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x15aa('0x7'));var controller=require(_0x15aa('0x8'));router[_0x15aa('0x9')]('/',auth[_0x15aa('0xa')](),controller['index']);router[_0x15aa('0x9')](_0x15aa('0xb'),auth['isAuthenticated'](),controller[_0x15aa('0xc')]);router[_0x15aa('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x15aa('0xe')](_0x15aa('0xb'),auth[_0x15aa('0xa')](),controller[_0x15aa('0xf')]);router['delete'](_0x15aa('0xb'),auth[_0x15aa('0xa')](),controller[_0x15aa('0x10')]);module[_0x15aa('0x11')]=router;
\ No newline at end of file
+var _0x18c9=['/:id','isAuthenticated','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','index','get'];(function(_0x5bd4f6,_0xf4e45c){var _0x33a165=function(_0x37eef6){while(--_0x37eef6){_0x5bd4f6['push'](_0x5bd4f6['shift']());}};_0x33a165(++_0xf4e45c);}(_0x18c9,0x1bf));var _0x918c=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x18c9[_0x45f951];return _0x24756c;};'use strict';var multer=require(_0x918c('0x0'));var util=require(_0x918c('0x1'));var path=require(_0x918c('0x2'));var timeout=require(_0x918c('0x3'));var express=require(_0x918c('0x4'));var router=express[_0x918c('0x5')]();var fs_extra=require(_0x918c('0x6'));var auth=require(_0x918c('0x7'));var interaction=require(_0x918c('0x8'));var config=require(_0x918c('0x9'));var controller=require(_0x918c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x918c('0xb')]);router[_0x918c('0xc')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['show']);router['post']('/',auth[_0x918c('0xe')](),controller[_0x918c('0xf')]);router[_0x918c('0x10')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller[_0x918c('0x11')]);router[_0x918c('0x12')]('/:id',auth[_0x918c('0xe')](),controller[_0x918c('0x13')]);module['exports']=router;
\ No newline at end of file
index b65e430..48615a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x350e=['UNSIGNED','contactListQueue','DATE','moment','exports','STRING','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN'];(function(_0x40b981,_0x48b308){var _0x58696b=function(_0x892e46){while(--_0x892e46){_0x40b981['push'](_0x40b981['shift']());}};_0x58696b(++_0x48b308);}(_0x350e,0x71));var _0xe350=function(_0xe09786,_0x4c2ba5){_0xe09786=_0xe09786-0x0;var _0x44aada=_0x350e[_0xe09786];return _0x44aada;};'use strict';var moment=require(_0xe350('0x0'));var Sequelize=require('sequelize');module[_0xe350('0x1')]={'phone':{'type':Sequelize[_0xe350('0x2')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0xe350('0x3')](_0xe350('0x4'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xe350('0x6')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe350('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xe350('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xe350('0x6')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xe350('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xe350('0x5')],'unique':_0xe350('0x8')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0xe350('0x5')],'unique':_0xe350('0x8')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xe350('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0xe350('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xe350('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0xe350('0x9')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xc111=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x24c668,_0x1f4d95){var _0x1d35ad=function(_0x131cd4){while(--_0x131cd4){_0x24c668['push'](_0x24c668['shift']());}};_0x1d35ad(++_0x1f4d95);}(_0xc111,0x1bb));var _0x1c11=function(_0x7d7b26,_0x335355){_0x7d7b26=_0x7d7b26-0x0;var _0x10f54c=_0xc111[_0x7d7b26];return _0x10f54c;};'use strict';var moment=require(_0x1c11('0x0'));var Sequelize=require(_0x1c11('0x1'));module[_0x1c11('0x2')]={'phone':{'type':Sequelize[_0x1c11('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1c11('0x4')],'defaultValue':moment()[_0x1c11('0x5')](_0x1c11('0x6'))},'countbusyretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x1c11('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1c11('0x4')]},'priority':{'type':Sequelize[_0x1c11('0x7')](0x2)[_0x1c11('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'ListId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'UserId':{'type':Sequelize[_0x1c11('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x1c11('0x7')],'unique':_0x1c11('0xa')},'CampaignId':{'type':Sequelize[_0x1c11('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1c11('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x1c11('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x1c11('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 812c9ad..7eaca30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb717=['LOCK','UPDATE','CmCompany','Company','CmList','List','Queue','dialActive','getPreviewRecall','scheduledat','recallme','Contact','getOpenContacts','preview','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','getTimezones','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','then','sendStatus','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','concat','$or','$gte','$lt','$lte','$ne','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$contains','$any','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','CmHopper','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','update','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','membername','UserId','user','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','format','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne'];(function(_0x1248d5,_0x172a9d){var _0x58bd30=function(_0x1d81c3){while(--_0x1d81c3){_0x1248d5['push'](_0x1248d5['shift']());}};_0x58bd30(++_0x172a9d);}(_0xb717,0x1b4));var _0x7b71=function(_0x52892a,_0x442ea5){_0x52892a=_0x52892a-0x0;var _0x547f4a=_0xb717[_0x52892a];return _0x547f4a;};'use strict';var moment=require(_0x7b71('0x0'));var _=require('lodash');var qs=require(_0x7b71('0x1'));var logger=require('../../config/logger')(_0x7b71('0x2'));var shared=require(_0x7b71('0x3'));var db=require(_0x7b71('0x4'))['db'];function respondWithResult(_0x52c5dd,_0x238319){_0x238319=_0x238319||0xc8;return function(_0x2e583f){if(_0x2e583f){return _0x52c5dd[_0x7b71('0x5')](_0x238319)[_0x7b71('0x6')](_0x2e583f);}};}function respondWithFilteredResult(_0x3d3643,_0x593c15){return function(_0x217efe){if(_0x217efe){var _0x27b060=typeof _0x593c15[_0x7b71('0x7')]===_0x7b71('0x8')&&typeof _0x593c15[_0x7b71('0x9')]==='undefined';var _0x18867f=_0x217efe[_0x7b71('0xa')];var _0x53857a=_0x27b060?0x0:_0x593c15[_0x7b71('0x7')];var _0x45bbcd=_0x27b060?_0x217efe[_0x7b71('0xa')]:_0x593c15['offset']+_0x593c15[_0x7b71('0x9')];var _0x4a39d4;if(_0x45bbcd>=_0x18867f){_0x45bbcd=_0x18867f;_0x4a39d4=0xc8;}else{_0x4a39d4=0xce;}_0x3d3643[_0x7b71('0x5')](_0x4a39d4);return _0x3d3643['set'](_0x7b71('0xb'),_0x53857a+'-'+_0x45bbcd+'/'+_0x18867f)[_0x7b71('0x6')](_0x217efe);}return null;};}function saveUpdates(_0x291ba5,_0x101181){return function(_0x45c890){if(_0x45c890){return _0x45c890['update'](_0x291ba5)[_0x7b71('0xc')](function(_0x481d32){return _0x481d32;});}return null;};}function handleEntityNotFound(_0x121e8f,_0x22114a){return function(_0x4f1f41){if(!_0x4f1f41){_0x121e8f[_0x7b71('0xd')](0x194);}return _0x4f1f41;};}function handleError(_0x3598cc,_0x4266e5){_0x4266e5=_0x4266e5||0x1f4;return function(_0x5888f9){logger['error'](_0x5888f9[_0x7b71('0xe')]);if(_0x5888f9[_0x7b71('0xf')]){delete _0x5888f9[_0x7b71('0xf')];}_0x3598cc[_0x7b71('0x5')](_0x4266e5)['send'](_0x5888f9);};}exports[_0x7b71('0x10')]=function(_0x5ca420,_0x4adce8){var _0x1fd67d={},_0xbde25={},_0x2c35c4={'count':0x0,'rows':[]};var _0x46c47d=_[_0x7b71('0x11')](db['CmHopper'][_0x7b71('0x12')],function(_0x1cdbd0){return{'name':_0x1cdbd0[_0x7b71('0x13')],'type':_0x1cdbd0[_0x7b71('0x14')][_0x7b71('0x15')]};});_0xbde25[_0x7b71('0x16')]=_['map'](_0x46c47d,_0x7b71('0xf'));_0xbde25[_0x7b71('0x17')]=_[_0x7b71('0x18')](_0x5ca420[_0x7b71('0x17')]);_0xbde25['filters']=_['intersection'](_0xbde25[_0x7b71('0x16')],_0xbde25[_0x7b71('0x17')]);_0xbde25[_0x7b71('0x19')]=_[_0x7b71('0x1a')](_0xbde25[_0x7b71('0x19')],['$and',_0x7b71('0x1b'),'$gt',_0x7b71('0x1c'),_0x7b71('0x1d'),_0x7b71('0x1e'),_0x7b71('0x1f'),'$eq','$not',_0x7b71('0x20'),_0x7b71('0x21'),'$in',_0x7b71('0x22'),_0x7b71('0x23'),_0x7b71('0x24'),_0x7b71('0x25'),_0x7b71('0x26'),'$like','$overlap',_0x7b71('0x27'),'$contained',_0x7b71('0x28')]);_0x1fd67d['attributes']=_[_0x7b71('0x29')](_0xbde25[_0x7b71('0x16')],qs[_0x7b71('0x2a')](_0x5ca420['query'][_0x7b71('0x2a')]));_0x1fd67d[_0x7b71('0x2b')]=_0x1fd67d[_0x7b71('0x2b')]['length']?_0x1fd67d[_0x7b71('0x2b')]:_0xbde25[_0x7b71('0x16')];if(!_0x5ca420[_0x7b71('0x17')][_0x7b71('0x2c')](_0x7b71('0x2d'))){_0x1fd67d[_0x7b71('0x9')]=qs[_0x7b71('0x9')](_0x5ca420[_0x7b71('0x17')]['limit']);_0x1fd67d[_0x7b71('0x7')]=qs[_0x7b71('0x7')](_0x5ca420[_0x7b71('0x17')]['offset']);}_0x1fd67d[_0x7b71('0x2e')]=qs[_0x7b71('0x2f')](_0x5ca420[_0x7b71('0x17')][_0x7b71('0x2f')]);_0x1fd67d[_0x7b71('0x30')]=qs[_0x7b71('0x19')](_['pick'](_0x5ca420[_0x7b71('0x17')],_0xbde25[_0x7b71('0x19')]),_0x46c47d);if(_0x5ca420[_0x7b71('0x17')][_0x7b71('0x31')]){_0x1fd67d[_0x7b71('0x30')]=_['merge'](_0x1fd67d[_0x7b71('0x30')],{'$or':_[_0x7b71('0x11')](_0x46c47d,function(_0x28bb40){if(_0x28bb40[_0x7b71('0x14')]!==_0x7b71('0x32')){var _0x27c98c={};_0x27c98c[_0x28bb40[_0x7b71('0xf')]]={'$like':'%'+_0x5ca420[_0x7b71('0x17')]['filter']+'%'};return _0x27c98c;}})});}_0x1fd67d=_[_0x7b71('0x33')]({},_0x1fd67d,_0x5ca420[_0x7b71('0x34')]);var _0x2a3330={'where':_0x1fd67d[_0x7b71('0x30')]};return db[_0x7b71('0x35')][_0x7b71('0xa')](_0x2a3330)[_0x7b71('0xc')](function(_0x4d58d5){_0x2c35c4[_0x7b71('0xa')]=_0x4d58d5;if(_0x5ca420[_0x7b71('0x17')][_0x7b71('0x36')]){_0x1fd67d[_0x7b71('0x37')]=[{'all':!![]}];}return db['CmHopper'][_0x7b71('0x38')](_0x1fd67d);})[_0x7b71('0xc')](function(_0x3cd757){_0x2c35c4[_0x7b71('0x39')]=_0x3cd757;return _0x2c35c4;})[_0x7b71('0xc')](respondWithFilteredResult(_0x4adce8,_0x1fd67d))[_0x7b71('0x3a')](handleError(_0x4adce8,null));};exports[_0x7b71('0x3b')]=function(_0x343d7e,_0x30e9d1){var _0x6cc0ab={'raw':!![],'where':{'id':_0x343d7e[_0x7b71('0x3c')]['id']}},_0xa1db9f={};_0xa1db9f['model']=_[_0x7b71('0x18')](db[_0x7b71('0x35')]['rawAttributes']);_0xa1db9f[_0x7b71('0x17')]=_[_0x7b71('0x18')](_0x343d7e[_0x7b71('0x17')]);_0xa1db9f[_0x7b71('0x19')]=_[_0x7b71('0x29')](_0xa1db9f['model'],_0xa1db9f[_0x7b71('0x17')]);_0x6cc0ab[_0x7b71('0x2b')]=_[_0x7b71('0x29')](_0xa1db9f[_0x7b71('0x16')],qs[_0x7b71('0x2a')](_0x343d7e['query']['fields']));_0x6cc0ab[_0x7b71('0x2b')]=_0x6cc0ab['attributes'][_0x7b71('0x3d')]?_0x6cc0ab[_0x7b71('0x2b')]:_0xa1db9f[_0x7b71('0x16')];if(_0x343d7e[_0x7b71('0x17')][_0x7b71('0x36')]){_0x6cc0ab[_0x7b71('0x37')]=[{'all':!![]}];}_0x6cc0ab=_[_0x7b71('0x33')]({},_0x6cc0ab,_0x343d7e['options']);return db[_0x7b71('0x35')][_0x7b71('0x3e')](_0x6cc0ab)['then'](handleEntityNotFound(_0x30e9d1,null))[_0x7b71('0xc')](respondWithResult(_0x30e9d1,null))[_0x7b71('0x3a')](handleError(_0x30e9d1,null));};exports[_0x7b71('0x3f')]=function(_0x443e61,_0x1b8fc3){return db[_0x7b71('0x35')][_0x7b71('0x3f')](_0x443e61[_0x7b71('0x40')],{})[_0x7b71('0xc')](respondWithResult(_0x1b8fc3,0xc9))[_0x7b71('0x3a')](handleError(_0x1b8fc3,null));};exports[_0x7b71('0x41')]=function(_0x1080e2,_0x153084){if(_0x1080e2['body']['id']){delete _0x1080e2[_0x7b71('0x40')]['id'];}return db[_0x7b71('0x35')]['find']({'where':{'id':_0x1080e2['params']['id']}})['then'](handleEntityNotFound(_0x153084,null))[_0x7b71('0xc')](saveUpdates(_0x1080e2[_0x7b71('0x40')],null))[_0x7b71('0xc')](respondWithResult(_0x153084,null))['catch'](handleError(_0x153084,null));};exports[_0x7b71('0x42')]=function(_0x3f6ae9,_0x50173b){return db[_0x7b71('0x35')][_0x7b71('0x42')]()[_0x7b71('0xc')](respondWithResult(_0x50173b,null))['catch'](handleError(_0x50173b,null));};exports[_0x7b71('0x43')]=function(_0x18cb19,_0x945c68){var _0xc3c557;var _0x20e9ed=_0x18cb19[_0x7b71('0x3c')]['id'];return db[_0x7b71('0x35')][_0x7b71('0x3e')]({'where':{'id':_0x18cb19[_0x7b71('0x3c')]['id']}})[_0x7b71('0xc')](handleEntityNotFound(_0x945c68,null))[_0x7b71('0xc')](function(_0xe6825d){if(_0xe6825d){return _0xe6825d['destroy']()[_0x7b71('0xc')](function(_0x504cdf){return _0x504cdf;});}})[_0x7b71('0xc')](function(_0x154f72){_0xc3c557=_0x154f72;if(_0x154f72){if(_0x154f72[_0x7b71('0x44')]||_0x154f72[_0x7b71('0x45')]){return db[_0x154f72[_0x7b71('0x44')]?_0x7b71('0x46'):'Campaign'][_0x7b71('0x3e')]({'where':{'id':_0x154f72['VoiceQueueId']?_0x154f72['VoiceQueueId']:_0x154f72[_0x7b71('0x45')]},'attributes':['id','name'],'raw':!![]});}}})[_0x7b71('0xc')](function(_0x1e8092){var _0x3bb43f={};if(_0x1e8092){_[_0x7b71('0x33')](_0x3bb43f,_[_0x7b71('0x47')](_0xc3c557[_0x7b71('0x48')],[_0x7b71('0x49'),_0x7b71('0x4a'),'id']));_0x3bb43f[_0x7b71('0x4b')]=0x15;_0x3bb43f[_0x7b71('0x4c')]=_0x7b71('0x4d');_0x3bb43f['campaign']=_0x1e8092['name'];_0x3bb43f[_0x7b71('0x4e')]=_0x18cb19['user'][_0x7b71('0xf')];_0x3bb43f[_0x7b71('0x4f')]=_0x18cb19[_0x7b71('0x50')]['id'];_0x3bb43f['deleted']=!![];_0x3bb43f['deletedat']=moment()['format'](_0x7b71('0x51'));_0x3bb43f['calleridnum']=_0xc3c557[_0x7b71('0x52')];_0x3bb43f[_0x7b71('0x53')]=_0xc3c557['VoiceQueueId']?_0x7b71('0x54'):'ivr';return db[_0x7b71('0x55')]['find']({'where':{'id':_0x3bb43f[_0x7b71('0x56')]},'attributes':['firstName',_0x7b71('0x57')]})['then'](function(_0x1c1f3c){if(!_['isNil'](_0x945c68)&&!_[_0x7b71('0x58')](_0x1c1f3c[_0x7b71('0x59')])){_0x3bb43f[_0x7b71('0x5a')]=_0x1c1f3c['firstName'];if(!_['isNil'](_0x1c1f3c[_0x7b71('0x57')])){_0x3bb43f[_0x7b71('0x5a')]+='\x20'+_0x1c1f3c[_0x7b71('0x57')];}}})[_0x7b71('0x5b')](function(){return db[_0x7b71('0x5c')][_0x7b71('0x3f')](_0x3bb43f);});}})['then'](function(_0x1f7cec){return db[_0x7b71('0x5d')]['destroy']({'where':{'CmHopperId':_0x20e9ed}});})[_0x7b71('0xc')](function(){return _0x945c68['status'](0xcc)[_0x7b71('0x5e')]();})[_0x7b71('0x3a')](handleError(_0x945c68,null));};exports[_0x7b71('0x5f')]=function(_0x357e11,_0x4e478d){var _0x38dbd7=[];return db[_0x7b71('0x55')][_0x7b71('0x42')]()[_0x7b71('0xc')](function(_0x4448a2){_0x38dbd7=_[_0x7b71('0x18')](_0x4448a2);return _0x357e11[_0x7b71('0x50')][_0x7b71('0x60')]({'where':{'type':_0x7b71('0x61'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x7b71('0x62'),_0x7b71('0x63')],'raw':!![]});})[_0x7b71('0xc')](function(_0x1180ed){if(_0x1180ed&&_0x1180ed[_0x7b71('0x3d')]){return db[_0x7b71('0x64')][_0x7b71('0x65')](function(_0x2f1b0b){var _0x144906={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7b71('0x66')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x7b71('0x11')](_0x1180ed,'id')},'$or':[{'UserId':null},{'UserId':_0x357e11['user']['id']}]};var _0x498df3={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1180ed)[_0x7b71('0x31')]([_0x7b71('0x63'),0x0])[_0x7b71('0x11')]('id')[_0x7b71('0x67')]()},'$or':[{'UserId':null},{'UserId':_0x357e11[_0x7b71('0x50')]['id']}]};var _0x3fd1f9={'$or':[_0x144906,_0x498df3]};var _0x430edc=[];if(_0x357e11[_0x7b71('0x40')][_0x7b71('0x68')]&&_0x357e11['body'][_0x7b71('0x68')]===_0x7b71('0x69')){if(!_[_0x7b71('0x6a')](_0x357e11['body'][_0x7b71('0x6b')])){_0x3fd1f9['id']={'$in':_0x357e11[_0x7b71('0x40')][_0x7b71('0x6b')]};}_0x430edc=[[_0x7b71('0x6c'),'ASC'],['scheduledAt',_0x1180ed[0x0][_0x7b71('0x62')]===_0x7b71('0x6d')?_0x7b71('0x6e'):_0x7b71('0x6d')],db[_0x7b71('0x64')][_0x7b71('0x6f')](_0x7b71('0x70')),['id',_0x7b71('0x6e')]];}else{if(!_[_0x7b71('0x6a')](_0x357e11['body'][_0x7b71('0x6b')])){_0x3fd1f9['id']={'$notIn':_0x357e11[_0x7b71('0x40')][_0x7b71('0x6b')]};}_0x430edc=[[_0x7b71('0x6c'),_0x7b71('0x6e')],[_0x7b71('0x71'),_0x1180ed[0x0][_0x7b71('0x62')]],db[_0x7b71('0x64')]['literal'](_0x7b71('0x72')),['id',_0x7b71('0x6d')]];}return db['CmHopper'][_0x7b71('0x73')]({'attributes':['id','scheduledat','phone','recallme'],'where':_0x3fd1f9,'order':_0x430edc,'transaction':_0x2f1b0b,'lock':_0x2f1b0b[_0x7b71('0x74')][_0x7b71('0x75')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x38dbd7,'include':[{'model':db[_0x7b71('0x76')],'as':_0x7b71('0x77'),'attributes':['id',_0x7b71('0xf')]}]},{'model':db[_0x7b71('0x78')],'as':_0x7b71('0x79'),'attributes':['id',_0x7b71('0xf')]},{'model':db[_0x7b71('0x46')],'as':_0x7b71('0x7a'),'attributes':['id',_0x7b71('0xf'),_0x7b71('0x7b')]}]})[_0x7b71('0xc')](function(_0x2d0ef1){if(_0x2d0ef1){return _0x2d0ef1[_0x7b71('0x41')]({'UserId':_0x357e11[_0x7b71('0x50')]['id']},{'transaction':_0x2f1b0b});}});});}})[_0x7b71('0xc')](handleEntityNotFound(_0x4e478d,null))[_0x7b71('0xc')](respondWithResult(_0x4e478d,null))[_0x7b71('0x3a')](handleError(_0x4e478d,null));};exports[_0x7b71('0x7c')]=function(_0x58d4a5,_0x55f34c,_0x564b69){var _0x4269a6=[];var _0x58ed1d=_0x58d4a5[_0x7b71('0x3c')]['id'];var _0xe5e271=_0x58d4a5[_0x7b71('0x50')]['id'];return db[_0x7b71('0x55')][_0x7b71('0x42')]()[_0x7b71('0xc')](function(_0x5baa81){_0x4269a6=_[_0x7b71('0x18')](_0x5baa81);return db[_0x7b71('0x64')][_0x7b71('0x65')](function(_0x23b852){const _0x392a99={'id':_0x58ed1d};return db['CmHopper']['findOne']({'attributes':['id',_0x7b71('0x7d'),_0x7b71('0x7e')],'where':_0x392a99,'transaction':_0x23b852,'lock':_0x23b852[_0x7b71('0x74')][_0x7b71('0x75')],'include':[{'model':db[_0x7b71('0x55')],'as':_0x7b71('0x7f'),'attributes':_0x4269a6,'include':[{'model':db[_0x7b71('0x76')],'as':_0x7b71('0x77'),'attributes':['id',_0x7b71('0xf')]}]},{'model':db[_0x7b71('0x78')],'as':_0x7b71('0x79'),'attributes':['id','name']},{'model':db[_0x7b71('0x46')],'as':'Queue','attributes':['id','name',_0x7b71('0x7b')]}]})['then'](function(_0x10b311){if(_0x10b311){return _0x10b311['update']({'UserId':_0xe5e271},{'transaction':_0x23b852});}});});})['then'](handleEntityNotFound(_0x55f34c,null))[_0x7b71('0xc')](respondWithResult(_0x55f34c,null))[_0x7b71('0x3a')](handleError(_0x55f34c,null));};exports[_0x7b71('0x80')]=function(_0x4f91b9,_0x88d1cf){return _0x4f91b9[_0x7b71('0x50')][_0x7b71('0x60')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x7b71('0x81')},'attributes':['id'],'raw':!![]})[_0x7b71('0xc')](function(_0x4458f8){if(_0x4458f8&&_0x4458f8[_0x7b71('0x3d')]){return db['CmHopper'][_0x7b71('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7b71('0x66')](_0x7b71('0x51'))},'VoiceQueueId':{'$in':_[_0x7b71('0x11')](_0x4458f8,'id')},'$or':[{'UserId':null},{'UserId':_0x4f91b9[_0x7b71('0x50')]['id']}]}});}return 0x0;})[_0x7b71('0xc')](function(_0x25f71c){if(!_[_0x7b71('0x58')](_0x25f71c)&&_[_0x7b71('0x82')](_0x25f71c)){return _0x88d1cf[_0x7b71('0x5')](0xc8)[_0x7b71('0x6')]({'contacts':_0x25f71c});}else{logger[_0x7b71('0x83')](_0x7b71('0x84'),_0x7b71('0x80'),0x194,'entity\x20not\x20found');_0x88d1cf['sendStatus'](0x194);}})[_0x7b71('0x3a')](handleError(_0x88d1cf,null));};exports[_0x7b71('0x85')]=function(_0x9e404c,_0x3553de){var _0x457115=shared['timezones'];var _0x25c02f=[];_[_0x7b71('0x11')](_0x457115,function(_0x46d05a){_0x25c02f[_0x7b71('0x86')]({'id':_0x46d05a[_0x7b71('0xf')],'name':_0x46d05a[_0x7b71('0xf')],'utcOffset':_0x46d05a[_0x7b71('0x87')]});});return _0x3553de[_0x7b71('0x5')](0xc8)['json']({'tz':_0x25c02f});};exports[_0x7b71('0x88')]=function(_0x57cc1e,_0x56f4d0){var _0x5768b5=shared[_0x7b71('0x89')];var _0x268d9b={};if(!_[_0x7b71('0x58')](_0x5768b5[_0x57cc1e['body']['id']]))_0x268d9b=_0x5768b5[_0x57cc1e[_0x7b71('0x40')]['id']];return _0x56f4d0[_0x7b71('0x5')](0xc8)[_0x7b71('0x6')](_0x268d9b);};
\ No newline at end of file
+var _0x7217=['utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','then','sendStatus','stack','name','index','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','model','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','catch','create','body','find','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','end','getPreview','describe','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue','dialActive','getPreviewRecall','Company','update','getOpenContacts','isNumber','error'];(function(_0x25a18b,_0x26965a){var _0x5ec5c9=function(_0x5dfc96){while(--_0x5dfc96){_0x25a18b['push'](_0x25a18b['shift']());}};_0x5ec5c9(++_0x26965a);}(_0x7217,0x19e));var _0x7721=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x7217[_0x4fc9e6];return _0x551d28;};'use strict';var moment=require(_0x7721('0x0'));var _=require('lodash');var qs=require(_0x7721('0x1'));var logger=require(_0x7721('0x2'))(_0x7721('0x3'));var shared=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];function respondWithResult(_0x4d6446,_0x5bf160){_0x5bf160=_0x5bf160||0xc8;return function(_0x472a96){if(_0x472a96){return _0x4d6446[_0x7721('0x6')](_0x5bf160)[_0x7721('0x7')](_0x472a96);}};}function respondWithFilteredResult(_0x3fe47c,_0xb239e0){return function(_0xf7ff37){if(_0xf7ff37){var _0x18ab6b=typeof _0xb239e0[_0x7721('0x8')]===_0x7721('0x9')&&typeof _0xb239e0[_0x7721('0xa')]===_0x7721('0x9');var _0x2a66cb=_0xf7ff37[_0x7721('0xb')];var _0x138740=_0x18ab6b?0x0:_0xb239e0[_0x7721('0x8')];var _0x578d59=_0x18ab6b?_0xf7ff37[_0x7721('0xb')]:_0xb239e0[_0x7721('0x8')]+_0xb239e0[_0x7721('0xa')];var _0xf78099;if(_0x578d59>=_0x2a66cb){_0x578d59=_0x2a66cb;_0xf78099=0xc8;}else{_0xf78099=0xce;}_0x3fe47c[_0x7721('0x6')](_0xf78099);return _0x3fe47c[_0x7721('0xc')](_0x7721('0xd'),_0x138740+'-'+_0x578d59+'/'+_0x2a66cb)[_0x7721('0x7')](_0xf7ff37);}return null;};}function saveUpdates(_0x55b4ca,_0x2911ec){return function(_0x199930){if(_0x199930){return _0x199930['update'](_0x55b4ca)[_0x7721('0xe')](function(_0x30da54){return _0x30da54;});}return null;};}function handleEntityNotFound(_0x3f01c5,_0x2e9752){return function(_0x5069da){if(!_0x5069da){_0x3f01c5[_0x7721('0xf')](0x194);}return _0x5069da;};}function handleError(_0x25b1c0,_0x534f1b){_0x534f1b=_0x534f1b||0x1f4;return function(_0x4e199a){logger['error'](_0x4e199a[_0x7721('0x10')]);if(_0x4e199a[_0x7721('0x11')]){delete _0x4e199a[_0x7721('0x11')];}_0x25b1c0[_0x7721('0x6')](_0x534f1b)['send'](_0x4e199a);};}exports[_0x7721('0x12')]=function(_0x54a838,_0x3fc09e){var _0x5cb0e6={},_0xfec626={},_0x4e96fb={'count':0x0,'rows':[]};var _0x3ab5a5=_[_0x7721('0x13')](db[_0x7721('0x14')][_0x7721('0x15')],function(_0x402820){return{'name':_0x402820[_0x7721('0x16')],'type':_0x402820[_0x7721('0x17')][_0x7721('0x18')]};});_0xfec626['model']=_[_0x7721('0x13')](_0x3ab5a5,_0x7721('0x11'));_0xfec626[_0x7721('0x19')]=_[_0x7721('0x1a')](_0x54a838['query']);_0xfec626[_0x7721('0x1b')]=_['intersection'](_0xfec626[_0x7721('0x1c')],_0xfec626[_0x7721('0x19')]);_0xfec626[_0x7721('0x1b')]=_[_0x7721('0x1d')](_0xfec626[_0x7721('0x1b')],[_0x7721('0x1e'),_0x7721('0x1f'),'$gt',_0x7721('0x20'),_0x7721('0x21'),_0x7721('0x22'),_0x7721('0x23'),_0x7721('0x24'),_0x7721('0x25'),_0x7721('0x26'),_0x7721('0x27'),_0x7721('0x28'),'$notIn',_0x7721('0x29'),'$notLike','$iLike',_0x7721('0x2a'),_0x7721('0x29'),_0x7721('0x2b'),_0x7721('0x2c'),_0x7721('0x2d'),_0x7721('0x2e')]);_0x5cb0e6[_0x7721('0x2f')]=_[_0x7721('0x30')](_0xfec626['model'],qs[_0x7721('0x31')](_0x54a838[_0x7721('0x19')]['fields']));_0x5cb0e6['attributes']=_0x5cb0e6[_0x7721('0x2f')][_0x7721('0x32')]?_0x5cb0e6['attributes']:_0xfec626[_0x7721('0x1c')];if(!_0x54a838[_0x7721('0x19')][_0x7721('0x33')]('nolimit')){_0x5cb0e6[_0x7721('0xa')]=qs[_0x7721('0xa')](_0x54a838[_0x7721('0x19')][_0x7721('0xa')]);_0x5cb0e6[_0x7721('0x8')]=qs['offset'](_0x54a838[_0x7721('0x19')][_0x7721('0x8')]);}_0x5cb0e6[_0x7721('0x34')]=qs['sort'](_0x54a838[_0x7721('0x19')][_0x7721('0x35')]);_0x5cb0e6['where']=qs[_0x7721('0x1b')](_['pick'](_0x54a838[_0x7721('0x19')],_0xfec626[_0x7721('0x1b')]),_0x3ab5a5);if(_0x54a838[_0x7721('0x19')][_0x7721('0x36')]){_0x5cb0e6[_0x7721('0x37')]=_[_0x7721('0x38')](_0x5cb0e6[_0x7721('0x37')],{'$or':_[_0x7721('0x13')](_0x3ab5a5,function(_0x25bdd9){if(_0x25bdd9[_0x7721('0x17')]!==_0x7721('0x39')){var _0x5c806d={};_0x5c806d[_0x25bdd9[_0x7721('0x11')]]={'$like':'%'+_0x54a838['query'][_0x7721('0x36')]+'%'};return _0x5c806d;}})});}_0x5cb0e6=_[_0x7721('0x38')]({},_0x5cb0e6,_0x54a838[_0x7721('0x3a')]);var _0x1d03de={'where':_0x5cb0e6[_0x7721('0x37')]};return db[_0x7721('0x14')]['count'](_0x1d03de)['then'](function(_0x4cadef){_0x4e96fb['count']=_0x4cadef;if(_0x54a838[_0x7721('0x19')][_0x7721('0x3b')]){_0x5cb0e6[_0x7721('0x3c')]=[{'all':!![]}];}return db[_0x7721('0x14')]['findAll'](_0x5cb0e6);})[_0x7721('0xe')](function(_0x4cf659){_0x4e96fb[_0x7721('0x3d')]=_0x4cf659;return _0x4e96fb;})[_0x7721('0xe')](respondWithFilteredResult(_0x3fc09e,_0x5cb0e6))['catch'](handleError(_0x3fc09e,null));};exports[_0x7721('0x3e')]=function(_0x3a47c8,_0x4e77ff){var _0x4d0111={'raw':!![],'where':{'id':_0x3a47c8[_0x7721('0x3f')]['id']}},_0x3d84d3={};_0x3d84d3[_0x7721('0x1c')]=_[_0x7721('0x1a')](db['CmHopper'][_0x7721('0x15')]);_0x3d84d3[_0x7721('0x19')]=_[_0x7721('0x1a')](_0x3a47c8[_0x7721('0x19')]);_0x3d84d3[_0x7721('0x1b')]=_['intersection'](_0x3d84d3[_0x7721('0x1c')],_0x3d84d3['query']);_0x4d0111[_0x7721('0x2f')]=_['intersection'](_0x3d84d3[_0x7721('0x1c')],qs[_0x7721('0x31')](_0x3a47c8[_0x7721('0x19')]['fields']));_0x4d0111[_0x7721('0x2f')]=_0x4d0111[_0x7721('0x2f')][_0x7721('0x32')]?_0x4d0111['attributes']:_0x3d84d3[_0x7721('0x1c')];if(_0x3a47c8[_0x7721('0x19')][_0x7721('0x3b')]){_0x4d0111[_0x7721('0x3c')]=[{'all':!![]}];}_0x4d0111=_[_0x7721('0x38')]({},_0x4d0111,_0x3a47c8[_0x7721('0x3a')]);return db[_0x7721('0x14')]['find'](_0x4d0111)['then'](handleEntityNotFound(_0x4e77ff,null))[_0x7721('0xe')](respondWithResult(_0x4e77ff,null))[_0x7721('0x40')](handleError(_0x4e77ff,null));};exports[_0x7721('0x41')]=function(_0x39a3ad,_0x335145){return db[_0x7721('0x14')][_0x7721('0x41')](_0x39a3ad[_0x7721('0x42')],{})[_0x7721('0xe')](respondWithResult(_0x335145,0xc9))[_0x7721('0x40')](handleError(_0x335145,null));};exports['update']=function(_0x578867,_0x5ed70d){if(_0x578867[_0x7721('0x42')]['id']){delete _0x578867[_0x7721('0x42')]['id'];}return db[_0x7721('0x14')]['find']({'where':{'id':_0x578867[_0x7721('0x3f')]['id']}})[_0x7721('0xe')](handleEntityNotFound(_0x5ed70d,null))['then'](saveUpdates(_0x578867[_0x7721('0x42')],null))['then'](respondWithResult(_0x5ed70d,null))[_0x7721('0x40')](handleError(_0x5ed70d,null));};exports['describe']=function(_0x334f23,_0x196be4){return db[_0x7721('0x14')]['describe']()[_0x7721('0xe')](respondWithResult(_0x196be4,null))[_0x7721('0x40')](handleError(_0x196be4,null));};exports['destroy']=function(_0x223d93,_0x1196c2){var _0xf88e8c;var _0x5c4078=_0x223d93[_0x7721('0x3f')]['id'];return db['CmHopper'][_0x7721('0x43')]({'where':{'id':_0x223d93[_0x7721('0x3f')]['id']}})[_0x7721('0xe')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0xe')](function(_0x1c95d8){if(_0x1c95d8){return _0x1c95d8[_0x7721('0x44')]()[_0x7721('0xe')](function(_0x7fbb73){return _0x7fbb73;});}})[_0x7721('0xe')](function(_0x3386aa){_0xf88e8c=_0x3386aa;if(_0x3386aa){if(_0x3386aa[_0x7721('0x45')]||_0x3386aa[_0x7721('0x46')]){return db[_0x3386aa[_0x7721('0x45')]?_0x7721('0x47'):_0x7721('0x48')]['find']({'where':{'id':_0x3386aa[_0x7721('0x45')]?_0x3386aa[_0x7721('0x45')]:_0x3386aa[_0x7721('0x46')]},'attributes':['id',_0x7721('0x11')],'raw':!![]});}}})[_0x7721('0xe')](function(_0x315127){var _0x267f5e={};if(_0x315127){_['merge'](_0x267f5e,_[_0x7721('0x49')](_0xf88e8c[_0x7721('0x4a')],[_0x7721('0x4b'),_0x7721('0x4c'),'id']));_0x267f5e[_0x7721('0x4d')]=0x15;_0x267f5e[_0x7721('0x4e')]=_0x7721('0x4f');_0x267f5e[_0x7721('0x50')]=_0x315127[_0x7721('0x11')];_0x267f5e[_0x7721('0x51')]=_0x223d93[_0x7721('0x52')]['name'];_0x267f5e[_0x7721('0x53')]=_0x223d93[_0x7721('0x52')]['id'];_0x267f5e[_0x7721('0x4f')]=!![];_0x267f5e[_0x7721('0x54')]=moment()[_0x7721('0x55')](_0x7721('0x56'));_0x267f5e[_0x7721('0x57')]=_0xf88e8c[_0x7721('0x58')];_0x267f5e[_0x7721('0x59')]=_0xf88e8c[_0x7721('0x45')]?_0x7721('0x5a'):_0x7721('0x5b');return db[_0x7721('0x5c')][_0x7721('0x43')]({'where':{'id':_0x267f5e[_0x7721('0x5d')]},'attributes':['firstName','lastName']})['then'](function(_0x885a3a){if(!_['isNil'](_0x1196c2)&&!_['isNil'](_0x885a3a['firstName'])){_0x267f5e['calleridname']=_0x885a3a[_0x7721('0x5e')];if(!_[_0x7721('0x5f')](_0x885a3a[_0x7721('0x60')])){_0x267f5e['calleridname']+='\x20'+_0x885a3a[_0x7721('0x60')];}}})['finally'](function(){return db['CmHopperFinal']['create'](_0x267f5e);});}})[_0x7721('0xe')](function(_0x4f0d38){return db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':_0x5c4078}});})[_0x7721('0xe')](function(){return _0x1196c2[_0x7721('0x6')](0xcc)[_0x7721('0x61')]();})['catch'](handleError(_0x1196c2,null));};exports[_0x7721('0x62')]=function(_0x1f1890,_0x2c95d0){var _0x168343=[];return db[_0x7721('0x5c')][_0x7721('0x63')]()[_0x7721('0xe')](function(_0x3e3301){_0x168343=_[_0x7721('0x1a')](_0x3e3301);return _0x1f1890[_0x7721('0x52')][_0x7721('0x64')]({'where':{'type':_0x7721('0x65'),'dialActive':!![],'dialMethod':_0x7721('0x66')},'attributes':['id',_0x7721('0x67'),_0x7721('0x68')],'raw':!![]});})['then'](function(_0x233e5d){if(_0x233e5d&&_0x233e5d[_0x7721('0x32')]){return db[_0x7721('0x69')][_0x7721('0x6a')](function(_0x542e30){var _0x103009={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7721('0x55')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x7721('0x13')](_0x233e5d,'id')},'$or':[{'UserId':null},{'UserId':_0x1f1890['user']['id']}]};var _0x1f508d={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x233e5d)[_0x7721('0x36')]([_0x7721('0x68'),0x0])[_0x7721('0x13')]('id')[_0x7721('0x6b')]()},'$or':[{'UserId':null},{'UserId':_0x1f1890[_0x7721('0x52')]['id']}]};var _0x3121e0={'$or':[_0x103009,_0x1f508d]};var _0x167ce7=[];if(_0x1f1890[_0x7721('0x42')]['direction']&&_0x1f1890[_0x7721('0x42')][_0x7721('0x6c')]===_0x7721('0x6d')){if(!_[_0x7721('0x6e')](_0x1f1890[_0x7721('0x42')][_0x7721('0x6f')])){_0x3121e0['id']={'$in':_0x1f1890[_0x7721('0x42')]['hopperIds']};}_0x167ce7=[[_0x7721('0x70'),_0x7721('0x71')],['scheduledAt',_0x233e5d[0x0][_0x7721('0x67')]==='ASC'?_0x7721('0x72'):_0x7721('0x71')],db[_0x7721('0x69')][_0x7721('0x73')](_0x7721('0x74')),['id',_0x7721('0x72')]];}else{if(!_[_0x7721('0x6e')](_0x1f1890['body'][_0x7721('0x6f')])){_0x3121e0['id']={'$notIn':_0x1f1890[_0x7721('0x42')][_0x7721('0x6f')]};}_0x167ce7=[['priority','DESC'],['scheduledAt',_0x233e5d[0x0]['dialOrderByScheduledAt']],db['sequelize'][_0x7721('0x73')](_0x7721('0x75')),['id','ASC']];}return db[_0x7721('0x14')][_0x7721('0x76')]({'attributes':['id',_0x7721('0x77'),_0x7721('0x58'),'recallme'],'where':_0x3121e0,'order':_0x167ce7,'transaction':_0x542e30,'lock':_0x542e30[_0x7721('0x78')][_0x7721('0x79')],'include':[{'model':db[_0x7721('0x5c')],'as':_0x7721('0x7a'),'attributes':_0x168343,'include':[{'model':db[_0x7721('0x7b')],'as':'Company','attributes':['id',_0x7721('0x11')]}]},{'model':db[_0x7721('0x7c')],'as':_0x7721('0x7d'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x7721('0x7e'),'attributes':['id',_0x7721('0x11'),_0x7721('0x7f')]}]})[_0x7721('0xe')](function(_0x75a5cc){if(_0x75a5cc){return _0x75a5cc['update']({'UserId':_0x1f1890['user']['id']},{'transaction':_0x542e30});}});});}})[_0x7721('0xe')](handleEntityNotFound(_0x2c95d0,null))[_0x7721('0xe')](respondWithResult(_0x2c95d0,null))[_0x7721('0x40')](handleError(_0x2c95d0,null));};exports[_0x7721('0x80')]=function(_0x142ec6,_0x145a0b,_0x34187f){var _0x58f944=[];var _0xdfae41=_0x142ec6[_0x7721('0x3f')]['id'];var _0x27d7f1=_0x142ec6['user']['id'];return db[_0x7721('0x5c')][_0x7721('0x63')]()[_0x7721('0xe')](function(_0x321a40){_0x58f944=_['keys'](_0x321a40);return db['sequelize'][_0x7721('0x6a')](function(_0x2cac50){const _0x177fe3={'id':_0xdfae41};return db[_0x7721('0x14')][_0x7721('0x76')]({'attributes':['id',_0x7721('0x77'),'recallme'],'where':_0x177fe3,'transaction':_0x2cac50,'lock':_0x2cac50[_0x7721('0x78')][_0x7721('0x79')],'include':[{'model':db[_0x7721('0x5c')],'as':'Contact','attributes':_0x58f944,'include':[{'model':db[_0x7721('0x7b')],'as':_0x7721('0x81'),'attributes':['id',_0x7721('0x11')]}]},{'model':db[_0x7721('0x7c')],'as':_0x7721('0x7d'),'attributes':['id','name']},{'model':db[_0x7721('0x47')],'as':'Queue','attributes':['id',_0x7721('0x11'),_0x7721('0x7f')]}]})[_0x7721('0xe')](function(_0x7f0598){if(_0x7f0598){return _0x7f0598[_0x7721('0x82')]({'UserId':_0x27d7f1},{'transaction':_0x2cac50});}});});})[_0x7721('0xe')](handleEntityNotFound(_0x145a0b,null))[_0x7721('0xe')](respondWithResult(_0x145a0b,null))[_0x7721('0x40')](handleError(_0x145a0b,null));};exports[_0x7721('0x83')]=function(_0x3b78f5,_0x2c74d8){return _0x3b78f5['user'][_0x7721('0x64')]({'where':{'type':_0x7721('0x65'),'dialActive':!![],'dialMethod':_0x7721('0x66')},'attributes':['id'],'raw':!![]})['then'](function(_0x94af20){if(_0x94af20&&_0x94af20[_0x7721('0x32')]){return db[_0x7721('0x14')][_0x7721('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7721('0x55')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x7721('0x13')](_0x94af20,'id')},'$or':[{'UserId':null},{'UserId':_0x3b78f5[_0x7721('0x52')]['id']}]}});}return 0x0;})[_0x7721('0xe')](function(_0x21b365){if(!_[_0x7721('0x5f')](_0x21b365)&&_[_0x7721('0x84')](_0x21b365)){return _0x2c74d8['status'](0xc8)[_0x7721('0x7')]({'contacts':_0x21b365});}else{logger[_0x7721('0x85')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x7721('0x83'),0x194,'entity\x20not\x20found');_0x2c74d8[_0x7721('0xf')](0x194);}})[_0x7721('0x40')](handleError(_0x2c74d8,null));};exports['getTimezones']=function(_0x3e910c,_0x5209e1){var _0x56069f=shared['timezones'];var _0x1bd716=[];_[_0x7721('0x13')](_0x56069f,function(_0x21a686){_0x1bd716['push']({'id':_0x21a686['name'],'name':_0x21a686['name'],'utcOffset':_0x21a686[_0x7721('0x86')]});});return _0x5209e1[_0x7721('0x6')](0xc8)[_0x7721('0x7')]({'tz':_0x1bd716});};exports[_0x7721('0x87')]=function(_0x3b02d7,_0x259ee8){var _0x58302a=shared[_0x7721('0x88')];var _0x2514b3={};if(!_[_0x7721('0x5f')](_0x58302a[_0x3b02d7[_0x7721('0x42')]['id']]))_0x2514b3=_0x58302a[_0x3b02d7[_0x7721('0x42')]['id']];return _0x259ee8[_0x7721('0x6')](0xc8)[_0x7721('0x7')](_0x2514b3);};
\ No newline at end of file
index 9ac44e1..12c8cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['request-promise','path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','api','moment','bluebird'];(function(_0x5a550c,_0x4b1bc0){var _0x5f2417=function(_0x4c8528){while(--_0x4c8528){_0x5a550c['push'](_0x5a550c['shift']());}};_0x5f2417(++_0x4b1bc0);}(_0x33af,0xec));var _0xf33a=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0x33af[_0x37a9d7];return _0x1343d3;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var logger=require('../../config/logger')(_0xf33a('0x1'));var moment=require(_0xf33a('0x2'));var BPromise=require(_0xf33a('0x3'));var rp=require(_0xf33a('0x4'));var fs=require('fs');var path=require(_0xf33a('0x5'));var rimraf=require(_0xf33a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf33a('0x7'));module[_0xf33a('0x8')]=function(_0x583e54,_0xc0dd13){return _0x583e54[_0xf33a('0x9')](_0xf33a('0xa'),attributes,{'tableName':_0xf33a('0xb'),'paranoid':![],'indexes':[{'name':_0xf33a('0xc'),'fields':[_0xf33a('0xc')]},{'name':'phone','fields':[_0xf33a('0xd')]},{'name':_0xf33a('0xe'),'fields':[_0xf33a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+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(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x5ed16d,_0x1a418e){_0x5ed16d=_0x5ed16d-0x0;var _0x4c4630=_0xc6ac[_0x5ed16d];return _0x4c4630;};'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
index 63808fe..81b2a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4437=['NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','name','CmList','List','NOW()','util','moment','bluebird','../../mysqldb','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','GetCmHopper','debug','stringify','catch','message','error','ShowCmHopper','find','then','info','CreateCmHopper','create','UpdateCmHopper','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','Contact','keys','Agent','voicePause','length','UserId','push','update','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','UPDATE','findOne','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds'];(function(_0x4cee4b,_0x1dfff3){var _0x4d891d=function(_0x3722ba){while(--_0x3722ba){_0x4cee4b['push'](_0x4cee4b['shift']());}};_0x4d891d(++_0x1dfff3);}(_0x4437,0x142));var _0x7443=function(_0x4473b4,_0x3ccbb3){_0x4473b4=_0x4473b4-0x0;var _0x414a5c=_0x4437[_0x4473b4];return _0x414a5c;};'use strict';var _=require('lodash');var util=require(_0x7443('0x0'));var moment=require(_0x7443('0x1'));var BPromise=require(_0x7443('0x2'));var db=require(_0x7443('0x3'))['db'];var logger=require('../../config/logger')('rpc');exports['GetCmHopper']=function(_0xe56f5f){var _0x507486=this;return new Promise(function(_0x52a527,_0x304724){return db[_0x7443('0x4')][_0x7443('0x5')]({'raw':_0xe56f5f['options']?_0xe56f5f[_0x7443('0x6')][_0x7443('0x7')]===undefined?!![]:![]:!![],'where':_0xe56f5f[_0x7443('0x6')]?_0xe56f5f[_0x7443('0x6')][_0x7443('0x8')]||null:null,'attributes':_0xe56f5f['options']?_0xe56f5f[_0x7443('0x6')][_0x7443('0x9')]||null:null,'limit':_0xe56f5f[_0x7443('0x6')]?_0xe56f5f[_0x7443('0x6')][_0x7443('0xa')]||null:null,'include':_0xe56f5f[_0x7443('0x6')]?_0xe56f5f[_0x7443('0x6')][_0x7443('0xb')]?_[_0x7443('0xc')](_0xe56f5f[_0x7443('0x6')][_0x7443('0xb')],function(_0x3bf9a1){return{'model':db[_0x3bf9a1[_0x7443('0xd')]],'as':_0x3bf9a1['as'],'attributes':_0x3bf9a1[_0x7443('0x9')],'include':_0x3bf9a1[_0x7443('0xb')]?_[_0x7443('0xc')](_0x3bf9a1[_0x7443('0xb')],function(_0x59b582){return{'model':db[_0x59b582[_0x7443('0xd')]],'as':_0x59b582['as'],'attributes':_0x59b582[_0x7443('0x9')],'include':_0x59b582[_0x7443('0xb')]?_[_0x7443('0xc')](_0x59b582[_0x7443('0xb')],function(_0x43ba70){return{'model':db[_0x43ba70['model']],'as':_0x43ba70['as'],'attributes':_0x43ba70['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e7540){logger['info'](_0x7443('0xe'),_0xe56f5f);logger[_0x7443('0xf')]('GetCmHopper',_0xe56f5f,JSON[_0x7443('0x10')](_0x2e7540));_0x52a527(_0x2e7540);})[_0x7443('0x11')](function(_0x41c326){logger['error'](_0x7443('0xe'),_0x41c326[_0x7443('0x12')],_0xe56f5f);_0x304724(_0x507486[_0x7443('0x13')](0x1f4,_0x41c326[_0x7443('0x12')]));});});};exports[_0x7443('0x14')]=function(_0x38ad9a){var _0x22535c=this;return new Promise(function(_0xa7674,_0x1e24b0){return db[_0x7443('0x4')][_0x7443('0x15')]({'raw':_0x38ad9a[_0x7443('0x6')]?_0x38ad9a[_0x7443('0x6')][_0x7443('0x7')]===undefined?!![]:![]:!![],'where':_0x38ad9a['options']?_0x38ad9a['options'][_0x7443('0x8')]||null:null,'attributes':_0x38ad9a[_0x7443('0x6')]?_0x38ad9a[_0x7443('0x6')][_0x7443('0x9')]||null:null,'include':_0x38ad9a[_0x7443('0x6')]?_0x38ad9a[_0x7443('0x6')]['include']?_[_0x7443('0xc')](_0x38ad9a[_0x7443('0x6')][_0x7443('0xb')],function(_0x79757f){return{'model':db[_0x79757f['model']],'as':_0x79757f['as'],'attributes':_0x79757f['attributes'],'include':_0x79757f[_0x7443('0xb')]?_['map'](_0x79757f[_0x7443('0xb')],function(_0x4e3850){return{'model':db[_0x4e3850[_0x7443('0xd')]],'as':_0x4e3850['as'],'attributes':_0x4e3850[_0x7443('0x9')],'include':_0x4e3850[_0x7443('0xb')]?_['map'](_0x4e3850[_0x7443('0xb')],function(_0x5b8cc6){return{'model':db[_0x5b8cc6['model']],'as':_0x5b8cc6['as'],'attributes':_0x5b8cc6[_0x7443('0x9')]};}):[]};}):[]};}):[]:[]})[_0x7443('0x16')](function(_0x559636){logger[_0x7443('0x17')]('ShowCmHopper',_0x38ad9a);logger[_0x7443('0xf')](_0x7443('0x14'),_0x38ad9a,JSON['stringify'](_0x559636));_0xa7674(_0x559636);})[_0x7443('0x11')](function(_0x4c38ca){logger[_0x7443('0x13')](_0x7443('0x14'),_0x4c38ca[_0x7443('0x12')],_0x38ad9a);_0x1e24b0(_0x22535c[_0x7443('0x13')](0x1f4,_0x4c38ca['message']));});});};exports[_0x7443('0x18')]=function(_0x2e8f7b){var _0x3c8998=this;return new Promise(function(_0x543ac2,_0x2d03bf){return db[_0x7443('0x4')][_0x7443('0x19')](_0x2e8f7b['body'],{'raw':_0x2e8f7b[_0x7443('0x6')]?_0x2e8f7b[_0x7443('0x6')]['raw']===undefined?!![]:![]:!![]})[_0x7443('0x16')](function(_0x1b3764){logger['info'](_0x7443('0x18'),_0x2e8f7b);logger[_0x7443('0xf')](_0x7443('0x18'),_0x2e8f7b,JSON[_0x7443('0x10')](_0x1b3764));_0x543ac2(_0x1b3764);})[_0x7443('0x11')](function(_0x58396a){logger[_0x7443('0x13')]('CreateCmHopper',_0x58396a[_0x7443('0x12')],_0x2e8f7b);_0x2d03bf(_0x3c8998[_0x7443('0x13')](0x1f4,_0x58396a['message']));});});};exports[_0x7443('0x1a')]=function(_0x236107){var _0xf8ea03=this;return new Promise(function(_0x66de95,_0x562dc8){return db[_0x7443('0x4')]['update'](_0x236107[_0x7443('0x1b')],{'raw':_0x236107['options']?_0x236107[_0x7443('0x6')][_0x7443('0x7')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x236107[_0x7443('0x6')]?_0x236107[_0x7443('0x6')]['where']||null:null,'attributes':_0x236107[_0x7443('0x6')]?_0x236107[_0x7443('0x6')][_0x7443('0x9')]||null:null,'limit':_0x236107[_0x7443('0x6')]?_0x236107['options'][_0x7443('0xa')]||null:null})[_0x7443('0x16')](function(_0x3f4340){logger[_0x7443('0x17')]('UpdateCmHopper',_0x236107);logger[_0x7443('0x17')](_0x7443('0x1c'),JSON[_0x7443('0x10')](_0x236107['options'][_0x7443('0x8')]),_0x236107[_0x7443('0x1b')]['active']);logger[_0x7443('0xf')](_0x7443('0x1a'),_0x236107,JSON[_0x7443('0x10')](_0x3f4340));_0x66de95(_0x3f4340);})[_0x7443('0x11')](function(_0x16e833){logger[_0x7443('0x13')](_0x7443('0x1a'),_0x16e833[_0x7443('0x12')],_0x236107);_0x562dc8(_0xf8ea03[_0x7443('0x13')](0x1f4,_0x16e833[_0x7443('0x12')]));});});};exports[_0x7443('0x1d')]=function(_0x36351f){var _0x4f0271=this;return new Promise(function(_0xf24e1c,_0x3487f8){return db[_0x7443('0x4')][_0x7443('0x1e')]({'where':_0x36351f[_0x7443('0x6')]?_0x36351f[_0x7443('0x6')][_0x7443('0x8')]||null:null})[_0x7443('0x16')](function(_0x5793a9){logger[_0x7443('0x17')](_0x7443('0x1d'),_0x36351f);logger['debug'](_0x7443('0x1d'),_0x36351f,JSON['stringify'](_0x5793a9));_0xf24e1c(_0x5793a9);})['catch'](function(_0xb73fc9){logger[_0x7443('0x13')](_0x7443('0x1d'),_0xb73fc9['message'],_0x36351f);_0x3487f8(_0x4f0271[_0x7443('0x13')](0x1f4,_0xb73fc9[_0x7443('0x12')]));});});};exports[_0x7443('0x1f')]=function(_0x595898){var _0x39df93=this;return new Promise(function(_0x9b6437,_0x5547a0){return db[_0x7443('0x20')][_0x7443('0x21')]()['then'](function(_0x47dbc2){return db[_0x7443('0x22')][_0x7443('0x23')](function(_0x56ce2f){return db[_0x7443('0x4')][_0x7443('0x5')]({'where':_0x595898[_0x7443('0x6')]?_0x595898[_0x7443('0x6')][_0x7443('0x8')]||null:null,'attributes':_0x595898[_0x7443('0x6')]?_0x595898['options'][_0x7443('0x9')]||null:null,'limit':_0x595898[_0x7443('0x6')]?_0x595898[_0x7443('0x6')]['limit']||null:null,'order':_0x595898[_0x7443('0x6')]?_0x595898[_0x7443('0x6')][_0x7443('0x24')]||null:null,'transaction':_0x56ce2f,'lock':_0x56ce2f[_0x7443('0x25')]['UPDATE'],'include':[{'model':db[_0x7443('0x20')],'as':_0x7443('0x26'),'attributes':_[_0x7443('0x27')](_0x47dbc2)},{'model':db['User'],'as':_0x7443('0x28'),'attributes':['id','name',_0x7443('0x29')]}]})[_0x7443('0x16')](function(_0x551397){var _0x2f597d=[];var _0x485697=[];for(var _0x4f4e7b=0x0;_0x4f4e7b<_0x551397[_0x7443('0x2a')];_0x4f4e7b+=0x1){var _0x29f246=_0x551397[_0x4f4e7b][_0x7443('0x2b')];if(_0x29f246===null){_0x2f597d[_0x7443('0x2c')](_0x551397[_0x4f4e7b][_0x7443('0x2d')](_0x595898[_0x7443('0x1b')],{'transaction':_0x56ce2f}));}else if(!_0x485697[_0x7443('0x2e')](_0x29f246)){_0x485697['push'](_0x29f246);_0x2f597d[_0x7443('0x2c')](_0x551397[_0x4f4e7b][_0x7443('0x2d')](_0x595898[_0x7443('0x1b')],{'transaction':_0x56ce2f}));}}return BPromise[_0x7443('0x2f')](_0x2f597d);});})[_0x7443('0x16')](function(_0x4c46d8){logger[_0x7443('0x17')]('GetContactDialer',_0x595898);if(_0x4c46d8[_0x7443('0x2a')]>0x0){logger[_0x7443('0x17')](_0x7443('0x30'),_0x4c46d8[0x0][_0x7443('0x31')]['id'],_0x4c46d8[0x0]['dataValues'][_0x7443('0x32')],_0x4c46d8[0x0][_0x7443('0x31')][_0x7443('0x33')]);}logger[_0x7443('0xf')](_0x7443('0x1f'),_0x595898,JSON['stringify'](_0x4c46d8));_0x9b6437(_0x4c46d8);})[_0x7443('0x11')](function(_0x36da48){logger[_0x7443('0x13')](_0x7443('0x1f'),_0x36da48[_0x7443('0x12')],_0x595898);_0x5547a0(_0x39df93[_0x7443('0x13')](0x1f4,_0x36da48[_0x7443('0x12')]));});});});};exports[_0x7443('0x34')]=function(_0x7bcac3){var _0x49e4e7=this;return new Promise(function(_0x188514,_0xc5f24d){return db['sequelize'][_0x7443('0x23')](function(_0x28359d){return db[_0x7443('0x35')]['create'](_0x7bcac3[_0x7443('0x1b')],{'raw':_0x7bcac3[_0x7443('0x6')]?_0x7bcac3[_0x7443('0x6')][_0x7443('0x7')]===undefined?!![]:![]:!![],'transaction':_0x28359d})[_0x7443('0x16')](function(){logger[_0x7443('0x17')](_0x7443('0x36'),JSON[_0x7443('0x10')](_0x7bcac3['options']['where']),_0x7bcac3['options'][_0x7443('0x8')]['active']);return db['CmHopper'][_0x7443('0x1e')]({'where':_0x7bcac3[_0x7443('0x6')]?_0x7bcac3['options'][_0x7443('0x8')]||null:null,'transaction':_0x28359d});});})[_0x7443('0x16')](function(_0x36d65b){logger['info'](_0x7443('0x34'),_0x7bcac3);logger['debug'](_0x7443('0x34'),_0x7bcac3,JSON['stringify'](_0x36d65b));_0x188514(_0x36d65b);})[_0x7443('0x11')](function(_0x522e8c){logger['error']('MoveContactManagedDialer',_0x522e8c[_0x7443('0x12')],_0x7bcac3);_0xc5f24d(_0x49e4e7[_0x7443('0x13')](0x1f4,_0x522e8c[_0x7443('0x12')]));});});};exports[_0x7443('0x37')]=function(_0x5249f4){var _0x25d223=this;return new Promise(function(_0x232554,_0x141fa4){return db[_0x7443('0x4')][_0x7443('0x5')]({'raw':_0x5249f4[_0x7443('0x6')]?_0x5249f4['options']['raw']===undefined?!![]:![]:!![],'where':_0x5249f4[_0x7443('0x6')]?_0x5249f4['options'][_0x7443('0x8')]||null:null,'attributes':[[db[_0x7443('0x22')]['fn'](_0x7443('0x38'),db['sequelize']['fn']('IF',db[_0x7443('0x22')][_0x7443('0x39')](_0x7443('0x3a')+util['format']('\x22%s\x22',moment()[_0x7443('0x3b')](_0x7443('0x3c')))+_0x7443('0x3d')))),_0x7443('0x3e')]]})[_0x7443('0x16')](function(_0x5d356c){logger[_0x7443('0x17')](_0x7443('0x37'),_0x5249f4);logger[_0x7443('0xf')](_0x7443('0x37'),_0x5249f4,JSON['stringify'](_0x5d356c));_0x232554(_0x5d356c);})['catch'](function(_0x1b33ee){logger[_0x7443('0x13')](_0x7443('0x37'),_0x1b33ee[_0x7443('0x12')],_0x5249f4);_0x141fa4(_0x25d223[_0x7443('0x13')](0x1f4,_0x1b33ee['message']));});});};exports[_0x7443('0x3f')]=function(_0x4c9b9a){var _0x394aa3=this;return new Promise(function(_0x418454,_0xbd9559){return db['CmContact'][_0x7443('0x21')]()['then'](function(){return db['sequelize'][_0x7443('0x23')](function(_0xe32064){return db[_0x7443('0x4')]['findAll']({'where':_0x4c9b9a['options']?_0x4c9b9a[_0x7443('0x6')][_0x7443('0x8')]||null:null,'attributes':_0x4c9b9a[_0x7443('0x6')]?_0x4c9b9a[_0x7443('0x6')][_0x7443('0x9')]||null:null,'limit':0x1,'order':_0x4c9b9a[_0x7443('0x6')]?_0x4c9b9a[_0x7443('0x6')][_0x7443('0x24')]||null:null,'group':db[_0x7443('0x4')]['UserId'],'transaction':_0xe32064,'lock':_0xe32064['LOCK'][_0x7443('0x40')],'include':_0x4c9b9a[_0x7443('0x6')]?_0x4c9b9a[_0x7443('0x6')][_0x7443('0xb')]?_[_0x7443('0xc')](_0x4c9b9a['options']['include'],function(_0x284e20){return{'model':db[_0x284e20[_0x7443('0xd')]],'as':_0x284e20['as'],'attributes':_0x284e20[_0x7443('0x9')],'include':_0x284e20[_0x7443('0xb')]?_[_0x7443('0xc')](_0x284e20['include'],function(_0x4eea8e){return{'model':db[_0x4eea8e['model']],'as':_0x4eea8e['as'],'attributes':_0x4eea8e[_0x7443('0x9')],'include':_0x4eea8e[_0x7443('0xb')]?_[_0x7443('0xc')](_0x4eea8e[_0x7443('0xb')],function(_0x468e63){return{'model':db[_0x468e63['model']],'as':_0x468e63['as'],'attributes':_0x468e63[_0x7443('0x9')]};}):[]};}):[]};}):[]:[]})[_0x7443('0x16')](function(_0x12b187){var _0x326ca9=[];for(var _0x1e877b=0x0;_0x1e877b<_0x12b187['length'];_0x1e877b+=0x1){_0x326ca9[_0x7443('0x2c')](_0x12b187[_0x1e877b][_0x7443('0x2d')](_0x4c9b9a[_0x7443('0x1b')],{'transaction':_0xe32064}));}return BPromise[_0x7443('0x2f')](_0x326ca9);});})['then'](function(_0x5b28ad){logger['info']('GetContactRecallMe',_0x4c9b9a);logger[_0x7443('0xf')](_0x7443('0x3f'),_0x4c9b9a,JSON['stringify'](_0x5b28ad));_0x418454(_0x5b28ad);})[_0x7443('0x11')](function(_0x156fd9){logger[_0x7443('0x13')]('GetContactRecallMe',_0x156fd9[_0x7443('0x12')],_0x4c9b9a);_0xbd9559(_0x394aa3[_0x7443('0x13')](0x1f4,_0x156fd9[_0x7443('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x1a4f88){var _0x3d5bfb=this;return new Promise(function(_0x122a1c,_0x363970){db[_0x7443('0x20')][_0x7443('0x21')]()[_0x7443('0x16')](function(_0x4e7d40){return db['CmHopper'][_0x7443('0x5')]({'raw':_0x1a4f88[_0x7443('0x6')]?_0x1a4f88[_0x7443('0x6')][_0x7443('0x7')]===undefined?!![]:![]:!![],'where':_0x1a4f88[_0x7443('0x6')]?_0x1a4f88[_0x7443('0x6')][_0x7443('0x8')]||null:null,'attributes':_0x1a4f88['options']?_0x1a4f88[_0x7443('0x6')][_0x7443('0x9')]||null:null,'limit':_0x1a4f88['options']?_0x1a4f88[_0x7443('0x6')][_0x7443('0xa')]||null:null,'include':_0x1a4f88[_0x7443('0x6')]?_0x1a4f88['options']['include']?_[_0x7443('0xc')](_0x1a4f88['options'][_0x7443('0xb')],function(_0x2d3670){return{'model':db[_0x2d3670[_0x7443('0xd')]],'as':_0x2d3670['as'],'attributes':_0x2d3670['as']===_0x7443('0x26')?_[_0x7443('0x27')](_0x4e7d40):_0x2d3670[_0x7443('0x9')],'include':_0x2d3670[_0x7443('0xb')]?_[_0x7443('0xc')](_0x2d3670[_0x7443('0xb')],function(_0x31cc7a){return{'model':db[_0x31cc7a[_0x7443('0xd')]],'as':_0x31cc7a['as'],'attributes':_0x31cc7a[_0x7443('0x9')],'include':_0x31cc7a[_0x7443('0xb')]?_[_0x7443('0xc')](_0x31cc7a[_0x7443('0xb')],function(_0x3bf7d5){return{'model':db[_0x3bf7d5['model']],'as':_0x3bf7d5['as'],'attributes':_0x3bf7d5[_0x7443('0x9')]};}):[]};}):[]};}):[]:[]})[_0x7443('0x16')](function(_0x3859f9){logger[_0x7443('0x17')]('GetCmHopper',_0x1a4f88);logger['debug']('GetCmHopper',_0x1a4f88,JSON[_0x7443('0x10')](_0x3859f9));_0x122a1c(_0x3859f9);})['catch'](function(_0x391995){logger['error'](_0x7443('0xe'),_0x391995[_0x7443('0x12')],_0x1a4f88);_0x363970(_0x3d5bfb[_0x7443('0x13')](0x1f4,_0x391995[_0x7443('0x12')]));});});});};exports['GetContactByPhone']=function(_0x252656){var _0x49b1d4=this;return new Promise(function(_0x580d53,_0x589e9a){return db[_0x7443('0x20')][_0x7443('0x41')]({'raw':!![],'where':{'phone':_0x252656[_0x7443('0x6')]['where']['phone']},'attributes':['id','dialTimezone'],'order':[['id',_0x7443('0x42')]]})[_0x7443('0x16')](function(_0x11f9d2){logger[_0x7443('0x17')]('getContactByPhone',_0x252656);logger[_0x7443('0xf')]('getContactByPhone',_0x252656,JSON[_0x7443('0x10')](_0x11f9d2));_0x580d53(_0x11f9d2);})['catch'](function(_0x309f76){logger['error'](_0x7443('0x43'),_0x309f76[_0x7443('0x12')],_0x252656);_0x589e9a(_0x49b1d4[_0x7443('0x13')](0x1f4,_0x309f76['message']));});});};exports[_0x7443('0x44')]=function(_0x200cd9){var _0x5d68a8=this;return new Promise(function(_0x218da7,_0x423cd5){return db[_0x7443('0x22')][_0x7443('0x23')](function(_0x2730f3){var _0x83fcb0=_0x200cd9[_0x7443('0x6')]&&_0x200cd9['options']['where']?_0x200cd9['options']['where']:{};return db[_0x7443('0x4')][_0x7443('0x2d')](_0x200cd9[_0x7443('0x1b')],{'where':_0x83fcb0,'transaction':_0x2730f3})[_0x7443('0x16')](function(_0x2869ea){logger[_0x7443('0x17')](_0x7443('0x44'),_0x200cd9);logger[_0x7443('0xf')](_0x7443('0x44'),_0x200cd9,JSON[_0x7443('0x10')](_0x2869ea));_0x218da7(_0x2869ea);})['catch'](function(_0x574bbe){logger['error'](_0x7443('0x44'),_0x574bbe['message'],_0x200cd9);_0x423cd5(_0x5d68a8[_0x7443('0x13')](0x1f4,_0x574bbe[_0x7443('0x12')]));});});});};exports[_0x7443('0x45')]=function(_0x44cb36){var _0x13c72e=this;var _0x1a1295=_0x44cb36[_0x7443('0x1b')][_0x7443('0x8')][_0x7443('0x46')];var _0x49b238=_0x44cb36[_0x7443('0x1b')][_0x7443('0x8')][_0x7443('0x47')];var _0x49468b=_0x44cb36[_0x7443('0x1b')][_0x7443('0x8')][_0x7443('0x48')];return new Promise(function(_0x34ff00,_0x41f723){return db[_0x7443('0x4')][_0x7443('0x5')]({'where':{'voiceQueueId':{'$in':_0x1a1295},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x7443('0x39')](_0x7443('0x49')+_0x49b238+_0x7443('0x4a')),'$gt':db['sequelize']['literal']('NOW()')}},'UserId':{'$in':_0x49468b}},'include':[{'model':db[_0x7443('0x20')],'as':_0x7443('0x26')},{'model':db['User'],'as':_0x7443('0x28'),'attributes':['id',_0x7443('0x4b'),_0x7443('0x29')]},{'model':db[_0x7443('0x4c')],'as':_0x7443('0x4d')}]})[_0x7443('0x16')](function(_0x5307c7){if(_0x5307c7[_0x7443('0x2a')]>0x0){return db['sequelize'][_0x7443('0x23')](function(_0x133c56){return db[_0x7443('0x4')]['update']({'recallmeNotifiedDate':db[_0x7443('0x22')][_0x7443('0x39')](_0x7443('0x4e'))},{'where':{'id':{'$in':_['map'](_0x5307c7,'id')}},'transaction':_0x133c56})[_0x7443('0x16')](function(){_0x34ff00(_0x5307c7);})['catch'](function(_0x1333f3){logger[_0x7443('0x13')](_0x7443('0x45'),_0x1333f3[_0x7443('0x12')],_0x44cb36);_0x41f723(_0x13c72e[_0x7443('0x13')](0x1f4,_0x1333f3[_0x7443('0x12')]));});})[_0x7443('0x11')](function(_0x50f3b0){logger[_0x7443('0x13')](_0x7443('0x45'),_0x50f3b0[_0x7443('0x12')],_0x44cb36);_0x41f723(_0x13c72e[_0x7443('0x13')](0x1f4,_0x50f3b0[_0x7443('0x12')]));});}else{_0x34ff00(_0x5307c7);}});});};
\ No newline at end of file
+var _0xbc86=['body','stringify','catch','message','DestroyCmHopper','GetContactDialer','CmContact','transaction','LOCK','UPDATE','Contact','User','Agent','name','voicePause','length','UserId','includes','push','update','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','active','MoveContactManagedDialer','sequelize','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','CountReScheduled','literal','format','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','describe','order','GetCmHopperPreview','keys','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','\x20MINUTE','NOW()','List','lodash','../../mysqldb','../../config/logger','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetCmHopper','debug','error','find','ShowCmHopper','CreateCmHopper','create','UpdateCmHopper'];(function(_0x4cea3c,_0x407da8){var _0x32c9bb=function(_0x15d61a){while(--_0x15d61a){_0x4cea3c['push'](_0x4cea3c['shift']());}};_0x32c9bb(++_0x407da8);}(_0xbc86,0x119));var _0x6bc8=function(_0x54daf0,_0x50da28){_0x54daf0=_0x54daf0-0x0;var _0x14ff84=_0xbc86[_0x54daf0];return _0x14ff84;};'use strict';var _=require(_0x6bc8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var db=require(_0x6bc8('0x1'))['db'];var logger=require(_0x6bc8('0x2'))('rpc');exports['GetCmHopper']=function(_0x4e80b4){var _0x47ceaa=this;return new Promise(function(_0xe0add2,_0x32a193){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'raw':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4['options'][_0x6bc8('0x7')]||null:null,'attributes':_0x4e80b4['options']?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'include':_0x4e80b4[_0x6bc8('0x5')]?_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x4e80b4[_0x6bc8('0x5')][_0x6bc8('0xa')],function(_0x2baede){return{'model':db[_0x2baede[_0x6bc8('0xc')]],'as':_0x2baede['as'],'attributes':_0x2baede['attributes'],'include':_0x2baede[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2baede[_0x6bc8('0xa')],function(_0x2f1e23){return{'model':db[_0x2f1e23[_0x6bc8('0xc')]],'as':_0x2f1e23['as'],'attributes':_0x2f1e23[_0x6bc8('0x8')],'include':_0x2f1e23[_0x6bc8('0xa')]?_['map'](_0x2f1e23['include'],function(_0xf5ddd4){return{'model':db[_0xf5ddd4['model']],'as':_0xf5ddd4['as'],'attributes':_0xf5ddd4['attributes']};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x317cf0){logger[_0x6bc8('0xe')](_0x6bc8('0xf'),_0x4e80b4);logger[_0x6bc8('0x10')](_0x6bc8('0xf'),_0x4e80b4,JSON['stringify'](_0x317cf0));_0xe0add2(_0x317cf0);})['catch'](function(_0x4510d9){logger[_0x6bc8('0x11')]('GetCmHopper',_0x4510d9['message'],_0x4e80b4);_0x32a193(_0x47ceaa[_0x6bc8('0x11')](0x1f4,_0x4510d9['message']));});});};exports['ShowCmHopper']=function(_0x55cdf6){var _0x455f8a=this;return new Promise(function(_0x36e328,_0x26e0ad){return db[_0x6bc8('0x3')][_0x6bc8('0x12')]({'raw':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'include':_0x55cdf6[_0x6bc8('0x5')]?_0x55cdf6[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x55cdf6['options'][_0x6bc8('0xa')],function(_0x3f14cc){return{'model':db[_0x3f14cc[_0x6bc8('0xc')]],'as':_0x3f14cc['as'],'attributes':_0x3f14cc['attributes'],'include':_0x3f14cc[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x3f14cc[_0x6bc8('0xa')],function(_0x2de241){return{'model':db[_0x2de241[_0x6bc8('0xc')]],'as':_0x2de241['as'],'attributes':_0x2de241[_0x6bc8('0x8')],'include':_0x2de241[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2de241[_0x6bc8('0xa')],function(_0x45e038){return{'model':db[_0x45e038[_0x6bc8('0xc')]],'as':_0x45e038['as'],'attributes':_0x45e038[_0x6bc8('0x8')]};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x13e74a){logger[_0x6bc8('0xe')]('ShowCmHopper',_0x55cdf6);logger[_0x6bc8('0x10')](_0x6bc8('0x13'),_0x55cdf6,JSON['stringify'](_0x13e74a));_0x36e328(_0x13e74a);})['catch'](function(_0x3c4c55){logger['error'](_0x6bc8('0x13'),_0x3c4c55['message'],_0x55cdf6);_0x26e0ad(_0x455f8a[_0x6bc8('0x11')](0x1f4,_0x3c4c55['message']));});});};exports[_0x6bc8('0x14')]=function(_0x2ae669){var _0x5c6628=this;return new Promise(function(_0x55319a,_0x5b685f){return db[_0x6bc8('0x3')][_0x6bc8('0x15')](_0x2ae669['body'],{'raw':_0x2ae669['options']?_0x2ae669[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![]})[_0x6bc8('0xd')](function(_0x228cbf){logger[_0x6bc8('0xe')](_0x6bc8('0x14'),_0x2ae669);logger[_0x6bc8('0x10')](_0x6bc8('0x14'),_0x2ae669,JSON['stringify'](_0x228cbf));_0x55319a(_0x228cbf);})['catch'](function(_0x14158d){logger[_0x6bc8('0x11')](_0x6bc8('0x14'),_0x14158d['message'],_0x2ae669);_0x5b685f(_0x5c6628[_0x6bc8('0x11')](0x1f4,_0x14158d['message']));});});};exports[_0x6bc8('0x16')]=function(_0x477c50){var _0x5b153e=this;return new Promise(function(_0x28de84,_0x4bac33){return db[_0x6bc8('0x3')]['update'](_0x477c50[_0x6bc8('0x17')],{'raw':_0x477c50['options']?_0x477c50[_0x6bc8('0x5')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x477c50[_0x6bc8('0x5')]?_0x477c50[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x477c50['options']?_0x477c50[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x477c50[_0x6bc8('0x5')]?_0x477c50[_0x6bc8('0x5')]['limit']||null:null})[_0x6bc8('0xd')](function(_0x43b8c8){logger[_0x6bc8('0xe')](_0x6bc8('0x16'),_0x477c50);logger[_0x6bc8('0xe')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0x6bc8('0x18')](_0x477c50['options'][_0x6bc8('0x7')]),_0x477c50[_0x6bc8('0x17')]['active']);logger[_0x6bc8('0x10')](_0x6bc8('0x16'),_0x477c50,JSON[_0x6bc8('0x18')](_0x43b8c8));_0x28de84(_0x43b8c8);})[_0x6bc8('0x19')](function(_0x583f96){logger[_0x6bc8('0x11')](_0x6bc8('0x16'),_0x583f96[_0x6bc8('0x1a')],_0x477c50);_0x4bac33(_0x5b153e[_0x6bc8('0x11')](0x1f4,_0x583f96[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x1b')]=function(_0x505399){var _0x472b31=this;return new Promise(function(_0xdd966d,_0x4ee74c){return db[_0x6bc8('0x3')]['destroy']({'where':_0x505399[_0x6bc8('0x5')]?_0x505399[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null})[_0x6bc8('0xd')](function(_0x20305e){logger[_0x6bc8('0xe')](_0x6bc8('0x1b'),_0x505399);logger['debug']('DestroyCmHopper',_0x505399,JSON['stringify'](_0x20305e));_0xdd966d(_0x20305e);})[_0x6bc8('0x19')](function(_0x4f829c){logger[_0x6bc8('0x11')]('DestroyCmHopper',_0x4f829c[_0x6bc8('0x1a')],_0x505399);_0x4ee74c(_0x472b31['error'](0x1f4,_0x4f829c[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x1c')]=function(_0x8db278){var _0x8e82d8=this;return new Promise(function(_0x4edbff,_0x73b570){return db[_0x6bc8('0x1d')]['describe']()['then'](function(_0x15ab48){return db['sequelize'][_0x6bc8('0x1e')](function(_0x33296b){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'where':_0x8db278[_0x6bc8('0x5')]?_0x8db278['options']['where']||null:null,'attributes':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'order':_0x8db278[_0x6bc8('0x5')]?_0x8db278[_0x6bc8('0x5')]['order']||null:null,'transaction':_0x33296b,'lock':_0x33296b[_0x6bc8('0x1f')][_0x6bc8('0x20')],'include':[{'model':db[_0x6bc8('0x1d')],'as':_0x6bc8('0x21'),'attributes':_['keys'](_0x15ab48)},{'model':db[_0x6bc8('0x22')],'as':_0x6bc8('0x23'),'attributes':['id',_0x6bc8('0x24'),_0x6bc8('0x25')]}]})[_0x6bc8('0xd')](function(_0x4558c7){var _0x9998fd=[];var _0x5a13e1=[];for(var _0x1c1eba=0x0;_0x1c1eba<_0x4558c7[_0x6bc8('0x26')];_0x1c1eba+=0x1){var _0x296990=_0x4558c7[_0x1c1eba][_0x6bc8('0x27')];if(_0x296990===null){_0x9998fd['push'](_0x4558c7[_0x1c1eba]['update'](_0x8db278[_0x6bc8('0x17')],{'transaction':_0x33296b}));}else if(!_0x5a13e1[_0x6bc8('0x28')](_0x296990)){_0x5a13e1['push'](_0x296990);_0x9998fd[_0x6bc8('0x29')](_0x4558c7[_0x1c1eba][_0x6bc8('0x2a')](_0x8db278[_0x6bc8('0x17')],{'transaction':_0x33296b}));}}return BPromise[_0x6bc8('0x2b')](_0x9998fd);});})[_0x6bc8('0xd')](function(_0x37766e){logger['info'](_0x6bc8('0x1c'),_0x8db278);if(_0x37766e['length']>0x0){logger[_0x6bc8('0xe')](_0x6bc8('0x2c'),_0x37766e[0x0][_0x6bc8('0x2d')]['id'],_0x37766e[0x0][_0x6bc8('0x2d')]['ContactId'],_0x37766e[0x0][_0x6bc8('0x2d')][_0x6bc8('0x2e')]);}logger[_0x6bc8('0x10')](_0x6bc8('0x1c'),_0x8db278,JSON[_0x6bc8('0x18')](_0x37766e));_0x4edbff(_0x37766e);})[_0x6bc8('0x19')](function(_0xecfc7a){logger[_0x6bc8('0x11')](_0x6bc8('0x1c'),_0xecfc7a['message'],_0x8db278);_0x73b570(_0x8e82d8['error'](0x1f4,_0xecfc7a[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x2f')]=function(_0x1fe51e){var _0xcb4996=this;return new Promise(function(_0x2502d2,_0x2a4125){return db[_0x6bc8('0x30')][_0x6bc8('0x1e')](function(_0x54e959){return db[_0x6bc8('0x31')][_0x6bc8('0x15')](_0x1fe51e[_0x6bc8('0x17')],{'raw':_0x1fe51e[_0x6bc8('0x5')]?_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'transaction':_0x54e959})[_0x6bc8('0xd')](function(){logger['info'](_0x6bc8('0x32'),JSON[_0x6bc8('0x18')](_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')]),_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')][_0x6bc8('0x2e')]);return db[_0x6bc8('0x3')][_0x6bc8('0x33')]({'where':_0x1fe51e[_0x6bc8('0x5')]?_0x1fe51e[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'transaction':_0x54e959});});})[_0x6bc8('0xd')](function(_0x41bb36){logger[_0x6bc8('0xe')](_0x6bc8('0x2f'),_0x1fe51e);logger[_0x6bc8('0x10')](_0x6bc8('0x2f'),_0x1fe51e,JSON[_0x6bc8('0x18')](_0x41bb36));_0x2502d2(_0x41bb36);})[_0x6bc8('0x19')](function(_0xa516f3){logger['error'](_0x6bc8('0x2f'),_0xa516f3[_0x6bc8('0x1a')],_0x1fe51e);_0x2a4125(_0xcb4996[_0x6bc8('0x11')](0x1f4,_0xa516f3[_0x6bc8('0x1a')]));});});};exports[_0x6bc8('0x34')]=function(_0x26e473){var _0x1cee31=this;return new Promise(function(_0x556013,_0x144426){return db[_0x6bc8('0x3')]['findAll']({'raw':_0x26e473[_0x6bc8('0x5')]?_0x26e473[_0x6bc8('0x5')][_0x6bc8('0x6')]===undefined?!![]:![]:!![],'where':_0x26e473[_0x6bc8('0x5')]?_0x26e473[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':[[db[_0x6bc8('0x30')]['fn']('COUNT',db[_0x6bc8('0x30')]['fn']('IF',db['sequelize'][_0x6bc8('0x35')]('`scheduledat`\x20>=\x20'+util[_0x6bc8('0x36')]('\x22%s\x22',moment()[_0x6bc8('0x36')](_0x6bc8('0x37')))+'\x20,\x201,\x20null'))),_0x6bc8('0x38')]]})['then'](function(_0x1c5734){logger[_0x6bc8('0xe')](_0x6bc8('0x34'),_0x26e473);logger[_0x6bc8('0x10')](_0x6bc8('0x34'),_0x26e473,JSON[_0x6bc8('0x18')](_0x1c5734));_0x556013(_0x1c5734);})[_0x6bc8('0x19')](function(_0x404360){logger[_0x6bc8('0x11')](_0x6bc8('0x34'),_0x404360['message'],_0x26e473);_0x144426(_0x1cee31[_0x6bc8('0x11')](0x1f4,_0x404360['message']));});});};exports[_0x6bc8('0x39')]=function(_0x4a5a79){var _0x68bf74=this;return new Promise(function(_0x23f6d6,_0x357896){return db[_0x6bc8('0x1d')][_0x6bc8('0x3a')]()[_0x6bc8('0xd')](function(){return db['sequelize']['transaction'](function(_0xc7a860){return db['CmHopper']['findAll']({'where':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0x8')]||null:null,'limit':0x1,'order':_0x4a5a79[_0x6bc8('0x5')]?_0x4a5a79['options'][_0x6bc8('0x3b')]||null:null,'group':db[_0x6bc8('0x3')][_0x6bc8('0x27')],'transaction':_0xc7a860,'lock':_0xc7a860[_0x6bc8('0x1f')][_0x6bc8('0x20')],'include':_0x4a5a79['options']?_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x4a5a79[_0x6bc8('0x5')][_0x6bc8('0xa')],function(_0x1d3a4a){return{'model':db[_0x1d3a4a['model']],'as':_0x1d3a4a['as'],'attributes':_0x1d3a4a['attributes'],'include':_0x1d3a4a['include']?_[_0x6bc8('0xb')](_0x1d3a4a['include'],function(_0x2fa9d1){return{'model':db[_0x2fa9d1[_0x6bc8('0xc')]],'as':_0x2fa9d1['as'],'attributes':_0x2fa9d1[_0x6bc8('0x8')],'include':_0x2fa9d1[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x2fa9d1[_0x6bc8('0xa')],function(_0x4ab2cd){return{'model':db[_0x4ab2cd['model']],'as':_0x4ab2cd['as'],'attributes':_0x4ab2cd['attributes']};}):[]};}):[]};}):[]:[]})[_0x6bc8('0xd')](function(_0x927ba6){var _0x4c3872=[];for(var _0x1f149e=0x0;_0x1f149e<_0x927ba6[_0x6bc8('0x26')];_0x1f149e+=0x1){_0x4c3872[_0x6bc8('0x29')](_0x927ba6[_0x1f149e][_0x6bc8('0x2a')](_0x4a5a79[_0x6bc8('0x17')],{'transaction':_0xc7a860}));}return BPromise[_0x6bc8('0x2b')](_0x4c3872);});})['then'](function(_0x39f6ab){logger['info'](_0x6bc8('0x39'),_0x4a5a79);logger[_0x6bc8('0x10')]('GetContactRecallMe',_0x4a5a79,JSON[_0x6bc8('0x18')](_0x39f6ab));_0x23f6d6(_0x39f6ab);})[_0x6bc8('0x19')](function(_0xa25b24){logger['error'](_0x6bc8('0x39'),_0xa25b24[_0x6bc8('0x1a')],_0x4a5a79);_0x357896(_0x68bf74['error'](0x1f4,_0xa25b24[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x3c')]=function(_0x282245){var _0x3043fb=this;return new Promise(function(_0x5bb69b,_0x4c8a88){db['CmContact'][_0x6bc8('0x3a')]()[_0x6bc8('0xd')](function(_0x1c00ff){return db['CmHopper'][_0x6bc8('0x4')]({'raw':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')]['raw']===undefined?!![]:![]:!![],'where':_0x282245['options']?_0x282245[_0x6bc8('0x5')][_0x6bc8('0x7')]||null:null,'attributes':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')]['attributes']||null:null,'limit':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')][_0x6bc8('0x9')]||null:null,'include':_0x282245[_0x6bc8('0x5')]?_0x282245[_0x6bc8('0x5')][_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x282245['options'][_0x6bc8('0xa')],function(_0xb59a44){return{'model':db[_0xb59a44[_0x6bc8('0xc')]],'as':_0xb59a44['as'],'attributes':_0xb59a44['as']===_0x6bc8('0x21')?_[_0x6bc8('0x3d')](_0x1c00ff):_0xb59a44[_0x6bc8('0x8')],'include':_0xb59a44[_0x6bc8('0xa')]?_['map'](_0xb59a44[_0x6bc8('0xa')],function(_0x3c22cc){return{'model':db[_0x3c22cc['model']],'as':_0x3c22cc['as'],'attributes':_0x3c22cc[_0x6bc8('0x8')],'include':_0x3c22cc[_0x6bc8('0xa')]?_[_0x6bc8('0xb')](_0x3c22cc['include'],function(_0x325869){return{'model':db[_0x325869[_0x6bc8('0xc')]],'as':_0x325869['as'],'attributes':_0x325869[_0x6bc8('0x8')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f5415){logger['info'](_0x6bc8('0xf'),_0x282245);logger[_0x6bc8('0x10')]('GetCmHopper',_0x282245,JSON['stringify'](_0x5f5415));_0x5bb69b(_0x5f5415);})[_0x6bc8('0x19')](function(_0x2fa679){logger[_0x6bc8('0x11')](_0x6bc8('0xf'),_0x2fa679[_0x6bc8('0x1a')],_0x282245);_0x4c8a88(_0x3043fb['error'](0x1f4,_0x2fa679['message']));});});});};exports[_0x6bc8('0x3e')]=function(_0x36e8b0){var _0x3c1ce4=this;return new Promise(function(_0x31a821,_0xe1b509){return db[_0x6bc8('0x1d')][_0x6bc8('0x3f')]({'raw':!![],'where':{'phone':_0x36e8b0[_0x6bc8('0x5')][_0x6bc8('0x7')][_0x6bc8('0x40')]},'attributes':['id',_0x6bc8('0x41')],'order':[['id',_0x6bc8('0x42')]]})[_0x6bc8('0xd')](function(_0x21ac60){logger[_0x6bc8('0xe')]('getContactByPhone',_0x36e8b0);logger['debug'](_0x6bc8('0x43'),_0x36e8b0,JSON[_0x6bc8('0x18')](_0x21ac60));_0x31a821(_0x21ac60);})[_0x6bc8('0x19')](function(_0x37f248){logger['error'](_0x6bc8('0x43'),_0x37f248[_0x6bc8('0x1a')],_0x36e8b0);_0xe1b509(_0x3c1ce4[_0x6bc8('0x11')](0x1f4,_0x37f248['message']));});});};exports[_0x6bc8('0x44')]=function(_0x575fb7){var _0x578293=this;return new Promise(function(_0x1f8bbd,_0x58a1f1){return db[_0x6bc8('0x30')][_0x6bc8('0x1e')](function(_0x3c6f42){var _0x281bc1=_0x575fb7[_0x6bc8('0x5')]&&_0x575fb7[_0x6bc8('0x5')][_0x6bc8('0x7')]?_0x575fb7[_0x6bc8('0x5')][_0x6bc8('0x7')]:{};return db[_0x6bc8('0x3')][_0x6bc8('0x2a')](_0x575fb7[_0x6bc8('0x17')],{'where':_0x281bc1,'transaction':_0x3c6f42})[_0x6bc8('0xd')](function(_0x14cb85){logger[_0x6bc8('0xe')]('ResetActiveCalls',_0x575fb7);logger[_0x6bc8('0x10')](_0x6bc8('0x44'),_0x575fb7,JSON[_0x6bc8('0x18')](_0x14cb85));_0x1f8bbd(_0x14cb85);})['catch'](function(_0x240bad){logger[_0x6bc8('0x11')]('ResetActiveCalls',_0x240bad['message'],_0x575fb7);_0x58a1f1(_0x578293['error'](0x1f4,_0x240bad[_0x6bc8('0x1a')]));});});});};exports[_0x6bc8('0x45')]=function(_0x37442f){var _0x321bad=this;var _0x408af5=_0x37442f[_0x6bc8('0x17')]['where'][_0x6bc8('0x46')];var _0x451186=_0x37442f[_0x6bc8('0x17')][_0x6bc8('0x7')][_0x6bc8('0x47')];var _0x3be27=_0x37442f[_0x6bc8('0x17')][_0x6bc8('0x7')][_0x6bc8('0x48')];return new Promise(function(_0x90d9f9,_0x40dfe7){return db[_0x6bc8('0x3')][_0x6bc8('0x4')]({'where':{'voiceQueueId':{'$in':_0x408af5},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x6bc8('0x35')]('NOW()\x20+\x20INTERVAL\x20'+_0x451186+_0x6bc8('0x49')),'$gt':db[_0x6bc8('0x30')][_0x6bc8('0x35')](_0x6bc8('0x4a'))}},'UserId':{'$in':_0x3be27}},'include':[{'model':db[_0x6bc8('0x1d')],'as':_0x6bc8('0x21')},{'model':db[_0x6bc8('0x22')],'as':_0x6bc8('0x23'),'attributes':['id',_0x6bc8('0x24'),_0x6bc8('0x25')]},{'model':db['CmList'],'as':_0x6bc8('0x4b')}]})[_0x6bc8('0xd')](function(_0x328ccf){if(_0x328ccf[_0x6bc8('0x26')]>0x0){return db['sequelize']['transaction'](function(_0xe18ce9){return db[_0x6bc8('0x3')]['update']({'recallmeNotifiedDate':db['sequelize']['literal'](_0x6bc8('0x4a'))},{'where':{'id':{'$in':_[_0x6bc8('0xb')](_0x328ccf,'id')}},'transaction':_0xe18ce9})[_0x6bc8('0xd')](function(){_0x90d9f9(_0x328ccf);})[_0x6bc8('0x19')](function(_0x566d30){logger[_0x6bc8('0x11')]('CmHopperHandlePreviewRecallNotifications',_0x566d30[_0x6bc8('0x1a')],_0x37442f);_0x40dfe7(_0x321bad['error'](0x1f4,_0x566d30['message']));});})[_0x6bc8('0x19')](function(_0x1d0182){logger['error'](_0x6bc8('0x45'),_0x1d0182[_0x6bc8('0x1a')],_0x37442f);_0x40dfe7(_0x321bad[_0x6bc8('0x11')](0x1f4,_0x1d0182[_0x6bc8('0x1a')]));});}else{_0x90d9f9(_0x328ccf);}});});};
\ No newline at end of file
index 7769e7c..3e4a0d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x482f=['put','update','delete','exports','express','Router','../../components/auth/service','./cmHopper.controller','get','index','isAuthenticated','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','getPreviewRecall','create','post','/preview','getPreview','/timezone','getTimezone'];(function(_0x413aac,_0x5e2430){var _0x569b11=function(_0x52e060){while(--_0x52e060){_0x413aac['push'](_0x413aac['shift']());}};_0x569b11(++_0x5e2430);}(_0x482f,0x13c));var _0xf482=function(_0x28aa05,_0x3a0519){_0x28aa05=_0x28aa05-0x0;var _0x4d3378=_0x482f[_0x28aa05];return _0x4d3378;};'use strict';var express=require(_0xf482('0x0'));var router=express[_0xf482('0x1')]();var auth=require(_0xf482('0x2'));var controller=require(_0xf482('0x3'));router[_0xf482('0x4')]('/',auth['isAuthenticated'](),controller[_0xf482('0x5')]);router[_0xf482('0x4')]('/describe',auth[_0xf482('0x6')](),controller[_0xf482('0x7')]);router[_0xf482('0x4')](_0xf482('0x8'),auth[_0xf482('0x6')](),controller[_0xf482('0x9')]);router['get'](_0xf482('0xa'),auth[_0xf482('0x6')](),controller[_0xf482('0xb')]);router['get'](_0xf482('0xc'),auth[_0xf482('0x6')](),controller[_0xf482('0xd')]);router[_0xf482('0x4')](_0xf482('0xe'),auth[_0xf482('0x6')](),controller[_0xf482('0xf')]);router['post']('/',auth[_0xf482('0x6')](),controller[_0xf482('0x10')]);router[_0xf482('0x11')](_0xf482('0x12'),auth[_0xf482('0x6')](),controller[_0xf482('0x13')]);router[_0xf482('0x11')](_0xf482('0x14'),auth[_0xf482('0x6')](),controller[_0xf482('0x15')]);router[_0xf482('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xf482('0x17')]);router[_0xf482('0x18')]('/:id',auth[_0xf482('0x6')](),controller['destroy']);module[_0xf482('0x19')]=router;
\ No newline at end of file
+var _0xd3a0=['get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','getPreviewRecall','post','getPreview','/timezone','getTimezone','put','update','delete','destroy','exports','Router','../../components/auth/service','./cmHopper.controller'];(function(_0x2145c0,_0x389c37){var _0x74496c=function(_0x2d109e){while(--_0x2d109e){_0x2145c0['push'](_0x2145c0['shift']());}};_0x74496c(++_0x389c37);}(_0xd3a0,0x1f1));var _0x0d3a=function(_0x35cad4,_0x5a8613){_0x35cad4=_0x35cad4-0x0;var _0x1e0e54=_0xd3a0[_0x35cad4];return _0x1e0e54;};'use strict';var express=require('express');var router=express[_0x0d3a('0x0')]();var auth=require(_0x0d3a('0x1'));var controller=require(_0x0d3a('0x2'));router[_0x0d3a('0x3')]('/',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x5')]);router['get'](_0x0d3a('0x6'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x7')]);router['get'](_0x0d3a('0x8'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x9')]);router[_0x0d3a('0x3')](_0x0d3a('0xa'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xb')]);router[_0x0d3a('0x3')](_0x0d3a('0xc'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xd')]);router[_0x0d3a('0x3')](_0x0d3a('0xe'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0xf')]);router[_0x0d3a('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0d3a('0x10')]('/preview',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x11')]);router['post'](_0x0d3a('0x12'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x13')]);router[_0x0d3a('0x14')](_0x0d3a('0xc'),auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x15')]);router[_0x0d3a('0x16')]('/:id',auth[_0x0d3a('0x4')](),controller[_0x0d3a('0x17')]);module[_0x0d3a('0x18')]=router;
\ No newline at end of file
index ab78adb..278e696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ce=['exports','INTEGER','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x17777a,_0x31b31d){var _0x2c89f6=function(_0x45963d){while(--_0x45963d){_0x17777a['push'](_0x17777a['shift']());}};_0x2c89f6(++_0x31b31d);}(_0xe5ce,0x10e));var _0xee5c=function(_0x4c7c6b,_0x442a47){_0x4c7c6b=_0x4c7c6b-0x0;var _0x3fa02f=_0xe5ce[_0x4c7c6b];return _0x3fa02f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xee5c('0x0')]={'CmHopperId':{'type':Sequelize[_0xee5c('0x1')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0xee5c('0x2'))},'countbusyretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xee5c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7037=['YYYY-MM-DD\x20HH:mm:ss','sequelize','exports','INTEGER','STRING','DATE','format'];(function(_0x368f9d,_0x542fd7){var _0x40ace0=function(_0x34bb18){while(--_0x34bb18){_0x368f9d['push'](_0x368f9d['shift']());}};_0x40ace0(++_0x542fd7);}(_0x7037,0x15f));var _0x7703=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x7037[_0x4e676e];return _0x336a3c;};'use strict';var moment=require('moment');var Sequelize=require(_0x7703('0x0'));module[_0x7703('0x1')]={'CmHopperId':{'type':Sequelize[_0x7703('0x2')]},'phone':{'type':Sequelize[_0x7703('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x7703('0x4')],'defaultValue':moment()[_0x7703('0x5')](_0x7703('0x6'))},'countbusyretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7703('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e26405c..8403344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d80=['reject','save','update','then','get','CmHopperAdditionalPhones','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','show','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','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply'];(function(_0x2b1045,_0x193c73){var _0x56bea2=function(_0x4833d1){while(--_0x4833d1){_0x2b1045['push'](_0x2b1045['shift']());}};_0x56bea2(++_0x193c73);}(_0x5d80,0x18c));var _0x05d8=function(_0xcc9a62,_0x50c395){_0xcc9a62=_0xcc9a62-0x0;var _0x10556d=_0x5d80[_0xcc9a62];return _0x10556d;};'use strict';var emlformat=require(_0x05d8('0x0'));var rimraf=require(_0x05d8('0x1'));var zipdir=require(_0x05d8('0x2'));var jsonpatch=require(_0x05d8('0x3'));var rp=require(_0x05d8('0x4'));var moment=require('moment');var BPromise=require(_0x05d8('0x5'));var Mustache=require(_0x05d8('0x6'));var util=require(_0x05d8('0x7'));var path=require(_0x05d8('0x8'));var sox=require(_0x05d8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x05d8('0xa'));var squel=require('squel');var crypto=require(_0x05d8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x05d8('0xc'));var toCsv=require('to-csv');var querystring=require(_0x05d8('0xd'));var Papa=require(_0x05d8('0xe'));var Redis=require(_0x05d8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x05d8('0x10'));var as=require(_0x05d8('0x11'));var hardwareService=require(_0x05d8('0x12'));var logger=require('../../config/logger')(_0x05d8('0x13'));var utils=require(_0x05d8('0x14'));var config=require(_0x05d8('0x15'));var licenseUtil=require(_0x05d8('0x16'));var db=require(_0x05d8('0x17'))['db'];function respondWithStatusCode(_0x5dd7c6,_0x2a78a6){_0x2a78a6=_0x2a78a6||0xcc;return function(_0x395ae2){if(_0x395ae2){return _0x5dd7c6[_0x05d8('0x18')](_0x2a78a6);}return _0x5dd7c6[_0x05d8('0x19')](_0x2a78a6)[_0x05d8('0x1a')]();};}function respondWithResult(_0x5e143c,_0x4020de){_0x4020de=_0x4020de||0xc8;return function(_0x2dda9e){if(_0x2dda9e){return _0x5e143c['status'](_0x4020de)['json'](_0x2dda9e);}};}function respondWithFilteredResult(_0x4cb1f2,_0x46233a){return function(_0x4c5fcb){if(_0x4c5fcb){var _0x2ea3c2=typeof _0x46233a[_0x05d8('0x1b')]===_0x05d8('0x1c')&&typeof _0x46233a['limit']==='undefined';var _0x3fdfcf=_0x4c5fcb[_0x05d8('0x1d')];var _0x9b08de=_0x2ea3c2?0x0:_0x46233a[_0x05d8('0x1b')];var _0x36f829=_0x2ea3c2?_0x4c5fcb[_0x05d8('0x1d')]:_0x46233a[_0x05d8('0x1b')]+_0x46233a['limit'];var _0x16a803;if(_0x36f829>=_0x3fdfcf){_0x36f829=_0x3fdfcf;_0x16a803=0xc8;}else{_0x16a803=0xce;}_0x4cb1f2[_0x05d8('0x19')](_0x16a803);return _0x4cb1f2[_0x05d8('0x1e')](_0x05d8('0x1f'),_0x9b08de+'-'+_0x36f829+'/'+_0x3fdfcf)[_0x05d8('0x20')](_0x4c5fcb);}return null;};}function patchUpdates(_0x1f1161){return function(_0x1e4547){try{jsonpatch[_0x05d8('0x21')](_0x1e4547,_0x1f1161,!![]);}catch(_0x10858d){return BPromise[_0x05d8('0x22')](_0x10858d);}return _0x1e4547[_0x05d8('0x23')]();};}function saveUpdates(_0x5452a2,_0x256424){return function(_0x1ca19a){if(_0x1ca19a){return _0x1ca19a[_0x05d8('0x24')](_0x5452a2)[_0x05d8('0x25')](function(_0x3ceeb8){return _0x3ceeb8;});}return null;};}function removeEntity(_0x4cf3ed,_0x19a06e){return function(_0x20c998){if(_0x20c998){return _0x20c998['destroy']()[_0x05d8('0x25')](function(){var _0x3d1622=_0x20c998[_0x05d8('0x26')]({'plain':!![]});var _0x38954c=_0x05d8('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x38954c,'resourceId':_0x3d1622['id']}})[_0x05d8('0x25')](function(){return _0x20c998;});})[_0x05d8('0x25')](function(){_0x4cf3ed[_0x05d8('0x19')](0xcc)[_0x05d8('0x1a')]();});}};}function handleEntityNotFound(_0x5c67d3,_0x2eb0a8){return function(_0x1befc5){if(!_0x1befc5){_0x5c67d3[_0x05d8('0x18')](0x194);}return _0x1befc5;};}function handleError(_0x3f17ad,_0x1aaec6){_0x1aaec6=_0x1aaec6||0x1f4;return function(_0xca2802){logger[_0x05d8('0x28')](_0xca2802[_0x05d8('0x29')]);if(_0xca2802[_0x05d8('0x2a')]){delete _0xca2802[_0x05d8('0x2a')];}_0x3f17ad['status'](_0x1aaec6)[_0x05d8('0x2b')](_0xca2802);};}exports[_0x05d8('0x2c')]=function(_0x213369,_0x1f6327){var _0x344b34={},_0x11bbe5={},_0x4237b8={'count':0x0,'rows':[]};var _0x482d9a=_[_0x05d8('0x2d')](db[_0x05d8('0x2e')][_0x05d8('0x2f')],function(_0x2a76a0){return{'name':_0x2a76a0[_0x05d8('0x30')],'type':_0x2a76a0[_0x05d8('0x31')][_0x05d8('0x32')]};});_0x11bbe5[_0x05d8('0x33')]=_[_0x05d8('0x2d')](_0x482d9a,_0x05d8('0x2a'));_0x11bbe5[_0x05d8('0x34')]=_[_0x05d8('0x35')](_0x213369['query']);_0x11bbe5['filters']=_[_0x05d8('0x36')](_0x11bbe5[_0x05d8('0x33')],_0x11bbe5['query']);_0x344b34[_0x05d8('0x37')]=_[_0x05d8('0x36')](_0x11bbe5[_0x05d8('0x33')],qs[_0x05d8('0x38')](_0x213369['query'][_0x05d8('0x38')]));_0x344b34[_0x05d8('0x37')]=_0x344b34[_0x05d8('0x37')][_0x05d8('0x39')]?_0x344b34[_0x05d8('0x37')]:_0x11bbe5[_0x05d8('0x33')];if(!_0x213369[_0x05d8('0x34')][_0x05d8('0x3a')](_0x05d8('0x3b'))){_0x344b34[_0x05d8('0x3c')]=qs[_0x05d8('0x3c')](_0x213369[_0x05d8('0x34')]['limit']);_0x344b34['offset']=qs['offset'](_0x213369['query'][_0x05d8('0x1b')]);}_0x344b34['order']=qs[_0x05d8('0x3d')](_0x213369[_0x05d8('0x34')][_0x05d8('0x3d')]);_0x344b34[_0x05d8('0x3e')]=qs[_0x05d8('0x3f')](_['pick'](_0x213369[_0x05d8('0x34')],_0x11bbe5['filters']),_0x482d9a);if(_0x213369[_0x05d8('0x34')][_0x05d8('0x40')]){_0x344b34[_0x05d8('0x3e')]=_[_0x05d8('0x41')](_0x344b34[_0x05d8('0x3e')],{'$or':_['map'](_0x482d9a,function(_0x35cdcb){if(_0x35cdcb[_0x05d8('0x31')]!==_0x05d8('0x42')){var _0x205678={};_0x205678[_0x35cdcb['name']]={'$like':'%'+_0x213369['query'][_0x05d8('0x40')]+'%'};return _0x205678;}})});}_0x344b34=_[_0x05d8('0x41')]({},_0x344b34,_0x213369[_0x05d8('0x43')]);var _0x1ebd43={'where':_0x344b34[_0x05d8('0x3e')]};return db[_0x05d8('0x2e')][_0x05d8('0x1d')](_0x1ebd43)[_0x05d8('0x25')](function(_0x5b65ff){_0x4237b8[_0x05d8('0x1d')]=_0x5b65ff;if(_0x213369[_0x05d8('0x34')]['includeAll']){_0x344b34[_0x05d8('0x44')]=[{'all':!![]}];}return db[_0x05d8('0x2e')][_0x05d8('0x45')](_0x344b34);})[_0x05d8('0x25')](function(_0x239c49){_0x4237b8[_0x05d8('0x46')]=_0x239c49;return _0x4237b8;})[_0x05d8('0x25')](respondWithFilteredResult(_0x1f6327,_0x344b34))['catch'](handleError(_0x1f6327,null));};exports[_0x05d8('0x47')]=function(_0x360c03,_0x5d61fc){var _0x3128f7={'raw':!![],'where':{'id':_0x360c03['params']['id']}},_0x29698b={};_0x29698b[_0x05d8('0x33')]=_[_0x05d8('0x35')](db['CmHopperAdditionalPhone'][_0x05d8('0x2f')]);_0x29698b[_0x05d8('0x34')]=_['keys'](_0x360c03[_0x05d8('0x34')]);_0x29698b[_0x05d8('0x3f')]=_[_0x05d8('0x36')](_0x29698b[_0x05d8('0x33')],_0x29698b[_0x05d8('0x34')]);_0x3128f7['attributes']=_[_0x05d8('0x36')](_0x29698b[_0x05d8('0x33')],qs[_0x05d8('0x38')](_0x360c03['query'][_0x05d8('0x38')]));_0x3128f7[_0x05d8('0x37')]=_0x3128f7[_0x05d8('0x37')][_0x05d8('0x39')]?_0x3128f7[_0x05d8('0x37')]:_0x29698b['model'];if(_0x360c03['query'][_0x05d8('0x48')]){_0x3128f7['include']=[{'all':!![]}];}_0x3128f7=_[_0x05d8('0x41')]({},_0x3128f7,_0x360c03[_0x05d8('0x43')]);return db['CmHopperAdditionalPhone'][_0x05d8('0x49')](_0x3128f7)[_0x05d8('0x25')](handleEntityNotFound(_0x5d61fc,null))[_0x05d8('0x25')](respondWithResult(_0x5d61fc,null))[_0x05d8('0x4a')](handleError(_0x5d61fc,null));};exports[_0x05d8('0x4b')]=function(_0x51497e,_0x2b029f){return db[_0x05d8('0x2e')][_0x05d8('0x4b')](_0x51497e['body'],{})[_0x05d8('0x25')](function(_0x27f830){var _0x21670d=_0x51497e['user']['get']({'plain':!![]});if(!_0x21670d)throw new Error(_0x05d8('0x4c'));if(_0x21670d[_0x05d8('0x4d')]===_0x05d8('0x4e')){var _0x455a67=_0x27f830[_0x05d8('0x26')]({'plain':!![]});var _0x31caa7='CmHopperAdditionalPhones';return db[_0x05d8('0x4f')][_0x05d8('0x49')]({'where':{'name':_0x31caa7,'userProfileId':_0x21670d[_0x05d8('0x50')]},'raw':!![]})['then'](function(_0x2737f5){if(_0x2737f5&&_0x2737f5[_0x05d8('0x51')]===0x0){return db['UserProfileResource'][_0x05d8('0x4b')]({'name':_0x455a67[_0x05d8('0x2a')],'resourceId':_0x455a67['id'],'type':_0x2737f5[_0x05d8('0x2a')],'sectionId':_0x2737f5['id']},{})[_0x05d8('0x25')](function(){return _0x27f830;});}else{return _0x27f830;}})[_0x05d8('0x4a')](function(_0x272d67){logger[_0x05d8('0x28')](_0x05d8('0x52'),_0x272d67);throw _0x272d67;});}return _0x27f830;})[_0x05d8('0x25')](respondWithResult(_0x2b029f,0xc9))[_0x05d8('0x4a')](handleError(_0x2b029f,null));};exports[_0x05d8('0x24')]=function(_0x1cfeca,_0x54984b){if(_0x1cfeca[_0x05d8('0x53')]['id']){delete _0x1cfeca['body']['id'];}return db[_0x05d8('0x2e')][_0x05d8('0x49')]({'where':{'id':_0x1cfeca[_0x05d8('0x54')]['id']}})[_0x05d8('0x25')](handleEntityNotFound(_0x54984b,null))['then'](saveUpdates(_0x1cfeca[_0x05d8('0x53')],null))[_0x05d8('0x25')](respondWithResult(_0x54984b,null))['catch'](handleError(_0x54984b,null));};exports[_0x05d8('0x55')]=function(_0xca6eb2,_0x588d3d){return db[_0x05d8('0x2e')]['find']({'where':{'id':_0xca6eb2[_0x05d8('0x54')]['id']}})['then'](handleEntityNotFound(_0x588d3d,null))[_0x05d8('0x25')](removeEntity(_0x588d3d,null))[_0x05d8('0x4a')](handleError(_0x588d3d,null));};
\ No newline at end of file
+var _0xf6b2=['squel','crypto','jsforce','papaparse','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','CmHopperAdditionalPhones','UserProfileResource','sendStatus','error','stack','name','index','map','CmHopperAdditionalPhone','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','show','params','rawAttributes','keys','include','find','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x2a5d79,_0x59c9d0){var _0x584496=function(_0x53a0b3){while(--_0x53a0b3){_0x2a5d79['push'](_0x2a5d79['shift']());}};_0x584496(++_0x59c9d0);}(_0xf6b2,0xec));var _0x2f6b=function(_0x28bac5,_0x5f15cb){_0x28bac5=_0x28bac5-0x0;var _0x33d8b2=_0xf6b2[_0x28bac5];return _0x33d8b2;};'use strict';var emlformat=require(_0x2f6b('0x0'));var rimraf=require(_0x2f6b('0x1'));var zipdir=require(_0x2f6b('0x2'));var jsonpatch=require(_0x2f6b('0x3'));var rp=require(_0x2f6b('0x4'));var moment=require('moment');var BPromise=require(_0x2f6b('0x5'));var Mustache=require(_0x2f6b('0x6'));var util=require('util');var path=require(_0x2f6b('0x7'));var sox=require(_0x2f6b('0x8'));var csv=require(_0x2f6b('0x9'));var ejs=require(_0x2f6b('0xa'));var fs=require('fs');var fs_extra=require(_0x2f6b('0xb'));var _=require(_0x2f6b('0xc'));var squel=require(_0x2f6b('0xd'));var crypto=require(_0x2f6b('0xe'));var jsforce=require(_0x2f6b('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2f6b('0x9'));var querystring=require('querystring');var Papa=require(_0x2f6b('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(_0x2f6b('0x11'));var logger=require(_0x2f6b('0x12'))(_0x2f6b('0x13'));var utils=require('../../config/utils');var config=require(_0x2f6b('0x14'));var licenseUtil=require(_0x2f6b('0x15'));var db=require(_0x2f6b('0x16'))['db'];function respondWithStatusCode(_0x1fcf01,_0x56a71a){_0x56a71a=_0x56a71a||0xcc;return function(_0x1c172f){if(_0x1c172f){return _0x1fcf01['sendStatus'](_0x56a71a);}return _0x1fcf01['status'](_0x56a71a)[_0x2f6b('0x17')]();};}function respondWithResult(_0x4d33e5,_0x50222e){_0x50222e=_0x50222e||0xc8;return function(_0x4d6f04){if(_0x4d6f04){return _0x4d33e5[_0x2f6b('0x18')](_0x50222e)[_0x2f6b('0x19')](_0x4d6f04);}};}function respondWithFilteredResult(_0x50a7f5,_0xe00250){return function(_0xcf3bb4){if(_0xcf3bb4){var _0x4ae11a=typeof _0xe00250[_0x2f6b('0x1a')]===_0x2f6b('0x1b')&&typeof _0xe00250[_0x2f6b('0x1c')]===_0x2f6b('0x1b');var _0x48121d=_0xcf3bb4['count'];var _0x194eed=_0x4ae11a?0x0:_0xe00250[_0x2f6b('0x1a')];var _0x244b4e=_0x4ae11a?_0xcf3bb4[_0x2f6b('0x1d')]:_0xe00250['offset']+_0xe00250[_0x2f6b('0x1c')];var _0x21bbdd;if(_0x244b4e>=_0x48121d){_0x244b4e=_0x48121d;_0x21bbdd=0xc8;}else{_0x21bbdd=0xce;}_0x50a7f5[_0x2f6b('0x18')](_0x21bbdd);return _0x50a7f5['set'](_0x2f6b('0x1e'),_0x194eed+'-'+_0x244b4e+'/'+_0x48121d)['json'](_0xcf3bb4);}return null;};}function patchUpdates(_0x2fba60){return function(_0x19c7e9){try{jsonpatch[_0x2f6b('0x1f')](_0x19c7e9,_0x2fba60,!![]);}catch(_0x4acaef){return BPromise[_0x2f6b('0x20')](_0x4acaef);}return _0x19c7e9['save']();};}function saveUpdates(_0x1a5a8b,_0x597cb1){return function(_0x39c085){if(_0x39c085){return _0x39c085[_0x2f6b('0x21')](_0x1a5a8b)['then'](function(_0x2ffed9){return _0x2ffed9;});}return null;};}function removeEntity(_0x1ef099,_0x4ae181){return function(_0x43f632){if(_0x43f632){return _0x43f632[_0x2f6b('0x22')]()[_0x2f6b('0x23')](function(){var _0x401310=_0x43f632['get']({'plain':!![]});var _0x12f6b2=_0x2f6b('0x24');return db[_0x2f6b('0x25')]['destroy']({'where':{'type':_0x12f6b2,'resourceId':_0x401310['id']}})[_0x2f6b('0x23')](function(){return _0x43f632;});})[_0x2f6b('0x23')](function(){_0x1ef099[_0x2f6b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b21a8,_0x5959aa){return function(_0x118520){if(!_0x118520){_0x4b21a8[_0x2f6b('0x26')](0x194);}return _0x118520;};}function handleError(_0x5bf095,_0x1625aa){_0x1625aa=_0x1625aa||0x1f4;return function(_0x289c7d){logger[_0x2f6b('0x27')](_0x289c7d[_0x2f6b('0x28')]);if(_0x289c7d[_0x2f6b('0x29')]){delete _0x289c7d['name'];}_0x5bf095[_0x2f6b('0x18')](_0x1625aa)['send'](_0x289c7d);};}exports[_0x2f6b('0x2a')]=function(_0x482dac,_0x5eea8e){var _0x264947={},_0x1085c0={},_0x2cac6d={'count':0x0,'rows':[]};var _0x318ba6=_[_0x2f6b('0x2b')](db[_0x2f6b('0x2c')]['rawAttributes'],function(_0x447cb9){return{'name':_0x447cb9[_0x2f6b('0x2d')],'type':_0x447cb9['type'][_0x2f6b('0x2e')]};});_0x1085c0[_0x2f6b('0x2f')]=_[_0x2f6b('0x2b')](_0x318ba6,'name');_0x1085c0[_0x2f6b('0x30')]=_['keys'](_0x482dac[_0x2f6b('0x30')]);_0x1085c0[_0x2f6b('0x31')]=_[_0x2f6b('0x32')](_0x1085c0[_0x2f6b('0x2f')],_0x1085c0[_0x2f6b('0x30')]);_0x264947[_0x2f6b('0x33')]=_[_0x2f6b('0x32')](_0x1085c0[_0x2f6b('0x2f')],qs[_0x2f6b('0x34')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x34')]));_0x264947[_0x2f6b('0x33')]=_0x264947[_0x2f6b('0x33')][_0x2f6b('0x35')]?_0x264947[_0x2f6b('0x33')]:_0x1085c0['model'];if(!_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x36')]('nolimit')){_0x264947[_0x2f6b('0x1c')]=qs[_0x2f6b('0x1c')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x1c')]);_0x264947[_0x2f6b('0x1a')]=qs[_0x2f6b('0x1a')](_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x1a')]);}_0x264947[_0x2f6b('0x37')]=qs['sort'](_0x482dac['query'][_0x2f6b('0x38')]);_0x264947[_0x2f6b('0x39')]=qs['filters'](_[_0x2f6b('0x3a')](_0x482dac[_0x2f6b('0x30')],_0x1085c0[_0x2f6b('0x31')]),_0x318ba6);if(_0x482dac[_0x2f6b('0x30')]['filter']){_0x264947[_0x2f6b('0x39')]=_['merge'](_0x264947[_0x2f6b('0x39')],{'$or':_['map'](_0x318ba6,function(_0x2bad75){if(_0x2bad75[_0x2f6b('0x3b')]!==_0x2f6b('0x3c')){var _0x871d23={};_0x871d23[_0x2bad75[_0x2f6b('0x29')]]={'$like':'%'+_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x3d')]+'%'};return _0x871d23;}})});}_0x264947=_[_0x2f6b('0x3e')]({},_0x264947,_0x482dac[_0x2f6b('0x3f')]);var _0x4703d5={'where':_0x264947[_0x2f6b('0x39')]};return db[_0x2f6b('0x2c')][_0x2f6b('0x1d')](_0x4703d5)[_0x2f6b('0x23')](function(_0x32048f){_0x2cac6d[_0x2f6b('0x1d')]=_0x32048f;if(_0x482dac[_0x2f6b('0x30')][_0x2f6b('0x40')]){_0x264947['include']=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x2f6b('0x41')](_0x264947);})[_0x2f6b('0x23')](function(_0x509964){_0x2cac6d[_0x2f6b('0x42')]=_0x509964;return _0x2cac6d;})[_0x2f6b('0x23')](respondWithFilteredResult(_0x5eea8e,_0x264947))['catch'](handleError(_0x5eea8e,null));};exports[_0x2f6b('0x43')]=function(_0x122623,_0x201428){var _0x189fb8={'raw':!![],'where':{'id':_0x122623[_0x2f6b('0x44')]['id']}},_0x3e6aa9={};_0x3e6aa9[_0x2f6b('0x2f')]=_['keys'](db['CmHopperAdditionalPhone'][_0x2f6b('0x45')]);_0x3e6aa9['query']=_[_0x2f6b('0x46')](_0x122623['query']);_0x3e6aa9[_0x2f6b('0x31')]=_[_0x2f6b('0x32')](_0x3e6aa9[_0x2f6b('0x2f')],_0x3e6aa9[_0x2f6b('0x30')]);_0x189fb8[_0x2f6b('0x33')]=_[_0x2f6b('0x32')](_0x3e6aa9[_0x2f6b('0x2f')],qs[_0x2f6b('0x34')](_0x122623[_0x2f6b('0x30')][_0x2f6b('0x34')]));_0x189fb8['attributes']=_0x189fb8[_0x2f6b('0x33')][_0x2f6b('0x35')]?_0x189fb8[_0x2f6b('0x33')]:_0x3e6aa9[_0x2f6b('0x2f')];if(_0x122623['query'][_0x2f6b('0x40')]){_0x189fb8[_0x2f6b('0x47')]=[{'all':!![]}];}_0x189fb8=_[_0x2f6b('0x3e')]({},_0x189fb8,_0x122623[_0x2f6b('0x3f')]);return db[_0x2f6b('0x2c')][_0x2f6b('0x48')](_0x189fb8)[_0x2f6b('0x23')](handleEntityNotFound(_0x201428,null))[_0x2f6b('0x23')](respondWithResult(_0x201428,null))[_0x2f6b('0x49')](handleError(_0x201428,null));};exports[_0x2f6b('0x4a')]=function(_0x2af1fb,_0x31667c){return db[_0x2f6b('0x2c')]['create'](_0x2af1fb[_0x2f6b('0x4b')],{})[_0x2f6b('0x23')](function(_0x2c15a5){var _0x4ed6d2=_0x2af1fb['user'][_0x2f6b('0x4c')]({'plain':!![]});if(!_0x4ed6d2)throw new Error(_0x2f6b('0x4d'));if(_0x4ed6d2[_0x2f6b('0x4e')]===_0x2f6b('0x4f')){var _0x3b5529=_0x2c15a5['get']({'plain':!![]});var _0x4e5751='CmHopperAdditionalPhones';return db[_0x2f6b('0x50')]['find']({'where':{'name':_0x4e5751,'userProfileId':_0x4ed6d2['userProfileId']},'raw':!![]})[_0x2f6b('0x23')](function(_0x2c1e1a){if(_0x2c1e1a&&_0x2c1e1a[_0x2f6b('0x51')]===0x0){return db['UserProfileResource'][_0x2f6b('0x4a')]({'name':_0x3b5529[_0x2f6b('0x29')],'resourceId':_0x3b5529['id'],'type':_0x2c1e1a[_0x2f6b('0x29')],'sectionId':_0x2c1e1a['id']},{})[_0x2f6b('0x23')](function(){return _0x2c15a5;});}else{return _0x2c15a5;}})[_0x2f6b('0x49')](function(_0x2344c8){logger[_0x2f6b('0x27')](_0x2f6b('0x52'),_0x2344c8);throw _0x2344c8;});}return _0x2c15a5;})[_0x2f6b('0x23')](respondWithResult(_0x31667c,0xc9))[_0x2f6b('0x49')](handleError(_0x31667c,null));};exports['update']=function(_0x47ad78,_0x363e51){if(_0x47ad78[_0x2f6b('0x4b')]['id']){delete _0x47ad78[_0x2f6b('0x4b')]['id'];}return db[_0x2f6b('0x2c')]['find']({'where':{'id':_0x47ad78[_0x2f6b('0x44')]['id']}})['then'](handleEntityNotFound(_0x363e51,null))[_0x2f6b('0x23')](saveUpdates(_0x47ad78[_0x2f6b('0x4b')],null))['then'](respondWithResult(_0x363e51,null))[_0x2f6b('0x49')](handleError(_0x363e51,null));};exports[_0x2f6b('0x22')]=function(_0x1d8bb7,_0x13444f){return db[_0x2f6b('0x2c')][_0x2f6b('0x48')]({'where':{'id':_0x1d8bb7[_0x2f6b('0x44')]['id']}})['then'](handleEntityNotFound(_0x13444f,null))[_0x2f6b('0x23')](removeEntity(_0x13444f,null))[_0x2f6b('0x49')](handleError(_0x13444f,null));};
\ No newline at end of file
index 78170d1..9160442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ad=['exports','define','CmHopperAdditionalPhone','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./cmHopperAdditionalPhone.attributes'];(function(_0xf8926e,_0x5632d1){var _0x375556=function(_0x12819c){while(--_0x12819c){_0xf8926e['push'](_0xf8926e['shift']());}};_0x375556(++_0x5632d1);}(_0xe0ad,0x10b));var _0xde0a=function(_0x116b41,_0x35cade){_0x116b41=_0x116b41-0x0;var _0x63bad9=_0xe0ad[_0x116b41];return _0x63bad9;};'use strict';var _=require(_0xde0a('0x0'));var util=require(_0xde0a('0x1'));var logger=require('../../config/logger')(_0xde0a('0x2'));var moment=require(_0xde0a('0x3'));var BPromise=require(_0xde0a('0x4'));var rp=require(_0xde0a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xde0a('0x6'));var attributes=require(_0xde0a('0x7'));module[_0xde0a('0x8')]=function(_0x38770e,_0x343a72){return _0x38770e[_0xde0a('0x9')](_0xde0a('0xa'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x93ae=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','cm_hopper_additional_phones','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x93ae,0x192));var _0xe93a=function(_0x2012d8,_0x439d2f){_0x2012d8=_0x2012d8-0x0;var _0x4295ec=_0x93ae[_0x2012d8];return _0x4295ec;};'use strict';var _=require(_0xe93a('0x0'));var util=require(_0xe93a('0x1'));var logger=require(_0xe93a('0x2'))('api');var moment=require(_0xe93a('0x3'));var BPromise=require(_0xe93a('0x4'));var rp=require(_0xe93a('0x5'));var fs=require('fs');var path=require(_0xe93a('0x6'));var rimraf=require(_0xe93a('0x7'));var config=require(_0xe93a('0x8'));var attributes=require(_0xe93a('0x9'));module[_0xe93a('0xa')]=function(_0x484731,_0x1f9838){return _0x484731[_0xe93a('0xb')]('CmHopperAdditionalPhone',attributes,{'tableName':_0xe93a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2446960..0ed390b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73a3=['ContactId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','dialGlobalMaxRetry','countnosuchnumberretry','countagentrejectretry','entity','SwapAdditionalPhones','duration','waitTime','isNil','scheduledat','add','minutes','phone','createdAt','updatedAt','sequelize','update','activateAdditionalPhone','IncrementPreviewCounters','field','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','VerifyAdditionalPhones','CmHopper','findOne','body'];(function(_0x268659,_0x3e6684){var _0x46bd03=function(_0x3b5eb1){while(--_0x3b5eb1){_0x268659['push'](_0x268659['shift']());}};_0x46bd03(++_0x3e6684);}(_0x73a3,0x103));var _0x373a=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x73a3[_0xbd08b4];return _0x314f1e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x373a('0x0'));var BPromise=require('bluebird');var rs=require(_0x373a('0x1'));var fs=require('fs');var Redis=require(_0x373a('0x2'));var db=require(_0x373a('0x3'))['db'];var utils=require(_0x373a('0x4'));var logger=require(_0x373a('0x5'))(_0x373a('0x6'));var config=require(_0x373a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x373a('0x8')][_0x373a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5a311d,_0x3da436,_0x5c9a3f){return new BPromise(function(_0x3d9bff,_0x21dee0){return client[_0x373a('0xa')](_0x5a311d,_0x5c9a3f)[_0x373a('0xb')](function(_0x4fa452){logger['info'](_0x373a('0xc'),_0x3da436,_0x373a('0xd'));logger[_0x373a('0xe')](_0x373a('0xf'),_0x3da436,_0x373a('0xd'),JSON[_0x373a('0x10')](_0x4fa452));if(_0x4fa452[_0x373a('0x11')]){if(_0x4fa452['error'][_0x373a('0x12')]===0x1f4){logger[_0x373a('0x11')](_0x373a('0xc'),_0x3da436,_0x4fa452[_0x373a('0x11')][_0x373a('0x13')]);return _0x21dee0(_0x4fa452[_0x373a('0x11')][_0x373a('0x13')]);}logger[_0x373a('0x11')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x3da436,_0x4fa452[_0x373a('0x11')][_0x373a('0x13')]);return _0x3d9bff(_0x4fa452[_0x373a('0x11')]['message']);}else{logger[_0x373a('0x14')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x3da436,_0x373a('0xd'));_0x3d9bff(_0x4fa452['result']['message']);}})[_0x373a('0x15')](function(_0x1f026d){logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x3da436,_0x1f026d);_0x21dee0(_0x1f026d);});});}exports[_0x373a('0x16')]=function(_0x4824bd){var _0x30823a=this;return new Promise(function(_0x8066cb,_0x5f51aa){return db[_0x373a('0x17')][_0x373a('0x18')]({'raw':!![],'where':{'ContactId':_0x4824bd[_0x373a('0x19')][_0x373a('0x1a')],'ListId':_0x4824bd['body']['ListId'],'VoiceQueueId':_0x4824bd[_0x373a('0x19')][_0x373a('0x1b')]===undefined?null:_0x4824bd[_0x373a('0x19')]['VoiceQueueId'],'CampaignId':_0x4824bd[_0x373a('0x19')][_0x373a('0x1c')]===undefined?null:_0x4824bd[_0x373a('0x19')][_0x373a('0x1c')]}})[_0x373a('0xb')](function(_0x5a1e46){if(_0x5a1e46!=null){return db[_0x373a('0x1d')][_0x373a('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5a1e46['id'],'OrderBy':{'$gt':_0x5a1e46[_0x373a('0x1e')]}},'order':[['OrderBy',_0x373a('0x1f')]]})['then'](function(_0x351a91){var _0x588a07=0x0;if(_0x351a91){if(_0x351a91[_0x373a('0x20')]+_0x351a91[_0x373a('0x21')]+_0x351a91[_0x373a('0x22')]+_0x351a91['countnosuchnumberretry']+_0x351a91[_0x373a('0x23')]+_0x351a91[_0x373a('0x24')]+_0x351a91[_0x373a('0x25')]+_0x351a91['countagentrejectretry']<_0x4824bd['entity'][_0x373a('0x26')])_0x588a07=0x1;_0x8066cb({'additional':_0x588a07});}else{return db['CmHopperAdditionalPhone'][_0x373a('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5a1e46['id']},'order':[[_0x373a('0x1e'),'ASC']]})[_0x373a('0xb')](function(_0x1168f6){var _0x1f02d3=0x0;if(_0x1168f6){if(_0x1168f6[_0x373a('0x20')]+_0x1168f6[_0x373a('0x21')]+_0x1168f6[_0x373a('0x22')]+_0x1168f6[_0x373a('0x27')]+_0x1168f6[_0x373a('0x23')]+_0x1168f6['countabandonedretry']+_0x1168f6[_0x373a('0x25')]+_0x1168f6[_0x373a('0x28')]<_0x4824bd[_0x373a('0x29')]['dialGlobalMaxRetry'])_0x1f02d3=0x1;_0x8066cb({'additional':_0x1f02d3});}else{_0x8066cb({'additional':0x0});}})[_0x373a('0x15')](function(_0x4242c8){logger[_0x373a('0x11')](_0x373a('0x16'),_0x4242c8[_0x373a('0x13')]);_0x5f51aa(_0x30823a[_0x373a('0x11')](0x1f4,_0x4242c8[_0x373a('0x13')]));});}})[_0x373a('0x15')](function(_0x558b29){logger[_0x373a('0x11')](_0x373a('0x16'),_0x558b29['message']);_0x5f51aa(_0x30823a[_0x373a('0x11')](0x1f4,_0x558b29[_0x373a('0x13')]));});}else _0x8066cb({'additional':0x0});});});};exports[_0x373a('0x2a')]=function(_0x5966c9){var _0x43b602=this;return new Promise(function(_0x45e033,_0x1df70a){return db['CmHopper'][_0x373a('0x18')]({'raw':!![],'where':{'ContactId':_0x5966c9[_0x373a('0x19')][_0x373a('0x1a')],'ListId':_0x5966c9['body']['ListId'],'VoiceQueueId':_0x5966c9[_0x373a('0x19')][_0x373a('0x1b')]===undefined?null:_0x5966c9['body'][_0x373a('0x1b')],'CampaignId':_0x5966c9[_0x373a('0x19')][_0x373a('0x1c')]===undefined?null:_0x5966c9[_0x373a('0x19')][_0x373a('0x1c')]}})[_0x373a('0xb')](function(_0xfbabe0){if(_0xfbabe0!=null){return db[_0x373a('0x1d')][_0x373a('0x18')]({'raw':!![],'where':{'CmHopperId':_0xfbabe0['id'],'OrderBy':{'$gte':_0xfbabe0[_0x373a('0x1e')]}},'order':[[_0x373a('0x1e'),_0x373a('0x1f')]]})[_0x373a('0xb')](function(_0x936b80){if(_0x936b80)return activateAdditionalPhone(_0xfbabe0,_0x5966c9[_0x373a('0x19')],_0x936b80,_0x5966c9[_0x373a('0x2b')],_0x5966c9['waitTime'])[_0x373a('0xb')](function(_0x3528b9){_0x45e033(_0x3528b9);});else{return db[_0x373a('0x1d')][_0x373a('0x18')]({'raw':!![],'where':{'CmHopperId':_0xfbabe0['id']},'order':[[_0x373a('0x1e'),_0x373a('0x1f')]]})['then'](function(_0x3df553){if(_0x3df553)return activateAdditionalPhone(_0xfbabe0,_0x5966c9['body'],_0x3df553,_0x5966c9[_0x373a('0x2b')],_0x5966c9[_0x373a('0x2c')])[_0x373a('0xb')](function(_0x1e85e7){_0x45e033(_0x1e85e7);});else{_0x45e033({'id':_0xfbabe0['id'],'phone':''});}})['catch'](function(_0x5049d7){logger['error']('VerifyAdditionalPhones',_0x5049d7['message']);_0x1df70a(_0x43b602[_0x373a('0x11')](0x1f4,_0x5049d7[_0x373a('0x13')]));});}})[_0x373a('0x15')](function(_0x340297){logger[_0x373a('0x11')](_0x373a('0x16'),_0x340297[_0x373a('0x13')]);_0x1df70a(_0x43b602['error'](0x1f4,_0x340297[_0x373a('0x13')]));});}else _0x45e033(0x1);});});};function activateAdditionalPhone(_0x38a4ea,_0x50804a,_0x1c24db,_0x19fdb1,_0x26fb9b){return new Promise(function(_0x1acc9f,_0x153d5e){var _0x31355e;if(_[_0x373a('0x2d')](_0x1c24db[_0x373a('0x2e')])){_0x1c24db['scheduledat']=moment();}if(moment()>moment(_0x1c24db[_0x373a('0x2e')])){_0x31355e=moment()[_0x373a('0x2f')](_0x26fb9b||0x3,'minutes');}else{if(_0x1c24db['OrderBy']==0x0){_0x31355e=moment(_0x1c24db[_0x373a('0x2e')]);}else{_0x31355e=moment()[_0x373a('0x2f')](_0x26fb9b||0x3,_0x373a('0x30'));}}if(_[_0x373a('0x2d')](_0x31355e)){_0x31355e=moment()['add'](_0x26fb9b||0x3,_0x373a('0x30'));}var _0x3d09a3={'phone':_0x38a4ea[_0x373a('0x31')],'active':0x0,'OrderBy':_['isNil'](_0x38a4ea[_0x373a('0x1e')])?0x0:_0x38a4ea[_0x373a('0x1e')],'scheduledat':moment()[_0x373a('0x2f')](_0x19fdb1||0x1,_0x373a('0x30')),'countbusyretry':_0x50804a[_0x373a('0x20')],'countcongestionretry':_0x50804a['countcongestionretry'],'countnoanswerretry':_0x50804a[_0x373a('0x22')],'countnosuchnumberretry':_0x50804a[_0x373a('0x27')],'countdropretry':_0x50804a[_0x373a('0x23')],'countabandonedretry':_0x50804a[_0x373a('0x24')],'countmachineretry':_0x50804a[_0x373a('0x25')],'countagentrejectretry':_0x50804a['countagentrejectretry'],'createdAt':_0x50804a[_0x373a('0x32')],'updatedAt':_0x50804a[_0x373a('0x33')]};var _0xfe8e65={'CmHopperId':_0x38a4ea['id'],'phone':_0x1c24db[_0x373a('0x31')],'active':0x0,'OrderBy':_[_0x373a('0x2d')](_0x1c24db[_0x373a('0x1e')])?0x0:_0x1c24db['OrderBy'],'scheduledat':_0x31355e,'countbusyretry':_0x1c24db[_0x373a('0x20')],'countcongestionretry':_0x1c24db[_0x373a('0x21')],'countnoanswerretry':_0x1c24db[_0x373a('0x22')],'countnosuchnumberretry':_0x1c24db[_0x373a('0x27')],'countdropretry':_0x1c24db[_0x373a('0x23')],'countabandonedretry':_0x1c24db[_0x373a('0x24')],'countmachineretry':_0x1c24db[_0x373a('0x25')],'countagentrejectretry':_0x1c24db[_0x373a('0x28')],'createdAt':_0x1c24db['createdAt'],'updatedAt':_0x1c24db[_0x373a('0x33')]};return db[_0x373a('0x34')]['transaction'](function(_0x24b4f3){return db[_0x373a('0x1d')][_0x373a('0x35')](_0x3d09a3,{'where':{'id':_0x1c24db['id']}},{'transaction':_0x24b4f3})[_0x373a('0xb')](function(){return db[_0x373a('0x17')]['update'](_0xfe8e65,{'where':{'id':_0x38a4ea['id']}},{'transaction':_0x24b4f3});});})[_0x373a('0xb')](function(_0x155899){_0x1acc9f({'id':_0x38a4ea['id'],'phone':_0x1c24db[_0x373a('0x31')]});})[_0x373a('0x15')](function(_0x1f6dc1){logger[_0x373a('0x11')](_0x373a('0x36'),_0x1f6dc1[_0x373a('0x13')]);_0x153d5e({'error':_0x1f6dc1[_0x373a('0x13')]});});});}exports[_0x373a('0x37')]=function(_0x28c961){var _0x24bedf=this;return new Promise(function(_0x2766be,_0x5d1a66){return db[_0x373a('0x17')]['update'](_0x28c961[_0x373a('0x19')][_0x373a('0x38')],{'where':{'id':_0x28c961['body']['id']}})[_0x373a('0xb')](function(_0x58a46a){_0x2766be(_0x58a46a);})['catch'](function(_0xc84688){logger[_0x373a('0x11')]('IncrementPreviewCounters',_0xc84688[_0x373a('0x13')]);_0x5d1a66(_0x24bedf[_0x373a('0x11')](0x1f4,_0xc84688[_0x373a('0x13')]));});});};
\ No newline at end of file
+var _0x41b4=['activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','dialGlobalMaxRetry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','entity','SwapAdditionalPhones','ASC','duration','waitTime','isNil','scheduledat','minutes','add','phone','createdAt','updatedAt','sequelize','update'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x41b4,0x77));var _0x441b=function(_0x24ca1f,_0x3d2164){_0x24ca1f=_0x24ca1f-0x0;var _0x5f4222=_0x41b4[_0x24ca1f];return _0x5f4222;};'use strict';var _=require(_0x441b('0x0'));var util=require(_0x441b('0x1'));var moment=require(_0x441b('0x2'));var BPromise=require(_0x441b('0x3'));var rs=require(_0x441b('0x4'));var fs=require('fs');var Redis=require(_0x441b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x441b('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x441b('0x7'));var client=jayson[_0x441b('0x8')][_0x441b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3da6bf,_0x195670,_0x3d85aa){return new BPromise(function(_0x3ebad7,_0x25fb16){return client[_0x441b('0xa')](_0x3da6bf,_0x3d85aa)[_0x441b('0xb')](function(_0x1694af){logger[_0x441b('0xc')](_0x441b('0xd'),_0x195670,_0x441b('0xe'));logger['debug'](_0x441b('0xf'),_0x195670,_0x441b('0xe'),JSON[_0x441b('0x10')](_0x1694af));if(_0x1694af['error']){if(_0x1694af[_0x441b('0x11')][_0x441b('0x12')]===0x1f4){logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x1694af['error'][_0x441b('0x13')]);return _0x25fb16(_0x1694af['error'][_0x441b('0x13')]);}logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x1694af[_0x441b('0x11')]['message']);return _0x3ebad7(_0x1694af[_0x441b('0x11')][_0x441b('0x13')]);}else{logger[_0x441b('0xc')](_0x441b('0xd'),_0x195670,'request\x20sent');_0x3ebad7(_0x1694af[_0x441b('0x14')]['message']);}})[_0x441b('0x15')](function(_0x4ae883){logger[_0x441b('0x11')](_0x441b('0xd'),_0x195670,_0x4ae883);_0x25fb16(_0x4ae883);});});}exports[_0x441b('0x16')]=function(_0x510e2f){var _0x4e3fe9=this;return new Promise(function(_0x582de9,_0x4907c4){return db[_0x441b('0x17')][_0x441b('0x18')]({'raw':!![],'where':{'ContactId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1a')],'ListId':_0x510e2f['body'][_0x441b('0x1b')],'VoiceQueueId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1c')]===undefined?null:_0x510e2f[_0x441b('0x19')]['VoiceQueueId'],'CampaignId':_0x510e2f[_0x441b('0x19')][_0x441b('0x1d')]===undefined?null:_0x510e2f[_0x441b('0x19')][_0x441b('0x1d')]}})[_0x441b('0xb')](function(_0x56b6e5){if(_0x56b6e5!=null){return db[_0x441b('0x1e')][_0x441b('0x18')]({'raw':!![],'where':{'CmHopperId':_0x56b6e5['id'],'OrderBy':{'$gt':_0x56b6e5[_0x441b('0x1f')]}},'order':[[_0x441b('0x1f'),'ASC']]})['then'](function(_0x362491){var _0x219cf0=0x0;if(_0x362491){if(_0x362491[_0x441b('0x20')]+_0x362491[_0x441b('0x21')]+_0x362491[_0x441b('0x22')]+_0x362491['countnosuchnumberretry']+_0x362491['countdropretry']+_0x362491[_0x441b('0x23')]+_0x362491['countmachineretry']+_0x362491['countagentrejectretry']<_0x510e2f['entity'][_0x441b('0x24')])_0x219cf0=0x1;_0x582de9({'additional':_0x219cf0});}else{return db[_0x441b('0x1e')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x56b6e5['id']},'order':[[_0x441b('0x1f'),'ASC']]})[_0x441b('0xb')](function(_0x4959b1){var _0x3dc04c=0x0;if(_0x4959b1){if(_0x4959b1[_0x441b('0x20')]+_0x4959b1[_0x441b('0x21')]+_0x4959b1[_0x441b('0x22')]+_0x4959b1[_0x441b('0x25')]+_0x4959b1[_0x441b('0x26')]+_0x4959b1[_0x441b('0x23')]+_0x4959b1[_0x441b('0x27')]+_0x4959b1[_0x441b('0x28')]<_0x510e2f[_0x441b('0x29')][_0x441b('0x24')])_0x3dc04c=0x1;_0x582de9({'additional':_0x3dc04c});}else{_0x582de9({'additional':0x0});}})[_0x441b('0x15')](function(_0x3c4ff7){logger[_0x441b('0x11')](_0x441b('0x16'),_0x3c4ff7['message']);_0x4907c4(_0x4e3fe9[_0x441b('0x11')](0x1f4,_0x3c4ff7[_0x441b('0x13')]));});}})[_0x441b('0x15')](function(_0x24fd39){logger[_0x441b('0x11')](_0x441b('0x16'),_0x24fd39[_0x441b('0x13')]);_0x4907c4(_0x4e3fe9['error'](0x1f4,_0x24fd39['message']));});}else _0x582de9({'additional':0x0});});});};exports[_0x441b('0x2a')]=function(_0x4de9d8){var _0x1d3281=this;return new Promise(function(_0x224853,_0x408598){return db[_0x441b('0x17')][_0x441b('0x18')]({'raw':!![],'where':{'ContactId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1a')],'ListId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1b')],'VoiceQueueId':_0x4de9d8[_0x441b('0x19')][_0x441b('0x1c')]===undefined?null:_0x4de9d8['body'][_0x441b('0x1c')],'CampaignId':_0x4de9d8['body']['CampaignId']===undefined?null:_0x4de9d8[_0x441b('0x19')][_0x441b('0x1d')]}})['then'](function(_0x49385b){if(_0x49385b!=null){return db[_0x441b('0x1e')][_0x441b('0x18')]({'raw':!![],'where':{'CmHopperId':_0x49385b['id'],'OrderBy':{'$gte':_0x49385b[_0x441b('0x1f')]}},'order':[[_0x441b('0x1f'),_0x441b('0x2b')]]})['then'](function(_0x54f148){if(_0x54f148)return activateAdditionalPhone(_0x49385b,_0x4de9d8['body'],_0x54f148,_0x4de9d8[_0x441b('0x2c')],_0x4de9d8[_0x441b('0x2d')])[_0x441b('0xb')](function(_0x412e4b){_0x224853(_0x412e4b);});else{return db[_0x441b('0x1e')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x49385b['id']},'order':[[_0x441b('0x1f'),_0x441b('0x2b')]]})['then'](function(_0x1f9e58){if(_0x1f9e58)return activateAdditionalPhone(_0x49385b,_0x4de9d8[_0x441b('0x19')],_0x1f9e58,_0x4de9d8['duration'],_0x4de9d8['waitTime'])[_0x441b('0xb')](function(_0x4eed3f){_0x224853(_0x4eed3f);});else{_0x224853({'id':_0x49385b['id'],'phone':''});}})[_0x441b('0x15')](function(_0x56dd07){logger['error'](_0x441b('0x16'),_0x56dd07[_0x441b('0x13')]);_0x408598(_0x1d3281[_0x441b('0x11')](0x1f4,_0x56dd07[_0x441b('0x13')]));});}})[_0x441b('0x15')](function(_0xd1d9b6){logger[_0x441b('0x11')](_0x441b('0x16'),_0xd1d9b6['message']);_0x408598(_0x1d3281[_0x441b('0x11')](0x1f4,_0xd1d9b6[_0x441b('0x13')]));});}else _0x224853(0x1);});});};function activateAdditionalPhone(_0x510b41,_0x215b6d,_0x12388f,_0xf6fd54,_0x5294f0){return new Promise(function(_0xb44fd1,_0x14fbed){var _0x3a1e6d;if(_[_0x441b('0x2e')](_0x12388f[_0x441b('0x2f')])){_0x12388f[_0x441b('0x2f')]=moment();}if(moment()>moment(_0x12388f[_0x441b('0x2f')])){_0x3a1e6d=moment()['add'](_0x5294f0||0x3,_0x441b('0x30'));}else{if(_0x12388f[_0x441b('0x1f')]==0x0){_0x3a1e6d=moment(_0x12388f['scheduledat']);}else{_0x3a1e6d=moment()['add'](_0x5294f0||0x3,_0x441b('0x30'));}}if(_[_0x441b('0x2e')](_0x3a1e6d)){_0x3a1e6d=moment()[_0x441b('0x31')](_0x5294f0||0x3,'minutes');}var _0x72d9b2={'phone':_0x510b41[_0x441b('0x32')],'active':0x0,'OrderBy':_[_0x441b('0x2e')](_0x510b41[_0x441b('0x1f')])?0x0:_0x510b41[_0x441b('0x1f')],'scheduledat':moment()[_0x441b('0x31')](_0xf6fd54||0x1,_0x441b('0x30')),'countbusyretry':_0x215b6d[_0x441b('0x20')],'countcongestionretry':_0x215b6d[_0x441b('0x21')],'countnoanswerretry':_0x215b6d[_0x441b('0x22')],'countnosuchnumberretry':_0x215b6d[_0x441b('0x25')],'countdropretry':_0x215b6d[_0x441b('0x26')],'countabandonedretry':_0x215b6d['countabandonedretry'],'countmachineretry':_0x215b6d['countmachineretry'],'countagentrejectretry':_0x215b6d[_0x441b('0x28')],'createdAt':_0x215b6d[_0x441b('0x33')],'updatedAt':_0x215b6d[_0x441b('0x34')]};var _0x4005d6={'CmHopperId':_0x510b41['id'],'phone':_0x12388f[_0x441b('0x32')],'active':0x0,'OrderBy':_[_0x441b('0x2e')](_0x12388f[_0x441b('0x1f')])?0x0:_0x12388f[_0x441b('0x1f')],'scheduledat':_0x3a1e6d,'countbusyretry':_0x12388f['countbusyretry'],'countcongestionretry':_0x12388f[_0x441b('0x21')],'countnoanswerretry':_0x12388f[_0x441b('0x22')],'countnosuchnumberretry':_0x12388f[_0x441b('0x25')],'countdropretry':_0x12388f['countdropretry'],'countabandonedretry':_0x12388f[_0x441b('0x23')],'countmachineretry':_0x12388f[_0x441b('0x27')],'countagentrejectretry':_0x12388f[_0x441b('0x28')],'createdAt':_0x12388f[_0x441b('0x33')],'updatedAt':_0x12388f[_0x441b('0x34')]};return db[_0x441b('0x35')]['transaction'](function(_0x635978){return db[_0x441b('0x1e')][_0x441b('0x36')](_0x72d9b2,{'where':{'id':_0x12388f['id']}},{'transaction':_0x635978})[_0x441b('0xb')](function(){return db['CmHopper'][_0x441b('0x36')](_0x4005d6,{'where':{'id':_0x510b41['id']}},{'transaction':_0x635978});});})['then'](function(_0x1c9e0b){_0xb44fd1({'id':_0x510b41['id'],'phone':_0x12388f['phone']});})[_0x441b('0x15')](function(_0x30351e){logger['error'](_0x441b('0x37'),_0x30351e[_0x441b('0x13')]);_0x14fbed({'error':_0x30351e[_0x441b('0x13')]});});});}exports[_0x441b('0x38')]=function(_0x105496){var _0x3511b3=this;return new Promise(function(_0x4a9316,_0x14c055){return db[_0x441b('0x17')]['update'](_0x105496[_0x441b('0x19')][_0x441b('0x39')],{'where':{'id':_0x105496[_0x441b('0x19')]['id']}})[_0x441b('0xb')](function(_0x560635){_0x4a9316(_0x560635);})[_0x441b('0x15')](function(_0x209e12){logger[_0x441b('0x11')](_0x441b('0x38'),_0x209e12[_0x441b('0x13')]);_0x14c055(_0x3511b3[_0x441b('0x11')](0x1f4,_0x209e12['message']));});});};
\ No newline at end of file
index ad0d2b8..2760533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1546=['../../config/environment','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2f02d4,_0x27b24a){var _0x4b707d=function(_0x52f3ba){while(--_0x52f3ba){_0x2f02d4['push'](_0x2f02d4['shift']());}};_0x4b707d(++_0x27b24a);}(_0x1546,0x18b));var _0x6154=function(_0x4a5460,_0x44dae5){_0x4a5460=_0x4a5460-0x0;var _0x2b9fdb=_0x1546[_0x4a5460];return _0x2b9fdb;};'use strict';var multer=require('multer');var util=require(_0x6154('0x0'));var path=require(_0x6154('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6154('0x2'));var auth=require(_0x6154('0x3'));var interaction=require(_0x6154('0x4'));var config=require(_0x6154('0x5'));var controller=require('./cmHopperAdditionalPhone.controller');router['get']('/',auth[_0x6154('0x6')](),controller[_0x6154('0x7')]);router[_0x6154('0x8')](_0x6154('0x9'),auth[_0x6154('0x6')](),controller[_0x6154('0xa')]);router[_0x6154('0xb')]('/',auth[_0x6154('0x6')](),controller[_0x6154('0xc')]);router['put'](_0x6154('0x9'),auth[_0x6154('0x6')](),controller['update']);router[_0x6154('0xd')](_0x6154('0x9'),auth[_0x6154('0x6')](),controller[_0x6154('0xe')]);module[_0x6154('0xf')]=router;
\ No newline at end of file
+var _0xbbec=['/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','show','post','put'];(function(_0x138518,_0x2c741c){var _0x541eb8=function(_0x4c952f){while(--_0x4c952f){_0x138518['push'](_0x138518['shift']());}};_0x541eb8(++_0x2c741c);}(_0xbbec,0x7b));var _0xcbbe=function(_0x4acd5f,_0xdb7ab2){_0x4acd5f=_0x4acd5f-0x0;var _0x3b3eb5=_0xbbec[_0x4acd5f];return _0x3b3eb5;};'use strict';var multer=require(_0xcbbe('0x0'));var util=require('util');var path=require(_0xcbbe('0x1'));var timeout=require('connect-timeout');var express=require(_0xcbbe('0x2'));var router=express[_0xcbbe('0x3')]();var fs_extra=require(_0xcbbe('0x4'));var auth=require(_0xcbbe('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcbbe('0x6'));var controller=require(_0xcbbe('0x7'));router[_0xcbbe('0x8')]('/',auth[_0xcbbe('0x9')](),controller['index']);router['get']('/:id',auth[_0xcbbe('0x9')](),controller[_0xcbbe('0xa')]);router[_0xcbbe('0xb')]('/',auth[_0xcbbe('0x9')](),controller['create']);router[_0xcbbe('0xc')](_0xcbbe('0xd'),auth[_0xcbbe('0x9')](),controller[_0xcbbe('0xe')]);router['delete'](_0xcbbe('0xd'),auth['isAuthenticated'](),controller[_0xcbbe('0xf')]);module[_0xcbbe('0x10')]=router;
\ No newline at end of file
index d737d2d..c725c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd16=['INTEGER','contactListQueue','moment'];(function(_0x71e493,_0x4308b7){var _0x3d40ab=function(_0x29715){while(--_0x29715){_0x71e493['push'](_0x71e493['shift']());}};_0x3d40ab(++_0x4308b7);}(_0xfd16,0x113));var _0x6fd1=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xfd16[_0x38537f];return _0x141e23;};'use strict';var moment=require(_0x6fd1('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x6fd1('0x1')],'unique':_0x6fd1('0x2')},'ListId':{'type':Sequelize[_0x6fd1('0x1')],'unique':_0x6fd1('0x2')},'VoiceQueueId':{'type':Sequelize[_0x6fd1('0x1')],'unique':_0x6fd1('0x2')}};
\ No newline at end of file
+var _0x847f=['contactListQueue','moment','sequelize','exports','INTEGER'];(function(_0x14b280,_0x570402){var _0x40065b=function(_0x297226){while(--_0x297226){_0x14b280['push'](_0x14b280['shift']());}};_0x40065b(++_0x570402);}(_0x847f,0x182));var _0xf847=function(_0xf80b3,_0x25d5f3){_0xf80b3=_0xf80b3-0x0;var _0x10c489=_0x847f[_0xf80b3];return _0x10c489;};'use strict';var moment=require(_0xf847('0x0'));var Sequelize=require(_0xf847('0x1'));module[_0xf847('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xf847('0x3')],'unique':_0xf847('0x4')},'ListId':{'type':Sequelize[_0xf847('0x3')],'unique':_0xf847('0x4')},'VoiceQueueId':{'type':Sequelize[_0xf847('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
index 1d1bde5..c968150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a1=['crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','end','error','name','send','index','map','CmHopperBlack','fieldName','type','key','model','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','keys','rawAttributes','include','options','body','find','describe','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x72a1,0x159));var _0x172a=function(_0x59d8dc,_0x4aa442){_0x59d8dc=_0x59d8dc-0x0;var _0x5375e6=_0x72a1[_0x59d8dc];return _0x5375e6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x172a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x172a('0x1'));var moment=require('moment');var BPromise=require(_0x172a('0x2'));var Mustache=require(_0x172a('0x3'));var util=require(_0x172a('0x4'));var path=require(_0x172a('0x5'));var sox=require(_0x172a('0x6'));var csv=require(_0x172a('0x7'));var ejs=require(_0x172a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x172a('0x9'));var squel=require('squel');var crypto=require(_0x172a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x172a('0xb'));var toCsv=require(_0x172a('0x7'));var querystring=require(_0x172a('0xc'));var Papa=require('papaparse');var Redis=require(_0x172a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x172a('0xe'));var as=require(_0x172a('0xf'));var hardwareService=require(_0x172a('0x10'));var logger=require('../../config/logger')(_0x172a('0x11'));var utils=require('../../config/utils');var config=require(_0x172a('0x12'));var licenseUtil=require(_0x172a('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4167c3,_0x1aee84){_0x1aee84=_0x1aee84||0xcc;return function(_0x512e48){if(_0x512e48){return _0x4167c3[_0x172a('0x14')](_0x1aee84);}return _0x4167c3['status'](_0x1aee84)['end']();};}function respondWithResult(_0x18a07a,_0x3c8985){_0x3c8985=_0x3c8985||0xc8;return function(_0xc47b61){if(_0xc47b61){return _0x18a07a[_0x172a('0x15')](_0x3c8985)[_0x172a('0x16')](_0xc47b61);}};}function respondWithFilteredResult(_0x1ec5f6,_0x101bd5){return function(_0x29af7d){if(_0x29af7d){var _0x3619a8=typeof _0x101bd5[_0x172a('0x17')]===_0x172a('0x18')&&typeof _0x101bd5[_0x172a('0x19')]===_0x172a('0x18');var _0x57f068=_0x29af7d[_0x172a('0x1a')];var _0x5058e7=_0x3619a8?0x0:_0x101bd5[_0x172a('0x17')];var _0x46668c=_0x3619a8?_0x29af7d[_0x172a('0x1a')]:_0x101bd5[_0x172a('0x17')]+_0x101bd5[_0x172a('0x19')];var _0x52aea4;if(_0x46668c>=_0x57f068){_0x46668c=_0x57f068;_0x52aea4=0xc8;}else{_0x52aea4=0xce;}_0x1ec5f6[_0x172a('0x15')](_0x52aea4);return _0x1ec5f6[_0x172a('0x1b')]('Content-Range',_0x5058e7+'-'+_0x46668c+'/'+_0x57f068)['json'](_0x29af7d);}return null;};}function patchUpdates(_0x560ccb){return function(_0xaa4fc2){try{jsonpatch['apply'](_0xaa4fc2,_0x560ccb,!![]);}catch(_0x33155c){return BPromise[_0x172a('0x1c')](_0x33155c);}return _0xaa4fc2[_0x172a('0x1d')]();};}function saveUpdates(_0x233f59,_0x5133b5){return function(_0x588d66){if(_0x588d66){return _0x588d66[_0x172a('0x1e')](_0x233f59)['then'](function(_0x101b7b){return _0x101b7b;});}return null;};}function removeEntity(_0x4aaab6,_0x41e74c){return function(_0x358837){if(_0x358837){return _0x358837[_0x172a('0x1f')]()[_0x172a('0x20')](function(){_0x4aaab6['status'](0xcc)[_0x172a('0x21')]();});}};}function handleEntityNotFound(_0x35ab63,_0x329c7a){return function(_0x530d3e){if(!_0x530d3e){_0x35ab63[_0x172a('0x14')](0x194);}return _0x530d3e;};}function handleError(_0x3b412b,_0x34cae7){_0x34cae7=_0x34cae7||0x1f4;return function(_0x5eb7ad){logger[_0x172a('0x22')](_0x5eb7ad['stack']);if(_0x5eb7ad[_0x172a('0x23')]){delete _0x5eb7ad[_0x172a('0x23')];}_0x3b412b[_0x172a('0x15')](_0x34cae7)[_0x172a('0x24')](_0x5eb7ad);};}exports[_0x172a('0x25')]=function(_0x1497f5,_0x31007c){var _0x50de9d={},_0x23d231={},_0x3e8c2f={'count':0x0,'rows':[]};var _0x316343=_[_0x172a('0x26')](db[_0x172a('0x27')]['rawAttributes'],function(_0x47b06c){return{'name':_0x47b06c[_0x172a('0x28')],'type':_0x47b06c[_0x172a('0x29')][_0x172a('0x2a')]};});_0x23d231[_0x172a('0x2b')]=_[_0x172a('0x26')](_0x316343,_0x172a('0x23'));_0x23d231['query']=_['keys'](_0x1497f5['query']);_0x23d231[_0x172a('0x2c')]=_['intersection'](_0x23d231['model'],_0x23d231[_0x172a('0x2d')]);_0x50de9d[_0x172a('0x2e')]=_[_0x172a('0x2f')](_0x23d231[_0x172a('0x2b')],qs[_0x172a('0x30')](_0x1497f5[_0x172a('0x2d')][_0x172a('0x30')]));_0x50de9d[_0x172a('0x2e')]=_0x50de9d[_0x172a('0x2e')][_0x172a('0x31')]?_0x50de9d[_0x172a('0x2e')]:_0x23d231[_0x172a('0x2b')];if(!_0x1497f5[_0x172a('0x2d')][_0x172a('0x32')](_0x172a('0x33'))){_0x50de9d[_0x172a('0x19')]=qs[_0x172a('0x19')](_0x1497f5[_0x172a('0x2d')]['limit']);_0x50de9d['offset']=qs[_0x172a('0x17')](_0x1497f5['query'][_0x172a('0x17')]);}_0x50de9d[_0x172a('0x34')]=qs[_0x172a('0x35')](_0x1497f5[_0x172a('0x2d')][_0x172a('0x35')]);_0x50de9d[_0x172a('0x36')]=qs['filters'](_[_0x172a('0x37')](_0x1497f5[_0x172a('0x2d')],_0x23d231['filters']),_0x316343);if(_0x1497f5[_0x172a('0x2d')][_0x172a('0x38')]){_0x50de9d[_0x172a('0x36')]=_[_0x172a('0x39')](_0x50de9d[_0x172a('0x36')],{'$or':_[_0x172a('0x26')](_0x316343,function(_0x4802c8){if(_0x4802c8[_0x172a('0x29')]!==_0x172a('0x3a')){var _0x1f0f7b={};_0x1f0f7b[_0x4802c8[_0x172a('0x23')]]={'$like':'%'+_0x1497f5[_0x172a('0x2d')][_0x172a('0x38')]+'%'};return _0x1f0f7b;}})});}_0x50de9d=_[_0x172a('0x39')]({},_0x50de9d,_0x1497f5['options']);var _0x22b5c2={'where':_0x50de9d[_0x172a('0x36')]};return db[_0x172a('0x27')][_0x172a('0x1a')](_0x22b5c2)['then'](function(_0x32aa96){_0x3e8c2f[_0x172a('0x1a')]=_0x32aa96;if(_0x1497f5[_0x172a('0x2d')]['includeAll']){_0x50de9d['include']=[{'all':!![]}];}return db[_0x172a('0x27')][_0x172a('0x3b')](_0x50de9d);})[_0x172a('0x20')](function(_0x32d7f7){_0x3e8c2f[_0x172a('0x3c')]=_0x32d7f7;return _0x3e8c2f;})[_0x172a('0x20')](respondWithFilteredResult(_0x31007c,_0x50de9d))[_0x172a('0x3d')](handleError(_0x31007c,null));};exports[_0x172a('0x3e')]=function(_0x32978a,_0x5d52fa){var _0x2328ba={'raw':!![],'where':{'id':_0x32978a[_0x172a('0x3f')]['id']}},_0x5b169f={};_0x5b169f['model']=_[_0x172a('0x40')](db[_0x172a('0x27')][_0x172a('0x41')]);_0x5b169f[_0x172a('0x2d')]=_['keys'](_0x32978a[_0x172a('0x2d')]);_0x5b169f['filters']=_[_0x172a('0x2f')](_0x5b169f[_0x172a('0x2b')],_0x5b169f['query']);_0x2328ba[_0x172a('0x2e')]=_[_0x172a('0x2f')](_0x5b169f['model'],qs[_0x172a('0x30')](_0x32978a[_0x172a('0x2d')][_0x172a('0x30')]));_0x2328ba['attributes']=_0x2328ba[_0x172a('0x2e')][_0x172a('0x31')]?_0x2328ba[_0x172a('0x2e')]:_0x5b169f[_0x172a('0x2b')];if(_0x32978a['query']['includeAll']){_0x2328ba[_0x172a('0x42')]=[{'all':!![]}];}_0x2328ba=_[_0x172a('0x39')]({},_0x2328ba,_0x32978a[_0x172a('0x43')]);return db[_0x172a('0x27')]['find'](_0x2328ba)[_0x172a('0x20')](handleEntityNotFound(_0x5d52fa,null))[_0x172a('0x20')](respondWithResult(_0x5d52fa,null))[_0x172a('0x3d')](handleError(_0x5d52fa,null));};exports[_0x172a('0x1e')]=function(_0x38b7b8,_0x17bcc9){if(_0x38b7b8[_0x172a('0x44')]['id']){delete _0x38b7b8['body']['id'];}return db[_0x172a('0x27')][_0x172a('0x45')]({'where':{'id':_0x38b7b8[_0x172a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x17bcc9,null))[_0x172a('0x20')](saveUpdates(_0x38b7b8[_0x172a('0x44')],null))[_0x172a('0x20')](respondWithResult(_0x17bcc9,null))[_0x172a('0x3d')](handleError(_0x17bcc9,null));};exports[_0x172a('0x1f')]=function(_0x435a2e,_0x425005){return db[_0x172a('0x27')][_0x172a('0x45')]({'where':{'id':_0x435a2e[_0x172a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x425005,null))[_0x172a('0x20')](removeEntity(_0x425005,null))['catch'](handleError(_0x425005,null));};exports[_0x172a('0x46')]=function(_0x5ad875,_0x139737){return db[_0x172a('0x27')][_0x172a('0x46')]()[_0x172a('0x20')](respondWithResult(_0x139737,null))[_0x172a('0x3d')](handleError(_0x139737,null));};
\ No newline at end of file
+var _0x884f=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','keys','body','find','describe','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0xe3e0af,_0x4564ed){var _0x4828e9=function(_0x55c7a7){while(--_0x55c7a7){_0xe3e0af['push'](_0xe3e0af['shift']());}};_0x4828e9(++_0x4564ed);}(_0x884f,0x116));var _0xf884=function(_0x34ad22,_0x466bc9){_0x34ad22=_0x34ad22-0x0;var _0x1d3cc4=_0x884f[_0x34ad22];return _0x1d3cc4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf884('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf884('0x1'));var moment=require('moment');var BPromise=require(_0xf884('0x2'));var Mustache=require(_0xf884('0x3'));var util=require('util');var path=require(_0xf884('0x4'));var sox=require(_0xf884('0x5'));var csv=require(_0xf884('0x6'));var ejs=require(_0xf884('0x7'));var fs=require('fs');var fs_extra=require(_0xf884('0x8'));var _=require(_0xf884('0x9'));var squel=require(_0xf884('0xa'));var crypto=require(_0xf884('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf884('0xc'));var toCsv=require(_0xf884('0x6'));var querystring=require(_0xf884('0xd'));var Papa=require(_0xf884('0xe'));var Redis=require(_0xf884('0xf'));var authService=require(_0xf884('0x10'));var qs=require(_0xf884('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf884('0x12'));var logger=require(_0xf884('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xf884('0x14'));var licenseUtil=require(_0xf884('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31e1e3,_0x1b681b){_0x1b681b=_0x1b681b||0xcc;return function(_0x4fade4){if(_0x4fade4){return _0x31e1e3[_0xf884('0x16')](_0x1b681b);}return _0x31e1e3[_0xf884('0x17')](_0x1b681b)[_0xf884('0x18')]();};}function respondWithResult(_0x1fda7b,_0x278bb9){_0x278bb9=_0x278bb9||0xc8;return function(_0x1f4993){if(_0x1f4993){return _0x1fda7b[_0xf884('0x17')](_0x278bb9)[_0xf884('0x19')](_0x1f4993);}};}function respondWithFilteredResult(_0x24cf61,_0xb62605){return function(_0x2b97e3){if(_0x2b97e3){var _0x41be1e=typeof _0xb62605[_0xf884('0x1a')]==='undefined'&&typeof _0xb62605[_0xf884('0x1b')]===_0xf884('0x1c');var _0x51dc79=_0x2b97e3[_0xf884('0x1d')];var _0x26ba8f=_0x41be1e?0x0:_0xb62605[_0xf884('0x1a')];var _0x409a4e=_0x41be1e?_0x2b97e3['count']:_0xb62605[_0xf884('0x1a')]+_0xb62605['limit'];var _0x2781a2;if(_0x409a4e>=_0x51dc79){_0x409a4e=_0x51dc79;_0x2781a2=0xc8;}else{_0x2781a2=0xce;}_0x24cf61[_0xf884('0x17')](_0x2781a2);return _0x24cf61[_0xf884('0x1e')](_0xf884('0x1f'),_0x26ba8f+'-'+_0x409a4e+'/'+_0x51dc79)[_0xf884('0x19')](_0x2b97e3);}return null;};}function patchUpdates(_0x633af0){return function(_0x433935){try{jsonpatch['apply'](_0x433935,_0x633af0,!![]);}catch(_0x23d4f5){return BPromise['reject'](_0x23d4f5);}return _0x433935[_0xf884('0x20')]();};}function saveUpdates(_0x298122,_0x2051c3){return function(_0x13cf66){if(_0x13cf66){return _0x13cf66[_0xf884('0x21')](_0x298122)[_0xf884('0x22')](function(_0x1c3d1b){return _0x1c3d1b;});}return null;};}function removeEntity(_0x30ec08,_0xfbc55f){return function(_0xd4de){if(_0xd4de){return _0xd4de[_0xf884('0x23')]()[_0xf884('0x22')](function(){_0x30ec08[_0xf884('0x17')](0xcc)[_0xf884('0x18')]();});}};}function handleEntityNotFound(_0x9c7331,_0x4877d9){return function(_0x3d3d1b){if(!_0x3d3d1b){_0x9c7331['sendStatus'](0x194);}return _0x3d3d1b;};}function handleError(_0x1389a6,_0x27f124){_0x27f124=_0x27f124||0x1f4;return function(_0x29d598){logger[_0xf884('0x24')](_0x29d598['stack']);if(_0x29d598[_0xf884('0x25')]){delete _0x29d598[_0xf884('0x25')];}_0x1389a6['status'](_0x27f124)[_0xf884('0x26')](_0x29d598);};}exports[_0xf884('0x27')]=function(_0x25b6c7,_0x210d64){var _0x2895b5={},_0x5ce8d1={},_0x343b8a={'count':0x0,'rows':[]};var _0x230843=_[_0xf884('0x28')](db[_0xf884('0x29')][_0xf884('0x2a')],function(_0x2462c4){return{'name':_0x2462c4[_0xf884('0x2b')],'type':_0x2462c4[_0xf884('0x2c')][_0xf884('0x2d')]};});_0x5ce8d1[_0xf884('0x2e')]=_[_0xf884('0x28')](_0x230843,_0xf884('0x25'));_0x5ce8d1[_0xf884('0x2f')]=_['keys'](_0x25b6c7['query']);_0x5ce8d1[_0xf884('0x30')]=_[_0xf884('0x31')](_0x5ce8d1[_0xf884('0x2e')],_0x5ce8d1[_0xf884('0x2f')]);_0x2895b5[_0xf884('0x32')]=_[_0xf884('0x31')](_0x5ce8d1['model'],qs[_0xf884('0x33')](_0x25b6c7['query']['fields']));_0x2895b5[_0xf884('0x32')]=_0x2895b5[_0xf884('0x32')][_0xf884('0x34')]?_0x2895b5['attributes']:_0x5ce8d1[_0xf884('0x2e')];if(!_0x25b6c7['query'][_0xf884('0x35')](_0xf884('0x36'))){_0x2895b5[_0xf884('0x1b')]=qs[_0xf884('0x1b')](_0x25b6c7[_0xf884('0x2f')][_0xf884('0x1b')]);_0x2895b5['offset']=qs[_0xf884('0x1a')](_0x25b6c7[_0xf884('0x2f')][_0xf884('0x1a')]);}_0x2895b5[_0xf884('0x37')]=qs[_0xf884('0x38')](_0x25b6c7['query'][_0xf884('0x38')]);_0x2895b5[_0xf884('0x39')]=qs[_0xf884('0x30')](_[_0xf884('0x3a')](_0x25b6c7[_0xf884('0x2f')],_0x5ce8d1[_0xf884('0x30')]),_0x230843);if(_0x25b6c7[_0xf884('0x2f')]['filter']){_0x2895b5[_0xf884('0x39')]=_[_0xf884('0x3b')](_0x2895b5[_0xf884('0x39')],{'$or':_[_0xf884('0x28')](_0x230843,function(_0x20c257){if(_0x20c257['type']!==_0xf884('0x3c')){var _0x1fe25e={};_0x1fe25e[_0x20c257[_0xf884('0x25')]]={'$like':'%'+_0x25b6c7[_0xf884('0x2f')][_0xf884('0x3d')]+'%'};return _0x1fe25e;}})});}_0x2895b5=_[_0xf884('0x3b')]({},_0x2895b5,_0x25b6c7[_0xf884('0x3e')]);var _0x5373f3={'where':_0x2895b5['where']};return db[_0xf884('0x29')][_0xf884('0x1d')](_0x5373f3)[_0xf884('0x22')](function(_0x19acf0){_0x343b8a['count']=_0x19acf0;if(_0x25b6c7[_0xf884('0x2f')][_0xf884('0x3f')]){_0x2895b5[_0xf884('0x40')]=[{'all':!![]}];}return db[_0xf884('0x29')][_0xf884('0x41')](_0x2895b5);})[_0xf884('0x22')](function(_0x3f961b){_0x343b8a[_0xf884('0x42')]=_0x3f961b;return _0x343b8a;})[_0xf884('0x22')](respondWithFilteredResult(_0x210d64,_0x2895b5))[_0xf884('0x43')](handleError(_0x210d64,null));};exports['show']=function(_0x49d9d9,_0x4557ef){var _0x22f0fb={'raw':!![],'where':{'id':_0x49d9d9[_0xf884('0x44')]['id']}},_0x2352a7={};_0x2352a7[_0xf884('0x2e')]=_[_0xf884('0x45')](db['CmHopperBlack'][_0xf884('0x2a')]);_0x2352a7[_0xf884('0x2f')]=_[_0xf884('0x45')](_0x49d9d9[_0xf884('0x2f')]);_0x2352a7['filters']=_['intersection'](_0x2352a7[_0xf884('0x2e')],_0x2352a7[_0xf884('0x2f')]);_0x22f0fb[_0xf884('0x32')]=_[_0xf884('0x31')](_0x2352a7[_0xf884('0x2e')],qs[_0xf884('0x33')](_0x49d9d9['query'][_0xf884('0x33')]));_0x22f0fb[_0xf884('0x32')]=_0x22f0fb['attributes'][_0xf884('0x34')]?_0x22f0fb[_0xf884('0x32')]:_0x2352a7[_0xf884('0x2e')];if(_0x49d9d9[_0xf884('0x2f')][_0xf884('0x3f')]){_0x22f0fb[_0xf884('0x40')]=[{'all':!![]}];}_0x22f0fb=_[_0xf884('0x3b')]({},_0x22f0fb,_0x49d9d9[_0xf884('0x3e')]);return db[_0xf884('0x29')]['find'](_0x22f0fb)['then'](handleEntityNotFound(_0x4557ef,null))[_0xf884('0x22')](respondWithResult(_0x4557ef,null))['catch'](handleError(_0x4557ef,null));};exports['update']=function(_0x13a16c,_0x15d048){if(_0x13a16c[_0xf884('0x46')]['id']){delete _0x13a16c[_0xf884('0x46')]['id'];}return db[_0xf884('0x29')]['find']({'where':{'id':_0x13a16c[_0xf884('0x44')]['id']}})[_0xf884('0x22')](handleEntityNotFound(_0x15d048,null))[_0xf884('0x22')](saveUpdates(_0x13a16c[_0xf884('0x46')],null))[_0xf884('0x22')](respondWithResult(_0x15d048,null))[_0xf884('0x43')](handleError(_0x15d048,null));};exports['destroy']=function(_0x149cd3,_0x49bf84){return db[_0xf884('0x29')][_0xf884('0x47')]({'where':{'id':_0x149cd3[_0xf884('0x44')]['id']}})[_0xf884('0x22')](handleEntityNotFound(_0x49bf84,null))['then'](removeEntity(_0x49bf84,null))[_0xf884('0x43')](handleError(_0x49bf84,null));};exports[_0xf884('0x48')]=function(_0x3fc515,_0x484222){return db[_0xf884('0x29')][_0xf884('0x48')]()[_0xf884('0x22')](respondWithResult(_0x484222,null))[_0xf884('0x43')](handleError(_0x484222,null));};
\ No newline at end of file
index 1c0c743..bcc86c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffb=['rimraf','../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack','cm_hopper_black','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4f3c9b,_0x28e078){var _0x84e58a=function(_0x37bf49){while(--_0x37bf49){_0x4f3c9b['push'](_0x4f3c9b['shift']());}};_0x84e58a(++_0x28e078);}(_0xeffb,0x1a6));var _0xbeff=function(_0x3457b4,_0x4cd8f9){_0x3457b4=_0x3457b4-0x0;var _0xaa8fa9=_0xeffb[_0x3457b4];return _0xaa8fa9;};'use strict';var _=require('lodash');var util=require(_0xbeff('0x0'));var logger=require(_0xbeff('0x1'))(_0xbeff('0x2'));var moment=require(_0xbeff('0x3'));var BPromise=require(_0xbeff('0x4'));var rp=require(_0xbeff('0x5'));var fs=require('fs');var path=require(_0xbeff('0x6'));var rimraf=require(_0xbeff('0x7'));var config=require(_0xbeff('0x8'));var attributes=require(_0xbeff('0x9'));module[_0xbeff('0xa')]=function(_0x43261c,_0x5a4c1c){return _0x43261c['define'](_0xbeff('0xb'),attributes,{'tableName':_0xbeff('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5f0=['path','rimraf','../../config/environment','define','CmHopperBlack','cm_hopper_black','lodash','util','api','bluebird','request-promise'];(function(_0x41dc16,_0x44f2f6){var _0x536b5b=function(_0x21402d){while(--_0x21402d){_0x41dc16['push'](_0x41dc16['shift']());}};_0x536b5b(++_0x44f2f6);}(_0xc5f0,0x166));var _0x0c5f=function(_0x65c0bb,_0x82e7b8){_0x65c0bb=_0x65c0bb-0x0;var _0x320bd5=_0xc5f0[_0x65c0bb];return _0x320bd5;};'use strict';var _=require(_0x0c5f('0x0'));var util=require(_0x0c5f('0x1'));var logger=require('../../config/logger')(_0x0c5f('0x2'));var moment=require('moment');var BPromise=require(_0x0c5f('0x3'));var rp=require(_0x0c5f('0x4'));var fs=require('fs');var path=require(_0x0c5f('0x5'));var rimraf=require(_0x0c5f('0x6'));var config=require(_0x0c5f('0x7'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x538ed2,_0x1b0faa){return _0x538ed2[_0x0c5f('0x8')](_0x0c5f('0x9'),attributes,{'tableName':_0x0c5f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64eb990..32becb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','attributes','limit','include','map','model','update','UpdateCmHopperBlack','destroy','where','DestroyCmHopperBlack','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x265f52,_0x2d59d1){var _0x108c85=function(_0x56bc80){while(--_0x56bc80){_0x265f52['push'](_0x265f52['shift']());}};_0x108c85(++_0x2d59d1);}(_0x55d2,0x95));var _0x255d=function(_0xb578f1,_0x2fb93c){_0xb578f1=_0xb578f1-0x0;var _0x114128=_0x55d2[_0xb578f1];return _0x114128;};'use strict';var _=require('lodash');var util=require(_0x255d('0x0'));var moment=require(_0x255d('0x1'));var BPromise=require(_0x255d('0x2'));var rs=require(_0x255d('0x3'));var fs=require('fs');var Redis=require(_0x255d('0x4'));var db=require(_0x255d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x255d('0x6'));var config=require(_0x255d('0x7'));var jayson=require(_0x255d('0x8'));var client=jayson[_0x255d('0x9')][_0x255d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x346b05,_0x19b39d,_0x2f0023){return new BPromise(function(_0x1c7ca7,_0x5887c4){return client[_0x255d('0xb')](_0x346b05,_0x2f0023)[_0x255d('0xc')](function(_0x4c2aaa){logger[_0x255d('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x19b39d,_0x255d('0xe'));logger[_0x255d('0xf')](_0x255d('0x10'),_0x19b39d,'request\x20sent',JSON[_0x255d('0x11')](_0x4c2aaa));if(_0x4c2aaa[_0x255d('0x12')]){if(_0x4c2aaa[_0x255d('0x12')][_0x255d('0x13')]===0x1f4){logger['error'](_0x255d('0x14'),_0x19b39d,_0x4c2aaa[_0x255d('0x12')][_0x255d('0x15')]);return _0x5887c4(_0x4c2aaa[_0x255d('0x12')][_0x255d('0x15')]);}logger[_0x255d('0x12')](_0x255d('0x14'),_0x19b39d,_0x4c2aaa[_0x255d('0x12')][_0x255d('0x15')]);return _0x1c7ca7(_0x4c2aaa[_0x255d('0x12')]['message']);}else{logger[_0x255d('0xd')](_0x255d('0x14'),_0x19b39d,_0x255d('0xe'));_0x1c7ca7(_0x4c2aaa[_0x255d('0x16')][_0x255d('0x15')]);}})[_0x255d('0x17')](function(_0x3c8b5c){logger[_0x255d('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x19b39d,_0x3c8b5c);_0x5887c4(_0x3c8b5c);});});}exports[_0x255d('0x18')]=function(_0x27c832){var _0x100de7=this;return new Promise(function(_0x1de614,_0x53e250){return db[_0x255d('0x19')][_0x255d('0x1a')]({'raw':_0x27c832[_0x255d('0x1b')]?_0x27c832[_0x255d('0x1b')][_0x255d('0x1c')]===undefined?!![]:![]:!![],'where':_0x27c832['options']?_0x27c832[_0x255d('0x1b')]['where']||null:null,'attributes':_0x27c832[_0x255d('0x1b')]?_0x27c832[_0x255d('0x1b')][_0x255d('0x1d')]||null:null,'limit':_0x27c832[_0x255d('0x1b')]?_0x27c832[_0x255d('0x1b')][_0x255d('0x1e')]||null:null,'include':_0x27c832[_0x255d('0x1b')]?_0x27c832[_0x255d('0x1b')][_0x255d('0x1f')]?_[_0x255d('0x20')](_0x27c832[_0x255d('0x1b')][_0x255d('0x1f')],function(_0x2bd045){return{'model':db[_0x2bd045[_0x255d('0x21')]],'as':_0x2bd045['as'],'attributes':_0x2bd045[_0x255d('0x1d')],'include':_0x2bd045[_0x255d('0x1f')]?_[_0x255d('0x20')](_0x2bd045[_0x255d('0x1f')],function(_0x2c7738){return{'model':db[_0x2c7738[_0x255d('0x21')]],'as':_0x2c7738['as'],'attributes':_0x2c7738[_0x255d('0x1d')],'include':_0x2c7738[_0x255d('0x1f')]?_[_0x255d('0x20')](_0x2c7738[_0x255d('0x1f')],function(_0x13b8b6){return{'model':db[_0x13b8b6['model']],'as':_0x13b8b6['as'],'attributes':_0x13b8b6[_0x255d('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ebaca){logger[_0x255d('0xd')](_0x255d('0x18'),_0x27c832);logger['debug']('GetCmHopperBlack',_0x27c832,JSON[_0x255d('0x11')](_0x1ebaca));_0x1de614(_0x1ebaca);})[_0x255d('0x17')](function(_0x4844f5){logger[_0x255d('0x12')](_0x255d('0x18'),_0x4844f5[_0x255d('0x15')],_0x27c832);_0x53e250(_0x100de7[_0x255d('0x12')](0x1f4,_0x4844f5[_0x255d('0x15')]));});});};exports['UpdateCmHopperBlack']=function(_0x49260f){var _0x540001=this;return new Promise(function(_0x5eb0df,_0x287dbe){return db[_0x255d('0x19')][_0x255d('0x22')](_0x49260f['body'],{'raw':_0x49260f[_0x255d('0x1b')]?_0x49260f['options'][_0x255d('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x49260f['options']?_0x49260f[_0x255d('0x1b')]['where']||null:null,'attributes':_0x49260f['options']?_0x49260f[_0x255d('0x1b')]['attributes']||null:null,'limit':_0x49260f[_0x255d('0x1b')]?_0x49260f[_0x255d('0x1b')][_0x255d('0x1e')]||null:null})[_0x255d('0xc')](function(_0x3b7dae){logger['info']('UpdateCmHopperBlack',_0x49260f);logger[_0x255d('0xf')]('UpdateCmHopperBlack',_0x49260f,JSON[_0x255d('0x11')](_0x3b7dae));_0x5eb0df(_0x3b7dae);})['catch'](function(_0x4c3994){logger[_0x255d('0x12')](_0x255d('0x23'),_0x4c3994['message'],_0x49260f);_0x287dbe(_0x540001[_0x255d('0x12')](0x1f4,_0x4c3994[_0x255d('0x15')]));});});};exports['DestroyCmHopperBlack']=function(_0x28e596){var _0x3a8cf5=this;return new Promise(function(_0x4799d4,_0x27ba19){return db['CmHopperBlack'][_0x255d('0x24')]({'where':_0x28e596[_0x255d('0x1b')]?_0x28e596[_0x255d('0x1b')][_0x255d('0x25')]||null:null})[_0x255d('0xc')](function(_0xa1e52d){logger[_0x255d('0xd')](_0x255d('0x26'),_0x28e596);logger[_0x255d('0xf')]('DestroyCmHopperBlack',_0x28e596,JSON[_0x255d('0x11')](_0xa1e52d));_0x4799d4(_0xa1e52d);})['catch'](function(_0x2fdcd5){logger[_0x255d('0x12')](_0x255d('0x26'),_0x2fdcd5['message'],_0x28e596);_0x27ba19(_0x3a8cf5[_0x255d('0x12')](0x1f4,_0x2fdcd5[_0x255d('0x15')]));});});};
\ No newline at end of file
+var _0x2da8=['GetCmHopperBlack','findAll','options','raw','where','attributes','limit','model','include','map','CmHopperBlack','update','body','then','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch'];(function(_0x166770,_0x11f3e8){var _0x3f4892=function(_0x4127b8){while(--_0x4127b8){_0x166770['push'](_0x166770['shift']());}};_0x3f4892(++_0x11f3e8);}(_0x2da8,0x89));var _0x82da=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2da8[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x82da('0x0'));var util=require(_0x82da('0x1'));var moment=require(_0x82da('0x2'));var BPromise=require(_0x82da('0x3'));var rs=require(_0x82da('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82da('0x5'))['db'];var utils=require(_0x82da('0x6'));var logger=require('../../config/logger')(_0x82da('0x7'));var config=require(_0x82da('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x82da('0x9')][_0x82da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bdded,_0x49412d,_0x5b36bc){return new BPromise(function(_0x35440d,_0x474403){return client[_0x82da('0xb')](_0x1bdded,_0x5b36bc)['then'](function(_0x576c62){logger[_0x82da('0xc')]('CmHopperBlack,\x20%s,\x20%s',_0x49412d,_0x82da('0xd'));logger[_0x82da('0xe')](_0x82da('0xf'),_0x49412d,_0x82da('0xd'),JSON[_0x82da('0x10')](_0x576c62));if(_0x576c62['error']){if(_0x576c62[_0x82da('0x11')][_0x82da('0x12')]===0x1f4){logger[_0x82da('0x11')](_0x82da('0x13'),_0x49412d,_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);return _0x474403(_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);}logger[_0x82da('0x11')](_0x82da('0x13'),_0x49412d,_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);return _0x35440d(_0x576c62[_0x82da('0x11')][_0x82da('0x14')]);}else{logger[_0x82da('0xc')](_0x82da('0x13'),_0x49412d,'request\x20sent');_0x35440d(_0x576c62[_0x82da('0x15')][_0x82da('0x14')]);}})[_0x82da('0x16')](function(_0x41758d){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x49412d,_0x41758d);_0x474403(_0x41758d);});});}exports[_0x82da('0x17')]=function(_0x45875d){var _0xb42902=this;return new Promise(function(_0x2b8608,_0x4306e5){return db['CmHopperBlack'][_0x82da('0x18')]({'raw':_0x45875d['options']?_0x45875d[_0x82da('0x19')][_0x82da('0x1a')]===undefined?!![]:![]:!![],'where':_0x45875d['options']?_0x45875d[_0x82da('0x19')][_0x82da('0x1b')]||null:null,'attributes':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')][_0x82da('0x1c')]||null:null,'limit':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')][_0x82da('0x1d')]||null:null,'include':_0x45875d[_0x82da('0x19')]?_0x45875d[_0x82da('0x19')]['include']?_['map'](_0x45875d[_0x82da('0x19')]['include'],function(_0x4fb2bd){return{'model':db[_0x4fb2bd[_0x82da('0x1e')]],'as':_0x4fb2bd['as'],'attributes':_0x4fb2bd['attributes'],'include':_0x4fb2bd[_0x82da('0x1f')]?_[_0x82da('0x20')](_0x4fb2bd[_0x82da('0x1f')],function(_0x837e14){return{'model':db[_0x837e14['model']],'as':_0x837e14['as'],'attributes':_0x837e14['attributes'],'include':_0x837e14['include']?_[_0x82da('0x20')](_0x837e14[_0x82da('0x1f')],function(_0x18b4b6){return{'model':db[_0x18b4b6[_0x82da('0x1e')]],'as':_0x18b4b6['as'],'attributes':_0x18b4b6[_0x82da('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8f382f){logger['info'](_0x82da('0x17'),_0x45875d);logger['debug'](_0x82da('0x17'),_0x45875d,JSON[_0x82da('0x10')](_0x8f382f));_0x2b8608(_0x8f382f);})[_0x82da('0x16')](function(_0x146b53){logger[_0x82da('0x11')](_0x82da('0x17'),_0x146b53[_0x82da('0x14')],_0x45875d);_0x4306e5(_0xb42902[_0x82da('0x11')](0x1f4,_0x146b53[_0x82da('0x14')]));});});};exports['UpdateCmHopperBlack']=function(_0x3c7946){var _0x365b64=this;return new Promise(function(_0x5dae64,_0x11ee75){return db[_0x82da('0x21')][_0x82da('0x22')](_0x3c7946[_0x82da('0x23')],{'raw':_0x3c7946[_0x82da('0x19')]?_0x3c7946[_0x82da('0x19')][_0x82da('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c7946[_0x82da('0x19')]?_0x3c7946['options'][_0x82da('0x1b')]||null:null,'attributes':_0x3c7946[_0x82da('0x19')]?_0x3c7946['options'][_0x82da('0x1c')]||null:null,'limit':_0x3c7946[_0x82da('0x19')]?_0x3c7946[_0x82da('0x19')][_0x82da('0x1d')]||null:null})[_0x82da('0x24')](function(_0x5014dd){logger[_0x82da('0xc')](_0x82da('0x25'),_0x3c7946);logger[_0x82da('0xe')]('UpdateCmHopperBlack',_0x3c7946,JSON[_0x82da('0x10')](_0x5014dd));_0x5dae64(_0x5014dd);})[_0x82da('0x16')](function(_0x34ca44){logger[_0x82da('0x11')](_0x82da('0x25'),_0x34ca44[_0x82da('0x14')],_0x3c7946);_0x11ee75(_0x365b64[_0x82da('0x11')](0x1f4,_0x34ca44['message']));});});};exports[_0x82da('0x26')]=function(_0x24a58c){var _0x51850d=this;return new Promise(function(_0x588be9,_0x3bc685){return db[_0x82da('0x21')][_0x82da('0x27')]({'where':_0x24a58c[_0x82da('0x19')]?_0x24a58c[_0x82da('0x19')][_0x82da('0x1b')]||null:null})['then'](function(_0x43ca71){logger['info'](_0x82da('0x26'),_0x24a58c);logger['debug'](_0x82da('0x26'),_0x24a58c,JSON[_0x82da('0x10')](_0x43ca71));_0x588be9(_0x43ca71);})[_0x82da('0x16')](function(_0x435db6){logger[_0x82da('0x11')](_0x82da('0x26'),_0x435db6['message'],_0x24a58c);_0x3bc685(_0x51850d[_0x82da('0x11')](0x1f4,_0x435db6[_0x82da('0x14')]));});});};
\ No newline at end of file
index 5b4ad97..ccd2c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','isAuthenticated','index','get','/describe','/:id'];(function(_0x13dc6e,_0x16ee30){var _0x40649e=function(_0x255552){while(--_0x255552){_0x13dc6e['push'](_0x13dc6e['shift']());}};_0x40649e(++_0x16ee30);}(_0x6d38,0x1ef));var _0x86d3=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x6d38[_0x36eaaa];return _0x461349;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['put'](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['update']);router['delete'](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['destroy']);module[_0x86d3('0xc')]=router;
\ No newline at end of file
+var _0xf072=['../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','show','put','delete','destroy','multer','util','path','express','fs-extra'];(function(_0x3c2eec,_0x5ec3b0){var _0x1d7c15=function(_0x2d790b){while(--_0x2d790b){_0x3c2eec['push'](_0x3c2eec['shift']());}};_0x1d7c15(++_0x5ec3b0);}(_0xf072,0x1cf));var _0x2f07=function(_0x3bf29b,_0x32c9b1){_0x3bf29b=_0x3bf29b-0x0;var _0x10d5d0=_0xf072[_0x3bf29b];return _0x10d5d0;};'use strict';var multer=require(_0x2f07('0x0'));var util=require(_0x2f07('0x1'));var path=require(_0x2f07('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f07('0x3'));var router=express['Router']();var fs_extra=require(_0x2f07('0x4'));var auth=require(_0x2f07('0x5'));var interaction=require(_0x2f07('0x6'));var config=require('../../config/environment');var controller=require(_0x2f07('0x7'));router[_0x2f07('0x8')]('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0xa')]);router[_0x2f07('0x8')](_0x2f07('0xb'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xc')]);router[_0x2f07('0x8')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xe')]);router[_0x2f07('0xf')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller['update']);router[_0x2f07('0x10')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x11')]);module['exports']=router;
\ No newline at end of file
index ba7cfba..11fb8ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25d7=['seconds','BOOLEAN','moment','exports','INTEGER','STRING','DATE','endtime','setDataValue','diff'];(function(_0x1b9971,_0x5e1289){var _0x416530=function(_0x4386d5){while(--_0x4386d5){_0x1b9971['push'](_0x1b9971['shift']());}};_0x416530(++_0x5e1289);}(_0x25d7,0x66));var _0x725d=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x25d7[_0x21353c];return _0xa99120;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x725d('0x0'));module[_0x725d('0x1')]={'state':{'type':Sequelize[_0x725d('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x725d('0x3')]},'scheduledat':{'type':Sequelize[_0x725d('0x4')]},'countbusyretry':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x725d('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x725d('0x3')]},'originatecalleridname':{'type':Sequelize[_0x725d('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x725d('0x4')]},'answertime':{'type':Sequelize[_0x725d('0x4')]},'droptime':{'type':Sequelize[_0x725d('0x4')]},'endtime':{'type':Sequelize[_0x725d('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x725d('0x3')]},'campaign':{'type':Sequelize[_0x725d('0x3')]},'campaigntype':{'type':Sequelize[_0x725d('0x3')]},'membername':{'type':Sequelize[_0x725d('0x3')]},'reason':{'type':Sequelize[_0x725d('0x3')]},'disposition':{'type':Sequelize[_0x725d('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x725d('0x3')]},'dispositionat':{'type':Sequelize[_0x725d('0x4')],'set':function(_0x2a193a){var _0x164e9e=this['getDataValue'](_0x725d('0x5'));if(_0x164e9e&&_0x2a193a){this[_0x725d('0x6')]('followuptime',moment(_0x2a193a)[_0x725d('0x7')](moment(_0x164e9e),_0x725d('0x8')));}}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x725d('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x725d('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x725d('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x725d('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x725d('0x4')]},'deleted':{'type':Sequelize[_0x725d('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x725d('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x725d('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x725d('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7f96=['INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','seconds','BOOLEAN','sequelize','moment'];(function(_0x440513,_0x1e31b4){var _0x162740=function(_0x2650b4){while(--_0x2650b4){_0x440513['push'](_0x440513['shift']());}};_0x162740(++_0x1e31b4);}(_0x7f96,0x170));var _0x67f9=function(_0x13e01b,_0x4157cc){_0x13e01b=_0x13e01b-0x0;var _0x74408f=_0x7f96[_0x13e01b];return _0x74408f;};'use strict';var Sequelize=require(_0x67f9('0x0'));var moment=require(_0x67f9('0x1'));module['exports']={'state':{'type':Sequelize[_0x67f9('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x67f9('0x3')]},'scheduledat':{'type':Sequelize[_0x67f9('0x4')]},'countbusyretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x67f9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x67f9('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x67f9('0x3')]},'starttime':{'type':Sequelize[_0x67f9('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x67f9('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x67f9('0x4')]},'ringtime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x67f9('0x3')]},'membername':{'type':Sequelize[_0x67f9('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x67f9('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x67f9('0x3')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x2e6b12){var _0x3a61aa=this[_0x67f9('0x5')](_0x67f9('0x6'));if(_0x3a61aa&&_0x2e6b12){this[_0x67f9('0x7')]('followuptime',moment(_0x2e6b12)['diff'](moment(_0x3a61aa),_0x67f9('0x8')));}}},'amd':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x67f9('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x67f9('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x67f9('0x4')]},'deleted':{'type':Sequelize[_0x67f9('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x67f9('0x4')]},'recallme':{'type':Sequelize[_0x67f9('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x67f9('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x67f9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8fb46a2..fe94474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','CmHopperFinal','includeAll','rows','catch','show','params','intersection','include','find','describe','body','uniqueid','findAll','sequelize','literal','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','cm_hopper','fromQuery','phone','scheduledAt','ListId','VoiceQueueId','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','createdAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','CmHopper','findOne','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv'];(function(_0x36ded8,_0xe27a7f){var _0x108289=function(_0x1f394f){while(--_0x1f394f){_0x36ded8['push'](_0x36ded8['shift']());}};_0x108289(++_0xe27a7f);}(_0x0295,0x1f0));var _0x5029=function(_0x4cf2bb,_0xc26020){_0x4cf2bb=_0x4cf2bb-0x0;var _0x44e779=_0x0295[_0x4cf2bb];return _0x44e779;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}exports[_0x5029('0x25')]=function(_0x4a24b9,_0x32da06){var _0x251f99={},_0xe5313e={},_0x4b6f92={'count':0x0,'rows':[]};var _0x2cedf6=_[_0x5029('0x26')](db['CmHopperFinal'][_0x5029('0x27')],function(_0x25032b){return{'name':_0x25032b[_0x5029('0x28')],'type':_0x25032b[_0x5029('0x29')][_0x5029('0x2a')]};});_0xe5313e[_0x5029('0x2b')]=_[_0x5029('0x26')](_0x2cedf6,_0x5029('0x23'));_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2d')](_0x4a24b9[_0x5029('0x2c')]);_0xe5313e[_0x5029('0x2e')]=_['intersection'](_0xe5313e[_0x5029('0x2b')],_0xe5313e['query']);_0x251f99[_0x5029('0x2f')]=_['intersection'](_0xe5313e['model'],qs[_0x5029('0x30')](_0x4a24b9[_0x5029('0x2c')][_0x5029('0x30')]));_0x251f99['attributes']=_0x251f99[_0x5029('0x2f')][_0x5029('0x31')]?_0x251f99[_0x5029('0x2f')]:_0xe5313e[_0x5029('0x2b')];if(!_0x4a24b9[_0x5029('0x2c')][_0x5029('0x32')](_0x5029('0x33'))){_0x251f99[_0x5029('0x1a')]=qs[_0x5029('0x1a')](_0x4a24b9['query'][_0x5029('0x1a')]);_0x251f99[_0x5029('0x18')]=qs[_0x5029('0x18')](_0x4a24b9[_0x5029('0x2c')]['offset']);}_0x251f99[_0x5029('0x34')]=qs[_0x5029('0x35')](_0x4a24b9[_0x5029('0x2c')]['sort']);_0x251f99['where']=qs[_0x5029('0x2e')](_[_0x5029('0x36')](_0x4a24b9['query'],_0xe5313e['filters']),_0x2cedf6);if(_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]){_0x251f99[_0x5029('0x38')]=_[_0x5029('0x39')](_0x251f99[_0x5029('0x38')],{'$or':_[_0x5029('0x26')](_0x2cedf6,function(_0x3cb84e){if(_0x3cb84e[_0x5029('0x29')]!==_0x5029('0x3a')){var _0x3effa4={};_0x3effa4[_0x3cb84e[_0x5029('0x23')]]={'$like':'%'+_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]+'%'};return _0x3effa4;}})});}_0x251f99=_[_0x5029('0x39')]({},_0x251f99,_0x4a24b9['options']);var _0x57c2b5={'where':_0x251f99[_0x5029('0x38')]};return db[_0x5029('0x3b')][_0x5029('0x1b')](_0x57c2b5)['then'](function(_0x32d8a3){_0x4b6f92[_0x5029('0x1b')]=_0x32d8a3;if(_0x4a24b9['query'][_0x5029('0x3c')]){_0x251f99['include']=[{'all':!![]}];}return db[_0x5029('0x3b')]['findAll'](_0x251f99);})[_0x5029('0x20')](function(_0x359838){_0x4b6f92[_0x5029('0x3d')]=_0x359838;return _0x4b6f92;})[_0x5029('0x20')](respondWithFilteredResult(_0x32da06,_0x251f99))[_0x5029('0x3e')](handleError(_0x32da06,null));};exports[_0x5029('0x3f')]=function(_0x4b2219,_0x1021ea){var _0x2ae047={'raw':!![],'where':{'id':_0x4b2219[_0x5029('0x40')]['id']}},_0x5a3e4d={};_0x5a3e4d[_0x5029('0x2b')]=_[_0x5029('0x2d')](db[_0x5029('0x3b')][_0x5029('0x27')]);_0x5a3e4d[_0x5029('0x2c')]=_['keys'](_0x4b2219[_0x5029('0x2c')]);_0x5a3e4d[_0x5029('0x2e')]=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],_0x5a3e4d[_0x5029('0x2c')]);_0x2ae047['attributes']=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],qs[_0x5029('0x30')](_0x4b2219[_0x5029('0x2c')][_0x5029('0x30')]));_0x2ae047[_0x5029('0x2f')]=_0x2ae047[_0x5029('0x2f')][_0x5029('0x31')]?_0x2ae047[_0x5029('0x2f')]:_0x5a3e4d['model'];if(_0x4b2219[_0x5029('0x2c')][_0x5029('0x3c')]){_0x2ae047[_0x5029('0x42')]=[{'all':!![]}];}_0x2ae047=_[_0x5029('0x39')]({},_0x2ae047,_0x4b2219['options']);return db['CmHopperFinal'][_0x5029('0x43')](_0x2ae047)[_0x5029('0x20')](handleEntityNotFound(_0x1021ea,null))[_0x5029('0x20')](respondWithResult(_0x1021ea,null))[_0x5029('0x3e')](handleError(_0x1021ea,null));};exports[_0x5029('0x44')]=function(_0x3dfc08,_0x2bb7fc){return db[_0x5029('0x3b')][_0x5029('0x44')]()[_0x5029('0x20')](respondWithResult(_0x2bb7fc,null))[_0x5029('0x3e')](handleError(_0x2bb7fc,null));};exports[_0x5029('0x1f')]=function(_0x449ef5,_0x18f1f5){if(_0x449ef5[_0x5029('0x45')][_0x5029('0x46')]){delete _0x449ef5[_0x5029('0x45')][_0x5029('0x46')];}return db[_0x5029('0x3b')][_0x5029('0x43')]({'where':{'uniqueid':_0x449ef5[_0x5029('0x40')]['id']}})['then'](handleEntityNotFound(_0x18f1f5,null))[_0x5029('0x20')](saveUpdates(_0x449ef5['body'],null))[_0x5029('0x20')](respondWithResult(_0x18f1f5,null))[_0x5029('0x3e')](handleError(_0x18f1f5,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x5343c6,_0x319bff,_0x5e739d){return db['CmHopperFinal'][_0x5029('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x5343c6[_0x5029('0x40')]['id']},'attributes':[[db[_0x5029('0x48')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x200,\x201,\x20null'))),_0x5029('0x4a')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x4c')))),_0x5029('0x4d')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')]['literal'](_0x5029('0x4e')))),'busyContacts'],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')]['literal']('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x5029('0x4f')],[db['sequelize']['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x50')))),_0x5029('0x51')],[db['sequelize']['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x2022,\x201,\x20null'))),_0x5029('0x52')],[db[_0x5029('0x48')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x53')))),_0x5029('0x54')]]})['then'](handleEntityNotFound(_0x319bff,null))[_0x5029('0x20')](respondWithResult(_0x319bff,null))[_0x5029('0x3e')](handleError(_0x319bff,null));};exports[_0x5029('0x55')]=function(_0x2aebb3,_0x3a82f7,_0x26f56f){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x2aebb3[_0x5029('0x40')]['id']},'attributes':[[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x56')))),_0x5029('0x4a')],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x203,\x201,\x20null'))),_0x5029('0x4d')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x4e')))),_0x5029('0x57')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x58')))),_0x5029('0x59')],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db['sequelize'][_0x5029('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x5029('0x4f')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0x5029('0x49')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x5029('0x51')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')]['literal'](_0x5029('0x5a')))),_0x5029('0x52')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db['sequelize'][_0x5029('0x49')](_0x5029('0x53')))),'answeringMachine']]})[_0x5029('0x20')](handleEntityNotFound(_0x3a82f7,null))[_0x5029('0x20')](respondWithResult(_0x3a82f7,null))[_0x5029('0x3e')](handleError(_0x3a82f7,null));};exports[_0x5029('0x5b')]=function(_0x9b1c13,_0x1bd1c6,_0x5bd84e){return db['VoiceQueue'][_0x5029('0x43')]({'where':{'id':_0x9b1c13['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bd1c6,null))[_0x5029('0x20')](function(_0x58db57){var _0x181956;if(_0x58db57){_0x181956=squel['insert']()['into'](_0x5029('0x5c'))[_0x5029('0x5d')]([_0x5029('0x5e'),_0x5029('0x5f'),'ContactId',_0x5029('0x60'),_0x5029('0x61'),'createdAt',_0x5029('0x62')],squel[_0x5029('0x63')]()['field']('ANY_VALUE(calleridnum)','phone')[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x5f'))[_0x5029('0x64')](_0x5029('0x66'),_0x5029('0x67'))[_0x5029('0x64')](_0x5029('0x68'),_0x5029('0x60'))['field']('ANY_VALUE(VoiceQueueId)',_0x5029('0x61'))[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x69'))[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x62'))['from'](_0x5029('0x6a'))[_0x5029('0x38')](_0x5029('0x6b'),_0x9b1c13['params']['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x6d'),_0x9b1c13['body'][_0x5029('0x6e')][_0x5029('0x6c')]())[_0x5029('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x5029('0x38')](_0x5029('0x6f'),squel['select']()[_0x5029('0x64')](_0x5029('0x5e'))[_0x5029('0x70')](_0x5029('0x5c'))[_0x5029('0x38')]('VoiceQueueId\x20=\x20?',_0x9b1c13[_0x5029('0x40')]['id'][_0x5029('0x6c')]()))[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()['field'](_0x5029('0x71'))[_0x5029('0x70')](_0x5029('0x6a'))['where'](_0x5029('0x6b'),_0x9b1c13[_0x5029('0x40')]['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x72')))[_0x5029('0x73')](_0x5029('0x67')))['toString']();return db[_0x5029('0x48')][_0x5029('0x2c')](_0x181956);}return[];})[_0x5029('0x20')](respondWithResult(_0x1bd1c6,null))[_0x5029('0x3e')](handleError(_0x1bd1c6,null));};exports[_0x5029('0x74')]=function(_0x4c40d1,_0x209c83,_0x443070){return db[_0x5029('0x75')]['find']({'where':{'id':_0x4c40d1[_0x5029('0x40')]['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x209c83,null))['then'](function(_0x5c8bd4){var _0x524825;if(_0x5c8bd4){_0x524825=squel[_0x5029('0x76')]()[_0x5029('0x77')](_0x5029('0x5c'))[_0x5029('0x5d')]([_0x5029('0x5e'),'scheduledAt',_0x5029('0x67'),_0x5029('0x60'),_0x5029('0x78'),'createdAt','updatedAt'],squel[_0x5029('0x63')]()[_0x5029('0x64')](_0x5029('0x79'),_0x5029('0x5e'))['field'](_0x5029('0x65'),_0x5029('0x5f'))[_0x5029('0x64')](_0x5029('0x66'),_0x5029('0x67'))[_0x5029('0x64')](_0x5029('0x68'),_0x5029('0x60'))['field'](_0x5029('0x7a'),'CampaignId')['field'](_0x5029('0x65'),'createdAt')[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x62'))[_0x5029('0x70')](_0x5029('0x6a'))[_0x5029('0x38')](_0x5029('0x7b'),_0x4c40d1[_0x5029('0x40')]['id']['toString']())['where'](_0x5029('0x6d'),_0x4c40d1['body']['state'][_0x5029('0x6c')]())['where']('calleridnum\x20IS\x20NOT\x20NULL')[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()[_0x5029('0x64')](_0x5029('0x5e'))['from'](_0x5029('0x5c'))[_0x5029('0x38')](_0x5029('0x7b'),_0x4c40d1['params']['id'][_0x5029('0x6c')]()))[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()[_0x5029('0x64')]('calleridnum')['from'](_0x5029('0x6a'))[_0x5029('0x38')]('CampaignId\x20=\x20?',_0x4c40d1[_0x5029('0x40')]['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x72')))[_0x5029('0x73')](_0x5029('0x67')))[_0x5029('0x6c')]();return db[_0x5029('0x48')]['query'](_0x524825);}return[];})['then'](respondWithResult(_0x209c83,null))[_0x5029('0x3e')](handleError(_0x209c83,null));};exports['checkContactHopper']=function(_0x20a259,_0x5e5f88,_0x36fdce){return db[_0x5029('0x7c')][_0x5029('0x7d')]({'where':{'VoiceQueueId':_0x20a259['body'][_0x5029('0x61')],'CampaignId':_0x20a259[_0x5029('0x45')][_0x5029('0x78')],'ContactId':_0x20a259['body'][_0x5029('0x67')]}})[_0x5029('0x20')](handleEntityNotFound(_0x5e5f88,null))[_0x5029('0x20')](function(_0x4421bd){if(_0x4421bd){return _0x4421bd;}return null;})[_0x5029('0x20')](respondWithResult(_0x5e5f88,null))[_0x5029('0x3e')](handleError(_0x5e5f88,null));};
\ No newline at end of file
+var _0xadb5=['`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noSuchContacts','VoiceQueue','find','insert','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','Campaign','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','VoiceQueueId','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CmHopperFinal','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x528669,_0x40349e){var _0x4e1ea3=function(_0x527278){while(--_0x527278){_0x528669['push'](_0x528669['shift']());}};_0x4e1ea3(++_0x40349e);}(_0xadb5,0xad));var _0x5adb=function(_0x4d1ae6,_0x30d0b5){_0x4d1ae6=_0x4d1ae6-0x0;var _0x2d2265=_0xadb5[_0x4d1ae6];return _0x2d2265;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CmHopperFinal']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')]()['then'](respondWithResult(_0x3a5409,null))[_0x5adb('0x42')](handleError(_0x3a5409,null));};exports['update']=function(_0x51bc49,_0x5015ee){if(_0x51bc49[_0x5adb('0x47')][_0x5adb('0x48')]){delete _0x51bc49[_0x5adb('0x47')]['uniqueid'];}return db[_0x5adb('0x2a')]['find']({'where':{'uniqueid':_0x51bc49[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x5015ee,null))[_0x5adb('0x22')](saveUpdates(_0x51bc49['body'],null))[_0x5adb('0x22')](respondWithResult(_0x5015ee,null))['catch'](handleError(_0x5015ee,null));};exports[_0x5adb('0x49')]=function(_0x6dc067,_0x55c535,_0x2402a3){return db[_0x5adb('0x2a')][_0x5adb('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x6dc067[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x4c')))),'noSuchContacts'],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize'][_0x5adb('0x4b')](_0x5adb('0x4e')))),_0x5adb('0x4f')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x52')))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),_0x5adb('0x58')],[db[_0x5adb('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})['then'](handleEntityNotFound(_0x55c535,null))[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x42')](handleError(_0x55c535,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5cb50e,_0x476e62,_0x1505f7){return db['CmHopperFinal'][_0x5adb('0x40')]({'raw':![],'where':{'CampaignId':_0x5cb50e[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x4c')))),_0x5adb('0x5b')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0x5adb('0x4f')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize']['literal'](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})[_0x5adb('0x22')](handleEntityNotFound(_0x476e62,null))[_0x5adb('0x22')](respondWithResult(_0x476e62,null))[_0x5adb('0x42')](handleError(_0x476e62,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x5e55c2,_0x1fc73b,_0x56df90){return db[_0x5adb('0x5c')][_0x5adb('0x5d')]({'where':{'id':_0x5e55c2[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x1fc73b,null))[_0x5adb('0x22')](function(_0x236f59){var _0x338aee;if(_0x236f59){_0x338aee=squel[_0x5adb('0x5e')]()['into'](_0x5adb('0x5f'))[_0x5adb('0x60')]([_0x5adb('0x61'),'scheduledAt',_0x5adb('0x62'),_0x5adb('0x63'),'VoiceQueueId',_0x5adb('0x64'),'updatedAt'],squel[_0x5adb('0x65')]()[_0x5adb('0x66')]('ANY_VALUE(calleridnum)',_0x5adb('0x61'))[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')]('ANY_VALUE(ListId)',_0x5adb('0x63'))[_0x5adb('0x66')](_0x5adb('0x6a'),'VoiceQueueId')['field'](_0x5adb('0x67'),'createdAt')[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x6b'))['from'](_0x5adb('0x6c'))[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())['where'](_0x5adb('0x6f'),_0x5e55c2[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())['where'](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x61'))[_0x5adb('0x73')]('cm_hopper')[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2['params']['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x5adb('0x65')]()['field'](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')]('VoiceQueueId\x20=\x20?',_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')]('ContactId'))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')][_0x5adb('0x2f')](_0x338aee);}return[];})[_0x5adb('0x22')](respondWithResult(_0x1fc73b,null))['catch'](handleError(_0x1fc73b,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x3f3db9,_0x461a07,_0x2e5c96){return db[_0x5adb('0x77')][_0x5adb('0x5d')]({'where':{'id':_0x3f3db9[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x461a07,null))['then'](function(_0xda26cc){var _0x14bada;if(_0xda26cc){_0x14bada=squel[_0x5adb('0x5e')]()[_0x5adb('0x78')]('cm_hopper')[_0x5adb('0x60')]([_0x5adb('0x61'),_0x5adb('0x68'),_0x5adb('0x62'),_0x5adb('0x63'),_0x5adb('0x79'),_0x5adb('0x64'),_0x5adb('0x6b')],squel[_0x5adb('0x65')]()['field'](_0x5adb('0x7a'),_0x5adb('0x61'))['field'](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')](_0x5adb('0x7b'),_0x5adb('0x63'))['field'](_0x5adb('0x7c'),_0x5adb('0x79'))['field'](_0x5adb('0x67'),_0x5adb('0x64'))[_0x5adb('0x66')]('NOW()','updatedAt')[_0x5adb('0x73')](_0x5adb('0x6c'))[_0x5adb('0x37')]('CampaignId\x20=\x20?',_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x6f'),_0x3f3db9[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()['field']('phone')[_0x5adb('0x73')](_0x5adb('0x5f'))['where'](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id']['toString']())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')](_0x5adb('0x62')))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')]['query'](_0x14bada);}return[];})[_0x5adb('0x22')](respondWithResult(_0x461a07,null))[_0x5adb('0x42')](handleError(_0x461a07,null));};exports[_0x5adb('0x7e')]=function(_0x1e5532,_0x2c3af8,_0x3a201a){return db[_0x5adb('0x7f')][_0x5adb('0x80')]({'where':{'VoiceQueueId':_0x1e5532[_0x5adb('0x47')][_0x5adb('0x81')],'CampaignId':_0x1e5532['body'][_0x5adb('0x79')],'ContactId':_0x1e5532['body'][_0x5adb('0x62')]}})[_0x5adb('0x22')](handleEntityNotFound(_0x2c3af8,null))[_0x5adb('0x22')](function(_0x193a29){if(_0x193a29){return _0x193a29;}return null;})[_0x5adb('0x22')](respondWithResult(_0x2c3af8,null))['catch'](handleError(_0x2c3af8,null));};
\ No newline at end of file
index 6d45dd9..2401ac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a4=['./cmHopperFinal.attributes','define','calleridnum','uniqueid','lodash','util','moment','bluebird','path','rimraf'];(function(_0x4c83dd,_0x38f10d){var _0x277463=function(_0x26130d){while(--_0x26130d){_0x4c83dd['push'](_0x4c83dd['shift']());}};_0x277463(++_0x38f10d);}(_0xc7a4,0x180));var _0x4c7a=function(_0x3add74,_0xe0b85b){_0x3add74=_0x3add74-0x0;var _0xfd1369=_0xc7a4[_0x3add74];return _0xfd1369;};'use strict';var _=require(_0x4c7a('0x0'));var util=require(_0x4c7a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4c7a('0x2'));var BPromise=require(_0x4c7a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c7a('0x4'));var rimraf=require(_0x4c7a('0x5'));var config=require('../../config/environment');var attributes=require(_0x4c7a('0x6'));module['exports']=function(_0x5e8f04,_0xdaa0e9){return _0x5e8f04[_0x4c7a('0x7')]('CmHopperFinal',attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0x4c7a('0x8'),'fields':[_0x4c7a('0x8')]},{'name':'uniqueid','fields':[_0x4c7a('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf80a=['bluebird','request-promise','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api'];(function(_0x5be7aa,_0x5de661){var _0x215408=function(_0x353715){while(--_0x353715){_0x5be7aa['push'](_0x5be7aa['shift']());}};_0x215408(++_0x5de661);}(_0xf80a,0x155));var _0xaf80=function(_0x1bc89c,_0x4566ed){_0x1bc89c=_0x1bc89c-0x0;var _0x16994e=_0xf80a[_0x1bc89c];return _0x16994e;};'use strict';var _=require(_0xaf80('0x0'));var util=require(_0xaf80('0x1'));var logger=require(_0xaf80('0x2'))(_0xaf80('0x3'));var moment=require('moment');var BPromise=require(_0xaf80('0x4'));var rp=require(_0xaf80('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf80('0x6'));var config=require(_0xaf80('0x7'));var attributes=require(_0xaf80('0x8'));module[_0xaf80('0x9')]=function(_0x438740,_0x3c5dbc){return _0x438740[_0xaf80('0xa')](_0xaf80('0xb'),attributes,{'tableName':_0xaf80('0xc'),'paranoid':![],'indexes':[{'name':_0xaf80('0xd'),'fields':[_0xaf80('0xd')]},{'name':_0xaf80('0xe'),'fields':[_0xaf80('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 0fd2c02..b97aa6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x48b553,_0x492f1f){var _0x33a6a0=function(_0x2e82c3){while(--_0x2e82c3){_0x48b553['push'](_0x48b553['shift']());}};_0x33a6a0(++_0x492f1f);}(_0x7a54,0x106));var _0x47a5=function(_0x1e2de3,_0x31a916){_0x1e2de3=_0x1e2de3-0x0;var _0x1f3ced=_0x7a54[_0x1e2de3];return _0x1f3ced;};'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
+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(_0x4aaf1e,_0x5dd8b7){var _0x32dcf7=function(_0x251716){while(--_0x251716){_0x4aaf1e['push'](_0x4aaf1e['shift']());}};_0x32dcf7(++_0x5dd8b7);}(_0x7a54,0x106));var _0x47a5=function(_0x1bcfd0,_0x293e3f){_0x1bcfd0=_0x1bcfd0-0x0;var _0x4a870f=_0x7a54[_0x1bcfd0];return _0x4a870f;};'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 081ce8f..b368516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4d=['../../config/environment','./cmHopperFinal.controller','get','index','/describe','isAuthenticated','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','post','/checkContactHopper','checkContactHopper','put','/:id','update','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9a4d,0xa8));var _0xd9a4=function(_0x3b98c1,_0x3a4ae5){_0x3b98c1=_0x3b98c1-0x0;var _0x26990b=_0x9a4d[_0x3b98c1];return _0x26990b;};'use strict';var multer=require(_0xd9a4('0x0'));var util=require(_0xd9a4('0x1'));var path=require(_0xd9a4('0x2'));var timeout=require(_0xd9a4('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd9a4('0x4'));var interaction=require(_0xd9a4('0x5'));var config=require(_0xd9a4('0x6'));var controller=require(_0xd9a4('0x7'));router[_0xd9a4('0x8')]('/',auth['isAuthenticated'](),controller[_0xd9a4('0x9')]);router[_0xd9a4('0x8')](_0xd9a4('0xa'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0xc')]);router[_0xd9a4('0x8')]('/:id',auth[_0xd9a4('0xb')](),controller[_0xd9a4('0xd')]);router[_0xd9a4('0x8')](_0xd9a4('0xe'),auth['isAuthenticated'](),controller[_0xd9a4('0xf')]);router[_0xd9a4('0x8')](_0xd9a4('0x10'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0x11')]);router['post'](_0xd9a4('0x12'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0x13')]);router['post'](_0xd9a4('0x14'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0x15')]);router[_0xd9a4('0x16')](_0xd9a4('0x17'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0x18')]);router[_0xd9a4('0x19')](_0xd9a4('0x1a'),auth['isAuthenticated'](),controller[_0xd9a4('0x1b')]);module[_0xd9a4('0x1c')]=router;
\ No newline at end of file
+var _0x33a3=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','put','/:id','exports','multer'];(function(_0x3f9bda,_0x4dfa94){var _0x3dcce4=function(_0x19fabd){while(--_0x19fabd){_0x3f9bda['push'](_0x3f9bda['shift']());}};_0x3dcce4(++_0x4dfa94);}(_0x33a3,0xbf));var _0x333a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x33a3[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x333a('0x0'));var util=require('util');var path=require(_0x333a('0x1'));var timeout=require('connect-timeout');var express=require(_0x333a('0x2'));var router=express[_0x333a('0x3')]();var fs_extra=require(_0x333a('0x4'));var auth=require(_0x333a('0x5'));var interaction=require(_0x333a('0x6'));var config=require('../../config/environment');var controller=require(_0x333a('0x7'));router[_0x333a('0x8')]('/',auth[_0x333a('0x9')](),controller[_0x333a('0xa')]);router[_0x333a('0x8')](_0x333a('0xb'),auth[_0x333a('0x9')](),controller[_0x333a('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x333a('0xd')]);router['get'](_0x333a('0xe'),auth[_0x333a('0x9')](),controller[_0x333a('0xf')]);router[_0x333a('0x8')](_0x333a('0x10'),auth[_0x333a('0x9')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x333a('0x11')](_0x333a('0x12'),auth[_0x333a('0x9')](),controller[_0x333a('0x13')]);router[_0x333a('0x11')](_0x333a('0x14'),auth[_0x333a('0x9')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x333a('0x11')]('/checkContactHopper',auth['isAuthenticated'](),controller['checkContactHopper']);router[_0x333a('0x15')](_0x333a('0x16'),auth[_0x333a('0x9')](),controller['update']);module[_0x333a('0x17')]=router;
\ No newline at end of file
index 07b91e9..a371019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9004=['STRING','DATE','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x9004,0x6a));var _0x4900=function(_0x4bdc7f,_0x1dbb28){_0x4bdc7f=_0x4bdc7f-0x0;var _0x24535a=_0x9004[_0x4bdc7f];return _0x24535a;};'use strict';var Sequelize=require(_0x4900('0x0'));module[_0x4900('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x4900('0x2')]},'scheduledat':{'type':Sequelize[_0x4900('0x3')]},'countbusyretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x4900('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x4900('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4900('0x2')]},'calleridname':{'type':Sequelize[_0x4900('0x2')]},'starttime':{'type':Sequelize[_0x4900('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x4900('0x3')]},'droptime':{'type':Sequelize[_0x4900('0x3')]},'endtime':{'type':Sequelize[_0x4900('0x3')]},'ringtime':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4900('0x2')]},'campaign':{'type':Sequelize[_0x4900('0x2')]},'campaigntype':{'type':Sequelize[_0x4900('0x2')]},'membername':{'type':Sequelize[_0x4900('0x2')]},'reason':{'type':Sequelize[_0x4900('0x2')]},'amd':{'type':Sequelize[_0x4900('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x4900('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x4900('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4900('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4900('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x4900('0x3')]},'edited':{'type':Sequelize[_0x4900('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4900('0x4')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x4900('0x2')]}};
\ No newline at end of file
+var _0x75f4=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x584bfa,_0x15fccb){var _0x3b55a6=function(_0x299738){while(--_0x299738){_0x584bfa['push'](_0x584bfa['shift']());}};_0x3b55a6(++_0x15fccb);}(_0x75f4,0xc3));var _0x475f=function(_0x3a0863,_0x4cd5ef){_0x3a0863=_0x3a0863-0x0;var _0x85c557=_0x75f4[_0x3a0863];return _0x85c557;};'use strict';var Sequelize=require(_0x475f('0x0'));module[_0x475f('0x1')]={'state':{'type':Sequelize[_0x475f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x475f('0x3')]},'scheduledat':{'type':Sequelize[_0x475f('0x4')]},'countbusyretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x475f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x475f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x475f('0x3')]},'calleridnum':{'type':Sequelize[_0x475f('0x3')]},'calleridname':{'type':Sequelize[_0x475f('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x475f('0x4')]},'answertime':{'type':Sequelize[_0x475f('0x4')]},'droptime':{'type':Sequelize[_0x475f('0x4')]},'endtime':{'type':Sequelize[_0x475f('0x4')]},'ringtime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x475f('0x3')]},'campaigntype':{'type':Sequelize[_0x475f('0x3')]},'membername':{'type':Sequelize[_0x475f('0x3')]},'reason':{'type':Sequelize[_0x475f('0x3')]},'amd':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x475f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x475f('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x475f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x475f('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x475f('0x3')]}};
\ No newline at end of file
index 5acf6cd..551bf46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaea9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','rawAttributes','find','catch','create','body','describe','uniqueid','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','send','CmHopperHistory','fieldName','type','key','model','map','name','query'];(function(_0x4c780c,_0x3d6dce){var _0x419908=function(_0x2f176a){while(--_0x2f176a){_0x4c780c['push'](_0x4c780c['shift']());}};_0x419908(++_0x3d6dce);}(_0xaea9,0x14e));var _0x9aea=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xaea9[_0x8de54f];return _0x14cba4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9aea('0x0'));var zipdir=require(_0x9aea('0x1'));var jsonpatch=require(_0x9aea('0x2'));var rp=require(_0x9aea('0x3'));var moment=require(_0x9aea('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9aea('0x5'));var util=require('util');var path=require(_0x9aea('0x6'));var sox=require(_0x9aea('0x7'));var csv=require('to-csv');var ejs=require(_0x9aea('0x8'));var fs=require('fs');var fs_extra=require(_0x9aea('0x9'));var _=require(_0x9aea('0xa'));var squel=require(_0x9aea('0xb'));var crypto=require(_0x9aea('0xc'));var jsforce=require(_0x9aea('0xd'));var deskjs=require(_0x9aea('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9aea('0xf'));var Papa=require(_0x9aea('0x10'));var Redis=require(_0x9aea('0x11'));var authService=require(_0x9aea('0x12'));var qs=require(_0x9aea('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9aea('0x14'));var logger=require(_0x9aea('0x15'))(_0x9aea('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9aea('0x17'))['db'];function respondWithStatusCode(_0x56a769,_0x14c60d){_0x14c60d=_0x14c60d||0xcc;return function(_0x47ae2e){if(_0x47ae2e){return _0x56a769[_0x9aea('0x18')](_0x14c60d);}return _0x56a769['status'](_0x14c60d)[_0x9aea('0x19')]();};}function respondWithResult(_0x5bbc38,_0x25ba1e){_0x25ba1e=_0x25ba1e||0xc8;return function(_0x44c5dd){if(_0x44c5dd){return _0x5bbc38[_0x9aea('0x1a')](_0x25ba1e)['json'](_0x44c5dd);}};}function respondWithFilteredResult(_0xebf9cf,_0x2a1de3){return function(_0x7a330d){if(_0x7a330d){var _0x1aa373=typeof _0x2a1de3['offset']===_0x9aea('0x1b')&&typeof _0x2a1de3[_0x9aea('0x1c')]===_0x9aea('0x1b');var _0x5da992=_0x7a330d['count'];var _0x42d5f3=_0x1aa373?0x0:_0x2a1de3[_0x9aea('0x1d')];var _0x4b205c=_0x1aa373?_0x7a330d[_0x9aea('0x1e')]:_0x2a1de3[_0x9aea('0x1d')]+_0x2a1de3['limit'];var _0xbc0fbe;if(_0x4b205c>=_0x5da992){_0x4b205c=_0x5da992;_0xbc0fbe=0xc8;}else{_0xbc0fbe=0xce;}_0xebf9cf[_0x9aea('0x1a')](_0xbc0fbe);return _0xebf9cf[_0x9aea('0x1f')](_0x9aea('0x20'),_0x42d5f3+'-'+_0x4b205c+'/'+_0x5da992)[_0x9aea('0x21')](_0x7a330d);}return null;};}function patchUpdates(_0x4ce708){return function(_0x3760b2){try{jsonpatch[_0x9aea('0x22')](_0x3760b2,_0x4ce708,!![]);}catch(_0x3578eb){return BPromise[_0x9aea('0x23')](_0x3578eb);}return _0x3760b2[_0x9aea('0x24')]();};}function saveUpdates(_0x146133,_0x57929a){return function(_0x3b1f10){if(_0x3b1f10){return _0x3b1f10[_0x9aea('0x25')](_0x146133)[_0x9aea('0x26')](function(_0x4c84d3){return _0x4c84d3;});}return null;};}function removeEntity(_0x2fd96a,_0x382476){return function(_0x3072f7){if(_0x3072f7){return _0x3072f7[_0x9aea('0x27')]()['then'](function(){_0x2fd96a['status'](0xcc)[_0x9aea('0x19')]();});}};}function handleEntityNotFound(_0x33e28a,_0x595421){return function(_0x2b4017){if(!_0x2b4017){_0x33e28a['sendStatus'](0x194);}return _0x2b4017;};}function handleError(_0x3e0f56,_0x45f65a){_0x45f65a=_0x45f65a||0x1f4;return function(_0x50c5b4){logger[_0x9aea('0x28')](_0x50c5b4[_0x9aea('0x29')]);if(_0x50c5b4['name']){delete _0x50c5b4['name'];}_0x3e0f56[_0x9aea('0x1a')](_0x45f65a)[_0x9aea('0x2a')](_0x50c5b4);};}exports['index']=function(_0x1ce6d1,_0x1303db){var _0x4b7758={},_0x27d310={},_0x125d8b={'count':0x0,'rows':[]};var _0x19e8b5=_['map'](db[_0x9aea('0x2b')]['rawAttributes'],function(_0x3a8550){return{'name':_0x3a8550[_0x9aea('0x2c')],'type':_0x3a8550[_0x9aea('0x2d')][_0x9aea('0x2e')]};});_0x27d310[_0x9aea('0x2f')]=_[_0x9aea('0x30')](_0x19e8b5,_0x9aea('0x31'));_0x27d310[_0x9aea('0x32')]=_[_0x9aea('0x33')](_0x1ce6d1[_0x9aea('0x32')]);_0x27d310[_0x9aea('0x34')]=_[_0x9aea('0x35')](_0x27d310['model'],_0x27d310[_0x9aea('0x32')]);_0x4b7758[_0x9aea('0x36')]=_['intersection'](_0x27d310[_0x9aea('0x2f')],qs[_0x9aea('0x37')](_0x1ce6d1[_0x9aea('0x32')]['fields']));_0x4b7758['attributes']=_0x4b7758[_0x9aea('0x36')][_0x9aea('0x38')]?_0x4b7758['attributes']:_0x27d310[_0x9aea('0x2f')];if(!_0x1ce6d1[_0x9aea('0x32')][_0x9aea('0x39')](_0x9aea('0x3a'))){_0x4b7758[_0x9aea('0x1c')]=qs['limit'](_0x1ce6d1['query'][_0x9aea('0x1c')]);_0x4b7758[_0x9aea('0x1d')]=qs['offset'](_0x1ce6d1[_0x9aea('0x32')][_0x9aea('0x1d')]);}_0x4b7758['order']=qs[_0x9aea('0x3b')](_0x1ce6d1[_0x9aea('0x32')][_0x9aea('0x3b')]);_0x4b7758['where']=qs['filters'](_[_0x9aea('0x3c')](_0x1ce6d1[_0x9aea('0x32')],_0x27d310['filters']),_0x19e8b5);if(_0x1ce6d1[_0x9aea('0x32')][_0x9aea('0x3d')]){_0x4b7758[_0x9aea('0x3e')]=_[_0x9aea('0x3f')](_0x4b7758['where'],{'$or':_[_0x9aea('0x30')](_0x19e8b5,function(_0x2bf837){if(_0x2bf837[_0x9aea('0x2d')]!=='VIRTUAL'){var _0x8b0e76={};_0x8b0e76[_0x2bf837[_0x9aea('0x31')]]={'$like':'%'+_0x1ce6d1['query']['filter']+'%'};return _0x8b0e76;}})});}_0x4b7758=_[_0x9aea('0x3f')]({},_0x4b7758,_0x1ce6d1[_0x9aea('0x40')]);var _0x5cf532={'where':_0x4b7758[_0x9aea('0x3e')]};return db[_0x9aea('0x2b')]['count'](_0x5cf532)['then'](function(_0x39bf37){_0x125d8b['count']=_0x39bf37;if(_0x1ce6d1[_0x9aea('0x32')][_0x9aea('0x41')]){_0x4b7758[_0x9aea('0x42')]=[{'all':!![]}];}return db[_0x9aea('0x2b')][_0x9aea('0x43')](_0x4b7758);})[_0x9aea('0x26')](function(_0x56f0b9){_0x125d8b[_0x9aea('0x44')]=_0x56f0b9;return _0x125d8b;})['then'](respondWithFilteredResult(_0x1303db,_0x4b7758))['catch'](handleError(_0x1303db,null));};exports['show']=function(_0x37e9a9,_0x2f31ee){var _0x5b052b={'raw':!![],'where':{'id':_0x37e9a9[_0x9aea('0x45')]['id']}},_0x525801={};_0x525801['model']=_['keys'](db[_0x9aea('0x2b')][_0x9aea('0x46')]);_0x525801[_0x9aea('0x32')]=_[_0x9aea('0x33')](_0x37e9a9[_0x9aea('0x32')]);_0x525801[_0x9aea('0x34')]=_[_0x9aea('0x35')](_0x525801['model'],_0x525801[_0x9aea('0x32')]);_0x5b052b[_0x9aea('0x36')]=_['intersection'](_0x525801[_0x9aea('0x2f')],qs[_0x9aea('0x37')](_0x37e9a9[_0x9aea('0x32')][_0x9aea('0x37')]));_0x5b052b[_0x9aea('0x36')]=_0x5b052b[_0x9aea('0x36')][_0x9aea('0x38')]?_0x5b052b[_0x9aea('0x36')]:_0x525801['model'];if(_0x37e9a9[_0x9aea('0x32')]['includeAll']){_0x5b052b['include']=[{'all':!![]}];}_0x5b052b=_[_0x9aea('0x3f')]({},_0x5b052b,_0x37e9a9[_0x9aea('0x40')]);return db['CmHopperHistory'][_0x9aea('0x47')](_0x5b052b)['then'](handleEntityNotFound(_0x2f31ee,null))[_0x9aea('0x26')](respondWithResult(_0x2f31ee,null))[_0x9aea('0x48')](handleError(_0x2f31ee,null));};exports[_0x9aea('0x49')]=function(_0x16b4f7,_0x11696e){return db['CmHopperHistory'][_0x9aea('0x49')](_0x16b4f7[_0x9aea('0x4a')],{})['then'](respondWithResult(_0x11696e,0xc9))[_0x9aea('0x48')](handleError(_0x11696e,null));};exports[_0x9aea('0x4b')]=function(_0x1275c1,_0x1bc45a){return db[_0x9aea('0x2b')][_0x9aea('0x4b')]()[_0x9aea('0x26')](respondWithResult(_0x1bc45a,null))[_0x9aea('0x48')](handleError(_0x1bc45a,null));};exports['update']=function(_0x4200c,_0x49667e){if(_0x4200c[_0x9aea('0x4a')][_0x9aea('0x4c')]){delete _0x4200c['body'][_0x9aea('0x4c')];}return db[_0x9aea('0x2b')][_0x9aea('0x47')]({'where':{'uniqueid':_0x4200c[_0x9aea('0x45')]['id']}})[_0x9aea('0x26')](handleEntityNotFound(_0x49667e,null))['then'](saveUpdates(_0x4200c[_0x9aea('0x4a')],null))['then'](respondWithResult(_0x49667e,null))[_0x9aea('0x48')](handleError(_0x49667e,null));};
\ No newline at end of file
+var _0x5c70=['send','index','map','CmHopperHistory','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','describe','uniqueid','params','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/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','error','stack','name'];(function(_0x5da74f,_0x2f9d6f){var _0x1b6515=function(_0x2ceb83){while(--_0x2ceb83){_0x5da74f['push'](_0x5da74f['shift']());}};_0x1b6515(++_0x2f9d6f);}(_0x5c70,0x102));var _0x05c7=function(_0x316772,_0x20e198){_0x316772=_0x316772-0x0;var _0x2531e9=_0x5c70[_0x316772];return _0x2531e9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x05c7('0x0'));var jsonpatch=require(_0x05c7('0x1'));var rp=require(_0x05c7('0x2'));var moment=require(_0x05c7('0x3'));var BPromise=require(_0x05c7('0x4'));var Mustache=require(_0x05c7('0x5'));var util=require(_0x05c7('0x6'));var path=require(_0x05c7('0x7'));var sox=require(_0x05c7('0x8'));var csv=require(_0x05c7('0x9'));var ejs=require(_0x05c7('0xa'));var fs=require('fs');var fs_extra=require(_0x05c7('0xb'));var _=require(_0x05c7('0xc'));var squel=require(_0x05c7('0xd'));var crypto=require('crypto');var jsforce=require(_0x05c7('0xe'));var deskjs=require(_0x05c7('0xf'));var toCsv=require(_0x05c7('0x9'));var querystring=require(_0x05c7('0x10'));var Papa=require(_0x05c7('0x11'));var Redis=require(_0x05c7('0x12'));var authService=require(_0x05c7('0x13'));var qs=require(_0x05c7('0x14'));var as=require(_0x05c7('0x15'));var hardwareService=require(_0x05c7('0x16'));var logger=require(_0x05c7('0x17'))(_0x05c7('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ac808,_0x4a1e6c){_0x4a1e6c=_0x4a1e6c||0xcc;return function(_0x11676d){if(_0x11676d){return _0x4ac808[_0x05c7('0x19')](_0x4a1e6c);}return _0x4ac808[_0x05c7('0x1a')](_0x4a1e6c)[_0x05c7('0x1b')]();};}function respondWithResult(_0x1a9694,_0x9a9627){_0x9a9627=_0x9a9627||0xc8;return function(_0x18cf2f){if(_0x18cf2f){return _0x1a9694[_0x05c7('0x1a')](_0x9a9627)[_0x05c7('0x1c')](_0x18cf2f);}};}function respondWithFilteredResult(_0x111ac0,_0x354553){return function(_0x5bab6d){if(_0x5bab6d){var _0x2a035a=typeof _0x354553[_0x05c7('0x1d')]===_0x05c7('0x1e')&&typeof _0x354553[_0x05c7('0x1f')]===_0x05c7('0x1e');var _0x445ebe=_0x5bab6d[_0x05c7('0x20')];var _0x22b266=_0x2a035a?0x0:_0x354553[_0x05c7('0x1d')];var _0x1b9ecf=_0x2a035a?_0x5bab6d[_0x05c7('0x20')]:_0x354553[_0x05c7('0x1d')]+_0x354553['limit'];var _0x4d2e34;if(_0x1b9ecf>=_0x445ebe){_0x1b9ecf=_0x445ebe;_0x4d2e34=0xc8;}else{_0x4d2e34=0xce;}_0x111ac0[_0x05c7('0x1a')](_0x4d2e34);return _0x111ac0[_0x05c7('0x21')]('Content-Range',_0x22b266+'-'+_0x1b9ecf+'/'+_0x445ebe)[_0x05c7('0x1c')](_0x5bab6d);}return null;};}function patchUpdates(_0x1091f4){return function(_0x2058c3){try{jsonpatch[_0x05c7('0x22')](_0x2058c3,_0x1091f4,!![]);}catch(_0x4f4243){return BPromise[_0x05c7('0x23')](_0x4f4243);}return _0x2058c3['save']();};}function saveUpdates(_0x20e6f3,_0x42a14d){return function(_0xad7cd1){if(_0xad7cd1){return _0xad7cd1[_0x05c7('0x24')](_0x20e6f3)[_0x05c7('0x25')](function(_0x2945ae){return _0x2945ae;});}return null;};}function removeEntity(_0x4d2f03,_0x4067b2){return function(_0x3abcec){if(_0x3abcec){return _0x3abcec[_0x05c7('0x26')]()[_0x05c7('0x25')](function(){_0x4d2f03[_0x05c7('0x1a')](0xcc)[_0x05c7('0x1b')]();});}};}function handleEntityNotFound(_0x1c2978,_0x53c674){return function(_0x2abc92){if(!_0x2abc92){_0x1c2978[_0x05c7('0x19')](0x194);}return _0x2abc92;};}function handleError(_0x305025,_0x792092){_0x792092=_0x792092||0x1f4;return function(_0x50be05){logger[_0x05c7('0x27')](_0x50be05[_0x05c7('0x28')]);if(_0x50be05[_0x05c7('0x29')]){delete _0x50be05[_0x05c7('0x29')];}_0x305025[_0x05c7('0x1a')](_0x792092)[_0x05c7('0x2a')](_0x50be05);};}exports[_0x05c7('0x2b')]=function(_0x4c27bc,_0x3df164){var _0x447277={},_0x8536b7={},_0x588975={'count':0x0,'rows':[]};var _0x36edf5=_[_0x05c7('0x2c')](db[_0x05c7('0x2d')]['rawAttributes'],function(_0x4fd3ea){return{'name':_0x4fd3ea[_0x05c7('0x2e')],'type':_0x4fd3ea[_0x05c7('0x2f')][_0x05c7('0x30')]};});_0x8536b7[_0x05c7('0x31')]=_[_0x05c7('0x2c')](_0x36edf5,_0x05c7('0x29'));_0x8536b7[_0x05c7('0x32')]=_[_0x05c7('0x33')](_0x4c27bc[_0x05c7('0x32')]);_0x8536b7[_0x05c7('0x34')]=_[_0x05c7('0x35')](_0x8536b7[_0x05c7('0x31')],_0x8536b7[_0x05c7('0x32')]);_0x447277[_0x05c7('0x36')]=_[_0x05c7('0x35')](_0x8536b7[_0x05c7('0x31')],qs[_0x05c7('0x37')](_0x4c27bc[_0x05c7('0x32')]['fields']));_0x447277[_0x05c7('0x36')]=_0x447277['attributes']['length']?_0x447277[_0x05c7('0x36')]:_0x8536b7[_0x05c7('0x31')];if(!_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x38')]('nolimit')){_0x447277[_0x05c7('0x1f')]=qs[_0x05c7('0x1f')](_0x4c27bc['query']['limit']);_0x447277['offset']=qs[_0x05c7('0x1d')](_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x1d')]);}_0x447277['order']=qs[_0x05c7('0x39')](_0x4c27bc[_0x05c7('0x32')]['sort']);_0x447277[_0x05c7('0x3a')]=qs[_0x05c7('0x34')](_[_0x05c7('0x3b')](_0x4c27bc[_0x05c7('0x32')],_0x8536b7[_0x05c7('0x34')]),_0x36edf5);if(_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x3c')]){_0x447277[_0x05c7('0x3a')]=_['merge'](_0x447277['where'],{'$or':_[_0x05c7('0x2c')](_0x36edf5,function(_0x2c47ac){if(_0x2c47ac['type']!==_0x05c7('0x3d')){var _0x507c4b={};_0x507c4b[_0x2c47ac[_0x05c7('0x29')]]={'$like':'%'+_0x4c27bc[_0x05c7('0x32')]['filter']+'%'};return _0x507c4b;}})});}_0x447277=_[_0x05c7('0x3e')]({},_0x447277,_0x4c27bc['options']);var _0x8123f={'where':_0x447277[_0x05c7('0x3a')]};return db[_0x05c7('0x2d')]['count'](_0x8123f)['then'](function(_0x335719){_0x588975[_0x05c7('0x20')]=_0x335719;if(_0x4c27bc[_0x05c7('0x32')][_0x05c7('0x3f')]){_0x447277[_0x05c7('0x40')]=[{'all':!![]}];}return db[_0x05c7('0x2d')][_0x05c7('0x41')](_0x447277);})[_0x05c7('0x25')](function(_0xb2d03d){_0x588975['rows']=_0xb2d03d;return _0x588975;})['then'](respondWithFilteredResult(_0x3df164,_0x447277))[_0x05c7('0x42')](handleError(_0x3df164,null));};exports[_0x05c7('0x43')]=function(_0x3ad08d,_0x46472b){var _0x3be8b4={'raw':!![],'where':{'id':_0x3ad08d['params']['id']}},_0x3451b6={};_0x3451b6[_0x05c7('0x31')]=_[_0x05c7('0x33')](db[_0x05c7('0x2d')][_0x05c7('0x44')]);_0x3451b6[_0x05c7('0x32')]=_[_0x05c7('0x33')](_0x3ad08d[_0x05c7('0x32')]);_0x3451b6[_0x05c7('0x34')]=_[_0x05c7('0x35')](_0x3451b6['model'],_0x3451b6[_0x05c7('0x32')]);_0x3be8b4[_0x05c7('0x36')]=_['intersection'](_0x3451b6['model'],qs[_0x05c7('0x37')](_0x3ad08d['query']['fields']));_0x3be8b4['attributes']=_0x3be8b4['attributes']['length']?_0x3be8b4[_0x05c7('0x36')]:_0x3451b6['model'];if(_0x3ad08d['query'][_0x05c7('0x3f')]){_0x3be8b4[_0x05c7('0x40')]=[{'all':!![]}];}_0x3be8b4=_['merge']({},_0x3be8b4,_0x3ad08d['options']);return db[_0x05c7('0x2d')][_0x05c7('0x45')](_0x3be8b4)[_0x05c7('0x25')](handleEntityNotFound(_0x46472b,null))[_0x05c7('0x25')](respondWithResult(_0x46472b,null))[_0x05c7('0x42')](handleError(_0x46472b,null));};exports[_0x05c7('0x46')]=function(_0x542cd0,_0x52c452){return db['CmHopperHistory'][_0x05c7('0x46')](_0x542cd0[_0x05c7('0x47')],{})[_0x05c7('0x25')](respondWithResult(_0x52c452,0xc9))[_0x05c7('0x42')](handleError(_0x52c452,null));};exports['describe']=function(_0x583f8c,_0x3ec640){return db[_0x05c7('0x2d')][_0x05c7('0x48')]()[_0x05c7('0x25')](respondWithResult(_0x3ec640,null))['catch'](handleError(_0x3ec640,null));};exports[_0x05c7('0x24')]=function(_0x3eab78,_0x3b704a){if(_0x3eab78['body']['uniqueid']){delete _0x3eab78[_0x05c7('0x47')][_0x05c7('0x49')];}return db[_0x05c7('0x2d')][_0x05c7('0x45')]({'where':{'uniqueid':_0x3eab78[_0x05c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3b704a,null))[_0x05c7('0x25')](saveUpdates(_0x3eab78[_0x05c7('0x47')],null))[_0x05c7('0x25')](respondWithResult(_0x3b704a,null))[_0x05c7('0x42')](handleError(_0x3b704a,null));};
\ No newline at end of file
index 6cd6bea..0b90eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde46=['request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api'];(function(_0x3a11f8,_0xcc8aee){var _0xde3bc1=function(_0x1bbc1b){while(--_0x1bbc1b){_0x3a11f8['push'](_0x3a11f8['shift']());}};_0xde3bc1(++_0xcc8aee);}(_0xde46,0x14e));var _0x6de4=function(_0x49d42e,_0x7092f4){_0x49d42e=_0x49d42e-0x0;var _0x4f6205=_0xde46[_0x49d42e];return _0x4f6205;};'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')]('CmHopperHistory',attributes,{'tableName':_0x6de4('0xa'),'paranoid':![],'indexes':[{'name':_0x6de4('0xb'),'fields':['endtime']},{'name':_0x6de4('0xc'),'fields':[_0x6de4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcac2=['define','CmHopperHistory','cm_hopper_history','uniqueid','lodash','util','../../config/logger','moment','bluebird','./cmHopperHistory.attributes','exports'];(function(_0x4b2c57,_0x2d8cd9){var _0x10ac0b=function(_0x48de8b){while(--_0x48de8b){_0x4b2c57['push'](_0x4b2c57['shift']());}};_0x10ac0b(++_0x2d8cd9);}(_0xcac2,0x1e8));var _0x2cac=function(_0x3eed9b,_0x27e423){_0x3eed9b=_0x3eed9b-0x0;var _0x56b06a=_0xcac2[_0x3eed9b];return _0x56b06a;};'use strict';var _=require(_0x2cac('0x0'));var util=require(_0x2cac('0x1'));var logger=require(_0x2cac('0x2'))('api');var moment=require(_0x2cac('0x3'));var BPromise=require(_0x2cac('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2cac('0x5'));module[_0x2cac('0x6')]=function(_0x26b741,_0x2ab257){return _0x26b741[_0x2cac('0x7')](_0x2cac('0x8'),attributes,{'tableName':_0x2cac('0x9'),'paranoid':![],'indexes':[{'name':'endtime','fields':['endtime']},{'name':_0x2cac('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 7a880e5..e17adad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a12=['outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','campaign','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','debug','stringify','AvgHandleTime','findAll','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','raw','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay'];(function(_0x2b91da,_0x6c0ae1){var _0x1c2cf6=function(_0x4cb18b){while(--_0x4cb18b){_0x2b91da['push'](_0x2b91da['shift']());}};_0x1c2cf6(++_0x6c0ae1);}(_0x3a12,0x1ce));var _0x23a1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3a12[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x23a1('0x0'));var util=require(_0x23a1('0x1'));var moment=require(_0x23a1('0x2'));var BPromise=require('bluebird');var rs=require(_0x23a1('0x3'));var fs=require('fs');var Redis=require(_0x23a1('0x4'));var db=require(_0x23a1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x23a1('0x6'))(_0x23a1('0x7'));var config=require(_0x23a1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x23a1('0x9')][_0x23a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5070bb,_0x34bfeb,_0x13a11f){return new BPromise(function(_0x148956,_0x42cb4d){return client[_0x23a1('0xb')](_0x5070bb,_0x13a11f)[_0x23a1('0xc')](function(_0x126bfe){logger[_0x23a1('0xd')](_0x23a1('0xe'),_0x34bfeb,_0x23a1('0xf'));logger['debug'](_0x23a1('0x10'),_0x34bfeb,_0x23a1('0xf'),JSON['stringify'](_0x126bfe));if(_0x126bfe[_0x23a1('0x11')]){if(_0x126bfe['error'][_0x23a1('0x12')]===0x1f4){logger[_0x23a1('0x11')](_0x23a1('0xe'),_0x34bfeb,_0x126bfe['error'][_0x23a1('0x13')]);return _0x42cb4d(_0x126bfe[_0x23a1('0x11')][_0x23a1('0x13')]);}logger[_0x23a1('0x11')](_0x23a1('0xe'),_0x34bfeb,_0x126bfe[_0x23a1('0x11')][_0x23a1('0x13')]);return _0x148956(_0x126bfe[_0x23a1('0x11')][_0x23a1('0x13')]);}else{logger[_0x23a1('0xd')](_0x23a1('0xe'),_0x34bfeb,'request\x20sent');_0x148956(_0x126bfe[_0x23a1('0x14')][_0x23a1('0x13')]);}})[_0x23a1('0x15')](function(_0x3e84aa){logger[_0x23a1('0x11')](_0x23a1('0xe'),_0x34bfeb,_0x3e84aa);_0x42cb4d(_0x3e84aa);});});}exports[_0x23a1('0x16')]=function(_0x2c379e){var _0x2620ee=this;return new Promise(function(_0x399d6a,_0x5f4065){return db[_0x23a1('0x17')][_0x23a1('0x18')](_0x2c379e[_0x23a1('0x19')],{'raw':_0x2c379e['options']?_0x2c379e[_0x23a1('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x23a1('0xc')](function(_0x1c8c93){logger['info'](_0x23a1('0x16'),_0x2c379e);logger[_0x23a1('0x1b')](_0x23a1('0x16'),_0x2c379e,JSON[_0x23a1('0x1c')](_0x1c8c93));_0x399d6a(_0x1c8c93);})['catch'](function(_0x4a7ea8){logger[_0x23a1('0x11')](_0x23a1('0x16'),_0x4a7ea8[_0x23a1('0x13')],_0x2c379e);_0x5f4065(_0x2620ee[_0x23a1('0x11')](0x1f4,_0x4a7ea8[_0x23a1('0x13')]));});});};exports[_0x23a1('0x1d')]=function(_0x438a9c){var _0x2ae1d5=this;return new Promise(function(_0x5a31ac,_0x4dec4d){return db['CmHopperHistory'][_0x23a1('0x1e')]({'raw':_0x438a9c[_0x23a1('0x1a')]?_0x438a9c[_0x23a1('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x438a9c[_0x23a1('0x1a')]?_0x438a9c[_0x23a1('0x1a')][_0x23a1('0x1f')]||null:null,'attributes':[[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')][_0x23a1('0x21')]('id')),_0x23a1('0x22')],[db['sequelize']['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db['sequelize'][_0x23a1('0x24')](_0x23a1('0x25')))),_0x23a1('0x26')],[db[_0x23a1('0x20')]['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')]['literal'](_0x23a1('0x27')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')]['fn']('IF',db['sequelize'][_0x23a1('0x24')](_0x23a1('0x28')))),_0x23a1('0x29')],[db[_0x23a1('0x20')]['fn']('AVG',db['sequelize']['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x2a')))),_0x23a1('0x2b')],[db[_0x23a1('0x20')]['fn'](_0x23a1('0x2c'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x2d')))),_0x23a1('0x2e')]]})[_0x23a1('0xc')](function(_0x54005f){logger['info']('AvgHandleTime',_0x438a9c);logger['debug'](_0x23a1('0x1d'),_0x438a9c,JSON['stringify'](_0x54005f));_0x5a31ac(_0x54005f);})[_0x23a1('0x15')](function(_0x58b154){logger[_0x23a1('0x11')](_0x23a1('0x1d'),_0x58b154[_0x23a1('0x13')],_0x438a9c);_0x4dec4d(_0x2ae1d5[_0x23a1('0x11')](0x1f4,_0x58b154[_0x23a1('0x13')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x4328f9){var _0x185ce6=this;return new Promise(function(_0x4e1245,_0x390d9f){return db['CmHopperHistory'][_0x23a1('0x1e')]({'raw':_0x4328f9[_0x23a1('0x1a')]?_0x4328f9[_0x23a1('0x1a')][_0x23a1('0x2f')]===undefined?!![]:![]:!![],'where':_0x4328f9[_0x23a1('0x1a')]?_0x4328f9[_0x23a1('0x1a')][_0x23a1('0x1f')]||null:null,'attributes':[['campaign',_0x23a1('0x30')],[db['sequelize']['fn'](_0x23a1('0x23'),db['sequelize']['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')]('`state`\x20=\x200,\x201,\x20null'))),_0x23a1('0x31')],[db[_0x23a1('0x20')]['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x32')))),_0x23a1('0x33')],[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')]['literal'](_0x23a1('0x25')))),_0x23a1('0x34')],[db['sequelize']['fn'](_0x23a1('0x23'),db['sequelize']['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x35')))),'outboundBusyCallsDay'],[db['sequelize']['fn'](_0x23a1('0x23'),db['sequelize']['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x36')))),_0x23a1('0x37')],[db['sequelize']['fn']('COUNT',db[_0x23a1('0x20')]['fn']('IF',db['sequelize'][_0x23a1('0x24')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x23a1('0x38')],[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')]['literal'](_0x23a1('0x39')))),_0x23a1('0x3a')],[db[_0x23a1('0x20')]['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db['sequelize'][_0x23a1('0x24')](_0x23a1('0x3b')))),_0x23a1('0x3c')],[db['sequelize']['fn'](_0x23a1('0x23'),db['sequelize']['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')]('`state`\x20=\x2013,\x201,\x20null'))),_0x23a1('0x3d')],[db[_0x23a1('0x20')]['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')]['literal']('`state`\x20=\x2014,\x201,\x20null'))),_0x23a1('0x3e')],[db['sequelize']['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x3f')))),_0x23a1('0x40')],[db['sequelize']['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x41')))),'outboundAnswerAgiCallsDay'],[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')]['literal'](_0x23a1('0x42')))),'outboundRejectCallsDay'],[db['sequelize']['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x43')))),_0x23a1('0x44')]],'group':['campaign']})['then'](function(_0x486255){logger[_0x23a1('0xd')]('GetVoiceQueueHopperHistory',_0x4328f9);logger['debug'](_0x23a1('0x45'),_0x4328f9,JSON[_0x23a1('0x1c')](_0x486255));_0x4e1245(_0x486255);})[_0x23a1('0x15')](function(_0x44336a){logger[_0x23a1('0x11')](_0x23a1('0x45'),_0x44336a[_0x23a1('0x13')],_0x4328f9);_0x390d9f(_0x185ce6['error'](0x1f4,_0x44336a[_0x23a1('0x13')]));});});};exports[_0x23a1('0x46')]=function(_0x514958){var _0x4b7f4a=this;return new Promise(function(_0x33157a,_0x2ffa50){return db[_0x23a1('0x17')][_0x23a1('0x1e')]({'raw':_0x514958['options']?_0x514958[_0x23a1('0x1a')][_0x23a1('0x2f')]===undefined?!![]:![]:!![],'where':_0x514958['options']?_0x514958[_0x23a1('0x1a')]['where']||null:null,'attributes':[['campaign',_0x23a1('0x30')],[db[_0x23a1('0x20')]['fn']('COUNT',db[_0x23a1('0x20')][_0x23a1('0x21')]('id')),_0x23a1('0x47')],[db['sequelize']['fn'](_0x23a1('0x23'),db[_0x23a1('0x20')]['fn']('IF',db[_0x23a1('0x20')][_0x23a1('0x24')](_0x23a1('0x25')))),_0x23a1('0x48')]],'group':[_0x23a1('0x49')]})[_0x23a1('0xc')](function(_0x2cbc09){logger['info']('GetCampaignHopperHistory',_0x514958);logger[_0x23a1('0x1b')]('GetCampaignHopperHistory',_0x514958,JSON[_0x23a1('0x1c')](_0x2cbc09));_0x33157a(_0x2cbc09);})['catch'](function(_0x234b24){logger['error'](_0x23a1('0x46'),_0x234b24['message'],_0x514958);_0x2ffa50(_0x4b7f4a[_0x23a1('0x11')](0x1f4,_0x234b24[_0x23a1('0x13')]));});});};
\ No newline at end of file
+var _0x0b30=['rpc','../../config/environment','jayson/promise','client','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','then','where','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','AvgHandleTime','GetVoiceQueueHopperHistory','findAll','raw','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','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','`state`\x20=\x2014,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x0b30,0x1a7));var _0x00b3=function(_0x1bd837,_0x2b01f0){_0x1bd837=_0x1bd837-0x0;var _0x45a17e=_0x0b30[_0x1bd837];return _0x45a17e;};'use strict';var _=require(_0x00b3('0x0'));var util=require(_0x00b3('0x1'));var moment=require(_0x00b3('0x2'));var BPromise=require(_0x00b3('0x3'));var rs=require(_0x00b3('0x4'));var fs=require('fs');var Redis=require(_0x00b3('0x5'));var db=require(_0x00b3('0x6'))['db'];var utils=require(_0x00b3('0x7'));var logger=require(_0x00b3('0x8'))(_0x00b3('0x9'));var config=require(_0x00b3('0xa'));var jayson=require(_0x00b3('0xb'));var client=jayson[_0x00b3('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4cadd1,_0x3e1ede,_0x30813f){return new BPromise(function(_0x500bb8,_0x5f1413){return client['request'](_0x4cadd1,_0x30813f)['then'](function(_0x2c9f7d){logger[_0x00b3('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x3e1ede,'request\x20sent');logger[_0x00b3('0xe')](_0x00b3('0xf'),_0x3e1ede,_0x00b3('0x10'),JSON[_0x00b3('0x11')](_0x2c9f7d));if(_0x2c9f7d[_0x00b3('0x12')]){if(_0x2c9f7d[_0x00b3('0x12')][_0x00b3('0x13')]===0x1f4){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x3e1ede,_0x2c9f7d[_0x00b3('0x12')][_0x00b3('0x14')]);return _0x5f1413(_0x2c9f7d[_0x00b3('0x12')]['message']);}logger[_0x00b3('0x12')](_0x00b3('0x15'),_0x3e1ede,_0x2c9f7d['error'][_0x00b3('0x14')]);return _0x500bb8(_0x2c9f7d['error'][_0x00b3('0x14')]);}else{logger[_0x00b3('0xd')](_0x00b3('0x15'),_0x3e1ede,'request\x20sent');_0x500bb8(_0x2c9f7d['result'][_0x00b3('0x14')]);}})[_0x00b3('0x16')](function(_0x314f33){logger['error'](_0x00b3('0x15'),_0x3e1ede,_0x314f33);_0x5f1413(_0x314f33);});});}exports[_0x00b3('0x17')]=function(_0x547202){var _0xc58f24=this;return new Promise(function(_0x1877b1,_0x20e8e5){return db[_0x00b3('0x18')][_0x00b3('0x19')](_0x547202[_0x00b3('0x1a')],{'raw':_0x547202[_0x00b3('0x1b')]?_0x547202['options']['raw']===undefined?!![]:![]:!![]})[_0x00b3('0x1c')](function(_0x7cc4fc){logger[_0x00b3('0xd')](_0x00b3('0x17'),_0x547202);logger[_0x00b3('0xe')](_0x00b3('0x17'),_0x547202,JSON['stringify'](_0x7cc4fc));_0x1877b1(_0x7cc4fc);})[_0x00b3('0x16')](function(_0x283353){logger[_0x00b3('0x12')](_0x00b3('0x17'),_0x283353['message'],_0x547202);_0x20e8e5(_0xc58f24[_0x00b3('0x12')](0x1f4,_0x283353[_0x00b3('0x14')]));});});};exports['AvgHandleTime']=function(_0xf91eb0){var _0x5dc99a=this;return new Promise(function(_0x4ea935,_0x1f9ad7){return db['CmHopperHistory']['findAll']({'raw':_0xf91eb0[_0x00b3('0x1b')]?_0xf91eb0[_0x00b3('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xf91eb0['options']?_0xf91eb0[_0x00b3('0x1b')][_0x00b3('0x1d')]||null:null,'attributes':[[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')][_0x00b3('0x20')]('id')),_0x00b3('0x21')],[db['sequelize']['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x23')))),_0x00b3('0x24')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x2010,\x201,\x20null'))),_0x00b3('0x25')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x26')))),_0x00b3('0x27')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x28'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x28'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})['then'](function(_0x5d25e0){logger[_0x00b3('0xd')](_0x00b3('0x2a'),_0xf91eb0);logger[_0x00b3('0xe')](_0x00b3('0x2a'),_0xf91eb0,JSON[_0x00b3('0x11')](_0x5d25e0));_0x4ea935(_0x5d25e0);})[_0x00b3('0x16')](function(_0x1e5e0e){logger[_0x00b3('0x12')](_0x00b3('0x2a'),_0x1e5e0e[_0x00b3('0x14')],_0xf91eb0);_0x1f9ad7(_0x5dc99a[_0x00b3('0x12')](0x1f4,_0x1e5e0e[_0x00b3('0x14')]));});});};exports[_0x00b3('0x2b')]=function(_0x27a81e){var _0x271e1f=this;return new Promise(function(_0x301666,_0x30d2d2){return db['CmHopperHistory'][_0x00b3('0x2c')]({'raw':_0x27a81e['options']?_0x27a81e[_0x00b3('0x1b')][_0x00b3('0x2d')]===undefined?!![]:![]:!![],'where':_0x27a81e[_0x00b3('0x1b')]?_0x27a81e[_0x00b3('0x1b')]['where']||null:null,'attributes':[['campaign',_0x00b3('0x2e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize']['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x200,\x201,\x20null'))),_0x00b3('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x00b3('0x22')](_0x00b3('0x30')))),'outboundNoAnswerCallsDay'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x00b3('0x31')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x32')))),_0x00b3('0x33')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x208,\x201,\x20null'))),_0x00b3('0x34')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')](_0x00b3('0x35')))),_0x00b3('0x36')],[db[_0x00b3('0x1f')]['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db['sequelize']['literal'](_0x00b3('0x37')))),_0x00b3('0x38')],[db['sequelize']['fn']('COUNT',db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')]['literal'](_0x00b3('0x39')))),_0x00b3('0x3a')],[db['sequelize']['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')]['literal'](_0x00b3('0x3b')))),_0x00b3('0x3c')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x3d')))),'outboundOriginateFailureCallsDay'],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x2018,\x201,\x20null'))),_0x00b3('0x3e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x3f')))),_0x00b3('0x40')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x41')))),_0x00b3('0x3e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db[_0x00b3('0x1f')]['fn']('IF',db[_0x00b3('0x1f')][_0x00b3('0x22')](_0x00b3('0x42')))),_0x00b3('0x43')]],'group':[_0x00b3('0x44')]})[_0x00b3('0x1c')](function(_0x2cbc81){logger['info'](_0x00b3('0x2b'),_0x27a81e);logger[_0x00b3('0xe')]('GetVoiceQueueHopperHistory',_0x27a81e,JSON[_0x00b3('0x11')](_0x2cbc81));_0x301666(_0x2cbc81);})[_0x00b3('0x16')](function(_0x110b9a){logger[_0x00b3('0x12')](_0x00b3('0x2b'),_0x110b9a[_0x00b3('0x14')],_0x27a81e);_0x30d2d2(_0x271e1f[_0x00b3('0x12')](0x1f4,_0x110b9a[_0x00b3('0x14')]));});});};exports[_0x00b3('0x45')]=function(_0xe6430c){var _0x27c7d5=this;return new Promise(function(_0x488c6a,_0x5738b8){return db[_0x00b3('0x18')][_0x00b3('0x2c')]({'raw':_0xe6430c['options']?_0xe6430c['options']['raw']===undefined?!![]:![]:!![],'where':_0xe6430c[_0x00b3('0x1b')]?_0xe6430c[_0x00b3('0x1b')]['where']||null:null,'attributes':[[_0x00b3('0x44'),_0x00b3('0x2e')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize'][_0x00b3('0x20')]('id')),_0x00b3('0x46')],[db[_0x00b3('0x1f')]['fn'](_0x00b3('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0x00b3('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x00b3('0x47')]],'group':[_0x00b3('0x44')]})[_0x00b3('0x1c')](function(_0x5e6ea0){logger[_0x00b3('0xd')]('GetCampaignHopperHistory',_0xe6430c);logger[_0x00b3('0xe')](_0x00b3('0x45'),_0xe6430c,JSON[_0x00b3('0x11')](_0x5e6ea0));_0x488c6a(_0x5e6ea0);})[_0x00b3('0x16')](function(_0x299866){logger[_0x00b3('0x12')](_0x00b3('0x45'),_0x299866[_0x00b3('0x14')],_0xe6430c);_0x5738b8(_0x27c7d5[_0x00b3('0x12')](0x1f4,_0x299866['message']));});});};
\ No newline at end of file
index 84107ae..2b3c5b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4288=['describe','/:id','show','post','create','put','update','exports','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated'];(function(_0xfae2d6,_0xf90bb1){var _0x1cb412=function(_0x3285e7){while(--_0x3285e7){_0xfae2d6['push'](_0xfae2d6['shift']());}};_0x1cb412(++_0xf90bb1);}(_0x4288,0x184));var _0x8428=function(_0x323871,_0x494a81){_0x323871=_0x323871-0x0;var _0x52cf4d=_0x4288[_0x323871];return _0x52cf4d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8428('0x0'));var timeout=require(_0x8428('0x1'));var express=require(_0x8428('0x2'));var router=express[_0x8428('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8428('0x4'));var config=require(_0x8428('0x5'));var controller=require(_0x8428('0x6'));router[_0x8428('0x7')]('/',auth['isAuthenticated'](),controller[_0x8428('0x8')]);router['get'](_0x8428('0x9'),auth[_0x8428('0xa')](),controller[_0x8428('0xb')]);router['get'](_0x8428('0xc'),auth[_0x8428('0xa')](),controller[_0x8428('0xd')]);router[_0x8428('0xe')]('/',auth[_0x8428('0xa')](),controller[_0x8428('0xf')]);router[_0x8428('0x10')](_0x8428('0xc'),auth[_0x8428('0xa')](),controller[_0x8428('0x11')]);module[_0x8428('0x12')]=router;
\ No newline at end of file
+var _0xc509=['post','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x129d16,_0x55ad34){var _0x518798=function(_0x4b2fd6){while(--_0x4b2fd6){_0x129d16['push'](_0x129d16['shift']());}};_0x518798(++_0x55ad34);}(_0xc509,0x8a));var _0x9c50=function(_0x2255bb,_0x2c0a16){_0x2255bb=_0x2255bb-0x0;var _0x543752=_0xc509[_0x2255bb];return _0x543752;};'use strict';var multer=require('multer');var util=require(_0x9c50('0x0'));var path=require(_0x9c50('0x1'));var timeout=require(_0x9c50('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9c50('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9c50('0x4'));var config=require(_0x9c50('0x5'));var controller=require(_0x9c50('0x6'));router[_0x9c50('0x7')]('/',auth[_0x9c50('0x8')](),controller[_0x9c50('0x9')]);router[_0x9c50('0x7')](_0x9c50('0xa'),auth[_0x9c50('0x8')](),controller[_0x9c50('0xb')]);router['get'](_0x9c50('0xc'),auth[_0x9c50('0x8')](),controller[_0x9c50('0xd')]);router[_0x9c50('0xe')]('/',auth[_0x9c50('0x8')](),controller[_0x9c50('0xf')]);router[_0x9c50('0x10')](_0x9c50('0xc'),auth['isAuthenticated'](),controller[_0x9c50('0x11')]);module[_0x9c50('0x12')]=router;
\ No newline at end of file
index 0bdf09a..c1e8591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af5=['sequelize','STRING','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1af5,0x17d));var _0x51af=function(_0xf1c592,_0xf11f6d){_0xf1c592=_0xf1c592-0x0;var _0x3c61a9=_0x1af5[_0xf1c592];return _0x3c61a9;};'use strict';var Sequelize=require(_0x51af('0x0'));module['exports']={'name':{'type':Sequelize[_0x51af('0x1')],'unique':_0x51af('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x51af('0x1')]},'dialPrefix':{'type':Sequelize[_0x51af('0x1')]}};
\ No newline at end of file
+var _0x0207=['exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0207,0x162));var _0x7020=function(_0x834092,_0x429e9c){_0x834092=_0x834092-0x0;var _0x631023=_0x0207[_0x834092];return _0x631023;};'use strict';var Sequelize=require('sequelize');module[_0x7020('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7020('0x1')]},'dialPrefix':{'type':Sequelize[_0x7020('0x1')]}};
\ No newline at end of file
index 49fa644..c9b2aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba1=['description_additionalPhone_','toString','isEmpty','now','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','download','sequelize','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cf_%s','getCustomFields','findAndCountAll','addAgents','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./cmList.socket','register','status','end','json','offset','undefined','count','set','apply','reject','then','destroy','get','Lists','UserProfileResource','sendStatus','error','name','send','index','map','CmList','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','params','includeAll','find','create','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','ListId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CustomFields','format','cf_%d','getContactsCsv','ContactItemType','OrderBy','CmCustomField','alias','select','from','cm_contacts','c.deletedAt\x20is\x20null','field','c.cf_','customField_','cm_contact_has_items','CmContactId\x20=\x20c.id','additionalPhone_','description'];(function(_0x5c3574,_0x5154b2){var _0x175a3d=function(_0x25b11b){while(--_0x25b11b){_0x5c3574['push'](_0x5c3574['shift']());}};_0x175a3d(++_0x5154b2);}(_0x7ba1,0xc4));var _0x17ba=function(_0x21b49a,_0x4a930c){_0x21b49a=_0x21b49a-0x0;var _0x2e0492=_0x7ba1[_0x21b49a];return _0x2e0492;};'use strict';var emlformat=require(_0x17ba('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x17ba('0x1'));var jsonpatch=require(_0x17ba('0x2'));var rp=require(_0x17ba('0x3'));var moment=require(_0x17ba('0x4'));var BPromise=require(_0x17ba('0x5'));var Mustache=require(_0x17ba('0x6'));var util=require('util');var path=require(_0x17ba('0x7'));var sox=require(_0x17ba('0x8'));var csv=require(_0x17ba('0x9'));var ejs=require(_0x17ba('0xa'));var fs=require('fs');var fs_extra=require(_0x17ba('0xb'));var _=require(_0x17ba('0xc'));var squel=require(_0x17ba('0xd'));var crypto=require(_0x17ba('0xe'));var jsforce=require(_0x17ba('0xf'));var deskjs=require(_0x17ba('0x10'));var toCsv=require(_0x17ba('0x9'));var querystring=require('querystring');var Papa=require(_0x17ba('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x17ba('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x17ba('0x13'))(_0x17ba('0x14'));var utils=require(_0x17ba('0x15'));var config=require(_0x17ba('0x16'));var licenseUtil=require(_0x17ba('0x17'));var db=require(_0x17ba('0x18'))['db'];var csv_results;config[_0x17ba('0x19')]=_[_0x17ba('0x1a')](config[_0x17ba('0x19')],{'host':_0x17ba('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x17ba('0x1c'))[_0x17ba('0x1d')](socket);function respondWithStatusCode(_0x5c7847,_0x4c7819){_0x4c7819=_0x4c7819||0xcc;return function(_0x2a97b8){if(_0x2a97b8){return _0x5c7847['sendStatus'](_0x4c7819);}return _0x5c7847[_0x17ba('0x1e')](_0x4c7819)[_0x17ba('0x1f')]();};}function respondWithResult(_0x10dbd3,_0x35753d){_0x35753d=_0x35753d||0xc8;return function(_0x26f6d8){if(_0x26f6d8){return _0x10dbd3[_0x17ba('0x1e')](_0x35753d)[_0x17ba('0x20')](_0x26f6d8);}};}function respondWithFilteredResult(_0xc8f161,_0x26b014){return function(_0x130300){if(_0x130300){var _0x21f24f=typeof _0x26b014[_0x17ba('0x21')]==='undefined'&&typeof _0x26b014['limit']===_0x17ba('0x22');var _0x2ed37d=_0x130300['count'];var _0x9527fe=_0x21f24f?0x0:_0x26b014['offset'];var _0x482f8d=_0x21f24f?_0x130300[_0x17ba('0x23')]:_0x26b014['offset']+_0x26b014['limit'];var _0x454898;if(_0x482f8d>=_0x2ed37d){_0x482f8d=_0x2ed37d;_0x454898=0xc8;}else{_0x454898=0xce;}_0xc8f161[_0x17ba('0x1e')](_0x454898);return _0xc8f161[_0x17ba('0x24')]('Content-Range',_0x9527fe+'-'+_0x482f8d+'/'+_0x2ed37d)['json'](_0x130300);}return null;};}function patchUpdates(_0xf4d0c6){return function(_0x3b2b39){try{jsonpatch[_0x17ba('0x25')](_0x3b2b39,_0xf4d0c6,!![]);}catch(_0x2c49b9){return BPromise[_0x17ba('0x26')](_0x2c49b9);}return _0x3b2b39['save']();};}function saveUpdates(_0x5393bc,_0x35a81a){return function(_0x18da0c){if(_0x18da0c){return _0x18da0c['update'](_0x5393bc)[_0x17ba('0x27')](function(_0x1f4db3){return _0x1f4db3;});}return null;};}function removeEntity(_0x4d0448,_0x3d8ddd){return function(_0x441f03){if(_0x441f03){return _0x441f03[_0x17ba('0x28')]()[_0x17ba('0x27')](function(){var _0x17adde=_0x441f03[_0x17ba('0x29')]({'plain':!![]});var _0x5231eb=_0x17ba('0x2a');return db[_0x17ba('0x2b')][_0x17ba('0x28')]({'where':{'type':_0x5231eb,'resourceId':_0x17adde['id']}})[_0x17ba('0x27')](function(){return _0x441f03;});})[_0x17ba('0x27')](function(){_0x4d0448[_0x17ba('0x1e')](0xcc)[_0x17ba('0x1f')]();});}};}function handleEntityNotFound(_0x250197,_0x32eb09){return function(_0x45aefe){if(!_0x45aefe){_0x250197[_0x17ba('0x2c')](0x194);}return _0x45aefe;};}function handleError(_0x5491b0,_0x5879f8){_0x5879f8=_0x5879f8||0x1f4;return function(_0x6a2252){logger[_0x17ba('0x2d')](_0x6a2252['stack']);if(_0x6a2252[_0x17ba('0x2e')]){delete _0x6a2252[_0x17ba('0x2e')];}_0x5491b0[_0x17ba('0x1e')](_0x5879f8)[_0x17ba('0x2f')](_0x6a2252);};}exports[_0x17ba('0x30')]=function(_0x30aa44,_0x5e4d41){var _0x23d8d6={},_0x31a1a7={},_0x50edb3={'count':0x0,'rows':[]};var _0x3693f2=_[_0x17ba('0x31')](db[_0x17ba('0x32')][_0x17ba('0x33')],function(_0x4dfee3){return{'name':_0x4dfee3[_0x17ba('0x34')],'type':_0x4dfee3[_0x17ba('0x35')][_0x17ba('0x36')]};});_0x31a1a7[_0x17ba('0x37')]=_[_0x17ba('0x31')](_0x3693f2,_0x17ba('0x2e'));_0x31a1a7[_0x17ba('0x38')]=_[_0x17ba('0x39')](_0x30aa44[_0x17ba('0x38')]);_0x31a1a7[_0x17ba('0x3a')]=_[_0x17ba('0x3b')](_0x31a1a7[_0x17ba('0x37')],_0x31a1a7[_0x17ba('0x38')]);_0x23d8d6['attributes']=_[_0x17ba('0x3b')](_0x31a1a7[_0x17ba('0x37')],qs['fields'](_0x30aa44['query'][_0x17ba('0x3c')]));_0x23d8d6[_0x17ba('0x3d')]=_0x23d8d6['attributes'][_0x17ba('0x3e')]?_0x23d8d6[_0x17ba('0x3d')]:_0x31a1a7[_0x17ba('0x37')];if(!_0x30aa44[_0x17ba('0x38')]['hasOwnProperty'](_0x17ba('0x3f'))){_0x23d8d6['limit']=qs[_0x17ba('0x40')](_0x30aa44[_0x17ba('0x38')][_0x17ba('0x40')]);_0x23d8d6[_0x17ba('0x21')]=qs[_0x17ba('0x21')](_0x30aa44[_0x17ba('0x38')]['offset']);}_0x23d8d6[_0x17ba('0x41')]=qs[_0x17ba('0x42')](_0x30aa44[_0x17ba('0x38')][_0x17ba('0x42')]);_0x23d8d6[_0x17ba('0x43')]=qs[_0x17ba('0x3a')](_[_0x17ba('0x44')](_0x30aa44[_0x17ba('0x38')],_0x31a1a7['filters']),_0x3693f2);if(_0x30aa44['query'][_0x17ba('0x45')]){_0x23d8d6['where']=_[_0x17ba('0x46')](_0x23d8d6[_0x17ba('0x43')],{'$or':_['map'](_0x3693f2,function(_0x5e7f9e){if(_0x5e7f9e[_0x17ba('0x35')]!=='VIRTUAL'){var _0xdd0d90={};_0xdd0d90[_0x5e7f9e['name']]={'$like':'%'+_0x30aa44[_0x17ba('0x38')][_0x17ba('0x45')]+'%'};return _0xdd0d90;}})});}_0x23d8d6=_[_0x17ba('0x46')]({},_0x23d8d6,_0x30aa44[_0x17ba('0x47')]);var _0x3356e6={'where':_0x23d8d6[_0x17ba('0x43')]};return db[_0x17ba('0x32')][_0x17ba('0x23')](_0x3356e6)['then'](function(_0x436bf4){_0x50edb3[_0x17ba('0x23')]=_0x436bf4;if(_0x30aa44[_0x17ba('0x38')]['includeAll']){_0x23d8d6[_0x17ba('0x48')]=[{'all':!![]}];}return db[_0x17ba('0x32')][_0x17ba('0x49')](_0x23d8d6);})[_0x17ba('0x27')](function(_0x6674d4){_0x50edb3[_0x17ba('0x4a')]=_0x6674d4;return _0x50edb3;})[_0x17ba('0x27')](respondWithFilteredResult(_0x5e4d41,_0x23d8d6))[_0x17ba('0x4b')](handleError(_0x5e4d41,null));};exports['show']=function(_0x51ec1b,_0x25e8fd){var _0x3e8c13={'raw':![],'where':{'id':_0x51ec1b[_0x17ba('0x4c')]['id']}},_0x557891={};_0x557891[_0x17ba('0x37')]=_[_0x17ba('0x39')](db['CmList'][_0x17ba('0x33')]);_0x557891[_0x17ba('0x38')]=_[_0x17ba('0x39')](_0x51ec1b[_0x17ba('0x38')]);_0x557891[_0x17ba('0x3a')]=_[_0x17ba('0x3b')](_0x557891[_0x17ba('0x37')],_0x557891[_0x17ba('0x38')]);_0x3e8c13[_0x17ba('0x3d')]=_[_0x17ba('0x3b')](_0x557891[_0x17ba('0x37')],qs[_0x17ba('0x3c')](_0x51ec1b[_0x17ba('0x38')][_0x17ba('0x3c')]));_0x3e8c13[_0x17ba('0x3d')]=_0x3e8c13['attributes']['length']?_0x3e8c13[_0x17ba('0x3d')]:_0x557891[_0x17ba('0x37')];if(_0x51ec1b[_0x17ba('0x38')][_0x17ba('0x4d')]){_0x3e8c13[_0x17ba('0x48')]=[{'all':!![]}];}_0x3e8c13=_[_0x17ba('0x46')]({},_0x3e8c13,_0x51ec1b[_0x17ba('0x47')]);return db[_0x17ba('0x32')][_0x17ba('0x4e')](_0x3e8c13)[_0x17ba('0x27')](handleEntityNotFound(_0x25e8fd,null))[_0x17ba('0x27')](respondWithResult(_0x25e8fd,null))[_0x17ba('0x4b')](handleError(_0x25e8fd,null));};exports[_0x17ba('0x4f')]=function(_0x5a721f,_0x4799a7){return db[_0x17ba('0x32')][_0x17ba('0x4f')](_0x5a721f['body'],{})[_0x17ba('0x27')](function(_0x1d910d){var _0x4a03fd=_0x5a721f[_0x17ba('0x50')][_0x17ba('0x29')]({'plain':!![]});if(!_0x4a03fd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4a03fd['role']===_0x17ba('0x50')){var _0x10c874=_0x1d910d[_0x17ba('0x29')]({'plain':!![]});var _0x1aaecc=_0x17ba('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x1aaecc,'userProfileId':_0x4a03fd[_0x17ba('0x51')]},'raw':!![]})[_0x17ba('0x27')](function(_0x1a12d1){if(_0x1a12d1&&_0x1a12d1[_0x17ba('0x52')]===0x0){return db[_0x17ba('0x2b')][_0x17ba('0x4f')]({'name':_0x10c874[_0x17ba('0x2e')],'resourceId':_0x10c874['id'],'type':_0x1a12d1['name'],'sectionId':_0x1a12d1['id']},{})[_0x17ba('0x27')](function(){return _0x1d910d;});}else{return _0x1d910d;}})[_0x17ba('0x4b')](function(_0x3a28ef){logger[_0x17ba('0x2d')](_0x17ba('0x53'),_0x3a28ef);throw _0x3a28ef;});}return _0x1d910d;})['then'](respondWithResult(_0x4799a7,0xc9))[_0x17ba('0x4b')](handleError(_0x4799a7,null));};exports[_0x17ba('0x54')]=function(_0x3230c0,_0x165ed2){if(_0x3230c0['body']['id']){delete _0x3230c0[_0x17ba('0x55')]['id'];}return db[_0x17ba('0x32')][_0x17ba('0x4e')]({'where':{'id':_0x3230c0['params']['id']}})['then'](handleEntityNotFound(_0x165ed2,null))['then'](saveUpdates(_0x3230c0[_0x17ba('0x55')],null))['then'](respondWithResult(_0x165ed2,null))[_0x17ba('0x4b')](handleError(_0x165ed2,null));};exports[_0x17ba('0x28')]=function(_0x1725ba,_0x148fd9){return db['CmList']['find']({'where':{'id':_0x1725ba[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x148fd9,null))[_0x17ba('0x27')](removeEntity(_0x148fd9,null))[_0x17ba('0x4b')](handleError(_0x148fd9,null));};exports[_0x17ba('0x56')]=function(_0x470623,_0x554517){return db[_0x17ba('0x32')][_0x17ba('0x56')]()[_0x17ba('0x27')](respondWithResult(_0x554517,null))[_0x17ba('0x4b')](handleError(_0x554517,null));};exports[_0x17ba('0x57')]=function(_0x22fe1e,_0x5517bf,_0x42e48e){if(_0x22fe1e[_0x17ba('0x55')]['id']){delete _0x22fe1e[_0x17ba('0x55')]['id'];}return db[_0x17ba('0x32')][_0x17ba('0x4e')]({'where':{'id':_0x22fe1e['params']['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x5517bf,null))[_0x17ba('0x27')](function(_0x230177){if(_0x230177){_0x22fe1e['body'][_0x17ba('0x58')]=_0x230177['id'];return db[_0x17ba('0x59')][_0x17ba('0x4f')](_0x22fe1e['body']);}})['then'](respondWithResult(_0x5517bf,null))[_0x17ba('0x4b')](handleError(_0x5517bf,null));};exports[_0x17ba('0x5a')]=function(_0x1175d8,_0x1f5b71,_0x249092){var _0x133cf5={'raw':![],'where':{}};var _0xe18351={};var _0x5602f6={'count':0x0,'rows':[]};return db['CmList'][_0x17ba('0x5b')]({'where':{'id':_0x1175d8[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x1f5b71,null))[_0x17ba('0x27')](function(_0x447d3a){if(_0x447d3a){_0xe18351[_0x17ba('0x37')]=_[_0x17ba('0x39')](db['Disposition'][_0x17ba('0x33')]);_0xe18351[_0x17ba('0x38')]=_[_0x17ba('0x39')](_0x1175d8[_0x17ba('0x38')]);_0xe18351[_0x17ba('0x3a')]=_['intersection'](_0xe18351[_0x17ba('0x37')],_0xe18351['query']);_0x133cf5[_0x17ba('0x3d')]=_[_0x17ba('0x3b')](_0xe18351[_0x17ba('0x37')],qs[_0x17ba('0x3c')](_0x1175d8['query'][_0x17ba('0x3c')]));_0x133cf5[_0x17ba('0x3d')]=_0x133cf5[_0x17ba('0x3d')][_0x17ba('0x3e')]?_0x133cf5[_0x17ba('0x3d')]:_0xe18351[_0x17ba('0x37')];if(!_0x1175d8['query'][_0x17ba('0x5c')]('nolimit')){_0x133cf5['limit']=qs[_0x17ba('0x40')](_0x1175d8[_0x17ba('0x38')][_0x17ba('0x40')]);_0x133cf5[_0x17ba('0x21')]=qs[_0x17ba('0x21')](_0x1175d8[_0x17ba('0x38')]['offset']);}_0x133cf5[_0x17ba('0x41')]=qs[_0x17ba('0x42')](_0x1175d8[_0x17ba('0x38')][_0x17ba('0x42')]);_0x133cf5[_0x17ba('0x43')]=qs[_0x17ba('0x3a')](_['pick'](_0x1175d8['query'],_0xe18351[_0x17ba('0x3a')]));_0x133cf5[_0x17ba('0x43')]['ListId']=_0x447d3a['id'];if(_0x1175d8[_0x17ba('0x38')][_0x17ba('0x45')]){_0x133cf5['where']=_[_0x17ba('0x46')](_0x133cf5[_0x17ba('0x43')],{'$or':_[_0x17ba('0x31')](_0x133cf5['attributes'],function(_0x4966b3){var _0x531f0f={};_0x531f0f[_0x4966b3]={'$like':'%'+_0x1175d8[_0x17ba('0x38')][_0x17ba('0x45')]+'%'};return _0x531f0f;})});}_0x133cf5=_['merge']({},_0x133cf5,_0x1175d8[_0x17ba('0x47')]);return db[_0x17ba('0x59')][_0x17ba('0x23')]({'where':_0x133cf5['where']})[_0x17ba('0x27')](function(_0x5b5330){_0x5602f6['count']=_0x5b5330;if(_0x1175d8[_0x17ba('0x38')][_0x17ba('0x4d')]){_0x133cf5[_0x17ba('0x48')]=[{'all':!![]}];}return db[_0x17ba('0x59')]['findAll'](_0x133cf5);})[_0x17ba('0x27')](function(_0x1af66f){_0x5602f6[_0x17ba('0x4a')]=_0x1af66f;return _0x5602f6;});}})['then'](respondWithFilteredResult(_0x1f5b71,_0x133cf5))['catch'](handleError(_0x1f5b71,null));};exports['removeDispositions']=function(_0x504f0c,_0x3b25ed,_0x2e1e01){return db['CmList'][_0x17ba('0x4e')]({'where':{'id':_0x504f0c[_0x17ba('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3b25ed,null))[_0x17ba('0x27')](function(_0x46037d){if(_0x46037d){return _0x46037d[_0x17ba('0x5d')](_0x504f0c[_0x17ba('0x38')][_0x17ba('0x5e')]);}})[_0x17ba('0x27')](respondWithStatusCode(_0x3b25ed,null))[_0x17ba('0x4b')](handleError(_0x3b25ed,null));};exports[_0x17ba('0x5f')]=function(_0x4adb6f,_0x17ddc3,_0x2d49a6){return db[_0x17ba('0x32')][_0x17ba('0x4e')]({'where':{'id':_0x4adb6f[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x17ddc3,null))[_0x17ba('0x27')](function(_0x4984c2){if(_0x4984c2){var _0x596788=[];var _0x26602b={'success':[],'errors':[]};return db[_0x17ba('0x60')][_0x17ba('0x56')]()[_0x17ba('0x27')](function(_0x4981a5){if(_0x4adb6f[_0x17ba('0x55')][_0x17ba('0x61')]&&_[_0x17ba('0x62')](_0x4adb6f['body'][_0x17ba('0x61')])){if(_0x4adb6f[_0x17ba('0x55')]['tags']['length']){_0x4adb6f[_0x17ba('0x55')][_0x17ba('0x61')]=_0x4adb6f['body'][_0x17ba('0x61')][_0x17ba('0x63')](';')+';';}else{_0x4adb6f['body'][_0x17ba('0x61')]=null;}}else{_0x4adb6f[_0x17ba('0x55')][_0x17ba('0x61')]=null;}if(_0x4adb6f['body']&&_[_0x17ba('0x62')](_0x4adb6f[_0x17ba('0x55')])){for(var _0x2650af=0x0;_0x2650af<_0x4adb6f['body'][_0x17ba('0x3e')];_0x2650af+=0x1){_0x4adb6f['body'][_0x2650af][_0x17ba('0x58')]=_0x4adb6f['params']['id'];_0x596788[_0x17ba('0x64')](_0x4adb6f[_0x17ba('0x55')][_0x2650af]);}return BPromise[_0x17ba('0x65')](_0x596788,function(_0x206fa5){return db[_0x17ba('0x60')][_0x17ba('0x4f')](_['omit'](_0x206fa5,[_0x17ba('0x5e'),'id'])||{},{'fields':_[_0x17ba('0x39')](_0x4981a5),'raw':!![]})['then'](function(_0x2de34e){_0x26602b['success'][_0x17ba('0x64')](_0x2de34e[_0x17ba('0x66')]);})[_0x17ba('0x4b')](function(_0x50dabb){_0x26602b[_0x17ba('0x67')]['push']({'data':_0x206fa5,'error':_0x50dabb[_0x17ba('0x68')]});});})[_0x17ba('0x27')](function(_0x515887){return _0x26602b;})[_0x17ba('0x4b')](function(_0x1f8c81){return _0x1f8c81;});}else{_0x17ddc3['status'](0x190)[_0x17ba('0x20')]({'message':_0x17ba('0x69')});}});}})[_0x17ba('0x27')](respondWithResult(_0x17ddc3,null))['catch'](handleError(_0x17ddc3,null));};exports[_0x17ba('0x6a')]=function(_0x33bb7a,_0x135809,_0x44f608){var _0x13cd38;return db[_0x17ba('0x32')][_0x17ba('0x4e')]({'where':{'id':_0x33bb7a[_0x17ba('0x4c')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x17ba('0x6b')}]})[_0x17ba('0x27')](handleEntityNotFound(_0x135809,null))[_0x17ba('0x27')](function(_0x5defa6){if(_0x5defa6){_0x13cd38=_0x5defa6;return db['CmContact'][_0x17ba('0x33')];}})['then'](function(_0x3bb9fa){if(_0x3bb9fa){var _0xe8fc04={};var _0x40d597={};_0x40d597[_0x17ba('0x37')]=_['concat'](_[_0x17ba('0x39')](_0x3bb9fa),_[_0x17ba('0x31')](_0x13cd38['CustomFields'],function(_0x2cf454){return util[_0x17ba('0x6c')](_0x17ba('0x6d'),_0x2cf454['id']);}));_0x40d597[_0x17ba('0x38')]=_[_0x17ba('0x39')](_0x33bb7a[_0x17ba('0x38')]);_0x40d597[_0x17ba('0x3a')]=_[_0x17ba('0x3b')](_0x40d597[_0x17ba('0x37')],_0x40d597['query']);_0xe8fc04[_0x17ba('0x3d')]=_[_0x17ba('0x3b')](_0x40d597['model'],qs[_0x17ba('0x3c')](_0x33bb7a[_0x17ba('0x38')][_0x17ba('0x3c')]));_0xe8fc04[_0x17ba('0x3d')]=_0xe8fc04[_0x17ba('0x3d')]['length']?_0xe8fc04['attributes']:_0x40d597[_0x17ba('0x37')];if(!_0x33bb7a[_0x17ba('0x38')][_0x17ba('0x5c')](_0x17ba('0x3f'))){_0xe8fc04[_0x17ba('0x40')]=qs['limit'](_0x33bb7a[_0x17ba('0x38')][_0x17ba('0x40')]);_0xe8fc04[_0x17ba('0x21')]=qs[_0x17ba('0x21')](_0x33bb7a['query'][_0x17ba('0x21')]);}_0xe8fc04[_0x17ba('0x41')]=qs['sort'](_0x33bb7a[_0x17ba('0x38')]['sort']);_0xe8fc04[_0x17ba('0x43')]=qs['filters'](_['pick'](_0x33bb7a[_0x17ba('0x38')],_0x40d597[_0x17ba('0x3a')]));_0xe8fc04['raw']=!![];if(_0x33bb7a[_0x17ba('0x38')][_0x17ba('0x45')]){_0xe8fc04[_0x17ba('0x43')]=_[_0x17ba('0x46')](_0xe8fc04[_0x17ba('0x43')],{'$or':_[_0x17ba('0x31')](_0xe8fc04[_0x17ba('0x3d')],function(_0x17cba3){var _0x1701a6={};_0x1701a6[_0x17cba3]={'$like':'%'+_0x33bb7a[_0x17ba('0x38')]['filter']+'%'};return _0x1701a6;})});}_0xe8fc04=_[_0x17ba('0x46')]({},_0xe8fc04,_0x33bb7a['options']);return _0x13cd38[_0x17ba('0x6a')](_0xe8fc04);}})['then'](respondWithResult(_0x135809,null))[_0x17ba('0x4b')](handleError(_0x135809,null));};exports[_0x17ba('0x6e')]=function(_0x24f040,_0x2baeec,_0x2cab87){var _0x12cbe5;var _0x2f4db3;var _0x53694b;var _0x154355=_0x24f040[_0x17ba('0x4c')]['id'];csv_results=[];return db[_0x17ba('0x6f')][_0x17ba('0x49')]({'attributes':['id',_0x17ba('0x2e')],'raw':!![],'order':[_0x17ba('0x70')]})[_0x17ba('0x27')](function(_0x3045b5){_0x12cbe5=_0x3045b5;var _0x11d2c6=_['keys'](db[_0x17ba('0x60')][_0x17ba('0x33')]);return db[_0x17ba('0x71')]['findAll']({'raw':!![],'attributes':['id',_0x17ba('0x72')]})[_0x17ba('0x27')](function(_0x25b049){_0x2f4db3=_0x25b049;var _0x326f4c=squel[_0x17ba('0x73')]()['fields'](_0x11d2c6)[_0x17ba('0x74')](_0x17ba('0x75'),'c')[_0x17ba('0x43')]('c.ListId\x20=\x20?',_0x154355)[_0x17ba('0x43')](_0x17ba('0x76'))['distinct']();for(var _0x442970=0x0;_0x442970<_0x2f4db3[_0x17ba('0x3e')];_0x442970++){_0x326f4c[_0x17ba('0x77')](_0x17ba('0x78')+_0x2f4db3[_0x442970]['id'],_0x17ba('0x79')+_0x2f4db3[_0x442970][_0x17ba('0x72')]);}for(var _0x442970=0x0;_0x442970<_0x12cbe5[_0x17ba('0x3e')];_0x442970++){_0x326f4c[_0x17ba('0x77')](squel[_0x17ba('0x73')]()['field']('item')[_0x17ba('0x74')](_0x17ba('0x7a'))['where']('ItemTypeId\x20=\x20?',_0x12cbe5[_0x442970]['id'])['where'](_0x17ba('0x7b')),_0x17ba('0x7c')+_0x12cbe5[_0x442970][_0x17ba('0x2e')]);_0x326f4c['field'](squel[_0x17ba('0x73')]()[_0x17ba('0x77')](_0x17ba('0x7d'))[_0x17ba('0x74')](_0x17ba('0x7a'))[_0x17ba('0x43')]('ItemTypeId\x20=\x20?',_0x12cbe5[_0x442970]['id'])['where'](_0x17ba('0x7b')),_0x17ba('0x7e')+_0x12cbe5[_0x442970][_0x17ba('0x2e')]);}var _0x3ca6ef=[];_0x3ca6ef['push'](_0x326f4c[_0x17ba('0x7f')]());BPromise[_0x17ba('0x65')](_0x3ca6ef,handleQuery)[_0x17ba('0x27')](function(_0x29ef6a){handleQuery(_0x326f4c['toString']());var _0x6b08f5=csv_results[0x0];if(!_[_0x17ba('0x80')](_0x6b08f5)){var _0x5a8b25=toCsv(_0x6b08f5);var _0x39765c=Date[_0x17ba('0x81')]();fs['writeFileSync'](util[_0x17ba('0x6c')](_0x17ba('0x82'),_0x154355,_0x39765c),_0x5a8b25);_0x2baeec['setHeader'](_0x17ba('0x83'),_0x17ba('0x84')+util[_0x17ba('0x6c')](_0x17ba('0x85'),_0x154355,_0x39765c));_0x2baeec[_0x17ba('0x86')](_0x17ba('0x87'),'text/csv');return _0x2baeec[_0x17ba('0x88')](util[_0x17ba('0x6c')](_0x17ba('0x82'),_0x154355,_0x39765c));}else{return _0x2baeec['sendStatus'](0xcc);}});});});};exports['addCustomField']=function(_0x29dd30,_0x2685c9,_0x5302be){var _0x3bf699;delete _0x29dd30[_0x17ba('0x55')]['id'];return db[_0x17ba('0x32')][_0x17ba('0x5b')]({'where':{'id':_0x29dd30[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x2685c9,null))[_0x17ba('0x27')](function(_0x15c194){if(_0x15c194){return db[_0x17ba('0x89')]['transaction'](function(_0x121261){return db[_0x17ba('0x71')][_0x17ba('0x4f')](_0x29dd30[_0x17ba('0x55')],{'transaction':_0x121261})[_0x17ba('0x27')](function(_0x38c8a5){_0x3bf699=_0x38c8a5;return _0x15c194[_0x17ba('0x8a')](_0x38c8a5,{'transaction':_0x121261});})[_0x17ba('0x27')](function(){var _0x2927ef={'type':db[_0x17ba('0x8b')][_0x17ba('0x8c')],'transaction':_0x121261};switch(_0x29dd30[_0x17ba('0x55')][_0x17ba('0x35')]){case _0x17ba('0x8d'):_0x2927ef[_0x17ba('0x35')]=db['Sequelize']['TEXT'];break;case _0x17ba('0x8e'):_0x2927ef[_0x17ba('0x35')]=db[_0x17ba('0x8b')][_0x17ba('0x8f')];break;case _0x17ba('0x90'):_0x2927ef[_0x17ba('0x35')]=db[_0x17ba('0x8b')][_0x17ba('0x91')];_0x2927ef[_0x17ba('0x92')]=![];break;default:}return db[_0x17ba('0x89')][_0x17ba('0x93')]['addColumn'](_0x17ba('0x75'),util[_0x17ba('0x6c')](_0x17ba('0x94'),_0x3bf699['id']),_0x2927ef);})[_0x17ba('0x27')](function(){return _0x3bf699;});});}})[_0x17ba('0x27')](respondWithResult(_0x2685c9,null))[_0x17ba('0x4b')](handleError(_0x2685c9,null));};exports[_0x17ba('0x95')]=function(_0x3f0731,_0x374281,_0x4f25a0){var _0x2dbb1c={};var _0x204adb={};var _0x1352c4;var _0x55b6a7;return db['CmList'][_0x17ba('0x5b')]({'where':{'id':_0x3f0731[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x374281,null))[_0x17ba('0x27')](function(_0x59b518){if(_0x59b518){_0x1352c4=_0x59b518;_0x204adb[_0x17ba('0x37')]=_[_0x17ba('0x39')](db[_0x17ba('0x71')][_0x17ba('0x33')]);_0x204adb[_0x17ba('0x38')]=_[_0x17ba('0x39')](_0x3f0731[_0x17ba('0x38')]);_0x204adb[_0x17ba('0x3a')]=_['intersection'](_0x204adb[_0x17ba('0x37')],_0x204adb[_0x17ba('0x38')]);_0x2dbb1c[_0x17ba('0x3d')]=_[_0x17ba('0x3b')](_0x204adb[_0x17ba('0x37')],qs[_0x17ba('0x3c')](_0x3f0731[_0x17ba('0x38')][_0x17ba('0x3c')]));_0x2dbb1c[_0x17ba('0x3d')]=_0x2dbb1c[_0x17ba('0x3d')][_0x17ba('0x3e')]?_0x2dbb1c[_0x17ba('0x3d')]:_0x204adb[_0x17ba('0x37')];_0x2dbb1c[_0x17ba('0x41')]=qs[_0x17ba('0x42')](_0x3f0731[_0x17ba('0x38')][_0x17ba('0x42')]);_0x2dbb1c[_0x17ba('0x43')]=qs['filters'](_[_0x17ba('0x44')](_0x3f0731[_0x17ba('0x38')],_0x204adb[_0x17ba('0x3a')]));_0x2dbb1c[_0x17ba('0x43')]=_[_0x17ba('0x46')](_0x2dbb1c['where'],{'$or':[{'ListId':_0x59b518['id']},{'ListId':null}]});if(_0x3f0731[_0x17ba('0x38')][_0x17ba('0x45')]){_0x2dbb1c['where']=_[_0x17ba('0x46')](_0x2dbb1c[_0x17ba('0x43')],{'$or':_[_0x17ba('0x31')](_0x2dbb1c[_0x17ba('0x3d')],function(_0x47f0a1){var _0x779695={};_0x779695[_0x47f0a1]={'$like':'%'+_0x3f0731[_0x17ba('0x38')][_0x17ba('0x45')]+'%'};return _0x779695;})});}_0x2dbb1c=_[_0x17ba('0x46')]({},_0x2dbb1c,_0x3f0731[_0x17ba('0x47')]);return db['CmCustomField'][_0x17ba('0x96')](_0x2dbb1c);}})['then'](respondWithResult(_0x374281,null))[_0x17ba('0x4b')](handleError(_0x374281,null));};exports['getGlobalCustomFields']=function(_0xb9bc33,_0x93e5dc){return db[_0x17ba('0x71')][_0x17ba('0x96')]({'where':{'ListId':null}})[_0x17ba('0x27')](handleEntityNotFound(_0x93e5dc,null))[_0x17ba('0x27')](function(_0x3c2bbc){return _0x3c2bbc;})[_0x17ba('0x27')](respondWithResult(_0x93e5dc,null))['catch'](handleError(_0x93e5dc,null));};exports[_0x17ba('0x97')]=function(_0x3e347b,_0x51759b,_0x46485d){return db[_0x17ba('0x32')][_0x17ba('0x4e')]({'where':{'id':_0x3e347b['params']['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x51759b,null))[_0x17ba('0x27')](function(_0xe27175){if(_0xe27175){return _0xe27175[_0x17ba('0x97')](_0x3e347b[_0x17ba('0x55')][_0x17ba('0x5e')],_[_0x17ba('0x98')](_0x3e347b[_0x17ba('0x55')],[_0x17ba('0x5e'),'id'])||{})[_0x17ba('0x99')](function(_0x450711){for(var _0x372975=0x0;_0x372975<_0x3e347b[_0x17ba('0x55')][_0x17ba('0x5e')]['length'];_0x372975+=0x1){socket[_0x17ba('0x9a')](_0x17ba('0x9b'),{'UserId':Number(_0x3e347b['body'][_0x17ba('0x5e')][_0x372975]),'CmListId':Number(_0x3e347b[_0x17ba('0x4c')]['id'])});}return _0x450711;});}})['then'](respondWithResult(_0x51759b,null))['catch'](handleError(_0x51759b,null));};exports[_0x17ba('0x9c')]=function(_0x149101,_0x24cb3f,_0x2a1964){return db[_0x17ba('0x32')]['find']({'where':{'id':_0x149101[_0x17ba('0x4c')]['id']}})[_0x17ba('0x27')](handleEntityNotFound(_0x24cb3f,null))[_0x17ba('0x27')](function(_0x217231){if(_0x217231){return _0x217231['removeAgents'](_0x149101[_0x17ba('0x38')][_0x17ba('0x5e')])[_0x17ba('0x27')](function(){if(_[_0x17ba('0x62')](_0x149101[_0x17ba('0x38')]['ids'])){for(var _0x111aa7=0x0;_0x111aa7<_0x149101['query'][_0x17ba('0x5e')]['length'];_0x111aa7+=0x1){socket[_0x17ba('0x9a')](_0x17ba('0x9d'),{'UserId':Number(_0x149101[_0x17ba('0x38')]['ids'][_0x111aa7]),'CmListId':Number(_0x149101[_0x17ba('0x4c')]['id'])});}}else{socket[_0x17ba('0x9a')](_0x17ba('0x9d'),{'UserId':Number(_0x149101[_0x17ba('0x38')]['ids']),'CmListId':Number(_0x149101[_0x17ba('0x4c')]['id'])});}});}})[_0x17ba('0x27')](respondWithStatusCode(_0x24cb3f,null))[_0x17ba('0x4b')](handleError(_0x24cb3f,null));};exports[_0x17ba('0x9e')]=function(_0x2d9307,_0x386fc3,_0x2770d7){var _0x267838={};var _0x520c97={};var _0xd3725c;var _0x43aadf;return db[_0x17ba('0x32')][_0x17ba('0x5b')]({'where':{'id':_0x2d9307['params']['id']}})['then'](handleEntityNotFound(_0x386fc3,null))[_0x17ba('0x27')](function(_0x5a2d28){if(_0x5a2d28){_0xd3725c=_0x5a2d28;_0x520c97[_0x17ba('0x37')]=_['keys'](db[_0x17ba('0x9f')][_0x17ba('0x33')]);_0x520c97['query']=_[_0x17ba('0x39')](_0x2d9307[_0x17ba('0x38')]);_0x520c97[_0x17ba('0x3a')]=_[_0x17ba('0x3b')](_0x520c97[_0x17ba('0x37')],_0x520c97[_0x17ba('0x38')]);_0x267838[_0x17ba('0x3d')]=_[_0x17ba('0x3b')](_0x520c97[_0x17ba('0x37')],qs[_0x17ba('0x3c')](_0x2d9307[_0x17ba('0x38')][_0x17ba('0x3c')]));_0x267838['attributes']=_0x267838[_0x17ba('0x3d')][_0x17ba('0x3e')]?_0x267838[_0x17ba('0x3d')]:_0x520c97[_0x17ba('0x37')];_0x267838[_0x17ba('0x41')]=qs[_0x17ba('0x42')](_0x2d9307[_0x17ba('0x38')][_0x17ba('0x42')]);_0x267838['where']=qs[_0x17ba('0x3a')](_[_0x17ba('0x44')](_0x2d9307[_0x17ba('0x38')],_0x520c97[_0x17ba('0x3a')]));if(_0x2d9307['query'][_0x17ba('0x45')]){_0x267838[_0x17ba('0x43')]=_[_0x17ba('0x46')](_0x267838[_0x17ba('0x43')],{'$or':_['map'](_0x267838[_0x17ba('0x3d')],function(_0x327193){var _0x5e5b5f={};_0x5e5b5f[_0x327193]={'$like':'%'+_0x2d9307[_0x17ba('0x38')][_0x17ba('0x45')]+'%'};return _0x5e5b5f;})});}_0x267838=_['merge']({},_0x267838,_0x2d9307['options']);return _0xd3725c['getAgents'](_0x267838);}})[_0x17ba('0x27')](function(_0x3d4e9b){if(_0x3d4e9b){_0x43aadf=_0x3d4e9b[_0x17ba('0x3e')];if(!_0x2d9307['query'][_0x17ba('0x5c')](_0x17ba('0x3f'))){_0x267838['limit']=qs['limit'](_0x2d9307[_0x17ba('0x38')][_0x17ba('0x40')]);_0x267838['offset']=qs[_0x17ba('0x21')](_0x2d9307[_0x17ba('0x38')]['offset']);}return _0xd3725c[_0x17ba('0x9e')](_0x267838);}})[_0x17ba('0x27')](function(_0x4597a4){if(_0x4597a4){return _0x4597a4?{'count':_0x43aadf,'rows':_0x4597a4}:null;}})[_0x17ba('0x27')](respondWithResult(_0x386fc3,null))[_0x17ba('0x4b')](handleError(_0x386fc3,null));};function handleQuery(_0x4191bc){logger[_0x17ba('0xa0')](_0x4191bc);return db[_0x17ba('0x89')]['query'](_0x4191bc)[_0x17ba('0x99')](function(_0x15c429){csv_results[_0x17ba('0x64')](_0x15c429);})['catch'](function(_0x520717){logger[_0x17ba('0x2d')](_0x520717['message']);});}
\ No newline at end of file
+var _0x6366=['attributes','hasOwnProperty','order','sort','where','pick','merge','map','filter','CmList','include','findAll','rows','catch','rawAttributes','fields','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','describe','findOne','Disposition','nolimit','options','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','success','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','getContactsCsv','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','customField_','field','item','from','cm_contact_has_items','additionalPhone_','ItemTypeId\x20=\x20?','description_additionalPhone_','toString','now','/tmp/list_%d_%s.csv','setHeader','list_%d_%s.csv','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','queryInterface','addColumn','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','getAgents','info','message','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Lists','UserProfileResource','error','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x2a124c,_0x5815fd){var _0x10c31a=function(_0x49830e){while(--_0x49830e){_0x2a124c['push'](_0x2a124c['shift']());}};_0x10c31a(++_0x5815fd);}(_0x6366,0x198));var _0x6636=function(_0x191501,_0x57a337){_0x191501=_0x191501-0x0;var _0x1368fc=_0x6366[_0x191501];return _0x1368fc;};'use strict';var emlformat=require(_0x6636('0x0'));var rimraf=require(_0x6636('0x1'));var zipdir=require(_0x6636('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6636('0x3'));var moment=require(_0x6636('0x4'));var BPromise=require(_0x6636('0x5'));var Mustache=require(_0x6636('0x6'));var util=require(_0x6636('0x7'));var path=require('path');var sox=require(_0x6636('0x8'));var csv=require(_0x6636('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6636('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6636('0xb'));var jsforce=require(_0x6636('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6636('0x9'));var querystring=require(_0x6636('0xd'));var Papa=require(_0x6636('0xe'));var Redis=require(_0x6636('0xf'));var authService=require(_0x6636('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6636('0x11'));var hardwareService=require(_0x6636('0x12'));var logger=require('../../config/logger')(_0x6636('0x13'));var utils=require(_0x6636('0x14'));var config=require(_0x6636('0x15'));var licenseUtil=require(_0x6636('0x16'));var db=require(_0x6636('0x17'))['db'];var csv_results;config['redis']=_[_0x6636('0x18')](config[_0x6636('0x19')],{'host':_0x6636('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./cmList.socket')[_0x6636('0x1b')](socket);function respondWithStatusCode(_0x5bee5b,_0x56f6b0){_0x56f6b0=_0x56f6b0||0xcc;return function(_0x3bd156){if(_0x3bd156){return _0x5bee5b[_0x6636('0x1c')](_0x56f6b0);}return _0x5bee5b[_0x6636('0x1d')](_0x56f6b0)['end']();};}function respondWithResult(_0x1fe2ca,_0x42decd){_0x42decd=_0x42decd||0xc8;return function(_0x1f2c0e){if(_0x1f2c0e){return _0x1fe2ca[_0x6636('0x1d')](_0x42decd)[_0x6636('0x1e')](_0x1f2c0e);}};}function respondWithFilteredResult(_0x218a89,_0x266cfd){return function(_0x5cf730){if(_0x5cf730){var _0x3a6ea2=typeof _0x266cfd[_0x6636('0x1f')]===_0x6636('0x20')&&typeof _0x266cfd[_0x6636('0x21')]===_0x6636('0x20');var _0x1a0b74=_0x5cf730['count'];var _0x44c4aa=_0x3a6ea2?0x0:_0x266cfd['offset'];var _0x5b5e5d=_0x3a6ea2?_0x5cf730[_0x6636('0x22')]:_0x266cfd[_0x6636('0x1f')]+_0x266cfd[_0x6636('0x21')];var _0x12c0d4;if(_0x5b5e5d>=_0x1a0b74){_0x5b5e5d=_0x1a0b74;_0x12c0d4=0xc8;}else{_0x12c0d4=0xce;}_0x218a89[_0x6636('0x1d')](_0x12c0d4);return _0x218a89[_0x6636('0x23')](_0x6636('0x24'),_0x44c4aa+'-'+_0x5b5e5d+'/'+_0x1a0b74)['json'](_0x5cf730);}return null;};}function patchUpdates(_0x20e3d2){return function(_0x1c9c12){try{jsonpatch[_0x6636('0x25')](_0x1c9c12,_0x20e3d2,!![]);}catch(_0x5b345e){return BPromise[_0x6636('0x26')](_0x5b345e);}return _0x1c9c12[_0x6636('0x27')]();};}function saveUpdates(_0x760822,_0xdb501f){return function(_0x340c1a){if(_0x340c1a){return _0x340c1a[_0x6636('0x28')](_0x760822)[_0x6636('0x29')](function(_0x4dc477){return _0x4dc477;});}return null;};}function removeEntity(_0x231d52,_0x48496b){return function(_0x4cbf8b){if(_0x4cbf8b){return _0x4cbf8b['destroy']()[_0x6636('0x29')](function(){var _0x274dbd=_0x4cbf8b[_0x6636('0x2a')]({'plain':!![]});var _0x375360=_0x6636('0x2b');return db[_0x6636('0x2c')]['destroy']({'where':{'type':_0x375360,'resourceId':_0x274dbd['id']}})['then'](function(){return _0x4cbf8b;});})[_0x6636('0x29')](function(){_0x231d52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b848f,_0x1ccd40){return function(_0x425f15){if(!_0x425f15){_0x1b848f[_0x6636('0x1c')](0x194);}return _0x425f15;};}function handleError(_0x48268c,_0x258fce){_0x258fce=_0x258fce||0x1f4;return function(_0x3abd50){logger[_0x6636('0x2d')](_0x3abd50['stack']);if(_0x3abd50['name']){delete _0x3abd50['name'];}_0x48268c[_0x6636('0x1d')](_0x258fce)['send'](_0x3abd50);};}exports['index']=function(_0x26b39c,_0x1f12b0){var _0x1334a7={},_0xfd97ea={},_0x18b5ce={'count':0x0,'rows':[]};var _0x557738=_['map'](db['CmList']['rawAttributes'],function(_0x54a694){return{'name':_0x54a694[_0x6636('0x2e')],'type':_0x54a694[_0x6636('0x2f')][_0x6636('0x30')]};});_0xfd97ea[_0x6636('0x31')]=_['map'](_0x557738,'name');_0xfd97ea[_0x6636('0x32')]=_[_0x6636('0x33')](_0x26b39c[_0x6636('0x32')]);_0xfd97ea[_0x6636('0x34')]=_[_0x6636('0x35')](_0xfd97ea[_0x6636('0x31')],_0xfd97ea[_0x6636('0x32')]);_0x1334a7[_0x6636('0x36')]=_[_0x6636('0x35')](_0xfd97ea[_0x6636('0x31')],qs['fields'](_0x26b39c[_0x6636('0x32')]['fields']));_0x1334a7['attributes']=_0x1334a7[_0x6636('0x36')]['length']?_0x1334a7[_0x6636('0x36')]:_0xfd97ea[_0x6636('0x31')];if(!_0x26b39c[_0x6636('0x32')][_0x6636('0x37')]('nolimit')){_0x1334a7[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x26b39c['query']['limit']);_0x1334a7[_0x6636('0x1f')]=qs['offset'](_0x26b39c['query'][_0x6636('0x1f')]);}_0x1334a7[_0x6636('0x38')]=qs[_0x6636('0x39')](_0x26b39c[_0x6636('0x32')][_0x6636('0x39')]);_0x1334a7[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x26b39c['query'],_0xfd97ea['filters']),_0x557738);if(_0x26b39c['query']['filter']){_0x1334a7[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x1334a7[_0x6636('0x3a')],{'$or':_[_0x6636('0x3d')](_0x557738,function(_0x151140){if(_0x151140[_0x6636('0x2f')]!=='VIRTUAL'){var _0x2ff262={};_0x2ff262[_0x151140['name']]={'$like':'%'+_0x26b39c['query'][_0x6636('0x3e')]+'%'};return _0x2ff262;}})});}_0x1334a7=_[_0x6636('0x3c')]({},_0x1334a7,_0x26b39c['options']);var _0x1104d4={'where':_0x1334a7[_0x6636('0x3a')]};return db[_0x6636('0x3f')][_0x6636('0x22')](_0x1104d4)['then'](function(_0x595d9f){_0x18b5ce[_0x6636('0x22')]=_0x595d9f;if(_0x26b39c[_0x6636('0x32')]['includeAll']){_0x1334a7[_0x6636('0x40')]=[{'all':!![]}];}return db[_0x6636('0x3f')][_0x6636('0x41')](_0x1334a7);})['then'](function(_0x292161){_0x18b5ce[_0x6636('0x42')]=_0x292161;return _0x18b5ce;})['then'](respondWithFilteredResult(_0x1f12b0,_0x1334a7))[_0x6636('0x43')](handleError(_0x1f12b0,null));};exports['show']=function(_0x15be9d,_0x3212e0){var _0x40f1a5={'raw':![],'where':{'id':_0x15be9d['params']['id']}},_0x2f64ac={};_0x2f64ac['model']=_[_0x6636('0x33')](db['CmList'][_0x6636('0x44')]);_0x2f64ac['query']=_[_0x6636('0x33')](_0x15be9d[_0x6636('0x32')]);_0x2f64ac[_0x6636('0x34')]=_['intersection'](_0x2f64ac[_0x6636('0x31')],_0x2f64ac[_0x6636('0x32')]);_0x40f1a5[_0x6636('0x36')]=_['intersection'](_0x2f64ac[_0x6636('0x31')],qs[_0x6636('0x45')](_0x15be9d['query'][_0x6636('0x45')]));_0x40f1a5[_0x6636('0x36')]=_0x40f1a5[_0x6636('0x36')][_0x6636('0x46')]?_0x40f1a5[_0x6636('0x36')]:_0x2f64ac['model'];if(_0x15be9d[_0x6636('0x32')][_0x6636('0x47')]){_0x40f1a5[_0x6636('0x40')]=[{'all':!![]}];}_0x40f1a5=_[_0x6636('0x3c')]({},_0x40f1a5,_0x15be9d['options']);return db[_0x6636('0x3f')][_0x6636('0x48')](_0x40f1a5)[_0x6636('0x29')](handleEntityNotFound(_0x3212e0,null))[_0x6636('0x29')](respondWithResult(_0x3212e0,null))['catch'](handleError(_0x3212e0,null));};exports[_0x6636('0x49')]=function(_0x26c2cb,_0x7d0b4f){return db['CmList'][_0x6636('0x49')](_0x26c2cb[_0x6636('0x4a')],{})[_0x6636('0x29')](function(_0x3ffe16){var _0x372449=_0x26c2cb[_0x6636('0x4b')][_0x6636('0x2a')]({'plain':!![]});if(!_0x372449)throw new Error(_0x6636('0x4c'));if(_0x372449[_0x6636('0x4d')]==='user'){var _0x3a905e=_0x3ffe16[_0x6636('0x2a')]({'plain':!![]});var _0x48fba4=_0x6636('0x2b');return db['UserProfileSection'][_0x6636('0x48')]({'where':{'name':_0x48fba4,'userProfileId':_0x372449[_0x6636('0x4e')]},'raw':!![]})['then'](function(_0x1f21a1){if(_0x1f21a1&&_0x1f21a1[_0x6636('0x4f')]===0x0){return db['UserProfileResource'][_0x6636('0x49')]({'name':_0x3a905e[_0x6636('0x50')],'resourceId':_0x3a905e['id'],'type':_0x1f21a1[_0x6636('0x50')],'sectionId':_0x1f21a1['id']},{})[_0x6636('0x29')](function(){return _0x3ffe16;});}else{return _0x3ffe16;}})[_0x6636('0x43')](function(_0x112f25){logger[_0x6636('0x2d')](_0x6636('0x51'),_0x112f25);throw _0x112f25;});}return _0x3ffe16;})[_0x6636('0x29')](respondWithResult(_0x7d0b4f,0xc9))['catch'](handleError(_0x7d0b4f,null));};exports['update']=function(_0x57648e,_0x3c7f8e){if(_0x57648e[_0x6636('0x4a')]['id']){delete _0x57648e[_0x6636('0x4a')]['id'];}return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x57648e[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x3c7f8e,null))[_0x6636('0x29')](saveUpdates(_0x57648e[_0x6636('0x4a')],null))[_0x6636('0x29')](respondWithResult(_0x3c7f8e,null))[_0x6636('0x43')](handleError(_0x3c7f8e,null));};exports[_0x6636('0x53')]=function(_0x520c80,_0x54f82e){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x520c80['params']['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x54f82e,null))['then'](removeEntity(_0x54f82e,null))[_0x6636('0x43')](handleError(_0x54f82e,null));};exports[_0x6636('0x54')]=function(_0x4b601a,_0x39f5fd){return db[_0x6636('0x3f')][_0x6636('0x54')]()[_0x6636('0x29')](respondWithResult(_0x39f5fd,null))[_0x6636('0x43')](handleError(_0x39f5fd,null));};exports['addDisposition']=function(_0x4e4c76,_0x5b6829,_0x1d84c5){if(_0x4e4c76[_0x6636('0x4a')]['id']){delete _0x4e4c76[_0x6636('0x4a')]['id'];}return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x4e4c76[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x5b6829,null))[_0x6636('0x29')](function(_0x337f84){if(_0x337f84){_0x4e4c76[_0x6636('0x4a')]['ListId']=_0x337f84['id'];return db['Disposition']['create'](_0x4e4c76[_0x6636('0x4a')]);}})[_0x6636('0x29')](respondWithResult(_0x5b6829,null))[_0x6636('0x43')](handleError(_0x5b6829,null));};exports['getDispositions']=function(_0x4c74b3,_0x123a09,_0x1fa54d){var _0x149aa6={'raw':![],'where':{}};var _0x5c5b58={};var _0x331a26={'count':0x0,'rows':[]};return db['CmList'][_0x6636('0x55')]({'where':{'id':_0x4c74b3[_0x6636('0x52')]['id']}})['then'](handleEntityNotFound(_0x123a09,null))['then'](function(_0xdc63f5){if(_0xdc63f5){_0x5c5b58[_0x6636('0x31')]=_[_0x6636('0x33')](db[_0x6636('0x56')][_0x6636('0x44')]);_0x5c5b58[_0x6636('0x32')]=_['keys'](_0x4c74b3['query']);_0x5c5b58['filters']=_[_0x6636('0x35')](_0x5c5b58['model'],_0x5c5b58[_0x6636('0x32')]);_0x149aa6['attributes']=_[_0x6636('0x35')](_0x5c5b58[_0x6636('0x31')],qs[_0x6636('0x45')](_0x4c74b3[_0x6636('0x32')][_0x6636('0x45')]));_0x149aa6['attributes']=_0x149aa6[_0x6636('0x36')][_0x6636('0x46')]?_0x149aa6[_0x6636('0x36')]:_0x5c5b58[_0x6636('0x31')];if(!_0x4c74b3[_0x6636('0x32')][_0x6636('0x37')](_0x6636('0x57'))){_0x149aa6[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x4c74b3[_0x6636('0x32')]['limit']);_0x149aa6[_0x6636('0x1f')]=qs[_0x6636('0x1f')](_0x4c74b3[_0x6636('0x32')]['offset']);}_0x149aa6[_0x6636('0x38')]=qs['sort'](_0x4c74b3[_0x6636('0x32')][_0x6636('0x39')]);_0x149aa6[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x4c74b3[_0x6636('0x32')],_0x5c5b58[_0x6636('0x34')]));_0x149aa6[_0x6636('0x3a')]['ListId']=_0xdc63f5['id'];if(_0x4c74b3[_0x6636('0x32')][_0x6636('0x3e')]){_0x149aa6[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x149aa6[_0x6636('0x3a')],{'$or':_['map'](_0x149aa6[_0x6636('0x36')],function(_0x52f935){var _0x5dc67e={};_0x5dc67e[_0x52f935]={'$like':'%'+_0x4c74b3[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x5dc67e;})});}_0x149aa6=_['merge']({},_0x149aa6,_0x4c74b3[_0x6636('0x58')]);return db[_0x6636('0x56')][_0x6636('0x22')]({'where':_0x149aa6[_0x6636('0x3a')]})[_0x6636('0x29')](function(_0x22ea71){_0x331a26[_0x6636('0x22')]=_0x22ea71;if(_0x4c74b3['query'][_0x6636('0x47')]){_0x149aa6[_0x6636('0x40')]=[{'all':!![]}];}return db[_0x6636('0x56')]['findAll'](_0x149aa6);})[_0x6636('0x29')](function(_0xa6a1ec){_0x331a26[_0x6636('0x42')]=_0xa6a1ec;return _0x331a26;});}})['then'](respondWithFilteredResult(_0x123a09,_0x149aa6))[_0x6636('0x43')](handleError(_0x123a09,null));};exports[_0x6636('0x59')]=function(_0x68b2a5,_0x98a70f,_0x2ddbc5){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x68b2a5[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x98a70f,null))[_0x6636('0x29')](function(_0x5e5af1){if(_0x5e5af1){return _0x5e5af1['removeDispositions'](_0x68b2a5[_0x6636('0x32')][_0x6636('0x5a')]);}})[_0x6636('0x29')](respondWithStatusCode(_0x98a70f,null))[_0x6636('0x43')](handleError(_0x98a70f,null));};exports[_0x6636('0x5b')]=function(_0x3ad1cf,_0x24373a,_0xf82ee3){return db[_0x6636('0x3f')]['find']({'where':{'id':_0x3ad1cf[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x24373a,null))[_0x6636('0x29')](function(_0x2e9101){if(_0x2e9101){var _0x501f8b=[];var _0x1437fd={'success':[],'errors':[]};return db[_0x6636('0x5c')][_0x6636('0x54')]()[_0x6636('0x29')](function(_0x5d0580){if(_0x3ad1cf['body'][_0x6636('0x5d')]&&_[_0x6636('0x5e')](_0x3ad1cf[_0x6636('0x4a')]['tags'])){if(_0x3ad1cf['body'][_0x6636('0x5d')]['length']){_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')]=_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')][_0x6636('0x5f')](';')+';';}else{_0x3ad1cf[_0x6636('0x4a')]['tags']=null;}}else{_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x5d')]=null;}if(_0x3ad1cf['body']&&_[_0x6636('0x5e')](_0x3ad1cf['body'])){for(var _0xaeae4a=0x0;_0xaeae4a<_0x3ad1cf[_0x6636('0x4a')][_0x6636('0x46')];_0xaeae4a+=0x1){_0x3ad1cf[_0x6636('0x4a')][_0xaeae4a]['ListId']=_0x3ad1cf[_0x6636('0x52')]['id'];_0x501f8b[_0x6636('0x60')](_0x3ad1cf[_0x6636('0x4a')][_0xaeae4a]);}return BPromise[_0x6636('0x61')](_0x501f8b,function(_0x3630b3){return db['CmContact']['create'](_[_0x6636('0x62')](_0x3630b3,[_0x6636('0x5a'),'id'])||{},{'fields':_[_0x6636('0x33')](_0x5d0580),'raw':!![]})[_0x6636('0x29')](function(_0x57d01f){_0x1437fd[_0x6636('0x63')][_0x6636('0x60')](_0x57d01f['dataValues']);})[_0x6636('0x43')](function(_0x237957){_0x1437fd[_0x6636('0x64')][_0x6636('0x60')]({'data':_0x3630b3,'error':_0x237957['message']});});})['then'](function(_0x2aa570){return _0x1437fd;})[_0x6636('0x43')](function(_0x3839f2){return _0x3839f2;});}else{_0x24373a[_0x6636('0x1d')](0x190)[_0x6636('0x1e')]({'message':_0x6636('0x65')});}});}})[_0x6636('0x29')](respondWithResult(_0x24373a,null))[_0x6636('0x43')](handleError(_0x24373a,null));};exports[_0x6636('0x66')]=function(_0x23cc40,_0x757d81,_0x36f3c4){var _0x44be1f;return db['CmList'][_0x6636('0x48')]({'where':{'id':_0x23cc40[_0x6636('0x52')]['id']},'include':[{'model':db[_0x6636('0x67')],'as':_0x6636('0x68')}]})[_0x6636('0x29')](handleEntityNotFound(_0x757d81,null))[_0x6636('0x29')](function(_0x1386a0){if(_0x1386a0){_0x44be1f=_0x1386a0;return db[_0x6636('0x5c')][_0x6636('0x44')];}})['then'](function(_0x2d217e){if(_0x2d217e){var _0x486155={};var _0x487575={};_0x487575[_0x6636('0x31')]=_[_0x6636('0x69')](_['keys'](_0x2d217e),_[_0x6636('0x3d')](_0x44be1f[_0x6636('0x68')],function(_0x59a33b){return util[_0x6636('0x6a')]('cf_%d',_0x59a33b['id']);}));_0x487575[_0x6636('0x32')]=_[_0x6636('0x33')](_0x23cc40[_0x6636('0x32')]);_0x487575[_0x6636('0x34')]=_[_0x6636('0x35')](_0x487575['model'],_0x487575[_0x6636('0x32')]);_0x486155[_0x6636('0x36')]=_[_0x6636('0x35')](_0x487575[_0x6636('0x31')],qs[_0x6636('0x45')](_0x23cc40[_0x6636('0x32')][_0x6636('0x45')]));_0x486155[_0x6636('0x36')]=_0x486155[_0x6636('0x36')][_0x6636('0x46')]?_0x486155[_0x6636('0x36')]:_0x487575[_0x6636('0x31')];if(!_0x23cc40['query'][_0x6636('0x37')](_0x6636('0x57'))){_0x486155['limit']=qs['limit'](_0x23cc40[_0x6636('0x32')][_0x6636('0x21')]);_0x486155[_0x6636('0x1f')]=qs[_0x6636('0x1f')](_0x23cc40[_0x6636('0x32')][_0x6636('0x1f')]);}_0x486155[_0x6636('0x38')]=qs['sort'](_0x23cc40[_0x6636('0x32')]['sort']);_0x486155[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x23cc40[_0x6636('0x32')],_0x487575['filters']));_0x486155['raw']=!![];if(_0x23cc40[_0x6636('0x32')]['filter']){_0x486155[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x486155['where'],{'$or':_['map'](_0x486155[_0x6636('0x36')],function(_0x292887){var _0x18490f={};_0x18490f[_0x292887]={'$like':'%'+_0x23cc40[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x18490f;})});}_0x486155=_[_0x6636('0x3c')]({},_0x486155,_0x23cc40[_0x6636('0x58')]);return _0x44be1f[_0x6636('0x66')](_0x486155);}})[_0x6636('0x29')](respondWithResult(_0x757d81,null))[_0x6636('0x43')](handleError(_0x757d81,null));};exports[_0x6636('0x6b')]=function(_0x1b6809,_0x595970,_0x1c1c90){var _0x1fdde9;var _0x4d70a2;var _0x1e07e2;var _0x3e9a9d=_0x1b6809[_0x6636('0x52')]['id'];csv_results=[];return db['ContactItemType'][_0x6636('0x41')]({'attributes':['id','name'],'raw':!![],'order':[_0x6636('0x6c')]})[_0x6636('0x29')](function(_0x397805){_0x1fdde9=_0x397805;var _0x4a624f=_[_0x6636('0x33')](db[_0x6636('0x5c')][_0x6636('0x44')]);return db[_0x6636('0x67')][_0x6636('0x41')]({'raw':!![],'attributes':['id',_0x6636('0x6d')]})['then'](function(_0x181b22){_0x4d70a2=_0x181b22;var _0xd00011=squel[_0x6636('0x6e')]()[_0x6636('0x45')](_0x4a624f)['from'](_0x6636('0x6f'),'c')[_0x6636('0x3a')](_0x6636('0x70'),_0x3e9a9d)['where'](_0x6636('0x71'))[_0x6636('0x72')]();for(var _0x81232e=0x0;_0x81232e<_0x4d70a2[_0x6636('0x46')];_0x81232e++){_0xd00011['field']('c.cf_'+_0x4d70a2[_0x81232e]['id'],_0x6636('0x73')+_0x4d70a2[_0x81232e]['alias']);}for(var _0x81232e=0x0;_0x81232e<_0x1fdde9['length'];_0x81232e++){_0xd00011[_0x6636('0x74')](squel['select']()['field'](_0x6636('0x75'))[_0x6636('0x76')](_0x6636('0x77'))[_0x6636('0x3a')]('ItemTypeId\x20=\x20?',_0x1fdde9[_0x81232e]['id'])['where']('CmContactId\x20=\x20c.id'),_0x6636('0x78')+_0x1fdde9[_0x81232e][_0x6636('0x50')]);_0xd00011[_0x6636('0x74')](squel[_0x6636('0x6e')]()['field']('description')[_0x6636('0x76')](_0x6636('0x77'))['where'](_0x6636('0x79'),_0x1fdde9[_0x81232e]['id'])[_0x6636('0x3a')]('CmContactId\x20=\x20c.id'),_0x6636('0x7a')+_0x1fdde9[_0x81232e][_0x6636('0x50')]);}var _0x5ed383=[];_0x5ed383[_0x6636('0x60')](_0xd00011['toString']());BPromise[_0x6636('0x61')](_0x5ed383,handleQuery)['then'](function(_0x461966){handleQuery(_0xd00011[_0x6636('0x7b')]());var _0x861700=csv_results[0x0];if(!_['isEmpty'](_0x861700)){var _0x13ba6a=toCsv(_0x861700);var _0x1abe66=Date[_0x6636('0x7c')]();fs['writeFileSync'](util[_0x6636('0x6a')](_0x6636('0x7d'),_0x3e9a9d,_0x1abe66),_0x13ba6a);_0x595970[_0x6636('0x7e')]('Content-disposition','attachment;\x20filename='+util[_0x6636('0x6a')](_0x6636('0x7f'),_0x3e9a9d,_0x1abe66));_0x595970['setHeader']('Content-type',_0x6636('0x80'));return _0x595970[_0x6636('0x81')](util[_0x6636('0x6a')](_0x6636('0x7d'),_0x3e9a9d,_0x1abe66));}else{return _0x595970[_0x6636('0x1c')](0xcc);}});});});};exports[_0x6636('0x82')]=function(_0x127b8b,_0x1638cb,_0x5f5317){var _0x1ef4c9;delete _0x127b8b[_0x6636('0x4a')]['id'];return db[_0x6636('0x3f')][_0x6636('0x55')]({'where':{'id':_0x127b8b[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x1638cb,null))[_0x6636('0x29')](function(_0x4403e2){if(_0x4403e2){return db[_0x6636('0x83')][_0x6636('0x84')](function(_0x3a1491){return db['CmCustomField'][_0x6636('0x49')](_0x127b8b[_0x6636('0x4a')],{'transaction':_0x3a1491})[_0x6636('0x29')](function(_0x8895f0){_0x1ef4c9=_0x8895f0;return _0x4403e2[_0x6636('0x85')](_0x8895f0,{'transaction':_0x3a1491});})[_0x6636('0x29')](function(){var _0x4df87b={'type':db[_0x6636('0x86')][_0x6636('0x87')],'transaction':_0x3a1491};switch(_0x127b8b[_0x6636('0x4a')][_0x6636('0x2f')]){case _0x6636('0x88'):_0x4df87b[_0x6636('0x2f')]=db[_0x6636('0x86')][_0x6636('0x87')];break;case _0x6636('0x89'):_0x4df87b[_0x6636('0x2f')]=db[_0x6636('0x86')]['INTEGER'];break;case _0x6636('0x8a'):_0x4df87b[_0x6636('0x2f')]=db['Sequelize'][_0x6636('0x8b')];_0x4df87b[_0x6636('0x8c')]=![];break;default:}return db[_0x6636('0x83')][_0x6636('0x8d')][_0x6636('0x8e')](_0x6636('0x6f'),util[_0x6636('0x6a')]('cf_%s',_0x1ef4c9['id']),_0x4df87b);})[_0x6636('0x29')](function(){return _0x1ef4c9;});});}})[_0x6636('0x29')](respondWithResult(_0x1638cb,null))[_0x6636('0x43')](handleError(_0x1638cb,null));};exports[_0x6636('0x8f')]=function(_0x35b794,_0x4dc117,_0x7cca4c){var _0xc96e30={};var _0x4b2533={};var _0x36ea06;var _0x5045fd;return db['CmList'][_0x6636('0x55')]({'where':{'id':_0x35b794[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x4dc117,null))['then'](function(_0x33e68b){if(_0x33e68b){_0x36ea06=_0x33e68b;_0x4b2533[_0x6636('0x31')]=_['keys'](db[_0x6636('0x67')]['rawAttributes']);_0x4b2533[_0x6636('0x32')]=_[_0x6636('0x33')](_0x35b794[_0x6636('0x32')]);_0x4b2533[_0x6636('0x34')]=_[_0x6636('0x35')](_0x4b2533[_0x6636('0x31')],_0x4b2533[_0x6636('0x32')]);_0xc96e30[_0x6636('0x36')]=_[_0x6636('0x35')](_0x4b2533[_0x6636('0x31')],qs[_0x6636('0x45')](_0x35b794[_0x6636('0x32')][_0x6636('0x45')]));_0xc96e30['attributes']=_0xc96e30[_0x6636('0x36')]['length']?_0xc96e30[_0x6636('0x36')]:_0x4b2533[_0x6636('0x31')];_0xc96e30[_0x6636('0x38')]=qs[_0x6636('0x39')](_0x35b794[_0x6636('0x32')][_0x6636('0x39')]);_0xc96e30[_0x6636('0x3a')]=qs[_0x6636('0x34')](_[_0x6636('0x3b')](_0x35b794['query'],_0x4b2533['filters']));_0xc96e30[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0xc96e30[_0x6636('0x3a')],{'$or':[{'ListId':_0x33e68b['id']},{'ListId':null}]});if(_0x35b794[_0x6636('0x32')][_0x6636('0x3e')]){_0xc96e30[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0xc96e30['where'],{'$or':_['map'](_0xc96e30[_0x6636('0x36')],function(_0x2dae23){var _0x4175f4={};_0x4175f4[_0x2dae23]={'$like':'%'+_0x35b794[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x4175f4;})});}_0xc96e30=_[_0x6636('0x3c')]({},_0xc96e30,_0x35b794['options']);return db[_0x6636('0x67')][_0x6636('0x90')](_0xc96e30);}})[_0x6636('0x29')](respondWithResult(_0x4dc117,null))[_0x6636('0x43')](handleError(_0x4dc117,null));};exports[_0x6636('0x91')]=function(_0x1c83d1,_0x4d6b60){return db['CmCustomField'][_0x6636('0x90')]({'where':{'ListId':null}})[_0x6636('0x29')](handleEntityNotFound(_0x4d6b60,null))[_0x6636('0x29')](function(_0x70a4f2){return _0x70a4f2;})['then'](respondWithResult(_0x4d6b60,null))['catch'](handleError(_0x4d6b60,null));};exports[_0x6636('0x92')]=function(_0x478d71,_0x406804,_0x37e427){return db[_0x6636('0x3f')]['find']({'where':{'id':_0x478d71[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x406804,null))[_0x6636('0x29')](function(_0x31f114){if(_0x31f114){return _0x31f114[_0x6636('0x92')](_0x478d71[_0x6636('0x4a')][_0x6636('0x5a')],_[_0x6636('0x62')](_0x478d71[_0x6636('0x4a')],['ids','id'])||{})[_0x6636('0x93')](function(_0x9951b9){for(var _0x16539d=0x0;_0x16539d<_0x478d71[_0x6636('0x4a')][_0x6636('0x5a')]['length'];_0x16539d+=0x1){socket[_0x6636('0x94')](_0x6636('0x95'),{'UserId':Number(_0x478d71[_0x6636('0x4a')]['ids'][_0x16539d]),'CmListId':Number(_0x478d71['params']['id'])});}return _0x9951b9;});}})[_0x6636('0x29')](respondWithResult(_0x406804,null))[_0x6636('0x43')](handleError(_0x406804,null));};exports[_0x6636('0x96')]=function(_0x44e840,_0xec7140,_0x106e21){return db[_0x6636('0x3f')][_0x6636('0x48')]({'where':{'id':_0x44e840[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0xec7140,null))[_0x6636('0x29')](function(_0x1d161b){if(_0x1d161b){return _0x1d161b[_0x6636('0x96')](_0x44e840[_0x6636('0x32')][_0x6636('0x5a')])['then'](function(){if(_[_0x6636('0x5e')](_0x44e840[_0x6636('0x32')][_0x6636('0x5a')])){for(var _0xfbd938=0x0;_0xfbd938<_0x44e840[_0x6636('0x32')][_0x6636('0x5a')][_0x6636('0x46')];_0xfbd938+=0x1){socket[_0x6636('0x94')]('userCmList:remove',{'UserId':Number(_0x44e840['query']['ids'][_0xfbd938]),'CmListId':Number(_0x44e840[_0x6636('0x52')]['id'])});}}else{socket[_0x6636('0x94')]('userCmList:remove',{'UserId':Number(_0x44e840[_0x6636('0x32')]['ids']),'CmListId':Number(_0x44e840[_0x6636('0x52')]['id'])});}});}})[_0x6636('0x29')](respondWithStatusCode(_0xec7140,null))[_0x6636('0x43')](handleError(_0xec7140,null));};exports[_0x6636('0x97')]=function(_0x1e4560,_0x1c1abc,_0x5ef8e8){var _0x1f1bb5={};var _0x4dcc84={};var _0x1bacd4;var _0x197cd3;return db[_0x6636('0x3f')][_0x6636('0x55')]({'where':{'id':_0x1e4560[_0x6636('0x52')]['id']}})[_0x6636('0x29')](handleEntityNotFound(_0x1c1abc,null))[_0x6636('0x29')](function(_0x4f7430){if(_0x4f7430){_0x1bacd4=_0x4f7430;_0x4dcc84[_0x6636('0x31')]=_['keys'](db['User'][_0x6636('0x44')]);_0x4dcc84[_0x6636('0x32')]=_['keys'](_0x1e4560[_0x6636('0x32')]);_0x4dcc84['filters']=_[_0x6636('0x35')](_0x4dcc84['model'],_0x4dcc84[_0x6636('0x32')]);_0x1f1bb5['attributes']=_['intersection'](_0x4dcc84['model'],qs[_0x6636('0x45')](_0x1e4560[_0x6636('0x32')]['fields']));_0x1f1bb5['attributes']=_0x1f1bb5[_0x6636('0x36')][_0x6636('0x46')]?_0x1f1bb5[_0x6636('0x36')]:_0x4dcc84[_0x6636('0x31')];_0x1f1bb5['order']=qs['sort'](_0x1e4560[_0x6636('0x32')][_0x6636('0x39')]);_0x1f1bb5[_0x6636('0x3a')]=qs[_0x6636('0x34')](_['pick'](_0x1e4560['query'],_0x4dcc84['filters']));if(_0x1e4560['query'][_0x6636('0x3e')]){_0x1f1bb5[_0x6636('0x3a')]=_[_0x6636('0x3c')](_0x1f1bb5['where'],{'$or':_[_0x6636('0x3d')](_0x1f1bb5[_0x6636('0x36')],function(_0x356ea7){var _0x1bf563={};_0x1bf563[_0x356ea7]={'$like':'%'+_0x1e4560[_0x6636('0x32')][_0x6636('0x3e')]+'%'};return _0x1bf563;})});}_0x1f1bb5=_[_0x6636('0x3c')]({},_0x1f1bb5,_0x1e4560[_0x6636('0x58')]);return _0x1bacd4[_0x6636('0x97')](_0x1f1bb5);}})['then'](function(_0x2a0885){if(_0x2a0885){_0x197cd3=_0x2a0885[_0x6636('0x46')];if(!_0x1e4560[_0x6636('0x32')][_0x6636('0x37')](_0x6636('0x57'))){_0x1f1bb5[_0x6636('0x21')]=qs[_0x6636('0x21')](_0x1e4560['query'][_0x6636('0x21')]);_0x1f1bb5[_0x6636('0x1f')]=qs['offset'](_0x1e4560['query'][_0x6636('0x1f')]);}return _0x1bacd4[_0x6636('0x97')](_0x1f1bb5);}})[_0x6636('0x29')](function(_0x468d46){if(_0x468d46){return _0x468d46?{'count':_0x197cd3,'rows':_0x468d46}:null;}})[_0x6636('0x29')](respondWithResult(_0x1c1abc,null))[_0x6636('0x43')](handleError(_0x1c1abc,null));};function handleQuery(_0x354052){logger[_0x6636('0x98')](_0x354052);return db[_0x6636('0x83')]['query'](_0x354052)[_0x6636('0x93')](function(_0x57b39f){csv_results[_0x6636('0x60')](_0x57b39f);})[_0x6636('0x43')](function(_0x96de80){logger[_0x6636('0x2d')](_0x96de80[_0x6636('0x99')]);});}
\ No newline at end of file
index e81a97c..213f33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x55ca,0x126));var _0xa55c=function(_0x3a93b7,_0x658183){_0x3a93b7=_0x3a93b7-0x0;var _0x2ed891=_0x55ca[_0x3a93b7];return _0x2ed891;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x55ca,0x126));var _0xa55c=function(_0x31b2a5,_0x2480b4){_0x31b2a5=_0x31b2a5-0x0;var _0x198fa4=_0x55ca[_0x31b2a5];return _0x198fa4;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index c5faf21..fad05cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./cmList.attributes','define','cm_lists'];(function(_0x3d3db5,_0x5ecaff){var _0xe79e61=function(_0x29cf7b){while(--_0x29cf7b){_0x3d3db5['push'](_0x3d3db5['shift']());}};_0xe79e61(++_0x5ecaff);}(_0xac4a,0x13f));var _0xaac4=function(_0x27f748,_0xcad6b){_0x27f748=_0x27f748-0x0;var _0x47068b=_0xac4a[_0x27f748];return _0x47068b;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var logger=require(_0xaac4('0x2'))(_0xaac4('0x3'));var moment=require(_0xaac4('0x4'));var BPromise=require(_0xaac4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaac4('0x6'));var config=require(_0xaac4('0x7'));var attributes=require(_0xaac4('0x8'));module['exports']=function(_0x1283a5,_0x53d03a){return _0x1283a5[_0xaac4('0x9')]('CmList',attributes,{'tableName':_0xaac4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x91a7=['bluebird','path','./cmList.attributes','exports','CmList','cm_lists','util','../../config/logger','api'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0x91a7,0xe7));var _0x791a=function(_0x120da5,_0x35e37c){_0x120da5=_0x120da5-0x0;var _0x2564ab=_0x91a7[_0x120da5];return _0x2564ab;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var moment=require('moment');var BPromise=require(_0x791a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x791a('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x791a('0x5'));module[_0x791a('0x6')]=function(_0x49a9b7,_0x361f53){return _0x49a9b7['define'](_0x791a('0x7'),attributes,{'tableName':_0x791a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6671c20..e439b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd29e=['stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./cmList.socket','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s'];(function(_0x1d326a,_0x89b53){var _0x5804d5=function(_0x19376c){while(--_0x19376c){_0x1d326a['push'](_0x1d326a['shift']());}};_0x5804d5(++_0x89b53);}(_0xd29e,0xf6));var _0xed29=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd29e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xed29('0x0'));var util=require(_0xed29('0x1'));var moment=require(_0xed29('0x2'));var BPromise=require(_0xed29('0x3'));var rs=require(_0xed29('0x4'));var fs=require('fs');var Redis=require(_0xed29('0x5'));var db=require(_0xed29('0x6'))['db'];var utils=require(_0xed29('0x7'));var logger=require(_0xed29('0x8'))(_0xed29('0x9'));var config=require(_0xed29('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xed29('0xb')]['http']({'port':0x232a});config[_0xed29('0xc')]=_[_0xed29('0xd')](config['redis'],{'host':_0xed29('0xe'),'port':0x18eb});var socket=require(_0xed29('0xf'))(new Redis(config[_0xed29('0xc')]));require(_0xed29('0x10'))['register'](socket);function respondWithRpcPromise(_0xc0a3db,_0xfb379,_0xb5cce1){return new BPromise(function(_0x232cd4,_0x996a6a){return client[_0xed29('0x11')](_0xc0a3db,_0xb5cce1)[_0xed29('0x12')](function(_0x48a19e){logger[_0xed29('0x13')](_0xed29('0x14'),_0xfb379,_0xed29('0x15'));logger[_0xed29('0x16')](_0xed29('0x17'),_0xfb379,_0xed29('0x15'),JSON[_0xed29('0x18')](_0x48a19e));if(_0x48a19e['error']){if(_0x48a19e['error'][_0xed29('0x19')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0xfb379,_0x48a19e['error']['message']);return _0x996a6a(_0x48a19e[_0xed29('0x1a')][_0xed29('0x1b')]);}logger[_0xed29('0x1a')](_0xed29('0x14'),_0xfb379,_0x48a19e[_0xed29('0x1a')]['message']);return _0x232cd4(_0x48a19e[_0xed29('0x1a')][_0xed29('0x1b')]);}else{logger['info'](_0xed29('0x14'),_0xfb379,'request\x20sent');_0x232cd4(_0x48a19e[_0xed29('0x1c')]['message']);}})[_0xed29('0x1d')](function(_0x4e2520){logger['error'](_0xed29('0x14'),_0xfb379,_0x4e2520);_0x996a6a(_0x4e2520);});});}
\ No newline at end of file
+var _0xe241=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x2cc3a7,_0x2de76c){var _0x33128a=function(_0x2cce22){while(--_0x2cce22){_0x2cc3a7['push'](_0x2cc3a7['shift']());}};_0x33128a(++_0x2de76c);}(_0xe241,0x139));var _0x1e24=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xe241[_0x580647];return _0x5f0792;};'use strict';var _=require('lodash');var util=require(_0x1e24('0x0'));var moment=require('moment');var BPromise=require(_0x1e24('0x1'));var rs=require(_0x1e24('0x2'));var fs=require('fs');var Redis=require(_0x1e24('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1e24('0x4'));var logger=require(_0x1e24('0x5'))(_0x1e24('0x6'));var config=require(_0x1e24('0x7'));var jayson=require(_0x1e24('0x8'));var client=jayson[_0x1e24('0x9')][_0x1e24('0xa')]({'port':0x232a});config[_0x1e24('0xb')]=_[_0x1e24('0xc')](config[_0x1e24('0xb')],{'host':_0x1e24('0xd'),'port':0x18eb});var socket=require(_0x1e24('0xe'))(new Redis(config[_0x1e24('0xb')]));require('./cmList.socket')[_0x1e24('0xf')](socket);function respondWithRpcPromise(_0x31e8f2,_0x16ef73,_0x4933bd){return new BPromise(function(_0x5f3760,_0x4708f5){return client[_0x1e24('0x10')](_0x31e8f2,_0x4933bd)[_0x1e24('0x11')](function(_0xca873a){logger[_0x1e24('0x12')](_0x1e24('0x13'),_0x16ef73,'request\x20sent');logger[_0x1e24('0x14')](_0x1e24('0x15'),_0x16ef73,_0x1e24('0x16'),JSON[_0x1e24('0x17')](_0xca873a));if(_0xca873a[_0x1e24('0x18')]){if(_0xca873a[_0x1e24('0x18')][_0x1e24('0x19')]===0x1f4){logger[_0x1e24('0x18')]('CmList,\x20%s,\x20%s',_0x16ef73,_0xca873a['error']['message']);return _0x4708f5(_0xca873a[_0x1e24('0x18')][_0x1e24('0x1a')]);}logger[_0x1e24('0x18')](_0x1e24('0x13'),_0x16ef73,_0xca873a[_0x1e24('0x18')][_0x1e24('0x1a')]);return _0x5f3760(_0xca873a[_0x1e24('0x18')]['message']);}else{logger[_0x1e24('0x12')](_0x1e24('0x13'),_0x16ef73,_0x1e24('0x16'));_0x5f3760(_0xca873a[_0x1e24('0x1b')][_0x1e24('0x1a')]);}})[_0x1e24('0x1c')](function(_0x38001c){logger[_0x1e24('0x18')](_0x1e24('0x13'),_0x16ef73,_0x38001c);_0x4708f5(_0x38001c);});});}
\ No newline at end of file
index 9b09d95..e4db307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x907c=['register','length','./cmList.events','save','remove','emit','removeListener'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x907c,0xcd));var _0xc907=function(_0x2ed791,_0x1abc01){_0x2ed791=_0x2ed791-0x0;var _0x1a1990=_0x907c[_0x2ed791];return _0x1a1990;};'use strict';var CmListEvents=require(_0xc907('0x0'));var events=[_0xc907('0x1'),_0xc907('0x2'),'update'];function createListener(_0x5fcea7,_0x238c13){return function(_0x328699){_0x238c13[_0xc907('0x3')](_0x5fcea7,_0x328699);};}function removeListener(_0x25f1d1,_0x5b3b70){return function(){CmListEvents[_0xc907('0x4')](_0x25f1d1,_0x5b3b70);};}exports[_0xc907('0x5')]=function(_0x2fe885){for(var _0x21976c=0x0,_0x25f5c7=events[_0xc907('0x6')];_0x21976c<_0x25f5c7;_0x21976c++){var _0x18b1aa=events[_0x21976c];var _0x2f7057=createListener('cmList:'+_0x18b1aa,_0x2fe885);CmListEvents['on'](_0x18b1aa,_0x2f7057);}};
\ No newline at end of file
+var _0x66c7=['remove','emit','register','length','cmList:','./cmList.events','save'];(function(_0x7044d9,_0x5e6696){var _0x4bfd64=function(_0x15d46f){while(--_0x15d46f){_0x7044d9['push'](_0x7044d9['shift']());}};_0x4bfd64(++_0x5e6696);}(_0x66c7,0x15c));var _0x766c=function(_0x4532d0,_0x3853aa){_0x4532d0=_0x4532d0-0x0;var _0x3e52c1=_0x66c7[_0x4532d0];return _0x3e52c1;};'use strict';var CmListEvents=require(_0x766c('0x0'));var events=[_0x766c('0x1'),_0x766c('0x2'),'update'];function createListener(_0x507a68,_0x47351a){return function(_0x23b678){_0x47351a[_0x766c('0x3')](_0x507a68,_0x23b678);};}function removeListener(_0x1b2a8e,_0x2b4c75){return function(){CmListEvents['removeListener'](_0x1b2a8e,_0x2b4c75);};}exports[_0x766c('0x4')]=function(_0x80d91d){for(var _0x6f94c3=0x0,_0xb0b5f7=events[_0x766c('0x5')];_0x6f94c3<_0xb0b5f7;_0x6f94c3++){var _0x3c4683=events[_0x6f94c3];var _0x22a524=createListener(_0x766c('0x6')+_0x3c4683,_0x80d91d);CmListEvents['on'](_0x3c4683,_0x22a524);}};
\ No newline at end of file
index d6db815..d50424c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8a=['addContacts','addAgents','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cmList.controller','get','isAuthenticated','index','/describe','describe','/global_fields','/:id','show','/:id/dispositions','getDispositions','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','post','addDisposition','/:id/contacts'];(function(_0xbce261,_0x5bf87e){var _0x23848f=function(_0x582169){while(--_0x582169){_0xbce261['push'](_0xbce261['shift']());}};_0x23848f(++_0x5bf87e);}(_0xad8a,0xb0));var _0xaad8=function(_0x4ce721,_0x5f36fb){_0x4ce721=_0x4ce721-0x0;var _0x56ff30=_0xad8a[_0x4ce721];return _0x56ff30;};'use strict';var multer=require(_0xaad8('0x0'));var util=require(_0xaad8('0x1'));var path=require(_0xaad8('0x2'));var timeout=require(_0xaad8('0x3'));var express=require(_0xaad8('0x4'));var router=express['Router']();var fs_extra=require(_0xaad8('0x5'));var auth=require(_0xaad8('0x6'));var interaction=require(_0xaad8('0x7'));var config=require('../../config/environment');var controller=require(_0xaad8('0x8'));router[_0xaad8('0x9')]('/',auth[_0xaad8('0xa')](),controller[_0xaad8('0xb')]);router[_0xaad8('0x9')](_0xaad8('0xc'),auth[_0xaad8('0xa')](),controller[_0xaad8('0xd')]);router[_0xaad8('0x9')](_0xaad8('0xe'),auth['isAuthenticated'](),controller['getGlobalCustomFields']);router[_0xaad8('0x9')](_0xaad8('0xf'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x10')]);router[_0xaad8('0x9')](_0xaad8('0x11'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x12')]);router[_0xaad8('0x9')]('/:id/contacts',auth[_0xaad8('0xa')](),controller[_0xaad8('0x13')]);router[_0xaad8('0x9')](_0xaad8('0x14'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x15')]);router[_0xaad8('0x9')](_0xaad8('0x16'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x17')]);router[_0xaad8('0x9')](_0xaad8('0x18'),auth[_0xaad8('0xa')](),controller['getAgents']);router[_0xaad8('0x19')]('/',auth[_0xaad8('0xa')](),controller['create']);router[_0xaad8('0x19')](_0xaad8('0x11'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x1a')]);router[_0xaad8('0x19')](_0xaad8('0x1b'),auth['isAuthenticated'](),controller[_0xaad8('0x1c')]);router[_0xaad8('0x19')]('/:id/fields',auth[_0xaad8('0xa')](),controller['addCustomField']);router[_0xaad8('0x19')](_0xaad8('0x18'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x1d')]);router['put'](_0xaad8('0xf'),auth[_0xaad8('0xa')](),controller['update']);router[_0xaad8('0x1e')](_0xaad8('0xf'),auth[_0xaad8('0xa')](),controller['destroy']);router['delete'](_0xaad8('0x11'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x1f')]);router[_0xaad8('0x1e')](_0xaad8('0x18'),auth[_0xaad8('0xa')](),controller[_0xaad8('0x20')]);module[_0xaad8('0x21')]=router;
\ No newline at end of file
+var _0x9456=['delete','removeDispositions','removeAgents','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/users','getAgents','post','addDisposition','/:id/fields','addCustomField','put'];(function(_0x91f9fc,_0x20e464){var _0x577568=function(_0x21bf53){while(--_0x21bf53){_0x91f9fc['push'](_0x91f9fc['shift']());}};_0x577568(++_0x20e464);}(_0x9456,0x1f4));var _0x6945=function(_0x3bdd16,_0x36deb4){_0x3bdd16=_0x3bdd16-0x0;var _0x3f33b8=_0x9456[_0x3bdd16];return _0x3f33b8;};'use strict';var multer=require(_0x6945('0x0'));var util=require('util');var path=require(_0x6945('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6945('0x2')]();var fs_extra=require(_0x6945('0x3'));var auth=require(_0x6945('0x4'));var interaction=require(_0x6945('0x5'));var config=require(_0x6945('0x6'));var controller=require('./cmList.controller');router[_0x6945('0x7')]('/',auth[_0x6945('0x8')](),controller[_0x6945('0x9')]);router['get'](_0x6945('0xa'),auth[_0x6945('0x8')](),controller['describe']);router[_0x6945('0x7')](_0x6945('0xb'),auth[_0x6945('0x8')](),controller[_0x6945('0xc')]);router[_0x6945('0x7')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller[_0x6945('0xe')]);router[_0x6945('0x7')](_0x6945('0xf'),auth['isAuthenticated'](),controller[_0x6945('0x10')]);router[_0x6945('0x7')](_0x6945('0x11'),auth[_0x6945('0x8')](),controller[_0x6945('0x12')]);router['get']('/:id/contacts/csv',auth[_0x6945('0x8')](),controller[_0x6945('0x13')]);router[_0x6945('0x7')]('/:id/fields',auth['isAuthenticated'](),controller['getCustomFields']);router[_0x6945('0x7')](_0x6945('0x14'),auth['isAuthenticated'](),controller[_0x6945('0x15')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x6945('0x16')](_0x6945('0xf'),auth[_0x6945('0x8')](),controller[_0x6945('0x17')]);router[_0x6945('0x16')]('/:id/contacts',auth[_0x6945('0x8')](),controller['addContacts']);router[_0x6945('0x16')](_0x6945('0x18'),auth[_0x6945('0x8')](),controller[_0x6945('0x19')]);router[_0x6945('0x16')]('/:id/users',auth[_0x6945('0x8')](),controller['addAgents']);router[_0x6945('0x1a')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller['update']);router[_0x6945('0x1b')](_0x6945('0xd'),auth[_0x6945('0x8')](),controller['destroy']);router[_0x6945('0x1b')](_0x6945('0xf'),auth['isAuthenticated'](),controller[_0x6945('0x1c')]);router[_0x6945('0x1b')]('/:id/users',auth[_0x6945('0x8')](),controller[_0x6945('0x1d')]);module[_0x6945('0x1e')]=router;
\ No newline at end of file
index 1064b60..ec82a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9bf=['STRING','sequelize','VIRTUAL','getDataValue'];(function(_0x31d204,_0x40d6c0){var _0x14403e=function(_0x30220c){while(--_0x30220c){_0x31d204['push'](_0x31d204['shift']());}};_0x14403e(++_0x40d6c0);}(_0xa9bf,0x79));var _0xfa9b=function(_0x411069,_0x16ae05){_0x411069=_0x411069-0x0;var _0x68c645=_0xa9bf[_0x411069];return _0x68c645;};'use strict';var Sequelize=require(_0xfa9b('0x0'));module['exports']={'name':{'type':Sequelize[_0xfa9b('0x1')],'get':function(_0x48075b){return this[_0xfa9b('0x2')]('field');}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xfa9b('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xfa9b('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xd19b=['VIRTUAL','getDataValue','STRING','sequelize'];(function(_0x4a3594,_0x3c0838){var _0x46a22a=function(_0xeccd12){while(--_0xeccd12){_0x4a3594['push'](_0x4a3594['shift']());}};_0x46a22a(++_0x3c0838);}(_0xd19b,0x14f));var _0xbd19=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xd19b[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require(_0xbd19('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd19('0x1')],'get':function(_0x4d4d98){return this[_0xbd19('0x2')]('field');}},'field':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xbd19('0x3')],'allowNull':![]}};
\ No newline at end of file
index 1ddb832..d23032f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x555587,_0x2c0831){var _0x26204d=function(_0x5b6c4c){while(--_0x5b6c4c){_0x555587['push'](_0x555587['shift']());}};_0x26204d(++_0x2c0831);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x367c0e,_0x39b4c7){var _0x3315c4=function(_0x4568be){while(--_0x4568be){_0x367c0e['push'](_0x367c0e['shift']());}};_0x3315c4(++_0x39b4c7);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index 98868b3..cd7cd46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae90=['rimraf','./condition.attributes','exports','define','Condition','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4b69d3,_0x2fd167){var _0x13707e=function(_0x2043b5){while(--_0x2043b5){_0x4b69d3['push'](_0x4b69d3['shift']());}};_0x13707e(++_0x2fd167);}(_0xae90,0x1cd));var _0x0ae9=function(_0x3edcfa,_0x2a6685){_0x3edcfa=_0x3edcfa-0x0;var _0x5ae750=_0xae90[_0x3edcfa];return _0x5ae750;};'use strict';var _=require(_0x0ae9('0x0'));var util=require(_0x0ae9('0x1'));var logger=require(_0x0ae9('0x2'))(_0x0ae9('0x3'));var moment=require(_0x0ae9('0x4'));var BPromise=require(_0x0ae9('0x5'));var rp=require(_0x0ae9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0ae9('0x7'));var config=require('../../config/environment');var attributes=require(_0x0ae9('0x8'));module[_0x0ae9('0x9')]=function(_0x9b1476,_0x374c1a){return _0x9b1476[_0x0ae9('0xa')](_0x0ae9('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd3d=['api','moment','request-promise','path','rimraf','./condition.attributes','exports','define','Condition','../../config/logger'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xbd3d,0x1cb));var _0xdbd3=function(_0x6e4814,_0x1efa86){_0x6e4814=_0x6e4814-0x0;var _0x3a29c3=_0xbd3d[_0x6e4814];return _0x3a29c3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbd3('0x0'))(_0xdbd3('0x1'));var moment=require(_0xdbd3('0x2'));var BPromise=require('bluebird');var rp=require(_0xdbd3('0x3'));var fs=require('fs');var path=require(_0xdbd3('0x4'));var rimraf=require(_0xdbd3('0x5'));var config=require('../../config/environment');var attributes=require(_0xdbd3('0x6'));module[_0xdbd3('0x7')]=function(_0x551370,_0xa8836b){return _0x551370[_0xdbd3('0x8')](_0xdbd3('0x9'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f68387d..2143907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f22=['jayson/promise','http','request','info','Condition,\x20%s,\x20%s','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x25375a,_0x4c9233){var _0x57cc2d=function(_0x5897a5){while(--_0x5897a5){_0x25375a['push'](_0x25375a['shift']());}};_0x57cc2d(++_0x4c9233);}(_0x0f22,0x1ec));var _0x20f2=function(_0x1441b1,_0x4c5ea7){_0x1441b1=_0x1441b1-0x0;var _0x4e5ae1=_0x0f22[_0x1441b1];return _0x4e5ae1;};'use strict';var _=require('lodash');var util=require(_0x20f2('0x0'));var moment=require(_0x20f2('0x1'));var BPromise=require('bluebird');var rs=require(_0x20f2('0x2'));var fs=require('fs');var Redis=require(_0x20f2('0x3'));var db=require(_0x20f2('0x4'))['db'];var utils=require(_0x20f2('0x5'));var logger=require('../../config/logger')(_0x20f2('0x6'));var config=require(_0x20f2('0x7'));var jayson=require(_0x20f2('0x8'));var client=jayson['client'][_0x20f2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd1863c,_0x6053b3,_0x52aac2){return new BPromise(function(_0x344cbd,_0x31d252){return client[_0x20f2('0xa')](_0xd1863c,_0x52aac2)['then'](function(_0x2d2d3f){logger[_0x20f2('0xb')](_0x20f2('0xc'),_0x6053b3,'request\x20sent');logger['debug'](_0x20f2('0xd'),_0x6053b3,_0x20f2('0xe'),JSON[_0x20f2('0xf')](_0x2d2d3f));if(_0x2d2d3f['error']){if(_0x2d2d3f['error']['code']===0x1f4){logger[_0x20f2('0x10')]('Condition,\x20%s,\x20%s',_0x6053b3,_0x2d2d3f[_0x20f2('0x10')][_0x20f2('0x11')]);return _0x31d252(_0x2d2d3f[_0x20f2('0x10')]['message']);}logger[_0x20f2('0x10')]('Condition,\x20%s,\x20%s',_0x6053b3,_0x2d2d3f['error']['message']);return _0x344cbd(_0x2d2d3f[_0x20f2('0x10')][_0x20f2('0x11')]);}else{logger[_0x20f2('0xb')](_0x20f2('0xc'),_0x6053b3,_0x20f2('0xe'));_0x344cbd(_0x2d2d3f[_0x20f2('0x12')][_0x20f2('0x11')]);}})[_0x20f2('0x13')](function(_0x3b2d0c){logger['error']('Condition,\x20%s,\x20%s',_0x6053b3,_0x3b2d0c);_0x31d252(_0x3b2d0c);});});}
\ No newline at end of file
+var _0x4e10=['debug','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent'];(function(_0x148090,_0x4a82ea){var _0x3d2e30=function(_0x23e54d){while(--_0x23e54d){_0x148090['push'](_0x148090['shift']());}};_0x3d2e30(++_0x4a82ea);}(_0x4e10,0xec));var _0x04e1=function(_0x3603bb,_0xd514c3){_0x3603bb=_0x3603bb-0x0;var _0x5bffbb=_0x4e10[_0x3603bb];return _0x5bffbb;};'use strict';var _=require(_0x04e1('0x0'));var util=require('util');var moment=require(_0x04e1('0x1'));var BPromise=require(_0x04e1('0x2'));var rs=require(_0x04e1('0x3'));var fs=require('fs');var Redis=require(_0x04e1('0x4'));var db=require(_0x04e1('0x5'))['db'];var utils=require(_0x04e1('0x6'));var logger=require(_0x04e1('0x7'))(_0x04e1('0x8'));var config=require('../../config/environment');var jayson=require(_0x04e1('0x9'));var client=jayson[_0x04e1('0xa')][_0x04e1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42d595,_0x28b1e8,_0x18746a){return new BPromise(function(_0x4f48bb,_0x4618af){return client[_0x04e1('0xc')](_0x42d595,_0x18746a)[_0x04e1('0xd')](function(_0x5f4cfb){logger[_0x04e1('0xe')](_0x04e1('0xf'),_0x28b1e8,_0x04e1('0x10'));logger[_0x04e1('0x11')]('Condition,\x20%s,\x20%s,\x20%s',_0x28b1e8,'request\x20sent',JSON[_0x04e1('0x12')](_0x5f4cfb));if(_0x5f4cfb[_0x04e1('0x13')]){if(_0x5f4cfb['error'][_0x04e1('0x14')]===0x1f4){logger[_0x04e1('0x13')](_0x04e1('0xf'),_0x28b1e8,_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);return _0x4618af(_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);}logger['error'](_0x04e1('0xf'),_0x28b1e8,_0x5f4cfb['error']['message']);return _0x4f48bb(_0x5f4cfb[_0x04e1('0x13')][_0x04e1('0x15')]);}else{logger[_0x04e1('0xe')](_0x04e1('0xf'),_0x28b1e8,_0x04e1('0x10'));_0x4f48bb(_0x5f4cfb[_0x04e1('0x16')][_0x04e1('0x15')]);}})['catch'](function(_0x21c13c){logger[_0x04e1('0x13')](_0x04e1('0xf'),_0x28b1e8,_0x21c13c);_0x4618af(_0x21c13c);});});}
\ No newline at end of file
index ad20c0d..2861b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1885=['connect-timeout','Router','fs-extra','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x1885,0x1bf));var _0x5188=function(_0x59a140,_0x4b3fd8){_0x59a140=_0x59a140-0x0;var _0x5a0011=_0x1885[_0x59a140];return _0x5a0011;};'use strict';var multer=require(_0x5188('0x0'));var util=require(_0x5188('0x1'));var path=require(_0x5188('0x2'));var timeout=require(_0x5188('0x3'));var express=require('express');var router=express[_0x5188('0x4')]();var fs_extra=require(_0x5188('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5188('0x6'));var controller=require(_0x5188('0x7'));router[_0x5188('0x8')](_0x5188('0x9'),auth[_0x5188('0xa')](),controller[_0x5188('0xb')]);router[_0x5188('0xc')]('/:id',auth[_0x5188('0xa')](),controller[_0x5188('0xd')]);module[_0x5188('0xe')]=router;
\ No newline at end of file
+var _0xda17=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','delete','exports'];(function(_0x3eee78,_0x5acc63){var _0x53a5e5=function(_0x472fb6){while(--_0x472fb6){_0x3eee78['push'](_0x3eee78['shift']());}};_0x53a5e5(++_0x5acc63);}(_0xda17,0x1ef));var _0x7da1=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xda17[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0x7da1('0x0'));var util=require(_0x7da1('0x1'));var path=require(_0x7da1('0x2'));var timeout=require(_0x7da1('0x3'));var express=require(_0x7da1('0x4'));var router=express[_0x7da1('0x5')]();var fs_extra=require(_0x7da1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7da1('0x7'));var config=require(_0x7da1('0x8'));var controller=require(_0x7da1('0x9'));router[_0x7da1('0xa')](_0x7da1('0xb'),auth[_0x7da1('0xc')](),controller['update']);router[_0x7da1('0xd')](_0x7da1('0xb'),auth[_0x7da1('0xc')](),controller['destroy']);module[_0x7da1('0xe')]=router;
\ No newline at end of file
index ccf124d..440df41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe022=['sequelize','exports','STRING'];(function(_0x110ee6,_0x2c9085){var _0x5abd5c=function(_0x2dbcda){while(--_0x2dbcda){_0x110ee6['push'](_0x110ee6['shift']());}};_0x5abd5c(++_0x2c9085);}(_0xe022,0xf9));var _0x2e02=function(_0x10db3d,_0x571526){_0x10db3d=_0x10db3d-0x0;var _0x1059d2=_0xe022[_0x10db3d];return _0x1059d2;};'use strict';var Sequelize=require(_0x2e02('0x0'));module[_0x2e02('0x1')]={'name':{'type':Sequelize[_0x2e02('0x2')],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x2e02('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xc5f1=['STRING','name','sequelize','exports'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xc5f1,0x16a));var _0x1c5f=function(_0x20c1bc,_0x34c07d){_0x20c1bc=_0x20c1bc-0x0;var _0x4ff2fc=_0xc5f1[_0x20c1bc];return _0x4ff2fc;};'use strict';var Sequelize=require(_0x1c5f('0x0'));module[_0x1c5f('0x1')]={'name':{'type':Sequelize[_0x1c5f('0x2')],'allowNull':![],'unique':_0x1c5f('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x1c5f('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 47e1066..0081c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['map','ContactItemType','rawAttributes','fieldName','key','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','findAll','catch','params','keys','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContactHasItem','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name'];(function(_0x11349b,_0x31d12b){var _0x309d22=function(_0x22d77b){while(--_0x22d77b){_0x11349b['push'](_0x11349b['shift']());}};_0x309d22(++_0x31d12b);}(_0x66fa,0x117));var _0xa66f=function(_0x408b69,_0x376805){_0x408b69=_0x408b69-0x0;var _0x7be188=_0x66fa[_0x408b69];return _0x7be188;};'use strict';var emlformat=require(_0xa66f('0x0'));var rimraf=require(_0xa66f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa66f('0x2'));var rp=require(_0xa66f('0x3'));var moment=require(_0xa66f('0x4'));var BPromise=require(_0xa66f('0x5'));var Mustache=require(_0xa66f('0x6'));var util=require(_0xa66f('0x7'));var path=require(_0xa66f('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa66f('0x9'));var fs=require('fs');var fs_extra=require(_0xa66f('0xa'));var _=require(_0xa66f('0xb'));var squel=require(_0xa66f('0xc'));var crypto=require(_0xa66f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa66f('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa66f('0xf'));var Papa=require('papaparse');var Redis=require(_0xa66f('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa66f('0x11'));var logger=require(_0xa66f('0x12'))('api');var utils=require(_0xa66f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa66f('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x251189,_0x14af70){_0x14af70=_0x14af70||0xcc;return function(_0xca12f8){if(_0xca12f8){return _0x251189['sendStatus'](_0x14af70);}return _0x251189['status'](_0x14af70)[_0xa66f('0x15')]();};}function respondWithResult(_0x4e09cf,_0x528427){_0x528427=_0x528427||0xc8;return function(_0x5a7b16){if(_0x5a7b16){return _0x4e09cf[_0xa66f('0x16')](_0x528427)[_0xa66f('0x17')](_0x5a7b16);}};}function respondWithFilteredResult(_0x267129,_0x236d64){return function(_0xd348f9){if(_0xd348f9){var _0x567d4f=typeof _0x236d64['offset']===_0xa66f('0x18')&&typeof _0x236d64[_0xa66f('0x19')]===_0xa66f('0x18');var _0x403f4d=_0xd348f9['count'];var _0x1cbe64=_0x567d4f?0x0:_0x236d64['offset'];var _0x4a28d4=_0x567d4f?_0xd348f9[_0xa66f('0x1a')]:_0x236d64[_0xa66f('0x1b')]+_0x236d64[_0xa66f('0x19')];var _0x355ddc;if(_0x4a28d4>=_0x403f4d){_0x4a28d4=_0x403f4d;_0x355ddc=0xc8;}else{_0x355ddc=0xce;}_0x267129[_0xa66f('0x16')](_0x355ddc);return _0x267129[_0xa66f('0x1c')](_0xa66f('0x1d'),_0x1cbe64+'-'+_0x4a28d4+'/'+_0x403f4d)[_0xa66f('0x17')](_0xd348f9);}return null;};}function patchUpdates(_0x2033a4){return function(_0x2d9602){try{jsonpatch[_0xa66f('0x1e')](_0x2d9602,_0x2033a4,!![]);}catch(_0xbba376){return BPromise[_0xa66f('0x1f')](_0xbba376);}return _0x2d9602[_0xa66f('0x20')]();};}function saveUpdates(_0x82924d,_0x5cd613){return function(_0x27f570){if(_0x27f570){return _0x27f570[_0xa66f('0x21')](_0x82924d)[_0xa66f('0x22')](function(_0x37ee13){return _0x37ee13;});}return null;};}function removeEntity(_0x5cbd82,_0x337602){return function(_0x473822){if(_0x473822){return _0x473822[_0xa66f('0x23')]()[_0xa66f('0x22')](function(){var _0x502e21=_0x473822['get']({'plain':!![]});var _0xed98b9='ContactItemTypes';return db[_0xa66f('0x24')][_0xa66f('0x23')]({'where':{'type':_0xed98b9,'resourceId':_0x502e21['id']}})[_0xa66f('0x22')](function(){return _0x473822;});})['then'](function(){_0x5cbd82[_0xa66f('0x16')](0xcc)[_0xa66f('0x15')]();});}};}function handleEntityNotFound(_0x13495f,_0x238eb2){return function(_0x17c103){if(!_0x17c103){_0x13495f[_0xa66f('0x25')](0x194);}return _0x17c103;};}function handleError(_0x1eb86a,_0xea2c89){_0xea2c89=_0xea2c89||0x1f4;return function(_0x20ee67){logger[_0xa66f('0x26')](_0x20ee67[_0xa66f('0x27')]);if(_0x20ee67[_0xa66f('0x28')]){delete _0x20ee67[_0xa66f('0x28')];}_0x1eb86a[_0xa66f('0x16')](_0xea2c89)['send'](_0x20ee67);};}exports['index']=function(_0x38daac,_0x27ceae){var _0x55f309={},_0x44c79a={},_0x2de5f3={'count':0x0,'rows':[]};var _0x4cd7f2=_[_0xa66f('0x29')](db[_0xa66f('0x2a')][_0xa66f('0x2b')],function(_0x2c2ace){return{'name':_0x2c2ace[_0xa66f('0x2c')],'type':_0x2c2ace['type'][_0xa66f('0x2d')]};});_0x44c79a['model']=_[_0xa66f('0x29')](_0x4cd7f2,_0xa66f('0x28'));_0x44c79a[_0xa66f('0x2e')]=_['keys'](_0x38daac[_0xa66f('0x2e')]);_0x44c79a[_0xa66f('0x2f')]=_['intersection'](_0x44c79a[_0xa66f('0x30')],_0x44c79a[_0xa66f('0x2e')]);_0x55f309[_0xa66f('0x31')]=_[_0xa66f('0x32')](_0x44c79a[_0xa66f('0x30')],qs[_0xa66f('0x33')](_0x38daac[_0xa66f('0x2e')][_0xa66f('0x33')]));_0x55f309[_0xa66f('0x31')]=_0x55f309[_0xa66f('0x31')]['length']?_0x55f309[_0xa66f('0x31')]:_0x44c79a['model'];if(!_0x38daac[_0xa66f('0x2e')][_0xa66f('0x34')](_0xa66f('0x35'))){_0x55f309[_0xa66f('0x19')]=qs[_0xa66f('0x19')](_0x38daac[_0xa66f('0x2e')][_0xa66f('0x19')]);_0x55f309[_0xa66f('0x1b')]=qs['offset'](_0x38daac[_0xa66f('0x2e')]['offset']);}_0x55f309[_0xa66f('0x36')]=qs[_0xa66f('0x37')](_0x38daac[_0xa66f('0x2e')]['sort']);_0x55f309['where']=qs[_0xa66f('0x2f')](_[_0xa66f('0x38')](_0x38daac[_0xa66f('0x2e')],_0x44c79a[_0xa66f('0x2f')]),_0x4cd7f2);if(_0x38daac[_0xa66f('0x2e')]['filter']){_0x55f309['where']=_['merge'](_0x55f309[_0xa66f('0x39')],{'$or':_['map'](_0x4cd7f2,function(_0x4d2d27){if(_0x4d2d27['type']!==_0xa66f('0x3a')){var _0x5051b2={};_0x5051b2[_0x4d2d27[_0xa66f('0x28')]]={'$like':'%'+_0x38daac[_0xa66f('0x2e')][_0xa66f('0x3b')]+'%'};return _0x5051b2;}})});}_0x55f309=_[_0xa66f('0x3c')]({},_0x55f309,_0x38daac[_0xa66f('0x3d')]);var _0x360e61={'where':_0x55f309[_0xa66f('0x39')]};return db[_0xa66f('0x2a')][_0xa66f('0x1a')](_0x360e61)[_0xa66f('0x22')](function(_0x3a7929){_0x2de5f3[_0xa66f('0x1a')]=_0x3a7929;if(_0x38daac[_0xa66f('0x2e')][_0xa66f('0x3e')]){_0x55f309['include']=[{'all':!![]}];}return db[_0xa66f('0x2a')][_0xa66f('0x3f')](_0x55f309);})['then'](function(_0x248587){_0x2de5f3['rows']=_0x248587;return _0x2de5f3;})[_0xa66f('0x22')](respondWithFilteredResult(_0x27ceae,_0x55f309))[_0xa66f('0x40')](handleError(_0x27ceae,null));};exports['show']=function(_0x1ddd2f,_0xa42041){var _0x2126e8={'raw':!![],'where':{'id':_0x1ddd2f[_0xa66f('0x41')]['id']}},_0x5276ea={};_0x5276ea['model']=_[_0xa66f('0x42')](db[_0xa66f('0x2a')][_0xa66f('0x2b')]);_0x5276ea[_0xa66f('0x2e')]=_[_0xa66f('0x42')](_0x1ddd2f[_0xa66f('0x2e')]);_0x5276ea[_0xa66f('0x2f')]=_['intersection'](_0x5276ea[_0xa66f('0x30')],_0x5276ea[_0xa66f('0x2e')]);_0x2126e8[_0xa66f('0x31')]=_[_0xa66f('0x32')](_0x5276ea[_0xa66f('0x30')],qs['fields'](_0x1ddd2f['query'][_0xa66f('0x33')]));_0x2126e8[_0xa66f('0x31')]=_0x2126e8[_0xa66f('0x31')][_0xa66f('0x43')]?_0x2126e8[_0xa66f('0x31')]:_0x5276ea[_0xa66f('0x30')];if(_0x1ddd2f['query'][_0xa66f('0x3e')]){_0x2126e8[_0xa66f('0x44')]=[{'all':!![]}];}_0x2126e8=_[_0xa66f('0x3c')]({},_0x2126e8,_0x1ddd2f['options']);return db['ContactItemType'][_0xa66f('0x45')](_0x2126e8)[_0xa66f('0x22')](handleEntityNotFound(_0xa42041,null))[_0xa66f('0x22')](respondWithResult(_0xa42041,null))['catch'](handleError(_0xa42041,null));};exports['create']=function(_0x52054e,_0x19e7ce){return db[_0xa66f('0x2a')][_0xa66f('0x46')](_0x52054e[_0xa66f('0x47')],{})[_0xa66f('0x22')](function(_0x3edf84){var _0x164242=_0x52054e[_0xa66f('0x48')]['get']({'plain':!![]});if(!_0x164242)throw new Error(_0xa66f('0x49'));if(_0x164242[_0xa66f('0x4a')]===_0xa66f('0x48')){var _0x393755=_0x3edf84[_0xa66f('0x4b')]({'plain':!![]});var _0x33cdc7='ContactItemTypes';return db[_0xa66f('0x4c')][_0xa66f('0x45')]({'where':{'name':_0x33cdc7,'userProfileId':_0x164242[_0xa66f('0x4d')]},'raw':!![]})[_0xa66f('0x22')](function(_0x20d6be){if(_0x20d6be&&_0x20d6be['autoAssociation']===0x0){return db[_0xa66f('0x24')]['create']({'name':_0x393755[_0xa66f('0x28')],'resourceId':_0x393755['id'],'type':_0x20d6be['name'],'sectionId':_0x20d6be['id']},{})['then'](function(){return _0x3edf84;});}else{return _0x3edf84;}})[_0xa66f('0x40')](function(_0x31233b){logger[_0xa66f('0x26')](_0xa66f('0x4e'),_0x31233b);throw _0x31233b;});}return _0x3edf84;})[_0xa66f('0x22')](respondWithResult(_0x19e7ce,0xc9))[_0xa66f('0x40')](handleError(_0x19e7ce,null));};exports['update']=function(_0x30ea28,_0x13822b){if(_0x30ea28[_0xa66f('0x47')]['id']){delete _0x30ea28[_0xa66f('0x47')]['id'];}return db['ContactItemType'][_0xa66f('0x45')]({'where':{'id':_0x30ea28['params']['id']}})[_0xa66f('0x22')](handleEntityNotFound(_0x13822b,null))[_0xa66f('0x22')](saveUpdates(_0x30ea28[_0xa66f('0x47')],null))[_0xa66f('0x22')](respondWithResult(_0x13822b,null))[_0xa66f('0x40')](handleError(_0x13822b,null));};exports[_0xa66f('0x23')]=function(_0x44ea10,_0x56b860){return db[_0xa66f('0x2a')][_0xa66f('0x45')]({'where':{'id':_0x44ea10[_0xa66f('0x41')]['id']}})[_0xa66f('0x22')](handleEntityNotFound(_0x56b860,null))[_0xa66f('0x22')](db[_0xa66f('0x4f')][_0xa66f('0x21')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x44ea10[_0xa66f('0x41')]['id']}}))[_0xa66f('0x22')](removeEntity(_0x56b860,null))['catch'](handleError(_0x56b860,null));};
\ No newline at end of file
+var _0x955f=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','get','ContactItemTypes','UserProfileResource','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','find','create','user','catch'];(function(_0x5f08a6,_0x400121){var _0x5d0641=function(_0x304467){while(--_0x304467){_0x5f08a6['push'](_0x5f08a6['shift']());}};_0x5d0641(++_0x400121);}(_0x955f,0x1eb));var _0xf955=function(_0x6fd544,_0x46013d){_0x6fd544=_0x6fd544-0x0;var _0x3d4df9=_0x955f[_0x6fd544];return _0x3d4df9;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf955('0x12'));var logger=require('../../config/logger')(_0xf955('0x13'));var utils=require(_0xf955('0x14'));var config=require(_0xf955('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf955('0x16'))['db'];function respondWithStatusCode(_0x542347,_0x23e0c6){_0x23e0c6=_0x23e0c6||0xcc;return function(_0x50d9a9){if(_0x50d9a9){return _0x542347[_0xf955('0x17')](_0x23e0c6);}return _0x542347[_0xf955('0x18')](_0x23e0c6)[_0xf955('0x19')]();};}function respondWithResult(_0x109bc5,_0x2080c4){_0x2080c4=_0x2080c4||0xc8;return function(_0x341b8c){if(_0x341b8c){return _0x109bc5[_0xf955('0x18')](_0x2080c4)[_0xf955('0x1a')](_0x341b8c);}};}function respondWithFilteredResult(_0x3c6af7,_0x24e75c){return function(_0x5350e4){if(_0x5350e4){var _0xc29b35=typeof _0x24e75c['offset']===_0xf955('0x1b')&&typeof _0x24e75c[_0xf955('0x1c')]===_0xf955('0x1b');var _0x15c07c=_0x5350e4['count'];var _0x5ac6cb=_0xc29b35?0x0:_0x24e75c[_0xf955('0x1d')];var _0xe6de5c=_0xc29b35?_0x5350e4[_0xf955('0x1e')]:_0x24e75c['offset']+_0x24e75c[_0xf955('0x1c')];var _0x3576fa;if(_0xe6de5c>=_0x15c07c){_0xe6de5c=_0x15c07c;_0x3576fa=0xc8;}else{_0x3576fa=0xce;}_0x3c6af7[_0xf955('0x18')](_0x3576fa);return _0x3c6af7[_0xf955('0x1f')](_0xf955('0x20'),_0x5ac6cb+'-'+_0xe6de5c+'/'+_0x15c07c)['json'](_0x5350e4);}return null;};}function patchUpdates(_0x17d86a){return function(_0x3dbbe8){try{jsonpatch[_0xf955('0x21')](_0x3dbbe8,_0x17d86a,!![]);}catch(_0x488d04){return BPromise[_0xf955('0x22')](_0x488d04);}return _0x3dbbe8['save']();};}function saveUpdates(_0x21ae24,_0x43b078){return function(_0x37143d){if(_0x37143d){return _0x37143d[_0xf955('0x23')](_0x21ae24)[_0xf955('0x24')](function(_0x565641){return _0x565641;});}return null;};}function removeEntity(_0x25f4f2,_0x5fab1c){return function(_0x3585c7){if(_0x3585c7){return _0x3585c7[_0xf955('0x25')]()[_0xf955('0x24')](function(){var _0x102e36=_0x3585c7[_0xf955('0x26')]({'plain':!![]});var _0x552cf3=_0xf955('0x27');return db[_0xf955('0x28')][_0xf955('0x25')]({'where':{'type':_0x552cf3,'resourceId':_0x102e36['id']}})[_0xf955('0x24')](function(){return _0x3585c7;});})[_0xf955('0x24')](function(){_0x25f4f2[_0xf955('0x18')](0xcc)[_0xf955('0x19')]();});}};}function handleEntityNotFound(_0x51f3ab,_0x3caea6){return function(_0x145098){if(!_0x145098){_0x51f3ab[_0xf955('0x17')](0x194);}return _0x145098;};}function handleError(_0xbd0b74,_0x28fa9c){_0x28fa9c=_0x28fa9c||0x1f4;return function(_0x264f6d){logger['error'](_0x264f6d[_0xf955('0x29')]);if(_0x264f6d[_0xf955('0x2a')]){delete _0x264f6d['name'];}_0xbd0b74[_0xf955('0x18')](_0x28fa9c)[_0xf955('0x2b')](_0x264f6d);};}exports[_0xf955('0x2c')]=function(_0x1ef794,_0x59bfb5){var _0x3a951c={},_0x518fb3={},_0x227104={'count':0x0,'rows':[]};var _0x2c222a=_[_0xf955('0x2d')](db[_0xf955('0x2e')][_0xf955('0x2f')],function(_0x32121b){return{'name':_0x32121b[_0xf955('0x30')],'type':_0x32121b[_0xf955('0x31')]['key']};});_0x518fb3[_0xf955('0x32')]=_[_0xf955('0x2d')](_0x2c222a,_0xf955('0x2a'));_0x518fb3[_0xf955('0x33')]=_['keys'](_0x1ef794[_0xf955('0x33')]);_0x518fb3[_0xf955('0x34')]=_[_0xf955('0x35')](_0x518fb3[_0xf955('0x32')],_0x518fb3[_0xf955('0x33')]);_0x3a951c['attributes']=_['intersection'](_0x518fb3['model'],qs[_0xf955('0x36')](_0x1ef794[_0xf955('0x33')][_0xf955('0x36')]));_0x3a951c[_0xf955('0x37')]=_0x3a951c[_0xf955('0x37')][_0xf955('0x38')]?_0x3a951c['attributes']:_0x518fb3[_0xf955('0x32')];if(!_0x1ef794['query'][_0xf955('0x39')](_0xf955('0x3a'))){_0x3a951c[_0xf955('0x1c')]=qs['limit'](_0x1ef794[_0xf955('0x33')]['limit']);_0x3a951c[_0xf955('0x1d')]=qs[_0xf955('0x1d')](_0x1ef794[_0xf955('0x33')][_0xf955('0x1d')]);}_0x3a951c['order']=qs[_0xf955('0x3b')](_0x1ef794[_0xf955('0x33')]['sort']);_0x3a951c[_0xf955('0x3c')]=qs[_0xf955('0x34')](_[_0xf955('0x3d')](_0x1ef794['query'],_0x518fb3[_0xf955('0x34')]),_0x2c222a);if(_0x1ef794[_0xf955('0x33')][_0xf955('0x3e')]){_0x3a951c['where']=_[_0xf955('0x3f')](_0x3a951c[_0xf955('0x3c')],{'$or':_[_0xf955('0x2d')](_0x2c222a,function(_0x2069f3){if(_0x2069f3[_0xf955('0x31')]!==_0xf955('0x40')){var _0x2b614d={};_0x2b614d[_0x2069f3[_0xf955('0x2a')]]={'$like':'%'+_0x1ef794['query'][_0xf955('0x3e')]+'%'};return _0x2b614d;}})});}_0x3a951c=_[_0xf955('0x3f')]({},_0x3a951c,_0x1ef794[_0xf955('0x41')]);var _0xe633fa={'where':_0x3a951c[_0xf955('0x3c')]};return db[_0xf955('0x2e')][_0xf955('0x1e')](_0xe633fa)[_0xf955('0x24')](function(_0x47651b){_0x227104[_0xf955('0x1e')]=_0x47651b;if(_0x1ef794[_0xf955('0x33')][_0xf955('0x42')]){_0x3a951c[_0xf955('0x43')]=[{'all':!![]}];}return db[_0xf955('0x2e')][_0xf955('0x44')](_0x3a951c);})[_0xf955('0x24')](function(_0x356ec2){_0x227104[_0xf955('0x45')]=_0x356ec2;return _0x227104;})[_0xf955('0x24')](respondWithFilteredResult(_0x59bfb5,_0x3a951c))['catch'](handleError(_0x59bfb5,null));};exports[_0xf955('0x46')]=function(_0x25d809,_0x2db18d){var _0x5f0ef9={'raw':!![],'where':{'id':_0x25d809['params']['id']}},_0x16fc1a={};_0x16fc1a[_0xf955('0x32')]=_['keys'](db[_0xf955('0x2e')][_0xf955('0x2f')]);_0x16fc1a[_0xf955('0x33')]=_[_0xf955('0x47')](_0x25d809['query']);_0x16fc1a[_0xf955('0x34')]=_[_0xf955('0x35')](_0x16fc1a[_0xf955('0x32')],_0x16fc1a['query']);_0x5f0ef9['attributes']=_[_0xf955('0x35')](_0x16fc1a[_0xf955('0x32')],qs[_0xf955('0x36')](_0x25d809[_0xf955('0x33')]['fields']));_0x5f0ef9[_0xf955('0x37')]=_0x5f0ef9[_0xf955('0x37')][_0xf955('0x38')]?_0x5f0ef9['attributes']:_0x16fc1a[_0xf955('0x32')];if(_0x25d809['query'][_0xf955('0x42')]){_0x5f0ef9[_0xf955('0x43')]=[{'all':!![]}];}_0x5f0ef9=_[_0xf955('0x3f')]({},_0x5f0ef9,_0x25d809['options']);return db[_0xf955('0x2e')][_0xf955('0x48')](_0x5f0ef9)[_0xf955('0x24')](handleEntityNotFound(_0x2db18d,null))[_0xf955('0x24')](respondWithResult(_0x2db18d,null))['catch'](handleError(_0x2db18d,null));};exports[_0xf955('0x49')]=function(_0x4ff0f1,_0x1c6d76){return db[_0xf955('0x2e')][_0xf955('0x49')](_0x4ff0f1['body'],{})[_0xf955('0x24')](function(_0x4e7269){var _0x35c23c=_0x4ff0f1['user'][_0xf955('0x26')]({'plain':!![]});if(!_0x35c23c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35c23c['role']===_0xf955('0x4a')){var _0x45c7fe=_0x4e7269['get']({'plain':!![]});var _0x142e8f='ContactItemTypes';return db['UserProfileSection']['find']({'where':{'name':_0x142e8f,'userProfileId':_0x35c23c['userProfileId']},'raw':!![]})[_0xf955('0x24')](function(_0x1abe1c){if(_0x1abe1c&&_0x1abe1c['autoAssociation']===0x0){return db['UserProfileResource'][_0xf955('0x49')]({'name':_0x45c7fe[_0xf955('0x2a')],'resourceId':_0x45c7fe['id'],'type':_0x1abe1c[_0xf955('0x2a')],'sectionId':_0x1abe1c['id']},{})[_0xf955('0x24')](function(){return _0x4e7269;});}else{return _0x4e7269;}})[_0xf955('0x4b')](function(_0xa56483){logger[_0xf955('0x4c')](_0xf955('0x4d'),_0xa56483);throw _0xa56483;});}return _0x4e7269;})[_0xf955('0x24')](respondWithResult(_0x1c6d76,0xc9))[_0xf955('0x4b')](handleError(_0x1c6d76,null));};exports[_0xf955('0x23')]=function(_0x350873,_0x47a3a6){if(_0x350873[_0xf955('0x4e')]['id']){delete _0x350873[_0xf955('0x4e')]['id'];}return db[_0xf955('0x2e')][_0xf955('0x48')]({'where':{'id':_0x350873[_0xf955('0x4f')]['id']}})['then'](handleEntityNotFound(_0x47a3a6,null))[_0xf955('0x24')](saveUpdates(_0x350873[_0xf955('0x4e')],null))[_0xf955('0x24')](respondWithResult(_0x47a3a6,null))[_0xf955('0x4b')](handleError(_0x47a3a6,null));};exports[_0xf955('0x25')]=function(_0x9057df,_0x228d59){return db[_0xf955('0x2e')][_0xf955('0x48')]({'where':{'id':_0x9057df[_0xf955('0x4f')]['id']}})['then'](handleEntityNotFound(_0x228d59,null))[_0xf955('0x24')](db[_0xf955('0x50')][_0xf955('0x23')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x9057df[_0xf955('0x4f')]['id']}}))[_0xf955('0x24')](removeEntity(_0x228d59,null))[_0xf955('0x4b')](handleError(_0x228d59,null));};
\ No newline at end of file
index 77e8392..8abcd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf81=['rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x22735f,_0x12de83){var _0xf8bc90=function(_0x29136d){while(--_0x29136d){_0x22735f['push'](_0x22735f['shift']());}};_0xf8bc90(++_0x12de83);}(_0xbf81,0x1f1));var _0x1bf8=function(_0x1d6eb4,_0x2a20d7){_0x1d6eb4=_0x1d6eb4-0x0;var _0x1277f0=_0xbf81[_0x1d6eb4];return _0x1277f0;};'use strict';var _=require('lodash');var util=require(_0x1bf8('0x0'));var logger=require(_0x1bf8('0x1'))(_0x1bf8('0x2'));var moment=require(_0x1bf8('0x3'));var BPromise=require(_0x1bf8('0x4'));var rp=require(_0x1bf8('0x5'));var fs=require('fs');var path=require(_0x1bf8('0x6'));var rimraf=require(_0x1bf8('0x7'));var config=require(_0x1bf8('0x8'));var attributes=require(_0x1bf8('0x9'));module[_0x1bf8('0xa')]=function(_0x5387e0,_0x2a27fe){return _0x5387e0[_0x1bf8('0xb')](_0x1bf8('0xc'),attributes,{'tableName':_0x1bf8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x040c=['../../config/logger','api','moment','request-promise','path','../../config/environment','./contactItemType.attributes','exports','ContactItemType','tools_contact_item_types','lodash','util'];(function(_0x5cf3c0,_0x4363c1){var _0x39a680=function(_0x2a10f1){while(--_0x2a10f1){_0x5cf3c0['push'](_0x5cf3c0['shift']());}};_0x39a680(++_0x4363c1);}(_0x040c,0x1ba));var _0xc040=function(_0xfc3e0,_0x5c5f19){_0xfc3e0=_0xfc3e0-0x0;var _0x48294f=_0x040c[_0xfc3e0];return _0x48294f;};'use strict';var _=require(_0xc040('0x0'));var util=require(_0xc040('0x1'));var logger=require(_0xc040('0x2'))(_0xc040('0x3'));var moment=require(_0xc040('0x4'));var BPromise=require('bluebird');var rp=require(_0xc040('0x5'));var fs=require('fs');var path=require(_0xc040('0x6'));var rimraf=require('rimraf');var config=require(_0xc040('0x7'));var attributes=require(_0xc040('0x8'));module[_0xc040('0x9')]=function(_0x452a24,_0x15d673){return _0x452a24['define'](_0xc040('0xa'),attributes,{'tableName':_0xc040('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ed7ba3..c572103 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e97=['randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7e97,0xce));var _0x77e9=function(_0xd41de9,_0x279ce0){_0xd41de9=_0xd41de9-0x0;var _0x55d843=_0x7e97[_0xd41de9];return _0x55d843;};'use strict';var _=require('lodash');var util=require(_0x77e9('0x0'));var moment=require(_0x77e9('0x1'));var BPromise=require(_0x77e9('0x2'));var rs=require(_0x77e9('0x3'));var fs=require('fs');var Redis=require(_0x77e9('0x4'));var db=require(_0x77e9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x77e9('0x6'))('rpc');var config=require(_0x77e9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x77e9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbdd5ab,_0x1f274f,_0x188cdb){return new BPromise(function(_0x30b1fa,_0x2825a7){return client[_0x77e9('0x9')](_0xbdd5ab,_0x188cdb)[_0x77e9('0xa')](function(_0x54bb5d){logger[_0x77e9('0xb')](_0x77e9('0xc'),_0x1f274f,_0x77e9('0xd'));logger['debug'](_0x77e9('0xe'),_0x1f274f,'request\x20sent',JSON[_0x77e9('0xf')](_0x54bb5d));if(_0x54bb5d[_0x77e9('0x10')]){if(_0x54bb5d[_0x77e9('0x10')][_0x77e9('0x11')]===0x1f4){logger[_0x77e9('0x10')](_0x77e9('0xc'),_0x1f274f,_0x54bb5d['error']['message']);return _0x2825a7(_0x54bb5d[_0x77e9('0x10')]['message']);}logger['error'](_0x77e9('0xc'),_0x1f274f,_0x54bb5d[_0x77e9('0x10')][_0x77e9('0x12')]);return _0x30b1fa(_0x54bb5d[_0x77e9('0x10')][_0x77e9('0x12')]);}else{logger[_0x77e9('0xb')]('ContactItemType,\x20%s,\x20%s',_0x1f274f,'request\x20sent');_0x30b1fa(_0x54bb5d['result'][_0x77e9('0x12')]);}})['catch'](function(_0x151a08){logger[_0x77e9('0x10')](_0x77e9('0xc'),_0x1f274f,_0x151a08);_0x2825a7(_0x151a08);});});}
\ No newline at end of file
+var _0xc4b3=['ContactItemType,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1ea053,_0x5c7d15){var _0x4ecf96=function(_0x2f488a){while(--_0x2f488a){_0x1ea053['push'](_0x1ea053['shift']());}};_0x4ecf96(++_0x5c7d15);}(_0xc4b3,0x192));var _0x3c4b=function(_0x4462cc,_0x11cf30){_0x4462cc=_0x4462cc-0x0;var _0x529c29=_0xc4b3[_0x4462cc];return _0x529c29;};'use strict';var _=require(_0x3c4b('0x0'));var util=require(_0x3c4b('0x1'));var moment=require(_0x3c4b('0x2'));var BPromise=require(_0x3c4b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3c4b('0x4'));var db=require(_0x3c4b('0x5'))['db'];var utils=require(_0x3c4b('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x3c4b('0x7'));var jayson=require(_0x3c4b('0x8'));var client=jayson[_0x3c4b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4aa017,_0x533fe7,_0x2523aa){return new BPromise(function(_0x31ec29,_0x363745){return client[_0x3c4b('0xa')](_0x4aa017,_0x2523aa)[_0x3c4b('0xb')](function(_0x1b0238){logger[_0x3c4b('0xc')](_0x3c4b('0xd'),_0x533fe7,_0x3c4b('0xe'));logger[_0x3c4b('0xf')](_0x3c4b('0x10'),_0x533fe7,_0x3c4b('0xe'),JSON['stringify'](_0x1b0238));if(_0x1b0238['error']){if(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x12')]===0x1f4){logger[_0x3c4b('0x11')]('ContactItemType,\x20%s,\x20%s',_0x533fe7,_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);return _0x363745(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);}logger['error'](_0x3c4b('0xd'),_0x533fe7,_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);return _0x31ec29(_0x1b0238[_0x3c4b('0x11')][_0x3c4b('0x13')]);}else{logger[_0x3c4b('0xc')](_0x3c4b('0xd'),_0x533fe7,_0x3c4b('0xe'));_0x31ec29(_0x1b0238[_0x3c4b('0x14')]['message']);}})[_0x3c4b('0x15')](function(_0x393cde){logger[_0x3c4b('0x11')](_0x3c4b('0xd'),_0x533fe7,_0x393cde);_0x363745(_0x393cde);});});}
\ No newline at end of file
index c4160ac..8d01876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5782=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','index','/:id','isAuthenticated','post','create','update','delete','destroy','exports','multer','util'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x5782,0xd6));var _0x2578=function(_0x52d231,_0x37bc71){_0x52d231=_0x52d231-0x0;var _0x550ac5=_0x5782[_0x52d231];return _0x550ac5;};'use strict';var multer=require(_0x2578('0x0'));var util=require(_0x2578('0x1'));var path=require(_0x2578('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2578('0x3')]();var fs_extra=require(_0x2578('0x4'));var auth=require(_0x2578('0x5'));var interaction=require(_0x2578('0x6'));var config=require(_0x2578('0x7'));var controller=require(_0x2578('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x2578('0x9')]);router['get'](_0x2578('0xa'),auth[_0x2578('0xb')](),controller['show']);router[_0x2578('0xc')]('/',auth[_0x2578('0xb')](),controller[_0x2578('0xd')]);router['put'](_0x2578('0xa'),auth['isAuthenticated'](),controller[_0x2578('0xe')]);router[_0x2578('0xf')]('/:id',auth[_0x2578('0xb')](),controller[_0x2578('0x10')]);module[_0x2578('0x11')]=router;
\ No newline at end of file
+var _0x3a0f=['destroy','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','/:id','show','create','put','update','delete'];(function(_0x22f82a,_0x36ea1d){var _0x3abd49=function(_0x37d935){while(--_0x37d935){_0x22f82a['push'](_0x22f82a['shift']());}};_0x3abd49(++_0x36ea1d);}(_0x3a0f,0x145));var _0xf3a0=function(_0x23facc,_0x370735){_0x23facc=_0x23facc-0x0;var _0x391243=_0x3a0f[_0x23facc];return _0x391243;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf3a0('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3a0('0x1')]();var fs_extra=require(_0xf3a0('0x2'));var auth=require(_0xf3a0('0x3'));var interaction=require(_0xf3a0('0x4'));var config=require(_0xf3a0('0x5'));var controller=require(_0xf3a0('0x6'));router[_0xf3a0('0x7')]('/',auth[_0xf3a0('0x8')](),controller['index']);router[_0xf3a0('0x7')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xa')]);router['post']('/',auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xb')]);router[_0xf3a0('0xc')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xd')]);router[_0xf3a0('0xe')](_0xf3a0('0x9'),auth['isAuthenticated'](),controller[_0xf3a0('0xf')]);module[_0xf3a0('0x10')]=router;
\ No newline at end of file
index b89b4ce..a4466fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x4b45cd,_0x3f0965){var _0x336764=function(_0x306f5d){while(--_0x306f5d){_0x4b45cd['push'](_0x4b45cd['shift']());}};_0x336764(++_0x3f0965);}(_0x757a,0xde));var _0xa757=function(_0x502608,_0x1d3303){_0x502608=_0x502608-0x0;var _0x12d024=_0x757a[_0x502608];return _0x12d024;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_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
index aac16dc..c35d465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3296=['include','catch','show','params','rawAttributes','find','create','body','user','role','userProfileId','autoAssociation','UserProfileResource','omit','updatedAt','createdAt','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','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','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','getItems','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','undefined','count','offset','limit','Content-Range','json','apply','update','then','destroy','get','CustomDashboards','end','error','stack','send','index','map','Dashboard','fieldName','type','key','name','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll'];(function(_0x9a3d48,_0x39ebeb){var _0x47f8b9=function(_0xbc3ec0){while(--_0xbc3ec0){_0x9a3d48['push'](_0x9a3d48['shift']());}};_0x47f8b9(++_0x39ebeb);}(_0x3296,0x1c5));var _0x6329=function(_0x417df0,_0x47917c){_0x417df0=_0x417df0-0x0;var _0x51048e=_0x3296[_0x417df0];return _0x51048e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6329('0x0'));var jsonpatch=require(_0x6329('0x1'));var rp=require(_0x6329('0x2'));var moment=require(_0x6329('0x3'));var BPromise=require(_0x6329('0x4'));var Mustache=require(_0x6329('0x5'));var util=require(_0x6329('0x6'));var path=require(_0x6329('0x7'));var sox=require(_0x6329('0x8'));var csv=require(_0x6329('0x9'));var ejs=require(_0x6329('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6329('0xb'));var squel=require(_0x6329('0xc'));var crypto=require(_0x6329('0xd'));var jsforce=require(_0x6329('0xe'));var deskjs=require(_0x6329('0xf'));var toCsv=require(_0x6329('0x9'));var querystring=require(_0x6329('0x10'));var Papa=require(_0x6329('0x11'));var Redis=require(_0x6329('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6329('0x13'));var as=require(_0x6329('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6329('0x15'))(_0x6329('0x16'));var utils=require(_0x6329('0x17'));var config=require(_0x6329('0x18'));var licenseUtil=require(_0x6329('0x19'));var db=require(_0x6329('0x1a'))['db'];config[_0x6329('0x1b')]=_[_0x6329('0x1c')](config[_0x6329('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x6329('0x1d'))(new Redis(config[_0x6329('0x1b')]));require('./dashboard.socket')[_0x6329('0x1e')](socket);function respondWithStatusCode(_0x279758,_0x383907){_0x383907=_0x383907||0xcc;return function(_0x30167b){if(_0x30167b){return _0x279758[_0x6329('0x1f')](_0x383907);}return _0x279758[_0x6329('0x20')](_0x383907)['end']();};}function respondWithResult(_0x231238,_0xdf0238){_0xdf0238=_0xdf0238||0xc8;return function(_0x4203db){if(_0x4203db){return _0x231238[_0x6329('0x20')](_0xdf0238)['json'](_0x4203db);}};}function respondWithFilteredResult(_0x490b77,_0x548bdd){return function(_0xfe0059){if(_0xfe0059){var _0x356942=typeof _0x548bdd['offset']===_0x6329('0x21')&&typeof _0x548bdd['limit']===_0x6329('0x21');var _0x206c8c=_0xfe0059[_0x6329('0x22')];var _0x383d11=_0x356942?0x0:_0x548bdd[_0x6329('0x23')];var _0x5d8048=_0x356942?_0xfe0059[_0x6329('0x22')]:_0x548bdd['offset']+_0x548bdd[_0x6329('0x24')];var _0x19e543;if(_0x5d8048>=_0x206c8c){_0x5d8048=_0x206c8c;_0x19e543=0xc8;}else{_0x19e543=0xce;}_0x490b77[_0x6329('0x20')](_0x19e543);return _0x490b77['set'](_0x6329('0x25'),_0x383d11+'-'+_0x5d8048+'/'+_0x206c8c)[_0x6329('0x26')](_0xfe0059);}return null;};}function patchUpdates(_0x32b5b8){return function(_0x206de5){try{jsonpatch[_0x6329('0x27')](_0x206de5,_0x32b5b8,!![]);}catch(_0x252029){return BPromise['reject'](_0x252029);}return _0x206de5['save']();};}function saveUpdates(_0x32c7ac,_0x1a790b){return function(_0x4670dd){if(_0x4670dd){return _0x4670dd[_0x6329('0x28')](_0x32c7ac)[_0x6329('0x29')](function(_0x32042a){return _0x32042a;});}return null;};}function removeEntity(_0x3728ab,_0xe8bf78){return function(_0x4e07ab){if(_0x4e07ab){return _0x4e07ab[_0x6329('0x2a')]()[_0x6329('0x29')](function(){var _0x25b115=_0x4e07ab[_0x6329('0x2b')]({'plain':!![]});var _0x4d71ba=_0x6329('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x4d71ba,'resourceId':_0x25b115['id']}})[_0x6329('0x29')](function(){return _0x4e07ab;});})['then'](function(){_0x3728ab[_0x6329('0x20')](0xcc)[_0x6329('0x2d')]();});}};}function handleEntityNotFound(_0x2ca230,_0x53063d){return function(_0x2332da){if(!_0x2332da){_0x2ca230[_0x6329('0x1f')](0x194);}return _0x2332da;};}function handleError(_0x2903b6,_0x1221bb){_0x1221bb=_0x1221bb||0x1f4;return function(_0x5eb0f6){logger[_0x6329('0x2e')](_0x5eb0f6[_0x6329('0x2f')]);if(_0x5eb0f6['name']){delete _0x5eb0f6['name'];}_0x2903b6[_0x6329('0x20')](_0x1221bb)[_0x6329('0x30')](_0x5eb0f6);};}exports[_0x6329('0x31')]=function(_0x34b90b,_0x28f08f){var _0x4deac8={},_0x4506aa={},_0x12f297={'count':0x0,'rows':[]};var _0x507202=_[_0x6329('0x32')](db[_0x6329('0x33')]['rawAttributes'],function(_0x2a9cf7){return{'name':_0x2a9cf7[_0x6329('0x34')],'type':_0x2a9cf7[_0x6329('0x35')][_0x6329('0x36')]};});_0x4506aa['model']=_[_0x6329('0x32')](_0x507202,_0x6329('0x37'));_0x4506aa[_0x6329('0x38')]=_[_0x6329('0x39')](_0x34b90b[_0x6329('0x38')]);_0x4506aa['filters']=_[_0x6329('0x3a')](_0x4506aa[_0x6329('0x3b')],_0x4506aa[_0x6329('0x38')]);_0x4deac8['attributes']=_[_0x6329('0x3a')](_0x4506aa[_0x6329('0x3b')],qs[_0x6329('0x3c')](_0x34b90b[_0x6329('0x38')]['fields']));_0x4deac8[_0x6329('0x3d')]=_0x4deac8[_0x6329('0x3d')][_0x6329('0x3e')]?_0x4deac8[_0x6329('0x3d')]:_0x4506aa[_0x6329('0x3b')];if(!_0x34b90b[_0x6329('0x38')][_0x6329('0x3f')](_0x6329('0x40'))){_0x4deac8[_0x6329('0x24')]=qs[_0x6329('0x24')](_0x34b90b[_0x6329('0x38')][_0x6329('0x24')]);_0x4deac8[_0x6329('0x23')]=qs[_0x6329('0x23')](_0x34b90b[_0x6329('0x38')][_0x6329('0x23')]);}_0x4deac8[_0x6329('0x41')]=qs[_0x6329('0x42')](_0x34b90b[_0x6329('0x38')][_0x6329('0x42')]);_0x4deac8[_0x6329('0x43')]=qs['filters'](_[_0x6329('0x44')](_0x34b90b[_0x6329('0x38')],_0x4506aa[_0x6329('0x45')]),_0x507202);if(_0x34b90b[_0x6329('0x38')][_0x6329('0x46')]){_0x4deac8[_0x6329('0x43')]=_[_0x6329('0x47')](_0x4deac8[_0x6329('0x43')],{'$or':_[_0x6329('0x32')](_0x507202,function(_0x274398){if(_0x274398['type']!==_0x6329('0x48')){var _0x467e49={};_0x467e49[_0x274398['name']]={'$like':'%'+_0x34b90b[_0x6329('0x38')][_0x6329('0x46')]+'%'};return _0x467e49;}})});}_0x4deac8=_[_0x6329('0x47')]({},_0x4deac8,_0x34b90b[_0x6329('0x49')]);var _0x2d39a9={'where':_0x4deac8[_0x6329('0x43')]};return db['Dashboard'][_0x6329('0x22')](_0x2d39a9)[_0x6329('0x29')](function(_0x37c449){_0x12f297['count']=_0x37c449;if(_0x34b90b[_0x6329('0x38')][_0x6329('0x4a')]){_0x4deac8[_0x6329('0x4b')]=[{'all':!![]}];}return db['Dashboard']['findAll'](_0x4deac8);})['then'](function(_0x319bf7){_0x12f297['rows']=_0x319bf7;return _0x12f297;})['then'](respondWithFilteredResult(_0x28f08f,_0x4deac8))[_0x6329('0x4c')](handleError(_0x28f08f,null));};exports[_0x6329('0x4d')]=function(_0x47cbed,_0x337e2e){var _0x39d950={'raw':![],'where':{'id':_0x47cbed[_0x6329('0x4e')]['id']}},_0x371d08={};_0x371d08['model']=_[_0x6329('0x39')](db[_0x6329('0x33')][_0x6329('0x4f')]);_0x371d08['query']=_[_0x6329('0x39')](_0x47cbed[_0x6329('0x38')]);_0x371d08[_0x6329('0x45')]=_[_0x6329('0x3a')](_0x371d08[_0x6329('0x3b')],_0x371d08[_0x6329('0x38')]);_0x39d950[_0x6329('0x3d')]=_[_0x6329('0x3a')](_0x371d08[_0x6329('0x3b')],qs[_0x6329('0x3c')](_0x47cbed['query'][_0x6329('0x3c')]));_0x39d950[_0x6329('0x3d')]=_0x39d950[_0x6329('0x3d')][_0x6329('0x3e')]?_0x39d950[_0x6329('0x3d')]:_0x371d08['model'];if(_0x47cbed['query'][_0x6329('0x4a')]){_0x39d950[_0x6329('0x4b')]=[{'all':!![]}];}_0x39d950=_[_0x6329('0x47')]({},_0x39d950,_0x47cbed['options']);return db[_0x6329('0x33')][_0x6329('0x50')](_0x39d950)[_0x6329('0x29')](handleEntityNotFound(_0x337e2e,null))[_0x6329('0x29')](respondWithResult(_0x337e2e,null))[_0x6329('0x4c')](handleError(_0x337e2e,null));};exports[_0x6329('0x51')]=function(_0x17c891,_0x289017){return db['Dashboard'][_0x6329('0x51')](_0x17c891[_0x6329('0x52')],{})[_0x6329('0x29')](function(_0x5d21b4){var _0xecf3f7=_0x17c891[_0x6329('0x53')]['get']({'plain':!![]});if(!_0xecf3f7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xecf3f7[_0x6329('0x54')]==='user'){var _0x576dea=_0x5d21b4[_0x6329('0x2b')]({'plain':!![]});var _0x310790=_0x6329('0x2c');return db['UserProfileSection'][_0x6329('0x50')]({'where':{'name':_0x310790,'userProfileId':_0xecf3f7[_0x6329('0x55')]},'raw':!![]})['then'](function(_0x283000){if(_0x283000&&_0x283000[_0x6329('0x56')]===0x0){return db[_0x6329('0x57')][_0x6329('0x51')]({'name':_0x576dea[_0x6329('0x37')],'resourceId':_0x576dea['id'],'type':_0x283000[_0x6329('0x37')],'sectionId':_0x283000['id']},{})[_0x6329('0x29')](function(){return _0x5d21b4;});}else{return _0x5d21b4;}})[_0x6329('0x4c')](function(_0x149b55){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x149b55);throw _0x149b55;});}return _0x5d21b4;})['then'](respondWithResult(_0x289017,0xc9))[_0x6329('0x4c')](handleError(_0x289017,null));};exports['clone']=function(_0x26ae1a,_0x4ad63d){var _0x580415={'where':{'id':_0x26ae1a[_0x6329('0x4e')]['id']}},_0x41c81e={};_0x41c81e[_0x6329('0x3b')]=_['keys'](db[_0x6329('0x33')][_0x6329('0x4f')]);_0x580415[_0x6329('0x3d')]=_['intersection'](_0x41c81e[_0x6329('0x3b')],qs[_0x6329('0x3c')](_0x26ae1a['query'][_0x6329('0x3c')]));_0x580415[_0x6329('0x3d')]=_0x580415[_0x6329('0x3d')]['length']?_0x580415[_0x6329('0x3d')]:_0x41c81e[_0x6329('0x3b')];if(_0x26ae1a['query'][_0x6329('0x4a')]){_0x580415[_0x6329('0x4b')]=[{'all':!![]}];}_0x580415=_[_0x6329('0x47')]({},_0x580415,_0x26ae1a['options']);return db[_0x6329('0x33')][_0x6329('0x50')](_0x580415)[_0x6329('0x29')](handleEntityNotFound(_0x4ad63d,null))['then'](function(_0x501647){if(_0x501647){var _0x10d606=_0x501647[_0x6329('0x2b')]({'plain':!![]});_0x10d606=qs[_0x6329('0x58')](_0x10d606,['id','createdAt',_0x6329('0x59')]);_0x26ae1a[_0x6329('0x52')]=_[_0x6329('0x58')](_0x26ae1a[_0x6329('0x52')],['id',_0x6329('0x5a'),_0x6329('0x59')]);return db[_0x6329('0x33')][_0x6329('0x51')](_[_0x6329('0x47')](_0x10d606,_0x26ae1a['body']),{'include':_0x26ae1a['query'][_0x6329('0x4a')]?[{'all':!![]}]:undefined})[_0x6329('0x29')](function(_0x2fb833){var _0x55e02c=_0x26ae1a['user'][_0x6329('0x2b')]({'plain':!![]});if(!_0x55e02c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55e02c['role']===_0x6329('0x53')){var _0x4b1d15=_0x2fb833[_0x6329('0x2b')]({'plain':!![]});var _0x3e922c=_0x6329('0x2c');return db[_0x6329('0x5b')][_0x6329('0x50')]({'where':{'name':_0x3e922c,'userProfileId':_0x55e02c[_0x6329('0x55')]},'raw':!![]})[_0x6329('0x29')](function(_0x4528e3){if(_0x4528e3&&_0x4528e3['autoAssociation']===0x0){return db[_0x6329('0x57')]['create']({'name':_0x4b1d15[_0x6329('0x37')],'resourceId':_0x4b1d15['id'],'type':_0x4528e3[_0x6329('0x37')],'sectionId':_0x4528e3['id']},{})[_0x6329('0x29')](function(){return _0x2fb833;});}else{return _0x2fb833;}})[_0x6329('0x4c')](function(_0x19a077){logger[_0x6329('0x2e')](_0x6329('0x5c'),_0x19a077);throw _0x19a077;});}return _0x2fb833;});}})[_0x6329('0x29')](respondWithResult(_0x4ad63d,0xc9))[_0x6329('0x4c')](handleError(_0x4ad63d,null));};exports[_0x6329('0x28')]=function(_0x43856f,_0x45d1b2){if(_0x43856f[_0x6329('0x52')]['id']){delete _0x43856f[_0x6329('0x52')]['id'];}return db[_0x6329('0x33')][_0x6329('0x50')]({'where':{'id':_0x43856f[_0x6329('0x4e')]['id']}})['then'](handleEntityNotFound(_0x45d1b2,null))[_0x6329('0x29')](saveUpdates(_0x43856f[_0x6329('0x52')],null))[_0x6329('0x29')](respondWithResult(_0x45d1b2,null))[_0x6329('0x4c')](handleError(_0x45d1b2,null));};exports['destroy']=function(_0x2a6d13,_0x1d4e86){return db[_0x6329('0x33')]['find']({'where':{'id':_0x2a6d13[_0x6329('0x4e')]['id']}})[_0x6329('0x29')](handleEntityNotFound(_0x1d4e86,null))[_0x6329('0x29')](removeEntity(_0x1d4e86,null))[_0x6329('0x4c')](handleError(_0x1d4e86,null));};function widgetAttributes(_0x15eab9){try{switch(_0x15eab9['type']){case'iframe':return[{'name':_0x6329('0x5d'),'value':_0x15eab9[_0x6329('0x5d')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9['attrs'][0x0][_0x6329('0x5f')]:undefined)||_0x6329('0x60')}];case _0x6329('0x61'):return[{'name':_0x6329('0x62'),'value':_0x15eab9[_0x6329('0x62')]||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9[_0x6329('0x5e')][0x0][_0x6329('0x5f')]:undefined)||''}];case _0x6329('0x63'):return[{'name':_0x6329('0x64'),'value':_0x15eab9[_0x6329('0x64')]||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9[_0x6329('0x5e')][0x0]['value']:undefined)||_0x6329('0x65')},{'name':_0x6329('0x66'),'value':_0x15eab9[_0x6329('0x66')]||(_0x15eab9['attrs']&&_0x15eab9['attrs'][0x1]?_0x15eab9[_0x6329('0x5e')][0x1][_0x6329('0x5f')]:undefined)||_0x6329('0x67')},{'name':_0x6329('0x68'),'value':_0x15eab9[_0x6329('0x68')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x2]?_0x15eab9[_0x6329('0x5e')][0x2][_0x6329('0x5f')]:undefined)||0xc}];case _0x6329('0x69'):return[{'name':'attrMetric','value':_0x15eab9[_0x6329('0x6a')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9['attrs'][0x0]['value']:undefined)||_0x6329('0x6b')},{'name':'attrVoiceQueues','value':_0x15eab9[_0x6329('0x6c')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x1]?_0x15eab9['attrs'][0x1][_0x6329('0x5f')]:undefined)||[]},{'name':_0x6329('0x68'),'value':_0x15eab9[_0x6329('0x68')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x2]?_0x15eab9[_0x6329('0x5e')][0x2]['value']:undefined)||0x14},{'name':_0x6329('0x6d'),'value':_0x15eab9[_0x6329('0x6d')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9['attrs'][0x3]?_0x15eab9[_0x6329('0x5e')][0x3][_0x6329('0x5f')]:undefined)||_0x6329('0x6e')},{'name':_0x6329('0x6f'),'value':_0x15eab9['attrEmailAccounts']||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x4]?_0x15eab9[_0x6329('0x5e')][0x4][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x70'),'value':_0x15eab9[_0x6329('0x70')]||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x5]?_0x15eab9[_0x6329('0x5e')][0x5][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x71'),'value':_0x15eab9[_0x6329('0x71')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x6]?_0x15eab9[_0x6329('0x5e')][0x6][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x72'),'value':_0x15eab9[_0x6329('0x72')]||(_0x15eab9['attrs']&&_0x15eab9['attrs'][0x7]?_0x15eab9['attrs'][0x7]['value']:undefined)||''},{'name':_0x6329('0x73'),'value':_0x15eab9[_0x6329('0x73')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x8]?_0x15eab9[_0x6329('0x5e')][0x8][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x74'),'value':_0x15eab9[_0x6329('0x74')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x9]?_0x15eab9[_0x6329('0x5e')][0x9][_0x6329('0x5f')]:undefined)||''}];case _0x6329('0x75'):case _0x6329('0x76'):return[{'name':_0x6329('0x77'),'value':_0x15eab9['attrSerie1']||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9[_0x6329('0x5e')][0x0]['value']:undefined)||_0x6329('0x6b')},{'name':_0x6329('0x78'),'value':_0x15eab9[_0x6329('0x78')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x1]?_0x15eab9['attrs'][0x1]['value']:undefined)||null},{'name':_0x6329('0x79'),'value':_0x15eab9[_0x6329('0x79')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x2]?_0x15eab9[_0x6329('0x5e')][0x2][_0x6329('0x5f')]:undefined)||null},{'name':_0x6329('0x6c'),'value':_0x15eab9[_0x6329('0x6c')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x3]?_0x15eab9['attrs'][0x3][_0x6329('0x5f')]:undefined)||[]},{'name':_0x6329('0x6d'),'value':_0x15eab9[_0x6329('0x6d')]||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x4]?_0x15eab9[_0x6329('0x5e')][0x4][_0x6329('0x5f')]:undefined)||'voice'},{'name':_0x6329('0x6f'),'value':_0x15eab9[_0x6329('0x6f')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x5]?_0x15eab9[_0x6329('0x5e')][0x5][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x70'),'value':_0x15eab9[_0x6329('0x70')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x6]?_0x15eab9['attrs'][0x6]['value']:undefined)||''},{'name':_0x6329('0x71'),'value':_0x15eab9['attrSmsAccounts']||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x7]?_0x15eab9[_0x6329('0x5e')][0x7][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x72'),'value':_0x15eab9[_0x6329('0x72')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x8]?_0x15eab9[_0x6329('0x5e')][0x8][_0x6329('0x5f')]:undefined)||''},{'name':_0x6329('0x73'),'value':_0x15eab9[_0x6329('0x73')]||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x9]?_0x15eab9[_0x6329('0x5e')][0x9][_0x6329('0x5f')]:undefined)||''},{'name':'attrChatWebsites','value':_0x15eab9[_0x6329('0x74')]||(_0x15eab9['attrs']&&_0x15eab9['attrs'][0xa]?_0x15eab9[_0x6329('0x5e')][0xa][_0x6329('0x5f')]:undefined)||''}];case _0x6329('0x7a'):return[{'name':'attrReport','type':_0x15eab9['reportType']||(_0x15eab9['attrs']&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9['attrs'][0x0][_0x6329('0x35')]:undefined)||null,'value':_0x15eab9[_0x6329('0x7b')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x0]?_0x15eab9['attrs'][0x0][_0x6329('0x5f')]:undefined)||null},{'name':_0x6329('0x7c'),'value':_0x15eab9[_0x6329('0x7c')]||(_0x15eab9[_0x6329('0x5e')]&&_0x15eab9[_0x6329('0x5e')][0x1]?_0x15eab9['attrs'][0x1][_0x6329('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x55fa84){logger[_0x6329('0x2e')](_0x6329('0x7d'),JSON[_0x6329('0x7e')](_0x55fa84));return[];}}exports[_0x6329('0x7f')]=function(_0xee4c76,_0x4dc5da,_0x2d0448){if(_0xee4c76[_0x6329('0x52')]['id']){delete _0xee4c76[_0x6329('0x52')]['id'];}return db[_0x6329('0x33')]['find']({'where':{'id':_0xee4c76[_0x6329('0x4e')]['id']}})[_0x6329('0x29')](handleEntityNotFound(_0x4dc5da,null))[_0x6329('0x29')](function(_0x1fd49a){if(_0x1fd49a){_0xee4c76[_0x6329('0x52')][_0x6329('0x80')]=_0x1fd49a['id'];_0xee4c76[_0x6329('0x52')][_0x6329('0x5e')]=widgetAttributes(_0xee4c76[_0x6329('0x52')]);return db[_0x6329('0x81')][_0x6329('0x51')](_0xee4c76[_0x6329('0x52')]);}})['then'](respondWithResult(_0x4dc5da,null))[_0x6329('0x4c')](handleError(_0x4dc5da,null));};exports['getItems']=function(_0x3a285d,_0x3c5f01,_0x21ef73){var _0x22f8a7={};var _0x148290={};var _0x14dbe0;var _0x17f510;return db[_0x6329('0x33')][_0x6329('0x82')]({'where':{'id':_0x3a285d[_0x6329('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c5f01,null))[_0x6329('0x29')](function(_0x3c247a){if(_0x3c247a){_0x14dbe0=_0x3c247a;_0x148290[_0x6329('0x3b')]=_[_0x6329('0x39')](db[_0x6329('0x81')][_0x6329('0x4f')]);_0x148290[_0x6329('0x38')]=_[_0x6329('0x39')](_0x3a285d[_0x6329('0x38')]);_0x148290['filters']=_['intersection'](_0x148290['model'],_0x148290[_0x6329('0x38')]);_0x22f8a7[_0x6329('0x3d')]=_[_0x6329('0x3a')](_0x148290[_0x6329('0x3b')],qs[_0x6329('0x3c')](_0x3a285d['query']['fields']));_0x22f8a7['attributes']=_0x22f8a7[_0x6329('0x3d')]['length']?_0x22f8a7[_0x6329('0x3d')]:_0x148290['model'];_0x22f8a7[_0x6329('0x41')]=qs[_0x6329('0x42')](_0x3a285d[_0x6329('0x38')][_0x6329('0x42')]);_0x22f8a7[_0x6329('0x43')]=qs[_0x6329('0x45')](_['pick'](_0x3a285d[_0x6329('0x38')],_0x148290[_0x6329('0x45')]));if(_0x3a285d[_0x6329('0x38')][_0x6329('0x46')]){_0x22f8a7['where']=_['merge'](_0x22f8a7[_0x6329('0x43')],{'$or':_[_0x6329('0x32')](_0x22f8a7[_0x6329('0x3d')],function(_0x57708a){var _0x12185d={};_0x12185d[_0x57708a]={'$like':'%'+_0x3a285d[_0x6329('0x38')][_0x6329('0x46')]+'%'};return _0x12185d;})});}_0x22f8a7=_[_0x6329('0x47')]({},_0x22f8a7,_0x3a285d[_0x6329('0x49')]);return _0x14dbe0[_0x6329('0x83')](_0x22f8a7);}})[_0x6329('0x29')](function(_0x578e2a){if(_0x578e2a){_0x17f510=_0x578e2a[_0x6329('0x3e')];if(!_0x3a285d[_0x6329('0x38')][_0x6329('0x3f')](_0x6329('0x40'))){_0x22f8a7[_0x6329('0x24')]=qs[_0x6329('0x24')](_0x3a285d[_0x6329('0x38')][_0x6329('0x24')]);_0x22f8a7['offset']=qs[_0x6329('0x23')](_0x3a285d['query']['offset']);}return _0x14dbe0[_0x6329('0x83')](_0x22f8a7);}})[_0x6329('0x29')](function(_0x4ea2ba){if(_0x4ea2ba){return _0x4ea2ba?{'count':_0x17f510,'rows':_0x4ea2ba}:null;}})[_0x6329('0x29')](respondWithResult(_0x3c5f01,null))[_0x6329('0x4c')](handleError(_0x3c5f01,null));};
\ No newline at end of file
+var _0xdfc7=['clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','attrSmsAccounts','web-report','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardItem','getItems','nolimit','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','then','destroy','get','error','stack','name','send','index','Dashboard','rawAttributes','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','CustomDashboards','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','updatedAt','createdAt','user','userProfileId','update','iframe','attrUrl','attrs','value','custom','attrPath'];(function(_0x30aa4d,_0x2b360f){var _0x16fc87=function(_0x5c8565){while(--_0x5c8565){_0x30aa4d['push'](_0x30aa4d['shift']());}};_0x16fc87(++_0x2b360f);}(_0xdfc7,0x9e));var _0x7dfc=function(_0x2d2e85,_0x22faa9){_0x2d2e85=_0x2d2e85-0x0;var _0x3e9f5e=_0xdfc7[_0x2d2e85];return _0x3e9f5e;};'use strict';var emlformat=require(_0x7dfc('0x0'));var rimraf=require(_0x7dfc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7dfc('0x2'));var rp=require(_0x7dfc('0x3'));var moment=require(_0x7dfc('0x4'));var BPromise=require(_0x7dfc('0x5'));var Mustache=require(_0x7dfc('0x6'));var util=require(_0x7dfc('0x7'));var path=require(_0x7dfc('0x8'));var sox=require(_0x7dfc('0x9'));var csv=require(_0x7dfc('0xa'));var ejs=require(_0x7dfc('0xb'));var fs=require('fs');var fs_extra=require(_0x7dfc('0xc'));var _=require(_0x7dfc('0xd'));var squel=require(_0x7dfc('0xe'));var crypto=require(_0x7dfc('0xf'));var jsforce=require(_0x7dfc('0x10'));var deskjs=require(_0x7dfc('0x11'));var toCsv=require(_0x7dfc('0xa'));var querystring=require(_0x7dfc('0x12'));var Papa=require('papaparse');var Redis=require(_0x7dfc('0x13'));var authService=require(_0x7dfc('0x14'));var qs=require(_0x7dfc('0x15'));var as=require(_0x7dfc('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7dfc('0x17'))('api');var utils=require(_0x7dfc('0x18'));var config=require(_0x7dfc('0x19'));var licenseUtil=require(_0x7dfc('0x1a'));var db=require(_0x7dfc('0x1b'))['db'];config[_0x7dfc('0x1c')]=_[_0x7dfc('0x1d')](config[_0x7dfc('0x1c')],{'host':_0x7dfc('0x1e'),'port':0x18eb});var socket=require(_0x7dfc('0x1f'))(new Redis(config[_0x7dfc('0x1c')]));require(_0x7dfc('0x20'))[_0x7dfc('0x21')](socket);function respondWithStatusCode(_0x285210,_0x3bf46d){_0x3bf46d=_0x3bf46d||0xcc;return function(_0xd4f139){if(_0xd4f139){return _0x285210[_0x7dfc('0x22')](_0x3bf46d);}return _0x285210[_0x7dfc('0x23')](_0x3bf46d)[_0x7dfc('0x24')]();};}function respondWithResult(_0x215565,_0x5baa6d){_0x5baa6d=_0x5baa6d||0xc8;return function(_0x7b3a2c){if(_0x7b3a2c){return _0x215565[_0x7dfc('0x23')](_0x5baa6d)[_0x7dfc('0x25')](_0x7b3a2c);}};}function respondWithFilteredResult(_0x18d109,_0x3329af){return function(_0x103bb7){if(_0x103bb7){var _0xc0d40a=typeof _0x3329af['offset']===_0x7dfc('0x26')&&typeof _0x3329af[_0x7dfc('0x27')]===_0x7dfc('0x26');var _0xb04db5=_0x103bb7[_0x7dfc('0x28')];var _0x58f2e2=_0xc0d40a?0x0:_0x3329af[_0x7dfc('0x29')];var _0x54ac2c=_0xc0d40a?_0x103bb7[_0x7dfc('0x28')]:_0x3329af[_0x7dfc('0x29')]+_0x3329af['limit'];var _0x57fe3c;if(_0x54ac2c>=_0xb04db5){_0x54ac2c=_0xb04db5;_0x57fe3c=0xc8;}else{_0x57fe3c=0xce;}_0x18d109[_0x7dfc('0x23')](_0x57fe3c);return _0x18d109[_0x7dfc('0x2a')]('Content-Range',_0x58f2e2+'-'+_0x54ac2c+'/'+_0xb04db5)['json'](_0x103bb7);}return null;};}function patchUpdates(_0x535c80){return function(_0xb47c7){try{jsonpatch[_0x7dfc('0x2b')](_0xb47c7,_0x535c80,!![]);}catch(_0x59b016){return BPromise['reject'](_0x59b016);}return _0xb47c7[_0x7dfc('0x2c')]();};}function saveUpdates(_0xc091c3,_0x54635d){return function(_0x2c70f0){if(_0x2c70f0){return _0x2c70f0['update'](_0xc091c3)[_0x7dfc('0x2d')](function(_0x200481){return _0x200481;});}return null;};}function removeEntity(_0x39081a,_0x458d53){return function(_0x1b4211){if(_0x1b4211){return _0x1b4211[_0x7dfc('0x2e')]()[_0x7dfc('0x2d')](function(){var _0x31d6a7=_0x1b4211[_0x7dfc('0x2f')]({'plain':!![]});var _0x779cd8='CustomDashboards';return db['UserProfileResource'][_0x7dfc('0x2e')]({'where':{'type':_0x779cd8,'resourceId':_0x31d6a7['id']}})[_0x7dfc('0x2d')](function(){return _0x1b4211;});})[_0x7dfc('0x2d')](function(){_0x39081a[_0x7dfc('0x23')](0xcc)[_0x7dfc('0x24')]();});}};}function handleEntityNotFound(_0x56bdf8,_0x4d446d){return function(_0x10adb8){if(!_0x10adb8){_0x56bdf8[_0x7dfc('0x22')](0x194);}return _0x10adb8;};}function handleError(_0x4b0473,_0x347cfa){_0x347cfa=_0x347cfa||0x1f4;return function(_0x25596c){logger[_0x7dfc('0x30')](_0x25596c[_0x7dfc('0x31')]);if(_0x25596c[_0x7dfc('0x32')]){delete _0x25596c['name'];}_0x4b0473['status'](_0x347cfa)[_0x7dfc('0x33')](_0x25596c);};}exports[_0x7dfc('0x34')]=function(_0x5783eb,_0x205742){var _0x8d0813={},_0x58082d={},_0x44af20={'count':0x0,'rows':[]};var _0x5de294=_['map'](db[_0x7dfc('0x35')][_0x7dfc('0x36')],function(_0x22595e){return{'name':_0x22595e['fieldName'],'type':_0x22595e[_0x7dfc('0x37')]['key']};});_0x58082d[_0x7dfc('0x38')]=_['map'](_0x5de294,_0x7dfc('0x32'));_0x58082d[_0x7dfc('0x39')]=_[_0x7dfc('0x3a')](_0x5783eb['query']);_0x58082d['filters']=_[_0x7dfc('0x3b')](_0x58082d[_0x7dfc('0x38')],_0x58082d[_0x7dfc('0x39')]);_0x8d0813['attributes']=_[_0x7dfc('0x3b')](_0x58082d[_0x7dfc('0x38')],qs[_0x7dfc('0x3c')](_0x5783eb[_0x7dfc('0x39')]['fields']));_0x8d0813[_0x7dfc('0x3d')]=_0x8d0813[_0x7dfc('0x3d')][_0x7dfc('0x3e')]?_0x8d0813[_0x7dfc('0x3d')]:_0x58082d[_0x7dfc('0x38')];if(!_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x3f')]('nolimit')){_0x8d0813[_0x7dfc('0x27')]=qs[_0x7dfc('0x27')](_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x27')]);_0x8d0813[_0x7dfc('0x29')]=qs[_0x7dfc('0x29')](_0x5783eb['query'][_0x7dfc('0x29')]);}_0x8d0813[_0x7dfc('0x40')]=qs[_0x7dfc('0x41')](_0x5783eb['query']['sort']);_0x8d0813[_0x7dfc('0x42')]=qs[_0x7dfc('0x43')](_[_0x7dfc('0x44')](_0x5783eb[_0x7dfc('0x39')],_0x58082d[_0x7dfc('0x43')]),_0x5de294);if(_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x45')]){_0x8d0813['where']=_[_0x7dfc('0x46')](_0x8d0813[_0x7dfc('0x42')],{'$or':_[_0x7dfc('0x47')](_0x5de294,function(_0x224f6b){if(_0x224f6b[_0x7dfc('0x37')]!==_0x7dfc('0x48')){var _0x1cac8d={};_0x1cac8d[_0x224f6b['name']]={'$like':'%'+_0x5783eb[_0x7dfc('0x39')]['filter']+'%'};return _0x1cac8d;}})});}_0x8d0813=_[_0x7dfc('0x46')]({},_0x8d0813,_0x5783eb[_0x7dfc('0x49')]);var _0x256f28={'where':_0x8d0813[_0x7dfc('0x42')]};return db['Dashboard'][_0x7dfc('0x28')](_0x256f28)['then'](function(_0x59531e){_0x44af20[_0x7dfc('0x28')]=_0x59531e;if(_0x5783eb[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x8d0813[_0x7dfc('0x4b')]=[{'all':!![]}];}return db[_0x7dfc('0x35')][_0x7dfc('0x4c')](_0x8d0813);})[_0x7dfc('0x2d')](function(_0x36b8da){_0x44af20[_0x7dfc('0x4d')]=_0x36b8da;return _0x44af20;})[_0x7dfc('0x2d')](respondWithFilteredResult(_0x205742,_0x8d0813))[_0x7dfc('0x4e')](handleError(_0x205742,null));};exports[_0x7dfc('0x4f')]=function(_0x32993,_0x347dd9){var _0x31ed8d={'raw':![],'where':{'id':_0x32993[_0x7dfc('0x50')]['id']}},_0x451514={};_0x451514['model']=_[_0x7dfc('0x3a')](db[_0x7dfc('0x35')][_0x7dfc('0x36')]);_0x451514['query']=_[_0x7dfc('0x3a')](_0x32993['query']);_0x451514[_0x7dfc('0x43')]=_[_0x7dfc('0x3b')](_0x451514['model'],_0x451514[_0x7dfc('0x39')]);_0x31ed8d[_0x7dfc('0x3d')]=_['intersection'](_0x451514[_0x7dfc('0x38')],qs[_0x7dfc('0x3c')](_0x32993['query'][_0x7dfc('0x3c')]));_0x31ed8d['attributes']=_0x31ed8d['attributes'][_0x7dfc('0x3e')]?_0x31ed8d[_0x7dfc('0x3d')]:_0x451514[_0x7dfc('0x38')];if(_0x32993[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x31ed8d[_0x7dfc('0x4b')]=[{'all':!![]}];}_0x31ed8d=_[_0x7dfc('0x46')]({},_0x31ed8d,_0x32993[_0x7dfc('0x49')]);return db[_0x7dfc('0x35')][_0x7dfc('0x51')](_0x31ed8d)[_0x7dfc('0x2d')](handleEntityNotFound(_0x347dd9,null))[_0x7dfc('0x2d')](respondWithResult(_0x347dd9,null))[_0x7dfc('0x4e')](handleError(_0x347dd9,null));};exports['create']=function(_0x15fb7c,_0x2b860d){return db[_0x7dfc('0x35')][_0x7dfc('0x52')](_0x15fb7c[_0x7dfc('0x53')],{})[_0x7dfc('0x2d')](function(_0x4ce247){var _0x2fd800=_0x15fb7c['user'][_0x7dfc('0x2f')]({'plain':!![]});if(!_0x2fd800)throw new Error(_0x7dfc('0x54'));if(_0x2fd800['role']==='user'){var _0x419400=_0x4ce247[_0x7dfc('0x2f')]({'plain':!![]});var _0xa7a8d=_0x7dfc('0x55');return db[_0x7dfc('0x56')][_0x7dfc('0x51')]({'where':{'name':_0xa7a8d,'userProfileId':_0x2fd800['userProfileId']},'raw':!![]})[_0x7dfc('0x2d')](function(_0x203fac){if(_0x203fac&&_0x203fac[_0x7dfc('0x57')]===0x0){return db[_0x7dfc('0x58')][_0x7dfc('0x52')]({'name':_0x419400[_0x7dfc('0x32')],'resourceId':_0x419400['id'],'type':_0x203fac[_0x7dfc('0x32')],'sectionId':_0x203fac['id']},{})[_0x7dfc('0x2d')](function(){return _0x4ce247;});}else{return _0x4ce247;}})[_0x7dfc('0x4e')](function(_0x43914c){logger[_0x7dfc('0x30')](_0x7dfc('0x59'),_0x43914c);throw _0x43914c;});}return _0x4ce247;})[_0x7dfc('0x2d')](respondWithResult(_0x2b860d,0xc9))[_0x7dfc('0x4e')](handleError(_0x2b860d,null));};exports[_0x7dfc('0x5a')]=function(_0x49477f,_0x3d787b){var _0x555fa0={'where':{'id':_0x49477f[_0x7dfc('0x50')]['id']}},_0x5cc9c5={};_0x5cc9c5['model']=_['keys'](db[_0x7dfc('0x35')][_0x7dfc('0x36')]);_0x555fa0[_0x7dfc('0x3d')]=_[_0x7dfc('0x3b')](_0x5cc9c5['model'],qs[_0x7dfc('0x3c')](_0x49477f['query'][_0x7dfc('0x3c')]));_0x555fa0[_0x7dfc('0x3d')]=_0x555fa0['attributes'][_0x7dfc('0x3e')]?_0x555fa0[_0x7dfc('0x3d')]:_0x5cc9c5['model'];if(_0x49477f[_0x7dfc('0x39')][_0x7dfc('0x4a')]){_0x555fa0[_0x7dfc('0x4b')]=[{'all':!![]}];}_0x555fa0=_[_0x7dfc('0x46')]({},_0x555fa0,_0x49477f['options']);return db['Dashboard'][_0x7dfc('0x51')](_0x555fa0)[_0x7dfc('0x2d')](handleEntityNotFound(_0x3d787b,null))[_0x7dfc('0x2d')](function(_0x2036b9){if(_0x2036b9){var _0x4a87f3=_0x2036b9[_0x7dfc('0x2f')]({'plain':!![]});_0x4a87f3=qs['omit'](_0x4a87f3,['id','createdAt',_0x7dfc('0x5b')]);_0x49477f[_0x7dfc('0x53')]=_['omit'](_0x49477f[_0x7dfc('0x53')],['id',_0x7dfc('0x5c'),'updatedAt']);return db['Dashboard'][_0x7dfc('0x52')](_[_0x7dfc('0x46')](_0x4a87f3,_0x49477f[_0x7dfc('0x53')]),{'include':_0x49477f[_0x7dfc('0x39')][_0x7dfc('0x4a')]?[{'all':!![]}]:undefined})[_0x7dfc('0x2d')](function(_0x321cc8){var _0x303dec=_0x49477f['user'][_0x7dfc('0x2f')]({'plain':!![]});if(!_0x303dec)throw new Error(_0x7dfc('0x54'));if(_0x303dec['role']===_0x7dfc('0x5d')){var _0x3e15e4=_0x321cc8[_0x7dfc('0x2f')]({'plain':!![]});var _0x5ab766=_0x7dfc('0x55');return db['UserProfileSection'][_0x7dfc('0x51')]({'where':{'name':_0x5ab766,'userProfileId':_0x303dec[_0x7dfc('0x5e')]},'raw':!![]})[_0x7dfc('0x2d')](function(_0x324f55){if(_0x324f55&&_0x324f55[_0x7dfc('0x57')]===0x0){return db[_0x7dfc('0x58')]['create']({'name':_0x3e15e4[_0x7dfc('0x32')],'resourceId':_0x3e15e4['id'],'type':_0x324f55['name'],'sectionId':_0x324f55['id']},{})[_0x7dfc('0x2d')](function(){return _0x321cc8;});}else{return _0x321cc8;}})[_0x7dfc('0x4e')](function(_0x5d7fe6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d7fe6);throw _0x5d7fe6;});}return _0x321cc8;});}})[_0x7dfc('0x2d')](respondWithResult(_0x3d787b,0xc9))[_0x7dfc('0x4e')](handleError(_0x3d787b,null));};exports[_0x7dfc('0x5f')]=function(_0x195676,_0x2b2043){if(_0x195676['body']['id']){delete _0x195676[_0x7dfc('0x53')]['id'];}return db[_0x7dfc('0x35')][_0x7dfc('0x51')]({'where':{'id':_0x195676['params']['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x2b2043,null))['then'](saveUpdates(_0x195676[_0x7dfc('0x53')],null))['then'](respondWithResult(_0x2b2043,null))[_0x7dfc('0x4e')](handleError(_0x2b2043,null));};exports[_0x7dfc('0x2e')]=function(_0x5e3ebe,_0x3715a0){return db[_0x7dfc('0x35')][_0x7dfc('0x51')]({'where':{'id':_0x5e3ebe[_0x7dfc('0x50')]['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x3715a0,null))[_0x7dfc('0x2d')](removeEntity(_0x3715a0,null))[_0x7dfc('0x4e')](handleError(_0x3715a0,null));};function widgetAttributes(_0x69a863){try{switch(_0x69a863[_0x7dfc('0x37')]){case _0x7dfc('0x60'):return[{'name':_0x7dfc('0x61'),'value':_0x69a863[_0x7dfc('0x61')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'https://'}];case _0x7dfc('0x64'):return[{'name':_0x7dfc('0x65'),'value':_0x69a863[_0x7dfc('0x65')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863['attrs'][0x0][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x66'):return[{'name':_0x7dfc('0x67'),'value':_0x69a863[_0x7dfc('0x67')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'HH:mm:ss'},{'name':_0x7dfc('0x68'),'value':_0x69a863[_0x7dfc('0x68')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863['attrs'][0x1][_0x7dfc('0x63')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x69a863[_0x7dfc('0x69')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863['attrs'][0x2]['value']:undefined)||0xc}];case _0x7dfc('0x6a'):return[{'name':_0x7dfc('0x6b'),'value':_0x69a863[_0x7dfc('0x6b')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||'total'},{'name':_0x7dfc('0x6c'),'value':_0x69a863[_0x7dfc('0x6c')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863[_0x7dfc('0x62')][0x1][_0x7dfc('0x63')]:undefined)||[]},{'name':_0x7dfc('0x69'),'value':_0x69a863[_0x7dfc('0x69')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863[_0x7dfc('0x62')][0x2][_0x7dfc('0x63')]:undefined)||0x14},{'name':_0x7dfc('0x6d'),'value':_0x69a863['attrChannel']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x3]?_0x69a863['attrs'][0x3][_0x7dfc('0x63')]:undefined)||_0x7dfc('0x6e')},{'name':'attrEmailAccounts','value':_0x69a863[_0x7dfc('0x6f')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x4]?_0x69a863[_0x7dfc('0x62')][0x4][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x70'),'value':_0x69a863[_0x7dfc('0x70')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x5]?_0x69a863[_0x7dfc('0x62')][0x5][_0x7dfc('0x63')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x69a863['attrSmsAccounts']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x6]?_0x69a863[_0x7dfc('0x62')][0x6][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x71'),'value':_0x69a863[_0x7dfc('0x71')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x7]?_0x69a863[_0x7dfc('0x62')][0x7][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x72'),'value':_0x69a863[_0x7dfc('0x72')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x8]?_0x69a863['attrs'][0x8]['value']:undefined)||''},{'name':_0x7dfc('0x73'),'value':_0x69a863[_0x7dfc('0x73')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x9]?_0x69a863['attrs'][0x9][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x74'):case _0x7dfc('0x75'):return[{'name':_0x7dfc('0x76'),'value':_0x69a863[_0x7dfc('0x76')]||(_0x69a863['attrs']&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||_0x7dfc('0x77')},{'name':_0x7dfc('0x78'),'value':_0x69a863[_0x7dfc('0x78')]||(_0x69a863['attrs']&&_0x69a863[_0x7dfc('0x62')][0x1]?_0x69a863['attrs'][0x1]['value']:undefined)||null},{'name':_0x7dfc('0x79'),'value':_0x69a863[_0x7dfc('0x79')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x2]?_0x69a863['attrs'][0x2][_0x7dfc('0x63')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x69a863[_0x7dfc('0x6c')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x3]?_0x69a863[_0x7dfc('0x62')][0x3][_0x7dfc('0x63')]:undefined)||[]},{'name':_0x7dfc('0x6d'),'value':_0x69a863[_0x7dfc('0x6d')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x4]?_0x69a863[_0x7dfc('0x62')][0x4]['value']:undefined)||_0x7dfc('0x6e')},{'name':_0x7dfc('0x6f'),'value':_0x69a863[_0x7dfc('0x6f')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x5]?_0x69a863['attrs'][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x69a863[_0x7dfc('0x70')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x6]?_0x69a863[_0x7dfc('0x62')][0x6]['value']:undefined)||''},{'name':_0x7dfc('0x7a'),'value':_0x69a863[_0x7dfc('0x7a')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x7]?_0x69a863[_0x7dfc('0x62')][0x7][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x71'),'value':_0x69a863[_0x7dfc('0x71')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x8]?_0x69a863[_0x7dfc('0x62')][0x8][_0x7dfc('0x63')]:undefined)||''},{'name':_0x7dfc('0x72'),'value':_0x69a863[_0x7dfc('0x72')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863[_0x7dfc('0x62')][0x9]?_0x69a863[_0x7dfc('0x62')][0x9][_0x7dfc('0x63')]:undefined)||''},{'name':'attrChatWebsites','value':_0x69a863['attrChatWebsites']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0xa]?_0x69a863[_0x7dfc('0x62')][0xa][_0x7dfc('0x63')]:undefined)||''}];case _0x7dfc('0x7b'):return[{'name':'attrReport','type':_0x69a863['reportType']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x37')]:undefined)||null,'value':_0x69a863['attrReport']||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x0]?_0x69a863[_0x7dfc('0x62')][0x0][_0x7dfc('0x63')]:undefined)||null},{'name':_0x7dfc('0x7c'),'value':_0x69a863[_0x7dfc('0x7c')]||(_0x69a863[_0x7dfc('0x62')]&&_0x69a863['attrs'][0x1]?_0x69a863['attrs'][0x1][_0x7dfc('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x304605){logger['error'](_0x7dfc('0x7d'),JSON['stringify'](_0x304605));return[];}}exports[_0x7dfc('0x7e')]=function(_0x219dda,_0x196d91,_0x532786){if(_0x219dda[_0x7dfc('0x53')]['id']){delete _0x219dda[_0x7dfc('0x53')]['id'];}return db[_0x7dfc('0x35')]['find']({'where':{'id':_0x219dda[_0x7dfc('0x50')]['id']}})['then'](handleEntityNotFound(_0x196d91,null))[_0x7dfc('0x2d')](function(_0x5b58d7){if(_0x5b58d7){_0x219dda[_0x7dfc('0x53')]['DashboardId']=_0x5b58d7['id'];_0x219dda[_0x7dfc('0x53')][_0x7dfc('0x62')]=widgetAttributes(_0x219dda[_0x7dfc('0x53')]);return db[_0x7dfc('0x7f')]['create'](_0x219dda[_0x7dfc('0x53')]);}})[_0x7dfc('0x2d')](respondWithResult(_0x196d91,null))[_0x7dfc('0x4e')](handleError(_0x196d91,null));};exports[_0x7dfc('0x80')]=function(_0x333612,_0x225b3d,_0x1ab20f){var _0x2d0e7b={};var _0x461669={};var _0x41f0e7;var _0x159b2f;return db[_0x7dfc('0x35')]['findOne']({'where':{'id':_0x333612['params']['id']}})[_0x7dfc('0x2d')](handleEntityNotFound(_0x225b3d,null))[_0x7dfc('0x2d')](function(_0xcaed3e){if(_0xcaed3e){_0x41f0e7=_0xcaed3e;_0x461669[_0x7dfc('0x38')]=_[_0x7dfc('0x3a')](db['DashboardItem'][_0x7dfc('0x36')]);_0x461669[_0x7dfc('0x39')]=_[_0x7dfc('0x3a')](_0x333612[_0x7dfc('0x39')]);_0x461669[_0x7dfc('0x43')]=_[_0x7dfc('0x3b')](_0x461669[_0x7dfc('0x38')],_0x461669[_0x7dfc('0x39')]);_0x2d0e7b['attributes']=_['intersection'](_0x461669['model'],qs[_0x7dfc('0x3c')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x3c')]));_0x2d0e7b['attributes']=_0x2d0e7b[_0x7dfc('0x3d')]['length']?_0x2d0e7b[_0x7dfc('0x3d')]:_0x461669['model'];_0x2d0e7b[_0x7dfc('0x40')]=qs[_0x7dfc('0x41')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x41')]);_0x2d0e7b[_0x7dfc('0x42')]=qs['filters'](_[_0x7dfc('0x44')](_0x333612[_0x7dfc('0x39')],_0x461669[_0x7dfc('0x43')]));if(_0x333612[_0x7dfc('0x39')]['filter']){_0x2d0e7b[_0x7dfc('0x42')]=_[_0x7dfc('0x46')](_0x2d0e7b[_0x7dfc('0x42')],{'$or':_[_0x7dfc('0x47')](_0x2d0e7b[_0x7dfc('0x3d')],function(_0xee029d){var _0x3ae790={};_0x3ae790[_0xee029d]={'$like':'%'+_0x333612[_0x7dfc('0x39')]['filter']+'%'};return _0x3ae790;})});}_0x2d0e7b=_[_0x7dfc('0x46')]({},_0x2d0e7b,_0x333612['options']);return _0x41f0e7['getItems'](_0x2d0e7b);}})[_0x7dfc('0x2d')](function(_0x1b02d2){if(_0x1b02d2){_0x159b2f=_0x1b02d2[_0x7dfc('0x3e')];if(!_0x333612[_0x7dfc('0x39')]['hasOwnProperty'](_0x7dfc('0x81'))){_0x2d0e7b[_0x7dfc('0x27')]=qs['limit'](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x27')]);_0x2d0e7b['offset']=qs[_0x7dfc('0x29')](_0x333612[_0x7dfc('0x39')][_0x7dfc('0x29')]);}return _0x41f0e7[_0x7dfc('0x80')](_0x2d0e7b);}})['then'](function(_0x1110eb){if(_0x1110eb){return _0x1110eb?{'count':_0x159b2f,'rows':_0x1110eb}:null;}})[_0x7dfc('0x2d')](respondWithResult(_0x225b3d,null))[_0x7dfc('0x4e')](handleError(_0x225b3d,null));};
\ No newline at end of file
index 51fff60..72cd8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e4=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x1327f7,_0x574202){var _0xa7a00c=function(_0x4cfe0b){while(--_0x4cfe0b){_0x1327f7['push'](_0x1327f7['shift']());}};_0xa7a00c(++_0x574202);}(_0xe9e4,0x1e2));var _0x4e9e=function(_0x6818ce,_0x330c00){_0x6818ce=_0x6818ce-0x0;var _0x5e7d78=_0xe9e4[_0x6818ce];return _0x5e7d78;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x4e9e('0x0'))['db'][_0x4e9e('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x4e9e('0x2')](0x0);var events={'afterCreate':_0x4e9e('0x3'),'afterUpdate':_0x4e9e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x283e95){return function(_0x4b041e,_0x2b2237,_0x15fb23){DashboardEvents[_0x4e9e('0x5')](_0x283e95+':'+_0x4b041e['id'],_0x4b041e);DashboardEvents[_0x4e9e('0x5')](_0x283e95,_0x4b041e);_0x15fb23(null);};}for(var e in events){if(events[_0x4e9e('0x6')](e)){var event=events[e];Dashboard[_0x4e9e('0x7')](e,emitEvent(event));}}module[_0x4e9e('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xac6a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save','remove'];(function(_0x4f53d2,_0x373000){var _0x1587db=function(_0x4d2c4c){while(--_0x4d2c4c){_0x4f53d2['push'](_0x4f53d2['shift']());}};_0x1587db(++_0x373000);}(_0xac6a,0xc2));var _0xaac6=function(_0x1bdb94,_0x267912){_0x1bdb94=_0x1bdb94-0x0;var _0x42ba77=_0xac6a[_0x1bdb94];return _0x42ba77;};'use strict';var EventEmitter=require(_0xaac6('0x0'));var Dashboard=require(_0xaac6('0x1'))['db'][_0xaac6('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xaac6('0x3')](0x0);var events={'afterCreate':_0xaac6('0x4'),'afterUpdate':'update','afterDestroy':_0xaac6('0x5')};function emitEvent(_0x4c0cf4){return function(_0x9dc043,_0x1a0d76,_0x44259b){DashboardEvents[_0xaac6('0x6')](_0x4c0cf4+':'+_0x9dc043['id'],_0x9dc043);DashboardEvents[_0xaac6('0x6')](_0x4c0cf4,_0x9dc043);_0x44259b(null);};}for(var e in events){if(events[_0xaac6('0x7')](e)){var event=events[e];Dashboard[_0xaac6('0x8')](e,emitEvent(event));}}module[_0xaac6('0x9')]=DashboardEvents;
\ No newline at end of file
index 43676b5..b835714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x675e=['exports','define','dashboards','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x335ae0,_0x5d8af7){var _0x927a97=function(_0x599194){while(--_0x599194){_0x335ae0['push'](_0x335ae0['shift']());}};_0x927a97(++_0x5d8af7);}(_0x675e,0xc1));var _0xe675=function(_0x119280,_0x439c3e){_0x119280=_0x119280-0x0;var _0x481797=_0x675e[_0x119280];return _0x481797;};'use strict';var _=require(_0xe675('0x0'));var util=require(_0xe675('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe675('0x2'));var BPromise=require(_0xe675('0x3'));var rp=require(_0xe675('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe675('0x5'));var config=require(_0xe675('0x6'));var attributes=require('./dashboard.attributes');module[_0xe675('0x7')]=function(_0x1c5937,_0xa1747b){return _0x1c5937[_0xe675('0x8')]('Dashboard',attributes,{'tableName':_0xe675('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7da2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Dashboard','../../config/logger'];(function(_0xf44d98,_0x12a472){var _0x5ebb04=function(_0x930c33){while(--_0x930c33){_0xf44d98['push'](_0xf44d98['shift']());}};_0x5ebb04(++_0x12a472);}(_0x7da2,0xba));var _0x27da=function(_0x58420d,_0x25d838){_0x58420d=_0x58420d-0x0;var _0x7a8f84=_0x7da2[_0x58420d];return _0x7a8f84;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x27da('0x0'))(_0x27da('0x1'));var moment=require(_0x27da('0x2'));var BPromise=require(_0x27da('0x3'));var rp=require(_0x27da('0x4'));var fs=require('fs');var path=require(_0x27da('0x5'));var rimraf=require(_0x27da('0x6'));var config=require(_0x27da('0x7'));var attributes=require('./dashboard.attributes');module[_0x27da('0x8')]=function(_0x2dd748,_0xf9cc44){return _0x2dd748[_0x27da('0x9')](_0x27da('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec3f373..065aa4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8f0=['request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s'];(function(_0x3c4f40,_0x302e0b){var _0x12032f=function(_0x159d92){while(--_0x159d92){_0x3c4f40['push'](_0x3c4f40['shift']());}};_0x12032f(++_0x302e0b);}(_0xb8f0,0xf2));var _0x0b8f=function(_0x3c5a36,_0x1f3142){_0x3c5a36=_0x3c5a36-0x0;var _0x542b3b=_0xb8f0[_0x3c5a36];return _0x542b3b;};'use strict';var _=require(_0x0b8f('0x0'));var util=require('util');var moment=require(_0x0b8f('0x1'));var BPromise=require('bluebird');var rs=require(_0x0b8f('0x2'));var fs=require('fs');var Redis=require(_0x0b8f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0b8f('0x4'));var logger=require(_0x0b8f('0x5'))(_0x0b8f('0x6'));var config=require(_0x0b8f('0x7'));var jayson=require(_0x0b8f('0x8'));var client=jayson[_0x0b8f('0x9')][_0x0b8f('0xa')]({'port':0x232a});config['redis']=_[_0x0b8f('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0b8f('0xc')]));require(_0x0b8f('0xd'))['register'](socket);function respondWithRpcPromise(_0x40f0b9,_0x48624c,_0x4bc18c){return new BPromise(function(_0x35612e,_0x3b1fd6){return client[_0x0b8f('0xe')](_0x40f0b9,_0x4bc18c)[_0x0b8f('0xf')](function(_0x1130db){logger[_0x0b8f('0x10')](_0x0b8f('0x11'),_0x48624c,_0x0b8f('0x12'));logger[_0x0b8f('0x13')](_0x0b8f('0x14'),_0x48624c,_0x0b8f('0x12'),JSON['stringify'](_0x1130db));if(_0x1130db[_0x0b8f('0x15')]){if(_0x1130db[_0x0b8f('0x15')][_0x0b8f('0x16')]===0x1f4){logger[_0x0b8f('0x15')](_0x0b8f('0x11'),_0x48624c,_0x1130db[_0x0b8f('0x15')]['message']);return _0x3b1fd6(_0x1130db[_0x0b8f('0x15')][_0x0b8f('0x17')]);}logger[_0x0b8f('0x15')](_0x0b8f('0x11'),_0x48624c,_0x1130db['error'][_0x0b8f('0x17')]);return _0x35612e(_0x1130db['error']['message']);}else{logger[_0x0b8f('0x10')](_0x0b8f('0x11'),_0x48624c,_0x0b8f('0x12'));_0x35612e(_0x1130db[_0x0b8f('0x18')]['message']);}})[_0x0b8f('0x19')](function(_0x318a3d){logger['error'](_0x0b8f('0x11'),_0x48624c,_0x318a3d);_0x3b1fd6(_0x318a3d);});});}
\ No newline at end of file
+var _0x8895=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','debug','Dashboard,\x20%s,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8895,0x166));var _0x5889=function(_0x5e5a4a,_0x1350bb){_0x5e5a4a=_0x5e5a4a-0x0;var _0x527c68=_0x8895[_0x5e5a4a];return _0x527c68;};'use strict';var _=require(_0x5889('0x0'));var util=require(_0x5889('0x1'));var moment=require('moment');var BPromise=require(_0x5889('0x2'));var rs=require(_0x5889('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5889('0x4'))('rpc');var config=require(_0x5889('0x5'));var jayson=require(_0x5889('0x6'));var client=jayson[_0x5889('0x7')][_0x5889('0x8')]({'port':0x232a});config[_0x5889('0x9')]=_[_0x5889('0xa')](config[_0x5889('0x9')],{'host':_0x5889('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5889('0xc'))[_0x5889('0xd')](socket);function respondWithRpcPromise(_0x4ea872,_0x292615,_0x4a295e){return new BPromise(function(_0x2b6988,_0xc94cef){return client[_0x5889('0xe')](_0x4ea872,_0x4a295e)[_0x5889('0xf')](function(_0x5d0998){logger[_0x5889('0x10')](_0x5889('0x11'),_0x292615,'request\x20sent');logger[_0x5889('0x12')](_0x5889('0x13'),_0x292615,_0x5889('0x14'),JSON[_0x5889('0x15')](_0x5d0998));if(_0x5d0998[_0x5889('0x16')]){if(_0x5d0998[_0x5889('0x16')][_0x5889('0x17')]===0x1f4){logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);return _0xc94cef(_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);}logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);return _0x2b6988(_0x5d0998[_0x5889('0x16')][_0x5889('0x18')]);}else{logger['info'](_0x5889('0x11'),_0x292615,_0x5889('0x14'));_0x2b6988(_0x5d0998[_0x5889('0x19')][_0x5889('0x18')]);}})[_0x5889('0x1a')](function(_0x347bdb){logger[_0x5889('0x16')](_0x5889('0x11'),_0x292615,_0x347bdb);_0xc94cef(_0x347bdb);});});}
\ No newline at end of file
index a180209..da3786f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9209=['./dashboard.events','remove','emit','register','length'];(function(_0x351fe2,_0x1f2834){var _0xca5513=function(_0x34106f){while(--_0x34106f){_0x351fe2['push'](_0x351fe2['shift']());}};_0xca5513(++_0x1f2834);}(_0x9209,0x13b));var _0x9920=function(_0x503bfd,_0x53e434){_0x503bfd=_0x503bfd-0x0;var _0x5a2d67=_0x9209[_0x503bfd];return _0x5a2d67;};'use strict';var DashboardEvents=require(_0x9920('0x0'));var events=['save',_0x9920('0x1'),'update'];function createListener(_0x415c2a,_0x3c693f){return function(_0x49262c){_0x3c693f[_0x9920('0x2')](_0x415c2a,_0x49262c);};}function removeListener(_0x34938d,_0x46a49b){return function(){DashboardEvents['removeListener'](_0x34938d,_0x46a49b);};}exports[_0x9920('0x3')]=function(_0x29ba02){for(var _0x570f31=0x0,_0x2e69cb=events[_0x9920('0x4')];_0x570f31<_0x2e69cb;_0x570f31++){var _0x5d0031=events[_0x570f31];var _0x53d199=createListener('dashboard:'+_0x5d0031,_0x29ba02);DashboardEvents['on'](_0x5d0031,_0x53d199);}};
\ No newline at end of file
+var _0xc3b5=['remove','update','emit','register','length','dashboard:','./dashboard.events','save'];(function(_0x43bb67,_0x53f659){var _0x34260e=function(_0x331df3){while(--_0x331df3){_0x43bb67['push'](_0x43bb67['shift']());}};_0x34260e(++_0x53f659);}(_0xc3b5,0x18e));var _0x5c3b=function(_0x3e39e4,_0x3f54c1){_0x3e39e4=_0x3e39e4-0x0;var _0x53ae12=_0xc3b5[_0x3e39e4];return _0x53ae12;};'use strict';var DashboardEvents=require(_0x5c3b('0x0'));var events=[_0x5c3b('0x1'),_0x5c3b('0x2'),_0x5c3b('0x3')];function createListener(_0x10be03,_0x30a27a){return function(_0x2166f7){_0x30a27a[_0x5c3b('0x4')](_0x10be03,_0x2166f7);};}function removeListener(_0x204f5d,_0x32e899){return function(){DashboardEvents['removeListener'](_0x204f5d,_0x32e899);};}exports[_0x5c3b('0x5')]=function(_0x1c112c){for(var _0x1223a7=0x0,_0x2f638b=events[_0x5c3b('0x6')];_0x1223a7<_0x2f638b;_0x1223a7++){var _0x2db383=events[_0x1223a7];var _0x13dab0=createListener(_0x5c3b('0x7')+_0x2db383,_0x1c112c);DashboardEvents['on'](_0x2db383,_0x13dab0);}};
\ No newline at end of file
index 7429369..b066473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bd4=['getItems','create','post','clone','/:id/items','put','update','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show'];(function(_0x32da67,_0x1bd73d){var _0x5cf6e0=function(_0x18add4){while(--_0x18add4){_0x32da67['push'](_0x32da67['shift']());}};_0x5cf6e0(++_0x1bd73d);}(_0x7bd4,0x127));var _0x47bd=function(_0x43fb06,_0xa1ffa9){_0x43fb06=_0x43fb06-0x0;var _0x3f9dcc=_0x7bd4[_0x43fb06];return _0x3f9dcc;};'use strict';var multer=require(_0x47bd('0x0'));var util=require(_0x47bd('0x1'));var path=require('path');var timeout=require(_0x47bd('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x47bd('0x3'));var interaction=require(_0x47bd('0x4'));var config=require(_0x47bd('0x5'));var controller=require('./dashboard.controller');router['get']('/',auth[_0x47bd('0x6')](),controller[_0x47bd('0x7')]);router[_0x47bd('0x8')](_0x47bd('0x9'),auth['isAuthenticated'](),controller[_0x47bd('0xa')]);router['get']('/:id/items',auth[_0x47bd('0x6')](),controller[_0x47bd('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x47bd('0xc')]);router[_0x47bd('0xd')]('/:id/clone',auth[_0x47bd('0x6')](),controller[_0x47bd('0xe')]);router[_0x47bd('0xd')](_0x47bd('0xf'),auth[_0x47bd('0x6')](),controller['addItem']);router[_0x47bd('0x10')](_0x47bd('0x9'),auth[_0x47bd('0x6')](),controller[_0x47bd('0x11')]);router['delete'](_0x47bd('0x9'),auth[_0x47bd('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5db9=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','getItems','create','/:id/clone','clone','post','/:id/items','addItem','put','update','destroy','exports','multer','util','path','Router'];(function(_0x35d6c2,_0x113478){var _0x50e8f1=function(_0x2839e6){while(--_0x2839e6){_0x35d6c2['push'](_0x35d6c2['shift']());}};_0x50e8f1(++_0x113478);}(_0x5db9,0x1f4));var _0x95db=function(_0x5affe8,_0x4318ad){_0x5affe8=_0x5affe8-0x0;var _0x2a13f8=_0x5db9[_0x5affe8];return _0x2a13f8;};'use strict';var multer=require(_0x95db('0x0'));var util=require(_0x95db('0x1'));var path=require(_0x95db('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x95db('0x3')]();var fs_extra=require(_0x95db('0x4'));var auth=require(_0x95db('0x5'));var interaction=require(_0x95db('0x6'));var config=require(_0x95db('0x7'));var controller=require(_0x95db('0x8'));router[_0x95db('0x9')]('/',auth[_0x95db('0xa')](),controller[_0x95db('0xb')]);router[_0x95db('0x9')](_0x95db('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x95db('0x9')]('/:id/items',auth[_0x95db('0xa')](),controller[_0x95db('0xd')]);router['post']('/',auth[_0x95db('0xa')](),controller[_0x95db('0xe')]);router['post'](_0x95db('0xf'),auth[_0x95db('0xa')](),controller[_0x95db('0x10')]);router[_0x95db('0x11')](_0x95db('0x12'),auth['isAuthenticated'](),controller[_0x95db('0x13')]);router[_0x95db('0x14')](_0x95db('0xc'),auth[_0x95db('0xa')](),controller[_0x95db('0x15')]);router['delete']('/:id',auth[_0x95db('0xa')](),controller[_0x95db('0x16')]);module[_0x95db('0x17')]=router;
\ No newline at end of file
index ff5af18..3866819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','#ffffff','sequelize','squel','exports','STRING'];(function(_0x55c908,_0x5b8d4a){var _0x182c3a=function(_0x43c39c){while(--_0x43c39c){_0x55c908['push'](_0x55c908['shift']());}};_0x182c3a(++_0x5b8d4a);}(_0xeda8,0x104));var _0x8eda=function(_0x191af0,_0x1d514a){_0x191af0=_0x191af0-0x0;var _0x48d199=_0xeda8[_0x191af0];return _0x48d199;};'use strict';var Sequelize=require(_0x8eda('0x0'));var squel=require(_0x8eda('0x1'));var _=require('lodash');module[_0x8eda('0x2')]={'title':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x8eda('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x8eda('0x4')](_0x8eda('0x5')),'get':function(){try{return JSON[_0x8eda('0x6')](this[_0x8eda('0x7')](_0x8eda('0x8')));}catch(_0x22dee9){return[];}},'set':function(_0x1f3556){try{this[_0x8eda('0x9')](_0x8eda('0x8'),JSON['stringify'](_0x1f3556));}catch(_0x28b721){this[_0x8eda('0x9')](_0x8eda('0x8'),JSON[_0x8eda('0xa')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![],'defaultValue':_0x8eda('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x8eda('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xb4c7=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x41594a,_0x28bd18){_0x41594a=_0x41594a-0x0;var _0x181600=_0xb4c7[_0x41594a];return _0x181600;};'use strict';var Sequelize=require(_0x7b4c('0x0'));var squel=require(_0x7b4c('0x1'));var _=require(_0x7b4c('0x2'));module[_0x7b4c('0x3')]={'title':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x7b4c('0x5')](_0x7b4c('0x6')),'get':function(){try{return JSON[_0x7b4c('0x7')](this[_0x7b4c('0x8')](_0x7b4c('0x9')));}catch(_0x5adec9){return[];}},'set':function(_0x1b0f57){try{this[_0x7b4c('0xa')](_0x7b4c('0x9'),JSON['stringify'](_0x1b0f57));}catch(_0x2d7b7e){this[_0x7b4c('0xa')]('attrs',JSON[_0x7b4c('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x7b4c('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x7b4c('0xc')]},'col':{'type':Sequelize[_0x7b4c('0xc')]},'background':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x7b4c('0x4')],'allowNull':![],'defaultValue':_0x7b4c('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x7b4c('0x4')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 30ba341..52164a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc812=['sox','ejs','fs-extra','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','redis','defaults','socket.io-emitter','register','sendStatus','status','end','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','DashboardItem','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path'];(function(_0x4cc238,_0x33272b){var _0x2d1d4b=function(_0x43f894){while(--_0x43f894){_0x4cc238['push'](_0x4cc238['shift']());}};_0x2d1d4b(++_0x33272b);}(_0xc812,0xbc));var _0x2c81=function(_0x39f2d4,_0x1abdc3){_0x39f2d4=_0x39f2d4-0x0;var _0x548a07=_0xc812[_0x39f2d4];return _0x548a07;};'use strict';var emlformat=require(_0x2c81('0x0'));var rimraf=require(_0x2c81('0x1'));var zipdir=require(_0x2c81('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c81('0x3'));var moment=require(_0x2c81('0x4'));var BPromise=require(_0x2c81('0x5'));var Mustache=require(_0x2c81('0x6'));var util=require('util');var path=require(_0x2c81('0x7'));var sox=require(_0x2c81('0x8'));var csv=require('to-csv');var ejs=require(_0x2c81('0x9'));var fs=require('fs');var fs_extra=require(_0x2c81('0xa'));var _=require(_0x2c81('0xb'));var squel=require(_0x2c81('0xc'));var crypto=require(_0x2c81('0xd'));var jsforce=require(_0x2c81('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2c81('0xf'));var querystring=require(_0x2c81('0x10'));var Papa=require(_0x2c81('0x11'));var Redis=require(_0x2c81('0x12'));var authService=require(_0x2c81('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2c81('0x14'));var hardwareService=require(_0x2c81('0x15'));var logger=require(_0x2c81('0x16'))(_0x2c81('0x17'));var utils=require(_0x2c81('0x18'));var config=require(_0x2c81('0x19'));var licenseUtil=require(_0x2c81('0x1a'));var db=require('../../mysqldb')['db'];config[_0x2c81('0x1b')]=_[_0x2c81('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2c81('0x1d'))(new Redis(config[_0x2c81('0x1b')]));require('./dashboardItem.socket')[_0x2c81('0x1e')](socket);function respondWithStatusCode(_0x258b0f,_0xf06e73){_0xf06e73=_0xf06e73||0xcc;return function(_0x49599c){if(_0x49599c){return _0x258b0f[_0x2c81('0x1f')](_0xf06e73);}return _0x258b0f[_0x2c81('0x20')](_0xf06e73)[_0x2c81('0x21')]();};}function respondWithResult(_0x169c74,_0x59ff30){_0x59ff30=_0x59ff30||0xc8;return function(_0x3541ea){if(_0x3541ea){return _0x169c74[_0x2c81('0x20')](_0x59ff30)['json'](_0x3541ea);}};}function respondWithFilteredResult(_0xa53149,_0x31bf73){return function(_0x3d5a02){if(_0x3d5a02){var _0x381eda=typeof _0x31bf73[_0x2c81('0x22')]===_0x2c81('0x23')&&typeof _0x31bf73['limit']===_0x2c81('0x23');var _0x9ec98=_0x3d5a02[_0x2c81('0x24')];var _0x7ddde6=_0x381eda?0x0:_0x31bf73[_0x2c81('0x22')];var _0x12018b=_0x381eda?_0x3d5a02[_0x2c81('0x24')]:_0x31bf73[_0x2c81('0x22')]+_0x31bf73['limit'];var _0x525b13;if(_0x12018b>=_0x9ec98){_0x12018b=_0x9ec98;_0x525b13=0xc8;}else{_0x525b13=0xce;}_0xa53149[_0x2c81('0x20')](_0x525b13);return _0xa53149['set'](_0x2c81('0x25'),_0x7ddde6+'-'+_0x12018b+'/'+_0x9ec98)['json'](_0x3d5a02);}return null;};}function patchUpdates(_0x573dce){return function(_0x5cad4c){try{jsonpatch[_0x2c81('0x26')](_0x5cad4c,_0x573dce,!![]);}catch(_0x2d02f7){return BPromise[_0x2c81('0x27')](_0x2d02f7);}return _0x5cad4c[_0x2c81('0x28')]();};}function saveUpdates(_0x5a8980,_0x3ca8bf){return function(_0x3b3d28){if(_0x3b3d28){return _0x3b3d28[_0x2c81('0x29')](_0x5a8980)[_0x2c81('0x2a')](function(_0x309b2f){return _0x309b2f;});}return null;};}function removeEntity(_0xca2041,_0x436e5a){return function(_0x5aaf99){if(_0x5aaf99){return _0x5aaf99[_0x2c81('0x2b')]()[_0x2c81('0x2a')](function(){_0xca2041[_0x2c81('0x20')](0xcc)[_0x2c81('0x21')]();});}};}function handleEntityNotFound(_0xbc7426,_0x5959ab){return function(_0x2486fb){if(!_0x2486fb){_0xbc7426[_0x2c81('0x1f')](0x194);}return _0x2486fb;};}function handleError(_0x2456ee,_0xbf2d26){_0xbf2d26=_0xbf2d26||0x1f4;return function(_0x4122bc){logger[_0x2c81('0x2c')](_0x4122bc[_0x2c81('0x2d')]);if(_0x4122bc[_0x2c81('0x2e')]){delete _0x4122bc[_0x2c81('0x2e')];}_0x2456ee[_0x2c81('0x20')](_0xbf2d26)[_0x2c81('0x2f')](_0x4122bc);};}exports[_0x2c81('0x30')]=function(_0x2f443f,_0x19bfee){var _0x596091={'raw':![],'where':{'id':_0x2f443f[_0x2c81('0x31')]['id']}},_0x2b7111={};_0x2b7111[_0x2c81('0x32')]=_[_0x2c81('0x33')](db['DashboardItem'][_0x2c81('0x34')]);_0x2b7111[_0x2c81('0x35')]=_[_0x2c81('0x33')](_0x2f443f[_0x2c81('0x35')]);_0x2b7111[_0x2c81('0x36')]=_[_0x2c81('0x37')](_0x2b7111[_0x2c81('0x32')],_0x2b7111[_0x2c81('0x35')]);_0x596091[_0x2c81('0x38')]=_[_0x2c81('0x37')](_0x2b7111['model'],qs['fields'](_0x2f443f[_0x2c81('0x35')][_0x2c81('0x39')]));_0x596091[_0x2c81('0x38')]=_0x596091[_0x2c81('0x38')][_0x2c81('0x3a')]?_0x596091[_0x2c81('0x38')]:_0x2b7111['model'];if(_0x2f443f[_0x2c81('0x35')][_0x2c81('0x3b')]){_0x596091['include']=[{'all':!![]}];}_0x596091=_['merge']({},_0x596091,_0x2f443f['options']);return db[_0x2c81('0x3c')][_0x2c81('0x3d')](_0x596091)[_0x2c81('0x2a')](handleEntityNotFound(_0x19bfee,null))[_0x2c81('0x2a')](respondWithResult(_0x19bfee,null))[_0x2c81('0x3e')](handleError(_0x19bfee,null));};exports[_0x2c81('0x2b')]=function(_0xfd68e2,_0x434f7a){return db['DashboardItem'][_0x2c81('0x3d')]({'where':{'id':_0xfd68e2[_0x2c81('0x31')]['id']}})[_0x2c81('0x2a')](handleEntityNotFound(_0x434f7a,null))[_0x2c81('0x2a')](removeEntity(_0x434f7a,null))[_0x2c81('0x3e')](handleError(_0x434f7a,null));};function widgetAttributes(_0x221f2b){try{switch(_0x221f2b[_0x2c81('0x3f')]){case _0x2c81('0x40'):return[{'name':_0x2c81('0x41'),'value':_0x221f2b[_0x2c81('0x41')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x43')]:undefined)||_0x2c81('0x44')}];case _0x2c81('0x45'):return[{'name':_0x2c81('0x46'),'value':_0x221f2b['attrPath']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b['attrs'][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x43')]:undefined)||''}];case'clock':return[{'name':_0x2c81('0x47'),'value':_0x221f2b['attrHourFormat']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b['attrs'][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x43')]:undefined)||_0x2c81('0x48')},{'name':_0x2c81('0x49'),'value':_0x221f2b[_0x2c81('0x49')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x1]?_0x221f2b['attrs'][0x1]['value']:undefined)||_0x2c81('0x4a')},{'name':_0x2c81('0x4b'),'value':_0x221f2b[_0x2c81('0x4b')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x2]?_0x221f2b[_0x2c81('0x42')][0x2][_0x2c81('0x43')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x221f2b[_0x2c81('0x4c')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b['attrs'][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x43')]:undefined)||_0x2c81('0x4d')},{'name':_0x2c81('0x4e'),'value':_0x221f2b[_0x2c81('0x4e')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x1]?_0x221f2b[_0x2c81('0x42')][0x1][_0x2c81('0x43')]:undefined)||[]},{'name':_0x2c81('0x4b'),'value':_0x221f2b[_0x2c81('0x4b')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x2]?_0x221f2b['attrs'][0x2][_0x2c81('0x43')]:undefined)||0x14},{'name':_0x2c81('0x4f'),'value':_0x221f2b[_0x2c81('0x4f')]||(_0x221f2b['attrs']&&_0x221f2b[_0x2c81('0x42')][0x3]?_0x221f2b['attrs'][0x3][_0x2c81('0x43')]:undefined)||_0x2c81('0x50')},{'name':_0x2c81('0x51'),'value':_0x221f2b[_0x2c81('0x51')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x4]?_0x221f2b[_0x2c81('0x42')][0x4][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x52'),'value':_0x221f2b['attrFaxAccounts']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x5]?_0x221f2b[_0x2c81('0x42')][0x5]['value']:undefined)||''},{'name':_0x2c81('0x53'),'value':_0x221f2b[_0x2c81('0x53')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x6]?_0x221f2b[_0x2c81('0x42')][0x6][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x54'),'value':_0x221f2b[_0x2c81('0x54')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x7]?_0x221f2b['attrs'][0x7][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x55'),'value':_0x221f2b[_0x2c81('0x55')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x8]?_0x221f2b[_0x2c81('0x42')][0x8][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x56'),'value':_0x221f2b[_0x2c81('0x56')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x9]?_0x221f2b['attrs'][0x9]['value']:undefined)||''}];case _0x2c81('0x57'):case _0x2c81('0x58'):return[{'name':'attrSerie1','value':_0x221f2b[_0x2c81('0x59')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x0]?_0x221f2b['attrs'][0x0][_0x2c81('0x43')]:undefined)||_0x2c81('0x4d')},{'name':_0x2c81('0x5a'),'value':_0x221f2b[_0x2c81('0x5a')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b['attrs'][0x1]?_0x221f2b[_0x2c81('0x42')][0x1][_0x2c81('0x43')]:undefined)||null},{'name':_0x2c81('0x5b'),'value':_0x221f2b[_0x2c81('0x5b')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x2]?_0x221f2b[_0x2c81('0x42')][0x2][_0x2c81('0x43')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x221f2b[_0x2c81('0x4e')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x3]?_0x221f2b[_0x2c81('0x42')][0x3][_0x2c81('0x43')]:undefined)||[]},{'name':_0x2c81('0x4f'),'value':_0x221f2b[_0x2c81('0x4f')]||(_0x221f2b['attrs']&&_0x221f2b[_0x2c81('0x42')][0x4]?_0x221f2b[_0x2c81('0x42')][0x4]['value']:undefined)||_0x2c81('0x50')},{'name':_0x2c81('0x51'),'value':_0x221f2b[_0x2c81('0x51')]||(_0x221f2b['attrs']&&_0x221f2b[_0x2c81('0x42')][0x5]?_0x221f2b[_0x2c81('0x42')][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x221f2b[_0x2c81('0x52')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x6]?_0x221f2b[_0x2c81('0x42')][0x6][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x53'),'value':_0x221f2b[_0x2c81('0x53')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x7]?_0x221f2b['attrs'][0x7][_0x2c81('0x43')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x221f2b[_0x2c81('0x54')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x8]?_0x221f2b[_0x2c81('0x42')][0x8][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x55'),'value':_0x221f2b['attrWhatsappAccounts']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x9]?_0x221f2b[_0x2c81('0x42')][0x9][_0x2c81('0x43')]:undefined)||''},{'name':_0x2c81('0x56'),'value':_0x221f2b['attrChatWebsites']||(_0x221f2b['attrs']&&_0x221f2b[_0x2c81('0x42')][0xa]?_0x221f2b[_0x2c81('0x42')][0xa][_0x2c81('0x43')]:undefined)||''}];case _0x2c81('0x5c'):return[{'name':'attrReport','type':_0x221f2b['reportType']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x3f')]:undefined)||null,'value':_0x221f2b[_0x2c81('0x5d')]||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b[_0x2c81('0x42')][0x0]?_0x221f2b[_0x2c81('0x42')][0x0][_0x2c81('0x43')]:undefined)||null},{'name':_0x2c81('0x5e'),'value':_0x221f2b['attrRefresh']||(_0x221f2b[_0x2c81('0x42')]&&_0x221f2b['attrs'][0x1]?_0x221f2b[_0x2c81('0x42')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xe027c2){logger[_0x2c81('0x2c')](_0x2c81('0x5f'),JSON['stringify'](_0xe027c2));return[];}}exports[_0x2c81('0x60')]=function(_0x18ccae,_0x31517f){if(_0x18ccae['body']){_0x18ccae[_0x2c81('0x61')][_0x2c81('0x42')]=widgetAttributes(_0x18ccae[_0x2c81('0x61')]);}return db['DashboardItem'][_0x2c81('0x60')](_0x18ccae[_0x2c81('0x61')],{})['then'](respondWithResult(_0x31517f,0xc9))['catch'](handleError(_0x31517f,null));};exports[_0x2c81('0x29')]=function(_0x431e30,_0x53da3f){if(_0x431e30[_0x2c81('0x61')]['id']){delete _0x431e30[_0x2c81('0x61')]['id'];}_0x431e30[_0x2c81('0x61')]['attrs']=widgetAttributes(_0x431e30[_0x2c81('0x61')]);return db[_0x2c81('0x3c')]['find']({'where':{'id':_0x431e30[_0x2c81('0x31')]['id']}})[_0x2c81('0x2a')](handleEntityNotFound(_0x53da3f,null))['then'](saveUpdates(_0x431e30[_0x2c81('0x61')],null))[_0x2c81('0x2a')](respondWithResult(_0x53da3f,null))[_0x2c81('0x3e')](handleError(_0x53da3f,null));};
\ No newline at end of file
+var _0x2678=['0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','web-report','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','query','keys','filters','intersection','attributes','model','fields','length','includeAll','include','options','DashboardItem','find','catch','params','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone'];(function(_0x19c99f,_0x535b64){var _0x307273=function(_0x40e31b){while(--_0x40e31b){_0x19c99f['push'](_0x19c99f['shift']());}};_0x307273(++_0x535b64);}(_0x2678,0x1bb));var _0x8267=function(_0x503a14,_0x327044){_0x503a14=_0x503a14-0x0;var _0x5c474d=_0x2678[_0x503a14];return _0x5c474d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8267('0x0'));var zipdir=require(_0x8267('0x1'));var jsonpatch=require(_0x8267('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8267('0x3'));var util=require(_0x8267('0x4'));var path=require(_0x8267('0x5'));var sox=require('sox');var csv=require(_0x8267('0x6'));var ejs=require(_0x8267('0x7'));var fs=require('fs');var fs_extra=require(_0x8267('0x8'));var _=require(_0x8267('0x9'));var squel=require(_0x8267('0xa'));var crypto=require(_0x8267('0xb'));var jsforce=require(_0x8267('0xc'));var deskjs=require(_0x8267('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8267('0xe'));var Papa=require(_0x8267('0xf'));var Redis=require('ioredis');var authService=require(_0x8267('0x10'));var qs=require(_0x8267('0x11'));var as=require(_0x8267('0x12'));var hardwareService=require(_0x8267('0x13'));var logger=require(_0x8267('0x14'))('api');var utils=require(_0x8267('0x15'));var config=require(_0x8267('0x16'));var licenseUtil=require(_0x8267('0x17'));var db=require(_0x8267('0x18'))['db'];config[_0x8267('0x19')]=_[_0x8267('0x1a')](config[_0x8267('0x19')],{'host':_0x8267('0x1b'),'port':0x18eb});var socket=require(_0x8267('0x1c'))(new Redis(config[_0x8267('0x19')]));require(_0x8267('0x1d'))['register'](socket);function respondWithStatusCode(_0x14a8d1,_0x4ef41e){_0x4ef41e=_0x4ef41e||0xcc;return function(_0x39cc14){if(_0x39cc14){return _0x14a8d1[_0x8267('0x1e')](_0x4ef41e);}return _0x14a8d1[_0x8267('0x1f')](_0x4ef41e)[_0x8267('0x20')]();};}function respondWithResult(_0x5b182b,_0x583817){_0x583817=_0x583817||0xc8;return function(_0x59967e){if(_0x59967e){return _0x5b182b[_0x8267('0x1f')](_0x583817)[_0x8267('0x21')](_0x59967e);}};}function respondWithFilteredResult(_0x55b9f9,_0x59685b){return function(_0x2577a5){if(_0x2577a5){var _0x39f8c8=typeof _0x59685b[_0x8267('0x22')]===_0x8267('0x23')&&typeof _0x59685b['limit']===_0x8267('0x23');var _0x5e3542=_0x2577a5[_0x8267('0x24')];var _0x1b725d=_0x39f8c8?0x0:_0x59685b[_0x8267('0x22')];var _0x4ccd45=_0x39f8c8?_0x2577a5[_0x8267('0x24')]:_0x59685b[_0x8267('0x22')]+_0x59685b[_0x8267('0x25')];var _0x1dd8b7;if(_0x4ccd45>=_0x5e3542){_0x4ccd45=_0x5e3542;_0x1dd8b7=0xc8;}else{_0x1dd8b7=0xce;}_0x55b9f9[_0x8267('0x1f')](_0x1dd8b7);return _0x55b9f9[_0x8267('0x26')](_0x8267('0x27'),_0x1b725d+'-'+_0x4ccd45+'/'+_0x5e3542)['json'](_0x2577a5);}return null;};}function patchUpdates(_0x54db81){return function(_0x16cbf1){try{jsonpatch[_0x8267('0x28')](_0x16cbf1,_0x54db81,!![]);}catch(_0x92cac9){return BPromise[_0x8267('0x29')](_0x92cac9);}return _0x16cbf1[_0x8267('0x2a')]();};}function saveUpdates(_0x31b406,_0x55cf32){return function(_0x432f53){if(_0x432f53){return _0x432f53[_0x8267('0x2b')](_0x31b406)[_0x8267('0x2c')](function(_0x2903bb){return _0x2903bb;});}return null;};}function removeEntity(_0x5cb8ba,_0x47ee5a){return function(_0x2e8e7e){if(_0x2e8e7e){return _0x2e8e7e[_0x8267('0x2d')]()[_0x8267('0x2c')](function(){_0x5cb8ba[_0x8267('0x1f')](0xcc)[_0x8267('0x20')]();});}};}function handleEntityNotFound(_0xd6526e,_0x11fef5){return function(_0x59cee3){if(!_0x59cee3){_0xd6526e[_0x8267('0x1e')](0x194);}return _0x59cee3;};}function handleError(_0x31381b,_0x3861c7){_0x3861c7=_0x3861c7||0x1f4;return function(_0x3f2fbe){logger[_0x8267('0x2e')](_0x3f2fbe[_0x8267('0x2f')]);if(_0x3f2fbe[_0x8267('0x30')]){delete _0x3f2fbe[_0x8267('0x30')];}_0x31381b[_0x8267('0x1f')](_0x3861c7)[_0x8267('0x31')](_0x3f2fbe);};}exports[_0x8267('0x32')]=function(_0x5f5b0f,_0x32323b){var _0x4f7377={'raw':![],'where':{'id':_0x5f5b0f['params']['id']}},_0x1e976d={};_0x1e976d['model']=_['keys'](db['DashboardItem']['rawAttributes']);_0x1e976d[_0x8267('0x33')]=_[_0x8267('0x34')](_0x5f5b0f['query']);_0x1e976d[_0x8267('0x35')]=_[_0x8267('0x36')](_0x1e976d['model'],_0x1e976d[_0x8267('0x33')]);_0x4f7377[_0x8267('0x37')]=_[_0x8267('0x36')](_0x1e976d[_0x8267('0x38')],qs['fields'](_0x5f5b0f[_0x8267('0x33')][_0x8267('0x39')]));_0x4f7377[_0x8267('0x37')]=_0x4f7377['attributes'][_0x8267('0x3a')]?_0x4f7377[_0x8267('0x37')]:_0x1e976d[_0x8267('0x38')];if(_0x5f5b0f[_0x8267('0x33')][_0x8267('0x3b')]){_0x4f7377[_0x8267('0x3c')]=[{'all':!![]}];}_0x4f7377=_['merge']({},_0x4f7377,_0x5f5b0f[_0x8267('0x3d')]);return db[_0x8267('0x3e')][_0x8267('0x3f')](_0x4f7377)[_0x8267('0x2c')](handleEntityNotFound(_0x32323b,null))['then'](respondWithResult(_0x32323b,null))[_0x8267('0x40')](handleError(_0x32323b,null));};exports[_0x8267('0x2d')]=function(_0x3f8db6,_0x39d957){return db[_0x8267('0x3e')][_0x8267('0x3f')]({'where':{'id':_0x3f8db6[_0x8267('0x41')]['id']}})['then'](handleEntityNotFound(_0x39d957,null))[_0x8267('0x2c')](removeEntity(_0x39d957,null))[_0x8267('0x40')](handleError(_0x39d957,null));};function widgetAttributes(_0xa87476){try{switch(_0xa87476['type']){case _0x8267('0x42'):return[{'name':_0x8267('0x43'),'value':_0xa87476[_0x8267('0x43')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0]['value']:undefined)||_0x8267('0x45')}];case _0x8267('0x46'):return[{'name':_0x8267('0x47'),'value':_0xa87476[_0x8267('0x47')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x49'):return[{'name':_0x8267('0x4a'),'value':_0xa87476[_0x8267('0x4a')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||_0x8267('0x4b')},{'name':'attrTimezone','value':_0xa87476[_0x8267('0x4c')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476['attrs'][0x1][_0x8267('0x48')]:undefined)||_0x8267('0x4d')},{'name':_0x8267('0x4e'),'value':_0xa87476[_0x8267('0x4e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x2]?_0xa87476[_0x8267('0x44')][0x2][_0x8267('0x48')]:undefined)||0xc}];case _0x8267('0x4f'):return[{'name':_0x8267('0x50'),'value':_0xa87476['attrMetric']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||'total'},{'name':_0x8267('0x51'),'value':_0xa87476[_0x8267('0x51')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1][_0x8267('0x48')]:undefined)||[]},{'name':_0x8267('0x4e'),'value':_0xa87476[_0x8267('0x4e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x2]?_0xa87476[_0x8267('0x44')][0x2][_0x8267('0x48')]:undefined)||0x14},{'name':'attrChannel','value':_0xa87476['attrChannel']||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x3]?_0xa87476['attrs'][0x3][_0x8267('0x48')]:undefined)||_0x8267('0x52')},{'name':_0x8267('0x53'),'value':_0xa87476[_0x8267('0x53')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x4]?_0xa87476[_0x8267('0x44')][0x4][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x54'),'value':_0xa87476[_0x8267('0x54')]||(_0xa87476['attrs']&&_0xa87476['attrs'][0x5]?_0xa87476[_0x8267('0x44')][0x5]['value']:undefined)||''},{'name':_0x8267('0x55'),'value':_0xa87476[_0x8267('0x55')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x6]?_0xa87476['attrs'][0x6][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x56'),'value':_0xa87476[_0x8267('0x56')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x7]?_0xa87476[_0x8267('0x44')][0x7][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x57'),'value':_0xa87476[_0x8267('0x57')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x8]?_0xa87476[_0x8267('0x44')][0x8][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x58'),'value':_0xa87476[_0x8267('0x58')]||(_0xa87476['attrs']&&_0xa87476[_0x8267('0x44')][0x9]?_0xa87476[_0x8267('0x44')][0x9][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x59'):case _0x8267('0x5a'):return[{'name':'attrSerie1','value':_0xa87476[_0x8267('0x5b')]||(_0xa87476['attrs']&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x48')]:undefined)||'total'},{'name':_0x8267('0x5c'),'value':_0xa87476[_0x8267('0x5c')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0xa87476[_0x8267('0x5d')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x2]?_0xa87476[_0x8267('0x44')][0x2]['value']:undefined)||null},{'name':_0x8267('0x51'),'value':_0xa87476[_0x8267('0x51')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x3]?_0xa87476[_0x8267('0x44')][0x3][_0x8267('0x48')]:undefined)||[]},{'name':_0x8267('0x5e'),'value':_0xa87476[_0x8267('0x5e')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x4]?_0xa87476[_0x8267('0x44')][0x4][_0x8267('0x48')]:undefined)||_0x8267('0x52')},{'name':_0x8267('0x53'),'value':_0xa87476[_0x8267('0x53')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x5]?_0xa87476[_0x8267('0x44')][0x5][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x54'),'value':_0xa87476['attrFaxAccounts']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x6]?_0xa87476['attrs'][0x6][_0x8267('0x48')]:undefined)||''},{'name':'attrSmsAccounts','value':_0xa87476[_0x8267('0x55')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476['attrs'][0x7]?_0xa87476[_0x8267('0x44')][0x7][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x56'),'value':_0xa87476[_0x8267('0x56')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x8]?_0xa87476[_0x8267('0x44')][0x8]['value']:undefined)||''},{'name':_0x8267('0x57'),'value':_0xa87476[_0x8267('0x57')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x9]?_0xa87476[_0x8267('0x44')][0x9][_0x8267('0x48')]:undefined)||''},{'name':_0x8267('0x58'),'value':_0xa87476[_0x8267('0x58')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0xa]?_0xa87476['attrs'][0xa][_0x8267('0x48')]:undefined)||''}];case _0x8267('0x5f'):return[{'name':_0x8267('0x60'),'type':_0xa87476[_0x8267('0x61')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476[_0x8267('0x44')][0x0][_0x8267('0x62')]:undefined)||null,'value':_0xa87476[_0x8267('0x60')]||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x0]?_0xa87476['attrs'][0x0][_0x8267('0x48')]:undefined)||null},{'name':_0x8267('0x63'),'value':_0xa87476['attrRefresh']||(_0xa87476[_0x8267('0x44')]&&_0xa87476[_0x8267('0x44')][0x1]?_0xa87476[_0x8267('0x44')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x827f05){logger[_0x8267('0x2e')](_0x8267('0x64'),JSON[_0x8267('0x65')](_0x827f05));return[];}}exports[_0x8267('0x66')]=function(_0x290a6a,_0x5dcf67){if(_0x290a6a[_0x8267('0x67')]){_0x290a6a[_0x8267('0x67')][_0x8267('0x44')]=widgetAttributes(_0x290a6a[_0x8267('0x67')]);}return db[_0x8267('0x3e')]['create'](_0x290a6a[_0x8267('0x67')],{})['then'](respondWithResult(_0x5dcf67,0xc9))[_0x8267('0x40')](handleError(_0x5dcf67,null));};exports[_0x8267('0x2b')]=function(_0x2822b2,_0x18a4c6){if(_0x2822b2[_0x8267('0x67')]['id']){delete _0x2822b2[_0x8267('0x67')]['id'];}_0x2822b2['body'][_0x8267('0x44')]=widgetAttributes(_0x2822b2[_0x8267('0x67')]);return db['DashboardItem']['find']({'where':{'id':_0x2822b2[_0x8267('0x41')]['id']}})['then'](handleEntityNotFound(_0x18a4c6,null))['then'](saveUpdates(_0x2822b2[_0x8267('0x67')],null))[_0x8267('0x2c')](respondWithResult(_0x18a4c6,null))[_0x8267('0x40')](handleError(_0x18a4c6,null));};
\ No newline at end of file
index 9c53b35..0e7341b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58d2=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem'];(function(_0x2e069e,_0x28125c){var _0x8a1b34=function(_0x38f712){while(--_0x38f712){_0x2e069e['push'](_0x2e069e['shift']());}};_0x8a1b34(++_0x28125c);}(_0x58d2,0x1aa));var _0x258d=function(_0xb47d5d,_0x3a5e70){_0xb47d5d=_0xb47d5d-0x0;var _0x5dfd0a=_0x58d2[_0xb47d5d];return _0x5dfd0a;};'use strict';var EventEmitter=require(_0x258d('0x0'));var DashboardItem=require(_0x258d('0x1'))['db'][_0x258d('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x258d('0x3')](0x0);var events={'afterCreate':_0x258d('0x4'),'afterUpdate':_0x258d('0x5'),'afterDestroy':_0x258d('0x6')};function emitEvent(_0x43323f){return function(_0x365088,_0x29e4b4,_0x556d33){DashboardItemEvents[_0x258d('0x7')](_0x43323f+':'+_0x365088['id'],_0x365088);DashboardItemEvents[_0x258d('0x7')](_0x43323f,_0x365088);_0x556d33(null);};}for(var e in events){if(events[_0x258d('0x8')](e)){var event=events[e];DashboardItem[_0x258d('0x9')](e,emitEvent(event));}}module[_0x258d('0xa')]=DashboardItemEvents;
\ No newline at end of file
+var _0x0c8d=['emit','hook','../../mysqldb','DashboardItem','setMaxListeners','save','update'];(function(_0x4a0f54,_0x4c0cd4){var _0x3d8bec=function(_0x3e5750){while(--_0x3e5750){_0x4a0f54['push'](_0x4a0f54['shift']());}};_0x3d8bec(++_0x4c0cd4);}(_0x0c8d,0x79));var _0xd0c8=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x0c8d[_0x342baa];return _0x1208f3;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xd0c8('0x0'))['db'][_0xd0c8('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xd0c8('0x2')](0x0);var events={'afterCreate':_0xd0c8('0x3'),'afterUpdate':_0xd0c8('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5cda35){return function(_0x4ced07,_0x5d1585,_0x398ae6){DashboardItemEvents[_0xd0c8('0x5')](_0x5cda35+':'+_0x4ced07['id'],_0x4ced07);DashboardItemEvents[_0xd0c8('0x5')](_0x5cda35,_0x4ced07);_0x398ae6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0xd0c8('0x6')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index 38ac334..6fdc090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb33=['rimraf','../../config/environment','exports','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x27df1a,_0x21a286){var _0x55b4d4=function(_0x1a4a0e){while(--_0x1a4a0e){_0x27df1a['push'](_0x27df1a['shift']());}};_0x55b4d4(++_0x21a286);}(_0xcb33,0xae));var _0x3cb3=function(_0x359f36,_0x19cdb8){_0x359f36=_0x359f36-0x0;var _0x4d1f80=_0xcb33[_0x359f36];return _0x4d1f80;};'use strict';var _=require(_0x3cb3('0x0'));var util=require(_0x3cb3('0x1'));var logger=require(_0x3cb3('0x2'))('api');var moment=require(_0x3cb3('0x3'));var BPromise=require('bluebird');var rp=require(_0x3cb3('0x4'));var fs=require('fs');var path=require(_0x3cb3('0x5'));var rimraf=require(_0x3cb3('0x6'));var config=require(_0x3cb3('0x7'));var attributes=require('./dashboardItem.attributes');module[_0x3cb3('0x8')]=function(_0x149e76,_0x1379f4){return _0x149e76[_0x3cb3('0x9')](_0x3cb3('0xa'),attributes,{'tableName':_0x3cb3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5715=['./dashboardItem.attributes','exports','define','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x576e92,_0x165314){var _0x24c32e=function(_0x1648b1){while(--_0x1648b1){_0x576e92['push'](_0x576e92['shift']());}};_0x24c32e(++_0x165314);}(_0x5715,0xd4));var _0x5571=function(_0x1c7889,_0x24cd26){_0x1c7889=_0x1c7889-0x0;var _0x2f14e5=_0x5715[_0x1c7889];return _0x2f14e5;};'use strict';var _=require(_0x5571('0x0'));var util=require(_0x5571('0x1'));var logger=require('../../config/logger')(_0x5571('0x2'));var moment=require('moment');var BPromise=require(_0x5571('0x3'));var rp=require(_0x5571('0x4'));var fs=require('fs');var path=require(_0x5571('0x5'));var rimraf=require(_0x5571('0x6'));var config=require(_0x5571('0x7'));var attributes=require(_0x5571('0x8'));module[_0x5571('0x9')]=function(_0x5a4fbe,_0x397cb2){return _0x5a4fbe[_0x5571('0xa')]('DashboardItem',attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec23c8d..709af83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x532f=['error','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','request','DashboardItem,\x20%s,\x20%s','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','code','message'];(function(_0x27787d,_0x3c832a){var _0x2ec19c=function(_0x1d7c49){while(--_0x1d7c49){_0x27787d['push'](_0x27787d['shift']());}};_0x2ec19c(++_0x3c832a);}(_0x532f,0x1d8));var _0xf532=function(_0x47f525,_0x4c2e79){_0x47f525=_0x47f525-0x0;var _0x49d929=_0x532f[_0x47f525];return _0x49d929;};'use strict';var _=require(_0xf532('0x0'));var util=require(_0xf532('0x1'));var moment=require('moment');var BPromise=require(_0xf532('0x2'));var rs=require(_0xf532('0x3'));var fs=require('fs');var Redis=require(_0xf532('0x4'));var db=require(_0xf532('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf532('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf532('0x7'));var client=jayson[_0xf532('0x8')][_0xf532('0x9')]({'port':0x232a});config[_0xf532('0xa')]=_[_0xf532('0xb')](config[_0xf532('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xf532('0xc'))(new Redis(config[_0xf532('0xa')]));require(_0xf532('0xd'))[_0xf532('0xe')](socket);function respondWithRpcPromise(_0x4cfbcc,_0x5b27e1,_0x50dca8){return new BPromise(function(_0x4b7e50,_0x33909d){return client[_0xf532('0xf')](_0x4cfbcc,_0x50dca8)['then'](function(_0x43ce32){logger['info'](_0xf532('0x10'),_0x5b27e1,'request\x20sent');logger[_0xf532('0x11')](_0xf532('0x12'),_0x5b27e1,_0xf532('0x13'),JSON['stringify'](_0x43ce32));if(_0x43ce32['error']){if(_0x43ce32['error'][_0xf532('0x14')]===0x1f4){logger['error'](_0xf532('0x10'),_0x5b27e1,_0x43ce32['error'][_0xf532('0x15')]);return _0x33909d(_0x43ce32[_0xf532('0x16')][_0xf532('0x15')]);}logger[_0xf532('0x16')](_0xf532('0x10'),_0x5b27e1,_0x43ce32[_0xf532('0x16')][_0xf532('0x15')]);return _0x4b7e50(_0x43ce32[_0xf532('0x16')][_0xf532('0x15')]);}else{logger[_0xf532('0x17')](_0xf532('0x10'),_0x5b27e1,_0xf532('0x13'));_0x4b7e50(_0x43ce32[_0xf532('0x18')][_0xf532('0x15')]);}})[_0xf532('0x19')](function(_0xc3ab4b){logger['error']('DashboardItem,\x20%s,\x20%s',_0x5b27e1,_0xc3ab4b);_0x33909d(_0xc3ab4b);});});}
\ No newline at end of file
+var _0x4a85=['stringify','error','code','message','info','request\x20sent','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','request','then','DashboardItem,\x20%s,\x20%s'];(function(_0x32044d,_0x356182){var _0x64e5d3=function(_0x41c161){while(--_0x41c161){_0x32044d['push'](_0x32044d['shift']());}};_0x64e5d3(++_0x356182);}(_0x4a85,0x14b));var _0x54a8=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x4a85[_0x24f31b];return _0x488401;};'use strict';var _=require(_0x54a8('0x0'));var util=require('util');var moment=require(_0x54a8('0x1'));var BPromise=require(_0x54a8('0x2'));var rs=require(_0x54a8('0x3'));var fs=require('fs');var Redis=require(_0x54a8('0x4'));var db=require(_0x54a8('0x5'))['db'];var utils=require(_0x54a8('0x6'));var logger=require(_0x54a8('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x54a8('0x8'));var client=jayson[_0x54a8('0x9')][_0x54a8('0xa')]({'port':0x232a});config[_0x54a8('0xb')]=_[_0x54a8('0xc')](config[_0x54a8('0xb')],{'host':_0x54a8('0xd'),'port':0x18eb});var socket=require(_0x54a8('0xe'))(new Redis(config[_0x54a8('0xb')]));require(_0x54a8('0xf'))['register'](socket);function respondWithRpcPromise(_0xadd02a,_0x3aa6b9,_0x20e9f2){return new BPromise(function(_0x4551ea,_0x20d77e){return client[_0x54a8('0x10')](_0xadd02a,_0x20e9f2)[_0x54a8('0x11')](function(_0x2534ca){logger['info'](_0x54a8('0x12'),_0x3aa6b9,'request\x20sent');logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x3aa6b9,'request\x20sent',JSON[_0x54a8('0x13')](_0x2534ca));if(_0x2534ca[_0x54a8('0x14')]){if(_0x2534ca[_0x54a8('0x14')][_0x54a8('0x15')]===0x1f4){logger[_0x54a8('0x14')]('DashboardItem,\x20%s,\x20%s',_0x3aa6b9,_0x2534ca[_0x54a8('0x14')]['message']);return _0x20d77e(_0x2534ca[_0x54a8('0x14')][_0x54a8('0x16')]);}logger['error'](_0x54a8('0x12'),_0x3aa6b9,_0x2534ca[_0x54a8('0x14')][_0x54a8('0x16')]);return _0x4551ea(_0x2534ca['error'][_0x54a8('0x16')]);}else{logger[_0x54a8('0x17')](_0x54a8('0x12'),_0x3aa6b9,_0x54a8('0x18'));_0x4551ea(_0x2534ca['result']['message']);}})['catch'](function(_0x25ac57){logger['error'](_0x54a8('0x12'),_0x3aa6b9,_0x25ac57);_0x20d77e(_0x25ac57);});});}
\ No newline at end of file
index 61c0f19..5f9c548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53bb=['save','remove','emit','removeListener','register','./dashboardItem.events'];(function(_0x4b8156,_0x437af2){var _0x4a819c=function(_0xe21347){while(--_0xe21347){_0x4b8156['push'](_0x4b8156['shift']());}};_0x4a819c(++_0x437af2);}(_0x53bb,0x14f));var _0xb53b=function(_0x42ab48,_0x16cccc){_0x42ab48=_0x42ab48-0x0;var _0x885e4b=_0x53bb[_0x42ab48];return _0x885e4b;};'use strict';var DashboardItemEvents=require(_0xb53b('0x0'));var events=[_0xb53b('0x1'),_0xb53b('0x2'),'update'];function createListener(_0x5a1ad,_0x5b7001){return function(_0x338d9d){_0x5b7001[_0xb53b('0x3')](_0x5a1ad,_0x338d9d);};}function removeListener(_0x2ed68b,_0x334ad9){return function(){DashboardItemEvents[_0xb53b('0x4')](_0x2ed68b,_0x334ad9);};}exports[_0xb53b('0x5')]=function(_0x39662a){for(var _0x40e828=0x0,_0x1ca9a9=events['length'];_0x40e828<_0x1ca9a9;_0x40e828++){var _0x387caa=events[_0x40e828];var _0x36cb65=createListener('dashboardItem:'+_0x387caa,_0x39662a);DashboardItemEvents['on'](_0x387caa,_0x36cb65);}};
\ No newline at end of file
+var _0x745e=['emit','removeListener','register','dashboardItem:','./dashboardItem.events','remove','update'];(function(_0x162e6e,_0x5c94a7){var _0x312729=function(_0x578e80){while(--_0x578e80){_0x162e6e['push'](_0x162e6e['shift']());}};_0x312729(++_0x5c94a7);}(_0x745e,0xb3));var _0xe745=function(_0x4507a4,_0x5b3cfc){_0x4507a4=_0x4507a4-0x0;var _0x521374=_0x745e[_0x4507a4];return _0x521374;};'use strict';var DashboardItemEvents=require(_0xe745('0x0'));var events=['save',_0xe745('0x1'),_0xe745('0x2')];function createListener(_0x130a97,_0x844ee2){return function(_0x4cabd0){_0x844ee2[_0xe745('0x3')](_0x130a97,_0x4cabd0);};}function removeListener(_0x35a02f,_0x25f406){return function(){DashboardItemEvents[_0xe745('0x4')](_0x35a02f,_0x25f406);};}exports[_0xe745('0x5')]=function(_0x16386e){for(var _0x6159b1=0x0,_0x34259b=events['length'];_0x6159b1<_0x34259b;_0x6159b1++){var _0x21528e=events[_0x6159b1];var _0x40efbf=createListener(_0xe745('0x6')+_0x21528e,_0x16386e);DashboardItemEvents['on'](_0x21528e,_0x40efbf);}};
\ No newline at end of file
index 3009292..2c3d7ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e12=['Router','fs-extra','../../components/auth/service','./dashboardItem.controller','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x576f41,_0x5678d2){var _0x51f213=function(_0x4f5298){while(--_0x4f5298){_0x576f41['push'](_0x576f41['shift']());}};_0x51f213(++_0x5678d2);}(_0x9e12,0xec));var _0x29e1=function(_0x181c8e,_0x2a0dc9){_0x181c8e=_0x181c8e-0x0;var _0x3ba7cf=_0x9e12[_0x181c8e];return _0x3ba7cf;};'use strict';var multer=require(_0x29e1('0x0'));var util=require('util');var path=require(_0x29e1('0x1'));var timeout=require(_0x29e1('0x2'));var express=require(_0x29e1('0x3'));var router=express[_0x29e1('0x4')]();var fs_extra=require(_0x29e1('0x5'));var auth=require(_0x29e1('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x29e1('0x7'));router['get'](_0x29e1('0x8'),auth[_0x29e1('0x9')](),controller['show']);router[_0x29e1('0xa')]('/',auth[_0x29e1('0x9')](),controller['create']);router[_0x29e1('0xb')](_0x29e1('0x8'),auth[_0x29e1('0x9')](),controller[_0x29e1('0xc')]);router[_0x29e1('0xd')](_0x29e1('0x8'),auth[_0x29e1('0x9')](),controller[_0x29e1('0xe')]);module[_0x29e1('0xf')]=router;
\ No newline at end of file
+var _0xa356=['show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated'];(function(_0x2e58f4,_0x56e6e9){var _0x27ab04=function(_0x5c5936){while(--_0x5c5936){_0x2e58f4['push'](_0x2e58f4['shift']());}};_0x27ab04(++_0x56e6e9);}(_0xa356,0xbb));var _0x6a35=function(_0x5b80fc,_0x548e2c){_0x5b80fc=_0x5b80fc-0x0;var _0x151317=_0xa356[_0x5b80fc];return _0x151317;};'use strict';var multer=require(_0x6a35('0x0'));var util=require(_0x6a35('0x1'));var path=require(_0x6a35('0x2'));var timeout=require(_0x6a35('0x3'));var express=require(_0x6a35('0x4'));var router=express[_0x6a35('0x5')]();var fs_extra=require(_0x6a35('0x6'));var auth=require(_0x6a35('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6a35('0x8'));var controller=require(_0x6a35('0x9'));router[_0x6a35('0xa')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0xd')]);router[_0x6a35('0xe')]('/',auth[_0x6a35('0xc')](),controller[_0x6a35('0xf')]);router[_0x6a35('0x10')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0x11')]);router[_0x6a35('0x12')](_0x6a35('0xb'),auth[_0x6a35('0xc')](),controller[_0x6a35('0x13')]);module['exports']=router;
\ No newline at end of file
index f4ebc93..69e3364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866a=['first','sequelize','STRING','second'];(function(_0x3ae642,_0x3c14cb){var _0x3e6417=function(_0x479dfb){while(--_0x479dfb){_0x3ae642['push'](_0x3ae642['shift']());}};_0x3e6417(++_0x3c14cb);}(_0x866a,0xb9));var _0xa866=function(_0x109c40,_0x3463fa){_0x109c40=_0x109c40-0x0;var _0x3d5aed=_0x866a[_0x109c40];return _0x3d5aed;};'use strict';var Sequelize=require(_0xa866('0x0'));module['exports']={'name':{'type':Sequelize[_0xa866('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first',_0xa866('0x2'),'third'),'allowNull':![],'defaultValue':_0xa866('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xad8d=['STRING','first','exports'];(function(_0x43d130,_0x5964ab){var _0x22afc9=function(_0x360c82){while(--_0x360c82){_0x43d130['push'](_0x43d130['shift']());}};_0x22afc9(++_0x5964ab);}(_0xad8d,0x1ca));var _0xdad8=function(_0x36087c,_0x34daad){_0x36087c=_0x36087c-0x0;var _0x24563e=_0xad8d[_0x36087c];return _0x24563e;};'use strict';var Sequelize=require('sequelize');module[_0xdad8('0x0')]={'name':{'type':Sequelize[_0xdad8('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0xdad8('0x2'),'second','third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4e02e3f..420c1eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56e=['fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','intersection','find','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','Disposition','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes'];(function(_0x3fba3b,_0x5c9012){var _0x360ab0=function(_0x12a9d0){while(--_0x12a9d0){_0x3fba3b['push'](_0x3fba3b['shift']());}};_0x360ab0(++_0x5c9012);}(_0xf56e,0x152));var _0xef56=function(_0x18f82b,_0x3ea7a0){_0x18f82b=_0x18f82b-0x0;var _0x5d8128=_0xf56e[_0x18f82b];return _0x5d8128;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xef56('0x0'));var zipdir=require(_0xef56('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xef56('0x2'));var Mustache=require('mustache');var util=require(_0xef56('0x3'));var path=require(_0xef56('0x4'));var sox=require('sox');var csv=require(_0xef56('0x5'));var ejs=require(_0xef56('0x6'));var fs=require('fs');var fs_extra=require(_0xef56('0x7'));var _=require(_0xef56('0x8'));var squel=require('squel');var crypto=require(_0xef56('0x9'));var jsforce=require(_0xef56('0xa'));var deskjs=require(_0xef56('0xb'));var toCsv=require(_0xef56('0x5'));var querystring=require(_0xef56('0xc'));var Papa=require(_0xef56('0xd'));var Redis=require(_0xef56('0xe'));var authService=require(_0xef56('0xf'));var qs=require(_0xef56('0x10'));var as=require(_0xef56('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef56('0x12'))(_0xef56('0x13'));var utils=require(_0xef56('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x476559,_0x18497b){_0x18497b=_0x18497b||0xcc;return function(_0x4ef71f){if(_0x4ef71f){return _0x476559[_0xef56('0x15')](_0x18497b);}return _0x476559['status'](_0x18497b)['end']();};}function respondWithResult(_0x5413d3,_0x118ed8){_0x118ed8=_0x118ed8||0xc8;return function(_0x1a4aca){if(_0x1a4aca){return _0x5413d3[_0xef56('0x16')](_0x118ed8)[_0xef56('0x17')](_0x1a4aca);}};}function respondWithFilteredResult(_0x3efc90,_0x43465f){return function(_0x3070d3){if(_0x3070d3){var _0x581abd=typeof _0x43465f[_0xef56('0x18')]===_0xef56('0x19')&&typeof _0x43465f[_0xef56('0x1a')]===_0xef56('0x19');var _0x179857=_0x3070d3[_0xef56('0x1b')];var _0x2f42d9=_0x581abd?0x0:_0x43465f[_0xef56('0x18')];var _0x4599c5=_0x581abd?_0x3070d3[_0xef56('0x1b')]:_0x43465f[_0xef56('0x18')]+_0x43465f['limit'];var _0x936395;if(_0x4599c5>=_0x179857){_0x4599c5=_0x179857;_0x936395=0xc8;}else{_0x936395=0xce;}_0x3efc90[_0xef56('0x16')](_0x936395);return _0x3efc90[_0xef56('0x1c')](_0xef56('0x1d'),_0x2f42d9+'-'+_0x4599c5+'/'+_0x179857)[_0xef56('0x17')](_0x3070d3);}return null;};}function patchUpdates(_0x27de3f){return function(_0x53db75){try{jsonpatch['apply'](_0x53db75,_0x27de3f,!![]);}catch(_0x4fa72c){return BPromise['reject'](_0x4fa72c);}return _0x53db75[_0xef56('0x1e')]();};}function saveUpdates(_0x18edba,_0x2535fd){return function(_0x3369fb){if(_0x3369fb){return _0x3369fb['update'](_0x18edba)[_0xef56('0x1f')](function(_0x56fd18){return _0x56fd18;});}return null;};}function removeEntity(_0x2adbc0,_0x263f3d){return function(_0xb93828){if(_0xb93828){return _0xb93828[_0xef56('0x20')]()[_0xef56('0x1f')](function(){var _0x3eb5b5=_0xb93828[_0xef56('0x21')]({'plain':!![]});var _0x1d1de4='Dispositions';return db[_0xef56('0x22')][_0xef56('0x20')]({'where':{'type':_0x1d1de4,'resourceId':_0x3eb5b5['id']}})[_0xef56('0x1f')](function(){return _0xb93828;});})[_0xef56('0x1f')](function(){_0x2adbc0[_0xef56('0x16')](0xcc)[_0xef56('0x23')]();});}};}function handleEntityNotFound(_0x534c6f,_0x422085){return function(_0xe524bc){if(!_0xe524bc){_0x534c6f['sendStatus'](0x194);}return _0xe524bc;};}function handleError(_0x218439,_0x50430d){_0x50430d=_0x50430d||0x1f4;return function(_0x1d089b){logger[_0xef56('0x24')](_0x1d089b[_0xef56('0x25')]);if(_0x1d089b['name']){delete _0x1d089b[_0xef56('0x26')];}_0x218439[_0xef56('0x16')](_0x50430d)[_0xef56('0x27')](_0x1d089b);};}exports[_0xef56('0x28')]=function(_0x581d44,_0x571a37){var _0x4e3609={},_0x11237f={},_0xfe8681={'count':0x0,'rows':[]};var _0x3c392c=_['map'](db[_0xef56('0x29')][_0xef56('0x2a')],function(_0x123871){return{'name':_0x123871[_0xef56('0x2b')],'type':_0x123871[_0xef56('0x2c')][_0xef56('0x2d')]};});_0x11237f[_0xef56('0x2e')]=_[_0xef56('0x2f')](_0x3c392c,_0xef56('0x26'));_0x11237f[_0xef56('0x30')]=_[_0xef56('0x31')](_0x581d44[_0xef56('0x30')]);_0x11237f[_0xef56('0x32')]=_['intersection'](_0x11237f[_0xef56('0x2e')],_0x11237f['query']);_0x4e3609[_0xef56('0x33')]=_['intersection'](_0x11237f[_0xef56('0x2e')],qs[_0xef56('0x34')](_0x581d44[_0xef56('0x30')][_0xef56('0x34')]));_0x4e3609['attributes']=_0x4e3609[_0xef56('0x33')][_0xef56('0x35')]?_0x4e3609[_0xef56('0x33')]:_0x11237f[_0xef56('0x2e')];if(!_0x581d44[_0xef56('0x30')][_0xef56('0x36')]('nolimit')){_0x4e3609[_0xef56('0x1a')]=qs[_0xef56('0x1a')](_0x581d44[_0xef56('0x30')][_0xef56('0x1a')]);_0x4e3609[_0xef56('0x18')]=qs['offset'](_0x581d44[_0xef56('0x30')][_0xef56('0x18')]);}_0x4e3609['order']=qs['sort'](_0x581d44['query'][_0xef56('0x37')]);_0x4e3609[_0xef56('0x38')]=qs[_0xef56('0x32')](_['pick'](_0x581d44[_0xef56('0x30')],_0x11237f['filters']),_0x3c392c);if(_0x581d44[_0xef56('0x30')][_0xef56('0x39')]){_0x4e3609['where']=_[_0xef56('0x3a')](_0x4e3609['where'],{'$or':_[_0xef56('0x2f')](_0x3c392c,function(_0x2480db){if(_0x2480db[_0xef56('0x2c')]!==_0xef56('0x3b')){var _0x218181={};_0x218181[_0x2480db[_0xef56('0x26')]]={'$like':'%'+_0x581d44[_0xef56('0x30')][_0xef56('0x39')]+'%'};return _0x218181;}})});}_0x4e3609=_['merge']({},_0x4e3609,_0x581d44[_0xef56('0x3c')]);var _0x585435={'where':_0x4e3609[_0xef56('0x38')]};return db[_0xef56('0x29')][_0xef56('0x1b')](_0x585435)[_0xef56('0x1f')](function(_0x38f079){_0xfe8681['count']=_0x38f079;if(_0x581d44[_0xef56('0x30')][_0xef56('0x3d')]){_0x4e3609[_0xef56('0x3e')]=[{'all':!![]}];}return db['Disposition'][_0xef56('0x3f')](_0x4e3609);})['then'](function(_0x1da93e){_0xfe8681[_0xef56('0x40')]=_0x1da93e;return _0xfe8681;})[_0xef56('0x1f')](respondWithFilteredResult(_0x571a37,_0x4e3609))[_0xef56('0x41')](handleError(_0x571a37,null));};exports[_0xef56('0x42')]=function(_0x4a3d78,_0x4368ec){var _0x56663c={'raw':!![],'where':{'id':_0x4a3d78['params']['id']}},_0x114505={};_0x114505[_0xef56('0x2e')]=_[_0xef56('0x31')](db[_0xef56('0x29')][_0xef56('0x2a')]);_0x114505[_0xef56('0x30')]=_[_0xef56('0x31')](_0x4a3d78[_0xef56('0x30')]);_0x114505[_0xef56('0x32')]=_[_0xef56('0x43')](_0x114505[_0xef56('0x2e')],_0x114505[_0xef56('0x30')]);_0x56663c[_0xef56('0x33')]=_[_0xef56('0x43')](_0x114505[_0xef56('0x2e')],qs[_0xef56('0x34')](_0x4a3d78[_0xef56('0x30')][_0xef56('0x34')]));_0x56663c[_0xef56('0x33')]=_0x56663c[_0xef56('0x33')]['length']?_0x56663c['attributes']:_0x114505['model'];if(_0x4a3d78[_0xef56('0x30')]['includeAll']){_0x56663c[_0xef56('0x3e')]=[{'all':!![]}];}_0x56663c=_[_0xef56('0x3a')]({},_0x56663c,_0x4a3d78['options']);return db[_0xef56('0x29')][_0xef56('0x44')](_0x56663c)[_0xef56('0x1f')](handleEntityNotFound(_0x4368ec,null))[_0xef56('0x1f')](respondWithResult(_0x4368ec,null))[_0xef56('0x41')](handleError(_0x4368ec,null));};exports[_0xef56('0x45')]=function(_0x18bc81,_0xfe4752){return db[_0xef56('0x29')]['create'](_0x18bc81[_0xef56('0x46')],{})[_0xef56('0x1f')](function(_0x1d54c3){var _0x69e041=_0x18bc81[_0xef56('0x47')][_0xef56('0x21')]({'plain':!![]});if(!_0x69e041)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x69e041[_0xef56('0x48')]===_0xef56('0x47')){var _0x221160=_0x1d54c3[_0xef56('0x21')]({'plain':!![]});var _0x3b2fe2='Dispositions';return db[_0xef56('0x49')][_0xef56('0x44')]({'where':{'name':_0x3b2fe2,'userProfileId':_0x69e041['userProfileId']},'raw':!![]})[_0xef56('0x1f')](function(_0x26143b){if(_0x26143b&&_0x26143b[_0xef56('0x4a')]===0x0){return db[_0xef56('0x22')]['create']({'name':_0x221160[_0xef56('0x26')],'resourceId':_0x221160['id'],'type':_0x26143b[_0xef56('0x26')],'sectionId':_0x26143b['id']},{})[_0xef56('0x1f')](function(){return _0x1d54c3;});}else{return _0x1d54c3;}})['catch'](function(_0x488ab9){logger['error'](_0xef56('0x4b'),_0x488ab9);throw _0x488ab9;});}return _0x1d54c3;})[_0xef56('0x1f')](respondWithResult(_0xfe4752,0xc9))['catch'](handleError(_0xfe4752,null));};exports[_0xef56('0x4c')]=function(_0x4fb24e,_0xade642){if(_0x4fb24e[_0xef56('0x46')]['id']){delete _0x4fb24e[_0xef56('0x46')]['id'];}return db['Disposition'][_0xef56('0x44')]({'where':{'id':_0x4fb24e[_0xef56('0x4d')]['id']}})[_0xef56('0x1f')](handleEntityNotFound(_0xade642,null))[_0xef56('0x1f')](saveUpdates(_0x4fb24e[_0xef56('0x46')],null))[_0xef56('0x1f')](respondWithResult(_0xade642,null))[_0xef56('0x41')](handleError(_0xade642,null));};exports[_0xef56('0x20')]=function(_0x10370f,_0x54fd05){return db[_0xef56('0x29')]['find']({'where':{'id':_0x10370f[_0xef56('0x4d')]['id']}})['then'](handleEntityNotFound(_0x54fd05,null))['then'](removeEntity(_0x54fd05,null))[_0xef56('0x41')](handleError(_0x54fd05,null));};
\ No newline at end of file
+var _0xd383=['json','offset','limit','undefined','count','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','Disposition','findAll','catch','show','params','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x5ee1ef,_0x8d83d5){var _0x601cdc=function(_0xf3f658){while(--_0xf3f658){_0x5ee1ef['push'](_0x5ee1ef['shift']());}};_0x601cdc(++_0x8d83d5);}(_0xd383,0x1c4));var _0x3d38=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0xd383[_0x1762b4];return _0x29beda;};'use strict';var emlformat=require(_0x3d38('0x0'));var rimraf=require(_0x3d38('0x1'));var zipdir=require(_0x3d38('0x2'));var jsonpatch=require(_0x3d38('0x3'));var rp=require(_0x3d38('0x4'));var moment=require(_0x3d38('0x5'));var BPromise=require(_0x3d38('0x6'));var Mustache=require('mustache');var util=require(_0x3d38('0x7'));var path=require(_0x3d38('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d38('0x9'));var _=require(_0x3d38('0xa'));var squel=require(_0x3d38('0xb'));var crypto=require(_0x3d38('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3d38('0xd'));var toCsv=require(_0x3d38('0xe'));var querystring=require(_0x3d38('0xf'));var Papa=require('papaparse');var Redis=require(_0x3d38('0x10'));var authService=require(_0x3d38('0x11'));var qs=require(_0x3d38('0x12'));var as=require(_0x3d38('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3d38('0x14'))(_0x3d38('0x15'));var utils=require(_0x3d38('0x16'));var config=require(_0x3d38('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3d38('0x18'))['db'];function respondWithStatusCode(_0x10f31d,_0x5a70d9){_0x5a70d9=_0x5a70d9||0xcc;return function(_0x2fbe76){if(_0x2fbe76){return _0x10f31d[_0x3d38('0x19')](_0x5a70d9);}return _0x10f31d[_0x3d38('0x1a')](_0x5a70d9)[_0x3d38('0x1b')]();};}function respondWithResult(_0x2e6b38,_0x204ec9){_0x204ec9=_0x204ec9||0xc8;return function(_0x115b53){if(_0x115b53){return _0x2e6b38[_0x3d38('0x1a')](_0x204ec9)[_0x3d38('0x1c')](_0x115b53);}};}function respondWithFilteredResult(_0x14694c,_0x22af6a){return function(_0x1f919b){if(_0x1f919b){var _0x4dd0ef=typeof _0x22af6a[_0x3d38('0x1d')]==='undefined'&&typeof _0x22af6a[_0x3d38('0x1e')]===_0x3d38('0x1f');var _0xe57ae8=_0x1f919b[_0x3d38('0x20')];var _0x16fd3a=_0x4dd0ef?0x0:_0x22af6a[_0x3d38('0x1d')];var _0x20dcd4=_0x4dd0ef?_0x1f919b[_0x3d38('0x20')]:_0x22af6a['offset']+_0x22af6a[_0x3d38('0x1e')];var _0x517b5e;if(_0x20dcd4>=_0xe57ae8){_0x20dcd4=_0xe57ae8;_0x517b5e=0xc8;}else{_0x517b5e=0xce;}_0x14694c['status'](_0x517b5e);return _0x14694c['set']('Content-Range',_0x16fd3a+'-'+_0x20dcd4+'/'+_0xe57ae8)['json'](_0x1f919b);}return null;};}function patchUpdates(_0x5bc95a){return function(_0x843aa9){try{jsonpatch[_0x3d38('0x21')](_0x843aa9,_0x5bc95a,!![]);}catch(_0x5ea5ee){return BPromise['reject'](_0x5ea5ee);}return _0x843aa9[_0x3d38('0x22')]();};}function saveUpdates(_0x7e362f,_0x362e5b){return function(_0x1b5dd5){if(_0x1b5dd5){return _0x1b5dd5[_0x3d38('0x23')](_0x7e362f)[_0x3d38('0x24')](function(_0x49e23d){return _0x49e23d;});}return null;};}function removeEntity(_0x544b20,_0x13de7b){return function(_0xe8ee74){if(_0xe8ee74){return _0xe8ee74[_0x3d38('0x25')]()[_0x3d38('0x24')](function(){var _0x184d6d=_0xe8ee74[_0x3d38('0x26')]({'plain':!![]});var _0xa60890='Dispositions';return db[_0x3d38('0x27')]['destroy']({'where':{'type':_0xa60890,'resourceId':_0x184d6d['id']}})[_0x3d38('0x24')](function(){return _0xe8ee74;});})[_0x3d38('0x24')](function(){_0x544b20[_0x3d38('0x1a')](0xcc)[_0x3d38('0x1b')]();});}};}function handleEntityNotFound(_0x314a4e,_0x495aaf){return function(_0x54f419){if(!_0x54f419){_0x314a4e[_0x3d38('0x19')](0x194);}return _0x54f419;};}function handleError(_0xe11db2,_0x34b648){_0x34b648=_0x34b648||0x1f4;return function(_0x38f0ff){logger[_0x3d38('0x28')](_0x38f0ff[_0x3d38('0x29')]);if(_0x38f0ff['name']){delete _0x38f0ff[_0x3d38('0x2a')];}_0xe11db2[_0x3d38('0x1a')](_0x34b648)[_0x3d38('0x2b')](_0x38f0ff);};}exports['index']=function(_0xf600f6,_0x18010d){var _0x4c3d8c={},_0x51299c={},_0x249642={'count':0x0,'rows':[]};var _0xfbfd03=_['map'](db['Disposition'][_0x3d38('0x2c')],function(_0x246fec){return{'name':_0x246fec[_0x3d38('0x2d')],'type':_0x246fec[_0x3d38('0x2e')]['key']};});_0x51299c[_0x3d38('0x2f')]=_[_0x3d38('0x30')](_0xfbfd03,'name');_0x51299c['query']=_[_0x3d38('0x31')](_0xf600f6[_0x3d38('0x32')]);_0x51299c[_0x3d38('0x33')]=_['intersection'](_0x51299c[_0x3d38('0x2f')],_0x51299c['query']);_0x4c3d8c[_0x3d38('0x34')]=_[_0x3d38('0x35')](_0x51299c[_0x3d38('0x2f')],qs[_0x3d38('0x36')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x36')]));_0x4c3d8c[_0x3d38('0x34')]=_0x4c3d8c[_0x3d38('0x34')][_0x3d38('0x37')]?_0x4c3d8c[_0x3d38('0x34')]:_0x51299c[_0x3d38('0x2f')];if(!_0xf600f6[_0x3d38('0x32')][_0x3d38('0x38')]('nolimit')){_0x4c3d8c[_0x3d38('0x1e')]=qs[_0x3d38('0x1e')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x1e')]);_0x4c3d8c[_0x3d38('0x1d')]=qs[_0x3d38('0x1d')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x1d')]);}_0x4c3d8c['order']=qs[_0x3d38('0x39')](_0xf600f6[_0x3d38('0x32')][_0x3d38('0x39')]);_0x4c3d8c[_0x3d38('0x3a')]=qs[_0x3d38('0x33')](_[_0x3d38('0x3b')](_0xf600f6[_0x3d38('0x32')],_0x51299c[_0x3d38('0x33')]),_0xfbfd03);if(_0xf600f6[_0x3d38('0x32')][_0x3d38('0x3c')]){_0x4c3d8c['where']=_['merge'](_0x4c3d8c['where'],{'$or':_['map'](_0xfbfd03,function(_0x5b2fb5){if(_0x5b2fb5[_0x3d38('0x2e')]!=='VIRTUAL'){var _0x3eab40={};_0x3eab40[_0x5b2fb5[_0x3d38('0x2a')]]={'$like':'%'+_0xf600f6[_0x3d38('0x32')]['filter']+'%'};return _0x3eab40;}})});}_0x4c3d8c=_[_0x3d38('0x3d')]({},_0x4c3d8c,_0xf600f6[_0x3d38('0x3e')]);var _0x45a22e={'where':_0x4c3d8c[_0x3d38('0x3a')]};return db['Disposition']['count'](_0x45a22e)[_0x3d38('0x24')](function(_0x82e81b){_0x249642[_0x3d38('0x20')]=_0x82e81b;if(_0xf600f6['query'][_0x3d38('0x3f')]){_0x4c3d8c[_0x3d38('0x40')]=[{'all':!![]}];}return db[_0x3d38('0x41')][_0x3d38('0x42')](_0x4c3d8c);})[_0x3d38('0x24')](function(_0x1108c2){_0x249642['rows']=_0x1108c2;return _0x249642;})['then'](respondWithFilteredResult(_0x18010d,_0x4c3d8c))[_0x3d38('0x43')](handleError(_0x18010d,null));};exports[_0x3d38('0x44')]=function(_0x2a1bc4,_0x3c620f){var _0x34e285={'raw':!![],'where':{'id':_0x2a1bc4[_0x3d38('0x45')]['id']}},_0x191148={};_0x191148[_0x3d38('0x2f')]=_[_0x3d38('0x31')](db[_0x3d38('0x41')][_0x3d38('0x2c')]);_0x191148[_0x3d38('0x32')]=_[_0x3d38('0x31')](_0x2a1bc4[_0x3d38('0x32')]);_0x191148['filters']=_[_0x3d38('0x35')](_0x191148['model'],_0x191148[_0x3d38('0x32')]);_0x34e285[_0x3d38('0x34')]=_[_0x3d38('0x35')](_0x191148[_0x3d38('0x2f')],qs[_0x3d38('0x36')](_0x2a1bc4['query']['fields']));_0x34e285[_0x3d38('0x34')]=_0x34e285[_0x3d38('0x34')]['length']?_0x34e285[_0x3d38('0x34')]:_0x191148[_0x3d38('0x2f')];if(_0x2a1bc4[_0x3d38('0x32')][_0x3d38('0x3f')]){_0x34e285[_0x3d38('0x40')]=[{'all':!![]}];}_0x34e285=_[_0x3d38('0x3d')]({},_0x34e285,_0x2a1bc4[_0x3d38('0x3e')]);return db[_0x3d38('0x41')]['find'](_0x34e285)[_0x3d38('0x24')](handleEntityNotFound(_0x3c620f,null))[_0x3d38('0x24')](respondWithResult(_0x3c620f,null))['catch'](handleError(_0x3c620f,null));};exports['create']=function(_0x38ef12,_0x2b0435){return db[_0x3d38('0x41')]['create'](_0x38ef12[_0x3d38('0x46')],{})[_0x3d38('0x24')](function(_0x3102df){var _0x11b92c=_0x38ef12[_0x3d38('0x47')][_0x3d38('0x26')]({'plain':!![]});if(!_0x11b92c)throw new Error(_0x3d38('0x48'));if(_0x11b92c[_0x3d38('0x49')]===_0x3d38('0x47')){var _0x3d4cca=_0x3102df['get']({'plain':!![]});var _0x3e77d9='Dispositions';return db[_0x3d38('0x4a')]['find']({'where':{'name':_0x3e77d9,'userProfileId':_0x11b92c[_0x3d38('0x4b')]},'raw':!![]})[_0x3d38('0x24')](function(_0x3a492d){if(_0x3a492d&&_0x3a492d[_0x3d38('0x4c')]===0x0){return db[_0x3d38('0x27')][_0x3d38('0x4d')]({'name':_0x3d4cca[_0x3d38('0x2a')],'resourceId':_0x3d4cca['id'],'type':_0x3a492d['name'],'sectionId':_0x3a492d['id']},{})[_0x3d38('0x24')](function(){return _0x3102df;});}else{return _0x3102df;}})[_0x3d38('0x43')](function(_0x2db3f6){logger[_0x3d38('0x28')](_0x3d38('0x4e'),_0x2db3f6);throw _0x2db3f6;});}return _0x3102df;})[_0x3d38('0x24')](respondWithResult(_0x2b0435,0xc9))[_0x3d38('0x43')](handleError(_0x2b0435,null));};exports[_0x3d38('0x23')]=function(_0x454cef,_0x3c09c3){if(_0x454cef['body']['id']){delete _0x454cef[_0x3d38('0x46')]['id'];}return db[_0x3d38('0x41')][_0x3d38('0x4f')]({'where':{'id':_0x454cef[_0x3d38('0x45')]['id']}})['then'](handleEntityNotFound(_0x3c09c3,null))[_0x3d38('0x24')](saveUpdates(_0x454cef[_0x3d38('0x46')],null))[_0x3d38('0x24')](respondWithResult(_0x3c09c3,null))[_0x3d38('0x43')](handleError(_0x3c09c3,null));};exports[_0x3d38('0x25')]=function(_0x447234,_0x3109b9){return db[_0x3d38('0x41')][_0x3d38('0x4f')]({'where':{'id':_0x447234[_0x3d38('0x45')]['id']}})[_0x3d38('0x24')](handleEntityNotFound(_0x3109b9,null))['then'](removeEntity(_0x3109b9,null))[_0x3d38('0x43')](handleError(_0x3109b9,null));};
\ No newline at end of file
index 8b1f14c..084fd2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f7=['name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','OpenchannelAccountId','WhatsappAccountId','../../config/logger','api','moment','rimraf','../../config/environment','./disposition.attributes','exports','define','tools_dispositions'];(function(_0x5ab75e,_0x4fd345){var _0x150be6=function(_0x1115aa){while(--_0x1115aa){_0x5ab75e['push'](_0x5ab75e['shift']());}};_0x150be6(++_0x4fd345);}(_0x74f7,0xbd));var _0x774f=function(_0xf5e98b,_0x2b4327){_0xf5e98b=_0xf5e98b-0x0;var _0x10caed=_0x74f7[_0xf5e98b];return _0x10caed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x774f('0x0'))(_0x774f('0x1'));var moment=require(_0x774f('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x774f('0x3'));var config=require(_0x774f('0x4'));var attributes=require(_0x774f('0x5'));module[_0x774f('0x6')]=function(_0x30b7b7,_0x2e4526){return _0x30b7b7[_0x774f('0x7')]('Disposition',attributes,{'tableName':_0x774f('0x8'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x774f('0x9'),'fields':[_0x774f('0xa'),_0x774f('0xb')]},{'unique':!![],'name':_0x774f('0xc'),'fields':[_0x774f('0xa'),_0x774f('0xd')]},{'unique':!![],'name':_0x774f('0xe'),'fields':[_0x774f('0xa'),_0x774f('0xf')]},{'unique':!![],'name':_0x774f('0x10'),'fields':[_0x774f('0xa'),_0x774f('0x11')]},{'unique':!![],'name':_0x774f('0x12'),'fields':[_0x774f('0xa'),_0x774f('0x13')]},{'unique':!![],'name':'name_openchannel','fields':[_0x774f('0xa'),_0x774f('0x14')]},{'unique':!![],'name':'name_whatsapp','fields':[_0x774f('0xa'),_0x774f('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d1a=['moment','path','rimraf','../../config/environment','./disposition.attributes','exports','define','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger'];(function(_0x5541f4,_0x3eac91){var _0x3beeae=function(_0x295edb){while(--_0x295edb){_0x5541f4['push'](_0x5541f4['shift']());}};_0x3beeae(++_0x3eac91);}(_0x1d1a,0x142));var _0xa1d1=function(_0x24dda4,_0x36aef6){_0x24dda4=_0x24dda4-0x0;var _0x186871=_0x1d1a[_0x24dda4];return _0x186871;};'use strict';var _=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var logger=require(_0xa1d1('0x2'))('api');var moment=require(_0xa1d1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa1d1('0x4'));var rimraf=require(_0xa1d1('0x5'));var config=require(_0xa1d1('0x6'));var attributes=require(_0xa1d1('0x7'));module[_0xa1d1('0x8')]=function(_0x20189e,_0x3e9a72){return _0x20189e[_0xa1d1('0x9')]('Disposition',attributes,{'tableName':_0xa1d1('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xa1d1('0xb'),'fields':[_0xa1d1('0xc'),_0xa1d1('0xd')]},{'unique':!![],'name':_0xa1d1('0xe'),'fields':['name',_0xa1d1('0xf')]},{'unique':!![],'name':_0xa1d1('0x10'),'fields':['name',_0xa1d1('0x11')]},{'unique':!![],'name':_0xa1d1('0x12'),'fields':['name',_0xa1d1('0x13')]},{'unique':!![],'name':_0xa1d1('0x14'),'fields':[_0xa1d1('0xc'),_0xa1d1('0x15')]},{'unique':!![],'name':'name_openchannel','fields':[_0xa1d1('0xc'),_0xa1d1('0x16')]},{'unique':!![],'name':_0xa1d1('0x17'),'fields':[_0xa1d1('0xc'),_0xa1d1('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
index 2a8ee8f..b241a55 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(_0x49a119,_0x119ff5){var _0x404009=function(_0x357c7a){while(--_0x357c7a){_0x49a119['push'](_0x49a119['shift']());}};_0x404009(++_0x119ff5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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(_0x1bb813,_0x964248){var _0x44799f=function(_0x3cdc07){while(--_0x3cdc07){_0x1bb813['push'](_0x1bb813['shift']());}};_0x44799f(++_0x964248);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'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 2c551a5..c541b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4075=['../../config/environment','./disposition.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3d6ad7,_0x5258aa){var _0x5d36d9=function(_0x2d18fa){while(--_0x2d18fa){_0x3d6ad7['push'](_0x3d6ad7['shift']());}};_0x5d36d9(++_0x5258aa);}(_0x4075,0x111));var _0x5407=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x4075[_0x2dadb9];return _0x2f0097;};'use strict';var multer=require(_0x5407('0x0'));var util=require(_0x5407('0x1'));var path=require(_0x5407('0x2'));var timeout=require(_0x5407('0x3'));var express=require(_0x5407('0x4'));var router=express[_0x5407('0x5')]();var fs_extra=require(_0x5407('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5407('0x7'));var controller=require(_0x5407('0x8'));router[_0x5407('0x9')]('/',auth['isAuthenticated'](),controller[_0x5407('0xa')]);router['get'](_0x5407('0xb'),auth[_0x5407('0xc')](),controller[_0x5407('0xd')]);router[_0x5407('0xe')]('/',auth[_0x5407('0xc')](),controller[_0x5407('0xf')]);router[_0x5407('0x10')](_0x5407('0xb'),auth[_0x5407('0xc')](),controller['update']);router[_0x5407('0x11')]('/:id',auth[_0x5407('0xc')](),controller[_0x5407('0x12')]);module[_0x5407('0x13')]=router;
\ No newline at end of file
+var _0xe4fb=['put','update','delete','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','post','create'];(function(_0x2bfa88,_0xc64230){var _0x2e7039=function(_0x4b87cc){while(--_0x4b87cc){_0x2bfa88['push'](_0x2bfa88['shift']());}};_0x2e7039(++_0xc64230);}(_0xe4fb,0x1ea));var _0xbe4f=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe4fb[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xbe4f('0x0'));var util=require(_0xbe4f('0x1'));var path=require(_0xbe4f('0x2'));var timeout=require('connect-timeout');var express=require(_0xbe4f('0x3'));var router=express['Router']();var fs_extra=require(_0xbe4f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbe4f('0x5'));var config=require(_0xbe4f('0x6'));var controller=require(_0xbe4f('0x7'));router[_0xbe4f('0x8')]('/',auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xa')]);router['get'](_0xbe4f('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbe4f('0xc')]('/',auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xd')]);router[_0xbe4f('0xe')](_0xbe4f('0xb'),auth[_0xbe4f('0x9')](),controller[_0xbe4f('0xf')]);router[_0xbe4f('0x10')](_0xbe4f('0xb'),auth[_0xbe4f('0x9')](),controller['destroy']);module[_0xbe4f('0x11')]=router;
\ No newline at end of file
index 2ee0e6b..7dcbb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b3b=['4800','v17,v27,v29','INTEGER','SIP','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','STRING','xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','7200','9600','12000','14400'];(function(_0x31131c,_0x30e12b){var _0x199fcb=function(_0x46aa82){while(--_0x46aa82){_0x31131c['push'](_0x31131c['shift']());}};_0x199fcb(++_0x30e12b);}(_0x0b3b,0xae));var _0xb0b3=function(_0x24801a,_0x304d83){_0x24801a=_0x24801a-0x0;var _0x5ce42b=_0x0b3b[_0x24801a];return _0x5ce42b;};'use strict';var Sequelize=require(_0xb0b3('0x0'));module['exports']={'name':{'type':Sequelize[_0xb0b3('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb0b3('0x1')]},'ecm':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xb0b3('0x1')],'defaultValue':_0xb0b3('0x2')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xb0b3('0x3')},'minrate':{'type':Sequelize[_0xb0b3('0x4')](_0xb0b3('0x5'),'4800',_0xb0b3('0x6'),_0xb0b3('0x7'),_0xb0b3('0x8'),_0xb0b3('0x9')),'defaultValue':_0xb0b3('0xa')},'maxrate':{'type':Sequelize['ENUM'](_0xb0b3('0x5'),_0xb0b3('0xa'),_0xb0b3('0x6'),_0xb0b3('0x7'),_0xb0b3('0x8'),'14400'),'defaultValue':_0xb0b3('0x9')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0xb0b3('0xb')},'gateway':{'type':Sequelize[_0xb0b3('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb0b3('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xb0b3('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb0b3('0x4')](_0xb0b3('0xd'),'IAX',_0xb0b3('0xe'),_0xb0b3('0xf')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xb0b3('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xb0b3('0x10')],'defaultValue':function(){return _0xb0b3('0x11');}},'notificationSound':{'type':Sequelize[_0xb0b3('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb0b3('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb0b3('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb0b3('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb0b3('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb0b3('0xc')],'allowNull':!![],'defaultValue':null,'comment':_0xb0b3('0x13')},'mandatoryDisposition':{'type':Sequelize[_0xb0b3('0x12')],'defaultValue':![],'comment':_0xb0b3('0x14'),'set':function(_0x365958){if(!_0x365958)this[_0xb0b3('0x15')](_0xb0b3('0x16'),null);this[_0xb0b3('0x15')]('mandatoryDisposition',_0x365958);}}};
\ No newline at end of file
+var _0x1ce4=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','yes','localstationid','4800','7200','9600','12000','14400','2400','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x24f862,_0x4b645a){var _0x198aa4=function(_0x131195){while(--_0x131195){_0x24f862['push'](_0x24f862['shift']());}};_0x198aa4(++_0x4b645a);}(_0x1ce4,0xdc));var _0x41ce=function(_0x78ef06,_0x3e9db6){_0x78ef06=_0x78ef06-0x0;var _0x456290=_0x1ce4[_0x78ef06];return _0x456290;};'use strict';var Sequelize=require(_0x41ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x41ce('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x41ce('0x1')]},'ecm':{'type':Sequelize[_0x41ce('0x2')](_0x41ce('0x3'),'no'),'defaultValue':_0x41ce('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x41ce('0x1')],'unique':_0x41ce('0x4')},'minrate':{'type':Sequelize['ENUM']('2400',_0x41ce('0x5'),_0x41ce('0x6'),_0x41ce('0x7'),_0x41ce('0x8'),_0x41ce('0x9')),'defaultValue':_0x41ce('0x5')},'maxrate':{'type':Sequelize[_0x41ce('0x2')](_0x41ce('0xa'),_0x41ce('0x5'),'7200',_0x41ce('0x7'),'12000',_0x41ce('0x9')),'defaultValue':_0x41ce('0x9')},'modem':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x41ce('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x41ce('0x2')]('SIP',_0x41ce('0xb'),_0x41ce('0xc'),_0x41ce('0xd')),'defaultValue':_0x41ce('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x41ce('0xf')],'defaultValue':function(){return _0x41ce('0x10');}},'notificationSound':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x41ce('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x41ce('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x41ce('0x11')],'defaultValue':![],'comment':_0x41ce('0x14'),'set':function(_0x3852e6){if(!_0x3852e6)this[_0x41ce('0x15')](_0x41ce('0x16'),null);this[_0x41ce('0x15')](_0x41ce('0x17'),_0x3852e6);}}};
\ No newline at end of file
index a649eb1..2e30097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ab=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxAccount.socket','register','jayson/promise','http','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','map','FaxAccount','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','show','params','mandatoryDispositionPause','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','FaxAccountId','findAll','rows','ids','CannedAnswer','getAnswers','removeAnswers','FaxInteraction','addInteraction','omit','getInteractions','CmContact','Contact','Owner','fullname','internal','Tags','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','context','exten','localstationid','app','system','description','Fax\x20Extension','push','Answer','CDR(type)=inbound-fax','Set','gateway','headerinfo','minrate','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','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1e7a55,_0x45e29c){var _0x67fc54=function(_0x5a16ef){while(--_0x5a16ef){_0x1e7a55['push'](_0x1e7a55['shift']());}};_0x67fc54(++_0x45e29c);}(_0xa2ab,0x179));var _0xba2a=function(_0x224e57,_0x2a4924){_0x224e57=_0x224e57-0x0;var _0x29adc0=_0xa2ab[_0x224e57];return _0x29adc0;};'use strict';var emlformat=require(_0xba2a('0x0'));var rimraf=require(_0xba2a('0x1'));var zipdir=require(_0xba2a('0x2'));var jsonpatch=require(_0xba2a('0x3'));var rp=require(_0xba2a('0x4'));var moment=require(_0xba2a('0x5'));var BPromise=require(_0xba2a('0x6'));var Mustache=require(_0xba2a('0x7'));var util=require('util');var path=require(_0xba2a('0x8'));var sox=require('sox');var csv=require(_0xba2a('0x9'));var ejs=require(_0xba2a('0xa'));var fs=require('fs');var fs_extra=require(_0xba2a('0xb'));var _=require(_0xba2a('0xc'));var squel=require(_0xba2a('0xd'));var crypto=require(_0xba2a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xba2a('0xf'));var toCsv=require(_0xba2a('0x9'));var querystring=require(_0xba2a('0x10'));var Papa=require(_0xba2a('0x11'));var Redis=require(_0xba2a('0x12'));var authService=require(_0xba2a('0x13'));var qs=require(_0xba2a('0x14'));var as=require(_0xba2a('0x15'));var hardwareService=require(_0xba2a('0x16'));var logger=require(_0xba2a('0x17'))(_0xba2a('0x18'));var utils=require(_0xba2a('0x19'));var config=require(_0xba2a('0x1a'));var licenseUtil=require(_0xba2a('0x1b'));var db=require(_0xba2a('0x1c'))['db'];config[_0xba2a('0x1d')]=_[_0xba2a('0x1e')](config[_0xba2a('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xba2a('0x1d')]));require(_0xba2a('0x1f'))[_0xba2a('0x20')](socket);var jayson=require(_0xba2a('0x21'));var client=jayson['client'][_0xba2a('0x22')]({'port':0x232c});var client9002=jayson['client'][_0xba2a('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x2e72a2,_0x1a0c0c,_0x3ba9be,_0x146eb5){return new BPromise(function(_0x56662f,_0x55889d){var _0x13dab6=_0x146eb5||client;return _0x13dab6['request'](_0x2e72a2,_0x3ba9be)[_0xba2a('0x23')](function(_0x188d9f){logger[_0xba2a('0x24')](_0xba2a('0x25'),_0x1a0c0c,_0xba2a('0x26'));logger[_0xba2a('0x27')](_0xba2a('0x28'),_0x1a0c0c,'request\x20sent',JSON[_0xba2a('0x29')](_0x188d9f));if(_0x188d9f[_0xba2a('0x2a')]){if(_0x188d9f[_0xba2a('0x2a')][_0xba2a('0x2b')]===0x1f4){logger[_0xba2a('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x1a0c0c,_0x188d9f[_0xba2a('0x2a')]['message']);return _0x55889d(_0x188d9f['error']['message']);}logger[_0xba2a('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x1a0c0c,_0x188d9f[_0xba2a('0x2a')][_0xba2a('0x2c')]);return _0x56662f(_0x188d9f[_0xba2a('0x2a')]['message']);}else{logger[_0xba2a('0x24')](_0xba2a('0x25'),_0x1a0c0c,'request\x20sent');_0x56662f(_0x188d9f[_0xba2a('0x2d')][_0xba2a('0x2c')]);}})[_0xba2a('0x2e')](function(_0x2f67c2){logger[_0xba2a('0x2a')](_0xba2a('0x25'),_0x1a0c0c,_0x2f67c2);_0x55889d(_0x2f67c2);});});}function respondWithStatusCode(_0x674819,_0x4c893c){_0x4c893c=_0x4c893c||0xcc;return function(_0x3b759c){if(_0x3b759c){return _0x674819[_0xba2a('0x2f')](_0x4c893c);}return _0x674819['status'](_0x4c893c)[_0xba2a('0x30')]();};}function respondWithResult(_0x5b2304,_0x3f149c){_0x3f149c=_0x3f149c||0xc8;return function(_0x3acc50){if(_0x3acc50){return _0x5b2304[_0xba2a('0x31')](_0x3f149c)[_0xba2a('0x32')](_0x3acc50);}};}function respondWithFilteredResult(_0x550d45,_0x3cf212){return function(_0x37cb92){if(_0x37cb92){var _0x1369af=typeof _0x3cf212[_0xba2a('0x33')]==='undefined'&&typeof _0x3cf212['limit']===_0xba2a('0x34');var _0x178327=_0x37cb92['count'];var _0xea21ea=_0x1369af?0x0:_0x3cf212[_0xba2a('0x33')];var _0x25d9ac=_0x1369af?_0x37cb92[_0xba2a('0x35')]:_0x3cf212['offset']+_0x3cf212[_0xba2a('0x36')];var _0x15d33b;if(_0x25d9ac>=_0x178327){_0x25d9ac=_0x178327;_0x15d33b=0xc8;}else{_0x15d33b=0xce;}_0x550d45[_0xba2a('0x31')](_0x15d33b);return _0x550d45[_0xba2a('0x37')]('Content-Range',_0xea21ea+'-'+_0x25d9ac+'/'+_0x178327)[_0xba2a('0x32')](_0x37cb92);}return null;};}function patchUpdates(_0x1d96e4){return function(_0x26c8b9){try{jsonpatch[_0xba2a('0x38')](_0x26c8b9,_0x1d96e4,!![]);}catch(_0x3cf9dc){return BPromise[_0xba2a('0x39')](_0x3cf9dc);}return _0x26c8b9['save']();};}function saveUpdates(_0x1ce402,_0x1a54cb){return function(_0x5e69be){if(_0x5e69be){return _0x5e69be[_0xba2a('0x3a')](_0x1ce402)[_0xba2a('0x23')](function(_0xeaae55){return _0xeaae55;});}return null;};}function removeEntity(_0x275e8d,_0x3dc9ed){return function(_0x453b8d){if(_0x453b8d){return _0x453b8d[_0xba2a('0x3b')]()[_0xba2a('0x23')](function(){var _0x5dcf69=_0x453b8d[_0xba2a('0x3c')]({'plain':!![]});var _0x168a49=_0xba2a('0x3d');return db[_0xba2a('0x3e')][_0xba2a('0x3b')]({'where':{'type':_0x168a49,'resourceId':_0x5dcf69['id']}})[_0xba2a('0x23')](function(){return _0x453b8d;});})[_0xba2a('0x23')](function(){_0x275e8d['status'](0xcc)[_0xba2a('0x30')]();});}};}function handleEntityNotFound(_0x1d6bcc,_0x44c632){return function(_0xe4bcd){if(!_0xe4bcd){_0x1d6bcc[_0xba2a('0x2f')](0x194);}return _0xe4bcd;};}function handleError(_0x498dc5,_0x3cbe2a){_0x3cbe2a=_0x3cbe2a||0x1f4;return function(_0x570790){logger[_0xba2a('0x2a')](_0x570790[_0xba2a('0x3f')]);if(_0x570790['name']){delete _0x570790[_0xba2a('0x40')];}_0x498dc5['status'](_0x3cbe2a)[_0xba2a('0x41')](_0x570790);};}exports[_0xba2a('0x42')]=function(_0x46ef19,_0x6088a2){var _0x5acb1e={'include':[{'model':db[_0xba2a('0x43')],'as':'mandatoryDispositionPause'}]},_0x46f730={},_0x2f2b23={'count':0x0,'rows':[]};var _0x41e91c=_[_0xba2a('0x44')](db[_0xba2a('0x45')][_0xba2a('0x46')],function(_0x4ba387){return{'name':_0x4ba387['fieldName'],'type':_0x4ba387[_0xba2a('0x47')][_0xba2a('0x48')]};});_0x46f730[_0xba2a('0x49')]=_[_0xba2a('0x44')](_0x41e91c,'name');_0x46f730[_0xba2a('0x4a')]=_[_0xba2a('0x4b')](_0x46ef19[_0xba2a('0x4a')]);_0x46f730[_0xba2a('0x4c')]=_[_0xba2a('0x4d')](_0x46f730['model'],_0x46f730[_0xba2a('0x4a')]);_0x5acb1e['attributes']=_['intersection'](_0x46f730[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x46ef19[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x5acb1e[_0xba2a('0x4f')]=_0x5acb1e[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x5acb1e['attributes']:_0x46f730['model'];if(!_0x46ef19[_0xba2a('0x4a')]['hasOwnProperty'](_0xba2a('0x51'))){_0x5acb1e[_0xba2a('0x36')]=qs['limit'](_0x46ef19[_0xba2a('0x4a')][_0xba2a('0x36')]);_0x5acb1e[_0xba2a('0x33')]=qs[_0xba2a('0x33')](_0x46ef19['query'][_0xba2a('0x33')]);}_0x5acb1e[_0xba2a('0x52')]=qs[_0xba2a('0x53')](_0x46ef19[_0xba2a('0x4a')][_0xba2a('0x53')]);_0x5acb1e[_0xba2a('0x54')]=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x46ef19[_0xba2a('0x4a')],_0x46f730['filters']),_0x41e91c);if(_0x46ef19[_0xba2a('0x4a')][_0xba2a('0x56')]){_0x5acb1e[_0xba2a('0x54')]=_['merge'](_0x5acb1e[_0xba2a('0x54')],{'$or':_[_0xba2a('0x44')](_0x41e91c,function(_0x3dbb2b){if(_0x3dbb2b[_0xba2a('0x47')]!==_0xba2a('0x57')){var _0x44a59={};_0x44a59[_0x3dbb2b['name']]={'$like':'%'+_0x46ef19['query'][_0xba2a('0x56')]+'%'};return _0x44a59;}})});}_0x5acb1e=_['merge']({},_0x5acb1e,_0x46ef19[_0xba2a('0x58')]);var _0x11662f={'where':_0x5acb1e[_0xba2a('0x54')]};return db[_0xba2a('0x45')][_0xba2a('0x35')](_0x11662f)['then'](function(_0xa712ed){_0x2f2b23[_0xba2a('0x35')]=_0xa712ed;if(_0x46ef19[_0xba2a('0x4a')][_0xba2a('0x59')]){_0x5acb1e[_0xba2a('0x5a')]=[{'all':!![]}];}return db[_0xba2a('0x45')]['findAll'](_0x5acb1e);})[_0xba2a('0x23')](function(_0x3675ac){_0x2f2b23['rows']=_0x3675ac;return _0x2f2b23;})['then'](respondWithFilteredResult(_0x6088a2,_0x5acb1e))[_0xba2a('0x2e')](handleError(_0x6088a2,null));};exports[_0xba2a('0x5b')]=function(_0x2e23c0,_0x20f76c){var _0x3ced00={'raw':![],'where':{'id':_0x2e23c0[_0xba2a('0x5c')]['id']},'include':[{'model':db[_0xba2a('0x43')],'as':_0xba2a('0x5d')}]},_0x52b1f7={};_0x52b1f7[_0xba2a('0x49')]=_['keys'](db[_0xba2a('0x45')][_0xba2a('0x46')]);_0x52b1f7['query']=_[_0xba2a('0x4b')](_0x2e23c0[_0xba2a('0x4a')]);_0x52b1f7[_0xba2a('0x4c')]=_['intersection'](_0x52b1f7[_0xba2a('0x49')],_0x52b1f7[_0xba2a('0x4a')]);_0x3ced00[_0xba2a('0x4f')]=_[_0xba2a('0x4d')](_0x52b1f7[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x2e23c0[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x3ced00[_0xba2a('0x4f')]=_0x3ced00[_0xba2a('0x4f')]['length']?_0x3ced00[_0xba2a('0x4f')]:_0x52b1f7[_0xba2a('0x49')];if(_0x2e23c0['query'][_0xba2a('0x59')]){_0x3ced00[_0xba2a('0x5a')]=[{'all':!![]}];}_0x3ced00=_[_0xba2a('0x5e')]({},_0x3ced00,_0x2e23c0['options']);return db[_0xba2a('0x45')][_0xba2a('0x5f')](_0x3ced00)[_0xba2a('0x23')](handleEntityNotFound(_0x20f76c,null))[_0xba2a('0x23')](respondWithResult(_0x20f76c,null))[_0xba2a('0x2e')](handleError(_0x20f76c,null));};exports[_0xba2a('0x60')]=function(_0xfe4959,_0x5b893a){return db[_0xba2a('0x45')][_0xba2a('0x60')](_0xfe4959[_0xba2a('0x61')],{})['then'](function(_0x316977){var _0x40da1c=_0xfe4959[_0xba2a('0x62')][_0xba2a('0x3c')]({'plain':!![]});if(!_0x40da1c)throw new Error(_0xba2a('0x63'));if(_0x40da1c['role']===_0xba2a('0x62')){var _0x4d41d1=_0x316977[_0xba2a('0x3c')]({'plain':!![]});var _0x2a9ab3='FaxAccounts';return db[_0xba2a('0x64')]['find']({'where':{'name':_0x2a9ab3,'userProfileId':_0x40da1c[_0xba2a('0x65')]},'raw':!![]})['then'](function(_0x119714){if(_0x119714&&_0x119714[_0xba2a('0x66')]===0x0){return db[_0xba2a('0x3e')][_0xba2a('0x60')]({'name':_0x4d41d1[_0xba2a('0x40')],'resourceId':_0x4d41d1['id'],'type':_0x119714[_0xba2a('0x40')],'sectionId':_0x119714['id']},{})['then'](function(){return _0x316977;});}else{return _0x316977;}})[_0xba2a('0x2e')](function(_0x31626f){logger['error'](_0xba2a('0x67'),_0x31626f);throw _0x31626f;});}return _0x316977;})['then'](respondWithResult(_0x5b893a,0xc9))[_0xba2a('0x2e')](handleError(_0x5b893a,null));};exports[_0xba2a('0x3a')]=function(_0x31621c,_0x346fe0){if(_0x31621c['body']['id']){delete _0x31621c[_0xba2a('0x61')]['id'];}return db['FaxAccount'][_0xba2a('0x5f')]({'where':{'id':_0x31621c[_0xba2a('0x5c')]['id']},'include':[{'model':db[_0xba2a('0x43')],'as':_0xba2a('0x5d')}]})[_0xba2a('0x23')](handleEntityNotFound(_0x346fe0,null))[_0xba2a('0x23')](saveUpdates(_0x31621c['body'],null))[_0xba2a('0x23')](respondWithResult(_0x346fe0,null))['catch'](handleError(_0x346fe0,null));};exports[_0xba2a('0x3b')]=function(_0x182d1d,_0x192641){return db[_0xba2a('0x45')][_0xba2a('0x5f')]({'where':{'id':_0x182d1d[_0xba2a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x192641,null))[_0xba2a('0x23')](removeEntity(_0x192641,null))[_0xba2a('0x2e')](handleError(_0x192641,null));};exports[_0xba2a('0x68')]=function(_0x6bda84,_0x1140db){return db[_0xba2a('0x45')][_0xba2a('0x68')]()['then'](respondWithResult(_0x1140db,null))[_0xba2a('0x2e')](handleError(_0x1140db,null));};exports[_0xba2a('0x69')]=function(_0x2e8275,_0x356a93,_0x213b82){if(_0x2e8275[_0xba2a('0x61')]['id']){delete _0x2e8275[_0xba2a('0x61')]['id'];}return db[_0xba2a('0x45')]['find']({'where':{'id':_0x2e8275['params']['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x356a93,null))['then'](function(_0x3ebbf0){if(_0x3ebbf0){_0x2e8275[_0xba2a('0x61')]['FaxAccountId']=_0x3ebbf0['id'];return db[_0xba2a('0x6a')][_0xba2a('0x60')](_0x2e8275[_0xba2a('0x61')]);}})[_0xba2a('0x23')](respondWithResult(_0x356a93,null))[_0xba2a('0x2e')](handleError(_0x356a93,null));};exports[_0xba2a('0x6b')]=function(_0x2792e8,_0x30d996,_0x592a98){var _0x5ea845={'raw':![],'where':{}};var _0x399764={};var _0x14d86e={'count':0x0,'rows':[]};return db[_0xba2a('0x45')][_0xba2a('0x6c')]({'where':{'id':_0x2792e8[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x30d996,null))[_0xba2a('0x23')](function(_0x5cd981){if(_0x5cd981){_0x399764[_0xba2a('0x49')]=_[_0xba2a('0x4b')](db[_0xba2a('0x6a')][_0xba2a('0x46')]);_0x399764[_0xba2a('0x4a')]=_[_0xba2a('0x4b')](_0x2792e8[_0xba2a('0x4a')]);_0x399764[_0xba2a('0x4c')]=_[_0xba2a('0x4d')](_0x399764[_0xba2a('0x49')],_0x399764[_0xba2a('0x4a')]);_0x5ea845[_0xba2a('0x4f')]=_['intersection'](_0x399764[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x2792e8['query'][_0xba2a('0x4e')]));_0x5ea845['attributes']=_0x5ea845[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x5ea845[_0xba2a('0x4f')]:_0x399764[_0xba2a('0x49')];if(!_0x2792e8['query'][_0xba2a('0x6d')](_0xba2a('0x51'))){_0x5ea845[_0xba2a('0x36')]=qs[_0xba2a('0x36')](_0x2792e8['query']['limit']);_0x5ea845['offset']=qs[_0xba2a('0x33')](_0x2792e8['query'][_0xba2a('0x33')]);}_0x5ea845[_0xba2a('0x52')]=qs[_0xba2a('0x53')](_0x2792e8['query']['sort']);_0x5ea845['where']=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x2792e8['query'],_0x399764['filters']));_0x5ea845[_0xba2a('0x54')][_0xba2a('0x6e')]=_0x5cd981['id'];if(_0x2792e8[_0xba2a('0x4a')][_0xba2a('0x56')]){_0x5ea845[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x5ea845['where'],{'$or':_[_0xba2a('0x44')](_0x5ea845[_0xba2a('0x4f')],function(_0x11ebd1){var _0x52b63f={};_0x52b63f[_0x11ebd1]={'$like':'%'+_0x2792e8[_0xba2a('0x4a')][_0xba2a('0x56')]+'%'};return _0x52b63f;})});}_0x5ea845=_[_0xba2a('0x5e')]({},_0x5ea845,_0x2792e8[_0xba2a('0x58')]);return db[_0xba2a('0x6a')][_0xba2a('0x35')]({'where':_0x5ea845['where']})[_0xba2a('0x23')](function(_0x5b3302){_0x14d86e[_0xba2a('0x35')]=_0x5b3302;if(_0x2792e8['query'][_0xba2a('0x59')]){_0x5ea845[_0xba2a('0x5a')]=[{'all':!![]}];}return db[_0xba2a('0x6a')][_0xba2a('0x6f')](_0x5ea845);})[_0xba2a('0x23')](function(_0xfa5bb7){_0x14d86e[_0xba2a('0x70')]=_0xfa5bb7;return _0x14d86e;});}})[_0xba2a('0x23')](respondWithFilteredResult(_0x30d996,_0x5ea845))[_0xba2a('0x2e')](handleError(_0x30d996,null));};exports['removeDispositions']=function(_0x588157,_0x95616b,_0xefead6){return db['FaxAccount'][_0xba2a('0x5f')]({'where':{'id':_0x588157['params']['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x95616b,null))['then'](function(_0xba93de){if(_0xba93de){return _0xba93de['removeDispositions'](_0x588157[_0xba2a('0x4a')][_0xba2a('0x71')]);}})[_0xba2a('0x23')](respondWithStatusCode(_0x95616b,null))[_0xba2a('0x2e')](handleError(_0x95616b,null));};exports['addAnswer']=function(_0x54b150,_0x2b5d5e,_0x18c1b7){if(_0x54b150[_0xba2a('0x61')]['id']){delete _0x54b150[_0xba2a('0x61')]['id'];}return db[_0xba2a('0x45')]['find']({'where':{'id':_0x54b150[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x2b5d5e,null))[_0xba2a('0x23')](function(_0x2201ee){if(_0x2201ee){_0x54b150[_0xba2a('0x61')]['FaxAccountId']=_0x2201ee['id'];return db[_0xba2a('0x72')][_0xba2a('0x60')](_0x54b150[_0xba2a('0x61')]);}})[_0xba2a('0x23')](respondWithResult(_0x2b5d5e,null))['catch'](handleError(_0x2b5d5e,null));};exports[_0xba2a('0x73')]=function(_0x277a39,_0x46bb4c,_0x9884ed){var _0x58c473={'raw':![],'where':{}};var _0x325566={};var _0x78ea80={'count':0x0,'rows':[]};return db[_0xba2a('0x45')][_0xba2a('0x6c')]({'where':{'id':_0x277a39[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x46bb4c,null))['then'](function(_0x5621d8){if(_0x5621d8){_0x325566[_0xba2a('0x49')]=_[_0xba2a('0x4b')](db[_0xba2a('0x72')][_0xba2a('0x46')]);_0x325566['query']=_[_0xba2a('0x4b')](_0x277a39[_0xba2a('0x4a')]);_0x325566[_0xba2a('0x4c')]=_['intersection'](_0x325566[_0xba2a('0x49')],_0x325566[_0xba2a('0x4a')]);_0x58c473[_0xba2a('0x4f')]=_[_0xba2a('0x4d')](_0x325566[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x277a39[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x58c473[_0xba2a('0x4f')]=_0x58c473[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x58c473[_0xba2a('0x4f')]:_0x325566[_0xba2a('0x49')];if(!_0x277a39[_0xba2a('0x4a')][_0xba2a('0x6d')](_0xba2a('0x51'))){_0x58c473[_0xba2a('0x36')]=qs['limit'](_0x277a39[_0xba2a('0x4a')]['limit']);_0x58c473[_0xba2a('0x33')]=qs[_0xba2a('0x33')](_0x277a39[_0xba2a('0x4a')][_0xba2a('0x33')]);}_0x58c473[_0xba2a('0x52')]=qs['sort'](_0x277a39[_0xba2a('0x4a')]['sort']);_0x58c473[_0xba2a('0x54')]=qs[_0xba2a('0x4c')](_['pick'](_0x277a39[_0xba2a('0x4a')],_0x325566['filters']));_0x58c473[_0xba2a('0x54')][_0xba2a('0x6e')]=_0x5621d8['id'];if(_0x277a39['query'][_0xba2a('0x56')]){_0x58c473[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x58c473[_0xba2a('0x54')],{'$or':_[_0xba2a('0x44')](_0x58c473[_0xba2a('0x4f')],function(_0x562d37){var _0xb41552={};_0xb41552[_0x562d37]={'$like':'%'+_0x277a39['query'][_0xba2a('0x56')]+'%'};return _0xb41552;})});}_0x58c473=_['merge']({},_0x58c473,_0x277a39[_0xba2a('0x58')]);return db['CannedAnswer'][_0xba2a('0x35')]({'where':_0x58c473[_0xba2a('0x54')]})[_0xba2a('0x23')](function(_0x21928f){_0x78ea80[_0xba2a('0x35')]=_0x21928f;if(_0x277a39['query']['includeAll']){_0x58c473['include']=[{'all':!![]}];}return db[_0xba2a('0x72')][_0xba2a('0x6f')](_0x58c473);})[_0xba2a('0x23')](function(_0xe2c88c){_0x78ea80[_0xba2a('0x70')]=_0xe2c88c;return _0x78ea80;});}})['then'](respondWithFilteredResult(_0x46bb4c,_0x58c473))[_0xba2a('0x2e')](handleError(_0x46bb4c,null));};exports[_0xba2a('0x74')]=function(_0x36a676,_0x55c956,_0x3aa7e3){return db['FaxAccount'][_0xba2a('0x5f')]({'where':{'id':_0x36a676['params']['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x55c956,null))[_0xba2a('0x23')](function(_0xf3c505){if(_0xf3c505){return _0xf3c505[_0xba2a('0x74')](_0x36a676[_0xba2a('0x4a')][_0xba2a('0x71')]);}})[_0xba2a('0x23')](respondWithStatusCode(_0x55c956,null))[_0xba2a('0x2e')](handleError(_0x55c956,null));};exports['addInteraction']=function(_0x143322,_0x5dd6aa,_0x50fac2){return db[_0xba2a('0x75')][_0xba2a('0x5f')]({'where':{'id':_0x143322['params']['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x5dd6aa,null))[_0xba2a('0x23')](function(_0x216813){if(_0x216813){return _0x216813[_0xba2a('0x76')](_0x143322[_0xba2a('0x61')]['ids'],_[_0xba2a('0x77')](_0x143322['body'],[_0xba2a('0x71'),'id'])||{});}})[_0xba2a('0x23')](respondWithResult(_0x5dd6aa,null))[_0xba2a('0x2e')](handleError(_0x5dd6aa,null));};exports[_0xba2a('0x78')]=function(_0x131016,_0x5cc00e,_0x208442){var _0x43c2b3={'raw':![],'where':{}};var _0x31f51b={};var _0x19328c={'count':0x0,'rows':[]};return db[_0xba2a('0x45')][_0xba2a('0x6c')]({'where':{'id':_0x131016[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x5cc00e,null))['then'](function(_0x514646){if(_0x514646){_0x31f51b[_0xba2a('0x49')]=_[_0xba2a('0x4b')](db['FaxInteraction'][_0xba2a('0x46')]);_0x31f51b[_0xba2a('0x4a')]=_['keys'](_0x131016[_0xba2a('0x4a')]);_0x31f51b['filters']=_['intersection'](_0x31f51b[_0xba2a('0x49')],_0x31f51b['query']);_0x43c2b3[_0xba2a('0x4f')]=_[_0xba2a('0x4d')](_0x31f51b[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x131016[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x43c2b3[_0xba2a('0x4f')]=_0x43c2b3[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x43c2b3[_0xba2a('0x4f')]:_0x31f51b['model'];if(!_0x131016[_0xba2a('0x4a')][_0xba2a('0x6d')](_0xba2a('0x51'))){_0x43c2b3[_0xba2a('0x36')]=qs['limit'](_0x131016['query'][_0xba2a('0x36')]);_0x43c2b3[_0xba2a('0x33')]=qs[_0xba2a('0x33')](_0x131016[_0xba2a('0x4a')]['offset']);}_0x43c2b3['order']=qs[_0xba2a('0x53')](_0x131016['query']['sort']);_0x43c2b3['where']=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x131016[_0xba2a('0x4a')],_0x31f51b[_0xba2a('0x4c')]));_0x43c2b3[_0xba2a('0x54')][_0xba2a('0x6e')]=_0x514646['id'];if(_0x131016[_0xba2a('0x4a')][_0xba2a('0x56')]){_0x43c2b3[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x43c2b3['where'],{'$or':_['map'](_0x43c2b3[_0xba2a('0x4f')],function(_0xa62268){var _0x421696={};_0x421696[_0xa62268]={'$like':'%'+_0x131016[_0xba2a('0x4a')][_0xba2a('0x56')]+'%'};return _0x421696;})});}_0x43c2b3=_['merge']({},_0x43c2b3,_0x131016['options']);return db[_0xba2a('0x75')]['count']({'where':_0x43c2b3[_0xba2a('0x54')]})[_0xba2a('0x23')](function(_0x386173){_0x19328c['count']=_0x386173;if(_0x131016['query'][_0xba2a('0x59')]){_0x43c2b3[_0xba2a('0x5a')]=[{'model':db[_0xba2a('0x79')],'as':_0xba2a('0x7a'),'required':![]},{'model':db['User'],'as':_0xba2a('0x7b'),'attributes':['name',_0xba2a('0x7c'),_0xba2a('0x7d')],'required':![]},{'model':db['Tag'],'as':_0xba2a('0x7e'),'attributes':['id','name','color'],'where':_0x131016[_0xba2a('0x4a')][_0xba2a('0x7f')]?{'id':_0x131016[_0xba2a('0x4a')][_0xba2a('0x7f')]}:undefined,'required':_0x131016[_0xba2a('0x4a')][_0xba2a('0x7f')]?!![]:![]}];}return db['FaxInteraction']['findAll'](_0x43c2b3);})[_0xba2a('0x23')](function(_0x18bff9){_0x19328c['rows']=_0x18bff9;return _0x19328c;});}})[_0xba2a('0x23')](respondWithFilteredResult(_0x5cc00e,_0x43c2b3))[_0xba2a('0x2e')](handleError(_0x5cc00e,null));};exports[_0xba2a('0x80')]=function(_0x5a5c21,_0x42694d){var _0x54ec73=_0x5a5c21[_0xba2a('0x5c')]['id'];var _0x959dfa=_0x5a5c21['body'];var _0x216984=0xc8;var _0x5c0c41=null;return db[_0xba2a('0x81')][_0xba2a('0x82')]({'isolationLevel':db[_0xba2a('0x81')][_0xba2a('0x83')][_0xba2a('0x84')][_0xba2a('0x85')]},function(_0x57fc95){return db['FaxAccount'][_0xba2a('0x6c')]({'where':{'id':_0x54ec73},'transaction':_0x57fc95})['then'](function(_0x207d56){if(_0x207d56){return db[_0xba2a('0x86')]['destroy']({'where':{'FaxAccountId':_0x54ec73},'transaction':_0x57fc95})[_0xba2a('0x23')](function(){var _0x244a61=_[_0xba2a('0x44')](_0x959dfa,function(_0x17ee86){_0x17ee86[_0xba2a('0x6e')]=_0x54ec73;return _0x17ee86;});return db[_0xba2a('0x86')][_0xba2a('0x87')](_0x244a61,{'transaction':_0x57fc95});});}else{_0x216984=0x194;_0x5c0c41=[];}});})['then'](function(){if(_0x216984!==0x194){return db[_0xba2a('0x86')][_0xba2a('0x88')]({'where':{'FaxAccountId':_0x54ec73},'order':_0xba2a('0x89')})[_0xba2a('0x23')](function(_0x563ad9){_0x5c0c41=_0x563ad9;});}})['catch'](function(_0x175668){_0x216984=0x1f4;logger[_0xba2a('0x2a')](_0x175668[_0xba2a('0x3f')]);if(_0x175668[_0xba2a('0x40')]){delete _0x175668['name'];}_0x5c0c41=_0x175668;})[_0xba2a('0x8a')](function(){if(_0x5c0c41===null){_0x42694d[_0xba2a('0x2f')](_0x216984);}else{if(_0x216984===0x1f4){_0x42694d[_0xba2a('0x31')](_0x216984)[_0xba2a('0x41')](_0x5c0c41);}else{_0x42694d[_0xba2a('0x31')](_0x216984)[_0xba2a('0x32')](_0x5c0c41);}}});};exports[_0xba2a('0x8b')]=function(_0x2e1c9e,_0x2db13a,_0x42abbd){var _0x4ae53b={};var _0x355655={};var _0x23c313;var _0x4a62a3;return db[_0xba2a('0x45')]['findOne']({'where':{'id':_0x2e1c9e[_0xba2a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2db13a,null))[_0xba2a('0x23')](function(_0x2130b1){if(_0x2130b1){_0x23c313=_0x2130b1;_0x355655['model']=_[_0xba2a('0x4b')](db[_0xba2a('0x86')]['rawAttributes']);_0x355655[_0xba2a('0x4a')]=_['keys'](_0x2e1c9e['query']);_0x355655[_0xba2a('0x4c')]=_['intersection'](_0x355655[_0xba2a('0x49')],_0x355655[_0xba2a('0x4a')]);_0x4ae53b[_0xba2a('0x4f')]=_[_0xba2a('0x4d')](_0x355655[_0xba2a('0x49')],qs[_0xba2a('0x4e')](_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x4ae53b[_0xba2a('0x4f')]=_0x4ae53b[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x4ae53b[_0xba2a('0x4f')]:_0x355655['model'];_0x4ae53b[_0xba2a('0x52')]=qs['sort'](_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x53')]);_0x4ae53b[_0xba2a('0x54')]=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x2e1c9e['query'],_0x355655['filters']));if(_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x56')]){_0x4ae53b[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x4ae53b[_0xba2a('0x54')],{'$or':_['map'](_0x4ae53b[_0xba2a('0x4f')],function(_0x5bdf4f){var _0x1768af={};_0x1768af[_0x5bdf4f]={'$like':'%'+_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x56')]+'%'};return _0x1768af;})});}_0x4ae53b=_[_0xba2a('0x5e')]({},_0x4ae53b,_0x2e1c9e['options']);return _0x23c313[_0xba2a('0x8b')](_0x4ae53b);}})[_0xba2a('0x23')](function(_0x332baf){if(_0x332baf){_0x4a62a3=_0x332baf[_0xba2a('0x50')];if(!_0x2e1c9e['query'][_0xba2a('0x6d')](_0xba2a('0x51'))){_0x4ae53b[_0xba2a('0x36')]=qs[_0xba2a('0x36')](_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x36')]);_0x4ae53b[_0xba2a('0x33')]=qs[_0xba2a('0x33')](_0x2e1c9e[_0xba2a('0x4a')][_0xba2a('0x33')]);}return _0x23c313[_0xba2a('0x8b')](_0x4ae53b);}})['then'](function(_0x5de293){if(_0x5de293){return _0x5de293?{'count':_0x4a62a3,'rows':_0x5de293}:null;}})['then'](respondWithResult(_0x2db13a,null))[_0xba2a('0x2e')](handleError(_0x2db13a,null));};function Extension(_0x1a5ed2,_0x3d032d,_0x18b553,_0x5f1ee2){this[_0xba2a('0x8c')]='from-voip-provider';this[_0xba2a('0x8d')]=_0x1a5ed2[_0xba2a('0x8e')];this[_0xba2a('0x8f')]=_0x5f1ee2;this[_0xba2a('0x47')]=_0xba2a('0x90');this[_0xba2a('0x91')]=_0xba2a('0x92');this[_0xba2a('0x6e')]=_0x1a5ed2['id'];this[_0xba2a('0x89')]=_0x3d032d;this['appdata']=_0x18b553;}function createExtensionsReciveFax(_0x284eea){var _0x3eaad1=0x1;var _0xd79c61=[];_0xd79c61[_0xba2a('0x93')](new Extension(_0x284eea,_0x3eaad1,'',_0xba2a('0x94')));_0x3eaad1+=0x1;_0xd79c61['push'](new Extension(_0x284eea,_0x3eaad1,_0xba2a('0x95'),_0xba2a('0x96')));_0x3eaad1+=0x1;for(var _0x33e20e in _0x284eea){if(_0x284eea[_0xba2a('0x6d')](_0x33e20e)&&(_0x33e20e==='ecm'||_0x33e20e===_0xba2a('0x8e')||_0x33e20e===_0xba2a('0x97')||_0x33e20e==='faxdetect'||_0x33e20e===_0xba2a('0x98')||_0x33e20e==='maxrate'||_0x33e20e===_0xba2a('0x99')||_0x33e20e==='modem'||_0x33e20e===_0xba2a('0x9a'))){_0xd79c61[_0xba2a('0x93')](new Extension(_0x284eea,_0x3eaad1,_0xba2a('0x9b')+_0x33e20e+')='+_0x284eea[_0x33e20e],_0xba2a('0x96')));_0x3eaad1+=0x1;}}_0xd79c61[_0xba2a('0x93')](new Extension(_0x284eea,_0x3eaad1,'6',_0xba2a('0x9c')));_0x3eaad1+=0x1;_0xd79c61[_0xba2a('0x93')](new Extension(_0x284eea,_0x3eaad1,_0xba2a('0x9d'),_0xba2a('0x9e')));_0x3eaad1=0x0;return _0xd79c61;}exports['addAccountApplications']=function(_0x4fa05a,_0x374e9a,_0x25265b){var _0x4baaac;return db[_0xba2a('0x81')][_0xba2a('0x82')](function(_0xeee748){return db['FaxAccount'][_0xba2a('0x60')](_0x4fa05a[_0xba2a('0x61')],{'transaction':_0xeee748})[_0xba2a('0x23')](function(_0x1d0076){_0x4baaac=_0x1d0076[_0xba2a('0x3c')]({'plain':!![]});return db['VoiceExtension']['bulkCreate'](createExtensionsReciveFax(_0x4baaac),{'transaction':_0xeee748});});})[_0xba2a('0x23')](function(){return _0x4baaac;})[_0xba2a('0x23')](respondWithResult(_0x374e9a,null))[_0xba2a('0x2e')](handleError(_0x374e9a,null));};exports[_0xba2a('0x9f')]=function(_0x36e8d7,_0x56ce8d,_0x4a3eaf){var _0x375623;return db[_0xba2a('0x81')][_0xba2a('0x82')](function(_0x39d571){return db['FaxAccount'][_0xba2a('0x3a')](_0x36e8d7[_0xba2a('0x61')],{'where':{'id':_0x36e8d7[_0xba2a('0x61')]['id']},'transaction':_0x39d571})['then'](function(_0x2a1765){return db[_0xba2a('0xa0')][_0xba2a('0x3b')]({'where':{'FaxAccountId':_0x36e8d7['body']['id']},'transaction':_0x39d571})['then'](function(_0x2380a8){return db[_0xba2a('0xa0')][_0xba2a('0x87')](createExtensionsReciveFax(_[_0xba2a('0x77')](_0x36e8d7['body'],[_0xba2a('0xa1'),_0xba2a('0x48'),_0xba2a('0xa2'),_0xba2a('0xa3'),_0xba2a('0xa4'),'ListId'])),{'transaction':_0x39d571});});});})['then'](function(){return db[_0xba2a('0x45')][_0xba2a('0xa5')](_0x36e8d7[_0xba2a('0x61')]['id']);})[_0xba2a('0x23')](respondWithResult(_0x56ce8d,null))[_0xba2a('0x2e')](handleError(_0x56ce8d,null));};exports[_0xba2a('0xa6')]=function(_0x42d9b6,_0x4fc87f,_0x114146){var _0x3911b1={'raw':!![],'where':{}};var _0x55f55c={};var _0x2d39c0={'count':0x0,'rows':[]};return db[_0xba2a('0x45')][_0xba2a('0x6c')]({'where':{'id':_0x42d9b6['params']['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x4fc87f,null))[_0xba2a('0x23')](function(_0xc5f6f9){if(_0xc5f6f9){_0x55f55c['model']=_[_0xba2a('0x4b')](db[_0xba2a('0xa7')][_0xba2a('0x46')]);_0x55f55c[_0xba2a('0x4a')]=_[_0xba2a('0x4b')](_0x42d9b6[_0xba2a('0x4a')]);_0x55f55c[_0xba2a('0x4c')]=_['intersection'](_0x55f55c[_0xba2a('0x49')],_0x55f55c[_0xba2a('0x4a')]);_0x3911b1[_0xba2a('0x4f')]=_[_0xba2a('0x4d')](_0x55f55c['model'],qs[_0xba2a('0x4e')](_0x42d9b6[_0xba2a('0x4a')][_0xba2a('0x4e')]));_0x3911b1[_0xba2a('0x4f')]=_0x3911b1[_0xba2a('0x4f')][_0xba2a('0x50')]?_0x3911b1[_0xba2a('0x4f')]:_0x55f55c['model'];if(!_0x42d9b6['query']['hasOwnProperty'](_0xba2a('0x51'))){_0x3911b1[_0xba2a('0x36')]=qs[_0xba2a('0x36')](_0x42d9b6[_0xba2a('0x4a')][_0xba2a('0x36')]);_0x3911b1[_0xba2a('0x33')]=qs[_0xba2a('0x33')](_0x42d9b6[_0xba2a('0x4a')]['offset']);}_0x3911b1[_0xba2a('0x52')]=qs[_0xba2a('0x53')](_0x42d9b6[_0xba2a('0x4a')]['sort']);_0x3911b1['where']=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x42d9b6[_0xba2a('0x4a')],_0x55f55c[_0xba2a('0x4c')]));_0x3911b1[_0xba2a('0x54')][_0xba2a('0x6e')]=_0xc5f6f9['id'];if(_0x42d9b6['query'][_0xba2a('0x56')]){_0x3911b1[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x3911b1[_0xba2a('0x54')],{'$or':_[_0xba2a('0x44')](_0x3911b1['attributes'],function(_0xedd5e2){var _0x9e43df={};_0x9e43df[_0xedd5e2]={'$like':'%'+_0x42d9b6['query']['filter']+'%'};return _0x9e43df;})});}if(_0x42d9b6[_0xba2a('0x4a')]['$gte']){var _0x4892a1=_0x42d9b6[_0xba2a('0x4a')][_0xba2a('0xa8')]['split'](',');var _0x1c7295={};_0x1c7295[_0x4892a1[0x0]]={'$gte':moment(_0x4892a1[0x1])[_0xba2a('0xa9')](_0xba2a('0xaa'))};_0x3911b1[_0xba2a('0x54')]=_['merge'](_0x3911b1[_0xba2a('0x54')],_0x1c7295);}_0x3911b1=_['merge']({},_0x3911b1,_0x42d9b6[_0xba2a('0x58')]);return db[_0xba2a('0xa7')][_0xba2a('0x35')]({'where':_0x3911b1[_0xba2a('0x54')]})['then'](function(_0x5ed235){_0x2d39c0[_0xba2a('0x35')]=_0x5ed235;if(_0x42d9b6[_0xba2a('0x4a')]['includeAll']){_0x3911b1[_0xba2a('0x5a')]=[{'all':!![]}];}return db[_0xba2a('0xa7')][_0xba2a('0x6f')](_0x3911b1);})[_0xba2a('0x23')](function(_0x3999f1){_0x2d39c0[_0xba2a('0x70')]=_0x3999f1;return _0x2d39c0;});}})[_0xba2a('0x23')](respondWithFilteredResult(_0x4fc87f,_0x3911b1))[_0xba2a('0x2e')](handleError(_0x4fc87f,null));};exports[_0xba2a('0x41')]=function(_0x1f1264,_0x2a9a4a,_0x11da1f){var _0x297442,_0x387744={},_0x5a1c9a;if(_0x1f1264[_0xba2a('0x61')]['to']){_0x5a1c9a=_0x1f1264[_0xba2a('0x61')]['to'][0x0];}return db[_0xba2a('0x45')]['find']({'where':{'id':_0x1f1264[_0xba2a('0x5c')]['id']},'include':[{'model':db[_0xba2a('0xab')],'as':_0xba2a('0xac'),'include':[{'model':db[_0xba2a('0x79')],'as':_0xba2a('0xad'),'where':{'fax':_0x5a1c9a},'limit':0x1,'order':[[_0xba2a('0xa3'),_0xba2a('0xae')]]}]}]})[_0xba2a('0x23')](handleEntityNotFound(_0x2a9a4a,null))[_0xba2a('0x23')](function(_0x485b4d){_0x297442=_0x485b4d;if(_0x1f1264['body'][_0xba2a('0xaf')]&&_0x1f1264[_0xba2a('0x61')]['attachments'][_0xba2a('0x50')]){for(var _0x5a98f3=0x0;_0x5a98f3<_0x1f1264[_0xba2a('0x61')]['attachments'][_0xba2a('0x50')];_0x5a98f3+=0x1){_0x1f1264[_0xba2a('0x61')]['attachments'][_0x5a98f3]={'filename':_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][_0x5a98f3][_0xba2a('0x40')],'id':_0x1f1264['body']['attachments'][_0x5a98f3]['id'],'path':path[_0xba2a('0xb0')](config[_0xba2a('0xb1')],'server/files/attachments',_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][_0x5a98f3][_0xba2a('0xb2')])};}}return respondWithRpcPromise(_0xba2a('0xb3'),_0xba2a('0xb3'),{'FaxAccountId':_[_0xba2a('0xb4')](_0x1f1264[_0xba2a('0x5c')]['id'])?undefined:_0x1f1264['params']['id'],'path':_[_0xba2a('0xb4')](_0x1f1264['body'][_0xba2a('0xaf')][0x0][_0xba2a('0x8')])?undefined:_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][0x0][_0xba2a('0x8')],'fax':_[_0xba2a('0xb4')](_0x1f1264[_0xba2a('0x61')]['to'][0x0])?undefined:_0x1f1264['body']['to'][0x0]},client9002);})['then'](function(){if(_0x297442){if(_[_0xba2a('0xb4')](_0x1f1264['body'][_0xba2a('0xb5')])){_0x1f1264[_0xba2a('0x61')][_0xba2a('0xb5')]=util[_0xba2a('0xa9')](_0xba2a('0xb6'),_0x297442['name'],_0x297442[_0xba2a('0xb7')]);}if(_0x297442[_0xba2a('0xac')]){if(_0x297442[_0xba2a('0xac')][_0xba2a('0xad')][_0xba2a('0x50')]){return _0x297442[_0xba2a('0xac')][_0xba2a('0xad')][0x0];}else{return db[_0xba2a('0x79')]['create'](_[_0xba2a('0x1e')](_0x1f1264['body'],{'firstName':_0x1f1264['body']['to'][0x0],'phone':_0x1f1264[_0xba2a('0x61')]['to'][0x0],'fax':_0x1f1264[_0xba2a('0x61')]['to'][0x0],'ListId':_0x297442[_0xba2a('0xb8')]}));}}else{throw new Error(_0xba2a('0xb9'));}}else{throw new Error(_0xba2a('0xba'));}})[_0xba2a('0x23')](function(_0x536708){if(_0x536708){return db[_0xba2a('0x75')]['find']({'where':{'ContactId':_0x536708['id'],'closed':![],'FaxAccountId':_0x297442['id']}})[_0xba2a('0x23')](function(_0x4bcecc){if(_0x4bcecc){return[_0x4bcecc,![]];}return db['FaxInteraction'][_0xba2a('0x60')]({'UserId':_0x1f1264['user']['id'],'ContactId':_0x536708['id'],'FaxAccountId':_0x297442['id'],'fax':_0x1f1264['body']['to'][0x0],'firstMsgDirection':_0xba2a('0xbb'),'Messages':[_['merge'](_0x1f1264['body'],{'read':![],'body':_0x1f1264[_0xba2a('0x61')]['attachments'][0x0][_0xba2a('0xbc')],'FaxAccountId':_0x297442['id'],'UserId':_0x1f1264[_0xba2a('0x62')]['id'],'ContactId':_0x536708['id'],'AttachmentId':_0x1f1264[_0xba2a('0x61')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xba2a('0xa7')],'as':_0xba2a('0xbd')}]})[_0xba2a('0x23')](function(_0x863d6d){return[_0x863d6d,!![]];});});}else{throw new Error(_0xba2a('0xbe'));}})[_0xba2a('0xbf')](function(_0x584390,_0x11cf2d){if(_0x11cf2d){return _0x584390;}return db[_0xba2a('0xa7')]['create']({'direction':'out','read':![],'body':_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][0x0][_0xba2a('0xbc')],'FaxAccountId':_0x297442['id'],'FaxInteractionId':_0x584390['id'],'UserId':_0x1f1264['user']['id'],'ContactId':_0x584390[_0xba2a('0xc0')],'AttachmentId':_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][0x0]['id']})[_0xba2a('0x23')](function(_0x5cc5fb){_0x584390[_0xba2a('0xc1')][_0xba2a('0xbd')]=[];_0x584390['dataValues'][_0xba2a('0xbd')][_0xba2a('0x93')](_0x5cc5fb['dataValues']);return _0x584390;});})[_0xba2a('0x23')](function(_0x3589ae){respondWithRpcPromise(_0xba2a('0xc2'),_0xba2a('0xc2'),{'FaxAccountId':_[_0xba2a('0xb4')](_0x1f1264[_0xba2a('0x5c')]['id'])?undefined:_0x1f1264['params']['id'],'path':_[_0xba2a('0xb4')](_0x1f1264[_0xba2a('0x61')][_0xba2a('0xaf')][0x0][_0xba2a('0x8')])?undefined:_0x1f1264['body'][_0xba2a('0xaf')][0x0][_0xba2a('0x8')],'fax':_['isNil'](_0x1f1264[_0xba2a('0x61')]['to'][0x0])?undefined:_0x1f1264[_0xba2a('0x61')]['to'][0x0],'AttachmentId':_0x1f1264[_0xba2a('0x61')]['attachments'][0x0]['id']},client9002)[_0xba2a('0x23')](function(_0x485de6){logger[_0xba2a('0x24')]('SendFaxRpc,\x20%s',_0x485de6);})['catch'](function(_0x220484){logger[_0xba2a('0x24')](_0xba2a('0xc3'),_0x220484);});return _0x3589ae;})[_0xba2a('0x23')](respondWithResult(_0x2a9a4a,null))['catch'](handleError(_0x2a9a4a,null));};exports[_0xba2a('0xc4')]=function(_0x2d00ec,_0x30b714,_0x4b55d6){return db[_0xba2a('0x45')][_0xba2a('0x5f')]({'where':{'id':_0x2d00ec[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x30b714,null))['then'](function(_0x418795){if(_0x418795){return _0x418795[_0xba2a('0xc4')](_0x2d00ec[_0xba2a('0x61')]['ids'],_[_0xba2a('0x77')](_0x2d00ec[_0xba2a('0x61')],[_0xba2a('0x71'),'id'])||{})[_0xba2a('0xbf')](function(_0x6e8098){for(var _0x344828=0x0;_0x344828<_0x2d00ec[_0xba2a('0x61')][_0xba2a('0x71')][_0xba2a('0x50')];_0x344828+=0x1){socket[_0xba2a('0xc5')]('userFaxAccount:save',{'UserId':Number(_0x2d00ec['body'][_0xba2a('0x71')][_0x344828]),'FaxAccountId':Number(_0x2d00ec['params']['id'])});}return _0x6e8098;});}})[_0xba2a('0x23')](respondWithResult(_0x30b714,null))[_0xba2a('0x2e')](handleError(_0x30b714,null));};exports['removeAgents']=function(_0x56d3f7,_0x4b5c70,_0x4b6ead){return db[_0xba2a('0x45')][_0xba2a('0x5f')]({'where':{'id':_0x56d3f7[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x4b5c70,null))[_0xba2a('0x23')](function(_0x7900ab){if(_0x7900ab){return _0x7900ab[_0xba2a('0xc6')](_0x56d3f7[_0xba2a('0x4a')][_0xba2a('0x71')])[_0xba2a('0x23')](function(){if(_['isArray'](_0x56d3f7[_0xba2a('0x4a')]['ids'])){for(var _0x11e710=0x0;_0x11e710<_0x56d3f7[_0xba2a('0x4a')][_0xba2a('0x71')]['length'];_0x11e710+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x56d3f7['query']['ids'][_0x11e710]),'FaxAccountId':Number(_0x56d3f7[_0xba2a('0x5c')]['id'])});}}else{socket[_0xba2a('0xc5')]('userFaxAccount:remove',{'UserId':Number(_0x56d3f7['query'][_0xba2a('0x71')]),'FaxAccountId':Number(_0x56d3f7['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4b5c70,null))[_0xba2a('0x2e')](handleError(_0x4b5c70,null));};exports[_0xba2a('0xc7')]=function(_0x3b35ac,_0x42f6da,_0xdc2095){var _0x4addab={};var _0x460321={};var _0x5ea9ca;var _0x25032a;return db[_0xba2a('0x45')][_0xba2a('0x6c')]({'where':{'id':_0x3b35ac[_0xba2a('0x5c')]['id']}})[_0xba2a('0x23')](handleEntityNotFound(_0x42f6da,null))[_0xba2a('0x23')](function(_0x2536e9){if(_0x2536e9){_0x5ea9ca=_0x2536e9;_0x460321[_0xba2a('0x49')]=_['keys'](db['User'][_0xba2a('0x46')]);_0x460321[_0xba2a('0x4a')]=_[_0xba2a('0x4b')](_0x3b35ac[_0xba2a('0x4a')]);_0x460321['filters']=_[_0xba2a('0x4d')](_0x460321[_0xba2a('0x49')],_0x460321[_0xba2a('0x4a')]);_0x4addab[_0xba2a('0x4f')]=_['intersection'](_0x460321['model'],qs[_0xba2a('0x4e')](_0x3b35ac['query'][_0xba2a('0x4e')]));_0x4addab['attributes']=_0x4addab['attributes'][_0xba2a('0x50')]?_0x4addab['attributes']:_0x460321[_0xba2a('0x49')];_0x4addab['order']=qs[_0xba2a('0x53')](_0x3b35ac[_0xba2a('0x4a')][_0xba2a('0x53')]);_0x4addab['where']=qs[_0xba2a('0x4c')](_[_0xba2a('0x55')](_0x3b35ac[_0xba2a('0x4a')],_0x460321[_0xba2a('0x4c')]));if(_0x3b35ac[_0xba2a('0x4a')][_0xba2a('0x56')]){_0x4addab[_0xba2a('0x54')]=_[_0xba2a('0x5e')](_0x4addab[_0xba2a('0x54')],{'$or':_[_0xba2a('0x44')](_0x4addab[_0xba2a('0x4f')],function(_0x55ef38){var _0x38d063={};_0x38d063[_0x55ef38]={'$like':'%'+_0x3b35ac[_0xba2a('0x4a')][_0xba2a('0x56')]+'%'};return _0x38d063;})});}_0x4addab=_[_0xba2a('0x5e')]({},_0x4addab,_0x3b35ac[_0xba2a('0x58')]);return _0x5ea9ca[_0xba2a('0xc7')](_0x4addab);}})[_0xba2a('0x23')](function(_0x1e5f1b){if(_0x1e5f1b){_0x25032a=_0x1e5f1b['length'];if(!_0x3b35ac[_0xba2a('0x4a')]['hasOwnProperty'](_0xba2a('0x51'))){_0x4addab['limit']=qs[_0xba2a('0x36')](_0x3b35ac['query']['limit']);_0x4addab['offset']=qs['offset'](_0x3b35ac['query'][_0xba2a('0x33')]);}return _0x5ea9ca[_0xba2a('0xc7')](_0x4addab);}})[_0xba2a('0x23')](function(_0x356965){if(_0x356965){return _0x356965?{'count':_0x25032a,'rows':_0x356965}:null;}})['then'](respondWithResult(_0x42f6da,null))['catch'](handleError(_0x42f6da,null));};
\ No newline at end of file
+var _0x1b40=['fs-extra','lodash','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','get','FaxAccounts','UserProfileResource','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','rows','show','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','pick','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','ids','addInteraction','CmContact','User','fullname','internal','Tags','color','tag','addApplications','sequelize','ISOLATION_LEVELS','FaxApplication','findAndCountAll','priority','stack','finally','send','getApplications','context','localstationid','app','system','description','appdata','push','CDR(type)=inbound-fax','ecm','gateway','headerinfo','maxrate','minrate','t38timeout','Set','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','transaction','omit','tech','updatedAt','TrunkId','ListId','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','CheckAfterSend','isNil','from','List\x20not\x20found','Send\x20Fax\x20failed','FaxInteraction','out','Messages','Contact\x20not\x20found','spread','filename','dataValues','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs'];(function(_0x5819a7,_0x5daaf3){var _0x528ab4=function(_0x2e0f36){while(--_0x2e0f36){_0x5819a7['push'](_0x5819a7['shift']());}};_0x528ab4(++_0x5daaf3);}(_0x1b40,0x17b));var _0x01b4=function(_0x104112,_0x342eb6){_0x104112=_0x104112-0x0;var _0x394ab4=_0x1b40[_0x104112];return _0x394ab4;};'use strict';var emlformat=require(_0x01b4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x01b4('0x1'));var jsonpatch=require(_0x01b4('0x2'));var rp=require(_0x01b4('0x3'));var moment=require(_0x01b4('0x4'));var BPromise=require(_0x01b4('0x5'));var Mustache=require('mustache');var util=require(_0x01b4('0x6'));var path=require(_0x01b4('0x7'));var sox=require(_0x01b4('0x8'));var csv=require(_0x01b4('0x9'));var ejs=require(_0x01b4('0xa'));var fs=require('fs');var fs_extra=require(_0x01b4('0xb'));var _=require(_0x01b4('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x01b4('0xd'));var deskjs=require(_0x01b4('0xe'));var toCsv=require(_0x01b4('0x9'));var querystring=require(_0x01b4('0xf'));var Papa=require(_0x01b4('0x10'));var Redis=require(_0x01b4('0x11'));var authService=require(_0x01b4('0x12'));var qs=require(_0x01b4('0x13'));var as=require(_0x01b4('0x14'));var hardwareService=require(_0x01b4('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x01b4('0x16'));var config=require(_0x01b4('0x17'));var licenseUtil=require(_0x01b4('0x18'));var db=require(_0x01b4('0x19'))['db'];config[_0x01b4('0x1a')]=_[_0x01b4('0x1b')](config[_0x01b4('0x1a')],{'host':_0x01b4('0x1c'),'port':0x18eb});var socket=require(_0x01b4('0x1d'))(new Redis(config['redis']));require(_0x01b4('0x1e'))[_0x01b4('0x1f')](socket);var jayson=require(_0x01b4('0x20'));var client=jayson[_0x01b4('0x21')][_0x01b4('0x22')]({'port':0x232c});var client9002=jayson['client'][_0x01b4('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x528786,_0x92f328,_0x39b128,_0x3541fa){return new BPromise(function(_0x10cd28,_0xd03785){var _0x38381f=_0x3541fa||client;return _0x38381f['request'](_0x528786,_0x39b128)[_0x01b4('0x23')](function(_0x44e4d2){logger[_0x01b4('0x24')]('FaxAccount,\x20%s,\x20%s',_0x92f328,'request\x20sent');logger[_0x01b4('0x25')](_0x01b4('0x26'),_0x92f328,_0x01b4('0x27'),JSON[_0x01b4('0x28')](_0x44e4d2));if(_0x44e4d2[_0x01b4('0x29')]){if(_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2a')]===0x1f4){logger['error'](_0x01b4('0x2b'),_0x92f328,_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);return _0xd03785(_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);}logger['error'](_0x01b4('0x2b'),_0x92f328,_0x44e4d2[_0x01b4('0x29')][_0x01b4('0x2c')]);return _0x10cd28(_0x44e4d2['error']['message']);}else{logger[_0x01b4('0x24')](_0x01b4('0x2b'),_0x92f328,_0x01b4('0x27'));_0x10cd28(_0x44e4d2[_0x01b4('0x2d')][_0x01b4('0x2c')]);}})[_0x01b4('0x2e')](function(_0x2cc8ee){logger[_0x01b4('0x29')](_0x01b4('0x2b'),_0x92f328,_0x2cc8ee);_0xd03785(_0x2cc8ee);});});}function respondWithStatusCode(_0x578739,_0x2d2c2c){_0x2d2c2c=_0x2d2c2c||0xcc;return function(_0x515774){if(_0x515774){return _0x578739[_0x01b4('0x2f')](_0x2d2c2c);}return _0x578739[_0x01b4('0x30')](_0x2d2c2c)[_0x01b4('0x31')]();};}function respondWithResult(_0x17040e,_0x29c2ba){_0x29c2ba=_0x29c2ba||0xc8;return function(_0x312488){if(_0x312488){return _0x17040e[_0x01b4('0x30')](_0x29c2ba)[_0x01b4('0x32')](_0x312488);}};}function respondWithFilteredResult(_0x5dfa07,_0x2940de){return function(_0x1f703f){if(_0x1f703f){var _0x410ef2=typeof _0x2940de['offset']===_0x01b4('0x33')&&typeof _0x2940de[_0x01b4('0x34')]===_0x01b4('0x33');var _0x5bf8dc=_0x1f703f[_0x01b4('0x35')];var _0x2aef34=_0x410ef2?0x0:_0x2940de['offset'];var _0x3b96ec=_0x410ef2?_0x1f703f['count']:_0x2940de[_0x01b4('0x36')]+_0x2940de[_0x01b4('0x34')];var _0x2eba79;if(_0x3b96ec>=_0x5bf8dc){_0x3b96ec=_0x5bf8dc;_0x2eba79=0xc8;}else{_0x2eba79=0xce;}_0x5dfa07[_0x01b4('0x30')](_0x2eba79);return _0x5dfa07['set'](_0x01b4('0x37'),_0x2aef34+'-'+_0x3b96ec+'/'+_0x5bf8dc)['json'](_0x1f703f);}return null;};}function patchUpdates(_0x22a06a){return function(_0x3ca159){try{jsonpatch[_0x01b4('0x38')](_0x3ca159,_0x22a06a,!![]);}catch(_0x17bc69){return BPromise['reject'](_0x17bc69);}return _0x3ca159[_0x01b4('0x39')]();};}function saveUpdates(_0x45fafb,_0x3f220a){return function(_0x2a6b94){if(_0x2a6b94){return _0x2a6b94[_0x01b4('0x3a')](_0x45fafb)[_0x01b4('0x23')](function(_0x4d1ba8){return _0x4d1ba8;});}return null;};}function removeEntity(_0x1d3773,_0x5ee48a){return function(_0x1424a7){if(_0x1424a7){return _0x1424a7[_0x01b4('0x3b')]()[_0x01b4('0x23')](function(){var _0x3b4ebd=_0x1424a7[_0x01b4('0x3c')]({'plain':!![]});var _0x40fa8=_0x01b4('0x3d');return db[_0x01b4('0x3e')][_0x01b4('0x3b')]({'where':{'type':_0x40fa8,'resourceId':_0x3b4ebd['id']}})['then'](function(){return _0x1424a7;});})[_0x01b4('0x23')](function(){_0x1d3773[_0x01b4('0x30')](0xcc)[_0x01b4('0x31')]();});}};}function handleEntityNotFound(_0x54ab26,_0x6ddf65){return function(_0x361157){if(!_0x361157){_0x54ab26[_0x01b4('0x2f')](0x194);}return _0x361157;};}function handleError(_0x45ef80,_0x2e9f9c){_0x2e9f9c=_0x2e9f9c||0x1f4;return function(_0x3a1e80){logger[_0x01b4('0x29')](_0x3a1e80['stack']);if(_0x3a1e80[_0x01b4('0x3f')]){delete _0x3a1e80[_0x01b4('0x3f')];}_0x45ef80[_0x01b4('0x30')](_0x2e9f9c)['send'](_0x3a1e80);};}exports[_0x01b4('0x40')]=function(_0x13e1b4,_0x30c744){var _0x5663b6={'include':[{'model':db[_0x01b4('0x41')],'as':_0x01b4('0x42')}]},_0x388919={},_0x335151={'count':0x0,'rows':[]};var _0x508f0f=_[_0x01b4('0x43')](db[_0x01b4('0x44')]['rawAttributes'],function(_0x3b45bb){return{'name':_0x3b45bb['fieldName'],'type':_0x3b45bb['type'][_0x01b4('0x45')]};});_0x388919[_0x01b4('0x46')]=_[_0x01b4('0x43')](_0x508f0f,_0x01b4('0x3f'));_0x388919['query']=_[_0x01b4('0x47')](_0x13e1b4[_0x01b4('0x48')]);_0x388919[_0x01b4('0x49')]=_['intersection'](_0x388919['model'],_0x388919[_0x01b4('0x48')]);_0x5663b6[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x388919[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x5663b6[_0x01b4('0x4a')]=_0x5663b6['attributes']['length']?_0x5663b6[_0x01b4('0x4a')]:_0x388919[_0x01b4('0x46')];if(!_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x5663b6[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x13e1b4[_0x01b4('0x48')]['limit']);_0x5663b6['offset']=qs[_0x01b4('0x36')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x5663b6[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x50')]);_0x5663b6[_0x01b4('0x51')]=qs['filters'](_['pick'](_0x13e1b4[_0x01b4('0x48')],_0x388919['filters']),_0x508f0f);if(_0x13e1b4[_0x01b4('0x48')]['filter']){_0x5663b6['where']=_['merge'](_0x5663b6['where'],{'$or':_[_0x01b4('0x43')](_0x508f0f,function(_0x4e1375){if(_0x4e1375['type']!==_0x01b4('0x52')){var _0x5462ce={};_0x5462ce[_0x4e1375[_0x01b4('0x3f')]]={'$like':'%'+_0x13e1b4['query'][_0x01b4('0x53')]+'%'};return _0x5462ce;}})});}_0x5663b6=_[_0x01b4('0x54')]({},_0x5663b6,_0x13e1b4[_0x01b4('0x55')]);var _0x187c6c={'where':_0x5663b6[_0x01b4('0x51')]};return db[_0x01b4('0x44')][_0x01b4('0x35')](_0x187c6c)[_0x01b4('0x23')](function(_0x34a7ba){_0x335151[_0x01b4('0x35')]=_0x34a7ba;if(_0x13e1b4[_0x01b4('0x48')][_0x01b4('0x56')]){_0x5663b6[_0x01b4('0x57')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x5663b6);})['then'](function(_0x1d4632){_0x335151[_0x01b4('0x58')]=_0x1d4632;return _0x335151;})[_0x01b4('0x23')](respondWithFilteredResult(_0x30c744,_0x5663b6))[_0x01b4('0x2e')](handleError(_0x30c744,null));};exports[_0x01b4('0x59')]=function(_0x2ed70b,_0x23e51a){var _0x52d077={'raw':![],'where':{'id':_0x2ed70b['params']['id']},'include':[{'model':db[_0x01b4('0x41')],'as':_0x01b4('0x42')}]},_0x220448={};_0x220448['model']=_[_0x01b4('0x47')](db[_0x01b4('0x44')][_0x01b4('0x5a')]);_0x220448[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x2ed70b[_0x01b4('0x48')]);_0x220448[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x220448[_0x01b4('0x46')],_0x220448['query']);_0x52d077[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x220448[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x2ed70b[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x52d077[_0x01b4('0x4a')]=_0x52d077['attributes'][_0x01b4('0x5b')]?_0x52d077[_0x01b4('0x4a')]:_0x220448[_0x01b4('0x46')];if(_0x2ed70b[_0x01b4('0x48')][_0x01b4('0x56')]){_0x52d077['include']=[{'all':!![]}];}_0x52d077=_[_0x01b4('0x54')]({},_0x52d077,_0x2ed70b['options']);return db['FaxAccount'][_0x01b4('0x5c')](_0x52d077)[_0x01b4('0x23')](handleEntityNotFound(_0x23e51a,null))[_0x01b4('0x23')](respondWithResult(_0x23e51a,null))[_0x01b4('0x2e')](handleError(_0x23e51a,null));};exports['create']=function(_0x3892bb,_0x339ca5){return db[_0x01b4('0x44')][_0x01b4('0x5d')](_0x3892bb[_0x01b4('0x5e')],{})[_0x01b4('0x23')](function(_0x32dc2e){var _0x3d3a50=_0x3892bb[_0x01b4('0x5f')][_0x01b4('0x3c')]({'plain':!![]});if(!_0x3d3a50)throw new Error(_0x01b4('0x60'));if(_0x3d3a50[_0x01b4('0x61')]===_0x01b4('0x5f')){var _0x18c0cd=_0x32dc2e[_0x01b4('0x3c')]({'plain':!![]});var _0x4081bb=_0x01b4('0x3d');return db[_0x01b4('0x62')][_0x01b4('0x5c')]({'where':{'name':_0x4081bb,'userProfileId':_0x3d3a50[_0x01b4('0x63')]},'raw':!![]})[_0x01b4('0x23')](function(_0x131cb1){if(_0x131cb1&&_0x131cb1[_0x01b4('0x64')]===0x0){return db[_0x01b4('0x3e')][_0x01b4('0x5d')]({'name':_0x18c0cd['name'],'resourceId':_0x18c0cd['id'],'type':_0x131cb1[_0x01b4('0x3f')],'sectionId':_0x131cb1['id']},{})[_0x01b4('0x23')](function(){return _0x32dc2e;});}else{return _0x32dc2e;}})[_0x01b4('0x2e')](function(_0x2ba900){logger[_0x01b4('0x29')](_0x01b4('0x65'),_0x2ba900);throw _0x2ba900;});}return _0x32dc2e;})[_0x01b4('0x23')](respondWithResult(_0x339ca5,0xc9))['catch'](handleError(_0x339ca5,null));};exports[_0x01b4('0x3a')]=function(_0xeea528,_0x478ad7){if(_0xeea528[_0x01b4('0x5e')]['id']){delete _0xeea528['body']['id'];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0xeea528[_0x01b4('0x66')]['id']},'include':[{'model':db[_0x01b4('0x41')],'as':'mandatoryDispositionPause'}]})[_0x01b4('0x23')](handleEntityNotFound(_0x478ad7,null))['then'](saveUpdates(_0xeea528[_0x01b4('0x5e')],null))[_0x01b4('0x23')](respondWithResult(_0x478ad7,null))[_0x01b4('0x2e')](handleError(_0x478ad7,null));};exports[_0x01b4('0x3b')]=function(_0x4a0b58,_0xbf4b33){return db[_0x01b4('0x44')][_0x01b4('0x5c')]({'where':{'id':_0x4a0b58['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0xbf4b33,null))['then'](removeEntity(_0xbf4b33,null))['catch'](handleError(_0xbf4b33,null));};exports['describe']=function(_0x3c3c8d,_0x32daaa){return db[_0x01b4('0x44')]['describe']()[_0x01b4('0x23')](respondWithResult(_0x32daaa,null))['catch'](handleError(_0x32daaa,null));};exports[_0x01b4('0x67')]=function(_0x1c7b4d,_0x4651e0,_0x522aa3){if(_0x1c7b4d['body']['id']){delete _0x1c7b4d[_0x01b4('0x5e')]['id'];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0x1c7b4d['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x4651e0,null))['then'](function(_0x270f68){if(_0x270f68){_0x1c7b4d[_0x01b4('0x5e')][_0x01b4('0x68')]=_0x270f68['id'];return db[_0x01b4('0x69')]['create'](_0x1c7b4d['body']);}})['then'](respondWithResult(_0x4651e0,null))['catch'](handleError(_0x4651e0,null));};exports[_0x01b4('0x6a')]=function(_0x5757d9,_0x3ca918,_0x37e80e){var _0x48ec9b={'raw':![],'where':{}};var _0x429f06={};var _0x18c540={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x5757d9[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x3ca918,null))[_0x01b4('0x23')](function(_0x33982c){if(_0x33982c){_0x429f06[_0x01b4('0x46')]=_[_0x01b4('0x47')](db[_0x01b4('0x69')]['rawAttributes']);_0x429f06[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x5757d9[_0x01b4('0x48')]);_0x429f06[_0x01b4('0x49')]=_['intersection'](_0x429f06[_0x01b4('0x46')],_0x429f06[_0x01b4('0x48')]);_0x48ec9b['attributes']=_[_0x01b4('0x4b')](_0x429f06['model'],qs['fields'](_0x5757d9[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x48ec9b[_0x01b4('0x4a')]=_0x48ec9b[_0x01b4('0x4a')]['length']?_0x48ec9b[_0x01b4('0x4a')]:_0x429f06[_0x01b4('0x46')];if(!_0x5757d9[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x48ec9b[_0x01b4('0x34')]=qs['limit'](_0x5757d9['query'][_0x01b4('0x34')]);_0x48ec9b[_0x01b4('0x36')]=qs['offset'](_0x5757d9[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x48ec9b[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x5757d9['query'][_0x01b4('0x50')]);_0x48ec9b[_0x01b4('0x51')]=qs['filters'](_[_0x01b4('0x6c')](_0x5757d9[_0x01b4('0x48')],_0x429f06[_0x01b4('0x49')]));_0x48ec9b['where'][_0x01b4('0x68')]=_0x33982c['id'];if(_0x5757d9['query'][_0x01b4('0x53')]){_0x48ec9b['where']=_[_0x01b4('0x54')](_0x48ec9b[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x48ec9b[_0x01b4('0x4a')],function(_0x3b63bb){var _0x32041a={};_0x32041a[_0x3b63bb]={'$like':'%'+_0x5757d9[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x32041a;})});}_0x48ec9b=_[_0x01b4('0x54')]({},_0x48ec9b,_0x5757d9[_0x01b4('0x55')]);return db[_0x01b4('0x69')][_0x01b4('0x35')]({'where':_0x48ec9b['where']})[_0x01b4('0x23')](function(_0x54843a){_0x18c540[_0x01b4('0x35')]=_0x54843a;if(_0x5757d9[_0x01b4('0x48')]['includeAll']){_0x48ec9b[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0x69')][_0x01b4('0x6d')](_0x48ec9b);})[_0x01b4('0x23')](function(_0x284c0f){_0x18c540['rows']=_0x284c0f;return _0x18c540;});}})['then'](respondWithFilteredResult(_0x3ca918,_0x48ec9b))[_0x01b4('0x2e')](handleError(_0x3ca918,null));};exports['removeDispositions']=function(_0x23f4bf,_0x357ae9,_0x5bc64a){return db[_0x01b4('0x44')]['find']({'where':{'id':_0x23f4bf[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x357ae9,null))[_0x01b4('0x23')](function(_0x5ba74d){if(_0x5ba74d){return _0x5ba74d[_0x01b4('0x6e')](_0x23f4bf[_0x01b4('0x48')]['ids']);}})[_0x01b4('0x23')](respondWithStatusCode(_0x357ae9,null))['catch'](handleError(_0x357ae9,null));};exports[_0x01b4('0x6f')]=function(_0xb69c73,_0x5c0b01,_0x4e9efe){if(_0xb69c73[_0x01b4('0x5e')]['id']){delete _0xb69c73[_0x01b4('0x5e')]['id'];}return db['FaxAccount'][_0x01b4('0x5c')]({'where':{'id':_0xb69c73['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5c0b01,null))[_0x01b4('0x23')](function(_0x24ea5f){if(_0x24ea5f){_0xb69c73[_0x01b4('0x5e')][_0x01b4('0x68')]=_0x24ea5f['id'];return db[_0x01b4('0x70')]['create'](_0xb69c73[_0x01b4('0x5e')]);}})['then'](respondWithResult(_0x5c0b01,null))[_0x01b4('0x2e')](handleError(_0x5c0b01,null));};exports[_0x01b4('0x71')]=function(_0x3f54b4,_0x1dc3e0,_0x60d2db){var _0x1da502={'raw':![],'where':{}};var _0xb8517={};var _0x1fb81f={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x3f54b4[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x1dc3e0,null))[_0x01b4('0x23')](function(_0x3a94f8){if(_0x3a94f8){_0xb8517[_0x01b4('0x46')]=_[_0x01b4('0x47')](db['CannedAnswer']['rawAttributes']);_0xb8517[_0x01b4('0x48')]=_['keys'](_0x3f54b4[_0x01b4('0x48')]);_0xb8517['filters']=_['intersection'](_0xb8517[_0x01b4('0x46')],_0xb8517['query']);_0x1da502[_0x01b4('0x4a')]=_['intersection'](_0xb8517[_0x01b4('0x46')],qs['fields'](_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x1da502[_0x01b4('0x4a')]=_0x1da502['attributes'][_0x01b4('0x5b')]?_0x1da502['attributes']:_0xb8517[_0x01b4('0x46')];if(!_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x1da502[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x34')]);_0x1da502['offset']=qs['offset'](_0x3f54b4[_0x01b4('0x48')]['offset']);}_0x1da502['order']=qs[_0x01b4('0x50')](_0x3f54b4['query'][_0x01b4('0x50')]);_0x1da502[_0x01b4('0x51')]=qs[_0x01b4('0x49')](_['pick'](_0x3f54b4[_0x01b4('0x48')],_0xb8517['filters']));_0x1da502['where'][_0x01b4('0x68')]=_0x3a94f8['id'];if(_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x53')]){_0x1da502['where']=_[_0x01b4('0x54')](_0x1da502['where'],{'$or':_[_0x01b4('0x43')](_0x1da502[_0x01b4('0x4a')],function(_0xf6a070){var _0x23f9a1={};_0x23f9a1[_0xf6a070]={'$like':'%'+_0x3f54b4['query'][_0x01b4('0x53')]+'%'};return _0x23f9a1;})});}_0x1da502=_[_0x01b4('0x54')]({},_0x1da502,_0x3f54b4[_0x01b4('0x55')]);return db['CannedAnswer'][_0x01b4('0x35')]({'where':_0x1da502[_0x01b4('0x51')]})['then'](function(_0x2a22ec){_0x1fb81f['count']=_0x2a22ec;if(_0x3f54b4[_0x01b4('0x48')][_0x01b4('0x56')]){_0x1da502[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0x70')][_0x01b4('0x6d')](_0x1da502);})[_0x01b4('0x23')](function(_0x234249){_0x1fb81f[_0x01b4('0x58')]=_0x234249;return _0x1fb81f;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x1dc3e0,_0x1da502))['catch'](handleError(_0x1dc3e0,null));};exports['removeAnswers']=function(_0x2d1f48,_0x2dd4c5,_0x11ea70){return db[_0x01b4('0x44')]['find']({'where':{'id':_0x2d1f48[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x2dd4c5,null))['then'](function(_0x409aeb){if(_0x409aeb){return _0x409aeb['removeAnswers'](_0x2d1f48[_0x01b4('0x48')][_0x01b4('0x72')]);}})['then'](respondWithStatusCode(_0x2dd4c5,null))[_0x01b4('0x2e')](handleError(_0x2dd4c5,null));};exports[_0x01b4('0x73')]=function(_0x45884e,_0x14807e,_0x260c33){return db['FaxInteraction'][_0x01b4('0x5c')]({'where':{'id':_0x45884e[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x14807e,null))[_0x01b4('0x23')](function(_0x3b8967){if(_0x3b8967){return _0x3b8967[_0x01b4('0x73')](_0x45884e['body'][_0x01b4('0x72')],_['omit'](_0x45884e[_0x01b4('0x5e')],[_0x01b4('0x72'),'id'])||{});}})[_0x01b4('0x23')](respondWithResult(_0x14807e,null))[_0x01b4('0x2e')](handleError(_0x14807e,null));};exports['getInteractions']=function(_0x3e1980,_0x32f259,_0x521b47){var _0x889928={'raw':![],'where':{}};var _0x4a903f={};var _0x5edbee={'count':0x0,'rows':[]};return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x3e1980[_0x01b4('0x66')]['id']}})['then'](handleEntityNotFound(_0x32f259,null))[_0x01b4('0x23')](function(_0x1212c4){if(_0x1212c4){_0x4a903f[_0x01b4('0x46')]=_[_0x01b4('0x47')](db['FaxInteraction']['rawAttributes']);_0x4a903f['query']=_['keys'](_0x3e1980[_0x01b4('0x48')]);_0x4a903f[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x4a903f['model'],_0x4a903f['query']);_0x889928['attributes']=_[_0x01b4('0x4b')](_0x4a903f[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x3e1980['query']['fields']));_0x889928[_0x01b4('0x4a')]=_0x889928[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x889928[_0x01b4('0x4a')]:_0x4a903f[_0x01b4('0x46')];if(!_0x3e1980['query'][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x889928['limit']=qs[_0x01b4('0x34')](_0x3e1980[_0x01b4('0x48')][_0x01b4('0x34')]);_0x889928[_0x01b4('0x36')]=qs[_0x01b4('0x36')](_0x3e1980[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x889928['order']=qs[_0x01b4('0x50')](_0x3e1980[_0x01b4('0x48')]['sort']);_0x889928['where']=qs[_0x01b4('0x49')](_['pick'](_0x3e1980[_0x01b4('0x48')],_0x4a903f[_0x01b4('0x49')]));_0x889928['where']['FaxAccountId']=_0x1212c4['id'];if(_0x3e1980[_0x01b4('0x48')][_0x01b4('0x53')]){_0x889928['where']=_[_0x01b4('0x54')](_0x889928[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x889928[_0x01b4('0x4a')],function(_0x5afc5f){var _0x23cf18={};_0x23cf18[_0x5afc5f]={'$like':'%'+_0x3e1980[_0x01b4('0x48')]['filter']+'%'};return _0x23cf18;})});}_0x889928=_[_0x01b4('0x54')]({},_0x889928,_0x3e1980[_0x01b4('0x55')]);return db['FaxInteraction'][_0x01b4('0x35')]({'where':_0x889928[_0x01b4('0x51')]})[_0x01b4('0x23')](function(_0x1375d9){_0x5edbee[_0x01b4('0x35')]=_0x1375d9;if(_0x3e1980[_0x01b4('0x48')][_0x01b4('0x56')]){_0x889928[_0x01b4('0x57')]=[{'model':db[_0x01b4('0x74')],'as':'Contact','required':![]},{'model':db[_0x01b4('0x75')],'as':'Owner','attributes':[_0x01b4('0x3f'),_0x01b4('0x76'),_0x01b4('0x77')],'required':![]},{'model':db['Tag'],'as':_0x01b4('0x78'),'attributes':['id',_0x01b4('0x3f'),_0x01b4('0x79')],'where':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]?{'id':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]}:undefined,'required':_0x3e1980[_0x01b4('0x48')][_0x01b4('0x7a')]?!![]:![]}];}return db['FaxInteraction'][_0x01b4('0x6d')](_0x889928);})[_0x01b4('0x23')](function(_0x1951aa){_0x5edbee['rows']=_0x1951aa;return _0x5edbee;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x32f259,_0x889928))[_0x01b4('0x2e')](handleError(_0x32f259,null));};exports[_0x01b4('0x7b')]=function(_0x582c07,_0x2e20ff){var _0x15c115=_0x582c07[_0x01b4('0x66')]['id'];var _0x5e3b5c=_0x582c07['body'];var _0x3cd96f=0xc8;var _0xb89ab9=null;return db[_0x01b4('0x7c')]['transaction']({'isolationLevel':db[_0x01b4('0x7c')]['Transaction'][_0x01b4('0x7d')]['READ_COMMITTED']},function(_0x1eb60f){return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x15c115},'transaction':_0x1eb60f})[_0x01b4('0x23')](function(_0x53bbd5){if(_0x53bbd5){return db[_0x01b4('0x7e')][_0x01b4('0x3b')]({'where':{'FaxAccountId':_0x15c115},'transaction':_0x1eb60f})[_0x01b4('0x23')](function(){var _0xec13b6=_[_0x01b4('0x43')](_0x5e3b5c,function(_0x2ce5d3){_0x2ce5d3['FaxAccountId']=_0x15c115;return _0x2ce5d3;});return db[_0x01b4('0x7e')]['bulkCreate'](_0xec13b6,{'transaction':_0x1eb60f});});}else{_0x3cd96f=0x194;_0xb89ab9=[];}});})[_0x01b4('0x23')](function(){if(_0x3cd96f!==0x194){return db[_0x01b4('0x7e')][_0x01b4('0x7f')]({'where':{'FaxAccountId':_0x15c115},'order':_0x01b4('0x80')})[_0x01b4('0x23')](function(_0x29e648){_0xb89ab9=_0x29e648;});}})[_0x01b4('0x2e')](function(_0x2d5bd7){_0x3cd96f=0x1f4;logger[_0x01b4('0x29')](_0x2d5bd7[_0x01b4('0x81')]);if(_0x2d5bd7[_0x01b4('0x3f')]){delete _0x2d5bd7[_0x01b4('0x3f')];}_0xb89ab9=_0x2d5bd7;})[_0x01b4('0x82')](function(){if(_0xb89ab9===null){_0x2e20ff[_0x01b4('0x2f')](_0x3cd96f);}else{if(_0x3cd96f===0x1f4){_0x2e20ff[_0x01b4('0x30')](_0x3cd96f)[_0x01b4('0x83')](_0xb89ab9);}else{_0x2e20ff[_0x01b4('0x30')](_0x3cd96f)[_0x01b4('0x32')](_0xb89ab9);}}});};exports[_0x01b4('0x84')]=function(_0x500a99,_0x5a1801,_0x223e75){var _0x257e4a={};var _0x252eef={};var _0x97bc36;var _0x3edd4b;return db[_0x01b4('0x44')]['findOne']({'where':{'id':_0x500a99[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5a1801,null))['then'](function(_0x11953d){if(_0x11953d){_0x97bc36=_0x11953d;_0x252eef[_0x01b4('0x46')]=_['keys'](db[_0x01b4('0x7e')][_0x01b4('0x5a')]);_0x252eef[_0x01b4('0x48')]=_['keys'](_0x500a99['query']);_0x252eef[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x252eef[_0x01b4('0x46')],_0x252eef[_0x01b4('0x48')]);_0x257e4a['attributes']=_['intersection'](_0x252eef[_0x01b4('0x46')],qs[_0x01b4('0x4c')](_0x500a99[_0x01b4('0x48')]['fields']));_0x257e4a[_0x01b4('0x4a')]=_0x257e4a[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x257e4a[_0x01b4('0x4a')]:_0x252eef[_0x01b4('0x46')];_0x257e4a[_0x01b4('0x4f')]=qs[_0x01b4('0x50')](_0x500a99['query'][_0x01b4('0x50')]);_0x257e4a['where']=qs[_0x01b4('0x49')](_[_0x01b4('0x6c')](_0x500a99[_0x01b4('0x48')],_0x252eef[_0x01b4('0x49')]));if(_0x500a99[_0x01b4('0x48')][_0x01b4('0x53')]){_0x257e4a[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x257e4a[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x257e4a[_0x01b4('0x4a')],function(_0x1972b9){var _0x1258c6={};_0x1258c6[_0x1972b9]={'$like':'%'+_0x500a99[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x1258c6;})});}_0x257e4a=_[_0x01b4('0x54')]({},_0x257e4a,_0x500a99['options']);return _0x97bc36['getApplications'](_0x257e4a);}})[_0x01b4('0x23')](function(_0x58bccf){if(_0x58bccf){_0x3edd4b=_0x58bccf[_0x01b4('0x5b')];if(!_0x500a99[_0x01b4('0x48')]['hasOwnProperty'](_0x01b4('0x4e'))){_0x257e4a[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x500a99[_0x01b4('0x48')][_0x01b4('0x34')]);_0x257e4a['offset']=qs[_0x01b4('0x36')](_0x500a99[_0x01b4('0x48')][_0x01b4('0x36')]);}return _0x97bc36[_0x01b4('0x84')](_0x257e4a);}})['then'](function(_0xf51491){if(_0xf51491){return _0xf51491?{'count':_0x3edd4b,'rows':_0xf51491}:null;}})[_0x01b4('0x23')](respondWithResult(_0x5a1801,null))['catch'](handleError(_0x5a1801,null));};function Extension(_0x40e429,_0x442e0d,_0x251aa0,_0x3f8421){this[_0x01b4('0x85')]='from-voip-provider';this['exten']=_0x40e429[_0x01b4('0x86')];this[_0x01b4('0x87')]=_0x3f8421;this['type']=_0x01b4('0x88');this[_0x01b4('0x89')]='Fax\x20Extension';this[_0x01b4('0x68')]=_0x40e429['id'];this[_0x01b4('0x80')]=_0x442e0d;this[_0x01b4('0x8a')]=_0x251aa0;}function createExtensionsReciveFax(_0x2ef149){var _0x1b6a45=0x1;var _0x4a67cf=[];_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'','Answer'));_0x1b6a45+=0x1;_0x4a67cf['push'](new Extension(_0x2ef149,_0x1b6a45,_0x01b4('0x8c'),'Set'));_0x1b6a45+=0x1;for(var _0x49e81d in _0x2ef149){if(_0x2ef149[_0x01b4('0x4d')](_0x49e81d)&&(_0x49e81d===_0x01b4('0x8d')||_0x49e81d===_0x01b4('0x86')||_0x49e81d===_0x01b4('0x8e')||_0x49e81d==='faxdetect'||_0x49e81d===_0x01b4('0x8f')||_0x49e81d===_0x01b4('0x90')||_0x49e81d===_0x01b4('0x91')||_0x49e81d==='modem'||_0x49e81d===_0x01b4('0x92'))){_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'FAXOPT('+_0x49e81d+')='+_0x2ef149[_0x49e81d],_0x01b4('0x93')));_0x1b6a45+=0x1;}}_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,'6',_0x01b4('0x94')));_0x1b6a45+=0x1;_0x4a67cf[_0x01b4('0x8b')](new Extension(_0x2ef149,_0x1b6a45,_0x01b4('0x95'),_0x01b4('0x96')));_0x1b6a45=0x0;return _0x4a67cf;}exports[_0x01b4('0x97')]=function(_0x4ca06d,_0x59a603,_0x13322a){var _0x105158;return db[_0x01b4('0x7c')]['transaction'](function(_0x3003b1){return db['FaxAccount'][_0x01b4('0x5d')](_0x4ca06d['body'],{'transaction':_0x3003b1})[_0x01b4('0x23')](function(_0x410a63){_0x105158=_0x410a63[_0x01b4('0x3c')]({'plain':!![]});return db[_0x01b4('0x98')][_0x01b4('0x99')](createExtensionsReciveFax(_0x105158),{'transaction':_0x3003b1});});})[_0x01b4('0x23')](function(){return _0x105158;})[_0x01b4('0x23')](respondWithResult(_0x59a603,null))[_0x01b4('0x2e')](handleError(_0x59a603,null));};exports[_0x01b4('0x9a')]=function(_0x5ea241,_0x48ac02,_0x156657){var _0x645bf;return db[_0x01b4('0x7c')][_0x01b4('0x9b')](function(_0x4b1973){return db['FaxAccount'][_0x01b4('0x3a')](_0x5ea241['body'],{'where':{'id':_0x5ea241[_0x01b4('0x5e')]['id']},'transaction':_0x4b1973})[_0x01b4('0x23')](function(_0xd6aba2){return db[_0x01b4('0x98')][_0x01b4('0x3b')]({'where':{'FaxAccountId':_0x5ea241[_0x01b4('0x5e')]['id']},'transaction':_0x4b1973})[_0x01b4('0x23')](function(_0x3c8725){return db[_0x01b4('0x98')]['bulkCreate'](createExtensionsReciveFax(_[_0x01b4('0x9c')](_0x5ea241[_0x01b4('0x5e')],[_0x01b4('0x9d'),_0x01b4('0x45'),'createdAt',_0x01b4('0x9e'),_0x01b4('0x9f'),_0x01b4('0xa0')])),{'transaction':_0x4b1973});});});})[_0x01b4('0x23')](function(){return db['FaxAccount'][_0x01b4('0xa1')](_0x5ea241[_0x01b4('0x5e')]['id']);})['then'](respondWithResult(_0x48ac02,null))['catch'](handleError(_0x48ac02,null));};exports['getMessages']=function(_0x56cdef,_0x1a0cde,_0x50188d){var _0x3f7afc={'raw':!![],'where':{}};var _0x4eab67={};var _0x1122e0={'count':0x0,'rows':[]};return db['FaxAccount'][_0x01b4('0x6b')]({'where':{'id':_0x56cdef[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x1a0cde,null))[_0x01b4('0x23')](function(_0x516c28){if(_0x516c28){_0x4eab67[_0x01b4('0x46')]=_['keys'](db['FaxMessage'][_0x01b4('0x5a')]);_0x4eab67[_0x01b4('0x48')]=_[_0x01b4('0x47')](_0x56cdef[_0x01b4('0x48')]);_0x4eab67['filters']=_['intersection'](_0x4eab67[_0x01b4('0x46')],_0x4eab67[_0x01b4('0x48')]);_0x3f7afc[_0x01b4('0x4a')]=_[_0x01b4('0x4b')](_0x4eab67['model'],qs[_0x01b4('0x4c')](_0x56cdef[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x3f7afc[_0x01b4('0x4a')]=_0x3f7afc[_0x01b4('0x4a')]['length']?_0x3f7afc[_0x01b4('0x4a')]:_0x4eab67[_0x01b4('0x46')];if(!_0x56cdef[_0x01b4('0x48')][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x3f7afc[_0x01b4('0x34')]=qs[_0x01b4('0x34')](_0x56cdef[_0x01b4('0x48')]['limit']);_0x3f7afc[_0x01b4('0x36')]=qs[_0x01b4('0x36')](_0x56cdef[_0x01b4('0x48')][_0x01b4('0x36')]);}_0x3f7afc['order']=qs['sort'](_0x56cdef[_0x01b4('0x48')]['sort']);_0x3f7afc[_0x01b4('0x51')]=qs['filters'](_['pick'](_0x56cdef[_0x01b4('0x48')],_0x4eab67['filters']));_0x3f7afc[_0x01b4('0x51')]['FaxAccountId']=_0x516c28['id'];if(_0x56cdef[_0x01b4('0x48')][_0x01b4('0x53')]){_0x3f7afc[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x3f7afc['where'],{'$or':_[_0x01b4('0x43')](_0x3f7afc[_0x01b4('0x4a')],function(_0xa9876){var _0x423fab={};_0x423fab[_0xa9876]={'$like':'%'+_0x56cdef['query'][_0x01b4('0x53')]+'%'};return _0x423fab;})});}if(_0x56cdef[_0x01b4('0x48')]['$gte']){var _0x479859=_0x56cdef['query'][_0x01b4('0xa2')][_0x01b4('0xa3')](',');var _0x2757a2={};_0x2757a2[_0x479859[0x0]]={'$gte':moment(_0x479859[0x1])[_0x01b4('0xa4')](_0x01b4('0xa5'))};_0x3f7afc[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x3f7afc[_0x01b4('0x51')],_0x2757a2);}_0x3f7afc=_[_0x01b4('0x54')]({},_0x3f7afc,_0x56cdef[_0x01b4('0x55')]);return db[_0x01b4('0xa6')][_0x01b4('0x35')]({'where':_0x3f7afc[_0x01b4('0x51')]})[_0x01b4('0x23')](function(_0x635450){_0x1122e0[_0x01b4('0x35')]=_0x635450;if(_0x56cdef[_0x01b4('0x48')][_0x01b4('0x56')]){_0x3f7afc[_0x01b4('0x57')]=[{'all':!![]}];}return db[_0x01b4('0xa6')][_0x01b4('0x6d')](_0x3f7afc);})[_0x01b4('0x23')](function(_0x20fd81){_0x1122e0[_0x01b4('0x58')]=_0x20fd81;return _0x1122e0;});}})[_0x01b4('0x23')](respondWithFilteredResult(_0x1a0cde,_0x3f7afc))[_0x01b4('0x2e')](handleError(_0x1a0cde,null));};exports[_0x01b4('0x83')]=function(_0x444807,_0xc8f74,_0x48a29b){var _0x8e2c66,_0x337abf={},_0x3e3c33;if(_0x444807[_0x01b4('0x5e')]['to']){_0x3e3c33=_0x444807[_0x01b4('0x5e')]['to'][0x0];}return db[_0x01b4('0x44')]['find']({'where':{'id':_0x444807[_0x01b4('0x66')]['id']},'include':[{'model':db[_0x01b4('0xa7')],'as':_0x01b4('0xa8'),'include':[{'model':db[_0x01b4('0x74')],'as':_0x01b4('0xa9'),'where':{'fax':_0x3e3c33},'limit':0x1,'order':[[_0x01b4('0x9e'),_0x01b4('0xaa')]]}]}]})['then'](handleEntityNotFound(_0xc8f74,null))[_0x01b4('0x23')](function(_0x51cc7d){_0x8e2c66=_0x51cc7d;if(_0x444807[_0x01b4('0x5e')]['attachments']&&_0x444807['body'][_0x01b4('0xab')]['length']){for(var _0x289398=0x0;_0x289398<_0x444807[_0x01b4('0x5e')]['attachments'][_0x01b4('0x5b')];_0x289398+=0x1){_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][_0x289398]={'filename':_0x444807['body'][_0x01b4('0xab')][_0x289398][_0x01b4('0x3f')],'id':_0x444807[_0x01b4('0x5e')]['attachments'][_0x289398]['id'],'path':path[_0x01b4('0xac')](config[_0x01b4('0xad')],_0x01b4('0xae'),_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][_0x289398]['basename'])};}}return respondWithRpcPromise(_0x01b4('0xaf'),_0x01b4('0xaf'),{'FaxAccountId':_['isNil'](_0x444807[_0x01b4('0x66')]['id'])?undefined:_0x444807[_0x01b4('0x66')]['id'],'path':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0][_0x01b4('0x7')])?undefined:_0x444807[_0x01b4('0x5e')]['attachments'][0x0][_0x01b4('0x7')],'fax':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x5e')]['to'][0x0])?undefined:_0x444807[_0x01b4('0x5e')]['to'][0x0]},client9002);})[_0x01b4('0x23')](function(){if(_0x8e2c66){if(_['isNil'](_0x444807[_0x01b4('0x5e')][_0x01b4('0xb1')])){_0x444807[_0x01b4('0x5e')]['from']=util[_0x01b4('0xa4')]('\x22%s\x22\x20<%s>',_0x8e2c66['name'],_0x8e2c66['fax']);}if(_0x8e2c66[_0x01b4('0xa8')]){if(_0x8e2c66[_0x01b4('0xa8')][_0x01b4('0xa9')][_0x01b4('0x5b')]){return _0x8e2c66[_0x01b4('0xa8')][_0x01b4('0xa9')][0x0];}else{return db['CmContact'][_0x01b4('0x5d')](_[_0x01b4('0x1b')](_0x444807['body'],{'firstName':_0x444807[_0x01b4('0x5e')]['to'][0x0],'phone':_0x444807[_0x01b4('0x5e')]['to'][0x0],'fax':_0x444807[_0x01b4('0x5e')]['to'][0x0],'ListId':_0x8e2c66[_0x01b4('0xa0')]}));}}else{throw new Error(_0x01b4('0xb2'));}}else{throw new Error(_0x01b4('0xb3'));}})[_0x01b4('0x23')](function(_0x19d943){if(_0x19d943){return db[_0x01b4('0xb4')][_0x01b4('0x5c')]({'where':{'ContactId':_0x19d943['id'],'closed':![],'FaxAccountId':_0x8e2c66['id']}})[_0x01b4('0x23')](function(_0x11ede5){if(_0x11ede5){return[_0x11ede5,![]];}return db[_0x01b4('0xb4')][_0x01b4('0x5d')]({'UserId':_0x444807['user']['id'],'ContactId':_0x19d943['id'],'FaxAccountId':_0x8e2c66['id'],'fax':_0x444807['body']['to'][0x0],'firstMsgDirection':_0x01b4('0xb5'),'Messages':[_[_0x01b4('0x54')](_0x444807['body'],{'read':![],'body':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['filename'],'FaxAccountId':_0x8e2c66['id'],'UserId':_0x444807[_0x01b4('0x5f')]['id'],'ContactId':_0x19d943['id'],'AttachmentId':_0x444807['body'][_0x01b4('0xab')][0x0]['id']})]},{'include':[{'model':db[_0x01b4('0xa6')],'as':_0x01b4('0xb6')}]})[_0x01b4('0x23')](function(_0x200b18){return[_0x200b18,!![]];});});}else{throw new Error(_0x01b4('0xb7'));}})[_0x01b4('0xb8')](function(_0x14e09a,_0x4a4671){if(_0x4a4671){return _0x14e09a;}return db[_0x01b4('0xa6')]['create']({'direction':_0x01b4('0xb5'),'read':![],'body':_0x444807['body']['attachments'][0x0][_0x01b4('0xb9')],'FaxAccountId':_0x8e2c66['id'],'FaxInteractionId':_0x14e09a['id'],'UserId':_0x444807['user']['id'],'ContactId':_0x14e09a['ContactId'],'AttachmentId':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['id']})[_0x01b4('0x23')](function(_0x192acb){_0x14e09a[_0x01b4('0xba')][_0x01b4('0xb6')]=[];_0x14e09a[_0x01b4('0xba')][_0x01b4('0xb6')]['push'](_0x192acb[_0x01b4('0xba')]);return _0x14e09a;});})[_0x01b4('0x23')](function(_0x21e784){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x01b4('0xb0')](_0x444807[_0x01b4('0x66')]['id'])?undefined:_0x444807[_0x01b4('0x66')]['id'],'path':_[_0x01b4('0xb0')](_0x444807['body'][_0x01b4('0xab')][0x0][_0x01b4('0x7')])?undefined:_0x444807['body'][_0x01b4('0xab')][0x0][_0x01b4('0x7')],'fax':_[_0x01b4('0xb0')](_0x444807['body']['to'][0x0])?undefined:_0x444807[_0x01b4('0x5e')]['to'][0x0],'AttachmentId':_0x444807[_0x01b4('0x5e')][_0x01b4('0xab')][0x0]['id']},client9002)[_0x01b4('0x23')](function(_0x265114){logger[_0x01b4('0x24')](_0x01b4('0xbb'),_0x265114);})[_0x01b4('0x2e')](function(_0x3d3e88){logger[_0x01b4('0x24')](_0x01b4('0xbb'),_0x3d3e88);});return _0x21e784;})['then'](respondWithResult(_0xc8f74,null))[_0x01b4('0x2e')](handleError(_0xc8f74,null));};exports['addAgents']=function(_0x53c164,_0x2c8819,_0x351630){return db['FaxAccount'][_0x01b4('0x5c')]({'where':{'id':_0x53c164[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x2c8819,null))['then'](function(_0x2eaba8){if(_0x2eaba8){return _0x2eaba8[_0x01b4('0xbc')](_0x53c164[_0x01b4('0x5e')]['ids'],_[_0x01b4('0x9c')](_0x53c164['body'],['ids','id'])||{})[_0x01b4('0xb8')](function(_0x4ad7d1){for(var _0x30fc69=0x0;_0x30fc69<_0x53c164[_0x01b4('0x5e')]['ids'][_0x01b4('0x5b')];_0x30fc69+=0x1){socket[_0x01b4('0xbd')](_0x01b4('0xbe'),{'UserId':Number(_0x53c164[_0x01b4('0x5e')][_0x01b4('0x72')][_0x30fc69]),'FaxAccountId':Number(_0x53c164[_0x01b4('0x66')]['id'])});}return _0x4ad7d1;});}})['then'](respondWithResult(_0x2c8819,null))[_0x01b4('0x2e')](handleError(_0x2c8819,null));};exports[_0x01b4('0xbf')]=function(_0x1fea56,_0x253010,_0x20e710){return db[_0x01b4('0x44')][_0x01b4('0x5c')]({'where':{'id':_0x1fea56[_0x01b4('0x66')]['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x253010,null))[_0x01b4('0x23')](function(_0x150ee0){if(_0x150ee0){return _0x150ee0['removeAgents'](_0x1fea56['query'][_0x01b4('0x72')])[_0x01b4('0x23')](function(){if(_[_0x01b4('0xc0')](_0x1fea56['query'][_0x01b4('0x72')])){for(var _0x5c3c7b=0x0;_0x5c3c7b<_0x1fea56[_0x01b4('0x48')][_0x01b4('0x72')][_0x01b4('0x5b')];_0x5c3c7b+=0x1){socket[_0x01b4('0xbd')]('userFaxAccount:remove',{'UserId':Number(_0x1fea56['query'][_0x01b4('0x72')][_0x5c3c7b]),'FaxAccountId':Number(_0x1fea56[_0x01b4('0x66')]['id'])});}}else{socket[_0x01b4('0xbd')](_0x01b4('0xc1'),{'UserId':Number(_0x1fea56['query'][_0x01b4('0x72')]),'FaxAccountId':Number(_0x1fea56['params']['id'])});}});}})['then'](respondWithStatusCode(_0x253010,null))['catch'](handleError(_0x253010,null));};exports['getAgents']=function(_0x4cfb70,_0x5b3a7a,_0x3360ae){var _0x5d33ac={};var _0x521c60={};var _0x526730;var _0x5e3809;return db[_0x01b4('0x44')][_0x01b4('0x6b')]({'where':{'id':_0x4cfb70['params']['id']}})[_0x01b4('0x23')](handleEntityNotFound(_0x5b3a7a,null))['then'](function(_0x26cdce){if(_0x26cdce){_0x526730=_0x26cdce;_0x521c60[_0x01b4('0x46')]=_[_0x01b4('0x47')](db[_0x01b4('0x75')]['rawAttributes']);_0x521c60['query']=_[_0x01b4('0x47')](_0x4cfb70[_0x01b4('0x48')]);_0x521c60[_0x01b4('0x49')]=_[_0x01b4('0x4b')](_0x521c60[_0x01b4('0x46')],_0x521c60[_0x01b4('0x48')]);_0x5d33ac['attributes']=_[_0x01b4('0x4b')](_0x521c60['model'],qs[_0x01b4('0x4c')](_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x4c')]));_0x5d33ac['attributes']=_0x5d33ac[_0x01b4('0x4a')][_0x01b4('0x5b')]?_0x5d33ac[_0x01b4('0x4a')]:_0x521c60[_0x01b4('0x46')];_0x5d33ac['order']=qs[_0x01b4('0x50')](_0x4cfb70['query'][_0x01b4('0x50')]);_0x5d33ac[_0x01b4('0x51')]=qs[_0x01b4('0x49')](_['pick'](_0x4cfb70[_0x01b4('0x48')],_0x521c60[_0x01b4('0x49')]));if(_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x53')]){_0x5d33ac[_0x01b4('0x51')]=_[_0x01b4('0x54')](_0x5d33ac[_0x01b4('0x51')],{'$or':_[_0x01b4('0x43')](_0x5d33ac['attributes'],function(_0x5643e3){var _0x55eceb={};_0x55eceb[_0x5643e3]={'$like':'%'+_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x53')]+'%'};return _0x55eceb;})});}_0x5d33ac=_[_0x01b4('0x54')]({},_0x5d33ac,_0x4cfb70['options']);return _0x526730['getAgents'](_0x5d33ac);}})[_0x01b4('0x23')](function(_0x35313a){if(_0x35313a){_0x5e3809=_0x35313a['length'];if(!_0x4cfb70['query'][_0x01b4('0x4d')](_0x01b4('0x4e'))){_0x5d33ac['limit']=qs[_0x01b4('0x34')](_0x4cfb70[_0x01b4('0x48')][_0x01b4('0x34')]);_0x5d33ac[_0x01b4('0x36')]=qs['offset'](_0x4cfb70['query'][_0x01b4('0x36')]);}return _0x526730[_0x01b4('0xc2')](_0x5d33ac);}})['then'](function(_0x30c1b4){if(_0x30c1b4){return _0x30c1b4?{'count':_0x5e3809,'rows':_0x30c1b4}:null;}})[_0x01b4('0x23')](respondWithResult(_0x5b3a7a,null))['catch'](handleError(_0x5b3a7a,null));};
\ No newline at end of file
index 36147e2..81bcaa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe90f=['exports','events','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x151262,_0x3fd888){var _0x2ec73e=function(_0x13d608){while(--_0x13d608){_0x151262['push'](_0x151262['shift']());}};_0x2ec73e(++_0x3fd888);}(_0xe90f,0x78));var _0xfe90=function(_0x41a7cc,_0x4700fd){_0x41a7cc=_0x41a7cc-0x0;var _0x4ed37d=_0xe90f[_0x41a7cc];return _0x4ed37d;};'use strict';var EventEmitter=require(_0xfe90('0x0'));var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xfe90('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfe90('0x2'),'afterDestroy':_0xfe90('0x3')};function emitEvent(_0x474507){return function(_0xb9447f,_0x32033d,_0x35c1c7){FaxAccountEvents[_0xfe90('0x4')](_0x474507+':'+_0xb9447f['id'],_0xb9447f);FaxAccountEvents[_0xfe90('0x4')](_0x474507,_0xb9447f);_0x35c1c7(null);};}for(var e in events){if(events[_0xfe90('0x5')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xfe90('0x6')]=FaxAccountEvents;
\ No newline at end of file
+var _0xd30a=['update','remove','emit','hook','exports','events','FaxAccount','setMaxListeners'];(function(_0x496884,_0x789a7b){var _0x43f938=function(_0xa006c1){while(--_0xa006c1){_0x496884['push'](_0x496884['shift']());}};_0x43f938(++_0x789a7b);}(_0xd30a,0x19d));var _0xad30=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xd30a[_0x3ff085];return _0x2b68c3;};'use strict';var EventEmitter=require(_0xad30('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0xad30('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xad30('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xad30('0x3'),'afterDestroy':_0xad30('0x4')};function emitEvent(_0xd50b07){return function(_0x2d33da,_0x21c67b,_0x1cd806){FaxAccountEvents[_0xad30('0x5')](_0xd50b07+':'+_0x2d33da['id'],_0x2d33da);FaxAccountEvents[_0xad30('0x5')](_0xd50b07,_0x2d33da);_0x1cd806(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0xad30('0x6')](e,emitEvent(event));}}module[_0xad30('0x7')]=FaxAccountEvents;
\ No newline at end of file
index acafb03..ac7bafe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','fax_accounts','lodash','../../config/logger'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0x483f,0x116));var _0xf483=function(_0x58a813,_0x233a47){_0x58a813=_0x58a813-0x0;var _0x2686e5=_0x483f[_0x58a813];return _0x2686e5;};'use strict';var _=require(_0xf483('0x0'));var util=require('util');var logger=require(_0xf483('0x1'))(_0xf483('0x2'));var moment=require(_0xf483('0x3'));var BPromise=require(_0xf483('0x4'));var rp=require(_0xf483('0x5'));var fs=require('fs');var path=require(_0xf483('0x6'));var rimraf=require(_0xf483('0x7'));var config=require(_0xf483('0x8'));var attributes=require(_0xf483('0x9'));module[_0xf483('0xa')]=function(_0x50455f,_0x239bdb){return _0x50455f[_0xf483('0xb')](_0xf483('0xc'),attributes,{'tableName':_0xf483('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xccf3=['path','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xccf3,0x14c));var _0x3ccf=function(_0x2a8db9,_0x1b536a){_0x2a8db9=_0x2a8db9-0x0;var _0x9e09b3=_0xccf3[_0x2a8db9];return _0x9e09b3;};'use strict';var _=require(_0x3ccf('0x0'));var util=require(_0x3ccf('0x1'));var logger=require(_0x3ccf('0x2'))(_0x3ccf('0x3'));var moment=require('moment');var BPromise=require(_0x3ccf('0x4'));var rp=require(_0x3ccf('0x5'));var fs=require('fs');var path=require(_0x3ccf('0x6'));var rimraf=require(_0x3ccf('0x7'));var config=require(_0x3ccf('0x8'));var attributes=require(_0x3ccf('0x9'));module[_0x3ccf('0xa')]=function(_0x192177,_0x2afa96){return _0x192177['define'](_0x3ccf('0xb'),attributes,{'tableName':_0x3ccf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3ec412a..501e497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a78=['startRouting','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','FaxAccount','findAll','options','raw','attributes','limit','map','include','model','GetFaxAccount','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','ListId','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','find','account','CmList','List','CmContact','Contacts','FaxApplication','Applications','get','applications','list','orderBy','priority','asc','from','create','contact','FaxInteraction','Contact\x20not\x20found','push','length','close','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start'];(function(_0x54d9c5,_0x5e89eb){var _0x54df57=function(_0x5bbc1b){while(--_0x5bbc1b){_0x54d9c5['push'](_0x54d9c5['shift']());}};_0x54df57(++_0x5e89eb);}(_0x3a78,0x1c4));var _0x83a7=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0x3a78[_0x41c381];return _0x427981;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x83a7('0x0'));var BPromise=require(_0x83a7('0x1'));var rs=require(_0x83a7('0x2'));var fs=require('fs');var Redis=require(_0x83a7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x83a7('0x4'));var logger=require(_0x83a7('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x83a7('0x6'));var client=jayson[_0x83a7('0x7')][_0x83a7('0x8')]({'port':0x232c});config[_0x83a7('0x9')]=_[_0x83a7('0xa')](config[_0x83a7('0x9')],{'host':_0x83a7('0xb'),'port':0x18eb});var socket=require(_0x83a7('0xc'))(new Redis(config['redis']));require('./faxAccount.socket')[_0x83a7('0xd')](socket);function respondWithRpcPromise(_0xf4ffc,_0x5ddb1c,_0x1d990f){return new BPromise(function(_0xc244ac,_0x2e21df){return client[_0x83a7('0xe')](_0xf4ffc,_0x1d990f)[_0x83a7('0xf')](function(_0x36c908){logger[_0x83a7('0x10')]('FaxAccount,\x20%s,\x20%s',_0x5ddb1c,'request\x20sent');logger[_0x83a7('0x11')](_0x83a7('0x12'),_0x5ddb1c,_0x83a7('0x13'),JSON[_0x83a7('0x14')](_0x36c908));if(_0x36c908['error']){if(_0x36c908[_0x83a7('0x15')][_0x83a7('0x16')]===0x1f4){logger[_0x83a7('0x15')](_0x83a7('0x17'),_0x5ddb1c,_0x36c908['error'][_0x83a7('0x18')]);return _0x2e21df(_0x36c908['error'][_0x83a7('0x18')]);}logger[_0x83a7('0x15')](_0x83a7('0x17'),_0x5ddb1c,_0x36c908[_0x83a7('0x15')][_0x83a7('0x18')]);return _0xc244ac(_0x36c908[_0x83a7('0x15')][_0x83a7('0x18')]);}else{logger['info'](_0x83a7('0x17'),_0x5ddb1c,_0x83a7('0x13'));_0xc244ac(_0x36c908[_0x83a7('0x19')][_0x83a7('0x18')]);}})['catch'](function(_0x22458c){logger[_0x83a7('0x15')](_0x83a7('0x17'),_0x5ddb1c,_0x22458c);_0x2e21df(_0x22458c);});});}exports['GetFaxAccount']=function(_0x2ee577){var _0xee91fd=this;return new Promise(function(_0x747358,_0x1444f1){return db[_0x83a7('0x1a')][_0x83a7('0x1b')]({'raw':_0x2ee577[_0x83a7('0x1c')]?_0x2ee577[_0x83a7('0x1c')][_0x83a7('0x1d')]===undefined?!![]:![]:!![],'where':_0x2ee577[_0x83a7('0x1c')]?_0x2ee577[_0x83a7('0x1c')]['where']||null:null,'attributes':_0x2ee577[_0x83a7('0x1c')]?_0x2ee577['options'][_0x83a7('0x1e')]||null:null,'limit':_0x2ee577[_0x83a7('0x1c')]?_0x2ee577[_0x83a7('0x1c')][_0x83a7('0x1f')]||null:null,'include':_0x2ee577[_0x83a7('0x1c')]?_0x2ee577[_0x83a7('0x1c')]['include']?_[_0x83a7('0x20')](_0x2ee577[_0x83a7('0x1c')][_0x83a7('0x21')],function(_0x57dd4f){return{'model':db[_0x57dd4f[_0x83a7('0x22')]],'as':_0x57dd4f['as'],'attributes':_0x57dd4f[_0x83a7('0x1e')],'include':_0x57dd4f[_0x83a7('0x21')]?_[_0x83a7('0x20')](_0x57dd4f[_0x83a7('0x21')],function(_0x5abd76){return{'model':db[_0x5abd76[_0x83a7('0x22')]],'as':_0x5abd76['as'],'attributes':_0x5abd76[_0x83a7('0x1e')],'include':_0x5abd76[_0x83a7('0x21')]?_['map'](_0x5abd76['include'],function(_0x552581){return{'model':db[_0x552581['model']],'as':_0x552581['as'],'attributes':_0x552581[_0x83a7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x83a7('0xf')](function(_0x3fbc33){logger[_0x83a7('0x10')](_0x83a7('0x23'),_0x2ee577);logger[_0x83a7('0x11')](_0x83a7('0x23'),_0x2ee577,JSON[_0x83a7('0x14')](_0x3fbc33));_0x747358(_0x3fbc33);})['catch'](function(_0x4fc4fa){logger[_0x83a7('0x15')](_0x83a7('0x23'),_0x4fc4fa[_0x83a7('0x18')],_0x2ee577);_0x1444f1(_0xee91fd[_0x83a7('0x15')](0x1f4,_0x4fc4fa[_0x83a7('0x18')]));});});};exports[_0x83a7('0x24')]=function(_0x4c1284,_0x1ade93,_0x46b26d){var _0x4295c3=this;return new Promise(function(_0x14ab63,_0x449745){var _0x2b5678={'body':_0x4c1284[_0x83a7('0x25')],'channel':_0x83a7('0x26')};var _0x2ff05f=[];var _0xed2ba8=[];var _0x321325={};return db['CmContact'][_0x83a7('0x27')]()[_0x83a7('0xf')](function(_0x288463){if(!_0x288463){throw new db[(_0x83a7('0x28'))][(_0x83a7('0x29'))](_0x83a7('0x2a'));}_0x2ff05f=_[_0x83a7('0x2b')](_[_0x83a7('0x2c')](_0x288463),['createdAt',_0x83a7('0x2d')]);_0xed2ba8=_['difference'](_[_0x83a7('0x2c')](_0x288463),[_0x83a7('0x2e'),_0x83a7('0x2d'),'CompanyId',_0x83a7('0x2f')]);if(_0x4c1284['body']['id']){delete _0x4c1284[_0x83a7('0x25')]['id'];}if(_['isNil'](_0x4c1284[_0x83a7('0x25')]['from'])){throw new db['Sequelize'][(_0x83a7('0x29'))](_0x83a7('0x30'));}if(_[_0x83a7('0x31')](_0x4c1284['body'][_0x83a7('0x25')])||_0x4c1284[_0x83a7('0x25')][_0x83a7('0x25')]===''){throw new db[(_0x83a7('0x28'))][(_0x83a7('0x29'))](_0x83a7('0x32'));}if(_['isNil'](_0x4c1284[_0x83a7('0x25')][_0x83a7('0x33')])){throw new db[(_0x83a7('0x28'))][(_0x83a7('0x29'))](_0x83a7('0x34')+_0xed2ba8);}if(!_[_0x83a7('0x35')](_0xed2ba8,_0x4c1284[_0x83a7('0x25')][_0x83a7('0x33')])){throw new db[(_0x83a7('0x28'))][(_0x83a7('0x29'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xed2ba8);}_0x321325[_0x4c1284['body']['mapKey']]=_0x4c1284[_0x83a7('0x25')]['from'];})[_0x83a7('0xf')](function(){return db['FaxAccount'][_0x83a7('0x36')]({'where':{'id':_0x4c1284[_0x83a7('0x37')]['id']},'include':[{'model':db[_0x83a7('0x38')],'as':_0x83a7('0x39'),'include':[{'model':db[_0x83a7('0x3a')],'as':_0x83a7('0x3b'),'where':_0x321325,'limit':0x1,'order':[[_0x83a7('0x2d'),'DESC']]}]},{'model':db[_0x83a7('0x3c')],'as':_0x83a7('0x3d')}]});})[_0x83a7('0xf')](function(_0x201f07){if(_0x201f07&&_0x201f07[_0x83a7('0x39')]){var _0x41e44b=_0x201f07[_0x83a7('0x3e')]({'plain':!![]});_0x2b5678[_0x83a7('0x37')]=_0x41e44b;_0x2b5678[_0x83a7('0x3f')]=_0x41e44b['Applications'];_0x2b5678[_0x83a7('0x40')]=_0x41e44b[_0x83a7('0x39')];_0x2b5678[_0x83a7('0x3f')]=_[_0x83a7('0x41')](_0x2b5678[_0x83a7('0x3f')],[_0x83a7('0x42')],[_0x83a7('0x43')]);if(_0x2b5678[_0x83a7('0x37')][_0x83a7('0x3d')]){delete _0x2b5678[_0x83a7('0x37')]['Applications'];}if(_0x2b5678[_0x83a7('0x37')][_0x83a7('0x39')]&&_0x2b5678['account'][_0x83a7('0x39')]['Contacts']['length']){return _0x2b5678[_0x83a7('0x37')][_0x83a7('0x39')][_0x83a7('0x3b')][0x0];}var _0x242802=_[_0x83a7('0xa')](_0x4c1284[_0x83a7('0x25')],{'firstName':_0x4c1284[_0x83a7('0x25')][_0x83a7('0x44')],'ListId':_0x41e44b['ListId']});_0x242802[_0x4c1284[_0x83a7('0x25')][_0x83a7('0x33')]]=_0x4c1284[_0x83a7('0x25')][_0x83a7('0x44')];return db['CmContact'][_0x83a7('0x45')](_0x242802,{'fields':_0x2ff05f,'raw':!![]});}})['then'](function(_0x5af561){_0x2b5678[_0x83a7('0x46')]=_0x5af561;if(_0x5af561){var _0x5f0982={'ContactId':_0x5af561['id'],'FaxAccountId':_0x4c1284['account']['id'],'fax':_0x5af561[_0x83a7('0x26')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0x5af561['id'],'closed':![],'FaxAccountId':_0x4c1284[_0x83a7('0x37')]['id']}})[_0x83a7('0xf')](function(_0x5ccb33){if(_0x5ccb33){return[_0x5ccb33,![]];}return db[_0x83a7('0x47')]['create'](_0x5f0982)[_0x83a7('0xf')](function(_0x3710a7){return[_0x3710a7,!![]];});});}else{throw new Error(_0x83a7('0x48'));}})['spread'](function(_0x225b59,_0x34f753){var _0x2a6da4=_0x225b59[_0x83a7('0x3e')]({'plain':!![]});if(_0x34f753){if(_0x2b5678[_0x83a7('0x37')]['autoclose']){_0x2b5678[_0x83a7('0x3f')][_0x83a7('0x49')]({'id':0x0,'priority':_0x2b5678[_0x83a7('0x3f')][_0x83a7('0x4a')]+0x1,'app':_0x83a7('0x4b'),'appdata':'unmanaged','interval':_0x83a7('0x4c')});}_0x2a6da4[_0x83a7('0x4d')]=!![];}else{_0x2a6da4[_0x83a7('0x4d')]=![];}_0x2b5678[_0x83a7('0x4e')]=_0x2a6da4;return db['FaxMessage'][_0x83a7('0x45')]({'body':_0x4c1284[_0x83a7('0x25')][_0x83a7('0x25')],'FaxAccountId':_0x4c1284['account']['id'],'FaxInteractionId':_0x225b59['id'],'direction':'in','ContactId':_0x225b59[_0x83a7('0x4f')],'AttachmentId':_0x4c1284[_0x83a7('0x25')][_0x83a7('0x50')]});})['then'](function(_0xff592){_0x2b5678[_0x83a7('0x18')]=_0xff592;if(_0x2b5678[_0x83a7('0x4e')][_0x83a7('0x51')]){return db[_0x83a7('0x52')][_0x83a7('0x36')]({'attributes':['id',_0x83a7('0x53')],'where':{'id':_0x2b5678[_0x83a7('0x4e')][_0x83a7('0x51')]}})[_0x83a7('0xf')](function(_0x127f20){if(_0x127f20){_0x2b5678[_0x83a7('0x3f')][_0x83a7('0x54')]({'id':0x0,'priority':0x0,'app':_0x83a7('0x55'),'appdata':_0x127f20[_0x83a7('0x53')]+','+(_0x2b5678[_0x83a7('0x37')][_0x83a7('0x56')]||0xa),'interval':_0x83a7('0x4c')});}return respondWithRpcPromise(_0x83a7('0x57'),_0x83a7('0x58'),_0x2b5678);});}return respondWithRpcPromise(_0x83a7('0x57'),'startRouting',_0x2b5678);})[_0x83a7('0xf')](function(_0x1967aa){_0x14ab63(_0x1967aa);})[_0x83a7('0x59')](function(_0x5afaab){_0x449745(_0x4295c3['error'](0x1f4,_0x5afaab['message']));});});};
\ No newline at end of file
+var _0x0be2=['asc','Applications','account','Contacts','length','from','ListId','contact','FaxInteraction','create','spread','autoclose','unmanaged','*,*,*,*','created','interaction','ContactId','UserId','find','name','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','keys','createdAt','difference','updatedAt','CompanyId','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','CmContact','DESC','FaxApplication','get','applications','orderBy','priority'];(function(_0x5c4ed3,_0x59eeb7){var _0x4182aa=function(_0x67d750){while(--_0x67d750){_0x5c4ed3['push'](_0x5c4ed3['shift']());}};_0x4182aa(++_0x59eeb7);}(_0x0be2,0x16c));var _0x20be=function(_0x2ff739,_0x1c8e0f){_0x2ff739=_0x2ff739-0x0;var _0x12dc13=_0x0be2[_0x2ff739];return _0x12dc13;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x20be('0x0'));var BPromise=require(_0x20be('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x20be('0x2'));var logger=require('../../config/logger')(_0x20be('0x3'));var config=require(_0x20be('0x4'));var jayson=require(_0x20be('0x5'));var client=jayson[_0x20be('0x6')][_0x20be('0x7')]({'port':0x232c});config[_0x20be('0x8')]=_[_0x20be('0x9')](config[_0x20be('0x8')],{'host':_0x20be('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x20be('0x8')]));require(_0x20be('0xb'))[_0x20be('0xc')](socket);function respondWithRpcPromise(_0x192b67,_0x18b012,_0x326056){return new BPromise(function(_0x496cbf,_0x1d1157){return client['request'](_0x192b67,_0x326056)[_0x20be('0xd')](function(_0x5895d5){logger[_0x20be('0xe')](_0x20be('0xf'),_0x18b012,'request\x20sent');logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x18b012,_0x20be('0x10'),JSON[_0x20be('0x11')](_0x5895d5));if(_0x5895d5[_0x20be('0x12')]){if(_0x5895d5[_0x20be('0x12')][_0x20be('0x13')]===0x1f4){logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);return _0x1d1157(_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);}logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);return _0x496cbf(_0x5895d5[_0x20be('0x12')][_0x20be('0x14')]);}else{logger[_0x20be('0xe')](_0x20be('0xf'),_0x18b012,_0x20be('0x10'));_0x496cbf(_0x5895d5[_0x20be('0x15')][_0x20be('0x14')]);}})[_0x20be('0x16')](function(_0x41e9fd){logger[_0x20be('0x12')](_0x20be('0xf'),_0x18b012,_0x41e9fd);_0x1d1157(_0x41e9fd);});});}exports[_0x20be('0x17')]=function(_0xaa85ba){var _0x5b99ba=this;return new Promise(function(_0x18f666,_0x5b5e80){return db[_0x20be('0x18')][_0x20be('0x19')]({'raw':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba['options'][_0x20be('0x1b')]===undefined?!![]:![]:!![],'where':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba['options'][_0x20be('0x1c')]||null:null,'attributes':_0xaa85ba['options']?_0xaa85ba['options'][_0x20be('0x1d')]||null:null,'limit':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1e')]||null:null,'include':_0xaa85ba[_0x20be('0x1a')]?_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1f')]?_[_0x20be('0x20')](_0xaa85ba[_0x20be('0x1a')][_0x20be('0x1f')],function(_0x124869){return{'model':db[_0x124869[_0x20be('0x21')]],'as':_0x124869['as'],'attributes':_0x124869['attributes'],'include':_0x124869['include']?_[_0x20be('0x20')](_0x124869['include'],function(_0x13cab8){return{'model':db[_0x13cab8['model']],'as':_0x13cab8['as'],'attributes':_0x13cab8[_0x20be('0x1d')],'include':_0x13cab8[_0x20be('0x1f')]?_[_0x20be('0x20')](_0x13cab8[_0x20be('0x1f')],function(_0x163046){return{'model':db[_0x163046[_0x20be('0x21')]],'as':_0x163046['as'],'attributes':_0x163046['attributes']};}):[]};}):[]};}):[]:[]})[_0x20be('0xd')](function(_0x432400){logger[_0x20be('0xe')](_0x20be('0x17'),_0xaa85ba);logger[_0x20be('0x22')](_0x20be('0x17'),_0xaa85ba,JSON[_0x20be('0x11')](_0x432400));_0x18f666(_0x432400);})[_0x20be('0x16')](function(_0x331b4a){logger[_0x20be('0x12')](_0x20be('0x17'),_0x331b4a[_0x20be('0x14')],_0xaa85ba);_0x5b5e80(_0x5b99ba[_0x20be('0x12')](0x1f4,_0x331b4a[_0x20be('0x14')]));});});};exports[_0x20be('0x23')]=function(_0x3e5bab,_0x4a36d9,_0x3a35f9){var _0x42a032=this;return new Promise(function(_0x5f41e9,_0x43e920){var _0x573c10={'body':_0x3e5bab[_0x20be('0x24')],'channel':_0x20be('0x25')};var _0x3109e2=[];var _0x52d1f8=[];var _0x27963b={};return db['CmContact'][_0x20be('0x26')]()['then'](function(_0x296d04){if(!_0x296d04){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x29'));}_0x3109e2=_['difference'](_[_0x20be('0x2a')](_0x296d04),[_0x20be('0x2b'),'updatedAt']);_0x52d1f8=_[_0x20be('0x2c')](_[_0x20be('0x2a')](_0x296d04),[_0x20be('0x2b'),_0x20be('0x2d'),_0x20be('0x2e'),'ListId']);if(_0x3e5bab[_0x20be('0x24')]['id']){delete _0x3e5bab[_0x20be('0x24')]['id'];}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')]['from'])){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x30'));}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')][_0x20be('0x24')])||_0x3e5bab['body'][_0x20be('0x24')]===''){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x20be('0x2f')](_0x3e5bab[_0x20be('0x24')]['mapKey'])){throw new db[(_0x20be('0x27'))][(_0x20be('0x28'))](_0x20be('0x31')+_0x52d1f8);}if(!_[_0x20be('0x32')](_0x52d1f8,_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')])){throw new db['Sequelize'][(_0x20be('0x28'))](_0x20be('0x34')+_0x52d1f8);}_0x27963b[_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')]]=_0x3e5bab[_0x20be('0x24')]['from'];})['then'](function(){return db['FaxAccount']['find']({'where':{'id':_0x3e5bab['account']['id']},'include':[{'model':db['CmList'],'as':_0x20be('0x35'),'include':[{'model':db[_0x20be('0x36')],'as':'Contacts','where':_0x27963b,'limit':0x1,'order':[[_0x20be('0x2d'),_0x20be('0x37')]]}]},{'model':db[_0x20be('0x38')],'as':'Applications'}]});})[_0x20be('0xd')](function(_0x161e26){if(_0x161e26&&_0x161e26[_0x20be('0x35')]){var _0x2259df=_0x161e26[_0x20be('0x39')]({'plain':!![]});_0x573c10['account']=_0x2259df;_0x573c10[_0x20be('0x3a')]=_0x2259df['Applications'];_0x573c10['list']=_0x2259df[_0x20be('0x35')];_0x573c10[_0x20be('0x3a')]=_[_0x20be('0x3b')](_0x573c10[_0x20be('0x3a')],[_0x20be('0x3c')],[_0x20be('0x3d')]);if(_0x573c10['account'][_0x20be('0x3e')]){delete _0x573c10['account']['Applications'];}if(_0x573c10[_0x20be('0x3f')][_0x20be('0x35')]&&_0x573c10[_0x20be('0x3f')]['List'][_0x20be('0x40')][_0x20be('0x41')]){return _0x573c10[_0x20be('0x3f')][_0x20be('0x35')]['Contacts'][0x0];}var _0x5ce79f=_[_0x20be('0x9')](_0x3e5bab['body'],{'firstName':_0x3e5bab[_0x20be('0x24')][_0x20be('0x42')],'ListId':_0x2259df[_0x20be('0x43')]});_0x5ce79f[_0x3e5bab[_0x20be('0x24')][_0x20be('0x33')]]=_0x3e5bab[_0x20be('0x24')]['from'];return db[_0x20be('0x36')]['create'](_0x5ce79f,{'fields':_0x3109e2,'raw':!![]});}})[_0x20be('0xd')](function(_0x2192c5){_0x573c10[_0x20be('0x44')]=_0x2192c5;if(_0x2192c5){var _0x3d1c92={'ContactId':_0x2192c5['id'],'FaxAccountId':_0x3e5bab['account']['id'],'fax':_0x2192c5['fax']};return db[_0x20be('0x45')]['find']({'where':{'ContactId':_0x2192c5['id'],'closed':![],'FaxAccountId':_0x3e5bab[_0x20be('0x3f')]['id']}})[_0x20be('0xd')](function(_0x4d4a26){if(_0x4d4a26){return[_0x4d4a26,![]];}return db[_0x20be('0x45')][_0x20be('0x46')](_0x3d1c92)[_0x20be('0xd')](function(_0x5f58d9){return[_0x5f58d9,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x20be('0x47')](function(_0x32fe6a,_0x43b1b8){var _0x39c3ec=_0x32fe6a[_0x20be('0x39')]({'plain':!![]});if(_0x43b1b8){if(_0x573c10[_0x20be('0x3f')][_0x20be('0x48')]){_0x573c10[_0x20be('0x3a')]['push']({'id':0x0,'priority':_0x573c10[_0x20be('0x3a')][_0x20be('0x41')]+0x1,'app':'close','appdata':_0x20be('0x49'),'interval':_0x20be('0x4a')});}_0x39c3ec[_0x20be('0x4b')]=!![];}else{_0x39c3ec[_0x20be('0x4b')]=![];}_0x573c10[_0x20be('0x4c')]=_0x39c3ec;return db['FaxMessage']['create']({'body':_0x3e5bab[_0x20be('0x24')]['body'],'FaxAccountId':_0x3e5bab[_0x20be('0x3f')]['id'],'FaxInteractionId':_0x32fe6a['id'],'direction':'in','ContactId':_0x32fe6a[_0x20be('0x4d')],'AttachmentId':_0x3e5bab[_0x20be('0x24')]['AttachmentId']});})[_0x20be('0xd')](function(_0x3d36ed){_0x573c10[_0x20be('0x14')]=_0x3d36ed;if(_0x573c10[_0x20be('0x4c')][_0x20be('0x4e')]){return db['User'][_0x20be('0x4f')]({'attributes':['id',_0x20be('0x50')],'where':{'id':_0x573c10['interaction'][_0x20be('0x4e')]}})[_0x20be('0xd')](function(_0x43a074){if(_0x43a074){_0x573c10['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x20be('0x51'),'appdata':_0x43a074['name']+','+(_0x573c10['account'][_0x20be('0x52')]||0xa),'interval':_0x20be('0x4a')});}return respondWithRpcPromise('Start','startRouting',_0x573c10);});}return respondWithRpcPromise(_0x20be('0x53'),_0x20be('0x54'),_0x573c10);})[_0x20be('0xd')](function(_0x2d3da5){_0x5f41e9(_0x2d3da5);})[_0x20be('0x16')](function(_0x3a88f6){_0x43e920(_0x42a032[_0x20be('0x12')](0x1f4,_0x3a88f6['message']));});});};
\ No newline at end of file
index e8719a9..df767d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd508=['remove','emit','removeListener','length','./faxAccount.events','save'];(function(_0x317978,_0x4edbaa){var _0x15a535=function(_0x578162){while(--_0x578162){_0x317978['push'](_0x317978['shift']());}};_0x15a535(++_0x4edbaa);}(_0xd508,0xbe));var _0x8d50=function(_0x2db3b3,_0x12b434){_0x2db3b3=_0x2db3b3-0x0;var _0x3201b0=_0xd508[_0x2db3b3];return _0x3201b0;};'use strict';var FaxAccountEvents=require(_0x8d50('0x0'));var events=[_0x8d50('0x1'),_0x8d50('0x2'),'update'];function createListener(_0x549182,_0x1cd9a9){return function(_0x1512fd){_0x1cd9a9[_0x8d50('0x3')](_0x549182,_0x1512fd);};}function removeListener(_0x5de038,_0x4ef1a2){return function(){FaxAccountEvents[_0x8d50('0x4')](_0x5de038,_0x4ef1a2);};}exports['register']=function(_0x210b84){for(var _0x1d923e=0x0,_0x4e2607=events[_0x8d50('0x5')];_0x1d923e<_0x4e2607;_0x1d923e++){var _0x4cb580=events[_0x1d923e];var _0x3b942d=createListener('faxAccount:'+_0x4cb580,_0x210b84);FaxAccountEvents['on'](_0x4cb580,_0x3b942d);}};
\ No newline at end of file
+var _0xf70e=['save','remove','update','emit','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x318410,_0x451962){var _0x2898a3=function(_0x58e572){while(--_0x58e572){_0x318410['push'](_0x318410['shift']());}};_0x2898a3(++_0x451962);}(_0xf70e,0xf7));var _0xef70=function(_0x3d65f4,_0xe14c3){_0x3d65f4=_0x3d65f4-0x0;var _0x128310=_0xf70e[_0x3d65f4];return _0x128310;};'use strict';var FaxAccountEvents=require(_0xef70('0x0'));var events=[_0xef70('0x1'),_0xef70('0x2'),_0xef70('0x3')];function createListener(_0x133f93,_0x509191){return function(_0x433f5d){_0x509191[_0xef70('0x4')](_0x133f93,_0x433f5d);};}function removeListener(_0x33b0a3,_0x928cf9){return function(){FaxAccountEvents[_0xef70('0x5')](_0x33b0a3,_0x928cf9);};}exports['register']=function(_0x56895a){for(var _0x1acaf5=0x0,_0x3c1313=events[_0xef70('0x6')];_0x1acaf5<_0x3c1313;_0x1acaf5++){var _0x31b69f=events[_0x1acaf5];var _0x28b7fc=createListener(_0xef70('0x7')+_0x31b69f,_0x56895a);FaxAccountEvents['on'](_0x31b69f,_0x28b7fc);}};
\ No newline at end of file
index d0980f1..5fe48bc 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(_0x359e4f,_0x25efbe){var _0x3d0d31=function(_0x5b9420){while(--_0x5b9420){_0x359e4f['push'](_0x359e4f['shift']());}};_0x3d0d31(++_0x25efbe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/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(_0x2d26c2,_0x26a9db){var _0x10675e=function(_0x29a860){while(--_0x29a860){_0x2d26c2['push'](_0x2d26c2['shift']());}};_0x10675e(++_0x26a9db);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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 fb35951..51599fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48b8=['INTEGER','noop','STRING','*,*,*,*','sequelize','exports'];(function(_0x446f11,_0x95cf21){var _0x385cb5=function(_0x426715){while(--_0x426715){_0x446f11['push'](_0x446f11['shift']());}};_0x385cb5(++_0x95cf21);}(_0x48b8,0x130));var _0x848b=function(_0x36481e,_0x584c59){_0x36481e=_0x36481e-0x0;var _0x1cb85e=_0x48b8[_0x36481e];return _0x1cb85e;};'use strict';var Sequelize=require(_0x848b('0x0'));module[_0x848b('0x1')]={'priority':{'type':Sequelize[_0x848b('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x848b('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x848b('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x848b('0x5')}};
\ No newline at end of file
+var _0xab64=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x37f59c,_0x287446){var _0x565ebb=function(_0x11c2c6){while(--_0x11c2c6){_0x37f59c['push'](_0x37f59c['shift']());}};_0x565ebb(++_0x287446);}(_0xab64,0x1f0));var _0x4ab6=function(_0x487efe,_0x2bed8a){_0x487efe=_0x487efe-0x0;var _0x546b15=_0xab64[_0x487efe];return _0x546b15;};'use strict';var Sequelize=require(_0x4ab6('0x0'));module[_0x4ab6('0x1')]={'priority':{'type':Sequelize[_0x4ab6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4ab6('0x3')],'allowNull':![],'defaultValue':_0x4ab6('0x4')},'appdata':{'type':Sequelize[_0x4ab6('0x5')]()},'description':{'type':Sequelize[_0x4ab6('0x3')]},'interval':{'type':Sequelize[_0x4ab6('0x3')],'defaultValue':_0x4ab6('0x6')}};
\ No newline at end of file
index a1cfbee..ad69ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaacc=['status','json','undefined','limit','offset','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','sort','where','pick','filters','filter','includeAll','include','findAll','rows','show','params','merge','options','create','body','catch','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','end'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0xaacc,0x197));var _0xcaac=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0xaacc[_0x468b0f];return _0x3e74d9;};'use strict';var emlformat=require(_0xcaac('0x0'));var rimraf=require(_0xcaac('0x1'));var zipdir=require(_0xcaac('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcaac('0x3'));var moment=require(_0xcaac('0x4'));var BPromise=require(_0xcaac('0x5'));var Mustache=require(_0xcaac('0x6'));var util=require('util');var path=require('path');var sox=require(_0xcaac('0x7'));var csv=require('to-csv');var ejs=require(_0xcaac('0x8'));var fs=require('fs');var fs_extra=require(_0xcaac('0x9'));var _=require(_0xcaac('0xa'));var squel=require(_0xcaac('0xb'));var crypto=require(_0xcaac('0xc'));var jsforce=require(_0xcaac('0xd'));var deskjs=require(_0xcaac('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcaac('0xf'));var Papa=require('papaparse');var Redis=require(_0xcaac('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xcaac('0x11'));var as=require(_0xcaac('0x12'));var hardwareService=require(_0xcaac('0x13'));var logger=require(_0xcaac('0x14'))(_0xcaac('0x15'));var utils=require(_0xcaac('0x16'));var config=require(_0xcaac('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x117844,_0x12c819){_0x12c819=_0x12c819||0xcc;return function(_0x14c37c){if(_0x14c37c){return _0x117844['sendStatus'](_0x12c819);}return _0x117844['status'](_0x12c819)[_0xcaac('0x18')]();};}function respondWithResult(_0x5ca161,_0x15537b){_0x15537b=_0x15537b||0xc8;return function(_0x587f3f){if(_0x587f3f){return _0x5ca161[_0xcaac('0x19')](_0x15537b)[_0xcaac('0x1a')](_0x587f3f);}};}function respondWithFilteredResult(_0x2b5456,_0x119a0f){return function(_0x515f66){if(_0x515f66){var _0x5cc77e=typeof _0x119a0f['offset']===_0xcaac('0x1b')&&typeof _0x119a0f[_0xcaac('0x1c')]==='undefined';var _0x5c188a=_0x515f66['count'];var _0x163e0c=_0x5cc77e?0x0:_0x119a0f[_0xcaac('0x1d')];var _0x20e7d4=_0x5cc77e?_0x515f66['count']:_0x119a0f['offset']+_0x119a0f[_0xcaac('0x1c')];var _0x10aecd;if(_0x20e7d4>=_0x5c188a){_0x20e7d4=_0x5c188a;_0x10aecd=0xc8;}else{_0x10aecd=0xce;}_0x2b5456[_0xcaac('0x19')](_0x10aecd);return _0x2b5456['set'](_0xcaac('0x1e'),_0x163e0c+'-'+_0x20e7d4+'/'+_0x5c188a)[_0xcaac('0x1a')](_0x515f66);}return null;};}function patchUpdates(_0x31b7b2){return function(_0x43fbd6){try{jsonpatch[_0xcaac('0x1f')](_0x43fbd6,_0x31b7b2,!![]);}catch(_0x2995c5){return BPromise[_0xcaac('0x20')](_0x2995c5);}return _0x43fbd6[_0xcaac('0x21')]();};}function saveUpdates(_0x38ef0e,_0x59e822){return function(_0x996b61){if(_0x996b61){return _0x996b61['update'](_0x38ef0e)[_0xcaac('0x22')](function(_0x2e0c21){return _0x2e0c21;});}return null;};}function removeEntity(_0xa7dd6b,_0x10453b){return function(_0x1bd735){if(_0x1bd735){return _0x1bd735[_0xcaac('0x23')]()[_0xcaac('0x22')](function(){_0xa7dd6b[_0xcaac('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x258446,_0x164df7){return function(_0xb46724){if(!_0xb46724){_0x258446[_0xcaac('0x24')](0x194);}return _0xb46724;};}function handleError(_0x2288e7,_0x3f8a1d){_0x3f8a1d=_0x3f8a1d||0x1f4;return function(_0x4538bc){logger[_0xcaac('0x25')](_0x4538bc[_0xcaac('0x26')]);if(_0x4538bc[_0xcaac('0x27')]){delete _0x4538bc[_0xcaac('0x27')];}_0x2288e7[_0xcaac('0x19')](_0x3f8a1d)[_0xcaac('0x28')](_0x4538bc);};}exports[_0xcaac('0x29')]=function(_0x4e0be1,_0x47cbfa){var _0x101620={},_0x90d9fe={},_0x47a434={'count':0x0,'rows':[]};var _0x775a6e=_[_0xcaac('0x2a')](db[_0xcaac('0x2b')][_0xcaac('0x2c')],function(_0x19058d){return{'name':_0x19058d[_0xcaac('0x2d')],'type':_0x19058d[_0xcaac('0x2e')][_0xcaac('0x2f')]};});_0x90d9fe[_0xcaac('0x30')]=_[_0xcaac('0x2a')](_0x775a6e,'name');_0x90d9fe[_0xcaac('0x31')]=_[_0xcaac('0x32')](_0x4e0be1['query']);_0x90d9fe['filters']=_[_0xcaac('0x33')](_0x90d9fe['model'],_0x90d9fe[_0xcaac('0x31')]);_0x101620['attributes']=_['intersection'](_0x90d9fe['model'],qs[_0xcaac('0x34')](_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x34')]));_0x101620[_0xcaac('0x35')]=_0x101620[_0xcaac('0x35')][_0xcaac('0x36')]?_0x101620[_0xcaac('0x35')]:_0x90d9fe[_0xcaac('0x30')];if(!_0x4e0be1[_0xcaac('0x31')]['hasOwnProperty']('nolimit')){_0x101620[_0xcaac('0x1c')]=qs['limit'](_0x4e0be1[_0xcaac('0x31')]['limit']);_0x101620[_0xcaac('0x1d')]=qs[_0xcaac('0x1d')](_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x1d')]);}_0x101620['order']=qs[_0xcaac('0x37')](_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x37')]);_0x101620[_0xcaac('0x38')]=qs['filters'](_[_0xcaac('0x39')](_0x4e0be1[_0xcaac('0x31')],_0x90d9fe[_0xcaac('0x3a')]),_0x775a6e);if(_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x3b')]){_0x101620[_0xcaac('0x38')]=_['merge'](_0x101620[_0xcaac('0x38')],{'$or':_[_0xcaac('0x2a')](_0x775a6e,function(_0x393706){if(_0x393706['type']!=='VIRTUAL'){var _0x36e3fe={};_0x36e3fe[_0x393706[_0xcaac('0x27')]]={'$like':'%'+_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x3b')]+'%'};return _0x36e3fe;}})});}_0x101620=_['merge']({},_0x101620,_0x4e0be1['options']);var _0x4cbe2d={'where':_0x101620[_0xcaac('0x38')]};return db[_0xcaac('0x2b')]['count'](_0x4cbe2d)['then'](function(_0x292478){_0x47a434['count']=_0x292478;if(_0x4e0be1[_0xcaac('0x31')][_0xcaac('0x3c')]){_0x101620[_0xcaac('0x3d')]=[{'all':!![]}];}return db[_0xcaac('0x2b')][_0xcaac('0x3e')](_0x101620);})[_0xcaac('0x22')](function(_0x555569){_0x47a434[_0xcaac('0x3f')]=_0x555569;return _0x47a434;})['then'](respondWithFilteredResult(_0x47cbfa,_0x101620))['catch'](handleError(_0x47cbfa,null));};exports[_0xcaac('0x40')]=function(_0x1cdce8,_0x203c5f){var _0x3f978b={'raw':!![],'where':{'id':_0x1cdce8[_0xcaac('0x41')]['id']}},_0x4a6724={};_0x4a6724[_0xcaac('0x30')]=_['keys'](db[_0xcaac('0x2b')]['rawAttributes']);_0x4a6724['query']=_[_0xcaac('0x32')](_0x1cdce8[_0xcaac('0x31')]);_0x4a6724[_0xcaac('0x3a')]=_[_0xcaac('0x33')](_0x4a6724[_0xcaac('0x30')],_0x4a6724[_0xcaac('0x31')]);_0x3f978b[_0xcaac('0x35')]=_[_0xcaac('0x33')](_0x4a6724[_0xcaac('0x30')],qs['fields'](_0x1cdce8[_0xcaac('0x31')][_0xcaac('0x34')]));_0x3f978b[_0xcaac('0x35')]=_0x3f978b[_0xcaac('0x35')][_0xcaac('0x36')]?_0x3f978b[_0xcaac('0x35')]:_0x4a6724['model'];if(_0x1cdce8[_0xcaac('0x31')][_0xcaac('0x3c')]){_0x3f978b['include']=[{'all':!![]}];}_0x3f978b=_[_0xcaac('0x42')]({},_0x3f978b,_0x1cdce8[_0xcaac('0x43')]);return db[_0xcaac('0x2b')]['find'](_0x3f978b)[_0xcaac('0x22')](handleEntityNotFound(_0x203c5f,null))[_0xcaac('0x22')](respondWithResult(_0x203c5f,null))['catch'](handleError(_0x203c5f,null));};exports[_0xcaac('0x44')]=function(_0x222941,_0x4c7f48){return db[_0xcaac('0x2b')][_0xcaac('0x44')](_0x222941[_0xcaac('0x45')],{})[_0xcaac('0x22')](respondWithResult(_0x4c7f48,0xc9))[_0xcaac('0x46')](handleError(_0x4c7f48,null));};exports[_0xcaac('0x47')]=function(_0x2e049b,_0xd7fd92){if(_0x2e049b['body']['id']){delete _0x2e049b[_0xcaac('0x45')]['id'];}return db[_0xcaac('0x2b')]['find']({'where':{'id':_0x2e049b[_0xcaac('0x41')]['id']}})['then'](handleEntityNotFound(_0xd7fd92,null))[_0xcaac('0x22')](saveUpdates(_0x2e049b[_0xcaac('0x45')],null))[_0xcaac('0x22')](respondWithResult(_0xd7fd92,null))[_0xcaac('0x46')](handleError(_0xd7fd92,null));};exports[_0xcaac('0x23')]=function(_0x1cf113,_0x332b88){return db[_0xcaac('0x2b')]['find']({'where':{'id':_0x1cf113[_0xcaac('0x41')]['id']}})['then'](handleEntityNotFound(_0x332b88,null))[_0xcaac('0x22')](removeEntity(_0x332b88,null))[_0xcaac('0x46')](handleError(_0x332b88,null));};
\ No newline at end of file
+var _0x01aa=['sort','where','filter','merge','options','includeAll','catch','rawAttributes','length','include','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','reject','save','update','then','sendStatus','error','name','send','index','map','FaxApplication','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x4fade7,_0x593db2){var _0x212008=function(_0x56061b){while(--_0x56061b){_0x4fade7['push'](_0x4fade7['shift']());}};_0x212008(++_0x593db2);}(_0x01aa,0x11b));var _0xa01a=function(_0x1711ac,_0x20dbe9){_0x1711ac=_0x1711ac-0x0;var _0x47d1f8=_0x01aa[_0x1711ac];return _0x47d1f8;};'use strict';var emlformat=require(_0xa01a('0x0'));var rimraf=require(_0xa01a('0x1'));var zipdir=require(_0xa01a('0x2'));var jsonpatch=require(_0xa01a('0x3'));var rp=require(_0xa01a('0x4'));var moment=require(_0xa01a('0x5'));var BPromise=require(_0xa01a('0x6'));var Mustache=require(_0xa01a('0x7'));var util=require(_0xa01a('0x8'));var path=require(_0xa01a('0x9'));var sox=require(_0xa01a('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa01a('0xb'));var crypto=require('crypto');var jsforce=require(_0xa01a('0xc'));var deskjs=require(_0xa01a('0xd'));var toCsv=require(_0xa01a('0xe'));var querystring=require(_0xa01a('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa01a('0x10'));var as=require(_0xa01a('0x11'));var hardwareService=require(_0xa01a('0x12'));var logger=require(_0xa01a('0x13'))(_0xa01a('0x14'));var utils=require('../../config/utils');var config=require(_0xa01a('0x15'));var licenseUtil=require(_0xa01a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x208095,_0x3723eb){_0x3723eb=_0x3723eb||0xcc;return function(_0x33779a){if(_0x33779a){return _0x208095['sendStatus'](_0x3723eb);}return _0x208095[_0xa01a('0x17')](_0x3723eb)[_0xa01a('0x18')]();};}function respondWithResult(_0x4a50a1,_0x2d71c8){_0x2d71c8=_0x2d71c8||0xc8;return function(_0x46e9f8){if(_0x46e9f8){return _0x4a50a1[_0xa01a('0x17')](_0x2d71c8)[_0xa01a('0x19')](_0x46e9f8);}};}function respondWithFilteredResult(_0x43c4b6,_0xf015f2){return function(_0x38a86e){if(_0x38a86e){var _0x42a133=typeof _0xf015f2[_0xa01a('0x1a')]===_0xa01a('0x1b')&&typeof _0xf015f2[_0xa01a('0x1c')]===_0xa01a('0x1b');var _0x1b7c0a=_0x38a86e[_0xa01a('0x1d')];var _0x325b80=_0x42a133?0x0:_0xf015f2[_0xa01a('0x1a')];var _0x5b8a2a=_0x42a133?_0x38a86e['count']:_0xf015f2[_0xa01a('0x1a')]+_0xf015f2[_0xa01a('0x1c')];var _0x2d1ae2;if(_0x5b8a2a>=_0x1b7c0a){_0x5b8a2a=_0x1b7c0a;_0x2d1ae2=0xc8;}else{_0x2d1ae2=0xce;}_0x43c4b6['status'](_0x2d1ae2);return _0x43c4b6['set']('Content-Range',_0x325b80+'-'+_0x5b8a2a+'/'+_0x1b7c0a)[_0xa01a('0x19')](_0x38a86e);}return null;};}function patchUpdates(_0x57fe3f){return function(_0xfe81da){try{jsonpatch['apply'](_0xfe81da,_0x57fe3f,!![]);}catch(_0x326233){return BPromise[_0xa01a('0x1e')](_0x326233);}return _0xfe81da[_0xa01a('0x1f')]();};}function saveUpdates(_0x386409,_0x132bbc){return function(_0x1c5d56){if(_0x1c5d56){return _0x1c5d56[_0xa01a('0x20')](_0x386409)[_0xa01a('0x21')](function(_0x5d3721){return _0x5d3721;});}return null;};}function removeEntity(_0xa290dc,_0x20b6b1){return function(_0x6baba6){if(_0x6baba6){return _0x6baba6['destroy']()[_0xa01a('0x21')](function(){_0xa290dc[_0xa01a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44bea3,_0xc89630){return function(_0x27b358){if(!_0x27b358){_0x44bea3[_0xa01a('0x22')](0x194);}return _0x27b358;};}function handleError(_0x201517,_0x44d236){_0x44d236=_0x44d236||0x1f4;return function(_0x2f380a){logger[_0xa01a('0x23')](_0x2f380a['stack']);if(_0x2f380a[_0xa01a('0x24')]){delete _0x2f380a['name'];}_0x201517[_0xa01a('0x17')](_0x44d236)[_0xa01a('0x25')](_0x2f380a);};}exports[_0xa01a('0x26')]=function(_0x3d1757,_0x443578){var _0x5ad83d={},_0x21f25d={},_0x533216={'count':0x0,'rows':[]};var _0x1b106c=_[_0xa01a('0x27')](db[_0xa01a('0x28')]['rawAttributes'],function(_0x24c0a8){return{'name':_0x24c0a8[_0xa01a('0x29')],'type':_0x24c0a8['type'][_0xa01a('0x2a')]};});_0x21f25d[_0xa01a('0x2b')]=_['map'](_0x1b106c,_0xa01a('0x24'));_0x21f25d[_0xa01a('0x2c')]=_[_0xa01a('0x2d')](_0x3d1757[_0xa01a('0x2c')]);_0x21f25d[_0xa01a('0x2e')]=_[_0xa01a('0x2f')](_0x21f25d[_0xa01a('0x2b')],_0x21f25d[_0xa01a('0x2c')]);_0x5ad83d[_0xa01a('0x30')]=_[_0xa01a('0x2f')](_0x21f25d[_0xa01a('0x2b')],qs[_0xa01a('0x31')](_0x3d1757[_0xa01a('0x2c')]['fields']));_0x5ad83d['attributes']=_0x5ad83d[_0xa01a('0x30')]['length']?_0x5ad83d[_0xa01a('0x30')]:_0x21f25d['model'];if(!_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x32')](_0xa01a('0x33'))){_0x5ad83d[_0xa01a('0x1c')]=qs[_0xa01a('0x1c')](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x1c')]);_0x5ad83d['offset']=qs['offset'](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x1a')]);}_0x5ad83d['order']=qs['sort'](_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x34')]);_0x5ad83d[_0xa01a('0x35')]=qs[_0xa01a('0x2e')](_['pick'](_0x3d1757[_0xa01a('0x2c')],_0x21f25d['filters']),_0x1b106c);if(_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x36')]){_0x5ad83d[_0xa01a('0x35')]=_['merge'](_0x5ad83d[_0xa01a('0x35')],{'$or':_[_0xa01a('0x27')](_0x1b106c,function(_0x42c1b6){if(_0x42c1b6['type']!=='VIRTUAL'){var _0x1a4323={};_0x1a4323[_0x42c1b6[_0xa01a('0x24')]]={'$like':'%'+_0x3d1757[_0xa01a('0x2c')][_0xa01a('0x36')]+'%'};return _0x1a4323;}})});}_0x5ad83d=_[_0xa01a('0x37')]({},_0x5ad83d,_0x3d1757[_0xa01a('0x38')]);var _0x1b94a4={'where':_0x5ad83d[_0xa01a('0x35')]};return db['FaxApplication'][_0xa01a('0x1d')](_0x1b94a4)[_0xa01a('0x21')](function(_0x496475){_0x533216[_0xa01a('0x1d')]=_0x496475;if(_0x3d1757['query'][_0xa01a('0x39')]){_0x5ad83d['include']=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x5ad83d);})[_0xa01a('0x21')](function(_0x3de79d){_0x533216['rows']=_0x3de79d;return _0x533216;})[_0xa01a('0x21')](respondWithFilteredResult(_0x443578,_0x5ad83d))[_0xa01a('0x3a')](handleError(_0x443578,null));};exports['show']=function(_0x4c3658,_0x33b7be){var _0xa4069a={'raw':!![],'where':{'id':_0x4c3658['params']['id']}},_0x2f0b6e={};_0x2f0b6e[_0xa01a('0x2b')]=_[_0xa01a('0x2d')](db[_0xa01a('0x28')][_0xa01a('0x3b')]);_0x2f0b6e[_0xa01a('0x2c')]=_['keys'](_0x4c3658[_0xa01a('0x2c')]);_0x2f0b6e['filters']=_[_0xa01a('0x2f')](_0x2f0b6e[_0xa01a('0x2b')],_0x2f0b6e[_0xa01a('0x2c')]);_0xa4069a[_0xa01a('0x30')]=_[_0xa01a('0x2f')](_0x2f0b6e[_0xa01a('0x2b')],qs[_0xa01a('0x31')](_0x4c3658[_0xa01a('0x2c')]['fields']));_0xa4069a[_0xa01a('0x30')]=_0xa4069a[_0xa01a('0x30')][_0xa01a('0x3c')]?_0xa4069a[_0xa01a('0x30')]:_0x2f0b6e[_0xa01a('0x2b')];if(_0x4c3658[_0xa01a('0x2c')][_0xa01a('0x39')]){_0xa4069a[_0xa01a('0x3d')]=[{'all':!![]}];}_0xa4069a=_['merge']({},_0xa4069a,_0x4c3658[_0xa01a('0x38')]);return db[_0xa01a('0x28')][_0xa01a('0x3e')](_0xa4069a)[_0xa01a('0x21')](handleEntityNotFound(_0x33b7be,null))['then'](respondWithResult(_0x33b7be,null))[_0xa01a('0x3a')](handleError(_0x33b7be,null));};exports[_0xa01a('0x3f')]=function(_0x3873b1,_0x192860){return db[_0xa01a('0x28')][_0xa01a('0x3f')](_0x3873b1[_0xa01a('0x40')],{})[_0xa01a('0x21')](respondWithResult(_0x192860,0xc9))[_0xa01a('0x3a')](handleError(_0x192860,null));};exports[_0xa01a('0x20')]=function(_0x55073a,_0x51fc11){if(_0x55073a[_0xa01a('0x40')]['id']){delete _0x55073a[_0xa01a('0x40')]['id'];}return db['FaxApplication']['find']({'where':{'id':_0x55073a[_0xa01a('0x41')]['id']}})[_0xa01a('0x21')](handleEntityNotFound(_0x51fc11,null))[_0xa01a('0x21')](saveUpdates(_0x55073a[_0xa01a('0x40')],null))[_0xa01a('0x21')](respondWithResult(_0x51fc11,null))[_0xa01a('0x3a')](handleError(_0x51fc11,null));};exports[_0xa01a('0x42')]=function(_0x265ffa,_0xe13e59){return db['FaxApplication'][_0xa01a('0x3e')]({'where':{'id':_0x265ffa[_0xa01a('0x41')]['id']}})[_0xa01a('0x21')](handleEntityNotFound(_0xe13e59,null))[_0xa01a('0x21')](removeEntity(_0xe13e59,null))[_0xa01a('0x3a')](handleError(_0xe13e59,null));};
\ No newline at end of file
index af3a540..97f40a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68e9=['utf8mb4_unicode_ci','lodash','../../config/logger','api','request-promise','../../config/environment','./faxApplication.attributes','define','FaxApplication','utf8mb4'];(function(_0x10f6e8,_0x351db6){var _0x35bb3c=function(_0x30a39b){while(--_0x30a39b){_0x10f6e8['push'](_0x10f6e8['shift']());}};_0x35bb3c(++_0x351db6);}(_0x68e9,0x1c3));var _0x968e=function(_0x5828d0,_0x2c3e93){_0x5828d0=_0x5828d0-0x0;var _0x239b02=_0x68e9[_0x5828d0];return _0x239b02;};'use strict';var _=require(_0x968e('0x0'));var util=require('util');var logger=require(_0x968e('0x1'))(_0x968e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x968e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x968e('0x4'));var attributes=require(_0x968e('0x5'));module['exports']=function(_0x231d74,_0x23543e){return _0x231d74[_0x968e('0x6')](_0x968e('0x7'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x968e('0x8'),'collate':_0x968e('0x9')});};
\ No newline at end of file
+var _0x30ea=['define','FaxApplication','utf8mb4','lodash','api','request-promise','rimraf','./faxApplication.attributes','exports'];(function(_0x2d7daa,_0x3698e0){var _0x119a17=function(_0x4f717a){while(--_0x4f717a){_0x2d7daa['push'](_0x2d7daa['shift']());}};_0x119a17(++_0x3698e0);}(_0x30ea,0xe4));var _0xa30e=function(_0x50512a,_0x2c37e5){_0x50512a=_0x50512a-0x0;var _0x2ab7ae=_0x30ea[_0x50512a];return _0x2ab7ae;};'use strict';var _=require(_0xa30e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa30e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa30e('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa30e('0x3'));var config=require('../../config/environment');var attributes=require(_0xa30e('0x4'));module[_0xa30e('0x5')]=function(_0x2e7b0b,_0x85157a){return _0x2e7b0b[_0xa30e('0x6')](_0xa30e('0x7'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa30e('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index dc3a186..ba211cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe0=['../../config/environment','jayson/promise','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','raw','options','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xabe0,0x182));var _0x0abe=function(_0x48a345,_0x18ef8c){_0x48a345=_0x48a345-0x0;var _0xa7ed7e=_0xabe0[_0x48a345];return _0xa7ed7e;};'use strict';var _=require(_0x0abe('0x0'));var util=require(_0x0abe('0x1'));var moment=require(_0x0abe('0x2'));var BPromise=require(_0x0abe('0x3'));var rs=require(_0x0abe('0x4'));var fs=require('fs');var Redis=require(_0x0abe('0x5'));var db=require(_0x0abe('0x6'))['db'];var utils=require(_0x0abe('0x7'));var logger=require(_0x0abe('0x8'))(_0x0abe('0x9'));var config=require(_0x0abe('0xa'));var jayson=require(_0x0abe('0xb'));var client=jayson['client'][_0x0abe('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x195b9d,_0x37b992,_0x56f2e7){return new BPromise(function(_0x5bb837,_0x34c2cf){return client[_0x0abe('0xd')](_0x195b9d,_0x56f2e7)[_0x0abe('0xe')](function(_0x2818cf){logger[_0x0abe('0xf')](_0x0abe('0x10'),_0x37b992,_0x0abe('0x11'));logger[_0x0abe('0x12')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x37b992,_0x0abe('0x11'),JSON[_0x0abe('0x13')](_0x2818cf));if(_0x2818cf[_0x0abe('0x14')]){if(_0x2818cf[_0x0abe('0x14')][_0x0abe('0x15')]===0x1f4){logger[_0x0abe('0x14')]('FaxApplication,\x20%s,\x20%s',_0x37b992,_0x2818cf['error'][_0x0abe('0x16')]);return _0x34c2cf(_0x2818cf['error'][_0x0abe('0x16')]);}logger[_0x0abe('0x14')](_0x0abe('0x10'),_0x37b992,_0x2818cf[_0x0abe('0x14')][_0x0abe('0x16')]);return _0x5bb837(_0x2818cf[_0x0abe('0x14')][_0x0abe('0x16')]);}else{logger[_0x0abe('0xf')](_0x0abe('0x10'),_0x37b992,'request\x20sent');_0x5bb837(_0x2818cf[_0x0abe('0x17')][_0x0abe('0x16')]);}})[_0x0abe('0x18')](function(_0x392171){logger['error']('FaxApplication,\x20%s,\x20%s',_0x37b992,_0x392171);_0x34c2cf(_0x392171);});});}exports[_0x0abe('0x19')]=function(_0x1a8a34){var _0x457509=this;return new Promise(function(_0xcaa6de,_0x21ea98){return db[_0x0abe('0x1a')][_0x0abe('0x1b')](_0x1a8a34[_0x0abe('0x1c')],{'raw':_0x1a8a34['options']?_0x1a8a34['options'][_0x0abe('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a8a34[_0x0abe('0x1e')]?_0x1a8a34[_0x0abe('0x1e')][_0x0abe('0x1f')]||null:null,'attributes':_0x1a8a34[_0x0abe('0x1e')]?_0x1a8a34['options'][_0x0abe('0x20')]||null:null,'limit':_0x1a8a34[_0x0abe('0x1e')]?_0x1a8a34[_0x0abe('0x1e')]['limit']||null:null})[_0x0abe('0xe')](function(_0x474373){logger[_0x0abe('0xf')](_0x0abe('0x19'),_0x1a8a34);logger[_0x0abe('0x12')]('UpdateFaxApplication',_0x1a8a34,JSON[_0x0abe('0x13')](_0x474373));_0xcaa6de(_0x474373);})[_0x0abe('0x18')](function(_0x448d68){logger[_0x0abe('0x14')](_0x0abe('0x19'),_0x448d68[_0x0abe('0x16')],_0x1a8a34);_0x21ea98(_0x457509[_0x0abe('0x14')](0x1f4,_0x448d68[_0x0abe('0x16')]));});});};
\ No newline at end of file
+var _0x0503=['debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateFaxApplication','update','body','options','raw','where','attributes','limit','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','http','then','FaxApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0503,0x199));var _0x3050=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0503[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3050('0x0'));var util=require(_0x3050('0x1'));var moment=require(_0x3050('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3050('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3050('0x4'));var logger=require(_0x3050('0x5'))('rpc');var config=require(_0x3050('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3050('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x229f1c,_0x24367c,_0x498e39){return new BPromise(function(_0x49ace7,_0x13108d){return client['request'](_0x229f1c,_0x498e39)[_0x3050('0x8')](function(_0x550677){logger['info'](_0x3050('0x9'),_0x24367c,_0x3050('0xa'));logger[_0x3050('0xb')](_0x3050('0xc'),_0x24367c,_0x3050('0xa'),JSON[_0x3050('0xd')](_0x550677));if(_0x550677['error']){if(_0x550677[_0x3050('0xe')][_0x3050('0xf')]===0x1f4){logger[_0x3050('0xe')](_0x3050('0x9'),_0x24367c,_0x550677[_0x3050('0xe')][_0x3050('0x10')]);return _0x13108d(_0x550677[_0x3050('0xe')][_0x3050('0x10')]);}logger['error'](_0x3050('0x9'),_0x24367c,_0x550677['error'][_0x3050('0x10')]);return _0x49ace7(_0x550677[_0x3050('0xe')][_0x3050('0x10')]);}else{logger[_0x3050('0x11')](_0x3050('0x9'),_0x24367c,_0x3050('0xa'));_0x49ace7(_0x550677[_0x3050('0x12')][_0x3050('0x10')]);}})['catch'](function(_0x274197){logger[_0x3050('0xe')](_0x3050('0x9'),_0x24367c,_0x274197);_0x13108d(_0x274197);});});}exports[_0x3050('0x13')]=function(_0x5b100b){var _0xe17af0=this;return new Promise(function(_0x32cf23,_0x518915){return db['FaxApplication'][_0x3050('0x14')](_0x5b100b[_0x3050('0x15')],{'raw':_0x5b100b[_0x3050('0x16')]?_0x5b100b[_0x3050('0x16')][_0x3050('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b100b['options']?_0x5b100b[_0x3050('0x16')][_0x3050('0x18')]||null:null,'attributes':_0x5b100b[_0x3050('0x16')]?_0x5b100b['options'][_0x3050('0x19')]||null:null,'limit':_0x5b100b['options']?_0x5b100b[_0x3050('0x16')][_0x3050('0x1a')]||null:null})['then'](function(_0x847974){logger['info'](_0x3050('0x13'),_0x5b100b);logger[_0x3050('0xb')]('UpdateFaxApplication',_0x5b100b,JSON[_0x3050('0xd')](_0x847974));_0x32cf23(_0x847974);})[_0x3050('0x1b')](function(_0x39fb65){logger[_0x3050('0xe')]('UpdateFaxApplication',_0x39fb65[_0x3050('0x10')],_0x5b100b);_0x518915(_0xe17af0[_0x3050('0xe')](0x1f4,_0x39fb65[_0x3050('0x10')]));});});};
\ No newline at end of file
index a1358cf..9a816ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1098db,_0x39ba6b){var _0x14f090=function(_0x473ffe){while(--_0x473ffe){_0x1098db['push'](_0x1098db['shift']());}};_0x14f090(++_0x39ba6b);}(_0x8603,0x190));var _0x3860=function(_0x513976,_0x27c038){_0x513976=_0x513976-0x0;var _0x4349b2=_0x8603[_0x513976];return _0x4349b2;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
+var _0x1775=['../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5285f9,_0x2bd7d7){var _0x6edc0c=function(_0x5ae671){while(--_0x5ae671){_0x5285f9['push'](_0x5285f9['shift']());}};_0x6edc0c(++_0x2bd7d7);}(_0x1775,0x1db));var _0x5177=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x1775[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x5177('0x0'));var path=require(_0x5177('0x1'));var timeout=require(_0x5177('0x2'));var express=require(_0x5177('0x3'));var router=express[_0x5177('0x4')]();var fs_extra=require(_0x5177('0x5'));var auth=require(_0x5177('0x6'));var interaction=require(_0x5177('0x7'));var config=require(_0x5177('0x8'));var controller=require(_0x5177('0x9'));router[_0x5177('0xa')]('/',auth[_0x5177('0xb')](),controller[_0x5177('0xc')]);router[_0x5177('0xa')](_0x5177('0xd'),auth[_0x5177('0xb')](),controller[_0x5177('0xe')]);router[_0x5177('0xf')]('/',auth[_0x5177('0xb')](),controller[_0x5177('0x10')]);router[_0x5177('0x11')](_0x5177('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x5177('0x12')](_0x5177('0xd'),auth[_0x5177('0xb')](),controller[_0x5177('0x13')]);module[_0x5177('0x14')]=router;
\ No newline at end of file
index eaa4383..a5e1d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd350=['sequelize','exports','DATE','STRING','ENUM','out'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd350,0x1aa));var _0x0d35=function(_0x54c695,_0x5d6677){_0x54c695=_0x54c695-0x0;var _0x3ce06b=_0xd350[_0x54c695];return _0x3ce06b;};'use strict';var Sequelize=require(_0x0d35('0x0'));module[_0x0d35('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0d35('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0d35('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x0d35('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x0d35('0x4')]('in',_0x0d35('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x0d35('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x0d35('0x4')]('in',_0x0d35('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xbb53=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x6af1b1,_0x4ccf9e){var _0x139dae=function(_0x409ebf){while(--_0x409ebf){_0x6af1b1['push'](_0x6af1b1['shift']());}};_0x139dae(++_0x4ccf9e);}(_0xbb53,0x15b));var _0x3bb5=function(_0x3fc1c6,_0x482992){_0x3fc1c6=_0x3fc1c6-0x0;var _0x510ffa=_0xbb53[_0x3fc1c6];return _0x510ffa;};'use strict';var Sequelize=require(_0x3bb5('0x0'));module[_0x3bb5('0x1')]={'closed':{'type':Sequelize[_0x3bb5('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3bb5('0x3')]},'disposition':{'type':Sequelize[_0x3bb5('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3bb5('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x3bb5('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x3bb5('0x5')]('in',_0x3bb5('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3bb5('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x3bb5('0x5')]('in',_0x3bb5('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 0b0ca4b..f537f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafe0=['attributes','length','includeAll','include','merge','options','create','body','find','describe','addMessage','FaxMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','Tag','emit','faxInteractionTags:save','download','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','err','unlinkSync','zip-dir','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','defaults','localhost','socket.io-emitter','./faxInteraction.socket','status','end','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','FaxInteraction','rawAttributes','fieldName','key','findAll','fax','query','user','catch','show','params','model','keys','filters','intersection','fields'];(function(_0x152449,_0x49f41d){var _0x5b58b2=function(_0x226c30){while(--_0x226c30){_0x152449['push'](_0x152449['shift']());}};_0x5b58b2(++_0x49f41d);}(_0xafe0,0x9d));var _0x0afe=function(_0x5af305,_0xaf3cf8){_0x5af305=_0x5af305-0x0;var _0x4d9831=_0xafe0[_0x5af305];return _0x4d9831;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x0afe('0x0'));var moment=require('moment');var BPromise=require(_0x0afe('0x1'));var util=require(_0x0afe('0x2'));var path=require(_0x0afe('0x3'));var fs=require('fs');var _=require(_0x0afe('0x4'));var Redis=require(_0x0afe('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x0afe('0x6'));var logger=require(_0x0afe('0x7'))('api');var config=require(_0x0afe('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0afe('0x9')](config['redis'],{'host':_0x0afe('0xa'),'port':0x18eb});var socket=require(_0x0afe('0xb'))(new Redis(config['redis']));require(_0x0afe('0xc'))['register'](socket);function respondWithStatusCode(_0x547d0e,_0x444101){_0x444101=_0x444101||0xcc;return function(_0x32dba5){if(_0x32dba5){return _0x547d0e['sendStatus'](_0x444101);}return _0x547d0e[_0x0afe('0xd')](_0x444101)[_0x0afe('0xe')]();};}function respondWithResult(_0x27e2a5,_0x4b9124){_0x4b9124=_0x4b9124||0xc8;return function(_0x570883){if(_0x570883){return _0x27e2a5['status'](_0x4b9124)[_0x0afe('0xf')](_0x570883);}};}function respondWithFilteredResult(_0xc3b721,_0x2c3e50){return function(_0x4bd0cb){if(_0x4bd0cb){var _0x5a26cc=typeof _0x2c3e50['offset']===_0x0afe('0x10')&&typeof _0x2c3e50[_0x0afe('0x11')]===_0x0afe('0x10');var _0x218c77=_0x4bd0cb[_0x0afe('0x12')];var _0x410fa2=_0x5a26cc?0x0:_0x2c3e50[_0x0afe('0x13')];var _0x5984d0=_0x5a26cc?_0x4bd0cb[_0x0afe('0x12')]:_0x2c3e50['offset']+_0x2c3e50['limit'];var _0x4f7308;if(_0x5984d0>=_0x218c77){_0x5984d0=_0x218c77;_0x4f7308=0xc8;}else{_0x4f7308=0xce;}_0xc3b721[_0x0afe('0xd')](_0x4f7308);return _0xc3b721[_0x0afe('0x14')](_0x0afe('0x15'),_0x410fa2+'-'+_0x5984d0+'/'+_0x218c77)[_0x0afe('0xf')](_0x4bd0cb);}return null;};}function saveUpdates(_0x1434b9){return function(_0x256b7a){if(_0x256b7a){return _0x256b7a[_0x0afe('0x16')](_0x1434b9)[_0x0afe('0x17')](function(_0x136c85){return _0x136c85;});}return null;};}function removeEntity(_0x56d954){return function(_0x445b52){if(_0x445b52){return _0x445b52[_0x0afe('0x18')]()[_0x0afe('0x17')](function(){_0x56d954[_0x0afe('0xd')](0xcc)[_0x0afe('0xe')]();});}};}function handleEntityNotFound(_0x44c5b3){return function(_0x43e2b7){if(!_0x43e2b7){_0x44c5b3[_0x0afe('0x19')](0x194);}return _0x43e2b7;};}function handleError(_0x368f01,_0x4ffad6){_0x4ffad6=_0x4ffad6||0x1f4;return function(_0x177999){logger[_0x0afe('0x1a')](_0x177999[_0x0afe('0x1b')]);if(_0x177999[_0x0afe('0x1c')]){delete _0x177999[_0x0afe('0x1c')];}_0x368f01[_0x0afe('0xd')](_0x4ffad6)[_0x0afe('0x1d')](_0x177999);};}exports[_0x0afe('0x1e')]=function(_0x52dfcc,_0x47ca61){var _0x3b04d4={};var _0x27f5d2=_['map'](db[_0x0afe('0x1f')][_0x0afe('0x20')],function(_0x43ab54){return{'name':_0x43ab54[_0x0afe('0x21')],'type':_0x43ab54['type'][_0x0afe('0x22')]};});_0x3b04d4=qs['getOptions'](_0x27f5d2,_0x52dfcc);return interaction[_0x0afe('0x23')](_0x0afe('0x24'),_0x52dfcc[_0x0afe('0x25')],_0x52dfcc[_0x0afe('0x26')],_0x3b04d4,_0x27f5d2)[_0x0afe('0x17')](respondWithFilteredResult(_0x47ca61,_0x3b04d4))[_0x0afe('0x27')](handleError(_0x47ca61,null));};exports[_0x0afe('0x28')]=function(_0x1041e3,_0x3d13c7){var _0x21c099={'raw':![],'where':{'id':_0x1041e3[_0x0afe('0x29')]['id']}},_0x2d12a4={};_0x2d12a4[_0x0afe('0x2a')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x2d12a4[_0x0afe('0x25')]=_[_0x0afe('0x2b')](_0x1041e3[_0x0afe('0x25')]);_0x2d12a4[_0x0afe('0x2c')]=_[_0x0afe('0x2d')](_0x2d12a4[_0x0afe('0x2a')],_0x2d12a4[_0x0afe('0x25')]);_0x21c099['attributes']=_[_0x0afe('0x2d')](_0x2d12a4[_0x0afe('0x2a')],qs[_0x0afe('0x2e')](_0x1041e3['query'][_0x0afe('0x2e')]));_0x21c099['attributes']=_0x21c099[_0x0afe('0x2f')][_0x0afe('0x30')]?_0x21c099[_0x0afe('0x2f')]:_0x2d12a4[_0x0afe('0x2a')];if(_0x1041e3[_0x0afe('0x25')][_0x0afe('0x31')]){_0x21c099[_0x0afe('0x32')]=[{'all':!![]}];}_0x21c099=_[_0x0afe('0x33')]({},_0x21c099,_0x1041e3[_0x0afe('0x34')]);return db[_0x0afe('0x1f')]['find'](_0x21c099)[_0x0afe('0x17')](handleEntityNotFound(_0x3d13c7,null))[_0x0afe('0x17')](respondWithResult(_0x3d13c7,null))[_0x0afe('0x27')](handleError(_0x3d13c7,null));};exports['create']=function(_0x26de03,_0x5e53dd){return db[_0x0afe('0x1f')][_0x0afe('0x35')](_0x26de03[_0x0afe('0x36')],{})[_0x0afe('0x17')](respondWithResult(_0x5e53dd,0xc9))['catch'](handleError(_0x5e53dd,null));};exports[_0x0afe('0x16')]=function(_0x2b9a1c,_0x4250e4){if(_0x2b9a1c[_0x0afe('0x36')]['id']){delete _0x2b9a1c[_0x0afe('0x36')]['id'];}return db[_0x0afe('0x1f')][_0x0afe('0x37')]({'where':{'id':_0x2b9a1c['params']['id']}})[_0x0afe('0x17')](handleEntityNotFound(_0x4250e4,null))[_0x0afe('0x17')](saveUpdates(_0x2b9a1c[_0x0afe('0x36')],null))[_0x0afe('0x17')](respondWithResult(_0x4250e4,null))[_0x0afe('0x27')](handleError(_0x4250e4,null));};exports[_0x0afe('0x18')]=function(_0x2f075e,_0x3de518){return db[_0x0afe('0x1f')]['find']({'where':{'id':_0x2f075e['params']['id']}})[_0x0afe('0x17')](handleEntityNotFound(_0x3de518,null))[_0x0afe('0x17')](removeEntity(_0x3de518,null))[_0x0afe('0x27')](handleError(_0x3de518,null));};exports[_0x0afe('0x38')]=function(_0x16464f,_0x2e8b5b){return db[_0x0afe('0x1f')]['describe']()[_0x0afe('0x17')](respondWithResult(_0x2e8b5b,null))[_0x0afe('0x27')](handleError(_0x2e8b5b,null));};exports[_0x0afe('0x39')]=function(_0x2b19de,_0x56a303){return db[_0x0afe('0x3a')][_0x0afe('0x37')]({'where':{'id':_0x2b19de[_0x0afe('0x29')]['id']}})[_0x0afe('0x17')](handleEntityNotFound(_0x56a303,null))[_0x0afe('0x17')](function(_0x561d05){if(_0x561d05){return _0x561d05['addMessage'](_0x2b19de['body'][_0x0afe('0x3b')],_[_0x0afe('0x3c')](_0x2b19de[_0x0afe('0x36')],[_0x0afe('0x3b'),'id'])||{});}})[_0x0afe('0x17')](respondWithResult(_0x56a303,null))[_0x0afe('0x27')](handleError(_0x56a303,null));};exports[_0x0afe('0x3d')]=function(_0x38c089,_0x6d6a9e){var _0x359a0f={'raw':![],'where':{}};var _0x5c5f69={};var _0x5093e6={'count':0x0,'rows':[]};return db[_0x0afe('0x1f')]['findOne']({'where':{'id':_0x38c089['params']['id']}})['then'](handleEntityNotFound(_0x6d6a9e,null))[_0x0afe('0x17')](function(_0x322ff2){if(_0x322ff2){_0x5c5f69[_0x0afe('0x2a')]=_[_0x0afe('0x2b')](db[_0x0afe('0x3a')]['rawAttributes']);_0x5c5f69[_0x0afe('0x25')]=_[_0x0afe('0x2b')](_0x38c089['query']);_0x5c5f69[_0x0afe('0x2c')]=_['intersection'](_0x5c5f69[_0x0afe('0x2a')],_0x5c5f69[_0x0afe('0x25')]);_0x359a0f[_0x0afe('0x2f')]=_[_0x0afe('0x2d')](_0x5c5f69[_0x0afe('0x2a')],qs[_0x0afe('0x2e')](_0x38c089[_0x0afe('0x25')][_0x0afe('0x2e')]));_0x359a0f[_0x0afe('0x2f')]=_0x359a0f[_0x0afe('0x2f')]['length']?_0x359a0f[_0x0afe('0x2f')]:_0x5c5f69[_0x0afe('0x2a')];if(!_0x38c089[_0x0afe('0x25')][_0x0afe('0x3e')](_0x0afe('0x3f'))){_0x359a0f[_0x0afe('0x11')]=qs[_0x0afe('0x11')](_0x38c089[_0x0afe('0x25')][_0x0afe('0x11')]);_0x359a0f[_0x0afe('0x13')]=qs[_0x0afe('0x13')](_0x38c089[_0x0afe('0x25')][_0x0afe('0x13')]);}_0x359a0f[_0x0afe('0x40')]=qs[_0x0afe('0x41')](_0x38c089[_0x0afe('0x25')]['sort']);_0x359a0f[_0x0afe('0x42')]=qs[_0x0afe('0x2c')](_[_0x0afe('0x43')](_0x38c089[_0x0afe('0x25')],_0x5c5f69[_0x0afe('0x2c')]));_0x359a0f[_0x0afe('0x42')][_0x0afe('0x44')]=_0x322ff2['id'];if(_0x38c089[_0x0afe('0x25')][_0x0afe('0x45')]){_0x359a0f[_0x0afe('0x42')]=_['merge'](_0x359a0f['where'],{'$or':_['map'](_0x359a0f[_0x0afe('0x2f')],function(_0x2792c1){var _0x33dba9={};_0x33dba9[_0x2792c1]={'$like':'%'+_0x38c089[_0x0afe('0x25')][_0x0afe('0x45')]+'%'};return _0x33dba9;})});}if(_0x38c089[_0x0afe('0x25')][_0x0afe('0x46')]){var _0x438911=_0x38c089[_0x0afe('0x25')]['$gte'][_0x0afe('0x47')](',');var _0x22bc51={};_0x22bc51[_0x438911[0x0]]={'$gte':moment(_0x438911[0x1])[_0x0afe('0x48')](_0x0afe('0x49'))};_0x359a0f[_0x0afe('0x42')]=_[_0x0afe('0x33')](_0x359a0f[_0x0afe('0x42')],_0x22bc51);}_0x359a0f=_[_0x0afe('0x33')]({},_0x359a0f,_0x38c089['options']);return db['FaxMessage'][_0x0afe('0x12')]({'where':_0x359a0f[_0x0afe('0x42')]})['then'](function(_0x5129d6){_0x5093e6[_0x0afe('0x12')]=_0x5129d6;if(_0x38c089[_0x0afe('0x25')]['includeAll']){_0x359a0f[_0x0afe('0x32')]=[{'all':!![]}];}return db[_0x0afe('0x3a')][_0x0afe('0x23')](_0x359a0f);})[_0x0afe('0x17')](function(_0x4bfa57){_0x5093e6[_0x0afe('0x4a')]=_0x4bfa57;return _0x5093e6;});}})[_0x0afe('0x17')](respondWithFilteredResult(_0x6d6a9e,_0x359a0f))[_0x0afe('0x27')](handleError(_0x6d6a9e,null));};exports[_0x0afe('0x4b')]=function(_0x111f1c,_0x1291b4){return db[_0x0afe('0x1f')]['find']({'where':{'id':_0x111f1c[_0x0afe('0x29')]['id']}})[_0x0afe('0x17')](handleEntityNotFound(_0x1291b4,null))[_0x0afe('0x17')](function(_0x823acf){if(_0x823acf){return _0x823acf[_0x0afe('0x4c')](_0x111f1c[_0x0afe('0x36')][_0x0afe('0x3b')],_['omit'](_0x111f1c[_0x0afe('0x36')],[_0x0afe('0x3b'),'id'])||{})[_0x0afe('0x4d')](function(){return db[_0x0afe('0x4e')][_0x0afe('0x23')]({'attributes':['id',_0x0afe('0x1c'),'color'],'where':{'id':_0x111f1c[_0x0afe('0x36')][_0x0afe('0x3b')]}});})['then'](function(_0x45738e){socket[_0x0afe('0x4f')](_0x0afe('0x50'),{'id':Number(_0x111f1c[_0x0afe('0x29')]['id']),'tags':_0x45738e||[]});return{'id':Number(_0x111f1c[_0x0afe('0x29')]['id']),'tags':_0x45738e||[]};});}})[_0x0afe('0x17')](respondWithResult(_0x1291b4,null))['catch'](handleError(_0x1291b4,null));};exports['removeTags']=function(_0x1cf5ee,_0x2ec39c){return db['FaxInteraction'][_0x0afe('0x37')]({'where':{'id':_0x1cf5ee['params']['id']}})[_0x0afe('0x17')](handleEntityNotFound(_0x2ec39c,null))[_0x0afe('0x17')](function(_0x2833a4){if(_0x2833a4){return _0x2833a4['removeTags'](_0x1cf5ee['query'][_0x0afe('0x3b')]);}})[_0x0afe('0x17')](respondWithStatusCode(_0x2ec39c,null))[_0x0afe('0x27')](handleError(_0x2ec39c,null));};exports[_0x0afe('0x51')]=function(_0x2baba1,_0x29ed34){var _0x2a0659=moment()[_0x0afe('0x52')]()[_0x0afe('0x53')]();var _0x549784=path[_0x0afe('0x54')](config[_0x0afe('0x55')],_0x0afe('0x56'),_0x0afe('0x57'),'tmp');var _0x25c679=path[_0x0afe('0x54')](config[_0x0afe('0x55')],_0x0afe('0x56'),_0x0afe('0x57'),_0x0afe('0x58'));var _0x3214f7=path[_0x0afe('0x54')](_0x549784,_0x2a0659);var _0x250db8=util['format'](_0x0afe('0x59'),_0x2baba1[_0x0afe('0x29')]['id'],_0x2a0659);var _0x231f4b=path[_0x0afe('0x54')](_0x549784,_0x250db8);var _0x271877=[];_0x271877[_0x0afe('0x5a')]({'model':db[_0x0afe('0x5b')],'as':'Attachment','raw':!![]});var _0x1f5125=[{'model':db[_0x0afe('0x3a')],'as':_0x0afe('0x5c'),'attributes':['id',_0x0afe('0x36'),_0x0afe('0x5d')],'include':_0x271877}];return db[_0x0afe('0x1f')]['find']({'where':{'id':_0x2baba1[_0x0afe('0x29')]['id']},'include':_0x1f5125})[_0x0afe('0x17')](handleEntityNotFound(_0x29ed34,null))[_0x0afe('0x17')](function(_0x5c2aa2){if(_0x5c2aa2&&_0x5c2aa2['Messages']){var _0x5d007b=_0x5c2aa2[_0x0afe('0x5e')]({'plain':!![]});fs[_0x0afe('0x5f')](_0x3214f7);for(var _0x8c4b99=0x0;_0x8c4b99<_0x5d007b[_0x0afe('0x5c')][_0x0afe('0x30')];_0x8c4b99++){var _0x349196=_0x5d007b[_0x0afe('0x5c')][_0x8c4b99]['Attachment'];if(_0x349196){var _0x3b12db=path[_0x0afe('0x54')](_0x25c679,_0x349196['basename']);if(fs[_0x0afe('0x60')](_0x3b12db)){fs[_0x0afe('0x61')](_0x3b12db)[_0x0afe('0x62')](fs[_0x0afe('0x63')](path[_0x0afe('0x54')](_0x3214f7,_0x349196['basename'])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x45399d,_0x5c71a4){zipdir(_0x3214f7,{'saveTo':_0x231f4b},function(_0x44fe71,_0x36c204){if(_0x44fe71)return _0x5c71a4(_0x44fe71);return _0x45399d(_0x36c204);});})[_0x0afe('0x17')](function(){return new BPromise(function(_0x2a1456,_0x397bd3){rimraf(_0x3214f7,function(_0x172c22){if(_0x172c22)_0x397bd3(_0x172c22);return _0x2a1456();});});})['then'](function(){return _0x29ed34[_0x0afe('0x51')](_0x231f4b,_0x250db8,function(_0x36ce3f){if(_0x36ce3f){console['log'](_0x0afe('0x64'),_0x36ce3f);}else{fs[_0x0afe('0x65')](_0x231f4b);}});});});}else{return _0x29ed34[_0x0afe('0x19')](0xc8);}})[_0x0afe('0x27')](handleError(_0x29ed34,null));};
\ No newline at end of file
+var _0xbc8b=['body','find','describe','FaxMessage','ids','omit','findOne','nolimit','sort','where','FaxInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','options','count','includeAll','rows','setTags','spread','Tag','color','faxInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','existsSync','createReadStream','pipe','createWriteStream','basename','resolve','log','err','unlinkSync','rimraf','moment','util','lodash','ioredis','../../config/logger','api','../../config/environment','redis','socket.io-emitter','register','status','end','undefined','limit','offset','set','Content-Range','update','destroy','then','sendStatus','stack','name','index','map','FaxInteraction','rawAttributes','fieldName','findAll','fax','query','user','params','model','keys','filters','intersection','attributes','fields','length','include','merge','catch'];(function(_0x587380,_0x1bddfc){var _0x3653d2=function(_0x59e0bf){while(--_0x59e0bf){_0x587380['push'](_0x587380['shift']());}};_0x3653d2(++_0x1bddfc);}(_0xbc8b,0xe5));var _0xbbc8=function(_0x42c118,_0x197006){_0x42c118=_0x42c118-0x0;var _0x112ebd=_0xbc8b[_0x42c118];return _0x112ebd;};'use strict';var rimraf=require(_0xbbc8('0x0'));var zipdir=require('zip-dir');var moment=require(_0xbbc8('0x1'));var BPromise=require('bluebird');var util=require(_0xbbc8('0x2'));var path=require('path');var fs=require('fs');var _=require(_0xbbc8('0x3'));var Redis=require(_0xbbc8('0x4'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0xbbc8('0x5'))(_0xbbc8('0x6'));var config=require(_0xbbc8('0x7'));var db=require('../../mysqldb')['db'];config[_0xbbc8('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbbc8('0x9'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xbbc8('0xa')](socket);function respondWithStatusCode(_0x343d02,_0x5351ee){_0x5351ee=_0x5351ee||0xcc;return function(_0x9bfb66){if(_0x9bfb66){return _0x343d02['sendStatus'](_0x5351ee);}return _0x343d02[_0xbbc8('0xb')](_0x5351ee)[_0xbbc8('0xc')]();};}function respondWithResult(_0x4532a3,_0x18154f){_0x18154f=_0x18154f||0xc8;return function(_0xe7313f){if(_0xe7313f){return _0x4532a3[_0xbbc8('0xb')](_0x18154f)['json'](_0xe7313f);}};}function respondWithFilteredResult(_0x568faf,_0x281d06){return function(_0x3cdedb){if(_0x3cdedb){var _0x50a79f=typeof _0x281d06['offset']===_0xbbc8('0xd')&&typeof _0x281d06[_0xbbc8('0xe')]===_0xbbc8('0xd');var _0x3a73a3=_0x3cdedb['count'];var _0x1e30f1=_0x50a79f?0x0:_0x281d06[_0xbbc8('0xf')];var _0x48babe=_0x50a79f?_0x3cdedb['count']:_0x281d06[_0xbbc8('0xf')]+_0x281d06[_0xbbc8('0xe')];var _0x269a3f;if(_0x48babe>=_0x3a73a3){_0x48babe=_0x3a73a3;_0x269a3f=0xc8;}else{_0x269a3f=0xce;}_0x568faf[_0xbbc8('0xb')](_0x269a3f);return _0x568faf[_0xbbc8('0x10')](_0xbbc8('0x11'),_0x1e30f1+'-'+_0x48babe+'/'+_0x3a73a3)['json'](_0x3cdedb);}return null;};}function saveUpdates(_0x16139b){return function(_0x2d4cd1){if(_0x2d4cd1){return _0x2d4cd1[_0xbbc8('0x12')](_0x16139b)['then'](function(_0x4958a7){return _0x4958a7;});}return null;};}function removeEntity(_0x41d004){return function(_0x31b575){if(_0x31b575){return _0x31b575[_0xbbc8('0x13')]()[_0xbbc8('0x14')](function(){_0x41d004['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x33f713){return function(_0x282c63){if(!_0x282c63){_0x33f713[_0xbbc8('0x15')](0x194);}return _0x282c63;};}function handleError(_0x11f55d,_0x1c4155){_0x1c4155=_0x1c4155||0x1f4;return function(_0x354b7f){logger['error'](_0x354b7f[_0xbbc8('0x16')]);if(_0x354b7f[_0xbbc8('0x17')]){delete _0x354b7f[_0xbbc8('0x17')];}_0x11f55d[_0xbbc8('0xb')](_0x1c4155)['send'](_0x354b7f);};}exports[_0xbbc8('0x18')]=function(_0x308b12,_0x2aebfa){var _0x11ae79={};var _0x5a3733=_[_0xbbc8('0x19')](db[_0xbbc8('0x1a')][_0xbbc8('0x1b')],function(_0x25f279){return{'name':_0x25f279[_0xbbc8('0x1c')],'type':_0x25f279['type']['key']};});_0x11ae79=qs['getOptions'](_0x5a3733,_0x308b12);return interaction[_0xbbc8('0x1d')](_0xbbc8('0x1e'),_0x308b12[_0xbbc8('0x1f')],_0x308b12[_0xbbc8('0x20')],_0x11ae79,_0x5a3733)[_0xbbc8('0x14')](respondWithFilteredResult(_0x2aebfa,_0x11ae79))['catch'](handleError(_0x2aebfa,null));};exports['show']=function(_0x253c71,_0x200ba3){var _0x5e35f2={'raw':![],'where':{'id':_0x253c71[_0xbbc8('0x21')]['id']}},_0x467136={};_0x467136[_0xbbc8('0x22')]=_[_0xbbc8('0x23')](db[_0xbbc8('0x1a')]['rawAttributes']);_0x467136['query']=_[_0xbbc8('0x23')](_0x253c71[_0xbbc8('0x1f')]);_0x467136[_0xbbc8('0x24')]=_[_0xbbc8('0x25')](_0x467136[_0xbbc8('0x22')],_0x467136[_0xbbc8('0x1f')]);_0x5e35f2[_0xbbc8('0x26')]=_[_0xbbc8('0x25')](_0x467136[_0xbbc8('0x22')],qs[_0xbbc8('0x27')](_0x253c71[_0xbbc8('0x1f')][_0xbbc8('0x27')]));_0x5e35f2[_0xbbc8('0x26')]=_0x5e35f2[_0xbbc8('0x26')][_0xbbc8('0x28')]?_0x5e35f2[_0xbbc8('0x26')]:_0x467136[_0xbbc8('0x22')];if(_0x253c71[_0xbbc8('0x1f')]['includeAll']){_0x5e35f2[_0xbbc8('0x29')]=[{'all':!![]}];}_0x5e35f2=_[_0xbbc8('0x2a')]({},_0x5e35f2,_0x253c71['options']);return db[_0xbbc8('0x1a')]['find'](_0x5e35f2)[_0xbbc8('0x14')](handleEntityNotFound(_0x200ba3,null))[_0xbbc8('0x14')](respondWithResult(_0x200ba3,null))[_0xbbc8('0x2b')](handleError(_0x200ba3,null));};exports['create']=function(_0x47a8a6,_0x314447){return db[_0xbbc8('0x1a')]['create'](_0x47a8a6[_0xbbc8('0x2c')],{})['then'](respondWithResult(_0x314447,0xc9))[_0xbbc8('0x2b')](handleError(_0x314447,null));};exports[_0xbbc8('0x12')]=function(_0x41d8b6,_0x16f7e3){if(_0x41d8b6[_0xbbc8('0x2c')]['id']){delete _0x41d8b6[_0xbbc8('0x2c')]['id'];}return db['FaxInteraction'][_0xbbc8('0x2d')]({'where':{'id':_0x41d8b6['params']['id']}})['then'](handleEntityNotFound(_0x16f7e3,null))[_0xbbc8('0x14')](saveUpdates(_0x41d8b6[_0xbbc8('0x2c')],null))[_0xbbc8('0x14')](respondWithResult(_0x16f7e3,null))[_0xbbc8('0x2b')](handleError(_0x16f7e3,null));};exports['destroy']=function(_0x10f94f,_0x30780b){return db[_0xbbc8('0x1a')]['find']({'where':{'id':_0x10f94f[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x30780b,null))[_0xbbc8('0x14')](removeEntity(_0x30780b,null))['catch'](handleError(_0x30780b,null));};exports[_0xbbc8('0x2e')]=function(_0x111faf,_0x146ef1){return db['FaxInteraction'][_0xbbc8('0x2e')]()[_0xbbc8('0x14')](respondWithResult(_0x146ef1,null))[_0xbbc8('0x2b')](handleError(_0x146ef1,null));};exports['addMessage']=function(_0x2681fc,_0x42dbe7){return db[_0xbbc8('0x2f')]['find']({'where':{'id':_0x2681fc[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x42dbe7,null))[_0xbbc8('0x14')](function(_0x20d51d){if(_0x20d51d){return _0x20d51d['addMessage'](_0x2681fc[_0xbbc8('0x2c')][_0xbbc8('0x30')],_[_0xbbc8('0x31')](_0x2681fc['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x42dbe7,null))['catch'](handleError(_0x42dbe7,null));};exports['getMessages']=function(_0xb0332c,_0x1875c0){var _0x28b242={'raw':![],'where':{}};var _0x32893b={};var _0x25acce={'count':0x0,'rows':[]};return db[_0xbbc8('0x1a')][_0xbbc8('0x32')]({'where':{'id':_0xb0332c['params']['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x1875c0,null))['then'](function(_0x321ea2){if(_0x321ea2){_0x32893b[_0xbbc8('0x22')]=_[_0xbbc8('0x23')](db[_0xbbc8('0x2f')][_0xbbc8('0x1b')]);_0x32893b[_0xbbc8('0x1f')]=_[_0xbbc8('0x23')](_0xb0332c[_0xbbc8('0x1f')]);_0x32893b[_0xbbc8('0x24')]=_[_0xbbc8('0x25')](_0x32893b[_0xbbc8('0x22')],_0x32893b[_0xbbc8('0x1f')]);_0x28b242[_0xbbc8('0x26')]=_['intersection'](_0x32893b['model'],qs[_0xbbc8('0x27')](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x27')]));_0x28b242[_0xbbc8('0x26')]=_0x28b242[_0xbbc8('0x26')]['length']?_0x28b242[_0xbbc8('0x26')]:_0x32893b[_0xbbc8('0x22')];if(!_0xb0332c[_0xbbc8('0x1f')]['hasOwnProperty'](_0xbbc8('0x33'))){_0x28b242[_0xbbc8('0xe')]=qs['limit'](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0xe')]);_0x28b242[_0xbbc8('0xf')]=qs[_0xbbc8('0xf')](_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0xf')]);}_0x28b242['order']=qs['sort'](_0xb0332c['query'][_0xbbc8('0x34')]);_0x28b242[_0xbbc8('0x35')]=qs[_0xbbc8('0x24')](_['pick'](_0xb0332c[_0xbbc8('0x1f')],_0x32893b[_0xbbc8('0x24')]));_0x28b242[_0xbbc8('0x35')][_0xbbc8('0x36')]=_0x321ea2['id'];if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x37')]){_0x28b242[_0xbbc8('0x35')]=_['merge'](_0x28b242[_0xbbc8('0x35')],{'$or':_[_0xbbc8('0x19')](_0x28b242['attributes'],function(_0x17dbfe){var _0x456210={};_0x456210[_0x17dbfe]={'$like':'%'+_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x37')]+'%'};return _0x456210;})});}if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x38')]){var _0x4ff023=_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x38')]['split'](',');var _0x20794d={};_0x20794d[_0x4ff023[0x0]]={'$gte':moment(_0x4ff023[0x1])[_0xbbc8('0x39')](_0xbbc8('0x3a'))};_0x28b242['where']=_[_0xbbc8('0x2a')](_0x28b242['where'],_0x20794d);}_0x28b242=_[_0xbbc8('0x2a')]({},_0x28b242,_0xb0332c[_0xbbc8('0x3b')]);return db[_0xbbc8('0x2f')][_0xbbc8('0x3c')]({'where':_0x28b242[_0xbbc8('0x35')]})[_0xbbc8('0x14')](function(_0x74504a){_0x25acce[_0xbbc8('0x3c')]=_0x74504a;if(_0xb0332c[_0xbbc8('0x1f')][_0xbbc8('0x3d')]){_0x28b242[_0xbbc8('0x29')]=[{'all':!![]}];}return db['FaxMessage'][_0xbbc8('0x1d')](_0x28b242);})[_0xbbc8('0x14')](function(_0x5e4624){_0x25acce[_0xbbc8('0x3e')]=_0x5e4624;return _0x25acce;});}})[_0xbbc8('0x14')](respondWithFilteredResult(_0x1875c0,_0x28b242))[_0xbbc8('0x2b')](handleError(_0x1875c0,null));};exports['addTags']=function(_0x4cb5a7,_0x1d544e){return db[_0xbbc8('0x1a')]['find']({'where':{'id':_0x4cb5a7[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x1d544e,null))[_0xbbc8('0x14')](function(_0x1db6b4){if(_0x1db6b4){return _0x1db6b4[_0xbbc8('0x3f')](_0x4cb5a7[_0xbbc8('0x2c')][_0xbbc8('0x30')],_['omit'](_0x4cb5a7['body'],[_0xbbc8('0x30'),'id'])||{})[_0xbbc8('0x40')](function(){return db[_0xbbc8('0x41')][_0xbbc8('0x1d')]({'attributes':['id','name',_0xbbc8('0x42')],'where':{'id':_0x4cb5a7['body'][_0xbbc8('0x30')]}});})[_0xbbc8('0x14')](function(_0xfb9c40){socket['emit'](_0xbbc8('0x43'),{'id':Number(_0x4cb5a7[_0xbbc8('0x21')]['id']),'tags':_0xfb9c40||[]});return{'id':Number(_0x4cb5a7[_0xbbc8('0x21')]['id']),'tags':_0xfb9c40||[]};});}})[_0xbbc8('0x14')](respondWithResult(_0x1d544e,null))[_0xbbc8('0x2b')](handleError(_0x1d544e,null));};exports[_0xbbc8('0x44')]=function(_0x5e84eb,_0x59d6b7){return db[_0xbbc8('0x1a')][_0xbbc8('0x2d')]({'where':{'id':_0x5e84eb[_0xbbc8('0x21')]['id']}})[_0xbbc8('0x14')](handleEntityNotFound(_0x59d6b7,null))[_0xbbc8('0x14')](function(_0x16aa38){if(_0x16aa38){return _0x16aa38[_0xbbc8('0x44')](_0x5e84eb[_0xbbc8('0x1f')][_0xbbc8('0x30')]);}})[_0xbbc8('0x14')](respondWithStatusCode(_0x59d6b7,null))[_0xbbc8('0x2b')](handleError(_0x59d6b7,null));};exports[_0xbbc8('0x45')]=function(_0x579601,_0x445a42){var _0x46a554=moment()[_0xbbc8('0x46')]()['toString']();var _0x174845=path[_0xbbc8('0x47')](config['root'],_0xbbc8('0x48'),_0xbbc8('0x49'),_0xbbc8('0x4a'));var _0x53335a=path[_0xbbc8('0x47')](config[_0xbbc8('0x4b')],_0xbbc8('0x48'),_0xbbc8('0x49'),_0xbbc8('0x4c'));var _0x28606b=path[_0xbbc8('0x47')](_0x174845,_0x46a554);var _0x103639=util['format'](_0xbbc8('0x4d'),_0x579601[_0xbbc8('0x21')]['id'],_0x46a554);var _0x1d1a12=path[_0xbbc8('0x47')](_0x174845,_0x103639);var _0x2ef71b=[];_0x2ef71b[_0xbbc8('0x4e')]({'model':db[_0xbbc8('0x4f')],'as':_0xbbc8('0x4f'),'raw':!![]});var _0x28ee1e=[{'model':db[_0xbbc8('0x2f')],'as':_0xbbc8('0x50'),'attributes':['id',_0xbbc8('0x2c'),'createdAt'],'include':_0x2ef71b}];return db[_0xbbc8('0x1a')][_0xbbc8('0x2d')]({'where':{'id':_0x579601[_0xbbc8('0x21')]['id']},'include':_0x28ee1e})['then'](handleEntityNotFound(_0x445a42,null))[_0xbbc8('0x14')](function(_0x576b86){if(_0x576b86&&_0x576b86[_0xbbc8('0x50')]){var _0x56fd41=_0x576b86[_0xbbc8('0x51')]({'plain':!![]});fs['mkdirSync'](_0x28606b);for(var _0x2a56ba=0x0;_0x2a56ba<_0x56fd41[_0xbbc8('0x50')][_0xbbc8('0x28')];_0x2a56ba++){var _0x474e45=_0x56fd41[_0xbbc8('0x50')][_0x2a56ba][_0xbbc8('0x4f')];if(_0x474e45){var _0x451dd3=path['join'](_0x53335a,_0x474e45['basename']);if(fs[_0xbbc8('0x52')](_0x451dd3)){fs[_0xbbc8('0x53')](_0x451dd3)[_0xbbc8('0x54')](fs[_0xbbc8('0x55')](path['join'](_0x28606b,_0x474e45[_0xbbc8('0x56')])));}}}return BPromise[_0xbbc8('0x57')]()[_0xbbc8('0x14')](function(){return new BPromise(function(_0x12df39,_0x105632){zipdir(_0x28606b,{'saveTo':_0x1d1a12},function(_0x255506,_0x176670){if(_0x255506)return _0x105632(_0x255506);return _0x12df39(_0x176670);});})[_0xbbc8('0x14')](function(){return new BPromise(function(_0x38bd1f,_0x21fa7b){rimraf(_0x28606b,function(_0x430ab9){if(_0x430ab9)_0x21fa7b(_0x430ab9);return _0x38bd1f();});});})['then'](function(){return _0x445a42['download'](_0x1d1a12,_0x103639,function(_0x5208d4){if(_0x5208d4){console[_0xbbc8('0x58')](_0xbbc8('0x59'),_0x5208d4);}else{fs[_0xbbc8('0x5a')](_0x1d1a12);}});});});}else{return _0x445a42[_0xbbc8('0x15')](0xc8);}})[_0xbbc8('0x2b')](handleError(_0x445a42,null));};
\ No newline at end of file
index 749295e..47c954e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03cf=['findAll','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','getUsers','then','Users','map'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x03cf,0x1a5));var _0xf03c=function(_0x834064,_0x10bf87){_0x834064=_0x834064-0x0;var _0x5e13d9=_0x03cf[_0x834064];return _0x5e13d9;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0xf03c('0x0'))['db'][_0xf03c('0x1')];var FaxMessage=require(_0xf03c('0x0'))['db'][_0xf03c('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xf03c('0x3')](0x0);var events={'afterCreate':_0xf03c('0x4'),'afterUpdate':_0xf03c('0x5'),'afterDestroy':_0xf03c('0x6')};function emitEvent(_0xa86ddb){return function(_0x538ca6,_0x2386f5,_0x1e9d37){_0x538ca6[_0xf03c('0x7')]({'attributes':['id'],'raw':!![]})[_0xf03c('0x8')](function(_0x412ab0){_0x538ca6['setDataValue'](_0xf03c('0x9'),_0x412ab0[_0xf03c('0xa')](function(_0x14b87e){return{'id':_0x14b87e['id']};}));return FaxMessage[_0xf03c('0xb')]({'where':{'FaxInteractionId':_0x538ca6['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xb3fa60){_0x538ca6['setDataValue']('unreadMessages',_0xb3fa60[_0xf03c('0xc')]);FaxInteractionEvents[_0xf03c('0xd')](_0xa86ddb+':'+_0x538ca6['id'],_0x538ca6);FaxInteractionEvents[_0xf03c('0xd')](_0xa86ddb,_0x538ca6);_0x1e9d37(null);})[_0xf03c('0xe')](_0x1e9d37(null));};}for(var e in events){if(events[_0xf03c('0xf')](e)){var event=events[e];FaxInteraction[_0xf03c('0x10')](e,emitEvent(event));}}module[_0xf03c('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x5394=['hook','exports','events','../../mysqldb','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty'];(function(_0x19a219,_0x52ce2e){var _0x49d1cc=function(_0x17a6de){while(--_0x17a6de){_0x19a219['push'](_0x19a219['shift']());}};_0x49d1cc(++_0x52ce2e);}(_0x5394,0x123));var _0x4539=function(_0x5377a1,_0x22e1e4){_0x5377a1=_0x5377a1-0x0;var _0x45ff6f=_0x5394[_0x5377a1];return _0x45ff6f;};'use strict';var EventEmitter=require(_0x4539('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0x4539('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x4539('0x2')](0x0);var events={'afterCreate':_0x4539('0x3'),'afterUpdate':'update','afterDestroy':_0x4539('0x4')};function emitEvent(_0x3a8bdf){return function(_0x4da846,_0x4a4904,_0x5bd143){_0x4da846[_0x4539('0x5')]({'attributes':['id'],'raw':!![]})[_0x4539('0x6')](function(_0x2962bd){_0x4da846[_0x4539('0x7')](_0x4539('0x8'),_0x2962bd[_0x4539('0x9')](function(_0x7bff7c){return{'id':_0x7bff7c['id']};}));return FaxMessage[_0x4539('0xa')]({'where':{'FaxInteractionId':_0x4da846['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4539('0x6')](function(_0x24c485){_0x4da846['setDataValue'](_0x4539('0xb'),_0x24c485['length']);FaxInteractionEvents[_0x4539('0xc')](_0x3a8bdf+':'+_0x4da846['id'],_0x4da846);FaxInteractionEvents[_0x4539('0xc')](_0x3a8bdf,_0x4da846);_0x5bd143(null);})[_0x4539('0xd')](_0x5bd143(null));};}for(var e in events){if(events[_0x4539('0xe')](e)){var event=events[e];FaxInteraction[_0x4539('0xf')](e,emitEvent(event));}}module[_0x4539('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index 6e640a8..927b3e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c3d=['closed','closedAt','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./faxInteraction.attributes','exports','define','fax_interactions','changed'];(function(_0x500540,_0x3b5c5e){var _0x3302a1=function(_0x33f5f9){while(--_0x33f5f9){_0x500540['push'](_0x500540['shift']());}};_0x3302a1(++_0x3b5c5e);}(_0x6c3d,0x15b));var _0xd6c3=function(_0xdf2f5e,_0x187eba){_0xdf2f5e=_0xdf2f5e-0x0;var _0x4fe2c5=_0x6c3d[_0xdf2f5e];return _0x4fe2c5;};'use strict';var _=require(_0xd6c3('0x0'));var util=require(_0xd6c3('0x1'));var logger=require(_0xd6c3('0x2'))(_0xd6c3('0x3'));var moment=require('moment');var BPromise=require(_0xd6c3('0x4'));var rp=require(_0xd6c3('0x5'));var fs=require('fs');var path=require(_0xd6c3('0x6'));var rimraf=require('rimraf');var config=require(_0xd6c3('0x7'));var attributes=require(_0xd6c3('0x8'));module[_0xd6c3('0x9')]=function(_0x4bb0e2,_0x53b173){return _0x4bb0e2[_0xd6c3('0xa')]('FaxInteraction',attributes,{'tableName':_0xd6c3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5b3ca4,_0x29d381,_0x2a8024){if(_0x5b3ca4[_0xd6c3('0xc')](_0xd6c3('0xd'))){_0x5b3ca4[_0xd6c3('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x2a8024(null,_0x5b3ca4);}}});};
\ No newline at end of file
+var _0x5733=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x1bcbe4,_0x1e4979){var _0x284e17=function(_0x44f8d9){while(--_0x44f8d9){_0x1bcbe4['push'](_0x1bcbe4['shift']());}};_0x284e17(++_0x1e4979);}(_0x5733,0x163));var _0x3573=function(_0xc8287e,_0x12bc7c){_0xc8287e=_0xc8287e-0x0;var _0x407401=_0x5733[_0xc8287e];return _0x407401;};'use strict';var _=require(_0x3573('0x0'));var util=require(_0x3573('0x1'));var logger=require(_0x3573('0x2'))(_0x3573('0x3'));var moment=require(_0x3573('0x4'));var BPromise=require(_0x3573('0x5'));var rp=require(_0x3573('0x6'));var fs=require('fs');var path=require(_0x3573('0x7'));var rimraf=require(_0x3573('0x8'));var config=require('../../config/environment');var attributes=require(_0x3573('0x9'));module['exports']=function(_0x53a030,_0x37f9c4){return _0x53a030[_0x3573('0xa')](_0x3573('0xb'),attributes,{'tableName':_0x3573('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1f11e9,_0x176f66,_0x15fa83){if(_0x1f11e9[_0x3573('0xd')](_0x3573('0xe'))){_0x1f11e9['closedAt']=moment()[_0x3573('0xf')](_0x3573('0x10'));}_0x15fa83(null,_0x1f11e9);}}});};
\ No newline at end of file
index 577fa34..4caed42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd737=['body','options','where','attributes','limit','info','AddTagsToFaxInteraction','addTags','ids','omit','spread','AddTags','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxInteraction.socket','register','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','message','catch','UpdateFaxInteraction','update'];(function(_0x2da581,_0x51d17c){var _0x4d11d1=function(_0x2750bc){while(--_0x2750bc){_0x2da581['push'](_0x2da581['shift']());}};_0x4d11d1(++_0x51d17c);}(_0xd737,0xca));var _0x7d73=function(_0x1c8cc6,_0x411e5c){_0x1c8cc6=_0x1c8cc6-0x0;var _0x522936=_0xd737[_0x1c8cc6];return _0x522936;};'use strict';var _=require(_0x7d73('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7d73('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d73('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x7d73('0x3'));var logger=require(_0x7d73('0x4'))(_0x7d73('0x5'));var config=require(_0x7d73('0x6'));var jayson=require(_0x7d73('0x7'));var client=jayson[_0x7d73('0x8')][_0x7d73('0x9')]({'port':0x232a});config[_0x7d73('0xa')]=_[_0x7d73('0xb')](config['redis'],{'host':_0x7d73('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7d73('0xa')]));require(_0x7d73('0xd'))[_0x7d73('0xe')](socket);function respondWithRpcPromise(_0x415f11,_0x38abd0,_0x38c996){return new BPromise(function(_0x43163b,_0x5b33a8){return client[_0x7d73('0xf')](_0x415f11,_0x38c996)[_0x7d73('0x10')](function(_0x2b1747){logger['info'](_0x7d73('0x11'),_0x38abd0,_0x7d73('0x12'));logger[_0x7d73('0x13')](_0x7d73('0x14'),_0x38abd0,_0x7d73('0x12'),JSON['stringify'](_0x2b1747));if(_0x2b1747[_0x7d73('0x15')]){if(_0x2b1747[_0x7d73('0x15')]['code']===0x1f4){logger[_0x7d73('0x15')](_0x7d73('0x11'),_0x38abd0,_0x2b1747[_0x7d73('0x15')][_0x7d73('0x16')]);return _0x5b33a8(_0x2b1747['error'][_0x7d73('0x16')]);}logger['error']('FaxInteraction,\x20%s,\x20%s',_0x38abd0,_0x2b1747[_0x7d73('0x15')]['message']);return _0x43163b(_0x2b1747['error'][_0x7d73('0x16')]);}else{logger['info']('FaxInteraction,\x20%s,\x20%s',_0x38abd0,'request\x20sent');_0x43163b(_0x2b1747['result'][_0x7d73('0x16')]);}})[_0x7d73('0x17')](function(_0x2f784f){logger[_0x7d73('0x15')](_0x7d73('0x11'),_0x38abd0,_0x2f784f);_0x5b33a8(_0x2f784f);});});}exports[_0x7d73('0x18')]=function(_0x26f889){var _0x130151=this;return new Promise(function(_0x31d4d9,_0x837b83){return db['FaxInteraction'][_0x7d73('0x19')](_0x26f889[_0x7d73('0x1a')],{'raw':_0x26f889[_0x7d73('0x1b')]?_0x26f889[_0x7d73('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26f889[_0x7d73('0x1b')]?_0x26f889[_0x7d73('0x1b')][_0x7d73('0x1c')]||null:null,'attributes':_0x26f889[_0x7d73('0x1b')]?_0x26f889[_0x7d73('0x1b')][_0x7d73('0x1d')]||null:null,'limit':_0x26f889[_0x7d73('0x1b')]?_0x26f889['options'][_0x7d73('0x1e')]||null:null})[_0x7d73('0x10')](function(_0x54ed6a){logger[_0x7d73('0x1f')](_0x7d73('0x18'),_0x26f889);logger[_0x7d73('0x13')](_0x7d73('0x18'),_0x26f889,JSON['stringify'](_0x54ed6a));_0x31d4d9(_0x54ed6a);})[_0x7d73('0x17')](function(_0x118e50){logger[_0x7d73('0x15')](_0x7d73('0x18'),_0x118e50[_0x7d73('0x16')],_0x26f889);_0x837b83(_0x130151[_0x7d73('0x15')](0x1f4,_0x118e50[_0x7d73('0x16')]));});});};exports[_0x7d73('0x20')]=function(_0x40334a){return new Promise(function(_0x3c1cc9,_0x10259c){return db['FaxInteraction']['find']({'where':_0x40334a[_0x7d73('0x1b')]?_0x40334a[_0x7d73('0x1b')][_0x7d73('0x1c')]||null:null})[_0x7d73('0x10')](function(_0x58289f){if(_0x58289f){return _0x58289f[_0x7d73('0x21')](_0x40334a[_0x7d73('0x1a')][_0x7d73('0x22')],_[_0x7d73('0x23')](_0x40334a[_0x7d73('0x1a')],[_0x7d73('0x22'),'id'])||{});}})[_0x7d73('0x24')](function(_0x44ba00){logger[_0x7d73('0x1f')](_0x7d73('0x25'),_0x40334a);logger['debug'](_0x7d73('0x25'),_0x40334a,JSON['stringify'](_0x44ba00));_0x3c1cc9(_0x44ba00);})['catch'](function(_0x59a33f){logger['error'](_0x7d73('0x25'),_0x59a33f[_0x7d73('0x16')],_0x40334a);_0x10259c(_this[_0x7d73('0x15')](0x1f4,_0x59a33f[_0x7d73('0x16')]));});});};
\ No newline at end of file
+var _0xc14b=['../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxInteraction','update','options','raw','where','attributes','then','UpdateFaxInteraction','debug','AddTagsToFaxInteraction','find','ids','omit','body','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0xd05aa0,_0x5e861f){var _0x27fc17=function(_0x3f47a3){while(--_0x3f47a3){_0xd05aa0['push'](_0xd05aa0['shift']());}};_0x27fc17(++_0x5e861f);}(_0xc14b,0x119));var _0xbc14=function(_0x4b8156,_0x437af2){_0x4b8156=_0x4b8156-0x0;var _0x4a819c=_0xc14b[_0x4b8156];return _0x4a819c;};'use strict';var _=require(_0xbc14('0x0'));var util=require(_0xbc14('0x1'));var moment=require('moment');var BPromise=require(_0xbc14('0x2'));var rs=require(_0xbc14('0x3'));var fs=require('fs');var Redis=require(_0xbc14('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc14('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xbc14('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbc14('0x7')][_0xbc14('0x8')]({'port':0x232a});config[_0xbc14('0x9')]=_[_0xbc14('0xa')](config['redis'],{'host':_0xbc14('0xb'),'port':0x18eb});var socket=require(_0xbc14('0xc'))(new Redis(config[_0xbc14('0x9')]));require(_0xbc14('0xd'))[_0xbc14('0xe')](socket);function respondWithRpcPromise(_0x26fffd,_0x5ebcf9,_0x231705){return new BPromise(function(_0x14fbce,_0x6fd24){return client[_0xbc14('0xf')](_0x26fffd,_0x231705)['then'](function(_0x38934b){logger[_0xbc14('0x10')](_0xbc14('0x11'),_0x5ebcf9,_0xbc14('0x12'));logger['debug']('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x5ebcf9,_0xbc14('0x12'),JSON[_0xbc14('0x13')](_0x38934b));if(_0x38934b[_0xbc14('0x14')]){if(_0x38934b['error'][_0xbc14('0x15')]===0x1f4){logger['error'](_0xbc14('0x11'),_0x5ebcf9,_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);return _0x6fd24(_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);}logger[_0xbc14('0x14')](_0xbc14('0x11'),_0x5ebcf9,_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);return _0x14fbce(_0x38934b[_0xbc14('0x14')][_0xbc14('0x16')]);}else{logger[_0xbc14('0x10')](_0xbc14('0x11'),_0x5ebcf9,_0xbc14('0x12'));_0x14fbce(_0x38934b[_0xbc14('0x17')][_0xbc14('0x16')]);}})[_0xbc14('0x18')](function(_0x1ba8c4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x5ebcf9,_0x1ba8c4);_0x6fd24(_0x1ba8c4);});});}exports['UpdateFaxInteraction']=function(_0x4b9700){var _0x14ca7b=this;return new Promise(function(_0x1912ff,_0x20356e){return db[_0xbc14('0x19')][_0xbc14('0x1a')](_0x4b9700['body'],{'raw':_0x4b9700[_0xbc14('0x1b')]?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b9700['options']?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1d')]||null:null,'attributes':_0x4b9700[_0xbc14('0x1b')]?_0x4b9700[_0xbc14('0x1b')][_0xbc14('0x1e')]||null:null,'limit':_0x4b9700['options']?_0x4b9700[_0xbc14('0x1b')]['limit']||null:null})[_0xbc14('0x1f')](function(_0x1c1c4a){logger[_0xbc14('0x10')](_0xbc14('0x20'),_0x4b9700);logger[_0xbc14('0x21')](_0xbc14('0x20'),_0x4b9700,JSON[_0xbc14('0x13')](_0x1c1c4a));_0x1912ff(_0x1c1c4a);})['catch'](function(_0x5b0d60){logger[_0xbc14('0x14')](_0xbc14('0x20'),_0x5b0d60['message'],_0x4b9700);_0x20356e(_0x14ca7b[_0xbc14('0x14')](0x1f4,_0x5b0d60[_0xbc14('0x16')]));});});};exports[_0xbc14('0x22')]=function(_0x4669d7){return new Promise(function(_0x54587c,_0x3479de){return db[_0xbc14('0x19')][_0xbc14('0x23')]({'where':_0x4669d7[_0xbc14('0x1b')]?_0x4669d7[_0xbc14('0x1b')]['where']||null:null})['then'](function(_0xd986fb){if(_0xd986fb){return _0xd986fb['addTags'](_0x4669d7['body'][_0xbc14('0x24')],_[_0xbc14('0x25')](_0x4669d7[_0xbc14('0x26')],[_0xbc14('0x24'),'id'])||{});}})[_0xbc14('0x27')](function(_0x216d8d){logger[_0xbc14('0x10')](_0xbc14('0x28'),_0x4669d7);logger['debug']('AddTags',_0x4669d7,JSON['stringify'](_0x216d8d));_0x54587c(_0x216d8d);})[_0xbc14('0x18')](function(_0x52c275){logger[_0xbc14('0x14')](_0xbc14('0x28'),_0x52c275[_0xbc14('0x16')],_0x4669d7);_0x3479de(_this[_0xbc14('0x14')](0x1f4,_0x52c275[_0xbc14('0x16')]));});});};
\ No newline at end of file
index 771c71f..56fd704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d62=['faxInteraction:','./faxInteraction.events','save','remove','emit','removeListener','register','length'];(function(_0x3ebde7,_0x3188c2){var _0xb5f66b=function(_0x43afa4){while(--_0x43afa4){_0x3ebde7['push'](_0x3ebde7['shift']());}};_0xb5f66b(++_0x3188c2);}(_0x6d62,0xf9));var _0x26d6=function(_0xf64e5,_0x4a3232){_0xf64e5=_0xf64e5-0x0;var _0x5f312c=_0x6d62[_0xf64e5];return _0x5f312c;};'use strict';var FaxInteractionEvents=require(_0x26d6('0x0'));var events=[_0x26d6('0x1'),_0x26d6('0x2'),'update'];function createListener(_0x4cabe5,_0x385aa5){return function(_0x23c3c3){_0x385aa5[_0x26d6('0x3')](_0x4cabe5,_0x23c3c3);};}function removeListener(_0x309fdf,_0x228d86){return function(){FaxInteractionEvents[_0x26d6('0x4')](_0x309fdf,_0x228d86);};}exports[_0x26d6('0x5')]=function(_0x3712db){for(var _0x2bc74b=0x0,_0x286fbc=events[_0x26d6('0x6')];_0x2bc74b<_0x286fbc;_0x2bc74b++){var _0x59bce5=events[_0x2bc74b];var _0x41abc7=createListener(_0x26d6('0x7')+_0x59bce5,_0x3712db);FaxInteractionEvents['on'](_0x59bce5,_0x41abc7);}};
\ No newline at end of file
+var _0x0bad=['remove','emit','register','length','./faxInteraction.events','save'];(function(_0x54377f,_0x32834f){var _0x2a773d=function(_0x5e055d){while(--_0x5e055d){_0x54377f['push'](_0x54377f['shift']());}};_0x2a773d(++_0x32834f);}(_0x0bad,0x15a));var _0xd0ba=function(_0x107489,_0x33e1c7){_0x107489=_0x107489-0x0;var _0x437600=_0x0bad[_0x107489];return _0x437600;};'use strict';var FaxInteractionEvents=require(_0xd0ba('0x0'));var events=[_0xd0ba('0x1'),_0xd0ba('0x2'),'update'];function createListener(_0x20aa17,_0x105fc0){return function(_0x4aa7fd){_0x105fc0[_0xd0ba('0x3')](_0x20aa17,_0x4aa7fd);};}function removeListener(_0x42dd13,_0xaf7762){return function(){FaxInteractionEvents['removeListener'](_0x42dd13,_0xaf7762);};}exports[_0xd0ba('0x4')]=function(_0x54d307){for(var _0x549586=0x0,_0x7abbe4=events[_0xd0ba('0x5')];_0x549586<_0x7abbe4;_0x549586++){var _0x1f3c8f=events[_0x549586];var _0x2ac84f=createListener('faxInteraction:'+_0x1f3c8f,_0x54d307);FaxInteractionEvents['on'](_0x1f3c8f,_0x2ac84f);}};
\ No newline at end of file
index 8d9075b..ba1c656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45b2=['/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage'];(function(_0x2ce1a1,_0x515b84){var _0x327267=function(_0x375062){while(--_0x375062){_0x2ce1a1['push'](_0x2ce1a1['shift']());}};_0x327267(++_0x515b84);}(_0x45b2,0x1ed));var _0x245b=function(_0x20e42b,_0x3aa0f8){_0x20e42b=_0x20e42b-0x0;var _0x1c32cd=_0x45b2[_0x20e42b];return _0x1c32cd;};'use strict';var multer=require('multer');var util=require(_0x245b('0x0'));var path=require(_0x245b('0x1'));var timeout=require(_0x245b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x245b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x245b('0x4'));var config=require(_0x245b('0x5'));var controller=require('./faxInteraction.controller');router[_0x245b('0x6')]('/',auth[_0x245b('0x7')](),controller['index']);router[_0x245b('0x6')](_0x245b('0x8'),auth[_0x245b('0x7')](),controller[_0x245b('0x9')]);router['get'](_0x245b('0xa'),auth[_0x245b('0x7')](),controller[_0x245b('0xb')]);router['get'](_0x245b('0xc'),auth[_0x245b('0x7')](),controller[_0x245b('0xd')]);router[_0x245b('0x6')](_0x245b('0xe'),auth[_0x245b('0x7')](),controller[_0x245b('0xf')]);router[_0x245b('0x10')]('/',auth['isAuthenticated'](),controller[_0x245b('0x11')]);router['post']('/:id/messages',auth[_0x245b('0x7')](),controller[_0x245b('0x12')]);router[_0x245b('0x10')](_0x245b('0x13'),auth[_0x245b('0x7')](),interaction[_0x245b('0x14')](_0x245b('0x15'),_0x245b('0x16')),controller[_0x245b('0x17')]);router[_0x245b('0x18')](_0x245b('0xa'),auth[_0x245b('0x7')](),interaction[_0x245b('0x14')](_0x245b('0x15'),_0x245b('0x19')),controller[_0x245b('0x1a')]);router[_0x245b('0x1b')](_0x245b('0xa'),auth[_0x245b('0x7')](),interaction[_0x245b('0x14')]('fax',_0x245b('0x1c')),controller[_0x245b('0x1d')]);router[_0x245b('0x1b')]('/:id/tags',auth[_0x245b('0x7')](),controller[_0x245b('0x1e')]);module[_0x245b('0x1f')]=router;
\ No newline at end of file
+var _0x1d23=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','fax','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports'];(function(_0x4c49fe,_0x3584b0){var _0x3cbeae=function(_0x3d45f7){while(--_0x3d45f7){_0x4c49fe['push'](_0x4c49fe['shift']());}};_0x3cbeae(++_0x3584b0);}(_0x1d23,0x129));var _0x31d2=function(_0x286a2c,_0x587871){_0x286a2c=_0x286a2c-0x0;var _0x356e75=_0x1d23[_0x286a2c];return _0x356e75;};'use strict';var multer=require(_0x31d2('0x0'));var util=require(_0x31d2('0x1'));var path=require(_0x31d2('0x2'));var timeout=require('connect-timeout');var express=require(_0x31d2('0x3'));var router=express[_0x31d2('0x4')]();var fs_extra=require(_0x31d2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x31d2('0x6'));var config=require(_0x31d2('0x7'));var controller=require('./faxInteraction.controller');router[_0x31d2('0x8')]('/',auth['isAuthenticated'](),controller[_0x31d2('0x9')]);router[_0x31d2('0x8')](_0x31d2('0xa'),auth[_0x31d2('0xb')](),controller[_0x31d2('0xc')]);router[_0x31d2('0x8')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),controller[_0x31d2('0xe')]);router['get']('/:id/messages',auth[_0x31d2('0xb')](),controller[_0x31d2('0xf')]);router[_0x31d2('0x8')](_0x31d2('0x10'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x11')]);router[_0x31d2('0x12')]('/',auth[_0x31d2('0xb')](),controller[_0x31d2('0x13')]);router[_0x31d2('0x12')](_0x31d2('0x14'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x15')]);router[_0x31d2('0x12')](_0x31d2('0x16'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')](_0x31d2('0x18'),'faxinteraction:addtags'),controller['addTags']);router[_0x31d2('0x19')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')](_0x31d2('0x18'),_0x31d2('0x1a')),controller[_0x31d2('0x1b')]);router[_0x31d2('0x1c')](_0x31d2('0xd'),auth[_0x31d2('0xb')](),interaction[_0x31d2('0x17')]('fax',_0x31d2('0x1d')),controller[_0x31d2('0x1e')]);router[_0x31d2('0x1c')](_0x31d2('0x16'),auth[_0x31d2('0xb')](),controller[_0x31d2('0x1f')]);module[_0x31d2('0x20')]=router;
\ No newline at end of file
index 17239d0..76327d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe02=['medium','ENUM','out','DATE','sequelize','exports','TEXT'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xbe02,0x146));var _0x2be0=function(_0xe0404d,_0x41ff7c){_0xe0404d=_0xe0404d-0x0;var _0x146c31=_0xbe02[_0xe0404d];return _0x146c31;};'use strict';var Sequelize=require(_0x2be0('0x0'));module[_0x2be0('0x1')]={'body':{'type':Sequelize[_0x2be0('0x2')](_0x2be0('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x2be0('0x4')]('in',_0x2be0('0x5')),'defaultValue':_0x2be0('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x2be0('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x2be0('0x6')]}};
\ No newline at end of file
+var _0x9224=['out','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x22754c,_0x514590){var _0x567a75=function(_0x32dad8){while(--_0x32dad8){_0x22754c['push'](_0x22754c['shift']());}};_0x567a75(++_0x514590);}(_0x9224,0xa3));var _0x4922=function(_0x4a4750,_0x2269c5){_0x4a4750=_0x4a4750-0x0;var _0x42c3a5=_0x9224[_0x4a4750];return _0x42c3a5;};'use strict';var Sequelize=require('sequelize');module[_0x4922('0x0')]={'body':{'type':Sequelize[_0x4922('0x1')](_0x4922('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4922('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4922('0x4')]('in',_0x4922('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index eab0c85..21dccd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb386=['register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','rawAttributes','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','type','VIRTUAL','FaxMessage','includeAll','findAll','catch','params','options','find','body','describe','../../config/logger','fax-interactions','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','fax','null','RejectMessage','rejectMessage','sequelize','contact','interface','rejectmessage','create','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','basename','join','server','files','attachments','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket'];(function(_0x28d727,_0x35954f){var _0x357bf6=function(_0x12bba6){while(--_0x12bba6){_0x28d727['push'](_0x28d727['shift']());}};_0x357bf6(++_0x35954f);}(_0xb386,0x190));var _0x6b38=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xb386[_0xd0b415];return _0x2bdf2c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6b38('0x0'));var zipdir=require(_0x6b38('0x1'));var jsonpatch=require(_0x6b38('0x2'));var rp=require(_0x6b38('0x3'));var moment=require(_0x6b38('0x4'));var BPromise=require(_0x6b38('0x5'));var Mustache=require(_0x6b38('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6b38('0x7'));var ejs=require(_0x6b38('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b38('0x9'));var squel=require(_0x6b38('0xa'));var crypto=require(_0x6b38('0xb'));var jsforce=require(_0x6b38('0xc'));var deskjs=require(_0x6b38('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6b38('0xe'));var Papa=require(_0x6b38('0xf'));var Redis=require(_0x6b38('0x10'));var authService=require(_0x6b38('0x11'));var qs=require(_0x6b38('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b38('0x13'));var logger=require('../../config/logger')(_0x6b38('0x14'));var utils=require(_0x6b38('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6b38('0x16'));var db=require(_0x6b38('0x17'))['db'];config[_0x6b38('0x18')]=_[_0x6b38('0x19')](config[_0x6b38('0x18')],{'host':_0x6b38('0x1a'),'port':0x18eb});var socket=require(_0x6b38('0x1b'))(new Redis(config[_0x6b38('0x18')]));require(_0x6b38('0x1c'))[_0x6b38('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x6b38('0x1e')][_0x6b38('0x1f')]({'port':0x232c});var client9002=jayson[_0x6b38('0x1e')][_0x6b38('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x151d1a,_0x40382d,_0x5e1a8a,_0x23ec77){return new BPromise(function(_0x4c0de1,_0x466de8){var _0x10939d=_0x23ec77||client;return _0x10939d[_0x6b38('0x20')](_0x151d1a,_0x5e1a8a)[_0x6b38('0x21')](function(_0x52b5c0){logger[_0x6b38('0x22')](_0x6b38('0x23'),_0x40382d,'request\x20sent');logger[_0x6b38('0x24')](_0x6b38('0x25'),_0x40382d,_0x6b38('0x26'),JSON[_0x6b38('0x27')](_0x52b5c0));if(_0x52b5c0[_0x6b38('0x28')]){if(_0x52b5c0['error']['code']===0x1f4){logger[_0x6b38('0x28')](_0x6b38('0x23'),_0x40382d,_0x52b5c0[_0x6b38('0x28')]['message']);return _0x466de8(_0x52b5c0[_0x6b38('0x28')][_0x6b38('0x29')]);}logger[_0x6b38('0x28')](_0x6b38('0x23'),_0x40382d,_0x52b5c0['error']['message']);return _0x4c0de1(_0x52b5c0[_0x6b38('0x28')][_0x6b38('0x29')]);}else{logger[_0x6b38('0x22')](_0x6b38('0x23'),_0x40382d,_0x6b38('0x26'));_0x4c0de1(_0x52b5c0[_0x6b38('0x2a')][_0x6b38('0x29')]);}})['catch'](function(_0x1c7d7b){logger[_0x6b38('0x28')](_0x6b38('0x23'),_0x40382d,_0x1c7d7b);_0x466de8(_0x1c7d7b);});});}function respondWithStatusCode(_0x318b82,_0x19ef0d){_0x19ef0d=_0x19ef0d||0xcc;return function(_0x149dab){if(_0x149dab){return _0x318b82['sendStatus'](_0x19ef0d);}return _0x318b82[_0x6b38('0x2b')](_0x19ef0d)['end']();};}function respondWithResult(_0x21d71b,_0x55d789){_0x55d789=_0x55d789||0xc8;return function(_0x54beb9){if(_0x54beb9){return _0x21d71b[_0x6b38('0x2b')](_0x55d789)[_0x6b38('0x2c')](_0x54beb9);}};}function respondWithFilteredResult(_0x35752f,_0x58bb67){return function(_0x43ba7a){if(_0x43ba7a){var _0x127f59=typeof _0x58bb67[_0x6b38('0x2d')]===_0x6b38('0x2e')&&typeof _0x58bb67[_0x6b38('0x2f')]===_0x6b38('0x2e');var _0x4897cf=_0x43ba7a[_0x6b38('0x30')];var _0x33883c=_0x127f59?0x0:_0x58bb67[_0x6b38('0x2d')];var _0x74e19b=_0x127f59?_0x43ba7a[_0x6b38('0x30')]:_0x58bb67[_0x6b38('0x2d')]+_0x58bb67[_0x6b38('0x2f')];var _0x43ee46;if(_0x74e19b>=_0x4897cf){_0x74e19b=_0x4897cf;_0x43ee46=0xc8;}else{_0x43ee46=0xce;}_0x35752f[_0x6b38('0x2b')](_0x43ee46);return _0x35752f[_0x6b38('0x31')](_0x6b38('0x32'),_0x33883c+'-'+_0x74e19b+'/'+_0x4897cf)[_0x6b38('0x2c')](_0x43ba7a);}return null;};}function patchUpdates(_0x18f952){return function(_0x2a7ee6){try{jsonpatch[_0x6b38('0x33')](_0x2a7ee6,_0x18f952,!![]);}catch(_0x195498){return BPromise[_0x6b38('0x34')](_0x195498);}return _0x2a7ee6[_0x6b38('0x35')]();};}function saveUpdates(_0x45ce5e,_0x51b5d6){return function(_0x3d5edc){if(_0x3d5edc){return _0x3d5edc[_0x6b38('0x36')](_0x45ce5e)[_0x6b38('0x21')](function(_0x2b9d91){return _0x2b9d91;});}return null;};}function removeEntity(_0x5d3fca,_0x37aeee){return function(_0x62971c){if(_0x62971c){return _0x62971c[_0x6b38('0x37')]()[_0x6b38('0x21')](function(){_0x5d3fca[_0x6b38('0x2b')](0xcc)[_0x6b38('0x38')]();});}};}function handleEntityNotFound(_0x5bd99b,_0x7aa2f6){return function(_0x6fee4e){if(!_0x6fee4e){_0x5bd99b[_0x6b38('0x39')](0x194);}return _0x6fee4e;};}function handleError(_0x14fa2f,_0x38bd52){_0x38bd52=_0x38bd52||0x1f4;return function(_0x42b9f2){logger[_0x6b38('0x28')](_0x42b9f2['stack']);if(_0x42b9f2[_0x6b38('0x3a')]){delete _0x42b9f2['name'];}_0x14fa2f['status'](_0x38bd52)[_0x6b38('0x3b')](_0x42b9f2);};}exports[_0x6b38('0x3c')]=function(_0x320e8e,_0x44fa26){var _0x454e80={},_0x51cef3={},_0x4810e0={'count':0x0,'rows':[]};var _0x13e6d9=_['map'](db['FaxMessage'][_0x6b38('0x3d')],function(_0xa42643){return{'name':_0xa42643['fieldName'],'type':_0xa42643['type']['key']};});_0x51cef3[_0x6b38('0x3e')]=_['map'](_0x13e6d9,_0x6b38('0x3a'));_0x51cef3[_0x6b38('0x3f')]=_[_0x6b38('0x40')](_0x320e8e['query']);_0x51cef3[_0x6b38('0x41')]=_[_0x6b38('0x42')](_0x51cef3[_0x6b38('0x3e')],_0x51cef3['query']);_0x454e80['attributes']=_[_0x6b38('0x42')](_0x51cef3[_0x6b38('0x3e')],qs['fields'](_0x320e8e[_0x6b38('0x3f')][_0x6b38('0x43')]));_0x454e80[_0x6b38('0x44')]=_0x454e80['attributes'][_0x6b38('0x45')]?_0x454e80['attributes']:_0x51cef3[_0x6b38('0x3e')];if(!_0x320e8e[_0x6b38('0x3f')][_0x6b38('0x46')](_0x6b38('0x47'))){_0x454e80[_0x6b38('0x2f')]=qs[_0x6b38('0x2f')](_0x320e8e[_0x6b38('0x3f')]['limit']);_0x454e80[_0x6b38('0x2d')]=qs['offset'](_0x320e8e[_0x6b38('0x3f')][_0x6b38('0x2d')]);}_0x454e80['order']=qs[_0x6b38('0x48')](_0x320e8e[_0x6b38('0x3f')][_0x6b38('0x48')]);_0x454e80[_0x6b38('0x49')]=qs[_0x6b38('0x41')](_[_0x6b38('0x4a')](_0x320e8e[_0x6b38('0x3f')],_0x51cef3[_0x6b38('0x41')]),_0x13e6d9);if(_0x320e8e['query'][_0x6b38('0x4b')]){_0x454e80[_0x6b38('0x49')]=_[_0x6b38('0x4c')](_0x454e80['where'],{'$or':_[_0x6b38('0x4d')](_0x13e6d9,function(_0x365edc){if(_0x365edc[_0x6b38('0x4e')]!==_0x6b38('0x4f')){var _0x28ab11={};_0x28ab11[_0x365edc[_0x6b38('0x3a')]]={'$like':'%'+_0x320e8e['query'][_0x6b38('0x4b')]+'%'};return _0x28ab11;}})});}_0x454e80=_[_0x6b38('0x4c')]({},_0x454e80,_0x320e8e['options']);var _0x3c65e7={'where':_0x454e80[_0x6b38('0x49')]};return db[_0x6b38('0x50')]['count'](_0x3c65e7)['then'](function(_0x41275f){_0x4810e0['count']=_0x41275f;if(_0x320e8e[_0x6b38('0x3f')][_0x6b38('0x51')]){_0x454e80['include']=[{'all':!![]}];}return db[_0x6b38('0x50')][_0x6b38('0x52')](_0x454e80);})[_0x6b38('0x21')](function(_0x552718){_0x4810e0['rows']=_0x552718;return _0x4810e0;})['then'](respondWithFilteredResult(_0x44fa26,_0x454e80))[_0x6b38('0x53')](handleError(_0x44fa26,null));};exports['show']=function(_0x7bc334,_0x4664aa){var _0x406fb6={'raw':!![],'where':{'id':_0x7bc334[_0x6b38('0x54')]['id']}},_0x5eb98e={};_0x5eb98e[_0x6b38('0x3e')]=_[_0x6b38('0x40')](db[_0x6b38('0x50')][_0x6b38('0x3d')]);_0x5eb98e[_0x6b38('0x3f')]=_[_0x6b38('0x40')](_0x7bc334['query']);_0x5eb98e['filters']=_[_0x6b38('0x42')](_0x5eb98e[_0x6b38('0x3e')],_0x5eb98e[_0x6b38('0x3f')]);_0x406fb6[_0x6b38('0x44')]=_[_0x6b38('0x42')](_0x5eb98e['model'],qs[_0x6b38('0x43')](_0x7bc334[_0x6b38('0x3f')][_0x6b38('0x43')]));_0x406fb6['attributes']=_0x406fb6[_0x6b38('0x44')][_0x6b38('0x45')]?_0x406fb6[_0x6b38('0x44')]:_0x5eb98e[_0x6b38('0x3e')];if(_0x7bc334[_0x6b38('0x3f')]['includeAll']){_0x406fb6['include']=[{'all':!![]}];}_0x406fb6=_[_0x6b38('0x4c')]({},_0x406fb6,_0x7bc334[_0x6b38('0x55')]);return db['FaxMessage'][_0x6b38('0x56')](_0x406fb6)[_0x6b38('0x21')](handleEntityNotFound(_0x4664aa,null))[_0x6b38('0x21')](respondWithResult(_0x4664aa,null))['catch'](handleError(_0x4664aa,null));};exports[_0x6b38('0x36')]=function(_0x4d0971,_0x42cc99){if(_0x4d0971[_0x6b38('0x57')]['id']){delete _0x4d0971[_0x6b38('0x57')]['id'];}return db[_0x6b38('0x50')]['find']({'where':{'id':_0x4d0971[_0x6b38('0x54')]['id']}})['then'](handleEntityNotFound(_0x42cc99,null))[_0x6b38('0x21')](saveUpdates(_0x4d0971[_0x6b38('0x57')],null))[_0x6b38('0x21')](respondWithResult(_0x42cc99,null))[_0x6b38('0x53')](handleError(_0x42cc99,null));};exports[_0x6b38('0x37')]=function(_0x3c62bb,_0x50339d){return db[_0x6b38('0x50')][_0x6b38('0x56')]({'where':{'id':_0x3c62bb[_0x6b38('0x54')]['id']}})[_0x6b38('0x21')](handleEntityNotFound(_0x50339d,null))[_0x6b38('0x21')](removeEntity(_0x50339d,null))[_0x6b38('0x53')](handleError(_0x50339d,null));};exports[_0x6b38('0x58')]=function(_0x1cc5b8,_0x1ad432){return db['FaxMessage'][_0x6b38('0x58')]()[_0x6b38('0x21')](respondWithResult(_0x1ad432,null))['catch'](handleError(_0x1ad432,null));};var interaction_log=require(_0x6b38('0x59'))(_0x6b38('0x5a'));exports['accept']=function(_0x4add32,_0x1e851a,_0x23578d){var _0x4a5f4a={'agent':{},'channel':'fax'};if(_0x4add32[_0x6b38('0x57')]['id']){delete _0x4add32[_0x6b38('0x57')]['id'];}_0x4add32[_0x6b38('0x57')]['read']=!![];_0x4add32[_0x6b38('0x57')][_0x6b38('0x5b')]=moment()[_0x6b38('0x5c')](_0x6b38('0x5d'));_0x4add32['body'][_0x6b38('0x5e')]=_0x4add32['body'][_0x6b38('0x5e')]||_0x4add32[_0x6b38('0x5f')]['id'];_0x4a5f4a[_0x6b38('0x60')]['id']=_0x4add32[_0x6b38('0x57')][_0x6b38('0x5e')];return db[_0x6b38('0x50')][_0x6b38('0x56')]({'where':{'id':_0x4add32[_0x6b38('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1e851a,null))[_0x6b38('0x21')](saveUpdates(_0x4add32['body'],null))[_0x6b38('0x21')](function(_0x132817){if(_0x132817){_0x4a5f4a[_0x6b38('0x29')]=_0x132817[_0x6b38('0x61')]({'plain':!![]});return db[_0x6b38('0x62')][_0x6b38('0x56')]({'where':{'id':_0x132817[_0x6b38('0x63')]}});}return null;})[_0x6b38('0x21')](handleEntityNotFound(_0x1e851a,null))[_0x6b38('0x21')](function(_0x4e29cf){if(_0x4e29cf){return _0x4e29cf[_0x6b38('0x36')]({'UserId':_0x4add32[_0x6b38('0x57')][_0x6b38('0x5e')],'read1stAt':_[_0x6b38('0x64')](_0x4e29cf[_0x6b38('0x65')])?moment()[_0x6b38('0x5c')](_0x6b38('0x5d')):undefined});}return null;})[_0x6b38('0x21')](function(_0x12d36c){if(_0x12d36c){_0x4a5f4a[_0x6b38('0x66')]=_0x12d36c['get']({'plain':!![]});interaction_log[_0x6b38('0x22')](_0x6b38('0x67'),_0x4add32['user']['id'],_0x4add32['user']['name'],_0x4add32[_0x6b38('0x5f')][_0x6b38('0x68')],_0x4a5f4a['interaction']['id'],_0x4add32[_0x6b38('0x57')]?JSON[_0x6b38('0x27')](_0x4add32[_0x6b38('0x57')]):'null');return respondWithRpcPromise(_0x6b38('0x69'),_0x6b38('0x6a'),_0x4a5f4a);}return null;})['then'](function(_0x997e9a){var _0x5dd184=_0x6b38('0x6b')+_0x997e9a[_0x6b38('0x29')][_0x6b38('0x6c')];return db['sequelize']['query'](_0x5dd184,{'type':db[_0x6b38('0x6d')][_0x6b38('0x6e')][_0x6b38('0x6f')],'raw':!![]})['then'](function(_0x27f0e0){return _0x27f0e0;});})[_0x6b38('0x21')](function(_0x39150e){if(_0x39150e){_0x4a5f4a[_0x6b38('0x29')]['contact']=_0x39150e[0x0];if(!_0x4add32[_0x6b38('0x57')][_0x6b38('0x5e')])return;return db[_0x6b38('0x70')][_0x6b38('0x56')]({'where':{'id':_0x4add32[_0x6b38('0x57')]['UserId'],'role':_0x6b38('0x60')},'attributes':['id',_0x6b38('0x3a'),_0x6b38('0x71'),_0x6b38('0x72'),_0x6b38('0x73')],'raw':!![]});}return null;})[_0x6b38('0x21')](function(_0x663bea){if(!_0x663bea)return null;_0x4a5f4a['message'][_0x6b38('0x60')]=_0x663bea;return _0x4a5f4a;})[_0x6b38('0x21')](function(_0x65ac74){if(_0x65ac74){if(_0x4add32[_0x6b38('0x57')][_0x6b38('0x74')]){_0x4a5f4a[_0x6b38('0x29')]['interface']=util[_0x6b38('0x5c')](_0x6b38('0x75'),_0x4add32[_0x6b38('0x5f')][_0x6b38('0x3a')]);_0x4a5f4a[_0x6b38('0x29')][_0x6b38('0x76')]=_0x4a5f4a[_0x6b38('0x76')];_0x4a5f4a['message'][_0x6b38('0x77')]=_0x4a5f4a[_0x6b38('0x76')];_0x4a5f4a['message'][_0x6b38('0x78')]='accept';return respondWithRpcPromise('EventManager',_0x6b38('0x79'),{'event':_0x6b38('0x7a'),'message':_0x4a5f4a[_0x6b38('0x29')]},client9002)[_0x6b38('0x21')](function(){return _0x4a5f4a;});}return _0x4a5f4a;}return null;})[_0x6b38('0x21')](respondWithResult(_0x1e851a,null))[_0x6b38('0x53')](handleError(_0x1e851a,null));};var interaction_log=require('../../config/logger')(_0x6b38('0x5a'));exports[_0x6b38('0x34')]=function(_0x515b2f,_0x38f502,_0x2df58c){var _0x3159f1={'agent':{},'channel':_0x6b38('0x7b')};if(_0x515b2f[_0x6b38('0x57')]['id']){delete _0x515b2f['body']['id'];}_0x515b2f[_0x6b38('0x57')]['UserId']=_0x515b2f[_0x6b38('0x57')][_0x6b38('0x5e')]||_0x515b2f[_0x6b38('0x5f')]['id'];_0x3159f1[_0x6b38('0x60')]['id']=_0x515b2f[_0x6b38('0x57')][_0x6b38('0x5e')];return db[_0x6b38('0x50')][_0x6b38('0x56')]({'where':{'id':_0x515b2f[_0x6b38('0x54')]['id'],'UserId':null}})[_0x6b38('0x21')](handleEntityNotFound(_0x38f502,null))[_0x6b38('0x21')](function(_0x4e4fcc){if(_0x4e4fcc){_0x3159f1['message']=_0x4e4fcc[_0x6b38('0x61')]({'plain':!![]});return db[_0x6b38('0x62')]['find']({'where':{'id':_0x4e4fcc[_0x6b38('0x63')]}});}return null;})[_0x6b38('0x21')](handleEntityNotFound(_0x38f502,null))[_0x6b38('0x21')](function(_0x17cd84){if(_0x17cd84){_0x3159f1[_0x6b38('0x66')]=_0x17cd84[_0x6b38('0x61')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x515b2f['user']['id'],_0x515b2f[_0x6b38('0x5f')]['name'],_0x515b2f['user'][_0x6b38('0x68')],_0x3159f1[_0x6b38('0x66')]['id'],_0x515b2f[_0x6b38('0x57')]?JSON['stringify'](_0x515b2f[_0x6b38('0x57')]):_0x6b38('0x7c'));return respondWithRpcPromise(_0x6b38('0x7d'),_0x6b38('0x7e'),_0x3159f1);}return null;})['then'](function(_0x1fe971){var _0x47f388=_0x6b38('0x6b')+_0x1fe971['message']['ContactId'];return db[_0x6b38('0x7f')][_0x6b38('0x3f')](_0x47f388,{'type':db[_0x6b38('0x6d')][_0x6b38('0x6e')][_0x6b38('0x6f')],'raw':!![]})[_0x6b38('0x21')](function(_0x26034b){return _0x26034b;});})[_0x6b38('0x21')](function(_0x4fed57){if(_0x4fed57){_0x3159f1[_0x6b38('0x29')][_0x6b38('0x80')]=_0x4fed57[0x0];if(!_0x515b2f[_0x6b38('0x57')][_0x6b38('0x5e')])return;return db[_0x6b38('0x70')][_0x6b38('0x56')]({'where':{'id':_0x515b2f['body'][_0x6b38('0x5e')],'role':_0x6b38('0x60')},'attributes':['id',_0x6b38('0x3a'),'fullname',_0x6b38('0x72'),_0x6b38('0x73')],'raw':!![]});}return null;})[_0x6b38('0x21')](function(_0x545dab){if(!_0x545dab)return null;_0x3159f1[_0x6b38('0x29')]['agent']=_0x545dab;return _0x3159f1;})[_0x6b38('0x21')](function(_0x4a2a65){if(_0x4a2a65){_0x4a2a65['message'][_0x6b38('0x81')]=util['format'](_0x6b38('0x75'),_0x515b2f[_0x6b38('0x5f')][_0x6b38('0x3a')]);_0x4a2a65['message']['channel']=_0x3159f1['channel'];_0x4a2a65[_0x6b38('0x29')][_0x6b38('0x77')]=_0x3159f1[_0x6b38('0x76')];_0x4a2a65[_0x6b38('0x29')][_0x6b38('0x78')]='reject';respondWithRpcPromise(_0x6b38('0x79'),_0x6b38('0x79'),{'event':_0x6b38('0x82'),'message':_0x4a2a65['message']},client9002);return _0x3159f1;}return null;})['then'](respondWithResult(_0x38f502,null))[_0x6b38('0x53')](handleError(_0x38f502,null));};exports[_0x6b38('0x83')]=function(_0x2bc4ad,_0x150a46){var _0x2e3097;return db[_0x6b38('0x50')][_0x6b38('0x83')](_0x2bc4ad[_0x6b38('0x57')],{})[_0x6b38('0x21')](function(_0x464ef0){_0x2e3097=_0x464ef0;return db['CmContact'][_0x6b38('0x84')]({'where':{'id':_0x2e3097[_0x6b38('0x6c')]}});})[_0x6b38('0x21')](function(_0x9ca37c){if(_['isNil'](_0x9ca37c)){return;}else{_0x2e3097['fax']=_0x9ca37c[_0x6b38('0x7b')];return db[_0x6b38('0x85')][_0x6b38('0x84')]({'where':{'id':_0x2e3097[_0x6b38('0x86')]}});}})[_0x6b38('0x21')](function(_0x4698b5){return respondWithRpcPromise(_0x6b38('0x87'),_0x6b38('0x87'),{'FaxAccountId':_[_0x6b38('0x64')](_0x2bc4ad[_0x6b38('0x57')])?undefined:_0x2bc4ad['body'][_0x6b38('0x88')],'path':_['isNil'](_0x4698b5)?undefined:util[_0x6b38('0x5c')]('/var/opt/motion2/server/files/attachments/%s',_0x4698b5[_0x6b38('0x89')]),'fax':_['isNil'](_0x2e3097[_0x6b38('0x7b')])?undefined:_0x2e3097['fax'],'AttachmentId':_0x2e3097[_0x6b38('0x86')]},client9002);})[_0x6b38('0x21')](respondWithResult(_0x150a46,0xc9))[_0x6b38('0x53')](handleError(_0x150a46,null));};exports['download']=function(_0x35525c,_0x27e9a9){var _0x25ca60=path[_0x6b38('0x8a')](config['root'],_0x6b38('0x8b'),_0x6b38('0x8c'),_0x6b38('0x8d'));return db['FaxMessage']['find']({'where':{'id':_0x35525c[_0x6b38('0x54')]['id']},'include':[{'model':db[_0x6b38('0x85')],'as':_0x6b38('0x85')}]})['then'](handleEntityNotFound(_0x27e9a9,null))[_0x6b38('0x21')](function(_0x5aa61f){if(_0x5aa61f){return _0x27e9a9[_0x6b38('0x8e')](path['join'](_0x25ca60,_0x5aa61f[_0x6b38('0x85')][_0x6b38('0x89')]));}})[_0x6b38('0x53')](handleError(_0x27e9a9,null));};
\ No newline at end of file
+var _0xc627=['contact','fullname','motionChannel','rejectmessage','create','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','download','join','attachments','basename','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','name','send','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','FaxMessage','includeAll','include','rows','params','catch','body','find','describe','../../config/logger','fax-interactions','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','User','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','ContactId'];(function(_0xd6a1c9,_0x203324){var _0x51ea29=function(_0x165a30){while(--_0x165a30){_0xd6a1c9['push'](_0xd6a1c9['shift']());}};_0x51ea29(++_0x203324);}(_0xc627,0x114));var _0x7c62=function(_0x78191,_0x264507){_0x78191=_0x78191-0x0;var _0x15ed2a=_0xc627[_0x78191];return _0x15ed2a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7c62('0x0'));var jsonpatch=require(_0x7c62('0x1'));var rp=require(_0x7c62('0x2'));var moment=require('moment');var BPromise=require(_0x7c62('0x3'));var Mustache=require('mustache');var util=require(_0x7c62('0x4'));var path=require('path');var sox=require(_0x7c62('0x5'));var csv=require(_0x7c62('0x6'));var ejs=require(_0x7c62('0x7'));var fs=require('fs');var fs_extra=require(_0x7c62('0x8'));var _=require(_0x7c62('0x9'));var squel=require(_0x7c62('0xa'));var crypto=require('crypto');var jsforce=require(_0x7c62('0xb'));var deskjs=require(_0x7c62('0xc'));var toCsv=require(_0x7c62('0x6'));var querystring=require(_0x7c62('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7c62('0xe'));var hardwareService=require(_0x7c62('0xf'));var logger=require('../../config/logger')(_0x7c62('0x10'));var utils=require(_0x7c62('0x11'));var config=require(_0x7c62('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x7c62('0x13'))['db'];config[_0x7c62('0x14')]=_[_0x7c62('0x15')](config[_0x7c62('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7c62('0x14')]));require(_0x7c62('0x16'))[_0x7c62('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7c62('0x18')][_0x7c62('0x19')]({'port':0x232c});var client9002=jayson['client'][_0x7c62('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3a2578,_0x7663f3,_0x53b968,_0x57c311){return new BPromise(function(_0x14236d,_0x49f781){var _0x53e042=_0x57c311||client;return _0x53e042[_0x7c62('0x1a')](_0x3a2578,_0x53b968)[_0x7c62('0x1b')](function(_0x1d24d8){logger[_0x7c62('0x1c')](_0x7c62('0x1d'),_0x7663f3,_0x7c62('0x1e'));logger['debug'](_0x7c62('0x1f'),_0x7663f3,_0x7c62('0x1e'),JSON['stringify'](_0x1d24d8));if(_0x1d24d8['error']){if(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x21')]===0x1f4){logger[_0x7c62('0x20')]('FaxMessage,\x20%s,\x20%s',_0x7663f3,_0x1d24d8[_0x7c62('0x20')]['message']);return _0x49f781(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x22')]);}logger[_0x7c62('0x20')](_0x7c62('0x1d'),_0x7663f3,_0x1d24d8['error'][_0x7c62('0x22')]);return _0x14236d(_0x1d24d8[_0x7c62('0x20')][_0x7c62('0x22')]);}else{logger[_0x7c62('0x1c')]('FaxMessage,\x20%s,\x20%s',_0x7663f3,_0x7c62('0x1e'));_0x14236d(_0x1d24d8[_0x7c62('0x23')]['message']);}})['catch'](function(_0x38cab7){logger['error'](_0x7c62('0x1d'),_0x7663f3,_0x38cab7);_0x49f781(_0x38cab7);});});}function respondWithStatusCode(_0x4dd402,_0x420856){_0x420856=_0x420856||0xcc;return function(_0x303c79){if(_0x303c79){return _0x4dd402[_0x7c62('0x24')](_0x420856);}return _0x4dd402[_0x7c62('0x25')](_0x420856)['end']();};}function respondWithResult(_0x1dc8f9,_0x1aa07d){_0x1aa07d=_0x1aa07d||0xc8;return function(_0x4ba6f8){if(_0x4ba6f8){return _0x1dc8f9['status'](_0x1aa07d)[_0x7c62('0x26')](_0x4ba6f8);}};}function respondWithFilteredResult(_0x242e1b,_0x17f10d){return function(_0x13861b){if(_0x13861b){var _0x508e10=typeof _0x17f10d['offset']===_0x7c62('0x27')&&typeof _0x17f10d[_0x7c62('0x28')]===_0x7c62('0x27');var _0x19016c=_0x13861b[_0x7c62('0x29')];var _0x2f5d5a=_0x508e10?0x0:_0x17f10d[_0x7c62('0x2a')];var _0x26c378=_0x508e10?_0x13861b[_0x7c62('0x29')]:_0x17f10d[_0x7c62('0x2a')]+_0x17f10d[_0x7c62('0x28')];var _0xe194cf;if(_0x26c378>=_0x19016c){_0x26c378=_0x19016c;_0xe194cf=0xc8;}else{_0xe194cf=0xce;}_0x242e1b[_0x7c62('0x25')](_0xe194cf);return _0x242e1b[_0x7c62('0x2b')](_0x7c62('0x2c'),_0x2f5d5a+'-'+_0x26c378+'/'+_0x19016c)[_0x7c62('0x26')](_0x13861b);}return null;};}function patchUpdates(_0x83c0bc){return function(_0x492194){try{jsonpatch['apply'](_0x492194,_0x83c0bc,!![]);}catch(_0x143a5d){return BPromise[_0x7c62('0x2d')](_0x143a5d);}return _0x492194[_0x7c62('0x2e')]();};}function saveUpdates(_0x60e4da,_0x12260e){return function(_0xd8b0a6){if(_0xd8b0a6){return _0xd8b0a6[_0x7c62('0x2f')](_0x60e4da)[_0x7c62('0x1b')](function(_0x491e26){return _0x491e26;});}return null;};}function removeEntity(_0x95a525,_0x330ac5){return function(_0x1e4225){if(_0x1e4225){return _0x1e4225[_0x7c62('0x30')]()[_0x7c62('0x1b')](function(){_0x95a525[_0x7c62('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x278dc2,_0x467df9){return function(_0x326ae1){if(!_0x326ae1){_0x278dc2[_0x7c62('0x24')](0x194);}return _0x326ae1;};}function handleError(_0x2ba939,_0x4a829b){_0x4a829b=_0x4a829b||0x1f4;return function(_0x2bca0e){logger[_0x7c62('0x20')](_0x2bca0e['stack']);if(_0x2bca0e['name']){delete _0x2bca0e[_0x7c62('0x31')];}_0x2ba939[_0x7c62('0x25')](_0x4a829b)[_0x7c62('0x32')](_0x2bca0e);};}exports['index']=function(_0x501a82,_0x400017){var _0x3b9994={},_0x44fb61={},_0x33c5b2={'count':0x0,'rows':[]};var _0x34e820=_['map'](db['FaxMessage'][_0x7c62('0x33')],function(_0x32dceb){return{'name':_0x32dceb['fieldName'],'type':_0x32dceb[_0x7c62('0x34')][_0x7c62('0x35')]};});_0x44fb61[_0x7c62('0x36')]=_[_0x7c62('0x37')](_0x34e820,_0x7c62('0x31'));_0x44fb61[_0x7c62('0x38')]=_[_0x7c62('0x39')](_0x501a82['query']);_0x44fb61[_0x7c62('0x3a')]=_[_0x7c62('0x3b')](_0x44fb61[_0x7c62('0x36')],_0x44fb61[_0x7c62('0x38')]);_0x3b9994[_0x7c62('0x3c')]=_[_0x7c62('0x3b')](_0x44fb61[_0x7c62('0x36')],qs[_0x7c62('0x3d')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x3d')]));_0x3b9994[_0x7c62('0x3c')]=_0x3b9994[_0x7c62('0x3c')][_0x7c62('0x3e')]?_0x3b9994[_0x7c62('0x3c')]:_0x44fb61[_0x7c62('0x36')];if(!_0x501a82[_0x7c62('0x38')][_0x7c62('0x3f')](_0x7c62('0x40'))){_0x3b9994[_0x7c62('0x28')]=qs[_0x7c62('0x28')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x28')]);_0x3b9994[_0x7c62('0x2a')]=qs[_0x7c62('0x2a')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x2a')]);}_0x3b9994[_0x7c62('0x41')]=qs[_0x7c62('0x42')](_0x501a82[_0x7c62('0x38')][_0x7c62('0x42')]);_0x3b9994[_0x7c62('0x43')]=qs[_0x7c62('0x3a')](_[_0x7c62('0x44')](_0x501a82[_0x7c62('0x38')],_0x44fb61['filters']),_0x34e820);if(_0x501a82[_0x7c62('0x38')]['filter']){_0x3b9994['where']=_[_0x7c62('0x45')](_0x3b9994['where'],{'$or':_[_0x7c62('0x37')](_0x34e820,function(_0x41639c){if(_0x41639c[_0x7c62('0x34')]!=='VIRTUAL'){var _0xfbc23e={};_0xfbc23e[_0x41639c['name']]={'$like':'%'+_0x501a82[_0x7c62('0x38')][_0x7c62('0x46')]+'%'};return _0xfbc23e;}})});}_0x3b9994=_[_0x7c62('0x45')]({},_0x3b9994,_0x501a82[_0x7c62('0x47')]);var _0x185ae2={'where':_0x3b9994[_0x7c62('0x43')]};return db[_0x7c62('0x48')][_0x7c62('0x29')](_0x185ae2)[_0x7c62('0x1b')](function(_0x370e5b){_0x33c5b2[_0x7c62('0x29')]=_0x370e5b;if(_0x501a82[_0x7c62('0x38')][_0x7c62('0x49')]){_0x3b9994[_0x7c62('0x4a')]=[{'all':!![]}];}return db[_0x7c62('0x48')]['findAll'](_0x3b9994);})[_0x7c62('0x1b')](function(_0x19ec20){_0x33c5b2[_0x7c62('0x4b')]=_0x19ec20;return _0x33c5b2;})['then'](respondWithFilteredResult(_0x400017,_0x3b9994))['catch'](handleError(_0x400017,null));};exports['show']=function(_0x215730,_0x5a98c2){var _0x45e04e={'raw':!![],'where':{'id':_0x215730[_0x7c62('0x4c')]['id']}},_0x679f64={};_0x679f64['model']=_[_0x7c62('0x39')](db[_0x7c62('0x48')][_0x7c62('0x33')]);_0x679f64[_0x7c62('0x38')]=_[_0x7c62('0x39')](_0x215730['query']);_0x679f64[_0x7c62('0x3a')]=_[_0x7c62('0x3b')](_0x679f64[_0x7c62('0x36')],_0x679f64[_0x7c62('0x38')]);_0x45e04e[_0x7c62('0x3c')]=_[_0x7c62('0x3b')](_0x679f64[_0x7c62('0x36')],qs[_0x7c62('0x3d')](_0x215730[_0x7c62('0x38')]['fields']));_0x45e04e['attributes']=_0x45e04e[_0x7c62('0x3c')][_0x7c62('0x3e')]?_0x45e04e[_0x7c62('0x3c')]:_0x679f64[_0x7c62('0x36')];if(_0x215730[_0x7c62('0x38')][_0x7c62('0x49')]){_0x45e04e[_0x7c62('0x4a')]=[{'all':!![]}];}_0x45e04e=_[_0x7c62('0x45')]({},_0x45e04e,_0x215730[_0x7c62('0x47')]);return db[_0x7c62('0x48')]['find'](_0x45e04e)[_0x7c62('0x1b')](handleEntityNotFound(_0x5a98c2,null))['then'](respondWithResult(_0x5a98c2,null))[_0x7c62('0x4d')](handleError(_0x5a98c2,null));};exports['update']=function(_0x3271ed,_0x10e049){if(_0x3271ed[_0x7c62('0x4e')]['id']){delete _0x3271ed['body']['id'];}return db[_0x7c62('0x48')][_0x7c62('0x4f')]({'where':{'id':_0x3271ed[_0x7c62('0x4c')]['id']}})[_0x7c62('0x1b')](handleEntityNotFound(_0x10e049,null))['then'](saveUpdates(_0x3271ed[_0x7c62('0x4e')],null))[_0x7c62('0x1b')](respondWithResult(_0x10e049,null))[_0x7c62('0x4d')](handleError(_0x10e049,null));};exports[_0x7c62('0x30')]=function(_0x1c822d,_0x1a3752){return db['FaxMessage'][_0x7c62('0x4f')]({'where':{'id':_0x1c822d[_0x7c62('0x4c')]['id']}})[_0x7c62('0x1b')](handleEntityNotFound(_0x1a3752,null))[_0x7c62('0x1b')](removeEntity(_0x1a3752,null))['catch'](handleError(_0x1a3752,null));};exports[_0x7c62('0x50')]=function(_0x413dad,_0x508e27){return db[_0x7c62('0x48')]['describe']()[_0x7c62('0x1b')](respondWithResult(_0x508e27,null))[_0x7c62('0x4d')](handleError(_0x508e27,null));};var interaction_log=require(_0x7c62('0x51'))(_0x7c62('0x52'));exports['accept']=function(_0x48e72b,_0x1d2e53,_0x40d47e){var _0x20f2f9={'agent':{},'channel':_0x7c62('0x53')};if(_0x48e72b['body']['id']){delete _0x48e72b['body']['id'];}_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x54')]=!![];_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x55')]=moment()[_0x7c62('0x56')](_0x7c62('0x57'));_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')]=_0x48e72b[_0x7c62('0x4e')]['UserId']||_0x48e72b['user']['id'];_0x20f2f9[_0x7c62('0x59')]['id']=_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')];return db['FaxMessage'][_0x7c62('0x4f')]({'where':{'id':_0x48e72b[_0x7c62('0x4c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1d2e53,null))['then'](saveUpdates(_0x48e72b[_0x7c62('0x4e')],null))[_0x7c62('0x1b')](function(_0x58ad99){if(_0x58ad99){_0x20f2f9['message']=_0x58ad99[_0x7c62('0x5a')]({'plain':!![]});return db[_0x7c62('0x5b')][_0x7c62('0x4f')]({'where':{'id':_0x58ad99[_0x7c62('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x1d2e53,null))[_0x7c62('0x1b')](function(_0x4bad8c){if(_0x4bad8c){return _0x4bad8c[_0x7c62('0x2f')]({'UserId':_0x48e72b['body']['UserId'],'read1stAt':_[_0x7c62('0x5d')](_0x4bad8c[_0x7c62('0x5e')])?moment()[_0x7c62('0x56')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7c62('0x1b')](function(_0x54d7d0){if(_0x54d7d0){_0x20f2f9[_0x7c62('0x5f')]=_0x54d7d0[_0x7c62('0x5a')]({'plain':!![]});interaction_log[_0x7c62('0x1c')](_0x7c62('0x60'),_0x48e72b[_0x7c62('0x61')]['id'],_0x48e72b[_0x7c62('0x61')][_0x7c62('0x31')],_0x48e72b[_0x7c62('0x61')][_0x7c62('0x62')],_0x20f2f9[_0x7c62('0x5f')]['id'],_0x48e72b[_0x7c62('0x4e')]?JSON[_0x7c62('0x63')](_0x48e72b[_0x7c62('0x4e')]):_0x7c62('0x64'));return respondWithRpcPromise('AcceptMessage',_0x7c62('0x65'),_0x20f2f9);}return null;})[_0x7c62('0x1b')](function(_0x427f3e){var _0x247d70=_0x7c62('0x66')+_0x427f3e['message']['ContactId'];return db[_0x7c62('0x67')][_0x7c62('0x38')](_0x247d70,{'type':db['Sequelize']['QueryTypes'][_0x7c62('0x68')],'raw':!![]})[_0x7c62('0x1b')](function(_0x2fb8f0){return _0x2fb8f0;});})[_0x7c62('0x1b')](function(_0x4593fd){if(_0x4593fd){_0x20f2f9[_0x7c62('0x22')]['contact']=_0x4593fd[0x0];if(!_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x58')])return;return db[_0x7c62('0x69')][_0x7c62('0x4f')]({'where':{'id':_0x48e72b[_0x7c62('0x4e')]['UserId'],'role':_0x7c62('0x59')},'attributes':['id',_0x7c62('0x31'),'fullname',_0x7c62('0x6a'),_0x7c62('0x6b')],'raw':!![]});}return null;})[_0x7c62('0x1b')](function(_0x393cc3){if(!_0x393cc3)return null;_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x59')]=_0x393cc3;return _0x20f2f9;})[_0x7c62('0x1b')](function(_0xa97bef){if(_0xa97bef){if(_0x48e72b[_0x7c62('0x4e')][_0x7c62('0x6c')]){_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x6d')]=util[_0x7c62('0x56')](_0x7c62('0x6e'),_0x48e72b['user'][_0x7c62('0x31')]);_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x6f')]=_0x20f2f9[_0x7c62('0x6f')];_0x20f2f9['message']['motionChannel']=_0x20f2f9[_0x7c62('0x6f')];_0x20f2f9[_0x7c62('0x22')][_0x7c62('0x70')]='accept';return respondWithRpcPromise('EventManager',_0x7c62('0x71'),{'event':_0x7c62('0x72'),'message':_0x20f2f9[_0x7c62('0x22')]},client9002)[_0x7c62('0x1b')](function(){return _0x20f2f9;});}return _0x20f2f9;}return null;})[_0x7c62('0x1b')](respondWithResult(_0x1d2e53,null))['catch'](handleError(_0x1d2e53,null));};var interaction_log=require(_0x7c62('0x51'))('fax-interactions');exports[_0x7c62('0x2d')]=function(_0x193ccb,_0x46f53a,_0x1104b1){var _0x287b5c={'agent':{},'channel':_0x7c62('0x53')};if(_0x193ccb[_0x7c62('0x4e')]['id']){delete _0x193ccb[_0x7c62('0x4e')]['id'];}_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')]=_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')]||_0x193ccb['user']['id'];_0x287b5c[_0x7c62('0x59')]['id']=_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')];return db[_0x7c62('0x48')][_0x7c62('0x4f')]({'where':{'id':_0x193ccb[_0x7c62('0x4c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x46f53a,null))[_0x7c62('0x1b')](function(_0x1c974e){if(_0x1c974e){_0x287b5c[_0x7c62('0x22')]=_0x1c974e[_0x7c62('0x5a')]({'plain':!![]});return db['FaxInteraction'][_0x7c62('0x4f')]({'where':{'id':_0x1c974e[_0x7c62('0x5c')]}});}return null;})[_0x7c62('0x1b')](handleEntityNotFound(_0x46f53a,null))[_0x7c62('0x1b')](function(_0x1b4027){if(_0x1b4027){_0x287b5c[_0x7c62('0x5f')]=_0x1b4027[_0x7c62('0x5a')]({'plain':!![]});interaction_log[_0x7c62('0x1c')](_0x7c62('0x73'),_0x193ccb['user']['id'],_0x193ccb[_0x7c62('0x61')][_0x7c62('0x31')],_0x193ccb[_0x7c62('0x61')][_0x7c62('0x62')],_0x287b5c[_0x7c62('0x5f')]['id'],_0x193ccb[_0x7c62('0x4e')]?JSON[_0x7c62('0x63')](_0x193ccb[_0x7c62('0x4e')]):_0x7c62('0x64'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x287b5c);}return null;})[_0x7c62('0x1b')](function(_0x45fa9b){var _0x17d869=_0x7c62('0x66')+_0x45fa9b['message'][_0x7c62('0x74')];return db[_0x7c62('0x67')]['query'](_0x17d869,{'type':db['Sequelize']['QueryTypes'][_0x7c62('0x68')],'raw':!![]})['then'](function(_0x41bfb4){return _0x41bfb4;});})[_0x7c62('0x1b')](function(_0x37f8c9){if(_0x37f8c9){_0x287b5c[_0x7c62('0x22')][_0x7c62('0x75')]=_0x37f8c9[0x0];if(!_0x193ccb['body'][_0x7c62('0x58')])return;return db[_0x7c62('0x69')][_0x7c62('0x4f')]({'where':{'id':_0x193ccb[_0x7c62('0x4e')][_0x7c62('0x58')],'role':_0x7c62('0x59')},'attributes':['id',_0x7c62('0x31'),_0x7c62('0x76'),_0x7c62('0x6a'),_0x7c62('0x6b')],'raw':!![]});}return null;})[_0x7c62('0x1b')](function(_0xcfb069){if(!_0xcfb069)return null;_0x287b5c['message'][_0x7c62('0x59')]=_0xcfb069;return _0x287b5c;})[_0x7c62('0x1b')](function(_0x94484){if(_0x94484){_0x94484[_0x7c62('0x22')][_0x7c62('0x6d')]=util['format']('SIP/%s',_0x193ccb[_0x7c62('0x61')][_0x7c62('0x31')]);_0x94484['message'][_0x7c62('0x6f')]=_0x287b5c[_0x7c62('0x6f')];_0x94484[_0x7c62('0x22')][_0x7c62('0x77')]=_0x287b5c[_0x7c62('0x6f')];_0x94484[_0x7c62('0x22')][_0x7c62('0x70')]='reject';respondWithRpcPromise(_0x7c62('0x71'),_0x7c62('0x71'),{'event':_0x7c62('0x78'),'message':_0x94484[_0x7c62('0x22')]},client9002);return _0x287b5c;}return null;})[_0x7c62('0x1b')](respondWithResult(_0x46f53a,null))[_0x7c62('0x4d')](handleError(_0x46f53a,null));};exports[_0x7c62('0x79')]=function(_0x223972,_0x41cef7){var _0x12f99d;return db[_0x7c62('0x48')][_0x7c62('0x79')](_0x223972['body'],{})[_0x7c62('0x1b')](function(_0x44a305){_0x12f99d=_0x44a305;return db['CmContact'][_0x7c62('0x7a')]({'where':{'id':_0x12f99d[_0x7c62('0x74')]}});})[_0x7c62('0x1b')](function(_0x3bf1f8){if(_['isNil'](_0x3bf1f8)){return;}else{_0x12f99d['fax']=_0x3bf1f8['fax'];return db[_0x7c62('0x7b')]['findOne']({'where':{'id':_0x12f99d[_0x7c62('0x7c')]}});}})[_0x7c62('0x1b')](function(_0x4c5aa5){return respondWithRpcPromise('SendFax',_0x7c62('0x7d'),{'FaxAccountId':_[_0x7c62('0x5d')](_0x223972[_0x7c62('0x4e')])?undefined:_0x223972['body'][_0x7c62('0x7e')],'path':_[_0x7c62('0x5d')](_0x4c5aa5)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x4c5aa5['basename']),'fax':_[_0x7c62('0x5d')](_0x12f99d[_0x7c62('0x53')])?undefined:_0x12f99d[_0x7c62('0x53')],'AttachmentId':_0x12f99d[_0x7c62('0x7c')]},client9002);})[_0x7c62('0x1b')](respondWithResult(_0x41cef7,0xc9))[_0x7c62('0x4d')](handleError(_0x41cef7,null));};exports[_0x7c62('0x7f')]=function(_0x5b516c,_0x5e26dd){var _0x1c890a=path[_0x7c62('0x80')](config['root'],'server','files',_0x7c62('0x81'));return db[_0x7c62('0x48')]['find']({'where':{'id':_0x5b516c[_0x7c62('0x4c')]['id']},'include':[{'model':db[_0x7c62('0x7b')],'as':_0x7c62('0x7b')}]})[_0x7c62('0x1b')](handleEntityNotFound(_0x5e26dd,null))[_0x7c62('0x1b')](function(_0x2ec03d){if(_0x2ec03d){return _0x5e26dd[_0x7c62('0x7f')](path[_0x7c62('0x80')](_0x1c890a,_0x2ec03d['Attachment'][_0x7c62('0x82')]));}})[_0x7c62('0x4d')](handleError(_0x5e26dd,null));};
\ No newline at end of file
index 524093c..5b65dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21b7=['hook','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x21b7,0xef));var _0x721b=function(_0x3c52a4,_0x4505b0){_0x3c52a4=_0x3c52a4-0x0;var _0x32f62f=_0x21b7[_0x3c52a4];return _0x32f62f;};'use strict';var EventEmitter=require('events');var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x721b('0x0')](0x0);var events={'afterCreate':_0x721b('0x1'),'afterUpdate':_0x721b('0x2'),'afterDestroy':_0x721b('0x3')};function emitEvent(_0x574914){return function(_0x48a085,_0x893682,_0x1169bf){FaxMessageEvents[_0x721b('0x4')](_0x574914+':'+_0x48a085['id'],_0x48a085);FaxMessageEvents[_0x721b('0x4')](_0x574914,_0x48a085);_0x1169bf(null);};}for(var e in events){if(events[_0x721b('0x5')](e)){var event=events[e];FaxMessage[_0x721b('0x6')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xe062=['remove','emit','events','../../mysqldb','save','update'];(function(_0x57923c,_0x25f27b){var _0x48315c=function(_0x420052){while(--_0x420052){_0x57923c['push'](_0x57923c['shift']());}};_0x48315c(++_0x25f27b);}(_0xe062,0x1b8));var _0x2e06=function(_0x4a3702,_0x436801){_0x4a3702=_0x4a3702-0x0;var _0x3b40f7=_0xe062[_0x4a3702];return _0x3b40f7;};'use strict';var EventEmitter=require(_0x2e06('0x0'));var FaxMessage=require(_0x2e06('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2e06('0x2'),'afterUpdate':_0x2e06('0x3'),'afterDestroy':_0x2e06('0x4')};function emitEvent(_0x304308){return function(_0x361a02,_0x28e970,_0x22aacc){FaxMessageEvents[_0x2e06('0x5')](_0x304308+':'+_0x361a02['id'],_0x361a02);FaxMessageEvents[_0x2e06('0x5')](_0x304308,_0x361a02);_0x22aacc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 13207b4..7a6aa80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f1a=['UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','toLowerCase','catch','error','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','direction','out','isNil'];(function(_0x3ef1f0,_0x2963c6){var _0x3a0025=function(_0x55edef){while(--_0x55edef){_0x3ef1f0['push'](_0x3ef1f0['shift']());}};_0x3a0025(++_0x2963c6);}(_0x2f1a,0x1a0));var _0xa2f1=function(_0x117276,_0x2c725e){_0x117276=_0x117276-0x0;var _0x51b05f=_0x2f1a[_0x117276];return _0x51b05f;};'use strict';var _=require(_0xa2f1('0x0'));var util=require(_0xa2f1('0x1'));var logger=require('../../config/logger')(_0xa2f1('0x2'));var moment=require(_0xa2f1('0x3'));var BPromise=require(_0xa2f1('0x4'));var rp=require(_0xa2f1('0x5'));var fs=require('fs');var path=require(_0xa2f1('0x6'));var rimraf=require('rimraf');var config=require(_0xa2f1('0x7'));var attributes=require('./faxMessage.attributes');module[_0xa2f1('0x8')]=function(_0x4f07fd,_0x5daccf){return _0x4f07fd[_0xa2f1('0x9')](_0xa2f1('0xa'),attributes,{'tableName':_0xa2f1('0xb'),'paranoid':![],'indexes':[{'name':_0xa2f1('0xc'),'fields':[_0xa2f1('0xd')],'type':_0xa2f1('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x25ab93,_0xb7db75,_0x5c3cce){var _0x4739fe=_0x4f07fd[_0xa2f1('0xf')];var _0x59a060=_0x25ab93['get']({'plain':!![]});if(_0x59a060['direction']['toLowerCase']()==='in'||_0x59a060[_0xa2f1('0x10')]['toLowerCase']()===_0xa2f1('0x11')&&!_0x59a060['secret']&&!_[_0xa2f1('0x12')](_0x59a060[_0xa2f1('0x13')])){_0x4739fe[_0xa2f1('0x14')][_0xa2f1('0x15')]({'where':{'id':_0x59a060[_0xa2f1('0x16')]}})['then'](function(_0x29673f){if(_0x29673f){_0x29673f[_0xa2f1('0x17')]({'lastMsgAt':_0x59a060[_0xa2f1('0x18')],'lastMsgDirection':_0x59a060[_0xa2f1('0x10')][_0xa2f1('0x19')]()});}})[_0xa2f1('0x1a')](function(_0x2283d7){console[_0xa2f1('0x1b')](_0x2283d7);});}_0x5c3cce();}},'charset':_0xa2f1('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa7a2=['isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fti_fax_messages','body','models','get','direction','toLowerCase','out','secret'];(function(_0x45945c,_0x235b10){var _0x47353b=function(_0x50bf68){while(--_0x50bf68){_0x45945c['push'](_0x45945c['shift']());}};_0x47353b(++_0x235b10);}(_0xa7a2,0x13e));var _0x2a7a=function(_0x4db380,_0x4877d6){_0x4db380=_0x4db380-0x0;var _0x4da5fc=_0xa7a2[_0x4db380];return _0x4da5fc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2a7a('0x0'))(_0x2a7a('0x1'));var moment=require('moment');var BPromise=require(_0x2a7a('0x2'));var rp=require(_0x2a7a('0x3'));var fs=require('fs');var path=require(_0x2a7a('0x4'));var rimraf=require(_0x2a7a('0x5'));var config=require(_0x2a7a('0x6'));var attributes=require(_0x2a7a('0x7'));module['exports']=function(_0x5afaf0,_0x1d770b){return _0x5afaf0[_0x2a7a('0x8')](_0x2a7a('0x9'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x2a7a('0xa'),'fields':[_0x2a7a('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x533cc9,_0x3638fe,_0x43dc28){var _0x119ece=_0x5afaf0[_0x2a7a('0xc')];var _0x1782ea=_0x533cc9[_0x2a7a('0xd')]({'plain':!![]});if(_0x1782ea[_0x2a7a('0xe')][_0x2a7a('0xf')]()==='in'||_0x1782ea['direction']['toLowerCase']()===_0x2a7a('0x10')&&!_0x1782ea[_0x2a7a('0x11')]&&!_[_0x2a7a('0x12')](_0x1782ea[_0x2a7a('0x13')])){_0x119ece[_0x2a7a('0x14')][_0x2a7a('0x15')]({'where':{'id':_0x1782ea[_0x2a7a('0x16')]}})[_0x2a7a('0x17')](function(_0x1c1d9f){if(_0x1c1d9f){_0x1c1d9f['update']({'lastMsgAt':_0x1782ea[_0x2a7a('0x18')],'lastMsgDirection':_0x1782ea[_0x2a7a('0xe')][_0x2a7a('0xf')]()});}})[_0x2a7a('0x19')](function(_0x432649){console['error'](_0x432649);});}_0x43dc28();}},'charset':_0x2a7a('0x1a'),'collate':_0x2a7a('0x1b')});};
\ No newline at end of file
index 3ddd4e8..e35b902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['error','code','message','result','CreateFaxMessage','FaxMessage','body','options','then','UpdateFaxMessage','update','where','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0x5636,0x102));var _0x6563=function(_0x4b579e,_0x2b78d1){_0x4b579e=_0x4b579e-0x0;var _0x473216=_0x5636[_0x4b579e];return _0x473216;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6563('0x2'));var db=require(_0x6563('0x3'))['db'];var utils=require(_0x6563('0x4'));var logger=require('../../config/logger')(_0x6563('0x5'));var config=require(_0x6563('0x6'));var jayson=require(_0x6563('0x7'));var client=jayson[_0x6563('0x8')][_0x6563('0x9')]({'port':0x232a});config[_0x6563('0xa')]=_[_0x6563('0xb')](config[_0x6563('0xa')],{'host':_0x6563('0xc'),'port':0x18eb});var socket=require(_0x6563('0xd'))(new Redis(config[_0x6563('0xa')]));require(_0x6563('0xe'))[_0x6563('0xf')](socket);function respondWithRpcPromise(_0x516d1a,_0x51fdc2,_0x2946f3){return new BPromise(function(_0x129fa3,_0x490a56){return client['request'](_0x516d1a,_0x2946f3)['then'](function(_0x1ef002){logger[_0x6563('0x10')](_0x6563('0x11'),_0x51fdc2,_0x6563('0x12'));logger[_0x6563('0x13')](_0x6563('0x14'),_0x51fdc2,_0x6563('0x12'),JSON[_0x6563('0x15')](_0x1ef002));if(_0x1ef002[_0x6563('0x16')]){if(_0x1ef002['error'][_0x6563('0x17')]===0x1f4){logger['error'](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x490a56(_0x1ef002[_0x6563('0x16')]['message']);}logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x129fa3(_0x1ef002['error'][_0x6563('0x18')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x51fdc2,'request\x20sent');_0x129fa3(_0x1ef002[_0x6563('0x19')]['message']);}})['catch'](function(_0x27651b){logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x27651b);_0x490a56(_0x27651b);});});}exports[_0x6563('0x1a')]=function(_0xf8b544){var _0x10811d=this;return new Promise(function(_0x37ba3,_0x93a45){return db[_0x6563('0x1b')]['create'](_0xf8b544[_0x6563('0x1c')],{'raw':_0xf8b544[_0x6563('0x1d')]?_0xf8b544[_0x6563('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x6563('0x1e')](function(_0x5c37bb){logger[_0x6563('0x10')](_0x6563('0x1a'),_0xf8b544);logger['debug']('CreateFaxMessage',_0xf8b544,JSON[_0x6563('0x15')](_0x5c37bb));_0x37ba3(_0x5c37bb);})['catch'](function(_0x1097d0){logger[_0x6563('0x16')](_0x6563('0x1a'),_0x1097d0['message'],_0xf8b544);_0x93a45(_0x10811d[_0x6563('0x16')](0x1f4,_0x1097d0['message']));});});};exports[_0x6563('0x1f')]=function(_0x1590e6){var _0x5e5aeb=this;return new Promise(function(_0x365b16,_0x28252d){return db['FaxMessage'][_0x6563('0x20')](_0x1590e6['body'],{'raw':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')][_0x6563('0x21')]||null:null,'attributes':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')]['attributes']||null:null,'limit':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['limit']||null:null})[_0x6563('0x1e')](function(_0x35af37){logger[_0x6563('0x10')](_0x6563('0x1f'),_0x1590e6);logger[_0x6563('0x13')](_0x6563('0x1f'),_0x1590e6,JSON[_0x6563('0x15')](_0x35af37));_0x365b16(_0x35af37);})[_0x6563('0x22')](function(_0x101b24){logger[_0x6563('0x16')]('UpdateFaxMessage',_0x101b24[_0x6563('0x18')],_0x1590e6);_0x28252d(_0x5e5aeb[_0x6563('0x16')](0x1f4,_0x101b24[_0x6563('0x18')]));});});};
\ No newline at end of file
+var _0x7bae=['request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxMessage,\x20%s,\x20%s','create','body','options','raw','CreateFaxMessage','debug','FaxMessage','update','where','limit','UpdateFaxMessage','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','request','then','info'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7bae,0x13b));var _0xe7ba=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x7bae[_0x24237f];return _0x48298e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7ba('0x0'));var BPromise=require(_0xe7ba('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7ba('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7ba('0x3'));var logger=require(_0xe7ba('0x4'))(_0xe7ba('0x5'));var config=require(_0xe7ba('0x6'));var jayson=require(_0xe7ba('0x7'));var client=jayson[_0xe7ba('0x8')][_0xe7ba('0x9')]({'port':0x232a});config[_0xe7ba('0xa')]=_[_0xe7ba('0xb')](config[_0xe7ba('0xa')],{'host':_0xe7ba('0xc'),'port':0x18eb});var socket=require(_0xe7ba('0xd'))(new Redis(config[_0xe7ba('0xa')]));require(_0xe7ba('0xe'))['register'](socket);function respondWithRpcPromise(_0x3df8bf,_0xe57e33,_0x375ebb){return new BPromise(function(_0x276bc3,_0x15083a){return client[_0xe7ba('0xf')](_0x3df8bf,_0x375ebb)[_0xe7ba('0x10')](function(_0x448bcc){logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0xe7ba('0x12'));logger['debug'](_0xe7ba('0x13'),_0xe57e33,_0xe7ba('0x12'),JSON[_0xe7ba('0x14')](_0x448bcc));if(_0x448bcc[_0xe7ba('0x15')]){if(_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x16')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x17')]);return _0x15083a(_0x448bcc[_0xe7ba('0x15')]['message']);}logger[_0xe7ba('0x15')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc['error']['message']);return _0x276bc3(_0x448bcc[_0xe7ba('0x15')]['message']);}else{logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,'request\x20sent');_0x276bc3(_0x448bcc['result'][_0xe7ba('0x17')]);}})[_0xe7ba('0x18')](function(_0x39ca38){logger[_0xe7ba('0x15')](_0xe7ba('0x19'),_0xe57e33,_0x39ca38);_0x15083a(_0x39ca38);});});}exports['CreateFaxMessage']=function(_0x149c62){var _0x20c653=this;return new Promise(function(_0x3b40fb,_0x136ec6){return db['FaxMessage'][_0xe7ba('0x1a')](_0x149c62[_0xe7ba('0x1b')],{'raw':_0x149c62['options']?_0x149c62[_0xe7ba('0x1c')][_0xe7ba('0x1d')]===undefined?!![]:![]:!![]})[_0xe7ba('0x10')](function(_0x7ab9e4){logger[_0xe7ba('0x11')](_0xe7ba('0x1e'),_0x149c62);logger[_0xe7ba('0x1f')](_0xe7ba('0x1e'),_0x149c62,JSON[_0xe7ba('0x14')](_0x7ab9e4));_0x3b40fb(_0x7ab9e4);})[_0xe7ba('0x18')](function(_0x58cf43){logger['error']('CreateFaxMessage',_0x58cf43['message'],_0x149c62);_0x136ec6(_0x20c653[_0xe7ba('0x15')](0x1f4,_0x58cf43['message']));});});};exports['UpdateFaxMessage']=function(_0x5ece11){var _0x255def=this;return new Promise(function(_0x32cc00,_0xe32862){return db[_0xe7ba('0x20')][_0xe7ba('0x21')](_0x5ece11[_0xe7ba('0x1b')],{'raw':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11['options'][_0xe7ba('0x22')]||null:null,'attributes':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['attributes']||null:null,'limit':_0x5ece11['options']?_0x5ece11[_0xe7ba('0x1c')][_0xe7ba('0x23')]||null:null})[_0xe7ba('0x10')](function(_0x20b6cd){logger[_0xe7ba('0x11')]('UpdateFaxMessage',_0x5ece11);logger[_0xe7ba('0x1f')](_0xe7ba('0x24'),_0x5ece11,JSON['stringify'](_0x20b6cd));_0x32cc00(_0x20b6cd);})[_0xe7ba('0x18')](function(_0x530227){logger['error'](_0xe7ba('0x24'),_0x530227[_0xe7ba('0x17')],_0x5ece11);_0xe32862(_0x255def[_0xe7ba('0x15')](0x1f4,_0x530227['message']));});});};
\ No newline at end of file
index 828216d..932aa35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a1d=['update','removeListener','register','faxMessage:','./faxMessage.events','save','remove'];(function(_0x2801f2,_0x542a6c){var _0x585fd6=function(_0x2df72d){while(--_0x2df72d){_0x2801f2['push'](_0x2801f2['shift']());}};_0x585fd6(++_0x542a6c);}(_0x8a1d,0xac));var _0xd8a1=function(_0x32d8a2,_0x431a3c){_0x32d8a2=_0x32d8a2-0x0;var _0x3409ea=_0x8a1d[_0x32d8a2];return _0x3409ea;};'use strict';var FaxMessageEvents=require(_0xd8a1('0x0'));var events=[_0xd8a1('0x1'),_0xd8a1('0x2'),_0xd8a1('0x3')];function createListener(_0x4b3b14,_0x1a5d73){return function(_0x1aa39a){_0x1a5d73['emit'](_0x4b3b14,_0x1aa39a);};}function removeListener(_0x45d0e8,_0x4c49dc){return function(){FaxMessageEvents[_0xd8a1('0x4')](_0x45d0e8,_0x4c49dc);};}exports[_0xd8a1('0x5')]=function(_0x120785){for(var _0x2445b7=0x0,_0x5676ca=events['length'];_0x2445b7<_0x5676ca;_0x2445b7++){var _0x3a5271=events[_0x2445b7];var _0x4a90bd=createListener(_0xd8a1('0x6')+_0x3a5271,_0x120785);FaxMessageEvents['on'](_0x3a5271,_0x4a90bd);}};
\ No newline at end of file
+var _0xd21e=['remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events','save'];(function(_0x2d863a,_0x2af20c){var _0x2a9db2=function(_0x5e06eb){while(--_0x5e06eb){_0x2d863a['push'](_0x2d863a['shift']());}};_0x2a9db2(++_0x2af20c);}(_0xd21e,0x154));var _0xed21=function(_0x55e6c0,_0xfbe3c1){_0x55e6c0=_0x55e6c0-0x0;var _0x39adbb=_0xd21e[_0x55e6c0];return _0x39adbb;};'use strict';var FaxMessageEvents=require(_0xed21('0x0'));var events=[_0xed21('0x1'),_0xed21('0x2'),_0xed21('0x3')];function createListener(_0x20a4bc,_0x1fc713){return function(_0x117ccf){_0x1fc713[_0xed21('0x4')](_0x20a4bc,_0x117ccf);};}function removeListener(_0x5b96d4,_0x27e233){return function(){FaxMessageEvents[_0xed21('0x5')](_0x5b96d4,_0x27e233);};}exports[_0xed21('0x6')]=function(_0x374a0f){for(var _0x44223c=0x0,_0x35750d=events[_0xed21('0x7')];_0x44223c<_0x35750d;_0x44223c++){var _0x3f500d=events[_0x44223c];var _0x149183=createListener(_0xed21('0x8')+_0x3f500d,_0x374a0f);FaxMessageEvents['on'](_0x3f500d,_0x149183);}};
\ No newline at end of file
index 1f50c00..bc5191f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/download','download','post','tracked','fax','create','put','update','/:id/accept','accept','reject','delete','destroy','exports','multer','util','express'];(function(_0x499880,_0xfc1596){var _0x1bcf0e=function(_0x92f6d9){while(--_0x92f6d9){_0x499880['push'](_0x499880['shift']());}};_0x1bcf0e(++_0xfc1596);}(_0xda55,0x6d));var _0x5da5=function(_0xc1136d,_0x3d339f){_0xc1136d=_0xc1136d-0x0;var _0x3ba510=_0xda55[_0xc1136d];return _0x3ba510;};'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['get'](_0x5da5('0xe'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xf')]);router[_0x5da5('0x10')]('/',auth[_0x5da5('0x8')](),interaction[_0x5da5('0x11')](_0x5da5('0x12'),'faxmessage:create'),controller[_0x5da5('0x13')]);router[_0x5da5('0x14')]('/:id',auth[_0x5da5('0x8')](),controller[_0x5da5('0x15')]);router[_0x5da5('0x14')](_0x5da5('0x16'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x17')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x5da5('0x18')]);router[_0x5da5('0x19')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x1a')]);module[_0x5da5('0x1b')]=router;
\ No newline at end of file
+var _0x6e6c=['reject','/:id','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','accept','/:id/reject'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6e6c[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var path=require('path');var timeout=require(_0xc6e6('0x2'));var express=require(_0xc6e6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc6e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc6e6('0x5'));var controller=require('./faxMessage.controller');router[_0xc6e6('0x6')]('/',auth[_0xc6e6('0x7')](),controller['index']);router[_0xc6e6('0x6')](_0xc6e6('0x8'),auth['isAuthenticated'](),controller[_0xc6e6('0x9')]);router[_0xc6e6('0x6')]('/:id',auth[_0xc6e6('0x7')](),controller['show']);router[_0xc6e6('0x6')](_0xc6e6('0xa'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xb')]);router[_0xc6e6('0xc')]('/',auth[_0xc6e6('0x7')](),interaction[_0xc6e6('0xd')](_0xc6e6('0xe'),_0xc6e6('0xf')),controller['create']);router[_0xc6e6('0x10')]('/:id',auth[_0xc6e6('0x7')](),controller[_0xc6e6('0x11')]);router[_0xc6e6('0x10')](_0xc6e6('0x12'),auth['isAuthenticated'](),controller[_0xc6e6('0x13')]);router[_0xc6e6('0x10')](_0xc6e6('0x14'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0x15')]);router['delete'](_0xc6e6('0x16'),auth[_0xc6e6('0x7')](),controller['destroy']);module[_0xc6e6('0x17')]=router;
\ No newline at end of file
index 5b0c55f..502f087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd21=['rrmemory','beepall','roundrobin','sequelize','exports','name','STRING','INTEGER','ENUM'];(function(_0x9dbfd4,_0xfe06b5){var _0x234639=function(_0x19b58a){while(--_0x19b58a){_0x9dbfd4['push'](_0x9dbfd4['shift']());}};_0x234639(++_0xfe06b5);}(_0xfd21,0x159));var _0x1fd2=function(_0x5ccdd5,_0x137596){_0x5ccdd5=_0x5ccdd5-0x0;var _0x2bb303=_0xfd21[_0x5ccdd5];return _0x2bb303;};'use strict';var Sequelize=require(_0x1fd2('0x0'));module[_0x1fd2('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1fd2('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1fd2('0x3')]},'timeout':{'type':Sequelize[_0x1fd2('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1fd2('0x5')](_0x1fd2('0x6'),_0x1fd2('0x7'),_0x1fd2('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x1fd2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe961=['ENUM','beepall','roundrobin','name','INTEGER'];(function(_0x3e7e4a,_0x43a338){var _0x853ff0=function(_0x5b58b1){while(--_0x5b58b1){_0x3e7e4a['push'](_0x3e7e4a['shift']());}};_0x853ff0(++_0x43a338);}(_0xe961,0x11b));var _0x1e96=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xe961[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x1e96('0x0'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x1e96('0x1')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1e96('0x2')]('rrmemory',_0x1e96('0x3'),_0x1e96('0x4')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x1e96('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index cf9e3bc..6e2a014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e4b=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','FaxQueues','UserProfileResource','error','stack','name','send','index','map','FaxQueue','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','findAll','rows','catch','params','rawAttributes','find','create','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserFaxQueue','FaxQueueId','User','findAndCountAll','agent','updatedAt','format','%s/%s','SIP','faxPause','createdAt','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','removeTeams','ids','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all','compact','value','removeAgents','userFaxQueue:remove','addAgents','omit','userFaxQueue:save','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x3a5648,_0x58054e){var _0x34126d=function(_0x3a6476){while(--_0x3a6476){_0x3a5648['push'](_0x3a5648['shift']());}};_0x34126d(++_0x58054e);}(_0x3e4b,0x74));var _0xb3e4=function(_0x354ab9,_0x423d18){_0x354ab9=_0x354ab9-0x0;var _0x51105f=_0x3e4b[_0x354ab9];return _0x51105f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb3e4('0x0'));var zipdir=require(_0xb3e4('0x1'));var jsonpatch=require(_0xb3e4('0x2'));var rp=require(_0xb3e4('0x3'));var moment=require(_0xb3e4('0x4'));var BPromise=require(_0xb3e4('0x5'));var Mustache=require(_0xb3e4('0x6'));var util=require(_0xb3e4('0x7'));var path=require(_0xb3e4('0x8'));var sox=require(_0xb3e4('0x9'));var csv=require('to-csv');var ejs=require(_0xb3e4('0xa'));var fs=require('fs');var fs_extra=require(_0xb3e4('0xb'));var _=require(_0xb3e4('0xc'));var squel=require('squel');var crypto=require(_0xb3e4('0xd'));var jsforce=require(_0xb3e4('0xe'));var deskjs=require(_0xb3e4('0xf'));var toCsv=require(_0xb3e4('0x10'));var querystring=require(_0xb3e4('0x11'));var Papa=require(_0xb3e4('0x12'));var Redis=require('ioredis');var authService=require(_0xb3e4('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb3e4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb3e4('0x15'))(_0xb3e4('0x16'));var utils=require(_0xb3e4('0x17'));var config=require(_0xb3e4('0x18'));var licenseUtil=require(_0xb3e4('0x19'));var db=require(_0xb3e4('0x1a'))['db'];config[_0xb3e4('0x1b')]=_[_0xb3e4('0x1c')](config[_0xb3e4('0x1b')],{'host':_0xb3e4('0x1d'),'port':0x18eb});var socket=require(_0xb3e4('0x1e'))(new Redis(config[_0xb3e4('0x1b')]));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x5b5171,_0x233363){_0x233363=_0x233363||0xcc;return function(_0x5571b2){if(_0x5571b2){return _0x5b5171[_0xb3e4('0x1f')](_0x233363);}return _0x5b5171[_0xb3e4('0x20')](_0x233363)['end']();};}function respondWithResult(_0x15c1a0,_0x4d1062){_0x4d1062=_0x4d1062||0xc8;return function(_0x450ed4){if(_0x450ed4){return _0x15c1a0['status'](_0x4d1062)[_0xb3e4('0x21')](_0x450ed4);}};}function respondWithFilteredResult(_0x5a97b6,_0x5cc76d){return function(_0x1b3445){if(_0x1b3445){var _0x24d025=typeof _0x5cc76d[_0xb3e4('0x22')]===_0xb3e4('0x23')&&typeof _0x5cc76d[_0xb3e4('0x24')]==='undefined';var _0x3aa9af=_0x1b3445[_0xb3e4('0x25')];var _0x3cc7b8=_0x24d025?0x0:_0x5cc76d[_0xb3e4('0x22')];var _0x415af3=_0x24d025?_0x1b3445['count']:_0x5cc76d['offset']+_0x5cc76d[_0xb3e4('0x24')];var _0x2c2dbf;if(_0x415af3>=_0x3aa9af){_0x415af3=_0x3aa9af;_0x2c2dbf=0xc8;}else{_0x2c2dbf=0xce;}_0x5a97b6[_0xb3e4('0x20')](_0x2c2dbf);return _0x5a97b6['set'](_0xb3e4('0x26'),_0x3cc7b8+'-'+_0x415af3+'/'+_0x3aa9af)[_0xb3e4('0x21')](_0x1b3445);}return null;};}function patchUpdates(_0x459ccc){return function(_0x3a09c9){try{jsonpatch[_0xb3e4('0x27')](_0x3a09c9,_0x459ccc,!![]);}catch(_0x6cef48){return BPromise[_0xb3e4('0x28')](_0x6cef48);}return _0x3a09c9['save']();};}function saveUpdates(_0x6004da,_0x1107e1){return function(_0x73b0fc){if(_0x73b0fc){return _0x73b0fc[_0xb3e4('0x29')](_0x6004da)[_0xb3e4('0x2a')](function(_0x25fa65){return _0x25fa65;});}return null;};}function removeEntity(_0x23ee78,_0x454f2d){return function(_0x40aa57){if(_0x40aa57){return _0x40aa57[_0xb3e4('0x2b')]()[_0xb3e4('0x2a')](function(){var _0x5b4fa1=_0x40aa57[_0xb3e4('0x2c')]({'plain':!![]});var _0x33bdbc=_0xb3e4('0x2d');return db[_0xb3e4('0x2e')][_0xb3e4('0x2b')]({'where':{'type':_0x33bdbc,'resourceId':_0x5b4fa1['id']}})[_0xb3e4('0x2a')](function(){return _0x40aa57;});})['then'](function(){_0x23ee78[_0xb3e4('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa8e29a,_0x5eb746){return function(_0x4ea365){if(!_0x4ea365){_0xa8e29a[_0xb3e4('0x1f')](0x194);}return _0x4ea365;};}function handleError(_0x26540b,_0xf2b47c){_0xf2b47c=_0xf2b47c||0x1f4;return function(_0x453d4c){logger[_0xb3e4('0x2f')](_0x453d4c[_0xb3e4('0x30')]);if(_0x453d4c['name']){delete _0x453d4c[_0xb3e4('0x31')];}_0x26540b['status'](_0xf2b47c)[_0xb3e4('0x32')](_0x453d4c);};}exports[_0xb3e4('0x33')]=function(_0x496369,_0x203144){var _0x5a6662={},_0x137580={},_0x51f32b={'count':0x0,'rows':[]};var _0x3a0b6f=_[_0xb3e4('0x34')](db[_0xb3e4('0x35')]['rawAttributes'],function(_0x1e194a){return{'name':_0x1e194a[_0xb3e4('0x36')],'type':_0x1e194a[_0xb3e4('0x37')][_0xb3e4('0x38')]};});_0x137580[_0xb3e4('0x39')]=_[_0xb3e4('0x34')](_0x3a0b6f,_0xb3e4('0x31'));_0x137580[_0xb3e4('0x3a')]=_[_0xb3e4('0x3b')](_0x496369[_0xb3e4('0x3a')]);_0x137580['filters']=_['intersection'](_0x137580[_0xb3e4('0x39')],_0x137580['query']);_0x5a6662[_0xb3e4('0x3c')]=_[_0xb3e4('0x3d')](_0x137580['model'],qs['fields'](_0x496369[_0xb3e4('0x3a')][_0xb3e4('0x3e')]));_0x5a6662[_0xb3e4('0x3c')]=_0x5a6662['attributes'][_0xb3e4('0x3f')]?_0x5a6662[_0xb3e4('0x3c')]:_0x137580[_0xb3e4('0x39')];if(!_0x496369[_0xb3e4('0x3a')][_0xb3e4('0x40')](_0xb3e4('0x41'))){_0x5a6662[_0xb3e4('0x24')]=qs[_0xb3e4('0x24')](_0x496369[_0xb3e4('0x3a')]['limit']);_0x5a6662[_0xb3e4('0x22')]=qs[_0xb3e4('0x22')](_0x496369[_0xb3e4('0x3a')][_0xb3e4('0x22')]);}_0x5a6662[_0xb3e4('0x42')]=qs['sort'](_0x496369[_0xb3e4('0x3a')][_0xb3e4('0x43')]);_0x5a6662['where']=qs[_0xb3e4('0x44')](_[_0xb3e4('0x45')](_0x496369[_0xb3e4('0x3a')],_0x137580['filters']),_0x3a0b6f);if(_0x496369[_0xb3e4('0x3a')][_0xb3e4('0x46')]){_0x5a6662[_0xb3e4('0x47')]=_[_0xb3e4('0x48')](_0x5a6662['where'],{'$or':_[_0xb3e4('0x34')](_0x3a0b6f,function(_0x2d4cc0){if(_0x2d4cc0['type']!=='VIRTUAL'){var _0x458676={};_0x458676[_0x2d4cc0['name']]={'$like':'%'+_0x496369[_0xb3e4('0x3a')]['filter']+'%'};return _0x458676;}})});}_0x5a6662=_[_0xb3e4('0x48')]({},_0x5a6662,_0x496369[_0xb3e4('0x49')]);var _0x5e9676={'where':_0x5a6662[_0xb3e4('0x47')]};return db[_0xb3e4('0x35')][_0xb3e4('0x25')](_0x5e9676)[_0xb3e4('0x2a')](function(_0x3df190){_0x51f32b[_0xb3e4('0x25')]=_0x3df190;if(_0x496369[_0xb3e4('0x3a')]['includeAll']){_0x5a6662['include']=[{'all':!![]}];}return db[_0xb3e4('0x35')][_0xb3e4('0x4a')](_0x5a6662);})[_0xb3e4('0x2a')](function(_0x3edec7){_0x51f32b[_0xb3e4('0x4b')]=_0x3edec7;return _0x51f32b;})[_0xb3e4('0x2a')](respondWithFilteredResult(_0x203144,_0x5a6662))[_0xb3e4('0x4c')](handleError(_0x203144,null));};exports['show']=function(_0x56d786,_0x4b1e52){var _0x54a18d={'raw':!![],'where':{'id':_0x56d786[_0xb3e4('0x4d')]['id']}},_0x21ff82={};_0x21ff82[_0xb3e4('0x39')]=_['keys'](db[_0xb3e4('0x35')][_0xb3e4('0x4e')]);_0x21ff82[_0xb3e4('0x3a')]=_[_0xb3e4('0x3b')](_0x56d786[_0xb3e4('0x3a')]);_0x21ff82['filters']=_['intersection'](_0x21ff82[_0xb3e4('0x39')],_0x21ff82[_0xb3e4('0x3a')]);_0x54a18d[_0xb3e4('0x3c')]=_[_0xb3e4('0x3d')](_0x21ff82[_0xb3e4('0x39')],qs['fields'](_0x56d786[_0xb3e4('0x3a')][_0xb3e4('0x3e')]));_0x54a18d[_0xb3e4('0x3c')]=_0x54a18d[_0xb3e4('0x3c')]['length']?_0x54a18d['attributes']:_0x21ff82['model'];if(_0x56d786[_0xb3e4('0x3a')]['includeAll']){_0x54a18d['include']=[{'all':!![]}];}_0x54a18d=_['merge']({},_0x54a18d,_0x56d786['options']);return db[_0xb3e4('0x35')][_0xb3e4('0x4f')](_0x54a18d)[_0xb3e4('0x2a')](handleEntityNotFound(_0x4b1e52,null))['then'](respondWithResult(_0x4b1e52,null))[_0xb3e4('0x4c')](handleError(_0x4b1e52,null));};exports[_0xb3e4('0x50')]=function(_0x4d8b35,_0x158801){return db[_0xb3e4('0x35')][_0xb3e4('0x50')](_0x4d8b35['body'],{})[_0xb3e4('0x2a')](function(_0x32a6bc){var _0x404dda=_0x4d8b35[_0xb3e4('0x51')][_0xb3e4('0x2c')]({'plain':!![]});if(!_0x404dda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x404dda[_0xb3e4('0x52')]===_0xb3e4('0x51')){var _0x8d7299=_0x32a6bc[_0xb3e4('0x2c')]({'plain':!![]});var _0x359a35=_0xb3e4('0x2d');return db[_0xb3e4('0x53')][_0xb3e4('0x4f')]({'where':{'name':_0x359a35,'userProfileId':_0x404dda[_0xb3e4('0x54')]},'raw':!![]})[_0xb3e4('0x2a')](function(_0x23b072){if(_0x23b072&&_0x23b072['autoAssociation']===0x0){return db['UserProfileResource'][_0xb3e4('0x50')]({'name':_0x8d7299['name'],'resourceId':_0x8d7299['id'],'type':_0x23b072[_0xb3e4('0x31')],'sectionId':_0x23b072['id']},{})[_0xb3e4('0x2a')](function(){return _0x32a6bc;});}else{return _0x32a6bc;}})[_0xb3e4('0x4c')](function(_0x418d5a){logger[_0xb3e4('0x2f')](_0xb3e4('0x55'),_0x418d5a);throw _0x418d5a;});}return _0x32a6bc;})[_0xb3e4('0x2a')](respondWithResult(_0x158801,0xc9))[_0xb3e4('0x4c')](handleError(_0x158801,null));};exports['update']=function(_0x34f8e9,_0x1e8f97){if(_0x34f8e9[_0xb3e4('0x56')]['id']){delete _0x34f8e9[_0xb3e4('0x56')]['id'];}return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0x34f8e9['params']['id']}})[_0xb3e4('0x2a')](handleEntityNotFound(_0x1e8f97,null))[_0xb3e4('0x2a')](saveUpdates(_0x34f8e9[_0xb3e4('0x56')],null))[_0xb3e4('0x2a')](respondWithResult(_0x1e8f97,null))['catch'](handleError(_0x1e8f97,null));};exports['destroy']=function(_0x551d4f,_0x28189d){return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0x551d4f['params']['id']}})[_0xb3e4('0x2a')](handleEntityNotFound(_0x28189d,null))[_0xb3e4('0x2a')](removeEntity(_0x28189d,null))[_0xb3e4('0x4c')](handleError(_0x28189d,null));};exports['describe']=function(_0x1f91f3,_0x14e21e){return db[_0xb3e4('0x35')][_0xb3e4('0x57')]()[_0xb3e4('0x2a')](respondWithResult(_0x14e21e,null))['catch'](handleError(_0x14e21e,null));};exports['getMembers']=function(_0x5acc6a,_0x271e57,_0x853e7f){var _0xb352e2={'raw':!![],'where':{}},_0x4c184d={},_0x3d799f;return db[_0xb3e4('0x35')][_0xb3e4('0x58')]({'where':{'id':_0x5acc6a[_0xb3e4('0x4d')]['id']}})['then'](handleEntityNotFound(_0x271e57,null))[_0xb3e4('0x2a')](function(_0x48041f){if(_0x48041f){_0x3d799f=_0x48041f[_0xb3e4('0x2c')]({'plain':!![]});_0x4c184d['model']=_[_0xb3e4('0x3b')](db[_0xb3e4('0x59')][_0xb3e4('0x4e')]);_0x4c184d['query']=_['keys'](_0x5acc6a[_0xb3e4('0x3a')]);_0x4c184d[_0xb3e4('0x44')]=_['intersection'](_0x4c184d[_0xb3e4('0x39')],_0x4c184d[_0xb3e4('0x3a')]);_0xb352e2[_0xb3e4('0x3c')]=_[_0xb3e4('0x3d')](_0x4c184d[_0xb3e4('0x39')],qs[_0xb3e4('0x3e')](_0x5acc6a[_0xb3e4('0x3a')]['fields']));_0xb352e2[_0xb3e4('0x3c')]=_0xb352e2['attributes']['length']?_0xb352e2[_0xb3e4('0x3c')]:_0x4c184d[_0xb3e4('0x39')];if(!_0x5acc6a[_0xb3e4('0x3a')][_0xb3e4('0x40')]('nolimit')){_0xb352e2[_0xb3e4('0x24')]=qs[_0xb3e4('0x24')](_0x5acc6a['query'][_0xb3e4('0x24')]);_0xb352e2[_0xb3e4('0x22')]=qs[_0xb3e4('0x22')](_0x5acc6a[_0xb3e4('0x3a')][_0xb3e4('0x22')]);}_0xb352e2[_0xb3e4('0x42')]=qs['sort'](_0x5acc6a[_0xb3e4('0x3a')][_0xb3e4('0x43')]);_0xb352e2[_0xb3e4('0x47')]=qs['filters'](_[_0xb3e4('0x45')](_0x5acc6a[_0xb3e4('0x3a')],_0x4c184d[_0xb3e4('0x44')]));_0xb352e2[_0xb3e4('0x47')][_0xb3e4('0x5a')]=_0x48041f['id'];if(_0x5acc6a['query'][_0xb3e4('0x46')]){_0xb352e2[_0xb3e4('0x47')]=_[_0xb3e4('0x48')](_0xb352e2[_0xb3e4('0x47')],{'$or':_['map'](_0xb352e2[_0xb3e4('0x3c')],function(_0x21f6f6){var _0x3725d5={};_0x3725d5[_0x21f6f6]={'$like':'%'+_0x5acc6a[_0xb3e4('0x3a')][_0xb3e4('0x46')]+'%'};return _0x3725d5;})});}_0xb352e2=_[_0xb3e4('0x48')]({},_0xb352e2,_0x5acc6a[_0xb3e4('0x49')]);return db[_0xb3e4('0x59')][_0xb3e4('0x4a')](_0xb352e2);}})[_0xb3e4('0x2a')](function(_0x24fcc6){if(_0x24fcc6){return db[_0xb3e4('0x5b')][_0xb3e4('0x5c')]({'where':{'id':_[_0xb3e4('0x34')](_0x24fcc6,'UserId'),'role':_0xb3e4('0x5d')},'attributes':['id',_0xb3e4('0x31'),'faxPause',_0xb3e4('0x5e'),'createdAt']});}})['then'](function(_0x226a55){if(_0x226a55){return{'count':_0x226a55[_0xb3e4('0x25')],'rows':_['map'](_0x226a55['rows'],function(_0x5ab8ce){return{'membername':_0x5ab8ce[_0xb3e4('0x31')],'UserId':_0x5ab8ce['id'],'queue_name':_0x3d799f['name'],'FaxQueueId':_0x3d799f['id'],'interface':util[_0xb3e4('0x5f')](_0xb3e4('0x60'),_0xb3e4('0x61'),_0x5ab8ce[_0xb3e4('0x31')]),'penalty':0x0,'paused':_0x5ab8ce[_0xb3e4('0x62')],'createdAt':_0x5ab8ce[_0xb3e4('0x63')],'updatedAt':_0x5ab8ce[_0xb3e4('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb3e4('0x2a')](respondWithFilteredResult(_0x271e57,_0xb352e2))[_0xb3e4('0x4c')](handleError(_0x271e57,null));};exports['getTeams']=function(_0x1c98a1,_0x3e8b1d,_0x5d3538){var _0x3cd6de={};var _0x3ea4ab={};var _0x30384f;var _0x8b23fd;return db[_0xb3e4('0x35')]['findOne']({'where':{'id':_0x1c98a1[_0xb3e4('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3e8b1d,null))[_0xb3e4('0x2a')](function(_0x472ffb){if(_0x472ffb){_0x30384f=_0x472ffb;_0x3ea4ab[_0xb3e4('0x39')]=_[_0xb3e4('0x3b')](db[_0xb3e4('0x64')][_0xb3e4('0x4e')]);_0x3ea4ab[_0xb3e4('0x3a')]=_[_0xb3e4('0x3b')](_0x1c98a1[_0xb3e4('0x3a')]);_0x3ea4ab[_0xb3e4('0x44')]=_['intersection'](_0x3ea4ab[_0xb3e4('0x39')],_0x3ea4ab[_0xb3e4('0x3a')]);_0x3cd6de[_0xb3e4('0x3c')]=_[_0xb3e4('0x3d')](_0x3ea4ab[_0xb3e4('0x39')],qs[_0xb3e4('0x3e')](_0x1c98a1[_0xb3e4('0x3a')][_0xb3e4('0x3e')]));_0x3cd6de[_0xb3e4('0x3c')]=_0x3cd6de[_0xb3e4('0x3c')][_0xb3e4('0x3f')]?_0x3cd6de[_0xb3e4('0x3c')]:_0x3ea4ab['model'];_0x3cd6de[_0xb3e4('0x42')]=qs['sort'](_0x1c98a1['query'][_0xb3e4('0x43')]);_0x3cd6de[_0xb3e4('0x47')]=qs[_0xb3e4('0x44')](_['pick'](_0x1c98a1['query'],_0x3ea4ab[_0xb3e4('0x44')]));if(_0x1c98a1[_0xb3e4('0x3a')][_0xb3e4('0x46')]){_0x3cd6de[_0xb3e4('0x47')]=_['merge'](_0x3cd6de[_0xb3e4('0x47')],{'$or':_[_0xb3e4('0x34')](_0x3cd6de['attributes'],function(_0x22865d){var _0xbebaf5={};_0xbebaf5[_0x22865d]={'$like':'%'+_0x1c98a1[_0xb3e4('0x3a')]['filter']+'%'};return _0xbebaf5;})});}_0x3cd6de=_[_0xb3e4('0x48')]({},_0x3cd6de,_0x1c98a1[_0xb3e4('0x49')]);return _0x30384f[_0xb3e4('0x65')](_0x3cd6de);}})[_0xb3e4('0x2a')](function(_0x4254ff){if(_0x4254ff){_0x8b23fd=_0x4254ff['length'];if(!_0x1c98a1['query'][_0xb3e4('0x40')](_0xb3e4('0x41'))){_0x3cd6de[_0xb3e4('0x24')]=qs[_0xb3e4('0x24')](_0x1c98a1[_0xb3e4('0x3a')]['limit']);_0x3cd6de[_0xb3e4('0x22')]=qs[_0xb3e4('0x22')](_0x1c98a1[_0xb3e4('0x3a')][_0xb3e4('0x22')]);}return _0x30384f[_0xb3e4('0x65')](_0x3cd6de);}})[_0xb3e4('0x2a')](function(_0x49b44a){if(_0x49b44a){return _0x49b44a?{'count':_0x8b23fd,'rows':_0x49b44a}:null;}})[_0xb3e4('0x2a')](respondWithResult(_0x3e8b1d,null))[_0xb3e4('0x4c')](handleError(_0x3e8b1d,null));};exports[_0xb3e4('0x66')]=function(_0x679d58,_0xdddc94,_0x5f3801){var _0xfe914d=_0x679d58['body']['ids'];return db[_0xb3e4('0x64')][_0xb3e4('0x4a')]({'where':{'id':_0xfe914d},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb3e4('0x67'),'attributes':['id',_0xb3e4('0x31'),_0xb3e4('0x68'),_0xb3e4('0x69'),_0xb3e4('0x6a')],'raw':!![]}]})[_0xb3e4('0x2a')](function(_0x2c7edb){if(_0x2c7edb){var _0x269495=_[_0xb3e4('0x6b')](_0x2c7edb,function(_0x15d2c0){var _0x44a871=_0x15d2c0['get']({'plain':!![]});return _0x44a871[_0xb3e4('0x67')];});return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0x679d58[_0xb3e4('0x4d')]['id']}})['then'](function(_0x3e950f){return db[_0xb3e4('0x6c')][_0xb3e4('0x6d')](function(_0x657f5f){return _0x3e950f[_0xb3e4('0x66')](_0xfe914d,{'transaction':_0x657f5f})[_0xb3e4('0x2a')](function(){return BPromise[_0xb3e4('0x6e')](_0x269495,function(_0x4fc80d){return db[_0xb3e4('0x59')]['findOrCreate']({'where':{'UserId':_0x4fc80d['id'],'FaxQueueId':_0x679d58[_0xb3e4('0x4d')]['id']},'transaction':_0x657f5f});});})['then'](function(){_0x269495[_0xb3e4('0x6f')](function(_0x1b1479){socket[_0xb3e4('0x70')]('userFaxQueue:save',{'UserId':_0x1b1479['id'],'FaxQueueId':_0x3e950f['id']});});});});});}})[_0xb3e4('0x2a')](respondWithStatusCode(_0xdddc94,null))[_0xb3e4('0x4c')](handleError(_0xdddc94,null));};exports[_0xb3e4('0x71')]=function(_0x481268,_0xf32fb9,_0x28fa0b){return db[_0xb3e4('0x64')]['findAll']({'where':{'id':_0x481268[_0xb3e4('0x3a')][_0xb3e4('0x72')]},'attributes':['id'],'include':[{'model':db[_0xb3e4('0x5b')],'as':_0xb3e4('0x67'),'attributes':['id'],'raw':!![]}]})[_0xb3e4('0x2a')](handleEntityNotFound(_0xf32fb9,null))[_0xb3e4('0x2a')](function(_0x422c71){var _0x4ad3f7=_[_0xb3e4('0x34')](_0x422c71,'id');var _0x15edd9=[];var _0x42f512=[];var _0x17ca4a=squel[_0xb3e4('0x73')]();_0x17ca4a[_0xb3e4('0x74')](_0xb3e4('0x75'))[_0xb3e4('0x76')]('team_has_fax_queues','tq')[_0xb3e4('0x77')]('user_has_teams','ut',_0xb3e4('0x78'))[_0xb3e4('0x47')](_0xb3e4('0x79'),_0x481268['params']['id']);for(var _0x42f467=0x0;_0x42f467<_0x422c71[_0xb3e4('0x3f')];_0x42f467+=0x1){let _0x28b438=_0x422c71[_0x42f467];for(var _0x44103f=0x0;_0x44103f<_0x28b438[_0xb3e4('0x67')][_0xb3e4('0x3f')];_0x44103f+=0x1){let _0x5774fc=_0x28b438[_0xb3e4('0x67')][_0x44103f];var _0xf276ad=_0x17ca4a[_0xb3e4('0x7a')]();_0xf276ad['where'](_0xb3e4('0x7b'),_0x5774fc['id']);_0x42f512['push'](db[_0xb3e4('0x6c')][_0xb3e4('0x3a')](_0xf276ad[_0xb3e4('0x7c')](),{'type':db[_0xb3e4('0x6c')][_0xb3e4('0x7d')][_0xb3e4('0x7e')]})[_0xb3e4('0x2a')](function(_0x331e48){if(_0x331e48[_0xb3e4('0x3f')]===0x1){return _0x5774fc['id'];}else{var _0x2384c7=_[_0xb3e4('0x7f')](_[_0xb3e4('0x34')](_0x331e48,'TeamId'),function(_0x2dea36){return _[_0xb3e4('0x80')](_0x4ad3f7,_0x2dea36);});if(_0x2384c7){return _0x5774fc['id'];}}}));}}return BPromise[_0xb3e4('0x81')](_0x42f512)[_0xb3e4('0x2a')](function(_0x5d91fc){_0x15edd9=_(_0x15edd9)['union'](_0x5d91fc)[_0xb3e4('0x82')]()[_0xb3e4('0x83')]();return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0x481268[_0xb3e4('0x4d')]['id']}})[_0xb3e4('0x2a')](function(_0x482883){return db['sequelize'][_0xb3e4('0x6d')](function(_0x2ff637){return _0x482883['removeTeams'](_0x481268[_0xb3e4('0x3a')]['ids'],{'transaction':_0x2ff637})[_0xb3e4('0x2a')](function(){if(!_['isEmpty'](_0x15edd9)){return _0x482883[_0xb3e4('0x84')](_0x15edd9,{'transaction':_0x2ff637});}})['then'](function(){_0x15edd9[_0xb3e4('0x6f')](function(_0x111041){socket['emit'](_0xb3e4('0x85'),{'UserId':_0x111041,'FaxQueueId':_0x482883['id']});});});});});});})[_0xb3e4('0x2a')](respondWithStatusCode(_0xf32fb9,null))[_0xb3e4('0x4c')](handleError(_0xf32fb9,null));};exports[_0xb3e4('0x86')]=function(_0x371190,_0x57f690,_0x46af1b){return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0x371190[_0xb3e4('0x4d')]['id']}})[_0xb3e4('0x2a')](handleEntityNotFound(_0x57f690,null))['then'](function(_0x506253){if(_0x506253){return _0x506253['addAgents'](_0x371190['body'][_0xb3e4('0x72')],_[_0xb3e4('0x87')](_0x371190[_0xb3e4('0x56')],[_0xb3e4('0x72'),'id'])||{})['spread'](function(_0x5077b2){for(var _0x37606f=0x0;_0x37606f<_0x371190[_0xb3e4('0x56')]['ids'][_0xb3e4('0x3f')];_0x37606f+=0x1){socket[_0xb3e4('0x70')](_0xb3e4('0x88'),{'UserId':Number(_0x371190[_0xb3e4('0x56')][_0xb3e4('0x72')][_0x37606f]),'FaxQueueId':Number(_0x371190[_0xb3e4('0x4d')]['id'])});}return _0x5077b2;});}})[_0xb3e4('0x2a')](respondWithResult(_0x57f690,null))['catch'](handleError(_0x57f690,null));};exports[_0xb3e4('0x84')]=function(_0xe1cbce,_0x35bb4f,_0x422b57){return db[_0xb3e4('0x35')][_0xb3e4('0x4f')]({'where':{'id':_0xe1cbce['params']['id']}})[_0xb3e4('0x2a')](handleEntityNotFound(_0x35bb4f,null))[_0xb3e4('0x2a')](function(_0xf364c9){if(_0xf364c9){return _0xf364c9[_0xb3e4('0x84')](_0xe1cbce[_0xb3e4('0x3a')][_0xb3e4('0x72')])[_0xb3e4('0x2a')](function(){if(_[_0xb3e4('0x89')](_0xe1cbce[_0xb3e4('0x3a')]['ids'])){for(var _0xd529a0=0x0;_0xd529a0<_0xe1cbce['query'][_0xb3e4('0x72')][_0xb3e4('0x3f')];_0xd529a0+=0x1){socket[_0xb3e4('0x70')](_0xb3e4('0x85'),{'UserId':Number(_0xe1cbce[_0xb3e4('0x3a')]['ids'][_0xd529a0]),'FaxQueueId':Number(_0xe1cbce[_0xb3e4('0x4d')]['id'])});}}else{socket[_0xb3e4('0x70')](_0xb3e4('0x85'),{'UserId':Number(_0xe1cbce[_0xb3e4('0x3a')][_0xb3e4('0x72')]),'FaxQueueId':Number(_0xe1cbce[_0xb3e4('0x4d')]['id'])});}});}})[_0xb3e4('0x2a')](respondWithStatusCode(_0x35bb4f,null))['catch'](handleError(_0x35bb4f,null));};exports[_0xb3e4('0x8a')]=function(_0x1bd521,_0x1a3e2b,_0x4c9693){var _0x1e0211={};var _0x3ee602={};var _0x4f3397;var _0x1f625a;return db['FaxQueue']['findOne']({'where':{'id':_0x1bd521[_0xb3e4('0x4d')]['id']}})[_0xb3e4('0x2a')](handleEntityNotFound(_0x1a3e2b,null))[_0xb3e4('0x2a')](function(_0x372936){if(_0x372936){_0x4f3397=_0x372936;_0x3ee602[_0xb3e4('0x39')]=_[_0xb3e4('0x3b')](db['User'][_0xb3e4('0x4e')]);_0x3ee602[_0xb3e4('0x3a')]=_['keys'](_0x1bd521[_0xb3e4('0x3a')]);_0x3ee602[_0xb3e4('0x44')]=_[_0xb3e4('0x3d')](_0x3ee602[_0xb3e4('0x39')],_0x3ee602['query']);_0x1e0211['attributes']=_[_0xb3e4('0x3d')](_0x3ee602[_0xb3e4('0x39')],qs[_0xb3e4('0x3e')](_0x1bd521['query'][_0xb3e4('0x3e')]));_0x1e0211[_0xb3e4('0x3c')]=_0x1e0211[_0xb3e4('0x3c')][_0xb3e4('0x3f')]?_0x1e0211[_0xb3e4('0x3c')]:_0x3ee602[_0xb3e4('0x39')];_0x1e0211['order']=qs[_0xb3e4('0x43')](_0x1bd521[_0xb3e4('0x3a')][_0xb3e4('0x43')]);_0x1e0211['where']=qs[_0xb3e4('0x44')](_[_0xb3e4('0x45')](_0x1bd521['query'],_0x3ee602[_0xb3e4('0x44')]));if(_0x1bd521[_0xb3e4('0x3a')][_0xb3e4('0x46')]){_0x1e0211[_0xb3e4('0x47')]=_['merge'](_0x1e0211[_0xb3e4('0x47')],{'$or':_[_0xb3e4('0x34')](_0x1e0211[_0xb3e4('0x3c')],function(_0x4ffebe){var _0x3772ca={};_0x3772ca[_0x4ffebe]={'$like':'%'+_0x1bd521[_0xb3e4('0x3a')][_0xb3e4('0x46')]+'%'};return _0x3772ca;})});}_0x1e0211=_['merge']({},_0x1e0211,_0x1bd521[_0xb3e4('0x49')]);return _0x4f3397[_0xb3e4('0x8a')](_0x1e0211);}})['then'](function(_0x2be46b){if(_0x2be46b){_0x1f625a=_0x2be46b[_0xb3e4('0x3f')];if(!_0x1bd521[_0xb3e4('0x3a')][_0xb3e4('0x40')](_0xb3e4('0x41'))){_0x1e0211[_0xb3e4('0x24')]=qs[_0xb3e4('0x24')](_0x1bd521[_0xb3e4('0x3a')]['limit']);_0x1e0211[_0xb3e4('0x22')]=qs[_0xb3e4('0x22')](_0x1bd521[_0xb3e4('0x3a')]['offset']);}return _0x4f3397[_0xb3e4('0x8a')](_0x1e0211);}})[_0xb3e4('0x2a')](function(_0x1b0645){if(_0x1b0645){return _0x1b0645?{'count':_0x1f625a,'rows':_0x1b0645}:null;}})[_0xb3e4('0x2a')](respondWithResult(_0x1a3e2b,null))['catch'](handleError(_0x1a3e2b,null));};
\ No newline at end of file
+var _0x3f17=['rows','format','%s/%s','Team','getTeams','addTeams','body','ids','Agents','voicePause','transaction','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','union','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','status','json','offset','undefined','limit','count','set','reject','then','destroy','FaxQueues','UserProfileResource','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','FaxQueue','includeAll','include','findAll','show','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','update','describe','getMembers','findOne','UserFaxQueue','order','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt'];(function(_0x5a5b59,_0x4e24fa){var _0x225324=function(_0x510b88){while(--_0x510b88){_0x5a5b59['push'](_0x5a5b59['shift']());}};_0x225324(++_0x4e24fa);}(_0x3f17,0x1c7));var _0x73f1=function(_0x48a5be,_0x5b2c75){_0x48a5be=_0x48a5be-0x0;var _0x232c15=_0x3f17[_0x48a5be];return _0x232c15;};'use strict';var emlformat=require(_0x73f1('0x0'));var rimraf=require(_0x73f1('0x1'));var zipdir=require(_0x73f1('0x2'));var jsonpatch=require(_0x73f1('0x3'));var rp=require(_0x73f1('0x4'));var moment=require(_0x73f1('0x5'));var BPromise=require(_0x73f1('0x6'));var Mustache=require('mustache');var util=require(_0x73f1('0x7'));var path=require(_0x73f1('0x8'));var sox=require(_0x73f1('0x9'));var csv=require(_0x73f1('0xa'));var ejs=require(_0x73f1('0xb'));var fs=require('fs');var fs_extra=require(_0x73f1('0xc'));var _=require(_0x73f1('0xd'));var squel=require(_0x73f1('0xe'));var crypto=require(_0x73f1('0xf'));var jsforce=require(_0x73f1('0x10'));var deskjs=require(_0x73f1('0x11'));var toCsv=require(_0x73f1('0xa'));var querystring=require('querystring');var Papa=require(_0x73f1('0x12'));var Redis=require(_0x73f1('0x13'));var authService=require(_0x73f1('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x73f1('0x15'));var logger=require('../../config/logger')(_0x73f1('0x16'));var utils=require(_0x73f1('0x17'));var config=require(_0x73f1('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x73f1('0x19'))['db'];config[_0x73f1('0x1a')]=_['defaults'](config[_0x73f1('0x1a')],{'host':_0x73f1('0x1b'),'port':0x18eb});var socket=require(_0x73f1('0x1c'))(new Redis(config['redis']));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x3dbf56,_0x275bb7){_0x275bb7=_0x275bb7||0xcc;return function(_0x1af575){if(_0x1af575){return _0x3dbf56['sendStatus'](_0x275bb7);}return _0x3dbf56[_0x73f1('0x1d')](_0x275bb7)['end']();};}function respondWithResult(_0x5280a0,_0x1fdafb){_0x1fdafb=_0x1fdafb||0xc8;return function(_0x90184b){if(_0x90184b){return _0x5280a0[_0x73f1('0x1d')](_0x1fdafb)[_0x73f1('0x1e')](_0x90184b);}};}function respondWithFilteredResult(_0x1e63cd,_0x505649){return function(_0xfc6041){if(_0xfc6041){var _0x24b57c=typeof _0x505649[_0x73f1('0x1f')]===_0x73f1('0x20')&&typeof _0x505649[_0x73f1('0x21')]===_0x73f1('0x20');var _0x415f4f=_0xfc6041[_0x73f1('0x22')];var _0x2121d0=_0x24b57c?0x0:_0x505649[_0x73f1('0x1f')];var _0x26d841=_0x24b57c?_0xfc6041['count']:_0x505649[_0x73f1('0x1f')]+_0x505649[_0x73f1('0x21')];var _0x36ca93;if(_0x26d841>=_0x415f4f){_0x26d841=_0x415f4f;_0x36ca93=0xc8;}else{_0x36ca93=0xce;}_0x1e63cd[_0x73f1('0x1d')](_0x36ca93);return _0x1e63cd[_0x73f1('0x23')]('Content-Range',_0x2121d0+'-'+_0x26d841+'/'+_0x415f4f)[_0x73f1('0x1e')](_0xfc6041);}return null;};}function patchUpdates(_0x566e15){return function(_0x556488){try{jsonpatch['apply'](_0x556488,_0x566e15,!![]);}catch(_0x4ec663){return BPromise[_0x73f1('0x24')](_0x4ec663);}return _0x556488['save']();};}function saveUpdates(_0x1a2182,_0x103792){return function(_0xe8007e){if(_0xe8007e){return _0xe8007e['update'](_0x1a2182)[_0x73f1('0x25')](function(_0x3a4af3){return _0x3a4af3;});}return null;};}function removeEntity(_0x351ff0,_0x206ce6){return function(_0x34e4eb){if(_0x34e4eb){return _0x34e4eb[_0x73f1('0x26')]()[_0x73f1('0x25')](function(){var _0x27fafc=_0x34e4eb['get']({'plain':!![]});var _0x23faa3=_0x73f1('0x27');return db[_0x73f1('0x28')][_0x73f1('0x26')]({'where':{'type':_0x23faa3,'resourceId':_0x27fafc['id']}})['then'](function(){return _0x34e4eb;});})[_0x73f1('0x25')](function(){_0x351ff0[_0x73f1('0x1d')](0xcc)[_0x73f1('0x29')]();});}};}function handleEntityNotFound(_0x2a575c,_0x4b37b7){return function(_0x1bdf82){if(!_0x1bdf82){_0x2a575c[_0x73f1('0x2a')](0x194);}return _0x1bdf82;};}function handleError(_0x3bc25f,_0x2252c0){_0x2252c0=_0x2252c0||0x1f4;return function(_0x5bb970){logger['error'](_0x5bb970[_0x73f1('0x2b')]);if(_0x5bb970[_0x73f1('0x2c')]){delete _0x5bb970[_0x73f1('0x2c')];}_0x3bc25f['status'](_0x2252c0)[_0x73f1('0x2d')](_0x5bb970);};}exports[_0x73f1('0x2e')]=function(_0x2a452,_0x440b1c){var _0x5be1ff={},_0x55c70d={},_0x793083={'count':0x0,'rows':[]};var _0x3719fd=_[_0x73f1('0x2f')](db['FaxQueue'][_0x73f1('0x30')],function(_0x4c134f){return{'name':_0x4c134f[_0x73f1('0x31')],'type':_0x4c134f[_0x73f1('0x32')][_0x73f1('0x33')]};});_0x55c70d[_0x73f1('0x34')]=_[_0x73f1('0x2f')](_0x3719fd,'name');_0x55c70d['query']=_[_0x73f1('0x35')](_0x2a452[_0x73f1('0x36')]);_0x55c70d[_0x73f1('0x37')]=_['intersection'](_0x55c70d['model'],_0x55c70d[_0x73f1('0x36')]);_0x5be1ff[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x55c70d[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x2a452['query'][_0x73f1('0x3a')]));_0x5be1ff[_0x73f1('0x38')]=_0x5be1ff[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5be1ff[_0x73f1('0x38')]:_0x55c70d['model'];if(!_0x2a452[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5be1ff[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x2a452[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5be1ff['offset']=qs[_0x73f1('0x1f')](_0x2a452[_0x73f1('0x36')][_0x73f1('0x1f')]);}_0x5be1ff['order']=qs[_0x73f1('0x3e')](_0x2a452[_0x73f1('0x36')]['sort']);_0x5be1ff[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x2a452[_0x73f1('0x36')],_0x55c70d['filters']),_0x3719fd);if(_0x2a452['query'][_0x73f1('0x41')]){_0x5be1ff[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5be1ff['where'],{'$or':_[_0x73f1('0x2f')](_0x3719fd,function(_0x3826b2){if(_0x3826b2[_0x73f1('0x32')]!=='VIRTUAL'){var _0x53be2c={};_0x53be2c[_0x3826b2[_0x73f1('0x2c')]]={'$like':'%'+_0x2a452[_0x73f1('0x36')]['filter']+'%'};return _0x53be2c;}})});}_0x5be1ff=_[_0x73f1('0x42')]({},_0x5be1ff,_0x2a452[_0x73f1('0x43')]);var _0x27dccc={'where':_0x5be1ff[_0x73f1('0x3f')]};return db[_0x73f1('0x44')][_0x73f1('0x22')](_0x27dccc)[_0x73f1('0x25')](function(_0x541cee){_0x793083[_0x73f1('0x22')]=_0x541cee;if(_0x2a452[_0x73f1('0x36')][_0x73f1('0x45')]){_0x5be1ff[_0x73f1('0x46')]=[{'all':!![]}];}return db[_0x73f1('0x44')][_0x73f1('0x47')](_0x5be1ff);})[_0x73f1('0x25')](function(_0x150f2a){_0x793083['rows']=_0x150f2a;return _0x793083;})['then'](respondWithFilteredResult(_0x440b1c,_0x5be1ff))['catch'](handleError(_0x440b1c,null));};exports[_0x73f1('0x48')]=function(_0x2e2bfc,_0x4cf1b5){var _0xd08a5c={'raw':!![],'where':{'id':_0x2e2bfc[_0x73f1('0x49')]['id']}},_0x1d10ba={};_0x1d10ba['model']=_[_0x73f1('0x35')](db[_0x73f1('0x44')]['rawAttributes']);_0x1d10ba[_0x73f1('0x36')]=_[_0x73f1('0x35')](_0x2e2bfc[_0x73f1('0x36')]);_0x1d10ba[_0x73f1('0x37')]=_[_0x73f1('0x39')](_0x1d10ba['model'],_0x1d10ba[_0x73f1('0x36')]);_0xd08a5c[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x1d10ba[_0x73f1('0x34')],qs['fields'](_0x2e2bfc['query'][_0x73f1('0x3a')]));_0xd08a5c[_0x73f1('0x38')]=_0xd08a5c[_0x73f1('0x38')][_0x73f1('0x3b')]?_0xd08a5c[_0x73f1('0x38')]:_0x1d10ba[_0x73f1('0x34')];if(_0x2e2bfc['query']['includeAll']){_0xd08a5c[_0x73f1('0x46')]=[{'all':!![]}];}_0xd08a5c=_[_0x73f1('0x42')]({},_0xd08a5c,_0x2e2bfc[_0x73f1('0x43')]);return db['FaxQueue'][_0x73f1('0x4a')](_0xd08a5c)[_0x73f1('0x25')](handleEntityNotFound(_0x4cf1b5,null))[_0x73f1('0x25')](respondWithResult(_0x4cf1b5,null))[_0x73f1('0x4b')](handleError(_0x4cf1b5,null));};exports[_0x73f1('0x4c')]=function(_0x4b5140,_0x465d0f){return db[_0x73f1('0x44')][_0x73f1('0x4c')](_0x4b5140['body'],{})[_0x73f1('0x25')](function(_0x54b2fb){var _0x3a567c=_0x4b5140[_0x73f1('0x4d')][_0x73f1('0x4e')]({'plain':!![]});if(!_0x3a567c)throw new Error(_0x73f1('0x4f'));if(_0x3a567c['role']===_0x73f1('0x4d')){var _0x45148e=_0x54b2fb[_0x73f1('0x4e')]({'plain':!![]});var _0x279a35=_0x73f1('0x27');return db[_0x73f1('0x50')][_0x73f1('0x4a')]({'where':{'name':_0x279a35,'userProfileId':_0x3a567c[_0x73f1('0x51')]},'raw':!![]})[_0x73f1('0x25')](function(_0x55dcce){if(_0x55dcce&&_0x55dcce['autoAssociation']===0x0){return db[_0x73f1('0x28')]['create']({'name':_0x45148e[_0x73f1('0x2c')],'resourceId':_0x45148e['id'],'type':_0x55dcce[_0x73f1('0x2c')],'sectionId':_0x55dcce['id']},{})['then'](function(){return _0x54b2fb;});}else{return _0x54b2fb;}})[_0x73f1('0x4b')](function(_0x1a95db){logger[_0x73f1('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a95db);throw _0x1a95db;});}return _0x54b2fb;})['then'](respondWithResult(_0x465d0f,0xc9))[_0x73f1('0x4b')](handleError(_0x465d0f,null));};exports[_0x73f1('0x53')]=function(_0x1f06b3,_0x42d2f3){if(_0x1f06b3['body']['id']){delete _0x1f06b3['body']['id'];}return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x1f06b3[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x42d2f3,null))[_0x73f1('0x25')](saveUpdates(_0x1f06b3['body'],null))[_0x73f1('0x25')](respondWithResult(_0x42d2f3,null))[_0x73f1('0x4b')](handleError(_0x42d2f3,null));};exports['destroy']=function(_0x54b99f,_0x1d4a9c){return db['FaxQueue'][_0x73f1('0x4a')]({'where':{'id':_0x54b99f['params']['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x1d4a9c,null))[_0x73f1('0x25')](removeEntity(_0x1d4a9c,null))['catch'](handleError(_0x1d4a9c,null));};exports[_0x73f1('0x54')]=function(_0x25f458,_0x1d2246){return db[_0x73f1('0x44')][_0x73f1('0x54')]()['then'](respondWithResult(_0x1d2246,null))[_0x73f1('0x4b')](handleError(_0x1d2246,null));};exports[_0x73f1('0x55')]=function(_0x5f3100,_0x3985f1,_0x69369f){var _0x5c90db={'raw':!![],'where':{}},_0x4aa3f6={},_0x3d07bc;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x5f3100[_0x73f1('0x49')]['id']}})['then'](handleEntityNotFound(_0x3985f1,null))[_0x73f1('0x25')](function(_0x5220df){if(_0x5220df){_0x3d07bc=_0x5220df[_0x73f1('0x4e')]({'plain':!![]});_0x4aa3f6[_0x73f1('0x34')]=_['keys'](db[_0x73f1('0x57')]['rawAttributes']);_0x4aa3f6['query']=_['keys'](_0x5f3100[_0x73f1('0x36')]);_0x4aa3f6[_0x73f1('0x37')]=_[_0x73f1('0x39')](_0x4aa3f6[_0x73f1('0x34')],_0x4aa3f6[_0x73f1('0x36')]);_0x5c90db[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x4aa3f6['model'],qs[_0x73f1('0x3a')](_0x5f3100['query'][_0x73f1('0x3a')]));_0x5c90db['attributes']=_0x5c90db[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5c90db[_0x73f1('0x38')]:_0x4aa3f6[_0x73f1('0x34')];if(!_0x5f3100[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5c90db[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5c90db[_0x73f1('0x1f')]=qs['offset'](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x1f')]);}_0x5c90db[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x5f3100[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x5c90db[_0x73f1('0x3f')]=qs['filters'](_[_0x73f1('0x40')](_0x5f3100[_0x73f1('0x36')],_0x4aa3f6[_0x73f1('0x37')]));_0x5c90db['where'][_0x73f1('0x59')]=_0x5220df['id'];if(_0x5f3100[_0x73f1('0x36')][_0x73f1('0x41')]){_0x5c90db[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5c90db[_0x73f1('0x3f')],{'$or':_['map'](_0x5c90db[_0x73f1('0x38')],function(_0x455e3e){var _0x4ccc58={};_0x4ccc58[_0x455e3e]={'$like':'%'+_0x5f3100[_0x73f1('0x36')][_0x73f1('0x41')]+'%'};return _0x4ccc58;})});}_0x5c90db=_[_0x73f1('0x42')]({},_0x5c90db,_0x5f3100[_0x73f1('0x43')]);return db[_0x73f1('0x57')][_0x73f1('0x47')](_0x5c90db);}})[_0x73f1('0x25')](function(_0x27c101){if(_0x27c101){return db[_0x73f1('0x5a')][_0x73f1('0x5b')]({'where':{'id':_[_0x73f1('0x2f')](_0x27c101,_0x73f1('0x5c')),'role':_0x73f1('0x5d')},'attributes':['id','name',_0x73f1('0x5e'),_0x73f1('0x5f'),_0x73f1('0x60')]});}})['then'](function(_0x3ff615){if(_0x3ff615){return{'count':_0x3ff615['count'],'rows':_[_0x73f1('0x2f')](_0x3ff615[_0x73f1('0x61')],function(_0x2cf5bd){return{'membername':_0x2cf5bd[_0x73f1('0x2c')],'UserId':_0x2cf5bd['id'],'queue_name':_0x3d07bc[_0x73f1('0x2c')],'FaxQueueId':_0x3d07bc['id'],'interface':util[_0x73f1('0x62')](_0x73f1('0x63'),'SIP',_0x2cf5bd[_0x73f1('0x2c')]),'penalty':0x0,'paused':_0x2cf5bd[_0x73f1('0x5e')],'createdAt':_0x2cf5bd['createdAt'],'updatedAt':_0x2cf5bd['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x73f1('0x25')](respondWithFilteredResult(_0x3985f1,_0x5c90db))['catch'](handleError(_0x3985f1,null));};exports['getTeams']=function(_0x337c56,_0x517e2a,_0x102153){var _0x5545a0={};var _0x3a1c0b={};var _0x22dd27;var _0x135388;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x337c56[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x517e2a,null))['then'](function(_0x49490e){if(_0x49490e){_0x22dd27=_0x49490e;_0x3a1c0b['model']=_[_0x73f1('0x35')](db[_0x73f1('0x64')][_0x73f1('0x30')]);_0x3a1c0b['query']=_['keys'](_0x337c56[_0x73f1('0x36')]);_0x3a1c0b[_0x73f1('0x37')]=_['intersection'](_0x3a1c0b[_0x73f1('0x34')],_0x3a1c0b[_0x73f1('0x36')]);_0x5545a0[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x3a1c0b[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x3a')]));_0x5545a0[_0x73f1('0x38')]=_0x5545a0[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x5545a0['attributes']:_0x3a1c0b[_0x73f1('0x34')];_0x5545a0[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x5545a0[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x337c56[_0x73f1('0x36')],_0x3a1c0b[_0x73f1('0x37')]));if(_0x337c56[_0x73f1('0x36')]['filter']){_0x5545a0[_0x73f1('0x3f')]=_[_0x73f1('0x42')](_0x5545a0[_0x73f1('0x3f')],{'$or':_[_0x73f1('0x2f')](_0x5545a0[_0x73f1('0x38')],function(_0x5a5499){var _0x210d40={};_0x210d40[_0x5a5499]={'$like':'%'+_0x337c56[_0x73f1('0x36')]['filter']+'%'};return _0x210d40;})});}_0x5545a0=_['merge']({},_0x5545a0,_0x337c56[_0x73f1('0x43')]);return _0x22dd27['getTeams'](_0x5545a0);}})[_0x73f1('0x25')](function(_0x56203e){if(_0x56203e){_0x135388=_0x56203e[_0x73f1('0x3b')];if(!_0x337c56[_0x73f1('0x36')][_0x73f1('0x3c')](_0x73f1('0x3d'))){_0x5545a0['limit']=qs['limit'](_0x337c56[_0x73f1('0x36')][_0x73f1('0x21')]);_0x5545a0[_0x73f1('0x1f')]=qs[_0x73f1('0x1f')](_0x337c56[_0x73f1('0x36')][_0x73f1('0x1f')]);}return _0x22dd27[_0x73f1('0x65')](_0x5545a0);}})[_0x73f1('0x25')](function(_0x3448b8){if(_0x3448b8){return _0x3448b8?{'count':_0x135388,'rows':_0x3448b8}:null;}})['then'](respondWithResult(_0x517e2a,null))['catch'](handleError(_0x517e2a,null));};exports[_0x73f1('0x66')]=function(_0x41b6e3,_0x4f5704,_0x5210b6){var _0x3136cb=_0x41b6e3[_0x73f1('0x67')][_0x73f1('0x68')];return db[_0x73f1('0x64')][_0x73f1('0x47')]({'where':{'id':_0x3136cb},'attributes':['id'],'include':[{'model':db['User'],'as':_0x73f1('0x69'),'attributes':['id',_0x73f1('0x2c'),'online',_0x73f1('0x6a'),'interface'],'raw':!![]}]})['then'](function(_0x42b070){if(_0x42b070){var _0x23a323=_['flatMap'](_0x42b070,function(_0x22431a){var _0x1c9370=_0x22431a[_0x73f1('0x4e')]({'plain':!![]});return _0x1c9370[_0x73f1('0x69')];});return db[_0x73f1('0x44')]['find']({'where':{'id':_0x41b6e3[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](function(_0x496741){return db['sequelize'][_0x73f1('0x6b')](function(_0x922c72){return _0x496741['addTeams'](_0x3136cb,{'transaction':_0x922c72})[_0x73f1('0x25')](function(){return BPromise['each'](_0x23a323,function(_0xa19cce){return db[_0x73f1('0x57')][_0x73f1('0x6c')]({'where':{'UserId':_0xa19cce['id'],'FaxQueueId':_0x41b6e3[_0x73f1('0x49')]['id']},'transaction':_0x922c72});});})[_0x73f1('0x25')](function(){_0x23a323[_0x73f1('0x6d')](function(_0x8061f7){socket[_0x73f1('0x6e')](_0x73f1('0x6f'),{'UserId':_0x8061f7['id'],'FaxQueueId':_0x496741['id']});});});});});}})[_0x73f1('0x25')](respondWithStatusCode(_0x4f5704,null))[_0x73f1('0x4b')](handleError(_0x4f5704,null));};exports[_0x73f1('0x70')]=function(_0x1f2532,_0x215fc1,_0x1417ad){return db['Team'][_0x73f1('0x47')]({'where':{'id':_0x1f2532[_0x73f1('0x36')][_0x73f1('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x73f1('0x69'),'attributes':['id'],'raw':!![]}]})[_0x73f1('0x25')](handleEntityNotFound(_0x215fc1,null))[_0x73f1('0x25')](function(_0x3dfccc){var _0x58894a=_[_0x73f1('0x2f')](_0x3dfccc,'id');var _0x5333da=[];var _0x5dfead=[];var _0x1a75ad=squel[_0x73f1('0x71')]();_0x1a75ad['field'](_0x73f1('0x72'))[_0x73f1('0x73')](_0x73f1('0x74'),'tq')[_0x73f1('0x75')](_0x73f1('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x73f1('0x3f')](_0x73f1('0x77'),_0x1f2532[_0x73f1('0x49')]['id']);for(var _0xce0391=0x0;_0xce0391<_0x3dfccc[_0x73f1('0x3b')];_0xce0391+=0x1){let _0x38b73a=_0x3dfccc[_0xce0391];for(var _0x1c8c2d=0x0;_0x1c8c2d<_0x38b73a['Agents'][_0x73f1('0x3b')];_0x1c8c2d+=0x1){let _0x41e313=_0x38b73a[_0x73f1('0x69')][_0x1c8c2d];var _0x1a3d74=_0x1a75ad['clone']();_0x1a3d74[_0x73f1('0x3f')](_0x73f1('0x78'),_0x41e313['id']);_0x5dfead[_0x73f1('0x79')](db[_0x73f1('0x7a')][_0x73f1('0x36')](_0x1a3d74[_0x73f1('0x7b')](),{'type':db[_0x73f1('0x7a')][_0x73f1('0x7c')][_0x73f1('0x7d')]})[_0x73f1('0x25')](function(_0x5126e5){if(_0x5126e5[_0x73f1('0x3b')]===0x1){return _0x41e313['id'];}else{var _0x2b5a05=_[_0x73f1('0x7e')](_[_0x73f1('0x2f')](_0x5126e5,'TeamId'),function(_0x3e724b){return _['includes'](_0x58894a,_0x3e724b);});if(_0x2b5a05){return _0x41e313['id'];}}}));}}return BPromise['all'](_0x5dfead)[_0x73f1('0x25')](function(_0x590db3){_0x5333da=_(_0x5333da)[_0x73f1('0x7f')](_0x590db3)[_0x73f1('0x80')]()[_0x73f1('0x81')]();return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x1f2532[_0x73f1('0x49')]['id']}})[_0x73f1('0x25')](function(_0x3c7a8e){return db['sequelize'][_0x73f1('0x6b')](function(_0x38184e){return _0x3c7a8e[_0x73f1('0x70')](_0x1f2532[_0x73f1('0x36')]['ids'],{'transaction':_0x38184e})[_0x73f1('0x25')](function(){if(!_[_0x73f1('0x82')](_0x5333da)){return _0x3c7a8e[_0x73f1('0x83')](_0x5333da,{'transaction':_0x38184e});}})[_0x73f1('0x25')](function(){_0x5333da['forEach'](function(_0x10c90a){socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':_0x10c90a,'FaxQueueId':_0x3c7a8e['id']});});});});});});})[_0x73f1('0x25')](respondWithStatusCode(_0x215fc1,null))['catch'](handleError(_0x215fc1,null));};exports['addAgents']=function(_0x46b92d,_0x3a04f4,_0x32f67e){return db[_0x73f1('0x44')]['find']({'where':{'id':_0x46b92d['params']['id']}})[_0x73f1('0x25')](handleEntityNotFound(_0x3a04f4,null))['then'](function(_0x2424e8){if(_0x2424e8){return _0x2424e8[_0x73f1('0x85')](_0x46b92d[_0x73f1('0x67')]['ids'],_[_0x73f1('0x86')](_0x46b92d[_0x73f1('0x67')],[_0x73f1('0x68'),'id'])||{})[_0x73f1('0x87')](function(_0x478da3){for(var _0xe8c110=0x0;_0xe8c110<_0x46b92d[_0x73f1('0x67')][_0x73f1('0x68')][_0x73f1('0x3b')];_0xe8c110+=0x1){socket[_0x73f1('0x6e')]('userFaxQueue:save',{'UserId':Number(_0x46b92d[_0x73f1('0x67')]['ids'][_0xe8c110]),'FaxQueueId':Number(_0x46b92d['params']['id'])});}return _0x478da3;});}})[_0x73f1('0x25')](respondWithResult(_0x3a04f4,null))[_0x73f1('0x4b')](handleError(_0x3a04f4,null));};exports[_0x73f1('0x83')]=function(_0x22781a,_0x3c248e,_0x9c33be){return db[_0x73f1('0x44')][_0x73f1('0x4a')]({'where':{'id':_0x22781a['params']['id']}})['then'](handleEntityNotFound(_0x3c248e,null))[_0x73f1('0x25')](function(_0x66c403){if(_0x66c403){return _0x66c403[_0x73f1('0x83')](_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')])[_0x73f1('0x25')](function(){if(_[_0x73f1('0x88')](_0x22781a['query']['ids'])){for(var _0x4b65de=0x0;_0x4b65de<_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')][_0x73f1('0x3b')];_0x4b65de+=0x1){socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':Number(_0x22781a[_0x73f1('0x36')][_0x73f1('0x68')][_0x4b65de]),'FaxQueueId':Number(_0x22781a['params']['id'])});}}else{socket[_0x73f1('0x6e')](_0x73f1('0x84'),{'UserId':Number(_0x22781a[_0x73f1('0x36')]['ids']),'FaxQueueId':Number(_0x22781a[_0x73f1('0x49')]['id'])});}});}})[_0x73f1('0x25')](respondWithStatusCode(_0x3c248e,null))[_0x73f1('0x4b')](handleError(_0x3c248e,null));};exports[_0x73f1('0x89')]=function(_0x376248,_0x4ff718,_0x3ea884){var _0x58c74c={};var _0x2b600a={};var _0x4e575c;var _0x25f3fb;return db[_0x73f1('0x44')][_0x73f1('0x56')]({'where':{'id':_0x376248[_0x73f1('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ff718,null))[_0x73f1('0x25')](function(_0x34e835){if(_0x34e835){_0x4e575c=_0x34e835;_0x2b600a[_0x73f1('0x34')]=_['keys'](db['User'][_0x73f1('0x30')]);_0x2b600a[_0x73f1('0x36')]=_['keys'](_0x376248[_0x73f1('0x36')]);_0x2b600a['filters']=_[_0x73f1('0x39')](_0x2b600a['model'],_0x2b600a[_0x73f1('0x36')]);_0x58c74c[_0x73f1('0x38')]=_[_0x73f1('0x39')](_0x2b600a[_0x73f1('0x34')],qs[_0x73f1('0x3a')](_0x376248['query'][_0x73f1('0x3a')]));_0x58c74c['attributes']=_0x58c74c[_0x73f1('0x38')][_0x73f1('0x3b')]?_0x58c74c[_0x73f1('0x38')]:_0x2b600a[_0x73f1('0x34')];_0x58c74c[_0x73f1('0x58')]=qs[_0x73f1('0x3e')](_0x376248[_0x73f1('0x36')][_0x73f1('0x3e')]);_0x58c74c[_0x73f1('0x3f')]=qs[_0x73f1('0x37')](_[_0x73f1('0x40')](_0x376248[_0x73f1('0x36')],_0x2b600a[_0x73f1('0x37')]));if(_0x376248[_0x73f1('0x36')][_0x73f1('0x41')]){_0x58c74c['where']=_[_0x73f1('0x42')](_0x58c74c[_0x73f1('0x3f')],{'$or':_[_0x73f1('0x2f')](_0x58c74c[_0x73f1('0x38')],function(_0x2f4714){var _0x4bbdc3={};_0x4bbdc3[_0x2f4714]={'$like':'%'+_0x376248[_0x73f1('0x36')][_0x73f1('0x41')]+'%'};return _0x4bbdc3;})});}_0x58c74c=_[_0x73f1('0x42')]({},_0x58c74c,_0x376248[_0x73f1('0x43')]);return _0x4e575c[_0x73f1('0x89')](_0x58c74c);}})['then'](function(_0x1db14a){if(_0x1db14a){_0x25f3fb=_0x1db14a[_0x73f1('0x3b')];if(!_0x376248['query'][_0x73f1('0x3c')]('nolimit')){_0x58c74c[_0x73f1('0x21')]=qs[_0x73f1('0x21')](_0x376248['query']['limit']);_0x58c74c[_0x73f1('0x1f')]=qs[_0x73f1('0x1f')](_0x376248[_0x73f1('0x36')][_0x73f1('0x1f')]);}return _0x4e575c['getAgents'](_0x58c74c);}})['then'](function(_0x16c589){if(_0x16c589){return _0x16c589?{'count':_0x25f3fb,'rows':_0x16c589}:null;}})[_0x73f1('0x25')](respondWithResult(_0x4ff718,null))[_0x73f1('0x4b')](handleError(_0x4ff718,null));};
\ No newline at end of file
index aecd9f3..62eddee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac9=['emit','../../mysqldb','FaxQueue','remove'];(function(_0x1a381e,_0x3030ab){var _0x4d0482=function(_0x56a0a6){while(--_0x56a0a6){_0x1a381e['push'](_0x1a381e['shift']());}};_0x4d0482(++_0x3030ab);}(_0x6ac9,0x1e5));var _0x96ac=function(_0xe6cb9b,_0x140214){_0xe6cb9b=_0xe6cb9b-0x0;var _0xdb9119=_0x6ac9[_0xe6cb9b];return _0xdb9119;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x96ac('0x0'))['db'][_0x96ac('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x96ac('0x2')};function emitEvent(_0x3a721c){return function(_0x679b74,_0x313ee2,_0x1cabba){FaxQueueEvents[_0x96ac('0x3')](_0x3a721c+':'+_0x679b74['id'],_0x679b74);FaxQueueEvents[_0x96ac('0x3')](_0x3a721c,_0x679b74);_0x1cabba(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0xba19=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','update'];(function(_0x451829,_0x18cbd5){var _0x2e7eae=function(_0x12ab7d){while(--_0x12ab7d){_0x451829['push'](_0x451829['shift']());}};_0x2e7eae(++_0x18cbd5);}(_0xba19,0x16d));var _0x9ba1=function(_0x1cdf0a,_0x469560){_0x1cdf0a=_0x1cdf0a-0x0;var _0x49b63b=_0xba19[_0x1cdf0a];return _0x49b63b;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x9ba1('0x0'))['db'][_0x9ba1('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9ba1('0x2'),'afterDestroy':_0x9ba1('0x3')};function emitEvent(_0x5b102a){return function(_0x5dd09d,_0xbea0ed,_0x4a774d){FaxQueueEvents[_0x9ba1('0x4')](_0x5b102a+':'+_0x5dd09d['id'],_0x5dd09d);FaxQueueEvents[_0x9ba1('0x4')](_0x5b102a,_0x5dd09d);_0x4a774d(null);};}for(var e in events){if(events[_0x9ba1('0x5')](e)){var event=events[e];FaxQueue[_0x9ba1('0x6')](e,emitEvent(event));}}module[_0x9ba1('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 4e16fcc..ccec62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9445=['lodash','util','../../config/logger','api','request-promise','path','rimraf','./faxQueue.attributes','exports','define','FaxQueue','fax_queues'];(function(_0x467cb1,_0x1fca21){var _0x584cd1=function(_0x56527f){while(--_0x56527f){_0x467cb1['push'](_0x467cb1['shift']());}};_0x584cd1(++_0x1fca21);}(_0x9445,0x78));var _0x5944=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9445[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x5944('0x0'));var util=require(_0x5944('0x1'));var logger=require(_0x5944('0x2'))(_0x5944('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5944('0x4'));var fs=require('fs');var path=require(_0x5944('0x5'));var rimraf=require(_0x5944('0x6'));var config=require('../../config/environment');var attributes=require(_0x5944('0x7'));module[_0x5944('0x8')]=function(_0x4cb278,_0x424ac8){return _0x4cb278[_0x5944('0x9')](_0x5944('0xa'),attributes,{'tableName':_0x5944('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf340=['exports','define','fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./faxQueue.attributes'];(function(_0xaad9f7,_0x1e07d0){var _0x30b0f3=function(_0x6a9455){while(--_0x6a9455){_0xaad9f7['push'](_0xaad9f7['shift']());}};_0x30b0f3(++_0x1e07d0);}(_0xf340,0x18f));var _0x0f34=function(_0x844eed,_0x3b1cf2){_0x844eed=_0x844eed-0x0;var _0x5b00b8=_0xf340[_0x844eed];return _0x5b00b8;};'use strict';var _=require(_0x0f34('0x0'));var util=require(_0x0f34('0x1'));var logger=require('../../config/logger')(_0x0f34('0x2'));var moment=require(_0x0f34('0x3'));var BPromise=require(_0x0f34('0x4'));var rp=require(_0x0f34('0x5'));var fs=require('fs');var path=require(_0x0f34('0x6'));var rimraf=require(_0x0f34('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f34('0x8'));module[_0x0f34('0x9')]=function(_0x1421c7,_0x4d4d92){return _0x1421c7[_0x0f34('0xa')]('FaxQueue',attributes,{'tableName':_0x0f34('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44d1ecf..bce3705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30e=['raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','where','attributes','limit','map','model','include','then','ShowFaxQueue','find'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xd30e,0xe2));var _0xed30=function(_0x11b454,_0x2039ef){_0x11b454=_0x11b454-0x0;var _0x495bc3=_0xd30e[_0x11b454];return _0x495bc3;};'use strict';var _=require(_0xed30('0x0'));var util=require(_0xed30('0x1'));var moment=require(_0xed30('0x2'));var BPromise=require(_0xed30('0x3'));var rs=require(_0xed30('0x4'));var fs=require('fs');var Redis=require(_0xed30('0x5'));var db=require(_0xed30('0x6'))['db'];var utils=require(_0xed30('0x7'));var logger=require(_0xed30('0x8'))(_0xed30('0x9'));var config=require(_0xed30('0xa'));var jayson=require(_0xed30('0xb'));var client=jayson[_0xed30('0xc')][_0xed30('0xd')]({'port':0x232a});config[_0xed30('0xe')]=_[_0xed30('0xf')](config[_0xed30('0xe')],{'host':_0xed30('0x10'),'port':0x18eb});var socket=require(_0xed30('0x11'))(new Redis(config[_0xed30('0xe')]));require('./faxQueue.socket')[_0xed30('0x12')](socket);function respondWithRpcPromise(_0x3c83cf,_0x58bcf6,_0x4308c2){return new BPromise(function(_0x4e3a52,_0x138521){return client[_0xed30('0x13')](_0x3c83cf,_0x4308c2)['then'](function(_0x480e94){logger[_0xed30('0x14')](_0xed30('0x15'),_0x58bcf6,_0xed30('0x16'));logger[_0xed30('0x17')](_0xed30('0x18'),_0x58bcf6,'request\x20sent',JSON[_0xed30('0x19')](_0x480e94));if(_0x480e94[_0xed30('0x1a')]){if(_0x480e94[_0xed30('0x1a')][_0xed30('0x1b')]===0x1f4){logger[_0xed30('0x1a')](_0xed30('0x15'),_0x58bcf6,_0x480e94['error'][_0xed30('0x1c')]);return _0x138521(_0x480e94[_0xed30('0x1a')]['message']);}logger['error'](_0xed30('0x15'),_0x58bcf6,_0x480e94[_0xed30('0x1a')][_0xed30('0x1c')]);return _0x4e3a52(_0x480e94[_0xed30('0x1a')][_0xed30('0x1c')]);}else{logger['info'](_0xed30('0x15'),_0x58bcf6,_0xed30('0x16'));_0x4e3a52(_0x480e94[_0xed30('0x1d')][_0xed30('0x1c')]);}})[_0xed30('0x1e')](function(_0x26d052){logger[_0xed30('0x1a')](_0xed30('0x15'),_0x58bcf6,_0x26d052);_0x138521(_0x26d052);});});}exports[_0xed30('0x1f')]=function(_0x12ee02){var _0x4b67f1=this;return new Promise(function(_0x4f8f72,_0x69300e){return db[_0xed30('0x20')][_0xed30('0x21')]({'raw':_0x12ee02['options']?_0x12ee02[_0xed30('0x22')]['raw']===undefined?!![]:![]:!![],'where':_0x12ee02[_0xed30('0x22')]?_0x12ee02[_0xed30('0x22')][_0xed30('0x23')]||null:null,'attributes':_0x12ee02['options']?_0x12ee02[_0xed30('0x22')][_0xed30('0x24')]||null:null,'limit':_0x12ee02['options']?_0x12ee02['options'][_0xed30('0x25')]||null:null,'include':_0x12ee02[_0xed30('0x22')]?_0x12ee02[_0xed30('0x22')]['include']?_[_0xed30('0x26')](_0x12ee02[_0xed30('0x22')]['include'],function(_0xf527f4){return{'model':db[_0xf527f4[_0xed30('0x27')]],'as':_0xf527f4['as'],'attributes':_0xf527f4['attributes'],'include':_0xf527f4['include']?_[_0xed30('0x26')](_0xf527f4[_0xed30('0x28')],function(_0x453cda){return{'model':db[_0x453cda['model']],'as':_0x453cda['as'],'attributes':_0x453cda[_0xed30('0x24')],'include':_0x453cda[_0xed30('0x28')]?_[_0xed30('0x26')](_0x453cda[_0xed30('0x28')],function(_0x5b1d59){return{'model':db[_0x5b1d59['model']],'as':_0x5b1d59['as'],'attributes':_0x5b1d59[_0xed30('0x24')]};}):[]};}):[]};}):[]:[]})[_0xed30('0x29')](function(_0x284671){logger[_0xed30('0x14')](_0xed30('0x1f'),_0x12ee02);logger['debug']('GetFaxQueue',_0x12ee02,JSON['stringify'](_0x284671));_0x4f8f72(_0x284671);})[_0xed30('0x1e')](function(_0x4d7966){logger[_0xed30('0x1a')](_0xed30('0x1f'),_0x4d7966['message'],_0x12ee02);_0x69300e(_0x4b67f1[_0xed30('0x1a')](0x1f4,_0x4d7966[_0xed30('0x1c')]));});});};exports[_0xed30('0x2a')]=function(_0xb4ca5a){var _0x2e689b=this;return new Promise(function(_0x3481ed,_0x3a8fad){return db[_0xed30('0x20')][_0xed30('0x2b')]({'raw':_0xb4ca5a[_0xed30('0x22')]?_0xb4ca5a[_0xed30('0x22')][_0xed30('0x2c')]===undefined?!![]:![]:!![],'where':_0xb4ca5a[_0xed30('0x22')]?_0xb4ca5a[_0xed30('0x22')][_0xed30('0x23')]||null:null,'attributes':_0xb4ca5a[_0xed30('0x22')]?_0xb4ca5a[_0xed30('0x22')]['attributes']||null:null,'include':_0xb4ca5a['options']?_0xb4ca5a['options']['include']?_[_0xed30('0x26')](_0xb4ca5a['options'][_0xed30('0x28')],function(_0x3823a2){return{'model':db[_0x3823a2[_0xed30('0x27')]],'as':_0x3823a2['as'],'attributes':_0x3823a2[_0xed30('0x24')],'include':_0x3823a2[_0xed30('0x28')]?_['map'](_0x3823a2[_0xed30('0x28')],function(_0x5e4c61){return{'model':db[_0x5e4c61[_0xed30('0x27')]],'as':_0x5e4c61['as'],'attributes':_0x5e4c61['attributes'],'include':_0x5e4c61[_0xed30('0x28')]?_[_0xed30('0x26')](_0x5e4c61[_0xed30('0x28')],function(_0x275303){return{'model':db[_0x275303['model']],'as':_0x275303['as'],'attributes':_0x275303['attributes']};}):[]};}):[]};}):[]:[]})[_0xed30('0x29')](function(_0x2086e1){logger[_0xed30('0x14')](_0xed30('0x2a'),_0xb4ca5a);logger[_0xed30('0x17')](_0xed30('0x2a'),_0xb4ca5a,JSON['stringify'](_0x2086e1));_0x3481ed(_0x2086e1);})[_0xed30('0x1e')](function(_0x2df9e9){logger['error'](_0xed30('0x2a'),_0x2df9e9[_0xed30('0x1c')],_0xb4ca5a);_0x3a8fad(_0x2e689b[_0xed30('0x1a')](0x1f4,_0x2df9e9[_0xed30('0x1c')]));});});};
\ No newline at end of file
+var _0xd8be=['register','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','message','info','result','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','include','map','model','then','stringify','ShowFaxQueue','find','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','localhost','./faxQueue.socket'];(function(_0x3c7a71,_0x517570){var _0x1a2726=function(_0x1ea252){while(--_0x1ea252){_0x3c7a71['push'](_0x3c7a71['shift']());}};_0x1a2726(++_0x517570);}(_0xd8be,0x16e));var _0xed8b=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xd8be[_0x34843e];return _0x598f7f;};'use strict';var _=require(_0xed8b('0x0'));var util=require(_0xed8b('0x1'));var moment=require(_0xed8b('0x2'));var BPromise=require(_0xed8b('0x3'));var rs=require(_0xed8b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed8b('0x5'))['db'];var utils=require(_0xed8b('0x6'));var logger=require(_0xed8b('0x7'))(_0xed8b('0x8'));var config=require(_0xed8b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xed8b('0xa')]['http']({'port':0x232a});config[_0xed8b('0xb')]=_['defaults'](config[_0xed8b('0xb')],{'host':_0xed8b('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xed8b('0xb')]));require(_0xed8b('0xd'))[_0xed8b('0xe')](socket);function respondWithRpcPromise(_0x289780,_0x4c7e06,_0x58f273){return new BPromise(function(_0x280ef9,_0x2ba4d7){return client['request'](_0x289780,_0x58f273)['then'](function(_0x453d81){logger['info'](_0xed8b('0xf'),_0x4c7e06,_0xed8b('0x10'));logger[_0xed8b('0x11')](_0xed8b('0x12'),_0x4c7e06,_0xed8b('0x10'),JSON['stringify'](_0x453d81));if(_0x453d81[_0xed8b('0x13')]){if(_0x453d81[_0xed8b('0x13')]['code']===0x1f4){logger[_0xed8b('0x13')]('FaxQueue,\x20%s,\x20%s',_0x4c7e06,_0x453d81['error']['message']);return _0x2ba4d7(_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);}logger[_0xed8b('0x13')](_0xed8b('0xf'),_0x4c7e06,_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);return _0x280ef9(_0x453d81[_0xed8b('0x13')][_0xed8b('0x14')]);}else{logger[_0xed8b('0x15')](_0xed8b('0xf'),_0x4c7e06,_0xed8b('0x10'));_0x280ef9(_0x453d81[_0xed8b('0x16')]['message']);}})['catch'](function(_0x27e635){logger['error'](_0xed8b('0xf'),_0x4c7e06,_0x27e635);_0x2ba4d7(_0x27e635);});});}exports[_0xed8b('0x17')]=function(_0x4774a9){var _0x2a975e=this;return new Promise(function(_0x33079c,_0x45cac7){return db[_0xed8b('0x18')][_0xed8b('0x19')]({'raw':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1b')]===undefined?!![]:![]:!![],'where':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9['options'][_0xed8b('0x1c')]||null:null,'attributes':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1d')]||null:null,'limit':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')]['limit']||null:null,'include':_0x4774a9[_0xed8b('0x1a')]?_0x4774a9[_0xed8b('0x1a')][_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x4774a9[_0xed8b('0x1a')]['include'],function(_0x5aa274){return{'model':db[_0x5aa274[_0xed8b('0x20')]],'as':_0x5aa274['as'],'attributes':_0x5aa274['attributes'],'include':_0x5aa274['include']?_['map'](_0x5aa274['include'],function(_0x1c286f){return{'model':db[_0x1c286f['model']],'as':_0x1c286f['as'],'attributes':_0x1c286f[_0xed8b('0x1d')],'include':_0x1c286f[_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x1c286f[_0xed8b('0x1e')],function(_0x105ea9){return{'model':db[_0x105ea9[_0xed8b('0x20')]],'as':_0x105ea9['as'],'attributes':_0x105ea9[_0xed8b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xed8b('0x21')](function(_0x16352d){logger[_0xed8b('0x15')]('GetFaxQueue',_0x4774a9);logger[_0xed8b('0x11')](_0xed8b('0x17'),_0x4774a9,JSON[_0xed8b('0x22')](_0x16352d));_0x33079c(_0x16352d);})['catch'](function(_0x5853f2){logger[_0xed8b('0x13')]('GetFaxQueue',_0x5853f2[_0xed8b('0x14')],_0x4774a9);_0x45cac7(_0x2a975e[_0xed8b('0x13')](0x1f4,_0x5853f2[_0xed8b('0x14')]));});});};exports[_0xed8b('0x23')]=function(_0x15d76a){var _0x4a4b0b=this;return new Promise(function(_0x57d19c,_0x122442){return db['FaxQueue'][_0xed8b('0x24')]({'raw':_0x15d76a['options']?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1b')]===undefined?!![]:![]:!![],'where':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')]['where']||null:null,'attributes':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1d')]||null:null,'include':_0x15d76a[_0xed8b('0x1a')]?_0x15d76a[_0xed8b('0x1a')][_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x15d76a['options'][_0xed8b('0x1e')],function(_0x291ee1){return{'model':db[_0x291ee1[_0xed8b('0x20')]],'as':_0x291ee1['as'],'attributes':_0x291ee1[_0xed8b('0x1d')],'include':_0x291ee1[_0xed8b('0x1e')]?_[_0xed8b('0x1f')](_0x291ee1[_0xed8b('0x1e')],function(_0x56a3d2){return{'model':db[_0x56a3d2[_0xed8b('0x20')]],'as':_0x56a3d2['as'],'attributes':_0x56a3d2['attributes'],'include':_0x56a3d2['include']?_[_0xed8b('0x1f')](_0x56a3d2[_0xed8b('0x1e')],function(_0x23c8e0){return{'model':db[_0x23c8e0[_0xed8b('0x20')]],'as':_0x23c8e0['as'],'attributes':_0x23c8e0['attributes']};}):[]};}):[]};}):[]:[]})[_0xed8b('0x21')](function(_0x16971c){logger[_0xed8b('0x15')](_0xed8b('0x23'),_0x15d76a);logger[_0xed8b('0x11')]('ShowFaxQueue',_0x15d76a,JSON[_0xed8b('0x22')](_0x16971c));_0x57d19c(_0x16971c);})[_0xed8b('0x25')](function(_0x3146fd){logger[_0xed8b('0x13')](_0xed8b('0x23'),_0x3146fd['message'],_0x15d76a);_0x122442(_0x4a4b0b[_0xed8b('0x13')](0x1f4,_0x3146fd[_0xed8b('0x14')]));});});};
\ No newline at end of file
index efb57dc..feb9367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x538a=['./faxQueue.events','save','remove','update','register','length','faxQueue:'];(function(_0x4739e2,_0x2d0be6){var _0x3e5ac2=function(_0x3e2468){while(--_0x3e2468){_0x4739e2['push'](_0x4739e2['shift']());}};_0x3e5ac2(++_0x2d0be6);}(_0x538a,0x196));var _0xa538=function(_0x48c382,_0x3dac7c){_0x48c382=_0x48c382-0x0;var _0x3dee78=_0x538a[_0x48c382];return _0x3dee78;};'use strict';var FaxQueueEvents=require(_0xa538('0x0'));var events=[_0xa538('0x1'),_0xa538('0x2'),_0xa538('0x3')];function createListener(_0x4e58eb,_0x32b3fc){return function(_0x2a0aa6){_0x32b3fc['emit'](_0x4e58eb,_0x2a0aa6);};}function removeListener(_0x3c5f55,_0x33cbc7){return function(){FaxQueueEvents['removeListener'](_0x3c5f55,_0x33cbc7);};}exports[_0xa538('0x4')]=function(_0x6cf762){for(var _0x3b8a66=0x0,_0x4a3d17=events[_0xa538('0x5')];_0x3b8a66<_0x4a3d17;_0x3b8a66++){var _0x1384c1=events[_0x3b8a66];var _0x4e8f2d=createListener(_0xa538('0x6')+_0x1384c1,_0x6cf762);FaxQueueEvents['on'](_0x1384c1,_0x4e8f2d);}};
\ No newline at end of file
+var _0xb8d9=['removeListener','faxQueue:','./faxQueue.events','save','remove','update','emit'];(function(_0xf090ee,_0x4ceb11){var _0x4e002f=function(_0x4b24c1){while(--_0x4b24c1){_0xf090ee['push'](_0xf090ee['shift']());}};_0x4e002f(++_0x4ceb11);}(_0xb8d9,0x175));var _0x9b8d=function(_0x193685,_0x2052b5){_0x193685=_0x193685-0x0;var _0x56f71f=_0xb8d9[_0x193685];return _0x56f71f;};'use strict';var FaxQueueEvents=require(_0x9b8d('0x0'));var events=[_0x9b8d('0x1'),_0x9b8d('0x2'),_0x9b8d('0x3')];function createListener(_0x1fb5eb,_0x1c200d){return function(_0x41e660){_0x1c200d[_0x9b8d('0x4')](_0x1fb5eb,_0x41e660);};}function removeListener(_0x3eb139,_0x27374f){return function(){FaxQueueEvents[_0x9b8d('0x5')](_0x3eb139,_0x27374f);};}exports['register']=function(_0x4a385f){for(var _0x3d7703=0x0,_0x41be69=events['length'];_0x3d7703<_0x41be69;_0x3d7703++){var _0x5c6d69=events[_0x3d7703];var _0x2f6edf=createListener(_0x9b8d('0x6')+_0x5c6d69,_0x4a385f);FaxQueueEvents['on'](_0x5c6d69,_0x2f6edf);}};
\ No newline at end of file
index 532dac7..acf40a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['getTeams','getAgents','post','create','addTeams','addAgents','put','update','destroy','delete','removeTeams','/:id/users','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x323f,0x1ee));var _0xf323=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x323f[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require('multer');var util=require(_0xf323('0x0'));var path=require('path');var timeout=require(_0xf323('0x1'));var express=require(_0xf323('0x2'));var router=express[_0xf323('0x3')]();var fs_extra=require(_0xf323('0x4'));var auth=require(_0xf323('0x5'));var interaction=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var controller=require(_0xf323('0x8'));router[_0xf323('0x9')]('/',auth[_0xf323('0xa')](),controller['index']);router[_0xf323('0x9')](_0xf323('0xb'),auth[_0xf323('0xa')](),controller[_0xf323('0xc')]);router[_0xf323('0x9')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0xe')]);router[_0xf323('0x9')](_0xf323('0xf'),auth[_0xf323('0xa')](),controller[_0xf323('0x10')]);router[_0xf323('0x9')](_0xf323('0x11'),auth[_0xf323('0xa')](),controller[_0xf323('0x12')]);router[_0xf323('0x9')]('/:id/users',auth[_0xf323('0xa')](),controller[_0xf323('0x13')]);router[_0xf323('0x14')]('/',auth['isAuthenticated'](),controller[_0xf323('0x15')]);router[_0xf323('0x14')](_0xf323('0x11'),auth[_0xf323('0xa')](),controller[_0xf323('0x16')]);router[_0xf323('0x14')]('/:id/users',auth['isAuthenticated'](),controller[_0xf323('0x17')]);router[_0xf323('0x18')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x19')]);router['delete'](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x1a')]);router[_0xf323('0x1b')]('/:id/teams',auth[_0xf323('0xa')](),controller[_0xf323('0x1c')]);router[_0xf323('0x1b')](_0xf323('0x1d'),auth['isAuthenticated'](),controller[_0xf323('0x1e')]);module[_0xf323('0x1f')]=router;
\ No newline at end of file
+var _0x3f8a=['delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addAgents','update'];(function(_0x53d687,_0xf02614){var _0x28f113=function(_0x579f9c){while(--_0x579f9c){_0x53d687['push'](_0x53d687['shift']());}};_0x28f113(++_0xf02614);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x52a39a,_0x40b582){_0x52a39a=_0x52a39a-0x0;var _0x5c2d68=_0x3f8a[_0x52a39a];return _0x5c2d68;};'use strict';var multer=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var path=require(_0xa3f8('0x2'));var timeout=require(_0xa3f8('0x3'));var express=require('express');var router=express[_0xa3f8('0x4')]();var fs_extra=require(_0xa3f8('0x5'));var auth=require(_0xa3f8('0x6'));var interaction=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var controller=require(_0xa3f8('0x9'));router[_0xa3f8('0xa')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xc')]);router[_0xa3f8('0xa')](_0xa3f8('0xd'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xe')]);router[_0xa3f8('0xa')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x10')]);router['get'](_0xa3f8('0x11'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x12')]);router[_0xa3f8('0xa')]('/:id/teams',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x13')]);router[_0xa3f8('0xa')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x15')]);router[_0xa3f8('0x16')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x17')]);router[_0xa3f8('0x16')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['addTeams']);router[_0xa3f8('0x16')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x19')]);router['put'](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1a')]);router[_0xa3f8('0x1b')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1c')]);router[_0xa3f8('0x1b')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['removeTeams']);router[_0xa3f8('0x1b')]('/:id/users',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1d')]);module[_0xa3f8('0x1e')]=router;
\ No newline at end of file
index 351da94..ad91d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed5c=['exports','STRING','DATE','sequelize'];(function(_0x57c9ac,_0x15e943){var _0x3d0908=function(_0x1011b3){while(--_0x1011b3){_0x57c9ac['push'](_0x57c9ac['shift']());}};_0x3d0908(++_0x15e943);}(_0xed5c,0x13f));var _0xced5=function(_0x576f24,_0x1da1aa){_0x576f24=_0x576f24-0x0;var _0x5ecb31=_0xed5c[_0x576f24];return _0x5ecb31;};'use strict';var moment=require('moment');var Sequelize=require(_0xced5('0x0'));module[_0xced5('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xced5('0x2')]},'joinAt':{'type':Sequelize[_0xced5('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xced5('0x3')]},'reason':{'type':Sequelize[_0xced5('0x2')]}};
\ No newline at end of file
+var _0xbb6e=['exports','STRING','DATE','moment','sequelize'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0xbb6e,0xe4));var _0xebb6=function(_0x4bf685,_0x58b489){_0x4bf685=_0x4bf685-0x0;var _0x66b91a=_0xbb6e[_0x4bf685];return _0x66b91a;};'use strict';var moment=require(_0xebb6('0x0'));var Sequelize=require(_0xebb6('0x1'));module[_0xebb6('0x2')]={'uniqueid':{'type':Sequelize[_0xebb6('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xebb6('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xebb6('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xebb6('0x3')]}};
\ No newline at end of file
index 5f2f103..480ce27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0531=['params','options','find','create','body','describe','eml-format','rimraf','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','save','then','error','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show'];(function(_0x12d033,_0x25fa2f){var _0x3b4e80=function(_0x46c1f4){while(--_0x46c1f4){_0x12d033['push'](_0x12d033['shift']());}};_0x3b4e80(++_0x25fa2f);}(_0x0531,0xde));var _0x1053=function(_0x49a57c,_0x2eb02c){_0x49a57c=_0x49a57c-0x0;var _0x4e0316=_0x0531[_0x49a57c];return _0x4e0316;};'use strict';var emlformat=require(_0x1053('0x0'));var rimraf=require(_0x1053('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1053('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1053('0x3'));var util=require(_0x1053('0x4'));var path=require(_0x1053('0x5'));var sox=require(_0x1053('0x6'));var csv=require(_0x1053('0x7'));var ejs=require(_0x1053('0x8'));var fs=require('fs');var fs_extra=require(_0x1053('0x9'));var _=require(_0x1053('0xa'));var squel=require(_0x1053('0xb'));var crypto=require(_0x1053('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1053('0xd'));var toCsv=require(_0x1053('0x7'));var querystring=require(_0x1053('0xe'));var Papa=require('papaparse');var Redis=require(_0x1053('0xf'));var authService=require(_0x1053('0x10'));var qs=require(_0x1053('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1053('0x12'))(_0x1053('0x13'));var utils=require('../../config/utils');var config=require(_0x1053('0x14'));var licenseUtil=require(_0x1053('0x15'));var db=require(_0x1053('0x16'))['db'];function respondWithStatusCode(_0x453a9c,_0x44b763){_0x44b763=_0x44b763||0xcc;return function(_0x28e0ae){if(_0x28e0ae){return _0x453a9c[_0x1053('0x17')](_0x44b763);}return _0x453a9c[_0x1053('0x18')](_0x44b763)[_0x1053('0x19')]();};}function respondWithResult(_0x2884b2,_0x5f477d){_0x5f477d=_0x5f477d||0xc8;return function(_0x4d6aa1){if(_0x4d6aa1){return _0x2884b2[_0x1053('0x18')](_0x5f477d)[_0x1053('0x1a')](_0x4d6aa1);}};}function respondWithFilteredResult(_0x41bf5c,_0x4db31d){return function(_0x5afba2){if(_0x5afba2){var _0x1f9067=typeof _0x4db31d[_0x1053('0x1b')]==='undefined'&&typeof _0x4db31d['limit']===_0x1053('0x1c');var _0x3c60a4=_0x5afba2[_0x1053('0x1d')];var _0x26c285=_0x1f9067?0x0:_0x4db31d['offset'];var _0x3523c0=_0x1f9067?_0x5afba2[_0x1053('0x1d')]:_0x4db31d[_0x1053('0x1b')]+_0x4db31d['limit'];var _0x259fb6;if(_0x3523c0>=_0x3c60a4){_0x3523c0=_0x3c60a4;_0x259fb6=0xc8;}else{_0x259fb6=0xce;}_0x41bf5c['status'](_0x259fb6);return _0x41bf5c[_0x1053('0x1e')]('Content-Range',_0x26c285+'-'+_0x3523c0+'/'+_0x3c60a4)['json'](_0x5afba2);}return null;};}function patchUpdates(_0x1b7f9e){return function(_0x448651){try{jsonpatch[_0x1053('0x1f')](_0x448651,_0x1b7f9e,!![]);}catch(_0x53a626){return BPromise['reject'](_0x53a626);}return _0x448651[_0x1053('0x20')]();};}function saveUpdates(_0x15204b,_0x203930){return function(_0x27371a){if(_0x27371a){return _0x27371a['update'](_0x15204b)[_0x1053('0x21')](function(_0x5c2710){return _0x5c2710;});}return null;};}function removeEntity(_0x2a13a7,_0x485f14){return function(_0x901db2){if(_0x901db2){return _0x901db2['destroy']()['then'](function(){_0x2a13a7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dc2c0,_0x4f2279){return function(_0x423d1c){if(!_0x423d1c){_0x3dc2c0[_0x1053('0x17')](0x194);}return _0x423d1c;};}function handleError(_0x136541,_0x25f17e){_0x25f17e=_0x25f17e||0x1f4;return function(_0x1132f){logger[_0x1053('0x22')](_0x1132f[_0x1053('0x23')]);if(_0x1132f['name']){delete _0x1132f[_0x1053('0x24')];}_0x136541['status'](_0x25f17e)[_0x1053('0x25')](_0x1132f);};}exports[_0x1053('0x26')]=function(_0x430601,_0x309e9d){var _0x178545={},_0x22cf83={},_0x30e8d1={'count':0x0,'rows':[]};var _0x349c1c=_[_0x1053('0x27')](db[_0x1053('0x28')][_0x1053('0x29')],function(_0x27c11e){return{'name':_0x27c11e[_0x1053('0x2a')],'type':_0x27c11e[_0x1053('0x2b')]['key']};});_0x22cf83[_0x1053('0x2c')]=_[_0x1053('0x27')](_0x349c1c,'name');_0x22cf83[_0x1053('0x2d')]=_[_0x1053('0x2e')](_0x430601[_0x1053('0x2d')]);_0x22cf83[_0x1053('0x2f')]=_[_0x1053('0x30')](_0x22cf83[_0x1053('0x2c')],_0x22cf83[_0x1053('0x2d')]);_0x178545[_0x1053('0x31')]=_[_0x1053('0x30')](_0x22cf83[_0x1053('0x2c')],qs[_0x1053('0x32')](_0x430601['query'][_0x1053('0x32')]));_0x178545[_0x1053('0x31')]=_0x178545[_0x1053('0x31')][_0x1053('0x33')]?_0x178545['attributes']:_0x22cf83[_0x1053('0x2c')];if(!_0x430601[_0x1053('0x2d')][_0x1053('0x34')](_0x1053('0x35'))){_0x178545[_0x1053('0x36')]=qs[_0x1053('0x36')](_0x430601[_0x1053('0x2d')][_0x1053('0x36')]);_0x178545['offset']=qs[_0x1053('0x1b')](_0x430601[_0x1053('0x2d')]['offset']);}_0x178545[_0x1053('0x37')]=qs['sort'](_0x430601['query']['sort']);_0x178545[_0x1053('0x38')]=qs[_0x1053('0x2f')](_[_0x1053('0x39')](_0x430601[_0x1053('0x2d')],_0x22cf83[_0x1053('0x2f')]),_0x349c1c);if(_0x430601[_0x1053('0x2d')]['filter']){_0x178545[_0x1053('0x38')]=_[_0x1053('0x3a')](_0x178545[_0x1053('0x38')],{'$or':_[_0x1053('0x27')](_0x349c1c,function(_0x1bdb5e){if(_0x1bdb5e[_0x1053('0x2b')]!==_0x1053('0x3b')){var _0x4532eb={};_0x4532eb[_0x1bdb5e[_0x1053('0x24')]]={'$like':'%'+_0x430601[_0x1053('0x2d')][_0x1053('0x3c')]+'%'};return _0x4532eb;}})});}_0x178545=_[_0x1053('0x3a')]({},_0x178545,_0x430601['options']);var _0x36508b={'where':_0x178545[_0x1053('0x38')]};return db[_0x1053('0x28')][_0x1053('0x1d')](_0x36508b)[_0x1053('0x21')](function(_0x51b168){_0x30e8d1[_0x1053('0x1d')]=_0x51b168;if(_0x430601[_0x1053('0x2d')][_0x1053('0x3d')]){_0x178545['include']=[{'all':!![]}];}return db[_0x1053('0x28')][_0x1053('0x3e')](_0x178545);})[_0x1053('0x21')](function(_0x11cd06){_0x30e8d1[_0x1053('0x3f')]=_0x11cd06;return _0x30e8d1;})[_0x1053('0x21')](respondWithFilteredResult(_0x309e9d,_0x178545))[_0x1053('0x40')](handleError(_0x309e9d,null));};exports[_0x1053('0x41')]=function(_0x9b51d8,_0x42b3ff){var _0x1153d7={'raw':!![],'where':{'id':_0x9b51d8[_0x1053('0x42')]['id']}},_0x44d267={};_0x44d267[_0x1053('0x2c')]=_[_0x1053('0x2e')](db[_0x1053('0x28')][_0x1053('0x29')]);_0x44d267['query']=_[_0x1053('0x2e')](_0x9b51d8['query']);_0x44d267[_0x1053('0x2f')]=_[_0x1053('0x30')](_0x44d267[_0x1053('0x2c')],_0x44d267[_0x1053('0x2d')]);_0x1153d7[_0x1053('0x31')]=_[_0x1053('0x30')](_0x44d267[_0x1053('0x2c')],qs[_0x1053('0x32')](_0x9b51d8[_0x1053('0x2d')][_0x1053('0x32')]));_0x1153d7['attributes']=_0x1153d7[_0x1053('0x31')][_0x1053('0x33')]?_0x1153d7['attributes']:_0x44d267[_0x1053('0x2c')];if(_0x9b51d8[_0x1053('0x2d')][_0x1053('0x3d')]){_0x1153d7['include']=[{'all':!![]}];}_0x1153d7=_[_0x1053('0x3a')]({},_0x1153d7,_0x9b51d8[_0x1053('0x43')]);return db['FaxQueueReport'][_0x1053('0x44')](_0x1153d7)[_0x1053('0x21')](handleEntityNotFound(_0x42b3ff,null))[_0x1053('0x21')](respondWithResult(_0x42b3ff,null))[_0x1053('0x40')](handleError(_0x42b3ff,null));};exports['create']=function(_0x533e4c,_0x267847){return db[_0x1053('0x28')][_0x1053('0x45')](_0x533e4c[_0x1053('0x46')],{})[_0x1053('0x21')](respondWithResult(_0x267847,0xc9))[_0x1053('0x40')](handleError(_0x267847,null));};exports['update']=function(_0x3b16c4,_0x1066e7){if(_0x3b16c4[_0x1053('0x46')]['id']){delete _0x3b16c4[_0x1053('0x46')]['id'];}return db[_0x1053('0x28')][_0x1053('0x44')]({'where':{'id':_0x3b16c4[_0x1053('0x42')]['id']}})[_0x1053('0x21')](handleEntityNotFound(_0x1066e7,null))['then'](saveUpdates(_0x3b16c4['body'],null))[_0x1053('0x21')](respondWithResult(_0x1066e7,null))[_0x1053('0x40')](handleError(_0x1066e7,null));};exports['destroy']=function(_0x204ac8,_0x828bc3){return db[_0x1053('0x28')][_0x1053('0x44')]({'where':{'id':_0x204ac8[_0x1053('0x42')]['id']}})['then'](handleEntityNotFound(_0x828bc3,null))[_0x1053('0x21')](removeEntity(_0x828bc3,null))[_0x1053('0x40')](handleError(_0x828bc3,null));};exports[_0x1053('0x47')]=function(_0x2df04a,_0x2686ee){return db['FaxQueueReport'][_0x1053('0x47')]()[_0x1053('0x21')](respondWithResult(_0x2686ee,null))['catch'](handleError(_0x2686ee,null));};
\ No newline at end of file
+var _0xf996=['limit','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','FaxQueueReport','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','count'];(function(_0x48910,_0x50b6dd){var _0x49cc55=function(_0x1d80e5){while(--_0x1d80e5){_0x48910['push'](_0x48910['shift']());}};_0x49cc55(++_0x50b6dd);}(_0xf996,0x74));var _0x6f99=function(_0x4fec33,_0x25a458){_0x4fec33=_0x4fec33-0x0;var _0x5bac25=_0xf996[_0x4fec33];return _0x5bac25;};'use strict';var emlformat=require(_0x6f99('0x0'));var rimraf=require(_0x6f99('0x1'));var zipdir=require(_0x6f99('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6f99('0x4'));var util=require(_0x6f99('0x5'));var path=require(_0x6f99('0x6'));var sox=require(_0x6f99('0x7'));var csv=require(_0x6f99('0x8'));var ejs=require(_0x6f99('0x9'));var fs=require('fs');var fs_extra=require(_0x6f99('0xa'));var _=require(_0x6f99('0xb'));var squel=require(_0x6f99('0xc'));var crypto=require(_0x6f99('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6f99('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6f99('0xf'));var Papa=require(_0x6f99('0x10'));var Redis=require(_0x6f99('0x11'));var authService=require(_0x6f99('0x12'));var qs=require(_0x6f99('0x13'));var as=require(_0x6f99('0x14'));var hardwareService=require(_0x6f99('0x15'));var logger=require(_0x6f99('0x16'))(_0x6f99('0x17'));var utils=require('../../config/utils');var config=require(_0x6f99('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x55e7f0,_0x12081d){_0x12081d=_0x12081d||0xcc;return function(_0xa1af95){if(_0xa1af95){return _0x55e7f0[_0x6f99('0x19')](_0x12081d);}return _0x55e7f0[_0x6f99('0x1a')](_0x12081d)[_0x6f99('0x1b')]();};}function respondWithResult(_0x7aea00,_0xf5d4df){_0xf5d4df=_0xf5d4df||0xc8;return function(_0xb9874a){if(_0xb9874a){return _0x7aea00[_0x6f99('0x1a')](_0xf5d4df)[_0x6f99('0x1c')](_0xb9874a);}};}function respondWithFilteredResult(_0x1534e9,_0x1c7733){return function(_0x537f3d){if(_0x537f3d){var _0x293937=typeof _0x1c7733[_0x6f99('0x1d')]==='undefined'&&typeof _0x1c7733['limit']===_0x6f99('0x1e');var _0x5b3638=_0x537f3d[_0x6f99('0x1f')];var _0x210360=_0x293937?0x0:_0x1c7733[_0x6f99('0x1d')];var _0x25d50b=_0x293937?_0x537f3d[_0x6f99('0x1f')]:_0x1c7733['offset']+_0x1c7733[_0x6f99('0x20')];var _0x5377cb;if(_0x25d50b>=_0x5b3638){_0x25d50b=_0x5b3638;_0x5377cb=0xc8;}else{_0x5377cb=0xce;}_0x1534e9[_0x6f99('0x1a')](_0x5377cb);return _0x1534e9[_0x6f99('0x21')](_0x6f99('0x22'),_0x210360+'-'+_0x25d50b+'/'+_0x5b3638)[_0x6f99('0x1c')](_0x537f3d);}return null;};}function patchUpdates(_0x1dc9e5){return function(_0xf66bde){try{jsonpatch['apply'](_0xf66bde,_0x1dc9e5,!![]);}catch(_0x4c4d00){return BPromise[_0x6f99('0x23')](_0x4c4d00);}return _0xf66bde[_0x6f99('0x24')]();};}function saveUpdates(_0x4974ff,_0x497fd7){return function(_0x1d4dc3){if(_0x1d4dc3){return _0x1d4dc3[_0x6f99('0x25')](_0x4974ff)[_0x6f99('0x26')](function(_0xe3e6ab){return _0xe3e6ab;});}return null;};}function removeEntity(_0x290c88,_0x1174a2){return function(_0x2e7b94){if(_0x2e7b94){return _0x2e7b94[_0x6f99('0x27')]()[_0x6f99('0x26')](function(){_0x290c88[_0x6f99('0x1a')](0xcc)[_0x6f99('0x1b')]();});}};}function handleEntityNotFound(_0x1f8078,_0x21a5c8){return function(_0x381e92){if(!_0x381e92){_0x1f8078['sendStatus'](0x194);}return _0x381e92;};}function handleError(_0x1aff24,_0x201070){_0x201070=_0x201070||0x1f4;return function(_0x4c9572){logger['error'](_0x4c9572[_0x6f99('0x28')]);if(_0x4c9572[_0x6f99('0x29')]){delete _0x4c9572['name'];}_0x1aff24[_0x6f99('0x1a')](_0x201070)[_0x6f99('0x2a')](_0x4c9572);};}exports['index']=function(_0x45fe22,_0x3c1012){var _0x513519={},_0x21eb46={},_0x3ef6c5={'count':0x0,'rows':[]};var _0x5e10e2=_[_0x6f99('0x2b')](db[_0x6f99('0x2c')][_0x6f99('0x2d')],function(_0x4aa40c){return{'name':_0x4aa40c[_0x6f99('0x2e')],'type':_0x4aa40c[_0x6f99('0x2f')]['key']};});_0x21eb46['model']=_[_0x6f99('0x2b')](_0x5e10e2,_0x6f99('0x29'));_0x21eb46[_0x6f99('0x30')]=_[_0x6f99('0x31')](_0x45fe22[_0x6f99('0x30')]);_0x21eb46[_0x6f99('0x32')]=_['intersection'](_0x21eb46['model'],_0x21eb46[_0x6f99('0x30')]);_0x513519[_0x6f99('0x33')]=_[_0x6f99('0x34')](_0x21eb46[_0x6f99('0x35')],qs[_0x6f99('0x36')](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x36')]));_0x513519[_0x6f99('0x33')]=_0x513519[_0x6f99('0x33')][_0x6f99('0x37')]?_0x513519[_0x6f99('0x33')]:_0x21eb46['model'];if(!_0x45fe22[_0x6f99('0x30')][_0x6f99('0x38')](_0x6f99('0x39'))){_0x513519[_0x6f99('0x20')]=qs[_0x6f99('0x20')](_0x45fe22['query'][_0x6f99('0x20')]);_0x513519[_0x6f99('0x1d')]=qs['offset'](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x1d')]);}_0x513519[_0x6f99('0x3a')]=qs[_0x6f99('0x3b')](_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3b')]);_0x513519[_0x6f99('0x3c')]=qs[_0x6f99('0x32')](_['pick'](_0x45fe22[_0x6f99('0x30')],_0x21eb46['filters']),_0x5e10e2);if(_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3d')]){_0x513519[_0x6f99('0x3c')]=_[_0x6f99('0x3e')](_0x513519['where'],{'$or':_[_0x6f99('0x2b')](_0x5e10e2,function(_0x4ee7ce){if(_0x4ee7ce[_0x6f99('0x2f')]!==_0x6f99('0x3f')){var _0x2c26a1={};_0x2c26a1[_0x4ee7ce[_0x6f99('0x29')]]={'$like':'%'+_0x45fe22[_0x6f99('0x30')][_0x6f99('0x3d')]+'%'};return _0x2c26a1;}})});}_0x513519=_[_0x6f99('0x3e')]({},_0x513519,_0x45fe22['options']);var _0x35fb0a={'where':_0x513519[_0x6f99('0x3c')]};return db[_0x6f99('0x2c')]['count'](_0x35fb0a)[_0x6f99('0x26')](function(_0x327e98){_0x3ef6c5[_0x6f99('0x1f')]=_0x327e98;if(_0x45fe22[_0x6f99('0x30')][_0x6f99('0x40')]){_0x513519[_0x6f99('0x41')]=[{'all':!![]}];}return db[_0x6f99('0x2c')][_0x6f99('0x42')](_0x513519);})['then'](function(_0x206bc8){_0x3ef6c5['rows']=_0x206bc8;return _0x3ef6c5;})[_0x6f99('0x26')](respondWithFilteredResult(_0x3c1012,_0x513519))[_0x6f99('0x43')](handleError(_0x3c1012,null));};exports['show']=function(_0x26e091,_0x27ae7f){var _0x1934c4={'raw':!![],'where':{'id':_0x26e091['params']['id']}},_0x1fd388={};_0x1fd388[_0x6f99('0x35')]=_[_0x6f99('0x31')](db[_0x6f99('0x2c')]['rawAttributes']);_0x1fd388[_0x6f99('0x30')]=_[_0x6f99('0x31')](_0x26e091[_0x6f99('0x30')]);_0x1fd388[_0x6f99('0x32')]=_[_0x6f99('0x34')](_0x1fd388[_0x6f99('0x35')],_0x1fd388[_0x6f99('0x30')]);_0x1934c4[_0x6f99('0x33')]=_['intersection'](_0x1fd388[_0x6f99('0x35')],qs['fields'](_0x26e091[_0x6f99('0x30')]['fields']));_0x1934c4[_0x6f99('0x33')]=_0x1934c4[_0x6f99('0x33')][_0x6f99('0x37')]?_0x1934c4[_0x6f99('0x33')]:_0x1fd388[_0x6f99('0x35')];if(_0x26e091[_0x6f99('0x30')][_0x6f99('0x40')]){_0x1934c4['include']=[{'all':!![]}];}_0x1934c4=_[_0x6f99('0x3e')]({},_0x1934c4,_0x26e091[_0x6f99('0x44')]);return db['FaxQueueReport'][_0x6f99('0x45')](_0x1934c4)[_0x6f99('0x26')](handleEntityNotFound(_0x27ae7f,null))[_0x6f99('0x26')](respondWithResult(_0x27ae7f,null))[_0x6f99('0x43')](handleError(_0x27ae7f,null));};exports[_0x6f99('0x46')]=function(_0x51fd93,_0x118e87){return db[_0x6f99('0x2c')][_0x6f99('0x46')](_0x51fd93[_0x6f99('0x47')],{})[_0x6f99('0x26')](respondWithResult(_0x118e87,0xc9))[_0x6f99('0x43')](handleError(_0x118e87,null));};exports[_0x6f99('0x25')]=function(_0x20c80d,_0x2c6cd8){if(_0x20c80d[_0x6f99('0x47')]['id']){delete _0x20c80d[_0x6f99('0x47')]['id'];}return db[_0x6f99('0x2c')]['find']({'where':{'id':_0x20c80d[_0x6f99('0x48')]['id']}})[_0x6f99('0x26')](handleEntityNotFound(_0x2c6cd8,null))[_0x6f99('0x26')](saveUpdates(_0x20c80d[_0x6f99('0x47')],null))[_0x6f99('0x26')](respondWithResult(_0x2c6cd8,null))[_0x6f99('0x43')](handleError(_0x2c6cd8,null));};exports['destroy']=function(_0x321944,_0x2ee25e){return db['FaxQueueReport'][_0x6f99('0x45')]({'where':{'id':_0x321944[_0x6f99('0x48')]['id']}})[_0x6f99('0x26')](handleEntityNotFound(_0x2ee25e,null))[_0x6f99('0x26')](removeEntity(_0x2ee25e,null))[_0x6f99('0x43')](handleError(_0x2ee25e,null));};exports['describe']=function(_0x572aea,_0x3d82c4){return db['FaxQueueReport'][_0x6f99('0x49')]()[_0x6f99('0x26')](respondWithResult(_0x3d82c4,null))[_0x6f99('0x43')](handleError(_0x3d82c4,null));};
\ No newline at end of file
index a8a0c19..81664d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash'];(function(_0x9a013c,_0x24010b){var _0x1113f8=function(_0x245f1b){while(--_0x245f1b){_0x9a013c['push'](_0x9a013c['shift']());}};_0x1113f8(++_0x24010b);}(_0xf494,0x1c6));var _0x4f49=function(_0x1e96d3,_0x522dbe){_0x1e96d3=_0x1e96d3-0x0;var _0x1454e0=_0xf494[_0x1e96d3];return _0x1454e0;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x1a4e65,_0x477f1b){var _0x3c371e=function(_0x4b3e08){while(--_0x4b3e08){_0x1a4e65['push'](_0x1a4e65['shift']());}};_0x3c371e(++_0x477f1b);}(_0xe14b,0x93));var _0xbe14=function(_0x419eb9,_0xa710fc){_0x419eb9=_0x419eb9-0x0;var _0x31875b=_0xe14b[_0x419eb9];return _0x31875b;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ac619b2..fb44a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x427c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','stringify','update','where','UpdateFaxQueueReport','util','moment','bluebird','randomstring'];(function(_0x309251,_0x59a3d3){var _0x3c6e84=function(_0x2c535){while(--_0x2c535){_0x309251['push'](_0x309251['shift']());}};_0x3c6e84(++_0x59a3d3);}(_0x427c,0x125));var _0xc427=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x427c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xc427('0x0'));var moment=require(_0xc427('0x1'));var BPromise=require(_0xc427('0x2'));var rs=require(_0xc427('0x3'));var fs=require('fs');var Redis=require(_0xc427('0x4'));var db=require(_0xc427('0x5'))['db'];var utils=require(_0xc427('0x6'));var logger=require(_0xc427('0x7'))(_0xc427('0x8'));var config=require(_0xc427('0x9'));var jayson=require(_0xc427('0xa'));var client=jayson['client'][_0xc427('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d04eb,_0x51576e,_0x466627){return new BPromise(function(_0xd95818,_0x2c2514){return client[_0xc427('0xc')](_0x4d04eb,_0x466627)[_0xc427('0xd')](function(_0x1f7f8d){logger[_0xc427('0xe')](_0xc427('0xf'),_0x51576e,'request\x20sent');logger[_0xc427('0x10')](_0xc427('0x11'),_0x51576e,_0xc427('0x12'),JSON['stringify'](_0x1f7f8d));if(_0x1f7f8d[_0xc427('0x13')]){if(_0x1f7f8d['error']['code']===0x1f4){logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x51576e,_0x1f7f8d['error'][_0xc427('0x14')]);return _0x2c2514(_0x1f7f8d['error'][_0xc427('0x14')]);}logger[_0xc427('0x13')]('FaxQueueReport,\x20%s,\x20%s',_0x51576e,_0x1f7f8d[_0xc427('0x13')]['message']);return _0xd95818(_0x1f7f8d[_0xc427('0x13')][_0xc427('0x14')]);}else{logger[_0xc427('0xe')](_0xc427('0xf'),_0x51576e,_0xc427('0x12'));_0xd95818(_0x1f7f8d[_0xc427('0x15')][_0xc427('0x14')]);}})[_0xc427('0x16')](function(_0x3061ea){logger[_0xc427('0x13')](_0xc427('0xf'),_0x51576e,_0x3061ea);_0x2c2514(_0x3061ea);});});}exports[_0xc427('0x17')]=function(_0x10728f){var _0x5b9664=this;return new Promise(function(_0x4d32ac,_0x2be2c4){return db[_0xc427('0x18')][_0xc427('0x19')](_0x10728f[_0xc427('0x1a')],{'raw':_0x10728f[_0xc427('0x1b')]?_0x10728f[_0xc427('0x1b')][_0xc427('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x96ae63){logger['info'](_0xc427('0x17'),_0x10728f);logger[_0xc427('0x10')](_0xc427('0x17'),_0x10728f,JSON[_0xc427('0x1d')](_0x96ae63));_0x4d32ac(_0x96ae63);})[_0xc427('0x16')](function(_0x4e9abb){logger[_0xc427('0x13')](_0xc427('0x17'),_0x4e9abb[_0xc427('0x14')],_0x10728f);_0x2be2c4(_0x5b9664[_0xc427('0x13')](0x1f4,_0x4e9abb[_0xc427('0x14')]));});});};exports['UpdateFaxQueueReport']=function(_0x54dead){var _0x1ddf59=this;return new Promise(function(_0x1d436e,_0x48491a){return db['FaxQueueReport'][_0xc427('0x1e')](_0x54dead['body'],{'raw':_0x54dead['options']?_0x54dead[_0xc427('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54dead[_0xc427('0x1b')]?_0x54dead[_0xc427('0x1b')][_0xc427('0x1f')]||null:null,'attributes':_0x54dead[_0xc427('0x1b')]?_0x54dead[_0xc427('0x1b')]['attributes']||null:null,'limit':_0x54dead['options']?_0x54dead['options']['limit']||null:null})[_0xc427('0xd')](function(_0xed3275){logger['info'](_0xc427('0x20'),_0x54dead);logger['debug'](_0xc427('0x20'),_0x54dead,JSON[_0xc427('0x1d')](_0xed3275));_0x1d436e(_0xed3275);})[_0xc427('0x16')](function(_0x1220f8){logger[_0xc427('0x13')]('UpdateFaxQueueReport',_0x1220f8['message'],_0x54dead);_0x48491a(_0x1ddf59[_0xc427('0x13')](0x1f4,_0x1220f8[_0xc427('0x14')]));});});};
\ No newline at end of file
+var _0xdfa5=['error','code','message','result','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','catch','UpdateFaxQueueReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x108439,_0x12487b){var _0x3168a3=function(_0x159aaf){while(--_0x159aaf){_0x108439['push'](_0x108439['shift']());}};_0x3168a3(++_0x12487b);}(_0xdfa5,0xfe));var _0x5dfa=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0xdfa5[_0x5e4563];return _0x8d1bf5;};'use strict';var _=require(_0x5dfa('0x0'));var util=require(_0x5dfa('0x1'));var moment=require('moment');var BPromise=require(_0x5dfa('0x2'));var rs=require(_0x5dfa('0x3'));var fs=require('fs');var Redis=require(_0x5dfa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5dfa('0x5'));var logger=require(_0x5dfa('0x6'))('rpc');var config=require(_0x5dfa('0x7'));var jayson=require(_0x5dfa('0x8'));var client=jayson['client'][_0x5dfa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x255c12,_0x8f470b,_0x17108b){return new BPromise(function(_0x8cfb46,_0x4f7666){return client[_0x5dfa('0xa')](_0x255c12,_0x17108b)[_0x5dfa('0xb')](function(_0x5cc4a4){logger[_0x5dfa('0xc')](_0x5dfa('0xd'),_0x8f470b,_0x5dfa('0xe'));logger[_0x5dfa('0xf')](_0x5dfa('0x10'),_0x8f470b,_0x5dfa('0xe'),JSON[_0x5dfa('0x11')](_0x5cc4a4));if(_0x5cc4a4[_0x5dfa('0x12')]){if(_0x5cc4a4[_0x5dfa('0x12')][_0x5dfa('0x13')]===0x1f4){logger[_0x5dfa('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x8f470b,_0x5cc4a4[_0x5dfa('0x12')]['message']);return _0x4f7666(_0x5cc4a4[_0x5dfa('0x12')][_0x5dfa('0x14')]);}logger[_0x5dfa('0x12')](_0x5dfa('0xd'),_0x8f470b,_0x5cc4a4[_0x5dfa('0x12')]['message']);return _0x8cfb46(_0x5cc4a4[_0x5dfa('0x12')]['message']);}else{logger[_0x5dfa('0xc')](_0x5dfa('0xd'),_0x8f470b,'request\x20sent');_0x8cfb46(_0x5cc4a4[_0x5dfa('0x15')][_0x5dfa('0x14')]);}})['catch'](function(_0x28d4d6){logger[_0x5dfa('0x12')](_0x5dfa('0xd'),_0x8f470b,_0x28d4d6);_0x4f7666(_0x28d4d6);});});}exports[_0x5dfa('0x16')]=function(_0x26b4fd){var _0x42d79d=this;return new Promise(function(_0x407b49,_0xfac9e0){return db[_0x5dfa('0x17')][_0x5dfa('0x18')](_0x26b4fd[_0x5dfa('0x19')],{'raw':_0x26b4fd[_0x5dfa('0x1a')]?_0x26b4fd['options'][_0x5dfa('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x5a101e){logger['info'](_0x5dfa('0x16'),_0x26b4fd);logger[_0x5dfa('0xf')](_0x5dfa('0x16'),_0x26b4fd,JSON['stringify'](_0x5a101e));_0x407b49(_0x5a101e);})[_0x5dfa('0x1c')](function(_0x4d3194){logger[_0x5dfa('0x12')]('CreateFaxQueueReport',_0x4d3194[_0x5dfa('0x14')],_0x26b4fd);_0xfac9e0(_0x42d79d[_0x5dfa('0x12')](0x1f4,_0x4d3194[_0x5dfa('0x14')]));});});};exports[_0x5dfa('0x1d')]=function(_0x3ccc63){var _0x37259b=this;return new Promise(function(_0x1aa632,_0x50ff2f){return db[_0x5dfa('0x17')][_0x5dfa('0x1e')](_0x3ccc63[_0x5dfa('0x19')],{'raw':_0x3ccc63[_0x5dfa('0x1a')]?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ccc63['options']?_0x3ccc63['options'][_0x5dfa('0x1f')]||null:null,'attributes':_0x3ccc63['options']?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x20')]||null:null,'limit':_0x3ccc63[_0x5dfa('0x1a')]?_0x3ccc63[_0x5dfa('0x1a')][_0x5dfa('0x21')]||null:null})[_0x5dfa('0xb')](function(_0x25bdfd){logger[_0x5dfa('0xc')](_0x5dfa('0x1d'),_0x3ccc63);logger[_0x5dfa('0xf')](_0x5dfa('0x1d'),_0x3ccc63,JSON[_0x5dfa('0x11')](_0x25bdfd));_0x1aa632(_0x25bdfd);})[_0x5dfa('0x1c')](function(_0x288eef){logger[_0x5dfa('0x12')](_0x5dfa('0x1d'),_0x288eef[_0x5dfa('0x14')],_0x3ccc63);_0x50ff2f(_0x37259b[_0x5dfa('0x12')](0x1f4,_0x288eef['message']));});});};
\ No newline at end of file
index 6dbf947..1c856f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb0=['describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe'];(function(_0x16c458,_0x4ae140){var _0x30beb1=function(_0x182c72){while(--_0x182c72){_0x16c458['push'](_0x16c458['shift']());}};_0x30beb1(++_0x4ae140);}(_0xbfb0,0x77));var _0x0bfb=function(_0xf80b3,_0x25d5f3){_0xf80b3=_0xf80b3-0x0;var _0x10c489=_0xbfb0[_0xf80b3];return _0x10c489;};'use strict';var multer=require(_0x0bfb('0x0'));var util=require(_0x0bfb('0x1'));var path=require(_0x0bfb('0x2'));var timeout=require(_0x0bfb('0x3'));var express=require(_0x0bfb('0x4'));var router=express[_0x0bfb('0x5')]();var fs_extra=require(_0x0bfb('0x6'));var auth=require(_0x0bfb('0x7'));var interaction=require(_0x0bfb('0x8'));var config=require(_0x0bfb('0x9'));var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0x0bfb('0xa')](),controller['index']);router[_0x0bfb('0xb')](_0x0bfb('0xc'),auth[_0x0bfb('0xa')](),controller[_0x0bfb('0xd')]);router[_0x0bfb('0xb')](_0x0bfb('0xe'),auth[_0x0bfb('0xa')](),controller[_0x0bfb('0xf')]);router[_0x0bfb('0x10')]('/',auth['isAuthenticated'](),controller[_0x0bfb('0x11')]);router[_0x0bfb('0x12')](_0x0bfb('0xe'),auth[_0x0bfb('0xa')](),controller[_0x0bfb('0x13')]);router[_0x0bfb('0x14')](_0x0bfb('0xe'),auth[_0x0bfb('0xa')](),controller[_0x0bfb('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xb64c=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','put','/:id','destroy','exports','multer','util','path','express'];(function(_0xce090d,_0x5d63c6){var _0x17de73=function(_0x2ecd36){while(--_0x2ecd36){_0xce090d['push'](_0xce090d['shift']());}};_0x17de73(++_0x5d63c6);}(_0xb64c,0xba));var _0xcb64=function(_0x4978de,_0x5912e4){_0x4978de=_0x4978de-0x0;var _0x675221=_0xb64c[_0x4978de];return _0x675221;};'use strict';var multer=require(_0xcb64('0x0'));var util=require(_0xcb64('0x1'));var path=require(_0xcb64('0x2'));var timeout=require('connect-timeout');var express=require(_0xcb64('0x3'));var router=express[_0xcb64('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcb64('0x5'));var interaction=require(_0xcb64('0x6'));var config=require(_0xcb64('0x7'));var controller=require(_0xcb64('0x8'));router[_0xcb64('0x9')]('/',auth[_0xcb64('0xa')](),controller[_0xcb64('0xb')]);router[_0xcb64('0x9')](_0xcb64('0xc'),auth[_0xcb64('0xa')](),controller[_0xcb64('0xd')]);router[_0xcb64('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xcb64('0xe')]);router['post']('/',auth[_0xcb64('0xa')](),controller['create']);router[_0xcb64('0xf')](_0xcb64('0x10'),auth[_0xcb64('0xa')](),controller['update']);router['delete'](_0xcb64('0x10'),auth[_0xcb64('0xa')](),controller[_0xcb64('0x11')]);module[_0xcb64('0x12')]=router;
\ No newline at end of file
index 80ddde8..a5bd900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x509d9e,_0x2d1197){var _0x56b488=function(_0x1e98d0){while(--_0x1e98d0){_0x509d9e['push'](_0x509d9e['shift']());}};_0x56b488(++_0x2d1197);}(_0x9c44,0x178));var _0x49c4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x110e48,_0xbcd159){var _0x44f82e=function(_0x1d37ae){while(--_0x1d37ae){_0x110e48['push'](_0x110e48['shift']());}};_0x44f82e(++_0xbcd159);}(_0xf4eb,0xec));var _0xbf4e=function(_0x44299a,_0x558659){_0x44299a=_0x44299a-0x0;var _0x4e8a5b=_0xf4eb[_0x44299a];return _0x4e8a5b;};'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 cb271db..00ccb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8961=['rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','merge','where','filter','options','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','FaxTransferReport'];(function(_0x160273,_0x463586){var _0x3a4898=function(_0x3938cb){while(--_0x3938cb){_0x160273['push'](_0x160273['shift']());}};_0x3a4898(++_0x463586);}(_0x8961,0xaf));var _0x1896=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x8961[_0x5f09c5];return _0x426ad9;};'use strict';var emlformat=require(_0x1896('0x0'));var rimraf=require(_0x1896('0x1'));var zipdir=require(_0x1896('0x2'));var jsonpatch=require(_0x1896('0x3'));var rp=require(_0x1896('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x1896('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1896('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1896('0x7'));var squel=require('squel');var crypto=require(_0x1896('0x8'));var jsforce=require(_0x1896('0x9'));var deskjs=require(_0x1896('0xa'));var toCsv=require('to-csv');var querystring=require(_0x1896('0xb'));var Papa=require(_0x1896('0xc'));var Redis=require(_0x1896('0xd'));var authService=require(_0x1896('0xe'));var qs=require(_0x1896('0xf'));var as=require(_0x1896('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1896('0x11'))(_0x1896('0x12'));var utils=require(_0x1896('0x13'));var config=require(_0x1896('0x14'));var licenseUtil=require(_0x1896('0x15'));var db=require(_0x1896('0x16'))['db'];function respondWithStatusCode(_0x5efc82,_0x12fdcc){_0x12fdcc=_0x12fdcc||0xcc;return function(_0x14d1ed){if(_0x14d1ed){return _0x5efc82['sendStatus'](_0x12fdcc);}return _0x5efc82[_0x1896('0x17')](_0x12fdcc)[_0x1896('0x18')]();};}function respondWithResult(_0x174b86,_0x5872ad){_0x5872ad=_0x5872ad||0xc8;return function(_0x3adc92){if(_0x3adc92){return _0x174b86['status'](_0x5872ad)['json'](_0x3adc92);}};}function respondWithFilteredResult(_0x4b2941,_0x2d59dd){return function(_0x116ed3){if(_0x116ed3){var _0x3a2dff=typeof _0x2d59dd[_0x1896('0x19')]==='undefined'&&typeof _0x2d59dd[_0x1896('0x1a')]===_0x1896('0x1b');var _0x5b473d=_0x116ed3[_0x1896('0x1c')];var _0x44ff35=_0x3a2dff?0x0:_0x2d59dd['offset'];var _0x45093f=_0x3a2dff?_0x116ed3['count']:_0x2d59dd[_0x1896('0x19')]+_0x2d59dd[_0x1896('0x1a')];var _0x249872;if(_0x45093f>=_0x5b473d){_0x45093f=_0x5b473d;_0x249872=0xc8;}else{_0x249872=0xce;}_0x4b2941[_0x1896('0x17')](_0x249872);return _0x4b2941[_0x1896('0x1d')](_0x1896('0x1e'),_0x44ff35+'-'+_0x45093f+'/'+_0x5b473d)['json'](_0x116ed3);}return null;};}function patchUpdates(_0x3e8359){return function(_0x38f33d){try{jsonpatch['apply'](_0x38f33d,_0x3e8359,!![]);}catch(_0x59f99a){return BPromise[_0x1896('0x1f')](_0x59f99a);}return _0x38f33d[_0x1896('0x20')]();};}function saveUpdates(_0x35ce62,_0xc7c662){return function(_0x8e925a){if(_0x8e925a){return _0x8e925a[_0x1896('0x21')](_0x35ce62)[_0x1896('0x22')](function(_0x86b8dc){return _0x86b8dc;});}return null;};}function removeEntity(_0x2f8d1e,_0x56bc6b){return function(_0x219135){if(_0x219135){return _0x219135[_0x1896('0x23')]()[_0x1896('0x22')](function(){_0x2f8d1e[_0x1896('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4faf8b,_0x4f5a93){return function(_0xef38e9){if(!_0xef38e9){_0x4faf8b[_0x1896('0x24')](0x194);}return _0xef38e9;};}function handleError(_0xd9307d,_0x275f46){_0x275f46=_0x275f46||0x1f4;return function(_0x2d3d9d){logger[_0x1896('0x25')](_0x2d3d9d[_0x1896('0x26')]);if(_0x2d3d9d['name']){delete _0x2d3d9d[_0x1896('0x27')];}_0xd9307d[_0x1896('0x17')](_0x275f46)[_0x1896('0x28')](_0x2d3d9d);};}exports[_0x1896('0x29')]=function(_0x346c71,_0x496e98){var _0x2670db={},_0x5b677b={},_0x1e1f1a={'count':0x0,'rows':[]};var _0x47b7a1=_[_0x1896('0x2a')](db[_0x1896('0x2b')][_0x1896('0x2c')],function(_0x87bb0e){return{'name':_0x87bb0e[_0x1896('0x2d')],'type':_0x87bb0e[_0x1896('0x2e')][_0x1896('0x2f')]};});_0x5b677b[_0x1896('0x30')]=_[_0x1896('0x2a')](_0x47b7a1,'name');_0x5b677b[_0x1896('0x31')]=_[_0x1896('0x32')](_0x346c71['query']);_0x5b677b[_0x1896('0x33')]=_['intersection'](_0x5b677b[_0x1896('0x30')],_0x5b677b[_0x1896('0x31')]);_0x2670db[_0x1896('0x34')]=_[_0x1896('0x35')](_0x5b677b['model'],qs[_0x1896('0x36')](_0x346c71[_0x1896('0x31')][_0x1896('0x36')]));_0x2670db[_0x1896('0x34')]=_0x2670db['attributes'][_0x1896('0x37')]?_0x2670db[_0x1896('0x34')]:_0x5b677b[_0x1896('0x30')];if(!_0x346c71[_0x1896('0x31')]['hasOwnProperty'](_0x1896('0x38'))){_0x2670db[_0x1896('0x1a')]=qs[_0x1896('0x1a')](_0x346c71[_0x1896('0x31')][_0x1896('0x1a')]);_0x2670db['offset']=qs[_0x1896('0x19')](_0x346c71[_0x1896('0x31')]['offset']);}_0x2670db[_0x1896('0x39')]=qs[_0x1896('0x3a')](_0x346c71[_0x1896('0x31')][_0x1896('0x3a')]);_0x2670db['where']=qs[_0x1896('0x33')](_[_0x1896('0x3b')](_0x346c71[_0x1896('0x31')],_0x5b677b[_0x1896('0x33')]),_0x47b7a1);if(_0x346c71[_0x1896('0x31')]['filter']){_0x2670db['where']=_[_0x1896('0x3c')](_0x2670db[_0x1896('0x3d')],{'$or':_[_0x1896('0x2a')](_0x47b7a1,function(_0x280d5c){if(_0x280d5c[_0x1896('0x2e')]!=='VIRTUAL'){var _0x1e9dde={};_0x1e9dde[_0x280d5c[_0x1896('0x27')]]={'$like':'%'+_0x346c71[_0x1896('0x31')][_0x1896('0x3e')]+'%'};return _0x1e9dde;}})});}_0x2670db=_[_0x1896('0x3c')]({},_0x2670db,_0x346c71[_0x1896('0x3f')]);var _0x18ad28={'where':_0x2670db['where']};return db['FaxTransferReport'][_0x1896('0x1c')](_0x18ad28)[_0x1896('0x22')](function(_0x3bce11){_0x1e1f1a[_0x1896('0x1c')]=_0x3bce11;if(_0x346c71['query']['includeAll']){_0x2670db[_0x1896('0x40')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x1896('0x41')](_0x2670db);})['then'](function(_0x14c124){_0x1e1f1a['rows']=_0x14c124;return _0x1e1f1a;})['then'](respondWithFilteredResult(_0x496e98,_0x2670db))[_0x1896('0x42')](handleError(_0x496e98,null));};exports[_0x1896('0x43')]=function(_0x16cda1,_0x284195){var _0xde5e64={'raw':!![],'where':{'id':_0x16cda1[_0x1896('0x44')]['id']}},_0x2fe7aa={};_0x2fe7aa[_0x1896('0x30')]=_[_0x1896('0x32')](db['FaxTransferReport'][_0x1896('0x2c')]);_0x2fe7aa[_0x1896('0x31')]=_[_0x1896('0x32')](_0x16cda1[_0x1896('0x31')]);_0x2fe7aa[_0x1896('0x33')]=_['intersection'](_0x2fe7aa[_0x1896('0x30')],_0x2fe7aa[_0x1896('0x31')]);_0xde5e64['attributes']=_[_0x1896('0x35')](_0x2fe7aa[_0x1896('0x30')],qs['fields'](_0x16cda1[_0x1896('0x31')][_0x1896('0x36')]));_0xde5e64[_0x1896('0x34')]=_0xde5e64[_0x1896('0x34')][_0x1896('0x37')]?_0xde5e64[_0x1896('0x34')]:_0x2fe7aa[_0x1896('0x30')];if(_0x16cda1[_0x1896('0x31')]['includeAll']){_0xde5e64['include']=[{'all':!![]}];}_0xde5e64=_[_0x1896('0x3c')]({},_0xde5e64,_0x16cda1['options']);return db[_0x1896('0x2b')][_0x1896('0x45')](_0xde5e64)[_0x1896('0x22')](handleEntityNotFound(_0x284195,null))['then'](respondWithResult(_0x284195,null))[_0x1896('0x42')](handleError(_0x284195,null));};exports[_0x1896('0x46')]=function(_0x4f984f,_0x230e47){return db[_0x1896('0x2b')][_0x1896('0x46')](_0x4f984f['body'],{})['then'](respondWithResult(_0x230e47,0xc9))[_0x1896('0x42')](handleError(_0x230e47,null));};exports['update']=function(_0xca1b6d,_0x151c4e){if(_0xca1b6d['body']['id']){delete _0xca1b6d['body']['id'];}return db[_0x1896('0x2b')]['find']({'where':{'id':_0xca1b6d['params']['id']}})[_0x1896('0x22')](handleEntityNotFound(_0x151c4e,null))[_0x1896('0x22')](saveUpdates(_0xca1b6d[_0x1896('0x47')],null))[_0x1896('0x22')](respondWithResult(_0x151c4e,null))['catch'](handleError(_0x151c4e,null));};exports[_0x1896('0x23')]=function(_0x300eed,_0x133621){return db[_0x1896('0x2b')][_0x1896('0x45')]({'where':{'id':_0x300eed[_0x1896('0x44')]['id']}})[_0x1896('0x22')](handleEntityNotFound(_0x133621,null))[_0x1896('0x22')](removeEntity(_0x133621,null))[_0x1896('0x42')](handleError(_0x133621,null));};exports[_0x1896('0x48')]=function(_0x39b109,_0x1c07da){return db['FaxTransferReport']['describe']()['then'](respondWithResult(_0x1c07da,null))[_0x1896('0x42')](handleError(_0x1c07da,null));};
\ No newline at end of file
+var _0xb38f=['Content-Range','apply','save','then','destroy','end','error','stack','name','send','index','FaxTransferReport','rawAttributes','fieldName','key','map','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','keys','includeAll','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set'];(function(_0x331298,_0x12341a){var _0x3824bc=function(_0x19449f){while(--_0x19449f){_0x331298['push'](_0x331298['shift']());}};_0x3824bc(++_0x12341a);}(_0xb38f,0x78));var _0xfb38=function(_0x3cdf50,_0x3e8eb2){_0x3cdf50=_0x3cdf50-0x0;var _0x22d47a=_0xb38f[_0x3cdf50];return _0x22d47a;};'use strict';var emlformat=require(_0xfb38('0x0'));var rimraf=require(_0xfb38('0x1'));var zipdir=require(_0xfb38('0x2'));var jsonpatch=require(_0xfb38('0x3'));var rp=require(_0xfb38('0x4'));var moment=require(_0xfb38('0x5'));var BPromise=require(_0xfb38('0x6'));var Mustache=require(_0xfb38('0x7'));var util=require(_0xfb38('0x8'));var path=require(_0xfb38('0x9'));var sox=require(_0xfb38('0xa'));var csv=require(_0xfb38('0xb'));var ejs=require(_0xfb38('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfb38('0xd'));var Papa=require('papaparse');var Redis=require(_0xfb38('0xe'));var authService=require(_0xfb38('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfb38('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb38('0x11'))(_0xfb38('0x12'));var utils=require(_0xfb38('0x13'));var config=require(_0xfb38('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xfb38('0x15'))['db'];function respondWithStatusCode(_0x41f2e2,_0x4e4b40){_0x4e4b40=_0x4e4b40||0xcc;return function(_0x48c657){if(_0x48c657){return _0x41f2e2[_0xfb38('0x16')](_0x4e4b40);}return _0x41f2e2[_0xfb38('0x17')](_0x4e4b40)['end']();};}function respondWithResult(_0x3ecfe4,_0x2fcbf3){_0x2fcbf3=_0x2fcbf3||0xc8;return function(_0x2d6cbd){if(_0x2d6cbd){return _0x3ecfe4[_0xfb38('0x17')](_0x2fcbf3)[_0xfb38('0x18')](_0x2d6cbd);}};}function respondWithFilteredResult(_0x40f30c,_0x5d54a1){return function(_0x680147){if(_0x680147){var _0x3bcbab=typeof _0x5d54a1['offset']===_0xfb38('0x19')&&typeof _0x5d54a1[_0xfb38('0x1a')]===_0xfb38('0x19');var _0x989857=_0x680147[_0xfb38('0x1b')];var _0x159350=_0x3bcbab?0x0:_0x5d54a1[_0xfb38('0x1c')];var _0x34a49b=_0x3bcbab?_0x680147[_0xfb38('0x1b')]:_0x5d54a1[_0xfb38('0x1c')]+_0x5d54a1[_0xfb38('0x1a')];var _0x28a355;if(_0x34a49b>=_0x989857){_0x34a49b=_0x989857;_0x28a355=0xc8;}else{_0x28a355=0xce;}_0x40f30c['status'](_0x28a355);return _0x40f30c[_0xfb38('0x1d')](_0xfb38('0x1e'),_0x159350+'-'+_0x34a49b+'/'+_0x989857)[_0xfb38('0x18')](_0x680147);}return null;};}function patchUpdates(_0x1394a2){return function(_0x1149fa){try{jsonpatch[_0xfb38('0x1f')](_0x1149fa,_0x1394a2,!![]);}catch(_0xa32c50){return BPromise['reject'](_0xa32c50);}return _0x1149fa[_0xfb38('0x20')]();};}function saveUpdates(_0x54c5a9,_0x4cd304){return function(_0x38214a){if(_0x38214a){return _0x38214a['update'](_0x54c5a9)[_0xfb38('0x21')](function(_0x2f12bc){return _0x2f12bc;});}return null;};}function removeEntity(_0x46a833,_0x4f9200){return function(_0x12b0a5){if(_0x12b0a5){return _0x12b0a5[_0xfb38('0x22')]()[_0xfb38('0x21')](function(){_0x46a833[_0xfb38('0x17')](0xcc)[_0xfb38('0x23')]();});}};}function handleEntityNotFound(_0x3572ee,_0x5c467f){return function(_0x135641){if(!_0x135641){_0x3572ee[_0xfb38('0x16')](0x194);}return _0x135641;};}function handleError(_0x10d047,_0xd5e057){_0xd5e057=_0xd5e057||0x1f4;return function(_0xd1aacd){logger[_0xfb38('0x24')](_0xd1aacd[_0xfb38('0x25')]);if(_0xd1aacd[_0xfb38('0x26')]){delete _0xd1aacd['name'];}_0x10d047[_0xfb38('0x17')](_0xd5e057)[_0xfb38('0x27')](_0xd1aacd);};}exports[_0xfb38('0x28')]=function(_0x8ae440,_0x347a25){var _0x500d3e={},_0x259633={},_0x45b9f6={'count':0x0,'rows':[]};var _0x3a1558=_['map'](db[_0xfb38('0x29')][_0xfb38('0x2a')],function(_0x4e668b){return{'name':_0x4e668b[_0xfb38('0x2b')],'type':_0x4e668b['type'][_0xfb38('0x2c')]};});_0x259633['model']=_[_0xfb38('0x2d')](_0x3a1558,_0xfb38('0x26'));_0x259633[_0xfb38('0x2e')]=_['keys'](_0x8ae440['query']);_0x259633[_0xfb38('0x2f')]=_[_0xfb38('0x30')](_0x259633['model'],_0x259633[_0xfb38('0x2e')]);_0x500d3e[_0xfb38('0x31')]=_[_0xfb38('0x30')](_0x259633[_0xfb38('0x32')],qs[_0xfb38('0x33')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x33')]));_0x500d3e[_0xfb38('0x31')]=_0x500d3e[_0xfb38('0x31')][_0xfb38('0x34')]?_0x500d3e['attributes']:_0x259633[_0xfb38('0x32')];if(!_0x8ae440[_0xfb38('0x2e')]['hasOwnProperty'](_0xfb38('0x35'))){_0x500d3e[_0xfb38('0x1a')]=qs[_0xfb38('0x1a')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x1a')]);_0x500d3e[_0xfb38('0x1c')]=qs[_0xfb38('0x1c')](_0x8ae440['query'][_0xfb38('0x1c')]);}_0x500d3e[_0xfb38('0x36')]=qs[_0xfb38('0x37')](_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x37')]);_0x500d3e[_0xfb38('0x38')]=qs[_0xfb38('0x2f')](_[_0xfb38('0x39')](_0x8ae440[_0xfb38('0x2e')],_0x259633[_0xfb38('0x2f')]),_0x3a1558);if(_0x8ae440['query'][_0xfb38('0x3a')]){_0x500d3e[_0xfb38('0x38')]=_[_0xfb38('0x3b')](_0x500d3e[_0xfb38('0x38')],{'$or':_[_0xfb38('0x2d')](_0x3a1558,function(_0x1f3a36){if(_0x1f3a36[_0xfb38('0x3c')]!==_0xfb38('0x3d')){var _0x28f8d4={};_0x28f8d4[_0x1f3a36['name']]={'$like':'%'+_0x8ae440[_0xfb38('0x2e')][_0xfb38('0x3a')]+'%'};return _0x28f8d4;}})});}_0x500d3e=_[_0xfb38('0x3b')]({},_0x500d3e,_0x8ae440[_0xfb38('0x3e')]);var _0x1b354f={'where':_0x500d3e['where']};return db[_0xfb38('0x29')]['count'](_0x1b354f)[_0xfb38('0x21')](function(_0x36e0c8){_0x45b9f6[_0xfb38('0x1b')]=_0x36e0c8;if(_0x8ae440['query']['includeAll']){_0x500d3e[_0xfb38('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xfb38('0x40')](_0x500d3e);})[_0xfb38('0x21')](function(_0x30b464){_0x45b9f6[_0xfb38('0x41')]=_0x30b464;return _0x45b9f6;})[_0xfb38('0x21')](respondWithFilteredResult(_0x347a25,_0x500d3e))[_0xfb38('0x42')](handleError(_0x347a25,null));};exports['show']=function(_0x1071db,_0x1ede8b){var _0x3fdd9c={'raw':!![],'where':{'id':_0x1071db['params']['id']}},_0x83569a={};_0x83569a[_0xfb38('0x32')]=_[_0xfb38('0x43')](db[_0xfb38('0x29')][_0xfb38('0x2a')]);_0x83569a[_0xfb38('0x2e')]=_[_0xfb38('0x43')](_0x1071db[_0xfb38('0x2e')]);_0x83569a[_0xfb38('0x2f')]=_[_0xfb38('0x30')](_0x83569a[_0xfb38('0x32')],_0x83569a[_0xfb38('0x2e')]);_0x3fdd9c[_0xfb38('0x31')]=_[_0xfb38('0x30')](_0x83569a[_0xfb38('0x32')],qs[_0xfb38('0x33')](_0x1071db[_0xfb38('0x2e')][_0xfb38('0x33')]));_0x3fdd9c[_0xfb38('0x31')]=_0x3fdd9c[_0xfb38('0x31')]['length']?_0x3fdd9c[_0xfb38('0x31')]:_0x83569a[_0xfb38('0x32')];if(_0x1071db[_0xfb38('0x2e')][_0xfb38('0x44')]){_0x3fdd9c[_0xfb38('0x3f')]=[{'all':!![]}];}_0x3fdd9c=_[_0xfb38('0x3b')]({},_0x3fdd9c,_0x1071db[_0xfb38('0x3e')]);return db[_0xfb38('0x29')][_0xfb38('0x45')](_0x3fdd9c)['then'](handleEntityNotFound(_0x1ede8b,null))[_0xfb38('0x21')](respondWithResult(_0x1ede8b,null))['catch'](handleError(_0x1ede8b,null));};exports[_0xfb38('0x46')]=function(_0x1d5c1e,_0xa3b8d6){return db['FaxTransferReport'][_0xfb38('0x46')](_0x1d5c1e['body'],{})[_0xfb38('0x21')](respondWithResult(_0xa3b8d6,0xc9))[_0xfb38('0x42')](handleError(_0xa3b8d6,null));};exports[_0xfb38('0x47')]=function(_0x144d96,_0x36a17f){if(_0x144d96[_0xfb38('0x48')]['id']){delete _0x144d96[_0xfb38('0x48')]['id'];}return db[_0xfb38('0x29')][_0xfb38('0x45')]({'where':{'id':_0x144d96[_0xfb38('0x49')]['id']}})[_0xfb38('0x21')](handleEntityNotFound(_0x36a17f,null))[_0xfb38('0x21')](saveUpdates(_0x144d96[_0xfb38('0x48')],null))['then'](respondWithResult(_0x36a17f,null))[_0xfb38('0x42')](handleError(_0x36a17f,null));};exports[_0xfb38('0x22')]=function(_0x32db00,_0x2750a8){return db[_0xfb38('0x29')][_0xfb38('0x45')]({'where':{'id':_0x32db00['params']['id']}})[_0xfb38('0x21')](handleEntityNotFound(_0x2750a8,null))[_0xfb38('0x21')](removeEntity(_0x2750a8,null))[_0xfb38('0x42')](handleError(_0x2750a8,null));};exports[_0xfb38('0x4a')]=function(_0x318490,_0x34b4da){return db[_0xfb38('0x29')][_0xfb38('0x4a')]()['then'](respondWithResult(_0x34b4da,null))['catch'](handleError(_0x34b4da,null));};
\ No newline at end of file
index a56fc12..b4dbb51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x930d=['rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','uniqueid','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x57c248,_0x10dc87){var _0x2ce826=function(_0x12f644){while(--_0x12f644){_0x57c248['push'](_0x57c248['shift']());}};_0x2ce826(++_0x10dc87);}(_0x930d,0x72));var _0xd930=function(_0x314a8c,_0x1c2e8d){_0x314a8c=_0x314a8c-0x0;var _0x1d4607=_0x930d[_0x314a8c];return _0x1d4607;};'use strict';var _=require(_0xd930('0x0'));var util=require('util');var logger=require(_0xd930('0x1'))(_0xd930('0x2'));var moment=require(_0xd930('0x3'));var BPromise=require('bluebird');var rp=require(_0xd930('0x4'));var fs=require('fs');var path=require(_0xd930('0x5'));var rimraf=require(_0xd930('0x6'));var config=require(_0xd930('0x7'));var attributes=require(_0xd930('0x8'));module['exports']=function(_0x47dfb5,_0x1891f5){return _0x47dfb5[_0xd930('0x9')](_0xd930('0xa'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0xd930('0xb'),'fields':[_0xd930('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xded4=['../../config/environment','./faxTransferReport.attributes','exports','define','uniqueid','../../config/logger','api','moment','bluebird','path'];(function(_0x59dccc,_0x184c1c){var _0xc97bcb=function(_0x1ddbcb){while(--_0x1ddbcb){_0x59dccc['push'](_0x59dccc['shift']());}};_0xc97bcb(++_0x184c1c);}(_0xded4,0x1bd));var _0x4ded=function(_0x4391d0,_0x2c8f2a){_0x4391d0=_0x4391d0-0x0;var _0x3e2928=_0xded4[_0x4391d0];return _0x3e2928;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4ded('0x0'))(_0x4ded('0x1'));var moment=require(_0x4ded('0x2'));var BPromise=require(_0x4ded('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ded('0x4'));var rimraf=require('rimraf');var config=require(_0x4ded('0x5'));var attributes=require(_0x4ded('0x6'));module[_0x4ded('0x7')]=function(_0x17491a,_0x23cc0f){return _0x17491a[_0x4ded('0x8')]('FaxTransferReport',attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0x4ded('0x9'),'fields':[_0x4ded('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index a629a7b..1cab32e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378b=['then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x346083,_0x2bc8f1){var _0x6aeb40=function(_0x4a5898){while(--_0x4a5898){_0x346083['push'](_0x346083['shift']());}};_0x6aeb40(++_0x2bc8f1);}(_0x378b,0x127));var _0xb378=function(_0x10393c,_0x121f2f){_0x10393c=_0x10393c-0x0;var _0x474fac=_0x378b[_0x10393c];return _0x474fac;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xb378('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb378('0x1'))['db'];var utils=require(_0xb378('0x2'));var logger=require(_0xb378('0x3'))(_0xb378('0x4'));var config=require(_0xb378('0x5'));var jayson=require(_0xb378('0x6'));var client=jayson[_0xb378('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbb165c,_0x1d49ea,_0x320657){return new BPromise(function(_0x2ec9d7,_0x169edd){return client[_0xb378('0x8')](_0xbb165c,_0x320657)[_0xb378('0x9')](function(_0x419032){logger[_0xb378('0xa')](_0xb378('0xb'),_0x1d49ea,_0xb378('0xc'));logger[_0xb378('0xd')](_0xb378('0xe'),_0x1d49ea,_0xb378('0xc'),JSON[_0xb378('0xf')](_0x419032));if(_0x419032[_0xb378('0x10')]){if(_0x419032[_0xb378('0x10')][_0xb378('0x11')]===0x1f4){logger[_0xb378('0x10')](_0xb378('0xb'),_0x1d49ea,_0x419032[_0xb378('0x10')][_0xb378('0x12')]);return _0x169edd(_0x419032[_0xb378('0x10')][_0xb378('0x12')]);}logger[_0xb378('0x10')](_0xb378('0xb'),_0x1d49ea,_0x419032[_0xb378('0x10')]['message']);return _0x2ec9d7(_0x419032[_0xb378('0x10')][_0xb378('0x12')]);}else{logger[_0xb378('0xa')](_0xb378('0xb'),_0x1d49ea,_0xb378('0xc'));_0x2ec9d7(_0x419032['result']['message']);}})['catch'](function(_0x3c9f3b){logger[_0xb378('0x10')](_0xb378('0xb'),_0x1d49ea,_0x3c9f3b);_0x169edd(_0x3c9f3b);});});}
\ No newline at end of file
+var _0x87d1=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x87d1,0x111));var _0x187d=function(_0x5e2b50,_0x4b71e5){_0x5e2b50=_0x5e2b50-0x0;var _0x19816a=_0x87d1[_0x5e2b50];return _0x19816a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x187d('0x0'));var BPromise=require(_0x187d('0x1'));var rs=require(_0x187d('0x2'));var fs=require('fs');var Redis=require(_0x187d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x187d('0x4'));var logger=require(_0x187d('0x5'))(_0x187d('0x6'));var config=require(_0x187d('0x7'));var jayson=require(_0x187d('0x8'));var client=jayson[_0x187d('0x9')][_0x187d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4972ea,_0x1268cf,_0x59e3a8){return new BPromise(function(_0x43796a,_0x29a25c){return client[_0x187d('0xb')](_0x4972ea,_0x59e3a8)['then'](function(_0x220728){logger[_0x187d('0xc')](_0x187d('0xd'),_0x1268cf,'request\x20sent');logger[_0x187d('0xe')](_0x187d('0xf'),_0x1268cf,_0x187d('0x10'),JSON['stringify'](_0x220728));if(_0x220728[_0x187d('0x11')]){if(_0x220728[_0x187d('0x11')][_0x187d('0x12')]===0x1f4){logger['error'](_0x187d('0xd'),_0x1268cf,_0x220728[_0x187d('0x11')][_0x187d('0x13')]);return _0x29a25c(_0x220728[_0x187d('0x11')][_0x187d('0x13')]);}logger[_0x187d('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x1268cf,_0x220728[_0x187d('0x11')][_0x187d('0x13')]);return _0x43796a(_0x220728[_0x187d('0x11')]['message']);}else{logger[_0x187d('0xc')](_0x187d('0xd'),_0x1268cf,'request\x20sent');_0x43796a(_0x220728[_0x187d('0x14')][_0x187d('0x13')]);}})['catch'](function(_0x5cd861){logger[_0x187d('0x11')](_0x187d('0xd'),_0x1268cf,_0x5cd861);_0x29a25c(_0x5cd861);});});}
\ No newline at end of file
index 74a2a51..30a6fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7f=['post','create','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','describe','/:id','show'];(function(_0x235482,_0x14b833){var _0x5f5bea=function(_0x17a254){while(--_0x17a254){_0x235482['push'](_0x235482['shift']());}};_0x5f5bea(++_0x14b833);}(_0xaa7f,0x16e));var _0xfaa7=function(_0x10aa6d,_0x2d5b15){_0x10aa6d=_0x10aa6d-0x0;var _0x46f1b9=_0xaa7f[_0x10aa6d];return _0x46f1b9;};'use strict';var multer=require('multer');var util=require(_0xfaa7('0x0'));var path=require(_0xfaa7('0x1'));var timeout=require(_0xfaa7('0x2'));var express=require(_0xfaa7('0x3'));var router=express['Router']();var fs_extra=require(_0xfaa7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfaa7('0x5'));var config=require(_0xfaa7('0x6'));var controller=require(_0xfaa7('0x7'));router[_0xfaa7('0x8')]('/',auth[_0xfaa7('0x9')](),controller[_0xfaa7('0xa')]);router[_0xfaa7('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xfaa7('0xb')]);router[_0xfaa7('0x8')](_0xfaa7('0xc'),auth[_0xfaa7('0x9')](),controller[_0xfaa7('0xd')]);router[_0xfaa7('0xe')]('/',auth[_0xfaa7('0x9')](),controller[_0xfaa7('0xf')]);router['put'](_0xfaa7('0xc'),auth[_0xfaa7('0x9')](),controller[_0xfaa7('0x10')]);router[_0xfaa7('0x11')](_0xfaa7('0xc'),auth[_0xfaa7('0x9')](),controller[_0xfaa7('0x12')]);module[_0xfaa7('0x13')]=router;
\ No newline at end of file
+var _0x8f13=['express','Router','fs-extra','../../config/environment','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x3f2a44,_0xf70f4b){var _0x50d3cb=function(_0x4f896d){while(--_0x4f896d){_0x3f2a44['push'](_0x3f2a44['shift']());}};_0x50d3cb(++_0xf70f4b);}(_0x8f13,0x164));var _0x38f1=function(_0x569fef,_0x49c37a){_0x569fef=_0x569fef-0x0;var _0x11f20b=_0x8f13[_0x569fef];return _0x11f20b;};'use strict';var multer=require(_0x38f1('0x0'));var util=require(_0x38f1('0x1'));var path=require(_0x38f1('0x2'));var timeout=require(_0x38f1('0x3'));var express=require(_0x38f1('0x4'));var router=express[_0x38f1('0x5')]();var fs_extra=require(_0x38f1('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x38f1('0x7'));var controller=require('./faxTransferReport.controller');router[_0x38f1('0x8')]('/',auth['isAuthenticated'](),controller[_0x38f1('0x9')]);router['get']('/describe',auth[_0x38f1('0xa')](),controller[_0x38f1('0xb')]);router['get'](_0x38f1('0xc'),auth[_0x38f1('0xa')](),controller[_0x38f1('0xd')]);router[_0x38f1('0xe')]('/',auth[_0x38f1('0xa')](),controller[_0x38f1('0xf')]);router[_0x38f1('0x10')](_0x38f1('0xc'),auth[_0x38f1('0xa')](),controller[_0x38f1('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x38f1('0x12')]);module[_0x38f1('0x13')]=router;
\ No newline at end of file
index acf86b2..5e94dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaed=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','update','exports','multer','util','connect-timeout'];(function(_0xc6d0e8,_0x43e2fb){var _0x11be3d=function(_0x575437){while(--_0x575437){_0xc6d0e8['push'](_0xc6d0e8['shift']());}};_0x11be3d(++_0x43e2fb);}(_0xbaed,0x81));var _0xdbae=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xbaed[_0x3899d1];return _0xeb4a7d;};'use strict';var multer=require(_0xdbae('0x0'));var util=require(_0xdbae('0x1'));var path=require('path');var timeout=require(_0xdbae('0x2'));var express=require(_0xdbae('0x3'));var router=express[_0xdbae('0x4')]();var fs_extra=require(_0xdbae('0x5'));var auth=require(_0xdbae('0x6'));var interaction=require(_0xdbae('0x7'));var config=require(_0xdbae('0x8'));var controller=require(_0xdbae('0x9'));router[_0xdbae('0xa')]('/',auth[_0xdbae('0xb')](),controller[_0xdbae('0xc')]);router[_0xdbae('0xa')](_0xdbae('0xd'),auth[_0xdbae('0xb')](),controller['show']);router[_0xdbae('0xa')](_0xdbae('0xe'),auth[_0xdbae('0xb')](),controller['getConfigurations']);router[_0xdbae('0xa')](_0xdbae('0xf'),auth['isAuthenticated'](),controller[_0xdbae('0x10')]);router[_0xdbae('0x11')]('/',auth[_0xdbae('0xb')](),controller[_0xdbae('0x12')]);router[_0xdbae('0x11')](_0xdbae('0xe'),auth[_0xdbae('0xb')](),controller[_0xdbae('0x13')]);router['put'](_0xdbae('0xd'),auth['isAuthenticated'](),controller[_0xdbae('0x14')]);router['delete'](_0xdbae('0xd'),auth[_0xdbae('0xb')](),controller['destroy']);module[_0xdbae('0x15')]=router;
\ No newline at end of file
+var _0xd3b2=['./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','util','Router','../../components/interaction/service','../../config/environment'];(function(_0x429948,_0x1a6851){var _0x35d5d1=function(_0x574853){while(--_0x574853){_0x429948['push'](_0x429948['shift']());}};_0x35d5d1(++_0x1a6851);}(_0xd3b2,0xb0));var _0x2d3b=function(_0x18febb,_0x5827cd){_0x18febb=_0x18febb-0x0;var _0x34c503=_0xd3b2[_0x18febb];return _0x34c503;};'use strict';var multer=require('multer');var util=require(_0x2d3b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2d3b('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2d3b('0x2'));var config=require(_0x2d3b('0x3'));var controller=require(_0x2d3b('0x4'));router[_0x2d3b('0x5')]('/',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x7')]);router[_0x2d3b('0x5')](_0x2d3b('0x8'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x9')]);router['get'](_0x2d3b('0xa'),auth[_0x2d3b('0x6')](),controller['getConfigurations']);router[_0x2d3b('0x5')](_0x2d3b('0xb'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xc')]);router[_0x2d3b('0xd')]('/',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xe')]);router['post'](_0x2d3b('0xa'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0xf')]);router['put']('/:id',auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x10')]);router[_0x2d3b('0x11')](_0x2d3b('0x8'),auth[_0x2d3b('0x6')](),controller[_0x2d3b('0x12')]);module[_0x2d3b('0x13')]=router;
\ No newline at end of file
index 753e809..ef073ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe92e=['newTab','exports','STRING','basic','ENUM','integrationTab'];(function(_0x59e821,_0x86c723){var _0x5333f6=function(_0x5dc2c9){while(--_0x5dc2c9){_0x59e821['push'](_0x59e821['shift']());}};_0x5333f6(++_0x86c723);}(_0xe92e,0x121));var _0xee92=function(_0xab8f1,_0x2bc2a5){_0xab8f1=_0xab8f1-0x0;var _0x3c40ac=_0xe92e[_0xab8f1];return _0x3c40ac;};'use strict';var Sequelize=require('sequelize');module[_0xee92('0x0')]={'name':{'type':Sequelize[_0xee92('0x1')]},'description':{'type':Sequelize[_0xee92('0x1')]},'username':{'type':Sequelize[_0xee92('0x1')]},'remoteUri':{'type':Sequelize[_0xee92('0x1')]},'authType':{'type':Sequelize['ENUM'](_0xee92('0x2')),'defaultValue':_0xee92('0x2')},'password':{'type':Sequelize[_0xee92('0x1')]},'consumerKey':{'type':Sequelize[_0xee92('0x1')]},'consumerSecret':{'type':Sequelize[_0xee92('0x1')]},'token':{'type':Sequelize[_0xee92('0x1')]},'tokenSecret':{'type':Sequelize[_0xee92('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xee92('0x3')](_0xee92('0x4'),_0xee92('0x5')),'defaultValue':_0xee92('0x4')}};
\ No newline at end of file
+var _0x6464=['integrationTab','sequelize','exports','STRING','ENUM','basic'];(function(_0x5b9252,_0x4bc2f8){var _0x1a4284=function(_0x36e4c7){while(--_0x36e4c7){_0x5b9252['push'](_0x5b9252['shift']());}};_0x1a4284(++_0x4bc2f8);}(_0x6464,0x1e1));var _0x4646=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6464[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x4646('0x0'));module[_0x4646('0x1')]={'name':{'type':Sequelize[_0x4646('0x2')]},'description':{'type':Sequelize[_0x4646('0x2')]},'username':{'type':Sequelize[_0x4646('0x2')]},'remoteUri':{'type':Sequelize[_0x4646('0x2')]},'authType':{'type':Sequelize[_0x4646('0x3')](_0x4646('0x4')),'defaultValue':_0x4646('0x4')},'password':{'type':Sequelize[_0x4646('0x2')]},'consumerKey':{'type':Sequelize[_0x4646('0x2')]},'consumerSecret':{'type':Sequelize[_0x4646('0x2')]},'token':{'type':Sequelize[_0x4646('0x2')]},'tokenSecret':{'type':Sequelize[_0x4646('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4646('0x3')]('integrationTab','newTab'),'defaultValue':_0x4646('0x5')}};
\ No newline at end of file
index 4c65b4c..21e1355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcde=['Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','label','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','update','then','destroy','error','stack','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','sort','where','merge','VIRTUAL','name','filter','options','DeskAccount','includeAll','include','rows','catch','show','params','length','find','create','body','getConfigurations','DeskConfiguration','order','pick','hasOwnProperty','nolimit','findOne','AccountId','Subjects','type','Descriptions','getDescriptions','getFields','priority','remoteUri','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','application/json','authType','basic','headers','Authorization'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xfcde,0xf4));var _0xefcd=function(_0x285e41,_0x2f8877){_0x285e41=_0x285e41-0x0;var _0x94fce5=_0xfcde[_0x285e41];return _0x94fce5;};'use strict';var emlformat=require(_0xefcd('0x0'));var rimraf=require(_0xefcd('0x1'));var zipdir=require(_0xefcd('0x2'));var jsonpatch=require(_0xefcd('0x3'));var rp=require('request-promise');var moment=require(_0xefcd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xefcd('0x5'));var util=require(_0xefcd('0x6'));var path=require(_0xefcd('0x7'));var sox=require(_0xefcd('0x8'));var csv=require('to-csv');var ejs=require(_0xefcd('0x9'));var fs=require('fs');var fs_extra=require(_0xefcd('0xa'));var _=require(_0xefcd('0xb'));var squel=require('squel');var crypto=require(_0xefcd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xefcd('0xd'));var toCsv=require(_0xefcd('0xe'));var querystring=require(_0xefcd('0xf'));var Papa=require(_0xefcd('0x10'));var Redis=require(_0xefcd('0x11'));var authService=require(_0xefcd('0x12'));var qs=require(_0xefcd('0x13'));var as=require(_0xefcd('0x14'));var hardwareService=require(_0xefcd('0x15'));var logger=require(_0xefcd('0x16'))(_0xefcd('0x17'));var utils=require('../../config/utils');var config=require(_0xefcd('0x18'));var licenseUtil=require(_0xefcd('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0xefcd('0x1a'));function respondWithStatusCode(_0x54cf65,_0x3d4e93){_0x3d4e93=_0x3d4e93||0xcc;return function(_0x82a877){if(_0x82a877){return _0x54cf65[_0xefcd('0x1b')](_0x3d4e93);}return _0x54cf65[_0xefcd('0x1c')](_0x3d4e93)[_0xefcd('0x1d')]();};}function respondWithResult(_0xd7dfb2,_0x4224d1){_0x4224d1=_0x4224d1||0xc8;return function(_0x431800){if(_0x431800){return _0xd7dfb2[_0xefcd('0x1c')](_0x4224d1)[_0xefcd('0x1e')](_0x431800);}};}function respondWithFilteredResult(_0xb0d55c,_0x116690){return function(_0x1c7a88){if(_0x1c7a88){var _0x29d22a=typeof _0x116690['offset']===_0xefcd('0x1f')&&typeof _0x116690[_0xefcd('0x20')]==='undefined';var _0x6e64a7=_0x1c7a88['count'];var _0x2a9c46=_0x29d22a?0x0:_0x116690[_0xefcd('0x21')];var _0x2f5d39=_0x29d22a?_0x1c7a88[_0xefcd('0x22')]:_0x116690[_0xefcd('0x21')]+_0x116690[_0xefcd('0x20')];var _0x4efd65;if(_0x2f5d39>=_0x6e64a7){_0x2f5d39=_0x6e64a7;_0x4efd65=0xc8;}else{_0x4efd65=0xce;}_0xb0d55c[_0xefcd('0x1c')](_0x4efd65);return _0xb0d55c['set'](_0xefcd('0x23'),_0x2a9c46+'-'+_0x2f5d39+'/'+_0x6e64a7)[_0xefcd('0x1e')](_0x1c7a88);}return null;};}function patchUpdates(_0x327f70){return function(_0x2b9a63){try{jsonpatch[_0xefcd('0x24')](_0x2b9a63,_0x327f70,!![]);}catch(_0x159c31){return BPromise[_0xefcd('0x25')](_0x159c31);}return _0x2b9a63['save']();};}function saveUpdates(_0x14a553,_0xf160c3){return function(_0x281635){if(_0x281635){return _0x281635[_0xefcd('0x26')](_0x14a553)[_0xefcd('0x27')](function(_0x5dde35){return _0x5dde35;});}return null;};}function removeEntity(_0xf034d4,_0xb265a7){return function(_0x55bdbf){if(_0x55bdbf){return _0x55bdbf[_0xefcd('0x28')]()['then'](function(){_0xf034d4[_0xefcd('0x1c')](0xcc)[_0xefcd('0x1d')]();});}};}function handleEntityNotFound(_0xae7386,_0x59952d){return function(_0x7b98cf){if(!_0x7b98cf){_0xae7386[_0xefcd('0x1b')](0x194);}return _0x7b98cf;};}function handleError(_0x1377ff,_0x57775e){_0x57775e=_0x57775e||0x1f4;return function(_0x3438fd){logger[_0xefcd('0x29')](_0x3438fd[_0xefcd('0x2a')]);if(_0x3438fd['name']){delete _0x3438fd['name'];}_0x1377ff[_0xefcd('0x1c')](_0x57775e)[_0xefcd('0x2b')](_0x3438fd);};}exports[_0xefcd('0x2c')]=function(_0x5056fd,_0x42d43c){var _0x560f45={},_0x308efe={},_0x291d4a={'count':0x0,'rows':[]};var _0x426cba=_[_0xefcd('0x2d')](db['DeskAccount'][_0xefcd('0x2e')],function(_0x47a021){return{'name':_0x47a021['fieldName'],'type':_0x47a021['type'][_0xefcd('0x2f')]};});_0x308efe[_0xefcd('0x30')]=_[_0xefcd('0x2d')](_0x426cba,'name');_0x308efe[_0xefcd('0x31')]=_[_0xefcd('0x32')](_0x5056fd[_0xefcd('0x31')]);_0x308efe[_0xefcd('0x33')]=_['intersection'](_0x308efe[_0xefcd('0x30')],_0x308efe['query']);_0x560f45[_0xefcd('0x34')]=_[_0xefcd('0x35')](_0x308efe[_0xefcd('0x30')],qs[_0xefcd('0x36')](_0x5056fd[_0xefcd('0x31')][_0xefcd('0x36')]));_0x560f45[_0xefcd('0x34')]=_0x560f45[_0xefcd('0x34')]['length']?_0x560f45[_0xefcd('0x34')]:_0x308efe[_0xefcd('0x30')];if(!_0x5056fd[_0xefcd('0x31')]['hasOwnProperty']('nolimit')){_0x560f45[_0xefcd('0x20')]=qs[_0xefcd('0x20')](_0x5056fd[_0xefcd('0x31')]['limit']);_0x560f45['offset']=qs['offset'](_0x5056fd[_0xefcd('0x31')][_0xefcd('0x21')]);}_0x560f45['order']=qs[_0xefcd('0x37')](_0x5056fd['query']['sort']);_0x560f45[_0xefcd('0x38')]=qs['filters'](_['pick'](_0x5056fd[_0xefcd('0x31')],_0x308efe[_0xefcd('0x33')]),_0x426cba);if(_0x5056fd[_0xefcd('0x31')]['filter']){_0x560f45[_0xefcd('0x38')]=_[_0xefcd('0x39')](_0x560f45[_0xefcd('0x38')],{'$or':_[_0xefcd('0x2d')](_0x426cba,function(_0x73ae06){if(_0x73ae06['type']!==_0xefcd('0x3a')){var _0x83c2a4={};_0x83c2a4[_0x73ae06[_0xefcd('0x3b')]]={'$like':'%'+_0x5056fd[_0xefcd('0x31')][_0xefcd('0x3c')]+'%'};return _0x83c2a4;}})});}_0x560f45=_[_0xefcd('0x39')]({},_0x560f45,_0x5056fd[_0xefcd('0x3d')]);var _0x50a42f={'where':_0x560f45[_0xefcd('0x38')]};return db[_0xefcd('0x3e')]['count'](_0x50a42f)['then'](function(_0x5df636){_0x291d4a[_0xefcd('0x22')]=_0x5df636;if(_0x5056fd[_0xefcd('0x31')][_0xefcd('0x3f')]){_0x560f45[_0xefcd('0x40')]=[{'all':!![]}];}return db[_0xefcd('0x3e')]['findAll'](_0x560f45);})[_0xefcd('0x27')](function(_0x4366a2){_0x291d4a[_0xefcd('0x41')]=_0x4366a2;return _0x291d4a;})['then'](respondWithFilteredResult(_0x42d43c,_0x560f45))[_0xefcd('0x42')](handleError(_0x42d43c,null));};exports[_0xefcd('0x43')]=function(_0x40160c,_0x174a15){var _0xe2f696={'raw':![],'where':{'id':_0x40160c[_0xefcd('0x44')]['id']}},_0x4ae17b={};_0x4ae17b[_0xefcd('0x30')]=_['keys'](db['DeskAccount'][_0xefcd('0x2e')]);_0x4ae17b['query']=_[_0xefcd('0x32')](_0x40160c[_0xefcd('0x31')]);_0x4ae17b[_0xefcd('0x33')]=_[_0xefcd('0x35')](_0x4ae17b['model'],_0x4ae17b[_0xefcd('0x31')]);_0xe2f696[_0xefcd('0x34')]=_[_0xefcd('0x35')](_0x4ae17b[_0xefcd('0x30')],qs[_0xefcd('0x36')](_0x40160c[_0xefcd('0x31')][_0xefcd('0x36')]));_0xe2f696[_0xefcd('0x34')]=_0xe2f696[_0xefcd('0x34')][_0xefcd('0x45')]?_0xe2f696[_0xefcd('0x34')]:_0x4ae17b[_0xefcd('0x30')];if(_0x40160c[_0xefcd('0x31')][_0xefcd('0x3f')]){_0xe2f696['include']=[{'all':!![]}];}_0xe2f696=_[_0xefcd('0x39')]({},_0xe2f696,_0x40160c[_0xefcd('0x3d')]);return db[_0xefcd('0x3e')][_0xefcd('0x46')](_0xe2f696)['then'](handleEntityNotFound(_0x174a15,null))['then'](respondWithResult(_0x174a15,null))[_0xefcd('0x42')](handleError(_0x174a15,null));};exports[_0xefcd('0x47')]=function(_0x10f8a3,_0x5f1910){return db[_0xefcd('0x3e')][_0xefcd('0x47')](_0x10f8a3[_0xefcd('0x48')],{})[_0xefcd('0x27')](respondWithResult(_0x5f1910,0xc9))[_0xefcd('0x42')](handleError(_0x5f1910,null));};exports[_0xefcd('0x26')]=function(_0x141179,_0x1910f7){if(_0x141179[_0xefcd('0x48')]['id']){delete _0x141179['body']['id'];}return db['DeskAccount']['find']({'where':{'id':_0x141179[_0xefcd('0x44')]['id']}})[_0xefcd('0x27')](handleEntityNotFound(_0x1910f7,null))[_0xefcd('0x27')](saveUpdates(_0x141179[_0xefcd('0x48')],null))[_0xefcd('0x27')](respondWithResult(_0x1910f7,null))[_0xefcd('0x42')](handleError(_0x1910f7,null));};exports[_0xefcd('0x28')]=function(_0x43782e,_0x4a0d80){return db[_0xefcd('0x3e')]['find']({'where':{'id':_0x43782e['params']['id']}})[_0xefcd('0x27')](handleEntityNotFound(_0x4a0d80,null))[_0xefcd('0x27')](removeEntity(_0x4a0d80,null))[_0xefcd('0x42')](handleError(_0x4a0d80,null));};exports[_0xefcd('0x49')]=function(_0x5343ca,_0x2fb5c6,_0x50b661){var _0x158de1={};var _0x50c910={};var _0x6c7ccf;var _0x187130;return db['DeskAccount']['findOne']({'where':{'id':_0x5343ca[_0xefcd('0x44')]['id']}})[_0xefcd('0x27')](handleEntityNotFound(_0x2fb5c6,null))[_0xefcd('0x27')](function(_0x28b8c9){if(_0x28b8c9){_0x6c7ccf=_0x28b8c9;_0x50c910[_0xefcd('0x30')]=_[_0xefcd('0x32')](db[_0xefcd('0x4a')][_0xefcd('0x2e')]);_0x50c910[_0xefcd('0x31')]=_['keys'](_0x5343ca[_0xefcd('0x31')]);_0x50c910[_0xefcd('0x33')]=_[_0xefcd('0x35')](_0x50c910[_0xefcd('0x30')],_0x50c910['query']);_0x158de1['attributes']=_[_0xefcd('0x35')](_0x50c910[_0xefcd('0x30')],qs[_0xefcd('0x36')](_0x5343ca[_0xefcd('0x31')]['fields']));_0x158de1[_0xefcd('0x34')]=_0x158de1[_0xefcd('0x34')][_0xefcd('0x45')]?_0x158de1['attributes']:_0x50c910[_0xefcd('0x30')];_0x158de1[_0xefcd('0x4b')]=qs[_0xefcd('0x37')](_0x5343ca[_0xefcd('0x31')][_0xefcd('0x37')]);_0x158de1[_0xefcd('0x38')]=qs[_0xefcd('0x33')](_[_0xefcd('0x4c')](_0x5343ca[_0xefcd('0x31')],_0x50c910[_0xefcd('0x33')]));if(_0x5343ca[_0xefcd('0x31')][_0xefcd('0x3c')]){_0x158de1[_0xefcd('0x38')]=_[_0xefcd('0x39')](_0x158de1[_0xefcd('0x38')],{'$or':_[_0xefcd('0x2d')](_0x158de1[_0xefcd('0x34')],function(_0x4e7345){var _0xa9bfe5={};_0xa9bfe5[_0x4e7345]={'$like':'%'+_0x5343ca[_0xefcd('0x31')][_0xefcd('0x3c')]+'%'};return _0xa9bfe5;})});}_0x158de1=_[_0xefcd('0x39')]({},_0x158de1,_0x5343ca[_0xefcd('0x3d')]);return _0x6c7ccf['getConfigurations'](_0x158de1);}})['then'](function(_0x24a92f){if(_0x24a92f){_0x187130=_0x24a92f[_0xefcd('0x45')];if(!_0x5343ca[_0xefcd('0x31')][_0xefcd('0x4d')](_0xefcd('0x4e'))){_0x158de1[_0xefcd('0x20')]=qs[_0xefcd('0x20')](_0x5343ca['query']['limit']);_0x158de1[_0xefcd('0x21')]=qs['offset'](_0x5343ca[_0xefcd('0x31')][_0xefcd('0x21')]);}return _0x6c7ccf[_0xefcd('0x49')](_0x158de1);}})['then'](function(_0x2c12c7){if(_0x2c12c7){return _0x2c12c7?{'count':_0x187130,'rows':_0x2c12c7}:null;}})[_0xefcd('0x27')](respondWithResult(_0x2fb5c6,null))[_0xefcd('0x42')](handleError(_0x2fb5c6,null));};exports['addConfiguration']=function(_0x26a735,_0x73a023,_0x1ffc30){if(_0x26a735[_0xefcd('0x48')]['id']){delete _0x26a735[_0xefcd('0x48')]['id'];}return db['DeskAccount'][_0xefcd('0x4f')]({'where':{'id':_0x26a735[_0xefcd('0x44')]['id']}})[_0xefcd('0x27')](handleEntityNotFound(_0x73a023,null))[_0xefcd('0x27')](function(_0x403065){if(_0x403065){_0x26a735[_0xefcd('0x48')][_0xefcd('0x50')]=_0x403065['id'];_0x26a735[_0xefcd('0x48')][_0xefcd('0x51')]=integrations['getSubjects'](_0x26a735[_0xefcd('0x48')]['channel'],_0x26a735['body'][_0xefcd('0x52')]);_0x26a735['body'][_0xefcd('0x53')]=integrations[_0xefcd('0x54')](_0x26a735[_0xefcd('0x48')]['channel'],_0x26a735['body'][_0xefcd('0x52')]);return db[_0xefcd('0x4a')][_0xefcd('0x47')](_0x26a735[_0xefcd('0x48')],{'include':[{'model':db['DeskField'],'as':_0xefcd('0x51')},{'model':db['DeskField'],'as':_0xefcd('0x53')}]});}return null;})[_0xefcd('0x27')](respondWithResult(_0x73a023,null))[_0xefcd('0x42')](handleError(_0x73a023,null));};exports[_0xefcd('0x55')]=function(_0x26e416,_0x558e75,_0x595314){var _0x39bd16=[{'name':_0xefcd('0x56'),'label':_0xefcd('0x56'),'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 _0x53abad='';return db[_0xefcd('0x3e')]['findOne']({'where':{'id':_0x26e416[_0xefcd('0x44')]['id']},'attributes':['id',_0xefcd('0x57'),'authType',_0xefcd('0x58'),_0xefcd('0x59'),_0xefcd('0x5a'),_0xefcd('0x5b'),_0xefcd('0x5c'),_0xefcd('0x5d')]})[_0xefcd('0x27')](handleEntityNotFound(_0x558e75,null))[_0xefcd('0x27')](function(_0x29f523){if(_0x29f523){_0x53abad=_0x29f523[_0xefcd('0x57')];var _0x4fc017=_0x53abad[_0xefcd('0x5e')](-0x1);if(_0x4fc017==='/'){_0x53abad=_0x53abad[_0xefcd('0x5f')](0x0,_0x53abad[_0xefcd('0x60')](_0x4fc017));}var _0x5c45fb={'method':_0xefcd('0x61'),'uri':util[_0xefcd('0x62')]('%s/custom_fields',_0x53abad),'headers':{'Content-Type':_0xefcd('0x63'),'Accept':_0xefcd('0x63')},'json':!![]};if(_0x29f523[_0xefcd('0x64')]===_0xefcd('0x65')){_0x5c45fb[_0xefcd('0x66')][_0xefcd('0x67')]=util[_0xefcd('0x62')](_0xefcd('0x68'),new Buffer(util['format'](_0xefcd('0x69'),_0x29f523[_0xefcd('0x58')],_0x29f523[_0xefcd('0x59')]))[_0xefcd('0x6a')](_0xefcd('0x6b')));}return rp(_0x5c45fb)[_0xefcd('0x27')](function(_0x56addd){return _0x39bd16[_0xefcd('0x6c')](_['map'](_0x56addd[_0xefcd('0x6d')][_0xefcd('0x6e')],function(_0x4724ad){return{'id':_0x4724ad[_0xefcd('0x3b')],'name':_0x4724ad[_0xefcd('0x3b')],'type':_0x4724ad[_0xefcd('0x52')],'active':_0x4724ad[_0xefcd('0x6f')],'label':_0x4724ad[_0xefcd('0x70')],'custom':!![]};}));});}})[_0xefcd('0x27')](function(_0x25d133){return{'count':_0x25d133[_0xefcd('0x45')],'rows':_0x25d133};})['then'](respondWithResult(_0x558e75,null))[_0xefcd('0x42')](function(_0x1b6571){var _0x1147e0=_0x26e416['query']['test']?0x1f4:_0x1b6571[_0xefcd('0x71')]||0x1f4;logger[_0xefcd('0x29')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x1147e0,JSON[_0xefcd('0x72')](_0x1b6571));delete _0x1b6571['name'];if(_0x1147e0===0x191){_0x1147e0=0x190;}_0x558e75['status'](_0x1147e0)[_0xefcd('0x2b')](_0x26e416[_0xefcd('0x31')][_0xefcd('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x1b6571[_0xefcd('0x71')]}:_0x1b6571);});};
\ No newline at end of file
+var _0xe7d9=['findAll','rows','catch','show','params','find','create','body','findOne','DeskConfiguration','hasOwnProperty','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','DeskField','authType','password','token','tokenSecret','remoteUri','slice','substring','GET','format','application/json','basic','username','concat','_embedded','entries','active','label','test','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','then','destroy','name','send','map','DeskAccount','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','pick','filter','merge','where','type','options','includeAll','include'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0xe7d9,0x157));var _0x9e7d=function(_0x2e142b,_0x5cc3f5){_0x2e142b=_0x2e142b-0x0;var _0x50c222=_0xe7d9[_0x2e142b];return _0x50c222;};'use strict';var emlformat=require(_0x9e7d('0x0'));var rimraf=require(_0x9e7d('0x1'));var zipdir=require(_0x9e7d('0x2'));var jsonpatch=require(_0x9e7d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9e7d('0x4'));var Mustache=require(_0x9e7d('0x5'));var util=require(_0x9e7d('0x6'));var path=require('path');var sox=require(_0x9e7d('0x7'));var csv=require(_0x9e7d('0x8'));var ejs=require(_0x9e7d('0x9'));var fs=require('fs');var fs_extra=require(_0x9e7d('0xa'));var _=require(_0x9e7d('0xb'));var squel=require('squel');var crypto=require(_0x9e7d('0xc'));var jsforce=require(_0x9e7d('0xd'));var deskjs=require(_0x9e7d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9e7d('0xf'));var Papa=require(_0x9e7d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e7d('0x11'));var hardwareService=require(_0x9e7d('0x12'));var logger=require(_0x9e7d('0x13'))(_0x9e7d('0x14'));var utils=require('../../config/utils');var config=require(_0x9e7d('0x15'));var licenseUtil=require(_0x9e7d('0x16'));var db=require(_0x9e7d('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x494205,_0x23df75){_0x23df75=_0x23df75||0xcc;return function(_0x58a649){if(_0x58a649){return _0x494205[_0x9e7d('0x18')](_0x23df75);}return _0x494205[_0x9e7d('0x19')](_0x23df75)[_0x9e7d('0x1a')]();};}function respondWithResult(_0x343228,_0x5ca7e6){_0x5ca7e6=_0x5ca7e6||0xc8;return function(_0x39c8ea){if(_0x39c8ea){return _0x343228[_0x9e7d('0x19')](_0x5ca7e6)['json'](_0x39c8ea);}};}function respondWithFilteredResult(_0x3deb2c,_0x51e295){return function(_0x3543d7){if(_0x3543d7){var _0x4f2977=typeof _0x51e295[_0x9e7d('0x1b')]===_0x9e7d('0x1c')&&typeof _0x51e295[_0x9e7d('0x1d')]===_0x9e7d('0x1c');var _0x4c96c2=_0x3543d7[_0x9e7d('0x1e')];var _0x369599=_0x4f2977?0x0:_0x51e295['offset'];var _0x47c595=_0x4f2977?_0x3543d7[_0x9e7d('0x1e')]:_0x51e295['offset']+_0x51e295[_0x9e7d('0x1d')];var _0x1a05cb;if(_0x47c595>=_0x4c96c2){_0x47c595=_0x4c96c2;_0x1a05cb=0xc8;}else{_0x1a05cb=0xce;}_0x3deb2c['status'](_0x1a05cb);return _0x3deb2c['set'](_0x9e7d('0x1f'),_0x369599+'-'+_0x47c595+'/'+_0x4c96c2)[_0x9e7d('0x20')](_0x3543d7);}return null;};}function patchUpdates(_0x6bdb40){return function(_0x34121f){try{jsonpatch['apply'](_0x34121f,_0x6bdb40,!![]);}catch(_0x5baa9d){return BPromise[_0x9e7d('0x21')](_0x5baa9d);}return _0x34121f['save']();};}function saveUpdates(_0x5c7936,_0x28c3a4){return function(_0x1c0dbb){if(_0x1c0dbb){return _0x1c0dbb['update'](_0x5c7936)[_0x9e7d('0x22')](function(_0x474631){return _0x474631;});}return null;};}function removeEntity(_0x3ebe8a,_0x203b7f){return function(_0x573205){if(_0x573205){return _0x573205[_0x9e7d('0x23')]()['then'](function(){_0x3ebe8a[_0x9e7d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd0ae62,_0x4d3e3a){return function(_0x403d82){if(!_0x403d82){_0xd0ae62[_0x9e7d('0x18')](0x194);}return _0x403d82;};}function handleError(_0xa0599f,_0x25e141){_0x25e141=_0x25e141||0x1f4;return function(_0x59da20){logger['error'](_0x59da20['stack']);if(_0x59da20[_0x9e7d('0x24')]){delete _0x59da20[_0x9e7d('0x24')];}_0xa0599f['status'](_0x25e141)[_0x9e7d('0x25')](_0x59da20);};}exports['index']=function(_0x3a9110,_0x467eb5){var _0x46649d={},_0x2555a1={},_0x4987a0={'count':0x0,'rows':[]};var _0x1365ad=_[_0x9e7d('0x26')](db[_0x9e7d('0x27')][_0x9e7d('0x28')],function(_0x21b328){return{'name':_0x21b328[_0x9e7d('0x29')],'type':_0x21b328['type'][_0x9e7d('0x2a')]};});_0x2555a1['model']=_[_0x9e7d('0x26')](_0x1365ad,_0x9e7d('0x24'));_0x2555a1[_0x9e7d('0x2b')]=_[_0x9e7d('0x2c')](_0x3a9110[_0x9e7d('0x2b')]);_0x2555a1[_0x9e7d('0x2d')]=_[_0x9e7d('0x2e')](_0x2555a1[_0x9e7d('0x2f')],_0x2555a1[_0x9e7d('0x2b')]);_0x46649d[_0x9e7d('0x30')]=_[_0x9e7d('0x2e')](_0x2555a1[_0x9e7d('0x2f')],qs['fields'](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0x46649d[_0x9e7d('0x30')]=_0x46649d['attributes'][_0x9e7d('0x32')]?_0x46649d[_0x9e7d('0x30')]:_0x2555a1[_0x9e7d('0x2f')];if(!_0x3a9110[_0x9e7d('0x2b')]['hasOwnProperty'](_0x9e7d('0x33'))){_0x46649d[_0x9e7d('0x1d')]=qs[_0x9e7d('0x1d')](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x1d')]);_0x46649d[_0x9e7d('0x1b')]=qs[_0x9e7d('0x1b')](_0x3a9110['query'][_0x9e7d('0x1b')]);}_0x46649d['order']=qs[_0x9e7d('0x34')](_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x34')]);_0x46649d['where']=qs[_0x9e7d('0x2d')](_[_0x9e7d('0x35')](_0x3a9110['query'],_0x2555a1[_0x9e7d('0x2d')]),_0x1365ad);if(_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x36')]){_0x46649d['where']=_[_0x9e7d('0x37')](_0x46649d[_0x9e7d('0x38')],{'$or':_[_0x9e7d('0x26')](_0x1365ad,function(_0x5f0507){if(_0x5f0507[_0x9e7d('0x39')]!=='VIRTUAL'){var _0x428053={};_0x428053[_0x5f0507[_0x9e7d('0x24')]]={'$like':'%'+_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x36')]+'%'};return _0x428053;}})});}_0x46649d=_[_0x9e7d('0x37')]({},_0x46649d,_0x3a9110[_0x9e7d('0x3a')]);var _0x3edf70={'where':_0x46649d[_0x9e7d('0x38')]};return db['DeskAccount'][_0x9e7d('0x1e')](_0x3edf70)[_0x9e7d('0x22')](function(_0x3874be){_0x4987a0[_0x9e7d('0x1e')]=_0x3874be;if(_0x3a9110[_0x9e7d('0x2b')][_0x9e7d('0x3b')]){_0x46649d[_0x9e7d('0x3c')]=[{'all':!![]}];}return db[_0x9e7d('0x27')][_0x9e7d('0x3d')](_0x46649d);})['then'](function(_0x355b94){_0x4987a0[_0x9e7d('0x3e')]=_0x355b94;return _0x4987a0;})[_0x9e7d('0x22')](respondWithFilteredResult(_0x467eb5,_0x46649d))[_0x9e7d('0x3f')](handleError(_0x467eb5,null));};exports[_0x9e7d('0x40')]=function(_0x3e6ef3,_0x5cbc87){var _0x506e84={'raw':![],'where':{'id':_0x3e6ef3[_0x9e7d('0x41')]['id']}},_0x57607f={};_0x57607f[_0x9e7d('0x2f')]=_['keys'](db[_0x9e7d('0x27')][_0x9e7d('0x28')]);_0x57607f['query']=_['keys'](_0x3e6ef3[_0x9e7d('0x2b')]);_0x57607f[_0x9e7d('0x2d')]=_[_0x9e7d('0x2e')](_0x57607f['model'],_0x57607f[_0x9e7d('0x2b')]);_0x506e84[_0x9e7d('0x30')]=_[_0x9e7d('0x2e')](_0x57607f[_0x9e7d('0x2f')],qs[_0x9e7d('0x31')](_0x3e6ef3[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0x506e84[_0x9e7d('0x30')]=_0x506e84[_0x9e7d('0x30')][_0x9e7d('0x32')]?_0x506e84[_0x9e7d('0x30')]:_0x57607f[_0x9e7d('0x2f')];if(_0x3e6ef3[_0x9e7d('0x2b')][_0x9e7d('0x3b')]){_0x506e84[_0x9e7d('0x3c')]=[{'all':!![]}];}_0x506e84=_[_0x9e7d('0x37')]({},_0x506e84,_0x3e6ef3[_0x9e7d('0x3a')]);return db['DeskAccount'][_0x9e7d('0x42')](_0x506e84)[_0x9e7d('0x22')](handleEntityNotFound(_0x5cbc87,null))[_0x9e7d('0x22')](respondWithResult(_0x5cbc87,null))[_0x9e7d('0x3f')](handleError(_0x5cbc87,null));};exports['create']=function(_0x5b6237,_0x3ad143){return db[_0x9e7d('0x27')][_0x9e7d('0x43')](_0x5b6237['body'],{})[_0x9e7d('0x22')](respondWithResult(_0x3ad143,0xc9))[_0x9e7d('0x3f')](handleError(_0x3ad143,null));};exports['update']=function(_0x2008fb,_0x12c871){if(_0x2008fb[_0x9e7d('0x44')]['id']){delete _0x2008fb[_0x9e7d('0x44')]['id'];}return db[_0x9e7d('0x27')][_0x9e7d('0x42')]({'where':{'id':_0x2008fb[_0x9e7d('0x41')]['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x12c871,null))[_0x9e7d('0x22')](saveUpdates(_0x2008fb['body'],null))['then'](respondWithResult(_0x12c871,null))[_0x9e7d('0x3f')](handleError(_0x12c871,null));};exports[_0x9e7d('0x23')]=function(_0x3f578d,_0x410a91){return db['DeskAccount'][_0x9e7d('0x42')]({'where':{'id':_0x3f578d['params']['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x410a91,null))[_0x9e7d('0x22')](removeEntity(_0x410a91,null))[_0x9e7d('0x3f')](handleError(_0x410a91,null));};exports['getConfigurations']=function(_0x4293e6,_0x4226d1,_0x21813b){var _0xc05789={};var _0x4b3a09={};var _0x33ea27;var _0xc6bcda;return db[_0x9e7d('0x27')][_0x9e7d('0x45')]({'where':{'id':_0x4293e6[_0x9e7d('0x41')]['id']}})[_0x9e7d('0x22')](handleEntityNotFound(_0x4226d1,null))[_0x9e7d('0x22')](function(_0x652b1){if(_0x652b1){_0x33ea27=_0x652b1;_0x4b3a09['model']=_[_0x9e7d('0x2c')](db[_0x9e7d('0x46')][_0x9e7d('0x28')]);_0x4b3a09[_0x9e7d('0x2b')]=_[_0x9e7d('0x2c')](_0x4293e6['query']);_0x4b3a09[_0x9e7d('0x2d')]=_['intersection'](_0x4b3a09['model'],_0x4b3a09[_0x9e7d('0x2b')]);_0xc05789['attributes']=_[_0x9e7d('0x2e')](_0x4b3a09[_0x9e7d('0x2f')],qs[_0x9e7d('0x31')](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x31')]));_0xc05789['attributes']=_0xc05789[_0x9e7d('0x30')]['length']?_0xc05789[_0x9e7d('0x30')]:_0x4b3a09['model'];_0xc05789['order']=qs['sort'](_0x4293e6[_0x9e7d('0x2b')]['sort']);_0xc05789[_0x9e7d('0x38')]=qs[_0x9e7d('0x2d')](_[_0x9e7d('0x35')](_0x4293e6[_0x9e7d('0x2b')],_0x4b3a09[_0x9e7d('0x2d')]));if(_0x4293e6[_0x9e7d('0x2b')]['filter']){_0xc05789['where']=_[_0x9e7d('0x37')](_0xc05789[_0x9e7d('0x38')],{'$or':_['map'](_0xc05789[_0x9e7d('0x30')],function(_0x25c5d8){var _0x150d39={};_0x150d39[_0x25c5d8]={'$like':'%'+_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x36')]+'%'};return _0x150d39;})});}_0xc05789=_[_0x9e7d('0x37')]({},_0xc05789,_0x4293e6[_0x9e7d('0x3a')]);return _0x33ea27['getConfigurations'](_0xc05789);}})['then'](function(_0xa7a858){if(_0xa7a858){_0xc6bcda=_0xa7a858[_0x9e7d('0x32')];if(!_0x4293e6['query'][_0x9e7d('0x47')](_0x9e7d('0x33'))){_0xc05789[_0x9e7d('0x1d')]=qs[_0x9e7d('0x1d')](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x1d')]);_0xc05789[_0x9e7d('0x1b')]=qs['offset'](_0x4293e6[_0x9e7d('0x2b')][_0x9e7d('0x1b')]);}return _0x33ea27[_0x9e7d('0x48')](_0xc05789);}})[_0x9e7d('0x22')](function(_0x4dbe3c){if(_0x4dbe3c){return _0x4dbe3c?{'count':_0xc6bcda,'rows':_0x4dbe3c}:null;}})[_0x9e7d('0x22')](respondWithResult(_0x4226d1,null))[_0x9e7d('0x3f')](handleError(_0x4226d1,null));};exports[_0x9e7d('0x49')]=function(_0x2f8027,_0x4065d6,_0x3a71d2){if(_0x2f8027['body']['id']){delete _0x2f8027[_0x9e7d('0x44')]['id'];}return db[_0x9e7d('0x27')][_0x9e7d('0x45')]({'where':{'id':_0x2f8027[_0x9e7d('0x41')]['id']}})['then'](handleEntityNotFound(_0x4065d6,null))[_0x9e7d('0x22')](function(_0x45016b){if(_0x45016b){_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4a')]=_0x45016b['id'];_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4b')]=integrations[_0x9e7d('0x4c')](_0x2f8027[_0x9e7d('0x44')]['channel'],_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x39')]);_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x4d')]=integrations['getDescriptions'](_0x2f8027['body'][_0x9e7d('0x4e')],_0x2f8027[_0x9e7d('0x44')][_0x9e7d('0x39')]);return db['DeskConfiguration'][_0x9e7d('0x43')](_0x2f8027[_0x9e7d('0x44')],{'include':[{'model':db[_0x9e7d('0x4f')],'as':_0x9e7d('0x4b')},{'model':db[_0x9e7d('0x4f')],'as':_0x9e7d('0x4d')}]});}return null;})[_0x9e7d('0x22')](respondWithResult(_0x4065d6,null))['catch'](handleError(_0x4065d6,null));};exports['getFields']=function(_0x59fc9a,_0x4f49b7,_0x173c3e){var _0x5e9d9c=[{'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 _0x221fb7='';return db['DeskAccount'][_0x9e7d('0x45')]({'where':{'id':_0x59fc9a['params']['id']},'attributes':['id','remoteUri',_0x9e7d('0x50'),'username',_0x9e7d('0x51'),'consumerKey','consumerSecret',_0x9e7d('0x52'),_0x9e7d('0x53')]})['then'](handleEntityNotFound(_0x4f49b7,null))[_0x9e7d('0x22')](function(_0x375125){if(_0x375125){_0x221fb7=_0x375125[_0x9e7d('0x54')];var _0x18c75a=_0x221fb7[_0x9e7d('0x55')](-0x1);if(_0x18c75a==='/'){_0x221fb7=_0x221fb7[_0x9e7d('0x56')](0x0,_0x221fb7['lastIndexOf'](_0x18c75a));}var _0x172ceb={'method':_0x9e7d('0x57'),'uri':util[_0x9e7d('0x58')]('%s/custom_fields',_0x221fb7),'headers':{'Content-Type':'application/json','Accept':_0x9e7d('0x59')},'json':!![]};if(_0x375125[_0x9e7d('0x50')]===_0x9e7d('0x5a')){_0x172ceb['headers']['Authorization']=util[_0x9e7d('0x58')]('Basic\x20%s',new Buffer(util[_0x9e7d('0x58')]('%s:%s',_0x375125[_0x9e7d('0x5b')],_0x375125[_0x9e7d('0x51')]))['toString']('base64'));}return rp(_0x172ceb)['then'](function(_0xf4ace){return _0x5e9d9c[_0x9e7d('0x5c')](_['map'](_0xf4ace[_0x9e7d('0x5d')][_0x9e7d('0x5e')],function(_0x1471e5){return{'id':_0x1471e5[_0x9e7d('0x24')],'name':_0x1471e5[_0x9e7d('0x24')],'type':_0x1471e5[_0x9e7d('0x39')],'active':_0x1471e5[_0x9e7d('0x5f')],'label':_0x1471e5[_0x9e7d('0x60')],'custom':!![]};}));});}})[_0x9e7d('0x22')](function(_0x5467bb){return{'count':_0x5467bb[_0x9e7d('0x32')],'rows':_0x5467bb};})[_0x9e7d('0x22')](respondWithResult(_0x4f49b7,null))[_0x9e7d('0x3f')](function(_0x5f4488){var _0x6254bc=_0x59fc9a[_0x9e7d('0x2b')][_0x9e7d('0x61')]?0x1f4:_0x5f4488['statusCode']||0x1f4;logger[_0x9e7d('0x62')](_0x9e7d('0x63'),'getFields',_0x6254bc,JSON['stringify'](_0x5f4488));delete _0x5f4488[_0x9e7d('0x24')];if(_0x6254bc===0x191){_0x6254bc=0x190;}_0x4f49b7[_0x9e7d('0x19')](_0x6254bc)['send'](_0x59fc9a['query']['test']?{'message':_0x9e7d('0x64'),'statusCode':_0x5f4488['statusCode']}:_0x5f4488);});};
\ No newline at end of file
index dbd84db..503bf27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04d7=['exports','define','util','api','moment','bluebird','request-promise','path','rimraf','./intDeskAccount.attributes','../../components/integrations/configuration'];(function(_0x123e4e,_0x3ff9ff){var _0xd206f2=function(_0x3bbabc){while(--_0x3bbabc){_0x123e4e['push'](_0x123e4e['shift']());}};_0xd206f2(++_0x3ff9ff);}(_0x04d7,0xde));var _0x704d=function(_0x2b3046,_0x11b8c7){_0x2b3046=_0x2b3046-0x0;var _0x7d58d3=_0x04d7[_0x2b3046];return _0x7d58d3;};'use strict';var _=require('lodash');var util=require(_0x704d('0x0'));var logger=require('../../config/logger')(_0x704d('0x1'));var moment=require(_0x704d('0x2'));var BPromise=require(_0x704d('0x3'));var rp=require(_0x704d('0x4'));var fs=require('fs');var path=require(_0x704d('0x5'));var rimraf=require(_0x704d('0x6'));var config=require('../../config/environment');var attributes=require(_0x704d('0x7'));var integrations=require(_0x704d('0x8'));module[_0x704d('0x9')]=function(_0x4103cd,_0x1a6322){return _0x4103cd[_0x704d('0xa')]('DeskAccount',attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc46d=['util','api','moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','DeskAccount','int_desk_accounts','lodash'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xc46d,0x149));var _0xdc46=function(_0x3f5fbe,_0xb0b5c6){_0x3f5fbe=_0x3f5fbe-0x0;var _0x54a971=_0xc46d[_0x3f5fbe];return _0x54a971;};'use strict';var _=require(_0xdc46('0x0'));var util=require(_0xdc46('0x1'));var logger=require('../../config/logger')(_0xdc46('0x2'));var moment=require(_0xdc46('0x3'));var BPromise=require(_0xdc46('0x4'));var rp=require(_0xdc46('0x5'));var fs=require('fs');var path=require(_0xdc46('0x6'));var rimraf=require('rimraf');var config=require(_0xdc46('0x7'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xdc46('0x8'));module['exports']=function(_0x5c1192,_0x48b993){return _0x5c1192['define'](_0xdc46('0x9'),attributes,{'tableName':_0xdc46('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0701bdd..71d7d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab55=['model','attributes','map','ShowDeskAccount','find','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http','request','then','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','limit','include'];(function(_0x4f7d7f,_0x42e367){var _0x597ffd=function(_0xb36f82){while(--_0xb36f82){_0x4f7d7f['push'](_0x4f7d7f['shift']());}};_0x597ffd(++_0x42e367);}(_0xab55,0x170));var _0x5ab5=function(_0xe4778,_0x33bbe3){_0xe4778=_0xe4778-0x0;var _0xaeedbc=_0xab55[_0xe4778];return _0xaeedbc;};'use strict';var _=require(_0x5ab5('0x0'));var util=require(_0x5ab5('0x1'));var moment=require(_0x5ab5('0x2'));var BPromise=require('bluebird');var rs=require(_0x5ab5('0x3'));var fs=require('fs');var Redis=require(_0x5ab5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5ab5('0x5'));var logger=require('../../config/logger')(_0x5ab5('0x6'));var config=require('../../config/environment');var jayson=require(_0x5ab5('0x7'));var client=jayson['client'][_0x5ab5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xeada6f,_0x3ae1e6,_0x3c6bfd){return new BPromise(function(_0x595378,_0x36e26f){return client[_0x5ab5('0x9')](_0xeada6f,_0x3c6bfd)[_0x5ab5('0xa')](function(_0xeab2b0){logger['info'](_0x5ab5('0xb'),_0x3ae1e6,_0x5ab5('0xc'));logger[_0x5ab5('0xd')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x3ae1e6,'request\x20sent',JSON[_0x5ab5('0xe')](_0xeab2b0));if(_0xeab2b0[_0x5ab5('0xf')]){if(_0xeab2b0[_0x5ab5('0xf')]['code']===0x1f4){logger[_0x5ab5('0xf')](_0x5ab5('0xb'),_0x3ae1e6,_0xeab2b0[_0x5ab5('0xf')][_0x5ab5('0x10')]);return _0x36e26f(_0xeab2b0[_0x5ab5('0xf')][_0x5ab5('0x10')]);}logger[_0x5ab5('0xf')]('DeskAccount,\x20%s,\x20%s',_0x3ae1e6,_0xeab2b0['error'][_0x5ab5('0x10')]);return _0x595378(_0xeab2b0['error']['message']);}else{logger[_0x5ab5('0x11')](_0x5ab5('0xb'),_0x3ae1e6,_0x5ab5('0xc'));_0x595378(_0xeab2b0[_0x5ab5('0x12')]['message']);}})[_0x5ab5('0x13')](function(_0x4ec107){logger[_0x5ab5('0xf')](_0x5ab5('0xb'),_0x3ae1e6,_0x4ec107);_0x36e26f(_0x4ec107);});});}exports[_0x5ab5('0x14')]=function(_0x49fd6e){var _0x5c3b9b=this;return new Promise(function(_0x70f49f,_0x272b37){return db[_0x5ab5('0x15')][_0x5ab5('0x16')]({'raw':_0x49fd6e[_0x5ab5('0x17')]?_0x49fd6e[_0x5ab5('0x17')][_0x5ab5('0x18')]===undefined?!![]:![]:!![],'where':_0x49fd6e['options']?_0x49fd6e[_0x5ab5('0x17')][_0x5ab5('0x19')]||null:null,'attributes':_0x49fd6e['options']?_0x49fd6e[_0x5ab5('0x17')]['attributes']||null:null,'limit':_0x49fd6e[_0x5ab5('0x17')]?_0x49fd6e[_0x5ab5('0x17')][_0x5ab5('0x1a')]||null:null,'include':_0x49fd6e[_0x5ab5('0x17')]?_0x49fd6e['options'][_0x5ab5('0x1b')]?_['map'](_0x49fd6e[_0x5ab5('0x17')][_0x5ab5('0x1b')],function(_0x2bbb31){return{'model':db[_0x2bbb31[_0x5ab5('0x1c')]],'as':_0x2bbb31['as'],'attributes':_0x2bbb31[_0x5ab5('0x1d')],'include':_0x2bbb31[_0x5ab5('0x1b')]?_[_0x5ab5('0x1e')](_0x2bbb31[_0x5ab5('0x1b')],function(_0x1043e9){return{'model':db[_0x1043e9[_0x5ab5('0x1c')]],'as':_0x1043e9['as'],'attributes':_0x1043e9['attributes'],'include':_0x1043e9['include']?_[_0x5ab5('0x1e')](_0x1043e9[_0x5ab5('0x1b')],function(_0x55b99f){return{'model':db[_0x55b99f[_0x5ab5('0x1c')]],'as':_0x55b99f['as'],'attributes':_0x55b99f['attributes']};}):[]};}):[]};}):[]:[]})[_0x5ab5('0xa')](function(_0x3391db){logger['info'](_0x5ab5('0x14'),_0x49fd6e);logger['debug'](_0x5ab5('0x14'),_0x49fd6e,JSON[_0x5ab5('0xe')](_0x3391db));_0x70f49f(_0x3391db);})['catch'](function(_0x5d3318){logger[_0x5ab5('0xf')](_0x5ab5('0x14'),_0x5d3318[_0x5ab5('0x10')],_0x49fd6e);_0x272b37(_0x5c3b9b[_0x5ab5('0xf')](0x1f4,_0x5d3318[_0x5ab5('0x10')]));});});};exports[_0x5ab5('0x1f')]=function(_0x405ab3){var _0x38c1a9=this;return new Promise(function(_0x443323,_0xe85f86){return db[_0x5ab5('0x15')][_0x5ab5('0x20')]({'raw':_0x405ab3[_0x5ab5('0x17')]?_0x405ab3[_0x5ab5('0x17')][_0x5ab5('0x18')]===undefined?!![]:![]:!![],'where':_0x405ab3[_0x5ab5('0x17')]?_0x405ab3['options'][_0x5ab5('0x19')]||null:null,'attributes':_0x405ab3['options']?_0x405ab3[_0x5ab5('0x17')][_0x5ab5('0x1d')]||null:null,'include':_0x405ab3[_0x5ab5('0x17')]?_0x405ab3['options'][_0x5ab5('0x1b')]?_[_0x5ab5('0x1e')](_0x405ab3['options']['include'],function(_0xc7f0f9){return{'model':db[_0xc7f0f9[_0x5ab5('0x1c')]],'as':_0xc7f0f9['as'],'attributes':_0xc7f0f9[_0x5ab5('0x1d')],'include':_0xc7f0f9['include']?_[_0x5ab5('0x1e')](_0xc7f0f9[_0x5ab5('0x1b')],function(_0x3d1752){return{'model':db[_0x3d1752[_0x5ab5('0x1c')]],'as':_0x3d1752['as'],'attributes':_0x3d1752['attributes'],'include':_0x3d1752[_0x5ab5('0x1b')]?_[_0x5ab5('0x1e')](_0x3d1752['include'],function(_0x23700d){return{'model':db[_0x23700d[_0x5ab5('0x1c')]],'as':_0x23700d['as'],'attributes':_0x23700d[_0x5ab5('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5ab5('0xa')](function(_0x1d2e78){logger[_0x5ab5('0x11')](_0x5ab5('0x1f'),_0x405ab3);logger['debug']('ShowDeskAccount',_0x405ab3,JSON[_0x5ab5('0xe')](_0x1d2e78));_0x443323(_0x1d2e78);})[_0x5ab5('0x13')](function(_0x1f68ed){logger['error']('ShowDeskAccount',_0x1f68ed[_0x5ab5('0x10')],_0x405ab3);_0xe85f86(_0x38c1a9['error'](0x1f4,_0x1f68ed['message']));});});};
\ No newline at end of file
+var _0x6be4=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetDeskAccount','DeskAccount','options','raw','include','map','model','attributes','then','catch','ShowDeskAccount','where','lodash','util','moment','bluebird'];(function(_0x150204,_0x11a8d1){var _0x1678f2=function(_0x129408){while(--_0x129408){_0x150204['push'](_0x150204['shift']());}};_0x1678f2(++_0x11a8d1);}(_0x6be4,0x137));var _0x46be=function(_0x431f74,_0x184580){_0x431f74=_0x431f74-0x0;var _0x1e9c7a=_0x6be4[_0x431f74];return _0x1e9c7a;};'use strict';var _=require(_0x46be('0x0'));var util=require(_0x46be('0x1'));var moment=require(_0x46be('0x2'));var BPromise=require(_0x46be('0x3'));var rs=require(_0x46be('0x4'));var fs=require('fs');var Redis=require(_0x46be('0x5'));var db=require(_0x46be('0x6'))['db'];var utils=require(_0x46be('0x7'));var logger=require('../../config/logger')(_0x46be('0x8'));var config=require(_0x46be('0x9'));var jayson=require(_0x46be('0xa'));var client=jayson[_0x46be('0xb')][_0x46be('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x43faab,_0x140c45,_0x31f00d){return new BPromise(function(_0x328648,_0x2d290a){return client[_0x46be('0xd')](_0x43faab,_0x31f00d)['then'](function(_0x12ca7d){logger[_0x46be('0xe')](_0x46be('0xf'),_0x140c45,'request\x20sent');logger[_0x46be('0x10')](_0x46be('0x11'),_0x140c45,_0x46be('0x12'),JSON[_0x46be('0x13')](_0x12ca7d));if(_0x12ca7d[_0x46be('0x14')]){if(_0x12ca7d[_0x46be('0x14')]['code']===0x1f4){logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);return _0x2d290a(_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);}logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x12ca7d[_0x46be('0x14')][_0x46be('0x15')]);return _0x328648(_0x12ca7d['error'][_0x46be('0x15')]);}else{logger[_0x46be('0xe')](_0x46be('0xf'),_0x140c45,_0x46be('0x12'));_0x328648(_0x12ca7d[_0x46be('0x16')][_0x46be('0x15')]);}})['catch'](function(_0x26fcd0){logger[_0x46be('0x14')](_0x46be('0xf'),_0x140c45,_0x26fcd0);_0x2d290a(_0x26fcd0);});});}exports[_0x46be('0x17')]=function(_0x435ba6){var _0x10d03f=this;return new Promise(function(_0x1d9cf9,_0x18d9f1){return db[_0x46be('0x18')]['findAll']({'raw':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')][_0x46be('0x1a')]===undefined?!![]:![]:!![],'where':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')]['where']||null:null,'attributes':_0x435ba6[_0x46be('0x19')]?_0x435ba6['options']['attributes']||null:null,'limit':_0x435ba6[_0x46be('0x19')]?_0x435ba6[_0x46be('0x19')]['limit']||null:null,'include':_0x435ba6[_0x46be('0x19')]?_0x435ba6['options'][_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x435ba6['options'][_0x46be('0x1b')],function(_0x5ba28e){return{'model':db[_0x5ba28e[_0x46be('0x1d')]],'as':_0x5ba28e['as'],'attributes':_0x5ba28e[_0x46be('0x1e')],'include':_0x5ba28e[_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x5ba28e[_0x46be('0x1b')],function(_0x2274ba){return{'model':db[_0x2274ba['model']],'as':_0x2274ba['as'],'attributes':_0x2274ba[_0x46be('0x1e')],'include':_0x2274ba[_0x46be('0x1b')]?_['map'](_0x2274ba['include'],function(_0x2f34d6){return{'model':db[_0x2f34d6[_0x46be('0x1d')]],'as':_0x2f34d6['as'],'attributes':_0x2f34d6[_0x46be('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x46be('0x1f')](function(_0x55c708){logger[_0x46be('0xe')]('GetDeskAccount',_0x435ba6);logger[_0x46be('0x10')](_0x46be('0x17'),_0x435ba6,JSON[_0x46be('0x13')](_0x55c708));_0x1d9cf9(_0x55c708);})[_0x46be('0x20')](function(_0x5b6cff){logger[_0x46be('0x14')](_0x46be('0x17'),_0x5b6cff['message'],_0x435ba6);_0x18d9f1(_0x10d03f['error'](0x1f4,_0x5b6cff['message']));});});};exports[_0x46be('0x21')]=function(_0x158ea9){var _0x17cb42=this;return new Promise(function(_0x2636f1,_0x4f3723){return db[_0x46be('0x18')]['find']({'raw':_0x158ea9[_0x46be('0x19')]?_0x158ea9[_0x46be('0x19')][_0x46be('0x1a')]===undefined?!![]:![]:!![],'where':_0x158ea9[_0x46be('0x19')]?_0x158ea9[_0x46be('0x19')][_0x46be('0x22')]||null:null,'attributes':_0x158ea9['options']?_0x158ea9[_0x46be('0x19')][_0x46be('0x1e')]||null:null,'include':_0x158ea9[_0x46be('0x19')]?_0x158ea9['options'][_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x158ea9['options']['include'],function(_0x201763){return{'model':db[_0x201763['model']],'as':_0x201763['as'],'attributes':_0x201763[_0x46be('0x1e')],'include':_0x201763['include']?_[_0x46be('0x1c')](_0x201763[_0x46be('0x1b')],function(_0x5cf731){return{'model':db[_0x5cf731[_0x46be('0x1d')]],'as':_0x5cf731['as'],'attributes':_0x5cf731[_0x46be('0x1e')],'include':_0x5cf731[_0x46be('0x1b')]?_[_0x46be('0x1c')](_0x5cf731[_0x46be('0x1b')],function(_0x227450){return{'model':db[_0x227450[_0x46be('0x1d')]],'as':_0x227450['as'],'attributes':_0x227450[_0x46be('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x46be('0x1f')](function(_0x53793a){logger[_0x46be('0xe')](_0x46be('0x21'),_0x158ea9);logger[_0x46be('0x10')]('ShowDeskAccount',_0x158ea9,JSON['stringify'](_0x53793a));_0x2636f1(_0x53793a);})['catch'](function(_0x354013){logger['error'](_0x46be('0x21'),_0x354013[_0x46be('0x15')],_0x158ea9);_0x4f3723(_0x17cb42['error'](0x1f4,_0x354013[_0x46be('0x15')]));});});};
\ No newline at end of file
index 729baf4..7bbfb25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4e74f8,_0x5c56a4){var _0x5a042c=function(_0x19fea9){while(--_0x19fea9){_0x4e74f8['push'](_0x4e74f8['shift']());}};_0x5a042c(++_0x5c56a4);}(_0x34e8,0x12c));var _0x834e=function(_0x396f79,_0x1bfb9f){_0x396f79=_0x396f79-0x0;var _0x563fbc=_0x34e8[_0x396f79];return _0x563fbc;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
+var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x2aa875,_0x47068e){var _0x1ef408=function(_0x55248c){while(--_0x55248c){_0x2aa875['push'](_0x2aa875['shift']());}};_0x1ef408(++_0x47068e);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'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['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
index 0d2ccf3..d9622dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a48=['exports','STRING','sequelize'];(function(_0x2e379f,_0x1b3f19){var _0x57c883=function(_0x556ee9){while(--_0x556ee9){_0x2e379f['push'](_0x2e379f['shift']());}};_0x57c883(++_0x1b3f19);}(_0x6a48,0xe0));var _0x86a4=function(_0x8a94c7,_0x1c5eff){_0x8a94c7=_0x8a94c7-0x0;var _0x309bac=_0x6a48[_0x8a94c7];return _0x309bac;};'use strict';var Sequelize=require(_0x86a4('0x0'));module[_0x86a4('0x1')]={'name':{'type':Sequelize[_0x86a4('0x2')]},'description':{'type':Sequelize[_0x86a4('0x2')]}};
\ No newline at end of file
+var _0xef68=['STRING','sequelize'];(function(_0x58e48d,_0x5c99e6){var _0x7799c7=function(_0x4256a6){while(--_0x4256a6){_0x58e48d['push'](_0x58e48d['shift']());}};_0x7799c7(++_0x5c99e6);}(_0xef68,0x105));var _0x8ef6=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xef68[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require(_0x8ef6('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ef6('0x1')]},'description':{'type':Sequelize[_0x8ef6('0x1')]}};
\ No newline at end of file
index fdbfec9..a653028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['getSubjects','getDescriptions','getTags','Tag','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','sendStatus','error','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','map','query','keys','filters','intersection','attributes','model','length','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','rows','params','fields','find','catch','create','body','getFields','findOne','DeskField','hasOwnProperty','nolimit'];(function(_0x3b09bb,_0x2cc29b){var _0x139b3a=function(_0x44cce3){while(--_0x44cce3){_0x3b09bb['push'](_0x3b09bb['shift']());}};_0x139b3a(++_0x2cc29b);}(_0x7fbe,0xf7));var _0xe7fb=function(_0xd0448e,_0x2d3d92){_0xd0448e=_0xd0448e-0x0;var _0x3563cb=_0x7fbe[_0xd0448e];return _0x3563cb;};'use strict';var emlformat=require(_0xe7fb('0x0'));var rimraf=require(_0xe7fb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe7fb('0x2'));var rp=require(_0xe7fb('0x3'));var moment=require(_0xe7fb('0x4'));var BPromise=require(_0xe7fb('0x5'));var Mustache=require(_0xe7fb('0x6'));var util=require('util');var path=require('path');var sox=require(_0xe7fb('0x7'));var csv=require('to-csv');var ejs=require(_0xe7fb('0x8'));var fs=require('fs');var fs_extra=require(_0xe7fb('0x9'));var _=require(_0xe7fb('0xa'));var squel=require('squel');var crypto=require(_0xe7fb('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe7fb('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe7fb('0xd'));var Papa=require(_0xe7fb('0xe'));var Redis=require(_0xe7fb('0xf'));var authService=require(_0xe7fb('0x10'));var qs=require(_0xe7fb('0x11'));var as=require(_0xe7fb('0x12'));var hardwareService=require(_0xe7fb('0x13'));var logger=require('../../config/logger')(_0xe7fb('0x14'));var utils=require('../../config/utils');var config=require(_0xe7fb('0x15'));var licenseUtil=require(_0xe7fb('0x16'));var db=require(_0xe7fb('0x17'))['db'];function respondWithStatusCode(_0x169e8e,_0x4dd03b){_0x4dd03b=_0x4dd03b||0xcc;return function(_0x53873d){if(_0x53873d){return _0x169e8e['sendStatus'](_0x4dd03b);}return _0x169e8e['status'](_0x4dd03b)[_0xe7fb('0x18')]();};}function respondWithResult(_0x1ecf2c,_0x184f03){_0x184f03=_0x184f03||0xc8;return function(_0x105a77){if(_0x105a77){return _0x1ecf2c[_0xe7fb('0x19')](_0x184f03)[_0xe7fb('0x1a')](_0x105a77);}};}function respondWithFilteredResult(_0x5536e2,_0x495da0){return function(_0x339e39){if(_0x339e39){var _0x1467b0=typeof _0x495da0[_0xe7fb('0x1b')]===_0xe7fb('0x1c')&&typeof _0x495da0[_0xe7fb('0x1d')]===_0xe7fb('0x1c');var _0x14b626=_0x339e39[_0xe7fb('0x1e')];var _0x1cc7af=_0x1467b0?0x0:_0x495da0[_0xe7fb('0x1b')];var _0x21b9e1=_0x1467b0?_0x339e39[_0xe7fb('0x1e')]:_0x495da0[_0xe7fb('0x1b')]+_0x495da0[_0xe7fb('0x1d')];var _0x2fdcb7;if(_0x21b9e1>=_0x14b626){_0x21b9e1=_0x14b626;_0x2fdcb7=0xc8;}else{_0x2fdcb7=0xce;}_0x5536e2[_0xe7fb('0x19')](_0x2fdcb7);return _0x5536e2[_0xe7fb('0x1f')](_0xe7fb('0x20'),_0x1cc7af+'-'+_0x21b9e1+'/'+_0x14b626)['json'](_0x339e39);}return null;};}function patchUpdates(_0xe23ae8){return function(_0x258dbf){try{jsonpatch['apply'](_0x258dbf,_0xe23ae8,!![]);}catch(_0x241371){return BPromise['reject'](_0x241371);}return _0x258dbf[_0xe7fb('0x21')]();};}function saveUpdates(_0x19b542,_0x2e0b26){return function(_0x14158e){if(_0x14158e){return _0x14158e[_0xe7fb('0x22')](_0x19b542)[_0xe7fb('0x23')](function(_0x541d20){return _0x541d20;});}return null;};}function removeEntity(_0x24becd,_0x470c62){return function(_0x38fcc2){if(_0x38fcc2){return _0x38fcc2[_0xe7fb('0x24')]()[_0xe7fb('0x23')](function(){_0x24becd['status'](0xcc)[_0xe7fb('0x18')]();});}};}function handleEntityNotFound(_0x30c7e8,_0x394fd5){return function(_0x71c9fe){if(!_0x71c9fe){_0x30c7e8[_0xe7fb('0x25')](0x194);}return _0x71c9fe;};}function handleError(_0x46c195,_0x400125){_0x400125=_0x400125||0x1f4;return function(_0x3175e4){logger[_0xe7fb('0x26')](_0x3175e4[_0xe7fb('0x27')]);if(_0x3175e4[_0xe7fb('0x28')]){delete _0x3175e4[_0xe7fb('0x28')];}_0x46c195[_0xe7fb('0x19')](_0x400125)[_0xe7fb('0x29')](_0x3175e4);};}exports[_0xe7fb('0x2a')]=function(_0x50ec70,_0x18e816){var _0x2d0014={},_0x5a915f={},_0x28e3b8={'count':0x0,'rows':[]};var _0xfbb48=_['map'](db[_0xe7fb('0x2b')][_0xe7fb('0x2c')],function(_0x287112){return{'name':_0x287112[_0xe7fb('0x2d')],'type':_0x287112['type']['key']};});_0x5a915f['model']=_[_0xe7fb('0x2e')](_0xfbb48,_0xe7fb('0x28'));_0x5a915f[_0xe7fb('0x2f')]=_[_0xe7fb('0x30')](_0x50ec70['query']);_0x5a915f[_0xe7fb('0x31')]=_[_0xe7fb('0x32')](_0x5a915f['model'],_0x5a915f[_0xe7fb('0x2f')]);_0x2d0014[_0xe7fb('0x33')]=_['intersection'](_0x5a915f[_0xe7fb('0x34')],qs['fields'](_0x50ec70['query']['fields']));_0x2d0014[_0xe7fb('0x33')]=_0x2d0014[_0xe7fb('0x33')][_0xe7fb('0x35')]?_0x2d0014['attributes']:_0x5a915f[_0xe7fb('0x34')];if(!_0x50ec70[_0xe7fb('0x2f')]['hasOwnProperty']('nolimit')){_0x2d0014[_0xe7fb('0x1d')]=qs[_0xe7fb('0x1d')](_0x50ec70[_0xe7fb('0x2f')][_0xe7fb('0x1d')]);_0x2d0014['offset']=qs['offset'](_0x50ec70[_0xe7fb('0x2f')][_0xe7fb('0x1b')]);}_0x2d0014[_0xe7fb('0x36')]=qs[_0xe7fb('0x37')](_0x50ec70[_0xe7fb('0x2f')]['sort']);_0x2d0014[_0xe7fb('0x38')]=qs['filters'](_[_0xe7fb('0x39')](_0x50ec70['query'],_0x5a915f[_0xe7fb('0x31')]),_0xfbb48);if(_0x50ec70['query']['filter']){_0x2d0014[_0xe7fb('0x38')]=_[_0xe7fb('0x3a')](_0x2d0014[_0xe7fb('0x38')],{'$or':_[_0xe7fb('0x2e')](_0xfbb48,function(_0x4376e1){if(_0x4376e1[_0xe7fb('0x3b')]!==_0xe7fb('0x3c')){var _0x1b4d71={};_0x1b4d71[_0x4376e1[_0xe7fb('0x28')]]={'$like':'%'+_0x50ec70[_0xe7fb('0x2f')][_0xe7fb('0x3d')]+'%'};return _0x1b4d71;}})});}_0x2d0014=_['merge']({},_0x2d0014,_0x50ec70[_0xe7fb('0x3e')]);var _0x744d5={'where':_0x2d0014[_0xe7fb('0x38')]};return db[_0xe7fb('0x2b')]['count'](_0x744d5)['then'](function(_0x10f5c8){_0x28e3b8[_0xe7fb('0x1e')]=_0x10f5c8;if(_0x50ec70[_0xe7fb('0x2f')][_0xe7fb('0x3f')]){_0x2d0014[_0xe7fb('0x40')]=[{'all':!![]}];}return db['DeskConfiguration']['findAll'](_0x2d0014);})[_0xe7fb('0x23')](function(_0x1c0736){_0x28e3b8[_0xe7fb('0x41')]=_0x1c0736;return _0x28e3b8;})['then'](respondWithFilteredResult(_0x18e816,_0x2d0014))['catch'](handleError(_0x18e816,null));};exports['show']=function(_0x48135f,_0x2d8220){var _0x51b710={'raw':![],'where':{'id':_0x48135f[_0xe7fb('0x42')]['id']}},_0x512b6b={};_0x512b6b[_0xe7fb('0x34')]=_[_0xe7fb('0x30')](db[_0xe7fb('0x2b')][_0xe7fb('0x2c')]);_0x512b6b[_0xe7fb('0x2f')]=_[_0xe7fb('0x30')](_0x48135f[_0xe7fb('0x2f')]);_0x512b6b[_0xe7fb('0x31')]=_[_0xe7fb('0x32')](_0x512b6b['model'],_0x512b6b[_0xe7fb('0x2f')]);_0x51b710[_0xe7fb('0x33')]=_[_0xe7fb('0x32')](_0x512b6b[_0xe7fb('0x34')],qs[_0xe7fb('0x43')](_0x48135f[_0xe7fb('0x2f')][_0xe7fb('0x43')]));_0x51b710[_0xe7fb('0x33')]=_0x51b710[_0xe7fb('0x33')]['length']?_0x51b710[_0xe7fb('0x33')]:_0x512b6b['model'];if(_0x48135f['query'][_0xe7fb('0x3f')]){_0x51b710[_0xe7fb('0x40')]=[{'all':!![]}];}_0x51b710=_['merge']({},_0x51b710,_0x48135f[_0xe7fb('0x3e')]);return db['DeskConfiguration'][_0xe7fb('0x44')](_0x51b710)['then'](handleEntityNotFound(_0x2d8220,null))[_0xe7fb('0x23')](respondWithResult(_0x2d8220,null))[_0xe7fb('0x45')](handleError(_0x2d8220,null));};exports[_0xe7fb('0x46')]=function(_0x30c599,_0x59be5c){return db[_0xe7fb('0x2b')][_0xe7fb('0x46')](_0x30c599['body'],{})[_0xe7fb('0x23')](respondWithResult(_0x59be5c,0xc9))[_0xe7fb('0x45')](handleError(_0x59be5c,null));};exports['update']=function(_0x5b1aa5,_0x484895){if(_0x5b1aa5[_0xe7fb('0x47')]['id']){delete _0x5b1aa5[_0xe7fb('0x47')]['id'];}return db[_0xe7fb('0x2b')][_0xe7fb('0x44')]({'where':{'id':_0x5b1aa5[_0xe7fb('0x42')]['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x484895,null))[_0xe7fb('0x23')](saveUpdates(_0x5b1aa5['body'],null))['then'](respondWithResult(_0x484895,null))[_0xe7fb('0x45')](handleError(_0x484895,null));};exports[_0xe7fb('0x24')]=function(_0x1be713,_0x212b5e){return db[_0xe7fb('0x2b')]['find']({'where':{'id':_0x1be713['params']['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x212b5e,null))['then'](removeEntity(_0x212b5e,null))[_0xe7fb('0x45')](handleError(_0x212b5e,null));};exports[_0xe7fb('0x48')]=function(_0x54b77f,_0x161ccb,_0x15213e){var _0x5ef2d9={};var _0x35a62c={};var _0x1db369;var _0x3a6808;return db[_0xe7fb('0x2b')][_0xe7fb('0x49')]({'where':{'id':_0x54b77f[_0xe7fb('0x42')]['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x161ccb,null))[_0xe7fb('0x23')](function(_0x224486){if(_0x224486){_0x1db369=_0x224486;_0x35a62c['model']=_[_0xe7fb('0x30')](db[_0xe7fb('0x4a')]['rawAttributes']);_0x35a62c[_0xe7fb('0x2f')]=_[_0xe7fb('0x30')](_0x54b77f[_0xe7fb('0x2f')]);_0x35a62c[_0xe7fb('0x31')]=_['intersection'](_0x35a62c['model'],_0x35a62c[_0xe7fb('0x2f')]);_0x5ef2d9['attributes']=_[_0xe7fb('0x32')](_0x35a62c[_0xe7fb('0x34')],qs[_0xe7fb('0x43')](_0x54b77f['query'][_0xe7fb('0x43')]));_0x5ef2d9[_0xe7fb('0x33')]=_0x5ef2d9[_0xe7fb('0x33')]['length']?_0x5ef2d9[_0xe7fb('0x33')]:_0x35a62c['model'];_0x5ef2d9[_0xe7fb('0x36')]=qs[_0xe7fb('0x37')](_0x54b77f['query'][_0xe7fb('0x37')]);_0x5ef2d9[_0xe7fb('0x38')]=qs[_0xe7fb('0x31')](_[_0xe7fb('0x39')](_0x54b77f['query'],_0x35a62c[_0xe7fb('0x31')]));if(_0x54b77f['query'][_0xe7fb('0x3d')]){_0x5ef2d9['where']=_[_0xe7fb('0x3a')](_0x5ef2d9[_0xe7fb('0x38')],{'$or':_['map'](_0x5ef2d9[_0xe7fb('0x33')],function(_0x1ab282){var _0x4fc982={};_0x4fc982[_0x1ab282]={'$like':'%'+_0x54b77f[_0xe7fb('0x2f')][_0xe7fb('0x3d')]+'%'};return _0x4fc982;})});}_0x5ef2d9=_['merge']({},_0x5ef2d9,_0x54b77f[_0xe7fb('0x3e')]);return _0x1db369[_0xe7fb('0x48')](_0x5ef2d9);}})[_0xe7fb('0x23')](function(_0x151725){if(_0x151725){_0x3a6808=_0x151725[_0xe7fb('0x35')];if(!_0x54b77f[_0xe7fb('0x2f')][_0xe7fb('0x4b')](_0xe7fb('0x4c'))){_0x5ef2d9[_0xe7fb('0x1d')]=qs[_0xe7fb('0x1d')](_0x54b77f['query'][_0xe7fb('0x1d')]);_0x5ef2d9[_0xe7fb('0x1b')]=qs['offset'](_0x54b77f['query'][_0xe7fb('0x1b')]);}return _0x1db369[_0xe7fb('0x48')](_0x5ef2d9);}})[_0xe7fb('0x23')](function(_0x3992a8){if(_0x3992a8){return _0x3992a8?{'count':_0x3a6808,'rows':_0x3992a8}:null;}})[_0xe7fb('0x23')](respondWithResult(_0x161ccb,null))[_0xe7fb('0x45')](handleError(_0x161ccb,null));};exports[_0xe7fb('0x4d')]=function(_0x2050a8,_0x580528,_0x486a81){var _0x1811c0={};var _0x421af8={};var _0x48bd86;var _0x4d1497;return db[_0xe7fb('0x2b')][_0xe7fb('0x49')]({'where':{'id':_0x2050a8[_0xe7fb('0x42')]['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x580528,null))[_0xe7fb('0x23')](function(_0x582f87){if(_0x582f87){_0x48bd86=_0x582f87;_0x421af8['model']=_[_0xe7fb('0x30')](db[_0xe7fb('0x4a')][_0xe7fb('0x2c')]);_0x421af8[_0xe7fb('0x2f')]=_['keys'](_0x2050a8['query']);_0x421af8[_0xe7fb('0x31')]=_[_0xe7fb('0x32')](_0x421af8[_0xe7fb('0x34')],_0x421af8[_0xe7fb('0x2f')]);_0x1811c0[_0xe7fb('0x33')]=_[_0xe7fb('0x32')](_0x421af8['model'],qs[_0xe7fb('0x43')](_0x2050a8['query'][_0xe7fb('0x43')]));_0x1811c0['attributes']=_0x1811c0['attributes'][_0xe7fb('0x35')]?_0x1811c0[_0xe7fb('0x33')]:_0x421af8[_0xe7fb('0x34')];_0x1811c0[_0xe7fb('0x36')]=qs['sort'](_0x2050a8['query'][_0xe7fb('0x37')]);_0x1811c0[_0xe7fb('0x38')]=qs['filters'](_[_0xe7fb('0x39')](_0x2050a8[_0xe7fb('0x2f')],_0x421af8[_0xe7fb('0x31')]));if(_0x2050a8[_0xe7fb('0x2f')][_0xe7fb('0x3d')]){_0x1811c0[_0xe7fb('0x38')]=_[_0xe7fb('0x3a')](_0x1811c0[_0xe7fb('0x38')],{'$or':_[_0xe7fb('0x2e')](_0x1811c0['attributes'],function(_0x54fce7){var _0x51eaa6={};_0x51eaa6[_0x54fce7]={'$like':'%'+_0x2050a8['query'][_0xe7fb('0x3d')]+'%'};return _0x51eaa6;})});}_0x1811c0=_[_0xe7fb('0x3a')]({},_0x1811c0,_0x2050a8[_0xe7fb('0x3e')]);return _0x48bd86['getSubjects'](_0x1811c0);}})[_0xe7fb('0x23')](function(_0x1837f9){if(_0x1837f9){_0x4d1497=_0x1837f9[_0xe7fb('0x35')];if(!_0x2050a8[_0xe7fb('0x2f')]['hasOwnProperty'](_0xe7fb('0x4c'))){_0x1811c0[_0xe7fb('0x1d')]=qs['limit'](_0x2050a8['query'][_0xe7fb('0x1d')]);_0x1811c0[_0xe7fb('0x1b')]=qs['offset'](_0x2050a8[_0xe7fb('0x2f')][_0xe7fb('0x1b')]);}return _0x48bd86[_0xe7fb('0x4d')](_0x1811c0);}})[_0xe7fb('0x23')](function(_0x574e0b){if(_0x574e0b){return _0x574e0b?{'count':_0x4d1497,'rows':_0x574e0b}:null;}})['then'](respondWithResult(_0x580528,null))[_0xe7fb('0x45')](handleError(_0x580528,null));};exports[_0xe7fb('0x4e')]=function(_0x2a327f,_0x539652,_0x1adbc9){var _0x4389a3={};var _0xb6c301={};var _0x4329f9;var _0x1577fc;return db[_0xe7fb('0x2b')][_0xe7fb('0x49')]({'where':{'id':_0x2a327f[_0xe7fb('0x42')]['id']}})['then'](handleEntityNotFound(_0x539652,null))[_0xe7fb('0x23')](function(_0x44590a){if(_0x44590a){_0x4329f9=_0x44590a;_0xb6c301[_0xe7fb('0x34')]=_[_0xe7fb('0x30')](db[_0xe7fb('0x4a')]['rawAttributes']);_0xb6c301[_0xe7fb('0x2f')]=_[_0xe7fb('0x30')](_0x2a327f[_0xe7fb('0x2f')]);_0xb6c301['filters']=_[_0xe7fb('0x32')](_0xb6c301[_0xe7fb('0x34')],_0xb6c301[_0xe7fb('0x2f')]);_0x4389a3[_0xe7fb('0x33')]=_[_0xe7fb('0x32')](_0xb6c301[_0xe7fb('0x34')],qs[_0xe7fb('0x43')](_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x43')]));_0x4389a3[_0xe7fb('0x33')]=_0x4389a3[_0xe7fb('0x33')]['length']?_0x4389a3[_0xe7fb('0x33')]:_0xb6c301[_0xe7fb('0x34')];_0x4389a3['order']=qs[_0xe7fb('0x37')](_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x37')]);_0x4389a3['where']=qs['filters'](_['pick'](_0x2a327f[_0xe7fb('0x2f')],_0xb6c301['filters']));if(_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x3d')]){_0x4389a3[_0xe7fb('0x38')]=_[_0xe7fb('0x3a')](_0x4389a3[_0xe7fb('0x38')],{'$or':_[_0xe7fb('0x2e')](_0x4389a3[_0xe7fb('0x33')],function(_0x1eaf72){var _0x536e42={};_0x536e42[_0x1eaf72]={'$like':'%'+_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x3d')]+'%'};return _0x536e42;})});}_0x4389a3=_[_0xe7fb('0x3a')]({},_0x4389a3,_0x2a327f[_0xe7fb('0x3e')]);return _0x4329f9[_0xe7fb('0x4e')](_0x4389a3);}})[_0xe7fb('0x23')](function(_0x2b9abf){if(_0x2b9abf){_0x1577fc=_0x2b9abf[_0xe7fb('0x35')];if(!_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x4b')](_0xe7fb('0x4c'))){_0x4389a3[_0xe7fb('0x1d')]=qs[_0xe7fb('0x1d')](_0x2a327f['query'][_0xe7fb('0x1d')]);_0x4389a3[_0xe7fb('0x1b')]=qs['offset'](_0x2a327f[_0xe7fb('0x2f')][_0xe7fb('0x1b')]);}return _0x4329f9[_0xe7fb('0x4e')](_0x4389a3);}})[_0xe7fb('0x23')](function(_0x191dea){if(_0x191dea){return _0x191dea?{'count':_0x1577fc,'rows':_0x191dea}:null;}})['then'](respondWithResult(_0x539652,null))[_0xe7fb('0x45')](handleError(_0x539652,null));};exports[_0xe7fb('0x4f')]=function(_0x584b3d,_0x478caa,_0xae96f9){var _0x5b5a47={};var _0x19dbda={};var _0x53b94f;var _0x907637;return db[_0xe7fb('0x2b')][_0xe7fb('0x49')]({'where':{'id':_0x584b3d[_0xe7fb('0x42')]['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x478caa,null))[_0xe7fb('0x23')](function(_0x3524a9){if(_0x3524a9){_0x53b94f=_0x3524a9;_0x19dbda['model']=_[_0xe7fb('0x30')](db[_0xe7fb('0x50')][_0xe7fb('0x2c')]);_0x19dbda[_0xe7fb('0x2f')]=_['keys'](_0x584b3d[_0xe7fb('0x2f')]);_0x19dbda[_0xe7fb('0x31')]=_[_0xe7fb('0x32')](_0x19dbda['model'],_0x19dbda[_0xe7fb('0x2f')]);_0x5b5a47['attributes']=_[_0xe7fb('0x32')](_0x19dbda[_0xe7fb('0x34')],qs[_0xe7fb('0x43')](_0x584b3d[_0xe7fb('0x2f')][_0xe7fb('0x43')]));_0x5b5a47[_0xe7fb('0x33')]=_0x5b5a47[_0xe7fb('0x33')]['length']?_0x5b5a47[_0xe7fb('0x33')]:_0x19dbda[_0xe7fb('0x34')];_0x5b5a47['order']=qs[_0xe7fb('0x37')](_0x584b3d[_0xe7fb('0x2f')][_0xe7fb('0x37')]);_0x5b5a47[_0xe7fb('0x38')]=qs['filters'](_[_0xe7fb('0x39')](_0x584b3d['query'],_0x19dbda[_0xe7fb('0x31')]));if(_0x584b3d[_0xe7fb('0x2f')][_0xe7fb('0x3d')]){_0x5b5a47[_0xe7fb('0x38')]=_['merge'](_0x5b5a47[_0xe7fb('0x38')],{'$or':_[_0xe7fb('0x2e')](_0x5b5a47[_0xe7fb('0x33')],function(_0x534154){var _0x580757={};_0x580757[_0x534154]={'$like':'%'+_0x584b3d[_0xe7fb('0x2f')][_0xe7fb('0x3d')]+'%'};return _0x580757;})});}_0x5b5a47=_[_0xe7fb('0x3a')]({},_0x5b5a47,_0x584b3d[_0xe7fb('0x3e')]);return _0x53b94f['getTags'](_0x5b5a47);}})[_0xe7fb('0x23')](function(_0x2e7c61){if(_0x2e7c61){_0x907637=_0x2e7c61[_0xe7fb('0x35')];if(!_0x584b3d['query']['hasOwnProperty'](_0xe7fb('0x4c'))){_0x5b5a47[_0xe7fb('0x1d')]=qs[_0xe7fb('0x1d')](_0x584b3d['query'][_0xe7fb('0x1d')]);_0x5b5a47[_0xe7fb('0x1b')]=qs[_0xe7fb('0x1b')](_0x584b3d['query'][_0xe7fb('0x1b')]);}return _0x53b94f[_0xe7fb('0x4f')](_0x5b5a47);}})['then'](function(_0x371e9c){if(_0x371e9c){return _0x371e9c?{'count':_0x907637,'rows':_0x371e9c}:null;}})[_0xe7fb('0x23')](respondWithResult(_0x478caa,null))[_0xe7fb('0x45')](handleError(_0x478caa,null));};exports['setTags']=function(_0x508c84,_0x22547f,_0x2266bd){if(_0x508c84[_0xe7fb('0x47')]['id']){delete _0x508c84[_0xe7fb('0x47')]['id'];}return db['DeskConfiguration'][_0xe7fb('0x49')]({'where':{'id':_0x508c84['params']['id']}})[_0xe7fb('0x23')](handleEntityNotFound(_0x22547f,null))[_0xe7fb('0x23')](function(_0x59226f){if(_0x59226f){return _0x59226f['setTags'](_0x508c84[_0xe7fb('0x47')]['ids']||[]);}return null;})[_0xe7fb('0x23')](respondWithResult(_0x22547f,null))[_0xe7fb('0x45')](handleError(_0x22547f,null));};
\ No newline at end of file
+var _0xea66=['../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','save','update','then','destroy','error','name','send','map','DeskConfiguration','rawAttributes','model','filters','intersection','fields','query','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','keys','find','create','body','params','getFields','findOne','DeskField','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x2bf0b1,_0x51b0a4){var _0x24bbf3=function(_0xd8510c){while(--_0xd8510c){_0x2bf0b1['push'](_0x2bf0b1['shift']());}};_0x24bbf3(++_0x51b0a4);}(_0xea66,0x11d));var _0x6ea6=function(_0x155c64,_0x26ff95){_0x155c64=_0x155c64-0x0;var _0x1f154a=_0xea66[_0x155c64];return _0x1f154a;};'use strict';var emlformat=require(_0x6ea6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ea6('0x1'));var jsonpatch=require(_0x6ea6('0x2'));var rp=require('request-promise');var moment=require(_0x6ea6('0x3'));var BPromise=require(_0x6ea6('0x4'));var Mustache=require(_0x6ea6('0x5'));var util=require('util');var path=require(_0x6ea6('0x6'));var sox=require(_0x6ea6('0x7'));var csv=require(_0x6ea6('0x8'));var ejs=require(_0x6ea6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6ea6('0xa'));var crypto=require(_0x6ea6('0xb'));var jsforce=require(_0x6ea6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6ea6('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6ea6('0xd'));var authService=require(_0x6ea6('0xe'));var qs=require(_0x6ea6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6ea6('0x10'));var logger=require(_0x6ea6('0x11'))('api');var utils=require(_0x6ea6('0x12'));var config=require(_0x6ea6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x6ea6('0x14'))['db'];function respondWithStatusCode(_0x46d707,_0x231e45){_0x231e45=_0x231e45||0xcc;return function(_0x243f86){if(_0x243f86){return _0x46d707[_0x6ea6('0x15')](_0x231e45);}return _0x46d707['status'](_0x231e45)[_0x6ea6('0x16')]();};}function respondWithResult(_0x547ea5,_0x1076fd){_0x1076fd=_0x1076fd||0xc8;return function(_0x4c5160){if(_0x4c5160){return _0x547ea5[_0x6ea6('0x17')](_0x1076fd)[_0x6ea6('0x18')](_0x4c5160);}};}function respondWithFilteredResult(_0x8f4ef7,_0x5e3adf){return function(_0x3d579a){if(_0x3d579a){var _0xca1872=typeof _0x5e3adf[_0x6ea6('0x19')]==='undefined'&&typeof _0x5e3adf[_0x6ea6('0x1a')]==='undefined';var _0x5ad788=_0x3d579a['count'];var _0x81e741=_0xca1872?0x0:_0x5e3adf[_0x6ea6('0x19')];var _0x1c8db5=_0xca1872?_0x3d579a[_0x6ea6('0x1b')]:_0x5e3adf[_0x6ea6('0x19')]+_0x5e3adf[_0x6ea6('0x1a')];var _0x3e19ff;if(_0x1c8db5>=_0x5ad788){_0x1c8db5=_0x5ad788;_0x3e19ff=0xc8;}else{_0x3e19ff=0xce;}_0x8f4ef7['status'](_0x3e19ff);return _0x8f4ef7['set'](_0x6ea6('0x1c'),_0x81e741+'-'+_0x1c8db5+'/'+_0x5ad788)[_0x6ea6('0x18')](_0x3d579a);}return null;};}function patchUpdates(_0x508a82){return function(_0x4021f7){try{jsonpatch['apply'](_0x4021f7,_0x508a82,!![]);}catch(_0x379dc9){return BPromise[_0x6ea6('0x1d')](_0x379dc9);}return _0x4021f7[_0x6ea6('0x1e')]();};}function saveUpdates(_0x46c5f4,_0x33f0b8){return function(_0x359ee9){if(_0x359ee9){return _0x359ee9[_0x6ea6('0x1f')](_0x46c5f4)[_0x6ea6('0x20')](function(_0x4b9731){return _0x4b9731;});}return null;};}function removeEntity(_0x54c70f,_0x21f365){return function(_0x34fb23){if(_0x34fb23){return _0x34fb23[_0x6ea6('0x21')]()[_0x6ea6('0x20')](function(){_0x54c70f['status'](0xcc)[_0x6ea6('0x16')]();});}};}function handleEntityNotFound(_0x1de7d2,_0x155a50){return function(_0x9b2ca7){if(!_0x9b2ca7){_0x1de7d2['sendStatus'](0x194);}return _0x9b2ca7;};}function handleError(_0x366bcc,_0x217b9a){_0x217b9a=_0x217b9a||0x1f4;return function(_0x3f663f){logger[_0x6ea6('0x22')](_0x3f663f['stack']);if(_0x3f663f[_0x6ea6('0x23')]){delete _0x3f663f[_0x6ea6('0x23')];}_0x366bcc[_0x6ea6('0x17')](_0x217b9a)[_0x6ea6('0x24')](_0x3f663f);};}exports['index']=function(_0x53f506,_0x3bcb53){var _0x52b293={},_0x44bdf7={},_0x11c06a={'count':0x0,'rows':[]};var _0x27a6a6=_[_0x6ea6('0x25')](db[_0x6ea6('0x26')][_0x6ea6('0x27')],function(_0x55079c){return{'name':_0x55079c['fieldName'],'type':_0x55079c['type']['key']};});_0x44bdf7[_0x6ea6('0x28')]=_[_0x6ea6('0x25')](_0x27a6a6,_0x6ea6('0x23'));_0x44bdf7['query']=_['keys'](_0x53f506['query']);_0x44bdf7[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x44bdf7[_0x6ea6('0x28')],_0x44bdf7['query']);_0x52b293['attributes']=_[_0x6ea6('0x2a')](_0x44bdf7['model'],qs[_0x6ea6('0x2b')](_0x53f506[_0x6ea6('0x2c')]['fields']));_0x52b293[_0x6ea6('0x2d')]=_0x52b293[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x52b293[_0x6ea6('0x2d')]:_0x44bdf7[_0x6ea6('0x28')];if(!_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x52b293['limit']=qs[_0x6ea6('0x1a')](_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x52b293[_0x6ea6('0x19')]=qs[_0x6ea6('0x19')](_0x53f506['query']['offset']);}_0x52b293[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x52b293['where']=qs['filters'](_[_0x6ea6('0x33')](_0x53f506[_0x6ea6('0x2c')],_0x44bdf7['filters']),_0x27a6a6);if(_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x52b293[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x52b293[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x27a6a6,function(_0x5f5269){if(_0x5f5269['type']!==_0x6ea6('0x37')){var _0x3c1fb7={};_0x3c1fb7[_0x5f5269[_0x6ea6('0x23')]]={'$like':'%'+_0x53f506[_0x6ea6('0x2c')]['filter']+'%'};return _0x3c1fb7;}})});}_0x52b293=_[_0x6ea6('0x36')]({},_0x52b293,_0x53f506[_0x6ea6('0x38')]);var _0x6f149f={'where':_0x52b293['where']};return db[_0x6ea6('0x26')][_0x6ea6('0x1b')](_0x6f149f)[_0x6ea6('0x20')](function(_0x592ff5){_0x11c06a['count']=_0x592ff5;if(_0x53f506[_0x6ea6('0x2c')][_0x6ea6('0x39')]){_0x52b293[_0x6ea6('0x3a')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x6ea6('0x3b')](_0x52b293);})[_0x6ea6('0x20')](function(_0x4e8821){_0x11c06a['rows']=_0x4e8821;return _0x11c06a;})[_0x6ea6('0x20')](respondWithFilteredResult(_0x3bcb53,_0x52b293))[_0x6ea6('0x3c')](handleError(_0x3bcb53,null));};exports[_0x6ea6('0x3d')]=function(_0x2ac5fc,_0x2154d1){var _0x23d08e={'raw':![],'where':{'id':_0x2ac5fc['params']['id']}},_0x1eef74={};_0x1eef74[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x26')][_0x6ea6('0x27')]);_0x1eef74[_0x6ea6('0x2c')]=_['keys'](_0x2ac5fc[_0x6ea6('0x2c')]);_0x1eef74[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x1eef74[_0x6ea6('0x28')],_0x1eef74[_0x6ea6('0x2c')]);_0x23d08e[_0x6ea6('0x2d')]=_['intersection'](_0x1eef74[_0x6ea6('0x28')],qs[_0x6ea6('0x2b')](_0x2ac5fc[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x23d08e[_0x6ea6('0x2d')]=_0x23d08e['attributes']['length']?_0x23d08e[_0x6ea6('0x2d')]:_0x1eef74[_0x6ea6('0x28')];if(_0x2ac5fc['query']['includeAll']){_0x23d08e[_0x6ea6('0x3a')]=[{'all':!![]}];}_0x23d08e=_[_0x6ea6('0x36')]({},_0x23d08e,_0x2ac5fc[_0x6ea6('0x38')]);return db['DeskConfiguration'][_0x6ea6('0x3f')](_0x23d08e)[_0x6ea6('0x20')](handleEntityNotFound(_0x2154d1,null))[_0x6ea6('0x20')](respondWithResult(_0x2154d1,null))[_0x6ea6('0x3c')](handleError(_0x2154d1,null));};exports[_0x6ea6('0x40')]=function(_0x3eccce,_0x135930){return db['DeskConfiguration'][_0x6ea6('0x40')](_0x3eccce[_0x6ea6('0x41')],{})[_0x6ea6('0x20')](respondWithResult(_0x135930,0xc9))[_0x6ea6('0x3c')](handleError(_0x135930,null));};exports[_0x6ea6('0x1f')]=function(_0x6756bc,_0x4a676d){if(_0x6756bc['body']['id']){delete _0x6756bc[_0x6ea6('0x41')]['id'];}return db[_0x6ea6('0x26')][_0x6ea6('0x3f')]({'where':{'id':_0x6756bc[_0x6ea6('0x42')]['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x4a676d,null))[_0x6ea6('0x20')](saveUpdates(_0x6756bc['body'],null))[_0x6ea6('0x20')](respondWithResult(_0x4a676d,null))[_0x6ea6('0x3c')](handleError(_0x4a676d,null));};exports[_0x6ea6('0x21')]=function(_0xa0f5ad,_0x419b9c){return db['DeskConfiguration'][_0x6ea6('0x3f')]({'where':{'id':_0xa0f5ad[_0x6ea6('0x42')]['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x419b9c,null))[_0x6ea6('0x20')](removeEntity(_0x419b9c,null))[_0x6ea6('0x3c')](handleError(_0x419b9c,null));};exports[_0x6ea6('0x43')]=function(_0x30d250,_0x155a8e,_0x5adb3c){var _0x1454ba={};var _0x2d0702={};var _0x2e8876;var _0x280ef7;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x30d250['params']['id']}})['then'](handleEntityNotFound(_0x155a8e,null))[_0x6ea6('0x20')](function(_0x9faffc){if(_0x9faffc){_0x2e8876=_0x9faffc;_0x2d0702[_0x6ea6('0x28')]=_['keys'](db[_0x6ea6('0x45')][_0x6ea6('0x27')]);_0x2d0702[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x30d250[_0x6ea6('0x2c')]);_0x2d0702['filters']=_['intersection'](_0x2d0702[_0x6ea6('0x28')],_0x2d0702[_0x6ea6('0x2c')]);_0x1454ba['attributes']=_[_0x6ea6('0x2a')](_0x2d0702['model'],qs[_0x6ea6('0x2b')](_0x30d250['query'][_0x6ea6('0x2b')]));_0x1454ba[_0x6ea6('0x2d')]=_0x1454ba['attributes']['length']?_0x1454ba[_0x6ea6('0x2d')]:_0x2d0702[_0x6ea6('0x28')];_0x1454ba[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x30d250[_0x6ea6('0x2c')]['sort']);_0x1454ba[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_['pick'](_0x30d250['query'],_0x2d0702[_0x6ea6('0x29')]));if(_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x1454ba[_0x6ea6('0x35')]=_['merge'](_0x1454ba['where'],{'$or':_[_0x6ea6('0x25')](_0x1454ba[_0x6ea6('0x2d')],function(_0x482c48){var _0x1a1ddb={};_0x1a1ddb[_0x482c48]={'$like':'%'+_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x1a1ddb;})});}_0x1454ba=_[_0x6ea6('0x36')]({},_0x1454ba,_0x30d250[_0x6ea6('0x38')]);return _0x2e8876[_0x6ea6('0x43')](_0x1454ba);}})[_0x6ea6('0x20')](function(_0x447b34){if(_0x447b34){_0x280ef7=_0x447b34['length'];if(!_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x1454ba[_0x6ea6('0x1a')]=qs[_0x6ea6('0x1a')](_0x30d250[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x1454ba[_0x6ea6('0x19')]=qs['offset'](_0x30d250['query']['offset']);}return _0x2e8876[_0x6ea6('0x43')](_0x1454ba);}})[_0x6ea6('0x20')](function(_0x24c6d5){if(_0x24c6d5){return _0x24c6d5?{'count':_0x280ef7,'rows':_0x24c6d5}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x155a8e,null))[_0x6ea6('0x3c')](handleError(_0x155a8e,null));};exports[_0x6ea6('0x46')]=function(_0x4574cd,_0x717f4e,_0x5e888e){var _0x151a6a={};var _0x1b13d0={};var _0x3403ef;var _0x565391;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x4574cd[_0x6ea6('0x42')]['id']}})['then'](handleEntityNotFound(_0x717f4e,null))[_0x6ea6('0x20')](function(_0xcec0cb){if(_0xcec0cb){_0x3403ef=_0xcec0cb;_0x1b13d0['model']=_['keys'](db['DeskField'][_0x6ea6('0x27')]);_0x1b13d0[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x4574cd[_0x6ea6('0x2c')]);_0x1b13d0[_0x6ea6('0x29')]=_[_0x6ea6('0x2a')](_0x1b13d0['model'],_0x1b13d0['query']);_0x151a6a[_0x6ea6('0x2d')]=_['intersection'](_0x1b13d0[_0x6ea6('0x28')],qs['fields'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x151a6a[_0x6ea6('0x2d')]=_0x151a6a[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x151a6a[_0x6ea6('0x2d')]:_0x1b13d0['model'];_0x151a6a[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x151a6a[_0x6ea6('0x35')]=qs['filters'](_[_0x6ea6('0x33')](_0x4574cd[_0x6ea6('0x2c')],_0x1b13d0[_0x6ea6('0x29')]));if(_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x151a6a[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x151a6a[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x151a6a[_0x6ea6('0x2d')],function(_0x2774ff){var _0x164ac9={};_0x164ac9[_0x2774ff]={'$like':'%'+_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x164ac9;})});}_0x151a6a=_[_0x6ea6('0x36')]({},_0x151a6a,_0x4574cd['options']);return _0x3403ef[_0x6ea6('0x46')](_0x151a6a);}})[_0x6ea6('0x20')](function(_0x49ee2e){if(_0x49ee2e){_0x565391=_0x49ee2e[_0x6ea6('0x2e')];if(!_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x151a6a[_0x6ea6('0x1a')]=qs['limit'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x151a6a['offset']=qs['offset'](_0x4574cd[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x3403ef[_0x6ea6('0x46')](_0x151a6a);}})[_0x6ea6('0x20')](function(_0x3220bc){if(_0x3220bc){return _0x3220bc?{'count':_0x565391,'rows':_0x3220bc}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x717f4e,null))[_0x6ea6('0x3c')](handleError(_0x717f4e,null));};exports[_0x6ea6('0x47')]=function(_0x5d8562,_0x244381,_0x3f0ed9){var _0x147377={};var _0x490737={};var _0x3b189d;var _0x205b4b;return db['DeskConfiguration']['findOne']({'where':{'id':_0x5d8562[_0x6ea6('0x42')]['id']}})['then'](handleEntityNotFound(_0x244381,null))['then'](function(_0x22c17f){if(_0x22c17f){_0x3b189d=_0x22c17f;_0x490737[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x45')]['rawAttributes']);_0x490737[_0x6ea6('0x2c')]=_[_0x6ea6('0x3e')](_0x5d8562[_0x6ea6('0x2c')]);_0x490737[_0x6ea6('0x29')]=_['intersection'](_0x490737[_0x6ea6('0x28')],_0x490737['query']);_0x147377[_0x6ea6('0x2d')]=_[_0x6ea6('0x2a')](_0x490737[_0x6ea6('0x28')],qs['fields'](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x147377['attributes']=_0x147377[_0x6ea6('0x2d')][_0x6ea6('0x2e')]?_0x147377['attributes']:_0x490737[_0x6ea6('0x28')];_0x147377[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x5d8562['query']['sort']);_0x147377[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_[_0x6ea6('0x33')](_0x5d8562['query'],_0x490737[_0x6ea6('0x29')]));if(_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x147377[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x147377[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x147377[_0x6ea6('0x2d')],function(_0x5d4d9e){var _0x2c9969={};_0x2c9969[_0x5d4d9e]={'$like':'%'+_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x2c9969;})});}_0x147377=_[_0x6ea6('0x36')]({},_0x147377,_0x5d8562[_0x6ea6('0x38')]);return _0x3b189d[_0x6ea6('0x47')](_0x147377);}})[_0x6ea6('0x20')](function(_0x5e55bd){if(_0x5e55bd){_0x205b4b=_0x5e55bd[_0x6ea6('0x2e')];if(!_0x5d8562[_0x6ea6('0x2c')]['hasOwnProperty']('nolimit')){_0x147377[_0x6ea6('0x1a')]=qs[_0x6ea6('0x1a')](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x147377['offset']=qs[_0x6ea6('0x19')](_0x5d8562[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x3b189d['getDescriptions'](_0x147377);}})['then'](function(_0x98c78d){if(_0x98c78d){return _0x98c78d?{'count':_0x205b4b,'rows':_0x98c78d}:null;}})['then'](respondWithResult(_0x244381,null))[_0x6ea6('0x3c')](handleError(_0x244381,null));};exports['getTags']=function(_0x21e895,_0x171254,_0x5d8b2f){var _0x4294bc={};var _0x12e195={};var _0x5c46c9;var _0x189310;return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x21e895['params']['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x171254,null))[_0x6ea6('0x20')](function(_0x45f928){if(_0x45f928){_0x5c46c9=_0x45f928;_0x12e195[_0x6ea6('0x28')]=_[_0x6ea6('0x3e')](db[_0x6ea6('0x48')][_0x6ea6('0x27')]);_0x12e195['query']=_[_0x6ea6('0x3e')](_0x21e895[_0x6ea6('0x2c')]);_0x12e195[_0x6ea6('0x29')]=_['intersection'](_0x12e195[_0x6ea6('0x28')],_0x12e195[_0x6ea6('0x2c')]);_0x4294bc[_0x6ea6('0x2d')]=_['intersection'](_0x12e195[_0x6ea6('0x28')],qs[_0x6ea6('0x2b')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x2b')]));_0x4294bc[_0x6ea6('0x2d')]=_0x4294bc['attributes']['length']?_0x4294bc[_0x6ea6('0x2d')]:_0x12e195[_0x6ea6('0x28')];_0x4294bc[_0x6ea6('0x31')]=qs[_0x6ea6('0x32')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x32')]);_0x4294bc[_0x6ea6('0x35')]=qs[_0x6ea6('0x29')](_['pick'](_0x21e895[_0x6ea6('0x2c')],_0x12e195[_0x6ea6('0x29')]));if(_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x34')]){_0x4294bc[_0x6ea6('0x35')]=_[_0x6ea6('0x36')](_0x4294bc[_0x6ea6('0x35')],{'$or':_[_0x6ea6('0x25')](_0x4294bc[_0x6ea6('0x2d')],function(_0x1afb66){var _0x574ba1={};_0x574ba1[_0x1afb66]={'$like':'%'+_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x34')]+'%'};return _0x574ba1;})});}_0x4294bc=_['merge']({},_0x4294bc,_0x21e895['options']);return _0x5c46c9[_0x6ea6('0x49')](_0x4294bc);}})[_0x6ea6('0x20')](function(_0x3df040){if(_0x3df040){_0x189310=_0x3df040[_0x6ea6('0x2e')];if(!_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x2f')](_0x6ea6('0x30'))){_0x4294bc[_0x6ea6('0x1a')]=qs['limit'](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x1a')]);_0x4294bc[_0x6ea6('0x19')]=qs[_0x6ea6('0x19')](_0x21e895[_0x6ea6('0x2c')][_0x6ea6('0x19')]);}return _0x5c46c9[_0x6ea6('0x49')](_0x4294bc);}})[_0x6ea6('0x20')](function(_0x9180d5){if(_0x9180d5){return _0x9180d5?{'count':_0x189310,'rows':_0x9180d5}:null;}})[_0x6ea6('0x20')](respondWithResult(_0x171254,null))[_0x6ea6('0x3c')](handleError(_0x171254,null));};exports['setTags']=function(_0x9db1c6,_0x5beba5,_0x3a88ad){if(_0x9db1c6[_0x6ea6('0x41')]['id']){delete _0x9db1c6[_0x6ea6('0x41')]['id'];}return db[_0x6ea6('0x26')][_0x6ea6('0x44')]({'where':{'id':_0x9db1c6['params']['id']}})[_0x6ea6('0x20')](handleEntityNotFound(_0x5beba5,null))[_0x6ea6('0x20')](function(_0x389396){if(_0x389396){return _0x389396[_0x6ea6('0x4a')](_0x9db1c6[_0x6ea6('0x41')][_0x6ea6('0x4b')]||[]);}return null;})[_0x6ea6('0x20')](respondWithResult(_0x5beba5,null))['catch'](handleError(_0x5beba5,null));};
\ No newline at end of file
index 1fb6dc5..4c7439c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58df=['bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','int_desk_configurations','lodash','../../config/logger'];(function(_0x3aa6ec,_0x176f07){var _0x456202=function(_0x2675c9){while(--_0x2675c9){_0x3aa6ec['push'](_0x3aa6ec['shift']());}};_0x456202(++_0x176f07);}(_0x58df,0xb2));var _0xf58d=function(_0x22eb53,_0x126f7b){_0x22eb53=_0x22eb53-0x0;var _0x177069=_0x58df[_0x22eb53];return _0x177069;};'use strict';var _=require(_0xf58d('0x0'));var util=require('util');var logger=require(_0xf58d('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf58d('0x2'));var rp=require(_0xf58d('0x3'));var fs=require('fs');var path=require(_0xf58d('0x4'));var rimraf=require(_0xf58d('0x5'));var config=require(_0xf58d('0x6'));var attributes=require(_0xf58d('0x7'));module[_0xf58d('0x8')]=function(_0x2365ec,_0x3faef4){return _0x2365ec['define']('DeskConfiguration',attributes,{'tableName':_0xf58d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca8e=['path','../../config/environment','exports','DeskConfiguration','int_desk_configurations','../../config/logger','api','request-promise'];(function(_0xd5d4bc,_0x353943){var _0x239636=function(_0x176f99){while(--_0x176f99){_0xd5d4bc['push'](_0xd5d4bc['shift']());}};_0x239636(++_0x353943);}(_0xca8e,0xbd));var _0xeca8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xca8e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeca8('0x0'))(_0xeca8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeca8('0x2'));var fs=require('fs');var path=require(_0xeca8('0x3'));var rimraf=require('rimraf');var config=require(_0xeca8('0x4'));var attributes=require('./intDeskConfiguration.attributes');module[_0xeca8('0x5')]=function(_0x362094,_0x531916){return _0x362094['define'](_0xeca8('0x6'),attributes,{'tableName':_0xeca8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9de6cfa..bad8421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','DeskConfiguration,\x20%s,\x20%s','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x466461,_0x1b1ef9){var _0xefb69f=function(_0x2467f6){while(--_0x2467f6){_0x466461['push'](_0x466461['shift']());}};_0xefb69f(++_0x1b1ef9);}(_0x6d5e,0x103));var _0xe6d5=function(_0x5615db,_0x91cb3a){_0x5615db=_0x5615db-0x0;var _0x42c839=_0x6d5e[_0x5615db];return _0x42c839;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var moment=require(_0xe6d5('0x2'));var BPromise=require(_0xe6d5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe6d5('0x4'));var db=require(_0xe6d5('0x5'))['db'];var utils=require(_0xe6d5('0x6'));var logger=require(_0xe6d5('0x7'))(_0xe6d5('0x8'));var config=require(_0xe6d5('0x9'));var jayson=require(_0xe6d5('0xa'));var client=jayson['client'][_0xe6d5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c0f87,_0x162375,_0x5cf296){return new BPromise(function(_0x572986,_0x52913e){return client['request'](_0x4c0f87,_0x5cf296)[_0xe6d5('0xc')](function(_0x65a619){logger[_0xe6d5('0xd')](_0xe6d5('0xe'),_0x162375,'request\x20sent');logger[_0xe6d5('0xf')](_0xe6d5('0x10'),_0x162375,_0xe6d5('0x11'),JSON['stringify'](_0x65a619));if(_0x65a619['error']){if(_0x65a619[_0xe6d5('0x12')][_0xe6d5('0x13')]===0x1f4){logger[_0xe6d5('0x12')](_0xe6d5('0xe'),_0x162375,_0x65a619[_0xe6d5('0x12')][_0xe6d5('0x14')]);return _0x52913e(_0x65a619[_0xe6d5('0x12')]['message']);}logger[_0xe6d5('0x12')](_0xe6d5('0xe'),_0x162375,_0x65a619[_0xe6d5('0x12')][_0xe6d5('0x14')]);return _0x572986(_0x65a619[_0xe6d5('0x12')][_0xe6d5('0x14')]);}else{logger[_0xe6d5('0xd')](_0xe6d5('0xe'),_0x162375,_0xe6d5('0x11'));_0x572986(_0x65a619['result'][_0xe6d5('0x14')]);}})[_0xe6d5('0x15')](function(_0x268ced){logger['error'](_0xe6d5('0xe'),_0x162375,_0x268ced);_0x52913e(_0x268ced);});});}
\ No newline at end of file
+var _0x9048=['result','catch','lodash','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','error','code','DeskConfiguration,\x20%s,\x20%s','message','request\x20sent'];(function(_0x2dd07a,_0x354b1b){var _0x4671a8=function(_0x3e8457){while(--_0x3e8457){_0x2dd07a['push'](_0x2dd07a['shift']());}};_0x4671a8(++_0x354b1b);}(_0x9048,0xf2));var _0x8904=function(_0x2dd0e2,_0x41c0f8){_0x2dd0e2=_0x2dd0e2-0x0;var _0x567695=_0x9048[_0x2dd0e2];return _0x567695;};'use strict';var _=require(_0x8904('0x0'));var util=require('util');var moment=require(_0x8904('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8904('0x2'))['db'];var utils=require(_0x8904('0x3'));var logger=require('../../config/logger')(_0x8904('0x4'));var config=require(_0x8904('0x5'));var jayson=require(_0x8904('0x6'));var client=jayson[_0x8904('0x7')][_0x8904('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4613a7,_0x21586c,_0x3b78af){return new BPromise(function(_0x333215,_0x79819a){return client[_0x8904('0x9')](_0x4613a7,_0x3b78af)[_0x8904('0xa')](function(_0x225617){logger[_0x8904('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x21586c,'request\x20sent');logger[_0x8904('0xc')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x21586c,'request\x20sent',JSON['stringify'](_0x225617));if(_0x225617[_0x8904('0xd')]){if(_0x225617['error'][_0x8904('0xe')]===0x1f4){logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x225617[_0x8904('0xd')][_0x8904('0x10')]);return _0x79819a(_0x225617[_0x8904('0xd')][_0x8904('0x10')]);}logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x225617['error'][_0x8904('0x10')]);return _0x333215(_0x225617['error']['message']);}else{logger[_0x8904('0xb')](_0x8904('0xf'),_0x21586c,_0x8904('0x11'));_0x333215(_0x225617[_0x8904('0x12')][_0x8904('0x10')]);}})[_0x8904('0x13')](function(_0x321846){logger[_0x8904('0xd')](_0x8904('0xf'),_0x21586c,_0x321846);_0x79819a(_0x321846);});});}
\ No newline at end of file
index 9eaba90..9241adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95b=['get','isAuthenticated','index','/:id','create','update','delete','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xf95b,0x197));var _0xbf95=function(_0x2a9202,_0x5e68cb){_0x2a9202=_0x2a9202-0x0;var _0x316625=_0xf95b[_0x2a9202];return _0x316625;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xbf95('0x0'));var timeout=require(_0xbf95('0x1'));var express=require(_0xbf95('0x2'));var router=express[_0xbf95('0x3')]();var fs_extra=require(_0xbf95('0x4'));var auth=require(_0xbf95('0x5'));var interaction=require(_0xbf95('0x6'));var config=require(_0xbf95('0x7'));var controller=require(_0xbf95('0x8'));router[_0xbf95('0x9')]('/',auth[_0xbf95('0xa')](),controller[_0xbf95('0xb')]);router['get'](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbf95('0xd')]);router['put'](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller[_0xbf95('0xe')]);router[_0xbf95('0xf')](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1e7b=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy'];(function(_0x27530d,_0x46480a){var _0x59e561=function(_0x395fe9){while(--_0x395fe9){_0x27530d['push'](_0x27530d['shift']());}};_0x59e561(++_0x46480a);}(_0x1e7b,0x12d));var _0xb1e7=function(_0xfcfe92,_0x14ea66){_0xfcfe92=_0xfcfe92-0x0;var _0x166ba1=_0x1e7b[_0xfcfe92];return _0x166ba1;};'use strict';var multer=require(_0xb1e7('0x0'));var util=require(_0xb1e7('0x1'));var path=require('path');var timeout=require(_0xb1e7('0x2'));var express=require(_0xb1e7('0x3'));var router=express['Router']();var fs_extra=require(_0xb1e7('0x4'));var auth=require(_0xb1e7('0x5'));var interaction=require(_0xb1e7('0x6'));var config=require(_0xb1e7('0x7'));var controller=require('./intDeskField.controller');router[_0xb1e7('0x8')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xa')]);router[_0xb1e7('0x8')](_0xb1e7('0xb'),auth['isAuthenticated'](),controller[_0xb1e7('0xc')]);router[_0xb1e7('0xd')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xe')]);router[_0xb1e7('0xf')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x10')]);router[_0xb1e7('0x11')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x12')]);module[_0xb1e7('0x13')]=router;
\ No newline at end of file
index 08c8f95..45d0283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ab=['ENUM','string','keyValue','STRING','customVariable','BOOLEAN'];(function(_0xf22faa,_0x16bd24){var _0x4e40bc=function(_0x3dd882){while(--_0x3dd882){_0xf22faa['push'](_0xf22faa['shift']());}};_0x4e40bc(++_0x16bd24);}(_0x33ab,0x1bc));var _0xb33a=function(_0x185d4d,_0x476164){_0x185d4d=_0x185d4d-0x0;var _0x437e20=_0x33ab[_0x185d4d];return _0x437e20;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xb33a('0x0')](_0xb33a('0x1'),'variable','customVariable',_0xb33a('0x2'),'picklist'),'defaultValue':_0xb33a('0x1')},'content':{'type':Sequelize[_0xb33a('0x3')]},'key':{'type':Sequelize[_0xb33a('0x3')]},'keyType':{'type':Sequelize[_0xb33a('0x0')](_0xb33a('0x1'),'variable',_0xb33a('0x4'))},'keyContent':{'type':Sequelize[_0xb33a('0x3')]},'idField':{'type':Sequelize[_0xb33a('0x3')]},'nameField':{'type':Sequelize[_0xb33a('0x3')]},'customField':{'type':Sequelize[_0xb33a('0x5')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb33a('0x3')]}};
\ No newline at end of file
+var _0x5547=['customVariable','keyValue','picklist','STRING','ENUM','exports','string','variable'];(function(_0xa27706,_0x540b7e){var _0x44476d=function(_0x3f23da){while(--_0x3f23da){_0xa27706['push'](_0xa27706['shift']());}};_0x44476d(++_0x540b7e);}(_0x5547,0x155));var _0x7554=function(_0x2a31b9,_0x4a634d){_0x2a31b9=_0x2a31b9-0x0;var _0x5cda05=_0x5547[_0x2a31b9];return _0x5cda05;};'use strict';var Sequelize=require('sequelize');module[_0x7554('0x0')]={'type':{'type':Sequelize['ENUM'](_0x7554('0x1'),_0x7554('0x2'),_0x7554('0x3'),_0x7554('0x4'),_0x7554('0x5')),'defaultValue':_0x7554('0x1')},'content':{'type':Sequelize[_0x7554('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7554('0x7')](_0x7554('0x1'),_0x7554('0x2'),_0x7554('0x3'))},'keyContent':{'type':Sequelize[_0x7554('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7554('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 550c327..883f1a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e6=['findAll','catch','show','params','keys','find','create','update','body','destroy','eml-format','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','count','offset','limit','Content-Range','json','apply','reject','save','then','sendStatus','stack','name','send','map','DeskField','rawAttributes','fieldName','type','query','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include'];(function(_0x5f0146,_0x82b89e){var _0x3b6737=function(_0x37bd9f){while(--_0x37bd9f){_0x5f0146['push'](_0x5f0146['shift']());}};_0x3b6737(++_0x82b89e);}(_0x39e6,0x9e));var _0x639e=function(_0x4d1779,_0x21c977){_0x4d1779=_0x4d1779-0x0;var _0x5b3a94=_0x39e6[_0x4d1779];return _0x5b3a94;};'use strict';var emlformat=require(_0x639e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x639e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x639e('0x2'));var BPromise=require(_0x639e('0x3'));var Mustache=require('mustache');var util=require(_0x639e('0x4'));var path=require(_0x639e('0x5'));var sox=require(_0x639e('0x6'));var csv=require(_0x639e('0x7'));var ejs=require(_0x639e('0x8'));var fs=require('fs');var fs_extra=require(_0x639e('0x9'));var _=require(_0x639e('0xa'));var squel=require(_0x639e('0xb'));var crypto=require(_0x639e('0xc'));var jsforce=require(_0x639e('0xd'));var deskjs=require(_0x639e('0xe'));var toCsv=require(_0x639e('0x7'));var querystring=require(_0x639e('0xf'));var Papa=require(_0x639e('0x10'));var Redis=require(_0x639e('0x11'));var authService=require(_0x639e('0x12'));var qs=require(_0x639e('0x13'));var as=require(_0x639e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x639e('0x15'));var utils=require(_0x639e('0x16'));var config=require(_0x639e('0x17'));var licenseUtil=require(_0x639e('0x18'));var db=require(_0x639e('0x19'))['db'];function respondWithStatusCode(_0x16117b,_0x30b490){_0x30b490=_0x30b490||0xcc;return function(_0x4f3d38){if(_0x4f3d38){return _0x16117b['sendStatus'](_0x30b490);}return _0x16117b[_0x639e('0x1a')](_0x30b490)[_0x639e('0x1b')]();};}function respondWithResult(_0x89302c,_0x199fb5){_0x199fb5=_0x199fb5||0xc8;return function(_0x37b8e2){if(_0x37b8e2){return _0x89302c[_0x639e('0x1a')](_0x199fb5)['json'](_0x37b8e2);}};}function respondWithFilteredResult(_0x31826a,_0x20bfbb){return function(_0x23f0f9){if(_0x23f0f9){var _0x4077c5=typeof _0x20bfbb['offset']===_0x639e('0x1c')&&typeof _0x20bfbb['limit']===_0x639e('0x1c');var _0x3932a8=_0x23f0f9[_0x639e('0x1d')];var _0x20b76f=_0x4077c5?0x0:_0x20bfbb[_0x639e('0x1e')];var _0x1c023e=_0x4077c5?_0x23f0f9['count']:_0x20bfbb[_0x639e('0x1e')]+_0x20bfbb[_0x639e('0x1f')];var _0x36f71d;if(_0x1c023e>=_0x3932a8){_0x1c023e=_0x3932a8;_0x36f71d=0xc8;}else{_0x36f71d=0xce;}_0x31826a[_0x639e('0x1a')](_0x36f71d);return _0x31826a['set'](_0x639e('0x20'),_0x20b76f+'-'+_0x1c023e+'/'+_0x3932a8)[_0x639e('0x21')](_0x23f0f9);}return null;};}function patchUpdates(_0x44dd33){return function(_0x149472){try{jsonpatch[_0x639e('0x22')](_0x149472,_0x44dd33,!![]);}catch(_0x50de77){return BPromise[_0x639e('0x23')](_0x50de77);}return _0x149472[_0x639e('0x24')]();};}function saveUpdates(_0x4f4421,_0x25ead8){return function(_0x48dce7){if(_0x48dce7){return _0x48dce7['update'](_0x4f4421)[_0x639e('0x25')](function(_0x3813f6){return _0x3813f6;});}return null;};}function removeEntity(_0x3ab673,_0x24e1ad){return function(_0x211fcb){if(_0x211fcb){return _0x211fcb['destroy']()[_0x639e('0x25')](function(){_0x3ab673[_0x639e('0x1a')](0xcc)[_0x639e('0x1b')]();});}};}function handleEntityNotFound(_0x2da264,_0x2df4d1){return function(_0x5f27f6){if(!_0x5f27f6){_0x2da264[_0x639e('0x26')](0x194);}return _0x5f27f6;};}function handleError(_0x97665a,_0x3a4fe3){_0x3a4fe3=_0x3a4fe3||0x1f4;return function(_0x10abb0){logger['error'](_0x10abb0[_0x639e('0x27')]);if(_0x10abb0[_0x639e('0x28')]){delete _0x10abb0[_0x639e('0x28')];}_0x97665a['status'](_0x3a4fe3)[_0x639e('0x29')](_0x10abb0);};}exports['index']=function(_0x38ce3a,_0x4da5f4){var _0x525a1f={},_0x2c8e3a={},_0x2a3f56={'count':0x0,'rows':[]};var _0x3f7b0f=_[_0x639e('0x2a')](db[_0x639e('0x2b')][_0x639e('0x2c')],function(_0x5797da){return{'name':_0x5797da[_0x639e('0x2d')],'type':_0x5797da[_0x639e('0x2e')]['key']};});_0x2c8e3a['model']=_[_0x639e('0x2a')](_0x3f7b0f,_0x639e('0x28'));_0x2c8e3a[_0x639e('0x2f')]=_['keys'](_0x38ce3a[_0x639e('0x2f')]);_0x2c8e3a['filters']=_[_0x639e('0x30')](_0x2c8e3a[_0x639e('0x31')],_0x2c8e3a[_0x639e('0x2f')]);_0x525a1f['attributes']=_[_0x639e('0x30')](_0x2c8e3a['model'],qs[_0x639e('0x32')](_0x38ce3a[_0x639e('0x2f')][_0x639e('0x32')]));_0x525a1f['attributes']=_0x525a1f[_0x639e('0x33')][_0x639e('0x34')]?_0x525a1f[_0x639e('0x33')]:_0x2c8e3a['model'];if(!_0x38ce3a[_0x639e('0x2f')]['hasOwnProperty'](_0x639e('0x35'))){_0x525a1f[_0x639e('0x1f')]=qs[_0x639e('0x1f')](_0x38ce3a[_0x639e('0x2f')][_0x639e('0x1f')]);_0x525a1f['offset']=qs[_0x639e('0x1e')](_0x38ce3a[_0x639e('0x2f')][_0x639e('0x1e')]);}_0x525a1f[_0x639e('0x36')]=qs['sort'](_0x38ce3a[_0x639e('0x2f')][_0x639e('0x37')]);_0x525a1f[_0x639e('0x38')]=qs['filters'](_[_0x639e('0x39')](_0x38ce3a['query'],_0x2c8e3a[_0x639e('0x3a')]),_0x3f7b0f);if(_0x38ce3a[_0x639e('0x2f')][_0x639e('0x3b')]){_0x525a1f[_0x639e('0x38')]=_[_0x639e('0x3c')](_0x525a1f[_0x639e('0x38')],{'$or':_['map'](_0x3f7b0f,function(_0xebceb5){if(_0xebceb5[_0x639e('0x2e')]!=='VIRTUAL'){var _0x26e637={};_0x26e637[_0xebceb5['name']]={'$like':'%'+_0x38ce3a[_0x639e('0x2f')][_0x639e('0x3b')]+'%'};return _0x26e637;}})});}_0x525a1f=_[_0x639e('0x3c')]({},_0x525a1f,_0x38ce3a[_0x639e('0x3d')]);var _0x35878c={'where':_0x525a1f[_0x639e('0x38')]};return db[_0x639e('0x2b')][_0x639e('0x1d')](_0x35878c)['then'](function(_0x485359){_0x2a3f56['count']=_0x485359;if(_0x38ce3a['query'][_0x639e('0x3e')]){_0x525a1f[_0x639e('0x3f')]=[{'all':!![]}];}return db['DeskField'][_0x639e('0x40')](_0x525a1f);})[_0x639e('0x25')](function(_0x16a792){_0x2a3f56['rows']=_0x16a792;return _0x2a3f56;})[_0x639e('0x25')](respondWithFilteredResult(_0x4da5f4,_0x525a1f))[_0x639e('0x41')](handleError(_0x4da5f4,null));};exports[_0x639e('0x42')]=function(_0x3c7d42,_0xb9ef6c){var _0x1bede6={'raw':!![],'where':{'id':_0x3c7d42[_0x639e('0x43')]['id']}},_0x21b62d={};_0x21b62d[_0x639e('0x31')]=_['keys'](db[_0x639e('0x2b')][_0x639e('0x2c')]);_0x21b62d[_0x639e('0x2f')]=_[_0x639e('0x44')](_0x3c7d42[_0x639e('0x2f')]);_0x21b62d[_0x639e('0x3a')]=_['intersection'](_0x21b62d[_0x639e('0x31')],_0x21b62d[_0x639e('0x2f')]);_0x1bede6[_0x639e('0x33')]=_[_0x639e('0x30')](_0x21b62d[_0x639e('0x31')],qs[_0x639e('0x32')](_0x3c7d42[_0x639e('0x2f')][_0x639e('0x32')]));_0x1bede6[_0x639e('0x33')]=_0x1bede6[_0x639e('0x33')][_0x639e('0x34')]?_0x1bede6[_0x639e('0x33')]:_0x21b62d['model'];if(_0x3c7d42[_0x639e('0x2f')]['includeAll']){_0x1bede6['include']=[{'all':!![]}];}_0x1bede6=_[_0x639e('0x3c')]({},_0x1bede6,_0x3c7d42[_0x639e('0x3d')]);return db[_0x639e('0x2b')][_0x639e('0x45')](_0x1bede6)[_0x639e('0x25')](handleEntityNotFound(_0xb9ef6c,null))['then'](respondWithResult(_0xb9ef6c,null))[_0x639e('0x41')](handleError(_0xb9ef6c,null));};exports[_0x639e('0x46')]=function(_0x56ecea,_0x32000e){return db[_0x639e('0x2b')][_0x639e('0x46')](_0x56ecea['body'],{})[_0x639e('0x25')](respondWithResult(_0x32000e,0xc9))[_0x639e('0x41')](handleError(_0x32000e,null));};exports[_0x639e('0x47')]=function(_0x39c352,_0x4d0d3b){if(_0x39c352[_0x639e('0x48')]['id']){delete _0x39c352['body']['id'];}return db[_0x639e('0x2b')]['find']({'where':{'id':_0x39c352[_0x639e('0x43')]['id']}})[_0x639e('0x25')](handleEntityNotFound(_0x4d0d3b,null))[_0x639e('0x25')](saveUpdates(_0x39c352[_0x639e('0x48')],null))[_0x639e('0x25')](respondWithResult(_0x4d0d3b,null))['catch'](handleError(_0x4d0d3b,null));};exports[_0x639e('0x49')]=function(_0x1d3ace,_0x20a122){return db['DeskField'][_0x639e('0x45')]({'where':{'id':_0x1d3ace[_0x639e('0x43')]['id']}})[_0x639e('0x25')](handleEntityNotFound(_0x20a122,null))[_0x639e('0x25')](removeEntity(_0x20a122,null))['catch'](handleError(_0x20a122,null));};
\ No newline at end of file
+var _0xbb3e=['key','model','query','filters','intersection','fields','attributes','length','order','sort','pick','filter','where','merge','VIRTUAL','options','rows','params','keys','include','find','create','catch','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','error','stack','name','index','map','DeskField','fieldName','type'];(function(_0x4124b3,_0x1ba0a1){var _0x5f3a62=function(_0x3411c0){while(--_0x3411c0){_0x4124b3['push'](_0x4124b3['shift']());}};_0x5f3a62(++_0x1ba0a1);}(_0xbb3e,0x181));var _0xebb3=function(_0x1336f0,_0x34342f){_0x1336f0=_0x1336f0-0x0;var _0x46aa79=_0xbb3e[_0x1336f0];return _0x46aa79;};'use strict';var emlformat=require(_0xebb3('0x0'));var rimraf=require(_0xebb3('0x1'));var zipdir=require(_0xebb3('0x2'));var jsonpatch=require(_0xebb3('0x3'));var rp=require('request-promise');var moment=require(_0xebb3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xebb3('0x5'));var util=require(_0xebb3('0x6'));var path=require(_0xebb3('0x7'));var sox=require(_0xebb3('0x8'));var csv=require(_0xebb3('0x9'));var ejs=require(_0xebb3('0xa'));var fs=require('fs');var fs_extra=require(_0xebb3('0xb'));var _=require(_0xebb3('0xc'));var squel=require(_0xebb3('0xd'));var crypto=require(_0xebb3('0xe'));var jsforce=require(_0xebb3('0xf'));var deskjs=require(_0xebb3('0x10'));var toCsv=require(_0xebb3('0x9'));var querystring=require(_0xebb3('0x11'));var Papa=require(_0xebb3('0x12'));var Redis=require(_0xebb3('0x13'));var authService=require(_0xebb3('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xebb3('0x15'));var hardwareService=require(_0xebb3('0x16'));var logger=require('../../config/logger')(_0xebb3('0x17'));var utils=require(_0xebb3('0x18'));var config=require(_0xebb3('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15924b,_0x21ef06){_0x21ef06=_0x21ef06||0xcc;return function(_0x46592c){if(_0x46592c){return _0x15924b[_0xebb3('0x1a')](_0x21ef06);}return _0x15924b[_0xebb3('0x1b')](_0x21ef06)[_0xebb3('0x1c')]();};}function respondWithResult(_0x29d2cf,_0x1127ef){_0x1127ef=_0x1127ef||0xc8;return function(_0x354074){if(_0x354074){return _0x29d2cf['status'](_0x1127ef)['json'](_0x354074);}};}function respondWithFilteredResult(_0x1761ee,_0xe35eb4){return function(_0x50f75e){if(_0x50f75e){var _0x56f7b0=typeof _0xe35eb4[_0xebb3('0x1d')]==='undefined'&&typeof _0xe35eb4[_0xebb3('0x1e')]===_0xebb3('0x1f');var _0x563aa3=_0x50f75e[_0xebb3('0x20')];var _0xd19201=_0x56f7b0?0x0:_0xe35eb4[_0xebb3('0x1d')];var _0xaece7a=_0x56f7b0?_0x50f75e[_0xebb3('0x20')]:_0xe35eb4[_0xebb3('0x1d')]+_0xe35eb4[_0xebb3('0x1e')];var _0x5cffe1;if(_0xaece7a>=_0x563aa3){_0xaece7a=_0x563aa3;_0x5cffe1=0xc8;}else{_0x5cffe1=0xce;}_0x1761ee['status'](_0x5cffe1);return _0x1761ee[_0xebb3('0x21')](_0xebb3('0x22'),_0xd19201+'-'+_0xaece7a+'/'+_0x563aa3)['json'](_0x50f75e);}return null;};}function patchUpdates(_0x568027){return function(_0x55129c){try{jsonpatch[_0xebb3('0x23')](_0x55129c,_0x568027,!![]);}catch(_0x116da4){return BPromise['reject'](_0x116da4);}return _0x55129c[_0xebb3('0x24')]();};}function saveUpdates(_0x19ea2d,_0x16c0b1){return function(_0x5d78f6){if(_0x5d78f6){return _0x5d78f6['update'](_0x19ea2d)[_0xebb3('0x25')](function(_0x2b1e69){return _0x2b1e69;});}return null;};}function removeEntity(_0x2e006b,_0x2f79bb){return function(_0x341bf4){if(_0x341bf4){return _0x341bf4[_0xebb3('0x26')]()[_0xebb3('0x25')](function(){_0x2e006b['status'](0xcc)[_0xebb3('0x1c')]();});}};}function handleEntityNotFound(_0x58e794,_0x7b7a6e){return function(_0x33eff3){if(!_0x33eff3){_0x58e794['sendStatus'](0x194);}return _0x33eff3;};}function handleError(_0x32d87,_0x172c4e){_0x172c4e=_0x172c4e||0x1f4;return function(_0x584e26){logger[_0xebb3('0x27')](_0x584e26[_0xebb3('0x28')]);if(_0x584e26[_0xebb3('0x29')]){delete _0x584e26[_0xebb3('0x29')];}_0x32d87[_0xebb3('0x1b')](_0x172c4e)['send'](_0x584e26);};}exports[_0xebb3('0x2a')]=function(_0x211670,_0x185b62){var _0x445dc8={},_0x397ad3={},_0x49b61e={'count':0x0,'rows':[]};var _0x58a43c=_[_0xebb3('0x2b')](db[_0xebb3('0x2c')]['rawAttributes'],function(_0x588056){return{'name':_0x588056[_0xebb3('0x2d')],'type':_0x588056[_0xebb3('0x2e')][_0xebb3('0x2f')]};});_0x397ad3[_0xebb3('0x30')]=_['map'](_0x58a43c,_0xebb3('0x29'));_0x397ad3[_0xebb3('0x31')]=_['keys'](_0x211670[_0xebb3('0x31')]);_0x397ad3[_0xebb3('0x32')]=_[_0xebb3('0x33')](_0x397ad3['model'],_0x397ad3[_0xebb3('0x31')]);_0x445dc8['attributes']=_[_0xebb3('0x33')](_0x397ad3['model'],qs[_0xebb3('0x34')](_0x211670['query'][_0xebb3('0x34')]));_0x445dc8[_0xebb3('0x35')]=_0x445dc8[_0xebb3('0x35')][_0xebb3('0x36')]?_0x445dc8[_0xebb3('0x35')]:_0x397ad3[_0xebb3('0x30')];if(!_0x211670[_0xebb3('0x31')]['hasOwnProperty']('nolimit')){_0x445dc8[_0xebb3('0x1e')]=qs['limit'](_0x211670[_0xebb3('0x31')][_0xebb3('0x1e')]);_0x445dc8[_0xebb3('0x1d')]=qs[_0xebb3('0x1d')](_0x211670[_0xebb3('0x31')][_0xebb3('0x1d')]);}_0x445dc8[_0xebb3('0x37')]=qs['sort'](_0x211670['query'][_0xebb3('0x38')]);_0x445dc8['where']=qs[_0xebb3('0x32')](_[_0xebb3('0x39')](_0x211670[_0xebb3('0x31')],_0x397ad3['filters']),_0x58a43c);if(_0x211670['query'][_0xebb3('0x3a')]){_0x445dc8[_0xebb3('0x3b')]=_[_0xebb3('0x3c')](_0x445dc8[_0xebb3('0x3b')],{'$or':_[_0xebb3('0x2b')](_0x58a43c,function(_0x576905){if(_0x576905[_0xebb3('0x2e')]!==_0xebb3('0x3d')){var _0x37250a={};_0x37250a[_0x576905[_0xebb3('0x29')]]={'$like':'%'+_0x211670[_0xebb3('0x31')][_0xebb3('0x3a')]+'%'};return _0x37250a;}})});}_0x445dc8=_[_0xebb3('0x3c')]({},_0x445dc8,_0x211670[_0xebb3('0x3e')]);var _0x498f2c={'where':_0x445dc8[_0xebb3('0x3b')]};return db[_0xebb3('0x2c')][_0xebb3('0x20')](_0x498f2c)[_0xebb3('0x25')](function(_0x2e7ced){_0x49b61e[_0xebb3('0x20')]=_0x2e7ced;if(_0x211670[_0xebb3('0x31')]['includeAll']){_0x445dc8['include']=[{'all':!![]}];}return db[_0xebb3('0x2c')]['findAll'](_0x445dc8);})['then'](function(_0x469ece){_0x49b61e[_0xebb3('0x3f')]=_0x469ece;return _0x49b61e;})['then'](respondWithFilteredResult(_0x185b62,_0x445dc8))['catch'](handleError(_0x185b62,null));};exports['show']=function(_0xefab32,_0x12c23f){var _0x1c05a7={'raw':!![],'where':{'id':_0xefab32[_0xebb3('0x40')]['id']}},_0x3d6e13={};_0x3d6e13[_0xebb3('0x30')]=_['keys'](db['DeskField']['rawAttributes']);_0x3d6e13[_0xebb3('0x31')]=_[_0xebb3('0x41')](_0xefab32[_0xebb3('0x31')]);_0x3d6e13[_0xebb3('0x32')]=_[_0xebb3('0x33')](_0x3d6e13[_0xebb3('0x30')],_0x3d6e13[_0xebb3('0x31')]);_0x1c05a7['attributes']=_[_0xebb3('0x33')](_0x3d6e13['model'],qs[_0xebb3('0x34')](_0xefab32['query'][_0xebb3('0x34')]));_0x1c05a7[_0xebb3('0x35')]=_0x1c05a7[_0xebb3('0x35')]['length']?_0x1c05a7[_0xebb3('0x35')]:_0x3d6e13[_0xebb3('0x30')];if(_0xefab32[_0xebb3('0x31')]['includeAll']){_0x1c05a7[_0xebb3('0x42')]=[{'all':!![]}];}_0x1c05a7=_[_0xebb3('0x3c')]({},_0x1c05a7,_0xefab32[_0xebb3('0x3e')]);return db[_0xebb3('0x2c')][_0xebb3('0x43')](_0x1c05a7)[_0xebb3('0x25')](handleEntityNotFound(_0x12c23f,null))[_0xebb3('0x25')](respondWithResult(_0x12c23f,null))['catch'](handleError(_0x12c23f,null));};exports[_0xebb3('0x44')]=function(_0x584d19,_0x55d74e){return db[_0xebb3('0x2c')][_0xebb3('0x44')](_0x584d19['body'],{})[_0xebb3('0x25')](respondWithResult(_0x55d74e,0xc9))[_0xebb3('0x45')](handleError(_0x55d74e,null));};exports[_0xebb3('0x46')]=function(_0x17fcd1,_0x3ab350){if(_0x17fcd1[_0xebb3('0x47')]['id']){delete _0x17fcd1[_0xebb3('0x47')]['id'];}return db[_0xebb3('0x2c')][_0xebb3('0x43')]({'where':{'id':_0x17fcd1['params']['id']}})['then'](handleEntityNotFound(_0x3ab350,null))[_0xebb3('0x25')](saveUpdates(_0x17fcd1[_0xebb3('0x47')],null))['then'](respondWithResult(_0x3ab350,null))[_0xebb3('0x45')](handleError(_0x3ab350,null));};exports[_0xebb3('0x26')]=function(_0xcad2ca,_0x449bca){return db[_0xebb3('0x2c')]['find']({'where':{'id':_0xcad2ca[_0xebb3('0x40')]['id']}})['then'](handleEntityNotFound(_0x449bca,null))[_0xebb3('0x25')](removeEntity(_0x449bca,null))[_0xebb3('0x45')](handleError(_0x449bca,null));};
\ No newline at end of file
index 25c8496..212a6e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d9=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash'];(function(_0x3f94f9,_0x42774b){var _0x46f84f=function(_0xa080d8){while(--_0xa080d8){_0x3f94f9['push'](_0x3f94f9['shift']());}};_0x46f84f(++_0x42774b);}(_0x53d9,0xbf));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x953d('0x0'));var util=require(_0x953d('0x1'));var logger=require(_0x953d('0x2'))(_0x953d('0x3'));var moment=require(_0x953d('0x4'));var BPromise=require(_0x953d('0x5'));var rp=require(_0x953d('0x6'));var fs=require('fs');var path=require(_0x953d('0x7'));var rimraf=require('rimraf');var config=require(_0x953d('0x8'));var attributes=require('./intDeskField.attributes');module[_0x953d('0x9')]=function(_0x344c44,_0x2e5d98){return _0x344c44[_0x953d('0xa')](_0x953d('0xb'),attributes,{'tableName':_0x953d('0xc'),'paranoid':![],'indexes':[{'name':_0x953d('0xd'),'fields':[_0x953d('0xe'),_0x953d('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fee=['exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x2f028e,_0x4e3469){var _0x48e1b4=function(_0x3f42b7){while(--_0x3f42b7){_0x2f028e['push'](_0x2f028e['shift']());}};_0x48e1b4(++_0x4e3469);}(_0x3fee,0x115));var _0xe3fe=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x3fee[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0xe3fe('0x0'));var util=require(_0xe3fe('0x1'));var logger=require(_0xe3fe('0x2'))(_0xe3fe('0x3'));var moment=require(_0xe3fe('0x4'));var BPromise=require(_0xe3fe('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe3fe('0x6'));var rimraf=require('rimraf');var config=require(_0xe3fe('0x7'));var attributes=require('./intDeskField.attributes');module[_0xe3fe('0x8')]=function(_0x3e76d7,_0x2410a5){return _0x3e76d7[_0xe3fe('0x9')](_0xe3fe('0xa'),attributes,{'tableName':_0xe3fe('0xb'),'paranoid':![],'indexes':[{'name':_0xe3fe('0xc'),'fields':[_0xe3fe('0xd'),_0xe3fe('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 62fd842..f04083f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb7=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','DeskField,\x20%s,\x20%s','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x147e9e,_0x3dfac5){var _0x1b42cf=function(_0x3a9bdc){while(--_0x3a9bdc){_0x147e9e['push'](_0x147e9e['shift']());}};_0x1b42cf(++_0x3dfac5);}(_0xceb7,0x125));var _0x7ceb=function(_0x3f0b43,_0x3f075a){_0x3f0b43=_0x3f0b43-0x0;var _0x3c2ed=_0xceb7[_0x3f0b43];return _0x3c2ed;};'use strict';var _=require(_0x7ceb('0x0'));var util=require(_0x7ceb('0x1'));var moment=require('moment');var BPromise=require(_0x7ceb('0x2'));var rs=require(_0x7ceb('0x3'));var fs=require('fs');var Redis=require(_0x7ceb('0x4'));var db=require(_0x7ceb('0x5'))['db'];var utils=require(_0x7ceb('0x6'));var logger=require(_0x7ceb('0x7'))(_0x7ceb('0x8'));var config=require(_0x7ceb('0x9'));var jayson=require(_0x7ceb('0xa'));var client=jayson[_0x7ceb('0xb')][_0x7ceb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x896639,_0x140949,_0x31defa){return new BPromise(function(_0x181faf,_0x20b1f9){return client[_0x7ceb('0xd')](_0x896639,_0x31defa)['then'](function(_0x19d100){logger['info'](_0x7ceb('0xe'),_0x140949,'request\x20sent');logger['debug'](_0x7ceb('0xf'),_0x140949,_0x7ceb('0x10'),JSON[_0x7ceb('0x11')](_0x19d100));if(_0x19d100[_0x7ceb('0x12')]){if(_0x19d100[_0x7ceb('0x12')][_0x7ceb('0x13')]===0x1f4){logger['error'](_0x7ceb('0xe'),_0x140949,_0x19d100['error']['message']);return _0x20b1f9(_0x19d100[_0x7ceb('0x12')]['message']);}logger[_0x7ceb('0x12')](_0x7ceb('0xe'),_0x140949,_0x19d100[_0x7ceb('0x12')][_0x7ceb('0x14')]);return _0x181faf(_0x19d100['error']['message']);}else{logger[_0x7ceb('0x15')]('DeskField,\x20%s,\x20%s',_0x140949,_0x7ceb('0x10'));_0x181faf(_0x19d100[_0x7ceb('0x16')][_0x7ceb('0x14')]);}})['catch'](function(_0x1cca4d){logger[_0x7ceb('0x12')]('DeskField,\x20%s,\x20%s',_0x140949,_0x1cca4d);_0x20b1f9(_0x1cca4d);});});}
\ No newline at end of file
+var _0xec0e=['message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xec0e,0x154));var _0xeec0=function(_0xee122e,_0x58ef2e){_0xee122e=_0xee122e-0x0;var _0x34f98a=_0xec0e[_0xee122e];return _0x34f98a;};'use strict';var _=require(_0xeec0('0x0'));var util=require(_0xeec0('0x1'));var moment=require(_0xeec0('0x2'));var BPromise=require(_0xeec0('0x3'));var rs=require(_0xeec0('0x4'));var fs=require('fs');var Redis=require(_0xeec0('0x5'));var db=require(_0xeec0('0x6'))['db'];var utils=require(_0xeec0('0x7'));var logger=require('../../config/logger')(_0xeec0('0x8'));var config=require(_0xeec0('0x9'));var jayson=require(_0xeec0('0xa'));var client=jayson['client'][_0xeec0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37134d,_0x5b0010,_0x5c2a97){return new BPromise(function(_0x16e4b4,_0x5b3af1){return client[_0xeec0('0xc')](_0x37134d,_0x5c2a97)['then'](function(_0x3ae931){logger['info'](_0xeec0('0xd'),_0x5b0010,_0xeec0('0xe'));logger[_0xeec0('0xf')](_0xeec0('0x10'),_0x5b0010,_0xeec0('0xe'),JSON[_0xeec0('0x11')](_0x3ae931));if(_0x3ae931[_0xeec0('0x12')]){if(_0x3ae931[_0xeec0('0x12')][_0xeec0('0x13')]===0x1f4){logger[_0xeec0('0x12')](_0xeec0('0xd'),_0x5b0010,_0x3ae931[_0xeec0('0x12')][_0xeec0('0x14')]);return _0x5b3af1(_0x3ae931[_0xeec0('0x12')]['message']);}logger[_0xeec0('0x12')](_0xeec0('0xd'),_0x5b0010,_0x3ae931['error'][_0xeec0('0x14')]);return _0x16e4b4(_0x3ae931[_0xeec0('0x12')][_0xeec0('0x14')]);}else{logger[_0xeec0('0x15')](_0xeec0('0xd'),_0x5b0010,_0xeec0('0xe'));_0x16e4b4(_0x3ae931[_0xeec0('0x16')][_0xeec0('0x14')]);}})[_0xeec0('0x17')](function(_0x4d92ee){logger['error'](_0xeec0('0xd'),_0x5b0010,_0x4d92ee);_0x5b3af1(_0x4d92ee);});});}
\ No newline at end of file
index fabf35b..d1ffdf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d9=['/:id','/:id/configurations','/:id/fields','create','post','addConfiguration','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index'];(function(_0x387501,_0x184de8){var _0x34bd7c=function(_0x4ff6df){while(--_0x4ff6df){_0x387501['push'](_0x387501['shift']());}};_0x34bd7c(++_0x184de8);}(_0x51d9,0xf0));var _0x951d=function(_0x4b9176,_0x372e9f){_0x4b9176=_0x4b9176-0x0;var _0x12314e=_0x51d9[_0x4b9176];return _0x12314e;};'use strict';var multer=require(_0x951d('0x0'));var util=require(_0x951d('0x1'));var path=require(_0x951d('0x2'));var timeout=require(_0x951d('0x3'));var express=require(_0x951d('0x4'));var router=express[_0x951d('0x5')]();var fs_extra=require(_0x951d('0x6'));var auth=require(_0x951d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x951d('0x8'));var controller=require(_0x951d('0x9'));router[_0x951d('0xa')]('/',auth[_0x951d('0xb')](),controller[_0x951d('0xc')]);router[_0x951d('0xa')](_0x951d('0xd'),auth[_0x951d('0xb')](),controller['show']);router[_0x951d('0xa')](_0x951d('0xe'),auth[_0x951d('0xb')](),controller['getConfigurations']);router[_0x951d('0xa')](_0x951d('0xf'),auth[_0x951d('0xb')](),controller['getFields']);router['post']('/',auth[_0x951d('0xb')](),controller[_0x951d('0x10')]);router[_0x951d('0x11')](_0x951d('0xe'),auth[_0x951d('0xb')](),controller[_0x951d('0x12')]);router[_0x951d('0x13')](_0x951d('0xd'),auth[_0x951d('0xb')](),controller[_0x951d('0x14')]);router[_0x951d('0x15')](_0x951d('0xd'),auth[_0x951d('0xb')](),controller['destroy']);module[_0x951d('0x16')]=router;
\ No newline at end of file
+var _0x9593=['getFields','post','create','addConfiguration','put','update','delete','/:id','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x176d14,_0x3984ea){var _0x89522c=function(_0x3aba48){while(--_0x3aba48){_0x176d14['push'](_0x176d14['shift']());}};_0x89522c(++_0x3984ea);}(_0x9593,0x1e9));var _0x3959=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x9593[_0x1deb03];return _0x189fe7;};'use strict';var multer=require(_0x3959('0x0'));var util=require(_0x3959('0x1'));var path=require('path');var timeout=require(_0x3959('0x2'));var express=require(_0x3959('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3959('0x4'));var interaction=require(_0x3959('0x5'));var config=require(_0x3959('0x6'));var controller=require(_0x3959('0x7'));router[_0x3959('0x8')]('/',auth[_0x3959('0x9')](),controller[_0x3959('0xa')]);router[_0x3959('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3959('0xb')]);router[_0x3959('0x8')](_0x3959('0xc'),auth['isAuthenticated'](),controller[_0x3959('0xd')]);router[_0x3959('0x8')](_0x3959('0xe'),auth[_0x3959('0x9')](),controller[_0x3959('0xf')]);router[_0x3959('0x10')]('/',auth[_0x3959('0x9')](),controller[_0x3959('0x11')]);router[_0x3959('0x10')](_0x3959('0xc'),auth['isAuthenticated'](),controller[_0x3959('0x12')]);router[_0x3959('0x13')]('/:id',auth[_0x3959('0x9')](),controller[_0x3959('0x14')]);router[_0x3959('0x15')](_0x3959('0x16'),auth['isAuthenticated'](),controller[_0x3959('0x17')]);module['exports']=router;
\ No newline at end of file
index ff6f9de..d2527e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd7=['BOOLEAN','exports','STRING'];(function(_0x302f0,_0x4fcde4){var _0x1200c2=function(_0x328cf5){while(--_0x328cf5){_0x302f0['push'](_0x302f0['shift']());}};_0x1200c2(++_0x4fcde4);}(_0x5bd7,0x12a));var _0x75bd=function(_0x2d4661,_0x2da65c){_0x2d4661=_0x2d4661-0x0;var _0x42ed1e=_0x5bd7[_0x2d4661];return _0x42ed1e;};'use strict';var Sequelize=require('sequelize');module[_0x75bd('0x0')]={'name':{'type':Sequelize[_0x75bd('0x1')]},'username':{'type':Sequelize[_0x75bd('0x1')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x75bd('0x1')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x75bd('0x1')]},'clientSecret':{'type':Sequelize[_0x75bd('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x75bd('0x1')]},'modernAuthentication':{'type':Sequelize[_0x75bd('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x236d=['STRING','BOOLEAN','sequelize','exports'];(function(_0x4e947f,_0x4d7acb){var _0x2cf053=function(_0x2f1019){while(--_0x2f1019){_0x4e947f['push'](_0x4e947f['shift']());}};_0x2cf053(++_0x4d7acb);}(_0x236d,0x7e));var _0xd236=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x236d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd236('0x0'));module[_0xd236('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xd236('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xd236('0x2')]},'tenantId':{'type':Sequelize[_0xd236('0x2')]},'clientId':{'type':Sequelize[_0xd236('0x2')]},'clientSecret':{'type':Sequelize[_0xd236('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0xd236('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 0e60aa3..73f3355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb522=[')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Label','Value','DisplayName','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../components/integrations/configuration','status','json','offset','undefined','limit','count','update','then','destroy','end','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','Dynamics365Configuration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','slice','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','directioncode','phonecall_activity_parties','accountidname','actualserviceunits','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','versionnumber','username','password','remoteUri','clientId','clientSecret','CloudProvider','data5','data7','modernAuthentication','access_token','POST','https://login.microsoftonline.com/','/oauth2/token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET','Attributes','remove','LogicalName','forEach','@odata.type','lastIndexOf','push','all','isNil','substring','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','error','EntityDefinitions('];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb522,0x188));var _0x2b52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb522[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0x2b52('0x0'));var util=require(_0x2b52('0x1'));var _=require(_0x2b52('0x2'));var qs=require(_0x2b52('0x3'));var logger=require('../../config/logger')(_0x2b52('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0x2b52('0x5'));function respondWithResult(_0x4fb44d,_0x4453f1){_0x4453f1=_0x4453f1||0xc8;return function(_0x520b7b){if(_0x520b7b){return _0x4fb44d[_0x2b52('0x6')](_0x4453f1)[_0x2b52('0x7')](_0x520b7b);}};}function respondWithFilteredResult(_0x22704d,_0x31755e){return function(_0x1f3a94){if(_0x1f3a94){var _0x5bf044=typeof _0x31755e[_0x2b52('0x8')]===_0x2b52('0x9')&&typeof _0x31755e[_0x2b52('0xa')]===_0x2b52('0x9');var _0x36b005=_0x1f3a94[_0x2b52('0xb')];var _0x2abf22=_0x5bf044?0x0:_0x31755e['offset'];var _0x1de37c=_0x5bf044?_0x1f3a94['count']:_0x31755e['offset']+_0x31755e[_0x2b52('0xa')];var _0x23f467;if(_0x1de37c>=_0x36b005){_0x1de37c=_0x36b005;_0x23f467=0xc8;}else{_0x23f467=0xce;}_0x22704d['status'](_0x23f467);return _0x22704d['set']('Content-Range',_0x2abf22+'-'+_0x1de37c+'/'+_0x36b005)[_0x2b52('0x7')](_0x1f3a94);}return null;};}function saveUpdates(_0x59d7f1){return function(_0x4d7680){if(_0x4d7680){return _0x4d7680[_0x2b52('0xc')](_0x59d7f1)[_0x2b52('0xd')](function(_0x4c36c5){return _0x4c36c5;});}return null;};}function removeEntity(_0x351899){return function(_0x4353b2){if(_0x4353b2){return _0x4353b2[_0x2b52('0xe')]()[_0x2b52('0xd')](function(){_0x351899['status'](0xcc)[_0x2b52('0xf')]();});}};}function handleEntityNotFound(_0x1bfc21){return function(_0x47a656){if(!_0x47a656){_0x1bfc21['sendStatus'](0x194);}return _0x47a656;};}function handleError(_0x1085d4,_0xfe581){_0xfe581=_0xfe581||0x1f4;return function(_0x20e287){logger['error'](_0x20e287[_0x2b52('0x10')]);if(_0x20e287[_0x2b52('0x11')]){delete _0x20e287[_0x2b52('0x11')];}_0x1085d4['status'](_0xfe581)[_0x2b52('0x12')](_0x20e287);};}exports[_0x2b52('0x13')]=function(_0x141bae,_0x2a6692){var _0x30293c={},_0x1df5c7={},_0x4b98b8={'count':0x0,'rows':[]};var _0xd34a5c=_[_0x2b52('0x14')](db[_0x2b52('0x15')][_0x2b52('0x16')],function(_0x4bdfa1){return{'name':_0x4bdfa1[_0x2b52('0x17')],'type':_0x4bdfa1[_0x2b52('0x18')][_0x2b52('0x19')]};});_0x1df5c7['model']=_[_0x2b52('0x14')](_0xd34a5c,_0x2b52('0x11'));_0x1df5c7['query']=_[_0x2b52('0x1a')](_0x141bae[_0x2b52('0x1b')]);_0x1df5c7[_0x2b52('0x1c')]=_[_0x2b52('0x1d')](_0x1df5c7[_0x2b52('0x1e')],_0x1df5c7['query']);_0x30293c[_0x2b52('0x1f')]=_[_0x2b52('0x1d')](_0x1df5c7[_0x2b52('0x1e')],qs['fields'](_0x141bae[_0x2b52('0x1b')][_0x2b52('0x20')]));_0x30293c[_0x2b52('0x1f')]=_0x30293c[_0x2b52('0x1f')][_0x2b52('0x21')]?_0x30293c['attributes']:_0x1df5c7[_0x2b52('0x1e')];if(!_0x141bae['query'][_0x2b52('0x22')](_0x2b52('0x23'))){_0x30293c[_0x2b52('0xa')]=qs[_0x2b52('0xa')](_0x141bae[_0x2b52('0x1b')]['limit']);_0x30293c[_0x2b52('0x8')]=qs[_0x2b52('0x8')](_0x141bae['query']['offset']);}_0x30293c[_0x2b52('0x24')]=qs[_0x2b52('0x25')](_0x141bae[_0x2b52('0x1b')]['sort']);_0x30293c[_0x2b52('0x26')]=qs[_0x2b52('0x1c')](_[_0x2b52('0x27')](_0x141bae[_0x2b52('0x1b')],_0x1df5c7['filters']),_0xd34a5c);if(_0x141bae[_0x2b52('0x1b')][_0x2b52('0x28')]){_0x30293c[_0x2b52('0x26')]=_[_0x2b52('0x29')](_0x30293c[_0x2b52('0x26')],{'$or':_[_0x2b52('0x14')](_0xd34a5c,function(_0x5bc6d9){if(_0x5bc6d9[_0x2b52('0x18')]!==_0x2b52('0x2a')){var _0x5f3f22={};_0x5f3f22[_0x5bc6d9[_0x2b52('0x11')]]={'$like':'%'+_0x141bae[_0x2b52('0x1b')][_0x2b52('0x28')]+'%'};return _0x5f3f22;}})});}_0x30293c=_['merge']({},_0x30293c,_0x141bae[_0x2b52('0x2b')]);var _0x55d333={'where':_0x30293c[_0x2b52('0x26')]};return db[_0x2b52('0x15')][_0x2b52('0xb')](_0x55d333)[_0x2b52('0xd')](function(_0x4ac964){_0x4b98b8['count']=_0x4ac964;if(_0x141bae[_0x2b52('0x1b')][_0x2b52('0x2c')]){_0x30293c[_0x2b52('0x2d')]=[{'all':!![]}];}return db['Dynamics365Account'][_0x2b52('0x2e')](_0x30293c);})['then'](function(_0x560860){_0x4b98b8[_0x2b52('0x2f')]=_0x560860;return _0x4b98b8;})[_0x2b52('0xd')](respondWithFilteredResult(_0x2a6692,_0x30293c))[_0x2b52('0x30')](handleError(_0x2a6692,null));};exports[_0x2b52('0x31')]=function(_0x3ca464,_0x1310c3){var _0x521ef4={'raw':![],'where':{'id':_0x3ca464[_0x2b52('0x32')]['id']}},_0x12de37={};_0x12de37[_0x2b52('0x1e')]=_[_0x2b52('0x1a')](db[_0x2b52('0x15')][_0x2b52('0x16')]);_0x12de37[_0x2b52('0x1b')]=_[_0x2b52('0x1a')](_0x3ca464[_0x2b52('0x1b')]);_0x12de37[_0x2b52('0x1c')]=_[_0x2b52('0x1d')](_0x12de37[_0x2b52('0x1e')],_0x12de37[_0x2b52('0x1b')]);_0x521ef4[_0x2b52('0x1f')]=_[_0x2b52('0x1d')](_0x12de37[_0x2b52('0x1e')],qs[_0x2b52('0x20')](_0x3ca464[_0x2b52('0x1b')][_0x2b52('0x20')]));_0x521ef4[_0x2b52('0x1f')]=_0x521ef4[_0x2b52('0x1f')][_0x2b52('0x21')]?_0x521ef4['attributes']:_0x12de37[_0x2b52('0x1e')];if(_0x3ca464[_0x2b52('0x1b')][_0x2b52('0x2c')]){_0x521ef4[_0x2b52('0x2d')]=[{'all':!![]}];}_0x521ef4=_['merge']({},_0x521ef4,_0x3ca464[_0x2b52('0x2b')]);return db['Dynamics365Account'][_0x2b52('0x33')](_0x521ef4)[_0x2b52('0xd')](handleEntityNotFound(_0x1310c3,null))[_0x2b52('0xd')](respondWithResult(_0x1310c3,null))['catch'](handleError(_0x1310c3,null));};exports['create']=function(_0x3708e5,_0x144f44){return db['Dynamics365Account'][_0x2b52('0x34')](_0x3708e5[_0x2b52('0x35')],{})['then'](respondWithResult(_0x144f44,0xc9))[_0x2b52('0x30')](handleError(_0x144f44,null));};exports[_0x2b52('0xc')]=function(_0x4c6760,_0x2c4fd6){if(_0x4c6760[_0x2b52('0x35')]['id']){delete _0x4c6760[_0x2b52('0x35')]['id'];}return db[_0x2b52('0x15')][_0x2b52('0x33')]({'where':{'id':_0x4c6760[_0x2b52('0x32')]['id']}})[_0x2b52('0xd')](handleEntityNotFound(_0x2c4fd6,null))[_0x2b52('0xd')](saveUpdates(_0x4c6760[_0x2b52('0x35')],null))['then'](respondWithResult(_0x2c4fd6,null))[_0x2b52('0x30')](handleError(_0x2c4fd6,null));};exports['destroy']=function(_0x1035a9,_0x39ac79){return db['Dynamics365Account'][_0x2b52('0x33')]({'where':{'id':_0x1035a9[_0x2b52('0x32')]['id']}})[_0x2b52('0xd')](handleEntityNotFound(_0x39ac79,null))['then'](removeEntity(_0x39ac79,null))[_0x2b52('0x30')](handleError(_0x39ac79,null));};exports[_0x2b52('0x36')]=function(_0x254f57,_0x58d932){var _0x2978a2={};var _0x332c35={};var _0x58bb99;var _0x204267;return db[_0x2b52('0x15')]['findOne']({'where':{'id':_0x254f57[_0x2b52('0x32')]['id']}})[_0x2b52('0xd')](handleEntityNotFound(_0x58d932,null))['then'](function(_0x380a11){if(_0x380a11){_0x58bb99=_0x380a11;_0x332c35[_0x2b52('0x1e')]=_['keys'](db[_0x2b52('0x37')]['rawAttributes']);_0x332c35[_0x2b52('0x1b')]=_[_0x2b52('0x1a')](_0x254f57[_0x2b52('0x1b')]);_0x332c35[_0x2b52('0x1c')]=_['intersection'](_0x332c35[_0x2b52('0x1e')],_0x332c35[_0x2b52('0x1b')]);_0x2978a2[_0x2b52('0x1f')]=_[_0x2b52('0x1d')](_0x332c35[_0x2b52('0x1e')],qs[_0x2b52('0x20')](_0x254f57[_0x2b52('0x1b')]['fields']));_0x2978a2['attributes']=_0x2978a2[_0x2b52('0x1f')][_0x2b52('0x21')]?_0x2978a2[_0x2b52('0x1f')]:_0x332c35['model'];_0x2978a2[_0x2b52('0x24')]=qs[_0x2b52('0x25')](_0x254f57[_0x2b52('0x1b')][_0x2b52('0x25')]);_0x2978a2[_0x2b52('0x26')]=qs['filters'](_[_0x2b52('0x27')](_0x254f57[_0x2b52('0x1b')],_0x332c35[_0x2b52('0x1c')]));if(_0x254f57[_0x2b52('0x1b')][_0x2b52('0x28')]){_0x2978a2[_0x2b52('0x26')]=_[_0x2b52('0x29')](_0x2978a2[_0x2b52('0x26')],{'$or':_[_0x2b52('0x14')](_0x2978a2[_0x2b52('0x1f')],function(_0x1e0b74){var _0x4f4b93={};_0x4f4b93[_0x1e0b74]={'$like':'%'+_0x254f57['query']['filter']+'%'};return _0x4f4b93;})});}_0x2978a2=_['merge']({},_0x2978a2,_0x254f57[_0x2b52('0x2b')]);return _0x58bb99[_0x2b52('0x36')](_0x2978a2);}})['then'](function(_0x2fe295){if(_0x2fe295){_0x204267=_0x2fe295[_0x2b52('0x21')];if(!_0x254f57['query'][_0x2b52('0x22')]('nolimit')){_0x2978a2[_0x2b52('0xa')]=qs[_0x2b52('0xa')](_0x254f57[_0x2b52('0x1b')][_0x2b52('0xa')]);_0x2978a2[_0x2b52('0x8')]=qs[_0x2b52('0x8')](_0x254f57[_0x2b52('0x1b')][_0x2b52('0x8')]);}return _0x58bb99[_0x2b52('0x36')](_0x2978a2);}})[_0x2b52('0xd')](function(_0x36eabc){if(_0x36eabc){return _0x36eabc?{'count':_0x204267,'rows':_0x36eabc}:null;}})[_0x2b52('0xd')](respondWithResult(_0x58d932,null))[_0x2b52('0x30')](handleError(_0x58d932,null));};exports['addConfiguration']=function(_0x1e2d33,_0x256133){if(_0x1e2d33[_0x2b52('0x35')]['id']){delete _0x1e2d33[_0x2b52('0x35')]['id'];}return db[_0x2b52('0x15')][_0x2b52('0x38')]({'where':{'id':_0x1e2d33[_0x2b52('0x32')]['id']}})[_0x2b52('0xd')](handleEntityNotFound(_0x256133,null))[_0x2b52('0xd')](function(_0x5a4bc5){if(_0x5a4bc5){_0x1e2d33[_0x2b52('0x35')][_0x2b52('0x39')]=_0x5a4bc5['id'];_0x1e2d33[_0x2b52('0x35')][_0x2b52('0x3a')]=integrations[_0x2b52('0x3b')](_0x1e2d33['body'][_0x2b52('0x3c')],_0x1e2d33[_0x2b52('0x35')][_0x2b52('0x18')]);_0x1e2d33[_0x2b52('0x35')][_0x2b52('0x3d')]=integrations[_0x2b52('0x3e')](_0x1e2d33['body'][_0x2b52('0x3c')],_0x1e2d33['body'][_0x2b52('0x18')]);return db['Dynamics365Configuration'][_0x2b52('0x34')](_0x1e2d33[_0x2b52('0x35')],{'include':[{'model':db[_0x2b52('0x3f')],'as':_0x2b52('0x3a')},{'model':db[_0x2b52('0x3f')],'as':_0x2b52('0x3d')}]});}return null;})[_0x2b52('0xd')](respondWithResult(_0x256133,null))[_0x2b52('0x30')](handleError(_0x256133,null));};function sanitizeRemoteUri(_0x3e65e6){var _0x43a450=_0x3e65e6[_0x2b52('0x40')](-0x1);if(_0x43a450==='/')return _0x3e65e6['substring'](0x0,_0x3e65e6['lastIndexOf'](_0x43a450));return _0x3e65e6;}function getWebApiUrl(_0x3b9c02){return util['format']('%s/api/data/v9.0/',_0x3b9c02);}exports['getFields']=function(_0x210c20,_0x4d7dfa){var _0x4ce3a9=_0x210c20[_0x2b52('0x1b')][_0x2b52('0x41')];var _0x3fcbe5=_0x4ce3a9===_0x2b52('0x42')?_0x2b52('0x43'):_0x2b52('0x44');var _0x15edb5='';var _0x9f9a81='';var _0x50cb0a='';var _0x300a18='';var _0x2d877b='';var _0x46c8a9='';var _0x1ce236='';var _0x4e074e='';var _0x10fc7b=[_0x2b52('0x45'),_0x2b52('0x46'),_0x2b52('0x47'),_0x2b52('0x48'),_0x2b52('0x49'),_0x2b52('0x4a'),'phonenumber','regardingobjectid',_0x2b52('0x4b'),_0x2b52('0x4c')];var _0x4a18e1=[_0x2b52('0x4d'),'accountidyominame',_0x2b52('0x4e'),'billedserviceunits','contactidname','contactidyominame','contractdetailidname',_0x2b52('0x4f'),_0x2b52('0x50'),_0x2b52('0x51'),_0x2b52('0x52'),_0x2b52('0x53'),_0x2b52('0x54'),_0x2b52('0x55'),_0x2b52('0x56'),'customeridname',_0x2b52('0x57'),_0x2b52('0x58'),_0x2b52('0x59'),_0x2b52('0x5a'),_0x2b52('0x5b'),_0x2b52('0x5c'),_0x2b52('0x5d'),_0x2b52('0x5e'),_0x2b52('0x5f'),_0x2b52('0x60'),_0x2b52('0x61'),_0x2b52('0x62'),_0x2b52('0x63'),'lastonholdtime',_0x2b52('0x64'),_0x2b52('0x65'),_0x2b52('0x66'),_0x2b52('0x67'),'modifiedbyyominame',_0x2b52('0x68'),_0x2b52('0x69'),_0x2b52('0x6a'),_0x2b52('0x6b'),_0x2b52('0x6c'),_0x2b52('0x6d'),_0x2b52('0x6e'),_0x2b52('0x6f'),_0x2b52('0x70'),_0x2b52('0x71'),_0x2b52('0x72'),_0x2b52('0x73'),_0x2b52('0x74'),'primarycontactidyominame','prioritycodename',_0x2b52('0x75'),'productserialnumber',_0x2b52('0x76'),_0x2b52('0x77'),_0x2b52('0x78'),_0x2b52('0x79'),_0x2b52('0x7a'),_0x2b52('0x7b'),_0x2b52('0x7c'),_0x2b52('0x7d'),'socialprofileidname',_0x2b52('0x7e'),_0x2b52('0x7f'),_0x2b52('0x80'),_0x2b52('0x81'),_0x2b52('0x82'),'transactioncurrencyidname',_0x2b52('0x83'),'utcconversiontimezonecode',_0x2b52('0x84')];var _0x4a4bcb=_0x10fc7b['concat'](_0x4a18e1);return db[_0x2b52('0x15')][_0x2b52('0x38')]({'where':{'id':_0x210c20['params']['id']},'attributes':['id',_0x2b52('0x85'),_0x2b52('0x86'),_0x2b52('0x87'),'tenantId',_0x2b52('0x88'),_0x2b52('0x89'),'modernAuthentication'],'include':[{'model':db[_0x2b52('0x8a')],'as':_0x2b52('0x8a'),'attributes':['id',_0x2b52('0x8b'),_0x2b52('0x8c')]}]})[_0x2b52('0xd')](handleEntityNotFound(_0x4d7dfa,null))[_0x2b52('0xd')](function(_0x2c438a){if(_0x2c438a){if(_0x2c438a[_0x2b52('0x8d')]){_0x2c438a[_0x2b52('0x8e')]=_0x2c438a[_0x2b52('0x8a')]['data5'];_0x4e074e=sanitizeRemoteUri(_0x2c438a[_0x2b52('0x8a')]['data7']);_0x1ce236=getWebApiUrl(_0x4e074e);return _0x2c438a;}_0x4e074e=sanitizeRemoteUri(_0x2c438a[_0x2b52('0x87')]);_0x1ce236=getWebApiUrl(_0x4e074e);var _0x25bf81={'method':_0x2b52('0x8f'),'uri':_0x2b52('0x90')+_0x2c438a['tenantId']+_0x2b52('0x91'),'form':{'client_id':_0x2c438a[_0x2b52('0x88')],'resource':_0x4e074e,'username':_0x2c438a[_0x2b52('0x85')],'password':_0x2c438a[_0x2b52('0x86')],'grant_type':_0x2b52('0x86'),'client_secret':_0x2c438a[_0x2b52('0x89')]},'json':!![]};return rp(_0x25bf81);}})[_0x2b52('0xd')](function(_0x213be9){_0x46c8a9=_0x213be9[_0x2b52('0x8e')];var _0x2a8641={'method':'GET','uri':encodeURI(_0x1ce236+_0x2b52('0x92')+_0x3fcbe5+'\x27'),'headers':{'Authorization':_0x2b52('0x93')+_0x46c8a9,'If-None-Match':null,'OData-Version':_0x2b52('0x94')},'json':!![]};return rp(_0x2a8641);})[_0x2b52('0xd')](function(_0xa8605f){var _0x4edb65=_0xa8605f[_0x2b52('0x95')][0x0];var _0x587758=_0x4edb65[_0x2b52('0x96')];var _0x19146d={'method':_0x2b52('0x97'),'uri':_0x1ce236+'EntityDefinitions('+_0x587758+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x2b52('0x93')+_0x46c8a9,'If-None-Match':null,'OData-Version':_0x2b52('0x94')},'json':!![]};return rp(_0x19146d);})['then'](function(_0x16ea82){_0x15edb5=_0x16ea82;_0x9f9a81=_0x15edb5[_0x2b52('0x98')];_0x9f9a81=_[_0x2b52('0x99')](_0x9f9a81,function(_0x538cd2){return!_0x4a4bcb['includes'](_0x538cd2[_0x2b52('0x9a')]);});var _0x2b1461=[];var _0x192a2b=[];_0x9f9a81[_0x2b52('0x9b')](function(_0x52f773){if(_0x52f773[_0x2b52('0x9c')]){var _0x124ec2=_0x52f773['@odata.type']['substring'](_0x52f773[_0x2b52('0x9c')][_0x2b52('0x9d')]('.')+0x1);if(_0x124ec2==='PicklistAttributeMetadata'){_0x2b1461[_0x2b52('0x9e')](getSelectList(_0x1ce236,_0x4ce3a9,_0x192a2b,_0x15edb5[_0x2b52('0x96')],_0x52f773[_0x2b52('0x96')],_0x46c8a9));}}});return Promise[_0x2b52('0x9f')](_0x2b1461);})['then'](function(_0x50e611){_0x50cb0a=_0x50e611[0x0];var _0x1af32a=[];var _0x818664=[];_0x9f9a81[_0x2b52('0x9b')](function(_0x2a2808){if(!_[_0x2b52('0xa0')](_0x2a2808[_0x2b52('0x9c')])){var _0x6b974f=_0x2a2808[_0x2b52('0x9c')][_0x2b52('0xa1')](_0x2a2808[_0x2b52('0x9c')]['lastIndexOf']('.')+0x1);if(_0x6b974f===_0x2b52('0xa2')){_0x1af32a[_0x2b52('0x9e')](getBooleanList(_0x1ce236,_0x4ce3a9,_0x818664,_0x15edb5['MetadataId'],_0x2a2808[_0x2b52('0x96')],_0x46c8a9));}}});return Promise[_0x2b52('0x9f')](_0x1af32a);})['then'](function(_0x912a20){_0x300a18=_0x912a20[0x0];var _0x983d=[];var _0x380418=[];_0x9f9a81[_0x2b52('0x9b')](function(_0x16147d){if(_0x16147d['@odata.type']){var _0x560f87=_0x16147d['@odata.type'][_0x2b52('0xa1')](_0x16147d[_0x2b52('0x9c')][_0x2b52('0x9d')]('.')+0x1);if(_0x560f87===_0x2b52('0xa3')||_0x560f87===_0x2b52('0xa4')||_0x560f87===_0x2b52('0xa5')||_0x560f87===_0x2b52('0xa6')||_0x560f87===_0x2b52('0xa7')||_0x560f87===_0x2b52('0xa8')||_0x560f87==='StatusAttributeMetadata'||_0x560f87==='EntityNameAttributeMetadata'||_0x560f87==='StateAttributeMetadata'||_0x560f87===_0x2b52('0xa9')){_0x983d[_0x2b52('0x9e')](getInputList(_0x1ce236,_0x4ce3a9,_0x560f87,_0x380418,_0x15edb5[_0x2b52('0x96')],_0x16147d[_0x2b52('0x96')],_0x46c8a9));}}});return Promise[_0x2b52('0x9f')](_0x983d);})['then'](function(_0x18bcf7){_0x2d877b=_0x18bcf7[0x0];var _0x190c17=_0x50cb0a[_0x2b52('0xaa')](_0x300a18)['concat'](_0x2d877b);var _0x51844c={'count':_0x190c17[_0x2b52('0x21')],'rows':_0x190c17};return _0x51844c;})[_0x2b52('0xd')](respondWithResult(_0x4d7dfa,null))[_0x2b52('0x30')](function(_0x292076){var _0x2494db=_0x210c20[_0x2b52('0x1b')][_0x2b52('0xab')]?0x1f4:_0x292076[_0x2b52('0xac')]||0x1f4;logger[_0x2b52('0xad')](_0x292076['stack']);delete _0x292076[_0x2b52('0x11')];if(_0x2494db===0x191){_0x2494db=0x190;}_0x4d7dfa[_0x2b52('0x6')](_0x2494db)['send'](_0x210c20[_0x2b52('0x1b')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x292076[_0x2b52('0xac')]}:_0x292076);});};function getSelectList(_0x53600a,_0x4347d4,_0x3dc795,_0x3c64a3,_0x50a94a,_0x33e623){var _0x184796={'method':_0x2b52('0x97'),'uri':_0x53600a+_0x2b52('0xae')+_0x3c64a3+_0x2b52('0xaf')+_0x50a94a+_0x2b52('0xb0')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':'Bearer\x20'+_0x33e623,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x184796)[_0x2b52('0xd')](function(_0x67e6cf){var _0x57af52=[];var _0x4aa911=_0x67e6cf[_0x2b52('0xb1')]['Options'];_0x4aa911[_0x2b52('0x9b')](function(_0x2773f0){_0x57af52[_0x2b52('0x9e')]({'name':_0x2773f0[_0x2b52('0xb2')]['UserLocalizedLabel']['Label'],'value':String(_0x2773f0[_0x2b52('0xb3')])});});var _0x20ea69={'id':_0x4347d4+'_'+_0x67e6cf[_0x2b52('0x9a')],'name':_0x67e6cf[_0x2b52('0xb4')][_0x2b52('0xb5')][_0x2b52('0xb2')],'custom':![],'options':_0x57af52};_0x3dc795[_0x2b52('0x9e')](_0x20ea69);return _0x3dc795;});}function getBooleanList(_0x4fc84e,_0x184519,_0x100be5,_0x32c915,_0x5ead9d,_0x583807){var _0x3d961e={'method':_0x2b52('0x97'),'uri':_0x4fc84e+_0x2b52('0xae')+_0x32c915+')/Attributes('+_0x5ead9d+_0x2b52('0xb6'),'headers':{'Authorization':_0x2b52('0x93')+_0x583807,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3d961e)[_0x2b52('0xd')](function(_0xc2fcf8){var _0x2e0f77=[];_0x2e0f77['push']({'name':_0xc2fcf8[_0x2b52('0xb1')][_0x2b52('0xb7')][_0x2b52('0xb2')][_0x2b52('0xb5')]['Label'],'value':_0x2b52('0xb8')},{'name':_0xc2fcf8[_0x2b52('0xb1')][_0x2b52('0xb9')][_0x2b52('0xb2')][_0x2b52('0xb5')][_0x2b52('0xb2')],'value':_0x2b52('0xba')});var _0x2e9c0c={'id':_0x184519+'_'+_0xc2fcf8[_0x2b52('0x9a')],'name':_0xc2fcf8[_0x2b52('0xb4')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x2e0f77};_0x100be5['push'](_0x2e9c0c);return _0x100be5;});}function getInputList(_0x2a30c8,_0x12eb0e,_0x6fdd46,_0x3c1ad0,_0x4e5afc,_0x5bd14d,_0x2455d0){var _0xb55f1f={'method':_0x2b52('0x97'),'uri':_0x2a30c8+_0x2b52('0xae')+_0x4e5afc+_0x2b52('0xaf')+_0x5bd14d+_0x2b52('0xbb')+_0x6fdd46+_0x2b52('0xbc'),'headers':{'Authorization':_0x2b52('0x93')+_0x2455d0,'If-None-Match':null,'OData-Version':_0x2b52('0x94')},'json':!![]};return rp(_0xb55f1f)[_0x2b52('0xd')](function(_0x90167d){var _0x5ba2ff={'id':_0x12eb0e+'_'+_0x90167d[_0x2b52('0x9a')],'name':_0x90167d[_0x2b52('0xb4')][_0x2b52('0xb5')]?_0x90167d[_0x2b52('0xb4')][_0x2b52('0xb5')][_0x2b52('0xb2')]:_0x90167d[_0x2b52('0x9a')],'custom':![],'options':[]};_0x3c1ad0['push'](_0x5ba2ff);return _0x3c1ad0;});}
\ No newline at end of file
+var _0xb2e7=['owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','concat','username','password','remoteUri','tenantId','clientId','CloudProvider','data5','data7','modernAuthentication','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(','Attributes','includes','LogicalName','@odata.type','push','all','isNil','substring','lastIndexOf','BooleanAttributeMetadata','forEach','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','4.0','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','../../config/logger','api','../../components/integrations/configuration','json','limit','undefined','count','offset','status','set','Content-Range','then','destroy','sendStatus','error','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','create','update','body','find','getConfigurations','findOne','Dynamics365Configuration','sort','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','format','ticketType','incident','Incident','PhoneCall','title','description','customerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','overriddencreatedon'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xb2e7,0x111));var _0x7b2e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb2e7[_0x4b369d];return _0x571a98;};'use strict';var rp=require(_0x7b2e('0x0'));var util=require(_0x7b2e('0x1'));var _=require(_0x7b2e('0x2'));var qs=require(_0x7b2e('0x3'));var logger=require(_0x7b2e('0x4'))(_0x7b2e('0x5'));var db=require('../../mysqldb')['db'];var integrations=require(_0x7b2e('0x6'));function respondWithResult(_0x8a62fe,_0x256569){_0x256569=_0x256569||0xc8;return function(_0x2a008e){if(_0x2a008e){return _0x8a62fe['status'](_0x256569)[_0x7b2e('0x7')](_0x2a008e);}};}function respondWithFilteredResult(_0x3e5014,_0x141496){return function(_0x560a3e){if(_0x560a3e){var _0x3e4785=typeof _0x141496['offset']==='undefined'&&typeof _0x141496[_0x7b2e('0x8')]===_0x7b2e('0x9');var _0x80ffce=_0x560a3e[_0x7b2e('0xa')];var _0xd0dbbe=_0x3e4785?0x0:_0x141496[_0x7b2e('0xb')];var _0x1c760d=_0x3e4785?_0x560a3e[_0x7b2e('0xa')]:_0x141496[_0x7b2e('0xb')]+_0x141496['limit'];var _0x447dea;if(_0x1c760d>=_0x80ffce){_0x1c760d=_0x80ffce;_0x447dea=0xc8;}else{_0x447dea=0xce;}_0x3e5014[_0x7b2e('0xc')](_0x447dea);return _0x3e5014[_0x7b2e('0xd')](_0x7b2e('0xe'),_0xd0dbbe+'-'+_0x1c760d+'/'+_0x80ffce)[_0x7b2e('0x7')](_0x560a3e);}return null;};}function saveUpdates(_0x29075d){return function(_0xe79216){if(_0xe79216){return _0xe79216['update'](_0x29075d)[_0x7b2e('0xf')](function(_0x214e57){return _0x214e57;});}return null;};}function removeEntity(_0x1c1286){return function(_0x3ceef2){if(_0x3ceef2){return _0x3ceef2[_0x7b2e('0x10')]()[_0x7b2e('0xf')](function(){_0x1c1286[_0x7b2e('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53a7a1){return function(_0x4ee366){if(!_0x4ee366){_0x53a7a1[_0x7b2e('0x11')](0x194);}return _0x4ee366;};}function handleError(_0x340384,_0xaafc83){_0xaafc83=_0xaafc83||0x1f4;return function(_0x4791e5){logger[_0x7b2e('0x12')](_0x4791e5[_0x7b2e('0x13')]);if(_0x4791e5[_0x7b2e('0x14')]){delete _0x4791e5[_0x7b2e('0x14')];}_0x340384[_0x7b2e('0xc')](_0xaafc83)[_0x7b2e('0x15')](_0x4791e5);};}exports[_0x7b2e('0x16')]=function(_0x46c2fd,_0x362e47){var _0x57bdd5={},_0x57abcb={},_0x118292={'count':0x0,'rows':[]};var _0x1bf0b7=_['map'](db[_0x7b2e('0x17')][_0x7b2e('0x18')],function(_0x1670f4){return{'name':_0x1670f4[_0x7b2e('0x19')],'type':_0x1670f4['type'][_0x7b2e('0x1a')]};});_0x57abcb[_0x7b2e('0x1b')]=_[_0x7b2e('0x1c')](_0x1bf0b7,_0x7b2e('0x14'));_0x57abcb[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0x46c2fd[_0x7b2e('0x1d')]);_0x57abcb[_0x7b2e('0x1f')]=_['intersection'](_0x57abcb[_0x7b2e('0x1b')],_0x57abcb[_0x7b2e('0x1d')]);_0x57bdd5[_0x7b2e('0x20')]=_[_0x7b2e('0x21')](_0x57abcb[_0x7b2e('0x1b')],qs['fields'](_0x46c2fd['query'][_0x7b2e('0x22')]));_0x57bdd5[_0x7b2e('0x20')]=_0x57bdd5[_0x7b2e('0x20')]['length']?_0x57bdd5[_0x7b2e('0x20')]:_0x57abcb[_0x7b2e('0x1b')];if(!_0x46c2fd['query'][_0x7b2e('0x23')]('nolimit')){_0x57bdd5['limit']=qs['limit'](_0x46c2fd['query']['limit']);_0x57bdd5['offset']=qs[_0x7b2e('0xb')](_0x46c2fd['query'][_0x7b2e('0xb')]);}_0x57bdd5[_0x7b2e('0x24')]=qs['sort'](_0x46c2fd['query']['sort']);_0x57bdd5[_0x7b2e('0x25')]=qs[_0x7b2e('0x1f')](_[_0x7b2e('0x26')](_0x46c2fd['query'],_0x57abcb[_0x7b2e('0x1f')]),_0x1bf0b7);if(_0x46c2fd['query'][_0x7b2e('0x27')]){_0x57bdd5[_0x7b2e('0x25')]=_[_0x7b2e('0x28')](_0x57bdd5[_0x7b2e('0x25')],{'$or':_['map'](_0x1bf0b7,function(_0x4fc11a){if(_0x4fc11a[_0x7b2e('0x29')]!==_0x7b2e('0x2a')){var _0x1f879a={};_0x1f879a[_0x4fc11a[_0x7b2e('0x14')]]={'$like':'%'+_0x46c2fd[_0x7b2e('0x1d')][_0x7b2e('0x27')]+'%'};return _0x1f879a;}})});}_0x57bdd5=_[_0x7b2e('0x28')]({},_0x57bdd5,_0x46c2fd['options']);var _0x34b472={'where':_0x57bdd5[_0x7b2e('0x25')]};return db['Dynamics365Account'][_0x7b2e('0xa')](_0x34b472)[_0x7b2e('0xf')](function(_0x2eae95){_0x118292[_0x7b2e('0xa')]=_0x2eae95;if(_0x46c2fd[_0x7b2e('0x1d')][_0x7b2e('0x2b')]){_0x57bdd5['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x7b2e('0x2c')](_0x57bdd5);})[_0x7b2e('0xf')](function(_0x225bee){_0x118292[_0x7b2e('0x2d')]=_0x225bee;return _0x118292;})[_0x7b2e('0xf')](respondWithFilteredResult(_0x362e47,_0x57bdd5))[_0x7b2e('0x2e')](handleError(_0x362e47,null));};exports[_0x7b2e('0x2f')]=function(_0xdf99ef,_0x1912e6){var _0x4988e6={'raw':![],'where':{'id':_0xdf99ef[_0x7b2e('0x30')]['id']}},_0x1c28c2={};_0x1c28c2[_0x7b2e('0x1b')]=_[_0x7b2e('0x1e')](db[_0x7b2e('0x17')][_0x7b2e('0x18')]);_0x1c28c2[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0xdf99ef[_0x7b2e('0x1d')]);_0x1c28c2[_0x7b2e('0x1f')]=_[_0x7b2e('0x21')](_0x1c28c2[_0x7b2e('0x1b')],_0x1c28c2[_0x7b2e('0x1d')]);_0x4988e6['attributes']=_['intersection'](_0x1c28c2[_0x7b2e('0x1b')],qs[_0x7b2e('0x22')](_0xdf99ef[_0x7b2e('0x1d')]['fields']));_0x4988e6[_0x7b2e('0x20')]=_0x4988e6[_0x7b2e('0x20')][_0x7b2e('0x31')]?_0x4988e6[_0x7b2e('0x20')]:_0x1c28c2[_0x7b2e('0x1b')];if(_0xdf99ef[_0x7b2e('0x1d')]['includeAll']){_0x4988e6[_0x7b2e('0x32')]=[{'all':!![]}];}_0x4988e6=_[_0x7b2e('0x28')]({},_0x4988e6,_0xdf99ef[_0x7b2e('0x33')]);return db[_0x7b2e('0x17')]['find'](_0x4988e6)[_0x7b2e('0xf')](handleEntityNotFound(_0x1912e6,null))['then'](respondWithResult(_0x1912e6,null))[_0x7b2e('0x2e')](handleError(_0x1912e6,null));};exports[_0x7b2e('0x34')]=function(_0x59f564,_0x180227){return db[_0x7b2e('0x17')][_0x7b2e('0x34')](_0x59f564['body'],{})[_0x7b2e('0xf')](respondWithResult(_0x180227,0xc9))[_0x7b2e('0x2e')](handleError(_0x180227,null));};exports[_0x7b2e('0x35')]=function(_0x32f7d9,_0xdb84f1){if(_0x32f7d9[_0x7b2e('0x36')]['id']){delete _0x32f7d9['body']['id'];}return db[_0x7b2e('0x17')]['find']({'where':{'id':_0x32f7d9['params']['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0xdb84f1,null))['then'](saveUpdates(_0x32f7d9['body'],null))[_0x7b2e('0xf')](respondWithResult(_0xdb84f1,null))[_0x7b2e('0x2e')](handleError(_0xdb84f1,null));};exports['destroy']=function(_0x242230,_0x30b880){return db['Dynamics365Account'][_0x7b2e('0x37')]({'where':{'id':_0x242230[_0x7b2e('0x30')]['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0x30b880,null))[_0x7b2e('0xf')](removeEntity(_0x30b880,null))[_0x7b2e('0x2e')](handleError(_0x30b880,null));};exports[_0x7b2e('0x38')]=function(_0x4bcf13,_0x15fdb4){var _0x165c7f={};var _0x5bfec7={};var _0x13120a;var _0x2ccb78;return db[_0x7b2e('0x17')][_0x7b2e('0x39')]({'where':{'id':_0x4bcf13[_0x7b2e('0x30')]['id']}})['then'](handleEntityNotFound(_0x15fdb4,null))['then'](function(_0xa79996){if(_0xa79996){_0x13120a=_0xa79996;_0x5bfec7['model']=_[_0x7b2e('0x1e')](db[_0x7b2e('0x3a')][_0x7b2e('0x18')]);_0x5bfec7[_0x7b2e('0x1d')]=_[_0x7b2e('0x1e')](_0x4bcf13[_0x7b2e('0x1d')]);_0x5bfec7['filters']=_[_0x7b2e('0x21')](_0x5bfec7[_0x7b2e('0x1b')],_0x5bfec7[_0x7b2e('0x1d')]);_0x165c7f[_0x7b2e('0x20')]=_[_0x7b2e('0x21')](_0x5bfec7['model'],qs[_0x7b2e('0x22')](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x22')]));_0x165c7f['attributes']=_0x165c7f[_0x7b2e('0x20')][_0x7b2e('0x31')]?_0x165c7f[_0x7b2e('0x20')]:_0x5bfec7[_0x7b2e('0x1b')];_0x165c7f[_0x7b2e('0x24')]=qs[_0x7b2e('0x3b')](_0x4bcf13['query'][_0x7b2e('0x3b')]);_0x165c7f['where']=qs[_0x7b2e('0x1f')](_[_0x7b2e('0x26')](_0x4bcf13['query'],_0x5bfec7['filters']));if(_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x27')]){_0x165c7f[_0x7b2e('0x25')]=_[_0x7b2e('0x28')](_0x165c7f['where'],{'$or':_[_0x7b2e('0x1c')](_0x165c7f['attributes'],function(_0x3a3586){var _0x3e4ef0={};_0x3e4ef0[_0x3a3586]={'$like':'%'+_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x27')]+'%'};return _0x3e4ef0;})});}_0x165c7f=_[_0x7b2e('0x28')]({},_0x165c7f,_0x4bcf13[_0x7b2e('0x33')]);return _0x13120a['getConfigurations'](_0x165c7f);}})[_0x7b2e('0xf')](function(_0x2a6b7a){if(_0x2a6b7a){_0x2ccb78=_0x2a6b7a[_0x7b2e('0x31')];if(!_0x4bcf13[_0x7b2e('0x1d')]['hasOwnProperty'](_0x7b2e('0x3c'))){_0x165c7f[_0x7b2e('0x8')]=qs['limit'](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0x8')]);_0x165c7f['offset']=qs[_0x7b2e('0xb')](_0x4bcf13[_0x7b2e('0x1d')][_0x7b2e('0xb')]);}return _0x13120a[_0x7b2e('0x38')](_0x165c7f);}})[_0x7b2e('0xf')](function(_0x441524){if(_0x441524){return _0x441524?{'count':_0x2ccb78,'rows':_0x441524}:null;}})[_0x7b2e('0xf')](respondWithResult(_0x15fdb4,null))[_0x7b2e('0x2e')](handleError(_0x15fdb4,null));};exports['addConfiguration']=function(_0x37610e,_0x5e6fff){if(_0x37610e[_0x7b2e('0x36')]['id']){delete _0x37610e[_0x7b2e('0x36')]['id'];}return db[_0x7b2e('0x17')][_0x7b2e('0x39')]({'where':{'id':_0x37610e['params']['id']}})[_0x7b2e('0xf')](handleEntityNotFound(_0x5e6fff,null))[_0x7b2e('0xf')](function(_0x33e841){if(_0x33e841){_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x3d')]=_0x33e841['id'];_0x37610e['body'][_0x7b2e('0x3e')]=integrations[_0x7b2e('0x3f')](_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x40')],_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x29')]);_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x41')]=integrations[_0x7b2e('0x42')](_0x37610e[_0x7b2e('0x36')]['channel'],_0x37610e[_0x7b2e('0x36')][_0x7b2e('0x29')]);return db['Dynamics365Configuration'][_0x7b2e('0x34')](_0x37610e[_0x7b2e('0x36')],{'include':[{'model':db[_0x7b2e('0x43')],'as':_0x7b2e('0x3e')},{'model':db[_0x7b2e('0x43')],'as':_0x7b2e('0x41')}]});}return null;})['then'](respondWithResult(_0x5e6fff,null))[_0x7b2e('0x2e')](handleError(_0x5e6fff,null));};function sanitizeRemoteUri(_0x31ff0a){var _0x767894=_0x31ff0a['slice'](-0x1);if(_0x767894==='/')return _0x31ff0a['substring'](0x0,_0x31ff0a['lastIndexOf'](_0x767894));return _0x31ff0a;}function getWebApiUrl(_0x3a2e77){return util[_0x7b2e('0x44')]('%s/api/data/v9.0/',_0x3a2e77);}exports['getFields']=function(_0x510b04,_0x2bb221){var _0x4f356b=_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0x45')];var _0x1ec024=_0x4f356b===_0x7b2e('0x46')?_0x7b2e('0x47'):_0x7b2e('0x48');var _0x10c650='';var _0x581b0d='';var _0x1d6c8f='';var _0x4fa658='';var _0x1129ad='';var _0x3d8840='';var _0x303146='';var _0x1ff5e7='';var _0x37b022=[_0x7b2e('0x49'),_0x7b2e('0x4a'),_0x7b2e('0x4b'),'ownerid',_0x7b2e('0x4c'),_0x7b2e('0x4d'),'phonenumber',_0x7b2e('0x4e'),_0x7b2e('0x4f'),_0x7b2e('0x50')];var _0x11f00d=[_0x7b2e('0x51'),_0x7b2e('0x52'),_0x7b2e('0x53'),_0x7b2e('0x54'),_0x7b2e('0x55'),_0x7b2e('0x56'),_0x7b2e('0x57'),_0x7b2e('0x58'),_0x7b2e('0x59'),_0x7b2e('0x5a'),_0x7b2e('0x5b'),'createdbyyominame',_0x7b2e('0x5c'),_0x7b2e('0x5d'),'createdonbehalfbyyominame',_0x7b2e('0x5e'),_0x7b2e('0x5f'),_0x7b2e('0x60'),_0x7b2e('0x61'),'entitlementidname',_0x7b2e('0x62'),_0x7b2e('0x63'),'escalatedon','exchangerate',_0x7b2e('0x64'),_0x7b2e('0x65'),_0x7b2e('0x66'),_0x7b2e('0x67'),_0x7b2e('0x68'),_0x7b2e('0x69'),_0x7b2e('0x6a'),_0x7b2e('0x6b'),'modifiedbyexternalpartyyominame',_0x7b2e('0x6c'),'modifiedbyyominame',_0x7b2e('0x6d'),_0x7b2e('0x6e'),_0x7b2e('0x6f'),_0x7b2e('0x70'),_0x7b2e('0x71'),'numberofchildincidents','onholdtime',_0x7b2e('0x72'),_0x7b2e('0x73'),_0x7b2e('0x74'),_0x7b2e('0x75'),_0x7b2e('0x76'),_0x7b2e('0x77'),_0x7b2e('0x78'),_0x7b2e('0x79'),_0x7b2e('0x7a'),_0x7b2e('0x7b'),_0x7b2e('0x7c'),_0x7b2e('0x7d'),_0x7b2e('0x7e'),'responsiblecontactidname',_0x7b2e('0x7f'),_0x7b2e('0x80'),'slainvokedidname',_0x7b2e('0x81'),_0x7b2e('0x82'),'statecode',_0x7b2e('0x83'),_0x7b2e('0x84'),_0x7b2e('0x85'),_0x7b2e('0x86'),_0x7b2e('0x87'),_0x7b2e('0x88'),'utcconversiontimezonecode','versionnumber'];var _0x338853=_0x37b022[_0x7b2e('0x89')](_0x11f00d);return db['Dynamics365Account'][_0x7b2e('0x39')]({'where':{'id':_0x510b04[_0x7b2e('0x30')]['id']},'attributes':['id',_0x7b2e('0x8a'),_0x7b2e('0x8b'),_0x7b2e('0x8c'),_0x7b2e('0x8d'),_0x7b2e('0x8e'),'clientSecret','modernAuthentication'],'include':[{'model':db[_0x7b2e('0x8f')],'as':'CloudProvider','attributes':['id',_0x7b2e('0x90'),_0x7b2e('0x91')]}]})[_0x7b2e('0xf')](handleEntityNotFound(_0x2bb221,null))[_0x7b2e('0xf')](function(_0x3b5ebd){if(_0x3b5ebd){if(_0x3b5ebd[_0x7b2e('0x92')]){_0x3b5ebd['access_token']=_0x3b5ebd[_0x7b2e('0x8f')][_0x7b2e('0x90')];_0x1ff5e7=sanitizeRemoteUri(_0x3b5ebd[_0x7b2e('0x8f')]['data7']);_0x303146=getWebApiUrl(_0x1ff5e7);return _0x3b5ebd;}_0x1ff5e7=sanitizeRemoteUri(_0x3b5ebd['remoteUri']);_0x303146=getWebApiUrl(_0x1ff5e7);var _0x269e72={'method':_0x7b2e('0x93'),'uri':_0x7b2e('0x94')+_0x3b5ebd['tenantId']+_0x7b2e('0x95'),'form':{'client_id':_0x3b5ebd[_0x7b2e('0x8e')],'resource':_0x1ff5e7,'username':_0x3b5ebd['username'],'password':_0x3b5ebd[_0x7b2e('0x8b')],'grant_type':_0x7b2e('0x8b'),'client_secret':_0x3b5ebd['clientSecret']},'json':!![]};return rp(_0x269e72);}})['then'](function(_0x53046c){_0x3d8840=_0x53046c[_0x7b2e('0x96')];var _0x5a0e73={'method':_0x7b2e('0x97'),'uri':encodeURI(_0x303146+_0x7b2e('0x98')+_0x1ec024+'\x27'),'headers':{'Authorization':_0x7b2e('0x99')+_0x3d8840,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5a0e73);})['then'](function(_0x28c66b){var _0x32746d=_0x28c66b[_0x7b2e('0x9a')][0x0];var _0x5e9180=_0x32746d[_0x7b2e('0x9b')];var _0xefa53a={'method':'GET','uri':_0x303146+_0x7b2e('0x9c')+_0x5e9180+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x7b2e('0x99')+_0x3d8840,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xefa53a);})[_0x7b2e('0xf')](function(_0x35231f){_0x10c650=_0x35231f;_0x581b0d=_0x10c650[_0x7b2e('0x9d')];_0x581b0d=_['remove'](_0x581b0d,function(_0x5dc4cc){return!_0x338853[_0x7b2e('0x9e')](_0x5dc4cc[_0x7b2e('0x9f')]);});var _0x354a39=[];var _0x23dda1=[];_0x581b0d['forEach'](function(_0x16156a){if(_0x16156a[_0x7b2e('0xa0')]){var _0x49a90f=_0x16156a[_0x7b2e('0xa0')]['substring'](_0x16156a[_0x7b2e('0xa0')]['lastIndexOf']('.')+0x1);if(_0x49a90f==='PicklistAttributeMetadata'){_0x354a39[_0x7b2e('0xa1')](getSelectList(_0x303146,_0x4f356b,_0x23dda1,_0x10c650[_0x7b2e('0x9b')],_0x16156a[_0x7b2e('0x9b')],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x354a39);})[_0x7b2e('0xf')](function(_0x218f64){_0x1d6c8f=_0x218f64[0x0];var _0x5441f6=[];var _0x43f5f6=[];_0x581b0d['forEach'](function(_0x10ac46){if(!_[_0x7b2e('0xa3')](_0x10ac46[_0x7b2e('0xa0')])){var _0x39a84a=_0x10ac46[_0x7b2e('0xa0')][_0x7b2e('0xa4')](_0x10ac46['@odata.type'][_0x7b2e('0xa5')]('.')+0x1);if(_0x39a84a===_0x7b2e('0xa6')){_0x5441f6[_0x7b2e('0xa1')](getBooleanList(_0x303146,_0x4f356b,_0x43f5f6,_0x10c650[_0x7b2e('0x9b')],_0x10ac46[_0x7b2e('0x9b')],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x5441f6);})[_0x7b2e('0xf')](function(_0x21b424){_0x4fa658=_0x21b424[0x0];var _0x4a8356=[];var _0x43bb5e=[];_0x581b0d[_0x7b2e('0xa7')](function(_0x4ff789){if(_0x4ff789[_0x7b2e('0xa0')]){var _0xbb0f70=_0x4ff789[_0x7b2e('0xa0')][_0x7b2e('0xa4')](_0x4ff789['@odata.type'][_0x7b2e('0xa5')]('.')+0x1);if(_0xbb0f70===_0x7b2e('0xa8')||_0xbb0f70===_0x7b2e('0xa9')||_0xbb0f70===_0x7b2e('0xaa')||_0xbb0f70===_0x7b2e('0xab')||_0xbb0f70===_0x7b2e('0xac')||_0xbb0f70===_0x7b2e('0xad')||_0xbb0f70==='StatusAttributeMetadata'||_0xbb0f70==='EntityNameAttributeMetadata'||_0xbb0f70===_0x7b2e('0xae')||_0xbb0f70===_0x7b2e('0xaf')){_0x4a8356[_0x7b2e('0xa1')](getInputList(_0x303146,_0x4f356b,_0xbb0f70,_0x43bb5e,_0x10c650[_0x7b2e('0x9b')],_0x4ff789['MetadataId'],_0x3d8840));}}});return Promise[_0x7b2e('0xa2')](_0x4a8356);})['then'](function(_0x50d35b){_0x1129ad=_0x50d35b[0x0];var _0x3a71ee=_0x1d6c8f['concat'](_0x4fa658)[_0x7b2e('0x89')](_0x1129ad);var _0x4b190a={'count':_0x3a71ee['length'],'rows':_0x3a71ee};return _0x4b190a;})[_0x7b2e('0xf')](respondWithResult(_0x2bb221,null))[_0x7b2e('0x2e')](function(_0x3b4b9b){var _0x583773=_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0xb0')]?0x1f4:_0x3b4b9b[_0x7b2e('0xb1')]||0x1f4;logger[_0x7b2e('0x12')](_0x3b4b9b[_0x7b2e('0x13')]);delete _0x3b4b9b[_0x7b2e('0x14')];if(_0x583773===0x191){_0x583773=0x190;}_0x2bb221['status'](_0x583773)['send'](_0x510b04[_0x7b2e('0x1d')][_0x7b2e('0xb0')]?{'message':_0x7b2e('0xb2'),'statusCode':_0x3b4b9b[_0x7b2e('0xb1')]}:_0x3b4b9b);});};function getSelectList(_0x59c270,_0x5ce2eb,_0xa248cb,_0x3100f8,_0x3babf0,_0x54d41a){var _0x48bb5c={'method':_0x7b2e('0x97'),'uri':_0x59c270+_0x7b2e('0x9c')+_0x3100f8+_0x7b2e('0xb3')+_0x3babf0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x7b2e('0xb4'),'headers':{'Authorization':_0x7b2e('0x99')+_0x54d41a,'If-None-Match':null,'OData-Version':_0x7b2e('0xb5')},'json':!![]};return rp(_0x48bb5c)[_0x7b2e('0xf')](function(_0x2109a3){var _0x108958=[];var _0x401298=_0x2109a3[_0x7b2e('0xb6')][_0x7b2e('0xb7')];_0x401298[_0x7b2e('0xa7')](function(_0x3191ac){_0x108958[_0x7b2e('0xa1')]({'name':_0x3191ac[_0x7b2e('0xb8')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'value':String(_0x3191ac[_0x7b2e('0xba')])});});var _0x55fa82={'id':_0x5ce2eb+'_'+_0x2109a3[_0x7b2e('0x9f')],'name':_0x2109a3[_0x7b2e('0xbb')][_0x7b2e('0xb9')]['Label'],'custom':![],'options':_0x108958};_0xa248cb[_0x7b2e('0xa1')](_0x55fa82);return _0xa248cb;});}function getBooleanList(_0x40dbde,_0x1aa318,_0x49c259,_0x1e579f,_0x2757aa,_0x17e9f1){var _0x1d2f28={'method':_0x7b2e('0x97'),'uri':_0x40dbde+_0x7b2e('0x9c')+_0x1e579f+_0x7b2e('0xb3')+_0x2757aa+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x7b2e('0x99')+_0x17e9f1,'If-None-Match':null,'OData-Version':_0x7b2e('0xb5')},'json':!![]};return rp(_0x1d2f28)[_0x7b2e('0xf')](function(_0x5a56e2){var _0x5597ca=[];_0x5597ca['push']({'name':_0x5a56e2[_0x7b2e('0xb6')][_0x7b2e('0xbc')][_0x7b2e('0xb8')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'value':_0x7b2e('0xbd')},{'name':_0x5a56e2[_0x7b2e('0xb6')][_0x7b2e('0xbe')][_0x7b2e('0xb8')]['UserLocalizedLabel'][_0x7b2e('0xb8')],'value':_0x7b2e('0xbf')});var _0x59bed5={'id':_0x1aa318+'_'+_0x5a56e2[_0x7b2e('0x9f')],'name':_0x5a56e2[_0x7b2e('0xbb')][_0x7b2e('0xb9')][_0x7b2e('0xb8')],'custom':![],'options':_0x5597ca};_0x49c259['push'](_0x59bed5);return _0x49c259;});}function getInputList(_0x1ed18f,_0x29aca4,_0x320ebb,_0x5091ba,_0x43129f,_0x3beab5,_0x247359){var _0x2753b3={'method':'GET','uri':_0x1ed18f+_0x7b2e('0x9c')+_0x43129f+_0x7b2e('0xb3')+_0x3beab5+_0x7b2e('0xc0')+_0x320ebb+_0x7b2e('0xc1'),'headers':{'Authorization':_0x7b2e('0x99')+_0x247359,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2753b3)[_0x7b2e('0xf')](function(_0x447347){var _0x3fe3f3={'id':_0x29aca4+'_'+_0x447347[_0x7b2e('0x9f')],'name':_0x447347[_0x7b2e('0xbb')][_0x7b2e('0xb9')]?_0x447347[_0x7b2e('0xbb')][_0x7b2e('0xb9')]['Label']:_0x447347[_0x7b2e('0x9f')],'custom':![],'options':[]};_0x5091ba[_0x7b2e('0xa1')](_0x3fe3f3);return _0x5091ba;});}
\ No newline at end of file
index 1621df7..9a6c020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x2c275d,_0x1d4780){var _0x36f75d=function(_0x5f5551){while(--_0x5f5551){_0x2c275d['push'](_0x2c275d['shift']());}};_0x36f75d(++_0x1d4780);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x33155c,_0x3fdde1){_0x33155c=_0x33155c-0x0;var _0x5becf7=_0xcb91[_0x33155c];return _0x5becf7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x19316b,_0x4210a7){var _0x28ea7f=function(_0x41a401){while(--_0x41a401){_0x19316b['push'](_0x19316b['shift']());}};_0x28ea7f(++_0x4210a7);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0xcb91[_0x104e21];return _0x605b37;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d52a4aa..d105392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8169=['Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','model','map','then','find','ShowDynamics365Account','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2a5265,_0x23e3b3){var _0x416330=function(_0x50177e){while(--_0x50177e){_0x2a5265['push'](_0x2a5265['shift']());}};_0x416330(++_0x23e3b3);}(_0x8169,0xd4));var _0x9816=function(_0x2069ac,_0x4ea2ef){_0x2069ac=_0x2069ac-0x0;var _0x1fbcc7=_0x8169[_0x2069ac];return _0x1fbcc7;};'use strict';var _=require(_0x9816('0x0'));var util=require('util');var moment=require(_0x9816('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9816('0x2'));var db=require(_0x9816('0x3'))['db'];var utils=require(_0x9816('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x9816('0x5'));var jayson=require(_0x9816('0x6'));var client=jayson['client'][_0x9816('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x13c8c6,_0x4e2bcc,_0x39f2f8){return new BPromise(function(_0x559e81,_0x54de8a){return client[_0x9816('0x8')](_0x13c8c6,_0x39f2f8)['then'](function(_0x2a7e47){logger['info'](_0x9816('0x9'),_0x4e2bcc,_0x9816('0xa'));logger[_0x9816('0xb')](_0x9816('0xc'),_0x4e2bcc,_0x9816('0xa'),JSON[_0x9816('0xd')](_0x2a7e47));if(_0x2a7e47[_0x9816('0xe')]){if(_0x2a7e47[_0x9816('0xe')][_0x9816('0xf')]===0x1f4){logger[_0x9816('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x4e2bcc,_0x2a7e47[_0x9816('0xe')][_0x9816('0x10')]);return _0x54de8a(_0x2a7e47[_0x9816('0xe')][_0x9816('0x10')]);}logger['error'](_0x9816('0x9'),_0x4e2bcc,_0x2a7e47[_0x9816('0xe')][_0x9816('0x10')]);return _0x559e81(_0x2a7e47['error'][_0x9816('0x10')]);}else{logger[_0x9816('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x4e2bcc,_0x9816('0xa'));_0x559e81(_0x2a7e47['result'][_0x9816('0x10')]);}})['catch'](function(_0x204689){logger[_0x9816('0xe')](_0x9816('0x9'),_0x4e2bcc,_0x204689);_0x54de8a(_0x204689);});});}exports[_0x9816('0x12')]=function(_0xd12e40){var _0x3239ae=this;return new Promise(function(_0x2dfc6e,_0x35b4c3){return db[_0x9816('0x13')][_0x9816('0x14')]({'raw':_0xd12e40[_0x9816('0x15')]?_0xd12e40[_0x9816('0x15')][_0x9816('0x16')]===undefined?!![]:![]:!![],'where':_0xd12e40['options']?_0xd12e40[_0x9816('0x15')][_0x9816('0x17')]||null:null,'attributes':_0xd12e40[_0x9816('0x15')]?_0xd12e40['options'][_0x9816('0x18')]||null:null,'limit':_0xd12e40[_0x9816('0x15')]?_0xd12e40[_0x9816('0x15')][_0x9816('0x19')]||null:null,'include':_0xd12e40[_0x9816('0x15')]?_0xd12e40[_0x9816('0x15')][_0x9816('0x1a')]?_['map'](_0xd12e40[_0x9816('0x15')][_0x9816('0x1a')],function(_0x35f173){return{'model':db[_0x35f173[_0x9816('0x1b')]],'as':_0x35f173['as'],'attributes':_0x35f173['attributes'],'include':_0x35f173['include']?_[_0x9816('0x1c')](_0x35f173[_0x9816('0x1a')],function(_0x1e344a){return{'model':db[_0x1e344a[_0x9816('0x1b')]],'as':_0x1e344a['as'],'attributes':_0x1e344a[_0x9816('0x18')],'include':_0x1e344a['include']?_[_0x9816('0x1c')](_0x1e344a[_0x9816('0x1a')],function(_0x2604f6){return{'model':db[_0x2604f6['model']],'as':_0x2604f6['as'],'attributes':_0x2604f6[_0x9816('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9816('0x1d')](function(_0x3cb2ca){logger[_0x9816('0x11')](_0x9816('0x12'),_0xd12e40);logger[_0x9816('0xb')](_0x9816('0x12'),_0xd12e40,JSON[_0x9816('0xd')](_0x3cb2ca));_0x2dfc6e(_0x3cb2ca);})['catch'](function(_0x33481d){logger[_0x9816('0xe')](_0x9816('0x12'),_0x33481d[_0x9816('0x10')],_0xd12e40);_0x35b4c3(_0x3239ae[_0x9816('0xe')](0x1f4,_0x33481d[_0x9816('0x10')]));});});};exports['ShowDynamics365Account']=function(_0x5ca3a9){var _0xc9fdc2=this;return new Promise(function(_0x25da07,_0x2d19e0){return db[_0x9816('0x13')][_0x9816('0x1e')]({'raw':_0x5ca3a9[_0x9816('0x15')]?_0x5ca3a9[_0x9816('0x15')][_0x9816('0x16')]===undefined?!![]:![]:!![],'where':_0x5ca3a9[_0x9816('0x15')]?_0x5ca3a9[_0x9816('0x15')][_0x9816('0x17')]||null:null,'attributes':_0x5ca3a9[_0x9816('0x15')]?_0x5ca3a9[_0x9816('0x15')][_0x9816('0x18')]||null:null,'include':_0x5ca3a9['options']?_0x5ca3a9[_0x9816('0x15')][_0x9816('0x1a')]?_[_0x9816('0x1c')](_0x5ca3a9[_0x9816('0x15')]['include'],function(_0x105ec9){return{'model':db[_0x105ec9[_0x9816('0x1b')]],'as':_0x105ec9['as'],'attributes':_0x105ec9[_0x9816('0x18')],'include':_0x105ec9[_0x9816('0x1a')]?_['map'](_0x105ec9['include'],function(_0x8846c9){return{'model':db[_0x8846c9['model']],'as':_0x8846c9['as'],'attributes':_0x8846c9[_0x9816('0x18')],'include':_0x8846c9['include']?_[_0x9816('0x1c')](_0x8846c9[_0x9816('0x1a')],function(_0x40c9e8){return{'model':db[_0x40c9e8[_0x9816('0x1b')]],'as':_0x40c9e8['as'],'attributes':_0x40c9e8[_0x9816('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9816('0x1d')](function(_0x26532e){logger[_0x9816('0x11')]('ShowDynamics365Account',_0x5ca3a9);logger[_0x9816('0xb')](_0x9816('0x1f'),_0x5ca3a9,JSON['stringify'](_0x26532e));_0x25da07(_0x26532e);})['catch'](function(_0x104fc1){logger[_0x9816('0xe')]('ShowDynamics365Account',_0x104fc1[_0x9816('0x10')],_0x5ca3a9);_0x2d19e0(_0xc9fdc2['error'](0x1f4,_0x104fc1[_0x9816('0x10')]));});});};
\ No newline at end of file
+var _0xcd6f=['find','ShowDynamics365Account','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x20eefe,_0x59a8be){var _0x1c3741=function(_0x4dc313){while(--_0x4dc313){_0x20eefe['push'](_0x20eefe['shift']());}};_0x1c3741(++_0x59a8be);}(_0xcd6f,0xda));var _0xfcd6=function(_0x562a43,_0x3cde35){_0x562a43=_0x562a43-0x0;var _0x2e9d7c=_0xcd6f[_0x562a43];return _0x2e9d7c;};'use strict';var _=require(_0xfcd6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcd6('0x1'));var db=require(_0xfcd6('0x2'))['db'];var utils=require(_0xfcd6('0x3'));var logger=require(_0xfcd6('0x4'))(_0xfcd6('0x5'));var config=require(_0xfcd6('0x6'));var jayson=require(_0xfcd6('0x7'));var client=jayson[_0xfcd6('0x8')][_0xfcd6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1baaff,_0x34e920,_0x404bab){return new BPromise(function(_0x2cde8c,_0x41a029){return client[_0xfcd6('0xa')](_0x1baaff,_0x404bab)[_0xfcd6('0xb')](function(_0x5ac251){logger['info'](_0xfcd6('0xc'),_0x34e920,_0xfcd6('0xd'));logger[_0xfcd6('0xe')](_0xfcd6('0xf'),_0x34e920,_0xfcd6('0xd'),JSON[_0xfcd6('0x10')](_0x5ac251));if(_0x5ac251[_0xfcd6('0x11')]){if(_0x5ac251[_0xfcd6('0x11')][_0xfcd6('0x12')]===0x1f4){logger['error'](_0xfcd6('0xc'),_0x34e920,_0x5ac251[_0xfcd6('0x11')]['message']);return _0x41a029(_0x5ac251['error'][_0xfcd6('0x13')]);}logger['error'](_0xfcd6('0xc'),_0x34e920,_0x5ac251[_0xfcd6('0x11')][_0xfcd6('0x13')]);return _0x2cde8c(_0x5ac251[_0xfcd6('0x11')]['message']);}else{logger[_0xfcd6('0x14')](_0xfcd6('0xc'),_0x34e920,_0xfcd6('0xd'));_0x2cde8c(_0x5ac251[_0xfcd6('0x15')][_0xfcd6('0x13')]);}})[_0xfcd6('0x16')](function(_0x1b75bb){logger[_0xfcd6('0x11')](_0xfcd6('0xc'),_0x34e920,_0x1b75bb);_0x41a029(_0x1b75bb);});});}exports[_0xfcd6('0x17')]=function(_0x45a389){var _0x183973=this;return new Promise(function(_0x11b348,_0x5e0af3){return db[_0xfcd6('0x18')][_0xfcd6('0x19')]({'raw':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1b')]===undefined?!![]:![]:!![],'where':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1c')]||null:null,'attributes':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1d')]||null:null,'limit':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1e')]||null:null,'include':_0x45a389[_0xfcd6('0x1a')]?_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x45a389[_0xfcd6('0x1a')][_0xfcd6('0x1f')],function(_0x3a610f){return{'model':db[_0x3a610f[_0xfcd6('0x21')]],'as':_0x3a610f['as'],'attributes':_0x3a610f[_0xfcd6('0x1d')],'include':_0x3a610f[_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x3a610f[_0xfcd6('0x1f')],function(_0x42ab4c){return{'model':db[_0x42ab4c[_0xfcd6('0x21')]],'as':_0x42ab4c['as'],'attributes':_0x42ab4c[_0xfcd6('0x1d')],'include':_0x42ab4c['include']?_[_0xfcd6('0x20')](_0x42ab4c[_0xfcd6('0x1f')],function(_0x7b7d97){return{'model':db[_0x7b7d97['model']],'as':_0x7b7d97['as'],'attributes':_0x7b7d97['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x32eec3){logger[_0xfcd6('0x14')](_0xfcd6('0x17'),_0x45a389);logger[_0xfcd6('0xe')](_0xfcd6('0x17'),_0x45a389,JSON[_0xfcd6('0x10')](_0x32eec3));_0x11b348(_0x32eec3);})[_0xfcd6('0x16')](function(_0xa998fc){logger['error'](_0xfcd6('0x17'),_0xa998fc['message'],_0x45a389);_0x5e0af3(_0x183973['error'](0x1f4,_0xa998fc[_0xfcd6('0x13')]));});});};exports['ShowDynamics365Account']=function(_0x51986a){var _0x145ba9=this;return new Promise(function(_0x1fe8fb,_0x239198){return db[_0xfcd6('0x18')][_0xfcd6('0x22')]({'raw':_0x51986a[_0xfcd6('0x1a')]?_0x51986a['options'][_0xfcd6('0x1b')]===undefined?!![]:![]:!![],'where':_0x51986a[_0xfcd6('0x1a')]?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1c')]||null:null,'attributes':_0x51986a['options']?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1d')]||null:null,'include':_0x51986a[_0xfcd6('0x1a')]?_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1f')]?_[_0xfcd6('0x20')](_0x51986a[_0xfcd6('0x1a')][_0xfcd6('0x1f')],function(_0x9ca89d){return{'model':db[_0x9ca89d[_0xfcd6('0x21')]],'as':_0x9ca89d['as'],'attributes':_0x9ca89d[_0xfcd6('0x1d')],'include':_0x9ca89d[_0xfcd6('0x1f')]?_['map'](_0x9ca89d[_0xfcd6('0x1f')],function(_0x2794c1){return{'model':db[_0x2794c1[_0xfcd6('0x21')]],'as':_0x2794c1['as'],'attributes':_0x2794c1['attributes'],'include':_0x2794c1[_0xfcd6('0x1f')]?_['map'](_0x2794c1[_0xfcd6('0x1f')],function(_0x1538cb){return{'model':db[_0x1538cb[_0xfcd6('0x21')]],'as':_0x1538cb['as'],'attributes':_0x1538cb[_0xfcd6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3cbe82){logger[_0xfcd6('0x14')](_0xfcd6('0x23'),_0x51986a);logger[_0xfcd6('0xe')](_0xfcd6('0x23'),_0x51986a,JSON[_0xfcd6('0x10')](_0x3cbe82));_0x1fe8fb(_0x3cbe82);})[_0xfcd6('0x16')](function(_0x6eba0c){logger[_0xfcd6('0x11')](_0xfcd6('0x23'),_0x6eba0c[_0xfcd6('0x13')],_0x51986a);_0x239198(_0x145ba9['error'](0x1f4,_0x6eba0c['message']));});});};
\ No newline at end of file
index 8f33364..4df4825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c3=['/:id/fields','getFields','/:id/subjects','isAuthenticated','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get'];(function(_0x419c0c,_0x2598ad){var _0x391694=function(_0x530772){while(--_0x530772){_0x419c0c['push'](_0x419c0c['shift']());}};_0x391694(++_0x2598ad);}(_0xb8c3,0x9d));var _0x3b8c=function(_0xcf2962,_0x1acbed){_0xcf2962=_0xcf2962-0x0;var _0x5d3089=_0xb8c3[_0xcf2962];return _0x5d3089;};'use strict';var multer=require(_0x3b8c('0x0'));var util=require(_0x3b8c('0x1'));var path=require(_0x3b8c('0x2'));var timeout=require(_0x3b8c('0x3'));var express=require('express');var router=express[_0x3b8c('0x4')]();var fs_extra=require(_0x3b8c('0x5'));var auth=require(_0x3b8c('0x6'));var interaction=require(_0x3b8c('0x7'));var config=require(_0x3b8c('0x8'));var controller=require(_0x3b8c('0x9'));router[_0x3b8c('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x3b8c('0xb'),auth['isAuthenticated'](),controller[_0x3b8c('0xc')]);router[_0x3b8c('0xa')](_0x3b8c('0xd'),auth[_0x3b8c('0xe')](),controller['getSubjects']);router[_0x3b8c('0xa')]('/:id/descriptions',auth[_0x3b8c('0xe')](),controller['getDescriptions']);router[_0x3b8c('0xf')]('/',auth[_0x3b8c('0xe')](),controller['create']);router[_0x3b8c('0x10')](_0x3b8c('0x11'),auth[_0x3b8c('0xe')](),controller[_0x3b8c('0x12')]);router[_0x3b8c('0x13')](_0x3b8c('0x11'),auth[_0x3b8c('0xe')](),controller['destroy']);module[_0x3b8c('0x14')]=router;
\ No newline at end of file
+var _0x3d45=['put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','/:id','isAuthenticated','show','getFields','/:id/descriptions','getDescriptions','post','create'];(function(_0x59befa,_0x4af99b){var _0x1dd63d=function(_0x4c1df4){while(--_0x4c1df4){_0x59befa['push'](_0x59befa['shift']());}};_0x1dd63d(++_0x4af99b);}(_0x3d45,0x1d2));var _0x53d4=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x3d45[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x53d4('0x0'));var util=require(_0x53d4('0x1'));var path=require(_0x53d4('0x2'));var timeout=require(_0x53d4('0x3'));var express=require(_0x53d4('0x4'));var router=express['Router']();var fs_extra=require(_0x53d4('0x5'));var auth=require(_0x53d4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x53d4('0x7'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x53d4('0x8')](_0x53d4('0x9'),auth[_0x53d4('0xa')](),controller[_0x53d4('0xb')]);router[_0x53d4('0x8')]('/:id/fields',auth[_0x53d4('0xa')](),controller[_0x53d4('0xc')]);router[_0x53d4('0x8')]('/:id/subjects',auth[_0x53d4('0xa')](),controller['getSubjects']);router[_0x53d4('0x8')](_0x53d4('0xd'),auth[_0x53d4('0xa')](),controller[_0x53d4('0xe')]);router[_0x53d4('0xf')]('/',auth['isAuthenticated'](),controller[_0x53d4('0x10')]);router[_0x53d4('0x11')](_0x53d4('0x9'),auth['isAuthenticated'](),controller[_0x53d4('0x12')]);router[_0x53d4('0x13')]('/:id',auth[_0x53d4('0xa')](),controller['destroy']);module[_0x53d4('0x14')]=router;
\ No newline at end of file
index 781a216..3bed535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ea=['contact','BOOLEAN','sequelize','exports','STRING','ENUM','incident','nothing'];(function(_0x559b64,_0x1481b1){var _0xcab2d6=function(_0x325e71){while(--_0x325e71){_0x559b64['push'](_0x559b64['shift']());}};_0xcab2d6(++_0x1481b1);}(_0x24ea,0x152));var _0xa24e=function(_0x177f03,_0x23208f){_0x177f03=_0x177f03-0x0;var _0x85dc43=_0x24ea[_0x177f03];return _0x85dc43;};'use strict';var Sequelize=require(_0xa24e('0x0'));module[_0xa24e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa24e('0x2')]},'ticketType':{'type':Sequelize[_0xa24e('0x3')](_0xa24e('0x4'),'phonecall'),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize[_0xa24e('0x3')]('contact',_0xa24e('0x5')),'defaultValue':_0xa24e('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xa24e('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xa24e('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x997e=['STRING','ENUM','phonecall','contact','nothing','BOOLEAN','exports'];(function(_0x1b37c9,_0x2ccef5){var _0x3a8696=function(_0x1c5b1c){while(--_0x1c5b1c){_0x1b37c9['push'](_0x1b37c9['shift']());}};_0x3a8696(++_0x2ccef5);}(_0x997e,0x1cd));var _0xe997=function(_0x24ac39,_0x223cc6){_0x24ac39=_0x24ac39-0x0;var _0x59131d=_0x997e[_0x24ac39];return _0x59131d;};'use strict';var Sequelize=require('sequelize');module[_0xe997('0x0')]={'name':{'type':Sequelize[_0xe997('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xe997('0x2')]('incident',_0xe997('0x3')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize['ENUM'](_0xe997('0x4'),_0xe997('0x5')),'defaultValue':_0xe997('0x4'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xe997('0x6')],'defaultValue':!![]}};
\ No newline at end of file
index 9a64778..49ce1e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae9=['fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','save','update','then','name','index','map','Dynamics365Configuration','query','keys','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','params','rawAttributes','intersection','create','body','catch','find','destroy','getFields','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','zip-dir'];(function(_0x5712d,_0x5bac6e){var _0x5b91ff=function(_0xae43c0){while(--_0xae43c0){_0x5712d['push'](_0x5712d['shift']());}};_0x5b91ff(++_0x5bac6e);}(_0x8ae9,0x12e));var _0x98ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ae9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x98ae('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x98ae('0x1'));var jsonpatch=require(_0x98ae('0x2'));var rp=require(_0x98ae('0x3'));var moment=require('moment');var BPromise=require(_0x98ae('0x4'));var Mustache=require(_0x98ae('0x5'));var util=require(_0x98ae('0x6'));var path=require(_0x98ae('0x7'));var sox=require(_0x98ae('0x8'));var csv=require('to-csv');var ejs=require(_0x98ae('0x9'));var fs=require('fs');var fs_extra=require(_0x98ae('0xa'));var _=require(_0x98ae('0xb'));var squel=require('squel');var crypto=require(_0x98ae('0xc'));var jsforce=require(_0x98ae('0xd'));var deskjs=require(_0x98ae('0xe'));var toCsv=require(_0x98ae('0xf'));var querystring=require(_0x98ae('0x10'));var Papa=require(_0x98ae('0x11'));var Redis=require(_0x98ae('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x98ae('0x13'));var as=require(_0x98ae('0x14'));var hardwareService=require(_0x98ae('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x98ae('0x16'));var licenseUtil=require(_0x98ae('0x17'));var db=require(_0x98ae('0x18'))['db'];function respondWithStatusCode(_0x16c373,_0x5db488){_0x5db488=_0x5db488||0xcc;return function(_0x1b111a){if(_0x1b111a){return _0x16c373[_0x98ae('0x19')](_0x5db488);}return _0x16c373[_0x98ae('0x1a')](_0x5db488)[_0x98ae('0x1b')]();};}function respondWithResult(_0x424539,_0x379ec9){_0x379ec9=_0x379ec9||0xc8;return function(_0x32d52a){if(_0x32d52a){return _0x424539[_0x98ae('0x1a')](_0x379ec9)[_0x98ae('0x1c')](_0x32d52a);}};}function respondWithFilteredResult(_0x449085,_0x32f0b0){return function(_0x5d4fd9){if(_0x5d4fd9){var _0x154693=typeof _0x32f0b0['offset']==='undefined'&&typeof _0x32f0b0[_0x98ae('0x1d')]===_0x98ae('0x1e');var _0x3197fb=_0x5d4fd9[_0x98ae('0x1f')];var _0x39d91f=_0x154693?0x0:_0x32f0b0[_0x98ae('0x20')];var _0x5d1f81=_0x154693?_0x5d4fd9[_0x98ae('0x1f')]:_0x32f0b0[_0x98ae('0x20')]+_0x32f0b0[_0x98ae('0x1d')];var _0x485079;if(_0x5d1f81>=_0x3197fb){_0x5d1f81=_0x3197fb;_0x485079=0xc8;}else{_0x485079=0xce;}_0x449085[_0x98ae('0x1a')](_0x485079);return _0x449085[_0x98ae('0x21')]('Content-Range',_0x39d91f+'-'+_0x5d1f81+'/'+_0x3197fb)[_0x98ae('0x1c')](_0x5d4fd9);}return null;};}function patchUpdates(_0x1defc7){return function(_0x540189){try{jsonpatch[_0x98ae('0x22')](_0x540189,_0x1defc7,!![]);}catch(_0x2d5e49){return BPromise['reject'](_0x2d5e49);}return _0x540189[_0x98ae('0x23')]();};}function saveUpdates(_0x5aa537,_0x19c41a){return function(_0x4fd581){if(_0x4fd581){return _0x4fd581[_0x98ae('0x24')](_0x5aa537)[_0x98ae('0x25')](function(_0x4011eb){return _0x4011eb;});}return null;};}function removeEntity(_0x3d9858,_0x3f8cbd){return function(_0x210fbf){if(_0x210fbf){return _0x210fbf['destroy']()[_0x98ae('0x25')](function(){_0x3d9858[_0x98ae('0x1a')](0xcc)[_0x98ae('0x1b')]();});}};}function handleEntityNotFound(_0x39d6cf,_0xb9eb7d){return function(_0x20fbe5){if(!_0x20fbe5){_0x39d6cf[_0x98ae('0x19')](0x194);}return _0x20fbe5;};}function handleError(_0x1da4db,_0x392445){_0x392445=_0x392445||0x1f4;return function(_0x5808d6){logger['error'](_0x5808d6['stack']);if(_0x5808d6[_0x98ae('0x26')]){delete _0x5808d6['name'];}_0x1da4db[_0x98ae('0x1a')](_0x392445)['send'](_0x5808d6);};}exports[_0x98ae('0x27')]=function(_0x33d9da,_0x369e3d){var _0x4a9d48={},_0x2546ec={},_0x43438d={'count':0x0,'rows':[]};var _0x1cdbec=_[_0x98ae('0x28')](db[_0x98ae('0x29')]['rawAttributes'],function(_0x1cedd9){return{'name':_0x1cedd9['fieldName'],'type':_0x1cedd9['type']['key']};});_0x2546ec['model']=_[_0x98ae('0x28')](_0x1cdbec,'name');_0x2546ec[_0x98ae('0x2a')]=_[_0x98ae('0x2b')](_0x33d9da['query']);_0x2546ec[_0x98ae('0x2c')]=_['intersection'](_0x2546ec[_0x98ae('0x2d')],_0x2546ec[_0x98ae('0x2a')]);_0x4a9d48['attributes']=_['intersection'](_0x2546ec['model'],qs[_0x98ae('0x2e')](_0x33d9da['query'][_0x98ae('0x2e')]));_0x4a9d48[_0x98ae('0x2f')]=_0x4a9d48[_0x98ae('0x2f')][_0x98ae('0x30')]?_0x4a9d48[_0x98ae('0x2f')]:_0x2546ec[_0x98ae('0x2d')];if(!_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x31')](_0x98ae('0x32'))){_0x4a9d48[_0x98ae('0x1d')]=qs['limit'](_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x1d')]);_0x4a9d48[_0x98ae('0x20')]=qs[_0x98ae('0x20')](_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x20')]);}_0x4a9d48[_0x98ae('0x33')]=qs[_0x98ae('0x34')](_0x33d9da['query'][_0x98ae('0x34')]);_0x4a9d48[_0x98ae('0x35')]=qs['filters'](_[_0x98ae('0x36')](_0x33d9da[_0x98ae('0x2a')],_0x2546ec['filters']),_0x1cdbec);if(_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x37')]){_0x4a9d48[_0x98ae('0x35')]=_[_0x98ae('0x38')](_0x4a9d48[_0x98ae('0x35')],{'$or':_[_0x98ae('0x28')](_0x1cdbec,function(_0x34c65e){if(_0x34c65e[_0x98ae('0x39')]!=='VIRTUAL'){var _0x5243c3={};_0x5243c3[_0x34c65e[_0x98ae('0x26')]]={'$like':'%'+_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x37')]+'%'};return _0x5243c3;}})});}_0x4a9d48=_['merge']({},_0x4a9d48,_0x33d9da[_0x98ae('0x3a')]);var _0x365159={'where':_0x4a9d48[_0x98ae('0x35')]};return db['Dynamics365Configuration'][_0x98ae('0x1f')](_0x365159)[_0x98ae('0x25')](function(_0x44dc17){_0x43438d[_0x98ae('0x1f')]=_0x44dc17;if(_0x33d9da[_0x98ae('0x2a')][_0x98ae('0x3b')]){_0x4a9d48[_0x98ae('0x3c')]=[{'all':!![]}];}return db[_0x98ae('0x29')][_0x98ae('0x3d')](_0x4a9d48);})['then'](function(_0x5cf18e){_0x43438d[_0x98ae('0x3e')]=_0x5cf18e;return _0x43438d;})['then'](respondWithFilteredResult(_0x369e3d,_0x4a9d48))['catch'](handleError(_0x369e3d,null));};exports['show']=function(_0x3d4528,_0x32910f){var _0x209914={'raw':![],'where':{'id':_0x3d4528[_0x98ae('0x3f')]['id']}},_0x55ae4b={};_0x55ae4b['model']=_[_0x98ae('0x2b')](db[_0x98ae('0x29')][_0x98ae('0x40')]);_0x55ae4b[_0x98ae('0x2a')]=_[_0x98ae('0x2b')](_0x3d4528[_0x98ae('0x2a')]);_0x55ae4b['filters']=_[_0x98ae('0x41')](_0x55ae4b[_0x98ae('0x2d')],_0x55ae4b['query']);_0x209914[_0x98ae('0x2f')]=_[_0x98ae('0x41')](_0x55ae4b['model'],qs[_0x98ae('0x2e')](_0x3d4528[_0x98ae('0x2a')][_0x98ae('0x2e')]));_0x209914[_0x98ae('0x2f')]=_0x209914[_0x98ae('0x2f')][_0x98ae('0x30')]?_0x209914[_0x98ae('0x2f')]:_0x55ae4b['model'];if(_0x3d4528[_0x98ae('0x2a')][_0x98ae('0x3b')]){_0x209914['include']=[{'all':!![]}];}_0x209914=_[_0x98ae('0x38')]({},_0x209914,_0x3d4528['options']);return db[_0x98ae('0x29')]['find'](_0x209914)['then'](handleEntityNotFound(_0x32910f,null))['then'](respondWithResult(_0x32910f,null))['catch'](handleError(_0x32910f,null));};exports[_0x98ae('0x42')]=function(_0x19ea78,_0x5ce0f6){return db[_0x98ae('0x29')][_0x98ae('0x42')](_0x19ea78[_0x98ae('0x43')],{})[_0x98ae('0x25')](respondWithResult(_0x5ce0f6,0xc9))[_0x98ae('0x44')](handleError(_0x5ce0f6,null));};exports[_0x98ae('0x24')]=function(_0x5aa498,_0x1151c3){if(_0x5aa498[_0x98ae('0x43')]['id']){delete _0x5aa498[_0x98ae('0x43')]['id'];}return db[_0x98ae('0x29')][_0x98ae('0x45')]({'where':{'id':_0x5aa498[_0x98ae('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1151c3,null))['then'](saveUpdates(_0x5aa498['body'],null))['then'](respondWithResult(_0x1151c3,null))['catch'](handleError(_0x1151c3,null));};exports[_0x98ae('0x46')]=function(_0x577e45,_0x1b0a9b){return db['Dynamics365Configuration']['find']({'where':{'id':_0x577e45[_0x98ae('0x3f')]['id']}})[_0x98ae('0x25')](handleEntityNotFound(_0x1b0a9b,null))[_0x98ae('0x25')](removeEntity(_0x1b0a9b,null))[_0x98ae('0x44')](handleError(_0x1b0a9b,null));};exports[_0x98ae('0x47')]=function(_0x1862ca,_0x575a1d,_0x27b532){var _0x4ae8c4={};var _0x1f2d4d={};var _0x1e566;var _0x58dc4d;return db[_0x98ae('0x29')][_0x98ae('0x48')]({'where':{'id':_0x1862ca[_0x98ae('0x3f')]['id']}})[_0x98ae('0x25')](handleEntityNotFound(_0x575a1d,null))['then'](function(_0x29e3ec){if(_0x29e3ec){_0x1e566=_0x29e3ec;_0x1f2d4d[_0x98ae('0x2d')]=_[_0x98ae('0x2b')](db[_0x98ae('0x49')][_0x98ae('0x40')]);_0x1f2d4d[_0x98ae('0x2a')]=_[_0x98ae('0x2b')](_0x1862ca[_0x98ae('0x2a')]);_0x1f2d4d[_0x98ae('0x2c')]=_[_0x98ae('0x41')](_0x1f2d4d['model'],_0x1f2d4d['query']);_0x4ae8c4[_0x98ae('0x2f')]=_['intersection'](_0x1f2d4d[_0x98ae('0x2d')],qs[_0x98ae('0x2e')](_0x1862ca[_0x98ae('0x2a')][_0x98ae('0x2e')]));_0x4ae8c4['attributes']=_0x4ae8c4['attributes']['length']?_0x4ae8c4[_0x98ae('0x2f')]:_0x1f2d4d['model'];_0x4ae8c4[_0x98ae('0x33')]=qs['sort'](_0x1862ca[_0x98ae('0x2a')]['sort']);_0x4ae8c4[_0x98ae('0x35')]=qs['filters'](_[_0x98ae('0x36')](_0x1862ca['query'],_0x1f2d4d[_0x98ae('0x2c')]));if(_0x1862ca[_0x98ae('0x2a')][_0x98ae('0x37')]){_0x4ae8c4['where']=_[_0x98ae('0x38')](_0x4ae8c4['where'],{'$or':_[_0x98ae('0x28')](_0x4ae8c4['attributes'],function(_0x50e487){var _0x8d740a={};_0x8d740a[_0x50e487]={'$like':'%'+_0x1862ca['query'][_0x98ae('0x37')]+'%'};return _0x8d740a;})});}_0x4ae8c4=_[_0x98ae('0x38')]({},_0x4ae8c4,_0x1862ca['options']);return _0x1e566[_0x98ae('0x47')](_0x4ae8c4);}})[_0x98ae('0x25')](function(_0x10778f){if(_0x10778f){_0x58dc4d=_0x10778f[_0x98ae('0x30')];if(!_0x1862ca[_0x98ae('0x2a')][_0x98ae('0x31')]('nolimit')){_0x4ae8c4[_0x98ae('0x1d')]=qs[_0x98ae('0x1d')](_0x1862ca[_0x98ae('0x2a')][_0x98ae('0x1d')]);_0x4ae8c4['offset']=qs[_0x98ae('0x20')](_0x1862ca[_0x98ae('0x2a')][_0x98ae('0x20')]);}return _0x1e566[_0x98ae('0x47')](_0x4ae8c4);}})['then'](function(_0x145b21){if(_0x145b21){return _0x145b21?{'count':_0x58dc4d,'rows':_0x145b21}:null;}})['then'](respondWithResult(_0x575a1d,null))[_0x98ae('0x44')](handleError(_0x575a1d,null));};exports[_0x98ae('0x4a')]=function(_0x2d6b35,_0x305d37,_0x2da6d5){var _0x371dd3={};var _0x5df627={};var _0x554f8b;var _0x2de07b;return db[_0x98ae('0x29')][_0x98ae('0x48')]({'where':{'id':_0x2d6b35[_0x98ae('0x3f')]['id']}})[_0x98ae('0x25')](handleEntityNotFound(_0x305d37,null))[_0x98ae('0x25')](function(_0x861588){if(_0x861588){_0x554f8b=_0x861588;_0x5df627['model']=_[_0x98ae('0x2b')](db[_0x98ae('0x49')]['rawAttributes']);_0x5df627[_0x98ae('0x2a')]=_[_0x98ae('0x2b')](_0x2d6b35[_0x98ae('0x2a')]);_0x5df627['filters']=_[_0x98ae('0x41')](_0x5df627['model'],_0x5df627['query']);_0x371dd3[_0x98ae('0x2f')]=_['intersection'](_0x5df627['model'],qs[_0x98ae('0x2e')](_0x2d6b35[_0x98ae('0x2a')][_0x98ae('0x2e')]));_0x371dd3['attributes']=_0x371dd3['attributes']['length']?_0x371dd3['attributes']:_0x5df627[_0x98ae('0x2d')];_0x371dd3['order']=qs['sort'](_0x2d6b35[_0x98ae('0x2a')][_0x98ae('0x34')]);_0x371dd3[_0x98ae('0x35')]=qs[_0x98ae('0x2c')](_['pick'](_0x2d6b35[_0x98ae('0x2a')],_0x5df627[_0x98ae('0x2c')]));if(_0x2d6b35['query'][_0x98ae('0x37')]){_0x371dd3[_0x98ae('0x35')]=_[_0x98ae('0x38')](_0x371dd3['where'],{'$or':_['map'](_0x371dd3[_0x98ae('0x2f')],function(_0x3f8316){var _0x2dab5b={};_0x2dab5b[_0x3f8316]={'$like':'%'+_0x2d6b35[_0x98ae('0x2a')][_0x98ae('0x37')]+'%'};return _0x2dab5b;})});}_0x371dd3=_[_0x98ae('0x38')]({},_0x371dd3,_0x2d6b35['options']);return _0x554f8b[_0x98ae('0x4a')](_0x371dd3);}})[_0x98ae('0x25')](function(_0x145045){if(_0x145045){_0x2de07b=_0x145045[_0x98ae('0x30')];if(!_0x2d6b35[_0x98ae('0x2a')][_0x98ae('0x31')](_0x98ae('0x32'))){_0x371dd3[_0x98ae('0x1d')]=qs[_0x98ae('0x1d')](_0x2d6b35[_0x98ae('0x2a')][_0x98ae('0x1d')]);_0x371dd3[_0x98ae('0x20')]=qs[_0x98ae('0x20')](_0x2d6b35['query'][_0x98ae('0x20')]);}return _0x554f8b['getSubjects'](_0x371dd3);}})[_0x98ae('0x25')](function(_0x1c6579){if(_0x1c6579){return _0x1c6579?{'count':_0x2de07b,'rows':_0x1c6579}:null;}})[_0x98ae('0x25')](respondWithResult(_0x305d37,null))[_0x98ae('0x44')](handleError(_0x305d37,null));};exports[_0x98ae('0x4b')]=function(_0x11ebfe,_0x46da63,_0x30eb18){var _0x55aae8={};var _0x263570={};var _0x45bbc7;var _0x566e57;return db[_0x98ae('0x29')][_0x98ae('0x48')]({'where':{'id':_0x11ebfe[_0x98ae('0x3f')]['id']}})[_0x98ae('0x25')](handleEntityNotFound(_0x46da63,null))[_0x98ae('0x25')](function(_0x5a2429){if(_0x5a2429){_0x45bbc7=_0x5a2429;_0x263570[_0x98ae('0x2d')]=_[_0x98ae('0x2b')](db['Dynamics365Field'][_0x98ae('0x40')]);_0x263570[_0x98ae('0x2a')]=_[_0x98ae('0x2b')](_0x11ebfe['query']);_0x263570[_0x98ae('0x2c')]=_['intersection'](_0x263570[_0x98ae('0x2d')],_0x263570['query']);_0x55aae8[_0x98ae('0x2f')]=_['intersection'](_0x263570[_0x98ae('0x2d')],qs[_0x98ae('0x2e')](_0x11ebfe[_0x98ae('0x2a')][_0x98ae('0x2e')]));_0x55aae8[_0x98ae('0x2f')]=_0x55aae8['attributes'][_0x98ae('0x30')]?_0x55aae8['attributes']:_0x263570[_0x98ae('0x2d')];_0x55aae8[_0x98ae('0x33')]=qs['sort'](_0x11ebfe['query'][_0x98ae('0x34')]);_0x55aae8[_0x98ae('0x35')]=qs[_0x98ae('0x2c')](_['pick'](_0x11ebfe['query'],_0x263570[_0x98ae('0x2c')]));if(_0x11ebfe[_0x98ae('0x2a')][_0x98ae('0x37')]){_0x55aae8['where']=_[_0x98ae('0x38')](_0x55aae8[_0x98ae('0x35')],{'$or':_[_0x98ae('0x28')](_0x55aae8[_0x98ae('0x2f')],function(_0x1be2f5){var _0x304fe5={};_0x304fe5[_0x1be2f5]={'$like':'%'+_0x11ebfe[_0x98ae('0x2a')][_0x98ae('0x37')]+'%'};return _0x304fe5;})});}_0x55aae8=_[_0x98ae('0x38')]({},_0x55aae8,_0x11ebfe[_0x98ae('0x3a')]);return _0x45bbc7[_0x98ae('0x4b')](_0x55aae8);}})['then'](function(_0x51329f){if(_0x51329f){_0x566e57=_0x51329f['length'];if(!_0x11ebfe[_0x98ae('0x2a')][_0x98ae('0x31')](_0x98ae('0x32'))){_0x55aae8['limit']=qs[_0x98ae('0x1d')](_0x11ebfe['query'][_0x98ae('0x1d')]);_0x55aae8[_0x98ae('0x20')]=qs[_0x98ae('0x20')](_0x11ebfe['query'][_0x98ae('0x20')]);}return _0x45bbc7[_0x98ae('0x4b')](_0x55aae8);}})[_0x98ae('0x25')](function(_0x1546cb){if(_0x1546cb){return _0x1546cb?{'count':_0x566e57,'rows':_0x1546cb}:null;}})['then'](respondWithResult(_0x46da63,null))[_0x98ae('0x44')](handleError(_0x46da63,null));};
\ No newline at end of file
+var _0x15f1=['order','map','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','offset','set','Content-Range','reject','update','destroy','then','end','error','stack','name','send','index','Dynamics365Configuration','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','find','create','body','params','getFields','Dynamics365Field'];(function(_0x432854,_0x39464a){var _0x38f0bb=function(_0x25cdcc){while(--_0x25cdcc){_0x432854['push'](_0x432854['shift']());}};_0x38f0bb(++_0x39464a);}(_0x15f1,0x1eb));var _0x115f=function(_0x181d41,_0x4542d1){_0x181d41=_0x181d41-0x0;var _0x4d5e1f=_0x15f1[_0x181d41];return _0x4d5e1f;};'use strict';var emlformat=require(_0x115f('0x0'));var rimraf=require(_0x115f('0x1'));var zipdir=require(_0x115f('0x2'));var jsonpatch=require(_0x115f('0x3'));var rp=require(_0x115f('0x4'));var moment=require(_0x115f('0x5'));var BPromise=require(_0x115f('0x6'));var Mustache=require(_0x115f('0x7'));var util=require('util');var path=require(_0x115f('0x8'));var sox=require(_0x115f('0x9'));var csv=require(_0x115f('0xa'));var ejs=require(_0x115f('0xb'));var fs=require('fs');var fs_extra=require(_0x115f('0xc'));var _=require('lodash');var squel=require(_0x115f('0xd'));var crypto=require(_0x115f('0xe'));var jsforce=require(_0x115f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x115f('0xa'));var querystring=require(_0x115f('0x10'));var Papa=require('papaparse');var Redis=require(_0x115f('0x11'));var authService=require(_0x115f('0x12'));var qs=require(_0x115f('0x13'));var as=require(_0x115f('0x14'));var hardwareService=require(_0x115f('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x115f('0x16'));var config=require(_0x115f('0x17'));var licenseUtil=require(_0x115f('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xee28ce,_0x282234){_0x282234=_0x282234||0xcc;return function(_0x29590a){if(_0x29590a){return _0xee28ce[_0x115f('0x19')](_0x282234);}return _0xee28ce[_0x115f('0x1a')](_0x282234)['end']();};}function respondWithResult(_0x1412fe,_0x2848f8){_0x2848f8=_0x2848f8||0xc8;return function(_0x569118){if(_0x569118){return _0x1412fe[_0x115f('0x1a')](_0x2848f8)[_0x115f('0x1b')](_0x569118);}};}function respondWithFilteredResult(_0xfc3aff,_0x2f194a){return function(_0x4e5f42){if(_0x4e5f42){var _0x4d4d15=typeof _0x2f194a['offset']===_0x115f('0x1c')&&typeof _0x2f194a[_0x115f('0x1d')]===_0x115f('0x1c');var _0x1ca34d=_0x4e5f42['count'];var _0x40c844=_0x4d4d15?0x0:_0x2f194a[_0x115f('0x1e')];var _0x301490=_0x4d4d15?_0x4e5f42['count']:_0x2f194a[_0x115f('0x1e')]+_0x2f194a[_0x115f('0x1d')];var _0x5db1ad;if(_0x301490>=_0x1ca34d){_0x301490=_0x1ca34d;_0x5db1ad=0xc8;}else{_0x5db1ad=0xce;}_0xfc3aff['status'](_0x5db1ad);return _0xfc3aff[_0x115f('0x1f')](_0x115f('0x20'),_0x40c844+'-'+_0x301490+'/'+_0x1ca34d)[_0x115f('0x1b')](_0x4e5f42);}return null;};}function patchUpdates(_0x587fc5){return function(_0x365274){try{jsonpatch['apply'](_0x365274,_0x587fc5,!![]);}catch(_0xd2ced6){return BPromise[_0x115f('0x21')](_0xd2ced6);}return _0x365274['save']();};}function saveUpdates(_0x1c07d0,_0x1256d1){return function(_0x2bee9c){if(_0x2bee9c){return _0x2bee9c[_0x115f('0x22')](_0x1c07d0)['then'](function(_0x4dd1f5){return _0x4dd1f5;});}return null;};}function removeEntity(_0x242730,_0x27ad74){return function(_0x4794af){if(_0x4794af){return _0x4794af[_0x115f('0x23')]()[_0x115f('0x24')](function(){_0x242730[_0x115f('0x1a')](0xcc)[_0x115f('0x25')]();});}};}function handleEntityNotFound(_0x126199,_0x107aa2){return function(_0x74d7b1){if(!_0x74d7b1){_0x126199[_0x115f('0x19')](0x194);}return _0x74d7b1;};}function handleError(_0x39ae3e,_0x1f92fd){_0x1f92fd=_0x1f92fd||0x1f4;return function(_0x39be6f){logger[_0x115f('0x26')](_0x39be6f[_0x115f('0x27')]);if(_0x39be6f[_0x115f('0x28')]){delete _0x39be6f['name'];}_0x39ae3e[_0x115f('0x1a')](_0x1f92fd)[_0x115f('0x29')](_0x39be6f);};}exports[_0x115f('0x2a')]=function(_0x19e027,_0x58b474){var _0x2429e5={},_0xad73d0={},_0x2e59fb={'count':0x0,'rows':[]};var _0x513a9f=_['map'](db[_0x115f('0x2b')][_0x115f('0x2c')],function(_0x2a3bd1){return{'name':_0x2a3bd1['fieldName'],'type':_0x2a3bd1[_0x115f('0x2d')][_0x115f('0x2e')]};});_0xad73d0[_0x115f('0x2f')]=_['map'](_0x513a9f,_0x115f('0x28'));_0xad73d0[_0x115f('0x30')]=_[_0x115f('0x31')](_0x19e027[_0x115f('0x30')]);_0xad73d0[_0x115f('0x32')]=_[_0x115f('0x33')](_0xad73d0[_0x115f('0x2f')],_0xad73d0['query']);_0x2429e5['attributes']=_[_0x115f('0x33')](_0xad73d0[_0x115f('0x2f')],qs[_0x115f('0x34')](_0x19e027[_0x115f('0x30')][_0x115f('0x34')]));_0x2429e5[_0x115f('0x35')]=_0x2429e5['attributes'][_0x115f('0x36')]?_0x2429e5[_0x115f('0x35')]:_0xad73d0[_0x115f('0x2f')];if(!_0x19e027[_0x115f('0x30')][_0x115f('0x37')](_0x115f('0x38'))){_0x2429e5[_0x115f('0x1d')]=qs[_0x115f('0x1d')](_0x19e027['query'][_0x115f('0x1d')]);_0x2429e5[_0x115f('0x1e')]=qs[_0x115f('0x1e')](_0x19e027[_0x115f('0x30')]['offset']);}_0x2429e5['order']=qs[_0x115f('0x39')](_0x19e027['query'][_0x115f('0x39')]);_0x2429e5[_0x115f('0x3a')]=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x19e027[_0x115f('0x30')],_0xad73d0[_0x115f('0x32')]),_0x513a9f);if(_0x19e027[_0x115f('0x30')][_0x115f('0x3c')]){_0x2429e5[_0x115f('0x3a')]=_['merge'](_0x2429e5['where'],{'$or':_['map'](_0x513a9f,function(_0x525235){if(_0x525235['type']!==_0x115f('0x3d')){var _0x5c7b90={};_0x5c7b90[_0x525235[_0x115f('0x28')]]={'$like':'%'+_0x19e027[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x5c7b90;}})});}_0x2429e5=_[_0x115f('0x3e')]({},_0x2429e5,_0x19e027[_0x115f('0x3f')]);var _0x358e5d={'where':_0x2429e5['where']};return db[_0x115f('0x2b')][_0x115f('0x40')](_0x358e5d)[_0x115f('0x24')](function(_0x241355){_0x2e59fb[_0x115f('0x40')]=_0x241355;if(_0x19e027[_0x115f('0x30')][_0x115f('0x41')]){_0x2429e5['include']=[{'all':!![]}];}return db[_0x115f('0x2b')][_0x115f('0x42')](_0x2429e5);})[_0x115f('0x24')](function(_0xe0abec){_0x2e59fb[_0x115f('0x43')]=_0xe0abec;return _0x2e59fb;})[_0x115f('0x24')](respondWithFilteredResult(_0x58b474,_0x2429e5))[_0x115f('0x44')](handleError(_0x58b474,null));};exports[_0x115f('0x45')]=function(_0x510e55,_0x53325b){var _0x46565e={'raw':![],'where':{'id':_0x510e55['params']['id']}},_0x17191b={};_0x17191b[_0x115f('0x2f')]=_['keys'](db[_0x115f('0x2b')]['rawAttributes']);_0x17191b[_0x115f('0x30')]=_['keys'](_0x510e55[_0x115f('0x30')]);_0x17191b['filters']=_[_0x115f('0x33')](_0x17191b['model'],_0x17191b[_0x115f('0x30')]);_0x46565e[_0x115f('0x35')]=_[_0x115f('0x33')](_0x17191b[_0x115f('0x2f')],qs['fields'](_0x510e55[_0x115f('0x30')]['fields']));_0x46565e[_0x115f('0x35')]=_0x46565e[_0x115f('0x35')][_0x115f('0x36')]?_0x46565e[_0x115f('0x35')]:_0x17191b[_0x115f('0x2f')];if(_0x510e55[_0x115f('0x30')][_0x115f('0x41')]){_0x46565e['include']=[{'all':!![]}];}_0x46565e=_[_0x115f('0x3e')]({},_0x46565e,_0x510e55['options']);return db[_0x115f('0x2b')][_0x115f('0x46')](_0x46565e)[_0x115f('0x24')](handleEntityNotFound(_0x53325b,null))[_0x115f('0x24')](respondWithResult(_0x53325b,null))[_0x115f('0x44')](handleError(_0x53325b,null));};exports[_0x115f('0x47')]=function(_0x44fe79,_0x522ede){return db['Dynamics365Configuration']['create'](_0x44fe79[_0x115f('0x48')],{})['then'](respondWithResult(_0x522ede,0xc9))[_0x115f('0x44')](handleError(_0x522ede,null));};exports['update']=function(_0x4d0b48,_0x53965d){if(_0x4d0b48[_0x115f('0x48')]['id']){delete _0x4d0b48['body']['id'];}return db[_0x115f('0x2b')]['find']({'where':{'id':_0x4d0b48[_0x115f('0x49')]['id']}})['then'](handleEntityNotFound(_0x53965d,null))[_0x115f('0x24')](saveUpdates(_0x4d0b48[_0x115f('0x48')],null))[_0x115f('0x24')](respondWithResult(_0x53965d,null))['catch'](handleError(_0x53965d,null));};exports[_0x115f('0x23')]=function(_0x3c20b7,_0x3b47fb){return db['Dynamics365Configuration'][_0x115f('0x46')]({'where':{'id':_0x3c20b7[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x3b47fb,null))[_0x115f('0x24')](removeEntity(_0x3b47fb,null))[_0x115f('0x44')](handleError(_0x3b47fb,null));};exports[_0x115f('0x4a')]=function(_0x46fe39,_0xec7644,_0x34758a){var _0x294f36={};var _0x31b0fe={};var _0x4c76e0;var _0x4e2c8e;return db[_0x115f('0x2b')]['findOne']({'where':{'id':_0x46fe39[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0xec7644,null))[_0x115f('0x24')](function(_0x1234db){if(_0x1234db){_0x4c76e0=_0x1234db;_0x31b0fe[_0x115f('0x2f')]=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0x31b0fe[_0x115f('0x30')]=_[_0x115f('0x31')](_0x46fe39[_0x115f('0x30')]);_0x31b0fe[_0x115f('0x32')]=_[_0x115f('0x33')](_0x31b0fe[_0x115f('0x2f')],_0x31b0fe[_0x115f('0x30')]);_0x294f36['attributes']=_[_0x115f('0x33')](_0x31b0fe[_0x115f('0x2f')],qs['fields'](_0x46fe39['query']['fields']));_0x294f36[_0x115f('0x35')]=_0x294f36[_0x115f('0x35')]['length']?_0x294f36[_0x115f('0x35')]:_0x31b0fe[_0x115f('0x2f')];_0x294f36[_0x115f('0x4c')]=qs['sort'](_0x46fe39[_0x115f('0x30')][_0x115f('0x39')]);_0x294f36['where']=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x46fe39['query'],_0x31b0fe[_0x115f('0x32')]));if(_0x46fe39['query']['filter']){_0x294f36['where']=_[_0x115f('0x3e')](_0x294f36[_0x115f('0x3a')],{'$or':_[_0x115f('0x4d')](_0x294f36['attributes'],function(_0x2fe03d){var _0x259070={};_0x259070[_0x2fe03d]={'$like':'%'+_0x46fe39[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x259070;})});}_0x294f36=_[_0x115f('0x3e')]({},_0x294f36,_0x46fe39[_0x115f('0x3f')]);return _0x4c76e0[_0x115f('0x4a')](_0x294f36);}})['then'](function(_0x127280){if(_0x127280){_0x4e2c8e=_0x127280[_0x115f('0x36')];if(!_0x46fe39[_0x115f('0x30')][_0x115f('0x37')](_0x115f('0x38'))){_0x294f36[_0x115f('0x1d')]=qs[_0x115f('0x1d')](_0x46fe39['query'][_0x115f('0x1d')]);_0x294f36[_0x115f('0x1e')]=qs['offset'](_0x46fe39['query'][_0x115f('0x1e')]);}return _0x4c76e0[_0x115f('0x4a')](_0x294f36);}})[_0x115f('0x24')](function(_0x81f8ec){if(_0x81f8ec){return _0x81f8ec?{'count':_0x4e2c8e,'rows':_0x81f8ec}:null;}})[_0x115f('0x24')](respondWithResult(_0xec7644,null))[_0x115f('0x44')](handleError(_0xec7644,null));};exports[_0x115f('0x4e')]=function(_0x397813,_0x30bfcb,_0xafafb8){var _0x590ea9={};var _0x438b82={};var _0x166974;var _0xba9e69;return db[_0x115f('0x2b')][_0x115f('0x4f')]({'where':{'id':_0x397813[_0x115f('0x49')]['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x30bfcb,null))[_0x115f('0x24')](function(_0x562b6b){if(_0x562b6b){_0x166974=_0x562b6b;_0x438b82['model']=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0x438b82[_0x115f('0x30')]=_[_0x115f('0x31')](_0x397813[_0x115f('0x30')]);_0x438b82['filters']=_[_0x115f('0x33')](_0x438b82[_0x115f('0x2f')],_0x438b82[_0x115f('0x30')]);_0x590ea9['attributes']=_[_0x115f('0x33')](_0x438b82[_0x115f('0x2f')],qs['fields'](_0x397813[_0x115f('0x30')]['fields']));_0x590ea9[_0x115f('0x35')]=_0x590ea9[_0x115f('0x35')]['length']?_0x590ea9[_0x115f('0x35')]:_0x438b82[_0x115f('0x2f')];_0x590ea9[_0x115f('0x4c')]=qs['sort'](_0x397813[_0x115f('0x30')][_0x115f('0x39')]);_0x590ea9[_0x115f('0x3a')]=qs[_0x115f('0x32')](_['pick'](_0x397813['query'],_0x438b82[_0x115f('0x32')]));if(_0x397813[_0x115f('0x30')]['filter']){_0x590ea9[_0x115f('0x3a')]=_[_0x115f('0x3e')](_0x590ea9[_0x115f('0x3a')],{'$or':_['map'](_0x590ea9[_0x115f('0x35')],function(_0x3c275b){var _0x3dc411={};_0x3dc411[_0x3c275b]={'$like':'%'+_0x397813[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0x3dc411;})});}_0x590ea9=_['merge']({},_0x590ea9,_0x397813['options']);return _0x166974[_0x115f('0x4e')](_0x590ea9);}})[_0x115f('0x24')](function(_0x4fc1d1){if(_0x4fc1d1){_0xba9e69=_0x4fc1d1[_0x115f('0x36')];if(!_0x397813[_0x115f('0x30')][_0x115f('0x37')]('nolimit')){_0x590ea9['limit']=qs['limit'](_0x397813[_0x115f('0x30')]['limit']);_0x590ea9[_0x115f('0x1e')]=qs[_0x115f('0x1e')](_0x397813[_0x115f('0x30')]['offset']);}return _0x166974['getSubjects'](_0x590ea9);}})[_0x115f('0x24')](function(_0x302db9){if(_0x302db9){return _0x302db9?{'count':_0xba9e69,'rows':_0x302db9}:null;}})['then'](respondWithResult(_0x30bfcb,null))['catch'](handleError(_0x30bfcb,null));};exports[_0x115f('0x50')]=function(_0x2c3487,_0x2ad119,_0x49ba13){var _0xc1fa39={};var _0xe16cf1={};var _0x5d1927;var _0x2e8c86;return db[_0x115f('0x2b')][_0x115f('0x4f')]({'where':{'id':_0x2c3487['params']['id']}})[_0x115f('0x24')](handleEntityNotFound(_0x2ad119,null))[_0x115f('0x24')](function(_0x5d20bc){if(_0x5d20bc){_0x5d1927=_0x5d20bc;_0xe16cf1['model']=_[_0x115f('0x31')](db[_0x115f('0x4b')][_0x115f('0x2c')]);_0xe16cf1[_0x115f('0x30')]=_['keys'](_0x2c3487['query']);_0xe16cf1['filters']=_[_0x115f('0x33')](_0xe16cf1[_0x115f('0x2f')],_0xe16cf1[_0x115f('0x30')]);_0xc1fa39[_0x115f('0x35')]=_[_0x115f('0x33')](_0xe16cf1['model'],qs['fields'](_0x2c3487['query']['fields']));_0xc1fa39[_0x115f('0x35')]=_0xc1fa39[_0x115f('0x35')]['length']?_0xc1fa39[_0x115f('0x35')]:_0xe16cf1[_0x115f('0x2f')];_0xc1fa39['order']=qs[_0x115f('0x39')](_0x2c3487['query'][_0x115f('0x39')]);_0xc1fa39[_0x115f('0x3a')]=qs[_0x115f('0x32')](_[_0x115f('0x3b')](_0x2c3487[_0x115f('0x30')],_0xe16cf1['filters']));if(_0x2c3487[_0x115f('0x30')][_0x115f('0x3c')]){_0xc1fa39['where']=_[_0x115f('0x3e')](_0xc1fa39[_0x115f('0x3a')],{'$or':_['map'](_0xc1fa39[_0x115f('0x35')],function(_0x21806c){var _0xd56deb={};_0xd56deb[_0x21806c]={'$like':'%'+_0x2c3487[_0x115f('0x30')][_0x115f('0x3c')]+'%'};return _0xd56deb;})});}_0xc1fa39=_['merge']({},_0xc1fa39,_0x2c3487[_0x115f('0x3f')]);return _0x5d1927['getDescriptions'](_0xc1fa39);}})[_0x115f('0x24')](function(_0x2df309){if(_0x2df309){_0x2e8c86=_0x2df309[_0x115f('0x36')];if(!_0x2c3487['query'][_0x115f('0x37')](_0x115f('0x38'))){_0xc1fa39['limit']=qs['limit'](_0x2c3487['query'][_0x115f('0x1d')]);_0xc1fa39['offset']=qs['offset'](_0x2c3487[_0x115f('0x30')][_0x115f('0x1e')]);}return _0x5d1927[_0x115f('0x50')](_0xc1fa39);}})['then'](function(_0x824c5b){if(_0x824c5b){return _0x824c5b?{'count':_0x2e8c86,'rows':_0x824c5b}:null;}})[_0x115f('0x24')](respondWithResult(_0x2ad119,null))['catch'](handleError(_0x2ad119,null));};
\ No newline at end of file
index 611e8ce..8c4528e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['../../config/environment','./intDynamics365Configuration.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x28e3d7,_0x549be3){var _0x1ce44d=function(_0x1f4871){while(--_0x1f4871){_0x28e3d7['push'](_0x28e3d7['shift']());}};_0x1ce44d(++_0x549be3);}(_0x81bd,0x7c));var _0xd81b=function(_0x2d0cdd,_0x5b25b4){_0x2d0cdd=_0x2d0cdd-0x0;var _0x30ba3a=_0x81bd[_0x2d0cdd];return _0x30ba3a;};'use strict';var _=require(_0xd81b('0x0'));var util=require(_0xd81b('0x1'));var logger=require(_0xd81b('0x2'))(_0xd81b('0x3'));var moment=require(_0xd81b('0x4'));var BPromise=require(_0xd81b('0x5'));var rp=require(_0xd81b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd81b('0x7'));var config=require(_0xd81b('0x8'));var attributes=require(_0xd81b('0x9'));module['exports']=function(_0x42a0aa,_0x34eb73){return _0x42a0aa[_0xd81b('0xa')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa41a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','int_dynamics365_configurations','lodash','util','api'];(function(_0x5dbdb5,_0xd5f5fb){var _0xfa151d=function(_0x325f53){while(--_0x325f53){_0x5dbdb5['push'](_0x5dbdb5['shift']());}};_0xfa151d(++_0xd5f5fb);}(_0xa41a,0x6b));var _0xaa41=function(_0x4794f7,_0x5c7938){_0x4794f7=_0x4794f7-0x0;var _0x440184=_0xa41a[_0x4794f7];return _0x440184;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var logger=require('../../config/logger')(_0xaa41('0x2'));var moment=require(_0xaa41('0x3'));var BPromise=require(_0xaa41('0x4'));var rp=require(_0xaa41('0x5'));var fs=require('fs');var path=require(_0xaa41('0x6'));var rimraf=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var attributes=require(_0xaa41('0x9'));module['exports']=function(_0x2122a0,_0x1ec9d4){return _0x2122a0['define']('Dynamics365Configuration',attributes,{'tableName':_0xaa41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da606d9..30ceb04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e27=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis'];(function(_0xad3371,_0xf35ff6){var _0x4df9f6=function(_0x3974c1){while(--_0x3974c1){_0xad3371['push'](_0xad3371['shift']());}};_0x4df9f6(++_0xf35ff6);}(_0x6e27,0x1c8));var _0x76e2=function(_0xeb7ba3,_0x18267e){_0xeb7ba3=_0xeb7ba3-0x0;var _0x3f3b85=_0x6e27[_0xeb7ba3];return _0x3f3b85;};'use strict';var _=require(_0x76e2('0x0'));var util=require(_0x76e2('0x1'));var moment=require(_0x76e2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x76e2('0x3'));var db=require(_0x76e2('0x4'))['db'];var utils=require(_0x76e2('0x5'));var logger=require(_0x76e2('0x6'))(_0x76e2('0x7'));var config=require(_0x76e2('0x8'));var jayson=require(_0x76e2('0x9'));var client=jayson[_0x76e2('0xa')][_0x76e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12e0f8,_0x513150,_0x55353b){return new BPromise(function(_0x30d93b,_0xfce4f1){return client[_0x76e2('0xc')](_0x12e0f8,_0x55353b)['then'](function(_0x4f26b1){logger[_0x76e2('0xd')](_0x76e2('0xe'),_0x513150,_0x76e2('0xf'));logger['debug'](_0x76e2('0x10'),_0x513150,_0x76e2('0xf'),JSON[_0x76e2('0x11')](_0x4f26b1));if(_0x4f26b1['error']){if(_0x4f26b1[_0x76e2('0x12')][_0x76e2('0x13')]===0x1f4){logger[_0x76e2('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x513150,_0x4f26b1[_0x76e2('0x12')][_0x76e2('0x14')]);return _0xfce4f1(_0x4f26b1['error'][_0x76e2('0x14')]);}logger[_0x76e2('0x12')](_0x76e2('0xe'),_0x513150,_0x4f26b1[_0x76e2('0x12')][_0x76e2('0x14')]);return _0x30d93b(_0x4f26b1[_0x76e2('0x12')][_0x76e2('0x14')]);}else{logger[_0x76e2('0xd')](_0x76e2('0xe'),_0x513150,_0x76e2('0xf'));_0x30d93b(_0x4f26b1[_0x76e2('0x15')][_0x76e2('0x14')]);}})[_0x76e2('0x16')](function(_0x519718){logger[_0x76e2('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x513150,_0x519718);_0xfce4f1(_0x519718);});});}
\ No newline at end of file
+var _0xdad4=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','moment','bluebird'];(function(_0x29697b,_0x3b6bb3){var _0x1df1b4=function(_0x2d5821){while(--_0x2d5821){_0x29697b['push'](_0x29697b['shift']());}};_0x1df1b4(++_0x3b6bb3);}(_0xdad4,0x1e2));var _0x4dad=function(_0x264d4d,_0x118fb5){_0x264d4d=_0x264d4d-0x0;var _0xc917e2=_0xdad4[_0x264d4d];return _0xc917e2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4dad('0x0'));var BPromise=require(_0x4dad('0x1'));var rs=require(_0x4dad('0x2'));var fs=require('fs');var Redis=require(_0x4dad('0x3'));var db=require(_0x4dad('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4dad('0x5'))(_0x4dad('0x6'));var config=require(_0x4dad('0x7'));var jayson=require(_0x4dad('0x8'));var client=jayson[_0x4dad('0x9')][_0x4dad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3096fb,_0x20c03f,_0x2c9028){return new BPromise(function(_0x389401,_0x25dc0d){return client[_0x4dad('0xb')](_0x3096fb,_0x2c9028)[_0x4dad('0xc')](function(_0x5721a1){logger[_0x4dad('0xd')](_0x4dad('0xe'),_0x20c03f,'request\x20sent');logger['debug'](_0x4dad('0xf'),_0x20c03f,_0x4dad('0x10'),JSON[_0x4dad('0x11')](_0x5721a1));if(_0x5721a1[_0x4dad('0x12')]){if(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x13')]===0x1f4){logger['error'](_0x4dad('0xe'),_0x20c03f,_0x5721a1['error'][_0x4dad('0x14')]);return _0x25dc0d(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x14')]);}logger[_0x4dad('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x20c03f,_0x5721a1['error']['message']);return _0x389401(_0x5721a1[_0x4dad('0x12')][_0x4dad('0x14')]);}else{logger[_0x4dad('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x20c03f,'request\x20sent');_0x389401(_0x5721a1['result'][_0x4dad('0x14')]);}})[_0x4dad('0x15')](function(_0x1a27a2){logger[_0x4dad('0x12')](_0x4dad('0xe'),_0x20c03f,_0x1a27a2);_0x25dc0d(_0x1a27a2);});});}
\ No newline at end of file
index 616857b..b26f4f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1497=['show','post','create','put','/:id','update','delete','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','get'];(function(_0x261522,_0x1adc1f){var _0x98a25a=function(_0x1b0f9c){while(--_0x1b0f9c){_0x261522['push'](_0x261522['shift']());}};_0x98a25a(++_0x1adc1f);}(_0x1497,0x17d));var _0x7149=function(_0x3ef2b5,_0x5182dd){_0x3ef2b5=_0x3ef2b5-0x0;var _0x5ad6df=_0x1497[_0x3ef2b5];return _0x5ad6df;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7149('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7149('0x1')]();var fs_extra=require(_0x7149('0x2'));var auth=require(_0x7149('0x3'));var interaction=require(_0x7149('0x4'));var config=require(_0x7149('0x5'));var controller=require(_0x7149('0x6'));router['get']('/',auth[_0x7149('0x7')](),controller[_0x7149('0x8')]);router[_0x7149('0x9')]('/:id',auth[_0x7149('0x7')](),controller[_0x7149('0xa')]);router[_0x7149('0xb')]('/',auth[_0x7149('0x7')](),controller[_0x7149('0xc')]);router[_0x7149('0xd')](_0x7149('0xe'),auth[_0x7149('0x7')](),controller[_0x7149('0xf')]);router[_0x7149('0x10')](_0x7149('0xe'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x10b4=['../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated','index','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x58891c,_0x2bd262){var _0x5828bc=function(_0x452ca2){while(--_0x452ca2){_0x58891c['push'](_0x58891c['shift']());}};_0x5828bc(++_0x2bd262);}(_0x10b4,0x1ce));var _0x410b=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0x10b4[_0x256d6a];return _0x460058;};'use strict';var multer=require(_0x410b('0x0'));var util=require(_0x410b('0x1'));var path=require(_0x410b('0x2'));var timeout=require(_0x410b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x410b('0x4'));var auth=require(_0x410b('0x5'));var interaction=require(_0x410b('0x6'));var config=require('../../config/environment');var controller=require(_0x410b('0x7'));router[_0x410b('0x8')]('/',auth[_0x410b('0x9')](),controller[_0x410b('0xa')]);router[_0x410b('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x410b('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x410b('0xc')](_0x410b('0xd'),auth['isAuthenticated'](),controller[_0x410b('0xe')]);router[_0x410b('0xf')]('/:id',auth[_0x410b('0x9')](),controller[_0x410b('0x10')]);module[_0x410b('0x11')]=router;
\ No newline at end of file
index 19002ab..3ba89e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e5=['customVariable','keyValue','picklist','STRING','ENUM','string','BOOLEAN','exports'];(function(_0x487605,_0x17306e){var _0x42c167=function(_0x3ee599){while(--_0x3ee599){_0x487605['push'](_0x487605['shift']());}};_0x42c167(++_0x17306e);}(_0x05e5,0x8f));var _0x505e=function(_0x48bee1,_0x29f43d){_0x48bee1=_0x48bee1-0x0;var _0x582372=_0x05e5[_0x48bee1];return _0x582372;};'use strict';var Sequelize=require('sequelize');module[_0x505e('0x0')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x505e('0x1'),_0x505e('0x2'),_0x505e('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x505e('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x505e('0x5')](_0x505e('0x6'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x505e('0x4')]},'nameField':{'type':Sequelize[_0x505e('0x4')]},'customField':{'type':Sequelize[_0x505e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x505e('0x4')]}};
\ No newline at end of file
+var _0xf367=['ENUM','variable','sequelize','exports','customVariable','picklist','string','STRING'];(function(_0x246119,_0x30a4f3){var _0x59c74f=function(_0x313fb5){while(--_0x313fb5){_0x246119['push'](_0x246119['shift']());}};_0x59c74f(++_0x30a4f3);}(_0xf367,0x18a));var _0x7f36=function(_0x50826b,_0x148668){_0x50826b=_0x50826b-0x0;var _0x473ca2=_0xf367[_0x50826b];return _0x473ca2;};'use strict';var Sequelize=require(_0x7f36('0x0'));module[_0x7f36('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x7f36('0x2'),'keyValue',_0x7f36('0x3')),'defaultValue':_0x7f36('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7f36('0x5')]},'keyType':{'type':Sequelize[_0x7f36('0x6')](_0x7f36('0x4'),_0x7f36('0x7'),_0x7f36('0x2'))},'keyContent':{'type':Sequelize[_0x7f36('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7f36('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7f36('0x5')]}};
\ No newline at end of file
index cc0ba11..45063e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9596=['sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','count','set','apply','save','then','destroy','error','name','index','map','Dynamics365Field','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9596,0xcc));var _0x6959=function(_0x1d90ca,_0x3bab16){_0x1d90ca=_0x1d90ca-0x0;var _0x28872b=_0x9596[_0x1d90ca];return _0x28872b;};'use strict';var emlformat=require(_0x6959('0x0'));var rimraf=require(_0x6959('0x1'));var zipdir=require(_0x6959('0x2'));var jsonpatch=require(_0x6959('0x3'));var rp=require(_0x6959('0x4'));var moment=require(_0x6959('0x5'));var BPromise=require(_0x6959('0x6'));var Mustache=require(_0x6959('0x7'));var util=require('util');var path=require(_0x6959('0x8'));var sox=require(_0x6959('0x9'));var csv=require('to-csv');var ejs=require(_0x6959('0xa'));var fs=require('fs');var fs_extra=require(_0x6959('0xb'));var _=require('lodash');var squel=require(_0x6959('0xc'));var crypto=require(_0x6959('0xd'));var jsforce=require(_0x6959('0xe'));var deskjs=require(_0x6959('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6959('0x10'));var Papa=require(_0x6959('0x11'));var Redis=require(_0x6959('0x12'));var authService=require(_0x6959('0x13'));var qs=require(_0x6959('0x14'));var as=require(_0x6959('0x15'));var hardwareService=require(_0x6959('0x16'));var logger=require(_0x6959('0x17'))('api');var utils=require(_0x6959('0x18'));var config=require(_0x6959('0x19'));var licenseUtil=require(_0x6959('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47952e,_0x36b81b){_0x36b81b=_0x36b81b||0xcc;return function(_0x81bae5){if(_0x81bae5){return _0x47952e[_0x6959('0x1b')](_0x36b81b);}return _0x47952e['status'](_0x36b81b)['end']();};}function respondWithResult(_0x3674de,_0x554741){_0x554741=_0x554741||0xc8;return function(_0x43417b){if(_0x43417b){return _0x3674de[_0x6959('0x1c')](_0x554741)[_0x6959('0x1d')](_0x43417b);}};}function respondWithFilteredResult(_0x3cdb54,_0x3f2d5d){return function(_0x19b517){if(_0x19b517){var _0x169e5d=typeof _0x3f2d5d[_0x6959('0x1e')]==='undefined'&&typeof _0x3f2d5d[_0x6959('0x1f')]==='undefined';var _0xe22831=_0x19b517[_0x6959('0x20')];var _0x592802=_0x169e5d?0x0:_0x3f2d5d[_0x6959('0x1e')];var _0x3a9630=_0x169e5d?_0x19b517[_0x6959('0x20')]:_0x3f2d5d['offset']+_0x3f2d5d[_0x6959('0x1f')];var _0x153ca3;if(_0x3a9630>=_0xe22831){_0x3a9630=_0xe22831;_0x153ca3=0xc8;}else{_0x153ca3=0xce;}_0x3cdb54[_0x6959('0x1c')](_0x153ca3);return _0x3cdb54[_0x6959('0x21')]('Content-Range',_0x592802+'-'+_0x3a9630+'/'+_0xe22831)['json'](_0x19b517);}return null;};}function patchUpdates(_0x1f1f98){return function(_0x11913f){try{jsonpatch[_0x6959('0x22')](_0x11913f,_0x1f1f98,!![]);}catch(_0x19e46e){return BPromise['reject'](_0x19e46e);}return _0x11913f[_0x6959('0x23')]();};}function saveUpdates(_0x4baac9,_0x115abb){return function(_0x49f816){if(_0x49f816){return _0x49f816['update'](_0x4baac9)[_0x6959('0x24')](function(_0x20c063){return _0x20c063;});}return null;};}function removeEntity(_0x103eb2,_0x5c37cb){return function(_0x121e6e){if(_0x121e6e){return _0x121e6e[_0x6959('0x25')]()['then'](function(){_0x103eb2[_0x6959('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x178f9b,_0x3b8e15){return function(_0x5e4989){if(!_0x5e4989){_0x178f9b[_0x6959('0x1b')](0x194);}return _0x5e4989;};}function handleError(_0x47d446,_0x5d053d){_0x5d053d=_0x5d053d||0x1f4;return function(_0x41a0b1){logger[_0x6959('0x26')](_0x41a0b1['stack']);if(_0x41a0b1[_0x6959('0x27')]){delete _0x41a0b1['name'];}_0x47d446[_0x6959('0x1c')](_0x5d053d)['send'](_0x41a0b1);};}exports[_0x6959('0x28')]=function(_0x42e7cf,_0x287184){var _0x2decf1={},_0x222bf9={},_0x54fd07={'count':0x0,'rows':[]};var _0x329303=_[_0x6959('0x29')](db[_0x6959('0x2a')]['rawAttributes'],function(_0x400891){return{'name':_0x400891[_0x6959('0x2b')],'type':_0x400891[_0x6959('0x2c')]['key']};});_0x222bf9[_0x6959('0x2d')]=_[_0x6959('0x29')](_0x329303,_0x6959('0x27'));_0x222bf9[_0x6959('0x2e')]=_[_0x6959('0x2f')](_0x42e7cf[_0x6959('0x2e')]);_0x222bf9[_0x6959('0x30')]=_[_0x6959('0x31')](_0x222bf9[_0x6959('0x2d')],_0x222bf9[_0x6959('0x2e')]);_0x2decf1[_0x6959('0x32')]=_[_0x6959('0x31')](_0x222bf9[_0x6959('0x2d')],qs[_0x6959('0x33')](_0x42e7cf[_0x6959('0x2e')][_0x6959('0x33')]));_0x2decf1['attributes']=_0x2decf1[_0x6959('0x32')][_0x6959('0x34')]?_0x2decf1[_0x6959('0x32')]:_0x222bf9[_0x6959('0x2d')];if(!_0x42e7cf['query'][_0x6959('0x35')](_0x6959('0x36'))){_0x2decf1[_0x6959('0x1f')]=qs[_0x6959('0x1f')](_0x42e7cf[_0x6959('0x2e')][_0x6959('0x1f')]);_0x2decf1[_0x6959('0x1e')]=qs[_0x6959('0x1e')](_0x42e7cf[_0x6959('0x2e')][_0x6959('0x1e')]);}_0x2decf1['order']=qs['sort'](_0x42e7cf[_0x6959('0x2e')]['sort']);_0x2decf1[_0x6959('0x37')]=qs[_0x6959('0x30')](_[_0x6959('0x38')](_0x42e7cf[_0x6959('0x2e')],_0x222bf9[_0x6959('0x30')]),_0x329303);if(_0x42e7cf[_0x6959('0x2e')]['filter']){_0x2decf1['where']=_[_0x6959('0x39')](_0x2decf1['where'],{'$or':_[_0x6959('0x29')](_0x329303,function(_0x42843d){if(_0x42843d[_0x6959('0x2c')]!==_0x6959('0x3a')){var _0x3a057e={};_0x3a057e[_0x42843d['name']]={'$like':'%'+_0x42e7cf['query'][_0x6959('0x3b')]+'%'};return _0x3a057e;}})});}_0x2decf1=_['merge']({},_0x2decf1,_0x42e7cf['options']);var _0x5e5289={'where':_0x2decf1[_0x6959('0x37')]};return db['Dynamics365Field']['count'](_0x5e5289)[_0x6959('0x24')](function(_0x547ebe){_0x54fd07[_0x6959('0x20')]=_0x547ebe;if(_0x42e7cf[_0x6959('0x2e')][_0x6959('0x3c')]){_0x2decf1[_0x6959('0x3d')]=[{'all':!![]}];}return db[_0x6959('0x2a')][_0x6959('0x3e')](_0x2decf1);})[_0x6959('0x24')](function(_0x41f8b7){_0x54fd07[_0x6959('0x3f')]=_0x41f8b7;return _0x54fd07;})['then'](respondWithFilteredResult(_0x287184,_0x2decf1))[_0x6959('0x40')](handleError(_0x287184,null));};exports[_0x6959('0x41')]=function(_0x5617ae,_0x1dbbdc){var _0x4c75ef={'raw':!![],'where':{'id':_0x5617ae[_0x6959('0x42')]['id']}},_0x1b5a3f={};_0x1b5a3f[_0x6959('0x2d')]=_[_0x6959('0x2f')](db[_0x6959('0x2a')][_0x6959('0x43')]);_0x1b5a3f[_0x6959('0x2e')]=_[_0x6959('0x2f')](_0x5617ae['query']);_0x1b5a3f['filters']=_[_0x6959('0x31')](_0x1b5a3f['model'],_0x1b5a3f[_0x6959('0x2e')]);_0x4c75ef['attributes']=_[_0x6959('0x31')](_0x1b5a3f[_0x6959('0x2d')],qs[_0x6959('0x33')](_0x5617ae[_0x6959('0x2e')][_0x6959('0x33')]));_0x4c75ef['attributes']=_0x4c75ef['attributes'][_0x6959('0x34')]?_0x4c75ef['attributes']:_0x1b5a3f[_0x6959('0x2d')];if(_0x5617ae['query']['includeAll']){_0x4c75ef['include']=[{'all':!![]}];}_0x4c75ef=_[_0x6959('0x39')]({},_0x4c75ef,_0x5617ae['options']);return db[_0x6959('0x2a')][_0x6959('0x44')](_0x4c75ef)[_0x6959('0x24')](handleEntityNotFound(_0x1dbbdc,null))[_0x6959('0x24')](respondWithResult(_0x1dbbdc,null))[_0x6959('0x40')](handleError(_0x1dbbdc,null));};exports['create']=function(_0x4e86a3,_0x3a1c88){return db[_0x6959('0x2a')]['create'](_0x4e86a3[_0x6959('0x45')],{})[_0x6959('0x24')](respondWithResult(_0x3a1c88,0xc9))[_0x6959('0x40')](handleError(_0x3a1c88,null));};exports[_0x6959('0x46')]=function(_0x421a29,_0x1340e5){if(_0x421a29['body']['id']){delete _0x421a29['body']['id'];}return db['Dynamics365Field'][_0x6959('0x44')]({'where':{'id':_0x421a29[_0x6959('0x42')]['id']}})[_0x6959('0x24')](handleEntityNotFound(_0x1340e5,null))[_0x6959('0x24')](saveUpdates(_0x421a29[_0x6959('0x45')],null))['then'](respondWithResult(_0x1340e5,null))[_0x6959('0x40')](handleError(_0x1340e5,null));};exports['destroy']=function(_0x4b4888,_0x453847){return db[_0x6959('0x2a')][_0x6959('0x44')]({'where':{'id':_0x4b4888['params']['id']}})[_0x6959('0x24')](handleEntityNotFound(_0x453847,null))[_0x6959('0x24')](removeEntity(_0x453847,null))[_0x6959('0x40')](handleError(_0x453847,null));};
\ No newline at end of file
+var _0x6f2c=['set','Content-Range','reject','save','update','then','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','Dynamics365Field','includeAll','findAll','rows','show','keys','include','options','find','catch','create','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6f2c,0x115));var _0xc6f2=function(_0x5b6daf,_0x1b849f){_0x5b6daf=_0x5b6daf-0x0;var _0x308083=_0x6f2c[_0x5b6daf];return _0x308083;};'use strict';var emlformat=require(_0xc6f2('0x0'));var rimraf=require(_0xc6f2('0x1'));var zipdir=require(_0xc6f2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc6f2('0x3'));var moment=require(_0xc6f2('0x4'));var BPromise=require(_0xc6f2('0x5'));var Mustache=require(_0xc6f2('0x6'));var util=require(_0xc6f2('0x7'));var path=require(_0xc6f2('0x8'));var sox=require(_0xc6f2('0x9'));var csv=require(_0xc6f2('0xa'));var ejs=require(_0xc6f2('0xb'));var fs=require('fs');var fs_extra=require(_0xc6f2('0xc'));var _=require(_0xc6f2('0xd'));var squel=require(_0xc6f2('0xe'));var crypto=require(_0xc6f2('0xf'));var jsforce=require(_0xc6f2('0x10'));var deskjs=require(_0xc6f2('0x11'));var toCsv=require(_0xc6f2('0xa'));var querystring=require(_0xc6f2('0x12'));var Papa=require(_0xc6f2('0x13'));var Redis=require(_0xc6f2('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xc6f2('0x15'));var as=require(_0xc6f2('0x16'));var hardwareService=require(_0xc6f2('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0xc6f2('0x18'));var config=require(_0xc6f2('0x19'));var licenseUtil=require(_0xc6f2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfa17b4,_0x444680){_0x444680=_0x444680||0xcc;return function(_0xf364f){if(_0xf364f){return _0xfa17b4[_0xc6f2('0x1b')](_0x444680);}return _0xfa17b4[_0xc6f2('0x1c')](_0x444680)[_0xc6f2('0x1d')]();};}function respondWithResult(_0x1d853e,_0x285c25){_0x285c25=_0x285c25||0xc8;return function(_0x46bb0d){if(_0x46bb0d){return _0x1d853e[_0xc6f2('0x1c')](_0x285c25)[_0xc6f2('0x1e')](_0x46bb0d);}};}function respondWithFilteredResult(_0x145f17,_0x477276){return function(_0xd432cf){if(_0xd432cf){var _0x2cbbaf=typeof _0x477276[_0xc6f2('0x1f')]==='undefined'&&typeof _0x477276[_0xc6f2('0x20')]===_0xc6f2('0x21');var _0x2ae72e=_0xd432cf[_0xc6f2('0x22')];var _0x3131d6=_0x2cbbaf?0x0:_0x477276['offset'];var _0x1ee024=_0x2cbbaf?_0xd432cf['count']:_0x477276[_0xc6f2('0x1f')]+_0x477276['limit'];var _0x37e48f;if(_0x1ee024>=_0x2ae72e){_0x1ee024=_0x2ae72e;_0x37e48f=0xc8;}else{_0x37e48f=0xce;}_0x145f17[_0xc6f2('0x1c')](_0x37e48f);return _0x145f17[_0xc6f2('0x23')](_0xc6f2('0x24'),_0x3131d6+'-'+_0x1ee024+'/'+_0x2ae72e)[_0xc6f2('0x1e')](_0xd432cf);}return null;};}function patchUpdates(_0x469e5a){return function(_0x5e0ad1){try{jsonpatch['apply'](_0x5e0ad1,_0x469e5a,!![]);}catch(_0x31a34f){return BPromise[_0xc6f2('0x25')](_0x31a34f);}return _0x5e0ad1[_0xc6f2('0x26')]();};}function saveUpdates(_0x3e6e1a,_0x3fb543){return function(_0x1efe5d){if(_0x1efe5d){return _0x1efe5d[_0xc6f2('0x27')](_0x3e6e1a)[_0xc6f2('0x28')](function(_0x871a64){return _0x871a64;});}return null;};}function removeEntity(_0x46b401,_0x200048){return function(_0x25a6ad){if(_0x25a6ad){return _0x25a6ad['destroy']()[_0xc6f2('0x28')](function(){_0x46b401[_0xc6f2('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x163d26,_0x3db76d){return function(_0x336d8a){if(!_0x336d8a){_0x163d26[_0xc6f2('0x1b')](0x194);}return _0x336d8a;};}function handleError(_0x17de18,_0x5793a0){_0x5793a0=_0x5793a0||0x1f4;return function(_0x29b39e){logger[_0xc6f2('0x29')](_0x29b39e[_0xc6f2('0x2a')]);if(_0x29b39e[_0xc6f2('0x2b')]){delete _0x29b39e[_0xc6f2('0x2b')];}_0x17de18[_0xc6f2('0x1c')](_0x5793a0)['send'](_0x29b39e);};}exports['index']=function(_0x583e52,_0x2981a2){var _0x2029a0={},_0x31a335={},_0x10d482={'count':0x0,'rows':[]};var _0x368cd3=_[_0xc6f2('0x2c')](db['Dynamics365Field'][_0xc6f2('0x2d')],function(_0x28b9c2){return{'name':_0x28b9c2[_0xc6f2('0x2e')],'type':_0x28b9c2[_0xc6f2('0x2f')][_0xc6f2('0x30')]};});_0x31a335[_0xc6f2('0x31')]=_[_0xc6f2('0x2c')](_0x368cd3,_0xc6f2('0x2b'));_0x31a335[_0xc6f2('0x32')]=_['keys'](_0x583e52[_0xc6f2('0x32')]);_0x31a335[_0xc6f2('0x33')]=_[_0xc6f2('0x34')](_0x31a335[_0xc6f2('0x31')],_0x31a335[_0xc6f2('0x32')]);_0x2029a0[_0xc6f2('0x35')]=_[_0xc6f2('0x34')](_0x31a335[_0xc6f2('0x31')],qs[_0xc6f2('0x36')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x36')]));_0x2029a0[_0xc6f2('0x35')]=_0x2029a0[_0xc6f2('0x35')][_0xc6f2('0x37')]?_0x2029a0[_0xc6f2('0x35')]:_0x31a335[_0xc6f2('0x31')];if(!_0x583e52[_0xc6f2('0x32')]['hasOwnProperty'](_0xc6f2('0x38'))){_0x2029a0['limit']=qs[_0xc6f2('0x20')](_0x583e52['query']['limit']);_0x2029a0[_0xc6f2('0x1f')]=qs[_0xc6f2('0x1f')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x1f')]);}_0x2029a0[_0xc6f2('0x39')]=qs[_0xc6f2('0x3a')](_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x3a')]);_0x2029a0[_0xc6f2('0x3b')]=qs[_0xc6f2('0x33')](_[_0xc6f2('0x3c')](_0x583e52[_0xc6f2('0x32')],_0x31a335[_0xc6f2('0x33')]),_0x368cd3);if(_0x583e52['query'][_0xc6f2('0x3d')]){_0x2029a0[_0xc6f2('0x3b')]=_[_0xc6f2('0x3e')](_0x2029a0[_0xc6f2('0x3b')],{'$or':_[_0xc6f2('0x2c')](_0x368cd3,function(_0x54fb3f){if(_0x54fb3f[_0xc6f2('0x2f')]!==_0xc6f2('0x3f')){var _0x24e2f7={};_0x24e2f7[_0x54fb3f[_0xc6f2('0x2b')]]={'$like':'%'+_0x583e52['query'][_0xc6f2('0x3d')]+'%'};return _0x24e2f7;}})});}_0x2029a0=_[_0xc6f2('0x3e')]({},_0x2029a0,_0x583e52['options']);var _0x106e22={'where':_0x2029a0['where']};return db[_0xc6f2('0x40')][_0xc6f2('0x22')](_0x106e22)[_0xc6f2('0x28')](function(_0x229095){_0x10d482[_0xc6f2('0x22')]=_0x229095;if(_0x583e52[_0xc6f2('0x32')][_0xc6f2('0x41')]){_0x2029a0['include']=[{'all':!![]}];}return db[_0xc6f2('0x40')][_0xc6f2('0x42')](_0x2029a0);})['then'](function(_0x2c9d5e){_0x10d482[_0xc6f2('0x43')]=_0x2c9d5e;return _0x10d482;})[_0xc6f2('0x28')](respondWithFilteredResult(_0x2981a2,_0x2029a0))['catch'](handleError(_0x2981a2,null));};exports[_0xc6f2('0x44')]=function(_0x315d1e,_0x244025){var _0x11d648={'raw':!![],'where':{'id':_0x315d1e['params']['id']}},_0x2ae14d={};_0x2ae14d[_0xc6f2('0x31')]=_[_0xc6f2('0x45')](db[_0xc6f2('0x40')][_0xc6f2('0x2d')]);_0x2ae14d[_0xc6f2('0x32')]=_['keys'](_0x315d1e[_0xc6f2('0x32')]);_0x2ae14d[_0xc6f2('0x33')]=_[_0xc6f2('0x34')](_0x2ae14d[_0xc6f2('0x31')],_0x2ae14d[_0xc6f2('0x32')]);_0x11d648[_0xc6f2('0x35')]=_[_0xc6f2('0x34')](_0x2ae14d[_0xc6f2('0x31')],qs[_0xc6f2('0x36')](_0x315d1e[_0xc6f2('0x32')][_0xc6f2('0x36')]));_0x11d648[_0xc6f2('0x35')]=_0x11d648[_0xc6f2('0x35')][_0xc6f2('0x37')]?_0x11d648[_0xc6f2('0x35')]:_0x2ae14d['model'];if(_0x315d1e['query']['includeAll']){_0x11d648[_0xc6f2('0x46')]=[{'all':!![]}];}_0x11d648=_['merge']({},_0x11d648,_0x315d1e[_0xc6f2('0x47')]);return db[_0xc6f2('0x40')][_0xc6f2('0x48')](_0x11d648)[_0xc6f2('0x28')](handleEntityNotFound(_0x244025,null))[_0xc6f2('0x28')](respondWithResult(_0x244025,null))[_0xc6f2('0x49')](handleError(_0x244025,null));};exports[_0xc6f2('0x4a')]=function(_0x1125e6,_0x378995){return db[_0xc6f2('0x40')]['create'](_0x1125e6[_0xc6f2('0x4b')],{})[_0xc6f2('0x28')](respondWithResult(_0x378995,0xc9))['catch'](handleError(_0x378995,null));};exports['update']=function(_0x31bf41,_0x4a4117){if(_0x31bf41[_0xc6f2('0x4b')]['id']){delete _0x31bf41[_0xc6f2('0x4b')]['id'];}return db['Dynamics365Field'][_0xc6f2('0x48')]({'where':{'id':_0x31bf41[_0xc6f2('0x4c')]['id']}})[_0xc6f2('0x28')](handleEntityNotFound(_0x4a4117,null))['then'](saveUpdates(_0x31bf41[_0xc6f2('0x4b')],null))[_0xc6f2('0x28')](respondWithResult(_0x4a4117,null))['catch'](handleError(_0x4a4117,null));};exports[_0xc6f2('0x4d')]=function(_0x6ab2fc,_0x4ba43e){return db[_0xc6f2('0x40')][_0xc6f2('0x48')]({'where':{'id':_0x6ab2fc[_0xc6f2('0x4c')]['id']}})[_0xc6f2('0x28')](handleEntityNotFound(_0x4ba43e,null))[_0xc6f2('0x28')](removeEntity(_0x4ba43e,null))[_0xc6f2('0x49')](handleError(_0x4ba43e,null));};
\ No newline at end of file
index b4dab18..9f9d3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b3=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','lodash','util'];(function(_0xe54f33,_0x44bc8a){var _0x48f29f=function(_0x58b5c6){while(--_0x58b5c6){_0xe54f33['push'](_0xe54f33['shift']());}};_0x48f29f(++_0x44bc8a);}(_0xd5b3,0x12e));var _0x3d5b=function(_0x355d58,_0x43ad89){_0x355d58=_0x355d58-0x0;var _0x3d23fc=_0xd5b3[_0x355d58];return _0x3d23fc;};'use strict';var _=require(_0x3d5b('0x0'));var util=require(_0x3d5b('0x1'));var logger=require(_0x3d5b('0x2'))(_0x3d5b('0x3'));var moment=require(_0x3d5b('0x4'));var BPromise=require(_0x3d5b('0x5'));var rp=require(_0x3d5b('0x6'));var fs=require('fs');var path=require(_0x3d5b('0x7'));var rimraf=require(_0x3d5b('0x8'));var config=require(_0x3d5b('0x9'));var attributes=require(_0x3d5b('0xa'));module['exports']=function(_0x195823,_0x5ae793){return _0x195823[_0x3d5b('0xb')](_0x3d5b('0xc'),attributes,{'tableName':_0x3d5b('0xd'),'paranoid':![],'indexes':[{'name':_0x3d5b('0xe'),'fields':[_0x3d5b('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6c1=['int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field'];(function(_0x3062f0,_0x487847){var _0x5277fd=function(_0x150098){while(--_0x150098){_0x3062f0['push'](_0x3062f0['shift']());}};_0x5277fd(++_0x487847);}(_0xe6c1,0x184));var _0x1e6c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe6c1[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x1e6c('0x0'));var util=require(_0x1e6c('0x1'));var logger=require('../../config/logger')(_0x1e6c('0x2'));var moment=require('moment');var BPromise=require(_0x1e6c('0x3'));var rp=require(_0x1e6c('0x4'));var fs=require('fs');var path=require(_0x1e6c('0x5'));var rimraf=require(_0x1e6c('0x6'));var config=require(_0x1e6c('0x7'));var attributes=require(_0x1e6c('0x8'));module[_0x1e6c('0x9')]=function(_0x2aaa2a,_0x16f82b){return _0x2aaa2a[_0x1e6c('0xa')](_0x1e6c('0xb'),attributes,{'tableName':_0x1e6c('0xc'),'paranoid':![],'indexes':[{'name':_0x1e6c('0xd'),'fields':[_0x1e6c('0xe'),_0x1e6c('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4cff8c8..9f295bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9867=['then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9867,0x16c));var _0x7986=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x9867[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x7986('0x0'));var util=require('util');var moment=require(_0x7986('0x1'));var BPromise=require(_0x7986('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7986('0x3'));var logger=require('../../config/logger')(_0x7986('0x4'));var config=require(_0x7986('0x5'));var jayson=require(_0x7986('0x6'));var client=jayson[_0x7986('0x7')][_0x7986('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33745f,_0x43753d,_0x22cef1){return new BPromise(function(_0x123869,_0xc8d3df){return client[_0x7986('0x9')](_0x33745f,_0x22cef1)[_0x7986('0xa')](function(_0x47c216){logger[_0x7986('0xb')](_0x7986('0xc'),_0x43753d,_0x7986('0xd'));logger[_0x7986('0xe')](_0x7986('0xf'),_0x43753d,'request\x20sent',JSON[_0x7986('0x10')](_0x47c216));if(_0x47c216['error']){if(_0x47c216['error'][_0x7986('0x11')]===0x1f4){logger[_0x7986('0x12')](_0x7986('0xc'),_0x43753d,_0x47c216[_0x7986('0x12')]['message']);return _0xc8d3df(_0x47c216['error'][_0x7986('0x13')]);}logger[_0x7986('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x43753d,_0x47c216[_0x7986('0x12')][_0x7986('0x13')]);return _0x123869(_0x47c216['error'][_0x7986('0x13')]);}else{logger[_0x7986('0xb')](_0x7986('0xc'),_0x43753d,'request\x20sent');_0x123869(_0x47c216[_0x7986('0x14')][_0x7986('0x13')]);}})[_0x7986('0x15')](function(_0x4b930b){logger['error'](_0x7986('0xc'),_0x43753d,_0x4b930b);_0xc8d3df(_0x4b930b);});});}
\ No newline at end of file
+var _0xfc61=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x436442,_0x466c19){var _0x446394=function(_0x313fd2){while(--_0x313fd2){_0x436442['push'](_0x436442['shift']());}};_0x446394(++_0x466c19);}(_0xfc61,0x16d));var _0x1fc6=function(_0x24b979,_0x4a68b4){_0x24b979=_0x24b979-0x0;var _0x2e288e=_0xfc61[_0x24b979];return _0x2e288e;};'use strict';var _=require(_0x1fc6('0x0'));var util=require('util');var moment=require(_0x1fc6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fc6('0x2'));var db=require(_0x1fc6('0x3'))['db'];var utils=require(_0x1fc6('0x4'));var logger=require('../../config/logger')(_0x1fc6('0x5'));var config=require('../../config/environment');var jayson=require(_0x1fc6('0x6'));var client=jayson[_0x1fc6('0x7')][_0x1fc6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4619f4,_0x26420c,_0x4d93d9){return new BPromise(function(_0x42b161,_0x394262){return client[_0x1fc6('0x9')](_0x4619f4,_0x4d93d9)[_0x1fc6('0xa')](function(_0x252298){logger['info'](_0x1fc6('0xb'),_0x26420c,_0x1fc6('0xc'));logger[_0x1fc6('0xd')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x26420c,_0x1fc6('0xc'),JSON[_0x1fc6('0xe')](_0x252298));if(_0x252298[_0x1fc6('0xf')]){if(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x10')]===0x1f4){logger[_0x1fc6('0xf')](_0x1fc6('0xb'),_0x26420c,_0x252298['error'][_0x1fc6('0x11')]);return _0x394262(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x11')]);}logger[_0x1fc6('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x26420c,_0x252298['error'][_0x1fc6('0x11')]);return _0x42b161(_0x252298[_0x1fc6('0xf')][_0x1fc6('0x11')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x26420c,'request\x20sent');_0x42b161(_0x252298[_0x1fc6('0x12')][_0x1fc6('0x11')]);}})[_0x1fc6('0x13')](function(_0x38dcd1){logger[_0x1fc6('0xf')](_0x1fc6('0xb'),_0x26420c,_0x38dcd1);_0x394262(_0x38dcd1);});});}
\ No newline at end of file
index 1053ce1..2243d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851e=['../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','post','/:id/configurations','addConfiguration','put','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5d184e,_0x36df53){var _0x7610a2=function(_0x497d0e){while(--_0x497d0e){_0x5d184e['push'](_0x5d184e['shift']());}};_0x7610a2(++_0x36df53);}(_0x851e,0x117));var _0xe851=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x851e[_0xfa634c];return _0x73e478;};'use strict';var multer=require(_0xe851('0x0'));var util=require('util');var path=require(_0xe851('0x1'));var timeout=require(_0xe851('0x2'));var express=require(_0xe851('0x3'));var router=express[_0xe851('0x4')]();var fs_extra=require(_0xe851('0x5'));var auth=require(_0xe851('0x6'));var interaction=require(_0xe851('0x7'));var config=require(_0xe851('0x8'));var controller=require(_0xe851('0x9'));router[_0xe851('0xa')]('/',auth[_0xe851('0xb')](),controller[_0xe851('0xc')]);router[_0xe851('0xa')](_0xe851('0xd'),auth['isAuthenticated'](),controller[_0xe851('0xe')]);router[_0xe851('0xa')]('/:id/configurations',auth[_0xe851('0xb')](),controller['getConfigurations']);router['get'](_0xe851('0xf'),auth['isAuthenticated'](),controller[_0xe851('0x10')]);router[_0xe851('0x11')]('/',auth[_0xe851('0xb')](),controller['create']);router[_0xe851('0x11')](_0xe851('0x12'),auth['isAuthenticated'](),controller[_0xe851('0x13')]);router[_0xe851('0x14')](_0xe851('0xd'),auth[_0xe851('0xb')](),controller['update']);router['delete'](_0xe851('0xd'),auth[_0xe851('0xb')](),controller[_0xe851('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd9d8=['create','addConfiguration','put','update','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post'];(function(_0x512a12,_0x3c48e1){var _0x5dfac6=function(_0x3d76db){while(--_0x3d76db){_0x512a12['push'](_0x512a12['shift']());}};_0x5dfac6(++_0x3c48e1);}(_0xd9d8,0xf8));var _0x8d9d=function(_0xdae520,_0x5cb070){_0xdae520=_0xdae520-0x0;var _0x21f40a=_0xd9d8[_0xdae520];return _0x21f40a;};'use strict';var multer=require(_0x8d9d('0x0'));var util=require(_0x8d9d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8d9d('0x2'));var router=express[_0x8d9d('0x3')]();var fs_extra=require(_0x8d9d('0x4'));var auth=require(_0x8d9d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8d9d('0x6'));var controller=require('./intFreshdeskAccount.controller');router[_0x8d9d('0x7')]('/',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x9')]);router[_0x8d9d('0x7')](_0x8d9d('0xa'),auth['isAuthenticated'](),controller[_0x8d9d('0xb')]);router[_0x8d9d('0x7')](_0x8d9d('0xc'),auth[_0x8d9d('0x8')](),controller[_0x8d9d('0xd')]);router[_0x8d9d('0x7')]('/:id/fields',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0xe')]);router[_0x8d9d('0xf')]('/',auth['isAuthenticated'](),controller[_0x8d9d('0x10')]);router[_0x8d9d('0xf')](_0x8d9d('0xc'),auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x11')]);router[_0x8d9d('0x12')](_0x8d9d('0xa'),auth['isAuthenticated'](),controller[_0x8d9d('0x13')]);router[_0x8d9d('0x14')]('/:id',auth[_0x8d9d('0x8')](),controller[_0x8d9d('0x15')]);module['exports']=router;
\ No newline at end of file
index 30e3963..a94d587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f2=['exports','STRING','remoteUri','sequelize'];(function(_0xd5f137,_0x4c77ff){var _0xbb3f7f=function(_0x329929){while(--_0x329929){_0xd5f137['push'](_0xd5f137['shift']());}};_0xbb3f7f(++_0x4c77ff);}(_0x28f2,0x193));var _0x228f=function(_0x18d6c2,_0x130703){_0x18d6c2=_0x18d6c2-0x0;var _0xe697d8=_0x28f2[_0x18d6c2];return _0xe697d8;};'use strict';var Sequelize=require(_0x228f('0x0'));module[_0x228f('0x1')]={'name':{'type':Sequelize[_0x228f('0x2')]},'description':{'type':Sequelize[_0x228f('0x2')]},'username':{'type':Sequelize[_0x228f('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x228f('0x2')]},'remoteUri':{'type':Sequelize[_0x228f('0x2')],'unique':_0x228f('0x3')},'serverUrl':{'type':Sequelize[_0x228f('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x5f66=['STRING','username','exports'];(function(_0x4de7c0,_0x5dcd80){var _0x592bfc=function(_0x12eb7f){while(--_0x12eb7f){_0x4de7c0['push'](_0x4de7c0['shift']());}};_0x592bfc(++_0x5dcd80);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65f6('0x1')]},'username':{'type':Sequelize[_0x65f6('0x1')],'unique':_0x65f6('0x2')},'apiKey':{'type':Sequelize[_0x65f6('0x1')]},'remoteUri':{'type':Sequelize[_0x65f6('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x65f6('0x1')],'allowNull':![]}};
\ No newline at end of file
index 1239404..0b0f389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae2=['agent','group','source','ticket_type','company','remove','includes','custom_text','custom_dropdown','label','default','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','stack','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','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','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','apiKey','toString','base64','requester','subject'];(function(_0x559057,_0xc1a46c){var _0x13c81d=function(_0x44dd8c){while(--_0x44dd8c){_0x559057['push'](_0x559057['shift']());}};_0x13c81d(++_0xc1a46c);}(_0x6ae2,0x1ed));var _0x26ae=function(_0x1f11b8,_0x22518e){_0x1f11b8=_0x1f11b8-0x0;var _0x3ddbfd=_0x6ae2[_0x1f11b8];return _0x3ddbfd;};'use strict';var emlformat=require(_0x26ae('0x0'));var rimraf=require(_0x26ae('0x1'));var zipdir=require(_0x26ae('0x2'));var jsonpatch=require(_0x26ae('0x3'));var rp=require(_0x26ae('0x4'));var moment=require(_0x26ae('0x5'));var BPromise=require(_0x26ae('0x6'));var Mustache=require(_0x26ae('0x7'));var util=require(_0x26ae('0x8'));var path=require('path');var sox=require(_0x26ae('0x9'));var csv=require(_0x26ae('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26ae('0xb'));var squel=require(_0x26ae('0xc'));var crypto=require(_0x26ae('0xd'));var jsforce=require(_0x26ae('0xe'));var deskjs=require(_0x26ae('0xf'));var toCsv=require(_0x26ae('0xa'));var querystring=require(_0x26ae('0x10'));var Papa=require(_0x26ae('0x11'));var Redis=require(_0x26ae('0x12'));var authService=require(_0x26ae('0x13'));var qs=require(_0x26ae('0x14'));var as=require(_0x26ae('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x26ae('0x16'))('api');var utils=require(_0x26ae('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x26ae('0x18'))['db'];var integrations=require(_0x26ae('0x19'));function respondWithStatusCode(_0x21811d,_0x17f9a6){_0x17f9a6=_0x17f9a6||0xcc;return function(_0x286b7e){if(_0x286b7e){return _0x21811d[_0x26ae('0x1a')](_0x17f9a6);}return _0x21811d[_0x26ae('0x1b')](_0x17f9a6)[_0x26ae('0x1c')]();};}function respondWithResult(_0x2390a7,_0x52d611){_0x52d611=_0x52d611||0xc8;return function(_0x31ed72){if(_0x31ed72){return _0x2390a7[_0x26ae('0x1b')](_0x52d611)['json'](_0x31ed72);}};}function respondWithFilteredResult(_0x15d055,_0x32cd9e){return function(_0x497974){if(_0x497974){var _0x444397=typeof _0x32cd9e[_0x26ae('0x1d')]===_0x26ae('0x1e')&&typeof _0x32cd9e[_0x26ae('0x1f')]===_0x26ae('0x1e');var _0x3c6812=_0x497974[_0x26ae('0x20')];var _0x3418c9=_0x444397?0x0:_0x32cd9e[_0x26ae('0x1d')];var _0x46f436=_0x444397?_0x497974[_0x26ae('0x20')]:_0x32cd9e[_0x26ae('0x1d')]+_0x32cd9e[_0x26ae('0x1f')];var _0x12d56e;if(_0x46f436>=_0x3c6812){_0x46f436=_0x3c6812;_0x12d56e=0xc8;}else{_0x12d56e=0xce;}_0x15d055[_0x26ae('0x1b')](_0x12d56e);return _0x15d055[_0x26ae('0x21')](_0x26ae('0x22'),_0x3418c9+'-'+_0x46f436+'/'+_0x3c6812)[_0x26ae('0x23')](_0x497974);}return null;};}function patchUpdates(_0x22d535){return function(_0x162c16){try{jsonpatch[_0x26ae('0x24')](_0x162c16,_0x22d535,!![]);}catch(_0x4e73ea){return BPromise['reject'](_0x4e73ea);}return _0x162c16[_0x26ae('0x25')]();};}function saveUpdates(_0x5d72dc,_0x22c47b){return function(_0x51079c){if(_0x51079c){return _0x51079c[_0x26ae('0x26')](_0x5d72dc)[_0x26ae('0x27')](function(_0x19f641){return _0x19f641;});}return null;};}function removeEntity(_0x57062e,_0x4ab3f1){return function(_0x41f96b){if(_0x41f96b){return _0x41f96b[_0x26ae('0x28')]()[_0x26ae('0x27')](function(){_0x57062e['status'](0xcc)[_0x26ae('0x1c')]();});}};}function handleEntityNotFound(_0x295cc2,_0x53e0da){return function(_0x1a0a32){if(!_0x1a0a32){_0x295cc2[_0x26ae('0x1a')](0x194);}return _0x1a0a32;};}function handleError(_0x19eacc,_0x4a0045){_0x4a0045=_0x4a0045||0x1f4;return function(_0x3cdb53){logger['error'](_0x3cdb53[_0x26ae('0x29')]);if(_0x3cdb53[_0x26ae('0x2a')]){delete _0x3cdb53[_0x26ae('0x2a')];}_0x19eacc['status'](_0x4a0045)[_0x26ae('0x2b')](_0x3cdb53);};}exports['index']=function(_0x4cddc4,_0x2f2e9d){var _0x2fcc89={},_0x5979ec={},_0x5308c={'count':0x0,'rows':[]};var _0x2ef88f=_[_0x26ae('0x2c')](db[_0x26ae('0x2d')][_0x26ae('0x2e')],function(_0x56f880){return{'name':_0x56f880[_0x26ae('0x2f')],'type':_0x56f880[_0x26ae('0x30')][_0x26ae('0x31')]};});_0x5979ec[_0x26ae('0x32')]=_[_0x26ae('0x2c')](_0x2ef88f,'name');_0x5979ec[_0x26ae('0x33')]=_[_0x26ae('0x34')](_0x4cddc4[_0x26ae('0x33')]);_0x5979ec[_0x26ae('0x35')]=_[_0x26ae('0x36')](_0x5979ec[_0x26ae('0x32')],_0x5979ec[_0x26ae('0x33')]);_0x2fcc89[_0x26ae('0x37')]=_['intersection'](_0x5979ec[_0x26ae('0x32')],qs['fields'](_0x4cddc4['query'][_0x26ae('0x38')]));_0x2fcc89[_0x26ae('0x37')]=_0x2fcc89[_0x26ae('0x37')]['length']?_0x2fcc89[_0x26ae('0x37')]:_0x5979ec[_0x26ae('0x32')];if(!_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x39')](_0x26ae('0x3a'))){_0x2fcc89[_0x26ae('0x1f')]=qs[_0x26ae('0x1f')](_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x1f')]);_0x2fcc89[_0x26ae('0x1d')]=qs[_0x26ae('0x1d')](_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x1d')]);}_0x2fcc89[_0x26ae('0x3b')]=qs['sort'](_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x3c')]);_0x2fcc89[_0x26ae('0x3d')]=qs['filters'](_[_0x26ae('0x3e')](_0x4cddc4[_0x26ae('0x33')],_0x5979ec[_0x26ae('0x35')]),_0x2ef88f);if(_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x3f')]){_0x2fcc89['where']=_[_0x26ae('0x40')](_0x2fcc89[_0x26ae('0x3d')],{'$or':_[_0x26ae('0x2c')](_0x2ef88f,function(_0x2ef6f4){if(_0x2ef6f4[_0x26ae('0x30')]!==_0x26ae('0x41')){var _0x585cac={};_0x585cac[_0x2ef6f4['name']]={'$like':'%'+_0x4cddc4['query'][_0x26ae('0x3f')]+'%'};return _0x585cac;}})});}_0x2fcc89=_[_0x26ae('0x40')]({},_0x2fcc89,_0x4cddc4[_0x26ae('0x42')]);var _0x1519a3={'where':_0x2fcc89[_0x26ae('0x3d')]};return db['FreshdeskAccount'][_0x26ae('0x20')](_0x1519a3)[_0x26ae('0x27')](function(_0x3ebca4){_0x5308c[_0x26ae('0x20')]=_0x3ebca4;if(_0x4cddc4[_0x26ae('0x33')][_0x26ae('0x43')]){_0x2fcc89[_0x26ae('0x44')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x26ae('0x45')](_0x2fcc89);})[_0x26ae('0x27')](function(_0x47abb5){_0x5308c[_0x26ae('0x46')]=_0x47abb5;return _0x5308c;})['then'](respondWithFilteredResult(_0x2f2e9d,_0x2fcc89))[_0x26ae('0x47')](handleError(_0x2f2e9d,null));};exports[_0x26ae('0x48')]=function(_0x92a7d8,_0x5e0369){var _0x2a0797={'raw':![],'where':{'id':_0x92a7d8[_0x26ae('0x49')]['id']}},_0x1f1edc={};_0x1f1edc[_0x26ae('0x32')]=_[_0x26ae('0x34')](db[_0x26ae('0x2d')]['rawAttributes']);_0x1f1edc['query']=_['keys'](_0x92a7d8[_0x26ae('0x33')]);_0x1f1edc[_0x26ae('0x35')]=_[_0x26ae('0x36')](_0x1f1edc[_0x26ae('0x32')],_0x1f1edc[_0x26ae('0x33')]);_0x2a0797['attributes']=_['intersection'](_0x1f1edc[_0x26ae('0x32')],qs[_0x26ae('0x38')](_0x92a7d8[_0x26ae('0x33')]['fields']));_0x2a0797[_0x26ae('0x37')]=_0x2a0797['attributes'][_0x26ae('0x4a')]?_0x2a0797[_0x26ae('0x37')]:_0x1f1edc['model'];if(_0x92a7d8['query'][_0x26ae('0x43')]){_0x2a0797['include']=[{'all':!![]}];}_0x2a0797=_[_0x26ae('0x40')]({},_0x2a0797,_0x92a7d8[_0x26ae('0x42')]);return db[_0x26ae('0x2d')][_0x26ae('0x4b')](_0x2a0797)[_0x26ae('0x27')](handleEntityNotFound(_0x5e0369,null))[_0x26ae('0x27')](respondWithResult(_0x5e0369,null))[_0x26ae('0x47')](handleError(_0x5e0369,null));};exports[_0x26ae('0x4c')]=function(_0x21a623,_0x308fe7){return db[_0x26ae('0x2d')]['create'](_0x21a623[_0x26ae('0x4d')],{})[_0x26ae('0x27')](respondWithResult(_0x308fe7,0xc9))[_0x26ae('0x47')](handleError(_0x308fe7,null));};exports[_0x26ae('0x26')]=function(_0x3e56bb,_0x34d5e7){if(_0x3e56bb[_0x26ae('0x4d')]['id']){delete _0x3e56bb[_0x26ae('0x4d')]['id'];}return db[_0x26ae('0x2d')][_0x26ae('0x4b')]({'where':{'id':_0x3e56bb[_0x26ae('0x49')]['id']}})[_0x26ae('0x27')](handleEntityNotFound(_0x34d5e7,null))[_0x26ae('0x27')](saveUpdates(_0x3e56bb['body'],null))[_0x26ae('0x27')](respondWithResult(_0x34d5e7,null))['catch'](handleError(_0x34d5e7,null));};exports[_0x26ae('0x28')]=function(_0x23e6be,_0x27b890){return db[_0x26ae('0x2d')][_0x26ae('0x4b')]({'where':{'id':_0x23e6be[_0x26ae('0x49')]['id']}})['then'](handleEntityNotFound(_0x27b890,null))[_0x26ae('0x27')](removeEntity(_0x27b890,null))['catch'](handleError(_0x27b890,null));};exports[_0x26ae('0x4e')]=function(_0x5ee7be,_0x304019,_0x1edd08){var _0x502d63={};var _0x24a3a2={};var _0x2579ea;var _0x44b9e6;return db[_0x26ae('0x2d')][_0x26ae('0x4f')]({'where':{'id':_0x5ee7be['params']['id']}})['then'](handleEntityNotFound(_0x304019,null))[_0x26ae('0x27')](function(_0xfdd593){if(_0xfdd593){_0x2579ea=_0xfdd593;_0x24a3a2['model']=_[_0x26ae('0x34')](db[_0x26ae('0x50')][_0x26ae('0x2e')]);_0x24a3a2['query']=_[_0x26ae('0x34')](_0x5ee7be[_0x26ae('0x33')]);_0x24a3a2[_0x26ae('0x35')]=_[_0x26ae('0x36')](_0x24a3a2[_0x26ae('0x32')],_0x24a3a2[_0x26ae('0x33')]);_0x502d63[_0x26ae('0x37')]=_[_0x26ae('0x36')](_0x24a3a2[_0x26ae('0x32')],qs[_0x26ae('0x38')](_0x5ee7be[_0x26ae('0x33')][_0x26ae('0x38')]));_0x502d63[_0x26ae('0x37')]=_0x502d63[_0x26ae('0x37')][_0x26ae('0x4a')]?_0x502d63[_0x26ae('0x37')]:_0x24a3a2[_0x26ae('0x32')];_0x502d63[_0x26ae('0x3b')]=qs[_0x26ae('0x3c')](_0x5ee7be[_0x26ae('0x33')]['sort']);_0x502d63['where']=qs[_0x26ae('0x35')](_[_0x26ae('0x3e')](_0x5ee7be[_0x26ae('0x33')],_0x24a3a2['filters']));if(_0x5ee7be[_0x26ae('0x33')]['filter']){_0x502d63[_0x26ae('0x3d')]=_[_0x26ae('0x40')](_0x502d63['where'],{'$or':_[_0x26ae('0x2c')](_0x502d63[_0x26ae('0x37')],function(_0x3abaef){var _0x2cfd47={};_0x2cfd47[_0x3abaef]={'$like':'%'+_0x5ee7be[_0x26ae('0x33')][_0x26ae('0x3f')]+'%'};return _0x2cfd47;})});}_0x502d63=_[_0x26ae('0x40')]({},_0x502d63,_0x5ee7be[_0x26ae('0x42')]);return _0x2579ea[_0x26ae('0x4e')](_0x502d63);}})[_0x26ae('0x27')](function(_0x391e07){if(_0x391e07){_0x44b9e6=_0x391e07[_0x26ae('0x4a')];if(!_0x5ee7be[_0x26ae('0x33')][_0x26ae('0x39')](_0x26ae('0x3a'))){_0x502d63['limit']=qs[_0x26ae('0x1f')](_0x5ee7be['query'][_0x26ae('0x1f')]);_0x502d63['offset']=qs[_0x26ae('0x1d')](_0x5ee7be[_0x26ae('0x33')][_0x26ae('0x1d')]);}return _0x2579ea[_0x26ae('0x4e')](_0x502d63);}})[_0x26ae('0x27')](function(_0x5695b4){if(_0x5695b4){return _0x5695b4?{'count':_0x44b9e6,'rows':_0x5695b4}:null;}})['then'](respondWithResult(_0x304019,null))[_0x26ae('0x47')](handleError(_0x304019,null));};exports[_0x26ae('0x51')]=function(_0x10ce69,_0x4c5674,_0x4f7c40){if(_0x10ce69['body']['id']){delete _0x10ce69['body']['id'];}return db['FreshdeskAccount'][_0x26ae('0x4f')]({'where':{'id':_0x10ce69['params']['id']}})[_0x26ae('0x27')](handleEntityNotFound(_0x4c5674,null))[_0x26ae('0x27')](function(_0x47c82c){if(_0x47c82c){_0x10ce69[_0x26ae('0x4d')][_0x26ae('0x52')]=_0x47c82c['id'];_0x10ce69['body'][_0x26ae('0x53')]=integrations['getSubjects'](_0x10ce69[_0x26ae('0x4d')][_0x26ae('0x54')],_0x10ce69[_0x26ae('0x4d')][_0x26ae('0x30')]);_0x10ce69[_0x26ae('0x4d')][_0x26ae('0x55')]=integrations[_0x26ae('0x56')](_0x10ce69[_0x26ae('0x4d')][_0x26ae('0x54')],_0x10ce69['body']['type']);return db[_0x26ae('0x50')][_0x26ae('0x4c')](_0x10ce69[_0x26ae('0x4d')],{'include':[{'model':db[_0x26ae('0x57')],'as':_0x26ae('0x53')},{'model':db[_0x26ae('0x57')],'as':_0x26ae('0x55')}]});}return null;})[_0x26ae('0x27')](respondWithResult(_0x4c5674,null))[_0x26ae('0x47')](handleError(_0x4c5674,null));};exports[_0x26ae('0x58')]=function(_0x3c10df,_0x4b8208,_0x5031e3){var _0x4ee50b='';return db[_0x26ae('0x2d')][_0x26ae('0x4f')]({'where':{'id':_0x3c10df['params']['id']},'attributes':['id','remoteUri','apiKey']})['then'](handleEntityNotFound(_0x4b8208,null))[_0x26ae('0x27')](function(_0x1e49ed){if(_0x1e49ed){_0x4ee50b=_0x1e49ed['remoteUri'];var _0x4ec8e7=_0x4ee50b[_0x26ae('0x59')](-0x1);if(_0x4ec8e7==='/'){_0x4ee50b=_0x4ee50b[_0x26ae('0x5a')](0x0,_0x4ee50b[_0x26ae('0x5b')](_0x4ec8e7));}return rp({'method':_0x26ae('0x5c'),'uri':util[_0x26ae('0x5d')](_0x26ae('0x5e'),_0x4ee50b,_0x26ae('0x5f')),'headers':{'Authorization':util['format'](_0x26ae('0x60'),new Buffer(util[_0x26ae('0x5d')]('%s:X',_0x1e49ed[_0x26ae('0x61')]))[_0x26ae('0x62')](_0x26ae('0x63')))},'json':!![]});}})[_0x26ae('0x27')](function(_0x2ff318){if(_0x2ff318){var _0x56688c=[_0x26ae('0x64'),_0x26ae('0x65'),_0x26ae('0x66'),'description',_0x26ae('0x1b'),'priority',_0x26ae('0x67'),_0x26ae('0x68'),_0x26ae('0x69'),_0x26ae('0x67'),_0x26ae('0x6a')];_[_0x26ae('0x6b')](_0x2ff318,function(_0x37a250){return _0x56688c[_0x26ae('0x6c')](_0x37a250[_0x26ae('0x2a')])||!_0x37a250['default']&&_0x37a250[_0x26ae('0x30')]!==_0x26ae('0x6d')&&_0x37a250[_0x26ae('0x30')]!==_0x26ae('0x6e');});return{'count':_0x2ff318[_0x26ae('0x4a')],'rows':_[_0x26ae('0x2c')](_0x2ff318,function(_0x38ac6c){return{'id':_0x38ac6c[_0x26ae('0x2a')],'name':_0x38ac6c[_0x26ae('0x6f')],'custom':!_0x38ac6c[_0x26ae('0x70')],'options':_0x38ac6c['choices']?_[_0x26ae('0x2c')](_0x38ac6c[_0x26ae('0x71')],function(_0x561832){return{'name':_[_0x26ae('0x72')](_0x561832),'value':_0x561832};}):[]};})};}})[_0x26ae('0x27')](respondWithResult(_0x4b8208,null))['catch'](function(_0x509572){var _0xedc3fb=_0x3c10df[_0x26ae('0x33')]['test']?0x1f4:_0x509572[_0x26ae('0x73')]||0x1f4;logger['error'](_0x26ae('0x74'),_0x26ae('0x58'),_0xedc3fb,JSON[_0x26ae('0x75')](_0x509572));delete _0x509572[_0x26ae('0x2a')];if(_0xedc3fb===0x191){_0xedc3fb=0x190;}_0x4b8208['status'](_0xedc3fb)[_0x26ae('0x2b')](_0x3c10df['query']['test']?{'message':_0x26ae('0x76'),'statusCode':_0x509572[_0x26ae('0x73')]}:_0x509572);});};
\ No newline at end of file
+var _0xfbac=['priority','group','source','company','remove','includes','default','custom_text','custom_dropdown','label','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','then','error','name','send','index','FreshdeskAccount','type','key','model','map','query','keys','attributes','fields','length','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','rawAttributes','intersection','find','create','body','params','destroy','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','getDescriptions','FreshdeskField','Subjects','remoteUri','slice','substring','lastIndexOf','GET','format','Basic\x20%s','%s:X','apiKey','toString','base64','requester','subject','agent'];(function(_0x175f33,_0x58b838){var _0x250a92=function(_0x588709){while(--_0x588709){_0x175f33['push'](_0x175f33['shift']());}};_0x250a92(++_0x58b838);}(_0xfbac,0x167));var _0xcfba=function(_0x11824f,_0x3ab8e1){_0x11824f=_0x11824f-0x0;var _0x10ae32=_0xfbac[_0x11824f];return _0x10ae32;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcfba('0x0'));var zipdir=require(_0xcfba('0x1'));var jsonpatch=require(_0xcfba('0x2'));var rp=require(_0xcfba('0x3'));var moment=require(_0xcfba('0x4'));var BPromise=require(_0xcfba('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcfba('0x6'));var sox=require(_0xcfba('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfba('0x8'));var _=require('lodash');var squel=require(_0xcfba('0x9'));var crypto=require('crypto');var jsforce=require(_0xcfba('0xa'));var deskjs=require(_0xcfba('0xb'));var toCsv=require('to-csv');var querystring=require(_0xcfba('0xc'));var Papa=require(_0xcfba('0xd'));var Redis=require(_0xcfba('0xe'));var authService=require(_0xcfba('0xf'));var qs=require(_0xcfba('0x10'));var as=require(_0xcfba('0x11'));var hardwareService=require(_0xcfba('0x12'));var logger=require(_0xcfba('0x13'))(_0xcfba('0x14'));var utils=require(_0xcfba('0x15'));var config=require(_0xcfba('0x16'));var licenseUtil=require(_0xcfba('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f590b,_0x24168c){_0x24168c=_0x24168c||0xcc;return function(_0x4c2ae0){if(_0x4c2ae0){return _0x1f590b[_0xcfba('0x18')](_0x24168c);}return _0x1f590b[_0xcfba('0x19')](_0x24168c)[_0xcfba('0x1a')]();};}function respondWithResult(_0x226e89,_0x2333ee){_0x2333ee=_0x2333ee||0xc8;return function(_0x2db67a){if(_0x2db67a){return _0x226e89[_0xcfba('0x19')](_0x2333ee)[_0xcfba('0x1b')](_0x2db67a);}};}function respondWithFilteredResult(_0x2f497b,_0x18d1d6){return function(_0x231192){if(_0x231192){var _0x37a850=typeof _0x18d1d6[_0xcfba('0x1c')]==='undefined'&&typeof _0x18d1d6[_0xcfba('0x1d')]===_0xcfba('0x1e');var _0x8e34d6=_0x231192[_0xcfba('0x1f')];var _0x1bf52d=_0x37a850?0x0:_0x18d1d6[_0xcfba('0x1c')];var _0x112955=_0x37a850?_0x231192['count']:_0x18d1d6[_0xcfba('0x1c')]+_0x18d1d6[_0xcfba('0x1d')];var _0x35cec9;if(_0x112955>=_0x8e34d6){_0x112955=_0x8e34d6;_0x35cec9=0xc8;}else{_0x35cec9=0xce;}_0x2f497b['status'](_0x35cec9);return _0x2f497b['set'](_0xcfba('0x20'),_0x1bf52d+'-'+_0x112955+'/'+_0x8e34d6)[_0xcfba('0x1b')](_0x231192);}return null;};}function patchUpdates(_0x40a0df){return function(_0x467762){try{jsonpatch[_0xcfba('0x21')](_0x467762,_0x40a0df,!![]);}catch(_0x6d6f6d){return BPromise['reject'](_0x6d6f6d);}return _0x467762[_0xcfba('0x22')]();};}function saveUpdates(_0x5d4c92,_0x286d20){return function(_0x1e187f){if(_0x1e187f){return _0x1e187f['update'](_0x5d4c92)[_0xcfba('0x23')](function(_0x42cf58){return _0x42cf58;});}return null;};}function removeEntity(_0x14850f,_0x3fb061){return function(_0x5f4e17){if(_0x5f4e17){return _0x5f4e17['destroy']()[_0xcfba('0x23')](function(){_0x14850f[_0xcfba('0x19')](0xcc)[_0xcfba('0x1a')]();});}};}function handleEntityNotFound(_0x4c9098,_0x1f01a7){return function(_0x544913){if(!_0x544913){_0x4c9098[_0xcfba('0x18')](0x194);}return _0x544913;};}function handleError(_0x5e79c7,_0x4ee825){_0x4ee825=_0x4ee825||0x1f4;return function(_0xf2e3d5){logger[_0xcfba('0x24')](_0xf2e3d5['stack']);if(_0xf2e3d5[_0xcfba('0x25')]){delete _0xf2e3d5[_0xcfba('0x25')];}_0x5e79c7[_0xcfba('0x19')](_0x4ee825)[_0xcfba('0x26')](_0xf2e3d5);};}exports[_0xcfba('0x27')]=function(_0x1c3343,_0x2ee85c){var _0x4585ec={},_0x5c77c4={},_0x7c7d76={'count':0x0,'rows':[]};var _0x4aa981=_['map'](db[_0xcfba('0x28')]['rawAttributes'],function(_0x2ec629){return{'name':_0x2ec629['fieldName'],'type':_0x2ec629[_0xcfba('0x29')][_0xcfba('0x2a')]};});_0x5c77c4[_0xcfba('0x2b')]=_[_0xcfba('0x2c')](_0x4aa981,_0xcfba('0x25'));_0x5c77c4[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1c3343[_0xcfba('0x2d')]);_0x5c77c4['filters']=_['intersection'](_0x5c77c4['model'],_0x5c77c4[_0xcfba('0x2d')]);_0x4585ec[_0xcfba('0x2f')]=_['intersection'](_0x5c77c4[_0xcfba('0x2b')],qs['fields'](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x4585ec[_0xcfba('0x2f')]=_0x4585ec[_0xcfba('0x2f')][_0xcfba('0x31')]?_0x4585ec[_0xcfba('0x2f')]:_0x5c77c4[_0xcfba('0x2b')];if(!_0x1c3343[_0xcfba('0x2d')]['hasOwnProperty'](_0xcfba('0x32'))){_0x4585ec[_0xcfba('0x1d')]=qs[_0xcfba('0x1d')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x4585ec[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x1c3343['query'][_0xcfba('0x1c')]);}_0x4585ec[_0xcfba('0x33')]=qs[_0xcfba('0x34')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x34')]);_0x4585ec['where']=qs['filters'](_[_0xcfba('0x35')](_0x1c3343[_0xcfba('0x2d')],_0x5c77c4[_0xcfba('0x36')]),_0x4aa981);if(_0x1c3343[_0xcfba('0x2d')]['filter']){_0x4585ec[_0xcfba('0x37')]=_[_0xcfba('0x38')](_0x4585ec['where'],{'$or':_['map'](_0x4aa981,function(_0x14ccc9){if(_0x14ccc9[_0xcfba('0x29')]!==_0xcfba('0x39')){var _0x39f058={};_0x39f058[_0x14ccc9[_0xcfba('0x25')]]={'$like':'%'+_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3a')]+'%'};return _0x39f058;}})});}_0x4585ec=_['merge']({},_0x4585ec,_0x1c3343[_0xcfba('0x3b')]);var _0x43c206={'where':_0x4585ec['where']};return db[_0xcfba('0x28')]['count'](_0x43c206)[_0xcfba('0x23')](function(_0x4a2750){_0x7c7d76[_0xcfba('0x1f')]=_0x4a2750;if(_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x4585ec[_0xcfba('0x3d')]=[{'all':!![]}];}return db[_0xcfba('0x28')][_0xcfba('0x3e')](_0x4585ec);})['then'](function(_0x3be84d){_0x7c7d76['rows']=_0x3be84d;return _0x7c7d76;})['then'](respondWithFilteredResult(_0x2ee85c,_0x4585ec))[_0xcfba('0x3f')](handleError(_0x2ee85c,null));};exports[_0xcfba('0x40')]=function(_0x1279a9,_0x237015){var _0x3b4466={'raw':![],'where':{'id':_0x1279a9['params']['id']}},_0x1ea9d9={};_0x1ea9d9['model']=_['keys'](db[_0xcfba('0x28')][_0xcfba('0x41')]);_0x1ea9d9[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1279a9[_0xcfba('0x2d')]);_0x1ea9d9[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],_0x1ea9d9[_0xcfba('0x2d')]);_0x3b4466['attributes']=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],qs[_0xcfba('0x30')](_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x3b4466[_0xcfba('0x2f')]=_0x3b4466[_0xcfba('0x2f')]['length']?_0x3b4466[_0xcfba('0x2f')]:_0x1ea9d9[_0xcfba('0x2b')];if(_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x3b4466['include']=[{'all':!![]}];}_0x3b4466=_[_0xcfba('0x38')]({},_0x3b4466,_0x1279a9[_0xcfba('0x3b')]);return db[_0xcfba('0x28')][_0xcfba('0x43')](_0x3b4466)[_0xcfba('0x23')](handleEntityNotFound(_0x237015,null))[_0xcfba('0x23')](respondWithResult(_0x237015,null))[_0xcfba('0x3f')](handleError(_0x237015,null));};exports['create']=function(_0x4a48e0,_0x11ad05){return db[_0xcfba('0x28')][_0xcfba('0x44')](_0x4a48e0[_0xcfba('0x45')],{})[_0xcfba('0x23')](respondWithResult(_0x11ad05,0xc9))[_0xcfba('0x3f')](handleError(_0x11ad05,null));};exports['update']=function(_0x57ff92,_0x53a599){if(_0x57ff92[_0xcfba('0x45')]['id']){delete _0x57ff92['body']['id'];}return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x57ff92[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x53a599,null))['then'](saveUpdates(_0x57ff92['body'],null))[_0xcfba('0x23')](respondWithResult(_0x53a599,null))[_0xcfba('0x3f')](handleError(_0x53a599,null));};exports[_0xcfba('0x47')]=function(_0x3a88b6,_0x2a204f){return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x3a88b6[_0xcfba('0x46')]['id']}})['then'](handleEntityNotFound(_0x2a204f,null))['then'](removeEntity(_0x2a204f,null))[_0xcfba('0x3f')](handleError(_0x2a204f,null));};exports[_0xcfba('0x48')]=function(_0x358477,_0x1193c3,_0x47056f){var _0x187711={};var _0x3fc544={};var _0x3c76a4;var _0x288d88;return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x358477[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x1193c3,null))[_0xcfba('0x23')](function(_0x5f36ac){if(_0x5f36ac){_0x3c76a4=_0x5f36ac;_0x3fc544['model']=_[_0xcfba('0x2e')](db[_0xcfba('0x4a')][_0xcfba('0x41')]);_0x3fc544[_0xcfba('0x2d')]=_['keys'](_0x358477[_0xcfba('0x2d')]);_0x3fc544[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x3fc544['model'],_0x3fc544[_0xcfba('0x2d')]);_0x187711[_0xcfba('0x2f')]=_[_0xcfba('0x42')](_0x3fc544['model'],qs[_0xcfba('0x30')](_0x358477[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x187711[_0xcfba('0x2f')]=_0x187711['attributes']['length']?_0x187711[_0xcfba('0x2f')]:_0x3fc544[_0xcfba('0x2b')];_0x187711['order']=qs['sort'](_0x358477[_0xcfba('0x2d')]['sort']);_0x187711[_0xcfba('0x37')]=qs[_0xcfba('0x36')](_[_0xcfba('0x35')](_0x358477['query'],_0x3fc544[_0xcfba('0x36')]));if(_0x358477[_0xcfba('0x2d')][_0xcfba('0x3a')]){_0x187711[_0xcfba('0x37')]=_['merge'](_0x187711[_0xcfba('0x37')],{'$or':_[_0xcfba('0x2c')](_0x187711[_0xcfba('0x2f')],function(_0x2cb131){var _0x11524f={};_0x11524f[_0x2cb131]={'$like':'%'+_0x358477[_0xcfba('0x2d')]['filter']+'%'};return _0x11524f;})});}_0x187711=_[_0xcfba('0x38')]({},_0x187711,_0x358477[_0xcfba('0x3b')]);return _0x3c76a4[_0xcfba('0x48')](_0x187711);}})['then'](function(_0x3a32a6){if(_0x3a32a6){_0x288d88=_0x3a32a6['length'];if(!_0x358477[_0xcfba('0x2d')][_0xcfba('0x4b')](_0xcfba('0x32'))){_0x187711[_0xcfba('0x1d')]=qs['limit'](_0x358477[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x187711[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x358477['query'][_0xcfba('0x1c')]);}return _0x3c76a4['getConfigurations'](_0x187711);}})[_0xcfba('0x23')](function(_0x349d49){if(_0x349d49){return _0x349d49?{'count':_0x288d88,'rows':_0x349d49}:null;}})[_0xcfba('0x23')](respondWithResult(_0x1193c3,null))[_0xcfba('0x3f')](handleError(_0x1193c3,null));};exports[_0xcfba('0x4c')]=function(_0x4f352b,_0x46aa02,_0x590649){if(_0x4f352b[_0xcfba('0x45')]['id']){delete _0x4f352b[_0xcfba('0x45')]['id'];}return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x4f352b['params']['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x46aa02,null))['then'](function(_0x3caa25){if(_0x3caa25){_0x4f352b['body'][_0xcfba('0x4d')]=_0x3caa25['id'];_0x4f352b[_0xcfba('0x45')]['Subjects']=integrations['getSubjects'](_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4e')],_0x4f352b['body'][_0xcfba('0x29')]);_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4f')]=integrations[_0xcfba('0x50')](_0x4f352b[_0xcfba('0x45')]['channel'],_0x4f352b[_0xcfba('0x45')][_0xcfba('0x29')]);return db['FreshdeskConfiguration']['create'](_0x4f352b[_0xcfba('0x45')],{'include':[{'model':db[_0xcfba('0x51')],'as':_0xcfba('0x52')},{'model':db[_0xcfba('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x46aa02,null))['catch'](handleError(_0x46aa02,null));};exports['getFields']=function(_0x120dd4,_0x223d03,_0x246c98){var _0x3dfe40='';return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x120dd4[_0xcfba('0x46')]['id']},'attributes':['id',_0xcfba('0x53'),'apiKey']})[_0xcfba('0x23')](handleEntityNotFound(_0x223d03,null))[_0xcfba('0x23')](function(_0x3e5b25){if(_0x3e5b25){_0x3dfe40=_0x3e5b25[_0xcfba('0x53')];var _0x8e5974=_0x3dfe40[_0xcfba('0x54')](-0x1);if(_0x8e5974==='/'){_0x3dfe40=_0x3dfe40[_0xcfba('0x55')](0x0,_0x3dfe40[_0xcfba('0x56')](_0x8e5974));}return rp({'method':_0xcfba('0x57'),'uri':util[_0xcfba('0x58')]('%s/%s',_0x3dfe40,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xcfba('0x58')](_0xcfba('0x59'),new Buffer(util[_0xcfba('0x58')](_0xcfba('0x5a'),_0x3e5b25[_0xcfba('0x5b')]))[_0xcfba('0x5c')](_0xcfba('0x5d')))},'json':!![]});}})[_0xcfba('0x23')](function(_0x380bab){if(_0x380bab){var _0x2afafb=[_0xcfba('0x5e'),_0xcfba('0x5f'),_0xcfba('0x60'),'description',_0xcfba('0x19'),_0xcfba('0x61'),_0xcfba('0x62'),_0xcfba('0x63'),'ticket_type',_0xcfba('0x62'),_0xcfba('0x64')];_[_0xcfba('0x65')](_0x380bab,function(_0x13ec29){return _0x2afafb[_0xcfba('0x66')](_0x13ec29['name'])||!_0x13ec29[_0xcfba('0x67')]&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x68')&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x69');});return{'count':_0x380bab[_0xcfba('0x31')],'rows':_[_0xcfba('0x2c')](_0x380bab,function(_0x19a59a){return{'id':_0x19a59a[_0xcfba('0x25')],'name':_0x19a59a[_0xcfba('0x6a')],'custom':!_0x19a59a[_0xcfba('0x67')],'options':_0x19a59a['choices']?_[_0xcfba('0x2c')](_0x19a59a['choices'],function(_0x4d5f47){return{'name':_[_0xcfba('0x6b')](_0x4d5f47),'value':_0x4d5f47};}):[]};})};}})[_0xcfba('0x23')](respondWithResult(_0x223d03,null))[_0xcfba('0x3f')](function(_0x385c0a){var _0x59674b=_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?0x1f4:_0x385c0a[_0xcfba('0x6d')]||0x1f4;logger[_0xcfba('0x24')](_0xcfba('0x6e'),_0xcfba('0x6f'),_0x59674b,JSON[_0xcfba('0x70')](_0x385c0a));delete _0x385c0a[_0xcfba('0x25')];if(_0x59674b===0x191){_0x59674b=0x190;}_0x223d03[_0xcfba('0x19')](_0x59674b)[_0xcfba('0x26')](_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?{'message':_0xcfba('0x71'),'statusCode':_0x385c0a[_0xcfba('0x6d')]}:_0x385c0a);});};
\ No newline at end of file
index 444ff89..50cc69d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc777=['../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','util','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x10d0bf,_0x5f3acb){var _0x2dabd4=function(_0x288ab9){while(--_0x288ab9){_0x10d0bf['push'](_0x10d0bf['shift']());}};_0x2dabd4(++_0x5f3acb);}(_0xc777,0x154));var _0x7c77=function(_0x329995,_0x294b27){_0x329995=_0x329995-0x0;var _0x3ff602=_0xc777[_0x329995];return _0x3ff602;};'use strict';var _=require('lodash');var util=require(_0x7c77('0x0'));var logger=require('../../config/logger')(_0x7c77('0x1'));var moment=require(_0x7c77('0x2'));var BPromise=require('bluebird');var rp=require(_0x7c77('0x3'));var fs=require('fs');var path=require(_0x7c77('0x4'));var rimraf=require(_0x7c77('0x5'));var config=require(_0x7c77('0x6'));var attributes=require(_0x7c77('0x7'));var integrations=require(_0x7c77('0x8'));module['exports']=function(_0x18db55,_0x5a954a){return _0x18db55[_0x7c77('0x9')](_0x7c77('0xa'),attributes,{'tableName':_0x7c77('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd4b4=['moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','util','../../config/logger','api'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xd4b4,0x75));var _0x4d4b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4b4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4d4b('0x0'));var logger=require(_0x4d4b('0x1'))(_0x4d4b('0x2'));var moment=require(_0x4d4b('0x3'));var BPromise=require(_0x4d4b('0x4'));var rp=require(_0x4d4b('0x5'));var fs=require('fs');var path=require(_0x4d4b('0x6'));var rimraf=require('rimraf');var config=require(_0x4d4b('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x4d4b('0x8'));module['exports']=function(_0x18f423,_0x123643){return _0x18f423[_0x4d4b('0x9')](_0x4d4b('0xa'),attributes,{'tableName':_0x4d4b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a884b56..28a96b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac92=['message','result','catch','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','include','model','map','stringify','ShowFreshdeskAccount','find','info','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','FreshdeskAccount,\x20%s,\x20%s'];(function(_0x418962,_0x5977ad){var _0xf8177a=function(_0x58cb3b){while(--_0x58cb3b){_0x418962['push'](_0x418962['shift']());}};_0xf8177a(++_0x5977ad);}(_0xac92,0xdd));var _0x2ac9=function(_0x265ed5,_0x5e28cf){_0x265ed5=_0x265ed5-0x0;var _0x22a595=_0xac92[_0x265ed5];return _0x22a595;};'use strict';var _=require(_0x2ac9('0x0'));var util=require(_0x2ac9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2ac9('0x2'));var fs=require('fs');var Redis=require(_0x2ac9('0x3'));var db=require(_0x2ac9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2ac9('0x5'))(_0x2ac9('0x6'));var config=require('../../config/environment');var jayson=require(_0x2ac9('0x7'));var client=jayson[_0x2ac9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13fbdd,_0x30d15b,_0x5abb8e){return new BPromise(function(_0x3814d5,_0x3402b8){return client[_0x2ac9('0x9')](_0x13fbdd,_0x5abb8e)[_0x2ac9('0xa')](function(_0x3e1a41){logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x30d15b,'request\x20sent');logger[_0x2ac9('0xb')](_0x2ac9('0xc'),_0x30d15b,_0x2ac9('0xd'),JSON['stringify'](_0x3e1a41));if(_0x3e1a41[_0x2ac9('0xe')]){if(_0x3e1a41[_0x2ac9('0xe')][_0x2ac9('0xf')]===0x1f4){logger[_0x2ac9('0xe')](_0x2ac9('0x10'),_0x30d15b,_0x3e1a41[_0x2ac9('0xe')]['message']);return _0x3402b8(_0x3e1a41[_0x2ac9('0xe')][_0x2ac9('0x11')]);}logger[_0x2ac9('0xe')](_0x2ac9('0x10'),_0x30d15b,_0x3e1a41[_0x2ac9('0xe')][_0x2ac9('0x11')]);return _0x3814d5(_0x3e1a41[_0x2ac9('0xe')]['message']);}else{logger['info'](_0x2ac9('0x10'),_0x30d15b,_0x2ac9('0xd'));_0x3814d5(_0x3e1a41[_0x2ac9('0x12')][_0x2ac9('0x11')]);}})[_0x2ac9('0x13')](function(_0x35fb1e){logger[_0x2ac9('0xe')](_0x2ac9('0x10'),_0x30d15b,_0x35fb1e);_0x3402b8(_0x35fb1e);});});}exports[_0x2ac9('0x14')]=function(_0x98ed45){var _0x18917f=this;return new Promise(function(_0xb36c00,_0x22b686){return db[_0x2ac9('0x15')]['findAll']({'raw':_0x98ed45[_0x2ac9('0x16')]?_0x98ed45[_0x2ac9('0x16')][_0x2ac9('0x17')]===undefined?!![]:![]:!![],'where':_0x98ed45[_0x2ac9('0x16')]?_0x98ed45['options'][_0x2ac9('0x18')]||null:null,'attributes':_0x98ed45['options']?_0x98ed45[_0x2ac9('0x16')][_0x2ac9('0x19')]||null:null,'limit':_0x98ed45['options']?_0x98ed45['options'][_0x2ac9('0x1a')]||null:null,'include':_0x98ed45[_0x2ac9('0x16')]?_0x98ed45[_0x2ac9('0x16')]['include']?_['map'](_0x98ed45['options'][_0x2ac9('0x1b')],function(_0x2890c5){return{'model':db[_0x2890c5[_0x2ac9('0x1c')]],'as':_0x2890c5['as'],'attributes':_0x2890c5[_0x2ac9('0x19')],'include':_0x2890c5['include']?_[_0x2ac9('0x1d')](_0x2890c5[_0x2ac9('0x1b')],function(_0xb6b758){return{'model':db[_0xb6b758[_0x2ac9('0x1c')]],'as':_0xb6b758['as'],'attributes':_0xb6b758[_0x2ac9('0x19')],'include':_0xb6b758[_0x2ac9('0x1b')]?_[_0x2ac9('0x1d')](_0xb6b758[_0x2ac9('0x1b')],function(_0x3f5ad4){return{'model':db[_0x3f5ad4[_0x2ac9('0x1c')]],'as':_0x3f5ad4['as'],'attributes':_0x3f5ad4[_0x2ac9('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2ac9('0xa')](function(_0x3bbd36){logger['info'](_0x2ac9('0x14'),_0x98ed45);logger[_0x2ac9('0xb')](_0x2ac9('0x14'),_0x98ed45,JSON[_0x2ac9('0x1e')](_0x3bbd36));_0xb36c00(_0x3bbd36);})[_0x2ac9('0x13')](function(_0x4665e1){logger['error'](_0x2ac9('0x14'),_0x4665e1[_0x2ac9('0x11')],_0x98ed45);_0x22b686(_0x18917f[_0x2ac9('0xe')](0x1f4,_0x4665e1['message']));});});};exports[_0x2ac9('0x1f')]=function(_0x1afc81){var _0x177da0=this;return new Promise(function(_0x11453b,_0x24c85c){return db[_0x2ac9('0x15')][_0x2ac9('0x20')]({'raw':_0x1afc81[_0x2ac9('0x16')]?_0x1afc81['options'][_0x2ac9('0x17')]===undefined?!![]:![]:!![],'where':_0x1afc81[_0x2ac9('0x16')]?_0x1afc81[_0x2ac9('0x16')]['where']||null:null,'attributes':_0x1afc81[_0x2ac9('0x16')]?_0x1afc81[_0x2ac9('0x16')][_0x2ac9('0x19')]||null:null,'include':_0x1afc81[_0x2ac9('0x16')]?_0x1afc81[_0x2ac9('0x16')][_0x2ac9('0x1b')]?_[_0x2ac9('0x1d')](_0x1afc81[_0x2ac9('0x16')][_0x2ac9('0x1b')],function(_0x60b8ce){return{'model':db[_0x60b8ce['model']],'as':_0x60b8ce['as'],'attributes':_0x60b8ce[_0x2ac9('0x19')],'include':_0x60b8ce[_0x2ac9('0x1b')]?_['map'](_0x60b8ce[_0x2ac9('0x1b')],function(_0x1298d2){return{'model':db[_0x1298d2[_0x2ac9('0x1c')]],'as':_0x1298d2['as'],'attributes':_0x1298d2[_0x2ac9('0x19')],'include':_0x1298d2[_0x2ac9('0x1b')]?_[_0x2ac9('0x1d')](_0x1298d2[_0x2ac9('0x1b')],function(_0x39e844){return{'model':db[_0x39e844['model']],'as':_0x39e844['as'],'attributes':_0x39e844[_0x2ac9('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x365983){logger[_0x2ac9('0x21')](_0x2ac9('0x1f'),_0x1afc81);logger[_0x2ac9('0xb')]('ShowFreshdeskAccount',_0x1afc81,JSON[_0x2ac9('0x1e')](_0x365983));_0x11453b(_0x365983);})[_0x2ac9('0x13')](function(_0x13175f){logger[_0x2ac9('0xe')](_0x2ac9('0x1f'),_0x13175f['message'],_0x1afc81);_0x24c85c(_0x177da0[_0x2ac9('0xe')](0x1f4,_0x13175f[_0x2ac9('0x11')]));});});};
\ No newline at end of file
+var _0xc4fe=['error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','include','map','model','then','catch','ShowFreshdeskAccount','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0xc4fe,0x1bd));var _0xec4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xec4f('0x0'));var util=require(_0xec4f('0x1'));var moment=require(_0xec4f('0x2'));var BPromise=require(_0xec4f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec4f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xec4f('0x5'));var logger=require(_0xec4f('0x6'))(_0xec4f('0x7'));var config=require(_0xec4f('0x8'));var jayson=require(_0xec4f('0x9'));var client=jayson[_0xec4f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x12f6ce,_0x2a1a25,_0x490055){return new BPromise(function(_0x5c848c,_0x416bf9){return client['request'](_0x12f6ce,_0x490055)['then'](function(_0x1836b4){logger[_0xec4f('0xb')](_0xec4f('0xc'),_0x2a1a25,_0xec4f('0xd'));logger[_0xec4f('0xe')](_0xec4f('0xf'),_0x2a1a25,_0xec4f('0xd'),JSON[_0xec4f('0x10')](_0x1836b4));if(_0x1836b4[_0xec4f('0x11')]){if(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x12')]===0x1f4){logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);return _0x416bf9(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);}logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);return _0x5c848c(_0x1836b4[_0xec4f('0x11')][_0xec4f('0x13')]);}else{logger[_0xec4f('0xb')](_0xec4f('0xc'),_0x2a1a25,_0xec4f('0xd'));_0x5c848c(_0x1836b4[_0xec4f('0x14')][_0xec4f('0x13')]);}})['catch'](function(_0x3207a0){logger[_0xec4f('0x11')](_0xec4f('0xc'),_0x2a1a25,_0x3207a0);_0x416bf9(_0x3207a0);});});}exports[_0xec4f('0x15')]=function(_0x17f788){var _0x5000f8=this;return new Promise(function(_0x1b4bb9,_0xb00a1d){return db[_0xec4f('0x16')][_0xec4f('0x17')]({'raw':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')][_0xec4f('0x19')]===undefined?!![]:![]:!![],'where':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')]['where']||null:null,'attributes':_0x17f788[_0xec4f('0x18')]?_0x17f788['options'][_0xec4f('0x1a')]||null:null,'limit':_0x17f788['options']?_0x17f788[_0xec4f('0x18')]['limit']||null:null,'include':_0x17f788[_0xec4f('0x18')]?_0x17f788[_0xec4f('0x18')][_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x17f788['options'][_0xec4f('0x1b')],function(_0x5107fd){return{'model':db[_0x5107fd[_0xec4f('0x1d')]],'as':_0x5107fd['as'],'attributes':_0x5107fd[_0xec4f('0x1a')],'include':_0x5107fd[_0xec4f('0x1b')]?_['map'](_0x5107fd[_0xec4f('0x1b')],function(_0x309239){return{'model':db[_0x309239[_0xec4f('0x1d')]],'as':_0x309239['as'],'attributes':_0x309239[_0xec4f('0x1a')],'include':_0x309239[_0xec4f('0x1b')]?_['map'](_0x309239[_0xec4f('0x1b')],function(_0x4df546){return{'model':db[_0x4df546['model']],'as':_0x4df546['as'],'attributes':_0x4df546['attributes']};}):[]};}):[]};}):[]:[]})[_0xec4f('0x1e')](function(_0x36713f){logger[_0xec4f('0xb')](_0xec4f('0x15'),_0x17f788);logger[_0xec4f('0xe')](_0xec4f('0x15'),_0x17f788,JSON[_0xec4f('0x10')](_0x36713f));_0x1b4bb9(_0x36713f);})[_0xec4f('0x1f')](function(_0x45c8eb){logger['error'](_0xec4f('0x15'),_0x45c8eb[_0xec4f('0x13')],_0x17f788);_0xb00a1d(_0x5000f8[_0xec4f('0x11')](0x1f4,_0x45c8eb['message']));});});};exports['ShowFreshdeskAccount']=function(_0x41bcad){var _0x40c88c=this;return new Promise(function(_0x2c26ff,_0x2ca6a8){return db[_0xec4f('0x16')]['find']({'raw':_0x41bcad[_0xec4f('0x18')]?_0x41bcad['options'][_0xec4f('0x19')]===undefined?!![]:![]:!![],'where':_0x41bcad['options']?_0x41bcad[_0xec4f('0x18')]['where']||null:null,'attributes':_0x41bcad[_0xec4f('0x18')]?_0x41bcad[_0xec4f('0x18')][_0xec4f('0x1a')]||null:null,'include':_0x41bcad[_0xec4f('0x18')]?_0x41bcad['options'][_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x41bcad[_0xec4f('0x18')][_0xec4f('0x1b')],function(_0x312f5d){return{'model':db[_0x312f5d['model']],'as':_0x312f5d['as'],'attributes':_0x312f5d[_0xec4f('0x1a')],'include':_0x312f5d[_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x312f5d[_0xec4f('0x1b')],function(_0x4b220e){return{'model':db[_0x4b220e[_0xec4f('0x1d')]],'as':_0x4b220e['as'],'attributes':_0x4b220e[_0xec4f('0x1a')],'include':_0x4b220e[_0xec4f('0x1b')]?_[_0xec4f('0x1c')](_0x4b220e[_0xec4f('0x1b')],function(_0x2bc7b5){return{'model':db[_0x2bc7b5[_0xec4f('0x1d')]],'as':_0x2bc7b5['as'],'attributes':_0x2bc7b5[_0xec4f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xec4f('0x1e')](function(_0x57bfe1){logger[_0xec4f('0xb')](_0xec4f('0x20'),_0x41bcad);logger[_0xec4f('0xe')](_0xec4f('0x20'),_0x41bcad,JSON[_0xec4f('0x10')](_0x57bfe1));_0x2c26ff(_0x57bfe1);})[_0xec4f('0x1f')](function(_0x452361){logger[_0xec4f('0x11')]('ShowFreshdeskAccount',_0x452361['message'],_0x41bcad);_0x2ca6a8(_0x40c88c[_0xec4f('0x11')](0x1f4,_0x452361[_0xec4f('0x13')]));});});};
\ No newline at end of file
index 0e93085..f15efcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf317=['../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getDescriptions','/:id/tags','post','setTags','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x431185,_0x372ed6){var _0x3258de=function(_0x4bd705){while(--_0x4bd705){_0x431185['push'](_0x431185['shift']());}};_0x3258de(++_0x372ed6);}(_0xf317,0x157));var _0x7f31=function(_0x383d57,_0x11677a){_0x383d57=_0x383d57-0x0;var _0x1007c4=_0xf317[_0x383d57];return _0x1007c4;};'use strict';var multer=require(_0x7f31('0x0'));var util=require(_0x7f31('0x1'));var path=require(_0x7f31('0x2'));var timeout=require('connect-timeout');var express=require(_0x7f31('0x3'));var router=express[_0x7f31('0x4')]();var fs_extra=require(_0x7f31('0x5'));var auth=require(_0x7f31('0x6'));var interaction=require(_0x7f31('0x7'));var config=require('../../config/environment');var controller=require(_0x7f31('0x8'));router[_0x7f31('0x9')]('/',auth[_0x7f31('0xa')](),controller[_0x7f31('0xb')]);router[_0x7f31('0x9')](_0x7f31('0xc'),auth[_0x7f31('0xa')](),controller[_0x7f31('0xd')]);router[_0x7f31('0x9')](_0x7f31('0xe'),auth[_0x7f31('0xa')](),controller[_0x7f31('0xf')]);router[_0x7f31('0x9')](_0x7f31('0x10'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x7f31('0x9')]('/:id/descriptions',auth[_0x7f31('0xa')](),controller[_0x7f31('0x11')]);router[_0x7f31('0x9')](_0x7f31('0x12'),auth['isAuthenticated'](),controller['getTags']);router[_0x7f31('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/tags',auth['isAuthenticated'](),controller[_0x7f31('0x14')]);router[_0x7f31('0x15')](_0x7f31('0xc'),auth[_0x7f31('0xa')](),controller['update']);router[_0x7f31('0x16')](_0x7f31('0xc'),auth[_0x7f31('0xa')](),controller[_0x7f31('0x17')]);module[_0x7f31('0x18')]=router;
\ No newline at end of file
+var _0x6e81=['put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags'];(function(_0x1757f2,_0x1b09fa){var _0x5e7212=function(_0x4f1794){while(--_0x4f1794){_0x1757f2['push'](_0x1757f2['shift']());}};_0x5e7212(++_0x1b09fa);}(_0x6e81,0x171));var _0x16e8=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x6e81[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0x16e8('0x0'));var util=require(_0x16e8('0x1'));var path=require('path');var timeout=require(_0x16e8('0x2'));var express=require('express');var router=express[_0x16e8('0x3')]();var fs_extra=require(_0x16e8('0x4'));var auth=require(_0x16e8('0x5'));var interaction=require(_0x16e8('0x6'));var config=require(_0x16e8('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x16e8('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x16e8('0x8')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0xb')]);router[_0x16e8('0x8')](_0x16e8('0xc'),auth[_0x16e8('0xa')](),controller[_0x16e8('0xd')]);router[_0x16e8('0x8')](_0x16e8('0xe'),auth['isAuthenticated'](),controller[_0x16e8('0xf')]);router['get'](_0x16e8('0x10'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x11')]);router['get'](_0x16e8('0x12'),auth['isAuthenticated'](),controller[_0x16e8('0x13')]);router[_0x16e8('0x14')]('/',auth['isAuthenticated'](),controller[_0x16e8('0x15')]);router[_0x16e8('0x14')](_0x16e8('0x12'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x16')]);router[_0x16e8('0x17')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x18')]);router[_0x16e8('0x19')](_0x16e8('0x9'),auth[_0x16e8('0xa')](),controller[_0x16e8('0x1a')]);module[_0x16e8('0x1b')]=router;
\ No newline at end of file
index cfe84b0..85cdec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ec=['exports','STRING'];(function(_0x108d5f,_0x33f82d){var _0x456ea3=function(_0x228200){while(--_0x228200){_0x108d5f['push'](_0x108d5f['shift']());}};_0x456ea3(++_0x33f82d);}(_0xa2ec,0x196));var _0xca2e=function(_0x34b821,_0x504e55){_0x34b821=_0x34b821-0x0;var _0x5e00a0=_0xa2ec[_0x34b821];return _0x5e00a0;};'use strict';var Sequelize=require('sequelize');module[_0xca2e('0x0')]={'name':{'type':Sequelize[_0xca2e('0x1')]},'description':{'type':Sequelize[_0xca2e('0x1')]}};
\ No newline at end of file
+var _0xcbb8=['exports','sequelize'];(function(_0x3c9fda,_0x188817){var _0x45b841=function(_0x1877db){while(--_0x1877db){_0x3c9fda['push'](_0x3c9fda['shift']());}};_0x45b841(++_0x188817);}(_0xcbb8,0x6d));var _0x8cbb=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xcbb8[_0x50007c];return _0x5c1ec7;};'use strict';var Sequelize=require(_0x8cbb('0x0'));module[_0x8cbb('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e38096d..db6a8e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe488=['keys','rawAttributes','includeAll','create','body','update','find','FreshdeskField','order','options','getFields','hasOwnProperty','getSubjects','findOne','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','then','sendStatus','stack','name','map','FreshdeskConfiguration','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','params'];(function(_0x3d9302,_0x1ad1f8){var _0xb3f184=function(_0x5e3cd2){while(--_0x5e3cd2){_0x3d9302['push'](_0x3d9302['shift']());}};_0xb3f184(++_0x1ad1f8);}(_0xe488,0x1ab));var _0x8e48=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xe488[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x8e48('0x0'));var rimraf=require(_0x8e48('0x1'));var zipdir=require(_0x8e48('0x2'));var jsonpatch=require(_0x8e48('0x3'));var rp=require(_0x8e48('0x4'));var moment=require(_0x8e48('0x5'));var BPromise=require(_0x8e48('0x6'));var Mustache=require(_0x8e48('0x7'));var util=require(_0x8e48('0x8'));var path=require(_0x8e48('0x9'));var sox=require('sox');var csv=require(_0x8e48('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8e48('0xb'));var _=require(_0x8e48('0xc'));var squel=require(_0x8e48('0xd'));var crypto=require(_0x8e48('0xe'));var jsforce=require(_0x8e48('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8e48('0x10'));var Papa=require(_0x8e48('0x11'));var Redis=require(_0x8e48('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8e48('0x13'));var hardwareService=require(_0x8e48('0x14'));var logger=require(_0x8e48('0x15'))(_0x8e48('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8e48('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x321ab7,_0x22c74e){_0x22c74e=_0x22c74e||0xcc;return function(_0x4188df){if(_0x4188df){return _0x321ab7['sendStatus'](_0x22c74e);}return _0x321ab7[_0x8e48('0x18')](_0x22c74e)[_0x8e48('0x19')]();};}function respondWithResult(_0x5e9471,_0x5c44dd){_0x5c44dd=_0x5c44dd||0xc8;return function(_0xa2ee54){if(_0xa2ee54){return _0x5e9471[_0x8e48('0x18')](_0x5c44dd)[_0x8e48('0x1a')](_0xa2ee54);}};}function respondWithFilteredResult(_0x3d30c2,_0x4600c5){return function(_0x6a0aee){if(_0x6a0aee){var _0x48b1f1=typeof _0x4600c5['offset']===_0x8e48('0x1b')&&typeof _0x4600c5[_0x8e48('0x1c')]==='undefined';var _0x87b7e3=_0x6a0aee[_0x8e48('0x1d')];var _0x47fbd6=_0x48b1f1?0x0:_0x4600c5[_0x8e48('0x1e')];var _0x6f75f=_0x48b1f1?_0x6a0aee[_0x8e48('0x1d')]:_0x4600c5[_0x8e48('0x1e')]+_0x4600c5[_0x8e48('0x1c')];var _0x129732;if(_0x6f75f>=_0x87b7e3){_0x6f75f=_0x87b7e3;_0x129732=0xc8;}else{_0x129732=0xce;}_0x3d30c2[_0x8e48('0x18')](_0x129732);return _0x3d30c2[_0x8e48('0x1f')](_0x8e48('0x20'),_0x47fbd6+'-'+_0x6f75f+'/'+_0x87b7e3)['json'](_0x6a0aee);}return null;};}function patchUpdates(_0xddc557){return function(_0x442f1b){try{jsonpatch[_0x8e48('0x21')](_0x442f1b,_0xddc557,!![]);}catch(_0x35e1fc){return BPromise[_0x8e48('0x22')](_0x35e1fc);}return _0x442f1b[_0x8e48('0x23')]();};}function saveUpdates(_0xf105e8,_0x2e515b){return function(_0x50b2df){if(_0x50b2df){return _0x50b2df['update'](_0xf105e8)['then'](function(_0x271f51){return _0x271f51;});}return null;};}function removeEntity(_0x3aef96,_0x573cc5){return function(_0x3aeb26){if(_0x3aeb26){return _0x3aeb26[_0x8e48('0x24')]()[_0x8e48('0x25')](function(){_0x3aef96['status'](0xcc)[_0x8e48('0x19')]();});}};}function handleEntityNotFound(_0x479c66,_0x46edcc){return function(_0xf5ebbd){if(!_0xf5ebbd){_0x479c66[_0x8e48('0x26')](0x194);}return _0xf5ebbd;};}function handleError(_0x345add,_0x56a86b){_0x56a86b=_0x56a86b||0x1f4;return function(_0x2856b4){logger['error'](_0x2856b4[_0x8e48('0x27')]);if(_0x2856b4[_0x8e48('0x28')]){delete _0x2856b4['name'];}_0x345add[_0x8e48('0x18')](_0x56a86b)['send'](_0x2856b4);};}exports['index']=function(_0x240e3c,_0x387d68){var _0x5a5416={},_0x4e1a3e={},_0x48fa4d={'count':0x0,'rows':[]};var _0x326809=_[_0x8e48('0x29')](db[_0x8e48('0x2a')]['rawAttributes'],function(_0x4a9b2c){return{'name':_0x4a9b2c[_0x8e48('0x2b')],'type':_0x4a9b2c[_0x8e48('0x2c')][_0x8e48('0x2d')]};});_0x4e1a3e[_0x8e48('0x2e')]=_[_0x8e48('0x29')](_0x326809,_0x8e48('0x28'));_0x4e1a3e[_0x8e48('0x2f')]=_['keys'](_0x240e3c[_0x8e48('0x2f')]);_0x4e1a3e[_0x8e48('0x30')]=_[_0x8e48('0x31')](_0x4e1a3e[_0x8e48('0x2e')],_0x4e1a3e['query']);_0x5a5416['attributes']=_[_0x8e48('0x31')](_0x4e1a3e[_0x8e48('0x2e')],qs[_0x8e48('0x32')](_0x240e3c[_0x8e48('0x2f')][_0x8e48('0x32')]));_0x5a5416[_0x8e48('0x33')]=_0x5a5416[_0x8e48('0x33')][_0x8e48('0x34')]?_0x5a5416[_0x8e48('0x33')]:_0x4e1a3e[_0x8e48('0x2e')];if(!_0x240e3c[_0x8e48('0x2f')]['hasOwnProperty'](_0x8e48('0x35'))){_0x5a5416[_0x8e48('0x1c')]=qs[_0x8e48('0x1c')](_0x240e3c[_0x8e48('0x2f')][_0x8e48('0x1c')]);_0x5a5416[_0x8e48('0x1e')]=qs['offset'](_0x240e3c[_0x8e48('0x2f')][_0x8e48('0x1e')]);}_0x5a5416['order']=qs[_0x8e48('0x36')](_0x240e3c[_0x8e48('0x2f')]['sort']);_0x5a5416[_0x8e48('0x37')]=qs[_0x8e48('0x30')](_[_0x8e48('0x38')](_0x240e3c[_0x8e48('0x2f')],_0x4e1a3e[_0x8e48('0x30')]),_0x326809);if(_0x240e3c['query'][_0x8e48('0x39')]){_0x5a5416[_0x8e48('0x37')]=_[_0x8e48('0x3a')](_0x5a5416[_0x8e48('0x37')],{'$or':_[_0x8e48('0x29')](_0x326809,function(_0x304411){if(_0x304411['type']!==_0x8e48('0x3b')){var _0x408192={};_0x408192[_0x304411[_0x8e48('0x28')]]={'$like':'%'+_0x240e3c[_0x8e48('0x2f')][_0x8e48('0x39')]+'%'};return _0x408192;}})});}_0x5a5416=_[_0x8e48('0x3a')]({},_0x5a5416,_0x240e3c['options']);var _0x3a3831={'where':_0x5a5416[_0x8e48('0x37')]};return db['FreshdeskConfiguration']['count'](_0x3a3831)[_0x8e48('0x25')](function(_0x11e123){_0x48fa4d['count']=_0x11e123;if(_0x240e3c[_0x8e48('0x2f')]['includeAll']){_0x5a5416[_0x8e48('0x3c')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x8e48('0x3d')](_0x5a5416);})[_0x8e48('0x25')](function(_0x5113e7){_0x48fa4d[_0x8e48('0x3e')]=_0x5113e7;return _0x48fa4d;})[_0x8e48('0x25')](respondWithFilteredResult(_0x387d68,_0x5a5416))[_0x8e48('0x3f')](handleError(_0x387d68,null));};exports['show']=function(_0x1b88c1,_0x4fbd68){var _0x362e14={'raw':![],'where':{'id':_0x1b88c1[_0x8e48('0x40')]['id']}},_0x3d7b09={};_0x3d7b09[_0x8e48('0x2e')]=_[_0x8e48('0x41')](db[_0x8e48('0x2a')][_0x8e48('0x42')]);_0x3d7b09['query']=_[_0x8e48('0x41')](_0x1b88c1[_0x8e48('0x2f')]);_0x3d7b09[_0x8e48('0x30')]=_[_0x8e48('0x31')](_0x3d7b09[_0x8e48('0x2e')],_0x3d7b09[_0x8e48('0x2f')]);_0x362e14[_0x8e48('0x33')]=_[_0x8e48('0x31')](_0x3d7b09[_0x8e48('0x2e')],qs[_0x8e48('0x32')](_0x1b88c1[_0x8e48('0x2f')][_0x8e48('0x32')]));_0x362e14[_0x8e48('0x33')]=_0x362e14['attributes'][_0x8e48('0x34')]?_0x362e14[_0x8e48('0x33')]:_0x3d7b09['model'];if(_0x1b88c1['query'][_0x8e48('0x43')]){_0x362e14[_0x8e48('0x3c')]=[{'all':!![]}];}_0x362e14=_[_0x8e48('0x3a')]({},_0x362e14,_0x1b88c1['options']);return db[_0x8e48('0x2a')]['find'](_0x362e14)[_0x8e48('0x25')](handleEntityNotFound(_0x4fbd68,null))[_0x8e48('0x25')](respondWithResult(_0x4fbd68,null))['catch'](handleError(_0x4fbd68,null));};exports[_0x8e48('0x44')]=function(_0x5cee4a,_0x336ec3){return db[_0x8e48('0x2a')]['create'](_0x5cee4a[_0x8e48('0x45')],{})[_0x8e48('0x25')](respondWithResult(_0x336ec3,0xc9))[_0x8e48('0x3f')](handleError(_0x336ec3,null));};exports[_0x8e48('0x46')]=function(_0x541dae,_0x2cf8c4){if(_0x541dae[_0x8e48('0x45')]['id']){delete _0x541dae[_0x8e48('0x45')]['id'];}return db['FreshdeskConfiguration'][_0x8e48('0x47')]({'where':{'id':_0x541dae['params']['id']}})['then'](handleEntityNotFound(_0x2cf8c4,null))[_0x8e48('0x25')](saveUpdates(_0x541dae[_0x8e48('0x45')],null))['then'](respondWithResult(_0x2cf8c4,null))[_0x8e48('0x3f')](handleError(_0x2cf8c4,null));};exports[_0x8e48('0x24')]=function(_0x394fb3,_0x5f54b5){return db[_0x8e48('0x2a')][_0x8e48('0x47')]({'where':{'id':_0x394fb3[_0x8e48('0x40')]['id']}})[_0x8e48('0x25')](handleEntityNotFound(_0x5f54b5,null))['then'](removeEntity(_0x5f54b5,null))[_0x8e48('0x3f')](handleError(_0x5f54b5,null));};exports['getFields']=function(_0x2890be,_0x2773fd,_0x2458e3){var _0x18b4ec={};var _0x2c90a0={};var _0x44d54b;var _0x284346;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x2890be['params']['id']}})['then'](handleEntityNotFound(_0x2773fd,null))[_0x8e48('0x25')](function(_0x3e7bdc){if(_0x3e7bdc){_0x44d54b=_0x3e7bdc;_0x2c90a0[_0x8e48('0x2e')]=_[_0x8e48('0x41')](db[_0x8e48('0x48')]['rawAttributes']);_0x2c90a0[_0x8e48('0x2f')]=_[_0x8e48('0x41')](_0x2890be[_0x8e48('0x2f')]);_0x2c90a0[_0x8e48('0x30')]=_[_0x8e48('0x31')](_0x2c90a0[_0x8e48('0x2e')],_0x2c90a0[_0x8e48('0x2f')]);_0x18b4ec[_0x8e48('0x33')]=_[_0x8e48('0x31')](_0x2c90a0[_0x8e48('0x2e')],qs[_0x8e48('0x32')](_0x2890be[_0x8e48('0x2f')][_0x8e48('0x32')]));_0x18b4ec['attributes']=_0x18b4ec[_0x8e48('0x33')][_0x8e48('0x34')]?_0x18b4ec['attributes']:_0x2c90a0[_0x8e48('0x2e')];_0x18b4ec[_0x8e48('0x49')]=qs[_0x8e48('0x36')](_0x2890be['query'][_0x8e48('0x36')]);_0x18b4ec[_0x8e48('0x37')]=qs[_0x8e48('0x30')](_['pick'](_0x2890be[_0x8e48('0x2f')],_0x2c90a0[_0x8e48('0x30')]));if(_0x2890be[_0x8e48('0x2f')][_0x8e48('0x39')]){_0x18b4ec[_0x8e48('0x37')]=_[_0x8e48('0x3a')](_0x18b4ec[_0x8e48('0x37')],{'$or':_[_0x8e48('0x29')](_0x18b4ec[_0x8e48('0x33')],function(_0x3d49d6){var _0x25da15={};_0x25da15[_0x3d49d6]={'$like':'%'+_0x2890be[_0x8e48('0x2f')]['filter']+'%'};return _0x25da15;})});}_0x18b4ec=_[_0x8e48('0x3a')]({},_0x18b4ec,_0x2890be[_0x8e48('0x4a')]);return _0x44d54b[_0x8e48('0x4b')](_0x18b4ec);}})['then'](function(_0x50ecb4){if(_0x50ecb4){_0x284346=_0x50ecb4[_0x8e48('0x34')];if(!_0x2890be[_0x8e48('0x2f')][_0x8e48('0x4c')](_0x8e48('0x35'))){_0x18b4ec['limit']=qs[_0x8e48('0x1c')](_0x2890be[_0x8e48('0x2f')][_0x8e48('0x1c')]);_0x18b4ec['offset']=qs[_0x8e48('0x1e')](_0x2890be['query'][_0x8e48('0x1e')]);}return _0x44d54b['getFields'](_0x18b4ec);}})[_0x8e48('0x25')](function(_0x1b7982){if(_0x1b7982){return _0x1b7982?{'count':_0x284346,'rows':_0x1b7982}:null;}})['then'](respondWithResult(_0x2773fd,null))[_0x8e48('0x3f')](handleError(_0x2773fd,null));};exports[_0x8e48('0x4d')]=function(_0x5b82d9,_0x5df5e7,_0x2bfc1b){var _0x733ca0={};var _0xcad702={};var _0x3cbb3a;var _0x8b950f;return db[_0x8e48('0x2a')][_0x8e48('0x4e')]({'where':{'id':_0x5b82d9[_0x8e48('0x40')]['id']}})['then'](handleEntityNotFound(_0x5df5e7,null))[_0x8e48('0x25')](function(_0x190ba1){if(_0x190ba1){_0x3cbb3a=_0x190ba1;_0xcad702[_0x8e48('0x2e')]=_[_0x8e48('0x41')](db[_0x8e48('0x48')][_0x8e48('0x42')]);_0xcad702[_0x8e48('0x2f')]=_[_0x8e48('0x41')](_0x5b82d9[_0x8e48('0x2f')]);_0xcad702['filters']=_['intersection'](_0xcad702[_0x8e48('0x2e')],_0xcad702[_0x8e48('0x2f')]);_0x733ca0[_0x8e48('0x33')]=_[_0x8e48('0x31')](_0xcad702[_0x8e48('0x2e')],qs[_0x8e48('0x32')](_0x5b82d9[_0x8e48('0x2f')]['fields']));_0x733ca0[_0x8e48('0x33')]=_0x733ca0[_0x8e48('0x33')][_0x8e48('0x34')]?_0x733ca0[_0x8e48('0x33')]:_0xcad702[_0x8e48('0x2e')];_0x733ca0[_0x8e48('0x49')]=qs['sort'](_0x5b82d9['query']['sort']);_0x733ca0['where']=qs[_0x8e48('0x30')](_[_0x8e48('0x38')](_0x5b82d9[_0x8e48('0x2f')],_0xcad702[_0x8e48('0x30')]));if(_0x5b82d9[_0x8e48('0x2f')][_0x8e48('0x39')]){_0x733ca0[_0x8e48('0x37')]=_[_0x8e48('0x3a')](_0x733ca0[_0x8e48('0x37')],{'$or':_[_0x8e48('0x29')](_0x733ca0[_0x8e48('0x33')],function(_0x36c572){var _0x23c402={};_0x23c402[_0x36c572]={'$like':'%'+_0x5b82d9['query']['filter']+'%'};return _0x23c402;})});}_0x733ca0=_[_0x8e48('0x3a')]({},_0x733ca0,_0x5b82d9[_0x8e48('0x4a')]);return _0x3cbb3a[_0x8e48('0x4d')](_0x733ca0);}})[_0x8e48('0x25')](function(_0x32905e){if(_0x32905e){_0x8b950f=_0x32905e[_0x8e48('0x34')];if(!_0x5b82d9['query']['hasOwnProperty'](_0x8e48('0x35'))){_0x733ca0['limit']=qs[_0x8e48('0x1c')](_0x5b82d9[_0x8e48('0x2f')][_0x8e48('0x1c')]);_0x733ca0[_0x8e48('0x1e')]=qs[_0x8e48('0x1e')](_0x5b82d9[_0x8e48('0x2f')]['offset']);}return _0x3cbb3a['getSubjects'](_0x733ca0);}})[_0x8e48('0x25')](function(_0x4316d8){if(_0x4316d8){return _0x4316d8?{'count':_0x8b950f,'rows':_0x4316d8}:null;}})['then'](respondWithResult(_0x5df5e7,null))[_0x8e48('0x3f')](handleError(_0x5df5e7,null));};exports[_0x8e48('0x4f')]=function(_0xd57bf5,_0x545ea4,_0x471e37){var _0x5c1f3c={};var _0x4a1380={};var _0x286ad7;var _0x4ead8e;return db[_0x8e48('0x2a')]['findOne']({'where':{'id':_0xd57bf5[_0x8e48('0x40')]['id']}})[_0x8e48('0x25')](handleEntityNotFound(_0x545ea4,null))['then'](function(_0xcbe53f){if(_0xcbe53f){_0x286ad7=_0xcbe53f;_0x4a1380[_0x8e48('0x2e')]=_[_0x8e48('0x41')](db[_0x8e48('0x48')]['rawAttributes']);_0x4a1380[_0x8e48('0x2f')]=_[_0x8e48('0x41')](_0xd57bf5[_0x8e48('0x2f')]);_0x4a1380[_0x8e48('0x30')]=_[_0x8e48('0x31')](_0x4a1380['model'],_0x4a1380[_0x8e48('0x2f')]);_0x5c1f3c['attributes']=_[_0x8e48('0x31')](_0x4a1380[_0x8e48('0x2e')],qs['fields'](_0xd57bf5['query']['fields']));_0x5c1f3c[_0x8e48('0x33')]=_0x5c1f3c[_0x8e48('0x33')][_0x8e48('0x34')]?_0x5c1f3c[_0x8e48('0x33')]:_0x4a1380[_0x8e48('0x2e')];_0x5c1f3c[_0x8e48('0x49')]=qs[_0x8e48('0x36')](_0xd57bf5['query'][_0x8e48('0x36')]);_0x5c1f3c[_0x8e48('0x37')]=qs[_0x8e48('0x30')](_['pick'](_0xd57bf5[_0x8e48('0x2f')],_0x4a1380[_0x8e48('0x30')]));if(_0xd57bf5[_0x8e48('0x2f')]['filter']){_0x5c1f3c['where']=_['merge'](_0x5c1f3c['where'],{'$or':_[_0x8e48('0x29')](_0x5c1f3c[_0x8e48('0x33')],function(_0x429d0f){var _0x275e24={};_0x275e24[_0x429d0f]={'$like':'%'+_0xd57bf5['query'][_0x8e48('0x39')]+'%'};return _0x275e24;})});}_0x5c1f3c=_['merge']({},_0x5c1f3c,_0xd57bf5[_0x8e48('0x4a')]);return _0x286ad7[_0x8e48('0x4f')](_0x5c1f3c);}})[_0x8e48('0x25')](function(_0x18d4eb){if(_0x18d4eb){_0x4ead8e=_0x18d4eb[_0x8e48('0x34')];if(!_0xd57bf5[_0x8e48('0x2f')][_0x8e48('0x4c')](_0x8e48('0x35'))){_0x5c1f3c[_0x8e48('0x1c')]=qs['limit'](_0xd57bf5[_0x8e48('0x2f')][_0x8e48('0x1c')]);_0x5c1f3c[_0x8e48('0x1e')]=qs['offset'](_0xd57bf5[_0x8e48('0x2f')][_0x8e48('0x1e')]);}return _0x286ad7[_0x8e48('0x4f')](_0x5c1f3c);}})[_0x8e48('0x25')](function(_0xf4ef29){if(_0xf4ef29){return _0xf4ef29?{'count':_0x4ead8e,'rows':_0xf4ef29}:null;}})[_0x8e48('0x25')](respondWithResult(_0x545ea4,null))[_0x8e48('0x3f')](handleError(_0x545ea4,null));};exports[_0x8e48('0x50')]=function(_0x88a89c,_0x4b5622,_0xc400fd){var _0x3e4017={};var _0x4b2053={};var _0x354288;var _0x511291;return db[_0x8e48('0x2a')][_0x8e48('0x4e')]({'where':{'id':_0x88a89c[_0x8e48('0x40')]['id']}})[_0x8e48('0x25')](handleEntityNotFound(_0x4b5622,null))[_0x8e48('0x25')](function(_0x376645){if(_0x376645){_0x354288=_0x376645;_0x4b2053[_0x8e48('0x2e')]=_['keys'](db['Tag'][_0x8e48('0x42')]);_0x4b2053[_0x8e48('0x2f')]=_[_0x8e48('0x41')](_0x88a89c['query']);_0x4b2053[_0x8e48('0x30')]=_[_0x8e48('0x31')](_0x4b2053[_0x8e48('0x2e')],_0x4b2053[_0x8e48('0x2f')]);_0x3e4017[_0x8e48('0x33')]=_[_0x8e48('0x31')](_0x4b2053[_0x8e48('0x2e')],qs[_0x8e48('0x32')](_0x88a89c[_0x8e48('0x2f')][_0x8e48('0x32')]));_0x3e4017[_0x8e48('0x33')]=_0x3e4017[_0x8e48('0x33')][_0x8e48('0x34')]?_0x3e4017[_0x8e48('0x33')]:_0x4b2053['model'];_0x3e4017[_0x8e48('0x49')]=qs[_0x8e48('0x36')](_0x88a89c['query'][_0x8e48('0x36')]);_0x3e4017[_0x8e48('0x37')]=qs[_0x8e48('0x30')](_[_0x8e48('0x38')](_0x88a89c[_0x8e48('0x2f')],_0x4b2053[_0x8e48('0x30')]));if(_0x88a89c['query'][_0x8e48('0x39')]){_0x3e4017[_0x8e48('0x37')]=_[_0x8e48('0x3a')](_0x3e4017[_0x8e48('0x37')],{'$or':_['map'](_0x3e4017[_0x8e48('0x33')],function(_0x4c2afd){var _0x2a0c55={};_0x2a0c55[_0x4c2afd]={'$like':'%'+_0x88a89c['query'][_0x8e48('0x39')]+'%'};return _0x2a0c55;})});}_0x3e4017=_[_0x8e48('0x3a')]({},_0x3e4017,_0x88a89c[_0x8e48('0x4a')]);return _0x354288['getTags'](_0x3e4017);}})['then'](function(_0x128fc8){if(_0x128fc8){_0x511291=_0x128fc8[_0x8e48('0x34')];if(!_0x88a89c['query'][_0x8e48('0x4c')](_0x8e48('0x35'))){_0x3e4017['limit']=qs[_0x8e48('0x1c')](_0x88a89c['query'][_0x8e48('0x1c')]);_0x3e4017[_0x8e48('0x1e')]=qs['offset'](_0x88a89c[_0x8e48('0x2f')][_0x8e48('0x1e')]);}return _0x354288[_0x8e48('0x50')](_0x3e4017);}})[_0x8e48('0x25')](function(_0xdf59df){if(_0xdf59df){return _0xdf59df?{'count':_0x511291,'rows':_0xdf59df}:null;}})[_0x8e48('0x25')](respondWithResult(_0x4b5622,null))[_0x8e48('0x3f')](handleError(_0x4b5622,null));};exports[_0x8e48('0x51')]=function(_0x413951,_0x45bd0e,_0xbd0090){if(_0x413951[_0x8e48('0x45')]['id']){delete _0x413951['body']['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x413951[_0x8e48('0x40')]['id']}})[_0x8e48('0x25')](handleEntityNotFound(_0x45bd0e,null))[_0x8e48('0x25')](function(_0x4e4fac){if(_0x4e4fac){return _0x4e4fac[_0x8e48('0x51')](_0x413951[_0x8e48('0x45')]['ids']||[]);}return null;})[_0x8e48('0x25')](respondWithResult(_0x45bd0e,null))[_0x8e48('0x3f')](handleError(_0x45bd0e,null));};
\ No newline at end of file
+var _0x353b=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','FreshdeskConfiguration','findAll','show','params','keys','include','options','find','create','body','catch','getFields','findOne','pick','getSubjects','FreshdeskField','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','filters','query'];(function(_0x33501a,_0x400afb){var _0x539144=function(_0x28b251){while(--_0x28b251){_0x33501a['push'](_0x33501a['shift']());}};_0x539144(++_0x400afb);}(_0x353b,0x1a5));var _0xb353=function(_0x1d1722,_0x759c36){_0x1d1722=_0x1d1722-0x0;var _0x100055=_0x353b[_0x1d1722];return _0x100055;};'use strict';var emlformat=require(_0xb353('0x0'));var rimraf=require(_0xb353('0x1'));var zipdir=require(_0xb353('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb353('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb353('0x4'));var util=require(_0xb353('0x5'));var path=require('path');var sox=require(_0xb353('0x6'));var csv=require('to-csv');var ejs=require(_0xb353('0x7'));var fs=require('fs');var fs_extra=require(_0xb353('0x8'));var _=require(_0xb353('0x9'));var squel=require(_0xb353('0xa'));var crypto=require(_0xb353('0xb'));var jsforce=require(_0xb353('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb353('0xd'));var querystring=require(_0xb353('0xe'));var Papa=require('papaparse');var Redis=require(_0xb353('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb353('0x10'));var as=require(_0xb353('0x11'));var hardwareService=require(_0xb353('0x12'));var logger=require(_0xb353('0x13'))(_0xb353('0x14'));var utils=require(_0xb353('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb353('0x16'));var db=require(_0xb353('0x17'))['db'];function respondWithStatusCode(_0x4c7ab3,_0x3652a6){_0x3652a6=_0x3652a6||0xcc;return function(_0xa0b9de){if(_0xa0b9de){return _0x4c7ab3['sendStatus'](_0x3652a6);}return _0x4c7ab3['status'](_0x3652a6)[_0xb353('0x18')]();};}function respondWithResult(_0x2a888a,_0x2727cb){_0x2727cb=_0x2727cb||0xc8;return function(_0x26e7c7){if(_0x26e7c7){return _0x2a888a[_0xb353('0x19')](_0x2727cb)[_0xb353('0x1a')](_0x26e7c7);}};}function respondWithFilteredResult(_0x3d62fc,_0x335bac){return function(_0x22ecac){if(_0x22ecac){var _0x21701e=typeof _0x335bac[_0xb353('0x1b')]===_0xb353('0x1c')&&typeof _0x335bac[_0xb353('0x1d')]==='undefined';var _0x13388d=_0x22ecac[_0xb353('0x1e')];var _0x567143=_0x21701e?0x0:_0x335bac[_0xb353('0x1b')];var _0x1d3af5=_0x21701e?_0x22ecac['count']:_0x335bac[_0xb353('0x1b')]+_0x335bac[_0xb353('0x1d')];var _0x545aca;if(_0x1d3af5>=_0x13388d){_0x1d3af5=_0x13388d;_0x545aca=0xc8;}else{_0x545aca=0xce;}_0x3d62fc[_0xb353('0x19')](_0x545aca);return _0x3d62fc['set']('Content-Range',_0x567143+'-'+_0x1d3af5+'/'+_0x13388d)[_0xb353('0x1a')](_0x22ecac);}return null;};}function patchUpdates(_0x355e77){return function(_0x3670e3){try{jsonpatch['apply'](_0x3670e3,_0x355e77,!![]);}catch(_0x351c90){return BPromise[_0xb353('0x1f')](_0x351c90);}return _0x3670e3['save']();};}function saveUpdates(_0x4415b0,_0x17a035){return function(_0x1c9217){if(_0x1c9217){return _0x1c9217[_0xb353('0x20')](_0x4415b0)[_0xb353('0x21')](function(_0x3ce462){return _0x3ce462;});}return null;};}function removeEntity(_0x47c01d,_0xcf9a2b){return function(_0x4c0eb5){if(_0x4c0eb5){return _0x4c0eb5[_0xb353('0x22')]()['then'](function(){_0x47c01d[_0xb353('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfc14b2,_0x22097a){return function(_0x5e63a6){if(!_0x5e63a6){_0xfc14b2['sendStatus'](0x194);}return _0x5e63a6;};}function handleError(_0xfecb01,_0x547281){_0x547281=_0x547281||0x1f4;return function(_0x1864bd){logger[_0xb353('0x23')](_0x1864bd[_0xb353('0x24')]);if(_0x1864bd[_0xb353('0x25')]){delete _0x1864bd[_0xb353('0x25')];}_0xfecb01[_0xb353('0x19')](_0x547281)[_0xb353('0x26')](_0x1864bd);};}exports[_0xb353('0x27')]=function(_0x3acdfa,_0x336198){var _0x5edcdb={},_0x1c6212={},_0x2cbd55={'count':0x0,'rows':[]};var _0x36a698=_[_0xb353('0x28')](db['FreshdeskConfiguration'][_0xb353('0x29')],function(_0x21f894){return{'name':_0x21f894[_0xb353('0x2a')],'type':_0x21f894[_0xb353('0x2b')]['key']};});_0x1c6212[_0xb353('0x2c')]=_['map'](_0x36a698,_0xb353('0x25'));_0x1c6212['query']=_['keys'](_0x3acdfa['query']);_0x1c6212[_0xb353('0x2d')]=_['intersection'](_0x1c6212['model'],_0x1c6212[_0xb353('0x2e')]);_0x5edcdb[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x1c6212['model'],qs[_0xb353('0x31')](_0x3acdfa[_0xb353('0x2e')][_0xb353('0x31')]));_0x5edcdb['attributes']=_0x5edcdb[_0xb353('0x2f')][_0xb353('0x32')]?_0x5edcdb[_0xb353('0x2f')]:_0x1c6212['model'];if(!_0x3acdfa[_0xb353('0x2e')][_0xb353('0x33')](_0xb353('0x34'))){_0x5edcdb[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x3acdfa['query'][_0xb353('0x1d')]);_0x5edcdb[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x3acdfa['query'][_0xb353('0x1b')]);}_0x5edcdb[_0xb353('0x35')]=qs['sort'](_0x3acdfa[_0xb353('0x2e')][_0xb353('0x36')]);_0x5edcdb[_0xb353('0x37')]=qs[_0xb353('0x2d')](_['pick'](_0x3acdfa[_0xb353('0x2e')],_0x1c6212[_0xb353('0x2d')]),_0x36a698);if(_0x3acdfa[_0xb353('0x2e')][_0xb353('0x38')]){_0x5edcdb[_0xb353('0x37')]=_[_0xb353('0x39')](_0x5edcdb[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x36a698,function(_0x270892){if(_0x270892[_0xb353('0x2b')]!==_0xb353('0x3a')){var _0x3459ae={};_0x3459ae[_0x270892['name']]={'$like':'%'+_0x3acdfa['query']['filter']+'%'};return _0x3459ae;}})});}_0x5edcdb=_[_0xb353('0x39')]({},_0x5edcdb,_0x3acdfa['options']);var _0x52a8b8={'where':_0x5edcdb[_0xb353('0x37')]};return db[_0xb353('0x3b')]['count'](_0x52a8b8)['then'](function(_0x221c5c){_0x2cbd55['count']=_0x221c5c;if(_0x3acdfa[_0xb353('0x2e')]['includeAll']){_0x5edcdb['include']=[{'all':!![]}];}return db[_0xb353('0x3b')][_0xb353('0x3c')](_0x5edcdb);})[_0xb353('0x21')](function(_0x216d50){_0x2cbd55['rows']=_0x216d50;return _0x2cbd55;})['then'](respondWithFilteredResult(_0x336198,_0x5edcdb))['catch'](handleError(_0x336198,null));};exports[_0xb353('0x3d')]=function(_0xa5b9f0,_0x542cb3){var _0x41832e={'raw':![],'where':{'id':_0xa5b9f0[_0xb353('0x3e')]['id']}},_0x50d180={};_0x50d180[_0xb353('0x2c')]=_[_0xb353('0x3f')](db[_0xb353('0x3b')]['rawAttributes']);_0x50d180[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0xa5b9f0['query']);_0x50d180['filters']=_[_0xb353('0x30')](_0x50d180[_0xb353('0x2c')],_0x50d180['query']);_0x41832e['attributes']=_[_0xb353('0x30')](_0x50d180[_0xb353('0x2c')],qs[_0xb353('0x31')](_0xa5b9f0[_0xb353('0x2e')][_0xb353('0x31')]));_0x41832e[_0xb353('0x2f')]=_0x41832e['attributes']['length']?_0x41832e[_0xb353('0x2f')]:_0x50d180[_0xb353('0x2c')];if(_0xa5b9f0[_0xb353('0x2e')]['includeAll']){_0x41832e[_0xb353('0x40')]=[{'all':!![]}];}_0x41832e=_[_0xb353('0x39')]({},_0x41832e,_0xa5b9f0[_0xb353('0x41')]);return db[_0xb353('0x3b')][_0xb353('0x42')](_0x41832e)[_0xb353('0x21')](handleEntityNotFound(_0x542cb3,null))[_0xb353('0x21')](respondWithResult(_0x542cb3,null))['catch'](handleError(_0x542cb3,null));};exports[_0xb353('0x43')]=function(_0x4e5306,_0xe6955e){return db[_0xb353('0x3b')][_0xb353('0x43')](_0x4e5306[_0xb353('0x44')],{})[_0xb353('0x21')](respondWithResult(_0xe6955e,0xc9))['catch'](handleError(_0xe6955e,null));};exports[_0xb353('0x20')]=function(_0x3cfb4b,_0x234f55){if(_0x3cfb4b[_0xb353('0x44')]['id']){delete _0x3cfb4b[_0xb353('0x44')]['id'];}return db['FreshdeskConfiguration'][_0xb353('0x42')]({'where':{'id':_0x3cfb4b[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x234f55,null))[_0xb353('0x21')](saveUpdates(_0x3cfb4b[_0xb353('0x44')],null))[_0xb353('0x21')](respondWithResult(_0x234f55,null))[_0xb353('0x45')](handleError(_0x234f55,null));};exports[_0xb353('0x22')]=function(_0x35df52,_0x1d7de1){return db['FreshdeskConfiguration']['find']({'where':{'id':_0x35df52[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x1d7de1,null))[_0xb353('0x21')](removeEntity(_0x1d7de1,null))[_0xb353('0x45')](handleError(_0x1d7de1,null));};exports[_0xb353('0x46')]=function(_0x48594e,_0x874e05,_0x3d696d){var _0x41c2b2={};var _0x5cad97={};var _0x1e1178;var _0x58c4ee;return db[_0xb353('0x3b')][_0xb353('0x47')]({'where':{'id':_0x48594e[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x874e05,null))[_0xb353('0x21')](function(_0x306b6d){if(_0x306b6d){_0x1e1178=_0x306b6d;_0x5cad97['model']=_[_0xb353('0x3f')](db['FreshdeskField']['rawAttributes']);_0x5cad97[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x48594e[_0xb353('0x2e')]);_0x5cad97[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x5cad97[_0xb353('0x2c')],_0x5cad97[_0xb353('0x2e')]);_0x41c2b2[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x5cad97['model'],qs[_0xb353('0x31')](_0x48594e[_0xb353('0x2e')][_0xb353('0x31')]));_0x41c2b2[_0xb353('0x2f')]=_0x41c2b2['attributes'][_0xb353('0x32')]?_0x41c2b2[_0xb353('0x2f')]:_0x5cad97[_0xb353('0x2c')];_0x41c2b2[_0xb353('0x35')]=qs['sort'](_0x48594e['query'][_0xb353('0x36')]);_0x41c2b2[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x48594e[_0xb353('0x2e')],_0x5cad97['filters']));if(_0x48594e['query']['filter']){_0x41c2b2[_0xb353('0x37')]=_[_0xb353('0x39')](_0x41c2b2[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x41c2b2[_0xb353('0x2f')],function(_0x599fa1){var _0x285aa3={};_0x285aa3[_0x599fa1]={'$like':'%'+_0x48594e[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x285aa3;})});}_0x41c2b2=_[_0xb353('0x39')]({},_0x41c2b2,_0x48594e[_0xb353('0x41')]);return _0x1e1178[_0xb353('0x46')](_0x41c2b2);}})['then'](function(_0x284b57){if(_0x284b57){_0x58c4ee=_0x284b57[_0xb353('0x32')];if(!_0x48594e['query'][_0xb353('0x33')](_0xb353('0x34'))){_0x41c2b2[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x48594e[_0xb353('0x2e')][_0xb353('0x1d')]);_0x41c2b2['offset']=qs[_0xb353('0x1b')](_0x48594e['query']['offset']);}return _0x1e1178[_0xb353('0x46')](_0x41c2b2);}})[_0xb353('0x21')](function(_0xc5542e){if(_0xc5542e){return _0xc5542e?{'count':_0x58c4ee,'rows':_0xc5542e}:null;}})[_0xb353('0x21')](respondWithResult(_0x874e05,null))[_0xb353('0x45')](handleError(_0x874e05,null));};exports[_0xb353('0x49')]=function(_0x3ac1d0,_0x839c04,_0x341745){var _0x18ebb6={};var _0x4774bc={};var _0x2af120;var _0x17dd4c;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x3ac1d0[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x839c04,null))[_0xb353('0x21')](function(_0x35816d){if(_0x35816d){_0x2af120=_0x35816d;_0x4774bc[_0xb353('0x2c')]=_[_0xb353('0x3f')](db[_0xb353('0x4a')][_0xb353('0x29')]);_0x4774bc[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x3ac1d0[_0xb353('0x2e')]);_0x4774bc[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x4774bc[_0xb353('0x2c')],_0x4774bc[_0xb353('0x2e')]);_0x18ebb6[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x4774bc[_0xb353('0x2c')],qs[_0xb353('0x31')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x31')]));_0x18ebb6['attributes']=_0x18ebb6[_0xb353('0x2f')][_0xb353('0x32')]?_0x18ebb6[_0xb353('0x2f')]:_0x4774bc[_0xb353('0x2c')];_0x18ebb6[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x36')]);_0x18ebb6[_0xb353('0x37')]=qs['filters'](_[_0xb353('0x48')](_0x3ac1d0['query'],_0x4774bc[_0xb353('0x2d')]));if(_0x3ac1d0['query'][_0xb353('0x38')]){_0x18ebb6[_0xb353('0x37')]=_[_0xb353('0x39')](_0x18ebb6[_0xb353('0x37')],{'$or':_['map'](_0x18ebb6[_0xb353('0x2f')],function(_0x503b51){var _0x1f427a={};_0x1f427a[_0x503b51]={'$like':'%'+_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x1f427a;})});}_0x18ebb6=_[_0xb353('0x39')]({},_0x18ebb6,_0x3ac1d0[_0xb353('0x41')]);return _0x2af120['getSubjects'](_0x18ebb6);}})[_0xb353('0x21')](function(_0x45dfda){if(_0x45dfda){_0x17dd4c=_0x45dfda[_0xb353('0x32')];if(!_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x33')](_0xb353('0x34'))){_0x18ebb6['limit']=qs['limit'](_0x3ac1d0['query'][_0xb353('0x1d')]);_0x18ebb6[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x3ac1d0[_0xb353('0x2e')][_0xb353('0x1b')]);}return _0x2af120['getSubjects'](_0x18ebb6);}})[_0xb353('0x21')](function(_0x3db579){if(_0x3db579){return _0x3db579?{'count':_0x17dd4c,'rows':_0x3db579}:null;}})[_0xb353('0x21')](respondWithResult(_0x839c04,null))['catch'](handleError(_0x839c04,null));};exports['getDescriptions']=function(_0x43adf5,_0x248fc9,_0x1ecff0){var _0x322f13={};var _0x3b7dc5={};var _0x35ee91;var _0x151ceb;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x43adf5[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x248fc9,null))[_0xb353('0x21')](function(_0x42fb3d){if(_0x42fb3d){_0x35ee91=_0x42fb3d;_0x3b7dc5[_0xb353('0x2c')]=_['keys'](db[_0xb353('0x4a')]['rawAttributes']);_0x3b7dc5['query']=_[_0xb353('0x3f')](_0x43adf5['query']);_0x3b7dc5[_0xb353('0x2d')]=_[_0xb353('0x30')](_0x3b7dc5[_0xb353('0x2c')],_0x3b7dc5['query']);_0x322f13[_0xb353('0x2f')]=_[_0xb353('0x30')](_0x3b7dc5[_0xb353('0x2c')],qs[_0xb353('0x31')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x31')]));_0x322f13['attributes']=_0x322f13['attributes'][_0xb353('0x32')]?_0x322f13[_0xb353('0x2f')]:_0x3b7dc5[_0xb353('0x2c')];_0x322f13[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x43adf5['query'][_0xb353('0x36')]);_0x322f13[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x43adf5[_0xb353('0x2e')],_0x3b7dc5[_0xb353('0x2d')]));if(_0x43adf5[_0xb353('0x2e')][_0xb353('0x38')]){_0x322f13['where']=_[_0xb353('0x39')](_0x322f13[_0xb353('0x37')],{'$or':_[_0xb353('0x28')](_0x322f13[_0xb353('0x2f')],function(_0x41b6a2){var _0x31807d={};_0x31807d[_0x41b6a2]={'$like':'%'+_0x43adf5[_0xb353('0x2e')][_0xb353('0x38')]+'%'};return _0x31807d;})});}_0x322f13=_[_0xb353('0x39')]({},_0x322f13,_0x43adf5[_0xb353('0x41')]);return _0x35ee91[_0xb353('0x4b')](_0x322f13);}})[_0xb353('0x21')](function(_0x5cda63){if(_0x5cda63){_0x151ceb=_0x5cda63[_0xb353('0x32')];if(!_0x43adf5[_0xb353('0x2e')][_0xb353('0x33')]('nolimit')){_0x322f13[_0xb353('0x1d')]=qs[_0xb353('0x1d')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x1d')]);_0x322f13[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x43adf5[_0xb353('0x2e')][_0xb353('0x1b')]);}return _0x35ee91[_0xb353('0x4b')](_0x322f13);}})[_0xb353('0x21')](function(_0x87927a){if(_0x87927a){return _0x87927a?{'count':_0x151ceb,'rows':_0x87927a}:null;}})[_0xb353('0x21')](respondWithResult(_0x248fc9,null))[_0xb353('0x45')](handleError(_0x248fc9,null));};exports[_0xb353('0x4c')]=function(_0x11ab01,_0xd3596e,_0x319ea3){var _0x5eac8c={};var _0x53d325={};var _0x53666d;var _0x29955e;return db[_0xb353('0x3b')]['findOne']({'where':{'id':_0x11ab01[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0xd3596e,null))[_0xb353('0x21')](function(_0x427ec1){if(_0x427ec1){_0x53666d=_0x427ec1;_0x53d325[_0xb353('0x2c')]=_[_0xb353('0x3f')](db['Tag']['rawAttributes']);_0x53d325[_0xb353('0x2e')]=_[_0xb353('0x3f')](_0x11ab01[_0xb353('0x2e')]);_0x53d325[_0xb353('0x2d')]=_['intersection'](_0x53d325[_0xb353('0x2c')],_0x53d325[_0xb353('0x2e')]);_0x5eac8c[_0xb353('0x2f')]=_['intersection'](_0x53d325['model'],qs[_0xb353('0x31')](_0x11ab01['query'][_0xb353('0x31')]));_0x5eac8c[_0xb353('0x2f')]=_0x5eac8c[_0xb353('0x2f')][_0xb353('0x32')]?_0x5eac8c[_0xb353('0x2f')]:_0x53d325[_0xb353('0x2c')];_0x5eac8c[_0xb353('0x35')]=qs[_0xb353('0x36')](_0x11ab01[_0xb353('0x2e')][_0xb353('0x36')]);_0x5eac8c[_0xb353('0x37')]=qs[_0xb353('0x2d')](_[_0xb353('0x48')](_0x11ab01[_0xb353('0x2e')],_0x53d325[_0xb353('0x2d')]));if(_0x11ab01[_0xb353('0x2e')][_0xb353('0x38')]){_0x5eac8c[_0xb353('0x37')]=_[_0xb353('0x39')](_0x5eac8c['where'],{'$or':_[_0xb353('0x28')](_0x5eac8c[_0xb353('0x2f')],function(_0x4a544c){var _0x50d0f9={};_0x50d0f9[_0x4a544c]={'$like':'%'+_0x11ab01['query'][_0xb353('0x38')]+'%'};return _0x50d0f9;})});}_0x5eac8c=_[_0xb353('0x39')]({},_0x5eac8c,_0x11ab01[_0xb353('0x41')]);return _0x53666d[_0xb353('0x4c')](_0x5eac8c);}})['then'](function(_0x1f8216){if(_0x1f8216){_0x29955e=_0x1f8216[_0xb353('0x32')];if(!_0x11ab01['query'][_0xb353('0x33')](_0xb353('0x34'))){_0x5eac8c['limit']=qs[_0xb353('0x1d')](_0x11ab01['query']['limit']);_0x5eac8c[_0xb353('0x1b')]=qs[_0xb353('0x1b')](_0x11ab01['query']['offset']);}return _0x53666d[_0xb353('0x4c')](_0x5eac8c);}})['then'](function(_0x415c53){if(_0x415c53){return _0x415c53?{'count':_0x29955e,'rows':_0x415c53}:null;}})[_0xb353('0x21')](respondWithResult(_0xd3596e,null))[_0xb353('0x45')](handleError(_0xd3596e,null));};exports[_0xb353('0x4d')]=function(_0x3acfb2,_0x27290e,_0x1f7013){if(_0x3acfb2[_0xb353('0x44')]['id']){delete _0x3acfb2[_0xb353('0x44')]['id'];}return db[_0xb353('0x3b')][_0xb353('0x47')]({'where':{'id':_0x3acfb2[_0xb353('0x3e')]['id']}})[_0xb353('0x21')](handleEntityNotFound(_0x27290e,null))[_0xb353('0x21')](function(_0x5ab9a6){if(_0x5ab9a6){return _0x5ab9a6['setTags'](_0x3acfb2['body']['ids']||[]);}return null;})[_0xb353('0x21')](respondWithResult(_0x27290e,null))['catch'](handleError(_0x27290e,null));};
\ No newline at end of file
index e82b35f..6b7d0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd497=['rimraf','../../config/environment','FreshdeskConfiguration','../../config/logger','api','moment','request-promise','path'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd497,0x1bb));var _0x7d49=function(_0x30fe87,_0x37a878){_0x30fe87=_0x30fe87-0x0;var _0x1b6db4=_0xd497[_0x30fe87];return _0x1b6db4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7d49('0x0'))(_0x7d49('0x1'));var moment=require(_0x7d49('0x2'));var BPromise=require('bluebird');var rp=require(_0x7d49('0x3'));var fs=require('fs');var path=require(_0x7d49('0x4'));var rimraf=require(_0x7d49('0x5'));var config=require(_0x7d49('0x6'));var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x5ca1d1,_0xa9ac4e){return _0x5ca1d1['define'](_0x7d49('0x7'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bed=['define','FreshdeskConfiguration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x3bed,0xab));var _0xd3be=function(_0x2609dd,_0x4ff1c4){_0x2609dd=_0x2609dd-0x0;var _0x5e7aa6=_0x3bed[_0x2609dd];return _0x5e7aa6;};'use strict';var _=require(_0xd3be('0x0'));var util=require(_0xd3be('0x1'));var logger=require(_0xd3be('0x2'))(_0xd3be('0x3'));var moment=require(_0xd3be('0x4'));var BPromise=require(_0xd3be('0x5'));var rp=require(_0xd3be('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd3be('0x7'));var config=require(_0xd3be('0x8'));var attributes=require(_0xd3be('0x9'));module[_0xd3be('0xa')]=function(_0x43c4e1,_0x3aaf76){return _0x43c4e1[_0xd3be('0xb')](_0xd3be('0xc'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4bfe37b..333cda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f6=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x49a45e,_0x54e456){var _0x2f75fc=function(_0xe02e39){while(--_0xe02e39){_0x49a45e['push'](_0x49a45e['shift']());}};_0x2f75fc(++_0x54e456);}(_0x80f6,0x112));var _0x680f=function(_0x1c3869,_0xab09bb){_0x1c3869=_0x1c3869-0x0;var _0x90f250=_0x80f6[_0x1c3869];return _0x90f250;};'use strict';var _=require(_0x680f('0x0'));var util=require(_0x680f('0x1'));var moment=require(_0x680f('0x2'));var BPromise=require('bluebird');var rs=require(_0x680f('0x3'));var fs=require('fs');var Redis=require(_0x680f('0x4'));var db=require(_0x680f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x680f('0x6'))('rpc');var config=require(_0x680f('0x7'));var jayson=require(_0x680f('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x148625,_0x1c8346,_0x126584){return new BPromise(function(_0x555d5d,_0x422002){return client[_0x680f('0x9')](_0x148625,_0x126584)[_0x680f('0xa')](function(_0x5a8834){logger[_0x680f('0xb')](_0x680f('0xc'),_0x1c8346,_0x680f('0xd'));logger[_0x680f('0xe')](_0x680f('0xf'),_0x1c8346,_0x680f('0xd'),JSON['stringify'](_0x5a8834));if(_0x5a8834[_0x680f('0x10')]){if(_0x5a8834[_0x680f('0x10')][_0x680f('0x11')]===0x1f4){logger['error'](_0x680f('0xc'),_0x1c8346,_0x5a8834[_0x680f('0x10')][_0x680f('0x12')]);return _0x422002(_0x5a8834['error']['message']);}logger[_0x680f('0x10')](_0x680f('0xc'),_0x1c8346,_0x5a8834[_0x680f('0x10')][_0x680f('0x12')]);return _0x555d5d(_0x5a8834[_0x680f('0x10')]['message']);}else{logger[_0x680f('0xb')](_0x680f('0xc'),_0x1c8346,'request\x20sent');_0x555d5d(_0x5a8834[_0x680f('0x13')][_0x680f('0x12')]);}})[_0x680f('0x14')](function(_0x1be1b2){logger[_0x680f('0x10')](_0x680f('0xc'),_0x1c8346,_0x1be1b2);_0x422002(_0x1be1b2);});});}
\ No newline at end of file
+var _0x4a7a=['result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x2fc113,_0x45ec6e){var _0x5144ce=function(_0x47fd29){while(--_0x47fd29){_0x2fc113['push'](_0x2fc113['shift']());}};_0x5144ce(++_0x45ec6e);}(_0x4a7a,0xd1));var _0xa4a7=function(_0x4e7012,_0x5d5f73){_0x4e7012=_0x4e7012-0x0;var _0xcd56d5=_0x4a7a[_0x4e7012];return _0xcd56d5;};'use strict';var _=require(_0xa4a7('0x0'));var util=require(_0xa4a7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa4a7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa4a7('0x3'))['db'];var utils=require(_0xa4a7('0x4'));var logger=require(_0xa4a7('0x5'))(_0xa4a7('0x6'));var config=require(_0xa4a7('0x7'));var jayson=require(_0xa4a7('0x8'));var client=jayson[_0xa4a7('0x9')][_0xa4a7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x402a26,_0x3b76c7,_0x51be3a){return new BPromise(function(_0x1e03fc,_0x310eeb){return client[_0xa4a7('0xb')](_0x402a26,_0x51be3a)[_0xa4a7('0xc')](function(_0x33b67c){logger[_0xa4a7('0xd')](_0xa4a7('0xe'),_0x3b76c7,_0xa4a7('0xf'));logger[_0xa4a7('0x10')](_0xa4a7('0x11'),_0x3b76c7,_0xa4a7('0xf'),JSON['stringify'](_0x33b67c));if(_0x33b67c[_0xa4a7('0x12')]){if(_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x13')]===0x1f4){logger[_0xa4a7('0x12')](_0xa4a7('0xe'),_0x3b76c7,_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x14')]);return _0x310eeb(_0x33b67c['error']['message']);}logger[_0xa4a7('0x12')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3b76c7,_0x33b67c['error'][_0xa4a7('0x14')]);return _0x1e03fc(_0x33b67c[_0xa4a7('0x12')][_0xa4a7('0x14')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x3b76c7,_0xa4a7('0xf'));_0x1e03fc(_0x33b67c[_0xa4a7('0x15')][_0xa4a7('0x14')]);}})[_0xa4a7('0x16')](function(_0x83c1e5){logger[_0xa4a7('0x12')](_0xa4a7('0xe'),_0x3b76c7,_0x83c1e5);_0x310eeb(_0x83c1e5);});});}
\ No newline at end of file
index 5cb17fa..e767279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aba=['delete','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','post','create','put','/:id','update'];(function(_0x1d760b,_0x47f9fe){var _0x18fb17=function(_0x312def){while(--_0x312def){_0x1d760b['push'](_0x1d760b['shift']());}};_0x18fb17(++_0x47f9fe);}(_0x8aba,0x1d6));var _0xa8ab=function(_0x5844b5,_0x1591ad){_0x5844b5=_0x5844b5-0x0;var _0x3913be=_0x8aba[_0x5844b5];return _0x3913be;};'use strict';var multer=require('multer');var util=require(_0xa8ab('0x0'));var path=require(_0xa8ab('0x1'));var timeout=require(_0xa8ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa8ab('0x3'));var auth=require(_0xa8ab('0x4'));var interaction=require(_0xa8ab('0x5'));var config=require(_0xa8ab('0x6'));var controller=require(_0xa8ab('0x7'));router[_0xa8ab('0x8')]('/',auth[_0xa8ab('0x9')](),controller[_0xa8ab('0xa')]);router['get']('/:id',auth[_0xa8ab('0x9')](),controller['show']);router[_0xa8ab('0xb')]('/',auth['isAuthenticated'](),controller[_0xa8ab('0xc')]);router[_0xa8ab('0xd')](_0xa8ab('0xe'),auth[_0xa8ab('0x9')](),controller[_0xa8ab('0xf')]);router[_0xa8ab('0x10')](_0xa8ab('0xe'),auth[_0xa8ab('0x9')](),controller['destroy']);module[_0xa8ab('0x11')]=router;
\ No newline at end of file
+var _0x115b=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','index','isAuthenticated','show','post','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2935df,_0xae132b){var _0x13e54e=function(_0x9ca110){while(--_0x9ca110){_0x2935df['push'](_0x2935df['shift']());}};_0x13e54e(++_0xae132b);}(_0x115b,0x1b5));var _0xb115=function(_0x429be6,_0x199029){_0x429be6=_0x429be6-0x0;var _0x4318c1=_0x115b[_0x429be6];return _0x4318c1;};'use strict';var multer=require(_0xb115('0x0'));var util=require(_0xb115('0x1'));var path=require(_0xb115('0x2'));var timeout=require(_0xb115('0x3'));var express=require(_0xb115('0x4'));var router=express[_0xb115('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb115('0x6'));var interaction=require(_0xb115('0x7'));var config=require(_0xb115('0x8'));var controller=require(_0xb115('0x9'));router[_0xb115('0xa')]('/',auth['isAuthenticated'](),controller[_0xb115('0xb')]);router['get']('/:id',auth[_0xb115('0xc')](),controller[_0xb115('0xd')]);router[_0xb115('0xe')]('/',auth[_0xb115('0xc')](),controller[_0xb115('0xf')]);router[_0xb115('0x10')](_0xb115('0x11'),auth[_0xb115('0xc')](),controller['update']);router[_0xb115('0x12')]('/:id',auth[_0xb115('0xc')](),controller[_0xb115('0x13')]);module[_0xb115('0x14')]=router;
\ No newline at end of file
index f5687b2..eec8252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bd=['STRING','variable','customVariable','BOOLEAN','sequelize','ENUM','string','keyValue','picklist'];(function(_0x84a55c,_0x4cc282){var _0x2c63c9=function(_0x24b1c5){while(--_0x24b1c5){_0x84a55c['push'](_0x84a55c['shift']());}};_0x2c63c9(++_0x4cc282);}(_0x39bd,0xf7));var _0xd39b=function(_0x228b7f,_0x130df2){_0x228b7f=_0x228b7f-0x0;var _0xb1c76d=_0x39bd[_0x228b7f];return _0xb1c76d;};'use strict';var Sequelize=require(_0xd39b('0x0'));module['exports']={'type':{'type':Sequelize[_0xd39b('0x1')](_0xd39b('0x2'),'variable','customVariable',_0xd39b('0x3'),_0xd39b('0x4')),'defaultValue':_0xd39b('0x2')},'content':{'type':Sequelize[_0xd39b('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xd39b('0x2'),_0xd39b('0x6'),_0xd39b('0x7'))},'keyContent':{'type':Sequelize[_0xd39b('0x5')]},'idField':{'type':Sequelize[_0xd39b('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xd39b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd39b('0x5')]}};
\ No newline at end of file
+var _0xdd1b=['exports','ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN'];(function(_0x493370,_0x4c7fac){var _0xac15d=function(_0x415cd6){while(--_0x415cd6){_0x493370['push'](_0x493370['shift']());}};_0xac15d(++_0x4c7fac);}(_0xdd1b,0x98));var _0xbdd1=function(_0x534078,_0x1ec172){_0x534078=_0x534078-0x0;var _0x2e2bb6=_0xdd1b[_0x534078];return _0x2e2bb6;};'use strict';var Sequelize=require('sequelize');module[_0xbdd1('0x0')]={'type':{'type':Sequelize[_0xbdd1('0x1')](_0xbdd1('0x2'),_0xbdd1('0x3'),_0xbdd1('0x4'),_0xbdd1('0x5'),'picklist'),'defaultValue':_0xbdd1('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xbdd1('0x6')]},'keyType':{'type':Sequelize[_0xbdd1('0x1')](_0xbdd1('0x2'),_0xbdd1('0x3'),_0xbdd1('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xbdd1('0x6')]},'nameField':{'type':Sequelize[_0xbdd1('0x6')]},'customField':{'type':Sequelize[_0xbdd1('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbdd1('0x6')]}};
\ No newline at end of file
index 5c21401..e771886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fa=['sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','order','sort','pick','where','merge','VIRTUAL','filter','options','FreshdeskField','includeAll','rows','catch','show','params','fields','include','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x21fcb5,_0x1059bc){var _0x2ac143=function(_0x46f02b){while(--_0x46f02b){_0x21fcb5['push'](_0x21fcb5['shift']());}};_0x2ac143(++_0x1059bc);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x222550,_0x3c0a0c){_0x222550=_0x222550-0x0;var _0x58ac61=_0xa5fa[_0x222550];return _0x58ac61;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa5f('0x0'));var zipdir=require(_0xaa5f('0x1'));var jsonpatch=require(_0xaa5f('0x2'));var rp=require(_0xaa5f('0x3'));var moment=require('moment');var BPromise=require(_0xaa5f('0x4'));var Mustache=require(_0xaa5f('0x5'));var util=require('util');var path=require(_0xaa5f('0x6'));var sox=require(_0xaa5f('0x7'));var csv=require(_0xaa5f('0x8'));var ejs=require(_0xaa5f('0x9'));var fs=require('fs');var fs_extra=require(_0xaa5f('0xa'));var _=require(_0xaa5f('0xb'));var squel=require(_0xaa5f('0xc'));var crypto=require(_0xaa5f('0xd'));var jsforce=require(_0xaa5f('0xe'));var deskjs=require(_0xaa5f('0xf'));var toCsv=require(_0xaa5f('0x8'));var querystring=require('querystring');var Papa=require(_0xaa5f('0x10'));var Redis=require(_0xaa5f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaa5f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaa5f('0x13'));var utils=require('../../config/utils');var config=require(_0xaa5f('0x14'));var licenseUtil=require(_0xaa5f('0x15'));var db=require(_0xaa5f('0x16'))['db'];function respondWithStatusCode(_0x9aeae9,_0x252ae0){_0x252ae0=_0x252ae0||0xcc;return function(_0x48d1d3){if(_0x48d1d3){return _0x9aeae9[_0xaa5f('0x17')](_0x252ae0);}return _0x9aeae9['status'](_0x252ae0)[_0xaa5f('0x18')]();};}function respondWithResult(_0x23f872,_0x31eabc){_0x31eabc=_0x31eabc||0xc8;return function(_0x19aa27){if(_0x19aa27){return _0x23f872[_0xaa5f('0x19')](_0x31eabc)['json'](_0x19aa27);}};}function respondWithFilteredResult(_0x4fc828,_0x1f37fb){return function(_0x291042){if(_0x291042){var _0xb0bfb6=typeof _0x1f37fb[_0xaa5f('0x1a')]===_0xaa5f('0x1b')&&typeof _0x1f37fb[_0xaa5f('0x1c')]===_0xaa5f('0x1b');var _0x28407c=_0x291042[_0xaa5f('0x1d')];var _0x3d874f=_0xb0bfb6?0x0:_0x1f37fb[_0xaa5f('0x1a')];var _0x1019e8=_0xb0bfb6?_0x291042['count']:_0x1f37fb[_0xaa5f('0x1a')]+_0x1f37fb[_0xaa5f('0x1c')];var _0x1cbab5;if(_0x1019e8>=_0x28407c){_0x1019e8=_0x28407c;_0x1cbab5=0xc8;}else{_0x1cbab5=0xce;}_0x4fc828[_0xaa5f('0x19')](_0x1cbab5);return _0x4fc828[_0xaa5f('0x1e')](_0xaa5f('0x1f'),_0x3d874f+'-'+_0x1019e8+'/'+_0x28407c)[_0xaa5f('0x20')](_0x291042);}return null;};}function patchUpdates(_0x194691){return function(_0x2d8fc3){try{jsonpatch[_0xaa5f('0x21')](_0x2d8fc3,_0x194691,!![]);}catch(_0x40c223){return BPromise[_0xaa5f('0x22')](_0x40c223);}return _0x2d8fc3[_0xaa5f('0x23')]();};}function saveUpdates(_0x5238a8,_0x1e917d){return function(_0x57082c){if(_0x57082c){return _0x57082c[_0xaa5f('0x24')](_0x5238a8)[_0xaa5f('0x25')](function(_0x561381){return _0x561381;});}return null;};}function removeEntity(_0x1baa2e,_0x1032ce){return function(_0x5b9f0b){if(_0x5b9f0b){return _0x5b9f0b[_0xaa5f('0x26')]()[_0xaa5f('0x25')](function(){_0x1baa2e[_0xaa5f('0x19')](0xcc)[_0xaa5f('0x18')]();});}};}function handleEntityNotFound(_0x1f66c0,_0xacbded){return function(_0x3d7bca){if(!_0x3d7bca){_0x1f66c0[_0xaa5f('0x17')](0x194);}return _0x3d7bca;};}function handleError(_0x51eb55,_0x2445a6){_0x2445a6=_0x2445a6||0x1f4;return function(_0x3a66e8){logger[_0xaa5f('0x27')](_0x3a66e8['stack']);if(_0x3a66e8[_0xaa5f('0x28')]){delete _0x3a66e8[_0xaa5f('0x28')];}_0x51eb55[_0xaa5f('0x19')](_0x2445a6)['send'](_0x3a66e8);};}exports[_0xaa5f('0x29')]=function(_0x479f29,_0x5990d2){var _0x27d1a4={},_0x50998f={},_0x1bffec={'count':0x0,'rows':[]};var _0x4e0ec9=_['map'](db['FreshdeskField'][_0xaa5f('0x2a')],function(_0x4ddebd){return{'name':_0x4ddebd[_0xaa5f('0x2b')],'type':_0x4ddebd[_0xaa5f('0x2c')]['key']};});_0x50998f['model']=_[_0xaa5f('0x2d')](_0x4e0ec9,'name');_0x50998f[_0xaa5f('0x2e')]=_[_0xaa5f('0x2f')](_0x479f29['query']);_0x50998f[_0xaa5f('0x30')]=_[_0xaa5f('0x31')](_0x50998f[_0xaa5f('0x32')],_0x50998f['query']);_0x27d1a4[_0xaa5f('0x33')]=_[_0xaa5f('0x31')](_0x50998f['model'],qs['fields'](_0x479f29['query']['fields']));_0x27d1a4[_0xaa5f('0x33')]=_0x27d1a4[_0xaa5f('0x33')][_0xaa5f('0x34')]?_0x27d1a4[_0xaa5f('0x33')]:_0x50998f[_0xaa5f('0x32')];if(!_0x479f29[_0xaa5f('0x2e')][_0xaa5f('0x35')]('nolimit')){_0x27d1a4[_0xaa5f('0x1c')]=qs[_0xaa5f('0x1c')](_0x479f29[_0xaa5f('0x2e')][_0xaa5f('0x1c')]);_0x27d1a4[_0xaa5f('0x1a')]=qs[_0xaa5f('0x1a')](_0x479f29['query'][_0xaa5f('0x1a')]);}_0x27d1a4[_0xaa5f('0x36')]=qs[_0xaa5f('0x37')](_0x479f29[_0xaa5f('0x2e')][_0xaa5f('0x37')]);_0x27d1a4['where']=qs['filters'](_[_0xaa5f('0x38')](_0x479f29[_0xaa5f('0x2e')],_0x50998f[_0xaa5f('0x30')]),_0x4e0ec9);if(_0x479f29[_0xaa5f('0x2e')]['filter']){_0x27d1a4[_0xaa5f('0x39')]=_[_0xaa5f('0x3a')](_0x27d1a4[_0xaa5f('0x39')],{'$or':_[_0xaa5f('0x2d')](_0x4e0ec9,function(_0x37db88){if(_0x37db88[_0xaa5f('0x2c')]!==_0xaa5f('0x3b')){var _0x2c4d29={};_0x2c4d29[_0x37db88[_0xaa5f('0x28')]]={'$like':'%'+_0x479f29[_0xaa5f('0x2e')][_0xaa5f('0x3c')]+'%'};return _0x2c4d29;}})});}_0x27d1a4=_['merge']({},_0x27d1a4,_0x479f29[_0xaa5f('0x3d')]);var _0x2562ce={'where':_0x27d1a4[_0xaa5f('0x39')]};return db[_0xaa5f('0x3e')][_0xaa5f('0x1d')](_0x2562ce)[_0xaa5f('0x25')](function(_0x1fb572){_0x1bffec[_0xaa5f('0x1d')]=_0x1fb572;if(_0x479f29[_0xaa5f('0x2e')][_0xaa5f('0x3f')]){_0x27d1a4['include']=[{'all':!![]}];}return db[_0xaa5f('0x3e')]['findAll'](_0x27d1a4);})[_0xaa5f('0x25')](function(_0x21f4bc){_0x1bffec[_0xaa5f('0x40')]=_0x21f4bc;return _0x1bffec;})['then'](respondWithFilteredResult(_0x5990d2,_0x27d1a4))[_0xaa5f('0x41')](handleError(_0x5990d2,null));};exports[_0xaa5f('0x42')]=function(_0xe49f8,_0x528b08){var _0x12a8e4={'raw':!![],'where':{'id':_0xe49f8[_0xaa5f('0x43')]['id']}},_0x179be8={};_0x179be8[_0xaa5f('0x32')]=_['keys'](db[_0xaa5f('0x3e')][_0xaa5f('0x2a')]);_0x179be8[_0xaa5f('0x2e')]=_[_0xaa5f('0x2f')](_0xe49f8[_0xaa5f('0x2e')]);_0x179be8[_0xaa5f('0x30')]=_[_0xaa5f('0x31')](_0x179be8[_0xaa5f('0x32')],_0x179be8['query']);_0x12a8e4[_0xaa5f('0x33')]=_['intersection'](_0x179be8[_0xaa5f('0x32')],qs['fields'](_0xe49f8[_0xaa5f('0x2e')][_0xaa5f('0x44')]));_0x12a8e4['attributes']=_0x12a8e4[_0xaa5f('0x33')][_0xaa5f('0x34')]?_0x12a8e4[_0xaa5f('0x33')]:_0x179be8['model'];if(_0xe49f8['query']['includeAll']){_0x12a8e4[_0xaa5f('0x45')]=[{'all':!![]}];}_0x12a8e4=_['merge']({},_0x12a8e4,_0xe49f8[_0xaa5f('0x3d')]);return db[_0xaa5f('0x3e')][_0xaa5f('0x46')](_0x12a8e4)[_0xaa5f('0x25')](handleEntityNotFound(_0x528b08,null))['then'](respondWithResult(_0x528b08,null))[_0xaa5f('0x41')](handleError(_0x528b08,null));};exports[_0xaa5f('0x47')]=function(_0x3c6a17,_0x231ad1){return db[_0xaa5f('0x3e')][_0xaa5f('0x47')](_0x3c6a17[_0xaa5f('0x48')],{})[_0xaa5f('0x25')](respondWithResult(_0x231ad1,0xc9))[_0xaa5f('0x41')](handleError(_0x231ad1,null));};exports[_0xaa5f('0x24')]=function(_0x3ea553,_0x2de737){if(_0x3ea553[_0xaa5f('0x48')]['id']){delete _0x3ea553[_0xaa5f('0x48')]['id'];}return db[_0xaa5f('0x3e')][_0xaa5f('0x46')]({'where':{'id':_0x3ea553['params']['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x2de737,null))[_0xaa5f('0x25')](saveUpdates(_0x3ea553[_0xaa5f('0x48')],null))[_0xaa5f('0x25')](respondWithResult(_0x2de737,null))[_0xaa5f('0x41')](handleError(_0x2de737,null));};exports[_0xaa5f('0x26')]=function(_0x32bbed,_0x4aa556){return db[_0xaa5f('0x3e')][_0xaa5f('0x46')]({'where':{'id':_0x32bbed[_0xaa5f('0x43')]['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x4aa556,null))['then'](removeEntity(_0x4aa556,null))[_0xaa5f('0x41')](handleError(_0x4aa556,null));};
\ No newline at end of file
+var _0xe130=['includeAll','include','findAll','show','params','keys','length','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x2c7b86,_0x59ef3c){var _0x256735=function(_0x352e33){while(--_0x352e33){_0x2c7b86['push'](_0x2c7b86['shift']());}};_0x256735(++_0x59ef3c);}(_0xe130,0x127));var _0x0e13=function(_0x1bc1dc,_0x2203a8){_0x1bc1dc=_0x1bc1dc-0x0;var _0x18cfd0=_0xe130[_0x1bc1dc];return _0x18cfd0;};'use strict';var emlformat=require(_0x0e13('0x0'));var rimraf=require(_0x0e13('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e13('0x2'));var rp=require(_0x0e13('0x3'));var moment=require(_0x0e13('0x4'));var BPromise=require(_0x0e13('0x5'));var Mustache=require(_0x0e13('0x6'));var util=require('util');var path=require(_0x0e13('0x7'));var sox=require(_0x0e13('0x8'));var csv=require(_0x0e13('0x9'));var ejs=require(_0x0e13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0e13('0xc'));var toCsv=require(_0x0e13('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0e13('0xd'));var authService=require(_0x0e13('0xe'));var qs=require(_0x0e13('0xf'));var as=require(_0x0e13('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0e13('0x11'));var utils=require(_0x0e13('0x12'));var config=require(_0x0e13('0x13'));var licenseUtil=require(_0x0e13('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4391,_0x4d9ea0){_0x4d9ea0=_0x4d9ea0||0xcc;return function(_0x2ef77e){if(_0x2ef77e){return _0x1b4391[_0x0e13('0x15')](_0x4d9ea0);}return _0x1b4391[_0x0e13('0x16')](_0x4d9ea0)[_0x0e13('0x17')]();};}function respondWithResult(_0x2f0d82,_0x1ec6ad){_0x1ec6ad=_0x1ec6ad||0xc8;return function(_0x27c3cf){if(_0x27c3cf){return _0x2f0d82[_0x0e13('0x16')](_0x1ec6ad)[_0x0e13('0x18')](_0x27c3cf);}};}function respondWithFilteredResult(_0x530f82,_0x302763){return function(_0xbc1617){if(_0xbc1617){var _0x2057fe=typeof _0x302763[_0x0e13('0x19')]===_0x0e13('0x1a')&&typeof _0x302763[_0x0e13('0x1b')]==='undefined';var _0x11ec50=_0xbc1617[_0x0e13('0x1c')];var _0x510a2b=_0x2057fe?0x0:_0x302763['offset'];var _0x3b85fd=_0x2057fe?_0xbc1617['count']:_0x302763[_0x0e13('0x19')]+_0x302763['limit'];var _0x294aea;if(_0x3b85fd>=_0x11ec50){_0x3b85fd=_0x11ec50;_0x294aea=0xc8;}else{_0x294aea=0xce;}_0x530f82[_0x0e13('0x16')](_0x294aea);return _0x530f82[_0x0e13('0x1d')](_0x0e13('0x1e'),_0x510a2b+'-'+_0x3b85fd+'/'+_0x11ec50)[_0x0e13('0x18')](_0xbc1617);}return null;};}function patchUpdates(_0x5ef062){return function(_0x5cfba8){try{jsonpatch['apply'](_0x5cfba8,_0x5ef062,!![]);}catch(_0x2dddef){return BPromise[_0x0e13('0x1f')](_0x2dddef);}return _0x5cfba8['save']();};}function saveUpdates(_0x515222,_0x295eb0){return function(_0x296ed3){if(_0x296ed3){return _0x296ed3[_0x0e13('0x20')](_0x515222)['then'](function(_0x400e87){return _0x400e87;});}return null;};}function removeEntity(_0x70c3db,_0x22cc15){return function(_0x20303b){if(_0x20303b){return _0x20303b[_0x0e13('0x21')]()[_0x0e13('0x22')](function(){_0x70c3db[_0x0e13('0x16')](0xcc)[_0x0e13('0x17')]();});}};}function handleEntityNotFound(_0x3d6abf,_0x260bf7){return function(_0x9621e2){if(!_0x9621e2){_0x3d6abf[_0x0e13('0x15')](0x194);}return _0x9621e2;};}function handleError(_0x230684,_0x45edf7){_0x45edf7=_0x45edf7||0x1f4;return function(_0xfd19ed){logger[_0x0e13('0x23')](_0xfd19ed[_0x0e13('0x24')]);if(_0xfd19ed['name']){delete _0xfd19ed[_0x0e13('0x25')];}_0x230684[_0x0e13('0x16')](_0x45edf7)[_0x0e13('0x26')](_0xfd19ed);};}exports['index']=function(_0x2182ae,_0x1deb3b){var _0xa38940={},_0x4606de={},_0x5d41c3={'count':0x0,'rows':[]};var _0xe9151f=_[_0x0e13('0x27')](db[_0x0e13('0x28')][_0x0e13('0x29')],function(_0x2e65e2){return{'name':_0x2e65e2[_0x0e13('0x2a')],'type':_0x2e65e2[_0x0e13('0x2b')][_0x0e13('0x2c')]};});_0x4606de['model']=_[_0x0e13('0x27')](_0xe9151f,_0x0e13('0x25'));_0x4606de[_0x0e13('0x2d')]=_['keys'](_0x2182ae[_0x0e13('0x2d')]);_0x4606de[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],_0x4606de[_0x0e13('0x2d')]);_0xa38940[_0x0e13('0x31')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0x2182ae['query'][_0x0e13('0x32')]));_0xa38940[_0x0e13('0x31')]=_0xa38940[_0x0e13('0x31')]['length']?_0xa38940[_0x0e13('0x31')]:_0x4606de['model'];if(!_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x33')](_0x0e13('0x34'))){_0xa38940[_0x0e13('0x1b')]=qs[_0x0e13('0x1b')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x1b')]);_0xa38940['offset']=qs['offset'](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x19')]);}_0xa38940[_0x0e13('0x35')]=qs[_0x0e13('0x36')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x36')]);_0xa38940[_0x0e13('0x37')]=qs['filters'](_[_0x0e13('0x38')](_0x2182ae[_0x0e13('0x2d')],_0x4606de[_0x0e13('0x2e')]),_0xe9151f);if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x39')]){_0xa38940['where']=_[_0x0e13('0x3a')](_0xa38940[_0x0e13('0x37')],{'$or':_[_0x0e13('0x27')](_0xe9151f,function(_0x4b17f2){if(_0x4b17f2[_0x0e13('0x2b')]!=='VIRTUAL'){var _0x33af9a={};_0x33af9a[_0x4b17f2['name']]={'$like':'%'+_0x2182ae[_0x0e13('0x2d')]['filter']+'%'};return _0x33af9a;}})});}_0xa38940=_[_0x0e13('0x3a')]({},_0xa38940,_0x2182ae[_0x0e13('0x3b')]);var _0x3cdc25={'where':_0xa38940[_0x0e13('0x37')]};return db[_0x0e13('0x28')][_0x0e13('0x1c')](_0x3cdc25)['then'](function(_0x445949){_0x5d41c3[_0x0e13('0x1c')]=_0x445949;if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x3c')]){_0xa38940[_0x0e13('0x3d')]=[{'all':!![]}];}return db[_0x0e13('0x28')][_0x0e13('0x3e')](_0xa38940);})['then'](function(_0x164720){_0x5d41c3['rows']=_0x164720;return _0x5d41c3;})['then'](respondWithFilteredResult(_0x1deb3b,_0xa38940))['catch'](handleError(_0x1deb3b,null));};exports[_0x0e13('0x3f')]=function(_0xe6bb04,_0x3060e1){var _0x14ab2a={'raw':!![],'where':{'id':_0xe6bb04[_0x0e13('0x40')]['id']}},_0x3ee751={};_0x3ee751[_0x0e13('0x30')]=_['keys'](db[_0x0e13('0x28')]['rawAttributes']);_0x3ee751['query']=_[_0x0e13('0x41')](_0xe6bb04[_0x0e13('0x2d')]);_0x3ee751[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x3ee751['model'],_0x3ee751[_0x0e13('0x2d')]);_0x14ab2a[_0x0e13('0x31')]=_['intersection'](_0x3ee751[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0xe6bb04[_0x0e13('0x2d')][_0x0e13('0x32')]));_0x14ab2a[_0x0e13('0x31')]=_0x14ab2a[_0x0e13('0x31')][_0x0e13('0x42')]?_0x14ab2a[_0x0e13('0x31')]:_0x3ee751[_0x0e13('0x30')];if(_0xe6bb04[_0x0e13('0x2d')]['includeAll']){_0x14ab2a['include']=[{'all':!![]}];}_0x14ab2a=_[_0x0e13('0x3a')]({},_0x14ab2a,_0xe6bb04[_0x0e13('0x3b')]);return db[_0x0e13('0x28')][_0x0e13('0x43')](_0x14ab2a)[_0x0e13('0x22')](handleEntityNotFound(_0x3060e1,null))['then'](respondWithResult(_0x3060e1,null))[_0x0e13('0x44')](handleError(_0x3060e1,null));};exports[_0x0e13('0x45')]=function(_0x30b637,_0x548259){return db[_0x0e13('0x28')]['create'](_0x30b637[_0x0e13('0x46')],{})[_0x0e13('0x22')](respondWithResult(_0x548259,0xc9))[_0x0e13('0x44')](handleError(_0x548259,null));};exports[_0x0e13('0x20')]=function(_0x35249c,_0x47e5b8){if(_0x35249c[_0x0e13('0x46')]['id']){delete _0x35249c['body']['id'];}return db[_0x0e13('0x28')][_0x0e13('0x43')]({'where':{'id':_0x35249c['params']['id']}})[_0x0e13('0x22')](handleEntityNotFound(_0x47e5b8,null))[_0x0e13('0x22')](saveUpdates(_0x35249c[_0x0e13('0x46')],null))[_0x0e13('0x22')](respondWithResult(_0x47e5b8,null))['catch'](handleError(_0x47e5b8,null));};exports[_0x0e13('0x21')]=function(_0x359de5,_0x4d9afd){return db[_0x0e13('0x28')]['find']({'where':{'id':_0x359de5['params']['id']}})['then'](handleEntityNotFound(_0x4d9afd,null))[_0x0e13('0x22')](removeEntity(_0x4d9afd,null))['catch'](handleError(_0x4d9afd,null));};
\ No newline at end of file
index 724cb58..be7e34e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ec2=['path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','idField','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4ae855,_0xbc1569){var _0x43d5b7=function(_0x207c00){while(--_0x207c00){_0x4ae855['push'](_0x4ae855['shift']());}};_0x43d5b7(++_0xbc1569);}(_0x0ec2,0x72));var _0x20ec=function(_0x319cb9,_0x4b8d35){_0x319cb9=_0x319cb9-0x0;var _0x1735fc=_0x0ec2[_0x319cb9];return _0x1735fc;};'use strict';var _=require(_0x20ec('0x0'));var util=require('util');var logger=require(_0x20ec('0x1'))(_0x20ec('0x2'));var moment=require(_0x20ec('0x3'));var BPromise=require(_0x20ec('0x4'));var rp=require(_0x20ec('0x5'));var fs=require('fs');var path=require(_0x20ec('0x6'));var rimraf=require(_0x20ec('0x7'));var config=require(_0x20ec('0x8'));var attributes=require(_0x20ec('0x9'));module[_0x20ec('0xa')]=function(_0x2b2c94,_0x347f85){return _0x2b2c94[_0x20ec('0xb')](_0x20ec('0xc'),attributes,{'tableName':_0x20ec('0xd'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x20ec('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8eeb=['path','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','idField','FieldId','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8eeb,0x183));var _0xb8ee=function(_0x3cd351,_0x11c2b9){_0x3cd351=_0x3cd351-0x0;var _0x5426e8=_0x8eeb[_0x3cd351];return _0x5426e8;};'use strict';var _=require(_0xb8ee('0x0'));var util=require('util');var logger=require(_0xb8ee('0x1'))(_0xb8ee('0x2'));var moment=require('moment');var BPromise=require(_0xb8ee('0x3'));var rp=require(_0xb8ee('0x4'));var fs=require('fs');var path=require(_0xb8ee('0x5'));var rimraf=require(_0xb8ee('0x6'));var config=require(_0xb8ee('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0xb8ee('0x8')]=function(_0x547a0f,_0x241d62){return _0x547a0f[_0xb8ee('0x9')](_0xb8ee('0xa'),attributes,{'tableName':_0xb8ee('0xb'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0xb8ee('0xc'),_0xb8ee('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ae4666c..77c9916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf32=['then','info','FreshdeskField,\x20%s,\x20%s','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x29de46,_0xd913a4){var _0x1e56ad=function(_0x165101){while(--_0x165101){_0x29de46['push'](_0x29de46['shift']());}};_0x1e56ad(++_0xd913a4);}(_0xaf32,0x1ac));var _0x2af3=function(_0x8267aa,_0x496ef0){_0x8267aa=_0x8267aa-0x0;var _0x2a437f=_0xaf32[_0x8267aa];return _0x2a437f;};'use strict';var _=require(_0x2af3('0x0'));var util=require('util');var moment=require(_0x2af3('0x1'));var BPromise=require(_0x2af3('0x2'));var rs=require(_0x2af3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2af3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2af3('0x5'))('rpc');var config=require(_0x2af3('0x6'));var jayson=require(_0x2af3('0x7'));var client=jayson[_0x2af3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x496a04,_0x3595a1,_0x582832){return new BPromise(function(_0x19e782,_0x5bd2c1){return client['request'](_0x496a04,_0x582832)[_0x2af3('0x9')](function(_0x3dd95c){logger[_0x2af3('0xa')](_0x2af3('0xb'),_0x3595a1,'request\x20sent');logger['debug'](_0x2af3('0xc'),_0x3595a1,'request\x20sent',JSON[_0x2af3('0xd')](_0x3dd95c));if(_0x3dd95c['error']){if(_0x3dd95c[_0x2af3('0xe')]['code']===0x1f4){logger['error'](_0x2af3('0xb'),_0x3595a1,_0x3dd95c[_0x2af3('0xe')][_0x2af3('0xf')]);return _0x5bd2c1(_0x3dd95c[_0x2af3('0xe')][_0x2af3('0xf')]);}logger[_0x2af3('0xe')](_0x2af3('0xb'),_0x3595a1,_0x3dd95c[_0x2af3('0xe')][_0x2af3('0xf')]);return _0x19e782(_0x3dd95c[_0x2af3('0xe')][_0x2af3('0xf')]);}else{logger[_0x2af3('0xa')](_0x2af3('0xb'),_0x3595a1,_0x2af3('0x10'));_0x19e782(_0x3dd95c[_0x2af3('0x11')][_0x2af3('0xf')]);}})[_0x2af3('0x12')](function(_0x3275a2){logger[_0x2af3('0xe')](_0x2af3('0xb'),_0x3595a1,_0x3275a2);_0x5bd2c1(_0x3275a2);});});}
\ No newline at end of file
+var _0xd011=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x54d66f,_0xc8c232){var _0x53d5e4=function(_0x5c99a4){while(--_0x5c99a4){_0x54d66f['push'](_0x54d66f['shift']());}};_0x53d5e4(++_0xc8c232);}(_0xd011,0xf3));var _0x1d01=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd011[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1d01('0x0'));var util=require(_0x1d01('0x1'));var moment=require(_0x1d01('0x2'));var BPromise=require(_0x1d01('0x3'));var rs=require(_0x1d01('0x4'));var fs=require('fs');var Redis=require(_0x1d01('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d01('0x6'));var logger=require(_0x1d01('0x7'))(_0x1d01('0x8'));var config=require('../../config/environment');var jayson=require(_0x1d01('0x9'));var client=jayson[_0x1d01('0xa')][_0x1d01('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6a1e65,_0x1de67d,_0x4c3ab9){return new BPromise(function(_0x15eaae,_0xe3f5a7){return client[_0x1d01('0xc')](_0x6a1e65,_0x4c3ab9)[_0x1d01('0xd')](function(_0x1622d3){logger[_0x1d01('0xe')](_0x1d01('0xf'),_0x1de67d,_0x1d01('0x10'));logger[_0x1d01('0x11')](_0x1d01('0x12'),_0x1de67d,_0x1d01('0x10'),JSON[_0x1d01('0x13')](_0x1622d3));if(_0x1622d3['error']){if(_0x1622d3[_0x1d01('0x14')][_0x1d01('0x15')]===0x1f4){logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x1622d3[_0x1d01('0x14')][_0x1d01('0x16')]);return _0xe3f5a7(_0x1622d3['error'][_0x1d01('0x16')]);}logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x1622d3['error'][_0x1d01('0x16')]);return _0x15eaae(_0x1622d3[_0x1d01('0x14')][_0x1d01('0x16')]);}else{logger[_0x1d01('0xe')](_0x1d01('0xf'),_0x1de67d,_0x1d01('0x10'));_0x15eaae(_0x1622d3[_0x1d01('0x17')][_0x1d01('0x16')]);}})[_0x1d01('0x18')](function(_0x31e9b6){logger[_0x1d01('0x14')](_0x1d01('0xf'),_0x1de67d,_0x31e9b6);_0xe3f5a7(_0x31e9b6);});});}
\ No newline at end of file
index 1aa72e4..299f6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','getConfigurations','/:id/fields','getFields','post','/:id/configurations','put','/:id','update','delete'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xe605,0x92));var _0x5e60=function(_0x2cb834,_0x32e546){_0x2cb834=_0x2cb834-0x0;var _0x30b737=_0xe605[_0x2cb834];return _0x30b737;};'use strict';var multer=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var path=require('path');var timeout=require(_0x5e60('0x2'));var express=require(_0x5e60('0x3'));var router=express[_0x5e60('0x4')]();var fs_extra=require(_0x5e60('0x5'));var auth=require(_0x5e60('0x6'));var interaction=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var controller=require(_0x5e60('0x9'));router[_0x5e60('0xa')]('/',auth[_0x5e60('0xb')](),controller[_0x5e60('0xc')]);router[_0x5e60('0xa')]('/:id',auth[_0x5e60('0xb')](),controller['show']);router['get']('/:id/configurations',auth[_0x5e60('0xb')](),controller[_0x5e60('0xd')]);router[_0x5e60('0xa')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0xf')]);router['post']('/',auth[_0x5e60('0xb')](),controller['create']);router[_0x5e60('0x10')](_0x5e60('0x11'),auth[_0x5e60('0xb')](),controller['addConfiguration']);router[_0x5e60('0x12')](_0x5e60('0x13'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x14')]);router[_0x5e60('0x15')](_0x5e60('0x13'),auth['isAuthenticated'](),controller[_0x5e60('0x16')]);module[_0x5e60('0x17')]=router;
\ No newline at end of file
+var _0xf45e=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','destroy'];(function(_0x57fdd1,_0x20d272){var _0x301331=function(_0x43e348){while(--_0x43e348){_0x57fdd1['push'](_0x57fdd1['shift']());}};_0x301331(++_0x20d272);}(_0xf45e,0x115));var _0xef45=function(_0xff0b0b,_0x5ea0a5){_0xff0b0b=_0xff0b0b-0x0;var _0x4b58bc=_0xf45e[_0xff0b0b];return _0x4b58bc;};'use strict';var multer=require(_0xef45('0x0'));var util=require('util');var path=require(_0xef45('0x1'));var timeout=require('connect-timeout');var express=require(_0xef45('0x2'));var router=express[_0xef45('0x3')]();var fs_extra=require(_0xef45('0x4'));var auth=require(_0xef45('0x5'));var interaction=require(_0xef45('0x6'));var config=require(_0xef45('0x7'));var controller=require(_0xef45('0x8'));router[_0xef45('0x9')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0xb')]);router[_0xef45('0x9')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller[_0xef45('0xd')]);router[_0xef45('0x9')](_0xef45('0xe'),auth[_0xef45('0xa')](),controller[_0xef45('0xf')]);router[_0xef45('0x9')]('/:id/fields',auth[_0xef45('0xa')](),controller[_0xef45('0x10')]);router[_0xef45('0x11')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0x12')]);router[_0xef45('0x11')]('/:id/configurations',auth[_0xef45('0xa')](),controller[_0xef45('0x13')]);router[_0xef45('0x14')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller['update']);router['delete'](_0xef45('0xc'),auth['isAuthenticated'](),controller[_0xef45('0x15')]);module[_0xef45('0x16')]=router;
\ No newline at end of file
index 7022832..1aeb613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['STRING','username','remoteUri','sequelize','exports'];(function(_0x33c094,_0x4940e8){var _0x1e35d8=function(_0x4114e6){while(--_0x4114e6){_0x33c094['push'](_0x33c094['shift']());}};_0x1e35d8(++_0x4940e8);}(_0x4137,0xf8));var _0x7413=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x4137[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require(_0x7413('0x0'));module[_0x7413('0x1')]={'name':{'type':Sequelize[_0x7413('0x2')]},'description':{'type':Sequelize[_0x7413('0x2')]},'username':{'type':Sequelize[_0x7413('0x2')],'unique':_0x7413('0x3')},'apiKey':{'type':Sequelize[_0x7413('0x2')]},'remoteUri':{'type':Sequelize[_0x7413('0x2')],'unique':_0x7413('0x4')},'serverUrl':{'type':Sequelize[_0x7413('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x627e=['STRING','remoteUri','sequelize','exports'];(function(_0x3fe36d,_0x52cdea){var _0xbf58c9=function(_0x500de9){while(--_0x500de9){_0x3fe36d['push'](_0x3fe36d['shift']());}};_0xbf58c9(++_0x52cdea);}(_0x627e,0x14a));var _0xe627=function(_0x430d58,_0x53be96){_0x430d58=_0x430d58-0x0;var _0x5a1516=_0x627e[_0x430d58];return _0x5a1516;};'use strict';var Sequelize=require(_0xe627('0x0'));module[_0xe627('0x1')]={'name':{'type':Sequelize[_0xe627('0x2')]},'description':{'type':Sequelize[_0xe627('0x2')]},'username':{'type':Sequelize[_0xe627('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xe627('0x2')]},'remoteUri':{'type':Sequelize[_0xe627('0x2')],'unique':_0xe627('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index c691125..2ce68d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50f5=['Token\x20token=','email','test','statusCode','getFields','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','length','attributes','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','findOne','FreshsalesConfiguration','order','getConfigurations','hasOwnProperty','nolimit','addConfiguration','Subjects','channel','Descriptions','getDescriptions','FreshsalesField','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners'];(function(_0x59ef3d,_0x5c7aee){var _0x585558=function(_0x1f0f81){while(--_0x1f0f81){_0x59ef3d['push'](_0x59ef3d['shift']());}};_0x585558(++_0x5c7aee);}(_0x50f5,0xce));var _0x550f=function(_0x2300f0,_0x3c6371){_0x2300f0=_0x2300f0-0x0;var _0x8107e4=_0x50f5[_0x2300f0];return _0x8107e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x550f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x550f('0x1'));var rp=require(_0x550f('0x2'));var moment=require(_0x550f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x550f('0x4'));var util=require('util');var path=require(_0x550f('0x5'));var sox=require('sox');var csv=require(_0x550f('0x6'));var ejs=require(_0x550f('0x7'));var fs=require('fs');var fs_extra=require(_0x550f('0x8'));var _=require(_0x550f('0x9'));var squel=require(_0x550f('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x550f('0xb'));var toCsv=require(_0x550f('0x6'));var querystring=require(_0x550f('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x550f('0xd'));var qs=require(_0x550f('0xe'));var as=require(_0x550f('0xf'));var hardwareService=require(_0x550f('0x10'));var logger=require(_0x550f('0x11'))(_0x550f('0x12'));var utils=require(_0x550f('0x13'));var config=require(_0x550f('0x14'));var licenseUtil=require(_0x550f('0x15'));var db=require(_0x550f('0x16'))['db'];var integrations=require(_0x550f('0x17'));function respondWithStatusCode(_0x4f7b96,_0x2f56d1){_0x2f56d1=_0x2f56d1||0xcc;return function(_0x407581){if(_0x407581){return _0x4f7b96[_0x550f('0x18')](_0x2f56d1);}return _0x4f7b96[_0x550f('0x19')](_0x2f56d1)['end']();};}function respondWithResult(_0x592c6c,_0x37a9df){_0x37a9df=_0x37a9df||0xc8;return function(_0x17dc7b){if(_0x17dc7b){return _0x592c6c[_0x550f('0x19')](_0x37a9df)[_0x550f('0x1a')](_0x17dc7b);}};}function respondWithFilteredResult(_0x111041,_0x5020f2){return function(_0x4e2a65){if(_0x4e2a65){var _0x31d2a9=typeof _0x5020f2[_0x550f('0x1b')]==='undefined'&&typeof _0x5020f2[_0x550f('0x1c')]===_0x550f('0x1d');var _0x48566b=_0x4e2a65[_0x550f('0x1e')];var _0x2f9fbe=_0x31d2a9?0x0:_0x5020f2['offset'];var _0xeaad5d=_0x31d2a9?_0x4e2a65[_0x550f('0x1e')]:_0x5020f2[_0x550f('0x1b')]+_0x5020f2[_0x550f('0x1c')];var _0x146c11;if(_0xeaad5d>=_0x48566b){_0xeaad5d=_0x48566b;_0x146c11=0xc8;}else{_0x146c11=0xce;}_0x111041[_0x550f('0x19')](_0x146c11);return _0x111041[_0x550f('0x1f')](_0x550f('0x20'),_0x2f9fbe+'-'+_0xeaad5d+'/'+_0x48566b)[_0x550f('0x1a')](_0x4e2a65);}return null;};}function patchUpdates(_0x5e725a){return function(_0x346cc3){try{jsonpatch['apply'](_0x346cc3,_0x5e725a,!![]);}catch(_0x546837){return BPromise[_0x550f('0x21')](_0x546837);}return _0x346cc3['save']();};}function saveUpdates(_0x159155,_0x3ee94f){return function(_0x48c810){if(_0x48c810){return _0x48c810[_0x550f('0x22')](_0x159155)[_0x550f('0x23')](function(_0x9866b8){return _0x9866b8;});}return null;};}function removeEntity(_0xab1678,_0x55a4d7){return function(_0x454dab){if(_0x454dab){return _0x454dab[_0x550f('0x24')]()['then'](function(){_0xab1678['status'](0xcc)[_0x550f('0x25')]();});}};}function handleEntityNotFound(_0x2b21dc,_0x171964){return function(_0x118221){if(!_0x118221){_0x2b21dc[_0x550f('0x18')](0x194);}return _0x118221;};}function handleError(_0x5790b7,_0x5fae20){_0x5fae20=_0x5fae20||0x1f4;return function(_0x36161c){logger[_0x550f('0x26')](_0x36161c[_0x550f('0x27')]);if(_0x36161c[_0x550f('0x28')]){delete _0x36161c[_0x550f('0x28')];}_0x5790b7[_0x550f('0x19')](_0x5fae20)[_0x550f('0x29')](_0x36161c);};}exports[_0x550f('0x2a')]=function(_0x454d0b,_0x165be7){var _0x45d9e3={},_0x39aa13={},_0x42e630={'count':0x0,'rows':[]};var _0x1cdc7e=_[_0x550f('0x2b')](db[_0x550f('0x2c')][_0x550f('0x2d')],function(_0x43e9bc){return{'name':_0x43e9bc[_0x550f('0x2e')],'type':_0x43e9bc[_0x550f('0x2f')]['key']};});_0x39aa13[_0x550f('0x30')]=_[_0x550f('0x2b')](_0x1cdc7e,_0x550f('0x28'));_0x39aa13['query']=_[_0x550f('0x31')](_0x454d0b[_0x550f('0x32')]);_0x39aa13[_0x550f('0x33')]=_[_0x550f('0x34')](_0x39aa13[_0x550f('0x30')],_0x39aa13[_0x550f('0x32')]);_0x45d9e3['attributes']=_[_0x550f('0x34')](_0x39aa13['model'],qs[_0x550f('0x35')](_0x454d0b[_0x550f('0x32')]['fields']));_0x45d9e3['attributes']=_0x45d9e3['attributes'][_0x550f('0x36')]?_0x45d9e3[_0x550f('0x37')]:_0x39aa13[_0x550f('0x30')];if(!_0x454d0b[_0x550f('0x32')]['hasOwnProperty']('nolimit')){_0x45d9e3['limit']=qs[_0x550f('0x1c')](_0x454d0b[_0x550f('0x32')]['limit']);_0x45d9e3['offset']=qs['offset'](_0x454d0b[_0x550f('0x32')]['offset']);}_0x45d9e3['order']=qs[_0x550f('0x38')](_0x454d0b['query']['sort']);_0x45d9e3[_0x550f('0x39')]=qs[_0x550f('0x33')](_[_0x550f('0x3a')](_0x454d0b[_0x550f('0x32')],_0x39aa13[_0x550f('0x33')]),_0x1cdc7e);if(_0x454d0b[_0x550f('0x32')][_0x550f('0x3b')]){_0x45d9e3[_0x550f('0x39')]=_[_0x550f('0x3c')](_0x45d9e3[_0x550f('0x39')],{'$or':_[_0x550f('0x2b')](_0x1cdc7e,function(_0x178879){if(_0x178879[_0x550f('0x2f')]!==_0x550f('0x3d')){var _0x57b860={};_0x57b860[_0x178879[_0x550f('0x28')]]={'$like':'%'+_0x454d0b['query'][_0x550f('0x3b')]+'%'};return _0x57b860;}})});}_0x45d9e3=_[_0x550f('0x3c')]({},_0x45d9e3,_0x454d0b[_0x550f('0x3e')]);var _0x4fd4f8={'where':_0x45d9e3['where']};return db['FreshsalesAccount'][_0x550f('0x1e')](_0x4fd4f8)[_0x550f('0x23')](function(_0x3537d6){_0x42e630[_0x550f('0x1e')]=_0x3537d6;if(_0x454d0b['query'][_0x550f('0x3f')]){_0x45d9e3[_0x550f('0x40')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x550f('0x41')](_0x45d9e3);})[_0x550f('0x23')](function(_0x49a32f){_0x42e630[_0x550f('0x42')]=_0x49a32f;return _0x42e630;})[_0x550f('0x23')](respondWithFilteredResult(_0x165be7,_0x45d9e3))[_0x550f('0x43')](handleError(_0x165be7,null));};exports[_0x550f('0x44')]=function(_0x4299df,_0x459079){var _0x4c9c7f={'raw':![],'where':{'id':_0x4299df[_0x550f('0x45')]['id']}},_0x116750={};_0x116750[_0x550f('0x30')]=_[_0x550f('0x31')](db[_0x550f('0x2c')][_0x550f('0x2d')]);_0x116750[_0x550f('0x32')]=_[_0x550f('0x31')](_0x4299df[_0x550f('0x32')]);_0x116750[_0x550f('0x33')]=_['intersection'](_0x116750[_0x550f('0x30')],_0x116750[_0x550f('0x32')]);_0x4c9c7f[_0x550f('0x37')]=_[_0x550f('0x34')](_0x116750['model'],qs['fields'](_0x4299df[_0x550f('0x32')][_0x550f('0x35')]));_0x4c9c7f['attributes']=_0x4c9c7f['attributes'][_0x550f('0x36')]?_0x4c9c7f[_0x550f('0x37')]:_0x116750[_0x550f('0x30')];if(_0x4299df[_0x550f('0x32')][_0x550f('0x3f')]){_0x4c9c7f[_0x550f('0x40')]=[{'all':!![]}];}_0x4c9c7f=_[_0x550f('0x3c')]({},_0x4c9c7f,_0x4299df[_0x550f('0x3e')]);return db[_0x550f('0x2c')][_0x550f('0x46')](_0x4c9c7f)[_0x550f('0x23')](handleEntityNotFound(_0x459079,null))[_0x550f('0x23')](respondWithResult(_0x459079,null))[_0x550f('0x43')](handleError(_0x459079,null));};exports[_0x550f('0x47')]=function(_0x50b53c,_0x56c34b){return db[_0x550f('0x2c')][_0x550f('0x47')](_0x50b53c['body'],{})['then'](respondWithResult(_0x56c34b,0xc9))[_0x550f('0x43')](handleError(_0x56c34b,null));};exports[_0x550f('0x22')]=function(_0xac52f6,_0x4f513d){if(_0xac52f6['body']['id']){delete _0xac52f6['body']['id'];}return db[_0x550f('0x2c')][_0x550f('0x46')]({'where':{'id':_0xac52f6[_0x550f('0x45')]['id']}})['then'](handleEntityNotFound(_0x4f513d,null))['then'](saveUpdates(_0xac52f6[_0x550f('0x48')],null))[_0x550f('0x23')](respondWithResult(_0x4f513d,null))[_0x550f('0x43')](handleError(_0x4f513d,null));};exports[_0x550f('0x24')]=function(_0x2032b3,_0x4a735c){return db[_0x550f('0x2c')][_0x550f('0x46')]({'where':{'id':_0x2032b3['params']['id']}})[_0x550f('0x23')](handleEntityNotFound(_0x4a735c,null))['then'](removeEntity(_0x4a735c,null))[_0x550f('0x43')](handleError(_0x4a735c,null));};exports['getConfigurations']=function(_0x586da6,_0x5ded5e,_0x37ceb4){var _0xdc4371={};var _0x41f52d={};var _0x317e8f;var _0x205b7f;return db[_0x550f('0x2c')][_0x550f('0x49')]({'where':{'id':_0x586da6[_0x550f('0x45')]['id']}})[_0x550f('0x23')](handleEntityNotFound(_0x5ded5e,null))[_0x550f('0x23')](function(_0x30a40c){if(_0x30a40c){_0x317e8f=_0x30a40c;_0x41f52d['model']=_[_0x550f('0x31')](db[_0x550f('0x4a')][_0x550f('0x2d')]);_0x41f52d[_0x550f('0x32')]=_[_0x550f('0x31')](_0x586da6[_0x550f('0x32')]);_0x41f52d[_0x550f('0x33')]=_[_0x550f('0x34')](_0x41f52d['model'],_0x41f52d['query']);_0xdc4371[_0x550f('0x37')]=_[_0x550f('0x34')](_0x41f52d[_0x550f('0x30')],qs[_0x550f('0x35')](_0x586da6['query']['fields']));_0xdc4371[_0x550f('0x37')]=_0xdc4371[_0x550f('0x37')]['length']?_0xdc4371[_0x550f('0x37')]:_0x41f52d[_0x550f('0x30')];_0xdc4371[_0x550f('0x4b')]=qs['sort'](_0x586da6[_0x550f('0x32')][_0x550f('0x38')]);_0xdc4371[_0x550f('0x39')]=qs[_0x550f('0x33')](_[_0x550f('0x3a')](_0x586da6[_0x550f('0x32')],_0x41f52d[_0x550f('0x33')]));if(_0x586da6[_0x550f('0x32')]['filter']){_0xdc4371['where']=_['merge'](_0xdc4371[_0x550f('0x39')],{'$or':_[_0x550f('0x2b')](_0xdc4371[_0x550f('0x37')],function(_0x12adb6){var _0x178ad8={};_0x178ad8[_0x12adb6]={'$like':'%'+_0x586da6['query'][_0x550f('0x3b')]+'%'};return _0x178ad8;})});}_0xdc4371=_['merge']({},_0xdc4371,_0x586da6[_0x550f('0x3e')]);return _0x317e8f[_0x550f('0x4c')](_0xdc4371);}})['then'](function(_0x53058d){if(_0x53058d){_0x205b7f=_0x53058d['length'];if(!_0x586da6[_0x550f('0x32')][_0x550f('0x4d')](_0x550f('0x4e'))){_0xdc4371[_0x550f('0x1c')]=qs[_0x550f('0x1c')](_0x586da6[_0x550f('0x32')]['limit']);_0xdc4371[_0x550f('0x1b')]=qs[_0x550f('0x1b')](_0x586da6[_0x550f('0x32')][_0x550f('0x1b')]);}return _0x317e8f[_0x550f('0x4c')](_0xdc4371);}})[_0x550f('0x23')](function(_0x4c373e){if(_0x4c373e){return _0x4c373e?{'count':_0x205b7f,'rows':_0x4c373e}:null;}})['then'](respondWithResult(_0x5ded5e,null))[_0x550f('0x43')](handleError(_0x5ded5e,null));};exports[_0x550f('0x4f')]=function(_0x5dfee8,_0x2a6843,_0x416e0e){if(_0x5dfee8[_0x550f('0x48')]['id']){delete _0x5dfee8['body']['id'];}return db[_0x550f('0x2c')][_0x550f('0x49')]({'where':{'id':_0x5dfee8[_0x550f('0x45')]['id']}})[_0x550f('0x23')](handleEntityNotFound(_0x2a6843,null))[_0x550f('0x23')](function(_0x232545){if(_0x232545){_0x5dfee8['body']['AccountId']=_0x232545['id'];_0x5dfee8[_0x550f('0x48')][_0x550f('0x50')]=integrations['getSubjects'](_0x5dfee8['body'][_0x550f('0x51')],_0x5dfee8[_0x550f('0x48')][_0x550f('0x2f')]);_0x5dfee8['body'][_0x550f('0x52')]=integrations[_0x550f('0x53')](_0x5dfee8[_0x550f('0x48')][_0x550f('0x51')],_0x5dfee8['body']['type']);return db[_0x550f('0x4a')]['create'](_0x5dfee8['body'],{'include':[{'model':db[_0x550f('0x54')],'as':_0x550f('0x50')},{'model':db[_0x550f('0x54')],'as':_0x550f('0x52')}]});}return null;})[_0x550f('0x23')](respondWithResult(_0x2a6843,null))['catch'](handleError(_0x2a6843,null));};exports['getFields']=function(_0x1637c5,_0x29d5d9,_0x516a0b){var _0x19364d='';var _0x5e3f56='';return db[_0x550f('0x2c')][_0x550f('0x49')]({'where':{'id':_0x1637c5[_0x550f('0x45')]['id']},'attributes':['id','username',_0x550f('0x55'),_0x550f('0x56')]})[_0x550f('0x23')](handleEntityNotFound(_0x29d5d9,null))[_0x550f('0x23')](function(_0x204f6b){if(_0x204f6b){_0x5e3f56=_0x204f6b['username'];_0x19364d=_0x204f6b[_0x550f('0x55')];var _0x54cc71=_0x204f6b['remoteUri'][_0x550f('0x57')](-0x1);if(_0x54cc71==='/'){_0x19364d=_0x19364d[_0x550f('0x58')](0x0,_0x19364d[_0x550f('0x59')](_0x54cc71));}return rp({'method':_0x550f('0x5a'),'uri':util[_0x550f('0x5b')](_0x550f('0x5c'),_0x19364d,_0x550f('0x5d')),'headers':{'Authorization':_0x550f('0x5e')+_0x204f6b['apiKey']},'json':!![]});}})[_0x550f('0x23')](function(_0x21b0fe){if(_0x21b0fe){var _0x589117=_0x21b0fe['users'];var _0x509a9c=![];var _0x11fd74=null;for(_0x11fd74=0x0;_0x11fd74<_0x589117[_0x550f('0x36')];_0x11fd74++){if(_0x589117[_0x11fd74][_0x550f('0x5f')]===_0x5e3f56){_0x509a9c=!![];}}if(_0x509a9c){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x29d5d9,null))[_0x550f('0x43')](function(_0x57eb31){var _0x2cee83=_0x1637c5[_0x550f('0x32')][_0x550f('0x60')]?0x1f4:_0x57eb31[_0x550f('0x61')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x550f('0x62'),_0x2cee83,JSON['stringify'](_0x57eb31));delete _0x57eb31[_0x550f('0x28')];if(_0x2cee83===0x191){_0x2cee83=0x190;}_0x29d5d9['status'](_0x2cee83)[_0x550f('0x29')](_0x1637c5['query'][_0x550f('0x60')]?{'message':_0x550f('0x63'),'statusCode':_0x57eb31['statusCode']}:_0x57eb31);});};
\ No newline at end of file
+var _0x0b42=['FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','rows','catch','params','merge','find','create','body','getConfigurations','pick','addConfiguration','Subjects','getSubjects','channel','FreshsalesConfiguration','FreshsalesField','Descriptions','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','%s%s','/api/selector/owners','Token\x20token=','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','save','then','destroy','end','error','name','index','map'];(function(_0x316180,_0x597111){var _0x52698a=function(_0x79d79e){while(--_0x79d79e){_0x316180['push'](_0x316180['shift']());}};_0x52698a(++_0x597111);}(_0x0b42,0x1b8));var _0x20b4=function(_0xd91266,_0x5f4992){_0xd91266=_0xd91266-0x0;var _0x3fb5e8=_0x0b42[_0xd91266];return _0x3fb5e8;};'use strict';var emlformat=require(_0x20b4('0x0'));var rimraf=require(_0x20b4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x20b4('0x2'));var moment=require(_0x20b4('0x3'));var BPromise=require(_0x20b4('0x4'));var Mustache=require(_0x20b4('0x5'));var util=require('util');var path=require(_0x20b4('0x6'));var sox=require(_0x20b4('0x7'));var csv=require('to-csv');var ejs=require(_0x20b4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x20b4('0x9'));var squel=require(_0x20b4('0xa'));var crypto=require('crypto');var jsforce=require(_0x20b4('0xb'));var deskjs=require(_0x20b4('0xc'));var toCsv=require(_0x20b4('0xd'));var querystring=require(_0x20b4('0xe'));var Papa=require('papaparse');var Redis=require(_0x20b4('0xf'));var authService=require(_0x20b4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x20b4('0x11'));var hardwareService=require(_0x20b4('0x12'));var logger=require('../../config/logger')(_0x20b4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x20b4('0x14'));var db=require(_0x20b4('0x15'))['db'];var integrations=require(_0x20b4('0x16'));function respondWithStatusCode(_0x47c1f9,_0x59edaf){_0x59edaf=_0x59edaf||0xcc;return function(_0x15fd69){if(_0x15fd69){return _0x47c1f9[_0x20b4('0x17')](_0x59edaf);}return _0x47c1f9['status'](_0x59edaf)['end']();};}function respondWithResult(_0x4a09cb,_0x4565d1){_0x4565d1=_0x4565d1||0xc8;return function(_0x171fc2){if(_0x171fc2){return _0x4a09cb[_0x20b4('0x18')](_0x4565d1)[_0x20b4('0x19')](_0x171fc2);}};}function respondWithFilteredResult(_0x94fcb3,_0x52c203){return function(_0x6844ea){if(_0x6844ea){var _0x4c9630=typeof _0x52c203['offset']===_0x20b4('0x1a')&&typeof _0x52c203[_0x20b4('0x1b')]==='undefined';var _0x2d9425=_0x6844ea['count'];var _0x5e6d12=_0x4c9630?0x0:_0x52c203[_0x20b4('0x1c')];var _0x28173b=_0x4c9630?_0x6844ea[_0x20b4('0x1d')]:_0x52c203[_0x20b4('0x1c')]+_0x52c203[_0x20b4('0x1b')];var _0xc576ca;if(_0x28173b>=_0x2d9425){_0x28173b=_0x2d9425;_0xc576ca=0xc8;}else{_0xc576ca=0xce;}_0x94fcb3[_0x20b4('0x18')](_0xc576ca);return _0x94fcb3[_0x20b4('0x1e')](_0x20b4('0x1f'),_0x5e6d12+'-'+_0x28173b+'/'+_0x2d9425)[_0x20b4('0x19')](_0x6844ea);}return null;};}function patchUpdates(_0x2945ee){return function(_0x115d35){try{jsonpatch['apply'](_0x115d35,_0x2945ee,!![]);}catch(_0xc95571){return BPromise['reject'](_0xc95571);}return _0x115d35[_0x20b4('0x20')]();};}function saveUpdates(_0x13573d,_0x4c4959){return function(_0x3249a0){if(_0x3249a0){return _0x3249a0['update'](_0x13573d)[_0x20b4('0x21')](function(_0x59673b){return _0x59673b;});}return null;};}function removeEntity(_0x564efe,_0xa30a26){return function(_0x765489){if(_0x765489){return _0x765489[_0x20b4('0x22')]()[_0x20b4('0x21')](function(){_0x564efe[_0x20b4('0x18')](0xcc)[_0x20b4('0x23')]();});}};}function handleEntityNotFound(_0x4ce05b,_0x5e8e33){return function(_0x2bb614){if(!_0x2bb614){_0x4ce05b[_0x20b4('0x17')](0x194);}return _0x2bb614;};}function handleError(_0x1993c6,_0x52e2ef){_0x52e2ef=_0x52e2ef||0x1f4;return function(_0xe46a58){logger[_0x20b4('0x24')](_0xe46a58['stack']);if(_0xe46a58[_0x20b4('0x25')]){delete _0xe46a58[_0x20b4('0x25')];}_0x1993c6[_0x20b4('0x18')](_0x52e2ef)['send'](_0xe46a58);};}exports[_0x20b4('0x26')]=function(_0x59f10c,_0x1fc494){var _0x11f0d8={},_0x5a851a={},_0x29b1fb={'count':0x0,'rows':[]};var _0x3c1829=_[_0x20b4('0x27')](db[_0x20b4('0x28')][_0x20b4('0x29')],function(_0x1d6e62){return{'name':_0x1d6e62[_0x20b4('0x2a')],'type':_0x1d6e62[_0x20b4('0x2b')][_0x20b4('0x2c')]};});_0x5a851a[_0x20b4('0x2d')]=_[_0x20b4('0x27')](_0x3c1829,_0x20b4('0x25'));_0x5a851a['query']=_[_0x20b4('0x2e')](_0x59f10c['query']);_0x5a851a[_0x20b4('0x2f')]=_[_0x20b4('0x30')](_0x5a851a[_0x20b4('0x2d')],_0x5a851a[_0x20b4('0x31')]);_0x11f0d8['attributes']=_[_0x20b4('0x30')](_0x5a851a[_0x20b4('0x2d')],qs[_0x20b4('0x32')](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x32')]));_0x11f0d8['attributes']=_0x11f0d8[_0x20b4('0x33')][_0x20b4('0x34')]?_0x11f0d8[_0x20b4('0x33')]:_0x5a851a['model'];if(!_0x59f10c[_0x20b4('0x31')][_0x20b4('0x35')](_0x20b4('0x36'))){_0x11f0d8['limit']=qs['limit'](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x1b')]);_0x11f0d8[_0x20b4('0x1c')]=qs['offset'](_0x59f10c[_0x20b4('0x31')][_0x20b4('0x1c')]);}_0x11f0d8[_0x20b4('0x37')]=qs['sort'](_0x59f10c['query'][_0x20b4('0x38')]);_0x11f0d8[_0x20b4('0x39')]=qs['filters'](_['pick'](_0x59f10c['query'],_0x5a851a[_0x20b4('0x2f')]),_0x3c1829);if(_0x59f10c[_0x20b4('0x31')][_0x20b4('0x3a')]){_0x11f0d8[_0x20b4('0x39')]=_['merge'](_0x11f0d8[_0x20b4('0x39')],{'$or':_['map'](_0x3c1829,function(_0x53d9fe){if(_0x53d9fe[_0x20b4('0x2b')]!==_0x20b4('0x3b')){var _0x4141b1={};_0x4141b1[_0x53d9fe[_0x20b4('0x25')]]={'$like':'%'+_0x59f10c[_0x20b4('0x31')][_0x20b4('0x3a')]+'%'};return _0x4141b1;}})});}_0x11f0d8=_['merge']({},_0x11f0d8,_0x59f10c[_0x20b4('0x3c')]);var _0x53a857={'where':_0x11f0d8['where']};return db[_0x20b4('0x28')][_0x20b4('0x1d')](_0x53a857)[_0x20b4('0x21')](function(_0x212cab){_0x29b1fb[_0x20b4('0x1d')]=_0x212cab;if(_0x59f10c['query'][_0x20b4('0x3d')]){_0x11f0d8['include']=[{'all':!![]}];}return db['FreshsalesAccount']['findAll'](_0x11f0d8);})[_0x20b4('0x21')](function(_0x149302){_0x29b1fb[_0x20b4('0x3e')]=_0x149302;return _0x29b1fb;})[_0x20b4('0x21')](respondWithFilteredResult(_0x1fc494,_0x11f0d8))[_0x20b4('0x3f')](handleError(_0x1fc494,null));};exports['show']=function(_0x4d42ea,_0x56c8da){var _0x28eff3={'raw':![],'where':{'id':_0x4d42ea[_0x20b4('0x40')]['id']}},_0x5589e9={};_0x5589e9[_0x20b4('0x2d')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x5589e9['query']=_[_0x20b4('0x2e')](_0x4d42ea['query']);_0x5589e9['filters']=_[_0x20b4('0x30')](_0x5589e9[_0x20b4('0x2d')],_0x5589e9[_0x20b4('0x31')]);_0x28eff3[_0x20b4('0x33')]=_[_0x20b4('0x30')](_0x5589e9[_0x20b4('0x2d')],qs[_0x20b4('0x32')](_0x4d42ea[_0x20b4('0x31')][_0x20b4('0x32')]));_0x28eff3[_0x20b4('0x33')]=_0x28eff3[_0x20b4('0x33')][_0x20b4('0x34')]?_0x28eff3[_0x20b4('0x33')]:_0x5589e9[_0x20b4('0x2d')];if(_0x4d42ea[_0x20b4('0x31')][_0x20b4('0x3d')]){_0x28eff3['include']=[{'all':!![]}];}_0x28eff3=_[_0x20b4('0x41')]({},_0x28eff3,_0x4d42ea[_0x20b4('0x3c')]);return db[_0x20b4('0x28')][_0x20b4('0x42')](_0x28eff3)['then'](handleEntityNotFound(_0x56c8da,null))['then'](respondWithResult(_0x56c8da,null))[_0x20b4('0x3f')](handleError(_0x56c8da,null));};exports[_0x20b4('0x43')]=function(_0x55d1f4,_0x1fc986){return db[_0x20b4('0x28')]['create'](_0x55d1f4[_0x20b4('0x44')],{})['then'](respondWithResult(_0x1fc986,0xc9))[_0x20b4('0x3f')](handleError(_0x1fc986,null));};exports['update']=function(_0x1e0e0e,_0x8ad507){if(_0x1e0e0e[_0x20b4('0x44')]['id']){delete _0x1e0e0e['body']['id'];}return db[_0x20b4('0x28')][_0x20b4('0x42')]({'where':{'id':_0x1e0e0e[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x8ad507,null))[_0x20b4('0x21')](saveUpdates(_0x1e0e0e[_0x20b4('0x44')],null))[_0x20b4('0x21')](respondWithResult(_0x8ad507,null))['catch'](handleError(_0x8ad507,null));};exports[_0x20b4('0x22')]=function(_0x2ca6be,_0x312eaf){return db['FreshsalesAccount'][_0x20b4('0x42')]({'where':{'id':_0x2ca6be[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x312eaf,null))[_0x20b4('0x21')](removeEntity(_0x312eaf,null))['catch'](handleError(_0x312eaf,null));};exports[_0x20b4('0x45')]=function(_0x40ba85,_0x2b02ac,_0x4ca725){var _0x40cafe={};var _0x192218={};var _0x5eebd5;var _0x46f0cf;return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x40ba85[_0x20b4('0x40')]['id']}})[_0x20b4('0x21')](handleEntityNotFound(_0x2b02ac,null))[_0x20b4('0x21')](function(_0x1303a3){if(_0x1303a3){_0x5eebd5=_0x1303a3;_0x192218[_0x20b4('0x2d')]=_[_0x20b4('0x2e')](db['FreshsalesConfiguration'][_0x20b4('0x29')]);_0x192218[_0x20b4('0x31')]=_[_0x20b4('0x2e')](_0x40ba85['query']);_0x192218[_0x20b4('0x2f')]=_[_0x20b4('0x30')](_0x192218['model'],_0x192218[_0x20b4('0x31')]);_0x40cafe[_0x20b4('0x33')]=_['intersection'](_0x192218[_0x20b4('0x2d')],qs['fields'](_0x40ba85['query'][_0x20b4('0x32')]));_0x40cafe[_0x20b4('0x33')]=_0x40cafe['attributes'][_0x20b4('0x34')]?_0x40cafe[_0x20b4('0x33')]:_0x192218[_0x20b4('0x2d')];_0x40cafe[_0x20b4('0x37')]=qs[_0x20b4('0x38')](_0x40ba85[_0x20b4('0x31')]['sort']);_0x40cafe[_0x20b4('0x39')]=qs[_0x20b4('0x2f')](_[_0x20b4('0x46')](_0x40ba85['query'],_0x192218['filters']));if(_0x40ba85[_0x20b4('0x31')][_0x20b4('0x3a')]){_0x40cafe[_0x20b4('0x39')]=_['merge'](_0x40cafe[_0x20b4('0x39')],{'$or':_[_0x20b4('0x27')](_0x40cafe['attributes'],function(_0x44462c){var _0x39b8af={};_0x39b8af[_0x44462c]={'$like':'%'+_0x40ba85[_0x20b4('0x31')][_0x20b4('0x3a')]+'%'};return _0x39b8af;})});}_0x40cafe=_[_0x20b4('0x41')]({},_0x40cafe,_0x40ba85[_0x20b4('0x3c')]);return _0x5eebd5[_0x20b4('0x45')](_0x40cafe);}})['then'](function(_0x1ca283){if(_0x1ca283){_0x46f0cf=_0x1ca283['length'];if(!_0x40ba85[_0x20b4('0x31')][_0x20b4('0x35')](_0x20b4('0x36'))){_0x40cafe[_0x20b4('0x1b')]=qs[_0x20b4('0x1b')](_0x40ba85[_0x20b4('0x31')][_0x20b4('0x1b')]);_0x40cafe[_0x20b4('0x1c')]=qs[_0x20b4('0x1c')](_0x40ba85[_0x20b4('0x31')][_0x20b4('0x1c')]);}return _0x5eebd5[_0x20b4('0x45')](_0x40cafe);}})[_0x20b4('0x21')](function(_0x1eb21a){if(_0x1eb21a){return _0x1eb21a?{'count':_0x46f0cf,'rows':_0x1eb21a}:null;}})[_0x20b4('0x21')](respondWithResult(_0x2b02ac,null))['catch'](handleError(_0x2b02ac,null));};exports[_0x20b4('0x47')]=function(_0x293526,_0x3b2b28,_0x14938a){if(_0x293526[_0x20b4('0x44')]['id']){delete _0x293526['body']['id'];}return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x293526[_0x20b4('0x40')]['id']}})['then'](handleEntityNotFound(_0x3b2b28,null))[_0x20b4('0x21')](function(_0x3bae9c){if(_0x3bae9c){_0x293526[_0x20b4('0x44')]['AccountId']=_0x3bae9c['id'];_0x293526[_0x20b4('0x44')][_0x20b4('0x48')]=integrations[_0x20b4('0x49')](_0x293526[_0x20b4('0x44')][_0x20b4('0x4a')],_0x293526[_0x20b4('0x44')][_0x20b4('0x2b')]);_0x293526['body']['Descriptions']=integrations['getDescriptions'](_0x293526[_0x20b4('0x44')][_0x20b4('0x4a')],_0x293526[_0x20b4('0x44')][_0x20b4('0x2b')]);return db[_0x20b4('0x4b')][_0x20b4('0x43')](_0x293526[_0x20b4('0x44')],{'include':[{'model':db['FreshsalesField'],'as':'Subjects'},{'model':db[_0x20b4('0x4c')],'as':_0x20b4('0x4d')}]});}return null;})['then'](respondWithResult(_0x3b2b28,null))[_0x20b4('0x3f')](handleError(_0x3b2b28,null));};exports[_0x20b4('0x4e')]=function(_0x4a4dad,_0x473ef7,_0x307edb){var _0x49ee1a='';var _0x5113d8='';return db[_0x20b4('0x28')]['findOne']({'where':{'id':_0x4a4dad[_0x20b4('0x40')]['id']},'attributes':['id',_0x20b4('0x4f'),_0x20b4('0x50'),_0x20b4('0x51')]})[_0x20b4('0x21')](handleEntityNotFound(_0x473ef7,null))[_0x20b4('0x21')](function(_0xaffd4a){if(_0xaffd4a){_0x5113d8=_0xaffd4a[_0x20b4('0x4f')];_0x49ee1a=_0xaffd4a[_0x20b4('0x50')];var _0x339284=_0xaffd4a['remoteUri'][_0x20b4('0x52')](-0x1);if(_0x339284==='/'){_0x49ee1a=_0x49ee1a[_0x20b4('0x53')](0x0,_0x49ee1a[_0x20b4('0x54')](_0x339284));}return rp({'method':_0x20b4('0x55'),'uri':util['format'](_0x20b4('0x56'),_0x49ee1a,_0x20b4('0x57')),'headers':{'Authorization':_0x20b4('0x58')+_0xaffd4a[_0x20b4('0x51')]},'json':!![]});}})['then'](function(_0x1e936f){if(_0x1e936f){var _0x25ee4a=_0x1e936f['users'];var _0x48f6e9=![];var _0x5ae0ff=null;for(_0x5ae0ff=0x0;_0x5ae0ff<_0x25ee4a[_0x20b4('0x34')];_0x5ae0ff++){if(_0x25ee4a[_0x5ae0ff][_0x20b4('0x59')]===_0x5113d8){_0x48f6e9=!![];}}if(_0x48f6e9){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x20b4('0x5a')});}}})[_0x20b4('0x21')](respondWithResult(_0x473ef7,null))['catch'](function(_0x1dbe9e){var _0x455795=_0x4a4dad[_0x20b4('0x31')]['test']?0x1f4:_0x1dbe9e[_0x20b4('0x5b')]||0x1f4;logger[_0x20b4('0x24')](_0x20b4('0x5c'),_0x20b4('0x4e'),_0x455795,JSON['stringify'](_0x1dbe9e));delete _0x1dbe9e[_0x20b4('0x25')];if(_0x455795===0x191){_0x455795=0x190;}_0x473ef7['status'](_0x455795)[_0x20b4('0x5d')](_0x4a4dad[_0x20b4('0x31')][_0x20b4('0x5e')]?{'message':_0x20b4('0x5f'),'statusCode':_0x1dbe9e[_0x20b4('0x5b')]}:_0x1dbe9e);});};
\ No newline at end of file
index 0795186..3e141fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['define','util','bluebird','request-promise','path','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x81c6,0x1d5));var _0x681c=function(_0x5d7686,_0x5d11b1){_0x5d7686=_0x5d7686-0x0;var _0x408ab4=_0x81c6[_0x5d7686];return _0x408ab4;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x681c('0x1'));var rp=require(_0x681c('0x2'));var fs=require('fs');var path=require(_0x681c('0x3'));var rimraf=require('rimraf');var config=require(_0x681c('0x4'));var attributes=require(_0x681c('0x5'));var integrations=require(_0x681c('0x6'));module[_0x681c('0x7')]=function(_0x4ea522,_0x45331){return _0x4ea522[_0x681c('0x8')]('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcf0=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xfcf0,0x138));var _0x0fcf=function(_0x17406e,_0x1049fd){_0x17406e=_0x17406e-0x0;var _0x2bfc5a=_0xfcf0[_0x17406e];return _0x2bfc5a;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var logger=require('../../config/logger')(_0x0fcf('0x2'));var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var rp=require(_0x0fcf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fcf('0x6'));var config=require(_0x0fcf('0x7'));var attributes=require(_0x0fcf('0x8'));var integrations=require(_0x0fcf('0x9'));module[_0x0fcf('0xa')]=function(_0x1a7b03,_0x61bbb9){return _0x1a7b03[_0x0fcf('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x0fcf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9e607c..1e4f940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','limit','include','map','model','attributes','find','ShowFreshsalesAccount','lodash','bluebird','randomstring','ioredis'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x1623,0xab));var _0x3162=function(_0x29ea9e,_0x3681bd){_0x29ea9e=_0x29ea9e-0x0;var _0x2871bc=_0x1623[_0x29ea9e];return _0x2871bc;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3162('0x1'));var rs=require(_0x3162('0x2'));var fs=require('fs');var Redis=require(_0x3162('0x3'));var db=require(_0x3162('0x4'))['db'];var utils=require(_0x3162('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3162('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3162('0x7')][_0x3162('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53260d,_0xffe9b6,_0x2dc07e){return new BPromise(function(_0x26ee32,_0x36609e){return client[_0x3162('0x9')](_0x53260d,_0x2dc07e)[_0x3162('0xa')](function(_0xe43099){logger[_0x3162('0xb')]('FreshsalesAccount,\x20%s,\x20%s',_0xffe9b6,'request\x20sent');logger[_0x3162('0xc')](_0x3162('0xd'),_0xffe9b6,_0x3162('0xe'),JSON[_0x3162('0xf')](_0xe43099));if(_0xe43099[_0x3162('0x10')]){if(_0xe43099[_0x3162('0x10')][_0x3162('0x11')]===0x1f4){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x36609e(_0xe43099['error'][_0x3162('0x13')]);}logger[_0x3162('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x26ee32(_0xe43099[_0x3162('0x10')][_0x3162('0x13')]);}else{logger['info'](_0x3162('0x12'),_0xffe9b6,_0x3162('0xe'));_0x26ee32(_0xe43099[_0x3162('0x14')]['message']);}})[_0x3162('0x15')](function(_0x42cf7d){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0x42cf7d);_0x36609e(_0x42cf7d);});});}exports[_0x3162('0x16')]=function(_0x1eed46){var _0x391d97=this;return new Promise(function(_0x4b2bf3,_0x42f283){return db[_0x3162('0x17')][_0x3162('0x18')]({'raw':_0x1eed46[_0x3162('0x19')]?_0x1eed46['options'][_0x3162('0x1a')]===undefined?!![]:![]:!![],'where':_0x1eed46['options']?_0x1eed46['options'][_0x3162('0x1b')]||null:null,'attributes':_0x1eed46[_0x3162('0x19')]?_0x1eed46[_0x3162('0x19')]['attributes']||null:null,'limit':_0x1eed46['options']?_0x1eed46[_0x3162('0x19')][_0x3162('0x1c')]||null:null,'include':_0x1eed46[_0x3162('0x19')]?_0x1eed46[_0x3162('0x19')][_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x1eed46[_0x3162('0x19')][_0x3162('0x1d')],function(_0x5a4994){return{'model':db[_0x5a4994[_0x3162('0x1f')]],'as':_0x5a4994['as'],'attributes':_0x5a4994[_0x3162('0x20')],'include':_0x5a4994[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x5a4994[_0x3162('0x1d')],function(_0x3c543e){return{'model':db[_0x3c543e[_0x3162('0x1f')]],'as':_0x3c543e['as'],'attributes':_0x3c543e[_0x3162('0x20')],'include':_0x3c543e[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x3c543e[_0x3162('0x1d')],function(_0x2f62d7){return{'model':db[_0x2f62d7[_0x3162('0x1f')]],'as':_0x2f62d7['as'],'attributes':_0x2f62d7['attributes']};}):[]};}):[]};}):[]:[]})[_0x3162('0xa')](function(_0x552469){logger[_0x3162('0xb')](_0x3162('0x16'),_0x1eed46);logger[_0x3162('0xc')]('GetFreshsalesAccount',_0x1eed46,JSON['stringify'](_0x552469));_0x4b2bf3(_0x552469);})[_0x3162('0x15')](function(_0xaa1f35){logger[_0x3162('0x10')](_0x3162('0x16'),_0xaa1f35[_0x3162('0x13')],_0x1eed46);_0x42f283(_0x391d97['error'](0x1f4,_0xaa1f35[_0x3162('0x13')]));});});};exports['ShowFreshsalesAccount']=function(_0xf11765){var _0x3a188e=this;return new Promise(function(_0x41e933,_0x221b38){return db[_0x3162('0x17')][_0x3162('0x21')]({'raw':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['where']||null:null,'attributes':_0xf11765[_0x3162('0x19')]?_0xf11765[_0x3162('0x19')]['attributes']||null:null,'include':_0xf11765['options']?_0xf11765[_0x3162('0x19')]['include']?_[_0x3162('0x1e')](_0xf11765[_0x3162('0x19')][_0x3162('0x1d')],function(_0x551442){return{'model':db[_0x551442['model']],'as':_0x551442['as'],'attributes':_0x551442[_0x3162('0x20')],'include':_0x551442[_0x3162('0x1d')]?_['map'](_0x551442[_0x3162('0x1d')],function(_0x4d4f74){return{'model':db[_0x4d4f74[_0x3162('0x1f')]],'as':_0x4d4f74['as'],'attributes':_0x4d4f74[_0x3162('0x20')],'include':_0x4d4f74[_0x3162('0x1d')]?_[_0x3162('0x1e')](_0x4d4f74[_0x3162('0x1d')],function(_0x3b6c91){return{'model':db[_0x3b6c91[_0x3162('0x1f')]],'as':_0x3b6c91['as'],'attributes':_0x3b6c91[_0x3162('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3162('0xa')](function(_0x16c5d6){logger[_0x3162('0xb')]('ShowFreshsalesAccount',_0xf11765);logger[_0x3162('0xc')](_0x3162('0x22'),_0xf11765,JSON[_0x3162('0xf')](_0x16c5d6));_0x41e933(_0x16c5d6);})['catch'](function(_0x59759d){logger[_0x3162('0x10')](_0x3162('0x22'),_0x59759d[_0x3162('0x13')],_0xf11765);_0x221b38(_0x3a188e[_0x3162('0x10')](0x1f4,_0x59759d['message']));});});};
\ No newline at end of file
+var _0x4325=['stringify','code','error','message','info','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','ShowFreshsalesAccount','find','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x38249d,_0x59cf80){var _0x48ea04=function(_0x68581b){while(--_0x68581b){_0x38249d['push'](_0x38249d['shift']());}};_0x48ea04(++_0x59cf80);}(_0x4325,0x1da));var _0x5432=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4325[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var moment=require('moment');var BPromise=require(_0x5432('0x2'));var rs=require(_0x5432('0x3'));var fs=require('fs');var Redis=require(_0x5432('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5432('0x5'))(_0x5432('0x6'));var config=require(_0x5432('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5432('0x8')][_0x5432('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a6e76,_0x106ec9,_0x50394d){return new BPromise(function(_0xc8252e,_0x1c9762){return client[_0x5432('0xa')](_0x4a6e76,_0x50394d)[_0x5432('0xb')](function(_0x263a0c){logger['info'](_0x5432('0xc'),_0x106ec9,'request\x20sent');logger[_0x5432('0xd')](_0x5432('0xe'),_0x106ec9,_0x5432('0xf'),JSON[_0x5432('0x10')](_0x263a0c));if(_0x263a0c['error']){if(_0x263a0c['error'][_0x5432('0x11')]===0x1f4){logger[_0x5432('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0x106ec9,_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);return _0x1c9762(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x263a0c['error']['message']);return _0xc8252e(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}else{logger[_0x5432('0x14')](_0x5432('0xc'),_0x106ec9,_0x5432('0xf'));_0xc8252e(_0x263a0c[_0x5432('0x15')]['message']);}})[_0x5432('0x16')](function(_0x49e8fd){logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x49e8fd);_0x1c9762(_0x49e8fd);});});}exports[_0x5432('0x17')]=function(_0x32fe60){var _0x4221a8=this;return new Promise(function(_0x5f011f,_0x3f3873){return db[_0x5432('0x18')][_0x5432('0x19')]({'raw':_0x32fe60[_0x5432('0x1a')]?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1b')]===undefined?!![]:![]:!![],'where':_0x32fe60[_0x5432('0x1a')]?_0x32fe60['options'][_0x5432('0x1c')]||null:null,'attributes':_0x32fe60[_0x5432('0x1a')]?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1d')]||null:null,'limit':_0x32fe60[_0x5432('0x1a')]?_0x32fe60['options']['limit']||null:null,'include':_0x32fe60['options']?_0x32fe60[_0x5432('0x1a')][_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x32fe60[_0x5432('0x1a')]['include'],function(_0x4af5f4){return{'model':db[_0x4af5f4[_0x5432('0x20')]],'as':_0x4af5f4['as'],'attributes':_0x4af5f4[_0x5432('0x1d')],'include':_0x4af5f4['include']?_[_0x5432('0x1f')](_0x4af5f4[_0x5432('0x1e')],function(_0x637582){return{'model':db[_0x637582['model']],'as':_0x637582['as'],'attributes':_0x637582[_0x5432('0x1d')],'include':_0x637582[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x637582['include'],function(_0x4ab09d){return{'model':db[_0x4ab09d[_0x5432('0x20')]],'as':_0x4ab09d['as'],'attributes':_0x4ab09d[_0x5432('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1abe73){logger[_0x5432('0x14')](_0x5432('0x17'),_0x32fe60);logger['debug'](_0x5432('0x17'),_0x32fe60,JSON['stringify'](_0x1abe73));_0x5f011f(_0x1abe73);})['catch'](function(_0x6fc7f5){logger['error'](_0x5432('0x17'),_0x6fc7f5['message'],_0x32fe60);_0x3f3873(_0x4221a8['error'](0x1f4,_0x6fc7f5[_0x5432('0x13')]));});});};exports[_0x5432('0x21')]=function(_0x345b51){var _0x4e92d5=this;return new Promise(function(_0x31490c,_0x1d436c){return db[_0x5432('0x18')][_0x5432('0x22')]({'raw':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')][_0x5432('0x1b')]===undefined?!![]:![]:!![],'where':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')]['where']||null:null,'attributes':_0x345b51['options']?_0x345b51[_0x5432('0x1a')][_0x5432('0x1d')]||null:null,'include':_0x345b51[_0x5432('0x1a')]?_0x345b51[_0x5432('0x1a')][_0x5432('0x1e')]?_['map'](_0x345b51[_0x5432('0x1a')]['include'],function(_0x2955e0){return{'model':db[_0x2955e0[_0x5432('0x20')]],'as':_0x2955e0['as'],'attributes':_0x2955e0[_0x5432('0x1d')],'include':_0x2955e0[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x2955e0[_0x5432('0x1e')],function(_0x5c3c77){return{'model':db[_0x5c3c77[_0x5432('0x20')]],'as':_0x5c3c77['as'],'attributes':_0x5c3c77[_0x5432('0x1d')],'include':_0x5c3c77[_0x5432('0x1e')]?_[_0x5432('0x1f')](_0x5c3c77['include'],function(_0xe01f4b){return{'model':db[_0xe01f4b[_0x5432('0x20')]],'as':_0xe01f4b['as'],'attributes':_0xe01f4b[_0x5432('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5432('0xb')](function(_0x3fb586){logger[_0x5432('0x14')](_0x5432('0x21'),_0x345b51);logger[_0x5432('0xd')](_0x5432('0x21'),_0x345b51,JSON[_0x5432('0x10')](_0x3fb586));_0x31490c(_0x3fb586);})[_0x5432('0x16')](function(_0x1f4679){logger[_0x5432('0x12')](_0x5432('0x21'),_0x1f4679['message'],_0x345b51);_0x1d436c(_0x4e92d5[_0x5432('0x12')](0x1f4,_0x1f4679['message']));});});};
\ No newline at end of file
index b1488d0..8881c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba28=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id','show','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4cd161,_0x245883){var _0x201a41=function(_0x12b34a){while(--_0x12b34a){_0x4cd161['push'](_0x4cd161['shift']());}};_0x201a41(++_0x245883);}(_0xba28,0x17b));var _0x8ba2=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xba28[_0x819464];return _0x49dcc0;};'use strict';var multer=require(_0x8ba2('0x0'));var util=require(_0x8ba2('0x1'));var path=require(_0x8ba2('0x2'));var timeout=require(_0x8ba2('0x3'));var express=require(_0x8ba2('0x4'));var router=express[_0x8ba2('0x5')]();var fs_extra=require(_0x8ba2('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x8ba2('0x7'));var config=require(_0x8ba2('0x8'));var controller=require(_0x8ba2('0x9'));router[_0x8ba2('0xa')]('/',auth[_0x8ba2('0xb')](),controller[_0x8ba2('0xc')]);router['get'](_0x8ba2('0xd'),auth[_0x8ba2('0xb')](),controller[_0x8ba2('0xe')]);router[_0x8ba2('0xa')]('/:id/subjects',auth[_0x8ba2('0xb')](),controller[_0x8ba2('0xf')]);router[_0x8ba2('0xa')](_0x8ba2('0x10'),auth[_0x8ba2('0xb')](),controller[_0x8ba2('0x11')]);router[_0x8ba2('0xa')](_0x8ba2('0x12'),auth['isAuthenticated'](),controller[_0x8ba2('0x13')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x8ba2('0x14')]('/:id',auth[_0x8ba2('0xb')](),controller['update']);router[_0x8ba2('0x15')](_0x8ba2('0xd'),auth[_0x8ba2('0xb')](),controller[_0x8ba2('0x16')]);module[_0x8ba2('0x17')]=router;
\ No newline at end of file
+var _0xbde3=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create'];(function(_0x575a31,_0x56336f){var _0x5d7dad=function(_0x2c8c09){while(--_0x2c8c09){_0x575a31['push'](_0x575a31['shift']());}};_0x5d7dad(++_0x56336f);}(_0xbde3,0x17b));var _0x3bde=function(_0xe429f8,_0xb5ddb4){_0xe429f8=_0xe429f8-0x0;var _0x439723=_0xbde3[_0xe429f8];return _0x439723;};'use strict';var multer=require(_0x3bde('0x0'));var util=require(_0x3bde('0x1'));var path=require(_0x3bde('0x2'));var timeout=require(_0x3bde('0x3'));var express=require(_0x3bde('0x4'));var router=express[_0x3bde('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3bde('0x6'));var config=require(_0x3bde('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x3bde('0x8')]('/',auth[_0x3bde('0x9')](),controller[_0x3bde('0xa')]);router[_0x3bde('0x8')](_0x3bde('0xb'),auth[_0x3bde('0x9')](),controller[_0x3bde('0xc')]);router[_0x3bde('0x8')](_0x3bde('0xd'),auth[_0x3bde('0x9')](),controller[_0x3bde('0xe')]);router[_0x3bde('0x8')](_0x3bde('0xf'),auth[_0x3bde('0x9')](),controller[_0x3bde('0x10')]);router[_0x3bde('0x8')](_0x3bde('0x11'),auth[_0x3bde('0x9')](),controller[_0x3bde('0x12')]);router[_0x3bde('0x13')]('/',auth[_0x3bde('0x9')](),controller[_0x3bde('0x14')]);router[_0x3bde('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x3bde('0x16')]);router['delete']('/:id',auth[_0x3bde('0x9')](),controller[_0x3bde('0x17')]);module[_0x3bde('0x18')]=router;
\ No newline at end of file
index 27ea163..188e302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa1=['STRING','sequelize','exports'];(function(_0x23c698,_0xd1b961){var _0x2df0fc=function(_0x26a823){while(--_0x26a823){_0x23c698['push'](_0x23c698['shift']());}};_0x2df0fc(++_0xd1b961);}(_0xcaa1,0x91));var _0x1caa=function(_0x1824fb,_0x3b0bc7){_0x1824fb=_0x1824fb-0x0;var _0x2f7397=_0xcaa1[_0x1824fb];return _0x2f7397;};'use strict';var Sequelize=require(_0x1caa('0x0'));module[_0x1caa('0x1')]={'name':{'type':Sequelize[_0x1caa('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe223=['STRING','sequelize'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xe223,0x1c7));var _0x3e22=function(_0x105c57,_0x1cccca){_0x105c57=_0x105c57-0x0;var _0xb71be5=_0xe223[_0x105c57];return _0xb71be5;};'use strict';var Sequelize=require(_0x3e22('0x0'));module['exports']={'name':{'type':Sequelize[_0x3e22('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6bd6d8c..d78ea10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb344=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','length','find','create','body','getSubjects','FreshsalesField','findOne','getDescriptions','getFields','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','model','keys'];(function(_0x292a0b,_0x3b2a29){var _0x2f3ccc=function(_0x337cff){while(--_0x337cff){_0x292a0b['push'](_0x292a0b['shift']());}};_0x2f3ccc(++_0x3b2a29);}(_0xb344,0x150));var _0x4b34=function(_0x574de6,_0x558a28){_0x574de6=_0x574de6-0x0;var _0x4008d9=_0xb344[_0x574de6];return _0x4008d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4b34('0x0'));var jsonpatch=require(_0x4b34('0x1'));var rp=require(_0x4b34('0x2'));var moment=require(_0x4b34('0x3'));var BPromise=require(_0x4b34('0x4'));var Mustache=require(_0x4b34('0x5'));var util=require(_0x4b34('0x6'));var path=require('path');var sox=require(_0x4b34('0x7'));var csv=require(_0x4b34('0x8'));var ejs=require(_0x4b34('0x9'));var fs=require('fs');var fs_extra=require(_0x4b34('0xa'));var _=require('lodash');var squel=require(_0x4b34('0xb'));var crypto=require('crypto');var jsforce=require(_0x4b34('0xc'));var deskjs=require(_0x4b34('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4b34('0xe'));var authService=require(_0x4b34('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4b34('0x10'));var hardwareService=require(_0x4b34('0x11'));var logger=require(_0x4b34('0x12'))(_0x4b34('0x13'));var utils=require(_0x4b34('0x14'));var config=require(_0x4b34('0x15'));var licenseUtil=require(_0x4b34('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ee467,_0x383b0a){_0x383b0a=_0x383b0a||0xcc;return function(_0xa5fbe0){if(_0xa5fbe0){return _0x4ee467[_0x4b34('0x17')](_0x383b0a);}return _0x4ee467[_0x4b34('0x18')](_0x383b0a)[_0x4b34('0x19')]();};}function respondWithResult(_0x581fb6,_0x1165cf){_0x1165cf=_0x1165cf||0xc8;return function(_0x1b9666){if(_0x1b9666){return _0x581fb6[_0x4b34('0x18')](_0x1165cf)[_0x4b34('0x1a')](_0x1b9666);}};}function respondWithFilteredResult(_0x3d2a6b,_0x92b1bd){return function(_0x2ff0e0){if(_0x2ff0e0){var _0x54f9c2=typeof _0x92b1bd[_0x4b34('0x1b')]==='undefined'&&typeof _0x92b1bd[_0x4b34('0x1c')]===_0x4b34('0x1d');var _0x573263=_0x2ff0e0[_0x4b34('0x1e')];var _0x4b8102=_0x54f9c2?0x0:_0x92b1bd['offset'];var _0x4513f0=_0x54f9c2?_0x2ff0e0[_0x4b34('0x1e')]:_0x92b1bd[_0x4b34('0x1b')]+_0x92b1bd[_0x4b34('0x1c')];var _0x1067bb;if(_0x4513f0>=_0x573263){_0x4513f0=_0x573263;_0x1067bb=0xc8;}else{_0x1067bb=0xce;}_0x3d2a6b[_0x4b34('0x18')](_0x1067bb);return _0x3d2a6b[_0x4b34('0x1f')](_0x4b34('0x20'),_0x4b8102+'-'+_0x4513f0+'/'+_0x573263)[_0x4b34('0x1a')](_0x2ff0e0);}return null;};}function patchUpdates(_0x3c2480){return function(_0x263618){try{jsonpatch[_0x4b34('0x21')](_0x263618,_0x3c2480,!![]);}catch(_0xba98ba){return BPromise[_0x4b34('0x22')](_0xba98ba);}return _0x263618['save']();};}function saveUpdates(_0x1880da,_0x50e4e9){return function(_0x42360a){if(_0x42360a){return _0x42360a[_0x4b34('0x23')](_0x1880da)[_0x4b34('0x24')](function(_0x2ec2c2){return _0x2ec2c2;});}return null;};}function removeEntity(_0x33ce9c,_0x4b8c37){return function(_0x4947aa){if(_0x4947aa){return _0x4947aa[_0x4b34('0x25')]()[_0x4b34('0x24')](function(){_0x33ce9c['status'](0xcc)[_0x4b34('0x19')]();});}};}function handleEntityNotFound(_0x41dce9,_0x1798c0){return function(_0x925bf1){if(!_0x925bf1){_0x41dce9[_0x4b34('0x17')](0x194);}return _0x925bf1;};}function handleError(_0x182dde,_0x293599){_0x293599=_0x293599||0x1f4;return function(_0x269686){logger[_0x4b34('0x26')](_0x269686['stack']);if(_0x269686[_0x4b34('0x27')]){delete _0x269686['name'];}_0x182dde[_0x4b34('0x18')](_0x293599)[_0x4b34('0x28')](_0x269686);};}exports[_0x4b34('0x29')]=function(_0x1090f7,_0x248b42){var _0x2d596a={},_0x20cf8e={},_0x2de145={'count':0x0,'rows':[]};var _0x469833=_[_0x4b34('0x2a')](db[_0x4b34('0x2b')][_0x4b34('0x2c')],function(_0x5809bb){return{'name':_0x5809bb['fieldName'],'type':_0x5809bb[_0x4b34('0x2d')][_0x4b34('0x2e')]};});_0x20cf8e[_0x4b34('0x2f')]=_['map'](_0x469833,_0x4b34('0x27'));_0x20cf8e['query']=_[_0x4b34('0x30')](_0x1090f7[_0x4b34('0x31')]);_0x20cf8e[_0x4b34('0x32')]=_[_0x4b34('0x33')](_0x20cf8e[_0x4b34('0x2f')],_0x20cf8e[_0x4b34('0x31')]);_0x2d596a[_0x4b34('0x34')]=_['intersection'](_0x20cf8e[_0x4b34('0x2f')],qs['fields'](_0x1090f7['query'][_0x4b34('0x35')]));_0x2d596a['attributes']=_0x2d596a[_0x4b34('0x34')]['length']?_0x2d596a[_0x4b34('0x34')]:_0x20cf8e[_0x4b34('0x2f')];if(!_0x1090f7[_0x4b34('0x31')][_0x4b34('0x36')](_0x4b34('0x37'))){_0x2d596a[_0x4b34('0x1c')]=qs[_0x4b34('0x1c')](_0x1090f7[_0x4b34('0x31')]['limit']);_0x2d596a[_0x4b34('0x1b')]=qs['offset'](_0x1090f7[_0x4b34('0x31')]['offset']);}_0x2d596a[_0x4b34('0x38')]=qs[_0x4b34('0x39')](_0x1090f7['query'][_0x4b34('0x39')]);_0x2d596a[_0x4b34('0x3a')]=qs[_0x4b34('0x32')](_[_0x4b34('0x3b')](_0x1090f7[_0x4b34('0x31')],_0x20cf8e[_0x4b34('0x32')]),_0x469833);if(_0x1090f7[_0x4b34('0x31')][_0x4b34('0x3c')]){_0x2d596a[_0x4b34('0x3a')]=_['merge'](_0x2d596a[_0x4b34('0x3a')],{'$or':_[_0x4b34('0x2a')](_0x469833,function(_0x21bd89){if(_0x21bd89['type']!=='VIRTUAL'){var _0x43f185={};_0x43f185[_0x21bd89[_0x4b34('0x27')]]={'$like':'%'+_0x1090f7['query']['filter']+'%'};return _0x43f185;}})});}_0x2d596a=_[_0x4b34('0x3d')]({},_0x2d596a,_0x1090f7[_0x4b34('0x3e')]);var _0x59fe9e={'where':_0x2d596a['where']};return db['FreshsalesConfiguration'][_0x4b34('0x1e')](_0x59fe9e)[_0x4b34('0x24')](function(_0x3ea75b){_0x2de145['count']=_0x3ea75b;if(_0x1090f7[_0x4b34('0x31')][_0x4b34('0x3f')]){_0x2d596a['include']=[{'all':!![]}];}return db[_0x4b34('0x2b')][_0x4b34('0x40')](_0x2d596a);})[_0x4b34('0x24')](function(_0x18d2af){_0x2de145[_0x4b34('0x41')]=_0x18d2af;return _0x2de145;})[_0x4b34('0x24')](respondWithFilteredResult(_0x248b42,_0x2d596a))[_0x4b34('0x42')](handleError(_0x248b42,null));};exports['show']=function(_0x1bf639,_0x43f709){var _0x230435={'raw':![],'where':{'id':_0x1bf639[_0x4b34('0x43')]['id']}},_0x1b5c66={};_0x1b5c66['model']=_[_0x4b34('0x30')](db[_0x4b34('0x2b')][_0x4b34('0x2c')]);_0x1b5c66[_0x4b34('0x31')]=_[_0x4b34('0x30')](_0x1bf639[_0x4b34('0x31')]);_0x1b5c66['filters']=_[_0x4b34('0x33')](_0x1b5c66[_0x4b34('0x2f')],_0x1b5c66['query']);_0x230435[_0x4b34('0x34')]=_['intersection'](_0x1b5c66[_0x4b34('0x2f')],qs['fields'](_0x1bf639[_0x4b34('0x31')][_0x4b34('0x35')]));_0x230435[_0x4b34('0x34')]=_0x230435[_0x4b34('0x34')][_0x4b34('0x44')]?_0x230435['attributes']:_0x1b5c66[_0x4b34('0x2f')];if(_0x1bf639[_0x4b34('0x31')][_0x4b34('0x3f')]){_0x230435['include']=[{'all':!![]}];}_0x230435=_[_0x4b34('0x3d')]({},_0x230435,_0x1bf639[_0x4b34('0x3e')]);return db[_0x4b34('0x2b')][_0x4b34('0x45')](_0x230435)[_0x4b34('0x24')](handleEntityNotFound(_0x43f709,null))[_0x4b34('0x24')](respondWithResult(_0x43f709,null))['catch'](handleError(_0x43f709,null));};exports[_0x4b34('0x46')]=function(_0x1a949c,_0x52c481){return db[_0x4b34('0x2b')]['create'](_0x1a949c['body'],{})[_0x4b34('0x24')](respondWithResult(_0x52c481,0xc9))[_0x4b34('0x42')](handleError(_0x52c481,null));};exports[_0x4b34('0x23')]=function(_0x123dfe,_0x3ea4fb){if(_0x123dfe[_0x4b34('0x47')]['id']){delete _0x123dfe[_0x4b34('0x47')]['id'];}return db['FreshsalesConfiguration'][_0x4b34('0x45')]({'where':{'id':_0x123dfe[_0x4b34('0x43')]['id']}})[_0x4b34('0x24')](handleEntityNotFound(_0x3ea4fb,null))[_0x4b34('0x24')](saveUpdates(_0x123dfe[_0x4b34('0x47')],null))[_0x4b34('0x24')](respondWithResult(_0x3ea4fb,null))['catch'](handleError(_0x3ea4fb,null));};exports[_0x4b34('0x25')]=function(_0x2232ba,_0x1a6668){return db[_0x4b34('0x2b')]['find']({'where':{'id':_0x2232ba[_0x4b34('0x43')]['id']}})[_0x4b34('0x24')](handleEntityNotFound(_0x1a6668,null))[_0x4b34('0x24')](removeEntity(_0x1a6668,null))[_0x4b34('0x42')](handleError(_0x1a6668,null));};exports[_0x4b34('0x48')]=function(_0xa14108,_0x2351b8,_0x37dbd9){var _0x59d3be={};var _0x11d821={};var _0x6240f7;var _0x35ed4f;return db[_0x4b34('0x2b')]['findOne']({'where':{'id':_0xa14108[_0x4b34('0x43')]['id']}})['then'](handleEntityNotFound(_0x2351b8,null))[_0x4b34('0x24')](function(_0x362ad1){if(_0x362ad1){_0x6240f7=_0x362ad1;_0x11d821[_0x4b34('0x2f')]=_[_0x4b34('0x30')](db[_0x4b34('0x49')][_0x4b34('0x2c')]);_0x11d821[_0x4b34('0x31')]=_[_0x4b34('0x30')](_0xa14108[_0x4b34('0x31')]);_0x11d821['filters']=_['intersection'](_0x11d821['model'],_0x11d821[_0x4b34('0x31')]);_0x59d3be[_0x4b34('0x34')]=_[_0x4b34('0x33')](_0x11d821['model'],qs[_0x4b34('0x35')](_0xa14108[_0x4b34('0x31')]['fields']));_0x59d3be[_0x4b34('0x34')]=_0x59d3be[_0x4b34('0x34')]['length']?_0x59d3be[_0x4b34('0x34')]:_0x11d821[_0x4b34('0x2f')];_0x59d3be[_0x4b34('0x38')]=qs[_0x4b34('0x39')](_0xa14108[_0x4b34('0x31')][_0x4b34('0x39')]);_0x59d3be[_0x4b34('0x3a')]=qs[_0x4b34('0x32')](_[_0x4b34('0x3b')](_0xa14108['query'],_0x11d821[_0x4b34('0x32')]));if(_0xa14108[_0x4b34('0x31')][_0x4b34('0x3c')]){_0x59d3be[_0x4b34('0x3a')]=_[_0x4b34('0x3d')](_0x59d3be[_0x4b34('0x3a')],{'$or':_[_0x4b34('0x2a')](_0x59d3be[_0x4b34('0x34')],function(_0x4b15fa){var _0x1ab324={};_0x1ab324[_0x4b15fa]={'$like':'%'+_0xa14108[_0x4b34('0x31')][_0x4b34('0x3c')]+'%'};return _0x1ab324;})});}_0x59d3be=_[_0x4b34('0x3d')]({},_0x59d3be,_0xa14108[_0x4b34('0x3e')]);return _0x6240f7['getSubjects'](_0x59d3be);}})[_0x4b34('0x24')](function(_0x413c55){if(_0x413c55){_0x35ed4f=_0x413c55['length'];if(!_0xa14108['query']['hasOwnProperty'](_0x4b34('0x37'))){_0x59d3be['limit']=qs[_0x4b34('0x1c')](_0xa14108[_0x4b34('0x31')]['limit']);_0x59d3be[_0x4b34('0x1b')]=qs[_0x4b34('0x1b')](_0xa14108[_0x4b34('0x31')][_0x4b34('0x1b')]);}return _0x6240f7[_0x4b34('0x48')](_0x59d3be);}})['then'](function(_0x466a49){if(_0x466a49){return _0x466a49?{'count':_0x35ed4f,'rows':_0x466a49}:null;}})[_0x4b34('0x24')](respondWithResult(_0x2351b8,null))[_0x4b34('0x42')](handleError(_0x2351b8,null));};exports['getDescriptions']=function(_0x4caca3,_0xddf130,_0x495174){var _0x153eb4={};var _0x22000c={};var _0x52d64d;var _0x5b5363;return db[_0x4b34('0x2b')][_0x4b34('0x4a')]({'where':{'id':_0x4caca3[_0x4b34('0x43')]['id']}})[_0x4b34('0x24')](handleEntityNotFound(_0xddf130,null))[_0x4b34('0x24')](function(_0x4819c8){if(_0x4819c8){_0x52d64d=_0x4819c8;_0x22000c[_0x4b34('0x2f')]=_[_0x4b34('0x30')](db[_0x4b34('0x49')]['rawAttributes']);_0x22000c['query']=_[_0x4b34('0x30')](_0x4caca3[_0x4b34('0x31')]);_0x22000c['filters']=_[_0x4b34('0x33')](_0x22000c[_0x4b34('0x2f')],_0x22000c['query']);_0x153eb4[_0x4b34('0x34')]=_[_0x4b34('0x33')](_0x22000c[_0x4b34('0x2f')],qs['fields'](_0x4caca3[_0x4b34('0x31')][_0x4b34('0x35')]));_0x153eb4[_0x4b34('0x34')]=_0x153eb4['attributes'][_0x4b34('0x44')]?_0x153eb4[_0x4b34('0x34')]:_0x22000c['model'];_0x153eb4['order']=qs['sort'](_0x4caca3[_0x4b34('0x31')]['sort']);_0x153eb4[_0x4b34('0x3a')]=qs[_0x4b34('0x32')](_[_0x4b34('0x3b')](_0x4caca3[_0x4b34('0x31')],_0x22000c['filters']));if(_0x4caca3[_0x4b34('0x31')][_0x4b34('0x3c')]){_0x153eb4[_0x4b34('0x3a')]=_['merge'](_0x153eb4['where'],{'$or':_[_0x4b34('0x2a')](_0x153eb4[_0x4b34('0x34')],function(_0x57aa97){var _0x87978e={};_0x87978e[_0x57aa97]={'$like':'%'+_0x4caca3[_0x4b34('0x31')]['filter']+'%'};return _0x87978e;})});}_0x153eb4=_[_0x4b34('0x3d')]({},_0x153eb4,_0x4caca3['options']);return _0x52d64d[_0x4b34('0x4b')](_0x153eb4);}})[_0x4b34('0x24')](function(_0x29dcb3){if(_0x29dcb3){_0x5b5363=_0x29dcb3[_0x4b34('0x44')];if(!_0x4caca3[_0x4b34('0x31')][_0x4b34('0x36')](_0x4b34('0x37'))){_0x153eb4[_0x4b34('0x1c')]=qs[_0x4b34('0x1c')](_0x4caca3['query'][_0x4b34('0x1c')]);_0x153eb4[_0x4b34('0x1b')]=qs['offset'](_0x4caca3[_0x4b34('0x31')][_0x4b34('0x1b')]);}return _0x52d64d[_0x4b34('0x4b')](_0x153eb4);}})['then'](function(_0x94c13b){if(_0x94c13b){return _0x94c13b?{'count':_0x5b5363,'rows':_0x94c13b}:null;}})[_0x4b34('0x24')](respondWithResult(_0xddf130,null))[_0x4b34('0x42')](handleError(_0xddf130,null));};exports['getFields']=function(_0x58b20a,_0x51f112,_0x1a4c98){var _0x436b6d={};var _0x3ffc98={};var _0x4cbef1;var _0xfb64ec;return db[_0x4b34('0x2b')][_0x4b34('0x4a')]({'where':{'id':_0x58b20a['params']['id']}})[_0x4b34('0x24')](handleEntityNotFound(_0x51f112,null))[_0x4b34('0x24')](function(_0x473bb7){if(_0x473bb7){_0x4cbef1=_0x473bb7;_0x3ffc98[_0x4b34('0x2f')]=_[_0x4b34('0x30')](db['FreshsalesField']['rawAttributes']);_0x3ffc98[_0x4b34('0x31')]=_[_0x4b34('0x30')](_0x58b20a[_0x4b34('0x31')]);_0x3ffc98[_0x4b34('0x32')]=_['intersection'](_0x3ffc98['model'],_0x3ffc98[_0x4b34('0x31')]);_0x436b6d[_0x4b34('0x34')]=_['intersection'](_0x3ffc98[_0x4b34('0x2f')],qs['fields'](_0x58b20a[_0x4b34('0x31')][_0x4b34('0x35')]));_0x436b6d[_0x4b34('0x34')]=_0x436b6d[_0x4b34('0x34')][_0x4b34('0x44')]?_0x436b6d[_0x4b34('0x34')]:_0x3ffc98[_0x4b34('0x2f')];_0x436b6d[_0x4b34('0x38')]=qs[_0x4b34('0x39')](_0x58b20a['query'][_0x4b34('0x39')]);_0x436b6d['where']=qs['filters'](_[_0x4b34('0x3b')](_0x58b20a[_0x4b34('0x31')],_0x3ffc98[_0x4b34('0x32')]));if(_0x58b20a[_0x4b34('0x31')]['filter']){_0x436b6d[_0x4b34('0x3a')]=_['merge'](_0x436b6d[_0x4b34('0x3a')],{'$or':_[_0x4b34('0x2a')](_0x436b6d[_0x4b34('0x34')],function(_0x29e7ce){var _0x2ea8bf={};_0x2ea8bf[_0x29e7ce]={'$like':'%'+_0x58b20a[_0x4b34('0x31')]['filter']+'%'};return _0x2ea8bf;})});}_0x436b6d=_[_0x4b34('0x3d')]({},_0x436b6d,_0x58b20a[_0x4b34('0x3e')]);return _0x4cbef1[_0x4b34('0x4c')](_0x436b6d);}})[_0x4b34('0x24')](function(_0x33f271){if(_0x33f271){_0xfb64ec=_0x33f271[_0x4b34('0x44')];if(!_0x58b20a[_0x4b34('0x31')][_0x4b34('0x36')]('nolimit')){_0x436b6d[_0x4b34('0x1c')]=qs[_0x4b34('0x1c')](_0x58b20a['query']['limit']);_0x436b6d['offset']=qs['offset'](_0x58b20a[_0x4b34('0x31')][_0x4b34('0x1b')]);}return _0x4cbef1[_0x4b34('0x4c')](_0x436b6d);}})['then'](function(_0x576c86){if(_0x576c86){return _0x576c86?{'count':_0xfb64ec,'rows':_0x576c86}:null;}})[_0x4b34('0x24')](respondWithResult(_0x51f112,null))[_0x4b34('0x42')](handleError(_0x51f112,null));};
\ No newline at end of file
+var _0xaa7d=['limit','set','Content-Range','reject','save','update','then','destroy','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','rows','show','params','keys','find','catch','create','body','findOne','FreshsalesField','getSubjects','getDescriptions','pick','merge','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count'];(function(_0x49e489,_0x198e41){var _0xcc7a16=function(_0x2bf324){while(--_0x2bf324){_0x49e489['push'](_0x49e489['shift']());}};_0xcc7a16(++_0x198e41);}(_0xaa7d,0x16c));var _0xdaa7=function(_0x40df5f,_0x8fd59f){_0x40df5f=_0x40df5f-0x0;var _0x1573f1=_0xaa7d[_0x40df5f];return _0x1573f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdaa7('0x0'));var zipdir=require(_0xdaa7('0x1'));var jsonpatch=require(_0xdaa7('0x2'));var rp=require(_0xdaa7('0x3'));var moment=require(_0xdaa7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdaa7('0x5'));var util=require(_0xdaa7('0x6'));var path=require(_0xdaa7('0x7'));var sox=require(_0xdaa7('0x8'));var csv=require(_0xdaa7('0x9'));var ejs=require(_0xdaa7('0xa'));var fs=require('fs');var fs_extra=require(_0xdaa7('0xb'));var _=require('lodash');var squel=require(_0xdaa7('0xc'));var crypto=require(_0xdaa7('0xd'));var jsforce=require(_0xdaa7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdaa7('0x9'));var querystring=require('querystring');var Papa=require(_0xdaa7('0xf'));var Redis=require(_0xdaa7('0x10'));var authService=require(_0xdaa7('0x11'));var qs=require(_0xdaa7('0x12'));var as=require(_0xdaa7('0x13'));var hardwareService=require(_0xdaa7('0x14'));var logger=require(_0xdaa7('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xdaa7('0x16'));var licenseUtil=require(_0xdaa7('0x17'));var db=require(_0xdaa7('0x18'))['db'];function respondWithStatusCode(_0xefe453,_0x59796b){_0x59796b=_0x59796b||0xcc;return function(_0x182a73){if(_0x182a73){return _0xefe453['sendStatus'](_0x59796b);}return _0xefe453[_0xdaa7('0x19')](_0x59796b)[_0xdaa7('0x1a')]();};}function respondWithResult(_0x24c41d,_0x516df0){_0x516df0=_0x516df0||0xc8;return function(_0x4a4c96){if(_0x4a4c96){return _0x24c41d['status'](_0x516df0)[_0xdaa7('0x1b')](_0x4a4c96);}};}function respondWithFilteredResult(_0x5ae836,_0x1201a6){return function(_0x7fad3c){if(_0x7fad3c){var _0x1cffb3=typeof _0x1201a6[_0xdaa7('0x1c')]===_0xdaa7('0x1d')&&typeof _0x1201a6['limit']==='undefined';var _0x14737e=_0x7fad3c[_0xdaa7('0x1e')];var _0x97c9fa=_0x1cffb3?0x0:_0x1201a6['offset'];var _0x55f0f2=_0x1cffb3?_0x7fad3c[_0xdaa7('0x1e')]:_0x1201a6[_0xdaa7('0x1c')]+_0x1201a6[_0xdaa7('0x1f')];var _0x55426e;if(_0x55f0f2>=_0x14737e){_0x55f0f2=_0x14737e;_0x55426e=0xc8;}else{_0x55426e=0xce;}_0x5ae836['status'](_0x55426e);return _0x5ae836[_0xdaa7('0x20')](_0xdaa7('0x21'),_0x97c9fa+'-'+_0x55f0f2+'/'+_0x14737e)['json'](_0x7fad3c);}return null;};}function patchUpdates(_0x2a6eca){return function(_0x2d9cfc){try{jsonpatch['apply'](_0x2d9cfc,_0x2a6eca,!![]);}catch(_0x4b717e){return BPromise[_0xdaa7('0x22')](_0x4b717e);}return _0x2d9cfc[_0xdaa7('0x23')]();};}function saveUpdates(_0x59186b,_0x5e11c0){return function(_0x2d65cb){if(_0x2d65cb){return _0x2d65cb[_0xdaa7('0x24')](_0x59186b)[_0xdaa7('0x25')](function(_0x8bb328){return _0x8bb328;});}return null;};}function removeEntity(_0x1a44b1,_0x54e354){return function(_0x1a6bad){if(_0x1a6bad){return _0x1a6bad[_0xdaa7('0x26')]()[_0xdaa7('0x25')](function(){_0x1a44b1[_0xdaa7('0x19')](0xcc)[_0xdaa7('0x1a')]();});}};}function handleEntityNotFound(_0x57bdd0,_0x1c3b9c){return function(_0x124962){if(!_0x124962){_0x57bdd0['sendStatus'](0x194);}return _0x124962;};}function handleError(_0x4a0719,_0x338eea){_0x338eea=_0x338eea||0x1f4;return function(_0x5e2568){logger['error'](_0x5e2568[_0xdaa7('0x27')]);if(_0x5e2568[_0xdaa7('0x28')]){delete _0x5e2568[_0xdaa7('0x28')];}_0x4a0719[_0xdaa7('0x19')](_0x338eea)['send'](_0x5e2568);};}exports[_0xdaa7('0x29')]=function(_0x1c887a,_0xb90158){var _0x4b72d3={},_0x28acd0={},_0x3ebdef={'count':0x0,'rows':[]};var _0x8147c=_[_0xdaa7('0x2a')](db[_0xdaa7('0x2b')][_0xdaa7('0x2c')],function(_0x45471f){return{'name':_0x45471f[_0xdaa7('0x2d')],'type':_0x45471f[_0xdaa7('0x2e')][_0xdaa7('0x2f')]};});_0x28acd0[_0xdaa7('0x30')]=_['map'](_0x8147c,'name');_0x28acd0[_0xdaa7('0x31')]=_['keys'](_0x1c887a[_0xdaa7('0x31')]);_0x28acd0[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x28acd0[_0xdaa7('0x30')],_0x28acd0[_0xdaa7('0x31')]);_0x4b72d3[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x28acd0[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x1c887a['query'][_0xdaa7('0x35')]));_0x4b72d3['attributes']=_0x4b72d3['attributes'][_0xdaa7('0x36')]?_0x4b72d3[_0xdaa7('0x34')]:_0x28acd0[_0xdaa7('0x30')];if(!_0x1c887a['query'][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x4b72d3['limit']=qs['limit'](_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x1f')]);_0x4b72d3[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0x1c887a[_0xdaa7('0x31')]['offset']);}_0x4b72d3[_0xdaa7('0x39')]=qs[_0xdaa7('0x3a')](_0x1c887a['query'][_0xdaa7('0x3a')]);_0x4b72d3[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_['pick'](_0x1c887a[_0xdaa7('0x31')],_0x28acd0[_0xdaa7('0x32')]),_0x8147c);if(_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0x4b72d3[_0xdaa7('0x3b')]=_['merge'](_0x4b72d3[_0xdaa7('0x3b')],{'$or':_[_0xdaa7('0x2a')](_0x8147c,function(_0x4b8871){if(_0x4b8871[_0xdaa7('0x2e')]!==_0xdaa7('0x3d')){var _0x313886={};_0x313886[_0x4b8871[_0xdaa7('0x28')]]={'$like':'%'+_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3c')]+'%'};return _0x313886;}})});}_0x4b72d3=_['merge']({},_0x4b72d3,_0x1c887a[_0xdaa7('0x3e')]);var _0x327aa2={'where':_0x4b72d3['where']};return db[_0xdaa7('0x2b')][_0xdaa7('0x1e')](_0x327aa2)[_0xdaa7('0x25')](function(_0x4c0328){_0x3ebdef['count']=_0x4c0328;if(_0x1c887a[_0xdaa7('0x31')][_0xdaa7('0x3f')]){_0x4b72d3['include']=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x4b72d3);})[_0xdaa7('0x25')](function(_0x3e129e){_0x3ebdef[_0xdaa7('0x40')]=_0x3e129e;return _0x3ebdef;})[_0xdaa7('0x25')](respondWithFilteredResult(_0xb90158,_0x4b72d3))['catch'](handleError(_0xb90158,null));};exports[_0xdaa7('0x41')]=function(_0xf0c7f0,_0x1213d9){var _0x4584af={'raw':![],'where':{'id':_0xf0c7f0[_0xdaa7('0x42')]['id']}},_0x2f8ae6={};_0x2f8ae6[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x2b')]['rawAttributes']);_0x2f8ae6['query']=_[_0xdaa7('0x43')](_0xf0c7f0[_0xdaa7('0x31')]);_0x2f8ae6[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x2f8ae6[_0xdaa7('0x30')],_0x2f8ae6[_0xdaa7('0x31')]);_0x4584af[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x2f8ae6[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0xf0c7f0[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0x4584af[_0xdaa7('0x34')]=_0x4584af[_0xdaa7('0x34')]['length']?_0x4584af[_0xdaa7('0x34')]:_0x2f8ae6[_0xdaa7('0x30')];if(_0xf0c7f0['query'][_0xdaa7('0x3f')]){_0x4584af['include']=[{'all':!![]}];}_0x4584af=_['merge']({},_0x4584af,_0xf0c7f0[_0xdaa7('0x3e')]);return db[_0xdaa7('0x2b')][_0xdaa7('0x44')](_0x4584af)['then'](handleEntityNotFound(_0x1213d9,null))[_0xdaa7('0x25')](respondWithResult(_0x1213d9,null))[_0xdaa7('0x45')](handleError(_0x1213d9,null));};exports[_0xdaa7('0x46')]=function(_0x27cba6,_0x2b66ce){return db[_0xdaa7('0x2b')][_0xdaa7('0x46')](_0x27cba6[_0xdaa7('0x47')],{})[_0xdaa7('0x25')](respondWithResult(_0x2b66ce,0xc9))['catch'](handleError(_0x2b66ce,null));};exports[_0xdaa7('0x24')]=function(_0x1fe92f,_0x5cda14){if(_0x1fe92f[_0xdaa7('0x47')]['id']){delete _0x1fe92f[_0xdaa7('0x47')]['id'];}return db[_0xdaa7('0x2b')][_0xdaa7('0x44')]({'where':{'id':_0x1fe92f[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x5cda14,null))[_0xdaa7('0x25')](saveUpdates(_0x1fe92f[_0xdaa7('0x47')],null))[_0xdaa7('0x25')](respondWithResult(_0x5cda14,null))[_0xdaa7('0x45')](handleError(_0x5cda14,null));};exports['destroy']=function(_0x1e99ae,_0x37cbf2){return db[_0xdaa7('0x2b')]['find']({'where':{'id':_0x1e99ae[_0xdaa7('0x42')]['id']}})['then'](handleEntityNotFound(_0x37cbf2,null))['then'](removeEntity(_0x37cbf2,null))[_0xdaa7('0x45')](handleError(_0x37cbf2,null));};exports['getSubjects']=function(_0x3852e1,_0x506896,_0x2e3ba1){var _0x240afa={};var _0x264259={};var _0x17cf60;var _0x307c2d;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0x3852e1[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x506896,null))[_0xdaa7('0x25')](function(_0x54c8e7){if(_0x54c8e7){_0x17cf60=_0x54c8e7;_0x264259[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0x264259['query']=_['keys'](_0x3852e1[_0xdaa7('0x31')]);_0x264259[_0xdaa7('0x32')]=_['intersection'](_0x264259['model'],_0x264259['query']);_0x240afa[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0x264259[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x3852e1['query'][_0xdaa7('0x35')]));_0x240afa[_0xdaa7('0x34')]=_0x240afa[_0xdaa7('0x34')]['length']?_0x240afa['attributes']:_0x264259[_0xdaa7('0x30')];_0x240afa['order']=qs[_0xdaa7('0x3a')](_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0x240afa[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_['pick'](_0x3852e1[_0xdaa7('0x31')],_0x264259[_0xdaa7('0x32')]));if(_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0x240afa[_0xdaa7('0x3b')]=_['merge'](_0x240afa[_0xdaa7('0x3b')],{'$or':_['map'](_0x240afa[_0xdaa7('0x34')],function(_0x345275){var _0x53876b={};_0x53876b[_0x345275]={'$like':'%'+_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x3c')]+'%'};return _0x53876b;})});}_0x240afa=_['merge']({},_0x240afa,_0x3852e1['options']);return _0x17cf60[_0xdaa7('0x4a')](_0x240afa);}})['then'](function(_0x528b41){if(_0x528b41){_0x307c2d=_0x528b41[_0xdaa7('0x36')];if(!_0x3852e1[_0xdaa7('0x31')][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x240afa[_0xdaa7('0x1f')]=qs['limit'](_0x3852e1[_0xdaa7('0x31')]['limit']);_0x240afa['offset']=qs[_0xdaa7('0x1c')](_0x3852e1['query'][_0xdaa7('0x1c')]);}return _0x17cf60['getSubjects'](_0x240afa);}})[_0xdaa7('0x25')](function(_0x59409b){if(_0x59409b){return _0x59409b?{'count':_0x307c2d,'rows':_0x59409b}:null;}})[_0xdaa7('0x25')](respondWithResult(_0x506896,null))[_0xdaa7('0x45')](handleError(_0x506896,null));};exports[_0xdaa7('0x4b')]=function(_0x3767ac,_0x3a807a,_0x5eeb91){var _0xe39d8e={};var _0x56a1f1={};var _0x241318;var _0x216f65;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0x3767ac[_0xdaa7('0x42')]['id']}})['then'](handleEntityNotFound(_0x3a807a,null))['then'](function(_0x4055c5){if(_0x4055c5){_0x241318=_0x4055c5;_0x56a1f1[_0xdaa7('0x30')]=_[_0xdaa7('0x43')](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0x56a1f1[_0xdaa7('0x31')]=_[_0xdaa7('0x43')](_0x3767ac[_0xdaa7('0x31')]);_0x56a1f1[_0xdaa7('0x32')]=_[_0xdaa7('0x33')](_0x56a1f1[_0xdaa7('0x30')],_0x56a1f1[_0xdaa7('0x31')]);_0xe39d8e[_0xdaa7('0x34')]=_['intersection'](_0x56a1f1[_0xdaa7('0x30')],qs[_0xdaa7('0x35')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0xe39d8e[_0xdaa7('0x34')]=_0xe39d8e[_0xdaa7('0x34')][_0xdaa7('0x36')]?_0xe39d8e[_0xdaa7('0x34')]:_0x56a1f1[_0xdaa7('0x30')];_0xe39d8e['order']=qs[_0xdaa7('0x3a')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0xe39d8e[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_[_0xdaa7('0x4c')](_0x3767ac['query'],_0x56a1f1['filters']));if(_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x3c')]){_0xe39d8e[_0xdaa7('0x3b')]=_['merge'](_0xe39d8e[_0xdaa7('0x3b')],{'$or':_['map'](_0xe39d8e[_0xdaa7('0x34')],function(_0x114868){var _0x10bf0a={};_0x10bf0a[_0x114868]={'$like':'%'+_0x3767ac['query']['filter']+'%'};return _0x10bf0a;})});}_0xe39d8e=_[_0xdaa7('0x4d')]({},_0xe39d8e,_0x3767ac[_0xdaa7('0x3e')]);return _0x241318[_0xdaa7('0x4b')](_0xe39d8e);}})[_0xdaa7('0x25')](function(_0x48f7ce){if(_0x48f7ce){_0x216f65=_0x48f7ce[_0xdaa7('0x36')];if(!_0x3767ac[_0xdaa7('0x31')]['hasOwnProperty']('nolimit')){_0xe39d8e[_0xdaa7('0x1f')]=qs[_0xdaa7('0x1f')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x1f')]);_0xe39d8e[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0x3767ac[_0xdaa7('0x31')][_0xdaa7('0x1c')]);}return _0x241318[_0xdaa7('0x4b')](_0xe39d8e);}})[_0xdaa7('0x25')](function(_0x2b3aa8){if(_0x2b3aa8){return _0x2b3aa8?{'count':_0x216f65,'rows':_0x2b3aa8}:null;}})['then'](respondWithResult(_0x3a807a,null))[_0xdaa7('0x45')](handleError(_0x3a807a,null));};exports[_0xdaa7('0x4e')]=function(_0xc2a2d0,_0x5f45aa,_0x2c6c73){var _0x31f7a4={};var _0xc7a8ad={};var _0x2feb7d;var _0x5aad2a;return db[_0xdaa7('0x2b')][_0xdaa7('0x48')]({'where':{'id':_0xc2a2d0[_0xdaa7('0x42')]['id']}})[_0xdaa7('0x25')](handleEntityNotFound(_0x5f45aa,null))['then'](function(_0x2db265){if(_0x2db265){_0x2feb7d=_0x2db265;_0xc7a8ad['model']=_['keys'](db[_0xdaa7('0x49')][_0xdaa7('0x2c')]);_0xc7a8ad[_0xdaa7('0x31')]=_[_0xdaa7('0x43')](_0xc2a2d0[_0xdaa7('0x31')]);_0xc7a8ad[_0xdaa7('0x32')]=_['intersection'](_0xc7a8ad['model'],_0xc7a8ad[_0xdaa7('0x31')]);_0x31f7a4[_0xdaa7('0x34')]=_[_0xdaa7('0x33')](_0xc7a8ad[_0xdaa7('0x30')],qs['fields'](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x35')]));_0x31f7a4[_0xdaa7('0x34')]=_0x31f7a4['attributes'][_0xdaa7('0x36')]?_0x31f7a4[_0xdaa7('0x34')]:_0xc7a8ad['model'];_0x31f7a4[_0xdaa7('0x39')]=qs[_0xdaa7('0x3a')](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x3a')]);_0x31f7a4[_0xdaa7('0x3b')]=qs[_0xdaa7('0x32')](_[_0xdaa7('0x4c')](_0xc2a2d0['query'],_0xc7a8ad[_0xdaa7('0x32')]));if(_0xc2a2d0[_0xdaa7('0x31')]['filter']){_0x31f7a4['where']=_[_0xdaa7('0x4d')](_0x31f7a4[_0xdaa7('0x3b')],{'$or':_[_0xdaa7('0x2a')](_0x31f7a4[_0xdaa7('0x34')],function(_0x33dc59){var _0x35e601={};_0x35e601[_0x33dc59]={'$like':'%'+_0xc2a2d0[_0xdaa7('0x31')]['filter']+'%'};return _0x35e601;})});}_0x31f7a4=_[_0xdaa7('0x4d')]({},_0x31f7a4,_0xc2a2d0[_0xdaa7('0x3e')]);return _0x2feb7d[_0xdaa7('0x4e')](_0x31f7a4);}})['then'](function(_0xc936df){if(_0xc936df){_0x5aad2a=_0xc936df[_0xdaa7('0x36')];if(!_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x37')](_0xdaa7('0x38'))){_0x31f7a4[_0xdaa7('0x1f')]=qs[_0xdaa7('0x1f')](_0xc2a2d0['query'][_0xdaa7('0x1f')]);_0x31f7a4[_0xdaa7('0x1c')]=qs[_0xdaa7('0x1c')](_0xc2a2d0[_0xdaa7('0x31')][_0xdaa7('0x1c')]);}return _0x2feb7d['getFields'](_0x31f7a4);}})[_0xdaa7('0x25')](function(_0x122614){if(_0x122614){return _0x122614?{'count':_0x5aad2a,'rows':_0x122614}:null;}})[_0xdaa7('0x25')](respondWithResult(_0x5f45aa,null))['catch'](handleError(_0x5f45aa,null));};
\ No newline at end of file
index a0ad8ee..dc8898c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c1=['./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x150654,_0x22e377){var _0x28dbee=function(_0x31703f){while(--_0x31703f){_0x150654['push'](_0x150654['shift']());}};_0x28dbee(++_0x22e377);}(_0xe6c1,0xf5));var _0x1e6c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe6c1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x1e6c('0x0'));var util=require('util');var logger=require(_0x1e6c('0x1'))(_0x1e6c('0x2'));var moment=require(_0x1e6c('0x3'));var BPromise=require(_0x1e6c('0x4'));var rp=require(_0x1e6c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1e6c('0x6'));var config=require('../../config/environment');var attributes=require(_0x1e6c('0x7'));module[_0x1e6c('0x8')]=function(_0x1dec52,_0xcdd6cf){return _0x1dec52[_0x1e6c('0x9')](_0x1e6c('0xa'),attributes,{'tableName':_0x1e6c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ccf=['request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','api','moment'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x2ccf,0x6a));var _0xf2cc=function(_0x2cec0d,_0x5ea35a){_0x2cec0d=_0x2cec0d-0x0;var _0x862aee=_0x2ccf[_0x2cec0d];return _0x862aee;};'use strict';var _=require(_0xf2cc('0x0'));var util=require(_0xf2cc('0x1'));var logger=require('../../config/logger')(_0xf2cc('0x2'));var moment=require(_0xf2cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xf2cc('0x4'));var fs=require('fs');var path=require(_0xf2cc('0x5'));var rimraf=require(_0xf2cc('0x6'));var config=require(_0xf2cc('0x7'));var attributes=require(_0xf2cc('0x8'));module['exports']=function(_0x1793a1,_0x2807fd){return _0x1793a1['define'](_0xf2cc('0x9'),attributes,{'tableName':_0xf2cc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 79f2d22..1a9061a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b4=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0xeb80c9,_0x3fe888){var _0x259c37=function(_0x49478c){while(--_0x49478c){_0xeb80c9['push'](_0xeb80c9['shift']());}};_0x259c37(++_0x3fe888);}(_0x53b4,0x162));var _0x453b=function(_0x42f270,_0x452dec){_0x42f270=_0x42f270-0x0;var _0x57bc5b=_0x53b4[_0x42f270];return _0x57bc5b;};'use strict';var _=require(_0x453b('0x0'));var util=require(_0x453b('0x1'));var moment=require(_0x453b('0x2'));var BPromise=require('bluebird');var rs=require(_0x453b('0x3'));var fs=require('fs');var Redis=require(_0x453b('0x4'));var db=require(_0x453b('0x5'))['db'];var utils=require(_0x453b('0x6'));var logger=require(_0x453b('0x7'))(_0x453b('0x8'));var config=require('../../config/environment');var jayson=require(_0x453b('0x9'));var client=jayson[_0x453b('0xa')][_0x453b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3536a4,_0x48d215,_0x59c7e4){return new BPromise(function(_0x5d99a4,_0x372ada){return client[_0x453b('0xc')](_0x3536a4,_0x59c7e4)['then'](function(_0x52e236){logger['info'](_0x453b('0xd'),_0x48d215,_0x453b('0xe'));logger[_0x453b('0xf')](_0x453b('0x10'),_0x48d215,_0x453b('0xe'),JSON[_0x453b('0x11')](_0x52e236));if(_0x52e236['error']){if(_0x52e236[_0x453b('0x12')][_0x453b('0x13')]===0x1f4){logger['error'](_0x453b('0xd'),_0x48d215,_0x52e236[_0x453b('0x12')][_0x453b('0x14')]);return _0x372ada(_0x52e236['error'][_0x453b('0x14')]);}logger['error'](_0x453b('0xd'),_0x48d215,_0x52e236['error'][_0x453b('0x14')]);return _0x5d99a4(_0x52e236[_0x453b('0x12')][_0x453b('0x14')]);}else{logger[_0x453b('0x15')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x48d215,_0x453b('0xe'));_0x5d99a4(_0x52e236[_0x453b('0x16')][_0x453b('0x14')]);}})[_0x453b('0x17')](function(_0x226065){logger[_0x453b('0x12')](_0x453b('0xd'),_0x48d215,_0x226065);_0x372ada(_0x226065);});});}
\ No newline at end of file
+var _0x7765=['debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x3a3420,_0x21c7b4){var _0x555706=function(_0x1256b0){while(--_0x1256b0){_0x3a3420['push'](_0x3a3420['shift']());}};_0x555706(++_0x21c7b4);}(_0x7765,0xc3));var _0x5776=function(_0x58e290,_0x40a87a){_0x58e290=_0x58e290-0x0;var _0x4f7473=_0x7765[_0x58e290];return _0x4f7473;};'use strict';var _=require(_0x5776('0x0'));var util=require(_0x5776('0x1'));var moment=require(_0x5776('0x2'));var BPromise=require(_0x5776('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5776('0x4'));var db=require(_0x5776('0x5'))['db'];var utils=require(_0x5776('0x6'));var logger=require(_0x5776('0x7'))(_0x5776('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5776('0x9')][_0x5776('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x49b2cc,_0x57d2f9,_0x2cd28e){return new BPromise(function(_0x1cfc42,_0x281417){return client[_0x5776('0xb')](_0x49b2cc,_0x2cd28e)[_0x5776('0xc')](function(_0x35fe57){logger['info'](_0x5776('0xd'),_0x57d2f9,_0x5776('0xe'));logger[_0x5776('0xf')](_0x5776('0x10'),_0x57d2f9,'request\x20sent',JSON['stringify'](_0x35fe57));if(_0x35fe57[_0x5776('0x11')]){if(_0x35fe57[_0x5776('0x11')]['code']===0x1f4){logger[_0x5776('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x57d2f9,_0x35fe57[_0x5776('0x11')]['message']);return _0x281417(_0x35fe57[_0x5776('0x11')][_0x5776('0x12')]);}logger[_0x5776('0x11')](_0x5776('0xd'),_0x57d2f9,_0x35fe57[_0x5776('0x11')]['message']);return _0x1cfc42(_0x35fe57['error']['message']);}else{logger[_0x5776('0x13')](_0x5776('0xd'),_0x57d2f9,_0x5776('0xe'));_0x1cfc42(_0x35fe57[_0x5776('0x14')][_0x5776('0x12')]);}})['catch'](function(_0x53d5f4){logger[_0x5776('0x11')](_0x5776('0xd'),_0x57d2f9,_0x53d5f4);_0x281417(_0x53d5f4);});});}
\ No newline at end of file
index 3c1cd83..1f3ddbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x226e73,_0x2d90e2){var _0x51edf7=function(_0x5cbd5b){while(--_0x5cbd5b){_0x226e73['push'](_0x226e73['shift']());}};_0x51edf7(++_0x2d90e2);}(_0x765e,0x131));var _0xe765=function(_0x4c7142,_0x399369){_0x4c7142=_0x4c7142-0x0;var _0x44ab28=_0x765e[_0x4c7142];return _0x44ab28;};'use strict';var multer=require(_0xe765('0x0'));var util=require(_0xe765('0x1'));var path=require(_0xe765('0x2'));var timeout=require(_0xe765('0x3'));var express=require(_0xe765('0x4'));var router=express[_0xe765('0x5')]();var fs_extra=require(_0xe765('0x6'));var auth=require(_0xe765('0x7'));var interaction=require(_0xe765('0x8'));var config=require(_0xe765('0x9'));var controller=require(_0xe765('0xa'));router[_0xe765('0xb')]('/',auth[_0xe765('0xc')](),controller[_0xe765('0xd')]);router[_0xe765('0xb')]('/:id',auth[_0xe765('0xc')](),controller[_0xe765('0xe')]);router[_0xe765('0xf')]('/',auth[_0xe765('0xc')](),controller[_0xe765('0x10')]);router[_0xe765('0x11')](_0xe765('0x12'),auth['isAuthenticated'](),controller[_0xe765('0x13')]);router[_0xe765('0x14')](_0xe765('0x12'),auth['isAuthenticated'](),controller[_0xe765('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x5825=['../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x5cb93d,_0x4394e0){var _0x1e536a=function(_0x21483d){while(--_0x21483d){_0x5cb93d['push'](_0x5cb93d['shift']());}};_0x1e536a(++_0x4394e0);}(_0x5825,0x78));var _0x5582=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5825[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x5582('0x0'));var util=require(_0x5582('0x1'));var path=require(_0x5582('0x2'));var timeout=require(_0x5582('0x3'));var express=require('express');var router=express[_0x5582('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5582('0x5'));var interaction=require(_0x5582('0x6'));var config=require(_0x5582('0x7'));var controller=require(_0x5582('0x8'));router[_0x5582('0x9')]('/',auth[_0x5582('0xa')](),controller[_0x5582('0xb')]);router['get'](_0x5582('0xc'),auth[_0x5582('0xa')](),controller[_0x5582('0xd')]);router[_0x5582('0xe')]('/',auth['isAuthenticated'](),controller[_0x5582('0xf')]);router[_0x5582('0x10')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x11')]);router[_0x5582('0x12')](_0x5582('0xc'),auth['isAuthenticated'](),controller[_0x5582('0x13')]);module[_0x5582('0x14')]=router;
\ No newline at end of file
index f2dc057..0c931a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee74=['ENUM','BOOLEAN','exports','string','variable','customVariable','picklist','STRING'];(function(_0xff61fe,_0x185e17){var _0x1acc30=function(_0x2734d6){while(--_0x2734d6){_0xff61fe['push'](_0xff61fe['shift']());}};_0x1acc30(++_0x185e17);}(_0xee74,0x11a));var _0x4ee7=function(_0x1d3509,_0x538371){_0x1d3509=_0x1d3509-0x0;var _0x4b67d5=_0xee74[_0x1d3509];return _0x4b67d5;};'use strict';var Sequelize=require('sequelize');module[_0x4ee7('0x0')]={'type':{'type':Sequelize['ENUM'](_0x4ee7('0x1'),_0x4ee7('0x2'),_0x4ee7('0x3'),'keyValue',_0x4ee7('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4ee7('0x5')]},'key':{'type':Sequelize[_0x4ee7('0x5')]},'keyType':{'type':Sequelize[_0x4ee7('0x6')](_0x4ee7('0x1'),_0x4ee7('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x4ee7('0x5')]},'idField':{'type':Sequelize[_0x4ee7('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x4ee7('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4ee7('0x5')]}};
\ No newline at end of file
+var _0xba88=['picklist','STRING','customVariable','sequelize','exports','ENUM','string','variable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xba88,0x11a));var _0x8ba8=function(_0x2aed7f,_0x7bed96){_0x2aed7f=_0x2aed7f-0x0;var _0x1a6e58=_0xba88[_0x2aed7f];return _0x1a6e58;};'use strict';var Sequelize=require(_0x8ba8('0x0'));module[_0x8ba8('0x1')]={'type':{'type':Sequelize[_0x8ba8('0x2')](_0x8ba8('0x3'),_0x8ba8('0x4'),'customVariable',_0x8ba8('0x5'),_0x8ba8('0x6')),'defaultValue':_0x8ba8('0x3')},'content':{'type':Sequelize[_0x8ba8('0x7')]},'key':{'type':Sequelize[_0x8ba8('0x7')]},'keyType':{'type':Sequelize[_0x8ba8('0x2')](_0x8ba8('0x3'),_0x8ba8('0x4'),_0x8ba8('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8ba8('0x7')]},'nameField':{'type':Sequelize[_0x8ba8('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8ba8('0x7')]}};
\ No newline at end of file
index e094e3f..e0cce7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d6=['filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','FreshsalesField','includeAll','include','show','params','intersection','find','catch','create','body','eml-format','zip-dir','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys'];(function(_0x446924,_0x3eaf15){var _0x150cd6=function(_0x354fa9){while(--_0x354fa9){_0x446924['push'](_0x446924['shift']());}};_0x150cd6(++_0x3eaf15);}(_0x84d6,0x140));var _0x684d=function(_0x8e3ad2,_0x91837e){_0x8e3ad2=_0x8e3ad2-0x0;var _0x14bdf0=_0x84d6[_0x8e3ad2];return _0x14bdf0;};'use strict';var emlformat=require(_0x684d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x684d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x684d('0x2'));var moment=require(_0x684d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x684d('0x4'));var util=require('util');var path=require(_0x684d('0x5'));var sox=require(_0x684d('0x6'));var csv=require('to-csv');var ejs=require(_0x684d('0x7'));var fs=require('fs');var fs_extra=require(_0x684d('0x8'));var _=require(_0x684d('0x9'));var squel=require(_0x684d('0xa'));var crypto=require(_0x684d('0xb'));var jsforce=require(_0x684d('0xc'));var deskjs=require(_0x684d('0xd'));var toCsv=require(_0x684d('0xe'));var querystring=require(_0x684d('0xf'));var Papa=require(_0x684d('0x10'));var Redis=require(_0x684d('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x684d('0x12'));var logger=require(_0x684d('0x13'))(_0x684d('0x14'));var utils=require(_0x684d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x684d('0x16'));var db=require(_0x684d('0x17'))['db'];function respondWithStatusCode(_0x1b7354,_0x430440){_0x430440=_0x430440||0xcc;return function(_0x4ff8d2){if(_0x4ff8d2){return _0x1b7354[_0x684d('0x18')](_0x430440);}return _0x1b7354[_0x684d('0x19')](_0x430440)[_0x684d('0x1a')]();};}function respondWithResult(_0x1bc15a,_0x25663b){_0x25663b=_0x25663b||0xc8;return function(_0x65bcd3){if(_0x65bcd3){return _0x1bc15a['status'](_0x25663b)[_0x684d('0x1b')](_0x65bcd3);}};}function respondWithFilteredResult(_0x5b49dc,_0x11f2ee){return function(_0x4621d5){if(_0x4621d5){var _0x489f11=typeof _0x11f2ee['offset']===_0x684d('0x1c')&&typeof _0x11f2ee[_0x684d('0x1d')]===_0x684d('0x1c');var _0xb0073e=_0x4621d5[_0x684d('0x1e')];var _0x16b31b=_0x489f11?0x0:_0x11f2ee[_0x684d('0x1f')];var _0x2d3dcf=_0x489f11?_0x4621d5[_0x684d('0x1e')]:_0x11f2ee[_0x684d('0x1f')]+_0x11f2ee['limit'];var _0x1598be;if(_0x2d3dcf>=_0xb0073e){_0x2d3dcf=_0xb0073e;_0x1598be=0xc8;}else{_0x1598be=0xce;}_0x5b49dc[_0x684d('0x19')](_0x1598be);return _0x5b49dc[_0x684d('0x20')]('Content-Range',_0x16b31b+'-'+_0x2d3dcf+'/'+_0xb0073e)[_0x684d('0x1b')](_0x4621d5);}return null;};}function patchUpdates(_0x3bc6f0){return function(_0x9c53a9){try{jsonpatch[_0x684d('0x21')](_0x9c53a9,_0x3bc6f0,!![]);}catch(_0x989329){return BPromise[_0x684d('0x22')](_0x989329);}return _0x9c53a9[_0x684d('0x23')]();};}function saveUpdates(_0x452bec,_0x331a4f){return function(_0x7e77bd){if(_0x7e77bd){return _0x7e77bd[_0x684d('0x24')](_0x452bec)['then'](function(_0x547db9){return _0x547db9;});}return null;};}function removeEntity(_0x5569b7,_0x5a7fa0){return function(_0x3d35f5){if(_0x3d35f5){return _0x3d35f5[_0x684d('0x25')]()[_0x684d('0x26')](function(){_0x5569b7[_0x684d('0x19')](0xcc)[_0x684d('0x1a')]();});}};}function handleEntityNotFound(_0x533aab,_0x2204eb){return function(_0x28b2c2){if(!_0x28b2c2){_0x533aab['sendStatus'](0x194);}return _0x28b2c2;};}function handleError(_0x18aeb9,_0x1d572d){_0x1d572d=_0x1d572d||0x1f4;return function(_0x5ac686){logger[_0x684d('0x27')](_0x5ac686[_0x684d('0x28')]);if(_0x5ac686[_0x684d('0x29')]){delete _0x5ac686[_0x684d('0x29')];}_0x18aeb9[_0x684d('0x19')](_0x1d572d)[_0x684d('0x2a')](_0x5ac686);};}exports[_0x684d('0x2b')]=function(_0x9ba084,_0x23296d){var _0x57e237={},_0x2bfd9d={},_0x121a91={'count':0x0,'rows':[]};var _0x54fda4=_[_0x684d('0x2c')](db['FreshsalesField'][_0x684d('0x2d')],function(_0x2caf7a){return{'name':_0x2caf7a['fieldName'],'type':_0x2caf7a[_0x684d('0x2e')][_0x684d('0x2f')]};});_0x2bfd9d['model']=_[_0x684d('0x2c')](_0x54fda4,_0x684d('0x29'));_0x2bfd9d[_0x684d('0x30')]=_[_0x684d('0x31')](_0x9ba084[_0x684d('0x30')]);_0x2bfd9d[_0x684d('0x32')]=_['intersection'](_0x2bfd9d[_0x684d('0x33')],_0x2bfd9d[_0x684d('0x30')]);_0x57e237['attributes']=_['intersection'](_0x2bfd9d[_0x684d('0x33')],qs[_0x684d('0x34')](_0x9ba084[_0x684d('0x30')][_0x684d('0x34')]));_0x57e237[_0x684d('0x35')]=_0x57e237[_0x684d('0x35')][_0x684d('0x36')]?_0x57e237[_0x684d('0x35')]:_0x2bfd9d['model'];if(!_0x9ba084[_0x684d('0x30')][_0x684d('0x37')](_0x684d('0x38'))){_0x57e237[_0x684d('0x1d')]=qs[_0x684d('0x1d')](_0x9ba084[_0x684d('0x30')][_0x684d('0x1d')]);_0x57e237[_0x684d('0x1f')]=qs[_0x684d('0x1f')](_0x9ba084[_0x684d('0x30')]['offset']);}_0x57e237[_0x684d('0x39')]=qs['sort'](_0x9ba084[_0x684d('0x30')][_0x684d('0x3a')]);_0x57e237[_0x684d('0x3b')]=qs['filters'](_['pick'](_0x9ba084[_0x684d('0x30')],_0x2bfd9d[_0x684d('0x32')]),_0x54fda4);if(_0x9ba084[_0x684d('0x30')][_0x684d('0x3c')]){_0x57e237['where']=_[_0x684d('0x3d')](_0x57e237['where'],{'$or':_['map'](_0x54fda4,function(_0x1f4214){if(_0x1f4214['type']!==_0x684d('0x3e')){var _0x326b6c={};_0x326b6c[_0x1f4214['name']]={'$like':'%'+_0x9ba084[_0x684d('0x30')][_0x684d('0x3c')]+'%'};return _0x326b6c;}})});}_0x57e237=_[_0x684d('0x3d')]({},_0x57e237,_0x9ba084[_0x684d('0x3f')]);var _0x4129f9={'where':_0x57e237[_0x684d('0x3b')]};return db[_0x684d('0x40')][_0x684d('0x1e')](_0x4129f9)['then'](function(_0x27e59a){_0x121a91[_0x684d('0x1e')]=_0x27e59a;if(_0x9ba084[_0x684d('0x30')][_0x684d('0x41')]){_0x57e237[_0x684d('0x42')]=[{'all':!![]}];}return db[_0x684d('0x40')]['findAll'](_0x57e237);})[_0x684d('0x26')](function(_0x2e8bc5){_0x121a91['rows']=_0x2e8bc5;return _0x121a91;})[_0x684d('0x26')](respondWithFilteredResult(_0x23296d,_0x57e237))['catch'](handleError(_0x23296d,null));};exports[_0x684d('0x43')]=function(_0x4f3082,_0x1c9675){var _0x33b2cd={'raw':!![],'where':{'id':_0x4f3082[_0x684d('0x44')]['id']}},_0x3fcb16={};_0x3fcb16[_0x684d('0x33')]=_[_0x684d('0x31')](db['FreshsalesField'][_0x684d('0x2d')]);_0x3fcb16[_0x684d('0x30')]=_[_0x684d('0x31')](_0x4f3082[_0x684d('0x30')]);_0x3fcb16['filters']=_[_0x684d('0x45')](_0x3fcb16['model'],_0x3fcb16[_0x684d('0x30')]);_0x33b2cd[_0x684d('0x35')]=_[_0x684d('0x45')](_0x3fcb16[_0x684d('0x33')],qs[_0x684d('0x34')](_0x4f3082['query'][_0x684d('0x34')]));_0x33b2cd[_0x684d('0x35')]=_0x33b2cd[_0x684d('0x35')][_0x684d('0x36')]?_0x33b2cd[_0x684d('0x35')]:_0x3fcb16['model'];if(_0x4f3082[_0x684d('0x30')][_0x684d('0x41')]){_0x33b2cd[_0x684d('0x42')]=[{'all':!![]}];}_0x33b2cd=_[_0x684d('0x3d')]({},_0x33b2cd,_0x4f3082[_0x684d('0x3f')]);return db['FreshsalesField'][_0x684d('0x46')](_0x33b2cd)[_0x684d('0x26')](handleEntityNotFound(_0x1c9675,null))[_0x684d('0x26')](respondWithResult(_0x1c9675,null))[_0x684d('0x47')](handleError(_0x1c9675,null));};exports['create']=function(_0x4e91da,_0x124dc1){return db[_0x684d('0x40')][_0x684d('0x48')](_0x4e91da['body'],{})[_0x684d('0x26')](respondWithResult(_0x124dc1,0xc9))[_0x684d('0x47')](handleError(_0x124dc1,null));};exports['update']=function(_0x1565de,_0x38c3d4){if(_0x1565de['body']['id']){delete _0x1565de[_0x684d('0x49')]['id'];}return db[_0x684d('0x40')]['find']({'where':{'id':_0x1565de[_0x684d('0x44')]['id']}})[_0x684d('0x26')](handleEntityNotFound(_0x38c3d4,null))['then'](saveUpdates(_0x1565de[_0x684d('0x49')],null))[_0x684d('0x26')](respondWithResult(_0x38c3d4,null))['catch'](handleError(_0x38c3d4,null));};exports['destroy']=function(_0x43dd9c,_0x350b68){return db['FreshsalesField']['find']({'where':{'id':_0x43dd9c['params']['id']}})['then'](handleEntityNotFound(_0x350b68,null))[_0x684d('0x26')](removeEntity(_0x350b68,null))['catch'](handleError(_0x350b68,null));};
\ No newline at end of file
+var _0x039c=['map','FreshsalesField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','create','body','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index'];(function(_0xa58b3c,_0x57a029){var _0x59152f=function(_0x45d5d7){while(--_0x45d5d7){_0xa58b3c['push'](_0xa58b3c['shift']());}};_0x59152f(++_0x57a029);}(_0x039c,0x14b));var _0xc039=function(_0x24e351,_0x493b49){_0x24e351=_0x24e351-0x0;var _0x13424d=_0x039c[_0x24e351];return _0x13424d;};'use strict';var emlformat=require(_0xc039('0x0'));var rimraf=require(_0xc039('0x1'));var zipdir=require(_0xc039('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc039('0x3'));var moment=require('moment');var BPromise=require(_0xc039('0x4'));var Mustache=require(_0xc039('0x5'));var util=require(_0xc039('0x6'));var path=require(_0xc039('0x7'));var sox=require('sox');var csv=require(_0xc039('0x8'));var ejs=require(_0xc039('0x9'));var fs=require('fs');var fs_extra=require(_0xc039('0xa'));var _=require(_0xc039('0xb'));var squel=require(_0xc039('0xc'));var crypto=require('crypto');var jsforce=require(_0xc039('0xd'));var deskjs=require(_0xc039('0xe'));var toCsv=require(_0xc039('0x8'));var querystring=require(_0xc039('0xf'));var Papa=require(_0xc039('0x10'));var Redis=require('ioredis');var authService=require(_0xc039('0x11'));var qs=require(_0xc039('0x12'));var as=require(_0xc039('0x13'));var hardwareService=require(_0xc039('0x14'));var logger=require(_0xc039('0x15'))(_0xc039('0x16'));var utils=require(_0xc039('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc039('0x18'))['db'];function respondWithStatusCode(_0x143ca2,_0x58b7a6){_0x58b7a6=_0x58b7a6||0xcc;return function(_0x2b7455){if(_0x2b7455){return _0x143ca2[_0xc039('0x19')](_0x58b7a6);}return _0x143ca2['status'](_0x58b7a6)[_0xc039('0x1a')]();};}function respondWithResult(_0x3f6057,_0x275cbf){_0x275cbf=_0x275cbf||0xc8;return function(_0x224798){if(_0x224798){return _0x3f6057[_0xc039('0x1b')](_0x275cbf)[_0xc039('0x1c')](_0x224798);}};}function respondWithFilteredResult(_0xb31ded,_0x3c2ddd){return function(_0x296463){if(_0x296463){var _0x33044f=typeof _0x3c2ddd[_0xc039('0x1d')]===_0xc039('0x1e')&&typeof _0x3c2ddd[_0xc039('0x1f')]===_0xc039('0x1e');var _0x48ab91=_0x296463['count'];var _0x1e6c5b=_0x33044f?0x0:_0x3c2ddd['offset'];var _0x580fb9=_0x33044f?_0x296463[_0xc039('0x20')]:_0x3c2ddd[_0xc039('0x1d')]+_0x3c2ddd[_0xc039('0x1f')];var _0x3b6ee0;if(_0x580fb9>=_0x48ab91){_0x580fb9=_0x48ab91;_0x3b6ee0=0xc8;}else{_0x3b6ee0=0xce;}_0xb31ded['status'](_0x3b6ee0);return _0xb31ded[_0xc039('0x21')](_0xc039('0x22'),_0x1e6c5b+'-'+_0x580fb9+'/'+_0x48ab91)[_0xc039('0x1c')](_0x296463);}return null;};}function patchUpdates(_0x5c2d9d){return function(_0x42b7b1){try{jsonpatch['apply'](_0x42b7b1,_0x5c2d9d,!![]);}catch(_0x1927bb){return BPromise[_0xc039('0x23')](_0x1927bb);}return _0x42b7b1[_0xc039('0x24')]();};}function saveUpdates(_0x4be87b,_0x551271){return function(_0xe5da20){if(_0xe5da20){return _0xe5da20[_0xc039('0x25')](_0x4be87b)['then'](function(_0x292773){return _0x292773;});}return null;};}function removeEntity(_0x327454,_0x2b75ac){return function(_0x5e1c05){if(_0x5e1c05){return _0x5e1c05[_0xc039('0x26')]()[_0xc039('0x27')](function(){_0x327454[_0xc039('0x1b')](0xcc)[_0xc039('0x1a')]();});}};}function handleEntityNotFound(_0x19d4f4,_0xf57580){return function(_0x501ac6){if(!_0x501ac6){_0x19d4f4[_0xc039('0x19')](0x194);}return _0x501ac6;};}function handleError(_0x67de9,_0x489dad){_0x489dad=_0x489dad||0x1f4;return function(_0x34c735){logger[_0xc039('0x28')](_0x34c735['stack']);if(_0x34c735[_0xc039('0x29')]){delete _0x34c735[_0xc039('0x29')];}_0x67de9[_0xc039('0x1b')](_0x489dad)[_0xc039('0x2a')](_0x34c735);};}exports[_0xc039('0x2b')]=function(_0x81ee3b,_0x48471d){var _0x2a052f={},_0x3b67bd={},_0x5abbf1={'count':0x0,'rows':[]};var _0x2f1dca=_[_0xc039('0x2c')](db[_0xc039('0x2d')][_0xc039('0x2e')],function(_0x96b2b0){return{'name':_0x96b2b0['fieldName'],'type':_0x96b2b0[_0xc039('0x2f')][_0xc039('0x30')]};});_0x3b67bd[_0xc039('0x31')]=_[_0xc039('0x2c')](_0x2f1dca,'name');_0x3b67bd[_0xc039('0x32')]=_[_0xc039('0x33')](_0x81ee3b[_0xc039('0x32')]);_0x3b67bd[_0xc039('0x34')]=_[_0xc039('0x35')](_0x3b67bd[_0xc039('0x31')],_0x3b67bd[_0xc039('0x32')]);_0x2a052f[_0xc039('0x36')]=_['intersection'](_0x3b67bd['model'],qs[_0xc039('0x37')](_0x81ee3b[_0xc039('0x32')][_0xc039('0x37')]));_0x2a052f[_0xc039('0x36')]=_0x2a052f[_0xc039('0x36')][_0xc039('0x38')]?_0x2a052f[_0xc039('0x36')]:_0x3b67bd[_0xc039('0x31')];if(!_0x81ee3b[_0xc039('0x32')][_0xc039('0x39')](_0xc039('0x3a'))){_0x2a052f['limit']=qs[_0xc039('0x1f')](_0x81ee3b[_0xc039('0x32')][_0xc039('0x1f')]);_0x2a052f[_0xc039('0x1d')]=qs[_0xc039('0x1d')](_0x81ee3b[_0xc039('0x32')]['offset']);}_0x2a052f[_0xc039('0x3b')]=qs['sort'](_0x81ee3b['query'][_0xc039('0x3c')]);_0x2a052f[_0xc039('0x3d')]=qs[_0xc039('0x34')](_['pick'](_0x81ee3b['query'],_0x3b67bd[_0xc039('0x34')]),_0x2f1dca);if(_0x81ee3b[_0xc039('0x32')][_0xc039('0x3e')]){_0x2a052f[_0xc039('0x3d')]=_[_0xc039('0x3f')](_0x2a052f['where'],{'$or':_[_0xc039('0x2c')](_0x2f1dca,function(_0x4e925b){if(_0x4e925b['type']!==_0xc039('0x40')){var _0x513ad5={};_0x513ad5[_0x4e925b[_0xc039('0x29')]]={'$like':'%'+_0x81ee3b[_0xc039('0x32')][_0xc039('0x3e')]+'%'};return _0x513ad5;}})});}_0x2a052f=_[_0xc039('0x3f')]({},_0x2a052f,_0x81ee3b[_0xc039('0x41')]);var _0x13ed2c={'where':_0x2a052f[_0xc039('0x3d')]};return db[_0xc039('0x2d')][_0xc039('0x20')](_0x13ed2c)[_0xc039('0x27')](function(_0x13c015){_0x5abbf1[_0xc039('0x20')]=_0x13c015;if(_0x81ee3b['query'][_0xc039('0x42')]){_0x2a052f[_0xc039('0x43')]=[{'all':!![]}];}return db['FreshsalesField'][_0xc039('0x44')](_0x2a052f);})[_0xc039('0x27')](function(_0x2062c9){_0x5abbf1['rows']=_0x2062c9;return _0x5abbf1;})['then'](respondWithFilteredResult(_0x48471d,_0x2a052f))['catch'](handleError(_0x48471d,null));};exports[_0xc039('0x45')]=function(_0xd7cf45,_0xb95117){var _0x2c5ec5={'raw':!![],'where':{'id':_0xd7cf45[_0xc039('0x46')]['id']}},_0x271fb5={};_0x271fb5[_0xc039('0x31')]=_[_0xc039('0x33')](db[_0xc039('0x2d')]['rawAttributes']);_0x271fb5[_0xc039('0x32')]=_[_0xc039('0x33')](_0xd7cf45[_0xc039('0x32')]);_0x271fb5[_0xc039('0x34')]=_['intersection'](_0x271fb5['model'],_0x271fb5[_0xc039('0x32')]);_0x2c5ec5[_0xc039('0x36')]=_[_0xc039('0x35')](_0x271fb5[_0xc039('0x31')],qs[_0xc039('0x37')](_0xd7cf45['query'][_0xc039('0x37')]));_0x2c5ec5[_0xc039('0x36')]=_0x2c5ec5[_0xc039('0x36')][_0xc039('0x38')]?_0x2c5ec5[_0xc039('0x36')]:_0x271fb5['model'];if(_0xd7cf45[_0xc039('0x32')][_0xc039('0x42')]){_0x2c5ec5[_0xc039('0x43')]=[{'all':!![]}];}_0x2c5ec5=_[_0xc039('0x3f')]({},_0x2c5ec5,_0xd7cf45[_0xc039('0x41')]);return db[_0xc039('0x2d')]['find'](_0x2c5ec5)[_0xc039('0x27')](handleEntityNotFound(_0xb95117,null))[_0xc039('0x27')](respondWithResult(_0xb95117,null))[_0xc039('0x47')](handleError(_0xb95117,null));};exports[_0xc039('0x48')]=function(_0x426fe3,_0x888c41){return db['FreshsalesField'][_0xc039('0x48')](_0x426fe3[_0xc039('0x49')],{})[_0xc039('0x27')](respondWithResult(_0x888c41,0xc9))[_0xc039('0x47')](handleError(_0x888c41,null));};exports[_0xc039('0x25')]=function(_0x1be387,_0x46b4e6){if(_0x1be387[_0xc039('0x49')]['id']){delete _0x1be387[_0xc039('0x49')]['id'];}return db[_0xc039('0x2d')]['find']({'where':{'id':_0x1be387[_0xc039('0x46')]['id']}})[_0xc039('0x27')](handleEntityNotFound(_0x46b4e6,null))[_0xc039('0x27')](saveUpdates(_0x1be387[_0xc039('0x49')],null))[_0xc039('0x27')](respondWithResult(_0x46b4e6,null))[_0xc039('0x47')](handleError(_0x46b4e6,null));};exports['destroy']=function(_0x1f37ff,_0x2efa0d){return db[_0xc039('0x2d')][_0xc039('0x4a')]({'where':{'id':_0x1f37ff['params']['id']}})['then'](handleEntityNotFound(_0x2efa0d,null))[_0xc039('0x27')](removeEntity(_0x2efa0d,null))['catch'](handleError(_0x2efa0d,null));};
\ No newline at end of file
index f53edf5..9cf5076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59ac=['../../config/logger','api','moment','request-promise','path','../../config/environment','./intFreshsalesField.attributes','exports','FreshsalesField','freshsales_unique_index','FieldId','lodash','util'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x59ac,0x73));var _0xc59a=function(_0x51cc9e,_0x37a294){_0x51cc9e=_0x51cc9e-0x0;var _0x5f3474=_0x59ac[_0x51cc9e];return _0x5f3474;};'use strict';var _=require(_0xc59a('0x0'));var util=require(_0xc59a('0x1'));var logger=require(_0xc59a('0x2'))(_0xc59a('0x3'));var moment=require(_0xc59a('0x4'));var BPromise=require('bluebird');var rp=require(_0xc59a('0x5'));var fs=require('fs');var path=require(_0xc59a('0x6'));var rimraf=require('rimraf');var config=require(_0xc59a('0x7'));var attributes=require(_0xc59a('0x8'));module[_0xc59a('0x9')]=function(_0x25cd8e,_0x204832){return _0x25cd8e['define'](_0xc59a('0xa'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xc59a('0xb'),'fields':['idField',_0xc59a('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x48bc=['define','FreshsalesField','freshsales_unique_index','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0x68fdb0,_0x1229f4){var _0x35881d=function(_0x4d07fe){while(--_0x4d07fe){_0x68fdb0['push'](_0x68fdb0['shift']());}};_0x35881d(++_0x1229f4);}(_0x48bc,0x1b6));var _0xc48b=function(_0x3c21f7,_0x1561d6){_0x3c21f7=_0x3c21f7-0x0;var _0x323261=_0x48bc[_0x3c21f7];return _0x323261;};'use strict';var _=require(_0xc48b('0x0'));var util=require(_0xc48b('0x1'));var logger=require(_0xc48b('0x2'))('api');var moment=require(_0xc48b('0x3'));var BPromise=require(_0xc48b('0x4'));var rp=require(_0xc48b('0x5'));var fs=require('fs');var path=require(_0xc48b('0x6'));var rimraf=require(_0xc48b('0x7'));var config=require(_0xc48b('0x8'));var attributes=require(_0xc48b('0x9'));module['exports']=function(_0x221555,_0x4c001c){return _0x221555[_0xc48b('0xa')](_0xc48b('0xb'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xc48b('0xc'),'fields':['idField',_0xc48b('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e203ae3..258f8cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshsalesField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','lodash','util','bluebird'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0xfcf0,0x138));var _0x0fcf=function(_0x5c7e53,_0x174ce5){_0x5c7e53=_0x5c7e53-0x0;var _0x1c9af9=_0xfcf0[_0x5c7e53];return _0x1c9af9;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var moment=require('moment');var BPromise=require(_0x0fcf('0x2'));var rs=require(_0x0fcf('0x3'));var fs=require('fs');var Redis=require(_0x0fcf('0x4'));var db=require(_0x0fcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fcf('0x6'))(_0x0fcf('0x7'));var config=require(_0x0fcf('0x8'));var jayson=require(_0x0fcf('0x9'));var client=jayson[_0x0fcf('0xa')][_0x0fcf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x61bbb9,_0x2dfdf8,_0x50c575){return new BPromise(function(_0x1388d1,_0x6ced94){return client[_0x0fcf('0xc')](_0x61bbb9,_0x50c575)['then'](function(_0x69a840){logger[_0x0fcf('0xd')](_0x0fcf('0xe'),_0x2dfdf8,'request\x20sent');logger[_0x0fcf('0xf')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x2dfdf8,_0x0fcf('0x10'),JSON[_0x0fcf('0x11')](_0x69a840));if(_0x69a840[_0x0fcf('0x12')]){if(_0x69a840['error']['code']===0x1f4){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x6ced94(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x1388d1(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}else{logger['info'](_0x0fcf('0xe'),_0x2dfdf8,_0x0fcf('0x10'));_0x1388d1(_0x69a840[_0x0fcf('0x14')][_0x0fcf('0x13')]);}})['catch'](function(_0x3e78d0){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x3e78d0);_0x6ced94(_0x3e78d0);});});}
\ No newline at end of file
+var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x53ec,0x192));var _0xc53e=function(_0x5eb874,_0x3d849f){_0x5eb874=_0x5eb874-0x0;var _0x5bbbd0=_0x53ec[_0x5eb874];return _0x5bbbd0;};'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')]('FreshsalesField,\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
index b82b25f..c1c8044 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(_0x15f80e,_0x28a721){var _0x4c8a21=function(_0x41a484){while(--_0x41a484){_0x15f80e['push'](_0x15f80e['shift']());}};_0x4c8a21(++_0x28a721);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x36a2bc,_0x65dd9c){var _0x3ad001=function(_0x167444){while(--_0x167444){_0x36a2bc['push'](_0x36a2bc['shift']());}};_0x3ad001(++_0x65dd9c);}(_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
index bb112a0..133ae35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd94d=['integrationTab','newTab','exports','STRING','username'];(function(_0x4ff00c,_0x7e938b){var _0x5dca5d=function(_0x3a18b6){while(--_0x3a18b6){_0x4ff00c['push'](_0x4ff00c['shift']());}};_0x5dca5d(++_0x7e938b);}(_0xd94d,0x16f));var _0xdd94=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd94d[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require('sequelize');module[_0xdd94('0x0')]={'name':{'type':Sequelize[_0xdd94('0x1')]},'description':{'type':Sequelize[_0xdd94('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xdd94('0x2')},'remoteUri':{'type':Sequelize[_0xdd94('0x1')]},'password':{'type':Sequelize[_0xdd94('0x1')]},'clientId':{'type':Sequelize[_0xdd94('0x1')]},'clientSecret':{'type':Sequelize[_0xdd94('0x1')]},'securityToken':{'type':Sequelize[_0xdd94('0x1')]},'serverUrl':{'type':Sequelize[_0xdd94('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xdd94('0x3'),_0xdd94('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x6d5c=['exports','STRING','username','integrationTab','newTab','sequelize'];(function(_0xb2538f,_0x38f6e5){var _0x56218d=function(_0x1e8b0e){while(--_0x1e8b0e){_0xb2538f['push'](_0xb2538f['shift']());}};_0x56218d(++_0x38f6e5);}(_0x6d5c,0x179));var _0xc6d5=function(_0x4289e1,_0x5bc129){_0x4289e1=_0x4289e1-0x0;var _0x14c878=_0x6d5c[_0x4289e1];return _0x14c878;};'use strict';var Sequelize=require(_0xc6d5('0x0'));module[_0xc6d5('0x1')]={'name':{'type':Sequelize[_0xc6d5('0x2')]},'description':{'type':Sequelize[_0xc6d5('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xc6d5('0x3')},'remoteUri':{'type':Sequelize[_0xc6d5('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xc6d5('0x2')]},'clientSecret':{'type':Sequelize[_0xc6d5('0x2')]},'securityToken':{'type':Sequelize[_0xc6d5('0x2')]},'serverUrl':{'type':Sequelize[_0xc6d5('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xc6d5('0x4'),_0xc6d5('0x5')),'defaultValue':_0xc6d5('0x4')}};
\ No newline at end of file
index f884ab1..175c953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b6=['includes','label','custom','picklistValues','value','True','true','False','false','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','send','index','map','SalesforceAccount','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filters','pick','filter','where','type','VIRTUAL','name','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','length','merge','find','create','body','destroy','params','SalesforceConfiguration','order','options','getConfigurations','addConfiguration','findOne','Subjects','getSubjects','Descriptions','SalesforceField','getFields','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','boolean','email','textarea','phone','remove'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0x12b6,0x10b));var _0x612b=function(_0x19e5f2,_0x14c05c){_0x19e5f2=_0x19e5f2-0x0;var _0x1241cf=_0x12b6[_0x19e5f2];return _0x1241cf;};'use strict';var emlformat=require(_0x612b('0x0'));var rimraf=require(_0x612b('0x1'));var zipdir=require(_0x612b('0x2'));var jsonpatch=require(_0x612b('0x3'));var rp=require(_0x612b('0x4'));var moment=require(_0x612b('0x5'));var BPromise=require(_0x612b('0x6'));var Mustache=require('mustache');var util=require(_0x612b('0x7'));var path=require('path');var sox=require(_0x612b('0x8'));var csv=require(_0x612b('0x9'));var ejs=require(_0x612b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x612b('0xb'));var squel=require('squel');var crypto=require(_0x612b('0xc'));var jsforce=require(_0x612b('0xd'));var deskjs=require(_0x612b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x612b('0xf'));var Papa=require(_0x612b('0x10'));var Redis=require(_0x612b('0x11'));var authService=require(_0x612b('0x12'));var qs=require(_0x612b('0x13'));var as=require(_0x612b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x612b('0x15'));var utils=require('../../config/utils');var config=require(_0x612b('0x16'));var licenseUtil=require(_0x612b('0x17'));var db=require(_0x612b('0x18'))['db'];var integrations=require(_0x612b('0x19'));function respondWithStatusCode(_0x173e04,_0x5096fa){_0x5096fa=_0x5096fa||0xcc;return function(_0x28f12c){if(_0x28f12c){return _0x173e04['sendStatus'](_0x5096fa);}return _0x173e04[_0x612b('0x1a')](_0x5096fa)[_0x612b('0x1b')]();};}function respondWithResult(_0x3abc9b,_0x39c95d){_0x39c95d=_0x39c95d||0xc8;return function(_0x595bd3){if(_0x595bd3){return _0x3abc9b[_0x612b('0x1a')](_0x39c95d)[_0x612b('0x1c')](_0x595bd3);}};}function respondWithFilteredResult(_0x2a7df9,_0x2c66ff){return function(_0x5b04aa){if(_0x5b04aa){var _0x597edc=typeof _0x2c66ff[_0x612b('0x1d')]===_0x612b('0x1e')&&typeof _0x2c66ff[_0x612b('0x1f')]===_0x612b('0x1e');var _0x5f1c38=_0x5b04aa[_0x612b('0x20')];var _0x26d08a=_0x597edc?0x0:_0x2c66ff[_0x612b('0x1d')];var _0x1805e3=_0x597edc?_0x5b04aa['count']:_0x2c66ff[_0x612b('0x1d')]+_0x2c66ff[_0x612b('0x1f')];var _0x14e35e;if(_0x1805e3>=_0x5f1c38){_0x1805e3=_0x5f1c38;_0x14e35e=0xc8;}else{_0x14e35e=0xce;}_0x2a7df9['status'](_0x14e35e);return _0x2a7df9[_0x612b('0x21')](_0x612b('0x22'),_0x26d08a+'-'+_0x1805e3+'/'+_0x5f1c38)['json'](_0x5b04aa);}return null;};}function patchUpdates(_0x4ffb57){return function(_0x31d8a5){try{jsonpatch['apply'](_0x31d8a5,_0x4ffb57,!![]);}catch(_0x56f80b){return BPromise[_0x612b('0x23')](_0x56f80b);}return _0x31d8a5[_0x612b('0x24')]();};}function saveUpdates(_0x283f5e,_0xb33edb){return function(_0x843533){if(_0x843533){return _0x843533[_0x612b('0x25')](_0x283f5e)[_0x612b('0x26')](function(_0x41f08d){return _0x41f08d;});}return null;};}function removeEntity(_0x1f085c,_0x2d8efc){return function(_0x2b9c14){if(_0x2b9c14){return _0x2b9c14['destroy']()[_0x612b('0x26')](function(){_0x1f085c[_0x612b('0x1a')](0xcc)[_0x612b('0x1b')]();});}};}function handleEntityNotFound(_0x4e4f32,_0x56b55d){return function(_0x2d4b49){if(!_0x2d4b49){_0x4e4f32['sendStatus'](0x194);}return _0x2d4b49;};}function handleError(_0x3e1a8e,_0x265776){_0x265776=_0x265776||0x1f4;return function(_0xad25d1){logger[_0x612b('0x27')](_0xad25d1['stack']);if(_0xad25d1['name']){delete _0xad25d1['name'];}_0x3e1a8e['status'](_0x265776)[_0x612b('0x28')](_0xad25d1);};}exports[_0x612b('0x29')]=function(_0x1a1e11,_0x4a89ea){var _0x4aebfb={},_0x1b146c={},_0x41e1ac={'count':0x0,'rows':[]};var _0x51fcb1=_[_0x612b('0x2a')](db[_0x612b('0x2b')]['rawAttributes'],function(_0x58bc3d){return{'name':_0x58bc3d['fieldName'],'type':_0x58bc3d['type'][_0x612b('0x2c')]};});_0x1b146c[_0x612b('0x2d')]=_[_0x612b('0x2a')](_0x51fcb1,'name');_0x1b146c[_0x612b('0x2e')]=_['keys'](_0x1a1e11[_0x612b('0x2e')]);_0x1b146c['filters']=_[_0x612b('0x2f')](_0x1b146c[_0x612b('0x2d')],_0x1b146c[_0x612b('0x2e')]);_0x4aebfb[_0x612b('0x30')]=_[_0x612b('0x2f')](_0x1b146c[_0x612b('0x2d')],qs['fields'](_0x1a1e11[_0x612b('0x2e')][_0x612b('0x31')]));_0x4aebfb[_0x612b('0x30')]=_0x4aebfb['attributes']['length']?_0x4aebfb['attributes']:_0x1b146c['model'];if(!_0x1a1e11[_0x612b('0x2e')][_0x612b('0x32')](_0x612b('0x33'))){_0x4aebfb[_0x612b('0x1f')]=qs[_0x612b('0x1f')](_0x1a1e11['query'][_0x612b('0x1f')]);_0x4aebfb[_0x612b('0x1d')]=qs['offset'](_0x1a1e11[_0x612b('0x2e')][_0x612b('0x1d')]);}_0x4aebfb['order']=qs[_0x612b('0x34')](_0x1a1e11[_0x612b('0x2e')]['sort']);_0x4aebfb['where']=qs[_0x612b('0x35')](_[_0x612b('0x36')](_0x1a1e11['query'],_0x1b146c[_0x612b('0x35')]),_0x51fcb1);if(_0x1a1e11[_0x612b('0x2e')][_0x612b('0x37')]){_0x4aebfb[_0x612b('0x38')]=_['merge'](_0x4aebfb[_0x612b('0x38')],{'$or':_[_0x612b('0x2a')](_0x51fcb1,function(_0x371cfb){if(_0x371cfb[_0x612b('0x39')]!==_0x612b('0x3a')){var _0x110776={};_0x110776[_0x371cfb[_0x612b('0x3b')]]={'$like':'%'+_0x1a1e11[_0x612b('0x2e')]['filter']+'%'};return _0x110776;}})});}_0x4aebfb=_['merge']({},_0x4aebfb,_0x1a1e11['options']);var _0x425ead={'where':_0x4aebfb[_0x612b('0x38')]};return db[_0x612b('0x2b')]['count'](_0x425ead)[_0x612b('0x26')](function(_0x2bf22a){_0x41e1ac['count']=_0x2bf22a;if(_0x1a1e11[_0x612b('0x2e')][_0x612b('0x3c')]){_0x4aebfb[_0x612b('0x3d')]=[{'all':!![]}];}return db[_0x612b('0x2b')][_0x612b('0x3e')](_0x4aebfb);})[_0x612b('0x26')](function(_0x587270){_0x41e1ac[_0x612b('0x3f')]=_0x587270;return _0x41e1ac;})[_0x612b('0x26')](respondWithFilteredResult(_0x4a89ea,_0x4aebfb))[_0x612b('0x40')](handleError(_0x4a89ea,null));};exports[_0x612b('0x41')]=function(_0x57bda9,_0x5ef3c1){var _0x451ba2={'raw':![],'where':{'id':_0x57bda9['params']['id']}},_0x2b1de3={};_0x2b1de3[_0x612b('0x2d')]=_[_0x612b('0x42')](db[_0x612b('0x2b')][_0x612b('0x43')]);_0x2b1de3[_0x612b('0x2e')]=_[_0x612b('0x42')](_0x57bda9[_0x612b('0x2e')]);_0x2b1de3['filters']=_[_0x612b('0x2f')](_0x2b1de3['model'],_0x2b1de3['query']);_0x451ba2['attributes']=_['intersection'](_0x2b1de3[_0x612b('0x2d')],qs['fields'](_0x57bda9[_0x612b('0x2e')]['fields']));_0x451ba2[_0x612b('0x30')]=_0x451ba2['attributes'][_0x612b('0x44')]?_0x451ba2[_0x612b('0x30')]:_0x2b1de3['model'];if(_0x57bda9[_0x612b('0x2e')][_0x612b('0x3c')]){_0x451ba2[_0x612b('0x3d')]=[{'all':!![]}];}_0x451ba2=_[_0x612b('0x45')]({},_0x451ba2,_0x57bda9['options']);return db[_0x612b('0x2b')][_0x612b('0x46')](_0x451ba2)[_0x612b('0x26')](handleEntityNotFound(_0x5ef3c1,null))[_0x612b('0x26')](respondWithResult(_0x5ef3c1,null))[_0x612b('0x40')](handleError(_0x5ef3c1,null));};exports[_0x612b('0x47')]=function(_0x38d33b,_0x37a08f){return db['SalesforceAccount']['create'](_0x38d33b[_0x612b('0x48')],{})[_0x612b('0x26')](respondWithResult(_0x37a08f,0xc9))['catch'](handleError(_0x37a08f,null));};exports[_0x612b('0x25')]=function(_0x130411,_0x3e7c94){if(_0x130411[_0x612b('0x48')]['id']){delete _0x130411[_0x612b('0x48')]['id'];}return db[_0x612b('0x2b')][_0x612b('0x46')]({'where':{'id':_0x130411['params']['id']}})['then'](handleEntityNotFound(_0x3e7c94,null))['then'](saveUpdates(_0x130411[_0x612b('0x48')],null))['then'](respondWithResult(_0x3e7c94,null))[_0x612b('0x40')](handleError(_0x3e7c94,null));};exports[_0x612b('0x49')]=function(_0x44e1dd,_0x4c772d){return db[_0x612b('0x2b')]['find']({'where':{'id':_0x44e1dd[_0x612b('0x4a')]['id']}})[_0x612b('0x26')](handleEntityNotFound(_0x4c772d,null))['then'](removeEntity(_0x4c772d,null))['catch'](handleError(_0x4c772d,null));};exports['getConfigurations']=function(_0x552704,_0x5829d8,_0x27fbc8){var _0x4d5388={};var _0x24350e={};var _0x1ef483;var _0x352424;return db[_0x612b('0x2b')]['findOne']({'where':{'id':_0x552704['params']['id']}})[_0x612b('0x26')](handleEntityNotFound(_0x5829d8,null))[_0x612b('0x26')](function(_0x117636){if(_0x117636){_0x1ef483=_0x117636;_0x24350e[_0x612b('0x2d')]=_[_0x612b('0x42')](db[_0x612b('0x4b')][_0x612b('0x43')]);_0x24350e['query']=_['keys'](_0x552704['query']);_0x24350e['filters']=_[_0x612b('0x2f')](_0x24350e[_0x612b('0x2d')],_0x24350e[_0x612b('0x2e')]);_0x4d5388['attributes']=_['intersection'](_0x24350e[_0x612b('0x2d')],qs['fields'](_0x552704[_0x612b('0x2e')][_0x612b('0x31')]));_0x4d5388[_0x612b('0x30')]=_0x4d5388[_0x612b('0x30')]['length']?_0x4d5388[_0x612b('0x30')]:_0x24350e[_0x612b('0x2d')];_0x4d5388[_0x612b('0x4c')]=qs['sort'](_0x552704[_0x612b('0x2e')][_0x612b('0x34')]);_0x4d5388[_0x612b('0x38')]=qs[_0x612b('0x35')](_['pick'](_0x552704[_0x612b('0x2e')],_0x24350e[_0x612b('0x35')]));if(_0x552704[_0x612b('0x2e')]['filter']){_0x4d5388[_0x612b('0x38')]=_[_0x612b('0x45')](_0x4d5388[_0x612b('0x38')],{'$or':_[_0x612b('0x2a')](_0x4d5388[_0x612b('0x30')],function(_0x495a09){var _0x38a54b={};_0x38a54b[_0x495a09]={'$like':'%'+_0x552704[_0x612b('0x2e')][_0x612b('0x37')]+'%'};return _0x38a54b;})});}_0x4d5388=_[_0x612b('0x45')]({},_0x4d5388,_0x552704[_0x612b('0x4d')]);return _0x1ef483[_0x612b('0x4e')](_0x4d5388);}})['then'](function(_0x236c57){if(_0x236c57){_0x352424=_0x236c57['length'];if(!_0x552704['query'][_0x612b('0x32')](_0x612b('0x33'))){_0x4d5388[_0x612b('0x1f')]=qs[_0x612b('0x1f')](_0x552704['query']['limit']);_0x4d5388['offset']=qs[_0x612b('0x1d')](_0x552704[_0x612b('0x2e')]['offset']);}return _0x1ef483[_0x612b('0x4e')](_0x4d5388);}})[_0x612b('0x26')](function(_0x149485){if(_0x149485){return _0x149485?{'count':_0x352424,'rows':_0x149485}:null;}})[_0x612b('0x26')](respondWithResult(_0x5829d8,null))[_0x612b('0x40')](handleError(_0x5829d8,null));};exports[_0x612b('0x4f')]=function(_0x30051c,_0x1543fc,_0x122113){if(_0x30051c['body']['id']){delete _0x30051c[_0x612b('0x48')]['id'];}return db[_0x612b('0x2b')][_0x612b('0x50')]({'where':{'id':_0x30051c[_0x612b('0x4a')]['id']}})[_0x612b('0x26')](handleEntityNotFound(_0x1543fc,null))[_0x612b('0x26')](function(_0x329f9e){if(_0x329f9e){_0x30051c[_0x612b('0x48')]['AccountId']=_0x329f9e['id'];_0x30051c[_0x612b('0x48')][_0x612b('0x51')]=integrations[_0x612b('0x52')](_0x30051c[_0x612b('0x48')]['channel'],_0x30051c['body'][_0x612b('0x39')]);_0x30051c['body'][_0x612b('0x53')]=integrations['getDescriptions'](_0x30051c['body']['channel'],_0x30051c[_0x612b('0x48')][_0x612b('0x39')]);return db[_0x612b('0x4b')]['create'](_0x30051c[_0x612b('0x48')],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db[_0x612b('0x54')],'as':'Descriptions'}]});}return null;})[_0x612b('0x26')](respondWithResult(_0x1543fc,null))[_0x612b('0x40')](handleError(_0x1543fc,null));};exports[_0x612b('0x55')]=function(_0x53dcd6,_0x45a108,_0x418970){var _0x554526;var _0x33d62f='';var _0x59aab2='Task';return db[_0x612b('0x2b')][_0x612b('0x50')]({'where':{'id':_0x53dcd6[_0x612b('0x4a')]['id']},'attributes':['id',_0x612b('0x56'),_0x612b('0x57'),_0x612b('0x58'),_0x612b('0x59'),_0x612b('0x5a'),_0x612b('0x5b')]})['then'](handleEntityNotFound(_0x45a108,null))[_0x612b('0x26')](function(_0x3f67fe){if(_0x3f67fe){_0x33d62f=_0x3f67fe[_0x612b('0x56')];var _0x2530f0=_0x33d62f[_0x612b('0x5c')](-0x1);if(_0x2530f0==='/'){_0x33d62f=_0x33d62f[_0x612b('0x5d')](0x0,_0x33d62f[_0x612b('0x5e')](_0x2530f0));}_0x554526=new jsforce[(_0x612b('0x5f'))]({'oauth2':{'loginUrl':_0x33d62f,'clientId':_0x3f67fe[_0x612b('0x57')],'clientSecret':_0x3f67fe[_0x612b('0x58')]}});return _0x554526[_0x612b('0x60')](_0x3f67fe[_0x612b('0x59')],_0x3f67fe[_0x612b('0x5a')][_0x612b('0x61')](_0x3f67fe['securityToken']));}})[_0x612b('0x26')](function(_0x5e1c78){if(_0x5e1c78){if(!_[_0x612b('0x62')](_0x53dcd6[_0x612b('0x2e')][_0x612b('0x63')])){_0x59aab2=_0x53dcd6[_0x612b('0x2e')]['ticketType'];}return _0x554526[_0x612b('0x64')](_0x59aab2)[_0x612b('0x65')]();}})[_0x612b('0x26')](function(_0x1311c0){var _0x1929c6=[_0x612b('0x66'),_0x612b('0x67'),_0x612b('0x68'),_0x612b('0x69'),_0x612b('0x6a'),_0x612b('0x6b')];var _0x41cf0e=[_0x612b('0x6c'),'int','picklist',_0x612b('0x6d'),_0x612b('0x6e'),_0x612b('0x6f'),_0x612b('0x70')];if(_0x1311c0){_[_0x612b('0x71')](_0x1311c0[_0x612b('0x31')],function(_0x3fb290){return _0x1929c6[_0x612b('0x72')](_0x3fb290['name'])||!_0x41cf0e['includes'](_0x3fb290[_0x612b('0x39')]);});return{'count':_0x1311c0[_0x612b('0x31')][_0x612b('0x44')],'rows':_[_0x612b('0x2a')](_0x1311c0[_0x612b('0x31')],function(_0x1cd979){return{'id':_0x1cd979[_0x612b('0x3b')],'name':_0x1cd979[_0x612b('0x73')],'custom':_0x1cd979[_0x612b('0x74')],'options':_0x1cd979[_0x612b('0x75')][_0x612b('0x44')]>0x0?_[_0x612b('0x2a')](_0x1cd979[_0x612b('0x75')],function(_0x50a8b3){return{'name':_0x50a8b3[_0x612b('0x73')],'value':_0x50a8b3[_0x612b('0x76')]};}):_0x1cd979[_0x612b('0x39')]==_0x612b('0x6d')?[{'name':_0x612b('0x77'),'value':_0x612b('0x78')},{'name':_0x612b('0x79'),'value':_0x612b('0x7a')}]:[]};})};}})['then'](respondWithResult(_0x45a108,null))[_0x612b('0x40')](function(_0x3f83f0){var _0x2d73b4=_0x53dcd6['query'][_0x612b('0x7b')]?0x1f4:_0x3f83f0['statusCode']||0x1f4;logger['error'](_0x612b('0x7c'),_0x612b('0x55'),_0x2d73b4,JSON['stringify'](_0x3f83f0));delete _0x3f83f0[_0x612b('0x3b')];if(_0x2d73b4===0x191){_0x2d73b4=0x190;}_0x45a108[_0x612b('0x1a')](_0x2d73b4)[_0x612b('0x28')](_0x53dcd6[_0x612b('0x2e')][_0x612b('0x7b')]?{'message':_0x612b('0x7d'),'statusCode':_0x3f83f0[_0x612b('0x7e')]}:_0x3f83f0);});};
\ No newline at end of file
+var _0xcc3e=['False','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','SalesforceAccount','create','body','update','find','params','getConfigurations','findOne','SalesforceConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','username','securityToken','slice','lastIndexOf','Connection','concat','ticketType','sobject','describe','OwnerId','ActivityDate','Subject','string','int','picklist','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true'];(function(_0xaff6d7,_0x2b5aaa){var _0x1c865c=function(_0x3e24ca){while(--_0x3e24ca){_0xaff6d7['push'](_0xaff6d7['shift']());}};_0x1c865c(++_0x2b5aaa);}(_0xcc3e,0xf1));var _0xecc3=function(_0x4126da,_0x16324f){_0x4126da=_0x4126da-0x0;var _0x105559=_0xcc3e[_0x4126da];return _0x105559;};'use strict';var emlformat=require(_0xecc3('0x0'));var rimraf=require(_0xecc3('0x1'));var zipdir=require(_0xecc3('0x2'));var jsonpatch=require(_0xecc3('0x3'));var rp=require(_0xecc3('0x4'));var moment=require(_0xecc3('0x5'));var BPromise=require(_0xecc3('0x6'));var Mustache=require(_0xecc3('0x7'));var util=require(_0xecc3('0x8'));var path=require(_0xecc3('0x9'));var sox=require(_0xecc3('0xa'));var csv=require('to-csv');var ejs=require(_0xecc3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xecc3('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xecc3('0xd'));var querystring=require(_0xecc3('0xe'));var Papa=require(_0xecc3('0xf'));var Redis=require(_0xecc3('0x10'));var authService=require(_0xecc3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xecc3('0x12'));var hardwareService=require(_0xecc3('0x13'));var logger=require(_0xecc3('0x14'))('api');var utils=require(_0xecc3('0x15'));var config=require(_0xecc3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xecc3('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xd4e0af,_0x428dd0){_0x428dd0=_0x428dd0||0xcc;return function(_0x21c823){if(_0x21c823){return _0xd4e0af[_0xecc3('0x18')](_0x428dd0);}return _0xd4e0af[_0xecc3('0x19')](_0x428dd0)[_0xecc3('0x1a')]();};}function respondWithResult(_0x2c11d7,_0x50b5a6){_0x50b5a6=_0x50b5a6||0xc8;return function(_0x2e5b0b){if(_0x2e5b0b){return _0x2c11d7['status'](_0x50b5a6)[_0xecc3('0x1b')](_0x2e5b0b);}};}function respondWithFilteredResult(_0x53cf23,_0xd5e32c){return function(_0x317bf6){if(_0x317bf6){var _0x5c4a11=typeof _0xd5e32c[_0xecc3('0x1c')]===_0xecc3('0x1d')&&typeof _0xd5e32c[_0xecc3('0x1e')]===_0xecc3('0x1d');var _0x27d1ef=_0x317bf6[_0xecc3('0x1f')];var _0xaff3e1=_0x5c4a11?0x0:_0xd5e32c[_0xecc3('0x1c')];var _0x4fbf81=_0x5c4a11?_0x317bf6[_0xecc3('0x1f')]:_0xd5e32c[_0xecc3('0x1c')]+_0xd5e32c['limit'];var _0x30f0d3;if(_0x4fbf81>=_0x27d1ef){_0x4fbf81=_0x27d1ef;_0x30f0d3=0xc8;}else{_0x30f0d3=0xce;}_0x53cf23['status'](_0x30f0d3);return _0x53cf23[_0xecc3('0x20')]('Content-Range',_0xaff3e1+'-'+_0x4fbf81+'/'+_0x27d1ef)[_0xecc3('0x1b')](_0x317bf6);}return null;};}function patchUpdates(_0x6c94ad){return function(_0xc2e424){try{jsonpatch['apply'](_0xc2e424,_0x6c94ad,!![]);}catch(_0x357e5d){return BPromise['reject'](_0x357e5d);}return _0xc2e424['save']();};}function saveUpdates(_0x5c4cdb,_0x6a4389){return function(_0x572076){if(_0x572076){return _0x572076['update'](_0x5c4cdb)['then'](function(_0x486f69){return _0x486f69;});}return null;};}function removeEntity(_0x62e5ed,_0x568e18){return function(_0x262110){if(_0x262110){return _0x262110[_0xecc3('0x21')]()[_0xecc3('0x22')](function(){_0x62e5ed['status'](0xcc)[_0xecc3('0x1a')]();});}};}function handleEntityNotFound(_0x1bda90,_0x4bfbf4){return function(_0x44a98b){if(!_0x44a98b){_0x1bda90[_0xecc3('0x18')](0x194);}return _0x44a98b;};}function handleError(_0x54144b,_0x57b9d0){_0x57b9d0=_0x57b9d0||0x1f4;return function(_0x5c00f8){logger[_0xecc3('0x23')](_0x5c00f8[_0xecc3('0x24')]);if(_0x5c00f8[_0xecc3('0x25')]){delete _0x5c00f8[_0xecc3('0x25')];}_0x54144b['status'](_0x57b9d0)[_0xecc3('0x26')](_0x5c00f8);};}exports[_0xecc3('0x27')]=function(_0x4550c9,_0x2f335f){var _0x170377={},_0x552e04={},_0xfa0529={'count':0x0,'rows':[]};var _0x28d5cf=_['map'](db['SalesforceAccount'][_0xecc3('0x28')],function(_0x36a517){return{'name':_0x36a517[_0xecc3('0x29')],'type':_0x36a517[_0xecc3('0x2a')][_0xecc3('0x2b')]};});_0x552e04[_0xecc3('0x2c')]=_[_0xecc3('0x2d')](_0x28d5cf,'name');_0x552e04[_0xecc3('0x2e')]=_[_0xecc3('0x2f')](_0x4550c9['query']);_0x552e04['filters']=_[_0xecc3('0x30')](_0x552e04['model'],_0x552e04[_0xecc3('0x2e')]);_0x170377[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x552e04[_0xecc3('0x2c')],qs[_0xecc3('0x32')](_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x32')]));_0x170377[_0xecc3('0x31')]=_0x170377[_0xecc3('0x31')][_0xecc3('0x33')]?_0x170377[_0xecc3('0x31')]:_0x552e04[_0xecc3('0x2c')];if(!_0x4550c9[_0xecc3('0x2e')]['hasOwnProperty'](_0xecc3('0x34'))){_0x170377[_0xecc3('0x1e')]=qs[_0xecc3('0x1e')](_0x4550c9['query'][_0xecc3('0x1e')]);_0x170377[_0xecc3('0x1c')]=qs[_0xecc3('0x1c')](_0x4550c9[_0xecc3('0x2e')]['offset']);}_0x170377[_0xecc3('0x35')]=qs[_0xecc3('0x36')](_0x4550c9[_0xecc3('0x2e')]['sort']);_0x170377[_0xecc3('0x37')]=qs[_0xecc3('0x38')](_[_0xecc3('0x39')](_0x4550c9[_0xecc3('0x2e')],_0x552e04[_0xecc3('0x38')]),_0x28d5cf);if(_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3a')]){_0x170377['where']=_[_0xecc3('0x3b')](_0x170377[_0xecc3('0x37')],{'$or':_[_0xecc3('0x2d')](_0x28d5cf,function(_0x287a7a){if(_0x287a7a[_0xecc3('0x2a')]!==_0xecc3('0x3c')){var _0x3ecd4b={};_0x3ecd4b[_0x287a7a['name']]={'$like':'%'+_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3a')]+'%'};return _0x3ecd4b;}})});}_0x170377=_[_0xecc3('0x3b')]({},_0x170377,_0x4550c9[_0xecc3('0x3d')]);var _0x459a40={'where':_0x170377['where']};return db['SalesforceAccount'][_0xecc3('0x1f')](_0x459a40)[_0xecc3('0x22')](function(_0x1a43e7){_0xfa0529[_0xecc3('0x1f')]=_0x1a43e7;if(_0x4550c9[_0xecc3('0x2e')][_0xecc3('0x3e')]){_0x170377[_0xecc3('0x3f')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xecc3('0x40')](_0x170377);})[_0xecc3('0x22')](function(_0x310fa9){_0xfa0529['rows']=_0x310fa9;return _0xfa0529;})[_0xecc3('0x22')](respondWithFilteredResult(_0x2f335f,_0x170377))[_0xecc3('0x41')](handleError(_0x2f335f,null));};exports['show']=function(_0x461172,_0x433b25){var _0xe0c035={'raw':![],'where':{'id':_0x461172['params']['id']}},_0x558b2f={};_0x558b2f['model']=_[_0xecc3('0x2f')](db[_0xecc3('0x42')][_0xecc3('0x28')]);_0x558b2f['query']=_[_0xecc3('0x2f')](_0x461172[_0xecc3('0x2e')]);_0x558b2f[_0xecc3('0x38')]=_[_0xecc3('0x30')](_0x558b2f[_0xecc3('0x2c')],_0x558b2f[_0xecc3('0x2e')]);_0xe0c035[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x558b2f[_0xecc3('0x2c')],qs['fields'](_0x461172['query']['fields']));_0xe0c035[_0xecc3('0x31')]=_0xe0c035[_0xecc3('0x31')]['length']?_0xe0c035['attributes']:_0x558b2f[_0xecc3('0x2c')];if(_0x461172[_0xecc3('0x2e')][_0xecc3('0x3e')]){_0xe0c035[_0xecc3('0x3f')]=[{'all':!![]}];}_0xe0c035=_[_0xecc3('0x3b')]({},_0xe0c035,_0x461172[_0xecc3('0x3d')]);return db[_0xecc3('0x42')]['find'](_0xe0c035)[_0xecc3('0x22')](handleEntityNotFound(_0x433b25,null))['then'](respondWithResult(_0x433b25,null))[_0xecc3('0x41')](handleError(_0x433b25,null));};exports[_0xecc3('0x43')]=function(_0x1659ad,_0x4cdc90){return db[_0xecc3('0x42')]['create'](_0x1659ad[_0xecc3('0x44')],{})['then'](respondWithResult(_0x4cdc90,0xc9))['catch'](handleError(_0x4cdc90,null));};exports[_0xecc3('0x45')]=function(_0x23eeb0,_0x51d78f){if(_0x23eeb0['body']['id']){delete _0x23eeb0[_0xecc3('0x44')]['id'];}return db[_0xecc3('0x42')][_0xecc3('0x46')]({'where':{'id':_0x23eeb0[_0xecc3('0x47')]['id']}})['then'](handleEntityNotFound(_0x51d78f,null))['then'](saveUpdates(_0x23eeb0['body'],null))['then'](respondWithResult(_0x51d78f,null))[_0xecc3('0x41')](handleError(_0x51d78f,null));};exports[_0xecc3('0x21')]=function(_0x59055f,_0x2d0f08){return db[_0xecc3('0x42')][_0xecc3('0x46')]({'where':{'id':_0x59055f[_0xecc3('0x47')]['id']}})[_0xecc3('0x22')](handleEntityNotFound(_0x2d0f08,null))[_0xecc3('0x22')](removeEntity(_0x2d0f08,null))[_0xecc3('0x41')](handleError(_0x2d0f08,null));};exports[_0xecc3('0x48')]=function(_0x1486b2,_0x17a8bb,_0x301209){var _0x1e98a3={};var _0x2eb0fd={};var _0x3f065f;var _0x3f5ffb;return db[_0xecc3('0x42')][_0xecc3('0x49')]({'where':{'id':_0x1486b2[_0xecc3('0x47')]['id']}})['then'](handleEntityNotFound(_0x17a8bb,null))['then'](function(_0x56b143){if(_0x56b143){_0x3f065f=_0x56b143;_0x2eb0fd[_0xecc3('0x2c')]=_[_0xecc3('0x2f')](db[_0xecc3('0x4a')][_0xecc3('0x28')]);_0x2eb0fd[_0xecc3('0x2e')]=_[_0xecc3('0x2f')](_0x1486b2[_0xecc3('0x2e')]);_0x2eb0fd[_0xecc3('0x38')]=_[_0xecc3('0x30')](_0x2eb0fd[_0xecc3('0x2c')],_0x2eb0fd[_0xecc3('0x2e')]);_0x1e98a3[_0xecc3('0x31')]=_[_0xecc3('0x30')](_0x2eb0fd[_0xecc3('0x2c')],qs[_0xecc3('0x32')](_0x1486b2['query'][_0xecc3('0x32')]));_0x1e98a3[_0xecc3('0x31')]=_0x1e98a3[_0xecc3('0x31')][_0xecc3('0x33')]?_0x1e98a3['attributes']:_0x2eb0fd[_0xecc3('0x2c')];_0x1e98a3[_0xecc3('0x35')]=qs[_0xecc3('0x36')](_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x36')]);_0x1e98a3['where']=qs[_0xecc3('0x38')](_[_0xecc3('0x39')](_0x1486b2[_0xecc3('0x2e')],_0x2eb0fd[_0xecc3('0x38')]));if(_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x3a')]){_0x1e98a3['where']=_[_0xecc3('0x3b')](_0x1e98a3[_0xecc3('0x37')],{'$or':_[_0xecc3('0x2d')](_0x1e98a3[_0xecc3('0x31')],function(_0x5c0405){var _0x28aad0={};_0x28aad0[_0x5c0405]={'$like':'%'+_0x1486b2[_0xecc3('0x2e')]['filter']+'%'};return _0x28aad0;})});}_0x1e98a3=_[_0xecc3('0x3b')]({},_0x1e98a3,_0x1486b2['options']);return _0x3f065f[_0xecc3('0x48')](_0x1e98a3);}})[_0xecc3('0x22')](function(_0x86f724){if(_0x86f724){_0x3f5ffb=_0x86f724['length'];if(!_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x4b')]('nolimit')){_0x1e98a3[_0xecc3('0x1e')]=qs['limit'](_0x1486b2[_0xecc3('0x2e')][_0xecc3('0x1e')]);_0x1e98a3['offset']=qs[_0xecc3('0x1c')](_0x1486b2['query'][_0xecc3('0x1c')]);}return _0x3f065f['getConfigurations'](_0x1e98a3);}})[_0xecc3('0x22')](function(_0x84d496){if(_0x84d496){return _0x84d496?{'count':_0x3f5ffb,'rows':_0x84d496}:null;}})['then'](respondWithResult(_0x17a8bb,null))[_0xecc3('0x41')](handleError(_0x17a8bb,null));};exports[_0xecc3('0x4c')]=function(_0x3ffe31,_0x231282,_0x54b537){if(_0x3ffe31[_0xecc3('0x44')]['id']){delete _0x3ffe31[_0xecc3('0x44')]['id'];}return db['SalesforceAccount'][_0xecc3('0x49')]({'where':{'id':_0x3ffe31['params']['id']}})[_0xecc3('0x22')](handleEntityNotFound(_0x231282,null))[_0xecc3('0x22')](function(_0x3c3b6a){if(_0x3c3b6a){_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4d')]=_0x3c3b6a['id'];_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4e')]=integrations['getSubjects'](_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4f')],_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x2a')]);_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x50')]=integrations[_0xecc3('0x51')](_0x3ffe31[_0xecc3('0x44')][_0xecc3('0x4f')],_0x3ffe31[_0xecc3('0x44')]['type']);return db[_0xecc3('0x4a')]['create'](_0x3ffe31[_0xecc3('0x44')],{'include':[{'model':db[_0xecc3('0x52')],'as':'Subjects'},{'model':db[_0xecc3('0x52')],'as':_0xecc3('0x50')}]});}return null;})['then'](respondWithResult(_0x231282,null))[_0xecc3('0x41')](handleError(_0x231282,null));};exports[_0xecc3('0x53')]=function(_0x44393b,_0x54fea8,_0x556da3){var _0xad38c6;var _0x406044='';var _0x335603=_0xecc3('0x54');return db[_0xecc3('0x42')][_0xecc3('0x49')]({'where':{'id':_0x44393b['params']['id']},'attributes':['id','remoteUri',_0xecc3('0x55'),_0xecc3('0x56'),_0xecc3('0x57'),'password',_0xecc3('0x58')]})['then'](handleEntityNotFound(_0x54fea8,null))[_0xecc3('0x22')](function(_0x34a3b2){if(_0x34a3b2){_0x406044=_0x34a3b2['remoteUri'];var _0x2d8847=_0x406044[_0xecc3('0x59')](-0x1);if(_0x2d8847==='/'){_0x406044=_0x406044['substring'](0x0,_0x406044[_0xecc3('0x5a')](_0x2d8847));}_0xad38c6=new jsforce[(_0xecc3('0x5b'))]({'oauth2':{'loginUrl':_0x406044,'clientId':_0x34a3b2[_0xecc3('0x55')],'clientSecret':_0x34a3b2[_0xecc3('0x56')]}});return _0xad38c6['login'](_0x34a3b2[_0xecc3('0x57')],_0x34a3b2['password'][_0xecc3('0x5c')](_0x34a3b2[_0xecc3('0x58')]));}})[_0xecc3('0x22')](function(_0x77b967){if(_0x77b967){if(!_['isNil'](_0x44393b[_0xecc3('0x2e')][_0xecc3('0x5d')])){_0x335603=_0x44393b['query']['ticketType'];}return _0xad38c6[_0xecc3('0x5e')](_0x335603)[_0xecc3('0x5f')]();}})[_0xecc3('0x22')](function(_0x45e152){var _0x22114a=[_0xecc3('0x60'),_0xecc3('0x61'),'IsReminderSet','IsRecurrence',_0xecc3('0x62'),'Description'];var _0x3ee092=[_0xecc3('0x63'),_0xecc3('0x64'),_0xecc3('0x65'),_0xecc3('0x66'),_0xecc3('0x67'),_0xecc3('0x68'),_0xecc3('0x69')];if(_0x45e152){_['remove'](_0x45e152[_0xecc3('0x32')],function(_0xaf0964){return _0x22114a[_0xecc3('0x6a')](_0xaf0964[_0xecc3('0x25')])||!_0x3ee092[_0xecc3('0x6a')](_0xaf0964[_0xecc3('0x2a')]);});return{'count':_0x45e152[_0xecc3('0x32')][_0xecc3('0x33')],'rows':_[_0xecc3('0x2d')](_0x45e152['fields'],function(_0xb09e22){return{'id':_0xb09e22[_0xecc3('0x25')],'name':_0xb09e22[_0xecc3('0x6b')],'custom':_0xb09e22[_0xecc3('0x6c')],'options':_0xb09e22[_0xecc3('0x6d')][_0xecc3('0x33')]>0x0?_['map'](_0xb09e22['picklistValues'],function(_0x53eac8){return{'name':_0x53eac8[_0xecc3('0x6b')],'value':_0x53eac8[_0xecc3('0x6e')]};}):_0xb09e22[_0xecc3('0x2a')]==_0xecc3('0x66')?[{'name':_0xecc3('0x6f'),'value':_0xecc3('0x70')},{'name':_0xecc3('0x71'),'value':'false'}]:[]};})};}})[_0xecc3('0x22')](respondWithResult(_0x54fea8,null))[_0xecc3('0x41')](function(_0x20b425){var _0x46235d=_0x44393b[_0xecc3('0x2e')][_0xecc3('0x72')]?0x1f4:_0x20b425['statusCode']||0x1f4;logger[_0xecc3('0x23')](_0xecc3('0x73'),_0xecc3('0x53'),_0x46235d,JSON[_0xecc3('0x74')](_0x20b425));delete _0x20b425[_0xecc3('0x25')];if(_0x46235d===0x191){_0x46235d=0x190;}_0x54fea8[_0xecc3('0x19')](_0x46235d)[_0xecc3('0x26')](_0x44393b[_0xecc3('0x2e')]['test']?{'message':_0xecc3('0x75'),'statusCode':_0x20b425['statusCode']}:_0x20b425);});};
\ No newline at end of file
index 4336152..134974f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf93b=['api','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','int_salesforce_accounts','lodash','util','../../config/logger'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xf93b,0x1d1));var _0xbf93=function(_0x152136,_0x4f14f1){_0x152136=_0x152136-0x0;var _0x20df44=_0xf93b[_0x152136];return _0x20df44;};'use strict';var _=require(_0xbf93('0x0'));var util=require(_0xbf93('0x1'));var logger=require(_0xbf93('0x2'))(_0xbf93('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbf93('0x4'));var fs=require('fs');var path=require(_0xbf93('0x5'));var rimraf=require(_0xbf93('0x6'));var config=require('../../config/environment');var attributes=require(_0xbf93('0x7'));var integrations=require(_0xbf93('0x8'));module[_0xbf93('0x9')]=function(_0x2f1240,_0x69b566){return _0x2f1240[_0xbf93('0xa')]('SalesforceAccount',attributes,{'tableName':_0xbf93('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c12=['request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','exports','int_salesforce_accounts','util','../../config/logger','moment','bluebird'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0x5c12,0x188));var _0x25c1=function(_0x4e21ba,_0x18097f){_0x4e21ba=_0x4e21ba-0x0;var _0x55b94b=_0x5c12[_0x4e21ba];return _0x55b94b;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var logger=require(_0x25c1('0x1'))('api');var moment=require(_0x25c1('0x2'));var BPromise=require(_0x25c1('0x3'));var rp=require(_0x25c1('0x4'));var fs=require('fs');var path=require(_0x25c1('0x5'));var rimraf=require(_0x25c1('0x6'));var config=require(_0x25c1('0x7'));var attributes=require(_0x25c1('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x25c1('0x9')]=function(_0x42ac16,_0x382922){return _0x42ac16['define']('SalesforceAccount',attributes,{'tableName':_0x25c1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c92c25e..8aec268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b68=['then','info','request\x20sent','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','SalesforceAccount','raw','options','where','attributes','limit','include','model','map','GetSalesforceAccount','debug','stringify','catch','ShowSalesforceAccount','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x32534c,_0x16c058){var _0x91d5e3=function(_0x298107){while(--_0x298107){_0x32534c['push'](_0x32534c['shift']());}};_0x91d5e3(++_0x16c058);}(_0x3b68,0xd6));var _0x83b6=function(_0x4c3dce,_0x41569c){_0x4c3dce=_0x4c3dce-0x0;var _0x336720=_0x3b68[_0x4c3dce];return _0x336720;};'use strict';var _=require(_0x83b6('0x0'));var util=require('util');var moment=require(_0x83b6('0x1'));var BPromise=require(_0x83b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x83b6('0x3'))['db'];var utils=require(_0x83b6('0x4'));var logger=require(_0x83b6('0x5'))(_0x83b6('0x6'));var config=require(_0x83b6('0x7'));var jayson=require(_0x83b6('0x8'));var client=jayson['client'][_0x83b6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x117dad,_0x1907e2,_0x1aa9ed){return new BPromise(function(_0x548d25,_0x33013c){return client['request'](_0x117dad,_0x1aa9ed)[_0x83b6('0xa')](function(_0x4a7b08){logger[_0x83b6('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x1907e2,_0x83b6('0xc'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x1907e2,'request\x20sent',JSON['stringify'](_0x4a7b08));if(_0x4a7b08[_0x83b6('0xd')]){if(_0x4a7b08[_0x83b6('0xd')][_0x83b6('0xe')]===0x1f4){logger['error'](_0x83b6('0xf'),_0x1907e2,_0x4a7b08[_0x83b6('0xd')][_0x83b6('0x10')]);return _0x33013c(_0x4a7b08[_0x83b6('0xd')][_0x83b6('0x10')]);}logger[_0x83b6('0xd')](_0x83b6('0xf'),_0x1907e2,_0x4a7b08['error'][_0x83b6('0x10')]);return _0x548d25(_0x4a7b08[_0x83b6('0xd')][_0x83b6('0x10')]);}else{logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x1907e2,_0x83b6('0xc'));_0x548d25(_0x4a7b08[_0x83b6('0x11')][_0x83b6('0x10')]);}})['catch'](function(_0x30d754){logger[_0x83b6('0xd')](_0x83b6('0xf'),_0x1907e2,_0x30d754);_0x33013c(_0x30d754);});});}exports['GetSalesforceAccount']=function(_0x11ecdc){var _0x3c33a7=this;return new Promise(function(_0x345656,_0x38415e){return db[_0x83b6('0x12')]['findAll']({'raw':_0x11ecdc['options']?_0x11ecdc['options'][_0x83b6('0x13')]===undefined?!![]:![]:!![],'where':_0x11ecdc[_0x83b6('0x14')]?_0x11ecdc['options'][_0x83b6('0x15')]||null:null,'attributes':_0x11ecdc['options']?_0x11ecdc[_0x83b6('0x14')][_0x83b6('0x16')]||null:null,'limit':_0x11ecdc[_0x83b6('0x14')]?_0x11ecdc[_0x83b6('0x14')][_0x83b6('0x17')]||null:null,'include':_0x11ecdc[_0x83b6('0x14')]?_0x11ecdc['options'][_0x83b6('0x18')]?_['map'](_0x11ecdc[_0x83b6('0x14')][_0x83b6('0x18')],function(_0x3a4ad2){return{'model':db[_0x3a4ad2[_0x83b6('0x19')]],'as':_0x3a4ad2['as'],'attributes':_0x3a4ad2[_0x83b6('0x16')],'include':_0x3a4ad2[_0x83b6('0x18')]?_[_0x83b6('0x1a')](_0x3a4ad2['include'],function(_0x426f8e){return{'model':db[_0x426f8e[_0x83b6('0x19')]],'as':_0x426f8e['as'],'attributes':_0x426f8e[_0x83b6('0x16')],'include':_0x426f8e[_0x83b6('0x18')]?_[_0x83b6('0x1a')](_0x426f8e[_0x83b6('0x18')],function(_0x3d7cf8){return{'model':db[_0x3d7cf8[_0x83b6('0x19')]],'as':_0x3d7cf8['as'],'attributes':_0x3d7cf8[_0x83b6('0x16')]};}):[]};}):[]};}):[]:[]})[_0x83b6('0xa')](function(_0x2e2f26){logger['info'](_0x83b6('0x1b'),_0x11ecdc);logger[_0x83b6('0x1c')]('GetSalesforceAccount',_0x11ecdc,JSON[_0x83b6('0x1d')](_0x2e2f26));_0x345656(_0x2e2f26);})[_0x83b6('0x1e')](function(_0x16db18){logger[_0x83b6('0xd')](_0x83b6('0x1b'),_0x16db18[_0x83b6('0x10')],_0x11ecdc);_0x38415e(_0x3c33a7[_0x83b6('0xd')](0x1f4,_0x16db18[_0x83b6('0x10')]));});});};exports[_0x83b6('0x1f')]=function(_0xeab72d){var _0x4c1896=this;return new Promise(function(_0x32ec0d,_0x211672){return db['SalesforceAccount']['find']({'raw':_0xeab72d[_0x83b6('0x14')]?_0xeab72d['options']['raw']===undefined?!![]:![]:!![],'where':_0xeab72d[_0x83b6('0x14')]?_0xeab72d['options']['where']||null:null,'attributes':_0xeab72d[_0x83b6('0x14')]?_0xeab72d[_0x83b6('0x14')][_0x83b6('0x16')]||null:null,'include':_0xeab72d[_0x83b6('0x14')]?_0xeab72d[_0x83b6('0x14')][_0x83b6('0x18')]?_[_0x83b6('0x1a')](_0xeab72d['options'][_0x83b6('0x18')],function(_0x4c382a){return{'model':db[_0x4c382a[_0x83b6('0x19')]],'as':_0x4c382a['as'],'attributes':_0x4c382a[_0x83b6('0x16')],'include':_0x4c382a[_0x83b6('0x18')]?_[_0x83b6('0x1a')](_0x4c382a['include'],function(_0x54a9d2){return{'model':db[_0x54a9d2[_0x83b6('0x19')]],'as':_0x54a9d2['as'],'attributes':_0x54a9d2[_0x83b6('0x16')],'include':_0x54a9d2[_0x83b6('0x18')]?_[_0x83b6('0x1a')](_0x54a9d2[_0x83b6('0x18')],function(_0x3f586a){return{'model':db[_0x3f586a[_0x83b6('0x19')]],'as':_0x3f586a['as'],'attributes':_0x3f586a[_0x83b6('0x16')]};}):[]};}):[]};}):[]:[]})[_0x83b6('0xa')](function(_0x1b7d9c){logger['info'](_0x83b6('0x1f'),_0xeab72d);logger[_0x83b6('0x1c')](_0x83b6('0x1f'),_0xeab72d,JSON[_0x83b6('0x1d')](_0x1b7d9c));_0x32ec0d(_0x1b7d9c);})[_0x83b6('0x1e')](function(_0x5dd5c2){logger[_0x83b6('0xd')](_0x83b6('0x1f'),_0x5dd5c2[_0x83b6('0x10')],_0xeab72d);_0x211672(_0x4c1896[_0x83b6('0xd')](0x1f4,_0x5dd5c2[_0x83b6('0x10')]));});});};
\ No newline at end of file
+var _0xdb82=['../../config/utils','../../config/logger','rpc','../../config/environment','http','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetSalesforceAccount','findAll','raw','options','limit','include','attributes','map','model','then','ShowSalesforceAccount','SalesforceAccount','find','where','lodash','moment','bluebird','../../mysqldb'];(function(_0x1e2321,_0x3ae1c5){var _0x1d346d=function(_0x24f171){while(--_0x24f171){_0x1e2321['push'](_0x1e2321['shift']());}};_0x1d346d(++_0x3ae1c5);}(_0xdb82,0x1dc));var _0x2db8=function(_0xc8d13,_0x5c672c){_0xc8d13=_0xc8d13-0x0;var _0x529ed2=_0xdb82[_0xc8d13];return _0x529ed2;};'use strict';var _=require(_0x2db8('0x0'));var util=require('util');var moment=require(_0x2db8('0x1'));var BPromise=require(_0x2db8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2db8('0x3'))['db'];var utils=require(_0x2db8('0x4'));var logger=require(_0x2db8('0x5'))(_0x2db8('0x6'));var config=require(_0x2db8('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2db8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c2db2,_0x53c01f,_0x4d98a6){return new BPromise(function(_0x571ed1,_0x1500d0){return client['request'](_0x5c2db2,_0x4d98a6)['then'](function(_0x4a96c2){logger[_0x2db8('0x9')](_0x2db8('0xa'),_0x53c01f,_0x2db8('0xb'));logger[_0x2db8('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x53c01f,_0x2db8('0xb'),JSON[_0x2db8('0xd')](_0x4a96c2));if(_0x4a96c2[_0x2db8('0xe')]){if(_0x4a96c2['error']['code']===0x1f4){logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x4a96c2[_0x2db8('0xe')][_0x2db8('0xf')]);return _0x1500d0(_0x4a96c2['error'][_0x2db8('0xf')]);}logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x4a96c2[_0x2db8('0xe')]['message']);return _0x571ed1(_0x4a96c2[_0x2db8('0xe')][_0x2db8('0xf')]);}else{logger[_0x2db8('0x9')](_0x2db8('0xa'),_0x53c01f,_0x2db8('0xb'));_0x571ed1(_0x4a96c2[_0x2db8('0x10')]['message']);}})[_0x2db8('0x11')](function(_0x144745){logger[_0x2db8('0xe')](_0x2db8('0xa'),_0x53c01f,_0x144745);_0x1500d0(_0x144745);});});}exports[_0x2db8('0x12')]=function(_0x251481){var _0x59ce7a=this;return new Promise(function(_0x3d1f68,_0x89e7e2){return db['SalesforceAccount'][_0x2db8('0x13')]({'raw':_0x251481['options']?_0x251481['options'][_0x2db8('0x14')]===undefined?!![]:![]:!![],'where':_0x251481['options']?_0x251481[_0x2db8('0x15')]['where']||null:null,'attributes':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')]['attributes']||null:null,'limit':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')][_0x2db8('0x16')]||null:null,'include':_0x251481[_0x2db8('0x15')]?_0x251481[_0x2db8('0x15')][_0x2db8('0x17')]?_['map'](_0x251481['options'][_0x2db8('0x17')],function(_0xe8d69b){return{'model':db[_0xe8d69b['model']],'as':_0xe8d69b['as'],'attributes':_0xe8d69b[_0x2db8('0x18')],'include':_0xe8d69b[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0xe8d69b[_0x2db8('0x17')],function(_0x1d7ce6){return{'model':db[_0x1d7ce6[_0x2db8('0x1a')]],'as':_0x1d7ce6['as'],'attributes':_0x1d7ce6[_0x2db8('0x18')],'include':_0x1d7ce6[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x1d7ce6[_0x2db8('0x17')],function(_0x58bff1){return{'model':db[_0x58bff1[_0x2db8('0x1a')]],'as':_0x58bff1['as'],'attributes':_0x58bff1[_0x2db8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2db8('0x1b')](function(_0x357173){logger[_0x2db8('0x9')](_0x2db8('0x12'),_0x251481);logger[_0x2db8('0xc')](_0x2db8('0x12'),_0x251481,JSON[_0x2db8('0xd')](_0x357173));_0x3d1f68(_0x357173);})[_0x2db8('0x11')](function(_0x48c740){logger[_0x2db8('0xe')](_0x2db8('0x12'),_0x48c740['message'],_0x251481);_0x89e7e2(_0x59ce7a[_0x2db8('0xe')](0x1f4,_0x48c740[_0x2db8('0xf')]));});});};exports[_0x2db8('0x1c')]=function(_0xc344e2){var _0x514196=this;return new Promise(function(_0x162b7d,_0x31380f){return db[_0x2db8('0x1d')][_0x2db8('0x1e')]({'raw':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x14')]===undefined?!![]:![]:!![],'where':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x1f')]||null:null,'attributes':_0xc344e2['options']?_0xc344e2['options'][_0x2db8('0x18')]||null:null,'include':_0xc344e2[_0x2db8('0x15')]?_0xc344e2[_0x2db8('0x15')][_0x2db8('0x17')]?_[_0x2db8('0x19')](_0xc344e2[_0x2db8('0x15')]['include'],function(_0x541d35){return{'model':db[_0x541d35[_0x2db8('0x1a')]],'as':_0x541d35['as'],'attributes':_0x541d35[_0x2db8('0x18')],'include':_0x541d35[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x541d35[_0x2db8('0x17')],function(_0x4bb312){return{'model':db[_0x4bb312[_0x2db8('0x1a')]],'as':_0x4bb312['as'],'attributes':_0x4bb312[_0x2db8('0x18')],'include':_0x4bb312[_0x2db8('0x17')]?_[_0x2db8('0x19')](_0x4bb312['include'],function(_0x78b895){return{'model':db[_0x78b895[_0x2db8('0x1a')]],'as':_0x78b895['as'],'attributes':_0x78b895['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xb2983f){logger[_0x2db8('0x9')]('ShowSalesforceAccount',_0xc344e2);logger[_0x2db8('0xc')](_0x2db8('0x1c'),_0xc344e2,JSON[_0x2db8('0xd')](_0xb2983f));_0x162b7d(_0xb2983f);})[_0x2db8('0x11')](function(_0x211b3c){logger[_0x2db8('0xe')](_0x2db8('0x1c'),_0x211b3c[_0x2db8('0xf')],_0xc344e2);_0x31380f(_0x514196[_0x2db8('0xe')](0x1f4,_0x211b3c['message']));});});};
\ No newline at end of file
index 9db8e50..c3c5185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xdb28,0x106));var _0x8db2=function(_0x42564f,_0x5086bf){_0x42564f=_0x42564f-0x0;var _0xcaf1b9=_0xdb28[_0x42564f];return _0xcaf1b9;};'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
+var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x23a755,_0x29494a){var _0x2c9949=function(_0x41addc){while(--_0x41addc){_0x23a755['push'](_0x23a755['shift']());}};_0x2c9949(++_0x29494a);}(_0x2ef3,0xba));var _0x32ef=function(_0xd14523,_0x5db607){_0xd14523=_0xd14523-0x0;var _0x4c4fa7=_0x2ef3[_0xd14523];return _0x4c4fa7;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index 9282e19..27cda2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dac=['STRING','ENUM','Task','Case','contact','lead','account_contact_lead','account','contact_lead','nothing','exports'];(function(_0x2c25f9,_0x4c824d){var _0x54c579=function(_0x74c49){while(--_0x74c49){_0x2c25f9['push'](_0x2c25f9['shift']());}};_0x54c579(++_0x4c824d);}(_0x2dac,0x107));var _0xc2da=function(_0x572dff,_0x578b7d){_0x572dff=_0x572dff-0x0;var _0x364a29=_0x2dac[_0x572dff];return _0x364a29;};'use strict';var Sequelize=require('sequelize');module[_0xc2da('0x0')]={'name':{'type':Sequelize[_0xc2da('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc2da('0x2')](_0xc2da('0x3'),_0xc2da('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0xc2da('0x5'),_0xc2da('0x6'),_0xc2da('0x7'),_0xc2da('0x8')),'defaultValue':_0xc2da('0x9')},'moduleCreate':{'type':Sequelize[_0xc2da('0x2')](_0xc2da('0xa'),_0xc2da('0x5'),_0xc2da('0x6'),_0xc2da('0x8')),'defaultValue':_0xc2da('0x6')},'leadId':{'type':Sequelize[_0xc2da('0x1')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xc2da('0x1')]},'additionalSearchLead':{'type':Sequelize[_0xc2da('0x1')]}};
\ No newline at end of file
+var _0xdc91=['STRING','ENUM','Task','Case','contact_lead','contact','lead','account','sequelize','exports'];(function(_0x10a280,_0x16b373){var _0x195a69=function(_0x46e761){while(--_0x46e761){_0x10a280['push'](_0x10a280['shift']());}};_0x195a69(++_0x16b373);}(_0xdc91,0x10c));var _0x1dc9=function(_0x24cfe4,_0x22bf37){_0x24cfe4=_0x24cfe4-0x0;var _0x244380=_0xdc91[_0x24cfe4];return _0x244380;};'use strict';var Sequelize=require(_0x1dc9('0x0'));module[_0x1dc9('0x1')]={'name':{'type':Sequelize[_0x1dc9('0x2')]},'description':{'type':Sequelize[_0x1dc9('0x2')]},'ticketType':{'type':Sequelize[_0x1dc9('0x3')](_0x1dc9('0x4'),_0x1dc9('0x5')),'defaultValue':_0x1dc9('0x4')},'moduleSearch':{'type':Sequelize[_0x1dc9('0x3')](_0x1dc9('0x6'),_0x1dc9('0x7'),_0x1dc9('0x8'),'account_contact_lead','account'),'defaultValue':_0x1dc9('0x6')},'moduleCreate':{'type':Sequelize[_0x1dc9('0x3')]('nothing','contact',_0x1dc9('0x8'),_0x1dc9('0x9')),'defaultValue':_0x1dc9('0x8')},'leadId':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x1dc9('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x1dc9('0x2')]}};
\ No newline at end of file
index 2aac8d5..64b5595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d9e=['includeAll','include','findAll','catch','show','params','keys','find','create','body','getFields','findOne','order','hasOwnProperty','nolimit','SalesforceField','getSubjects','getDescriptions','eml-format','fast-json-patch','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','then','error','name','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','sort','where','pick','filter','merge','map','VIRTUAL','options','SalesforceConfiguration'];(function(_0x404d68,_0x324f75){var _0x1d3ace=function(_0x48f8c0){while(--_0x48f8c0){_0x404d68['push'](_0x404d68['shift']());}};_0x1d3ace(++_0x324f75);}(_0x0d9e,0x18e));var _0xe0d9=function(_0x4ed59a,_0x252127){_0x4ed59a=_0x4ed59a-0x0;var _0x329ff5=_0x0d9e[_0x4ed59a];return _0x329ff5;};'use strict';var emlformat=require(_0xe0d9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe0d9('0x1'));var rp=require('request-promise');var moment=require(_0xe0d9('0x2'));var BPromise=require(_0xe0d9('0x3'));var Mustache=require(_0xe0d9('0x4'));var util=require(_0xe0d9('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xe0d9('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe0d9('0x7'));var _=require(_0xe0d9('0x8'));var squel=require(_0xe0d9('0x9'));var crypto=require('crypto');var jsforce=require(_0xe0d9('0xa'));var deskjs=require(_0xe0d9('0xb'));var toCsv=require(_0xe0d9('0x6'));var querystring=require(_0xe0d9('0xc'));var Papa=require(_0xe0d9('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe0d9('0xe'));var as=require(_0xe0d9('0xf'));var hardwareService=require(_0xe0d9('0x10'));var logger=require('../../config/logger')(_0xe0d9('0x11'));var utils=require('../../config/utils');var config=require(_0xe0d9('0x12'));var licenseUtil=require(_0xe0d9('0x13'));var db=require(_0xe0d9('0x14'))['db'];function respondWithStatusCode(_0x3f4ee4,_0x74f1e5){_0x74f1e5=_0x74f1e5||0xcc;return function(_0x3888c9){if(_0x3888c9){return _0x3f4ee4[_0xe0d9('0x15')](_0x74f1e5);}return _0x3f4ee4[_0xe0d9('0x16')](_0x74f1e5)[_0xe0d9('0x17')]();};}function respondWithResult(_0x21042d,_0x4a8233){_0x4a8233=_0x4a8233||0xc8;return function(_0x254ff6){if(_0x254ff6){return _0x21042d[_0xe0d9('0x16')](_0x4a8233)[_0xe0d9('0x18')](_0x254ff6);}};}function respondWithFilteredResult(_0xc6671,_0x20c3fa){return function(_0x12dcd9){if(_0x12dcd9){var _0x4200b3=typeof _0x20c3fa[_0xe0d9('0x19')]==='undefined'&&typeof _0x20c3fa[_0xe0d9('0x1a')]===_0xe0d9('0x1b');var _0x18899e=_0x12dcd9[_0xe0d9('0x1c')];var _0x1963e3=_0x4200b3?0x0:_0x20c3fa[_0xe0d9('0x19')];var _0x5e1b1a=_0x4200b3?_0x12dcd9[_0xe0d9('0x1c')]:_0x20c3fa['offset']+_0x20c3fa[_0xe0d9('0x1a')];var _0x5e4dd2;if(_0x5e1b1a>=_0x18899e){_0x5e1b1a=_0x18899e;_0x5e4dd2=0xc8;}else{_0x5e4dd2=0xce;}_0xc6671[_0xe0d9('0x16')](_0x5e4dd2);return _0xc6671[_0xe0d9('0x1d')](_0xe0d9('0x1e'),_0x1963e3+'-'+_0x5e1b1a+'/'+_0x18899e)[_0xe0d9('0x18')](_0x12dcd9);}return null;};}function patchUpdates(_0x1de545){return function(_0x1c85da){try{jsonpatch['apply'](_0x1c85da,_0x1de545,!![]);}catch(_0x49ce6c){return BPromise[_0xe0d9('0x1f')](_0x49ce6c);}return _0x1c85da[_0xe0d9('0x20')]();};}function saveUpdates(_0x25a21b,_0x3684d6){return function(_0x54069c){if(_0x54069c){return _0x54069c[_0xe0d9('0x21')](_0x25a21b)['then'](function(_0x45c893){return _0x45c893;});}return null;};}function removeEntity(_0x57ac41,_0x431a5e){return function(_0x466161){if(_0x466161){return _0x466161[_0xe0d9('0x22')]()[_0xe0d9('0x23')](function(){_0x57ac41[_0xe0d9('0x16')](0xcc)[_0xe0d9('0x17')]();});}};}function handleEntityNotFound(_0x56d241,_0x44290e){return function(_0x296dca){if(!_0x296dca){_0x56d241[_0xe0d9('0x15')](0x194);}return _0x296dca;};}function handleError(_0x38d856,_0x1e5131){_0x1e5131=_0x1e5131||0x1f4;return function(_0x4f5e6c){logger[_0xe0d9('0x24')](_0x4f5e6c['stack']);if(_0x4f5e6c[_0xe0d9('0x25')]){delete _0x4f5e6c[_0xe0d9('0x25')];}_0x38d856['status'](_0x1e5131)['send'](_0x4f5e6c);};}exports['index']=function(_0x22fd8c,_0x42a5a4){var _0x533de2={},_0x3e9dab={},_0x5e4583={'count':0x0,'rows':[]};var _0x52d291=_['map'](db['SalesforceConfiguration'][_0xe0d9('0x26')],function(_0x4c9fea){return{'name':_0x4c9fea[_0xe0d9('0x27')],'type':_0x4c9fea[_0xe0d9('0x28')][_0xe0d9('0x29')]};});_0x3e9dab['model']=_['map'](_0x52d291,_0xe0d9('0x25'));_0x3e9dab[_0xe0d9('0x2a')]=_['keys'](_0x22fd8c[_0xe0d9('0x2a')]);_0x3e9dab[_0xe0d9('0x2b')]=_[_0xe0d9('0x2c')](_0x3e9dab['model'],_0x3e9dab[_0xe0d9('0x2a')]);_0x533de2[_0xe0d9('0x2d')]=_[_0xe0d9('0x2c')](_0x3e9dab[_0xe0d9('0x2e')],qs[_0xe0d9('0x2f')](_0x22fd8c[_0xe0d9('0x2a')][_0xe0d9('0x2f')]));_0x533de2['attributes']=_0x533de2[_0xe0d9('0x2d')][_0xe0d9('0x30')]?_0x533de2[_0xe0d9('0x2d')]:_0x3e9dab['model'];if(!_0x22fd8c['query']['hasOwnProperty']('nolimit')){_0x533de2[_0xe0d9('0x1a')]=qs[_0xe0d9('0x1a')](_0x22fd8c['query'][_0xe0d9('0x1a')]);_0x533de2['offset']=qs[_0xe0d9('0x19')](_0x22fd8c[_0xe0d9('0x2a')][_0xe0d9('0x19')]);}_0x533de2['order']=qs[_0xe0d9('0x31')](_0x22fd8c[_0xe0d9('0x2a')][_0xe0d9('0x31')]);_0x533de2[_0xe0d9('0x32')]=qs[_0xe0d9('0x2b')](_[_0xe0d9('0x33')](_0x22fd8c['query'],_0x3e9dab[_0xe0d9('0x2b')]),_0x52d291);if(_0x22fd8c['query'][_0xe0d9('0x34')]){_0x533de2[_0xe0d9('0x32')]=_[_0xe0d9('0x35')](_0x533de2[_0xe0d9('0x32')],{'$or':_[_0xe0d9('0x36')](_0x52d291,function(_0x52dc3c){if(_0x52dc3c[_0xe0d9('0x28')]!==_0xe0d9('0x37')){var _0x465996={};_0x465996[_0x52dc3c[_0xe0d9('0x25')]]={'$like':'%'+_0x22fd8c['query'][_0xe0d9('0x34')]+'%'};return _0x465996;}})});}_0x533de2=_['merge']({},_0x533de2,_0x22fd8c[_0xe0d9('0x38')]);var _0x26e015={'where':_0x533de2['where']};return db[_0xe0d9('0x39')][_0xe0d9('0x1c')](_0x26e015)['then'](function(_0xbf087f){_0x5e4583[_0xe0d9('0x1c')]=_0xbf087f;if(_0x22fd8c[_0xe0d9('0x2a')][_0xe0d9('0x3a')]){_0x533de2[_0xe0d9('0x3b')]=[{'all':!![]}];}return db[_0xe0d9('0x39')][_0xe0d9('0x3c')](_0x533de2);})[_0xe0d9('0x23')](function(_0x299660){_0x5e4583['rows']=_0x299660;return _0x5e4583;})[_0xe0d9('0x23')](respondWithFilteredResult(_0x42a5a4,_0x533de2))[_0xe0d9('0x3d')](handleError(_0x42a5a4,null));};exports[_0xe0d9('0x3e')]=function(_0x286cf3,_0xd7e322){var _0x2227e8={'raw':![],'where':{'id':_0x286cf3[_0xe0d9('0x3f')]['id']}},_0xe3c57c={};_0xe3c57c['model']=_[_0xe0d9('0x40')](db[_0xe0d9('0x39')]['rawAttributes']);_0xe3c57c[_0xe0d9('0x2a')]=_[_0xe0d9('0x40')](_0x286cf3[_0xe0d9('0x2a')]);_0xe3c57c['filters']=_[_0xe0d9('0x2c')](_0xe3c57c['model'],_0xe3c57c[_0xe0d9('0x2a')]);_0x2227e8['attributes']=_[_0xe0d9('0x2c')](_0xe3c57c[_0xe0d9('0x2e')],qs['fields'](_0x286cf3[_0xe0d9('0x2a')]['fields']));_0x2227e8[_0xe0d9('0x2d')]=_0x2227e8[_0xe0d9('0x2d')][_0xe0d9('0x30')]?_0x2227e8[_0xe0d9('0x2d')]:_0xe3c57c[_0xe0d9('0x2e')];if(_0x286cf3['query']['includeAll']){_0x2227e8[_0xe0d9('0x3b')]=[{'all':!![]}];}_0x2227e8=_[_0xe0d9('0x35')]({},_0x2227e8,_0x286cf3[_0xe0d9('0x38')]);return db['SalesforceConfiguration'][_0xe0d9('0x41')](_0x2227e8)[_0xe0d9('0x23')](handleEntityNotFound(_0xd7e322,null))['then'](respondWithResult(_0xd7e322,null))[_0xe0d9('0x3d')](handleError(_0xd7e322,null));};exports[_0xe0d9('0x42')]=function(_0x365e43,_0x4102d6){return db[_0xe0d9('0x39')]['create'](_0x365e43[_0xe0d9('0x43')],{})[_0xe0d9('0x23')](respondWithResult(_0x4102d6,0xc9))[_0xe0d9('0x3d')](handleError(_0x4102d6,null));};exports[_0xe0d9('0x21')]=function(_0x4af787,_0x3bced6){if(_0x4af787['body']['id']){delete _0x4af787[_0xe0d9('0x43')]['id'];}return db['SalesforceConfiguration']['find']({'where':{'id':_0x4af787[_0xe0d9('0x3f')]['id']}})[_0xe0d9('0x23')](handleEntityNotFound(_0x3bced6,null))[_0xe0d9('0x23')](saveUpdates(_0x4af787['body'],null))[_0xe0d9('0x23')](respondWithResult(_0x3bced6,null))['catch'](handleError(_0x3bced6,null));};exports['destroy']=function(_0x2a0117,_0x4e818d){return db[_0xe0d9('0x39')][_0xe0d9('0x41')]({'where':{'id':_0x2a0117[_0xe0d9('0x3f')]['id']}})[_0xe0d9('0x23')](handleEntityNotFound(_0x4e818d,null))[_0xe0d9('0x23')](removeEntity(_0x4e818d,null))[_0xe0d9('0x3d')](handleError(_0x4e818d,null));};exports[_0xe0d9('0x44')]=function(_0x533601,_0x23f711,_0x320dcf){var _0x1410a0={};var _0xd9d478={};var _0x445986;var _0x38b924;return db[_0xe0d9('0x39')][_0xe0d9('0x45')]({'where':{'id':_0x533601[_0xe0d9('0x3f')]['id']}})['then'](handleEntityNotFound(_0x23f711,null))[_0xe0d9('0x23')](function(_0x96a092){if(_0x96a092){_0x445986=_0x96a092;_0xd9d478[_0xe0d9('0x2e')]=_[_0xe0d9('0x40')](db['SalesforceField'][_0xe0d9('0x26')]);_0xd9d478['query']=_[_0xe0d9('0x40')](_0x533601['query']);_0xd9d478[_0xe0d9('0x2b')]=_['intersection'](_0xd9d478[_0xe0d9('0x2e')],_0xd9d478[_0xe0d9('0x2a')]);_0x1410a0[_0xe0d9('0x2d')]=_[_0xe0d9('0x2c')](_0xd9d478[_0xe0d9('0x2e')],qs['fields'](_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x2f')]));_0x1410a0[_0xe0d9('0x2d')]=_0x1410a0[_0xe0d9('0x2d')][_0xe0d9('0x30')]?_0x1410a0[_0xe0d9('0x2d')]:_0xd9d478[_0xe0d9('0x2e')];_0x1410a0[_0xe0d9('0x46')]=qs[_0xe0d9('0x31')](_0x533601['query']['sort']);_0x1410a0[_0xe0d9('0x32')]=qs['filters'](_[_0xe0d9('0x33')](_0x533601[_0xe0d9('0x2a')],_0xd9d478[_0xe0d9('0x2b')]));if(_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x34')]){_0x1410a0['where']=_[_0xe0d9('0x35')](_0x1410a0[_0xe0d9('0x32')],{'$or':_[_0xe0d9('0x36')](_0x1410a0[_0xe0d9('0x2d')],function(_0x1412aa){var _0x87ac9={};_0x87ac9[_0x1412aa]={'$like':'%'+_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x34')]+'%'};return _0x87ac9;})});}_0x1410a0=_['merge']({},_0x1410a0,_0x533601[_0xe0d9('0x38')]);return _0x445986['getFields'](_0x1410a0);}})[_0xe0d9('0x23')](function(_0x41b981){if(_0x41b981){_0x38b924=_0x41b981[_0xe0d9('0x30')];if(!_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x47')](_0xe0d9('0x48'))){_0x1410a0[_0xe0d9('0x1a')]=qs[_0xe0d9('0x1a')](_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x1a')]);_0x1410a0['offset']=qs[_0xe0d9('0x19')](_0x533601[_0xe0d9('0x2a')][_0xe0d9('0x19')]);}return _0x445986[_0xe0d9('0x44')](_0x1410a0);}})[_0xe0d9('0x23')](function(_0x13cb73){if(_0x13cb73){return _0x13cb73?{'count':_0x38b924,'rows':_0x13cb73}:null;}})['then'](respondWithResult(_0x23f711,null))['catch'](handleError(_0x23f711,null));};exports['getSubjects']=function(_0x4ce270,_0x597229,_0x4aa227){var _0x5c724a={};var _0x165267={};var _0x12766d;var _0x48653f;return db[_0xe0d9('0x39')][_0xe0d9('0x45')]({'where':{'id':_0x4ce270[_0xe0d9('0x3f')]['id']}})[_0xe0d9('0x23')](handleEntityNotFound(_0x597229,null))[_0xe0d9('0x23')](function(_0x4c36ed){if(_0x4c36ed){_0x12766d=_0x4c36ed;_0x165267[_0xe0d9('0x2e')]=_[_0xe0d9('0x40')](db[_0xe0d9('0x49')]['rawAttributes']);_0x165267['query']=_[_0xe0d9('0x40')](_0x4ce270[_0xe0d9('0x2a')]);_0x165267[_0xe0d9('0x2b')]=_['intersection'](_0x165267['model'],_0x165267[_0xe0d9('0x2a')]);_0x5c724a[_0xe0d9('0x2d')]=_[_0xe0d9('0x2c')](_0x165267['model'],qs[_0xe0d9('0x2f')](_0x4ce270[_0xe0d9('0x2a')][_0xe0d9('0x2f')]));_0x5c724a['attributes']=_0x5c724a[_0xe0d9('0x2d')][_0xe0d9('0x30')]?_0x5c724a[_0xe0d9('0x2d')]:_0x165267[_0xe0d9('0x2e')];_0x5c724a[_0xe0d9('0x46')]=qs[_0xe0d9('0x31')](_0x4ce270['query'][_0xe0d9('0x31')]);_0x5c724a[_0xe0d9('0x32')]=qs[_0xe0d9('0x2b')](_['pick'](_0x4ce270[_0xe0d9('0x2a')],_0x165267['filters']));if(_0x4ce270[_0xe0d9('0x2a')][_0xe0d9('0x34')]){_0x5c724a[_0xe0d9('0x32')]=_['merge'](_0x5c724a[_0xe0d9('0x32')],{'$or':_['map'](_0x5c724a[_0xe0d9('0x2d')],function(_0x3e707f){var _0x44b4f5={};_0x44b4f5[_0x3e707f]={'$like':'%'+_0x4ce270[_0xe0d9('0x2a')][_0xe0d9('0x34')]+'%'};return _0x44b4f5;})});}_0x5c724a=_['merge']({},_0x5c724a,_0x4ce270[_0xe0d9('0x38')]);return _0x12766d[_0xe0d9('0x4a')](_0x5c724a);}})[_0xe0d9('0x23')](function(_0x458f78){if(_0x458f78){_0x48653f=_0x458f78[_0xe0d9('0x30')];if(!_0x4ce270['query'][_0xe0d9('0x47')](_0xe0d9('0x48'))){_0x5c724a[_0xe0d9('0x1a')]=qs[_0xe0d9('0x1a')](_0x4ce270[_0xe0d9('0x2a')][_0xe0d9('0x1a')]);_0x5c724a[_0xe0d9('0x19')]=qs['offset'](_0x4ce270[_0xe0d9('0x2a')][_0xe0d9('0x19')]);}return _0x12766d[_0xe0d9('0x4a')](_0x5c724a);}})[_0xe0d9('0x23')](function(_0x5342d1){if(_0x5342d1){return _0x5342d1?{'count':_0x48653f,'rows':_0x5342d1}:null;}})[_0xe0d9('0x23')](respondWithResult(_0x597229,null))[_0xe0d9('0x3d')](handleError(_0x597229,null));};exports[_0xe0d9('0x4b')]=function(_0x4c9841,_0x5d5160,_0x152b54){var _0x5dc58e={};var _0x48d0c0={};var _0x432bc2;var _0xaa30f6;return db[_0xe0d9('0x39')][_0xe0d9('0x45')]({'where':{'id':_0x4c9841[_0xe0d9('0x3f')]['id']}})[_0xe0d9('0x23')](handleEntityNotFound(_0x5d5160,null))[_0xe0d9('0x23')](function(_0x4e6cd1){if(_0x4e6cd1){_0x432bc2=_0x4e6cd1;_0x48d0c0[_0xe0d9('0x2e')]=_[_0xe0d9('0x40')](db[_0xe0d9('0x49')][_0xe0d9('0x26')]);_0x48d0c0[_0xe0d9('0x2a')]=_[_0xe0d9('0x40')](_0x4c9841['query']);_0x48d0c0['filters']=_[_0xe0d9('0x2c')](_0x48d0c0['model'],_0x48d0c0[_0xe0d9('0x2a')]);_0x5dc58e[_0xe0d9('0x2d')]=_[_0xe0d9('0x2c')](_0x48d0c0[_0xe0d9('0x2e')],qs[_0xe0d9('0x2f')](_0x4c9841['query'][_0xe0d9('0x2f')]));_0x5dc58e['attributes']=_0x5dc58e[_0xe0d9('0x2d')][_0xe0d9('0x30')]?_0x5dc58e[_0xe0d9('0x2d')]:_0x48d0c0[_0xe0d9('0x2e')];_0x5dc58e[_0xe0d9('0x46')]=qs[_0xe0d9('0x31')](_0x4c9841[_0xe0d9('0x2a')][_0xe0d9('0x31')]);_0x5dc58e[_0xe0d9('0x32')]=qs[_0xe0d9('0x2b')](_['pick'](_0x4c9841['query'],_0x48d0c0[_0xe0d9('0x2b')]));if(_0x4c9841[_0xe0d9('0x2a')][_0xe0d9('0x34')]){_0x5dc58e[_0xe0d9('0x32')]=_[_0xe0d9('0x35')](_0x5dc58e[_0xe0d9('0x32')],{'$or':_[_0xe0d9('0x36')](_0x5dc58e['attributes'],function(_0x488483){var _0x3e1150={};_0x3e1150[_0x488483]={'$like':'%'+_0x4c9841[_0xe0d9('0x2a')][_0xe0d9('0x34')]+'%'};return _0x3e1150;})});}_0x5dc58e=_[_0xe0d9('0x35')]({},_0x5dc58e,_0x4c9841['options']);return _0x432bc2[_0xe0d9('0x4b')](_0x5dc58e);}})['then'](function(_0x58c81e){if(_0x58c81e){_0xaa30f6=_0x58c81e[_0xe0d9('0x30')];if(!_0x4c9841[_0xe0d9('0x2a')]['hasOwnProperty'](_0xe0d9('0x48'))){_0x5dc58e[_0xe0d9('0x1a')]=qs[_0xe0d9('0x1a')](_0x4c9841[_0xe0d9('0x2a')][_0xe0d9('0x1a')]);_0x5dc58e[_0xe0d9('0x19')]=qs[_0xe0d9('0x19')](_0x4c9841['query'][_0xe0d9('0x19')]);}return _0x432bc2['getDescriptions'](_0x5dc58e);}})[_0xe0d9('0x23')](function(_0x370c9b){if(_0x370c9b){return _0x370c9b?{'count':_0xaa30f6,'rows':_0x370c9b}:null;}})['then'](respondWithResult(_0x5d5160,null))[_0xe0d9('0x3d')](handleError(_0x5d5160,null));};
\ No newline at end of file
+var _0x8dd9=['apply','reject','save','update','destroy','then','stack','name','send','index','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','map','type','VIRTUAL','options','includeAll','include','findAll','catch','show','SalesforceConfiguration','rawAttributes','create','body','find','params','findOne','order','getSubjects','SalesforceField','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x3f01da,_0x4f4915){var _0x4f3735=function(_0x2d9cc9){while(--_0x2d9cc9){_0x3f01da['push'](_0x3f01da['shift']());}};_0x4f3735(++_0x4f4915);}(_0x8dd9,0x16b));var _0x98dd=function(_0x30d14d,_0x5b7cdc){_0x30d14d=_0x30d14d-0x0;var _0x47054e=_0x8dd9[_0x30d14d];return _0x47054e;};'use strict';var emlformat=require(_0x98dd('0x0'));var rimraf=require(_0x98dd('0x1'));var zipdir=require(_0x98dd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x98dd('0x3'));var moment=require(_0x98dd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x98dd('0x5'));var path=require(_0x98dd('0x6'));var sox=require(_0x98dd('0x7'));var csv=require('to-csv');var ejs=require(_0x98dd('0x8'));var fs=require('fs');var fs_extra=require(_0x98dd('0x9'));var _=require(_0x98dd('0xa'));var squel=require('squel');var crypto=require(_0x98dd('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x98dd('0xc'));var querystring=require(_0x98dd('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x98dd('0xe'));var hardwareService=require(_0x98dd('0xf'));var logger=require(_0x98dd('0x10'))(_0x98dd('0x11'));var utils=require(_0x98dd('0x12'));var config=require(_0x98dd('0x13'));var licenseUtil=require(_0x98dd('0x14'));var db=require(_0x98dd('0x15'))['db'];function respondWithStatusCode(_0x205913,_0x1a771c){_0x1a771c=_0x1a771c||0xcc;return function(_0x11e1b6){if(_0x11e1b6){return _0x205913[_0x98dd('0x16')](_0x1a771c);}return _0x205913[_0x98dd('0x17')](_0x1a771c)[_0x98dd('0x18')]();};}function respondWithResult(_0x1f76a6,_0x566841){_0x566841=_0x566841||0xc8;return function(_0x206c98){if(_0x206c98){return _0x1f76a6[_0x98dd('0x17')](_0x566841)[_0x98dd('0x19')](_0x206c98);}};}function respondWithFilteredResult(_0x2e0294,_0x574a1c){return function(_0x373701){if(_0x373701){var _0x50dfce=typeof _0x574a1c[_0x98dd('0x1a')]===_0x98dd('0x1b')&&typeof _0x574a1c[_0x98dd('0x1c')]==='undefined';var _0x3d3645=_0x373701[_0x98dd('0x1d')];var _0x4319da=_0x50dfce?0x0:_0x574a1c[_0x98dd('0x1a')];var _0xee18e0=_0x50dfce?_0x373701[_0x98dd('0x1d')]:_0x574a1c[_0x98dd('0x1a')]+_0x574a1c[_0x98dd('0x1c')];var _0x57ffb3;if(_0xee18e0>=_0x3d3645){_0xee18e0=_0x3d3645;_0x57ffb3=0xc8;}else{_0x57ffb3=0xce;}_0x2e0294['status'](_0x57ffb3);return _0x2e0294[_0x98dd('0x1e')](_0x98dd('0x1f'),_0x4319da+'-'+_0xee18e0+'/'+_0x3d3645)[_0x98dd('0x19')](_0x373701);}return null;};}function patchUpdates(_0x1ad4f7){return function(_0x39a2de){try{jsonpatch[_0x98dd('0x20')](_0x39a2de,_0x1ad4f7,!![]);}catch(_0x23f8ae){return BPromise[_0x98dd('0x21')](_0x23f8ae);}return _0x39a2de[_0x98dd('0x22')]();};}function saveUpdates(_0x55a345,_0xee115e){return function(_0x567dec){if(_0x567dec){return _0x567dec[_0x98dd('0x23')](_0x55a345)['then'](function(_0x1b5a75){return _0x1b5a75;});}return null;};}function removeEntity(_0x4486c1,_0x4c52e3){return function(_0x42e65c){if(_0x42e65c){return _0x42e65c[_0x98dd('0x24')]()[_0x98dd('0x25')](function(){_0x4486c1[_0x98dd('0x17')](0xcc)[_0x98dd('0x18')]();});}};}function handleEntityNotFound(_0x1a49f9,_0x2cd131){return function(_0x564aaa){if(!_0x564aaa){_0x1a49f9[_0x98dd('0x16')](0x194);}return _0x564aaa;};}function handleError(_0x2958d2,_0x214e79){_0x214e79=_0x214e79||0x1f4;return function(_0x50ad0e){logger['error'](_0x50ad0e[_0x98dd('0x26')]);if(_0x50ad0e['name']){delete _0x50ad0e[_0x98dd('0x27')];}_0x2958d2[_0x98dd('0x17')](_0x214e79)[_0x98dd('0x28')](_0x50ad0e);};}exports[_0x98dd('0x29')]=function(_0x2c806e,_0x3dd478){var _0x2c2dc3={},_0x4e5ae1={},_0x3fcf57={'count':0x0,'rows':[]};var _0xb98c0f=_['map'](db['SalesforceConfiguration']['rawAttributes'],function(_0x53883e){return{'name':_0x53883e[_0x98dd('0x2a')],'type':_0x53883e['type'][_0x98dd('0x2b')]};});_0x4e5ae1[_0x98dd('0x2c')]=_['map'](_0xb98c0f,_0x98dd('0x27'));_0x4e5ae1[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x2c806e[_0x98dd('0x2d')]);_0x4e5ae1[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x4e5ae1[_0x98dd('0x2c')],_0x4e5ae1[_0x98dd('0x2d')]);_0x2c2dc3[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x4e5ae1['model'],qs[_0x98dd('0x32')](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x2c2dc3[_0x98dd('0x31')]=_0x2c2dc3['attributes'][_0x98dd('0x33')]?_0x2c2dc3['attributes']:_0x4e5ae1['model'];if(!_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x2c2dc3[_0x98dd('0x1c')]=qs[_0x98dd('0x1c')](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x1c')]);_0x2c2dc3[_0x98dd('0x1a')]=qs[_0x98dd('0x1a')](_0x2c806e[_0x98dd('0x2d')]['offset']);}_0x2c2dc3['order']=qs['sort'](_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x36')]);_0x2c2dc3['where']=qs['filters'](_[_0x98dd('0x37')](_0x2c806e[_0x98dd('0x2d')],_0x4e5ae1[_0x98dd('0x2f')]),_0xb98c0f);if(_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x2c2dc3['where']=_[_0x98dd('0x39')](_0x2c2dc3[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0xb98c0f,function(_0x39ddb7){if(_0x39ddb7[_0x98dd('0x3c')]!==_0x98dd('0x3d')){var _0x11237f={};_0x11237f[_0x39ddb7['name']]={'$like':'%'+_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x11237f;}})});}_0x2c2dc3=_[_0x98dd('0x39')]({},_0x2c2dc3,_0x2c806e[_0x98dd('0x3e')]);var _0x24e520={'where':_0x2c2dc3[_0x98dd('0x3a')]};return db['SalesforceConfiguration'][_0x98dd('0x1d')](_0x24e520)['then'](function(_0x444322){_0x3fcf57[_0x98dd('0x1d')]=_0x444322;if(_0x2c806e[_0x98dd('0x2d')][_0x98dd('0x3f')]){_0x2c2dc3[_0x98dd('0x40')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x98dd('0x41')](_0x2c2dc3);})[_0x98dd('0x25')](function(_0x2d5499){_0x3fcf57['rows']=_0x2d5499;return _0x3fcf57;})[_0x98dd('0x25')](respondWithFilteredResult(_0x3dd478,_0x2c2dc3))[_0x98dd('0x42')](handleError(_0x3dd478,null));};exports[_0x98dd('0x43')]=function(_0x262d56,_0x5972c1){var _0x39962a={'raw':![],'where':{'id':_0x262d56['params']['id']}},_0x15b33d={};_0x15b33d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x44')][_0x98dd('0x45')]);_0x15b33d[_0x98dd('0x2d')]=_['keys'](_0x262d56[_0x98dd('0x2d')]);_0x15b33d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x15b33d[_0x98dd('0x2c')],_0x15b33d[_0x98dd('0x2d')]);_0x39962a[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x15b33d[_0x98dd('0x2c')],qs['fields'](_0x262d56[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x39962a['attributes']=_0x39962a[_0x98dd('0x31')][_0x98dd('0x33')]?_0x39962a[_0x98dd('0x31')]:_0x15b33d[_0x98dd('0x2c')];if(_0x262d56[_0x98dd('0x2d')][_0x98dd('0x3f')]){_0x39962a[_0x98dd('0x40')]=[{'all':!![]}];}_0x39962a=_[_0x98dd('0x39')]({},_0x39962a,_0x262d56[_0x98dd('0x3e')]);return db[_0x98dd('0x44')]['find'](_0x39962a)[_0x98dd('0x25')](handleEntityNotFound(_0x5972c1,null))[_0x98dd('0x25')](respondWithResult(_0x5972c1,null))[_0x98dd('0x42')](handleError(_0x5972c1,null));};exports['create']=function(_0xd7c066,_0x3de6f2){return db['SalesforceConfiguration'][_0x98dd('0x46')](_0xd7c066['body'],{})['then'](respondWithResult(_0x3de6f2,0xc9))[_0x98dd('0x42')](handleError(_0x3de6f2,null));};exports[_0x98dd('0x23')]=function(_0x27a14b,_0xa1d2af){if(_0x27a14b[_0x98dd('0x47')]['id']){delete _0x27a14b[_0x98dd('0x47')]['id'];}return db['SalesforceConfiguration'][_0x98dd('0x48')]({'where':{'id':_0x27a14b[_0x98dd('0x49')]['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0xa1d2af,null))[_0x98dd('0x25')](saveUpdates(_0x27a14b[_0x98dd('0x47')],null))[_0x98dd('0x25')](respondWithResult(_0xa1d2af,null))[_0x98dd('0x42')](handleError(_0xa1d2af,null));};exports[_0x98dd('0x24')]=function(_0x536ae2,_0x258ba9){return db[_0x98dd('0x44')][_0x98dd('0x48')]({'where':{'id':_0x536ae2[_0x98dd('0x49')]['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x258ba9,null))[_0x98dd('0x25')](removeEntity(_0x258ba9,null))[_0x98dd('0x42')](handleError(_0x258ba9,null));};exports['getFields']=function(_0x25ca39,_0x269c5a,_0xc989e4){var _0x5c0c25={};var _0x1c37d9={};var _0x698df9;var _0x548395;return db['SalesforceConfiguration'][_0x98dd('0x4a')]({'where':{'id':_0x25ca39['params']['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x269c5a,null))[_0x98dd('0x25')](function(_0x5107c6){if(_0x5107c6){_0x698df9=_0x5107c6;_0x1c37d9[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db['SalesforceField'][_0x98dd('0x45')]);_0x1c37d9[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x25ca39['query']);_0x1c37d9[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x1c37d9[_0x98dd('0x2c')],_0x1c37d9[_0x98dd('0x2d')]);_0x5c0c25[_0x98dd('0x31')]=_['intersection'](_0x1c37d9['model'],qs[_0x98dd('0x32')](_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x5c0c25[_0x98dd('0x31')]=_0x5c0c25['attributes'][_0x98dd('0x33')]?_0x5c0c25[_0x98dd('0x31')]:_0x1c37d9['model'];_0x5c0c25[_0x98dd('0x4b')]=qs[_0x98dd('0x36')](_0x25ca39['query'][_0x98dd('0x36')]);_0x5c0c25[_0x98dd('0x3a')]=qs[_0x98dd('0x2f')](_[_0x98dd('0x37')](_0x25ca39[_0x98dd('0x2d')],_0x1c37d9[_0x98dd('0x2f')]));if(_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x5c0c25[_0x98dd('0x3a')]=_[_0x98dd('0x39')](_0x5c0c25[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0x5c0c25[_0x98dd('0x31')],function(_0x159110){var _0x302f0c={};_0x302f0c[_0x159110]={'$like':'%'+_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x302f0c;})});}_0x5c0c25=_[_0x98dd('0x39')]({},_0x5c0c25,_0x25ca39['options']);return _0x698df9['getFields'](_0x5c0c25);}})['then'](function(_0x172bc4){if(_0x172bc4){_0x548395=_0x172bc4[_0x98dd('0x33')];if(!_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x5c0c25['limit']=qs['limit'](_0x25ca39[_0x98dd('0x2d')]['limit']);_0x5c0c25[_0x98dd('0x1a')]=qs[_0x98dd('0x1a')](_0x25ca39[_0x98dd('0x2d')][_0x98dd('0x1a')]);}return _0x698df9['getFields'](_0x5c0c25);}})[_0x98dd('0x25')](function(_0x1a9f20){if(_0x1a9f20){return _0x1a9f20?{'count':_0x548395,'rows':_0x1a9f20}:null;}})[_0x98dd('0x25')](respondWithResult(_0x269c5a,null))[_0x98dd('0x42')](handleError(_0x269c5a,null));};exports[_0x98dd('0x4c')]=function(_0xd43d1b,_0x261810,_0x136f98){var _0x39a2c1={};var _0x31dd0d={};var _0x36cad0;var _0x1da900;return db['SalesforceConfiguration'][_0x98dd('0x4a')]({'where':{'id':_0xd43d1b[_0x98dd('0x49')]['id']}})['then'](handleEntityNotFound(_0x261810,null))[_0x98dd('0x25')](function(_0x15476c){if(_0x15476c){_0x36cad0=_0x15476c;_0x31dd0d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x4d')][_0x98dd('0x45')]);_0x31dd0d[_0x98dd('0x2d')]=_['keys'](_0xd43d1b[_0x98dd('0x2d')]);_0x31dd0d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x31dd0d[_0x98dd('0x2c')],_0x31dd0d[_0x98dd('0x2d')]);_0x39a2c1[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x31dd0d[_0x98dd('0x2c')],qs[_0x98dd('0x32')](_0xd43d1b['query'][_0x98dd('0x32')]));_0x39a2c1[_0x98dd('0x31')]=_0x39a2c1[_0x98dd('0x31')][_0x98dd('0x33')]?_0x39a2c1[_0x98dd('0x31')]:_0x31dd0d['model'];_0x39a2c1['order']=qs[_0x98dd('0x36')](_0xd43d1b['query'][_0x98dd('0x36')]);_0x39a2c1[_0x98dd('0x3a')]=qs[_0x98dd('0x2f')](_[_0x98dd('0x37')](_0xd43d1b[_0x98dd('0x2d')],_0x31dd0d[_0x98dd('0x2f')]));if(_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x38')]){_0x39a2c1[_0x98dd('0x3a')]=_[_0x98dd('0x39')](_0x39a2c1['where'],{'$or':_['map'](_0x39a2c1[_0x98dd('0x31')],function(_0x10bf7e){var _0x1e6133={};_0x1e6133[_0x10bf7e]={'$like':'%'+_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x1e6133;})});}_0x39a2c1=_[_0x98dd('0x39')]({},_0x39a2c1,_0xd43d1b[_0x98dd('0x3e')]);return _0x36cad0[_0x98dd('0x4c')](_0x39a2c1);}})[_0x98dd('0x25')](function(_0x1e6a78){if(_0x1e6a78){_0x1da900=_0x1e6a78[_0x98dd('0x33')];if(!_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x34')](_0x98dd('0x35'))){_0x39a2c1[_0x98dd('0x1c')]=qs['limit'](_0xd43d1b[_0x98dd('0x2d')][_0x98dd('0x1c')]);_0x39a2c1[_0x98dd('0x1a')]=qs['offset'](_0xd43d1b['query']['offset']);}return _0x36cad0[_0x98dd('0x4c')](_0x39a2c1);}})[_0x98dd('0x25')](function(_0x4ccae9){if(_0x4ccae9){return _0x4ccae9?{'count':_0x1da900,'rows':_0x4ccae9}:null;}})['then'](respondWithResult(_0x261810,null))[_0x98dd('0x42')](handleError(_0x261810,null));};exports['getDescriptions']=function(_0x232349,_0x37b006,_0x5d0e85){var _0x476b22={};var _0x373e0d={};var _0x510477;var _0x17ec83;return db[_0x98dd('0x44')][_0x98dd('0x4a')]({'where':{'id':_0x232349['params']['id']}})[_0x98dd('0x25')](handleEntityNotFound(_0x37b006,null))[_0x98dd('0x25')](function(_0x56a28e){if(_0x56a28e){_0x510477=_0x56a28e;_0x373e0d[_0x98dd('0x2c')]=_[_0x98dd('0x2e')](db[_0x98dd('0x4d')][_0x98dd('0x45')]);_0x373e0d[_0x98dd('0x2d')]=_[_0x98dd('0x2e')](_0x232349[_0x98dd('0x2d')]);_0x373e0d[_0x98dd('0x2f')]=_[_0x98dd('0x30')](_0x373e0d[_0x98dd('0x2c')],_0x373e0d[_0x98dd('0x2d')]);_0x476b22[_0x98dd('0x31')]=_[_0x98dd('0x30')](_0x373e0d[_0x98dd('0x2c')],qs['fields'](_0x232349[_0x98dd('0x2d')][_0x98dd('0x32')]));_0x476b22['attributes']=_0x476b22[_0x98dd('0x31')][_0x98dd('0x33')]?_0x476b22['attributes']:_0x373e0d['model'];_0x476b22[_0x98dd('0x4b')]=qs[_0x98dd('0x36')](_0x232349[_0x98dd('0x2d')][_0x98dd('0x36')]);_0x476b22[_0x98dd('0x3a')]=qs['filters'](_[_0x98dd('0x37')](_0x232349['query'],_0x373e0d[_0x98dd('0x2f')]));if(_0x232349[_0x98dd('0x2d')]['filter']){_0x476b22[_0x98dd('0x3a')]=_['merge'](_0x476b22[_0x98dd('0x3a')],{'$or':_[_0x98dd('0x3b')](_0x476b22['attributes'],function(_0x147793){var _0x199be3={};_0x199be3[_0x147793]={'$like':'%'+_0x232349[_0x98dd('0x2d')][_0x98dd('0x38')]+'%'};return _0x199be3;})});}_0x476b22=_['merge']({},_0x476b22,_0x232349['options']);return _0x510477['getDescriptions'](_0x476b22);}})[_0x98dd('0x25')](function(_0x9b0983){if(_0x9b0983){_0x17ec83=_0x9b0983[_0x98dd('0x33')];if(!_0x232349[_0x98dd('0x2d')][_0x98dd('0x34')]('nolimit')){_0x476b22[_0x98dd('0x1c')]=qs[_0x98dd('0x1c')](_0x232349[_0x98dd('0x2d')]['limit']);_0x476b22['offset']=qs['offset'](_0x232349['query'][_0x98dd('0x1a')]);}return _0x510477[_0x98dd('0x4e')](_0x476b22);}})['then'](function(_0x5daebd){if(_0x5daebd){return _0x5daebd?{'count':_0x17ec83,'rows':_0x5daebd}:null;}})[_0x98dd('0x25')](respondWithResult(_0x37b006,null))[_0x98dd('0x42')](handleError(_0x37b006,null));};
\ No newline at end of file
index 822274b..9e09ba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf622=['path','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x3b9a00,_0x41db4e){var _0x21bc16=function(_0x2d5c1a){while(--_0x2d5c1a){_0x3b9a00['push'](_0x3b9a00['shift']());}};_0x21bc16(++_0x41db4e);}(_0xf622,0x1c7));var _0x2f62=function(_0x19c153,_0x2e4fa4){_0x19c153=_0x19c153-0x0;var _0x285c8c=_0xf622[_0x19c153];return _0x285c8c;};'use strict';var _=require('lodash');var util=require(_0x2f62('0x0'));var logger=require(_0x2f62('0x1'))('api');var moment=require(_0x2f62('0x2'));var BPromise=require(_0x2f62('0x3'));var rp=require(_0x2f62('0x4'));var fs=require('fs');var path=require(_0x2f62('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2f62('0x6'));module[_0x2f62('0x7')]=function(_0x5b5f4d,_0x5d2515){return _0x5b5f4d['define'](_0x2f62('0x8'),attributes,{'tableName':_0x2f62('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x321e=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4c34d5,_0x106527){var _0x21f747=function(_0x272963){while(--_0x272963){_0x4c34d5['push'](_0x4c34d5['shift']());}};_0x21f747(++_0x106527);}(_0x321e,0x1ab));var _0xe321=function(_0x3d0d9f,_0x571573){_0x3d0d9f=_0x3d0d9f-0x0;var _0xda9ff5=_0x321e[_0x3d0d9f];return _0xda9ff5;};'use strict';var _=require(_0xe321('0x0'));var util=require(_0xe321('0x1'));var logger=require(_0xe321('0x2'))(_0xe321('0x3'));var moment=require(_0xe321('0x4'));var BPromise=require('bluebird');var rp=require(_0xe321('0x5'));var fs=require('fs');var path=require(_0xe321('0x6'));var rimraf=require(_0xe321('0x7'));var config=require(_0xe321('0x8'));var attributes=require(_0xe321('0x9'));module[_0xe321('0xa')]=function(_0x20ec1f,_0x4f2b88){return _0x20ec1f[_0xe321('0xb')](_0xe321('0xc'),attributes,{'tableName':_0xe321('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c32c238..80bc7a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32bb=['util','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x1b78e5,_0x361288){var _0x216e16=function(_0x560e31){while(--_0x560e31){_0x1b78e5['push'](_0x1b78e5['shift']());}};_0x216e16(++_0x361288);}(_0x32bb,0x1cb));var _0xb32b=function(_0x1d2bc8,_0x2860bc){_0x1d2bc8=_0x1d2bc8-0x0;var _0x1857e1=_0x32bb[_0x1d2bc8];return _0x1857e1;};'use strict';var _=require(_0xb32b('0x0'));var util=require(_0xb32b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb32b('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xb32b('0x3'));var logger=require(_0xb32b('0x4'))(_0xb32b('0x5'));var config=require(_0xb32b('0x6'));var jayson=require(_0xb32b('0x7'));var client=jayson['client'][_0xb32b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x318a18,_0x17e75c,_0xad6605){return new BPromise(function(_0x1d145f,_0x162de0){return client[_0xb32b('0x9')](_0x318a18,_0xad6605)['then'](function(_0x12f0a1){logger[_0xb32b('0xa')](_0xb32b('0xb'),_0x17e75c,_0xb32b('0xc'));logger[_0xb32b('0xd')](_0xb32b('0xe'),_0x17e75c,_0xb32b('0xc'),JSON[_0xb32b('0xf')](_0x12f0a1));if(_0x12f0a1[_0xb32b('0x10')]){if(_0x12f0a1['error']['code']===0x1f4){logger['error'](_0xb32b('0xb'),_0x17e75c,_0x12f0a1[_0xb32b('0x10')][_0xb32b('0x11')]);return _0x162de0(_0x12f0a1['error'][_0xb32b('0x11')]);}logger[_0xb32b('0x10')](_0xb32b('0xb'),_0x17e75c,_0x12f0a1[_0xb32b('0x10')][_0xb32b('0x11')]);return _0x1d145f(_0x12f0a1['error'][_0xb32b('0x11')]);}else{logger[_0xb32b('0xa')](_0xb32b('0xb'),_0x17e75c,_0xb32b('0xc'));_0x1d145f(_0x12f0a1[_0xb32b('0x12')][_0xb32b('0x11')]);}})[_0xb32b('0x13')](function(_0xd05319){logger[_0xb32b('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x17e75c,_0xd05319);_0x162de0(_0xd05319);});});}
\ No newline at end of file
+var _0x1df8=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','bluebird','randomstring','ioredis'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x1df8,0x18b));var _0x81df=function(_0x265f8e,_0x573493){_0x265f8e=_0x265f8e-0x0;var _0x533039=_0x1df8[_0x265f8e];return _0x533039;};'use strict';var _=require('lodash');var util=require(_0x81df('0x0'));var moment=require('moment');var BPromise=require(_0x81df('0x1'));var rs=require(_0x81df('0x2'));var fs=require('fs');var Redis=require(_0x81df('0x3'));var db=require(_0x81df('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x81df('0x5'))(_0x81df('0x6'));var config=require(_0x81df('0x7'));var jayson=require(_0x81df('0x8'));var client=jayson[_0x81df('0x9')][_0x81df('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dce0b,_0x26053b,_0x43f6a2){return new BPromise(function(_0x4c3421,_0x5e318d){return client[_0x81df('0xb')](_0x1dce0b,_0x43f6a2)[_0x81df('0xc')](function(_0x12da77){logger[_0x81df('0xd')](_0x81df('0xe'),_0x26053b,_0x81df('0xf'));logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x26053b,_0x81df('0xf'),JSON[_0x81df('0x10')](_0x12da77));if(_0x12da77['error']){if(_0x12da77[_0x81df('0x11')][_0x81df('0x12')]===0x1f4){logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x12da77[_0x81df('0x11')][_0x81df('0x13')]);return _0x5e318d(_0x12da77[_0x81df('0x11')]['message']);}logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x12da77[_0x81df('0x11')]['message']);return _0x4c3421(_0x12da77[_0x81df('0x11')]['message']);}else{logger[_0x81df('0xd')](_0x81df('0xe'),_0x26053b,_0x81df('0xf'));_0x4c3421(_0x12da77['result']['message']);}})[_0x81df('0x14')](function(_0x110f62){logger[_0x81df('0x11')](_0x81df('0xe'),_0x26053b,_0x110f62);_0x5e318d(_0x110f62);});});}
\ No newline at end of file
index 1c49f3a..174efdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd2=['../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','exports','util','path','express','../../components/auth/service'];(function(_0x72a8a7,_0x1867e0){var _0xe4754c=function(_0x277dc3){while(--_0x277dc3){_0x72a8a7['push'](_0x72a8a7['shift']());}};_0xe4754c(++_0x1867e0);}(_0x5fd2,0x114));var _0x25fd=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x5fd2[_0x1d1779];return _0x2377e9;};'use strict';var multer=require('multer');var util=require(_0x25fd('0x0'));var path=require(_0x25fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x25fd('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x25fd('0x3'));var interaction=require(_0x25fd('0x4'));var config=require(_0x25fd('0x5'));var controller=require(_0x25fd('0x6'));router[_0x25fd('0x7')]('/',auth[_0x25fd('0x8')](),controller[_0x25fd('0x9')]);router[_0x25fd('0x7')](_0x25fd('0xa'),auth[_0x25fd('0x8')](),controller[_0x25fd('0xb')]);router[_0x25fd('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x25fd('0x8')](),controller['update']);router['delete'](_0x25fd('0xa'),auth[_0x25fd('0x8')](),controller['destroy']);module[_0x25fd('0xd')]=router;
\ No newline at end of file
+var _0xa547=['/:id','show','post','create','put','isAuthenticated','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','index'];(function(_0x57ee01,_0x5cd150){var _0x1e35c7=function(_0x347e7f){while(--_0x347e7f){_0x57ee01['push'](_0x57ee01['shift']());}};_0x1e35c7(++_0x5cd150);}(_0xa547,0xb0));var _0x7a54=function(_0xf9db2b,_0x3bafc5){_0xf9db2b=_0xf9db2b-0x0;var _0x4ceadd=_0xa547[_0xf9db2b];return _0x4ceadd;};'use strict';var multer=require(_0x7a54('0x0'));var util=require(_0x7a54('0x1'));var path=require(_0x7a54('0x2'));var timeout=require(_0x7a54('0x3'));var express=require(_0x7a54('0x4'));var router=express[_0x7a54('0x5')]();var fs_extra=require(_0x7a54('0x6'));var auth=require(_0x7a54('0x7'));var interaction=require(_0x7a54('0x8'));var config=require(_0x7a54('0x9'));var controller=require(_0x7a54('0xa'));router[_0x7a54('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a54('0xc')]);router[_0x7a54('0xb')](_0x7a54('0xd'),auth['isAuthenticated'](),controller[_0x7a54('0xe')]);router[_0x7a54('0xf')]('/',auth['isAuthenticated'](),controller[_0x7a54('0x10')]);router[_0x7a54('0x11')](_0x7a54('0xd'),auth[_0x7a54('0x12')](),controller[_0x7a54('0x13')]);router['delete'](_0x7a54('0xd'),auth[_0x7a54('0x12')](),controller[_0x7a54('0x14')]);module['exports']=router;
\ No newline at end of file
index 5c82bb1..5ac59db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x5880ef,_0x5695ff){var _0x47ed37=function(_0x731ed2){while(--_0x731ed2){_0x5880ef['push'](_0x5880ef['shift']());}};_0x47ed37(++_0x5695ff);}(_0xc900,0x168));var _0x0c90=function(_0x3a3550,_0x253f33){_0x3a3550=_0x3a3550-0x0;var _0x11ff57=_0xc900[_0x3a3550];return _0x11ff57;};'use strict';var Sequelize=require('sequelize');module[_0x0c90('0x0')]={'type':{'type':Sequelize[_0x0c90('0x1')](_0x0c90('0x2'),_0x0c90('0x3'),_0x0c90('0x4'),_0x0c90('0x5'),_0x0c90('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x0c90('0x7')]},'key':{'type':Sequelize[_0x0c90('0x7')]},'keyType':{'type':Sequelize[_0x0c90('0x1')](_0x0c90('0x2'),_0x0c90('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x0c90('0x7')]},'idField':{'type':Sequelize[_0x0c90('0x7')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5918=['ENUM','string','customVariable','keyValue','STRING','exports'];(function(_0x128c9d,_0x4d7638){var _0x5e196f=function(_0x218f50){while(--_0x218f50){_0x128c9d['push'](_0x128c9d['shift']());}};_0x5e196f(++_0x4d7638);}(_0x5918,0x11f));var _0x8591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5918[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8591('0x0')]={'type':{'type':Sequelize[_0x8591('0x1')](_0x8591('0x2'),'variable',_0x8591('0x3'),_0x8591('0x4'),'picklist'),'defaultValue':_0x8591('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8591('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x8591('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f1902fb..46d9b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf4f=['destroy','name','send','index','map','SalesforceField','type','key','query','keys','intersection','model','fields','attributes','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','save','then'];(function(_0x5c908c,_0x4bcfab){var _0x39325f=function(_0x20b5a6){while(--_0x20b5a6){_0x5c908c['push'](_0x5c908c['shift']());}};_0x39325f(++_0x4bcfab);}(_0xaf4f,0x136));var _0xfaf4=function(_0x2ae1ca,_0x2d1b72){_0x2ae1ca=_0x2ae1ca-0x0;var _0x2a864a=_0xaf4f[_0x2ae1ca];return _0x2a864a;};'use strict';var emlformat=require(_0xfaf4('0x0'));var rimraf=require(_0xfaf4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfaf4('0x2'));var rp=require(_0xfaf4('0x3'));var moment=require(_0xfaf4('0x4'));var BPromise=require(_0xfaf4('0x5'));var Mustache=require(_0xfaf4('0x6'));var util=require(_0xfaf4('0x7'));var path=require('path');var sox=require(_0xfaf4('0x8'));var csv=require(_0xfaf4('0x9'));var ejs=require(_0xfaf4('0xa'));var fs=require('fs');var fs_extra=require(_0xfaf4('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfaf4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfaf4('0xd'));var Papa=require('papaparse');var Redis=require(_0xfaf4('0xe'));var authService=require(_0xfaf4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfaf4('0x10'));var hardwareService=require(_0xfaf4('0x11'));var logger=require(_0xfaf4('0x12'))(_0xfaf4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfaf4('0x14'));var db=require(_0xfaf4('0x15'))['db'];function respondWithStatusCode(_0x331677,_0x5d901e){_0x5d901e=_0x5d901e||0xcc;return function(_0x42c6eb){if(_0x42c6eb){return _0x331677[_0xfaf4('0x16')](_0x5d901e);}return _0x331677['status'](_0x5d901e)[_0xfaf4('0x17')]();};}function respondWithResult(_0x7971eb,_0x587624){_0x587624=_0x587624||0xc8;return function(_0x8b9de){if(_0x8b9de){return _0x7971eb[_0xfaf4('0x18')](_0x587624)['json'](_0x8b9de);}};}function respondWithFilteredResult(_0xf31422,_0x472d57){return function(_0x4078c4){if(_0x4078c4){var _0x494190=typeof _0x472d57[_0xfaf4('0x19')]==='undefined'&&typeof _0x472d57['limit']===_0xfaf4('0x1a');var _0x28a828=_0x4078c4[_0xfaf4('0x1b')];var _0x207d93=_0x494190?0x0:_0x472d57[_0xfaf4('0x19')];var _0x5e106d=_0x494190?_0x4078c4[_0xfaf4('0x1b')]:_0x472d57[_0xfaf4('0x19')]+_0x472d57[_0xfaf4('0x1c')];var _0x50cd27;if(_0x5e106d>=_0x28a828){_0x5e106d=_0x28a828;_0x50cd27=0xc8;}else{_0x50cd27=0xce;}_0xf31422[_0xfaf4('0x18')](_0x50cd27);return _0xf31422[_0xfaf4('0x1d')](_0xfaf4('0x1e'),_0x207d93+'-'+_0x5e106d+'/'+_0x28a828)[_0xfaf4('0x1f')](_0x4078c4);}return null;};}function patchUpdates(_0x3f12e0){return function(_0x3f1fa1){try{jsonpatch[_0xfaf4('0x20')](_0x3f1fa1,_0x3f12e0,!![]);}catch(_0x42a43d){return BPromise['reject'](_0x42a43d);}return _0x3f1fa1[_0xfaf4('0x21')]();};}function saveUpdates(_0x28b82c,_0x1e185f){return function(_0x194b14){if(_0x194b14){return _0x194b14['update'](_0x28b82c)[_0xfaf4('0x22')](function(_0x14cc08){return _0x14cc08;});}return null;};}function removeEntity(_0x4e91f3,_0x2f12ff){return function(_0x2a3ffc){if(_0x2a3ffc){return _0x2a3ffc[_0xfaf4('0x23')]()['then'](function(){_0x4e91f3[_0xfaf4('0x18')](0xcc)[_0xfaf4('0x17')]();});}};}function handleEntityNotFound(_0x598598,_0x3eb3cf){return function(_0x4a3d4e){if(!_0x4a3d4e){_0x598598['sendStatus'](0x194);}return _0x4a3d4e;};}function handleError(_0x4c3506,_0x42593e){_0x42593e=_0x42593e||0x1f4;return function(_0x46e322){logger['error'](_0x46e322['stack']);if(_0x46e322[_0xfaf4('0x24')]){delete _0x46e322[_0xfaf4('0x24')];}_0x4c3506[_0xfaf4('0x18')](_0x42593e)[_0xfaf4('0x25')](_0x46e322);};}exports[_0xfaf4('0x26')]=function(_0x52cfea,_0x1f73ba){var _0x2ab081={},_0x1d7c4d={},_0x4c44a4={'count':0x0,'rows':[]};var _0x4d370a=_[_0xfaf4('0x27')](db[_0xfaf4('0x28')]['rawAttributes'],function(_0x3e4cbd){return{'name':_0x3e4cbd['fieldName'],'type':_0x3e4cbd[_0xfaf4('0x29')][_0xfaf4('0x2a')]};});_0x1d7c4d['model']=_[_0xfaf4('0x27')](_0x4d370a,_0xfaf4('0x24'));_0x1d7c4d[_0xfaf4('0x2b')]=_[_0xfaf4('0x2c')](_0x52cfea['query']);_0x1d7c4d['filters']=_[_0xfaf4('0x2d')](_0x1d7c4d[_0xfaf4('0x2e')],_0x1d7c4d[_0xfaf4('0x2b')]);_0x2ab081['attributes']=_['intersection'](_0x1d7c4d['model'],qs[_0xfaf4('0x2f')](_0x52cfea[_0xfaf4('0x2b')][_0xfaf4('0x2f')]));_0x2ab081[_0xfaf4('0x30')]=_0x2ab081[_0xfaf4('0x30')][_0xfaf4('0x31')]?_0x2ab081[_0xfaf4('0x30')]:_0x1d7c4d[_0xfaf4('0x2e')];if(!_0x52cfea[_0xfaf4('0x2b')]['hasOwnProperty'](_0xfaf4('0x32'))){_0x2ab081[_0xfaf4('0x1c')]=qs[_0xfaf4('0x1c')](_0x52cfea['query']['limit']);_0x2ab081[_0xfaf4('0x19')]=qs[_0xfaf4('0x19')](_0x52cfea['query']['offset']);}_0x2ab081['order']=qs['sort'](_0x52cfea[_0xfaf4('0x2b')][_0xfaf4('0x33')]);_0x2ab081[_0xfaf4('0x34')]=qs[_0xfaf4('0x35')](_[_0xfaf4('0x36')](_0x52cfea[_0xfaf4('0x2b')],_0x1d7c4d[_0xfaf4('0x35')]),_0x4d370a);if(_0x52cfea['query'][_0xfaf4('0x37')]){_0x2ab081['where']=_[_0xfaf4('0x38')](_0x2ab081[_0xfaf4('0x34')],{'$or':_[_0xfaf4('0x27')](_0x4d370a,function(_0x1ab3bc){if(_0x1ab3bc['type']!==_0xfaf4('0x39')){var _0x2ea2d0={};_0x2ea2d0[_0x1ab3bc[_0xfaf4('0x24')]]={'$like':'%'+_0x52cfea[_0xfaf4('0x2b')][_0xfaf4('0x37')]+'%'};return _0x2ea2d0;}})});}_0x2ab081=_[_0xfaf4('0x38')]({},_0x2ab081,_0x52cfea[_0xfaf4('0x3a')]);var _0x136eeb={'where':_0x2ab081[_0xfaf4('0x34')]};return db[_0xfaf4('0x28')][_0xfaf4('0x1b')](_0x136eeb)[_0xfaf4('0x22')](function(_0x28d1d7){_0x4c44a4['count']=_0x28d1d7;if(_0x52cfea[_0xfaf4('0x2b')][_0xfaf4('0x3b')]){_0x2ab081[_0xfaf4('0x3c')]=[{'all':!![]}];}return db[_0xfaf4('0x28')][_0xfaf4('0x3d')](_0x2ab081);})[_0xfaf4('0x22')](function(_0x1f60b8){_0x4c44a4[_0xfaf4('0x3e')]=_0x1f60b8;return _0x4c44a4;})[_0xfaf4('0x22')](respondWithFilteredResult(_0x1f73ba,_0x2ab081))[_0xfaf4('0x3f')](handleError(_0x1f73ba,null));};exports['show']=function(_0x389fbe,_0x2e7126){var _0x564722={'raw':!![],'where':{'id':_0x389fbe[_0xfaf4('0x40')]['id']}},_0x44b2b8={};_0x44b2b8[_0xfaf4('0x2e')]=_[_0xfaf4('0x2c')](db[_0xfaf4('0x28')][_0xfaf4('0x41')]);_0x44b2b8['query']=_[_0xfaf4('0x2c')](_0x389fbe['query']);_0x44b2b8[_0xfaf4('0x35')]=_[_0xfaf4('0x2d')](_0x44b2b8[_0xfaf4('0x2e')],_0x44b2b8[_0xfaf4('0x2b')]);_0x564722[_0xfaf4('0x30')]=_[_0xfaf4('0x2d')](_0x44b2b8[_0xfaf4('0x2e')],qs[_0xfaf4('0x2f')](_0x389fbe['query']['fields']));_0x564722[_0xfaf4('0x30')]=_0x564722[_0xfaf4('0x30')][_0xfaf4('0x31')]?_0x564722[_0xfaf4('0x30')]:_0x44b2b8[_0xfaf4('0x2e')];if(_0x389fbe[_0xfaf4('0x2b')][_0xfaf4('0x3b')]){_0x564722[_0xfaf4('0x3c')]=[{'all':!![]}];}_0x564722=_[_0xfaf4('0x38')]({},_0x564722,_0x389fbe[_0xfaf4('0x3a')]);return db[_0xfaf4('0x28')][_0xfaf4('0x42')](_0x564722)['then'](handleEntityNotFound(_0x2e7126,null))[_0xfaf4('0x22')](respondWithResult(_0x2e7126,null))[_0xfaf4('0x3f')](handleError(_0x2e7126,null));};exports[_0xfaf4('0x43')]=function(_0x368fa8,_0x33c89a){return db[_0xfaf4('0x28')]['create'](_0x368fa8['body'],{})[_0xfaf4('0x22')](respondWithResult(_0x33c89a,0xc9))[_0xfaf4('0x3f')](handleError(_0x33c89a,null));};exports['update']=function(_0x135aaf,_0x672473){if(_0x135aaf['body']['id']){delete _0x135aaf['body']['id'];}return db[_0xfaf4('0x28')][_0xfaf4('0x42')]({'where':{'id':_0x135aaf[_0xfaf4('0x40')]['id']}})['then'](handleEntityNotFound(_0x672473,null))[_0xfaf4('0x22')](saveUpdates(_0x135aaf[_0xfaf4('0x44')],null))[_0xfaf4('0x22')](respondWithResult(_0x672473,null))[_0xfaf4('0x3f')](handleError(_0x672473,null));};exports[_0xfaf4('0x23')]=function(_0x148ad5,_0x4f27d6){return db[_0xfaf4('0x28')][_0xfaf4('0x42')]({'where':{'id':_0x148ad5['params']['id']}})[_0xfaf4('0x22')](handleEntityNotFound(_0x4f27d6,null))[_0xfaf4('0x22')](removeEntity(_0x4f27d6,null))['catch'](handleError(_0x4f27d6,null));};
\ No newline at end of file
+var _0x22dd=['SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','merge','options','include','findAll','catch','show','params','keys','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map'];(function(_0x5953d3,_0xebf3f3){var _0x3a4d54=function(_0x13f7a4){while(--_0x13f7a4){_0x5953d3['push'](_0x5953d3['shift']());}};_0x3a4d54(++_0xebf3f3);}(_0x22dd,0x199));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd22d('0x0'));var rimraf=require(_0xd22d('0x1'));var zipdir=require(_0xd22d('0x2'));var jsonpatch=require(_0xd22d('0x3'));var rp=require(_0xd22d('0x4'));var moment=require(_0xd22d('0x5'));var BPromise=require(_0xd22d('0x6'));var Mustache=require(_0xd22d('0x7'));var util=require(_0xd22d('0x8'));var path=require(_0xd22d('0x9'));var sox=require('sox');var csv=require(_0xd22d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd22d('0xb'));var _=require(_0xd22d('0xc'));var squel=require(_0xd22d('0xd'));var crypto=require('crypto');var jsforce=require(_0xd22d('0xe'));var deskjs=require(_0xd22d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd22d('0x10'));var Redis=require(_0xd22d('0x11'));var authService=require(_0xd22d('0x12'));var qs=require(_0xd22d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd22d('0x14'));var logger=require(_0xd22d('0x15'))(_0xd22d('0x16'));var utils=require(_0xd22d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xd22d('0x18'));var db=require(_0xd22d('0x19'))['db'];function respondWithStatusCode(_0x4ea4ec,_0x325b39){_0x325b39=_0x325b39||0xcc;return function(_0x430beb){if(_0x430beb){return _0x4ea4ec[_0xd22d('0x1a')](_0x325b39);}return _0x4ea4ec['status'](_0x325b39)[_0xd22d('0x1b')]();};}function respondWithResult(_0x1f967a,_0x5ab146){_0x5ab146=_0x5ab146||0xc8;return function(_0x4ad4c4){if(_0x4ad4c4){return _0x1f967a[_0xd22d('0x1c')](_0x5ab146)[_0xd22d('0x1d')](_0x4ad4c4);}};}function respondWithFilteredResult(_0x2cd672,_0x335dfd){return function(_0x294617){if(_0x294617){var _0x5aa245=typeof _0x335dfd[_0xd22d('0x1e')]===_0xd22d('0x1f')&&typeof _0x335dfd['limit']===_0xd22d('0x1f');var _0xc13a6a=_0x294617[_0xd22d('0x20')];var _0x35d146=_0x5aa245?0x0:_0x335dfd[_0xd22d('0x1e')];var _0x20cc10=_0x5aa245?_0x294617[_0xd22d('0x20')]:_0x335dfd[_0xd22d('0x1e')]+_0x335dfd[_0xd22d('0x21')];var _0x5c20a7;if(_0x20cc10>=_0xc13a6a){_0x20cc10=_0xc13a6a;_0x5c20a7=0xc8;}else{_0x5c20a7=0xce;}_0x2cd672[_0xd22d('0x1c')](_0x5c20a7);return _0x2cd672[_0xd22d('0x22')](_0xd22d('0x23'),_0x35d146+'-'+_0x20cc10+'/'+_0xc13a6a)[_0xd22d('0x1d')](_0x294617);}return null;};}function patchUpdates(_0x1a3506){return function(_0x532760){try{jsonpatch[_0xd22d('0x24')](_0x532760,_0x1a3506,!![]);}catch(_0x4509e0){return BPromise[_0xd22d('0x25')](_0x4509e0);}return _0x532760[_0xd22d('0x26')]();};}function saveUpdates(_0x21a789,_0x134f66){return function(_0x3de9cd){if(_0x3de9cd){return _0x3de9cd['update'](_0x21a789)[_0xd22d('0x27')](function(_0xa02045){return _0xa02045;});}return null;};}function removeEntity(_0x299a3b,_0x32ca2a){return function(_0x520326){if(_0x520326){return _0x520326[_0xd22d('0x28')]()[_0xd22d('0x27')](function(){_0x299a3b[_0xd22d('0x1c')](0xcc)[_0xd22d('0x1b')]();});}};}function handleEntityNotFound(_0x2ce8e4,_0x34e26f){return function(_0x4bc7a1){if(!_0x4bc7a1){_0x2ce8e4[_0xd22d('0x1a')](0x194);}return _0x4bc7a1;};}function handleError(_0x11ec2d,_0x4dee0f){_0x4dee0f=_0x4dee0f||0x1f4;return function(_0x292551){logger[_0xd22d('0x29')](_0x292551[_0xd22d('0x2a')]);if(_0x292551[_0xd22d('0x2b')]){delete _0x292551[_0xd22d('0x2b')];}_0x11ec2d['status'](_0x4dee0f)[_0xd22d('0x2c')](_0x292551);};}exports[_0xd22d('0x2d')]=function(_0x4b6595,_0x16af61){var _0x1577a4={},_0x5ac8a0={},_0x5393d4={'count':0x0,'rows':[]};var _0xe696ab=_[_0xd22d('0x2e')](db[_0xd22d('0x2f')][_0xd22d('0x30')],function(_0x56fb45){return{'name':_0x56fb45[_0xd22d('0x31')],'type':_0x56fb45['type'][_0xd22d('0x32')]};});_0x5ac8a0[_0xd22d('0x33')]=_[_0xd22d('0x2e')](_0xe696ab,'name');_0x5ac8a0[_0xd22d('0x34')]=_['keys'](_0x4b6595[_0xd22d('0x34')]);_0x5ac8a0[_0xd22d('0x35')]=_[_0xd22d('0x36')](_0x5ac8a0['model'],_0x5ac8a0[_0xd22d('0x34')]);_0x1577a4[_0xd22d('0x37')]=_[_0xd22d('0x36')](_0x5ac8a0['model'],qs[_0xd22d('0x38')](_0x4b6595[_0xd22d('0x34')][_0xd22d('0x38')]));_0x1577a4[_0xd22d('0x37')]=_0x1577a4['attributes'][_0xd22d('0x39')]?_0x1577a4['attributes']:_0x5ac8a0[_0xd22d('0x33')];if(!_0x4b6595['query'][_0xd22d('0x3a')](_0xd22d('0x3b'))){_0x1577a4[_0xd22d('0x21')]=qs[_0xd22d('0x21')](_0x4b6595[_0xd22d('0x34')]['limit']);_0x1577a4[_0xd22d('0x1e')]=qs[_0xd22d('0x1e')](_0x4b6595['query']['offset']);}_0x1577a4['order']=qs['sort'](_0x4b6595['query'][_0xd22d('0x3c')]);_0x1577a4['where']=qs[_0xd22d('0x35')](_[_0xd22d('0x3d')](_0x4b6595[_0xd22d('0x34')],_0x5ac8a0[_0xd22d('0x35')]),_0xe696ab);if(_0x4b6595[_0xd22d('0x34')]['filter']){_0x1577a4['where']=_['merge'](_0x1577a4[_0xd22d('0x3e')],{'$or':_[_0xd22d('0x2e')](_0xe696ab,function(_0x56e6b7){if(_0x56e6b7[_0xd22d('0x3f')]!=='VIRTUAL'){var _0x780b22={};_0x780b22[_0x56e6b7[_0xd22d('0x2b')]]={'$like':'%'+_0x4b6595[_0xd22d('0x34')]['filter']+'%'};return _0x780b22;}})});}_0x1577a4=_[_0xd22d('0x40')]({},_0x1577a4,_0x4b6595[_0xd22d('0x41')]);var _0x18d44c={'where':_0x1577a4[_0xd22d('0x3e')]};return db[_0xd22d('0x2f')][_0xd22d('0x20')](_0x18d44c)['then'](function(_0x36246b){_0x5393d4[_0xd22d('0x20')]=_0x36246b;if(_0x4b6595[_0xd22d('0x34')]['includeAll']){_0x1577a4[_0xd22d('0x42')]=[{'all':!![]}];}return db[_0xd22d('0x2f')][_0xd22d('0x43')](_0x1577a4);})[_0xd22d('0x27')](function(_0x2eaf17){_0x5393d4['rows']=_0x2eaf17;return _0x5393d4;})[_0xd22d('0x27')](respondWithFilteredResult(_0x16af61,_0x1577a4))[_0xd22d('0x44')](handleError(_0x16af61,null));};exports[_0xd22d('0x45')]=function(_0x5dbf84,_0x96e53a){var _0x5324c2={'raw':!![],'where':{'id':_0x5dbf84[_0xd22d('0x46')]['id']}},_0x30daa6={};_0x30daa6['model']=_[_0xd22d('0x47')](db[_0xd22d('0x2f')][_0xd22d('0x30')]);_0x30daa6[_0xd22d('0x34')]=_['keys'](_0x5dbf84[_0xd22d('0x34')]);_0x30daa6[_0xd22d('0x35')]=_[_0xd22d('0x36')](_0x30daa6['model'],_0x30daa6[_0xd22d('0x34')]);_0x5324c2['attributes']=_[_0xd22d('0x36')](_0x30daa6[_0xd22d('0x33')],qs[_0xd22d('0x38')](_0x5dbf84[_0xd22d('0x34')]['fields']));_0x5324c2[_0xd22d('0x37')]=_0x5324c2[_0xd22d('0x37')][_0xd22d('0x39')]?_0x5324c2[_0xd22d('0x37')]:_0x30daa6[_0xd22d('0x33')];if(_0x5dbf84[_0xd22d('0x34')][_0xd22d('0x48')]){_0x5324c2[_0xd22d('0x42')]=[{'all':!![]}];}_0x5324c2=_[_0xd22d('0x40')]({},_0x5324c2,_0x5dbf84['options']);return db[_0xd22d('0x2f')][_0xd22d('0x49')](_0x5324c2)[_0xd22d('0x27')](handleEntityNotFound(_0x96e53a,null))[_0xd22d('0x27')](respondWithResult(_0x96e53a,null))['catch'](handleError(_0x96e53a,null));};exports['create']=function(_0x4ce11c,_0x1a2675){return db['SalesforceField'][_0xd22d('0x4a')](_0x4ce11c[_0xd22d('0x4b')],{})['then'](respondWithResult(_0x1a2675,0xc9))[_0xd22d('0x44')](handleError(_0x1a2675,null));};exports['update']=function(_0x3f5f75,_0x6e28a){if(_0x3f5f75[_0xd22d('0x4b')]['id']){delete _0x3f5f75[_0xd22d('0x4b')]['id'];}return db[_0xd22d('0x2f')][_0xd22d('0x49')]({'where':{'id':_0x3f5f75['params']['id']}})['then'](handleEntityNotFound(_0x6e28a,null))[_0xd22d('0x27')](saveUpdates(_0x3f5f75[_0xd22d('0x4b')],null))[_0xd22d('0x27')](respondWithResult(_0x6e28a,null))[_0xd22d('0x44')](handleError(_0x6e28a,null));};exports[_0xd22d('0x28')]=function(_0xd41f1a,_0x182373){return db[_0xd22d('0x2f')][_0xd22d('0x49')]({'where':{'id':_0xd41f1a[_0xd22d('0x46')]['id']}})[_0xd22d('0x27')](handleEntityNotFound(_0x182373,null))['then'](removeEntity(_0x182373,null))[_0xd22d('0x44')](handleError(_0x182373,null));};
\ No newline at end of file
index f9f1be6..aa5960a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cc3=['./intSalesforceField.attributes','exports','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment'];(function(_0x438912,_0x3f7f74){var _0x18112f=function(_0x1b8ac9){while(--_0x1b8ac9){_0x438912['push'](_0x438912['shift']());}};_0x18112f(++_0x3f7f74);}(_0x4cc3,0x199));var _0x34cc=function(_0x549522,_0x4dc01c){_0x549522=_0x549522-0x0;var _0xf97d2a=_0x4cc3[_0x549522];return _0xf97d2a;};'use strict';var _=require(_0x34cc('0x0'));var util=require(_0x34cc('0x1'));var logger=require(_0x34cc('0x2'))('api');var moment=require(_0x34cc('0x3'));var BPromise=require(_0x34cc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x34cc('0x5'));var config=require(_0x34cc('0x6'));var attributes=require(_0x34cc('0x7'));module[_0x34cc('0x8')]=function(_0x1b409e,_0x224326){return _0x1b409e['define']('SalesforceField',attributes,{'tableName':_0x34cc('0x9'),'paranoid':![],'indexes':[{'name':_0x34cc('0xa'),'fields':[_0x34cc('0xb'),_0x34cc('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x10ed=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId'];(function(_0x198921,_0x3df5e3){var _0x17ea4a=function(_0x524d00){while(--_0x524d00){_0x198921['push'](_0x198921['shift']());}};_0x17ea4a(++_0x3df5e3);}(_0x10ed,0x90));var _0xd10e=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x10ed[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xd10e('0x0'));var util=require(_0xd10e('0x1'));var logger=require(_0xd10e('0x2'))(_0xd10e('0x3'));var moment=require('moment');var BPromise=require(_0xd10e('0x4'));var rp=require(_0xd10e('0x5'));var fs=require('fs');var path=require(_0xd10e('0x6'));var rimraf=require(_0xd10e('0x7'));var config=require('../../config/environment');var attributes=require(_0xd10e('0x8'));module[_0xd10e('0x9')]=function(_0x46d2b7,_0x379805){return _0x46d2b7[_0xd10e('0xa')](_0xd10e('0xb'),attributes,{'tableName':_0xd10e('0xc'),'paranoid':![],'indexes':[{'name':_0xd10e('0xd'),'fields':[_0xd10e('0xe'),_0xd10e('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2717e68..14589b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f0=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','result'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0xf6f0,0x1b2));var _0x0f6f=function(_0x178a9c,_0x562a28){_0x178a9c=_0x178a9c-0x0;var _0x3fd933=_0xf6f0[_0x178a9c];return _0x3fd933;};'use strict';var _=require(_0x0f6f('0x0'));var util=require(_0x0f6f('0x1'));var moment=require(_0x0f6f('0x2'));var BPromise=require(_0x0f6f('0x3'));var rs=require(_0x0f6f('0x4'));var fs=require('fs');var Redis=require(_0x0f6f('0x5'));var db=require(_0x0f6f('0x6'))['db'];var utils=require(_0x0f6f('0x7'));var logger=require(_0x0f6f('0x8'))(_0x0f6f('0x9'));var config=require(_0x0f6f('0xa'));var jayson=require(_0x0f6f('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x47bd61,_0x4fb550,_0x9753){return new BPromise(function(_0xab7e7a,_0x1ae484){return client[_0x0f6f('0xc')](_0x47bd61,_0x9753)[_0x0f6f('0xd')](function(_0x2e14f7){logger[_0x0f6f('0xe')](_0x0f6f('0xf'),_0x4fb550,_0x0f6f('0x10'));logger['debug'](_0x0f6f('0x11'),_0x4fb550,_0x0f6f('0x10'),JSON[_0x0f6f('0x12')](_0x2e14f7));if(_0x2e14f7[_0x0f6f('0x13')]){if(_0x2e14f7[_0x0f6f('0x13')][_0x0f6f('0x14')]===0x1f4){logger[_0x0f6f('0x13')](_0x0f6f('0xf'),_0x4fb550,_0x2e14f7[_0x0f6f('0x13')]['message']);return _0x1ae484(_0x2e14f7[_0x0f6f('0x13')]['message']);}logger['error']('SalesforceField,\x20%s,\x20%s',_0x4fb550,_0x2e14f7['error']['message']);return _0xab7e7a(_0x2e14f7[_0x0f6f('0x13')]['message']);}else{logger[_0x0f6f('0xe')](_0x0f6f('0xf'),_0x4fb550,_0x0f6f('0x10'));_0xab7e7a(_0x2e14f7[_0x0f6f('0x15')][_0x0f6f('0x16')]);}})[_0x0f6f('0x17')](function(_0xb0a3d1){logger[_0x0f6f('0x13')]('SalesforceField,\x20%s,\x20%s',_0x4fb550,_0xb0a3d1);_0x1ae484(_0xb0a3d1);});});}
\ No newline at end of file
+var _0x54b2=['info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then'];(function(_0x19fc15,_0x34c037){var _0x167db5=function(_0x5b3d28){while(--_0x5b3d28){_0x19fc15['push'](_0x19fc15['shift']());}};_0x167db5(++_0x34c037);}(_0x54b2,0x82));var _0x254b=function(_0x2282ab,_0x2c07b1){_0x2282ab=_0x2282ab-0x0;var _0x75664b=_0x54b2[_0x2282ab];return _0x75664b;};'use strict';var _=require('lodash');var util=require(_0x254b('0x0'));var moment=require('moment');var BPromise=require(_0x254b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x254b('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x254b('0x3'));var logger=require(_0x254b('0x4'))(_0x254b('0x5'));var config=require(_0x254b('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x254b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2ac8e8,_0x263ce9,_0x57203b){return new BPromise(function(_0x2e62a2,_0x2d3c33){return client[_0x254b('0x8')](_0x2ac8e8,_0x57203b)[_0x254b('0x9')](function(_0x29501f){logger[_0x254b('0xa')](_0x254b('0xb'),_0x263ce9,_0x254b('0xc'));logger[_0x254b('0xd')](_0x254b('0xe'),_0x263ce9,_0x254b('0xc'),JSON['stringify'](_0x29501f));if(_0x29501f[_0x254b('0xf')]){if(_0x29501f[_0x254b('0xf')][_0x254b('0x10')]===0x1f4){logger[_0x254b('0xf')]('SalesforceField,\x20%s,\x20%s',_0x263ce9,_0x29501f['error']['message']);return _0x2d3c33(_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);}logger[_0x254b('0xf')](_0x254b('0xb'),_0x263ce9,_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);return _0x2e62a2(_0x29501f[_0x254b('0xf')][_0x254b('0x11')]);}else{logger[_0x254b('0xa')](_0x254b('0xb'),_0x263ce9,_0x254b('0xc'));_0x2e62a2(_0x29501f[_0x254b('0x12')][_0x254b('0x11')]);}})[_0x254b('0x13')](function(_0x27ac62){logger[_0x254b('0xf')]('SalesforceField,\x20%s,\x20%s',_0x263ce9,_0x27ac62);_0x2d3c33(_0x27ac62);});});}
\ No newline at end of file
index 7d17f48..16d6e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac52=['Router','../../components/auth/service','../../components/interaction/service','./intServicenowAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','create','put','update','delete','exports','util','path','connect-timeout','express'];(function(_0x4e1803,_0x5ea1d3){var _0x473d66=function(_0x2598af){while(--_0x2598af){_0x4e1803['push'](_0x4e1803['shift']());}};_0x473d66(++_0x5ea1d3);}(_0xac52,0x122));var _0x2ac5=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xac52[_0x3c2a69];return _0x596bc8;};'use strict';var multer=require('multer');var util=require(_0x2ac5('0x0'));var path=require(_0x2ac5('0x1'));var timeout=require(_0x2ac5('0x2'));var express=require(_0x2ac5('0x3'));var router=express[_0x2ac5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2ac5('0x5'));var interaction=require(_0x2ac5('0x6'));var config=require('../../config/environment');var controller=require(_0x2ac5('0x7'));router[_0x2ac5('0x8')]('/',auth[_0x2ac5('0x9')](),controller['index']);router['get'](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xb')]);router[_0x2ac5('0x8')](_0x2ac5('0xc'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xd')]);router[_0x2ac5('0x8')](_0x2ac5('0xe'),auth[_0x2ac5('0x9')](),controller['getFields']);router[_0x2ac5('0xf')]('/',auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x10')]);router[_0x2ac5('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0x2ac5('0x11')](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x12')]);router[_0x2ac5('0x13')]('/:id',auth[_0x2ac5('0x9')](),controller['destroy']);module[_0x2ac5('0x14')]=router;
\ No newline at end of file
+var _0x5c9c=['update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index','isAuthenticated','/:id/fields','getFields','post','create','/:id/configurations','/:id'];(function(_0x33ddae,_0x573086){var _0x1f1cc8=function(_0x560e7b){while(--_0x560e7b){_0x33ddae['push'](_0x33ddae['shift']());}};_0x1f1cc8(++_0x573086);}(_0x5c9c,0x1d1));var _0xc5c9=function(_0x3c717d,_0x337eea){_0x3c717d=_0x3c717d-0x0;var _0x27486b=_0x5c9c[_0x3c717d];return _0x27486b;};'use strict';var multer=require(_0xc5c9('0x0'));var util=require(_0xc5c9('0x1'));var path=require(_0xc5c9('0x2'));var timeout=require(_0xc5c9('0x3'));var express=require(_0xc5c9('0x4'));var router=express['Router']();var fs_extra=require(_0xc5c9('0x5'));var auth=require(_0xc5c9('0x6'));var interaction=require(_0xc5c9('0x7'));var config=require(_0xc5c9('0x8'));var controller=require(_0xc5c9('0x9'));router[_0xc5c9('0xa')]('/',auth['isAuthenticated'](),controller[_0xc5c9('0xb')]);router[_0xc5c9('0xa')]('/:id',auth[_0xc5c9('0xc')](),controller['show']);router['get']('/:id/configurations',auth[_0xc5c9('0xc')](),controller['getConfigurations']);router[_0xc5c9('0xa')](_0xc5c9('0xd'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0xe')]);router[_0xc5c9('0xf')]('/',auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x10')]);router[_0xc5c9('0xf')](_0xc5c9('0x11'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0xc5c9('0x12'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x13')]);router['delete'](_0xc5c9('0x12'),auth[_0xc5c9('0xc')](),controller[_0xc5c9('0x14')]);module[_0xc5c9('0x15')]=router;
\ No newline at end of file
index 67bbf8c..45b0fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb761=['STRING','username','remoteUri','sequelize'];(function(_0x2c9bf0,_0x4999f1){var _0x14fa8a=function(_0x44d2fb){while(--_0x44d2fb){_0x2c9bf0['push'](_0x2c9bf0['shift']());}};_0x14fa8a(++_0x4999f1);}(_0xb761,0x147));var _0x1b76=function(_0x18e52b,_0x1fae35){_0x18e52b=_0x18e52b-0x0;var _0x3d3062=_0xb761[_0x18e52b];return _0x3d3062;};'use strict';var Sequelize=require(_0x1b76('0x0'));module['exports']={'name':{'type':Sequelize[_0x1b76('0x1')]},'description':{'type':Sequelize[_0x1b76('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x1b76('0x2')},'password':{'type':Sequelize[_0x1b76('0x1')]},'email':{'type':Sequelize[_0x1b76('0x1')]},'remoteUri':{'type':Sequelize[_0x1b76('0x1')],'unique':_0x1b76('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x0a52=['STRING','username','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a52,0x9b));var _0x20a5=function(_0x3eef3a,_0x257124){_0x3eef3a=_0x3eef3a-0x0;var _0x225b1e=_0x0a52[_0x3eef3a];return _0x225b1e;};'use strict';var Sequelize=require(_0x20a5('0x0'));module['exports']={'name':{'type':Sequelize[_0x20a5('0x1')]},'description':{'type':Sequelize[_0x20a5('0x1')]},'username':{'type':Sequelize[_0x20a5('0x1')],'unique':_0x20a5('0x2')},'password':{'type':Sequelize[_0x20a5('0x1')]},'email':{'type':Sequelize[_0x20a5('0x1')]},'remoteUri':{'type':Sequelize[_0x20a5('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x20a5('0x1')],'allowNull':![]}};
\ No newline at end of file
index 36b89b0..0becc14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43ba=['all','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','True','true','False','false','inactive','value','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','ServicenowAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','filter','includeAll','include','findAll','rows','catch','params','rawAttributes','options','create','body','find','getConfigurations','findOne','ServicenowConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','category','watch_list','upon_reject','child_incidents','approval_history','number','resolved_by','sys_updated_by','user_input','sys_created_on','sys_domain','state','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','work_notes','short_description','correlation_display','delivery_task','work_start','business_stc','additional_assignee_list','description','sys_class_name','closed_by','follow_up','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','sys_mod_count','reopen_count','correlation_id','location','username','password','email','remoteUri','serverUrl','slice','substring','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','push','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach'];(function(_0x4a2f0e,_0x5bb131){var _0x2480a2=function(_0x5f04d5){while(--_0x5f04d5){_0x4a2f0e['push'](_0x4a2f0e['shift']());}};_0x2480a2(++_0x5bb131);}(_0x43ba,0x17e));var _0xa43b=function(_0x195c06,_0x4a2b70){_0x195c06=_0x195c06-0x0;var _0x52aaac=_0x43ba[_0x195c06];return _0x52aaac;};'use strict';var emlformat=require(_0xa43b('0x0'));var rimraf=require(_0xa43b('0x1'));var zipdir=require(_0xa43b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa43b('0x3'));var moment=require(_0xa43b('0x4'));var BPromise=require(_0xa43b('0x5'));var Mustache=require(_0xa43b('0x6'));var util=require(_0xa43b('0x7'));var path=require('path');var sox=require(_0xa43b('0x8'));var csv=require(_0xa43b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa43b('0xa'));var _=require(_0xa43b('0xb'));var squel=require(_0xa43b('0xc'));var crypto=require('crypto');var jsforce=require(_0xa43b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa43b('0x9'));var querystring=require(_0xa43b('0xe'));var Papa=require(_0xa43b('0xf'));var Redis=require(_0xa43b('0x10'));var authService=require(_0xa43b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa43b('0x12'));var hardwareService=require(_0xa43b('0x13'));var logger=require(_0xa43b('0x14'))('api');var utils=require(_0xa43b('0x15'));var config=require(_0xa43b('0x16'));var licenseUtil=require(_0xa43b('0x17'));var db=require(_0xa43b('0x18'))['db'];var integrations=require(_0xa43b('0x19'));function respondWithStatusCode(_0x3cdff5,_0x407fcf){_0x407fcf=_0x407fcf||0xcc;return function(_0xe3bb05){if(_0xe3bb05){return _0x3cdff5['sendStatus'](_0x407fcf);}return _0x3cdff5[_0xa43b('0x1a')](_0x407fcf)[_0xa43b('0x1b')]();};}function respondWithResult(_0x537ae3,_0xfd29ad){_0xfd29ad=_0xfd29ad||0xc8;return function(_0x3e4077){if(_0x3e4077){return _0x537ae3['status'](_0xfd29ad)[_0xa43b('0x1c')](_0x3e4077);}};}function respondWithFilteredResult(_0x176b37,_0x195ab3){return function(_0x9d408a){if(_0x9d408a){var _0x1d0d6d=typeof _0x195ab3[_0xa43b('0x1d')]==='undefined'&&typeof _0x195ab3[_0xa43b('0x1e')]===_0xa43b('0x1f');var _0x32364c=_0x9d408a['count'];var _0x526c8f=_0x1d0d6d?0x0:_0x195ab3[_0xa43b('0x1d')];var _0x3eb7d8=_0x1d0d6d?_0x9d408a[_0xa43b('0x20')]:_0x195ab3[_0xa43b('0x1d')]+_0x195ab3[_0xa43b('0x1e')];var _0x494d6b;if(_0x3eb7d8>=_0x32364c){_0x3eb7d8=_0x32364c;_0x494d6b=0xc8;}else{_0x494d6b=0xce;}_0x176b37[_0xa43b('0x1a')](_0x494d6b);return _0x176b37[_0xa43b('0x21')](_0xa43b('0x22'),_0x526c8f+'-'+_0x3eb7d8+'/'+_0x32364c)[_0xa43b('0x1c')](_0x9d408a);}return null;};}function patchUpdates(_0x52adc2){return function(_0xa019a3){try{jsonpatch[_0xa43b('0x23')](_0xa019a3,_0x52adc2,!![]);}catch(_0x3390e7){return BPromise[_0xa43b('0x24')](_0x3390e7);}return _0xa019a3[_0xa43b('0x25')]();};}function saveUpdates(_0x16e15e,_0x24157a){return function(_0x5e8519){if(_0x5e8519){return _0x5e8519[_0xa43b('0x26')](_0x16e15e)[_0xa43b('0x27')](function(_0x3c1860){return _0x3c1860;});}return null;};}function removeEntity(_0x351040,_0x3e3097){return function(_0x55b06e){if(_0x55b06e){return _0x55b06e[_0xa43b('0x28')]()['then'](function(){_0x351040[_0xa43b('0x1a')](0xcc)[_0xa43b('0x1b')]();});}};}function handleEntityNotFound(_0x1c7ef4,_0x1a9e6a){return function(_0x56b708){if(!_0x56b708){_0x1c7ef4[_0xa43b('0x29')](0x194);}return _0x56b708;};}function handleError(_0x553ecb,_0x1b6214){_0x1b6214=_0x1b6214||0x1f4;return function(_0x2bde7a){logger[_0xa43b('0x2a')](_0x2bde7a[_0xa43b('0x2b')]);if(_0x2bde7a[_0xa43b('0x2c')]){delete _0x2bde7a[_0xa43b('0x2c')];}_0x553ecb[_0xa43b('0x1a')](_0x1b6214)[_0xa43b('0x2d')](_0x2bde7a);};}exports['index']=function(_0x40043d,_0x577732){var _0x16db29={},_0x207bb5={},_0x397667={'count':0x0,'rows':[]};var _0x165e0a=_[_0xa43b('0x2e')](db[_0xa43b('0x2f')]['rawAttributes'],function(_0x1d08c2){return{'name':_0x1d08c2[_0xa43b('0x30')],'type':_0x1d08c2[_0xa43b('0x31')]['key']};});_0x207bb5[_0xa43b('0x32')]=_['map'](_0x165e0a,_0xa43b('0x2c'));_0x207bb5[_0xa43b('0x33')]=_[_0xa43b('0x34')](_0x40043d['query']);_0x207bb5[_0xa43b('0x35')]=_[_0xa43b('0x36')](_0x207bb5[_0xa43b('0x32')],_0x207bb5[_0xa43b('0x33')]);_0x16db29[_0xa43b('0x37')]=_[_0xa43b('0x36')](_0x207bb5[_0xa43b('0x32')],qs[_0xa43b('0x38')](_0x40043d['query']['fields']));_0x16db29[_0xa43b('0x37')]=_0x16db29[_0xa43b('0x37')][_0xa43b('0x39')]?_0x16db29['attributes']:_0x207bb5[_0xa43b('0x32')];if(!_0x40043d[_0xa43b('0x33')][_0xa43b('0x3a')](_0xa43b('0x3b'))){_0x16db29[_0xa43b('0x1e')]=qs['limit'](_0x40043d['query'][_0xa43b('0x1e')]);_0x16db29[_0xa43b('0x1d')]=qs['offset'](_0x40043d['query'][_0xa43b('0x1d')]);}_0x16db29[_0xa43b('0x3c')]=qs['sort'](_0x40043d[_0xa43b('0x33')][_0xa43b('0x3d')]);_0x16db29['where']=qs[_0xa43b('0x35')](_['pick'](_0x40043d[_0xa43b('0x33')],_0x207bb5[_0xa43b('0x35')]),_0x165e0a);if(_0x40043d[_0xa43b('0x33')]['filter']){_0x16db29['where']=_[_0xa43b('0x3e')](_0x16db29[_0xa43b('0x3f')],{'$or':_[_0xa43b('0x2e')](_0x165e0a,function(_0xaa5c5d){if(_0xaa5c5d[_0xa43b('0x31')]!=='VIRTUAL'){var _0x284d1a={};_0x284d1a[_0xaa5c5d[_0xa43b('0x2c')]]={'$like':'%'+_0x40043d[_0xa43b('0x33')][_0xa43b('0x40')]+'%'};return _0x284d1a;}})});}_0x16db29=_[_0xa43b('0x3e')]({},_0x16db29,_0x40043d['options']);var _0xdf2b8f={'where':_0x16db29[_0xa43b('0x3f')]};return db[_0xa43b('0x2f')][_0xa43b('0x20')](_0xdf2b8f)[_0xa43b('0x27')](function(_0x515948){_0x397667[_0xa43b('0x20')]=_0x515948;if(_0x40043d['query'][_0xa43b('0x41')]){_0x16db29[_0xa43b('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0xa43b('0x43')](_0x16db29);})[_0xa43b('0x27')](function(_0x4453ac){_0x397667[_0xa43b('0x44')]=_0x4453ac;return _0x397667;})[_0xa43b('0x27')](respondWithFilteredResult(_0x577732,_0x16db29))[_0xa43b('0x45')](handleError(_0x577732,null));};exports['show']=function(_0x4d9e6a,_0x52b1e7){var _0x5793a0={'raw':![],'where':{'id':_0x4d9e6a[_0xa43b('0x46')]['id']}},_0x358d7c={};_0x358d7c[_0xa43b('0x32')]=_[_0xa43b('0x34')](db[_0xa43b('0x2f')][_0xa43b('0x47')]);_0x358d7c[_0xa43b('0x33')]=_[_0xa43b('0x34')](_0x4d9e6a[_0xa43b('0x33')]);_0x358d7c['filters']=_['intersection'](_0x358d7c['model'],_0x358d7c[_0xa43b('0x33')]);_0x5793a0[_0xa43b('0x37')]=_[_0xa43b('0x36')](_0x358d7c[_0xa43b('0x32')],qs['fields'](_0x4d9e6a[_0xa43b('0x33')][_0xa43b('0x38')]));_0x5793a0[_0xa43b('0x37')]=_0x5793a0[_0xa43b('0x37')][_0xa43b('0x39')]?_0x5793a0[_0xa43b('0x37')]:_0x358d7c['model'];if(_0x4d9e6a[_0xa43b('0x33')][_0xa43b('0x41')]){_0x5793a0[_0xa43b('0x42')]=[{'all':!![]}];}_0x5793a0=_[_0xa43b('0x3e')]({},_0x5793a0,_0x4d9e6a[_0xa43b('0x48')]);return db['ServicenowAccount']['find'](_0x5793a0)[_0xa43b('0x27')](handleEntityNotFound(_0x52b1e7,null))[_0xa43b('0x27')](respondWithResult(_0x52b1e7,null))[_0xa43b('0x45')](handleError(_0x52b1e7,null));};exports[_0xa43b('0x49')]=function(_0x138cfe,_0x30ee3c){return db[_0xa43b('0x2f')][_0xa43b('0x49')](_0x138cfe[_0xa43b('0x4a')],{})[_0xa43b('0x27')](respondWithResult(_0x30ee3c,0xc9))[_0xa43b('0x45')](handleError(_0x30ee3c,null));};exports[_0xa43b('0x26')]=function(_0x2b1103,_0x5c2552){if(_0x2b1103[_0xa43b('0x4a')]['id']){delete _0x2b1103[_0xa43b('0x4a')]['id'];}return db[_0xa43b('0x2f')]['find']({'where':{'id':_0x2b1103[_0xa43b('0x46')]['id']}})['then'](handleEntityNotFound(_0x5c2552,null))[_0xa43b('0x27')](saveUpdates(_0x2b1103[_0xa43b('0x4a')],null))[_0xa43b('0x27')](respondWithResult(_0x5c2552,null))[_0xa43b('0x45')](handleError(_0x5c2552,null));};exports[_0xa43b('0x28')]=function(_0x39dff4,_0x1b204a){return db['ServicenowAccount'][_0xa43b('0x4b')]({'where':{'id':_0x39dff4[_0xa43b('0x46')]['id']}})[_0xa43b('0x27')](handleEntityNotFound(_0x1b204a,null))[_0xa43b('0x27')](removeEntity(_0x1b204a,null))[_0xa43b('0x45')](handleError(_0x1b204a,null));};exports[_0xa43b('0x4c')]=function(_0x1fd557,_0x5373b9,_0x46bab8){var _0x4af679={};var _0x163ab4={};var _0x4b6fc0;var _0x590670;return db['ServicenowAccount'][_0xa43b('0x4d')]({'where':{'id':_0x1fd557['params']['id']}})[_0xa43b('0x27')](handleEntityNotFound(_0x5373b9,null))[_0xa43b('0x27')](function(_0x4209d5){if(_0x4209d5){_0x4b6fc0=_0x4209d5;_0x163ab4[_0xa43b('0x32')]=_[_0xa43b('0x34')](db[_0xa43b('0x4e')][_0xa43b('0x47')]);_0x163ab4['query']=_[_0xa43b('0x34')](_0x1fd557['query']);_0x163ab4[_0xa43b('0x35')]=_[_0xa43b('0x36')](_0x163ab4[_0xa43b('0x32')],_0x163ab4[_0xa43b('0x33')]);_0x4af679[_0xa43b('0x37')]=_['intersection'](_0x163ab4[_0xa43b('0x32')],qs[_0xa43b('0x38')](_0x1fd557[_0xa43b('0x33')][_0xa43b('0x38')]));_0x4af679[_0xa43b('0x37')]=_0x4af679['attributes'][_0xa43b('0x39')]?_0x4af679[_0xa43b('0x37')]:_0x163ab4[_0xa43b('0x32')];_0x4af679[_0xa43b('0x3c')]=qs['sort'](_0x1fd557[_0xa43b('0x33')]['sort']);_0x4af679[_0xa43b('0x3f')]=qs[_0xa43b('0x35')](_[_0xa43b('0x4f')](_0x1fd557[_0xa43b('0x33')],_0x163ab4[_0xa43b('0x35')]));if(_0x1fd557[_0xa43b('0x33')][_0xa43b('0x40')]){_0x4af679[_0xa43b('0x3f')]=_[_0xa43b('0x3e')](_0x4af679[_0xa43b('0x3f')],{'$or':_[_0xa43b('0x2e')](_0x4af679[_0xa43b('0x37')],function(_0x28acba){var _0x30ae53={};_0x30ae53[_0x28acba]={'$like':'%'+_0x1fd557['query'][_0xa43b('0x40')]+'%'};return _0x30ae53;})});}_0x4af679=_['merge']({},_0x4af679,_0x1fd557['options']);return _0x4b6fc0[_0xa43b('0x4c')](_0x4af679);}})[_0xa43b('0x27')](function(_0x15798e){if(_0x15798e){_0x590670=_0x15798e[_0xa43b('0x39')];if(!_0x1fd557['query'][_0xa43b('0x3a')](_0xa43b('0x3b'))){_0x4af679[_0xa43b('0x1e')]=qs[_0xa43b('0x1e')](_0x1fd557[_0xa43b('0x33')]['limit']);_0x4af679['offset']=qs['offset'](_0x1fd557[_0xa43b('0x33')][_0xa43b('0x1d')]);}return _0x4b6fc0[_0xa43b('0x4c')](_0x4af679);}})[_0xa43b('0x27')](function(_0x5cd85b){if(_0x5cd85b){return _0x5cd85b?{'count':_0x590670,'rows':_0x5cd85b}:null;}})['then'](respondWithResult(_0x5373b9,null))['catch'](handleError(_0x5373b9,null));};exports[_0xa43b('0x50')]=function(_0x37fafd,_0x1cfb03,_0x3923ec){if(_0x37fafd['body']['id']){delete _0x37fafd['body']['id'];}return db[_0xa43b('0x2f')]['findOne']({'where':{'id':_0x37fafd['params']['id']}})[_0xa43b('0x27')](handleEntityNotFound(_0x1cfb03,null))[_0xa43b('0x27')](function(_0x3219f9){if(_0x3219f9){_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x51')]=_0x3219f9['id'];_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x52')]=integrations[_0xa43b('0x53')](_0x37fafd[_0xa43b('0x4a')]['channel'],_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x31')]);_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x54')]=integrations[_0xa43b('0x55')](_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x56')],_0x37fafd[_0xa43b('0x4a')][_0xa43b('0x31')]);return db[_0xa43b('0x4e')][_0xa43b('0x49')](_0x37fafd[_0xa43b('0x4a')],{'include':[{'model':db['ServicenowField'],'as':_0xa43b('0x52')},{'model':db[_0xa43b('0x57')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1cfb03,null))[_0xa43b('0x45')](handleError(_0x1cfb03,null));};exports[_0xa43b('0x58')]=function(_0x6f4431,_0x10b662,_0x3f03b7){var _0x9249c1=[_0xa43b('0x59'),_0xa43b('0x5a'),_0xa43b('0x5b'),_0xa43b('0x5c'),_0xa43b('0x5d'),_0xa43b('0x5e'),_0xa43b('0x5f'),_0xa43b('0x60'),_0xa43b('0x61')];var _0x7c67fa=['parent',_0xa43b('0x59'),'caused_by',_0xa43b('0x62'),_0xa43b('0x63'),'sys_updated_on',_0xa43b('0x64'),_0xa43b('0x5a'),_0xa43b('0x65'),_0xa43b('0x66'),_0xa43b('0x67'),_0xa43b('0x68'),'opened_by',_0xa43b('0x69'),_0xa43b('0x6a'),_0xa43b('0x6b'),_0xa43b('0x6c'),'sys_created_by',_0xa43b('0x5b'),_0xa43b('0x3c'),'calendar_stc','closed_at','cmdb_ci','delivery_plan',_0xa43b('0x6d'),_0xa43b('0x6e'),_0xa43b('0x6f'),_0xa43b('0x70'),_0xa43b('0x71'),_0xa43b('0x72'),_0xa43b('0x73'),'time_worked',_0xa43b('0x74'),_0xa43b('0x75'),_0xa43b('0x76'),_0xa43b('0x77'),'work_end',_0xa43b('0x78'),_0xa43b('0x79'),_0xa43b('0x7a'),'approval_set',_0xa43b('0x5c'),_0xa43b('0x7b'),_0xa43b('0x7c'),'close_code',_0xa43b('0x7d'),_0xa43b('0x7e'),_0xa43b('0x7f'),'assignment_group',_0xa43b('0x80'),_0xa43b('0x81'),_0xa43b('0x82'),'calendar_duration',_0xa43b('0x5e'),_0xa43b('0x83'),'close_notes',_0xa43b('0x84'),_0xa43b('0x85'),'parent_incident',_0xa43b('0x86'),_0xa43b('0x87'),_0xa43b('0x88'),_0xa43b('0x5f'),_0xa43b('0x89'),_0xa43b('0x8a'),_0xa43b('0x8b'),_0xa43b('0x8c'),_0xa43b('0x8d'),_0xa43b('0x8e'),_0xa43b('0x60'),_0xa43b('0x8f'),_0xa43b('0x90'),_0xa43b('0x91'),'comments_and_work_notes','due_date',_0xa43b('0x92'),_0xa43b('0x93'),'sys_tags','escalation','upon_approval',_0xa43b('0x94'),_0xa43b('0x95'),_0xa43b('0x61')];var _0x5ef47f='';var _0x2f87d2='';var _0x22947c=[];var _0x490dd1='';var _0x31cc77='';var _0x112548=[];var _0x261fa6='';var _0x2f7371='';var _0x5b0e92={};var _0x9f2903='';return db['ServicenowAccount']['findOne']({'where':{'id':_0x6f4431[_0xa43b('0x46')]['id']},'attributes':['id',_0xa43b('0x96'),_0xa43b('0x97'),_0xa43b('0x98'),_0xa43b('0x99'),_0xa43b('0x9a')]})['then'](handleEntityNotFound(_0x10b662,null))['then'](function(_0x47cab4){if(_0x47cab4){_0x9f2903=_0x47cab4[_0xa43b('0x99')];var _0x4574fc=_0x9f2903[_0xa43b('0x9b')](-0x1);if(_0x4574fc==='/'){_0x9f2903=_0x9f2903[_0xa43b('0x9c')](0x0,_0x9f2903['lastIndexOf'](_0x4574fc));}_0x2f7371=util['format']('%s/api/now/doc/table/schema/',_0x9f2903);_0x261fa6=util[_0xa43b('0x9d')](_0xa43b('0x9e'),_0x9f2903);_0x5b0e92={'user':_0x47cab4['username'],'pass':_0x47cab4['password']};var _0x5ba4f2={'method':_0xa43b('0x9f'),'uri':_0x2f7371+_0xa43b('0xa0'),'auth':_0x5b0e92,'json':!![]};return rp(_0x5ba4f2);}})['then'](function(_0x5618ad){if(_0x5618ad[_0xa43b('0xa1')][_0xa43b('0x39')]>0x0){_0x5ef47f=_0x5618ad[_0xa43b('0xa1')];}console[_0xa43b('0xa2')](_0xa43b('0xa3'),_0x5ef47f);_0x112548=[];_0x2f87d2=Object[_0xa43b('0xa4')]([],_0x5ef47f);_[_0xa43b('0xa5')](_0x2f87d2,function(_0x290c6e){return!_0x9249c1[_0xa43b('0xa6')](_0x290c6e['name']);});_0x2f87d2['forEach'](function(_0x206796){var _0xe04b1f=createFieldObject(_0x261fa6,_0x5b0e92,_0x206796[_0xa43b('0xa7')],_0x206796[_0xa43b('0x2c')],_0x206796[_0xa43b('0xa8')],![]);_0x112548[_0xa43b('0xa9')](_0xe04b1f);});return Promise['all'](_0x112548);})[_0xa43b('0x27')](function(_0x12995f){_0x22947c=_0x12995f;_0x490dd1=Object[_0xa43b('0xa4')]([],_0x5ef47f);console[_0xa43b('0xa2')](_0xa43b('0xaa'),_0x5ef47f);_[_0xa43b('0xa5')](_0x490dd1,function(_0x46992e){return _0x7c67fa[_0xa43b('0xa6')](_0x46992e[_0xa43b('0x2c')]);});console['log'](_0xa43b('0xab'),_0x490dd1);_0x112548=[];_0x490dd1[_0xa43b('0xac')](function(_0xa34fb5){var _0x5716d9=createFieldObject(_0x261fa6,_0x5b0e92,_0xa34fb5['internalType'],_0xa34fb5[_0xa43b('0x2c')],_0xa34fb5['label'],!![]);_0x112548[_0xa43b('0xa9')](_0x5716d9);});return Promise[_0xa43b('0xad')](_0x112548);})['then'](function(_0x28e833){_0x31cc77=_0x28e833;var _0x2a6b40=_0x22947c[_0xa43b('0xae')](_0x31cc77);return{'count':_0x2a6b40[_0xa43b('0x39')],'rows':_0x2a6b40};})[_0xa43b('0x27')](respondWithResult(_0x10b662,null))[_0xa43b('0x45')](function(_0x407eaa){console['log'](_0xa43b('0xaf')+_0x407eaa);var _0xb0e08a=_0x6f4431['query'][_0xa43b('0xb0')]?0x1f4:_0x407eaa[_0xa43b('0xb1')]||0x1f4;logger[_0xa43b('0x2a')](_0x407eaa['stack']);delete _0x407eaa['name'];if(_0xb0e08a===0x191){_0xb0e08a=0x190;}_0x10b662[_0xa43b('0x1a')](_0xb0e08a)['send'](_0x6f4431['query'][_0xa43b('0xb0')]?{'message':_0xa43b('0xb2'),'statusCode':_0x407eaa['statusCode']}:_0x407eaa);});};function createFieldObject(_0x6500e1,_0x2f32af,_0x315d12,_0x5f1d15,_0x32d50e,_0x74960d){return new Promise(function(_0x29d578,_0x4d2a54){var _0x9d004b={'id':_0x5f1d15,'name':_0x32d50e,'custom':_0x74960d};if(_0x315d12==='boolean'){_0x9d004b[_0xa43b('0x48')]=[{'name':_0xa43b('0xb3'),'value':_0xa43b('0xb4')},{'name':_0xa43b('0xb5'),'value':_0xa43b('0xb6')}];_0x29d578(_0x9d004b);}else{var _0x58f315={'method':_0xa43b('0x9f'),'uri':_0x6500e1+'sys_choice?sysparm_query=name=incident^element='+_0x5f1d15,'auth':_0x2f32af,'json':!![]};return rp(_0x58f315)[_0xa43b('0x27')](function(_0x8c3b){var _0x37d377=[];if(_0x8c3b['result'][_0xa43b('0x39')]>0x0){_0x8c3b['result'][_0xa43b('0xac')](function(_0x46f978){if(_0x46f978[_0xa43b('0xb7')]===_0xa43b('0xb6')){var _0x2658e8={'name':_0x46f978[_0xa43b('0xa8')],'value':_0x46f978[_0xa43b('0xb8')]};_0x37d377['push'](_0x2658e8);}});}_0x9d004b[_0xa43b('0x48')]=_0x37d377;if(_0x9d004b[_0xa43b('0x48')]['length']>0x0){_0x29d578(_0x9d004b);}else{if(_0x74960d==![]){_0x29d578();}else{_0x29d578(_0x9d004b);}}});}});}
\ No newline at end of file
+var _0x93da=['Content-Range','apply','reject','save','update','error','stack','name','send','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','then','includeAll','include','rows','catch','params','create','body','find','destroy','findOne','filter','getConfigurations','AccountId','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','made_sla','hold_reason','subcategory','close_code','notify','incident_state','parent','caused_by','watch_list','upon_reject','child_incidents','resolved_by','sys_updated_by','opened_by','sys_created_on','state','sys_created_by','knowledge','calendar_stc','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','expected_start','opened_at','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','correlation_display','delivery_task','work_start','assignment_group','business_stc','calendar_duration','close_notes','closed_by','follow_up','sys_id','contact_type','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','severity','sla_due','approval','comments_and_work_notes','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','email','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','username','password','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','push','all','TCL:\x20_object','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','True','true','False','false','GET','inactive','value','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','end','offset','undefined','limit','count','status','set'];(function(_0x5db99b,_0xdee23a){var _0x4b2d0e=function(_0x4deee1){while(--_0x4deee1){_0x5db99b['push'](_0x5db99b['shift']());}};_0x4b2d0e(++_0xdee23a);}(_0x93da,0x1f2));var _0xa93d=function(_0x27380e,_0x4c5c6c){_0x27380e=_0x27380e-0x0;var _0x46eb19=_0x93da[_0x27380e];return _0x46eb19;};'use strict';var emlformat=require(_0xa93d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa93d('0x1'));var jsonpatch=require(_0xa93d('0x2'));var rp=require('request-promise');var moment=require(_0xa93d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa93d('0x4'));var util=require(_0xa93d('0x5'));var path=require(_0xa93d('0x6'));var sox=require('sox');var csv=require(_0xa93d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa93d('0x8'));var squel=require(_0xa93d('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa93d('0xa'));var toCsv=require(_0xa93d('0x7'));var querystring=require(_0xa93d('0xb'));var Papa=require(_0xa93d('0xc'));var Redis=require(_0xa93d('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xa93d('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa93d('0xf'))('api');var utils=require(_0xa93d('0x10'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa93d('0x11'))['db'];var integrations=require(_0xa93d('0x12'));function respondWithStatusCode(_0x52f13a,_0x58f5bf){_0x58f5bf=_0x58f5bf||0xcc;return function(_0x159126){if(_0x159126){return _0x52f13a[_0xa93d('0x13')](_0x58f5bf);}return _0x52f13a['status'](_0x58f5bf)[_0xa93d('0x14')]();};}function respondWithResult(_0x488f5b,_0x474804){_0x474804=_0x474804||0xc8;return function(_0x373f16){if(_0x373f16){return _0x488f5b['status'](_0x474804)['json'](_0x373f16);}};}function respondWithFilteredResult(_0x58467e,_0x4c7e47){return function(_0x17e983){if(_0x17e983){var _0x929df8=typeof _0x4c7e47[_0xa93d('0x15')]===_0xa93d('0x16')&&typeof _0x4c7e47[_0xa93d('0x17')]===_0xa93d('0x16');var _0x542a45=_0x17e983[_0xa93d('0x18')];var _0x3ad9a7=_0x929df8?0x0:_0x4c7e47[_0xa93d('0x15')];var _0xe40435=_0x929df8?_0x17e983[_0xa93d('0x18')]:_0x4c7e47[_0xa93d('0x15')]+_0x4c7e47[_0xa93d('0x17')];var _0x2eca7b;if(_0xe40435>=_0x542a45){_0xe40435=_0x542a45;_0x2eca7b=0xc8;}else{_0x2eca7b=0xce;}_0x58467e[_0xa93d('0x19')](_0x2eca7b);return _0x58467e[_0xa93d('0x1a')](_0xa93d('0x1b'),_0x3ad9a7+'-'+_0xe40435+'/'+_0x542a45)['json'](_0x17e983);}return null;};}function patchUpdates(_0x1b4cec){return function(_0x11087d){try{jsonpatch[_0xa93d('0x1c')](_0x11087d,_0x1b4cec,!![]);}catch(_0x4cf3dd){return BPromise[_0xa93d('0x1d')](_0x4cf3dd);}return _0x11087d[_0xa93d('0x1e')]();};}function saveUpdates(_0x4d423d,_0x18fb7c){return function(_0x593415){if(_0x593415){return _0x593415[_0xa93d('0x1f')](_0x4d423d)['then'](function(_0x167ae2){return _0x167ae2;});}return null;};}function removeEntity(_0x4094c2,_0xe82078){return function(_0x23de84){if(_0x23de84){return _0x23de84['destroy']()['then'](function(){_0x4094c2[_0xa93d('0x19')](0xcc)[_0xa93d('0x14')]();});}};}function handleEntityNotFound(_0x109d57,_0x37bab1){return function(_0x34ef32){if(!_0x34ef32){_0x109d57['sendStatus'](0x194);}return _0x34ef32;};}function handleError(_0x5ad848,_0x192800){_0x192800=_0x192800||0x1f4;return function(_0x58aac4){logger[_0xa93d('0x20')](_0x58aac4[_0xa93d('0x21')]);if(_0x58aac4[_0xa93d('0x22')]){delete _0x58aac4['name'];}_0x5ad848[_0xa93d('0x19')](_0x192800)[_0xa93d('0x23')](_0x58aac4);};}exports['index']=function(_0x42fb3a,_0xc53d42){var _0x469857={},_0x2d737f={},_0x41298a={'count':0x0,'rows':[]};var _0x4dbc2c=_[_0xa93d('0x24')](db[_0xa93d('0x25')][_0xa93d('0x26')],function(_0x15a9d1){return{'name':_0x15a9d1[_0xa93d('0x27')],'type':_0x15a9d1[_0xa93d('0x28')][_0xa93d('0x29')]};});_0x2d737f[_0xa93d('0x2a')]=_[_0xa93d('0x24')](_0x4dbc2c,_0xa93d('0x22'));_0x2d737f[_0xa93d('0x2b')]=_[_0xa93d('0x2c')](_0x42fb3a['query']);_0x2d737f[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x2d737f['model'],_0x2d737f[_0xa93d('0x2b')]);_0x469857[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x2d737f[_0xa93d('0x2a')],qs[_0xa93d('0x30')](_0x42fb3a['query']['fields']));_0x469857[_0xa93d('0x2f')]=_0x469857[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x469857['attributes']:_0x2d737f[_0xa93d('0x2a')];if(!_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x32')](_0xa93d('0x33'))){_0x469857[_0xa93d('0x17')]=qs[_0xa93d('0x17')](_0x42fb3a[_0xa93d('0x2b')]['limit']);_0x469857[_0xa93d('0x15')]=qs['offset'](_0x42fb3a['query'][_0xa93d('0x15')]);}_0x469857[_0xa93d('0x34')]=qs['sort'](_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x35')]);_0x469857[_0xa93d('0x36')]=qs[_0xa93d('0x2d')](_[_0xa93d('0x37')](_0x42fb3a[_0xa93d('0x2b')],_0x2d737f[_0xa93d('0x2d')]),_0x4dbc2c);if(_0x42fb3a[_0xa93d('0x2b')]['filter']){_0x469857[_0xa93d('0x36')]=_[_0xa93d('0x38')](_0x469857[_0xa93d('0x36')],{'$or':_['map'](_0x4dbc2c,function(_0x9123e7){if(_0x9123e7[_0xa93d('0x28')]!==_0xa93d('0x39')){var _0x45ea3a={};_0x45ea3a[_0x9123e7[_0xa93d('0x22')]]={'$like':'%'+_0x42fb3a[_0xa93d('0x2b')]['filter']+'%'};return _0x45ea3a;}})});}_0x469857=_['merge']({},_0x469857,_0x42fb3a[_0xa93d('0x3a')]);var _0x58e382={'where':_0x469857[_0xa93d('0x36')]};return db[_0xa93d('0x25')][_0xa93d('0x18')](_0x58e382)[_0xa93d('0x3b')](function(_0x12dd28){_0x41298a[_0xa93d('0x18')]=_0x12dd28;if(_0x42fb3a[_0xa93d('0x2b')][_0xa93d('0x3c')]){_0x469857[_0xa93d('0x3d')]=[{'all':!![]}];}return db[_0xa93d('0x25')]['findAll'](_0x469857);})[_0xa93d('0x3b')](function(_0x2558e6){_0x41298a[_0xa93d('0x3e')]=_0x2558e6;return _0x41298a;})['then'](respondWithFilteredResult(_0xc53d42,_0x469857))[_0xa93d('0x3f')](handleError(_0xc53d42,null));};exports['show']=function(_0x16a85c,_0x4971ea){var _0x38f050={'raw':![],'where':{'id':_0x16a85c[_0xa93d('0x40')]['id']}},_0x297e19={};_0x297e19['model']=_['keys'](db[_0xa93d('0x25')][_0xa93d('0x26')]);_0x297e19['query']=_[_0xa93d('0x2c')](_0x16a85c[_0xa93d('0x2b')]);_0x297e19[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x297e19[_0xa93d('0x2a')],_0x297e19['query']);_0x38f050[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x297e19[_0xa93d('0x2a')],qs[_0xa93d('0x30')](_0x16a85c['query'][_0xa93d('0x30')]));_0x38f050[_0xa93d('0x2f')]=_0x38f050[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x38f050['attributes']:_0x297e19[_0xa93d('0x2a')];if(_0x16a85c[_0xa93d('0x2b')][_0xa93d('0x3c')]){_0x38f050[_0xa93d('0x3d')]=[{'all':!![]}];}_0x38f050=_['merge']({},_0x38f050,_0x16a85c[_0xa93d('0x3a')]);return db[_0xa93d('0x25')]['find'](_0x38f050)['then'](handleEntityNotFound(_0x4971ea,null))['then'](respondWithResult(_0x4971ea,null))[_0xa93d('0x3f')](handleError(_0x4971ea,null));};exports[_0xa93d('0x41')]=function(_0xb30946,_0x4e1dc7){return db['ServicenowAccount'][_0xa93d('0x41')](_0xb30946[_0xa93d('0x42')],{})['then'](respondWithResult(_0x4e1dc7,0xc9))[_0xa93d('0x3f')](handleError(_0x4e1dc7,null));};exports[_0xa93d('0x1f')]=function(_0x5e14c8,_0x35476c){if(_0x5e14c8['body']['id']){delete _0x5e14c8[_0xa93d('0x42')]['id'];}return db[_0xa93d('0x25')][_0xa93d('0x43')]({'where':{'id':_0x5e14c8[_0xa93d('0x40')]['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x35476c,null))[_0xa93d('0x3b')](saveUpdates(_0x5e14c8[_0xa93d('0x42')],null))[_0xa93d('0x3b')](respondWithResult(_0x35476c,null))[_0xa93d('0x3f')](handleError(_0x35476c,null));};exports[_0xa93d('0x44')]=function(_0x2778f2,_0x54b410){return db[_0xa93d('0x25')][_0xa93d('0x43')]({'where':{'id':_0x2778f2[_0xa93d('0x40')]['id']}})['then'](handleEntityNotFound(_0x54b410,null))[_0xa93d('0x3b')](removeEntity(_0x54b410,null))[_0xa93d('0x3f')](handleError(_0x54b410,null));};exports['getConfigurations']=function(_0x30a3c2,_0x5ced0a,_0x30f6ca){var _0x97beed={};var _0x36eab={};var _0x1bb320;var _0x3279c2;return db[_0xa93d('0x25')][_0xa93d('0x45')]({'where':{'id':_0x30a3c2['params']['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x5ced0a,null))[_0xa93d('0x3b')](function(_0x3c59ec){if(_0x3c59ec){_0x1bb320=_0x3c59ec;_0x36eab[_0xa93d('0x2a')]=_[_0xa93d('0x2c')](db['ServicenowConfiguration']['rawAttributes']);_0x36eab[_0xa93d('0x2b')]=_['keys'](_0x30a3c2[_0xa93d('0x2b')]);_0x36eab[_0xa93d('0x2d')]=_[_0xa93d('0x2e')](_0x36eab[_0xa93d('0x2a')],_0x36eab[_0xa93d('0x2b')]);_0x97beed[_0xa93d('0x2f')]=_[_0xa93d('0x2e')](_0x36eab['model'],qs[_0xa93d('0x30')](_0x30a3c2['query'][_0xa93d('0x30')]));_0x97beed[_0xa93d('0x2f')]=_0x97beed[_0xa93d('0x2f')][_0xa93d('0x31')]?_0x97beed[_0xa93d('0x2f')]:_0x36eab[_0xa93d('0x2a')];_0x97beed[_0xa93d('0x34')]=qs['sort'](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x35')]);_0x97beed[_0xa93d('0x36')]=qs[_0xa93d('0x2d')](_['pick'](_0x30a3c2[_0xa93d('0x2b')],_0x36eab[_0xa93d('0x2d')]));if(_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x46')]){_0x97beed['where']=_['merge'](_0x97beed[_0xa93d('0x36')],{'$or':_[_0xa93d('0x24')](_0x97beed[_0xa93d('0x2f')],function(_0x30d0c6){var _0x2ff281={};_0x2ff281[_0x30d0c6]={'$like':'%'+_0x30a3c2['query'][_0xa93d('0x46')]+'%'};return _0x2ff281;})});}_0x97beed=_[_0xa93d('0x38')]({},_0x97beed,_0x30a3c2['options']);return _0x1bb320['getConfigurations'](_0x97beed);}})[_0xa93d('0x3b')](function(_0xdaf4ca){if(_0xdaf4ca){_0x3279c2=_0xdaf4ca[_0xa93d('0x31')];if(!_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x32')]('nolimit')){_0x97beed[_0xa93d('0x17')]=qs[_0xa93d('0x17')](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x17')]);_0x97beed['offset']=qs[_0xa93d('0x15')](_0x30a3c2[_0xa93d('0x2b')][_0xa93d('0x15')]);}return _0x1bb320[_0xa93d('0x47')](_0x97beed);}})[_0xa93d('0x3b')](function(_0x392996){if(_0x392996){return _0x392996?{'count':_0x3279c2,'rows':_0x392996}:null;}})[_0xa93d('0x3b')](respondWithResult(_0x5ced0a,null))[_0xa93d('0x3f')](handleError(_0x5ced0a,null));};exports['addConfiguration']=function(_0x256e72,_0x13e64f,_0x4d12ab){if(_0x256e72[_0xa93d('0x42')]['id']){delete _0x256e72['body']['id'];}return db['ServicenowAccount'][_0xa93d('0x45')]({'where':{'id':_0x256e72[_0xa93d('0x40')]['id']}})[_0xa93d('0x3b')](handleEntityNotFound(_0x13e64f,null))[_0xa93d('0x3b')](function(_0x5e370c){if(_0x5e370c){_0x256e72[_0xa93d('0x42')][_0xa93d('0x48')]=_0x5e370c['id'];_0x256e72['body']['Subjects']=integrations[_0xa93d('0x49')](_0x256e72['body'][_0xa93d('0x4a')],_0x256e72[_0xa93d('0x42')][_0xa93d('0x28')]);_0x256e72[_0xa93d('0x42')][_0xa93d('0x4b')]=integrations[_0xa93d('0x4c')](_0x256e72[_0xa93d('0x42')]['channel'],_0x256e72[_0xa93d('0x42')][_0xa93d('0x28')]);return db['ServicenowConfiguration'][_0xa93d('0x41')](_0x256e72[_0xa93d('0x42')],{'include':[{'model':db[_0xa93d('0x4d')],'as':_0xa93d('0x4e')},{'model':db[_0xa93d('0x4d')],'as':_0xa93d('0x4b')}]});}return null;})[_0xa93d('0x3b')](respondWithResult(_0x13e64f,null))[_0xa93d('0x3f')](handleError(_0x13e64f,null));};exports[_0xa93d('0x4f')]=function(_0x506fce,_0x29a898,_0x4d80c0){var _0x29f382=[_0xa93d('0x50'),_0xa93d('0x51'),'knowledge',_0xa93d('0x52'),_0xa93d('0x53'),_0xa93d('0x54'),_0xa93d('0x55'),'severity','category'];var _0xb82cc=[_0xa93d('0x56'),_0xa93d('0x50'),_0xa93d('0x57'),_0xa93d('0x58'),_0xa93d('0x59'),'sys_updated_on',_0xa93d('0x5a'),_0xa93d('0x51'),'approval_history','number',_0xa93d('0x5b'),_0xa93d('0x5c'),_0xa93d('0x5d'),'user_input',_0xa93d('0x5e'),'sys_domain',_0xa93d('0x5f'),_0xa93d('0x60'),_0xa93d('0x61'),'order',_0xa93d('0x62'),'closed_at',_0xa93d('0x63'),_0xa93d('0x64'),_0xa93d('0x65'),_0xa93d('0x66'),_0xa93d('0x67'),'business_service',_0xa93d('0x68'),'sys_domain_path','rfc','time_worked',_0xa93d('0x69'),_0xa93d('0x6a'),'business_duration',_0xa93d('0x6b'),'work_end',_0xa93d('0x6c'),_0xa93d('0x6d'),_0xa93d('0x6e'),_0xa93d('0x6f'),_0xa93d('0x52'),_0xa93d('0x70'),'short_description',_0xa93d('0x53'),_0xa93d('0x71'),_0xa93d('0x72'),_0xa93d('0x73'),_0xa93d('0x74'),_0xa93d('0x75'),'additional_assignee_list','description',_0xa93d('0x76'),_0xa93d('0x54'),'sys_class_name',_0xa93d('0x77'),_0xa93d('0x78'),_0xa93d('0x79'),'parent_incident',_0xa93d('0x7a'),_0xa93d('0x7b'),'reopened_by',_0xa93d('0x55'),_0xa93d('0x7c'),_0xa93d('0x7d'),_0xa93d('0x7e'),_0xa93d('0x7f'),_0xa93d('0x80'),_0xa93d('0x81'),_0xa93d('0x82'),'comments',_0xa93d('0x83'),_0xa93d('0x84'),_0xa93d('0x85'),'due_date',_0xa93d('0x86'),'reopen_count',_0xa93d('0x87'),_0xa93d('0x88'),_0xa93d('0x89'),_0xa93d('0x8a'),'location','category'];var _0x349438='';var _0x5d8db3='';var _0x1032a4=[];var _0x678e94='';var _0x2e7abb='';var _0x23c835=[];var _0x4c7bf5='';var _0x4e223d='';var _0x3212b1={};var _0x3606a0='';return db[_0xa93d('0x25')][_0xa93d('0x45')]({'where':{'id':_0x506fce[_0xa93d('0x40')]['id']},'attributes':['id','username','password',_0xa93d('0x8b'),'remoteUri','serverUrl']})['then'](handleEntityNotFound(_0x29a898,null))[_0xa93d('0x3b')](function(_0x596a33){if(_0x596a33){_0x3606a0=_0x596a33['remoteUri'];var _0x20e5c4=_0x3606a0[_0xa93d('0x8c')](-0x1);if(_0x20e5c4==='/'){_0x3606a0=_0x3606a0[_0xa93d('0x8d')](0x0,_0x3606a0[_0xa93d('0x8e')](_0x20e5c4));}_0x4e223d=util['format'](_0xa93d('0x8f'),_0x3606a0);_0x4c7bf5=util[_0xa93d('0x90')](_0xa93d('0x91'),_0x3606a0);_0x3212b1={'user':_0x596a33[_0xa93d('0x92')],'pass':_0x596a33[_0xa93d('0x93')]};var _0x543db7={'method':'GET','uri':_0x4e223d+_0xa93d('0x94'),'auth':_0x3212b1,'json':!![]};return rp(_0x543db7);}})[_0xa93d('0x3b')](function(_0x107509){if(_0x107509[_0xa93d('0x95')][_0xa93d('0x31')]>0x0){_0x349438=_0x107509[_0xa93d('0x95')];}console[_0xa93d('0x96')](_0xa93d('0x97'),_0x349438);_0x23c835=[];_0x5d8db3=Object[_0xa93d('0x98')]([],_0x349438);_[_0xa93d('0x99')](_0x5d8db3,function(_0x271638){return!_0x29f382['includes'](_0x271638['name']);});_0x5d8db3[_0xa93d('0x9a')](function(_0x5000d0){var _0x5a1cce=createFieldObject(_0x4c7bf5,_0x3212b1,_0x5000d0[_0xa93d('0x9b')],_0x5000d0[_0xa93d('0x22')],_0x5000d0['label'],![]);_0x23c835[_0xa93d('0x9c')](_0x5a1cce);});return Promise[_0xa93d('0x9d')](_0x23c835);})[_0xa93d('0x3b')](function(_0x222244){_0x1032a4=_0x222244;_0x678e94=Object[_0xa93d('0x98')]([],_0x349438);console[_0xa93d('0x96')](_0xa93d('0x9e'),_0x349438);_['remove'](_0x678e94,function(_0x1c7ec0){return _0xb82cc[_0xa93d('0x9f')](_0x1c7ec0['name']);});console[_0xa93d('0x96')](_0xa93d('0xa0'),_0x678e94);_0x23c835=[];_0x678e94[_0xa93d('0x9a')](function(_0x38a633){var _0x12eae5=createFieldObject(_0x4c7bf5,_0x3212b1,_0x38a633[_0xa93d('0x9b')],_0x38a633['name'],_0x38a633[_0xa93d('0xa1')],!![]);_0x23c835['push'](_0x12eae5);});return Promise[_0xa93d('0x9d')](_0x23c835);})['then'](function(_0x1763f8){_0x2e7abb=_0x1763f8;var _0x131ceb=_0x1032a4[_0xa93d('0xa2')](_0x2e7abb);return{'count':_0x131ceb[_0xa93d('0x31')],'rows':_0x131ceb};})[_0xa93d('0x3b')](respondWithResult(_0x29a898,null))[_0xa93d('0x3f')](function(_0x26b6d1){console['log'](_0xa93d('0xa3')+_0x26b6d1);var _0x4a75b7=_0x506fce[_0xa93d('0x2b')][_0xa93d('0xa4')]?0x1f4:_0x26b6d1[_0xa93d('0xa5')]||0x1f4;logger[_0xa93d('0x20')](_0x26b6d1[_0xa93d('0x21')]);delete _0x26b6d1['name'];if(_0x4a75b7===0x191){_0x4a75b7=0x190;}_0x29a898[_0xa93d('0x19')](_0x4a75b7)[_0xa93d('0x23')](_0x506fce[_0xa93d('0x2b')][_0xa93d('0xa4')]?{'message':_0xa93d('0xa6'),'statusCode':_0x26b6d1[_0xa93d('0xa5')]}:_0x26b6d1);});};function createFieldObject(_0x524e09,_0x5d2f96,_0x110385,_0x32fe86,_0x2b8683,_0x2109ea){return new Promise(function(_0x4958f4,_0x4e0787){var _0x1e2f50={'id':_0x32fe86,'name':_0x2b8683,'custom':_0x2109ea};if(_0x110385===_0xa93d('0xa7')){_0x1e2f50[_0xa93d('0x3a')]=[{'name':_0xa93d('0xa8'),'value':_0xa93d('0xa9')},{'name':_0xa93d('0xaa'),'value':_0xa93d('0xab')}];_0x4958f4(_0x1e2f50);}else{var _0x5817b3={'method':_0xa93d('0xac'),'uri':_0x524e09+'sys_choice?sysparm_query=name=incident^element='+_0x32fe86,'auth':_0x5d2f96,'json':!![]};return rp(_0x5817b3)[_0xa93d('0x3b')](function(_0x41a0d9){var _0x13e568=[];if(_0x41a0d9[_0xa93d('0x95')][_0xa93d('0x31')]>0x0){_0x41a0d9[_0xa93d('0x95')][_0xa93d('0x9a')](function(_0x68b15c){if(_0x68b15c[_0xa93d('0xad')]===_0xa93d('0xab')){var _0xa18022={'name':_0x68b15c[_0xa93d('0xa1')],'value':_0x68b15c[_0xa93d('0xae')]};_0x13e568[_0xa93d('0x9c')](_0xa18022);}});}_0x1e2f50[_0xa93d('0x3a')]=_0x13e568;if(_0x1e2f50[_0xa93d('0x3a')][_0xa93d('0x31')]>0x0){_0x4958f4(_0x1e2f50);}else{if(_0x2109ea==![]){_0x4958f4();}else{_0x4958f4(_0x1e2f50);}}});}});}
\ No newline at end of file
index 48949e8..4944fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['path','rimraf','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','moment','bluebird'];(function(_0x710012,_0x1e01ba){var _0x45a7b8=function(_0x341f27){while(--_0x341f27){_0x710012['push'](_0x710012['shift']());}};_0x45a7b8(++_0x1e01ba);}(_0x2675,0x75));var _0x5267=function(_0x4545b3,_0xbb9164){_0x4545b3=_0x4545b3-0x0;var _0x47fb41=_0x2675[_0x4545b3];return _0x47fb41;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5267('0x1'));var BPromise=require(_0x5267('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5267('0x3'));var rimraf=require(_0x5267('0x4'));var config=require('../../config/environment');var attributes=require(_0x5267('0x5'));var integrations=require(_0x5267('0x6'));module[_0x5267('0x7')]=function(_0x10f92c,_0x20f065){return _0x10f92c[_0x5267('0x8')]('ServicenowAccount',attributes,{'tableName':_0x5267('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts'];(function(_0x1c167e,_0x29107c){var _0x764fa3=function(_0x3345ff){while(--_0x3345ff){_0x1c167e['push'](_0x1c167e['shift']());}};_0x764fa3(++_0x29107c);}(_0x5d17,0x114));var _0x75d1=function(_0x13eec2,_0xe78b42){_0x13eec2=_0x13eec2-0x0;var _0x46c367=_0x5d17[_0x13eec2];return _0x46c367;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));var integrations=require(_0x75d1('0x8'));module['exports']=function(_0x458681,_0x116a51){return _0x458681[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 082ad18..e9966ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x141b=['where','attributes','limit','map','include','model','then','ShowServicenowAccount','find','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw'];(function(_0x27ea81,_0x12a73f){var _0x57ccc0=function(_0x56a1a1){while(--_0x56a1a1){_0x27ea81['push'](_0x27ea81['shift']());}};_0x57ccc0(++_0x12a73f);}(_0x141b,0x1e5));var _0xb141=function(_0x43b640,_0xfb08b2){_0x43b640=_0x43b640-0x0;var _0x38c911=_0x141b[_0x43b640];return _0x38c911;};'use strict';var _=require(_0xb141('0x0'));var util=require(_0xb141('0x1'));var moment=require(_0xb141('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb141('0x3'))['db'];var utils=require(_0xb141('0x4'));var logger=require('../../config/logger')(_0xb141('0x5'));var config=require(_0xb141('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xb141('0x7')][_0xb141('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x18de32,_0x398224,_0x5cc9d9){return new BPromise(function(_0x5eb7ff,_0x5bbff0){return client[_0xb141('0x9')](_0x18de32,_0x5cc9d9)['then'](function(_0x81372c){logger[_0xb141('0xa')](_0xb141('0xb'),_0x398224,_0xb141('0xc'));logger[_0xb141('0xd')](_0xb141('0xe'),_0x398224,'request\x20sent',JSON[_0xb141('0xf')](_0x81372c));if(_0x81372c[_0xb141('0x10')]){if(_0x81372c['error'][_0xb141('0x11')]===0x1f4){logger[_0xb141('0x10')](_0xb141('0xb'),_0x398224,_0x81372c[_0xb141('0x10')]['message']);return _0x5bbff0(_0x81372c[_0xb141('0x10')]['message']);}logger[_0xb141('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x398224,_0x81372c[_0xb141('0x10')]['message']);return _0x5eb7ff(_0x81372c[_0xb141('0x10')][_0xb141('0x12')]);}else{logger[_0xb141('0xa')](_0xb141('0xb'),_0x398224,_0xb141('0xc'));_0x5eb7ff(_0x81372c['result'][_0xb141('0x12')]);}})[_0xb141('0x13')](function(_0x5400b0){logger[_0xb141('0x10')](_0xb141('0xb'),_0x398224,_0x5400b0);_0x5bbff0(_0x5400b0);});});}exports[_0xb141('0x14')]=function(_0x3d7b8b){var _0x492d3c=this;return new Promise(function(_0x5c2d54,_0x54584b){return db[_0xb141('0x15')][_0xb141('0x16')]({'raw':_0x3d7b8b[_0xb141('0x17')]?_0x3d7b8b[_0xb141('0x17')][_0xb141('0x18')]===undefined?!![]:![]:!![],'where':_0x3d7b8b[_0xb141('0x17')]?_0x3d7b8b[_0xb141('0x17')][_0xb141('0x19')]||null:null,'attributes':_0x3d7b8b[_0xb141('0x17')]?_0x3d7b8b[_0xb141('0x17')][_0xb141('0x1a')]||null:null,'limit':_0x3d7b8b[_0xb141('0x17')]?_0x3d7b8b[_0xb141('0x17')][_0xb141('0x1b')]||null:null,'include':_0x3d7b8b[_0xb141('0x17')]?_0x3d7b8b[_0xb141('0x17')]['include']?_[_0xb141('0x1c')](_0x3d7b8b[_0xb141('0x17')][_0xb141('0x1d')],function(_0x1b14ef){return{'model':db[_0x1b14ef[_0xb141('0x1e')]],'as':_0x1b14ef['as'],'attributes':_0x1b14ef[_0xb141('0x1a')],'include':_0x1b14ef[_0xb141('0x1d')]?_[_0xb141('0x1c')](_0x1b14ef['include'],function(_0x8a23cc){return{'model':db[_0x8a23cc[_0xb141('0x1e')]],'as':_0x8a23cc['as'],'attributes':_0x8a23cc[_0xb141('0x1a')],'include':_0x8a23cc['include']?_['map'](_0x8a23cc[_0xb141('0x1d')],function(_0x11730c){return{'model':db[_0x11730c[_0xb141('0x1e')]],'as':_0x11730c['as'],'attributes':_0x11730c[_0xb141('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb141('0x1f')](function(_0x3b67fe){logger[_0xb141('0xa')]('GetServicenowAccount',_0x3d7b8b);logger['debug']('GetServicenowAccount',_0x3d7b8b,JSON['stringify'](_0x3b67fe));_0x5c2d54(_0x3b67fe);})['catch'](function(_0x3855a4){logger[_0xb141('0x10')](_0xb141('0x14'),_0x3855a4[_0xb141('0x12')],_0x3d7b8b);_0x54584b(_0x492d3c[_0xb141('0x10')](0x1f4,_0x3855a4['message']));});});};exports[_0xb141('0x20')]=function(_0x20ca85){var _0x408802=this;return new Promise(function(_0x4ccfea,_0x39cbe1){return db['ServicenowAccount'][_0xb141('0x21')]({'raw':_0x20ca85[_0xb141('0x17')]?_0x20ca85[_0xb141('0x17')][_0xb141('0x18')]===undefined?!![]:![]:!![],'where':_0x20ca85['options']?_0x20ca85[_0xb141('0x17')][_0xb141('0x19')]||null:null,'attributes':_0x20ca85['options']?_0x20ca85[_0xb141('0x17')][_0xb141('0x1a')]||null:null,'include':_0x20ca85['options']?_0x20ca85[_0xb141('0x17')][_0xb141('0x1d')]?_[_0xb141('0x1c')](_0x20ca85[_0xb141('0x17')][_0xb141('0x1d')],function(_0x453a85){return{'model':db[_0x453a85[_0xb141('0x1e')]],'as':_0x453a85['as'],'attributes':_0x453a85[_0xb141('0x1a')],'include':_0x453a85[_0xb141('0x1d')]?_['map'](_0x453a85[_0xb141('0x1d')],function(_0x419515){return{'model':db[_0x419515[_0xb141('0x1e')]],'as':_0x419515['as'],'attributes':_0x419515[_0xb141('0x1a')],'include':_0x419515[_0xb141('0x1d')]?_[_0xb141('0x1c')](_0x419515[_0xb141('0x1d')],function(_0x154691){return{'model':db[_0x154691['model']],'as':_0x154691['as'],'attributes':_0x154691['attributes']};}):[]};}):[]};}):[]:[]})[_0xb141('0x1f')](function(_0x18d573){logger[_0xb141('0xa')]('ShowServicenowAccount',_0x20ca85);logger[_0xb141('0xd')](_0xb141('0x20'),_0x20ca85,JSON[_0xb141('0xf')](_0x18d573));_0x4ccfea(_0x18d573);})[_0xb141('0x13')](function(_0x18baa3){logger[_0xb141('0x10')]('ShowServicenowAccount',_0x18baa3[_0xb141('0x12')],_0x20ca85);_0x39cbe1(_0x408802[_0xb141('0x10')](0x1f4,_0x18baa3['message']));});});};
\ No newline at end of file
+var _0xad5d=['options','raw','where','attributes','limit','model','include','map','then','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll'];(function(_0x357f44,_0x4c0d19){var _0x5d4680=function(_0x2dfc2f){while(--_0x2dfc2f){_0x357f44['push'](_0x357f44['shift']());}};_0x5d4680(++_0x4c0d19);}(_0xad5d,0x187));var _0xdad5=function(_0x185d4c,_0x207603){_0x185d4c=_0x185d4c-0x0;var _0x293f37=_0xad5d[_0x185d4c];return _0x293f37;};'use strict';var _=require(_0xdad5('0x0'));var util=require(_0xdad5('0x1'));var moment=require(_0xdad5('0x2'));var BPromise=require(_0xdad5('0x3'));var rs=require(_0xdad5('0x4'));var fs=require('fs');var Redis=require(_0xdad5('0x5'));var db=require(_0xdad5('0x6'))['db'];var utils=require(_0xdad5('0x7'));var logger=require(_0xdad5('0x8'))(_0xdad5('0x9'));var config=require(_0xdad5('0xa'));var jayson=require(_0xdad5('0xb'));var client=jayson['client'][_0xdad5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34438b,_0x15bd65,_0x58688d){return new BPromise(function(_0x49e309,_0x17f289){return client[_0xdad5('0xd')](_0x34438b,_0x58688d)['then'](function(_0x366d88){logger[_0xdad5('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x15bd65,_0xdad5('0xf'));logger[_0xdad5('0x10')](_0xdad5('0x11'),_0x15bd65,_0xdad5('0xf'),JSON[_0xdad5('0x12')](_0x366d88));if(_0x366d88[_0xdad5('0x13')]){if(_0x366d88['error']['code']===0x1f4){logger['error'](_0xdad5('0x14'),_0x15bd65,_0x366d88[_0xdad5('0x13')][_0xdad5('0x15')]);return _0x17f289(_0x366d88[_0xdad5('0x13')][_0xdad5('0x15')]);}logger[_0xdad5('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x15bd65,_0x366d88['error'][_0xdad5('0x15')]);return _0x49e309(_0x366d88[_0xdad5('0x13')]['message']);}else{logger['info'](_0xdad5('0x14'),_0x15bd65,'request\x20sent');_0x49e309(_0x366d88[_0xdad5('0x16')][_0xdad5('0x15')]);}})[_0xdad5('0x17')](function(_0x32fbbe){logger[_0xdad5('0x13')](_0xdad5('0x14'),_0x15bd65,_0x32fbbe);_0x17f289(_0x32fbbe);});});}exports[_0xdad5('0x18')]=function(_0x1b862d){var _0x313baa=this;return new Promise(function(_0x2c8d21,_0x45dbaa){return db[_0xdad5('0x19')][_0xdad5('0x1a')]({'raw':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1c')]===undefined?!![]:![]:!![],'where':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1d')]||null:null,'attributes':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d[_0xdad5('0x1b')][_0xdad5('0x1e')]||null:null,'limit':_0x1b862d[_0xdad5('0x1b')]?_0x1b862d['options'][_0xdad5('0x1f')]||null:null,'include':_0x1b862d['options']?_0x1b862d[_0xdad5('0x1b')]['include']?_['map'](_0x1b862d['options']['include'],function(_0x756a6a){return{'model':db[_0x756a6a[_0xdad5('0x20')]],'as':_0x756a6a['as'],'attributes':_0x756a6a['attributes'],'include':_0x756a6a[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x756a6a[_0xdad5('0x21')],function(_0x5afd8c){return{'model':db[_0x5afd8c['model']],'as':_0x5afd8c['as'],'attributes':_0x5afd8c[_0xdad5('0x1e')],'include':_0x5afd8c[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x5afd8c['include'],function(_0x5ee59c){return{'model':db[_0x5ee59c[_0xdad5('0x20')]],'as':_0x5ee59c['as'],'attributes':_0x5ee59c[_0xdad5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xdad5('0x23')](function(_0x2252ea){logger[_0xdad5('0xe')](_0xdad5('0x18'),_0x1b862d);logger[_0xdad5('0x10')](_0xdad5('0x18'),_0x1b862d,JSON[_0xdad5('0x12')](_0x2252ea));_0x2c8d21(_0x2252ea);})[_0xdad5('0x17')](function(_0x23ce73){logger[_0xdad5('0x13')](_0xdad5('0x18'),_0x23ce73[_0xdad5('0x15')],_0x1b862d);_0x45dbaa(_0x313baa[_0xdad5('0x13')](0x1f4,_0x23ce73['message']));});});};exports[_0xdad5('0x24')]=function(_0x5af715){var _0x314389=this;return new Promise(function(_0x17fab7,_0x4f2465){return db[_0xdad5('0x19')][_0xdad5('0x25')]({'raw':_0x5af715[_0xdad5('0x1b')]?_0x5af715[_0xdad5('0x1b')][_0xdad5('0x1c')]===undefined?!![]:![]:!![],'where':_0x5af715[_0xdad5('0x1b')]?_0x5af715['options']['where']||null:null,'attributes':_0x5af715[_0xdad5('0x1b')]?_0x5af715[_0xdad5('0x1b')]['attributes']||null:null,'include':_0x5af715[_0xdad5('0x1b')]?_0x5af715['options']['include']?_[_0xdad5('0x22')](_0x5af715['options'][_0xdad5('0x21')],function(_0x29cd5a){return{'model':db[_0x29cd5a[_0xdad5('0x20')]],'as':_0x29cd5a['as'],'attributes':_0x29cd5a['attributes'],'include':_0x29cd5a[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x29cd5a['include'],function(_0x3daeb0){return{'model':db[_0x3daeb0[_0xdad5('0x20')]],'as':_0x3daeb0['as'],'attributes':_0x3daeb0[_0xdad5('0x1e')],'include':_0x3daeb0[_0xdad5('0x21')]?_[_0xdad5('0x22')](_0x3daeb0[_0xdad5('0x21')],function(_0x351ab3){return{'model':db[_0x351ab3[_0xdad5('0x20')]],'as':_0x351ab3['as'],'attributes':_0x351ab3[_0xdad5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xdad5('0x23')](function(_0xb7d59a){logger[_0xdad5('0xe')](_0xdad5('0x24'),_0x5af715);logger['debug'](_0xdad5('0x24'),_0x5af715,JSON['stringify'](_0xb7d59a));_0x17fab7(_0xb7d59a);})[_0xdad5('0x17')](function(_0x28bdbd){logger['error']('ShowServicenowAccount',_0x28bdbd[_0xdad5('0x15')],_0x5af715);_0x4f2465(_0x314389['error'](0x1f4,_0x28bdbd[_0xdad5('0x15')]));});});};
\ No newline at end of file
index 7598102..540ca45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d9=['multer','express','Router','fs-extra','../../components/interaction/service','./intServicenowConfiguration.controller','index','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','update','delete','destroy','exports'];(function(_0x474047,_0xf7ca64){var _0x3f252d=function(_0x32baa7){while(--_0x32baa7){_0x474047['push'](_0x474047['shift']());}};_0x3f252d(++_0xf7ca64);}(_0x94d9,0x93));var _0x994d=function(_0x3d635f,_0x3c0ee0){_0x3d635f=_0x3d635f-0x0;var _0x3bbc24=_0x94d9[_0x3d635f];return _0x3bbc24;};'use strict';var multer=require(_0x994d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x994d('0x1'));var router=express[_0x994d('0x2')]();var fs_extra=require(_0x994d('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x994d('0x4'));var config=require('../../config/environment');var controller=require(_0x994d('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x994d('0x6')]);router[_0x994d('0x7')](_0x994d('0x8'),auth[_0x994d('0x9')](),controller[_0x994d('0xa')]);router[_0x994d('0x7')]('/:id/fields',auth[_0x994d('0x9')](),controller[_0x994d('0xb')]);router[_0x994d('0x7')](_0x994d('0xc'),auth[_0x994d('0x9')](),controller[_0x994d('0xd')]);router[_0x994d('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x994d('0xe')]);router[_0x994d('0xf')]('/',auth[_0x994d('0x9')](),controller[_0x994d('0x10')]);router['put']('/:id',auth[_0x994d('0x9')](),controller[_0x994d('0x11')]);router[_0x994d('0x12')](_0x994d('0x8'),auth[_0x994d('0x9')](),controller[_0x994d('0x13')]);module[_0x994d('0x14')]=router;
\ No newline at end of file
+var _0x7d4b=['getDescriptions','post','create','update','delete','exports','util','path','Router','../../components/auth/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x4a21eb,_0x4d9a78){var _0x1183b9=function(_0x3e838d){while(--_0x3e838d){_0x4a21eb['push'](_0x4a21eb['shift']());}};_0x1183b9(++_0x4d9a78);}(_0x7d4b,0xc3));var _0xb7d4=function(_0x46498c,_0x380393){_0x46498c=_0x46498c-0x0;var _0x23692a=_0x7d4b[_0x46498c];return _0x23692a;};'use strict';var multer=require('multer');var util=require(_0xb7d4('0x0'));var path=require(_0xb7d4('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb7d4('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xb7d4('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xb7d4('0x4'));var controller=require(_0xb7d4('0x5'));router[_0xb7d4('0x6')]('/',auth[_0xb7d4('0x7')](),controller['index']);router['get'](_0xb7d4('0x8'),auth['isAuthenticated'](),controller[_0xb7d4('0x9')]);router[_0xb7d4('0x6')](_0xb7d4('0xa'),auth[_0xb7d4('0x7')](),controller[_0xb7d4('0xb')]);router[_0xb7d4('0x6')](_0xb7d4('0xc'),auth['isAuthenticated'](),controller[_0xb7d4('0xd')]);router[_0xb7d4('0x6')](_0xb7d4('0xe'),auth['isAuthenticated'](),controller[_0xb7d4('0xf')]);router[_0xb7d4('0x10')]('/',auth[_0xb7d4('0x7')](),controller[_0xb7d4('0x11')]);router['put'](_0xb7d4('0x8'),auth[_0xb7d4('0x7')](),controller[_0xb7d4('0x12')]);router[_0xb7d4('0x13')](_0xb7d4('0x8'),auth[_0xb7d4('0x7')](),controller['destroy']);module[_0xb7d4('0x14')]=router;
\ No newline at end of file
index ff49d8f..9dffa48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d75=['sequelize','exports','STRING'];(function(_0x4a7c8c,_0x2cb9e5){var _0x46af56=function(_0x15ace1){while(--_0x15ace1){_0x4a7c8c['push'](_0x4a7c8c['shift']());}};_0x46af56(++_0x2cb9e5);}(_0x7d75,0x14d));var _0x57d7=function(_0x42211d,_0x4081c3){_0x42211d=_0x42211d-0x0;var _0xd21fa7=_0x7d75[_0x42211d];return _0xd21fa7;};'use strict';var Sequelize=require(_0x57d7('0x0'));module[_0x57d7('0x1')]={'name':{'type':Sequelize[_0x57d7('0x2')]},'description':{'type':Sequelize[_0x57d7('0x2')]}};
\ No newline at end of file
+var _0x879f=['STRING','sequelize','exports'];(function(_0x97e344,_0x1c0355){var _0x4f356e=function(_0x1332c8){while(--_0x1332c8){_0x97e344['push'](_0x97e344['shift']());}};_0x4f356e(++_0x1c0355);}(_0x879f,0x18a));var _0xf879=function(_0x153e9e,_0x49b311){_0x153e9e=_0x153e9e-0x0;var _0x190b9d=_0x879f[_0x153e9e];return _0x190b9d;};'use strict';var Sequelize=require(_0xf879('0x0'));module[_0xf879('0x1')]={'name':{'type':Sequelize[_0xf879('0x2')]},'description':{'type':Sequelize[_0xf879('0x2')]}};
\ No newline at end of file
index cf593d9..b81b967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37fa=['params','rawAttributes','attributes','length','include','find','create','body','catch','findOne','ServicenowField','getFields','getSubjects','nolimit','getDescriptions','rimraf','zip-dir','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','ServicenowConfiguration','fieldName','type','key','model','keys','query','intersection','fields','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','show'];(function(_0xd1fe4b,_0x44a08d){var _0x544c92=function(_0x5e9769){while(--_0x5e9769){_0xd1fe4b['push'](_0xd1fe4b['shift']());}};_0x544c92(++_0x44a08d);}(_0x37fa,0x14f));var _0xa37f=function(_0x2deb01,_0x4e741c){_0x2deb01=_0x2deb01-0x0;var _0x3920b3=_0x37fa[_0x2deb01];return _0x3920b3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa37f('0x0'));var zipdir=require(_0xa37f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa37f('0x2'));var moment=require(_0xa37f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa37f('0x4'));var util=require(_0xa37f('0x5'));var path=require('path');var sox=require(_0xa37f('0x6'));var csv=require('to-csv');var ejs=require(_0xa37f('0x7'));var fs=require('fs');var fs_extra=require(_0xa37f('0x8'));var _=require(_0xa37f('0x9'));var squel=require(_0xa37f('0xa'));var crypto=require('crypto');var jsforce=require(_0xa37f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa37f('0xc'));var querystring=require(_0xa37f('0xd'));var Papa=require(_0xa37f('0xe'));var Redis=require(_0xa37f('0xf'));var authService=require(_0xa37f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa37f('0x11'));var hardwareService=require(_0xa37f('0x12'));var logger=require(_0xa37f('0x13'))(_0xa37f('0x14'));var utils=require(_0xa37f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa37f('0x16'));var db=require(_0xa37f('0x17'))['db'];function respondWithStatusCode(_0x3cb842,_0x36bf2a){_0x36bf2a=_0x36bf2a||0xcc;return function(_0x16bcbb){if(_0x16bcbb){return _0x3cb842['sendStatus'](_0x36bf2a);}return _0x3cb842[_0xa37f('0x18')](_0x36bf2a)[_0xa37f('0x19')]();};}function respondWithResult(_0x2f3426,_0x1b255){_0x1b255=_0x1b255||0xc8;return function(_0x1ba978){if(_0x1ba978){return _0x2f3426['status'](_0x1b255)['json'](_0x1ba978);}};}function respondWithFilteredResult(_0x25c49b,_0x1cee9d){return function(_0x51242f){if(_0x51242f){var _0x48a7d9=typeof _0x1cee9d[_0xa37f('0x1a')]===_0xa37f('0x1b')&&typeof _0x1cee9d[_0xa37f('0x1c')]===_0xa37f('0x1b');var _0x26c787=_0x51242f['count'];var _0x6a2dc6=_0x48a7d9?0x0:_0x1cee9d[_0xa37f('0x1a')];var _0x8d4032=_0x48a7d9?_0x51242f[_0xa37f('0x1d')]:_0x1cee9d[_0xa37f('0x1a')]+_0x1cee9d[_0xa37f('0x1c')];var _0x391319;if(_0x8d4032>=_0x26c787){_0x8d4032=_0x26c787;_0x391319=0xc8;}else{_0x391319=0xce;}_0x25c49b['status'](_0x391319);return _0x25c49b['set'](_0xa37f('0x1e'),_0x6a2dc6+'-'+_0x8d4032+'/'+_0x26c787)[_0xa37f('0x1f')](_0x51242f);}return null;};}function patchUpdates(_0xc90cea){return function(_0x29ba34){try{jsonpatch[_0xa37f('0x20')](_0x29ba34,_0xc90cea,!![]);}catch(_0x264714){return BPromise[_0xa37f('0x21')](_0x264714);}return _0x29ba34[_0xa37f('0x22')]();};}function saveUpdates(_0x4951ce,_0x36b7ce){return function(_0x561cfa){if(_0x561cfa){return _0x561cfa[_0xa37f('0x23')](_0x4951ce)[_0xa37f('0x24')](function(_0x157969){return _0x157969;});}return null;};}function removeEntity(_0x19c3d3,_0x208704){return function(_0xfcaf2f){if(_0xfcaf2f){return _0xfcaf2f[_0xa37f('0x25')]()[_0xa37f('0x24')](function(){_0x19c3d3[_0xa37f('0x18')](0xcc)[_0xa37f('0x19')]();});}};}function handleEntityNotFound(_0x3e7d5e,_0x27453a){return function(_0x4c8f44){if(!_0x4c8f44){_0x3e7d5e['sendStatus'](0x194);}return _0x4c8f44;};}function handleError(_0x280f94,_0x3d2346){_0x3d2346=_0x3d2346||0x1f4;return function(_0xa813e1){logger[_0xa37f('0x26')](_0xa813e1['stack']);if(_0xa813e1[_0xa37f('0x27')]){delete _0xa813e1[_0xa37f('0x27')];}_0x280f94['status'](_0x3d2346)[_0xa37f('0x28')](_0xa813e1);};}exports[_0xa37f('0x29')]=function(_0x41db91,_0x38f0f6){var _0x59133d={},_0x2608ce={},_0x2a58f0={'count':0x0,'rows':[]};var _0x36dd4a=_[_0xa37f('0x2a')](db[_0xa37f('0x2b')]['rawAttributes'],function(_0x1afb1e){return{'name':_0x1afb1e[_0xa37f('0x2c')],'type':_0x1afb1e[_0xa37f('0x2d')][_0xa37f('0x2e')]};});_0x2608ce[_0xa37f('0x2f')]=_['map'](_0x36dd4a,_0xa37f('0x27'));_0x2608ce['query']=_[_0xa37f('0x30')](_0x41db91[_0xa37f('0x31')]);_0x2608ce['filters']=_['intersection'](_0x2608ce[_0xa37f('0x2f')],_0x2608ce[_0xa37f('0x31')]);_0x59133d['attributes']=_[_0xa37f('0x32')](_0x2608ce['model'],qs[_0xa37f('0x33')](_0x41db91[_0xa37f('0x31')][_0xa37f('0x33')]));_0x59133d['attributes']=_0x59133d['attributes']['length']?_0x59133d['attributes']:_0x2608ce[_0xa37f('0x2f')];if(!_0x41db91[_0xa37f('0x31')][_0xa37f('0x34')]('nolimit')){_0x59133d['limit']=qs[_0xa37f('0x1c')](_0x41db91[_0xa37f('0x31')][_0xa37f('0x1c')]);_0x59133d[_0xa37f('0x1a')]=qs['offset'](_0x41db91[_0xa37f('0x31')][_0xa37f('0x1a')]);}_0x59133d[_0xa37f('0x35')]=qs[_0xa37f('0x36')](_0x41db91[_0xa37f('0x31')][_0xa37f('0x36')]);_0x59133d['where']=qs[_0xa37f('0x37')](_[_0xa37f('0x38')](_0x41db91[_0xa37f('0x31')],_0x2608ce[_0xa37f('0x37')]),_0x36dd4a);if(_0x41db91[_0xa37f('0x31')]['filter']){_0x59133d[_0xa37f('0x39')]=_[_0xa37f('0x3a')](_0x59133d[_0xa37f('0x39')],{'$or':_[_0xa37f('0x2a')](_0x36dd4a,function(_0x2fbca0){if(_0x2fbca0[_0xa37f('0x2d')]!==_0xa37f('0x3b')){var _0x345ec0={};_0x345ec0[_0x2fbca0[_0xa37f('0x27')]]={'$like':'%'+_0x41db91[_0xa37f('0x31')][_0xa37f('0x3c')]+'%'};return _0x345ec0;}})});}_0x59133d=_[_0xa37f('0x3a')]({},_0x59133d,_0x41db91[_0xa37f('0x3d')]);var _0x50bd2c={'where':_0x59133d[_0xa37f('0x39')]};return db[_0xa37f('0x2b')]['count'](_0x50bd2c)[_0xa37f('0x24')](function(_0xdee2b5){_0x2a58f0[_0xa37f('0x1d')]=_0xdee2b5;if(_0x41db91[_0xa37f('0x31')][_0xa37f('0x3e')]){_0x59133d['include']=[{'all':!![]}];}return db[_0xa37f('0x2b')]['findAll'](_0x59133d);})[_0xa37f('0x24')](function(_0x9abdeb){_0x2a58f0[_0xa37f('0x3f')]=_0x9abdeb;return _0x2a58f0;})[_0xa37f('0x24')](respondWithFilteredResult(_0x38f0f6,_0x59133d))['catch'](handleError(_0x38f0f6,null));};exports[_0xa37f('0x40')]=function(_0x24fd66,_0x18e3c9){var _0x541e98={'raw':![],'where':{'id':_0x24fd66[_0xa37f('0x41')]['id']}},_0x2b7c1b={};_0x2b7c1b[_0xa37f('0x2f')]=_[_0xa37f('0x30')](db[_0xa37f('0x2b')][_0xa37f('0x42')]);_0x2b7c1b[_0xa37f('0x31')]=_[_0xa37f('0x30')](_0x24fd66[_0xa37f('0x31')]);_0x2b7c1b['filters']=_[_0xa37f('0x32')](_0x2b7c1b['model'],_0x2b7c1b[_0xa37f('0x31')]);_0x541e98[_0xa37f('0x43')]=_['intersection'](_0x2b7c1b[_0xa37f('0x2f')],qs[_0xa37f('0x33')](_0x24fd66[_0xa37f('0x31')][_0xa37f('0x33')]));_0x541e98[_0xa37f('0x43')]=_0x541e98[_0xa37f('0x43')][_0xa37f('0x44')]?_0x541e98['attributes']:_0x2b7c1b[_0xa37f('0x2f')];if(_0x24fd66[_0xa37f('0x31')]['includeAll']){_0x541e98[_0xa37f('0x45')]=[{'all':!![]}];}_0x541e98=_[_0xa37f('0x3a')]({},_0x541e98,_0x24fd66['options']);return db[_0xa37f('0x2b')][_0xa37f('0x46')](_0x541e98)['then'](handleEntityNotFound(_0x18e3c9,null))[_0xa37f('0x24')](respondWithResult(_0x18e3c9,null))['catch'](handleError(_0x18e3c9,null));};exports[_0xa37f('0x47')]=function(_0xe4ff6f,_0x2f53a8){return db['ServicenowConfiguration'][_0xa37f('0x47')](_0xe4ff6f[_0xa37f('0x48')],{})[_0xa37f('0x24')](respondWithResult(_0x2f53a8,0xc9))['catch'](handleError(_0x2f53a8,null));};exports['update']=function(_0x13c27e,_0x5bcf1e){if(_0x13c27e['body']['id']){delete _0x13c27e[_0xa37f('0x48')]['id'];}return db['ServicenowConfiguration'][_0xa37f('0x46')]({'where':{'id':_0x13c27e[_0xa37f('0x41')]['id']}})[_0xa37f('0x24')](handleEntityNotFound(_0x5bcf1e,null))[_0xa37f('0x24')](saveUpdates(_0x13c27e[_0xa37f('0x48')],null))[_0xa37f('0x24')](respondWithResult(_0x5bcf1e,null))[_0xa37f('0x49')](handleError(_0x5bcf1e,null));};exports[_0xa37f('0x25')]=function(_0x3d554,_0x3637f2){return db['ServicenowConfiguration'][_0xa37f('0x46')]({'where':{'id':_0x3d554[_0xa37f('0x41')]['id']}})[_0xa37f('0x24')](handleEntityNotFound(_0x3637f2,null))[_0xa37f('0x24')](removeEntity(_0x3637f2,null))[_0xa37f('0x49')](handleError(_0x3637f2,null));};exports['getFields']=function(_0xf7c2c9,_0x43e03c,_0x34c24b){var _0x5c9ba9={};var _0x2c207c={};var _0x47ea18;var _0x2fcf22;return db[_0xa37f('0x2b')][_0xa37f('0x4a')]({'where':{'id':_0xf7c2c9['params']['id']}})[_0xa37f('0x24')](handleEntityNotFound(_0x43e03c,null))[_0xa37f('0x24')](function(_0x372fe3){if(_0x372fe3){_0x47ea18=_0x372fe3;_0x2c207c['model']=_[_0xa37f('0x30')](db[_0xa37f('0x4b')][_0xa37f('0x42')]);_0x2c207c['query']=_['keys'](_0xf7c2c9['query']);_0x2c207c[_0xa37f('0x37')]=_[_0xa37f('0x32')](_0x2c207c['model'],_0x2c207c[_0xa37f('0x31')]);_0x5c9ba9[_0xa37f('0x43')]=_[_0xa37f('0x32')](_0x2c207c[_0xa37f('0x2f')],qs[_0xa37f('0x33')](_0xf7c2c9[_0xa37f('0x31')][_0xa37f('0x33')]));_0x5c9ba9[_0xa37f('0x43')]=_0x5c9ba9[_0xa37f('0x43')]['length']?_0x5c9ba9[_0xa37f('0x43')]:_0x2c207c['model'];_0x5c9ba9[_0xa37f('0x35')]=qs[_0xa37f('0x36')](_0xf7c2c9[_0xa37f('0x31')][_0xa37f('0x36')]);_0x5c9ba9[_0xa37f('0x39')]=qs[_0xa37f('0x37')](_['pick'](_0xf7c2c9[_0xa37f('0x31')],_0x2c207c['filters']));if(_0xf7c2c9[_0xa37f('0x31')][_0xa37f('0x3c')]){_0x5c9ba9[_0xa37f('0x39')]=_[_0xa37f('0x3a')](_0x5c9ba9[_0xa37f('0x39')],{'$or':_[_0xa37f('0x2a')](_0x5c9ba9[_0xa37f('0x43')],function(_0x5d5daf){var _0xe59321={};_0xe59321[_0x5d5daf]={'$like':'%'+_0xf7c2c9[_0xa37f('0x31')]['filter']+'%'};return _0xe59321;})});}_0x5c9ba9=_[_0xa37f('0x3a')]({},_0x5c9ba9,_0xf7c2c9[_0xa37f('0x3d')]);return _0x47ea18[_0xa37f('0x4c')](_0x5c9ba9);}})['then'](function(_0x41b114){if(_0x41b114){_0x2fcf22=_0x41b114['length'];if(!_0xf7c2c9[_0xa37f('0x31')][_0xa37f('0x34')]('nolimit')){_0x5c9ba9['limit']=qs[_0xa37f('0x1c')](_0xf7c2c9['query'][_0xa37f('0x1c')]);_0x5c9ba9['offset']=qs[_0xa37f('0x1a')](_0xf7c2c9['query']['offset']);}return _0x47ea18[_0xa37f('0x4c')](_0x5c9ba9);}})[_0xa37f('0x24')](function(_0x262542){if(_0x262542){return _0x262542?{'count':_0x2fcf22,'rows':_0x262542}:null;}})['then'](respondWithResult(_0x43e03c,null))[_0xa37f('0x49')](handleError(_0x43e03c,null));};exports[_0xa37f('0x4d')]=function(_0x51f5ce,_0x379fd6,_0xf97d18){var _0x127e49={};var _0x28eb29={};var _0x4747fa;var _0x2fe97e;return db[_0xa37f('0x2b')]['findOne']({'where':{'id':_0x51f5ce[_0xa37f('0x41')]['id']}})[_0xa37f('0x24')](handleEntityNotFound(_0x379fd6,null))[_0xa37f('0x24')](function(_0x2108aa){if(_0x2108aa){_0x4747fa=_0x2108aa;_0x28eb29['model']=_[_0xa37f('0x30')](db[_0xa37f('0x4b')][_0xa37f('0x42')]);_0x28eb29[_0xa37f('0x31')]=_[_0xa37f('0x30')](_0x51f5ce[_0xa37f('0x31')]);_0x28eb29[_0xa37f('0x37')]=_['intersection'](_0x28eb29[_0xa37f('0x2f')],_0x28eb29[_0xa37f('0x31')]);_0x127e49['attributes']=_['intersection'](_0x28eb29[_0xa37f('0x2f')],qs[_0xa37f('0x33')](_0x51f5ce[_0xa37f('0x31')][_0xa37f('0x33')]));_0x127e49[_0xa37f('0x43')]=_0x127e49[_0xa37f('0x43')][_0xa37f('0x44')]?_0x127e49[_0xa37f('0x43')]:_0x28eb29[_0xa37f('0x2f')];_0x127e49['order']=qs[_0xa37f('0x36')](_0x51f5ce['query']['sort']);_0x127e49[_0xa37f('0x39')]=qs[_0xa37f('0x37')](_[_0xa37f('0x38')](_0x51f5ce[_0xa37f('0x31')],_0x28eb29[_0xa37f('0x37')]));if(_0x51f5ce['query'][_0xa37f('0x3c')]){_0x127e49[_0xa37f('0x39')]=_[_0xa37f('0x3a')](_0x127e49[_0xa37f('0x39')],{'$or':_[_0xa37f('0x2a')](_0x127e49[_0xa37f('0x43')],function(_0x254923){var _0x15df0c={};_0x15df0c[_0x254923]={'$like':'%'+_0x51f5ce[_0xa37f('0x31')][_0xa37f('0x3c')]+'%'};return _0x15df0c;})});}_0x127e49=_[_0xa37f('0x3a')]({},_0x127e49,_0x51f5ce['options']);return _0x4747fa[_0xa37f('0x4d')](_0x127e49);}})[_0xa37f('0x24')](function(_0x40d46a){if(_0x40d46a){_0x2fe97e=_0x40d46a['length'];if(!_0x51f5ce['query'][_0xa37f('0x34')](_0xa37f('0x4e'))){_0x127e49[_0xa37f('0x1c')]=qs[_0xa37f('0x1c')](_0x51f5ce[_0xa37f('0x31')][_0xa37f('0x1c')]);_0x127e49[_0xa37f('0x1a')]=qs[_0xa37f('0x1a')](_0x51f5ce[_0xa37f('0x31')][_0xa37f('0x1a')]);}return _0x4747fa[_0xa37f('0x4d')](_0x127e49);}})['then'](function(_0x41e74c){if(_0x41e74c){return _0x41e74c?{'count':_0x2fe97e,'rows':_0x41e74c}:null;}})[_0xa37f('0x24')](respondWithResult(_0x379fd6,null))[_0xa37f('0x49')](handleError(_0x379fd6,null));};exports[_0xa37f('0x4f')]=function(_0x2eab25,_0x26a13d,_0x2f2567){var _0x5251b8={};var _0xb91c89={};var _0x1ddbc2;var _0x534b31;return db[_0xa37f('0x2b')][_0xa37f('0x4a')]({'where':{'id':_0x2eab25[_0xa37f('0x41')]['id']}})[_0xa37f('0x24')](handleEntityNotFound(_0x26a13d,null))['then'](function(_0x845934){if(_0x845934){_0x1ddbc2=_0x845934;_0xb91c89[_0xa37f('0x2f')]=_[_0xa37f('0x30')](db['ServicenowField']['rawAttributes']);_0xb91c89[_0xa37f('0x31')]=_[_0xa37f('0x30')](_0x2eab25['query']);_0xb91c89[_0xa37f('0x37')]=_[_0xa37f('0x32')](_0xb91c89['model'],_0xb91c89[_0xa37f('0x31')]);_0x5251b8[_0xa37f('0x43')]=_[_0xa37f('0x32')](_0xb91c89[_0xa37f('0x2f')],qs[_0xa37f('0x33')](_0x2eab25[_0xa37f('0x31')]['fields']));_0x5251b8[_0xa37f('0x43')]=_0x5251b8[_0xa37f('0x43')][_0xa37f('0x44')]?_0x5251b8[_0xa37f('0x43')]:_0xb91c89['model'];_0x5251b8[_0xa37f('0x35')]=qs[_0xa37f('0x36')](_0x2eab25[_0xa37f('0x31')][_0xa37f('0x36')]);_0x5251b8['where']=qs[_0xa37f('0x37')](_['pick'](_0x2eab25[_0xa37f('0x31')],_0xb91c89['filters']));if(_0x2eab25[_0xa37f('0x31')][_0xa37f('0x3c')]){_0x5251b8[_0xa37f('0x39')]=_[_0xa37f('0x3a')](_0x5251b8['where'],{'$or':_[_0xa37f('0x2a')](_0x5251b8[_0xa37f('0x43')],function(_0x3fdc5d){var _0x17613e={};_0x17613e[_0x3fdc5d]={'$like':'%'+_0x2eab25['query']['filter']+'%'};return _0x17613e;})});}_0x5251b8=_['merge']({},_0x5251b8,_0x2eab25[_0xa37f('0x3d')]);return _0x1ddbc2[_0xa37f('0x4f')](_0x5251b8);}})['then'](function(_0x3b2e72){if(_0x3b2e72){_0x534b31=_0x3b2e72[_0xa37f('0x44')];if(!_0x2eab25[_0xa37f('0x31')]['hasOwnProperty'](_0xa37f('0x4e'))){_0x5251b8[_0xa37f('0x1c')]=qs[_0xa37f('0x1c')](_0x2eab25[_0xa37f('0x31')][_0xa37f('0x1c')]);_0x5251b8['offset']=qs[_0xa37f('0x1a')](_0x2eab25[_0xa37f('0x31')]['offset']);}return _0x1ddbc2[_0xa37f('0x4f')](_0x5251b8);}})['then'](function(_0x5e0e3b){if(_0x5e0e3b){return _0x5e0e3b?{'count':_0x534b31,'rows':_0x5e0e3b}:null;}})[_0xa37f('0x24')](respondWithResult(_0x26a13d,null))['catch'](handleError(_0x26a13d,null));};
\ No newline at end of file
+var _0x19ff=['offset','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','ServicenowConfiguration','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','rawAttributes','find','create','body','destroy','ServicenowField','length','getFields','findOne','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x5958a6,_0x34a283){var _0x33513f=function(_0x499877){while(--_0x499877){_0x5958a6['push'](_0x5958a6['shift']());}};_0x33513f(++_0x34a283);}(_0x19ff,0xd7));var _0xf19f=function(_0x514b28,_0x1cae6a){_0x514b28=_0x514b28-0x0;var _0x1e1659=_0x19ff[_0x514b28];return _0x1e1659;};'use strict';var emlformat=require(_0xf19f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf19f('0x1'));var rp=require(_0xf19f('0x2'));var moment=require(_0xf19f('0x3'));var BPromise=require(_0xf19f('0x4'));var Mustache=require(_0xf19f('0x5'));var util=require(_0xf19f('0x6'));var path=require(_0xf19f('0x7'));var sox=require(_0xf19f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf19f('0x9'));var _=require(_0xf19f('0xa'));var squel=require(_0xf19f('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf19f('0xc'));var querystring=require(_0xf19f('0xd'));var Papa=require(_0xf19f('0xe'));var Redis=require(_0xf19f('0xf'));var authService=require(_0xf19f('0x10'));var qs=require(_0xf19f('0x11'));var as=require(_0xf19f('0x12'));var hardwareService=require(_0xf19f('0x13'));var logger=require(_0xf19f('0x14'))(_0xf19f('0x15'));var utils=require('../../config/utils');var config=require(_0xf19f('0x16'));var licenseUtil=require(_0xf19f('0x17'));var db=require(_0xf19f('0x18'))['db'];function respondWithStatusCode(_0x4d870a,_0x39a52e){_0x39a52e=_0x39a52e||0xcc;return function(_0x222165){if(_0x222165){return _0x4d870a[_0xf19f('0x19')](_0x39a52e);}return _0x4d870a[_0xf19f('0x1a')](_0x39a52e)[_0xf19f('0x1b')]();};}function respondWithResult(_0x30d114,_0x5af241){_0x5af241=_0x5af241||0xc8;return function(_0x52bb3a){if(_0x52bb3a){return _0x30d114['status'](_0x5af241)['json'](_0x52bb3a);}};}function respondWithFilteredResult(_0x334a63,_0x408e77){return function(_0x3317ef){if(_0x3317ef){var _0x326441=typeof _0x408e77[_0xf19f('0x1c')]==='undefined'&&typeof _0x408e77['limit']==='undefined';var _0x114685=_0x3317ef[_0xf19f('0x1d')];var _0x5436f6=_0x326441?0x0:_0x408e77[_0xf19f('0x1c')];var _0x2960f0=_0x326441?_0x3317ef[_0xf19f('0x1d')]:_0x408e77['offset']+_0x408e77[_0xf19f('0x1e')];var _0x23815f;if(_0x2960f0>=_0x114685){_0x2960f0=_0x114685;_0x23815f=0xc8;}else{_0x23815f=0xce;}_0x334a63[_0xf19f('0x1a')](_0x23815f);return _0x334a63[_0xf19f('0x1f')](_0xf19f('0x20'),_0x5436f6+'-'+_0x2960f0+'/'+_0x114685)[_0xf19f('0x21')](_0x3317ef);}return null;};}function patchUpdates(_0x5978fe){return function(_0x364e88){try{jsonpatch[_0xf19f('0x22')](_0x364e88,_0x5978fe,!![]);}catch(_0x4448f3){return BPromise[_0xf19f('0x23')](_0x4448f3);}return _0x364e88[_0xf19f('0x24')]();};}function saveUpdates(_0xd6056f,_0x2bac27){return function(_0x5a3048){if(_0x5a3048){return _0x5a3048[_0xf19f('0x25')](_0xd6056f)[_0xf19f('0x26')](function(_0x5ae571){return _0x5ae571;});}return null;};}function removeEntity(_0x1227d5,_0x37d43a){return function(_0x1c9fe2){if(_0x1c9fe2){return _0x1c9fe2['destroy']()[_0xf19f('0x26')](function(){_0x1227d5[_0xf19f('0x1a')](0xcc)[_0xf19f('0x1b')]();});}};}function handleEntityNotFound(_0x541651,_0x25a44a){return function(_0x54371b){if(!_0x54371b){_0x541651['sendStatus'](0x194);}return _0x54371b;};}function handleError(_0xf6434e,_0x2b0941){_0x2b0941=_0x2b0941||0x1f4;return function(_0x31b326){logger[_0xf19f('0x27')](_0x31b326[_0xf19f('0x28')]);if(_0x31b326[_0xf19f('0x29')]){delete _0x31b326[_0xf19f('0x29')];}_0xf6434e[_0xf19f('0x1a')](_0x2b0941)[_0xf19f('0x2a')](_0x31b326);};}exports[_0xf19f('0x2b')]=function(_0x1d569c,_0x3a076c){var _0x1e85ce={},_0x48bd16={},_0x227d05={'count':0x0,'rows':[]};var _0x3125a7=_[_0xf19f('0x2c')](db[_0xf19f('0x2d')]['rawAttributes'],function(_0x4c5df1){return{'name':_0x4c5df1['fieldName'],'type':_0x4c5df1['type'][_0xf19f('0x2e')]};});_0x48bd16[_0xf19f('0x2f')]=_[_0xf19f('0x2c')](_0x3125a7,'name');_0x48bd16[_0xf19f('0x30')]=_[_0xf19f('0x31')](_0x1d569c[_0xf19f('0x30')]);_0x48bd16[_0xf19f('0x32')]=_[_0xf19f('0x33')](_0x48bd16[_0xf19f('0x2f')],_0x48bd16[_0xf19f('0x30')]);_0x1e85ce[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x48bd16[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x1d569c[_0xf19f('0x30')][_0xf19f('0x35')]));_0x1e85ce[_0xf19f('0x34')]=_0x1e85ce['attributes']['length']?_0x1e85ce[_0xf19f('0x34')]:_0x48bd16[_0xf19f('0x2f')];if(!_0x1d569c[_0xf19f('0x30')][_0xf19f('0x36')](_0xf19f('0x37'))){_0x1e85ce[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x1d569c[_0xf19f('0x30')][_0xf19f('0x1e')]);_0x1e85ce['offset']=qs[_0xf19f('0x1c')](_0x1d569c[_0xf19f('0x30')]['offset']);}_0x1e85ce[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x1d569c['query'][_0xf19f('0x39')]);_0x1e85ce[_0xf19f('0x3a')]=qs[_0xf19f('0x32')](_[_0xf19f('0x3b')](_0x1d569c['query'],_0x48bd16[_0xf19f('0x32')]),_0x3125a7);if(_0x1d569c[_0xf19f('0x30')][_0xf19f('0x3c')]){_0x1e85ce[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x1e85ce['where'],{'$or':_['map'](_0x3125a7,function(_0x10c0a1){if(_0x10c0a1[_0xf19f('0x3e')]!==_0xf19f('0x3f')){var _0x564693={};_0x564693[_0x10c0a1[_0xf19f('0x29')]]={'$like':'%'+_0x1d569c[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x564693;}})});}_0x1e85ce=_[_0xf19f('0x3d')]({},_0x1e85ce,_0x1d569c[_0xf19f('0x40')]);var _0x483539={'where':_0x1e85ce[_0xf19f('0x3a')]};return db[_0xf19f('0x2d')][_0xf19f('0x1d')](_0x483539)['then'](function(_0x4f501e){_0x227d05[_0xf19f('0x1d')]=_0x4f501e;if(_0x1d569c[_0xf19f('0x30')][_0xf19f('0x41')]){_0x1e85ce[_0xf19f('0x42')]=[{'all':!![]}];}return db[_0xf19f('0x2d')]['findAll'](_0x1e85ce);})[_0xf19f('0x26')](function(_0x4ebf9){_0x227d05['rows']=_0x4ebf9;return _0x227d05;})['then'](respondWithFilteredResult(_0x3a076c,_0x1e85ce))[_0xf19f('0x43')](handleError(_0x3a076c,null));};exports[_0xf19f('0x44')]=function(_0x1c1e85,_0x53e45f){var _0x21b617={'raw':![],'where':{'id':_0x1c1e85[_0xf19f('0x45')]['id']}},_0x513278={};_0x513278[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db['ServicenowConfiguration'][_0xf19f('0x46')]);_0x513278[_0xf19f('0x30')]=_['keys'](_0x1c1e85[_0xf19f('0x30')]);_0x513278['filters']=_[_0xf19f('0x33')](_0x513278['model'],_0x513278[_0xf19f('0x30')]);_0x21b617['attributes']=_['intersection'](_0x513278[_0xf19f('0x2f')],qs['fields'](_0x1c1e85[_0xf19f('0x30')][_0xf19f('0x35')]));_0x21b617['attributes']=_0x21b617[_0xf19f('0x34')]['length']?_0x21b617['attributes']:_0x513278[_0xf19f('0x2f')];if(_0x1c1e85[_0xf19f('0x30')][_0xf19f('0x41')]){_0x21b617[_0xf19f('0x42')]=[{'all':!![]}];}_0x21b617=_[_0xf19f('0x3d')]({},_0x21b617,_0x1c1e85[_0xf19f('0x40')]);return db[_0xf19f('0x2d')][_0xf19f('0x47')](_0x21b617)[_0xf19f('0x26')](handleEntityNotFound(_0x53e45f,null))[_0xf19f('0x26')](respondWithResult(_0x53e45f,null))[_0xf19f('0x43')](handleError(_0x53e45f,null));};exports[_0xf19f('0x48')]=function(_0x1f68f2,_0x33be6c){return db[_0xf19f('0x2d')][_0xf19f('0x48')](_0x1f68f2[_0xf19f('0x49')],{})[_0xf19f('0x26')](respondWithResult(_0x33be6c,0xc9))[_0xf19f('0x43')](handleError(_0x33be6c,null));};exports[_0xf19f('0x25')]=function(_0x1c2f29,_0x27538b){if(_0x1c2f29[_0xf19f('0x49')]['id']){delete _0x1c2f29['body']['id'];}return db['ServicenowConfiguration']['find']({'where':{'id':_0x1c2f29[_0xf19f('0x45')]['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x27538b,null))[_0xf19f('0x26')](saveUpdates(_0x1c2f29[_0xf19f('0x49')],null))[_0xf19f('0x26')](respondWithResult(_0x27538b,null))['catch'](handleError(_0x27538b,null));};exports[_0xf19f('0x4a')]=function(_0x3ba5df,_0x1beff3){return db[_0xf19f('0x2d')][_0xf19f('0x47')]({'where':{'id':_0x3ba5df['params']['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x1beff3,null))[_0xf19f('0x26')](removeEntity(_0x1beff3,null))[_0xf19f('0x43')](handleError(_0x1beff3,null));};exports['getFields']=function(_0x4b6c08,_0x1c7e6d,_0x5458d0){var _0x413c64={};var _0x39cde9={};var _0x450993;var _0x2e589d;return db[_0xf19f('0x2d')]['findOne']({'where':{'id':_0x4b6c08['params']['id']}})['then'](handleEntityNotFound(_0x1c7e6d,null))[_0xf19f('0x26')](function(_0x12dd2a){if(_0x12dd2a){_0x450993=_0x12dd2a;_0x39cde9[_0xf19f('0x2f')]=_['keys'](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x39cde9['query']=_['keys'](_0x4b6c08[_0xf19f('0x30')]);_0x39cde9[_0xf19f('0x32')]=_['intersection'](_0x39cde9['model'],_0x39cde9['query']);_0x413c64[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x39cde9[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x4b6c08['query'][_0xf19f('0x35')]));_0x413c64[_0xf19f('0x34')]=_0x413c64['attributes'][_0xf19f('0x4c')]?_0x413c64[_0xf19f('0x34')]:_0x39cde9[_0xf19f('0x2f')];_0x413c64[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x4b6c08[_0xf19f('0x30')][_0xf19f('0x39')]);_0x413c64[_0xf19f('0x3a')]=qs['filters'](_[_0xf19f('0x3b')](_0x4b6c08['query'],_0x39cde9[_0xf19f('0x32')]));if(_0x4b6c08[_0xf19f('0x30')]['filter']){_0x413c64[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x413c64[_0xf19f('0x3a')],{'$or':_[_0xf19f('0x2c')](_0x413c64['attributes'],function(_0x4ed711){var _0x11aa5c={};_0x11aa5c[_0x4ed711]={'$like':'%'+_0x4b6c08[_0xf19f('0x30')]['filter']+'%'};return _0x11aa5c;})});}_0x413c64=_[_0xf19f('0x3d')]({},_0x413c64,_0x4b6c08[_0xf19f('0x40')]);return _0x450993[_0xf19f('0x4d')](_0x413c64);}})[_0xf19f('0x26')](function(_0x2e6056){if(_0x2e6056){_0x2e589d=_0x2e6056[_0xf19f('0x4c')];if(!_0x4b6c08['query'][_0xf19f('0x36')]('nolimit')){_0x413c64[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x4b6c08[_0xf19f('0x30')]['limit']);_0x413c64[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x4b6c08[_0xf19f('0x30')][_0xf19f('0x1c')]);}return _0x450993[_0xf19f('0x4d')](_0x413c64);}})[_0xf19f('0x26')](function(_0x345ed4){if(_0x345ed4){return _0x345ed4?{'count':_0x2e589d,'rows':_0x345ed4}:null;}})[_0xf19f('0x26')](respondWithResult(_0x1c7e6d,null))[_0xf19f('0x43')](handleError(_0x1c7e6d,null));};exports['getSubjects']=function(_0x1ba3e3,_0x3b29bb,_0x14eb2b){var _0x5d3143={};var _0x62bd88={};var _0xb4e24c;var _0x523910;return db['ServicenowConfiguration'][_0xf19f('0x4e')]({'where':{'id':_0x1ba3e3['params']['id']}})[_0xf19f('0x26')](handleEntityNotFound(_0x3b29bb,null))[_0xf19f('0x26')](function(_0x49ca97){if(_0x49ca97){_0xb4e24c=_0x49ca97;_0x62bd88[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x62bd88['query']=_[_0xf19f('0x31')](_0x1ba3e3[_0xf19f('0x30')]);_0x62bd88['filters']=_[_0xf19f('0x33')](_0x62bd88[_0xf19f('0x2f')],_0x62bd88[_0xf19f('0x30')]);_0x5d3143[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x62bd88['model'],qs[_0xf19f('0x35')](_0x1ba3e3[_0xf19f('0x30')]['fields']));_0x5d3143[_0xf19f('0x34')]=_0x5d3143[_0xf19f('0x34')][_0xf19f('0x4c')]?_0x5d3143[_0xf19f('0x34')]:_0x62bd88[_0xf19f('0x2f')];_0x5d3143[_0xf19f('0x38')]=qs[_0xf19f('0x39')](_0x1ba3e3[_0xf19f('0x30')]['sort']);_0x5d3143[_0xf19f('0x3a')]=qs[_0xf19f('0x32')](_[_0xf19f('0x3b')](_0x1ba3e3['query'],_0x62bd88['filters']));if(_0x1ba3e3[_0xf19f('0x30')]['filter']){_0x5d3143['where']=_['merge'](_0x5d3143[_0xf19f('0x3a')],{'$or':_[_0xf19f('0x2c')](_0x5d3143[_0xf19f('0x34')],function(_0x5de133){var _0x5d192e={};_0x5d192e[_0x5de133]={'$like':'%'+_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x5d192e;})});}_0x5d3143=_[_0xf19f('0x3d')]({},_0x5d3143,_0x1ba3e3[_0xf19f('0x40')]);return _0xb4e24c[_0xf19f('0x4f')](_0x5d3143);}})[_0xf19f('0x26')](function(_0x326c32){if(_0x326c32){_0x523910=_0x326c32[_0xf19f('0x4c')];if(!_0x1ba3e3['query'][_0xf19f('0x36')](_0xf19f('0x37'))){_0x5d3143[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x1e')]);_0x5d3143[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x1ba3e3[_0xf19f('0x30')][_0xf19f('0x1c')]);}return _0xb4e24c[_0xf19f('0x4f')](_0x5d3143);}})[_0xf19f('0x26')](function(_0x4eb1da){if(_0x4eb1da){return _0x4eb1da?{'count':_0x523910,'rows':_0x4eb1da}:null;}})[_0xf19f('0x26')](respondWithResult(_0x3b29bb,null))[_0xf19f('0x43')](handleError(_0x3b29bb,null));};exports[_0xf19f('0x50')]=function(_0x58d300,_0x48a2f3,_0x1d41bf){var _0x5d32cb={};var _0x5d8f86={};var _0x1124cf;var _0xb4c604;return db[_0xf19f('0x2d')][_0xf19f('0x4e')]({'where':{'id':_0x58d300[_0xf19f('0x45')]['id']}})['then'](handleEntityNotFound(_0x48a2f3,null))['then'](function(_0x52fda6){if(_0x52fda6){_0x1124cf=_0x52fda6;_0x5d8f86[_0xf19f('0x2f')]=_[_0xf19f('0x31')](db[_0xf19f('0x4b')][_0xf19f('0x46')]);_0x5d8f86[_0xf19f('0x30')]=_[_0xf19f('0x31')](_0x58d300[_0xf19f('0x30')]);_0x5d8f86['filters']=_[_0xf19f('0x33')](_0x5d8f86[_0xf19f('0x2f')],_0x5d8f86[_0xf19f('0x30')]);_0x5d32cb[_0xf19f('0x34')]=_[_0xf19f('0x33')](_0x5d8f86[_0xf19f('0x2f')],qs[_0xf19f('0x35')](_0x58d300[_0xf19f('0x30')][_0xf19f('0x35')]));_0x5d32cb[_0xf19f('0x34')]=_0x5d32cb[_0xf19f('0x34')][_0xf19f('0x4c')]?_0x5d32cb[_0xf19f('0x34')]:_0x5d8f86[_0xf19f('0x2f')];_0x5d32cb[_0xf19f('0x38')]=qs['sort'](_0x58d300[_0xf19f('0x30')][_0xf19f('0x39')]);_0x5d32cb[_0xf19f('0x3a')]=qs['filters'](_[_0xf19f('0x3b')](_0x58d300['query'],_0x5d8f86['filters']));if(_0x58d300[_0xf19f('0x30')]['filter']){_0x5d32cb[_0xf19f('0x3a')]=_[_0xf19f('0x3d')](_0x5d32cb['where'],{'$or':_[_0xf19f('0x2c')](_0x5d32cb[_0xf19f('0x34')],function(_0x202c0e){var _0x470df5={};_0x470df5[_0x202c0e]={'$like':'%'+_0x58d300[_0xf19f('0x30')][_0xf19f('0x3c')]+'%'};return _0x470df5;})});}_0x5d32cb=_['merge']({},_0x5d32cb,_0x58d300[_0xf19f('0x40')]);return _0x1124cf[_0xf19f('0x50')](_0x5d32cb);}})[_0xf19f('0x26')](function(_0x743bc0){if(_0x743bc0){_0xb4c604=_0x743bc0[_0xf19f('0x4c')];if(!_0x58d300['query']['hasOwnProperty']('nolimit')){_0x5d32cb[_0xf19f('0x1e')]=qs[_0xf19f('0x1e')](_0x58d300['query']['limit']);_0x5d32cb[_0xf19f('0x1c')]=qs[_0xf19f('0x1c')](_0x58d300[_0xf19f('0x30')]['offset']);}return _0x1124cf[_0xf19f('0x50')](_0x5d32cb);}})['then'](function(_0x735ef6){if(_0x735ef6){return _0x735ef6?{'count':_0xb4c604,'rows':_0x735ef6}:null;}})[_0xf19f('0x26')](respondWithResult(_0x48a2f3,null))[_0xf19f('0x43')](handleError(_0x48a2f3,null));};
\ No newline at end of file
index 89af6cb..cb60bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c50=['bluebird','request-promise','../../config/environment','./intServicenowConfiguration.attributes','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x97b91e,_0x4657c8){var _0x43a173=function(_0x533bf8){while(--_0x533bf8){_0x97b91e['push'](_0x97b91e['shift']());}};_0x43a173(++_0x4657c8);}(_0x4c50,0x10f));var _0x04c5=function(_0x44c590,_0xe603da){_0x44c590=_0x44c590-0x0;var _0x3a7542=_0x4c50[_0x44c590];return _0x3a7542;};'use strict';var _=require(_0x04c5('0x0'));var util=require(_0x04c5('0x1'));var logger=require(_0x04c5('0x2'))(_0x04c5('0x3'));var moment=require(_0x04c5('0x4'));var BPromise=require(_0x04c5('0x5'));var rp=require(_0x04c5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x04c5('0x7'));var attributes=require(_0x04c5('0x8'));module['exports']=function(_0x314a0e,_0x347dd3){return _0x314a0e[_0x04c5('0x9')](_0x04c5('0xa'),attributes,{'tableName':_0x04c5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x10b8=['path','rimraf','../../config/environment','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x589f99,_0x2e94d3){var _0x8f928c=function(_0x3f3168){while(--_0x3f3168){_0x589f99['push'](_0x589f99['shift']());}};_0x8f928c(++_0x2e94d3);}(_0x10b8,0x166));var _0x810b=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x10b8[_0x1573ea];return _0x51c0e2;};'use strict';var _=require(_0x810b('0x0'));var util=require(_0x810b('0x1'));var logger=require(_0x810b('0x2'))(_0x810b('0x3'));var moment=require(_0x810b('0x4'));var BPromise=require(_0x810b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x810b('0x6'));var rimraf=require(_0x810b('0x7'));var config=require(_0x810b('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x810b('0x9')]=function(_0x3166f9,_0x3d3a15){return _0x3166f9[_0x810b('0xa')](_0x810b('0xb'),attributes,{'tableName':_0x810b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c7f35f..8586576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d53=['moment','../../mysqldb','../../config/logger','../../config/environment','client','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','lodash','util'];(function(_0x1d7cc8,_0x151a98){var _0x527953=function(_0x2ea267){while(--_0x2ea267){_0x1d7cc8['push'](_0x1d7cc8['shift']());}};_0x527953(++_0x151a98);}(_0x0d53,0x10e));var _0x30d5=function(_0x2a86ca,_0x5754be){_0x2a86ca=_0x2a86ca-0x0;var _0xb6c642=_0x0d53[_0x2a86ca];return _0xb6c642;};'use strict';var _=require(_0x30d5('0x0'));var util=require(_0x30d5('0x1'));var moment=require(_0x30d5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x30d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x30d5('0x4'))('rpc');var config=require(_0x30d5('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x30d5('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ca4d4,_0x416f28,_0x40460d){return new BPromise(function(_0x518a68,_0x1e01bd){return client[_0x30d5('0x7')](_0x4ca4d4,_0x40460d)[_0x30d5('0x8')](function(_0x162089){logger['info'](_0x30d5('0x9'),_0x416f28,_0x30d5('0xa'));logger[_0x30d5('0xb')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x416f28,_0x30d5('0xa'),JSON[_0x30d5('0xc')](_0x162089));if(_0x162089[_0x30d5('0xd')]){if(_0x162089[_0x30d5('0xd')]['code']===0x1f4){logger[_0x30d5('0xd')](_0x30d5('0x9'),_0x416f28,_0x162089['error'][_0x30d5('0xe')]);return _0x1e01bd(_0x162089[_0x30d5('0xd')]['message']);}logger[_0x30d5('0xd')](_0x30d5('0x9'),_0x416f28,_0x162089['error'][_0x30d5('0xe')]);return _0x518a68(_0x162089[_0x30d5('0xd')][_0x30d5('0xe')]);}else{logger[_0x30d5('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x416f28,_0x30d5('0xa'));_0x518a68(_0x162089[_0x30d5('0x10')][_0x30d5('0xe')]);}})['catch'](function(_0x45942c){logger['error'](_0x30d5('0x9'),_0x416f28,_0x45942c);_0x1e01bd(_0x45942c);});});}
\ No newline at end of file
+var _0xf4e3=['../../config/environment','jayson/promise','client','http','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xf4e3,0x12e));var _0x3f4e=function(_0x138d06,_0x33edf2){_0x138d06=_0x138d06-0x0;var _0x1a01eb=_0xf4e3[_0x138d06];return _0x1a01eb;};'use strict';var _=require(_0x3f4e('0x0'));var util=require(_0x3f4e('0x1'));var moment=require(_0x3f4e('0x2'));var BPromise=require(_0x3f4e('0x3'));var rs=require(_0x3f4e('0x4'));var fs=require('fs');var Redis=require(_0x3f4e('0x5'));var db=require(_0x3f4e('0x6'))['db'];var utils=require(_0x3f4e('0x7'));var logger=require(_0x3f4e('0x8'))(_0x3f4e('0x9'));var config=require(_0x3f4e('0xa'));var jayson=require(_0x3f4e('0xb'));var client=jayson[_0x3f4e('0xc')][_0x3f4e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3ae617,_0x11409f,_0x1eb383){return new BPromise(function(_0x12abae,_0x29a52d){return client['request'](_0x3ae617,_0x1eb383)['then'](function(_0xf8be92){logger[_0x3f4e('0xe')](_0x3f4e('0xf'),_0x11409f,_0x3f4e('0x10'));logger[_0x3f4e('0x11')](_0x3f4e('0x12'),_0x11409f,_0x3f4e('0x10'),JSON[_0x3f4e('0x13')](_0xf8be92));if(_0xf8be92[_0x3f4e('0x14')]){if(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x15')]===0x1f4){logger[_0x3f4e('0x14')](_0x3f4e('0xf'),_0x11409f,_0xf8be92[_0x3f4e('0x14')]['message']);return _0x29a52d(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);}logger['error'](_0x3f4e('0xf'),_0x11409f,_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);return _0x12abae(_0xf8be92[_0x3f4e('0x14')][_0x3f4e('0x16')]);}else{logger[_0x3f4e('0xe')](_0x3f4e('0xf'),_0x11409f,_0x3f4e('0x10'));_0x12abae(_0xf8be92['result'][_0x3f4e('0x16')]);}})[_0x3f4e('0x17')](function(_0x140c94){logger[_0x3f4e('0x14')](_0x3f4e('0xf'),_0x11409f,_0x140c94);_0x29a52d(_0x140c94);});});}
\ No newline at end of file
index 47f9ce5..373e733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351f=['./intServicenowField.controller','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','exports','path','connect-timeout','express','../../config/environment'];(function(_0x5baf32,_0x103278){var _0x539cae=function(_0x43c0c2){while(--_0x43c0c2){_0x5baf32['push'](_0x5baf32['shift']());}};_0x539cae(++_0x103278);}(_0x351f,0xdd));var _0xf351=function(_0x1ad266,_0x343a4f){_0x1ad266=_0x1ad266-0x0;var _0x4eae13=_0x351f[_0x1ad266];return _0x4eae13;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf351('0x0'));var timeout=require(_0xf351('0x1'));var express=require(_0xf351('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(_0xf351('0x3'));var controller=require(_0xf351('0x4'));router[_0xf351('0x5')]('/',auth[_0xf351('0x6')](),controller['index']);router[_0xf351('0x5')](_0xf351('0x7'),auth[_0xf351('0x6')](),controller[_0xf351('0x8')]);router['post']('/',auth[_0xf351('0x6')](),controller[_0xf351('0x9')]);router[_0xf351('0xa')]('/:id',auth[_0xf351('0x6')](),controller[_0xf351('0xb')]);router[_0xf351('0xc')](_0xf351('0x7'),auth[_0xf351('0x6')](),controller[_0xf351('0xd')]);module[_0xf351('0xe')]=router;
\ No newline at end of file
+var _0x1dd4=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','util'];(function(_0x46c093,_0x12e60e){var _0x4b404b=function(_0xa2ab6d){while(--_0xa2ab6d){_0x46c093['push'](_0x46c093['shift']());}};_0x4b404b(++_0x12e60e);}(_0x1dd4,0x1ed));var _0x41dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1dd4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x41dd('0x0'));var path=require(_0x41dd('0x1'));var timeout=require(_0x41dd('0x2'));var express=require('express');var router=express[_0x41dd('0x3')]();var fs_extra=require(_0x41dd('0x4'));var auth=require(_0x41dd('0x5'));var interaction=require(_0x41dd('0x6'));var config=require(_0x41dd('0x7'));var controller=require(_0x41dd('0x8'));router[_0x41dd('0x9')]('/',auth[_0x41dd('0xa')](),controller[_0x41dd('0xb')]);router[_0x41dd('0x9')](_0x41dd('0xc'),auth['isAuthenticated'](),controller[_0x41dd('0xd')]);router[_0x41dd('0xe')]('/',auth['isAuthenticated'](),controller[_0x41dd('0xf')]);router[_0x41dd('0x10')](_0x41dd('0xc'),auth['isAuthenticated'](),controller[_0x41dd('0x11')]);router['delete'](_0x41dd('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x41dd('0x12')]=router;
\ No newline at end of file
index 211bdc3..ced52a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a73=['STRING','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x4dfe62,_0x37c7fd){var _0x4b9ec2=function(_0x13fd81){while(--_0x13fd81){_0x4dfe62['push'](_0x4dfe62['shift']());}};_0x4b9ec2(++_0x37c7fd);}(_0x2a73,0x145));var _0x32a7=function(_0x5873b2,_0x417e9a){_0x5873b2=_0x5873b2-0x0;var _0x26ba11=_0x2a73[_0x5873b2];return _0x26ba11;};'use strict';var Sequelize=require(_0x32a7('0x0'));module[_0x32a7('0x1')]={'type':{'type':Sequelize[_0x32a7('0x2')](_0x32a7('0x3'),_0x32a7('0x4'),_0x32a7('0x5'),_0x32a7('0x6'),_0x32a7('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x32a7('0x8')]},'keyType':{'type':Sequelize[_0x32a7('0x2')](_0x32a7('0x3'),_0x32a7('0x4'),_0x32a7('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf741=['ENUM','string','variable','keyValue','STRING','customVariable','BOOLEAN','sequelize','exports'];(function(_0x5d43ec,_0x19a28a){var _0x54132b=function(_0x58c52a){while(--_0x58c52a){_0x5d43ec['push'](_0x5d43ec['shift']());}};_0x54132b(++_0x19a28a);}(_0xf741,0x1db));var _0x1f74=function(_0x5a9d75,_0xfde03b){_0x5a9d75=_0x5a9d75-0x0;var _0x2c7c82=_0xf741[_0x5a9d75];return _0x2c7c82;};'use strict';var Sequelize=require(_0x1f74('0x0'));module[_0x1f74('0x1')]={'type':{'type':Sequelize[_0x1f74('0x2')](_0x1f74('0x3'),_0x1f74('0x4'),'customVariable',_0x1f74('0x5'),'picklist'),'defaultValue':_0x1f74('0x3')},'content':{'type':Sequelize[_0x1f74('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1f74('0x2')](_0x1f74('0x3'),_0x1f74('0x4'),_0x1f74('0x7'))},'keyContent':{'type':Sequelize[_0x1f74('0x6')]},'idField':{'type':Sequelize[_0x1f74('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1f74('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1f74('0x6')]}};
\ No newline at end of file
index e20beb9..dcfaadd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7596=['sendStatus','error','name','index','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ServicenowField','includeAll','include','findAll','catch','rawAttributes','find','create','body','params','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7596,0x150));var _0x6759=function(_0x57d5c1,_0x55a5ef){_0x57d5c1=_0x57d5c1-0x0;var _0x4347c1=_0x7596[_0x57d5c1];return _0x4347c1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6759('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6759('0x1'));var rp=require(_0x6759('0x2'));var moment=require('moment');var BPromise=require(_0x6759('0x3'));var Mustache=require('mustache');var util=require(_0x6759('0x4'));var path=require(_0x6759('0x5'));var sox=require(_0x6759('0x6'));var csv=require(_0x6759('0x7'));var ejs=require(_0x6759('0x8'));var fs=require('fs');var fs_extra=require(_0x6759('0x9'));var _=require(_0x6759('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6759('0xb'));var toCsv=require(_0x6759('0x7'));var querystring=require(_0x6759('0xc'));var Papa=require(_0x6759('0xd'));var Redis=require(_0x6759('0xe'));var authService=require(_0x6759('0xf'));var qs=require(_0x6759('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6759('0x11'));var logger=require(_0x6759('0x12'))(_0x6759('0x13'));var utils=require(_0x6759('0x14'));var config=require(_0x6759('0x15'));var licenseUtil=require(_0x6759('0x16'));var db=require(_0x6759('0x17'))['db'];function respondWithStatusCode(_0x5a3d92,_0x134c0e){_0x134c0e=_0x134c0e||0xcc;return function(_0x1f445b){if(_0x1f445b){return _0x5a3d92['sendStatus'](_0x134c0e);}return _0x5a3d92[_0x6759('0x18')](_0x134c0e)[_0x6759('0x19')]();};}function respondWithResult(_0x2379ea,_0x595288){_0x595288=_0x595288||0xc8;return function(_0x3e7da4){if(_0x3e7da4){return _0x2379ea[_0x6759('0x18')](_0x595288)[_0x6759('0x1a')](_0x3e7da4);}};}function respondWithFilteredResult(_0x2f113c,_0x416c80){return function(_0x3a64ea){if(_0x3a64ea){var _0x75e013=typeof _0x416c80[_0x6759('0x1b')]===_0x6759('0x1c')&&typeof _0x416c80[_0x6759('0x1d')]===_0x6759('0x1c');var _0x5e13c3=_0x3a64ea[_0x6759('0x1e')];var _0x9b5aa6=_0x75e013?0x0:_0x416c80['offset'];var _0x2e738a=_0x75e013?_0x3a64ea[_0x6759('0x1e')]:_0x416c80[_0x6759('0x1b')]+_0x416c80[_0x6759('0x1d')];var _0x528eba;if(_0x2e738a>=_0x5e13c3){_0x2e738a=_0x5e13c3;_0x528eba=0xc8;}else{_0x528eba=0xce;}_0x2f113c['status'](_0x528eba);return _0x2f113c[_0x6759('0x1f')](_0x6759('0x20'),_0x9b5aa6+'-'+_0x2e738a+'/'+_0x5e13c3)['json'](_0x3a64ea);}return null;};}function patchUpdates(_0x1bf7f2){return function(_0x4e7ae2){try{jsonpatch[_0x6759('0x21')](_0x4e7ae2,_0x1bf7f2,!![]);}catch(_0x371115){return BPromise[_0x6759('0x22')](_0x371115);}return _0x4e7ae2[_0x6759('0x23')]();};}function saveUpdates(_0x2b5408,_0x4fba03){return function(_0x43f2e0){if(_0x43f2e0){return _0x43f2e0[_0x6759('0x24')](_0x2b5408)[_0x6759('0x25')](function(_0xede767){return _0xede767;});}return null;};}function removeEntity(_0x3e2aa7,_0x53da8e){return function(_0x128e74){if(_0x128e74){return _0x128e74[_0x6759('0x26')]()[_0x6759('0x25')](function(){_0x3e2aa7[_0x6759('0x18')](0xcc)[_0x6759('0x19')]();});}};}function handleEntityNotFound(_0x5f3e99,_0x218905){return function(_0x387601){if(!_0x387601){_0x5f3e99[_0x6759('0x27')](0x194);}return _0x387601;};}function handleError(_0x47ec59,_0x16c6df){_0x16c6df=_0x16c6df||0x1f4;return function(_0x14be9a){logger[_0x6759('0x28')](_0x14be9a['stack']);if(_0x14be9a[_0x6759('0x29')]){delete _0x14be9a['name'];}_0x47ec59['status'](_0x16c6df)['send'](_0x14be9a);};}exports[_0x6759('0x2a')]=function(_0x14cfea,_0xf266e4){var _0x11143d={},_0x104639={},_0x32a63f={'count':0x0,'rows':[]};var _0x4e493f=_['map'](db['ServicenowField']['rawAttributes'],function(_0x1c0323){return{'name':_0x1c0323[_0x6759('0x2b')],'type':_0x1c0323[_0x6759('0x2c')][_0x6759('0x2d')]};});_0x104639[_0x6759('0x2e')]=_[_0x6759('0x2f')](_0x4e493f,_0x6759('0x29'));_0x104639[_0x6759('0x30')]=_[_0x6759('0x31')](_0x14cfea[_0x6759('0x30')]);_0x104639[_0x6759('0x32')]=_[_0x6759('0x33')](_0x104639[_0x6759('0x2e')],_0x104639[_0x6759('0x30')]);_0x11143d[_0x6759('0x34')]=_['intersection'](_0x104639[_0x6759('0x2e')],qs[_0x6759('0x35')](_0x14cfea[_0x6759('0x30')][_0x6759('0x35')]));_0x11143d[_0x6759('0x34')]=_0x11143d[_0x6759('0x34')][_0x6759('0x36')]?_0x11143d[_0x6759('0x34')]:_0x104639[_0x6759('0x2e')];if(!_0x14cfea[_0x6759('0x30')][_0x6759('0x37')](_0x6759('0x38'))){_0x11143d[_0x6759('0x1d')]=qs['limit'](_0x14cfea[_0x6759('0x30')]['limit']);_0x11143d['offset']=qs[_0x6759('0x1b')](_0x14cfea[_0x6759('0x30')]['offset']);}_0x11143d[_0x6759('0x39')]=qs['sort'](_0x14cfea[_0x6759('0x30')][_0x6759('0x3a')]);_0x11143d[_0x6759('0x3b')]=qs[_0x6759('0x32')](_[_0x6759('0x3c')](_0x14cfea[_0x6759('0x30')],_0x104639['filters']),_0x4e493f);if(_0x14cfea['query'][_0x6759('0x3d')]){_0x11143d['where']=_[_0x6759('0x3e')](_0x11143d[_0x6759('0x3b')],{'$or':_['map'](_0x4e493f,function(_0x45f98f){if(_0x45f98f[_0x6759('0x2c')]!==_0x6759('0x3f')){var _0x3f844b={};_0x3f844b[_0x45f98f[_0x6759('0x29')]]={'$like':'%'+_0x14cfea[_0x6759('0x30')][_0x6759('0x3d')]+'%'};return _0x3f844b;}})});}_0x11143d=_['merge']({},_0x11143d,_0x14cfea[_0x6759('0x40')]);var _0x275cd6={'where':_0x11143d[_0x6759('0x3b')]};return db[_0x6759('0x41')][_0x6759('0x1e')](_0x275cd6)[_0x6759('0x25')](function(_0x509e00){_0x32a63f[_0x6759('0x1e')]=_0x509e00;if(_0x14cfea[_0x6759('0x30')][_0x6759('0x42')]){_0x11143d[_0x6759('0x43')]=[{'all':!![]}];}return db[_0x6759('0x41')][_0x6759('0x44')](_0x11143d);})[_0x6759('0x25')](function(_0x77f03){_0x32a63f['rows']=_0x77f03;return _0x32a63f;})[_0x6759('0x25')](respondWithFilteredResult(_0xf266e4,_0x11143d))[_0x6759('0x45')](handleError(_0xf266e4,null));};exports['show']=function(_0x23935a,_0x9742c1){var _0x3ef895={'raw':!![],'where':{'id':_0x23935a['params']['id']}},_0x22ed47={};_0x22ed47[_0x6759('0x2e')]=_['keys'](db[_0x6759('0x41')][_0x6759('0x46')]);_0x22ed47[_0x6759('0x30')]=_[_0x6759('0x31')](_0x23935a['query']);_0x22ed47[_0x6759('0x32')]=_[_0x6759('0x33')](_0x22ed47[_0x6759('0x2e')],_0x22ed47['query']);_0x3ef895['attributes']=_[_0x6759('0x33')](_0x22ed47[_0x6759('0x2e')],qs[_0x6759('0x35')](_0x23935a[_0x6759('0x30')][_0x6759('0x35')]));_0x3ef895[_0x6759('0x34')]=_0x3ef895[_0x6759('0x34')][_0x6759('0x36')]?_0x3ef895['attributes']:_0x22ed47[_0x6759('0x2e')];if(_0x23935a[_0x6759('0x30')][_0x6759('0x42')]){_0x3ef895[_0x6759('0x43')]=[{'all':!![]}];}_0x3ef895=_[_0x6759('0x3e')]({},_0x3ef895,_0x23935a[_0x6759('0x40')]);return db['ServicenowField'][_0x6759('0x47')](_0x3ef895)['then'](handleEntityNotFound(_0x9742c1,null))[_0x6759('0x25')](respondWithResult(_0x9742c1,null))['catch'](handleError(_0x9742c1,null));};exports[_0x6759('0x48')]=function(_0x47e251,_0x1f1864){return db['ServicenowField'][_0x6759('0x48')](_0x47e251['body'],{})[_0x6759('0x25')](respondWithResult(_0x1f1864,0xc9))[_0x6759('0x45')](handleError(_0x1f1864,null));};exports[_0x6759('0x24')]=function(_0x1768fa,_0x432660){if(_0x1768fa['body']['id']){delete _0x1768fa[_0x6759('0x49')]['id'];}return db[_0x6759('0x41')]['find']({'where':{'id':_0x1768fa['params']['id']}})[_0x6759('0x25')](handleEntityNotFound(_0x432660,null))[_0x6759('0x25')](saveUpdates(_0x1768fa[_0x6759('0x49')],null))[_0x6759('0x25')](respondWithResult(_0x432660,null))[_0x6759('0x45')](handleError(_0x432660,null));};exports[_0x6759('0x26')]=function(_0x4fc625,_0x3120a4){return db[_0x6759('0x41')][_0x6759('0x47')]({'where':{'id':_0x4fc625[_0x6759('0x4a')]['id']}})[_0x6759('0x25')](handleEntityNotFound(_0x3120a4,null))['then'](removeEntity(_0x3120a4,null))['catch'](handleError(_0x3120a4,null));};
\ No newline at end of file
+var _0x60a9=['filters','attributes','intersection','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','ServicenowField','includeAll','include','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','error','name','map','rawAttributes','fieldName','type','model','query','keys'];(function(_0x2b38c7,_0x23ada0){var _0x3d0ac0=function(_0x28b647){while(--_0x28b647){_0x2b38c7['push'](_0x2b38c7['shift']());}};_0x3d0ac0(++_0x23ada0);}(_0x60a9,0xe9));var _0x960a=function(_0x5f4272,_0x4ef5b7){_0x5f4272=_0x5f4272-0x0;var _0x11c8b3=_0x60a9[_0x5f4272];return _0x11c8b3;};'use strict';var emlformat=require(_0x960a('0x0'));var rimraf=require(_0x960a('0x1'));var zipdir=require(_0x960a('0x2'));var jsonpatch=require(_0x960a('0x3'));var rp=require(_0x960a('0x4'));var moment=require(_0x960a('0x5'));var BPromise=require(_0x960a('0x6'));var Mustache=require(_0x960a('0x7'));var util=require(_0x960a('0x8'));var path=require(_0x960a('0x9'));var sox=require(_0x960a('0xa'));var csv=require(_0x960a('0xb'));var ejs=require(_0x960a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x960a('0xd'));var jsforce=require(_0x960a('0xe'));var deskjs=require(_0x960a('0xf'));var toCsv=require(_0x960a('0xb'));var querystring=require('querystring');var Papa=require(_0x960a('0x10'));var Redis=require('ioredis');var authService=require(_0x960a('0x11'));var qs=require(_0x960a('0x12'));var as=require(_0x960a('0x13'));var hardwareService=require(_0x960a('0x14'));var logger=require(_0x960a('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x960a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x960a('0x17'))['db'];function respondWithStatusCode(_0x5cce3b,_0xe4bf9b){_0xe4bf9b=_0xe4bf9b||0xcc;return function(_0x336a8d){if(_0x336a8d){return _0x5cce3b[_0x960a('0x18')](_0xe4bf9b);}return _0x5cce3b['status'](_0xe4bf9b)[_0x960a('0x19')]();};}function respondWithResult(_0x371a5b,_0x22c39c){_0x22c39c=_0x22c39c||0xc8;return function(_0x397259){if(_0x397259){return _0x371a5b[_0x960a('0x1a')](_0x22c39c)['json'](_0x397259);}};}function respondWithFilteredResult(_0x2eb00b,_0x2b514c){return function(_0x442b8a){if(_0x442b8a){var _0x467360=typeof _0x2b514c[_0x960a('0x1b')]===_0x960a('0x1c')&&typeof _0x2b514c[_0x960a('0x1d')]===_0x960a('0x1c');var _0x48fc62=_0x442b8a[_0x960a('0x1e')];var _0x5bfee5=_0x467360?0x0:_0x2b514c['offset'];var _0x5bc292=_0x467360?_0x442b8a['count']:_0x2b514c[_0x960a('0x1b')]+_0x2b514c['limit'];var _0x1dd65b;if(_0x5bc292>=_0x48fc62){_0x5bc292=_0x48fc62;_0x1dd65b=0xc8;}else{_0x1dd65b=0xce;}_0x2eb00b[_0x960a('0x1a')](_0x1dd65b);return _0x2eb00b['set'](_0x960a('0x1f'),_0x5bfee5+'-'+_0x5bc292+'/'+_0x48fc62)[_0x960a('0x20')](_0x442b8a);}return null;};}function patchUpdates(_0x9c4764){return function(_0x43150c){try{jsonpatch[_0x960a('0x21')](_0x43150c,_0x9c4764,!![]);}catch(_0x44332a){return BPromise[_0x960a('0x22')](_0x44332a);}return _0x43150c[_0x960a('0x23')]();};}function saveUpdates(_0x189469,_0x42855f){return function(_0x3098ab){if(_0x3098ab){return _0x3098ab[_0x960a('0x24')](_0x189469)[_0x960a('0x25')](function(_0x3f8d2c){return _0x3f8d2c;});}return null;};}function removeEntity(_0x2540c1,_0x47d780){return function(_0x11d77a){if(_0x11d77a){return _0x11d77a['destroy']()['then'](function(){_0x2540c1[_0x960a('0x1a')](0xcc)[_0x960a('0x19')]();});}};}function handleEntityNotFound(_0x1fa4c8,_0xe83d54){return function(_0x22878d){if(!_0x22878d){_0x1fa4c8['sendStatus'](0x194);}return _0x22878d;};}function handleError(_0x3133f7,_0x3bcb44){_0x3bcb44=_0x3bcb44||0x1f4;return function(_0x5bbdfa){logger[_0x960a('0x26')](_0x5bbdfa['stack']);if(_0x5bbdfa[_0x960a('0x27')]){delete _0x5bbdfa[_0x960a('0x27')];}_0x3133f7[_0x960a('0x1a')](_0x3bcb44)['send'](_0x5bbdfa);};}exports['index']=function(_0x14ed81,_0x370cab){var _0x324eb8={},_0x421b72={},_0xbe60d7={'count':0x0,'rows':[]};var _0x24cdfe=_[_0x960a('0x28')](db['ServicenowField'][_0x960a('0x29')],function(_0x254311){return{'name':_0x254311[_0x960a('0x2a')],'type':_0x254311[_0x960a('0x2b')]['key']};});_0x421b72[_0x960a('0x2c')]=_['map'](_0x24cdfe,_0x960a('0x27'));_0x421b72[_0x960a('0x2d')]=_[_0x960a('0x2e')](_0x14ed81['query']);_0x421b72[_0x960a('0x2f')]=_['intersection'](_0x421b72['model'],_0x421b72['query']);_0x324eb8[_0x960a('0x30')]=_[_0x960a('0x31')](_0x421b72[_0x960a('0x2c')],qs[_0x960a('0x32')](_0x14ed81[_0x960a('0x2d')]['fields']));_0x324eb8[_0x960a('0x30')]=_0x324eb8[_0x960a('0x30')][_0x960a('0x33')]?_0x324eb8['attributes']:_0x421b72[_0x960a('0x2c')];if(!_0x14ed81['query']['hasOwnProperty'](_0x960a('0x34'))){_0x324eb8['limit']=qs[_0x960a('0x1d')](_0x14ed81[_0x960a('0x2d')]['limit']);_0x324eb8[_0x960a('0x1b')]=qs[_0x960a('0x1b')](_0x14ed81[_0x960a('0x2d')][_0x960a('0x1b')]);}_0x324eb8['order']=qs[_0x960a('0x35')](_0x14ed81[_0x960a('0x2d')][_0x960a('0x35')]);_0x324eb8[_0x960a('0x36')]=qs[_0x960a('0x2f')](_[_0x960a('0x37')](_0x14ed81[_0x960a('0x2d')],_0x421b72[_0x960a('0x2f')]),_0x24cdfe);if(_0x14ed81[_0x960a('0x2d')]['filter']){_0x324eb8[_0x960a('0x36')]=_[_0x960a('0x38')](_0x324eb8[_0x960a('0x36')],{'$or':_['map'](_0x24cdfe,function(_0xcaafc7){if(_0xcaafc7[_0x960a('0x2b')]!==_0x960a('0x39')){var _0x27fb4a={};_0x27fb4a[_0xcaafc7[_0x960a('0x27')]]={'$like':'%'+_0x14ed81[_0x960a('0x2d')][_0x960a('0x3a')]+'%'};return _0x27fb4a;}})});}_0x324eb8=_[_0x960a('0x38')]({},_0x324eb8,_0x14ed81[_0x960a('0x3b')]);var _0x38f092={'where':_0x324eb8[_0x960a('0x36')]};return db[_0x960a('0x3c')][_0x960a('0x1e')](_0x38f092)[_0x960a('0x25')](function(_0x244d3d){_0xbe60d7[_0x960a('0x1e')]=_0x244d3d;if(_0x14ed81[_0x960a('0x2d')][_0x960a('0x3d')]){_0x324eb8[_0x960a('0x3e')]=[{'all':!![]}];}return db[_0x960a('0x3c')]['findAll'](_0x324eb8);})[_0x960a('0x25')](function(_0x25b746){_0xbe60d7['rows']=_0x25b746;return _0xbe60d7;})[_0x960a('0x25')](respondWithFilteredResult(_0x370cab,_0x324eb8))[_0x960a('0x3f')](handleError(_0x370cab,null));};exports[_0x960a('0x40')]=function(_0x2c9066,_0x53d56e){var _0x3ee630={'raw':!![],'where':{'id':_0x2c9066[_0x960a('0x41')]['id']}},_0x1bb1da={};_0x1bb1da[_0x960a('0x2c')]=_['keys'](db[_0x960a('0x3c')][_0x960a('0x29')]);_0x1bb1da['query']=_[_0x960a('0x2e')](_0x2c9066[_0x960a('0x2d')]);_0x1bb1da[_0x960a('0x2f')]=_[_0x960a('0x31')](_0x1bb1da[_0x960a('0x2c')],_0x1bb1da['query']);_0x3ee630[_0x960a('0x30')]=_['intersection'](_0x1bb1da['model'],qs[_0x960a('0x32')](_0x2c9066[_0x960a('0x2d')][_0x960a('0x32')]));_0x3ee630[_0x960a('0x30')]=_0x3ee630['attributes'][_0x960a('0x33')]?_0x3ee630[_0x960a('0x30')]:_0x1bb1da[_0x960a('0x2c')];if(_0x2c9066['query'][_0x960a('0x3d')]){_0x3ee630[_0x960a('0x3e')]=[{'all':!![]}];}_0x3ee630=_[_0x960a('0x38')]({},_0x3ee630,_0x2c9066[_0x960a('0x3b')]);return db[_0x960a('0x3c')][_0x960a('0x42')](_0x3ee630)[_0x960a('0x25')](handleEntityNotFound(_0x53d56e,null))['then'](respondWithResult(_0x53d56e,null))[_0x960a('0x3f')](handleError(_0x53d56e,null));};exports['create']=function(_0x361423,_0x480d07){return db[_0x960a('0x3c')][_0x960a('0x43')](_0x361423['body'],{})[_0x960a('0x25')](respondWithResult(_0x480d07,0xc9))[_0x960a('0x3f')](handleError(_0x480d07,null));};exports[_0x960a('0x24')]=function(_0x46c2c7,_0x2cf9c5){if(_0x46c2c7[_0x960a('0x44')]['id']){delete _0x46c2c7['body']['id'];}return db[_0x960a('0x3c')]['find']({'where':{'id':_0x46c2c7['params']['id']}})[_0x960a('0x25')](handleEntityNotFound(_0x2cf9c5,null))[_0x960a('0x25')](saveUpdates(_0x46c2c7[_0x960a('0x44')],null))[_0x960a('0x25')](respondWithResult(_0x2cf9c5,null))[_0x960a('0x3f')](handleError(_0x2cf9c5,null));};exports[_0x960a('0x45')]=function(_0x3e7b42,_0x5de99b){return db[_0x960a('0x3c')][_0x960a('0x42')]({'where':{'id':_0x3e7b42[_0x960a('0x41')]['id']}})[_0x960a('0x25')](handleEntityNotFound(_0x5de99b,null))['then'](removeEntity(_0x5de99b,null))[_0x960a('0x3f')](handleError(_0x5de99b,null));};
\ No newline at end of file
index b27860f..601c7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc076=['idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','int_servicenow_fields'];(function(_0x3e3425,_0xca815c){var _0xb22adc=function(_0x322894){while(--_0x322894){_0x3e3425['push'](_0x3e3425['shift']());}};_0xb22adc(++_0xca815c);}(_0xc076,0x120));var _0x6c07=function(_0x5cdf0c,_0x7b634d){_0x5cdf0c=_0x5cdf0c-0x0;var _0x58112e=_0xc076[_0x5cdf0c];return _0x58112e;};'use strict';var _=require(_0x6c07('0x0'));var util=require('util');var logger=require(_0x6c07('0x1'))(_0x6c07('0x2'));var moment=require(_0x6c07('0x3'));var BPromise=require(_0x6c07('0x4'));var rp=require(_0x6c07('0x5'));var fs=require('fs');var path=require(_0x6c07('0x6'));var rimraf=require(_0x6c07('0x7'));var config=require('../../config/environment');var attributes=require('./intServicenowField.attributes');module[_0x6c07('0x8')]=function(_0x59db78,_0x56c189){return _0x59db78[_0x6c07('0x9')]('ServicenowField',attributes,{'tableName':_0x6c07('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x6c07('0xb'),_0x6c07('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8806=['ServicenowField','int_servicenow_fields','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intServicenowField.attributes','define'];(function(_0x1855eb,_0x30861d){var _0x2fa479=function(_0x358c64){while(--_0x358c64){_0x1855eb['push'](_0x1855eb['shift']());}};_0x2fa479(++_0x30861d);}(_0x8806,0x163));var _0x6880=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x8806[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x6880('0x0'));var util=require('util');var logger=require(_0x6880('0x1'))(_0x6880('0x2'));var moment=require(_0x6880('0x3'));var BPromise=require(_0x6880('0x4'));var rp=require(_0x6880('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6880('0x6'));var attributes=require(_0x6880('0x7'));module['exports']=function(_0x4a5343,_0x128a31){return _0x4a5343[_0x6880('0x8')](_0x6880('0x9'),attributes,{'tableName':_0x6880('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x6880('0xb'),_0x6880('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 46f9b0b..304135e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x20c3d2,_0x14a00c){var _0x400dc3=function(_0x502f30){while(--_0x502f30){_0x20c3d2['push'](_0x20c3d2['shift']());}};_0x400dc3(++_0x14a00c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x14f457,_0x540565){var _0x51056d=function(_0x906c18){while(--_0x906c18){_0x14f457['push'](_0x14f457['shift']());}};_0x51056d(++_0x540565);}(_0xf4eb,0xec));var _0xbf4e=function(_0x300820,_0x3214f0){_0x300820=_0x300820-0x0;var _0xae9fa5=_0xf4eb[_0x300820];return _0xae9fa5;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index d1f89a2..d850302 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(_0x346a0c,_0x4e8ac7){var _0xac0195=function(_0x5054d0){while(--_0x5054d0){_0x346a0c['push'](_0x346a0c['shift']());}};_0xac0195(++_0x4e8ac7);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5225fa,_0xb63d7e){var _0xd1c89=function(_0x59d090){while(--_0x59d090){_0x5225fa['push'](_0x5225fa['shift']());}};_0xd1c89(++_0xb63d7e);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index d965144..6548936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x40bc90,_0x1baddd){var _0x417a55=function(_0x59a762){while(--_0x59a762){_0x40bc90['push'](_0x40bc90['shift']());}};_0x417a55(++_0x1baddd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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(_0x105f98,_0x4d97e0){var _0x519d7e=function(_0x36d970){while(--_0x36d970){_0x105f98['push'](_0x105f98['shift']());}};_0x519d7e(++_0x4d97e0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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 098dbb9..7395f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0410=['find','create','body','update','getConfigurations','findOne','SugarcrmConfiguration','rawAttributes','AccountId','Subjects','getSubjects','getDescriptions','channel','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_type','direction','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','format','get_module_fields','stringify','remove','includes','label','values','value','statusCode','test','Wrong\x20credentials','eml-format','fast-json-patch','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','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','map','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','catch','show','params','keys','SugarcrmAccount','includeAll'];(function(_0x25884c,_0x9089cf){var _0x17fa6b=function(_0x37836c){while(--_0x37836c){_0x25884c['push'](_0x25884c['shift']());}};_0x17fa6b(++_0x9089cf);}(_0x0410,0x198));var _0x0041=function(_0x9b7ba,_0x38b333){_0x9b7ba=_0x9b7ba-0x0;var _0x184dc1=_0x0410[_0x9b7ba];return _0x184dc1;};'use strict';var emlformat=require(_0x0041('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0041('0x1'));var rp=require(_0x0041('0x2'));var moment=require('moment');var BPromise=require(_0x0041('0x3'));var Mustache=require('mustache');var util=require(_0x0041('0x4'));var path=require(_0x0041('0x5'));var sox=require(_0x0041('0x6'));var csv=require(_0x0041('0x7'));var ejs=require(_0x0041('0x8'));var fs=require('fs');var fs_extra=require(_0x0041('0x9'));var _=require(_0x0041('0xa'));var squel=require(_0x0041('0xb'));var crypto=require(_0x0041('0xc'));var jsforce=require(_0x0041('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0041('0x7'));var querystring=require('querystring');var Papa=require(_0x0041('0xe'));var Redis=require('ioredis');var authService=require(_0x0041('0xf'));var qs=require(_0x0041('0x10'));var as=require(_0x0041('0x11'));var hardwareService=require(_0x0041('0x12'));var logger=require(_0x0041('0x13'))(_0x0041('0x14'));var utils=require(_0x0041('0x15'));var config=require(_0x0041('0x16'));var licenseUtil=require(_0x0041('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0041('0x18'));function respondWithStatusCode(_0x4297ca,_0x1926d4){_0x1926d4=_0x1926d4||0xcc;return function(_0x399122){if(_0x399122){return _0x4297ca[_0x0041('0x19')](_0x1926d4);}return _0x4297ca[_0x0041('0x1a')](_0x1926d4)[_0x0041('0x1b')]();};}function respondWithResult(_0x7522b0,_0x507f98){_0x507f98=_0x507f98||0xc8;return function(_0x569bcb){if(_0x569bcb){return _0x7522b0[_0x0041('0x1a')](_0x507f98)[_0x0041('0x1c')](_0x569bcb);}};}function respondWithFilteredResult(_0x30cce7,_0x164c33){return function(_0x302ba6){if(_0x302ba6){var _0x4f5ce2=typeof _0x164c33[_0x0041('0x1d')]===_0x0041('0x1e')&&typeof _0x164c33[_0x0041('0x1f')]===_0x0041('0x1e');var _0x3de3f8=_0x302ba6[_0x0041('0x20')];var _0x1bea67=_0x4f5ce2?0x0:_0x164c33[_0x0041('0x1d')];var _0x227534=_0x4f5ce2?_0x302ba6[_0x0041('0x20')]:_0x164c33['offset']+_0x164c33['limit'];var _0x144e21;if(_0x227534>=_0x3de3f8){_0x227534=_0x3de3f8;_0x144e21=0xc8;}else{_0x144e21=0xce;}_0x30cce7['status'](_0x144e21);return _0x30cce7[_0x0041('0x21')](_0x0041('0x22'),_0x1bea67+'-'+_0x227534+'/'+_0x3de3f8)['json'](_0x302ba6);}return null;};}function patchUpdates(_0x3dbd82){return function(_0x133919){try{jsonpatch[_0x0041('0x23')](_0x133919,_0x3dbd82,!![]);}catch(_0x565c41){return BPromise[_0x0041('0x24')](_0x565c41);}return _0x133919[_0x0041('0x25')]();};}function saveUpdates(_0x529fb0,_0x378c97){return function(_0x23208b){if(_0x23208b){return _0x23208b['update'](_0x529fb0)[_0x0041('0x26')](function(_0x1d2d4f){return _0x1d2d4f;});}return null;};}function removeEntity(_0x4c450c,_0x254790){return function(_0x3bdcc7){if(_0x3bdcc7){return _0x3bdcc7['destroy']()[_0x0041('0x26')](function(){_0x4c450c[_0x0041('0x1a')](0xcc)[_0x0041('0x1b')]();});}};}function handleEntityNotFound(_0x1749bc,_0x890e8c){return function(_0x371453){if(!_0x371453){_0x1749bc['sendStatus'](0x194);}return _0x371453;};}function handleError(_0x3ab042,_0x5f3e10){_0x5f3e10=_0x5f3e10||0x1f4;return function(_0x5d1073){logger[_0x0041('0x27')](_0x5d1073[_0x0041('0x28')]);if(_0x5d1073[_0x0041('0x29')]){delete _0x5d1073['name'];}_0x3ab042[_0x0041('0x1a')](_0x5f3e10)[_0x0041('0x2a')](_0x5d1073);};}exports['index']=function(_0xd51284,_0x51ef2f){var _0x4cad65={},_0x46e654={},_0x595a87={'count':0x0,'rows':[]};var _0xd374ac=_[_0x0041('0x2b')](db['SugarcrmAccount']['rawAttributes'],function(_0xd02cd7){return{'name':_0xd02cd7[_0x0041('0x2c')],'type':_0xd02cd7[_0x0041('0x2d')][_0x0041('0x2e')]};});_0x46e654[_0x0041('0x2f')]=_[_0x0041('0x2b')](_0xd374ac,'name');_0x46e654[_0x0041('0x30')]=_['keys'](_0xd51284[_0x0041('0x30')]);_0x46e654[_0x0041('0x31')]=_['intersection'](_0x46e654[_0x0041('0x2f')],_0x46e654[_0x0041('0x30')]);_0x4cad65[_0x0041('0x32')]=_[_0x0041('0x33')](_0x46e654[_0x0041('0x2f')],qs[_0x0041('0x34')](_0xd51284[_0x0041('0x30')][_0x0041('0x34')]));_0x4cad65[_0x0041('0x32')]=_0x4cad65['attributes'][_0x0041('0x35')]?_0x4cad65['attributes']:_0x46e654[_0x0041('0x2f')];if(!_0xd51284[_0x0041('0x30')][_0x0041('0x36')](_0x0041('0x37'))){_0x4cad65[_0x0041('0x1f')]=qs[_0x0041('0x1f')](_0xd51284['query'][_0x0041('0x1f')]);_0x4cad65[_0x0041('0x1d')]=qs[_0x0041('0x1d')](_0xd51284[_0x0041('0x30')][_0x0041('0x1d')]);}_0x4cad65[_0x0041('0x38')]=qs[_0x0041('0x39')](_0xd51284[_0x0041('0x30')]['sort']);_0x4cad65['where']=qs['filters'](_[_0x0041('0x3a')](_0xd51284['query'],_0x46e654[_0x0041('0x31')]),_0xd374ac);if(_0xd51284['query'][_0x0041('0x3b')]){_0x4cad65['where']=_[_0x0041('0x3c')](_0x4cad65[_0x0041('0x3d')],{'$or':_[_0x0041('0x2b')](_0xd374ac,function(_0x10124b){if(_0x10124b[_0x0041('0x2d')]!==_0x0041('0x3e')){var _0x244c8b={};_0x244c8b[_0x10124b[_0x0041('0x29')]]={'$like':'%'+_0xd51284[_0x0041('0x30')][_0x0041('0x3b')]+'%'};return _0x244c8b;}})});}_0x4cad65=_[_0x0041('0x3c')]({},_0x4cad65,_0xd51284[_0x0041('0x3f')]);var _0x20b1a5={'where':_0x4cad65[_0x0041('0x3d')]};return db['SugarcrmAccount'][_0x0041('0x20')](_0x20b1a5)[_0x0041('0x26')](function(_0x33e5bd){_0x595a87[_0x0041('0x20')]=_0x33e5bd;if(_0xd51284[_0x0041('0x30')]['includeAll']){_0x4cad65[_0x0041('0x40')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0x0041('0x41')](_0x4cad65);})[_0x0041('0x26')](function(_0x403977){_0x595a87['rows']=_0x403977;return _0x595a87;})[_0x0041('0x26')](respondWithFilteredResult(_0x51ef2f,_0x4cad65))[_0x0041('0x42')](handleError(_0x51ef2f,null));};exports[_0x0041('0x43')]=function(_0x77ba5c,_0x57d36f){var _0xcbe7a6={'raw':![],'where':{'id':_0x77ba5c[_0x0041('0x44')]['id']}},_0x316bad={};_0x316bad[_0x0041('0x2f')]=_[_0x0041('0x45')](db[_0x0041('0x46')]['rawAttributes']);_0x316bad[_0x0041('0x30')]=_[_0x0041('0x45')](_0x77ba5c[_0x0041('0x30')]);_0x316bad['filters']=_[_0x0041('0x33')](_0x316bad['model'],_0x316bad[_0x0041('0x30')]);_0xcbe7a6['attributes']=_['intersection'](_0x316bad[_0x0041('0x2f')],qs['fields'](_0x77ba5c[_0x0041('0x30')][_0x0041('0x34')]));_0xcbe7a6['attributes']=_0xcbe7a6[_0x0041('0x32')][_0x0041('0x35')]?_0xcbe7a6[_0x0041('0x32')]:_0x316bad[_0x0041('0x2f')];if(_0x77ba5c[_0x0041('0x30')][_0x0041('0x47')]){_0xcbe7a6[_0x0041('0x40')]=[{'all':!![]}];}_0xcbe7a6=_[_0x0041('0x3c')]({},_0xcbe7a6,_0x77ba5c[_0x0041('0x3f')]);return db[_0x0041('0x46')][_0x0041('0x48')](_0xcbe7a6)['then'](handleEntityNotFound(_0x57d36f,null))[_0x0041('0x26')](respondWithResult(_0x57d36f,null))[_0x0041('0x42')](handleError(_0x57d36f,null));};exports[_0x0041('0x49')]=function(_0x2f0a37,_0x11ea86){return db['SugarcrmAccount'][_0x0041('0x49')](_0x2f0a37[_0x0041('0x4a')],{})[_0x0041('0x26')](respondWithResult(_0x11ea86,0xc9))['catch'](handleError(_0x11ea86,null));};exports[_0x0041('0x4b')]=function(_0x48332f,_0x4f8aa0){if(_0x48332f['body']['id']){delete _0x48332f[_0x0041('0x4a')]['id'];}return db[_0x0041('0x46')][_0x0041('0x48')]({'where':{'id':_0x48332f['params']['id']}})[_0x0041('0x26')](handleEntityNotFound(_0x4f8aa0,null))[_0x0041('0x26')](saveUpdates(_0x48332f[_0x0041('0x4a')],null))[_0x0041('0x26')](respondWithResult(_0x4f8aa0,null))[_0x0041('0x42')](handleError(_0x4f8aa0,null));};exports['destroy']=function(_0x15f5d0,_0x511bd5){return db[_0x0041('0x46')][_0x0041('0x48')]({'where':{'id':_0x15f5d0['params']['id']}})[_0x0041('0x26')](handleEntityNotFound(_0x511bd5,null))[_0x0041('0x26')](removeEntity(_0x511bd5,null))[_0x0041('0x42')](handleError(_0x511bd5,null));};exports[_0x0041('0x4c')]=function(_0x450565,_0xf42c,_0x2cb41d){var _0x5a00d5={};var _0x3edabe={};var _0x4e67c5;var _0x665eb0;return db[_0x0041('0x46')][_0x0041('0x4d')]({'where':{'id':_0x450565[_0x0041('0x44')]['id']}})[_0x0041('0x26')](handleEntityNotFound(_0xf42c,null))[_0x0041('0x26')](function(_0x575fd3){if(_0x575fd3){_0x4e67c5=_0x575fd3;_0x3edabe[_0x0041('0x2f')]=_[_0x0041('0x45')](db[_0x0041('0x4e')][_0x0041('0x4f')]);_0x3edabe[_0x0041('0x30')]=_[_0x0041('0x45')](_0x450565[_0x0041('0x30')]);_0x3edabe[_0x0041('0x31')]=_[_0x0041('0x33')](_0x3edabe['model'],_0x3edabe[_0x0041('0x30')]);_0x5a00d5['attributes']=_['intersection'](_0x3edabe['model'],qs[_0x0041('0x34')](_0x450565['query']['fields']));_0x5a00d5['attributes']=_0x5a00d5['attributes'][_0x0041('0x35')]?_0x5a00d5[_0x0041('0x32')]:_0x3edabe['model'];_0x5a00d5[_0x0041('0x38')]=qs['sort'](_0x450565[_0x0041('0x30')][_0x0041('0x39')]);_0x5a00d5[_0x0041('0x3d')]=qs[_0x0041('0x31')](_[_0x0041('0x3a')](_0x450565[_0x0041('0x30')],_0x3edabe[_0x0041('0x31')]));if(_0x450565[_0x0041('0x30')]['filter']){_0x5a00d5['where']=_[_0x0041('0x3c')](_0x5a00d5[_0x0041('0x3d')],{'$or':_[_0x0041('0x2b')](_0x5a00d5[_0x0041('0x32')],function(_0x1dacd4){var _0x12fd83={};_0x12fd83[_0x1dacd4]={'$like':'%'+_0x450565[_0x0041('0x30')][_0x0041('0x3b')]+'%'};return _0x12fd83;})});}_0x5a00d5=_[_0x0041('0x3c')]({},_0x5a00d5,_0x450565['options']);return _0x4e67c5['getConfigurations'](_0x5a00d5);}})[_0x0041('0x26')](function(_0x59a7ce){if(_0x59a7ce){_0x665eb0=_0x59a7ce[_0x0041('0x35')];if(!_0x450565[_0x0041('0x30')][_0x0041('0x36')](_0x0041('0x37'))){_0x5a00d5[_0x0041('0x1f')]=qs[_0x0041('0x1f')](_0x450565[_0x0041('0x30')][_0x0041('0x1f')]);_0x5a00d5[_0x0041('0x1d')]=qs[_0x0041('0x1d')](_0x450565[_0x0041('0x30')][_0x0041('0x1d')]);}return _0x4e67c5[_0x0041('0x4c')](_0x5a00d5);}})['then'](function(_0xd1bb6d){if(_0xd1bb6d){return _0xd1bb6d?{'count':_0x665eb0,'rows':_0xd1bb6d}:null;}})[_0x0041('0x26')](respondWithResult(_0xf42c,null))[_0x0041('0x42')](handleError(_0xf42c,null));};exports['addConfiguration']=function(_0x28640d,_0x21a352,_0x1dfb28){if(_0x28640d[_0x0041('0x4a')]['id']){delete _0x28640d[_0x0041('0x4a')]['id'];}return db[_0x0041('0x46')][_0x0041('0x4d')]({'where':{'id':_0x28640d[_0x0041('0x44')]['id']}})[_0x0041('0x26')](handleEntityNotFound(_0x21a352,null))['then'](function(_0x726cfa){if(_0x726cfa){_0x28640d[_0x0041('0x4a')][_0x0041('0x50')]=_0x726cfa['id'];_0x28640d[_0x0041('0x4a')][_0x0041('0x51')]=integrations[_0x0041('0x52')](_0x28640d[_0x0041('0x4a')]['channel'],_0x28640d[_0x0041('0x4a')][_0x0041('0x2d')]);_0x28640d[_0x0041('0x4a')]['Descriptions']=integrations[_0x0041('0x53')](_0x28640d[_0x0041('0x4a')][_0x0041('0x54')],_0x28640d[_0x0041('0x4a')][_0x0041('0x2d')]);return db[_0x0041('0x4e')][_0x0041('0x49')](_0x28640d[_0x0041('0x4a')],{'include':[{'model':db[_0x0041('0x55')],'as':'Subjects'},{'model':db[_0x0041('0x55')],'as':_0x0041('0x56')}]});}return null;})[_0x0041('0x26')](respondWithResult(_0x21a352,null))[_0x0041('0x42')](handleError(_0x21a352,null));};exports[_0x0041('0x57')]=function(_0x32acc6,_0x33aa3d,_0x34a337){var _0x43eace='';var _0x3bb208=['id',_0x0041('0x29'),_0x0041('0x58'),_0x0041('0x59'),_0x0041('0x5a'),_0x0041('0x5b'),_0x0041('0x5c'),_0x0041('0x5d'),'parent_id',_0x0041('0x5e'),'parent_name',_0x0041('0x5f')];return db[_0x0041('0x46')][_0x0041('0x4d')]({'where':{'id':_0x32acc6[_0x0041('0x44')]['id']},'attributes':['id',_0x0041('0x60'),_0x0041('0x61'),'remoteUri']})[_0x0041('0x26')](handleEntityNotFound(_0x33aa3d,null))[_0x0041('0x26')](function(_0x1ad145){if(_0x1ad145){_0x43eace=_0x1ad145[_0x0041('0x62')];var _0x165041=_0x43eace[_0x0041('0x63')](-0x1);if(_0x165041==='/'){_0x43eace=_0x43eace[_0x0041('0x64')](0x0,_0x43eace[_0x0041('0x65')](_0x165041));}return rp({'method':_0x0041('0x66'),'uri':util['format'](_0x0041('0x67'),_0x43eace,_0x0041('0x68')),'json':!![],'form':{'method':'login','input_type':_0x0041('0x69'),'response_type':_0x0041('0x69'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1ad145[_0x0041('0x60')],'password':_0x1ad145['password'],'encryption':_0x0041('0x6a')},'application':_0x0041('0x6b')})}});}})[_0x0041('0x26')](function(_0xbc67c6){if(_0xbc67c6&&_0xbc67c6[_0x0041('0x29')]!=='Invalid\x20Login'&&_0xbc67c6['name']!==_0x0041('0x6c')){return rp({'method':'POST','uri':util[_0x0041('0x6d')](_0x0041('0x67'),_0x43eace,_0x0041('0x68')),'json':!![],'form':{'method':_0x0041('0x6e'),'input_type':'JSON','response_type':_0x0041('0x69'),'rest_data':JSON[_0x0041('0x6f')]({'session':_0xbc67c6['id'],'module_name':'Calls'})}})['then'](function(_0x59e7fd){if(_0x59e7fd){var _0x547176=_['values'](_0x59e7fd['module_fields']);_[_0x0041('0x70')](_0x547176,function(_0x1563dd){return _0x3bb208[_0x0041('0x71')](_0x1563dd['name']);});return{'count':_0x547176[_0x0041('0x35')],'rows':_[_0x0041('0x2b')](_0x547176,function(_0x3bf972){return{'id':_0x3bf972[_0x0041('0x29')],'name':_0x3bf972[_0x0041('0x72')],'custom':_['endsWith'](_0x3bf972['name'],'_c')?!![]:![],'options':_0x3bf972['options']?_[_0x0041('0x2b')](_[_0x0041('0x73')](_0x3bf972['options']),function(_0x17d269){return{'name':_0x17d269[_0x0041('0x74')],'value':_0x17d269[_0x0041('0x29')]};}):[]};})};}})[_0x0041('0x26')](respondWithResult(_0x33aa3d,null))[_0x0041('0x42')](function(_0x2e5210){var _0x494726=_0x32acc6['query']['test']?0x1f4:_0x2e5210[_0x0041('0x75')]||0x1f4;logger[_0x0041('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x0041('0x57'),_0x494726,JSON[_0x0041('0x6f')](_0x2e5210));delete _0x2e5210[_0x0041('0x29')];if(_0x494726===0x191){_0x494726=0x190;}_0x33aa3d[_0x0041('0x1a')](_0x494726)[_0x0041('0x2a')](_0x32acc6[_0x0041('0x30')][_0x0041('0x76')]?{'message':_0x0041('0x77'),'statusCode':_0x2e5210[_0x0041('0x75')]}:_0x2e5210);});}else{var _0x122c01=0x1f4;_0x33aa3d[_0x0041('0x1a')](_0x122c01)[_0x0041('0x2a')]({'message':_0x0041('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x151c=['squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','catch','params','rawAttributes','keys','length','includeAll','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','SugarcrmField','getFields','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','substring','POST','format','/service/v4_1/rest.php','JSON','stringify','username','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','module_fields','remove','includes','label','endsWith','value','test','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra'];(function(_0x2f763c,_0x325792){var _0x58dc47=function(_0x2a1b66){while(--_0x2a1b66){_0x2f763c['push'](_0x2f763c['shift']());}};_0x58dc47(++_0x325792);}(_0x151c,0x6e));var _0xc151=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x151c[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc151('0x0'));var zipdir=require(_0xc151('0x1'));var jsonpatch=require(_0xc151('0x2'));var rp=require('request-promise');var moment=require(_0xc151('0x3'));var BPromise=require(_0xc151('0x4'));var Mustache=require(_0xc151('0x5'));var util=require('util');var path=require('path');var sox=require(_0xc151('0x6'));var csv=require(_0xc151('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc151('0x8'));var _=require('lodash');var squel=require(_0xc151('0x9'));var crypto=require(_0xc151('0xa'));var jsforce=require(_0xc151('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc151('0xc'));var Redis=require(_0xc151('0xd'));var authService=require(_0xc151('0xe'));var qs=require(_0xc151('0xf'));var as=require(_0xc151('0x10'));var hardwareService=require(_0xc151('0x11'));var logger=require('../../config/logger')(_0xc151('0x12'));var utils=require(_0xc151('0x13'));var config=require(_0xc151('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc151('0x15'))['db'];var integrations=require(_0xc151('0x16'));function respondWithStatusCode(_0x1bc3e6,_0x47fddf){_0x47fddf=_0x47fddf||0xcc;return function(_0x540a5d){if(_0x540a5d){return _0x1bc3e6[_0xc151('0x17')](_0x47fddf);}return _0x1bc3e6[_0xc151('0x18')](_0x47fddf)[_0xc151('0x19')]();};}function respondWithResult(_0x275260,_0x59f9ea){_0x59f9ea=_0x59f9ea||0xc8;return function(_0x4bf5b5){if(_0x4bf5b5){return _0x275260[_0xc151('0x18')](_0x59f9ea)[_0xc151('0x1a')](_0x4bf5b5);}};}function respondWithFilteredResult(_0x128334,_0xda4de5){return function(_0x462734){if(_0x462734){var _0x4e3b03=typeof _0xda4de5[_0xc151('0x1b')]===_0xc151('0x1c')&&typeof _0xda4de5[_0xc151('0x1d')]===_0xc151('0x1c');var _0x186756=_0x462734[_0xc151('0x1e')];var _0x14111a=_0x4e3b03?0x0:_0xda4de5[_0xc151('0x1b')];var _0x38ade4=_0x4e3b03?_0x462734[_0xc151('0x1e')]:_0xda4de5[_0xc151('0x1b')]+_0xda4de5[_0xc151('0x1d')];var _0x530b20;if(_0x38ade4>=_0x186756){_0x38ade4=_0x186756;_0x530b20=0xc8;}else{_0x530b20=0xce;}_0x128334[_0xc151('0x18')](_0x530b20);return _0x128334[_0xc151('0x1f')](_0xc151('0x20'),_0x14111a+'-'+_0x38ade4+'/'+_0x186756)['json'](_0x462734);}return null;};}function patchUpdates(_0x4a3916){return function(_0x35e937){try{jsonpatch[_0xc151('0x21')](_0x35e937,_0x4a3916,!![]);}catch(_0x10f337){return BPromise['reject'](_0x10f337);}return _0x35e937[_0xc151('0x22')]();};}function saveUpdates(_0x511649,_0x4b07bf){return function(_0x34cf87){if(_0x34cf87){return _0x34cf87[_0xc151('0x23')](_0x511649)[_0xc151('0x24')](function(_0x5dd63f){return _0x5dd63f;});}return null;};}function removeEntity(_0x5d9109,_0x397e2c){return function(_0x560e9a){if(_0x560e9a){return _0x560e9a[_0xc151('0x25')]()[_0xc151('0x24')](function(){_0x5d9109['status'](0xcc)[_0xc151('0x19')]();});}};}function handleEntityNotFound(_0x1d773e,_0x1e1039){return function(_0x463304){if(!_0x463304){_0x1d773e[_0xc151('0x17')](0x194);}return _0x463304;};}function handleError(_0x3121d6,_0x353ac4){_0x353ac4=_0x353ac4||0x1f4;return function(_0x3572f2){logger[_0xc151('0x26')](_0x3572f2[_0xc151('0x27')]);if(_0x3572f2[_0xc151('0x28')]){delete _0x3572f2[_0xc151('0x28')];}_0x3121d6['status'](_0x353ac4)[_0xc151('0x29')](_0x3572f2);};}exports[_0xc151('0x2a')]=function(_0x4433c4,_0x4295c6){var _0x51bfda={},_0x226843={},_0x5f0ed5={'count':0x0,'rows':[]};var _0x429e07=_[_0xc151('0x2b')](db[_0xc151('0x2c')]['rawAttributes'],function(_0x2e28cf){return{'name':_0x2e28cf[_0xc151('0x2d')],'type':_0x2e28cf[_0xc151('0x2e')][_0xc151('0x2f')]};});_0x226843[_0xc151('0x30')]=_['map'](_0x429e07,'name');_0x226843['query']=_['keys'](_0x4433c4[_0xc151('0x31')]);_0x226843[_0xc151('0x32')]=_['intersection'](_0x226843[_0xc151('0x30')],_0x226843[_0xc151('0x31')]);_0x51bfda['attributes']=_[_0xc151('0x33')](_0x226843[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4433c4[_0xc151('0x31')][_0xc151('0x34')]));_0x51bfda[_0xc151('0x35')]=_0x51bfda[_0xc151('0x35')]['length']?_0x51bfda[_0xc151('0x35')]:_0x226843[_0xc151('0x30')];if(!_0x4433c4[_0xc151('0x31')][_0xc151('0x36')](_0xc151('0x37'))){_0x51bfda['limit']=qs[_0xc151('0x1d')](_0x4433c4[_0xc151('0x31')][_0xc151('0x1d')]);_0x51bfda[_0xc151('0x1b')]=qs['offset'](_0x4433c4[_0xc151('0x31')][_0xc151('0x1b')]);}_0x51bfda[_0xc151('0x38')]=qs[_0xc151('0x39')](_0x4433c4[_0xc151('0x31')][_0xc151('0x39')]);_0x51bfda[_0xc151('0x3a')]=qs[_0xc151('0x32')](_[_0xc151('0x3b')](_0x4433c4['query'],_0x226843[_0xc151('0x32')]),_0x429e07);if(_0x4433c4[_0xc151('0x31')][_0xc151('0x3c')]){_0x51bfda[_0xc151('0x3a')]=_[_0xc151('0x3d')](_0x51bfda['where'],{'$or':_['map'](_0x429e07,function(_0xe9487d){if(_0xe9487d[_0xc151('0x2e')]!=='VIRTUAL'){var _0x2aa217={};_0x2aa217[_0xe9487d[_0xc151('0x28')]]={'$like':'%'+_0x4433c4[_0xc151('0x31')][_0xc151('0x3c')]+'%'};return _0x2aa217;}})});}_0x51bfda=_[_0xc151('0x3d')]({},_0x51bfda,_0x4433c4[_0xc151('0x3e')]);var _0x843b1b={'where':_0x51bfda[_0xc151('0x3a')]};return db[_0xc151('0x2c')]['count'](_0x843b1b)[_0xc151('0x24')](function(_0xf15263){_0x5f0ed5[_0xc151('0x1e')]=_0xf15263;if(_0x4433c4[_0xc151('0x31')]['includeAll']){_0x51bfda[_0xc151('0x3f')]=[{'all':!![]}];}return db[_0xc151('0x2c')][_0xc151('0x40')](_0x51bfda);})[_0xc151('0x24')](function(_0x18e109){_0x5f0ed5['rows']=_0x18e109;return _0x5f0ed5;})['then'](respondWithFilteredResult(_0x4295c6,_0x51bfda))[_0xc151('0x41')](handleError(_0x4295c6,null));};exports['show']=function(_0x4b6c2b,_0x50e89c){var _0x2f961c={'raw':![],'where':{'id':_0x4b6c2b[_0xc151('0x42')]['id']}},_0x3e915e={};_0x3e915e[_0xc151('0x30')]=_['keys'](db[_0xc151('0x2c')][_0xc151('0x43')]);_0x3e915e[_0xc151('0x31')]=_[_0xc151('0x44')](_0x4b6c2b[_0xc151('0x31')]);_0x3e915e[_0xc151('0x32')]=_[_0xc151('0x33')](_0x3e915e['model'],_0x3e915e['query']);_0x2f961c[_0xc151('0x35')]=_['intersection'](_0x3e915e[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4b6c2b['query'][_0xc151('0x34')]));_0x2f961c[_0xc151('0x35')]=_0x2f961c['attributes'][_0xc151('0x45')]?_0x2f961c[_0xc151('0x35')]:_0x3e915e[_0xc151('0x30')];if(_0x4b6c2b['query'][_0xc151('0x46')]){_0x2f961c[_0xc151('0x3f')]=[{'all':!![]}];}_0x2f961c=_[_0xc151('0x3d')]({},_0x2f961c,_0x4b6c2b[_0xc151('0x3e')]);return db[_0xc151('0x2c')][_0xc151('0x47')](_0x2f961c)[_0xc151('0x24')](handleEntityNotFound(_0x50e89c,null))[_0xc151('0x24')](respondWithResult(_0x50e89c,null))['catch'](handleError(_0x50e89c,null));};exports[_0xc151('0x48')]=function(_0x4ef5c6,_0x4fea63){return db[_0xc151('0x2c')][_0xc151('0x48')](_0x4ef5c6[_0xc151('0x49')],{})[_0xc151('0x24')](respondWithResult(_0x4fea63,0xc9))[_0xc151('0x41')](handleError(_0x4fea63,null));};exports[_0xc151('0x23')]=function(_0x519602,_0x30dbae){if(_0x519602[_0xc151('0x49')]['id']){delete _0x519602[_0xc151('0x49')]['id'];}return db[_0xc151('0x2c')][_0xc151('0x47')]({'where':{'id':_0x519602[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x30dbae,null))[_0xc151('0x24')](saveUpdates(_0x519602['body'],null))[_0xc151('0x24')](respondWithResult(_0x30dbae,null))[_0xc151('0x41')](handleError(_0x30dbae,null));};exports[_0xc151('0x25')]=function(_0x444c8c,_0x2b69b9){return db[_0xc151('0x2c')][_0xc151('0x47')]({'where':{'id':_0x444c8c[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x2b69b9,null))[_0xc151('0x24')](removeEntity(_0x2b69b9,null))[_0xc151('0x41')](handleError(_0x2b69b9,null));};exports[_0xc151('0x4a')]=function(_0x4e2072,_0x166488,_0x9f23f7){var _0xa1a956={};var _0x3156eb={};var _0x2bb49e;var _0x37a681;return db['SugarcrmAccount'][_0xc151('0x4b')]({'where':{'id':_0x4e2072[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x166488,null))[_0xc151('0x24')](function(_0x1a2e63){if(_0x1a2e63){_0x2bb49e=_0x1a2e63;_0x3156eb[_0xc151('0x30')]=_['keys'](db[_0xc151('0x4c')][_0xc151('0x43')]);_0x3156eb[_0xc151('0x31')]=_['keys'](_0x4e2072[_0xc151('0x31')]);_0x3156eb[_0xc151('0x32')]=_['intersection'](_0x3156eb['model'],_0x3156eb[_0xc151('0x31')]);_0xa1a956[_0xc151('0x35')]=_['intersection'](_0x3156eb[_0xc151('0x30')],qs[_0xc151('0x34')](_0x4e2072[_0xc151('0x31')][_0xc151('0x34')]));_0xa1a956[_0xc151('0x35')]=_0xa1a956['attributes']['length']?_0xa1a956[_0xc151('0x35')]:_0x3156eb['model'];_0xa1a956[_0xc151('0x38')]=qs['sort'](_0x4e2072['query'][_0xc151('0x39')]);_0xa1a956[_0xc151('0x3a')]=qs[_0xc151('0x32')](_['pick'](_0x4e2072[_0xc151('0x31')],_0x3156eb[_0xc151('0x32')]));if(_0x4e2072['query'][_0xc151('0x3c')]){_0xa1a956['where']=_[_0xc151('0x3d')](_0xa1a956[_0xc151('0x3a')],{'$or':_['map'](_0xa1a956[_0xc151('0x35')],function(_0x4649cc){var _0x5760b9={};_0x5760b9[_0x4649cc]={'$like':'%'+_0x4e2072[_0xc151('0x31')]['filter']+'%'};return _0x5760b9;})});}_0xa1a956=_[_0xc151('0x3d')]({},_0xa1a956,_0x4e2072[_0xc151('0x3e')]);return _0x2bb49e['getConfigurations'](_0xa1a956);}})[_0xc151('0x24')](function(_0x3486eb){if(_0x3486eb){_0x37a681=_0x3486eb['length'];if(!_0x4e2072[_0xc151('0x31')][_0xc151('0x36')](_0xc151('0x37'))){_0xa1a956[_0xc151('0x1d')]=qs[_0xc151('0x1d')](_0x4e2072[_0xc151('0x31')]['limit']);_0xa1a956[_0xc151('0x1b')]=qs[_0xc151('0x1b')](_0x4e2072['query'][_0xc151('0x1b')]);}return _0x2bb49e[_0xc151('0x4a')](_0xa1a956);}})[_0xc151('0x24')](function(_0x55f05c){if(_0x55f05c){return _0x55f05c?{'count':_0x37a681,'rows':_0x55f05c}:null;}})[_0xc151('0x24')](respondWithResult(_0x166488,null))[_0xc151('0x41')](handleError(_0x166488,null));};exports[_0xc151('0x4d')]=function(_0x11319c,_0x4a37d7,_0x2ec995){if(_0x11319c[_0xc151('0x49')]['id']){delete _0x11319c[_0xc151('0x49')]['id'];}return db[_0xc151('0x2c')][_0xc151('0x4b')]({'where':{'id':_0x11319c[_0xc151('0x42')]['id']}})[_0xc151('0x24')](handleEntityNotFound(_0x4a37d7,null))[_0xc151('0x24')](function(_0x2fc3bd){if(_0x2fc3bd){_0x11319c[_0xc151('0x49')][_0xc151('0x4e')]=_0x2fc3bd['id'];_0x11319c[_0xc151('0x49')]['Subjects']=integrations[_0xc151('0x4f')](_0x11319c['body'][_0xc151('0x50')],_0x11319c['body']['type']);_0x11319c[_0xc151('0x49')][_0xc151('0x51')]=integrations[_0xc151('0x52')](_0x11319c[_0xc151('0x49')]['channel'],_0x11319c[_0xc151('0x49')][_0xc151('0x2e')]);return db[_0xc151('0x4c')][_0xc151('0x48')](_0x11319c[_0xc151('0x49')],{'include':[{'model':db['SugarcrmField'],'as':_0xc151('0x53')},{'model':db[_0xc151('0x54')],'as':_0xc151('0x51')}]});}return null;})['then'](respondWithResult(_0x4a37d7,null))[_0xc151('0x41')](handleError(_0x4a37d7,null));};exports[_0xc151('0x55')]=function(_0x18250c,_0xae9ae5,_0x4d6b82){var _0x49f1dc='';var _0x21fdf6=['id',_0xc151('0x28'),'assigned_user_id',_0xc151('0x56'),'description',_0xc151('0x57'),_0xc151('0x58'),_0xc151('0x59'),_0xc151('0x5a'),_0xc151('0x5b'),_0xc151('0x5c'),_0xc151('0x5d')];return db[_0xc151('0x2c')][_0xc151('0x4b')]({'where':{'id':_0x18250c['params']['id']},'attributes':['id','username',_0xc151('0x5e'),_0xc151('0x5f')]})['then'](handleEntityNotFound(_0xae9ae5,null))[_0xc151('0x24')](function(_0x247073){if(_0x247073){_0x49f1dc=_0x247073[_0xc151('0x5f')];var _0x548317=_0x49f1dc[_0xc151('0x60')](-0x1);if(_0x548317==='/'){_0x49f1dc=_0x49f1dc[_0xc151('0x61')](0x0,_0x49f1dc['lastIndexOf'](_0x548317));}return rp({'method':_0xc151('0x62'),'uri':util[_0xc151('0x63')]('%s%s',_0x49f1dc,_0xc151('0x64')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0xc151('0x65'),'rest_data':JSON[_0xc151('0x66')]({'user_auth':{'user_name':_0x247073[_0xc151('0x67')],'password':_0x247073[_0xc151('0x5e')],'encryption':'PLAIN'},'application':_0xc151('0x68')})}});}})[_0xc151('0x24')](function(_0x242a9d){if(_0x242a9d&&_0x242a9d[_0xc151('0x28')]!==_0xc151('0x69')&&_0x242a9d[_0xc151('0x28')]!==_0xc151('0x6a')){return rp({'method':_0xc151('0x62'),'uri':util[_0xc151('0x63')]('%s%s',_0x49f1dc,_0xc151('0x64')),'json':!![],'form':{'method':_0xc151('0x6b'),'input_type':_0xc151('0x65'),'response_type':_0xc151('0x65'),'rest_data':JSON[_0xc151('0x66')]({'session':_0x242a9d['id'],'module_name':_0xc151('0x6c')})}})[_0xc151('0x24')](function(_0x49703c){if(_0x49703c){var _0x113451=_[_0xc151('0x6d')](_0x49703c[_0xc151('0x6e')]);_[_0xc151('0x6f')](_0x113451,function(_0x572419){return _0x21fdf6[_0xc151('0x70')](_0x572419['name']);});return{'count':_0x113451[_0xc151('0x45')],'rows':_['map'](_0x113451,function(_0x56a75e){return{'id':_0x56a75e[_0xc151('0x28')],'name':_0x56a75e[_0xc151('0x71')],'custom':_[_0xc151('0x72')](_0x56a75e[_0xc151('0x28')],'_c')?!![]:![],'options':_0x56a75e['options']?_[_0xc151('0x2b')](_[_0xc151('0x6d')](_0x56a75e['options']),function(_0x4f237f){return{'name':_0x4f237f[_0xc151('0x73')],'value':_0x4f237f[_0xc151('0x28')]};}):[]};})};}})[_0xc151('0x24')](respondWithResult(_0xae9ae5,null))['catch'](function(_0x4ef3d4){var _0x5dfdeb=_0x18250c[_0xc151('0x31')][_0xc151('0x74')]?0x1f4:_0x4ef3d4['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5dfdeb,JSON[_0xc151('0x66')](_0x4ef3d4));delete _0x4ef3d4['name'];if(_0x5dfdeb===0x191){_0x5dfdeb=0x190;}_0xae9ae5[_0xc151('0x18')](_0x5dfdeb)[_0xc151('0x29')](_0x18250c['query']['test']?{'message':_0xc151('0x75'),'statusCode':_0x4ef3d4[_0xc151('0x76')]}:_0x4ef3d4);});}else{var _0x412edb=0x1f4;_0xae9ae5[_0xc151('0x18')](_0x412edb)['send']({'message':_0xc151('0x75'),'statusCode':0x190});}});};
\ No newline at end of file
index ef99515..0e8037d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc2d=['request-promise','path','rimraf','../../config/environment','exports','int_sugarcrm_accounts','util','api','moment','bluebird'];(function(_0x98768f,_0x224d5a){var _0x2ea6da=function(_0xfd2d9d){while(--_0xfd2d9d){_0x98768f['push'](_0x98768f['shift']());}};_0x2ea6da(++_0x224d5a);}(_0xdc2d,0x74));var _0xddc2=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xdc2d[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require(_0xddc2('0x0'));var logger=require('../../config/logger')(_0xddc2('0x1'));var moment=require(_0xddc2('0x2'));var BPromise=require(_0xddc2('0x3'));var rp=require(_0xddc2('0x4'));var fs=require('fs');var path=require(_0xddc2('0x5'));var rimraf=require(_0xddc2('0x6'));var config=require(_0xddc2('0x7'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xddc2('0x8')]=function(_0x18d3ba,_0x568eee){return _0x18d3ba['define']('SugarcrmAccount',attributes,{'tableName':_0xddc2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2032=['request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','bluebird'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2032,0xd9));var _0x2203=function(_0x490651,_0x1d3dc7){_0x490651=_0x490651-0x0;var _0x1178d6=_0x2032[_0x490651];return _0x1178d6;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));var integrations=require(_0x2203('0x8'));module[_0x2203('0x9')]=function(_0x13367a,_0x2e0f63){return _0x13367a[_0x2203('0xa')](_0x2203('0xb'),attributes,{'tableName':_0x2203('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 521518e..c2ef610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34c5=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','findAll','options','raw','where','attributes','include','model','map','GetSugarcrmAccount','SugarcrmAccount','find','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x34c5,0xa9));var _0x534c=function(_0x1e45ad,_0x3ed5fa){_0x1e45ad=_0x1e45ad-0x0;var _0x6b6a23=_0x34c5[_0x1e45ad];return _0x6b6a23;};'use strict';var _=require(_0x534c('0x0'));var util=require(_0x534c('0x1'));var moment=require(_0x534c('0x2'));var BPromise=require(_0x534c('0x3'));var rs=require(_0x534c('0x4'));var fs=require('fs');var Redis=require(_0x534c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x534c('0x6'))('rpc');var config=require(_0x534c('0x7'));var jayson=require(_0x534c('0x8'));var client=jayson[_0x534c('0x9')][_0x534c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x356fef,_0x43c898,_0x45725d){return new BPromise(function(_0x3f7229,_0x10d2ad){return client[_0x534c('0xb')](_0x356fef,_0x45725d)[_0x534c('0xc')](function(_0x2e18c7){logger[_0x534c('0xd')](_0x534c('0xe'),_0x43c898,_0x534c('0xf'));logger[_0x534c('0x10')](_0x534c('0x11'),_0x43c898,_0x534c('0xf'),JSON[_0x534c('0x12')](_0x2e18c7));if(_0x2e18c7[_0x534c('0x13')]){if(_0x2e18c7[_0x534c('0x13')]['code']===0x1f4){logger[_0x534c('0x13')](_0x534c('0xe'),_0x43c898,_0x2e18c7[_0x534c('0x13')][_0x534c('0x14')]);return _0x10d2ad(_0x2e18c7['error']['message']);}logger[_0x534c('0x13')](_0x534c('0xe'),_0x43c898,_0x2e18c7['error'][_0x534c('0x14')]);return _0x3f7229(_0x2e18c7[_0x534c('0x13')]['message']);}else{logger[_0x534c('0xd')](_0x534c('0xe'),_0x43c898,_0x534c('0xf'));_0x3f7229(_0x2e18c7[_0x534c('0x15')][_0x534c('0x14')]);}})[_0x534c('0x16')](function(_0x30c706){logger[_0x534c('0x13')](_0x534c('0xe'),_0x43c898,_0x30c706);_0x10d2ad(_0x30c706);});});}exports['GetSugarcrmAccount']=function(_0x3d524b){var _0x4c2486=this;return new Promise(function(_0x49ad14,_0x49883f){return db['SugarcrmAccount'][_0x534c('0x17')]({'raw':_0x3d524b[_0x534c('0x18')]?_0x3d524b[_0x534c('0x18')][_0x534c('0x19')]===undefined?!![]:![]:!![],'where':_0x3d524b['options']?_0x3d524b[_0x534c('0x18')][_0x534c('0x1a')]||null:null,'attributes':_0x3d524b['options']?_0x3d524b['options'][_0x534c('0x1b')]||null:null,'limit':_0x3d524b[_0x534c('0x18')]?_0x3d524b[_0x534c('0x18')]['limit']||null:null,'include':_0x3d524b[_0x534c('0x18')]?_0x3d524b[_0x534c('0x18')][_0x534c('0x1c')]?_['map'](_0x3d524b[_0x534c('0x18')][_0x534c('0x1c')],function(_0x5b4b72){return{'model':db[_0x5b4b72[_0x534c('0x1d')]],'as':_0x5b4b72['as'],'attributes':_0x5b4b72['attributes'],'include':_0x5b4b72['include']?_[_0x534c('0x1e')](_0x5b4b72[_0x534c('0x1c')],function(_0x460e21){return{'model':db[_0x460e21['model']],'as':_0x460e21['as'],'attributes':_0x460e21['attributes'],'include':_0x460e21[_0x534c('0x1c')]?_[_0x534c('0x1e')](_0x460e21['include'],function(_0x5e286f){return{'model':db[_0x5e286f['model']],'as':_0x5e286f['as'],'attributes':_0x5e286f[_0x534c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x534c('0xc')](function(_0x9412f1){logger[_0x534c('0xd')](_0x534c('0x1f'),_0x3d524b);logger[_0x534c('0x10')](_0x534c('0x1f'),_0x3d524b,JSON[_0x534c('0x12')](_0x9412f1));_0x49ad14(_0x9412f1);})['catch'](function(_0x33d4a3){logger[_0x534c('0x13')](_0x534c('0x1f'),_0x33d4a3[_0x534c('0x14')],_0x3d524b);_0x49883f(_0x4c2486['error'](0x1f4,_0x33d4a3[_0x534c('0x14')]));});});};exports['ShowSugarcrmAccount']=function(_0x5dec1e){var _0x4b6693=this;return new Promise(function(_0x1df65d,_0x32d0cb){return db[_0x534c('0x20')][_0x534c('0x21')]({'raw':_0x5dec1e['options']?_0x5dec1e['options'][_0x534c('0x19')]===undefined?!![]:![]:!![],'where':_0x5dec1e['options']?_0x5dec1e[_0x534c('0x18')][_0x534c('0x1a')]||null:null,'attributes':_0x5dec1e[_0x534c('0x18')]?_0x5dec1e[_0x534c('0x18')][_0x534c('0x1b')]||null:null,'include':_0x5dec1e['options']?_0x5dec1e[_0x534c('0x18')][_0x534c('0x1c')]?_[_0x534c('0x1e')](_0x5dec1e[_0x534c('0x18')]['include'],function(_0x35cfbf){return{'model':db[_0x35cfbf['model']],'as':_0x35cfbf['as'],'attributes':_0x35cfbf[_0x534c('0x1b')],'include':_0x35cfbf[_0x534c('0x1c')]?_[_0x534c('0x1e')](_0x35cfbf[_0x534c('0x1c')],function(_0x5b002f){return{'model':db[_0x5b002f[_0x534c('0x1d')]],'as':_0x5b002f['as'],'attributes':_0x5b002f['attributes'],'include':_0x5b002f['include']?_[_0x534c('0x1e')](_0x5b002f['include'],function(_0x5cab12){return{'model':db[_0x5cab12[_0x534c('0x1d')]],'as':_0x5cab12['as'],'attributes':_0x5cab12['attributes']};}):[]};}):[]};}):[]:[]})[_0x534c('0xc')](function(_0x2c82d4){logger[_0x534c('0xd')](_0x534c('0x22'),_0x5dec1e);logger[_0x534c('0x10')](_0x534c('0x22'),_0x5dec1e,JSON[_0x534c('0x12')](_0x2c82d4));_0x1df65d(_0x2c82d4);})['catch'](function(_0x4a245a){logger[_0x534c('0x13')]('ShowSugarcrmAccount',_0x4a245a['message'],_0x5dec1e);_0x32d0cb(_0x4b6693[_0x534c('0x13')](0x1f4,_0x4a245a['message']));});});};
\ No newline at end of file
+var _0x5a65=['result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','raw','options','where','attributes','limit','include','map','model','stringify','ShowSugarcrmAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x100ea5,_0x2f13b4){var _0x1c331=function(_0x247f46){while(--_0x247f46){_0x100ea5['push'](_0x100ea5['shift']());}};_0x1c331(++_0x2f13b4);}(_0x5a65,0x182));var _0x55a6=function(_0x1a2df9,_0x552110){_0x1a2df9=_0x1a2df9-0x0;var _0x2637d0=_0x5a65[_0x1a2df9];return _0x2637d0;};'use strict';var _=require(_0x55a6('0x0'));var util=require('util');var moment=require(_0x55a6('0x1'));var BPromise=require(_0x55a6('0x2'));var rs=require(_0x55a6('0x3'));var fs=require('fs');var Redis=require(_0x55a6('0x4'));var db=require(_0x55a6('0x5'))['db'];var utils=require(_0x55a6('0x6'));var logger=require(_0x55a6('0x7'))('rpc');var config=require(_0x55a6('0x8'));var jayson=require(_0x55a6('0x9'));var client=jayson[_0x55a6('0xa')][_0x55a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x46fc1c,_0x186aa8,_0x47d2ac){return new BPromise(function(_0x41bfa8,_0x5c5800){return client[_0x55a6('0xc')](_0x46fc1c,_0x47d2ac)[_0x55a6('0xd')](function(_0x3a22aa){logger[_0x55a6('0xe')](_0x55a6('0xf'),_0x186aa8,_0x55a6('0x10'));logger[_0x55a6('0x11')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x186aa8,'request\x20sent',JSON['stringify'](_0x3a22aa));if(_0x3a22aa[_0x55a6('0x12')]){if(_0x3a22aa[_0x55a6('0x12')][_0x55a6('0x13')]===0x1f4){logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x3a22aa['error'][_0x55a6('0x14')]);return _0x5c5800(_0x3a22aa['error'][_0x55a6('0x14')]);}logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x3a22aa[_0x55a6('0x12')][_0x55a6('0x14')]);return _0x41bfa8(_0x3a22aa[_0x55a6('0x12')]['message']);}else{logger[_0x55a6('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x186aa8,'request\x20sent');_0x41bfa8(_0x3a22aa[_0x55a6('0x15')][_0x55a6('0x14')]);}})[_0x55a6('0x16')](function(_0x2f8429){logger[_0x55a6('0x12')](_0x55a6('0xf'),_0x186aa8,_0x2f8429);_0x5c5800(_0x2f8429);});});}exports[_0x55a6('0x17')]=function(_0x27cc40){var _0x9bfe=this;return new Promise(function(_0x5556cf,_0x2aeb63){return db[_0x55a6('0x18')][_0x55a6('0x19')]({'raw':_0x27cc40['options']?_0x27cc40['options'][_0x55a6('0x1a')]===undefined?!![]:![]:!![],'where':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40['options'][_0x55a6('0x1c')]||null:null,'attributes':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40[_0x55a6('0x1b')][_0x55a6('0x1d')]||null:null,'limit':_0x27cc40[_0x55a6('0x1b')]?_0x27cc40['options'][_0x55a6('0x1e')]||null:null,'include':_0x27cc40['options']?_0x27cc40['options'][_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x27cc40[_0x55a6('0x1b')]['include'],function(_0x89c524){return{'model':db[_0x89c524[_0x55a6('0x21')]],'as':_0x89c524['as'],'attributes':_0x89c524[_0x55a6('0x1d')],'include':_0x89c524[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x89c524[_0x55a6('0x1f')],function(_0xb64e93){return{'model':db[_0xb64e93[_0x55a6('0x21')]],'as':_0xb64e93['as'],'attributes':_0xb64e93[_0x55a6('0x1d')],'include':_0xb64e93[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0xb64e93[_0x55a6('0x1f')],function(_0x27ba87){return{'model':db[_0x27ba87[_0x55a6('0x21')]],'as':_0x27ba87['as'],'attributes':_0x27ba87[_0x55a6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x55a6('0xd')](function(_0x5d5c01){logger[_0x55a6('0xe')]('GetSugarcrmAccount',_0x27cc40);logger[_0x55a6('0x11')](_0x55a6('0x17'),_0x27cc40,JSON[_0x55a6('0x22')](_0x5d5c01));_0x5556cf(_0x5d5c01);})[_0x55a6('0x16')](function(_0x70dea5){logger[_0x55a6('0x12')](_0x55a6('0x17'),_0x70dea5[_0x55a6('0x14')],_0x27cc40);_0x2aeb63(_0x9bfe[_0x55a6('0x12')](0x1f4,_0x70dea5[_0x55a6('0x14')]));});});};exports[_0x55a6('0x23')]=function(_0x142f48){var _0x8352bc=this;return new Promise(function(_0x108a9f,_0x26da9a){return db[_0x55a6('0x18')][_0x55a6('0x24')]({'raw':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1c')]||null:null,'attributes':_0x142f48[_0x55a6('0x1b')]?_0x142f48['options'][_0x55a6('0x1d')]||null:null,'include':_0x142f48[_0x55a6('0x1b')]?_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x142f48[_0x55a6('0x1b')][_0x55a6('0x1f')],function(_0x4875de){return{'model':db[_0x4875de[_0x55a6('0x21')]],'as':_0x4875de['as'],'attributes':_0x4875de[_0x55a6('0x1d')],'include':_0x4875de[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x4875de[_0x55a6('0x1f')],function(_0x3dbc60){return{'model':db[_0x3dbc60[_0x55a6('0x21')]],'as':_0x3dbc60['as'],'attributes':_0x3dbc60[_0x55a6('0x1d')],'include':_0x3dbc60[_0x55a6('0x1f')]?_[_0x55a6('0x20')](_0x3dbc60[_0x55a6('0x1f')],function(_0x562d82){return{'model':db[_0x562d82[_0x55a6('0x21')]],'as':_0x562d82['as'],'attributes':_0x562d82[_0x55a6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x55a6('0xd')](function(_0x304cae){logger[_0x55a6('0xe')]('ShowSugarcrmAccount',_0x142f48);logger['debug'](_0x55a6('0x23'),_0x142f48,JSON[_0x55a6('0x22')](_0x304cae));_0x108a9f(_0x304cae);})[_0x55a6('0x16')](function(_0x103dc2){logger[_0x55a6('0x12')]('ShowSugarcrmAccount',_0x103dc2[_0x55a6('0x14')],_0x142f48);_0x26da9a(_0x8352bc['error'](0x1f4,_0x103dc2[_0x55a6('0x14')]));});});};
\ No newline at end of file
index 30148c1..a7996b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x834c=['show','/:id/descriptions','getDescriptions','delete','/:id','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x834c,0x19f));var _0xc834=function(_0x1e3c02,_0x5c07a2){_0x1e3c02=_0x1e3c02-0x0;var _0x4d26d7=_0x834c[_0x1e3c02];return _0x4d26d7;};'use strict';var multer=require('multer');var util=require(_0xc834('0x0'));var path=require(_0xc834('0x1'));var timeout=require('connect-timeout');var express=require(_0xc834('0x2'));var router=express['Router']();var fs_extra=require(_0xc834('0x3'));var auth=require(_0xc834('0x4'));var interaction=require(_0xc834('0x5'));var config=require(_0xc834('0x6'));var controller=require('./intSugarcrmConfiguration.controller');router['get']('/',auth[_0xc834('0x7')](),controller[_0xc834('0x8')]);router[_0xc834('0x9')]('/:id',auth[_0xc834('0x7')](),controller[_0xc834('0xa')]);router[_0xc834('0x9')]('/:id/fields',auth[_0xc834('0x7')](),controller['getFields']);router[_0xc834('0x9')]('/:id/subjects',auth[_0xc834('0x7')](),controller['getSubjects']);router[_0xc834('0x9')](_0xc834('0xb'),auth[_0xc834('0x7')](),controller[_0xc834('0xc')]);router['post']('/',auth[_0xc834('0x7')](),controller['create']);router['put']('/:id',auth[_0xc834('0x7')](),controller['update']);router[_0xc834('0xd')](_0xc834('0xe'),auth['isAuthenticated'](),controller[_0xc834('0xf')]);module[_0xc834('0x10')]=router;
\ No newline at end of file
+var _0x9c45=['isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x9c45,0xb7));var _0x59c4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9c45[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x59c4('0x0'));var util=require('util');var path=require(_0x59c4('0x1'));var timeout=require(_0x59c4('0x2'));var express=require(_0x59c4('0x3'));var router=express['Router']();var fs_extra=require(_0x59c4('0x4'));var auth=require(_0x59c4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x59c4('0x6'));var controller=require(_0x59c4('0x7'));router[_0x59c4('0x8')]('/',auth[_0x59c4('0x9')](),controller['index']);router[_0x59c4('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x59c4('0xa')]);router[_0x59c4('0x8')](_0x59c4('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x59c4('0x8')](_0x59c4('0xc'),auth['isAuthenticated'](),controller[_0x59c4('0xd')]);router[_0x59c4('0x8')](_0x59c4('0xe'),auth[_0x59c4('0x9')](),controller[_0x59c4('0xf')]);router[_0x59c4('0x10')]('/',auth[_0x59c4('0x9')](),controller[_0x59c4('0x11')]);router[_0x59c4('0x12')](_0x59c4('0x13'),auth[_0x59c4('0x9')](),controller[_0x59c4('0x14')]);router[_0x59c4('0x15')]('/:id',auth[_0x59c4('0x9')](),controller[_0x59c4('0x16')]);module[_0x59c4('0x17')]=router;
\ No newline at end of file
index 03543aa..e10b362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x413b=['sequelize','STRING'];(function(_0x2e9119,_0x13d271){var _0x55971d=function(_0x255ad2){while(--_0x255ad2){_0x2e9119['push'](_0x2e9119['shift']());}};_0x55971d(++_0x13d271);}(_0x413b,0xea));var _0xb413=function(_0x493cea,_0x144c6a){_0x493cea=_0x493cea-0x0;var _0x1c32ba=_0x413b[_0x493cea];return _0x1c32ba;};'use strict';var Sequelize=require(_0xb413('0x0'));module['exports']={'name':{'type':Sequelize[_0xb413('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf2a9=['exports','STRING'];(function(_0x359a7b,_0x4d63d3){var _0x340ade=function(_0x45a967){while(--_0x45a967){_0x359a7b['push'](_0x359a7b['shift']());}};_0x340ade(++_0x4d63d3);}(_0xf2a9,0x1f2));var _0x9f2a=function(_0xb11647,_0x16f2bc){_0xb11647=_0xb11647-0x0;var _0x5c6dd4=_0xf2a9[_0xb11647];return _0x5c6dd4;};'use strict';var Sequelize=require('sequelize');module[_0x9f2a('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9f2a('0x1')]}};
\ No newline at end of file
index 84dbf05..e991b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ee=['zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','end','sendStatus','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','getFields','findOne','order','pick','getSubjects','SugarcrmField','nolimit','getDescriptions'];(function(_0x764732,_0x213651){var _0x587686=function(_0x4acf2c){while(--_0x4acf2c){_0x764732['push'](_0x764732['shift']());}};_0x587686(++_0x213651);}(_0xa6ee,0x190));var _0xea6e=function(_0x1b1070,_0xd9e8b5){_0x1b1070=_0x1b1070-0x0;var _0x1457c7=_0xa6ee[_0x1b1070];return _0x1457c7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xea6e('0x0'));var jsonpatch=require(_0xea6e('0x1'));var rp=require(_0xea6e('0x2'));var moment=require(_0xea6e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xea6e('0x4'));var util=require(_0xea6e('0x5'));var path=require(_0xea6e('0x6'));var sox=require(_0xea6e('0x7'));var csv=require(_0xea6e('0x8'));var ejs=require(_0xea6e('0x9'));var fs=require('fs');var fs_extra=require(_0xea6e('0xa'));var _=require(_0xea6e('0xb'));var squel=require(_0xea6e('0xc'));var crypto=require(_0xea6e('0xd'));var jsforce=require(_0xea6e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xea6e('0x8'));var querystring=require('querystring');var Papa=require(_0xea6e('0xf'));var Redis=require(_0xea6e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xea6e('0x11'));var as=require(_0xea6e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xea6e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xea6e('0x14'));var licenseUtil=require(_0xea6e('0x15'));var db=require(_0xea6e('0x16'))['db'];function respondWithStatusCode(_0x3c9b7a,_0x60d74c){_0x60d74c=_0x60d74c||0xcc;return function(_0x4c2cb6){if(_0x4c2cb6){return _0x3c9b7a['sendStatus'](_0x60d74c);}return _0x3c9b7a[_0xea6e('0x17')](_0x60d74c)['end']();};}function respondWithResult(_0xf46d56,_0x2797a6){_0x2797a6=_0x2797a6||0xc8;return function(_0x2d41b9){if(_0x2d41b9){return _0xf46d56[_0xea6e('0x17')](_0x2797a6)['json'](_0x2d41b9);}};}function respondWithFilteredResult(_0x401730,_0x31d0e6){return function(_0x410340){if(_0x410340){var _0x230a98=typeof _0x31d0e6[_0xea6e('0x18')]===_0xea6e('0x19')&&typeof _0x31d0e6[_0xea6e('0x1a')]===_0xea6e('0x19');var _0x1f2eab=_0x410340[_0xea6e('0x1b')];var _0x1fb94e=_0x230a98?0x0:_0x31d0e6[_0xea6e('0x18')];var _0x1700c9=_0x230a98?_0x410340[_0xea6e('0x1b')]:_0x31d0e6['offset']+_0x31d0e6[_0xea6e('0x1a')];var _0x3fc928;if(_0x1700c9>=_0x1f2eab){_0x1700c9=_0x1f2eab;_0x3fc928=0xc8;}else{_0x3fc928=0xce;}_0x401730[_0xea6e('0x17')](_0x3fc928);return _0x401730[_0xea6e('0x1c')](_0xea6e('0x1d'),_0x1fb94e+'-'+_0x1700c9+'/'+_0x1f2eab)[_0xea6e('0x1e')](_0x410340);}return null;};}function patchUpdates(_0x36329f){return function(_0x2e3c01){try{jsonpatch[_0xea6e('0x1f')](_0x2e3c01,_0x36329f,!![]);}catch(_0x3bf1d8){return BPromise['reject'](_0x3bf1d8);}return _0x2e3c01[_0xea6e('0x20')]();};}function saveUpdates(_0x7d044e,_0x39ba90){return function(_0x1cd8ee){if(_0x1cd8ee){return _0x1cd8ee[_0xea6e('0x21')](_0x7d044e)[_0xea6e('0x22')](function(_0x41377b){return _0x41377b;});}return null;};}function removeEntity(_0x13d7b1,_0x47c549){return function(_0x14f7f0){if(_0x14f7f0){return _0x14f7f0[_0xea6e('0x23')]()[_0xea6e('0x22')](function(){_0x13d7b1[_0xea6e('0x17')](0xcc)[_0xea6e('0x24')]();});}};}function handleEntityNotFound(_0x31d5c3,_0x114de5){return function(_0x1aee62){if(!_0x1aee62){_0x31d5c3[_0xea6e('0x25')](0x194);}return _0x1aee62;};}function handleError(_0x3dfeed,_0x538fde){_0x538fde=_0x538fde||0x1f4;return function(_0x227851){logger['error'](_0x227851[_0xea6e('0x26')]);if(_0x227851[_0xea6e('0x27')]){delete _0x227851[_0xea6e('0x27')];}_0x3dfeed['status'](_0x538fde)[_0xea6e('0x28')](_0x227851);};}exports[_0xea6e('0x29')]=function(_0x11c0b6,_0x49ab8b){var _0x10d7d3={},_0x560c62={},_0x129a5e={'count':0x0,'rows':[]};var _0x3f421b=_[_0xea6e('0x2a')](db[_0xea6e('0x2b')][_0xea6e('0x2c')],function(_0x409770){return{'name':_0x409770[_0xea6e('0x2d')],'type':_0x409770['type'][_0xea6e('0x2e')]};});_0x560c62[_0xea6e('0x2f')]=_[_0xea6e('0x2a')](_0x3f421b,'name');_0x560c62['query']=_['keys'](_0x11c0b6[_0xea6e('0x30')]);_0x560c62[_0xea6e('0x31')]=_['intersection'](_0x560c62[_0xea6e('0x2f')],_0x560c62[_0xea6e('0x30')]);_0x10d7d3[_0xea6e('0x32')]=_[_0xea6e('0x33')](_0x560c62[_0xea6e('0x2f')],qs[_0xea6e('0x34')](_0x11c0b6['query']['fields']));_0x10d7d3[_0xea6e('0x32')]=_0x10d7d3[_0xea6e('0x32')][_0xea6e('0x35')]?_0x10d7d3[_0xea6e('0x32')]:_0x560c62[_0xea6e('0x2f')];if(!_0x11c0b6[_0xea6e('0x30')][_0xea6e('0x36')]('nolimit')){_0x10d7d3[_0xea6e('0x1a')]=qs['limit'](_0x11c0b6[_0xea6e('0x30')][_0xea6e('0x1a')]);_0x10d7d3[_0xea6e('0x18')]=qs[_0xea6e('0x18')](_0x11c0b6['query'][_0xea6e('0x18')]);}_0x10d7d3['order']=qs[_0xea6e('0x37')](_0x11c0b6[_0xea6e('0x30')][_0xea6e('0x37')]);_0x10d7d3[_0xea6e('0x38')]=qs[_0xea6e('0x31')](_['pick'](_0x11c0b6[_0xea6e('0x30')],_0x560c62[_0xea6e('0x31')]),_0x3f421b);if(_0x11c0b6[_0xea6e('0x30')][_0xea6e('0x39')]){_0x10d7d3[_0xea6e('0x38')]=_[_0xea6e('0x3a')](_0x10d7d3[_0xea6e('0x38')],{'$or':_['map'](_0x3f421b,function(_0x37c615){if(_0x37c615['type']!==_0xea6e('0x3b')){var _0x138842={};_0x138842[_0x37c615[_0xea6e('0x27')]]={'$like':'%'+_0x11c0b6[_0xea6e('0x30')][_0xea6e('0x39')]+'%'};return _0x138842;}})});}_0x10d7d3=_['merge']({},_0x10d7d3,_0x11c0b6[_0xea6e('0x3c')]);var _0x4711c8={'where':_0x10d7d3[_0xea6e('0x38')]};return db[_0xea6e('0x2b')][_0xea6e('0x1b')](_0x4711c8)[_0xea6e('0x22')](function(_0x4a13c9){_0x129a5e[_0xea6e('0x1b')]=_0x4a13c9;if(_0x11c0b6['query'][_0xea6e('0x3d')]){_0x10d7d3[_0xea6e('0x3e')]=[{'all':!![]}];}return db[_0xea6e('0x2b')][_0xea6e('0x3f')](_0x10d7d3);})[_0xea6e('0x22')](function(_0x14d569){_0x129a5e[_0xea6e('0x40')]=_0x14d569;return _0x129a5e;})[_0xea6e('0x22')](respondWithFilteredResult(_0x49ab8b,_0x10d7d3))[_0xea6e('0x41')](handleError(_0x49ab8b,null));};exports[_0xea6e('0x42')]=function(_0x5bcaad,_0xa63fec){var _0x3088a6={'raw':![],'where':{'id':_0x5bcaad[_0xea6e('0x43')]['id']}},_0x5d532d={};_0x5d532d['model']=_[_0xea6e('0x44')](db[_0xea6e('0x2b')][_0xea6e('0x2c')]);_0x5d532d[_0xea6e('0x30')]=_[_0xea6e('0x44')](_0x5bcaad[_0xea6e('0x30')]);_0x5d532d[_0xea6e('0x31')]=_[_0xea6e('0x33')](_0x5d532d[_0xea6e('0x2f')],_0x5d532d[_0xea6e('0x30')]);_0x3088a6['attributes']=_[_0xea6e('0x33')](_0x5d532d[_0xea6e('0x2f')],qs[_0xea6e('0x34')](_0x5bcaad[_0xea6e('0x30')][_0xea6e('0x34')]));_0x3088a6['attributes']=_0x3088a6[_0xea6e('0x32')][_0xea6e('0x35')]?_0x3088a6[_0xea6e('0x32')]:_0x5d532d[_0xea6e('0x2f')];if(_0x5bcaad['query'][_0xea6e('0x3d')]){_0x3088a6[_0xea6e('0x3e')]=[{'all':!![]}];}_0x3088a6=_[_0xea6e('0x3a')]({},_0x3088a6,_0x5bcaad[_0xea6e('0x3c')]);return db[_0xea6e('0x2b')]['find'](_0x3088a6)['then'](handleEntityNotFound(_0xa63fec,null))['then'](respondWithResult(_0xa63fec,null))['catch'](handleError(_0xa63fec,null));};exports['create']=function(_0x4c2b30,_0x4d9187){return db['SugarcrmConfiguration'][_0xea6e('0x45')](_0x4c2b30[_0xea6e('0x46')],{})[_0xea6e('0x22')](respondWithResult(_0x4d9187,0xc9))[_0xea6e('0x41')](handleError(_0x4d9187,null));};exports[_0xea6e('0x21')]=function(_0x5e9424,_0x38ede6){if(_0x5e9424[_0xea6e('0x46')]['id']){delete _0x5e9424[_0xea6e('0x46')]['id'];}return db['SugarcrmConfiguration'][_0xea6e('0x47')]({'where':{'id':_0x5e9424['params']['id']}})[_0xea6e('0x22')](handleEntityNotFound(_0x38ede6,null))[_0xea6e('0x22')](saveUpdates(_0x5e9424['body'],null))['then'](respondWithResult(_0x38ede6,null))[_0xea6e('0x41')](handleError(_0x38ede6,null));};exports[_0xea6e('0x23')]=function(_0x3f6374,_0xb73d48){return db[_0xea6e('0x2b')][_0xea6e('0x47')]({'where':{'id':_0x3f6374[_0xea6e('0x43')]['id']}})[_0xea6e('0x22')](handleEntityNotFound(_0xb73d48,null))[_0xea6e('0x22')](removeEntity(_0xb73d48,null))['catch'](handleError(_0xb73d48,null));};exports[_0xea6e('0x48')]=function(_0x5593f7,_0x1bb8d9,_0x1296e8){var _0xa8771e={};var _0x971a50={};var _0x28fbed;var _0x2360f2;return db[_0xea6e('0x2b')][_0xea6e('0x49')]({'where':{'id':_0x5593f7[_0xea6e('0x43')]['id']}})[_0xea6e('0x22')](handleEntityNotFound(_0x1bb8d9,null))[_0xea6e('0x22')](function(_0x2bc15a){if(_0x2bc15a){_0x28fbed=_0x2bc15a;_0x971a50[_0xea6e('0x2f')]=_[_0xea6e('0x44')](db['SugarcrmField']['rawAttributes']);_0x971a50[_0xea6e('0x30')]=_['keys'](_0x5593f7['query']);_0x971a50[_0xea6e('0x31')]=_[_0xea6e('0x33')](_0x971a50[_0xea6e('0x2f')],_0x971a50['query']);_0xa8771e['attributes']=_[_0xea6e('0x33')](_0x971a50['model'],qs[_0xea6e('0x34')](_0x5593f7[_0xea6e('0x30')]['fields']));_0xa8771e['attributes']=_0xa8771e['attributes'][_0xea6e('0x35')]?_0xa8771e[_0xea6e('0x32')]:_0x971a50[_0xea6e('0x2f')];_0xa8771e[_0xea6e('0x4a')]=qs[_0xea6e('0x37')](_0x5593f7[_0xea6e('0x30')][_0xea6e('0x37')]);_0xa8771e[_0xea6e('0x38')]=qs[_0xea6e('0x31')](_[_0xea6e('0x4b')](_0x5593f7['query'],_0x971a50[_0xea6e('0x31')]));if(_0x5593f7[_0xea6e('0x30')][_0xea6e('0x39')]){_0xa8771e[_0xea6e('0x38')]=_[_0xea6e('0x3a')](_0xa8771e[_0xea6e('0x38')],{'$or':_[_0xea6e('0x2a')](_0xa8771e[_0xea6e('0x32')],function(_0x2aaedc){var _0x33aa46={};_0x33aa46[_0x2aaedc]={'$like':'%'+_0x5593f7[_0xea6e('0x30')][_0xea6e('0x39')]+'%'};return _0x33aa46;})});}_0xa8771e=_[_0xea6e('0x3a')]({},_0xa8771e,_0x5593f7[_0xea6e('0x3c')]);return _0x28fbed[_0xea6e('0x48')](_0xa8771e);}})[_0xea6e('0x22')](function(_0x1a316e){if(_0x1a316e){_0x2360f2=_0x1a316e[_0xea6e('0x35')];if(!_0x5593f7[_0xea6e('0x30')][_0xea6e('0x36')]('nolimit')){_0xa8771e[_0xea6e('0x1a')]=qs[_0xea6e('0x1a')](_0x5593f7[_0xea6e('0x30')][_0xea6e('0x1a')]);_0xa8771e['offset']=qs[_0xea6e('0x18')](_0x5593f7[_0xea6e('0x30')][_0xea6e('0x18')]);}return _0x28fbed[_0xea6e('0x48')](_0xa8771e);}})[_0xea6e('0x22')](function(_0x5ddab9){if(_0x5ddab9){return _0x5ddab9?{'count':_0x2360f2,'rows':_0x5ddab9}:null;}})[_0xea6e('0x22')](respondWithResult(_0x1bb8d9,null))[_0xea6e('0x41')](handleError(_0x1bb8d9,null));};exports[_0xea6e('0x4c')]=function(_0x5e7825,_0x53abda,_0x2b1ca6){var _0x3995f7={};var _0x4b4ad5={};var _0x2fe4fe;var _0x3a3593;return db[_0xea6e('0x2b')][_0xea6e('0x49')]({'where':{'id':_0x5e7825[_0xea6e('0x43')]['id']}})[_0xea6e('0x22')](handleEntityNotFound(_0x53abda,null))[_0xea6e('0x22')](function(_0x47c444){if(_0x47c444){_0x2fe4fe=_0x47c444;_0x4b4ad5[_0xea6e('0x2f')]=_['keys'](db[_0xea6e('0x4d')][_0xea6e('0x2c')]);_0x4b4ad5[_0xea6e('0x30')]=_['keys'](_0x5e7825[_0xea6e('0x30')]);_0x4b4ad5[_0xea6e('0x31')]=_[_0xea6e('0x33')](_0x4b4ad5[_0xea6e('0x2f')],_0x4b4ad5['query']);_0x3995f7['attributes']=_[_0xea6e('0x33')](_0x4b4ad5[_0xea6e('0x2f')],qs['fields'](_0x5e7825['query'][_0xea6e('0x34')]));_0x3995f7[_0xea6e('0x32')]=_0x3995f7[_0xea6e('0x32')][_0xea6e('0x35')]?_0x3995f7[_0xea6e('0x32')]:_0x4b4ad5[_0xea6e('0x2f')];_0x3995f7[_0xea6e('0x4a')]=qs[_0xea6e('0x37')](_0x5e7825[_0xea6e('0x30')][_0xea6e('0x37')]);_0x3995f7[_0xea6e('0x38')]=qs[_0xea6e('0x31')](_[_0xea6e('0x4b')](_0x5e7825[_0xea6e('0x30')],_0x4b4ad5[_0xea6e('0x31')]));if(_0x5e7825[_0xea6e('0x30')][_0xea6e('0x39')]){_0x3995f7[_0xea6e('0x38')]=_[_0xea6e('0x3a')](_0x3995f7[_0xea6e('0x38')],{'$or':_[_0xea6e('0x2a')](_0x3995f7[_0xea6e('0x32')],function(_0x4a0939){var _0x15b0c8={};_0x15b0c8[_0x4a0939]={'$like':'%'+_0x5e7825['query']['filter']+'%'};return _0x15b0c8;})});}_0x3995f7=_[_0xea6e('0x3a')]({},_0x3995f7,_0x5e7825['options']);return _0x2fe4fe['getSubjects'](_0x3995f7);}})[_0xea6e('0x22')](function(_0x1dea58){if(_0x1dea58){_0x3a3593=_0x1dea58[_0xea6e('0x35')];if(!_0x5e7825['query'][_0xea6e('0x36')](_0xea6e('0x4e'))){_0x3995f7[_0xea6e('0x1a')]=qs['limit'](_0x5e7825['query']['limit']);_0x3995f7[_0xea6e('0x18')]=qs[_0xea6e('0x18')](_0x5e7825[_0xea6e('0x30')][_0xea6e('0x18')]);}return _0x2fe4fe[_0xea6e('0x4c')](_0x3995f7);}})[_0xea6e('0x22')](function(_0x2d8b3e){if(_0x2d8b3e){return _0x2d8b3e?{'count':_0x3a3593,'rows':_0x2d8b3e}:null;}})[_0xea6e('0x22')](respondWithResult(_0x53abda,null))[_0xea6e('0x41')](handleError(_0x53abda,null));};exports[_0xea6e('0x4f')]=function(_0xe4e9c,_0x1a29b0,_0x23f4a7){var _0xde0f5f={};var _0x2aaf8b={};var _0x3cfb8a;var _0x1d4a2a;return db[_0xea6e('0x2b')]['findOne']({'where':{'id':_0xe4e9c['params']['id']}})['then'](handleEntityNotFound(_0x1a29b0,null))['then'](function(_0x5a38ff){if(_0x5a38ff){_0x3cfb8a=_0x5a38ff;_0x2aaf8b[_0xea6e('0x2f')]=_[_0xea6e('0x44')](db[_0xea6e('0x4d')][_0xea6e('0x2c')]);_0x2aaf8b[_0xea6e('0x30')]=_[_0xea6e('0x44')](_0xe4e9c[_0xea6e('0x30')]);_0x2aaf8b[_0xea6e('0x31')]=_[_0xea6e('0x33')](_0x2aaf8b[_0xea6e('0x2f')],_0x2aaf8b[_0xea6e('0x30')]);_0xde0f5f['attributes']=_['intersection'](_0x2aaf8b[_0xea6e('0x2f')],qs[_0xea6e('0x34')](_0xe4e9c[_0xea6e('0x30')][_0xea6e('0x34')]));_0xde0f5f[_0xea6e('0x32')]=_0xde0f5f[_0xea6e('0x32')][_0xea6e('0x35')]?_0xde0f5f[_0xea6e('0x32')]:_0x2aaf8b['model'];_0xde0f5f['order']=qs['sort'](_0xe4e9c['query'][_0xea6e('0x37')]);_0xde0f5f[_0xea6e('0x38')]=qs[_0xea6e('0x31')](_[_0xea6e('0x4b')](_0xe4e9c[_0xea6e('0x30')],_0x2aaf8b[_0xea6e('0x31')]));if(_0xe4e9c['query'][_0xea6e('0x39')]){_0xde0f5f[_0xea6e('0x38')]=_['merge'](_0xde0f5f[_0xea6e('0x38')],{'$or':_['map'](_0xde0f5f[_0xea6e('0x32')],function(_0x29eeca){var _0x2cdbb4={};_0x2cdbb4[_0x29eeca]={'$like':'%'+_0xe4e9c[_0xea6e('0x30')][_0xea6e('0x39')]+'%'};return _0x2cdbb4;})});}_0xde0f5f=_['merge']({},_0xde0f5f,_0xe4e9c[_0xea6e('0x3c')]);return _0x3cfb8a[_0xea6e('0x4f')](_0xde0f5f);}})['then'](function(_0x2623bc){if(_0x2623bc){_0x1d4a2a=_0x2623bc[_0xea6e('0x35')];if(!_0xe4e9c[_0xea6e('0x30')]['hasOwnProperty'](_0xea6e('0x4e'))){_0xde0f5f[_0xea6e('0x1a')]=qs[_0xea6e('0x1a')](_0xe4e9c[_0xea6e('0x30')][_0xea6e('0x1a')]);_0xde0f5f[_0xea6e('0x18')]=qs[_0xea6e('0x18')](_0xe4e9c[_0xea6e('0x30')][_0xea6e('0x18')]);}return _0x3cfb8a[_0xea6e('0x4f')](_0xde0f5f);}})[_0xea6e('0x22')](function(_0x5360aa){if(_0x5360aa){return _0x5360aa?{'count':_0x1d4a2a,'rows':_0x5360aa}:null;}})[_0xea6e('0x22')](respondWithResult(_0x1a29b0,null))[_0xea6e('0x41')](handleError(_0x1a29b0,null));};
\ No newline at end of file
+var _0xeedb=['intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','SugarcrmConfiguration','include','findAll','rows','show','params','includeAll','catch','create','body','find','getFields','findOne','order','filter','getSubjects','SugarcrmField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','attributes'];(function(_0x3974bc,_0x566eb5){var _0x3e36ef=function(_0x4545da){while(--_0x4545da){_0x3974bc['push'](_0x3974bc['shift']());}};_0x3e36ef(++_0x566eb5);}(_0xeedb,0x113));var _0xbeed=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xeedb[_0xf50820];return _0x2a9b10;};'use strict';var emlformat=require(_0xbeed('0x0'));var rimraf=require(_0xbeed('0x1'));var zipdir=require(_0xbeed('0x2'));var jsonpatch=require(_0xbeed('0x3'));var rp=require(_0xbeed('0x4'));var moment=require(_0xbeed('0x5'));var BPromise=require(_0xbeed('0x6'));var Mustache=require(_0xbeed('0x7'));var util=require(_0xbeed('0x8'));var path=require('path');var sox=require(_0xbeed('0x9'));var csv=require(_0xbeed('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbeed('0xb'));var _=require(_0xbeed('0xc'));var squel=require('squel');var crypto=require(_0xbeed('0xd'));var jsforce=require(_0xbeed('0xe'));var deskjs=require(_0xbeed('0xf'));var toCsv=require(_0xbeed('0xa'));var querystring=require(_0xbeed('0x10'));var Papa=require(_0xbeed('0x11'));var Redis=require(_0xbeed('0x12'));var authService=require(_0xbeed('0x13'));var qs=require(_0xbeed('0x14'));var as=require(_0xbeed('0x15'));var hardwareService=require(_0xbeed('0x16'));var logger=require(_0xbeed('0x17'))('api');var utils=require(_0xbeed('0x18'));var config=require(_0xbeed('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a1c37,_0x164fc9){_0x164fc9=_0x164fc9||0xcc;return function(_0x3c82e5){if(_0x3c82e5){return _0x1a1c37[_0xbeed('0x1a')](_0x164fc9);}return _0x1a1c37[_0xbeed('0x1b')](_0x164fc9)[_0xbeed('0x1c')]();};}function respondWithResult(_0xaf1e5f,_0x3fba55){_0x3fba55=_0x3fba55||0xc8;return function(_0x33f599){if(_0x33f599){return _0xaf1e5f[_0xbeed('0x1b')](_0x3fba55)[_0xbeed('0x1d')](_0x33f599);}};}function respondWithFilteredResult(_0x4c4385,_0x105bb8){return function(_0x51852a){if(_0x51852a){var _0x470b51=typeof _0x105bb8['offset']===_0xbeed('0x1e')&&typeof _0x105bb8[_0xbeed('0x1f')]===_0xbeed('0x1e');var _0x2c3518=_0x51852a['count'];var _0x4beed8=_0x470b51?0x0:_0x105bb8[_0xbeed('0x20')];var _0x1e712b=_0x470b51?_0x51852a['count']:_0x105bb8[_0xbeed('0x20')]+_0x105bb8[_0xbeed('0x1f')];var _0x483c07;if(_0x1e712b>=_0x2c3518){_0x1e712b=_0x2c3518;_0x483c07=0xc8;}else{_0x483c07=0xce;}_0x4c4385['status'](_0x483c07);return _0x4c4385[_0xbeed('0x21')](_0xbeed('0x22'),_0x4beed8+'-'+_0x1e712b+'/'+_0x2c3518)[_0xbeed('0x1d')](_0x51852a);}return null;};}function patchUpdates(_0x4d657d){return function(_0x9f7688){try{jsonpatch[_0xbeed('0x23')](_0x9f7688,_0x4d657d,!![]);}catch(_0x5ed2e5){return BPromise[_0xbeed('0x24')](_0x5ed2e5);}return _0x9f7688['save']();};}function saveUpdates(_0x14c08b,_0x43f916){return function(_0x46668b){if(_0x46668b){return _0x46668b[_0xbeed('0x25')](_0x14c08b)[_0xbeed('0x26')](function(_0x3278c0){return _0x3278c0;});}return null;};}function removeEntity(_0x2e078b,_0x4265c7){return function(_0xbedcd1){if(_0xbedcd1){return _0xbedcd1[_0xbeed('0x27')]()[_0xbeed('0x26')](function(){_0x2e078b[_0xbeed('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23f56b,_0x729654){return function(_0x382a93){if(!_0x382a93){_0x23f56b['sendStatus'](0x194);}return _0x382a93;};}function handleError(_0x315853,_0x25b887){_0x25b887=_0x25b887||0x1f4;return function(_0x3b7dee){logger['error'](_0x3b7dee[_0xbeed('0x28')]);if(_0x3b7dee[_0xbeed('0x29')]){delete _0x3b7dee['name'];}_0x315853[_0xbeed('0x1b')](_0x25b887)[_0xbeed('0x2a')](_0x3b7dee);};}exports[_0xbeed('0x2b')]=function(_0x1e4ad8,_0x5b6f9e){var _0x536875={},_0x13dd2a={},_0xbff25={'count':0x0,'rows':[]};var _0x4592ca=_[_0xbeed('0x2c')](db['SugarcrmConfiguration'][_0xbeed('0x2d')],function(_0x2f9d96){return{'name':_0x2f9d96[_0xbeed('0x2e')],'type':_0x2f9d96[_0xbeed('0x2f')]['key']};});_0x13dd2a[_0xbeed('0x30')]=_['map'](_0x4592ca,_0xbeed('0x29'));_0x13dd2a['query']=_[_0xbeed('0x31')](_0x1e4ad8[_0xbeed('0x32')]);_0x13dd2a[_0xbeed('0x33')]=_['intersection'](_0x13dd2a['model'],_0x13dd2a[_0xbeed('0x32')]);_0x536875[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x13dd2a[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x1e4ad8[_0xbeed('0x32')]['fields']));_0x536875['attributes']=_0x536875[_0xbeed('0x34')][_0xbeed('0x37')]?_0x536875[_0xbeed('0x34')]:_0x13dd2a[_0xbeed('0x30')];if(!_0x1e4ad8[_0xbeed('0x32')][_0xbeed('0x38')](_0xbeed('0x39'))){_0x536875[_0xbeed('0x1f')]=qs[_0xbeed('0x1f')](_0x1e4ad8['query'][_0xbeed('0x1f')]);_0x536875['offset']=qs[_0xbeed('0x20')](_0x1e4ad8['query'][_0xbeed('0x20')]);}_0x536875['order']=qs['sort'](_0x1e4ad8[_0xbeed('0x32')][_0xbeed('0x3a')]);_0x536875[_0xbeed('0x3b')]=qs['filters'](_[_0xbeed('0x3c')](_0x1e4ad8[_0xbeed('0x32')],_0x13dd2a[_0xbeed('0x33')]),_0x4592ca);if(_0x1e4ad8['query']['filter']){_0x536875[_0xbeed('0x3b')]=_[_0xbeed('0x3d')](_0x536875['where'],{'$or':_['map'](_0x4592ca,function(_0x42106b){if(_0x42106b['type']!==_0xbeed('0x3e')){var _0x4a3db4={};_0x4a3db4[_0x42106b['name']]={'$like':'%'+_0x1e4ad8[_0xbeed('0x32')]['filter']+'%'};return _0x4a3db4;}})});}_0x536875=_[_0xbeed('0x3d')]({},_0x536875,_0x1e4ad8[_0xbeed('0x3f')]);var _0x9b1fb6={'where':_0x536875[_0xbeed('0x3b')]};return db[_0xbeed('0x40')]['count'](_0x9b1fb6)[_0xbeed('0x26')](function(_0xe0e3ec){_0xbff25['count']=_0xe0e3ec;if(_0x1e4ad8[_0xbeed('0x32')]['includeAll']){_0x536875[_0xbeed('0x41')]=[{'all':!![]}];}return db[_0xbeed('0x40')][_0xbeed('0x42')](_0x536875);})[_0xbeed('0x26')](function(_0x3c6f9d){_0xbff25[_0xbeed('0x43')]=_0x3c6f9d;return _0xbff25;})[_0xbeed('0x26')](respondWithFilteredResult(_0x5b6f9e,_0x536875))['catch'](handleError(_0x5b6f9e,null));};exports[_0xbeed('0x44')]=function(_0x2face2,_0x41713a){var _0x2637f6={'raw':![],'where':{'id':_0x2face2[_0xbeed('0x45')]['id']}},_0x3c920c={};_0x3c920c['model']=_[_0xbeed('0x31')](db[_0xbeed('0x40')]['rawAttributes']);_0x3c920c[_0xbeed('0x32')]=_[_0xbeed('0x31')](_0x2face2[_0xbeed('0x32')]);_0x3c920c[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x3c920c[_0xbeed('0x30')],_0x3c920c['query']);_0x2637f6[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x3c920c[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x2face2[_0xbeed('0x32')]['fields']));_0x2637f6['attributes']=_0x2637f6[_0xbeed('0x34')][_0xbeed('0x37')]?_0x2637f6[_0xbeed('0x34')]:_0x3c920c[_0xbeed('0x30')];if(_0x2face2['query'][_0xbeed('0x46')]){_0x2637f6[_0xbeed('0x41')]=[{'all':!![]}];}_0x2637f6=_['merge']({},_0x2637f6,_0x2face2[_0xbeed('0x3f')]);return db[_0xbeed('0x40')]['find'](_0x2637f6)['then'](handleEntityNotFound(_0x41713a,null))[_0xbeed('0x26')](respondWithResult(_0x41713a,null))[_0xbeed('0x47')](handleError(_0x41713a,null));};exports['create']=function(_0x3674b6,_0x135501){return db[_0xbeed('0x40')][_0xbeed('0x48')](_0x3674b6[_0xbeed('0x49')],{})[_0xbeed('0x26')](respondWithResult(_0x135501,0xc9))[_0xbeed('0x47')](handleError(_0x135501,null));};exports['update']=function(_0xd47f78,_0x4a6814){if(_0xd47f78[_0xbeed('0x49')]['id']){delete _0xd47f78[_0xbeed('0x49')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0xd47f78[_0xbeed('0x45')]['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x4a6814,null))['then'](saveUpdates(_0xd47f78[_0xbeed('0x49')],null))['then'](respondWithResult(_0x4a6814,null))[_0xbeed('0x47')](handleError(_0x4a6814,null));};exports[_0xbeed('0x27')]=function(_0x151d0e,_0x2cbe2a){return db['SugarcrmConfiguration'][_0xbeed('0x4a')]({'where':{'id':_0x151d0e['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x2cbe2a,null))[_0xbeed('0x26')](removeEntity(_0x2cbe2a,null))[_0xbeed('0x47')](handleError(_0x2cbe2a,null));};exports[_0xbeed('0x4b')]=function(_0x19ef42,_0x29b331,_0x5db8da){var _0x456389={};var _0x1b7476={};var _0x407876;var _0x531139;return db['SugarcrmConfiguration'][_0xbeed('0x4c')]({'where':{'id':_0x19ef42[_0xbeed('0x45')]['id']}})['then'](handleEntityNotFound(_0x29b331,null))[_0xbeed('0x26')](function(_0x373d7c){if(_0x373d7c){_0x407876=_0x373d7c;_0x1b7476[_0xbeed('0x30')]=_[_0xbeed('0x31')](db['SugarcrmField'][_0xbeed('0x2d')]);_0x1b7476['query']=_[_0xbeed('0x31')](_0x19ef42[_0xbeed('0x32')]);_0x1b7476[_0xbeed('0x33')]=_['intersection'](_0x1b7476[_0xbeed('0x30')],_0x1b7476[_0xbeed('0x32')]);_0x456389[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x1b7476[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x19ef42[_0xbeed('0x32')]['fields']));_0x456389[_0xbeed('0x34')]=_0x456389[_0xbeed('0x34')][_0xbeed('0x37')]?_0x456389[_0xbeed('0x34')]:_0x1b7476[_0xbeed('0x30')];_0x456389[_0xbeed('0x4d')]=qs[_0xbeed('0x3a')](_0x19ef42[_0xbeed('0x32')]['sort']);_0x456389[_0xbeed('0x3b')]=qs[_0xbeed('0x33')](_['pick'](_0x19ef42[_0xbeed('0x32')],_0x1b7476[_0xbeed('0x33')]));if(_0x19ef42['query'][_0xbeed('0x4e')]){_0x456389[_0xbeed('0x3b')]=_[_0xbeed('0x3d')](_0x456389['where'],{'$or':_[_0xbeed('0x2c')](_0x456389[_0xbeed('0x34')],function(_0x2acf32){var _0x41ee51={};_0x41ee51[_0x2acf32]={'$like':'%'+_0x19ef42['query']['filter']+'%'};return _0x41ee51;})});}_0x456389=_[_0xbeed('0x3d')]({},_0x456389,_0x19ef42['options']);return _0x407876['getFields'](_0x456389);}})['then'](function(_0x5205eb){if(_0x5205eb){_0x531139=_0x5205eb[_0xbeed('0x37')];if(!_0x19ef42['query'][_0xbeed('0x38')](_0xbeed('0x39'))){_0x456389[_0xbeed('0x1f')]=qs['limit'](_0x19ef42[_0xbeed('0x32')]['limit']);_0x456389['offset']=qs[_0xbeed('0x20')](_0x19ef42[_0xbeed('0x32')][_0xbeed('0x20')]);}return _0x407876[_0xbeed('0x4b')](_0x456389);}})[_0xbeed('0x26')](function(_0x4564af){if(_0x4564af){return _0x4564af?{'count':_0x531139,'rows':_0x4564af}:null;}})[_0xbeed('0x26')](respondWithResult(_0x29b331,null))[_0xbeed('0x47')](handleError(_0x29b331,null));};exports[_0xbeed('0x4f')]=function(_0x262a9f,_0x2b14d3,_0x1bc2ac){var _0x34d4e6={};var _0x60afad={};var _0x2e0183;var _0x8bda8;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x262a9f['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x2b14d3,null))['then'](function(_0x40fc39){if(_0x40fc39){_0x2e0183=_0x40fc39;_0x60afad['model']=_['keys'](db[_0xbeed('0x50')][_0xbeed('0x2d')]);_0x60afad[_0xbeed('0x32')]=_['keys'](_0x262a9f[_0xbeed('0x32')]);_0x60afad[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x60afad[_0xbeed('0x30')],_0x60afad[_0xbeed('0x32')]);_0x34d4e6[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x60afad[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x262a9f['query'][_0xbeed('0x36')]));_0x34d4e6[_0xbeed('0x34')]=_0x34d4e6[_0xbeed('0x34')][_0xbeed('0x37')]?_0x34d4e6[_0xbeed('0x34')]:_0x60afad['model'];_0x34d4e6[_0xbeed('0x4d')]=qs[_0xbeed('0x3a')](_0x262a9f['query'][_0xbeed('0x3a')]);_0x34d4e6[_0xbeed('0x3b')]=qs[_0xbeed('0x33')](_[_0xbeed('0x3c')](_0x262a9f[_0xbeed('0x32')],_0x60afad['filters']));if(_0x262a9f[_0xbeed('0x32')]['filter']){_0x34d4e6[_0xbeed('0x3b')]=_['merge'](_0x34d4e6[_0xbeed('0x3b')],{'$or':_[_0xbeed('0x2c')](_0x34d4e6[_0xbeed('0x34')],function(_0x3b969b){var _0x1994a9={};_0x1994a9[_0x3b969b]={'$like':'%'+_0x262a9f[_0xbeed('0x32')][_0xbeed('0x4e')]+'%'};return _0x1994a9;})});}_0x34d4e6=_['merge']({},_0x34d4e6,_0x262a9f['options']);return _0x2e0183['getSubjects'](_0x34d4e6);}})[_0xbeed('0x26')](function(_0x10c846){if(_0x10c846){_0x8bda8=_0x10c846[_0xbeed('0x37')];if(!_0x262a9f[_0xbeed('0x32')]['hasOwnProperty'](_0xbeed('0x39'))){_0x34d4e6[_0xbeed('0x1f')]=qs[_0xbeed('0x1f')](_0x262a9f[_0xbeed('0x32')][_0xbeed('0x1f')]);_0x34d4e6[_0xbeed('0x20')]=qs[_0xbeed('0x20')](_0x262a9f[_0xbeed('0x32')]['offset']);}return _0x2e0183[_0xbeed('0x4f')](_0x34d4e6);}})[_0xbeed('0x26')](function(_0x5ab2a9){if(_0x5ab2a9){return _0x5ab2a9?{'count':_0x8bda8,'rows':_0x5ab2a9}:null;}})[_0xbeed('0x26')](respondWithResult(_0x2b14d3,null))['catch'](handleError(_0x2b14d3,null));};exports['getDescriptions']=function(_0x4a07a9,_0x33d74b,_0x21055d){var _0x238af3={};var _0x40289b={};var _0x24e061;var _0x372df5;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x4a07a9['params']['id']}})[_0xbeed('0x26')](handleEntityNotFound(_0x33d74b,null))[_0xbeed('0x26')](function(_0x43d1f5){if(_0x43d1f5){_0x24e061=_0x43d1f5;_0x40289b['model']=_[_0xbeed('0x31')](db[_0xbeed('0x50')][_0xbeed('0x2d')]);_0x40289b[_0xbeed('0x32')]=_[_0xbeed('0x31')](_0x4a07a9[_0xbeed('0x32')]);_0x40289b[_0xbeed('0x33')]=_[_0xbeed('0x35')](_0x40289b[_0xbeed('0x30')],_0x40289b[_0xbeed('0x32')]);_0x238af3[_0xbeed('0x34')]=_[_0xbeed('0x35')](_0x40289b[_0xbeed('0x30')],qs[_0xbeed('0x36')](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x36')]));_0x238af3[_0xbeed('0x34')]=_0x238af3[_0xbeed('0x34')][_0xbeed('0x37')]?_0x238af3[_0xbeed('0x34')]:_0x40289b['model'];_0x238af3[_0xbeed('0x4d')]=qs['sort'](_0x4a07a9[_0xbeed('0x32')]['sort']);_0x238af3[_0xbeed('0x3b')]=qs['filters'](_[_0xbeed('0x3c')](_0x4a07a9[_0xbeed('0x32')],_0x40289b[_0xbeed('0x33')]));if(_0x4a07a9['query'][_0xbeed('0x4e')]){_0x238af3['where']=_[_0xbeed('0x3d')](_0x238af3['where'],{'$or':_[_0xbeed('0x2c')](_0x238af3[_0xbeed('0x34')],function(_0x85503b){var _0x17f7c4={};_0x17f7c4[_0x85503b]={'$like':'%'+_0x4a07a9['query']['filter']+'%'};return _0x17f7c4;})});}_0x238af3=_[_0xbeed('0x3d')]({},_0x238af3,_0x4a07a9[_0xbeed('0x3f')]);return _0x24e061[_0xbeed('0x51')](_0x238af3);}})[_0xbeed('0x26')](function(_0x1f2232){if(_0x1f2232){_0x372df5=_0x1f2232[_0xbeed('0x37')];if(!_0x4a07a9[_0xbeed('0x32')]['hasOwnProperty'](_0xbeed('0x39'))){_0x238af3['limit']=qs[_0xbeed('0x1f')](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x1f')]);_0x238af3['offset']=qs['offset'](_0x4a07a9[_0xbeed('0x32')][_0xbeed('0x20')]);}return _0x24e061['getDescriptions'](_0x238af3);}})[_0xbeed('0x26')](function(_0x5c5bc1){if(_0x5c5bc1){return _0x5c5bc1?{'count':_0x372df5,'rows':_0x5c5bc1}:null;}})['then'](respondWithResult(_0x33d74b,null))[_0xbeed('0x47')](handleError(_0x33d74b,null));};
\ No newline at end of file
index e0215c5..ed371a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856d=['int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration'];(function(_0x12aaee,_0x5bf50c){var _0x37c350=function(_0x182775){while(--_0x182775){_0x12aaee['push'](_0x12aaee['shift']());}};_0x37c350(++_0x5bf50c);}(_0x856d,0x187));var _0xd856=function(_0x5ee587,_0x49fd8e){_0x5ee587=_0x5ee587-0x0;var _0x17254a=_0x856d[_0x5ee587];return _0x17254a;};'use strict';var _=require(_0xd856('0x0'));var util=require(_0xd856('0x1'));var logger=require(_0xd856('0x2'))(_0xd856('0x3'));var moment=require(_0xd856('0x4'));var BPromise=require(_0xd856('0x5'));var rp=require(_0xd856('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd856('0x7'));var config=require(_0xd856('0x8'));var attributes=require(_0xd856('0x9'));module[_0xd856('0xa')]=function(_0x973b36,_0x13d864){return _0x973b36['define'](_0xd856('0xb'),attributes,{'tableName':_0xd856('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ac4=['../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3bb12c,_0xb8b0ea){var _0x306928=function(_0x414a15){while(--_0x414a15){_0x3bb12c['push'](_0x3bb12c['shift']());}};_0x306928(++_0xb8b0ea);}(_0x6ac4,0x11c));var _0x46ac=function(_0x5de997,_0x4191b9){_0x5de997=_0x5de997-0x0;var _0x37106a=_0x6ac4[_0x5de997];return _0x37106a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46ac('0x0'))(_0x46ac('0x1'));var moment=require('moment');var BPromise=require(_0x46ac('0x2'));var rp=require(_0x46ac('0x3'));var fs=require('fs');var path=require(_0x46ac('0x4'));var rimraf=require(_0x46ac('0x5'));var config=require(_0x46ac('0x6'));var attributes=require(_0x46ac('0x7'));module[_0x46ac('0x8')]=function(_0x42b2e1,_0x570c07){return _0x42b2e1[_0x46ac('0x9')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fc0f154..74cfbd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f01=['rpc','client','then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x3f01,0xfa));var _0x13f0=function(_0x5a92db,_0x576bed){_0x5a92db=_0x5a92db-0x0;var _0x19f449=_0x3f01[_0x5a92db];return _0x19f449;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x13f0('0x0'));var BPromise=require(_0x13f0('0x1'));var rs=require(_0x13f0('0x2'));var fs=require('fs');var Redis=require(_0x13f0('0x3'));var db=require(_0x13f0('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x13f0('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x13f0('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x775e72,_0x4d63d6,_0x8913df){return new BPromise(function(_0xf1b5d1,_0x400916){return client['request'](_0x775e72,_0x8913df)[_0x13f0('0x7')](function(_0x58017e){logger[_0x13f0('0x8')](_0x13f0('0x9'),_0x4d63d6,'request\x20sent');logger[_0x13f0('0xa')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x4d63d6,_0x13f0('0xb'),JSON['stringify'](_0x58017e));if(_0x58017e[_0x13f0('0xc')]){if(_0x58017e['error'][_0x13f0('0xd')]===0x1f4){logger[_0x13f0('0xc')](_0x13f0('0x9'),_0x4d63d6,_0x58017e['error']['message']);return _0x400916(_0x58017e[_0x13f0('0xc')][_0x13f0('0xe')]);}logger['error'](_0x13f0('0x9'),_0x4d63d6,_0x58017e[_0x13f0('0xc')][_0x13f0('0xe')]);return _0xf1b5d1(_0x58017e['error'][_0x13f0('0xe')]);}else{logger[_0x13f0('0x8')](_0x13f0('0x9'),_0x4d63d6,_0x13f0('0xb'));_0xf1b5d1(_0x58017e[_0x13f0('0xf')][_0x13f0('0xe')]);}})[_0x13f0('0x10')](function(_0x392d39){logger[_0x13f0('0xc')](_0x13f0('0x9'),_0x4d63d6,_0x392d39);_0x400916(_0x392d39);});});}
\ No newline at end of file
+var _0xcd6f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','SugarcrmConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x41dcf7,_0x4d877a){var _0x780b1f=function(_0x69c215){while(--_0x69c215){_0x41dcf7['push'](_0x41dcf7['shift']());}};_0x780b1f(++_0x4d877a);}(_0xcd6f,0x182));var _0xfcd6=function(_0x1892f2,_0x1cb5f7){_0x1892f2=_0x1892f2-0x0;var _0x5a8d75=_0xcd6f[_0x1892f2];return _0x5a8d75;};'use strict';var _=require(_0xfcd6('0x0'));var util=require(_0xfcd6('0x1'));var moment=require(_0xfcd6('0x2'));var BPromise=require('bluebird');var rs=require(_0xfcd6('0x3'));var fs=require('fs');var Redis=require(_0xfcd6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcd6('0x5'));var logger=require(_0xfcd6('0x6'))(_0xfcd6('0x7'));var config=require(_0xfcd6('0x8'));var jayson=require(_0xfcd6('0x9'));var client=jayson[_0xfcd6('0xa')][_0xfcd6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x414202,_0x269afe,_0x467a1b){return new BPromise(function(_0x58f966,_0x7cc6b5){return client[_0xfcd6('0xc')](_0x414202,_0x467a1b)['then'](function(_0x3d16dc){logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0xfcd6('0xd'));logger[_0xfcd6('0xe')](_0xfcd6('0xf'),_0x269afe,'request\x20sent',JSON['stringify'](_0x3d16dc));if(_0x3d16dc[_0xfcd6('0x10')]){if(_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x11')]===0x1f4){logger[_0xfcd6('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x12')]);return _0x7cc6b5(_0x3d16dc[_0xfcd6('0x10')][_0xfcd6('0x12')]);}logger[_0xfcd6('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x269afe,_0x3d16dc[_0xfcd6('0x10')]['message']);return _0x58f966(_0x3d16dc['error'][_0xfcd6('0x12')]);}else{logger[_0xfcd6('0x13')](_0xfcd6('0x14'),_0x269afe,'request\x20sent');_0x58f966(_0x3d16dc[_0xfcd6('0x15')][_0xfcd6('0x12')]);}})[_0xfcd6('0x16')](function(_0x2388bc){logger[_0xfcd6('0x10')](_0xfcd6('0x14'),_0x269afe,_0x2388bc);_0x7cc6b5(_0x2388bc);});});}
\ No newline at end of file
index 7f0cca1..7287ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95e5=['show','post','create','put','delete','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x1bf0e1,_0x3fdf38){var _0x5ce54f=function(_0x5e9b6e){while(--_0x5e9b6e){_0x1bf0e1['push'](_0x1bf0e1['shift']());}};_0x5ce54f(++_0x3fdf38);}(_0x95e5,0x1b7));var _0x595e=function(_0x29be62,_0x21b4e5){_0x29be62=_0x29be62-0x0;var _0x2003a9=_0x95e5[_0x29be62];return _0x2003a9;};'use strict';var multer=require(_0x595e('0x0'));var util=require(_0x595e('0x1'));var path=require(_0x595e('0x2'));var timeout=require(_0x595e('0x3'));var express=require(_0x595e('0x4'));var router=express[_0x595e('0x5')]();var fs_extra=require(_0x595e('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x595e('0x7'));var config=require('../../config/environment');var controller=require('./intSugarcrmField.controller');router[_0x595e('0x8')]('/',auth[_0x595e('0x9')](),controller[_0x595e('0xa')]);router['get']('/:id',auth[_0x595e('0x9')](),controller[_0x595e('0xb')]);router[_0x595e('0xc')]('/',auth[_0x595e('0x9')](),controller[_0x595e('0xd')]);router[_0x595e('0xe')]('/:id',auth[_0x595e('0x9')](),controller['update']);router[_0x595e('0xf')](_0x595e('0x10'),auth[_0x595e('0x9')](),controller['destroy']);module[_0x595e('0x11')]=router;
\ No newline at end of file
+var _0x7fd3=['/:id','show','post','create','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intSugarcrmField.controller','get','isAuthenticated','index'];(function(_0x254ea6,_0x226eee){var _0xe70f55=function(_0x1a4673){while(--_0x1a4673){_0x254ea6['push'](_0x254ea6['shift']());}};_0xe70f55(++_0x226eee);}(_0x7fd3,0x1a4));var _0x37fd=function(_0xd2b324,_0x46a4f6){_0xd2b324=_0xd2b324-0x0;var _0x50b9b0=_0x7fd3[_0xd2b324];return _0x50b9b0;};'use strict';var multer=require(_0x37fd('0x0'));var util=require(_0x37fd('0x1'));var path=require(_0x37fd('0x2'));var timeout=require(_0x37fd('0x3'));var express=require(_0x37fd('0x4'));var router=express[_0x37fd('0x5')]();var fs_extra=require(_0x37fd('0x6'));var auth=require(_0x37fd('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x37fd('0x8'));router[_0x37fd('0x9')]('/',auth[_0x37fd('0xa')](),controller[_0x37fd('0xb')]);router['get'](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller[_0x37fd('0xd')]);router[_0x37fd('0xe')]('/',auth[_0x37fd('0xa')](),controller[_0x37fd('0xf')]);router[_0x37fd('0x10')](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller['update']);router[_0x37fd('0x11')](_0x37fd('0xc'),auth[_0x37fd('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 22c6f82..f591d36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8502=['string','variable','customVariable','keyValue','picklist','STRING','ENUM','sequelize','exports'];(function(_0x2983fa,_0x3e9794){var _0x2be0d5=function(_0xabc2fe){while(--_0xabc2fe){_0x2983fa['push'](_0x2983fa['shift']());}};_0x2be0d5(++_0x3e9794);}(_0x8502,0x8e));var _0x2850=function(_0x252328,_0x4c22f0){_0x252328=_0x252328-0x0;var _0xaa85b7=_0x8502[_0x252328];return _0xaa85b7;};'use strict';var Sequelize=require(_0x2850('0x0'));module[_0x2850('0x1')]={'type':{'type':Sequelize['ENUM'](_0x2850('0x2'),_0x2850('0x3'),_0x2850('0x4'),_0x2850('0x5'),_0x2850('0x6')),'defaultValue':_0x2850('0x2')},'content':{'type':Sequelize[_0x2850('0x7')]},'key':{'type':Sequelize[_0x2850('0x7')]},'keyType':{'type':Sequelize[_0x2850('0x8')](_0x2850('0x2'),_0x2850('0x3'),_0x2850('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2850('0x7')]},'nameField':{'type':Sequelize[_0x2850('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc4bb=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x5b5f97,_0x46b15e){var _0x2f6001=function(_0x268878){while(--_0x268878){_0x5b5f97['push'](_0x5b5f97['shift']());}};_0x2f6001(++_0x46b15e);}(_0xc4bb,0xc4));var _0xbc4b=function(_0x290bc7,_0x985ad7){_0x290bc7=_0x290bc7-0x0;var _0x309e89=_0xc4bb[_0x290bc7];return _0x309e89;};'use strict';var Sequelize=require(_0xbc4b('0x0'));module[_0xbc4b('0x1')]={'type':{'type':Sequelize[_0xbc4b('0x2')](_0xbc4b('0x3'),_0xbc4b('0x4'),_0xbc4b('0x5'),_0xbc4b('0x6'),_0xbc4b('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xbc4b('0x8')]},'key':{'type':Sequelize[_0xbc4b('0x8')]},'keyType':{'type':Sequelize[_0xbc4b('0x2')]('string',_0xbc4b('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xbc4b('0x8')]},'idField':{'type':Sequelize[_0xbc4b('0x8')]},'nameField':{'type':Sequelize[_0xbc4b('0x8')]},'customField':{'type':Sequelize[_0xbc4b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b025e5b..f945655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b5=['undefined','limit','count','json','apply','reject','update','destroy','then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','SugarcrmField','includeAll','include','findAll','show','params','length','options','catch','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset'];(function(_0x481a3c,_0x187121){var _0x4284ce=function(_0x16b3fe){while(--_0x16b3fe){_0x481a3c['push'](_0x481a3c['shift']());}};_0x4284ce(++_0x187121);}(_0xd3b5,0x1ec));var _0x5d3b=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xd3b5[_0x4c7fb5];return _0x2e10ac;};'use strict';var emlformat=require(_0x5d3b('0x0'));var rimraf=require(_0x5d3b('0x1'));var zipdir=require(_0x5d3b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d3b('0x3'));var moment=require(_0x5d3b('0x4'));var BPromise=require(_0x5d3b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x5d3b('0x6'));var ejs=require(_0x5d3b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5d3b('0x8'));var crypto=require(_0x5d3b('0x9'));var jsforce=require(_0x5d3b('0xa'));var deskjs=require(_0x5d3b('0xb'));var toCsv=require(_0x5d3b('0x6'));var querystring=require(_0x5d3b('0xc'));var Papa=require(_0x5d3b('0xd'));var Redis=require(_0x5d3b('0xe'));var authService=require(_0x5d3b('0xf'));var qs=require(_0x5d3b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d3b('0x11'));var logger=require(_0x5d3b('0x12'))(_0x5d3b('0x13'));var utils=require(_0x5d3b('0x14'));var config=require(_0x5d3b('0x15'));var licenseUtil=require(_0x5d3b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18f243,_0x7afdeb){_0x7afdeb=_0x7afdeb||0xcc;return function(_0x2407d1){if(_0x2407d1){return _0x18f243[_0x5d3b('0x17')](_0x7afdeb);}return _0x18f243[_0x5d3b('0x18')](_0x7afdeb)['end']();};}function respondWithResult(_0x497264,_0x51aabf){_0x51aabf=_0x51aabf||0xc8;return function(_0x4eaea7){if(_0x4eaea7){return _0x497264[_0x5d3b('0x18')](_0x51aabf)['json'](_0x4eaea7);}};}function respondWithFilteredResult(_0xfb5bfe,_0x2df70e){return function(_0x372fd2){if(_0x372fd2){var _0x29cdaa=typeof _0x2df70e[_0x5d3b('0x19')]===_0x5d3b('0x1a')&&typeof _0x2df70e[_0x5d3b('0x1b')]==='undefined';var _0x58703d=_0x372fd2[_0x5d3b('0x1c')];var _0x203a34=_0x29cdaa?0x0:_0x2df70e[_0x5d3b('0x19')];var _0x4319f5=_0x29cdaa?_0x372fd2[_0x5d3b('0x1c')]:_0x2df70e[_0x5d3b('0x19')]+_0x2df70e['limit'];var _0x2a0514;if(_0x4319f5>=_0x58703d){_0x4319f5=_0x58703d;_0x2a0514=0xc8;}else{_0x2a0514=0xce;}_0xfb5bfe[_0x5d3b('0x18')](_0x2a0514);return _0xfb5bfe['set']('Content-Range',_0x203a34+'-'+_0x4319f5+'/'+_0x58703d)[_0x5d3b('0x1d')](_0x372fd2);}return null;};}function patchUpdates(_0x516da2){return function(_0x266898){try{jsonpatch[_0x5d3b('0x1e')](_0x266898,_0x516da2,!![]);}catch(_0x46ebeb){return BPromise[_0x5d3b('0x1f')](_0x46ebeb);}return _0x266898['save']();};}function saveUpdates(_0x5e8aeb,_0x4cd273){return function(_0xa8003d){if(_0xa8003d){return _0xa8003d[_0x5d3b('0x20')](_0x5e8aeb)['then'](function(_0x495422){return _0x495422;});}return null;};}function removeEntity(_0x412790,_0x381e2d){return function(_0x7e73cb){if(_0x7e73cb){return _0x7e73cb[_0x5d3b('0x21')]()[_0x5d3b('0x22')](function(){_0x412790['status'](0xcc)[_0x5d3b('0x23')]();});}};}function handleEntityNotFound(_0x3e0e97,_0x541e24){return function(_0x498c28){if(!_0x498c28){_0x3e0e97['sendStatus'](0x194);}return _0x498c28;};}function handleError(_0xbe3fa3,_0x3c0dbc){_0x3c0dbc=_0x3c0dbc||0x1f4;return function(_0xa1b170){logger[_0x5d3b('0x24')](_0xa1b170[_0x5d3b('0x25')]);if(_0xa1b170[_0x5d3b('0x26')]){delete _0xa1b170[_0x5d3b('0x26')];}_0xbe3fa3[_0x5d3b('0x18')](_0x3c0dbc)[_0x5d3b('0x27')](_0xa1b170);};}exports[_0x5d3b('0x28')]=function(_0x4a3f3f,_0x10c802){var _0x300a50={},_0x177f5e={},_0x679894={'count':0x0,'rows':[]};var _0x336d04=_[_0x5d3b('0x29')](db['SugarcrmField'][_0x5d3b('0x2a')],function(_0x591479){return{'name':_0x591479[_0x5d3b('0x2b')],'type':_0x591479[_0x5d3b('0x2c')][_0x5d3b('0x2d')]};});_0x177f5e['model']=_[_0x5d3b('0x29')](_0x336d04,_0x5d3b('0x26'));_0x177f5e['query']=_[_0x5d3b('0x2e')](_0x4a3f3f['query']);_0x177f5e[_0x5d3b('0x2f')]=_[_0x5d3b('0x30')](_0x177f5e[_0x5d3b('0x31')],_0x177f5e[_0x5d3b('0x32')]);_0x300a50[_0x5d3b('0x33')]=_[_0x5d3b('0x30')](_0x177f5e[_0x5d3b('0x31')],qs[_0x5d3b('0x34')](_0x4a3f3f['query'][_0x5d3b('0x34')]));_0x300a50[_0x5d3b('0x33')]=_0x300a50[_0x5d3b('0x33')]['length']?_0x300a50[_0x5d3b('0x33')]:_0x177f5e['model'];if(!_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x35')](_0x5d3b('0x36'))){_0x300a50[_0x5d3b('0x1b')]=qs[_0x5d3b('0x1b')](_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x1b')]);_0x300a50['offset']=qs['offset'](_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x19')]);}_0x300a50[_0x5d3b('0x37')]=qs[_0x5d3b('0x38')](_0x4a3f3f[_0x5d3b('0x32')]['sort']);_0x300a50['where']=qs[_0x5d3b('0x2f')](_[_0x5d3b('0x39')](_0x4a3f3f[_0x5d3b('0x32')],_0x177f5e[_0x5d3b('0x2f')]),_0x336d04);if(_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x3a')]){_0x300a50[_0x5d3b('0x3b')]=_[_0x5d3b('0x3c')](_0x300a50[_0x5d3b('0x3b')],{'$or':_[_0x5d3b('0x29')](_0x336d04,function(_0x108db0){if(_0x108db0[_0x5d3b('0x2c')]!==_0x5d3b('0x3d')){var _0x28732d={};_0x28732d[_0x108db0[_0x5d3b('0x26')]]={'$like':'%'+_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x3a')]+'%'};return _0x28732d;}})});}_0x300a50=_[_0x5d3b('0x3c')]({},_0x300a50,_0x4a3f3f['options']);var _0xf8887d={'where':_0x300a50['where']};return db[_0x5d3b('0x3e')]['count'](_0xf8887d)[_0x5d3b('0x22')](function(_0x35204c){_0x679894[_0x5d3b('0x1c')]=_0x35204c;if(_0x4a3f3f[_0x5d3b('0x32')][_0x5d3b('0x3f')]){_0x300a50[_0x5d3b('0x40')]=[{'all':!![]}];}return db[_0x5d3b('0x3e')][_0x5d3b('0x41')](_0x300a50);})[_0x5d3b('0x22')](function(_0x280597){_0x679894['rows']=_0x280597;return _0x679894;})[_0x5d3b('0x22')](respondWithFilteredResult(_0x10c802,_0x300a50))['catch'](handleError(_0x10c802,null));};exports[_0x5d3b('0x42')]=function(_0x36fdbb,_0x207fbf){var _0x249ee2={'raw':!![],'where':{'id':_0x36fdbb[_0x5d3b('0x43')]['id']}},_0x17c01d={};_0x17c01d[_0x5d3b('0x31')]=_[_0x5d3b('0x2e')](db[_0x5d3b('0x3e')][_0x5d3b('0x2a')]);_0x17c01d[_0x5d3b('0x32')]=_[_0x5d3b('0x2e')](_0x36fdbb[_0x5d3b('0x32')]);_0x17c01d[_0x5d3b('0x2f')]=_[_0x5d3b('0x30')](_0x17c01d[_0x5d3b('0x31')],_0x17c01d[_0x5d3b('0x32')]);_0x249ee2[_0x5d3b('0x33')]=_[_0x5d3b('0x30')](_0x17c01d[_0x5d3b('0x31')],qs[_0x5d3b('0x34')](_0x36fdbb[_0x5d3b('0x32')][_0x5d3b('0x34')]));_0x249ee2[_0x5d3b('0x33')]=_0x249ee2[_0x5d3b('0x33')][_0x5d3b('0x44')]?_0x249ee2[_0x5d3b('0x33')]:_0x17c01d['model'];if(_0x36fdbb[_0x5d3b('0x32')][_0x5d3b('0x3f')]){_0x249ee2[_0x5d3b('0x40')]=[{'all':!![]}];}_0x249ee2=_[_0x5d3b('0x3c')]({},_0x249ee2,_0x36fdbb[_0x5d3b('0x45')]);return db['SugarcrmField']['find'](_0x249ee2)[_0x5d3b('0x22')](handleEntityNotFound(_0x207fbf,null))['then'](respondWithResult(_0x207fbf,null))[_0x5d3b('0x46')](handleError(_0x207fbf,null));};exports['create']=function(_0x230cbe,_0x5c943f){return db[_0x5d3b('0x3e')][_0x5d3b('0x47')](_0x230cbe['body'],{})[_0x5d3b('0x22')](respondWithResult(_0x5c943f,0xc9))[_0x5d3b('0x46')](handleError(_0x5c943f,null));};exports[_0x5d3b('0x20')]=function(_0x30bdd1,_0x2222fb){if(_0x30bdd1[_0x5d3b('0x48')]['id']){delete _0x30bdd1['body']['id'];}return db[_0x5d3b('0x3e')][_0x5d3b('0x49')]({'where':{'id':_0x30bdd1[_0x5d3b('0x43')]['id']}})[_0x5d3b('0x22')](handleEntityNotFound(_0x2222fb,null))['then'](saveUpdates(_0x30bdd1['body'],null))[_0x5d3b('0x22')](respondWithResult(_0x2222fb,null))[_0x5d3b('0x46')](handleError(_0x2222fb,null));};exports[_0x5d3b('0x21')]=function(_0x20512a,_0x46a1b2){return db[_0x5d3b('0x3e')][_0x5d3b('0x49')]({'where':{'id':_0x20512a[_0x5d3b('0x43')]['id']}})[_0x5d3b('0x22')](handleEntityNotFound(_0x46a1b2,null))[_0x5d3b('0x22')](removeEntity(_0x46a1b2,null))[_0x5d3b('0x46')](handleError(_0x46a1b2,null));};
\ No newline at end of file
+var _0x58b2=['findAll','rows','show','params','keys','rawAttributes','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','count','set','Content-Range','json','reject','save','update','destroy','then','status','error','stack','name','index','map','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','SugarcrmField'];(function(_0x26e2ec,_0x3478cd){var _0x58bc0f=function(_0x5ab927){while(--_0x5ab927){_0x26e2ec['push'](_0x26e2ec['shift']());}};_0x58bc0f(++_0x3478cd);}(_0x58b2,0xf4));var _0x258b=function(_0x353247,_0x1466f9){_0x353247=_0x353247-0x0;var _0x45886e=_0x58b2[_0x353247];return _0x45886e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x258b('0x0'));var zipdir=require(_0x258b('0x1'));var jsonpatch=require(_0x258b('0x2'));var rp=require(_0x258b('0x3'));var moment=require(_0x258b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x258b('0x5'));var util=require(_0x258b('0x6'));var path=require(_0x258b('0x7'));var sox=require(_0x258b('0x8'));var csv=require(_0x258b('0x9'));var ejs=require(_0x258b('0xa'));var fs=require('fs');var fs_extra=require(_0x258b('0xb'));var _=require(_0x258b('0xc'));var squel=require(_0x258b('0xd'));var crypto=require(_0x258b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x258b('0x9'));var querystring=require(_0x258b('0xf'));var Papa=require(_0x258b('0x10'));var Redis=require('ioredis');var authService=require(_0x258b('0x11'));var qs=require(_0x258b('0x12'));var as=require(_0x258b('0x13'));var hardwareService=require(_0x258b('0x14'));var logger=require(_0x258b('0x15'))(_0x258b('0x16'));var utils=require(_0x258b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x258b('0x18'));var db=require(_0x258b('0x19'))['db'];function respondWithStatusCode(_0x26263c,_0x513c59){_0x513c59=_0x513c59||0xcc;return function(_0x1da653){if(_0x1da653){return _0x26263c[_0x258b('0x1a')](_0x513c59);}return _0x26263c['status'](_0x513c59)['end']();};}function respondWithResult(_0x41282c,_0x36826c){_0x36826c=_0x36826c||0xc8;return function(_0x2ebb64){if(_0x2ebb64){return _0x41282c['status'](_0x36826c)['json'](_0x2ebb64);}};}function respondWithFilteredResult(_0x2b31d6,_0x24ec94){return function(_0x2ea67a){if(_0x2ea67a){var _0x432c5a=typeof _0x24ec94[_0x258b('0x1b')]===_0x258b('0x1c')&&typeof _0x24ec94['limit']===_0x258b('0x1c');var _0x42509b=_0x2ea67a[_0x258b('0x1d')];var _0x17a23c=_0x432c5a?0x0:_0x24ec94[_0x258b('0x1b')];var _0xc8dbeb=_0x432c5a?_0x2ea67a['count']:_0x24ec94[_0x258b('0x1b')]+_0x24ec94['limit'];var _0x518027;if(_0xc8dbeb>=_0x42509b){_0xc8dbeb=_0x42509b;_0x518027=0xc8;}else{_0x518027=0xce;}_0x2b31d6['status'](_0x518027);return _0x2b31d6[_0x258b('0x1e')](_0x258b('0x1f'),_0x17a23c+'-'+_0xc8dbeb+'/'+_0x42509b)[_0x258b('0x20')](_0x2ea67a);}return null;};}function patchUpdates(_0x12fbb1){return function(_0x1ffcd5){try{jsonpatch['apply'](_0x1ffcd5,_0x12fbb1,!![]);}catch(_0x93134d){return BPromise[_0x258b('0x21')](_0x93134d);}return _0x1ffcd5[_0x258b('0x22')]();};}function saveUpdates(_0x47ca2e,_0x4d5a49){return function(_0x3cebba){if(_0x3cebba){return _0x3cebba[_0x258b('0x23')](_0x47ca2e)['then'](function(_0x7c4817){return _0x7c4817;});}return null;};}function removeEntity(_0xdaba00,_0x3fcd71){return function(_0x47d2f2){if(_0x47d2f2){return _0x47d2f2[_0x258b('0x24')]()[_0x258b('0x25')](function(){_0xdaba00[_0x258b('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5680c8,_0x4091af){return function(_0x4d20ac){if(!_0x4d20ac){_0x5680c8[_0x258b('0x1a')](0x194);}return _0x4d20ac;};}function handleError(_0x489979,_0x5891b2){_0x5891b2=_0x5891b2||0x1f4;return function(_0x29ac72){logger[_0x258b('0x27')](_0x29ac72[_0x258b('0x28')]);if(_0x29ac72[_0x258b('0x29')]){delete _0x29ac72[_0x258b('0x29')];}_0x489979[_0x258b('0x26')](_0x5891b2)['send'](_0x29ac72);};}exports[_0x258b('0x2a')]=function(_0x5e19b1,_0x5f3d96){var _0x13716b={},_0xb51e28={},_0x165453={'count':0x0,'rows':[]};var _0xa9af73=_[_0x258b('0x2b')](db['SugarcrmField']['rawAttributes'],function(_0x5cbaa1){return{'name':_0x5cbaa1[_0x258b('0x2c')],'type':_0x5cbaa1['type'][_0x258b('0x2d')]};});_0xb51e28[_0x258b('0x2e')]=_[_0x258b('0x2b')](_0xa9af73,_0x258b('0x29'));_0xb51e28[_0x258b('0x2f')]=_['keys'](_0x5e19b1['query']);_0xb51e28['filters']=_[_0x258b('0x30')](_0xb51e28[_0x258b('0x2e')],_0xb51e28[_0x258b('0x2f')]);_0x13716b[_0x258b('0x31')]=_[_0x258b('0x30')](_0xb51e28[_0x258b('0x2e')],qs[_0x258b('0x32')](_0x5e19b1[_0x258b('0x2f')][_0x258b('0x32')]));_0x13716b[_0x258b('0x31')]=_0x13716b[_0x258b('0x31')][_0x258b('0x33')]?_0x13716b[_0x258b('0x31')]:_0xb51e28[_0x258b('0x2e')];if(!_0x5e19b1[_0x258b('0x2f')][_0x258b('0x34')](_0x258b('0x35'))){_0x13716b[_0x258b('0x36')]=qs[_0x258b('0x36')](_0x5e19b1[_0x258b('0x2f')][_0x258b('0x36')]);_0x13716b[_0x258b('0x1b')]=qs['offset'](_0x5e19b1['query'][_0x258b('0x1b')]);}_0x13716b[_0x258b('0x37')]=qs[_0x258b('0x38')](_0x5e19b1[_0x258b('0x2f')]['sort']);_0x13716b['where']=qs[_0x258b('0x39')](_[_0x258b('0x3a')](_0x5e19b1['query'],_0xb51e28[_0x258b('0x39')]),_0xa9af73);if(_0x5e19b1[_0x258b('0x2f')][_0x258b('0x3b')]){_0x13716b[_0x258b('0x3c')]=_[_0x258b('0x3d')](_0x13716b[_0x258b('0x3c')],{'$or':_['map'](_0xa9af73,function(_0x47b5da){if(_0x47b5da[_0x258b('0x3e')]!==_0x258b('0x3f')){var _0x493669={};_0x493669[_0x47b5da['name']]={'$like':'%'+_0x5e19b1['query'][_0x258b('0x3b')]+'%'};return _0x493669;}})});}_0x13716b=_[_0x258b('0x3d')]({},_0x13716b,_0x5e19b1[_0x258b('0x40')]);var _0x51e172={'where':_0x13716b['where']};return db['SugarcrmField'][_0x258b('0x1d')](_0x51e172)[_0x258b('0x25')](function(_0x557a3d){_0x165453[_0x258b('0x1d')]=_0x557a3d;if(_0x5e19b1[_0x258b('0x2f')][_0x258b('0x41')]){_0x13716b[_0x258b('0x42')]=[{'all':!![]}];}return db[_0x258b('0x43')][_0x258b('0x44')](_0x13716b);})[_0x258b('0x25')](function(_0x256ddf){_0x165453[_0x258b('0x45')]=_0x256ddf;return _0x165453;})[_0x258b('0x25')](respondWithFilteredResult(_0x5f3d96,_0x13716b))['catch'](handleError(_0x5f3d96,null));};exports[_0x258b('0x46')]=function(_0x3e9d9a,_0x3086a6){var _0x425679={'raw':!![],'where':{'id':_0x3e9d9a[_0x258b('0x47')]['id']}},_0xccfca={};_0xccfca[_0x258b('0x2e')]=_[_0x258b('0x48')](db[_0x258b('0x43')][_0x258b('0x49')]);_0xccfca[_0x258b('0x2f')]=_['keys'](_0x3e9d9a[_0x258b('0x2f')]);_0xccfca[_0x258b('0x39')]=_[_0x258b('0x30')](_0xccfca[_0x258b('0x2e')],_0xccfca['query']);_0x425679['attributes']=_['intersection'](_0xccfca[_0x258b('0x2e')],qs[_0x258b('0x32')](_0x3e9d9a['query']['fields']));_0x425679[_0x258b('0x31')]=_0x425679[_0x258b('0x31')][_0x258b('0x33')]?_0x425679[_0x258b('0x31')]:_0xccfca[_0x258b('0x2e')];if(_0x3e9d9a[_0x258b('0x2f')][_0x258b('0x41')]){_0x425679[_0x258b('0x42')]=[{'all':!![]}];}_0x425679=_[_0x258b('0x3d')]({},_0x425679,_0x3e9d9a[_0x258b('0x40')]);return db['SugarcrmField'][_0x258b('0x4a')](_0x425679)[_0x258b('0x25')](handleEntityNotFound(_0x3086a6,null))[_0x258b('0x25')](respondWithResult(_0x3086a6,null))[_0x258b('0x4b')](handleError(_0x3086a6,null));};exports[_0x258b('0x4c')]=function(_0xb3049f,_0x2b55cf){return db[_0x258b('0x43')][_0x258b('0x4c')](_0xb3049f['body'],{})['then'](respondWithResult(_0x2b55cf,0xc9))['catch'](handleError(_0x2b55cf,null));};exports[_0x258b('0x23')]=function(_0x4d67ad,_0x555b54){if(_0x4d67ad[_0x258b('0x4d')]['id']){delete _0x4d67ad[_0x258b('0x4d')]['id'];}return db['SugarcrmField'][_0x258b('0x4a')]({'where':{'id':_0x4d67ad[_0x258b('0x47')]['id']}})[_0x258b('0x25')](handleEntityNotFound(_0x555b54,null))[_0x258b('0x25')](saveUpdates(_0x4d67ad[_0x258b('0x4d')],null))[_0x258b('0x25')](respondWithResult(_0x555b54,null))[_0x258b('0x4b')](handleError(_0x555b54,null));};exports[_0x258b('0x24')]=function(_0x406ef7,_0x189a57){return db[_0x258b('0x43')][_0x258b('0x4a')]({'where':{'id':_0x406ef7[_0x258b('0x47')]['id']}})['then'](handleEntityNotFound(_0x189a57,null))[_0x258b('0x25')](removeEntity(_0x189a57,null))[_0x258b('0x4b')](handleError(_0x189a57,null));};
\ No newline at end of file
index 4c158f0..b590062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3990=['define','SugarcrmField','sugarcrm_unique_index','FieldId','lodash','util','../../config/logger','api','bluebird','path','./intSugarcrmField.attributes'];(function(_0x445aa8,_0x1d9c16){var _0x5960f5=function(_0x44f9fc){while(--_0x44f9fc){_0x445aa8['push'](_0x445aa8['shift']());}};_0x5960f5(++_0x1d9c16);}(_0x3990,0x9e));var _0x0399=function(_0x3e5690,_0x495f56){_0x3e5690=_0x3e5690-0x0;var _0x1eb3ba=_0x3990[_0x3e5690];return _0x1eb3ba;};'use strict';var _=require(_0x0399('0x0'));var util=require(_0x0399('0x1'));var logger=require(_0x0399('0x2'))(_0x0399('0x3'));var moment=require('moment');var BPromise=require(_0x0399('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0399('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0399('0x6'));module['exports']=function(_0x172ed1,_0x566b37){return _0x172ed1[_0x0399('0x7')](_0x0399('0x8'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x0399('0x9'),'fields':['idField',_0x0399('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x29a3=['bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x29a3,0x160));var _0x329a=function(_0x3869fa,_0x16ef3f){_0x3869fa=_0x3869fa-0x0;var _0x209652=_0x29a3[_0x3869fa];return _0x209652;};'use strict';var _=require(_0x329a('0x0'));var util=require(_0x329a('0x1'));var logger=require(_0x329a('0x2'))(_0x329a('0x3'));var moment=require(_0x329a('0x4'));var BPromise=require(_0x329a('0x5'));var rp=require(_0x329a('0x6'));var fs=require('fs');var path=require(_0x329a('0x7'));var rimraf=require(_0x329a('0x8'));var config=require(_0x329a('0x9'));var attributes=require(_0x329a('0xa'));module[_0x329a('0xb')]=function(_0x5e7b22,_0x117624){return _0x5e7b22[_0x329a('0xc')](_0x329a('0xd'),attributes,{'tableName':_0x329a('0xe'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x329a('0xf'),_0x329a('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3a70f55..2477f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f90=['../../config/logger','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x228641,_0x25d636){var _0x5d5d78=function(_0x4d5c6c){while(--_0x4d5c6c){_0x228641['push'](_0x228641['shift']());}};_0x5d5d78(++_0x25d636);}(_0x4f90,0x1b3));var _0x04f9=function(_0x1a9e78,_0x180720){_0x1a9e78=_0x1a9e78-0x0;var _0x113e06=_0x4f90[_0x1a9e78];return _0x113e06;};'use strict';var _=require(_0x04f9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x04f9('0x1'));var rs=require(_0x04f9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x04f9('0x3'))['db'];var utils=require(_0x04f9('0x4'));var logger=require(_0x04f9('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x04f9('0x6'));var client=jayson[_0x04f9('0x7')][_0x04f9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x47e392,_0x3d1d50,_0x184c55){return new BPromise(function(_0x371fb9,_0x49c19d){return client[_0x04f9('0x9')](_0x47e392,_0x184c55)[_0x04f9('0xa')](function(_0x125c61){logger[_0x04f9('0xb')](_0x04f9('0xc'),_0x3d1d50,_0x04f9('0xd'));logger[_0x04f9('0xe')](_0x04f9('0xf'),_0x3d1d50,_0x04f9('0xd'),JSON['stringify'](_0x125c61));if(_0x125c61[_0x04f9('0x10')]){if(_0x125c61[_0x04f9('0x10')]['code']===0x1f4){logger[_0x04f9('0x10')](_0x04f9('0xc'),_0x3d1d50,_0x125c61[_0x04f9('0x10')][_0x04f9('0x11')]);return _0x49c19d(_0x125c61['error'][_0x04f9('0x11')]);}logger[_0x04f9('0x10')](_0x04f9('0xc'),_0x3d1d50,_0x125c61[_0x04f9('0x10')][_0x04f9('0x11')]);return _0x371fb9(_0x125c61[_0x04f9('0x10')][_0x04f9('0x11')]);}else{logger[_0x04f9('0xb')](_0x04f9('0xc'),_0x3d1d50,_0x04f9('0xd'));_0x371fb9(_0x125c61[_0x04f9('0x12')]['message']);}})[_0x04f9('0x13')](function(_0x48f627){logger[_0x04f9('0x10')](_0x04f9('0xc'),_0x3d1d50,_0x48f627);_0x49c19d(_0x48f627);});});}
\ No newline at end of file
+var _0x3389=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x48d218,_0x38ae7b){var _0x5d86c7=function(_0x362ae9){while(--_0x362ae9){_0x48d218['push'](_0x48d218['shift']());}};_0x5d86c7(++_0x38ae7b);}(_0x3389,0x136));var _0x9338=function(_0x29274e,_0xd53378){_0x29274e=_0x29274e-0x0;var _0x31a3c9=_0x3389[_0x29274e];return _0x31a3c9;};'use strict';var _=require(_0x9338('0x0'));var util=require(_0x9338('0x1'));var moment=require(_0x9338('0x2'));var BPromise=require(_0x9338('0x3'));var rs=require(_0x9338('0x4'));var fs=require('fs');var Redis=require(_0x9338('0x5'));var db=require(_0x9338('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9338('0x7'));var config=require('../../config/environment');var jayson=require(_0x9338('0x8'));var client=jayson[_0x9338('0x9')][_0x9338('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e6e24,_0x523913,_0x5cad3e){return new BPromise(function(_0x4bbf50,_0x14f0dc){return client[_0x9338('0xb')](_0x4e6e24,_0x5cad3e)[_0x9338('0xc')](function(_0x5600da){logger['info'](_0x9338('0xd'),_0x523913,_0x9338('0xe'));logger[_0x9338('0xf')](_0x9338('0x10'),_0x523913,'request\x20sent',JSON[_0x9338('0x11')](_0x5600da));if(_0x5600da[_0x9338('0x12')]){if(_0x5600da[_0x9338('0x12')]['code']===0x1f4){logger['error'](_0x9338('0xd'),_0x523913,_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);return _0x14f0dc(_0x5600da['error'][_0x9338('0x13')]);}logger[_0x9338('0x12')](_0x9338('0xd'),_0x523913,_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);return _0x4bbf50(_0x5600da[_0x9338('0x12')][_0x9338('0x13')]);}else{logger['info']('SugarcrmField,\x20%s,\x20%s',_0x523913,_0x9338('0xe'));_0x4bbf50(_0x5600da[_0x9338('0x14')]['message']);}})[_0x9338('0x15')](function(_0x24e6f1){logger[_0x9338('0x12')](_0x9338('0xd'),_0x523913,_0x24e6f1);_0x14f0dc(_0x24e6f1);});});}
\ No newline at end of file
index b580678..866cb81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc688=['update','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','/:id','/:id/configurations','getConfigurations','/:id/fields','isAuthenticated','getFields','post','create','addConfiguration','put'];(function(_0x4b9298,_0x40ddcf){var _0x369af0=function(_0x5924c3){while(--_0x5924c3){_0x4b9298['push'](_0x4b9298['shift']());}};_0x369af0(++_0x40ddcf);}(_0xc688,0xc0));var _0x8c68=function(_0x2eed4b,_0x13ba5a){_0x2eed4b=_0x2eed4b-0x0;var _0x5b10eb=_0xc688[_0x2eed4b];return _0x5b10eb;};'use strict';var multer=require(_0x8c68('0x0'));var util=require(_0x8c68('0x1'));var path=require('path');var timeout=require(_0x8c68('0x2'));var express=require(_0x8c68('0x3'));var router=express['Router']();var fs_extra=require(_0x8c68('0x4'));var auth=require(_0x8c68('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8c68('0x6'));var controller=require('./intVtigerAccount.controller');router[_0x8c68('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x8c68('0x8'),auth['isAuthenticated'](),controller['show']);router[_0x8c68('0x7')](_0x8c68('0x9'),auth['isAuthenticated'](),controller[_0x8c68('0xa')]);router['get'](_0x8c68('0xb'),auth[_0x8c68('0xc')](),controller[_0x8c68('0xd')]);router[_0x8c68('0xe')]('/',auth['isAuthenticated'](),controller[_0x8c68('0xf')]);router[_0x8c68('0xe')](_0x8c68('0x9'),auth['isAuthenticated'](),controller[_0x8c68('0x10')]);router[_0x8c68('0x11')](_0x8c68('0x8'),auth[_0x8c68('0xc')](),controller[_0x8c68('0x12')]);router[_0x8c68('0x13')](_0x8c68('0x8'),auth[_0x8c68('0xc')](),controller[_0x8c68('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x6a24=['../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x51f988,_0x1ff0e3){var _0xf44e31=function(_0x495c12){while(--_0x495c12){_0x51f988['push'](_0x51f988['shift']());}};_0xf44e31(++_0x1ff0e3);}(_0x6a24,0xd1));var _0x46a2=function(_0xdad0d3,_0x570c89){_0xdad0d3=_0xdad0d3-0x0;var _0x2bb8b2=_0x6a24[_0xdad0d3];return _0x2bb8b2;};'use strict';var multer=require(_0x46a2('0x0'));var util=require(_0x46a2('0x1'));var path=require('path');var timeout=require(_0x46a2('0x2'));var express=require(_0x46a2('0x3'));var router=express[_0x46a2('0x4')]();var fs_extra=require(_0x46a2('0x5'));var auth=require(_0x46a2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x46a2('0x7'));var controller=require(_0x46a2('0x8'));router['get']('/',auth[_0x46a2('0x9')](),controller[_0x46a2('0xa')]);router['get']('/:id',auth[_0x46a2('0x9')](),controller[_0x46a2('0xb')]);router['get'](_0x46a2('0xc'),auth['isAuthenticated'](),controller[_0x46a2('0xd')]);router['get'](_0x46a2('0xe'),auth[_0x46a2('0x9')](),controller[_0x46a2('0xf')]);router[_0x46a2('0x10')]('/',auth[_0x46a2('0x9')](),controller[_0x46a2('0x11')]);router[_0x46a2('0x10')](_0x46a2('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x46a2('0x12')](_0x46a2('0x13'),auth['isAuthenticated'](),controller[_0x46a2('0x14')]);router[_0x46a2('0x15')](_0x46a2('0x13'),auth[_0x46a2('0x9')](),controller[_0x46a2('0x16')]);module[_0x46a2('0x17')]=router;
\ No newline at end of file
index c27a8d0..481360d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9184=['exports','STRING','sequelize'];(function(_0x1ce2b1,_0x506d4a){var _0xcc69e5=function(_0x5555e7){while(--_0x5555e7){_0x1ce2b1['push'](_0x1ce2b1['shift']());}};_0xcc69e5(++_0x506d4a);}(_0x9184,0x122));var _0x4918=function(_0x292380,_0x2c9565){_0x292380=_0x292380-0x0;var _0x148f5d=_0x9184[_0x292380];return _0x148f5d;};'use strict';var Sequelize=require(_0x4918('0x0'));module[_0x4918('0x1')]={'name':{'type':Sequelize[_0x4918('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x4918('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x4918('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x280c=['sequelize','STRING'];(function(_0x152ca2,_0x5abd1b){var _0x58fbd2=function(_0x128b08){while(--_0x128b08){_0x152ca2['push'](_0x152ca2['shift']());}};_0x58fbd2(++_0x5abd1b);}(_0x280c,0x13c));var _0xc280=function(_0x3e7a35,_0x296eda){_0x3e7a35=_0x3e7a35-0x0;var _0x4d722f=_0x280c[_0x3e7a35];return _0x4d722f;};'use strict';var Sequelize=require(_0xc280('0x0'));module['exports']={'name':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc280('0x1')]},'username':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xc280('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xc280('0x1')],'allowNull':![]}};
\ No newline at end of file
index b6f5e56..bec8f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2066=['../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','catch','show','rawAttributes','length','VtigerAccount','find','create','body','params','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Subjects','md5','getFields','description','moduleName','remoteUri','accessKey','username','slice','lastIndexOf','format','%s/webservice.php','GET','success','POST','result','token','describe','sessionName','reference','owner','remove','includes','editable','startsWith','cf_','picklistValues','log','vTiger\x20error:\x20','test','statusCode','error','stringify','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x4b7e56,_0x1fec9a){var _0x1db082=function(_0x2c64f6){while(--_0x2c64f6){_0x4b7e56['push'](_0x4b7e56['shift']());}};_0x1db082(++_0x1fec9a);}(_0x2066,0x1b6));var _0x6206=function(_0x4d27ea,_0x5a0073){_0x4d27ea=_0x4d27ea-0x0;var _0x1ee53d=_0x2066[_0x4d27ea];return _0x1ee53d;};'use strict';var emlformat=require(_0x6206('0x0'));var rimraf=require(_0x6206('0x1'));var zipdir=require(_0x6206('0x2'));var jsonpatch=require(_0x6206('0x3'));var rp=require('request-promise');var moment=require(_0x6206('0x4'));var BPromise=require(_0x6206('0x5'));var Mustache=require(_0x6206('0x6'));var util=require(_0x6206('0x7'));var path=require(_0x6206('0x8'));var sox=require(_0x6206('0x9'));var csv=require(_0x6206('0xa'));var ejs=require(_0x6206('0xb'));var fs=require('fs');var fs_extra=require(_0x6206('0xc'));var _=require('lodash');var squel=require(_0x6206('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6206('0xe'));var toCsv=require(_0x6206('0xa'));var querystring=require(_0x6206('0xf'));var Papa=require(_0x6206('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6206('0x11'));var as=require(_0x6206('0x12'));var hardwareService=require(_0x6206('0x13'));var logger=require('../../config/logger')(_0x6206('0x14'));var utils=require(_0x6206('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6206('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x6206('0x17'));function respondWithStatusCode(_0x3ce695,_0x1852de){_0x1852de=_0x1852de||0xcc;return function(_0x1ffd29){if(_0x1ffd29){return _0x3ce695[_0x6206('0x18')](_0x1852de);}return _0x3ce695[_0x6206('0x19')](_0x1852de)[_0x6206('0x1a')]();};}function respondWithResult(_0x3e02b0,_0x5f541a){_0x5f541a=_0x5f541a||0xc8;return function(_0x1fcd82){if(_0x1fcd82){return _0x3e02b0[_0x6206('0x19')](_0x5f541a)[_0x6206('0x1b')](_0x1fcd82);}};}function respondWithFilteredResult(_0x479cdf,_0x4dd8af){return function(_0x3ccc31){if(_0x3ccc31){var _0x194417=typeof _0x4dd8af[_0x6206('0x1c')]===_0x6206('0x1d')&&typeof _0x4dd8af[_0x6206('0x1e')]===_0x6206('0x1d');var _0x20662c=_0x3ccc31[_0x6206('0x1f')];var _0x307d69=_0x194417?0x0:_0x4dd8af[_0x6206('0x1c')];var _0x17760f=_0x194417?_0x3ccc31[_0x6206('0x1f')]:_0x4dd8af['offset']+_0x4dd8af['limit'];var _0x205e98;if(_0x17760f>=_0x20662c){_0x17760f=_0x20662c;_0x205e98=0xc8;}else{_0x205e98=0xce;}_0x479cdf[_0x6206('0x19')](_0x205e98);return _0x479cdf[_0x6206('0x20')](_0x6206('0x21'),_0x307d69+'-'+_0x17760f+'/'+_0x20662c)[_0x6206('0x1b')](_0x3ccc31);}return null;};}function patchUpdates(_0x582212){return function(_0x1cae0d){try{jsonpatch[_0x6206('0x22')](_0x1cae0d,_0x582212,!![]);}catch(_0x3833e7){return BPromise['reject'](_0x3833e7);}return _0x1cae0d[_0x6206('0x23')]();};}function saveUpdates(_0x28ab77,_0x343b6d){return function(_0x2116d0){if(_0x2116d0){return _0x2116d0[_0x6206('0x24')](_0x28ab77)[_0x6206('0x25')](function(_0xf23e79){return _0xf23e79;});}return null;};}function removeEntity(_0x598707,_0x1ce3f7){return function(_0x51612e){if(_0x51612e){return _0x51612e[_0x6206('0x26')]()[_0x6206('0x25')](function(){_0x598707[_0x6206('0x19')](0xcc)[_0x6206('0x1a')]();});}};}function handleEntityNotFound(_0x3dafcd,_0x363824){return function(_0x8d24d2){if(!_0x8d24d2){_0x3dafcd[_0x6206('0x18')](0x194);}return _0x8d24d2;};}function handleError(_0x236acb,_0x1313d3){_0x1313d3=_0x1313d3||0x1f4;return function(_0xfcee1e){logger['error'](_0xfcee1e[_0x6206('0x27')]);if(_0xfcee1e[_0x6206('0x28')]){delete _0xfcee1e[_0x6206('0x28')];}_0x236acb[_0x6206('0x19')](_0x1313d3)[_0x6206('0x29')](_0xfcee1e);};}exports[_0x6206('0x2a')]=function(_0x1c9ae4,_0x267417){var _0x3bf691={},_0x368f8d={},_0x2042f8={'count':0x0,'rows':[]};var _0x219fdd=_[_0x6206('0x2b')](db['VtigerAccount']['rawAttributes'],function(_0x143a31){return{'name':_0x143a31[_0x6206('0x2c')],'type':_0x143a31[_0x6206('0x2d')][_0x6206('0x2e')]};});_0x368f8d['model']=_[_0x6206('0x2b')](_0x219fdd,_0x6206('0x28'));_0x368f8d['query']=_[_0x6206('0x2f')](_0x1c9ae4[_0x6206('0x30')]);_0x368f8d[_0x6206('0x31')]=_[_0x6206('0x32')](_0x368f8d['model'],_0x368f8d[_0x6206('0x30')]);_0x3bf691[_0x6206('0x33')]=_[_0x6206('0x32')](_0x368f8d[_0x6206('0x34')],qs[_0x6206('0x35')](_0x1c9ae4[_0x6206('0x30')][_0x6206('0x35')]));_0x3bf691[_0x6206('0x33')]=_0x3bf691[_0x6206('0x33')]['length']?_0x3bf691[_0x6206('0x33')]:_0x368f8d['model'];if(!_0x1c9ae4['query'][_0x6206('0x36')]('nolimit')){_0x3bf691['limit']=qs[_0x6206('0x1e')](_0x1c9ae4[_0x6206('0x30')][_0x6206('0x1e')]);_0x3bf691[_0x6206('0x1c')]=qs[_0x6206('0x1c')](_0x1c9ae4[_0x6206('0x30')][_0x6206('0x1c')]);}_0x3bf691[_0x6206('0x37')]=qs['sort'](_0x1c9ae4[_0x6206('0x30')][_0x6206('0x38')]);_0x3bf691[_0x6206('0x39')]=qs['filters'](_[_0x6206('0x3a')](_0x1c9ae4[_0x6206('0x30')],_0x368f8d[_0x6206('0x31')]),_0x219fdd);if(_0x1c9ae4['query']['filter']){_0x3bf691[_0x6206('0x39')]=_['merge'](_0x3bf691[_0x6206('0x39')],{'$or':_[_0x6206('0x2b')](_0x219fdd,function(_0x315b82){if(_0x315b82[_0x6206('0x2d')]!==_0x6206('0x3b')){var _0x2ba011={};_0x2ba011[_0x315b82[_0x6206('0x28')]]={'$like':'%'+_0x1c9ae4[_0x6206('0x30')][_0x6206('0x3c')]+'%'};return _0x2ba011;}})});}_0x3bf691=_[_0x6206('0x3d')]({},_0x3bf691,_0x1c9ae4[_0x6206('0x3e')]);var _0x226841={'where':_0x3bf691['where']};return db['VtigerAccount'][_0x6206('0x1f')](_0x226841)[_0x6206('0x25')](function(_0xc6415f){_0x2042f8[_0x6206('0x1f')]=_0xc6415f;if(_0x1c9ae4[_0x6206('0x30')][_0x6206('0x3f')]){_0x3bf691[_0x6206('0x40')]=[{'all':!![]}];}return db['VtigerAccount']['findAll'](_0x3bf691);})[_0x6206('0x25')](function(_0x32de26){_0x2042f8['rows']=_0x32de26;return _0x2042f8;})[_0x6206('0x25')](respondWithFilteredResult(_0x267417,_0x3bf691))[_0x6206('0x41')](handleError(_0x267417,null));};exports[_0x6206('0x42')]=function(_0x59a210,_0x31df08){var _0x37d953={'raw':![],'where':{'id':_0x59a210['params']['id']}},_0xbe0a3b={};_0xbe0a3b['model']=_[_0x6206('0x2f')](db['VtigerAccount'][_0x6206('0x43')]);_0xbe0a3b[_0x6206('0x30')]=_[_0x6206('0x2f')](_0x59a210['query']);_0xbe0a3b[_0x6206('0x31')]=_[_0x6206('0x32')](_0xbe0a3b[_0x6206('0x34')],_0xbe0a3b[_0x6206('0x30')]);_0x37d953[_0x6206('0x33')]=_[_0x6206('0x32')](_0xbe0a3b['model'],qs[_0x6206('0x35')](_0x59a210['query'][_0x6206('0x35')]));_0x37d953[_0x6206('0x33')]=_0x37d953[_0x6206('0x33')][_0x6206('0x44')]?_0x37d953[_0x6206('0x33')]:_0xbe0a3b[_0x6206('0x34')];if(_0x59a210[_0x6206('0x30')][_0x6206('0x3f')]){_0x37d953['include']=[{'all':!![]}];}_0x37d953=_['merge']({},_0x37d953,_0x59a210['options']);return db[_0x6206('0x45')][_0x6206('0x46')](_0x37d953)[_0x6206('0x25')](handleEntityNotFound(_0x31df08,null))[_0x6206('0x25')](respondWithResult(_0x31df08,null))['catch'](handleError(_0x31df08,null));};exports['create']=function(_0x356768,_0x37c856){return db[_0x6206('0x45')][_0x6206('0x47')](_0x356768['body'],{})[_0x6206('0x25')](respondWithResult(_0x37c856,0xc9))['catch'](handleError(_0x37c856,null));};exports[_0x6206('0x24')]=function(_0x26d556,_0x377a13){if(_0x26d556[_0x6206('0x48')]['id']){delete _0x26d556[_0x6206('0x48')]['id'];}return db['VtigerAccount'][_0x6206('0x46')]({'where':{'id':_0x26d556['params']['id']}})[_0x6206('0x25')](handleEntityNotFound(_0x377a13,null))['then'](saveUpdates(_0x26d556[_0x6206('0x48')],null))['then'](respondWithResult(_0x377a13,null))[_0x6206('0x41')](handleError(_0x377a13,null));};exports[_0x6206('0x26')]=function(_0x103dfb,_0x2ff46f){return db[_0x6206('0x45')][_0x6206('0x46')]({'where':{'id':_0x103dfb[_0x6206('0x49')]['id']}})[_0x6206('0x25')](handleEntityNotFound(_0x2ff46f,null))[_0x6206('0x25')](removeEntity(_0x2ff46f,null))[_0x6206('0x41')](handleError(_0x2ff46f,null));};exports[_0x6206('0x4a')]=function(_0x322045,_0x2f9a07,_0x3790e3){var _0x24d067={};var _0x1cc8f8={};var _0x5c0db8;var _0x14d56c;return db['VtigerAccount'][_0x6206('0x4b')]({'where':{'id':_0x322045['params']['id']}})[_0x6206('0x25')](handleEntityNotFound(_0x2f9a07,null))[_0x6206('0x25')](function(_0x3530d4){if(_0x3530d4){_0x5c0db8=_0x3530d4;_0x1cc8f8[_0x6206('0x34')]=_['keys'](db[_0x6206('0x4c')]['rawAttributes']);_0x1cc8f8[_0x6206('0x30')]=_['keys'](_0x322045[_0x6206('0x30')]);_0x1cc8f8['filters']=_[_0x6206('0x32')](_0x1cc8f8[_0x6206('0x34')],_0x1cc8f8['query']);_0x24d067['attributes']=_[_0x6206('0x32')](_0x1cc8f8[_0x6206('0x34')],qs[_0x6206('0x35')](_0x322045[_0x6206('0x30')][_0x6206('0x35')]));_0x24d067['attributes']=_0x24d067[_0x6206('0x33')][_0x6206('0x44')]?_0x24d067[_0x6206('0x33')]:_0x1cc8f8[_0x6206('0x34')];_0x24d067[_0x6206('0x37')]=qs[_0x6206('0x38')](_0x322045[_0x6206('0x30')]['sort']);_0x24d067['where']=qs[_0x6206('0x31')](_[_0x6206('0x3a')](_0x322045[_0x6206('0x30')],_0x1cc8f8[_0x6206('0x31')]));if(_0x322045[_0x6206('0x30')][_0x6206('0x3c')]){_0x24d067[_0x6206('0x39')]=_[_0x6206('0x3d')](_0x24d067[_0x6206('0x39')],{'$or':_['map'](_0x24d067[_0x6206('0x33')],function(_0x25a122){var _0x1cade0={};_0x1cade0[_0x25a122]={'$like':'%'+_0x322045[_0x6206('0x30')][_0x6206('0x3c')]+'%'};return _0x1cade0;})});}_0x24d067=_[_0x6206('0x3d')]({},_0x24d067,_0x322045[_0x6206('0x3e')]);return _0x5c0db8[_0x6206('0x4a')](_0x24d067);}})[_0x6206('0x25')](function(_0x12bd94){if(_0x12bd94){_0x14d56c=_0x12bd94[_0x6206('0x44')];if(!_0x322045[_0x6206('0x30')][_0x6206('0x36')]('nolimit')){_0x24d067['limit']=qs[_0x6206('0x1e')](_0x322045['query'][_0x6206('0x1e')]);_0x24d067[_0x6206('0x1c')]=qs[_0x6206('0x1c')](_0x322045[_0x6206('0x30')]['offset']);}return _0x5c0db8['getConfigurations'](_0x24d067);}})[_0x6206('0x25')](function(_0x3e4e36){if(_0x3e4e36){return _0x3e4e36?{'count':_0x14d56c,'rows':_0x3e4e36}:null;}})[_0x6206('0x25')](respondWithResult(_0x2f9a07,null))['catch'](handleError(_0x2f9a07,null));};exports[_0x6206('0x4d')]=function(_0x47bd94,_0x1d2ce1,_0x35a879){if(_0x47bd94[_0x6206('0x48')]['id']){delete _0x47bd94[_0x6206('0x48')]['id'];}return db[_0x6206('0x45')]['findOne']({'where':{'id':_0x47bd94[_0x6206('0x49')]['id']}})['then'](handleEntityNotFound(_0x1d2ce1,null))[_0x6206('0x25')](function(_0x3ada48){if(_0x3ada48){_0x47bd94[_0x6206('0x48')][_0x6206('0x4e')]=_0x3ada48['id'];_0x47bd94[_0x6206('0x48')]['Subjects']=integrations[_0x6206('0x4f')](_0x47bd94[_0x6206('0x48')][_0x6206('0x50')],_0x47bd94[_0x6206('0x48')][_0x6206('0x2d')]);_0x47bd94[_0x6206('0x48')]['Descriptions']=integrations[_0x6206('0x51')](_0x47bd94['body'][_0x6206('0x50')],_0x47bd94[_0x6206('0x48')][_0x6206('0x2d')]);return db[_0x6206('0x4c')][_0x6206('0x47')](_0x47bd94[_0x6206('0x48')],{'include':[{'model':db['VtigerField'],'as':_0x6206('0x52')},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1d2ce1,null))[_0x6206('0x41')](handleError(_0x1d2ce1,null));};var md5=require(_0x6206('0x53'));exports[_0x6206('0x54')]=function(_0x20a18d,_0x6511be,_0x3b3b3){var _0x235eb0=null;var _0x4ae4d3=null;var _0x36824e=null;var _0x53ca8b=null;var _0x116922='';return db['VtigerAccount']['findOne']({'where':{'id':_0x20a18d[_0x6206('0x49')]['id']},'attributes':['id','name','username',_0x6206('0x55'),_0x6206('0x56'),_0x6206('0x57'),'serverUrl',_0x6206('0x58')]})[_0x6206('0x25')](handleEntityNotFound(_0x6511be,null))[_0x6206('0x25')](function(_0x1ed18b){if(_0x1ed18b){_0x235eb0=_0x1ed18b[_0x6206('0x59')];_0x4ae4d3=_0x1ed18b[_0x6206('0x58')];_0x36824e=_0x1ed18b[_0x6206('0x56')];_0x116922=_0x1ed18b[_0x6206('0x57')];var _0x48fca0=_0x116922[_0x6206('0x5a')](-0x1);if(_0x48fca0==='/'){_0x116922=_0x116922['substring'](0x0,_0x116922[_0x6206('0x5b')](_0x48fca0));}_0x53ca8b=util[_0x6206('0x5c')](_0x6206('0x5d'),_0x116922);var _0x52aa04={'method':_0x6206('0x5e'),'uri':_0x53ca8b,'qs':{'operation':'getchallenge','username':_0x1ed18b[_0x6206('0x59')]},'json':!![]};return rp(_0x52aa04);}})[_0x6206('0x25')](function(_0x5c99b6){if(_0x5c99b6[_0x6206('0x5f')]){var _0x2f9406={'method':_0x6206('0x60'),'uri':_0x53ca8b,'form':{'operation':'login','username':_0x235eb0,'accessKey':md5(_0x5c99b6[_0x6206('0x61')][_0x6206('0x62')]+_0x4ae4d3)},'json':!![]};return rp(_0x2f9406);}})[_0x6206('0x25')](function(_0x266c69){if(_0x266c69[_0x6206('0x5f')]){var _0x357989={'method':'GET','uri':_0x53ca8b,'qs':{'operation':_0x6206('0x63'),'username':_0x235eb0,'sessionName':_0x266c69[_0x6206('0x61')][_0x6206('0x64')],'elementType':_0x36824e},'json':!![]};return rp(_0x357989);}})[_0x6206('0x25')](function(_0x39b694){if(_0x39b694[_0x6206('0x5f')]){var _0x2f35ef=['autogenerated',_0x6206('0x65'),_0x6206('0x66')];_[_0x6206('0x67')](_0x39b694[_0x6206('0x61')][_0x6206('0x35')],function(_0x484119){return _0x2f35ef[_0x6206('0x68')](_0x484119[_0x6206('0x2d')][_0x6206('0x28')]);});_['remove'](_0x39b694[_0x6206('0x61')][_0x6206('0x35')],function(_0x18d603){return _0x18d603[_0x6206('0x69')]==='false';});return{'count':_0x39b694[_0x6206('0x61')][_0x6206('0x35')][_0x6206('0x44')],'rows':_['map'](_0x39b694['result'][_0x6206('0x35')],function(_0x3122ce){return{'id':_0x3122ce[_0x6206('0x28')],'name':_0x3122ce['label'],'custom':_[_0x6206('0x6a')](_0x3122ce[_0x6206('0x28')],_0x6206('0x6b'))?!![]:![],'options':_0x3122ce[_0x6206('0x2d')][_0x6206('0x28')]==='picklist'&&_0x3122ce[_0x6206('0x2d')][_0x6206('0x6c')][_0x6206('0x44')]>0x0?_[_0x6206('0x2b')](_0x3122ce[_0x6206('0x2d')][_0x6206('0x6c')],function(_0x959473){return{'name':_0x959473['label'],'value':_0x959473['value']};}):[]};})};}})['then'](respondWithResult(_0x6511be,null))[_0x6206('0x41')](function(_0x49509a){console[_0x6206('0x6d')](_0x6206('0x6e')+_0x49509a);var _0x43375c=_0x20a18d[_0x6206('0x30')][_0x6206('0x6f')]?0x1f4:_0x49509a[_0x6206('0x70')]||0x1f4;logger[_0x6206('0x71')]('getFields,\x20%s,\x20%s,\x20%s',_0x6206('0x54'),_0x43375c,JSON[_0x6206('0x72')](_0x49509a));delete _0x49509a[_0x6206('0x28')];if(_0x43375c===0x191){_0x43375c=0x190;}_0x6511be['status'](_0x43375c)['send'](_0x20a18d['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x49509a[_0x6206('0x70')]}:_0x49509a);});};
\ No newline at end of file
+var _0xab55=['result','token','describe','autogenerated','reference','owner','remove','false','label','startsWith','cf_','picklist','picklistValues','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','end','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','update','destroy','getConfigurations','findOne','VtigerConfiguration','order','Subjects','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','GET','getchallenge','success','POST','login'];(function(_0x3dc30d,_0x3eee3c){var _0x225236=function(_0x303bd2){while(--_0x303bd2){_0x3dc30d['push'](_0x3dc30d['shift']());}};_0x225236(++_0x3eee3c);}(_0xab55,0x88));var _0x5ab5=function(_0x2b9caf,_0x79a36a){_0x2b9caf=_0x2b9caf-0x0;var _0x2d8635=_0xab55[_0x2b9caf];return _0x2d8635;};'use strict';var emlformat=require(_0x5ab5('0x0'));var rimraf=require(_0x5ab5('0x1'));var zipdir=require(_0x5ab5('0x2'));var jsonpatch=require(_0x5ab5('0x3'));var rp=require(_0x5ab5('0x4'));var moment=require('moment');var BPromise=require(_0x5ab5('0x5'));var Mustache=require(_0x5ab5('0x6'));var util=require(_0x5ab5('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5ab5('0x8'));var fs=require('fs');var fs_extra=require(_0x5ab5('0x9'));var _=require(_0x5ab5('0xa'));var squel=require('squel');var crypto=require(_0x5ab5('0xb'));var jsforce=require(_0x5ab5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x5ab5('0xd'));var querystring=require('querystring');var Papa=require(_0x5ab5('0xe'));var Redis=require(_0x5ab5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5ab5('0x10'));var as=require(_0x5ab5('0x11'));var hardwareService=require(_0x5ab5('0x12'));var logger=require(_0x5ab5('0x13'))(_0x5ab5('0x14'));var utils=require(_0x5ab5('0x15'));var config=require(_0x5ab5('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x5ab5('0x17'));function respondWithStatusCode(_0x481b4a,_0x35db60){_0x35db60=_0x35db60||0xcc;return function(_0x42ff57){if(_0x42ff57){return _0x481b4a[_0x5ab5('0x18')](_0x35db60);}return _0x481b4a[_0x5ab5('0x19')](_0x35db60)['end']();};}function respondWithResult(_0x2614c3,_0x1335fa){_0x1335fa=_0x1335fa||0xc8;return function(_0x4e7920){if(_0x4e7920){return _0x2614c3[_0x5ab5('0x19')](_0x1335fa)[_0x5ab5('0x1a')](_0x4e7920);}};}function respondWithFilteredResult(_0x1a3ddf,_0x39ac34){return function(_0x84edb5){if(_0x84edb5){var _0x18d4eb=typeof _0x39ac34[_0x5ab5('0x1b')]===_0x5ab5('0x1c')&&typeof _0x39ac34['limit']===_0x5ab5('0x1c');var _0x3b9525=_0x84edb5[_0x5ab5('0x1d')];var _0x138775=_0x18d4eb?0x0:_0x39ac34[_0x5ab5('0x1b')];var _0x138455=_0x18d4eb?_0x84edb5[_0x5ab5('0x1d')]:_0x39ac34[_0x5ab5('0x1b')]+_0x39ac34[_0x5ab5('0x1e')];var _0x38235e;if(_0x138455>=_0x3b9525){_0x138455=_0x3b9525;_0x38235e=0xc8;}else{_0x38235e=0xce;}_0x1a3ddf[_0x5ab5('0x19')](_0x38235e);return _0x1a3ddf[_0x5ab5('0x1f')](_0x5ab5('0x20'),_0x138775+'-'+_0x138455+'/'+_0x3b9525)['json'](_0x84edb5);}return null;};}function patchUpdates(_0x24b148){return function(_0x41b5ec){try{jsonpatch[_0x5ab5('0x21')](_0x41b5ec,_0x24b148,!![]);}catch(_0x53b787){return BPromise[_0x5ab5('0x22')](_0x53b787);}return _0x41b5ec[_0x5ab5('0x23')]();};}function saveUpdates(_0x5c1fa8,_0x44336d){return function(_0x244b35){if(_0x244b35){return _0x244b35['update'](_0x5c1fa8)[_0x5ab5('0x24')](function(_0x4b72f3){return _0x4b72f3;});}return null;};}function removeEntity(_0xc1e9b8,_0x5a49fe){return function(_0x58ea17){if(_0x58ea17){return _0x58ea17['destroy']()['then'](function(){_0xc1e9b8['status'](0xcc)[_0x5ab5('0x25')]();});}};}function handleEntityNotFound(_0x357ac0,_0x25ee5c){return function(_0xec6a2d){if(!_0xec6a2d){_0x357ac0[_0x5ab5('0x18')](0x194);}return _0xec6a2d;};}function handleError(_0x566c5a,_0x4ac2d8){_0x4ac2d8=_0x4ac2d8||0x1f4;return function(_0x23ac54){logger[_0x5ab5('0x26')](_0x23ac54[_0x5ab5('0x27')]);if(_0x23ac54[_0x5ab5('0x28')]){delete _0x23ac54[_0x5ab5('0x28')];}_0x566c5a[_0x5ab5('0x19')](_0x4ac2d8)[_0x5ab5('0x29')](_0x23ac54);};}exports[_0x5ab5('0x2a')]=function(_0x2464c2,_0x2da995){var _0x45c5a5={},_0x31fb52={},_0xd25f1a={'count':0x0,'rows':[]};var _0x32e04d=_['map'](db[_0x5ab5('0x2b')][_0x5ab5('0x2c')],function(_0x3cc249){return{'name':_0x3cc249[_0x5ab5('0x2d')],'type':_0x3cc249['type']['key']};});_0x31fb52[_0x5ab5('0x2e')]=_[_0x5ab5('0x2f')](_0x32e04d,_0x5ab5('0x28'));_0x31fb52[_0x5ab5('0x30')]=_[_0x5ab5('0x31')](_0x2464c2[_0x5ab5('0x30')]);_0x31fb52[_0x5ab5('0x32')]=_['intersection'](_0x31fb52['model'],_0x31fb52[_0x5ab5('0x30')]);_0x45c5a5['attributes']=_[_0x5ab5('0x33')](_0x31fb52[_0x5ab5('0x2e')],qs[_0x5ab5('0x34')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x34')]));_0x45c5a5['attributes']=_0x45c5a5['attributes']['length']?_0x45c5a5[_0x5ab5('0x35')]:_0x31fb52[_0x5ab5('0x2e')];if(!_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x36')](_0x5ab5('0x37'))){_0x45c5a5[_0x5ab5('0x1e')]=qs['limit'](_0x2464c2['query'][_0x5ab5('0x1e')]);_0x45c5a5[_0x5ab5('0x1b')]=qs[_0x5ab5('0x1b')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x1b')]);}_0x45c5a5['order']=qs[_0x5ab5('0x38')](_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x38')]);_0x45c5a5[_0x5ab5('0x39')]=qs[_0x5ab5('0x32')](_[_0x5ab5('0x3a')](_0x2464c2[_0x5ab5('0x30')],_0x31fb52[_0x5ab5('0x32')]),_0x32e04d);if(_0x2464c2['query'][_0x5ab5('0x3b')]){_0x45c5a5[_0x5ab5('0x39')]=_['merge'](_0x45c5a5[_0x5ab5('0x39')],{'$or':_[_0x5ab5('0x2f')](_0x32e04d,function(_0x4267d2){if(_0x4267d2[_0x5ab5('0x3c')]!==_0x5ab5('0x3d')){var _0x29d47e={};_0x29d47e[_0x4267d2[_0x5ab5('0x28')]]={'$like':'%'+_0x2464c2['query'][_0x5ab5('0x3b')]+'%'};return _0x29d47e;}})});}_0x45c5a5=_[_0x5ab5('0x3e')]({},_0x45c5a5,_0x2464c2['options']);var _0x42ab58={'where':_0x45c5a5[_0x5ab5('0x39')]};return db[_0x5ab5('0x2b')][_0x5ab5('0x1d')](_0x42ab58)[_0x5ab5('0x24')](function(_0x2efaf0){_0xd25f1a[_0x5ab5('0x1d')]=_0x2efaf0;if(_0x2464c2[_0x5ab5('0x30')][_0x5ab5('0x3f')]){_0x45c5a5[_0x5ab5('0x40')]=[{'all':!![]}];}return db[_0x5ab5('0x2b')][_0x5ab5('0x41')](_0x45c5a5);})[_0x5ab5('0x24')](function(_0x2eb738){_0xd25f1a[_0x5ab5('0x42')]=_0x2eb738;return _0xd25f1a;})[_0x5ab5('0x24')](respondWithFilteredResult(_0x2da995,_0x45c5a5))[_0x5ab5('0x43')](handleError(_0x2da995,null));};exports[_0x5ab5('0x44')]=function(_0x4a7566,_0xf22b58){var _0x5852e0={'raw':![],'where':{'id':_0x4a7566[_0x5ab5('0x45')]['id']}},_0x194385={};_0x194385[_0x5ab5('0x2e')]=_[_0x5ab5('0x31')](db[_0x5ab5('0x2b')][_0x5ab5('0x2c')]);_0x194385['query']=_['keys'](_0x4a7566[_0x5ab5('0x30')]);_0x194385['filters']=_[_0x5ab5('0x33')](_0x194385[_0x5ab5('0x2e')],_0x194385[_0x5ab5('0x30')]);_0x5852e0[_0x5ab5('0x35')]=_[_0x5ab5('0x33')](_0x194385[_0x5ab5('0x2e')],qs[_0x5ab5('0x34')](_0x4a7566[_0x5ab5('0x30')][_0x5ab5('0x34')]));_0x5852e0[_0x5ab5('0x35')]=_0x5852e0[_0x5ab5('0x35')][_0x5ab5('0x46')]?_0x5852e0[_0x5ab5('0x35')]:_0x194385['model'];if(_0x4a7566['query'][_0x5ab5('0x3f')]){_0x5852e0[_0x5ab5('0x40')]=[{'all':!![]}];}_0x5852e0=_[_0x5ab5('0x3e')]({},_0x5852e0,_0x4a7566[_0x5ab5('0x47')]);return db[_0x5ab5('0x2b')][_0x5ab5('0x48')](_0x5852e0)[_0x5ab5('0x24')](handleEntityNotFound(_0xf22b58,null))[_0x5ab5('0x24')](respondWithResult(_0xf22b58,null))['catch'](handleError(_0xf22b58,null));};exports['create']=function(_0x439553,_0x2b0140){return db[_0x5ab5('0x2b')][_0x5ab5('0x49')](_0x439553[_0x5ab5('0x4a')],{})['then'](respondWithResult(_0x2b0140,0xc9))[_0x5ab5('0x43')](handleError(_0x2b0140,null));};exports[_0x5ab5('0x4b')]=function(_0x252f3f,_0x4639f2){if(_0x252f3f[_0x5ab5('0x4a')]['id']){delete _0x252f3f['body']['id'];}return db[_0x5ab5('0x2b')][_0x5ab5('0x48')]({'where':{'id':_0x252f3f[_0x5ab5('0x45')]['id']}})['then'](handleEntityNotFound(_0x4639f2,null))[_0x5ab5('0x24')](saveUpdates(_0x252f3f[_0x5ab5('0x4a')],null))[_0x5ab5('0x24')](respondWithResult(_0x4639f2,null))['catch'](handleError(_0x4639f2,null));};exports[_0x5ab5('0x4c')]=function(_0x4f7a0b,_0x36eda8){return db['VtigerAccount'][_0x5ab5('0x48')]({'where':{'id':_0x4f7a0b[_0x5ab5('0x45')]['id']}})[_0x5ab5('0x24')](handleEntityNotFound(_0x36eda8,null))[_0x5ab5('0x24')](removeEntity(_0x36eda8,null))[_0x5ab5('0x43')](handleError(_0x36eda8,null));};exports[_0x5ab5('0x4d')]=function(_0x3bba89,_0x4d4b18,_0x43e730){var _0x46287c={};var _0x335f83={};var _0x432d49;var _0x116fdd;return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x3bba89[_0x5ab5('0x45')]['id']}})['then'](handleEntityNotFound(_0x4d4b18,null))[_0x5ab5('0x24')](function(_0x37e015){if(_0x37e015){_0x432d49=_0x37e015;_0x335f83[_0x5ab5('0x2e')]=_['keys'](db[_0x5ab5('0x4f')][_0x5ab5('0x2c')]);_0x335f83[_0x5ab5('0x30')]=_[_0x5ab5('0x31')](_0x3bba89['query']);_0x335f83[_0x5ab5('0x32')]=_[_0x5ab5('0x33')](_0x335f83[_0x5ab5('0x2e')],_0x335f83[_0x5ab5('0x30')]);_0x46287c['attributes']=_[_0x5ab5('0x33')](_0x335f83[_0x5ab5('0x2e')],qs['fields'](_0x3bba89['query'][_0x5ab5('0x34')]));_0x46287c[_0x5ab5('0x35')]=_0x46287c['attributes'][_0x5ab5('0x46')]?_0x46287c[_0x5ab5('0x35')]:_0x335f83[_0x5ab5('0x2e')];_0x46287c[_0x5ab5('0x50')]=qs['sort'](_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x38')]);_0x46287c['where']=qs['filters'](_[_0x5ab5('0x3a')](_0x3bba89['query'],_0x335f83['filters']));if(_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x3b')]){_0x46287c[_0x5ab5('0x39')]=_[_0x5ab5('0x3e')](_0x46287c[_0x5ab5('0x39')],{'$or':_[_0x5ab5('0x2f')](_0x46287c[_0x5ab5('0x35')],function(_0x5caf8a){var _0x93a21d={};_0x93a21d[_0x5caf8a]={'$like':'%'+_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x3b')]+'%'};return _0x93a21d;})});}_0x46287c=_[_0x5ab5('0x3e')]({},_0x46287c,_0x3bba89[_0x5ab5('0x47')]);return _0x432d49[_0x5ab5('0x4d')](_0x46287c);}})[_0x5ab5('0x24')](function(_0x442bf4){if(_0x442bf4){_0x116fdd=_0x442bf4[_0x5ab5('0x46')];if(!_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x36')]('nolimit')){_0x46287c[_0x5ab5('0x1e')]=qs[_0x5ab5('0x1e')](_0x3bba89[_0x5ab5('0x30')]['limit']);_0x46287c[_0x5ab5('0x1b')]=qs[_0x5ab5('0x1b')](_0x3bba89[_0x5ab5('0x30')][_0x5ab5('0x1b')]);}return _0x432d49[_0x5ab5('0x4d')](_0x46287c);}})['then'](function(_0x187414){if(_0x187414){return _0x187414?{'count':_0x116fdd,'rows':_0x187414}:null;}})[_0x5ab5('0x24')](respondWithResult(_0x4d4b18,null))['catch'](handleError(_0x4d4b18,null));};exports['addConfiguration']=function(_0x123048,_0x442e37,_0x41a2b8){if(_0x123048[_0x5ab5('0x4a')]['id']){delete _0x123048[_0x5ab5('0x4a')]['id'];}return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x123048[_0x5ab5('0x45')]['id']}})[_0x5ab5('0x24')](handleEntityNotFound(_0x442e37,null))[_0x5ab5('0x24')](function(_0x3ca218){if(_0x3ca218){_0x123048[_0x5ab5('0x4a')]['AccountId']=_0x3ca218['id'];_0x123048['body'][_0x5ab5('0x51')]=integrations['getSubjects'](_0x123048[_0x5ab5('0x4a')]['channel'],_0x123048['body'][_0x5ab5('0x3c')]);_0x123048['body'][_0x5ab5('0x52')]=integrations[_0x5ab5('0x53')](_0x123048[_0x5ab5('0x4a')]['channel'],_0x123048[_0x5ab5('0x4a')][_0x5ab5('0x3c')]);return db[_0x5ab5('0x4f')][_0x5ab5('0x49')](_0x123048[_0x5ab5('0x4a')],{'include':[{'model':db[_0x5ab5('0x54')],'as':_0x5ab5('0x51')},{'model':db[_0x5ab5('0x54')],'as':_0x5ab5('0x52')}]});}return null;})[_0x5ab5('0x24')](respondWithResult(_0x442e37,null))[_0x5ab5('0x43')](handleError(_0x442e37,null));};var md5=require(_0x5ab5('0x55'));exports[_0x5ab5('0x56')]=function(_0x1e5e2d,_0x1ac48c,_0x554ac0){var _0x45a5d3=null;var _0x16a9a2=null;var _0x142aea=null;var _0x401536=null;var _0x191609='';return db[_0x5ab5('0x2b')][_0x5ab5('0x4e')]({'where':{'id':_0x1e5e2d[_0x5ab5('0x45')]['id']},'attributes':['id','name',_0x5ab5('0x57'),_0x5ab5('0x58'),_0x5ab5('0x59'),_0x5ab5('0x5a'),_0x5ab5('0x5b'),_0x5ab5('0x5c')]})[_0x5ab5('0x24')](handleEntityNotFound(_0x1ac48c,null))[_0x5ab5('0x24')](function(_0x1d62b5){if(_0x1d62b5){_0x45a5d3=_0x1d62b5[_0x5ab5('0x57')];_0x16a9a2=_0x1d62b5[_0x5ab5('0x5c')];_0x142aea=_0x1d62b5['moduleName'];_0x191609=_0x1d62b5['remoteUri'];var _0xd9444d=_0x191609[_0x5ab5('0x5d')](-0x1);if(_0xd9444d==='/'){_0x191609=_0x191609[_0x5ab5('0x5e')](0x0,_0x191609[_0x5ab5('0x5f')](_0xd9444d));}_0x401536=util[_0x5ab5('0x60')]('%s/webservice.php',_0x191609);var _0x1e3307={'method':_0x5ab5('0x61'),'uri':_0x401536,'qs':{'operation':_0x5ab5('0x62'),'username':_0x1d62b5['username']},'json':!![]};return rp(_0x1e3307);}})['then'](function(_0x173d82){if(_0x173d82[_0x5ab5('0x63')]){var _0x1a2ed3={'method':_0x5ab5('0x64'),'uri':_0x401536,'form':{'operation':_0x5ab5('0x65'),'username':_0x45a5d3,'accessKey':md5(_0x173d82[_0x5ab5('0x66')][_0x5ab5('0x67')]+_0x16a9a2)},'json':!![]};return rp(_0x1a2ed3);}})[_0x5ab5('0x24')](function(_0x2dddd1){if(_0x2dddd1[_0x5ab5('0x63')]){var _0x182e8c={'method':_0x5ab5('0x61'),'uri':_0x401536,'qs':{'operation':_0x5ab5('0x68'),'username':_0x45a5d3,'sessionName':_0x2dddd1[_0x5ab5('0x66')]['sessionName'],'elementType':_0x142aea},'json':!![]};return rp(_0x182e8c);}})[_0x5ab5('0x24')](function(_0xa3b220){if(_0xa3b220['success']){var _0x1a54ce=[_0x5ab5('0x69'),_0x5ab5('0x6a'),_0x5ab5('0x6b')];_[_0x5ab5('0x6c')](_0xa3b220[_0x5ab5('0x66')]['fields'],function(_0x540e35){return _0x1a54ce['includes'](_0x540e35[_0x5ab5('0x3c')][_0x5ab5('0x28')]);});_[_0x5ab5('0x6c')](_0xa3b220['result']['fields'],function(_0x2e4f8e){return _0x2e4f8e['editable']===_0x5ab5('0x6d');});return{'count':_0xa3b220['result']['fields'][_0x5ab5('0x46')],'rows':_[_0x5ab5('0x2f')](_0xa3b220[_0x5ab5('0x66')][_0x5ab5('0x34')],function(_0x36ab40){return{'id':_0x36ab40['name'],'name':_0x36ab40[_0x5ab5('0x6e')],'custom':_[_0x5ab5('0x6f')](_0x36ab40[_0x5ab5('0x28')],_0x5ab5('0x70'))?!![]:![],'options':_0x36ab40[_0x5ab5('0x3c')][_0x5ab5('0x28')]===_0x5ab5('0x71')&&_0x36ab40[_0x5ab5('0x3c')]['picklistValues'][_0x5ab5('0x46')]>0x0?_[_0x5ab5('0x2f')](_0x36ab40['type'][_0x5ab5('0x72')],function(_0x5d7ab7){return{'name':_0x5d7ab7['label'],'value':_0x5d7ab7['value']};}):[]};})};}})[_0x5ab5('0x24')](respondWithResult(_0x1ac48c,null))[_0x5ab5('0x43')](function(_0x593c3d){console['log']('vTiger\x20error:\x20'+_0x593c3d);var _0x592662=_0x1e5e2d[_0x5ab5('0x30')][_0x5ab5('0x73')]?0x1f4:_0x593c3d[_0x5ab5('0x74')]||0x1f4;logger['error'](_0x5ab5('0x75'),'getFields',_0x592662,JSON[_0x5ab5('0x76')](_0x593c3d));delete _0x593c3d[_0x5ab5('0x28')];if(_0x592662===0x191){_0x592662=0x190;}_0x1ac48c[_0x5ab5('0x19')](_0x592662)['send'](_0x1e5e2d[_0x5ab5('0x30')][_0x5ab5('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x593c3d[_0x5ab5('0x74')]}:_0x593c3d);});};
\ No newline at end of file
index f3c0f6a..bd46832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb4=['api','moment','bluebird','request-promise','path','rimraf','define','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x29a1b0,_0x30799c){var _0x1dd9f1=function(_0x4987ab){while(--_0x4987ab){_0x29a1b0['push'](_0x29a1b0['shift']());}};_0x1dd9f1(++_0x30799c);}(_0xdeb4,0x105));var _0x4deb=function(_0x5d4284,_0x31e084){_0x5d4284=_0x5d4284-0x0;var _0x356289=_0xdeb4[_0x5d4284];return _0x356289;};'use strict';var _=require(_0x4deb('0x0'));var util=require(_0x4deb('0x1'));var logger=require(_0x4deb('0x2'))(_0x4deb('0x3'));var moment=require(_0x4deb('0x4'));var BPromise=require(_0x4deb('0x5'));var rp=require(_0x4deb('0x6'));var fs=require('fs');var path=require(_0x4deb('0x7'));var rimraf=require(_0x4deb('0x8'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x4f9de1,_0x517317){return _0x4f9de1[_0x4deb('0x9')]('VtigerAccount',attributes,{'tableName':_0x4deb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf57e=['VtigerAccount','lodash','../../config/logger','moment','bluebird','path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','define'];(function(_0x445c01,_0x3cc6ae){var _0xe8629c=function(_0x5a65eb){while(--_0x5a65eb){_0x445c01['push'](_0x445c01['shift']());}};_0xe8629c(++_0x3cc6ae);}(_0xf57e,0x141));var _0xef57=function(_0x4f748d,_0x546058){_0x4f748d=_0x4f748d-0x0;var _0x8b791b=_0xf57e[_0x4f748d];return _0x8b791b;};'use strict';var _=require(_0xef57('0x0'));var util=require('util');var logger=require(_0xef57('0x1'))('api');var moment=require(_0xef57('0x2'));var BPromise=require(_0xef57('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef57('0x4'));var rimraf=require(_0xef57('0x5'));var config=require('../../config/environment');var attributes=require(_0xef57('0x6'));var integrations=require(_0xef57('0x7'));module['exports']=function(_0x2227a7,_0x16d31d){return _0x2227a7[_0xef57('0x8')](_0xef57('0x9'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a68bb3b..a61b134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','debug','catch','ShowVtigerAccount','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x307fc6,_0x54e619){var _0x99737b=function(_0x2abd20){while(--_0x2abd20){_0x307fc6['push'](_0x307fc6['shift']());}};_0x99737b(++_0x54e619);}(_0xb10b,0x12a));var _0xbb10=function(_0x730192,_0x531aed){_0x730192=_0x730192-0x0;var _0x24bd5d=_0xb10b[_0x730192];return _0x24bd5d;};'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,'limit':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['limit']||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x407cb4){return{'model':db[_0x407cb4[_0xbb10('0x1e')]],'as':_0x407cb4['as'],'attributes':_0x407cb4[_0xbb10('0x1b')],'include':_0x407cb4[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x407cb4[_0xbb10('0x1c')],function(_0x537898){return{'model':db[_0x537898['model']],'as':_0x537898['as'],'attributes':_0x537898['attributes'],'include':_0x537898[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x537898[_0xbb10('0x1c')],function(_0x4e25ff){return{'model':db[_0x4e25ff[_0xbb10('0x1e')]],'as':_0x4e25ff['as'],'attributes':_0x4e25ff[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x1d5e95){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')]('GetVtigerAccount',_0x378da8,JSON[_0xbb10('0x11')](_0x1d5e95));_0x575cca(_0x1d5e95);})[_0xbb10('0x20')](function(_0xfc3595){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0xfc3595[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4['error'](0x1f4,_0xfc3595[_0xbb10('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x448d5c){var _0x56f2da=this;return new Promise(function(_0x16ad2a,_0x1dcc9c){return db[_0xbb10('0x16')]['find']({'raw':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1b')]||null:null,'include':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')]['include']?_[_0xbb10('0x1d')](_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x8c1ce6){return{'model':db[_0x8c1ce6[_0xbb10('0x1e')]],'as':_0x8c1ce6['as'],'attributes':_0x8c1ce6[_0xbb10('0x1b')],'include':_0x8c1ce6[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x8c1ce6[_0xbb10('0x1c')],function(_0x56943c){return{'model':db[_0x56943c[_0xbb10('0x1e')]],'as':_0x56943c['as'],'attributes':_0x56943c[_0xbb10('0x1b')],'include':_0x56943c[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x56943c['include'],function(_0x111762){return{'model':db[_0x111762['model']],'as':_0x111762['as'],'attributes':_0x111762['attributes']};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x40c164){logger[_0xbb10('0xd')](_0xbb10('0x21'),_0x448d5c);logger[_0xbb10('0x1f')](_0xbb10('0x21'),_0x448d5c,JSON['stringify'](_0x40c164));_0x16ad2a(_0x40c164);})[_0xbb10('0x20')](function(_0x25d72f){logger['error']('ShowVtigerAccount',_0x25d72f['message'],_0x448d5c);_0x1dcc9c(_0x56f2da[_0xbb10('0x12')](0x1f4,_0x25d72f[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x6e6c=['where','limit','include','map','attributes','model','GetVtigerAccount','ShowVtigerAccount','find','lodash','util','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','VtigerAccount','findAll','options','raw'];(function(_0x3917b6,_0xb9eddd){var _0x499959=function(_0x503fbc){while(--_0x503fbc){_0x3917b6['push'](_0x3917b6['shift']());}};_0x499959(++_0xb9eddd);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var moment=require('moment');var BPromise=require(_0xc6e6('0x2'));var rs=require(_0xc6e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc6e6('0x4'));var logger=require('../../config/logger')(_0xc6e6('0x5'));var config=require('../../config/environment');var jayson=require(_0xc6e6('0x6'));var client=jayson[_0xc6e6('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x301f55,_0x30a10b,_0x4da7bd){return new BPromise(function(_0x324706,_0x15d268){return client['request'](_0x301f55,_0x4da7bd)[_0xc6e6('0x8')](function(_0x481799){logger[_0xc6e6('0x9')](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));logger[_0xc6e6('0xc')](_0xc6e6('0xd'),_0x30a10b,_0xc6e6('0xb'),JSON[_0xc6e6('0xe')](_0x481799));if(_0x481799[_0xc6e6('0xf')]){if(_0x481799[_0xc6e6('0xf')]['code']===0x1f4){logger[_0xc6e6('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x15d268(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}logger['error'](_0xc6e6('0xa'),_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x324706(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}else{logger['info'](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));_0x324706(_0x481799['result'][_0xc6e6('0x10')]);}})[_0xc6e6('0x11')](function(_0xedf127){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0xedf127);_0x15d268(_0xedf127);});});}exports['GetVtigerAccount']=function(_0x3a1ccc){var _0x554262=this;return new Promise(function(_0x46e58f,_0x2069e4){return db[_0xc6e6('0x12')][_0xc6e6('0x13')]({'raw':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0x3a1ccc['options']?_0x3a1ccc[_0xc6e6('0x14')]['attributes']||null:null,'limit':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x17')]||null:null,'include':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc['options'][_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x107561){return{'model':db[_0x107561['model']],'as':_0x107561['as'],'attributes':_0x107561[_0xc6e6('0x1a')],'include':_0x107561['include']?_[_0xc6e6('0x19')](_0x107561[_0xc6e6('0x18')],function(_0x2e5e0e){return{'model':db[_0x2e5e0e[_0xc6e6('0x1b')]],'as':_0x2e5e0e['as'],'attributes':_0x2e5e0e['attributes'],'include':_0x2e5e0e[_0xc6e6('0x18')]?_['map'](_0x2e5e0e[_0xc6e6('0x18')],function(_0x534745){return{'model':db[_0x534745[_0xc6e6('0x1b')]],'as':_0x534745['as'],'attributes':_0x534745[_0xc6e6('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x41e7c2){logger[_0xc6e6('0x9')]('GetVtigerAccount',_0x3a1ccc);logger[_0xc6e6('0xc')](_0xc6e6('0x1c'),_0x3a1ccc,JSON[_0xc6e6('0xe')](_0x41e7c2));_0x46e58f(_0x41e7c2);})[_0xc6e6('0x11')](function(_0x4d1284){logger[_0xc6e6('0xf')]('GetVtigerAccount',_0x4d1284[_0xc6e6('0x10')],_0x3a1ccc);_0x2069e4(_0x554262[_0xc6e6('0xf')](0x1f4,_0x4d1284[_0xc6e6('0x10')]));});});};exports[_0xc6e6('0x1d')]=function(_0xd3b63){var _0x402598=this;return new Promise(function(_0x43ff9c,_0x337442){return db[_0xc6e6('0x12')][_0xc6e6('0x1e')]({'raw':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options'][_0xc6e6('0x1a')]||null:null,'include':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options']['include']?_[_0xc6e6('0x19')](_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x152e45){return{'model':db[_0x152e45[_0xc6e6('0x1b')]],'as':_0x152e45['as'],'attributes':_0x152e45[_0xc6e6('0x1a')],'include':_0x152e45['include']?_[_0xc6e6('0x19')](_0x152e45[_0xc6e6('0x18')],function(_0x1fff39){return{'model':db[_0x1fff39['model']],'as':_0x1fff39['as'],'attributes':_0x1fff39['attributes'],'include':_0x1fff39[_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x1fff39[_0xc6e6('0x18')],function(_0x2db0a2){return{'model':db[_0x2db0a2['model']],'as':_0x2db0a2['as'],'attributes':_0x2db0a2['attributes']};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x4e94ea){logger[_0xc6e6('0x9')]('ShowVtigerAccount',_0xd3b63);logger[_0xc6e6('0xc')](_0xc6e6('0x1d'),_0xd3b63,JSON[_0xc6e6('0xe')](_0x4e94ea));_0x43ff9c(_0x4e94ea);})[_0xc6e6('0x11')](function(_0x58b972){logger['error'](_0xc6e6('0x1d'),_0x58b972[_0xc6e6('0x10')],_0xd3b63);_0x337442(_0x402598[_0xc6e6('0xf')](0x1f4,_0x58b972[_0xc6e6('0x10')]));});});};
\ No newline at end of file
index ba3bb7a..897064b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9acd=['./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x39fa20,_0x217f8b){var _0x1faf26=function(_0x1fc262){while(--_0x1fc262){_0x39fa20['push'](_0x39fa20['shift']());}};_0x1faf26(++_0x217f8b);}(_0x9acd,0x1f0));var _0xd9ac=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9acd[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0xd9ac('0x0'));var util=require(_0xd9ac('0x1'));var path=require(_0xd9ac('0x2'));var timeout=require(_0xd9ac('0x3'));var express=require(_0xd9ac('0x4'));var router=express[_0xd9ac('0x5')]();var fs_extra=require(_0xd9ac('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd9ac('0x7'));var config=require('../../config/environment');var controller=require(_0xd9ac('0x8'));router[_0xd9ac('0x9')]('/',auth[_0xd9ac('0xa')](),controller[_0xd9ac('0xb')]);router[_0xd9ac('0x9')]('/:id',auth[_0xd9ac('0xa')](),controller[_0xd9ac('0xc')]);router['get'](_0xd9ac('0xd'),auth[_0xd9ac('0xa')](),controller[_0xd9ac('0xe')]);router[_0xd9ac('0x9')](_0xd9ac('0xf'),auth[_0xd9ac('0xa')](),controller['getSubjects']);router[_0xd9ac('0x9')](_0xd9ac('0x10'),auth[_0xd9ac('0xa')](),controller[_0xd9ac('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd9ac('0x12')]);router['put'](_0xd9ac('0x13'),auth[_0xd9ac('0xa')](),controller[_0xd9ac('0x14')]);router[_0xd9ac('0x15')]('/:id',auth[_0xd9ac('0xa')](),controller[_0xd9ac('0x16')]);module[_0xd9ac('0x17')]=router;
\ No newline at end of file
+var _0xf60c=['multer','util','connect-timeout','../../components/interaction/service','get','index','/:id','show','isAuthenticated','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','exports'];(function(_0x1c98fb,_0x4000f2){var _0x45bc57=function(_0x136b7e){while(--_0x136b7e){_0x1c98fb['push'](_0x1c98fb['shift']());}};_0x45bc57(++_0x4000f2);}(_0xf60c,0xea));var _0xcf60=function(_0x4cced8,_0x454e7f){_0x4cced8=_0x4cced8-0x0;var _0x3efe9d=_0xf60c[_0x4cced8];return _0x3efe9d;};'use strict';var multer=require(_0xcf60('0x0'));var util=require(_0xcf60('0x1'));var path=require('path');var timeout=require(_0xcf60('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcf60('0x3'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0xcf60('0x4')]('/',auth['isAuthenticated'](),controller[_0xcf60('0x5')]);router[_0xcf60('0x4')](_0xcf60('0x6'),auth['isAuthenticated'](),controller[_0xcf60('0x7')]);router[_0xcf60('0x4')]('/:id/fields',auth[_0xcf60('0x8')](),controller[_0xcf60('0x9')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0xcf60('0xa')]);router[_0xcf60('0x4')](_0xcf60('0xb'),auth[_0xcf60('0x8')](),controller[_0xcf60('0xc')]);router[_0xcf60('0xd')]('/',auth['isAuthenticated'](),controller[_0xcf60('0xe')]);router['put']('/:id',auth[_0xcf60('0x8')](),controller[_0xcf60('0xf')]);router[_0xcf60('0x10')]('/:id',auth[_0xcf60('0x8')](),controller['destroy']);module[_0xcf60('0x11')]=router;
\ No newline at end of file
index 8b01196..b8fc96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8329=['sequelize','exports','STRING'];(function(_0x45ce2f,_0x25bd89){var _0x9e2220=function(_0x392c48){while(--_0x392c48){_0x45ce2f['push'](_0x45ce2f['shift']());}};_0x9e2220(++_0x25bd89);}(_0x8329,0xab));var _0x9832=function(_0x109bc4,_0x577f40){_0x109bc4=_0x109bc4-0x0;var _0x632d07=_0x8329[_0x109bc4];return _0x632d07;};'use strict';var Sequelize=require(_0x9832('0x0'));module[_0x9832('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9832('0x2')]}};
\ No newline at end of file
+var _0x3260=['exports','STRING','sequelize'];(function(_0x29f128,_0x3ceab5){var _0x117266=function(_0x1598b3){while(--_0x1598b3){_0x29f128['push'](_0x29f128['shift']());}};_0x117266(++_0x3ceab5);}(_0x3260,0x1bb));var _0x0326=function(_0x24bac6,_0x2a01df){_0x24bac6=_0x24bac6-0x0;var _0x5b399d=_0x3260[_0x24bac6];return _0x5b399d;};'use strict';var Sequelize=require(_0x0326('0x0'));module[_0x0326('0x1')]={'name':{'type':Sequelize[_0x0326('0x2')]},'description':{'type':Sequelize[_0x0326('0x2')]}};
\ No newline at end of file
index 30545d2..a5d0261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ff=['stack','name','send','index','VtigerConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','map','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','getFields','findOne','VtigerField','order','getSubjects','rawAttributes','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','limit','count','status','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x5dd2ca,_0x224bf6){var _0xdac8d9=function(_0x24badc){while(--_0x24badc){_0x5dd2ca['push'](_0x5dd2ca['shift']());}};_0xdac8d9(++_0x224bf6);}(_0x31ff,0xd3));var _0xf31f=function(_0x203ffd,_0x1d1d50){_0x203ffd=_0x203ffd-0x0;var _0x41df29=_0x31ff[_0x203ffd];return _0x41df29;};'use strict';var emlformat=require(_0xf31f('0x0'));var rimraf=require(_0xf31f('0x1'));var zipdir=require(_0xf31f('0x2'));var jsonpatch=require(_0xf31f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf31f('0x4'));var Mustache=require(_0xf31f('0x5'));var util=require(_0xf31f('0x6'));var path=require('path');var sox=require(_0xf31f('0x7'));var csv=require(_0xf31f('0x8'));var ejs=require(_0xf31f('0x9'));var fs=require('fs');var fs_extra=require(_0xf31f('0xa'));var _=require(_0xf31f('0xb'));var squel=require(_0xf31f('0xc'));var crypto=require(_0xf31f('0xd'));var jsforce=require(_0xf31f('0xe'));var deskjs=require(_0xf31f('0xf'));var toCsv=require(_0xf31f('0x8'));var querystring=require(_0xf31f('0x10'));var Papa=require(_0xf31f('0x11'));var Redis=require(_0xf31f('0x12'));var authService=require(_0xf31f('0x13'));var qs=require(_0xf31f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf31f('0x15'))(_0xf31f('0x16'));var utils=require(_0xf31f('0x17'));var config=require(_0xf31f('0x18'));var licenseUtil=require(_0xf31f('0x19'));var db=require(_0xf31f('0x1a'))['db'];function respondWithStatusCode(_0x5a8b32,_0x332b8b){_0x332b8b=_0x332b8b||0xcc;return function(_0x289807){if(_0x289807){return _0x5a8b32[_0xf31f('0x1b')](_0x332b8b);}return _0x5a8b32['status'](_0x332b8b)[_0xf31f('0x1c')]();};}function respondWithResult(_0xec4a52,_0x5f42b3){_0x5f42b3=_0x5f42b3||0xc8;return function(_0x560096){if(_0x560096){return _0xec4a52['status'](_0x5f42b3)['json'](_0x560096);}};}function respondWithFilteredResult(_0x1c040a,_0x1a1cb0){return function(_0x5dd71c){if(_0x5dd71c){var _0x5e7192=typeof _0x1a1cb0[_0xf31f('0x1d')]==='undefined'&&typeof _0x1a1cb0[_0xf31f('0x1e')]==='undefined';var _0x437a83=_0x5dd71c['count'];var _0x78d808=_0x5e7192?0x0:_0x1a1cb0[_0xf31f('0x1d')];var _0x2e4004=_0x5e7192?_0x5dd71c[_0xf31f('0x1f')]:_0x1a1cb0['offset']+_0x1a1cb0[_0xf31f('0x1e')];var _0x169a9d;if(_0x2e4004>=_0x437a83){_0x2e4004=_0x437a83;_0x169a9d=0xc8;}else{_0x169a9d=0xce;}_0x1c040a[_0xf31f('0x20')](_0x169a9d);return _0x1c040a['set'](_0xf31f('0x21'),_0x78d808+'-'+_0x2e4004+'/'+_0x437a83)[_0xf31f('0x22')](_0x5dd71c);}return null;};}function patchUpdates(_0x1f8e15){return function(_0x43082b){try{jsonpatch[_0xf31f('0x23')](_0x43082b,_0x1f8e15,!![]);}catch(_0x403d1c){return BPromise[_0xf31f('0x24')](_0x403d1c);}return _0x43082b[_0xf31f('0x25')]();};}function saveUpdates(_0x499c22,_0x185f76){return function(_0x2cd2c6){if(_0x2cd2c6){return _0x2cd2c6[_0xf31f('0x26')](_0x499c22)[_0xf31f('0x27')](function(_0x17a9bc){return _0x17a9bc;});}return null;};}function removeEntity(_0x54177b,_0x36db3f){return function(_0x39a74f){if(_0x39a74f){return _0x39a74f[_0xf31f('0x28')]()['then'](function(){_0x54177b['status'](0xcc)[_0xf31f('0x1c')]();});}};}function handleEntityNotFound(_0x5c3210,_0xc89f21){return function(_0x29ec0f){if(!_0x29ec0f){_0x5c3210[_0xf31f('0x1b')](0x194);}return _0x29ec0f;};}function handleError(_0xab3ac9,_0x2dbff6){_0x2dbff6=_0x2dbff6||0x1f4;return function(_0x11e245){logger['error'](_0x11e245[_0xf31f('0x29')]);if(_0x11e245[_0xf31f('0x2a')]){delete _0x11e245[_0xf31f('0x2a')];}_0xab3ac9['status'](_0x2dbff6)[_0xf31f('0x2b')](_0x11e245);};}exports[_0xf31f('0x2c')]=function(_0x17b39f,_0x1560e2){var _0x3d0ac7={},_0x15a2d6={},_0x205ed1={'count':0x0,'rows':[]};var _0x4e117e=_['map'](db[_0xf31f('0x2d')]['rawAttributes'],function(_0x34df34){return{'name':_0x34df34[_0xf31f('0x2e')],'type':_0x34df34[_0xf31f('0x2f')][_0xf31f('0x30')]};});_0x15a2d6[_0xf31f('0x31')]=_['map'](_0x4e117e,_0xf31f('0x2a'));_0x15a2d6[_0xf31f('0x32')]=_[_0xf31f('0x33')](_0x17b39f[_0xf31f('0x32')]);_0x15a2d6[_0xf31f('0x34')]=_[_0xf31f('0x35')](_0x15a2d6['model'],_0x15a2d6[_0xf31f('0x32')]);_0x3d0ac7[_0xf31f('0x36')]=_[_0xf31f('0x35')](_0x15a2d6['model'],qs[_0xf31f('0x37')](_0x17b39f[_0xf31f('0x32')][_0xf31f('0x37')]));_0x3d0ac7[_0xf31f('0x36')]=_0x3d0ac7[_0xf31f('0x36')][_0xf31f('0x38')]?_0x3d0ac7['attributes']:_0x15a2d6[_0xf31f('0x31')];if(!_0x17b39f[_0xf31f('0x32')][_0xf31f('0x39')](_0xf31f('0x3a'))){_0x3d0ac7['limit']=qs[_0xf31f('0x1e')](_0x17b39f[_0xf31f('0x32')][_0xf31f('0x1e')]);_0x3d0ac7[_0xf31f('0x1d')]=qs[_0xf31f('0x1d')](_0x17b39f[_0xf31f('0x32')]['offset']);}_0x3d0ac7['order']=qs['sort'](_0x17b39f[_0xf31f('0x32')][_0xf31f('0x3b')]);_0x3d0ac7[_0xf31f('0x3c')]=qs[_0xf31f('0x34')](_[_0xf31f('0x3d')](_0x17b39f[_0xf31f('0x32')],_0x15a2d6[_0xf31f('0x34')]),_0x4e117e);if(_0x17b39f['query']['filter']){_0x3d0ac7['where']=_[_0xf31f('0x3e')](_0x3d0ac7['where'],{'$or':_[_0xf31f('0x3f')](_0x4e117e,function(_0x1395a7){if(_0x1395a7[_0xf31f('0x2f')]!==_0xf31f('0x40')){var _0x39427f={};_0x39427f[_0x1395a7[_0xf31f('0x2a')]]={'$like':'%'+_0x17b39f[_0xf31f('0x32')][_0xf31f('0x41')]+'%'};return _0x39427f;}})});}_0x3d0ac7=_[_0xf31f('0x3e')]({},_0x3d0ac7,_0x17b39f[_0xf31f('0x42')]);var _0x13475b={'where':_0x3d0ac7['where']};return db[_0xf31f('0x2d')][_0xf31f('0x1f')](_0x13475b)[_0xf31f('0x27')](function(_0x4b4837){_0x205ed1[_0xf31f('0x1f')]=_0x4b4837;if(_0x17b39f[_0xf31f('0x32')][_0xf31f('0x43')]){_0x3d0ac7['include']=[{'all':!![]}];}return db[_0xf31f('0x2d')][_0xf31f('0x44')](_0x3d0ac7);})[_0xf31f('0x27')](function(_0x387574){_0x205ed1[_0xf31f('0x45')]=_0x387574;return _0x205ed1;})['then'](respondWithFilteredResult(_0x1560e2,_0x3d0ac7))[_0xf31f('0x46')](handleError(_0x1560e2,null));};exports[_0xf31f('0x47')]=function(_0xef7214,_0x278c2d){var _0xc010fb={'raw':![],'where':{'id':_0xef7214['params']['id']}},_0x54fa1b={};_0x54fa1b[_0xf31f('0x31')]=_[_0xf31f('0x33')](db[_0xf31f('0x2d')]['rawAttributes']);_0x54fa1b[_0xf31f('0x32')]=_[_0xf31f('0x33')](_0xef7214[_0xf31f('0x32')]);_0x54fa1b[_0xf31f('0x34')]=_['intersection'](_0x54fa1b[_0xf31f('0x31')],_0x54fa1b['query']);_0xc010fb['attributes']=_[_0xf31f('0x35')](_0x54fa1b[_0xf31f('0x31')],qs[_0xf31f('0x37')](_0xef7214[_0xf31f('0x32')][_0xf31f('0x37')]));_0xc010fb[_0xf31f('0x36')]=_0xc010fb[_0xf31f('0x36')][_0xf31f('0x38')]?_0xc010fb['attributes']:_0x54fa1b[_0xf31f('0x31')];if(_0xef7214[_0xf31f('0x32')][_0xf31f('0x43')]){_0xc010fb[_0xf31f('0x48')]=[{'all':!![]}];}_0xc010fb=_[_0xf31f('0x3e')]({},_0xc010fb,_0xef7214[_0xf31f('0x42')]);return db['VtigerConfiguration'][_0xf31f('0x49')](_0xc010fb)['then'](handleEntityNotFound(_0x278c2d,null))[_0xf31f('0x27')](respondWithResult(_0x278c2d,null))[_0xf31f('0x46')](handleError(_0x278c2d,null));};exports['create']=function(_0x541144,_0x3f3d53){return db[_0xf31f('0x2d')][_0xf31f('0x4a')](_0x541144['body'],{})[_0xf31f('0x27')](respondWithResult(_0x3f3d53,0xc9))['catch'](handleError(_0x3f3d53,null));};exports[_0xf31f('0x26')]=function(_0x896fcf,_0x147e03){if(_0x896fcf[_0xf31f('0x4b')]['id']){delete _0x896fcf[_0xf31f('0x4b')]['id'];}return db[_0xf31f('0x2d')][_0xf31f('0x49')]({'where':{'id':_0x896fcf[_0xf31f('0x4c')]['id']}})[_0xf31f('0x27')](handleEntityNotFound(_0x147e03,null))[_0xf31f('0x27')](saveUpdates(_0x896fcf[_0xf31f('0x4b')],null))[_0xf31f('0x27')](respondWithResult(_0x147e03,null))[_0xf31f('0x46')](handleError(_0x147e03,null));};exports[_0xf31f('0x28')]=function(_0xc9dce4,_0x2a64a5){return db[_0xf31f('0x2d')]['find']({'where':{'id':_0xc9dce4[_0xf31f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2a64a5,null))[_0xf31f('0x27')](removeEntity(_0x2a64a5,null))[_0xf31f('0x46')](handleError(_0x2a64a5,null));};exports[_0xf31f('0x4d')]=function(_0x4bf8d7,_0x4c4856,_0x4ddae2){var _0x22a64f={};var _0x59d2d4={};var _0x142c72;var _0xc922cd;return db['VtigerConfiguration'][_0xf31f('0x4e')]({'where':{'id':_0x4bf8d7['params']['id']}})[_0xf31f('0x27')](handleEntityNotFound(_0x4c4856,null))[_0xf31f('0x27')](function(_0x408b85){if(_0x408b85){_0x142c72=_0x408b85;_0x59d2d4[_0xf31f('0x31')]=_['keys'](db[_0xf31f('0x4f')]['rawAttributes']);_0x59d2d4['query']=_[_0xf31f('0x33')](_0x4bf8d7[_0xf31f('0x32')]);_0x59d2d4[_0xf31f('0x34')]=_[_0xf31f('0x35')](_0x59d2d4['model'],_0x59d2d4['query']);_0x22a64f[_0xf31f('0x36')]=_[_0xf31f('0x35')](_0x59d2d4[_0xf31f('0x31')],qs[_0xf31f('0x37')](_0x4bf8d7['query'][_0xf31f('0x37')]));_0x22a64f['attributes']=_0x22a64f['attributes'][_0xf31f('0x38')]?_0x22a64f['attributes']:_0x59d2d4[_0xf31f('0x31')];_0x22a64f[_0xf31f('0x50')]=qs[_0xf31f('0x3b')](_0x4bf8d7[_0xf31f('0x32')]['sort']);_0x22a64f[_0xf31f('0x3c')]=qs[_0xf31f('0x34')](_['pick'](_0x4bf8d7['query'],_0x59d2d4[_0xf31f('0x34')]));if(_0x4bf8d7['query'][_0xf31f('0x41')]){_0x22a64f[_0xf31f('0x3c')]=_['merge'](_0x22a64f[_0xf31f('0x3c')],{'$or':_[_0xf31f('0x3f')](_0x22a64f[_0xf31f('0x36')],function(_0x2ebb2d){var _0x48581b={};_0x48581b[_0x2ebb2d]={'$like':'%'+_0x4bf8d7[_0xf31f('0x32')]['filter']+'%'};return _0x48581b;})});}_0x22a64f=_[_0xf31f('0x3e')]({},_0x22a64f,_0x4bf8d7['options']);return _0x142c72[_0xf31f('0x4d')](_0x22a64f);}})['then'](function(_0x1d8f9f){if(_0x1d8f9f){_0xc922cd=_0x1d8f9f[_0xf31f('0x38')];if(!_0x4bf8d7[_0xf31f('0x32')][_0xf31f('0x39')](_0xf31f('0x3a'))){_0x22a64f['limit']=qs[_0xf31f('0x1e')](_0x4bf8d7['query']['limit']);_0x22a64f[_0xf31f('0x1d')]=qs[_0xf31f('0x1d')](_0x4bf8d7[_0xf31f('0x32')][_0xf31f('0x1d')]);}return _0x142c72[_0xf31f('0x4d')](_0x22a64f);}})[_0xf31f('0x27')](function(_0x5d8c41){if(_0x5d8c41){return _0x5d8c41?{'count':_0xc922cd,'rows':_0x5d8c41}:null;}})['then'](respondWithResult(_0x4c4856,null))[_0xf31f('0x46')](handleError(_0x4c4856,null));};exports[_0xf31f('0x51')]=function(_0x15c786,_0xf425fd,_0x131160){var _0x1a45fc={};var _0x317579={};var _0x1d22ea;var _0x4a29f7;return db[_0xf31f('0x2d')][_0xf31f('0x4e')]({'where':{'id':_0x15c786['params']['id']}})['then'](handleEntityNotFound(_0xf425fd,null))[_0xf31f('0x27')](function(_0x2d9b28){if(_0x2d9b28){_0x1d22ea=_0x2d9b28;_0x317579['model']=_[_0xf31f('0x33')](db[_0xf31f('0x4f')][_0xf31f('0x52')]);_0x317579[_0xf31f('0x32')]=_['keys'](_0x15c786['query']);_0x317579[_0xf31f('0x34')]=_[_0xf31f('0x35')](_0x317579[_0xf31f('0x31')],_0x317579[_0xf31f('0x32')]);_0x1a45fc[_0xf31f('0x36')]=_[_0xf31f('0x35')](_0x317579[_0xf31f('0x31')],qs['fields'](_0x15c786['query'][_0xf31f('0x37')]));_0x1a45fc[_0xf31f('0x36')]=_0x1a45fc[_0xf31f('0x36')][_0xf31f('0x38')]?_0x1a45fc['attributes']:_0x317579[_0xf31f('0x31')];_0x1a45fc[_0xf31f('0x50')]=qs[_0xf31f('0x3b')](_0x15c786['query'][_0xf31f('0x3b')]);_0x1a45fc[_0xf31f('0x3c')]=qs['filters'](_[_0xf31f('0x3d')](_0x15c786[_0xf31f('0x32')],_0x317579[_0xf31f('0x34')]));if(_0x15c786['query'][_0xf31f('0x41')]){_0x1a45fc[_0xf31f('0x3c')]=_[_0xf31f('0x3e')](_0x1a45fc[_0xf31f('0x3c')],{'$or':_['map'](_0x1a45fc[_0xf31f('0x36')],function(_0x32214e){var _0x2adcc0={};_0x2adcc0[_0x32214e]={'$like':'%'+_0x15c786[_0xf31f('0x32')][_0xf31f('0x41')]+'%'};return _0x2adcc0;})});}_0x1a45fc=_[_0xf31f('0x3e')]({},_0x1a45fc,_0x15c786[_0xf31f('0x42')]);return _0x1d22ea[_0xf31f('0x51')](_0x1a45fc);}})[_0xf31f('0x27')](function(_0x46dac2){if(_0x46dac2){_0x4a29f7=_0x46dac2[_0xf31f('0x38')];if(!_0x15c786[_0xf31f('0x32')][_0xf31f('0x39')](_0xf31f('0x3a'))){_0x1a45fc[_0xf31f('0x1e')]=qs[_0xf31f('0x1e')](_0x15c786['query']['limit']);_0x1a45fc[_0xf31f('0x1d')]=qs['offset'](_0x15c786[_0xf31f('0x32')][_0xf31f('0x1d')]);}return _0x1d22ea['getSubjects'](_0x1a45fc);}})[_0xf31f('0x27')](function(_0x246f7e){if(_0x246f7e){return _0x246f7e?{'count':_0x4a29f7,'rows':_0x246f7e}:null;}})[_0xf31f('0x27')](respondWithResult(_0xf425fd,null))[_0xf31f('0x46')](handleError(_0xf425fd,null));};exports[_0xf31f('0x53')]=function(_0x528188,_0x235aea,_0x235e5a){var _0x35d81e={};var _0x386983={};var _0x271534;var _0x3c6b7b;return db[_0xf31f('0x2d')][_0xf31f('0x4e')]({'where':{'id':_0x528188[_0xf31f('0x4c')]['id']}})[_0xf31f('0x27')](handleEntityNotFound(_0x235aea,null))['then'](function(_0x39e96f){if(_0x39e96f){_0x271534=_0x39e96f;_0x386983['model']=_[_0xf31f('0x33')](db['VtigerField'][_0xf31f('0x52')]);_0x386983[_0xf31f('0x32')]=_[_0xf31f('0x33')](_0x528188[_0xf31f('0x32')]);_0x386983[_0xf31f('0x34')]=_[_0xf31f('0x35')](_0x386983[_0xf31f('0x31')],_0x386983['query']);_0x35d81e[_0xf31f('0x36')]=_['intersection'](_0x386983['model'],qs['fields'](_0x528188[_0xf31f('0x32')]['fields']));_0x35d81e[_0xf31f('0x36')]=_0x35d81e['attributes'][_0xf31f('0x38')]?_0x35d81e[_0xf31f('0x36')]:_0x386983[_0xf31f('0x31')];_0x35d81e[_0xf31f('0x50')]=qs[_0xf31f('0x3b')](_0x528188[_0xf31f('0x32')]['sort']);_0x35d81e[_0xf31f('0x3c')]=qs[_0xf31f('0x34')](_[_0xf31f('0x3d')](_0x528188[_0xf31f('0x32')],_0x386983['filters']));if(_0x528188[_0xf31f('0x32')]['filter']){_0x35d81e[_0xf31f('0x3c')]=_['merge'](_0x35d81e[_0xf31f('0x3c')],{'$or':_[_0xf31f('0x3f')](_0x35d81e[_0xf31f('0x36')],function(_0x1ce23e){var _0x2c1c95={};_0x2c1c95[_0x1ce23e]={'$like':'%'+_0x528188[_0xf31f('0x32')][_0xf31f('0x41')]+'%'};return _0x2c1c95;})});}_0x35d81e=_[_0xf31f('0x3e')]({},_0x35d81e,_0x528188[_0xf31f('0x42')]);return _0x271534[_0xf31f('0x53')](_0x35d81e);}})['then'](function(_0x543fd5){if(_0x543fd5){_0x3c6b7b=_0x543fd5[_0xf31f('0x38')];if(!_0x528188['query'][_0xf31f('0x39')]('nolimit')){_0x35d81e[_0xf31f('0x1e')]=qs[_0xf31f('0x1e')](_0x528188[_0xf31f('0x32')]['limit']);_0x35d81e[_0xf31f('0x1d')]=qs[_0xf31f('0x1d')](_0x528188['query'][_0xf31f('0x1d')]);}return _0x271534[_0xf31f('0x53')](_0x35d81e);}})[_0xf31f('0x27')](function(_0x3b3b2e){if(_0x3b3b2e){return _0x3b3b2e?{'count':_0x3c6b7b,'rows':_0x3b3b2e}:null;}})[_0xf31f('0x27')](respondWithResult(_0x235aea,null))['catch'](handleError(_0x235aea,null));};
\ No newline at end of file
+var _0x34a4=['lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','end','sendStatus','error','stack','send','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','attributes','fields','order','sort','where','pick','VIRTUAL','filter','merge','options','VtigerConfiguration','includeAll','findAll','rows','catch','show','intersection','length','include','find','create','body','params','hasOwnProperty','nolimit','getFields','getSubjects','findOne','VtigerField','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra'];(function(_0xd1f854,_0x532346){var _0x548294=function(_0x4be823){while(--_0x4be823){_0xd1f854['push'](_0xd1f854['shift']());}};_0x548294(++_0x532346);}(_0x34a4,0xec));var _0x434a=function(_0x146907,_0x541dcb){_0x146907=_0x146907-0x0;var _0x47e370=_0x34a4[_0x146907];return _0x47e370;};'use strict';var emlformat=require(_0x434a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x434a('0x1'));var jsonpatch=require(_0x434a('0x2'));var rp=require(_0x434a('0x3'));var moment=require('moment');var BPromise=require(_0x434a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x434a('0x5'));var sox=require(_0x434a('0x6'));var csv=require(_0x434a('0x7'));var ejs=require(_0x434a('0x8'));var fs=require('fs');var fs_extra=require(_0x434a('0x9'));var _=require(_0x434a('0xa'));var squel=require(_0x434a('0xb'));var crypto=require(_0x434a('0xc'));var jsforce=require(_0x434a('0xd'));var deskjs=require(_0x434a('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x434a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x434a('0x10'));var as=require(_0x434a('0x11'));var hardwareService=require(_0x434a('0x12'));var logger=require(_0x434a('0x13'))(_0x434a('0x14'));var utils=require(_0x434a('0x15'));var config=require(_0x434a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x434a('0x17'))['db'];function respondWithStatusCode(_0x1655d9,_0x48ab16){_0x48ab16=_0x48ab16||0xcc;return function(_0x2c85c5){if(_0x2c85c5){return _0x1655d9['sendStatus'](_0x48ab16);}return _0x1655d9[_0x434a('0x18')](_0x48ab16)['end']();};}function respondWithResult(_0x1be9ad,_0x1ce452){_0x1ce452=_0x1ce452||0xc8;return function(_0x3a2214){if(_0x3a2214){return _0x1be9ad[_0x434a('0x18')](_0x1ce452)[_0x434a('0x19')](_0x3a2214);}};}function respondWithFilteredResult(_0x1b42bc,_0x99a2b5){return function(_0x236442){if(_0x236442){var _0x5dde3f=typeof _0x99a2b5['offset']===_0x434a('0x1a')&&typeof _0x99a2b5[_0x434a('0x1b')]===_0x434a('0x1a');var _0x1ccf96=_0x236442[_0x434a('0x1c')];var _0x4b037d=_0x5dde3f?0x0:_0x99a2b5[_0x434a('0x1d')];var _0x34244f=_0x5dde3f?_0x236442[_0x434a('0x1c')]:_0x99a2b5[_0x434a('0x1d')]+_0x99a2b5[_0x434a('0x1b')];var _0x3284c8;if(_0x34244f>=_0x1ccf96){_0x34244f=_0x1ccf96;_0x3284c8=0xc8;}else{_0x3284c8=0xce;}_0x1b42bc[_0x434a('0x18')](_0x3284c8);return _0x1b42bc[_0x434a('0x1e')](_0x434a('0x1f'),_0x4b037d+'-'+_0x34244f+'/'+_0x1ccf96)['json'](_0x236442);}return null;};}function patchUpdates(_0x22bf9b){return function(_0x1b7c34){try{jsonpatch[_0x434a('0x20')](_0x1b7c34,_0x22bf9b,!![]);}catch(_0xf561d0){return BPromise[_0x434a('0x21')](_0xf561d0);}return _0x1b7c34['save']();};}function saveUpdates(_0x3c8aea,_0xffb8f8){return function(_0x2b0c4d){if(_0x2b0c4d){return _0x2b0c4d[_0x434a('0x22')](_0x3c8aea)['then'](function(_0x2ad5ce){return _0x2ad5ce;});}return null;};}function removeEntity(_0x1e8906,_0xfc7238){return function(_0x59c6f4){if(_0x59c6f4){return _0x59c6f4[_0x434a('0x23')]()[_0x434a('0x24')](function(){_0x1e8906[_0x434a('0x18')](0xcc)[_0x434a('0x25')]();});}};}function handleEntityNotFound(_0x181388,_0x351e90){return function(_0x4de476){if(!_0x4de476){_0x181388[_0x434a('0x26')](0x194);}return _0x4de476;};}function handleError(_0x5ec82f,_0x14779a){_0x14779a=_0x14779a||0x1f4;return function(_0x514aca){logger[_0x434a('0x27')](_0x514aca[_0x434a('0x28')]);if(_0x514aca['name']){delete _0x514aca['name'];}_0x5ec82f['status'](_0x14779a)[_0x434a('0x29')](_0x514aca);};}exports['index']=function(_0x48c946,_0x402137){var _0x331856={},_0x3d929c={},_0x36eb5d={'count':0x0,'rows':[]};var _0x1711fa=_['map'](db['VtigerConfiguration'][_0x434a('0x2a')],function(_0x14f725){return{'name':_0x14f725[_0x434a('0x2b')],'type':_0x14f725[_0x434a('0x2c')][_0x434a('0x2d')]};});_0x3d929c[_0x434a('0x2e')]=_[_0x434a('0x2f')](_0x1711fa,_0x434a('0x30'));_0x3d929c[_0x434a('0x31')]=_[_0x434a('0x32')](_0x48c946['query']);_0x3d929c[_0x434a('0x33')]=_['intersection'](_0x3d929c[_0x434a('0x2e')],_0x3d929c[_0x434a('0x31')]);_0x331856[_0x434a('0x34')]=_['intersection'](_0x3d929c[_0x434a('0x2e')],qs[_0x434a('0x35')](_0x48c946[_0x434a('0x31')][_0x434a('0x35')]));_0x331856['attributes']=_0x331856[_0x434a('0x34')]['length']?_0x331856[_0x434a('0x34')]:_0x3d929c[_0x434a('0x2e')];if(!_0x48c946['query']['hasOwnProperty']('nolimit')){_0x331856[_0x434a('0x1b')]=qs['limit'](_0x48c946[_0x434a('0x31')]['limit']);_0x331856[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x48c946[_0x434a('0x31')][_0x434a('0x1d')]);}_0x331856[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x48c946[_0x434a('0x31')]['sort']);_0x331856[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x48c946[_0x434a('0x31')],_0x3d929c[_0x434a('0x33')]),_0x1711fa);if(_0x48c946[_0x434a('0x31')]['filter']){_0x331856[_0x434a('0x38')]=_['merge'](_0x331856[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x1711fa,function(_0xfe561f){if(_0xfe561f['type']!==_0x434a('0x3a')){var _0x2525e6={};_0x2525e6[_0xfe561f['name']]={'$like':'%'+_0x48c946[_0x434a('0x31')][_0x434a('0x3b')]+'%'};return _0x2525e6;}})});}_0x331856=_[_0x434a('0x3c')]({},_0x331856,_0x48c946[_0x434a('0x3d')]);var _0xf609b9={'where':_0x331856['where']};return db[_0x434a('0x3e')][_0x434a('0x1c')](_0xf609b9)['then'](function(_0xb24353){_0x36eb5d[_0x434a('0x1c')]=_0xb24353;if(_0x48c946[_0x434a('0x31')][_0x434a('0x3f')]){_0x331856['include']=[{'all':!![]}];}return db[_0x434a('0x3e')][_0x434a('0x40')](_0x331856);})[_0x434a('0x24')](function(_0x2d4674){_0x36eb5d[_0x434a('0x41')]=_0x2d4674;return _0x36eb5d;})[_0x434a('0x24')](respondWithFilteredResult(_0x402137,_0x331856))[_0x434a('0x42')](handleError(_0x402137,null));};exports[_0x434a('0x43')]=function(_0x5230b8,_0x3b2fb8){var _0x4d1a4e={'raw':![],'where':{'id':_0x5230b8['params']['id']}},_0x4add5d={};_0x4add5d[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x3e')][_0x434a('0x2a')]);_0x4add5d[_0x434a('0x31')]=_[_0x434a('0x32')](_0x5230b8[_0x434a('0x31')]);_0x4add5d['filters']=_[_0x434a('0x44')](_0x4add5d[_0x434a('0x2e')],_0x4add5d['query']);_0x4d1a4e[_0x434a('0x34')]=_[_0x434a('0x44')](_0x4add5d['model'],qs['fields'](_0x5230b8[_0x434a('0x31')][_0x434a('0x35')]));_0x4d1a4e[_0x434a('0x34')]=_0x4d1a4e[_0x434a('0x34')][_0x434a('0x45')]?_0x4d1a4e[_0x434a('0x34')]:_0x4add5d[_0x434a('0x2e')];if(_0x5230b8[_0x434a('0x31')]['includeAll']){_0x4d1a4e[_0x434a('0x46')]=[{'all':!![]}];}_0x4d1a4e=_[_0x434a('0x3c')]({},_0x4d1a4e,_0x5230b8[_0x434a('0x3d')]);return db[_0x434a('0x3e')][_0x434a('0x47')](_0x4d1a4e)['then'](handleEntityNotFound(_0x3b2fb8,null))[_0x434a('0x24')](respondWithResult(_0x3b2fb8,null))['catch'](handleError(_0x3b2fb8,null));};exports[_0x434a('0x48')]=function(_0x2bbea7,_0x433526){return db['VtigerConfiguration'][_0x434a('0x48')](_0x2bbea7[_0x434a('0x49')],{})[_0x434a('0x24')](respondWithResult(_0x433526,0xc9))[_0x434a('0x42')](handleError(_0x433526,null));};exports[_0x434a('0x22')]=function(_0x21ed8b,_0x4c5888){if(_0x21ed8b['body']['id']){delete _0x21ed8b[_0x434a('0x49')]['id'];}return db[_0x434a('0x3e')][_0x434a('0x47')]({'where':{'id':_0x21ed8b[_0x434a('0x4a')]['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x4c5888,null))['then'](saveUpdates(_0x21ed8b[_0x434a('0x49')],null))['then'](respondWithResult(_0x4c5888,null))[_0x434a('0x42')](handleError(_0x4c5888,null));};exports[_0x434a('0x23')]=function(_0x52d6eb,_0x484da7){return db[_0x434a('0x3e')]['find']({'where':{'id':_0x52d6eb[_0x434a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x484da7,null))[_0x434a('0x24')](removeEntity(_0x484da7,null))[_0x434a('0x42')](handleError(_0x484da7,null));};exports['getFields']=function(_0x1d2d22,_0x411c5a,_0x418b67){var _0x5dee5b={};var _0x23b80f={};var _0x931dde;var _0x42cbb8;return db[_0x434a('0x3e')]['findOne']({'where':{'id':_0x1d2d22['params']['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x411c5a,null))['then'](function(_0x3e9c79){if(_0x3e9c79){_0x931dde=_0x3e9c79;_0x23b80f[_0x434a('0x2e')]=_[_0x434a('0x32')](db['VtigerField'][_0x434a('0x2a')]);_0x23b80f['query']=_[_0x434a('0x32')](_0x1d2d22[_0x434a('0x31')]);_0x23b80f[_0x434a('0x33')]=_[_0x434a('0x44')](_0x23b80f[_0x434a('0x2e')],_0x23b80f[_0x434a('0x31')]);_0x5dee5b[_0x434a('0x34')]=_[_0x434a('0x44')](_0x23b80f['model'],qs[_0x434a('0x35')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x35')]));_0x5dee5b['attributes']=_0x5dee5b[_0x434a('0x34')][_0x434a('0x45')]?_0x5dee5b[_0x434a('0x34')]:_0x23b80f[_0x434a('0x2e')];_0x5dee5b[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x37')]);_0x5dee5b[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x1d2d22[_0x434a('0x31')],_0x23b80f[_0x434a('0x33')]));if(_0x1d2d22[_0x434a('0x31')][_0x434a('0x3b')]){_0x5dee5b[_0x434a('0x38')]=_[_0x434a('0x3c')](_0x5dee5b['where'],{'$or':_[_0x434a('0x2f')](_0x5dee5b[_0x434a('0x34')],function(_0x1eeac4){var _0x851b00={};_0x851b00[_0x1eeac4]={'$like':'%'+_0x1d2d22['query']['filter']+'%'};return _0x851b00;})});}_0x5dee5b=_[_0x434a('0x3c')]({},_0x5dee5b,_0x1d2d22[_0x434a('0x3d')]);return _0x931dde['getFields'](_0x5dee5b);}})[_0x434a('0x24')](function(_0x117a0b){if(_0x117a0b){_0x42cbb8=_0x117a0b[_0x434a('0x45')];if(!_0x1d2d22[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x5dee5b[_0x434a('0x1b')]=qs[_0x434a('0x1b')](_0x1d2d22[_0x434a('0x31')][_0x434a('0x1b')]);_0x5dee5b[_0x434a('0x1d')]=qs['offset'](_0x1d2d22[_0x434a('0x31')][_0x434a('0x1d')]);}return _0x931dde[_0x434a('0x4d')](_0x5dee5b);}})[_0x434a('0x24')](function(_0x451970){if(_0x451970){return _0x451970?{'count':_0x42cbb8,'rows':_0x451970}:null;}})[_0x434a('0x24')](respondWithResult(_0x411c5a,null))['catch'](handleError(_0x411c5a,null));};exports[_0x434a('0x4e')]=function(_0x266e64,_0x4a7abc,_0x2574a9){var _0x55d71a={};var _0x500e09={};var _0x3e9896;var _0x297aec;return db[_0x434a('0x3e')][_0x434a('0x4f')]({'where':{'id':_0x266e64[_0x434a('0x4a')]['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x4a7abc,null))['then'](function(_0xd14b52){if(_0xd14b52){_0x3e9896=_0xd14b52;_0x500e09[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x50')][_0x434a('0x2a')]);_0x500e09['query']=_['keys'](_0x266e64[_0x434a('0x31')]);_0x500e09['filters']=_[_0x434a('0x44')](_0x500e09[_0x434a('0x2e')],_0x500e09[_0x434a('0x31')]);_0x55d71a['attributes']=_[_0x434a('0x44')](_0x500e09[_0x434a('0x2e')],qs[_0x434a('0x35')](_0x266e64['query'][_0x434a('0x35')]));_0x55d71a[_0x434a('0x34')]=_0x55d71a[_0x434a('0x34')]['length']?_0x55d71a[_0x434a('0x34')]:_0x500e09['model'];_0x55d71a[_0x434a('0x36')]=qs[_0x434a('0x37')](_0x266e64[_0x434a('0x31')][_0x434a('0x37')]);_0x55d71a['where']=qs[_0x434a('0x33')](_['pick'](_0x266e64['query'],_0x500e09['filters']));if(_0x266e64['query'][_0x434a('0x3b')]){_0x55d71a[_0x434a('0x38')]=_[_0x434a('0x3c')](_0x55d71a[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x55d71a[_0x434a('0x34')],function(_0x12b294){var _0x449a5f={};_0x449a5f[_0x12b294]={'$like':'%'+_0x266e64[_0x434a('0x31')]['filter']+'%'};return _0x449a5f;})});}_0x55d71a=_[_0x434a('0x3c')]({},_0x55d71a,_0x266e64['options']);return _0x3e9896[_0x434a('0x4e')](_0x55d71a);}})[_0x434a('0x24')](function(_0x595b23){if(_0x595b23){_0x297aec=_0x595b23['length'];if(!_0x266e64[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x55d71a[_0x434a('0x1b')]=qs[_0x434a('0x1b')](_0x266e64['query'][_0x434a('0x1b')]);_0x55d71a[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x266e64['query']['offset']);}return _0x3e9896[_0x434a('0x4e')](_0x55d71a);}})[_0x434a('0x24')](function(_0x2dded){if(_0x2dded){return _0x2dded?{'count':_0x297aec,'rows':_0x2dded}:null;}})[_0x434a('0x24')](respondWithResult(_0x4a7abc,null))[_0x434a('0x42')](handleError(_0x4a7abc,null));};exports[_0x434a('0x51')]=function(_0x45fa6c,_0x5cad61,_0x1aa7d6){var _0x2bd070={};var _0x117197={};var _0x2441fa;var _0x1b5d4b;return db['VtigerConfiguration'][_0x434a('0x4f')]({'where':{'id':_0x45fa6c['params']['id']}})[_0x434a('0x24')](handleEntityNotFound(_0x5cad61,null))[_0x434a('0x24')](function(_0x284a6a){if(_0x284a6a){_0x2441fa=_0x284a6a;_0x117197[_0x434a('0x2e')]=_[_0x434a('0x32')](db[_0x434a('0x50')][_0x434a('0x2a')]);_0x117197[_0x434a('0x31')]=_[_0x434a('0x32')](_0x45fa6c[_0x434a('0x31')]);_0x117197['filters']=_[_0x434a('0x44')](_0x117197[_0x434a('0x2e')],_0x117197['query']);_0x2bd070[_0x434a('0x34')]=_[_0x434a('0x44')](_0x117197[_0x434a('0x2e')],qs['fields'](_0x45fa6c[_0x434a('0x31')]['fields']));_0x2bd070['attributes']=_0x2bd070[_0x434a('0x34')][_0x434a('0x45')]?_0x2bd070[_0x434a('0x34')]:_0x117197[_0x434a('0x2e')];_0x2bd070[_0x434a('0x36')]=qs['sort'](_0x45fa6c[_0x434a('0x31')][_0x434a('0x37')]);_0x2bd070[_0x434a('0x38')]=qs[_0x434a('0x33')](_[_0x434a('0x39')](_0x45fa6c[_0x434a('0x31')],_0x117197[_0x434a('0x33')]));if(_0x45fa6c[_0x434a('0x31')][_0x434a('0x3b')]){_0x2bd070['where']=_[_0x434a('0x3c')](_0x2bd070[_0x434a('0x38')],{'$or':_[_0x434a('0x2f')](_0x2bd070[_0x434a('0x34')],function(_0x3dac3c){var _0x3080cf={};_0x3080cf[_0x3dac3c]={'$like':'%'+_0x45fa6c[_0x434a('0x31')]['filter']+'%'};return _0x3080cf;})});}_0x2bd070=_[_0x434a('0x3c')]({},_0x2bd070,_0x45fa6c[_0x434a('0x3d')]);return _0x2441fa[_0x434a('0x51')](_0x2bd070);}})[_0x434a('0x24')](function(_0x27423a){if(_0x27423a){_0x1b5d4b=_0x27423a['length'];if(!_0x45fa6c[_0x434a('0x31')][_0x434a('0x4b')](_0x434a('0x4c'))){_0x2bd070['limit']=qs[_0x434a('0x1b')](_0x45fa6c[_0x434a('0x31')][_0x434a('0x1b')]);_0x2bd070[_0x434a('0x1d')]=qs[_0x434a('0x1d')](_0x45fa6c[_0x434a('0x31')][_0x434a('0x1d')]);}return _0x2441fa[_0x434a('0x51')](_0x2bd070);}})[_0x434a('0x24')](function(_0x7f7b9b){if(_0x7f7b9b){return _0x7f7b9b?{'count':_0x1b5d4b,'rows':_0x7f7b9b}:null;}})[_0x434a('0x24')](respondWithResult(_0x5cad61,null))[_0x434a('0x42')](handleError(_0x5cad61,null));};
\ No newline at end of file
index 3c13a20..6da4c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bd0=['api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','int_vtiger_configurations','lodash'];(function(_0x3b3a37,_0x562788){var _0xb5be06=function(_0xa9b687){while(--_0xa9b687){_0x3b3a37['push'](_0x3b3a37['shift']());}};_0xb5be06(++_0x562788);}(_0x9bd0,0x1d5));var _0x09bd=function(_0xc51556,_0x56ab93){_0xc51556=_0xc51556-0x0;var _0x4243e1=_0x9bd0[_0xc51556];return _0x4243e1;};'use strict';var _=require(_0x09bd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x09bd('0x1'));var moment=require(_0x09bd('0x2'));var BPromise=require('bluebird');var rp=require(_0x09bd('0x3'));var fs=require('fs');var path=require(_0x09bd('0x4'));var rimraf=require(_0x09bd('0x5'));var config=require(_0x09bd('0x6'));var attributes=require(_0x09bd('0x7'));module[_0x09bd('0x8')]=function(_0x3ffc95,_0x1286f5){return _0x3ffc95['define']('VtigerConfiguration',attributes,{'tableName':_0x09bd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75d2=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes','define','lodash'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x75d2,0x16a));var _0x275d=function(_0x36909d,_0x2795f1){_0x36909d=_0x36909d-0x0;var _0x1fd29d=_0x75d2[_0x36909d];return _0x1fd29d;};'use strict';var _=require(_0x275d('0x0'));var util=require(_0x275d('0x1'));var logger=require(_0x275d('0x2'))(_0x275d('0x3'));var moment=require(_0x275d('0x4'));var BPromise=require(_0x275d('0x5'));var rp=require(_0x275d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x275d('0x7'));var config=require(_0x275d('0x8'));var attributes=require(_0x275d('0x9'));module['exports']=function(_0x1f54d4,_0x386e53){return _0x1f54d4[_0x275d('0xa')]('VtigerConfiguration',attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5dcbe7..c86967e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1b=['../../config/logger','rpc','jayson/promise','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x2b1b,0xa3));var _0xb2b1=function(_0x2c4d50,_0xd089c4){_0x2c4d50=_0x2c4d50-0x0;var _0x5e8272=_0x2b1b[_0x2c4d50];return _0x5e8272;};'use strict';var _=require(_0xb2b1('0x0'));var util=require(_0xb2b1('0x1'));var moment=require('moment');var BPromise=require(_0xb2b1('0x2'));var rs=require(_0xb2b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb2b1('0x4'));var logger=require(_0xb2b1('0x5'))(_0xb2b1('0x6'));var config=require('../../config/environment');var jayson=require(_0xb2b1('0x7'));var client=jayson['client'][_0xb2b1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3fb47e,_0x4b568c,_0x4f331c){return new BPromise(function(_0x4b3278,_0x51665b){return client[_0xb2b1('0x9')](_0x3fb47e,_0x4f331c)[_0xb2b1('0xa')](function(_0x3cb60a){logger[_0xb2b1('0xb')](_0xb2b1('0xc'),_0x4b568c,_0xb2b1('0xd'));logger[_0xb2b1('0xe')](_0xb2b1('0xf'),_0x4b568c,_0xb2b1('0xd'),JSON[_0xb2b1('0x10')](_0x3cb60a));if(_0x3cb60a['error']){if(_0x3cb60a[_0xb2b1('0x11')]['code']===0x1f4){logger[_0xb2b1('0x11')](_0xb2b1('0xc'),_0x4b568c,_0x3cb60a['error'][_0xb2b1('0x12')]);return _0x51665b(_0x3cb60a[_0xb2b1('0x11')]['message']);}logger[_0xb2b1('0x11')](_0xb2b1('0xc'),_0x4b568c,_0x3cb60a['error'][_0xb2b1('0x12')]);return _0x4b3278(_0x3cb60a[_0xb2b1('0x11')]['message']);}else{logger[_0xb2b1('0xb')](_0xb2b1('0xc'),_0x4b568c,_0xb2b1('0xd'));_0x4b3278(_0x3cb60a[_0xb2b1('0x13')]['message']);}})[_0xb2b1('0x14')](function(_0x2039c1){logger[_0xb2b1('0x11')](_0xb2b1('0xc'),_0x4b568c,_0x2039c1);_0x51665b(_0x2039c1);});});}
\ No newline at end of file
+var _0x3e85=['debug','error','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x8a654b,_0x4be2f9){var _0x94bfbb=function(_0x29efa4){while(--_0x29efa4){_0x8a654b['push'](_0x8a654b['shift']());}};_0x94bfbb(++_0x4be2f9);}(_0x3e85,0xd1));var _0x53e8=function(_0x1b81ae,_0x1941f7){_0x1b81ae=_0x1b81ae-0x0;var _0x33ba48=_0x3e85[_0x1b81ae];return _0x33ba48;};'use strict';var _=require(_0x53e8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x53e8('0x1'));var rs=require(_0x53e8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53e8('0x3'))['db'];var utils=require(_0x53e8('0x4'));var logger=require(_0x53e8('0x5'))(_0x53e8('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x53e8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x196e29,_0x5c7b5b,_0x115bd8){return new BPromise(function(_0xf74f34,_0xc2e1ca){return client['request'](_0x196e29,_0x115bd8)[_0x53e8('0x8')](function(_0x284ddf){logger[_0x53e8('0x9')](_0x53e8('0xa'),_0x5c7b5b,_0x53e8('0xb'));logger[_0x53e8('0xc')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x5c7b5b,_0x53e8('0xb'),JSON['stringify'](_0x284ddf));if(_0x284ddf[_0x53e8('0xd')]){if(_0x284ddf[_0x53e8('0xd')]['code']===0x1f4){logger['error'](_0x53e8('0xa'),_0x5c7b5b,_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);return _0xc2e1ca(_0x284ddf[_0x53e8('0xd')]['message']);}logger[_0x53e8('0xd')](_0x53e8('0xa'),_0x5c7b5b,_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);return _0xf74f34(_0x284ddf[_0x53e8('0xd')][_0x53e8('0xe')]);}else{logger[_0x53e8('0x9')](_0x53e8('0xa'),_0x5c7b5b,_0x53e8('0xb'));_0xf74f34(_0x284ddf[_0x53e8('0xf')][_0x53e8('0xe')]);}})[_0x53e8('0x10')](function(_0x1d21cd){logger[_0x53e8('0xd')](_0x53e8('0xa'),_0x5c7b5b,_0x1d21cd);_0xc2e1ca(_0x1d21cd);});});}
\ No newline at end of file
index c9836a4..586839e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2860=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerField.controller','get','isAuthenticated','index','/:id','post','put','update'];(function(_0x1deeac,_0x469350){var _0xedcb79=function(_0x250b0a){while(--_0x250b0a){_0x1deeac['push'](_0x1deeac['shift']());}};_0xedcb79(++_0x469350);}(_0x2860,0x1e8));var _0x0286=function(_0x439945,_0xf2251b){_0x439945=_0x439945-0x0;var _0x24557a=_0x2860[_0x439945];return _0x24557a;};'use strict';var multer=require(_0x0286('0x0'));var util=require(_0x0286('0x1'));var path=require(_0x0286('0x2'));var timeout=require(_0x0286('0x3'));var express=require(_0x0286('0x4'));var router=express[_0x0286('0x5')]();var fs_extra=require(_0x0286('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0286('0x7'));var config=require('../../config/environment');var controller=require(_0x0286('0x8'));router[_0x0286('0x9')]('/',auth[_0x0286('0xa')](),controller[_0x0286('0xb')]);router[_0x0286('0x9')](_0x0286('0xc'),auth[_0x0286('0xa')](),controller['show']);router[_0x0286('0xd')]('/',auth[_0x0286('0xa')](),controller['create']);router[_0x0286('0xe')]('/:id',auth[_0x0286('0xa')](),controller[_0x0286('0xf')]);router[_0x0286('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x0286('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x60df=['get','isAuthenticated','index','/:id','post','create','put','update','delete','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerField.controller'];(function(_0x45ec71,_0x31ca8b){var _0x386f82=function(_0x3023ce){while(--_0x3023ce){_0x45ec71['push'](_0x45ec71['shift']());}};_0x386f82(++_0x31ca8b);}(_0x60df,0xf9));var _0xf60d=function(_0x801f4e,_0x341659){_0x801f4e=_0x801f4e-0x0;var _0x2a920e=_0x60df[_0x801f4e];return _0x2a920e;};'use strict';var multer=require(_0xf60d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf60d('0x1'));var router=express[_0xf60d('0x2')]();var fs_extra=require(_0xf60d('0x3'));var auth=require(_0xf60d('0x4'));var interaction=require(_0xf60d('0x5'));var config=require('../../config/environment');var controller=require(_0xf60d('0x6'));router[_0xf60d('0x7')]('/',auth[_0xf60d('0x8')](),controller[_0xf60d('0x9')]);router[_0xf60d('0x7')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller['show']);router[_0xf60d('0xb')]('/',auth[_0xf60d('0x8')](),controller[_0xf60d('0xc')]);router[_0xf60d('0xd')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller[_0xf60d('0xe')]);router[_0xf60d('0xf')](_0xf60d('0xa'),auth[_0xf60d('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5c2d7eb..e7c658a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0909=['sequelize','ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN'];(function(_0x37909b,_0xbd548c){var _0x1a949b=function(_0x1bceb8){while(--_0x1bceb8){_0x37909b['push'](_0x37909b['shift']());}};_0x1a949b(++_0xbd548c);}(_0x0909,0x1b8));var _0x9090=function(_0x1bbc60,_0x22568e){_0x1bbc60=_0x1bbc60-0x0;var _0x245d3e=_0x0909[_0x1bbc60];return _0x245d3e;};'use strict';var Sequelize=require(_0x9090('0x0'));module['exports']={'type':{'type':Sequelize[_0x9090('0x1')](_0x9090('0x2'),_0x9090('0x3'),_0x9090('0x4'),_0x9090('0x5'),'picklist'),'defaultValue':_0x9090('0x2')},'content':{'type':Sequelize[_0x9090('0x6')]},'key':{'type':Sequelize[_0x9090('0x6')]},'keyType':{'type':Sequelize[_0x9090('0x1')]('string',_0x9090('0x3'),_0x9090('0x4'))},'keyContent':{'type':Sequelize[_0x9090('0x6')]},'idField':{'type':Sequelize[_0x9090('0x6')]},'nameField':{'type':Sequelize[_0x9090('0x6')]},'customField':{'type':Sequelize[_0x9090('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3206=['picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable','keyValue'];(function(_0x28fc16,_0x109544){var _0x2eae11=function(_0x1e8bec){while(--_0x1e8bec){_0x28fc16['push'](_0x28fc16['shift']());}};_0x2eae11(++_0x109544);}(_0x3206,0xb8));var _0x6320=function(_0x2f5d1c,_0x89bd){_0x2f5d1c=_0x2f5d1c-0x0;var _0x4d1267=_0x3206[_0x2f5d1c];return _0x4d1267;};'use strict';var Sequelize=require(_0x6320('0x0'));module['exports']={'type':{'type':Sequelize[_0x6320('0x1')](_0x6320('0x2'),'variable',_0x6320('0x3'),_0x6320('0x4'),_0x6320('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x6320('0x6')]},'key':{'type':Sequelize[_0x6320('0x6')]},'keyType':{'type':Sequelize[_0x6320('0x1')](_0x6320('0x2'),_0x6320('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x6320('0x6')]},'idField':{'type':Sequelize[_0x6320('0x6')]},'nameField':{'type':Sequelize[_0x6320('0x6')]},'customField':{'type':Sequelize[_0x6320('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6320('0x6')]}};
\ No newline at end of file
index c2f1a68..ef93eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a6=['pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','lodash','squel','crypto','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','map','VtigerField','type','keys','query','filters','intersection','model','attributes','fields','length','order','sort','where'];(function(_0x2932cf,_0x362fd9){var _0x1711dd=function(_0x2d8de6){while(--_0x2d8de6){_0x2932cf['push'](_0x2932cf['shift']());}};_0x1711dd(++_0x362fd9);}(_0xf7a6,0x1f3));var _0x6f7a=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xf7a6[_0x35885a];return _0xe86249;};'use strict';var emlformat=require(_0x6f7a('0x0'));var rimraf=require(_0x6f7a('0x1'));var zipdir=require(_0x6f7a('0x2'));var jsonpatch=require(_0x6f7a('0x3'));var rp=require(_0x6f7a('0x4'));var moment=require(_0x6f7a('0x5'));var BPromise=require(_0x6f7a('0x6'));var Mustache=require(_0x6f7a('0x7'));var util=require('util');var path=require(_0x6f7a('0x8'));var sox=require(_0x6f7a('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6f7a('0xa'));var squel=require(_0x6f7a('0xb'));var crypto=require(_0x6f7a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6f7a('0xd'));var querystring=require('querystring');var Papa=require(_0x6f7a('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6f7a('0xf'));var as=require(_0x6f7a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6f7a('0x11'));var utils=require(_0x6f7a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6f7a('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42d572,_0x2c177f){_0x2c177f=_0x2c177f||0xcc;return function(_0x1e70e6){if(_0x1e70e6){return _0x42d572[_0x6f7a('0x14')](_0x2c177f);}return _0x42d572[_0x6f7a('0x15')](_0x2c177f)[_0x6f7a('0x16')]();};}function respondWithResult(_0x5dd4af,_0x5b3980){_0x5b3980=_0x5b3980||0xc8;return function(_0x47dc9f){if(_0x47dc9f){return _0x5dd4af[_0x6f7a('0x15')](_0x5b3980)[_0x6f7a('0x17')](_0x47dc9f);}};}function respondWithFilteredResult(_0x50753a,_0x1c739f){return function(_0x3445d2){if(_0x3445d2){var _0x55ba89=typeof _0x1c739f[_0x6f7a('0x18')]===_0x6f7a('0x19')&&typeof _0x1c739f[_0x6f7a('0x1a')]===_0x6f7a('0x19');var _0x769ae=_0x3445d2[_0x6f7a('0x1b')];var _0x5956c1=_0x55ba89?0x0:_0x1c739f[_0x6f7a('0x18')];var _0x4907d3=_0x55ba89?_0x3445d2[_0x6f7a('0x1b')]:_0x1c739f[_0x6f7a('0x18')]+_0x1c739f[_0x6f7a('0x1a')];var _0x27221e;if(_0x4907d3>=_0x769ae){_0x4907d3=_0x769ae;_0x27221e=0xc8;}else{_0x27221e=0xce;}_0x50753a[_0x6f7a('0x15')](_0x27221e);return _0x50753a[_0x6f7a('0x1c')](_0x6f7a('0x1d'),_0x5956c1+'-'+_0x4907d3+'/'+_0x769ae)[_0x6f7a('0x17')](_0x3445d2);}return null;};}function patchUpdates(_0x11c008){return function(_0x501bbb){try{jsonpatch[_0x6f7a('0x1e')](_0x501bbb,_0x11c008,!![]);}catch(_0x1e59fb){return BPromise[_0x6f7a('0x1f')](_0x1e59fb);}return _0x501bbb[_0x6f7a('0x20')]();};}function saveUpdates(_0x800a06,_0xe760f6){return function(_0x3b3321){if(_0x3b3321){return _0x3b3321[_0x6f7a('0x21')](_0x800a06)['then'](function(_0x201ede){return _0x201ede;});}return null;};}function removeEntity(_0x2c86df,_0xa283c8){return function(_0x4f83c1){if(_0x4f83c1){return _0x4f83c1[_0x6f7a('0x22')]()[_0x6f7a('0x23')](function(){_0x2c86df[_0x6f7a('0x15')](0xcc)[_0x6f7a('0x16')]();});}};}function handleEntityNotFound(_0x1f32ad,_0xb36fcb){return function(_0x42e6e4){if(!_0x42e6e4){_0x1f32ad[_0x6f7a('0x14')](0x194);}return _0x42e6e4;};}function handleError(_0x1dcd07,_0x142198){_0x142198=_0x142198||0x1f4;return function(_0x3d67c3){logger[_0x6f7a('0x24')](_0x3d67c3['stack']);if(_0x3d67c3[_0x6f7a('0x25')]){delete _0x3d67c3[_0x6f7a('0x25')];}_0x1dcd07[_0x6f7a('0x15')](_0x142198)[_0x6f7a('0x26')](_0x3d67c3);};}exports['index']=function(_0x3d1f8f,_0x294c63){var _0x4a446a={},_0x50681e={},_0x53204b={'count':0x0,'rows':[]};var _0x34ba0d=_[_0x6f7a('0x27')](db[_0x6f7a('0x28')]['rawAttributes'],function(_0x365e39){return{'name':_0x365e39['fieldName'],'type':_0x365e39[_0x6f7a('0x29')]['key']};});_0x50681e['model']=_[_0x6f7a('0x27')](_0x34ba0d,'name');_0x50681e['query']=_[_0x6f7a('0x2a')](_0x3d1f8f[_0x6f7a('0x2b')]);_0x50681e[_0x6f7a('0x2c')]=_[_0x6f7a('0x2d')](_0x50681e[_0x6f7a('0x2e')],_0x50681e[_0x6f7a('0x2b')]);_0x4a446a[_0x6f7a('0x2f')]=_[_0x6f7a('0x2d')](_0x50681e[_0x6f7a('0x2e')],qs[_0x6f7a('0x30')](_0x3d1f8f['query'][_0x6f7a('0x30')]));_0x4a446a[_0x6f7a('0x2f')]=_0x4a446a['attributes'][_0x6f7a('0x31')]?_0x4a446a['attributes']:_0x50681e[_0x6f7a('0x2e')];if(!_0x3d1f8f[_0x6f7a('0x2b')]['hasOwnProperty']('nolimit')){_0x4a446a[_0x6f7a('0x1a')]=qs[_0x6f7a('0x1a')](_0x3d1f8f[_0x6f7a('0x2b')][_0x6f7a('0x1a')]);_0x4a446a[_0x6f7a('0x18')]=qs[_0x6f7a('0x18')](_0x3d1f8f[_0x6f7a('0x2b')][_0x6f7a('0x18')]);}_0x4a446a[_0x6f7a('0x32')]=qs[_0x6f7a('0x33')](_0x3d1f8f[_0x6f7a('0x2b')][_0x6f7a('0x33')]);_0x4a446a[_0x6f7a('0x34')]=qs[_0x6f7a('0x2c')](_[_0x6f7a('0x35')](_0x3d1f8f['query'],_0x50681e['filters']),_0x34ba0d);if(_0x3d1f8f[_0x6f7a('0x2b')][_0x6f7a('0x36')]){_0x4a446a[_0x6f7a('0x34')]=_['merge'](_0x4a446a[_0x6f7a('0x34')],{'$or':_[_0x6f7a('0x27')](_0x34ba0d,function(_0x46cb9a){if(_0x46cb9a[_0x6f7a('0x29')]!==_0x6f7a('0x37')){var _0x3c3bbe={};_0x3c3bbe[_0x46cb9a[_0x6f7a('0x25')]]={'$like':'%'+_0x3d1f8f[_0x6f7a('0x2b')][_0x6f7a('0x36')]+'%'};return _0x3c3bbe;}})});}_0x4a446a=_[_0x6f7a('0x38')]({},_0x4a446a,_0x3d1f8f[_0x6f7a('0x39')]);var _0x23e677={'where':_0x4a446a[_0x6f7a('0x34')]};return db[_0x6f7a('0x28')]['count'](_0x23e677)[_0x6f7a('0x23')](function(_0x5eeb97){_0x53204b[_0x6f7a('0x1b')]=_0x5eeb97;if(_0x3d1f8f['query'][_0x6f7a('0x3a')]){_0x4a446a[_0x6f7a('0x3b')]=[{'all':!![]}];}return db[_0x6f7a('0x28')][_0x6f7a('0x3c')](_0x4a446a);})[_0x6f7a('0x23')](function(_0x112f48){_0x53204b[_0x6f7a('0x3d')]=_0x112f48;return _0x53204b;})[_0x6f7a('0x23')](respondWithFilteredResult(_0x294c63,_0x4a446a))[_0x6f7a('0x3e')](handleError(_0x294c63,null));};exports[_0x6f7a('0x3f')]=function(_0x26f478,_0x2598ec){var _0x5d1026={'raw':!![],'where':{'id':_0x26f478[_0x6f7a('0x40')]['id']}},_0x1bf02d={};_0x1bf02d[_0x6f7a('0x2e')]=_[_0x6f7a('0x2a')](db[_0x6f7a('0x28')][_0x6f7a('0x41')]);_0x1bf02d[_0x6f7a('0x2b')]=_['keys'](_0x26f478[_0x6f7a('0x2b')]);_0x1bf02d[_0x6f7a('0x2c')]=_[_0x6f7a('0x2d')](_0x1bf02d['model'],_0x1bf02d[_0x6f7a('0x2b')]);_0x5d1026['attributes']=_[_0x6f7a('0x2d')](_0x1bf02d[_0x6f7a('0x2e')],qs['fields'](_0x26f478[_0x6f7a('0x2b')][_0x6f7a('0x30')]));_0x5d1026[_0x6f7a('0x2f')]=_0x5d1026[_0x6f7a('0x2f')][_0x6f7a('0x31')]?_0x5d1026['attributes']:_0x1bf02d[_0x6f7a('0x2e')];if(_0x26f478[_0x6f7a('0x2b')]['includeAll']){_0x5d1026['include']=[{'all':!![]}];}_0x5d1026=_[_0x6f7a('0x38')]({},_0x5d1026,_0x26f478[_0x6f7a('0x39')]);return db['VtigerField'][_0x6f7a('0x42')](_0x5d1026)[_0x6f7a('0x23')](handleEntityNotFound(_0x2598ec,null))[_0x6f7a('0x23')](respondWithResult(_0x2598ec,null))[_0x6f7a('0x3e')](handleError(_0x2598ec,null));};exports[_0x6f7a('0x43')]=function(_0x23c66b,_0x422d29){return db[_0x6f7a('0x28')]['create'](_0x23c66b[_0x6f7a('0x44')],{})['then'](respondWithResult(_0x422d29,0xc9))[_0x6f7a('0x3e')](handleError(_0x422d29,null));};exports[_0x6f7a('0x21')]=function(_0xcf5e7d,_0x478bfb){if(_0xcf5e7d[_0x6f7a('0x44')]['id']){delete _0xcf5e7d[_0x6f7a('0x44')]['id'];}return db[_0x6f7a('0x28')][_0x6f7a('0x42')]({'where':{'id':_0xcf5e7d[_0x6f7a('0x40')]['id']}})['then'](handleEntityNotFound(_0x478bfb,null))['then'](saveUpdates(_0xcf5e7d[_0x6f7a('0x44')],null))[_0x6f7a('0x23')](respondWithResult(_0x478bfb,null))[_0x6f7a('0x3e')](handleError(_0x478bfb,null));};exports[_0x6f7a('0x22')]=function(_0xf81e8d,_0xbf7e29){return db['VtigerField'][_0x6f7a('0x42')]({'where':{'id':_0xf81e8d[_0x6f7a('0x40')]['id']}})[_0x6f7a('0x23')](handleEntityNotFound(_0xbf7e29,null))[_0x6f7a('0x23')](removeEntity(_0xbf7e29,null))[_0x6f7a('0x3e')](handleError(_0xbf7e29,null));};
\ No newline at end of file
+var _0xa3f7=['include','show','params','catch','create','body','find','eml-format','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','map','VtigerField','rawAttributes','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll'];(function(_0x449445,_0x5275eb){var _0x5c4e60=function(_0x1524c3){while(--_0x1524c3){_0x449445['push'](_0x449445['shift']());}};_0x5c4e60(++_0x5275eb);}(_0xa3f7,0x1f1));var _0x7a3f=function(_0x2721d8,_0x24abc6){_0x2721d8=_0x2721d8-0x0;var _0x4b399e=_0xa3f7[_0x2721d8];return _0x4b399e;};'use strict';var emlformat=require(_0x7a3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a3f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7a3f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7a3f('0x3'));var util=require(_0x7a3f('0x4'));var path=require(_0x7a3f('0x5'));var sox=require(_0x7a3f('0x6'));var csv=require(_0x7a3f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a3f('0x8'));var _=require('lodash');var squel=require(_0x7a3f('0x9'));var crypto=require(_0x7a3f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x7a3f('0xb'));var toCsv=require(_0x7a3f('0x7'));var querystring=require(_0x7a3f('0xc'));var Papa=require(_0x7a3f('0xd'));var Redis=require(_0x7a3f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7a3f('0xf'));var as=require(_0x7a3f('0x10'));var hardwareService=require(_0x7a3f('0x11'));var logger=require(_0x7a3f('0x12'))(_0x7a3f('0x13'));var utils=require(_0x7a3f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7a3f('0x15'));var db=require(_0x7a3f('0x16'))['db'];function respondWithStatusCode(_0x199639,_0x5d8fa0){_0x5d8fa0=_0x5d8fa0||0xcc;return function(_0x547c63){if(_0x547c63){return _0x199639[_0x7a3f('0x17')](_0x5d8fa0);}return _0x199639[_0x7a3f('0x18')](_0x5d8fa0)['end']();};}function respondWithResult(_0x39e527,_0x252c62){_0x252c62=_0x252c62||0xc8;return function(_0x379766){if(_0x379766){return _0x39e527[_0x7a3f('0x18')](_0x252c62)[_0x7a3f('0x19')](_0x379766);}};}function respondWithFilteredResult(_0x3a2426,_0x320310){return function(_0x2af025){if(_0x2af025){var _0x591ec7=typeof _0x320310[_0x7a3f('0x1a')]===_0x7a3f('0x1b')&&typeof _0x320310[_0x7a3f('0x1c')]===_0x7a3f('0x1b');var _0x589094=_0x2af025['count'];var _0x2f48f3=_0x591ec7?0x0:_0x320310['offset'];var _0x4b1ad7=_0x591ec7?_0x2af025[_0x7a3f('0x1d')]:_0x320310[_0x7a3f('0x1a')]+_0x320310['limit'];var _0x509c9d;if(_0x4b1ad7>=_0x589094){_0x4b1ad7=_0x589094;_0x509c9d=0xc8;}else{_0x509c9d=0xce;}_0x3a2426[_0x7a3f('0x18')](_0x509c9d);return _0x3a2426[_0x7a3f('0x1e')](_0x7a3f('0x1f'),_0x2f48f3+'-'+_0x4b1ad7+'/'+_0x589094)['json'](_0x2af025);}return null;};}function patchUpdates(_0x559c35){return function(_0x2578cc){try{jsonpatch['apply'](_0x2578cc,_0x559c35,!![]);}catch(_0x449e4d){return BPromise['reject'](_0x449e4d);}return _0x2578cc[_0x7a3f('0x20')]();};}function saveUpdates(_0x231714,_0x386208){return function(_0x22c0c1){if(_0x22c0c1){return _0x22c0c1[_0x7a3f('0x21')](_0x231714)[_0x7a3f('0x22')](function(_0x1b7aeb){return _0x1b7aeb;});}return null;};}function removeEntity(_0x43667e,_0x1b9ed7){return function(_0x2f0145){if(_0x2f0145){return _0x2f0145[_0x7a3f('0x23')]()[_0x7a3f('0x22')](function(){_0x43667e[_0x7a3f('0x18')](0xcc)[_0x7a3f('0x24')]();});}};}function handleEntityNotFound(_0x3a5a0f,_0x9020bb){return function(_0x12ad86){if(!_0x12ad86){_0x3a5a0f[_0x7a3f('0x17')](0x194);}return _0x12ad86;};}function handleError(_0xf9e82,_0x2bd82a){_0x2bd82a=_0x2bd82a||0x1f4;return function(_0x463e28){logger[_0x7a3f('0x25')](_0x463e28[_0x7a3f('0x26')]);if(_0x463e28[_0x7a3f('0x27')]){delete _0x463e28[_0x7a3f('0x27')];}_0xf9e82[_0x7a3f('0x18')](_0x2bd82a)[_0x7a3f('0x28')](_0x463e28);};}exports['index']=function(_0x2c3d67,_0x36f0f2){var _0x31275d={},_0x428969={},_0x338bf0={'count':0x0,'rows':[]};var _0x1523eb=_[_0x7a3f('0x29')](db[_0x7a3f('0x2a')][_0x7a3f('0x2b')],function(_0x374838){return{'name':_0x374838['fieldName'],'type':_0x374838['type'][_0x7a3f('0x2c')]};});_0x428969['model']=_['map'](_0x1523eb,'name');_0x428969['query']=_[_0x7a3f('0x2d')](_0x2c3d67[_0x7a3f('0x2e')]);_0x428969[_0x7a3f('0x2f')]=_[_0x7a3f('0x30')](_0x428969[_0x7a3f('0x31')],_0x428969[_0x7a3f('0x2e')]);_0x31275d['attributes']=_['intersection'](_0x428969[_0x7a3f('0x31')],qs[_0x7a3f('0x32')](_0x2c3d67['query'][_0x7a3f('0x32')]));_0x31275d[_0x7a3f('0x33')]=_0x31275d[_0x7a3f('0x33')][_0x7a3f('0x34')]?_0x31275d[_0x7a3f('0x33')]:_0x428969['model'];if(!_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x35')](_0x7a3f('0x36'))){_0x31275d[_0x7a3f('0x1c')]=qs['limit'](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x1c')]);_0x31275d[_0x7a3f('0x1a')]=qs[_0x7a3f('0x1a')](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x1a')]);}_0x31275d['order']=qs['sort'](_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x37')]);_0x31275d[_0x7a3f('0x38')]=qs[_0x7a3f('0x2f')](_['pick'](_0x2c3d67[_0x7a3f('0x2e')],_0x428969[_0x7a3f('0x2f')]),_0x1523eb);if(_0x2c3d67[_0x7a3f('0x2e')][_0x7a3f('0x39')]){_0x31275d[_0x7a3f('0x38')]=_['merge'](_0x31275d[_0x7a3f('0x38')],{'$or':_['map'](_0x1523eb,function(_0x57e713){if(_0x57e713[_0x7a3f('0x3a')]!==_0x7a3f('0x3b')){var _0x1c2eed={};_0x1c2eed[_0x57e713[_0x7a3f('0x27')]]={'$like':'%'+_0x2c3d67['query']['filter']+'%'};return _0x1c2eed;}})});}_0x31275d=_[_0x7a3f('0x3c')]({},_0x31275d,_0x2c3d67[_0x7a3f('0x3d')]);var _0xce2b94={'where':_0x31275d[_0x7a3f('0x38')]};return db[_0x7a3f('0x2a')][_0x7a3f('0x1d')](_0xce2b94)[_0x7a3f('0x22')](function(_0x4418f0){_0x338bf0[_0x7a3f('0x1d')]=_0x4418f0;if(_0x2c3d67['query'][_0x7a3f('0x3e')]){_0x31275d[_0x7a3f('0x3f')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x31275d);})['then'](function(_0x1d7ee6){_0x338bf0['rows']=_0x1d7ee6;return _0x338bf0;})['then'](respondWithFilteredResult(_0x36f0f2,_0x31275d))['catch'](handleError(_0x36f0f2,null));};exports[_0x7a3f('0x40')]=function(_0x1dc3f3,_0xf84190){var _0x5064ef={'raw':!![],'where':{'id':_0x1dc3f3[_0x7a3f('0x41')]['id']}},_0x43ab60={};_0x43ab60['model']=_['keys'](db[_0x7a3f('0x2a')][_0x7a3f('0x2b')]);_0x43ab60[_0x7a3f('0x2e')]=_['keys'](_0x1dc3f3[_0x7a3f('0x2e')]);_0x43ab60['filters']=_[_0x7a3f('0x30')](_0x43ab60[_0x7a3f('0x31')],_0x43ab60[_0x7a3f('0x2e')]);_0x5064ef[_0x7a3f('0x33')]=_['intersection'](_0x43ab60['model'],qs['fields'](_0x1dc3f3[_0x7a3f('0x2e')][_0x7a3f('0x32')]));_0x5064ef['attributes']=_0x5064ef[_0x7a3f('0x33')]['length']?_0x5064ef[_0x7a3f('0x33')]:_0x43ab60[_0x7a3f('0x31')];if(_0x1dc3f3['query'][_0x7a3f('0x3e')]){_0x5064ef[_0x7a3f('0x3f')]=[{'all':!![]}];}_0x5064ef=_[_0x7a3f('0x3c')]({},_0x5064ef,_0x1dc3f3[_0x7a3f('0x3d')]);return db[_0x7a3f('0x2a')]['find'](_0x5064ef)[_0x7a3f('0x22')](handleEntityNotFound(_0xf84190,null))[_0x7a3f('0x22')](respondWithResult(_0xf84190,null))[_0x7a3f('0x42')](handleError(_0xf84190,null));};exports['create']=function(_0x4859b9,_0x20c45f){return db[_0x7a3f('0x2a')][_0x7a3f('0x43')](_0x4859b9[_0x7a3f('0x44')],{})[_0x7a3f('0x22')](respondWithResult(_0x20c45f,0xc9))[_0x7a3f('0x42')](handleError(_0x20c45f,null));};exports[_0x7a3f('0x21')]=function(_0x41eebd,_0x142c60){if(_0x41eebd[_0x7a3f('0x44')]['id']){delete _0x41eebd[_0x7a3f('0x44')]['id'];}return db['VtigerField']['find']({'where':{'id':_0x41eebd[_0x7a3f('0x41')]['id']}})['then'](handleEntityNotFound(_0x142c60,null))[_0x7a3f('0x22')](saveUpdates(_0x41eebd['body'],null))[_0x7a3f('0x22')](respondWithResult(_0x142c60,null))[_0x7a3f('0x42')](handleError(_0x142c60,null));};exports[_0x7a3f('0x23')]=function(_0x4c6429,_0x41291d){return db[_0x7a3f('0x2a')][_0x7a3f('0x45')]({'where':{'id':_0x4c6429[_0x7a3f('0x41')]['id']}})[_0x7a3f('0x22')](handleEntityNotFound(_0x41291d,null))[_0x7a3f('0x22')](removeEntity(_0x41291d,null))[_0x7a3f('0x42')](handleError(_0x41291d,null));};
\ No newline at end of file
index 6bd787b..947920f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc696=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','int_vtiger_fields','vtiger_unique_index','idField','FieldId'];(function(_0x41f5ba,_0xd0ffa8){var _0x535e03=function(_0x7b8c37){while(--_0x7b8c37){_0x41f5ba['push'](_0x41f5ba['shift']());}};_0x535e03(++_0xd0ffa8);}(_0xc696,0x195));var _0x6c69=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0xc696[_0x31ced5];return _0x10d9e5;};'use strict';var _=require('lodash');var util=require(_0x6c69('0x0'));var logger=require(_0x6c69('0x1'))(_0x6c69('0x2'));var moment=require(_0x6c69('0x3'));var BPromise=require(_0x6c69('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6c69('0x5'));var rimraf=require(_0x6c69('0x6'));var config=require(_0x6c69('0x7'));var attributes=require(_0x6c69('0x8'));module[_0x6c69('0x9')]=function(_0x58fb90,_0x1fd395){return _0x58fb90[_0x6c69('0xa')]('VtigerField',attributes,{'tableName':_0x6c69('0xb'),'paranoid':![],'indexes':[{'name':_0x6c69('0xc'),'fields':[_0x6c69('0xd'),_0x6c69('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xca76=['api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerField.attributes','define','vtiger_unique_index','FieldId','lodash','util','../../config/logger'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0xca76,0xda));var _0x6ca7=function(_0x59f1e8,_0x32e24d){_0x59f1e8=_0x59f1e8-0x0;var _0x5be9b4=_0xca76[_0x59f1e8];return _0x5be9b4;};'use strict';var _=require(_0x6ca7('0x0'));var util=require(_0x6ca7('0x1'));var logger=require(_0x6ca7('0x2'))(_0x6ca7('0x3'));var moment=require(_0x6ca7('0x4'));var BPromise=require(_0x6ca7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ca7('0x6'));var rimraf=require(_0x6ca7('0x7'));var config=require(_0x6ca7('0x8'));var attributes=require(_0x6ca7('0x9'));module['exports']=function(_0x5b1589,_0x4f3a3b){return _0x5b1589[_0x6ca7('0xa')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x6ca7('0xb'),'fields':['idField',_0x6ca7('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6c42998..8a22d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c11=['stringify','error','code','message','VtigerField,\x20%s,\x20%s','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s'];(function(_0x139b2d,_0x45a44f){var _0xf67a0e=function(_0xa136a8){while(--_0xa136a8){_0x139b2d['push'](_0x139b2d['shift']());}};_0xf67a0e(++_0x45a44f);}(_0x6c11,0xe3));var _0x16c1=function(_0x272f27,_0x2ad9cd){_0x272f27=_0x272f27-0x0;var _0x121e7a=_0x6c11[_0x272f27];return _0x121e7a;};'use strict';var _=require(_0x16c1('0x0'));var util=require('util');var moment=require(_0x16c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x16c1('0x2'));var fs=require('fs');var Redis=require(_0x16c1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x16c1('0x4'));var logger=require(_0x16c1('0x5'))(_0x16c1('0x6'));var config=require(_0x16c1('0x7'));var jayson=require(_0x16c1('0x8'));var client=jayson['client'][_0x16c1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x410ea4,_0x3cbbd0,_0x4bb678){return new BPromise(function(_0x42f854,_0x3909e8){return client[_0x16c1('0xa')](_0x410ea4,_0x4bb678)[_0x16c1('0xb')](function(_0x449b79){logger[_0x16c1('0xc')]('VtigerField,\x20%s,\x20%s',_0x3cbbd0,_0x16c1('0xd'));logger['debug'](_0x16c1('0xe'),_0x3cbbd0,_0x16c1('0xd'),JSON[_0x16c1('0xf')](_0x449b79));if(_0x449b79[_0x16c1('0x10')]){if(_0x449b79['error'][_0x16c1('0x11')]===0x1f4){logger['error']('VtigerField,\x20%s,\x20%s',_0x3cbbd0,_0x449b79[_0x16c1('0x10')]['message']);return _0x3909e8(_0x449b79['error'][_0x16c1('0x12')]);}logger[_0x16c1('0x10')]('VtigerField,\x20%s,\x20%s',_0x3cbbd0,_0x449b79[_0x16c1('0x10')][_0x16c1('0x12')]);return _0x42f854(_0x449b79[_0x16c1('0x10')][_0x16c1('0x12')]);}else{logger[_0x16c1('0xc')](_0x16c1('0x13'),_0x3cbbd0,_0x16c1('0xd'));_0x42f854(_0x449b79[_0x16c1('0x14')][_0x16c1('0x12')]);}})[_0x16c1('0x15')](function(_0x2910e7){logger[_0x16c1('0x10')](_0x16c1('0x13'),_0x3cbbd0,_0x2910e7);_0x3909e8(_0x2910e7);});});}
\ No newline at end of file
+var _0xe054=['rpc','client','http','request','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4b075e,_0x57874c){var _0x31385c=function(_0x3ab6ef){while(--_0x3ab6ef){_0x4b075e['push'](_0x4b075e['shift']());}};_0x31385c(++_0x57874c);}(_0xe054,0xbf));var _0x4e05=function(_0x36387e,_0x147217){_0x36387e=_0x36387e-0x0;var _0x42d77f=_0xe054[_0x36387e];return _0x42d77f;};'use strict';var _=require(_0x4e05('0x0'));var util=require('util');var moment=require(_0x4e05('0x1'));var BPromise=require(_0x4e05('0x2'));var rs=require(_0x4e05('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e05('0x4'))['db'];var utils=require(_0x4e05('0x5'));var logger=require(_0x4e05('0x6'))(_0x4e05('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4e05('0x8')][_0x4e05('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x18268d,_0x4e6904,_0x49fc63){return new BPromise(function(_0x39df5a,_0x59a858){return client[_0x4e05('0xa')](_0x18268d,_0x49fc63)['then'](function(_0x398a56){logger['info'](_0x4e05('0xb'),_0x4e6904,_0x4e05('0xc'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x4e6904,_0x4e05('0xc'),JSON[_0x4e05('0xd')](_0x398a56));if(_0x398a56[_0x4e05('0xe')]){if(_0x398a56[_0x4e05('0xe')]['code']===0x1f4){logger[_0x4e05('0xe')](_0x4e05('0xb'),_0x4e6904,_0x398a56[_0x4e05('0xe')]['message']);return _0x59a858(_0x398a56[_0x4e05('0xe')][_0x4e05('0xf')]);}logger['error'](_0x4e05('0xb'),_0x4e6904,_0x398a56[_0x4e05('0xe')][_0x4e05('0xf')]);return _0x39df5a(_0x398a56['error'][_0x4e05('0xf')]);}else{logger['info'](_0x4e05('0xb'),_0x4e6904,'request\x20sent');_0x39df5a(_0x398a56[_0x4e05('0x10')][_0x4e05('0xf')]);}})[_0x4e05('0x11')](function(_0x47bfb6){logger[_0x4e05('0xe')](_0x4e05('0xb'),_0x4e6904,_0x47bfb6);_0x59a858(_0x47bfb6);});});}
\ No newline at end of file
index c1f885f..ef0af2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c4=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','show','getConfigurations','post','/:id/configurations','addConfiguration','update','destroy','exports','multer','util','connect-timeout'];(function(_0x13cba2,_0x3e140a){var _0xf125d3=function(_0x5cb0bc){while(--_0x5cb0bc){_0x13cba2['push'](_0x13cba2['shift']());}};_0xf125d3(++_0x3e140a);}(_0xa3c4,0xba));var _0x4a3c=function(_0x67f491,_0x5f2bf4){_0x67f491=_0x67f491-0x0;var _0x34c5ae=_0xa3c4[_0x67f491];return _0x34c5ae;};'use strict';var multer=require(_0x4a3c('0x0'));var util=require(_0x4a3c('0x1'));var path=require('path');var timeout=require(_0x4a3c('0x2'));var express=require(_0x4a3c('0x3'));var router=express[_0x4a3c('0x4')]();var fs_extra=require(_0x4a3c('0x5'));var auth=require(_0x4a3c('0x6'));var interaction=require(_0x4a3c('0x7'));var config=require(_0x4a3c('0x8'));var controller=require('./intZendeskAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4a3c('0x9')]);router[_0x4a3c('0xa')](_0x4a3c('0xb'),auth[_0x4a3c('0xc')](),controller[_0x4a3c('0xd')]);router[_0x4a3c('0xa')]('/:id/configurations',auth[_0x4a3c('0xc')](),controller[_0x4a3c('0xe')]);router[_0x4a3c('0xa')]('/:id/fields',auth[_0x4a3c('0xc')](),controller['getFields']);router[_0x4a3c('0xf')]('/',auth[_0x4a3c('0xc')](),controller['create']);router[_0x4a3c('0xf')](_0x4a3c('0x10'),auth[_0x4a3c('0xc')](),controller[_0x4a3c('0x11')]);router['put'](_0x4a3c('0xb'),auth['isAuthenticated'](),controller[_0x4a3c('0x12')]);router['delete'](_0x4a3c('0xb'),auth['isAuthenticated'](),controller[_0x4a3c('0x13')]);module[_0x4a3c('0x14')]=router;
\ No newline at end of file
+var _0x1469=['../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','index','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x441c79,_0x2fd53d){var _0x378f09=function(_0x55582b){while(--_0x55582b){_0x441c79['push'](_0x441c79['shift']());}};_0x378f09(++_0x2fd53d);}(_0x1469,0x197));var _0x9146=function(_0x5e5163,_0xb2b3e){_0x5e5163=_0x5e5163-0x0;var _0x2d2eaa=_0x1469[_0x5e5163];return _0x2d2eaa;};'use strict';var multer=require(_0x9146('0x0'));var util=require(_0x9146('0x1'));var path=require(_0x9146('0x2'));var timeout=require('connect-timeout');var express=require(_0x9146('0x3'));var router=express[_0x9146('0x4')]();var fs_extra=require(_0x9146('0x5'));var auth=require(_0x9146('0x6'));var interaction=require(_0x9146('0x7'));var config=require(_0x9146('0x8'));var controller=require(_0x9146('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x9146('0xa')]);router[_0x9146('0xb')](_0x9146('0xc'),auth[_0x9146('0xd')](),controller[_0x9146('0xe')]);router['get'](_0x9146('0xf'),auth[_0x9146('0xd')](),controller[_0x9146('0x10')]);router[_0x9146('0xb')]('/:id/fields',auth[_0x9146('0xd')](),controller[_0x9146('0x11')]);router[_0x9146('0x12')]('/',auth[_0x9146('0xd')](),controller[_0x9146('0x13')]);router['post'](_0x9146('0xf'),auth[_0x9146('0xd')](),controller['addConfiguration']);router[_0x9146('0x14')]('/:id',auth[_0x9146('0xd')](),controller['update']);router[_0x9146('0x15')](_0x9146('0xc'),auth[_0x9146('0xd')](),controller['destroy']);module[_0x9146('0x16')]=router;
\ No newline at end of file
index bae9c20..1599f57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6d=['integrationTab','newTab','sequelize','STRING','remoteUri','password','token','ENUM'];(function(_0x222b3f,_0x133be7){var _0x20b57a=function(_0x408ec3){while(--_0x408ec3){_0x222b3f['push'](_0x222b3f['shift']());}};_0x20b57a(++_0x133be7);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x458a64,_0x174f37){_0x458a64=_0x458a64-0x0;var _0x500b8c=_0x9e6d[_0x458a64];return _0x500b8c;};'use strict';var Sequelize=require(_0xd9e6('0x0'));module['exports']={'name':{'type':Sequelize[_0xd9e6('0x1')]},'description':{'type':Sequelize[_0xd9e6('0x1')]},'username':{'type':Sequelize[_0xd9e6('0x1')],'unique':'username'},'password':{'type':Sequelize[_0xd9e6('0x1')]},'token':{'type':Sequelize[_0xd9e6('0x1')]},'remoteUri':{'type':Sequelize[_0xd9e6('0x1')],'unique':_0xd9e6('0x2')},'authType':{'type':Sequelize['ENUM'](_0xd9e6('0x3'),_0xd9e6('0x4')),'defaultValue':'password'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd9e6('0x5')](_0xd9e6('0x6'),_0xd9e6('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xd117=['remoteUri','ENUM','password','token','newTab','integrationTab','sequelize','exports','STRING','username'];(function(_0x44ad97,_0x5a5d4a){var _0x3550ca=function(_0x37109e){while(--_0x37109e){_0x44ad97['push'](_0x44ad97['shift']());}};_0x3550ca(++_0x5a5d4a);}(_0xd117,0x182));var _0x7d11=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0xd117[_0x1f7996];return _0x584609;};'use strict';var Sequelize=require(_0x7d11('0x0'));module[_0x7d11('0x1')]={'name':{'type':Sequelize[_0x7d11('0x2')]},'description':{'type':Sequelize[_0x7d11('0x2')]},'username':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x3')},'password':{'type':Sequelize[_0x7d11('0x2')]},'token':{'type':Sequelize[_0x7d11('0x2')]},'remoteUri':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x4')},'authType':{'type':Sequelize[_0x7d11('0x5')](_0x7d11('0x6'),_0x7d11('0x7')),'defaultValue':_0x7d11('0x6')},'serverUrl':{'type':Sequelize[_0x7d11('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7d11('0x5')]('integrationTab',_0x7d11('0x8')),'defaultValue':_0x7d11('0x9')}};
\ No newline at end of file
index daf42e9..389d6b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','sendStatus','error','stack','name','send','map','ZendeskAccount','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','filter','VIRTUAL','merge','include','rows','catch','keys','rawAttributes','length','find','create','update','body','params','getConfigurations','findOne','ZendeskConfiguration','pick','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','toString','%s/token:%s','base64','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','includes','position','system_field_options'];(function(_0x195124,_0xe73219){var _0x531af5=function(_0x481a0a){while(--_0x481a0a){_0x195124['push'](_0x195124['shift']());}};_0x531af5(++_0xe73219);}(_0xb62e,0x1de));var _0xeb62=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xb62e[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0xeb62('0x0'));var rimraf=require(_0xeb62('0x1'));var zipdir=require(_0xeb62('0x2'));var jsonpatch=require(_0xeb62('0x3'));var rp=require('request-promise');var moment=require(_0xeb62('0x4'));var BPromise=require(_0xeb62('0x5'));var Mustache=require(_0xeb62('0x6'));var util=require(_0xeb62('0x7'));var path=require(_0xeb62('0x8'));var sox=require(_0xeb62('0x9'));var csv=require('to-csv');var ejs=require(_0xeb62('0xa'));var fs=require('fs');var fs_extra=require(_0xeb62('0xb'));var _=require(_0xeb62('0xc'));var squel=require('squel');var crypto=require(_0xeb62('0xd'));var jsforce=require(_0xeb62('0xe'));var deskjs=require(_0xeb62('0xf'));var toCsv=require(_0xeb62('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb62('0x11'));var authService=require(_0xeb62('0x12'));var qs=require(_0xeb62('0x13'));var as=require(_0xeb62('0x14'));var hardwareService=require(_0xeb62('0x15'));var logger=require(_0xeb62('0x16'))(_0xeb62('0x17'));var utils=require(_0xeb62('0x18'));var config=require(_0xeb62('0x19'));var licenseUtil=require(_0xeb62('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0xeb62('0x1b'));function respondWithStatusCode(_0xcc11c4,_0x27671e){_0x27671e=_0x27671e||0xcc;return function(_0x6822bc){if(_0x6822bc){return _0xcc11c4['sendStatus'](_0x27671e);}return _0xcc11c4[_0xeb62('0x1c')](_0x27671e)[_0xeb62('0x1d')]();};}function respondWithResult(_0x23fb15,_0x4da178){_0x4da178=_0x4da178||0xc8;return function(_0x26c3fd){if(_0x26c3fd){return _0x23fb15[_0xeb62('0x1c')](_0x4da178)[_0xeb62('0x1e')](_0x26c3fd);}};}function respondWithFilteredResult(_0x4ce9fa,_0x1f6a1f){return function(_0x15b3e8){if(_0x15b3e8){var _0x184106=typeof _0x1f6a1f[_0xeb62('0x1f')]===_0xeb62('0x20')&&typeof _0x1f6a1f[_0xeb62('0x21')]===_0xeb62('0x20');var _0x1324d7=_0x15b3e8[_0xeb62('0x22')];var _0x27fd84=_0x184106?0x0:_0x1f6a1f[_0xeb62('0x1f')];var _0x11d516=_0x184106?_0x15b3e8[_0xeb62('0x22')]:_0x1f6a1f['offset']+_0x1f6a1f[_0xeb62('0x21')];var _0x130e2f;if(_0x11d516>=_0x1324d7){_0x11d516=_0x1324d7;_0x130e2f=0xc8;}else{_0x130e2f=0xce;}_0x4ce9fa[_0xeb62('0x1c')](_0x130e2f);return _0x4ce9fa[_0xeb62('0x23')](_0xeb62('0x24'),_0x27fd84+'-'+_0x11d516+'/'+_0x1324d7)[_0xeb62('0x1e')](_0x15b3e8);}return null;};}function patchUpdates(_0x2ed96d){return function(_0x589bf2){try{jsonpatch['apply'](_0x589bf2,_0x2ed96d,!![]);}catch(_0x1fbfaa){return BPromise[_0xeb62('0x25')](_0x1fbfaa);}return _0x589bf2[_0xeb62('0x26')]();};}function saveUpdates(_0x13243f,_0x122b15){return function(_0x4cafcf){if(_0x4cafcf){return _0x4cafcf['update'](_0x13243f)[_0xeb62('0x27')](function(_0x132861){return _0x132861;});}return null;};}function removeEntity(_0x182781,_0x395b70){return function(_0x55a169){if(_0x55a169){return _0x55a169['destroy']()[_0xeb62('0x27')](function(){_0x182781['status'](0xcc)[_0xeb62('0x1d')]();});}};}function handleEntityNotFound(_0x4b0f46,_0xfe3e16){return function(_0x516a72){if(!_0x516a72){_0x4b0f46[_0xeb62('0x28')](0x194);}return _0x516a72;};}function handleError(_0x6bfbbc,_0x46d1bb){_0x46d1bb=_0x46d1bb||0x1f4;return function(_0x4e4268){logger[_0xeb62('0x29')](_0x4e4268[_0xeb62('0x2a')]);if(_0x4e4268[_0xeb62('0x2b')]){delete _0x4e4268[_0xeb62('0x2b')];}_0x6bfbbc[_0xeb62('0x1c')](_0x46d1bb)[_0xeb62('0x2c')](_0x4e4268);};}exports['index']=function(_0x192517,_0x1616ee){var _0x57169a={},_0x157474={},_0x2b51b2={'count':0x0,'rows':[]};var _0x2c967c=_[_0xeb62('0x2d')](db[_0xeb62('0x2e')]['rawAttributes'],function(_0x4b58af){return{'name':_0x4b58af[_0xeb62('0x2f')],'type':_0x4b58af[_0xeb62('0x30')][_0xeb62('0x31')]};});_0x157474[_0xeb62('0x32')]=_[_0xeb62('0x2d')](_0x2c967c,_0xeb62('0x2b'));_0x157474[_0xeb62('0x33')]=_['keys'](_0x192517[_0xeb62('0x33')]);_0x157474['filters']=_['intersection'](_0x157474[_0xeb62('0x32')],_0x157474[_0xeb62('0x33')]);_0x57169a['attributes']=_[_0xeb62('0x34')](_0x157474['model'],qs[_0xeb62('0x35')](_0x192517[_0xeb62('0x33')]['fields']));_0x57169a[_0xeb62('0x36')]=_0x57169a[_0xeb62('0x36')]['length']?_0x57169a[_0xeb62('0x36')]:_0x157474[_0xeb62('0x32')];if(!_0x192517[_0xeb62('0x33')][_0xeb62('0x37')]('nolimit')){_0x57169a[_0xeb62('0x21')]=qs[_0xeb62('0x21')](_0x192517['query']['limit']);_0x57169a[_0xeb62('0x1f')]=qs[_0xeb62('0x1f')](_0x192517['query'][_0xeb62('0x1f')]);}_0x57169a[_0xeb62('0x38')]=qs[_0xeb62('0x39')](_0x192517[_0xeb62('0x33')][_0xeb62('0x39')]);_0x57169a[_0xeb62('0x3a')]=qs[_0xeb62('0x3b')](_['pick'](_0x192517['query'],_0x157474[_0xeb62('0x3b')]),_0x2c967c);if(_0x192517[_0xeb62('0x33')][_0xeb62('0x3c')]){_0x57169a[_0xeb62('0x3a')]=_['merge'](_0x57169a[_0xeb62('0x3a')],{'$or':_['map'](_0x2c967c,function(_0x20fd7a){if(_0x20fd7a[_0xeb62('0x30')]!==_0xeb62('0x3d')){var _0x136c5a={};_0x136c5a[_0x20fd7a[_0xeb62('0x2b')]]={'$like':'%'+_0x192517[_0xeb62('0x33')][_0xeb62('0x3c')]+'%'};return _0x136c5a;}})});}_0x57169a=_[_0xeb62('0x3e')]({},_0x57169a,_0x192517['options']);var _0x38f91b={'where':_0x57169a[_0xeb62('0x3a')]};return db[_0xeb62('0x2e')][_0xeb62('0x22')](_0x38f91b)['then'](function(_0x4eda8b){_0x2b51b2[_0xeb62('0x22')]=_0x4eda8b;if(_0x192517[_0xeb62('0x33')]['includeAll']){_0x57169a[_0xeb62('0x3f')]=[{'all':!![]}];}return db[_0xeb62('0x2e')]['findAll'](_0x57169a);})[_0xeb62('0x27')](function(_0x478a54){_0x2b51b2[_0xeb62('0x40')]=_0x478a54;return _0x2b51b2;})['then'](respondWithFilteredResult(_0x1616ee,_0x57169a))[_0xeb62('0x41')](handleError(_0x1616ee,null));};exports['show']=function(_0x2bf77f,_0x609b2d){var _0x317f50={'raw':![],'where':{'id':_0x2bf77f['params']['id']}},_0x594274={};_0x594274[_0xeb62('0x32')]=_[_0xeb62('0x42')](db[_0xeb62('0x2e')][_0xeb62('0x43')]);_0x594274[_0xeb62('0x33')]=_['keys'](_0x2bf77f[_0xeb62('0x33')]);_0x594274['filters']=_[_0xeb62('0x34')](_0x594274['model'],_0x594274[_0xeb62('0x33')]);_0x317f50['attributes']=_[_0xeb62('0x34')](_0x594274['model'],qs[_0xeb62('0x35')](_0x2bf77f[_0xeb62('0x33')][_0xeb62('0x35')]));_0x317f50[_0xeb62('0x36')]=_0x317f50[_0xeb62('0x36')][_0xeb62('0x44')]?_0x317f50['attributes']:_0x594274[_0xeb62('0x32')];if(_0x2bf77f[_0xeb62('0x33')]['includeAll']){_0x317f50['include']=[{'all':!![]}];}_0x317f50=_['merge']({},_0x317f50,_0x2bf77f['options']);return db[_0xeb62('0x2e')][_0xeb62('0x45')](_0x317f50)['then'](handleEntityNotFound(_0x609b2d,null))[_0xeb62('0x27')](respondWithResult(_0x609b2d,null))[_0xeb62('0x41')](handleError(_0x609b2d,null));};exports[_0xeb62('0x46')]=function(_0x16e262,_0x39595c){return db['ZendeskAccount'][_0xeb62('0x46')](_0x16e262['body'],{})[_0xeb62('0x27')](respondWithResult(_0x39595c,0xc9))[_0xeb62('0x41')](handleError(_0x39595c,null));};exports[_0xeb62('0x47')]=function(_0x18c40d,_0x1f2d87){if(_0x18c40d[_0xeb62('0x48')]['id']){delete _0x18c40d[_0xeb62('0x48')]['id'];}return db[_0xeb62('0x2e')][_0xeb62('0x45')]({'where':{'id':_0x18c40d[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0x1f2d87,null))[_0xeb62('0x27')](saveUpdates(_0x18c40d['body'],null))[_0xeb62('0x27')](respondWithResult(_0x1f2d87,null))['catch'](handleError(_0x1f2d87,null));};exports['destroy']=function(_0x2dcb2d,_0x31fd4a){return db['ZendeskAccount'][_0xeb62('0x45')]({'where':{'id':_0x2dcb2d[_0xeb62('0x49')]['id']}})['then'](handleEntityNotFound(_0x31fd4a,null))[_0xeb62('0x27')](removeEntity(_0x31fd4a,null))[_0xeb62('0x41')](handleError(_0x31fd4a,null));};exports[_0xeb62('0x4a')]=function(_0x60617,_0xe71e83,_0x1e6238){var _0x351027={};var _0x190e65={};var _0x497714;var _0x3e2be9;return db['ZendeskAccount'][_0xeb62('0x4b')]({'where':{'id':_0x60617[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0xe71e83,null))[_0xeb62('0x27')](function(_0x35d92d){if(_0x35d92d){_0x497714=_0x35d92d;_0x190e65[_0xeb62('0x32')]=_[_0xeb62('0x42')](db[_0xeb62('0x4c')]['rawAttributes']);_0x190e65['query']=_['keys'](_0x60617['query']);_0x190e65[_0xeb62('0x3b')]=_['intersection'](_0x190e65[_0xeb62('0x32')],_0x190e65['query']);_0x351027[_0xeb62('0x36')]=_[_0xeb62('0x34')](_0x190e65[_0xeb62('0x32')],qs['fields'](_0x60617[_0xeb62('0x33')][_0xeb62('0x35')]));_0x351027['attributes']=_0x351027[_0xeb62('0x36')][_0xeb62('0x44')]?_0x351027[_0xeb62('0x36')]:_0x190e65[_0xeb62('0x32')];_0x351027['order']=qs[_0xeb62('0x39')](_0x60617[_0xeb62('0x33')]['sort']);_0x351027[_0xeb62('0x3a')]=qs[_0xeb62('0x3b')](_[_0xeb62('0x4d')](_0x60617[_0xeb62('0x33')],_0x190e65[_0xeb62('0x3b')]));if(_0x60617[_0xeb62('0x33')][_0xeb62('0x3c')]){_0x351027[_0xeb62('0x3a')]=_[_0xeb62('0x3e')](_0x351027[_0xeb62('0x3a')],{'$or':_[_0xeb62('0x2d')](_0x351027[_0xeb62('0x36')],function(_0x200b43){var _0x3ae984={};_0x3ae984[_0x200b43]={'$like':'%'+_0x60617[_0xeb62('0x33')][_0xeb62('0x3c')]+'%'};return _0x3ae984;})});}_0x351027=_['merge']({},_0x351027,_0x60617['options']);return _0x497714['getConfigurations'](_0x351027);}})['then'](function(_0x279b83){if(_0x279b83){_0x3e2be9=_0x279b83['length'];if(!_0x60617[_0xeb62('0x33')][_0xeb62('0x37')](_0xeb62('0x4e'))){_0x351027[_0xeb62('0x21')]=qs[_0xeb62('0x21')](_0x60617[_0xeb62('0x33')][_0xeb62('0x21')]);_0x351027[_0xeb62('0x1f')]=qs[_0xeb62('0x1f')](_0x60617[_0xeb62('0x33')]['offset']);}return _0x497714[_0xeb62('0x4a')](_0x351027);}})[_0xeb62('0x27')](function(_0x42e992){if(_0x42e992){return _0x42e992?{'count':_0x3e2be9,'rows':_0x42e992}:null;}})[_0xeb62('0x27')](respondWithResult(_0xe71e83,null))['catch'](handleError(_0xe71e83,null));};exports[_0xeb62('0x4f')]=function(_0x2e5456,_0x3ff00a,_0x2abd21){if(_0x2e5456[_0xeb62('0x48')]['id']){delete _0x2e5456[_0xeb62('0x48')]['id'];}return db[_0xeb62('0x2e')][_0xeb62('0x4b')]({'where':{'id':_0x2e5456[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0x3ff00a,null))[_0xeb62('0x27')](function(_0x510275){if(_0x510275){_0x2e5456[_0xeb62('0x48')][_0xeb62('0x50')]=_0x510275['id'];_0x2e5456[_0xeb62('0x48')][_0xeb62('0x51')]=integrations[_0xeb62('0x52')](_0x2e5456[_0xeb62('0x48')][_0xeb62('0x53')],_0x2e5456[_0xeb62('0x48')][_0xeb62('0x30')]);_0x2e5456[_0xeb62('0x48')]['Descriptions']=integrations[_0xeb62('0x54')](_0x2e5456[_0xeb62('0x48')][_0xeb62('0x53')],_0x2e5456[_0xeb62('0x48')]['type']);return db[_0xeb62('0x4c')][_0xeb62('0x46')](_0x2e5456[_0xeb62('0x48')],{'include':[{'model':db[_0xeb62('0x55')],'as':_0xeb62('0x51')},{'model':db[_0xeb62('0x55')],'as':'Descriptions'}]});}return null;})[_0xeb62('0x27')](respondWithResult(_0x3ff00a,null))[_0xeb62('0x41')](handleError(_0x3ff00a,null));};exports[_0xeb62('0x56')]=function(_0x173c07,_0x351acf,_0x28d0ff){var _0x2e4502='';return db[_0xeb62('0x2e')][_0xeb62('0x4b')]({'where':{'id':_0x173c07[_0xeb62('0x49')]['id']},'attributes':['id',_0xeb62('0x57'),_0xeb62('0x58'),_0xeb62('0x59'),_0xeb62('0x5a'),_0xeb62('0x5b')]})[_0xeb62('0x27')](handleEntityNotFound(_0x351acf,null))['then'](function(_0x3b3eb1){if(_0x3b3eb1){_0x2e4502=_0x3b3eb1['remoteUri'];var _0x6ea297=_0x2e4502[_0xeb62('0x5c')](-0x1);if(_0x6ea297==='/'){_0x2e4502=_0x2e4502['substring'](0x0,_0x2e4502[_0xeb62('0x5d')](_0x6ea297));}var _0x10986a={'method':_0xeb62('0x5e'),'uri':util[_0xeb62('0x5f')](_0xeb62('0x60'),_0x2e4502,_0xeb62('0x61')),'json':!![]};switch(_0x3b3eb1[_0xeb62('0x5a')]){case _0xeb62('0x58'):_0x10986a[_0xeb62('0x62')]={'Authorization':util[_0xeb62('0x5f')](_0xeb62('0x63'),new Buffer(util[_0xeb62('0x5f')](_0xeb62('0x64'),_0x3b3eb1['username'],_0x3b3eb1[_0xeb62('0x58')]))[_0xeb62('0x65')]('base64'))};break;case _0xeb62('0x59'):_0x10986a['headers']={'Authorization':util[_0xeb62('0x5f')](_0xeb62('0x63'),new Buffer(util[_0xeb62('0x5f')](_0xeb62('0x66'),_0x3b3eb1[_0xeb62('0x57')],_0x3b3eb1[_0xeb62('0x59')]))['toString'](_0xeb62('0x67')))};break;default:throw new db['Sequelize'][(_0xeb62('0x68'))](_0xeb62('0x69'));}return rp(_0x10986a);}})[_0xeb62('0x27')](function(_0x489410){if(_0x489410){var _0x1dcd96=['subject',_0xeb62('0x6a'),_0xeb62('0x6b'),_0xeb62('0x6c')];_['remove'](_0x489410[_0xeb62('0x61')],function(_0x3ad496){return _0x1dcd96[_0xeb62('0x6d')](_0x3ad496[_0xeb62('0x30')]);});return{'count':_0x489410[_0xeb62('0x61')][_0xeb62('0x44')],'rows':_['map'](_0x489410['ticket_fields'],function(_0x4c7a56){return{'id':_0x4c7a56['id'],'name':_0x4c7a56['position']>0x7?_0x4c7a56['title']:_0x4c7a56[_0xeb62('0x30')],'custom':_0x4c7a56[_0xeb62('0x6e')]>0x7?!![]:![],'options':_0x4c7a56[_0xeb62('0x6f')]?_0x4c7a56[_0xeb62('0x6f')]:_0x4c7a56[_0xeb62('0x70')]?_0x4c7a56[_0xeb62('0x70')]:[]};})};}})[_0xeb62('0x27')](respondWithResult(_0x351acf,null))[_0xeb62('0x41')](function(_0xb28adb){var _0x2c6bb3=_0x173c07[_0xeb62('0x33')][_0xeb62('0x71')]?0x1f4:_0xb28adb['statusCode']||0x1f4;logger[_0xeb62('0x29')](_0xeb62('0x72'),_0xeb62('0x56'),_0x2c6bb3,JSON[_0xeb62('0x73')](_0xb28adb));delete _0xb28adb[_0xeb62('0x2b')];if(_0x2c6bb3===0x191){_0x2c6bb3=0x190;}_0x351acf[_0xeb62('0x1c')](_0x2c6bb3)[_0xeb62('0x2c')](_0x173c07[_0xeb62('0x33')][_0xeb62('0x71')]?{'message':_0xeb62('0x74'),'statusCode':_0xb28adb[_0xeb62('0x75')]}:_0xb28adb);});};
\ No newline at end of file
+var _0x16d2=['where','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params','ZendeskConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','ZendeskField','getFields','password','authType','remoteUri','slice','substring','GET','%s/%s','ticket_fields','headers','format','%s:%s','toString','base64','Basic\x20%s','%s/token:%s','username','Sequelize','subject','description','assignee','remove','position','title','system_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','error','stack','index','map','ZendeskAccount','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge'];(function(_0x42e8f3,_0x5c8dba){var _0x47feab=function(_0x35fbf7){while(--_0x35fbf7){_0x42e8f3['push'](_0x42e8f3['shift']());}};_0x47feab(++_0x5c8dba);}(_0x16d2,0x123));var _0x216d=function(_0x258b00,_0x28e9b0){_0x258b00=_0x258b00-0x0;var _0x3ca676=_0x16d2[_0x258b00];return _0x3ca676;};'use strict';var emlformat=require(_0x216d('0x0'));var rimraf=require(_0x216d('0x1'));var zipdir=require(_0x216d('0x2'));var jsonpatch=require(_0x216d('0x3'));var rp=require(_0x216d('0x4'));var moment=require(_0x216d('0x5'));var BPromise=require(_0x216d('0x6'));var Mustache=require(_0x216d('0x7'));var util=require(_0x216d('0x8'));var path=require('path');var sox=require(_0x216d('0x9'));var csv=require(_0x216d('0xa'));var ejs=require(_0x216d('0xb'));var fs=require('fs');var fs_extra=require(_0x216d('0xc'));var _=require(_0x216d('0xd'));var squel=require(_0x216d('0xe'));var crypto=require(_0x216d('0xf'));var jsforce=require(_0x216d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x216d('0xa'));var querystring=require(_0x216d('0x11'));var Papa=require(_0x216d('0x12'));var Redis=require(_0x216d('0x13'));var authService=require(_0x216d('0x14'));var qs=require(_0x216d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x216d('0x16'));var logger=require('../../config/logger')(_0x216d('0x17'));var utils=require(_0x216d('0x18'));var config=require(_0x216d('0x19'));var licenseUtil=require(_0x216d('0x1a'));var db=require(_0x216d('0x1b'))['db'];var integrations=require(_0x216d('0x1c'));function respondWithStatusCode(_0x4c92d9,_0xb36a43){_0xb36a43=_0xb36a43||0xcc;return function(_0x4c07d0){if(_0x4c07d0){return _0x4c92d9[_0x216d('0x1d')](_0xb36a43);}return _0x4c92d9[_0x216d('0x1e')](_0xb36a43)['end']();};}function respondWithResult(_0x165c19,_0x322e4b){_0x322e4b=_0x322e4b||0xc8;return function(_0x54a816){if(_0x54a816){return _0x165c19[_0x216d('0x1e')](_0x322e4b)['json'](_0x54a816);}};}function respondWithFilteredResult(_0x448c0d,_0xf571a4){return function(_0x4631b0){if(_0x4631b0){var _0x23ff86=typeof _0xf571a4[_0x216d('0x1f')]===_0x216d('0x20')&&typeof _0xf571a4[_0x216d('0x21')]===_0x216d('0x20');var _0x19fdac=_0x4631b0['count'];var _0x3b60dd=_0x23ff86?0x0:_0xf571a4['offset'];var _0x4ddc51=_0x23ff86?_0x4631b0[_0x216d('0x22')]:_0xf571a4[_0x216d('0x1f')]+_0xf571a4['limit'];var _0x3f32e0;if(_0x4ddc51>=_0x19fdac){_0x4ddc51=_0x19fdac;_0x3f32e0=0xc8;}else{_0x3f32e0=0xce;}_0x448c0d[_0x216d('0x1e')](_0x3f32e0);return _0x448c0d['set'](_0x216d('0x23'),_0x3b60dd+'-'+_0x4ddc51+'/'+_0x19fdac)[_0x216d('0x24')](_0x4631b0);}return null;};}function patchUpdates(_0x430e81){return function(_0x3e9818){try{jsonpatch['apply'](_0x3e9818,_0x430e81,!![]);}catch(_0x20ee7c){return BPromise[_0x216d('0x25')](_0x20ee7c);}return _0x3e9818[_0x216d('0x26')]();};}function saveUpdates(_0x438981,_0x206782){return function(_0x57cfbd){if(_0x57cfbd){return _0x57cfbd[_0x216d('0x27')](_0x438981)[_0x216d('0x28')](function(_0x188494){return _0x188494;});}return null;};}function removeEntity(_0x2880c6,_0x6fa4b3){return function(_0x54d96f){if(_0x54d96f){return _0x54d96f[_0x216d('0x29')]()[_0x216d('0x28')](function(){_0x2880c6[_0x216d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec8a7,_0x56460f){return function(_0x4c792e){if(!_0x4c792e){_0x4ec8a7['sendStatus'](0x194);}return _0x4c792e;};}function handleError(_0x32f240,_0x470d8a){_0x470d8a=_0x470d8a||0x1f4;return function(_0x189413){logger[_0x216d('0x2a')](_0x189413[_0x216d('0x2b')]);if(_0x189413['name']){delete _0x189413['name'];}_0x32f240[_0x216d('0x1e')](_0x470d8a)['send'](_0x189413);};}exports[_0x216d('0x2c')]=function(_0x42abbe,_0x10f7c6){var _0x20bc16={},_0x307f2b={},_0x12bcab={'count':0x0,'rows':[]};var _0x28fcc2=_[_0x216d('0x2d')](db[_0x216d('0x2e')][_0x216d('0x2f')],function(_0x11be90){return{'name':_0x11be90[_0x216d('0x30')],'type':_0x11be90[_0x216d('0x31')]['key']};});_0x307f2b[_0x216d('0x32')]=_[_0x216d('0x2d')](_0x28fcc2,_0x216d('0x33'));_0x307f2b['query']=_[_0x216d('0x34')](_0x42abbe[_0x216d('0x35')]);_0x307f2b[_0x216d('0x36')]=_[_0x216d('0x37')](_0x307f2b['model'],_0x307f2b[_0x216d('0x35')]);_0x20bc16[_0x216d('0x38')]=_[_0x216d('0x37')](_0x307f2b[_0x216d('0x32')],qs[_0x216d('0x39')](_0x42abbe[_0x216d('0x35')][_0x216d('0x39')]));_0x20bc16[_0x216d('0x38')]=_0x20bc16[_0x216d('0x38')][_0x216d('0x3a')]?_0x20bc16[_0x216d('0x38')]:_0x307f2b['model'];if(!_0x42abbe[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x20bc16['limit']=qs[_0x216d('0x21')](_0x42abbe[_0x216d('0x35')]['limit']);_0x20bc16[_0x216d('0x1f')]=qs['offset'](_0x42abbe['query'][_0x216d('0x1f')]);}_0x20bc16[_0x216d('0x3d')]=qs[_0x216d('0x3e')](_0x42abbe[_0x216d('0x35')]['sort']);_0x20bc16['where']=qs['filters'](_[_0x216d('0x3f')](_0x42abbe[_0x216d('0x35')],_0x307f2b['filters']),_0x28fcc2);if(_0x42abbe[_0x216d('0x35')][_0x216d('0x40')]){_0x20bc16['where']=_[_0x216d('0x41')](_0x20bc16[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x28fcc2,function(_0x474fab){if(_0x474fab[_0x216d('0x31')]!==_0x216d('0x43')){var _0x35cb6e={};_0x35cb6e[_0x474fab[_0x216d('0x33')]]={'$like':'%'+_0x42abbe['query']['filter']+'%'};return _0x35cb6e;}})});}_0x20bc16=_[_0x216d('0x41')]({},_0x20bc16,_0x42abbe[_0x216d('0x44')]);var _0x504a34={'where':_0x20bc16[_0x216d('0x42')]};return db[_0x216d('0x2e')][_0x216d('0x22')](_0x504a34)['then'](function(_0x2c3e44){_0x12bcab[_0x216d('0x22')]=_0x2c3e44;if(_0x42abbe[_0x216d('0x35')][_0x216d('0x45')]){_0x20bc16['include']=[{'all':!![]}];}return db[_0x216d('0x2e')][_0x216d('0x46')](_0x20bc16);})['then'](function(_0x37bf4a){_0x12bcab[_0x216d('0x47')]=_0x37bf4a;return _0x12bcab;})['then'](respondWithFilteredResult(_0x10f7c6,_0x20bc16))['catch'](handleError(_0x10f7c6,null));};exports[_0x216d('0x48')]=function(_0x440bc9,_0x3c491e){var _0x498efe={'raw':![],'where':{'id':_0x440bc9['params']['id']}},_0x3e361a={};_0x3e361a['model']=_[_0x216d('0x34')](db[_0x216d('0x2e')][_0x216d('0x2f')]);_0x3e361a['query']=_[_0x216d('0x34')](_0x440bc9['query']);_0x3e361a[_0x216d('0x36')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],_0x3e361a['query']);_0x498efe[_0x216d('0x38')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],qs[_0x216d('0x39')](_0x440bc9['query']['fields']));_0x498efe['attributes']=_0x498efe[_0x216d('0x38')][_0x216d('0x3a')]?_0x498efe[_0x216d('0x38')]:_0x3e361a[_0x216d('0x32')];if(_0x440bc9[_0x216d('0x35')][_0x216d('0x45')]){_0x498efe[_0x216d('0x49')]=[{'all':!![]}];}_0x498efe=_[_0x216d('0x41')]({},_0x498efe,_0x440bc9['options']);return db[_0x216d('0x2e')][_0x216d('0x4a')](_0x498efe)[_0x216d('0x28')](handleEntityNotFound(_0x3c491e,null))[_0x216d('0x28')](respondWithResult(_0x3c491e,null))['catch'](handleError(_0x3c491e,null));};exports[_0x216d('0x4b')]=function(_0x542e1b,_0x1f2fa5){return db[_0x216d('0x2e')][_0x216d('0x4b')](_0x542e1b['body'],{})['then'](respondWithResult(_0x1f2fa5,0xc9))[_0x216d('0x4c')](handleError(_0x1f2fa5,null));};exports[_0x216d('0x27')]=function(_0x3932a3,_0x1340fe){if(_0x3932a3[_0x216d('0x4d')]['id']){delete _0x3932a3[_0x216d('0x4d')]['id'];}return db['ZendeskAccount']['find']({'where':{'id':_0x3932a3[_0x216d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1340fe,null))[_0x216d('0x28')](saveUpdates(_0x3932a3[_0x216d('0x4d')],null))['then'](respondWithResult(_0x1340fe,null))['catch'](handleError(_0x1340fe,null));};exports['destroy']=function(_0x4bac14,_0x1ae9b7){return db[_0x216d('0x2e')][_0x216d('0x4a')]({'where':{'id':_0x4bac14[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x1ae9b7,null))[_0x216d('0x28')](removeEntity(_0x1ae9b7,null))[_0x216d('0x4c')](handleError(_0x1ae9b7,null));};exports['getConfigurations']=function(_0x3f70c9,_0x34cdb9,_0x119b12){var _0x54dd49={};var _0x1e1caf={};var _0x10fe2e;var _0x2c7c67;return db[_0x216d('0x2e')]['findOne']({'where':{'id':_0x3f70c9[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x34cdb9,null))[_0x216d('0x28')](function(_0x1a4761){if(_0x1a4761){_0x10fe2e=_0x1a4761;_0x1e1caf['model']=_[_0x216d('0x34')](db[_0x216d('0x4f')]['rawAttributes']);_0x1e1caf[_0x216d('0x35')]=_['keys'](_0x3f70c9[_0x216d('0x35')]);_0x1e1caf[_0x216d('0x36')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],_0x1e1caf[_0x216d('0x35')]);_0x54dd49[_0x216d('0x38')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],qs[_0x216d('0x39')](_0x3f70c9['query'][_0x216d('0x39')]));_0x54dd49[_0x216d('0x38')]=_0x54dd49['attributes'][_0x216d('0x3a')]?_0x54dd49[_0x216d('0x38')]:_0x1e1caf['model'];_0x54dd49['order']=qs[_0x216d('0x3e')](_0x3f70c9['query'][_0x216d('0x3e')]);_0x54dd49[_0x216d('0x42')]=qs[_0x216d('0x36')](_['pick'](_0x3f70c9[_0x216d('0x35')],_0x1e1caf['filters']));if(_0x3f70c9['query'][_0x216d('0x40')]){_0x54dd49[_0x216d('0x42')]=_['merge'](_0x54dd49[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x54dd49[_0x216d('0x38')],function(_0x3f9097){var _0x2ae667={};_0x2ae667[_0x3f9097]={'$like':'%'+_0x3f70c9[_0x216d('0x35')]['filter']+'%'};return _0x2ae667;})});}_0x54dd49=_['merge']({},_0x54dd49,_0x3f70c9[_0x216d('0x44')]);return _0x10fe2e[_0x216d('0x50')](_0x54dd49);}})[_0x216d('0x28')](function(_0x1551b6){if(_0x1551b6){_0x2c7c67=_0x1551b6[_0x216d('0x3a')];if(!_0x3f70c9[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x54dd49[_0x216d('0x21')]=qs[_0x216d('0x21')](_0x3f70c9[_0x216d('0x35')][_0x216d('0x21')]);_0x54dd49['offset']=qs['offset'](_0x3f70c9[_0x216d('0x35')][_0x216d('0x1f')]);}return _0x10fe2e['getConfigurations'](_0x54dd49);}})[_0x216d('0x28')](function(_0x5eb684){if(_0x5eb684){return _0x5eb684?{'count':_0x2c7c67,'rows':_0x5eb684}:null;}})['then'](respondWithResult(_0x34cdb9,null))[_0x216d('0x4c')](handleError(_0x34cdb9,null));};exports[_0x216d('0x51')]=function(_0x20806e,_0x17ce26,_0x1d404c){if(_0x20806e[_0x216d('0x4d')]['id']){delete _0x20806e[_0x216d('0x4d')]['id'];}return db[_0x216d('0x2e')][_0x216d('0x52')]({'where':{'id':_0x20806e[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x17ce26,null))[_0x216d('0x28')](function(_0x19c7cf){if(_0x19c7cf){_0x20806e[_0x216d('0x4d')][_0x216d('0x53')]=_0x19c7cf['id'];_0x20806e[_0x216d('0x4d')][_0x216d('0x54')]=integrations[_0x216d('0x55')](_0x20806e[_0x216d('0x4d')][_0x216d('0x56')],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);_0x20806e['body'][_0x216d('0x57')]=integrations['getDescriptions'](_0x20806e[_0x216d('0x4d')]['channel'],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);return db['ZendeskConfiguration'][_0x216d('0x4b')](_0x20806e[_0x216d('0x4d')],{'include':[{'model':db[_0x216d('0x58')],'as':_0x216d('0x54')},{'model':db[_0x216d('0x58')],'as':_0x216d('0x57')}]});}return null;})[_0x216d('0x28')](respondWithResult(_0x17ce26,null))[_0x216d('0x4c')](handleError(_0x17ce26,null));};exports[_0x216d('0x59')]=function(_0x5acc44,_0x120f8a,_0x299cc7){var _0x16cf09='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x5acc44['params']['id']},'attributes':['id','username',_0x216d('0x5a'),'token',_0x216d('0x5b'),_0x216d('0x5c')]})[_0x216d('0x28')](handleEntityNotFound(_0x120f8a,null))[_0x216d('0x28')](function(_0x431014){if(_0x431014){_0x16cf09=_0x431014[_0x216d('0x5c')];var _0x3a2e7c=_0x16cf09[_0x216d('0x5d')](-0x1);if(_0x3a2e7c==='/'){_0x16cf09=_0x16cf09[_0x216d('0x5e')](0x0,_0x16cf09['lastIndexOf'](_0x3a2e7c));}var _0x4e4e1a={'method':_0x216d('0x5f'),'uri':util['format'](_0x216d('0x60'),_0x16cf09,_0x216d('0x61')),'json':!![]};switch(_0x431014[_0x216d('0x5b')]){case _0x216d('0x5a'):_0x4e4e1a[_0x216d('0x62')]={'Authorization':util[_0x216d('0x63')]('Basic\x20%s',new Buffer(util['format'](_0x216d('0x64'),_0x431014['username'],_0x431014[_0x216d('0x5a')]))[_0x216d('0x65')](_0x216d('0x66')))};break;case'token':_0x4e4e1a['headers']={'Authorization':util['format'](_0x216d('0x67'),new Buffer(util[_0x216d('0x63')](_0x216d('0x68'),_0x431014[_0x216d('0x69')],_0x431014['token']))[_0x216d('0x65')](_0x216d('0x66')))};break;default:throw new db[(_0x216d('0x6a'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x4e4e1a);}})[_0x216d('0x28')](function(_0x87511b){if(_0x87511b){var _0x273d11=[_0x216d('0x6b'),_0x216d('0x6c'),'group',_0x216d('0x6d')];_[_0x216d('0x6e')](_0x87511b[_0x216d('0x61')],function(_0x325bd8){return _0x273d11['includes'](_0x325bd8[_0x216d('0x31')]);});return{'count':_0x87511b['ticket_fields'][_0x216d('0x3a')],'rows':_['map'](_0x87511b[_0x216d('0x61')],function(_0x3ae6df){return{'id':_0x3ae6df['id'],'name':_0x3ae6df[_0x216d('0x6f')]>0x7?_0x3ae6df[_0x216d('0x70')]:_0x3ae6df[_0x216d('0x31')],'custom':_0x3ae6df['position']>0x7?!![]:![],'options':_0x3ae6df[_0x216d('0x71')]?_0x3ae6df['system_field_options']:_0x3ae6df['custom_field_options']?_0x3ae6df['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x120f8a,null))[_0x216d('0x4c')](function(_0x38e7d7){var _0xa1594b=_0x5acc44['query']['test']?0x1f4:_0x38e7d7[_0x216d('0x72')]||0x1f4;logger[_0x216d('0x2a')](_0x216d('0x73'),_0x216d('0x59'),_0xa1594b,JSON[_0x216d('0x74')](_0x38e7d7));delete _0x38e7d7['name'];if(_0xa1594b===0x191){_0xa1594b=0x190;}_0x120f8a['status'](_0xa1594b)[_0x216d('0x75')](_0x5acc44['query'][_0x216d('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x38e7d7[_0x216d('0x72')]}:_0x38e7d7);});};
\ No newline at end of file
index 6d53d04..ae5bf70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f50=['ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x4955d8,_0x5852a7){var _0x11e3f1=function(_0x45ea61){while(--_0x45ea61){_0x4955d8['push'](_0x4955d8['shift']());}};_0x11e3f1(++_0x5852a7);}(_0x3f50,0x18a));var _0x03f5=function(_0x50155c,_0x5a1c10){_0x50155c=_0x50155c-0x0;var _0x3a70bc=_0x3f50[_0x50155c];return _0x3a70bc;};'use strict';var _=require(_0x03f5('0x0'));var util=require(_0x03f5('0x1'));var logger=require(_0x03f5('0x2'))(_0x03f5('0x3'));var moment=require(_0x03f5('0x4'));var BPromise=require('bluebird');var rp=require(_0x03f5('0x5'));var fs=require('fs');var path=require(_0x03f5('0x6'));var rimraf=require(_0x03f5('0x7'));var config=require(_0x03f5('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x03f5('0x9'));module[_0x03f5('0xa')]=function(_0x249df5,_0xcf32d){return _0x249df5[_0x03f5('0xb')](_0x03f5('0xc'),attributes,{'tableName':_0x03f5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x929a=['rimraf','../../config/environment','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','util','api','bluebird','path'];(function(_0x3a621b,_0xf7452d){var _0x35730b=function(_0xaac66c){while(--_0xaac66c){_0x3a621b['push'](_0x3a621b['shift']());}};_0x35730b(++_0xf7452d);}(_0x929a,0x1a0));var _0xa929=function(_0x45d74a,_0x544b81){_0x45d74a=_0x45d74a-0x0;var _0x42434c=_0x929a[_0x45d74a];return _0x42434c;};'use strict';var _=require('lodash');var util=require(_0xa929('0x0'));var logger=require('../../config/logger')(_0xa929('0x1'));var moment=require('moment');var BPromise=require(_0xa929('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa929('0x3'));var rimraf=require(_0xa929('0x4'));var config=require(_0xa929('0x5'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xa929('0x6'));module[_0xa929('0x7')]=function(_0x4aee20,_0x19a4e9){return _0x4aee20['define'](_0xa929('0x8'),attributes,{'tableName':_0xa929('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0dbe2c4..3a1f0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcba=['ZendeskAccount','findAll','options','attributes','limit','map','include','model','then','ShowZendeskAccount','raw','where','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','ZendeskAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetZendeskAccount'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0xbcba,0x198));var _0xabcb=function(_0x20e0d0,_0x5dd611){_0x20e0d0=_0x20e0d0-0x0;var _0x236ba3=_0xbcba[_0x20e0d0];return _0x236ba3;};'use strict';var _=require(_0xabcb('0x0'));var util=require(_0xabcb('0x1'));var moment=require(_0xabcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xabcb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xabcb('0x4'));var logger=require(_0xabcb('0x5'))(_0xabcb('0x6'));var config=require(_0xabcb('0x7'));var jayson=require(_0xabcb('0x8'));var client=jayson[_0xabcb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54f296,_0x1e4b63,_0x81df73){return new BPromise(function(_0x26183e,_0x2d2b12){return client['request'](_0x54f296,_0x81df73)['then'](function(_0x125369){logger[_0xabcb('0xa')](_0xabcb('0xb'),_0x1e4b63,'request\x20sent');logger[_0xabcb('0xc')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x1e4b63,_0xabcb('0xd'),JSON[_0xabcb('0xe')](_0x125369));if(_0x125369[_0xabcb('0xf')]){if(_0x125369[_0xabcb('0xf')][_0xabcb('0x10')]===0x1f4){logger[_0xabcb('0xf')](_0xabcb('0xb'),_0x1e4b63,_0x125369['error']['message']);return _0x2d2b12(_0x125369[_0xabcb('0xf')][_0xabcb('0x11')]);}logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x1e4b63,_0x125369['error'][_0xabcb('0x11')]);return _0x26183e(_0x125369[_0xabcb('0xf')][_0xabcb('0x11')]);}else{logger['info'](_0xabcb('0xb'),_0x1e4b63,_0xabcb('0xd'));_0x26183e(_0x125369[_0xabcb('0x12')][_0xabcb('0x11')]);}})[_0xabcb('0x13')](function(_0x3add22){logger[_0xabcb('0xf')](_0xabcb('0xb'),_0x1e4b63,_0x3add22);_0x2d2b12(_0x3add22);});});}exports[_0xabcb('0x14')]=function(_0x376442){var _0x4e7bcb=this;return new Promise(function(_0x791553,_0x379eee){return db[_0xabcb('0x15')][_0xabcb('0x16')]({'raw':_0x376442[_0xabcb('0x17')]?_0x376442[_0xabcb('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x376442[_0xabcb('0x17')]?_0x376442['options']['where']||null:null,'attributes':_0x376442[_0xabcb('0x17')]?_0x376442[_0xabcb('0x17')][_0xabcb('0x18')]||null:null,'limit':_0x376442[_0xabcb('0x17')]?_0x376442[_0xabcb('0x17')][_0xabcb('0x19')]||null:null,'include':_0x376442[_0xabcb('0x17')]?_0x376442[_0xabcb('0x17')]['include']?_[_0xabcb('0x1a')](_0x376442['options'][_0xabcb('0x1b')],function(_0x532712){return{'model':db[_0x532712[_0xabcb('0x1c')]],'as':_0x532712['as'],'attributes':_0x532712[_0xabcb('0x18')],'include':_0x532712['include']?_[_0xabcb('0x1a')](_0x532712['include'],function(_0x5d9929){return{'model':db[_0x5d9929[_0xabcb('0x1c')]],'as':_0x5d9929['as'],'attributes':_0x5d9929[_0xabcb('0x18')],'include':_0x5d9929['include']?_[_0xabcb('0x1a')](_0x5d9929[_0xabcb('0x1b')],function(_0x4010bf){return{'model':db[_0x4010bf['model']],'as':_0x4010bf['as'],'attributes':_0x4010bf[_0xabcb('0x18')]};}):[]};}):[]};}):[]:[]})[_0xabcb('0x1d')](function(_0xa4b9c2){logger[_0xabcb('0xa')](_0xabcb('0x14'),_0x376442);logger[_0xabcb('0xc')]('GetZendeskAccount',_0x376442,JSON[_0xabcb('0xe')](_0xa4b9c2));_0x791553(_0xa4b9c2);})['catch'](function(_0x47bc34){logger['error'](_0xabcb('0x14'),_0x47bc34[_0xabcb('0x11')],_0x376442);_0x379eee(_0x4e7bcb[_0xabcb('0xf')](0x1f4,_0x47bc34[_0xabcb('0x11')]));});});};exports[_0xabcb('0x1e')]=function(_0x39d2d8){var _0x23f7cd=this;return new Promise(function(_0x1e1a11,_0x11ea53){return db['ZendeskAccount']['find']({'raw':_0x39d2d8['options']?_0x39d2d8[_0xabcb('0x17')][_0xabcb('0x1f')]===undefined?!![]:![]:!![],'where':_0x39d2d8[_0xabcb('0x17')]?_0x39d2d8[_0xabcb('0x17')][_0xabcb('0x20')]||null:null,'attributes':_0x39d2d8[_0xabcb('0x17')]?_0x39d2d8['options'][_0xabcb('0x18')]||null:null,'include':_0x39d2d8['options']?_0x39d2d8[_0xabcb('0x17')][_0xabcb('0x1b')]?_['map'](_0x39d2d8[_0xabcb('0x17')]['include'],function(_0x330538){return{'model':db[_0x330538[_0xabcb('0x1c')]],'as':_0x330538['as'],'attributes':_0x330538[_0xabcb('0x18')],'include':_0x330538[_0xabcb('0x1b')]?_[_0xabcb('0x1a')](_0x330538['include'],function(_0x38b8a0){return{'model':db[_0x38b8a0[_0xabcb('0x1c')]],'as':_0x38b8a0['as'],'attributes':_0x38b8a0[_0xabcb('0x18')],'include':_0x38b8a0['include']?_[_0xabcb('0x1a')](_0x38b8a0[_0xabcb('0x1b')],function(_0x170ab7){return{'model':db[_0x170ab7[_0xabcb('0x1c')]],'as':_0x170ab7['as'],'attributes':_0x170ab7[_0xabcb('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11395d){logger[_0xabcb('0xa')](_0xabcb('0x1e'),_0x39d2d8);logger[_0xabcb('0xc')]('ShowZendeskAccount',_0x39d2d8,JSON[_0xabcb('0xe')](_0x11395d));_0x1e1a11(_0x11395d);})[_0xabcb('0x13')](function(_0x3f92c8){logger[_0xabcb('0xf')](_0xabcb('0x1e'),_0x3f92c8['message'],_0x39d2d8);_0x11ea53(_0x23f7cd[_0xabcb('0xf')](0x1f4,_0x3f92c8[_0xabcb('0x11')]));});});};
\ No newline at end of file
+var _0x1bb2=['stringify','code','error','message','result','GetZendeskAccount','findAll','options','where','attributes','limit','include','map','model','catch','ShowZendeskAccount','ZendeskAccount','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x13342f,_0x3d6303){var _0x2fc1fc=function(_0x2d991f){while(--_0x2d991f){_0x13342f['push'](_0x13342f['shift']());}};_0x2fc1fc(++_0x3d6303);}(_0x1bb2,0xc6));var _0x21bb=function(_0x2cd4e5,_0x1d568c){_0x2cd4e5=_0x2cd4e5-0x0;var _0x268b59=_0x1bb2[_0x2cd4e5];return _0x268b59;};'use strict';var _=require('lodash');var util=require(_0x21bb('0x0'));var moment=require(_0x21bb('0x1'));var BPromise=require(_0x21bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x21bb('0x3'));var db=require(_0x21bb('0x4'))['db'];var utils=require(_0x21bb('0x5'));var logger=require(_0x21bb('0x6'))(_0x21bb('0x7'));var config=require(_0x21bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x21bb('0x9')][_0x21bb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31114a,_0x47e288,_0x5ad94a){return new BPromise(function(_0x13021a,_0x494a7d){return client[_0x21bb('0xb')](_0x31114a,_0x5ad94a)[_0x21bb('0xc')](function(_0x2e4e0f){logger[_0x21bb('0xd')](_0x21bb('0xe'),_0x47e288,'request\x20sent');logger[_0x21bb('0xf')](_0x21bb('0x10'),_0x47e288,_0x21bb('0x11'),JSON[_0x21bb('0x12')](_0x2e4e0f));if(_0x2e4e0f['error']){if(_0x2e4e0f['error'][_0x21bb('0x13')]===0x1f4){logger[_0x21bb('0x14')](_0x21bb('0xe'),_0x47e288,_0x2e4e0f[_0x21bb('0x14')][_0x21bb('0x15')]);return _0x494a7d(_0x2e4e0f['error'][_0x21bb('0x15')]);}logger['error'](_0x21bb('0xe'),_0x47e288,_0x2e4e0f[_0x21bb('0x14')][_0x21bb('0x15')]);return _0x13021a(_0x2e4e0f['error'][_0x21bb('0x15')]);}else{logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x47e288,_0x21bb('0x11'));_0x13021a(_0x2e4e0f[_0x21bb('0x16')][_0x21bb('0x15')]);}})['catch'](function(_0x2ff9ae){logger[_0x21bb('0x14')]('ZendeskAccount,\x20%s,\x20%s',_0x47e288,_0x2ff9ae);_0x494a7d(_0x2ff9ae);});});}exports[_0x21bb('0x17')]=function(_0x284baa){var _0x1a5e73=this;return new Promise(function(_0x2d2b40,_0x4d1883){return db['ZendeskAccount'][_0x21bb('0x18')]({'raw':_0x284baa['options']?_0x284baa[_0x21bb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x284baa[_0x21bb('0x19')]?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1a')]||null:null,'attributes':_0x284baa['options']?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1b')]||null:null,'limit':_0x284baa[_0x21bb('0x19')]?_0x284baa[_0x21bb('0x19')][_0x21bb('0x1c')]||null:null,'include':_0x284baa[_0x21bb('0x19')]?_0x284baa['options'][_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x284baa[_0x21bb('0x19')]['include'],function(_0x2079d2){return{'model':db[_0x2079d2[_0x21bb('0x1f')]],'as':_0x2079d2['as'],'attributes':_0x2079d2[_0x21bb('0x1b')],'include':_0x2079d2[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x2079d2[_0x21bb('0x1d')],function(_0x57f088){return{'model':db[_0x57f088[_0x21bb('0x1f')]],'as':_0x57f088['as'],'attributes':_0x57f088[_0x21bb('0x1b')],'include':_0x57f088[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x57f088[_0x21bb('0x1d')],function(_0x52cb7d){return{'model':db[_0x52cb7d['model']],'as':_0x52cb7d['as'],'attributes':_0x52cb7d[_0x21bb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x21bb('0xc')](function(_0x55b344){logger[_0x21bb('0xd')](_0x21bb('0x17'),_0x284baa);logger[_0x21bb('0xf')]('GetZendeskAccount',_0x284baa,JSON[_0x21bb('0x12')](_0x55b344));_0x2d2b40(_0x55b344);})[_0x21bb('0x20')](function(_0x1991bf){logger[_0x21bb('0x14')](_0x21bb('0x17'),_0x1991bf[_0x21bb('0x15')],_0x284baa);_0x4d1883(_0x1a5e73['error'](0x1f4,_0x1991bf[_0x21bb('0x15')]));});});};exports[_0x21bb('0x21')]=function(_0x5905de){var _0x32d3f4=this;return new Promise(function(_0x126295,_0x254284){return db[_0x21bb('0x22')]['find']({'raw':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x23')]===undefined?!![]:![]:!![],'where':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1a')]||null:null,'attributes':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1b')]||null:null,'include':_0x5905de[_0x21bb('0x19')]?_0x5905de[_0x21bb('0x19')][_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x5905de[_0x21bb('0x19')]['include'],function(_0x4cf93b){return{'model':db[_0x4cf93b['model']],'as':_0x4cf93b['as'],'attributes':_0x4cf93b['attributes'],'include':_0x4cf93b[_0x21bb('0x1d')]?_[_0x21bb('0x1e')](_0x4cf93b[_0x21bb('0x1d')],function(_0x5ce09b){return{'model':db[_0x5ce09b[_0x21bb('0x1f')]],'as':_0x5ce09b['as'],'attributes':_0x5ce09b[_0x21bb('0x1b')],'include':_0x5ce09b['include']?_['map'](_0x5ce09b['include'],function(_0x55519b){return{'model':db[_0x55519b[_0x21bb('0x1f')]],'as':_0x55519b['as'],'attributes':_0x55519b[_0x21bb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x21bb('0xc')](function(_0x4e1099){logger['info'](_0x21bb('0x21'),_0x5905de);logger[_0x21bb('0xf')](_0x21bb('0x21'),_0x5905de,JSON[_0x21bb('0x12')](_0x4e1099));_0x126295(_0x4e1099);})[_0x21bb('0x20')](function(_0xd7a76){logger[_0x21bb('0x14')](_0x21bb('0x21'),_0xd7a76[_0x21bb('0x15')],_0x5905de);_0x254284(_0x32d3f4[_0x21bb('0x14')](0x1f4,_0xd7a76['message']));});});};
\ No newline at end of file
index 2c62a1a..778e1da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','setTags','put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0x102c72,_0x1be339){var _0x2db094=function(_0x26e36a){while(--_0x26e36a){_0x102c72['push'](_0x102c72['shift']());}};_0x2db094(++_0x1be339);}(_0x757a,0xde));var _0xa757=function(_0x13e140,_0x10d3b7){_0x13e140=_0x13e140-0x0;var _0x31c5c5=_0x757a[_0x13e140];return _0x31c5c5;};'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['getFields']);router[_0xa757('0x7')](_0xa757('0xc'),auth[_0xa757('0x9')](),controller[_0xa757('0xd')]);router[_0xa757('0x7')](_0xa757('0xe'),auth[_0xa757('0x9')](),controller['getDescriptions']);router['get']('/:id/tags',auth['isAuthenticated'](),controller['getTags']);router[_0xa757('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa757('0xf')]('/:id/tags',auth['isAuthenticated'](),controller[_0xa757('0x10')]);router[_0xa757('0x11')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x13')]);router[_0xa757('0x14')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x15')]);module[_0xa757('0x16')]=router;
\ No newline at end of file
+var _0xa571=['util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','put','update','exports','multer'];(function(_0x16e0b8,_0x30148a){var _0x57dc6c=function(_0xa337ce){while(--_0xa337ce){_0x16e0b8['push'](_0x16e0b8['shift']());}};_0x57dc6c(++_0x30148a);}(_0xa571,0x107));var _0x1a57=function(_0x43febc,_0x46449f){_0x43febc=_0x43febc-0x0;var _0x56d914=_0xa571[_0x43febc];return _0x56d914;};'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('./intZendeskConfiguration.controller');router[_0x1a57('0x7')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0x9')]);router[_0x1a57('0x7')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller['show']);router[_0x1a57('0x7')](_0x1a57('0xb'),auth[_0x1a57('0x8')](),controller['getFields']);router[_0x1a57('0x7')](_0x1a57('0xc'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xd')]);router[_0x1a57('0x7')](_0x1a57('0xe'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xf')]);router['get']('/:id/tags',auth[_0x1a57('0x8')](),controller[_0x1a57('0x10')]);router[_0x1a57('0x11')]('/',auth['isAuthenticated'](),controller[_0x1a57('0x12')]);router[_0x1a57('0x11')]('/:id/tags',auth[_0x1a57('0x8')](),controller['setTags']);router[_0x1a57('0x13')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller[_0x1a57('0x14')]);router['delete'](_0x1a57('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1a57('0x15')]=router;
\ No newline at end of file
index c2e7dd2..763342b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf5e=['STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdf5e,0x185));var _0xedf5=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xdf5e[_0x2b10c6];return _0x3789d2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xedf5('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5ed3=['STRING'];(function(_0x2fc650,_0x24cac6){var _0x2df768=function(_0x14ef8d){while(--_0x14ef8d){_0x2fc650['push'](_0x2fc650['shift']());}};_0x2df768(++_0x24cac6);}(_0x5ed3,0x78));var _0x35ed=function(_0x4f8436,_0x1df454){_0x4f8436=_0x4f8436-0x0;var _0xdbc6d4=_0x5ed3[_0x4f8436];return _0xdbc6d4;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x35ed('0x0')]},'description':{'type':Sequelize[_0x35ed('0x0')]}};
\ No newline at end of file
index b0c2dd7..4921825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7efa=['findAll','catch','show','params','include','find','create','body','getFields','findOne','ZendeskField','order','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','keys','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x474067,_0x1dbca2){var _0x44d519=function(_0x4c48be){while(--_0x4c48be){_0x474067['push'](_0x474067['shift']());}};_0x44d519(++_0x1dbca2);}(_0x7efa,0x1c5));var _0xa7ef=function(_0x5f4cd7,_0x459c44){_0x5f4cd7=_0x5f4cd7-0x0;var _0x47c93f=_0x7efa[_0x5f4cd7];return _0x47c93f;};'use strict';var emlformat=require(_0xa7ef('0x0'));var rimraf=require(_0xa7ef('0x1'));var zipdir=require(_0xa7ef('0x2'));var jsonpatch=require(_0xa7ef('0x3'));var rp=require(_0xa7ef('0x4'));var moment=require(_0xa7ef('0x5'));var BPromise=require(_0xa7ef('0x6'));var Mustache=require(_0xa7ef('0x7'));var util=require('util');var path=require('path');var sox=require(_0xa7ef('0x8'));var csv=require(_0xa7ef('0x9'));var ejs=require(_0xa7ef('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa7ef('0xb'));var crypto=require(_0xa7ef('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa7ef('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa7ef('0xe'));var Redis=require(_0xa7ef('0xf'));var authService=require(_0xa7ef('0x10'));var qs=require(_0xa7ef('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa7ef('0x12'));var logger=require('../../config/logger')(_0xa7ef('0x13'));var utils=require(_0xa7ef('0x14'));var config=require(_0xa7ef('0x15'));var licenseUtil=require(_0xa7ef('0x16'));var db=require(_0xa7ef('0x17'))['db'];function respondWithStatusCode(_0x1591f9,_0x56cad8){_0x56cad8=_0x56cad8||0xcc;return function(_0x1917ad){if(_0x1917ad){return _0x1591f9[_0xa7ef('0x18')](_0x56cad8);}return _0x1591f9[_0xa7ef('0x19')](_0x56cad8)['end']();};}function respondWithResult(_0x27ef23,_0x48d095){_0x48d095=_0x48d095||0xc8;return function(_0x5be342){if(_0x5be342){return _0x27ef23[_0xa7ef('0x19')](_0x48d095)['json'](_0x5be342);}};}function respondWithFilteredResult(_0x2289b9,_0x341e54){return function(_0x1e2828){if(_0x1e2828){var _0x5b1dc9=typeof _0x341e54[_0xa7ef('0x1a')]===_0xa7ef('0x1b')&&typeof _0x341e54[_0xa7ef('0x1c')]==='undefined';var _0x188581=_0x1e2828[_0xa7ef('0x1d')];var _0x17ba62=_0x5b1dc9?0x0:_0x341e54[_0xa7ef('0x1a')];var _0x501a08=_0x5b1dc9?_0x1e2828[_0xa7ef('0x1d')]:_0x341e54['offset']+_0x341e54[_0xa7ef('0x1c')];var _0x2bf6ee;if(_0x501a08>=_0x188581){_0x501a08=_0x188581;_0x2bf6ee=0xc8;}else{_0x2bf6ee=0xce;}_0x2289b9[_0xa7ef('0x19')](_0x2bf6ee);return _0x2289b9[_0xa7ef('0x1e')](_0xa7ef('0x1f'),_0x17ba62+'-'+_0x501a08+'/'+_0x188581)[_0xa7ef('0x20')](_0x1e2828);}return null;};}function patchUpdates(_0x97586a){return function(_0x408d0b){try{jsonpatch[_0xa7ef('0x21')](_0x408d0b,_0x97586a,!![]);}catch(_0x4510b0){return BPromise[_0xa7ef('0x22')](_0x4510b0);}return _0x408d0b[_0xa7ef('0x23')]();};}function saveUpdates(_0xef9c28,_0x4f4cc3){return function(_0x27407a){if(_0x27407a){return _0x27407a[_0xa7ef('0x24')](_0xef9c28)['then'](function(_0x12c602){return _0x12c602;});}return null;};}function removeEntity(_0x27f724,_0x203e0a){return function(_0xce1ea){if(_0xce1ea){return _0xce1ea[_0xa7ef('0x25')]()[_0xa7ef('0x26')](function(){_0x27f724[_0xa7ef('0x19')](0xcc)[_0xa7ef('0x27')]();});}};}function handleEntityNotFound(_0x776aac,_0x18078b){return function(_0x22e3a1){if(!_0x22e3a1){_0x776aac[_0xa7ef('0x18')](0x194);}return _0x22e3a1;};}function handleError(_0x4c1f8a,_0x1a4a3b){_0x1a4a3b=_0x1a4a3b||0x1f4;return function(_0x22f4b2){logger[_0xa7ef('0x28')](_0x22f4b2[_0xa7ef('0x29')]);if(_0x22f4b2[_0xa7ef('0x2a')]){delete _0x22f4b2[_0xa7ef('0x2a')];}_0x4c1f8a['status'](_0x1a4a3b)[_0xa7ef('0x2b')](_0x22f4b2);};}exports[_0xa7ef('0x2c')]=function(_0x554e80,_0xcddcf6){var _0x2ee9dc={},_0x2f103b={},_0x45ec6f={'count':0x0,'rows':[]};var _0x3fd833=_[_0xa7ef('0x2d')](db[_0xa7ef('0x2e')][_0xa7ef('0x2f')],function(_0x205d41){return{'name':_0x205d41[_0xa7ef('0x30')],'type':_0x205d41[_0xa7ef('0x31')][_0xa7ef('0x32')]};});_0x2f103b[_0xa7ef('0x33')]=_['map'](_0x3fd833,_0xa7ef('0x2a'));_0x2f103b['query']=_[_0xa7ef('0x34')](_0x554e80['query']);_0x2f103b['filters']=_['intersection'](_0x2f103b[_0xa7ef('0x33')],_0x2f103b['query']);_0x2ee9dc[_0xa7ef('0x35')]=_[_0xa7ef('0x36')](_0x2f103b[_0xa7ef('0x33')],qs[_0xa7ef('0x37')](_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x37')]));_0x2ee9dc[_0xa7ef('0x35')]=_0x2ee9dc[_0xa7ef('0x35')][_0xa7ef('0x39')]?_0x2ee9dc[_0xa7ef('0x35')]:_0x2f103b['model'];if(!_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x3a')](_0xa7ef('0x3b'))){_0x2ee9dc[_0xa7ef('0x1c')]=qs[_0xa7ef('0x1c')](_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x1c')]);_0x2ee9dc[_0xa7ef('0x1a')]=qs[_0xa7ef('0x1a')](_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x1a')]);}_0x2ee9dc['order']=qs[_0xa7ef('0x3c')](_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x3c')]);_0x2ee9dc[_0xa7ef('0x3d')]=qs[_0xa7ef('0x3e')](_[_0xa7ef('0x3f')](_0x554e80[_0xa7ef('0x38')],_0x2f103b[_0xa7ef('0x3e')]),_0x3fd833);if(_0x554e80['query'][_0xa7ef('0x40')]){_0x2ee9dc['where']=_[_0xa7ef('0x41')](_0x2ee9dc[_0xa7ef('0x3d')],{'$or':_[_0xa7ef('0x2d')](_0x3fd833,function(_0x597216){if(_0x597216[_0xa7ef('0x31')]!==_0xa7ef('0x42')){var _0x4fcd0b={};_0x4fcd0b[_0x597216[_0xa7ef('0x2a')]]={'$like':'%'+_0x554e80[_0xa7ef('0x38')][_0xa7ef('0x40')]+'%'};return _0x4fcd0b;}})});}_0x2ee9dc=_['merge']({},_0x2ee9dc,_0x554e80[_0xa7ef('0x43')]);var _0x582adb={'where':_0x2ee9dc[_0xa7ef('0x3d')]};return db[_0xa7ef('0x2e')][_0xa7ef('0x1d')](_0x582adb)['then'](function(_0xfbe1f){_0x45ec6f[_0xa7ef('0x1d')]=_0xfbe1f;if(_0x554e80['query'][_0xa7ef('0x44')]){_0x2ee9dc['include']=[{'all':!![]}];}return db[_0xa7ef('0x2e')][_0xa7ef('0x45')](_0x2ee9dc);})['then'](function(_0x5eff65){_0x45ec6f['rows']=_0x5eff65;return _0x45ec6f;})[_0xa7ef('0x26')](respondWithFilteredResult(_0xcddcf6,_0x2ee9dc))[_0xa7ef('0x46')](handleError(_0xcddcf6,null));};exports[_0xa7ef('0x47')]=function(_0x19721a,_0x17a9f8){var _0x3f8a17={'raw':![],'where':{'id':_0x19721a[_0xa7ef('0x48')]['id']}},_0x36f459={};_0x36f459[_0xa7ef('0x33')]=_['keys'](db[_0xa7ef('0x2e')]['rawAttributes']);_0x36f459[_0xa7ef('0x38')]=_[_0xa7ef('0x34')](_0x19721a[_0xa7ef('0x38')]);_0x36f459['filters']=_[_0xa7ef('0x36')](_0x36f459[_0xa7ef('0x33')],_0x36f459[_0xa7ef('0x38')]);_0x3f8a17[_0xa7ef('0x35')]=_[_0xa7ef('0x36')](_0x36f459['model'],qs[_0xa7ef('0x37')](_0x19721a[_0xa7ef('0x38')]['fields']));_0x3f8a17[_0xa7ef('0x35')]=_0x3f8a17[_0xa7ef('0x35')][_0xa7ef('0x39')]?_0x3f8a17['attributes']:_0x36f459[_0xa7ef('0x33')];if(_0x19721a[_0xa7ef('0x38')][_0xa7ef('0x44')]){_0x3f8a17[_0xa7ef('0x49')]=[{'all':!![]}];}_0x3f8a17=_['merge']({},_0x3f8a17,_0x19721a[_0xa7ef('0x43')]);return db[_0xa7ef('0x2e')][_0xa7ef('0x4a')](_0x3f8a17)[_0xa7ef('0x26')](handleEntityNotFound(_0x17a9f8,null))[_0xa7ef('0x26')](respondWithResult(_0x17a9f8,null))[_0xa7ef('0x46')](handleError(_0x17a9f8,null));};exports[_0xa7ef('0x4b')]=function(_0x1925ab,_0x5a66b9){return db[_0xa7ef('0x2e')]['create'](_0x1925ab[_0xa7ef('0x4c')],{})['then'](respondWithResult(_0x5a66b9,0xc9))[_0xa7ef('0x46')](handleError(_0x5a66b9,null));};exports[_0xa7ef('0x24')]=function(_0x548731,_0x3ff13d){if(_0x548731[_0xa7ef('0x4c')]['id']){delete _0x548731[_0xa7ef('0x4c')]['id'];}return db[_0xa7ef('0x2e')][_0xa7ef('0x4a')]({'where':{'id':_0x548731[_0xa7ef('0x48')]['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x3ff13d,null))[_0xa7ef('0x26')](saveUpdates(_0x548731[_0xa7ef('0x4c')],null))[_0xa7ef('0x26')](respondWithResult(_0x3ff13d,null))[_0xa7ef('0x46')](handleError(_0x3ff13d,null));};exports[_0xa7ef('0x25')]=function(_0xd22c8d,_0x13a8f4){return db[_0xa7ef('0x2e')][_0xa7ef('0x4a')]({'where':{'id':_0xd22c8d[_0xa7ef('0x48')]['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x13a8f4,null))['then'](removeEntity(_0x13a8f4,null))[_0xa7ef('0x46')](handleError(_0x13a8f4,null));};exports[_0xa7ef('0x4d')]=function(_0x433162,_0x5550af,_0x1b809d){var _0x41af98={};var _0x3052aa={};var _0x48f93f;var _0x126e12;return db[_0xa7ef('0x2e')][_0xa7ef('0x4e')]({'where':{'id':_0x433162['params']['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x5550af,null))['then'](function(_0x1f5e45){if(_0x1f5e45){_0x48f93f=_0x1f5e45;_0x3052aa[_0xa7ef('0x33')]=_['keys'](db[_0xa7ef('0x4f')][_0xa7ef('0x2f')]);_0x3052aa[_0xa7ef('0x38')]=_[_0xa7ef('0x34')](_0x433162[_0xa7ef('0x38')]);_0x3052aa[_0xa7ef('0x3e')]=_[_0xa7ef('0x36')](_0x3052aa[_0xa7ef('0x33')],_0x3052aa[_0xa7ef('0x38')]);_0x41af98[_0xa7ef('0x35')]=_[_0xa7ef('0x36')](_0x3052aa[_0xa7ef('0x33')],qs[_0xa7ef('0x37')](_0x433162['query'][_0xa7ef('0x37')]));_0x41af98[_0xa7ef('0x35')]=_0x41af98[_0xa7ef('0x35')][_0xa7ef('0x39')]?_0x41af98[_0xa7ef('0x35')]:_0x3052aa[_0xa7ef('0x33')];_0x41af98[_0xa7ef('0x50')]=qs[_0xa7ef('0x3c')](_0x433162['query'][_0xa7ef('0x3c')]);_0x41af98[_0xa7ef('0x3d')]=qs[_0xa7ef('0x3e')](_[_0xa7ef('0x3f')](_0x433162[_0xa7ef('0x38')],_0x3052aa[_0xa7ef('0x3e')]));if(_0x433162[_0xa7ef('0x38')][_0xa7ef('0x40')]){_0x41af98[_0xa7ef('0x3d')]=_[_0xa7ef('0x41')](_0x41af98[_0xa7ef('0x3d')],{'$or':_[_0xa7ef('0x2d')](_0x41af98[_0xa7ef('0x35')],function(_0x2cc0ed){var _0x1a8582={};_0x1a8582[_0x2cc0ed]={'$like':'%'+_0x433162[_0xa7ef('0x38')][_0xa7ef('0x40')]+'%'};return _0x1a8582;})});}_0x41af98=_['merge']({},_0x41af98,_0x433162['options']);return _0x48f93f[_0xa7ef('0x4d')](_0x41af98);}})[_0xa7ef('0x26')](function(_0x4d2ee2){if(_0x4d2ee2){_0x126e12=_0x4d2ee2[_0xa7ef('0x39')];if(!_0x433162[_0xa7ef('0x38')][_0xa7ef('0x3a')]('nolimit')){_0x41af98[_0xa7ef('0x1c')]=qs[_0xa7ef('0x1c')](_0x433162[_0xa7ef('0x38')]['limit']);_0x41af98[_0xa7ef('0x1a')]=qs[_0xa7ef('0x1a')](_0x433162[_0xa7ef('0x38')]['offset']);}return _0x48f93f[_0xa7ef('0x4d')](_0x41af98);}})[_0xa7ef('0x26')](function(_0x5a78a0){if(_0x5a78a0){return _0x5a78a0?{'count':_0x126e12,'rows':_0x5a78a0}:null;}})[_0xa7ef('0x26')](respondWithResult(_0x5550af,null))[_0xa7ef('0x46')](handleError(_0x5550af,null));};exports[_0xa7ef('0x51')]=function(_0x5390cd,_0x47ade8,_0xab024b){var _0x24cbec={};var _0x4a7365={};var _0x1c1bd6;var _0x30f8ae;return db[_0xa7ef('0x2e')][_0xa7ef('0x4e')]({'where':{'id':_0x5390cd[_0xa7ef('0x48')]['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x47ade8,null))['then'](function(_0x1c0fdf){if(_0x1c0fdf){_0x1c1bd6=_0x1c0fdf;_0x4a7365[_0xa7ef('0x33')]=_[_0xa7ef('0x34')](db['ZendeskField'][_0xa7ef('0x2f')]);_0x4a7365[_0xa7ef('0x38')]=_[_0xa7ef('0x34')](_0x5390cd[_0xa7ef('0x38')]);_0x4a7365['filters']=_[_0xa7ef('0x36')](_0x4a7365[_0xa7ef('0x33')],_0x4a7365[_0xa7ef('0x38')]);_0x24cbec['attributes']=_['intersection'](_0x4a7365[_0xa7ef('0x33')],qs[_0xa7ef('0x37')](_0x5390cd[_0xa7ef('0x38')][_0xa7ef('0x37')]));_0x24cbec['attributes']=_0x24cbec[_0xa7ef('0x35')][_0xa7ef('0x39')]?_0x24cbec[_0xa7ef('0x35')]:_0x4a7365[_0xa7ef('0x33')];_0x24cbec[_0xa7ef('0x50')]=qs['sort'](_0x5390cd[_0xa7ef('0x38')][_0xa7ef('0x3c')]);_0x24cbec[_0xa7ef('0x3d')]=qs[_0xa7ef('0x3e')](_[_0xa7ef('0x3f')](_0x5390cd[_0xa7ef('0x38')],_0x4a7365[_0xa7ef('0x3e')]));if(_0x5390cd[_0xa7ef('0x38')]['filter']){_0x24cbec[_0xa7ef('0x3d')]=_[_0xa7ef('0x41')](_0x24cbec[_0xa7ef('0x3d')],{'$or':_[_0xa7ef('0x2d')](_0x24cbec['attributes'],function(_0x4f8716){var _0x465771={};_0x465771[_0x4f8716]={'$like':'%'+_0x5390cd[_0xa7ef('0x38')][_0xa7ef('0x40')]+'%'};return _0x465771;})});}_0x24cbec=_[_0xa7ef('0x41')]({},_0x24cbec,_0x5390cd[_0xa7ef('0x43')]);return _0x1c1bd6[_0xa7ef('0x51')](_0x24cbec);}})[_0xa7ef('0x26')](function(_0x4434ed){if(_0x4434ed){_0x30f8ae=_0x4434ed['length'];if(!_0x5390cd[_0xa7ef('0x38')][_0xa7ef('0x3a')](_0xa7ef('0x3b'))){_0x24cbec['limit']=qs[_0xa7ef('0x1c')](_0x5390cd[_0xa7ef('0x38')]['limit']);_0x24cbec[_0xa7ef('0x1a')]=qs[_0xa7ef('0x1a')](_0x5390cd[_0xa7ef('0x38')][_0xa7ef('0x1a')]);}return _0x1c1bd6[_0xa7ef('0x51')](_0x24cbec);}})[_0xa7ef('0x26')](function(_0x3d86ce){if(_0x3d86ce){return _0x3d86ce?{'count':_0x30f8ae,'rows':_0x3d86ce}:null;}})[_0xa7ef('0x26')](respondWithResult(_0x47ade8,null))['catch'](handleError(_0x47ade8,null));};exports[_0xa7ef('0x52')]=function(_0x34c8b0,_0x23df7a,_0xc28f4e){var _0x466ff4={};var _0x5a0867={};var _0x12667f;var _0x3aaf30;return db['ZendeskConfiguration'][_0xa7ef('0x4e')]({'where':{'id':_0x34c8b0[_0xa7ef('0x48')]['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x23df7a,null))['then'](function(_0x181ddd){if(_0x181ddd){_0x12667f=_0x181ddd;_0x5a0867['model']=_[_0xa7ef('0x34')](db[_0xa7ef('0x4f')]['rawAttributes']);_0x5a0867[_0xa7ef('0x38')]=_[_0xa7ef('0x34')](_0x34c8b0['query']);_0x5a0867['filters']=_[_0xa7ef('0x36')](_0x5a0867[_0xa7ef('0x33')],_0x5a0867[_0xa7ef('0x38')]);_0x466ff4[_0xa7ef('0x35')]=_[_0xa7ef('0x36')](_0x5a0867[_0xa7ef('0x33')],qs['fields'](_0x34c8b0['query'][_0xa7ef('0x37')]));_0x466ff4[_0xa7ef('0x35')]=_0x466ff4[_0xa7ef('0x35')][_0xa7ef('0x39')]?_0x466ff4[_0xa7ef('0x35')]:_0x5a0867[_0xa7ef('0x33')];_0x466ff4['order']=qs[_0xa7ef('0x3c')](_0x34c8b0['query'][_0xa7ef('0x3c')]);_0x466ff4[_0xa7ef('0x3d')]=qs[_0xa7ef('0x3e')](_[_0xa7ef('0x3f')](_0x34c8b0[_0xa7ef('0x38')],_0x5a0867[_0xa7ef('0x3e')]));if(_0x34c8b0['query']['filter']){_0x466ff4[_0xa7ef('0x3d')]=_[_0xa7ef('0x41')](_0x466ff4[_0xa7ef('0x3d')],{'$or':_[_0xa7ef('0x2d')](_0x466ff4[_0xa7ef('0x35')],function(_0x3ccbe9){var _0x3136d3={};_0x3136d3[_0x3ccbe9]={'$like':'%'+_0x34c8b0[_0xa7ef('0x38')][_0xa7ef('0x40')]+'%'};return _0x3136d3;})});}_0x466ff4=_['merge']({},_0x466ff4,_0x34c8b0[_0xa7ef('0x43')]);return _0x12667f[_0xa7ef('0x52')](_0x466ff4);}})[_0xa7ef('0x26')](function(_0x3e75e6){if(_0x3e75e6){_0x3aaf30=_0x3e75e6['length'];if(!_0x34c8b0[_0xa7ef('0x38')][_0xa7ef('0x3a')](_0xa7ef('0x3b'))){_0x466ff4[_0xa7ef('0x1c')]=qs[_0xa7ef('0x1c')](_0x34c8b0['query'][_0xa7ef('0x1c')]);_0x466ff4[_0xa7ef('0x1a')]=qs[_0xa7ef('0x1a')](_0x34c8b0[_0xa7ef('0x38')][_0xa7ef('0x1a')]);}return _0x12667f[_0xa7ef('0x52')](_0x466ff4);}})['then'](function(_0x1aa59b){if(_0x1aa59b){return _0x1aa59b?{'count':_0x3aaf30,'rows':_0x1aa59b}:null;}})[_0xa7ef('0x26')](respondWithResult(_0x23df7a,null))[_0xa7ef('0x46')](handleError(_0x23df7a,null));};exports[_0xa7ef('0x53')]=function(_0x38fdf8,_0x25fa74,_0x1c74a3){var _0x51c279={};var _0x57524e={};var _0x57f851;var _0x274a30;return db[_0xa7ef('0x2e')][_0xa7ef('0x4e')]({'where':{'id':_0x38fdf8[_0xa7ef('0x48')]['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0x25fa74,null))[_0xa7ef('0x26')](function(_0x2194c9){if(_0x2194c9){_0x57f851=_0x2194c9;_0x57524e[_0xa7ef('0x33')]=_['keys'](db[_0xa7ef('0x54')][_0xa7ef('0x2f')]);_0x57524e[_0xa7ef('0x38')]=_[_0xa7ef('0x34')](_0x38fdf8[_0xa7ef('0x38')]);_0x57524e[_0xa7ef('0x3e')]=_[_0xa7ef('0x36')](_0x57524e[_0xa7ef('0x33')],_0x57524e[_0xa7ef('0x38')]);_0x51c279[_0xa7ef('0x35')]=_[_0xa7ef('0x36')](_0x57524e[_0xa7ef('0x33')],qs[_0xa7ef('0x37')](_0x38fdf8['query'][_0xa7ef('0x37')]));_0x51c279[_0xa7ef('0x35')]=_0x51c279['attributes'][_0xa7ef('0x39')]?_0x51c279['attributes']:_0x57524e[_0xa7ef('0x33')];_0x51c279[_0xa7ef('0x50')]=qs[_0xa7ef('0x3c')](_0x38fdf8['query'][_0xa7ef('0x3c')]);_0x51c279[_0xa7ef('0x3d')]=qs[_0xa7ef('0x3e')](_['pick'](_0x38fdf8[_0xa7ef('0x38')],_0x57524e[_0xa7ef('0x3e')]));if(_0x38fdf8[_0xa7ef('0x38')][_0xa7ef('0x40')]){_0x51c279[_0xa7ef('0x3d')]=_['merge'](_0x51c279[_0xa7ef('0x3d')],{'$or':_['map'](_0x51c279[_0xa7ef('0x35')],function(_0x258bee){var _0x235431={};_0x235431[_0x258bee]={'$like':'%'+_0x38fdf8[_0xa7ef('0x38')][_0xa7ef('0x40')]+'%'};return _0x235431;})});}_0x51c279=_[_0xa7ef('0x41')]({},_0x51c279,_0x38fdf8[_0xa7ef('0x43')]);return _0x57f851[_0xa7ef('0x53')](_0x51c279);}})[_0xa7ef('0x26')](function(_0x11f4e3){if(_0x11f4e3){_0x274a30=_0x11f4e3[_0xa7ef('0x39')];if(!_0x38fdf8[_0xa7ef('0x38')]['hasOwnProperty'](_0xa7ef('0x3b'))){_0x51c279[_0xa7ef('0x1c')]=qs[_0xa7ef('0x1c')](_0x38fdf8[_0xa7ef('0x38')]['limit']);_0x51c279[_0xa7ef('0x1a')]=qs[_0xa7ef('0x1a')](_0x38fdf8['query'][_0xa7ef('0x1a')]);}return _0x57f851[_0xa7ef('0x53')](_0x51c279);}})[_0xa7ef('0x26')](function(_0x349088){if(_0x349088){return _0x349088?{'count':_0x274a30,'rows':_0x349088}:null;}})['then'](respondWithResult(_0x25fa74,null))[_0xa7ef('0x46')](handleError(_0x25fa74,null));};exports[_0xa7ef('0x55')]=function(_0x26e4c4,_0xc6c5f5,_0x56b26d){if(_0x26e4c4[_0xa7ef('0x4c')]['id']){delete _0x26e4c4[_0xa7ef('0x4c')]['id'];}return db['ZendeskConfiguration'][_0xa7ef('0x4e')]({'where':{'id':_0x26e4c4['params']['id']}})[_0xa7ef('0x26')](handleEntityNotFound(_0xc6c5f5,null))[_0xa7ef('0x26')](function(_0x3880dd){if(_0x3880dd){return _0x3880dd[_0xa7ef('0x55')](_0x26e4c4[_0xa7ef('0x4c')][_0xa7ef('0x56')]||[]);}return null;})[_0xa7ef('0x26')](respondWithResult(_0xc6c5f5,null))[_0xa7ef('0x46')](handleError(_0xc6c5f5,null));};
\ No newline at end of file
+var _0xd08d=['then','destroy','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','catch','show','params','includeAll','find','update','body','getFields','findOne','ZendeskField','getDescriptions','getTags','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save'];(function(_0x2fa9cc,_0x4a17f8){var _0xa3ffc7=function(_0x299ff3){while(--_0x299ff3){_0x2fa9cc['push'](_0x2fa9cc['shift']());}};_0xa3ffc7(++_0x4a17f8);}(_0xd08d,0x81));var _0xdd08=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0xd08d[_0xf51c06];return _0x1d5420;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd08('0x0'));var zipdir=require(_0xdd08('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdd08('0x2'));var moment=require(_0xdd08('0x3'));var BPromise=require(_0xdd08('0x4'));var Mustache=require('mustache');var util=require(_0xdd08('0x5'));var path=require(_0xdd08('0x6'));var sox=require(_0xdd08('0x7'));var csv=require('to-csv');var ejs=require(_0xdd08('0x8'));var fs=require('fs');var fs_extra=require(_0xdd08('0x9'));var _=require(_0xdd08('0xa'));var squel=require(_0xdd08('0xb'));var crypto=require(_0xdd08('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdd08('0xd'));var toCsv=require(_0xdd08('0xe'));var querystring=require(_0xdd08('0xf'));var Papa=require('papaparse');var Redis=require(_0xdd08('0x10'));var authService=require(_0xdd08('0x11'));var qs=require(_0xdd08('0x12'));var as=require(_0xdd08('0x13'));var hardwareService=require(_0xdd08('0x14'));var logger=require(_0xdd08('0x15'))(_0xdd08('0x16'));var utils=require(_0xdd08('0x17'));var config=require(_0xdd08('0x18'));var licenseUtil=require(_0xdd08('0x19'));var db=require(_0xdd08('0x1a'))['db'];function respondWithStatusCode(_0x1543c8,_0x4bf79b){_0x4bf79b=_0x4bf79b||0xcc;return function(_0x2ef721){if(_0x2ef721){return _0x1543c8[_0xdd08('0x1b')](_0x4bf79b);}return _0x1543c8[_0xdd08('0x1c')](_0x4bf79b)[_0xdd08('0x1d')]();};}function respondWithResult(_0x415169,_0x3ed0d1){_0x3ed0d1=_0x3ed0d1||0xc8;return function(_0x32a6d5){if(_0x32a6d5){return _0x415169[_0xdd08('0x1c')](_0x3ed0d1)[_0xdd08('0x1e')](_0x32a6d5);}};}function respondWithFilteredResult(_0x11aad3,_0x2fc29c){return function(_0x9a6225){if(_0x9a6225){var _0x784541=typeof _0x2fc29c[_0xdd08('0x1f')]===_0xdd08('0x20')&&typeof _0x2fc29c[_0xdd08('0x21')]===_0xdd08('0x20');var _0x46a36f=_0x9a6225[_0xdd08('0x22')];var _0x212100=_0x784541?0x0:_0x2fc29c[_0xdd08('0x1f')];var _0x562b83=_0x784541?_0x9a6225['count']:_0x2fc29c[_0xdd08('0x1f')]+_0x2fc29c[_0xdd08('0x21')];var _0x4d815e;if(_0x562b83>=_0x46a36f){_0x562b83=_0x46a36f;_0x4d815e=0xc8;}else{_0x4d815e=0xce;}_0x11aad3['status'](_0x4d815e);return _0x11aad3['set'](_0xdd08('0x23'),_0x212100+'-'+_0x562b83+'/'+_0x46a36f)[_0xdd08('0x1e')](_0x9a6225);}return null;};}function patchUpdates(_0x1cfc12){return function(_0x4a587b){try{jsonpatch[_0xdd08('0x24')](_0x4a587b,_0x1cfc12,!![]);}catch(_0x39bb81){return BPromise[_0xdd08('0x25')](_0x39bb81);}return _0x4a587b[_0xdd08('0x26')]();};}function saveUpdates(_0x5c9ebe,_0x4f807b){return function(_0x1ef21d){if(_0x1ef21d){return _0x1ef21d['update'](_0x5c9ebe)[_0xdd08('0x27')](function(_0x33f10c){return _0x33f10c;});}return null;};}function removeEntity(_0x5f0166,_0x4b1be1){return function(_0x2f3361){if(_0x2f3361){return _0x2f3361[_0xdd08('0x28')]()['then'](function(){_0x5f0166[_0xdd08('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e84d6,_0x3aeffc){return function(_0x4e677d){if(!_0x4e677d){_0x1e84d6[_0xdd08('0x1b')](0x194);}return _0x4e677d;};}function handleError(_0x281ae6,_0x169796){_0x169796=_0x169796||0x1f4;return function(_0x5a8a84){logger['error'](_0x5a8a84[_0xdd08('0x29')]);if(_0x5a8a84[_0xdd08('0x2a')]){delete _0x5a8a84[_0xdd08('0x2a')];}_0x281ae6[_0xdd08('0x1c')](_0x169796)[_0xdd08('0x2b')](_0x5a8a84);};}exports[_0xdd08('0x2c')]=function(_0x566f1e,_0x4956b4){var _0x2aaf75={},_0xbed010={},_0x1639e4={'count':0x0,'rows':[]};var _0x364a64=_[_0xdd08('0x2d')](db[_0xdd08('0x2e')][_0xdd08('0x2f')],function(_0x5d99d6){return{'name':_0x5d99d6[_0xdd08('0x30')],'type':_0x5d99d6[_0xdd08('0x31')][_0xdd08('0x32')]};});_0xbed010[_0xdd08('0x33')]=_[_0xdd08('0x2d')](_0x364a64,_0xdd08('0x2a'));_0xbed010[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x566f1e['query']);_0xbed010['filters']=_[_0xdd08('0x36')](_0xbed010[_0xdd08('0x33')],_0xbed010[_0xdd08('0x34')]);_0x2aaf75['attributes']=_['intersection'](_0xbed010[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x566f1e[_0xdd08('0x34')][_0xdd08('0x37')]));_0x2aaf75[_0xdd08('0x38')]=_0x2aaf75[_0xdd08('0x38')][_0xdd08('0x39')]?_0x2aaf75['attributes']:_0xbed010[_0xdd08('0x33')];if(!_0x566f1e[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x2aaf75[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x566f1e[_0xdd08('0x34')]['limit']);_0x2aaf75[_0xdd08('0x1f')]=qs['offset'](_0x566f1e['query']['offset']);}_0x2aaf75[_0xdd08('0x3c')]=qs['sort'](_0x566f1e[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x2aaf75[_0xdd08('0x3e')]=qs['filters'](_[_0xdd08('0x3f')](_0x566f1e['query'],_0xbed010[_0xdd08('0x40')]),_0x364a64);if(_0x566f1e['query'][_0xdd08('0x41')]){_0x2aaf75[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x2aaf75[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x364a64,function(_0x474bc6){if(_0x474bc6['type']!==_0xdd08('0x43')){var _0x1e0573={};_0x1e0573[_0x474bc6[_0xdd08('0x2a')]]={'$like':'%'+_0x566f1e['query']['filter']+'%'};return _0x1e0573;}})});}_0x2aaf75=_[_0xdd08('0x42')]({},_0x2aaf75,_0x566f1e[_0xdd08('0x44')]);var _0x59f1ef={'where':_0x2aaf75['where']};return db['ZendeskConfiguration'][_0xdd08('0x22')](_0x59f1ef)[_0xdd08('0x27')](function(_0x5978f1){_0x1639e4[_0xdd08('0x22')]=_0x5978f1;if(_0x566f1e[_0xdd08('0x34')]['includeAll']){_0x2aaf75[_0xdd08('0x45')]=[{'all':!![]}];}return db[_0xdd08('0x2e')]['findAll'](_0x2aaf75);})[_0xdd08('0x27')](function(_0x58f39e){_0x1639e4['rows']=_0x58f39e;return _0x1639e4;})['then'](respondWithFilteredResult(_0x4956b4,_0x2aaf75))[_0xdd08('0x46')](handleError(_0x4956b4,null));};exports[_0xdd08('0x47')]=function(_0x1d0a9b,_0x246f94){var _0x43c78e={'raw':![],'where':{'id':_0x1d0a9b[_0xdd08('0x48')]['id']}},_0x55d883={};_0x55d883[_0xdd08('0x33')]=_['keys'](db[_0xdd08('0x2e')][_0xdd08('0x2f')]);_0x55d883['query']=_[_0xdd08('0x35')](_0x1d0a9b[_0xdd08('0x34')]);_0x55d883[_0xdd08('0x40')]=_[_0xdd08('0x36')](_0x55d883[_0xdd08('0x33')],_0x55d883['query']);_0x43c78e['attributes']=_[_0xdd08('0x36')](_0x55d883[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x1d0a9b[_0xdd08('0x34')]['fields']));_0x43c78e[_0xdd08('0x38')]=_0x43c78e[_0xdd08('0x38')][_0xdd08('0x39')]?_0x43c78e[_0xdd08('0x38')]:_0x55d883[_0xdd08('0x33')];if(_0x1d0a9b[_0xdd08('0x34')][_0xdd08('0x49')]){_0x43c78e[_0xdd08('0x45')]=[{'all':!![]}];}_0x43c78e=_[_0xdd08('0x42')]({},_0x43c78e,_0x1d0a9b['options']);return db[_0xdd08('0x2e')][_0xdd08('0x4a')](_0x43c78e)[_0xdd08('0x27')](handleEntityNotFound(_0x246f94,null))['then'](respondWithResult(_0x246f94,null))[_0xdd08('0x46')](handleError(_0x246f94,null));};exports['create']=function(_0x125b5a,_0x590543){return db['ZendeskConfiguration']['create'](_0x125b5a['body'],{})[_0xdd08('0x27')](respondWithResult(_0x590543,0xc9))[_0xdd08('0x46')](handleError(_0x590543,null));};exports[_0xdd08('0x4b')]=function(_0x3351be,_0x58b8f4){if(_0x3351be[_0xdd08('0x4c')]['id']){delete _0x3351be['body']['id'];}return db[_0xdd08('0x2e')][_0xdd08('0x4a')]({'where':{'id':_0x3351be[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x58b8f4,null))[_0xdd08('0x27')](saveUpdates(_0x3351be[_0xdd08('0x4c')],null))['then'](respondWithResult(_0x58b8f4,null))[_0xdd08('0x46')](handleError(_0x58b8f4,null));};exports[_0xdd08('0x28')]=function(_0x350614,_0x3b27fd){return db[_0xdd08('0x2e')]['find']({'where':{'id':_0x350614['params']['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x3b27fd,null))['then'](removeEntity(_0x3b27fd,null))[_0xdd08('0x46')](handleError(_0x3b27fd,null));};exports[_0xdd08('0x4d')]=function(_0x4f7c6e,_0x25a055,_0x2cc0dc){var _0x2bb17a={};var _0xddc945={};var _0x3596dd;var _0x132aba;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x4f7c6e[_0xdd08('0x48')]['id']}})['then'](handleEntityNotFound(_0x25a055,null))['then'](function(_0x211485){if(_0x211485){_0x3596dd=_0x211485;_0xddc945[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0xddc945['query']=_['keys'](_0x4f7c6e['query']);_0xddc945[_0xdd08('0x40')]=_[_0xdd08('0x36')](_0xddc945[_0xdd08('0x33')],_0xddc945[_0xdd08('0x34')]);_0x2bb17a[_0xdd08('0x38')]=_[_0xdd08('0x36')](_0xddc945[_0xdd08('0x33')],qs[_0xdd08('0x37')](_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x37')]));_0x2bb17a[_0xdd08('0x38')]=_0x2bb17a[_0xdd08('0x38')][_0xdd08('0x39')]?_0x2bb17a[_0xdd08('0x38')]:_0xddc945['model'];_0x2bb17a['order']=qs[_0xdd08('0x3d')](_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x2bb17a[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_[_0xdd08('0x3f')](_0x4f7c6e['query'],_0xddc945[_0xdd08('0x40')]));if(_0x4f7c6e['query'][_0xdd08('0x41')]){_0x2bb17a[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x2bb17a[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x2bb17a[_0xdd08('0x38')],function(_0xb2a5a7){var _0x18ba33={};_0x18ba33[_0xb2a5a7]={'$like':'%'+_0x4f7c6e[_0xdd08('0x34')]['filter']+'%'};return _0x18ba33;})});}_0x2bb17a=_[_0xdd08('0x42')]({},_0x2bb17a,_0x4f7c6e[_0xdd08('0x44')]);return _0x3596dd[_0xdd08('0x4d')](_0x2bb17a);}})[_0xdd08('0x27')](function(_0x363404){if(_0x363404){_0x132aba=_0x363404[_0xdd08('0x39')];if(!_0x4f7c6e[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x2bb17a[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x4f7c6e['query'][_0xdd08('0x21')]);_0x2bb17a[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x4f7c6e['query'][_0xdd08('0x1f')]);}return _0x3596dd[_0xdd08('0x4d')](_0x2bb17a);}})[_0xdd08('0x27')](function(_0x42ee4d){if(_0x42ee4d){return _0x42ee4d?{'count':_0x132aba,'rows':_0x42ee4d}:null;}})[_0xdd08('0x27')](respondWithResult(_0x25a055,null))[_0xdd08('0x46')](handleError(_0x25a055,null));};exports['getSubjects']=function(_0x4fe1a8,_0x329380,_0x912374){var _0x4f6336={};var _0x2e7149={};var _0x501b94;var _0xfdd022;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x4fe1a8[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x329380,null))[_0xdd08('0x27')](function(_0x4201f7){if(_0x4201f7){_0x501b94=_0x4201f7;_0x2e7149[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0x2e7149[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x4fe1a8[_0xdd08('0x34')]);_0x2e7149[_0xdd08('0x40')]=_['intersection'](_0x2e7149['model'],_0x2e7149[_0xdd08('0x34')]);_0x4f6336[_0xdd08('0x38')]=_['intersection'](_0x2e7149[_0xdd08('0x33')],qs['fields'](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x37')]));_0x4f6336[_0xdd08('0x38')]=_0x4f6336[_0xdd08('0x38')][_0xdd08('0x39')]?_0x4f6336['attributes']:_0x2e7149['model'];_0x4f6336[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x4fe1a8[_0xdd08('0x34')]['sort']);_0x4f6336[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_['pick'](_0x4fe1a8['query'],_0x2e7149[_0xdd08('0x40')]));if(_0x4fe1a8['query'][_0xdd08('0x41')]){_0x4f6336[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x4f6336[_0xdd08('0x3e')],{'$or':_[_0xdd08('0x2d')](_0x4f6336[_0xdd08('0x38')],function(_0x5ea56d){var _0x44a31b={};_0x44a31b[_0x5ea56d]={'$like':'%'+_0x4fe1a8['query'][_0xdd08('0x41')]+'%'};return _0x44a31b;})});}_0x4f6336=_[_0xdd08('0x42')]({},_0x4f6336,_0x4fe1a8[_0xdd08('0x44')]);return _0x501b94['getSubjects'](_0x4f6336);}})[_0xdd08('0x27')](function(_0xf4d59e){if(_0xf4d59e){_0xfdd022=_0xf4d59e[_0xdd08('0x39')];if(!_0x4fe1a8['query'][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x4f6336[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x21')]);_0x4f6336[_0xdd08('0x1f')]=qs['offset'](_0x4fe1a8[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x501b94['getSubjects'](_0x4f6336);}})[_0xdd08('0x27')](function(_0xa32daf){if(_0xa32daf){return _0xa32daf?{'count':_0xfdd022,'rows':_0xa32daf}:null;}})[_0xdd08('0x27')](respondWithResult(_0x329380,null))['catch'](handleError(_0x329380,null));};exports['getDescriptions']=function(_0x3fa3e3,_0x1c2916,_0xda2ad7){var _0xab6baa={};var _0x13cb94={};var _0x343d1c;var _0x5d5a6f;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x3fa3e3['params']['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x1c2916,null))['then'](function(_0x14c3f6){if(_0x14c3f6){_0x343d1c=_0x14c3f6;_0x13cb94[_0xdd08('0x33')]=_[_0xdd08('0x35')](db[_0xdd08('0x4f')][_0xdd08('0x2f')]);_0x13cb94[_0xdd08('0x34')]=_[_0xdd08('0x35')](_0x3fa3e3['query']);_0x13cb94['filters']=_['intersection'](_0x13cb94[_0xdd08('0x33')],_0x13cb94[_0xdd08('0x34')]);_0xab6baa['attributes']=_[_0xdd08('0x36')](_0x13cb94[_0xdd08('0x33')],qs['fields'](_0x3fa3e3[_0xdd08('0x34')]['fields']));_0xab6baa[_0xdd08('0x38')]=_0xab6baa[_0xdd08('0x38')][_0xdd08('0x39')]?_0xab6baa['attributes']:_0x13cb94[_0xdd08('0x33')];_0xab6baa[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x3d')]);_0xab6baa[_0xdd08('0x3e')]=qs['filters'](_[_0xdd08('0x3f')](_0x3fa3e3[_0xdd08('0x34')],_0x13cb94[_0xdd08('0x40')]));if(_0x3fa3e3[_0xdd08('0x34')]['filter']){_0xab6baa[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0xab6baa[_0xdd08('0x3e')],{'$or':_['map'](_0xab6baa['attributes'],function(_0x5b33e5){var _0x4817bc={};_0x4817bc[_0x5b33e5]={'$like':'%'+_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x41')]+'%'};return _0x4817bc;})});}_0xab6baa=_[_0xdd08('0x42')]({},_0xab6baa,_0x3fa3e3['options']);return _0x343d1c['getDescriptions'](_0xab6baa);}})[_0xdd08('0x27')](function(_0x1604e0){if(_0x1604e0){_0x5d5a6f=_0x1604e0[_0xdd08('0x39')];if(!_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0xab6baa[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x3fa3e3['query'][_0xdd08('0x21')]);_0xab6baa[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x3fa3e3[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x343d1c[_0xdd08('0x50')](_0xab6baa);}})[_0xdd08('0x27')](function(_0x4f2c42){if(_0x4f2c42){return _0x4f2c42?{'count':_0x5d5a6f,'rows':_0x4f2c42}:null;}})[_0xdd08('0x27')](respondWithResult(_0x1c2916,null))[_0xdd08('0x46')](handleError(_0x1c2916,null));};exports[_0xdd08('0x51')]=function(_0x1aeb81,_0x4c3a44,_0x298671){var _0x5a4674={};var _0x35cae7={};var _0x30e8cd;var _0x196974;return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x1aeb81[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0x4c3a44,null))[_0xdd08('0x27')](function(_0x357197){if(_0x357197){_0x30e8cd=_0x357197;_0x35cae7[_0xdd08('0x33')]=_['keys'](db['Tag']['rawAttributes']);_0x35cae7['query']=_[_0xdd08('0x35')](_0x1aeb81['query']);_0x35cae7[_0xdd08('0x40')]=_['intersection'](_0x35cae7[_0xdd08('0x33')],_0x35cae7[_0xdd08('0x34')]);_0x5a4674[_0xdd08('0x38')]=_['intersection'](_0x35cae7[_0xdd08('0x33')],qs['fields'](_0x1aeb81['query'][_0xdd08('0x37')]));_0x5a4674[_0xdd08('0x38')]=_0x5a4674[_0xdd08('0x38')][_0xdd08('0x39')]?_0x5a4674[_0xdd08('0x38')]:_0x35cae7[_0xdd08('0x33')];_0x5a4674[_0xdd08('0x3c')]=qs[_0xdd08('0x3d')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x3d')]);_0x5a4674[_0xdd08('0x3e')]=qs[_0xdd08('0x40')](_[_0xdd08('0x3f')](_0x1aeb81[_0xdd08('0x34')],_0x35cae7['filters']));if(_0x1aeb81[_0xdd08('0x34')]['filter']){_0x5a4674[_0xdd08('0x3e')]=_[_0xdd08('0x42')](_0x5a4674['where'],{'$or':_[_0xdd08('0x2d')](_0x5a4674[_0xdd08('0x38')],function(_0x855f59){var _0x359520={};_0x359520[_0x855f59]={'$like':'%'+_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x41')]+'%'};return _0x359520;})});}_0x5a4674=_[_0xdd08('0x42')]({},_0x5a4674,_0x1aeb81[_0xdd08('0x44')]);return _0x30e8cd[_0xdd08('0x51')](_0x5a4674);}})[_0xdd08('0x27')](function(_0x35d365){if(_0x35d365){_0x196974=_0x35d365['length'];if(!_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x3a')](_0xdd08('0x3b'))){_0x5a4674[_0xdd08('0x21')]=qs[_0xdd08('0x21')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x21')]);_0x5a4674[_0xdd08('0x1f')]=qs[_0xdd08('0x1f')](_0x1aeb81[_0xdd08('0x34')][_0xdd08('0x1f')]);}return _0x30e8cd['getTags'](_0x5a4674);}})[_0xdd08('0x27')](function(_0x4606f9){if(_0x4606f9){return _0x4606f9?{'count':_0x196974,'rows':_0x4606f9}:null;}})['then'](respondWithResult(_0x4c3a44,null))[_0xdd08('0x46')](handleError(_0x4c3a44,null));};exports[_0xdd08('0x52')]=function(_0x5c94e4,_0xf02bd4,_0x2573c2){if(_0x5c94e4['body']['id']){delete _0x5c94e4[_0xdd08('0x4c')]['id'];}return db[_0xdd08('0x2e')][_0xdd08('0x4e')]({'where':{'id':_0x5c94e4[_0xdd08('0x48')]['id']}})[_0xdd08('0x27')](handleEntityNotFound(_0xf02bd4,null))[_0xdd08('0x27')](function(_0x16803e){if(_0x16803e){return _0x16803e[_0xdd08('0x52')](_0x5c94e4[_0xdd08('0x4c')][_0xdd08('0x53')]||[]);}return null;})['then'](respondWithResult(_0xf02bd4,null))[_0xdd08('0x46')](handleError(_0xf02bd4,null));};
\ No newline at end of file
index d930932..8dfa50e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d25=['api','moment','bluebird','request-promise','path','define','ZendeskConfiguration','int_zendesk_configurations','util','../../config/logger'];(function(_0x429d68,_0x1aa5a2){var _0x172ef0=function(_0x3b7d7d){while(--_0x3b7d7d){_0x429d68['push'](_0x429d68['shift']());}};_0x172ef0(++_0x1aa5a2);}(_0x7d25,0x8a));var _0x57d2=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x7d25[_0x220f3f];return _0x1f170e;};'use strict';var _=require('lodash');var util=require(_0x57d2('0x0'));var logger=require(_0x57d2('0x1'))(_0x57d2('0x2'));var moment=require(_0x57d2('0x3'));var BPromise=require(_0x57d2('0x4'));var rp=require(_0x57d2('0x5'));var fs=require('fs');var path=require(_0x57d2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x3c5511,_0x49cc5f){return _0x3c5511[_0x57d2('0x7')](_0x57d2('0x8'),attributes,{'tableName':_0x57d2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7708=['../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','rimraf'];(function(_0x36d0f1,_0x1cdcd8){var _0x471220=function(_0x2d1f5b){while(--_0x2d1f5b){_0x36d0f1['push'](_0x36d0f1['shift']());}};_0x471220(++_0x1cdcd8);}(_0x7708,0x188));var _0x8770=function(_0x4178af,_0x388652){_0x4178af=_0x4178af-0x0;var _0x20f4b1=_0x7708[_0x4178af];return _0x20f4b1;};'use strict';var _=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var logger=require('../../config/logger')(_0x8770('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(_0x8770('0x3'));var config=require(_0x8770('0x4'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x8770('0x5')]=function(_0x50bab7,_0x31390d){return _0x50bab7[_0x8770('0x6')](_0x8770('0x7'),attributes,{'tableName':_0x8770('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a33215..5e2cdf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf401=['message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x47701b,_0x4903b0){var _0x1ee0c8=function(_0x555eaf){while(--_0x555eaf){_0x47701b['push'](_0x47701b['shift']());}};_0x1ee0c8(++_0x4903b0);}(_0xf401,0xdb));var _0x1f40=function(_0x2bb521,_0x37f9eb){_0x2bb521=_0x2bb521-0x0;var _0x39dd0c=_0xf401[_0x2bb521];return _0x39dd0c;};'use strict';var _=require(_0x1f40('0x0'));var util=require(_0x1f40('0x1'));var moment=require(_0x1f40('0x2'));var BPromise=require(_0x1f40('0x3'));var rs=require(_0x1f40('0x4'));var fs=require('fs');var Redis=require(_0x1f40('0x5'));var db=require(_0x1f40('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1f40('0x7'));var config=require(_0x1f40('0x8'));var jayson=require(_0x1f40('0x9'));var client=jayson[_0x1f40('0xa')][_0x1f40('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28707f,_0x13bb5e,_0x289842){return new BPromise(function(_0x3e292c,_0xf5bfa4){return client[_0x1f40('0xc')](_0x28707f,_0x289842)[_0x1f40('0xd')](function(_0x4ac926){logger['info'](_0x1f40('0xe'),_0x13bb5e,_0x1f40('0xf'));logger[_0x1f40('0x10')](_0x1f40('0x11'),_0x13bb5e,_0x1f40('0xf'),JSON[_0x1f40('0x12')](_0x4ac926));if(_0x4ac926[_0x1f40('0x13')]){if(_0x4ac926[_0x1f40('0x13')][_0x1f40('0x14')]===0x1f4){logger['error'](_0x1f40('0xe'),_0x13bb5e,_0x4ac926[_0x1f40('0x13')][_0x1f40('0x15')]);return _0xf5bfa4(_0x4ac926['error']['message']);}logger[_0x1f40('0x13')]('ZendeskConfiguration,\x20%s,\x20%s',_0x13bb5e,_0x4ac926['error']['message']);return _0x3e292c(_0x4ac926['error'][_0x1f40('0x15')]);}else{logger[_0x1f40('0x16')](_0x1f40('0xe'),_0x13bb5e,'request\x20sent');_0x3e292c(_0x4ac926[_0x1f40('0x17')][_0x1f40('0x15')]);}})['catch'](function(_0x28ffb1){logger[_0x1f40('0x13')]('ZendeskConfiguration,\x20%s,\x20%s',_0x13bb5e,_0x28ffb1);_0xf5bfa4(_0x28ffb1);});});}
\ No newline at end of file
+var _0x0f09=['then','info','ZendeskConfiguration,\x20%s,\x20%s','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x285c48,_0x5153de){var _0x54c9a4=function(_0x503465){while(--_0x503465){_0x285c48['push'](_0x285c48['shift']());}};_0x54c9a4(++_0x5153de);}(_0x0f09,0x11d));var _0x90f0=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x0f09[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x90f0('0x0'));var util=require(_0x90f0('0x1'));var moment=require(_0x90f0('0x2'));var BPromise=require(_0x90f0('0x3'));var rs=require(_0x90f0('0x4'));var fs=require('fs');var Redis=require(_0x90f0('0x5'));var db=require(_0x90f0('0x6'))['db'];var utils=require(_0x90f0('0x7'));var logger=require(_0x90f0('0x8'))(_0x90f0('0x9'));var config=require(_0x90f0('0xa'));var jayson=require(_0x90f0('0xb'));var client=jayson[_0x90f0('0xc')][_0x90f0('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x6b745,_0x1b437d,_0x186125){return new BPromise(function(_0x193a57,_0x5514f7){return client[_0x90f0('0xe')](_0x6b745,_0x186125)[_0x90f0('0xf')](function(_0x208b80){logger[_0x90f0('0x10')](_0x90f0('0x11'),_0x1b437d,'request\x20sent');logger['debug'](_0x90f0('0x12'),_0x1b437d,'request\x20sent',JSON[_0x90f0('0x13')](_0x208b80));if(_0x208b80['error']){if(_0x208b80[_0x90f0('0x14')]['code']===0x1f4){logger[_0x90f0('0x14')](_0x90f0('0x11'),_0x1b437d,_0x208b80[_0x90f0('0x14')][_0x90f0('0x15')]);return _0x5514f7(_0x208b80[_0x90f0('0x14')][_0x90f0('0x15')]);}logger['error'](_0x90f0('0x11'),_0x1b437d,_0x208b80[_0x90f0('0x14')]['message']);return _0x193a57(_0x208b80[_0x90f0('0x14')]['message']);}else{logger[_0x90f0('0x10')](_0x90f0('0x11'),_0x1b437d,_0x90f0('0x16'));_0x193a57(_0x208b80[_0x90f0('0x17')]['message']);}})[_0x90f0('0x18')](function(_0x2c4bf2){logger[_0x90f0('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1b437d,_0x2c4bf2);_0x5514f7(_0x2c4bf2);});});}
\ No newline at end of file
index 2ba9dd3..3a598f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddbf=['update','delete','destroy','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x27fedb,_0x31c693){var _0x58ab78=function(_0x532732){while(--_0x532732){_0x27fedb['push'](_0x27fedb['shift']());}};_0x58ab78(++_0x31c693);}(_0xddbf,0x1f1));var _0xfddb=function(_0x40cf0e,_0x41b848){_0x40cf0e=_0x40cf0e-0x0;var _0x1691bd=_0xddbf[_0x40cf0e];return _0x1691bd;};'use strict';var multer=require(_0xfddb('0x0'));var util=require(_0xfddb('0x1'));var path=require(_0xfddb('0x2'));var timeout=require(_0xfddb('0x3'));var express=require(_0xfddb('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfddb('0x5'));var config=require(_0xfddb('0x6'));var controller=require(_0xfddb('0x7'));router[_0xfddb('0x8')]('/',auth[_0xfddb('0x9')](),controller[_0xfddb('0xa')]);router['get'](_0xfddb('0xb'),auth['isAuthenticated'](),controller[_0xfddb('0xc')]);router[_0xfddb('0xd')]('/',auth[_0xfddb('0x9')](),controller[_0xfddb('0xe')]);router[_0xfddb('0xf')](_0xfddb('0xb'),auth[_0xfddb('0x9')](),controller[_0xfddb('0x10')]);router[_0xfddb('0x11')](_0xfddb('0xb'),auth[_0xfddb('0x9')](),controller[_0xfddb('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x318e=['destroy','exports','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','get','isAuthenticated','/:id','show','post','create','update','delete'];(function(_0x83514c,_0x58fc0b){var _0x737e60=function(_0x2e0fd1){while(--_0x2e0fd1){_0x83514c['push'](_0x83514c['shift']());}};_0x737e60(++_0x58fc0b);}(_0x318e,0x182));var _0xe318=function(_0x7fc11c,_0x4ce78b){_0x7fc11c=_0x7fc11c-0x0;var _0xc7f911=_0x318e[_0x7fc11c];return _0xc7f911;};'use strict';var multer=require('multer');var util=require(_0xe318('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe318('0x1'));var router=express['Router']();var fs_extra=require(_0xe318('0x2'));var auth=require(_0xe318('0x3'));var interaction=require(_0xe318('0x4'));var config=require('../../config/environment');var controller=require(_0xe318('0x5'));router[_0xe318('0x6')]('/',auth[_0xe318('0x7')](),controller['index']);router[_0xe318('0x6')](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0x9')]);router[_0xe318('0xa')]('/',auth[_0xe318('0x7')](),controller[_0xe318('0xb')]);router['put'](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0xc')]);router[_0xe318('0xd')](_0xe318('0x8'),auth[_0xe318('0x7')](),controller[_0xe318('0xe')]);module[_0xe318('0xf')]=router;
\ No newline at end of file
index 49cfbe9..9e8c66e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4cf=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string'];(function(_0x79f24,_0x596adf){var _0x21037a=function(_0x3f5649){while(--_0x3f5649){_0x79f24['push'](_0x79f24['shift']());}};_0x21037a(++_0x596adf);}(_0xf4cf,0x177));var _0xff4c=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xf4cf[_0x565c49];return _0x20ca34;};'use strict';var Sequelize=require(_0xff4c('0x0'));module['exports']={'type':{'type':Sequelize[_0xff4c('0x1')](_0xff4c('0x2'),'variable',_0xff4c('0x3'),_0xff4c('0x4'),_0xff4c('0x5')),'defaultValue':_0xff4c('0x2')},'content':{'type':Sequelize[_0xff4c('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xff4c('0x1')](_0xff4c('0x2'),_0xff4c('0x7'),_0xff4c('0x3'))},'keyContent':{'type':Sequelize[_0xff4c('0x6')]},'idField':{'type':Sequelize[_0xff4c('0x6')]},'nameField':{'type':Sequelize[_0xff4c('0x6')]},'customField':{'type':Sequelize[_0xff4c('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4d65=['variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4d65,0xc2));var _0x54d6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x4d65[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require('sequelize');module[_0x54d6('0x0')]={'type':{'type':Sequelize[_0x54d6('0x1')](_0x54d6('0x2'),'variable',_0x54d6('0x3'),_0x54d6('0x4'),'picklist'),'defaultValue':_0x54d6('0x2')},'content':{'type':Sequelize[_0x54d6('0x5')]},'key':{'type':Sequelize[_0x54d6('0x5')]},'keyType':{'type':Sequelize[_0x54d6('0x1')](_0x54d6('0x2'),_0x54d6('0x6'),_0x54d6('0x3'))},'keyContent':{'type':Sequelize[_0x54d6('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x54d6('0x5')]},'customField':{'type':Sequelize[_0x54d6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ae9004d..e6baf55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4a7=['fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','catch','params','ZendeskField','options','find','create','body','eml-format','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xa4a7,0xf9));var _0x7a4a=function(_0x5995ea,_0xf9db45){_0x5995ea=_0x5995ea-0x0;var _0xf0550b=_0xa4a7[_0x5995ea];return _0xf0550b;};'use strict';var emlformat=require(_0x7a4a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7a4a('0x1'));var rp=require(_0x7a4a('0x2'));var moment=require('moment');var BPromise=require(_0x7a4a('0x3'));var Mustache=require('mustache');var util=require(_0x7a4a('0x4'));var path=require(_0x7a4a('0x5'));var sox=require(_0x7a4a('0x6'));var csv=require(_0x7a4a('0x7'));var ejs=require(_0x7a4a('0x8'));var fs=require('fs');var fs_extra=require(_0x7a4a('0x9'));var _=require(_0x7a4a('0xa'));var squel=require(_0x7a4a('0xb'));var crypto=require(_0x7a4a('0xc'));var jsforce=require(_0x7a4a('0xd'));var deskjs=require(_0x7a4a('0xe'));var toCsv=require(_0x7a4a('0x7'));var querystring=require(_0x7a4a('0xf'));var Papa=require('papaparse');var Redis=require(_0x7a4a('0x10'));var authService=require(_0x7a4a('0x11'));var qs=require(_0x7a4a('0x12'));var as=require(_0x7a4a('0x13'));var hardwareService=require(_0x7a4a('0x14'));var logger=require(_0x7a4a('0x15'))(_0x7a4a('0x16'));var utils=require('../../config/utils');var config=require(_0x7a4a('0x17'));var licenseUtil=require(_0x7a4a('0x18'));var db=require(_0x7a4a('0x19'))['db'];function respondWithStatusCode(_0x4407b7,_0x35f8e4){_0x35f8e4=_0x35f8e4||0xcc;return function(_0xec1cde){if(_0xec1cde){return _0x4407b7[_0x7a4a('0x1a')](_0x35f8e4);}return _0x4407b7[_0x7a4a('0x1b')](_0x35f8e4)[_0x7a4a('0x1c')]();};}function respondWithResult(_0x2a8197,_0x5c530e){_0x5c530e=_0x5c530e||0xc8;return function(_0x5b7a2e){if(_0x5b7a2e){return _0x2a8197['status'](_0x5c530e)[_0x7a4a('0x1d')](_0x5b7a2e);}};}function respondWithFilteredResult(_0x314468,_0x2e83db){return function(_0x3d26e9){if(_0x3d26e9){var _0x1a9069=typeof _0x2e83db['offset']===_0x7a4a('0x1e')&&typeof _0x2e83db[_0x7a4a('0x1f')]==='undefined';var _0x5e528c=_0x3d26e9[_0x7a4a('0x20')];var _0x2ccba7=_0x1a9069?0x0:_0x2e83db['offset'];var _0x2840ad=_0x1a9069?_0x3d26e9['count']:_0x2e83db[_0x7a4a('0x21')]+_0x2e83db['limit'];var _0x12efe5;if(_0x2840ad>=_0x5e528c){_0x2840ad=_0x5e528c;_0x12efe5=0xc8;}else{_0x12efe5=0xce;}_0x314468['status'](_0x12efe5);return _0x314468[_0x7a4a('0x22')]('Content-Range',_0x2ccba7+'-'+_0x2840ad+'/'+_0x5e528c)[_0x7a4a('0x1d')](_0x3d26e9);}return null;};}function patchUpdates(_0x1c6c79){return function(_0x104a5e){try{jsonpatch[_0x7a4a('0x23')](_0x104a5e,_0x1c6c79,!![]);}catch(_0x3bf1b8){return BPromise[_0x7a4a('0x24')](_0x3bf1b8);}return _0x104a5e[_0x7a4a('0x25')]();};}function saveUpdates(_0x60e526,_0x2bcb60){return function(_0x145d47){if(_0x145d47){return _0x145d47[_0x7a4a('0x26')](_0x60e526)[_0x7a4a('0x27')](function(_0x401649){return _0x401649;});}return null;};}function removeEntity(_0x4c4f31,_0x41c538){return function(_0x36ec6e){if(_0x36ec6e){return _0x36ec6e[_0x7a4a('0x28')]()['then'](function(){_0x4c4f31[_0x7a4a('0x1b')](0xcc)[_0x7a4a('0x1c')]();});}};}function handleEntityNotFound(_0x3a1473,_0x15f714){return function(_0x233a2b){if(!_0x233a2b){_0x3a1473['sendStatus'](0x194);}return _0x233a2b;};}function handleError(_0x74c6a9,_0x19350a){_0x19350a=_0x19350a||0x1f4;return function(_0x445c97){logger[_0x7a4a('0x29')](_0x445c97['stack']);if(_0x445c97[_0x7a4a('0x2a')]){delete _0x445c97[_0x7a4a('0x2a')];}_0x74c6a9['status'](_0x19350a)[_0x7a4a('0x2b')](_0x445c97);};}exports[_0x7a4a('0x2c')]=function(_0x40280f,_0x2879cf){var _0x1a0642={},_0x503a03={},_0x287eeb={'count':0x0,'rows':[]};var _0x14f75d=_[_0x7a4a('0x2d')](db['ZendeskField'][_0x7a4a('0x2e')],function(_0x5888ca){return{'name':_0x5888ca[_0x7a4a('0x2f')],'type':_0x5888ca[_0x7a4a('0x30')]['key']};});_0x503a03[_0x7a4a('0x31')]=_[_0x7a4a('0x2d')](_0x14f75d,_0x7a4a('0x2a'));_0x503a03[_0x7a4a('0x32')]=_[_0x7a4a('0x33')](_0x40280f[_0x7a4a('0x32')]);_0x503a03[_0x7a4a('0x34')]=_[_0x7a4a('0x35')](_0x503a03['model'],_0x503a03[_0x7a4a('0x32')]);_0x1a0642['attributes']=_[_0x7a4a('0x35')](_0x503a03[_0x7a4a('0x31')],qs['fields'](_0x40280f[_0x7a4a('0x32')][_0x7a4a('0x36')]));_0x1a0642[_0x7a4a('0x37')]=_0x1a0642[_0x7a4a('0x37')][_0x7a4a('0x38')]?_0x1a0642[_0x7a4a('0x37')]:_0x503a03[_0x7a4a('0x31')];if(!_0x40280f[_0x7a4a('0x32')]['hasOwnProperty'](_0x7a4a('0x39'))){_0x1a0642[_0x7a4a('0x1f')]=qs[_0x7a4a('0x1f')](_0x40280f[_0x7a4a('0x32')]['limit']);_0x1a0642[_0x7a4a('0x21')]=qs[_0x7a4a('0x21')](_0x40280f[_0x7a4a('0x32')][_0x7a4a('0x21')]);}_0x1a0642[_0x7a4a('0x3a')]=qs[_0x7a4a('0x3b')](_0x40280f['query'][_0x7a4a('0x3b')]);_0x1a0642[_0x7a4a('0x3c')]=qs['filters'](_[_0x7a4a('0x3d')](_0x40280f['query'],_0x503a03[_0x7a4a('0x34')]),_0x14f75d);if(_0x40280f[_0x7a4a('0x32')][_0x7a4a('0x3e')]){_0x1a0642[_0x7a4a('0x3c')]=_[_0x7a4a('0x3f')](_0x1a0642[_0x7a4a('0x3c')],{'$or':_[_0x7a4a('0x2d')](_0x14f75d,function(_0x59e298){if(_0x59e298['type']!=='VIRTUAL'){var _0xcd15ac={};_0xcd15ac[_0x59e298[_0x7a4a('0x2a')]]={'$like':'%'+_0x40280f[_0x7a4a('0x32')][_0x7a4a('0x3e')]+'%'};return _0xcd15ac;}})});}_0x1a0642=_['merge']({},_0x1a0642,_0x40280f['options']);var _0x4ecef1={'where':_0x1a0642['where']};return db['ZendeskField']['count'](_0x4ecef1)[_0x7a4a('0x27')](function(_0x1d03f6){_0x287eeb['count']=_0x1d03f6;if(_0x40280f[_0x7a4a('0x32')][_0x7a4a('0x40')]){_0x1a0642[_0x7a4a('0x41')]=[{'all':!![]}];}return db['ZendeskField'][_0x7a4a('0x42')](_0x1a0642);})[_0x7a4a('0x27')](function(_0x5e7b76){_0x287eeb['rows']=_0x5e7b76;return _0x287eeb;})['then'](respondWithFilteredResult(_0x2879cf,_0x1a0642))[_0x7a4a('0x43')](handleError(_0x2879cf,null));};exports['show']=function(_0x8ae300,_0x372065){var _0x5bd7d5={'raw':!![],'where':{'id':_0x8ae300[_0x7a4a('0x44')]['id']}},_0x4ee76d={};_0x4ee76d[_0x7a4a('0x31')]=_[_0x7a4a('0x33')](db[_0x7a4a('0x45')][_0x7a4a('0x2e')]);_0x4ee76d['query']=_[_0x7a4a('0x33')](_0x8ae300[_0x7a4a('0x32')]);_0x4ee76d[_0x7a4a('0x34')]=_[_0x7a4a('0x35')](_0x4ee76d[_0x7a4a('0x31')],_0x4ee76d[_0x7a4a('0x32')]);_0x5bd7d5[_0x7a4a('0x37')]=_[_0x7a4a('0x35')](_0x4ee76d[_0x7a4a('0x31')],qs['fields'](_0x8ae300[_0x7a4a('0x32')]['fields']));_0x5bd7d5[_0x7a4a('0x37')]=_0x5bd7d5['attributes']['length']?_0x5bd7d5[_0x7a4a('0x37')]:_0x4ee76d[_0x7a4a('0x31')];if(_0x8ae300[_0x7a4a('0x32')][_0x7a4a('0x40')]){_0x5bd7d5[_0x7a4a('0x41')]=[{'all':!![]}];}_0x5bd7d5=_['merge']({},_0x5bd7d5,_0x8ae300[_0x7a4a('0x46')]);return db[_0x7a4a('0x45')][_0x7a4a('0x47')](_0x5bd7d5)[_0x7a4a('0x27')](handleEntityNotFound(_0x372065,null))['then'](respondWithResult(_0x372065,null))[_0x7a4a('0x43')](handleError(_0x372065,null));};exports[_0x7a4a('0x48')]=function(_0x13f6c5,_0x1a61b6){return db[_0x7a4a('0x45')][_0x7a4a('0x48')](_0x13f6c5[_0x7a4a('0x49')],{})['then'](respondWithResult(_0x1a61b6,0xc9))[_0x7a4a('0x43')](handleError(_0x1a61b6,null));};exports['update']=function(_0x3add9d,_0x4b0447){if(_0x3add9d[_0x7a4a('0x49')]['id']){delete _0x3add9d[_0x7a4a('0x49')]['id'];}return db[_0x7a4a('0x45')][_0x7a4a('0x47')]({'where':{'id':_0x3add9d[_0x7a4a('0x44')]['id']}})[_0x7a4a('0x27')](handleEntityNotFound(_0x4b0447,null))[_0x7a4a('0x27')](saveUpdates(_0x3add9d[_0x7a4a('0x49')],null))[_0x7a4a('0x27')](respondWithResult(_0x4b0447,null))[_0x7a4a('0x43')](handleError(_0x4b0447,null));};exports[_0x7a4a('0x28')]=function(_0x3a2ad8,_0x3db6dd){return db['ZendeskField']['find']({'where':{'id':_0x3a2ad8[_0x7a4a('0x44')]['id']}})[_0x7a4a('0x27')](handleEntityNotFound(_0x3db6dd,null))[_0x7a4a('0x27')](removeEntity(_0x3db6dd,null))[_0x7a4a('0x43')](handleError(_0x3db6dd,null));};
\ No newline at end of file
+var _0xfa68=['../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','ZendeskField','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs'];(function(_0x333c6e,_0x4b000c){var _0x1444ef=function(_0x4ab019){while(--_0x4ab019){_0x333c6e['push'](_0x333c6e['shift']());}};_0x1444ef(++_0x4b000c);}(_0xfa68,0x86));var _0x8fa6=function(_0x267cbd,_0x536558){_0x267cbd=_0x267cbd-0x0;var _0x3ef360=_0xfa68[_0x267cbd];return _0x3ef360;};'use strict';var emlformat=require(_0x8fa6('0x0'));var rimraf=require(_0x8fa6('0x1'));var zipdir=require(_0x8fa6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8fa6('0x3'));var moment=require(_0x8fa6('0x4'));var BPromise=require(_0x8fa6('0x5'));var Mustache=require('mustache');var util=require(_0x8fa6('0x6'));var path=require(_0x8fa6('0x7'));var sox=require(_0x8fa6('0x8'));var csv=require(_0x8fa6('0x9'));var ejs=require(_0x8fa6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fa6('0xb'));var squel=require(_0x8fa6('0xc'));var crypto=require('crypto');var jsforce=require(_0x8fa6('0xd'));var deskjs=require(_0x8fa6('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8fa6('0xf'));var Redis=require(_0x8fa6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8fa6('0x11'));var as=require(_0x8fa6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8fa6('0x13'));var utils=require(_0x8fa6('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8fa6('0x15'));var db=require(_0x8fa6('0x16'))['db'];function respondWithStatusCode(_0x59b7f9,_0x1ed90e){_0x1ed90e=_0x1ed90e||0xcc;return function(_0x1c621f){if(_0x1c621f){return _0x59b7f9['sendStatus'](_0x1ed90e);}return _0x59b7f9[_0x8fa6('0x17')](_0x1ed90e)[_0x8fa6('0x18')]();};}function respondWithResult(_0x22d83f,_0x86f607){_0x86f607=_0x86f607||0xc8;return function(_0xd2cce0){if(_0xd2cce0){return _0x22d83f['status'](_0x86f607)['json'](_0xd2cce0);}};}function respondWithFilteredResult(_0x3426a7,_0x5eff0e){return function(_0x1425a7){if(_0x1425a7){var _0x22bb50=typeof _0x5eff0e[_0x8fa6('0x19')]==='undefined'&&typeof _0x5eff0e[_0x8fa6('0x1a')]===_0x8fa6('0x1b');var _0x300f68=_0x1425a7['count'];var _0x329f97=_0x22bb50?0x0:_0x5eff0e[_0x8fa6('0x19')];var _0x8de44e=_0x22bb50?_0x1425a7[_0x8fa6('0x1c')]:_0x5eff0e['offset']+_0x5eff0e[_0x8fa6('0x1a')];var _0x516d42;if(_0x8de44e>=_0x300f68){_0x8de44e=_0x300f68;_0x516d42=0xc8;}else{_0x516d42=0xce;}_0x3426a7[_0x8fa6('0x17')](_0x516d42);return _0x3426a7[_0x8fa6('0x1d')](_0x8fa6('0x1e'),_0x329f97+'-'+_0x8de44e+'/'+_0x300f68)[_0x8fa6('0x1f')](_0x1425a7);}return null;};}function patchUpdates(_0x50e633){return function(_0x3072f7){try{jsonpatch[_0x8fa6('0x20')](_0x3072f7,_0x50e633,!![]);}catch(_0x5b6acb){return BPromise[_0x8fa6('0x21')](_0x5b6acb);}return _0x3072f7[_0x8fa6('0x22')]();};}function saveUpdates(_0x29d361,_0x50f8d2){return function(_0x149ace){if(_0x149ace){return _0x149ace[_0x8fa6('0x23')](_0x29d361)[_0x8fa6('0x24')](function(_0x49225a){return _0x49225a;});}return null;};}function removeEntity(_0x59f0b6,_0x588001){return function(_0x283805){if(_0x283805){return _0x283805[_0x8fa6('0x25')]()['then'](function(){_0x59f0b6['status'](0xcc)[_0x8fa6('0x18')]();});}};}function handleEntityNotFound(_0x3f86d8,_0x5775b7){return function(_0x57db95){if(!_0x57db95){_0x3f86d8[_0x8fa6('0x26')](0x194);}return _0x57db95;};}function handleError(_0x1914bc,_0x424546){_0x424546=_0x424546||0x1f4;return function(_0x4efd81){logger[_0x8fa6('0x27')](_0x4efd81[_0x8fa6('0x28')]);if(_0x4efd81['name']){delete _0x4efd81[_0x8fa6('0x29')];}_0x1914bc[_0x8fa6('0x17')](_0x424546)['send'](_0x4efd81);};}exports[_0x8fa6('0x2a')]=function(_0x39cf7c,_0x4cdbdb){var _0x5e1a88={},_0x23fdc9={},_0xbe8f01={'count':0x0,'rows':[]};var _0x5ee7f8=_['map'](db[_0x8fa6('0x2b')][_0x8fa6('0x2c')],function(_0x3f822b){return{'name':_0x3f822b[_0x8fa6('0x2d')],'type':_0x3f822b[_0x8fa6('0x2e')][_0x8fa6('0x2f')]};});_0x23fdc9[_0x8fa6('0x30')]=_[_0x8fa6('0x31')](_0x5ee7f8,'name');_0x23fdc9['query']=_[_0x8fa6('0x32')](_0x39cf7c['query']);_0x23fdc9[_0x8fa6('0x33')]=_[_0x8fa6('0x34')](_0x23fdc9[_0x8fa6('0x30')],_0x23fdc9['query']);_0x5e1a88[_0x8fa6('0x35')]=_[_0x8fa6('0x34')](_0x23fdc9['model'],qs[_0x8fa6('0x36')](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x36')]));_0x5e1a88[_0x8fa6('0x35')]=_0x5e1a88[_0x8fa6('0x35')][_0x8fa6('0x38')]?_0x5e1a88[_0x8fa6('0x35')]:_0x23fdc9[_0x8fa6('0x30')];if(!_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x39')](_0x8fa6('0x3a'))){_0x5e1a88[_0x8fa6('0x1a')]=qs['limit'](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x1a')]);_0x5e1a88[_0x8fa6('0x19')]=qs[_0x8fa6('0x19')](_0x39cf7c[_0x8fa6('0x37')][_0x8fa6('0x19')]);}_0x5e1a88[_0x8fa6('0x3b')]=qs['sort'](_0x39cf7c['query'][_0x8fa6('0x3c')]);_0x5e1a88['where']=qs['filters'](_['pick'](_0x39cf7c['query'],_0x23fdc9['filters']),_0x5ee7f8);if(_0x39cf7c['query'][_0x8fa6('0x3d')]){_0x5e1a88[_0x8fa6('0x3e')]=_[_0x8fa6('0x3f')](_0x5e1a88['where'],{'$or':_['map'](_0x5ee7f8,function(_0x423b23){if(_0x423b23[_0x8fa6('0x2e')]!==_0x8fa6('0x40')){var _0x181b19={};_0x181b19[_0x423b23['name']]={'$like':'%'+_0x39cf7c[_0x8fa6('0x37')]['filter']+'%'};return _0x181b19;}})});}_0x5e1a88=_['merge']({},_0x5e1a88,_0x39cf7c[_0x8fa6('0x41')]);var _0x3c9985={'where':_0x5e1a88[_0x8fa6('0x3e')]};return db[_0x8fa6('0x2b')][_0x8fa6('0x1c')](_0x3c9985)[_0x8fa6('0x24')](function(_0x3d41f5){_0xbe8f01[_0x8fa6('0x1c')]=_0x3d41f5;if(_0x39cf7c[_0x8fa6('0x37')]['includeAll']){_0x5e1a88[_0x8fa6('0x42')]=[{'all':!![]}];}return db['ZendeskField'][_0x8fa6('0x43')](_0x5e1a88);})['then'](function(_0x31df03){_0xbe8f01[_0x8fa6('0x44')]=_0x31df03;return _0xbe8f01;})[_0x8fa6('0x24')](respondWithFilteredResult(_0x4cdbdb,_0x5e1a88))['catch'](handleError(_0x4cdbdb,null));};exports[_0x8fa6('0x45')]=function(_0x5a1d1e,_0x254095){var _0x5c8219={'raw':!![],'where':{'id':_0x5a1d1e[_0x8fa6('0x46')]['id']}},_0x1df682={};_0x1df682['model']=_[_0x8fa6('0x32')](db[_0x8fa6('0x2b')][_0x8fa6('0x2c')]);_0x1df682['query']=_[_0x8fa6('0x32')](_0x5a1d1e[_0x8fa6('0x37')]);_0x1df682[_0x8fa6('0x33')]=_[_0x8fa6('0x34')](_0x1df682[_0x8fa6('0x30')],_0x1df682[_0x8fa6('0x37')]);_0x5c8219[_0x8fa6('0x35')]=_[_0x8fa6('0x34')](_0x1df682['model'],qs[_0x8fa6('0x36')](_0x5a1d1e[_0x8fa6('0x37')][_0x8fa6('0x36')]));_0x5c8219[_0x8fa6('0x35')]=_0x5c8219['attributes']['length']?_0x5c8219[_0x8fa6('0x35')]:_0x1df682[_0x8fa6('0x30')];if(_0x5a1d1e[_0x8fa6('0x37')][_0x8fa6('0x47')]){_0x5c8219[_0x8fa6('0x42')]=[{'all':!![]}];}_0x5c8219=_[_0x8fa6('0x3f')]({},_0x5c8219,_0x5a1d1e[_0x8fa6('0x41')]);return db[_0x8fa6('0x2b')][_0x8fa6('0x48')](_0x5c8219)[_0x8fa6('0x24')](handleEntityNotFound(_0x254095,null))[_0x8fa6('0x24')](respondWithResult(_0x254095,null))[_0x8fa6('0x49')](handleError(_0x254095,null));};exports[_0x8fa6('0x4a')]=function(_0x45b277,_0x185ac8){return db[_0x8fa6('0x2b')][_0x8fa6('0x4a')](_0x45b277['body'],{})[_0x8fa6('0x24')](respondWithResult(_0x185ac8,0xc9))[_0x8fa6('0x49')](handleError(_0x185ac8,null));};exports['update']=function(_0x414168,_0x2386c7){if(_0x414168[_0x8fa6('0x4b')]['id']){delete _0x414168['body']['id'];}return db['ZendeskField'][_0x8fa6('0x48')]({'where':{'id':_0x414168['params']['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x2386c7,null))[_0x8fa6('0x24')](saveUpdates(_0x414168[_0x8fa6('0x4b')],null))[_0x8fa6('0x24')](respondWithResult(_0x2386c7,null))[_0x8fa6('0x49')](handleError(_0x2386c7,null));};exports['destroy']=function(_0x1289ca,_0x1f90a7){return db['ZendeskField'][_0x8fa6('0x48')]({'where':{'id':_0x1289ca[_0x8fa6('0x46')]['id']}})[_0x8fa6('0x24')](handleEntityNotFound(_0x1f90a7,null))[_0x8fa6('0x24')](removeEntity(_0x1f90a7,null))[_0x8fa6('0x49')](handleError(_0x1f90a7,null));};
\ No newline at end of file
index bb82b09..50b3562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe303=['define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports'];(function(_0x10291b,_0x518773){var _0x1d5fbe=function(_0x24df58){while(--_0x24df58){_0x10291b['push'](_0x10291b['shift']());}};_0x1d5fbe(++_0x518773);}(_0xe303,0x116));var _0x3e30=function(_0x21df68,_0x31f696){_0x21df68=_0x21df68-0x0;var _0x28da46=_0xe303[_0x21df68];return _0x28da46;};'use strict';var _=require('lodash');var util=require(_0x3e30('0x0'));var logger=require(_0x3e30('0x1'))(_0x3e30('0x2'));var moment=require(_0x3e30('0x3'));var BPromise=require('bluebird');var rp=require(_0x3e30('0x4'));var fs=require('fs');var path=require(_0x3e30('0x5'));var rimraf=require(_0x3e30('0x6'));var config=require(_0x3e30('0x7'));var attributes=require(_0x3e30('0x8'));module[_0x3e30('0x9')]=function(_0x2092c7,_0x2f275d){return _0x2092c7[_0x3e30('0xa')](_0x3e30('0xb'),attributes,{'tableName':_0x3e30('0xc'),'paranoid':![],'indexes':[{'name':_0x3e30('0xd'),'fields':[_0x3e30('0xe'),_0x3e30('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa332=['lodash','api','bluebird','request-promise','path','../../config/environment','./intZendeskField.attributes','exports','define','int_zendesk_fields','zendesk_unique_index','idField','FieldId'];(function(_0x282999,_0x4df660){var _0x30681f=function(_0x50e926){while(--_0x50e926){_0x282999['push'](_0x282999['shift']());}};_0x30681f(++_0x4df660);}(_0xa332,0x1ee));var _0x2a33=function(_0x36c329,_0x30809e){_0x36c329=_0x36c329-0x0;var _0x2a6f62=_0xa332[_0x36c329];return _0x2a6f62;};'use strict';var _=require(_0x2a33('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2a33('0x1'));var moment=require('moment');var BPromise=require(_0x2a33('0x2'));var rp=require(_0x2a33('0x3'));var fs=require('fs');var path=require(_0x2a33('0x4'));var rimraf=require('rimraf');var config=require(_0x2a33('0x5'));var attributes=require(_0x2a33('0x6'));module[_0x2a33('0x7')]=function(_0x243576,_0x3a20c3){return _0x243576[_0x2a33('0x8')]('ZendeskField',attributes,{'tableName':_0x2a33('0x9'),'paranoid':![],'indexes':[{'name':_0x2a33('0xa'),'fields':[_0x2a33('0xb'),_0x2a33('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6a5dd37..c331d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5b=['message','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x21c6b8,_0x16d6f6){var _0x39d474=function(_0x27dbf5){while(--_0x27dbf5){_0x21c6b8['push'](_0x21c6b8['shift']());}};_0x39d474(++_0x16d6f6);}(_0x9c5b,0xc9));var _0xb9c5=function(_0x233a49,_0x462882){_0x233a49=_0x233a49-0x0;var _0x10893f=_0x9c5b[_0x233a49];return _0x10893f;};'use strict';var _=require(_0xb9c5('0x0'));var util=require('util');var moment=require(_0xb9c5('0x1'));var BPromise=require(_0xb9c5('0x2'));var rs=require(_0xb9c5('0x3'));var fs=require('fs');var Redis=require(_0xb9c5('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb9c5('0x5'))(_0xb9c5('0x6'));var config=require(_0xb9c5('0x7'));var jayson=require(_0xb9c5('0x8'));var client=jayson['client'][_0xb9c5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36100f,_0x5ab599,_0x2dfdef){return new BPromise(function(_0x7bff74,_0x2d3b74){return client[_0xb9c5('0xa')](_0x36100f,_0x2dfdef)['then'](function(_0x15baeb){logger[_0xb9c5('0xb')](_0xb9c5('0xc'),_0x5ab599,_0xb9c5('0xd'));logger[_0xb9c5('0xe')](_0xb9c5('0xf'),_0x5ab599,_0xb9c5('0xd'),JSON[_0xb9c5('0x10')](_0x15baeb));if(_0x15baeb[_0xb9c5('0x11')]){if(_0x15baeb['error'][_0xb9c5('0x12')]===0x1f4){logger[_0xb9c5('0x11')](_0xb9c5('0xc'),_0x5ab599,_0x15baeb[_0xb9c5('0x11')]['message']);return _0x2d3b74(_0x15baeb[_0xb9c5('0x11')][_0xb9c5('0x13')]);}logger[_0xb9c5('0x11')]('ZendeskField,\x20%s,\x20%s',_0x5ab599,_0x15baeb[_0xb9c5('0x11')][_0xb9c5('0x13')]);return _0x7bff74(_0x15baeb[_0xb9c5('0x11')][_0xb9c5('0x13')]);}else{logger[_0xb9c5('0xb')](_0xb9c5('0xc'),_0x5ab599,_0xb9c5('0xd'));_0x7bff74(_0x15baeb['result'][_0xb9c5('0x13')]);}})['catch'](function(_0x4a4437){logger['error']('ZendeskField,\x20%s,\x20%s',_0x5ab599,_0x4a4437);_0x2d3b74(_0x4a4437);});});}
\ No newline at end of file
+var _0x7027=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0x7027,0xd9));var _0x7702=function(_0x461765,_0x12b099){_0x461765=_0x461765-0x0;var _0x32cdc8=_0x7027[_0x461765];return _0x32cdc8;};'use strict';var _=require(_0x7702('0x0'));var util=require(_0x7702('0x1'));var moment=require(_0x7702('0x2'));var BPromise=require(_0x7702('0x3'));var rs=require(_0x7702('0x4'));var fs=require('fs');var Redis=require(_0x7702('0x5'));var db=require(_0x7702('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7702('0x7'))('rpc');var config=require(_0x7702('0x8'));var jayson=require(_0x7702('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x238191,_0x32e951,_0x35d2da){return new BPromise(function(_0x39d26e,_0xdac9ea){return client[_0x7702('0xa')](_0x238191,_0x35d2da)[_0x7702('0xb')](function(_0x2eebb5){logger[_0x7702('0xc')](_0x7702('0xd'),_0x32e951,_0x7702('0xe'));logger[_0x7702('0xf')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x32e951,_0x7702('0xe'),JSON[_0x7702('0x10')](_0x2eebb5));if(_0x2eebb5[_0x7702('0x11')]){if(_0x2eebb5['error']['code']===0x1f4){logger['error'](_0x7702('0xd'),_0x32e951,_0x2eebb5[_0x7702('0x11')][_0x7702('0x12')]);return _0xdac9ea(_0x2eebb5['error'][_0x7702('0x12')]);}logger[_0x7702('0x11')]('ZendeskField,\x20%s,\x20%s',_0x32e951,_0x2eebb5[_0x7702('0x11')][_0x7702('0x12')]);return _0x39d26e(_0x2eebb5[_0x7702('0x11')]['message']);}else{logger[_0x7702('0xc')](_0x7702('0xd'),_0x32e951,_0x7702('0xe'));_0x39d26e(_0x2eebb5['result'][_0x7702('0x12')]);}})[_0x7702('0x13')](function(_0x32ff1b){logger[_0x7702('0x11')]('ZendeskField,\x20%s,\x20%s',_0x32e951,_0x32ff1b);_0xdac9ea(_0x32ff1b);});});}
\ No newline at end of file
index 672b379..2ae57c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb025=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','post','create','addConfiguration','put','update','delete','util','path','connect-timeout','express','Router'];(function(_0x3de4f8,_0x336c7d){var _0x3d81fc=function(_0x53b9f9){while(--_0x53b9f9){_0x3de4f8['push'](_0x3de4f8['shift']());}};_0x3d81fc(++_0x336c7d);}(_0xb025,0x177));var _0x5b02=function(_0x15bd3d,_0x41ef58){_0x15bd3d=_0x15bd3d-0x0;var _0x106793=_0xb025[_0x15bd3d];return _0x106793;};'use strict';var multer=require('multer');var util=require(_0x5b02('0x0'));var path=require(_0x5b02('0x1'));var timeout=require(_0x5b02('0x2'));var express=require(_0x5b02('0x3'));var router=express[_0x5b02('0x4')]();var fs_extra=require(_0x5b02('0x5'));var auth=require(_0x5b02('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5b02('0x7'));var controller=require('./intZohoAccount.controller');router[_0x5b02('0x8')]('/',auth[_0x5b02('0x9')](),controller[_0x5b02('0xa')]);router[_0x5b02('0x8')](_0x5b02('0xb'),auth[_0x5b02('0x9')](),controller['show']);router[_0x5b02('0x8')](_0x5b02('0xc'),auth[_0x5b02('0x9')](),controller[_0x5b02('0xd')]);router['get']('/:id/fields',auth[_0x5b02('0x9')](),controller['getFields']);router[_0x5b02('0xe')]('/',auth[_0x5b02('0x9')](),controller[_0x5b02('0xf')]);router[_0x5b02('0xe')](_0x5b02('0xc'),auth[_0x5b02('0x9')](),controller[_0x5b02('0x10')]);router[_0x5b02('0x11')](_0x5b02('0xb'),auth[_0x5b02('0x9')](),controller[_0x5b02('0x12')]);router[_0x5b02('0x13')](_0x5b02('0xb'),auth[_0x5b02('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x622d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','show','/:id/configurations','isAuthenticated','getFields','post','create','update','/:id','exports','util','path','connect-timeout','express'];(function(_0x28c47a,_0x2c7508){var _0x423385=function(_0x420182){while(--_0x420182){_0x28c47a['push'](_0x28c47a['shift']());}};_0x423385(++_0x2c7508);}(_0x622d,0x18b));var _0xd622=function(_0x259735,_0x4cf3ae){_0x259735=_0x259735-0x0;var _0x3848df=_0x622d[_0x259735];return _0x3848df;};'use strict';var multer=require('multer');var util=require(_0xd622('0x0'));var path=require(_0xd622('0x1'));var timeout=require(_0xd622('0x2'));var express=require(_0xd622('0x3'));var router=express[_0xd622('0x4')]();var fs_extra=require(_0xd622('0x5'));var auth=require(_0xd622('0x6'));var interaction=require(_0xd622('0x7'));var config=require(_0xd622('0x8'));var controller=require(_0xd622('0x9'));router[_0xd622('0xa')]('/',auth['isAuthenticated'](),controller[_0xd622('0xb')]);router[_0xd622('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xd622('0xc')]);router[_0xd622('0xa')](_0xd622('0xd'),auth[_0xd622('0xe')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xd622('0xe')](),controller[_0xd622('0xf')]);router[_0xd622('0x10')]('/',auth[_0xd622('0xe')](),controller[_0xd622('0x11')]);router[_0xd622('0x10')](_0xd622('0xd'),auth[_0xd622('0xe')](),controller['addConfiguration']);router['put']('/:id',auth[_0xd622('0xe')](),controller[_0xd622('0x12')]);router['delete'](_0xd622('0x13'),auth[_0xd622('0xe')](),controller['destroy']);module[_0xd622('0x14')]=router;
\ No newline at end of file
index 2891b9f..4a77477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['STRING','sequelize','exports'];(function(_0x4d4e36,_0x52b049){var _0x5daca5=function(_0x586c78){while(--_0x586c78){_0x4d4e36['push'](_0x4d4e36['shift']());}};_0x5daca5(++_0x52b049);}(_0x00bb,0x1d8));var _0xb00b=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x00bb[_0x42245d];return _0x4b211a;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'name':{'type':Sequelize[_0xb00b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xb00b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xb00b('0x2')]},'clientSecret':{'type':Sequelize[_0xb00b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xb00b('0x2')]},'refreshToken':{'type':Sequelize[_0xb00b('0x2')]}};
\ No newline at end of file
+var _0x5636=['sequelize','exports','STRING'];(function(_0x4c9553,_0x18b6cd){var _0x169e6f=function(_0x784a22){while(--_0x784a22){_0x4c9553['push'](_0x4c9553['shift']());}};_0x169e6f(++_0x18b6cd);}(_0x5636,0x102));var _0x6563=function(_0x447113,_0x2f6cd7){_0x447113=_0x447113-0x0;var _0x1bc256=_0x5636[_0x447113];return _0x1bc256;};'use strict';var Sequelize=require(_0x6563('0x0'));module[_0x6563('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x6563('0x2')]},'clientId':{'type':Sequelize[_0x6563('0x2')]},'clientSecret':{'type':Sequelize[_0x6563('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0x6563('0x2')]},'refreshToken':{'type':Sequelize[_0x6563('0x2')]}};
\ No newline at end of file
index 29a3af6..adda399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a69=['map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','include','catch','show','params','create','body','find','getConfigurations','findOne','ZohoConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','zone','code','zoho.eu','slice','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','remove','includes','api_name','system_mandatory','push','display_label','custom_field','pick_list_values','statusCode','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index'];(function(_0x550d7a,_0x466d3){var _0x4f621f=function(_0x43245c){while(--_0x43245c){_0x550d7a['push'](_0x550d7a['shift']());}};_0x4f621f(++_0x466d3);}(_0x4a69,0x1d4));var _0x94a6=function(_0x230639,_0x20f428){_0x230639=_0x230639-0x0;var _0x5248d7=_0x4a69[_0x230639];return _0x5248d7;};'use strict';var emlformat=require(_0x94a6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x94a6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x94a6('0x2'));var moment=require(_0x94a6('0x3'));var BPromise=require(_0x94a6('0x4'));var Mustache=require(_0x94a6('0x5'));var util=require(_0x94a6('0x6'));var path=require(_0x94a6('0x7'));var sox=require(_0x94a6('0x8'));var csv=require(_0x94a6('0x9'));var ejs=require(_0x94a6('0xa'));var fs=require('fs');var fs_extra=require(_0x94a6('0xb'));var _=require(_0x94a6('0xc'));var squel=require(_0x94a6('0xd'));var crypto=require(_0x94a6('0xe'));var jsforce=require(_0x94a6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x94a6('0x9'));var querystring=require(_0x94a6('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x94a6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94a6('0x12'));var logger=require(_0x94a6('0x13'))(_0x94a6('0x14'));var utils=require('../../config/utils');var config=require(_0x94a6('0x15'));var licenseUtil=require(_0x94a6('0x16'));var db=require(_0x94a6('0x17'))['db'];var integrations=require(_0x94a6('0x18'));function respondWithStatusCode(_0x3a8d7,_0x22e60b){_0x22e60b=_0x22e60b||0xcc;return function(_0x25b78b){if(_0x25b78b){return _0x3a8d7[_0x94a6('0x19')](_0x22e60b);}return _0x3a8d7[_0x94a6('0x1a')](_0x22e60b)[_0x94a6('0x1b')]();};}function respondWithResult(_0x208b43,_0x515a75){_0x515a75=_0x515a75||0xc8;return function(_0x4f12f4){if(_0x4f12f4){return _0x208b43[_0x94a6('0x1a')](_0x515a75)[_0x94a6('0x1c')](_0x4f12f4);}};}function respondWithFilteredResult(_0x4683ad,_0x41b859){return function(_0x10ae3a){if(_0x10ae3a){var _0x18629b=typeof _0x41b859[_0x94a6('0x1d')]===_0x94a6('0x1e')&&typeof _0x41b859['limit']==='undefined';var _0x2a0748=_0x10ae3a[_0x94a6('0x1f')];var _0x22ed14=_0x18629b?0x0:_0x41b859['offset'];var _0x4bb647=_0x18629b?_0x10ae3a['count']:_0x41b859['offset']+_0x41b859['limit'];var _0x5c84a7;if(_0x4bb647>=_0x2a0748){_0x4bb647=_0x2a0748;_0x5c84a7=0xc8;}else{_0x5c84a7=0xce;}_0x4683ad['status'](_0x5c84a7);return _0x4683ad[_0x94a6('0x20')](_0x94a6('0x21'),_0x22ed14+'-'+_0x4bb647+'/'+_0x2a0748)[_0x94a6('0x1c')](_0x10ae3a);}return null;};}function patchUpdates(_0x8579b1){return function(_0x30a5b4){try{jsonpatch[_0x94a6('0x22')](_0x30a5b4,_0x8579b1,!![]);}catch(_0x432b8e){return BPromise[_0x94a6('0x23')](_0x432b8e);}return _0x30a5b4[_0x94a6('0x24')]();};}function saveUpdates(_0x1535bd,_0x6f361){return function(_0x4e3537){if(_0x4e3537){return _0x4e3537[_0x94a6('0x25')](_0x1535bd)[_0x94a6('0x26')](function(_0xd3cf44){return _0xd3cf44;});}return null;};}function removeEntity(_0x3e5d63,_0x4975ff){return function(_0x133ea1){if(_0x133ea1){return _0x133ea1[_0x94a6('0x27')]()[_0x94a6('0x26')](function(){_0x3e5d63[_0x94a6('0x1a')](0xcc)[_0x94a6('0x1b')]();});}};}function handleEntityNotFound(_0x1eb2a8,_0x5a745c){return function(_0x3bd383){if(!_0x3bd383){_0x1eb2a8[_0x94a6('0x19')](0x194);}return _0x3bd383;};}function handleError(_0x1c4672,_0x2ec706){_0x2ec706=_0x2ec706||0x1f4;return function(_0x529931){logger[_0x94a6('0x28')](_0x529931[_0x94a6('0x29')]);if(_0x529931[_0x94a6('0x2a')]){delete _0x529931['name'];}_0x1c4672[_0x94a6('0x1a')](_0x2ec706)['send'](_0x529931);};}exports[_0x94a6('0x2b')]=function(_0x1cae8c,_0x537a6e){var _0x30f676={},_0x543405={},_0x449a36={'count':0x0,'rows':[]};var _0x3ed31a=_[_0x94a6('0x2c')](db['ZohoAccount'][_0x94a6('0x2d')],function(_0x203084){return{'name':_0x203084[_0x94a6('0x2e')],'type':_0x203084[_0x94a6('0x2f')][_0x94a6('0x30')]};});_0x543405[_0x94a6('0x31')]=_[_0x94a6('0x2c')](_0x3ed31a,_0x94a6('0x2a'));_0x543405['query']=_[_0x94a6('0x32')](_0x1cae8c[_0x94a6('0x33')]);_0x543405[_0x94a6('0x34')]=_['intersection'](_0x543405[_0x94a6('0x31')],_0x543405[_0x94a6('0x33')]);_0x30f676[_0x94a6('0x35')]=_[_0x94a6('0x36')](_0x543405[_0x94a6('0x31')],qs[_0x94a6('0x37')](_0x1cae8c['query'][_0x94a6('0x37')]));_0x30f676['attributes']=_0x30f676[_0x94a6('0x35')][_0x94a6('0x38')]?_0x30f676[_0x94a6('0x35')]:_0x543405[_0x94a6('0x31')];if(!_0x1cae8c['query'][_0x94a6('0x39')](_0x94a6('0x3a'))){_0x30f676[_0x94a6('0x3b')]=qs['limit'](_0x1cae8c[_0x94a6('0x33')][_0x94a6('0x3b')]);_0x30f676['offset']=qs[_0x94a6('0x1d')](_0x1cae8c['query'][_0x94a6('0x1d')]);}_0x30f676[_0x94a6('0x3c')]=qs[_0x94a6('0x3d')](_0x1cae8c[_0x94a6('0x33')][_0x94a6('0x3d')]);_0x30f676[_0x94a6('0x3e')]=qs[_0x94a6('0x34')](_[_0x94a6('0x3f')](_0x1cae8c[_0x94a6('0x33')],_0x543405[_0x94a6('0x34')]),_0x3ed31a);if(_0x1cae8c[_0x94a6('0x33')][_0x94a6('0x40')]){_0x30f676[_0x94a6('0x3e')]=_[_0x94a6('0x41')](_0x30f676[_0x94a6('0x3e')],{'$or':_[_0x94a6('0x2c')](_0x3ed31a,function(_0x789e09){if(_0x789e09[_0x94a6('0x2f')]!==_0x94a6('0x42')){var _0x239dd4={};_0x239dd4[_0x789e09['name']]={'$like':'%'+_0x1cae8c['query']['filter']+'%'};return _0x239dd4;}})});}_0x30f676=_[_0x94a6('0x41')]({},_0x30f676,_0x1cae8c[_0x94a6('0x43')]);var _0x2ab70d={'where':_0x30f676[_0x94a6('0x3e')]};return db[_0x94a6('0x44')][_0x94a6('0x1f')](_0x2ab70d)[_0x94a6('0x26')](function(_0x36970e){_0x449a36[_0x94a6('0x1f')]=_0x36970e;if(_0x1cae8c[_0x94a6('0x33')][_0x94a6('0x45')]){_0x30f676[_0x94a6('0x46')]=[{'all':!![]}];}return db[_0x94a6('0x44')]['findAll'](_0x30f676);})[_0x94a6('0x26')](function(_0x5ba0a3){_0x449a36['rows']=_0x5ba0a3;return _0x449a36;})['then'](respondWithFilteredResult(_0x537a6e,_0x30f676))[_0x94a6('0x47')](handleError(_0x537a6e,null));};exports[_0x94a6('0x48')]=function(_0x1bc723,_0x431d44){var _0xd6e907={'raw':![],'where':{'id':_0x1bc723[_0x94a6('0x49')]['id']}},_0x187638={};_0x187638['model']=_[_0x94a6('0x32')](db[_0x94a6('0x44')][_0x94a6('0x2d')]);_0x187638['query']=_['keys'](_0x1bc723[_0x94a6('0x33')]);_0x187638[_0x94a6('0x34')]=_[_0x94a6('0x36')](_0x187638[_0x94a6('0x31')],_0x187638[_0x94a6('0x33')]);_0xd6e907[_0x94a6('0x35')]=_[_0x94a6('0x36')](_0x187638[_0x94a6('0x31')],qs[_0x94a6('0x37')](_0x1bc723[_0x94a6('0x33')][_0x94a6('0x37')]));_0xd6e907[_0x94a6('0x35')]=_0xd6e907[_0x94a6('0x35')][_0x94a6('0x38')]?_0xd6e907[_0x94a6('0x35')]:_0x187638[_0x94a6('0x31')];if(_0x1bc723[_0x94a6('0x33')][_0x94a6('0x45')]){_0xd6e907[_0x94a6('0x46')]=[{'all':!![]}];}_0xd6e907=_[_0x94a6('0x41')]({},_0xd6e907,_0x1bc723['options']);return db[_0x94a6('0x44')]['find'](_0xd6e907)['then'](handleEntityNotFound(_0x431d44,null))[_0x94a6('0x26')](respondWithResult(_0x431d44,null))[_0x94a6('0x47')](handleError(_0x431d44,null));};exports[_0x94a6('0x4a')]=function(_0x595d33,_0x4bce65){return db['ZohoAccount']['create'](_0x595d33['body'],{})[_0x94a6('0x26')](respondWithResult(_0x4bce65,0xc9))[_0x94a6('0x47')](handleError(_0x4bce65,null));};exports[_0x94a6('0x25')]=function(_0x47f1ea,_0x21c997){if(_0x47f1ea['body']['id']){delete _0x47f1ea[_0x94a6('0x4b')]['id'];}return db[_0x94a6('0x44')][_0x94a6('0x4c')]({'where':{'id':_0x47f1ea[_0x94a6('0x49')]['id']}})[_0x94a6('0x26')](handleEntityNotFound(_0x21c997,null))[_0x94a6('0x26')](saveUpdates(_0x47f1ea[_0x94a6('0x4b')],null))[_0x94a6('0x26')](respondWithResult(_0x21c997,null))[_0x94a6('0x47')](handleError(_0x21c997,null));};exports['destroy']=function(_0x426d4e,_0x217825){return db[_0x94a6('0x44')][_0x94a6('0x4c')]({'where':{'id':_0x426d4e[_0x94a6('0x49')]['id']}})[_0x94a6('0x26')](handleEntityNotFound(_0x217825,null))[_0x94a6('0x26')](removeEntity(_0x217825,null))[_0x94a6('0x47')](handleError(_0x217825,null));};exports[_0x94a6('0x4d')]=function(_0x11b4a3,_0x59cb71,_0x466d61){var _0xa8b919={};var _0x2a31fa={};var _0x3dbbce;var _0x277bf8;return db['ZohoAccount'][_0x94a6('0x4e')]({'where':{'id':_0x11b4a3['params']['id']}})[_0x94a6('0x26')](handleEntityNotFound(_0x59cb71,null))['then'](function(_0x3860a3){if(_0x3860a3){_0x3dbbce=_0x3860a3;_0x2a31fa[_0x94a6('0x31')]=_[_0x94a6('0x32')](db[_0x94a6('0x4f')][_0x94a6('0x2d')]);_0x2a31fa[_0x94a6('0x33')]=_[_0x94a6('0x32')](_0x11b4a3['query']);_0x2a31fa[_0x94a6('0x34')]=_[_0x94a6('0x36')](_0x2a31fa[_0x94a6('0x31')],_0x2a31fa[_0x94a6('0x33')]);_0xa8b919[_0x94a6('0x35')]=_[_0x94a6('0x36')](_0x2a31fa[_0x94a6('0x31')],qs[_0x94a6('0x37')](_0x11b4a3[_0x94a6('0x33')][_0x94a6('0x37')]));_0xa8b919['attributes']=_0xa8b919[_0x94a6('0x35')]['length']?_0xa8b919[_0x94a6('0x35')]:_0x2a31fa[_0x94a6('0x31')];_0xa8b919[_0x94a6('0x3c')]=qs[_0x94a6('0x3d')](_0x11b4a3[_0x94a6('0x33')][_0x94a6('0x3d')]);_0xa8b919['where']=qs[_0x94a6('0x34')](_[_0x94a6('0x3f')](_0x11b4a3[_0x94a6('0x33')],_0x2a31fa[_0x94a6('0x34')]));if(_0x11b4a3[_0x94a6('0x33')][_0x94a6('0x40')]){_0xa8b919['where']=_[_0x94a6('0x41')](_0xa8b919[_0x94a6('0x3e')],{'$or':_[_0x94a6('0x2c')](_0xa8b919[_0x94a6('0x35')],function(_0x113d60){var _0x54edfb={};_0x54edfb[_0x113d60]={'$like':'%'+_0x11b4a3['query']['filter']+'%'};return _0x54edfb;})});}_0xa8b919=_[_0x94a6('0x41')]({},_0xa8b919,_0x11b4a3['options']);return _0x3dbbce['getConfigurations'](_0xa8b919);}})[_0x94a6('0x26')](function(_0x146d96){if(_0x146d96){_0x277bf8=_0x146d96[_0x94a6('0x38')];if(!_0x11b4a3[_0x94a6('0x33')][_0x94a6('0x39')](_0x94a6('0x3a'))){_0xa8b919[_0x94a6('0x3b')]=qs[_0x94a6('0x3b')](_0x11b4a3[_0x94a6('0x33')]['limit']);_0xa8b919[_0x94a6('0x1d')]=qs[_0x94a6('0x1d')](_0x11b4a3[_0x94a6('0x33')]['offset']);}return _0x3dbbce[_0x94a6('0x4d')](_0xa8b919);}})[_0x94a6('0x26')](function(_0x1576b0){if(_0x1576b0){return _0x1576b0?{'count':_0x277bf8,'rows':_0x1576b0}:null;}})[_0x94a6('0x26')](respondWithResult(_0x59cb71,null))[_0x94a6('0x47')](handleError(_0x59cb71,null));};exports['addConfiguration']=function(_0x1b8022,_0xb6b387,_0x3b2a25){if(_0x1b8022[_0x94a6('0x4b')]['id']){delete _0x1b8022[_0x94a6('0x4b')]['id'];}return db[_0x94a6('0x44')][_0x94a6('0x4e')]({'where':{'id':_0x1b8022['params']['id']}})['then'](handleEntityNotFound(_0xb6b387,null))[_0x94a6('0x26')](function(_0x51752c){if(_0x51752c){_0x1b8022['body'][_0x94a6('0x50')]=_0x51752c['id'];_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x51')]=integrations[_0x94a6('0x52')](_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x53')],_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x2f')]);_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x54')]=integrations[_0x94a6('0x55')](_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x53')],_0x1b8022[_0x94a6('0x4b')][_0x94a6('0x2f')]);return db['ZohoConfiguration'][_0x94a6('0x4a')](_0x1b8022['body'],{'include':[{'model':db[_0x94a6('0x56')],'as':'Subjects'},{'model':db[_0x94a6('0x56')],'as':_0x94a6('0x54')}]});}return null;})['then'](respondWithResult(_0xb6b387,null))[_0x94a6('0x47')](handleError(_0xb6b387,null));};function getAccessToken(_0x1399bb){return new Promise(function(_0x1b8946,_0x29058d){var _0x209540;switch(_0x1399bb['zone']){case'US':_0x209540='https://accounts.zoho.com';break;case'AU':_0x209540=_0x94a6('0x57');break;case'EU':_0x209540='https://accounts.zoho.eu';break;case'IN':_0x209540=_0x94a6('0x58');break;case'CN':_0x209540='https://accounts.zoho.com.cn';break;default:_0x209540=_0x94a6('0x59');break;}var _0x1b5411={'method':_0x94a6('0x5a'),'uri':_0x209540+'/oauth/v2/token','qs':{'refresh_token':_0x1399bb[_0x94a6('0x5b')],'client_id':_0x1399bb[_0x94a6('0x5c')],'client_secret':_0x1399bb[_0x94a6('0x5d')],'grant_type':_0x94a6('0x5e')},'json':!![]};return rp(_0x1b5411)[_0x94a6('0x26')](function(_0x1b4f58){if(_0x1b4f58['access_token']){_0x1b8946(_0x1b4f58[_0x94a6('0x5f')]);}else{_0x29058d(_0x94a6('0x60'));}})[_0x94a6('0x47')](function(_0x377fa5){_0x29058d(_0x377fa5);});});}exports[_0x94a6('0x61')]=function(_0x800ea5,_0x3b6773,_0x424cee){var _0x396065,_0x4ea3c3,_0x191b34,_0x3577b2,_0x3e95bc;return db[_0x94a6('0x44')]['findOne']({'where':{'id':_0x800ea5[_0x94a6('0x49')]['id']},'attributes':['id','host',_0x94a6('0x62'),'clientId',_0x94a6('0x5d'),'serverUrl',_0x94a6('0x63'),_0x94a6('0x5b')]})[_0x94a6('0x26')](handleEntityNotFound(_0x3b6773,null))[_0x94a6('0x26')](function(_0x7b57a1){_0x3e95bc=_0x7b57a1;_0x396065=_0x3e95bc['host'];_0x4ea3c3=_0x396065===_0x94a6('0x64')?'eu':'com';_0x191b34=_0x3e95bc['serverUrl'];var _0xc33e00=_0x191b34[_0x94a6('0x65')](-0x1);if(_0xc33e00==='/'||_0xc33e00==='\x5c'||_0xc33e00===':'){_0x191b34=_0x191b34[_0x94a6('0x66')](0x0,_0x191b34[_0x94a6('0x67')](_0xc33e00));}if(!_0x3e95bc[_0x94a6('0x5b')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x3e95bc);})['then'](function(_0xc02f05){if(_0xc02f05){return rp({'method':_0x94a6('0x68'),'uri':util[_0x94a6('0x69')](_0x94a6('0x6a'),_0x4ea3c3),'qs':{'module':_0x94a6('0x6b')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xc02f05},'json':!![]});}})[_0x94a6('0x26')](function(_0x2448ce){if(_0x2448ce){if(_0x2448ce[_0x94a6('0x6c')]&&_0x2448ce[_0x94a6('0x6c')][_0x94a6('0x28')]){throw new Error(_0x2448ce['response']['error'][_0x94a6('0x6d')]);}var _0x34098e=[];var _0x5c5d81=[];var _0xb93d0a=[_0x94a6('0x6e'),_0x94a6('0x6f'),_0x94a6('0x70'),_0x94a6('0x71'),_0x94a6('0x72'),_0x94a6('0x73'),_0x94a6('0x74'),'Call_Type'];_0x5c5d81=_[_0x94a6('0x75')](_0x2448ce['fields'],function(_0x3c5e5f){return _0xb93d0a[_0x94a6('0x76')](_0x3c5e5f[_0x94a6('0x77')]);});for(var _0x2eb42d=0x0;_0x2eb42d<_0x5c5d81['length'];_0x2eb42d++){if(_0x5c5d81[_0x2eb42d][_0x94a6('0x78')]===![]){_0x34098e[_0x94a6('0x79')]({'id':_0x5c5d81[_0x2eb42d]['id'],'name':_0x5c5d81[_0x2eb42d][_0x94a6('0x7a')],'custom':_0x5c5d81[_0x2eb42d][_0x94a6('0x7b')],'options':_0x5c5d81[_0x2eb42d]['data_type']==='picklist'&&_0x5c5d81[_0x2eb42d][_0x94a6('0x7c')][_0x94a6('0x38')]>-0x1?_[_0x94a6('0x2c')](_0x5c5d81[_0x2eb42d][_0x94a6('0x7c')],function(_0x47cd5a){return{'name':_0x47cd5a,'value':_0x47cd5a};}):[]});}}return{'count':_0x34098e[_0x94a6('0x38')],'rows':_0x34098e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3b6773,null))[_0x94a6('0x47')](function(_0x55ab28){var _0x2df7b2=_0x800ea5[_0x94a6('0x33')]['test']?0x1f4:_0x55ab28[_0x94a6('0x7d')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x2df7b2,JSON[_0x94a6('0x7e')](_0x55ab28));delete _0x55ab28[_0x94a6('0x2a')];if(_0x2df7b2===0x191){_0x2df7b2=0x190;}_0x3b6773[_0x94a6('0x1a')](_0x2df7b2)['send'](_0x800ea5[_0x94a6('0x33')]['test']?{'message':_0x94a6('0x7f'),'statusCode':_0x55ab28[_0x94a6('0x7d')]}:_0x55ab28);});};
\ No newline at end of file
+var _0xd4dc=['message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','system_mandatory','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','reject','destroy','then','error','name','send','index','map','rawAttributes','fieldName','key','query','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','ZohoAccount','includeAll','include','rows','catch','show','keys','create','body','find','params','findOne','ZohoConfiguration','pick','getConfigurations','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','getDescriptions','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl','code','refreshToken','zoho.eu','com','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','response'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd4dc,0x198));var _0xcd4d=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xd4dc[_0x45d3f0];return _0x314b79;};'use strict';var emlformat=require(_0xcd4d('0x0'));var rimraf=require(_0xcd4d('0x1'));var zipdir=require(_0xcd4d('0x2'));var jsonpatch=require(_0xcd4d('0x3'));var rp=require(_0xcd4d('0x4'));var moment=require(_0xcd4d('0x5'));var BPromise=require(_0xcd4d('0x6'));var Mustache=require(_0xcd4d('0x7'));var util=require(_0xcd4d('0x8'));var path=require(_0xcd4d('0x9'));var sox=require('sox');var csv=require(_0xcd4d('0xa'));var ejs=require(_0xcd4d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd4d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcd4d('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcd4d('0xe'));var Papa=require('papaparse');var Redis=require(_0xcd4d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xcd4d('0x10'));var as=require(_0xcd4d('0x11'));var hardwareService=require(_0xcd4d('0x12'));var logger=require(_0xcd4d('0x13'))(_0xcd4d('0x14'));var utils=require(_0xcd4d('0x15'));var config=require(_0xcd4d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xcd4d('0x17'));function respondWithStatusCode(_0x52074b,_0x502282){_0x502282=_0x502282||0xcc;return function(_0x2b347d){if(_0x2b347d){return _0x52074b[_0xcd4d('0x18')](_0x502282);}return _0x52074b[_0xcd4d('0x19')](_0x502282)[_0xcd4d('0x1a')]();};}function respondWithResult(_0x55c5f0,_0x594506){_0x594506=_0x594506||0xc8;return function(_0x1e431f){if(_0x1e431f){return _0x55c5f0[_0xcd4d('0x19')](_0x594506)['json'](_0x1e431f);}};}function respondWithFilteredResult(_0x234228,_0x244c42){return function(_0x1fb1ec){if(_0x1fb1ec){var _0x5e5e56=typeof _0x244c42[_0xcd4d('0x1b')]==='undefined'&&typeof _0x244c42[_0xcd4d('0x1c')]===_0xcd4d('0x1d');var _0x5a8664=_0x1fb1ec[_0xcd4d('0x1e')];var _0x6e86af=_0x5e5e56?0x0:_0x244c42[_0xcd4d('0x1b')];var _0x3856c3=_0x5e5e56?_0x1fb1ec[_0xcd4d('0x1e')]:_0x244c42[_0xcd4d('0x1b')]+_0x244c42['limit'];var _0x1887d8;if(_0x3856c3>=_0x5a8664){_0x3856c3=_0x5a8664;_0x1887d8=0xc8;}else{_0x1887d8=0xce;}_0x234228[_0xcd4d('0x19')](_0x1887d8);return _0x234228['set'](_0xcd4d('0x1f'),_0x6e86af+'-'+_0x3856c3+'/'+_0x5a8664)[_0xcd4d('0x20')](_0x1fb1ec);}return null;};}function patchUpdates(_0x258621){return function(_0x428033){try{jsonpatch['apply'](_0x428033,_0x258621,!![]);}catch(_0xc4b869){return BPromise[_0xcd4d('0x21')](_0xc4b869);}return _0x428033['save']();};}function saveUpdates(_0x45c139,_0x4600e4){return function(_0x32e393){if(_0x32e393){return _0x32e393['update'](_0x45c139)['then'](function(_0x16a8d3){return _0x16a8d3;});}return null;};}function removeEntity(_0x23b109,_0x2055b9){return function(_0x5c8730){if(_0x5c8730){return _0x5c8730[_0xcd4d('0x22')]()[_0xcd4d('0x23')](function(){_0x23b109[_0xcd4d('0x19')](0xcc)[_0xcd4d('0x1a')]();});}};}function handleEntityNotFound(_0x4f28a6,_0x180097){return function(_0x28e8aa){if(!_0x28e8aa){_0x4f28a6[_0xcd4d('0x18')](0x194);}return _0x28e8aa;};}function handleError(_0x4062d4,_0x52433f){_0x52433f=_0x52433f||0x1f4;return function(_0x37cd4e){logger[_0xcd4d('0x24')](_0x37cd4e['stack']);if(_0x37cd4e['name']){delete _0x37cd4e[_0xcd4d('0x25')];}_0x4062d4['status'](_0x52433f)[_0xcd4d('0x26')](_0x37cd4e);};}exports[_0xcd4d('0x27')]=function(_0x41586e,_0x5b9ce3){var _0x5f1098={},_0x23aac7={},_0x2b4e3c={'count':0x0,'rows':[]};var _0x288a54=_[_0xcd4d('0x28')](db['ZohoAccount'][_0xcd4d('0x29')],function(_0x50a564){return{'name':_0x50a564[_0xcd4d('0x2a')],'type':_0x50a564['type'][_0xcd4d('0x2b')]};});_0x23aac7['model']=_[_0xcd4d('0x28')](_0x288a54,_0xcd4d('0x25'));_0x23aac7[_0xcd4d('0x2c')]=_['keys'](_0x41586e[_0xcd4d('0x2c')]);_0x23aac7['filters']=_[_0xcd4d('0x2d')](_0x23aac7['model'],_0x23aac7[_0xcd4d('0x2c')]);_0x5f1098[_0xcd4d('0x2e')]=_[_0xcd4d('0x2d')](_0x23aac7[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x41586e['query']['fields']));_0x5f1098[_0xcd4d('0x2e')]=_0x5f1098[_0xcd4d('0x2e')][_0xcd4d('0x31')]?_0x5f1098[_0xcd4d('0x2e')]:_0x23aac7[_0xcd4d('0x2f')];if(!_0x41586e['query']['hasOwnProperty'](_0xcd4d('0x32'))){_0x5f1098['limit']=qs[_0xcd4d('0x1c')](_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x1c')]);_0x5f1098[_0xcd4d('0x1b')]=qs[_0xcd4d('0x1b')](_0x41586e['query'][_0xcd4d('0x1b')]);}_0x5f1098[_0xcd4d('0x33')]=qs[_0xcd4d('0x34')](_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x34')]);_0x5f1098[_0xcd4d('0x35')]=qs[_0xcd4d('0x36')](_['pick'](_0x41586e[_0xcd4d('0x2c')],_0x23aac7[_0xcd4d('0x36')]),_0x288a54);if(_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x37')]){_0x5f1098['where']=_[_0xcd4d('0x38')](_0x5f1098[_0xcd4d('0x35')],{'$or':_['map'](_0x288a54,function(_0x52269c){if(_0x52269c[_0xcd4d('0x39')]!==_0xcd4d('0x3a')){var _0x49c2b8={};_0x49c2b8[_0x52269c[_0xcd4d('0x25')]]={'$like':'%'+_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x37')]+'%'};return _0x49c2b8;}})});}_0x5f1098=_[_0xcd4d('0x38')]({},_0x5f1098,_0x41586e[_0xcd4d('0x3b')]);var _0x30685d={'where':_0x5f1098[_0xcd4d('0x35')]};return db[_0xcd4d('0x3c')][_0xcd4d('0x1e')](_0x30685d)[_0xcd4d('0x23')](function(_0x5af591){_0x2b4e3c['count']=_0x5af591;if(_0x41586e[_0xcd4d('0x2c')][_0xcd4d('0x3d')]){_0x5f1098[_0xcd4d('0x3e')]=[{'all':!![]}];}return db[_0xcd4d('0x3c')]['findAll'](_0x5f1098);})[_0xcd4d('0x23')](function(_0x50383a){_0x2b4e3c[_0xcd4d('0x3f')]=_0x50383a;return _0x2b4e3c;})['then'](respondWithFilteredResult(_0x5b9ce3,_0x5f1098))[_0xcd4d('0x40')](handleError(_0x5b9ce3,null));};exports[_0xcd4d('0x41')]=function(_0x52a5dd,_0xd5e2df){var _0x4db0ed={'raw':![],'where':{'id':_0x52a5dd['params']['id']}},_0x402a83={};_0x402a83[_0xcd4d('0x2f')]=_[_0xcd4d('0x42')](db[_0xcd4d('0x3c')][_0xcd4d('0x29')]);_0x402a83['query']=_[_0xcd4d('0x42')](_0x52a5dd[_0xcd4d('0x2c')]);_0x402a83[_0xcd4d('0x36')]=_['intersection'](_0x402a83[_0xcd4d('0x2f')],_0x402a83[_0xcd4d('0x2c')]);_0x4db0ed[_0xcd4d('0x2e')]=_[_0xcd4d('0x2d')](_0x402a83[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x52a5dd[_0xcd4d('0x2c')][_0xcd4d('0x30')]));_0x4db0ed[_0xcd4d('0x2e')]=_0x4db0ed['attributes'][_0xcd4d('0x31')]?_0x4db0ed[_0xcd4d('0x2e')]:_0x402a83[_0xcd4d('0x2f')];if(_0x52a5dd[_0xcd4d('0x2c')][_0xcd4d('0x3d')]){_0x4db0ed[_0xcd4d('0x3e')]=[{'all':!![]}];}_0x4db0ed=_[_0xcd4d('0x38')]({},_0x4db0ed,_0x52a5dd[_0xcd4d('0x3b')]);return db[_0xcd4d('0x3c')]['find'](_0x4db0ed)[_0xcd4d('0x23')](handleEntityNotFound(_0xd5e2df,null))[_0xcd4d('0x23')](respondWithResult(_0xd5e2df,null))[_0xcd4d('0x40')](handleError(_0xd5e2df,null));};exports[_0xcd4d('0x43')]=function(_0x1da9cf,_0xcc384a){return db[_0xcd4d('0x3c')][_0xcd4d('0x43')](_0x1da9cf[_0xcd4d('0x44')],{})['then'](respondWithResult(_0xcc384a,0xc9))[_0xcd4d('0x40')](handleError(_0xcc384a,null));};exports['update']=function(_0x2dac4b,_0xc41629){if(_0x2dac4b[_0xcd4d('0x44')]['id']){delete _0x2dac4b[_0xcd4d('0x44')]['id'];}return db[_0xcd4d('0x3c')][_0xcd4d('0x45')]({'where':{'id':_0x2dac4b[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0xc41629,null))[_0xcd4d('0x23')](saveUpdates(_0x2dac4b['body'],null))[_0xcd4d('0x23')](respondWithResult(_0xc41629,null))[_0xcd4d('0x40')](handleError(_0xc41629,null));};exports[_0xcd4d('0x22')]=function(_0x35987d,_0x19b0da){return db[_0xcd4d('0x3c')][_0xcd4d('0x45')]({'where':{'id':_0x35987d[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x19b0da,null))['then'](removeEntity(_0x19b0da,null))[_0xcd4d('0x40')](handleError(_0x19b0da,null));};exports['getConfigurations']=function(_0x270261,_0x4e5459,_0x1266b5){var _0x1e4b56={};var _0xd683f0={};var _0x2bdd2b;var _0x53fbbd;return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x270261[_0xcd4d('0x46')]['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x4e5459,null))[_0xcd4d('0x23')](function(_0x15f520){if(_0x15f520){_0x2bdd2b=_0x15f520;_0xd683f0['model']=_[_0xcd4d('0x42')](db[_0xcd4d('0x48')][_0xcd4d('0x29')]);_0xd683f0[_0xcd4d('0x2c')]=_[_0xcd4d('0x42')](_0x270261[_0xcd4d('0x2c')]);_0xd683f0[_0xcd4d('0x36')]=_['intersection'](_0xd683f0[_0xcd4d('0x2f')],_0xd683f0[_0xcd4d('0x2c')]);_0x1e4b56['attributes']=_[_0xcd4d('0x2d')](_0xd683f0[_0xcd4d('0x2f')],qs[_0xcd4d('0x30')](_0x270261['query'][_0xcd4d('0x30')]));_0x1e4b56[_0xcd4d('0x2e')]=_0x1e4b56['attributes']['length']?_0x1e4b56[_0xcd4d('0x2e')]:_0xd683f0[_0xcd4d('0x2f')];_0x1e4b56[_0xcd4d('0x33')]=qs['sort'](_0x270261[_0xcd4d('0x2c')][_0xcd4d('0x34')]);_0x1e4b56[_0xcd4d('0x35')]=qs[_0xcd4d('0x36')](_[_0xcd4d('0x49')](_0x270261['query'],_0xd683f0[_0xcd4d('0x36')]));if(_0x270261[_0xcd4d('0x2c')]['filter']){_0x1e4b56[_0xcd4d('0x35')]=_[_0xcd4d('0x38')](_0x1e4b56['where'],{'$or':_[_0xcd4d('0x28')](_0x1e4b56['attributes'],function(_0x190645){var _0x4642cd={};_0x4642cd[_0x190645]={'$like':'%'+_0x270261['query'][_0xcd4d('0x37')]+'%'};return _0x4642cd;})});}_0x1e4b56=_['merge']({},_0x1e4b56,_0x270261[_0xcd4d('0x3b')]);return _0x2bdd2b[_0xcd4d('0x4a')](_0x1e4b56);}})[_0xcd4d('0x23')](function(_0x31a994){if(_0x31a994){_0x53fbbd=_0x31a994['length'];if(!_0x270261[_0xcd4d('0x2c')][_0xcd4d('0x4b')]('nolimit')){_0x1e4b56[_0xcd4d('0x1c')]=qs['limit'](_0x270261['query'][_0xcd4d('0x1c')]);_0x1e4b56['offset']=qs[_0xcd4d('0x1b')](_0x270261['query']['offset']);}return _0x2bdd2b[_0xcd4d('0x4a')](_0x1e4b56);}})[_0xcd4d('0x23')](function(_0x1f58f6){if(_0x1f58f6){return _0x1f58f6?{'count':_0x53fbbd,'rows':_0x1f58f6}:null;}})[_0xcd4d('0x23')](respondWithResult(_0x4e5459,null))[_0xcd4d('0x40')](handleError(_0x4e5459,null));};exports[_0xcd4d('0x4c')]=function(_0x15e1af,_0x13cbed,_0x2b7a5c){if(_0x15e1af[_0xcd4d('0x44')]['id']){delete _0x15e1af[_0xcd4d('0x44')]['id'];}return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x15e1af['params']['id']}})[_0xcd4d('0x23')](handleEntityNotFound(_0x13cbed,null))[_0xcd4d('0x23')](function(_0x46539d){if(_0x46539d){_0x15e1af['body'][_0xcd4d('0x4d')]=_0x46539d['id'];_0x15e1af[_0xcd4d('0x44')]['Subjects']=integrations[_0xcd4d('0x4e')](_0x15e1af['body'][_0xcd4d('0x4f')],_0x15e1af[_0xcd4d('0x44')][_0xcd4d('0x39')]);_0x15e1af[_0xcd4d('0x44')]['Descriptions']=integrations[_0xcd4d('0x50')](_0x15e1af['body'][_0xcd4d('0x4f')],_0x15e1af[_0xcd4d('0x44')][_0xcd4d('0x39')]);return db[_0xcd4d('0x48')][_0xcd4d('0x43')](_0x15e1af['body'],{'include':[{'model':db[_0xcd4d('0x51')],'as':_0xcd4d('0x52')},{'model':db['ZohoField'],'as':_0xcd4d('0x53')}]});}return null;})[_0xcd4d('0x23')](respondWithResult(_0x13cbed,null))[_0xcd4d('0x40')](handleError(_0x13cbed,null));};function getAccessToken(_0x18fa37){return new Promise(function(_0x1576c3,_0x132661){var _0x378229;switch(_0x18fa37[_0xcd4d('0x54')]){case'US':_0x378229=_0xcd4d('0x55');break;case'AU':_0x378229='https://accounts.zoho.com.au';break;case'EU':_0x378229=_0xcd4d('0x56');break;case'IN':_0x378229=_0xcd4d('0x57');break;case'CN':_0x378229=_0xcd4d('0x58');break;default:_0x378229=_0xcd4d('0x56');break;}var _0x4a8966={'method':'POST','uri':_0x378229+_0xcd4d('0x59'),'qs':{'refresh_token':_0x18fa37['refreshToken'],'client_id':_0x18fa37[_0xcd4d('0x5a')],'client_secret':_0x18fa37['clientSecret'],'grant_type':_0xcd4d('0x5b')},'json':!![]};return rp(_0x4a8966)[_0xcd4d('0x23')](function(_0x59b4cd){if(_0x59b4cd[_0xcd4d('0x5c')]){_0x1576c3(_0x59b4cd[_0xcd4d('0x5c')]);}else{_0x132661(_0xcd4d('0x5d'));}})[_0xcd4d('0x40')](function(_0xec2ae1){_0x132661(_0xec2ae1);});});}exports[_0xcd4d('0x5e')]=function(_0x258e07,_0x3e70bb,_0x550108){var _0xbd2980,_0x7316aa,_0x53f7c9,_0x3717ca,_0x47d5f8;return db[_0xcd4d('0x3c')][_0xcd4d('0x47')]({'where':{'id':_0x258e07[_0xcd4d('0x46')]['id']},'attributes':['id',_0xcd4d('0x5f'),_0xcd4d('0x54'),'clientId',_0xcd4d('0x60'),_0xcd4d('0x61'),_0xcd4d('0x62'),_0xcd4d('0x63')]})[_0xcd4d('0x23')](handleEntityNotFound(_0x3e70bb,null))['then'](function(_0x5f02d4){_0x47d5f8=_0x5f02d4;_0xbd2980=_0x47d5f8[_0xcd4d('0x5f')];_0x7316aa=_0xbd2980===_0xcd4d('0x64')?'eu':_0xcd4d('0x65');_0x53f7c9=_0x47d5f8[_0xcd4d('0x61')];var _0x1169ad=_0x53f7c9[_0xcd4d('0x66')](-0x1);if(_0x1169ad==='/'||_0x1169ad==='\x5c'||_0x1169ad===':'){_0x53f7c9=_0x53f7c9[_0xcd4d('0x67')](0x0,_0x53f7c9['lastIndexOf'](_0x1169ad));}if(!_0x47d5f8[_0xcd4d('0x63')]){throw new Error(_0xcd4d('0x68'));}return getAccessToken(_0x47d5f8);})['then'](function(_0x271b71){if(_0x271b71){return rp({'method':_0xcd4d('0x69'),'uri':util[_0xcd4d('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x7316aa),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x271b71},'json':!![]});}})[_0xcd4d('0x23')](function(_0x3cd5f4){if(_0x3cd5f4){if(_0x3cd5f4[_0xcd4d('0x6b')]&&_0x3cd5f4['response']['error']){throw new Error(_0x3cd5f4[_0xcd4d('0x6b')][_0xcd4d('0x24')][_0xcd4d('0x6c')]);}var _0x1f1d90=[];var _0x2424db=[];var _0x5f0687=[_0xcd4d('0x6d'),_0xcd4d('0x6e'),_0xcd4d('0x6f'),_0xcd4d('0x70'),_0xcd4d('0x71'),_0xcd4d('0x72'),_0xcd4d('0x73'),_0xcd4d('0x74')];_0x2424db=_[_0xcd4d('0x75')](_0x3cd5f4['fields'],function(_0x4a5939){return _0x5f0687[_0xcd4d('0x76')](_0x4a5939['api_name']);});for(var _0x4ae1c4=0x0;_0x4ae1c4<_0x2424db[_0xcd4d('0x31')];_0x4ae1c4++){if(_0x2424db[_0x4ae1c4][_0xcd4d('0x77')]===![]){_0x1f1d90[_0xcd4d('0x78')]({'id':_0x2424db[_0x4ae1c4]['id'],'name':_0x2424db[_0x4ae1c4][_0xcd4d('0x79')],'custom':_0x2424db[_0x4ae1c4][_0xcd4d('0x7a')],'options':_0x2424db[_0x4ae1c4]['data_type']===_0xcd4d('0x7b')&&_0x2424db[_0x4ae1c4][_0xcd4d('0x7c')][_0xcd4d('0x31')]>-0x1?_['map'](_0x2424db[_0x4ae1c4][_0xcd4d('0x7c')],function(_0x51cba9){return{'name':_0x51cba9,'value':_0x51cba9};}):[]});}}return{'count':_0x1f1d90['length'],'rows':_0x1f1d90};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3e70bb,null))[_0xcd4d('0x40')](function(_0x540a67){var _0x2e8b07=_0x258e07[_0xcd4d('0x2c')][_0xcd4d('0x7d')]?0x1f4:_0x540a67[_0xcd4d('0x7e')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x2e8b07,JSON[_0xcd4d('0x7f')](_0x540a67));delete _0x540a67['name'];if(_0x2e8b07===0x191){_0x2e8b07=0x190;}_0x3e70bb[_0xcd4d('0x19')](_0x2e8b07)[_0xcd4d('0x26')](_0x258e07['query'][_0xcd4d('0x7d')]?{'message':_0xcd4d('0x80'),'statusCode':_0x540a67[_0xcd4d('0x7e')]}:_0x540a67);});};
\ No newline at end of file
index 70b65a2..0a659cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55aa=['api','moment','bluebird','request-promise','path','rimraf','./intZohoAccount.attributes','ZohoAccount','int_zoho_accounts','serverUrl','changed','clientId','host','slice','substring','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientSecret','application/x-www-form-urlencoded','parse','refresh_token','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','code','refreshToken','info','catch','util','../../config/logger'];(function(_0xc4e151,_0x597e0e){var _0x3ede6f=function(_0x1f7cb9){while(--_0x1f7cb9){_0xc4e151['push'](_0xc4e151['shift']());}};_0x3ede6f(++_0x597e0e);}(_0x55aa,0x146));var _0xa55a=function(_0x2f6d0f,_0x447aad){_0x2f6d0f=_0x2f6d0f-0x0;var _0xebaa29=_0x55aa[_0x2f6d0f];return _0xebaa29;};'use strict';var _=require('lodash');var util=require(_0xa55a('0x0'));var logger=require(_0xa55a('0x1'))(_0xa55a('0x2'));var moment=require(_0xa55a('0x3'));var BPromise=require(_0xa55a('0x4'));var rp=require(_0xa55a('0x5'));var fs=require('fs');var path=require(_0xa55a('0x6'));var rimraf=require(_0xa55a('0x7'));var config=require('../../config/environment');var attributes=require(_0xa55a('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x1142fc,_0x50370c){return _0x1142fc['define'](_0xa55a('0x9'),attributes,{'tableName':_0xa55a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x34440d,_0x4487da,_0x4c8f81){if(_0x34440d['changed']('zone')||_0x34440d['changed'](_0xa55a('0xb'))||_0x34440d[_0xa55a('0xc')](_0xa55a('0xd'))||_0x34440d[_0xa55a('0xc')]('clientSecret')||_0x34440d['changed']('code')||_0x34440d[_0xa55a('0xc')](_0xa55a('0xe'))){var _0x419dde,_0x3bd2f9;_0x419dde=_0x34440d[_0xa55a('0xb')];var _0x245c99=_0x419dde[_0xa55a('0xf')](-0x1);if(_0x245c99==='/'||_0x245c99==='\x5c'||_0x245c99===':'){_0x419dde=_0x419dde[_0xa55a('0x10')](0x0,_0x419dde[_0xa55a('0x11')](_0x245c99));}switch(_0x34440d[_0xa55a('0x12')]){case'US':_0x3bd2f9=_0xa55a('0x13');break;case'AU':_0x3bd2f9=_0xa55a('0x14');break;case'IN':_0x3bd2f9=_0xa55a('0x15');break;case'CN':_0x3bd2f9=_0xa55a('0x16');break;default:_0x3bd2f9=_0xa55a('0x17');break;}var _0x1a8109={'method':_0xa55a('0x18'),'uri':_0x3bd2f9+_0xa55a('0x19'),'form':{'grant_type':_0xa55a('0x1a'),'client_id':_0x34440d[_0xa55a('0xd')],'client_secret':_0x34440d[_0xa55a('0x1b')],'redirect_uri':_0x34440d[_0xa55a('0xb')],'code':_0x34440d['code']},'headers':{'Content-Type':_0xa55a('0x1c')}};return rp(_0x1a8109)['then'](function(_0x518581){var _0x32b7b3=JSON[_0xa55a('0x1d')](_0x518581);if(_0x32b7b3[_0xa55a('0x1e')]){_0x34440d['refreshToken']=_0x32b7b3[_0xa55a('0x1e')];logger['info'](util[_0xa55a('0x1f')](_0xa55a('0x20'),_0x34440d[_0xa55a('0x21')],_0x34440d['id']));}else{logger[_0xa55a('0x22')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x34440d[_0xa55a('0x21')],_0x34440d['id']),util[_0xa55a('0x23')](_0x32b7b3,{'showHidden':![],'depth':null}));}return _0x4c8f81(null,_0x4487da);})['catch'](function(_0x4c8a1e){logger['error'](util[_0xa55a('0x1f')](_0xa55a('0x24'),_0x34440d[_0xa55a('0x21')],_0x34440d['id']),util[_0xa55a('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x4c8f81(_0x4c8a1e);});}else{return _0x4c8f81(null,_0x4487da);}},'beforeUpdate':function(_0x30b792,_0x563eef,_0x31b238){if(_0x30b792[_0xa55a('0xc')]('zone')||_0x30b792['changed'](_0xa55a('0xb'))||_0x30b792[_0xa55a('0xc')](_0xa55a('0xd'))||_0x30b792['changed']('clientSecret')||_0x30b792[_0xa55a('0xc')](_0xa55a('0x25'))||_0x30b792[_0xa55a('0xc')]('host')){var _0x586a16,_0x21cbb5;_0x586a16=_0x30b792['serverUrl'];var _0x5f1421=_0x586a16[_0xa55a('0xf')](-0x1);if(_0x5f1421==='/'||_0x5f1421==='\x5c'||_0x5f1421===':'){_0x586a16=_0x586a16['substring'](0x0,_0x586a16['lastIndexOf'](_0x5f1421));}switch(_0x30b792[_0xa55a('0x12')]){case'US':_0x21cbb5=_0xa55a('0x13');break;case'AU':_0x21cbb5=_0xa55a('0x14');break;case'IN':_0x21cbb5=_0xa55a('0x15');break;case'CN':_0x21cbb5=_0xa55a('0x16');break;default:_0x21cbb5=_0xa55a('0x17');break;}var _0x5e3dac={'method':'POST','uri':_0x21cbb5+_0xa55a('0x19'),'form':{'grant_type':_0xa55a('0x1a'),'client_id':_0x30b792[_0xa55a('0xd')],'client_secret':_0x30b792[_0xa55a('0x1b')],'redirect_uri':_0x30b792['serverUrl'],'code':_0x30b792[_0xa55a('0x25')]},'headers':{'Content-Type':_0xa55a('0x1c')}};return rp(_0x5e3dac)['then'](function(_0x2b4b2b){var _0x27bd75=JSON[_0xa55a('0x1d')](_0x2b4b2b);if(_0x27bd75[_0xa55a('0x1e')]){_0x30b792[_0xa55a('0x26')]=_0x27bd75[_0xa55a('0x1e')];logger[_0xa55a('0x27')](util[_0xa55a('0x1f')](_0xa55a('0x20'),_0x30b792['name'],_0x30b792['id']));}else{logger['error'](util[_0xa55a('0x1f')](_0xa55a('0x24'),_0x30b792['name'],_0x30b792['id']),util[_0xa55a('0x23')](_0x27bd75,{'showHidden':![],'depth':null}));}return _0x31b238(null,_0x563eef);})[_0xa55a('0x28')](function(_0x48aa6f){logger['error'](util[_0xa55a('0x1f')](_0xa55a('0x24'),_0x30b792['name'],_0x30b792['id']),util[_0xa55a('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x31b238(_0x48aa6f);});}else{return _0x31b238(null,_0x563eef);}}}});};
\ No newline at end of file
+var _0xf1aa=['then','parse','refresh_token','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','catch','error','host','lastIndexOf','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded'];(function(_0x11c431,_0x31025a){var _0x427deb=function(_0x23fb48){while(--_0x23fb48){_0x11c431['push'](_0x11c431['shift']());}};_0x427deb(++_0x31025a);}(_0xf1aa,0x116));var _0xaf1a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf1aa[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xaf1a('0x0'));var util=require(_0xaf1a('0x1'));var logger=require(_0xaf1a('0x2'))(_0xaf1a('0x3'));var moment=require('moment');var BPromise=require(_0xaf1a('0x4'));var rp=require(_0xaf1a('0x5'));var fs=require('fs');var path=require(_0xaf1a('0x6'));var rimraf=require('rimraf');var config=require(_0xaf1a('0x7'));var attributes=require(_0xaf1a('0x8'));var integrations=require(_0xaf1a('0x9'));module[_0xaf1a('0xa')]=function(_0xdcf301,_0x13707b){return _0xdcf301[_0xaf1a('0xb')](_0xaf1a('0xc'),attributes,{'tableName':_0xaf1a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x397b47,_0x2f111f,_0x3d645a){if(_0x397b47[_0xaf1a('0xe')](_0xaf1a('0xf'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x10'))||_0x397b47['changed'](_0xaf1a('0x11'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x12'))||_0x397b47[_0xaf1a('0xe')](_0xaf1a('0x13'))||_0x397b47[_0xaf1a('0xe')]('host')){var _0xfa660c,_0x42910c;_0xfa660c=_0x397b47[_0xaf1a('0x10')];var _0x51ea64=_0xfa660c[_0xaf1a('0x14')](-0x1);if(_0x51ea64==='/'||_0x51ea64==='\x5c'||_0x51ea64===':'){_0xfa660c=_0xfa660c[_0xaf1a('0x15')](0x0,_0xfa660c['lastIndexOf'](_0x51ea64));}switch(_0x397b47['zone']){case'US':_0x42910c=_0xaf1a('0x16');break;case'AU':_0x42910c=_0xaf1a('0x17');break;case'IN':_0x42910c=_0xaf1a('0x18');break;case'CN':_0x42910c=_0xaf1a('0x19');break;default:_0x42910c=_0xaf1a('0x1a');break;}var _0x50c04e={'method':_0xaf1a('0x1b'),'uri':_0x42910c+_0xaf1a('0x1c'),'form':{'grant_type':'authorization_code','client_id':_0x397b47['clientId'],'client_secret':_0x397b47[_0xaf1a('0x12')],'redirect_uri':_0x397b47[_0xaf1a('0x10')],'code':_0x397b47[_0xaf1a('0x13')]},'headers':{'Content-Type':_0xaf1a('0x1d')}};return rp(_0x50c04e)[_0xaf1a('0x1e')](function(_0x3b267e){var _0x2c16a0=JSON[_0xaf1a('0x1f')](_0x3b267e);if(_0x2c16a0[_0xaf1a('0x20')]){_0x397b47[_0xaf1a('0x21')]=_0x2c16a0['refresh_token'];logger[_0xaf1a('0x22')](util[_0xaf1a('0x23')](_0xaf1a('0x24'),_0x397b47[_0xaf1a('0x25')],_0x397b47['id']));}else{logger['error'](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x397b47[_0xaf1a('0x25')],_0x397b47['id']),util[_0xaf1a('0x27')](_0x2c16a0,{'showHidden':![],'depth':null}));}return _0x3d645a(null,_0x2f111f);})[_0xaf1a('0x28')](function(_0x2e328f){logger[_0xaf1a('0x29')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x397b47[_0xaf1a('0x25')],_0x397b47['id']),util[_0xaf1a('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x3d645a(_0x2e328f);});}else{return _0x3d645a(null,_0x2f111f);}},'beforeUpdate':function(_0x59c9da,_0x57a0fe,_0x2e0a16){if(_0x59c9da[_0xaf1a('0xe')](_0xaf1a('0xf'))||_0x59c9da[_0xaf1a('0xe')](_0xaf1a('0x10'))||_0x59c9da[_0xaf1a('0xe')]('clientId')||_0x59c9da[_0xaf1a('0xe')]('clientSecret')||_0x59c9da['changed'](_0xaf1a('0x13'))||_0x59c9da['changed'](_0xaf1a('0x2a'))){var _0x51d92a,_0x36c312;_0x51d92a=_0x59c9da['serverUrl'];var _0x4d0958=_0x51d92a[_0xaf1a('0x14')](-0x1);if(_0x4d0958==='/'||_0x4d0958==='\x5c'||_0x4d0958===':'){_0x51d92a=_0x51d92a[_0xaf1a('0x15')](0x0,_0x51d92a[_0xaf1a('0x2b')](_0x4d0958));}switch(_0x59c9da['zone']){case'US':_0x36c312=_0xaf1a('0x16');break;case'AU':_0x36c312=_0xaf1a('0x17');break;case'IN':_0x36c312='https://accounts.zoho.in';break;case'CN':_0x36c312=_0xaf1a('0x19');break;default:_0x36c312=_0xaf1a('0x1a');break;}var _0x3e4af0={'method':_0xaf1a('0x1b'),'uri':_0x36c312+_0xaf1a('0x1c'),'form':{'grant_type':'authorization_code','client_id':_0x59c9da[_0xaf1a('0x11')],'client_secret':_0x59c9da[_0xaf1a('0x12')],'redirect_uri':_0x59c9da['serverUrl'],'code':_0x59c9da[_0xaf1a('0x13')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3e4af0)[_0xaf1a('0x1e')](function(_0x568d8c){var _0xfb32ce=JSON[_0xaf1a('0x1f')](_0x568d8c);if(_0xfb32ce[_0xaf1a('0x20')]){_0x59c9da[_0xaf1a('0x21')]=_0xfb32ce[_0xaf1a('0x20')];logger['info'](util[_0xaf1a('0x23')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x59c9da[_0xaf1a('0x25')],_0x59c9da['id']));}else{logger[_0xaf1a('0x29')](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x59c9da['name'],_0x59c9da['id']),util[_0xaf1a('0x27')](_0xfb32ce,{'showHidden':![],'depth':null}));}return _0x2e0a16(null,_0x57a0fe);})[_0xaf1a('0x28')](function(_0x5cfd87){logger[_0xaf1a('0x29')](util[_0xaf1a('0x23')](_0xaf1a('0x26'),_0x59c9da[_0xaf1a('0x25')],_0x59c9da['id']),util[_0xaf1a('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x2e0a16(_0x5cfd87);});}else{return _0x2e0a16(null,_0x57a0fe);}}}});};
\ No newline at end of file
index 45241b0..31534f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','attributes','limit','include','map','model','ShowZohoAccount','raw','lodash','util','moment','bluebird','ioredis'];(function(_0x1cf279,_0x31c825){var _0x33f5b6=function(_0x3a637c){while(--_0x3a637c){_0x1cf279['push'](_0x1cf279['shift']());}};_0x33f5b6(++_0x31c825);}(_0xd237,0x14f));var _0x7d23=function(_0x3430d0,_0x4d9156){_0x3430d0=_0x3430d0-0x0;var _0x39a41e=_0xd237[_0x3430d0];return _0x39a41e;};'use strict';var _=require(_0x7d23('0x0'));var util=require(_0x7d23('0x1'));var moment=require(_0x7d23('0x2'));var BPromise=require(_0x7d23('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d23('0x4'));var db=require(_0x7d23('0x5'))['db'];var utils=require(_0x7d23('0x6'));var logger=require(_0x7d23('0x7'))(_0x7d23('0x8'));var config=require(_0x7d23('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d23('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ca126,_0x48358f,_0xc43371){return new BPromise(function(_0x42c334,_0x6ce28d){return client[_0x7d23('0xb')](_0x5ca126,_0xc43371)[_0x7d23('0xc')](function(_0x23f1d6){logger[_0x7d23('0xd')](_0x7d23('0xe'),_0x48358f,'request\x20sent');logger[_0x7d23('0xf')](_0x7d23('0x10'),_0x48358f,_0x7d23('0x11'),JSON['stringify'](_0x23f1d6));if(_0x23f1d6[_0x7d23('0x12')]){if(_0x23f1d6['error'][_0x7d23('0x13')]===0x1f4){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x6ce28d(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}logger['error']('ZohoAccount,\x20%s,\x20%s',_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x42c334(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}else{logger['info'](_0x7d23('0xe'),_0x48358f,'request\x20sent');_0x42c334(_0x23f1d6[_0x7d23('0x15')]['message']);}})[_0x7d23('0x16')](function(_0x46a35b){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x46a35b);_0x6ce28d(_0x46a35b);});});}exports[_0x7d23('0x17')]=function(_0x506a3b){var _0x313471=this;return new Promise(function(_0x3d6a7b,_0x49ce32){return db[_0x7d23('0x18')][_0x7d23('0x19')]({'raw':_0x506a3b[_0x7d23('0x1a')]?_0x506a3b['options']['raw']===undefined?!![]:![]:!![],'where':_0x506a3b[_0x7d23('0x1a')]?_0x506a3b[_0x7d23('0x1a')]['where']||null:null,'attributes':_0x506a3b[_0x7d23('0x1a')]?_0x506a3b['options'][_0x7d23('0x1b')]||null:null,'limit':_0x506a3b['options']?_0x506a3b[_0x7d23('0x1a')][_0x7d23('0x1c')]||null:null,'include':_0x506a3b['options']?_0x506a3b[_0x7d23('0x1a')][_0x7d23('0x1d')]?_[_0x7d23('0x1e')](_0x506a3b['options'][_0x7d23('0x1d')],function(_0x4fd334){return{'model':db[_0x4fd334[_0x7d23('0x1f')]],'as':_0x4fd334['as'],'attributes':_0x4fd334[_0x7d23('0x1b')],'include':_0x4fd334[_0x7d23('0x1d')]?_[_0x7d23('0x1e')](_0x4fd334[_0x7d23('0x1d')],function(_0x4773ec){return{'model':db[_0x4773ec[_0x7d23('0x1f')]],'as':_0x4773ec['as'],'attributes':_0x4773ec[_0x7d23('0x1b')],'include':_0x4773ec[_0x7d23('0x1d')]?_[_0x7d23('0x1e')](_0x4773ec[_0x7d23('0x1d')],function(_0x5a9295){return{'model':db[_0x5a9295[_0x7d23('0x1f')]],'as':_0x5a9295['as'],'attributes':_0x5a9295[_0x7d23('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x7d23('0xc')](function(_0x190aff){logger[_0x7d23('0xd')](_0x7d23('0x17'),_0x506a3b);logger[_0x7d23('0xf')](_0x7d23('0x17'),_0x506a3b,JSON['stringify'](_0x190aff));_0x3d6a7b(_0x190aff);})[_0x7d23('0x16')](function(_0x4783ad){logger['error'](_0x7d23('0x17'),_0x4783ad[_0x7d23('0x14')],_0x506a3b);_0x49ce32(_0x313471[_0x7d23('0x12')](0x1f4,_0x4783ad['message']));});});};exports[_0x7d23('0x20')]=function(_0x23fb33){var _0x21bc46=this;return new Promise(function(_0x2adb02,_0x1b6f2d){return db[_0x7d23('0x18')]['find']({'raw':_0x23fb33[_0x7d23('0x1a')]?_0x23fb33[_0x7d23('0x1a')][_0x7d23('0x21')]===undefined?!![]:![]:!![],'where':_0x23fb33[_0x7d23('0x1a')]?_0x23fb33[_0x7d23('0x1a')]['where']||null:null,'attributes':_0x23fb33[_0x7d23('0x1a')]?_0x23fb33[_0x7d23('0x1a')]['attributes']||null:null,'include':_0x23fb33[_0x7d23('0x1a')]?_0x23fb33[_0x7d23('0x1a')][_0x7d23('0x1d')]?_['map'](_0x23fb33[_0x7d23('0x1a')][_0x7d23('0x1d')],function(_0x53f032){return{'model':db[_0x53f032[_0x7d23('0x1f')]],'as':_0x53f032['as'],'attributes':_0x53f032[_0x7d23('0x1b')],'include':_0x53f032[_0x7d23('0x1d')]?_[_0x7d23('0x1e')](_0x53f032[_0x7d23('0x1d')],function(_0x5eb76f){return{'model':db[_0x5eb76f[_0x7d23('0x1f')]],'as':_0x5eb76f['as'],'attributes':_0x5eb76f[_0x7d23('0x1b')],'include':_0x5eb76f['include']?_[_0x7d23('0x1e')](_0x5eb76f[_0x7d23('0x1d')],function(_0xf4f42d){return{'model':db[_0xf4f42d[_0x7d23('0x1f')]],'as':_0xf4f42d['as'],'attributes':_0xf4f42d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a7a02){logger['info'](_0x7d23('0x20'),_0x23fb33);logger['debug']('ShowZohoAccount',_0x23fb33,JSON['stringify'](_0x1a7a02));_0x2adb02(_0x1a7a02);})[_0x7d23('0x16')](function(_0x2a5964){logger[_0x7d23('0x12')](_0x7d23('0x20'),_0x2a5964[_0x7d23('0x14')],_0x23fb33);_0x1b6f2d(_0x21bc46[_0x7d23('0x12')](0x1f4,_0x2a5964[_0x7d23('0x14')]));});});};
\ No newline at end of file
+var _0x0760=['GetZohoAccount','catch','ShowZohoAccount','find','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','info'];(function(_0x56a8bd,_0x201ffb){var _0x45b334=function(_0xb4b3eb){while(--_0xb4b3eb){_0x56a8bd['push'](_0x56a8bd['shift']());}};_0x45b334(++_0x201ffb);}(_0x0760,0xa9));var _0x0076=function(_0x3d1a29,_0x353748){_0x3d1a29=_0x3d1a29-0x0;var _0x1b650c=_0x0760[_0x3d1a29];return _0x1b650c;};'use strict';var _=require(_0x0076('0x0'));var util=require('util');var moment=require(_0x0076('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0076('0x2'))['db'];var utils=require(_0x0076('0x3'));var logger=require(_0x0076('0x4'))(_0x0076('0x5'));var config=require(_0x0076('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0076('0x7')][_0x0076('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b7f29,_0x9b8b1a,_0x1d61d6){return new BPromise(function(_0x5b4c91,_0x411b4b){return client['request'](_0x1b7f29,_0x1d61d6)[_0x0076('0x9')](function(_0x31ad28){logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));logger[_0x0076('0xc')](_0x0076('0xd'),_0x9b8b1a,_0x0076('0xb'),JSON[_0x0076('0xe')](_0x31ad28));if(_0x31ad28['error']){if(_0x31ad28[_0x0076('0xf')][_0x0076('0x10')]===0x1f4){logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);return _0x411b4b(_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);}logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')]['message']);return _0x5b4c91(_0x31ad28[_0x0076('0xf')]['message']);}else{logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));_0x5b4c91(_0x31ad28['result'][_0x0076('0x11')]);}})['catch'](function(_0x2ff722){logger[_0x0076('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x9b8b1a,_0x2ff722);_0x411b4b(_0x2ff722);});});}exports['GetZohoAccount']=function(_0x5761a4){var _0xc0a663=this;return new Promise(function(_0x30fb20,_0x1fb63f){return db[_0x0076('0x12')][_0x0076('0x13')]({'raw':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x15')]===undefined?!![]:![]:!![],'where':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x16')]||null:null,'attributes':_0x5761a4[_0x0076('0x14')]?_0x5761a4[_0x0076('0x14')][_0x0076('0x17')]||null:null,'limit':_0x5761a4['options']?_0x5761a4[_0x0076('0x14')][_0x0076('0x18')]||null:null,'include':_0x5761a4[_0x0076('0x14')]?_0x5761a4['options'][_0x0076('0x19')]?_[_0x0076('0x1a')](_0x5761a4[_0x0076('0x14')][_0x0076('0x19')],function(_0x250f57){return{'model':db[_0x250f57['model']],'as':_0x250f57['as'],'attributes':_0x250f57[_0x0076('0x17')],'include':_0x250f57[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x250f57[_0x0076('0x19')],function(_0x2c7def){return{'model':db[_0x2c7def[_0x0076('0x1b')]],'as':_0x2c7def['as'],'attributes':_0x2c7def['attributes'],'include':_0x2c7def[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x2c7def[_0x0076('0x19')],function(_0x187827){return{'model':db[_0x187827[_0x0076('0x1b')]],'as':_0x187827['as'],'attributes':_0x187827['attributes']};}):[]};}):[]};}):[]:[]})[_0x0076('0x9')](function(_0x712db9){logger[_0x0076('0x1c')](_0x0076('0x1d'),_0x5761a4);logger[_0x0076('0xc')](_0x0076('0x1d'),_0x5761a4,JSON[_0x0076('0xe')](_0x712db9));_0x30fb20(_0x712db9);})[_0x0076('0x1e')](function(_0x2bc8b7){logger[_0x0076('0xf')]('GetZohoAccount',_0x2bc8b7[_0x0076('0x11')],_0x5761a4);_0x1fb63f(_0xc0a663[_0x0076('0xf')](0x1f4,_0x2bc8b7[_0x0076('0x11')]));});});};exports[_0x0076('0x1f')]=function(_0x365049){var _0x501b23=this;return new Promise(function(_0x522273,_0x170881){return db[_0x0076('0x12')][_0x0076('0x20')]({'raw':_0x365049[_0x0076('0x14')]?_0x365049['options']['raw']===undefined?!![]:![]:!![],'where':_0x365049[_0x0076('0x14')]?_0x365049[_0x0076('0x14')][_0x0076('0x16')]||null:null,'attributes':_0x365049['options']?_0x365049[_0x0076('0x14')][_0x0076('0x17')]||null:null,'include':_0x365049[_0x0076('0x14')]?_0x365049[_0x0076('0x14')][_0x0076('0x19')]?_[_0x0076('0x1a')](_0x365049[_0x0076('0x14')][_0x0076('0x19')],function(_0x15cdc8){return{'model':db[_0x15cdc8[_0x0076('0x1b')]],'as':_0x15cdc8['as'],'attributes':_0x15cdc8[_0x0076('0x17')],'include':_0x15cdc8['include']?_[_0x0076('0x1a')](_0x15cdc8[_0x0076('0x19')],function(_0x308515){return{'model':db[_0x308515[_0x0076('0x1b')]],'as':_0x308515['as'],'attributes':_0x308515[_0x0076('0x17')],'include':_0x308515[_0x0076('0x19')]?_[_0x0076('0x1a')](_0x308515['include'],function(_0x3012ff){return{'model':db[_0x3012ff[_0x0076('0x1b')]],'as':_0x3012ff['as'],'attributes':_0x3012ff[_0x0076('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0076('0x9')](function(_0x4a4cff){logger[_0x0076('0x1c')]('ShowZohoAccount',_0x365049);logger[_0x0076('0xc')](_0x0076('0x1f'),_0x365049,JSON[_0x0076('0xe')](_0x4a4cff));_0x522273(_0x4a4cff);})[_0x0076('0x1e')](function(_0x3ac727){logger[_0x0076('0xf')](_0x0076('0x1f'),_0x3ac727[_0x0076('0x11')],_0x365049);_0x170881(_0x501b23[_0x0076('0xf')](0x1f4,_0x3ac727[_0x0076('0x11')]));});});};
\ No newline at end of file
index c8dfa7b..1503cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f09=['../../config/environment','./intZohoConfiguration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xe906a5,_0x3bfd31){var _0x4fb701=function(_0x18c9f1){while(--_0x18c9f1){_0xe906a5['push'](_0xe906a5['shift']());}};_0x4fb701(++_0x3bfd31);}(_0x9f09,0x88));var _0x99f0=function(_0x2982d8,_0x2c5baf){_0x2982d8=_0x2982d8-0x0;var _0x253b21=_0x9f09[_0x2982d8];return _0x253b21;};'use strict';var multer=require(_0x99f0('0x0'));var util=require(_0x99f0('0x1'));var path=require(_0x99f0('0x2'));var timeout=require(_0x99f0('0x3'));var express=require(_0x99f0('0x4'));var router=express[_0x99f0('0x5')]();var fs_extra=require(_0x99f0('0x6'));var auth=require(_0x99f0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x99f0('0x8'));var controller=require(_0x99f0('0x9'));router[_0x99f0('0xa')]('/',auth['isAuthenticated'](),controller[_0x99f0('0xb')]);router[_0x99f0('0xa')](_0x99f0('0xc'),auth[_0x99f0('0xd')](),controller[_0x99f0('0xe')]);router[_0x99f0('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x99f0('0xf')]);router['get'](_0x99f0('0x10'),auth['isAuthenticated'](),controller[_0x99f0('0x11')]);router['get'](_0x99f0('0x12'),auth['isAuthenticated'](),controller[_0x99f0('0x13')]);router['post']('/',auth[_0x99f0('0xd')](),controller[_0x99f0('0x14')]);router[_0x99f0('0x15')](_0x99f0('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x99f0('0x16')]('/:id',auth[_0x99f0('0xd')](),controller['destroy']);module[_0x99f0('0x17')]=router;
\ No newline at end of file
+var _0x0bae=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','delete','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0bae,0xb2));var _0xe0ba=function(_0x3f0860,_0x3f8a86){_0x3f0860=_0x3f0860-0x0;var _0x26ecb1=_0x0bae[_0x3f0860];return _0x26ecb1;};'use strict';var multer=require(_0xe0ba('0x0'));var util=require(_0xe0ba('0x1'));var path=require(_0xe0ba('0x2'));var timeout=require(_0xe0ba('0x3'));var express=require('express');var router=express[_0xe0ba('0x4')]();var fs_extra=require(_0xe0ba('0x5'));var auth=require(_0xe0ba('0x6'));var interaction=require(_0xe0ba('0x7'));var config=require(_0xe0ba('0x8'));var controller=require(_0xe0ba('0x9'));router[_0xe0ba('0xa')]('/',auth[_0xe0ba('0xb')](),controller['index']);router[_0xe0ba('0xa')](_0xe0ba('0xc'),auth['isAuthenticated'](),controller[_0xe0ba('0xd')]);router[_0xe0ba('0xa')](_0xe0ba('0xe'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0xf')]);router[_0xe0ba('0xa')](_0xe0ba('0x10'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0x11')]);router[_0xe0ba('0xa')](_0xe0ba('0x12'),auth[_0xe0ba('0xb')](),controller[_0xe0ba('0x13')]);router[_0xe0ba('0x14')]('/',auth[_0xe0ba('0xb')](),controller['create']);router['put'](_0xe0ba('0xc'),auth[_0xe0ba('0xb')](),controller['update']);router[_0xe0ba('0x15')](_0xe0ba('0xc'),auth[_0xe0ba('0xb')](),controller['destroy']);module[_0xe0ba('0x16')]=router;
\ No newline at end of file
index ed65e67..7113b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f2=['exports','STRING','ENUM','lead','nothing','contact_lead','contact'];(function(_0x1d571b,_0x590f3e){var _0x33f196=function(_0x3bd115){while(--_0x3bd115){_0x1d571b['push'](_0x1d571b['shift']());}};_0x33f196(++_0x590f3e);}(_0x23f2,0x1ce));var _0x223f=function(_0x3e998e,_0x3baa95){_0x3e998e=_0x3e998e-0x0;var _0x520458=_0x23f2[_0x3e998e];return _0x520458;};'use strict';var Sequelize=require('sequelize');module[_0x223f('0x0')]={'name':{'type':Sequelize[_0x223f('0x1')]},'moduleCreate':{'type':Sequelize[_0x223f('0x2')](_0x223f('0x3'),'contact',_0x223f('0x4')),'defaultValue':_0x223f('0x3')},'moduleSearch':{'type':Sequelize[_0x223f('0x2')](_0x223f('0x5'),_0x223f('0x6'),_0x223f('0x3')),'defaultValue':_0x223f('0x5')},'description':{'type':Sequelize[_0x223f('0x1')]}};
\ No newline at end of file
+var _0xcd2c=['exports','ENUM','lead','contact','contact_lead','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcd2c,0xc6));var _0xccd2=function(_0x21c222,_0x406d0a){_0x21c222=_0x21c222-0x0;var _0x5ec82a=_0xcd2c[_0x21c222];return _0x5ec82a;};'use strict';var Sequelize=require('sequelize');module[_0xccd2('0x0')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xccd2('0x1')](_0xccd2('0x2'),_0xccd2('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize['ENUM'](_0xccd2('0x4'),_0xccd2('0x3'),_0xccd2('0x2')),'defaultValue':_0xccd2('0x4')},'description':{'type':Sequelize[_0xccd2('0x5')]}};
\ No newline at end of file
index 34361d1..c4dd2f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4913=['body','getFields','findOne','ZohoField','order','getSubjects','pick','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','type','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create'];(function(_0x2575bc,_0x210cfc){var _0x2c1fe1=function(_0xe0100c){while(--_0xe0100c){_0x2575bc['push'](_0x2575bc['shift']());}};_0x2c1fe1(++_0x210cfc);}(_0x4913,0x1f4));var _0x3491=function(_0x3dea88,_0x4d9ff4){_0x3dea88=_0x3dea88-0x0;var _0x428135=_0x4913[_0x3dea88];return _0x428135;};'use strict';var emlformat=require(_0x3491('0x0'));var rimraf=require(_0x3491('0x1'));var zipdir=require(_0x3491('0x2'));var jsonpatch=require(_0x3491('0x3'));var rp=require(_0x3491('0x4'));var moment=require('moment');var BPromise=require(_0x3491('0x5'));var Mustache=require(_0x3491('0x6'));var util=require(_0x3491('0x7'));var path=require(_0x3491('0x8'));var sox=require(_0x3491('0x9'));var csv=require(_0x3491('0xa'));var ejs=require(_0x3491('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3491('0xc'));var squel=require('squel');var crypto=require(_0x3491('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3491('0xe'));var toCsv=require(_0x3491('0xa'));var querystring=require(_0x3491('0xf'));var Papa=require(_0x3491('0x10'));var Redis=require('ioredis');var authService=require(_0x3491('0x11'));var qs=require(_0x3491('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3491('0x13'));var logger=require(_0x3491('0x14'))('api');var utils=require(_0x3491('0x15'));var config=require(_0x3491('0x16'));var licenseUtil=require(_0x3491('0x17'));var db=require(_0x3491('0x18'))['db'];function respondWithStatusCode(_0x4a4fcd,_0x48dbbe){_0x48dbbe=_0x48dbbe||0xcc;return function(_0x521f6e){if(_0x521f6e){return _0x4a4fcd[_0x3491('0x19')](_0x48dbbe);}return _0x4a4fcd[_0x3491('0x1a')](_0x48dbbe)['end']();};}function respondWithResult(_0x2f2b58,_0x3b131e){_0x3b131e=_0x3b131e||0xc8;return function(_0x55186c){if(_0x55186c){return _0x2f2b58[_0x3491('0x1a')](_0x3b131e)[_0x3491('0x1b')](_0x55186c);}};}function respondWithFilteredResult(_0x2e775c,_0x30c9ef){return function(_0x23e61d){if(_0x23e61d){var _0x4b6c0=typeof _0x30c9ef[_0x3491('0x1c')]===_0x3491('0x1d')&&typeof _0x30c9ef['limit']===_0x3491('0x1d');var _0x40aeef=_0x23e61d[_0x3491('0x1e')];var _0x5777d8=_0x4b6c0?0x0:_0x30c9ef[_0x3491('0x1c')];var _0x1f7758=_0x4b6c0?_0x23e61d[_0x3491('0x1e')]:_0x30c9ef['offset']+_0x30c9ef[_0x3491('0x1f')];var _0x37224b;if(_0x1f7758>=_0x40aeef){_0x1f7758=_0x40aeef;_0x37224b=0xc8;}else{_0x37224b=0xce;}_0x2e775c[_0x3491('0x1a')](_0x37224b);return _0x2e775c[_0x3491('0x20')](_0x3491('0x21'),_0x5777d8+'-'+_0x1f7758+'/'+_0x40aeef)[_0x3491('0x1b')](_0x23e61d);}return null;};}function patchUpdates(_0x38567e){return function(_0x26a492){try{jsonpatch[_0x3491('0x22')](_0x26a492,_0x38567e,!![]);}catch(_0xfeecf0){return BPromise[_0x3491('0x23')](_0xfeecf0);}return _0x26a492[_0x3491('0x24')]();};}function saveUpdates(_0x58c180,_0x22dc36){return function(_0x441275){if(_0x441275){return _0x441275[_0x3491('0x25')](_0x58c180)['then'](function(_0x34232c){return _0x34232c;});}return null;};}function removeEntity(_0x189214,_0x3a601d){return function(_0x27783b){if(_0x27783b){return _0x27783b[_0x3491('0x26')]()[_0x3491('0x27')](function(){_0x189214[_0x3491('0x1a')](0xcc)[_0x3491('0x28')]();});}};}function handleEntityNotFound(_0x26ad02,_0x47df40){return function(_0x3d01e9){if(!_0x3d01e9){_0x26ad02[_0x3491('0x19')](0x194);}return _0x3d01e9;};}function handleError(_0x37f32b,_0x1a356d){_0x1a356d=_0x1a356d||0x1f4;return function(_0x147cf9){logger['error'](_0x147cf9[_0x3491('0x29')]);if(_0x147cf9[_0x3491('0x2a')]){delete _0x147cf9[_0x3491('0x2a')];}_0x37f32b[_0x3491('0x1a')](_0x1a356d)[_0x3491('0x2b')](_0x147cf9);};}exports[_0x3491('0x2c')]=function(_0x580100,_0x4648c9){var _0xf95c4f={},_0xb9cb64={},_0xf558b6={'count':0x0,'rows':[]};var _0x949cb0=_[_0x3491('0x2d')](db[_0x3491('0x2e')][_0x3491('0x2f')],function(_0x1be3a9){return{'name':_0x1be3a9[_0x3491('0x30')],'type':_0x1be3a9['type']['key']};});_0xb9cb64[_0x3491('0x31')]=_[_0x3491('0x2d')](_0x949cb0,_0x3491('0x2a'));_0xb9cb64[_0x3491('0x32')]=_[_0x3491('0x33')](_0x580100[_0x3491('0x32')]);_0xb9cb64['filters']=_[_0x3491('0x34')](_0xb9cb64[_0x3491('0x31')],_0xb9cb64[_0x3491('0x32')]);_0xf95c4f['attributes']=_['intersection'](_0xb9cb64[_0x3491('0x31')],qs[_0x3491('0x35')](_0x580100['query'][_0x3491('0x35')]));_0xf95c4f[_0x3491('0x36')]=_0xf95c4f[_0x3491('0x36')][_0x3491('0x37')]?_0xf95c4f[_0x3491('0x36')]:_0xb9cb64[_0x3491('0x31')];if(!_0x580100[_0x3491('0x32')][_0x3491('0x38')](_0x3491('0x39'))){_0xf95c4f[_0x3491('0x1f')]=qs['limit'](_0x580100[_0x3491('0x32')][_0x3491('0x1f')]);_0xf95c4f[_0x3491('0x1c')]=qs[_0x3491('0x1c')](_0x580100[_0x3491('0x32')][_0x3491('0x1c')]);}_0xf95c4f['order']=qs[_0x3491('0x3a')](_0x580100[_0x3491('0x32')][_0x3491('0x3a')]);_0xf95c4f[_0x3491('0x3b')]=qs[_0x3491('0x3c')](_['pick'](_0x580100[_0x3491('0x32')],_0xb9cb64['filters']),_0x949cb0);if(_0x580100[_0x3491('0x32')][_0x3491('0x3d')]){_0xf95c4f[_0x3491('0x3b')]=_['merge'](_0xf95c4f[_0x3491('0x3b')],{'$or':_[_0x3491('0x2d')](_0x949cb0,function(_0x5b7814){if(_0x5b7814[_0x3491('0x3e')]!==_0x3491('0x3f')){var _0x3b9ce8={};_0x3b9ce8[_0x5b7814['name']]={'$like':'%'+_0x580100[_0x3491('0x32')][_0x3491('0x3d')]+'%'};return _0x3b9ce8;}})});}_0xf95c4f=_[_0x3491('0x40')]({},_0xf95c4f,_0x580100[_0x3491('0x41')]);var _0x3b5ef8={'where':_0xf95c4f[_0x3491('0x3b')]};return db[_0x3491('0x2e')]['count'](_0x3b5ef8)['then'](function(_0x1d435a){_0xf558b6['count']=_0x1d435a;if(_0x580100[_0x3491('0x32')][_0x3491('0x42')]){_0xf95c4f[_0x3491('0x43')]=[{'all':!![]}];}return db[_0x3491('0x2e')]['findAll'](_0xf95c4f);})[_0x3491('0x27')](function(_0x50fec2){_0xf558b6[_0x3491('0x44')]=_0x50fec2;return _0xf558b6;})[_0x3491('0x27')](respondWithFilteredResult(_0x4648c9,_0xf95c4f))[_0x3491('0x45')](handleError(_0x4648c9,null));};exports[_0x3491('0x46')]=function(_0x3773df,_0x324459){var _0x19be8d={'raw':![],'where':{'id':_0x3773df[_0x3491('0x47')]['id']}},_0x416fbe={};_0x416fbe[_0x3491('0x31')]=_['keys'](db['ZohoConfiguration']['rawAttributes']);_0x416fbe[_0x3491('0x32')]=_[_0x3491('0x33')](_0x3773df[_0x3491('0x32')]);_0x416fbe['filters']=_[_0x3491('0x34')](_0x416fbe[_0x3491('0x31')],_0x416fbe['query']);_0x19be8d['attributes']=_['intersection'](_0x416fbe['model'],qs[_0x3491('0x35')](_0x3773df[_0x3491('0x32')]['fields']));_0x19be8d[_0x3491('0x36')]=_0x19be8d['attributes'][_0x3491('0x37')]?_0x19be8d[_0x3491('0x36')]:_0x416fbe['model'];if(_0x3773df[_0x3491('0x32')][_0x3491('0x42')]){_0x19be8d[_0x3491('0x43')]=[{'all':!![]}];}_0x19be8d=_[_0x3491('0x40')]({},_0x19be8d,_0x3773df[_0x3491('0x41')]);return db[_0x3491('0x2e')][_0x3491('0x48')](_0x19be8d)[_0x3491('0x27')](handleEntityNotFound(_0x324459,null))[_0x3491('0x27')](respondWithResult(_0x324459,null))['catch'](handleError(_0x324459,null));};exports[_0x3491('0x49')]=function(_0xd4347b,_0x1da99d){return db[_0x3491('0x2e')][_0x3491('0x49')](_0xd4347b[_0x3491('0x4a')],{})[_0x3491('0x27')](respondWithResult(_0x1da99d,0xc9))[_0x3491('0x45')](handleError(_0x1da99d,null));};exports[_0x3491('0x25')]=function(_0x1750b9,_0x106fc6){if(_0x1750b9[_0x3491('0x4a')]['id']){delete _0x1750b9['body']['id'];}return db[_0x3491('0x2e')]['find']({'where':{'id':_0x1750b9['params']['id']}})['then'](handleEntityNotFound(_0x106fc6,null))['then'](saveUpdates(_0x1750b9[_0x3491('0x4a')],null))[_0x3491('0x27')](respondWithResult(_0x106fc6,null))['catch'](handleError(_0x106fc6,null));};exports[_0x3491('0x26')]=function(_0x2b4ab7,_0x538ca8){return db[_0x3491('0x2e')][_0x3491('0x48')]({'where':{'id':_0x2b4ab7[_0x3491('0x47')]['id']}})[_0x3491('0x27')](handleEntityNotFound(_0x538ca8,null))[_0x3491('0x27')](removeEntity(_0x538ca8,null))['catch'](handleError(_0x538ca8,null));};exports[_0x3491('0x4b')]=function(_0x494700,_0x52b960,_0x13667a){var _0x19a849={};var _0x1d20dc={};var _0x373171;var _0x2bcdc4;return db[_0x3491('0x2e')][_0x3491('0x4c')]({'where':{'id':_0x494700['params']['id']}})[_0x3491('0x27')](handleEntityNotFound(_0x52b960,null))[_0x3491('0x27')](function(_0x333de6){if(_0x333de6){_0x373171=_0x333de6;_0x1d20dc[_0x3491('0x31')]=_[_0x3491('0x33')](db[_0x3491('0x4d')][_0x3491('0x2f')]);_0x1d20dc[_0x3491('0x32')]=_[_0x3491('0x33')](_0x494700[_0x3491('0x32')]);_0x1d20dc[_0x3491('0x3c')]=_[_0x3491('0x34')](_0x1d20dc['model'],_0x1d20dc[_0x3491('0x32')]);_0x19a849[_0x3491('0x36')]=_[_0x3491('0x34')](_0x1d20dc['model'],qs[_0x3491('0x35')](_0x494700[_0x3491('0x32')][_0x3491('0x35')]));_0x19a849['attributes']=_0x19a849['attributes'][_0x3491('0x37')]?_0x19a849[_0x3491('0x36')]:_0x1d20dc['model'];_0x19a849[_0x3491('0x4e')]=qs[_0x3491('0x3a')](_0x494700['query'][_0x3491('0x3a')]);_0x19a849['where']=qs[_0x3491('0x3c')](_['pick'](_0x494700[_0x3491('0x32')],_0x1d20dc[_0x3491('0x3c')]));if(_0x494700['query'][_0x3491('0x3d')]){_0x19a849[_0x3491('0x3b')]=_[_0x3491('0x40')](_0x19a849[_0x3491('0x3b')],{'$or':_['map'](_0x19a849[_0x3491('0x36')],function(_0x37d5b1){var _0x51c42b={};_0x51c42b[_0x37d5b1]={'$like':'%'+_0x494700['query'][_0x3491('0x3d')]+'%'};return _0x51c42b;})});}_0x19a849=_[_0x3491('0x40')]({},_0x19a849,_0x494700[_0x3491('0x41')]);return _0x373171[_0x3491('0x4b')](_0x19a849);}})[_0x3491('0x27')](function(_0x1c9089){if(_0x1c9089){_0x2bcdc4=_0x1c9089[_0x3491('0x37')];if(!_0x494700['query'][_0x3491('0x38')](_0x3491('0x39'))){_0x19a849['limit']=qs['limit'](_0x494700['query'][_0x3491('0x1f')]);_0x19a849[_0x3491('0x1c')]=qs['offset'](_0x494700[_0x3491('0x32')][_0x3491('0x1c')]);}return _0x373171[_0x3491('0x4b')](_0x19a849);}})[_0x3491('0x27')](function(_0x4ea2d1){if(_0x4ea2d1){return _0x4ea2d1?{'count':_0x2bcdc4,'rows':_0x4ea2d1}:null;}})[_0x3491('0x27')](respondWithResult(_0x52b960,null))['catch'](handleError(_0x52b960,null));};exports[_0x3491('0x4f')]=function(_0x2e1ae8,_0x2000b4,_0x262a47){var _0x1b1bc7={};var _0x35236a={};var _0x365581;var _0x2c52f4;return db[_0x3491('0x2e')][_0x3491('0x4c')]({'where':{'id':_0x2e1ae8[_0x3491('0x47')]['id']}})['then'](handleEntityNotFound(_0x2000b4,null))[_0x3491('0x27')](function(_0x5a3ea0){if(_0x5a3ea0){_0x365581=_0x5a3ea0;_0x35236a[_0x3491('0x31')]=_[_0x3491('0x33')](db[_0x3491('0x4d')][_0x3491('0x2f')]);_0x35236a[_0x3491('0x32')]=_[_0x3491('0x33')](_0x2e1ae8['query']);_0x35236a['filters']=_['intersection'](_0x35236a[_0x3491('0x31')],_0x35236a[_0x3491('0x32')]);_0x1b1bc7[_0x3491('0x36')]=_['intersection'](_0x35236a[_0x3491('0x31')],qs['fields'](_0x2e1ae8[_0x3491('0x32')]['fields']));_0x1b1bc7['attributes']=_0x1b1bc7[_0x3491('0x36')][_0x3491('0x37')]?_0x1b1bc7[_0x3491('0x36')]:_0x35236a[_0x3491('0x31')];_0x1b1bc7[_0x3491('0x4e')]=qs[_0x3491('0x3a')](_0x2e1ae8[_0x3491('0x32')]['sort']);_0x1b1bc7[_0x3491('0x3b')]=qs[_0x3491('0x3c')](_[_0x3491('0x50')](_0x2e1ae8[_0x3491('0x32')],_0x35236a[_0x3491('0x3c')]));if(_0x2e1ae8[_0x3491('0x32')]['filter']){_0x1b1bc7[_0x3491('0x3b')]=_[_0x3491('0x40')](_0x1b1bc7['where'],{'$or':_[_0x3491('0x2d')](_0x1b1bc7[_0x3491('0x36')],function(_0x4ef69f){var _0x2540bb={};_0x2540bb[_0x4ef69f]={'$like':'%'+_0x2e1ae8['query']['filter']+'%'};return _0x2540bb;})});}_0x1b1bc7=_[_0x3491('0x40')]({},_0x1b1bc7,_0x2e1ae8[_0x3491('0x41')]);return _0x365581[_0x3491('0x4f')](_0x1b1bc7);}})[_0x3491('0x27')](function(_0x759626){if(_0x759626){_0x2c52f4=_0x759626['length'];if(!_0x2e1ae8[_0x3491('0x32')][_0x3491('0x38')](_0x3491('0x39'))){_0x1b1bc7[_0x3491('0x1f')]=qs[_0x3491('0x1f')](_0x2e1ae8['query'][_0x3491('0x1f')]);_0x1b1bc7[_0x3491('0x1c')]=qs[_0x3491('0x1c')](_0x2e1ae8[_0x3491('0x32')][_0x3491('0x1c')]);}return _0x365581['getSubjects'](_0x1b1bc7);}})['then'](function(_0x5b3ee4){if(_0x5b3ee4){return _0x5b3ee4?{'count':_0x2c52f4,'rows':_0x5b3ee4}:null;}})['then'](respondWithResult(_0x2000b4,null))['catch'](handleError(_0x2000b4,null));};exports[_0x3491('0x51')]=function(_0x3a9717,_0x5de7d5,_0x46e2ff){var _0x2a58de={};var _0x11333d={};var _0x39c911;var _0x187c5e;return db[_0x3491('0x2e')][_0x3491('0x4c')]({'where':{'id':_0x3a9717[_0x3491('0x47')]['id']}})[_0x3491('0x27')](handleEntityNotFound(_0x5de7d5,null))[_0x3491('0x27')](function(_0x9a8988){if(_0x9a8988){_0x39c911=_0x9a8988;_0x11333d[_0x3491('0x31')]=_['keys'](db[_0x3491('0x4d')]['rawAttributes']);_0x11333d['query']=_[_0x3491('0x33')](_0x3a9717['query']);_0x11333d[_0x3491('0x3c')]=_['intersection'](_0x11333d[_0x3491('0x31')],_0x11333d[_0x3491('0x32')]);_0x2a58de[_0x3491('0x36')]=_[_0x3491('0x34')](_0x11333d[_0x3491('0x31')],qs[_0x3491('0x35')](_0x3a9717[_0x3491('0x32')][_0x3491('0x35')]));_0x2a58de[_0x3491('0x36')]=_0x2a58de['attributes'][_0x3491('0x37')]?_0x2a58de[_0x3491('0x36')]:_0x11333d[_0x3491('0x31')];_0x2a58de['order']=qs[_0x3491('0x3a')](_0x3a9717[_0x3491('0x32')][_0x3491('0x3a')]);_0x2a58de[_0x3491('0x3b')]=qs['filters'](_[_0x3491('0x50')](_0x3a9717[_0x3491('0x32')],_0x11333d[_0x3491('0x3c')]));if(_0x3a9717[_0x3491('0x32')]['filter']){_0x2a58de['where']=_[_0x3491('0x40')](_0x2a58de[_0x3491('0x3b')],{'$or':_['map'](_0x2a58de[_0x3491('0x36')],function(_0x43f68c){var _0x1192df={};_0x1192df[_0x43f68c]={'$like':'%'+_0x3a9717[_0x3491('0x32')][_0x3491('0x3d')]+'%'};return _0x1192df;})});}_0x2a58de=_[_0x3491('0x40')]({},_0x2a58de,_0x3a9717[_0x3491('0x41')]);return _0x39c911[_0x3491('0x51')](_0x2a58de);}})[_0x3491('0x27')](function(_0x48a97e){if(_0x48a97e){_0x187c5e=_0x48a97e[_0x3491('0x37')];if(!_0x3a9717[_0x3491('0x32')][_0x3491('0x38')](_0x3491('0x39'))){_0x2a58de['limit']=qs[_0x3491('0x1f')](_0x3a9717['query'][_0x3491('0x1f')]);_0x2a58de['offset']=qs[_0x3491('0x1c')](_0x3a9717[_0x3491('0x32')][_0x3491('0x1c')]);}return _0x39c911[_0x3491('0x51')](_0x2a58de);}})['then'](function(_0x174016){if(_0x174016){return _0x174016?{'count':_0x187c5e,'rows':_0x174016}:null;}})[_0x3491('0x27')](respondWithResult(_0x5de7d5,null))[_0x3491('0x45')](handleError(_0x5de7d5,null));};
\ No newline at end of file
+var _0x5098=['sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','create','body','find','getFields','findOne','ZohoField','length','getSubjects','nolimit','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','limit','count','status','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','index','ZohoConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','order'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5098,0x6c));var _0x8509=function(_0x1e7823,_0x48fd00){_0x1e7823=_0x1e7823-0x0;var _0x12ac82=_0x5098[_0x1e7823];return _0x12ac82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8509('0x0'));var zipdir=require(_0x8509('0x1'));var jsonpatch=require(_0x8509('0x2'));var rp=require(_0x8509('0x3'));var moment=require(_0x8509('0x4'));var BPromise=require(_0x8509('0x5'));var Mustache=require(_0x8509('0x6'));var util=require(_0x8509('0x7'));var path=require(_0x8509('0x8'));var sox=require(_0x8509('0x9'));var csv=require(_0x8509('0xa'));var ejs=require(_0x8509('0xb'));var fs=require('fs');var fs_extra=require(_0x8509('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8509('0xd'));var jsforce=require(_0x8509('0xe'));var deskjs=require(_0x8509('0xf'));var toCsv=require(_0x8509('0xa'));var querystring=require(_0x8509('0x10'));var Papa=require(_0x8509('0x11'));var Redis=require(_0x8509('0x12'));var authService=require(_0x8509('0x13'));var qs=require(_0x8509('0x14'));var as=require(_0x8509('0x15'));var hardwareService=require(_0x8509('0x16'));var logger=require(_0x8509('0x17'))(_0x8509('0x18'));var utils=require(_0x8509('0x19'));var config=require(_0x8509('0x1a'));var licenseUtil=require(_0x8509('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2cbe82,_0x2477b6){_0x2477b6=_0x2477b6||0xcc;return function(_0x3a6789){if(_0x3a6789){return _0x2cbe82[_0x8509('0x1c')](_0x2477b6);}return _0x2cbe82['status'](_0x2477b6)['end']();};}function respondWithResult(_0x59d0bb,_0x34e9f7){_0x34e9f7=_0x34e9f7||0xc8;return function(_0x26c61e){if(_0x26c61e){return _0x59d0bb['status'](_0x34e9f7)[_0x8509('0x1d')](_0x26c61e);}};}function respondWithFilteredResult(_0x3df965,_0x41c284){return function(_0x36806b){if(_0x36806b){var _0x38992a=typeof _0x41c284[_0x8509('0x1e')]==='undefined'&&typeof _0x41c284[_0x8509('0x1f')]==='undefined';var _0x41b814=_0x36806b[_0x8509('0x20')];var _0x3efb7e=_0x38992a?0x0:_0x41c284['offset'];var _0x3bcf41=_0x38992a?_0x36806b[_0x8509('0x20')]:_0x41c284[_0x8509('0x1e')]+_0x41c284[_0x8509('0x1f')];var _0x1b11e3;if(_0x3bcf41>=_0x41b814){_0x3bcf41=_0x41b814;_0x1b11e3=0xc8;}else{_0x1b11e3=0xce;}_0x3df965[_0x8509('0x21')](_0x1b11e3);return _0x3df965[_0x8509('0x22')](_0x8509('0x23'),_0x3efb7e+'-'+_0x3bcf41+'/'+_0x41b814)[_0x8509('0x1d')](_0x36806b);}return null;};}function patchUpdates(_0x18ebab){return function(_0x570eec){try{jsonpatch['apply'](_0x570eec,_0x18ebab,!![]);}catch(_0x5c2dd1){return BPromise[_0x8509('0x24')](_0x5c2dd1);}return _0x570eec[_0x8509('0x25')]();};}function saveUpdates(_0x1835d1,_0x3e0e65){return function(_0x2d27b9){if(_0x2d27b9){return _0x2d27b9[_0x8509('0x26')](_0x1835d1)[_0x8509('0x27')](function(_0x60c1c1){return _0x60c1c1;});}return null;};}function removeEntity(_0x50017e,_0x49d89d){return function(_0x2da4b5){if(_0x2da4b5){return _0x2da4b5[_0x8509('0x28')]()[_0x8509('0x27')](function(){_0x50017e[_0x8509('0x21')](0xcc)[_0x8509('0x29')]();});}};}function handleEntityNotFound(_0x466e5f,_0x2fa181){return function(_0x39e50f){if(!_0x39e50f){_0x466e5f['sendStatus'](0x194);}return _0x39e50f;};}function handleError(_0x4e80a9,_0xd5f5aa){_0xd5f5aa=_0xd5f5aa||0x1f4;return function(_0x3ef288){logger[_0x8509('0x2a')](_0x3ef288[_0x8509('0x2b')]);if(_0x3ef288[_0x8509('0x2c')]){delete _0x3ef288[_0x8509('0x2c')];}_0x4e80a9[_0x8509('0x21')](_0xd5f5aa)['send'](_0x3ef288);};}exports[_0x8509('0x2d')]=function(_0x10af72,_0x3180ab){var _0x2d6ed4={},_0x340ffd={},_0x28ebc6={'count':0x0,'rows':[]};var _0x28d5f4=_['map'](db[_0x8509('0x2e')][_0x8509('0x2f')],function(_0x111d1a){return{'name':_0x111d1a[_0x8509('0x30')],'type':_0x111d1a[_0x8509('0x31')][_0x8509('0x32')]};});_0x340ffd[_0x8509('0x33')]=_[_0x8509('0x34')](_0x28d5f4,_0x8509('0x2c'));_0x340ffd[_0x8509('0x35')]=_['keys'](_0x10af72[_0x8509('0x35')]);_0x340ffd[_0x8509('0x36')]=_[_0x8509('0x37')](_0x340ffd[_0x8509('0x33')],_0x340ffd['query']);_0x2d6ed4['attributes']=_['intersection'](_0x340ffd['model'],qs[_0x8509('0x38')](_0x10af72[_0x8509('0x35')]['fields']));_0x2d6ed4[_0x8509('0x39')]=_0x2d6ed4[_0x8509('0x39')]['length']?_0x2d6ed4[_0x8509('0x39')]:_0x340ffd[_0x8509('0x33')];if(!_0x10af72[_0x8509('0x35')][_0x8509('0x3a')]('nolimit')){_0x2d6ed4[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0x10af72[_0x8509('0x35')][_0x8509('0x1f')]);_0x2d6ed4[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x10af72['query'][_0x8509('0x1e')]);}_0x2d6ed4[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x10af72[_0x8509('0x35')][_0x8509('0x3c')]);_0x2d6ed4[_0x8509('0x3d')]=qs[_0x8509('0x36')](_[_0x8509('0x3e')](_0x10af72[_0x8509('0x35')],_0x340ffd[_0x8509('0x36')]),_0x28d5f4);if(_0x10af72[_0x8509('0x35')][_0x8509('0x3f')]){_0x2d6ed4[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x2d6ed4[_0x8509('0x3d')],{'$or':_['map'](_0x28d5f4,function(_0x2d77a3){if(_0x2d77a3[_0x8509('0x31')]!==_0x8509('0x41')){var _0x3349bf={};_0x3349bf[_0x2d77a3[_0x8509('0x2c')]]={'$like':'%'+_0x10af72[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3349bf;}})});}_0x2d6ed4=_[_0x8509('0x40')]({},_0x2d6ed4,_0x10af72[_0x8509('0x42')]);var _0x4588df={'where':_0x2d6ed4[_0x8509('0x3d')]};return db[_0x8509('0x2e')][_0x8509('0x20')](_0x4588df)['then'](function(_0xfa7495){_0x28ebc6['count']=_0xfa7495;if(_0x10af72[_0x8509('0x35')][_0x8509('0x43')]){_0x2d6ed4[_0x8509('0x44')]=[{'all':!![]}];}return db[_0x8509('0x2e')]['findAll'](_0x2d6ed4);})[_0x8509('0x27')](function(_0x277c58){_0x28ebc6[_0x8509('0x45')]=_0x277c58;return _0x28ebc6;})[_0x8509('0x27')](respondWithFilteredResult(_0x3180ab,_0x2d6ed4))[_0x8509('0x46')](handleError(_0x3180ab,null));};exports[_0x8509('0x47')]=function(_0xf43652,_0x3affd9){var _0x1915c6={'raw':![],'where':{'id':_0xf43652[_0x8509('0x48')]['id']}},_0x26e181={};_0x26e181[_0x8509('0x33')]=_['keys'](db[_0x8509('0x2e')][_0x8509('0x2f')]);_0x26e181[_0x8509('0x35')]=_[_0x8509('0x49')](_0xf43652[_0x8509('0x35')]);_0x26e181[_0x8509('0x36')]=_['intersection'](_0x26e181[_0x8509('0x33')],_0x26e181[_0x8509('0x35')]);_0x1915c6['attributes']=_[_0x8509('0x37')](_0x26e181['model'],qs[_0x8509('0x38')](_0xf43652[_0x8509('0x35')][_0x8509('0x38')]));_0x1915c6['attributes']=_0x1915c6['attributes']['length']?_0x1915c6['attributes']:_0x26e181[_0x8509('0x33')];if(_0xf43652[_0x8509('0x35')][_0x8509('0x43')]){_0x1915c6['include']=[{'all':!![]}];}_0x1915c6=_[_0x8509('0x40')]({},_0x1915c6,_0xf43652[_0x8509('0x42')]);return db['ZohoConfiguration']['find'](_0x1915c6)[_0x8509('0x27')](handleEntityNotFound(_0x3affd9,null))[_0x8509('0x27')](respondWithResult(_0x3affd9,null))[_0x8509('0x46')](handleError(_0x3affd9,null));};exports[_0x8509('0x4a')]=function(_0x19295f,_0x5b7466){return db[_0x8509('0x2e')]['create'](_0x19295f[_0x8509('0x4b')],{})[_0x8509('0x27')](respondWithResult(_0x5b7466,0xc9))[_0x8509('0x46')](handleError(_0x5b7466,null));};exports['update']=function(_0x5ef6dc,_0x4289bb){if(_0x5ef6dc[_0x8509('0x4b')]['id']){delete _0x5ef6dc[_0x8509('0x4b')]['id'];}return db['ZohoConfiguration'][_0x8509('0x4c')]({'where':{'id':_0x5ef6dc['params']['id']}})['then'](handleEntityNotFound(_0x4289bb,null))[_0x8509('0x27')](saveUpdates(_0x5ef6dc[_0x8509('0x4b')],null))['then'](respondWithResult(_0x4289bb,null))['catch'](handleError(_0x4289bb,null));};exports['destroy']=function(_0x554e55,_0x26bbce){return db[_0x8509('0x2e')]['find']({'where':{'id':_0x554e55['params']['id']}})['then'](handleEntityNotFound(_0x26bbce,null))[_0x8509('0x27')](removeEntity(_0x26bbce,null))[_0x8509('0x46')](handleError(_0x26bbce,null));};exports[_0x8509('0x4d')]=function(_0x107438,_0x491a52,_0x5874aa){var _0x5e96bb={};var _0x363d65={};var _0x1fe2b2;var _0x369e98;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0x107438[_0x8509('0x48')]['id']}})[_0x8509('0x27')](handleEntityNotFound(_0x491a52,null))[_0x8509('0x27')](function(_0x49d791){if(_0x49d791){_0x1fe2b2=_0x49d791;_0x363d65[_0x8509('0x33')]=_[_0x8509('0x49')](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x363d65[_0x8509('0x35')]=_[_0x8509('0x49')](_0x107438['query']);_0x363d65['filters']=_[_0x8509('0x37')](_0x363d65['model'],_0x363d65['query']);_0x5e96bb[_0x8509('0x39')]=_[_0x8509('0x37')](_0x363d65['model'],qs[_0x8509('0x38')](_0x107438['query'][_0x8509('0x38')]));_0x5e96bb[_0x8509('0x39')]=_0x5e96bb['attributes'][_0x8509('0x50')]?_0x5e96bb[_0x8509('0x39')]:_0x363d65[_0x8509('0x33')];_0x5e96bb[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x107438['query'][_0x8509('0x3c')]);_0x5e96bb[_0x8509('0x3d')]=qs['filters'](_[_0x8509('0x3e')](_0x107438[_0x8509('0x35')],_0x363d65[_0x8509('0x36')]));if(_0x107438['query'][_0x8509('0x3f')]){_0x5e96bb[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x5e96bb[_0x8509('0x3d')],{'$or':_[_0x8509('0x34')](_0x5e96bb[_0x8509('0x39')],function(_0x5c151e){var _0x3fed66={};_0x3fed66[_0x5c151e]={'$like':'%'+_0x107438[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3fed66;})});}_0x5e96bb=_[_0x8509('0x40')]({},_0x5e96bb,_0x107438[_0x8509('0x42')]);return _0x1fe2b2[_0x8509('0x4d')](_0x5e96bb);}})['then'](function(_0x51a554){if(_0x51a554){_0x369e98=_0x51a554[_0x8509('0x50')];if(!_0x107438[_0x8509('0x35')][_0x8509('0x3a')]('nolimit')){_0x5e96bb['limit']=qs['limit'](_0x107438[_0x8509('0x35')]['limit']);_0x5e96bb[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x107438['query'][_0x8509('0x1e')]);}return _0x1fe2b2[_0x8509('0x4d')](_0x5e96bb);}})[_0x8509('0x27')](function(_0x3cac33){if(_0x3cac33){return _0x3cac33?{'count':_0x369e98,'rows':_0x3cac33}:null;}})['then'](respondWithResult(_0x491a52,null))[_0x8509('0x46')](handleError(_0x491a52,null));};exports['getSubjects']=function(_0xda4505,_0x5f0e1a,_0x4408b5){var _0x2eebee={};var _0x34e8af={};var _0x2f18ab;var _0x4b33f8;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0xda4505['params']['id']}})['then'](handleEntityNotFound(_0x5f0e1a,null))[_0x8509('0x27')](function(_0x2e861b){if(_0x2e861b){_0x2f18ab=_0x2e861b;_0x34e8af[_0x8509('0x33')]=_['keys'](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x34e8af[_0x8509('0x35')]=_[_0x8509('0x49')](_0xda4505['query']);_0x34e8af[_0x8509('0x36')]=_[_0x8509('0x37')](_0x34e8af[_0x8509('0x33')],_0x34e8af[_0x8509('0x35')]);_0x2eebee[_0x8509('0x39')]=_[_0x8509('0x37')](_0x34e8af['model'],qs[_0x8509('0x38')](_0xda4505[_0x8509('0x35')]['fields']));_0x2eebee['attributes']=_0x2eebee[_0x8509('0x39')][_0x8509('0x50')]?_0x2eebee[_0x8509('0x39')]:_0x34e8af[_0x8509('0x33')];_0x2eebee[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0xda4505[_0x8509('0x35')][_0x8509('0x3c')]);_0x2eebee['where']=qs[_0x8509('0x36')](_['pick'](_0xda4505[_0x8509('0x35')],_0x34e8af[_0x8509('0x36')]));if(_0xda4505[_0x8509('0x35')][_0x8509('0x3f')]){_0x2eebee[_0x8509('0x3d')]=_[_0x8509('0x40')](_0x2eebee[_0x8509('0x3d')],{'$or':_['map'](_0x2eebee[_0x8509('0x39')],function(_0x4e0db6){var _0x3f01db={};_0x3f01db[_0x4e0db6]={'$like':'%'+_0xda4505[_0x8509('0x35')][_0x8509('0x3f')]+'%'};return _0x3f01db;})});}_0x2eebee=_[_0x8509('0x40')]({},_0x2eebee,_0xda4505[_0x8509('0x42')]);return _0x2f18ab[_0x8509('0x51')](_0x2eebee);}})['then'](function(_0xc101ed){if(_0xc101ed){_0x4b33f8=_0xc101ed[_0x8509('0x50')];if(!_0xda4505[_0x8509('0x35')][_0x8509('0x3a')](_0x8509('0x52'))){_0x2eebee[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0xda4505[_0x8509('0x35')]['limit']);_0x2eebee[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0xda4505[_0x8509('0x35')][_0x8509('0x1e')]);}return _0x2f18ab[_0x8509('0x51')](_0x2eebee);}})[_0x8509('0x27')](function(_0x2a60f4){if(_0x2a60f4){return _0x2a60f4?{'count':_0x4b33f8,'rows':_0x2a60f4}:null;}})['then'](respondWithResult(_0x5f0e1a,null))['catch'](handleError(_0x5f0e1a,null));};exports['getDescriptions']=function(_0x467815,_0x499bdf,_0x3a2eed){var _0x212c0e={};var _0x11ab3d={};var _0x171a46;var _0x3afc5e;return db[_0x8509('0x2e')][_0x8509('0x4e')]({'where':{'id':_0x467815[_0x8509('0x48')]['id']}})[_0x8509('0x27')](handleEntityNotFound(_0x499bdf,null))[_0x8509('0x27')](function(_0x2281a6){if(_0x2281a6){_0x171a46=_0x2281a6;_0x11ab3d[_0x8509('0x33')]=_[_0x8509('0x49')](db[_0x8509('0x4f')][_0x8509('0x2f')]);_0x11ab3d[_0x8509('0x35')]=_['keys'](_0x467815['query']);_0x11ab3d[_0x8509('0x36')]=_['intersection'](_0x11ab3d['model'],_0x11ab3d['query']);_0x212c0e[_0x8509('0x39')]=_['intersection'](_0x11ab3d[_0x8509('0x33')],qs[_0x8509('0x38')](_0x467815['query'][_0x8509('0x38')]));_0x212c0e[_0x8509('0x39')]=_0x212c0e['attributes'][_0x8509('0x50')]?_0x212c0e[_0x8509('0x39')]:_0x11ab3d[_0x8509('0x33')];_0x212c0e[_0x8509('0x3b')]=qs[_0x8509('0x3c')](_0x467815['query']['sort']);_0x212c0e[_0x8509('0x3d')]=qs[_0x8509('0x36')](_[_0x8509('0x3e')](_0x467815['query'],_0x11ab3d['filters']));if(_0x467815[_0x8509('0x35')][_0x8509('0x3f')]){_0x212c0e[_0x8509('0x3d')]=_['merge'](_0x212c0e[_0x8509('0x3d')],{'$or':_['map'](_0x212c0e['attributes'],function(_0x7f62f2){var _0x2a0b3c={};_0x2a0b3c[_0x7f62f2]={'$like':'%'+_0x467815[_0x8509('0x35')]['filter']+'%'};return _0x2a0b3c;})});}_0x212c0e=_['merge']({},_0x212c0e,_0x467815['options']);return _0x171a46[_0x8509('0x53')](_0x212c0e);}})['then'](function(_0x56efbf){if(_0x56efbf){_0x3afc5e=_0x56efbf[_0x8509('0x50')];if(!_0x467815[_0x8509('0x35')][_0x8509('0x3a')](_0x8509('0x52'))){_0x212c0e[_0x8509('0x1f')]=qs[_0x8509('0x1f')](_0x467815['query'][_0x8509('0x1f')]);_0x212c0e[_0x8509('0x1e')]=qs[_0x8509('0x1e')](_0x467815[_0x8509('0x35')][_0x8509('0x1e')]);}return _0x171a46[_0x8509('0x53')](_0x212c0e);}})['then'](function(_0x41529e){if(_0x41529e){return _0x41529e?{'count':_0x3afc5e,'rows':_0x41529e}:null;}})[_0x8509('0x27')](respondWithResult(_0x499bdf,null))[_0x8509('0x46')](handleError(_0x499bdf,null));};
\ No newline at end of file
index 5bbe932..b27db2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c59=['exports','define','ZohoConfiguration','int_zoho_configurations','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x64b31d,_0x393b36){var _0x42c45b=function(_0x2d2323){while(--_0x2d2323){_0x64b31d['push'](_0x64b31d['shift']());}};_0x42c45b(++_0x393b36);}(_0x7c59,0x7c));var _0x97c5=function(_0x35f836,_0x40fa60){_0x35f836=_0x35f836-0x0;var _0xa3a9f1=_0x7c59[_0x35f836];return _0xa3a9f1;};'use strict';var _=require(_0x97c5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x97c5('0x1'));var moment=require(_0x97c5('0x2'));var BPromise=require(_0x97c5('0x3'));var rp=require(_0x97c5('0x4'));var fs=require('fs');var path=require(_0x97c5('0x5'));var rimraf=require(_0x97c5('0x6'));var config=require(_0x97c5('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0x97c5('0x8')]=function(_0x4ee3bd,_0x588de1){return _0x4ee3bd[_0x97c5('0x9')](_0x97c5('0xa'),attributes,{'tableName':_0x97c5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb96=['bluebird','request-promise','rimraf','./intZohoConfiguration.attributes','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger'];(function(_0x2b63c0,_0x290383){var _0x232713=function(_0xb8dc1a){while(--_0xb8dc1a){_0x2b63c0['push'](_0x2b63c0['shift']());}};_0x232713(++_0x290383);}(_0xeb96,0xde));var _0x6eb9=function(_0x17b82f,_0x24b69e){_0x17b82f=_0x17b82f-0x0;var _0x3822a8=_0xeb96[_0x17b82f];return _0x3822a8;};'use strict';var _=require(_0x6eb9('0x0'));var util=require(_0x6eb9('0x1'));var logger=require(_0x6eb9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6eb9('0x3'));var rp=require(_0x6eb9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6eb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x6eb9('0x6'));module['exports']=function(_0x2f45b2,_0x551c61){return _0x2f45b2['define'](_0x6eb9('0x7'),attributes,{'tableName':_0x6eb9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 225ac45..e81ecb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce05=['code','message','catch','util','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x1ea976,_0x14ef20){var _0x1a24c9=function(_0x5186a3){while(--_0x5186a3){_0x1ea976['push'](_0x1ea976['shift']());}};_0x1a24c9(++_0x14ef20);}(_0xce05,0x1ac));var _0x5ce0=function(_0x429fa7,_0x170571){_0x429fa7=_0x429fa7-0x0;var _0x40dd22=_0xce05[_0x429fa7];return _0x40dd22;};'use strict';var _=require('lodash');var util=require(_0x5ce0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ce0('0x1'))['db'];var utils=require(_0x5ce0('0x2'));var logger=require(_0x5ce0('0x3'))(_0x5ce0('0x4'));var config=require('../../config/environment');var jayson=require(_0x5ce0('0x5'));var client=jayson[_0x5ce0('0x6')][_0x5ce0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x249642,_0x895748,_0x1a2e59){return new BPromise(function(_0x5575ad,_0x37519f){return client['request'](_0x249642,_0x1a2e59)['then'](function(_0x2f9ac7){logger[_0x5ce0('0x8')](_0x5ce0('0x9'),_0x895748,_0x5ce0('0xa'));logger[_0x5ce0('0xb')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x895748,_0x5ce0('0xa'),JSON[_0x5ce0('0xc')](_0x2f9ac7));if(_0x2f9ac7['error']){if(_0x2f9ac7[_0x5ce0('0xd')][_0x5ce0('0xe')]===0x1f4){logger[_0x5ce0('0xd')](_0x5ce0('0x9'),_0x895748,_0x2f9ac7[_0x5ce0('0xd')][_0x5ce0('0xf')]);return _0x37519f(_0x2f9ac7[_0x5ce0('0xd')][_0x5ce0('0xf')]);}logger[_0x5ce0('0xd')](_0x5ce0('0x9'),_0x895748,_0x2f9ac7[_0x5ce0('0xd')]['message']);return _0x5575ad(_0x2f9ac7[_0x5ce0('0xd')][_0x5ce0('0xf')]);}else{logger[_0x5ce0('0x8')]('ZohoConfiguration,\x20%s,\x20%s',_0x895748,'request\x20sent');_0x5575ad(_0x2f9ac7['result'][_0x5ce0('0xf')]);}})[_0x5ce0('0x10')](function(_0x520ccf){logger[_0x5ce0('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x895748,_0x520ccf);_0x37519f(_0x520ccf);});});}
\ No newline at end of file
+var _0x3216=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','catch','util','randomstring','ioredis','../../mysqldb'];(function(_0x56219b,_0xac9104){var _0x295fe2=function(_0x2bc287){while(--_0x2bc287){_0x56219b['push'](_0x56219b['shift']());}};_0x295fe2(++_0xac9104);}(_0x3216,0x188));var _0x6321=function(_0x3742c7,_0x1a572a){_0x3742c7=_0x3742c7-0x0;var _0x5b4843=_0x3216[_0x3742c7];return _0x5b4843;};'use strict';var _=require('lodash');var util=require(_0x6321('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6321('0x1'));var fs=require('fs');var Redis=require(_0x6321('0x2'));var db=require(_0x6321('0x3'))['db'];var utils=require(_0x6321('0x4'));var logger=require(_0x6321('0x5'))(_0x6321('0x6'));var config=require(_0x6321('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6321('0x8')][_0x6321('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46696e,_0x5a358a,_0x33d718){return new BPromise(function(_0x3d1c2d,_0x41fe8a){return client[_0x6321('0xa')](_0x46696e,_0x33d718)[_0x6321('0xb')](function(_0x5b1965){logger[_0x6321('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x5a358a,_0x6321('0xd'));logger[_0x6321('0xe')](_0x6321('0xf'),_0x5a358a,'request\x20sent',JSON[_0x6321('0x10')](_0x5b1965));if(_0x5b1965[_0x6321('0x11')]){if(_0x5b1965[_0x6321('0x11')][_0x6321('0x12')]===0x1f4){logger[_0x6321('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x5a358a,_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);return _0x41fe8a(_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);}logger[_0x6321('0x11')](_0x6321('0x14'),_0x5a358a,_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);return _0x3d1c2d(_0x5b1965[_0x6321('0x11')][_0x6321('0x13')]);}else{logger[_0x6321('0xc')](_0x6321('0x14'),_0x5a358a,_0x6321('0xd'));_0x3d1c2d(_0x5b1965['result']['message']);}})[_0x6321('0x15')](function(_0x4cf2f5){logger[_0x6321('0x11')](_0x6321('0x14'),_0x5a358a,_0x4cf2f5);_0x41fe8a(_0x4cf2f5);});});}
\ No newline at end of file
index 7676f87..7884e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe1=['put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create'];(function(_0x5339f7,_0x10fe11){var _0x10fd9d=function(_0x1d043f){while(--_0x1d043f){_0x5339f7['push'](_0x5339f7['shift']());}};_0x10fd9d(++_0x10fe11);}(_0xebe1,0xf2));var _0x1ebe=function(_0x386005,_0x54cab2){_0x386005=_0x386005-0x0;var _0xe61ca9=_0xebe1[_0x386005];return _0xe61ca9;};'use strict';var multer=require(_0x1ebe('0x0'));var util=require(_0x1ebe('0x1'));var path=require(_0x1ebe('0x2'));var timeout=require(_0x1ebe('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1ebe('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1ebe('0x5'));var config=require(_0x1ebe('0x6'));var controller=require('./intZohoField.controller');router[_0x1ebe('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1ebe('0x7')](_0x1ebe('0x8'),auth[_0x1ebe('0x9')](),controller[_0x1ebe('0xa')]);router[_0x1ebe('0xb')]('/',auth[_0x1ebe('0x9')](),controller[_0x1ebe('0xc')]);router[_0x1ebe('0xd')](_0x1ebe('0x8'),auth[_0x1ebe('0x9')](),controller['update']);router[_0x1ebe('0xe')](_0x1ebe('0x8'),auth['isAuthenticated'](),controller[_0x1ebe('0xf')]);module[_0x1ebe('0x10')]=router;
\ No newline at end of file
+var _0xd322=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','create','put'];(function(_0xbf5159,_0x5c3ba5){var _0x58fc04=function(_0x3f53b0){while(--_0x3f53b0){_0xbf5159['push'](_0xbf5159['shift']());}};_0x58fc04(++_0x5c3ba5);}(_0xd322,0x1ab));var _0x2d32=function(_0x43121e,_0x4fbb32){_0x43121e=_0x43121e-0x0;var _0x59c44c=_0xd322[_0x43121e];return _0x59c44c;};'use strict';var multer=require(_0x2d32('0x0'));var util=require(_0x2d32('0x1'));var path=require('path');var timeout=require(_0x2d32('0x2'));var express=require('express');var router=express[_0x2d32('0x3')]();var fs_extra=require(_0x2d32('0x4'));var auth=require(_0x2d32('0x5'));var interaction=require(_0x2d32('0x6'));var config=require(_0x2d32('0x7'));var controller=require(_0x2d32('0x8'));router[_0x2d32('0x9')]('/',auth[_0x2d32('0xa')](),controller[_0x2d32('0xb')]);router[_0x2d32('0x9')](_0x2d32('0xc'),auth[_0x2d32('0xa')](),controller['show']);router['post']('/',auth[_0x2d32('0xa')](),controller[_0x2d32('0xd')]);router[_0x2d32('0xe')](_0x2d32('0xc'),auth[_0x2d32('0xa')](),controller['update']);router[_0x2d32('0xf')](_0x2d32('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x2d32('0x10')]=router;
\ No newline at end of file
index ccaad75..8922e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9067=['string','customVariable','keyValue','STRING','ENUM','variable','BOOLEAN'];(function(_0x3fa4bd,_0x14a72d){var _0x358c95=function(_0x55c7fc){while(--_0x55c7fc){_0x3fa4bd['push'](_0x3fa4bd['shift']());}};_0x358c95(++_0x14a72d);}(_0x9067,0xf5));var _0x7906=function(_0x3198e9,_0x2d44de){_0x3198e9=_0x3198e9-0x0;var _0x25e20f=_0x9067[_0x3198e9];return _0x25e20f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x7906('0x0'),'variable',_0x7906('0x1'),_0x7906('0x2'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x7906('0x3')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7906('0x4')]('string',_0x7906('0x5'),'customVariable')},'keyContent':{'type':Sequelize[_0x7906('0x3')]},'idField':{'type':Sequelize[_0x7906('0x3')]},'nameField':{'type':Sequelize[_0x7906('0x3')]},'customField':{'type':Sequelize[_0x7906('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7906('0x3')]}};
\ No newline at end of file
+var _0x7b20=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x23b12a,_0x644fd4){var _0x3ff015=function(_0x3f48d9){while(--_0x3f48d9){_0x23b12a['push'](_0x23b12a['shift']());}};_0x3ff015(++_0x644fd4);}(_0x7b20,0x9c));var _0x07b2=function(_0x440048,_0x3b819c){_0x440048=_0x440048-0x0;var _0x5b0d64=_0x7b20[_0x440048];return _0x5b0d64;};'use strict';var Sequelize=require(_0x07b2('0x0'));module[_0x07b2('0x1')]={'type':{'type':Sequelize[_0x07b2('0x2')](_0x07b2('0x3'),_0x07b2('0x4'),_0x07b2('0x5'),_0x07b2('0x6'),_0x07b2('0x7')),'defaultValue':_0x07b2('0x3')},'content':{'type':Sequelize[_0x07b2('0x8')]},'key':{'type':Sequelize[_0x07b2('0x8')]},'keyType':{'type':Sequelize[_0x07b2('0x2')](_0x07b2('0x3'),'variable',_0x07b2('0x5'))},'keyContent':{'type':Sequelize[_0x07b2('0x8')]},'idField':{'type':Sequelize[_0x07b2('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x07b2('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x07b2('0x8')]}};
\ No newline at end of file
index 73c6855..fa28e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b4=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','ZohoField','rawAttributes','fieldName','name','query','keys','intersection','model','fields','attributes','length','nolimit','order','where','filters','pick','merge','filter','options','includeAll','include','findAll','catch','show','params','find','body','eml-format','rimraf','fast-json-patch','moment','util','path','to-csv'];(function(_0x32ebb2,_0x5760fd){var _0x3ec997=function(_0x1ef87e){while(--_0x1ef87e){_0x32ebb2['push'](_0x32ebb2['shift']());}};_0x3ec997(++_0x5760fd);}(_0xd5b4,0x157));var _0x4d5b=function(_0x27fb96,_0x387463){_0x27fb96=_0x27fb96-0x0;var _0x4ad659=_0xd5b4[_0x27fb96];return _0x4ad659;};'use strict';var emlformat=require(_0x4d5b('0x0'));var rimraf=require(_0x4d5b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d5b('0x2'));var rp=require('request-promise');var moment=require(_0x4d5b('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4d5b('0x4'));var path=require(_0x4d5b('0x5'));var sox=require('sox');var csv=require(_0x4d5b('0x6'));var ejs=require(_0x4d5b('0x7'));var fs=require('fs');var fs_extra=require(_0x4d5b('0x8'));var _=require(_0x4d5b('0x9'));var squel=require(_0x4d5b('0xa'));var crypto=require(_0x4d5b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4d5b('0xc'));var toCsv=require(_0x4d5b('0x6'));var querystring=require(_0x4d5b('0xd'));var Papa=require(_0x4d5b('0xe'));var Redis=require(_0x4d5b('0xf'));var authService=require(_0x4d5b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4d5b('0x11'));var hardwareService=require(_0x4d5b('0x12'));var logger=require('../../config/logger')(_0x4d5b('0x13'));var utils=require(_0x4d5b('0x14'));var config=require(_0x4d5b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d5b('0x16'))['db'];function respondWithStatusCode(_0x5e927a,_0x46288d){_0x46288d=_0x46288d||0xcc;return function(_0x1d45b9){if(_0x1d45b9){return _0x5e927a[_0x4d5b('0x17')](_0x46288d);}return _0x5e927a[_0x4d5b('0x18')](_0x46288d)[_0x4d5b('0x19')]();};}function respondWithResult(_0x54c6fa,_0x4ded27){_0x4ded27=_0x4ded27||0xc8;return function(_0x25d32a){if(_0x25d32a){return _0x54c6fa[_0x4d5b('0x18')](_0x4ded27)[_0x4d5b('0x1a')](_0x25d32a);}};}function respondWithFilteredResult(_0xa3ff40,_0x3037b8){return function(_0x145ce4){if(_0x145ce4){var _0x2a9165=typeof _0x3037b8['offset']==='undefined'&&typeof _0x3037b8[_0x4d5b('0x1b')]===_0x4d5b('0x1c');var _0x36bf6b=_0x145ce4['count'];var _0x2f3c88=_0x2a9165?0x0:_0x3037b8[_0x4d5b('0x1d')];var _0x53c554=_0x2a9165?_0x145ce4[_0x4d5b('0x1e')]:_0x3037b8[_0x4d5b('0x1d')]+_0x3037b8[_0x4d5b('0x1b')];var _0x1ef649;if(_0x53c554>=_0x36bf6b){_0x53c554=_0x36bf6b;_0x1ef649=0xc8;}else{_0x1ef649=0xce;}_0xa3ff40[_0x4d5b('0x18')](_0x1ef649);return _0xa3ff40['set'](_0x4d5b('0x1f'),_0x2f3c88+'-'+_0x53c554+'/'+_0x36bf6b)[_0x4d5b('0x1a')](_0x145ce4);}return null;};}function patchUpdates(_0xba49ec){return function(_0x27a9a4){try{jsonpatch[_0x4d5b('0x20')](_0x27a9a4,_0xba49ec,!![]);}catch(_0x253e9a){return BPromise[_0x4d5b('0x21')](_0x253e9a);}return _0x27a9a4[_0x4d5b('0x22')]();};}function saveUpdates(_0x43d548,_0x751401){return function(_0x1b2c28){if(_0x1b2c28){return _0x1b2c28[_0x4d5b('0x23')](_0x43d548)[_0x4d5b('0x24')](function(_0x148137){return _0x148137;});}return null;};}function removeEntity(_0x51bfe3,_0x1cc248){return function(_0xc90f86){if(_0xc90f86){return _0xc90f86[_0x4d5b('0x25')]()[_0x4d5b('0x24')](function(){_0x51bfe3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fc178,_0x56f595){return function(_0x2810d6){if(!_0x2810d6){_0x3fc178[_0x4d5b('0x17')](0x194);}return _0x2810d6;};}function handleError(_0x31d4eb,_0x36cf11){_0x36cf11=_0x36cf11||0x1f4;return function(_0x4b57f9){logger[_0x4d5b('0x26')](_0x4b57f9[_0x4d5b('0x27')]);if(_0x4b57f9['name']){delete _0x4b57f9['name'];}_0x31d4eb[_0x4d5b('0x18')](_0x36cf11)[_0x4d5b('0x28')](_0x4b57f9);};}exports[_0x4d5b('0x29')]=function(_0x38b500,_0x274d7a){var _0x372d58={},_0x54dd09={},_0x5b9367={'count':0x0,'rows':[]};var _0x5714ae=_[_0x4d5b('0x2a')](db[_0x4d5b('0x2b')][_0x4d5b('0x2c')],function(_0x113079){return{'name':_0x113079[_0x4d5b('0x2d')],'type':_0x113079['type']['key']};});_0x54dd09['model']=_[_0x4d5b('0x2a')](_0x5714ae,_0x4d5b('0x2e'));_0x54dd09[_0x4d5b('0x2f')]=_[_0x4d5b('0x30')](_0x38b500[_0x4d5b('0x2f')]);_0x54dd09['filters']=_[_0x4d5b('0x31')](_0x54dd09[_0x4d5b('0x32')],_0x54dd09['query']);_0x372d58['attributes']=_[_0x4d5b('0x31')](_0x54dd09[_0x4d5b('0x32')],qs[_0x4d5b('0x33')](_0x38b500[_0x4d5b('0x2f')][_0x4d5b('0x33')]));_0x372d58[_0x4d5b('0x34')]=_0x372d58[_0x4d5b('0x34')][_0x4d5b('0x35')]?_0x372d58[_0x4d5b('0x34')]:_0x54dd09['model'];if(!_0x38b500['query']['hasOwnProperty'](_0x4d5b('0x36'))){_0x372d58[_0x4d5b('0x1b')]=qs['limit'](_0x38b500[_0x4d5b('0x2f')][_0x4d5b('0x1b')]);_0x372d58[_0x4d5b('0x1d')]=qs['offset'](_0x38b500[_0x4d5b('0x2f')][_0x4d5b('0x1d')]);}_0x372d58[_0x4d5b('0x37')]=qs['sort'](_0x38b500[_0x4d5b('0x2f')]['sort']);_0x372d58[_0x4d5b('0x38')]=qs[_0x4d5b('0x39')](_[_0x4d5b('0x3a')](_0x38b500[_0x4d5b('0x2f')],_0x54dd09[_0x4d5b('0x39')]),_0x5714ae);if(_0x38b500[_0x4d5b('0x2f')]['filter']){_0x372d58['where']=_[_0x4d5b('0x3b')](_0x372d58[_0x4d5b('0x38')],{'$or':_[_0x4d5b('0x2a')](_0x5714ae,function(_0x3437a2){if(_0x3437a2['type']!=='VIRTUAL'){var _0x150f26={};_0x150f26[_0x3437a2[_0x4d5b('0x2e')]]={'$like':'%'+_0x38b500[_0x4d5b('0x2f')][_0x4d5b('0x3c')]+'%'};return _0x150f26;}})});}_0x372d58=_[_0x4d5b('0x3b')]({},_0x372d58,_0x38b500[_0x4d5b('0x3d')]);var _0x27b3b3={'where':_0x372d58[_0x4d5b('0x38')]};return db['ZohoField']['count'](_0x27b3b3)[_0x4d5b('0x24')](function(_0x18e0c9){_0x5b9367[_0x4d5b('0x1e')]=_0x18e0c9;if(_0x38b500[_0x4d5b('0x2f')][_0x4d5b('0x3e')]){_0x372d58[_0x4d5b('0x3f')]=[{'all':!![]}];}return db[_0x4d5b('0x2b')][_0x4d5b('0x40')](_0x372d58);})[_0x4d5b('0x24')](function(_0x1d7d5c){_0x5b9367['rows']=_0x1d7d5c;return _0x5b9367;})[_0x4d5b('0x24')](respondWithFilteredResult(_0x274d7a,_0x372d58))[_0x4d5b('0x41')](handleError(_0x274d7a,null));};exports[_0x4d5b('0x42')]=function(_0x3d587e,_0x211954){var _0x3fd813={'raw':!![],'where':{'id':_0x3d587e[_0x4d5b('0x43')]['id']}},_0x3e7299={};_0x3e7299[_0x4d5b('0x32')]=_[_0x4d5b('0x30')](db[_0x4d5b('0x2b')]['rawAttributes']);_0x3e7299[_0x4d5b('0x2f')]=_['keys'](_0x3d587e['query']);_0x3e7299[_0x4d5b('0x39')]=_[_0x4d5b('0x31')](_0x3e7299[_0x4d5b('0x32')],_0x3e7299['query']);_0x3fd813[_0x4d5b('0x34')]=_[_0x4d5b('0x31')](_0x3e7299[_0x4d5b('0x32')],qs[_0x4d5b('0x33')](_0x3d587e['query'][_0x4d5b('0x33')]));_0x3fd813[_0x4d5b('0x34')]=_0x3fd813[_0x4d5b('0x34')][_0x4d5b('0x35')]?_0x3fd813[_0x4d5b('0x34')]:_0x3e7299[_0x4d5b('0x32')];if(_0x3d587e[_0x4d5b('0x2f')]['includeAll']){_0x3fd813['include']=[{'all':!![]}];}_0x3fd813=_[_0x4d5b('0x3b')]({},_0x3fd813,_0x3d587e['options']);return db['ZohoField'][_0x4d5b('0x44')](_0x3fd813)[_0x4d5b('0x24')](handleEntityNotFound(_0x211954,null))[_0x4d5b('0x24')](respondWithResult(_0x211954,null))['catch'](handleError(_0x211954,null));};exports['create']=function(_0x2d8f84,_0x4dd9fc){return db[_0x4d5b('0x2b')]['create'](_0x2d8f84[_0x4d5b('0x45')],{})[_0x4d5b('0x24')](respondWithResult(_0x4dd9fc,0xc9))[_0x4d5b('0x41')](handleError(_0x4dd9fc,null));};exports[_0x4d5b('0x23')]=function(_0x11d068,_0x36b9bf){if(_0x11d068[_0x4d5b('0x45')]['id']){delete _0x11d068['body']['id'];}return db['ZohoField']['find']({'where':{'id':_0x11d068['params']['id']}})[_0x4d5b('0x24')](handleEntityNotFound(_0x36b9bf,null))[_0x4d5b('0x24')](saveUpdates(_0x11d068[_0x4d5b('0x45')],null))[_0x4d5b('0x24')](respondWithResult(_0x36b9bf,null))['catch'](handleError(_0x36b9bf,null));};exports['destroy']=function(_0x31f38f,_0xcc3e9c){return db[_0x4d5b('0x2b')][_0x4d5b('0x44')]({'where':{'id':_0x31f38f[_0x4d5b('0x43')]['id']}})['then'](handleEntityNotFound(_0xcc3e9c,null))[_0x4d5b('0x24')](removeEntity(_0xcc3e9c,null))[_0x4d5b('0x41')](handleError(_0xcc3e9c,null));};
\ No newline at end of file
+var _0x674a=['include','findAll','catch','show','params','intersection','find','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','stack','name','send','map','ZohoField','rawAttributes','type','query','keys','attributes','fields','length','model','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll'];(function(_0x3de0d9,_0x2ccb8f){var _0x161cd9=function(_0x8e23e7){while(--_0x8e23e7){_0x3de0d9['push'](_0x3de0d9['shift']());}};_0x161cd9(++_0x2ccb8f);}(_0x674a,0x111));var _0xa674=function(_0x3ee614,_0x5b74ba){_0x3ee614=_0x3ee614-0x0;var _0x5bf0b9=_0x674a[_0x3ee614];return _0x5bf0b9;};'use strict';var emlformat=require(_0xa674('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa674('0x1'));var jsonpatch=require(_0xa674('0x2'));var rp=require(_0xa674('0x3'));var moment=require(_0xa674('0x4'));var BPromise=require(_0xa674('0x5'));var Mustache=require(_0xa674('0x6'));var util=require(_0xa674('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa674('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa674('0x9'));var _=require(_0xa674('0xa'));var squel=require('squel');var crypto=require(_0xa674('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa674('0xc'));var toCsv=require(_0xa674('0x8'));var querystring=require(_0xa674('0xd'));var Papa=require(_0xa674('0xe'));var Redis=require('ioredis');var authService=require(_0xa674('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa674('0x10'))(_0xa674('0x11'));var utils=require(_0xa674('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa674('0x13'))['db'];function respondWithStatusCode(_0x4a0833,_0x221b12){_0x221b12=_0x221b12||0xcc;return function(_0x27fdcd){if(_0x27fdcd){return _0x4a0833[_0xa674('0x14')](_0x221b12);}return _0x4a0833['status'](_0x221b12)['end']();};}function respondWithResult(_0x14dcd4,_0x4fa649){_0x4fa649=_0x4fa649||0xc8;return function(_0x1f8cb4){if(_0x1f8cb4){return _0x14dcd4[_0xa674('0x15')](_0x4fa649)[_0xa674('0x16')](_0x1f8cb4);}};}function respondWithFilteredResult(_0x285723,_0x597bf1){return function(_0x516e18){if(_0x516e18){var _0x31ce02=typeof _0x597bf1[_0xa674('0x17')]===_0xa674('0x18')&&typeof _0x597bf1[_0xa674('0x19')]===_0xa674('0x18');var _0x13ca2=_0x516e18[_0xa674('0x1a')];var _0x53e243=_0x31ce02?0x0:_0x597bf1[_0xa674('0x17')];var _0x4e3550=_0x31ce02?_0x516e18[_0xa674('0x1a')]:_0x597bf1['offset']+_0x597bf1[_0xa674('0x19')];var _0x3445cb;if(_0x4e3550>=_0x13ca2){_0x4e3550=_0x13ca2;_0x3445cb=0xc8;}else{_0x3445cb=0xce;}_0x285723[_0xa674('0x15')](_0x3445cb);return _0x285723[_0xa674('0x1b')](_0xa674('0x1c'),_0x53e243+'-'+_0x4e3550+'/'+_0x13ca2)[_0xa674('0x16')](_0x516e18);}return null;};}function patchUpdates(_0x38ea0f){return function(_0x558bce){try{jsonpatch[_0xa674('0x1d')](_0x558bce,_0x38ea0f,!![]);}catch(_0x1ab193){return BPromise[_0xa674('0x1e')](_0x1ab193);}return _0x558bce['save']();};}function saveUpdates(_0xd100fe,_0x3b122f){return function(_0x14f720){if(_0x14f720){return _0x14f720[_0xa674('0x1f')](_0xd100fe)[_0xa674('0x20')](function(_0x4e6d68){return _0x4e6d68;});}return null;};}function removeEntity(_0x27d31d,_0x578cda){return function(_0xe1e985){if(_0xe1e985){return _0xe1e985['destroy']()[_0xa674('0x20')](function(){_0x27d31d[_0xa674('0x15')](0xcc)[_0xa674('0x21')]();});}};}function handleEntityNotFound(_0x241eee,_0x3e220b){return function(_0x1a6da7){if(!_0x1a6da7){_0x241eee[_0xa674('0x14')](0x194);}return _0x1a6da7;};}function handleError(_0x4ae803,_0x2c1372){_0x2c1372=_0x2c1372||0x1f4;return function(_0x4b18d8){logger['error'](_0x4b18d8[_0xa674('0x22')]);if(_0x4b18d8[_0xa674('0x23')]){delete _0x4b18d8[_0xa674('0x23')];}_0x4ae803[_0xa674('0x15')](_0x2c1372)[_0xa674('0x24')](_0x4b18d8);};}exports['index']=function(_0x7754e0,_0x4d6762){var _0x42ca39={},_0x4281c8={},_0x5f5f1={'count':0x0,'rows':[]};var _0xff1b62=_[_0xa674('0x25')](db[_0xa674('0x26')][_0xa674('0x27')],function(_0x3548fb){return{'name':_0x3548fb['fieldName'],'type':_0x3548fb[_0xa674('0x28')]['key']};});_0x4281c8['model']=_[_0xa674('0x25')](_0xff1b62,_0xa674('0x23'));_0x4281c8[_0xa674('0x29')]=_[_0xa674('0x2a')](_0x7754e0['query']);_0x4281c8['filters']=_['intersection'](_0x4281c8['model'],_0x4281c8[_0xa674('0x29')]);_0x42ca39[_0xa674('0x2b')]=_['intersection'](_0x4281c8['model'],qs[_0xa674('0x2c')](_0x7754e0[_0xa674('0x29')]['fields']));_0x42ca39['attributes']=_0x42ca39[_0xa674('0x2b')][_0xa674('0x2d')]?_0x42ca39[_0xa674('0x2b')]:_0x4281c8[_0xa674('0x2e')];if(!_0x7754e0['query']['hasOwnProperty']('nolimit')){_0x42ca39[_0xa674('0x19')]=qs[_0xa674('0x19')](_0x7754e0[_0xa674('0x29')]['limit']);_0x42ca39[_0xa674('0x17')]=qs['offset'](_0x7754e0[_0xa674('0x29')]['offset']);}_0x42ca39[_0xa674('0x2f')]=qs[_0xa674('0x30')](_0x7754e0['query'][_0xa674('0x30')]);_0x42ca39[_0xa674('0x31')]=qs[_0xa674('0x32')](_[_0xa674('0x33')](_0x7754e0[_0xa674('0x29')],_0x4281c8['filters']),_0xff1b62);if(_0x7754e0[_0xa674('0x29')][_0xa674('0x34')]){_0x42ca39[_0xa674('0x31')]=_['merge'](_0x42ca39[_0xa674('0x31')],{'$or':_['map'](_0xff1b62,function(_0x50838d){if(_0x50838d['type']!==_0xa674('0x35')){var _0x30ff84={};_0x30ff84[_0x50838d['name']]={'$like':'%'+_0x7754e0[_0xa674('0x29')][_0xa674('0x34')]+'%'};return _0x30ff84;}})});}_0x42ca39=_[_0xa674('0x36')]({},_0x42ca39,_0x7754e0[_0xa674('0x37')]);var _0x2c0d50={'where':_0x42ca39[_0xa674('0x31')]};return db[_0xa674('0x26')][_0xa674('0x1a')](_0x2c0d50)[_0xa674('0x20')](function(_0x26008){_0x5f5f1[_0xa674('0x1a')]=_0x26008;if(_0x7754e0[_0xa674('0x29')][_0xa674('0x38')]){_0x42ca39[_0xa674('0x39')]=[{'all':!![]}];}return db[_0xa674('0x26')][_0xa674('0x3a')](_0x42ca39);})['then'](function(_0x3ba55a){_0x5f5f1['rows']=_0x3ba55a;return _0x5f5f1;})['then'](respondWithFilteredResult(_0x4d6762,_0x42ca39))[_0xa674('0x3b')](handleError(_0x4d6762,null));};exports[_0xa674('0x3c')]=function(_0x485a19,_0x4fecce){var _0x492e59={'raw':!![],'where':{'id':_0x485a19[_0xa674('0x3d')]['id']}},_0x106aba={};_0x106aba[_0xa674('0x2e')]=_[_0xa674('0x2a')](db['ZohoField'][_0xa674('0x27')]);_0x106aba[_0xa674('0x29')]=_['keys'](_0x485a19[_0xa674('0x29')]);_0x106aba[_0xa674('0x32')]=_[_0xa674('0x3e')](_0x106aba[_0xa674('0x2e')],_0x106aba[_0xa674('0x29')]);_0x492e59[_0xa674('0x2b')]=_[_0xa674('0x3e')](_0x106aba['model'],qs['fields'](_0x485a19[_0xa674('0x29')]['fields']));_0x492e59[_0xa674('0x2b')]=_0x492e59[_0xa674('0x2b')][_0xa674('0x2d')]?_0x492e59[_0xa674('0x2b')]:_0x106aba[_0xa674('0x2e')];if(_0x485a19['query'][_0xa674('0x38')]){_0x492e59[_0xa674('0x39')]=[{'all':!![]}];}_0x492e59=_[_0xa674('0x36')]({},_0x492e59,_0x485a19[_0xa674('0x37')]);return db['ZohoField'][_0xa674('0x3f')](_0x492e59)[_0xa674('0x20')](handleEntityNotFound(_0x4fecce,null))[_0xa674('0x20')](respondWithResult(_0x4fecce,null))[_0xa674('0x3b')](handleError(_0x4fecce,null));};exports['create']=function(_0x9ebea6,_0xad5d14){return db['ZohoField']['create'](_0x9ebea6[_0xa674('0x40')],{})[_0xa674('0x20')](respondWithResult(_0xad5d14,0xc9))['catch'](handleError(_0xad5d14,null));};exports['update']=function(_0x2065e6,_0xbc9f30){if(_0x2065e6['body']['id']){delete _0x2065e6['body']['id'];}return db[_0xa674('0x26')][_0xa674('0x3f')]({'where':{'id':_0x2065e6['params']['id']}})[_0xa674('0x20')](handleEntityNotFound(_0xbc9f30,null))['then'](saveUpdates(_0x2065e6['body'],null))[_0xa674('0x20')](respondWithResult(_0xbc9f30,null))['catch'](handleError(_0xbc9f30,null));};exports[_0xa674('0x41')]=function(_0x1cfbca,_0x53ed53){return db[_0xa674('0x26')][_0xa674('0x3f')]({'where':{'id':_0x1cfbca['params']['id']}})[_0xa674('0x20')](handleEntityNotFound(_0x53ed53,null))[_0xa674('0x20')](removeEntity(_0x53ed53,null))[_0xa674('0x3b')](handleError(_0x53ed53,null));};
\ No newline at end of file
index 441149c..a1f79dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['bluebird','request-promise','path','rimraf','exports','zoho_unique_index','idField','FieldId','util','../../config/logger','api','moment'];(function(_0x4f526c,_0x6c4dbe){var _0x38a51e=function(_0x3d8c05){while(--_0x3d8c05){_0x4f526c['push'](_0x4f526c['shift']());}};_0x38a51e(++_0x6c4dbe);}(_0xc2c7,0x134));var _0x7c2c=function(_0x4148e1,_0x962c9e){_0x4148e1=_0x4148e1-0x0;var _0x1d1972=_0xc2c7[_0x4148e1];return _0x1d1972;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var logger=require(_0x7c2c('0x1'))(_0x7c2c('0x2'));var moment=require(_0x7c2c('0x3'));var BPromise=require(_0x7c2c('0x4'));var rp=require(_0x7c2c('0x5'));var fs=require('fs');var path=require(_0x7c2c('0x6'));var rimraf=require(_0x7c2c('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module[_0x7c2c('0x8')]=function(_0x42ecc9,_0x23c038){return _0x42ecc9['define']('ZohoField',attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0x7c2c('0x9'),'fields':[_0x7c2c('0xa'),_0x7c2c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x524e=['define','ZohoField','zoho_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports'];(function(_0xd2e2ab,_0x2440cf){var _0x1703a2=function(_0x23deba){while(--_0x23deba){_0xd2e2ab['push'](_0xd2e2ab['shift']());}};_0x1703a2(++_0x2440cf);}(_0x524e,0x15e));var _0xe524=function(_0x1280be,_0x4bf450){_0x1280be=_0x1280be-0x0;var _0x495ede=_0x524e[_0x1280be];return _0x495ede;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xd'),_0xe524('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 94f0b09..240ad90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a2c=['request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZohoField,\x20%s,\x20%s'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x3a2c,0xee));var _0xc3a2=function(_0x7885f2,_0x2d5cc0){_0x7885f2=_0x7885f2-0x0;var _0x35701f=_0x3a2c[_0x7885f2];return _0x35701f;};'use strict';var _=require(_0xc3a2('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc3a2('0x1'));var rs=require(_0xc3a2('0x2'));var fs=require('fs');var Redis=require(_0xc3a2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc3a2('0x4'));var logger=require(_0xc3a2('0x5'))(_0xc3a2('0x6'));var config=require(_0xc3a2('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc3a2('0x8')][_0xc3a2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51ebfa,_0x40ce89,_0x4201f3){return new BPromise(function(_0x47b596,_0x4b96da){return client[_0xc3a2('0xa')](_0x51ebfa,_0x4201f3)[_0xc3a2('0xb')](function(_0x4c39c9){logger[_0xc3a2('0xc')](_0xc3a2('0xd'),_0x40ce89,_0xc3a2('0xe'));logger[_0xc3a2('0xf')](_0xc3a2('0x10'),_0x40ce89,_0xc3a2('0xe'),JSON[_0xc3a2('0x11')](_0x4c39c9));if(_0x4c39c9[_0xc3a2('0x12')]){if(_0x4c39c9['error'][_0xc3a2('0x13')]===0x1f4){logger[_0xc3a2('0x12')](_0xc3a2('0xd'),_0x40ce89,_0x4c39c9[_0xc3a2('0x12')][_0xc3a2('0x14')]);return _0x4b96da(_0x4c39c9[_0xc3a2('0x12')][_0xc3a2('0x14')]);}logger[_0xc3a2('0x12')](_0xc3a2('0xd'),_0x40ce89,_0x4c39c9['error'][_0xc3a2('0x14')]);return _0x47b596(_0x4c39c9[_0xc3a2('0x12')]['message']);}else{logger[_0xc3a2('0xc')]('ZohoField,\x20%s,\x20%s',_0x40ce89,_0xc3a2('0xe'));_0x47b596(_0x4c39c9['result'][_0xc3a2('0x14')]);}})['catch'](function(_0x433f8d){logger[_0xc3a2('0x12')]('ZohoField,\x20%s,\x20%s',_0x40ce89,_0x433f8d);_0x4b96da(_0x433f8d);});});}
\ No newline at end of file
+var _0x3436=['client','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x22a15d,_0x22d59b){var _0x1b0146=function(_0x1c5cad){while(--_0x1c5cad){_0x22a15d['push'](_0x22a15d['shift']());}};_0x1b0146(++_0x22d59b);}(_0x3436,0x1af));var _0x6343=function(_0x215133,_0x8a1b1c){_0x215133=_0x215133-0x0;var _0x39f0b7=_0x3436[_0x215133];return _0x39f0b7;};'use strict';var _=require(_0x6343('0x0'));var util=require(_0x6343('0x1'));var moment=require(_0x6343('0x2'));var BPromise=require(_0x6343('0x3'));var rs=require(_0x6343('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6343('0x5'))['db'];var utils=require(_0x6343('0x6'));var logger=require(_0x6343('0x7'))(_0x6343('0x8'));var config=require(_0x6343('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6343('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ba055,_0x4c351b,_0x181a83){return new BPromise(function(_0x1b19b9,_0x585322){return client[_0x6343('0xb')](_0x5ba055,_0x181a83)['then'](function(_0x401efd){logger[_0x6343('0xc')](_0x6343('0xd'),_0x4c351b,_0x6343('0xe'));logger[_0x6343('0xf')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x4c351b,_0x6343('0xe'),JSON[_0x6343('0x10')](_0x401efd));if(_0x401efd[_0x6343('0x11')]){if(_0x401efd[_0x6343('0x11')]['code']===0x1f4){logger['error'](_0x6343('0xd'),_0x4c351b,_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);return _0x585322(_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);}logger['error'](_0x6343('0xd'),_0x4c351b,_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);return _0x1b19b9(_0x401efd[_0x6343('0x11')][_0x6343('0x12')]);}else{logger['info'](_0x6343('0xd'),_0x4c351b,'request\x20sent');_0x1b19b9(_0x401efd[_0x6343('0x13')][_0x6343('0x12')]);}})[_0x6343('0x14')](function(_0x38634f){logger['error'](_0x6343('0xd'),_0x4c351b,_0x38634f);_0x585322(_0x38634f);});});}
\ No newline at end of file
index fb3959c..fe80272 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(_0x25a233,_0x1402dd){var _0x48ed17=function(_0x1f5c0b){while(--_0x1f5c0b){_0x25a233['push'](_0x25a233['shift']());}};_0x48ed17(++_0x1402dd);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5c3c90,_0x5ba31e){var _0x1dff8b=function(_0x591fd1){while(--_0x591fd1){_0x5c3c90['push'](_0x5c3c90['shift']());}};_0x1dff8b(++_0x5ba31e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index bc81d63..41d0c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682e=['state','sequelize','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN'];(function(_0x292b87,_0x2391dd){var _0x4c5670=function(_0x1fe73a){while(--_0x1fe73a){_0x292b87['push'](_0x292b87['shift']());}};_0x4c5670(++_0x2391dd);}(_0x682e,0x119));var _0xe682=function(_0x2089ea,_0x4250b6){_0x2089ea=_0x2089ea-0x0;var _0x388ff1=_0x682e[_0x2089ea];return _0x388ff1;};'use strict';var Sequelize=require(_0xe682('0x0'));module['exports']={'name':{'type':Sequelize[_0xe682('0x1')],'allowNull':![],'unique':_0xe682('0x2')},'version':{'type':Sequelize[_0xe682('0x1')],'allowNull':![],'unique':_0xe682('0x2')},'main':{'type':Sequelize[_0xe682('0x1')],'defaultValue':_0xe682('0x3')},'filename':{'type':Sequelize[_0xe682('0x1')]},'path':{'type':Sequelize[_0xe682('0x1')]},'type':{'type':Sequelize[_0xe682('0x1')]},'size':{'type':Sequelize[_0xe682('0x4')]},'active':{'type':Sequelize[_0xe682('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0xe682('0x1')]},'state':{'type':Sequelize[_0xe682('0x1')],'unique':_0xe682('0x6')},'description':{'type':Sequelize[_0xe682('0x1')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xe682('0x1')]},'link':{'type':Sequelize[_0xe682('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xb5eb=['STRING','unique_name_and_version','INTEGER','BOOLEAN','exports'];(function(_0x3ff5df,_0x3c640e){var _0x143222=function(_0x3b3356){while(--_0x3b3356){_0x3ff5df['push'](_0x3ff5df['shift']());}};_0x143222(++_0x3c640e);}(_0xb5eb,0xd1));var _0xbb5e=function(_0x1a3692,_0x34b60c){_0x1a3692=_0x1a3692-0x0;var _0x543961=_0xb5eb[_0x1a3692];return _0x543961;};'use strict';var Sequelize=require('sequelize');module[_0xbb5e('0x0')]={'name':{'type':Sequelize[_0xbb5e('0x1')],'allowNull':![],'unique':_0xbb5e('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xbb5e('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xbb5e('0x1')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbb5e('0x1')]},'size':{'type':Sequelize[_0xbb5e('0x3')]},'active':{'type':Sequelize[_0xbb5e('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0xbb5e('0x1')]},'logo':{'type':Sequelize[_0xbb5e('0x1')]},'state':{'type':Sequelize[_0xbb5e('0x1')],'unique':'state'},'description':{'type':Sequelize[_0xbb5e('0x1')]},'title':{'type':Sequelize[_0xbb5e('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0xbb5e('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index e27f151..9839460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','then','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','Integration','include','findAll','rows','show','params','rawAttributes','keys','length','includeAll','merge','create','update','find','catch','destroy','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x1fcb59,_0x37d186){var _0x1806af=function(_0x299eb5){while(--_0x299eb5){_0x1fcb59['push'](_0x1fcb59['shift']());}};_0x1806af(++_0x37d186);}(_0x5d58,0x187));var _0x85d5=function(_0xd9439a,_0x3df30a){_0xd9439a=_0xd9439a-0x0;var _0xa1fbae=_0x5d58[_0xd9439a];return _0xa1fbae;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x85d5('0x0'));var BPromise=require(_0x85d5('0x1'));var Mustache=require('mustache');var util=require(_0x85d5('0x2'));var path=require(_0x85d5('0x3'));var sox=require('sox');var csv=require(_0x85d5('0x4'));var ejs=require(_0x85d5('0x5'));var fs=require('fs');var fs_extra=require(_0x85d5('0x6'));var _=require(_0x85d5('0x7'));var squel=require('squel');var crypto=require(_0x85d5('0x8'));var jsforce=require(_0x85d5('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x85d5('0x4'));var querystring=require('querystring');var Papa=require(_0x85d5('0xa'));var Redis=require(_0x85d5('0xb'));var authService=require(_0x85d5('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x85d5('0xd'))(_0x85d5('0xe'));var utils=require(_0x85d5('0xf'));var config=require(_0x85d5('0x10'));var licenseUtil=require(_0x85d5('0x11'));var db=require(_0x85d5('0x12'))['db'];function respondWithStatusCode(_0x31409d,_0x5897af){_0x5897af=_0x5897af||0xcc;return function(_0x4bbf2a){if(_0x4bbf2a){return _0x31409d['sendStatus'](_0x5897af);}return _0x31409d[_0x85d5('0x13')](_0x5897af)[_0x85d5('0x14')]();};}function respondWithResult(_0x339d4f,_0x1704f0){_0x1704f0=_0x1704f0||0xc8;return function(_0x18a20c){if(_0x18a20c){return _0x339d4f[_0x85d5('0x13')](_0x1704f0)[_0x85d5('0x15')](_0x18a20c);}};}function respondWithFilteredResult(_0x586382,_0x18e977){return function(_0x2d7c95){if(_0x2d7c95){var _0x1621ed=typeof _0x18e977[_0x85d5('0x16')]===_0x85d5('0x17')&&typeof _0x18e977[_0x85d5('0x18')]===_0x85d5('0x17');var _0x12bef9=_0x2d7c95[_0x85d5('0x19')];var _0x17acb0=_0x1621ed?0x0:_0x18e977[_0x85d5('0x16')];var _0x432bd6=_0x1621ed?_0x2d7c95[_0x85d5('0x19')]:_0x18e977[_0x85d5('0x16')]+_0x18e977[_0x85d5('0x18')];var _0x26981b;if(_0x432bd6>=_0x12bef9){_0x432bd6=_0x12bef9;_0x26981b=0xc8;}else{_0x26981b=0xce;}_0x586382[_0x85d5('0x13')](_0x26981b);return _0x586382[_0x85d5('0x1a')]('Content-Range',_0x17acb0+'-'+_0x432bd6+'/'+_0x12bef9)[_0x85d5('0x15')](_0x2d7c95);}return null;};}function patchUpdates(_0x133fa9){return function(_0x5f5755){try{jsonpatch[_0x85d5('0x1b')](_0x5f5755,_0x133fa9,!![]);}catch(_0x1264ca){return BPromise['reject'](_0x1264ca);}return _0x5f5755['save']();};}function saveUpdates(_0x347337,_0x5a1b9a){return function(_0x2f2bae){if(_0x2f2bae){return _0x2f2bae['update'](_0x347337)[_0x85d5('0x1c')](function(_0x1f8d27){return _0x1f8d27;});}return null;};}function removeEntity(_0x560b3a,_0x4e11c4){return function(_0x4da71b){if(_0x4da71b){return _0x4da71b['destroy']()[_0x85d5('0x1c')](function(){_0x560b3a[_0x85d5('0x13')](0xcc)[_0x85d5('0x14')]();});}};}function handleEntityNotFound(_0x466bbd,_0x12fea3){return function(_0xef2405){if(!_0xef2405){_0x466bbd['sendStatus'](0x194);}return _0xef2405;};}function handleError(_0x7e9a11,_0x4f8c66){_0x4f8c66=_0x4f8c66||0x1f4;return function(_0x1b3fae){logger[_0x85d5('0x1d')](_0x1b3fae[_0x85d5('0x1e')]);if(_0x1b3fae['name']){delete _0x1b3fae[_0x85d5('0x1f')];}_0x7e9a11[_0x85d5('0x13')](_0x4f8c66)[_0x85d5('0x20')](_0x1b3fae);};}exports[_0x85d5('0x21')]=function(_0x4605c5,_0x56031f){var _0x1cbef1={},_0x476c8b={},_0x330f8a={'count':0x0,'rows':[]};var _0x22a961=_[_0x85d5('0x22')](db['Integration']['rawAttributes'],function(_0x2ce7a9){return{'name':_0x2ce7a9[_0x85d5('0x23')],'type':_0x2ce7a9[_0x85d5('0x24')][_0x85d5('0x25')]};});_0x476c8b[_0x85d5('0x26')]=_['map'](_0x22a961,_0x85d5('0x1f'));_0x476c8b[_0x85d5('0x27')]=_['keys'](_0x4605c5['query']);_0x476c8b[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x476c8b['model'],_0x476c8b[_0x85d5('0x27')]);_0x1cbef1['attributes']=_[_0x85d5('0x29')](_0x476c8b[_0x85d5('0x26')],qs['fields'](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x1cbef1[_0x85d5('0x2b')]=_0x1cbef1[_0x85d5('0x2b')]['length']?_0x1cbef1['attributes']:_0x476c8b[_0x85d5('0x26')];if(!_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2c')](_0x85d5('0x2d'))){_0x1cbef1[_0x85d5('0x18')]=qs[_0x85d5('0x18')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x18')]);_0x1cbef1[_0x85d5('0x16')]=qs['offset'](_0x4605c5['query'][_0x85d5('0x16')]);}_0x1cbef1[_0x85d5('0x2e')]=qs[_0x85d5('0x2f')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2f')]);_0x1cbef1[_0x85d5('0x30')]=qs[_0x85d5('0x28')](_[_0x85d5('0x31')](_0x4605c5['query'],_0x476c8b[_0x85d5('0x28')]),_0x22a961);if(_0x4605c5[_0x85d5('0x27')][_0x85d5('0x32')]){_0x1cbef1[_0x85d5('0x30')]=_['merge'](_0x1cbef1[_0x85d5('0x30')],{'$or':_[_0x85d5('0x22')](_0x22a961,function(_0x3282d3){if(_0x3282d3[_0x85d5('0x24')]!=='VIRTUAL'){var _0x34caed={};_0x34caed[_0x3282d3['name']]={'$like':'%'+_0x4605c5['query'][_0x85d5('0x32')]+'%'};return _0x34caed;}})});}_0x1cbef1=_['merge']({},_0x1cbef1,_0x4605c5[_0x85d5('0x33')]);var _0x5ddba7={'where':_0x1cbef1['where']};return db[_0x85d5('0x34')][_0x85d5('0x19')](_0x5ddba7)[_0x85d5('0x1c')](function(_0x1beffc){_0x330f8a[_0x85d5('0x19')]=_0x1beffc;if(_0x4605c5['query']['includeAll']){_0x1cbef1[_0x85d5('0x35')]=[{'all':!![]}];}return db[_0x85d5('0x34')][_0x85d5('0x36')](_0x1cbef1);})[_0x85d5('0x1c')](function(_0xdd8b3e){_0x330f8a[_0x85d5('0x37')]=_0xdd8b3e;return _0x330f8a;})['then'](respondWithFilteredResult(_0x56031f,_0x1cbef1))['catch'](handleError(_0x56031f,null));};exports[_0x85d5('0x38')]=function(_0x52c99b,_0xfbf466){var _0x18e94d={'raw':![],'where':{'id':_0x52c99b[_0x85d5('0x39')]['id']}},_0x7dd430={};_0x7dd430[_0x85d5('0x26')]=_['keys'](db['Integration'][_0x85d5('0x3a')]);_0x7dd430[_0x85d5('0x27')]=_[_0x85d5('0x3b')](_0x52c99b[_0x85d5('0x27')]);_0x7dd430[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],_0x7dd430[_0x85d5('0x27')]);_0x18e94d[_0x85d5('0x2b')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],qs[_0x85d5('0x2a')](_0x52c99b[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x18e94d[_0x85d5('0x2b')]=_0x18e94d[_0x85d5('0x2b')][_0x85d5('0x3c')]?_0x18e94d['attributes']:_0x7dd430['model'];if(_0x52c99b[_0x85d5('0x27')][_0x85d5('0x3d')]){_0x18e94d[_0x85d5('0x35')]=[{'all':!![]}];}_0x18e94d=_[_0x85d5('0x3e')]({},_0x18e94d,_0x52c99b[_0x85d5('0x33')]);return db[_0x85d5('0x34')]['find'](_0x18e94d)[_0x85d5('0x1c')](handleEntityNotFound(_0xfbf466,null))['then'](respondWithResult(_0xfbf466,null))['catch'](handleError(_0xfbf466,null));};exports[_0x85d5('0x3f')]=function(_0x13ab32,_0x12a03){return db[_0x85d5('0x34')][_0x85d5('0x3f')](_0x13ab32['body'],{})[_0x85d5('0x1c')](respondWithResult(_0x12a03,0xc9))['catch'](handleError(_0x12a03,null));};exports[_0x85d5('0x40')]=function(_0xd8db57,_0x219154){if(_0xd8db57['body']['id']){delete _0xd8db57['body']['id'];}return db['Integration'][_0x85d5('0x41')]({'where':{'id':_0xd8db57[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x219154,null))['then'](saveUpdates(_0xd8db57['body'],null))[_0x85d5('0x1c')](respondWithResult(_0x219154,null))[_0x85d5('0x42')](handleError(_0x219154,null));};exports[_0x85d5('0x43')]=function(_0x288b56,_0x4b2dce){return db[_0x85d5('0x34')][_0x85d5('0x41')]({'where':{'id':_0x288b56[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x4b2dce,null))[_0x85d5('0x1c')](removeEntity(_0x4b2dce,null))[_0x85d5('0x42')](handleError(_0x4b2dce,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(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x5496,0x175));var _0x6549=function(_0x1046c5,_0xb5530c){_0x1046c5=_0x1046c5-0x0;var _0x5d986f=_0x5496[_0x1046c5];return _0x5d986f;};'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 6c3c74a..f3d27f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x782c=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./integration.attributes','exports','define','Integration','integrations','lodash'];(function(_0x132292,_0x3dc140){var _0x454c09=function(_0x52ed2e){while(--_0x52ed2e){_0x132292['push'](_0x132292['shift']());}};_0x454c09(++_0x3dc140);}(_0x782c,0xe9));var _0xc782=function(_0xf747a8,_0x518305){_0xf747a8=_0xf747a8-0x0;var _0x22290f=_0x782c[_0xf747a8];return _0x22290f;};'use strict';var _=require(_0xc782('0x0'));var util=require(_0xc782('0x1'));var logger=require(_0xc782('0x2'))(_0xc782('0x3'));var moment=require(_0xc782('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc782('0x5'));var rimraf=require(_0xc782('0x6'));var config=require(_0xc782('0x7'));var attributes=require(_0xc782('0x8'));module[_0xc782('0x9')]=function(_0x55ddf4,_0x39cdf2){return _0x55ddf4[_0xc782('0xa')](_0xc782('0xb'),attributes,{'tableName':_0xc782('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcd9=['rimraf','./integration.attributes','define','integrations','lodash','util','../../config/logger','moment','path'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0xfcd9,0x175));var _0x9fcd=function(_0x4b8f4a,_0x30d9f6){_0x4b8f4a=_0x4b8f4a-0x0;var _0x3d84db=_0xfcd9[_0x4b8f4a];return _0x3d84db;};'use strict';var _=require(_0x9fcd('0x0'));var util=require(_0x9fcd('0x1'));var logger=require(_0x9fcd('0x2'))('api');var moment=require(_0x9fcd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fcd('0x4'));var rimraf=require(_0x9fcd('0x5'));var config=require('../../config/environment');var attributes=require(_0x9fcd('0x6'));module['exports']=function(_0x3e1ef6,_0x53a171){return _0x3e1ef6[_0x9fcd('0x7')]('Integration',attributes,{'tableName':_0x9fcd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39dc29d..2190491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['Integration,\x20%s,\x20%s','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info'];(function(_0xc08ffe,_0x26f43f){var _0x52c452=function(_0x571984){while(--_0x571984){_0xc08ffe['push'](_0xc08ffe['shift']());}};_0x52c452(++_0x26f43f);}(_0x955f,0x1eb));var _0xf955=function(_0x15e626,_0x1df9d7){_0x15e626=_0x15e626-0x0;var _0xa9b8f7=_0x955f[_0x15e626];return _0xa9b8f7;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var moment=require(_0xf955('0x2'));var BPromise=require(_0xf955('0x3'));var rs=require(_0xf955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf955('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf955('0x6'));var config=require('../../config/environment');var jayson=require(_0xf955('0x7'));var client=jayson[_0xf955('0x8')][_0xf955('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59d5b3,_0x18432f,_0x20c096){return new BPromise(function(_0x4f58fb,_0x254b38){return client[_0xf955('0xa')](_0x59d5b3,_0x20c096)[_0xf955('0xb')](function(_0x38b190){logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,_0xf955('0xe'));logger['debug'](_0xf955('0xf'),_0x18432f,'request\x20sent',JSON[_0xf955('0x10')](_0x38b190));if(_0x38b190[_0xf955('0x11')]){if(_0x38b190[_0xf955('0x11')]['code']===0x1f4){logger[_0xf955('0x11')]('Integration,\x20%s,\x20%s',_0x18432f,_0x38b190[_0xf955('0x11')]['message']);return _0x254b38(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);return _0x4f58fb(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}else{logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,'request\x20sent');_0x4f58fb(_0x38b190[_0xf955('0x13')]['message']);}})[_0xf955('0x14')](function(_0x3a814f){logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x3a814f);_0x254b38(_0x3a814f);});});}
\ No newline at end of file
+var _0x955f=['Integration,\x20%s,\x20%s','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info'];(function(_0x140c64,_0x4c4056){var _0x3f0c30=function(_0xc38f23){while(--_0xc38f23){_0x140c64['push'](_0x140c64['shift']());}};_0x3f0c30(++_0x4c4056);}(_0x955f,0x1eb));var _0xf955=function(_0x41f335,_0x3f3008){_0x41f335=_0x41f335-0x0;var _0x30f6d4=_0x955f[_0x41f335];return _0x30f6d4;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var moment=require(_0xf955('0x2'));var BPromise=require(_0xf955('0x3'));var rs=require(_0xf955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf955('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf955('0x6'));var config=require('../../config/environment');var jayson=require(_0xf955('0x7'));var client=jayson[_0xf955('0x8')][_0xf955('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59d5b3,_0x18432f,_0x20c096){return new BPromise(function(_0x4f58fb,_0x254b38){return client[_0xf955('0xa')](_0x59d5b3,_0x20c096)[_0xf955('0xb')](function(_0x38b190){logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,_0xf955('0xe'));logger['debug'](_0xf955('0xf'),_0x18432f,'request\x20sent',JSON[_0xf955('0x10')](_0x38b190));if(_0x38b190[_0xf955('0x11')]){if(_0x38b190[_0xf955('0x11')]['code']===0x1f4){logger[_0xf955('0x11')]('Integration,\x20%s,\x20%s',_0x18432f,_0x38b190[_0xf955('0x11')]['message']);return _0x254b38(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);return _0x4f58fb(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}else{logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,'request\x20sent');_0x4f58fb(_0x38b190[_0xf955('0x13')]['message']);}})[_0xf955('0x14')](function(_0x3a814f){logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x3a814f);_0x254b38(_0x3a814f);});});}
\ No newline at end of file
index d0ce013..ca89368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','/:id'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x4137,0xf8));var _0x7413=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4137[_0x27af45];return _0x18df21;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/',auth['isAuthenticated'](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x14')]);router['delete'](_0x7413('0xf'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x15')]=router;
\ No newline at end of file
+var _0xe2fe=['describe','/:id','post','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x58b44a,_0x1a7aa6){var _0xd6779d=function(_0x40d8f3){while(--_0x40d8f3){_0x58b44a['push'](_0x58b44a['shift']());}};_0xd6779d(++_0x1a7aa6);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./integrationReport.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0xc')]('/',auth[_0xee2f('0x8')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xe')]);module[_0xee2f('0xf')]=router;
\ No newline at end of file
index 30ef09d..4fc8371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5e=['INTEGER','BOOLEAN','TEXT','SENT','SENDING','FAILED','exports','STRING','DATE'];(function(_0x2c4d9b,_0x4cbee1){var _0x45dfe4=function(_0x5700f6){while(--_0x5700f6){_0x2c4d9b['push'](_0x2c4d9b['shift']());}};_0x45dfe4(++_0x4cbee1);}(_0x6d5e,0x9f));var _0xe6d5=function(_0x2a2ea1,_0x5cb35c){_0x2a2ea1=_0x2a2ea1-0x0;var _0x18c25e=_0x6d5e[_0x2a2ea1];return _0x18c25e;};'use strict';var Sequelize=require('sequelize');module[_0xe6d5('0x0')]={'integration':{'type':Sequelize[_0xe6d5('0x1')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xe6d5('0x1')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xe6d5('0x1')]},'uniqueid':{'type':Sequelize[_0xe6d5('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xe6d5('0x1')]},'queue':{'type':Sequelize[_0xe6d5('0x1')]},'interface':{'type':Sequelize[_0xe6d5('0x1')]},'membername':{'type':Sequelize[_0xe6d5('0x1')]},'agentcalledAt':{'type':Sequelize[_0xe6d5('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xe6d5('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xe6d5('0x2')]},'talktime':{'type':Sequelize[_0xe6d5('0x3')]},'agentacw':{'type':Sequelize[_0xe6d5('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xe6d5('0x3')]},'reason':{'type':Sequelize[_0xe6d5('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xe6d5('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xe6d5('0x2')]},'agentdump':{'type':Sequelize[_0xe6d5('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xe6d5('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe6d5('0x1')]},'channelstate':{'type':Sequelize[_0xe6d5('0x3')]},'channelstatedesc':{'type':Sequelize[_0xe6d5('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe6d5('0x1')]},'connectedlinename':{'type':Sequelize[_0xe6d5('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xe6d5('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xe6d5('0x1')]},'destchannel':{'type':Sequelize[_0xe6d5('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xe6d5('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe6d5('0x1')]},'destcalleridname':{'type':Sequelize[_0xe6d5('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe6d5('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xe6d5('0x1')]},'destlanguage':{'type':Sequelize[_0xe6d5('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xe6d5('0x1')]},'destexten':{'type':Sequelize[_0xe6d5('0x1')]},'destpriority':{'type':Sequelize[_0xe6d5('0x1')]},'destuniqueid':{'type':Sequelize[_0xe6d5('0x1')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0xe6d5('0x1')]},'subject':{'type':Sequelize[_0xe6d5('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xe6d5('0x1')]},'cc':{'type':Sequelize[_0xe6d5('0x1')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0xe6d5('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize['ENUM'](_0xe6d5('0x6'),_0xe6d5('0x7'),'RECEIVED',_0xe6d5('0x8'))},'url':{'type':Sequelize[_0xe6d5('0x1')]},'app':{'type':Sequelize[_0xe6d5('0x1')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0xe6d5('0x3')]}};
\ No newline at end of file
+var _0x8eb9=['FAILED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','SENT'];(function(_0x56d5da,_0x2f1e53){var _0xa49f5c=function(_0x4107b3){while(--_0x4107b3){_0x56d5da['push'](_0x56d5da['shift']());}};_0xa49f5c(++_0x2f1e53);}(_0x8eb9,0x1c3));var _0x98eb=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x8eb9[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require(_0x98eb('0x0'));module[_0x98eb('0x1')]={'integration':{'type':Sequelize[_0x98eb('0x2')]},'eventChannel':{'type':Sequelize[_0x98eb('0x2')]},'exitStatus':{'type':Sequelize[_0x98eb('0x2')]},'ticketId':{'type':Sequelize[_0x98eb('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x98eb('0x2')]},'uniqueid':{'type':Sequelize[_0x98eb('0x2')]},'calleridnum':{'type':Sequelize[_0x98eb('0x2')]},'calleridname':{'type':Sequelize[_0x98eb('0x2')]},'queue':{'type':Sequelize[_0x98eb('0x2')]},'interface':{'type':Sequelize[_0x98eb('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x98eb('0x3')]},'agentconnectAt':{'type':Sequelize[_0x98eb('0x3')]},'holdtime':{'type':Sequelize[_0x98eb('0x4')]},'agentcomplete':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x98eb('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x98eb('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x98eb('0x3')]},'agentdump':{'type':Sequelize[_0x98eb('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x98eb('0x3')]},'lastevent':{'type':Sequelize[_0x98eb('0x2')]},'channel':{'type':Sequelize[_0x98eb('0x2')]},'channelstate':{'type':Sequelize[_0x98eb('0x4')]},'channelstatedesc':{'type':Sequelize[_0x98eb('0x2')]},'connectedlinenum':{'type':Sequelize[_0x98eb('0x2')]},'connectedlinename':{'type':Sequelize[_0x98eb('0x2')]},'language':{'type':Sequelize[_0x98eb('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x98eb('0x2')]},'exten':{'type':Sequelize[_0x98eb('0x2')]},'priority':{'type':Sequelize[_0x98eb('0x2')]},'destchannel':{'type':Sequelize[_0x98eb('0x2')]},'destchannelstate':{'type':Sequelize[_0x98eb('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x98eb('0x2')]},'destcalleridnum':{'type':Sequelize[_0x98eb('0x2')]},'destcalleridname':{'type':Sequelize[_0x98eb('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x98eb('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x98eb('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x98eb('0x2')]},'destcontext':{'type':Sequelize[_0x98eb('0x2')]},'destexten':{'type':Sequelize[_0x98eb('0x2')]},'destpriority':{'type':Sequelize[_0x98eb('0x2')]},'destuniqueid':{'type':Sequelize[_0x98eb('0x2')]},'messageId':{'type':Sequelize[_0x98eb('0x2')]},'inReplyTo':{'type':Sequelize[_0x98eb('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x98eb('0x2')]},'to':{'type':Sequelize[_0x98eb('0x2')]},'cc':{'type':Sequelize[_0x98eb('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x98eb('0x6')]},'status':{'type':Sequelize['ENUM'](_0x98eb('0x7'),'SENDING','RECEIVED',_0x98eb('0x8'))},'url':{'type':Sequelize[_0x98eb('0x2')]},'app':{'type':Sequelize[_0x98eb('0x2')]},'appdata':{'type':Sequelize[_0x98eb('0x2')]},'projectId':{'type':Sequelize[_0x98eb('0x4')]}};
\ No newline at end of file
index 0a1f479..3c35371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0f4=['IntegrationReport','length','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','apply','reject','destroy','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','merge','filter','options','then','includeAll','include','findAll','catch','show','params'];(function(_0x4a048f,_0x54edce){var _0x1f627b=function(_0x5b9dc5){while(--_0x5b9dc5){_0x4a048f['push'](_0x4a048f['shift']());}};_0x1f627b(++_0x54edce);}(_0xb0f4,0x12f));var _0x4b0f=function(_0x5ad0c0,_0x444dfe){_0x5ad0c0=_0x5ad0c0-0x0;var _0x21bfb0=_0xb0f4[_0x5ad0c0];return _0x21bfb0;};'use strict';var emlformat=require(_0x4b0f('0x0'));var rimraf=require(_0x4b0f('0x1'));var zipdir=require(_0x4b0f('0x2'));var jsonpatch=require(_0x4b0f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4b0f('0x4'));var util=require('util');var path=require(_0x4b0f('0x5'));var sox=require(_0x4b0f('0x6'));var csv=require(_0x4b0f('0x7'));var ejs=require(_0x4b0f('0x8'));var fs=require('fs');var fs_extra=require(_0x4b0f('0x9'));var _=require(_0x4b0f('0xa'));var squel=require('squel');var crypto=require(_0x4b0f('0xb'));var jsforce=require(_0x4b0f('0xc'));var deskjs=require(_0x4b0f('0xd'));var toCsv=require(_0x4b0f('0x7'));var querystring=require(_0x4b0f('0xe'));var Papa=require('papaparse');var Redis=require(_0x4b0f('0xf'));var authService=require(_0x4b0f('0x10'));var qs=require(_0x4b0f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b0f('0x12'));var logger=require(_0x4b0f('0x13'))(_0x4b0f('0x14'));var utils=require(_0x4b0f('0x15'));var config=require(_0x4b0f('0x16'));var licenseUtil=require(_0x4b0f('0x17'));var db=require(_0x4b0f('0x18'))['db'];function respondWithStatusCode(_0xfee8b7,_0x14929b){_0x14929b=_0x14929b||0xcc;return function(_0x5dd397){if(_0x5dd397){return _0xfee8b7[_0x4b0f('0x19')](_0x14929b);}return _0xfee8b7[_0x4b0f('0x1a')](_0x14929b)[_0x4b0f('0x1b')]();};}function respondWithResult(_0x2e2b82,_0x478e8d){_0x478e8d=_0x478e8d||0xc8;return function(_0x26a6e1){if(_0x26a6e1){return _0x2e2b82[_0x4b0f('0x1a')](_0x478e8d)['json'](_0x26a6e1);}};}function respondWithFilteredResult(_0x1a9c24,_0x29598a){return function(_0x56cbbd){if(_0x56cbbd){var _0x5c81a4=typeof _0x29598a['offset']===_0x4b0f('0x1c')&&typeof _0x29598a['limit']===_0x4b0f('0x1c');var _0x7bdecd=_0x56cbbd[_0x4b0f('0x1d')];var _0x400d74=_0x5c81a4?0x0:_0x29598a[_0x4b0f('0x1e')];var _0x46d654=_0x5c81a4?_0x56cbbd[_0x4b0f('0x1d')]:_0x29598a[_0x4b0f('0x1e')]+_0x29598a[_0x4b0f('0x1f')];var _0x232af7;if(_0x46d654>=_0x7bdecd){_0x46d654=_0x7bdecd;_0x232af7=0xc8;}else{_0x232af7=0xce;}_0x1a9c24[_0x4b0f('0x1a')](_0x232af7);return _0x1a9c24[_0x4b0f('0x20')](_0x4b0f('0x21'),_0x400d74+'-'+_0x46d654+'/'+_0x7bdecd)['json'](_0x56cbbd);}return null;};}function patchUpdates(_0x30bb4c){return function(_0x2a3254){try{jsonpatch[_0x4b0f('0x22')](_0x2a3254,_0x30bb4c,!![]);}catch(_0xbd7cf2){return BPromise[_0x4b0f('0x23')](_0xbd7cf2);}return _0x2a3254['save']();};}function saveUpdates(_0x5813b7,_0x482fb8){return function(_0x2bf14e){if(_0x2bf14e){return _0x2bf14e['update'](_0x5813b7)['then'](function(_0x27a322){return _0x27a322;});}return null;};}function removeEntity(_0x5cc433,_0x68e4e6){return function(_0x607cee){if(_0x607cee){return _0x607cee[_0x4b0f('0x24')]()['then'](function(){_0x5cc433[_0x4b0f('0x1a')](0xcc)[_0x4b0f('0x1b')]();});}};}function handleEntityNotFound(_0x43a62c,_0x1f83e6){return function(_0x38e77b){if(!_0x38e77b){_0x43a62c[_0x4b0f('0x19')](0x194);}return _0x38e77b;};}function handleError(_0x583b0f,_0x2a1d69){_0x2a1d69=_0x2a1d69||0x1f4;return function(_0x8cf66){logger[_0x4b0f('0x25')](_0x8cf66[_0x4b0f('0x26')]);if(_0x8cf66[_0x4b0f('0x27')]){delete _0x8cf66[_0x4b0f('0x27')];}_0x583b0f[_0x4b0f('0x1a')](_0x2a1d69)[_0x4b0f('0x28')](_0x8cf66);};}exports[_0x4b0f('0x29')]=function(_0x2c2887,_0x1f4996){var _0xb66bcf={},_0x5a2adc={},_0x488669={'count':0x0,'rows':[]};var _0x5925da=_[_0x4b0f('0x2a')](db['IntegrationReport']['rawAttributes'],function(_0x348ba8){return{'name':_0x348ba8[_0x4b0f('0x2b')],'type':_0x348ba8[_0x4b0f('0x2c')][_0x4b0f('0x2d')]};});_0x5a2adc['model']=_[_0x4b0f('0x2a')](_0x5925da,_0x4b0f('0x27'));_0x5a2adc[_0x4b0f('0x2e')]=_[_0x4b0f('0x2f')](_0x2c2887['query']);_0x5a2adc[_0x4b0f('0x30')]=_[_0x4b0f('0x31')](_0x5a2adc[_0x4b0f('0x32')],_0x5a2adc[_0x4b0f('0x2e')]);_0xb66bcf[_0x4b0f('0x33')]=_[_0x4b0f('0x31')](_0x5a2adc[_0x4b0f('0x32')],qs[_0x4b0f('0x34')](_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x34')]));_0xb66bcf['attributes']=_0xb66bcf[_0x4b0f('0x33')]['length']?_0xb66bcf[_0x4b0f('0x33')]:_0x5a2adc[_0x4b0f('0x32')];if(!_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x35')]('nolimit')){_0xb66bcf[_0x4b0f('0x1f')]=qs['limit'](_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x1f')]);_0xb66bcf[_0x4b0f('0x1e')]=qs[_0x4b0f('0x1e')](_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x1e')]);}_0xb66bcf[_0x4b0f('0x36')]=qs['sort'](_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x37')]);_0xb66bcf['where']=qs[_0x4b0f('0x30')](_['pick'](_0x2c2887[_0x4b0f('0x2e')],_0x5a2adc['filters']),_0x5925da);if(_0x2c2887['query']['filter']){_0xb66bcf[_0x4b0f('0x38')]=_[_0x4b0f('0x39')](_0xb66bcf[_0x4b0f('0x38')],{'$or':_['map'](_0x5925da,function(_0x26e43b){if(_0x26e43b[_0x4b0f('0x2c')]!=='VIRTUAL'){var _0x11a9f1={};_0x11a9f1[_0x26e43b[_0x4b0f('0x27')]]={'$like':'%'+_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x3a')]+'%'};return _0x11a9f1;}})});}_0xb66bcf=_[_0x4b0f('0x39')]({},_0xb66bcf,_0x2c2887[_0x4b0f('0x3b')]);var _0x301e2f={'where':_0xb66bcf['where']};return db['IntegrationReport'][_0x4b0f('0x1d')](_0x301e2f)[_0x4b0f('0x3c')](function(_0x23b800){_0x488669[_0x4b0f('0x1d')]=_0x23b800;if(_0x2c2887[_0x4b0f('0x2e')][_0x4b0f('0x3d')]){_0xb66bcf[_0x4b0f('0x3e')]=[{'all':!![]}];}return db['IntegrationReport'][_0x4b0f('0x3f')](_0xb66bcf);})['then'](function(_0x26c295){_0x488669['rows']=_0x26c295;return _0x488669;})[_0x4b0f('0x3c')](respondWithFilteredResult(_0x1f4996,_0xb66bcf))[_0x4b0f('0x40')](handleError(_0x1f4996,null));};exports[_0x4b0f('0x41')]=function(_0x5f3543,_0x4cb9e7){var _0xe724e7={'raw':![],'where':{'id':_0x5f3543[_0x4b0f('0x42')]['id']}},_0x1d8bd9={};_0x1d8bd9[_0x4b0f('0x32')]=_['keys'](db[_0x4b0f('0x43')]['rawAttributes']);_0x1d8bd9[_0x4b0f('0x2e')]=_['keys'](_0x5f3543['query']);_0x1d8bd9['filters']=_[_0x4b0f('0x31')](_0x1d8bd9[_0x4b0f('0x32')],_0x1d8bd9[_0x4b0f('0x2e')]);_0xe724e7[_0x4b0f('0x33')]=_[_0x4b0f('0x31')](_0x1d8bd9[_0x4b0f('0x32')],qs['fields'](_0x5f3543[_0x4b0f('0x2e')][_0x4b0f('0x34')]));_0xe724e7[_0x4b0f('0x33')]=_0xe724e7[_0x4b0f('0x33')][_0x4b0f('0x44')]?_0xe724e7[_0x4b0f('0x33')]:_0x1d8bd9[_0x4b0f('0x32')];if(_0x5f3543['query'][_0x4b0f('0x3d')]){_0xe724e7['include']=[{'all':!![]}];}_0xe724e7=_['merge']({},_0xe724e7,_0x5f3543[_0x4b0f('0x3b')]);return db[_0x4b0f('0x43')][_0x4b0f('0x45')](_0xe724e7)[_0x4b0f('0x3c')](handleEntityNotFound(_0x4cb9e7,null))[_0x4b0f('0x3c')](respondWithResult(_0x4cb9e7,null))[_0x4b0f('0x40')](handleError(_0x4cb9e7,null));};exports['create']=function(_0x35567e,_0x841e1d){return db[_0x4b0f('0x43')][_0x4b0f('0x46')](_0x35567e[_0x4b0f('0x47')],{})[_0x4b0f('0x3c')](respondWithResult(_0x841e1d,0xc9))[_0x4b0f('0x40')](handleError(_0x841e1d,null));};exports[_0x4b0f('0x48')]=function(_0x26a84d,_0x17d0c7){if(_0x26a84d[_0x4b0f('0x47')]['id']){delete _0x26a84d[_0x4b0f('0x47')]['id'];}return db[_0x4b0f('0x43')][_0x4b0f('0x45')]({'where':{'id':_0x26a84d[_0x4b0f('0x42')]['id']}})[_0x4b0f('0x3c')](handleEntityNotFound(_0x17d0c7,null))[_0x4b0f('0x3c')](saveUpdates(_0x26a84d[_0x4b0f('0x47')],null))['then'](respondWithResult(_0x17d0c7,null))[_0x4b0f('0x40')](handleError(_0x17d0c7,null));};exports['destroy']=function(_0xb9cd88,_0x13da26){return db['IntegrationReport'][_0x4b0f('0x45')]({'where':{'id':_0xb9cd88[_0x4b0f('0x42')]['id']}})[_0x4b0f('0x3c')](handleEntityNotFound(_0x13da26,null))[_0x4b0f('0x3c')](removeEntity(_0x13da26,null))['catch'](handleError(_0x13da26,null));};exports[_0x4b0f('0x49')]=function(_0x48e829,_0x37a36a){return db[_0x4b0f('0x43')]['describe']()['then'](respondWithResult(_0x37a36a,null))['catch'](handleError(_0x37a36a,null));};
\ No newline at end of file
+var _0x38bd=['set','Content-Range','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','IntegrationReport','rows','params','keys','catch','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit'];(function(_0x21fe32,_0x4aaf24){var _0x378359=function(_0x5639a7){while(--_0x5639a7){_0x21fe32['push'](_0x21fe32['shift']());}};_0x378359(++_0x4aaf24);}(_0x38bd,0x19c));var _0xd38b=function(_0x56db6b,_0x1a8ad3){_0x56db6b=_0x56db6b-0x0;var _0x507d77=_0x38bd[_0x56db6b];return _0x507d77;};'use strict';var emlformat=require(_0xd38b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd38b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd38b('0x2'));var moment=require(_0xd38b('0x3'));var BPromise=require(_0xd38b('0x4'));var Mustache=require(_0xd38b('0x5'));var util=require(_0xd38b('0x6'));var path=require(_0xd38b('0x7'));var sox=require(_0xd38b('0x8'));var csv=require(_0xd38b('0x9'));var ejs=require(_0xd38b('0xa'));var fs=require('fs');var fs_extra=require(_0xd38b('0xb'));var _=require('lodash');var squel=require(_0xd38b('0xc'));var crypto=require('crypto');var jsforce=require(_0xd38b('0xd'));var deskjs=require(_0xd38b('0xe'));var toCsv=require(_0xd38b('0x9'));var querystring=require(_0xd38b('0xf'));var Papa=require(_0xd38b('0x10'));var Redis=require(_0xd38b('0x11'));var authService=require(_0xd38b('0x12'));var qs=require(_0xd38b('0x13'));var as=require(_0xd38b('0x14'));var hardwareService=require(_0xd38b('0x15'));var logger=require(_0xd38b('0x16'))(_0xd38b('0x17'));var utils=require('../../config/utils');var config=require(_0xd38b('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd38b('0x19'))['db'];function respondWithStatusCode(_0x19bc3b,_0x56fc52){_0x56fc52=_0x56fc52||0xcc;return function(_0x4cad47){if(_0x4cad47){return _0x19bc3b['sendStatus'](_0x56fc52);}return _0x19bc3b[_0xd38b('0x1a')](_0x56fc52)['end']();};}function respondWithResult(_0x2b4f7b,_0x3a5e24){_0x3a5e24=_0x3a5e24||0xc8;return function(_0x516843){if(_0x516843){return _0x2b4f7b[_0xd38b('0x1a')](_0x3a5e24)[_0xd38b('0x1b')](_0x516843);}};}function respondWithFilteredResult(_0x341e09,_0xf8a163){return function(_0x1fdbf7){if(_0x1fdbf7){var _0xea72bc=typeof _0xf8a163[_0xd38b('0x1c')]===_0xd38b('0x1d')&&typeof _0xf8a163['limit']==='undefined';var _0x570006=_0x1fdbf7['count'];var _0x5a34da=_0xea72bc?0x0:_0xf8a163[_0xd38b('0x1c')];var _0x27324c=_0xea72bc?_0x1fdbf7[_0xd38b('0x1e')]:_0xf8a163[_0xd38b('0x1c')]+_0xf8a163[_0xd38b('0x1f')];var _0x4e2dbd;if(_0x27324c>=_0x570006){_0x27324c=_0x570006;_0x4e2dbd=0xc8;}else{_0x4e2dbd=0xce;}_0x341e09['status'](_0x4e2dbd);return _0x341e09[_0xd38b('0x20')](_0xd38b('0x21'),_0x5a34da+'-'+_0x27324c+'/'+_0x570006)[_0xd38b('0x1b')](_0x1fdbf7);}return null;};}function patchUpdates(_0x129b3a){return function(_0x57cf31){try{jsonpatch['apply'](_0x57cf31,_0x129b3a,!![]);}catch(_0x1d2bd0){return BPromise[_0xd38b('0x22')](_0x1d2bd0);}return _0x57cf31[_0xd38b('0x23')]();};}function saveUpdates(_0x4c8c01,_0x470d52){return function(_0x2ab341){if(_0x2ab341){return _0x2ab341[_0xd38b('0x24')](_0x4c8c01)[_0xd38b('0x25')](function(_0x47153e){return _0x47153e;});}return null;};}function removeEntity(_0x12a529,_0x95bbde){return function(_0xd57bf9){if(_0xd57bf9){return _0xd57bf9[_0xd38b('0x26')]()[_0xd38b('0x25')](function(){_0x12a529[_0xd38b('0x1a')](0xcc)[_0xd38b('0x27')]();});}};}function handleEntityNotFound(_0x5d157d,_0x577fab){return function(_0x5b69a7){if(!_0x5b69a7){_0x5d157d[_0xd38b('0x28')](0x194);}return _0x5b69a7;};}function handleError(_0x78c81c,_0x3416d0){_0x3416d0=_0x3416d0||0x1f4;return function(_0x255656){logger[_0xd38b('0x29')](_0x255656[_0xd38b('0x2a')]);if(_0x255656['name']){delete _0x255656[_0xd38b('0x2b')];}_0x78c81c[_0xd38b('0x1a')](_0x3416d0)[_0xd38b('0x2c')](_0x255656);};}exports[_0xd38b('0x2d')]=function(_0x2d6d97,_0x5ce298){var _0xb37bdd={},_0x4cb5fe={},_0x126278={'count':0x0,'rows':[]};var _0x2d25a2=_['map'](db['IntegrationReport']['rawAttributes'],function(_0x39d417){return{'name':_0x39d417['fieldName'],'type':_0x39d417[_0xd38b('0x2e')][_0xd38b('0x2f')]};});_0x4cb5fe['model']=_['map'](_0x2d25a2,_0xd38b('0x2b'));_0x4cb5fe['query']=_['keys'](_0x2d6d97[_0xd38b('0x30')]);_0x4cb5fe[_0xd38b('0x31')]=_[_0xd38b('0x32')](_0x4cb5fe[_0xd38b('0x33')],_0x4cb5fe[_0xd38b('0x30')]);_0xb37bdd[_0xd38b('0x34')]=_[_0xd38b('0x32')](_0x4cb5fe[_0xd38b('0x33')],qs['fields'](_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x35')]));_0xb37bdd[_0xd38b('0x34')]=_0xb37bdd[_0xd38b('0x34')][_0xd38b('0x36')]?_0xb37bdd[_0xd38b('0x34')]:_0x4cb5fe['model'];if(!_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x37')](_0xd38b('0x38'))){_0xb37bdd[_0xd38b('0x1f')]=qs[_0xd38b('0x1f')](_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x1f')]);_0xb37bdd['offset']=qs[_0xd38b('0x1c')](_0x2d6d97[_0xd38b('0x30')]['offset']);}_0xb37bdd[_0xd38b('0x39')]=qs['sort'](_0x2d6d97['query'][_0xd38b('0x3a')]);_0xb37bdd[_0xd38b('0x3b')]=qs[_0xd38b('0x31')](_[_0xd38b('0x3c')](_0x2d6d97[_0xd38b('0x30')],_0x4cb5fe[_0xd38b('0x31')]),_0x2d25a2);if(_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x3d')]){_0xb37bdd['where']=_[_0xd38b('0x3e')](_0xb37bdd[_0xd38b('0x3b')],{'$or':_['map'](_0x2d25a2,function(_0x538d82){if(_0x538d82[_0xd38b('0x2e')]!==_0xd38b('0x3f')){var _0x32465b={};_0x32465b[_0x538d82[_0xd38b('0x2b')]]={'$like':'%'+_0x2d6d97[_0xd38b('0x30')][_0xd38b('0x3d')]+'%'};return _0x32465b;}})});}_0xb37bdd=_[_0xd38b('0x3e')]({},_0xb37bdd,_0x2d6d97[_0xd38b('0x40')]);var _0x2de98a={'where':_0xb37bdd[_0xd38b('0x3b')]};return db[_0xd38b('0x41')][_0xd38b('0x1e')](_0x2de98a)[_0xd38b('0x25')](function(_0x569d90){_0x126278[_0xd38b('0x1e')]=_0x569d90;if(_0x2d6d97[_0xd38b('0x30')]['includeAll']){_0xb37bdd['include']=[{'all':!![]}];}return db['IntegrationReport']['findAll'](_0xb37bdd);})['then'](function(_0x3c27bd){_0x126278[_0xd38b('0x42')]=_0x3c27bd;return _0x126278;})[_0xd38b('0x25')](respondWithFilteredResult(_0x5ce298,_0xb37bdd))['catch'](handleError(_0x5ce298,null));};exports['show']=function(_0x47bf21,_0x56193a){var _0x4d0d1b={'raw':![],'where':{'id':_0x47bf21[_0xd38b('0x43')]['id']}},_0xbe494f={};_0xbe494f[_0xd38b('0x33')]=_[_0xd38b('0x44')](db[_0xd38b('0x41')]['rawAttributes']);_0xbe494f[_0xd38b('0x30')]=_['keys'](_0x47bf21[_0xd38b('0x30')]);_0xbe494f[_0xd38b('0x31')]=_[_0xd38b('0x32')](_0xbe494f[_0xd38b('0x33')],_0xbe494f[_0xd38b('0x30')]);_0x4d0d1b[_0xd38b('0x34')]=_[_0xd38b('0x32')](_0xbe494f[_0xd38b('0x33')],qs[_0xd38b('0x35')](_0x47bf21['query']['fields']));_0x4d0d1b[_0xd38b('0x34')]=_0x4d0d1b[_0xd38b('0x34')][_0xd38b('0x36')]?_0x4d0d1b[_0xd38b('0x34')]:_0xbe494f['model'];if(_0x47bf21['query']['includeAll']){_0x4d0d1b['include']=[{'all':!![]}];}_0x4d0d1b=_[_0xd38b('0x3e')]({},_0x4d0d1b,_0x47bf21[_0xd38b('0x40')]);return db['IntegrationReport']['find'](_0x4d0d1b)['then'](handleEntityNotFound(_0x56193a,null))[_0xd38b('0x25')](respondWithResult(_0x56193a,null))[_0xd38b('0x45')](handleError(_0x56193a,null));};exports[_0xd38b('0x46')]=function(_0x395672,_0x30cda2){return db[_0xd38b('0x41')]['create'](_0x395672[_0xd38b('0x47')],{})[_0xd38b('0x25')](respondWithResult(_0x30cda2,0xc9))[_0xd38b('0x45')](handleError(_0x30cda2,null));};exports[_0xd38b('0x24')]=function(_0x19fa7a,_0x22e264){if(_0x19fa7a['body']['id']){delete _0x19fa7a['body']['id'];}return db['IntegrationReport'][_0xd38b('0x48')]({'where':{'id':_0x19fa7a[_0xd38b('0x43')]['id']}})['then'](handleEntityNotFound(_0x22e264,null))[_0xd38b('0x25')](saveUpdates(_0x19fa7a['body'],null))['then'](respondWithResult(_0x22e264,null))[_0xd38b('0x45')](handleError(_0x22e264,null));};exports['destroy']=function(_0x1f1608,_0x14adf5){return db[_0xd38b('0x41')]['find']({'where':{'id':_0x1f1608['params']['id']}})[_0xd38b('0x25')](handleEntityNotFound(_0x14adf5,null))[_0xd38b('0x25')](removeEntity(_0x14adf5,null))[_0xd38b('0x45')](handleError(_0x14adf5,null));};exports[_0xd38b('0x49')]=function(_0x207a5c,_0xb046eb){return db[_0xd38b('0x41')]['describe']()[_0xd38b('0x25')](respondWithResult(_0xb046eb,null))[_0xd38b('0x45')](handleError(_0xb046eb,null));};
\ No newline at end of file
index e890e26..adb2a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd89f=['../../config/environment','exports','define','IntegrationReport','report_integration','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0xdfe983,_0x2091fe){var _0x481338=function(_0x29b79c){while(--_0x29b79c){_0xdfe983['push'](_0xdfe983['shift']());}};_0x481338(++_0x2091fe);}(_0xd89f,0xe1));var _0xfd89=function(_0x4281cb,_0x5c93cf){_0x4281cb=_0x4281cb-0x0;var _0x3a50cd=_0xd89f[_0x4281cb];return _0x3a50cd;};'use strict';var _=require('lodash');var util=require(_0xfd89('0x0'));var logger=require(_0xfd89('0x1'))('api');var moment=require(_0xfd89('0x2'));var BPromise=require(_0xfd89('0x3'));var rp=require(_0xfd89('0x4'));var fs=require('fs');var path=require(_0xfd89('0x5'));var rimraf=require('rimraf');var config=require(_0xfd89('0x6'));var attributes=require('./integrationReport.attributes');module[_0xfd89('0x7')]=function(_0x310fb5,_0x2a4f66){return _0x310fb5[_0xfd89('0x8')](_0xfd89('0x9'),attributes,{'tableName':_0xfd89('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80ac=['../../config/environment','./integrationReport.attributes','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0xe5c04e,_0x28b502){var _0x40a21a=function(_0x31154f){while(--_0x31154f){_0xe5c04e['push'](_0xe5c04e['shift']());}};_0x40a21a(++_0x28b502);}(_0x80ac,0x65));var _0xc80a=function(_0x2cd04b,_0x4f1164){_0x2cd04b=_0x2cd04b-0x0;var _0x1636e3=_0x80ac[_0x2cd04b];return _0x1636e3;};'use strict';var _=require(_0xc80a('0x0'));var util=require(_0xc80a('0x1'));var logger=require(_0xc80a('0x2'))(_0xc80a('0x3'));var moment=require('moment');var BPromise=require(_0xc80a('0x4'));var rp=require(_0xc80a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc80a('0x6'));var config=require(_0xc80a('0x7'));var attributes=require(_0xc80a('0x8'));module['exports']=function(_0x2a61b0,_0x52a9c9){return _0x2a61b0[_0xc80a('0x9')](_0xc80a('0xa'),attributes,{'tableName':_0xc80a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcbc97f..2c309ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x34e584,_0x55de68){var _0x40beb7=function(_0x7e1762){while(--_0x7e1762){_0x34e584['push'](_0x34e584['shift']());}};_0x40beb7(++_0x55de68);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xda19=['error','message','info','result','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4bd984,_0x1cbbe3){var _0x20cc4d=function(_0x195e42){while(--_0x195e42){_0x4bd984['push'](_0x4bd984['shift']());}};_0x20cc4d(++_0x1cbbe3);}(_0xda19,0xd5));var _0x9da1=function(_0x2cbb78,_0x282b39){_0x2cbb78=_0x2cbb78-0x0;var _0x53ee5e=_0xda19[_0x2cbb78];return _0x53ee5e;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var moment=require(_0x9da1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9da1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9da1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9da1('0x4'))(_0x9da1('0x5'));var config=require(_0x9da1('0x6'));var jayson=require(_0x9da1('0x7'));var client=jayson[_0x9da1('0x8')][_0x9da1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e4f7,_0x2c3cdd,_0x1c24e6){return new BPromise(function(_0x5e2d18,_0x47df89){return client['request'](_0x23e4f7,_0x1c24e6)['then'](function(_0x417312){logger['info'](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));logger[_0x9da1('0xc')](_0x9da1('0xd'),_0x2c3cdd,_0x9da1('0xb'),JSON[_0x9da1('0xe')](_0x417312));if(_0x417312[_0x9da1('0xf')]){if(_0x417312['error']['code']===0x1f4){logger[_0x9da1('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x2c3cdd,_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);return _0x47df89(_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);}logger['error'](_0x9da1('0xa'),_0x2c3cdd,_0x417312['error']['message']);return _0x5e2d18(_0x417312[_0x9da1('0xf')]['message']);}else{logger[_0x9da1('0x11')](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));_0x5e2d18(_0x417312[_0x9da1('0x12')][_0x9da1('0x10')]);}})['catch'](function(_0x16f75a){logger[_0x9da1('0xf')](_0x9da1('0xa'),_0x2c3cdd,_0x16f75a);_0x47df89(_0x16f75a);});});}
\ No newline at end of file
index d4cf28c..0493775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacd6=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','index','/:id','isAuthenticated','show','/:id/sub_intervals','post','create','addInterval','addIntervals'];(function(_0x59f7b8,_0xb2ac21){var _0x7b28c5=function(_0x427d2d){while(--_0x427d2d){_0x59f7b8['push'](_0x59f7b8['shift']());}};_0x7b28c5(++_0xb2ac21);}(_0xacd6,0xef));var _0x6acd=function(_0x2534cf,_0x545be6){_0x2534cf=_0x2534cf-0x0;var _0x221461=_0xacd6[_0x2534cf];return _0x221461;};'use strict';var multer=require(_0x6acd('0x0'));var util=require(_0x6acd('0x1'));var path=require(_0x6acd('0x2'));var timeout=require(_0x6acd('0x3'));var express=require(_0x6acd('0x4'));var router=express[_0x6acd('0x5')]();var fs_extra=require(_0x6acd('0x6'));var auth=require(_0x6acd('0x7'));var interaction=require(_0x6acd('0x8'));var config=require(_0x6acd('0x9'));var controller=require(_0x6acd('0xa'));router[_0x6acd('0xb')]('/',auth['isAuthenticated'](),controller[_0x6acd('0xc')]);router[_0x6acd('0xb')](_0x6acd('0xd'),auth[_0x6acd('0xe')](),controller[_0x6acd('0xf')]);router[_0x6acd('0xb')](_0x6acd('0x10'),auth[_0x6acd('0xe')](),controller['getIntervals']);router[_0x6acd('0x11')]('/',auth[_0x6acd('0xe')](),controller[_0x6acd('0x12')]);router[_0x6acd('0x11')](_0x6acd('0x10'),auth[_0x6acd('0xe')](),controller[_0x6acd('0x13')]);router['post']('/:id/sub_intervals/create_many',auth[_0x6acd('0xe')](),controller[_0x6acd('0x14')]);router[_0x6acd('0x15')]('/:id',auth[_0x6acd('0xe')](),controller[_0x6acd('0x16')]);router[_0x6acd('0x17')](_0x6acd('0xd'),auth[_0x6acd('0xe')](),controller[_0x6acd('0x18')]);module[_0x6acd('0x19')]=router;
\ No newline at end of file
+var _0x3d2f=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','index','isAuthenticated','show','/:id/sub_intervals','post','create','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','exports'];(function(_0x23aaec,_0x26ded9){var _0x3b571b=function(_0x582c9f){while(--_0x582c9f){_0x23aaec['push'](_0x23aaec['shift']());}};_0x3b571b(++_0x26ded9);}(_0x3d2f,0x78));var _0xf3d2=function(_0xb1bd34,_0xf015f3){_0xb1bd34=_0xb1bd34-0x0;var _0xa97119=_0x3d2f[_0xb1bd34];return _0xa97119;};'use strict';var multer=require(_0xf3d2('0x0'));var util=require(_0xf3d2('0x1'));var path=require(_0xf3d2('0x2'));var timeout=require(_0xf3d2('0x3'));var express=require(_0xf3d2('0x4'));var router=express['Router']();var fs_extra=require(_0xf3d2('0x5'));var auth=require(_0xf3d2('0x6'));var interaction=require(_0xf3d2('0x7'));var config=require(_0xf3d2('0x8'));var controller=require(_0xf3d2('0x9'));router[_0xf3d2('0xa')]('/',auth['isAuthenticated'](),controller[_0xf3d2('0xb')]);router[_0xf3d2('0xa')]('/:id',auth[_0xf3d2('0xc')](),controller[_0xf3d2('0xd')]);router[_0xf3d2('0xa')](_0xf3d2('0xe'),auth['isAuthenticated'](),controller['getIntervals']);router[_0xf3d2('0xf')]('/',auth[_0xf3d2('0xc')](),controller[_0xf3d2('0x10')]);router[_0xf3d2('0xf')](_0xf3d2('0xe'),auth[_0xf3d2('0xc')](),controller['addInterval']);router['post'](_0xf3d2('0x11'),auth['isAuthenticated'](),controller[_0xf3d2('0x12')]);router[_0xf3d2('0x13')](_0xf3d2('0x14'),auth[_0xf3d2('0xc')](),controller[_0xf3d2('0x15')]);router[_0xf3d2('0x16')](_0xf3d2('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xf3d2('0x17')]=router;
\ No newline at end of file
index 0fc45dd..c85b496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb475=['STRING','exports'];(function(_0x8ee4d4,_0x1ac963){var _0x53b7b7=function(_0x34503c){while(--_0x34503c){_0x8ee4d4['push'](_0x8ee4d4['shift']());}};_0x53b7b7(++_0x1ac963);}(_0xb475,0x1d5));var _0x5b47=function(_0xcaf223,_0xd39f07){_0xcaf223=_0xcaf223-0x0;var _0x17e00d=_0xb475[_0xcaf223];return _0x17e00d;};'use strict';var Sequelize=require('sequelize');module[_0x5b47('0x0')]={'name':{'type':Sequelize[_0x5b47('0x1')]},'description':{'type':Sequelize[_0x5b47('0x1')]},'interval':{'type':Sequelize[_0x5b47('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa674=['STRING','sequelize','exports'];(function(_0x2c63a2,_0x3ff8a2){var _0x5e3921=function(_0x28ce20){while(--_0x28ce20){_0x2c63a2['push'](_0x2c63a2['shift']());}};_0x5e3921(++_0x3ff8a2);}(_0xa674,0x88));var _0x4a67=function(_0x2cd5fc,_0x5c8583){_0x2cd5fc=_0x2cd5fc-0x0;var _0x5e52d0=_0xa674[_0x2cd5fc];return _0x5e52d0;};'use strict';var Sequelize=require(_0x4a67('0x0'));module[_0x4a67('0x1')]={'name':{'type':Sequelize[_0x4a67('0x2')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4a67('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 234f6cd..a5188dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa860=['sort','pick','where','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','keys','rawAttributes','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addInterval','IntervalId','getIntervals','findOne','hasOwnProperty','sequelize','transaction','bulkCreate','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','limit','undefined','count','reject','save','then','destroy','get','Intervals','UserProfileResource','error','stack','send','index','map','Interval','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','nolimit','offset','order'];(function(_0x5d1e6a,_0x323819){var _0x3e4189=function(_0x569bfd){while(--_0x569bfd){_0x5d1e6a['push'](_0x5d1e6a['shift']());}};_0x3e4189(++_0x323819);}(_0xa860,0x122));var _0x0a86=function(_0x1a2390,_0x41df8f){_0x1a2390=_0x1a2390-0x0;var _0x422882=_0xa860[_0x1a2390];return _0x422882;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a86('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0a86('0x1'));var rp=require('request-promise');var moment=require(_0x0a86('0x2'));var BPromise=require(_0x0a86('0x3'));var Mustache=require(_0x0a86('0x4'));var util=require(_0x0a86('0x5'));var path=require(_0x0a86('0x6'));var sox=require(_0x0a86('0x7'));var csv=require('to-csv');var ejs=require(_0x0a86('0x8'));var fs=require('fs');var fs_extra=require(_0x0a86('0x9'));var _=require(_0x0a86('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0a86('0xb'));var Papa=require(_0x0a86('0xc'));var Redis=require(_0x0a86('0xd'));var authService=require(_0x0a86('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a86('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x0a86('0x10'));var config=require(_0x0a86('0x11'));var licenseUtil=require(_0x0a86('0x12'));var db=require(_0x0a86('0x13'))['db'];var extensions=require(_0x0a86('0x14'));function respondWithStatusCode(_0x3bc266,_0x4ccae9){_0x4ccae9=_0x4ccae9||0xcc;return function(_0x110286){if(_0x110286){return _0x3bc266[_0x0a86('0x15')](_0x4ccae9);}return _0x3bc266[_0x0a86('0x16')](_0x4ccae9)[_0x0a86('0x17')]();};}function respondWithResult(_0x3714ab,_0x3995b1){_0x3995b1=_0x3995b1||0xc8;return function(_0x296892){if(_0x296892){return _0x3714ab['status'](_0x3995b1)[_0x0a86('0x18')](_0x296892);}};}function respondWithFilteredResult(_0x530702,_0x23d5ed){return function(_0x2f3756){if(_0x2f3756){var _0x2135c8=typeof _0x23d5ed['offset']==='undefined'&&typeof _0x23d5ed[_0x0a86('0x19')]===_0x0a86('0x1a');var _0x1958d7=_0x2f3756[_0x0a86('0x1b')];var _0x33500f=_0x2135c8?0x0:_0x23d5ed['offset'];var _0x341b54=_0x2135c8?_0x2f3756[_0x0a86('0x1b')]:_0x23d5ed['offset']+_0x23d5ed[_0x0a86('0x19')];var _0x80dd15;if(_0x341b54>=_0x1958d7){_0x341b54=_0x1958d7;_0x80dd15=0xc8;}else{_0x80dd15=0xce;}_0x530702[_0x0a86('0x16')](_0x80dd15);return _0x530702['set']('Content-Range',_0x33500f+'-'+_0x341b54+'/'+_0x1958d7)[_0x0a86('0x18')](_0x2f3756);}return null;};}function patchUpdates(_0x15a5ce){return function(_0x6ca3eb){try{jsonpatch['apply'](_0x6ca3eb,_0x15a5ce,!![]);}catch(_0x4b3c6c){return BPromise[_0x0a86('0x1c')](_0x4b3c6c);}return _0x6ca3eb[_0x0a86('0x1d')]();};}function saveUpdates(_0x4b259d,_0x280fcd){return function(_0x49862c){if(_0x49862c){return _0x49862c['update'](_0x4b259d)[_0x0a86('0x1e')](function(_0x1823b5){return _0x1823b5;});}return null;};}function removeEntity(_0x278b35,_0x5b5ca9){return function(_0x1636ed){if(_0x1636ed){return _0x1636ed[_0x0a86('0x1f')]()[_0x0a86('0x1e')](function(){var _0xb90175=_0x1636ed[_0x0a86('0x20')]({'plain':!![]});var _0x5a3425=_0x0a86('0x21');return db[_0x0a86('0x22')][_0x0a86('0x1f')]({'where':{'type':_0x5a3425,'resourceId':_0xb90175['id']}})[_0x0a86('0x1e')](function(){return _0x1636ed;});})[_0x0a86('0x1e')](function(){_0x278b35[_0x0a86('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54f6ac,_0xde94bb){return function(_0x244c7e){if(!_0x244c7e){_0x54f6ac[_0x0a86('0x15')](0x194);}return _0x244c7e;};}function handleError(_0x20924c,_0x65535b){_0x65535b=_0x65535b||0x1f4;return function(_0x454bdf){logger[_0x0a86('0x23')](_0x454bdf[_0x0a86('0x24')]);if(_0x454bdf['name']){delete _0x454bdf['name'];}_0x20924c[_0x0a86('0x16')](_0x65535b)[_0x0a86('0x25')](_0x454bdf);};}exports[_0x0a86('0x26')]=function(_0x248c23,_0x5d1335){var _0x2e250d={},_0x432020={},_0x2eab9b={'count':0x0,'rows':[]};var _0x3ea9d8=_[_0x0a86('0x27')](db[_0x0a86('0x28')]['rawAttributes'],function(_0x456950){return{'name':_0x456950[_0x0a86('0x29')],'type':_0x456950[_0x0a86('0x2a')]['key']};});_0x432020[_0x0a86('0x2b')]=_[_0x0a86('0x27')](_0x3ea9d8,_0x0a86('0x2c'));_0x432020[_0x0a86('0x2d')]=_['keys'](_0x248c23['query']);_0x432020[_0x0a86('0x2e')]=_[_0x0a86('0x2f')](_0x432020[_0x0a86('0x2b')],_0x432020[_0x0a86('0x2d')]);_0x2e250d[_0x0a86('0x30')]=_['intersection'](_0x432020[_0x0a86('0x2b')],qs[_0x0a86('0x31')](_0x248c23[_0x0a86('0x2d')][_0x0a86('0x31')]));_0x2e250d[_0x0a86('0x30')]=_0x2e250d[_0x0a86('0x30')][_0x0a86('0x32')]?_0x2e250d[_0x0a86('0x30')]:_0x432020[_0x0a86('0x2b')];if(!_0x248c23[_0x0a86('0x2d')]['hasOwnProperty'](_0x0a86('0x33'))){_0x2e250d['limit']=qs[_0x0a86('0x19')](_0x248c23[_0x0a86('0x2d')][_0x0a86('0x19')]);_0x2e250d[_0x0a86('0x34')]=qs['offset'](_0x248c23[_0x0a86('0x2d')][_0x0a86('0x34')]);}_0x2e250d[_0x0a86('0x35')]=qs[_0x0a86('0x36')](_0x248c23[_0x0a86('0x2d')][_0x0a86('0x36')]);_0x2e250d['where']=qs['filters'](_[_0x0a86('0x37')](_0x248c23[_0x0a86('0x2d')],_0x432020[_0x0a86('0x2e')]),_0x3ea9d8);if(_0x248c23[_0x0a86('0x2d')]['filter']){_0x2e250d[_0x0a86('0x38')]=_[_0x0a86('0x39')](_0x2e250d['where'],{'$or':_[_0x0a86('0x27')](_0x3ea9d8,function(_0x37a501){if(_0x37a501[_0x0a86('0x2a')]!==_0x0a86('0x3a')){var _0x4088e3={};_0x4088e3[_0x37a501[_0x0a86('0x2c')]]={'$like':'%'+_0x248c23[_0x0a86('0x2d')][_0x0a86('0x3b')]+'%'};return _0x4088e3;}})});}_0x2e250d=_['merge']({},_0x2e250d,_0x248c23['options']);var _0x3e0387={'where':_0x2e250d['where']};return db[_0x0a86('0x28')]['count'](_0x3e0387)[_0x0a86('0x1e')](function(_0x2aa43f){_0x2eab9b[_0x0a86('0x1b')]=_0x2aa43f;if(_0x248c23[_0x0a86('0x2d')]['includeAll']){_0x2e250d[_0x0a86('0x3c')]=[{'all':!![]}];}return db[_0x0a86('0x28')][_0x0a86('0x3d')](_0x2e250d);})['then'](function(_0x3bd018){_0x2eab9b[_0x0a86('0x3e')]=_0x3bd018;return _0x2eab9b;})[_0x0a86('0x1e')](respondWithFilteredResult(_0x5d1335,_0x2e250d))[_0x0a86('0x3f')](handleError(_0x5d1335,null));};exports[_0x0a86('0x40')]=function(_0x530172,_0x5403c0){var _0x3cd99d={'raw':!![],'where':{'id':_0x530172[_0x0a86('0x41')]['id']}},_0x9b8cb6={};_0x9b8cb6[_0x0a86('0x2b')]=_[_0x0a86('0x42')](db['Interval'][_0x0a86('0x43')]);_0x9b8cb6[_0x0a86('0x2d')]=_[_0x0a86('0x42')](_0x530172[_0x0a86('0x2d')]);_0x9b8cb6['filters']=_[_0x0a86('0x2f')](_0x9b8cb6[_0x0a86('0x2b')],_0x9b8cb6[_0x0a86('0x2d')]);_0x3cd99d['attributes']=_[_0x0a86('0x2f')](_0x9b8cb6[_0x0a86('0x2b')],qs[_0x0a86('0x31')](_0x530172[_0x0a86('0x2d')]['fields']));_0x3cd99d['attributes']=_0x3cd99d[_0x0a86('0x30')]['length']?_0x3cd99d[_0x0a86('0x30')]:_0x9b8cb6[_0x0a86('0x2b')];if(_0x530172['query']['includeAll']){_0x3cd99d[_0x0a86('0x3c')]=[{'all':!![]}];}_0x3cd99d=_['merge']({},_0x3cd99d,_0x530172[_0x0a86('0x44')]);return db[_0x0a86('0x28')]['find'](_0x3cd99d)[_0x0a86('0x1e')](handleEntityNotFound(_0x5403c0,null))[_0x0a86('0x1e')](respondWithResult(_0x5403c0,null))[_0x0a86('0x3f')](handleError(_0x5403c0,null));};exports['create']=function(_0x4c3a6b,_0x2dae8b){return db[_0x0a86('0x28')][_0x0a86('0x45')](_0x4c3a6b[_0x0a86('0x46')],{})[_0x0a86('0x1e')](function(_0x4076f3){var _0x4cb34e=_0x4c3a6b[_0x0a86('0x47')]['get']({'plain':!![]});if(!_0x4cb34e)throw new Error(_0x0a86('0x48'));if(_0x4cb34e[_0x0a86('0x49')]==='user'){var _0x2b3cb6=_0x4076f3[_0x0a86('0x20')]({'plain':!![]});var _0x3e7490=_0x0a86('0x21');return db['UserProfileSection'][_0x0a86('0x4a')]({'where':{'name':_0x3e7490,'userProfileId':_0x4cb34e['userProfileId']},'raw':!![]})[_0x0a86('0x1e')](function(_0xddde8c){if(_0xddde8c&&_0xddde8c[_0x0a86('0x4b')]===0x0){return db[_0x0a86('0x22')][_0x0a86('0x45')]({'name':_0x2b3cb6[_0x0a86('0x2c')],'resourceId':_0x2b3cb6['id'],'type':_0xddde8c[_0x0a86('0x2c')],'sectionId':_0xddde8c['id']},{})[_0x0a86('0x1e')](function(){return _0x4076f3;});}else{return _0x4076f3;}})[_0x0a86('0x3f')](function(_0x2cf0e9){logger[_0x0a86('0x23')](_0x0a86('0x4c'),_0x2cf0e9);throw _0x2cf0e9;});}return _0x4076f3;})[_0x0a86('0x1e')](respondWithResult(_0x2dae8b,0xc9))[_0x0a86('0x3f')](handleError(_0x2dae8b,null));};exports[_0x0a86('0x4d')]=function(_0x1bce05,_0x5384bc){if(_0x1bce05[_0x0a86('0x46')]['id']){delete _0x1bce05['body']['id'];}return db[_0x0a86('0x28')][_0x0a86('0x4a')]({'where':{'id':_0x1bce05['params']['id']}})[_0x0a86('0x1e')](handleEntityNotFound(_0x5384bc,null))['then'](saveUpdates(_0x1bce05['body'],null))[_0x0a86('0x1e')](respondWithResult(_0x5384bc,null))[_0x0a86('0x3f')](handleError(_0x5384bc,null));};exports[_0x0a86('0x1f')]=function(_0x51e033,_0xee133d){return db['Interval'][_0x0a86('0x4a')]({'where':{'id':_0x51e033[_0x0a86('0x41')]['id']}})[_0x0a86('0x1e')](handleEntityNotFound(_0xee133d,null))[_0x0a86('0x1e')](removeEntity(_0xee133d,null))[_0x0a86('0x3f')](handleError(_0xee133d,null));};exports[_0x0a86('0x4e')]=function(_0xe17ee5,_0xd03248,_0x2e0f73){if(_0xe17ee5[_0x0a86('0x46')]['id']){delete _0xe17ee5[_0x0a86('0x46')]['id'];}return db['Interval'][_0x0a86('0x4a')]({'where':{'id':_0xe17ee5['params']['id']}})[_0x0a86('0x1e')](handleEntityNotFound(_0xd03248,null))[_0x0a86('0x1e')](function(_0x5ea5db){if(_0x5ea5db){_0xe17ee5[_0x0a86('0x46')][_0x0a86('0x4f')]=_0x5ea5db['id'];return db['Interval'][_0x0a86('0x45')](_0xe17ee5[_0x0a86('0x46')]);}})['then'](respondWithResult(_0xd03248,null))['catch'](handleError(_0xd03248,null));};exports[_0x0a86('0x50')]=function(_0x2bb510,_0x190383,_0x542030){var _0x5351ee={};var _0x318e6c={};var _0x29e617;var _0x3782f7;return db[_0x0a86('0x28')][_0x0a86('0x51')]({'where':{'id':_0x2bb510['params']['id']}})['then'](handleEntityNotFound(_0x190383,null))[_0x0a86('0x1e')](function(_0x4326bd){if(_0x4326bd){_0x29e617=_0x4326bd;_0x318e6c[_0x0a86('0x2b')]=_[_0x0a86('0x42')](db[_0x0a86('0x28')][_0x0a86('0x43')]);_0x318e6c[_0x0a86('0x2d')]=_[_0x0a86('0x42')](_0x2bb510[_0x0a86('0x2d')]);_0x318e6c[_0x0a86('0x2e')]=_[_0x0a86('0x2f')](_0x318e6c[_0x0a86('0x2b')],_0x318e6c[_0x0a86('0x2d')]);_0x5351ee['attributes']=_[_0x0a86('0x2f')](_0x318e6c[_0x0a86('0x2b')],qs['fields'](_0x2bb510['query']['fields']));_0x5351ee[_0x0a86('0x30')]=_0x5351ee['attributes'][_0x0a86('0x32')]?_0x5351ee['attributes']:_0x318e6c[_0x0a86('0x2b')];_0x5351ee[_0x0a86('0x35')]=qs[_0x0a86('0x36')](_0x2bb510[_0x0a86('0x2d')][_0x0a86('0x36')]);_0x5351ee[_0x0a86('0x38')]=qs[_0x0a86('0x2e')](_[_0x0a86('0x37')](_0x2bb510[_0x0a86('0x2d')],_0x318e6c['filters']));if(_0x2bb510['query'][_0x0a86('0x3b')]){_0x5351ee[_0x0a86('0x38')]=_[_0x0a86('0x39')](_0x5351ee[_0x0a86('0x38')],{'$or':_[_0x0a86('0x27')](_0x5351ee[_0x0a86('0x30')],function(_0x320189){var _0xc7a536={};_0xc7a536[_0x320189]={'$like':'%'+_0x2bb510['query']['filter']+'%'};return _0xc7a536;})});}_0x5351ee=_['merge']({},_0x5351ee,_0x2bb510[_0x0a86('0x44')]);return _0x29e617[_0x0a86('0x50')](_0x5351ee);}})[_0x0a86('0x1e')](function(_0x1fc7c0){if(_0x1fc7c0){_0x3782f7=_0x1fc7c0['length'];if(!_0x2bb510[_0x0a86('0x2d')][_0x0a86('0x52')](_0x0a86('0x33'))){_0x5351ee[_0x0a86('0x19')]=qs[_0x0a86('0x19')](_0x2bb510[_0x0a86('0x2d')]['limit']);_0x5351ee['offset']=qs[_0x0a86('0x34')](_0x2bb510[_0x0a86('0x2d')][_0x0a86('0x34')]);}return _0x29e617[_0x0a86('0x50')](_0x5351ee);}})['then'](function(_0x32c4a5){if(_0x32c4a5){return _0x32c4a5?{'count':_0x3782f7,'rows':_0x32c4a5}:null;}})[_0x0a86('0x1e')](respondWithResult(_0x190383,null))[_0x0a86('0x3f')](handleError(_0x190383,null));};exports['addIntervals']=function(_0x55e003,_0x3ea42c,_0x18e4b0){return db[_0x0a86('0x28')]['findOne']({'where':{'id':_0x55e003[_0x0a86('0x41')]['id']}})[_0x0a86('0x1e')](handleEntityNotFound(_0x3ea42c,null))['then'](function(_0x466c88){if(_0x466c88){return db[_0x0a86('0x53')][_0x0a86('0x54')](function(_0xd618c2){return db[_0x0a86('0x28')]['destroy']({'where':{'IntervalId':_0x55e003['params']['id']},'transaction':_0xd618c2})['then'](function(_0x14a380){var _0x37cbe2=_['map'](_0x55e003[_0x0a86('0x46')],function(_0x2d2a39){delete _0x2d2a39['id'];_0x2d2a39['IntervalId']=_0x55e003['params']['id'];return _0x2d2a39;});return db[_0x0a86('0x28')][_0x0a86('0x55')](_0x37cbe2,{'transaction':_0xd618c2});});})[_0x0a86('0x1e')](function(){return db[_0x0a86('0x28')][_0x0a86('0x3d')]({'where':{'IntervalId':_0x55e003[_0x0a86('0x41')]['id']}});});}})[_0x0a86('0x1e')](respondWithResult(_0x3ea42c,null))[_0x0a86('0x3f')](handleError(_0x3ea42c,null));};
\ No newline at end of file
+var _0x6bd2=['sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Interval','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','VIRTUAL','options','include','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Intervals','userProfileId','autoAssociation','addInterval','IntervalId','getIntervals','findOne','pick','addIntervals','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../components/extensions/rewrite'];(function(_0x10ee97,_0x314f76){var _0x2575c6=function(_0x1928a6){while(--_0x1928a6){_0x10ee97['push'](_0x10ee97['shift']());}};_0x2575c6(++_0x314f76);}(_0x6bd2,0x14b));var _0x26bd=function(_0xeedc37,_0x471981){_0xeedc37=_0xeedc37-0x0;var _0x3a4bcd=_0x6bd2[_0xeedc37];return _0x3a4bcd;};'use strict';var emlformat=require(_0x26bd('0x0'));var rimraf=require(_0x26bd('0x1'));var zipdir=require(_0x26bd('0x2'));var jsonpatch=require(_0x26bd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x26bd('0x4'));var Mustache=require('mustache');var util=require(_0x26bd('0x5'));var path=require(_0x26bd('0x6'));var sox=require(_0x26bd('0x7'));var csv=require(_0x26bd('0x8'));var ejs=require(_0x26bd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26bd('0xa'));var squel=require('squel');var crypto=require(_0x26bd('0xb'));var jsforce=require(_0x26bd('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x26bd('0x8'));var querystring=require('querystring');var Papa=require(_0x26bd('0xd'));var Redis=require(_0x26bd('0xe'));var authService=require(_0x26bd('0xf'));var qs=require(_0x26bd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x26bd('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x26bd('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x26bd('0x13'));var db=require('../../mysqldb')['db'];var extensions=require(_0x26bd('0x14'));function respondWithStatusCode(_0x377190,_0xbbe53b){_0xbbe53b=_0xbbe53b||0xcc;return function(_0x2baebc){if(_0x2baebc){return _0x377190[_0x26bd('0x15')](_0xbbe53b);}return _0x377190['status'](_0xbbe53b)[_0x26bd('0x16')]();};}function respondWithResult(_0xbcd2fa,_0x42b31c){_0x42b31c=_0x42b31c||0xc8;return function(_0xaf09a0){if(_0xaf09a0){return _0xbcd2fa[_0x26bd('0x17')](_0x42b31c)['json'](_0xaf09a0);}};}function respondWithFilteredResult(_0x2148c3,_0xad771d){return function(_0x11327d){if(_0x11327d){var _0x1d2406=typeof _0xad771d[_0x26bd('0x18')]===_0x26bd('0x19')&&typeof _0xad771d['limit']===_0x26bd('0x19');var _0x53030a=_0x11327d[_0x26bd('0x1a')];var _0x1e85e4=_0x1d2406?0x0:_0xad771d['offset'];var _0x2996f5=_0x1d2406?_0x11327d[_0x26bd('0x1a')]:_0xad771d[_0x26bd('0x18')]+_0xad771d[_0x26bd('0x1b')];var _0x1edadf;if(_0x2996f5>=_0x53030a){_0x2996f5=_0x53030a;_0x1edadf=0xc8;}else{_0x1edadf=0xce;}_0x2148c3[_0x26bd('0x17')](_0x1edadf);return _0x2148c3[_0x26bd('0x1c')](_0x26bd('0x1d'),_0x1e85e4+'-'+_0x2996f5+'/'+_0x53030a)[_0x26bd('0x1e')](_0x11327d);}return null;};}function patchUpdates(_0x44bad5){return function(_0x2a6185){try{jsonpatch[_0x26bd('0x1f')](_0x2a6185,_0x44bad5,!![]);}catch(_0x5ccd1e){return BPromise[_0x26bd('0x20')](_0x5ccd1e);}return _0x2a6185[_0x26bd('0x21')]();};}function saveUpdates(_0x23f968,_0x4acfd0){return function(_0x25e431){if(_0x25e431){return _0x25e431[_0x26bd('0x22')](_0x23f968)[_0x26bd('0x23')](function(_0x474ead){return _0x474ead;});}return null;};}function removeEntity(_0x1ebbfd,_0x2dcaf4){return function(_0x2a5ee8){if(_0x2a5ee8){return _0x2a5ee8[_0x26bd('0x24')]()[_0x26bd('0x23')](function(){var _0x1beb0b=_0x2a5ee8[_0x26bd('0x25')]({'plain':!![]});var _0x19808d='Intervals';return db[_0x26bd('0x26')][_0x26bd('0x24')]({'where':{'type':_0x19808d,'resourceId':_0x1beb0b['id']}})[_0x26bd('0x23')](function(){return _0x2a5ee8;});})[_0x26bd('0x23')](function(){_0x1ebbfd[_0x26bd('0x17')](0xcc)[_0x26bd('0x16')]();});}};}function handleEntityNotFound(_0x11c5e6,_0x325e2e){return function(_0x511fff){if(!_0x511fff){_0x11c5e6[_0x26bd('0x15')](0x194);}return _0x511fff;};}function handleError(_0x3ab55d,_0x39151f){_0x39151f=_0x39151f||0x1f4;return function(_0x2c6ce6){logger[_0x26bd('0x27')](_0x2c6ce6[_0x26bd('0x28')]);if(_0x2c6ce6['name']){delete _0x2c6ce6[_0x26bd('0x29')];}_0x3ab55d[_0x26bd('0x17')](_0x39151f)[_0x26bd('0x2a')](_0x2c6ce6);};}exports[_0x26bd('0x2b')]=function(_0x352ef2,_0x3d793e){var _0x2b91cb={},_0x14f697={},_0x3ae415={'count':0x0,'rows':[]};var _0x5c4be2=_[_0x26bd('0x2c')](db[_0x26bd('0x2d')][_0x26bd('0x2e')],function(_0x335e58){return{'name':_0x335e58[_0x26bd('0x2f')],'type':_0x335e58['type']['key']};});_0x14f697[_0x26bd('0x30')]=_[_0x26bd('0x2c')](_0x5c4be2,_0x26bd('0x29'));_0x14f697[_0x26bd('0x31')]=_[_0x26bd('0x32')](_0x352ef2[_0x26bd('0x31')]);_0x14f697['filters']=_[_0x26bd('0x33')](_0x14f697[_0x26bd('0x30')],_0x14f697['query']);_0x2b91cb[_0x26bd('0x34')]=_[_0x26bd('0x33')](_0x14f697[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x35')]));_0x2b91cb[_0x26bd('0x34')]=_0x2b91cb[_0x26bd('0x34')][_0x26bd('0x36')]?_0x2b91cb[_0x26bd('0x34')]:_0x14f697[_0x26bd('0x30')];if(!_0x352ef2[_0x26bd('0x31')][_0x26bd('0x37')](_0x26bd('0x38'))){_0x2b91cb['limit']=qs[_0x26bd('0x1b')](_0x352ef2['query'][_0x26bd('0x1b')]);_0x2b91cb[_0x26bd('0x18')]=qs['offset'](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x18')]);}_0x2b91cb['order']=qs[_0x26bd('0x39')](_0x352ef2[_0x26bd('0x31')][_0x26bd('0x39')]);_0x2b91cb[_0x26bd('0x3a')]=qs[_0x26bd('0x3b')](_['pick'](_0x352ef2[_0x26bd('0x31')],_0x14f697[_0x26bd('0x3b')]),_0x5c4be2);if(_0x352ef2[_0x26bd('0x31')][_0x26bd('0x3c')]){_0x2b91cb[_0x26bd('0x3a')]=_[_0x26bd('0x3d')](_0x2b91cb[_0x26bd('0x3a')],{'$or':_[_0x26bd('0x2c')](_0x5c4be2,function(_0x13df34){if(_0x13df34[_0x26bd('0x3e')]!==_0x26bd('0x3f')){var _0x42e742={};_0x42e742[_0x13df34['name']]={'$like':'%'+_0x352ef2[_0x26bd('0x31')][_0x26bd('0x3c')]+'%'};return _0x42e742;}})});}_0x2b91cb=_['merge']({},_0x2b91cb,_0x352ef2[_0x26bd('0x40')]);var _0x43235f={'where':_0x2b91cb[_0x26bd('0x3a')]};return db[_0x26bd('0x2d')][_0x26bd('0x1a')](_0x43235f)['then'](function(_0x49ada4){_0x3ae415[_0x26bd('0x1a')]=_0x49ada4;if(_0x352ef2[_0x26bd('0x31')]['includeAll']){_0x2b91cb[_0x26bd('0x41')]=[{'all':!![]}];}return db['Interval']['findAll'](_0x2b91cb);})[_0x26bd('0x23')](function(_0x51911c){_0x3ae415[_0x26bd('0x42')]=_0x51911c;return _0x3ae415;})[_0x26bd('0x23')](respondWithFilteredResult(_0x3d793e,_0x2b91cb))[_0x26bd('0x43')](handleError(_0x3d793e,null));};exports[_0x26bd('0x44')]=function(_0x5095e0,_0x590bff){var _0x1c8b72={'raw':!![],'where':{'id':_0x5095e0[_0x26bd('0x45')]['id']}},_0x10baf3={};_0x10baf3[_0x26bd('0x30')]=_[_0x26bd('0x32')](db['Interval'][_0x26bd('0x2e')]);_0x10baf3['query']=_[_0x26bd('0x32')](_0x5095e0[_0x26bd('0x31')]);_0x10baf3[_0x26bd('0x3b')]=_['intersection'](_0x10baf3['model'],_0x10baf3[_0x26bd('0x31')]);_0x1c8b72['attributes']=_['intersection'](_0x10baf3[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x5095e0[_0x26bd('0x31')][_0x26bd('0x35')]));_0x1c8b72[_0x26bd('0x34')]=_0x1c8b72[_0x26bd('0x34')][_0x26bd('0x36')]?_0x1c8b72[_0x26bd('0x34')]:_0x10baf3[_0x26bd('0x30')];if(_0x5095e0['query'][_0x26bd('0x46')]){_0x1c8b72[_0x26bd('0x41')]=[{'all':!![]}];}_0x1c8b72=_[_0x26bd('0x3d')]({},_0x1c8b72,_0x5095e0[_0x26bd('0x40')]);return db[_0x26bd('0x2d')][_0x26bd('0x47')](_0x1c8b72)[_0x26bd('0x23')](handleEntityNotFound(_0x590bff,null))['then'](respondWithResult(_0x590bff,null))['catch'](handleError(_0x590bff,null));};exports[_0x26bd('0x48')]=function(_0x2c47a5,_0x5e5317){return db[_0x26bd('0x2d')][_0x26bd('0x48')](_0x2c47a5[_0x26bd('0x49')],{})[_0x26bd('0x23')](function(_0x5b2b39){var _0x207eac=_0x2c47a5[_0x26bd('0x4a')]['get']({'plain':!![]});if(!_0x207eac)throw new Error(_0x26bd('0x4b'));if(_0x207eac[_0x26bd('0x4c')]===_0x26bd('0x4a')){var _0x3c7672=_0x5b2b39[_0x26bd('0x25')]({'plain':!![]});var _0x2c23ed=_0x26bd('0x4d');return db['UserProfileSection'][_0x26bd('0x47')]({'where':{'name':_0x2c23ed,'userProfileId':_0x207eac[_0x26bd('0x4e')]},'raw':!![]})[_0x26bd('0x23')](function(_0x5d638d){if(_0x5d638d&&_0x5d638d[_0x26bd('0x4f')]===0x0){return db['UserProfileResource'][_0x26bd('0x48')]({'name':_0x3c7672[_0x26bd('0x29')],'resourceId':_0x3c7672['id'],'type':_0x5d638d[_0x26bd('0x29')],'sectionId':_0x5d638d['id']},{})[_0x26bd('0x23')](function(){return _0x5b2b39;});}else{return _0x5b2b39;}})[_0x26bd('0x43')](function(_0x4a2619){logger[_0x26bd('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a2619);throw _0x4a2619;});}return _0x5b2b39;})[_0x26bd('0x23')](respondWithResult(_0x5e5317,0xc9))[_0x26bd('0x43')](handleError(_0x5e5317,null));};exports[_0x26bd('0x22')]=function(_0x3892ff,_0x2f7543){if(_0x3892ff[_0x26bd('0x49')]['id']){delete _0x3892ff['body']['id'];}return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x3892ff[_0x26bd('0x45')]['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x2f7543,null))[_0x26bd('0x23')](saveUpdates(_0x3892ff[_0x26bd('0x49')],null))[_0x26bd('0x23')](respondWithResult(_0x2f7543,null))[_0x26bd('0x43')](handleError(_0x2f7543,null));};exports[_0x26bd('0x24')]=function(_0x4e46a5,_0x13bfac){return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x4e46a5['params']['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x13bfac,null))[_0x26bd('0x23')](removeEntity(_0x13bfac,null))[_0x26bd('0x43')](handleError(_0x13bfac,null));};exports[_0x26bd('0x50')]=function(_0x1da8c6,_0x4ad584,_0x21b2b6){if(_0x1da8c6[_0x26bd('0x49')]['id']){delete _0x1da8c6[_0x26bd('0x49')]['id'];}return db[_0x26bd('0x2d')][_0x26bd('0x47')]({'where':{'id':_0x1da8c6['params']['id']}})['then'](handleEntityNotFound(_0x4ad584,null))['then'](function(_0xb264a){if(_0xb264a){_0x1da8c6[_0x26bd('0x49')][_0x26bd('0x51')]=_0xb264a['id'];return db[_0x26bd('0x2d')]['create'](_0x1da8c6[_0x26bd('0x49')]);}})['then'](respondWithResult(_0x4ad584,null))[_0x26bd('0x43')](handleError(_0x4ad584,null));};exports[_0x26bd('0x52')]=function(_0x3ed44c,_0x3be6e8,_0x1d2d00){var _0x56383f={};var _0x11db57={};var _0x58102a;var _0x169595;return db[_0x26bd('0x2d')][_0x26bd('0x53')]({'where':{'id':_0x3ed44c[_0x26bd('0x45')]['id']}})['then'](handleEntityNotFound(_0x3be6e8,null))[_0x26bd('0x23')](function(_0x2f193d){if(_0x2f193d){_0x58102a=_0x2f193d;_0x11db57[_0x26bd('0x30')]=_[_0x26bd('0x32')](db[_0x26bd('0x2d')][_0x26bd('0x2e')]);_0x11db57['query']=_[_0x26bd('0x32')](_0x3ed44c['query']);_0x11db57[_0x26bd('0x3b')]=_['intersection'](_0x11db57['model'],_0x11db57[_0x26bd('0x31')]);_0x56383f[_0x26bd('0x34')]=_[_0x26bd('0x33')](_0x11db57[_0x26bd('0x30')],qs[_0x26bd('0x35')](_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x35')]));_0x56383f[_0x26bd('0x34')]=_0x56383f['attributes']['length']?_0x56383f['attributes']:_0x11db57[_0x26bd('0x30')];_0x56383f['order']=qs[_0x26bd('0x39')](_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x39')]);_0x56383f[_0x26bd('0x3a')]=qs[_0x26bd('0x3b')](_[_0x26bd('0x54')](_0x3ed44c['query'],_0x11db57[_0x26bd('0x3b')]));if(_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x3c')]){_0x56383f['where']=_[_0x26bd('0x3d')](_0x56383f[_0x26bd('0x3a')],{'$or':_[_0x26bd('0x2c')](_0x56383f[_0x26bd('0x34')],function(_0x51fe9c){var _0x4e4972={};_0x4e4972[_0x51fe9c]={'$like':'%'+_0x3ed44c[_0x26bd('0x31')]['filter']+'%'};return _0x4e4972;})});}_0x56383f=_['merge']({},_0x56383f,_0x3ed44c[_0x26bd('0x40')]);return _0x58102a['getIntervals'](_0x56383f);}})[_0x26bd('0x23')](function(_0x51651c){if(_0x51651c){_0x169595=_0x51651c[_0x26bd('0x36')];if(!_0x3ed44c[_0x26bd('0x31')][_0x26bd('0x37')](_0x26bd('0x38'))){_0x56383f[_0x26bd('0x1b')]=qs[_0x26bd('0x1b')](_0x3ed44c[_0x26bd('0x31')]['limit']);_0x56383f[_0x26bd('0x18')]=qs[_0x26bd('0x18')](_0x3ed44c[_0x26bd('0x31')]['offset']);}return _0x58102a['getIntervals'](_0x56383f);}})[_0x26bd('0x23')](function(_0x3a2f38){if(_0x3a2f38){return _0x3a2f38?{'count':_0x169595,'rows':_0x3a2f38}:null;}})[_0x26bd('0x23')](respondWithResult(_0x3be6e8,null))[_0x26bd('0x43')](handleError(_0x3be6e8,null));};exports[_0x26bd('0x55')]=function(_0x58539d,_0x468f64,_0xce30ee){return db[_0x26bd('0x2d')][_0x26bd('0x53')]({'where':{'id':_0x58539d[_0x26bd('0x45')]['id']}})[_0x26bd('0x23')](handleEntityNotFound(_0x468f64,null))[_0x26bd('0x23')](function(_0x1c8b9e){if(_0x1c8b9e){return db[_0x26bd('0x56')][_0x26bd('0x57')](function(_0x435364){return db[_0x26bd('0x2d')][_0x26bd('0x24')]({'where':{'IntervalId':_0x58539d[_0x26bd('0x45')]['id']},'transaction':_0x435364})[_0x26bd('0x23')](function(_0x3b1a36){var _0x1e4873=_[_0x26bd('0x2c')](_0x58539d['body'],function(_0x15727a){delete _0x15727a['id'];_0x15727a['IntervalId']=_0x58539d['params']['id'];return _0x15727a;});return db[_0x26bd('0x2d')]['bulkCreate'](_0x1e4873,{'transaction':_0x435364});});})[_0x26bd('0x23')](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x58539d['params']['id']}});});}})[_0x26bd('0x23')](respondWithResult(_0x468f64,null))[_0x26bd('0x43')](handleError(_0x468f64,null));};
\ No newline at end of file
index 5d974ec..72741ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6731=['api','bluebird','path','../../components/extensions/rewrite','exports','define','tools_intervals','rewrite','lodash','util','../../config/logger'];(function(_0x33dd1e,_0x1b00fd){var _0x2a3ac8=function(_0x65ab53){while(--_0x65ab53){_0x33dd1e['push'](_0x33dd1e['shift']());}};_0x2a3ac8(++_0x1b00fd);}(_0x6731,0x147));var _0x1673=function(_0x2657fa,_0x12be80){_0x2657fa=_0x2657fa-0x0;var _0x1962b7=_0x6731[_0x2657fa];return _0x1962b7;};'use strict';var _=require(_0x1673('0x0'));var util=require(_0x1673('0x1'));var logger=require(_0x1673('0x2'))(_0x1673('0x3'));var moment=require('moment');var BPromise=require(_0x1673('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1673('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x1673('0x6'));module[_0x1673('0x7')]=function(_0xda6787,_0x181de4){return _0xda6787[_0x1673('0x8')]('Interval',attributes,{'tableName':_0x1673('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5d0dde,_0x1fde9b){extensions['rewrite'](_0xda6787,_0x5d0dde);},'afterBulkCreate':function(_0x199655,_0x1359f6,_0x32e50a){_0x32e50a();extensions[_0x1673('0xa')](_0xda6787,_0x199655[0x0]);},'afterUpdate':function(_0x8044b7,_0x5b9d18){extensions[_0x1673('0xa')](_0xda6787,_0x8044b7);},'afterDestroy':function(_0x1b6989,_0x1d749e){extensions[_0x1673('0xa')](_0xda6787,_0x1b6989);}}});};
\ No newline at end of file
+var _0x36d2=['api','moment','request-promise','path','../../config/environment','./interval.attributes','../../components/extensions/rewrite','define','rewrite','util'];(function(_0x13746a,_0x111b8f){var _0x46f0fa=function(_0x395842){while(--_0x395842){_0x13746a['push'](_0x13746a['shift']());}};_0x46f0fa(++_0x111b8f);}(_0x36d2,0x1b7));var _0x236d=function(_0xa4928c,_0x16b89c){_0xa4928c=_0xa4928c-0x0;var _0x27cc29=_0x36d2[_0xa4928c];return _0x27cc29;};'use strict';var _=require('lodash');var util=require(_0x236d('0x0'));var logger=require('../../config/logger')(_0x236d('0x1'));var moment=require(_0x236d('0x2'));var BPromise=require('bluebird');var rp=require(_0x236d('0x3'));var fs=require('fs');var path=require(_0x236d('0x4'));var rimraf=require('rimraf');var config=require(_0x236d('0x5'));var attributes=require(_0x236d('0x6'));var extensions=require(_0x236d('0x7'));module['exports']=function(_0x3905a1,_0x26331c){return _0x3905a1[_0x236d('0x8')]('Interval',attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x58b994,_0x3e0965){extensions[_0x236d('0x9')](_0x3905a1,_0x58b994);},'afterBulkCreate':function(_0x10819d,_0xb28b1a,_0x429840){_0x429840();extensions[_0x236d('0x9')](_0x3905a1,_0x10819d[0x0]);},'afterUpdate':function(_0x1de722,_0x5729ff){extensions['rewrite'](_0x3905a1,_0x1de722);},'afterDestroy':function(_0x39632d,_0x17f838){extensions[_0x236d('0x9')](_0x3905a1,_0x39632d);}}});};
\ No newline at end of file
index 15f6988..103412d 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(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}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(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_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);});});}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 891620a..cbfd287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x4fb58b,_0x3106ad){var _0x2c8161=function(_0x439ec2){while(--_0x439ec2){_0x4fb58b['push'](_0x4fb58b['shift']());}};_0x2c8161(++_0x3106ad);}(_0xadb5,0xad));var _0x5adb=function(_0x244883,_0x5937b7){_0x244883=_0x244883-0x0;var _0x11107f=_0xadb5[_0x244883];return _0x11107f;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
index 81cd0cb..022110d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d54=['application/json','Basic\x20','base64','stringify','setEncoding','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','end','openIssue','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','issuetype','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','/rest/api/2/issue','POST'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x4d54,0x6c));var _0x44d5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4d54[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require(_0x44d5('0x0'));var https=require(_0x44d5('0x1'));var logger=require('../../config/logger')(_0x44d5('0x2'));var USERNAME=_0x44d5('0x3');var PASSWORD=_0x44d5('0x4');function openIssue(_0x4593b0,_0x1896e0){var _0x4fe9f2={'fields':{'project':{'key':_0x4593b0[_0x44d5('0x5')]||'MOTGUI'},'summary':(_0x4593b0[_0x44d5('0x6')]||_0x44d5('0x7'))+_0x44d5('0x8')+_0x4593b0['ip'],'description':_0x4593b0[_0x44d5('0x9')]||JSON['stringify'](_0x4593b0),'issuetype':{'name':_0x4593b0[_0x44d5('0xa')]||'Bug'}}};_0x4fe9f2[_0x44d5('0xb')][_0x44d5('0xc')]=_0x4593b0[_0x44d5('0xd')];_0x4fe9f2[_0x44d5('0xb')]['customfield_11501']=_0x4593b0[_0x44d5('0xe')];_0x4fe9f2[_0x44d5('0xb')][_0x44d5('0xf')]=_0x4593b0[_0x44d5('0x10')];_0x4fe9f2[_0x44d5('0xb')][_0x44d5('0x11')]=_0x4593b0[_0x44d5('0x12')];_0x4fe9f2[_0x44d5('0xb')][_0x44d5('0x13')]=_0x4593b0[_0x44d5('0x14')];_0x4fe9f2[_0x44d5('0xb')][_0x44d5('0x15')]=_0x4593b0['ip'];var _0x4858d2={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x44d5('0x16'),'method':_0x44d5('0x17'),'timeout':0x4e20,'headers':{'Content-Type':_0x44d5('0x18'),'Authorization':_0x44d5('0x19')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x44d5('0x1a'))}};var _0x1508f7=JSON[_0x44d5('0x1b')](_0x4fe9f2);var _0x26e5fc=https['request'](_0x4858d2,function(_0x532bbc){_0x532bbc[_0x44d5('0x1c')]('utf8');var _0x560382='';_0x532bbc['on']('data',function(_0x3ec6bf){_0x560382+=_0x3ec6bf;});_0x532bbc['on']('end',function(){if(_0x1896e0){return _0x1896e0[_0x44d5('0x1d')](_0x532bbc[_0x44d5('0x1e')])[_0x44d5('0x1f')](JSON[_0x44d5('0x20')](_0x560382));}});});_0x26e5fc['on'](_0x44d5('0x21'),function(_0x5543ea){if(_0x1896e0){return _0x1896e0[_0x44d5('0x1d')](0x1f4)[_0x44d5('0x1f')]({'errors':[{'message':_0x44d5('0x22'),'type':_0x44d5('0x23')}]});}});_0x26e5fc['write'](_0x1508f7);_0x26e5fc[_0x44d5('0x24')]();}exports[_0x44d5('0x25')]=openIssue;exports['send']=function(_0x26cd1e,_0x47a0f8){_0x26cd1e[_0x44d5('0x26')]['ip']=_0x26cd1e[_0x44d5('0x27')][_0x44d5('0x28')]||_0x26cd1e[_0x44d5('0x29')][_0x44d5('0x2a')]||_0x26cd1e[_0x44d5('0x2b')][_0x44d5('0x2a')]||_0x26cd1e[_0x44d5('0x29')][_0x44d5('0x2b')][_0x44d5('0x2a')];return openIssue(_0x26cd1e[_0x44d5('0x26')],_0x47a0f8);};
\ No newline at end of file
+var _0x0ed5=['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','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','key','MOTGUI','Report','\x20from\x20','description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','toString','request','setEncoding','utf8'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x0ed5,0x132));var _0x50ed=function(_0x42e173,_0x3235a2){_0x42e173=_0x42e173-0x0;var _0x4ff924=_0x0ed5[_0x42e173];return _0x4ff924;};'use strict';var BPromise=require(_0x50ed('0x0'));var https=require(_0x50ed('0x1'));var logger=require(_0x50ed('0x2'))(_0x50ed('0x3'));var USERNAME=_0x50ed('0x4');var PASSWORD='3eAmWpBVP0';function openIssue(_0x3b60e2,_0x16a76f){var _0x4e9feb={'fields':{'project':{'key':_0x3b60e2[_0x50ed('0x5')]||_0x50ed('0x6')},'summary':(_0x3b60e2['summary']||_0x50ed('0x7'))+_0x50ed('0x8')+_0x3b60e2['ip'],'description':_0x3b60e2[_0x50ed('0x9')]||JSON[_0x50ed('0xa')](_0x3b60e2),'issuetype':{'name':_0x3b60e2[_0x50ed('0xb')]||'Bug'}}};_0x4e9feb[_0x50ed('0xc')][_0x50ed('0xd')]=_0x3b60e2[_0x50ed('0xe')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0xf')]=_0x3b60e2[_0x50ed('0x10')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x11')]=_0x3b60e2['newToken'];_0x4e9feb['fields'][_0x50ed('0x12')]=_0x3b60e2[_0x50ed('0x13')];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x14')]=_0x3b60e2['reason'];_0x4e9feb[_0x50ed('0xc')][_0x50ed('0x15')]=_0x3b60e2['ip'];var _0x5368b0={'host':_0x50ed('0x16'),'port':0x1bb,'path':_0x50ed('0x17'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x50ed('0x18'),'Authorization':_0x50ed('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x50ed('0x1a')]('base64')}};var _0x237a38=JSON['stringify'](_0x4e9feb);var _0x415972=https[_0x50ed('0x1b')](_0x5368b0,function(_0x5d6c4d){_0x5d6c4d[_0x50ed('0x1c')](_0x50ed('0x1d'));var _0x38056a='';_0x5d6c4d['on'](_0x50ed('0x1e'),function(_0x2af2b0){_0x38056a+=_0x2af2b0;});_0x5d6c4d['on'](_0x50ed('0x1f'),function(){if(_0x16a76f){return _0x16a76f[_0x50ed('0x20')](_0x5d6c4d[_0x50ed('0x21')])[_0x50ed('0x22')](JSON[_0x50ed('0x23')](_0x38056a));}});});_0x415972['on'](_0x50ed('0x24'),function(_0x2caf65){if(_0x16a76f){return _0x16a76f['status'](0x1f4)[_0x50ed('0x22')]({'errors':[{'message':_0x50ed('0x25'),'type':_0x50ed('0x26')}]});}});_0x415972[_0x50ed('0x27')](_0x237a38);_0x415972[_0x50ed('0x1f')]();}exports[_0x50ed('0x28')]=openIssue;exports[_0x50ed('0x29')]=function(_0x539a54,_0x3a46e5){_0x539a54[_0x50ed('0x2a')]['ip']=_0x539a54[_0x50ed('0x2b')][_0x50ed('0x2c')]||_0x539a54[_0x50ed('0x2d')][_0x50ed('0x2e')]||_0x539a54[_0x50ed('0x2f')]['remoteAddress']||_0x539a54[_0x50ed('0x2d')][_0x50ed('0x2f')][_0x50ed('0x2e')];return openIssue(_0x539a54[_0x50ed('0x2a')],_0x3a46e5);};
\ No newline at end of file
index 79a2839..2946414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['describe','show','post','put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','/describe','isAuthenticated'];(function(_0x5afb49,_0x2d79aa){var _0x3bcf3c=function(_0xd784ed){while(--_0xd784ed){_0x5afb49['push'](_0x5afb49['shift']());}};_0x3bcf3c(++_0x2d79aa);}(_0x0bb5,0x148));var _0x50bb=function(_0x24fab2,_0x14802f){_0x24fab2=_0x24fab2-0x0;var _0x4a1f77=_0x0bb5[_0x24fab2];return _0x4a1f77;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0xe')]('/',auth[_0x50bb('0xb')](),controller['create']);router[_0x50bb('0xf')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x12')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller['destroy']);module[_0x50bb('0x13')]=router;
\ No newline at end of file
+var _0x4483=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x4907de,_0x5bbdc6){var _0x482054=function(_0x39ecf6){while(--_0x39ecf6){_0x4907de['push'](_0x4907de['shift']());}};_0x482054(++_0x5bbdc6);}(_0x4483,0x1a3));var _0x3448=function(_0x44e864,_0x10641a){_0x44e864=_0x44e864-0x0;var _0x44e092=_0x4483[_0x44e864];return _0x44e092;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0xf')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x11')](_0x3448('0x12'),auth[_0x3448('0xa')](),controller[_0x3448('0x13')]);router[_0x3448('0x14')](_0x3448('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0x3448('0x15')]=router;
\ No newline at end of file
index 75e361f..791e5d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x7a54,0x106));var _0x47a5=function(_0x56f21d,_0x44edd1){_0x56f21d=_0x56f21d-0x0;var _0x438bbb=_0x7a54[_0x56f21d];return _0x438bbb;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x58c101,_0x558d07){_0x58c101=_0x58c101-0x0;var _0x4cf100=_0x7a54[_0x58c101];return _0x4cf100;};'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 6537528..8c12d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','end','error','stack'];(function(_0x11a163,_0x55c472){var _0x1a41b9=function(_0x263aeb){while(--_0x263aeb){_0x11a163['push'](_0x11a163['shift']());}};_0x1a41b9(++_0x55c472);}(_0x9829,0xc4));var _0x9982=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0x9829[_0x5ac84c];return _0x3c53d2;};'use strict';var emlformat=require(_0x9982('0x0'));var rimraf=require(_0x9982('0x1'));var zipdir=require(_0x9982('0x2'));var jsonpatch=require(_0x9982('0x3'));var rp=require(_0x9982('0x4'));var moment=require('moment');var BPromise=require(_0x9982('0x5'));var Mustache=require(_0x9982('0x6'));var util=require(_0x9982('0x7'));var path=require('path');var sox=require(_0x9982('0x8'));var csv=require(_0x9982('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9982('0xa'));var squel=require(_0x9982('0xb'));var crypto=require('crypto');var jsforce=require(_0x9982('0xc'));var deskjs=require(_0x9982('0xd'));var toCsv=require(_0x9982('0x9'));var querystring=require(_0x9982('0xe'));var Papa=require(_0x9982('0xf'));var Redis=require(_0x9982('0x10'));var authService=require(_0x9982('0x11'));var qs=require(_0x9982('0x12'));var as=require(_0x9982('0x13'));var hardwareService=require(_0x9982('0x14'));var logger=require(_0x9982('0x15'))(_0x9982('0x16'));var utils=require(_0x9982('0x17'));var config=require(_0x9982('0x18'));var licenseUtil=require(_0x9982('0x19'));var db=require(_0x9982('0x1a'))['db'];function respondWithStatusCode(_0x390539,_0x4637ca){_0x4637ca=_0x4637ca||0xcc;return function(_0x48e81f){if(_0x48e81f){return _0x390539[_0x9982('0x1b')](_0x4637ca);}return _0x390539[_0x9982('0x1c')](_0x4637ca)['end']();};}function respondWithResult(_0x3ca506,_0x5699c9){_0x5699c9=_0x5699c9||0xc8;return function(_0x39d32c){if(_0x39d32c){return _0x3ca506[_0x9982('0x1c')](_0x5699c9)[_0x9982('0x1d')](_0x39d32c);}};}function respondWithFilteredResult(_0x199688,_0x128118){return function(_0xcd1405){if(_0xcd1405){var _0x2883f6=typeof _0x128118[_0x9982('0x1e')]===_0x9982('0x1f')&&typeof _0x128118['limit']===_0x9982('0x1f');var _0x5385cc=_0xcd1405[_0x9982('0x20')];var _0x44b5ed=_0x2883f6?0x0:_0x128118['offset'];var _0x2558e1=_0x2883f6?_0xcd1405[_0x9982('0x20')]:_0x128118[_0x9982('0x1e')]+_0x128118[_0x9982('0x21')];var _0x1297d7;if(_0x2558e1>=_0x5385cc){_0x2558e1=_0x5385cc;_0x1297d7=0xc8;}else{_0x1297d7=0xce;}_0x199688[_0x9982('0x1c')](_0x1297d7);return _0x199688['set'](_0x9982('0x22'),_0x44b5ed+'-'+_0x2558e1+'/'+_0x5385cc)[_0x9982('0x1d')](_0xcd1405);}return null;};}function patchUpdates(_0x5ea55d){return function(_0x1c5214){try{jsonpatch[_0x9982('0x23')](_0x1c5214,_0x5ea55d,!![]);}catch(_0x6523c0){return BPromise[_0x9982('0x24')](_0x6523c0);}return _0x1c5214[_0x9982('0x25')]();};}function saveUpdates(_0x1eec90,_0xfde29b){return function(_0x541cc8){if(_0x541cc8){return _0x541cc8[_0x9982('0x26')](_0x1eec90)[_0x9982('0x27')](function(_0x11a7e8){return _0x11a7e8;});}return null;};}function removeEntity(_0x37bb60,_0x3797be){return function(_0x4a27d6){if(_0x4a27d6){return _0x4a27d6[_0x9982('0x28')]()[_0x9982('0x27')](function(){_0x37bb60[_0x9982('0x1c')](0xcc)[_0x9982('0x29')]();});}};}function handleEntityNotFound(_0x2d4622,_0x39747a){return function(_0x3c129a){if(!_0x3c129a){_0x2d4622[_0x9982('0x1b')](0x194);}return _0x3c129a;};}function handleError(_0xa6824b,_0x2be133){_0x2be133=_0x2be133||0x1f4;return function(_0xe752e3){logger[_0x9982('0x2a')](_0xe752e3[_0x9982('0x2b')]);if(_0xe752e3[_0x9982('0x2c')]){delete _0xe752e3[_0x9982('0x2c')];}_0xa6824b[_0x9982('0x1c')](_0x2be133)[_0x9982('0x2d')](_0xe752e3);};}exports[_0x9982('0x2e')]=function(_0x50d976,_0x533748){var _0xb1bc28={},_0x3b3bc5={},_0x4544b5={'count':0x0,'rows':[]};var _0x3c0596=_[_0x9982('0x2f')](db[_0x9982('0x30')][_0x9982('0x31')],function(_0x3337e2){return{'name':_0x3337e2[_0x9982('0x32')],'type':_0x3337e2[_0x9982('0x33')][_0x9982('0x34')]};});_0x3b3bc5[_0x9982('0x35')]=_['map'](_0x3c0596,_0x9982('0x2c'));_0x3b3bc5[_0x9982('0x36')]=_[_0x9982('0x37')](_0x50d976[_0x9982('0x36')]);_0x3b3bc5[_0x9982('0x38')]=_[_0x9982('0x39')](_0x3b3bc5['model'],_0x3b3bc5[_0x9982('0x36')]);_0xb1bc28['attributes']=_[_0x9982('0x39')](_0x3b3bc5[_0x9982('0x35')],qs[_0x9982('0x3a')](_0x50d976[_0x9982('0x36')][_0x9982('0x3a')]));_0xb1bc28[_0x9982('0x3b')]=_0xb1bc28[_0x9982('0x3b')]['length']?_0xb1bc28[_0x9982('0x3b')]:_0x3b3bc5[_0x9982('0x35')];if(!_0x50d976[_0x9982('0x36')][_0x9982('0x3c')](_0x9982('0x3d'))){_0xb1bc28['limit']=qs[_0x9982('0x21')](_0x50d976['query']['limit']);_0xb1bc28[_0x9982('0x1e')]=qs[_0x9982('0x1e')](_0x50d976['query'][_0x9982('0x1e')]);}_0xb1bc28[_0x9982('0x3e')]=qs[_0x9982('0x3f')](_0x50d976[_0x9982('0x36')][_0x9982('0x3f')]);_0xb1bc28[_0x9982('0x40')]=qs[_0x9982('0x38')](_[_0x9982('0x41')](_0x50d976[_0x9982('0x36')],_0x3b3bc5[_0x9982('0x38')]),_0x3c0596);if(_0x50d976[_0x9982('0x36')][_0x9982('0x42')]){_0xb1bc28['where']=_[_0x9982('0x43')](_0xb1bc28[_0x9982('0x40')],{'$or':_[_0x9982('0x2f')](_0x3c0596,function(_0x36e441){if(_0x36e441[_0x9982('0x33')]!=='VIRTUAL'){var _0x521c1f={};_0x521c1f[_0x36e441['name']]={'$like':'%'+_0x50d976[_0x9982('0x36')][_0x9982('0x42')]+'%'};return _0x521c1f;}})});}_0xb1bc28=_['merge']({},_0xb1bc28,_0x50d976[_0x9982('0x44')]);var _0x39afc0={'where':_0xb1bc28[_0x9982('0x40')]};return db[_0x9982('0x30')]['count'](_0x39afc0)[_0x9982('0x27')](function(_0x1942a5){_0x4544b5[_0x9982('0x20')]=_0x1942a5;if(_0x50d976[_0x9982('0x36')][_0x9982('0x45')]){_0xb1bc28[_0x9982('0x46')]=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0xb1bc28);})[_0x9982('0x27')](function(_0x3b0f1a){_0x4544b5[_0x9982('0x47')]=_0x3b0f1a;return _0x4544b5;})['then'](respondWithFilteredResult(_0x533748,_0xb1bc28))[_0x9982('0x48')](handleError(_0x533748,null));};exports[_0x9982('0x49')]=function(_0x1a5ea4,_0x56ad10){var _0x59be67={'raw':!![],'where':{'id':_0x1a5ea4['params']['id']}},_0x566c07={};_0x566c07['model']=_[_0x9982('0x37')](db['JscriptyAnswerReport'][_0x9982('0x31')]);_0x566c07[_0x9982('0x36')]=_['keys'](_0x1a5ea4[_0x9982('0x36')]);_0x566c07[_0x9982('0x38')]=_[_0x9982('0x39')](_0x566c07[_0x9982('0x35')],_0x566c07[_0x9982('0x36')]);_0x59be67['attributes']=_[_0x9982('0x39')](_0x566c07[_0x9982('0x35')],qs[_0x9982('0x3a')](_0x1a5ea4[_0x9982('0x36')][_0x9982('0x3a')]));_0x59be67[_0x9982('0x3b')]=_0x59be67[_0x9982('0x3b')][_0x9982('0x4a')]?_0x59be67[_0x9982('0x3b')]:_0x566c07['model'];if(_0x1a5ea4[_0x9982('0x36')]['includeAll']){_0x59be67['include']=[{'all':!![]}];}_0x59be67=_[_0x9982('0x43')]({},_0x59be67,_0x1a5ea4[_0x9982('0x44')]);return db['JscriptyAnswerReport'][_0x9982('0x4b')](_0x59be67)[_0x9982('0x27')](handleEntityNotFound(_0x56ad10,null))[_0x9982('0x27')](respondWithResult(_0x56ad10,null))[_0x9982('0x48')](handleError(_0x56ad10,null));};exports[_0x9982('0x4c')]=function(_0x55d1d3,_0x12261d){return db['JscriptyAnswerReport'][_0x9982('0x4c')](_0x55d1d3[_0x9982('0x4d')],{})['then'](respondWithResult(_0x12261d,0xc9))[_0x9982('0x48')](handleError(_0x12261d,null));};exports[_0x9982('0x26')]=function(_0x251996,_0x46cac4){if(_0x251996[_0x9982('0x4d')]['id']){delete _0x251996['body']['id'];}return db[_0x9982('0x30')][_0x9982('0x4b')]({'where':{'id':_0x251996[_0x9982('0x4e')]['id']}})['then'](handleEntityNotFound(_0x46cac4,null))['then'](saveUpdates(_0x251996['body'],null))['then'](respondWithResult(_0x46cac4,null))[_0x9982('0x48')](handleError(_0x46cac4,null));};exports['destroy']=function(_0x2de9df,_0x6a7bed){return db['JscriptyAnswerReport']['find']({'where':{'id':_0x2de9df[_0x9982('0x4e')]['id']}})[_0x9982('0x27')](handleEntityNotFound(_0x6a7bed,null))[_0x9982('0x27')](removeEntity(_0x6a7bed,null))[_0x9982('0x48')](handleError(_0x6a7bed,null));};exports[_0x9982('0x4f')]=function(_0x1aa150,_0x55d519){return db[_0x9982('0x30')][_0x9982('0x4f')]()['then'](respondWithResult(_0x55d519,null))[_0x9982('0x48')](handleError(_0x55d519,null));};
\ No newline at end of file
+var _0xfc76=['send','index','map','JscriptyAnswerReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','end','error','stack','name'];(function(_0x20450e,_0x405ed5){var _0x3b838f=function(_0x55e99d){while(--_0x55e99d){_0x20450e['push'](_0x20450e['shift']());}};_0x3b838f(++_0x405ed5);}(_0xfc76,0xb5));var _0x6fc7=function(_0x516d83,_0x2f157d){_0x516d83=_0x516d83-0x0;var _0x52f05c=_0xfc76[_0x516d83];return _0x52f05c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6fc7('0x0'));var zipdir=require(_0x6fc7('0x1'));var jsonpatch=require(_0x6fc7('0x2'));var rp=require(_0x6fc7('0x3'));var moment=require(_0x6fc7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6fc7('0x5'));var util=require(_0x6fc7('0x6'));var path=require('path');var sox=require(_0x6fc7('0x7'));var csv=require('to-csv');var ejs=require(_0x6fc7('0x8'));var fs=require('fs');var fs_extra=require(_0x6fc7('0x9'));var _=require(_0x6fc7('0xa'));var squel=require('squel');var crypto=require(_0x6fc7('0xb'));var jsforce=require(_0x6fc7('0xc'));var deskjs=require(_0x6fc7('0xd'));var toCsv=require(_0x6fc7('0xe'));var querystring=require(_0x6fc7('0xf'));var Papa=require(_0x6fc7('0x10'));var Redis=require('ioredis');var authService=require(_0x6fc7('0x11'));var qs=require(_0x6fc7('0x12'));var as=require(_0x6fc7('0x13'));var hardwareService=require(_0x6fc7('0x14'));var logger=require(_0x6fc7('0x15'))(_0x6fc7('0x16'));var utils=require('../../config/utils');var config=require(_0x6fc7('0x17'));var licenseUtil=require(_0x6fc7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x433adc,_0x2c32b8){_0x2c32b8=_0x2c32b8||0xcc;return function(_0x5f438d){if(_0x5f438d){return _0x433adc[_0x6fc7('0x19')](_0x2c32b8);}return _0x433adc[_0x6fc7('0x1a')](_0x2c32b8)['end']();};}function respondWithResult(_0x44d8e0,_0x3c107f){_0x3c107f=_0x3c107f||0xc8;return function(_0x10a482){if(_0x10a482){return _0x44d8e0['status'](_0x3c107f)['json'](_0x10a482);}};}function respondWithFilteredResult(_0xbb4a3e,_0x45d585){return function(_0x499bcc){if(_0x499bcc){var _0x2b0122=typeof _0x45d585[_0x6fc7('0x1b')]===_0x6fc7('0x1c')&&typeof _0x45d585[_0x6fc7('0x1d')]==='undefined';var _0x816704=_0x499bcc[_0x6fc7('0x1e')];var _0x280c69=_0x2b0122?0x0:_0x45d585[_0x6fc7('0x1b')];var _0x12be21=_0x2b0122?_0x499bcc[_0x6fc7('0x1e')]:_0x45d585['offset']+_0x45d585[_0x6fc7('0x1d')];var _0x124893;if(_0x12be21>=_0x816704){_0x12be21=_0x816704;_0x124893=0xc8;}else{_0x124893=0xce;}_0xbb4a3e[_0x6fc7('0x1a')](_0x124893);return _0xbb4a3e[_0x6fc7('0x1f')](_0x6fc7('0x20'),_0x280c69+'-'+_0x12be21+'/'+_0x816704)['json'](_0x499bcc);}return null;};}function patchUpdates(_0x277f9e){return function(_0x2427a){try{jsonpatch['apply'](_0x2427a,_0x277f9e,!![]);}catch(_0x17b9e3){return BPromise['reject'](_0x17b9e3);}return _0x2427a[_0x6fc7('0x21')]();};}function saveUpdates(_0x4f583c,_0x11b359){return function(_0xdb5974){if(_0xdb5974){return _0xdb5974[_0x6fc7('0x22')](_0x4f583c)['then'](function(_0x45e53e){return _0x45e53e;});}return null;};}function removeEntity(_0x4a4cdf,_0x2dd21a){return function(_0xdd4827){if(_0xdd4827){return _0xdd4827[_0x6fc7('0x23')]()[_0x6fc7('0x24')](function(){_0x4a4cdf[_0x6fc7('0x1a')](0xcc)[_0x6fc7('0x25')]();});}};}function handleEntityNotFound(_0x190680,_0x817221){return function(_0x2b6b55){if(!_0x2b6b55){_0x190680[_0x6fc7('0x19')](0x194);}return _0x2b6b55;};}function handleError(_0xaa2687,_0x426872){_0x426872=_0x426872||0x1f4;return function(_0x4612d4){logger[_0x6fc7('0x26')](_0x4612d4[_0x6fc7('0x27')]);if(_0x4612d4['name']){delete _0x4612d4[_0x6fc7('0x28')];}_0xaa2687[_0x6fc7('0x1a')](_0x426872)[_0x6fc7('0x29')](_0x4612d4);};}exports[_0x6fc7('0x2a')]=function(_0x5c1fd3,_0xfff989){var _0x30e579={},_0xa93a4f={},_0x2aa91c={'count':0x0,'rows':[]};var _0x34bf7f=_[_0x6fc7('0x2b')](db[_0x6fc7('0x2c')][_0x6fc7('0x2d')],function(_0x59a70e){return{'name':_0x59a70e['fieldName'],'type':_0x59a70e[_0x6fc7('0x2e')][_0x6fc7('0x2f')]};});_0xa93a4f[_0x6fc7('0x30')]=_[_0x6fc7('0x2b')](_0x34bf7f,_0x6fc7('0x28'));_0xa93a4f[_0x6fc7('0x31')]=_['keys'](_0x5c1fd3[_0x6fc7('0x31')]);_0xa93a4f[_0x6fc7('0x32')]=_[_0x6fc7('0x33')](_0xa93a4f[_0x6fc7('0x30')],_0xa93a4f['query']);_0x30e579['attributes']=_['intersection'](_0xa93a4f[_0x6fc7('0x30')],qs[_0x6fc7('0x34')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x34')]));_0x30e579[_0x6fc7('0x35')]=_0x30e579[_0x6fc7('0x35')][_0x6fc7('0x36')]?_0x30e579[_0x6fc7('0x35')]:_0xa93a4f[_0x6fc7('0x30')];if(!_0x5c1fd3['query'][_0x6fc7('0x37')]('nolimit')){_0x30e579[_0x6fc7('0x1d')]=qs[_0x6fc7('0x1d')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x1d')]);_0x30e579['offset']=qs[_0x6fc7('0x1b')](_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x1b')]);}_0x30e579[_0x6fc7('0x38')]=qs['sort'](_0x5c1fd3[_0x6fc7('0x31')]['sort']);_0x30e579[_0x6fc7('0x39')]=qs['filters'](_['pick'](_0x5c1fd3['query'],_0xa93a4f[_0x6fc7('0x32')]),_0x34bf7f);if(_0x5c1fd3['query'][_0x6fc7('0x3a')]){_0x30e579[_0x6fc7('0x39')]=_[_0x6fc7('0x3b')](_0x30e579[_0x6fc7('0x39')],{'$or':_[_0x6fc7('0x2b')](_0x34bf7f,function(_0xc1fbf7){if(_0xc1fbf7[_0x6fc7('0x2e')]!==_0x6fc7('0x3c')){var _0x18e6f7={};_0x18e6f7[_0xc1fbf7[_0x6fc7('0x28')]]={'$like':'%'+_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x3a')]+'%'};return _0x18e6f7;}})});}_0x30e579=_[_0x6fc7('0x3b')]({},_0x30e579,_0x5c1fd3[_0x6fc7('0x3d')]);var _0x3ac76e={'where':_0x30e579[_0x6fc7('0x39')]};return db[_0x6fc7('0x2c')][_0x6fc7('0x1e')](_0x3ac76e)['then'](function(_0x490f2e){_0x2aa91c[_0x6fc7('0x1e')]=_0x490f2e;if(_0x5c1fd3[_0x6fc7('0x31')][_0x6fc7('0x3e')]){_0x30e579[_0x6fc7('0x3f')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x6fc7('0x40')](_0x30e579);})[_0x6fc7('0x24')](function(_0x27f6dc){_0x2aa91c[_0x6fc7('0x41')]=_0x27f6dc;return _0x2aa91c;})[_0x6fc7('0x24')](respondWithFilteredResult(_0xfff989,_0x30e579))[_0x6fc7('0x42')](handleError(_0xfff989,null));};exports[_0x6fc7('0x43')]=function(_0x4754da,_0x1e33cd){var _0x2d8ca4={'raw':!![],'where':{'id':_0x4754da[_0x6fc7('0x44')]['id']}},_0x20bc07={};_0x20bc07['model']=_[_0x6fc7('0x45')](db[_0x6fc7('0x2c')]['rawAttributes']);_0x20bc07[_0x6fc7('0x31')]=_[_0x6fc7('0x45')](_0x4754da[_0x6fc7('0x31')]);_0x20bc07[_0x6fc7('0x32')]=_[_0x6fc7('0x33')](_0x20bc07[_0x6fc7('0x30')],_0x20bc07[_0x6fc7('0x31')]);_0x2d8ca4[_0x6fc7('0x35')]=_[_0x6fc7('0x33')](_0x20bc07[_0x6fc7('0x30')],qs['fields'](_0x4754da[_0x6fc7('0x31')][_0x6fc7('0x34')]));_0x2d8ca4['attributes']=_0x2d8ca4['attributes'][_0x6fc7('0x36')]?_0x2d8ca4[_0x6fc7('0x35')]:_0x20bc07[_0x6fc7('0x30')];if(_0x4754da['query'][_0x6fc7('0x3e')]){_0x2d8ca4[_0x6fc7('0x3f')]=[{'all':!![]}];}_0x2d8ca4=_['merge']({},_0x2d8ca4,_0x4754da[_0x6fc7('0x3d')]);return db[_0x6fc7('0x2c')][_0x6fc7('0x46')](_0x2d8ca4)[_0x6fc7('0x24')](handleEntityNotFound(_0x1e33cd,null))[_0x6fc7('0x24')](respondWithResult(_0x1e33cd,null))[_0x6fc7('0x42')](handleError(_0x1e33cd,null));};exports[_0x6fc7('0x47')]=function(_0xb6cf9b,_0x357d7a){return db[_0x6fc7('0x2c')][_0x6fc7('0x47')](_0xb6cf9b['body'],{})['then'](respondWithResult(_0x357d7a,0xc9))['catch'](handleError(_0x357d7a,null));};exports['update']=function(_0x22a0c5,_0x5d4d40){if(_0x22a0c5[_0x6fc7('0x48')]['id']){delete _0x22a0c5[_0x6fc7('0x48')]['id'];}return db[_0x6fc7('0x2c')][_0x6fc7('0x46')]({'where':{'id':_0x22a0c5[_0x6fc7('0x44')]['id']}})[_0x6fc7('0x24')](handleEntityNotFound(_0x5d4d40,null))['then'](saveUpdates(_0x22a0c5[_0x6fc7('0x48')],null))[_0x6fc7('0x24')](respondWithResult(_0x5d4d40,null))['catch'](handleError(_0x5d4d40,null));};exports[_0x6fc7('0x23')]=function(_0x24bf3e,_0x3b2506){return db[_0x6fc7('0x2c')][_0x6fc7('0x46')]({'where':{'id':_0x24bf3e[_0x6fc7('0x44')]['id']}})[_0x6fc7('0x24')](handleEntityNotFound(_0x3b2506,null))[_0x6fc7('0x24')](removeEntity(_0x3b2506,null))[_0x6fc7('0x42')](handleError(_0x3b2506,null));};exports[_0x6fc7('0x49')]=function(_0x4ced40,_0x4684bd){return db[_0x6fc7('0x2c')][_0x6fc7('0x49')]()['then'](respondWithResult(_0x4684bd,null))[_0x6fc7('0x42')](handleError(_0x4684bd,null));};
\ No newline at end of file
index 50e0c7f..39d5fa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4741=['rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x258ba6,_0x59774){var _0x54bce0=function(_0x25f6e8){while(--_0x25f6e8){_0x258ba6['push'](_0x258ba6['shift']());}};_0x54bce0(++_0x59774);}(_0x4741,0xe8));var _0x1474=function(_0xc8f980,_0x3ec657){_0xc8f980=_0xc8f980-0x0;var _0x243b1c=_0x4741[_0xc8f980];return _0x243b1c;};'use strict';var _=require(_0x1474('0x0'));var util=require(_0x1474('0x1'));var logger=require(_0x1474('0x2'))(_0x1474('0x3'));var moment=require(_0x1474('0x4'));var BPromise=require(_0x1474('0x5'));var rp=require(_0x1474('0x6'));var fs=require('fs');var path=require(_0x1474('0x7'));var rimraf=require(_0x1474('0x8'));var config=require(_0x1474('0x9'));var attributes=require(_0x1474('0xa'));module[_0x1474('0xb')]=function(_0x5944f3,_0x687a03){return _0x5944f3[_0x1474('0xc')](_0x1474('0xd'),attributes,{'tableName':_0x1474('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x886e=['JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','define'];(function(_0xc8a11,_0x347a33){var _0x55a500=function(_0x288d05){while(--_0x288d05){_0xc8a11['push'](_0xc8a11['shift']());}};_0x55a500(++_0x347a33);}(_0x886e,0x154));var _0xe886=function(_0x3bb700,_0x17b527){_0x3bb700=_0x3bb700-0x0;var _0x56bd84=_0x886e[_0x3bb700];return _0x56bd84;};'use strict';var _=require(_0xe886('0x0'));var util=require(_0xe886('0x1'));var logger=require(_0xe886('0x2'))(_0xe886('0x3'));var moment=require(_0xe886('0x4'));var BPromise=require('bluebird');var rp=require(_0xe886('0x5'));var fs=require('fs');var path=require(_0xe886('0x6'));var rimraf=require(_0xe886('0x7'));var config=require(_0xe886('0x8'));var attributes=require(_0xe886('0x9'));module['exports']=function(_0xed2d0d,_0x688539){return _0xed2d0d[_0xe886('0xa')](_0xe886('0xb'),attributes,{'tableName':_0xe886('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd4a878..34748df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5d=['code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error'];(function(_0x5a8dcb,_0x11f2a8){var _0x5ee4d0=function(_0x434983){while(--_0x434983){_0x5a8dcb['push'](_0x5a8dcb['shift']());}};_0x5ee4d0(++_0x11f2a8);}(_0x9c5d,0xd7));var _0xd9c5=function(_0x54514c,_0xf1c84a){_0x54514c=_0x54514c-0x0;var _0x5cd80e=_0x9c5d[_0x54514c];return _0x5cd80e;};'use strict';var _=require(_0xd9c5('0x0'));var util=require(_0xd9c5('0x1'));var moment=require('moment');var BPromise=require(_0xd9c5('0x2'));var rs=require(_0xd9c5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd9c5('0x4'));var logger=require(_0xd9c5('0x5'))(_0xd9c5('0x6'));var config=require(_0xd9c5('0x7'));var jayson=require(_0xd9c5('0x8'));var client=jayson[_0xd9c5('0x9')][_0xd9c5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54db82,_0x123513,_0x419267){return new BPromise(function(_0xd6e83f,_0x2b5bb6){return client['request'](_0x54db82,_0x419267)[_0xd9c5('0xb')](function(_0x47ca73){logger[_0xd9c5('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x123513,_0xd9c5('0xd'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x123513,_0xd9c5('0xd'),JSON[_0xd9c5('0xe')](_0x47ca73));if(_0x47ca73[_0xd9c5('0xf')]){if(_0x47ca73['error'][_0xd9c5('0x10')]===0x1f4){logger[_0xd9c5('0xf')](_0xd9c5('0x11'),_0x123513,_0x47ca73[_0xd9c5('0xf')][_0xd9c5('0x12')]);return _0x2b5bb6(_0x47ca73[_0xd9c5('0xf')][_0xd9c5('0x12')]);}logger[_0xd9c5('0xf')](_0xd9c5('0x11'),_0x123513,_0x47ca73[_0xd9c5('0xf')]['message']);return _0xd6e83f(_0x47ca73['error'][_0xd9c5('0x12')]);}else{logger['info'](_0xd9c5('0x11'),_0x123513,_0xd9c5('0xd'));_0xd6e83f(_0x47ca73[_0xd9c5('0x13')][_0xd9c5('0x12')]);}})[_0xd9c5('0x14')](function(_0x10f8a1){logger[_0xd9c5('0xf')](_0xd9c5('0x11'),_0x123513,_0x10f8a1);_0x2b5bb6(_0x10f8a1);});});}
\ No newline at end of file
+var _0x221c=['http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3db045,_0x155b0e){var _0x2ebeca=function(_0x3ad0d8){while(--_0x3ad0d8){_0x3db045['push'](_0x3db045['shift']());}};_0x2ebeca(++_0x155b0e);}(_0x221c,0x17c));var _0xc221=function(_0x256db6,_0x3031cd){_0x256db6=_0x256db6-0x0;var _0x5b8e1f=_0x221c[_0x256db6];return _0x5b8e1f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc221('0x0'));var BPromise=require(_0xc221('0x1'));var rs=require(_0xc221('0x2'));var fs=require('fs');var Redis=require(_0xc221('0x3'));var db=require(_0xc221('0x4'))['db'];var utils=require(_0xc221('0x5'));var logger=require(_0xc221('0x6'))(_0xc221('0x7'));var config=require(_0xc221('0x8'));var jayson=require(_0xc221('0x9'));var client=jayson[_0xc221('0xa')][_0xc221('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d4b9d,_0x160646,_0x22be13){return new BPromise(function(_0x4d5c2c,_0x55a6da){return client[_0xc221('0xc')](_0x5d4b9d,_0x22be13)[_0xc221('0xd')](function(_0x5eba65){logger[_0xc221('0xe')](_0xc221('0xf'),_0x160646,_0xc221('0x10'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x160646,_0xc221('0x10'),JSON[_0xc221('0x11')](_0x5eba65));if(_0x5eba65[_0xc221('0x12')]){if(_0x5eba65['error'][_0xc221('0x13')]===0x1f4){logger[_0xc221('0x12')](_0xc221('0xf'),_0x160646,_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);return _0x55a6da(_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);}logger['error'](_0xc221('0xf'),_0x160646,_0x5eba65[_0xc221('0x12')]['message']);return _0x4d5c2c(_0x5eba65[_0xc221('0x12')][_0xc221('0x14')]);}else{logger[_0xc221('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x160646,_0xc221('0x10'));_0x4d5c2c(_0x5eba65[_0xc221('0x15')]['message']);}})[_0xc221('0x16')](function(_0x56d0dc){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x160646,_0x56d0dc);_0x55a6da(_0x56d0dc);});});}
\ No newline at end of file
index 72d8d1d..a2c2a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc04f=['./jscriptyProject.controller','get','index','/:id','isAuthenticated','show','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x188996,_0x29e313){var _0x55a341=function(_0x10fe44){while(--_0x10fe44){_0x188996['push'](_0x188996['shift']());}};_0x55a341(++_0x29e313);}(_0xc04f,0xd6));var _0xfc04=function(_0x169dff,_0x57be0){_0x169dff=_0x169dff-0x0;var _0x91cf22=_0xc04f[_0x169dff];return _0x91cf22;};'use strict';var multer=require(_0xfc04('0x0'));var util=require(_0xfc04('0x1'));var path=require(_0xfc04('0x2'));var timeout=require(_0xfc04('0x3'));var express=require(_0xfc04('0x4'));var router=express[_0xfc04('0x5')]();var fs_extra=require(_0xfc04('0x6'));var auth=require(_0xfc04('0x7'));var interaction=require(_0xfc04('0x8'));var config=require(_0xfc04('0x9'));var controller=require(_0xfc04('0xa'));router[_0xfc04('0xb')]('/',auth['isAuthenticated'](),controller[_0xfc04('0xc')]);router[_0xfc04('0xb')](_0xfc04('0xd'),auth[_0xfc04('0xe')](),controller[_0xfc04('0xf')]);router[_0xfc04('0xb')](_0xfc04('0x10'),auth[_0xfc04('0xe')](),controller[_0xfc04('0x11')]);router[_0xfc04('0xb')]('/:id/answers',auth[_0xfc04('0xe')](),controller[_0xfc04('0x12')]);router['get'](_0xfc04('0x13'),auth['isAuthenticated'](),timeout(_0xfc04('0x14')),controller[_0xfc04('0x15')]);router[_0xfc04('0x16')]('/',auth[_0xfc04('0xe')](),controller[_0xfc04('0x17')]);router[_0xfc04('0x16')]('/:id/clone',auth[_0xfc04('0xe')](),controller['clone']);router[_0xfc04('0x18')](_0xfc04('0xd'),auth[_0xfc04('0xe')](),controller[_0xfc04('0x19')]);router[_0xfc04('0x1a')](_0xfc04('0xd'),auth[_0xfc04('0xe')](),controller['destroy']);module[_0xfc04('0x1b')]=router;
\ No newline at end of file
+var _0x4b25=['getSummary','post','create','put','/:id','update','delete','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','getSessions','/:id/answers','getAnswers','/:id/summary','30s'];(function(_0x25e2e7,_0x301a17){var _0x33fe39=function(_0x5913a0){while(--_0x5913a0){_0x25e2e7['push'](_0x25e2e7['shift']());}};_0x33fe39(++_0x301a17);}(_0x4b25,0x75));var _0x54b2=function(_0x59c4b3,_0x3a7ebc){_0x59c4b3=_0x59c4b3-0x0;var _0x5a81a2=_0x4b25[_0x59c4b3];return _0x5a81a2;};'use strict';var multer=require(_0x54b2('0x0'));var util=require('util');var path=require(_0x54b2('0x1'));var timeout=require('connect-timeout');var express=require(_0x54b2('0x2'));var router=express[_0x54b2('0x3')]();var fs_extra=require(_0x54b2('0x4'));var auth=require(_0x54b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x54b2('0x6'));var controller=require(_0x54b2('0x7'));router[_0x54b2('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x54b2('0x8')]('/:id',auth[_0x54b2('0x9')](),controller['show']);router[_0x54b2('0x8')]('/:id/sessions',auth[_0x54b2('0x9')](),controller[_0x54b2('0xa')]);router[_0x54b2('0x8')](_0x54b2('0xb'),auth['isAuthenticated'](),controller[_0x54b2('0xc')]);router['get'](_0x54b2('0xd'),auth[_0x54b2('0x9')](),timeout(_0x54b2('0xe')),controller[_0x54b2('0xf')]);router[_0x54b2('0x10')]('/',auth[_0x54b2('0x9')](),controller[_0x54b2('0x11')]);router[_0x54b2('0x10')]('/:id/clone',auth[_0x54b2('0x9')](),controller['clone']);router[_0x54b2('0x12')](_0x54b2('0x13'),auth[_0x54b2('0x9')](),controller[_0x54b2('0x14')]);router[_0x54b2('0x15')]('/:id',auth[_0x54b2('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 45aee88..dae6f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0551=['isObjectLike','setDataValue','stringify','isString','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long'];(function(_0x5640e4,_0x15def6){var _0x935833=function(_0x2bc387){while(--_0x2bc387){_0x5640e4['push'](_0x5640e4['shift']());}};_0x935833(++_0x15def6);}(_0x0551,0x69));var _0x1055=function(_0x4e07d9,_0x15d276){_0x4e07d9=_0x4e07d9-0x0;var _0x508643=_0x0551[_0x4e07d9];return _0x508643;};'use strict';var Sequelize=require(_0x1055('0x0'));var _=require(_0x1055('0x1'));var util=require(_0x1055('0x2'));module[_0x1055('0x3')]={'name':{'type':Sequelize[_0x1055('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x1055('0x4')]},'formData':{'type':Sequelize[_0x1055('0x5')](_0x1055('0x6')),'set':function(_0x400621){if(_[_0x1055('0x7')](_0x400621)){this[_0x1055('0x8')]('formData',JSON[_0x1055('0x9')](_0x400621));}else if(_[_0x1055('0xa')](_0x400621)){this[_0x1055('0x8')](_0x1055('0xb'),_0x400621);}else{this[_0x1055('0x8')](_0x1055('0xb'),util[_0x1055('0xc')](_0x1055('0xd'),this['getDataValue']('name')||'',this[_0x1055('0xe')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x1055('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xc917=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format'];(function(_0x4787cc,_0x224c63){var _0x2801fb=function(_0x46c253){while(--_0x46c253){_0x4787cc['push'](_0x4787cc['shift']());}};_0x2801fb(++_0x224c63);}(_0xc917,0x17a));var _0x7c91=function(_0x506a19,_0x1aa991){_0x506a19=_0x506a19-0x0;var _0x23f2b5=_0xc917[_0x506a19];return _0x23f2b5;};'use strict';var Sequelize=require(_0x7c91('0x0'));var _=require(_0x7c91('0x1'));var util=require(_0x7c91('0x2'));module[_0x7c91('0x3')]={'name':{'type':Sequelize[_0x7c91('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x7c91('0x4')]},'formData':{'type':Sequelize[_0x7c91('0x5')](_0x7c91('0x6')),'set':function(_0x58d474){if(_[_0x7c91('0x7')](_0x58d474)){this['setDataValue'](_0x7c91('0x8'),JSON[_0x7c91('0x9')](_0x58d474));}else if(_[_0x7c91('0xa')](_0x58d474)){this['setDataValue']('formData',_0x58d474);}else{this[_0x7c91('0xb')](_0x7c91('0x8'),util[_0x7c91('0xc')](_0x7c91('0xd'),this[_0x7c91('0xe')]('name')||'',this[_0x7c91('0xe')](_0x7c91('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x7c91('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x7c91('0x10')],'defaultValue':![]}};
\ No newline at end of file
index 4498d8e..5b85bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391f=['getSessions','findOne','JscriptySessionReport','ProjectId','getAnswers','order','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','answer','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','update','then','get','Projects','UserProfileResource','destroy','error','stack','name','send','index','JscriptyProject','rawAttributes','type','key','map','filters','model','attributes','query','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','intersection','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','UserProfileSection'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x391f,0x10c));var _0xf391=function(_0x5ac34b,_0x2de8a4){_0x5ac34b=_0x5ac34b-0x0;var _0x1b573f=_0x391f[_0x5ac34b];return _0x1b573f;};'use strict';var emlformat=require(_0xf391('0x0'));var rimraf=require(_0xf391('0x1'));var zipdir=require(_0xf391('0x2'));var jsonpatch=require(_0xf391('0x3'));var rp=require(_0xf391('0x4'));var moment=require(_0xf391('0x5'));var BPromise=require(_0xf391('0x6'));var Mustache=require('mustache');var util=require(_0xf391('0x7'));var path=require(_0xf391('0x8'));var sox=require(_0xf391('0x9'));var csv=require(_0xf391('0xa'));var ejs=require(_0xf391('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf391('0xc'));var squel=require(_0xf391('0xd'));var crypto=require(_0xf391('0xe'));var jsforce=require(_0xf391('0xf'));var deskjs=require(_0xf391('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf391('0x11'));var Papa=require(_0xf391('0x12'));var Redis=require(_0xf391('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf391('0x14'));var hardwareService=require(_0xf391('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xf391('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf391('0x17'));var db=require(_0xf391('0x18'))['db'];function respondWithStatusCode(_0x3fde73,_0x4fcb52){_0x4fcb52=_0x4fcb52||0xcc;return function(_0x3c014c){if(_0x3c014c){return _0x3fde73[_0xf391('0x19')](_0x4fcb52);}return _0x3fde73[_0xf391('0x1a')](_0x4fcb52)[_0xf391('0x1b')]();};}function respondWithResult(_0x3a1125,_0x1f7d65){_0x1f7d65=_0x1f7d65||0xc8;return function(_0x4f69f2){if(_0x4f69f2){return _0x3a1125[_0xf391('0x1a')](_0x1f7d65)[_0xf391('0x1c')](_0x4f69f2);}};}function respondWithFilteredResult(_0x5a92e1,_0x44a510){return function(_0x47dbc7){if(_0x47dbc7){var _0xbaeaba=typeof _0x44a510[_0xf391('0x1d')]===_0xf391('0x1e')&&typeof _0x44a510[_0xf391('0x1f')]===_0xf391('0x1e');var _0x5d61d0=_0x47dbc7['count'];var _0x32b6c3=_0xbaeaba?0x0:_0x44a510[_0xf391('0x1d')];var _0x548bc4=_0xbaeaba?_0x47dbc7[_0xf391('0x20')]:_0x44a510[_0xf391('0x1d')]+_0x44a510[_0xf391('0x1f')];var _0x2a6c88;if(_0x548bc4>=_0x5d61d0){_0x548bc4=_0x5d61d0;_0x2a6c88=0xc8;}else{_0x2a6c88=0xce;}_0x5a92e1['status'](_0x2a6c88);return _0x5a92e1['set']('Content-Range',_0x32b6c3+'-'+_0x548bc4+'/'+_0x5d61d0)['json'](_0x47dbc7);}return null;};}function patchUpdates(_0x5544bc){return function(_0x262c1c){try{jsonpatch[_0xf391('0x21')](_0x262c1c,_0x5544bc,!![]);}catch(_0x3c13eb){return BPromise[_0xf391('0x22')](_0x3c13eb);}return _0x262c1c['save']();};}function saveUpdates(_0x312818,_0x2b6fa0){return function(_0x41036e){if(_0x41036e){return _0x41036e[_0xf391('0x23')](_0x312818)[_0xf391('0x24')](function(_0x4ab172){return _0x4ab172;});}return null;};}function removeEntity(_0x1bc97a,_0x54632e){return function(_0x46f41f){if(_0x46f41f){return _0x46f41f['destroy']()[_0xf391('0x24')](function(){var _0x3542c5=_0x46f41f[_0xf391('0x25')]({'plain':!![]});var _0x1a6f70=_0xf391('0x26');return db[_0xf391('0x27')][_0xf391('0x28')]({'where':{'type':_0x1a6f70,'resourceId':_0x3542c5['id']}})[_0xf391('0x24')](function(){return _0x46f41f;});})[_0xf391('0x24')](function(){_0x1bc97a[_0xf391('0x1a')](0xcc)[_0xf391('0x1b')]();});}};}function handleEntityNotFound(_0x3ac7ab,_0x13c4ab){return function(_0x2abf2d){if(!_0x2abf2d){_0x3ac7ab['sendStatus'](0x194);}return _0x2abf2d;};}function handleError(_0xe3f4cb,_0x4e5b0a){_0x4e5b0a=_0x4e5b0a||0x1f4;return function(_0x2c78b8){logger[_0xf391('0x29')](_0x2c78b8[_0xf391('0x2a')]);if(_0x2c78b8[_0xf391('0x2b')]){delete _0x2c78b8[_0xf391('0x2b')];}_0xe3f4cb['status'](_0x4e5b0a)[_0xf391('0x2c')](_0x2c78b8);};}exports[_0xf391('0x2d')]=function(_0x3c9b87,_0x355d33){var _0x35c652={},_0x18a5a8={},_0x3a0895={'count':0x0,'rows':[]};var _0x5be4b0=_['map'](db[_0xf391('0x2e')][_0xf391('0x2f')],function(_0xdb5ac5){return{'name':_0xdb5ac5['fieldName'],'type':_0xdb5ac5[_0xf391('0x30')][_0xf391('0x31')]};});_0x18a5a8['model']=_[_0xf391('0x32')](_0x5be4b0,_0xf391('0x2b'));_0x18a5a8['query']=_['keys'](_0x3c9b87['query']);_0x18a5a8[_0xf391('0x33')]=_['intersection'](_0x18a5a8[_0xf391('0x34')],_0x18a5a8['query']);_0x35c652[_0xf391('0x35')]=_['intersection'](_0x18a5a8[_0xf391('0x34')],qs['fields'](_0x3c9b87[_0xf391('0x36')][_0xf391('0x37')]));_0x35c652[_0xf391('0x35')]=_0x35c652[_0xf391('0x35')]['length']?_0x35c652['attributes']:_0x18a5a8['model'];if(!_0x3c9b87[_0xf391('0x36')][_0xf391('0x38')](_0xf391('0x39'))){_0x35c652[_0xf391('0x1f')]=qs[_0xf391('0x1f')](_0x3c9b87[_0xf391('0x36')][_0xf391('0x1f')]);_0x35c652[_0xf391('0x1d')]=qs[_0xf391('0x1d')](_0x3c9b87[_0xf391('0x36')]['offset']);}_0x35c652['order']=qs[_0xf391('0x3a')](_0x3c9b87[_0xf391('0x36')][_0xf391('0x3a')]);_0x35c652['where']=qs[_0xf391('0x33')](_[_0xf391('0x3b')](_0x3c9b87['query'],_0x18a5a8[_0xf391('0x33')]),_0x5be4b0);if(_0x3c9b87[_0xf391('0x36')]['filter']){_0x35c652[_0xf391('0x3c')]=_[_0xf391('0x3d')](_0x35c652[_0xf391('0x3c')],{'$or':_[_0xf391('0x32')](_0x5be4b0,function(_0x5a4c0c){if(_0x5a4c0c[_0xf391('0x30')]!==_0xf391('0x3e')){var _0x9e571d={};_0x9e571d[_0x5a4c0c['name']]={'$like':'%'+_0x3c9b87['query'][_0xf391('0x3f')]+'%'};return _0x9e571d;}})});}_0x35c652=_[_0xf391('0x3d')]({},_0x35c652,_0x3c9b87[_0xf391('0x40')]);var _0xfd4e02={'where':_0x35c652[_0xf391('0x3c')]};return db[_0xf391('0x2e')][_0xf391('0x20')](_0xfd4e02)[_0xf391('0x24')](function(_0x2bd6ab){_0x3a0895[_0xf391('0x20')]=_0x2bd6ab;if(_0x3c9b87[_0xf391('0x36')][_0xf391('0x41')]){_0x35c652['include']=[{'all':!![]}];}return db[_0xf391('0x2e')][_0xf391('0x42')](_0x35c652);})[_0xf391('0x24')](function(_0x2aa19c){_0x3a0895[_0xf391('0x43')]=_0x2aa19c;return _0x3a0895;})[_0xf391('0x24')](respondWithFilteredResult(_0x355d33,_0x35c652))[_0xf391('0x44')](handleError(_0x355d33,null));};exports[_0xf391('0x45')]=function(_0xbed0b3,_0x3c55d5){var _0x23485c={'raw':![],'where':{'id':_0xbed0b3[_0xf391('0x46')]['id']}},_0x394117={};_0x394117['model']=_['keys'](db[_0xf391('0x2e')][_0xf391('0x2f')]);_0x394117[_0xf391('0x36')]=_[_0xf391('0x47')](_0xbed0b3[_0xf391('0x36')]);_0x394117[_0xf391('0x33')]=_[_0xf391('0x48')](_0x394117[_0xf391('0x34')],_0x394117['query']);_0x23485c['attributes']=_[_0xf391('0x48')](_0x394117['model'],qs['fields'](_0xbed0b3['query'][_0xf391('0x37')]));_0x23485c['attributes']=_0x23485c[_0xf391('0x35')][_0xf391('0x49')]?_0x23485c['attributes']:_0x394117[_0xf391('0x34')];if(_0xbed0b3[_0xf391('0x36')][_0xf391('0x41')]){_0x23485c[_0xf391('0x4a')]=[{'all':!![]}];}_0x23485c=_['merge']({},_0x23485c,_0xbed0b3['options']);return db[_0xf391('0x2e')][_0xf391('0x4b')](_0x23485c)[_0xf391('0x24')](handleEntityNotFound(_0x3c55d5,null))[_0xf391('0x24')](respondWithResult(_0x3c55d5,null))[_0xf391('0x44')](handleError(_0x3c55d5,null));};exports['create']=function(_0x41f697,_0x2992f1){return db[_0xf391('0x2e')][_0xf391('0x4c')](_0x41f697[_0xf391('0x4d')],{})['then'](function(_0x457106){var _0x5721e7=_0x41f697[_0xf391('0x4e')][_0xf391('0x25')]({'plain':!![]});if(!_0x5721e7)throw new Error(_0xf391('0x4f'));if(_0x5721e7['role']===_0xf391('0x4e')){var _0x59e1c1=_0x457106[_0xf391('0x25')]({'plain':!![]});var _0x3cbc7f=_0xf391('0x26');return db['UserProfileSection'][_0xf391('0x4b')]({'where':{'name':_0x3cbc7f,'userProfileId':_0x5721e7[_0xf391('0x50')]},'raw':!![]})['then'](function(_0x436cad){if(_0x436cad&&_0x436cad['autoAssociation']===0x0){return db['UserProfileResource'][_0xf391('0x4c')]({'name':_0x59e1c1[_0xf391('0x2b')],'resourceId':_0x59e1c1['id'],'type':_0x436cad[_0xf391('0x2b')],'sectionId':_0x436cad['id']},{})[_0xf391('0x24')](function(){return _0x457106;});}else{return _0x457106;}})['catch'](function(_0x4ed673){logger[_0xf391('0x29')](_0xf391('0x51'),_0x4ed673);throw _0x4ed673;});}return _0x457106;})[_0xf391('0x24')](respondWithResult(_0x2992f1,0xc9))[_0xf391('0x44')](handleError(_0x2992f1,null));};exports['clone']=function(_0x44d1de,_0x231cf1){var _0x4162d3={'where':{'id':_0x44d1de[_0xf391('0x46')]['id']}},_0x4fb0e8={};_0x4fb0e8[_0xf391('0x34')]=_[_0xf391('0x47')](db[_0xf391('0x2e')][_0xf391('0x2f')]);_0x4162d3[_0xf391('0x35')]=_['intersection'](_0x4fb0e8[_0xf391('0x34')],qs[_0xf391('0x37')](_0x44d1de[_0xf391('0x36')][_0xf391('0x37')]));_0x4162d3[_0xf391('0x35')]=_0x4162d3[_0xf391('0x35')]['length']?_0x4162d3[_0xf391('0x35')]:_0x4fb0e8['model'];if(_0x44d1de[_0xf391('0x36')][_0xf391('0x41')]){_0x4162d3[_0xf391('0x4a')]=[{'all':!![]}];}_0x4162d3=_[_0xf391('0x3d')]({},_0x4162d3,_0x44d1de[_0xf391('0x40')]);return db[_0xf391('0x2e')]['find'](_0x4162d3)[_0xf391('0x24')](handleEntityNotFound(_0x231cf1,null))['then'](function(_0x1b950d){if(_0x1b950d){var _0x337dd6=_0x1b950d[_0xf391('0x25')]({'plain':!![]});_0x337dd6=qs['omit'](_0x337dd6,['id',_0xf391('0x52'),_0xf391('0x53')]);_0x44d1de[_0xf391('0x4d')]=_[_0xf391('0x54')](_0x44d1de['body'],['id',_0xf391('0x52'),'updatedAt']);return db['JscriptyProject']['create'](_[_0xf391('0x3d')](_0x337dd6,_0x44d1de[_0xf391('0x4d')]),{'include':_0x44d1de[_0xf391('0x36')][_0xf391('0x41')]?[{'all':!![]}]:undefined})[_0xf391('0x24')](function(_0x4c4bda){var _0x10ab85=_0x44d1de[_0xf391('0x4e')][_0xf391('0x25')]({'plain':!![]});if(!_0x10ab85)throw new Error(_0xf391('0x4f'));if(_0x10ab85['role']==='user'){var _0x3454f9=_0x4c4bda['get']({'plain':!![]});var _0x5adb03=_0xf391('0x26');return db[_0xf391('0x55')][_0xf391('0x4b')]({'where':{'name':_0x5adb03,'userProfileId':_0x10ab85[_0xf391('0x50')]},'raw':!![]})[_0xf391('0x24')](function(_0x154960){if(_0x154960&&_0x154960['autoAssociation']===0x0){return db[_0xf391('0x27')][_0xf391('0x4c')]({'name':_0x3454f9[_0xf391('0x2b')],'resourceId':_0x3454f9['id'],'type':_0x154960['name'],'sectionId':_0x154960['id']},{})[_0xf391('0x24')](function(){return _0x4c4bda;});}else{return _0x4c4bda;}})[_0xf391('0x44')](function(_0x424e77){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x424e77);throw _0x424e77;});}return _0x4c4bda;});}})[_0xf391('0x24')](respondWithResult(_0x231cf1,0xc9))[_0xf391('0x44')](handleError(_0x231cf1,null));};exports[_0xf391('0x23')]=function(_0x432afb,_0x4a4902){if(_0x432afb[_0xf391('0x4d')]['id']){delete _0x432afb['body']['id'];}return db['JscriptyProject'][_0xf391('0x4b')]({'where':{'id':_0x432afb[_0xf391('0x46')]['id']}})[_0xf391('0x24')](handleEntityNotFound(_0x4a4902,null))[_0xf391('0x24')](saveUpdates(_0x432afb[_0xf391('0x4d')],null))['then'](respondWithResult(_0x4a4902,null))[_0xf391('0x44')](handleError(_0x4a4902,null));};exports[_0xf391('0x28')]=function(_0x3a9f47,_0x994daa){return db[_0xf391('0x2e')]['find']({'where':{'id':_0x3a9f47['params']['id']}})['then'](handleEntityNotFound(_0x994daa,null))['then'](removeEntity(_0x994daa,null))[_0xf391('0x44')](handleError(_0x994daa,null));};exports[_0xf391('0x56')]=function(_0x365a9b,_0x533809,_0x57f8c0){var _0x2730a1={'raw':!![],'where':{}};var _0x21aeda={};var _0x5abcf4={'count':0x0,'rows':[]};return db[_0xf391('0x2e')][_0xf391('0x57')]({'where':{'id':_0x365a9b[_0xf391('0x46')]['id']}})[_0xf391('0x24')](handleEntityNotFound(_0x533809,null))[_0xf391('0x24')](function(_0x2adb03){if(_0x2adb03){_0x21aeda['model']=_['keys'](db[_0xf391('0x58')]['rawAttributes']);_0x21aeda[_0xf391('0x36')]=_[_0xf391('0x47')](_0x365a9b[_0xf391('0x36')]);_0x21aeda['filters']=_[_0xf391('0x48')](_0x21aeda[_0xf391('0x34')],_0x21aeda[_0xf391('0x36')]);_0x2730a1[_0xf391('0x35')]=_[_0xf391('0x48')](_0x21aeda[_0xf391('0x34')],qs[_0xf391('0x37')](_0x365a9b[_0xf391('0x36')][_0xf391('0x37')]));_0x2730a1[_0xf391('0x35')]=_0x2730a1[_0xf391('0x35')][_0xf391('0x49')]?_0x2730a1[_0xf391('0x35')]:_0x21aeda[_0xf391('0x34')];if(!_0x365a9b[_0xf391('0x36')][_0xf391('0x38')](_0xf391('0x39'))){_0x2730a1[_0xf391('0x1f')]=qs[_0xf391('0x1f')](_0x365a9b[_0xf391('0x36')]['limit']);_0x2730a1[_0xf391('0x1d')]=qs[_0xf391('0x1d')](_0x365a9b[_0xf391('0x36')][_0xf391('0x1d')]);}_0x2730a1['order']=qs['sort'](_0x365a9b[_0xf391('0x36')]['sort']);_0x2730a1[_0xf391('0x3c')]=qs[_0xf391('0x33')](_['pick'](_0x365a9b[_0xf391('0x36')],_0x21aeda[_0xf391('0x33')]));_0x2730a1[_0xf391('0x3c')][_0xf391('0x59')]=_0x2adb03['id'];if(_0x365a9b[_0xf391('0x36')][_0xf391('0x3f')]){_0x2730a1[_0xf391('0x3c')]=_[_0xf391('0x3d')](_0x2730a1[_0xf391('0x3c')],{'$or':_[_0xf391('0x32')](_0x2730a1[_0xf391('0x35')],function(_0xa70756){var _0x2e9b64={};_0x2e9b64[_0xa70756]={'$like':'%'+_0x365a9b[_0xf391('0x36')][_0xf391('0x3f')]+'%'};return _0x2e9b64;})});}_0x2730a1=_[_0xf391('0x3d')]({},_0x2730a1,_0x365a9b['options']);return db[_0xf391('0x58')][_0xf391('0x20')]({'where':_0x2730a1[_0xf391('0x3c')]})[_0xf391('0x24')](function(_0x995cf4){_0x5abcf4[_0xf391('0x20')]=_0x995cf4;if(_0x365a9b[_0xf391('0x36')]['includeAll']){_0x2730a1['include']=[{'all':!![]}];}return db[_0xf391('0x58')]['findAll'](_0x2730a1);})[_0xf391('0x24')](function(_0x29bbc1){_0x5abcf4[_0xf391('0x43')]=_0x29bbc1;return _0x5abcf4;});}})[_0xf391('0x24')](respondWithFilteredResult(_0x533809,_0x2730a1))[_0xf391('0x44')](handleError(_0x533809,null));};exports[_0xf391('0x5a')]=function(_0x356321,_0x4c58aa,_0x28713f){var _0x43cc29={'raw':!![],'where':{}};var _0x2d9f8a={};var _0x33955d={'count':0x0,'rows':[]};return db[_0xf391('0x2e')][_0xf391('0x57')]({'where':{'id':_0x356321[_0xf391('0x46')]['id']}})['then'](handleEntityNotFound(_0x4c58aa,null))[_0xf391('0x24')](function(_0x3d7d13){if(_0x3d7d13){_0x2d9f8a[_0xf391('0x34')]=_['keys'](db['JscriptyAnswerReport'][_0xf391('0x2f')]);_0x2d9f8a[_0xf391('0x36')]=_['keys'](_0x356321[_0xf391('0x36')]);_0x2d9f8a[_0xf391('0x33')]=_[_0xf391('0x48')](_0x2d9f8a[_0xf391('0x34')],_0x2d9f8a[_0xf391('0x36')]);_0x43cc29[_0xf391('0x35')]=_[_0xf391('0x48')](_0x2d9f8a[_0xf391('0x34')],qs[_0xf391('0x37')](_0x356321[_0xf391('0x36')][_0xf391('0x37')]));_0x43cc29[_0xf391('0x35')]=_0x43cc29[_0xf391('0x35')][_0xf391('0x49')]?_0x43cc29[_0xf391('0x35')]:_0x2d9f8a[_0xf391('0x34')];if(!_0x356321[_0xf391('0x36')][_0xf391('0x38')](_0xf391('0x39'))){_0x43cc29[_0xf391('0x1f')]=qs[_0xf391('0x1f')](_0x356321[_0xf391('0x36')][_0xf391('0x1f')]);_0x43cc29[_0xf391('0x1d')]=qs['offset'](_0x356321[_0xf391('0x36')][_0xf391('0x1d')]);}_0x43cc29[_0xf391('0x5b')]=qs['sort'](_0x356321[_0xf391('0x36')][_0xf391('0x3a')]);_0x43cc29[_0xf391('0x3c')]=qs[_0xf391('0x33')](_['pick'](_0x356321[_0xf391('0x36')],_0x2d9f8a[_0xf391('0x33')]));_0x43cc29['where'][_0xf391('0x59')]=_0x3d7d13['id'];if(_0x356321[_0xf391('0x36')][_0xf391('0x3f')]){_0x43cc29[_0xf391('0x3c')]=_[_0xf391('0x3d')](_0x43cc29[_0xf391('0x3c')],{'$or':_[_0xf391('0x32')](_0x43cc29[_0xf391('0x35')],function(_0x58a19c){var _0x11ef74={};_0x11ef74[_0x58a19c]={'$like':'%'+_0x356321[_0xf391('0x36')][_0xf391('0x3f')]+'%'};return _0x11ef74;})});}_0x43cc29=_[_0xf391('0x3d')]({},_0x43cc29,_0x356321[_0xf391('0x40')]);return db[_0xf391('0x5c')]['count']({'where':_0x43cc29['where']})[_0xf391('0x24')](function(_0x2d9c57){_0x33955d[_0xf391('0x20')]=_0x2d9c57;if(_0x356321[_0xf391('0x36')]['includeAll']){_0x43cc29[_0xf391('0x4a')]=[{'all':!![]}];}return db[_0xf391('0x5c')][_0xf391('0x42')](_0x43cc29);})[_0xf391('0x24')](function(_0x8669eb){_0x33955d[_0xf391('0x43')]=_0x8669eb;return _0x33955d;});}})[_0xf391('0x24')](respondWithFilteredResult(_0x4c58aa,_0x43cc29))[_0xf391('0x44')](handleError(_0x4c58aa,null));};function char(_0x400acb){return _0xf391('0x5d')===typeof _0x400acb?String[_0xf391('0x5e')][_0xf391('0x21')](null,arguments):_0x400acb;}function needsEncapsulation(_0xd5ba24){return!!_0xd5ba24&&(_0xd5ba24[_0xf391('0x5f')]()[_0xf391('0x60')](char(0xd))>=0x0||_0xd5ba24[_0xf391('0x5f')]()[_0xf391('0x60')](char(0xa))>=0x0||_0xd5ba24[_0xf391('0x5f')]()['indexOf'](char(0x2c))>=0x0||_0xd5ba24[_0xf391('0x5f')]()[_0xf391('0x60')](char(0x22))>=0x0);}function encapsulate(_0x425889){var _0x30af0c=char(0x22),_0x3ee8e1='\x5c'+char(0x22),_0x42172c=_0x425889['toString']()[_0xf391('0x61')](new RegExp(_0x30af0c,'g'),_0x3ee8e1);return _0x30af0c+_0x42172c+_0x30af0c;}exports['getSummary']=function(_0x9622a5,_0x574c47,_0x578b56){var _0x47d4a3,_0x3f8681;var _0x49c73b={'where':{'ProjectId':_0x9622a5[_0xf391('0x46')]['id']}};if(_0x9622a5[_0xf391('0x36')][_0xf391('0x62')]){_0x49c73b['where'][_0xf391('0x63')]=JSON[_0xf391('0x64')](_0x9622a5[_0xf391('0x36')][_0xf391('0x62')]);}return db[_0xf391('0x58')][_0xf391('0x42')](_0x49c73b)[_0xf391('0x24')](handleEntityNotFound(_0x574c47,null))[_0xf391('0x24')](function(_0x4c64b0){if(_0x4c64b0){_0x47d4a3=_0x4c64b0;return db[_0xf391('0x65')][_0xf391('0x42')]({'where':{'SessionId':{'$in':_[_0xf391('0x32')](_0x47d4a3,'id')},'ProjectId':_0x9622a5['params']['id']},'order':_0xf391('0x66')});}})[_0xf391('0x24')](handleEntityNotFound(_0x574c47,null))[_0xf391('0x24')](function(_0x48f29b){if(_0x48f29b){_0x3f8681=_0x48f29b;var _0x128644={};for(var _0x468eac=0x0,_0x36d5e0=_0x3f8681[_0xf391('0x49')];_0x468eac<_0x36d5e0;_0x468eac++){if(!_0x128644['hasOwnProperty'](_0x3f8681[_0x468eac][_0xf391('0x67')])){_0x128644[_0x3f8681[_0x468eac]['questionId']]=needsEncapsulation(_0x3f8681[_0x468eac]['question'])?encapsulate(_0x3f8681[_0x468eac][_0xf391('0x68')]):_0x3f8681[_0x468eac][_0xf391('0x68')];}}var _0x6c07e8=[],_0x483587={};for(var _0x5ba41e=0x0,_0x33c782=_0x47d4a3[_0xf391('0x49')];_0x5ba41e<_0x33c782;_0x5ba41e++){_0x483587={'ProjectId':_0x9622a5['params']['id'],'SessionId':_0x47d4a3[_0x5ba41e]['id'],'StartTime':moment(_0x47d4a3[_0x5ba41e][_0xf391('0x63')])[_0xf391('0x69')](_0xf391('0x6a'))};for(var _0x137f3e=0x0,_0x8187f3=_0x3f8681['length'];_0x137f3e<_0x8187f3;_0x137f3e++){if(_0x3f8681[_0x137f3e]['SessionId']==_0x47d4a3[_0x5ba41e]['id']&&_0x128644[_0xf391('0x38')](_0x3f8681[_0x137f3e][_0xf391('0x67')])){_0x483587[_0x128644[_0x3f8681[_0x137f3e][_0xf391('0x67')]]]=_0x3f8681[_0x137f3e][_0xf391('0x6b')];}}for(var _0x1ece99 in _0x128644){if(!_0x483587[_0xf391('0x38')](_0x128644[_0x1ece99])){_0x483587[_0x128644[_0x1ece99]]=null;}}_0x6c07e8['push'](_0x483587);}return _0x6c07e8;}})[_0xf391('0x24')](function(_0x50419c){if(!_[_0xf391('0x6c')](_0x50419c)){var _0x2e3f46=toCsv(_0x50419c);var _0x58eebc=Date[_0xf391('0x6d')]();fs[_0xf391('0x6e')](util['format'](_0xf391('0x6f'),_0x9622a5['params']['id'],_0x58eebc),_0x2e3f46);_0x574c47['setHeader'](_0xf391('0x70'),_0xf391('0x71')+util['format'](_0xf391('0x72'),_0x9622a5[_0xf391('0x46')]['id'],_0x58eebc));_0x574c47[_0xf391('0x73')](_0xf391('0x74'),'text/csv');return _0x574c47[_0xf391('0x75')](util[_0xf391('0x69')](_0xf391('0x6f'),_0x9622a5['params']['id'],_0x58eebc));}else{return _0x574c47['sendStatus'](0xcc);}})[_0xf391('0x44')](handleError(_0x574c47,null));};
\ No newline at end of file
+var _0x09ef=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','error','stack','name','JscriptyProject','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','length','find','create','body','user','Projects','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','userProfileId','getSessions','findOne','JscriptySessionReport','findAll','getAnswers','JscriptyAnswerReport','ProjectId','number','toString','indexOf','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x09ef,0x15e));var _0xf09e=function(_0x5988f6,_0x2bdb32){_0x5988f6=_0x5988f6-0x0;var _0x5c2b0a=_0x09ef[_0x5988f6];return _0x5c2b0a;};'use strict';var emlformat=require(_0xf09e('0x0'));var rimraf=require(_0xf09e('0x1'));var zipdir=require(_0xf09e('0x2'));var jsonpatch=require(_0xf09e('0x3'));var rp=require(_0xf09e('0x4'));var moment=require(_0xf09e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf09e('0x6'));var util=require('util');var path=require(_0xf09e('0x7'));var sox=require(_0xf09e('0x8'));var csv=require(_0xf09e('0x9'));var ejs=require(_0xf09e('0xa'));var fs=require('fs');var fs_extra=require(_0xf09e('0xb'));var _=require(_0xf09e('0xc'));var squel=require(_0xf09e('0xd'));var crypto=require(_0xf09e('0xe'));var jsforce=require(_0xf09e('0xf'));var deskjs=require(_0xf09e('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf09e('0x11'));var Papa=require(_0xf09e('0x12'));var Redis=require(_0xf09e('0x13'));var authService=require(_0xf09e('0x14'));var qs=require(_0xf09e('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf09e('0x16'))(_0xf09e('0x17'));var utils=require('../../config/utils');var config=require(_0xf09e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf09e('0x19'))['db'];function respondWithStatusCode(_0xcea7b1,_0x2d974f){_0x2d974f=_0x2d974f||0xcc;return function(_0x12ecc3){if(_0x12ecc3){return _0xcea7b1[_0xf09e('0x1a')](_0x2d974f);}return _0xcea7b1[_0xf09e('0x1b')](_0x2d974f)['end']();};}function respondWithResult(_0x43e7e9,_0x505b6d){_0x505b6d=_0x505b6d||0xc8;return function(_0x38f7de){if(_0x38f7de){return _0x43e7e9[_0xf09e('0x1b')](_0x505b6d)[_0xf09e('0x1c')](_0x38f7de);}};}function respondWithFilteredResult(_0x4a3c58,_0x17b604){return function(_0x3a6bd0){if(_0x3a6bd0){var _0x4f88f1=typeof _0x17b604[_0xf09e('0x1d')]===_0xf09e('0x1e')&&typeof _0x17b604[_0xf09e('0x1f')]===_0xf09e('0x1e');var _0x3abeae=_0x3a6bd0['count'];var _0x21d713=_0x4f88f1?0x0:_0x17b604[_0xf09e('0x1d')];var _0x435bb8=_0x4f88f1?_0x3a6bd0[_0xf09e('0x20')]:_0x17b604[_0xf09e('0x1d')]+_0x17b604[_0xf09e('0x1f')];var _0x105934;if(_0x435bb8>=_0x3abeae){_0x435bb8=_0x3abeae;_0x105934=0xc8;}else{_0x105934=0xce;}_0x4a3c58[_0xf09e('0x1b')](_0x105934);return _0x4a3c58[_0xf09e('0x21')](_0xf09e('0x22'),_0x21d713+'-'+_0x435bb8+'/'+_0x3abeae)[_0xf09e('0x1c')](_0x3a6bd0);}return null;};}function patchUpdates(_0x4c5a1f){return function(_0x19c044){try{jsonpatch[_0xf09e('0x23')](_0x19c044,_0x4c5a1f,!![]);}catch(_0x3a24ba){return BPromise[_0xf09e('0x24')](_0x3a24ba);}return _0x19c044['save']();};}function saveUpdates(_0x454133,_0x5e95cb){return function(_0x4533c5){if(_0x4533c5){return _0x4533c5[_0xf09e('0x25')](_0x454133)[_0xf09e('0x26')](function(_0x1dea86){return _0x1dea86;});}return null;};}function removeEntity(_0x18bd4f,_0xb9f4c3){return function(_0x5bb343){if(_0x5bb343){return _0x5bb343[_0xf09e('0x27')]()[_0xf09e('0x26')](function(){var _0x300bc5=_0x5bb343[_0xf09e('0x28')]({'plain':!![]});var _0x5d6d27='Projects';return db[_0xf09e('0x29')][_0xf09e('0x27')]({'where':{'type':_0x5d6d27,'resourceId':_0x300bc5['id']}})['then'](function(){return _0x5bb343;});})[_0xf09e('0x26')](function(){_0x18bd4f[_0xf09e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7f76b0,_0x1a698f){return function(_0xf49fc4){if(!_0xf49fc4){_0x7f76b0['sendStatus'](0x194);}return _0xf49fc4;};}function handleError(_0x125717,_0xfa0588){_0xfa0588=_0xfa0588||0x1f4;return function(_0x2fc707){logger[_0xf09e('0x2a')](_0x2fc707[_0xf09e('0x2b')]);if(_0x2fc707['name']){delete _0x2fc707[_0xf09e('0x2c')];}_0x125717[_0xf09e('0x1b')](_0xfa0588)['send'](_0x2fc707);};}exports['index']=function(_0x5efdb9,_0x3e3da0){var _0x32214c={},_0x32e492={},_0x3eeff9={'count':0x0,'rows':[]};var _0x1c787e=_['map'](db[_0xf09e('0x2d')][_0xf09e('0x2e')],function(_0x41a2a0){return{'name':_0x41a2a0[_0xf09e('0x2f')],'type':_0x41a2a0[_0xf09e('0x30')][_0xf09e('0x31')]};});_0x32e492[_0xf09e('0x32')]=_[_0xf09e('0x33')](_0x1c787e,_0xf09e('0x2c'));_0x32e492[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x5efdb9[_0xf09e('0x34')]);_0x32e492['filters']=_[_0xf09e('0x36')](_0x32e492[_0xf09e('0x32')],_0x32e492[_0xf09e('0x34')]);_0x32214c[_0xf09e('0x37')]=_[_0xf09e('0x36')](_0x32e492[_0xf09e('0x32')],qs['fields'](_0x5efdb9[_0xf09e('0x34')]['fields']));_0x32214c['attributes']=_0x32214c[_0xf09e('0x37')]['length']?_0x32214c[_0xf09e('0x37')]:_0x32e492[_0xf09e('0x32')];if(!_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x38')](_0xf09e('0x39'))){_0x32214c['limit']=qs[_0xf09e('0x1f')](_0x5efdb9['query']['limit']);_0x32214c['offset']=qs[_0xf09e('0x1d')](_0x5efdb9[_0xf09e('0x34')]['offset']);}_0x32214c[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x5efdb9[_0xf09e('0x34')]['sort']);_0x32214c['where']=qs[_0xf09e('0x3c')](_[_0xf09e('0x3d')](_0x5efdb9['query'],_0x32e492[_0xf09e('0x3c')]),_0x1c787e);if(_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x3e')]){_0x32214c[_0xf09e('0x3f')]=_[_0xf09e('0x40')](_0x32214c[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x1c787e,function(_0x5dc2f8){if(_0x5dc2f8[_0xf09e('0x30')]!==_0xf09e('0x41')){var _0x540fc9={};_0x540fc9[_0x5dc2f8[_0xf09e('0x2c')]]={'$like':'%'+_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0x540fc9;}})});}_0x32214c=_[_0xf09e('0x40')]({},_0x32214c,_0x5efdb9[_0xf09e('0x42')]);var _0x1807fa={'where':_0x32214c[_0xf09e('0x3f')]};return db['JscriptyProject'][_0xf09e('0x20')](_0x1807fa)['then'](function(_0x34cc5f){_0x3eeff9['count']=_0x34cc5f;if(_0x5efdb9[_0xf09e('0x34')][_0xf09e('0x43')]){_0x32214c[_0xf09e('0x44')]=[{'all':!![]}];}return db['JscriptyProject']['findAll'](_0x32214c);})[_0xf09e('0x26')](function(_0x3a5cf4){_0x3eeff9[_0xf09e('0x45')]=_0x3a5cf4;return _0x3eeff9;})[_0xf09e('0x26')](respondWithFilteredResult(_0x3e3da0,_0x32214c))[_0xf09e('0x46')](handleError(_0x3e3da0,null));};exports[_0xf09e('0x47')]=function(_0x369714,_0x5b5bee){var _0x454371={'raw':![],'where':{'id':_0x369714[_0xf09e('0x48')]['id']}},_0x2e3e9f={};_0x2e3e9f['model']=_[_0xf09e('0x35')](db[_0xf09e('0x2d')][_0xf09e('0x2e')]);_0x2e3e9f[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x369714[_0xf09e('0x34')]);_0x2e3e9f[_0xf09e('0x3c')]=_['intersection'](_0x2e3e9f['model'],_0x2e3e9f[_0xf09e('0x34')]);_0x454371[_0xf09e('0x37')]=_['intersection'](_0x2e3e9f['model'],qs[_0xf09e('0x49')](_0x369714['query'][_0xf09e('0x49')]));_0x454371[_0xf09e('0x37')]=_0x454371[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x454371[_0xf09e('0x37')]:_0x2e3e9f[_0xf09e('0x32')];if(_0x369714[_0xf09e('0x34')][_0xf09e('0x43')]){_0x454371[_0xf09e('0x44')]=[{'all':!![]}];}_0x454371=_[_0xf09e('0x40')]({},_0x454371,_0x369714[_0xf09e('0x42')]);return db['JscriptyProject'][_0xf09e('0x4b')](_0x454371)['then'](handleEntityNotFound(_0x5b5bee,null))[_0xf09e('0x26')](respondWithResult(_0x5b5bee,null))[_0xf09e('0x46')](handleError(_0x5b5bee,null));};exports[_0xf09e('0x4c')]=function(_0x5a27a5,_0x3150e5){return db[_0xf09e('0x2d')][_0xf09e('0x4c')](_0x5a27a5[_0xf09e('0x4d')],{})['then'](function(_0x49563e){var _0x11ae3a=_0x5a27a5['user'][_0xf09e('0x28')]({'plain':!![]});if(!_0x11ae3a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x11ae3a['role']===_0xf09e('0x4e')){var _0x5c1e65=_0x49563e['get']({'plain':!![]});var _0xf652d6=_0xf09e('0x4f');return db[_0xf09e('0x50')][_0xf09e('0x4b')]({'where':{'name':_0xf652d6,'userProfileId':_0x11ae3a['userProfileId']},'raw':!![]})[_0xf09e('0x26')](function(_0x439a79){if(_0x439a79&&_0x439a79[_0xf09e('0x51')]===0x0){return db[_0xf09e('0x29')][_0xf09e('0x4c')]({'name':_0x5c1e65[_0xf09e('0x2c')],'resourceId':_0x5c1e65['id'],'type':_0x439a79[_0xf09e('0x2c')],'sectionId':_0x439a79['id']},{})[_0xf09e('0x26')](function(){return _0x49563e;});}else{return _0x49563e;}})[_0xf09e('0x46')](function(_0x1f5551){logger[_0xf09e('0x2a')](_0xf09e('0x52'),_0x1f5551);throw _0x1f5551;});}return _0x49563e;})['then'](respondWithResult(_0x3150e5,0xc9))[_0xf09e('0x46')](handleError(_0x3150e5,null));};exports[_0xf09e('0x53')]=function(_0x319b82,_0x3214cb){var _0x4e364d={'where':{'id':_0x319b82[_0xf09e('0x48')]['id']}},_0x3b51f7={};_0x3b51f7['model']=_[_0xf09e('0x35')](db['JscriptyProject'][_0xf09e('0x2e')]);_0x4e364d['attributes']=_[_0xf09e('0x36')](_0x3b51f7[_0xf09e('0x32')],qs['fields'](_0x319b82[_0xf09e('0x34')][_0xf09e('0x49')]));_0x4e364d[_0xf09e('0x37')]=_0x4e364d[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x4e364d[_0xf09e('0x37')]:_0x3b51f7['model'];if(_0x319b82[_0xf09e('0x34')][_0xf09e('0x43')]){_0x4e364d[_0xf09e('0x44')]=[{'all':!![]}];}_0x4e364d=_[_0xf09e('0x40')]({},_0x4e364d,_0x319b82[_0xf09e('0x42')]);return db[_0xf09e('0x2d')][_0xf09e('0x4b')](_0x4e364d)['then'](handleEntityNotFound(_0x3214cb,null))[_0xf09e('0x26')](function(_0x111542){if(_0x111542){var _0x467b56=_0x111542[_0xf09e('0x28')]({'plain':!![]});_0x467b56=qs[_0xf09e('0x54')](_0x467b56,['id','createdAt',_0xf09e('0x55')]);_0x319b82['body']=_[_0xf09e('0x54')](_0x319b82[_0xf09e('0x4d')],['id',_0xf09e('0x56'),_0xf09e('0x55')]);return db[_0xf09e('0x2d')][_0xf09e('0x4c')](_[_0xf09e('0x40')](_0x467b56,_0x319b82[_0xf09e('0x4d')]),{'include':_0x319b82[_0xf09e('0x34')]['includeAll']?[{'all':!![]}]:undefined})[_0xf09e('0x26')](function(_0x351c77){var _0x15e371=_0x319b82[_0xf09e('0x4e')][_0xf09e('0x28')]({'plain':!![]});if(!_0x15e371)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15e371['role']===_0xf09e('0x4e')){var _0xef0ba6=_0x351c77['get']({'plain':!![]});var _0x28e51b='Projects';return db[_0xf09e('0x50')][_0xf09e('0x4b')]({'where':{'name':_0x28e51b,'userProfileId':_0x15e371[_0xf09e('0x57')]},'raw':!![]})[_0xf09e('0x26')](function(_0xc0b477){if(_0xc0b477&&_0xc0b477[_0xf09e('0x51')]===0x0){return db[_0xf09e('0x29')][_0xf09e('0x4c')]({'name':_0xef0ba6[_0xf09e('0x2c')],'resourceId':_0xef0ba6['id'],'type':_0xc0b477[_0xf09e('0x2c')],'sectionId':_0xc0b477['id']},{})['then'](function(){return _0x351c77;});}else{return _0x351c77;}})['catch'](function(_0x329540){logger[_0xf09e('0x2a')](_0xf09e('0x52'),_0x329540);throw _0x329540;});}return _0x351c77;});}})['then'](respondWithResult(_0x3214cb,0xc9))[_0xf09e('0x46')](handleError(_0x3214cb,null));};exports[_0xf09e('0x25')]=function(_0x10f4b2,_0x4775d1){if(_0x10f4b2['body']['id']){delete _0x10f4b2[_0xf09e('0x4d')]['id'];}return db[_0xf09e('0x2d')][_0xf09e('0x4b')]({'where':{'id':_0x10f4b2['params']['id']}})[_0xf09e('0x26')](handleEntityNotFound(_0x4775d1,null))[_0xf09e('0x26')](saveUpdates(_0x10f4b2[_0xf09e('0x4d')],null))[_0xf09e('0x26')](respondWithResult(_0x4775d1,null))['catch'](handleError(_0x4775d1,null));};exports['destroy']=function(_0x2545e2,_0x33ee1b){return db[_0xf09e('0x2d')][_0xf09e('0x4b')]({'where':{'id':_0x2545e2[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x33ee1b,null))[_0xf09e('0x26')](removeEntity(_0x33ee1b,null))[_0xf09e('0x46')](handleError(_0x33ee1b,null));};exports[_0xf09e('0x58')]=function(_0x8a9d36,_0x4e1b9a,_0x561081){var _0x2a1def={'raw':!![],'where':{}};var _0x2a7017={};var _0x3d9d9d={'count':0x0,'rows':[]};return db[_0xf09e('0x2d')][_0xf09e('0x59')]({'where':{'id':_0x8a9d36[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x4e1b9a,null))[_0xf09e('0x26')](function(_0x892b28){if(_0x892b28){_0x2a7017['model']=_[_0xf09e('0x35')](db[_0xf09e('0x5a')][_0xf09e('0x2e')]);_0x2a7017[_0xf09e('0x34')]=_['keys'](_0x8a9d36['query']);_0x2a7017[_0xf09e('0x3c')]=_[_0xf09e('0x36')](_0x2a7017['model'],_0x2a7017['query']);_0x2a1def['attributes']=_[_0xf09e('0x36')](_0x2a7017[_0xf09e('0x32')],qs[_0xf09e('0x49')](_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x49')]));_0x2a1def['attributes']=_0x2a1def[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x2a1def[_0xf09e('0x37')]:_0x2a7017[_0xf09e('0x32')];if(!_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x38')]('nolimit')){_0x2a1def['limit']=qs[_0xf09e('0x1f')](_0x8a9d36[_0xf09e('0x34')]['limit']);_0x2a1def[_0xf09e('0x1d')]=qs[_0xf09e('0x1d')](_0x8a9d36['query'][_0xf09e('0x1d')]);}_0x2a1def[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3b')]);_0x2a1def[_0xf09e('0x3f')]=qs[_0xf09e('0x3c')](_['pick'](_0x8a9d36[_0xf09e('0x34')],_0x2a7017['filters']));_0x2a1def['where']['ProjectId']=_0x892b28['id'];if(_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3e')]){_0x2a1def[_0xf09e('0x3f')]=_[_0xf09e('0x40')](_0x2a1def[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x2a1def[_0xf09e('0x37')],function(_0x16e6f0){var _0x293fa3={};_0x293fa3[_0x16e6f0]={'$like':'%'+_0x8a9d36[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0x293fa3;})});}_0x2a1def=_[_0xf09e('0x40')]({},_0x2a1def,_0x8a9d36[_0xf09e('0x42')]);return db[_0xf09e('0x5a')][_0xf09e('0x20')]({'where':_0x2a1def[_0xf09e('0x3f')]})[_0xf09e('0x26')](function(_0x3a4b07){_0x3d9d9d[_0xf09e('0x20')]=_0x3a4b07;if(_0x8a9d36['query'][_0xf09e('0x43')]){_0x2a1def[_0xf09e('0x44')]=[{'all':!![]}];}return db[_0xf09e('0x5a')][_0xf09e('0x5b')](_0x2a1def);})[_0xf09e('0x26')](function(_0x15d178){_0x3d9d9d[_0xf09e('0x45')]=_0x15d178;return _0x3d9d9d;});}})[_0xf09e('0x26')](respondWithFilteredResult(_0x4e1b9a,_0x2a1def))['catch'](handleError(_0x4e1b9a,null));};exports[_0xf09e('0x5c')]=function(_0x3ee14a,_0x1b83a3,_0x34caeb){var _0x3c8c6d={'raw':!![],'where':{}};var _0x513143={};var _0x3a068f={'count':0x0,'rows':[]};return db[_0xf09e('0x2d')][_0xf09e('0x59')]({'where':{'id':_0x3ee14a[_0xf09e('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b83a3,null))[_0xf09e('0x26')](function(_0x4ca72d){if(_0x4ca72d){_0x513143[_0xf09e('0x32')]=_[_0xf09e('0x35')](db[_0xf09e('0x5d')][_0xf09e('0x2e')]);_0x513143[_0xf09e('0x34')]=_[_0xf09e('0x35')](_0x3ee14a[_0xf09e('0x34')]);_0x513143['filters']=_[_0xf09e('0x36')](_0x513143[_0xf09e('0x32')],_0x513143['query']);_0x3c8c6d[_0xf09e('0x37')]=_[_0xf09e('0x36')](_0x513143['model'],qs[_0xf09e('0x49')](_0x3ee14a[_0xf09e('0x34')]['fields']));_0x3c8c6d[_0xf09e('0x37')]=_0x3c8c6d[_0xf09e('0x37')][_0xf09e('0x4a')]?_0x3c8c6d['attributes']:_0x513143[_0xf09e('0x32')];if(!_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x38')](_0xf09e('0x39'))){_0x3c8c6d['limit']=qs[_0xf09e('0x1f')](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x1f')]);_0x3c8c6d['offset']=qs['offset'](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x1d')]);}_0x3c8c6d[_0xf09e('0x3a')]=qs[_0xf09e('0x3b')](_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x3b')]);_0x3c8c6d[_0xf09e('0x3f')]=qs[_0xf09e('0x3c')](_[_0xf09e('0x3d')](_0x3ee14a[_0xf09e('0x34')],_0x513143[_0xf09e('0x3c')]));_0x3c8c6d[_0xf09e('0x3f')][_0xf09e('0x5e')]=_0x4ca72d['id'];if(_0x3ee14a[_0xf09e('0x34')]['filter']){_0x3c8c6d['where']=_[_0xf09e('0x40')](_0x3c8c6d[_0xf09e('0x3f')],{'$or':_[_0xf09e('0x33')](_0x3c8c6d[_0xf09e('0x37')],function(_0x21fe79){var _0xe76c68={};_0xe76c68[_0x21fe79]={'$like':'%'+_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x3e')]+'%'};return _0xe76c68;})});}_0x3c8c6d=_[_0xf09e('0x40')]({},_0x3c8c6d,_0x3ee14a[_0xf09e('0x42')]);return db[_0xf09e('0x5d')][_0xf09e('0x20')]({'where':_0x3c8c6d[_0xf09e('0x3f')]})['then'](function(_0x8930b9){_0x3a068f['count']=_0x8930b9;if(_0x3ee14a[_0xf09e('0x34')][_0xf09e('0x43')]){_0x3c8c6d[_0xf09e('0x44')]=[{'all':!![]}];}return db[_0xf09e('0x5d')][_0xf09e('0x5b')](_0x3c8c6d);})[_0xf09e('0x26')](function(_0x2bf284){_0x3a068f[_0xf09e('0x45')]=_0x2bf284;return _0x3a068f;});}})[_0xf09e('0x26')](respondWithFilteredResult(_0x1b83a3,_0x3c8c6d))[_0xf09e('0x46')](handleError(_0x1b83a3,null));};function char(_0x303d5a){return _0xf09e('0x5f')===typeof _0x303d5a?String['fromCharCode']['apply'](null,arguments):_0x303d5a;}function needsEncapsulation(_0x2e376c){return!!_0x2e376c&&(_0x2e376c[_0xf09e('0x60')]()['indexOf'](char(0xd))>=0x0||_0x2e376c[_0xf09e('0x60')]()[_0xf09e('0x61')](char(0xa))>=0x0||_0x2e376c[_0xf09e('0x60')]()[_0xf09e('0x61')](char(0x2c))>=0x0||_0x2e376c[_0xf09e('0x60')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x4baefe){var _0x217d47=char(0x22),_0x38aebd='\x5c'+char(0x22),_0x3142a1=_0x4baefe[_0xf09e('0x60')]()['replace'](new RegExp(_0x217d47,'g'),_0x38aebd);return _0x217d47+_0x3142a1+_0x217d47;}exports[_0xf09e('0x62')]=function(_0x3b567b,_0x5bc686,_0x59bdf0){var _0x30d82a,_0x24dc1d;var _0x18666d={'where':{'ProjectId':_0x3b567b[_0xf09e('0x48')]['id']}};if(_0x3b567b['query'][_0xf09e('0x63')]){_0x18666d[_0xf09e('0x3f')][_0xf09e('0x64')]=JSON[_0xf09e('0x65')](_0x3b567b[_0xf09e('0x34')][_0xf09e('0x63')]);}return db['JscriptySessionReport'][_0xf09e('0x5b')](_0x18666d)[_0xf09e('0x26')](handleEntityNotFound(_0x5bc686,null))[_0xf09e('0x26')](function(_0x433205){if(_0x433205){_0x30d82a=_0x433205;return db[_0xf09e('0x66')]['findAll']({'where':{'SessionId':{'$in':_[_0xf09e('0x33')](_0x30d82a,'id')},'ProjectId':_0x3b567b[_0xf09e('0x48')]['id']},'order':_0xf09e('0x67')});}})[_0xf09e('0x26')](handleEntityNotFound(_0x5bc686,null))[_0xf09e('0x26')](function(_0x167355){if(_0x167355){_0x24dc1d=_0x167355;var _0x1a69b8={};for(var _0x57c53c=0x0,_0x161c85=_0x24dc1d['length'];_0x57c53c<_0x161c85;_0x57c53c++){if(!_0x1a69b8[_0xf09e('0x38')](_0x24dc1d[_0x57c53c][_0xf09e('0x68')])){_0x1a69b8[_0x24dc1d[_0x57c53c][_0xf09e('0x68')]]=needsEncapsulation(_0x24dc1d[_0x57c53c][_0xf09e('0x69')])?encapsulate(_0x24dc1d[_0x57c53c]['question']):_0x24dc1d[_0x57c53c][_0xf09e('0x69')];}}var _0x1cc119=[],_0x208dba={};for(var _0x30ce21=0x0,_0xede0f3=_0x30d82a[_0xf09e('0x4a')];_0x30ce21<_0xede0f3;_0x30ce21++){_0x208dba={'ProjectId':_0x3b567b['params']['id'],'SessionId':_0x30d82a[_0x30ce21]['id'],'StartTime':moment(_0x30d82a[_0x30ce21][_0xf09e('0x64')])[_0xf09e('0x6a')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x452e4d=0x0,_0x5552d5=_0x24dc1d['length'];_0x452e4d<_0x5552d5;_0x452e4d++){if(_0x24dc1d[_0x452e4d]['SessionId']==_0x30d82a[_0x30ce21]['id']&&_0x1a69b8['hasOwnProperty'](_0x24dc1d[_0x452e4d]['questionId'])){_0x208dba[_0x1a69b8[_0x24dc1d[_0x452e4d][_0xf09e('0x68')]]]=_0x24dc1d[_0x452e4d][_0xf09e('0x6b')];}}for(var _0x485da5 in _0x1a69b8){if(!_0x208dba[_0xf09e('0x38')](_0x1a69b8[_0x485da5])){_0x208dba[_0x1a69b8[_0x485da5]]=null;}}_0x1cc119[_0xf09e('0x6c')](_0x208dba);}return _0x1cc119;}})[_0xf09e('0x26')](function(_0x4d4503){if(!_[_0xf09e('0x6d')](_0x4d4503)){var _0x189084=toCsv(_0x4d4503);var _0x340cc6=Date[_0xf09e('0x6e')]();fs[_0xf09e('0x6f')](util['format'](_0xf09e('0x70'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6),_0x189084);_0x5bc686[_0xf09e('0x71')](_0xf09e('0x72'),_0xf09e('0x73')+util[_0xf09e('0x6a')](_0xf09e('0x74'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6));_0x5bc686[_0xf09e('0x71')](_0xf09e('0x75'),'text/csv');return _0x5bc686[_0xf09e('0x76')](util[_0xf09e('0x6a')](_0xf09e('0x70'),_0x3b567b[_0xf09e('0x48')]['id'],_0x340cc6));}else{return _0x5bc686[_0xf09e('0x1a')](0xcc);}})[_0xf09e('0x46')](handleError(_0x5bc686,null));};
\ No newline at end of file
index 18e31fe..818dca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c5=['define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0xe3c5,0x17d));var _0x5e3c=function(_0x9cbfe0,_0x56aada){_0x9cbfe0=_0x9cbfe0-0x0;var _0x1f1534=_0xe3c5[_0x9cbfe0];return _0x1f1534;};'use strict';var _=require(_0x5e3c('0x0'));var util=require(_0x5e3c('0x1'));var logger=require(_0x5e3c('0x2'))(_0x5e3c('0x3'));var moment=require(_0x5e3c('0x4'));var BPromise=require(_0x5e3c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e3c('0x6'));var rimraf=require(_0x5e3c('0x7'));var config=require(_0x5e3c('0x8'));var attributes=require(_0x5e3c('0x9'));module[_0x5e3c('0xa')]=function(_0x31a878,_0x1e631d){return _0x31a878[_0x5e3c('0xb')](_0x5e3c('0xc'),attributes,{'tableName':_0x5e3c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9973=['define','JscriptyProject','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x9973,0x157));var _0x3997=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9973[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x3997('0x0'));var logger=require(_0x3997('0x1'))('api');var moment=require(_0x3997('0x2'));var BPromise=require(_0x3997('0x3'));var rp=require(_0x3997('0x4'));var fs=require('fs');var path=require(_0x3997('0x5'));var rimraf=require(_0x3997('0x6'));var config=require(_0x3997('0x7'));var attributes=require(_0x3997('0x8'));module['exports']=function(_0x48c26c,_0x320340){return _0x48c26c[_0x3997('0x9')](_0x3997('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c27e85..83ba6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['rpc','jayson/promise','client','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x43c8b8,_0x5e8934){var _0x413be3=function(_0x23969c){while(--_0x23969c){_0x43c8b8['push'](_0x43c8b8['shift']());}};_0x413be3(++_0x5e8934);}(_0xda3f,0xec));var _0xfda3=function(_0x33d8f1,_0xb7289f){_0x33d8f1=_0x33d8f1-0x0;var _0x41c385=_0xda3f[_0x33d8f1];return _0x41c385;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
+var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x59ac74,_0x15382d){var _0x1b391f=function(_0x295ed5){while(--_0x295ed5){_0x59ac74['push'](_0x59ac74['shift']());}};_0x1b391f(++_0x15382d);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 4af2cb5..5b31ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9809=['isAuthenticated','index','get','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller'];(function(_0x365191,_0x3c1b0b){var _0xf2d31a=function(_0x4be46f){while(--_0x4be46f){_0x365191['push'](_0x365191['shift']());}};_0xf2d31a(++_0x3c1b0b);}(_0x9809,0x115));var _0x9980=function(_0x115303,_0x3ea339){_0x115303=_0x115303-0x0;var _0x4c219e=_0x9809[_0x115303];return _0x4c219e;};'use strict';var multer=require('multer');var util=require(_0x9980('0x0'));var path=require(_0x9980('0x1'));var timeout=require(_0x9980('0x2'));var express=require('express');var router=express[_0x9980('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9980('0x4'));var interaction=require(_0x9980('0x5'));var config=require(_0x9980('0x6'));var controller=require(_0x9980('0x7'));router['get']('/',auth[_0x9980('0x8')](),controller[_0x9980('0x9')]);router[_0x9980('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x9980('0xb'),auth[_0x9980('0x8')](),controller[_0x9980('0xc')]);router[_0x9980('0xd')]('/',auth[_0x9980('0x8')](),controller['create']);router[_0x9980('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x9980('0xf')]);router[_0x9980('0x10')](_0x9980('0xb'),auth['isAuthenticated'](),controller[_0x9980('0x11')]);module[_0x9980('0x12')]=router;
\ No newline at end of file
+var _0x8ecb=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','/describe','get','/:id','put','delete','exports','multer','util'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x8ecb,0x11f));var _0xb8ec=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x8ecb[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0xb8ec('0x0'));var util=require(_0xb8ec('0x1'));var path=require(_0xb8ec('0x2'));var timeout=require('connect-timeout');var express=require(_0xb8ec('0x3'));var router=express[_0xb8ec('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb8ec('0x5'));var interaction=require(_0xb8ec('0x6'));var config=require(_0xb8ec('0x7'));var controller=require(_0xb8ec('0x8'));router['get']('/',auth[_0xb8ec('0x9')](),controller[_0xb8ec('0xa')]);router['get'](_0xb8ec('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xb8ec('0xc')](_0xb8ec('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xb8ec('0x9')](),controller['create']);router[_0xb8ec('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xb8ec('0xf')](_0xb8ec('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xb8ec('0x10')]=router;
\ No newline at end of file
index 52fc70a..ff36a78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x7a54,0x106));var _0x47a5=function(_0x4ceb1e,_0x2c23cb){_0x4ceb1e=_0x4ceb1e-0x0;var _0x57220d=_0x7a54[_0x4ceb1e];return _0x57220d;};'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(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x7a54,0x106));var _0x47a5=function(_0x1672fb,_0x3dc206){_0x1672fb=_0x1672fb-0x0;var _0x5d7f8f=_0x7a54[_0x1672fb];return _0x5d7f8f;};'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 b4fd7ff..bf6672a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f74=['find','destroy','describe','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','end','error','name','send','index','map','JscriptyQuestionReport','rawAttributes','key','query','keys','intersection','fields','length','attributes','model','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','include','create','body'];(function(_0x42f692,_0x36eb62){var _0x1a8ed3=function(_0x2b4221){while(--_0x2b4221){_0x42f692['push'](_0x42f692['shift']());}};_0x1a8ed3(++_0x36eb62);}(_0x2f74,0x1bf));var _0x42f7=function(_0x500a1f,_0x14745f){_0x500a1f=_0x500a1f-0x0;var _0x2f5bd7=_0x2f74[_0x500a1f];return _0x2f5bd7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x42f7('0x0'));var jsonpatch=require(_0x42f7('0x1'));var rp=require(_0x42f7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x42f7('0x3'));var util=require(_0x42f7('0x4'));var path=require(_0x42f7('0x5'));var sox=require(_0x42f7('0x6'));var csv=require(_0x42f7('0x7'));var ejs=require(_0x42f7('0x8'));var fs=require('fs');var fs_extra=require(_0x42f7('0x9'));var _=require(_0x42f7('0xa'));var squel=require('squel');var crypto=require(_0x42f7('0xb'));var jsforce=require(_0x42f7('0xc'));var deskjs=require(_0x42f7('0xd'));var toCsv=require(_0x42f7('0x7'));var querystring=require(_0x42f7('0xe'));var Papa=require(_0x42f7('0xf'));var Redis=require(_0x42f7('0x10'));var authService=require(_0x42f7('0x11'));var qs=require(_0x42f7('0x12'));var as=require(_0x42f7('0x13'));var hardwareService=require(_0x42f7('0x14'));var logger=require(_0x42f7('0x15'))(_0x42f7('0x16'));var utils=require(_0x42f7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x42f7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe933e3,_0x168df1){_0x168df1=_0x168df1||0xcc;return function(_0x21e2fc){if(_0x21e2fc){return _0xe933e3[_0x42f7('0x19')](_0x168df1);}return _0xe933e3[_0x42f7('0x1a')](_0x168df1)['end']();};}function respondWithResult(_0x18f962,_0x51079a){_0x51079a=_0x51079a||0xc8;return function(_0x2428f3){if(_0x2428f3){return _0x18f962[_0x42f7('0x1a')](_0x51079a)[_0x42f7('0x1b')](_0x2428f3);}};}function respondWithFilteredResult(_0x1c4b3b,_0x14a572){return function(_0x2a27bf){if(_0x2a27bf){var _0x52f32d=typeof _0x14a572[_0x42f7('0x1c')]===_0x42f7('0x1d')&&typeof _0x14a572[_0x42f7('0x1e')]==='undefined';var _0x283b3f=_0x2a27bf[_0x42f7('0x1f')];var _0x2ca2b7=_0x52f32d?0x0:_0x14a572['offset'];var _0x4ddbc1=_0x52f32d?_0x2a27bf[_0x42f7('0x1f')]:_0x14a572[_0x42f7('0x1c')]+_0x14a572['limit'];var _0x3c897a;if(_0x4ddbc1>=_0x283b3f){_0x4ddbc1=_0x283b3f;_0x3c897a=0xc8;}else{_0x3c897a=0xce;}_0x1c4b3b['status'](_0x3c897a);return _0x1c4b3b[_0x42f7('0x20')](_0x42f7('0x21'),_0x2ca2b7+'-'+_0x4ddbc1+'/'+_0x283b3f)['json'](_0x2a27bf);}return null;};}function patchUpdates(_0x39c8fb){return function(_0x21d9fb){try{jsonpatch['apply'](_0x21d9fb,_0x39c8fb,!![]);}catch(_0x401684){return BPromise['reject'](_0x401684);}return _0x21d9fb[_0x42f7('0x22')]();};}function saveUpdates(_0x1f13ec,_0x4a57eb){return function(_0x14d289){if(_0x14d289){return _0x14d289[_0x42f7('0x23')](_0x1f13ec)['then'](function(_0x3c2858){return _0x3c2858;});}return null;};}function removeEntity(_0x2d0845,_0x4397a3){return function(_0x493a2f){if(_0x493a2f){return _0x493a2f['destroy']()[_0x42f7('0x24')](function(){_0x2d0845[_0x42f7('0x1a')](0xcc)[_0x42f7('0x25')]();});}};}function handleEntityNotFound(_0x2fa3e0,_0x3af6d8){return function(_0x5a0810){if(!_0x5a0810){_0x2fa3e0[_0x42f7('0x19')](0x194);}return _0x5a0810;};}function handleError(_0x1ec0ba,_0x3faab2){_0x3faab2=_0x3faab2||0x1f4;return function(_0x1e9b77){logger[_0x42f7('0x26')](_0x1e9b77['stack']);if(_0x1e9b77[_0x42f7('0x27')]){delete _0x1e9b77[_0x42f7('0x27')];}_0x1ec0ba['status'](_0x3faab2)[_0x42f7('0x28')](_0x1e9b77);};}exports[_0x42f7('0x29')]=function(_0x360bb3,_0x46cc0d){var _0x21f154={},_0x30a5df={},_0xe99a74={'count':0x0,'rows':[]};var _0x21f1ec=_[_0x42f7('0x2a')](db[_0x42f7('0x2b')][_0x42f7('0x2c')],function(_0x3f85ba){return{'name':_0x3f85ba['fieldName'],'type':_0x3f85ba['type'][_0x42f7('0x2d')]};});_0x30a5df['model']=_['map'](_0x21f1ec,_0x42f7('0x27'));_0x30a5df[_0x42f7('0x2e')]=_[_0x42f7('0x2f')](_0x360bb3[_0x42f7('0x2e')]);_0x30a5df['filters']=_[_0x42f7('0x30')](_0x30a5df['model'],_0x30a5df[_0x42f7('0x2e')]);_0x21f154['attributes']=_[_0x42f7('0x30')](_0x30a5df['model'],qs[_0x42f7('0x31')](_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x31')]));_0x21f154['attributes']=_0x21f154['attributes'][_0x42f7('0x32')]?_0x21f154[_0x42f7('0x33')]:_0x30a5df[_0x42f7('0x34')];if(!_0x360bb3[_0x42f7('0x2e')]['hasOwnProperty']('nolimit')){_0x21f154['limit']=qs[_0x42f7('0x1e')](_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x1e')]);_0x21f154[_0x42f7('0x1c')]=qs['offset'](_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x1c')]);}_0x21f154[_0x42f7('0x35')]=qs['sort'](_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x36')]);_0x21f154[_0x42f7('0x37')]=qs[_0x42f7('0x38')](_[_0x42f7('0x39')](_0x360bb3[_0x42f7('0x2e')],_0x30a5df['filters']),_0x21f1ec);if(_0x360bb3['query'][_0x42f7('0x3a')]){_0x21f154['where']=_[_0x42f7('0x3b')](_0x21f154['where'],{'$or':_[_0x42f7('0x2a')](_0x21f1ec,function(_0xd81ede){if(_0xd81ede[_0x42f7('0x3c')]!==_0x42f7('0x3d')){var _0x35efa1={};_0x35efa1[_0xd81ede[_0x42f7('0x27')]]={'$like':'%'+_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x3a')]+'%'};return _0x35efa1;}})});}_0x21f154=_[_0x42f7('0x3b')]({},_0x21f154,_0x360bb3[_0x42f7('0x3e')]);var _0x347e14={'where':_0x21f154['where']};return db[_0x42f7('0x2b')][_0x42f7('0x1f')](_0x347e14)[_0x42f7('0x24')](function(_0x1c9a2c){_0xe99a74[_0x42f7('0x1f')]=_0x1c9a2c;if(_0x360bb3[_0x42f7('0x2e')][_0x42f7('0x3f')]){_0x21f154['include']=[{'all':!![]}];}return db[_0x42f7('0x2b')]['findAll'](_0x21f154);})[_0x42f7('0x24')](function(_0x11aee2){_0xe99a74[_0x42f7('0x40')]=_0x11aee2;return _0xe99a74;})['then'](respondWithFilteredResult(_0x46cc0d,_0x21f154))[_0x42f7('0x41')](handleError(_0x46cc0d,null));};exports[_0x42f7('0x42')]=function(_0xa180b4,_0x54bd5c){var _0x1735b4={'raw':!![],'where':{'id':_0xa180b4[_0x42f7('0x43')]['id']}},_0x3f8f47={};_0x3f8f47[_0x42f7('0x34')]=_[_0x42f7('0x2f')](db[_0x42f7('0x2b')][_0x42f7('0x2c')]);_0x3f8f47[_0x42f7('0x2e')]=_['keys'](_0xa180b4[_0x42f7('0x2e')]);_0x3f8f47[_0x42f7('0x38')]=_[_0x42f7('0x30')](_0x3f8f47[_0x42f7('0x34')],_0x3f8f47[_0x42f7('0x2e')]);_0x1735b4[_0x42f7('0x33')]=_['intersection'](_0x3f8f47[_0x42f7('0x34')],qs[_0x42f7('0x31')](_0xa180b4[_0x42f7('0x2e')][_0x42f7('0x31')]));_0x1735b4[_0x42f7('0x33')]=_0x1735b4['attributes']['length']?_0x1735b4[_0x42f7('0x33')]:_0x3f8f47[_0x42f7('0x34')];if(_0xa180b4['query'][_0x42f7('0x3f')]){_0x1735b4[_0x42f7('0x44')]=[{'all':!![]}];}_0x1735b4=_[_0x42f7('0x3b')]({},_0x1735b4,_0xa180b4[_0x42f7('0x3e')]);return db[_0x42f7('0x2b')]['find'](_0x1735b4)[_0x42f7('0x24')](handleEntityNotFound(_0x54bd5c,null))['then'](respondWithResult(_0x54bd5c,null))[_0x42f7('0x41')](handleError(_0x54bd5c,null));};exports[_0x42f7('0x45')]=function(_0x4e55b0,_0x22aade){return db[_0x42f7('0x2b')][_0x42f7('0x45')](_0x4e55b0[_0x42f7('0x46')],{})[_0x42f7('0x24')](respondWithResult(_0x22aade,0xc9))[_0x42f7('0x41')](handleError(_0x22aade,null));};exports[_0x42f7('0x23')]=function(_0x43192a,_0x2d3cb7){if(_0x43192a[_0x42f7('0x46')]['id']){delete _0x43192a[_0x42f7('0x46')]['id'];}return db[_0x42f7('0x2b')][_0x42f7('0x47')]({'where':{'id':_0x43192a['params']['id']}})[_0x42f7('0x24')](handleEntityNotFound(_0x2d3cb7,null))[_0x42f7('0x24')](saveUpdates(_0x43192a[_0x42f7('0x46')],null))[_0x42f7('0x24')](respondWithResult(_0x2d3cb7,null))['catch'](handleError(_0x2d3cb7,null));};exports[_0x42f7('0x48')]=function(_0x12f202,_0x28197c){return db[_0x42f7('0x2b')][_0x42f7('0x47')]({'where':{'id':_0x12f202[_0x42f7('0x43')]['id']}})[_0x42f7('0x24')](handleEntityNotFound(_0x28197c,null))[_0x42f7('0x24')](removeEntity(_0x28197c,null))[_0x42f7('0x41')](handleError(_0x28197c,null));};exports[_0x42f7('0x49')]=function(_0x46325a,_0x58c99a){return db[_0x42f7('0x2b')][_0x42f7('0x49')]()[_0x42f7('0x24')](respondWithResult(_0x58c99a,null))[_0x42f7('0x41')](handleError(_0x58c99a,null));};
\ No newline at end of file
+var _0xc0f9=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','update','then','error','stack','name','index','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','order','sort','pick','filter','merge','VIRTUAL','options','JscriptyQuestionReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x3fc1ea,_0x2fa686){var _0x2a972d=function(_0x23690c){while(--_0x23690c){_0x3fc1ea['push'](_0x3fc1ea['shift']());}};_0x2a972d(++_0x2fa686);}(_0xc0f9,0xc5));var _0x9c0f=function(_0x4f53a6,_0x582ff5){_0x4f53a6=_0x4f53a6-0x0;var _0x30e4b7=_0xc0f9[_0x4f53a6];return _0x30e4b7;};'use strict';var emlformat=require(_0x9c0f('0x0'));var rimraf=require(_0x9c0f('0x1'));var zipdir=require(_0x9c0f('0x2'));var jsonpatch=require(_0x9c0f('0x3'));var rp=require(_0x9c0f('0x4'));var moment=require(_0x9c0f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9c0f('0x6'));var util=require(_0x9c0f('0x7'));var path=require(_0x9c0f('0x8'));var sox=require('sox');var csv=require(_0x9c0f('0x9'));var ejs=require(_0x9c0f('0xa'));var fs=require('fs');var fs_extra=require(_0x9c0f('0xb'));var _=require(_0x9c0f('0xc'));var squel=require('squel');var crypto=require(_0x9c0f('0xd'));var jsforce=require(_0x9c0f('0xe'));var deskjs=require(_0x9c0f('0xf'));var toCsv=require(_0x9c0f('0x9'));var querystring=require('querystring');var Papa=require(_0x9c0f('0x10'));var Redis=require(_0x9c0f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9c0f('0x12'));var as=require(_0x9c0f('0x13'));var hardwareService=require(_0x9c0f('0x14'));var logger=require(_0x9c0f('0x15'))(_0x9c0f('0x16'));var utils=require(_0x9c0f('0x17'));var config=require(_0x9c0f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c0f('0x19'))['db'];function respondWithStatusCode(_0x31b2b6,_0x2c269c){_0x2c269c=_0x2c269c||0xcc;return function(_0x150d35){if(_0x150d35){return _0x31b2b6[_0x9c0f('0x1a')](_0x2c269c);}return _0x31b2b6[_0x9c0f('0x1b')](_0x2c269c)[_0x9c0f('0x1c')]();};}function respondWithResult(_0x2daf5c,_0x14a724){_0x14a724=_0x14a724||0xc8;return function(_0x1201db){if(_0x1201db){return _0x2daf5c[_0x9c0f('0x1b')](_0x14a724)['json'](_0x1201db);}};}function respondWithFilteredResult(_0xa3d1a9,_0x484f8f){return function(_0x392de2){if(_0x392de2){var _0x4d2611=typeof _0x484f8f[_0x9c0f('0x1d')]===_0x9c0f('0x1e')&&typeof _0x484f8f[_0x9c0f('0x1f')]==='undefined';var _0x58a631=_0x392de2[_0x9c0f('0x20')];var _0x339c47=_0x4d2611?0x0:_0x484f8f[_0x9c0f('0x1d')];var _0x40ac5c=_0x4d2611?_0x392de2[_0x9c0f('0x20')]:_0x484f8f['offset']+_0x484f8f[_0x9c0f('0x1f')];var _0x2aa887;if(_0x40ac5c>=_0x58a631){_0x40ac5c=_0x58a631;_0x2aa887=0xc8;}else{_0x2aa887=0xce;}_0xa3d1a9[_0x9c0f('0x1b')](_0x2aa887);return _0xa3d1a9[_0x9c0f('0x21')]('Content-Range',_0x339c47+'-'+_0x40ac5c+'/'+_0x58a631)[_0x9c0f('0x22')](_0x392de2);}return null;};}function patchUpdates(_0x24a892){return function(_0x27fbed){try{jsonpatch[_0x9c0f('0x23')](_0x27fbed,_0x24a892,!![]);}catch(_0x2485dc){return BPromise['reject'](_0x2485dc);}return _0x27fbed['save']();};}function saveUpdates(_0xd84d31,_0x1b4dc8){return function(_0x3b16dc){if(_0x3b16dc){return _0x3b16dc[_0x9c0f('0x24')](_0xd84d31)[_0x9c0f('0x25')](function(_0x4f5f61){return _0x4f5f61;});}return null;};}function removeEntity(_0x5a2277,_0x43856e){return function(_0x463ea6){if(_0x463ea6){return _0x463ea6['destroy']()[_0x9c0f('0x25')](function(){_0x5a2277[_0x9c0f('0x1b')](0xcc)[_0x9c0f('0x1c')]();});}};}function handleEntityNotFound(_0x1af538,_0x56e12e){return function(_0x540842){if(!_0x540842){_0x1af538[_0x9c0f('0x1a')](0x194);}return _0x540842;};}function handleError(_0x3d1dc7,_0xe2f0f5){_0xe2f0f5=_0xe2f0f5||0x1f4;return function(_0x46fef1){logger[_0x9c0f('0x26')](_0x46fef1[_0x9c0f('0x27')]);if(_0x46fef1[_0x9c0f('0x28')]){delete _0x46fef1[_0x9c0f('0x28')];}_0x3d1dc7[_0x9c0f('0x1b')](_0xe2f0f5)['send'](_0x46fef1);};}exports[_0x9c0f('0x29')]=function(_0x497f24,_0xe724b){var _0x22a88d={},_0x1622ba={},_0x3bbc35={'count':0x0,'rows':[]};var _0x4fdd61=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x222d97){return{'name':_0x222d97[_0x9c0f('0x2a')],'type':_0x222d97[_0x9c0f('0x2b')][_0x9c0f('0x2c')]};});_0x1622ba['model']=_[_0x9c0f('0x2d')](_0x4fdd61,'name');_0x1622ba[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x497f24['query']);_0x1622ba[_0x9c0f('0x30')]=_[_0x9c0f('0x31')](_0x1622ba['model'],_0x1622ba[_0x9c0f('0x2e')]);_0x22a88d[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x1622ba[_0x9c0f('0x33')],qs[_0x9c0f('0x34')](_0x497f24[_0x9c0f('0x2e')]['fields']));_0x22a88d[_0x9c0f('0x32')]=_0x22a88d['attributes'][_0x9c0f('0x35')]?_0x22a88d[_0x9c0f('0x32')]:_0x1622ba[_0x9c0f('0x33')];if(!_0x497f24[_0x9c0f('0x2e')]['hasOwnProperty']('nolimit')){_0x22a88d['limit']=qs['limit'](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1f')]);_0x22a88d['offset']=qs[_0x9c0f('0x1d')](_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x1d')]);}_0x22a88d[_0x9c0f('0x36')]=qs[_0x9c0f('0x37')](_0x497f24['query'][_0x9c0f('0x37')]);_0x22a88d['where']=qs[_0x9c0f('0x30')](_[_0x9c0f('0x38')](_0x497f24[_0x9c0f('0x2e')],_0x1622ba[_0x9c0f('0x30')]),_0x4fdd61);if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x39')]){_0x22a88d['where']=_[_0x9c0f('0x3a')](_0x22a88d['where'],{'$or':_[_0x9c0f('0x2d')](_0x4fdd61,function(_0x4e36be){if(_0x4e36be[_0x9c0f('0x2b')]!==_0x9c0f('0x3b')){var _0x145790={};_0x145790[_0x4e36be[_0x9c0f('0x28')]]={'$like':'%'+_0x497f24['query'][_0x9c0f('0x39')]+'%'};return _0x145790;}})});}_0x22a88d=_[_0x9c0f('0x3a')]({},_0x22a88d,_0x497f24[_0x9c0f('0x3c')]);var _0x59cf7f={'where':_0x22a88d['where']};return db[_0x9c0f('0x3d')]['count'](_0x59cf7f)[_0x9c0f('0x25')](function(_0x132193){_0x3bbc35['count']=_0x132193;if(_0x497f24[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x22a88d[_0x9c0f('0x3f')]=[{'all':!![]}];}return db[_0x9c0f('0x3d')][_0x9c0f('0x40')](_0x22a88d);})['then'](function(_0x25af2b){_0x3bbc35[_0x9c0f('0x41')]=_0x25af2b;return _0x3bbc35;})[_0x9c0f('0x25')](respondWithFilteredResult(_0xe724b,_0x22a88d))[_0x9c0f('0x42')](handleError(_0xe724b,null));};exports[_0x9c0f('0x43')]=function(_0x2bc11c,_0x5f2340){var _0x2c397a={'raw':!![],'where':{'id':_0x2bc11c[_0x9c0f('0x44')]['id']}},_0x59696a={};_0x59696a[_0x9c0f('0x33')]=_[_0x9c0f('0x2f')](db['JscriptyQuestionReport']['rawAttributes']);_0x59696a[_0x9c0f('0x2e')]=_[_0x9c0f('0x2f')](_0x2bc11c['query']);_0x59696a[_0x9c0f('0x30')]=_['intersection'](_0x59696a[_0x9c0f('0x33')],_0x59696a[_0x9c0f('0x2e')]);_0x2c397a[_0x9c0f('0x32')]=_[_0x9c0f('0x31')](_0x59696a[_0x9c0f('0x33')],qs['fields'](_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x34')]));_0x2c397a[_0x9c0f('0x32')]=_0x2c397a[_0x9c0f('0x32')][_0x9c0f('0x35')]?_0x2c397a['attributes']:_0x59696a['model'];if(_0x2bc11c[_0x9c0f('0x2e')][_0x9c0f('0x3e')]){_0x2c397a[_0x9c0f('0x3f')]=[{'all':!![]}];}_0x2c397a=_[_0x9c0f('0x3a')]({},_0x2c397a,_0x2bc11c[_0x9c0f('0x3c')]);return db[_0x9c0f('0x3d')][_0x9c0f('0x45')](_0x2c397a)[_0x9c0f('0x25')](handleEntityNotFound(_0x5f2340,null))[_0x9c0f('0x25')](respondWithResult(_0x5f2340,null))[_0x9c0f('0x42')](handleError(_0x5f2340,null));};exports['create']=function(_0x41cbee,_0x42afb0){return db[_0x9c0f('0x3d')][_0x9c0f('0x46')](_0x41cbee[_0x9c0f('0x47')],{})[_0x9c0f('0x25')](respondWithResult(_0x42afb0,0xc9))[_0x9c0f('0x42')](handleError(_0x42afb0,null));};exports['update']=function(_0x26f562,_0x1ab16c){if(_0x26f562[_0x9c0f('0x47')]['id']){delete _0x26f562[_0x9c0f('0x47')]['id'];}return db[_0x9c0f('0x3d')][_0x9c0f('0x45')]({'where':{'id':_0x26f562[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x1ab16c,null))[_0x9c0f('0x25')](saveUpdates(_0x26f562[_0x9c0f('0x47')],null))[_0x9c0f('0x25')](respondWithResult(_0x1ab16c,null))[_0x9c0f('0x42')](handleError(_0x1ab16c,null));};exports[_0x9c0f('0x48')]=function(_0x127b51,_0x155b54){return db[_0x9c0f('0x3d')]['find']({'where':{'id':_0x127b51[_0x9c0f('0x44')]['id']}})[_0x9c0f('0x25')](handleEntityNotFound(_0x155b54,null))[_0x9c0f('0x25')](removeEntity(_0x155b54,null))['catch'](handleError(_0x155b54,null));};exports[_0x9c0f('0x49')]=function(_0x283c08,_0x6f7da7){return db[_0x9c0f('0x3d')][_0x9c0f('0x49')]()[_0x9c0f('0x25')](respondWithResult(_0x6f7da7,null))[_0x9c0f('0x42')](handleError(_0x6f7da7,null));};
\ No newline at end of file
index b29d700..c90a0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa638=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','report_jscripty_questions'];(function(_0x2ac980,_0x33829d){var _0x53974d=function(_0x4cd40c){while(--_0x4cd40c){_0x2ac980['push'](_0x2ac980['shift']());}};_0x53974d(++_0x33829d);}(_0xa638,0x120));var _0x8a63=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xa638[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require('lodash');var util=require(_0x8a63('0x0'));var logger=require(_0x8a63('0x1'))(_0x8a63('0x2'));var moment=require('moment');var BPromise=require(_0x8a63('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8a63('0x4'));var rimraf=require(_0x8a63('0x5'));var config=require(_0x8a63('0x6'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0x8a63('0x7')]=function(_0x5e2c3e,_0x3a8cc9){return _0x5e2c3e['define']('JscriptyQuestionReport',attributes,{'tableName':_0x8a63('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc12f=['bluebird','path','rimraf','exports','define','JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api'];(function(_0x6d2195,_0x606f25){var _0x370562=function(_0x388eb6){while(--_0x388eb6){_0x6d2195['push'](_0x6d2195['shift']());}};_0x370562(++_0x606f25);}(_0xc12f,0xf1));var _0xfc12=function(_0x271060,_0x3f86b1){_0x271060=_0x271060-0x0;var _0x40540b=_0xc12f[_0x271060];return _0x40540b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc12('0x0'))(_0xfc12('0x1'));var moment=require('moment');var BPromise=require(_0xfc12('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfc12('0x3'));var rimraf=require(_0xfc12('0x4'));var config=require('../../config/environment');var attributes=require('./jscriptyQuestionReport.attributes');module[_0xfc12('0x5')]=function(_0x657e99,_0xed4593){return _0x657e99[_0xfc12('0x6')](_0xfc12('0x7'),attributes,{'tableName':_0xfc12('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08048db..f4ba742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4e=['../../config/logger','rpc','jayson/promise','client','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../config/utils'];(function(_0x1602ef,_0x447aba){var _0x5870ee=function(_0x4d94e7){while(--_0x4d94e7){_0x1602ef['push'](_0x1602ef['shift']());}};_0x5870ee(++_0x447aba);}(_0x9a4e,0x14b));var _0xe9a4=function(_0x4cea23,_0x42a3ae){_0x4cea23=_0x4cea23-0x0;var _0x183b34=_0x9a4e[_0x4cea23];return _0x183b34;};'use strict';var _=require(_0xe9a4('0x0'));var util=require(_0xe9a4('0x1'));var moment=require(_0xe9a4('0x2'));var BPromise=require(_0xe9a4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9a4('0x4'));var logger=require(_0xe9a4('0x5'))(_0xe9a4('0x6'));var config=require('../../config/environment');var jayson=require(_0xe9a4('0x7'));var client=jayson[_0xe9a4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7f4744,_0x5a6957,_0x185b0f){return new BPromise(function(_0x34c32c,_0x190f11){return client[_0xe9a4('0x9')](_0x7f4744,_0x185b0f)[_0xe9a4('0xa')](function(_0x21b781){logger['info'](_0xe9a4('0xb'),_0x5a6957,_0xe9a4('0xc'));logger[_0xe9a4('0xd')](_0xe9a4('0xe'),_0x5a6957,_0xe9a4('0xc'),JSON[_0xe9a4('0xf')](_0x21b781));if(_0x21b781[_0xe9a4('0x10')]){if(_0x21b781['error'][_0xe9a4('0x11')]===0x1f4){logger[_0xe9a4('0x10')](_0xe9a4('0xb'),_0x5a6957,_0x21b781[_0xe9a4('0x10')][_0xe9a4('0x12')]);return _0x190f11(_0x21b781[_0xe9a4('0x10')]['message']);}logger['error'](_0xe9a4('0xb'),_0x5a6957,_0x21b781[_0xe9a4('0x10')][_0xe9a4('0x12')]);return _0x34c32c(_0x21b781[_0xe9a4('0x10')]['message']);}else{logger['info'](_0xe9a4('0xb'),_0x5a6957,_0xe9a4('0xc'));_0x34c32c(_0x21b781[_0xe9a4('0x13')][_0xe9a4('0x12')]);}})[_0xe9a4('0x14')](function(_0x1af6e0){logger['error'](_0xe9a4('0xb'),_0x5a6957,_0x1af6e0);_0x190f11(_0x1af6e0);});});}
\ No newline at end of file
+var _0xc237=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2f4fea,_0x29fc96){var _0x5a677e=function(_0x22a446){while(--_0x22a446){_0x2f4fea['push'](_0x2f4fea['shift']());}};_0x5a677e(++_0x29fc96);}(_0xc237,0x17f));var _0x7c23=function(_0xc7fa04,_0x174884){_0xc7fa04=_0xc7fa04-0x0;var _0x1174e4=_0xc237[_0xc7fa04];return _0x1174e4;};'use strict';var _=require(_0x7c23('0x0'));var util=require(_0x7c23('0x1'));var moment=require(_0x7c23('0x2'));var BPromise=require(_0x7c23('0x3'));var rs=require(_0x7c23('0x4'));var fs=require('fs');var Redis=require(_0x7c23('0x5'));var db=require(_0x7c23('0x6'))['db'];var utils=require(_0x7c23('0x7'));var logger=require(_0x7c23('0x8'))('rpc');var config=require(_0x7c23('0x9'));var jayson=require(_0x7c23('0xa'));var client=jayson[_0x7c23('0xb')][_0x7c23('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2db183,_0x5644fc,_0x167cfd){return new BPromise(function(_0x3d85d2,_0x54bf2c){return client[_0x7c23('0xd')](_0x2db183,_0x167cfd)[_0x7c23('0xe')](function(_0x47aff6){logger[_0x7c23('0xf')](_0x7c23('0x10'),_0x5644fc,'request\x20sent');logger[_0x7c23('0x11')](_0x7c23('0x12'),_0x5644fc,_0x7c23('0x13'),JSON['stringify'](_0x47aff6));if(_0x47aff6[_0x7c23('0x14')]){if(_0x47aff6[_0x7c23('0x14')]['code']===0x1f4){logger[_0x7c23('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5644fc,_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);return _0x54bf2c(_0x47aff6['error'][_0x7c23('0x15')]);}logger['error'](_0x7c23('0x10'),_0x5644fc,_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);return _0x3d85d2(_0x47aff6[_0x7c23('0x14')][_0x7c23('0x15')]);}else{logger[_0x7c23('0xf')](_0x7c23('0x10'),_0x5644fc,_0x7c23('0x13'));_0x3d85d2(_0x47aff6['result']['message']);}})[_0x7c23('0x16')](function(_0x4f4bbc){logger[_0x7c23('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5644fc,_0x4f4bbc);_0x54bf2c(_0x4f4bbc);});});}
\ No newline at end of file
index 6a408cc..51b10fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4608=['../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','post','create','put','delete','multer','util','path','express','Router','fs-extra'];(function(_0x3b2099,_0x59d756){var _0x530380=function(_0x2e5ffb){while(--_0x2e5ffb){_0x3b2099['push'](_0x3b2099['shift']());}};_0x530380(++_0x59d756);}(_0x4608,0xcc));var _0x8460=function(_0x29c432,_0xb5a1d3){_0x29c432=_0x29c432-0x0;var _0x32afe0=_0x4608[_0x29c432];return _0x32afe0;};'use strict';var multer=require(_0x8460('0x0'));var util=require(_0x8460('0x1'));var path=require(_0x8460('0x2'));var timeout=require('connect-timeout');var express=require(_0x8460('0x3'));var router=express[_0x8460('0x4')]();var fs_extra=require(_0x8460('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8460('0x6'));var config=require(_0x8460('0x7'));var controller=require(_0x8460('0x8'));router[_0x8460('0x9')]('/',auth[_0x8460('0xa')](),controller[_0x8460('0xb')]);router[_0x8460('0x9')](_0x8460('0xc'),auth[_0x8460('0xa')](),controller[_0x8460('0xd')]);router[_0x8460('0x9')](_0x8460('0xe'),auth[_0x8460('0xa')](),controller[_0x8460('0xf')]);router[_0x8460('0x9')](_0x8460('0x10'),auth[_0x8460('0xa')](),controller['getQuestions']);router[_0x8460('0x11')]('/',auth[_0x8460('0xa')](),controller[_0x8460('0x12')]);router[_0x8460('0x13')](_0x8460('0xe'),auth[_0x8460('0xa')](),controller['update']);router[_0x8460('0x14')](_0x8460('0xe'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3d8e=['get','/describe','describe','show','/:id/questions','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x396e90,_0x4c7718){var _0xaf7e4c=function(_0x2a96bc){while(--_0x2a96bc){_0x396e90['push'](_0x396e90['shift']());}};_0xaf7e4c(++_0x4c7718);}(_0x3d8e,0x1d9));var _0xe3d8=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x3d8e[_0x432fca];return _0x3adba4;};'use strict';var multer=require(_0xe3d8('0x0'));var util=require(_0xe3d8('0x1'));var path=require(_0xe3d8('0x2'));var timeout=require(_0xe3d8('0x3'));var express=require(_0xe3d8('0x4'));var router=express[_0xe3d8('0x5')]();var fs_extra=require(_0xe3d8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe3d8('0x7'));var config=require(_0xe3d8('0x8'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xa')]);router[_0xe3d8('0xb')](_0xe3d8('0xc'),auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xd')]);router[_0xe3d8('0xb')]('/:id',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0xe')]);router[_0xe3d8('0xb')](_0xe3d8('0xf'),auth[_0xe3d8('0x9')](),controller['getQuestions']);router['post']('/',auth[_0xe3d8('0x9')](),controller['create']);router[_0xe3d8('0x10')](_0xe3d8('0x11'),auth['isAuthenticated'](),controller[_0xe3d8('0x12')]);router[_0xe3d8('0x13')]('/:id',auth[_0xe3d8('0x9')](),controller[_0xe3d8('0x14')]);module[_0xe3d8('0x15')]=router;
\ No newline at end of file
index 7aed965..76a8a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e0c=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE','starttime','setDataValue','endtime'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x6e0c,0x1a6));var _0xc6e0=function(_0x4b6feb,_0x158c73){_0x4b6feb=_0x4b6feb-0x0;var _0x749123=_0x6e0c[_0x4b6feb];return _0x749123;};'use strict';var moment=require(_0xc6e0('0x0'));var Sequelize=require(_0xc6e0('0x1'));module[_0xc6e0('0x2')]={'starttime':{'type':Sequelize[_0xc6e0('0x3')],'set':function(_0x3ccd5c){this['setDataValue'](_0xc6e0('0x4'),_0x3ccd5c);this[_0xc6e0('0x5')](_0xc6e0('0x6'),moment()[_0xc6e0('0x7')](_0xc6e0('0x8')));}},'endtime':{'type':Sequelize[_0xc6e0('0x3')]},'membername':{'type':Sequelize[_0xc6e0('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc6e0('0x9')]},'calleridname':{'type':Sequelize[_0xc6e0('0x9')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xc6e0('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6931=['YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','setDataValue','starttime','format'];(function(_0x5f49c0,_0x27a1b4){var _0x5ab653=function(_0x4de962){while(--_0x4de962){_0x5f49c0['push'](_0x5f49c0['shift']());}};_0x5ab653(++_0x27a1b4);}(_0x6931,0x1a9));var _0x1693=function(_0x194d9e,_0x5d4cc8){_0x194d9e=_0x194d9e-0x0;var _0x2122b2=_0x6931[_0x194d9e];return _0x2122b2;};'use strict';var moment=require(_0x1693('0x0'));var Sequelize=require(_0x1693('0x1'));module[_0x1693('0x2')]={'starttime':{'type':Sequelize[_0x1693('0x3')],'set':function(_0x369854){this[_0x1693('0x4')](_0x1693('0x5'),_0x369854);this[_0x1693('0x4')]('endtime',moment()[_0x1693('0x6')](_0x1693('0x7')));}},'endtime':{'type':Sequelize[_0x1693('0x3')]},'membername':{'type':Sequelize[_0x1693('0x8')]},'projectname':{'type':Sequelize[_0x1693('0x8')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1693('0x8')]},'calleridname':{'type':Sequelize[_0x1693('0x8')]},'calleridnum':{'type':Sequelize[_0x1693('0x8')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 774501d..8e68173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1033=['fieldName','type','model','map','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','keys','fields','include','options','find','create','body','params','describe','getQuestions','findOne','pick','SessionId','JscriptyQuestionReport','eml-format','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','error','stack','name','send','index','JscriptySessionReport','rawAttributes'];(function(_0x4bdf64,_0x3022b2){var _0x9a1a19=function(_0x4e551b){while(--_0x4e551b){_0x4bdf64['push'](_0x4bdf64['shift']());}};_0x9a1a19(++_0x3022b2);}(_0x1033,0x19b));var _0x3103=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x1033[_0x1e4360];return _0x31e6b4;};'use strict';var emlformat=require(_0x3103('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3103('0x1'));var rp=require('request-promise');var moment=require(_0x3103('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3103('0x3'));var util=require('util');var path=require(_0x3103('0x4'));var sox=require(_0x3103('0x5'));var csv=require(_0x3103('0x6'));var ejs=require(_0x3103('0x7'));var fs=require('fs');var fs_extra=require(_0x3103('0x8'));var _=require('lodash');var squel=require(_0x3103('0x9'));var crypto=require(_0x3103('0xa'));var jsforce=require(_0x3103('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3103('0xc'));var Redis=require('ioredis');var authService=require(_0x3103('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x3103('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3103('0xf'));var utils=require(_0x3103('0x10'));var config=require(_0x3103('0x11'));var licenseUtil=require(_0x3103('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ea953,_0x15d8e0){_0x15d8e0=_0x15d8e0||0xcc;return function(_0x26c4c8){if(_0x26c4c8){return _0x5ea953[_0x3103('0x13')](_0x15d8e0);}return _0x5ea953[_0x3103('0x14')](_0x15d8e0)[_0x3103('0x15')]();};}function respondWithResult(_0x4eb7ce,_0x11fd6b){_0x11fd6b=_0x11fd6b||0xc8;return function(_0x53d562){if(_0x53d562){return _0x4eb7ce[_0x3103('0x14')](_0x11fd6b)['json'](_0x53d562);}};}function respondWithFilteredResult(_0x465480,_0x279232){return function(_0x309077){if(_0x309077){var _0x3b6985=typeof _0x279232[_0x3103('0x16')]===_0x3103('0x17')&&typeof _0x279232[_0x3103('0x18')]===_0x3103('0x17');var _0x29f211=_0x309077[_0x3103('0x19')];var _0x41ec20=_0x3b6985?0x0:_0x279232[_0x3103('0x16')];var _0x9a9c88=_0x3b6985?_0x309077[_0x3103('0x19')]:_0x279232[_0x3103('0x16')]+_0x279232['limit'];var _0x154a4b;if(_0x9a9c88>=_0x29f211){_0x9a9c88=_0x29f211;_0x154a4b=0xc8;}else{_0x154a4b=0xce;}_0x465480[_0x3103('0x14')](_0x154a4b);return _0x465480[_0x3103('0x1a')](_0x3103('0x1b'),_0x41ec20+'-'+_0x9a9c88+'/'+_0x29f211)['json'](_0x309077);}return null;};}function patchUpdates(_0x5b71e9){return function(_0x56a80e){try{jsonpatch[_0x3103('0x1c')](_0x56a80e,_0x5b71e9,!![]);}catch(_0x51787d){return BPromise['reject'](_0x51787d);}return _0x56a80e['save']();};}function saveUpdates(_0x234328,_0x4e5e46){return function(_0x3b4eb7){if(_0x3b4eb7){return _0x3b4eb7[_0x3103('0x1d')](_0x234328)['then'](function(_0xa650ad){return _0xa650ad;});}return null;};}function removeEntity(_0x97ec74,_0x49de37){return function(_0x2dedad){if(_0x2dedad){return _0x2dedad[_0x3103('0x1e')]()[_0x3103('0x1f')](function(){_0x97ec74[_0x3103('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x576ca1,_0x5d9768){return function(_0x225bd7){if(!_0x225bd7){_0x576ca1[_0x3103('0x13')](0x194);}return _0x225bd7;};}function handleError(_0x17b284,_0x30f5d6){_0x30f5d6=_0x30f5d6||0x1f4;return function(_0x4e38b3){logger[_0x3103('0x20')](_0x4e38b3[_0x3103('0x21')]);if(_0x4e38b3[_0x3103('0x22')]){delete _0x4e38b3['name'];}_0x17b284[_0x3103('0x14')](_0x30f5d6)[_0x3103('0x23')](_0x4e38b3);};}exports[_0x3103('0x24')]=function(_0x40f968,_0x5fbd1e){var _0x5c845e={},_0x30710c={},_0x706839={'count':0x0,'rows':[]};var _0x15aaf2=_['map'](db[_0x3103('0x25')][_0x3103('0x26')],function(_0x5a1574){return{'name':_0x5a1574[_0x3103('0x27')],'type':_0x5a1574[_0x3103('0x28')]['key']};});_0x30710c[_0x3103('0x29')]=_[_0x3103('0x2a')](_0x15aaf2,_0x3103('0x22'));_0x30710c[_0x3103('0x2b')]=_['keys'](_0x40f968[_0x3103('0x2b')]);_0x30710c[_0x3103('0x2c')]=_['intersection'](_0x30710c[_0x3103('0x29')],_0x30710c[_0x3103('0x2b')]);_0x5c845e[_0x3103('0x2d')]=_[_0x3103('0x2e')](_0x30710c[_0x3103('0x29')],qs['fields'](_0x40f968[_0x3103('0x2b')]['fields']));_0x5c845e[_0x3103('0x2d')]=_0x5c845e['attributes'][_0x3103('0x2f')]?_0x5c845e['attributes']:_0x30710c['model'];if(!_0x40f968['query'][_0x3103('0x30')](_0x3103('0x31'))){_0x5c845e[_0x3103('0x18')]=qs[_0x3103('0x18')](_0x40f968[_0x3103('0x2b')][_0x3103('0x18')]);_0x5c845e['offset']=qs[_0x3103('0x16')](_0x40f968[_0x3103('0x2b')][_0x3103('0x16')]);}_0x5c845e[_0x3103('0x32')]=qs['sort'](_0x40f968[_0x3103('0x2b')][_0x3103('0x33')]);_0x5c845e[_0x3103('0x34')]=qs[_0x3103('0x2c')](_['pick'](_0x40f968[_0x3103('0x2b')],_0x30710c['filters']),_0x15aaf2);if(_0x40f968[_0x3103('0x2b')][_0x3103('0x35')]){_0x5c845e[_0x3103('0x34')]=_['merge'](_0x5c845e[_0x3103('0x34')],{'$or':_[_0x3103('0x2a')](_0x15aaf2,function(_0x5df0cf){if(_0x5df0cf[_0x3103('0x28')]!==_0x3103('0x36')){var _0x43c5a4={};_0x43c5a4[_0x5df0cf[_0x3103('0x22')]]={'$like':'%'+_0x40f968[_0x3103('0x2b')][_0x3103('0x35')]+'%'};return _0x43c5a4;}})});}_0x5c845e=_[_0x3103('0x37')]({},_0x5c845e,_0x40f968['options']);var _0x38d59d={'where':_0x5c845e[_0x3103('0x34')]};return db[_0x3103('0x25')][_0x3103('0x19')](_0x38d59d)['then'](function(_0x5139e7){_0x706839[_0x3103('0x19')]=_0x5139e7;if(_0x40f968['query'][_0x3103('0x38')]){_0x5c845e['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x3103('0x39')](_0x5c845e);})[_0x3103('0x1f')](function(_0x55f5ff){_0x706839[_0x3103('0x3a')]=_0x55f5ff;return _0x706839;})['then'](respondWithFilteredResult(_0x5fbd1e,_0x5c845e))[_0x3103('0x3b')](handleError(_0x5fbd1e,null));};exports[_0x3103('0x3c')]=function(_0x2f686c,_0x37998e){var _0x58d26e={'raw':!![],'where':{'id':_0x2f686c['params']['id']}},_0x41aa94={};_0x41aa94[_0x3103('0x29')]=_[_0x3103('0x3d')](db[_0x3103('0x25')][_0x3103('0x26')]);_0x41aa94[_0x3103('0x2b')]=_[_0x3103('0x3d')](_0x2f686c[_0x3103('0x2b')]);_0x41aa94[_0x3103('0x2c')]=_[_0x3103('0x2e')](_0x41aa94[_0x3103('0x29')],_0x41aa94[_0x3103('0x2b')]);_0x58d26e[_0x3103('0x2d')]=_[_0x3103('0x2e')](_0x41aa94[_0x3103('0x29')],qs[_0x3103('0x3e')](_0x2f686c[_0x3103('0x2b')]['fields']));_0x58d26e[_0x3103('0x2d')]=_0x58d26e[_0x3103('0x2d')]['length']?_0x58d26e[_0x3103('0x2d')]:_0x41aa94[_0x3103('0x29')];if(_0x2f686c[_0x3103('0x2b')][_0x3103('0x38')]){_0x58d26e[_0x3103('0x3f')]=[{'all':!![]}];}_0x58d26e=_[_0x3103('0x37')]({},_0x58d26e,_0x2f686c[_0x3103('0x40')]);return db[_0x3103('0x25')][_0x3103('0x41')](_0x58d26e)['then'](handleEntityNotFound(_0x37998e,null))['then'](respondWithResult(_0x37998e,null))[_0x3103('0x3b')](handleError(_0x37998e,null));};exports['create']=function(_0x3d5e29,_0x278a58){return db[_0x3103('0x25')][_0x3103('0x42')](_0x3d5e29[_0x3103('0x43')],{})[_0x3103('0x1f')](respondWithResult(_0x278a58,0xc9))[_0x3103('0x3b')](handleError(_0x278a58,null));};exports[_0x3103('0x1d')]=function(_0x6d8cae,_0x1f471c){if(_0x6d8cae[_0x3103('0x43')]['id']){delete _0x6d8cae['body']['id'];}return db[_0x3103('0x25')][_0x3103('0x41')]({'where':{'id':_0x6d8cae[_0x3103('0x44')]['id']}})[_0x3103('0x1f')](handleEntityNotFound(_0x1f471c,null))[_0x3103('0x1f')](saveUpdates(_0x6d8cae[_0x3103('0x43')],null))[_0x3103('0x1f')](respondWithResult(_0x1f471c,null))[_0x3103('0x3b')](handleError(_0x1f471c,null));};exports[_0x3103('0x1e')]=function(_0x2e6174,_0x22d951){return db['JscriptySessionReport'][_0x3103('0x41')]({'where':{'id':_0x2e6174[_0x3103('0x44')]['id']}})['then'](handleEntityNotFound(_0x22d951,null))[_0x3103('0x1f')](removeEntity(_0x22d951,null))[_0x3103('0x3b')](handleError(_0x22d951,null));};exports[_0x3103('0x45')]=function(_0x5b2387,_0x370548){return db[_0x3103('0x25')]['describe']()[_0x3103('0x1f')](respondWithResult(_0x370548,null))[_0x3103('0x3b')](handleError(_0x370548,null));};exports[_0x3103('0x46')]=function(_0x310706,_0x3237de,_0x35800e){var _0x4d0183={'raw':!![],'where':{}};var _0x40565a={};var _0x6c68cb={'count':0x0,'rows':[]};return db[_0x3103('0x25')][_0x3103('0x47')]({'where':{'id':_0x310706[_0x3103('0x44')]['id']}})['then'](handleEntityNotFound(_0x3237de,null))[_0x3103('0x1f')](function(_0x564c3e){if(_0x564c3e){_0x40565a['model']=_[_0x3103('0x3d')](db['JscriptyQuestionReport'][_0x3103('0x26')]);_0x40565a[_0x3103('0x2b')]=_[_0x3103('0x3d')](_0x310706[_0x3103('0x2b')]);_0x40565a[_0x3103('0x2c')]=_[_0x3103('0x2e')](_0x40565a[_0x3103('0x29')],_0x40565a['query']);_0x4d0183[_0x3103('0x2d')]=_[_0x3103('0x2e')](_0x40565a[_0x3103('0x29')],qs[_0x3103('0x3e')](_0x310706[_0x3103('0x2b')]['fields']));_0x4d0183['attributes']=_0x4d0183['attributes'][_0x3103('0x2f')]?_0x4d0183[_0x3103('0x2d')]:_0x40565a['model'];if(!_0x310706['query']['hasOwnProperty'](_0x3103('0x31'))){_0x4d0183[_0x3103('0x18')]=qs[_0x3103('0x18')](_0x310706[_0x3103('0x2b')]['limit']);_0x4d0183[_0x3103('0x16')]=qs[_0x3103('0x16')](_0x310706[_0x3103('0x2b')][_0x3103('0x16')]);}_0x4d0183[_0x3103('0x32')]=qs[_0x3103('0x33')](_0x310706[_0x3103('0x2b')]['sort']);_0x4d0183[_0x3103('0x34')]=qs['filters'](_[_0x3103('0x48')](_0x310706[_0x3103('0x2b')],_0x40565a['filters']));_0x4d0183[_0x3103('0x34')][_0x3103('0x49')]=_0x564c3e['id'];if(_0x310706[_0x3103('0x2b')][_0x3103('0x35')]){_0x4d0183[_0x3103('0x34')]=_['merge'](_0x4d0183[_0x3103('0x34')],{'$or':_['map'](_0x4d0183[_0x3103('0x2d')],function(_0x5bb33f){var _0x2c852b={};_0x2c852b[_0x5bb33f]={'$like':'%'+_0x310706['query'][_0x3103('0x35')]+'%'};return _0x2c852b;})});}_0x4d0183=_[_0x3103('0x37')]({},_0x4d0183,_0x310706[_0x3103('0x40')]);return db[_0x3103('0x4a')][_0x3103('0x19')]({'where':_0x4d0183['where']})[_0x3103('0x1f')](function(_0x11ccb8){_0x6c68cb[_0x3103('0x19')]=_0x11ccb8;if(_0x310706[_0x3103('0x2b')][_0x3103('0x38')]){_0x4d0183[_0x3103('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x3103('0x39')](_0x4d0183);})[_0x3103('0x1f')](function(_0x3d29c6){_0x6c68cb[_0x3103('0x3a')]=_0x3d29c6;return _0x6c68cb;});}})[_0x3103('0x1f')](respondWithFilteredResult(_0x3237de,_0x4d0183))['catch'](handleError(_0x3237de,null));};
\ No newline at end of file
+var _0xce8d=['count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','JscriptySessionReport','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','options','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','nolimit','pick','SessionId','rimraf','zip-dir','fast-json-patch','moment','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/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xce8d,0x128));var _0xdce8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce8d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdce8('0x0'));var zipdir=require(_0xdce8('0x1'));var jsonpatch=require(_0xdce8('0x2'));var rp=require('request-promise');var moment=require(_0xdce8('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xdce8('0x4'));var csv=require(_0xdce8('0x5'));var ejs=require(_0xdce8('0x6'));var fs=require('fs');var fs_extra=require(_0xdce8('0x7'));var _=require(_0xdce8('0x8'));var squel=require('squel');var crypto=require(_0xdce8('0x9'));var jsforce=require(_0xdce8('0xa'));var deskjs=require(_0xdce8('0xb'));var toCsv=require(_0xdce8('0x5'));var querystring=require(_0xdce8('0xc'));var Papa=require(_0xdce8('0xd'));var Redis=require(_0xdce8('0xe'));var authService=require(_0xdce8('0xf'));var qs=require(_0xdce8('0x10'));var as=require(_0xdce8('0x11'));var hardwareService=require(_0xdce8('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdce8('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xdce8('0x14'))['db'];function respondWithStatusCode(_0x54baf2,_0x1da50c){_0x1da50c=_0x1da50c||0xcc;return function(_0x2b41b9){if(_0x2b41b9){return _0x54baf2[_0xdce8('0x15')](_0x1da50c);}return _0x54baf2[_0xdce8('0x16')](_0x1da50c)[_0xdce8('0x17')]();};}function respondWithResult(_0x529f65,_0x5d00a2){_0x5d00a2=_0x5d00a2||0xc8;return function(_0x3a1b40){if(_0x3a1b40){return _0x529f65[_0xdce8('0x16')](_0x5d00a2)[_0xdce8('0x18')](_0x3a1b40);}};}function respondWithFilteredResult(_0x2bccd3,_0x3a5af5){return function(_0x39cb0e){if(_0x39cb0e){var _0xc86a60=typeof _0x3a5af5[_0xdce8('0x19')]===_0xdce8('0x1a')&&typeof _0x3a5af5[_0xdce8('0x1b')]===_0xdce8('0x1a');var _0x5c6154=_0x39cb0e[_0xdce8('0x1c')];var _0x4b219d=_0xc86a60?0x0:_0x3a5af5[_0xdce8('0x19')];var _0x55e436=_0xc86a60?_0x39cb0e[_0xdce8('0x1c')]:_0x3a5af5[_0xdce8('0x19')]+_0x3a5af5[_0xdce8('0x1b')];var _0x198c05;if(_0x55e436>=_0x5c6154){_0x55e436=_0x5c6154;_0x198c05=0xc8;}else{_0x198c05=0xce;}_0x2bccd3[_0xdce8('0x16')](_0x198c05);return _0x2bccd3[_0xdce8('0x1d')](_0xdce8('0x1e'),_0x4b219d+'-'+_0x55e436+'/'+_0x5c6154)[_0xdce8('0x18')](_0x39cb0e);}return null;};}function patchUpdates(_0x2cdf2a){return function(_0x11eefd){try{jsonpatch[_0xdce8('0x1f')](_0x11eefd,_0x2cdf2a,!![]);}catch(_0x4750b0){return BPromise[_0xdce8('0x20')](_0x4750b0);}return _0x11eefd[_0xdce8('0x21')]();};}function saveUpdates(_0x4c2b3c,_0x1d48c6){return function(_0x1f90d4){if(_0x1f90d4){return _0x1f90d4[_0xdce8('0x22')](_0x4c2b3c)[_0xdce8('0x23')](function(_0x138f59){return _0x138f59;});}return null;};}function removeEntity(_0xedc217,_0x2c6f6d){return function(_0x510d02){if(_0x510d02){return _0x510d02[_0xdce8('0x24')]()['then'](function(){_0xedc217['status'](0xcc)[_0xdce8('0x17')]();});}};}function handleEntityNotFound(_0x52307f,_0x2c2075){return function(_0x18c4e3){if(!_0x18c4e3){_0x52307f[_0xdce8('0x15')](0x194);}return _0x18c4e3;};}function handleError(_0x407157,_0x3b441d){_0x3b441d=_0x3b441d||0x1f4;return function(_0x32634f){logger[_0xdce8('0x25')](_0x32634f[_0xdce8('0x26')]);if(_0x32634f['name']){delete _0x32634f['name'];}_0x407157[_0xdce8('0x16')](_0x3b441d)[_0xdce8('0x27')](_0x32634f);};}exports[_0xdce8('0x28')]=function(_0x2a385f,_0x2d166a){var _0x50c8c1={},_0x138520={},_0x5c2972={'count':0x0,'rows':[]};var _0x3855ab=_[_0xdce8('0x29')](db[_0xdce8('0x2a')]['rawAttributes'],function(_0x5cb52b){return{'name':_0x5cb52b[_0xdce8('0x2b')],'type':_0x5cb52b[_0xdce8('0x2c')][_0xdce8('0x2d')]};});_0x138520[_0xdce8('0x2e')]=_[_0xdce8('0x29')](_0x3855ab,_0xdce8('0x2f'));_0x138520[_0xdce8('0x30')]=_['keys'](_0x2a385f[_0xdce8('0x30')]);_0x138520[_0xdce8('0x31')]=_[_0xdce8('0x32')](_0x138520[_0xdce8('0x2e')],_0x138520['query']);_0x50c8c1['attributes']=_[_0xdce8('0x32')](_0x138520['model'],qs['fields'](_0x2a385f[_0xdce8('0x30')][_0xdce8('0x33')]));_0x50c8c1['attributes']=_0x50c8c1[_0xdce8('0x34')][_0xdce8('0x35')]?_0x50c8c1[_0xdce8('0x34')]:_0x138520[_0xdce8('0x2e')];if(!_0x2a385f[_0xdce8('0x30')][_0xdce8('0x36')]('nolimit')){_0x50c8c1[_0xdce8('0x1b')]=qs['limit'](_0x2a385f[_0xdce8('0x30')]['limit']);_0x50c8c1[_0xdce8('0x19')]=qs['offset'](_0x2a385f['query'][_0xdce8('0x19')]);}_0x50c8c1[_0xdce8('0x37')]=qs['sort'](_0x2a385f[_0xdce8('0x30')][_0xdce8('0x38')]);_0x50c8c1[_0xdce8('0x39')]=qs['filters'](_['pick'](_0x2a385f[_0xdce8('0x30')],_0x138520[_0xdce8('0x31')]),_0x3855ab);if(_0x2a385f[_0xdce8('0x30')]['filter']){_0x50c8c1[_0xdce8('0x39')]=_['merge'](_0x50c8c1['where'],{'$or':_['map'](_0x3855ab,function(_0x2f927f){if(_0x2f927f['type']!==_0xdce8('0x3a')){var _0x31e547={};_0x31e547[_0x2f927f[_0xdce8('0x2f')]]={'$like':'%'+_0x2a385f['query'][_0xdce8('0x3b')]+'%'};return _0x31e547;}})});}_0x50c8c1=_[_0xdce8('0x3c')]({},_0x50c8c1,_0x2a385f['options']);var _0x149ac5={'where':_0x50c8c1[_0xdce8('0x39')]};return db[_0xdce8('0x2a')][_0xdce8('0x1c')](_0x149ac5)['then'](function(_0x19ff78){_0x5c2972['count']=_0x19ff78;if(_0x2a385f['query'][_0xdce8('0x3d')]){_0x50c8c1[_0xdce8('0x3e')]=[{'all':!![]}];}return db[_0xdce8('0x2a')][_0xdce8('0x3f')](_0x50c8c1);})['then'](function(_0x3999a2){_0x5c2972[_0xdce8('0x40')]=_0x3999a2;return _0x5c2972;})['then'](respondWithFilteredResult(_0x2d166a,_0x50c8c1))[_0xdce8('0x41')](handleError(_0x2d166a,null));};exports[_0xdce8('0x42')]=function(_0x299473,_0x5acb3d){var _0x4e1c7f={'raw':!![],'where':{'id':_0x299473[_0xdce8('0x43')]['id']}},_0x5da7ab={};_0x5da7ab['model']=_['keys'](db[_0xdce8('0x2a')][_0xdce8('0x44')]);_0x5da7ab[_0xdce8('0x30')]=_[_0xdce8('0x45')](_0x299473[_0xdce8('0x30')]);_0x5da7ab[_0xdce8('0x31')]=_[_0xdce8('0x32')](_0x5da7ab[_0xdce8('0x2e')],_0x5da7ab[_0xdce8('0x30')]);_0x4e1c7f[_0xdce8('0x34')]=_[_0xdce8('0x32')](_0x5da7ab[_0xdce8('0x2e')],qs[_0xdce8('0x33')](_0x299473[_0xdce8('0x30')][_0xdce8('0x33')]));_0x4e1c7f[_0xdce8('0x34')]=_0x4e1c7f[_0xdce8('0x34')]['length']?_0x4e1c7f[_0xdce8('0x34')]:_0x5da7ab[_0xdce8('0x2e')];if(_0x299473['query'][_0xdce8('0x3d')]){_0x4e1c7f['include']=[{'all':!![]}];}_0x4e1c7f=_[_0xdce8('0x3c')]({},_0x4e1c7f,_0x299473[_0xdce8('0x46')]);return db[_0xdce8('0x2a')]['find'](_0x4e1c7f)[_0xdce8('0x23')](handleEntityNotFound(_0x5acb3d,null))['then'](respondWithResult(_0x5acb3d,null))[_0xdce8('0x41')](handleError(_0x5acb3d,null));};exports['create']=function(_0x5519c0,_0x58faee){return db[_0xdce8('0x2a')][_0xdce8('0x47')](_0x5519c0[_0xdce8('0x48')],{})[_0xdce8('0x23')](respondWithResult(_0x58faee,0xc9))[_0xdce8('0x41')](handleError(_0x58faee,null));};exports[_0xdce8('0x22')]=function(_0x33bf28,_0x37ebb0){if(_0x33bf28['body']['id']){delete _0x33bf28[_0xdce8('0x48')]['id'];}return db[_0xdce8('0x2a')]['find']({'where':{'id':_0x33bf28[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x37ebb0,null))['then'](saveUpdates(_0x33bf28[_0xdce8('0x48')],null))[_0xdce8('0x23')](respondWithResult(_0x37ebb0,null))[_0xdce8('0x41')](handleError(_0x37ebb0,null));};exports[_0xdce8('0x24')]=function(_0x19d5e5,_0x484bbb){return db['JscriptySessionReport'][_0xdce8('0x49')]({'where':{'id':_0x19d5e5[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x484bbb,null))[_0xdce8('0x23')](removeEntity(_0x484bbb,null))[_0xdce8('0x41')](handleError(_0x484bbb,null));};exports[_0xdce8('0x4a')]=function(_0x33a007,_0x2cd7f4){return db[_0xdce8('0x2a')][_0xdce8('0x4a')]()['then'](respondWithResult(_0x2cd7f4,null))['catch'](handleError(_0x2cd7f4,null));};exports[_0xdce8('0x4b')]=function(_0x26ab8c,_0x2227a7,_0x314740){var _0x3f40a8={'raw':!![],'where':{}};var _0x4668f8={};var _0x611ebc={'count':0x0,'rows':[]};return db[_0xdce8('0x2a')][_0xdce8('0x4c')]({'where':{'id':_0x26ab8c[_0xdce8('0x43')]['id']}})[_0xdce8('0x23')](handleEntityNotFound(_0x2227a7,null))['then'](function(_0xc7b48b){if(_0xc7b48b){_0x4668f8[_0xdce8('0x2e')]=_['keys'](db[_0xdce8('0x4d')][_0xdce8('0x44')]);_0x4668f8[_0xdce8('0x30')]=_[_0xdce8('0x45')](_0x26ab8c[_0xdce8('0x30')]);_0x4668f8[_0xdce8('0x31')]=_['intersection'](_0x4668f8['model'],_0x4668f8[_0xdce8('0x30')]);_0x3f40a8[_0xdce8('0x34')]=_[_0xdce8('0x32')](_0x4668f8[_0xdce8('0x2e')],qs[_0xdce8('0x33')](_0x26ab8c[_0xdce8('0x30')]['fields']));_0x3f40a8['attributes']=_0x3f40a8[_0xdce8('0x34')][_0xdce8('0x35')]?_0x3f40a8[_0xdce8('0x34')]:_0x4668f8[_0xdce8('0x2e')];if(!_0x26ab8c['query'][_0xdce8('0x36')](_0xdce8('0x4e'))){_0x3f40a8[_0xdce8('0x1b')]=qs['limit'](_0x26ab8c[_0xdce8('0x30')][_0xdce8('0x1b')]);_0x3f40a8[_0xdce8('0x19')]=qs['offset'](_0x26ab8c[_0xdce8('0x30')]['offset']);}_0x3f40a8[_0xdce8('0x37')]=qs[_0xdce8('0x38')](_0x26ab8c['query'][_0xdce8('0x38')]);_0x3f40a8[_0xdce8('0x39')]=qs[_0xdce8('0x31')](_[_0xdce8('0x4f')](_0x26ab8c['query'],_0x4668f8[_0xdce8('0x31')]));_0x3f40a8['where'][_0xdce8('0x50')]=_0xc7b48b['id'];if(_0x26ab8c['query'][_0xdce8('0x3b')]){_0x3f40a8[_0xdce8('0x39')]=_[_0xdce8('0x3c')](_0x3f40a8[_0xdce8('0x39')],{'$or':_['map'](_0x3f40a8[_0xdce8('0x34')],function(_0x308de8){var _0x466be8={};_0x466be8[_0x308de8]={'$like':'%'+_0x26ab8c[_0xdce8('0x30')]['filter']+'%'};return _0x466be8;})});}_0x3f40a8=_[_0xdce8('0x3c')]({},_0x3f40a8,_0x26ab8c['options']);return db[_0xdce8('0x4d')]['count']({'where':_0x3f40a8['where']})['then'](function(_0x24396e){_0x611ebc[_0xdce8('0x1c')]=_0x24396e;if(_0x26ab8c[_0xdce8('0x30')][_0xdce8('0x3d')]){_0x3f40a8[_0xdce8('0x3e')]=[{'all':!![]}];}return db[_0xdce8('0x4d')][_0xdce8('0x3f')](_0x3f40a8);})[_0xdce8('0x23')](function(_0x5914){_0x611ebc[_0xdce8('0x40')]=_0x5914;return _0x611ebc;});}})['then'](respondWithFilteredResult(_0x2227a7,_0x3f40a8))[_0xdce8('0x41')](handleError(_0x2227a7,null));};
\ No newline at end of file
index afcec55..4400849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['path','../../config/environment','./jscriptySessionReport.attributes','exports','define','lodash','util','../../config/logger','moment','request-promise'];(function(_0x269094,_0x4701b3){var _0x10344f=function(_0x180a69){while(--_0x180a69){_0x269094['push'](_0x269094['shift']());}};_0x10344f(++_0x4701b3);}(_0xdc97,0x13b));var _0x7dc9=function(_0x56ed80,_0x2f8538){_0x56ed80=_0x56ed80-0x0;var _0x54e32f=_0xdc97[_0x56ed80];return _0x54e32f;};'use strict';var _=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var logger=require(_0x7dc9('0x2'))('api');var moment=require(_0x7dc9('0x3'));var BPromise=require('bluebird');var rp=require(_0x7dc9('0x4'));var fs=require('fs');var path=require(_0x7dc9('0x5'));var rimraf=require('rimraf');var config=require(_0x7dc9('0x6'));var attributes=require(_0x7dc9('0x7'));module[_0x7dc9('0x8')]=function(_0x3ba3ca,_0x589f02){return _0x3ba3ca[_0x7dc9('0x9')]('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x741c=['../../config/logger','api','moment','bluebird','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util'];(function(_0x27206e,_0x33ae01){var _0x48a9f2=function(_0x258909){while(--_0x258909){_0x27206e['push'](_0x27206e['shift']());}};_0x48a9f2(++_0x33ae01);}(_0x741c,0x196));var _0xc741=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x741c[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xc741('0x0'));var util=require(_0xc741('0x1'));var logger=require(_0xc741('0x2'))(_0xc741('0x3'));var moment=require(_0xc741('0x4'));var BPromise=require(_0xc741('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc741('0x6'));var config=require('../../config/environment');var attributes=require(_0xc741('0x7'));module[_0xc741('0x8')]=function(_0x3708ae,_0x133bc4){return _0x3708ae[_0xc741('0x9')](_0xc741('0xa'),attributes,{'tableName':_0xc741('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d167392..a145ff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptySessionReport,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0x4137,0xf8));var _0x7413=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x4137[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var moment=require(_0x7413('0x2'));var BPromise=require(_0x7413('0x3'));var rs=require(_0x7413('0x4'));var fs=require('fs');var Redis=require(_0x7413('0x5'));var db=require(_0x7413('0x6'))['db'];var utils=require(_0x7413('0x7'));var logger=require(_0x7413('0x8'))(_0x7413('0x9'));var config=require(_0x7413('0xa'));var jayson=require(_0x7413('0xb'));var client=jayson['client'][_0x7413('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x188d89,_0x5b39ac,_0x15af0d){return new BPromise(function(_0x5f4cd0,_0x3236ec){return client[_0x7413('0xd')](_0x188d89,_0x15af0d)['then'](function(_0x422bf5){logger[_0x7413('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x5b39ac,_0x7413('0xf'));logger[_0x7413('0x10')](_0x7413('0x11'),_0x5b39ac,_0x7413('0xf'),JSON[_0x7413('0x12')](_0x422bf5));if(_0x422bf5['error']){if(_0x422bf5[_0x7413('0x13')][_0x7413('0x14')]===0x1f4){logger['error'](_0x7413('0x15'),_0x5b39ac,_0x422bf5[_0x7413('0x13')][_0x7413('0x16')]);return _0x3236ec(_0x422bf5['error']['message']);}logger['error'](_0x7413('0x15'),_0x5b39ac,_0x422bf5[_0x7413('0x13')]['message']);return _0x5f4cd0(_0x422bf5[_0x7413('0x13')][_0x7413('0x16')]);}else{logger['info'](_0x7413('0x15'),_0x5b39ac,'request\x20sent');_0x5f4cd0(_0x422bf5['result'][_0x7413('0x16')]);}})['catch'](function(_0x195c72){logger['error'](_0x7413('0x15'),_0x5b39ac,_0x195c72);_0x3236ec(_0x195c72);});});}
\ No newline at end of file
+var _0x7096=['code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x593752,_0xfc3827){var _0x4612be=function(_0x2d64c6){while(--_0x2d64c6){_0x593752['push'](_0x593752['shift']());}};_0x4612be(++_0xfc3827);}(_0x7096,0x10c));var _0x6709=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x7096[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var moment=require('moment');var BPromise=require(_0x6709('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var utils=require(_0x6709('0x4'));var logger=require(_0x6709('0x5'))(_0x6709('0x6'));var config=require(_0x6709('0x7'));var jayson=require(_0x6709('0x8'));var client=jayson[_0x6709('0x9')][_0x6709('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e2223,_0x11ad23,_0x985814){return new BPromise(function(_0x30147f,_0x513ab6){return client['request'](_0x3e2223,_0x985814)[_0x6709('0xb')](function(_0x2d8c0b){logger[_0x6709('0xc')](_0x6709('0xd'),_0x11ad23,_0x6709('0xe'));logger[_0x6709('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x11ad23,'request\x20sent',JSON[_0x6709('0x10')](_0x2d8c0b));if(_0x2d8c0b[_0x6709('0x11')]){if(_0x2d8c0b[_0x6709('0x11')][_0x6709('0x12')]===0x1f4){logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')][_0x6709('0x13')]);return _0x513ab6(_0x2d8c0b['error'][_0x6709('0x13')]);}logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')]['message']);return _0x30147f(_0x2d8c0b[_0x6709('0x11')]['message']);}else{logger[_0x6709('0xc')]('JscriptySessionReport,\x20%s,\x20%s',_0x11ad23,_0x6709('0xe'));_0x30147f(_0x2d8c0b[_0x6709('0x14')][_0x6709('0x13')]);}})[_0x6709('0x15')](function(_0x4cab30){logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x11ad23,_0x4cab30);_0x513ab6(_0x4cab30);});});}
\ No newline at end of file
index 2c5d719..b167003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5045=['../../components/auth/service','./license.controller','get','index','update','/download_log_file','downloadLogFile','exports','multer','path','connect-timeout','express','Router'];(function(_0x1df110,_0x2cab9e){var _0x2351c9=function(_0x67d7e8){while(--_0x67d7e8){_0x1df110['push'](_0x1df110['shift']());}};_0x2351c9(++_0x2cab9e);}(_0x5045,0x97));var _0x5504=function(_0x131709,_0x95ce4a){_0x131709=_0x131709-0x0;var _0x401323=_0x5045[_0x131709];return _0x401323;};'use strict';var multer=require(_0x5504('0x0'));var util=require('util');var path=require(_0x5504('0x1'));var timeout=require(_0x5504('0x2'));var express=require(_0x5504('0x3'));var router=express[_0x5504('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5504('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5504('0x6'));router[_0x5504('0x7')]('/',controller[_0x5504('0x8')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x5504('0x9')]);router[_0x5504('0x7')](_0x5504('0xa'),auth['isAuthenticated'](),controller[_0x5504('0xb')]);module[_0x5504('0xc')]=router;
\ No newline at end of file
+var _0xf632=['/:id','isAuthenticated','update','/download_log_file','downloadLogFile','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./license.controller','get','index','put'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xf632,0xd2));var _0x2f63=function(_0x22c6b6,_0x4be83d){_0x22c6b6=_0x22c6b6-0x0;var _0x3fca16=_0xf632[_0x22c6b6];return _0x3fca16;};'use strict';var multer=require('multer');var util=require(_0x2f63('0x0'));var path=require(_0x2f63('0x1'));var timeout=require(_0x2f63('0x2'));var express=require(_0x2f63('0x3'));var router=express[_0x2f63('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2f63('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2f63('0x6'));var controller=require(_0x2f63('0x7'));router[_0x2f63('0x8')]('/',controller[_0x2f63('0x9')]);router[_0x2f63('0xa')](_0x2f63('0xb'),auth[_0x2f63('0xc')](),controller[_0x2f63('0xd')]);router[_0x2f63('0x8')](_0x2f63('0xe'),auth['isAuthenticated'](),controller[_0x2f63('0xf')]);module[_0x2f63('0x10')]=router;
\ No newline at end of file
index 32c1358..fa2b1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbe9=['TEXT','STRING','INTEGER','sequelize','exports'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xdbe9,0x1ed));var _0x9dbe=function(_0x253955,_0x4193bf){_0x253955=_0x253955-0x0;var _0x319b34=_0xdbe9[_0x253955];return _0x319b34;};'use strict';var Sequelize=require(_0x9dbe('0x0'));module[_0x9dbe('0x1')]={'license':{'type':Sequelize[_0x9dbe('0x2')]},'data1':{'type':Sequelize[_0x9dbe('0x3')]},'data2':{'type':Sequelize[_0x9dbe('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x9dbe('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa27b=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x1bee9c,_0x326740){var _0x5f57f1=function(_0x2fb8e7){while(--_0x2fb8e7){_0x1bee9c['push'](_0x1bee9c['shift']());}};_0x5f57f1(++_0x326740);}(_0xa27b,0xce));var _0xba27=function(_0x2cde74,_0x55cf68){_0x2cde74=_0x2cde74-0x0;var _0x39ee49=_0xa27b[_0x2cde74];return _0x39ee49;};'use strict';var Sequelize=require(_0xba27('0x0'));module[_0xba27('0x1')]={'license':{'type':Sequelize[_0xba27('0x2')]},'data1':{'type':Sequelize[_0xba27('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xba27('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index fa79a38..ae97f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c07=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','error','name','send','index','model','keys','License','query','filters','intersection','attributes','fields','length','merge','options','getLicense','body','find','params','get','checkLicense','key','demo','catch','downloadLogFile','license-info.log','/var','log','xcally','setHeader','attachment;\x20filename=','Content-Type','text/plain','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x170fd2,_0x4c5719){var _0x3f5d9f=function(_0x3ca69f){while(--_0x3ca69f){_0x170fd2['push'](_0x170fd2['shift']());}};_0x3f5d9f(++_0x4c5719);}(_0x6c07,0x7f));var _0x76c0=function(_0x50441a,_0x539f9d){_0x50441a=_0x50441a-0x0;var _0x1bc24c=_0x6c07[_0x50441a];return _0x1bc24c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x76c0('0x0'));var zipdir=require(_0x76c0('0x1'));var jsonpatch=require(_0x76c0('0x2'));var rp=require(_0x76c0('0x3'));var moment=require(_0x76c0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76c0('0x5'));var util=require('util');var path=require(_0x76c0('0x6'));var sox=require(_0x76c0('0x7'));var csv=require(_0x76c0('0x8'));var ejs=require(_0x76c0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76c0('0xa'));var squel=require(_0x76c0('0xb'));var crypto=require(_0x76c0('0xc'));var jsforce=require(_0x76c0('0xd'));var deskjs=require(_0x76c0('0xe'));var toCsv=require(_0x76c0('0x8'));var querystring=require('querystring');var Papa=require(_0x76c0('0xf'));var Redis=require(_0x76c0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x76c0('0x11'));var as=require(_0x76c0('0x12'));var hardwareService=require(_0x76c0('0x13'));var logger=require('../../config/logger')(_0x76c0('0x14'));var utils=require(_0x76c0('0x15'));var config=require(_0x76c0('0x16'));var licenseUtil=require(_0x76c0('0x17'));var db=require(_0x76c0('0x18'))['db'];function respondWithStatusCode(_0x46bf6f,_0x5212bc){_0x5212bc=_0x5212bc||0xcc;return function(_0x5bd688){if(_0x5bd688){return _0x46bf6f[_0x76c0('0x19')](_0x5212bc);}return _0x46bf6f[_0x76c0('0x1a')](_0x5212bc)[_0x76c0('0x1b')]();};}function respondWithResult(_0x541dd8,_0x2a10a2){_0x2a10a2=_0x2a10a2||0xc8;return function(_0x2a9a50){if(_0x2a9a50){return _0x541dd8[_0x76c0('0x1a')](_0x2a10a2)['json'](_0x2a9a50);}};}function respondWithFilteredResult(_0x5f233a,_0x3f8b96){return function(_0x124402){if(_0x124402){var _0xcd3738=typeof _0x3f8b96[_0x76c0('0x1c')]==='undefined'&&typeof _0x3f8b96[_0x76c0('0x1d')]===_0x76c0('0x1e');var _0xaa44e5=_0x124402[_0x76c0('0x1f')];var _0x5acfc9=_0xcd3738?0x0:_0x3f8b96[_0x76c0('0x1c')];var _0x19e5ea=_0xcd3738?_0x124402[_0x76c0('0x1f')]:_0x3f8b96[_0x76c0('0x1c')]+_0x3f8b96[_0x76c0('0x1d')];var _0x22bbbd;if(_0x19e5ea>=_0xaa44e5){_0x19e5ea=_0xaa44e5;_0x22bbbd=0xc8;}else{_0x22bbbd=0xce;}_0x5f233a[_0x76c0('0x1a')](_0x22bbbd);return _0x5f233a[_0x76c0('0x20')](_0x76c0('0x21'),_0x5acfc9+'-'+_0x19e5ea+'/'+_0xaa44e5)[_0x76c0('0x22')](_0x124402);}return null;};}function patchUpdates(_0x31fc32){return function(_0xb637e6){try{jsonpatch[_0x76c0('0x23')](_0xb637e6,_0x31fc32,!![]);}catch(_0x2ce2f6){return BPromise[_0x76c0('0x24')](_0x2ce2f6);}return _0xb637e6['save']();};}function saveUpdates(_0x2b5794,_0x5cc991){return function(_0x5e2025){if(_0x5e2025){return _0x5e2025[_0x76c0('0x25')](_0x2b5794)[_0x76c0('0x26')](function(_0x4faa9a){return _0x4faa9a;});}return null;};}function removeEntity(_0x2f172a,_0x5eb49a){return function(_0x1515bc){if(_0x1515bc){return _0x1515bc['destroy']()[_0x76c0('0x26')](function(){_0x2f172a[_0x76c0('0x1a')](0xcc)[_0x76c0('0x1b')]();});}};}function handleEntityNotFound(_0x45f1b5,_0x3ca67e){return function(_0x4e019d){if(!_0x4e019d){_0x45f1b5[_0x76c0('0x19')](0x194);}return _0x4e019d;};}function handleError(_0x573fbd,_0x25d30a){_0x25d30a=_0x25d30a||0x1f4;return function(_0x13d472){logger[_0x76c0('0x27')](_0x13d472['stack']);if(_0x13d472[_0x76c0('0x28')]){delete _0x13d472['name'];}_0x573fbd[_0x76c0('0x1a')](_0x25d30a)[_0x76c0('0x29')](_0x13d472);};}var utilLicense=require(_0x76c0('0x17'));exports[_0x76c0('0x2a')]=function(_0x51f81d,_0x409fbf){var _0x43a0dc={'raw':!![],'where':{'id':0x1}},_0x1f2696={};_0x1f2696[_0x76c0('0x2b')]=_[_0x76c0('0x2c')](db[_0x76c0('0x2d')]['rawAttributes']);_0x1f2696['query']=_[_0x76c0('0x2c')](_0x51f81d[_0x76c0('0x2e')]);_0x1f2696[_0x76c0('0x2f')]=_[_0x76c0('0x30')](_0x1f2696[_0x76c0('0x2b')],_0x1f2696[_0x76c0('0x2e')]);_0x43a0dc[_0x76c0('0x31')]=_[_0x76c0('0x30')](_0x1f2696[_0x76c0('0x2b')],qs[_0x76c0('0x32')](_0x51f81d[_0x76c0('0x2e')][_0x76c0('0x32')]));_0x43a0dc[_0x76c0('0x31')]=_0x43a0dc['attributes'][_0x76c0('0x33')]?_0x43a0dc[_0x76c0('0x31')]:_0x1f2696[_0x76c0('0x2b')];_0x43a0dc=_[_0x76c0('0x34')]({},_0x43a0dc,_0x51f81d[_0x76c0('0x35')]);return utilLicense[_0x76c0('0x36')](_0x43a0dc)[_0x76c0('0x26')](respondWithResult(_0x409fbf,null))['catch'](handleError(_0x409fbf,null));};exports[_0x76c0('0x25')]=function(_0x3518e4,_0x277c4b){if(_0x3518e4[_0x76c0('0x37')]['id']){delete _0x3518e4[_0x76c0('0x37')]['id'];}return db[_0x76c0('0x2d')][_0x76c0('0x38')]({'where':{'id':_0x3518e4[_0x76c0('0x39')]['id']}})[_0x76c0('0x26')](handleEntityNotFound(_0x277c4b,null))[_0x76c0('0x26')](function(_0x40e767){var _0xab43ab=_0x40e767[_0x76c0('0x3a')]({'plain':!![]});return utilLicense[_0x76c0('0x3b')](_0xab43ab,_0x3518e4[_0x76c0('0x37')][_0x76c0('0x3c')]);})['then'](function(_0x2631b2){if(!_0x2631b2[_0x76c0('0x3d')]){return saveUpdates(_0x3518e4[_0x76c0('0x37')],null);}return _0x2631b2;})['then'](respondWithResult(_0x277c4b,null))[_0x76c0('0x3e')](handleError(_0x277c4b,null));};exports[_0x76c0('0x3f')]=function(_0x4b4fa9,_0x17499b){var _0x46d649=_0x76c0('0x40');var _0x3c0e0f=path['join'](_0x76c0('0x41'),_0x76c0('0x42'),_0x76c0('0x43'),_0x46d649);_0x17499b[_0x76c0('0x44')]('Content-disposition',_0x76c0('0x45')+_0x46d649);_0x17499b[_0x76c0('0x20')](_0x76c0('0x46'),_0x76c0('0x47'));_0x17499b[_0x76c0('0x48')](_0x3c0e0f);};
\ No newline at end of file
+var _0xb65e=['sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','../../config/license/util','index','License','rawAttributes','query','keys','filters','intersection','model','fields','attributes','length','merge','catch','body','find','params','get','checkLicense','demo','downloadLogFile','join','/var','log','setHeader','attachment;\x20filename=','set','Content-Type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x42d6e,_0x11bd86){var _0x5a5b25=function(_0x4d1cb3){while(--_0x4d1cb3){_0x42d6e['push'](_0x42d6e['shift']());}};_0x5a5b25(++_0x11bd86);}(_0xb65e,0x15e));var _0xeb65=function(_0x34820f,_0x5cf381){_0x34820f=_0x34820f-0x0;var _0x1539c4=_0xb65e[_0x34820f];return _0x1539c4;};'use strict';var emlformat=require(_0xeb65('0x0'));var rimraf=require(_0xeb65('0x1'));var zipdir=require(_0xeb65('0x2'));var jsonpatch=require(_0xeb65('0x3'));var rp=require(_0xeb65('0x4'));var moment=require(_0xeb65('0x5'));var BPromise=require(_0xeb65('0x6'));var Mustache=require(_0xeb65('0x7'));var util=require(_0xeb65('0x8'));var path=require(_0xeb65('0x9'));var sox=require(_0xeb65('0xa'));var csv=require('to-csv');var ejs=require(_0xeb65('0xb'));var fs=require('fs');var fs_extra=require(_0xeb65('0xc'));var _=require(_0xeb65('0xd'));var squel=require('squel');var crypto=require(_0xeb65('0xe'));var jsforce=require(_0xeb65('0xf'));var deskjs=require(_0xeb65('0x10'));var toCsv=require(_0xeb65('0x11'));var querystring=require(_0xeb65('0x12'));var Papa=require(_0xeb65('0x13'));var Redis=require('ioredis');var authService=require(_0xeb65('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xeb65('0x15'));var hardwareService=require(_0xeb65('0x16'));var logger=require(_0xeb65('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xeb65('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x277e4e,_0x4736c9){_0x4736c9=_0x4736c9||0xcc;return function(_0xac39c1){if(_0xac39c1){return _0x277e4e[_0xeb65('0x19')](_0x4736c9);}return _0x277e4e['status'](_0x4736c9)[_0xeb65('0x1a')]();};}function respondWithResult(_0xbbcc98,_0x2f0820){_0x2f0820=_0x2f0820||0xc8;return function(_0x11b150){if(_0x11b150){return _0xbbcc98[_0xeb65('0x1b')](_0x2f0820)[_0xeb65('0x1c')](_0x11b150);}};}function respondWithFilteredResult(_0x2e11fd,_0x3d32f){return function(_0x58949a){if(_0x58949a){var _0x13d4e5=typeof _0x3d32f[_0xeb65('0x1d')]===_0xeb65('0x1e')&&typeof _0x3d32f[_0xeb65('0x1f')]===_0xeb65('0x1e');var _0x35ebb2=_0x58949a['count'];var _0xa8ad63=_0x13d4e5?0x0:_0x3d32f[_0xeb65('0x1d')];var _0x5b0fc3=_0x13d4e5?_0x58949a[_0xeb65('0x20')]:_0x3d32f[_0xeb65('0x1d')]+_0x3d32f['limit'];var _0xc45c82;if(_0x5b0fc3>=_0x35ebb2){_0x5b0fc3=_0x35ebb2;_0xc45c82=0xc8;}else{_0xc45c82=0xce;}_0x2e11fd['status'](_0xc45c82);return _0x2e11fd['set'](_0xeb65('0x21'),_0xa8ad63+'-'+_0x5b0fc3+'/'+_0x35ebb2)[_0xeb65('0x1c')](_0x58949a);}return null;};}function patchUpdates(_0x555d60){return function(_0x7092ac){try{jsonpatch[_0xeb65('0x22')](_0x7092ac,_0x555d60,!![]);}catch(_0x227675){return BPromise[_0xeb65('0x23')](_0x227675);}return _0x7092ac[_0xeb65('0x24')]();};}function saveUpdates(_0x1bb4a4,_0x1e9e07){return function(_0x49446a){if(_0x49446a){return _0x49446a[_0xeb65('0x25')](_0x1bb4a4)[_0xeb65('0x26')](function(_0x3150d0){return _0x3150d0;});}return null;};}function removeEntity(_0xcb8f81,_0x524073){return function(_0x5959e0){if(_0x5959e0){return _0x5959e0[_0xeb65('0x27')]()['then'](function(){_0xcb8f81[_0xeb65('0x1b')](0xcc)[_0xeb65('0x1a')]();});}};}function handleEntityNotFound(_0x5c886d,_0x2e050c){return function(_0x163778){if(!_0x163778){_0x5c886d['sendStatus'](0x194);}return _0x163778;};}function handleError(_0x40bbb2,_0x16b3ed){_0x16b3ed=_0x16b3ed||0x1f4;return function(_0x1cefb2){logger[_0xeb65('0x28')](_0x1cefb2['stack']);if(_0x1cefb2[_0xeb65('0x29')]){delete _0x1cefb2[_0xeb65('0x29')];}_0x40bbb2[_0xeb65('0x1b')](_0x16b3ed)[_0xeb65('0x2a')](_0x1cefb2);};}var utilLicense=require(_0xeb65('0x2b'));exports[_0xeb65('0x2c')]=function(_0x1e1b35,_0x2041c9){var _0x586c9a={'raw':!![],'where':{'id':0x1}},_0x478f38={};_0x478f38['model']=_['keys'](db[_0xeb65('0x2d')][_0xeb65('0x2e')]);_0x478f38[_0xeb65('0x2f')]=_[_0xeb65('0x30')](_0x1e1b35[_0xeb65('0x2f')]);_0x478f38[_0xeb65('0x31')]=_[_0xeb65('0x32')](_0x478f38[_0xeb65('0x33')],_0x478f38[_0xeb65('0x2f')]);_0x586c9a['attributes']=_[_0xeb65('0x32')](_0x478f38[_0xeb65('0x33')],qs[_0xeb65('0x34')](_0x1e1b35[_0xeb65('0x2f')][_0xeb65('0x34')]));_0x586c9a[_0xeb65('0x35')]=_0x586c9a[_0xeb65('0x35')][_0xeb65('0x36')]?_0x586c9a['attributes']:_0x478f38[_0xeb65('0x33')];_0x586c9a=_[_0xeb65('0x37')]({},_0x586c9a,_0x1e1b35['options']);return utilLicense['getLicense'](_0x586c9a)['then'](respondWithResult(_0x2041c9,null))[_0xeb65('0x38')](handleError(_0x2041c9,null));};exports[_0xeb65('0x25')]=function(_0x1aa6f8,_0x41b55e){if(_0x1aa6f8[_0xeb65('0x39')]['id']){delete _0x1aa6f8['body']['id'];}return db[_0xeb65('0x2d')][_0xeb65('0x3a')]({'where':{'id':_0x1aa6f8[_0xeb65('0x3b')]['id']}})[_0xeb65('0x26')](handleEntityNotFound(_0x41b55e,null))[_0xeb65('0x26')](function(_0x2be7d8){var _0x579c2b=_0x2be7d8[_0xeb65('0x3c')]({'plain':!![]});return utilLicense[_0xeb65('0x3d')](_0x579c2b,_0x1aa6f8['body']['key']);})[_0xeb65('0x26')](function(_0x4148f1){if(!_0x4148f1[_0xeb65('0x3e')]){return saveUpdates(_0x1aa6f8[_0xeb65('0x39')],null);}return _0x4148f1;})[_0xeb65('0x26')](respondWithResult(_0x41b55e,null))['catch'](handleError(_0x41b55e,null));};exports[_0xeb65('0x3f')]=function(_0x30301b,_0xa40f53){var _0x46568a='license-info.log';var _0x4fbfa9=path[_0xeb65('0x40')](_0xeb65('0x41'),_0xeb65('0x42'),'xcally',_0x46568a);_0xa40f53[_0xeb65('0x43')]('Content-disposition',_0xeb65('0x44')+_0x46568a);_0xa40f53[_0xeb65('0x45')](_0xeb65('0x46'),'text/plain');_0xa40f53[_0xeb65('0x47')](_0x4fbfa9);};
\ No newline at end of file
index ff2aa5c..43c5d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d7=['lodash','util','api','bluebird','path','../../config/environment','./license.attributes','exports','License','license'];(function(_0x448f8,_0x2aa1d7){var _0xa73126=function(_0x1fcafa){while(--_0x1fcafa){_0x448f8['push'](_0x448f8['shift']());}};_0xa73126(++_0x2aa1d7);}(_0x95d7,0xf0));var _0x795d=function(_0x5fa9e3,_0x578880){_0x5fa9e3=_0x5fa9e3-0x0;var _0x1c4728=_0x95d7[_0x5fa9e3];return _0x1c4728;};'use strict';var _=require(_0x795d('0x0'));var util=require(_0x795d('0x1'));var logger=require('../../config/logger')(_0x795d('0x2'));var moment=require('moment');var BPromise=require(_0x795d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x795d('0x4'));var rimraf=require('rimraf');var config=require(_0x795d('0x5'));var attributes=require(_0x795d('0x6'));module[_0x795d('0x7')]=function(_0x246746,_0x48c34b){return _0x246746['define'](_0x795d('0x8'),attributes,{'tableName':_0x795d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2815=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./license.attributes','exports','define','License','lodash'];(function(_0x33f96,_0x7ec9c6){var _0x130652=function(_0x6ff938){while(--_0x6ff938){_0x33f96['push'](_0x33f96['shift']());}};_0x130652(++_0x7ec9c6);}(_0x2815,0x17f));var _0x5281=function(_0x7c70fd,_0x17a993){_0x7c70fd=_0x7c70fd-0x0;var _0x8e75a6=_0x2815[_0x7c70fd];return _0x8e75a6;};'use strict';var _=require(_0x5281('0x0'));var util=require(_0x5281('0x1'));var logger=require(_0x5281('0x2'))(_0x5281('0x3'));var moment=require(_0x5281('0x4'));var BPromise=require('bluebird');var rp=require(_0x5281('0x5'));var fs=require('fs');var path=require(_0x5281('0x6'));var rimraf=require('rimraf');var config=require(_0x5281('0x7'));var attributes=require(_0x5281('0x8'));module[_0x5281('0x9')]=function(_0x28ecde,_0x1c89bf){return _0x28ecde[_0x5281('0xa')](_0x5281('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4132829..e9eb357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6398=['License,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','info'];(function(_0x584291,_0x24b5b3){var _0x4e7d08=function(_0x59e0b1){while(--_0x59e0b1){_0x584291['push'](_0x584291['shift']());}};_0x4e7d08(++_0x24b5b3);}(_0x6398,0x98));var _0x8639=function(_0x345705,_0x2829c1){_0x345705=_0x345705-0x0;var _0x22c250=_0x6398[_0x345705];return _0x22c250;};'use strict';var _=require(_0x8639('0x0'));var util=require('util');var moment=require(_0x8639('0x1'));var BPromise=require(_0x8639('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8639('0x3'))['db'];var utils=require(_0x8639('0x4'));var logger=require('../../config/logger')(_0x8639('0x5'));var config=require(_0x8639('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8639('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x559d84,_0x5251cd,_0x40cfde){return new BPromise(function(_0x1f399e,_0x14bc6b){return client[_0x8639('0x8')](_0x559d84,_0x40cfde)['then'](function(_0x22261e){logger[_0x8639('0x9')](_0x8639('0xa'),_0x5251cd,_0x8639('0xb'));logger[_0x8639('0xc')]('License,\x20%s,\x20%s,\x20%s',_0x5251cd,_0x8639('0xb'),JSON[_0x8639('0xd')](_0x22261e));if(_0x22261e[_0x8639('0xe')]){if(_0x22261e[_0x8639('0xe')][_0x8639('0xf')]===0x1f4){logger[_0x8639('0xe')]('License,\x20%s,\x20%s',_0x5251cd,_0x22261e[_0x8639('0xe')][_0x8639('0x10')]);return _0x14bc6b(_0x22261e[_0x8639('0xe')][_0x8639('0x10')]);}logger[_0x8639('0xe')](_0x8639('0xa'),_0x5251cd,_0x22261e[_0x8639('0xe')][_0x8639('0x10')]);return _0x1f399e(_0x22261e[_0x8639('0xe')][_0x8639('0x10')]);}else{logger[_0x8639('0x9')](_0x8639('0xa'),_0x5251cd,_0x8639('0xb'));_0x1f399e(_0x22261e['result'][_0x8639('0x10')]);}})[_0x8639('0x11')](function(_0x5b926a){logger[_0x8639('0xe')]('License,\x20%s,\x20%s',_0x5251cd,_0x5b926a);_0x14bc6b(_0x5b926a);});});}
\ No newline at end of file
+var _0x02ca=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','then','info','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','License,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x34c20d,_0x3f602b){var _0xebb223=function(_0x1e6a79){while(--_0x1e6a79){_0x34c20d['push'](_0x34c20d['shift']());}};_0xebb223(++_0x3f602b);}(_0x02ca,0x194));var _0xa02c=function(_0x3b1d16,_0x13f7ff){_0x3b1d16=_0x3b1d16-0x0;var _0x3df7db=_0x02ca[_0x3b1d16];return _0x3df7db;};'use strict';var _=require(_0xa02c('0x0'));var util=require(_0xa02c('0x1'));var moment=require(_0xa02c('0x2'));var BPromise=require(_0xa02c('0x3'));var rs=require(_0xa02c('0x4'));var fs=require('fs');var Redis=require(_0xa02c('0x5'));var db=require(_0xa02c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa02c('0x7'))(_0xa02c('0x8'));var config=require('../../config/environment');var jayson=require(_0xa02c('0x9'));var client=jayson[_0xa02c('0xa')][_0xa02c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4bb1f9,_0x199e5b,_0x2db21f){return new BPromise(function(_0x2f6d4a,_0x275869){return client['request'](_0x4bb1f9,_0x2db21f)[_0xa02c('0xc')](function(_0x3ec84e){logger[_0xa02c('0xd')]('License,\x20%s,\x20%s',_0x199e5b,'request\x20sent');logger[_0xa02c('0xe')](_0xa02c('0xf'),_0x199e5b,_0xa02c('0x10'),JSON[_0xa02c('0x11')](_0x3ec84e));if(_0x3ec84e[_0xa02c('0x12')]){if(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x13')]===0x1f4){logger[_0xa02c('0x12')](_0xa02c('0x14'),_0x199e5b,_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);return _0x275869(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);}logger['error'](_0xa02c('0x14'),_0x199e5b,_0x3ec84e['error'][_0xa02c('0x15')]);return _0x2f6d4a(_0x3ec84e[_0xa02c('0x12')][_0xa02c('0x15')]);}else{logger[_0xa02c('0xd')]('License,\x20%s,\x20%s',_0x199e5b,'request\x20sent');_0x2f6d4a(_0x3ec84e[_0xa02c('0x16')][_0xa02c('0x15')]);}})[_0xa02c('0x17')](function(_0x1b6ec7){logger[_0xa02c('0x12')](_0xa02c('0x14'),_0x199e5b,_0x1b6ec7);_0x275869(_0x1b6ec7);});});}
\ No newline at end of file
index 95881c7..a283927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263e=['/:id/users','post','/:id/dispositions','addAnswer','create','addImap','/:id/out_servers','addSmtp','addApplications','/:id/send','send','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp'];(function(_0x2fed0d,_0xdac9d0){var _0x1ad00f=function(_0xa6096f){while(--_0xa6096f){_0x2fed0d['push'](_0x2fed0d['shift']());}};_0x1ad00f(++_0xdac9d0);}(_0x263e,0x72));var _0xe263=function(_0x57db49,_0x288094){_0x57db49=_0x57db49-0x0;var _0xd0636f=_0x263e[_0x57db49];return _0xd0636f;};'use strict';var multer=require(_0xe263('0x0'));var util=require(_0xe263('0x1'));var path=require(_0xe263('0x2'));var timeout=require(_0xe263('0x3'));var express=require(_0xe263('0x4'));var router=express[_0xe263('0x5')]();var fs_extra=require(_0xe263('0x6'));var auth=require(_0xe263('0x7'));var interaction=require(_0xe263('0x8'));var config=require(_0xe263('0x9'));var controller=require('./mailAccount.controller');router[_0xe263('0xa')]('/',auth[_0xe263('0xb')](),controller[_0xe263('0xc')]);router[_0xe263('0xa')](_0xe263('0xd'),auth[_0xe263('0xb')](),controller[_0xe263('0xe')]);router[_0xe263('0xa')](_0xe263('0xf'),auth[_0xe263('0xb')](),controller['show']);router[_0xe263('0xa')]('/:id/dispositions',auth[_0xe263('0xb')](),controller[_0xe263('0x10')]);router[_0xe263('0xa')](_0xe263('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0xe263('0x12'),auth[_0xe263('0xb')](),controller[_0xe263('0x13')]);router[_0xe263('0xa')]('/:id/out_servers',auth[_0xe263('0xb')](),controller['getSmtp']);router[_0xe263('0xa')](_0xe263('0x14'),auth[_0xe263('0xb')](),controller['getInteractions']);router[_0xe263('0xa')](_0xe263('0x15'),auth[_0xe263('0xb')](),controller[_0xe263('0x16')]);router[_0xe263('0xa')](_0xe263('0x17'),auth[_0xe263('0xb')](),controller[_0xe263('0x18')]);router[_0xe263('0xa')](_0xe263('0x19'),auth['isAuthenticated'](),controller[_0xe263('0x1a')]);router[_0xe263('0xa')](_0xe263('0x1b'),auth[_0xe263('0xb')](),controller['getAgents']);router[_0xe263('0x1c')](_0xe263('0x1d'),auth[_0xe263('0xb')](),controller['addDisposition']);router[_0xe263('0x1c')]('/:id/canned_answers',auth[_0xe263('0xb')](),controller[_0xe263('0x1e')]);router[_0xe263('0x1c')]('/',auth[_0xe263('0xb')](),controller[_0xe263('0x1f')]);router['post'](_0xe263('0x12'),auth['isAuthenticated'](),controller[_0xe263('0x20')]);router[_0xe263('0x1c')](_0xe263('0x21'),auth[_0xe263('0xb')](),controller[_0xe263('0x22')]);router[_0xe263('0x1c')](_0xe263('0x14'),auth[_0xe263('0xb')](),controller['addInteraction']);router['post'](_0xe263('0x15'),auth[_0xe263('0xb')](),controller[_0xe263('0x23')]);router['post'](_0xe263('0x24'),auth['isAuthenticated'](),controller[_0xe263('0x25')]);router[_0xe263('0x1c')](_0xe263('0x1b'),auth[_0xe263('0xb')](),controller['addAgents']);router[_0xe263('0x26')](_0xe263('0xf'),auth[_0xe263('0xb')](),controller[_0xe263('0x27')]);router[_0xe263('0x28')](_0xe263('0x1d'),auth[_0xe263('0xb')](),controller[_0xe263('0x29')]);router[_0xe263('0x28')](_0xe263('0x11'),auth[_0xe263('0xb')](),controller[_0xe263('0x2a')]);router[_0xe263('0x28')](_0xe263('0x12'),auth['isAuthenticated'](),controller[_0xe263('0x2b')]);router[_0xe263('0x28')]('/:id/out_servers',auth[_0xe263('0xb')](),controller[_0xe263('0x2c')]);router[_0xe263('0x28')](_0xe263('0xf'),auth[_0xe263('0xb')](),controller['destroy']);router[_0xe263('0x28')]('/:id/users',auth[_0xe263('0xb')](),controller[_0xe263('0x2d')]);module[_0xe263('0x2e')]=router;
\ No newline at end of file
+var _0x80e7=['getImap','getSmtp','/:id/interactions','getInteractions','getApplications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','/:id/out_servers','addSmtp','addInteraction','addApplications','/:id/send','addAgents','put','update','delete','removeAnswers','removeImap','removeSmtp','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers'];(function(_0x51d26e,_0x5bc3ae){var _0x10c10a=function(_0x21a675){while(--_0x21a675){_0x51d26e['push'](_0x51d26e['shift']());}};_0x10c10a(++_0x5bc3ae);}(_0x80e7,0x75));var _0x780e=function(_0x1b1cec,_0x529fe2){_0x1b1cec=_0x1b1cec-0x0;var _0x52c256=_0x80e7[_0x1b1cec];return _0x52c256;};'use strict';var multer=require(_0x780e('0x0'));var util=require(_0x780e('0x1'));var path=require(_0x780e('0x2'));var timeout=require(_0x780e('0x3'));var express=require(_0x780e('0x4'));var router=express[_0x780e('0x5')]();var fs_extra=require(_0x780e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x780e('0x7'));router[_0x780e('0x8')]('/',auth[_0x780e('0x9')](),controller['index']);router[_0x780e('0x8')](_0x780e('0xa'),auth[_0x780e('0x9')](),controller[_0x780e('0xb')]);router[_0x780e('0x8')](_0x780e('0xc'),auth['isAuthenticated'](),controller[_0x780e('0xd')]);router[_0x780e('0x8')](_0x780e('0xe'),auth[_0x780e('0x9')](),controller[_0x780e('0xf')]);router[_0x780e('0x8')](_0x780e('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x780e('0x8')](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x12')]);router[_0x780e('0x8')]('/:id/out_servers',auth[_0x780e('0x9')](),controller[_0x780e('0x13')]);router[_0x780e('0x8')](_0x780e('0x14'),auth['isAuthenticated'](),controller[_0x780e('0x15')]);router[_0x780e('0x8')]('/:id/applications',auth[_0x780e('0x9')](),controller[_0x780e('0x16')]);router[_0x780e('0x8')](_0x780e('0x17'),auth['isAuthenticated'](),controller[_0x780e('0x18')]);router['get']('/:id/verify',auth[_0x780e('0x9')](),controller['verifySmtp']);router[_0x780e('0x8')](_0x780e('0x19'),auth[_0x780e('0x9')](),controller[_0x780e('0x1a')]);router[_0x780e('0x1b')](_0x780e('0xe'),auth['isAuthenticated'](),controller[_0x780e('0x1c')]);router[_0x780e('0x1b')](_0x780e('0x10'),auth['isAuthenticated'](),controller[_0x780e('0x1d')]);router[_0x780e('0x1b')]('/',auth[_0x780e('0x9')](),controller[_0x780e('0x1e')]);router['post'](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x1f')]);router[_0x780e('0x1b')](_0x780e('0x20'),auth[_0x780e('0x9')](),controller[_0x780e('0x21')]);router[_0x780e('0x1b')](_0x780e('0x14'),auth['isAuthenticated'](),controller[_0x780e('0x22')]);router[_0x780e('0x1b')]('/:id/applications',auth[_0x780e('0x9')](),controller[_0x780e('0x23')]);router[_0x780e('0x1b')](_0x780e('0x24'),auth['isAuthenticated'](),controller['send']);router[_0x780e('0x1b')](_0x780e('0x19'),auth[_0x780e('0x9')](),controller[_0x780e('0x25')]);router[_0x780e('0x26')]('/:id',auth[_0x780e('0x9')](),controller[_0x780e('0x27')]);router[_0x780e('0x28')](_0x780e('0xe'),auth[_0x780e('0x9')](),controller['removeDispositions']);router[_0x780e('0x28')](_0x780e('0x10'),auth['isAuthenticated'](),controller[_0x780e('0x29')]);router[_0x780e('0x28')](_0x780e('0x11'),auth[_0x780e('0x9')](),controller[_0x780e('0x2a')]);router[_0x780e('0x28')](_0x780e('0x20'),auth[_0x780e('0x9')](),controller[_0x780e('0x2b')]);router['delete'](_0x780e('0xc'),auth['isAuthenticated'](),controller[_0x780e('0x2c')]);router['delete'](_0x780e('0x19'),auth[_0x780e('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 4a7f7d0..488c52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x671e=['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','mandatoryDispositionPauseId','setDataValue','ENUM','gmail','outlook365','getDataValue','provider','custom','STRING'];(function(_0x35efd7,_0x5a97e6){var _0x3d9b5d=function(_0x45fa98){while(--_0x45fa98){_0x35efd7['push'](_0x35efd7['shift']());}};_0x3d9b5d(++_0x5a97e6);}(_0x671e,0x1a8));var _0xe671=function(_0x50b2c8,_0x33bc4c){_0x50b2c8=_0x50b2c8-0x0;var _0x4831ee=_0x671e[_0x50b2c8];return _0x4831ee;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xe671('0x0')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xe671('0x1')],'defaultValue':![]},'email':{'type':Sequelize[_0xe671('0x0')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xe671('0x1')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xe671('0x2')]},'markAsUnread':{'type':Sequelize[_0xe671('0x1')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xe671('0x0')],'allowNull':![],'defaultValue':_0xe671('0x3')},'fontSize':{'type':Sequelize[_0xe671('0x4')](0x2)[_0xe671('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xe671('0x2')],'defaultValue':function(){return _0xe671('0x6');}},'notificationSound':{'type':Sequelize[_0xe671('0x1')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe671('0x1')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe671('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe671('0x1')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe671('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe671('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe671('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xe671('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xe671('0x1')],'defaultValue':![],'comment':_0xe671('0x8'),'set':function(_0x151932){if(!_0x151932)this['setDataValue'](_0xe671('0x9'),null);this[_0xe671('0xa')]('mandatoryDisposition',_0x151932);}},'provider':{'type':Sequelize[_0xe671('0xb')](_0xe671('0xc'),'hotmail','yahoo',_0xe671('0xd')),'defaultValue':null,'get':function(){if(!this[_0xe671('0xe')](_0xe671('0xf')))return _0xe671('0x10');return this[_0xe671('0xe')](_0xe671('0xf'));},'set':function(_0xd6ba9c){if(_0xd6ba9c===_0xe671('0x10'))_0xd6ba9c=null;return this['setDataValue'](_0xe671('0xf'),_0xd6ba9c);}}};
\ No newline at end of file
+var _0x1452=['provider','custom','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','getDataValue'];(function(_0x41e88d,_0x2e2d1b){var _0x5ce8e4=function(_0x18f474){while(--_0x18f474){_0x41e88d['push'](_0x41e88d['shift']());}};_0x5ce8e4(++_0x2e2d1b);}(_0x1452,0x162));var _0x2145=function(_0x528907,_0x5a5648){_0x528907=_0x528907-0x0;var _0x25dfd7=_0x1452[_0x528907];return _0x25dfd7;};'use strict';var Sequelize=require(_0x2145('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x2145('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2145('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x2145('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x2145('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2145('0x1')],'allowNull':![],'defaultValue':_0x2145('0x4')},'fontSize':{'type':Sequelize[_0x2145('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x2145('0x3')],'defaultValue':function(){return _0x2145('0x6');}},'notificationSound':{'type':Sequelize[_0x2145('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2145('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2145('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x2145('0x2')],'defaultValue':![],'comment':_0x2145('0x7'),'set':function(_0x1134d1){if(!_0x1134d1)this[_0x2145('0x8')](_0x2145('0x9'),null);this[_0x2145('0x8')](_0x2145('0xa'),_0x1134d1);}},'provider':{'type':Sequelize[_0x2145('0xb')](_0x2145('0xc'),'hotmail','yahoo','outlook365'),'defaultValue':null,'get':function(){if(!this[_0x2145('0xd')](_0x2145('0xe')))return _0x2145('0xf');return this[_0x2145('0xd')](_0x2145('0xe'));},'set':function(_0x27e772){if(_0x27e772===_0x2145('0xf'))_0x27e772=null;return this[_0x2145('0x8')](_0x2145('0xe'),_0x27e772);}}};
\ No newline at end of file
index 6b418ad..df7b05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7833=['custom','Mail\x20Account\x20not\x20found','update','describe','addDisposition','MailAccountId','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','nolimit','removeAnswers','ListId','isNil','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','findAndCountAll','finally','getApplications','getMessages','split','format','MailMessage','true','CmList','List','Contacts','updatedAt','DESC','CloudProvider','from','%s\x20<%s>','email','attachments','join','root','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','subject','out','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/environment','defaults','localhost','redis','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','destroy','MailAccounts','UserProfileResource','stack','name','send','imap.gmail.com','yahoo','hotmail','outlook365','Unknown\x20email\x20service\x20provider','gmail','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','username','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','map','MailAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','find','body','provider'];(function(_0x468456,_0x2abf30){var _0x249a2e=function(_0x181a09){while(--_0x181a09){_0x468456['push'](_0x468456['shift']());}};_0x249a2e(++_0x2abf30);}(_0x7833,0x120));var _0x3783=function(_0x36c6eb,_0x4fb127){_0x36c6eb=_0x36c6eb-0x0;var _0x30675b=_0x7833[_0x36c6eb];return _0x30675b;};'use strict';var moment=require(_0x3783('0x0'));var BPromise=require(_0x3783('0x1'));var util=require(_0x3783('0x2'));var path=require(_0x3783('0x3'));var _=require(_0x3783('0x4'));var juice=require('juice');var Redis=require(_0x3783('0x5'));var qs=require(_0x3783('0x6'));var logger=require('../../config/logger')('api');var config=require(_0x3783('0x7'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x3783('0x8')](config['redis'],{'host':_0x3783('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3783('0xa')]));require(_0x3783('0xb'))[_0x3783('0xc')](socket);var jayson=require(_0x3783('0xd'));var client=jayson[_0x3783('0xe')][_0x3783('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x3a43c9,_0x1bd507,_0x20a1c4,_0x4c2715){return new BPromise(function(_0x567e78,_0xa5f000){var _0x262b98=_0x4c2715||client;return _0x262b98[_0x3783('0x10')](_0x3a43c9,_0x20a1c4)[_0x3783('0x11')](function(_0x1a4831){logger[_0x3783('0x12')](_0x3783('0x13'),_0x1bd507,'request\x20sent');logger[_0x3783('0x14')](_0x3783('0x15'),_0x1bd507,_0x3783('0x16'),JSON[_0x3783('0x17')](_0x1a4831));if(_0x1a4831[_0x3783('0x18')]){if(_0x1a4831[_0x3783('0x18')][_0x3783('0x19')]===0x1f4){logger[_0x3783('0x18')](_0x3783('0x13'),_0x1bd507,_0x1a4831[_0x3783('0x18')][_0x3783('0x1a')]);return _0xa5f000(_0x1a4831['error'][_0x3783('0x1a')]);}logger['error'](_0x3783('0x13'),_0x1bd507,_0x1a4831[_0x3783('0x18')][_0x3783('0x1a')]);return _0x567e78(_0x1a4831['error'][_0x3783('0x1a')]);}else{logger[_0x3783('0x12')]('MailAccount,\x20%s,\x20%s',_0x1bd507,_0x3783('0x16'));_0x567e78(_0x1a4831[_0x3783('0x1b')]['message']);}})['catch'](function(_0x19661e){logger[_0x3783('0x18')](_0x3783('0x13'),_0x1bd507,_0x19661e);_0xa5f000(_0x19661e);});});}function respondWithStatusCode(_0x4b0149,_0x29901d){_0x29901d=_0x29901d||0xcc;return function(_0x32eb55){if(_0x32eb55){return _0x4b0149[_0x3783('0x1c')](_0x29901d);}return _0x4b0149['status'](_0x29901d)[_0x3783('0x1d')]();};}function respondWithResult(_0x1ba496,_0x1aece6){_0x1aece6=_0x1aece6||0xc8;return function(_0x11d43d){if(_0x11d43d){return _0x1ba496[_0x3783('0x1e')](_0x1aece6)[_0x3783('0x1f')](_0x11d43d);}};}function respondWithFilteredResult(_0x4d9de6,_0x5487b2){return function(_0x1bb2be){if(_0x1bb2be){var _0x1b38b0=typeof _0x5487b2['offset']===_0x3783('0x20')&&typeof _0x5487b2[_0x3783('0x21')]==='undefined';var _0x512b2e=_0x1bb2be[_0x3783('0x22')];var _0x131887=_0x1b38b0?0x0:_0x5487b2[_0x3783('0x23')];var _0x4c83e3=_0x1b38b0?_0x1bb2be[_0x3783('0x22')]:_0x5487b2[_0x3783('0x23')]+_0x5487b2[_0x3783('0x21')];var _0x166754;if(_0x4c83e3>=_0x512b2e){_0x4c83e3=_0x512b2e;_0x166754=0xc8;}else{_0x166754=0xce;}_0x4d9de6[_0x3783('0x1e')](_0x166754);return _0x4d9de6[_0x3783('0x24')](_0x3783('0x25'),_0x131887+'-'+_0x4c83e3+'/'+_0x512b2e)[_0x3783('0x1f')](_0x1bb2be);}return null;};}function saveUpdates(_0x15625e){return function(_0x1cce79){if(_0x1cce79){return _0x1cce79['update'](_0x15625e)[_0x3783('0x11')](function(_0x422199){return _0x422199;});}return null;};}function removeEntity(_0x30ba47){return function(_0x38f048){if(_0x38f048){return _0x38f048[_0x3783('0x26')]()[_0x3783('0x11')](function(){var _0x49bc38=_0x38f048['get']({'plain':!![]});var _0x12a2b6=_0x3783('0x27');return db[_0x3783('0x28')]['destroy']({'where':{'type':_0x12a2b6,'resourceId':_0x49bc38['id']}})['then'](function(){return _0x38f048;});})[_0x3783('0x11')](function(){_0x30ba47[_0x3783('0x1e')](0xcc)[_0x3783('0x1d')]();});}};}function handleEntityNotFound(_0x131ae7){return function(_0x18acd0){if(!_0x18acd0){_0x131ae7['sendStatus'](0x194);}return _0x18acd0;};}function handleError(_0x17af58,_0x240298){_0x240298=_0x240298||0x1f4;return function(_0x2e9629){logger[_0x3783('0x18')](_0x2e9629[_0x3783('0x29')]);if(_0x2e9629['name']){delete _0x2e9629[_0x3783('0x2a')];}_0x17af58[_0x3783('0x1e')](_0x240298)[_0x3783('0x2b')](_0x2e9629);};}function getImapHost(_0x5a6210){switch(_0x5a6210){case'gmail':return _0x3783('0x2c');case _0x3783('0x2d'):return'imap.mail.yahoo.com';case _0x3783('0x2e'):return'imap-mail.outlook.com';case _0x3783('0x2f'):return'outlook.office365.com';}throw new Error(_0x3783('0x30'),_0x5a6210);}function getSmtpHost(_0x1f9103){switch(_0x1f9103){case _0x3783('0x31'):return _0x3783('0x32');case _0x3783('0x2d'):return'smtp.mail.yahoo.com';case _0x3783('0x2e'):return _0x3783('0x33');case _0x3783('0x2f'):return _0x3783('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x1f9103);}function getAuthenticationOptions(_0x2e4c73,_0x48aeb0){var _0x5b5219={};var _0x15f9d7={};if(_0x2e4c73){_0x5b5219[_0x3783('0x35')]=_0x15f9d7['user']=_0x48aeb0['username'];_0x5b5219['password']=_0x15f9d7[_0x3783('0x36')]=_0x48aeb0[_0x3783('0x37')];if(_0x48aeb0[_0x3783('0x38')]){_0x5b5219['modernAuthentication']=_0x15f9d7[_0x3783('0x38')]=!![];_0x5b5219['CloudProviderId']=_0x15f9d7[_0x3783('0x39')]=_0x48aeb0[_0x3783('0x39')];_0x5b5219[_0x3783('0x37')]=_0x15f9d7[_0x3783('0x36')]=null;}else{_0x5b5219['CloudProviderId']=_0x15f9d7[_0x3783('0x39')]=null;}_0x5b5219[_0x3783('0x3a')]=getImapHost(_0x2e4c73);_0x5b5219[_0x3783('0x3b')]=0x3e1;_0x15f9d7['host']=getSmtpHost(_0x2e4c73);_0x15f9d7[_0x3783('0x3b')]=0x24b;_0x15f9d7[_0x3783('0x3c')]=![];_0x5b5219[_0x3783('0x3d')]=_0x15f9d7[_0x3783('0x3d')]=null;}else{if(_0x48aeb0[_0x3783('0x3e')]){_0x5b5219[_0x3783('0x35')]=_0x15f9d7['user']=_0x48aeb0[_0x3783('0x3f')];_0x5b5219[_0x3783('0x37')]=_0x15f9d7[_0x3783('0x36')]=_0x48aeb0['password'];}else{_0x5b5219[_0x3783('0x3e')]=_0x15f9d7[_0x3783('0x3e')]=![];_0x5b5219[_0x3783('0x35')]=_0x15f9d7[_0x3783('0x35')]=null;_0x5b5219[_0x3783('0x37')]=_0x15f9d7[_0x3783('0x36')]=null;}_0x5b5219['host']=_0x48aeb0['Imap'][_0x3783('0x3a')];_0x5b5219[_0x3783('0x3b')]=_0x48aeb0[_0x3783('0x40')][_0x3783('0x3b')];_0x15f9d7['host']=_0x48aeb0[_0x3783('0x41')][_0x3783('0x3a')];_0x15f9d7['port']=_0x48aeb0[_0x3783('0x41')]['port'];}return{'Imap':_0x5b5219,'Smtp':_0x15f9d7};}exports[_0x3783('0x42')]=function(_0x114f7a,_0x2482f4){var _0x538181={'include':[{'model':db[_0x3783('0x43')],'as':_0x3783('0x40')},{'model':db[_0x3783('0x44')],'as':_0x3783('0x41')},{'model':db[_0x3783('0x45')],'as':'mandatoryDispositionPause'}]},_0xd27ad9={},_0x2df426={'count':0x0,'rows':[]};var _0x15f1b9=_[_0x3783('0x46')](db[_0x3783('0x47')][_0x3783('0x48')],function(_0x56a208){return{'name':_0x56a208[_0x3783('0x49')],'type':_0x56a208[_0x3783('0x4a')][_0x3783('0x4b')]};});_0xd27ad9['model']=_[_0x3783('0x46')](_0x15f1b9,_0x3783('0x2a'));_0xd27ad9[_0x3783('0x4c')]=_[_0x3783('0x4d')](_0x114f7a[_0x3783('0x4c')]);_0xd27ad9[_0x3783('0x4e')]=_[_0x3783('0x4f')](_0xd27ad9['model'],_0xd27ad9[_0x3783('0x4c')]);_0x538181['attributes']=_[_0x3783('0x4f')](_0xd27ad9[_0x3783('0x50')],qs[_0x3783('0x51')](_0x114f7a['query']['fields']));_0x538181[_0x3783('0x52')]=_0x538181['attributes'][_0x3783('0x53')]?_0x538181[_0x3783('0x52')]:_0xd27ad9['model'];if(!_0x114f7a[_0x3783('0x4c')][_0x3783('0x54')]('nolimit')){_0x538181[_0x3783('0x21')]=qs[_0x3783('0x21')](_0x114f7a['query'][_0x3783('0x21')]);_0x538181[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x114f7a[_0x3783('0x4c')]['offset']);}_0x538181[_0x3783('0x55')]=qs[_0x3783('0x56')](_0x114f7a[_0x3783('0x4c')][_0x3783('0x56')]);_0x538181[_0x3783('0x57')]=qs[_0x3783('0x4e')](_[_0x3783('0x58')](_0x114f7a[_0x3783('0x4c')],_0xd27ad9['filters']),_0x15f1b9);if(_0x114f7a[_0x3783('0x4c')][_0x3783('0x59')]){_0x538181[_0x3783('0x57')]=_[_0x3783('0x5a')](_0x538181['where'],{'$or':_['map'](_0x15f1b9,function(_0xab200e){if(_0xab200e['type']!==_0x3783('0x5b')){var _0x2d4f22={};_0x2d4f22[_0xab200e[_0x3783('0x2a')]]={'$like':'%'+_0x114f7a[_0x3783('0x4c')]['filter']+'%'};return _0x2d4f22;}})});}_0x538181=_['merge']({},_0x538181,_0x114f7a[_0x3783('0x5c')]);var _0x18a1eb={'where':_0x538181['where']};return db[_0x3783('0x47')][_0x3783('0x22')](_0x18a1eb)[_0x3783('0x11')](function(_0x1b3e06){_0x2df426[_0x3783('0x22')]=_0x1b3e06;if(_0x114f7a[_0x3783('0x4c')][_0x3783('0x5d')]){_0x538181[_0x3783('0x5e')]=[{'all':!![]}];}return db['MailAccount'][_0x3783('0x5f')](_0x538181);})[_0x3783('0x11')](function(_0x3d63ee){_0x2df426[_0x3783('0x60')]=_0x3d63ee;return _0x2df426;})[_0x3783('0x11')](respondWithFilteredResult(_0x2482f4,_0x538181))[_0x3783('0x61')](handleError(_0x2482f4,null));};exports[_0x3783('0x62')]=function(_0x45cb7a,_0x2f8e8b){var _0xd96bbf={'raw':![],'where':{'id':_0x45cb7a[_0x3783('0x63')]['id']},'include':[{'model':db[_0x3783('0x43')],'as':_0x3783('0x40')},{'model':db[_0x3783('0x44')],'as':_0x3783('0x41')},{'model':db[_0x3783('0x45')],'as':_0x3783('0x64')}]},_0x178c18={};_0x178c18[_0x3783('0x50')]=_[_0x3783('0x4d')](db[_0x3783('0x47')]['rawAttributes']);_0x178c18[_0x3783('0x4c')]=_[_0x3783('0x4d')](_0x45cb7a[_0x3783('0x4c')]);_0x178c18[_0x3783('0x4e')]=_['intersection'](_0x178c18[_0x3783('0x50')],_0x178c18[_0x3783('0x4c')]);_0xd96bbf['attributes']=_['intersection'](_0x178c18[_0x3783('0x50')],qs[_0x3783('0x51')](_0x45cb7a[_0x3783('0x4c')]['fields']));_0xd96bbf['attributes']=_0xd96bbf[_0x3783('0x52')]['length']?_0xd96bbf[_0x3783('0x52')]:_0x178c18[_0x3783('0x50')];if(_0x45cb7a[_0x3783('0x4c')][_0x3783('0x5d')]){_0xd96bbf['include']=[{'all':!![]}];}_0xd96bbf=_[_0x3783('0x5a')]({},_0xd96bbf,_0x45cb7a[_0x3783('0x5c')]);return db[_0x3783('0x47')][_0x3783('0x65')](_0xd96bbf)['then'](handleEntityNotFound(_0x2f8e8b,null))[_0x3783('0x11')](respondWithResult(_0x2f8e8b,null))[_0x3783('0x61')](handleError(_0x2f8e8b,null));};exports['update']=function(_0x3c38ac,_0x163ef1){if(_0x3c38ac['body']['id']){delete _0x3c38ac[_0x3783('0x66')]['id'];}var _0x177ef1=_0x3c38ac['body'][_0x3783('0x67')]===_0x3783('0x68')?null:_0x3c38ac['body'][_0x3783('0x67')];var _0x394dd5=_0x3c38ac[_0x3783('0x66')][_0x3783('0x40')]||{};var _0xeabda1=_0x3c38ac['body'][_0x3783('0x41')]||{};if(_0x177ef1){_0x394dd5[_0x3783('0x3a')]=getImapHost(_0x177ef1);_0x394dd5[_0x3783('0x3b')]=0x3e1;_0xeabda1[_0x3783('0x3a')]=getSmtpHost(_0x177ef1);_0xeabda1[_0x3783('0x3b')]=0x24b;_0xeabda1[_0x3783('0x3c')]=![];}if(_0xeabda1['modernAuthentication']){_0xeabda1['secure']=![];}else{_0xeabda1[_0x3783('0x39')]=null;}if(!_0x394dd5['modernAuthentication'])_0x394dd5['CloudProviderId']=null;_0x3c38ac[_0x3783('0x66')][_0x3783('0x40')]=_0x394dd5;_0x3c38ac['body'][_0x3783('0x41')]=_0xeabda1;return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x3c38ac[_0x3783('0x63')]['id']},'include':[{'model':db[_0x3783('0x43')],'as':_0x3783('0x40')},{'model':db['MailServerOut'],'as':_0x3783('0x41')},{'model':db[_0x3783('0x45')],'as':'mandatoryDispositionPause'}]})[_0x3783('0x11')](handleEntityNotFound(_0x163ef1,null))['then'](function(_0x434af2){if(!_0x434af2)throw new Error(_0x3783('0x69'));if(_0x434af2[_0x3783('0x3d')])delete _0x3c38ac[_0x3783('0x66')]['Imap'];return _0x434af2;})['then'](saveUpdates(_0x3c38ac[_0x3783('0x66')],null))['then'](function(_0x2555ca){if(!_0x3c38ac[_0x3783('0x66')][_0x3783('0x40')])return _0x2555ca;return db['MailServerIn'][_0x3783('0x6a')](_0x3c38ac[_0x3783('0x66')][_0x3783('0x40')],{'where':{'MailAccountId':_0x2555ca['id']}})[_0x3783('0x11')](function(){return _0x2555ca;});})[_0x3783('0x11')](function(_0x6884c2){if(!_0x3c38ac[_0x3783('0x66')][_0x3783('0x41')])return _0x6884c2;return db[_0x3783('0x44')][_0x3783('0x6a')](_0x3c38ac[_0x3783('0x66')][_0x3783('0x41')],{'where':{'MailAccountId':_0x6884c2['id']}})[_0x3783('0x11')](function(){return _0x6884c2;});})[_0x3783('0x11')](respondWithResult(_0x163ef1,null))[_0x3783('0x61')](handleError(_0x163ef1,null));};exports[_0x3783('0x6b')]=function(_0x503b3d,_0x5cebc4){return db[_0x3783('0x47')][_0x3783('0x6b')]()[_0x3783('0x11')](respondWithResult(_0x5cebc4,null))['catch'](handleError(_0x5cebc4,null));};exports[_0x3783('0x6c')]=function(_0x4cce9f,_0x54bc09){if(_0x4cce9f[_0x3783('0x66')]['id']){delete _0x4cce9f[_0x3783('0x66')]['id'];}return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x4cce9f[_0x3783('0x63')]['id']}})['then'](handleEntityNotFound(_0x54bc09,null))[_0x3783('0x11')](function(_0x839992){if(_0x839992){_0x4cce9f[_0x3783('0x66')][_0x3783('0x6d')]=_0x839992['id'];return db['Disposition']['create'](_0x4cce9f[_0x3783('0x66')]);}})['then'](respondWithResult(_0x54bc09,null))[_0x3783('0x61')](handleError(_0x54bc09,null));};exports['getDispositions']=function(_0x4752ea,_0x598b33){var _0x1e54c6={'raw':![],'where':{}};var _0x12b64e={};var _0x1dd153={'count':0x0,'rows':[]};return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x4752ea[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x598b33,null))[_0x3783('0x11')](function(_0xc61e83){if(_0xc61e83){_0x12b64e[_0x3783('0x50')]=_[_0x3783('0x4d')](db['Disposition'][_0x3783('0x48')]);_0x12b64e[_0x3783('0x4c')]=_[_0x3783('0x4d')](_0x4752ea[_0x3783('0x4c')]);_0x12b64e[_0x3783('0x4e')]=_['intersection'](_0x12b64e[_0x3783('0x50')],_0x12b64e[_0x3783('0x4c')]);_0x1e54c6[_0x3783('0x52')]=_[_0x3783('0x4f')](_0x12b64e['model'],qs['fields'](_0x4752ea[_0x3783('0x4c')][_0x3783('0x51')]));_0x1e54c6[_0x3783('0x52')]=_0x1e54c6[_0x3783('0x52')][_0x3783('0x53')]?_0x1e54c6[_0x3783('0x52')]:_0x12b64e[_0x3783('0x50')];if(!_0x4752ea[_0x3783('0x4c')][_0x3783('0x54')]('nolimit')){_0x1e54c6[_0x3783('0x21')]=qs[_0x3783('0x21')](_0x4752ea[_0x3783('0x4c')][_0x3783('0x21')]);_0x1e54c6[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x4752ea[_0x3783('0x4c')][_0x3783('0x23')]);}_0x1e54c6[_0x3783('0x55')]=qs[_0x3783('0x56')](_0x4752ea[_0x3783('0x4c')][_0x3783('0x56')]);_0x1e54c6['where']=qs['filters'](_[_0x3783('0x58')](_0x4752ea[_0x3783('0x4c')],_0x12b64e[_0x3783('0x4e')]));_0x1e54c6[_0x3783('0x57')][_0x3783('0x6d')]=_0xc61e83['id'];if(_0x4752ea['query'][_0x3783('0x59')]){_0x1e54c6[_0x3783('0x57')]=_['merge'](_0x1e54c6[_0x3783('0x57')],{'$or':_[_0x3783('0x46')](_0x1e54c6[_0x3783('0x52')],function(_0x2889a6){var _0x4f242d={};_0x4f242d[_0x2889a6]={'$like':'%'+_0x4752ea[_0x3783('0x4c')][_0x3783('0x59')]+'%'};return _0x4f242d;})});}_0x1e54c6=_[_0x3783('0x5a')]({},_0x1e54c6,_0x4752ea[_0x3783('0x5c')]);return db[_0x3783('0x6f')]['count']({'where':_0x1e54c6[_0x3783('0x57')]})[_0x3783('0x11')](function(_0x2f6263){_0x1dd153[_0x3783('0x22')]=_0x2f6263;if(_0x4752ea[_0x3783('0x4c')][_0x3783('0x5d')]){_0x1e54c6[_0x3783('0x5e')]=[{'all':!![]}];}return db[_0x3783('0x6f')][_0x3783('0x5f')](_0x1e54c6);})[_0x3783('0x11')](function(_0x1c65a7){_0x1dd153['rows']=_0x1c65a7;return _0x1dd153;});}})[_0x3783('0x11')](respondWithFilteredResult(_0x598b33,_0x1e54c6))[_0x3783('0x61')](handleError(_0x598b33,null));};exports[_0x3783('0x70')]=function(_0x67d747,_0x3b8c9b){return db['MailAccount'][_0x3783('0x65')]({'where':{'id':_0x67d747[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x3b8c9b,null))['then'](function(_0x3c8cb4){if(_0x3c8cb4){return _0x3c8cb4[_0x3783('0x70')](_0x67d747[_0x3783('0x4c')][_0x3783('0x71')]);}})['then'](respondWithStatusCode(_0x3b8c9b,null))[_0x3783('0x61')](handleError(_0x3b8c9b,null));};exports[_0x3783('0x72')]=function(_0x545ccc,_0x3027a4){if(_0x545ccc['body']['id']){delete _0x545ccc[_0x3783('0x66')]['id'];}return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x545ccc['params']['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x3027a4,null))[_0x3783('0x11')](function(_0x579c85){if(_0x579c85){_0x545ccc[_0x3783('0x66')][_0x3783('0x6d')]=_0x579c85['id'];return db[_0x3783('0x73')][_0x3783('0x74')](_0x545ccc[_0x3783('0x66')]);}})[_0x3783('0x11')](respondWithResult(_0x3027a4,null))[_0x3783('0x61')](handleError(_0x3027a4,null));};exports[_0x3783('0x75')]=function(_0x2f5f6f,_0x49da08){var _0xf98f93={'raw':![],'where':{}};var _0x342124={};var _0x24a5db={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x2f5f6f[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x49da08,null))[_0x3783('0x11')](function(_0x57a3d8){if(_0x57a3d8){_0x342124[_0x3783('0x50')]=_[_0x3783('0x4d')](db['CannedAnswer']['rawAttributes']);_0x342124[_0x3783('0x4c')]=_['keys'](_0x2f5f6f['query']);_0x342124[_0x3783('0x4e')]=_[_0x3783('0x4f')](_0x342124[_0x3783('0x50')],_0x342124['query']);_0xf98f93[_0x3783('0x52')]=_[_0x3783('0x4f')](_0x342124[_0x3783('0x50')],qs[_0x3783('0x51')](_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x51')]));_0xf98f93['attributes']=_0xf98f93[_0x3783('0x52')][_0x3783('0x53')]?_0xf98f93[_0x3783('0x52')]:_0x342124[_0x3783('0x50')];if(!_0x2f5f6f[_0x3783('0x4c')]['hasOwnProperty'](_0x3783('0x76'))){_0xf98f93['limit']=qs['limit'](_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x21')]);_0xf98f93['offset']=qs[_0x3783('0x23')](_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x23')]);}_0xf98f93[_0x3783('0x55')]=qs[_0x3783('0x56')](_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x56')]);_0xf98f93[_0x3783('0x57')]=qs[_0x3783('0x4e')](_['pick'](_0x2f5f6f[_0x3783('0x4c')],_0x342124[_0x3783('0x4e')]));_0xf98f93[_0x3783('0x57')][_0x3783('0x6d')]=_0x57a3d8['id'];if(_0x2f5f6f['query'][_0x3783('0x59')]){_0xf98f93[_0x3783('0x57')]=_[_0x3783('0x5a')](_0xf98f93[_0x3783('0x57')],{'$or':_[_0x3783('0x46')](_0xf98f93['attributes'],function(_0x82263a){var _0x1c4c36={};_0x1c4c36[_0x82263a]={'$like':'%'+_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x59')]+'%'};return _0x1c4c36;})});}_0xf98f93=_[_0x3783('0x5a')]({},_0xf98f93,_0x2f5f6f[_0x3783('0x5c')]);return db[_0x3783('0x73')][_0x3783('0x22')]({'where':_0xf98f93[_0x3783('0x57')]})[_0x3783('0x11')](function(_0x367389){_0x24a5db[_0x3783('0x22')]=_0x367389;if(_0x2f5f6f[_0x3783('0x4c')][_0x3783('0x5d')]){_0xf98f93[_0x3783('0x5e')]=[{'all':!![]}];}return db[_0x3783('0x73')][_0x3783('0x5f')](_0xf98f93);})['then'](function(_0x5eb85f){_0x24a5db[_0x3783('0x60')]=_0x5eb85f;return _0x24a5db;});}})['then'](respondWithFilteredResult(_0x49da08,_0xf98f93))['catch'](handleError(_0x49da08,null));};exports[_0x3783('0x77')]=function(_0x520aa8,_0x4bd2fa){return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x520aa8[_0x3783('0x63')]['id']}})['then'](handleEntityNotFound(_0x4bd2fa,null))[_0x3783('0x11')](function(_0x402d17){if(_0x402d17){return _0x402d17[_0x3783('0x77')](_0x520aa8[_0x3783('0x4c')][_0x3783('0x71')]);}})['then'](respondWithStatusCode(_0x4bd2fa,null))[_0x3783('0x61')](handleError(_0x4bd2fa,null));};exports[_0x3783('0x74')]=function(_0x1fe57d,_0x355ce7){var _0x18d375={'name':_0x1fe57d[_0x3783('0x66')][_0x3783('0x2a')],'key':_0x1fe57d[_0x3783('0x66')]['key'],'provider':_0x1fe57d[_0x3783('0x66')][_0x3783('0x67')]===_0x3783('0x68')?null:_0x1fe57d[_0x3783('0x66')][_0x3783('0x67')],'email':_0x1fe57d[_0x3783('0x66')]['email'],'ListId':_0x1fe57d[_0x3783('0x66')][_0x3783('0x78')],'active':!_[_0x3783('0x79')](_0x1fe57d[_0x3783('0x66')]['active'])?_0x1fe57d[_0x3783('0x66')]['active']:!![],'description':_0x1fe57d[_0x3783('0x66')]['description']||null};var _0x41064f=getAuthenticationOptions(_0x18d375[_0x3783('0x67')],_0x1fe57d[_0x3783('0x66')]);_0x18d375['Imap']=_0x41064f[_0x3783('0x40')];_0x18d375[_0x3783('0x41')]=_0x41064f[_0x3783('0x41')];return db['MailAccount']['create'](_0x18d375,{'include':[{'model':db[_0x3783('0x44')],'as':_0x3783('0x41')},{'model':db[_0x3783('0x43')],'as':_0x3783('0x40')}]})[_0x3783('0x11')](function(_0x875bfd){var _0x28014e=_0x1fe57d[_0x3783('0x35')][_0x3783('0x7a')]({'plain':!![]});if(!_0x28014e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x28014e[_0x3783('0x7b')]==='user'){var _0x1798cb=_0x875bfd['get']({'plain':!![]});return db[_0x3783('0x7c')][_0x3783('0x65')]({'where':{'name':_0x3783('0x27'),'userProfileId':_0x28014e[_0x3783('0x7d')]},'raw':!![]})['then'](function(_0x86b796){if(_0x86b796&&_0x86b796[_0x3783('0x7e')]===0x0){return db[_0x3783('0x28')]['create']({'name':_0x1798cb[_0x3783('0x2a')],'resourceId':_0x1798cb['id'],'type':_0x86b796[_0x3783('0x2a')],'sectionId':_0x86b796['id']},{})[_0x3783('0x11')](function(){return _0x875bfd;});}else{return _0x875bfd;}})[_0x3783('0x61')](function(_0x1df3e0){logger[_0x3783('0x18')](_0x3783('0x7f'),_0x1df3e0);throw _0x1df3e0;});}return _0x875bfd;})[_0x3783('0x11')](respondWithResult(_0x355ce7,0xc9))['catch'](handleError(_0x355ce7,null));};exports[_0x3783('0x80')]=function(_0x226d49,_0x23715d){return db[_0x3783('0x47')]['findOne']({'where':{'id':_0x226d49[_0x3783('0x63')]['id']}})['then'](handleEntityNotFound(_0x23715d,null))['then'](function(_0x4d86e5){if(_0x4d86e5){return _0x4d86e5[_0x3783('0x80')]();}return null;})['then'](respondWithResult(_0x23715d,null))[_0x3783('0x61')](handleError(_0x23715d,null));};exports[_0x3783('0x81')]=function(_0x12c35d,_0x3984af){if(_0x12c35d[_0x3783('0x66')]['id']){delete _0x12c35d[_0x3783('0x66')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x12c35d['params']['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x3984af,null))[_0x3783('0x11')](function(_0x5d1377){if(_0x5d1377){_0x12c35d['body'][_0x3783('0x6d')]=_0x5d1377['id'];return db[_0x3783('0x43')]['create'](_0x12c35d[_0x3783('0x66')]);}})[_0x3783('0x11')](respondWithResult(_0x3984af,null))[_0x3783('0x61')](handleError(_0x3984af,null));};exports[_0x3783('0x82')]=function(_0x2ee113,_0x4e0bdc){return db[_0x3783('0x47')]['findOne']({'where':{'id':_0x2ee113[_0x3783('0x63')]['id']}})['then'](handleEntityNotFound(_0x4e0bdc,null))[_0x3783('0x11')](function(_0x42af3a){if(_0x42af3a){return _0x42af3a[_0x3783('0x83')](null);}return null;})[_0x3783('0x11')](respondWithStatusCode(_0x4e0bdc,null))[_0x3783('0x61')](handleError(_0x4e0bdc,null));};exports[_0x3783('0x84')]=function(_0x4953e7,_0x239ca6){return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x4953e7[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x239ca6,null))[_0x3783('0x11')](function(_0xba2e55){if(_0xba2e55){return _0xba2e55[_0x3783('0x84')]();}return null;})[_0x3783('0x11')](respondWithResult(_0x239ca6,null))[_0x3783('0x61')](handleError(_0x239ca6,null));};exports['addSmtp']=function(_0x1b720e,_0x4e7179){if(_0x1b720e[_0x3783('0x66')]['id']){delete _0x1b720e[_0x3783('0x66')]['id'];}return db[_0x3783('0x47')]['find']({'where':{'id':_0x1b720e['params']['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x4e7179,null))['then'](function(_0x50d3dd){if(_0x50d3dd){_0x1b720e[_0x3783('0x66')][_0x3783('0x6d')]=_0x50d3dd['id'];return db[_0x3783('0x44')][_0x3783('0x74')](_0x1b720e[_0x3783('0x66')]);}})['then'](respondWithResult(_0x4e7179,null))['catch'](handleError(_0x4e7179,null));};exports[_0x3783('0x85')]=function(_0x524af1,_0x4f9a4c){return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x524af1[_0x3783('0x63')]['id']}})['then'](handleEntityNotFound(_0x4f9a4c,null))[_0x3783('0x11')](function(_0x5c79d1){if(_0x5c79d1){return _0x5c79d1[_0x3783('0x86')](null);}return null;})[_0x3783('0x11')](respondWithStatusCode(_0x4f9a4c,null))[_0x3783('0x61')](handleError(_0x4f9a4c,null));};exports[_0x3783('0x87')]=function(_0x3186db,_0x1e6ac9){return db[_0x3783('0x88')][_0x3783('0x65')]({'where':{'id':_0x3186db[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x1e6ac9,null))['then'](function(_0xcac654){if(_0xcac654){return _0xcac654[_0x3783('0x87')](_0x3186db[_0x3783('0x66')]['ids'],_['omit'](_0x3186db[_0x3783('0x66')],[_0x3783('0x71'),'id'])||{});}})[_0x3783('0x11')](respondWithResult(_0x1e6ac9,null))['catch'](handleError(_0x1e6ac9,null));};exports[_0x3783('0x89')]=function(_0x1db600,_0x3168ab){var _0x30ea92={'raw':![],'where':{}};var _0x4a1665={};var _0x59aebd={'count':0x0,'rows':[]};return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x1db600['params']['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x3168ab,null))[_0x3783('0x11')](function(_0x5c2311){if(_0x5c2311){_0x4a1665[_0x3783('0x50')]=_[_0x3783('0x4d')](db[_0x3783('0x88')][_0x3783('0x48')]);_0x4a1665['query']=_['keys'](_0x1db600[_0x3783('0x4c')]);_0x4a1665[_0x3783('0x4e')]=_['intersection'](_0x4a1665[_0x3783('0x50')],_0x4a1665[_0x3783('0x4c')]);_0x30ea92['attributes']=_[_0x3783('0x4f')](_0x4a1665[_0x3783('0x50')],qs['fields'](_0x1db600[_0x3783('0x4c')][_0x3783('0x51')]));_0x30ea92[_0x3783('0x52')]=_0x30ea92[_0x3783('0x52')][_0x3783('0x53')]?_0x30ea92[_0x3783('0x52')]:_0x4a1665['model'];if(!_0x1db600[_0x3783('0x4c')]['hasOwnProperty']('nolimit')){_0x30ea92['limit']=qs[_0x3783('0x21')](_0x1db600[_0x3783('0x4c')][_0x3783('0x21')]);_0x30ea92[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x1db600['query'][_0x3783('0x23')]);}_0x30ea92[_0x3783('0x55')]=qs[_0x3783('0x56')](_0x1db600[_0x3783('0x4c')][_0x3783('0x56')]);_0x30ea92[_0x3783('0x57')]=qs[_0x3783('0x4e')](_[_0x3783('0x58')](_0x1db600['query'],_0x4a1665[_0x3783('0x4e')]));_0x30ea92[_0x3783('0x57')][_0x3783('0x6d')]=_0x5c2311['id'];if(_0x1db600[_0x3783('0x4c')][_0x3783('0x59')]){_0x30ea92[_0x3783('0x57')]=_['merge'](_0x30ea92[_0x3783('0x57')],{'$or':_[_0x3783('0x46')](_0x30ea92[_0x3783('0x52')],function(_0x1fcf56){var _0x5702cc={};_0x5702cc[_0x1fcf56]={'$like':'%'+_0x1db600['query'][_0x3783('0x59')]+'%'};return _0x5702cc;})});}_0x30ea92=_['merge']({},_0x30ea92,_0x1db600[_0x3783('0x5c')]);return db['MailInteraction'][_0x3783('0x22')]({'where':_0x30ea92[_0x3783('0x57')]})[_0x3783('0x11')](function(_0x1c172e){_0x59aebd['count']=_0x1c172e;if(_0x1db600['query']['includeAll']){_0x30ea92[_0x3783('0x5e')]=[{'model':db[_0x3783('0x8a')],'as':_0x3783('0x8b'),'required':![]},{'model':db[_0x3783('0x8c')],'as':_0x3783('0x8d'),'attributes':[_0x3783('0x2a'),_0x3783('0x8e'),'internal'],'required':![]},{'model':db[_0x3783('0x8f')],'as':_0x3783('0x90'),'attributes':['id',_0x3783('0x2a'),_0x3783('0x91')],'where':_0x1db600['query']['tag']?{'id':_0x1db600['query'][_0x3783('0x92')]}:undefined,'required':_0x1db600[_0x3783('0x4c')]['tag']?!![]:![]}];}return db['MailInteraction'][_0x3783('0x5f')](_0x30ea92);})[_0x3783('0x11')](function(_0x425f35){_0x59aebd[_0x3783('0x60')]=_0x425f35;return _0x59aebd;});}})[_0x3783('0x11')](respondWithFilteredResult(_0x3168ab,_0x30ea92))[_0x3783('0x61')](handleError(_0x3168ab,null));};exports[_0x3783('0x93')]=function addApplications(_0x46c53d,_0xfe30d5){var _0x42c59f=_0x46c53d[_0x3783('0x63')]['id'];var _0x2347eb=_0x46c53d['body'];var _0x3e4916=0xc8;var _0x5d8c03=null;return db[_0x3783('0x94')]['transaction']({'isolationLevel':db[_0x3783('0x94')][_0x3783('0x95')][_0x3783('0x96')][_0x3783('0x97')]},function(_0x63162){return db['MailAccount']['findOne']({'where':{'id':_0x42c59f},'transaction':_0x63162})[_0x3783('0x11')](function(_0x41631c){if(_0x41631c){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x42c59f},'transaction':_0x63162})[_0x3783('0x11')](function(){var _0x53cc7b=_[_0x3783('0x46')](_0x2347eb,function(_0xce65ad){_0xce65ad[_0x3783('0x6d')]=_0x42c59f;return _0xce65ad;});return db[_0x3783('0x98')]['bulkCreate'](_0x53cc7b,{'transaction':_0x63162});});}else{_0x3e4916=0x194;_0x5d8c03=[];}});})[_0x3783('0x11')](function(){if(_0x3e4916!==0x194){return db[_0x3783('0x98')][_0x3783('0x99')]({'where':{'MailAccountId':_0x42c59f},'order':'priority'})[_0x3783('0x11')](function(_0x979779){_0x5d8c03=_0x979779;});}})[_0x3783('0x61')](function(_0x1d8e2e){_0x3e4916=0x1f4;logger[_0x3783('0x18')](_0x1d8e2e[_0x3783('0x29')]);if(_0x1d8e2e[_0x3783('0x2a')]){delete _0x1d8e2e['name'];}_0x5d8c03=_0x1d8e2e;})[_0x3783('0x9a')](function(){if(_0x5d8c03===null){_0xfe30d5[_0x3783('0x1c')](_0x3e4916);}else{if(_0x3e4916===0x1f4){_0xfe30d5['status'](_0x3e4916)[_0x3783('0x2b')](_0x5d8c03);}else{_0xfe30d5[_0x3783('0x1e')](_0x3e4916)[_0x3783('0x1f')](_0x5d8c03);}}});};exports[_0x3783('0x9b')]=function(_0x1f8588,_0x5c1813){var _0x37b32d={};var _0x11c52d={};var _0x5e38c3;var _0x14be01;return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x1f8588[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x5c1813,null))['then'](function(_0x5a326d){if(_0x5a326d){_0x5e38c3=_0x5a326d;_0x11c52d[_0x3783('0x50')]=_['keys'](db['MailApplication'][_0x3783('0x48')]);_0x11c52d[_0x3783('0x4c')]=_['keys'](_0x1f8588['query']);_0x11c52d[_0x3783('0x4e')]=_['intersection'](_0x11c52d['model'],_0x11c52d[_0x3783('0x4c')]);_0x37b32d[_0x3783('0x52')]=_[_0x3783('0x4f')](_0x11c52d[_0x3783('0x50')],qs[_0x3783('0x51')](_0x1f8588['query']['fields']));_0x37b32d[_0x3783('0x52')]=_0x37b32d['attributes'][_0x3783('0x53')]?_0x37b32d[_0x3783('0x52')]:_0x11c52d[_0x3783('0x50')];_0x37b32d[_0x3783('0x55')]=qs['sort'](_0x1f8588['query'][_0x3783('0x56')]);_0x37b32d['where']=qs[_0x3783('0x4e')](_['pick'](_0x1f8588[_0x3783('0x4c')],_0x11c52d[_0x3783('0x4e')]));if(_0x1f8588[_0x3783('0x4c')]['filter']){_0x37b32d[_0x3783('0x57')]=_[_0x3783('0x5a')](_0x37b32d[_0x3783('0x57')],{'$or':_[_0x3783('0x46')](_0x37b32d[_0x3783('0x52')],function(_0x326219){var _0x2d27fd={};_0x2d27fd[_0x326219]={'$like':'%'+_0x1f8588[_0x3783('0x4c')][_0x3783('0x59')]+'%'};return _0x2d27fd;})});}_0x37b32d=_['merge']({},_0x37b32d,_0x1f8588['options']);return _0x5e38c3[_0x3783('0x9b')](_0x37b32d);}})[_0x3783('0x11')](function(_0x4372a7){if(_0x4372a7){_0x14be01=_0x4372a7[_0x3783('0x53')];if(!_0x1f8588['query'][_0x3783('0x54')]('nolimit')){_0x37b32d[_0x3783('0x21')]=qs[_0x3783('0x21')](_0x1f8588['query'][_0x3783('0x21')]);_0x37b32d[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x1f8588['query'][_0x3783('0x23')]);}return _0x5e38c3['getApplications'](_0x37b32d);}})[_0x3783('0x11')](function(_0x265977){if(_0x265977){return _0x265977?{'count':_0x14be01,'rows':_0x265977}:null;}})[_0x3783('0x11')](respondWithResult(_0x5c1813,null))['catch'](handleError(_0x5c1813,null));};exports[_0x3783('0x9c')]=function(_0x13f832,_0x2555e4){var _0x4962be={'raw':!![],'where':{}};var _0xebaab9={};var _0x25bd74={'count':0x0,'rows':[]};return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x13f832[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x2555e4,null))[_0x3783('0x11')](function(_0x321273){if(_0x321273){_0xebaab9[_0x3783('0x50')]=_[_0x3783('0x4d')](db['MailMessage'][_0x3783('0x48')]);_0xebaab9[_0x3783('0x4c')]=_[_0x3783('0x4d')](_0x13f832[_0x3783('0x4c')]);_0xebaab9[_0x3783('0x4e')]=_[_0x3783('0x4f')](_0xebaab9[_0x3783('0x50')],_0xebaab9[_0x3783('0x4c')]);_0x4962be['attributes']=_['intersection'](_0xebaab9[_0x3783('0x50')],qs[_0x3783('0x51')](_0x13f832[_0x3783('0x4c')][_0x3783('0x51')]));_0x4962be[_0x3783('0x52')]=_0x4962be[_0x3783('0x52')]['length']?_0x4962be[_0x3783('0x52')]:_0xebaab9[_0x3783('0x50')];if(!_0x13f832[_0x3783('0x4c')][_0x3783('0x54')](_0x3783('0x76'))){_0x4962be['limit']=qs['limit'](_0x13f832[_0x3783('0x4c')][_0x3783('0x21')]);_0x4962be[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x13f832[_0x3783('0x4c')][_0x3783('0x23')]);}_0x4962be[_0x3783('0x55')]=qs['sort'](_0x13f832[_0x3783('0x4c')][_0x3783('0x56')]);_0x4962be[_0x3783('0x57')]=qs[_0x3783('0x4e')](_[_0x3783('0x58')](_0x13f832[_0x3783('0x4c')],_0xebaab9[_0x3783('0x4e')]));_0x4962be[_0x3783('0x57')][_0x3783('0x6d')]=_0x321273['id'];if(_0x13f832[_0x3783('0x4c')][_0x3783('0x59')]){_0x4962be[_0x3783('0x57')]=_['merge'](_0x4962be[_0x3783('0x57')],{'$or':_[_0x3783('0x46')](_0x4962be['attributes'],function(_0x232434){var _0x2f08c3={};_0x2f08c3[_0x232434]={'$like':'%'+_0x13f832['query'][_0x3783('0x59')]+'%'};return _0x2f08c3;})});}if(_0x13f832[_0x3783('0x4c')]['$gte']){var _0x1b8495=_0x13f832['query']['$gte'][_0x3783('0x9d')](',');var _0xec0c0e={};_0xec0c0e[_0x1b8495[0x0]]={'$gte':moment(_0x1b8495[0x1])[_0x3783('0x9e')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4962be[_0x3783('0x57')]=_[_0x3783('0x5a')](_0x4962be[_0x3783('0x57')],_0xec0c0e);}_0x4962be=_[_0x3783('0x5a')]({},_0x4962be,_0x13f832[_0x3783('0x5c')]);return db[_0x3783('0x9f')]['count']({'where':_0x4962be[_0x3783('0x57')]})['then'](function(_0x16f5f8){_0x25bd74[_0x3783('0x22')]=_0x16f5f8;if(_0x13f832[_0x3783('0x4c')]['includeAll']){_0x4962be[_0x3783('0x5e')]=[{'all':!![]}];}return db[_0x3783('0x9f')][_0x3783('0x5f')](_0x4962be);})[_0x3783('0x11')](function(_0x3882a9){if(_0x13f832['query']['inlineCss']===_0x3783('0xa0')){for(var _0x4b860f=0x0;_0x4b860f<_0x3882a9[_0x3783('0x53')];_0x4b860f++){_0x3882a9[_0x4b860f][_0x3783('0x66')]=juice(_0x3882a9[_0x4b860f][_0x3783('0x66')]);}}_0x25bd74['rows']=_0x3882a9;return _0x25bd74;});}})[_0x3783('0x11')](respondWithFilteredResult(_0x2555e4,_0x4962be))[_0x3783('0x61')](handleError(_0x2555e4,null));};exports[_0x3783('0x2b')]=function(_0x4284dc,_0x2d0615){var _0x1c1e19,_0x3d0334={},_0x4c77ff;if(_0x4284dc[_0x3783('0x66')]['to']){_0x4c77ff=_0x4284dc['body']['to'][_0x3783('0x9d')](',')[0x0];}return db['MailAccount'][_0x3783('0x65')]({'where':{'id':_0x4284dc['params']['id']},'include':[{'model':db[_0x3783('0xa1')],'as':_0x3783('0xa2'),'include':[{'model':db[_0x3783('0x8a')],'as':_0x3783('0xa3'),'where':{'email':_0x4c77ff},'limit':0x1,'order':[[_0x3783('0xa4'),_0x3783('0xa5')]]}]},{'model':db[_0x3783('0x44')],'as':_0x3783('0x41'),'raw':!![],'include':[{'model':db[_0x3783('0xa6')],'as':'CloudProvider','raw':!![]}]}]})[_0x3783('0x11')](handleEntityNotFound(_0x2d0615,null))['then'](function(_0x4a3a4b){if(!_0x4a3a4b)return;_0x1c1e19=_0x4a3a4b;if(!_0x4a3a4b[_0x3783('0x41')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0x3783('0x79')](_0x4284dc[_0x3783('0x66')][_0x3783('0xa7')])){_0x4284dc[_0x3783('0x66')][_0x3783('0xa7')]=util[_0x3783('0x9e')](_0x3783('0xa8'),_0x4a3a4b[_0x3783('0x2a')],_0x4a3a4b[_0x3783('0xa9')]||_0x4a3a4b[_0x3783('0x41')][_0x3783('0x35')]);}if(_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')]&&_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')][_0x3783('0x53')]){for(var _0x1729f6=0x0;_0x1729f6<_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')]['length'];_0x1729f6+=0x1){_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')][_0x1729f6]={'filename':_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')][_0x1729f6]['name'],'path':path[_0x3783('0xab')](config[_0x3783('0xac')],'server/files/attachments',_0x4284dc[_0x3783('0x66')][_0x3783('0xaa')][_0x1729f6][_0x3783('0xad')])};}}var _0x22e1b5=_0x4a3a4b[_0x3783('0xae')]();return respondWithRpcPromise(_0x3783('0xaf'),_0x3783('0xb0'),{'account':_0x22e1b5,'message':_0x4284dc[_0x3783('0x66')]});})[_0x3783('0x11')](function(_0x2f43ba){if(!_0x2f43ba)return;_0x3d0334=_0x2f43ba;if(!_0x1c1e19[_0x3783('0xa2')])throw new Error(_0x3783('0xb1'));if(_0x1c1e19[_0x3783('0xa2')][_0x3783('0xa3')]['length'])return _0x1c1e19[_0x3783('0xa2')][_0x3783('0xa3')][0x0];return db['CmContact'][_0x3783('0x74')](_[_0x3783('0x8')](_0x4284dc[_0x3783('0x66')],{'firstName':_0x4284dc[_0x3783('0x66')]['to'],'email':_0x4284dc[_0x3783('0x66')]['to'],'phone':_0x4284dc[_0x3783('0x66')]['to'],'ListId':_0x1c1e19[_0x3783('0x78')]}));})[_0x3783('0x11')](function(_0x1a87d2){if(!_0x1a87d2)return;var _0x2c0414={'UserId':_0x4284dc[_0x3783('0x35')]['id'],'ContactId':_0x1a87d2['id'],'MailAccountId':_0x1c1e19['id'],'inReplyTo':_0x3d0334[_0x3783('0xb2')],'to':_0x4284dc[_0x3783('0x66')][_0x3783('0xa7')],'cc':_0x4284dc[_0x3783('0x66')]['cc'],'subject':_0x4284dc[_0x3783('0x66')][_0x3783('0xb3')],'attach':_0x4284dc[_0x3783('0x66')]['attach'],'firstMsgDirection':_0x3783('0xb4'),'lastMsgAt':moment()[_0x3783('0x9e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0x3783('0xb4'),'Messages':[_[_0x3783('0x5a')](_0x4284dc[_0x3783('0x66')],{'messageId':_0x3d0334[_0x3783('0xb2')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x1c1e19['id'],'UserId':_0x4284dc[_0x3783('0x35')]['id'],'ContactId':_0x1a87d2['id']})]};if(_0x4284dc[_0x3783('0x66')][_0x3783('0xb5')]){_0x2c0414=_[_0x3783('0x5a')](_0x2c0414,_0x4284dc[_0x3783('0x66')][_0x3783('0xb5')]);}return db['MailInteraction'][_0x3783('0x74')](_0x2c0414,{'include':[{'model':db[_0x3783('0x9f')],'as':_0x3783('0xb6')}]});})[_0x3783('0x11')](respondWithResult(_0x2d0615,null))['catch'](handleError(_0x2d0615,null));};exports[_0x3783('0xb7')]=function(_0x14a308,_0x57dde5){return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x14a308[_0x3783('0x63')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x3783('0x41'),'raw':!![],'include':[{'model':db[_0x3783('0xa6')],'as':'CloudProvider','raw':!![]}]}]})[_0x3783('0x11')](handleEntityNotFound(_0x57dde5,null))[_0x3783('0x11')](function(_0x57b547){if(!_0x57b547[_0x3783('0x41')])return;var _0x33ae5d=_0x57b547[_0x3783('0xae')]();return respondWithRpcPromise('VerifySmtp',_0x3783('0xb7'),{'account':_0x33ae5d});})[_0x3783('0x11')](respondWithResult(_0x57dde5,null))[_0x3783('0x61')](handleError(_0x57dde5,null));};exports[_0x3783('0x26')]=function(_0x19dbc1,_0x513484){return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x19dbc1[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x513484,null))[_0x3783('0x11')](function(_0x1a0bfe){if(_0x1a0bfe&&_0x1a0bfe['service']){throw new db[(_0x3783('0xb8'))][(_0x3783('0xb9'))](_0x3783('0xba'));}return _0x1a0bfe;})['then'](removeEntity(_0x513484,null))[_0x3783('0x61')](handleError(_0x513484,null));};exports[_0x3783('0xbb')]=function(_0x7732cf,_0x4856a1){return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x7732cf[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x4856a1,null))[_0x3783('0x11')](function(_0x48e665){if(_0x48e665){return _0x48e665[_0x3783('0xbb')](_0x7732cf['body'][_0x3783('0x71')],_[_0x3783('0xbc')](_0x7732cf['body'],['ids','id'])||{})[_0x3783('0xbd')](function(_0x1583a3){for(var _0x324fb6=0x0;_0x324fb6<_0x7732cf['body'][_0x3783('0x71')][_0x3783('0x53')];_0x324fb6+=0x1){socket['emit'](_0x3783('0xbe'),{'UserId':Number(_0x7732cf[_0x3783('0x66')][_0x3783('0x71')][_0x324fb6]),'MailAccountId':Number(_0x7732cf['params']['id'])});}return _0x1583a3;});}})[_0x3783('0x11')](respondWithResult(_0x4856a1,null))[_0x3783('0x61')](handleError(_0x4856a1,null));};exports[_0x3783('0xbf')]=function(_0x5cb1d5,_0x1f8e2){return db[_0x3783('0x47')][_0x3783('0x65')]({'where':{'id':_0x5cb1d5[_0x3783('0x63')]['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x1f8e2,null))[_0x3783('0x11')](function(_0x5327e6){if(_0x5327e6){return _0x5327e6['removeAgents'](_0x5cb1d5[_0x3783('0x4c')]['ids'])[_0x3783('0x11')](function(){if(_[_0x3783('0xc0')](_0x5cb1d5[_0x3783('0x4c')]['ids'])){for(var _0x50be1e=0x0;_0x50be1e<_0x5cb1d5['query'][_0x3783('0x71')]['length'];_0x50be1e+=0x1){socket[_0x3783('0xc1')]('userMailAccount:remove',{'UserId':Number(_0x5cb1d5[_0x3783('0x4c')][_0x3783('0x71')][_0x50be1e]),'MailAccountId':Number(_0x5cb1d5[_0x3783('0x63')]['id'])});}}else{socket['emit'](_0x3783('0xc2'),{'UserId':Number(_0x5cb1d5['query'][_0x3783('0x71')]),'MailAccountId':Number(_0x5cb1d5[_0x3783('0x63')]['id'])});}});}})[_0x3783('0x11')](respondWithStatusCode(_0x1f8e2,null))['catch'](handleError(_0x1f8e2,null));};exports[_0x3783('0xc3')]=function(_0x77a7fd,_0x504a22){var _0x4fd4d3={};var _0x2440d8={};var _0x342a21;var _0x2cad6e;return db[_0x3783('0x47')][_0x3783('0x6e')]({'where':{'id':_0x77a7fd['params']['id']}})[_0x3783('0x11')](handleEntityNotFound(_0x504a22,null))[_0x3783('0x11')](function(_0x3c9790){if(_0x3c9790){_0x342a21=_0x3c9790;_0x2440d8['model']=_[_0x3783('0x4d')](db[_0x3783('0x8c')]['rawAttributes']);_0x2440d8['query']=_[_0x3783('0x4d')](_0x77a7fd[_0x3783('0x4c')]);_0x2440d8[_0x3783('0x4e')]=_[_0x3783('0x4f')](_0x2440d8[_0x3783('0x50')],_0x2440d8[_0x3783('0x4c')]);_0x4fd4d3['attributes']=_[_0x3783('0x4f')](_0x2440d8[_0x3783('0x50')],qs[_0x3783('0x51')](_0x77a7fd['query'][_0x3783('0x51')]));_0x4fd4d3[_0x3783('0x52')]=_0x4fd4d3[_0x3783('0x52')][_0x3783('0x53')]?_0x4fd4d3[_0x3783('0x52')]:_0x2440d8[_0x3783('0x50')];_0x4fd4d3['order']=qs[_0x3783('0x56')](_0x77a7fd[_0x3783('0x4c')][_0x3783('0x56')]);_0x4fd4d3[_0x3783('0x57')]=qs[_0x3783('0x4e')](_[_0x3783('0x58')](_0x77a7fd[_0x3783('0x4c')],_0x2440d8[_0x3783('0x4e')]));if(_0x77a7fd[_0x3783('0x4c')][_0x3783('0x59')]){_0x4fd4d3[_0x3783('0x57')]=_[_0x3783('0x5a')](_0x4fd4d3['where'],{'$or':_[_0x3783('0x46')](_0x4fd4d3[_0x3783('0x52')],function(_0x4d8fd1){var _0x5add59={};_0x5add59[_0x4d8fd1]={'$like':'%'+_0x77a7fd['query'][_0x3783('0x59')]+'%'};return _0x5add59;})});}_0x4fd4d3=_[_0x3783('0x5a')]({},_0x4fd4d3,_0x77a7fd[_0x3783('0x5c')]);return _0x342a21[_0x3783('0xc3')](_0x4fd4d3);}})[_0x3783('0x11')](function(_0x272b25){if(_0x272b25){_0x2cad6e=_0x272b25['length'];if(!_0x77a7fd[_0x3783('0x4c')][_0x3783('0x54')](_0x3783('0x76'))){_0x4fd4d3['limit']=qs[_0x3783('0x21')](_0x77a7fd[_0x3783('0x4c')][_0x3783('0x21')]);_0x4fd4d3[_0x3783('0x23')]=qs[_0x3783('0x23')](_0x77a7fd['query']['offset']);}return _0x342a21['getAgents'](_0x4fd4d3);}})[_0x3783('0x11')](function(_0x1babf2){if(_0x1babf2){return _0x1babf2?{'count':_0x2cad6e,'rows':_0x1babf2}:null;}})['then'](respondWithResult(_0x504a22,null))[_0x3783('0x61')](handleError(_0x504a22,null));};
\ No newline at end of file
+var _0x022f=['limit','count','offset','set','Content-Range','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','Unknown\x20email\x20service\x20provider','gmail','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','modernAuthentication','CloudProviderId','pass','port','secure','service','authentication','host','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','MailAccount','rawAttributes','type','key','map','keys','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','include','options','body','provider','custom','find','mandatoryDispositionPause','Mail\x20Account\x20not\x20found','describe','MailAccountId','Disposition','findOne','nolimit','removeDispositions','ids','addAnswer','create','getAnswers','CannedAnswer','removeAnswers','email','ListId','isNil','active','description','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','User','fullname','internal','Tag','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','$gte','split','true','CmList','List','Contacts','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','attachments','join','root','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','Sequelize','ValidationError','addAgents','spread','removeAgents','isArray','emit','userMailAccount:remove','getAgents','moment','util','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined'];(function(_0x53af66,_0x3e93a0){var _0x52412e=function(_0x5541fb){while(--_0x5541fb){_0x53af66['push'](_0x53af66['shift']());}};_0x52412e(++_0x3e93a0);}(_0x022f,0x162));var _0xf022=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x022f[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0xf022('0x0'));var BPromise=require('bluebird');var util=require(_0xf022('0x1'));var path=require(_0xf022('0x2'));var _=require(_0xf022('0x3'));var juice=require(_0xf022('0x4'));var Redis=require(_0xf022('0x5'));var qs=require(_0xf022('0x6'));var logger=require(_0xf022('0x7'))(_0xf022('0x8'));var config=require(_0xf022('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xf022('0xa')](config[_0xf022('0xb')],{'host':_0xf022('0xc'),'port':0x18eb});var socket=require(_0xf022('0xd'))(new Redis(config['redis']));require(_0xf022('0xe'))[_0xf022('0xf')](socket);var jayson=require(_0xf022('0x10'));var client=jayson[_0xf022('0x11')][_0xf022('0x12')]({'port':0x232b});function respondWithRpcPromise(_0x4b8360,_0x48e9cd,_0x1d1ce6,_0x1c02eb){return new BPromise(function(_0x2d8cfe,_0x50ca6e){var _0x332616=_0x1c02eb||client;return _0x332616['request'](_0x4b8360,_0x1d1ce6)[_0xf022('0x13')](function(_0x518917){logger[_0xf022('0x14')]('MailAccount,\x20%s,\x20%s',_0x48e9cd,_0xf022('0x15'));logger[_0xf022('0x16')](_0xf022('0x17'),_0x48e9cd,'request\x20sent',JSON['stringify'](_0x518917));if(_0x518917['error']){if(_0x518917[_0xf022('0x18')]['code']===0x1f4){logger['error'](_0xf022('0x19'),_0x48e9cd,_0x518917[_0xf022('0x18')][_0xf022('0x1a')]);return _0x50ca6e(_0x518917['error'][_0xf022('0x1a')]);}logger[_0xf022('0x18')](_0xf022('0x19'),_0x48e9cd,_0x518917[_0xf022('0x18')]['message']);return _0x2d8cfe(_0x518917['error'][_0xf022('0x1a')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x48e9cd,'request\x20sent');_0x2d8cfe(_0x518917[_0xf022('0x1b')][_0xf022('0x1a')]);}})[_0xf022('0x1c')](function(_0x5b902f){logger['error'](_0xf022('0x19'),_0x48e9cd,_0x5b902f);_0x50ca6e(_0x5b902f);});});}function respondWithStatusCode(_0x434dc6,_0x336296){_0x336296=_0x336296||0xcc;return function(_0x188d62){if(_0x188d62){return _0x434dc6[_0xf022('0x1d')](_0x336296);}return _0x434dc6[_0xf022('0x1e')](_0x336296)[_0xf022('0x1f')]();};}function respondWithResult(_0x4cdd92,_0x451845){_0x451845=_0x451845||0xc8;return function(_0x41b25e){if(_0x41b25e){return _0x4cdd92['status'](_0x451845)[_0xf022('0x20')](_0x41b25e);}};}function respondWithFilteredResult(_0x3b6a48,_0x4027e1){return function(_0x4d04c9){if(_0x4d04c9){var _0x436506=typeof _0x4027e1['offset']===_0xf022('0x21')&&typeof _0x4027e1[_0xf022('0x22')]===_0xf022('0x21');var _0x23ea96=_0x4d04c9[_0xf022('0x23')];var _0x45153b=_0x436506?0x0:_0x4027e1[_0xf022('0x24')];var _0x5e3ec5=_0x436506?_0x4d04c9[_0xf022('0x23')]:_0x4027e1['offset']+_0x4027e1[_0xf022('0x22')];var _0xb92324;if(_0x5e3ec5>=_0x23ea96){_0x5e3ec5=_0x23ea96;_0xb92324=0xc8;}else{_0xb92324=0xce;}_0x3b6a48[_0xf022('0x1e')](_0xb92324);return _0x3b6a48[_0xf022('0x25')](_0xf022('0x26'),_0x45153b+'-'+_0x5e3ec5+'/'+_0x23ea96)[_0xf022('0x20')](_0x4d04c9);}return null;};}function saveUpdates(_0x1ab898){return function(_0x5e8fa4){if(_0x5e8fa4){return _0x5e8fa4[_0xf022('0x27')](_0x1ab898)['then'](function(_0x2fa2c9){return _0x2fa2c9;});}return null;};}function removeEntity(_0x26f59f){return function(_0x4193d2){if(_0x4193d2){return _0x4193d2[_0xf022('0x28')]()['then'](function(){var _0x4aa208=_0x4193d2[_0xf022('0x29')]({'plain':!![]});var _0x2e819a=_0xf022('0x2a');return db[_0xf022('0x2b')][_0xf022('0x28')]({'where':{'type':_0x2e819a,'resourceId':_0x4aa208['id']}})[_0xf022('0x13')](function(){return _0x4193d2;});})[_0xf022('0x13')](function(){_0x26f59f['status'](0xcc)[_0xf022('0x1f')]();});}};}function handleEntityNotFound(_0x3f8464){return function(_0x1246e7){if(!_0x1246e7){_0x3f8464[_0xf022('0x1d')](0x194);}return _0x1246e7;};}function handleError(_0x1114af,_0x217008){_0x217008=_0x217008||0x1f4;return function(_0x3ea6ad){logger[_0xf022('0x18')](_0x3ea6ad[_0xf022('0x2c')]);if(_0x3ea6ad[_0xf022('0x2d')]){delete _0x3ea6ad[_0xf022('0x2d')];}_0x1114af[_0xf022('0x1e')](_0x217008)[_0xf022('0x2e')](_0x3ea6ad);};}function getImapHost(_0x1bee8f){switch(_0x1bee8f){case'gmail':return _0xf022('0x2f');case _0xf022('0x30'):return _0xf022('0x31');case _0xf022('0x32'):return _0xf022('0x33');case _0xf022('0x34'):return'outlook.office365.com';}throw new Error(_0xf022('0x35'),_0x1bee8f);}function getSmtpHost(_0x1fc48f){switch(_0x1fc48f){case _0xf022('0x36'):return _0xf022('0x37');case _0xf022('0x30'):return'smtp.mail.yahoo.com';case _0xf022('0x32'):return _0xf022('0x38');case _0xf022('0x34'):return _0xf022('0x39');}throw new Error(_0xf022('0x35'),_0x1fc48f);}function getAuthenticationOptions(_0x1da833,_0x399d0c){var _0x575c37={};var _0xac704={};if(_0x1da833){_0x575c37[_0xf022('0x3a')]=_0xac704[_0xf022('0x3a')]=_0x399d0c[_0xf022('0x3b')];_0x575c37[_0xf022('0x3c')]=_0xac704['pass']=_0x399d0c[_0xf022('0x3c')];if(_0x399d0c[_0xf022('0x3d')]){_0x575c37['modernAuthentication']=_0xac704['modernAuthentication']=!![];_0x575c37['CloudProviderId']=_0xac704[_0xf022('0x3e')]=_0x399d0c[_0xf022('0x3e')];_0x575c37[_0xf022('0x3c')]=_0xac704[_0xf022('0x3f')]=null;}else{_0x575c37[_0xf022('0x3e')]=_0xac704[_0xf022('0x3e')]=null;}_0x575c37['host']=getImapHost(_0x1da833);_0x575c37[_0xf022('0x40')]=0x3e1;_0xac704['host']=getSmtpHost(_0x1da833);_0xac704[_0xf022('0x40')]=0x24b;_0xac704[_0xf022('0x41')]=![];_0x575c37['service']=_0xac704[_0xf022('0x42')]=null;}else{if(_0x399d0c['authentication']){_0x575c37[_0xf022('0x3a')]=_0xac704['user']=_0x399d0c[_0xf022('0x3b')];_0x575c37['password']=_0xac704['pass']=_0x399d0c['password'];}else{_0x575c37[_0xf022('0x43')]=_0xac704['authentication']=![];_0x575c37[_0xf022('0x3a')]=_0xac704['user']=null;_0x575c37['password']=_0xac704[_0xf022('0x3f')]=null;}_0x575c37[_0xf022('0x44')]=_0x399d0c[_0xf022('0x45')][_0xf022('0x44')];_0x575c37[_0xf022('0x40')]=_0x399d0c[_0xf022('0x45')][_0xf022('0x40')];_0xac704['host']=_0x399d0c['Smtp']['host'];_0xac704[_0xf022('0x40')]=_0x399d0c[_0xf022('0x46')][_0xf022('0x40')];}return{'Imap':_0x575c37,'Smtp':_0xac704};}exports[_0xf022('0x47')]=function(_0x2257cc,_0x45acb2){var _0x1e715b={'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':'mandatoryDispositionPause'}]},_0x3957a7={},_0x338410={'count':0x0,'rows':[]};var _0x5a1916=_['map'](db[_0xf022('0x4b')][_0xf022('0x4c')],function(_0x539d00){return{'name':_0x539d00['fieldName'],'type':_0x539d00[_0xf022('0x4d')][_0xf022('0x4e')]};});_0x3957a7['model']=_[_0xf022('0x4f')](_0x5a1916,_0xf022('0x2d'));_0x3957a7['query']=_[_0xf022('0x50')](_0x2257cc['query']);_0x3957a7[_0xf022('0x51')]=_[_0xf022('0x52')](_0x3957a7[_0xf022('0x53')],_0x3957a7[_0xf022('0x54')]);_0x1e715b['attributes']=_[_0xf022('0x52')](_0x3957a7[_0xf022('0x53')],qs[_0xf022('0x55')](_0x2257cc[_0xf022('0x54')][_0xf022('0x55')]));_0x1e715b['attributes']=_0x1e715b[_0xf022('0x56')][_0xf022('0x57')]?_0x1e715b['attributes']:_0x3957a7[_0xf022('0x53')];if(!_0x2257cc['query'][_0xf022('0x58')]('nolimit')){_0x1e715b['limit']=qs[_0xf022('0x22')](_0x2257cc[_0xf022('0x54')]['limit']);_0x1e715b[_0xf022('0x24')]=qs[_0xf022('0x24')](_0x2257cc[_0xf022('0x54')]['offset']);}_0x1e715b[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x2257cc['query'][_0xf022('0x5a')]);_0x1e715b[_0xf022('0x5b')]=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x2257cc[_0xf022('0x54')],_0x3957a7['filters']),_0x5a1916);if(_0x2257cc[_0xf022('0x54')][_0xf022('0x5d')]){_0x1e715b[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x1e715b['where'],{'$or':_['map'](_0x5a1916,function(_0xe3c9c8){if(_0xe3c9c8[_0xf022('0x4d')]!=='VIRTUAL'){var _0x2c3605={};_0x2c3605[_0xe3c9c8[_0xf022('0x2d')]]={'$like':'%'+_0x2257cc['query']['filter']+'%'};return _0x2c3605;}})});}_0x1e715b=_[_0xf022('0x5e')]({},_0x1e715b,_0x2257cc['options']);var _0x1c0b3e={'where':_0x1e715b['where']};return db[_0xf022('0x4b')]['count'](_0x1c0b3e)[_0xf022('0x13')](function(_0x353c34){_0x338410[_0xf022('0x23')]=_0x353c34;if(_0x2257cc[_0xf022('0x54')][_0xf022('0x5f')]){_0x1e715b['include']=[{'all':!![]}];}return db[_0xf022('0x4b')][_0xf022('0x60')](_0x1e715b);})[_0xf022('0x13')](function(_0x44a00f){_0x338410[_0xf022('0x61')]=_0x44a00f;return _0x338410;})[_0xf022('0x13')](respondWithFilteredResult(_0x45acb2,_0x1e715b))[_0xf022('0x1c')](handleError(_0x45acb2,null));};exports[_0xf022('0x62')]=function(_0x8e3e31,_0x27b5fd){var _0x239484={'raw':![],'where':{'id':_0x8e3e31[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db['MailServerOut'],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':'mandatoryDispositionPause'}]},_0x5886e2={};_0x5886e2['model']=_[_0xf022('0x50')](db[_0xf022('0x4b')][_0xf022('0x4c')]);_0x5886e2['query']=_[_0xf022('0x50')](_0x8e3e31[_0xf022('0x54')]);_0x5886e2[_0xf022('0x51')]=_['intersection'](_0x5886e2[_0xf022('0x53')],_0x5886e2[_0xf022('0x54')]);_0x239484[_0xf022('0x56')]=_[_0xf022('0x52')](_0x5886e2[_0xf022('0x53')],qs[_0xf022('0x55')](_0x8e3e31[_0xf022('0x54')]['fields']));_0x239484['attributes']=_0x239484[_0xf022('0x56')]['length']?_0x239484[_0xf022('0x56')]:_0x5886e2[_0xf022('0x53')];if(_0x8e3e31[_0xf022('0x54')][_0xf022('0x5f')]){_0x239484[_0xf022('0x64')]=[{'all':!![]}];}_0x239484=_[_0xf022('0x5e')]({},_0x239484,_0x8e3e31[_0xf022('0x65')]);return db[_0xf022('0x4b')]['find'](_0x239484)[_0xf022('0x13')](handleEntityNotFound(_0x27b5fd,null))[_0xf022('0x13')](respondWithResult(_0x27b5fd,null))[_0xf022('0x1c')](handleError(_0x27b5fd,null));};exports[_0xf022('0x27')]=function(_0x1ae22f,_0x3f4a74){if(_0x1ae22f[_0xf022('0x66')]['id']){delete _0x1ae22f[_0xf022('0x66')]['id'];}var _0x1915c5=_0x1ae22f[_0xf022('0x66')][_0xf022('0x67')]===_0xf022('0x68')?null:_0x1ae22f[_0xf022('0x66')][_0xf022('0x67')];var _0x38f985=_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')]||{};var _0x45a6b0=_0x1ae22f[_0xf022('0x66')][_0xf022('0x46')]||{};if(_0x1915c5){_0x38f985['host']=getImapHost(_0x1915c5);_0x38f985['port']=0x3e1;_0x45a6b0[_0xf022('0x44')]=getSmtpHost(_0x1915c5);_0x45a6b0[_0xf022('0x40')]=0x24b;_0x45a6b0[_0xf022('0x41')]=![];}if(_0x45a6b0[_0xf022('0x3d')]){_0x45a6b0['secure']=![];}else{_0x45a6b0[_0xf022('0x3e')]=null;}if(!_0x38f985[_0xf022('0x3d')])_0x38f985[_0xf022('0x3e')]=null;_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')]=_0x38f985;_0x1ae22f[_0xf022('0x66')]['Smtp']=_0x45a6b0;return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x1ae22f[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x48')],'as':_0xf022('0x45')},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x4a')],'as':_0xf022('0x6a')}]})[_0xf022('0x13')](handleEntityNotFound(_0x3f4a74,null))[_0xf022('0x13')](function(_0x2adc5a){if(!_0x2adc5a)throw new Error(_0xf022('0x6b'));if(_0x2adc5a[_0xf022('0x42')])delete _0x1ae22f['body'][_0xf022('0x45')];return _0x2adc5a;})[_0xf022('0x13')](saveUpdates(_0x1ae22f['body'],null))[_0xf022('0x13')](function(_0x357897){if(!_0x1ae22f['body'][_0xf022('0x45')])return _0x357897;return db[_0xf022('0x48')][_0xf022('0x27')](_0x1ae22f[_0xf022('0x66')][_0xf022('0x45')],{'where':{'MailAccountId':_0x357897['id']}})[_0xf022('0x13')](function(){return _0x357897;});})[_0xf022('0x13')](function(_0x2520d4){if(!_0x1ae22f['body'][_0xf022('0x46')])return _0x2520d4;return db[_0xf022('0x49')]['update'](_0x1ae22f[_0xf022('0x66')][_0xf022('0x46')],{'where':{'MailAccountId':_0x2520d4['id']}})[_0xf022('0x13')](function(){return _0x2520d4;});})[_0xf022('0x13')](respondWithResult(_0x3f4a74,null))[_0xf022('0x1c')](handleError(_0x3f4a74,null));};exports['describe']=function(_0x3d21b7,_0x3371fd){return db[_0xf022('0x4b')][_0xf022('0x6c')]()['then'](respondWithResult(_0x3371fd,null))[_0xf022('0x1c')](handleError(_0x3371fd,null));};exports['addDisposition']=function(_0x2fe256,_0x10fd16){if(_0x2fe256[_0xf022('0x66')]['id']){delete _0x2fe256[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')]['find']({'where':{'id':_0x2fe256[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x10fd16,null))[_0xf022('0x13')](function(_0x34e8eb){if(_0x34e8eb){_0x2fe256[_0xf022('0x66')][_0xf022('0x6d')]=_0x34e8eb['id'];return db[_0xf022('0x6e')]['create'](_0x2fe256[_0xf022('0x66')]);}})['then'](respondWithResult(_0x10fd16,null))[_0xf022('0x1c')](handleError(_0x10fd16,null));};exports['getDispositions']=function(_0xea878b,_0x2218aa){var _0xc2f1f8={'raw':![],'where':{}};var _0x2f216c={};var _0x1fd04d={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0xea878b[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x2218aa,null))[_0xf022('0x13')](function(_0x5c61f0){if(_0x5c61f0){_0x2f216c[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x6e')]['rawAttributes']);_0x2f216c[_0xf022('0x54')]=_[_0xf022('0x50')](_0xea878b[_0xf022('0x54')]);_0x2f216c[_0xf022('0x51')]=_['intersection'](_0x2f216c['model'],_0x2f216c['query']);_0xc2f1f8[_0xf022('0x56')]=_[_0xf022('0x52')](_0x2f216c['model'],qs['fields'](_0xea878b['query'][_0xf022('0x55')]));_0xc2f1f8[_0xf022('0x56')]=_0xc2f1f8['attributes'][_0xf022('0x57')]?_0xc2f1f8[_0xf022('0x56')]:_0x2f216c[_0xf022('0x53')];if(!_0xea878b[_0xf022('0x54')][_0xf022('0x58')](_0xf022('0x70'))){_0xc2f1f8[_0xf022('0x22')]=qs[_0xf022('0x22')](_0xea878b[_0xf022('0x54')][_0xf022('0x22')]);_0xc2f1f8[_0xf022('0x24')]=qs[_0xf022('0x24')](_0xea878b['query']['offset']);}_0xc2f1f8[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0xea878b['query'][_0xf022('0x5a')]);_0xc2f1f8[_0xf022('0x5b')]=qs['filters'](_[_0xf022('0x5c')](_0xea878b[_0xf022('0x54')],_0x2f216c[_0xf022('0x51')]));_0xc2f1f8[_0xf022('0x5b')]['MailAccountId']=_0x5c61f0['id'];if(_0xea878b[_0xf022('0x54')][_0xf022('0x5d')]){_0xc2f1f8[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0xc2f1f8[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0xc2f1f8[_0xf022('0x56')],function(_0x378d0c){var _0x42cccc={};_0x42cccc[_0x378d0c]={'$like':'%'+_0xea878b[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x42cccc;})});}_0xc2f1f8=_[_0xf022('0x5e')]({},_0xc2f1f8,_0xea878b[_0xf022('0x65')]);return db[_0xf022('0x6e')][_0xf022('0x23')]({'where':_0xc2f1f8[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x428792){_0x1fd04d[_0xf022('0x23')]=_0x428792;if(_0xea878b[_0xf022('0x54')][_0xf022('0x5f')]){_0xc2f1f8[_0xf022('0x64')]=[{'all':!![]}];}return db[_0xf022('0x6e')][_0xf022('0x60')](_0xc2f1f8);})[_0xf022('0x13')](function(_0x21197c){_0x1fd04d[_0xf022('0x61')]=_0x21197c;return _0x1fd04d;});}})['then'](respondWithFilteredResult(_0x2218aa,_0xc2f1f8))[_0xf022('0x1c')](handleError(_0x2218aa,null));};exports['removeDispositions']=function(_0xf88699,_0x511177){return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0xf88699[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x511177,null))[_0xf022('0x13')](function(_0x15bd6f){if(_0x15bd6f){return _0x15bd6f[_0xf022('0x71')](_0xf88699[_0xf022('0x54')][_0xf022('0x72')]);}})['then'](respondWithStatusCode(_0x511177,null))[_0xf022('0x1c')](handleError(_0x511177,null));};exports[_0xf022('0x73')]=function(_0x4fe733,_0x56ab53){if(_0x4fe733[_0xf022('0x66')]['id']){delete _0x4fe733[_0xf022('0x66')]['id'];}return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x4fe733[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x56ab53,null))['then'](function(_0x1a2e8c){if(_0x1a2e8c){_0x4fe733[_0xf022('0x66')][_0xf022('0x6d')]=_0x1a2e8c['id'];return db['CannedAnswer'][_0xf022('0x74')](_0x4fe733[_0xf022('0x66')]);}})[_0xf022('0x13')](respondWithResult(_0x56ab53,null))[_0xf022('0x1c')](handleError(_0x56ab53,null));};exports[_0xf022('0x75')]=function(_0x422d32,_0x3f7c29){var _0x1fd0fd={'raw':![],'where':{}};var _0x1b6f56={};var _0x560aee={'count':0x0,'rows':[]};return db[_0xf022('0x4b')]['findOne']({'where':{'id':_0x422d32[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x3f7c29,null))[_0xf022('0x13')](function(_0x10d925){if(_0x10d925){_0x1b6f56[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x76')][_0xf022('0x4c')]);_0x1b6f56['query']=_[_0xf022('0x50')](_0x422d32[_0xf022('0x54')]);_0x1b6f56[_0xf022('0x51')]=_[_0xf022('0x52')](_0x1b6f56[_0xf022('0x53')],_0x1b6f56[_0xf022('0x54')]);_0x1fd0fd[_0xf022('0x56')]=_[_0xf022('0x52')](_0x1b6f56[_0xf022('0x53')],qs['fields'](_0x422d32[_0xf022('0x54')][_0xf022('0x55')]));_0x1fd0fd[_0xf022('0x56')]=_0x1fd0fd[_0xf022('0x56')]['length']?_0x1fd0fd[_0xf022('0x56')]:_0x1b6f56['model'];if(!_0x422d32['query'][_0xf022('0x58')](_0xf022('0x70'))){_0x1fd0fd['limit']=qs['limit'](_0x422d32['query'][_0xf022('0x22')]);_0x1fd0fd['offset']=qs['offset'](_0x422d32[_0xf022('0x54')][_0xf022('0x24')]);}_0x1fd0fd[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x422d32[_0xf022('0x54')]['sort']);_0x1fd0fd['where']=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x422d32[_0xf022('0x54')],_0x1b6f56['filters']));_0x1fd0fd['where'][_0xf022('0x6d')]=_0x10d925['id'];if(_0x422d32['query'][_0xf022('0x5d')]){_0x1fd0fd[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x1fd0fd[_0xf022('0x5b')],{'$or':_['map'](_0x1fd0fd[_0xf022('0x56')],function(_0x4a4842){var _0x4a429c={};_0x4a429c[_0x4a4842]={'$like':'%'+_0x422d32[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x4a429c;})});}_0x1fd0fd=_[_0xf022('0x5e')]({},_0x1fd0fd,_0x422d32[_0xf022('0x65')]);return db[_0xf022('0x76')][_0xf022('0x23')]({'where':_0x1fd0fd['where']})['then'](function(_0x4414b4){_0x560aee['count']=_0x4414b4;if(_0x422d32[_0xf022('0x54')][_0xf022('0x5f')]){_0x1fd0fd[_0xf022('0x64')]=[{'all':!![]}];}return db[_0xf022('0x76')][_0xf022('0x60')](_0x1fd0fd);})['then'](function(_0x51bf19){_0x560aee['rows']=_0x51bf19;return _0x560aee;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x3f7c29,_0x1fd0fd))[_0xf022('0x1c')](handleError(_0x3f7c29,null));};exports[_0xf022('0x77')]=function(_0x4e54cf,_0x5839f0){return db[_0xf022('0x4b')]['find']({'where':{'id':_0x4e54cf[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0x5839f0,null))['then'](function(_0x1189c9){if(_0x1189c9){return _0x1189c9[_0xf022('0x77')](_0x4e54cf[_0xf022('0x54')][_0xf022('0x72')]);}})[_0xf022('0x13')](respondWithStatusCode(_0x5839f0,null))[_0xf022('0x1c')](handleError(_0x5839f0,null));};exports['create']=function(_0x259617,_0x1cd738){var _0xd70ba7={'name':_0x259617[_0xf022('0x66')][_0xf022('0x2d')],'key':_0x259617[_0xf022('0x66')][_0xf022('0x4e')],'provider':_0x259617[_0xf022('0x66')][_0xf022('0x67')]===_0xf022('0x68')?null:_0x259617[_0xf022('0x66')]['provider'],'email':_0x259617[_0xf022('0x66')][_0xf022('0x78')],'ListId':_0x259617[_0xf022('0x66')][_0xf022('0x79')],'active':!_[_0xf022('0x7a')](_0x259617[_0xf022('0x66')][_0xf022('0x7b')])?_0x259617[_0xf022('0x66')]['active']:!![],'description':_0x259617[_0xf022('0x66')][_0xf022('0x7c')]||null};var _0x2ffcde=getAuthenticationOptions(_0xd70ba7['provider'],_0x259617[_0xf022('0x66')]);_0xd70ba7['Imap']=_0x2ffcde['Imap'];_0xd70ba7[_0xf022('0x46')]=_0x2ffcde[_0xf022('0x46')];return db[_0xf022('0x4b')][_0xf022('0x74')](_0xd70ba7,{'include':[{'model':db[_0xf022('0x49')],'as':_0xf022('0x46')},{'model':db[_0xf022('0x48')],'as':'Imap'}]})[_0xf022('0x13')](function(_0x4cc6ba){var _0x57e4e7=_0x259617[_0xf022('0x3a')][_0xf022('0x29')]({'plain':!![]});if(!_0x57e4e7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57e4e7[_0xf022('0x7d')]==='user'){var _0x435ed4=_0x4cc6ba['get']({'plain':!![]});return db[_0xf022('0x7e')]['find']({'where':{'name':_0xf022('0x2a'),'userProfileId':_0x57e4e7[_0xf022('0x7f')]},'raw':!![]})[_0xf022('0x13')](function(_0x2cc979){if(_0x2cc979&&_0x2cc979['autoAssociation']===0x0){return db[_0xf022('0x2b')][_0xf022('0x74')]({'name':_0x435ed4[_0xf022('0x2d')],'resourceId':_0x435ed4['id'],'type':_0x2cc979[_0xf022('0x2d')],'sectionId':_0x2cc979['id']},{})[_0xf022('0x13')](function(){return _0x4cc6ba;});}else{return _0x4cc6ba;}})[_0xf022('0x1c')](function(_0x1f5952){logger[_0xf022('0x18')](_0xf022('0x80'),_0x1f5952);throw _0x1f5952;});}return _0x4cc6ba;})['then'](respondWithResult(_0x1cd738,0xc9))[_0xf022('0x1c')](handleError(_0x1cd738,null));};exports['getImap']=function(_0x20bcb6,_0xb0a363){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x20bcb6[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0xb0a363,null))[_0xf022('0x13')](function(_0xcd7a8d){if(_0xcd7a8d){return _0xcd7a8d[_0xf022('0x81')]();}return null;})[_0xf022('0x13')](respondWithResult(_0xb0a363,null))[_0xf022('0x1c')](handleError(_0xb0a363,null));};exports[_0xf022('0x82')]=function(_0x50e05a,_0x553c26){if(_0x50e05a[_0xf022('0x66')]['id']){delete _0x50e05a[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')]['find']({'where':{'id':_0x50e05a[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x553c26,null))[_0xf022('0x13')](function(_0x2ec738){if(_0x2ec738){_0x50e05a[_0xf022('0x66')][_0xf022('0x6d')]=_0x2ec738['id'];return db[_0xf022('0x48')][_0xf022('0x74')](_0x50e05a[_0xf022('0x66')]);}})[_0xf022('0x13')](respondWithResult(_0x553c26,null))[_0xf022('0x1c')](handleError(_0x553c26,null));};exports[_0xf022('0x83')]=function(_0x26e9a7,_0x297244){return db['MailAccount'][_0xf022('0x6f')]({'where':{'id':_0x26e9a7[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x297244,null))[_0xf022('0x13')](function(_0x1ee32b){if(_0x1ee32b){return _0x1ee32b['setImap'](null);}return null;})['then'](respondWithStatusCode(_0x297244,null))[_0xf022('0x1c')](handleError(_0x297244,null));};exports[_0xf022('0x84')]=function(_0x16002b,_0x7c2bb4){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x16002b[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x7c2bb4,null))[_0xf022('0x13')](function(_0x4cb07a){if(_0x4cb07a){return _0x4cb07a[_0xf022('0x84')]();}return null;})['then'](respondWithResult(_0x7c2bb4,null))[_0xf022('0x1c')](handleError(_0x7c2bb4,null));};exports[_0xf022('0x85')]=function(_0x5b0fd6,_0x270da7){if(_0x5b0fd6[_0xf022('0x66')]['id']){delete _0x5b0fd6[_0xf022('0x66')]['id'];}return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x5b0fd6[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x270da7,null))[_0xf022('0x13')](function(_0x45a48e){if(_0x45a48e){_0x5b0fd6[_0xf022('0x66')][_0xf022('0x6d')]=_0x45a48e['id'];return db[_0xf022('0x49')][_0xf022('0x74')](_0x5b0fd6[_0xf022('0x66')]);}})['then'](respondWithResult(_0x270da7,null))['catch'](handleError(_0x270da7,null));};exports[_0xf022('0x86')]=function(_0x10e014,_0x2f5e14){return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x10e014[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x2f5e14,null))['then'](function(_0x92474){if(_0x92474){return _0x92474[_0xf022('0x87')](null);}return null;})['then'](respondWithStatusCode(_0x2f5e14,null))[_0xf022('0x1c')](handleError(_0x2f5e14,null));};exports[_0xf022('0x88')]=function(_0x3f9bbb,_0x16c3df){return db[_0xf022('0x89')]['find']({'where':{'id':_0x3f9bbb['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x16c3df,null))[_0xf022('0x13')](function(_0x2cf3d1){if(_0x2cf3d1){return _0x2cf3d1['addInteraction'](_0x3f9bbb[_0xf022('0x66')]['ids'],_[_0xf022('0x8a')](_0x3f9bbb['body'],[_0xf022('0x72'),'id'])||{});}})[_0xf022('0x13')](respondWithResult(_0x16c3df,null))[_0xf022('0x1c')](handleError(_0x16c3df,null));};exports[_0xf022('0x8b')]=function(_0x446b7c,_0x3cc1a6){var _0x4d5e02={'raw':![],'where':{}};var _0x535d0a={};var _0x492985={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x446b7c[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x3cc1a6,null))[_0xf022('0x13')](function(_0x1c0b3d){if(_0x1c0b3d){_0x535d0a[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x89')][_0xf022('0x4c')]);_0x535d0a[_0xf022('0x54')]=_[_0xf022('0x50')](_0x446b7c[_0xf022('0x54')]);_0x535d0a['filters']=_['intersection'](_0x535d0a[_0xf022('0x53')],_0x535d0a[_0xf022('0x54')]);_0x4d5e02[_0xf022('0x56')]=_[_0xf022('0x52')](_0x535d0a[_0xf022('0x53')],qs[_0xf022('0x55')](_0x446b7c['query'][_0xf022('0x55')]));_0x4d5e02['attributes']=_0x4d5e02[_0xf022('0x56')]['length']?_0x4d5e02[_0xf022('0x56')]:_0x535d0a['model'];if(!_0x446b7c[_0xf022('0x54')][_0xf022('0x58')](_0xf022('0x70'))){_0x4d5e02['limit']=qs[_0xf022('0x22')](_0x446b7c['query']['limit']);_0x4d5e02['offset']=qs[_0xf022('0x24')](_0x446b7c[_0xf022('0x54')]['offset']);}_0x4d5e02[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x446b7c[_0xf022('0x54')][_0xf022('0x5a')]);_0x4d5e02['where']=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x446b7c[_0xf022('0x54')],_0x535d0a[_0xf022('0x51')]));_0x4d5e02['where'][_0xf022('0x6d')]=_0x1c0b3d['id'];if(_0x446b7c[_0xf022('0x54')]['filter']){_0x4d5e02[_0xf022('0x5b')]=_['merge'](_0x4d5e02[_0xf022('0x5b')],{'$or':_['map'](_0x4d5e02[_0xf022('0x56')],function(_0x1561a9){var _0x2a6f93={};_0x2a6f93[_0x1561a9]={'$like':'%'+_0x446b7c[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x2a6f93;})});}_0x4d5e02=_[_0xf022('0x5e')]({},_0x4d5e02,_0x446b7c[_0xf022('0x65')]);return db[_0xf022('0x89')][_0xf022('0x23')]({'where':_0x4d5e02[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x27a083){_0x492985[_0xf022('0x23')]=_0x27a083;if(_0x446b7c[_0xf022('0x54')]['includeAll']){_0x4d5e02['include']=[{'model':db[_0xf022('0x8c')],'as':'Contact','required':![]},{'model':db[_0xf022('0x8d')],'as':'Owner','attributes':[_0xf022('0x2d'),_0xf022('0x8e'),_0xf022('0x8f')],'required':![]},{'model':db[_0xf022('0x90')],'as':'Tags','attributes':['id',_0xf022('0x2d'),'color'],'where':_0x446b7c[_0xf022('0x54')][_0xf022('0x91')]?{'id':_0x446b7c['query'][_0xf022('0x91')]}:undefined,'required':_0x446b7c['query'][_0xf022('0x91')]?!![]:![]}];}return db[_0xf022('0x89')][_0xf022('0x60')](_0x4d5e02);})[_0xf022('0x13')](function(_0x249ac4){_0x492985[_0xf022('0x61')]=_0x249ac4;return _0x492985;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x3cc1a6,_0x4d5e02))[_0xf022('0x1c')](handleError(_0x3cc1a6,null));};exports[_0xf022('0x92')]=function addApplications(_0x40a5a2,_0x5c9f9f){var _0x15b58a=_0x40a5a2[_0xf022('0x63')]['id'];var _0x374275=_0x40a5a2[_0xf022('0x66')];var _0x2fad82=0xc8;var _0x115ccf=null;return db[_0xf022('0x93')][_0xf022('0x94')]({'isolationLevel':db[_0xf022('0x93')][_0xf022('0x95')][_0xf022('0x96')][_0xf022('0x97')]},function(_0x5304ec){return db[_0xf022('0x4b')]['findOne']({'where':{'id':_0x15b58a},'transaction':_0x5304ec})['then'](function(_0x669e51){if(_0x669e51){return db[_0xf022('0x98')]['destroy']({'where':{'MailAccountId':_0x15b58a},'transaction':_0x5304ec})[_0xf022('0x13')](function(){var _0x2c56d8=_[_0xf022('0x4f')](_0x374275,function(_0x867cf7){_0x867cf7[_0xf022('0x6d')]=_0x15b58a;return _0x867cf7;});return db[_0xf022('0x98')][_0xf022('0x99')](_0x2c56d8,{'transaction':_0x5304ec});});}else{_0x2fad82=0x194;_0x115ccf=[];}});})[_0xf022('0x13')](function(){if(_0x2fad82!==0x194){return db[_0xf022('0x98')][_0xf022('0x9a')]({'where':{'MailAccountId':_0x15b58a},'order':_0xf022('0x9b')})[_0xf022('0x13')](function(_0x1f83e2){_0x115ccf=_0x1f83e2;});}})[_0xf022('0x1c')](function(_0x53c328){_0x2fad82=0x1f4;logger['error'](_0x53c328[_0xf022('0x2c')]);if(_0x53c328[_0xf022('0x2d')]){delete _0x53c328['name'];}_0x115ccf=_0x53c328;})[_0xf022('0x9c')](function(){if(_0x115ccf===null){_0x5c9f9f['sendStatus'](_0x2fad82);}else{if(_0x2fad82===0x1f4){_0x5c9f9f[_0xf022('0x1e')](_0x2fad82)['send'](_0x115ccf);}else{_0x5c9f9f['status'](_0x2fad82)[_0xf022('0x20')](_0x115ccf);}}});};exports[_0xf022('0x9d')]=function(_0x3dfa83,_0x5c40cd){var _0x363b39={};var _0x11f492={};var _0x552c13;var _0x2d04bc;return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x3dfa83['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x5c40cd,null))[_0xf022('0x13')](function(_0x1a25c5){if(_0x1a25c5){_0x552c13=_0x1a25c5;_0x11f492[_0xf022('0x53')]=_['keys'](db[_0xf022('0x98')]['rawAttributes']);_0x11f492[_0xf022('0x54')]=_['keys'](_0x3dfa83[_0xf022('0x54')]);_0x11f492[_0xf022('0x51')]=_['intersection'](_0x11f492[_0xf022('0x53')],_0x11f492[_0xf022('0x54')]);_0x363b39[_0xf022('0x56')]=_[_0xf022('0x52')](_0x11f492['model'],qs['fields'](_0x3dfa83[_0xf022('0x54')][_0xf022('0x55')]));_0x363b39['attributes']=_0x363b39[_0xf022('0x56')][_0xf022('0x57')]?_0x363b39[_0xf022('0x56')]:_0x11f492[_0xf022('0x53')];_0x363b39[_0xf022('0x59')]=qs[_0xf022('0x5a')](_0x3dfa83[_0xf022('0x54')][_0xf022('0x5a')]);_0x363b39[_0xf022('0x5b')]=qs[_0xf022('0x51')](_[_0xf022('0x5c')](_0x3dfa83[_0xf022('0x54')],_0x11f492[_0xf022('0x51')]));if(_0x3dfa83[_0xf022('0x54')][_0xf022('0x5d')]){_0x363b39[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0x363b39[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0x363b39['attributes'],function(_0x5b5936){var _0x2339c3={};_0x2339c3[_0x5b5936]={'$like':'%'+_0x3dfa83[_0xf022('0x54')]['filter']+'%'};return _0x2339c3;})});}_0x363b39=_[_0xf022('0x5e')]({},_0x363b39,_0x3dfa83['options']);return _0x552c13[_0xf022('0x9d')](_0x363b39);}})[_0xf022('0x13')](function(_0x45c4b2){if(_0x45c4b2){_0x2d04bc=_0x45c4b2[_0xf022('0x57')];if(!_0x3dfa83[_0xf022('0x54')][_0xf022('0x58')]('nolimit')){_0x363b39[_0xf022('0x22')]=qs['limit'](_0x3dfa83['query']['limit']);_0x363b39['offset']=qs[_0xf022('0x24')](_0x3dfa83['query'][_0xf022('0x24')]);}return _0x552c13['getApplications'](_0x363b39);}})[_0xf022('0x13')](function(_0x2d27ae){if(_0x2d27ae){return _0x2d27ae?{'count':_0x2d04bc,'rows':_0x2d27ae}:null;}})['then'](respondWithResult(_0x5c40cd,null))[_0xf022('0x1c')](handleError(_0x5c40cd,null));};exports[_0xf022('0x9e')]=function(_0x54f3c4,_0x346067){var _0xbccc1d={'raw':!![],'where':{}};var _0x56b139={};var _0x4cd9f9={'count':0x0,'rows':[]};return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x54f3c4[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x346067,null))[_0xf022('0x13')](function(_0x1393bc){if(_0x1393bc){_0x56b139[_0xf022('0x53')]=_[_0xf022('0x50')](db[_0xf022('0x9f')][_0xf022('0x4c')]);_0x56b139[_0xf022('0x54')]=_[_0xf022('0x50')](_0x54f3c4['query']);_0x56b139[_0xf022('0x51')]=_['intersection'](_0x56b139[_0xf022('0x53')],_0x56b139['query']);_0xbccc1d['attributes']=_[_0xf022('0x52')](_0x56b139['model'],qs['fields'](_0x54f3c4[_0xf022('0x54')][_0xf022('0x55')]));_0xbccc1d['attributes']=_0xbccc1d['attributes']['length']?_0xbccc1d['attributes']:_0x56b139['model'];if(!_0x54f3c4['query'][_0xf022('0x58')]('nolimit')){_0xbccc1d[_0xf022('0x22')]=qs[_0xf022('0x22')](_0x54f3c4['query'][_0xf022('0x22')]);_0xbccc1d['offset']=qs[_0xf022('0x24')](_0x54f3c4[_0xf022('0x54')][_0xf022('0x24')]);}_0xbccc1d[_0xf022('0x59')]=qs['sort'](_0x54f3c4['query']['sort']);_0xbccc1d[_0xf022('0x5b')]=qs['filters'](_[_0xf022('0x5c')](_0x54f3c4[_0xf022('0x54')],_0x56b139[_0xf022('0x51')]));_0xbccc1d[_0xf022('0x5b')]['MailAccountId']=_0x1393bc['id'];if(_0x54f3c4[_0xf022('0x54')]['filter']){_0xbccc1d['where']=_[_0xf022('0x5e')](_0xbccc1d[_0xf022('0x5b')],{'$or':_[_0xf022('0x4f')](_0xbccc1d[_0xf022('0x56')],function(_0x1ff840){var _0x37c7d0={};_0x37c7d0[_0x1ff840]={'$like':'%'+_0x54f3c4[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x37c7d0;})});}if(_0x54f3c4[_0xf022('0x54')]['$gte']){var _0x20281e=_0x54f3c4[_0xf022('0x54')][_0xf022('0xa0')][_0xf022('0xa1')](',');var _0x26363f={};_0x26363f[_0x20281e[0x0]]={'$gte':moment(_0x20281e[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0xbccc1d[_0xf022('0x5b')]=_[_0xf022('0x5e')](_0xbccc1d[_0xf022('0x5b')],_0x26363f);}_0xbccc1d=_[_0xf022('0x5e')]({},_0xbccc1d,_0x54f3c4[_0xf022('0x65')]);return db['MailMessage'][_0xf022('0x23')]({'where':_0xbccc1d[_0xf022('0x5b')]})[_0xf022('0x13')](function(_0x34185d){_0x4cd9f9[_0xf022('0x23')]=_0x34185d;if(_0x54f3c4[_0xf022('0x54')][_0xf022('0x5f')]){_0xbccc1d[_0xf022('0x64')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0xbccc1d);})[_0xf022('0x13')](function(_0x18013e){if(_0x54f3c4[_0xf022('0x54')]['inlineCss']===_0xf022('0xa2')){for(var _0x435c35=0x0;_0x435c35<_0x18013e[_0xf022('0x57')];_0x435c35++){_0x18013e[_0x435c35]['body']=juice(_0x18013e[_0x435c35][_0xf022('0x66')]);}}_0x4cd9f9['rows']=_0x18013e;return _0x4cd9f9;});}})[_0xf022('0x13')](respondWithFilteredResult(_0x346067,_0xbccc1d))['catch'](handleError(_0x346067,null));};exports[_0xf022('0x2e')]=function(_0x4cd263,_0x566751){var _0x64275e,_0x4223f6={},_0x357e87;if(_0x4cd263['body']['to']){_0x357e87=_0x4cd263['body']['to'][_0xf022('0xa1')](',')[0x0];}return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x4cd263[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0xa3')],'as':_0xf022('0xa4'),'include':[{'model':db[_0xf022('0x8c')],'as':_0xf022('0xa5'),'where':{'email':_0x357e87},'limit':0x1,'order':[[_0xf022('0xa6'),'DESC']]}]},{'model':db[_0xf022('0x49')],'as':_0xf022('0x46'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf022('0xa7'),'raw':!![]}]}]})[_0xf022('0x13')](handleEntityNotFound(_0x566751,null))[_0xf022('0x13')](function(_0x3377b9){if(!_0x3377b9)return;_0x64275e=_0x3377b9;if(!_0x3377b9[_0xf022('0x46')])throw new Error(_0xf022('0xa8'));if(_['isNil'](_0x4cd263[_0xf022('0x66')][_0xf022('0xa9')])){_0x4cd263['body'][_0xf022('0xa9')]=util[_0xf022('0xaa')]('%s\x20<%s>',_0x3377b9[_0xf022('0x2d')],_0x3377b9[_0xf022('0x78')]||_0x3377b9[_0xf022('0x46')][_0xf022('0x3a')]);}if(_0x4cd263[_0xf022('0x66')]['attachments']&&_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0xf022('0x57')]){for(var _0x1eafe2=0x0;_0x1eafe2<_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0xf022('0x57')];_0x1eafe2+=0x1){_0x4cd263[_0xf022('0x66')]['attachments'][_0x1eafe2]={'filename':_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0x1eafe2]['name'],'path':path[_0xf022('0xac')](config[_0xf022('0xad')],'server/files/attachments',_0x4cd263[_0xf022('0x66')][_0xf022('0xab')][_0x1eafe2][_0xf022('0xae')])};}}var _0xde6860=_0x3377b9[_0xf022('0xaf')]();return respondWithRpcPromise(_0xf022('0xb0'),_0xf022('0xb1'),{'account':_0xde6860,'message':_0x4cd263[_0xf022('0x66')]});})['then'](function(_0x16df90){if(!_0x16df90)return;_0x4223f6=_0x16df90;if(!_0x64275e[_0xf022('0xa4')])throw new Error(_0xf022('0xb2'));if(_0x64275e[_0xf022('0xa4')]['Contacts'][_0xf022('0x57')])return _0x64275e[_0xf022('0xa4')]['Contacts'][0x0];return db[_0xf022('0x8c')][_0xf022('0x74')](_[_0xf022('0xa')](_0x4cd263[_0xf022('0x66')],{'firstName':_0x4cd263['body']['to'],'email':_0x4cd263[_0xf022('0x66')]['to'],'phone':_0x4cd263[_0xf022('0x66')]['to'],'ListId':_0x64275e[_0xf022('0x79')]}));})['then'](function(_0x557e89){if(!_0x557e89)return;var _0x28bd6e={'UserId':_0x4cd263['user']['id'],'ContactId':_0x557e89['id'],'MailAccountId':_0x64275e['id'],'inReplyTo':_0x4223f6[_0xf022('0xb3')],'to':_0x4cd263[_0xf022('0x66')][_0xf022('0xa9')],'cc':_0x4cd263[_0xf022('0x66')]['cc'],'subject':_0x4cd263[_0xf022('0x66')]['subject'],'attach':_0x4cd263[_0xf022('0x66')]['attach'],'firstMsgDirection':_0xf022('0xb4'),'lastMsgAt':moment()[_0xf022('0xaa')](_0xf022('0xb5')),'lastMsgDirection':_0xf022('0xb4'),'Messages':[_[_0xf022('0x5e')](_0x4cd263[_0xf022('0x66')],{'messageId':_0x4223f6['messageId'],'sentAt':moment()['format'](_0xf022('0xb5')),'read':!![],'MailAccountId':_0x64275e['id'],'UserId':_0x4cd263[_0xf022('0x3a')]['id'],'ContactId':_0x557e89['id']})]};if(_0x4cd263[_0xf022('0x66')]['Interaction']){_0x28bd6e=_[_0xf022('0x5e')](_0x28bd6e,_0x4cd263[_0xf022('0x66')][_0xf022('0xb6')]);}return db['MailInteraction'][_0xf022('0x74')](_0x28bd6e,{'include':[{'model':db['MailMessage'],'as':_0xf022('0xb7')}]});})[_0xf022('0x13')](respondWithResult(_0x566751,null))[_0xf022('0x1c')](handleError(_0x566751,null));};exports[_0xf022('0xb8')]=function(_0x5662b5,_0x384e19){return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x5662b5[_0xf022('0x63')]['id']},'include':[{'model':db[_0xf022('0x49')],'as':_0xf022('0x46'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf022('0xa7'),'raw':!![]}]}]})[_0xf022('0x13')](handleEntityNotFound(_0x384e19,null))[_0xf022('0x13')](function(_0x5666d5){if(!_0x5666d5[_0xf022('0x46')])return;var _0x4624ff=_0x5666d5[_0xf022('0xaf')]();return respondWithRpcPromise('VerifySmtp',_0xf022('0xb8'),{'account':_0x4624ff});})['then'](respondWithResult(_0x384e19,null))[_0xf022('0x1c')](handleError(_0x384e19,null));};exports[_0xf022('0x28')]=function(_0x2b2c29,_0x4c66b9){return db['MailAccount']['find']({'where':{'id':_0x2b2c29[_0xf022('0x63')]['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x4c66b9,null))[_0xf022('0x13')](function(_0x5674de){if(_0x5674de&&_0x5674de[_0xf022('0x42')]){throw new db[(_0xf022('0xb9'))][(_0xf022('0xba'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x5674de;})[_0xf022('0x13')](removeEntity(_0x4c66b9,null))[_0xf022('0x1c')](handleError(_0x4c66b9,null));};exports[_0xf022('0xbb')]=function(_0x2651a1,_0x4868bc){return db[_0xf022('0x4b')][_0xf022('0x69')]({'where':{'id':_0x2651a1['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x4868bc,null))[_0xf022('0x13')](function(_0x35a83c){if(_0x35a83c){return _0x35a83c[_0xf022('0xbb')](_0x2651a1['body'][_0xf022('0x72')],_[_0xf022('0x8a')](_0x2651a1[_0xf022('0x66')],[_0xf022('0x72'),'id'])||{})[_0xf022('0xbc')](function(_0x179d2e){for(var _0x262961=0x0;_0x262961<_0x2651a1[_0xf022('0x66')][_0xf022('0x72')][_0xf022('0x57')];_0x262961+=0x1){socket['emit']('userMailAccount:save',{'UserId':Number(_0x2651a1[_0xf022('0x66')][_0xf022('0x72')][_0x262961]),'MailAccountId':Number(_0x2651a1[_0xf022('0x63')]['id'])});}return _0x179d2e;});}})[_0xf022('0x13')](respondWithResult(_0x4868bc,null))[_0xf022('0x1c')](handleError(_0x4868bc,null));};exports[_0xf022('0xbd')]=function(_0x5a0a8e,_0x1c4752){return db['MailAccount'][_0xf022('0x69')]({'where':{'id':_0x5a0a8e[_0xf022('0x63')]['id']}})['then'](handleEntityNotFound(_0x1c4752,null))['then'](function(_0x2265c6){if(_0x2265c6){return _0x2265c6['removeAgents'](_0x5a0a8e['query'][_0xf022('0x72')])['then'](function(){if(_[_0xf022('0xbe')](_0x5a0a8e['query'][_0xf022('0x72')])){for(var _0x3fdd72=0x0;_0x3fdd72<_0x5a0a8e[_0xf022('0x54')][_0xf022('0x72')][_0xf022('0x57')];_0x3fdd72+=0x1){socket[_0xf022('0xbf')](_0xf022('0xc0'),{'UserId':Number(_0x5a0a8e[_0xf022('0x54')][_0xf022('0x72')][_0x3fdd72]),'MailAccountId':Number(_0x5a0a8e['params']['id'])});}}else{socket[_0xf022('0xbf')](_0xf022('0xc0'),{'UserId':Number(_0x5a0a8e['query'][_0xf022('0x72')]),'MailAccountId':Number(_0x5a0a8e[_0xf022('0x63')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c4752,null))[_0xf022('0x1c')](handleError(_0x1c4752,null));};exports[_0xf022('0xc1')]=function(_0x3bcb45,_0x219ba2){var _0x5bc42c={};var _0x1f6a64={};var _0x4c0412;var _0x551dd8;return db[_0xf022('0x4b')][_0xf022('0x6f')]({'where':{'id':_0x3bcb45['params']['id']}})[_0xf022('0x13')](handleEntityNotFound(_0x219ba2,null))[_0xf022('0x13')](function(_0x29165a){if(_0x29165a){_0x4c0412=_0x29165a;_0x1f6a64['model']=_[_0xf022('0x50')](db[_0xf022('0x8d')][_0xf022('0x4c')]);_0x1f6a64[_0xf022('0x54')]=_[_0xf022('0x50')](_0x3bcb45[_0xf022('0x54')]);_0x1f6a64['filters']=_[_0xf022('0x52')](_0x1f6a64[_0xf022('0x53')],_0x1f6a64[_0xf022('0x54')]);_0x5bc42c[_0xf022('0x56')]=_[_0xf022('0x52')](_0x1f6a64[_0xf022('0x53')],qs[_0xf022('0x55')](_0x3bcb45[_0xf022('0x54')][_0xf022('0x55')]));_0x5bc42c['attributes']=_0x5bc42c[_0xf022('0x56')][_0xf022('0x57')]?_0x5bc42c['attributes']:_0x1f6a64[_0xf022('0x53')];_0x5bc42c['order']=qs['sort'](_0x3bcb45[_0xf022('0x54')][_0xf022('0x5a')]);_0x5bc42c[_0xf022('0x5b')]=qs['filters'](_['pick'](_0x3bcb45[_0xf022('0x54')],_0x1f6a64[_0xf022('0x51')]));if(_0x3bcb45[_0xf022('0x54')]['filter']){_0x5bc42c['where']=_['merge'](_0x5bc42c['where'],{'$or':_[_0xf022('0x4f')](_0x5bc42c[_0xf022('0x56')],function(_0x50a5c6){var _0x2cabb0={};_0x2cabb0[_0x50a5c6]={'$like':'%'+_0x3bcb45[_0xf022('0x54')][_0xf022('0x5d')]+'%'};return _0x2cabb0;})});}_0x5bc42c=_['merge']({},_0x5bc42c,_0x3bcb45[_0xf022('0x65')]);return _0x4c0412[_0xf022('0xc1')](_0x5bc42c);}})['then'](function(_0x54c437){if(_0x54c437){_0x551dd8=_0x54c437[_0xf022('0x57')];if(!_0x3bcb45[_0xf022('0x54')][_0xf022('0x58')]('nolimit')){_0x5bc42c[_0xf022('0x22')]=qs[_0xf022('0x22')](_0x3bcb45[_0xf022('0x54')][_0xf022('0x22')]);_0x5bc42c[_0xf022('0x24')]=qs['offset'](_0x3bcb45['query'][_0xf022('0x24')]);}return _0x4c0412[_0xf022('0xc1')](_0x5bc42c);}})['then'](function(_0x9cd8e0){if(_0x9cd8e0){return _0x9cd8e0?{'count':_0x551dd8,'rows':_0x9cd8e0}:null;}})['then'](respondWithResult(_0x219ba2,null))[_0xf022('0x1c')](handleError(_0x219ba2,null));};
\ No newline at end of file
index 58ea446..a4aa64a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ac=['emit','hasOwnProperty','events','../../mysqldb','MailAccount','setMaxListeners','save','remove'];(function(_0x18bbba,_0x564e3d){var _0x59b8c8=function(_0x52ff01){while(--_0x52ff01){_0x18bbba['push'](_0x18bbba['shift']());}};_0x59b8c8(++_0x564e3d);}(_0xb7ac,0x18a));var _0xcb7a=function(_0x53fc8d,_0x3ba187){_0x53fc8d=_0x53fc8d-0x0;var _0x228ace=_0xb7ac[_0x53fc8d];return _0x228ace;};'use strict';var EventEmitter=require(_0xcb7a('0x0'));var MailAccount=require(_0xcb7a('0x1'))['db'][_0xcb7a('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xcb7a('0x3')](0x0);var events={'afterCreate':_0xcb7a('0x4'),'afterUpdate':'update','afterDestroy':_0xcb7a('0x5')};function emitEvent(_0x4817ac){return function(_0x41408c,_0xaa5a21,_0x50be72){MailAccountEvents[_0xcb7a('0x6')](_0x4817ac+':'+_0x41408c['id'],_0x41408c);MailAccountEvents[_0xcb7a('0x6')](_0x4817ac,_0x41408c);_0x50be72(null);};}for(var e in events){if(events[_0xcb7a('0x7')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xb1ef=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0xd8d46,_0x1e8829){var _0x30b60e=function(_0x2d776d){while(--_0x2d776d){_0xd8d46['push'](_0xd8d46['shift']());}};_0x30b60e(++_0x1e8829);}(_0xb1ef,0x93));var _0xfb1e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb1ef[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0xfb1e('0x0'));var MailAccount=require(_0xfb1e('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xfb1e('0x2')](0x0);var events={'afterCreate':_0xfb1e('0x3'),'afterUpdate':_0xfb1e('0x4'),'afterDestroy':_0xfb1e('0x5')};function emitEvent(_0xb70c57){return function(_0x1ce096,_0x477ee0,_0x4b7622){MailAccountEvents['emit'](_0xb70c57+':'+_0x1ce096['id'],_0x1ce096);MailAccountEvents[_0xfb1e('0x6')](_0xb70c57,_0x1ce096);_0x4b7622(null);};}for(var e in events){if(events[_0xfb1e('0x7')](e)){var event=events[e];MailAccount[_0xfb1e('0x8')](e,emitEvent(event));}}module[_0xfb1e('0x9')]=MailAccountEvents;
\ No newline at end of file
index eb01700..0e61436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb130=['port','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','data5','pass','exports','define','mail_accounts','provider','custom','Smtp','host'];(function(_0x4564c2,_0x355110){var _0x4d111b=function(_0x50dcaa){while(--_0x50dcaa){_0x4564c2['push'](_0x4564c2['shift']());}};_0x4d111b(++_0x355110);}(_0xb130,0x79));var _0x0b13=function(_0x125425,_0x4b6bab){_0x125425=_0x125425-0x0;var _0xd04dc4=_0xb130[_0x125425];return _0xd04dc4;};'use strict';var attributes=require('./mailAccount.attributes');module[_0x0b13('0x0')]=function(_0xb82aba){return _0xb82aba[_0x0b13('0x1')]('MailAccount',attributes,{'tableName':_0x0b13('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x54f4d1=this;var _0x56e712={'id':_0x54f4d1['id'],'tls':{'rejectUnauthorized':![]}};if(_0x54f4d1[_0x0b13('0x3')]!==_0x0b13('0x4')){_0x56e712['service']=_0x54f4d1['provider'];}else{_0x56e712['host']=_0x54f4d1[_0x0b13('0x5')][_0x0b13('0x6')];_0x56e712[_0x0b13('0x7')]=_0x54f4d1['Smtp'][_0x0b13('0x7')];_0x56e712['secure']=_0x54f4d1[_0x0b13('0x5')]['secure'];}if(_0x54f4d1[_0x0b13('0x5')][_0x0b13('0x8')]){if(_0x54f4d1[_0x0b13('0x5')][_0x0b13('0x9')]){if(!_0x54f4d1[_0x0b13('0x5')][_0x0b13('0xa')])throw new Error(_0x0b13('0xb'));_0x56e712[_0x0b13('0xc')]={'type':'OAuth2','user':_0x54f4d1[_0x0b13('0x5')][_0x0b13('0xd')],'accessToken':_0x54f4d1[_0x0b13('0x5')][_0x0b13('0xa')][_0x0b13('0xe')]};}else{_0x56e712[_0x0b13('0xc')]={'user':_0x54f4d1[_0x0b13('0x5')]['user'],'pass':_0x54f4d1[_0x0b13('0x5')][_0x0b13('0xf')]};}}return _0x56e712;}}});};
\ No newline at end of file
+var _0x2e8a=['exports','provider','custom','Smtp','port','secure','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','pass'];(function(_0x39e2f2,_0x292945){var _0x2f931=function(_0x49f523){while(--_0x49f523){_0x39e2f2['push'](_0x39e2f2['shift']());}};_0x2f931(++_0x292945);}(_0x2e8a,0x1e1));var _0xa2e8=function(_0x93942f,_0xb48547){_0x93942f=_0x93942f-0x0;var _0x23fcd8=_0x2e8a[_0x93942f];return _0x23fcd8;};'use strict';var attributes=require('./mailAccount.attributes');module[_0xa2e8('0x0')]=function(_0x490afb){return _0x490afb['define']('MailAccount',attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x332e08=this;var _0x568b5f={'id':_0x332e08['id'],'tls':{'rejectUnauthorized':![]}};if(_0x332e08[_0xa2e8('0x1')]!==_0xa2e8('0x2')){_0x568b5f['service']=_0x332e08[_0xa2e8('0x1')];}else{_0x568b5f['host']=_0x332e08['Smtp']['host'];_0x568b5f['port']=_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x4')];_0x568b5f[_0xa2e8('0x5')]=_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x5')];}if(_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x6')]){if(_0x332e08['Smtp'][_0xa2e8('0x7')]){if(!_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x8')])throw new Error(_0xa2e8('0x9'));_0x568b5f[_0xa2e8('0xa')]={'type':'OAuth2','user':_0x332e08[_0xa2e8('0x3')][_0xa2e8('0xb')],'accessToken':_0x332e08[_0xa2e8('0x3')][_0xa2e8('0x8')]['data5']};}else{_0x568b5f[_0xa2e8('0xa')]={'user':_0x332e08['Smtp'][_0xa2e8('0xb')],'pass':_0x332e08['Smtp'][_0xa2e8('0xc')]};}}return _0x568b5f;}}});};
\ No newline at end of file
index b3aa8d3..7625777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['MailMessage','Messages','create','Contact\x20not\x20found','spread','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','User','UserId','agent','name','waitForTheAssignedAgent','startRouting','Start','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','catch','GetMailAccount','MailAccount','findAll','options','raw','attributes','limit','include','map','model','debug','ShowMailAccount','find','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','CloudProvider','get','omit','Applications','list','applications','orderBy','priority','asc','push','close','autoclose','*,*,*,*','length','List\x20not\x20found','contact','messageId','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x4975,0x86));var _0x5497=function(_0x45f936,_0x5ec0c4){_0x45f936=_0x45f936-0x0;var _0x184174=_0x4975[_0x45f936];return _0x184174;};'use strict';var _=require(_0x5497('0x0'));var moment=require('moment');var BPromise=require(_0x5497('0x1'));var rs=require(_0x5497('0x2'));var Redis=require(_0x5497('0x3'));var db=require(_0x5497('0x4'))['db'];var logger=require(_0x5497('0x5'))(_0x5497('0x6'));var config=require(_0x5497('0x7'));var jayson=require(_0x5497('0x8'));var client=jayson[_0x5497('0x9')][_0x5497('0xa')]({'port':0x232c});config['redis']=_[_0x5497('0xb')](config['redis'],{'host':_0x5497('0xc'),'port':0x18eb});var socket=require(_0x5497('0xd'))(new Redis(config[_0x5497('0xe')]));require('./mailAccount.socket')[_0x5497('0xf')](socket);function respondWithRpcPromise(_0x49d94b,_0x1f63d8,_0x29c93f){return new BPromise(function(_0x2ec5a4,_0x32a8a2){return client[_0x5497('0x10')](_0x49d94b,_0x29c93f)[_0x5497('0x11')](function(_0x3e7886){logger[_0x5497('0x12')]('MailAccount,\x20%s,\x20%s',_0x1f63d8,'request\x20sent');logger['debug'](_0x5497('0x13'),_0x1f63d8,_0x5497('0x14'),JSON[_0x5497('0x15')](_0x3e7886));if(_0x3e7886[_0x5497('0x16')]){if(_0x3e7886[_0x5497('0x16')][_0x5497('0x17')]===0x1f4){logger[_0x5497('0x16')](_0x5497('0x18'),_0x1f63d8,_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);return _0x32a8a2(_0x3e7886['error'][_0x5497('0x19')]);}logger['error'](_0x5497('0x18'),_0x1f63d8,_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);return _0x2ec5a4(_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);}else{logger[_0x5497('0x12')](_0x5497('0x18'),_0x1f63d8,'request\x20sent');_0x2ec5a4(_0x3e7886['result'][_0x5497('0x19')]);}})[_0x5497('0x1a')](function(_0x3a47fd){logger['error'](_0x5497('0x18'),_0x1f63d8,_0x3a47fd);_0x32a8a2(_0x3a47fd);});});}exports[_0x5497('0x1b')]=function(_0x18e8a8){var _0x43da2c=this;return new Promise(function(_0x1b1b43,_0x1f6f18){return db[_0x5497('0x1c')][_0x5497('0x1d')]({'raw':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x1f')]===undefined?!![]:![]:!![],'where':_0x18e8a8['options']?_0x18e8a8[_0x5497('0x1e')]['where']||null:null,'attributes':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x20')]||null:null,'limit':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x21')]||null:null,'include':_0x18e8a8['options']?_0x18e8a8['options'][_0x5497('0x22')]?_[_0x5497('0x23')](_0x18e8a8[_0x5497('0x1e')][_0x5497('0x22')],function(_0x5223b5){return{'model':db[_0x5223b5[_0x5497('0x24')]],'as':_0x5223b5['as'],'attributes':_0x5223b5['attributes'],'include':_0x5223b5[_0x5497('0x22')]?_[_0x5497('0x23')](_0x5223b5[_0x5497('0x22')],function(_0x34a1a5){return{'model':db[_0x34a1a5[_0x5497('0x24')]],'as':_0x34a1a5['as'],'attributes':_0x34a1a5[_0x5497('0x20')],'include':_0x34a1a5['include']?_[_0x5497('0x23')](_0x34a1a5['include'],function(_0x583d06){return{'model':db[_0x583d06['model']],'as':_0x583d06['as'],'attributes':_0x583d06[_0x5497('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e9356){logger[_0x5497('0x12')](_0x5497('0x1b'),_0x18e8a8);logger[_0x5497('0x25')]('GetMailAccount',_0x18e8a8,JSON['stringify'](_0x5e9356));_0x1b1b43(_0x5e9356);})['catch'](function(_0x371874){logger[_0x5497('0x16')](_0x5497('0x1b'),_0x371874['message'],_0x18e8a8);_0x1f6f18(_0x43da2c['error'](0x1f4,_0x371874['message']));});});};exports[_0x5497('0x26')]=function(_0x572460){var _0x438ee4=this;return new Promise(function(_0x258c2d,_0x77c575){return db['MailAccount'][_0x5497('0x27')]({'raw':_0x572460[_0x5497('0x1e')]?_0x572460['options'][_0x5497('0x1f')]===undefined?!![]:![]:!![],'where':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')]['where']||null:null,'attributes':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')][_0x5497('0x20')]||null:null,'include':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')]['include']?_[_0x5497('0x23')](_0x572460[_0x5497('0x1e')]['include'],function(_0x1ffc9b){return{'model':db[_0x1ffc9b[_0x5497('0x24')]],'as':_0x1ffc9b['as'],'attributes':_0x1ffc9b[_0x5497('0x20')],'include':_0x1ffc9b[_0x5497('0x22')]?_[_0x5497('0x23')](_0x1ffc9b[_0x5497('0x22')],function(_0x580e86){return{'model':db[_0x580e86[_0x5497('0x24')]],'as':_0x580e86['as'],'attributes':_0x580e86['attributes'],'include':_0x580e86[_0x5497('0x22')]?_[_0x5497('0x23')](_0x580e86[_0x5497('0x22')],function(_0x5ab18c){return{'model':db[_0x5ab18c['model']],'as':_0x5ab18c['as'],'attributes':_0x5ab18c[_0x5497('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5497('0x11')](function(_0x326d48){if(_0x572460[_0x5497('0x1e')][_0x5497('0x28')]===!![])_0x326d48[_0x5497('0x29')]('smtpOptions',_0x326d48[_0x5497('0x2a')]());logger[_0x5497('0x12')](_0x5497('0x26'),_0x572460);logger[_0x5497('0x25')](_0x5497('0x26'),_0x572460,JSON[_0x5497('0x15')](_0x326d48));_0x258c2d(_0x326d48);})[_0x5497('0x1a')](function(_0x179635){logger[_0x5497('0x16')]('ShowMailAccount',_0x179635[_0x5497('0x19')],_0x572460);_0x77c575(_0x438ee4[_0x5497('0x16')](0x1f4,_0x179635[_0x5497('0x19')]));});});};exports[_0x5497('0x2b')]=function(_0x15029d){var _0xa5ebe6=this;return new Promise(function(_0x4299be,_0x59ed13){var _0x3e5f7d={'body':_0x15029d[_0x5497('0x2c')],'channel':_0x5497('0x2d')};var _0x35993c=_[_0x5497('0x2e')](_[_0x5497('0x2f')](db[_0x5497('0x30')]['rawAttributes']),[_0x5497('0x31'),_0x5497('0x32'),_0x5497('0x33'),_0x5497('0x34')]);var _0x20e947=![];if(_0x15029d[_0x5497('0x2c')]['id']){delete _0x15029d[_0x5497('0x2c')]['id'];}if(_[_0x5497('0x35')](_0x15029d[_0x5497('0x2c')][_0x5497('0x36')])){return _0x59ed13(_0xa5ebe6['error'](0x1f4,_0x5497('0x37')));}if(_['isNil'](_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')])||_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')]===''){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x5497('0x35')](_0x15029d[_0x5497('0x2c')]['mapKey'])){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x35993c));}if(!_[_0x5497('0x38')](_0x35993c,_0x15029d['body'][_0x5497('0x39')])){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,_0x5497('0x3a')+_0x35993c));}var _0x3a852a={};_0x3a852a[_0x15029d[_0x5497('0x2c')]['mapKey']]=_0x15029d['body']['from'];return db['MailAccount'][_0x5497('0x27')]({'where':{'id':_0x15029d[_0x5497('0x3b')]['id']},'include':[{'model':db[_0x5497('0x3c')],'as':_0x5497('0x3d'),'include':[{'model':db[_0x5497('0x30')],'as':_0x5497('0x3e'),'where':_0x3a852a,'limit':0x1,'order':[[_0x5497('0x32'),_0x5497('0x3f')]]}]},{'model':db[_0x5497('0x40')],'as':'Applications'},{'model':db[_0x5497('0x41')],'as':_0x5497('0x42'),'include':[{'model':db[_0x5497('0x43')],'as':'CloudProvider'}]}]})[_0x5497('0x11')](function(_0x530475){if(_0x530475&&_0x530475[_0x5497('0x3d')]){var _0x31f1ba=_0x530475[_0x5497('0x44')]({'plain':!![]});_0x3e5f7d['account']=_[_0x5497('0x45')](_0x31f1ba,[_0x5497('0x46'),'List']);_0x3e5f7d[_0x5497('0x3b')]['smtpOptions']=_0x530475[_0x5497('0x2a')]();_0x3e5f7d['applications']=_0x31f1ba[_0x5497('0x46')];_0x3e5f7d[_0x5497('0x47')]=_0x31f1ba[_0x5497('0x3d')];_0x3e5f7d[_0x5497('0x48')]=_[_0x5497('0x49')](_0x3e5f7d[_0x5497('0x48')],[_0x5497('0x4a')],[_0x5497('0x4b')]);if(_0x3e5f7d['account']&&_0x3e5f7d[_0x5497('0x3b')]['autoclose']){_0x3e5f7d['applications'][_0x5497('0x4c')]({'id':0x0,'priority':_0x3e5f7d[_0x5497('0x48')]['length']+0x1,'app':_0x5497('0x4d'),'appdata':_0x5497('0x4e'),'interval':_0x5497('0x4f')});}if(_0x3e5f7d[_0x5497('0x3b')]['Applications']){delete _0x3e5f7d[_0x5497('0x3b')]['Applications'];}if(_0x3e5f7d['account'][_0x5497('0x3d')]){delete _0x3e5f7d[_0x5497('0x3b')][_0x5497('0x3d')];}if(_0x31f1ba['List']['Contacts'][_0x5497('0x50')]){return _0x31f1ba['List'][_0x5497('0x3e')][0x0];}var _0x530431=_[_0x5497('0xb')](_0x15029d['body'],{'firstName':_0x15029d[_0x5497('0x2c')][_0x5497('0x36')],'ListId':_0x31f1ba['ListId']});_0x530431[_0x15029d[_0x5497('0x2c')]['mapKey']]=_0x15029d['body'][_0x5497('0x36')];return db[_0x5497('0x30')]['create'](_0x530431);}else{throw new Error(_0x5497('0x51'));}})[_0x5497('0x11')](function(_0x1dbab2){_0x3e5f7d[_0x5497('0x52')]=_0x1dbab2;if(_0x1dbab2){if(!_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['messageId']){_0x15029d[_0x5497('0x2c')]['message']['messageId']=rs['generate']()+'\x20'+_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')];}var _0x544085={'ContactId':_0x1dbab2['id'],'MailAccountId':_0x15029d[_0x5497('0x3b')]['id'],'inReplyTo':_0x15029d['body']['message'][_0x5497('0x53')],'to':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')],'cc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['cc'],'subject':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x54')],'attach':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['attach'],'lastMsgAt':moment()[_0x5497('0x55')](_0x5497('0x56')),'lastMsgDirection':'in'};return db[_0x5497('0x57')][_0x5497('0x27')]({'where':{'closed':![],'MailAccountId':_0x15029d['account']['id']},'include':[{'model':db[_0x5497('0x58')],'as':_0x5497('0x59'),'attributes':[_0x5497('0x53')],'where':{'messageId':_0x15029d['body'][_0x5497('0x19')]['inReplyTo']}}]})['then'](function(_0x53e050){if(_0x53e050){return[_0x53e050,![]];}return db[_0x5497('0x57')][_0x5497('0x5a')](_0x544085)[_0x5497('0x11')](function(_0x4e7d4c){return[_0x4e7d4c,!![]];});});}else{throw new Error(_0x5497('0x5b'));}})[_0x5497('0x5c')](function(_0x3cfebc,_0x35e75a){if(_0x3cfebc){_0x20e947=_0x35e75a;if(!_0x35e75a){return _0x3cfebc['update']({'inReplyTo':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x53')],'to':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x36')],'cc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['cc'],'subject':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x54')],'attach':_0x3cfebc['attach']?_0x3cfebc[_0x5497('0x5d')]:_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x5d')],'substatus':null,'substatusAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0x5497('0x56')),'lastMsgDirection':'in'});}else{return _0x3cfebc;}}})[_0x5497('0x11')](function(_0x179bbc){_0x3e5f7d['interaction']=_0x179bbc[_0x5497('0x44')]({'plain':!![]});_0x3e5f7d[_0x5497('0x5e')][_0x5497('0x5f')]=_0x20e947;return db[_0x5497('0x58')][_0x5497('0x5a')]({'body':_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')],'MailAccountId':_0x15029d[_0x5497('0x3b')]['id'],'MailInteractionId':_0x179bbc['id'],'direction':'in','ContactId':_0x3e5f7d[_0x5497('0x52')]['id'],'messageId':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['messageId'],'from':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')],'to':_0x15029d['body'][_0x5497('0x19')]['to'],'cc':_0x15029d['body'][_0x5497('0x19')]['cc'],'subject':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x54')],'attach':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x5d')],'Attachments':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x60')],'originTo':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x61')],'originCc':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x62')],'bcc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['bcc'],'ChatWebsiteId':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x63')]||null,'originChannel':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x64')]||_0x5497('0x65'),'ChatOfflineMessageId':_0x15029d[_0x5497('0x2c')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x5497('0x66')],'as':_0x5497('0x67')}]});})['then'](function(_0x15ca59){_0x3e5f7d[_0x5497('0x19')]=_0x15ca59;if(_0x3e5f7d[_0x5497('0x5e')]['UserId']){return db[_0x5497('0x68')][_0x5497('0x27')]({'attributes':['id','name'],'where':{'id':_0x3e5f7d[_0x5497('0x5e')][_0x5497('0x69')]}})[_0x5497('0x11')](function(_0x42d745){if(_0x42d745){_0x3e5f7d[_0x5497('0x48')]['unshift']({'id':0x0,'priority':0x0,'app':_0x5497('0x6a'),'appdata':_0x42d745[_0x5497('0x6b')]+','+(_0x3e5f7d[_0x5497('0x3b')][_0x5497('0x6c')]||0xa),'interval':_0x5497('0x4f')});}return respondWithRpcPromise('Start',_0x5497('0x6d'),_0x3e5f7d);});}return respondWithRpcPromise(_0x5497('0x6e'),_0x5497('0x6d'),_0x3e5f7d);})[_0x5497('0x11')](function(_0x521d74){_0x4299be(_0x521d74);})[_0x5497('0x1a')](function(_0x21fc4e){_0x59ed13(_0xa5ebe6['error'](0x1f4,_0x21fc4e[_0x5497('0x19')]));});});};
\ No newline at end of file
+var _0x57ca=['setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','MailApplication','Applications','List','omit','applications','list','orderBy','asc','push','length','close','*,*,*,*','ListId','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','interaction','get','created','originCc','bcc','Email','Attachment','Attachments','UserId','User','unshift','name','waitForTheAssignedAgent','startRouting','Start','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','MailAccount','find'];(function(_0x3d184c,_0x1eddec){var _0xf54365=function(_0x24df76){while(--_0x24df76){_0x3d184c['push'](_0x3d184c['shift']());}};_0xf54365(++_0x1eddec);}(_0x57ca,0x108));var _0xa57c=function(_0x364419,_0x3eb3ce){_0x364419=_0x364419-0x0;var _0x3a7331=_0x57ca[_0x364419];return _0x3a7331;};'use strict';var _=require('lodash');var moment=require(_0xa57c('0x0'));var BPromise=require(_0xa57c('0x1'));var rs=require('randomstring');var Redis=require(_0xa57c('0x2'));var db=require(_0xa57c('0x3'))['db'];var logger=require(_0xa57c('0x4'))(_0xa57c('0x5'));var config=require(_0xa57c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa57c('0x7')][_0xa57c('0x8')]({'port':0x232c});config[_0xa57c('0x9')]=_[_0xa57c('0xa')](config[_0xa57c('0x9')],{'host':_0xa57c('0xb'),'port':0x18eb});var socket=require(_0xa57c('0xc'))(new Redis(config[_0xa57c('0x9')]));require('./mailAccount.socket')[_0xa57c('0xd')](socket);function respondWithRpcPromise(_0x4b51d8,_0x46ba92,_0x932dcc){return new BPromise(function(_0x4fa5ed,_0x156bca){return client['request'](_0x4b51d8,_0x932dcc)[_0xa57c('0xe')](function(_0x44b221){logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');logger[_0xa57c('0x10')](_0xa57c('0x11'),_0x46ba92,_0xa57c('0x12'),JSON[_0xa57c('0x13')](_0x44b221));if(_0x44b221[_0xa57c('0x14')]){if(_0x44b221['error'][_0xa57c('0x15')]===0x1f4){logger['error'](_0xa57c('0xf'),_0x46ba92,_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);return _0x156bca(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0x44b221['error'][_0xa57c('0x16')]);return _0x4fa5ed(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}else{logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');_0x4fa5ed(_0x44b221[_0xa57c('0x17')][_0xa57c('0x16')]);}})[_0xa57c('0x18')](function(_0xe3d505){logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0xe3d505);_0x156bca(_0xe3d505);});});}exports[_0xa57c('0x19')]=function(_0x595c7a){var _0x4e4399=this;return new Promise(function(_0x8a8856,_0x4a53ab){return db['MailAccount'][_0xa57c('0x1a')]({'raw':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1c')]===undefined?!![]:![]:!![],'where':_0x595c7a['options']?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1d')]||null:null,'attributes':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1e')]||null:null,'limit':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1f')]||null:null,'include':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')],function(_0x431bec){return{'model':db[_0x431bec['model']],'as':_0x431bec['as'],'attributes':_0x431bec[_0xa57c('0x1e')],'include':_0x431bec[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x431bec[_0xa57c('0x20')],function(_0x315ad7){return{'model':db[_0x315ad7[_0xa57c('0x22')]],'as':_0x315ad7['as'],'attributes':_0x315ad7[_0xa57c('0x1e')],'include':_0x315ad7[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x315ad7[_0xa57c('0x20')],function(_0x57ebe0){return{'model':db[_0x57ebe0[_0xa57c('0x22')]],'as':_0x57ebe0['as'],'attributes':_0x57ebe0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x257661){logger[_0xa57c('0x23')]('GetMailAccount',_0x595c7a);logger[_0xa57c('0x10')](_0xa57c('0x19'),_0x595c7a,JSON[_0xa57c('0x13')](_0x257661));_0x8a8856(_0x257661);})['catch'](function(_0xd779f1){logger['error'](_0xa57c('0x19'),_0xd779f1['message'],_0x595c7a);_0x4a53ab(_0x4e4399[_0xa57c('0x14')](0x1f4,_0xd779f1['message']));});});};exports[_0xa57c('0x24')]=function(_0x532164){var _0x9e02bb=this;return new Promise(function(_0x1d82d9,_0x43c8f3){return db[_0xa57c('0x25')][_0xa57c('0x26')]({'raw':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x1d')]||null:null,'attributes':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['attributes']||null:null,'include':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x20')]?_['map'](_0x532164[_0xa57c('0x1b')]['include'],function(_0x433116){return{'model':db[_0x433116[_0xa57c('0x22')]],'as':_0x433116['as'],'attributes':_0x433116['attributes'],'include':_0x433116[_0xa57c('0x20')]?_['map'](_0x433116[_0xa57c('0x20')],function(_0x5c56d3){return{'model':db[_0x5c56d3[_0xa57c('0x22')]],'as':_0x5c56d3['as'],'attributes':_0x5c56d3[_0xa57c('0x1e')],'include':_0x5c56d3[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x5c56d3[_0xa57c('0x20')],function(_0x44350f){return{'model':db[_0x44350f['model']],'as':_0x44350f['as'],'attributes':_0x44350f['attributes']};}):[]};}):[]};}):[]:[]})[_0xa57c('0xe')](function(_0x13e390){if(_0x532164[_0xa57c('0x1b')]['smtp']===!![])_0x13e390[_0xa57c('0x27')]('smtpOptions',_0x13e390[_0xa57c('0x28')]());logger[_0xa57c('0x23')]('ShowMailAccount',_0x532164);logger['debug']('ShowMailAccount',_0x532164,JSON[_0xa57c('0x13')](_0x13e390));_0x1d82d9(_0x13e390);})[_0xa57c('0x18')](function(_0x269a19){logger[_0xa57c('0x14')](_0xa57c('0x24'),_0x269a19[_0xa57c('0x16')],_0x532164);_0x43c8f3(_0x9e02bb['error'](0x1f4,_0x269a19[_0xa57c('0x16')]));});});};exports[_0xa57c('0x29')]=function(_0x5a5490){var _0x5ed42d=this;return new Promise(function(_0x5e10b,_0x203375){var _0x5af5e9={'body':_0x5a5490[_0xa57c('0x2a')],'channel':_0xa57c('0x2b')};var _0x2112b7=_[_0xa57c('0x2c')](_[_0xa57c('0x2d')](db[_0xa57c('0x2e')]['rawAttributes']),[_0xa57c('0x2f'),'updatedAt','CompanyId','ListId']);var _0x520383=![];if(_0x5a5490['body']['id']){delete _0x5a5490[_0xa57c('0x2a')]['id'];}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')]['from'])){return _0x203375(_0x5ed42d['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')])||_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')]===''){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x32')+_0x2112b7));}if(!_[_0xa57c('0x33')](_0x2112b7,_0x5a5490['body'][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x34')+_0x2112b7));}var _0x14e943={};_0x14e943[_0x5a5490[_0xa57c('0x2a')]['mapKey']]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x25')][_0xa57c('0x26')]({'where':{'id':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x37')],'as':'List','include':[{'model':db[_0xa57c('0x2e')],'as':_0xa57c('0x38'),'where':_0x14e943,'limit':0x1,'order':[[_0xa57c('0x39'),_0xa57c('0x3a')]]}]},{'model':db[_0xa57c('0x3b')],'as':_0xa57c('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})[_0xa57c('0xe')](function(_0x49492f){if(_0x49492f&&_0x49492f[_0xa57c('0x3d')]){var _0xae87=_0x49492f['get']({'plain':!![]});_0x5af5e9[_0xa57c('0x36')]=_[_0xa57c('0x3e')](_0xae87,[_0xa57c('0x3c'),_0xa57c('0x3d')]);_0x5af5e9[_0xa57c('0x36')]['smtpOptions']=_0x49492f[_0xa57c('0x28')]();_0x5af5e9[_0xa57c('0x3f')]=_0xae87[_0xa57c('0x3c')];_0x5af5e9[_0xa57c('0x40')]=_0xae87[_0xa57c('0x3d')];_0x5af5e9['applications']=_[_0xa57c('0x41')](_0x5af5e9['applications'],['priority'],[_0xa57c('0x42')]);if(_0x5af5e9[_0xa57c('0x36')]&&_0x5af5e9[_0xa57c('0x36')]['autoclose']){_0x5af5e9['applications'][_0xa57c('0x43')]({'id':0x0,'priority':_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x44')]+0x1,'app':_0xa57c('0x45'),'appdata':'autoclose','interval':_0xa57c('0x46')});}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3c')]){delete _0x5af5e9['account']['Applications'];}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3d')]){delete _0x5af5e9['account'][_0xa57c('0x3d')];}if(_0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][_0xa57c('0x44')]){return _0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][0x0];}var _0x4fc413=_['defaults'](_0x5a5490['body'],{'firstName':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')],'ListId':_0xae87[_0xa57c('0x47')]});_0x4fc413[_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')]]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x2e')]['create'](_0x4fc413);}else{throw new Error('List\x20not\x20found');}})[_0xa57c('0xe')](function(_0x4e18ad){_0x5af5e9[_0xa57c('0x48')]=_0x4e18ad;if(_0x4e18ad){if(!_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['messageId']){_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x49')]=rs['generate']()+'\x20'+_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x35')];}var _0x26a8e1={'ContactId':_0x4e18ad['id'],'MailAccountId':_0x5a5490['account']['id'],'inReplyTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'to':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['from'],'cc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xa57c('0x26')]({'where':{'closed':![],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x4e')],'as':_0xa57c('0x4f'),'attributes':[_0xa57c('0x49')],'where':{'messageId':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x50')]}}]})[_0xa57c('0xe')](function(_0x521acc){if(_0x521acc){return[_0x521acc,![]];}return db[_0xa57c('0x51')][_0xa57c('0x52')](_0x26a8e1)[_0xa57c('0xe')](function(_0xa78a75){return[_0xa78a75,!![]];});});}else{throw new Error(_0xa57c('0x53'));}})[_0xa57c('0x54')](function(_0x24efa0,_0x5e1103){if(_0x24efa0){_0x520383=_0x5e1103;if(!_0x5e1103){return _0x24efa0[_0xa57c('0x55')]({'inReplyTo':_0x5a5490['body'][_0xa57c('0x16')]['messageId'],'to':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x35')],'cc':_0x5a5490[_0xa57c('0x2a')]['message']['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x24efa0[_0xa57c('0x4b')]?_0x24efa0['attach']:_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'substatus':null,'substatusAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'});}else{return _0x24efa0;}}})[_0xa57c('0xe')](function(_0x11c13e){_0x5af5e9[_0xa57c('0x56')]=_0x11c13e[_0xa57c('0x57')]({'plain':!![]});_0x5af5e9[_0xa57c('0x56')][_0xa57c('0x58')]=_0x520383;return db[_0xa57c('0x4e')][_0xa57c('0x52')]({'body':_0x5a5490[_0xa57c('0x2a')]['body'],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id'],'MailInteractionId':_0x11c13e['id'],'direction':'in','ContactId':_0x5af5e9['contact']['id'],'messageId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'from':_0x5a5490['body'][_0xa57c('0x16')][_0xa57c('0x35')],'to':_0x5a5490[_0xa57c('0x2a')]['message']['to'],'cc':_0x5a5490['body'][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'Attachments':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['attachments'],'originTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originTo'],'originCc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x59')],'bcc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x5a')],'ChatWebsiteId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['ChatWebsiteId']||null,'originChannel':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originChannel']||_0xa57c('0x5b'),'ChatOfflineMessageId':_0x5a5490[_0xa57c('0x2a')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xa57c('0x5c')],'as':_0xa57c('0x5d')}]});})[_0xa57c('0xe')](function(_0x1604d6){_0x5af5e9[_0xa57c('0x16')]=_0x1604d6;if(_0x5af5e9['interaction'][_0xa57c('0x5e')]){return db[_0xa57c('0x5f')][_0xa57c('0x26')]({'attributes':['id','name'],'where':{'id':_0x5af5e9[_0xa57c('0x56')]['UserId']}})[_0xa57c('0xe')](function(_0x2963cb){if(_0x2963cb){_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2963cb[_0xa57c('0x61')]+','+(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x62')]||0xa),'interval':_0xa57c('0x46')});}return respondWithRpcPromise('Start',_0xa57c('0x63'),_0x5af5e9);});}return respondWithRpcPromise(_0xa57c('0x64'),_0xa57c('0x63'),_0x5af5e9);})['then'](function(_0x3da413){_0x5e10b(_0x3da413);})[_0xa57c('0x18')](function(_0x2ed4f4){_0x203375(_0x5ed42d['error'](0x1f4,_0x2ed4f4[_0xa57c('0x16')]));});});};
\ No newline at end of file
index faf80d6..a638060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a5c=['register','mailAccount:','./mailAccount.events','save','remove','update','emit'];(function(_0x171766,_0x2559f2){var _0x2cafc0=function(_0x51036d){while(--_0x51036d){_0x171766['push'](_0x171766['shift']());}};_0x2cafc0(++_0x2559f2);}(_0x2a5c,0x1f3));var _0xc2a5=function(_0x39cd4c,_0x5afb68){_0x39cd4c=_0x39cd4c-0x0;var _0x2c75f5=_0x2a5c[_0x39cd4c];return _0x2c75f5;};'use strict';var MailAccountEvents=require(_0xc2a5('0x0'));var events=[_0xc2a5('0x1'),_0xc2a5('0x2'),_0xc2a5('0x3')];function createListener(_0x438609,_0x53281f){return function(_0x3de54b){_0x53281f[_0xc2a5('0x4')](_0x438609,_0x3de54b);};}function removeListener(_0x247498,_0x98b693){return function(){MailAccountEvents['removeListener'](_0x247498,_0x98b693);};}exports[_0xc2a5('0x5')]=function(_0x4b84ea){for(var _0x106832=0x0,_0x350b2d=events['length'];_0x106832<_0x350b2d;_0x106832++){var _0x50de53=events[_0x106832];var _0x3a3cfb=createListener(_0xc2a5('0x6')+_0x50de53,_0x4b84ea);MailAccountEvents['on'](_0x50de53,_0x3a3cfb);}};
\ No newline at end of file
+var _0x4d06=['removeListener','register','length','mailAccount:','./mailAccount.events','save','remove','update','emit'];(function(_0x1fcaef,_0x2e2847){var _0x340a3d=function(_0x3336b4){while(--_0x3336b4){_0x1fcaef['push'](_0x1fcaef['shift']());}};_0x340a3d(++_0x2e2847);}(_0x4d06,0x100));var _0x64d0=function(_0x155c64,_0x26ff95){_0x155c64=_0x155c64-0x0;var _0x1f154a=_0x4d06[_0x155c64];return _0x1f154a;};'use strict';var MailAccountEvents=require(_0x64d0('0x0'));var events=[_0x64d0('0x1'),_0x64d0('0x2'),_0x64d0('0x3')];function createListener(_0x5550e1,_0x4fe0ac){return function(_0xb51e48){_0x4fe0ac[_0x64d0('0x4')](_0x5550e1,_0xb51e48);};}function removeListener(_0x46f69d,_0x5371fa){return function(){MailAccountEvents[_0x64d0('0x5')](_0x46f69d,_0x5371fa);};}exports[_0x64d0('0x6')]=function(_0x2f2984){for(var _0x17978f=0x0,_0x112809=events[_0x64d0('0x7')];_0x17978f<_0x112809;_0x17978f++){var _0x504748=events[_0x17978f];var _0x43b026=createListener(_0x64d0('0x8')+_0x504748,_0x2f2984);MailAccountEvents['on'](_0x504748,_0x43b026);}};
\ No newline at end of file
index 00b8496..064acfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1889=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put'];(function(_0x4eae39,_0xb55393){var _0x316366=function(_0x557934){while(--_0x557934){_0x4eae39['push'](_0x4eae39['shift']());}};_0x316366(++_0xb55393);}(_0x1889,0x130));var _0x9188=function(_0xb4c169,_0xd5087f){_0xb4c169=_0xb4c169-0x0;var _0x37eda1=_0x1889[_0xb4c169];return _0x37eda1;};'use strict';var multer=require(_0x9188('0x0'));var util=require(_0x9188('0x1'));var path=require(_0x9188('0x2'));var timeout=require(_0x9188('0x3'));var express=require(_0x9188('0x4'));var router=express[_0x9188('0x5')]();var fs_extra=require(_0x9188('0x6'));var auth=require(_0x9188('0x7'));var interaction=require(_0x9188('0x8'));var config=require(_0x9188('0x9'));var controller=require(_0x9188('0xa'));router[_0x9188('0xb')](_0x9188('0xc'),auth[_0x9188('0xd')](),controller[_0x9188('0xe')]);router[_0x9188('0xf')](_0x9188('0xc'),auth['isAuthenticated'](),controller[_0x9188('0x10')]);router[_0x9188('0x11')](_0x9188('0xc'),auth[_0x9188('0xd')](),controller[_0x9188('0x12')]);module[_0x9188('0x13')]=router;
\ No newline at end of file
+var _0xc194=['put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailApplication.controller','get','isAuthenticated','show'];(function(_0x46df25,_0xf64212){var _0x1bf6d6=function(_0x3f27b3){while(--_0x3f27b3){_0x46df25['push'](_0x46df25['shift']());}};_0x1bf6d6(++_0xf64212);}(_0xc194,0xb0));var _0x4c19=function(_0x391b12,_0x871022){_0x391b12=_0x391b12-0x0;var _0x2156be=_0xc194[_0x391b12];return _0x2156be;};'use strict';var multer=require(_0x4c19('0x0'));var util=require('util');var path=require(_0x4c19('0x1'));var timeout=require(_0x4c19('0x2'));var express=require('express');var router=express[_0x4c19('0x3')]();var fs_extra=require(_0x4c19('0x4'));var auth=require(_0x4c19('0x5'));var interaction=require(_0x4c19('0x6'));var config=require('../../config/environment');var controller=require(_0x4c19('0x7'));router[_0x4c19('0x8')]('/:id',auth[_0x4c19('0x9')](),controller[_0x4c19('0xa')]);router[_0x4c19('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x4c19('0xc')]);router[_0x4c19('0xd')](_0x4c19('0xe'),auth['isAuthenticated'](),controller[_0x4c19('0xf')]);module[_0x4c19('0x10')]=router;
\ No newline at end of file
index 6f06464..203f825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18db=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x157e68,_0x34ea6c){var _0x5651d9=function(_0x461ff9){while(--_0x461ff9){_0x157e68['push'](_0x157e68['shift']());}};_0x5651d9(++_0x34ea6c);}(_0x18db,0x16d));var _0xb18d=function(_0xf8d101,_0x11b892){_0xf8d101=_0xf8d101-0x0;var _0x2d4f91=_0x18db[_0xf8d101];return _0x2d4f91;};'use strict';var Sequelize=require(_0xb18d('0x0'));module[_0xb18d('0x1')]={'priority':{'type':Sequelize[_0xb18d('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb18d('0x3')],'allowNull':![],'defaultValue':_0xb18d('0x4')},'appdata':{'type':Sequelize[_0xb18d('0x5')]()},'description':{'type':Sequelize[_0xb18d('0x3')]},'interval':{'type':Sequelize[_0xb18d('0x3')],'defaultValue':_0xb18d('0x6')}};
\ No newline at end of file
+var _0x26a1=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x34f3c3,_0x569fe6){var _0x4275dc=function(_0x25e227){while(--_0x25e227){_0x34f3c3['push'](_0x34f3c3['shift']());}};_0x4275dc(++_0x569fe6);}(_0x26a1,0xa3));var _0x126a=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x26a1[_0x4bb66f];return _0xf2772f;};'use strict';var Sequelize=require(_0x126a('0x0'));module[_0x126a('0x1')]={'priority':{'type':Sequelize[_0x126a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x126a('0x3')],'allowNull':![],'defaultValue':_0x126a('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x126a('0x3')]},'interval':{'type':Sequelize[_0x126a('0x3')],'defaultValue':_0x126a('0x5')}};
\ No newline at end of file
index 462f101..2b42f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['includeAll','merge','options','find','catch','body','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','show','params','model','MailApplication','rawAttributes','query','keys','filters','intersection','attributes','fields','length'];(function(_0x243e77,_0x224f61){var _0x3f76bb=function(_0x46e222){while(--_0x46e222){_0x243e77['push'](_0x243e77['shift']());}};_0x3f76bb(++_0x224f61);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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={'raw':!![],'where':{'id':_0x25fba9[_0x0a9e('0x28')]['id']}},_0x1538a4={};_0x1538a4[_0x0a9e('0x29')]=_['keys'](db[_0x0a9e('0x2a')][_0x0a9e('0x2b')]);_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x25fba9['query']);_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],_0x1538a4[_0x0a9e('0x2c')]);_0x140511[_0x0a9e('0x30')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],qs[_0x0a9e('0x31')](_0x25fba9[_0x0a9e('0x2c')]['fields']));_0x140511[_0x0a9e('0x30')]=_0x140511['attributes'][_0x0a9e('0x32')]?_0x140511[_0x0a9e('0x30')]:_0x1538a4[_0x0a9e('0x29')];if(_0x25fba9[_0x0a9e('0x2c')][_0x0a9e('0x33')]){_0x140511['include']=[{'all':!![]}];}_0x140511=_[_0x0a9e('0x34')]({},_0x140511,_0x25fba9[_0x0a9e('0x35')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x36')](_0x140511)[_0x0a9e('0x22')](handleEntityNotFound(_0x14433c,null))[_0x0a9e('0x22')](respondWithResult(_0x14433c,null))[_0x0a9e('0x37')](handleError(_0x14433c,null));};exports[_0x0a9e('0x21')]=function(_0x5583a4,_0x44295a){if(_0x5583a4['body']['id']){delete _0x5583a4[_0x0a9e('0x38')]['id'];}return db[_0x0a9e('0x2a')][_0x0a9e('0x36')]({'where':{'id':_0x5583a4[_0x0a9e('0x28')]['id']}})['then'](handleEntityNotFound(_0x44295a,null))[_0x0a9e('0x22')](saveUpdates(_0x5583a4[_0x0a9e('0x38')],null))[_0x0a9e('0x22')](respondWithResult(_0x44295a,null))[_0x0a9e('0x37')](handleError(_0x44295a,null));};exports['destroy']=function(_0x54135e,_0x1e8694){return db['MailApplication'][_0x0a9e('0x36')]({'where':{'id':_0x54135e[_0x0a9e('0x28')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x1e8694,null))[_0x0a9e('0x22')](removeEntity(_0x1e8694,null))['catch'](handleError(_0x1e8694,null));};
\ No newline at end of file
+var _0x9bde=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','name','send','show','model','keys','MailApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','params','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x3dae49,_0x300a62){var _0x1d5745=function(_0x436772){while(--_0x436772){_0x3dae49['push'](_0x3dae49['shift']());}};_0x1d5745(++_0x300a62);}(_0x9bde,0xe1));var _0xe9bd=function(_0x42581d,_0x56233b){_0x42581d=_0x42581d-0x0;var _0x3bbfdf=_0x9bde[_0x42581d];return _0x3bbfdf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];function respondWithStatusCode(_0x5e022a,_0x2c1d98){_0x2c1d98=_0x2c1d98||0xcc;return function(_0x4ac319){if(_0x4ac319){return _0x5e022a[_0xe9bd('0x19')](_0x2c1d98);}return _0x5e022a[_0xe9bd('0x1a')](_0x2c1d98)[_0xe9bd('0x1b')]();};}function respondWithResult(_0x51109f,_0x47ba5e){_0x47ba5e=_0x47ba5e||0xc8;return function(_0x46a95e){if(_0x46a95e){return _0x51109f[_0xe9bd('0x1a')](_0x47ba5e)[_0xe9bd('0x1c')](_0x46a95e);}};}function respondWithFilteredResult(_0x46a59b,_0x3360bd){return function(_0x389e7b){if(_0x389e7b){var _0x45a9f2=typeof _0x3360bd['offset']===_0xe9bd('0x1d')&&typeof _0x3360bd[_0xe9bd('0x1e')]===_0xe9bd('0x1d');var _0x494b27=_0x389e7b[_0xe9bd('0x1f')];var _0x3bae08=_0x45a9f2?0x0:_0x3360bd[_0xe9bd('0x20')];var _0x330733=_0x45a9f2?_0x389e7b['count']:_0x3360bd[_0xe9bd('0x20')]+_0x3360bd['limit'];var _0xc6b661;if(_0x330733>=_0x494b27){_0x330733=_0x494b27;_0xc6b661=0xc8;}else{_0xc6b661=0xce;}_0x46a59b['status'](_0xc6b661);return _0x46a59b[_0xe9bd('0x21')](_0xe9bd('0x22'),_0x3bae08+'-'+_0x330733+'/'+_0x494b27)[_0xe9bd('0x1c')](_0x389e7b);}return null;};}function patchUpdates(_0x3dda13){return function(_0x1acb82){try{jsonpatch[_0xe9bd('0x23')](_0x1acb82,_0x3dda13,!![]);}catch(_0x6593ce){return BPromise['reject'](_0x6593ce);}return _0x1acb82[_0xe9bd('0x24')]();};}function saveUpdates(_0x28cd17,_0x4ecaf5){return function(_0x37aec1){if(_0x37aec1){return _0x37aec1['update'](_0x28cd17)[_0xe9bd('0x25')](function(_0x1b9cc9){return _0x1b9cc9;});}return null;};}function removeEntity(_0x36f8c0,_0xf02209){return function(_0x5bc4bf){if(_0x5bc4bf){return _0x5bc4bf[_0xe9bd('0x26')]()[_0xe9bd('0x25')](function(){_0x36f8c0[_0xe9bd('0x1a')](0xcc)[_0xe9bd('0x1b')]();});}};}function handleEntityNotFound(_0x2641be,_0xb52d45){return function(_0x399f3c){if(!_0x399f3c){_0x2641be[_0xe9bd('0x19')](0x194);}return _0x399f3c;};}function handleError(_0x1ae889,_0x5987af){_0x5987af=_0x5987af||0x1f4;return function(_0x3c211a){logger[_0xe9bd('0x27')](_0x3c211a['stack']);if(_0x3c211a[_0xe9bd('0x28')]){delete _0x3c211a[_0xe9bd('0x28')];}_0x1ae889[_0xe9bd('0x1a')](_0x5987af)[_0xe9bd('0x29')](_0x3c211a);};}exports[_0xe9bd('0x2a')]=function(_0x183601,_0x519f48){var _0x5b7f1d={'raw':!![],'where':{'id':_0x183601['params']['id']}},_0x1de54c={};_0x1de54c[_0xe9bd('0x2b')]=_[_0xe9bd('0x2c')](db[_0xe9bd('0x2d')][_0xe9bd('0x2e')]);_0x1de54c[_0xe9bd('0x2f')]=_['keys'](_0x183601['query']);_0x1de54c[_0xe9bd('0x30')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],_0x1de54c[_0xe9bd('0x2f')]);_0x5b7f1d[_0xe9bd('0x32')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],qs[_0xe9bd('0x33')](_0x183601[_0xe9bd('0x2f')]['fields']));_0x5b7f1d[_0xe9bd('0x32')]=_0x5b7f1d[_0xe9bd('0x32')][_0xe9bd('0x34')]?_0x5b7f1d['attributes']:_0x1de54c['model'];if(_0x183601[_0xe9bd('0x2f')][_0xe9bd('0x35')]){_0x5b7f1d[_0xe9bd('0x36')]=[{'all':!![]}];}_0x5b7f1d=_[_0xe9bd('0x37')]({},_0x5b7f1d,_0x183601[_0xe9bd('0x38')]);return db[_0xe9bd('0x2d')][_0xe9bd('0x39')](_0x5b7f1d)[_0xe9bd('0x25')](handleEntityNotFound(_0x519f48,null))[_0xe9bd('0x25')](respondWithResult(_0x519f48,null))[_0xe9bd('0x3a')](handleError(_0x519f48,null));};exports[_0xe9bd('0x3b')]=function(_0x549dd1,_0x2ad46e){if(_0x549dd1[_0xe9bd('0x3c')]['id']){delete _0x549dd1[_0xe9bd('0x3c')]['id'];}return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x549dd1[_0xe9bd('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2ad46e,null))[_0xe9bd('0x25')](saveUpdates(_0x549dd1[_0xe9bd('0x3c')],null))['then'](respondWithResult(_0x2ad46e,null))[_0xe9bd('0x3a')](handleError(_0x2ad46e,null));};exports[_0xe9bd('0x26')]=function(_0x4c7d47,_0x4b1da0){return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x4c7d47['params']['id']}})[_0xe9bd('0x25')](handleEntityNotFound(_0x4b1da0,null))[_0xe9bd('0x25')](removeEntity(_0x4b1da0,null))[_0xe9bd('0x3a')](handleError(_0x4b1da0,null));};
\ No newline at end of file
index 22b8a91..2990780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59dd=['utf8mb4_unicode_ci','lodash','api','moment','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4'];(function(_0x38e144,_0x3e7c0a){var _0x4705d6=function(_0x34c49d){while(--_0x34c49d){_0x38e144['push'](_0x38e144['shift']());}};_0x4705d6(++_0x3e7c0a);}(_0x59dd,0x1a1));var _0xd59d=function(_0x178856,_0x41f045){_0x178856=_0x178856-0x0;var _0x3c7fe7=_0x59dd[_0x178856];return _0x3c7fe7;};'use strict';var _=require(_0xd59d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd59d('0x1'));var moment=require(_0xd59d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd59d('0x3'));var rimraf=require(_0xd59d('0x4'));var config=require(_0xd59d('0x5'));var attributes=require(_0xd59d('0x6'));module[_0xd59d('0x7')]=function(_0x5e029e,_0x1ca1e1){return _0x5e029e[_0xd59d('0x8')](_0xd59d('0x9'),attributes,{'tableName':_0xd59d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd59d('0xb'),'collate':_0xd59d('0xc')});};
\ No newline at end of file
+var _0xefe1=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x373595,_0x552011){var _0x22808e=function(_0x2597d8){while(--_0x2597d8){_0x373595['push'](_0x373595['shift']());}};_0x22808e(++_0x552011);}(_0xefe1,0xb3));var _0x1efe=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xefe1[_0x13b8f3];return _0x1a6d06;};'use strict';var _=require(_0x1efe('0x0'));var util=require(_0x1efe('0x1'));var logger=require(_0x1efe('0x2'))('api');var moment=require(_0x1efe('0x3'));var BPromise=require('bluebird');var rp=require(_0x1efe('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1efe('0x5'));var config=require(_0x1efe('0x6'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x478a70,_0x4cc0c7){return _0x478a70[_0x1efe('0x7')](_0x1efe('0x8'),attributes,{'tableName':_0x1efe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1efe('0xa'),'collate':_0x1efe('0xb')});};
\ No newline at end of file
index 96a8130..fc8862d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66c8=['request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateMailApplication','update','options','raw','attributes','limit','then','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailApplication,\x20%s,\x20%s'];(function(_0x494294,_0x407105){var _0x45d9c3=function(_0x3de5fc){while(--_0x3de5fc){_0x494294['push'](_0x494294['shift']());}};_0x45d9c3(++_0x407105);}(_0x66c8,0x197));var _0x866c=function(_0x3adf33,_0x1a24ae){_0x3adf33=_0x3adf33-0x0;var _0x18379e=_0x66c8[_0x3adf33];return _0x18379e;};'use strict';var _=require(_0x866c('0x0'));var util=require(_0x866c('0x1'));var moment=require(_0x866c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x866c('0x3'));var db=require(_0x866c('0x4'))['db'];var utils=require(_0x866c('0x5'));var logger=require(_0x866c('0x6'))(_0x866c('0x7'));var config=require(_0x866c('0x8'));var jayson=require(_0x866c('0x9'));var client=jayson['client'][_0x866c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xaff620,_0x28365f,_0x43fa7c){return new BPromise(function(_0x11c36a,_0x206e37){return client['request'](_0xaff620,_0x43fa7c)['then'](function(_0x2e6678){logger[_0x866c('0xb')](_0x866c('0xc'),_0x28365f,_0x866c('0xd'));logger[_0x866c('0xe')](_0x866c('0xf'),_0x28365f,_0x866c('0xd'),JSON[_0x866c('0x10')](_0x2e6678));if(_0x2e6678[_0x866c('0x11')]){if(_0x2e6678[_0x866c('0x11')]['code']===0x1f4){logger[_0x866c('0x11')](_0x866c('0xc'),_0x28365f,_0x2e6678[_0x866c('0x11')][_0x866c('0x12')]);return _0x206e37(_0x2e6678[_0x866c('0x11')][_0x866c('0x12')]);}logger[_0x866c('0x11')](_0x866c('0xc'),_0x28365f,_0x2e6678[_0x866c('0x11')][_0x866c('0x12')]);return _0x11c36a(_0x2e6678[_0x866c('0x11')][_0x866c('0x12')]);}else{logger[_0x866c('0xb')](_0x866c('0xc'),_0x28365f,_0x866c('0xd'));_0x11c36a(_0x2e6678[_0x866c('0x13')][_0x866c('0x12')]);}})[_0x866c('0x14')](function(_0x5d5b97){logger[_0x866c('0x11')](_0x866c('0xc'),_0x28365f,_0x5d5b97);_0x206e37(_0x5d5b97);});});}exports[_0x866c('0x15')]=function(_0x4b7b8b){var _0x48f396=this;return new Promise(function(_0x233f16,_0x351a9c){return db['MailApplication'][_0x866c('0x16')](_0x4b7b8b['body'],{'raw':_0x4b7b8b['options']?_0x4b7b8b[_0x866c('0x17')][_0x866c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b7b8b[_0x866c('0x17')]?_0x4b7b8b['options']['where']||null:null,'attributes':_0x4b7b8b['options']?_0x4b7b8b[_0x866c('0x17')][_0x866c('0x19')]||null:null,'limit':_0x4b7b8b[_0x866c('0x17')]?_0x4b7b8b[_0x866c('0x17')][_0x866c('0x1a')]||null:null})[_0x866c('0x1b')](function(_0x8ff223){logger[_0x866c('0xb')]('UpdateMailApplication',_0x4b7b8b);logger[_0x866c('0xe')](_0x866c('0x15'),_0x4b7b8b,JSON[_0x866c('0x10')](_0x8ff223));_0x233f16(_0x8ff223);})['catch'](function(_0x59c3a8){logger['error'](_0x866c('0x15'),_0x59c3a8[_0x866c('0x12')],_0x4b7b8b);_0x351a9c(_0x48f396['error'](0x1f4,_0x59c3a8[_0x866c('0x12')]));});});};
\ No newline at end of file
+var _0xe280=['then','info','MailApplication,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes','limit','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0xe280,0x1b3));var _0x0e28=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xe280[_0x38537f];return _0x141e23;};'use strict';var _=require(_0x0e28('0x0'));var util=require(_0x0e28('0x1'));var moment=require(_0x0e28('0x2'));var BPromise=require('bluebird');var rs=require(_0x0e28('0x3'));var fs=require('fs');var Redis=require(_0x0e28('0x4'));var db=require(_0x0e28('0x5'))['db'];var utils=require(_0x0e28('0x6'));var logger=require(_0x0e28('0x7'))(_0x0e28('0x8'));var config=require('../../config/environment');var jayson=require(_0x0e28('0x9'));var client=jayson[_0x0e28('0xa')][_0x0e28('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3af59b,_0x421cb7,_0x3decc9){return new BPromise(function(_0x1a823a,_0x462d2e){return client[_0x0e28('0xc')](_0x3af59b,_0x3decc9)[_0x0e28('0xd')](function(_0x4521e1){logger[_0x0e28('0xe')](_0x0e28('0xf'),_0x421cb7,'request\x20sent');logger[_0x0e28('0x10')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x421cb7,_0x0e28('0x11'),JSON['stringify'](_0x4521e1));if(_0x4521e1[_0x0e28('0x12')]){if(_0x4521e1[_0x0e28('0x12')][_0x0e28('0x13')]===0x1f4){logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x4521e1['error'][_0x0e28('0x14')]);return _0x462d2e(_0x4521e1['error']['message']);}logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x4521e1[_0x0e28('0x12')][_0x0e28('0x14')]);return _0x1a823a(_0x4521e1['error'][_0x0e28('0x14')]);}else{logger[_0x0e28('0xe')](_0x0e28('0xf'),_0x421cb7,'request\x20sent');_0x1a823a(_0x4521e1[_0x0e28('0x15')][_0x0e28('0x14')]);}})[_0x0e28('0x16')](function(_0x2f14f6){logger[_0x0e28('0x12')](_0x0e28('0xf'),_0x421cb7,_0x2f14f6);_0x462d2e(_0x2f14f6);});});}exports[_0x0e28('0x17')]=function(_0x3a059f){var _0x51a9ae=this;return new Promise(function(_0x29aa21,_0x2f59b7){return db['MailApplication'][_0x0e28('0x18')](_0x3a059f[_0x0e28('0x19')],{'raw':_0x3a059f['options']?_0x3a059f[_0x0e28('0x1a')][_0x0e28('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1c')]||null:null,'attributes':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1d')]||null:null,'limit':_0x3a059f[_0x0e28('0x1a')]?_0x3a059f['options'][_0x0e28('0x1e')]||null:null})['then'](function(_0x16ad0f){logger[_0x0e28('0xe')](_0x0e28('0x17'),_0x3a059f);logger['debug'](_0x0e28('0x17'),_0x3a059f,JSON[_0x0e28('0x1f')](_0x16ad0f));_0x29aa21(_0x16ad0f);})[_0x0e28('0x16')](function(_0x155e51){logger[_0x0e28('0x12')]('UpdateMailApplication',_0x155e51['message'],_0x3a059f);_0x2f59b7(_0x51a9ae[_0x0e28('0x12')](0x1f4,_0x155e51[_0x0e28('0x14')]));});});};
\ No newline at end of file
index 2f8628c..da88417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd681=['get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','update','destroy','delete','removeTags','exports','../../components/interaction/service'];(function(_0x317667,_0x294a0f){var _0x271b11=function(_0x3e9e7c){while(--_0x3e9e7c){_0x317667['push'](_0x317667['shift']());}};_0x271b11(++_0x294a0f);}(_0xd681,0x107));var _0x1d68=function(_0xd5daae,_0x648e3b){_0xd5daae=_0xd5daae-0x0;var _0x1e6b27=_0xd681[_0xd5daae];return _0x1e6b27;};'use strict';var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0x1d68('0x0'));var controller=require('./mailInteraction.controller');router[_0x1d68('0x1')]('/',auth[_0x1d68('0x2')](),controller[_0x1d68('0x3')]);router[_0x1d68('0x1')](_0x1d68('0x4'),auth['isAuthenticated'](),controller[_0x1d68('0x5')]);router[_0x1d68('0x1')](_0x1d68('0x6'),auth[_0x1d68('0x2')](),controller[_0x1d68('0x7')]);router[_0x1d68('0x1')]('/:id/messages',auth[_0x1d68('0x2')](),controller[_0x1d68('0x8')]);router[_0x1d68('0x1')](_0x1d68('0x9'),auth[_0x1d68('0x2')](),controller[_0x1d68('0xa')]);router[_0x1d68('0xb')]('/',auth['isAuthenticated'](),controller[_0x1d68('0xc')]);router['post'](_0x1d68('0xd'),auth[_0x1d68('0x2')](),controller['addMessage']);router[_0x1d68('0xb')](_0x1d68('0xe'),auth[_0x1d68('0x2')](),interaction[_0x1d68('0xf')](_0x1d68('0x10'),_0x1d68('0x11')),controller[_0x1d68('0x12')]);router['put'](_0x1d68('0x6'),auth[_0x1d68('0x2')](),interaction['tracked'](_0x1d68('0x10'),'mailinteraction:update'),controller[_0x1d68('0x13')]);router['delete'](_0x1d68('0x6'),auth['isAuthenticated'](),interaction['tracked']('mail','mailinteraction:destroy'),controller[_0x1d68('0x14')]);router[_0x1d68('0x15')](_0x1d68('0xe'),auth[_0x1d68('0x2')](),controller[_0x1d68('0x16')]);module[_0x1d68('0x17')]=router;
\ No newline at end of file
+var _0xf806=['mailinteraction:update','update','delete','mailinteraction:destroy','destroy','exports','express','Router','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','mail','addTags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf806,0x1e6));var _0x6f80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf806[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x6f80('0x0'));var router=express[_0x6f80('0x1')]();var auth=require(_0x6f80('0x2'));var interaction=require('../../components/interaction/service');var controller=require('./mailInteraction.controller');router[_0x6f80('0x3')]('/',auth[_0x6f80('0x4')](),controller[_0x6f80('0x5')]);router[_0x6f80('0x3')]('/describe',auth[_0x6f80('0x4')](),controller['describe']);router[_0x6f80('0x3')](_0x6f80('0x6'),auth[_0x6f80('0x4')](),controller[_0x6f80('0x7')]);router[_0x6f80('0x3')](_0x6f80('0x8'),auth[_0x6f80('0x4')](),controller[_0x6f80('0x9')]);router[_0x6f80('0x3')](_0x6f80('0xa'),auth[_0x6f80('0x4')](),controller['download']);router[_0x6f80('0xb')]('/',auth[_0x6f80('0x4')](),controller[_0x6f80('0xc')]);router[_0x6f80('0xb')]('/:id/messages',auth[_0x6f80('0x4')](),controller[_0x6f80('0xd')]);router['post'](_0x6f80('0xe'),auth[_0x6f80('0x4')](),interaction[_0x6f80('0xf')](_0x6f80('0x10'),'mailinteraction:addtags'),controller[_0x6f80('0x11')]);router['put'](_0x6f80('0x6'),auth['isAuthenticated'](),interaction[_0x6f80('0xf')](_0x6f80('0x10'),_0x6f80('0x12')),controller[_0x6f80('0x13')]);router[_0x6f80('0x14')](_0x6f80('0x6'),auth[_0x6f80('0x4')](),interaction['tracked'](_0x6f80('0x10'),_0x6f80('0x15')),controller[_0x6f80('0x16')]);router[_0x6f80('0x14')](_0x6f80('0xe'),auth[_0x6f80('0x4')](),controller['removeTags']);module[_0x6f80('0x17')]=router;
\ No newline at end of file
index c933595..8bb1419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb38a=['ENUM','out','sequelize','BOOLEAN','STRING','TEXT','long','DATE'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xb38a,0x1b2));var _0xab38=function(_0x308486,_0x31e706){_0x308486=_0x308486-0x0;var _0x21ff39=_0xb38a[_0x308486];return _0x21ff39;};'use strict';var Sequelize=require(_0xab38('0x0'));var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0xab38('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xab38('0x2')]},'secondDisposition':{'type':Sequelize[_0xab38('0x2')]},'thirdDisposition':{'type':Sequelize[_0xab38('0x2')]},'note':{'type':Sequelize[_0xab38('0x2')]},'inReplyTo':{'type':Sequelize[_0xab38('0x2')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xab38('0x3')](_0xab38('0x4'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0xab38('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xab38('0x5')]},'substatus':{'type':Sequelize[_0xab38('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0xab38('0x5')]},'firstMsgDirection':{'type':Sequelize[_0xab38('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xab38('0x5')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xab38('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x8e13=['TEXT','long','DATE','ENUM','out','sequelize','iconv','BOOLEAN','STRING'];(function(_0x495cb5,_0x6412cb){var _0x880020=function(_0x51dfbb){while(--_0x51dfbb){_0x495cb5['push'](_0x495cb5['shift']());}};_0x880020(++_0x6412cb);}(_0x8e13,0x1ac));var _0x38e1=function(_0xd36d6c,_0x2629e9){_0xd36d6c=_0xd36d6c-0x0;var _0x4df97d=_0x8e13[_0xd36d6c];return _0x4df97d;};'use strict';var Sequelize=require(_0x38e1('0x0'));var iconv=require(_0x38e1('0x1'));module['exports']={'closed':{'type':Sequelize[_0x38e1('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x38e1('0x3')]},'secondDisposition':{'type':Sequelize[_0x38e1('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x38e1('0x3')]},'inReplyTo':{'type':Sequelize[_0x38e1('0x3')](0x1fe)},'to':{'type':Sequelize[_0x38e1('0x3')]},'cc':{'type':Sequelize[_0x38e1('0x4')](_0x38e1('0x5'))},'subject':{'type':Sequelize[_0x38e1('0x4')]()},'attach':{'type':Sequelize[_0x38e1('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x38e1('0x6')]},'substatus':{'type':Sequelize[_0x38e1('0x3')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x38e1('0x7')]('in',_0x38e1('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x38e1('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x38e1('0x7')]('in',_0x38e1('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index bf01d4b..e223701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe62f=['stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','mail','query','user','catch','show','params','keys','MailInteraction','attributes','intersection','model','fields','includeAll','options','find','create','body','update','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','length','hasOwnProperty','nolimit','sort','filters','where','MailInteractionId','filter','merge','$gte','split','format','include','findAll','rows','setTags','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','attachments','transcript-%d-%s.zip','push','Attachments','Messages','get','mkdirSync','missing.recipient@your.company.com','subject','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','moment','bluebird','util','juice','ioredis','../../components/parsers/qs','../../config/environment','redis','defaults','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','error'];(function(_0x4d704d,_0x142079){var _0x5a9f76=function(_0x1d25d0){while(--_0x1d25d0){_0x4d704d['push'](_0x4d704d['shift']());}};_0x5a9f76(++_0x142079);}(_0xe62f,0x19a));var _0xfe62=function(_0x32082b,_0x5e2270){_0x32082b=_0x32082b-0x0;var _0x411a3c=_0xe62f[_0x32082b];return _0x411a3c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe62('0x0'));var zipdir=require(_0xfe62('0x1'));var moment=require(_0xfe62('0x2'));var BPromise=require(_0xfe62('0x3'));var util=require(_0xfe62('0x4'));var path=require('path');var fs=require('fs');var _=require('lodash');var juice=require(_0xfe62('0x5'));var Redis=require(_0xfe62('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0xfe62('0x7'));var logger=require('../../config/logger')('api');var config=require(_0xfe62('0x8'));var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0xfe62('0x9')]=_[_0xfe62('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfe62('0xb'))(new Redis(config['redis']));require('./mailInteraction.socket')[_0xfe62('0xc')](socket);function respondWithStatusCode(_0x9d56c4,_0x8508e3){_0x8508e3=_0x8508e3||0xcc;return function(_0x2525e8){if(_0x2525e8){return _0x9d56c4[_0xfe62('0xd')](_0x8508e3);}return _0x9d56c4['status'](_0x8508e3)[_0xfe62('0xe')]();};}function respondWithResult(_0x4a26af,_0x268a75){_0x268a75=_0x268a75||0xc8;return function(_0x49e025){if(_0x49e025){return _0x4a26af[_0xfe62('0xf')](_0x268a75)[_0xfe62('0x10')](_0x49e025);}};}function respondWithFilteredResult(_0x481b95,_0x4eccc1){return function(_0x3d0057){if(_0x3d0057){var _0x2b15ed=typeof _0x4eccc1[_0xfe62('0x11')]===_0xfe62('0x12')&&typeof _0x4eccc1[_0xfe62('0x13')]===_0xfe62('0x12');var _0x5c6dda=_0x3d0057[_0xfe62('0x14')];var _0x3ac249=_0x2b15ed?0x0:_0x4eccc1[_0xfe62('0x11')];var _0x5833c6=_0x2b15ed?_0x3d0057[_0xfe62('0x14')]:_0x4eccc1[_0xfe62('0x11')]+_0x4eccc1[_0xfe62('0x13')];var _0x408e56;if(_0x5833c6>=_0x5c6dda){_0x5833c6=_0x5c6dda;_0x408e56=0xc8;}else{_0x408e56=0xce;}_0x481b95['status'](_0x408e56);return _0x481b95[_0xfe62('0x15')](_0xfe62('0x16'),_0x3ac249+'-'+_0x5833c6+'/'+_0x5c6dda)[_0xfe62('0x10')](_0x3d0057);}return null;};}function saveUpdates(_0x53d28e){return function(_0x393a95){if(_0x393a95){return _0x393a95['update'](_0x53d28e)[_0xfe62('0x17')](function(_0x1efdb0){return _0x1efdb0;});}return null;};}function removeEntity(_0x107170){return function(_0x3d7392){if(_0x3d7392){return _0x3d7392[_0xfe62('0x18')]()[_0xfe62('0x17')](function(){_0x107170[_0xfe62('0xf')](0xcc)[_0xfe62('0xe')]();});}};}function handleEntityNotFound(_0x32cdb3){return function(_0x341531){if(!_0x341531){_0x32cdb3[_0xfe62('0xd')](0x194);}return _0x341531;};}function handleError(_0x16b42d,_0x41e245){_0x41e245=_0x41e245||0x1f4;return function(_0xa15070){logger[_0xfe62('0x19')](_0xa15070[_0xfe62('0x1a')]);if(_0xa15070[_0xfe62('0x1b')]){delete _0xa15070[_0xfe62('0x1b')];}_0x16b42d['status'](_0x41e245)[_0xfe62('0x1c')](_0xa15070);};}exports[_0xfe62('0x1d')]=function(_0x4c4b9f,_0x49cf6c){var _0x27dc74={};var _0xee27cb=_[_0xfe62('0x1e')](db['MailInteraction'][_0xfe62('0x1f')],function(_0x51052b){return{'name':_0x51052b[_0xfe62('0x20')],'type':_0x51052b['type'][_0xfe62('0x21')]};});_0x27dc74=qs[_0xfe62('0x22')](_0xee27cb,_0x4c4b9f);return interaction['findAll'](_0xfe62('0x23'),_0x4c4b9f[_0xfe62('0x24')],_0x4c4b9f[_0xfe62('0x25')],_0x27dc74,_0xee27cb)[_0xfe62('0x17')](respondWithFilteredResult(_0x49cf6c,_0x27dc74))[_0xfe62('0x26')](handleError(_0x49cf6c,null));};exports[_0xfe62('0x27')]=function(_0x59f07b,_0x4e3b2b){var _0x1df48b={'raw':![],'where':{'id':_0x59f07b[_0xfe62('0x28')]['id']}},_0x232889={};_0x232889['model']=_[_0xfe62('0x29')](db[_0xfe62('0x2a')][_0xfe62('0x1f')]);_0x232889[_0xfe62('0x24')]=_[_0xfe62('0x29')](_0x59f07b[_0xfe62('0x24')]);_0x232889['filters']=_['intersection'](_0x232889['model'],_0x232889[_0xfe62('0x24')]);_0x1df48b[_0xfe62('0x2b')]=_[_0xfe62('0x2c')](_0x232889[_0xfe62('0x2d')],qs[_0xfe62('0x2e')](_0x59f07b[_0xfe62('0x24')][_0xfe62('0x2e')]));_0x1df48b['attributes']=_0x1df48b[_0xfe62('0x2b')]['length']?_0x1df48b[_0xfe62('0x2b')]:_0x232889[_0xfe62('0x2d')];if(_0x59f07b[_0xfe62('0x24')][_0xfe62('0x2f')]){_0x1df48b['include']=[{'all':!![]}];}_0x1df48b=_['merge']({},_0x1df48b,_0x59f07b[_0xfe62('0x30')]);return db[_0xfe62('0x2a')][_0xfe62('0x31')](_0x1df48b)['then'](handleEntityNotFound(_0x4e3b2b,null))[_0xfe62('0x17')](respondWithResult(_0x4e3b2b,null))['catch'](handleError(_0x4e3b2b,null));};exports['create']=function(_0x576aa0,_0x42b17e){return db['MailInteraction'][_0xfe62('0x32')](_0x576aa0[_0xfe62('0x33')],{})[_0xfe62('0x17')](respondWithResult(_0x42b17e,0xc9))['catch'](handleError(_0x42b17e,null));};exports[_0xfe62('0x34')]=function(_0x101bbd,_0x1bf0e5){if(_0x101bbd['body']['id']){delete _0x101bbd['body']['id'];}return db['MailInteraction'][_0xfe62('0x31')]({'where':{'id':_0x101bbd[_0xfe62('0x28')]['id']}})[_0xfe62('0x17')](handleEntityNotFound(_0x1bf0e5,null))[_0xfe62('0x17')](saveUpdates(_0x101bbd[_0xfe62('0x33')],null))[_0xfe62('0x17')](respondWithResult(_0x1bf0e5,null))[_0xfe62('0x26')](handleError(_0x1bf0e5,null));};exports['destroy']=function(_0x3c925a,_0x123fe0){return db[_0xfe62('0x2a')]['find']({'where':{'id':_0x3c925a['params']['id']}})[_0xfe62('0x17')](handleEntityNotFound(_0x123fe0,null))[_0xfe62('0x17')](removeEntity(_0x123fe0,null))[_0xfe62('0x26')](handleError(_0x123fe0,null));};exports[_0xfe62('0x35')]=function(_0x4e66d5,_0x414749){return db[_0xfe62('0x2a')][_0xfe62('0x35')]()[_0xfe62('0x17')](respondWithResult(_0x414749,null))[_0xfe62('0x26')](handleError(_0x414749,null));};exports[_0xfe62('0x36')]=function(_0x22fb2c,_0xbe9154){return db[_0xfe62('0x37')][_0xfe62('0x31')]({'where':{'id':_0x22fb2c[_0xfe62('0x28')]['id']}})[_0xfe62('0x17')](handleEntityNotFound(_0xbe9154,null))['then'](function(_0x27bac3){if(_0x27bac3){return _0x27bac3[_0xfe62('0x36')](_0x22fb2c[_0xfe62('0x33')][_0xfe62('0x38')],_[_0xfe62('0x39')](_0x22fb2c[_0xfe62('0x33')],[_0xfe62('0x38'),'id'])||{});}})[_0xfe62('0x17')](respondWithResult(_0xbe9154,null))['catch'](handleError(_0xbe9154,null));};exports[_0xfe62('0x3a')]=function(_0x257a10,_0x1b57c7){var _0x49bf53={'raw':![],'where':{}};var _0x66a3b2={};var _0xb6c614={'count':0x0,'rows':[]};return db[_0xfe62('0x2a')][_0xfe62('0x3b')]({'where':{'id':_0x257a10[_0xfe62('0x28')]['id']}})['then'](handleEntityNotFound(_0x1b57c7,null))[_0xfe62('0x17')](function(_0x332b22){if(_0x332b22){_0x66a3b2['model']=_['keys'](db['MailMessage'][_0xfe62('0x1f')]);_0x66a3b2[_0xfe62('0x24')]=_[_0xfe62('0x29')](_0x257a10[_0xfe62('0x24')]);_0x66a3b2['filters']=_[_0xfe62('0x2c')](_0x66a3b2['model'],_0x66a3b2[_0xfe62('0x24')]);_0x49bf53[_0xfe62('0x2b')]=_[_0xfe62('0x2c')](_0x66a3b2[_0xfe62('0x2d')],qs[_0xfe62('0x2e')](_0x257a10['query'][_0xfe62('0x2e')]));_0x49bf53[_0xfe62('0x2b')]=_0x49bf53['attributes'][_0xfe62('0x3c')]?_0x49bf53['attributes']:_0x66a3b2[_0xfe62('0x2d')];if(!_0x257a10[_0xfe62('0x24')][_0xfe62('0x3d')](_0xfe62('0x3e'))){_0x49bf53[_0xfe62('0x13')]=qs['limit'](_0x257a10[_0xfe62('0x24')][_0xfe62('0x13')]);_0x49bf53[_0xfe62('0x11')]=qs[_0xfe62('0x11')](_0x257a10['query'][_0xfe62('0x11')]);}_0x49bf53['order']=qs['sort'](_0x257a10[_0xfe62('0x24')][_0xfe62('0x3f')]);_0x49bf53['where']=qs[_0xfe62('0x40')](_['pick'](_0x257a10['query'],_0x66a3b2[_0xfe62('0x40')]));_0x49bf53[_0xfe62('0x41')][_0xfe62('0x42')]=_0x332b22['id'];if(_0x257a10[_0xfe62('0x24')][_0xfe62('0x43')]){_0x49bf53[_0xfe62('0x41')]=_[_0xfe62('0x44')](_0x49bf53[_0xfe62('0x41')],{'$or':_['map'](_0x49bf53[_0xfe62('0x2b')],function(_0xe22522){var _0x3910ee={};_0x3910ee[_0xe22522]={'$like':'%'+_0x257a10[_0xfe62('0x24')][_0xfe62('0x43')]+'%'};return _0x3910ee;})});}if(_0x257a10[_0xfe62('0x24')]['$gte']){var _0x2e1ef1=_0x257a10[_0xfe62('0x24')][_0xfe62('0x45')][_0xfe62('0x46')](',');var _0x232389={};_0x232389[_0x2e1ef1[0x0]]={'$gte':moment(_0x2e1ef1[0x1])[_0xfe62('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x49bf53[_0xfe62('0x41')]=_['merge'](_0x49bf53[_0xfe62('0x41')],_0x232389);}_0x49bf53=_[_0xfe62('0x44')]({},_0x49bf53,_0x257a10[_0xfe62('0x30')]);return db['MailMessage'][_0xfe62('0x14')]({'where':_0x49bf53[_0xfe62('0x41')]})[_0xfe62('0x17')](function(_0xceb139){_0xb6c614[_0xfe62('0x14')]=_0xceb139;if(_0x257a10[_0xfe62('0x24')][_0xfe62('0x2f')]){_0x49bf53[_0xfe62('0x48')]=[{'all':!![]}];}return db[_0xfe62('0x37')][_0xfe62('0x49')](_0x49bf53);})[_0xfe62('0x17')](function(_0x23c519){if(_0x257a10['query']['inlineCss']==='true'){for(var _0x5130da=0x0;_0x5130da<_0x23c519[_0xfe62('0x3c')];_0x5130da++){_0x23c519[_0x5130da][_0xfe62('0x33')]=juice(_0x23c519[_0x5130da][_0xfe62('0x33')]);}}_0xb6c614[_0xfe62('0x4a')]=_0x23c519;return _0xb6c614;});}})[_0xfe62('0x17')](respondWithFilteredResult(_0x1b57c7,_0x49bf53))[_0xfe62('0x26')](handleError(_0x1b57c7,null));};exports['addTags']=function(_0x7e99e8,_0x30bf5a){return db['MailInteraction']['find']({'where':{'id':_0x7e99e8[_0xfe62('0x28')]['id']}})['then'](handleEntityNotFound(_0x30bf5a,null))[_0xfe62('0x17')](function(_0x39815c){if(_0x39815c){return _0x39815c[_0xfe62('0x4b')](_0x7e99e8[_0xfe62('0x33')][_0xfe62('0x38')],_['omit'](_0x7e99e8['body'],[_0xfe62('0x38'),'id'])||{})['spread'](function(){return db[_0xfe62('0x4c')][_0xfe62('0x49')]({'attributes':['id','name',_0xfe62('0x4d')],'where':{'id':_0x7e99e8[_0xfe62('0x33')][_0xfe62('0x38')]}});})[_0xfe62('0x17')](function(_0x491995){socket[_0xfe62('0x4e')](_0xfe62('0x4f'),{'id':Number(_0x7e99e8['params']['id']),'tags':_0x491995||[]});return{'id':Number(_0x7e99e8['params']['id']),'tags':_0x491995||[]};});}})['then'](respondWithResult(_0x30bf5a,null))[_0xfe62('0x26')](handleError(_0x30bf5a,null));};exports[_0xfe62('0x50')]=function(_0x48d06d,_0x573ae9){return db[_0xfe62('0x2a')][_0xfe62('0x31')]({'where':{'id':_0x48d06d[_0xfe62('0x28')]['id']}})[_0xfe62('0x17')](handleEntityNotFound(_0x573ae9,null))[_0xfe62('0x17')](function(_0x4cbd30){if(_0x4cbd30){return _0x4cbd30['removeTags'](_0x48d06d[_0xfe62('0x24')][_0xfe62('0x38')]);}})[_0xfe62('0x17')](respondWithStatusCode(_0x573ae9,null))[_0xfe62('0x26')](handleError(_0x573ae9,null));};exports[_0xfe62('0x51')]=function(_0x447dae,_0x1e8a86){var _0x263853=moment()[_0xfe62('0x52')]()[_0xfe62('0x53')]();var _0xcd93de=path[_0xfe62('0x54')](config[_0xfe62('0x55')],'server',_0xfe62('0x56'),_0xfe62('0x57'));var _0x25c18c=path['join'](config['root'],'server',_0xfe62('0x56'),_0xfe62('0x58'));var _0x196611=path[_0xfe62('0x54')](_0xcd93de,_0x263853);var _0x27d783=util[_0xfe62('0x47')](_0xfe62('0x59'),_0x447dae[_0xfe62('0x28')]['id'],_0x263853);var _0xc3ed57=path['join'](_0xcd93de,_0x27d783);var _0x3ef5c7=[];if(_0x447dae[_0xfe62('0x24')][_0xfe62('0x58')]){_0x3ef5c7[_0xfe62('0x5a')]({'model':db['Attachment'],'as':_0xfe62('0x5b'),'raw':!![]});}var _0x491081=[{'model':db[_0xfe62('0x37')],'as':_0xfe62('0x5c'),'attributes':['id',_0xfe62('0x33'),'from','to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0xfe62('0x3f')]('id'),'include':_0x3ef5c7}];return db[_0xfe62('0x2a')][_0xfe62('0x31')]({'where':{'id':_0x447dae[_0xfe62('0x28')]['id']},'include':_0x491081})[_0xfe62('0x17')](handleEntityNotFound(_0x1e8a86,null))[_0xfe62('0x17')](function(_0x1eff70){if(_0x1eff70&&_0x1eff70[_0xfe62('0x5c')]){var _0x2d8dbc=_0x1eff70[_0xfe62('0x5d')]({'plain':!![]});fs[_0xfe62('0x5e')](_0x196611);return BPromise['each'](_0x2d8dbc[_0xfe62('0x5c')],function(_0x134726,_0x5ab9f3){var _0x5e78c2={'from':_0x134726['from'],'to':_0x134726['to']||_0xfe62('0x5f'),'subject':_0x134726[_0xfe62('0x60')],'html':htmlEntities[_0xfe62('0x61')](_0x134726[_0xfe62('0x33')]),'headers':{'Date':moment(_0x134726[_0xfe62('0x62')])[_0xfe62('0x47')](_0xfe62('0x63'))},'attachments':[]};if(_0x134726['cc']){_0x5e78c2[_0xfe62('0x64')]['Cc']=_0x134726['cc'];}if(_0x134726[_0xfe62('0x65')]){_0x5e78c2['headers'][_0xfe62('0x66')]=_0x134726['bcc'];}return new BPromise(function(_0x223b6c,_0x282708){if(_0x134726[_0xfe62('0x5b')]){for(var _0x264325=0x0;_0x264325<_0x134726[_0xfe62('0x5b')][_0xfe62('0x3c')];_0x264325++){var _0x3dfe25=_0x134726['Attachments'][_0x264325];var _0x5300a5=path[_0xfe62('0x54')](_0x25c18c,_0x3dfe25[_0xfe62('0x67')]);if(fs[_0xfe62('0x68')](_0x5300a5)){_0x5e78c2[_0xfe62('0x58')][_0xfe62('0x5a')]({'name':_0x3dfe25[_0xfe62('0x1b')],'contentType':_0x3dfe25['type'],'data':fs['readFileSync'](_0x5300a5)});}}}emlformat[_0xfe62('0x69')](_0x5e78c2,function(_0x414f94,_0x276e9b){if(_0x414f94)return _0x282708(_0x414f94);fs[_0xfe62('0x6a')](path[_0xfe62('0x54')](_0x196611,util[_0xfe62('0x47')](_0xfe62('0x6b'),_0x5ab9f3)),_0x276e9b);return _0x223b6c(_0x276e9b);});});})['then'](function(){return new BPromise(function(_0xfb1055,_0x14fbd9){zipdir(_0x196611,{'saveTo':_0xc3ed57},function(_0x55bfb2,_0x1ec70f){if(_0x55bfb2)return _0x14fbd9(_0x55bfb2);return _0xfb1055(_0x1ec70f);});})[_0xfe62('0x17')](function(){return new BPromise(function(_0x1efe26,_0x4fb507){rimraf(_0x196611,function(_0x111c9f){if(_0x111c9f)_0x4fb507(_0x111c9f);return _0x1efe26();});});})[_0xfe62('0x17')](function(){return _0x1e8a86['download'](_0xc3ed57,_0x27d783,function(_0x387da){if(!_0x387da)fs[_0xfe62('0x6c')](_0xc3ed57);});});});}else{return _0x1e8a86[_0xfe62('0xd')](0xc8);}})['catch'](handleError(_0x1e8a86,null));};
\ No newline at end of file
+var _0x627a=['removeTags','download','toString','join','server','files','transcript-%d-%s.zip','attachments','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','each','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','existsSync','readFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','json','offset','count','limit','set','Content-Range','then','end','error','name','send','index','MailInteraction','fieldName','type','key','getOptions','mail','query','user','catch','show','keys','filters','intersection','model','attributes','fields','length','include','merge','options','find','create','body','update','params','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','rawAttributes','order','sort','where','pick','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','setTags','spread','color','emit','mailInteractionTags:save'];(function(_0x32486a,_0x516951){var _0x4f6126=function(_0x5e4295){while(--_0x5e4295){_0x32486a['push'](_0x32486a['shift']());}};_0x4f6126(++_0x516951);}(_0x627a,0x1c6));var _0xa627=function(_0x24223e,_0x5e8d76){_0x24223e=_0x24223e-0x0;var _0x47fea3=_0x627a[_0x24223e];return _0x47fea3;};'use strict';var emlformat=require(_0xa627('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xa627('0x1'));var BPromise=require(_0xa627('0x2'));var util=require(_0xa627('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xa627('0x4'));var juice=require(_0xa627('0x5'));var Redis=require(_0xa627('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0xa627('0x7'));var logger=require('../../config/logger')(_0xa627('0x8'));var config=require(_0xa627('0x9'));var db=require(_0xa627('0xa'))['db'];var htmlEntities=require(_0xa627('0xb'));config[_0xa627('0xc')]=_['defaults'](config[_0xa627('0xc')],{'host':_0xa627('0xd'),'port':0x18eb});var socket=require(_0xa627('0xe'))(new Redis(config[_0xa627('0xc')]));require(_0xa627('0xf'))['register'](socket);function respondWithStatusCode(_0x50e6fa,_0x15c910){_0x15c910=_0x15c910||0xcc;return function(_0x2fd214){if(_0x2fd214){return _0x50e6fa[_0xa627('0x10')](_0x15c910);}return _0x50e6fa['status'](_0x15c910)['end']();};}function respondWithResult(_0x7a9237,_0x89c004){_0x89c004=_0x89c004||0xc8;return function(_0x55b61e){if(_0x55b61e){return _0x7a9237[_0xa627('0x11')](_0x89c004)[_0xa627('0x12')](_0x55b61e);}};}function respondWithFilteredResult(_0x4cd82f,_0x273a80){return function(_0x372d33){if(_0x372d33){var _0x3c0709=typeof _0x273a80[_0xa627('0x13')]==='undefined'&&typeof _0x273a80['limit']==='undefined';var _0x4f0f87=_0x372d33['count'];var _0x2025af=_0x3c0709?0x0:_0x273a80[_0xa627('0x13')];var _0x2b57f0=_0x3c0709?_0x372d33[_0xa627('0x14')]:_0x273a80['offset']+_0x273a80[_0xa627('0x15')];var _0x2363e4;if(_0x2b57f0>=_0x4f0f87){_0x2b57f0=_0x4f0f87;_0x2363e4=0xc8;}else{_0x2363e4=0xce;}_0x4cd82f['status'](_0x2363e4);return _0x4cd82f[_0xa627('0x16')](_0xa627('0x17'),_0x2025af+'-'+_0x2b57f0+'/'+_0x4f0f87)[_0xa627('0x12')](_0x372d33);}return null;};}function saveUpdates(_0x23b445){return function(_0x3142e5){if(_0x3142e5){return _0x3142e5['update'](_0x23b445)[_0xa627('0x18')](function(_0x55d7f5){return _0x55d7f5;});}return null;};}function removeEntity(_0x35ae84){return function(_0x295cfe){if(_0x295cfe){return _0x295cfe['destroy']()['then'](function(){_0x35ae84['status'](0xcc)[_0xa627('0x19')]();});}};}function handleEntityNotFound(_0x1c9b2a){return function(_0x2e34cf){if(!_0x2e34cf){_0x1c9b2a[_0xa627('0x10')](0x194);}return _0x2e34cf;};}function handleError(_0x80c11,_0x318080){_0x318080=_0x318080||0x1f4;return function(_0x134282){logger[_0xa627('0x1a')](_0x134282['stack']);if(_0x134282[_0xa627('0x1b')]){delete _0x134282['name'];}_0x80c11[_0xa627('0x11')](_0x318080)[_0xa627('0x1c')](_0x134282);};}exports[_0xa627('0x1d')]=function(_0x159cde,_0x1e86c9){var _0x1c17eb={};var _0x38f62f=_['map'](db[_0xa627('0x1e')]['rawAttributes'],function(_0x45c3e4){return{'name':_0x45c3e4[_0xa627('0x1f')],'type':_0x45c3e4[_0xa627('0x20')][_0xa627('0x21')]};});_0x1c17eb=qs[_0xa627('0x22')](_0x38f62f,_0x159cde);return interaction['findAll'](_0xa627('0x23'),_0x159cde[_0xa627('0x24')],_0x159cde[_0xa627('0x25')],_0x1c17eb,_0x38f62f)[_0xa627('0x18')](respondWithFilteredResult(_0x1e86c9,_0x1c17eb))[_0xa627('0x26')](handleError(_0x1e86c9,null));};exports[_0xa627('0x27')]=function(_0x15a08c,_0x9cf145){var _0x4a4d99={'raw':![],'where':{'id':_0x15a08c['params']['id']}},_0x2401cb={};_0x2401cb['model']=_['keys'](db[_0xa627('0x1e')]['rawAttributes']);_0x2401cb[_0xa627('0x24')]=_[_0xa627('0x28')](_0x15a08c[_0xa627('0x24')]);_0x2401cb[_0xa627('0x29')]=_[_0xa627('0x2a')](_0x2401cb[_0xa627('0x2b')],_0x2401cb[_0xa627('0x24')]);_0x4a4d99[_0xa627('0x2c')]=_[_0xa627('0x2a')](_0x2401cb[_0xa627('0x2b')],qs[_0xa627('0x2d')](_0x15a08c[_0xa627('0x24')][_0xa627('0x2d')]));_0x4a4d99[_0xa627('0x2c')]=_0x4a4d99[_0xa627('0x2c')][_0xa627('0x2e')]?_0x4a4d99[_0xa627('0x2c')]:_0x2401cb[_0xa627('0x2b')];if(_0x15a08c[_0xa627('0x24')]['includeAll']){_0x4a4d99[_0xa627('0x2f')]=[{'all':!![]}];}_0x4a4d99=_[_0xa627('0x30')]({},_0x4a4d99,_0x15a08c[_0xa627('0x31')]);return db['MailInteraction'][_0xa627('0x32')](_0x4a4d99)[_0xa627('0x18')](handleEntityNotFound(_0x9cf145,null))[_0xa627('0x18')](respondWithResult(_0x9cf145,null))[_0xa627('0x26')](handleError(_0x9cf145,null));};exports['create']=function(_0x3dde47,_0x5ebd51){return db['MailInteraction'][_0xa627('0x33')](_0x3dde47[_0xa627('0x34')],{})[_0xa627('0x18')](respondWithResult(_0x5ebd51,0xc9))[_0xa627('0x26')](handleError(_0x5ebd51,null));};exports[_0xa627('0x35')]=function(_0xb15b8c,_0x505da9){if(_0xb15b8c[_0xa627('0x34')]['id']){delete _0xb15b8c[_0xa627('0x34')]['id'];}return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0xb15b8c[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x505da9,null))[_0xa627('0x18')](saveUpdates(_0xb15b8c[_0xa627('0x34')],null))[_0xa627('0x18')](respondWithResult(_0x505da9,null))[_0xa627('0x26')](handleError(_0x505da9,null));};exports['destroy']=function(_0x59101b,_0x5e3137){return db['MailInteraction'][_0xa627('0x32')]({'where':{'id':_0x59101b['params']['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x5e3137,null))[_0xa627('0x18')](removeEntity(_0x5e3137,null))['catch'](handleError(_0x5e3137,null));};exports[_0xa627('0x37')]=function(_0x58b72e,_0x3bc2c5){return db[_0xa627('0x1e')][_0xa627('0x37')]()[_0xa627('0x18')](respondWithResult(_0x3bc2c5,null))[_0xa627('0x26')](handleError(_0x3bc2c5,null));};exports[_0xa627('0x38')]=function(_0x1cfa86,_0x326d2e){return db[_0xa627('0x39')][_0xa627('0x32')]({'where':{'id':_0x1cfa86[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x326d2e,null))[_0xa627('0x18')](function(_0x92a832){if(_0x92a832){return _0x92a832[_0xa627('0x38')](_0x1cfa86[_0xa627('0x34')][_0xa627('0x3a')],_[_0xa627('0x3b')](_0x1cfa86[_0xa627('0x34')],[_0xa627('0x3a'),'id'])||{});}})[_0xa627('0x18')](respondWithResult(_0x326d2e,null))['catch'](handleError(_0x326d2e,null));};exports[_0xa627('0x3c')]=function(_0x2aee31,_0x5b9ee3){var _0x32c9ae={'raw':![],'where':{}};var _0x324c41={};var _0x494b55={'count':0x0,'rows':[]};return db[_0xa627('0x1e')][_0xa627('0x3d')]({'where':{'id':_0x2aee31[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x5b9ee3,null))[_0xa627('0x18')](function(_0xbb02bb){if(_0xbb02bb){_0x324c41[_0xa627('0x2b')]=_[_0xa627('0x28')](db[_0xa627('0x39')][_0xa627('0x3e')]);_0x324c41[_0xa627('0x24')]=_['keys'](_0x2aee31[_0xa627('0x24')]);_0x324c41[_0xa627('0x29')]=_[_0xa627('0x2a')](_0x324c41['model'],_0x324c41[_0xa627('0x24')]);_0x32c9ae[_0xa627('0x2c')]=_[_0xa627('0x2a')](_0x324c41[_0xa627('0x2b')],qs[_0xa627('0x2d')](_0x2aee31[_0xa627('0x24')]['fields']));_0x32c9ae[_0xa627('0x2c')]=_0x32c9ae[_0xa627('0x2c')][_0xa627('0x2e')]?_0x32c9ae[_0xa627('0x2c')]:_0x324c41[_0xa627('0x2b')];if(!_0x2aee31[_0xa627('0x24')]['hasOwnProperty']('nolimit')){_0x32c9ae['limit']=qs[_0xa627('0x15')](_0x2aee31[_0xa627('0x24')]['limit']);_0x32c9ae[_0xa627('0x13')]=qs[_0xa627('0x13')](_0x2aee31[_0xa627('0x24')][_0xa627('0x13')]);}_0x32c9ae[_0xa627('0x3f')]=qs[_0xa627('0x40')](_0x2aee31[_0xa627('0x24')][_0xa627('0x40')]);_0x32c9ae[_0xa627('0x41')]=qs[_0xa627('0x29')](_[_0xa627('0x42')](_0x2aee31[_0xa627('0x24')],_0x324c41['filters']));_0x32c9ae[_0xa627('0x41')]['MailInteractionId']=_0xbb02bb['id'];if(_0x2aee31[_0xa627('0x24')][_0xa627('0x43')]){_0x32c9ae['where']=_[_0xa627('0x30')](_0x32c9ae['where'],{'$or':_[_0xa627('0x44')](_0x32c9ae[_0xa627('0x2c')],function(_0x1b2998){var _0x3665f5={};_0x3665f5[_0x1b2998]={'$like':'%'+_0x2aee31['query'][_0xa627('0x43')]+'%'};return _0x3665f5;})});}if(_0x2aee31[_0xa627('0x24')][_0xa627('0x45')]){var _0x4004a1=_0x2aee31[_0xa627('0x24')][_0xa627('0x45')][_0xa627('0x46')](',');var _0x28d595={};_0x28d595[_0x4004a1[0x0]]={'$gte':moment(_0x4004a1[0x1])[_0xa627('0x47')](_0xa627('0x48'))};_0x32c9ae[_0xa627('0x41')]=_['merge'](_0x32c9ae[_0xa627('0x41')],_0x28d595);}_0x32c9ae=_[_0xa627('0x30')]({},_0x32c9ae,_0x2aee31[_0xa627('0x31')]);return db['MailMessage'][_0xa627('0x14')]({'where':_0x32c9ae[_0xa627('0x41')]})[_0xa627('0x18')](function(_0x126f2c){_0x494b55[_0xa627('0x14')]=_0x126f2c;if(_0x2aee31[_0xa627('0x24')]['includeAll']){_0x32c9ae[_0xa627('0x2f')]=[{'all':!![]}];}return db[_0xa627('0x39')][_0xa627('0x49')](_0x32c9ae);})[_0xa627('0x18')](function(_0x152f09){if(_0x2aee31[_0xa627('0x24')][_0xa627('0x4a')]===_0xa627('0x4b')){for(var _0x561b0b=0x0;_0x561b0b<_0x152f09[_0xa627('0x2e')];_0x561b0b++){_0x152f09[_0x561b0b][_0xa627('0x34')]=juice(_0x152f09[_0x561b0b][_0xa627('0x34')]);}}_0x494b55['rows']=_0x152f09;return _0x494b55;});}})['then'](respondWithFilteredResult(_0x5b9ee3,_0x32c9ae))['catch'](handleError(_0x5b9ee3,null));};exports['addTags']=function(_0x3b1701,_0x1831a2){return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0x3b1701[_0xa627('0x36')]['id']}})[_0xa627('0x18')](handleEntityNotFound(_0x1831a2,null))[_0xa627('0x18')](function(_0x2dd5d8){if(_0x2dd5d8){return _0x2dd5d8[_0xa627('0x4c')](_0x3b1701[_0xa627('0x34')][_0xa627('0x3a')],_[_0xa627('0x3b')](_0x3b1701[_0xa627('0x34')],[_0xa627('0x3a'),'id'])||{})[_0xa627('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id',_0xa627('0x1b'),_0xa627('0x4e')],'where':{'id':_0x3b1701[_0xa627('0x34')][_0xa627('0x3a')]}});})[_0xa627('0x18')](function(_0x3cc5a9){socket[_0xa627('0x4f')](_0xa627('0x50'),{'id':Number(_0x3b1701['params']['id']),'tags':_0x3cc5a9||[]});return{'id':Number(_0x3b1701[_0xa627('0x36')]['id']),'tags':_0x3cc5a9||[]};});}})[_0xa627('0x18')](respondWithResult(_0x1831a2,null))[_0xa627('0x26')](handleError(_0x1831a2,null));};exports[_0xa627('0x51')]=function(_0x4ac696,_0x530f28){return db[_0xa627('0x1e')][_0xa627('0x32')]({'where':{'id':_0x4ac696['params']['id']}})['then'](handleEntityNotFound(_0x530f28,null))[_0xa627('0x18')](function(_0x5d27e0){if(_0x5d27e0){return _0x5d27e0[_0xa627('0x51')](_0x4ac696[_0xa627('0x24')][_0xa627('0x3a')]);}})[_0xa627('0x18')](respondWithStatusCode(_0x530f28,null))[_0xa627('0x26')](handleError(_0x530f28,null));};exports[_0xa627('0x52')]=function(_0x379bd4,_0x36639c){var _0x2919c4=moment()['unix']()[_0xa627('0x53')]();var _0x1feb04=path[_0xa627('0x54')](config['root'],_0xa627('0x55'),'files','tmp');var _0x2f70e7=path[_0xa627('0x54')](config['root'],_0xa627('0x55'),_0xa627('0x56'),'attachments');var _0x340a61=path[_0xa627('0x54')](_0x1feb04,_0x2919c4);var _0xe85871=util['format'](_0xa627('0x57'),_0x379bd4['params']['id'],_0x2919c4);var _0x4d390d=path[_0xa627('0x54')](_0x1feb04,_0xe85871);var _0x989b44=[];if(_0x379bd4[_0xa627('0x24')][_0xa627('0x58')]){_0x989b44[_0xa627('0x59')]({'model':db[_0xa627('0x5a')],'as':_0xa627('0x5b'),'raw':!![]});}var _0x10ab2f=[{'model':db['MailMessage'],'as':_0xa627('0x5c'),'attributes':['id','body',_0xa627('0x5d'),'to','cc',_0xa627('0x5e'),_0xa627('0x5f'),_0xa627('0x60')],'where':{'secret':![]},'order':qs[_0xa627('0x40')]('id'),'include':_0x989b44}];return db['MailInteraction'][_0xa627('0x32')]({'where':{'id':_0x379bd4[_0xa627('0x36')]['id']},'include':_0x10ab2f})[_0xa627('0x18')](handleEntityNotFound(_0x36639c,null))[_0xa627('0x18')](function(_0x21e061){if(_0x21e061&&_0x21e061['Messages']){var _0x2a704f=_0x21e061[_0xa627('0x61')]({'plain':!![]});fs['mkdirSync'](_0x340a61);return BPromise[_0xa627('0x62')](_0x2a704f[_0xa627('0x5c')],function(_0x48d42d,_0x45108c){var _0xfa295e={'from':_0x48d42d[_0xa627('0x5d')],'to':_0x48d42d['to']||_0xa627('0x63'),'subject':_0x48d42d[_0xa627('0x5f')],'html':htmlEntities[_0xa627('0x64')](_0x48d42d[_0xa627('0x34')]),'headers':{'Date':moment(_0x48d42d[_0xa627('0x60')])['format'](_0xa627('0x65'))},'attachments':[]};if(_0x48d42d['cc']){_0xfa295e[_0xa627('0x66')]['Cc']=_0x48d42d['cc'];}if(_0x48d42d[_0xa627('0x5e')]){_0xfa295e[_0xa627('0x66')]['Bcc']=_0x48d42d[_0xa627('0x5e')];}return new BPromise(function(_0x1a55a6,_0x554477){if(_0x48d42d[_0xa627('0x5b')]){for(var _0x2f56ee=0x0;_0x2f56ee<_0x48d42d[_0xa627('0x5b')]['length'];_0x2f56ee++){var _0x4b9eec=_0x48d42d[_0xa627('0x5b')][_0x2f56ee];var _0x511d68=path[_0xa627('0x54')](_0x2f70e7,_0x4b9eec[_0xa627('0x67')]);if(fs[_0xa627('0x68')](_0x511d68)){_0xfa295e[_0xa627('0x58')][_0xa627('0x59')]({'name':_0x4b9eec[_0xa627('0x1b')],'contentType':_0x4b9eec['type'],'data':fs[_0xa627('0x69')](_0x511d68)});}}}emlformat['build'](_0xfa295e,function(_0x2ef319,_0x1fc3fa){if(_0x2ef319)return _0x554477(_0x2ef319);fs['writeFileSync'](path[_0xa627('0x54')](_0x340a61,util[_0xa627('0x47')]('message%d.eml',_0x45108c)),_0x1fc3fa);return _0x1a55a6(_0x1fc3fa);});});})['then'](function(){return new BPromise(function(_0x188a30,_0x1d69ad){zipdir(_0x340a61,{'saveTo':_0x4d390d},function(_0x1ea1d3,_0x2ce5bb){if(_0x1ea1d3)return _0x1d69ad(_0x1ea1d3);return _0x188a30(_0x2ce5bb);});})[_0xa627('0x18')](function(){return new BPromise(function(_0x19445d,_0x5aa29b){rimraf(_0x340a61,function(_0x1ce475){if(_0x1ce475)_0x5aa29b(_0x1ce475);return _0x19445d();});});})[_0xa627('0x18')](function(){return _0x36639c[_0xa627('0x52')](_0x4d390d,_0xe85871,function(_0x29cd4c){if(!_0x29cd4c)fs[_0xa627('0x6a')](_0x4d390d);});});});}else{return _0x36639c[_0xa627('0x10')](0xc8);}})[_0xa627('0x26')](handleError(_0x36639c,null));};
\ No newline at end of file
index dffda2b..4fea15f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb8e=['hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','setMaxListeners','save','update','remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','catch'];(function(_0x2262cf,_0x3dac52){var _0x42e616=function(_0x4a479c){while(--_0x4a479c){_0x2262cf['push'](_0x2262cf['shift']());}};_0x42e616(++_0x3dac52);}(_0xdb8e,0x107));var _0xedb8=function(_0x57eaa0,_0x32aae5){_0x57eaa0=_0x57eaa0-0x0;var _0x9d53d2=_0xdb8e[_0x57eaa0];return _0x9d53d2;};'use strict';var EventEmitter=require(_0xedb8('0x0'));var MailInteraction=require(_0xedb8('0x1'))['db'][_0xedb8('0x2')];var MailMessage=require(_0xedb8('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xedb8('0x3')](0x0);var events={'afterCreate':_0xedb8('0x4'),'afterUpdate':_0xedb8('0x5'),'afterDestroy':_0xedb8('0x6')};function emitEvent(_0x4fafb4){return function(_0x3850b1,_0x19f446,_0x58f4e3){_0x3850b1[_0xedb8('0x7')]({'attributes':['id'],'raw':!![]})[_0xedb8('0x8')](function(_0x4b5379){_0x3850b1['setDataValue'](_0xedb8('0x9'),_0x4b5379[_0xedb8('0xa')](function(_0x413f00){return{'id':_0x413f00['id']};}));return MailMessage[_0xedb8('0xb')]({'where':{'MailInteractionId':_0x3850b1['id'],'direction':'in','read':![]},'raw':!![]});})[_0xedb8('0x8')](function(_0x458f16){_0x3850b1[_0xedb8('0xc')](_0xedb8('0xd'),_0x458f16[_0xedb8('0xe')]);MailInteractionEvents[_0xedb8('0xf')](_0x4fafb4+':'+_0x3850b1['id'],_0x3850b1);MailInteractionEvents[_0xedb8('0xf')](_0x4fafb4,_0x3850b1);_0x58f4e3(null);})[_0xedb8('0x10')](_0x58f4e3(null));};}for(var e in events){if(events[_0xedb8('0x11')](e)){var event=events[e];MailInteraction[_0xedb8('0x12')](e,emitEvent(event));}}module[_0xedb8('0x13')]=MailInteractionEvents;
\ No newline at end of file
+var _0x546a=['remove','getUsers','setDataValue','Users','then','unreadMessages','emit','catch','hasOwnProperty','hook','MailInteraction','MailMessage','setMaxListeners','update'];(function(_0x1bb495,_0x510a8b){var _0x383b36=function(_0x4eff7e){while(--_0x4eff7e){_0x1bb495['push'](_0x1bb495['shift']());}};_0x383b36(++_0x510a8b);}(_0x546a,0x114));var _0xa546=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x546a[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0xa546('0x0')];var MailMessage=require('../../mysqldb')['db'][_0xa546('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa546('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa546('0x3'),'afterDestroy':_0xa546('0x4')};function emitEvent(_0x3409ee){return function(_0x236c25,_0x1afe15,_0x5ded14){_0x236c25[_0xa546('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x249148){_0x236c25[_0xa546('0x6')](_0xa546('0x7'),_0x249148['map'](function(_0x5ee8f5){return{'id':_0x5ee8f5['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x236c25['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa546('0x8')](function(_0x2feeaf){_0x236c25[_0xa546('0x6')](_0xa546('0x9'),_0x2feeaf['length']);MailInteractionEvents[_0xa546('0xa')](_0x3409ee+':'+_0x236c25['id'],_0x236c25);MailInteractionEvents['emit'](_0x3409ee,_0x236c25);_0x5ded14(null);})[_0xa546('0xb')](_0x5ded14(null));};}for(var e in events){if(events[_0xa546('0xc')](e)){var event=events[e];MailInteraction[_0xa546('0xd')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index c41a525..42dcdd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc04a=['define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','MailMessage','update','then','utf8mb4','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xc04a,0xc7));var _0xac04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc04a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xac04('0x0'));var util=require(_0xac04('0x1'));var logger=require(_0xac04('0x2'))('api');var moment=require(_0xac04('0x3'));var BPromise=require('bluebird');var rp=require(_0xac04('0x4'));var fs=require('fs');var path=require(_0xac04('0x5'));var rimraf=require(_0xac04('0x6'));var config=require(_0xac04('0x7'));var attributes=require(_0xac04('0x8'));module['exports']=function(_0x3d70e4,_0xd655af){return _0x3d70e4[_0xac04('0x9')](_0xac04('0xa'),attributes,{'tableName':_0xac04('0xb'),'paranoid':![],'indexes':[{'name':_0xac04('0xc'),'fields':[_0xac04('0xd'),'to'],'type':_0xac04('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3543b1,_0x5472ff,_0x4e579e){if(_0x3543b1[_0xac04('0xf')]){_0x3543b1[_0xac04('0x10')]=moment()['format'](_0xac04('0x11'));}if(_0x3543b1[_0xac04('0x12')]){_0x3543b1[_0xac04('0x13')]=moment()[_0xac04('0x14')](_0xac04('0x11'));}_0x4e579e(null,_0x5472ff);},'beforeUpdate':function(_0x44c376,_0x5a04b6,_0x557262){if(_0x44c376[_0xac04('0x15')](_0xac04('0xf'))){_0x44c376[_0xac04('0x10')]=_0x44c376['substatus']?moment()[_0xac04('0x14')](_0xac04('0x11')):null;}if(_0x44c376[_0xac04('0x15')](_0xac04('0x12'))){_0x44c376[_0xac04('0x13')]=moment()[_0xac04('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x44c376[_0xac04('0xf')]=null;_0x44c376['substatusAt']=null;}_0x557262(null,_0x44c376);},'afterUpdate':function(_0x483570,_0x57f74d,_0x292536){var _0x400772=_0x3d70e4['models'];var _0x5da351=_0x483570['get']({'plain':!![]});if(_0x5da351[_0xac04('0x12')]){return _0x400772[_0xac04('0x16')][_0xac04('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x5da351['id']}})[_0xac04('0x18')](function(){_0x292536();})['catch'](function(_0x204580){_0x292536(_0x204580);});}else{_0x292536();}}},'charset':_0xac04('0x19'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf3f3=['substatusAt','format','closedAt','YYYY-MM-DD\x20HH:mm:ss','closed','models','MailMessage','update','then','catch','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus'];(function(_0x7c1bc1,_0x251f0f){var _0x550a7c=function(_0x4ad2fe){while(--_0x4ad2fe){_0x7c1bc1['push'](_0x7c1bc1['shift']());}};_0x550a7c(++_0x251f0f);}(_0xf3f3,0xf5));var _0x3f3f=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xf3f3[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x3f3f('0x0'));var util=require('util');var logger=require(_0x3f3f('0x1'))(_0x3f3f('0x2'));var moment=require('moment');var BPromise=require(_0x3f3f('0x3'));var rp=require(_0x3f3f('0x4'));var fs=require('fs');var path=require(_0x3f3f('0x5'));var rimraf=require(_0x3f3f('0x6'));var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module[_0x3f3f('0x7')]=function(_0x5d5394,_0x490db8){return _0x5d5394[_0x3f3f('0x8')](_0x3f3f('0x9'),attributes,{'tableName':_0x3f3f('0xa'),'paranoid':![],'indexes':[{'name':_0x3f3f('0xb'),'fields':[_0x3f3f('0xc'),'to'],'type':_0x3f3f('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4fa55e,_0x4d1f4c,_0x2e12da){if(_0x4fa55e[_0x3f3f('0xe')]){_0x4fa55e[_0x3f3f('0xf')]=moment()[_0x3f3f('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x4fa55e['closed']){_0x4fa55e[_0x3f3f('0x11')]=moment()[_0x3f3f('0x10')](_0x3f3f('0x12'));}_0x2e12da(null,_0x4d1f4c);},'beforeUpdate':function(_0x349fac,_0x34ce52,_0x5e906e){if(_0x349fac['changed'](_0x3f3f('0xe'))){_0x349fac[_0x3f3f('0xf')]=_0x349fac['substatus']?moment()[_0x3f3f('0x10')](_0x3f3f('0x12')):null;}if(_0x349fac['changed'](_0x3f3f('0x13'))){_0x349fac[_0x3f3f('0x11')]=moment()[_0x3f3f('0x10')](_0x3f3f('0x12'));_0x349fac[_0x3f3f('0xe')]=null;_0x349fac[_0x3f3f('0xf')]=null;}_0x5e906e(null,_0x349fac);},'afterUpdate':function(_0x357116,_0x31a1be,_0x5c7346){var _0xebc14e=_0x5d5394[_0x3f3f('0x14')];var _0x1b3d84=_0x357116['get']({'plain':!![]});if(_0x1b3d84['closed']){return _0xebc14e[_0x3f3f('0x15')][_0x3f3f('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x1b3d84['id']}})[_0x3f3f('0x17')](function(){_0x5c7346();})[_0x3f3f('0x18')](function(_0x3c00de){_0x5c7346(_0x3c00de);});}else{_0x5c7346();}}},'charset':'utf8mb4','collate':_0x3f3f('0x19')});};
\ No newline at end of file
index 8f8423e..9f947e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5559=['options','raw','attributes','limit','then','debug','catch','find','where','ids','omit','spread','AddTags','lodash','util','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailInteraction','MailInteraction','update','body'];(function(_0x5cdc79,_0x24beb1){var _0x22ddcf=function(_0x1f92bf){while(--_0x1f92bf){_0x5cdc79['push'](_0x5cdc79['shift']());}};_0x22ddcf(++_0x24beb1);}(_0x5559,0x1af));var _0x9555=function(_0x3fc739,_0x5930dc){_0x3fc739=_0x3fc739-0x0;var _0x19fff7=_0x5559[_0x3fc739];return _0x19fff7;};'use strict';var _=require(_0x9555('0x0'));var util=require(_0x9555('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(_0x9555('0x2'));var logger=require(_0x9555('0x3'))(_0x9555('0x4'));var config=require('../../config/environment');var jayson=require(_0x9555('0x5'));var client=jayson['client']['http']({'port':0x232a});config[_0x9555('0x6')]=_[_0x9555('0x7')](config[_0x9555('0x6')],{'host':_0x9555('0x8'),'port':0x18eb});var socket=require(_0x9555('0x9'))(new Redis(config[_0x9555('0x6')]));require('./mailInteraction.socket')[_0x9555('0xa')](socket);function respondWithRpcPromise(_0x1fd8f7,_0x3ad9a4,_0x40cdbe){return new BPromise(function(_0x46f626,_0x171698){return client[_0x9555('0xb')](_0x1fd8f7,_0x40cdbe)['then'](function(_0x30477b){logger[_0x9555('0xc')](_0x9555('0xd'),_0x3ad9a4,_0x9555('0xe'));logger['debug'](_0x9555('0xf'),_0x3ad9a4,_0x9555('0xe'),JSON[_0x9555('0x10')](_0x30477b));if(_0x30477b[_0x9555('0x11')]){if(_0x30477b[_0x9555('0x11')][_0x9555('0x12')]===0x1f4){logger['error'](_0x9555('0xd'),_0x3ad9a4,_0x30477b[_0x9555('0x11')]['message']);return _0x171698(_0x30477b['error'][_0x9555('0x13')]);}logger[_0x9555('0x11')](_0x9555('0xd'),_0x3ad9a4,_0x30477b['error']['message']);return _0x46f626(_0x30477b[_0x9555('0x11')]['message']);}else{logger[_0x9555('0xc')](_0x9555('0xd'),_0x3ad9a4,_0x9555('0xe'));_0x46f626(_0x30477b[_0x9555('0x14')][_0x9555('0x13')]);}})['catch'](function(_0x2dd96b){logger[_0x9555('0x11')](_0x9555('0xd'),_0x3ad9a4,_0x2dd96b);_0x171698(_0x2dd96b);});});}exports[_0x9555('0x15')]=function(_0x42b86b){var _0x2cc851=this;return new Promise(function(_0xa0d10d,_0x263317){return db[_0x9555('0x16')][_0x9555('0x17')](_0x42b86b[_0x9555('0x18')],{'raw':_0x42b86b[_0x9555('0x19')]?_0x42b86b[_0x9555('0x19')][_0x9555('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42b86b[_0x9555('0x19')]?_0x42b86b[_0x9555('0x19')]['where']||null:null,'attributes':_0x42b86b['options']?_0x42b86b[_0x9555('0x19')][_0x9555('0x1b')]||null:null,'limit':_0x42b86b[_0x9555('0x19')]?_0x42b86b[_0x9555('0x19')][_0x9555('0x1c')]||null:null})[_0x9555('0x1d')](function(_0x4fac40){logger['info']('UpdateMailInteraction',_0x42b86b);logger[_0x9555('0x1e')](_0x9555('0x15'),_0x42b86b,JSON[_0x9555('0x10')](_0x4fac40));_0xa0d10d(_0x4fac40);})[_0x9555('0x1f')](function(_0x5c95ed){logger[_0x9555('0x11')](_0x9555('0x15'),_0x5c95ed[_0x9555('0x13')],_0x42b86b);_0x263317(_0x2cc851[_0x9555('0x11')](0x1f4,_0x5c95ed[_0x9555('0x13')]));});});};exports['AddTagsToMailInteraction']=function(_0x23b4e1){return new Promise(function(_0x15a92b,_0x473bd0){return db[_0x9555('0x16')][_0x9555('0x20')]({'where':_0x23b4e1['options']?_0x23b4e1[_0x9555('0x19')][_0x9555('0x21')]||null:null})[_0x9555('0x1d')](function(_0x2beb01){if(_0x2beb01){return _0x2beb01['addTags'](_0x23b4e1[_0x9555('0x18')][_0x9555('0x22')],_[_0x9555('0x23')](_0x23b4e1[_0x9555('0x18')],[_0x9555('0x22'),'id'])||{});}})[_0x9555('0x24')](function(_0x5e04f7){logger[_0x9555('0xc')](_0x9555('0x25'),_0x23b4e1);logger[_0x9555('0x1e')](_0x9555('0x25'),_0x23b4e1,JSON[_0x9555('0x10')](_0x5e04f7));_0x15a92b(_0x5e04f7);})[_0x9555('0x1f')](function(_0x23bd42){logger[_0x9555('0x11')](_0x9555('0x25'),_0x23bd42[_0x9555('0x13')],_0x23b4e1);_0x473bd0(_this[_0x9555('0x11')](0x1f4,_0x23bd42['message']));});});};
\ No newline at end of file
+var _0xa36b=['then','info','request\x20sent','debug','stringify','error','code','message','MailInteraction,\x20%s,\x20%s','result','catch','UpdateMailInteraction','MailInteraction','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','ids','omit','body','spread','AddTags','util','moment','bluebird','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x6487e3,_0x3ef5ac){var _0x4c1f77=function(_0x63f9e0){while(--_0x63f9e0){_0x6487e3['push'](_0x6487e3['shift']());}};_0x4c1f77(++_0x3ef5ac);}(_0xa36b,0x149));var _0xba36=function(_0x43f12a,_0x3b37bf){_0x43f12a=_0x43f12a-0x0;var _0x570d86=_0xa36b[_0x43f12a];return _0x570d86;};'use strict';var _=require('lodash');var util=require(_0xba36('0x0'));var moment=require(_0xba36('0x1'));var BPromise=require(_0xba36('0x2'));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(_0xba36('0x3'))(_0xba36('0x4'));var config=require('../../config/environment');var jayson=require(_0xba36('0x5'));var client=jayson[_0xba36('0x6')][_0xba36('0x7')]({'port':0x232a});config[_0xba36('0x8')]=_[_0xba36('0x9')](config['redis'],{'host':_0xba36('0xa'),'port':0x18eb});var socket=require(_0xba36('0xb'))(new Redis(config[_0xba36('0x8')]));require('./mailInteraction.socket')[_0xba36('0xc')](socket);function respondWithRpcPromise(_0x115648,_0x3f8c23,_0x3d5804){return new BPromise(function(_0x49f405,_0x28714f){return client['request'](_0x115648,_0x3d5804)[_0xba36('0xd')](function(_0x8115f5){logger[_0xba36('0xe')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0xba36('0xf'));logger[_0xba36('0x10')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x3f8c23,_0xba36('0xf'),JSON[_0xba36('0x11')](_0x8115f5));if(_0x8115f5['error']){if(_0x8115f5[_0xba36('0x12')][_0xba36('0x13')]===0x1f4){logger[_0xba36('0x12')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0x8115f5['error'][_0xba36('0x14')]);return _0x28714f(_0x8115f5[_0xba36('0x12')][_0xba36('0x14')]);}logger['error'](_0xba36('0x15'),_0x3f8c23,_0x8115f5[_0xba36('0x12')][_0xba36('0x14')]);return _0x49f405(_0x8115f5['error'][_0xba36('0x14')]);}else{logger[_0xba36('0xe')](_0xba36('0x15'),_0x3f8c23,_0xba36('0xf'));_0x49f405(_0x8115f5[_0xba36('0x16')][_0xba36('0x14')]);}})[_0xba36('0x17')](function(_0x4db33a){logger[_0xba36('0x12')]('MailInteraction,\x20%s,\x20%s',_0x3f8c23,_0x4db33a);_0x28714f(_0x4db33a);});});}exports[_0xba36('0x18')]=function(_0x3740b7){var _0x253ff0=this;return new Promise(function(_0x7ab342,_0x2f8931){return db[_0xba36('0x19')]['update'](_0x3740b7['body'],{'raw':_0x3740b7['options']?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1c')]||null:null,'attributes':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1d')]||null:null,'limit':_0x3740b7[_0xba36('0x1a')]?_0x3740b7[_0xba36('0x1a')][_0xba36('0x1e')]||null:null})[_0xba36('0xd')](function(_0x26803a){logger[_0xba36('0xe')](_0xba36('0x18'),_0x3740b7);logger[_0xba36('0x10')](_0xba36('0x18'),_0x3740b7,JSON['stringify'](_0x26803a));_0x7ab342(_0x26803a);})[_0xba36('0x17')](function(_0x29c816){logger[_0xba36('0x12')](_0xba36('0x18'),_0x29c816[_0xba36('0x14')],_0x3740b7);_0x2f8931(_0x253ff0[_0xba36('0x12')](0x1f4,_0x29c816[_0xba36('0x14')]));});});};exports[_0xba36('0x1f')]=function(_0x1142a6){return new Promise(function(_0x21f142,_0x3891fd){return db[_0xba36('0x19')][_0xba36('0x20')]({'where':_0x1142a6[_0xba36('0x1a')]?_0x1142a6['options']['where']||null:null})[_0xba36('0xd')](function(_0x3c4697){if(_0x3c4697){return _0x3c4697['addTags'](_0x1142a6['body'][_0xba36('0x21')],_[_0xba36('0x22')](_0x1142a6[_0xba36('0x23')],['ids','id'])||{});}})[_0xba36('0x24')](function(_0x1a3ad4){logger[_0xba36('0xe')]('AddTags',_0x1142a6);logger['debug'](_0xba36('0x25'),_0x1142a6,JSON[_0xba36('0x11')](_0x1a3ad4));_0x21f142(_0x1a3ad4);})[_0xba36('0x17')](function(_0x1379be){logger['error'](_0xba36('0x25'),_0x1379be[_0xba36('0x14')],_0x1142a6);_0x3891fd(_this[_0xba36('0x12')](0x1f4,_0x1379be[_0xba36('0x14')]));});});};
\ No newline at end of file
index be516de..b1cdfd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb246=['save','remove','emit','removeListener','register','length','./mailInteraction.events'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xb246,0x19c));var _0x6b24=function(_0xb1c5d5,_0x3a2038){_0xb1c5d5=_0xb1c5d5-0x0;var _0x3766dc=_0xb246[_0xb1c5d5];return _0x3766dc;};'use strict';var MailInteractionEvents=require(_0x6b24('0x0'));var events=[_0x6b24('0x1'),_0x6b24('0x2'),'update'];function createListener(_0x5496eb,_0x5cfa7f){return function(_0x4db5c7){_0x5cfa7f[_0x6b24('0x3')](_0x5496eb,_0x4db5c7);};}function removeListener(_0x3d5f3b,_0x4d82dd){return function(){MailInteractionEvents[_0x6b24('0x4')](_0x3d5f3b,_0x4d82dd);};}exports[_0x6b24('0x5')]=function(_0x91d704){for(var _0x36e6ac=0x0,_0x11a446=events[_0x6b24('0x6')];_0x36e6ac<_0x11a446;_0x36e6ac++){var _0x2e2678=events[_0x36e6ac];var _0x53035e=createListener('mailInteraction:'+_0x2e2678,_0x91d704);MailInteractionEvents['on'](_0x2e2678,_0x53035e);}};
\ No newline at end of file
+var _0x9e25=['mailInteraction:','./mailInteraction.events','save','update','emit','register'];(function(_0x593dc9,_0x4766cc){var _0x32c7ee=function(_0x4d2835){while(--_0x4d2835){_0x593dc9['push'](_0x593dc9['shift']());}};_0x32c7ee(++_0x4766cc);}(_0x9e25,0x151));var _0x59e2=function(_0x44739b,_0x48e78b){_0x44739b=_0x44739b-0x0;var _0x335f94=_0x9e25[_0x44739b];return _0x335f94;};'use strict';var MailInteractionEvents=require(_0x59e2('0x0'));var events=[_0x59e2('0x1'),'remove',_0x59e2('0x2')];function createListener(_0x3ff9fb,_0x20b5d5){return function(_0x102b52){_0x20b5d5[_0x59e2('0x3')](_0x3ff9fb,_0x102b52);};}function removeListener(_0x1c0b9c,_0x537e31){return function(){MailInteractionEvents['removeListener'](_0x1c0b9c,_0x537e31);};}exports[_0x59e2('0x4')]=function(_0x1f3af3){for(var _0xde97b4=0x0,_0x41faa5=events['length'];_0xde97b4<_0x41faa5;_0xde97b4++){var _0x3edb30=events[_0xde97b4];var _0x27f3c1=createListener(_0x59e2('0x5')+_0x3edb30,_0x1f3af3);MailInteractionEvents['on'](_0x3edb30,_0x27f3c1);}};
\ No newline at end of file
index d19fd78..5982654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f6=['tracked','mail','mailmessage:create','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','/:id/download','post'];(function(_0x227618,_0xf1c658){var _0x163bb2=function(_0x506452){while(--_0x506452){_0x227618['push'](_0x227618['shift']());}};_0x163bb2(++_0xf1c658);}(_0xe4f6,0x19a));var _0x6e4f=function(_0x3ac48d,_0x23e768){_0x3ac48d=_0x3ac48d-0x0;var _0x3aaa51=_0xe4f6[_0x3ac48d];return _0x3aaa51;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6e4f('0x0'));var timeout=require(_0x6e4f('0x1'));var express=require(_0x6e4f('0x2'));var router=express[_0x6e4f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6e4f('0x4'));var interaction=require(_0x6e4f('0x5'));var config=require(_0x6e4f('0x6'));var controller=require('./mailMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6e4f('0x7')](_0x6e4f('0x8'),auth[_0x6e4f('0x9')](),controller[_0x6e4f('0xa')]);router[_0x6e4f('0x7')](_0x6e4f('0xb'),auth[_0x6e4f('0x9')](),controller[_0x6e4f('0xc')]);router['get'](_0x6e4f('0xd'),auth['isAuthenticated'](),controller['download']);router[_0x6e4f('0xe')]('/',auth[_0x6e4f('0x9')](),interaction[_0x6e4f('0xf')](_0x6e4f('0x10'),_0x6e4f('0x11')),controller['create']);router[_0x6e4f('0x12')](_0x6e4f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6e4f('0x12')](_0x6e4f('0x13'),auth['isAuthenticated'](),controller[_0x6e4f('0x14')]);router[_0x6e4f('0x12')](_0x6e4f('0x15'),auth[_0x6e4f('0x9')](),controller['reject']);router[_0x6e4f('0x16')](_0x6e4f('0xb'),auth[_0x6e4f('0x9')](),controller[_0x6e4f('0x17')]);module[_0x6e4f('0x18')]=router;
\ No newline at end of file
+var _0xbb58=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','describe','/:id','isAuthenticated','show','/:id/download','post','tracked','mailmessage:create','create','update','put','/:id/accept','/:id/reject','delete','destroy'];(function(_0x490634,_0xd29c2e){var _0x3fbdcb=function(_0xd03b2c){while(--_0xd03b2c){_0x490634['push'](_0x490634['shift']());}};_0x3fbdcb(++_0xd29c2e);}(_0xbb58,0x17b));var _0x8bb5=function(_0x30ae0e,_0x227a9f){_0x30ae0e=_0x30ae0e-0x0;var _0x3aa2eb=_0xbb58[_0x30ae0e];return _0x3aa2eb;};'use strict';var multer=require('multer');var util=require(_0x8bb5('0x0'));var path=require(_0x8bb5('0x1'));var timeout=require(_0x8bb5('0x2'));var express=require(_0x8bb5('0x3'));var router=express[_0x8bb5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8bb5('0x5'));var interaction=require(_0x8bb5('0x6'));var config=require(_0x8bb5('0x7'));var controller=require(_0x8bb5('0x8'));router[_0x8bb5('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8bb5('0x9')](_0x8bb5('0xa'),auth['isAuthenticated'](),controller[_0x8bb5('0xb')]);router[_0x8bb5('0x9')](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0xe')]);router['get'](_0x8bb5('0xf'),auth[_0x8bb5('0xd')](),controller['download']);router[_0x8bb5('0x10')]('/',auth[_0x8bb5('0xd')](),interaction[_0x8bb5('0x11')]('mail',_0x8bb5('0x12')),controller[_0x8bb5('0x13')]);router['put'](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0x14')]);router[_0x8bb5('0x15')](_0x8bb5('0x16'),auth[_0x8bb5('0xd')](),controller['accept']);router['put'](_0x8bb5('0x17'),auth[_0x8bb5('0xd')](),controller['reject']);router[_0x8bb5('0x18')](_0x8bb5('0xc'),auth[_0x8bb5('0xd')](),controller[_0x8bb5('0x19')]);module[_0x8bb5('0x1a')]=router;
\ No newline at end of file
index 52ed8b4..72587f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd30=['STRING','long','DATE','Email','lodash','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x2f5575,_0x417b66){var _0x2e4f45=function(_0x25d39d){while(--_0x25d39d){_0x2f5575['push'](_0x2f5575['shift']());}};_0x2e4f45(++_0x417b66);}(_0xcd30,0x14e));var _0x0cd3=function(_0x3ea392,_0x59d098){_0x3ea392=_0x3ea392-0x0;var _0x160ddf=_0xcd30[_0x3ea392];return _0x160ddf;};'use strict';var Sequelize=require('sequelize');var _=require(_0x0cd3('0x0'));module[_0x0cd3('0x1')]={'body':{'type':Sequelize[_0x0cd3('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x0cd3('0x2')](_0x0cd3('0x3'))},'read':{'type':Sequelize[_0x0cd3('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0cd3('0x5')]('in',_0x0cd3('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x0cd3('0x7')](0x1fe)},'from':{'type':Sequelize[_0x0cd3('0x7')]},'to':{'type':Sequelize['TEXT'](_0x0cd3('0x8'))},'cc':{'type':Sequelize[_0x0cd3('0x2')](_0x0cd3('0x8'))},'bcc':{'type':Sequelize[_0x0cd3('0x2')]('long')},'subject':{'type':Sequelize[_0x0cd3('0x2')]},'sentAt':{'type':Sequelize[_0x0cd3('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x0cd3('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x0cd3('0x9')]},'originTo':{'type':Sequelize['TEXT']('long')},'originCc':{'type':Sequelize[_0x0cd3('0x2')](_0x0cd3('0x8'))},'originChannel':{'type':Sequelize['ENUM'](_0x0cd3('0xa'),'Chat'),'defaultValue':_0x0cd3('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x1e22=['DATE','INTEGER','Email','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x1e22,0x85));var _0x21e2=function(_0x1f1a97,_0xadfc15){_0x1f1a97=_0x1f1a97-0x0;var _0x29fc6a=_0x1e22[_0x1f1a97];return _0x29fc6a;};'use strict';var Sequelize=require(_0x21e2('0x0'));var _=require(_0x21e2('0x1'));module[_0x21e2('0x2')]={'body':{'type':Sequelize[_0x21e2('0x3')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x21e2('0x3')](_0x21e2('0x4'))},'read':{'type':Sequelize[_0x21e2('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x21e2('0x6')]('in',_0x21e2('0x7')),'defaultValue':_0x21e2('0x7'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0x21e2('0x8')]},'to':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'cc':{'type':Sequelize[_0x21e2('0x3')]('long')},'bcc':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'subject':{'type':Sequelize[_0x21e2('0x3')]},'sentAt':{'type':Sequelize[_0x21e2('0xa')]},'attach':{'type':Sequelize[_0x21e2('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x21e2('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x21e2('0x3')](_0x21e2('0x9'))},'originCc':{'type':Sequelize['TEXT'](_0x21e2('0x9'))},'originChannel':{'type':Sequelize['ENUM'](_0x21e2('0xc'),'Chat'),'defaultValue':_0x21e2('0xc'),'allowNull':![]}};
\ No newline at end of file
index 54b36de..b6f0abf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf782=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','MailMessage','count','includeAll','findAll','rows','show','params','find','body','describe','out','secret','split','MailAccount','findOne','CmList','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','List','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','MailInteraction','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','event','accept','fromString','EventManager','acceptmessage','reject','mail','null','RejectMessage','rejectMessage','QueryTypes','rejectmessage','unix','toString','server','files','tmp','message-%s.eml','from','subject','Attachment','Attachments','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','bcc','headers','Bcc','basename','push','readFileSync','build','download','unlinkSync','eml-format','bluebird','html-to-text','../../components/parsers/qs','api','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','html-entities','./mailMessage.socket','http','client','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json','offset','undefined','limit','status','set','Content-Range','update','then','destroy','end','sendStatus','stack','name','map','rawAttributes','fieldName','type','key'];(function(_0x19518f,_0x4f794c){var _0x36563e=function(_0x24c169){while(--_0x24c169){_0x19518f['push'](_0x19518f['shift']());}};_0x36563e(++_0x4f794c);}(_0xf782,0x73));var _0x2f78=function(_0x522c5c,_0x4983dc){_0x522c5c=_0x522c5c-0x0;var _0x247016=_0xf782[_0x522c5c];return _0x247016;};'use strict';var emlformat=require(_0x2f78('0x0'));var moment=require('moment');var BPromise=require(_0x2f78('0x1'));var util=require('util');var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var htmlToText=require(_0x2f78('0x2'));var qs=require(_0x2f78('0x3'));var logger=require('../../config/logger')(_0x2f78('0x4'));var interaction_log=require(_0x2f78('0x5'))('mail-interactions');var config=require(_0x2f78('0x6'));var db=require(_0x2f78('0x7'))['db'];config[_0x2f78('0x8')]=_[_0x2f78('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2f78('0xa'))(new Redis(config[_0x2f78('0x8')]));var htmlEntities=require(_0x2f78('0xb'));require(_0x2f78('0xc'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x2f78('0xd')]({'port':0x232c});var client9003=jayson[_0x2f78('0xe')][_0x2f78('0xd')]({'port':0x232b});var client9002=jayson[_0x2f78('0xe')][_0x2f78('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x47b385,_0x4be5b0,_0x54301a,_0x26d334){return new BPromise(function(_0x6c8806,_0x2327a4){var _0x49e90f=_0x26d334||client;return _0x49e90f[_0x2f78('0xf')](_0x47b385,_0x54301a)['then'](function(_0x360285){logger[_0x2f78('0x10')](_0x2f78('0x11'),_0x4be5b0,_0x2f78('0x12'));logger['debug'](_0x2f78('0x13'),_0x4be5b0,'request\x20sent',JSON[_0x2f78('0x14')](_0x360285));if(_0x360285[_0x2f78('0x15')]){if(_0x360285['error'][_0x2f78('0x16')]===0x1f4){logger[_0x2f78('0x15')](_0x2f78('0x11'),_0x4be5b0,_0x360285[_0x2f78('0x15')][_0x2f78('0x17')]);return _0x2327a4(_0x360285[_0x2f78('0x15')][_0x2f78('0x17')]);}logger[_0x2f78('0x15')](_0x2f78('0x11'),_0x4be5b0,_0x360285[_0x2f78('0x15')]['message']);return _0x6c8806(_0x360285[_0x2f78('0x15')][_0x2f78('0x17')]);}else{logger[_0x2f78('0x10')](_0x2f78('0x11'),_0x4be5b0,_0x2f78('0x12'));_0x6c8806(_0x360285[_0x2f78('0x18')][_0x2f78('0x17')]);}})[_0x2f78('0x19')](function(_0x49bafb){logger[_0x2f78('0x15')](_0x2f78('0x11'),_0x4be5b0,_0x49bafb);_0x2327a4(_0x49bafb);});});}function respondWithResult(_0x4a27ed,_0x1a3fb1){_0x1a3fb1=_0x1a3fb1||0xc8;return function(_0x1b5a9c){if(_0x1b5a9c){return _0x4a27ed['status'](_0x1a3fb1)[_0x2f78('0x1a')](_0x1b5a9c);}};}function respondWithFilteredResult(_0x5f5b7e,_0x441e04){return function(_0x4cb4d1){if(_0x4cb4d1){var _0x12d3e3=typeof _0x441e04[_0x2f78('0x1b')]===_0x2f78('0x1c')&&typeof _0x441e04[_0x2f78('0x1d')]===_0x2f78('0x1c');var _0x4948f9=_0x4cb4d1['count'];var _0x1d3826=_0x12d3e3?0x0:_0x441e04['offset'];var _0x4af2f5=_0x12d3e3?_0x4cb4d1['count']:_0x441e04[_0x2f78('0x1b')]+_0x441e04[_0x2f78('0x1d')];var _0x4dc783;if(_0x4af2f5>=_0x4948f9){_0x4af2f5=_0x4948f9;_0x4dc783=0xc8;}else{_0x4dc783=0xce;}_0x5f5b7e[_0x2f78('0x1e')](_0x4dc783);return _0x5f5b7e[_0x2f78('0x1f')](_0x2f78('0x20'),_0x1d3826+'-'+_0x4af2f5+'/'+_0x4948f9)['json'](_0x4cb4d1);}return null;};}function saveUpdates(_0x182d23){return function(_0x3ceed0){if(_0x3ceed0){return _0x3ceed0[_0x2f78('0x21')](_0x182d23)[_0x2f78('0x22')](function(_0x32c376){return _0x32c376;});}return null;};}function removeEntity(_0x466df8){return function(_0x2bcfbc){if(_0x2bcfbc){return _0x2bcfbc[_0x2f78('0x23')]()['then'](function(){_0x466df8['status'](0xcc)[_0x2f78('0x24')]();});}};}function handleEntityNotFound(_0x164782){return function(_0x593118){if(!_0x593118){_0x164782[_0x2f78('0x25')](0x194);}return _0x593118;};}function handleError(_0x5a22d5,_0x5ad99c){_0x5ad99c=_0x5ad99c||0x1f4;return function(_0x1272aa){logger['error'](_0x1272aa[_0x2f78('0x26')]);if(_0x1272aa['name']){delete _0x1272aa[_0x2f78('0x27')];}_0x5a22d5[_0x2f78('0x1e')](_0x5ad99c)['send'](_0x1272aa);};}exports['index']=function(_0x49d711,_0x2ccb23){var _0x4bb1a5={},_0x30f75c={},_0x3a9e01={'count':0x0,'rows':[]};var _0x47035a=_[_0x2f78('0x28')](db['MailMessage'][_0x2f78('0x29')],function(_0x3dd23c){return{'name':_0x3dd23c[_0x2f78('0x2a')],'type':_0x3dd23c[_0x2f78('0x2b')][_0x2f78('0x2c')]};});_0x30f75c[_0x2f78('0x2d')]=_[_0x2f78('0x28')](_0x47035a,_0x2f78('0x27'));_0x30f75c[_0x2f78('0x2e')]=_[_0x2f78('0x2f')](_0x49d711[_0x2f78('0x2e')]);_0x30f75c[_0x2f78('0x30')]=_[_0x2f78('0x31')](_0x30f75c[_0x2f78('0x2d')],_0x30f75c[_0x2f78('0x2e')]);_0x4bb1a5[_0x2f78('0x32')]=_[_0x2f78('0x31')](_0x30f75c['model'],qs[_0x2f78('0x33')](_0x49d711[_0x2f78('0x2e')][_0x2f78('0x33')]));_0x4bb1a5[_0x2f78('0x32')]=_0x4bb1a5[_0x2f78('0x32')][_0x2f78('0x34')]?_0x4bb1a5[_0x2f78('0x32')]:_0x30f75c['model'];if(!_0x49d711['query'][_0x2f78('0x35')]('nolimit')){_0x4bb1a5[_0x2f78('0x1d')]=qs[_0x2f78('0x1d')](_0x49d711[_0x2f78('0x2e')][_0x2f78('0x1d')]);_0x4bb1a5[_0x2f78('0x1b')]=qs[_0x2f78('0x1b')](_0x49d711[_0x2f78('0x2e')][_0x2f78('0x1b')]);}_0x4bb1a5[_0x2f78('0x36')]=qs['sort'](_0x49d711[_0x2f78('0x2e')][_0x2f78('0x37')]);_0x4bb1a5[_0x2f78('0x38')]=qs[_0x2f78('0x30')](_[_0x2f78('0x39')](_0x49d711[_0x2f78('0x2e')],_0x30f75c['filters']),_0x47035a);if(_0x49d711['query']['filter']){_0x4bb1a5['where']=_[_0x2f78('0x3a')](_0x4bb1a5['where'],{'$or':_[_0x2f78('0x28')](_0x47035a,function(_0x4bc196){if(_0x4bc196[_0x2f78('0x2b')]!==_0x2f78('0x3b')){var _0x31ca17={};_0x31ca17[_0x4bc196[_0x2f78('0x27')]]={'$like':'%'+_0x49d711['query'][_0x2f78('0x3c')]+'%'};return _0x31ca17;}})});}_0x4bb1a5=_[_0x2f78('0x3a')]({},_0x4bb1a5,_0x49d711[_0x2f78('0x3d')]);var _0x154de0={'where':_0x4bb1a5[_0x2f78('0x38')]};return db[_0x2f78('0x3e')][_0x2f78('0x3f')](_0x154de0)['then'](function(_0x64762e){_0x3a9e01['count']=_0x64762e;if(_0x49d711[_0x2f78('0x2e')][_0x2f78('0x40')]){_0x4bb1a5['include']=[{'all':!![]}];}return db['MailMessage'][_0x2f78('0x41')](_0x4bb1a5);})['then'](function(_0x5c936e){_0x3a9e01[_0x2f78('0x42')]=_0x5c936e;return _0x3a9e01;})[_0x2f78('0x22')](respondWithFilteredResult(_0x2ccb23,_0x4bb1a5))[_0x2f78('0x19')](handleError(_0x2ccb23,null));};exports[_0x2f78('0x43')]=function(_0x24c6a0,_0x258ecf){var _0x2635e2={'raw':!![],'where':{'id':_0x24c6a0[_0x2f78('0x44')]['id']}},_0x7108cf={};_0x7108cf[_0x2f78('0x2d')]=_[_0x2f78('0x2f')](db['MailMessage'][_0x2f78('0x29')]);_0x7108cf[_0x2f78('0x2e')]=_[_0x2f78('0x2f')](_0x24c6a0[_0x2f78('0x2e')]);_0x7108cf[_0x2f78('0x30')]=_['intersection'](_0x7108cf[_0x2f78('0x2d')],_0x7108cf[_0x2f78('0x2e')]);_0x2635e2[_0x2f78('0x32')]=_[_0x2f78('0x31')](_0x7108cf['model'],qs['fields'](_0x24c6a0[_0x2f78('0x2e')][_0x2f78('0x33')]));_0x2635e2['attributes']=_0x2635e2[_0x2f78('0x32')][_0x2f78('0x34')]?_0x2635e2[_0x2f78('0x32')]:_0x7108cf['model'];if(_0x24c6a0[_0x2f78('0x2e')][_0x2f78('0x40')]){_0x2635e2['include']=[{'all':!![]}];}_0x2635e2=_[_0x2f78('0x3a')]({},_0x2635e2,_0x24c6a0[_0x2f78('0x3d')]);return db[_0x2f78('0x3e')][_0x2f78('0x45')](_0x2635e2)[_0x2f78('0x22')](handleEntityNotFound(_0x258ecf,null))['then'](respondWithResult(_0x258ecf,null))['catch'](handleError(_0x258ecf,null));};exports['update']=function(_0xafb2b9,_0x598973){if(_0xafb2b9[_0x2f78('0x46')]['id']){delete _0xafb2b9[_0x2f78('0x46')]['id'];}return db[_0x2f78('0x3e')][_0x2f78('0x45')]({'where':{'id':_0xafb2b9[_0x2f78('0x44')]['id']}})[_0x2f78('0x22')](handleEntityNotFound(_0x598973,null))[_0x2f78('0x22')](saveUpdates(_0xafb2b9[_0x2f78('0x46')],null))['then'](respondWithResult(_0x598973,null))[_0x2f78('0x19')](handleError(_0x598973,null));};exports[_0x2f78('0x23')]=function(_0x3b2f5c,_0x2ed536){return db[_0x2f78('0x3e')][_0x2f78('0x45')]({'where':{'id':_0x3b2f5c['params']['id']}})[_0x2f78('0x22')](handleEntityNotFound(_0x2ed536,null))[_0x2f78('0x22')](removeEntity(_0x2ed536,null))[_0x2f78('0x19')](handleError(_0x2ed536,null));};exports[_0x2f78('0x47')]=function(_0x1ea1ea,_0x3399e1){return db[_0x2f78('0x3e')][_0x2f78('0x47')]()['then'](respondWithResult(_0x3399e1,null))['catch'](handleError(_0x3399e1,null));};exports['create']=function(_0x3d162e,_0x55c019){return db[_0x2f78('0x3e')]['create'](_0x3d162e[_0x2f78('0x46')])[_0x2f78('0x22')](function(_0x268941){if(_0x268941){if(_0x268941['direction']===_0x2f78('0x48')&&!_0x268941[_0x2f78('0x49')]){var _0x541ae4,_0x2ff074,_0x97c004;if(_0x3d162e[_0x2f78('0x46')]['to']){_0x2ff074=_0x3d162e['body']['to'][_0x2f78('0x4a')](',')[0x0];}return db[_0x2f78('0x4b')][_0x2f78('0x4c')]({'where':{'id':_0x268941['MailAccountId']},'include':[{'model':db[_0x2f78('0x4d')],'as':'List','include':[{'model':db[_0x2f78('0x4e')],'as':_0x2f78('0x4f'),'where':{'email':_0x2ff074},'limit':0x1,'order':[[_0x2f78('0x50'),_0x2f78('0x51')]]}]},{'model':db[_0x2f78('0x52')],'as':_0x2f78('0x53'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x2f78('0x54'),'raw':!![]}]}]})[_0x2f78('0x22')](function(_0x3f1da1){_0x541ae4=_0x3f1da1;if(!_0x541ae4||!_0x541ae4['Smtp'])return;var _0x36d109=_0x541ae4[_0x2f78('0x55')]();if(_0x3d162e[_0x2f78('0x46')][_0x2f78('0x56')]&&_0x3d162e[_0x2f78('0x46')][_0x2f78('0x56')][_0x2f78('0x34')]){for(var _0xe3b5f1=0x0;_0xe3b5f1<_0x3d162e[_0x2f78('0x46')][_0x2f78('0x56')][_0x2f78('0x34')];_0xe3b5f1+=0x1){_0x3d162e[_0x2f78('0x46')][_0x2f78('0x56')][_0xe3b5f1]={'filename':_0x3d162e[_0x2f78('0x46')][_0x2f78('0x56')][_0xe3b5f1][_0x2f78('0x27')],'path':path[_0x2f78('0x57')](config[_0x2f78('0x58')],_0x2f78('0x59'),_0x3d162e[_0x2f78('0x46')]['attachments'][_0xe3b5f1]['basename'])};}}_0x97c004={'account':_0x36d109,'message':_0x3d162e[_0x2f78('0x46')]};return;})[_0x2f78('0x22')](function(){if(_0x541ae4[_0x2f78('0x5a')]){if(_0x541ae4[_0x2f78('0x5a')]['Contacts']['length']){return _0x541ae4[_0x2f78('0x5a')][_0x2f78('0x4f')][0x0];}else{return db[_0x2f78('0x4e')]['create'](_['defaults'](_0x3d162e[_0x2f78('0x46')],{'firstName':_0x3d162e[_0x2f78('0x46')]['to'],'email':_0x3d162e[_0x2f78('0x46')]['to'],'phone':_0x3d162e[_0x2f78('0x46')]['to'],'ListId':_0x541ae4[_0x2f78('0x5b')]}));}}else{throw new Error(_0x2f78('0x5c'));}})[_0x2f78('0x22')](function(){if(_0x97c004){return respondWithRpcPromise(_0x2f78('0x5d'),_0x2f78('0x5e'),_0x97c004,client9003)[_0x2f78('0x22')](function(_0x26b932){return _0x268941[_0x2f78('0x21')]({'read':!![],'messageId':_0x26b932[_0x2f78('0x5f')],'sentAt':moment()[_0x2f78('0x60')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x2f78('0x19')](function(_0x449c63){logger[_0x2f78('0x15')]('%s',JSON[_0x2f78('0x14')](_0x449c63));return _0x268941;});}return _0x268941;});}return _0x268941;}})[_0x2f78('0x22')](respondWithResult(_0x55c019,0xc9))['catch'](handleError(_0x55c019,null));};exports['accept']=function(_0x44d9bc,_0x4a6006){var _0xade24b={'agent':{},'channel':'mail'};if(_0x44d9bc[_0x2f78('0x46')]['id']){delete _0x44d9bc['body']['id'];}_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x61')]=!![];_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x62')]=moment()[_0x2f78('0x60')](_0x2f78('0x63'));_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x64')]=_0x44d9bc['body'][_0x2f78('0x64')]||_0x44d9bc[_0x2f78('0x65')]['id'];_0xade24b['agent']['id']=_0x44d9bc['body'][_0x2f78('0x64')];return db['MailMessage'][_0x2f78('0x45')]({'where':{'id':_0x44d9bc[_0x2f78('0x44')]['id'],'UserId':null}})[_0x2f78('0x22')](handleEntityNotFound(_0x4a6006,null))['then'](saveUpdates(_0x44d9bc[_0x2f78('0x46')],null))['then'](function(_0x8bb61c){if(_0x8bb61c){_0xade24b['message']=_0x8bb61c[_0x2f78('0x66')]({'plain':!![]});return db[_0x2f78('0x67')][_0x2f78('0x45')]({'where':{'id':_0x8bb61c[_0x2f78('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x4a6006,null))[_0x2f78('0x22')](function(_0x3fff51){if(_0x3fff51){return _0x3fff51['update']({'UserId':_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x64')],'read1stAt':_[_0x2f78('0x69')](_0x3fff51[_0x2f78('0x6a')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2f78('0x22')](function(_0x1ba52f){if(_0x1ba52f){_0xade24b['interaction']=_0x1ba52f['get']({'plain':!![]});interaction_log['info'](_0x2f78('0x6b'),_0x44d9bc[_0x2f78('0x65')]['id'],_0x44d9bc[_0x2f78('0x65')]['name'],_0x44d9bc[_0x2f78('0x65')][_0x2f78('0x6c')],_0xade24b[_0x2f78('0x6d')]['id'],_0x44d9bc[_0x2f78('0x46')]?JSON[_0x2f78('0x14')](_0x44d9bc[_0x2f78('0x46')]):'null');return respondWithRpcPromise(_0x2f78('0x6e'),_0x2f78('0x6f'),_0xade24b);}return null;})[_0x2f78('0x22')](function(_0x5cd5f8){var _0x3a9ecd='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5cd5f8['message'][_0x2f78('0x70')];return db[_0x2f78('0x71')]['query'](_0x3a9ecd,{'type':db[_0x2f78('0x72')]['QueryTypes'][_0x2f78('0x73')],'raw':!![]})['then'](function(_0x3dbb8f){return _0x3dbb8f;});})['then'](function(_0x5687bf){if(_0x5687bf){_0xade24b[_0x2f78('0x17')][_0x2f78('0x74')]=_0x5687bf[0x0];if(!_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x64')])return;return db[_0x2f78('0x75')]['find']({'where':{'id':_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x64')],'role':_0x2f78('0x76')},'attributes':['id',_0x2f78('0x27'),_0x2f78('0x77'),_0x2f78('0x78'),_0x2f78('0x79')],'raw':!![]});}return null;})[_0x2f78('0x22')](function(_0x333f6a){if(!_0x333f6a)return null;_0xade24b['message']['agent']=_0x333f6a;return _0xade24b;})['then'](function(_0x3ad465){if(_0x3ad465){if(_0x44d9bc[_0x2f78('0x46')][_0x2f78('0x7a')]){_0xade24b[_0x2f78('0x17')][_0x2f78('0x7b')]=util['format'](_0x2f78('0x7c'),_0x44d9bc[_0x2f78('0x65')][_0x2f78('0x27')]);_0xade24b[_0x2f78('0x17')][_0x2f78('0x7d')]=_0xade24b[_0x2f78('0x7d')];_0xade24b[_0x2f78('0x17')]['motionChannel']=_0xade24b[_0x2f78('0x7d')];_0xade24b[_0x2f78('0x17')][_0x2f78('0x7e')]=_0x2f78('0x7f');_0xade24b[_0x2f78('0x17')][_0x2f78('0x46')]=htmlToText[_0x2f78('0x80')](_0xade24b[_0x2f78('0x17')]['body']);return respondWithRpcPromise(_0x2f78('0x81'),'EventManager',{'event':_0x2f78('0x82'),'message':_0xade24b['message']},client9002)[_0x2f78('0x22')](function(){return _0xade24b;});}return _0xade24b;}return null;})[_0x2f78('0x22')](respondWithResult(_0x4a6006,null))[_0x2f78('0x19')](handleError(_0x4a6006,null));};exports[_0x2f78('0x83')]=function(_0x554635,_0x39981c){var _0x56c1b2={'agent':{},'channel':_0x2f78('0x84')};if(_0x554635[_0x2f78('0x46')]['id']){delete _0x554635[_0x2f78('0x46')]['id'];}_0x554635[_0x2f78('0x46')][_0x2f78('0x64')]=_0x554635[_0x2f78('0x46')][_0x2f78('0x64')]||_0x554635[_0x2f78('0x65')]['id'];_0x56c1b2[_0x2f78('0x76')]['id']=_0x554635[_0x2f78('0x46')][_0x2f78('0x64')];return db[_0x2f78('0x3e')][_0x2f78('0x45')]({'where':{'id':_0x554635[_0x2f78('0x44')]['id'],'UserId':null}})[_0x2f78('0x22')](handleEntityNotFound(_0x39981c,null))[_0x2f78('0x22')](function(_0x15af04){if(_0x15af04){_0x56c1b2[_0x2f78('0x17')]=_0x15af04[_0x2f78('0x66')]({'plain':!![]});return db['MailInteraction'][_0x2f78('0x45')]({'where':{'id':_0x15af04[_0x2f78('0x68')]}});}return null;})[_0x2f78('0x22')](handleEntityNotFound(_0x39981c,null))[_0x2f78('0x22')](function(_0x28263c){if(_0x28263c){_0x56c1b2[_0x2f78('0x6d')]=_0x28263c['get']({'plain':!![]});interaction_log[_0x2f78('0x10')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x554635[_0x2f78('0x65')]['id'],_0x554635[_0x2f78('0x65')][_0x2f78('0x27')],_0x554635['user'][_0x2f78('0x6c')],_0x56c1b2[_0x2f78('0x6d')]['id'],_0x554635[_0x2f78('0x46')]?JSON['stringify'](_0x554635[_0x2f78('0x46')]):_0x2f78('0x85'));return respondWithRpcPromise(_0x2f78('0x86'),_0x2f78('0x87'),_0x56c1b2);}return null;})[_0x2f78('0x22')](function(_0x57d1db){var _0x1e6be5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x57d1db[_0x2f78('0x17')]['ContactId'];return db[_0x2f78('0x71')][_0x2f78('0x2e')](_0x1e6be5,{'type':db[_0x2f78('0x72')][_0x2f78('0x88')][_0x2f78('0x73')],'raw':!![]})[_0x2f78('0x22')](function(_0x41aa5c){return _0x41aa5c;});})[_0x2f78('0x22')](function(_0x51b72a){if(_0x51b72a){_0x56c1b2['message'][_0x2f78('0x74')]=_0x51b72a[0x0];if(!_0x554635[_0x2f78('0x46')][_0x2f78('0x64')])return;return db[_0x2f78('0x75')][_0x2f78('0x45')]({'where':{'id':_0x554635['body'][_0x2f78('0x64')],'role':'agent'},'attributes':['id',_0x2f78('0x27'),'fullname','email',_0x2f78('0x79')],'raw':!![]});}return null;})[_0x2f78('0x22')](function(_0x1f301a){if(!_0x1f301a)return null;_0x56c1b2['message'][_0x2f78('0x76')]=_0x1f301a;return _0x56c1b2;})[_0x2f78('0x22')](function(_0x335ba6){if(_0x335ba6){_0x335ba6[_0x2f78('0x17')][_0x2f78('0x7b')]=util[_0x2f78('0x60')](_0x2f78('0x7c'),_0x554635[_0x2f78('0x65')][_0x2f78('0x27')]);_0x335ba6[_0x2f78('0x17')]['channel']=_0x56c1b2[_0x2f78('0x7d')];_0x335ba6['message']['motionChannel']=_0x56c1b2['channel'];_0x335ba6[_0x2f78('0x17')][_0x2f78('0x7e')]='reject';_0x335ba6[_0x2f78('0x17')][_0x2f78('0x46')]=htmlToText['fromString'](_0x56c1b2[_0x2f78('0x17')][_0x2f78('0x46')]);respondWithRpcPromise('EventManager',_0x2f78('0x81'),{'event':_0x2f78('0x89'),'message':_0x335ba6[_0x2f78('0x17')]},client9002);return _0x56c1b2;}return null;})[_0x2f78('0x22')](respondWithResult(_0x39981c,null))[_0x2f78('0x19')](handleError(_0x39981c,null));};exports['download']=function(_0x33184e,_0x1e17f2){var _0x12c599=moment()[_0x2f78('0x8a')]()[_0x2f78('0x8b')]();var _0x9add0b=path[_0x2f78('0x57')](config[_0x2f78('0x58')],_0x2f78('0x8c'),_0x2f78('0x8d'),_0x2f78('0x8e'));var _0x704487=path[_0x2f78('0x57')](config[_0x2f78('0x58')],_0x2f78('0x8c'),'files',_0x2f78('0x56'));var _0x46a1ce=util[_0x2f78('0x60')](_0x2f78('0x8f'),_0x12c599);return db['MailMessage']['find']({'where':{'id':_0x33184e[_0x2f78('0x44')]['id']},'attributes':['id',_0x2f78('0x46'),_0x2f78('0x90'),'to','cc','bcc',_0x2f78('0x91'),'createdAt'],'include':_0x33184e[_0x2f78('0x2e')]['attachments']?[{'model':db[_0x2f78('0x92')],'as':_0x2f78('0x93')}]:undefined})[_0x2f78('0x22')](handleEntityNotFound(_0x1e17f2,null))[_0x2f78('0x22')](function(_0x5aecfe){if(_0x5aecfe){var _0x202b25=_0x5aecfe;var _0x2e752a={'from':_0x202b25[_0x2f78('0x90')],'to':_0x202b25['to'],'subject':_0x202b25[_0x2f78('0x91')],'html':htmlEntities[_0x2f78('0x94')](_0x202b25[_0x2f78('0x46')]),'headers':{'Date':moment(_0x202b25[_0x2f78('0x95')])['format'](_0x2f78('0x96'))},'attachments':[]};if(_0x5aecfe['cc']){_0x2e752a['headers']['Cc']=_0x5aecfe['cc'];}if(_0x5aecfe[_0x2f78('0x97')]){_0x2e752a[_0x2f78('0x98')][_0x2f78('0x99')]=_0x5aecfe['bcc'];}return new BPromise(function(_0x327332,_0x354ac2){if(_0x5aecfe['Attachments']){for(var _0x42722d=0x0;_0x42722d<_0x5aecfe[_0x2f78('0x93')]['length'];_0x42722d++){var _0x21d28b=_0x5aecfe[_0x2f78('0x93')][_0x42722d];var _0x370341=path[_0x2f78('0x57')](_0x704487,_0x21d28b[_0x2f78('0x9a')]);if(fs['existsSync'](_0x370341)){_0x2e752a[_0x2f78('0x56')][_0x2f78('0x9b')]({'name':_0x21d28b[_0x2f78('0x27')],'contentType':_0x21d28b[_0x2f78('0x2b')],'data':fs[_0x2f78('0x9c')](_0x370341)});}}}emlformat[_0x2f78('0x9d')](_0x2e752a,function(_0x340d10,_0x2f2301){if(_0x340d10)return _0x354ac2(_0x340d10);fs['writeFileSync'](path[_0x2f78('0x57')](_0x9add0b,_0x46a1ce),_0x2f2301);return _0x327332(_0x2f2301);});});}})['then'](function(_0x15de83){if(_0x15de83){return _0x1e17f2[_0x2f78('0x9e')](path[_0x2f78('0x57')](_0x9add0b,_0x46a1ce),_0x46a1ce,function(_0x65d3b4){if(!_0x65d3b4)fs[_0x2f78('0x9f')](path[_0x2f78('0x57')](_0x9add0b,_0x46a1ce));});}})[_0x2f78('0x19')](handleError(_0x1e17f2,null));};
\ No newline at end of file
+var _0x923b=['updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','defaults','List\x20not\x20found','SendMail','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','stringify','mail','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','contact','User','fullname','manual','interface','channel','motionChannel','event','accept','fromString','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','sequelize','Sequelize','QueryTypes','email','internal','SIP/%s','reject','rejectmessage','download','unix','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','headers','basename','existsSync','push','readFileSync','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','html-entities','register','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','status','json','undefined','limit','count','offset','set','Content-Range','update','end','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','length','find','body','destroy','describe','create','direction','out','MailAccount','MailAccountId','List','CmContact','Contacts'];(function(_0x4aa210,_0x15c988){var _0x5dfa23=function(_0x5d6b21){while(--_0x5d6b21){_0x4aa210['push'](_0x4aa210['shift']());}};_0x5dfa23(++_0x15c988);}(_0x923b,0xf3));var _0xb923=function(_0x2c5340,_0x5c86e5){_0x2c5340=_0x2c5340-0x0;var _0x3c505e=_0x923b[_0x2c5340];return _0x3c505e;};'use strict';var emlformat=require(_0xb923('0x0'));var moment=require(_0xb923('0x1'));var BPromise=require(_0xb923('0x2'));var util=require(_0xb923('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xb923('0x4'));var Redis=require(_0xb923('0x5'));var htmlToText=require(_0xb923('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xb923('0x7'))(_0xb923('0x8'));var interaction_log=require(_0xb923('0x7'))(_0xb923('0x9'));var config=require(_0xb923('0xa'));var db=require(_0xb923('0xb'))['db'];config[_0xb923('0xc')]=_['defaults'](config[_0xb923('0xc')],{'host':_0xb923('0xd'),'port':0x18eb});var socket=require(_0xb923('0xe'))(new Redis(config[_0xb923('0xc')]));var htmlEntities=require(_0xb923('0xf'));require('./mailMessage.socket')[_0xb923('0x10')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232c});var client9003=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232b});var client9002=jayson[_0xb923('0x11')][_0xb923('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x3de82d,_0x4fae22,_0x914eeb,_0x8778f5){return new BPromise(function(_0x371490,_0x5462c7){var _0x498c0c=_0x8778f5||client;return _0x498c0c[_0xb923('0x13')](_0x3de82d,_0x914eeb)[_0xb923('0x14')](function(_0x2122d5){logger['info'](_0xb923('0x15'),_0x4fae22,_0xb923('0x16'));logger[_0xb923('0x17')](_0xb923('0x18'),_0x4fae22,_0xb923('0x16'),JSON['stringify'](_0x2122d5));if(_0x2122d5['error']){if(_0x2122d5[_0xb923('0x19')][_0xb923('0x1a')]===0x1f4){logger[_0xb923('0x19')](_0xb923('0x15'),_0x4fae22,_0x2122d5[_0xb923('0x19')]['message']);return _0x5462c7(_0x2122d5[_0xb923('0x19')][_0xb923('0x1b')]);}logger[_0xb923('0x19')]('MailMessage,\x20%s,\x20%s',_0x4fae22,_0x2122d5[_0xb923('0x19')]['message']);return _0x371490(_0x2122d5[_0xb923('0x19')]['message']);}else{logger[_0xb923('0x1c')]('MailMessage,\x20%s,\x20%s',_0x4fae22,'request\x20sent');_0x371490(_0x2122d5[_0xb923('0x1d')][_0xb923('0x1b')]);}})[_0xb923('0x1e')](function(_0x4673a7){logger[_0xb923('0x19')](_0xb923('0x15'),_0x4fae22,_0x4673a7);_0x5462c7(_0x4673a7);});});}function respondWithResult(_0x180ef2,_0x245826){_0x245826=_0x245826||0xc8;return function(_0x362e3d){if(_0x362e3d){return _0x180ef2[_0xb923('0x1f')](_0x245826)[_0xb923('0x20')](_0x362e3d);}};}function respondWithFilteredResult(_0x383955,_0x2fde1f){return function(_0x108046){if(_0x108046){var _0x2b4167=typeof _0x2fde1f['offset']===_0xb923('0x21')&&typeof _0x2fde1f[_0xb923('0x22')]===_0xb923('0x21');var _0x2a6e85=_0x108046[_0xb923('0x23')];var _0x541d0c=_0x2b4167?0x0:_0x2fde1f[_0xb923('0x24')];var _0x4a3246=_0x2b4167?_0x108046[_0xb923('0x23')]:_0x2fde1f[_0xb923('0x24')]+_0x2fde1f[_0xb923('0x22')];var _0x303464;if(_0x4a3246>=_0x2a6e85){_0x4a3246=_0x2a6e85;_0x303464=0xc8;}else{_0x303464=0xce;}_0x383955[_0xb923('0x1f')](_0x303464);return _0x383955[_0xb923('0x25')](_0xb923('0x26'),_0x541d0c+'-'+_0x4a3246+'/'+_0x2a6e85)[_0xb923('0x20')](_0x108046);}return null;};}function saveUpdates(_0xb3313a){return function(_0x3893f7){if(_0x3893f7){return _0x3893f7[_0xb923('0x27')](_0xb3313a)['then'](function(_0x125fbe){return _0x125fbe;});}return null;};}function removeEntity(_0x5a961e){return function(_0xb10eed){if(_0xb10eed){return _0xb10eed['destroy']()['then'](function(){_0x5a961e[_0xb923('0x1f')](0xcc)[_0xb923('0x28')]();});}};}function handleEntityNotFound(_0x3fb2db){return function(_0xe21c26){if(!_0xe21c26){_0x3fb2db[_0xb923('0x29')](0x194);}return _0xe21c26;};}function handleError(_0x246c3f,_0x50b117){_0x50b117=_0x50b117||0x1f4;return function(_0x32b6ea){logger['error'](_0x32b6ea[_0xb923('0x2a')]);if(_0x32b6ea[_0xb923('0x2b')]){delete _0x32b6ea[_0xb923('0x2b')];}_0x246c3f[_0xb923('0x1f')](_0x50b117)[_0xb923('0x2c')](_0x32b6ea);};}exports[_0xb923('0x2d')]=function(_0x55952a,_0x550626){var _0x2ae66b={},_0x1b0340={},_0x5dad91={'count':0x0,'rows':[]};var _0x4069ba=_[_0xb923('0x2e')](db[_0xb923('0x2f')][_0xb923('0x30')],function(_0xf2c5f1){return{'name':_0xf2c5f1[_0xb923('0x31')],'type':_0xf2c5f1[_0xb923('0x32')][_0xb923('0x33')]};});_0x1b0340[_0xb923('0x34')]=_[_0xb923('0x2e')](_0x4069ba,_0xb923('0x2b'));_0x1b0340[_0xb923('0x35')]=_[_0xb923('0x36')](_0x55952a[_0xb923('0x35')]);_0x1b0340['filters']=_[_0xb923('0x37')](_0x1b0340[_0xb923('0x34')],_0x1b0340[_0xb923('0x35')]);_0x2ae66b['attributes']=_[_0xb923('0x37')](_0x1b0340[_0xb923('0x34')],qs[_0xb923('0x38')](_0x55952a[_0xb923('0x35')][_0xb923('0x38')]));_0x2ae66b[_0xb923('0x39')]=_0x2ae66b['attributes']['length']?_0x2ae66b[_0xb923('0x39')]:_0x1b0340['model'];if(!_0x55952a['query'][_0xb923('0x3a')](_0xb923('0x3b'))){_0x2ae66b['limit']=qs[_0xb923('0x22')](_0x55952a[_0xb923('0x35')][_0xb923('0x22')]);_0x2ae66b[_0xb923('0x24')]=qs[_0xb923('0x24')](_0x55952a[_0xb923('0x35')]['offset']);}_0x2ae66b['order']=qs[_0xb923('0x3c')](_0x55952a[_0xb923('0x35')][_0xb923('0x3c')]);_0x2ae66b[_0xb923('0x3d')]=qs[_0xb923('0x3e')](_[_0xb923('0x3f')](_0x55952a[_0xb923('0x35')],_0x1b0340[_0xb923('0x3e')]),_0x4069ba);if(_0x55952a['query'][_0xb923('0x40')]){_0x2ae66b[_0xb923('0x3d')]=_[_0xb923('0x41')](_0x2ae66b['where'],{'$or':_[_0xb923('0x2e')](_0x4069ba,function(_0x30705a){if(_0x30705a['type']!==_0xb923('0x42')){var _0xdf7064={};_0xdf7064[_0x30705a['name']]={'$like':'%'+_0x55952a['query'][_0xb923('0x40')]+'%'};return _0xdf7064;}})});}_0x2ae66b=_[_0xb923('0x41')]({},_0x2ae66b,_0x55952a[_0xb923('0x43')]);var _0x42b911={'where':_0x2ae66b[_0xb923('0x3d')]};return db[_0xb923('0x2f')][_0xb923('0x23')](_0x42b911)[_0xb923('0x14')](function(_0x3c570b){_0x5dad91[_0xb923('0x23')]=_0x3c570b;if(_0x55952a[_0xb923('0x35')]['includeAll']){_0x2ae66b[_0xb923('0x44')]=[{'all':!![]}];}return db[_0xb923('0x2f')][_0xb923('0x45')](_0x2ae66b);})[_0xb923('0x14')](function(_0x1ab093){_0x5dad91['rows']=_0x1ab093;return _0x5dad91;})[_0xb923('0x14')](respondWithFilteredResult(_0x550626,_0x2ae66b))[_0xb923('0x1e')](handleError(_0x550626,null));};exports[_0xb923('0x46')]=function(_0x5d6c03,_0x27082b){var _0x9f17b7={'raw':!![],'where':{'id':_0x5d6c03[_0xb923('0x47')]['id']}},_0x55a247={};_0x55a247['model']=_[_0xb923('0x36')](db[_0xb923('0x2f')][_0xb923('0x30')]);_0x55a247['query']=_['keys'](_0x5d6c03[_0xb923('0x35')]);_0x55a247[_0xb923('0x3e')]=_['intersection'](_0x55a247[_0xb923('0x34')],_0x55a247['query']);_0x9f17b7['attributes']=_[_0xb923('0x37')](_0x55a247[_0xb923('0x34')],qs[_0xb923('0x38')](_0x5d6c03[_0xb923('0x35')][_0xb923('0x38')]));_0x9f17b7['attributes']=_0x9f17b7[_0xb923('0x39')][_0xb923('0x48')]?_0x9f17b7['attributes']:_0x55a247[_0xb923('0x34')];if(_0x5d6c03[_0xb923('0x35')]['includeAll']){_0x9f17b7[_0xb923('0x44')]=[{'all':!![]}];}_0x9f17b7=_[_0xb923('0x41')]({},_0x9f17b7,_0x5d6c03['options']);return db[_0xb923('0x2f')][_0xb923('0x49')](_0x9f17b7)[_0xb923('0x14')](handleEntityNotFound(_0x27082b,null))[_0xb923('0x14')](respondWithResult(_0x27082b,null))[_0xb923('0x1e')](handleError(_0x27082b,null));};exports['update']=function(_0x33758,_0x7ce4ed){if(_0x33758[_0xb923('0x4a')]['id']){delete _0x33758[_0xb923('0x4a')]['id'];}return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x33758[_0xb923('0x47')]['id']}})[_0xb923('0x14')](handleEntityNotFound(_0x7ce4ed,null))[_0xb923('0x14')](saveUpdates(_0x33758[_0xb923('0x4a')],null))[_0xb923('0x14')](respondWithResult(_0x7ce4ed,null))[_0xb923('0x1e')](handleError(_0x7ce4ed,null));};exports[_0xb923('0x4b')]=function(_0x2221d6,_0x2d8045){return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x2221d6['params']['id']}})[_0xb923('0x14')](handleEntityNotFound(_0x2d8045,null))['then'](removeEntity(_0x2d8045,null))['catch'](handleError(_0x2d8045,null));};exports[_0xb923('0x4c')]=function(_0x1dae66,_0x372330){return db[_0xb923('0x2f')][_0xb923('0x4c')]()[_0xb923('0x14')](respondWithResult(_0x372330,null))[_0xb923('0x1e')](handleError(_0x372330,null));};exports[_0xb923('0x4d')]=function(_0x176909,_0x35ea51){return db['MailMessage']['create'](_0x176909[_0xb923('0x4a')])[_0xb923('0x14')](function(_0x2773c7){if(_0x2773c7){if(_0x2773c7[_0xb923('0x4e')]===_0xb923('0x4f')&&!_0x2773c7['secret']){var _0x44c1d9,_0x2f73ae,_0x5007cb;if(_0x176909['body']['to']){_0x2f73ae=_0x176909[_0xb923('0x4a')]['to']['split'](',')[0x0];}return db[_0xb923('0x50')]['findOne']({'where':{'id':_0x2773c7[_0xb923('0x51')]},'include':[{'model':db['CmList'],'as':_0xb923('0x52'),'include':[{'model':db[_0xb923('0x53')],'as':_0xb923('0x54'),'where':{'email':_0x2f73ae},'limit':0x1,'order':[[_0xb923('0x55'),_0xb923('0x56')]]}]},{'model':db[_0xb923('0x57')],'as':_0xb923('0x58'),'raw':!![],'include':[{'model':db[_0xb923('0x59')],'as':_0xb923('0x59'),'raw':!![]}]}]})[_0xb923('0x14')](function(_0x49d6e3){_0x44c1d9=_0x49d6e3;if(!_0x44c1d9||!_0x44c1d9[_0xb923('0x58')])return;var _0x5202a2=_0x44c1d9[_0xb923('0x5a')]();if(_0x176909[_0xb923('0x4a')][_0xb923('0x5b')]&&_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0xb923('0x48')]){for(var _0x395d78=0x0;_0x395d78<_0x176909['body'][_0xb923('0x5b')]['length'];_0x395d78+=0x1){_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0x395d78]={'filename':_0x176909[_0xb923('0x4a')][_0xb923('0x5b')][_0x395d78]['name'],'path':path[_0xb923('0x5c')](config[_0xb923('0x5d')],_0xb923('0x5e'),_0x176909[_0xb923('0x4a')]['attachments'][_0x395d78]['basename'])};}}_0x5007cb={'account':_0x5202a2,'message':_0x176909[_0xb923('0x4a')]};return;})['then'](function(){if(_0x44c1d9[_0xb923('0x52')]){if(_0x44c1d9[_0xb923('0x52')]['Contacts']['length']){return _0x44c1d9[_0xb923('0x52')][_0xb923('0x54')][0x0];}else{return db['CmContact'][_0xb923('0x4d')](_[_0xb923('0x5f')](_0x176909['body'],{'firstName':_0x176909[_0xb923('0x4a')]['to'],'email':_0x176909['body']['to'],'phone':_0x176909[_0xb923('0x4a')]['to'],'ListId':_0x44c1d9['ListId']}));}}else{throw new Error(_0xb923('0x60'));}})[_0xb923('0x14')](function(){if(_0x5007cb){return respondWithRpcPromise(_0xb923('0x61'),_0xb923('0x62'),_0x5007cb,client9003)[_0xb923('0x14')](function(_0x3dd853){return _0x2773c7['update']({'read':!![],'messageId':_0x3dd853['messageId'],'sentAt':moment()[_0xb923('0x63')](_0xb923('0x64'))});})[_0xb923('0x1e')](function(_0x864f73){logger[_0xb923('0x19')]('%s',JSON[_0xb923('0x65')](_0x864f73));return _0x2773c7;});}return _0x2773c7;});}return _0x2773c7;}})['then'](respondWithResult(_0x35ea51,0xc9))[_0xb923('0x1e')](handleError(_0x35ea51,null));};exports['accept']=function(_0x1850c7,_0x5ec578){var _0x5951ae={'agent':{},'channel':_0xb923('0x66')};if(_0x1850c7['body']['id']){delete _0x1850c7[_0xb923('0x4a')]['id'];}_0x1850c7[_0xb923('0x4a')][_0xb923('0x67')]=!![];_0x1850c7['body'][_0xb923('0x68')]=moment()['format'](_0xb923('0x64'));_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')]=_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')]||_0x1850c7[_0xb923('0x6a')]['id'];_0x5951ae[_0xb923('0x6b')]['id']=_0x1850c7['body'][_0xb923('0x69')];return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x1850c7['params']['id'],'UserId':null}})[_0xb923('0x14')](handleEntityNotFound(_0x5ec578,null))[_0xb923('0x14')](saveUpdates(_0x1850c7['body'],null))['then'](function(_0x4c235c){if(_0x4c235c){_0x5951ae[_0xb923('0x1b')]=_0x4c235c[_0xb923('0x6c')]({'plain':!![]});return db[_0xb923('0x6d')][_0xb923('0x49')]({'where':{'id':_0x4c235c[_0xb923('0x6e')]}});}return null;})['then'](handleEntityNotFound(_0x5ec578,null))[_0xb923('0x14')](function(_0x7972d7){if(_0x7972d7){return _0x7972d7['update']({'UserId':_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')],'read1stAt':_[_0xb923('0x6f')](_0x7972d7[_0xb923('0x70')])?moment()['format'](_0xb923('0x64')):undefined});}return null;})[_0xb923('0x14')](function(_0x20c29a){if(_0x20c29a){_0x5951ae[_0xb923('0x71')]=_0x20c29a[_0xb923('0x6c')]({'plain':!![]});interaction_log[_0xb923('0x1c')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1850c7[_0xb923('0x6a')]['id'],_0x1850c7['user'][_0xb923('0x2b')],_0x1850c7['user']['role'],_0x5951ae['interaction']['id'],_0x1850c7[_0xb923('0x4a')]?JSON[_0xb923('0x65')](_0x1850c7[_0xb923('0x4a')]):'null');return respondWithRpcPromise('AcceptMessage',_0xb923('0x72'),_0x5951ae);}return null;})[_0xb923('0x14')](function(_0x29205d){var _0x2242e5=_0xb923('0x73')+_0x29205d[_0xb923('0x1b')][_0xb923('0x74')];return db['sequelize']['query'](_0x2242e5,{'type':db['Sequelize']['QueryTypes'][_0xb923('0x75')],'raw':!![]})['then'](function(_0x2d6490){return _0x2d6490;});})[_0xb923('0x14')](function(_0xbdecd9){if(_0xbdecd9){_0x5951ae[_0xb923('0x1b')][_0xb923('0x76')]=_0xbdecd9[0x0];if(!_0x1850c7[_0xb923('0x4a')][_0xb923('0x69')])return;return db[_0xb923('0x77')][_0xb923('0x49')]({'where':{'id':_0x1850c7[_0xb923('0x4a')]['UserId'],'role':_0xb923('0x6b')},'attributes':['id',_0xb923('0x2b'),_0xb923('0x78'),'email','internal'],'raw':!![]});}return null;})[_0xb923('0x14')](function(_0x3cf467){if(!_0x3cf467)return null;_0x5951ae[_0xb923('0x1b')][_0xb923('0x6b')]=_0x3cf467;return _0x5951ae;})[_0xb923('0x14')](function(_0x44e38f){if(_0x44e38f){if(_0x1850c7[_0xb923('0x4a')][_0xb923('0x79')]){_0x5951ae[_0xb923('0x1b')][_0xb923('0x7a')]=util[_0xb923('0x63')]('SIP/%s',_0x1850c7[_0xb923('0x6a')][_0xb923('0x2b')]);_0x5951ae[_0xb923('0x1b')][_0xb923('0x7b')]=_0x5951ae['channel'];_0x5951ae['message'][_0xb923('0x7c')]=_0x5951ae[_0xb923('0x7b')];_0x5951ae[_0xb923('0x1b')][_0xb923('0x7d')]=_0xb923('0x7e');_0x5951ae[_0xb923('0x1b')][_0xb923('0x4a')]=htmlToText[_0xb923('0x7f')](_0x5951ae[_0xb923('0x1b')][_0xb923('0x4a')]);return respondWithRpcPromise(_0xb923('0x80'),'EventManager',{'event':_0xb923('0x81'),'message':_0x5951ae[_0xb923('0x1b')]},client9002)[_0xb923('0x14')](function(){return _0x5951ae;});}return _0x5951ae;}return null;})[_0xb923('0x14')](respondWithResult(_0x5ec578,null))[_0xb923('0x1e')](handleError(_0x5ec578,null));};exports['reject']=function(_0x3f5a82,_0x2bdc57){var _0x4b39b6={'agent':{},'channel':_0xb923('0x66')};if(_0x3f5a82['body']['id']){delete _0x3f5a82['body']['id'];}_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')]=_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')]||_0x3f5a82[_0xb923('0x6a')]['id'];_0x4b39b6[_0xb923('0x6b')]['id']=_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')];return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x3f5a82[_0xb923('0x47')]['id'],'UserId':null}})[_0xb923('0x14')](handleEntityNotFound(_0x2bdc57,null))['then'](function(_0x2f7a6f){if(_0x2f7a6f){_0x4b39b6['message']=_0x2f7a6f[_0xb923('0x6c')]({'plain':!![]});return db[_0xb923('0x6d')][_0xb923('0x49')]({'where':{'id':_0x2f7a6f[_0xb923('0x6e')]}});}return null;})[_0xb923('0x14')](handleEntityNotFound(_0x2bdc57,null))['then'](function(_0x1a89c4){if(_0x1a89c4){_0x4b39b6[_0xb923('0x71')]=_0x1a89c4['get']({'plain':!![]});interaction_log[_0xb923('0x1c')](_0xb923('0x82'),_0x3f5a82['user']['id'],_0x3f5a82[_0xb923('0x6a')][_0xb923('0x2b')],_0x3f5a82['user'][_0xb923('0x83')],_0x4b39b6['interaction']['id'],_0x3f5a82[_0xb923('0x4a')]?JSON[_0xb923('0x65')](_0x3f5a82[_0xb923('0x4a')]):_0xb923('0x84'));return respondWithRpcPromise(_0xb923('0x85'),_0xb923('0x86'),_0x4b39b6);}return null;})[_0xb923('0x14')](function(_0x4ee286){var _0x205158=_0xb923('0x73')+_0x4ee286['message'][_0xb923('0x74')];return db[_0xb923('0x87')][_0xb923('0x35')](_0x205158,{'type':db[_0xb923('0x88')][_0xb923('0x89')]['SELECT'],'raw':!![]})[_0xb923('0x14')](function(_0x49a66e){return _0x49a66e;});})[_0xb923('0x14')](function(_0x55bbe9){if(_0x55bbe9){_0x4b39b6['message'][_0xb923('0x76')]=_0x55bbe9[0x0];if(!_0x3f5a82[_0xb923('0x4a')][_0xb923('0x69')])return;return db[_0xb923('0x77')]['find']({'where':{'id':_0x3f5a82[_0xb923('0x4a')]['UserId'],'role':_0xb923('0x6b')},'attributes':['id',_0xb923('0x2b'),_0xb923('0x78'),_0xb923('0x8a'),_0xb923('0x8b')],'raw':!![]});}return null;})[_0xb923('0x14')](function(_0x38fd3b){if(!_0x38fd3b)return null;_0x4b39b6[_0xb923('0x1b')][_0xb923('0x6b')]=_0x38fd3b;return _0x4b39b6;})[_0xb923('0x14')](function(_0x59a097){if(_0x59a097){_0x59a097[_0xb923('0x1b')][_0xb923('0x7a')]=util[_0xb923('0x63')](_0xb923('0x8c'),_0x3f5a82[_0xb923('0x6a')][_0xb923('0x2b')]);_0x59a097[_0xb923('0x1b')][_0xb923('0x7b')]=_0x4b39b6[_0xb923('0x7b')];_0x59a097[_0xb923('0x1b')][_0xb923('0x7c')]=_0x4b39b6[_0xb923('0x7b')];_0x59a097['message']['event']=_0xb923('0x8d');_0x59a097[_0xb923('0x1b')]['body']=htmlToText[_0xb923('0x7f')](_0x4b39b6[_0xb923('0x1b')][_0xb923('0x4a')]);respondWithRpcPromise(_0xb923('0x80'),_0xb923('0x80'),{'event':_0xb923('0x8e'),'message':_0x59a097[_0xb923('0x1b')]},client9002);return _0x4b39b6;}return null;})[_0xb923('0x14')](respondWithResult(_0x2bdc57,null))[_0xb923('0x1e')](handleError(_0x2bdc57,null));};exports[_0xb923('0x8f')]=function(_0x2d3ee6,_0x145575){var _0x43ec78=moment()[_0xb923('0x90')]()[_0xb923('0x91')]();var _0x34ceee=path[_0xb923('0x5c')](config['root'],_0xb923('0x92'),_0xb923('0x93'),_0xb923('0x94'));var _0x6c5922=path[_0xb923('0x5c')](config[_0xb923('0x5d')],_0xb923('0x92'),_0xb923('0x93'),_0xb923('0x5b'));var _0x2b78c8=util['format'](_0xb923('0x95'),_0x43ec78);return db[_0xb923('0x2f')][_0xb923('0x49')]({'where':{'id':_0x2d3ee6[_0xb923('0x47')]['id']},'attributes':['id',_0xb923('0x4a'),_0xb923('0x96'),'to','cc',_0xb923('0x97'),_0xb923('0x98'),_0xb923('0x99')],'include':_0x2d3ee6[_0xb923('0x35')][_0xb923('0x5b')]?[{'model':db[_0xb923('0x9a')],'as':_0xb923('0x9b')}]:undefined})[_0xb923('0x14')](handleEntityNotFound(_0x145575,null))[_0xb923('0x14')](function(_0x9109f5){if(_0x9109f5){var _0x548306=_0x9109f5;var _0x5d1edb={'from':_0x548306['from'],'to':_0x548306['to'],'subject':_0x548306['subject'],'html':htmlEntities[_0xb923('0x9c')](_0x548306['body']),'headers':{'Date':moment(_0x548306['createdAt'])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x9109f5['cc']){_0x5d1edb[_0xb923('0x9d')]['Cc']=_0x9109f5['cc'];}if(_0x9109f5[_0xb923('0x97')]){_0x5d1edb['headers']['Bcc']=_0x9109f5[_0xb923('0x97')];}return new BPromise(function(_0x18d859,_0x25f306){if(_0x9109f5[_0xb923('0x9b')]){for(var _0x456148=0x0;_0x456148<_0x9109f5['Attachments'][_0xb923('0x48')];_0x456148++){var _0x3f98b1=_0x9109f5[_0xb923('0x9b')][_0x456148];var _0x1fd253=path[_0xb923('0x5c')](_0x6c5922,_0x3f98b1[_0xb923('0x9e')]);if(fs[_0xb923('0x9f')](_0x1fd253)){_0x5d1edb[_0xb923('0x5b')][_0xb923('0xa0')]({'name':_0x3f98b1[_0xb923('0x2b')],'contentType':_0x3f98b1[_0xb923('0x32')],'data':fs[_0xb923('0xa1')](_0x1fd253)});}}}emlformat['build'](_0x5d1edb,function(_0x20c2cf,_0x2cd63c){if(_0x20c2cf)return _0x25f306(_0x20c2cf);fs[_0xb923('0xa2')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8),_0x2cd63c);return _0x18d859(_0x2cd63c);});});}})[_0xb923('0x14')](function(_0x55dcac){if(_0x55dcac){return _0x145575[_0xb923('0x8f')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8),_0x2b78c8,function(_0x539405){if(!_0x539405)fs[_0xb923('0xa3')](path[_0xb923('0x5c')](_0x34ceee,_0x2b78c8));});}})[_0xb923('0x1e')](handleError(_0x145575,null));};
\ No newline at end of file
index 77f3e89..6f43ff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0279=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','update','remove'];(function(_0x3c3e5f,_0x4eff1e){var _0x347eb5=function(_0x6f5da1){while(--_0x6f5da1){_0x3c3e5f['push'](_0x3c3e5f['shift']());}};_0x347eb5(++_0x4eff1e);}(_0x0279,0x1cf));var _0x9027=function(_0x4d77d0,_0x2f91a0){_0x4d77d0=_0x4d77d0-0x0;var _0x2f4699=_0x0279[_0x4d77d0];return _0x2f4699;};'use strict';var EventEmitter=require(_0x9027('0x0'));var MailMessage=require(_0x9027('0x1'))['db'][_0x9027('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9027('0x3'),'afterDestroy':_0x9027('0x4')};function emitEvent(_0x4ac4ae){return function(_0x34bb8c,_0x3c6bd0,_0x48ad0c){MailMessageEvents[_0x9027('0x5')](_0x4ac4ae+':'+_0x34bb8c['id'],_0x34bb8c);MailMessageEvents[_0x9027('0x5')](_0x4ac4ae,_0x34bb8c);_0x48ad0c(null);};}for(var e in events){if(events[_0x9027('0x6')](e)){var event=events[e];MailMessage[_0x9027('0x7')](e,emitEvent(event));}}module[_0x9027('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x7dbb=['../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x426f43,_0x25b455){var _0x1301e3=function(_0x5d26a5){while(--_0x5d26a5){_0x426f43['push'](_0x426f43['shift']());}};_0x1301e3(++_0x25b455);}(_0x7dbb,0x18b));var _0xb7db=function(_0x3e33d9,_0xdcf132){_0x3e33d9=_0x3e33d9-0x0;var _0x481d50=_0x7dbb[_0x3e33d9];return _0x481d50;};'use strict';var EventEmitter=require(_0xb7db('0x0'));var MailMessage=require(_0xb7db('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xb7db('0x2')](0x0);var events={'afterCreate':_0xb7db('0x3'),'afterUpdate':'update','afterDestroy':_0xb7db('0x4')};function emitEvent(_0x3d8ae1){return function(_0x334e72,_0x225b0a,_0x4424a3){MailMessageEvents[_0xb7db('0x5')](_0x3d8ae1+':'+_0x334e72['id'],_0x334e72);MailMessageEvents['emit'](_0x3d8ae1,_0x334e72);_0x4424a3(null);};}for(var e in events){if(events[_0xb7db('0x6')](e)){var event=events[e];MailMessage[_0xb7db('0x7')](e,emitEvent(event));}}module[_0xb7db('0x8')]=MailMessageEvents;
\ No newline at end of file
index 1a5da04..3b8636e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x588c=['findOne','MailInteractionId','then','update','createdAt','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','mail_messages','plainBody','subject','body','get','direction','toLowerCase','out','secret','isNil','MailInteraction'];(function(_0x1c58b0,_0x417c0d){var _0x80ab75=function(_0x2536d6){while(--_0x2536d6){_0x1c58b0['push'](_0x1c58b0['shift']());}};_0x80ab75(++_0x417c0d);}(_0x588c,0x14c));var _0xc588=function(_0xe1f6b0,_0x35027a){_0xe1f6b0=_0xe1f6b0-0x0;var _0x56d4cb=_0x588c[_0xe1f6b0];return _0x56d4cb;};'use strict';var _=require('lodash');var util=require(_0xc588('0x0'));var logger=require(_0xc588('0x1'))(_0xc588('0x2'));var moment=require('moment');var BPromise=require(_0xc588('0x3'));var rp=require(_0xc588('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xc588('0x5'));var rimraf=require('rimraf');var config=require(_0xc588('0x6'));var attributes=require('./mailMessage.attributes');module['exports']=function(_0x297e97,_0x31d2f1){return _0x297e97['define']('MailMessage',attributes,{'tableName':_0xc588('0x7'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':'fti_mail_messages','fields':[_0xc588('0x8'),_0xc588('0x9')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x448c1f,_0x1dbab1,_0x105282){if(_0x448c1f[_0xc588('0xa')]){_0x448c1f[_0xc588('0x8')]=htmlToText['fromString'](_0x448c1f[_0xc588('0xa')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x105282(null,_0x1dbab1);},'afterCreate':function(_0x258cbc,_0x1d74a3,_0x58b350){var _0x108d7d=_0x297e97['models'];var _0x326d25=_0x258cbc[_0xc588('0xb')]({'plain':!![]});if(_0x326d25[_0xc588('0xc')][_0xc588('0xd')]()==='in'||_0x326d25[_0xc588('0xc')][_0xc588('0xd')]()===_0xc588('0xe')&&!_0x326d25[_0xc588('0xf')]&&!_[_0xc588('0x10')](_0x326d25['UserId'])){_0x108d7d[_0xc588('0x11')][_0xc588('0x12')]({'where':{'id':_0x326d25[_0xc588('0x13')]}})[_0xc588('0x14')](function(_0xa265ca){if(_0xa265ca){_0xa265ca[_0xc588('0x15')]({'lastMsgAt':_0x326d25[_0xc588('0x16')],'lastMsgDirection':_0x326d25[_0xc588('0xc')][_0xc588('0xd')]()});}})['catch'](function(_0x2ad3f0){console['error'](_0x2ad3f0);});}_0x58b350();}},'charset':_0xc588('0x17'),'collate':_0xc588('0x18')});};
\ No newline at end of file
+var _0xb943=['define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','direction','toLowerCase','out','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes'];(function(_0x161144,_0x33be61){var _0x167c1e=function(_0x101c2b){while(--_0x101c2b){_0x161144['push'](_0x161144['shift']());}};_0x167c1e(++_0x33be61);}(_0xb943,0xea));var _0x3b94=function(_0x1b7a21,_0x50a484){_0x1b7a21=_0x1b7a21-0x0;var _0x797ca1=_0xb943[_0x1b7a21];return _0x797ca1;};'use strict';var _=require(_0x3b94('0x0'));var util=require(_0x3b94('0x1'));var logger=require(_0x3b94('0x2'))(_0x3b94('0x3'));var moment=require(_0x3b94('0x4'));var BPromise=require('bluebird');var rp=require(_0x3b94('0x5'));var htmlToText=require(_0x3b94('0x6'));var fs=require('fs');var path=require(_0x3b94('0x7'));var rimraf=require(_0x3b94('0x8'));var config=require(_0x3b94('0x9'));var attributes=require(_0x3b94('0xa'));module['exports']=function(_0x1ac2a3,_0x550672){return _0x1ac2a3[_0x3b94('0xb')](_0x3b94('0xc'),attributes,{'tableName':_0x3b94('0xd'),'paranoid':![],'indexes':[{'name':_0x3b94('0xe'),'fields':[_0x3b94('0xe')]},{'name':_0x3b94('0xf'),'fields':[_0x3b94('0x10'),_0x3b94('0x11')],'type':_0x3b94('0x12')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x32b80e,_0x5e5776,_0x3a1356){if(_0x32b80e[_0x3b94('0x13')]){_0x32b80e['plainBody']=htmlToText[_0x3b94('0x14')](_0x32b80e[_0x3b94('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3a1356(null,_0x5e5776);},'afterCreate':function(_0x2aa032,_0x434701,_0x251c58){var _0x162590=_0x1ac2a3[_0x3b94('0x15')];var _0x4d4727=_0x2aa032['get']({'plain':!![]});if(_0x4d4727[_0x3b94('0x16')][_0x3b94('0x17')]()==='in'||_0x4d4727[_0x3b94('0x16')][_0x3b94('0x17')]()===_0x3b94('0x18')&&!_0x4d4727[_0x3b94('0x19')]&&!_[_0x3b94('0x1a')](_0x4d4727[_0x3b94('0x1b')])){_0x162590[_0x3b94('0x1c')][_0x3b94('0x1d')]({'where':{'id':_0x4d4727[_0x3b94('0x1e')]}})['then'](function(_0x4103ce){if(_0x4103ce){_0x4103ce[_0x3b94('0x1f')]({'lastMsgAt':_0x4d4727[_0x3b94('0x20')],'lastMsgDirection':_0x4d4727['direction'][_0x3b94('0x17')]()});}})['catch'](function(_0x45f995){console[_0x3b94('0x21')](_0x45f995);});}_0x251c58();}},'charset':'utf8mb4','collate':_0x3b94('0x22')});};
\ No newline at end of file
index 4c7795f..68240c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['result','CreateMailMessage','MailMessage','create','body','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','defaults','redis','localhost','socket.io-emitter','./mailMessage.socket','register','info','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','MailMessage,\x20%s,\x20%s','message','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x25e7,0x1d6));var _0x725e=function(_0x656c05,_0x1d4b18){_0x656c05=_0x656c05-0x0;var _0x28475a=_0x25e7[_0x656c05];return _0x28475a;};'use strict';var _=require(_0x725e('0x0'));var util=require(_0x725e('0x1'));var moment=require(_0x725e('0x2'));var BPromise=require(_0x725e('0x3'));var rs=require(_0x725e('0x4'));var fs=require('fs');var Redis=require(_0x725e('0x5'));var db=require(_0x725e('0x6'))['db'];var utils=require(_0x725e('0x7'));var logger=require(_0x725e('0x8'))(_0x725e('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x725e('0xa')]['http']({'port':0x232a});config['redis']=_[_0x725e('0xb')](config[_0x725e('0xc')],{'host':_0x725e('0xd'),'port':0x18eb});var socket=require(_0x725e('0xe'))(new Redis(config[_0x725e('0xc')]));require(_0x725e('0xf'))[_0x725e('0x10')](socket);function respondWithRpcPromise(_0x7c40ff,_0x22c189,_0x45cb68){return new BPromise(function(_0x441c29,_0xb297c7){return client['request'](_0x7c40ff,_0x45cb68)['then'](function(_0x40741b){logger[_0x725e('0x11')]('MailMessage,\x20%s,\x20%s',_0x22c189,'request\x20sent');logger[_0x725e('0x12')](_0x725e('0x13'),_0x22c189,'request\x20sent',JSON[_0x725e('0x14')](_0x40741b));if(_0x40741b[_0x725e('0x15')]){if(_0x40741b[_0x725e('0x15')]['code']===0x1f4){logger[_0x725e('0x15')](_0x725e('0x16'),_0x22c189,_0x40741b[_0x725e('0x15')][_0x725e('0x17')]);return _0xb297c7(_0x40741b[_0x725e('0x15')][_0x725e('0x17')]);}logger['error'](_0x725e('0x16'),_0x22c189,_0x40741b[_0x725e('0x15')][_0x725e('0x17')]);return _0x441c29(_0x40741b['error'][_0x725e('0x17')]);}else{logger[_0x725e('0x11')](_0x725e('0x16'),_0x22c189,_0x725e('0x18'));_0x441c29(_0x40741b[_0x725e('0x19')][_0x725e('0x17')]);}})['catch'](function(_0x22fba5){logger[_0x725e('0x15')](_0x725e('0x16'),_0x22c189,_0x22fba5);_0xb297c7(_0x22fba5);});});}exports[_0x725e('0x1a')]=function(_0x1a9ea6){var _0x3ad3d2=this;return new Promise(function(_0x540802,_0x2fc416){return db[_0x725e('0x1b')][_0x725e('0x1c')](_0x1a9ea6[_0x725e('0x1d')],{'raw':_0x1a9ea6[_0x725e('0x1e')]?_0x1a9ea6[_0x725e('0x1e')][_0x725e('0x1f')]===undefined?!![]:![]:!![]})[_0x725e('0x20')](function(_0x7d0792){logger['info'](_0x725e('0x1a'),_0x1a9ea6);logger[_0x725e('0x12')](_0x725e('0x1a'),_0x1a9ea6,JSON[_0x725e('0x14')](_0x7d0792));_0x540802(_0x7d0792);})['catch'](function(_0xffe474){logger['error']('CreateMailMessage',_0xffe474['message'],_0x1a9ea6);_0x2fc416(_0x3ad3d2[_0x725e('0x15')](0x1f4,_0xffe474[_0x725e('0x17')]));});});};
\ No newline at end of file
+var _0xe2cf=['MailMessage,\x20%s,\x20%s','request\x20sent','error','message','result','CreateMailMessage','MailMessage','create','options','debug','stringify','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./mailMessage.socket','request','then','info'];(function(_0x12a610,_0x5175f5){var _0x68942d=function(_0x1d6dc2){while(--_0x1d6dc2){_0x12a610['push'](_0x12a610['shift']());}};_0x68942d(++_0x5175f5);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x1a4cac,_0x116f47){_0x1a4cac=_0x1a4cac-0x0;var _0x142f2f=_0xe2cf[_0x1a4cac];return _0x142f2f;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var moment=require('moment');var BPromise=require(_0xfe2c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe2c('0x2'));var db=require(_0xfe2c('0x3'))['db'];var utils=require(_0xfe2c('0x4'));var logger=require(_0xfe2c('0x5'))('rpc');var config=require(_0xfe2c('0x6'));var jayson=require(_0xfe2c('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xfe2c('0x8')]=_[_0xfe2c('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfe2c('0xa'))(new Redis(config[_0xfe2c('0x8')]));require(_0xfe2c('0xb'))['register'](socket);function respondWithRpcPromise(_0x5b616c,_0x396912,_0x15421e){return new BPromise(function(_0x495513,_0x22278c){return client[_0xfe2c('0xc')](_0x5b616c,_0x15421e)[_0xfe2c('0xd')](function(_0xa176e9){logger[_0xfe2c('0xe')](_0xfe2c('0xf'),_0x396912,_0xfe2c('0x10'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0x396912,'request\x20sent',JSON['stringify'](_0xa176e9));if(_0xa176e9[_0xfe2c('0x11')]){if(_0xa176e9['error']['code']===0x1f4){logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0xa176e9[_0xfe2c('0x11')][_0xfe2c('0x12')]);return _0x22278c(_0xa176e9['error']['message']);}logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0xa176e9[_0xfe2c('0x11')][_0xfe2c('0x12')]);return _0x495513(_0xa176e9['error'][_0xfe2c('0x12')]);}else{logger[_0xfe2c('0xe')](_0xfe2c('0xf'),_0x396912,_0xfe2c('0x10'));_0x495513(_0xa176e9[_0xfe2c('0x13')][_0xfe2c('0x12')]);}})['catch'](function(_0x22481a){logger[_0xfe2c('0x11')](_0xfe2c('0xf'),_0x396912,_0x22481a);_0x22278c(_0x22481a);});});}exports[_0xfe2c('0x14')]=function(_0x55f751){var _0x1139fe=this;return new Promise(function(_0x59bdeb,_0x4e9137){return db[_0xfe2c('0x15')][_0xfe2c('0x16')](_0x55f751['body'],{'raw':_0x55f751[_0xfe2c('0x17')]?_0x55f751[_0xfe2c('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xfe2c('0xd')](function(_0x5dd54b){logger[_0xfe2c('0xe')](_0xfe2c('0x14'),_0x55f751);logger[_0xfe2c('0x18')](_0xfe2c('0x14'),_0x55f751,JSON[_0xfe2c('0x19')](_0x5dd54b));_0x59bdeb(_0x5dd54b);})[_0xfe2c('0x1a')](function(_0x57cd6d){logger[_0xfe2c('0x11')](_0xfe2c('0x14'),_0x57cd6d[_0xfe2c('0x12')],_0x55f751);_0x4e9137(_0x1139fe[_0xfe2c('0x11')](0x1f4,_0x57cd6d[_0xfe2c('0x12')]));});});};
\ No newline at end of file
index df5d558..670c24e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec15=['remove','update','removeListener','length','mailMessage:','./mailMessage.events'];(function(_0x37b374,_0x280c3d){var _0x35d269=function(_0x4803ea){while(--_0x4803ea){_0x37b374['push'](_0x37b374['shift']());}};_0x35d269(++_0x280c3d);}(_0xec15,0x167));var _0x5ec1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xec15[_0x20a584];return _0x4b41a8;};'use strict';var MailMessageEvents=require(_0x5ec1('0x0'));var events=['save',_0x5ec1('0x1'),_0x5ec1('0x2')];function createListener(_0x47bbf3,_0x6b9c2d){return function(_0x50c032){_0x6b9c2d['emit'](_0x47bbf3,_0x50c032);};}function removeListener(_0x5e04ff,_0x4c5881){return function(){MailMessageEvents[_0x5ec1('0x3')](_0x5e04ff,_0x4c5881);};}exports['register']=function(_0x5ef2c5){for(var _0x32df48=0x0,_0xab998f=events[_0x5ec1('0x4')];_0x32df48<_0xab998f;_0x32df48++){var _0x185a00=events[_0x32df48];var _0x49b3b0=createListener(_0x5ec1('0x5')+_0x185a00,_0x5ef2c5);MailMessageEvents['on'](_0x185a00,_0x49b3b0);}};
\ No newline at end of file
+var _0xc7a4=['length','./mailMessage.events','save','remove','emit','register'];(function(_0x2574fe,_0x1ec95c){var _0x1aa14f=function(_0x3c858a){while(--_0x3c858a){_0x2574fe['push'](_0x2574fe['shift']());}};_0x1aa14f(++_0x1ec95c);}(_0xc7a4,0x8b));var _0x4c7a=function(_0x42edf3,_0x41719){_0x42edf3=_0x42edf3-0x0;var _0x70e878=_0xc7a4[_0x42edf3];return _0x70e878;};'use strict';var MailMessageEvents=require(_0x4c7a('0x0'));var events=[_0x4c7a('0x1'),_0x4c7a('0x2'),'update'];function createListener(_0x49f855,_0xffe7ef){return function(_0x306ce8){_0xffe7ef[_0x4c7a('0x3')](_0x49f855,_0x306ce8);};}function removeListener(_0x161dd3,_0x44b53f){return function(){MailMessageEvents['removeListener'](_0x161dd3,_0x44b53f);};}exports[_0x4c7a('0x4')]=function(_0x15e6ed){for(var _0x351507=0x0,_0x31b213=events[_0x4c7a('0x5')];_0x351507<_0x31b213;_0x351507++){var _0x5b246a=events[_0x351507];var _0x2ac39b=createListener('mailMessage:'+_0x5b246a,_0x15e6ed);MailMessageEvents['on'](_0x5b246a,_0x2ac39b);}};
\ No newline at end of file
index baf8a7b..646613e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea24=['addTeams','/:id/users','addAgents','put','/:id','update','delete','destroy','removeTeams','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xea24,0x95));var _0x4ea2=function(_0x4760a1,_0x16ad1d){_0x4760a1=_0x4760a1-0x0;var _0x48b481=_0xea24[_0x4760a1];return _0x48b481;};'use strict';var multer=require('multer');var util=require(_0x4ea2('0x0'));var path=require(_0x4ea2('0x1'));var timeout=require(_0x4ea2('0x2'));var express=require('express');var router=express[_0x4ea2('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4ea2('0x4'));var config=require(_0x4ea2('0x5'));var controller=require('./mailQueue.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4ea2('0x6')]);router[_0x4ea2('0x7')](_0x4ea2('0x8'),auth[_0x4ea2('0x9')](),controller[_0x4ea2('0xa')]);router[_0x4ea2('0x7')]('/:id',auth[_0x4ea2('0x9')](),controller[_0x4ea2('0xb')]);router[_0x4ea2('0x7')](_0x4ea2('0xc'),auth[_0x4ea2('0x9')](),controller[_0x4ea2('0xd')]);router['get'](_0x4ea2('0xe'),auth['isAuthenticated'](),controller[_0x4ea2('0xf')]);router[_0x4ea2('0x7')]('/:id/users',auth[_0x4ea2('0x9')](),controller[_0x4ea2('0x10')]);router[_0x4ea2('0x11')]('/',auth['isAuthenticated'](),controller[_0x4ea2('0x12')]);router[_0x4ea2('0x11')]('/:id/teams',auth['isAuthenticated'](),controller[_0x4ea2('0x13')]);router[_0x4ea2('0x11')](_0x4ea2('0x14'),auth[_0x4ea2('0x9')](),controller[_0x4ea2('0x15')]);router[_0x4ea2('0x16')](_0x4ea2('0x17'),auth['isAuthenticated'](),controller[_0x4ea2('0x18')]);router[_0x4ea2('0x19')](_0x4ea2('0x17'),auth[_0x4ea2('0x9')](),controller[_0x4ea2('0x1a')]);router['delete'](_0x4ea2('0xe'),auth[_0x4ea2('0x9')](),controller[_0x4ea2('0x1b')]);router[_0x4ea2('0x19')](_0x4ea2('0x14'),auth[_0x4ea2('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xb455=['/:id','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','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','addTeams','put','update','delete'];(function(_0x516044,_0x3677f7){var _0x31684b=function(_0x80be21){while(--_0x80be21){_0x516044['push'](_0x516044['shift']());}};_0x31684b(++_0x3677f7);}(_0xb455,0xd0));var _0x5b45=function(_0x1338b4,_0x4be31b){_0x1338b4=_0x1338b4-0x0;var _0x3a1b7f=_0xb455[_0x1338b4];return _0x3a1b7f;};'use strict';var multer=require(_0x5b45('0x0'));var util=require('util');var path=require(_0x5b45('0x1'));var timeout=require(_0x5b45('0x2'));var express=require(_0x5b45('0x3'));var router=express['Router']();var fs_extra=require(_0x5b45('0x4'));var auth=require(_0x5b45('0x5'));var interaction=require(_0x5b45('0x6'));var config=require(_0x5b45('0x7'));var controller=require('./mailQueue.controller');router[_0x5b45('0x8')]('/',auth[_0x5b45('0x9')](),controller[_0x5b45('0xa')]);router[_0x5b45('0x8')]('/describe',auth[_0x5b45('0x9')](),controller[_0x5b45('0xb')]);router[_0x5b45('0x8')]('/:id',auth[_0x5b45('0x9')](),controller[_0x5b45('0xc')]);router[_0x5b45('0x8')](_0x5b45('0xd'),auth[_0x5b45('0x9')](),controller[_0x5b45('0xe')]);router[_0x5b45('0x8')](_0x5b45('0xf'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x10')]);router['get'](_0x5b45('0x11'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x12')]);router[_0x5b45('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/teams',auth[_0x5b45('0x9')](),controller[_0x5b45('0x14')]);router[_0x5b45('0x13')](_0x5b45('0x11'),auth[_0x5b45('0x9')](),controller['addAgents']);router[_0x5b45('0x15')]('/:id',auth[_0x5b45('0x9')](),controller[_0x5b45('0x16')]);router[_0x5b45('0x17')](_0x5b45('0x18'),auth[_0x5b45('0x9')](),controller[_0x5b45('0x19')]);router[_0x5b45('0x17')](_0x5b45('0xf'),auth['isAuthenticated'](),controller[_0x5b45('0x1a')]);router[_0x5b45('0x17')](_0x5b45('0x11'),auth['isAuthenticated'](),controller[_0x5b45('0x1b')]);module[_0x5b45('0x1c')]=router;
\ No newline at end of file
index f8f2e5b..bff38fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09f0=['beepall','roundrobin','STRING','name','ENUM','rrmemory'];(function(_0x1b936d,_0x46208f){var _0x308b07=function(_0x2b5fc1){while(--_0x2b5fc1){_0x1b936d['push'](_0x1b936d['shift']());}};_0x308b07(++_0x46208f);}(_0x09f0,0xb0));var _0x009f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x09f0[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x009f('0x0')],'unique':_0x009f('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x009f('0x0')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x009f('0x2')](_0x009f('0x3'),_0x009f('0x4'),_0x009f('0x5'))}};
\ No newline at end of file
+var _0x7b42=['name','INTEGER','ENUM','rrmemory','sequelize','STRING'];(function(_0x3176f1,_0xb3309){var _0x283aec=function(_0x1700dc){while(--_0x1700dc){_0x3176f1['push'](_0x3176f1['shift']());}};_0x283aec(++_0xb3309);}(_0x7b42,0x100));var _0x27b4=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x7b42[_0x30ae5e];return _0x1f2e93;};'use strict';var Sequelize=require(_0x27b4('0x0'));module['exports']={'name':{'type':Sequelize[_0x27b4('0x1')],'unique':_0x27b4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x27b4('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x27b4('0x4')](_0x27b4('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index f961861..05e9b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c1a=['push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','transaction','removeAgents','emit','userMailQueue:remove','addAgents','spread','userMailQueue:save','isArray','getAgents','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','MailQueues','UserProfileResource','destroy','error','name','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','find','create','body','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','UserMailQueue','order','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','Agents','voicePause','flatMap','sequelize','each','forEach','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?'];(function(_0x2cde0a,_0x1f9695){var _0x260610=function(_0x179089){while(--_0x179089){_0x2cde0a['push'](_0x2cde0a['shift']());}};_0x260610(++_0x1f9695);}(_0x8c1a,0x1ad));var _0xa8c1=function(_0x50e7e0,_0x5affce){_0x50e7e0=_0x50e7e0-0x0;var _0x1a0307=_0x8c1a[_0x50e7e0];return _0x1a0307;};'use strict';var emlformat=require(_0xa8c1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c1('0x1'));var rp=require(_0xa8c1('0x2'));var moment=require(_0xa8c1('0x3'));var BPromise=require(_0xa8c1('0x4'));var Mustache=require(_0xa8c1('0x5'));var util=require('util');var path=require('path');var sox=require(_0xa8c1('0x6'));var csv=require('to-csv');var ejs=require(_0xa8c1('0x7'));var fs=require('fs');var fs_extra=require(_0xa8c1('0x8'));var _=require('lodash');var squel=require(_0xa8c1('0x9'));var crypto=require(_0xa8c1('0xa'));var jsforce=require(_0xa8c1('0xb'));var deskjs=require(_0xa8c1('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa8c1('0xd'));var Redis=require(_0xa8c1('0xe'));var authService=require(_0xa8c1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8c1('0x10'));var logger=require(_0xa8c1('0x11'))(_0xa8c1('0x12'));var utils=require(_0xa8c1('0x13'));var config=require(_0xa8c1('0x14'));var licenseUtil=require(_0xa8c1('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xa8c1('0x16')](config[_0xa8c1('0x17')],{'host':_0xa8c1('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailQueue.socket')[_0xa8c1('0x19')](socket);function respondWithStatusCode(_0x2dc7d1,_0x107dcf){_0x107dcf=_0x107dcf||0xcc;return function(_0xef411){if(_0xef411){return _0x2dc7d1[_0xa8c1('0x1a')](_0x107dcf);}return _0x2dc7d1[_0xa8c1('0x1b')](_0x107dcf)[_0xa8c1('0x1c')]();};}function respondWithResult(_0x45fa46,_0xec32ea){_0xec32ea=_0xec32ea||0xc8;return function(_0x1fc231){if(_0x1fc231){return _0x45fa46[_0xa8c1('0x1b')](_0xec32ea)[_0xa8c1('0x1d')](_0x1fc231);}};}function respondWithFilteredResult(_0x47eb5f,_0x2fa82e){return function(_0x21ed41){if(_0x21ed41){var _0x4da316=typeof _0x2fa82e[_0xa8c1('0x1e')]===_0xa8c1('0x1f')&&typeof _0x2fa82e[_0xa8c1('0x20')]===_0xa8c1('0x1f');var _0x255f0a=_0x21ed41['count'];var _0x328c7f=_0x4da316?0x0:_0x2fa82e[_0xa8c1('0x1e')];var _0x178dab=_0x4da316?_0x21ed41[_0xa8c1('0x21')]:_0x2fa82e[_0xa8c1('0x1e')]+_0x2fa82e[_0xa8c1('0x20')];var _0xbde1f6;if(_0x178dab>=_0x255f0a){_0x178dab=_0x255f0a;_0xbde1f6=0xc8;}else{_0xbde1f6=0xce;}_0x47eb5f['status'](_0xbde1f6);return _0x47eb5f['set'](_0xa8c1('0x22'),_0x328c7f+'-'+_0x178dab+'/'+_0x255f0a)[_0xa8c1('0x1d')](_0x21ed41);}return null;};}function patchUpdates(_0xb2b7e2){return function(_0x21126e){try{jsonpatch[_0xa8c1('0x23')](_0x21126e,_0xb2b7e2,!![]);}catch(_0x28116f){return BPromise[_0xa8c1('0x24')](_0x28116f);}return _0x21126e[_0xa8c1('0x25')]();};}function saveUpdates(_0x4ca7f2,_0x474dee){return function(_0x1c036a){if(_0x1c036a){return _0x1c036a['update'](_0x4ca7f2)[_0xa8c1('0x26')](function(_0x148701){return _0x148701;});}return null;};}function removeEntity(_0x498650,_0x44ca53){return function(_0x3529dc){if(_0x3529dc){return _0x3529dc['destroy']()[_0xa8c1('0x26')](function(){var _0x143bce=_0x3529dc['get']({'plain':!![]});var _0x12ecd2=_0xa8c1('0x27');return db[_0xa8c1('0x28')][_0xa8c1('0x29')]({'where':{'type':_0x12ecd2,'resourceId':_0x143bce['id']}})[_0xa8c1('0x26')](function(){return _0x3529dc;});})[_0xa8c1('0x26')](function(){_0x498650[_0xa8c1('0x1b')](0xcc)[_0xa8c1('0x1c')]();});}};}function handleEntityNotFound(_0x43f252,_0x40b299){return function(_0x53314c){if(!_0x53314c){_0x43f252[_0xa8c1('0x1a')](0x194);}return _0x53314c;};}function handleError(_0x275653,_0x173806){_0x173806=_0x173806||0x1f4;return function(_0x1ff5a4){logger[_0xa8c1('0x2a')](_0x1ff5a4['stack']);if(_0x1ff5a4[_0xa8c1('0x2b')]){delete _0x1ff5a4[_0xa8c1('0x2b')];}_0x275653['status'](_0x173806)['send'](_0x1ff5a4);};}exports[_0xa8c1('0x2c')]=function(_0xe19f7c,_0x259f7e){var _0x3c3306={},_0x10644c={},_0x256482={'count':0x0,'rows':[]};var _0x104510=_[_0xa8c1('0x2d')](db[_0xa8c1('0x2e')][_0xa8c1('0x2f')],function(_0x5477d3){return{'name':_0x5477d3[_0xa8c1('0x30')],'type':_0x5477d3[_0xa8c1('0x31')][_0xa8c1('0x32')]};});_0x10644c[_0xa8c1('0x33')]=_[_0xa8c1('0x2d')](_0x104510,_0xa8c1('0x2b'));_0x10644c[_0xa8c1('0x34')]=_['keys'](_0xe19f7c[_0xa8c1('0x34')]);_0x10644c['filters']=_['intersection'](_0x10644c[_0xa8c1('0x33')],_0x10644c[_0xa8c1('0x34')]);_0x3c3306[_0xa8c1('0x35')]=_[_0xa8c1('0x36')](_0x10644c['model'],qs['fields'](_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x37')]));_0x3c3306['attributes']=_0x3c3306[_0xa8c1('0x35')][_0xa8c1('0x38')]?_0x3c3306[_0xa8c1('0x35')]:_0x10644c[_0xa8c1('0x33')];if(!_0xe19f7c['query'][_0xa8c1('0x39')](_0xa8c1('0x3a'))){_0x3c3306[_0xa8c1('0x20')]=qs[_0xa8c1('0x20')](_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x20')]);_0x3c3306[_0xa8c1('0x1e')]=qs['offset'](_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x1e')]);}_0x3c3306['order']=qs['sort'](_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x3b')]);_0x3c3306[_0xa8c1('0x3c')]=qs[_0xa8c1('0x3d')](_[_0xa8c1('0x3e')](_0xe19f7c[_0xa8c1('0x34')],_0x10644c['filters']),_0x104510);if(_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x3f')]){_0x3c3306[_0xa8c1('0x3c')]=_[_0xa8c1('0x40')](_0x3c3306[_0xa8c1('0x3c')],{'$or':_[_0xa8c1('0x2d')](_0x104510,function(_0x1f7797){if(_0x1f7797['type']!==_0xa8c1('0x41')){var _0xd20d97={};_0xd20d97[_0x1f7797['name']]={'$like':'%'+_0xe19f7c[_0xa8c1('0x34')][_0xa8c1('0x3f')]+'%'};return _0xd20d97;}})});}_0x3c3306=_['merge']({},_0x3c3306,_0xe19f7c[_0xa8c1('0x42')]);var _0x4e83a1={'where':_0x3c3306[_0xa8c1('0x3c')]};return db['MailQueue'][_0xa8c1('0x21')](_0x4e83a1)[_0xa8c1('0x26')](function(_0x4b668d){_0x256482['count']=_0x4b668d;if(_0xe19f7c['query'][_0xa8c1('0x43')]){_0x3c3306['include']=[{'all':!![]}];}return db['MailQueue'][_0xa8c1('0x44')](_0x3c3306);})[_0xa8c1('0x26')](function(_0xf1c0f1){_0x256482[_0xa8c1('0x45')]=_0xf1c0f1;return _0x256482;})[_0xa8c1('0x26')](respondWithFilteredResult(_0x259f7e,_0x3c3306))[_0xa8c1('0x46')](handleError(_0x259f7e,null));};exports[_0xa8c1('0x47')]=function(_0x209af4,_0x1a4dfb){var _0x263b64={'raw':!![],'where':{'id':_0x209af4[_0xa8c1('0x48')]['id']}},_0x157f72={};_0x157f72[_0xa8c1('0x33')]=_[_0xa8c1('0x49')](db[_0xa8c1('0x2e')][_0xa8c1('0x2f')]);_0x157f72[_0xa8c1('0x34')]=_[_0xa8c1('0x49')](_0x209af4[_0xa8c1('0x34')]);_0x157f72[_0xa8c1('0x3d')]=_[_0xa8c1('0x36')](_0x157f72[_0xa8c1('0x33')],_0x157f72['query']);_0x263b64['attributes']=_[_0xa8c1('0x36')](_0x157f72[_0xa8c1('0x33')],qs[_0xa8c1('0x37')](_0x209af4[_0xa8c1('0x34')]['fields']));_0x263b64[_0xa8c1('0x35')]=_0x263b64['attributes'][_0xa8c1('0x38')]?_0x263b64[_0xa8c1('0x35')]:_0x157f72[_0xa8c1('0x33')];if(_0x209af4[_0xa8c1('0x34')][_0xa8c1('0x43')]){_0x263b64['include']=[{'all':!![]}];}_0x263b64=_[_0xa8c1('0x40')]({},_0x263b64,_0x209af4[_0xa8c1('0x42')]);return db['MailQueue'][_0xa8c1('0x4a')](_0x263b64)[_0xa8c1('0x26')](handleEntityNotFound(_0x1a4dfb,null))['then'](respondWithResult(_0x1a4dfb,null))['catch'](handleError(_0x1a4dfb,null));};exports[_0xa8c1('0x4b')]=function(_0x2d9711,_0xe3f8f7){return db[_0xa8c1('0x2e')][_0xa8c1('0x4b')](_0x2d9711[_0xa8c1('0x4c')],{})['then'](function(_0x279eb1){var _0x333d00=_0x2d9711[_0xa8c1('0x4d')][_0xa8c1('0x4e')]({'plain':!![]});if(!_0x333d00)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x333d00['role']===_0xa8c1('0x4d')){var _0x22b94e=_0x279eb1[_0xa8c1('0x4e')]({'plain':!![]});var _0x118302=_0xa8c1('0x27');return db[_0xa8c1('0x4f')][_0xa8c1('0x4a')]({'where':{'name':_0x118302,'userProfileId':_0x333d00['userProfileId']},'raw':!![]})[_0xa8c1('0x26')](function(_0x16d555){if(_0x16d555&&_0x16d555[_0xa8c1('0x50')]===0x0){return db[_0xa8c1('0x28')]['create']({'name':_0x22b94e[_0xa8c1('0x2b')],'resourceId':_0x22b94e['id'],'type':_0x16d555[_0xa8c1('0x2b')],'sectionId':_0x16d555['id']},{})[_0xa8c1('0x26')](function(){return _0x279eb1;});}else{return _0x279eb1;}})[_0xa8c1('0x46')](function(_0x10bb22){logger['error'](_0xa8c1('0x51'),_0x10bb22);throw _0x10bb22;});}return _0x279eb1;})['then'](respondWithResult(_0xe3f8f7,0xc9))['catch'](handleError(_0xe3f8f7,null));};exports[_0xa8c1('0x52')]=function(_0x49843f,_0x3d3822){if(_0x49843f[_0xa8c1('0x4c')]['id']){delete _0x49843f[_0xa8c1('0x4c')]['id'];}return db['MailQueue']['find']({'where':{'id':_0x49843f[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](handleEntityNotFound(_0x3d3822,null))[_0xa8c1('0x26')](saveUpdates(_0x49843f['body'],null))['then'](respondWithResult(_0x3d3822,null))[_0xa8c1('0x46')](handleError(_0x3d3822,null));};exports[_0xa8c1('0x29')]=function(_0xdbf23c,_0x2d9138){return db[_0xa8c1('0x2e')][_0xa8c1('0x4a')]({'where':{'id':_0xdbf23c[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](handleEntityNotFound(_0x2d9138,null))[_0xa8c1('0x26')](removeEntity(_0x2d9138,null))[_0xa8c1('0x46')](handleError(_0x2d9138,null));};exports[_0xa8c1('0x53')]=function(_0x2def9d,_0x2c3080){return db['MailQueue'][_0xa8c1('0x53')]()[_0xa8c1('0x26')](respondWithResult(_0x2c3080,null))[_0xa8c1('0x46')](handleError(_0x2c3080,null));};exports[_0xa8c1('0x54')]=function(_0x3bf220,_0x330095,_0x333436){var _0x1b75a2={'raw':!![],'where':{}},_0x2e138a={},_0xb9eaf3;return db[_0xa8c1('0x2e')]['findOne']({'where':{'id':_0x3bf220[_0xa8c1('0x48')]['id']}})['then'](handleEntityNotFound(_0x330095,null))[_0xa8c1('0x26')](function(_0x175204){if(_0x175204){_0xb9eaf3=_0x175204[_0xa8c1('0x4e')]({'plain':!![]});_0x2e138a[_0xa8c1('0x33')]=_[_0xa8c1('0x49')](db[_0xa8c1('0x55')][_0xa8c1('0x2f')]);_0x2e138a[_0xa8c1('0x34')]=_[_0xa8c1('0x49')](_0x3bf220[_0xa8c1('0x34')]);_0x2e138a['filters']=_[_0xa8c1('0x36')](_0x2e138a[_0xa8c1('0x33')],_0x2e138a['query']);_0x1b75a2[_0xa8c1('0x35')]=_[_0xa8c1('0x36')](_0x2e138a[_0xa8c1('0x33')],qs[_0xa8c1('0x37')](_0x3bf220[_0xa8c1('0x34')]['fields']));_0x1b75a2[_0xa8c1('0x35')]=_0x1b75a2[_0xa8c1('0x35')][_0xa8c1('0x38')]?_0x1b75a2[_0xa8c1('0x35')]:_0x2e138a['model'];if(!_0x3bf220[_0xa8c1('0x34')][_0xa8c1('0x39')]('nolimit')){_0x1b75a2[_0xa8c1('0x20')]=qs[_0xa8c1('0x20')](_0x3bf220[_0xa8c1('0x34')]['limit']);_0x1b75a2[_0xa8c1('0x1e')]=qs[_0xa8c1('0x1e')](_0x3bf220[_0xa8c1('0x34')][_0xa8c1('0x1e')]);}_0x1b75a2[_0xa8c1('0x56')]=qs[_0xa8c1('0x3b')](_0x3bf220[_0xa8c1('0x34')]['sort']);_0x1b75a2[_0xa8c1('0x3c')]=qs['filters'](_[_0xa8c1('0x3e')](_0x3bf220['query'],_0x2e138a[_0xa8c1('0x3d')]));_0x1b75a2['where'][_0xa8c1('0x57')]=_0x175204['id'];if(_0x3bf220['query'][_0xa8c1('0x3f')]){_0x1b75a2[_0xa8c1('0x3c')]=_[_0xa8c1('0x40')](_0x1b75a2[_0xa8c1('0x3c')],{'$or':_['map'](_0x1b75a2[_0xa8c1('0x35')],function(_0x329c0f){var _0x48b5b0={};_0x48b5b0[_0x329c0f]={'$like':'%'+_0x3bf220[_0xa8c1('0x34')][_0xa8c1('0x3f')]+'%'};return _0x48b5b0;})});}_0x1b75a2=_[_0xa8c1('0x40')]({},_0x1b75a2,_0x3bf220[_0xa8c1('0x42')]);return db[_0xa8c1('0x55')][_0xa8c1('0x44')](_0x1b75a2);}})[_0xa8c1('0x26')](function(_0x385f1e){if(_0x385f1e){return db[_0xa8c1('0x58')][_0xa8c1('0x59')]({'where':{'id':_[_0xa8c1('0x2d')](_0x385f1e,_0xa8c1('0x5a')),'role':_0xa8c1('0x5b')},'attributes':['id',_0xa8c1('0x2b'),_0xa8c1('0x5c'),_0xa8c1('0x5d'),_0xa8c1('0x5e')]});}})['then'](function(_0x26efac){if(_0x26efac){return{'count':_0x26efac['count'],'rows':_[_0xa8c1('0x2d')](_0x26efac['rows'],function(_0x327096){return{'membername':_0x327096[_0xa8c1('0x2b')],'UserId':_0x327096['id'],'queue_name':_0xb9eaf3[_0xa8c1('0x2b')],'MailQueueId':_0xb9eaf3['id'],'interface':util[_0xa8c1('0x5f')](_0xa8c1('0x60'),_0xa8c1('0x61'),_0x327096[_0xa8c1('0x2b')]),'penalty':0x0,'paused':_0x327096['mailPause'],'createdAt':_0x327096['createdAt'],'updatedAt':_0x327096[_0xa8c1('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x330095,_0x1b75a2))[_0xa8c1('0x46')](handleError(_0x330095,null));};exports[_0xa8c1('0x62')]=function(_0x2aee62,_0x58b13c,_0x3a4d37){var _0xae3398={};var _0x7d646={};var _0x1078f3;var _0x35c79b;return db[_0xa8c1('0x2e')][_0xa8c1('0x63')]({'where':{'id':_0x2aee62[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](handleEntityNotFound(_0x58b13c,null))[_0xa8c1('0x26')](function(_0x33991a){if(_0x33991a){_0x1078f3=_0x33991a;_0x7d646[_0xa8c1('0x33')]=_[_0xa8c1('0x49')](db[_0xa8c1('0x64')][_0xa8c1('0x2f')]);_0x7d646['query']=_['keys'](_0x2aee62[_0xa8c1('0x34')]);_0x7d646[_0xa8c1('0x3d')]=_[_0xa8c1('0x36')](_0x7d646[_0xa8c1('0x33')],_0x7d646[_0xa8c1('0x34')]);_0xae3398[_0xa8c1('0x35')]=_[_0xa8c1('0x36')](_0x7d646['model'],qs['fields'](_0x2aee62[_0xa8c1('0x34')][_0xa8c1('0x37')]));_0xae3398['attributes']=_0xae3398[_0xa8c1('0x35')][_0xa8c1('0x38')]?_0xae3398[_0xa8c1('0x35')]:_0x7d646['model'];_0xae3398['order']=qs[_0xa8c1('0x3b')](_0x2aee62[_0xa8c1('0x34')][_0xa8c1('0x3b')]);_0xae3398[_0xa8c1('0x3c')]=qs[_0xa8c1('0x3d')](_[_0xa8c1('0x3e')](_0x2aee62[_0xa8c1('0x34')],_0x7d646['filters']));if(_0x2aee62['query'][_0xa8c1('0x3f')]){_0xae3398[_0xa8c1('0x3c')]=_[_0xa8c1('0x40')](_0xae3398[_0xa8c1('0x3c')],{'$or':_[_0xa8c1('0x2d')](_0xae3398[_0xa8c1('0x35')],function(_0x5ae4a1){var _0x1173d7={};_0x1173d7[_0x5ae4a1]={'$like':'%'+_0x2aee62[_0xa8c1('0x34')]['filter']+'%'};return _0x1173d7;})});}_0xae3398=_[_0xa8c1('0x40')]({},_0xae3398,_0x2aee62['options']);return _0x1078f3['getTeams'](_0xae3398);}})['then'](function(_0x363a3c){if(_0x363a3c){_0x35c79b=_0x363a3c[_0xa8c1('0x38')];if(!_0x2aee62[_0xa8c1('0x34')][_0xa8c1('0x39')](_0xa8c1('0x3a'))){_0xae3398[_0xa8c1('0x20')]=qs['limit'](_0x2aee62[_0xa8c1('0x34')][_0xa8c1('0x20')]);_0xae3398[_0xa8c1('0x1e')]=qs[_0xa8c1('0x1e')](_0x2aee62[_0xa8c1('0x34')][_0xa8c1('0x1e')]);}return _0x1078f3[_0xa8c1('0x62')](_0xae3398);}})[_0xa8c1('0x26')](function(_0x3ecd32){if(_0x3ecd32){return _0x3ecd32?{'count':_0x35c79b,'rows':_0x3ecd32}:null;}})['then'](respondWithResult(_0x58b13c,null))[_0xa8c1('0x46')](handleError(_0x58b13c,null));};exports[_0xa8c1('0x65')]=function(_0x3adea8,_0x2cf882,_0x5bb5fd){var _0x26c99e=_0x3adea8[_0xa8c1('0x4c')][_0xa8c1('0x66')];return db[_0xa8c1('0x64')]['findAll']({'where':{'id':_0x26c99e},'attributes':['id'],'include':[{'model':db[_0xa8c1('0x58')],'as':_0xa8c1('0x67'),'attributes':['id',_0xa8c1('0x2b'),'online',_0xa8c1('0x68'),'interface'],'raw':!![]}]})[_0xa8c1('0x26')](function(_0x1d19e3){if(_0x1d19e3){var _0x1c7dd3=_[_0xa8c1('0x69')](_0x1d19e3,function(_0x29e8ca){var _0x2f8004=_0x29e8ca[_0xa8c1('0x4e')]({'plain':!![]});return _0x2f8004[_0xa8c1('0x67')];});return db[_0xa8c1('0x2e')][_0xa8c1('0x4a')]({'where':{'id':_0x3adea8[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](function(_0x17cf3a){return db[_0xa8c1('0x6a')]['transaction'](function(_0x58c35c){return _0x17cf3a[_0xa8c1('0x65')](_0x26c99e,{'transaction':_0x58c35c})[_0xa8c1('0x26')](function(){return BPromise[_0xa8c1('0x6b')](_0x1c7dd3,function(_0x7cb2bd){return db[_0xa8c1('0x55')]['findOrCreate']({'where':{'UserId':_0x7cb2bd['id'],'MailQueueId':_0x3adea8[_0xa8c1('0x48')]['id']},'transaction':_0x58c35c});});})[_0xa8c1('0x26')](function(){_0x1c7dd3[_0xa8c1('0x6c')](function(_0x225237){socket['emit']('userMailQueue:save',{'UserId':_0x225237['id'],'MailQueueId':_0x17cf3a['id']});});});});});}})['then'](respondWithStatusCode(_0x2cf882,null))[_0xa8c1('0x46')](handleError(_0x2cf882,null));};exports[_0xa8c1('0x6d')]=function(_0x401204,_0x5c1db4,_0x4396bb){return db[_0xa8c1('0x64')]['findAll']({'where':{'id':_0x401204['query'][_0xa8c1('0x66')]},'attributes':['id'],'include':[{'model':db[_0xa8c1('0x58')],'as':_0xa8c1('0x67'),'attributes':['id'],'raw':!![]}]})[_0xa8c1('0x26')](handleEntityNotFound(_0x5c1db4,null))[_0xa8c1('0x26')](function(_0x31b6df){var _0x417523=_['map'](_0x31b6df,'id');var _0x1b761d=[];var _0x3789f5=[];var _0x191479=squel[_0xa8c1('0x6e')]();_0x191479['field'](_0xa8c1('0x6f'))[_0xa8c1('0x70')]('team_has_mail_queues','tq')[_0xa8c1('0x71')](_0xa8c1('0x72'),'ut',_0xa8c1('0x73'))[_0xa8c1('0x3c')](_0xa8c1('0x74'),_0x401204[_0xa8c1('0x48')]['id']);for(var _0x3ec9aa=0x0;_0x3ec9aa<_0x31b6df[_0xa8c1('0x38')];_0x3ec9aa+=0x1){let _0x3785fb=_0x31b6df[_0x3ec9aa];for(var _0x52fe94=0x0;_0x52fe94<_0x3785fb[_0xa8c1('0x67')][_0xa8c1('0x38')];_0x52fe94+=0x1){let _0x3b535e=_0x3785fb[_0xa8c1('0x67')][_0x52fe94];var _0x467b5e=_0x191479[_0xa8c1('0x75')]();_0x467b5e['where'](_0xa8c1('0x76'),_0x3b535e['id']);_0x3789f5[_0xa8c1('0x77')](db['sequelize'][_0xa8c1('0x34')](_0x467b5e[_0xa8c1('0x78')](),{'type':db[_0xa8c1('0x6a')][_0xa8c1('0x79')][_0xa8c1('0x7a')]})['then'](function(_0x21ce4a){if(_0x21ce4a[_0xa8c1('0x38')]===0x1){return _0x3b535e['id'];}else{var _0x1fe399=_[_0xa8c1('0x7b')](_[_0xa8c1('0x2d')](_0x21ce4a,_0xa8c1('0x7c')),function(_0x281f13){return _[_0xa8c1('0x7d')](_0x417523,_0x281f13);});if(_0x1fe399){return _0x3b535e['id'];}}}));}}return BPromise[_0xa8c1('0x7e')](_0x3789f5)[_0xa8c1('0x26')](function(_0x1f0fcb){_0x1b761d=_(_0x1b761d)[_0xa8c1('0x7f')](_0x1f0fcb)['compact']()['value']();return db[_0xa8c1('0x2e')][_0xa8c1('0x4a')]({'where':{'id':_0x401204[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](function(_0x162d41){return db[_0xa8c1('0x6a')][_0xa8c1('0x80')](function(_0x1c28c7){return _0x162d41[_0xa8c1('0x6d')](_0x401204[_0xa8c1('0x34')][_0xa8c1('0x66')],{'transaction':_0x1c28c7})[_0xa8c1('0x26')](function(){if(!_['isEmpty'](_0x1b761d)){return _0x162d41[_0xa8c1('0x81')](_0x1b761d,{'transaction':_0x1c28c7});}})[_0xa8c1('0x26')](function(){_0x1b761d[_0xa8c1('0x6c')](function(_0x2d1be4){socket[_0xa8c1('0x82')](_0xa8c1('0x83'),{'UserId':_0x2d1be4,'MailQueueId':_0x162d41['id']});});});});});});})['then'](respondWithStatusCode(_0x5c1db4,null))[_0xa8c1('0x46')](handleError(_0x5c1db4,null));};exports[_0xa8c1('0x84')]=function(_0x184039,_0x45ada5,_0x54bf9b){return db[_0xa8c1('0x2e')][_0xa8c1('0x4a')]({'where':{'id':_0x184039['params']['id']}})[_0xa8c1('0x26')](handleEntityNotFound(_0x45ada5,null))[_0xa8c1('0x26')](function(_0x38e033){if(_0x38e033){return _0x38e033[_0xa8c1('0x84')](_0x184039[_0xa8c1('0x4c')][_0xa8c1('0x66')],_['omit'](_0x184039[_0xa8c1('0x4c')],[_0xa8c1('0x66'),'id'])||{})[_0xa8c1('0x85')](function(_0x287928){for(var _0x1aad2e=0x0;_0x1aad2e<_0x184039[_0xa8c1('0x4c')]['ids']['length'];_0x1aad2e+=0x1){socket[_0xa8c1('0x82')](_0xa8c1('0x86'),{'UserId':Number(_0x184039[_0xa8c1('0x4c')][_0xa8c1('0x66')][_0x1aad2e]),'MailQueueId':Number(_0x184039[_0xa8c1('0x48')]['id'])});}return _0x287928;});}})['then'](respondWithResult(_0x45ada5,null))[_0xa8c1('0x46')](handleError(_0x45ada5,null));};exports['removeAgents']=function(_0x5abfba,_0xa25a8b,_0x5b77cb){return db[_0xa8c1('0x2e')][_0xa8c1('0x4a')]({'where':{'id':_0x5abfba[_0xa8c1('0x48')]['id']}})['then'](handleEntityNotFound(_0xa25a8b,null))[_0xa8c1('0x26')](function(_0x5292df){if(_0x5292df){return _0x5292df[_0xa8c1('0x81')](_0x5abfba[_0xa8c1('0x34')][_0xa8c1('0x66')])[_0xa8c1('0x26')](function(){if(_[_0xa8c1('0x87')](_0x5abfba[_0xa8c1('0x34')][_0xa8c1('0x66')])){for(var _0x10af01=0x0;_0x10af01<_0x5abfba[_0xa8c1('0x34')][_0xa8c1('0x66')][_0xa8c1('0x38')];_0x10af01+=0x1){socket[_0xa8c1('0x82')](_0xa8c1('0x83'),{'UserId':Number(_0x5abfba[_0xa8c1('0x34')][_0xa8c1('0x66')][_0x10af01]),'MailQueueId':Number(_0x5abfba[_0xa8c1('0x48')]['id'])});}}else{socket['emit'](_0xa8c1('0x83'),{'UserId':Number(_0x5abfba['query'][_0xa8c1('0x66')]),'MailQueueId':Number(_0x5abfba[_0xa8c1('0x48')]['id'])});}});}})[_0xa8c1('0x26')](respondWithStatusCode(_0xa25a8b,null))[_0xa8c1('0x46')](handleError(_0xa25a8b,null));};exports[_0xa8c1('0x88')]=function(_0xbf5e24,_0xd009d7,_0x217bbf){var _0x1e6fe3={};var _0x50357c={};var _0x212a24;var _0x42be61;return db[_0xa8c1('0x2e')][_0xa8c1('0x63')]({'where':{'id':_0xbf5e24[_0xa8c1('0x48')]['id']}})[_0xa8c1('0x26')](handleEntityNotFound(_0xd009d7,null))[_0xa8c1('0x26')](function(_0x4e5bdc){if(_0x4e5bdc){_0x212a24=_0x4e5bdc;_0x50357c['model']=_[_0xa8c1('0x49')](db[_0xa8c1('0x58')]['rawAttributes']);_0x50357c['query']=_[_0xa8c1('0x49')](_0xbf5e24[_0xa8c1('0x34')]);_0x50357c[_0xa8c1('0x3d')]=_[_0xa8c1('0x36')](_0x50357c[_0xa8c1('0x33')],_0x50357c[_0xa8c1('0x34')]);_0x1e6fe3[_0xa8c1('0x35')]=_[_0xa8c1('0x36')](_0x50357c['model'],qs['fields'](_0xbf5e24[_0xa8c1('0x34')]['fields']));_0x1e6fe3['attributes']=_0x1e6fe3[_0xa8c1('0x35')][_0xa8c1('0x38')]?_0x1e6fe3['attributes']:_0x50357c[_0xa8c1('0x33')];_0x1e6fe3['order']=qs[_0xa8c1('0x3b')](_0xbf5e24['query']['sort']);_0x1e6fe3[_0xa8c1('0x3c')]=qs[_0xa8c1('0x3d')](_['pick'](_0xbf5e24['query'],_0x50357c['filters']));if(_0xbf5e24[_0xa8c1('0x34')][_0xa8c1('0x3f')]){_0x1e6fe3[_0xa8c1('0x3c')]=_[_0xa8c1('0x40')](_0x1e6fe3[_0xa8c1('0x3c')],{'$or':_[_0xa8c1('0x2d')](_0x1e6fe3[_0xa8c1('0x35')],function(_0x32cb7c){var _0x89befd={};_0x89befd[_0x32cb7c]={'$like':'%'+_0xbf5e24[_0xa8c1('0x34')][_0xa8c1('0x3f')]+'%'};return _0x89befd;})});}_0x1e6fe3=_[_0xa8c1('0x40')]({},_0x1e6fe3,_0xbf5e24[_0xa8c1('0x42')]);return _0x212a24[_0xa8c1('0x88')](_0x1e6fe3);}})[_0xa8c1('0x26')](function(_0x5947bc){if(_0x5947bc){_0x42be61=_0x5947bc[_0xa8c1('0x38')];if(!_0xbf5e24['query'][_0xa8c1('0x39')](_0xa8c1('0x3a'))){_0x1e6fe3[_0xa8c1('0x20')]=qs[_0xa8c1('0x20')](_0xbf5e24['query'][_0xa8c1('0x20')]);_0x1e6fe3[_0xa8c1('0x1e')]=qs[_0xa8c1('0x1e')](_0xbf5e24[_0xa8c1('0x34')][_0xa8c1('0x1e')]);}return _0x212a24['getAgents'](_0x1e6fe3);}})['then'](function(_0x6d3c5f){if(_0x6d3c5f){return _0x6d3c5f?{'count':_0x42be61,'rows':_0x6d3c5f}:null;}})['then'](respondWithResult(_0xd009d7,null))[_0xa8c1('0x46')](handleError(_0xd009d7,null));};
\ No newline at end of file
+var _0x8cec=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','end','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','get','UserProfileResource','destroy','error','name','send','map','MailQueue','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','type','options','includeAll','include','findAll','rows','params','catch','create','body','user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','UserMailQueue','order','pick','filter','User','findAndCountAll','UserId','agent','mailPause','updatedAt','format','%s/%s','getTeams','addTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','all','union','compact','isEmpty','removeAgents','userMailQueue:remove','addAgents','isArray','getAgents','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x667081,_0x1d02b8){var _0x1c1e88=function(_0x4231c2){while(--_0x4231c2){_0x667081['push'](_0x667081['shift']());}};_0x1c1e88(++_0x1d02b8);}(_0x8cec,0x104));var _0xc8ce=function(_0x4149dd,_0xc0f8be){_0x4149dd=_0x4149dd-0x0;var _0x44b890=_0x8cec[_0x4149dd];return _0x44b890;};'use strict';var emlformat=require(_0xc8ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc8ce('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc8ce('0x2'));var BPromise=require(_0xc8ce('0x3'));var Mustache=require(_0xc8ce('0x4'));var util=require(_0xc8ce('0x5'));var path=require(_0xc8ce('0x6'));var sox=require(_0xc8ce('0x7'));var csv=require(_0xc8ce('0x8'));var ejs=require(_0xc8ce('0x9'));var fs=require('fs');var fs_extra=require(_0xc8ce('0xa'));var _=require(_0xc8ce('0xb'));var squel=require(_0xc8ce('0xc'));var crypto=require(_0xc8ce('0xd'));var jsforce=require(_0xc8ce('0xe'));var deskjs=require(_0xc8ce('0xf'));var toCsv=require(_0xc8ce('0x8'));var querystring=require(_0xc8ce('0x10'));var Papa=require(_0xc8ce('0x11'));var Redis=require(_0xc8ce('0x12'));var authService=require(_0xc8ce('0x13'));var qs=require(_0xc8ce('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8ce('0x15'))(_0xc8ce('0x16'));var utils=require(_0xc8ce('0x17'));var config=require(_0xc8ce('0x18'));var licenseUtil=require(_0xc8ce('0x19'));var db=require(_0xc8ce('0x1a'))['db'];config[_0xc8ce('0x1b')]=_[_0xc8ce('0x1c')](config['redis'],{'host':_0xc8ce('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailQueue.socket')['register'](socket);function respondWithStatusCode(_0x546459,_0x24c275){_0x24c275=_0x24c275||0xcc;return function(_0x14e005){if(_0x14e005){return _0x546459['sendStatus'](_0x24c275);}return _0x546459['status'](_0x24c275)[_0xc8ce('0x1e')]();};}function respondWithResult(_0x2268f7,_0x228659){_0x228659=_0x228659||0xc8;return function(_0x2ea21b){if(_0x2ea21b){return _0x2268f7[_0xc8ce('0x1f')](_0x228659)['json'](_0x2ea21b);}};}function respondWithFilteredResult(_0x5b3e35,_0x259faf){return function(_0x4afb66){if(_0x4afb66){var _0x5792a0=typeof _0x259faf['offset']===_0xc8ce('0x20')&&typeof _0x259faf[_0xc8ce('0x21')]==='undefined';var _0x450864=_0x4afb66['count'];var _0x5603f5=_0x5792a0?0x0:_0x259faf[_0xc8ce('0x22')];var _0x19ddaa=_0x5792a0?_0x4afb66[_0xc8ce('0x23')]:_0x259faf[_0xc8ce('0x22')]+_0x259faf[_0xc8ce('0x21')];var _0x7baee0;if(_0x19ddaa>=_0x450864){_0x19ddaa=_0x450864;_0x7baee0=0xc8;}else{_0x7baee0=0xce;}_0x5b3e35[_0xc8ce('0x1f')](_0x7baee0);return _0x5b3e35[_0xc8ce('0x24')](_0xc8ce('0x25'),_0x5603f5+'-'+_0x19ddaa+'/'+_0x450864)[_0xc8ce('0x26')](_0x4afb66);}return null;};}function patchUpdates(_0x2ccb60){return function(_0x34dbed){try{jsonpatch[_0xc8ce('0x27')](_0x34dbed,_0x2ccb60,!![]);}catch(_0x405fab){return BPromise[_0xc8ce('0x28')](_0x405fab);}return _0x34dbed[_0xc8ce('0x29')]();};}function saveUpdates(_0x3ca477,_0x711fc0){return function(_0x2f6847){if(_0x2f6847){return _0x2f6847['update'](_0x3ca477)['then'](function(_0x221824){return _0x221824;});}return null;};}function removeEntity(_0x3691b1,_0xe1c50b){return function(_0x5648e8){if(_0x5648e8){return _0x5648e8['destroy']()[_0xc8ce('0x2a')](function(){var _0x4bac49=_0x5648e8[_0xc8ce('0x2b')]({'plain':!![]});var _0x51c9c9='MailQueues';return db[_0xc8ce('0x2c')][_0xc8ce('0x2d')]({'where':{'type':_0x51c9c9,'resourceId':_0x4bac49['id']}})[_0xc8ce('0x2a')](function(){return _0x5648e8;});})[_0xc8ce('0x2a')](function(){_0x3691b1[_0xc8ce('0x1f')](0xcc)[_0xc8ce('0x1e')]();});}};}function handleEntityNotFound(_0xa6530d,_0x3ed015){return function(_0xdf7458){if(!_0xdf7458){_0xa6530d['sendStatus'](0x194);}return _0xdf7458;};}function handleError(_0x3aca53,_0x850a5c){_0x850a5c=_0x850a5c||0x1f4;return function(_0x2ad516){logger[_0xc8ce('0x2e')](_0x2ad516['stack']);if(_0x2ad516[_0xc8ce('0x2f')]){delete _0x2ad516['name'];}_0x3aca53[_0xc8ce('0x1f')](_0x850a5c)[_0xc8ce('0x30')](_0x2ad516);};}exports['index']=function(_0x46c2a9,_0x44ca51){var _0x24b62b={},_0x1979b1={},_0xa2f5f1={'count':0x0,'rows':[]};var _0x3d7ccf=_[_0xc8ce('0x31')](db[_0xc8ce('0x32')][_0xc8ce('0x33')],function(_0x10fec6){return{'name':_0x10fec6['fieldName'],'type':_0x10fec6['type'][_0xc8ce('0x34')]};});_0x1979b1[_0xc8ce('0x35')]=_[_0xc8ce('0x31')](_0x3d7ccf,'name');_0x1979b1[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x46c2a9[_0xc8ce('0x36')]);_0x1979b1[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x1979b1[_0xc8ce('0x35')],_0x1979b1['query']);_0x24b62b['attributes']=_[_0xc8ce('0x39')](_0x1979b1[_0xc8ce('0x35')],qs['fields'](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x24b62b[_0xc8ce('0x3b')]=_0x24b62b[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x24b62b[_0xc8ce('0x3b')]:_0x1979b1[_0xc8ce('0x35')];if(!_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x24b62b['limit']=qs[_0xc8ce('0x21')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x24b62b[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x22')]);}_0x24b62b['order']=qs[_0xc8ce('0x3f')](_0x46c2a9[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x24b62b[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_['pick'](_0x46c2a9[_0xc8ce('0x36')],_0x1979b1[_0xc8ce('0x38')]),_0x3d7ccf);if(_0x46c2a9[_0xc8ce('0x36')]['filter']){_0x24b62b['where']=_[_0xc8ce('0x41')](_0x24b62b[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x3d7ccf,function(_0x37eea7){if(_0x37eea7[_0xc8ce('0x42')]!=='VIRTUAL'){var _0x28cc92={};_0x28cc92[_0x37eea7[_0xc8ce('0x2f')]]={'$like':'%'+_0x46c2a9['query']['filter']+'%'};return _0x28cc92;}})});}_0x24b62b=_[_0xc8ce('0x41')]({},_0x24b62b,_0x46c2a9[_0xc8ce('0x43')]);var _0x264597={'where':_0x24b62b['where']};return db[_0xc8ce('0x32')][_0xc8ce('0x23')](_0x264597)[_0xc8ce('0x2a')](function(_0xfce7b5){_0xa2f5f1[_0xc8ce('0x23')]=_0xfce7b5;if(_0x46c2a9['query'][_0xc8ce('0x44')]){_0x24b62b[_0xc8ce('0x45')]=[{'all':!![]}];}return db['MailQueue'][_0xc8ce('0x46')](_0x24b62b);})[_0xc8ce('0x2a')](function(_0x5f05ea){_0xa2f5f1[_0xc8ce('0x47')]=_0x5f05ea;return _0xa2f5f1;})[_0xc8ce('0x2a')](respondWithFilteredResult(_0x44ca51,_0x24b62b))['catch'](handleError(_0x44ca51,null));};exports['show']=function(_0x250bad,_0x5ce96f){var _0x3bafc1={'raw':!![],'where':{'id':_0x250bad[_0xc8ce('0x48')]['id']}},_0x7d2bd0={};_0x7d2bd0[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x32')][_0xc8ce('0x33')]);_0x7d2bd0[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x250bad[_0xc8ce('0x36')]);_0x7d2bd0[_0xc8ce('0x38')]=_['intersection'](_0x7d2bd0[_0xc8ce('0x35')],_0x7d2bd0[_0xc8ce('0x36')]);_0x3bafc1[_0xc8ce('0x3b')]=_['intersection'](_0x7d2bd0[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x250bad[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x3bafc1['attributes']=_0x3bafc1[_0xc8ce('0x3b')]['length']?_0x3bafc1[_0xc8ce('0x3b')]:_0x7d2bd0['model'];if(_0x250bad[_0xc8ce('0x36')][_0xc8ce('0x44')]){_0x3bafc1[_0xc8ce('0x45')]=[{'all':!![]}];}_0x3bafc1=_['merge']({},_0x3bafc1,_0x250bad['options']);return db['MailQueue']['find'](_0x3bafc1)['then'](handleEntityNotFound(_0x5ce96f,null))[_0xc8ce('0x2a')](respondWithResult(_0x5ce96f,null))[_0xc8ce('0x49')](handleError(_0x5ce96f,null));};exports[_0xc8ce('0x4a')]=function(_0x323b95,_0x488d78){return db[_0xc8ce('0x32')]['create'](_0x323b95[_0xc8ce('0x4b')],{})[_0xc8ce('0x2a')](function(_0x35e625){var _0xb2cce1=_0x323b95[_0xc8ce('0x4c')]['get']({'plain':!![]});if(!_0xb2cce1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb2cce1[_0xc8ce('0x4d')]===_0xc8ce('0x4c')){var _0x1dddb2=_0x35e625[_0xc8ce('0x2b')]({'plain':!![]});var _0x120054='MailQueues';return db[_0xc8ce('0x4e')][_0xc8ce('0x4f')]({'where':{'name':_0x120054,'userProfileId':_0xb2cce1[_0xc8ce('0x50')]},'raw':!![]})[_0xc8ce('0x2a')](function(_0x2cbcc4){if(_0x2cbcc4&&_0x2cbcc4['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x1dddb2[_0xc8ce('0x2f')],'resourceId':_0x1dddb2['id'],'type':_0x2cbcc4[_0xc8ce('0x2f')],'sectionId':_0x2cbcc4['id']},{})[_0xc8ce('0x2a')](function(){return _0x35e625;});}else{return _0x35e625;}})[_0xc8ce('0x49')](function(_0x4e0690){logger[_0xc8ce('0x2e')](_0xc8ce('0x51'),_0x4e0690);throw _0x4e0690;});}return _0x35e625;})[_0xc8ce('0x2a')](respondWithResult(_0x488d78,0xc9))['catch'](handleError(_0x488d78,null));};exports[_0xc8ce('0x52')]=function(_0xb18f5,_0x3a88b3){if(_0xb18f5[_0xc8ce('0x4b')]['id']){delete _0xb18f5[_0xc8ce('0x4b')]['id'];}return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0xb18f5['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x3a88b3,null))[_0xc8ce('0x2a')](saveUpdates(_0xb18f5[_0xc8ce('0x4b')],null))['then'](respondWithResult(_0x3a88b3,null))['catch'](handleError(_0x3a88b3,null));};exports[_0xc8ce('0x2d')]=function(_0x583b29,_0x8be81){return db[_0xc8ce('0x32')]['find']({'where':{'id':_0x583b29[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x8be81,null))['then'](removeEntity(_0x8be81,null))[_0xc8ce('0x49')](handleError(_0x8be81,null));};exports['describe']=function(_0x5b2f39,_0x55eb67){return db[_0xc8ce('0x32')][_0xc8ce('0x53')]()['then'](respondWithResult(_0x55eb67,null))[_0xc8ce('0x49')](handleError(_0x55eb67,null));};exports[_0xc8ce('0x54')]=function(_0x1b6733,_0x13a785,_0x36f02f){var _0x5abeac={'raw':!![],'where':{}},_0x170a3f={},_0x30f4d2;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x1b6733['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x13a785,null))[_0xc8ce('0x2a')](function(_0x3b2498){if(_0x3b2498){_0x30f4d2=_0x3b2498[_0xc8ce('0x2b')]({'plain':!![]});_0x170a3f[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x55')][_0xc8ce('0x33')]);_0x170a3f[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x1b6733[_0xc8ce('0x36')]);_0x170a3f[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x170a3f[_0xc8ce('0x35')],_0x170a3f['query']);_0x5abeac[_0xc8ce('0x3b')]=_[_0xc8ce('0x39')](_0x170a3f[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x1b6733['query'][_0xc8ce('0x3a')]));_0x5abeac[_0xc8ce('0x3b')]=_0x5abeac[_0xc8ce('0x3b')]['length']?_0x5abeac['attributes']:_0x170a3f[_0xc8ce('0x35')];if(!_0x1b6733[_0xc8ce('0x36')]['hasOwnProperty'](_0xc8ce('0x3e'))){_0x5abeac[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x5abeac[_0xc8ce('0x22')]=qs['offset'](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x22')]);}_0x5abeac[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x1b6733[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x5abeac[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x1b6733[_0xc8ce('0x36')],_0x170a3f[_0xc8ce('0x38')]));_0x5abeac[_0xc8ce('0x40')]['MailQueueId']=_0x3b2498['id'];if(_0x1b6733['query'][_0xc8ce('0x58')]){_0x5abeac[_0xc8ce('0x40')]=_[_0xc8ce('0x41')](_0x5abeac[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x5abeac['attributes'],function(_0x339659){var _0x3b5597={};_0x3b5597[_0x339659]={'$like':'%'+_0x1b6733['query']['filter']+'%'};return _0x3b5597;})});}_0x5abeac=_['merge']({},_0x5abeac,_0x1b6733[_0xc8ce('0x43')]);return db[_0xc8ce('0x55')]['findAll'](_0x5abeac);}})[_0xc8ce('0x2a')](function(_0xd54c1){if(_0xd54c1){return db[_0xc8ce('0x59')][_0xc8ce('0x5a')]({'where':{'id':_[_0xc8ce('0x31')](_0xd54c1,_0xc8ce('0x5b')),'role':_0xc8ce('0x5c')},'attributes':['id',_0xc8ce('0x2f'),_0xc8ce('0x5d'),_0xc8ce('0x5e'),'createdAt']});}})['then'](function(_0xc41195){if(_0xc41195){return{'count':_0xc41195[_0xc8ce('0x23')],'rows':_[_0xc8ce('0x31')](_0xc41195[_0xc8ce('0x47')],function(_0x21a791){return{'membername':_0x21a791[_0xc8ce('0x2f')],'UserId':_0x21a791['id'],'queue_name':_0x30f4d2['name'],'MailQueueId':_0x30f4d2['id'],'interface':util[_0xc8ce('0x5f')](_0xc8ce('0x60'),'SIP',_0x21a791[_0xc8ce('0x2f')]),'penalty':0x0,'paused':_0x21a791[_0xc8ce('0x5d')],'createdAt':_0x21a791['createdAt'],'updatedAt':_0x21a791['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xc8ce('0x2a')](respondWithFilteredResult(_0x13a785,_0x5abeac))[_0xc8ce('0x49')](handleError(_0x13a785,null));};exports[_0xc8ce('0x61')]=function(_0x50b55d,_0x6b759d,_0x507a20){var _0x140cd7={};var _0x56e079={};var _0x4e5c6d;var _0x4fbf30;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x50b55d[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x6b759d,null))['then'](function(_0x1894bb){if(_0x1894bb){_0x4e5c6d=_0x1894bb;_0x56e079['model']=_[_0xc8ce('0x37')](db['Team'][_0xc8ce('0x33')]);_0x56e079[_0xc8ce('0x36')]=_[_0xc8ce('0x37')](_0x50b55d[_0xc8ce('0x36')]);_0x56e079['filters']=_[_0xc8ce('0x39')](_0x56e079[_0xc8ce('0x35')],_0x56e079[_0xc8ce('0x36')]);_0x140cd7[_0xc8ce('0x3b')]=_['intersection'](_0x56e079[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x140cd7[_0xc8ce('0x3b')]=_0x140cd7[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x140cd7[_0xc8ce('0x3b')]:_0x56e079[_0xc8ce('0x35')];_0x140cd7[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3f')]);_0x140cd7[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x50b55d['query'],_0x56e079[_0xc8ce('0x38')]));if(_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x58')]){_0x140cd7[_0xc8ce('0x40')]=_['merge'](_0x140cd7[_0xc8ce('0x40')],{'$or':_[_0xc8ce('0x31')](_0x140cd7[_0xc8ce('0x3b')],function(_0x1f02ef){var _0x149064={};_0x149064[_0x1f02ef]={'$like':'%'+_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x58')]+'%'};return _0x149064;})});}_0x140cd7=_[_0xc8ce('0x41')]({},_0x140cd7,_0x50b55d[_0xc8ce('0x43')]);return _0x4e5c6d[_0xc8ce('0x61')](_0x140cd7);}})[_0xc8ce('0x2a')](function(_0x39bac3){if(_0x39bac3){_0x4fbf30=_0x39bac3[_0xc8ce('0x3c')];if(!_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x140cd7[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x50b55d['query']['limit']);_0x140cd7[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x50b55d[_0xc8ce('0x36')][_0xc8ce('0x22')]);}return _0x4e5c6d['getTeams'](_0x140cd7);}})['then'](function(_0x51dda2){if(_0x51dda2){return _0x51dda2?{'count':_0x4fbf30,'rows':_0x51dda2}:null;}})['then'](respondWithResult(_0x6b759d,null))[_0xc8ce('0x49')](handleError(_0x6b759d,null));};exports[_0xc8ce('0x62')]=function(_0x2bfc34,_0x21e0da,_0x2c68e8){var _0x2802e1=_0x2bfc34[_0xc8ce('0x4b')][_0xc8ce('0x63')];return db[_0xc8ce('0x64')][_0xc8ce('0x46')]({'where':{'id':_0x2802e1},'attributes':['id'],'include':[{'model':db[_0xc8ce('0x59')],'as':_0xc8ce('0x65'),'attributes':['id',_0xc8ce('0x2f'),'online',_0xc8ce('0x66'),_0xc8ce('0x67')],'raw':!![]}]})['then'](function(_0x2c4229){if(_0x2c4229){var _0xec18db=_[_0xc8ce('0x68')](_0x2c4229,function(_0x34a133){var _0xa56a43=_0x34a133['get']({'plain':!![]});return _0xa56a43['Agents'];});return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0x2bfc34[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](function(_0x488385){return db[_0xc8ce('0x69')][_0xc8ce('0x6a')](function(_0x40a1f3){return _0x488385[_0xc8ce('0x62')](_0x2802e1,{'transaction':_0x40a1f3})[_0xc8ce('0x2a')](function(){return BPromise[_0xc8ce('0x6b')](_0xec18db,function(_0x4610be){return db[_0xc8ce('0x55')][_0xc8ce('0x6c')]({'where':{'UserId':_0x4610be['id'],'MailQueueId':_0x2bfc34['params']['id']},'transaction':_0x40a1f3});});})[_0xc8ce('0x2a')](function(){_0xec18db[_0xc8ce('0x6d')](function(_0x2d4006){socket[_0xc8ce('0x6e')](_0xc8ce('0x6f'),{'UserId':_0x2d4006['id'],'MailQueueId':_0x488385['id']});});});});});}})[_0xc8ce('0x2a')](respondWithStatusCode(_0x21e0da,null))[_0xc8ce('0x49')](handleError(_0x21e0da,null));};exports[_0xc8ce('0x70')]=function(_0x1f4cc8,_0x8c49f0,_0x1b3089){return db[_0xc8ce('0x64')][_0xc8ce('0x46')]({'where':{'id':_0x1f4cc8['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xc8ce('0x59')],'as':_0xc8ce('0x65'),'attributes':['id'],'raw':!![]}]})[_0xc8ce('0x2a')](handleEntityNotFound(_0x8c49f0,null))[_0xc8ce('0x2a')](function(_0x563824){var _0x777197=_[_0xc8ce('0x31')](_0x563824,'id');var _0x4ee2d0=[];var _0x5a5029=[];var _0x3327f9=squel[_0xc8ce('0x71')]();_0x3327f9[_0xc8ce('0x72')](_0xc8ce('0x73'))[_0xc8ce('0x74')](_0xc8ce('0x75'),'tq')[_0xc8ce('0x76')](_0xc8ce('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xc8ce('0x78'),_0x1f4cc8[_0xc8ce('0x48')]['id']);for(var _0x42cd18=0x0;_0x42cd18<_0x563824['length'];_0x42cd18+=0x1){let _0x43caa0=_0x563824[_0x42cd18];for(var _0x16b252=0x0;_0x16b252<_0x43caa0[_0xc8ce('0x65')][_0xc8ce('0x3c')];_0x16b252+=0x1){let _0x424e4f=_0x43caa0['Agents'][_0x16b252];var _0x3f681b=_0x3327f9[_0xc8ce('0x79')]();_0x3f681b[_0xc8ce('0x40')]('ut.UserId\x20=\x20?',_0x424e4f['id']);_0x5a5029[_0xc8ce('0x7a')](db[_0xc8ce('0x69')]['query'](_0x3f681b['toString'](),{'type':db[_0xc8ce('0x69')][_0xc8ce('0x7b')][_0xc8ce('0x7c')]})[_0xc8ce('0x2a')](function(_0x5f0752){if(_0x5f0752[_0xc8ce('0x3c')]===0x1){return _0x424e4f['id'];}else{var _0x2b9537=_[_0xc8ce('0x7d')](_[_0xc8ce('0x31')](_0x5f0752,_0xc8ce('0x7e')),function(_0x46b09f){return _['includes'](_0x777197,_0x46b09f);});if(_0x2b9537){return _0x424e4f['id'];}}}));}}return BPromise[_0xc8ce('0x7f')](_0x5a5029)[_0xc8ce('0x2a')](function(_0x35de64){_0x4ee2d0=_(_0x4ee2d0)[_0xc8ce('0x80')](_0x35de64)[_0xc8ce('0x81')]()['value']();return db[_0xc8ce('0x32')][_0xc8ce('0x4f')]({'where':{'id':_0x1f4cc8[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](function(_0x3cfa44){return db[_0xc8ce('0x69')][_0xc8ce('0x6a')](function(_0x5215e5){return _0x3cfa44[_0xc8ce('0x70')](_0x1f4cc8[_0xc8ce('0x36')][_0xc8ce('0x63')],{'transaction':_0x5215e5})[_0xc8ce('0x2a')](function(){if(!_[_0xc8ce('0x82')](_0x4ee2d0)){return _0x3cfa44[_0xc8ce('0x83')](_0x4ee2d0,{'transaction':_0x5215e5});}})['then'](function(){_0x4ee2d0[_0xc8ce('0x6d')](function(_0x20a18c){socket[_0xc8ce('0x6e')](_0xc8ce('0x84'),{'UserId':_0x20a18c,'MailQueueId':_0x3cfa44['id']});});});});});});})[_0xc8ce('0x2a')](respondWithStatusCode(_0x8c49f0,null))['catch'](handleError(_0x8c49f0,null));};exports[_0xc8ce('0x85')]=function(_0x48fd8e,_0x331fd9,_0x547263){return db['MailQueue'][_0xc8ce('0x4f')]({'where':{'id':_0x48fd8e[_0xc8ce('0x48')]['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x331fd9,null))['then'](function(_0x311cdd){if(_0x311cdd){return _0x311cdd['addAgents'](_0x48fd8e[_0xc8ce('0x4b')][_0xc8ce('0x63')],_['omit'](_0x48fd8e[_0xc8ce('0x4b')],[_0xc8ce('0x63'),'id'])||{})['spread'](function(_0x223baf){for(var _0x45bd6b=0x0;_0x45bd6b<_0x48fd8e['body']['ids'][_0xc8ce('0x3c')];_0x45bd6b+=0x1){socket[_0xc8ce('0x6e')](_0xc8ce('0x6f'),{'UserId':Number(_0x48fd8e['body'][_0xc8ce('0x63')][_0x45bd6b]),'MailQueueId':Number(_0x48fd8e[_0xc8ce('0x48')]['id'])});}return _0x223baf;});}})[_0xc8ce('0x2a')](respondWithResult(_0x331fd9,null))[_0xc8ce('0x49')](handleError(_0x331fd9,null));};exports['removeAgents']=function(_0x4b9de2,_0x11709c,_0x4711d5){return db['MailQueue'][_0xc8ce('0x4f')]({'where':{'id':_0x4b9de2['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x11709c,null))[_0xc8ce('0x2a')](function(_0x52c843){if(_0x52c843){return _0x52c843[_0xc8ce('0x83')](_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')])[_0xc8ce('0x2a')](function(){if(_[_0xc8ce('0x86')](_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')])){for(var _0x437a1e=0x0;_0x437a1e<_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')]['length'];_0x437a1e+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x4b9de2[_0xc8ce('0x36')]['ids'][_0x437a1e]),'MailQueueId':Number(_0x4b9de2[_0xc8ce('0x48')]['id'])});}}else{socket[_0xc8ce('0x6e')](_0xc8ce('0x84'),{'UserId':Number(_0x4b9de2[_0xc8ce('0x36')][_0xc8ce('0x63')]),'MailQueueId':Number(_0x4b9de2[_0xc8ce('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x11709c,null))[_0xc8ce('0x49')](handleError(_0x11709c,null));};exports[_0xc8ce('0x87')]=function(_0x21cfb7,_0x342968,_0x3ba5d4){var _0x14e6a4={};var _0x457b53={};var _0x35fa19;var _0x2a7b3b;return db[_0xc8ce('0x32')]['findOne']({'where':{'id':_0x21cfb7['params']['id']}})[_0xc8ce('0x2a')](handleEntityNotFound(_0x342968,null))[_0xc8ce('0x2a')](function(_0x1889bc){if(_0x1889bc){_0x35fa19=_0x1889bc;_0x457b53[_0xc8ce('0x35')]=_[_0xc8ce('0x37')](db[_0xc8ce('0x59')]['rawAttributes']);_0x457b53[_0xc8ce('0x36')]=_['keys'](_0x21cfb7[_0xc8ce('0x36')]);_0x457b53[_0xc8ce('0x38')]=_[_0xc8ce('0x39')](_0x457b53['model'],_0x457b53[_0xc8ce('0x36')]);_0x14e6a4[_0xc8ce('0x3b')]=_[_0xc8ce('0x39')](_0x457b53[_0xc8ce('0x35')],qs[_0xc8ce('0x3a')](_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x3a')]));_0x14e6a4[_0xc8ce('0x3b')]=_0x14e6a4[_0xc8ce('0x3b')][_0xc8ce('0x3c')]?_0x14e6a4[_0xc8ce('0x3b')]:_0x457b53[_0xc8ce('0x35')];_0x14e6a4[_0xc8ce('0x56')]=qs[_0xc8ce('0x3f')](_0x21cfb7['query'][_0xc8ce('0x3f')]);_0x14e6a4[_0xc8ce('0x40')]=qs[_0xc8ce('0x38')](_[_0xc8ce('0x57')](_0x21cfb7[_0xc8ce('0x36')],_0x457b53[_0xc8ce('0x38')]));if(_0x21cfb7['query'][_0xc8ce('0x58')]){_0x14e6a4[_0xc8ce('0x40')]=_[_0xc8ce('0x41')](_0x14e6a4['where'],{'$or':_[_0xc8ce('0x31')](_0x14e6a4[_0xc8ce('0x3b')],function(_0x27bf20){var _0x5e1d6a={};_0x5e1d6a[_0x27bf20]={'$like':'%'+_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x58')]+'%'};return _0x5e1d6a;})});}_0x14e6a4=_[_0xc8ce('0x41')]({},_0x14e6a4,_0x21cfb7[_0xc8ce('0x43')]);return _0x35fa19[_0xc8ce('0x87')](_0x14e6a4);}})['then'](function(_0x5dd4f8){if(_0x5dd4f8){_0x2a7b3b=_0x5dd4f8[_0xc8ce('0x3c')];if(!_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x3d')](_0xc8ce('0x3e'))){_0x14e6a4[_0xc8ce('0x21')]=qs[_0xc8ce('0x21')](_0x21cfb7[_0xc8ce('0x36')][_0xc8ce('0x21')]);_0x14e6a4[_0xc8ce('0x22')]=qs[_0xc8ce('0x22')](_0x21cfb7[_0xc8ce('0x36')]['offset']);}return _0x35fa19[_0xc8ce('0x87')](_0x14e6a4);}})[_0xc8ce('0x2a')](function(_0xe4c2c1){if(_0xe4c2c1){return _0xe4c2c1?{'count':_0x2a7b3b,'rows':_0xe4c2c1}:null;}})[_0xc8ce('0x2a')](respondWithResult(_0x342968,null))['catch'](handleError(_0x342968,null));};
\ No newline at end of file
index d9114e6..a2ed6ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c9b=['remove','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','save','update'];(function(_0x81111d,_0xe67de0){var _0x39ea8e=function(_0x2d89b9){while(--_0x2d89b9){_0x81111d['push'](_0x81111d['shift']());}};_0x39ea8e(++_0xe67de0);}(_0x3c9b,0x1a2));var _0xb3c9=function(_0x480f3a,_0x365f7a){_0x480f3a=_0x480f3a-0x0;var _0x51537c=_0x3c9b[_0x480f3a];return _0x51537c;};'use strict';var EventEmitter=require(_0xb3c9('0x0'));var MailQueue=require(_0xb3c9('0x1'))['db'][_0xb3c9('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb3c9('0x3'),'afterUpdate':_0xb3c9('0x4'),'afterDestroy':_0xb3c9('0x5')};function emitEvent(_0x2720bb){return function(_0x1e2daf,_0x243efd,_0x3fbb51){MailQueueEvents['emit'](_0x2720bb+':'+_0x1e2daf['id'],_0x1e2daf);MailQueueEvents['emit'](_0x2720bb,_0x1e2daf);_0x3fbb51(null);};}for(var e in events){if(events[_0xb3c9('0x6')](e)){var event=events[e];MailQueue[_0xb3c9('0x7')](e,emitEvent(event));}}module[_0xb3c9('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0xb3f0=['../../mysqldb','MailQueue','save','emit','hasOwnProperty','hook','events'];(function(_0x32a0a0,_0x4cce5c){var _0x26ea66=function(_0x370e96){while(--_0x370e96){_0x32a0a0['push'](_0x32a0a0['shift']());}};_0x26ea66(++_0x4cce5c);}(_0xb3f0,0x11e));var _0x0b3f=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xb3f0[_0x3ab9ee];return _0x82ee88;};'use strict';var EventEmitter=require(_0x0b3f('0x0'));var MailQueue=require(_0x0b3f('0x1'))['db'][_0x0b3f('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0b3f('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xcfe2d3){return function(_0x24621f,_0x41bfdc,_0x561c8d){MailQueueEvents[_0x0b3f('0x4')](_0xcfe2d3+':'+_0x24621f['id'],_0x24621f);MailQueueEvents[_0x0b3f('0x4')](_0xcfe2d3,_0x24621f);_0x561c8d(null);};}for(var e in events){if(events[_0x0b3f('0x5')](e)){var event=events[e];MailQueue[_0x0b3f('0x6')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
index 9a7a483..f83038d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f18=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues'];(function(_0x2ebace,_0x3e0f98){var _0x150306=function(_0x43a893){while(--_0x43a893){_0x2ebace['push'](_0x2ebace['shift']());}};_0x150306(++_0x3e0f98);}(_0x7f18,0x188));var _0x87f1=function(_0x17406e,_0x1049fd){_0x17406e=_0x17406e-0x0;var _0x2bfc5a=_0x7f18[_0x17406e];return _0x2bfc5a;};'use strict';var _=require(_0x87f1('0x0'));var util=require(_0x87f1('0x1'));var logger=require(_0x87f1('0x2'))(_0x87f1('0x3'));var moment=require(_0x87f1('0x4'));var BPromise=require('bluebird');var rp=require(_0x87f1('0x5'));var fs=require('fs');var path=require(_0x87f1('0x6'));var rimraf=require(_0x87f1('0x7'));var config=require(_0x87f1('0x8'));var attributes=require(_0x87f1('0x9'));module[_0x87f1('0xa')]=function(_0x15283d,_0x5b86d6){return _0x15283d[_0x87f1('0xb')](_0x87f1('0xc'),attributes,{'tableName':_0x87f1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb8f0=['path','rimraf','../../config/environment','./mailQueue.attributes','exports','MailQueue','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2fe74e,_0x23edc3){var _0x2e5d3a=function(_0x45a359){while(--_0x45a359){_0x2fe74e['push'](_0x2fe74e['shift']());}};_0x2e5d3a(++_0x23edc3);}(_0xb8f0,0x15b));var _0x0b8f=function(_0x4ef73a,_0x1906de){_0x4ef73a=_0x4ef73a-0x0;var _0x15c9a4=_0xb8f0[_0x4ef73a];return _0x15c9a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0b8f('0x0'))(_0x0b8f('0x1'));var moment=require(_0x0b8f('0x2'));var BPromise=require(_0x0b8f('0x3'));var rp=require(_0x0b8f('0x4'));var fs=require('fs');var path=require(_0x0b8f('0x5'));var rimraf=require(_0x0b8f('0x6'));var config=require(_0x0b8f('0x7'));var attributes=require(_0x0b8f('0x8'));module[_0x0b8f('0x9')]=function(_0x486154,_0x3c1890){return _0x486154['define'](_0x0b8f('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a59826..e7b66dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf632=['ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','error','code','MailQueue,\x20%s,\x20%s','message','result','catch','MailQueue','options','where','limit','map','include','model','attributes','GetMailQueue','stringify','ShowMailQueue','find','raw','debug','lodash','util','randomstring'];(function(_0x5df2b3,_0x7f3b81){var _0x164bb1=function(_0x88c751){while(--_0x88c751){_0x5df2b3['push'](_0x5df2b3['shift']());}};_0x164bb1(++_0x7f3b81);}(_0xf632,0x1e9));var _0x2f63=function(_0x29168a,_0x4b1087){_0x29168a=_0x29168a-0x0;var _0x5bfafd=_0xf632[_0x29168a];return _0x5bfafd;};'use strict';var _=require(_0x2f63('0x0'));var util=require(_0x2f63('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2f63('0x2'));var fs=require('fs');var Redis=require(_0x2f63('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2f63('0x4'));var logger=require(_0x2f63('0x5'))('rpc');var config=require(_0x2f63('0x6'));var jayson=require(_0x2f63('0x7'));var client=jayson[_0x2f63('0x8')][_0x2f63('0x9')]({'port':0x232a});config[_0x2f63('0xa')]=_[_0x2f63('0xb')](config['redis'],{'host':_0x2f63('0xc'),'port':0x18eb});var socket=require(_0x2f63('0xd'))(new Redis(config[_0x2f63('0xa')]));require(_0x2f63('0xe'))[_0x2f63('0xf')](socket);function respondWithRpcPromise(_0x1e7ca0,_0x5045e3,_0x235bf1){return new BPromise(function(_0x99a45a,_0x1cff2c){return client[_0x2f63('0x10')](_0x1e7ca0,_0x235bf1)[_0x2f63('0x11')](function(_0x3a313e){logger[_0x2f63('0x12')]('MailQueue,\x20%s,\x20%s',_0x5045e3,_0x2f63('0x13'));logger['debug'](_0x2f63('0x14'),_0x5045e3,_0x2f63('0x13'),JSON['stringify'](_0x3a313e));if(_0x3a313e[_0x2f63('0x15')]){if(_0x3a313e[_0x2f63('0x15')][_0x2f63('0x16')]===0x1f4){logger['error'](_0x2f63('0x17'),_0x5045e3,_0x3a313e['error'][_0x2f63('0x18')]);return _0x1cff2c(_0x3a313e[_0x2f63('0x15')][_0x2f63('0x18')]);}logger[_0x2f63('0x15')](_0x2f63('0x17'),_0x5045e3,_0x3a313e['error'][_0x2f63('0x18')]);return _0x99a45a(_0x3a313e[_0x2f63('0x15')]['message']);}else{logger[_0x2f63('0x12')](_0x2f63('0x17'),_0x5045e3,_0x2f63('0x13'));_0x99a45a(_0x3a313e[_0x2f63('0x19')][_0x2f63('0x18')]);}})[_0x2f63('0x1a')](function(_0x2c74bc){logger[_0x2f63('0x15')](_0x2f63('0x17'),_0x5045e3,_0x2c74bc);_0x1cff2c(_0x2c74bc);});});}exports['GetMailQueue']=function(_0x4bf029){var _0x43c109=this;return new Promise(function(_0x26ce10,_0x411f80){return db[_0x2f63('0x1b')]['findAll']({'raw':_0x4bf029[_0x2f63('0x1c')]?_0x4bf029[_0x2f63('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4bf029[_0x2f63('0x1c')]?_0x4bf029[_0x2f63('0x1c')][_0x2f63('0x1d')]||null:null,'attributes':_0x4bf029[_0x2f63('0x1c')]?_0x4bf029['options']['attributes']||null:null,'limit':_0x4bf029['options']?_0x4bf029[_0x2f63('0x1c')][_0x2f63('0x1e')]||null:null,'include':_0x4bf029[_0x2f63('0x1c')]?_0x4bf029['options']['include']?_[_0x2f63('0x1f')](_0x4bf029[_0x2f63('0x1c')][_0x2f63('0x20')],function(_0xcf685c){return{'model':db[_0xcf685c[_0x2f63('0x21')]],'as':_0xcf685c['as'],'attributes':_0xcf685c['attributes'],'include':_0xcf685c[_0x2f63('0x20')]?_[_0x2f63('0x1f')](_0xcf685c[_0x2f63('0x20')],function(_0x256941){return{'model':db[_0x256941[_0x2f63('0x21')]],'as':_0x256941['as'],'attributes':_0x256941[_0x2f63('0x22')],'include':_0x256941[_0x2f63('0x20')]?_['map'](_0x256941['include'],function(_0xeb3c7a){return{'model':db[_0xeb3c7a[_0x2f63('0x21')]],'as':_0xeb3c7a['as'],'attributes':_0xeb3c7a[_0x2f63('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2f63('0x11')](function(_0x1c7297){logger[_0x2f63('0x12')](_0x2f63('0x23'),_0x4bf029);logger['debug'](_0x2f63('0x23'),_0x4bf029,JSON[_0x2f63('0x24')](_0x1c7297));_0x26ce10(_0x1c7297);})[_0x2f63('0x1a')](function(_0x3130c9){logger[_0x2f63('0x15')](_0x2f63('0x23'),_0x3130c9['message'],_0x4bf029);_0x411f80(_0x43c109[_0x2f63('0x15')](0x1f4,_0x3130c9[_0x2f63('0x18')]));});});};exports[_0x2f63('0x25')]=function(_0x2b1dbd){var _0x1062f4=this;return new Promise(function(_0x511a09,_0x26a695){return db[_0x2f63('0x1b')][_0x2f63('0x26')]({'raw':_0x2b1dbd[_0x2f63('0x1c')]?_0x2b1dbd['options'][_0x2f63('0x27')]===undefined?!![]:![]:!![],'where':_0x2b1dbd[_0x2f63('0x1c')]?_0x2b1dbd[_0x2f63('0x1c')][_0x2f63('0x1d')]||null:null,'attributes':_0x2b1dbd[_0x2f63('0x1c')]?_0x2b1dbd[_0x2f63('0x1c')][_0x2f63('0x22')]||null:null,'include':_0x2b1dbd[_0x2f63('0x1c')]?_0x2b1dbd[_0x2f63('0x1c')][_0x2f63('0x20')]?_[_0x2f63('0x1f')](_0x2b1dbd['options'][_0x2f63('0x20')],function(_0x2e6f2b){return{'model':db[_0x2e6f2b['model']],'as':_0x2e6f2b['as'],'attributes':_0x2e6f2b[_0x2f63('0x22')],'include':_0x2e6f2b[_0x2f63('0x20')]?_[_0x2f63('0x1f')](_0x2e6f2b[_0x2f63('0x20')],function(_0x5483b7){return{'model':db[_0x5483b7[_0x2f63('0x21')]],'as':_0x5483b7['as'],'attributes':_0x5483b7[_0x2f63('0x22')],'include':_0x5483b7[_0x2f63('0x20')]?_['map'](_0x5483b7[_0x2f63('0x20')],function(_0x4c8ed6){return{'model':db[_0x4c8ed6[_0x2f63('0x21')]],'as':_0x4c8ed6['as'],'attributes':_0x4c8ed6[_0x2f63('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2f63('0x11')](function(_0x489626){logger[_0x2f63('0x12')](_0x2f63('0x25'),_0x2b1dbd);logger[_0x2f63('0x28')](_0x2f63('0x25'),_0x2b1dbd,JSON[_0x2f63('0x24')](_0x489626));_0x511a09(_0x489626);})[_0x2f63('0x1a')](function(_0x355222){logger[_0x2f63('0x15')](_0x2f63('0x25'),_0x355222[_0x2f63('0x18')],_0x2b1dbd);_0x26a695(_0x1062f4[_0x2f63('0x15')](0x1f4,_0x355222['message']));});});};
\ No newline at end of file
+var _0x6f1e=['util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','redis','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetMailQueue','MailQueue','findAll','options','where','attributes','limit','include','model','map','catch','find','raw','ShowMailQueue','lodash'];(function(_0x3348b6,_0x3d52bb){var _0x167547=function(_0xd87991){while(--_0xd87991){_0x3348b6['push'](_0x3348b6['shift']());}};_0x167547(++_0x3d52bb);}(_0x6f1e,0x1e0));var _0xe6f1=function(_0x1826fa,_0x391e3a){_0x1826fa=_0x1826fa-0x0;var _0x1316f6=_0x6f1e[_0x1826fa];return _0x1316f6;};'use strict';var _=require(_0xe6f1('0x0'));var util=require(_0xe6f1('0x1'));var moment=require('moment');var BPromise=require(_0xe6f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe6f1('0x3'));var logger=require(_0xe6f1('0x4'))(_0xe6f1('0x5'));var config=require(_0xe6f1('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe6f1('0x7')]({'port':0x232a});config['redis']=_[_0xe6f1('0x8')](config[_0xe6f1('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xe6f1('0xa'))(new Redis(config[_0xe6f1('0x9')]));require(_0xe6f1('0xb'))[_0xe6f1('0xc')](socket);function respondWithRpcPromise(_0x4564b5,_0xfd577b,_0x5db7fc){return new BPromise(function(_0x78eea3,_0x52c91a){return client[_0xe6f1('0xd')](_0x4564b5,_0x5db7fc)[_0xe6f1('0xe')](function(_0x50f0bb){logger[_0xe6f1('0xf')](_0xe6f1('0x10'),_0xfd577b,_0xe6f1('0x11'));logger[_0xe6f1('0x12')]('MailQueue,\x20%s,\x20%s,\x20%s',_0xfd577b,'request\x20sent',JSON[_0xe6f1('0x13')](_0x50f0bb));if(_0x50f0bb[_0xe6f1('0x14')]){if(_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x15')]===0x1f4){logger['error'](_0xe6f1('0x10'),_0xfd577b,_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x16')]);return _0x52c91a(_0x50f0bb['error'][_0xe6f1('0x16')]);}logger['error'](_0xe6f1('0x10'),_0xfd577b,_0x50f0bb[_0xe6f1('0x14')][_0xe6f1('0x16')]);return _0x78eea3(_0x50f0bb[_0xe6f1('0x14')]['message']);}else{logger[_0xe6f1('0xf')](_0xe6f1('0x10'),_0xfd577b,'request\x20sent');_0x78eea3(_0x50f0bb['result'][_0xe6f1('0x16')]);}})['catch'](function(_0x3fde30){logger[_0xe6f1('0x14')]('MailQueue,\x20%s,\x20%s',_0xfd577b,_0x3fde30);_0x52c91a(_0x3fde30);});});}exports[_0xe6f1('0x17')]=function(_0x50e1f0){var _0x42d521=this;return new Promise(function(_0x64b537,_0x15843e){return db[_0xe6f1('0x18')][_0xe6f1('0x19')]({'raw':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0[_0xe6f1('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0['options'][_0xe6f1('0x1b')]||null:null,'attributes':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0['options'][_0xe6f1('0x1c')]||null:null,'limit':_0x50e1f0['options']?_0x50e1f0[_0xe6f1('0x1a')][_0xe6f1('0x1d')]||null:null,'include':_0x50e1f0[_0xe6f1('0x1a')]?_0x50e1f0[_0xe6f1('0x1a')][_0xe6f1('0x1e')]?_['map'](_0x50e1f0[_0xe6f1('0x1a')]['include'],function(_0x461007){return{'model':db[_0x461007[_0xe6f1('0x1f')]],'as':_0x461007['as'],'attributes':_0x461007[_0xe6f1('0x1c')],'include':_0x461007[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0x461007[_0xe6f1('0x1e')],function(_0xfe8bdb){return{'model':db[_0xfe8bdb[_0xe6f1('0x1f')]],'as':_0xfe8bdb['as'],'attributes':_0xfe8bdb[_0xe6f1('0x1c')],'include':_0xfe8bdb[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0xfe8bdb[_0xe6f1('0x1e')],function(_0x40afd8){return{'model':db[_0x40afd8['model']],'as':_0x40afd8['as'],'attributes':_0x40afd8[_0xe6f1('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x202505){logger['info'](_0xe6f1('0x17'),_0x50e1f0);logger[_0xe6f1('0x12')]('GetMailQueue',_0x50e1f0,JSON[_0xe6f1('0x13')](_0x202505));_0x64b537(_0x202505);})[_0xe6f1('0x21')](function(_0x3eb90f){logger['error'](_0xe6f1('0x17'),_0x3eb90f[_0xe6f1('0x16')],_0x50e1f0);_0x15843e(_0x42d521[_0xe6f1('0x14')](0x1f4,_0x3eb90f['message']));});});};exports['ShowMailQueue']=function(_0x1ca897){var _0x494055=this;return new Promise(function(_0x1b3158,_0x28c013){return db[_0xe6f1('0x18')][_0xe6f1('0x22')]({'raw':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897['options'][_0xe6f1('0x23')]===undefined?!![]:![]:!![],'where':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897[_0xe6f1('0x1a')][_0xe6f1('0x1b')]||null:null,'attributes':_0x1ca897[_0xe6f1('0x1a')]?_0x1ca897['options'][_0xe6f1('0x1c')]||null:null,'include':_0x1ca897['options']?_0x1ca897['options']['include']?_[_0xe6f1('0x20')](_0x1ca897[_0xe6f1('0x1a')][_0xe6f1('0x1e')],function(_0x42005f){return{'model':db[_0x42005f[_0xe6f1('0x1f')]],'as':_0x42005f['as'],'attributes':_0x42005f[_0xe6f1('0x1c')],'include':_0x42005f[_0xe6f1('0x1e')]?_[_0xe6f1('0x20')](_0x42005f['include'],function(_0x5f04f9){return{'model':db[_0x5f04f9[_0xe6f1('0x1f')]],'as':_0x5f04f9['as'],'attributes':_0x5f04f9[_0xe6f1('0x1c')],'include':_0x5f04f9['include']?_[_0xe6f1('0x20')](_0x5f04f9[_0xe6f1('0x1e')],function(_0x36b7c5){return{'model':db[_0x36b7c5[_0xe6f1('0x1f')]],'as':_0x36b7c5['as'],'attributes':_0x36b7c5[_0xe6f1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe6f1('0xe')](function(_0x16858d){logger[_0xe6f1('0xf')](_0xe6f1('0x24'),_0x1ca897);logger[_0xe6f1('0x12')](_0xe6f1('0x24'),_0x1ca897,JSON[_0xe6f1('0x13')](_0x16858d));_0x1b3158(_0x16858d);})[_0xe6f1('0x21')](function(_0xbb198){logger[_0xe6f1('0x14')]('ShowMailQueue',_0xbb198[_0xe6f1('0x16')],_0x1ca897);_0x28c013(_0x494055['error'](0x1f4,_0xbb198['message']));});});};
\ No newline at end of file
index 6a7f8b0..8a93720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5857=['mailQueue:','./mailQueue.events','emit','removeListener','length'];(function(_0x2aba71,_0x5bbd63){var _0x57f492=function(_0x257c58){while(--_0x257c58){_0x2aba71['push'](_0x2aba71['shift']());}};_0x57f492(++_0x5bbd63);}(_0x5857,0xbf));var _0x7585=function(_0x273106,_0x1c26fe){_0x273106=_0x273106-0x0;var _0x25dc4e=_0x5857[_0x273106];return _0x25dc4e;};'use strict';var MailQueueEvents=require(_0x7585('0x0'));var events=['save','remove','update'];function createListener(_0x96009e,_0x2a818c){return function(_0x3361c5){_0x2a818c[_0x7585('0x1')](_0x96009e,_0x3361c5);};}function removeListener(_0x389ba0,_0x46d2d5){return function(){MailQueueEvents[_0x7585('0x2')](_0x389ba0,_0x46d2d5);};}exports['register']=function(_0x2c0490){for(var _0x253e9e=0x0,_0x5ad8c3=events[_0x7585('0x3')];_0x253e9e<_0x5ad8c3;_0x253e9e++){var _0x14b53c=events[_0x253e9e];var _0x2d5db1=createListener(_0x7585('0x4')+_0x14b53c,_0x2c0490);MailQueueEvents['on'](_0x14b53c,_0x2d5db1);}};
\ No newline at end of file
+var _0x76cc=['emit','removeListener','mailQueue:','./mailQueue.events','save','update'];(function(_0x4cb2cb,_0x3a1d53){var _0xb097be=function(_0x78c434){while(--_0x78c434){_0x4cb2cb['push'](_0x4cb2cb['shift']());}};_0xb097be(++_0x3a1d53);}(_0x76cc,0x117));var _0xc76c=function(_0x3525b7,_0x4b788a){_0x3525b7=_0x3525b7-0x0;var _0x3f66e3=_0x76cc[_0x3525b7];return _0x3f66e3;};'use strict';var MailQueueEvents=require(_0xc76c('0x0'));var events=[_0xc76c('0x1'),'remove',_0xc76c('0x2')];function createListener(_0x40d490,_0x2651eb){return function(_0x4de00c){_0x2651eb[_0xc76c('0x3')](_0x40d490,_0x4de00c);};}function removeListener(_0x3dad62,_0x209273){return function(){MailQueueEvents[_0xc76c('0x4')](_0x3dad62,_0x209273);};}exports['register']=function(_0x2a08f6){for(var _0x25e3c1=0x0,_0x417a99=events['length'];_0x25e3c1<_0x417a99;_0x25e3c1++){var _0x5476c4=events[_0x25e3c1];var _0x925174=createListener(_0xc76c('0x5')+_0x5476c4,_0x2a08f6);MailQueueEvents['on'](_0x5476c4,_0x925174);}};
\ No newline at end of file
index 885e1dc..feca48b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe983=['../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x26b304,_0x5b4afc){var _0x254f65=function(_0x235531){while(--_0x235531){_0x26b304['push'](_0x26b304['shift']());}};_0x254f65(++_0x5b4afc);}(_0xe983,0x13a));var _0x3e98=function(_0x4b17f8,_0x4528cc){_0x4b17f8=_0x4b17f8-0x0;var _0x496926=_0xe983[_0x4b17f8];return _0x496926;};'use strict';var multer=require(_0x3e98('0x0'));var util=require(_0x3e98('0x1'));var path=require(_0x3e98('0x2'));var timeout=require(_0x3e98('0x3'));var express=require(_0x3e98('0x4'));var router=express['Router']();var fs_extra=require(_0x3e98('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3e98('0x6'));var config=require('../../config/environment');var controller=require(_0x3e98('0x7'));router[_0x3e98('0x8')]('/',auth[_0x3e98('0x9')](),controller['index']);router[_0x3e98('0x8')](_0x3e98('0xa'),auth[_0x3e98('0x9')](),controller[_0x3e98('0xb')]);router[_0x3e98('0x8')](_0x3e98('0xc'),auth[_0x3e98('0x9')](),controller[_0x3e98('0xd')]);router[_0x3e98('0xe')]('/',auth[_0x3e98('0x9')](),controller[_0x3e98('0xf')]);router[_0x3e98('0x10')](_0x3e98('0xc'),auth[_0x3e98('0x9')](),controller[_0x3e98('0x11')]);router[_0x3e98('0x12')](_0x3e98('0xc'),auth[_0x3e98('0x9')](),controller[_0x3e98('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x44d3=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x3b4823,_0x5c8e7a){var _0x15c670=function(_0x3cd81a){while(--_0x3cd81a){_0x3b4823['push'](_0x3b4823['shift']());}};_0x15c670(++_0x5c8e7a);}(_0x44d3,0x1de));var _0x344d=function(_0x4f5044,_0x29d658){_0x4f5044=_0x4f5044-0x0;var _0x4a2190=_0x44d3[_0x4f5044];return _0x4a2190;};'use strict';var multer=require(_0x344d('0x0'));var util=require('util');var path=require(_0x344d('0x1'));var timeout=require(_0x344d('0x2'));var express=require(_0x344d('0x3'));var router=express[_0x344d('0x4')]();var fs_extra=require(_0x344d('0x5'));var auth=require(_0x344d('0x6'));var interaction=require(_0x344d('0x7'));var config=require(_0x344d('0x8'));var controller=require(_0x344d('0x9'));router[_0x344d('0xa')]('/',auth['isAuthenticated'](),controller[_0x344d('0xb')]);router[_0x344d('0xa')](_0x344d('0xc'),auth[_0x344d('0xd')](),controller[_0x344d('0xe')]);router[_0x344d('0xa')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x10')]);router[_0x344d('0x11')]('/',auth['isAuthenticated'](),controller[_0x344d('0x12')]);router[_0x344d('0x13')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x14')]);router[_0x344d('0x15')](_0x344d('0xf'),auth[_0x344d('0xd')](),controller[_0x344d('0x16')]);module[_0x344d('0x17')]=router;
\ No newline at end of file
index c0489c4..0a33f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5565=['STRING','DATE','sequelize'];(function(_0x5a297f,_0xe5f1b8){var _0x20e1a4=function(_0x5569fc){while(--_0x5569fc){_0x5a297f['push'](_0x5a297f['shift']());}};_0x20e1a4(++_0xe5f1b8);}(_0x5565,0x104));var _0x5556=function(_0x409732,_0x2a374e){_0x409732=_0x409732-0x0;var _0x4760e5=_0x5565[_0x409732];return _0x4760e5;};'use strict';var moment=require('moment');var Sequelize=require(_0x5556('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x5556('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x5556('0x2')]},'leaveAt':{'type':Sequelize[_0x5556('0x2')]},'acceptAt':{'type':Sequelize[_0x5556('0x2')]},'exitAt':{'type':Sequelize[_0x5556('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x80ab=['sequelize','STRING','DATE','moment'];(function(_0x364048,_0x34dea3){var _0x591678=function(_0x239c0a){while(--_0x239c0a){_0x364048['push'](_0x364048['shift']());}};_0x591678(++_0x34dea3);}(_0x80ab,0x143));var _0xb80a=function(_0x18d866,_0x472999){_0x18d866=_0x18d866-0x0;var _0x10ea5f=_0x80ab[_0x18d866];return _0x10ea5f;};'use strict';var moment=require(_0xb80a('0x0'));var Sequelize=require(_0xb80a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xb80a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xb80a('0x2')]},'joinAt':{'type':Sequelize[_0xb80a('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xb80a('0x3')]},'exitAt':{'type':Sequelize[_0xb80a('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 20321d8..7a4120d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','params','keys','options','catch','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','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/utils','../../config/environment','sendStatus','status','end','undefined','count','offset','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','nolimit','limit','order','sort'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0xa456,0x142));var _0x6a45=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xa456[_0x4e9d3c];return _0x2d0825;};'use strict';var emlformat=require(_0x6a45('0x0'));var rimraf=require(_0x6a45('0x1'));var zipdir=require(_0x6a45('0x2'));var jsonpatch=require(_0x6a45('0x3'));var rp=require('request-promise');var moment=require(_0x6a45('0x4'));var BPromise=require(_0x6a45('0x5'));var Mustache=require(_0x6a45('0x6'));var util=require('util');var path=require(_0x6a45('0x7'));var sox=require(_0x6a45('0x8'));var csv=require(_0x6a45('0x9'));var ejs=require(_0x6a45('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6a45('0xb'));var squel=require(_0x6a45('0xc'));var crypto=require(_0x6a45('0xd'));var jsforce=require(_0x6a45('0xe'));var deskjs=require(_0x6a45('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6a45('0x10'));var Papa=require('papaparse');var Redis=require(_0x6a45('0x11'));var authService=require(_0x6a45('0x12'));var qs=require(_0x6a45('0x13'));var as=require(_0x6a45('0x14'));var hardwareService=require(_0x6a45('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x6a45('0x16'));var config=require(_0x6a45('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x511b92,_0x1aa4b4){_0x1aa4b4=_0x1aa4b4||0xcc;return function(_0x25a8b9){if(_0x25a8b9){return _0x511b92[_0x6a45('0x18')](_0x1aa4b4);}return _0x511b92[_0x6a45('0x19')](_0x1aa4b4)[_0x6a45('0x1a')]();};}function respondWithResult(_0x5a9f29,_0x563c3b){_0x563c3b=_0x563c3b||0xc8;return function(_0x3a5d94){if(_0x3a5d94){return _0x5a9f29[_0x6a45('0x19')](_0x563c3b)['json'](_0x3a5d94);}};}function respondWithFilteredResult(_0x2c20db,_0x171176){return function(_0x3fab82){if(_0x3fab82){var _0x13adc0=typeof _0x171176['offset']==='undefined'&&typeof _0x171176['limit']===_0x6a45('0x1b');var _0x391f81=_0x3fab82[_0x6a45('0x1c')];var _0x52a055=_0x13adc0?0x0:_0x171176[_0x6a45('0x1d')];var _0x102981=_0x13adc0?_0x3fab82[_0x6a45('0x1c')]:_0x171176['offset']+_0x171176['limit'];var _0x573453;if(_0x102981>=_0x391f81){_0x102981=_0x391f81;_0x573453=0xc8;}else{_0x573453=0xce;}_0x2c20db[_0x6a45('0x19')](_0x573453);return _0x2c20db[_0x6a45('0x1e')]('Content-Range',_0x52a055+'-'+_0x102981+'/'+_0x391f81)[_0x6a45('0x1f')](_0x3fab82);}return null;};}function patchUpdates(_0x1be485){return function(_0x4f7000){try{jsonpatch[_0x6a45('0x20')](_0x4f7000,_0x1be485,!![]);}catch(_0xdf10c6){return BPromise[_0x6a45('0x21')](_0xdf10c6);}return _0x4f7000[_0x6a45('0x22')]();};}function saveUpdates(_0x15ad0e,_0x487666){return function(_0x5d990e){if(_0x5d990e){return _0x5d990e[_0x6a45('0x23')](_0x15ad0e)[_0x6a45('0x24')](function(_0x11290c){return _0x11290c;});}return null;};}function removeEntity(_0x22373c,_0x25a380){return function(_0x3ad898){if(_0x3ad898){return _0x3ad898[_0x6a45('0x25')]()[_0x6a45('0x24')](function(){_0x22373c[_0x6a45('0x19')](0xcc)[_0x6a45('0x1a')]();});}};}function handleEntityNotFound(_0x1310d7,_0x46587a){return function(_0x5cd761){if(!_0x5cd761){_0x1310d7[_0x6a45('0x18')](0x194);}return _0x5cd761;};}function handleError(_0x5a0389,_0x1b83fa){_0x1b83fa=_0x1b83fa||0x1f4;return function(_0x25467d){logger[_0x6a45('0x26')](_0x25467d[_0x6a45('0x27')]);if(_0x25467d[_0x6a45('0x28')]){delete _0x25467d['name'];}_0x5a0389[_0x6a45('0x19')](_0x1b83fa)[_0x6a45('0x29')](_0x25467d);};}exports[_0x6a45('0x2a')]=function(_0x1ccff0,_0x8265d9){var _0x227b6f={},_0x3fac9b={},_0x313c13={'count':0x0,'rows':[]};var _0x54286d=_[_0x6a45('0x2b')](db[_0x6a45('0x2c')][_0x6a45('0x2d')],function(_0x201369){return{'name':_0x201369[_0x6a45('0x2e')],'type':_0x201369['type'][_0x6a45('0x2f')]};});_0x3fac9b[_0x6a45('0x30')]=_[_0x6a45('0x2b')](_0x54286d,_0x6a45('0x28'));_0x3fac9b['query']=_['keys'](_0x1ccff0[_0x6a45('0x31')]);_0x3fac9b['filters']=_[_0x6a45('0x32')](_0x3fac9b['model'],_0x3fac9b[_0x6a45('0x31')]);_0x227b6f[_0x6a45('0x33')]=_[_0x6a45('0x32')](_0x3fac9b[_0x6a45('0x30')],qs[_0x6a45('0x34')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x34')]));_0x227b6f[_0x6a45('0x33')]=_0x227b6f[_0x6a45('0x33')][_0x6a45('0x35')]?_0x227b6f[_0x6a45('0x33')]:_0x3fac9b[_0x6a45('0x30')];if(!_0x1ccff0[_0x6a45('0x31')]['hasOwnProperty'](_0x6a45('0x36'))){_0x227b6f['limit']=qs[_0x6a45('0x37')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x37')]);_0x227b6f[_0x6a45('0x1d')]=qs[_0x6a45('0x1d')](_0x1ccff0[_0x6a45('0x31')]['offset']);}_0x227b6f[_0x6a45('0x38')]=qs[_0x6a45('0x39')](_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x39')]);_0x227b6f[_0x6a45('0x3a')]=qs[_0x6a45('0x3b')](_['pick'](_0x1ccff0[_0x6a45('0x31')],_0x3fac9b[_0x6a45('0x3b')]),_0x54286d);if(_0x1ccff0['query'][_0x6a45('0x3c')]){_0x227b6f[_0x6a45('0x3a')]=_[_0x6a45('0x3d')](_0x227b6f[_0x6a45('0x3a')],{'$or':_[_0x6a45('0x2b')](_0x54286d,function(_0x50ebe0){if(_0x50ebe0[_0x6a45('0x3e')]!==_0x6a45('0x3f')){var _0x205afd={};_0x205afd[_0x50ebe0[_0x6a45('0x28')]]={'$like':'%'+_0x1ccff0[_0x6a45('0x31')][_0x6a45('0x3c')]+'%'};return _0x205afd;}})});}_0x227b6f=_[_0x6a45('0x3d')]({},_0x227b6f,_0x1ccff0['options']);var _0x1c941a={'where':_0x227b6f['where']};return db[_0x6a45('0x2c')][_0x6a45('0x1c')](_0x1c941a)[_0x6a45('0x24')](function(_0x2715dc){_0x313c13['count']=_0x2715dc;if(_0x1ccff0['query'][_0x6a45('0x40')]){_0x227b6f[_0x6a45('0x41')]=[{'all':!![]}];}return db['MailQueueReport'][_0x6a45('0x42')](_0x227b6f);})[_0x6a45('0x24')](function(_0x3bd926){_0x313c13[_0x6a45('0x43')]=_0x3bd926;return _0x313c13;})['then'](respondWithFilteredResult(_0x8265d9,_0x227b6f))['catch'](handleError(_0x8265d9,null));};exports['show']=function(_0x5b9798,_0xe90201){var _0xb5d191={'raw':!![],'where':{'id':_0x5b9798[_0x6a45('0x44')]['id']}},_0x328d9f={};_0x328d9f[_0x6a45('0x30')]=_[_0x6a45('0x45')](db[_0x6a45('0x2c')][_0x6a45('0x2d')]);_0x328d9f['query']=_[_0x6a45('0x45')](_0x5b9798['query']);_0x328d9f['filters']=_[_0x6a45('0x32')](_0x328d9f[_0x6a45('0x30')],_0x328d9f['query']);_0xb5d191[_0x6a45('0x33')]=_['intersection'](_0x328d9f[_0x6a45('0x30')],qs[_0x6a45('0x34')](_0x5b9798[_0x6a45('0x31')][_0x6a45('0x34')]));_0xb5d191['attributes']=_0xb5d191[_0x6a45('0x33')][_0x6a45('0x35')]?_0xb5d191[_0x6a45('0x33')]:_0x328d9f[_0x6a45('0x30')];if(_0x5b9798[_0x6a45('0x31')]['includeAll']){_0xb5d191[_0x6a45('0x41')]=[{'all':!![]}];}_0xb5d191=_['merge']({},_0xb5d191,_0x5b9798[_0x6a45('0x46')]);return db[_0x6a45('0x2c')]['find'](_0xb5d191)[_0x6a45('0x24')](handleEntityNotFound(_0xe90201,null))[_0x6a45('0x24')](respondWithResult(_0xe90201,null))[_0x6a45('0x47')](handleError(_0xe90201,null));};exports[_0x6a45('0x48')]=function(_0x524296,_0x34bbb7){return db['MailQueueReport'][_0x6a45('0x48')](_0x524296['body'],{})[_0x6a45('0x24')](respondWithResult(_0x34bbb7,0xc9))[_0x6a45('0x47')](handleError(_0x34bbb7,null));};exports[_0x6a45('0x23')]=function(_0x2bf8d3,_0x5d9f52){if(_0x2bf8d3[_0x6a45('0x49')]['id']){delete _0x2bf8d3[_0x6a45('0x49')]['id'];}return db[_0x6a45('0x2c')][_0x6a45('0x4a')]({'where':{'id':_0x2bf8d3[_0x6a45('0x44')]['id']}})[_0x6a45('0x24')](handleEntityNotFound(_0x5d9f52,null))[_0x6a45('0x24')](saveUpdates(_0x2bf8d3[_0x6a45('0x49')],null))[_0x6a45('0x24')](respondWithResult(_0x5d9f52,null))[_0x6a45('0x47')](handleError(_0x5d9f52,null));};exports['destroy']=function(_0x3ea4a7,_0x8877c7){return db[_0x6a45('0x2c')][_0x6a45('0x4a')]({'where':{'id':_0x3ea4a7['params']['id']}})[_0x6a45('0x24')](handleEntityNotFound(_0x8877c7,null))[_0x6a45('0x24')](removeEntity(_0x8877c7,null))[_0x6a45('0x47')](handleError(_0x8877c7,null));};exports['describe']=function(_0x4e7967,_0x5a17b8){return db[_0x6a45('0x2c')][_0x6a45('0x4b')]()[_0x6a45('0x24')](respondWithResult(_0x5a17b8,null))[_0x6a45('0x47')](handleError(_0x5a17b8,null));};
\ No newline at end of file
+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(_0x5d9f14,_0x2856b2){var _0x14485d=function(_0xec5013){while(--_0xec5013){_0x5d9f14['push'](_0x5d9f14['shift']());}};_0x14485d(++_0x2856b2);}(_0x68b3,0x1d8));var _0x368b=function(_0x3f3c3f,_0x59caf0){_0x3f3c3f=_0x3f3c3f-0x0;var _0x4de6b5=_0x68b3[_0x3f3c3f];return _0x4de6b5;};'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
index e5008cb..d54bc78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f76=['rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x459a18,_0x3f74dc){var _0x5bc97e=function(_0x178c4c){while(--_0x178c4c){_0x459a18['push'](_0x459a18['shift']());}};_0x5bc97e(++_0x3f74dc);}(_0x6f76,0x14a));var _0x66f7=function(_0x30fc0b,_0x5203f6){_0x30fc0b=_0x30fc0b-0x0;var _0x27486f=_0x6f76[_0x30fc0b];return _0x27486f;};'use strict';var _=require(_0x66f7('0x0'));var util=require('util');var logger=require(_0x66f7('0x1'))('api');var moment=require(_0x66f7('0x2'));var BPromise=require(_0x66f7('0x3'));var rp=require(_0x66f7('0x4'));var fs=require('fs');var path=require(_0x66f7('0x5'));var rimraf=require(_0x66f7('0x6'));var config=require('../../config/environment');var attributes=require(_0x66f7('0x7'));module[_0x66f7('0x8')]=function(_0x1a61f9,_0x3f32a8){return _0x1a61f9[_0x66f7('0x9')](_0x66f7('0xa'),attributes,{'tableName':_0x66f7('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8fd9=['util','api','moment','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','uniqueid'];(function(_0x18f4bf,_0x4acb98){var _0x9cc4f9=function(_0x9c0cc){while(--_0x9c0cc){_0x18f4bf['push'](_0x18f4bf['shift']());}};_0x9cc4f9(++_0x4acb98);}(_0x8fd9,0x1ce));var _0x98fd=function(_0x245772,_0x2c0818){_0x245772=_0x245772-0x0;var _0x1a1c3b=_0x8fd9[_0x245772];return _0x1a1c3b;};'use strict';var _=require('lodash');var util=require(_0x98fd('0x0'));var logger=require('../../config/logger')(_0x98fd('0x1'));var moment=require(_0x98fd('0x2'));var BPromise=require('bluebird');var rp=require(_0x98fd('0x3'));var fs=require('fs');var path=require(_0x98fd('0x4'));var rimraf=require(_0x98fd('0x5'));var config=require(_0x98fd('0x6'));var attributes=require(_0x98fd('0x7'));module[_0x98fd('0x8')]=function(_0x2790cd,_0x19a2b0){return _0x2790cd['define'](_0x98fd('0x9'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x98fd('0xa'),'fields':[_0x98fd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index bb46ca8..6a3949c 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(_0x14ea13,_0x264c0e){var _0x45359f=function(_0x5b7bd1){while(--_0x5b7bd1){_0x14ea13['push'](_0x14ea13['shift']());}};_0x45359f(++_0x264c0e);}(_0x7a54,0x106));var _0x47a5=function(_0x2c95e7,_0x446e19){_0x2c95e7=_0x2c95e7-0x0;var _0x313cd1=_0x7a54[_0x2c95e7];return _0x313cd1;};'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 _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x23e52f,_0x5e255f){var _0x47c8a0=function(_0x106fdc){while(--_0x106fdc){_0x23e52f['push'](_0x23e52f['shift']());}};_0x47c8a0(++_0x5e255f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc4aa[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
index 5a846f5..fb5dce5 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(_0x26b817,_0x4b84b8){var _0x1f1ad5=function(_0x5192dc){while(--_0x5192dc){_0x26b817['push'](_0x26b817['shift']());}};_0x1f1ad5(++_0x4b84b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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(_0x4474c7,_0x15f886){var _0x479d3a=function(_0x141e4b){while(--_0x141e4b){_0x4474c7['push'](_0x4474c7['shift']());}};_0x479d3a(++_0x15f886);}(_0xedd9,0xfc));var _0x9edd=function(_0x54ed9a,_0x40d6bf){_0x54ed9a=_0x54ed9a-0x0;var _0x512583=_0xedd9[_0x54ed9a];return _0x512583;};'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 7c77759..6bbd86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54eb=['BOOLEAN','INBOX','exports','STRING'];(function(_0xc1dd72,_0x4d4b5f){var _0x4a1400=function(_0x13f28a){while(--_0x13f28a){_0xc1dd72['push'](_0xc1dd72['shift']());}};_0x4a1400(++_0x4d4b5f);}(_0x54eb,0x106));var _0xb54e=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x54eb[_0x50a0c2];return _0x5ebadd;};'use strict';var Sequelize=require('sequelize');module[_0xb54e('0x0')]={'description':{'type':Sequelize[_0xb54e('0x1')]},'host':{'type':Sequelize[_0xb54e('0x1')]},'authentication':{'type':Sequelize[_0xb54e('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0xb54e('0x1')]},'password':{'type':Sequelize[_0xb54e('0x1')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xb54e('0x1')],'defaultValue':_0xb54e('0x3')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0xb54e('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0743=['INTEGER','sequelize','exports','STRING','BOOLEAN','INBOX'];(function(_0x4fb1be,_0x797e1f){var _0x486e2f=function(_0x1dcb10){while(--_0x1dcb10){_0x4fb1be['push'](_0x4fb1be['shift']());}};_0x486e2f(++_0x797e1f);}(_0x0743,0x14b));var _0x3074=function(_0x387fbe,_0x1a04fa){_0x387fbe=_0x387fbe-0x0;var _0x189793=_0x0743[_0x387fbe];return _0x189793;};'use strict';var Sequelize=require(_0x3074('0x0'));module[_0x3074('0x1')]={'description':{'type':Sequelize[_0x3074('0x2')]},'host':{'type':Sequelize[_0x3074('0x2')]},'authentication':{'type':Sequelize[_0x3074('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3074('0x2')]},'password':{'type':Sequelize[_0x3074('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3074('0x2')],'defaultValue':_0x3074('0x4')},'connTimeout':{'type':Sequelize[_0x3074('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3074('0x5')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b9d5d60..40807e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2144=['mail_servers_in','../../config/logger','moment','request-promise','path','rimraf','./mailServerIn.attributes','exports','MailServerIn'];(function(_0xe71ecb,_0x46b13e){var _0x53f9bc=function(_0x4ad61b){while(--_0x4ad61b){_0xe71ecb['push'](_0xe71ecb['shift']());}};_0x53f9bc(++_0x46b13e);}(_0x2144,0x157));var _0x4214=function(_0x3a2e4b,_0x1fc1f7){_0x3a2e4b=_0x3a2e4b-0x0;var _0x3697d9=_0x2144[_0x3a2e4b];return _0x3697d9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4214('0x0'))('api');var moment=require(_0x4214('0x1'));var BPromise=require('bluebird');var rp=require(_0x4214('0x2'));var fs=require('fs');var path=require(_0x4214('0x3'));var rimraf=require(_0x4214('0x4'));var config=require('../../config/environment');var attributes=require(_0x4214('0x5'));module[_0x4214('0x6')]=function(_0x3177a1,_0x26fcd3){return _0x3177a1['define'](_0x4214('0x7'),attributes,{'tableName':_0x4214('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f14=['exports','define','MailServerIn','lodash','util','api','moment','bluebird','request-promise','./mailServerIn.attributes'];(function(_0x5ca52b,_0x4cd5ce){var _0x5f511f=function(_0x1dfbcd){while(--_0x1dfbcd){_0x5ca52b['push'](_0x5ca52b['shift']());}};_0x5f511f(++_0x4cd5ce);}(_0x8f14,0x85));var _0x48f1=function(_0x138684,_0x34c757){_0x138684=_0x138684-0x0;var _0xfbfc38=_0x8f14[_0x138684];return _0xfbfc38;};'use strict';var _=require(_0x48f1('0x0'));var util=require(_0x48f1('0x1'));var logger=require('../../config/logger')(_0x48f1('0x2'));var moment=require(_0x48f1('0x3'));var BPromise=require(_0x48f1('0x4'));var rp=require(_0x48f1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x48f1('0x6'));module[_0x48f1('0x7')]=function(_0x426523,_0x1ba140){return _0x426523[_0x48f1('0x8')](_0x48f1('0x9'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d44bc5..708e3b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a1b=['lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','MailServerIn,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','where','attributes','limit','include','map','model','then'];(function(_0x22ff5a,_0x3138af){var _0x73f1cc=function(_0x349d53){while(--_0x349d53){_0x22ff5a['push'](_0x22ff5a['shift']());}};_0x73f1cc(++_0x3138af);}(_0x8a1b,0xf8));var _0xb8a1=function(_0x51bf2b,_0x420a8e){_0x51bf2b=_0x51bf2b-0x0;var _0x4db16b=_0x8a1b[_0x51bf2b];return _0x4db16b;};'use strict';var _=require(_0xb8a1('0x0'));var util=require(_0xb8a1('0x1'));var moment=require('moment');var BPromise=require(_0xb8a1('0x2'));var rs=require(_0xb8a1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb8a1('0x4'));var logger=require(_0xb8a1('0x5'))(_0xb8a1('0x6'));var config=require(_0xb8a1('0x7'));var jayson=require(_0xb8a1('0x8'));var client=jayson['client'][_0xb8a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x444ef7,_0x1e8118,_0x3f34e5){return new BPromise(function(_0x2370d3,_0x546519){return client[_0xb8a1('0xa')](_0x444ef7,_0x3f34e5)['then'](function(_0x4e398a){logger[_0xb8a1('0xb')](_0xb8a1('0xc'),_0x1e8118,'request\x20sent');logger[_0xb8a1('0xd')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x1e8118,_0xb8a1('0xe'),JSON[_0xb8a1('0xf')](_0x4e398a));if(_0x4e398a[_0xb8a1('0x10')]){if(_0x4e398a[_0xb8a1('0x10')]['code']===0x1f4){logger[_0xb8a1('0x10')](_0xb8a1('0xc'),_0x1e8118,_0x4e398a[_0xb8a1('0x10')][_0xb8a1('0x11')]);return _0x546519(_0x4e398a['error'][_0xb8a1('0x11')]);}logger[_0xb8a1('0x10')](_0xb8a1('0xc'),_0x1e8118,_0x4e398a[_0xb8a1('0x10')][_0xb8a1('0x11')]);return _0x2370d3(_0x4e398a[_0xb8a1('0x10')][_0xb8a1('0x11')]);}else{logger[_0xb8a1('0xb')](_0xb8a1('0xc'),_0x1e8118,_0xb8a1('0xe'));_0x2370d3(_0x4e398a[_0xb8a1('0x12')]['message']);}})[_0xb8a1('0x13')](function(_0x3fed21){logger[_0xb8a1('0x10')](_0xb8a1('0xc'),_0x1e8118,_0x3fed21);_0x546519(_0x3fed21);});});}exports[_0xb8a1('0x14')]=function(_0x2ad525){var _0x291ff3=this;return new Promise(function(_0xdf75f0,_0x1bc506){return db[_0xb8a1('0x15')][_0xb8a1('0x16')]({'raw':_0x2ad525[_0xb8a1('0x17')]?_0x2ad525[_0xb8a1('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2ad525['options']?_0x2ad525[_0xb8a1('0x17')][_0xb8a1('0x18')]||null:null,'attributes':_0x2ad525['options']?_0x2ad525[_0xb8a1('0x17')][_0xb8a1('0x19')]||null:null,'limit':_0x2ad525[_0xb8a1('0x17')]?_0x2ad525[_0xb8a1('0x17')][_0xb8a1('0x1a')]||null:null,'include':_0x2ad525[_0xb8a1('0x17')]?_0x2ad525[_0xb8a1('0x17')][_0xb8a1('0x1b')]?_[_0xb8a1('0x1c')](_0x2ad525[_0xb8a1('0x17')][_0xb8a1('0x1b')],function(_0x1829b7){return{'model':db[_0x1829b7[_0xb8a1('0x1d')]],'as':_0x1829b7['as'],'attributes':_0x1829b7['attributes'],'include':_0x1829b7[_0xb8a1('0x1b')]?_[_0xb8a1('0x1c')](_0x1829b7['include'],function(_0x4b69b8){return{'model':db[_0x4b69b8[_0xb8a1('0x1d')]],'as':_0x4b69b8['as'],'attributes':_0x4b69b8[_0xb8a1('0x19')],'include':_0x4b69b8[_0xb8a1('0x1b')]?_[_0xb8a1('0x1c')](_0x4b69b8['include'],function(_0x4bd5af){return{'model':db[_0x4bd5af[_0xb8a1('0x1d')]],'as':_0x4bd5af['as'],'attributes':_0x4bd5af[_0xb8a1('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb8a1('0x1e')](function(_0x58e717){logger[_0xb8a1('0xb')]('GetMailServerIn',_0x2ad525);logger[_0xb8a1('0xd')](_0xb8a1('0x14'),_0x2ad525,JSON['stringify'](_0x58e717));_0xdf75f0(_0x58e717);})[_0xb8a1('0x13')](function(_0x490260){logger[_0xb8a1('0x10')](_0xb8a1('0x14'),_0x490260[_0xb8a1('0x11')],_0x2ad525);_0x1bc506(_0x291ff3[_0xb8a1('0x10')](0x1f4,_0x490260[_0xb8a1('0x11')]));});});};
\ No newline at end of file
+var _0xf662=['message','info','result','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','include','map','model','stringify','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x1460f6,_0x59051a){var _0x46ce94=function(_0x1c3ddf){while(--_0x1c3ddf){_0x1460f6['push'](_0x1460f6['shift']());}};_0x46ce94(++_0x59051a);}(_0xf662,0x116));var _0x2f66=function(_0x441dd4,_0x582db9){_0x441dd4=_0x441dd4-0x0;var _0x54ea8b=_0xf662[_0x441dd4];return _0x54ea8b;};'use strict';var _=require(_0x2f66('0x0'));var util=require('util');var moment=require(_0x2f66('0x1'));var BPromise=require(_0x2f66('0x2'));var rs=require(_0x2f66('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2f66('0x4'))['db'];var utils=require(_0x2f66('0x5'));var logger=require(_0x2f66('0x6'))(_0x2f66('0x7'));var config=require(_0x2f66('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2f66('0x9')][_0x2f66('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b8d36,_0x23c3a4,_0x4a9aa9){return new BPromise(function(_0x203dbc,_0x964da0){return client[_0x2f66('0xb')](_0x1b8d36,_0x4a9aa9)[_0x2f66('0xc')](function(_0x2536ee){logger['info'](_0x2f66('0xd'),_0x23c3a4,'request\x20sent');logger[_0x2f66('0xe')](_0x2f66('0xf'),_0x23c3a4,_0x2f66('0x10'),JSON['stringify'](_0x2536ee));if(_0x2536ee[_0x2f66('0x11')]){if(_0x2536ee['error'][_0x2f66('0x12')]===0x1f4){logger[_0x2f66('0x11')](_0x2f66('0xd'),_0x23c3a4,_0x2536ee[_0x2f66('0x11')]['message']);return _0x964da0(_0x2536ee[_0x2f66('0x11')][_0x2f66('0x13')]);}logger['error'](_0x2f66('0xd'),_0x23c3a4,_0x2536ee[_0x2f66('0x11')][_0x2f66('0x13')]);return _0x203dbc(_0x2536ee['error'][_0x2f66('0x13')]);}else{logger[_0x2f66('0x14')](_0x2f66('0xd'),_0x23c3a4,_0x2f66('0x10'));_0x203dbc(_0x2536ee[_0x2f66('0x15')][_0x2f66('0x13')]);}})['catch'](function(_0x5acfd4){logger[_0x2f66('0x11')](_0x2f66('0xd'),_0x23c3a4,_0x5acfd4);_0x964da0(_0x5acfd4);});});}exports[_0x2f66('0x16')]=function(_0x57cb75){var _0x5062f1=this;return new Promise(function(_0x48d83c,_0x4fc041){return db[_0x2f66('0x17')][_0x2f66('0x18')]({'raw':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1a')]===undefined?!![]:![]:!![],'where':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')]['where']||null:null,'attributes':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1b')]||null:null,'limit':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')]['limit']||null:null,'include':_0x57cb75[_0x2f66('0x19')]?_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1c')]?_[_0x2f66('0x1d')](_0x57cb75[_0x2f66('0x19')][_0x2f66('0x1c')],function(_0x3a8aac){return{'model':db[_0x3a8aac[_0x2f66('0x1e')]],'as':_0x3a8aac['as'],'attributes':_0x3a8aac['attributes'],'include':_0x3a8aac['include']?_[_0x2f66('0x1d')](_0x3a8aac['include'],function(_0x5bc595){return{'model':db[_0x5bc595[_0x2f66('0x1e')]],'as':_0x5bc595['as'],'attributes':_0x5bc595[_0x2f66('0x1b')],'include':_0x5bc595[_0x2f66('0x1c')]?_[_0x2f66('0x1d')](_0x5bc595[_0x2f66('0x1c')],function(_0x4ad805){return{'model':db[_0x4ad805[_0x2f66('0x1e')]],'as':_0x4ad805['as'],'attributes':_0x4ad805[_0x2f66('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2f66('0xc')](function(_0xfd6cf6){logger[_0x2f66('0x14')](_0x2f66('0x16'),_0x57cb75);logger[_0x2f66('0xe')](_0x2f66('0x16'),_0x57cb75,JSON[_0x2f66('0x1f')](_0xfd6cf6));_0x48d83c(_0xfd6cf6);})[_0x2f66('0x20')](function(_0x319d9d){logger['error']('GetMailServerIn',_0x319d9d[_0x2f66('0x13')],_0x57cb75);_0x4fc041(_0x5062f1[_0x2f66('0x11')](0x1f4,_0x319d9d['message']));});});};
\ No newline at end of file
index 7238abf..3ee71e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x7a54,0x106));var _0x47a5=function(_0x3e5a0b,_0x5a2baf){_0x3e5a0b=_0x3e5a0b-0x0;var _0x3cfb0d=_0x7a54[_0x3e5a0b];return _0x3cfb0d;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7a54,0x106));var _0x47a5=function(_0x4068e1,_0x457fe7){_0x4068e1=_0x4068e1-0x0;var _0x37c621=_0x7a54[_0x4068e1];return _0x37c621;};'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 1ef3a63..2aedc9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x327a99,_0x40cf09){var _0x153384=function(_0x49dd69){while(--_0x49dd69){_0x327a99['push'](_0x327a99['shift']());}};_0x153384(++_0x40cf09);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x29d0b6,_0x2daba3){_0x29d0b6=_0x29d0b6-0x0;var _0x5aee39=_0xd4f4[_0x29d0b6];return _0x5aee39;};'use strict';var Sequelize=require(_0x4d4f('0x0'));module[_0x4d4f('0x1')]={'description':{'type':Sequelize[_0x4d4f('0x2')]},'host':{'type':Sequelize[_0x4d4f('0x2')]},'user':{'type':Sequelize[_0x4d4f('0x2')]},'pass':{'type':Sequelize[_0x4d4f('0x2')]},'port':{'type':Sequelize[_0x4d4f('0x3')]},'secure':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x4d4f('0x2')]},'authentication':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xac4a=['exports','STRING','BOOLEAN','sequelize'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xac4a,0x13f));var _0xaac4=function(_0x4c5834,_0x23565b){_0x4c5834=_0x4c5834-0x0;var _0x56afde=_0xac4a[_0x4c5834];return _0x56afde;};'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
index ac97c5e..f419819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69fa=['crypto','jsforce','querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','Content-Range','apply','reject','then','destroy','error','stack','name','send','map','MailServerOut','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','where','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','intersection','include','find','create','update','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x69fa,0x1a2));var _0xa69f=function(_0x5da0d9,_0x49ee54){_0x5da0d9=_0x5da0d9-0x0;var _0x4b6d2f=_0x69fa[_0x5da0d9];return _0x4b6d2f;};'use strict';var emlformat=require(_0xa69f('0x0'));var rimraf=require(_0xa69f('0x1'));var zipdir=require(_0xa69f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa69f('0x3'));var moment=require(_0xa69f('0x4'));var BPromise=require(_0xa69f('0x5'));var Mustache=require(_0xa69f('0x6'));var util=require(_0xa69f('0x7'));var path=require(_0xa69f('0x8'));var sox=require(_0xa69f('0x9'));var csv=require(_0xa69f('0xa'));var ejs=require(_0xa69f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa69f('0xc'));var squel=require(_0xa69f('0xd'));var crypto=require(_0xa69f('0xe'));var jsforce=require(_0xa69f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa69f('0xa'));var querystring=require(_0xa69f('0x10'));var Papa=require('papaparse');var Redis=require(_0xa69f('0x11'));var authService=require(_0xa69f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa69f('0x13'))(_0xa69f('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa69f('0x15'));var db=require(_0xa69f('0x16'))['db'];function respondWithStatusCode(_0x364117,_0x2c0eac){_0x2c0eac=_0x2c0eac||0xcc;return function(_0x13c0d0){if(_0x13c0d0){return _0x364117[_0xa69f('0x17')](_0x2c0eac);}return _0x364117['status'](_0x2c0eac)[_0xa69f('0x18')]();};}function respondWithResult(_0x275005,_0x537315){_0x537315=_0x537315||0xc8;return function(_0x35987b){if(_0x35987b){return _0x275005['status'](_0x537315)[_0xa69f('0x19')](_0x35987b);}};}function respondWithFilteredResult(_0x57f91a,_0x173b1a){return function(_0x1557d4){if(_0x1557d4){var _0x40d3d7=typeof _0x173b1a[_0xa69f('0x1a')]==='undefined'&&typeof _0x173b1a[_0xa69f('0x1b')]===_0xa69f('0x1c');var _0x506206=_0x1557d4[_0xa69f('0x1d')];var _0x3442f1=_0x40d3d7?0x0:_0x173b1a['offset'];var _0x13f60a=_0x40d3d7?_0x1557d4[_0xa69f('0x1d')]:_0x173b1a[_0xa69f('0x1a')]+_0x173b1a[_0xa69f('0x1b')];var _0x477150;if(_0x13f60a>=_0x506206){_0x13f60a=_0x506206;_0x477150=0xc8;}else{_0x477150=0xce;}_0x57f91a[_0xa69f('0x1e')](_0x477150);return _0x57f91a['set'](_0xa69f('0x1f'),_0x3442f1+'-'+_0x13f60a+'/'+_0x506206)[_0xa69f('0x19')](_0x1557d4);}return null;};}function patchUpdates(_0x5d5199){return function(_0xdb0495){try{jsonpatch[_0xa69f('0x20')](_0xdb0495,_0x5d5199,!![]);}catch(_0x5ef80e){return BPromise[_0xa69f('0x21')](_0x5ef80e);}return _0xdb0495['save']();};}function saveUpdates(_0x566fc5,_0x2c530f){return function(_0x1e1fb8){if(_0x1e1fb8){return _0x1e1fb8['update'](_0x566fc5)[_0xa69f('0x22')](function(_0x569253){return _0x569253;});}return null;};}function removeEntity(_0x5556da,_0x1665b1){return function(_0x4a9ebe){if(_0x4a9ebe){return _0x4a9ebe[_0xa69f('0x23')]()['then'](function(){_0x5556da[_0xa69f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dc61e,_0x31dc90){return function(_0x28b663){if(!_0x28b663){_0x5dc61e[_0xa69f('0x17')](0x194);}return _0x28b663;};}function handleError(_0x5546bf,_0x318eea){_0x318eea=_0x318eea||0x1f4;return function(_0x484470){logger[_0xa69f('0x24')](_0x484470[_0xa69f('0x25')]);if(_0x484470[_0xa69f('0x26')]){delete _0x484470[_0xa69f('0x26')];}_0x5546bf[_0xa69f('0x1e')](_0x318eea)[_0xa69f('0x27')](_0x484470);};}exports['index']=function(_0x1d51bb,_0x522039){var _0x348a4d={},_0x5343a6={},_0x40df26={'count':0x0,'rows':[]};var _0x7c47a6=_[_0xa69f('0x28')](db[_0xa69f('0x29')][_0xa69f('0x2a')],function(_0x2958de){return{'name':_0x2958de['fieldName'],'type':_0x2958de['type'][_0xa69f('0x2b')]};});_0x5343a6[_0xa69f('0x2c')]=_['map'](_0x7c47a6,_0xa69f('0x26'));_0x5343a6[_0xa69f('0x2d')]=_[_0xa69f('0x2e')](_0x1d51bb[_0xa69f('0x2d')]);_0x5343a6[_0xa69f('0x2f')]=_['intersection'](_0x5343a6[_0xa69f('0x2c')],_0x5343a6[_0xa69f('0x2d')]);_0x348a4d[_0xa69f('0x30')]=_['intersection'](_0x5343a6[_0xa69f('0x2c')],qs[_0xa69f('0x31')](_0x1d51bb[_0xa69f('0x2d')]['fields']));_0x348a4d[_0xa69f('0x30')]=_0x348a4d[_0xa69f('0x30')][_0xa69f('0x32')]?_0x348a4d[_0xa69f('0x30')]:_0x5343a6['model'];if(!_0x1d51bb[_0xa69f('0x2d')][_0xa69f('0x33')](_0xa69f('0x34'))){_0x348a4d[_0xa69f('0x1b')]=qs[_0xa69f('0x1b')](_0x1d51bb['query'][_0xa69f('0x1b')]);_0x348a4d[_0xa69f('0x1a')]=qs[_0xa69f('0x1a')](_0x1d51bb['query']['offset']);}_0x348a4d[_0xa69f('0x35')]=qs['sort'](_0x1d51bb[_0xa69f('0x2d')]['sort']);_0x348a4d[_0xa69f('0x36')]=qs['filters'](_['pick'](_0x1d51bb[_0xa69f('0x2d')],_0x5343a6[_0xa69f('0x2f')]),_0x7c47a6);if(_0x1d51bb[_0xa69f('0x2d')]['filter']){_0x348a4d[_0xa69f('0x36')]=_[_0xa69f('0x37')](_0x348a4d[_0xa69f('0x36')],{'$or':_[_0xa69f('0x28')](_0x7c47a6,function(_0x4263fc){if(_0x4263fc[_0xa69f('0x38')]!==_0xa69f('0x39')){var _0x2afba2={};_0x2afba2[_0x4263fc[_0xa69f('0x26')]]={'$like':'%'+_0x1d51bb[_0xa69f('0x2d')][_0xa69f('0x3a')]+'%'};return _0x2afba2;}})});}_0x348a4d=_['merge']({},_0x348a4d,_0x1d51bb[_0xa69f('0x3b')]);var _0x14d124={'where':_0x348a4d['where']};return db[_0xa69f('0x29')][_0xa69f('0x1d')](_0x14d124)[_0xa69f('0x22')](function(_0x3cd375){_0x40df26[_0xa69f('0x1d')]=_0x3cd375;if(_0x1d51bb[_0xa69f('0x2d')][_0xa69f('0x3c')]){_0x348a4d['include']=[{'all':!![]}];}return db[_0xa69f('0x29')][_0xa69f('0x3d')](_0x348a4d);})['then'](function(_0x128486){_0x40df26[_0xa69f('0x3e')]=_0x128486;return _0x40df26;})[_0xa69f('0x22')](respondWithFilteredResult(_0x522039,_0x348a4d))[_0xa69f('0x3f')](handleError(_0x522039,null));};exports[_0xa69f('0x40')]=function(_0x5523f0,_0x150783){var _0x2e4b94={'raw':!![],'where':{'id':_0x5523f0[_0xa69f('0x41')]['id']}},_0x1788e1={};_0x1788e1[_0xa69f('0x2c')]=_['keys'](db['MailServerOut'][_0xa69f('0x2a')]);_0x1788e1[_0xa69f('0x2d')]=_['keys'](_0x5523f0['query']);_0x1788e1[_0xa69f('0x2f')]=_['intersection'](_0x1788e1[_0xa69f('0x2c')],_0x1788e1[_0xa69f('0x2d')]);_0x2e4b94['attributes']=_[_0xa69f('0x42')](_0x1788e1['model'],qs[_0xa69f('0x31')](_0x5523f0[_0xa69f('0x2d')][_0xa69f('0x31')]));_0x2e4b94[_0xa69f('0x30')]=_0x2e4b94[_0xa69f('0x30')][_0xa69f('0x32')]?_0x2e4b94[_0xa69f('0x30')]:_0x1788e1[_0xa69f('0x2c')];if(_0x5523f0[_0xa69f('0x2d')]['includeAll']){_0x2e4b94[_0xa69f('0x43')]=[{'all':!![]}];}_0x2e4b94=_['merge']({},_0x2e4b94,_0x5523f0[_0xa69f('0x3b')]);return db[_0xa69f('0x29')][_0xa69f('0x44')](_0x2e4b94)['then'](handleEntityNotFound(_0x150783,null))['then'](respondWithResult(_0x150783,null))[_0xa69f('0x3f')](handleError(_0x150783,null));};exports[_0xa69f('0x45')]=function(_0x102091,_0x1ead1d){return db[_0xa69f('0x29')][_0xa69f('0x45')](_0x102091['body'],{})[_0xa69f('0x22')](respondWithResult(_0x1ead1d,0xc9))[_0xa69f('0x3f')](handleError(_0x1ead1d,null));};exports[_0xa69f('0x46')]=function(_0x1b439b,_0x326204){if(_0x1b439b[_0xa69f('0x47')]['id']){delete _0x1b439b[_0xa69f('0x47')]['id'];}return db[_0xa69f('0x29')][_0xa69f('0x44')]({'where':{'id':_0x1b439b[_0xa69f('0x41')]['id']}})[_0xa69f('0x22')](handleEntityNotFound(_0x326204,null))[_0xa69f('0x22')](saveUpdates(_0x1b439b['body'],null))[_0xa69f('0x22')](respondWithResult(_0x326204,null))[_0xa69f('0x3f')](handleError(_0x326204,null));};exports[_0xa69f('0x23')]=function(_0x2f8801,_0x13c2c7){return db['MailServerOut'][_0xa69f('0x44')]({'where':{'id':_0x2f8801['params']['id']}})['then'](handleEntityNotFound(_0x13c2c7,null))['then'](removeEntity(_0x13c2c7,null))[_0xa69f('0x3f')](handleError(_0x13c2c7,null));};
\ No newline at end of file
+var _0x8898=['jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','offset','undefined','limit','count','status','Content-Range','apply','save','update','then','destroy','stack','name','map','MailServerOut','rawAttributes','fieldName','type','key','model','filters','intersection','fields','query','attributes','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','squel'];(function(_0x4ac862,_0x439bf5){var _0x1b33ba=function(_0x4dec87){while(--_0x4dec87){_0x4ac862['push'](_0x4ac862['shift']());}};_0x1b33ba(++_0x439bf5);}(_0x8898,0x1df));var _0x8889=function(_0x3fec43,_0x2a9ce6){_0x3fec43=_0x3fec43-0x0;var _0x509d14=_0x8898[_0x3fec43];return _0x509d14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8889('0x0'));var zipdir=require(_0x8889('0x1'));var jsonpatch=require(_0x8889('0x2'));var rp=require('request-promise');var moment=require(_0x8889('0x3'));var BPromise=require(_0x8889('0x4'));var Mustache=require('mustache');var util=require(_0x8889('0x5'));var path=require(_0x8889('0x6'));var sox=require(_0x8889('0x7'));var csv=require('to-csv');var ejs=require(_0x8889('0x8'));var fs=require('fs');var fs_extra=require(_0x8889('0x9'));var _=require('lodash');var squel=require(_0x8889('0xa'));var crypto=require('crypto');var jsforce=require(_0x8889('0xb'));var deskjs=require(_0x8889('0xc'));var toCsv=require(_0x8889('0xd'));var querystring=require(_0x8889('0xe'));var Papa=require(_0x8889('0xf'));var Redis=require(_0x8889('0x10'));var authService=require(_0x8889('0x11'));var qs=require(_0x8889('0x12'));var as=require(_0x8889('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8889('0x14'));var utils=require(_0x8889('0x15'));var config=require(_0x8889('0x16'));var licenseUtil=require(_0x8889('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x179968,_0x212173){_0x212173=_0x212173||0xcc;return function(_0x23f3ad){if(_0x23f3ad){return _0x179968[_0x8889('0x18')](_0x212173);}return _0x179968['status'](_0x212173)['end']();};}function respondWithResult(_0x4dc5f6,_0x4286b4){_0x4286b4=_0x4286b4||0xc8;return function(_0x2e1e97){if(_0x2e1e97){return _0x4dc5f6['status'](_0x4286b4)['json'](_0x2e1e97);}};}function respondWithFilteredResult(_0x7d19ec,_0x1e88e0){return function(_0x3fdfbf){if(_0x3fdfbf){var _0x5713f2=typeof _0x1e88e0[_0x8889('0x19')]===_0x8889('0x1a')&&typeof _0x1e88e0[_0x8889('0x1b')]==='undefined';var _0x121dae=_0x3fdfbf[_0x8889('0x1c')];var _0x58b583=_0x5713f2?0x0:_0x1e88e0[_0x8889('0x19')];var _0x2e46e3=_0x5713f2?_0x3fdfbf[_0x8889('0x1c')]:_0x1e88e0[_0x8889('0x19')]+_0x1e88e0[_0x8889('0x1b')];var _0x5ba105;if(_0x2e46e3>=_0x121dae){_0x2e46e3=_0x121dae;_0x5ba105=0xc8;}else{_0x5ba105=0xce;}_0x7d19ec[_0x8889('0x1d')](_0x5ba105);return _0x7d19ec['set'](_0x8889('0x1e'),_0x58b583+'-'+_0x2e46e3+'/'+_0x121dae)['json'](_0x3fdfbf);}return null;};}function patchUpdates(_0xbb9ced){return function(_0xdf323b){try{jsonpatch[_0x8889('0x1f')](_0xdf323b,_0xbb9ced,!![]);}catch(_0x5079ba){return BPromise['reject'](_0x5079ba);}return _0xdf323b[_0x8889('0x20')]();};}function saveUpdates(_0x3bd5ee,_0xc514e8){return function(_0x399d34){if(_0x399d34){return _0x399d34[_0x8889('0x21')](_0x3bd5ee)[_0x8889('0x22')](function(_0x5cfa6f){return _0x5cfa6f;});}return null;};}function removeEntity(_0x8d916a,_0x2410f9){return function(_0x37c857){if(_0x37c857){return _0x37c857[_0x8889('0x23')]()[_0x8889('0x22')](function(){_0x8d916a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xcf8347,_0x1f6023){return function(_0x4e8c51){if(!_0x4e8c51){_0xcf8347['sendStatus'](0x194);}return _0x4e8c51;};}function handleError(_0x5d662b,_0x49f118){_0x49f118=_0x49f118||0x1f4;return function(_0xe212fc){logger['error'](_0xe212fc[_0x8889('0x24')]);if(_0xe212fc[_0x8889('0x25')]){delete _0xe212fc[_0x8889('0x25')];}_0x5d662b['status'](_0x49f118)['send'](_0xe212fc);};}exports['index']=function(_0x303653,_0x7de0de){var _0x1d0420={},_0x5ad0bd={},_0x2dd9fd={'count':0x0,'rows':[]};var _0x389236=_[_0x8889('0x26')](db[_0x8889('0x27')][_0x8889('0x28')],function(_0x3c4419){return{'name':_0x3c4419[_0x8889('0x29')],'type':_0x3c4419[_0x8889('0x2a')][_0x8889('0x2b')]};});_0x5ad0bd[_0x8889('0x2c')]=_[_0x8889('0x26')](_0x389236,'name');_0x5ad0bd['query']=_['keys'](_0x303653['query']);_0x5ad0bd[_0x8889('0x2d')]=_[_0x8889('0x2e')](_0x5ad0bd['model'],_0x5ad0bd['query']);_0x1d0420['attributes']=_['intersection'](_0x5ad0bd['model'],qs[_0x8889('0x2f')](_0x303653[_0x8889('0x30')][_0x8889('0x2f')]));_0x1d0420['attributes']=_0x1d0420[_0x8889('0x31')]['length']?_0x1d0420['attributes']:_0x5ad0bd[_0x8889('0x2c')];if(!_0x303653[_0x8889('0x30')][_0x8889('0x32')]('nolimit')){_0x1d0420['limit']=qs[_0x8889('0x1b')](_0x303653[_0x8889('0x30')][_0x8889('0x1b')]);_0x1d0420[_0x8889('0x19')]=qs['offset'](_0x303653[_0x8889('0x30')]['offset']);}_0x1d0420[_0x8889('0x33')]=qs[_0x8889('0x34')](_0x303653[_0x8889('0x30')][_0x8889('0x34')]);_0x1d0420[_0x8889('0x35')]=qs['filters'](_['pick'](_0x303653[_0x8889('0x30')],_0x5ad0bd['filters']),_0x389236);if(_0x303653[_0x8889('0x30')][_0x8889('0x36')]){_0x1d0420['where']=_['merge'](_0x1d0420['where'],{'$or':_[_0x8889('0x26')](_0x389236,function(_0x1fdfde){if(_0x1fdfde['type']!==_0x8889('0x37')){var _0x2402c2={};_0x2402c2[_0x1fdfde[_0x8889('0x25')]]={'$like':'%'+_0x303653[_0x8889('0x30')][_0x8889('0x36')]+'%'};return _0x2402c2;}})});}_0x1d0420=_[_0x8889('0x38')]({},_0x1d0420,_0x303653['options']);var _0x4f6b58={'where':_0x1d0420[_0x8889('0x35')]};return db[_0x8889('0x27')][_0x8889('0x1c')](_0x4f6b58)[_0x8889('0x22')](function(_0x14551f){_0x2dd9fd['count']=_0x14551f;if(_0x303653[_0x8889('0x30')][_0x8889('0x39')]){_0x1d0420[_0x8889('0x3a')]=[{'all':!![]}];}return db['MailServerOut'][_0x8889('0x3b')](_0x1d0420);})[_0x8889('0x22')](function(_0x455ae9){_0x2dd9fd[_0x8889('0x3c')]=_0x455ae9;return _0x2dd9fd;})['then'](respondWithFilteredResult(_0x7de0de,_0x1d0420))[_0x8889('0x3d')](handleError(_0x7de0de,null));};exports[_0x8889('0x3e')]=function(_0x31b94b,_0x3fb8d6){var _0x1d90fc={'raw':!![],'where':{'id':_0x31b94b[_0x8889('0x3f')]['id']}},_0x129b36={};_0x129b36[_0x8889('0x2c')]=_[_0x8889('0x40')](db['MailServerOut'][_0x8889('0x28')]);_0x129b36[_0x8889('0x30')]=_[_0x8889('0x40')](_0x31b94b[_0x8889('0x30')]);_0x129b36[_0x8889('0x2d')]=_[_0x8889('0x2e')](_0x129b36[_0x8889('0x2c')],_0x129b36[_0x8889('0x30')]);_0x1d90fc['attributes']=_[_0x8889('0x2e')](_0x129b36[_0x8889('0x2c')],qs['fields'](_0x31b94b[_0x8889('0x30')][_0x8889('0x2f')]));_0x1d90fc[_0x8889('0x31')]=_0x1d90fc[_0x8889('0x31')][_0x8889('0x41')]?_0x1d90fc[_0x8889('0x31')]:_0x129b36[_0x8889('0x2c')];if(_0x31b94b[_0x8889('0x30')][_0x8889('0x39')]){_0x1d90fc[_0x8889('0x3a')]=[{'all':!![]}];}_0x1d90fc=_[_0x8889('0x38')]({},_0x1d90fc,_0x31b94b[_0x8889('0x42')]);return db[_0x8889('0x27')][_0x8889('0x43')](_0x1d90fc)[_0x8889('0x22')](handleEntityNotFound(_0x3fb8d6,null))[_0x8889('0x22')](respondWithResult(_0x3fb8d6,null))['catch'](handleError(_0x3fb8d6,null));};exports[_0x8889('0x44')]=function(_0x3ed05c,_0x110397){return db['MailServerOut'][_0x8889('0x44')](_0x3ed05c[_0x8889('0x45')],{})['then'](respondWithResult(_0x110397,0xc9))['catch'](handleError(_0x110397,null));};exports['update']=function(_0x4ef5bd,_0x3cbe86){if(_0x4ef5bd[_0x8889('0x45')]['id']){delete _0x4ef5bd[_0x8889('0x45')]['id'];}return db[_0x8889('0x27')]['find']({'where':{'id':_0x4ef5bd[_0x8889('0x3f')]['id']}})[_0x8889('0x22')](handleEntityNotFound(_0x3cbe86,null))['then'](saveUpdates(_0x4ef5bd[_0x8889('0x45')],null))[_0x8889('0x22')](respondWithResult(_0x3cbe86,null))[_0x8889('0x3d')](handleError(_0x3cbe86,null));};exports['destroy']=function(_0x2e6443,_0x181673){return db[_0x8889('0x27')][_0x8889('0x43')]({'where':{'id':_0x2e6443[_0x8889('0x3f')]['id']}})[_0x8889('0x22')](handleEntityNotFound(_0x181673,null))['then'](removeEntity(_0x181673,null))['catch'](handleError(_0x181673,null));};
\ No newline at end of file
index 3d59ce9..4a73e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa819=['./mailServerOut.attributes','exports','define','mail_servers_out','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x42cdec,_0x225506){var _0x39da03=function(_0x233820){while(--_0x233820){_0x42cdec['push'](_0x42cdec['shift']());}};_0x39da03(++_0x225506);}(_0xa819,0x1e5));var _0x9a81=function(_0x4168f1,_0x5d6c56){_0x4168f1=_0x4168f1-0x0;var _0x2399f8=_0xa819[_0x4168f1];return _0x2399f8;};'use strict';var _=require('lodash');var util=require(_0x9a81('0x0'));var logger=require(_0x9a81('0x1'))(_0x9a81('0x2'));var moment=require(_0x9a81('0x3'));var BPromise=require(_0x9a81('0x4'));var rp=require(_0x9a81('0x5'));var fs=require('fs');var path=require(_0x9a81('0x6'));var rimraf=require(_0x9a81('0x7'));var config=require(_0x9a81('0x8'));var attributes=require(_0x9a81('0x9'));module[_0x9a81('0xa')]=function(_0x16e151,_0x461f0d){return _0x16e151[_0x9a81('0xb')]('MailServerOut',attributes,{'tableName':_0x9a81('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x00ec=['exports','mail_servers_out','lodash','util','api','request-promise','rimraf','./mailServerOut.attributes'];(function(_0x426323,_0x2ce530){var _0xa347f6=function(_0x267c9f){while(--_0x267c9f){_0x426323['push'](_0x426323['shift']());}};_0xa347f6(++_0x2ce530);}(_0x00ec,0xea));var _0xc00e=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0x00ec[_0x104e21];return _0x605b37;};'use strict';var _=require(_0xc00e('0x0'));var util=require(_0xc00e('0x1'));var logger=require('../../config/logger')(_0xc00e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc00e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc00e('0x4'));var config=require('../../config/environment');var attributes=require(_0xc00e('0x5'));module[_0xc00e('0x6')]=function(_0x4bf0d3,_0x1c9ae1){return _0x4bf0d3['define']('MailServerOut',attributes,{'tableName':_0xc00e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83fb6fb..254d460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x362e34,_0x292a90){var _0x3dee3c=function(_0x5dfbaa){while(--_0x5dfbaa){_0x362e34['push'](_0x362e34['shift']());}};_0x3dee3c(++_0x292a90);}(_0x5f2f,0x73));var _0xf5f2=function(_0x383ddf,_0x4fb41f){_0x383ddf=_0x383ddf-0x0;var _0x2c44ab=_0x5f2f[_0x383ddf];return _0x2c44ab;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x49c780,_0x6e9159){var _0xa1f1fb=function(_0x2829a9){while(--_0x2829a9){_0x49c780['push'](_0x49c780['shift']());}};_0xa1f1fb(++_0x6e9159);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 0bb5f2c..7c731db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5673=['index','describe','show','post','/:id','path','fs-extra','../../components/auth/service','../../components/interaction/service','./mailSubstatus.controller','get','isAuthenticated'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5673,0x161));var _0x3567=function(_0x4f84c3,_0x6d094d){_0x4f84c3=_0x4f84c3-0x0;var _0x460f9f=_0x5673[_0x4f84c3];return _0x460f9f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3567('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x3567('0x1'));var auth=require(_0x3567('0x2'));var interaction=require(_0x3567('0x3'));var config=require('../../config/environment');var controller=require(_0x3567('0x4'));router[_0x3567('0x5')]('/',auth[_0x3567('0x6')](),controller[_0x3567('0x7')]);router[_0x3567('0x5')]('/describe',auth[_0x3567('0x6')](),controller[_0x3567('0x8')]);router[_0x3567('0x5')]('/:id',auth['isAuthenticated'](),controller[_0x3567('0x9')]);router[_0x3567('0xa')]('/',auth[_0x3567('0x6')](),controller['create']);router['put'](_0x3567('0xb'),auth[_0x3567('0x6')](),controller['update']);router['delete'](_0x3567('0xb'),auth[_0x3567('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x977b=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','describe','/:id','show','post','create','put'];(function(_0x5328b6,_0x4eb292){var _0x51ddbc=function(_0x5d87b9){while(--_0x5d87b9){_0x5328b6['push'](_0x5328b6['shift']());}};_0x51ddbc(++_0x4eb292);}(_0x977b,0x6b));var _0xb977=function(_0x50d94a,_0x4bb055){_0x50d94a=_0x50d94a-0x0;var _0x4b88ec=_0x977b[_0x50d94a];return _0x4b88ec;};'use strict';var multer=require(_0xb977('0x0'));var util=require(_0xb977('0x1'));var path=require(_0xb977('0x2'));var timeout=require(_0xb977('0x3'));var express=require(_0xb977('0x4'));var router=express['Router']();var fs_extra=require(_0xb977('0x5'));var auth=require(_0xb977('0x6'));var interaction=require(_0xb977('0x7'));var config=require(_0xb977('0x8'));var controller=require(_0xb977('0x9'));router['get']('/',auth[_0xb977('0xa')](),controller[_0xb977('0xb')]);router[_0xb977('0xc')]('/describe',auth[_0xb977('0xa')](),controller[_0xb977('0xd')]);router[_0xb977('0xc')](_0xb977('0xe'),auth[_0xb977('0xa')](),controller[_0xb977('0xf')]);router[_0xb977('0x10')]('/',auth[_0xb977('0xa')](),controller[_0xb977('0x11')]);router[_0xb977('0x12')]('/:id',auth[_0xb977('0xa')](),controller['update']);router['delete'](_0xb977('0xe'),auth['isAuthenticated'](),controller[_0xb977('0x13')]);module[_0xb977('0x14')]=router;
\ No newline at end of file
index 2c5f2b1..b5c1683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf072=['STRING','sequelize','exports'];(function(_0x2580b8,_0x3d820b){var _0x4f7c7b=function(_0x4776ab){while(--_0x4776ab){_0x2580b8['push'](_0x2580b8['shift']());}};_0x4f7c7b(++_0x3d820b);}(_0xf072,0x1cf));var _0x2f07=function(_0x186fc0,_0x568027){_0x186fc0=_0x186fc0-0x0;var _0x2c0b9b=_0xf072[_0x186fc0];return _0x2c0b9b;};'use strict';var Sequelize=require(_0x2f07('0x0'));module[_0x2f07('0x1')]={'name':{'type':Sequelize[_0x2f07('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2f07('0x2')]}};
\ No newline at end of file
+var _0x11e5=['name','sequelize','STRING'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x11e5,0x8b));var _0x511e=function(_0x36fc1d,_0x103b11){_0x36fc1d=_0x36fc1d-0x0;var _0x4630be=_0x11e5[_0x36fc1d];return _0x4630be;};'use strict';var Sequelize=require(_0x511e('0x0'));module['exports']={'name':{'type':Sequelize[_0x511e('0x1')],'unique':_0x511e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f45d2c3..186dbb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d8=['offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','name','index','MailSubstatus','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xa7d8,0xba));var _0x8a7d=function(_0xa123ce,_0x23736d){_0xa123ce=_0xa123ce-0x0;var _0x4bfdee=_0xa7d8[_0xa123ce];return _0x4bfdee;};'use strict';var emlformat=require(_0x8a7d('0x0'));var rimraf=require(_0x8a7d('0x1'));var zipdir=require(_0x8a7d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8a7d('0x3'));var moment=require(_0x8a7d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8a7d('0x5'));var util=require(_0x8a7d('0x6'));var path=require(_0x8a7d('0x7'));var sox=require(_0x8a7d('0x8'));var csv=require(_0x8a7d('0x9'));var ejs=require(_0x8a7d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8a7d('0xb'));var crypto=require(_0x8a7d('0xc'));var jsforce=require(_0x8a7d('0xd'));var deskjs=require(_0x8a7d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8a7d('0xf'));var Papa=require(_0x8a7d('0x10'));var Redis=require(_0x8a7d('0x11'));var authService=require(_0x8a7d('0x12'));var qs=require(_0x8a7d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8a7d('0x14'));var logger=require(_0x8a7d('0x15'))(_0x8a7d('0x16'));var utils=require('../../config/utils');var config=require(_0x8a7d('0x17'));var licenseUtil=require(_0x8a7d('0x18'));var db=require(_0x8a7d('0x19'))['db'];function respondWithStatusCode(_0xd14949,_0x2134c3){_0x2134c3=_0x2134c3||0xcc;return function(_0x103b81){if(_0x103b81){return _0xd14949[_0x8a7d('0x1a')](_0x2134c3);}return _0xd14949[_0x8a7d('0x1b')](_0x2134c3)[_0x8a7d('0x1c')]();};}function respondWithResult(_0x1d7f0a,_0x15f854){_0x15f854=_0x15f854||0xc8;return function(_0x227748){if(_0x227748){return _0x1d7f0a[_0x8a7d('0x1b')](_0x15f854)[_0x8a7d('0x1d')](_0x227748);}};}function respondWithFilteredResult(_0x183973,_0x5adf19){return function(_0x3886cb){if(_0x3886cb){var _0x2ee444=typeof _0x5adf19[_0x8a7d('0x1e')]===_0x8a7d('0x1f')&&typeof _0x5adf19[_0x8a7d('0x20')]===_0x8a7d('0x1f');var _0xf1684e=_0x3886cb[_0x8a7d('0x21')];var _0x232a9d=_0x2ee444?0x0:_0x5adf19[_0x8a7d('0x1e')];var _0x2deb7b=_0x2ee444?_0x3886cb['count']:_0x5adf19['offset']+_0x5adf19[_0x8a7d('0x20')];var _0xa4d700;if(_0x2deb7b>=_0xf1684e){_0x2deb7b=_0xf1684e;_0xa4d700=0xc8;}else{_0xa4d700=0xce;}_0x183973['status'](_0xa4d700);return _0x183973[_0x8a7d('0x22')](_0x8a7d('0x23'),_0x232a9d+'-'+_0x2deb7b+'/'+_0xf1684e)[_0x8a7d('0x1d')](_0x3886cb);}return null;};}function patchUpdates(_0x42fb12){return function(_0x142f3d){try{jsonpatch[_0x8a7d('0x24')](_0x142f3d,_0x42fb12,!![]);}catch(_0x51b102){return BPromise[_0x8a7d('0x25')](_0x51b102);}return _0x142f3d['save']();};}function saveUpdates(_0x57539d,_0x387f28){return function(_0x28cf2f){if(_0x28cf2f){return _0x28cf2f['update'](_0x57539d)[_0x8a7d('0x26')](function(_0x4d6762){return _0x4d6762;});}return null;};}function removeEntity(_0x29f441,_0x2b8f8c){return function(_0xc90ef5){if(_0xc90ef5){return _0xc90ef5['destroy']()[_0x8a7d('0x26')](function(){_0x29f441[_0x8a7d('0x1b')](0xcc)[_0x8a7d('0x1c')]();});}};}function handleEntityNotFound(_0x3e4d41,_0x33a96){return function(_0x44dd39){if(!_0x44dd39){_0x3e4d41[_0x8a7d('0x1a')](0x194);}return _0x44dd39;};}function handleError(_0x9a7f75,_0x1ab10c){_0x1ab10c=_0x1ab10c||0x1f4;return function(_0x2d3c2b){logger[_0x8a7d('0x27')](_0x2d3c2b['stack']);if(_0x2d3c2b[_0x8a7d('0x28')]){delete _0x2d3c2b['name'];}_0x9a7f75[_0x8a7d('0x1b')](_0x1ab10c)['send'](_0x2d3c2b);};}exports[_0x8a7d('0x29')]=function(_0x572649,_0x1e2c5c){var _0x157661={},_0x1819cc={},_0x32d583={'count':0x0,'rows':[]};var _0xd54ae4=_['map'](db[_0x8a7d('0x2a')][_0x8a7d('0x2b')],function(_0x159a05){return{'name':_0x159a05[_0x8a7d('0x2c')],'type':_0x159a05[_0x8a7d('0x2d')][_0x8a7d('0x2e')]};});_0x1819cc[_0x8a7d('0x2f')]=_[_0x8a7d('0x30')](_0xd54ae4,'name');_0x1819cc[_0x8a7d('0x31')]=_[_0x8a7d('0x32')](_0x572649[_0x8a7d('0x31')]);_0x1819cc[_0x8a7d('0x33')]=_[_0x8a7d('0x34')](_0x1819cc['model'],_0x1819cc[_0x8a7d('0x31')]);_0x157661[_0x8a7d('0x35')]=_[_0x8a7d('0x34')](_0x1819cc[_0x8a7d('0x2f')],qs[_0x8a7d('0x36')](_0x572649['query'][_0x8a7d('0x36')]));_0x157661[_0x8a7d('0x35')]=_0x157661['attributes'][_0x8a7d('0x37')]?_0x157661[_0x8a7d('0x35')]:_0x1819cc['model'];if(!_0x572649['query']['hasOwnProperty'](_0x8a7d('0x38'))){_0x157661[_0x8a7d('0x20')]=qs[_0x8a7d('0x20')](_0x572649['query'][_0x8a7d('0x20')]);_0x157661[_0x8a7d('0x1e')]=qs[_0x8a7d('0x1e')](_0x572649[_0x8a7d('0x31')][_0x8a7d('0x1e')]);}_0x157661[_0x8a7d('0x39')]=qs[_0x8a7d('0x3a')](_0x572649['query']['sort']);_0x157661[_0x8a7d('0x3b')]=qs[_0x8a7d('0x33')](_[_0x8a7d('0x3c')](_0x572649[_0x8a7d('0x31')],_0x1819cc[_0x8a7d('0x33')]),_0xd54ae4);if(_0x572649[_0x8a7d('0x31')][_0x8a7d('0x3d')]){_0x157661[_0x8a7d('0x3b')]=_[_0x8a7d('0x3e')](_0x157661[_0x8a7d('0x3b')],{'$or':_[_0x8a7d('0x30')](_0xd54ae4,function(_0x1875e4){if(_0x1875e4['type']!==_0x8a7d('0x3f')){var _0x2831e3={};_0x2831e3[_0x1875e4['name']]={'$like':'%'+_0x572649[_0x8a7d('0x31')][_0x8a7d('0x3d')]+'%'};return _0x2831e3;}})});}_0x157661=_['merge']({},_0x157661,_0x572649['options']);var _0x15c5f2={'where':_0x157661[_0x8a7d('0x3b')]};return db[_0x8a7d('0x2a')][_0x8a7d('0x21')](_0x15c5f2)['then'](function(_0x321840){_0x32d583[_0x8a7d('0x21')]=_0x321840;if(_0x572649[_0x8a7d('0x31')]['includeAll']){_0x157661[_0x8a7d('0x40')]=[{'all':!![]}];}return db[_0x8a7d('0x2a')][_0x8a7d('0x41')](_0x157661);})[_0x8a7d('0x26')](function(_0x5e5014){_0x32d583['rows']=_0x5e5014;return _0x32d583;})['then'](respondWithFilteredResult(_0x1e2c5c,_0x157661))[_0x8a7d('0x42')](handleError(_0x1e2c5c,null));};exports['show']=function(_0x1a768a,_0xb8bbe1){var _0x444249={'raw':!![],'where':{'id':_0x1a768a[_0x8a7d('0x43')]['id']}},_0x18183b={};_0x18183b[_0x8a7d('0x2f')]=_['keys'](db[_0x8a7d('0x2a')][_0x8a7d('0x2b')]);_0x18183b[_0x8a7d('0x31')]=_[_0x8a7d('0x32')](_0x1a768a[_0x8a7d('0x31')]);_0x18183b[_0x8a7d('0x33')]=_[_0x8a7d('0x34')](_0x18183b[_0x8a7d('0x2f')],_0x18183b[_0x8a7d('0x31')]);_0x444249[_0x8a7d('0x35')]=_['intersection'](_0x18183b['model'],qs[_0x8a7d('0x36')](_0x1a768a[_0x8a7d('0x31')]['fields']));_0x444249['attributes']=_0x444249['attributes'][_0x8a7d('0x37')]?_0x444249['attributes']:_0x18183b['model'];if(_0x1a768a[_0x8a7d('0x31')]['includeAll']){_0x444249[_0x8a7d('0x40')]=[{'all':!![]}];}_0x444249=_['merge']({},_0x444249,_0x1a768a['options']);return db[_0x8a7d('0x2a')][_0x8a7d('0x44')](_0x444249)[_0x8a7d('0x26')](handleEntityNotFound(_0xb8bbe1,null))['then'](respondWithResult(_0xb8bbe1,null))[_0x8a7d('0x42')](handleError(_0xb8bbe1,null));};exports[_0x8a7d('0x45')]=function(_0x41119d,_0x2f8d0c){return db[_0x8a7d('0x2a')]['create'](_0x41119d['body'],{})[_0x8a7d('0x26')](respondWithResult(_0x2f8d0c,0xc9))['catch'](handleError(_0x2f8d0c,null));};exports['update']=function(_0x5bf188,_0x3ad450){if(_0x5bf188[_0x8a7d('0x46')]['id']){delete _0x5bf188[_0x8a7d('0x46')]['id'];}return db[_0x8a7d('0x2a')][_0x8a7d('0x44')]({'where':{'id':_0x5bf188[_0x8a7d('0x43')]['id']}})[_0x8a7d('0x26')](handleEntityNotFound(_0x3ad450,null))[_0x8a7d('0x26')](saveUpdates(_0x5bf188[_0x8a7d('0x46')],null))[_0x8a7d('0x26')](respondWithResult(_0x3ad450,null))[_0x8a7d('0x42')](handleError(_0x3ad450,null));};exports['destroy']=function(_0x4c2bfe,_0x4787c6){return db[_0x8a7d('0x2a')][_0x8a7d('0x44')]({'where':{'id':_0x4c2bfe[_0x8a7d('0x43')]['id']}})[_0x8a7d('0x26')](handleEntityNotFound(_0x4787c6,null))[_0x8a7d('0x26')](removeEntity(_0x4787c6,null))[_0x8a7d('0x42')](handleError(_0x4787c6,null));};exports['describe']=function(_0x2c9680,_0x3656db){return db['MailSubstatus'][_0x8a7d('0x47')]()[_0x8a7d('0x26')](respondWithResult(_0x3656db,null))[_0x8a7d('0x42')](handleError(_0x3656db,null));};
\ No newline at end of file
+var _0x93ba=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','intersection','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','end','error','send','index','map','MailSubstatus','rawAttributes','type','key','model','name','query','keys','filters'];(function(_0x124341,_0x4f4207){var _0x297c51=function(_0x1c8c81){while(--_0x1c8c81){_0x124341['push'](_0x124341['shift']());}};_0x297c51(++_0x4f4207);}(_0x93ba,0x146));var _0xa93b=function(_0x1c8b42,_0x134903){_0x1c8b42=_0x1c8b42-0x0;var _0x888687=_0x93ba[_0x1c8b42];return _0x888687;};'use strict';var emlformat=require(_0xa93b('0x0'));var rimraf=require(_0xa93b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa93b('0x2'));var moment=require(_0xa93b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa93b('0x4'));var util=require(_0xa93b('0x5'));var path=require(_0xa93b('0x6'));var sox=require(_0xa93b('0x7'));var csv=require(_0xa93b('0x8'));var ejs=require(_0xa93b('0x9'));var fs=require('fs');var fs_extra=require(_0xa93b('0xa'));var _=require(_0xa93b('0xb'));var squel=require(_0xa93b('0xc'));var crypto=require(_0xa93b('0xd'));var jsforce=require(_0xa93b('0xe'));var deskjs=require(_0xa93b('0xf'));var toCsv=require(_0xa93b('0x8'));var querystring=require(_0xa93b('0x10'));var Papa=require('papaparse');var Redis=require(_0xa93b('0x11'));var authService=require(_0xa93b('0x12'));var qs=require(_0xa93b('0x13'));var as=require(_0xa93b('0x14'));var hardwareService=require(_0xa93b('0x15'));var logger=require(_0xa93b('0x16'))(_0xa93b('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa93b('0x18'));var db=require(_0xa93b('0x19'))['db'];function respondWithStatusCode(_0x5bcf37,_0x202d0d){_0x202d0d=_0x202d0d||0xcc;return function(_0x1f7774){if(_0x1f7774){return _0x5bcf37[_0xa93b('0x1a')](_0x202d0d);}return _0x5bcf37[_0xa93b('0x1b')](_0x202d0d)['end']();};}function respondWithResult(_0x1a2c29,_0x3bf0f4){_0x3bf0f4=_0x3bf0f4||0xc8;return function(_0x4b5cfd){if(_0x4b5cfd){return _0x1a2c29['status'](_0x3bf0f4)['json'](_0x4b5cfd);}};}function respondWithFilteredResult(_0x10183d,_0x426e82){return function(_0x3d313a){if(_0x3d313a){var _0x35b497=typeof _0x426e82[_0xa93b('0x1c')]===_0xa93b('0x1d')&&typeof _0x426e82[_0xa93b('0x1e')]===_0xa93b('0x1d');var _0x23631f=_0x3d313a[_0xa93b('0x1f')];var _0x542d97=_0x35b497?0x0:_0x426e82[_0xa93b('0x1c')];var _0x46ff3b=_0x35b497?_0x3d313a[_0xa93b('0x1f')]:_0x426e82[_0xa93b('0x1c')]+_0x426e82[_0xa93b('0x1e')];var _0x3a3ef8;if(_0x46ff3b>=_0x23631f){_0x46ff3b=_0x23631f;_0x3a3ef8=0xc8;}else{_0x3a3ef8=0xce;}_0x10183d[_0xa93b('0x1b')](_0x3a3ef8);return _0x10183d[_0xa93b('0x20')](_0xa93b('0x21'),_0x542d97+'-'+_0x46ff3b+'/'+_0x23631f)[_0xa93b('0x22')](_0x3d313a);}return null;};}function patchUpdates(_0x26a60d){return function(_0x47535b){try{jsonpatch[_0xa93b('0x23')](_0x47535b,_0x26a60d,!![]);}catch(_0x4c8511){return BPromise[_0xa93b('0x24')](_0x4c8511);}return _0x47535b[_0xa93b('0x25')]();};}function saveUpdates(_0x225232,_0x31f058){return function(_0x42d350){if(_0x42d350){return _0x42d350[_0xa93b('0x26')](_0x225232)[_0xa93b('0x27')](function(_0x3d2d3f){return _0x3d2d3f;});}return null;};}function removeEntity(_0x3d01e2,_0x5895a2){return function(_0x1f5b3f){if(_0x1f5b3f){return _0x1f5b3f['destroy']()[_0xa93b('0x27')](function(){_0x3d01e2[_0xa93b('0x1b')](0xcc)[_0xa93b('0x28')]();});}};}function handleEntityNotFound(_0x5299a0,_0x3c35bd){return function(_0x48e9eb){if(!_0x48e9eb){_0x5299a0[_0xa93b('0x1a')](0x194);}return _0x48e9eb;};}function handleError(_0x3b53f5,_0x5e0411){_0x5e0411=_0x5e0411||0x1f4;return function(_0x868d28){logger[_0xa93b('0x29')](_0x868d28['stack']);if(_0x868d28['name']){delete _0x868d28['name'];}_0x3b53f5['status'](_0x5e0411)[_0xa93b('0x2a')](_0x868d28);};}exports[_0xa93b('0x2b')]=function(_0x4728f0,_0x5d5227){var _0x21f481={},_0x4427ea={},_0x5b4700={'count':0x0,'rows':[]};var _0x468239=_[_0xa93b('0x2c')](db[_0xa93b('0x2d')][_0xa93b('0x2e')],function(_0x272c76){return{'name':_0x272c76['fieldName'],'type':_0x272c76[_0xa93b('0x2f')][_0xa93b('0x30')]};});_0x4427ea[_0xa93b('0x31')]=_[_0xa93b('0x2c')](_0x468239,_0xa93b('0x32'));_0x4427ea[_0xa93b('0x33')]=_[_0xa93b('0x34')](_0x4728f0[_0xa93b('0x33')]);_0x4427ea[_0xa93b('0x35')]=_['intersection'](_0x4427ea['model'],_0x4427ea[_0xa93b('0x33')]);_0x21f481['attributes']=_['intersection'](_0x4427ea[_0xa93b('0x31')],qs[_0xa93b('0x36')](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x36')]));_0x21f481[_0xa93b('0x37')]=_0x21f481['attributes'][_0xa93b('0x38')]?_0x21f481[_0xa93b('0x37')]:_0x4427ea['model'];if(!_0x4728f0[_0xa93b('0x33')][_0xa93b('0x39')](_0xa93b('0x3a'))){_0x21f481['limit']=qs['limit'](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x1e')]);_0x21f481[_0xa93b('0x1c')]=qs['offset'](_0x4728f0[_0xa93b('0x33')][_0xa93b('0x1c')]);}_0x21f481[_0xa93b('0x3b')]=qs[_0xa93b('0x3c')](_0x4728f0[_0xa93b('0x33')]['sort']);_0x21f481[_0xa93b('0x3d')]=qs['filters'](_['pick'](_0x4728f0['query'],_0x4427ea[_0xa93b('0x35')]),_0x468239);if(_0x4728f0[_0xa93b('0x33')][_0xa93b('0x3e')]){_0x21f481['where']=_[_0xa93b('0x3f')](_0x21f481['where'],{'$or':_['map'](_0x468239,function(_0x51e336){if(_0x51e336['type']!=='VIRTUAL'){var _0x2c6f82={};_0x2c6f82[_0x51e336[_0xa93b('0x32')]]={'$like':'%'+_0x4728f0[_0xa93b('0x33')][_0xa93b('0x3e')]+'%'};return _0x2c6f82;}})});}_0x21f481=_['merge']({},_0x21f481,_0x4728f0[_0xa93b('0x40')]);var _0x49a8d6={'where':_0x21f481[_0xa93b('0x3d')]};return db['MailSubstatus'][_0xa93b('0x1f')](_0x49a8d6)['then'](function(_0x150e31){_0x5b4700[_0xa93b('0x1f')]=_0x150e31;if(_0x4728f0[_0xa93b('0x33')][_0xa93b('0x41')]){_0x21f481[_0xa93b('0x42')]=[{'all':!![]}];}return db['MailSubstatus'][_0xa93b('0x43')](_0x21f481);})[_0xa93b('0x27')](function(_0x21121b){_0x5b4700[_0xa93b('0x44')]=_0x21121b;return _0x5b4700;})[_0xa93b('0x27')](respondWithFilteredResult(_0x5d5227,_0x21f481))[_0xa93b('0x45')](handleError(_0x5d5227,null));};exports['show']=function(_0x4fc6d6,_0x1c6825){var _0x24ae10={'raw':!![],'where':{'id':_0x4fc6d6['params']['id']}},_0x5669f8={};_0x5669f8[_0xa93b('0x31')]=_['keys'](db[_0xa93b('0x2d')]['rawAttributes']);_0x5669f8[_0xa93b('0x33')]=_[_0xa93b('0x34')](_0x4fc6d6[_0xa93b('0x33')]);_0x5669f8[_0xa93b('0x35')]=_[_0xa93b('0x46')](_0x5669f8[_0xa93b('0x31')],_0x5669f8[_0xa93b('0x33')]);_0x24ae10[_0xa93b('0x37')]=_[_0xa93b('0x46')](_0x5669f8[_0xa93b('0x31')],qs[_0xa93b('0x36')](_0x4fc6d6[_0xa93b('0x33')][_0xa93b('0x36')]));_0x24ae10[_0xa93b('0x37')]=_0x24ae10[_0xa93b('0x37')][_0xa93b('0x38')]?_0x24ae10[_0xa93b('0x37')]:_0x5669f8['model'];if(_0x4fc6d6[_0xa93b('0x33')][_0xa93b('0x41')]){_0x24ae10['include']=[{'all':!![]}];}_0x24ae10=_[_0xa93b('0x3f')]({},_0x24ae10,_0x4fc6d6['options']);return db['MailSubstatus'][_0xa93b('0x47')](_0x24ae10)[_0xa93b('0x27')](handleEntityNotFound(_0x1c6825,null))['then'](respondWithResult(_0x1c6825,null))[_0xa93b('0x45')](handleError(_0x1c6825,null));};exports[_0xa93b('0x48')]=function(_0xfbb074,_0x4fed24){return db[_0xa93b('0x2d')]['create'](_0xfbb074[_0xa93b('0x49')],{})['then'](respondWithResult(_0x4fed24,0xc9))['catch'](handleError(_0x4fed24,null));};exports[_0xa93b('0x26')]=function(_0x160999,_0x3b50a4){if(_0x160999[_0xa93b('0x49')]['id']){delete _0x160999[_0xa93b('0x49')]['id'];}return db['MailSubstatus']['find']({'where':{'id':_0x160999[_0xa93b('0x4a')]['id']}})[_0xa93b('0x27')](handleEntityNotFound(_0x3b50a4,null))[_0xa93b('0x27')](saveUpdates(_0x160999['body'],null))[_0xa93b('0x27')](respondWithResult(_0x3b50a4,null))[_0xa93b('0x45')](handleError(_0x3b50a4,null));};exports['destroy']=function(_0x191383,_0x75be33){return db['MailSubstatus'][_0xa93b('0x47')]({'where':{'id':_0x191383['params']['id']}})[_0xa93b('0x27')](handleEntityNotFound(_0x75be33,null))['then'](removeEntity(_0x75be33,null))[_0xa93b('0x45')](handleError(_0x75be33,null));};exports['describe']=function(_0x5ee0cc,_0x4bb77b){return db['MailSubstatus'][_0xa93b('0x4b')]()[_0xa93b('0x27')](respondWithResult(_0x4bb77b,null))[_0xa93b('0x45')](handleError(_0x4bb77b,null));};
\ No newline at end of file
index 0b07a22..3516d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee8=['emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','update'];(function(_0x2307fa,_0x266e5e){var _0x496486=function(_0x53466e){while(--_0x53466e){_0x2307fa['push'](_0x2307fa['shift']());}};_0x496486(++_0x266e5e);}(_0x6ee8,0x1df));var _0x86ee=function(_0x205659,_0x33a2f5){_0x205659=_0x205659-0x0;var _0x170029=_0x6ee8[_0x205659];return _0x170029;};'use strict';var EventEmitter=require(_0x86ee('0x0'));var MailSubstatus=require(_0x86ee('0x1'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x86ee('0x2')](0x0);var events={'afterUpdate':_0x86ee('0x3')};function emitEvent(_0x9e7657){return function(_0x47e9c6,_0x7492a8,_0x4b6fd3){MailSubstatusEvents[_0x86ee('0x4')](_0x9e7657+':'+_0x47e9c6['id'],_0x47e9c6);MailSubstatusEvents[_0x86ee('0x4')](_0x9e7657,_0x47e9c6);_0x4b6fd3(null);};}for(var e in events){if(events[_0x86ee('0x5')](e)){var event=events[e];MailSubstatus[_0x86ee('0x6')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0xabda=['emit','hasOwnProperty','hook','exports','events','MailSubstatus','setMaxListeners','update'];(function(_0x315a27,_0x261394){var _0x13c338=function(_0x346bae){while(--_0x346bae){_0x315a27['push'](_0x315a27['shift']());}};_0x13c338(++_0x261394);}(_0xabda,0x16c));var _0xaabd=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0xabda[_0x437d7f];return _0x31058c;};'use strict';var EventEmitter=require(_0xaabd('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0xaabd('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xaabd('0x2')](0x0);var events={'afterUpdate':_0xaabd('0x3')};function emitEvent(_0x18ffd4){return function(_0x51b2da,_0x44e83e,_0x482b73){MailSubstatusEvents['emit'](_0x18ffd4+':'+_0x51b2da['id'],_0x51b2da);MailSubstatusEvents[_0xaabd('0x4')](_0x18ffd4,_0x51b2da);_0x482b73(null);};}for(var e in events){if(events[_0xaabd('0x5')](e)){var event=events[e];MailSubstatus[_0xaabd('0x6')](e,emitEvent(event));}}module[_0xaabd('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 60ea752..65c7ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c90=['define','mail_substatuses','Condition','update','mailSubstatus','_previousDataValues','then','catch','exports','models'];(function(_0x359ff7,_0x77c061){var _0x3f5769=function(_0x39aefa){while(--_0x39aefa){_0x359ff7['push'](_0x359ff7['shift']());}};_0x3f5769(++_0x77c061);}(_0x6c90,0x1de));var _0x06c9=function(_0x2cd154,_0x31ca87){_0x2cd154=_0x2cd154-0x0;var _0x5a4618=_0x6c90[_0x2cd154];return _0x5a4618;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x06c9('0x0')]=function(_0x3f617d){var _0x526aaa=_0x3f617d[_0x06c9('0x1')];return _0x3f617d[_0x06c9('0x2')]('MailSubstatus',attributes,{'tableName':_0x06c9('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0xaf4ac1,_0x1e8649,_0x15cf54){return _0x526aaa[_0x06c9('0x4')][_0x06c9('0x5')]({'value':_0xaf4ac1['name']},{'where':{'field':_0x06c9('0x6'),'value':_0xaf4ac1[_0x06c9('0x7')]['name']}})[_0x06c9('0x8')](function(){_0x15cf54();})[_0x06c9('0x9')](function(_0x1c0fec){_0x15cf54(_0x1c0fec);});}}});};
\ No newline at end of file
+var _0x39b8=['mailSubstatus','_previousDataValues','exports','models','MailSubstatus','mail_substatuses','Condition','update','name'];(function(_0x3e6ead,_0x13ef53){var _0x268c4f=function(_0x2a4e86){while(--_0x2a4e86){_0x3e6ead['push'](_0x3e6ead['shift']());}};_0x268c4f(++_0x13ef53);}(_0x39b8,0x12b));var _0x839b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x39b8[_0x1facfa];return _0x9ec701;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x839b('0x0')]=function(_0x3fdd9c){var _0x31e857=_0x3fdd9c[_0x839b('0x1')];return _0x3fdd9c['define'](_0x839b('0x2'),attributes,{'tableName':_0x839b('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x565015,_0x204d12,_0x4ec4b8){return _0x31e857[_0x839b('0x4')][_0x839b('0x5')]({'value':_0x565015[_0x839b('0x6')]},{'where':{'field':_0x839b('0x7'),'value':_0x565015[_0x839b('0x8')]['name']}})['then'](function(){_0x4ec4b8();})['catch'](function(_0x175617){_0x4ec4b8(_0x175617);});}}});};
\ No newline at end of file
index 484a4c8..a981628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc30e=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc30e,0x193));var _0xec30=function(_0x830034,_0x2bf3aa){_0x830034=_0x830034-0x0;var _0x148afa=_0xc30e[_0x830034];return _0x148afa;};'use strict';var _=require(_0xec30('0x0'));var util=require(_0xec30('0x1'));var moment=require(_0xec30('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec30('0x3'));var db=require(_0xec30('0x4'))['db'];var utils=require(_0xec30('0x5'));var logger=require(_0xec30('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xec30('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x594e20,_0x545fc3,_0x2a42be){return new BPromise(function(_0x2cd2bd,_0x5b3066){return client[_0xec30('0x8')](_0x594e20,_0x2a42be)[_0xec30('0x9')](function(_0xdcf211){logger[_0xec30('0xa')](_0xec30('0xb'),_0x545fc3,_0xec30('0xc'));logger[_0xec30('0xd')](_0xec30('0xe'),_0x545fc3,_0xec30('0xc'),JSON[_0xec30('0xf')](_0xdcf211));if(_0xdcf211['error']){if(_0xdcf211['error']['code']===0x1f4){logger[_0xec30('0x10')](_0xec30('0xb'),_0x545fc3,_0xdcf211['error'][_0xec30('0x11')]);return _0x5b3066(_0xdcf211['error'][_0xec30('0x11')]);}logger['error'](_0xec30('0xb'),_0x545fc3,_0xdcf211[_0xec30('0x10')]['message']);return _0x2cd2bd(_0xdcf211[_0xec30('0x10')][_0xec30('0x11')]);}else{logger[_0xec30('0xa')](_0xec30('0xb'),_0x545fc3,_0xec30('0xc'));_0x2cd2bd(_0xdcf211[_0xec30('0x12')][_0xec30('0x11')]);}})[_0xec30('0x13')](function(_0x1aeb4c){logger[_0xec30('0x10')](_0xec30('0xb'),_0x545fc3,_0x1aeb4c);_0x5b3066(_0x1aeb4c);});});}
\ No newline at end of file
+var _0x3565=['debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x28c30c,_0x38139b){var _0x108055=function(_0x437963){while(--_0x437963){_0x28c30c['push'](_0x28c30c['shift']());}};_0x108055(++_0x38139b);}(_0x3565,0xce));var _0x5356=function(_0x56eced,_0x325450){_0x56eced=_0x56eced-0x0;var _0x4e95bb=_0x3565[_0x56eced];return _0x4e95bb;};'use strict';var _=require(_0x5356('0x0'));var util=require(_0x5356('0x1'));var moment=require('moment');var BPromise=require(_0x5356('0x2'));var rs=require(_0x5356('0x3'));var fs=require('fs');var Redis=require(_0x5356('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5356('0x5'))(_0x5356('0x6'));var config=require(_0x5356('0x7'));var jayson=require(_0x5356('0x8'));var client=jayson[_0x5356('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3873d8,_0x2c3db9,_0x3dae21){return new BPromise(function(_0x457f97,_0x3b7463){return client['request'](_0x3873d8,_0x3dae21)[_0x5356('0xa')](function(_0x2daeaa){logger[_0x5356('0xb')](_0x5356('0xc'),_0x2c3db9,_0x5356('0xd'));logger[_0x5356('0xe')](_0x5356('0xf'),_0x2c3db9,'request\x20sent',JSON[_0x5356('0x10')](_0x2daeaa));if(_0x2daeaa[_0x5356('0x11')]){if(_0x2daeaa[_0x5356('0x11')][_0x5356('0x12')]===0x1f4){logger['error'](_0x5356('0xc'),_0x2c3db9,_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);return _0x3b7463(_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);}logger['error']('MailSubstatus,\x20%s,\x20%s',_0x2c3db9,_0x2daeaa[_0x5356('0x11')]['message']);return _0x457f97(_0x2daeaa[_0x5356('0x11')][_0x5356('0x13')]);}else{logger['info']('MailSubstatus,\x20%s,\x20%s',_0x2c3db9,'request\x20sent');_0x457f97(_0x2daeaa[_0x5356('0x14')][_0x5356('0x13')]);}})[_0x5356('0x15')](function(_0x159dd4){logger[_0x5356('0x11')](_0x5356('0xc'),_0x2c3db9,_0x159dd4);_0x3b7463(_0x159dd4);});});}
\ No newline at end of file
index 1fbee10..4c1095a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4f=['isAuthenticated','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get'];(function(_0x54de5d,_0x1f8b26){var _0x1b349e=function(_0xe199cc){while(--_0xe199cc){_0x54de5d['push'](_0x54de5d['shift']());}};_0x1b349e(++_0x1f8b26);}(_0x5c4f,0x170));var _0xf5c4=function(_0x316763,_0x44dcfb){_0x316763=_0x316763-0x0;var _0x1afed0=_0x5c4f[_0x316763];return _0x1afed0;};'use strict';var multer=require(_0xf5c4('0x0'));var util=require(_0xf5c4('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf5c4('0x2'));var router=express[_0xf5c4('0x3')]();var fs_extra=require(_0xf5c4('0x4'));var auth=require(_0xf5c4('0x5'));var interaction=require(_0xf5c4('0x6'));var config=require(_0xf5c4('0x7'));var controller=require(_0xf5c4('0x8'));router[_0xf5c4('0x9')]('/',auth[_0xf5c4('0xa')](),controller['index']);router[_0xf5c4('0x9')](_0xf5c4('0xb'),auth[_0xf5c4('0xa')](),controller[_0xf5c4('0xc')]);router[_0xf5c4('0x9')](_0xf5c4('0xd'),auth['isAuthenticated'](),controller[_0xf5c4('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf5c4('0xf')]);router[_0xf5c4('0x10')]('/:id',auth[_0xf5c4('0xa')](),controller[_0xf5c4('0x11')]);router[_0xf5c4('0x12')]('/:id',auth[_0xf5c4('0xa')](),controller[_0xf5c4('0x13')]);module[_0xf5c4('0x14')]=router;
\ No newline at end of file
+var _0x410a=['../../config/environment','./mailTransferReport.controller','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x166744,_0x1ae2e6){var _0x4068b5=function(_0x5ecc92){while(--_0x5ecc92){_0x166744['push'](_0x166744['shift']());}};_0x4068b5(++_0x1ae2e6);}(_0x410a,0x1da));var _0xa410=function(_0x3cdd29,_0x47dbdc){_0x3cdd29=_0x3cdd29-0x0;var _0xf52aec=_0x410a[_0x3cdd29];return _0xf52aec;};'use strict';var multer=require('multer');var util=require(_0xa410('0x0'));var path=require(_0xa410('0x1'));var timeout=require('connect-timeout');var express=require(_0xa410('0x2'));var router=express[_0xa410('0x3')]();var fs_extra=require(_0xa410('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa410('0x5'));var config=require(_0xa410('0x6'));var controller=require(_0xa410('0x7'));router[_0xa410('0x8')]('/',auth[_0xa410('0x9')](),controller['index']);router[_0xa410('0x8')]('/describe',auth[_0xa410('0x9')](),controller[_0xa410('0xa')]);router[_0xa410('0x8')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0xc')]);router[_0xa410('0xd')]('/',auth[_0xa410('0x9')](),controller[_0xa410('0xe')]);router[_0xa410('0xf')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0x10')]);router[_0xa410('0x11')](_0xa410('0xb'),auth[_0xa410('0x9')](),controller[_0xa410('0x12')]);module[_0xa410('0x13')]=router;
\ No newline at end of file
index a8d1b32..6afb169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x59c1be,_0xba160a){var _0x47c031=function(_0xb62b0b){while(--_0xb62b0b){_0x59c1be['push'](_0x59c1be['shift']());}};_0x47c031(++_0xba160a);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x1c003b,_0x493ceb){var _0x11a3ee=function(_0x1e6fa4){while(--_0x1e6fa4){_0x1c003b['push'](_0x1c003b['shift']());}};_0x11a3ee(++_0x493ceb);}(_0xf4eb,0xec));var _0xbf4e=function(_0x51099c,_0x251399){_0x51099c=_0x51099c-0x0;var _0x33d7cd=_0xf4eb[_0x51099c];return _0x33d7cd;};'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 8e6c785..557f3c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f76=['describe','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','sort','pick','filter','where','merge','type','MailTransferReport','includeAll','include','rows','catch','params','length','options','find','create','body'];(function(_0x2f3f36,_0x46f53f){var _0x56cc53=function(_0x507d59){while(--_0x507d59){_0x2f3f36['push'](_0x2f3f36['shift']());}};_0x56cc53(++_0x46f53f);}(_0x9f76,0x12d));var _0x69f7=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x9f76[_0x465028];return _0xb783d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x69f7('0x0'));var zipdir=require(_0x69f7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x69f7('0x2'));var BPromise=require(_0x69f7('0x3'));var Mustache=require(_0x69f7('0x4'));var util=require(_0x69f7('0x5'));var path=require(_0x69f7('0x6'));var sox=require(_0x69f7('0x7'));var csv=require(_0x69f7('0x8'));var ejs=require(_0x69f7('0x9'));var fs=require('fs');var fs_extra=require(_0x69f7('0xa'));var _=require(_0x69f7('0xb'));var squel=require(_0x69f7('0xc'));var crypto=require('crypto');var jsforce=require(_0x69f7('0xd'));var deskjs=require(_0x69f7('0xe'));var toCsv=require(_0x69f7('0x8'));var querystring=require(_0x69f7('0xf'));var Papa=require(_0x69f7('0x10'));var Redis=require(_0x69f7('0x11'));var authService=require(_0x69f7('0x12'));var qs=require(_0x69f7('0x13'));var as=require(_0x69f7('0x14'));var hardwareService=require(_0x69f7('0x15'));var logger=require(_0x69f7('0x16'))('api');var utils=require(_0x69f7('0x17'));var config=require(_0x69f7('0x18'));var licenseUtil=require(_0x69f7('0x19'));var db=require(_0x69f7('0x1a'))['db'];function respondWithStatusCode(_0x5da056,_0x149632){_0x149632=_0x149632||0xcc;return function(_0x5306a6){if(_0x5306a6){return _0x5da056[_0x69f7('0x1b')](_0x149632);}return _0x5da056[_0x69f7('0x1c')](_0x149632)[_0x69f7('0x1d')]();};}function respondWithResult(_0x4fdf17,_0x47b0d4){_0x47b0d4=_0x47b0d4||0xc8;return function(_0x1685bc){if(_0x1685bc){return _0x4fdf17[_0x69f7('0x1c')](_0x47b0d4)[_0x69f7('0x1e')](_0x1685bc);}};}function respondWithFilteredResult(_0x38fe75,_0xfc5f97){return function(_0x4c180e){if(_0x4c180e){var _0x39c44c=typeof _0xfc5f97[_0x69f7('0x1f')]===_0x69f7('0x20')&&typeof _0xfc5f97[_0x69f7('0x21')]==='undefined';var _0x5b16d8=_0x4c180e[_0x69f7('0x22')];var _0x23a68b=_0x39c44c?0x0:_0xfc5f97[_0x69f7('0x1f')];var _0x25e9ad=_0x39c44c?_0x4c180e[_0x69f7('0x22')]:_0xfc5f97[_0x69f7('0x1f')]+_0xfc5f97['limit'];var _0x314b36;if(_0x25e9ad>=_0x5b16d8){_0x25e9ad=_0x5b16d8;_0x314b36=0xc8;}else{_0x314b36=0xce;}_0x38fe75[_0x69f7('0x1c')](_0x314b36);return _0x38fe75[_0x69f7('0x23')]('Content-Range',_0x23a68b+'-'+_0x25e9ad+'/'+_0x5b16d8)[_0x69f7('0x1e')](_0x4c180e);}return null;};}function patchUpdates(_0x353b5c){return function(_0x25d8a1){try{jsonpatch[_0x69f7('0x24')](_0x25d8a1,_0x353b5c,!![]);}catch(_0x2eb0c9){return BPromise['reject'](_0x2eb0c9);}return _0x25d8a1[_0x69f7('0x25')]();};}function saveUpdates(_0x22d0f1,_0x2a67df){return function(_0xa91d8e){if(_0xa91d8e){return _0xa91d8e[_0x69f7('0x26')](_0x22d0f1)['then'](function(_0x36e2c0){return _0x36e2c0;});}return null;};}function removeEntity(_0x236dd4,_0x4f2f3c){return function(_0x5a0202){if(_0x5a0202){return _0x5a0202[_0x69f7('0x27')]()[_0x69f7('0x28')](function(){_0x236dd4[_0x69f7('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8a8092,_0x5a8121){return function(_0x14773b){if(!_0x14773b){_0x8a8092[_0x69f7('0x1b')](0x194);}return _0x14773b;};}function handleError(_0x505a35,_0xb5f0d9){_0xb5f0d9=_0xb5f0d9||0x1f4;return function(_0x28a73f){logger[_0x69f7('0x29')](_0x28a73f[_0x69f7('0x2a')]);if(_0x28a73f[_0x69f7('0x2b')]){delete _0x28a73f[_0x69f7('0x2b')];}_0x505a35['status'](_0xb5f0d9)[_0x69f7('0x2c')](_0x28a73f);};}exports[_0x69f7('0x2d')]=function(_0x485490,_0x4f7ba8){var _0x2e80df={},_0x36a679={},_0x18e478={'count':0x0,'rows':[]};var _0x3b5960=_[_0x69f7('0x2e')](db['MailTransferReport'][_0x69f7('0x2f')],function(_0x176119){return{'name':_0x176119[_0x69f7('0x30')],'type':_0x176119['type']['key']};});_0x36a679[_0x69f7('0x31')]=_['map'](_0x3b5960,'name');_0x36a679['query']=_[_0x69f7('0x32')](_0x485490[_0x69f7('0x33')]);_0x36a679[_0x69f7('0x34')]=_['intersection'](_0x36a679[_0x69f7('0x31')],_0x36a679[_0x69f7('0x33')]);_0x2e80df[_0x69f7('0x35')]=_[_0x69f7('0x36')](_0x36a679[_0x69f7('0x31')],qs[_0x69f7('0x37')](_0x485490[_0x69f7('0x33')][_0x69f7('0x37')]));_0x2e80df['attributes']=_0x2e80df[_0x69f7('0x35')]['length']?_0x2e80df[_0x69f7('0x35')]:_0x36a679[_0x69f7('0x31')];if(!_0x485490[_0x69f7('0x33')][_0x69f7('0x38')]('nolimit')){_0x2e80df[_0x69f7('0x21')]=qs[_0x69f7('0x21')](_0x485490[_0x69f7('0x33')]['limit']);_0x2e80df[_0x69f7('0x1f')]=qs[_0x69f7('0x1f')](_0x485490[_0x69f7('0x33')][_0x69f7('0x1f')]);}_0x2e80df['order']=qs[_0x69f7('0x39')](_0x485490['query']['sort']);_0x2e80df['where']=qs[_0x69f7('0x34')](_[_0x69f7('0x3a')](_0x485490[_0x69f7('0x33')],_0x36a679[_0x69f7('0x34')]),_0x3b5960);if(_0x485490['query'][_0x69f7('0x3b')]){_0x2e80df[_0x69f7('0x3c')]=_[_0x69f7('0x3d')](_0x2e80df['where'],{'$or':_[_0x69f7('0x2e')](_0x3b5960,function(_0x1e389c){if(_0x1e389c[_0x69f7('0x3e')]!=='VIRTUAL'){var _0x379a55={};_0x379a55[_0x1e389c['name']]={'$like':'%'+_0x485490[_0x69f7('0x33')][_0x69f7('0x3b')]+'%'};return _0x379a55;}})});}_0x2e80df=_[_0x69f7('0x3d')]({},_0x2e80df,_0x485490['options']);var _0xf0bf8f={'where':_0x2e80df[_0x69f7('0x3c')]};return db[_0x69f7('0x3f')][_0x69f7('0x22')](_0xf0bf8f)['then'](function(_0x535a0d){_0x18e478[_0x69f7('0x22')]=_0x535a0d;if(_0x485490[_0x69f7('0x33')][_0x69f7('0x40')]){_0x2e80df[_0x69f7('0x41')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x2e80df);})[_0x69f7('0x28')](function(_0x7ca37a){_0x18e478[_0x69f7('0x42')]=_0x7ca37a;return _0x18e478;})[_0x69f7('0x28')](respondWithFilteredResult(_0x4f7ba8,_0x2e80df))[_0x69f7('0x43')](handleError(_0x4f7ba8,null));};exports['show']=function(_0x24f66d,_0x17f4f2){var _0x30be76={'raw':!![],'where':{'id':_0x24f66d[_0x69f7('0x44')]['id']}},_0x46c444={};_0x46c444['model']=_[_0x69f7('0x32')](db[_0x69f7('0x3f')]['rawAttributes']);_0x46c444['query']=_['keys'](_0x24f66d[_0x69f7('0x33')]);_0x46c444[_0x69f7('0x34')]=_[_0x69f7('0x36')](_0x46c444[_0x69f7('0x31')],_0x46c444[_0x69f7('0x33')]);_0x30be76[_0x69f7('0x35')]=_[_0x69f7('0x36')](_0x46c444['model'],qs[_0x69f7('0x37')](_0x24f66d[_0x69f7('0x33')][_0x69f7('0x37')]));_0x30be76[_0x69f7('0x35')]=_0x30be76[_0x69f7('0x35')][_0x69f7('0x45')]?_0x30be76[_0x69f7('0x35')]:_0x46c444[_0x69f7('0x31')];if(_0x24f66d[_0x69f7('0x33')][_0x69f7('0x40')]){_0x30be76[_0x69f7('0x41')]=[{'all':!![]}];}_0x30be76=_[_0x69f7('0x3d')]({},_0x30be76,_0x24f66d[_0x69f7('0x46')]);return db[_0x69f7('0x3f')][_0x69f7('0x47')](_0x30be76)[_0x69f7('0x28')](handleEntityNotFound(_0x17f4f2,null))[_0x69f7('0x28')](respondWithResult(_0x17f4f2,null))['catch'](handleError(_0x17f4f2,null));};exports[_0x69f7('0x48')]=function(_0x57135a,_0x51f4ae){return db['MailTransferReport'][_0x69f7('0x48')](_0x57135a[_0x69f7('0x49')],{})[_0x69f7('0x28')](respondWithResult(_0x51f4ae,0xc9))['catch'](handleError(_0x51f4ae,null));};exports[_0x69f7('0x26')]=function(_0x1de323,_0x17cd84){if(_0x1de323[_0x69f7('0x49')]['id']){delete _0x1de323[_0x69f7('0x49')]['id'];}return db[_0x69f7('0x3f')]['find']({'where':{'id':_0x1de323['params']['id']}})[_0x69f7('0x28')](handleEntityNotFound(_0x17cd84,null))['then'](saveUpdates(_0x1de323['body'],null))[_0x69f7('0x28')](respondWithResult(_0x17cd84,null))[_0x69f7('0x43')](handleError(_0x17cd84,null));};exports[_0x69f7('0x27')]=function(_0x4ba96a,_0x34c640){return db[_0x69f7('0x3f')][_0x69f7('0x47')]({'where':{'id':_0x4ba96a['params']['id']}})[_0x69f7('0x28')](handleEntityNotFound(_0x34c640,null))['then'](removeEntity(_0x34c640,null))[_0x69f7('0x43')](handleError(_0x34c640,null));};exports[_0x69f7('0x4a')]=function(_0x1fcf21,_0x42c032){return db[_0x69f7('0x3f')][_0x69f7('0x4a')]()[_0x69f7('0x28')](respondWithResult(_0x42c032,null))[_0x69f7('0x43')](handleError(_0x42c032,null));};
\ No newline at end of file
+var _0x5c10=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','save','update','destroy','then','error','name','send','index','MailTransferReport','fieldName','model','map','keys','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','show','params','rawAttributes','find','catch','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x58a239,_0x54c4d3){var _0x1d185a=function(_0x240ef2){while(--_0x240ef2){_0x58a239['push'](_0x58a239['shift']());}};_0x1d185a(++_0x54c4d3);}(_0x5c10,0xd0));var _0x05c1=function(_0x324b28,_0x43c12e){_0x324b28=_0x324b28-0x0;var _0x2cac3d=_0x5c10[_0x324b28];return _0x2cac3d;};'use strict';var emlformat=require(_0x05c1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x05c1('0x1'));var rp=require(_0x05c1('0x2'));var moment=require(_0x05c1('0x3'));var BPromise=require(_0x05c1('0x4'));var Mustache=require(_0x05c1('0x5'));var util=require(_0x05c1('0x6'));var path=require(_0x05c1('0x7'));var sox=require('sox');var csv=require(_0x05c1('0x8'));var ejs=require(_0x05c1('0x9'));var fs=require('fs');var fs_extra=require(_0x05c1('0xa'));var _=require(_0x05c1('0xb'));var squel=require(_0x05c1('0xc'));var crypto=require(_0x05c1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x05c1('0xe'));var toCsv=require(_0x05c1('0x8'));var querystring=require('querystring');var Papa=require(_0x05c1('0xf'));var Redis=require(_0x05c1('0x10'));var authService=require(_0x05c1('0x11'));var qs=require(_0x05c1('0x12'));var as=require(_0x05c1('0x13'));var hardwareService=require(_0x05c1('0x14'));var logger=require(_0x05c1('0x15'))(_0x05c1('0x16'));var utils=require(_0x05c1('0x17'));var config=require(_0x05c1('0x18'));var licenseUtil=require(_0x05c1('0x19'));var db=require(_0x05c1('0x1a'))['db'];function respondWithStatusCode(_0x3adcbf,_0x1d1435){_0x1d1435=_0x1d1435||0xcc;return function(_0x323704){if(_0x323704){return _0x3adcbf[_0x05c1('0x1b')](_0x1d1435);}return _0x3adcbf[_0x05c1('0x1c')](_0x1d1435)[_0x05c1('0x1d')]();};}function respondWithResult(_0x3e4fbb,_0x3328ae){_0x3328ae=_0x3328ae||0xc8;return function(_0x490a46){if(_0x490a46){return _0x3e4fbb[_0x05c1('0x1c')](_0x3328ae)[_0x05c1('0x1e')](_0x490a46);}};}function respondWithFilteredResult(_0x480424,_0x144f1c){return function(_0x282022){if(_0x282022){var _0x30a40c=typeof _0x144f1c['offset']==='undefined'&&typeof _0x144f1c[_0x05c1('0x1f')]===_0x05c1('0x20');var _0x2ada03=_0x282022[_0x05c1('0x21')];var _0x46de2d=_0x30a40c?0x0:_0x144f1c['offset'];var _0x2d9cbf=_0x30a40c?_0x282022[_0x05c1('0x21')]:_0x144f1c[_0x05c1('0x22')]+_0x144f1c[_0x05c1('0x1f')];var _0x2a7120;if(_0x2d9cbf>=_0x2ada03){_0x2d9cbf=_0x2ada03;_0x2a7120=0xc8;}else{_0x2a7120=0xce;}_0x480424[_0x05c1('0x1c')](_0x2a7120);return _0x480424[_0x05c1('0x23')]('Content-Range',_0x46de2d+'-'+_0x2d9cbf+'/'+_0x2ada03)[_0x05c1('0x1e')](_0x282022);}return null;};}function patchUpdates(_0x3641a1){return function(_0x5db977){try{jsonpatch[_0x05c1('0x24')](_0x5db977,_0x3641a1,!![]);}catch(_0x1cc5b3){return BPromise['reject'](_0x1cc5b3);}return _0x5db977[_0x05c1('0x25')]();};}function saveUpdates(_0x4dbe13,_0x323515){return function(_0x142f7f){if(_0x142f7f){return _0x142f7f[_0x05c1('0x26')](_0x4dbe13)['then'](function(_0x2ad3c0){return _0x2ad3c0;});}return null;};}function removeEntity(_0x40ddcc,_0xf6447a){return function(_0x15180b){if(_0x15180b){return _0x15180b[_0x05c1('0x27')]()[_0x05c1('0x28')](function(){_0x40ddcc['status'](0xcc)[_0x05c1('0x1d')]();});}};}function handleEntityNotFound(_0x137844,_0x23d1ef){return function(_0x36b3f5){if(!_0x36b3f5){_0x137844[_0x05c1('0x1b')](0x194);}return _0x36b3f5;};}function handleError(_0x3ee0c2,_0x39f050){_0x39f050=_0x39f050||0x1f4;return function(_0x3a3bf0){logger[_0x05c1('0x29')](_0x3a3bf0['stack']);if(_0x3a3bf0[_0x05c1('0x2a')]){delete _0x3a3bf0[_0x05c1('0x2a')];}_0x3ee0c2['status'](_0x39f050)[_0x05c1('0x2b')](_0x3a3bf0);};}exports[_0x05c1('0x2c')]=function(_0x2a7a44,_0x59103d){var _0x4e96c5={},_0x22a469={},_0xe83bf2={'count':0x0,'rows':[]};var _0x404006=_['map'](db[_0x05c1('0x2d')]['rawAttributes'],function(_0x56c4fb){return{'name':_0x56c4fb[_0x05c1('0x2e')],'type':_0x56c4fb['type']['key']};});_0x22a469[_0x05c1('0x2f')]=_[_0x05c1('0x30')](_0x404006,'name');_0x22a469['query']=_[_0x05c1('0x31')](_0x2a7a44['query']);_0x22a469['filters']=_['intersection'](_0x22a469[_0x05c1('0x2f')],_0x22a469['query']);_0x4e96c5[_0x05c1('0x32')]=_[_0x05c1('0x33')](_0x22a469[_0x05c1('0x2f')],qs[_0x05c1('0x34')](_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x34')]));_0x4e96c5['attributes']=_0x4e96c5[_0x05c1('0x32')][_0x05c1('0x36')]?_0x4e96c5['attributes']:_0x22a469['model'];if(!_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x37')](_0x05c1('0x38'))){_0x4e96c5['limit']=qs['limit'](_0x2a7a44['query'][_0x05c1('0x1f')]);_0x4e96c5[_0x05c1('0x22')]=qs['offset'](_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x22')]);}_0x4e96c5[_0x05c1('0x39')]=qs[_0x05c1('0x3a')](_0x2a7a44['query']['sort']);_0x4e96c5[_0x05c1('0x3b')]=qs[_0x05c1('0x3c')](_[_0x05c1('0x3d')](_0x2a7a44[_0x05c1('0x35')],_0x22a469['filters']),_0x404006);if(_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x3e')]){_0x4e96c5[_0x05c1('0x3b')]=_[_0x05c1('0x3f')](_0x4e96c5[_0x05c1('0x3b')],{'$or':_[_0x05c1('0x30')](_0x404006,function(_0x4df4c3){if(_0x4df4c3[_0x05c1('0x40')]!=='VIRTUAL'){var _0x5dd46b={};_0x5dd46b[_0x4df4c3[_0x05c1('0x2a')]]={'$like':'%'+_0x2a7a44[_0x05c1('0x35')]['filter']+'%'};return _0x5dd46b;}})});}_0x4e96c5=_['merge']({},_0x4e96c5,_0x2a7a44[_0x05c1('0x41')]);var _0x3a0d32={'where':_0x4e96c5[_0x05c1('0x3b')]};return db[_0x05c1('0x2d')]['count'](_0x3a0d32)[_0x05c1('0x28')](function(_0x3bd1f0){_0xe83bf2[_0x05c1('0x21')]=_0x3bd1f0;if(_0x2a7a44[_0x05c1('0x35')][_0x05c1('0x42')]){_0x4e96c5[_0x05c1('0x43')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x4e96c5);})[_0x05c1('0x28')](function(_0x52d4fd){_0xe83bf2['rows']=_0x52d4fd;return _0xe83bf2;})[_0x05c1('0x28')](respondWithFilteredResult(_0x59103d,_0x4e96c5))['catch'](handleError(_0x59103d,null));};exports[_0x05c1('0x44')]=function(_0x2112e8,_0x3375b2){var _0x4ac10d={'raw':!![],'where':{'id':_0x2112e8[_0x05c1('0x45')]['id']}},_0x55a034={};_0x55a034['model']=_[_0x05c1('0x31')](db[_0x05c1('0x2d')][_0x05c1('0x46')]);_0x55a034[_0x05c1('0x35')]=_[_0x05c1('0x31')](_0x2112e8['query']);_0x55a034['filters']=_['intersection'](_0x55a034[_0x05c1('0x2f')],_0x55a034['query']);_0x4ac10d[_0x05c1('0x32')]=_[_0x05c1('0x33')](_0x55a034[_0x05c1('0x2f')],qs[_0x05c1('0x34')](_0x2112e8[_0x05c1('0x35')][_0x05c1('0x34')]));_0x4ac10d[_0x05c1('0x32')]=_0x4ac10d[_0x05c1('0x32')][_0x05c1('0x36')]?_0x4ac10d[_0x05c1('0x32')]:_0x55a034[_0x05c1('0x2f')];if(_0x2112e8['query'][_0x05c1('0x42')]){_0x4ac10d[_0x05c1('0x43')]=[{'all':!![]}];}_0x4ac10d=_[_0x05c1('0x3f')]({},_0x4ac10d,_0x2112e8[_0x05c1('0x41')]);return db[_0x05c1('0x2d')][_0x05c1('0x47')](_0x4ac10d)[_0x05c1('0x28')](handleEntityNotFound(_0x3375b2,null))[_0x05c1('0x28')](respondWithResult(_0x3375b2,null))[_0x05c1('0x48')](handleError(_0x3375b2,null));};exports[_0x05c1('0x49')]=function(_0x7c301e,_0x39697e){return db['MailTransferReport'][_0x05c1('0x49')](_0x7c301e['body'],{})[_0x05c1('0x28')](respondWithResult(_0x39697e,0xc9))[_0x05c1('0x48')](handleError(_0x39697e,null));};exports[_0x05c1('0x26')]=function(_0x262e2f,_0x22a1ed){if(_0x262e2f[_0x05c1('0x4a')]['id']){delete _0x262e2f['body']['id'];}return db[_0x05c1('0x2d')][_0x05c1('0x47')]({'where':{'id':_0x262e2f[_0x05c1('0x45')]['id']}})['then'](handleEntityNotFound(_0x22a1ed,null))['then'](saveUpdates(_0x262e2f[_0x05c1('0x4a')],null))['then'](respondWithResult(_0x22a1ed,null))[_0x05c1('0x48')](handleError(_0x22a1ed,null));};exports[_0x05c1('0x27')]=function(_0x5413f8,_0x365930){return db['MailTransferReport'][_0x05c1('0x47')]({'where':{'id':_0x5413f8['params']['id']}})['then'](handleEntityNotFound(_0x365930,null))[_0x05c1('0x28')](removeEntity(_0x365930,null))[_0x05c1('0x48')](handleError(_0x365930,null));};exports[_0x05c1('0x4b')]=function(_0x3e2a1c,_0x135a39){return db[_0x05c1('0x2d')][_0x05c1('0x4b')]()[_0x05c1('0x28')](respondWithResult(_0x135a39,null))[_0x05c1('0x48')](handleError(_0x135a39,null));};
\ No newline at end of file
index 1486865..00ea839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f91=['bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','lodash','util','../../config/logger','moment'];(function(_0x3be2b3,_0x419db0){var _0x7618ad=function(_0x497cae){while(--_0x497cae){_0x3be2b3['push'](_0x3be2b3['shift']());}};_0x7618ad(++_0x419db0);}(_0x2f91,0x98));var _0x12f9=function(_0x1cba22,_0x5f9561){_0x1cba22=_0x1cba22-0x0;var _0x23aad8=_0x2f91[_0x1cba22];return _0x23aad8;};'use strict';var _=require(_0x12f9('0x0'));var util=require(_0x12f9('0x1'));var logger=require(_0x12f9('0x2'))('api');var moment=require(_0x12f9('0x3'));var BPromise=require(_0x12f9('0x4'));var rp=require(_0x12f9('0x5'));var fs=require('fs');var path=require(_0x12f9('0x6'));var rimraf=require('rimraf');var config=require(_0x12f9('0x7'));var attributes=require(_0x12f9('0x8'));module[_0x12f9('0x9')]=function(_0xf06fa3,_0x57a5ff){return _0xf06fa3[_0x12f9('0xa')](_0x12f9('0xb'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5270=['define','MailTransferReport','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes'];(function(_0x427c90,_0x3babf9){var _0x200955=function(_0x231fc1){while(--_0x231fc1){_0x427c90['push'](_0x427c90['shift']());}};_0x200955(++_0x3babf9);}(_0x5270,0xab));var _0x0527=function(_0x573117,_0x1334c0){_0x573117=_0x573117-0x0;var _0x388d11=_0x5270[_0x573117];return _0x388d11;};'use strict';var _=require(_0x0527('0x0'));var util=require(_0x0527('0x1'));var logger=require('../../config/logger')(_0x0527('0x2'));var moment=require(_0x0527('0x3'));var BPromise=require(_0x0527('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0527('0x5'));var rimraf=require(_0x0527('0x6'));var config=require(_0x0527('0x7'));var attributes=require(_0x0527('0x8'));module['exports']=function(_0x3dd3b9,_0x3dd735){return _0x3dd3b9[_0x0527('0x9')](_0x0527('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x0527('0xb'),'fields':[_0x0527('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 34d40d7..64940ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f47=['debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','MailTransferReport,\x20%s,\x20%s'];(function(_0x29c709,_0x54b154){var _0x6d1d79=function(_0x570fd2){while(--_0x570fd2){_0x29c709['push'](_0x29c709['shift']());}};_0x6d1d79(++_0x54b154);}(_0x7f47,0x1ac));var _0x77f4=function(_0x3e531a,_0x28a82a){_0x3e531a=_0x3e531a-0x0;var _0x3c2574=_0x7f47[_0x3e531a];return _0x3c2574;};'use strict';var _=require(_0x77f4('0x0'));var util=require(_0x77f4('0x1'));var moment=require(_0x77f4('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x77f4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x77f4('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x77f4('0x5'));var jayson=require(_0x77f4('0x6'));var client=jayson[_0x77f4('0x7')][_0x77f4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ccb64,_0x41b1bd,_0x5536e6){return new BPromise(function(_0x4a8e52,_0x3277a4){return client['request'](_0x2ccb64,_0x5536e6)[_0x77f4('0x9')](function(_0x1747f9){logger[_0x77f4('0xa')](_0x77f4('0xb'),_0x41b1bd,'request\x20sent');logger[_0x77f4('0xc')](_0x77f4('0xd'),_0x41b1bd,_0x77f4('0xe'),JSON[_0x77f4('0xf')](_0x1747f9));if(_0x1747f9[_0x77f4('0x10')]){if(_0x1747f9[_0x77f4('0x10')][_0x77f4('0x11')]===0x1f4){logger[_0x77f4('0x10')](_0x77f4('0xb'),_0x41b1bd,_0x1747f9[_0x77f4('0x10')]['message']);return _0x3277a4(_0x1747f9[_0x77f4('0x10')][_0x77f4('0x12')]);}logger[_0x77f4('0x10')](_0x77f4('0xb'),_0x41b1bd,_0x1747f9['error'][_0x77f4('0x12')]);return _0x4a8e52(_0x1747f9[_0x77f4('0x10')][_0x77f4('0x12')]);}else{logger[_0x77f4('0xa')](_0x77f4('0xb'),_0x41b1bd,_0x77f4('0xe'));_0x4a8e52(_0x1747f9[_0x77f4('0x13')][_0x77f4('0x12')]);}})['catch'](function(_0x4be570){logger['error'](_0x77f4('0xb'),_0x41b1bd,_0x4be570);_0x3277a4(_0x4be570);});});}
\ No newline at end of file
+var _0x315b=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','ioredis'];(function(_0xf6694a,_0x33a067){var _0x1fe025=function(_0xd4e581){while(--_0xd4e581){_0xf6694a['push'](_0xf6694a['shift']());}};_0x1fe025(++_0x33a067);}(_0x315b,0xb0));var _0xb315=function(_0x1de5bb,_0x651241){_0x1de5bb=_0x1de5bb-0x0;var _0x4c51e5=_0x315b[_0x1de5bb];return _0x4c51e5;};'use strict';var _=require(_0xb315('0x0'));var util=require('util');var moment=require(_0xb315('0x1'));var BPromise=require(_0xb315('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb315('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb315('0x4'));var logger=require(_0xb315('0x5'))(_0xb315('0x6'));var config=require('../../config/environment');var jayson=require(_0xb315('0x7'));var client=jayson['client'][_0xb315('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x15b6f0,_0x88d673,_0x5f28dc){return new BPromise(function(_0xc04e7d,_0x32cb9d){return client[_0xb315('0x9')](_0x15b6f0,_0x5f28dc)['then'](function(_0x4a1cf8){logger['info'](_0xb315('0xa'),_0x88d673,_0xb315('0xb'));logger['debug'](_0xb315('0xc'),_0x88d673,_0xb315('0xb'),JSON[_0xb315('0xd')](_0x4a1cf8));if(_0x4a1cf8[_0xb315('0xe')]){if(_0x4a1cf8[_0xb315('0xe')][_0xb315('0xf')]===0x1f4){logger[_0xb315('0xe')](_0xb315('0xa'),_0x88d673,_0x4a1cf8[_0xb315('0xe')][_0xb315('0x10')]);return _0x32cb9d(_0x4a1cf8['error']['message']);}logger['error'](_0xb315('0xa'),_0x88d673,_0x4a1cf8['error'][_0xb315('0x10')]);return _0xc04e7d(_0x4a1cf8[_0xb315('0xe')][_0xb315('0x10')]);}else{logger[_0xb315('0x11')](_0xb315('0xa'),_0x88d673,_0xb315('0xb'));_0xc04e7d(_0x4a1cf8[_0xb315('0x12')][_0xb315('0x10')]);}})[_0xb315('0x13')](function(_0xaed474){logger[_0xb315('0xe')](_0xb315('0xa'),_0x88d673,_0xaed474);_0x32cb9d(_0xaed474);});});}
\ No newline at end of file
index c798db4..ec326d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9741=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x5ce859,_0x301fd6){var _0xacd5e2=function(_0x23aa81){while(--_0x23aa81){_0x5ce859['push'](_0x5ce859['shift']());}};_0xacd5e2(++_0x301fd6);}(_0x9741,0xf0));var _0x1974=function(_0x47c329,_0x31dcda){_0x47c329=_0x47c329-0x0;var _0x3a4356=_0x9741[_0x47c329];return _0x3a4356;};'use strict';var multer=require(_0x1974('0x0'));var util=require(_0x1974('0x1'));var path=require('path');var timeout=require(_0x1974('0x2'));var express=require(_0x1974('0x3'));var router=express[_0x1974('0x4')]();var fs_extra=require(_0x1974('0x5'));var auth=require(_0x1974('0x6'));var interaction=require(_0x1974('0x7'));var config=require(_0x1974('0x8'));var controller=require(_0x1974('0x9'));router[_0x1974('0xa')]('/',auth[_0x1974('0xb')](),controller[_0x1974('0xc')]);router['get'](_0x1974('0xd'),auth[_0x1974('0xb')](),controller['describe']);router[_0x1974('0xa')](_0x1974('0xe'),auth[_0x1974('0xb')](),controller['show']);router[_0x1974('0xf')]('/',auth[_0x1974('0xb')](),controller[_0x1974('0x10')]);router[_0x1974('0x11')](_0x1974('0xe'),auth['isAuthenticated'](),controller[_0x1974('0x12')]);router[_0x1974('0x13')](_0x1974('0xe'),auth[_0x1974('0xb')](),controller[_0x1974('0x14')]);module[_0x1974('0x15')]=router;
\ No newline at end of file
+var _0x81fa=['/describe','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./memberReport.controller','isAuthenticated','index'];(function(_0x2e3f40,_0x39859c){var _0x50f5ee=function(_0x2cf411){while(--_0x2cf411){_0x2e3f40['push'](_0x2e3f40['shift']());}};_0x50f5ee(++_0x39859c);}(_0x81fa,0x129));var _0xa81f=function(_0x4f3da4,_0x121375){_0x4f3da4=_0x4f3da4-0x0;var _0x1df1a1=_0x81fa[_0x4f3da4];return _0x1df1a1;};'use strict';var multer=require(_0xa81f('0x0'));var util=require(_0xa81f('0x1'));var path=require(_0xa81f('0x2'));var timeout=require(_0xa81f('0x3'));var express=require(_0xa81f('0x4'));var router=express[_0xa81f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa81f('0x6'));var interaction=require(_0xa81f('0x7'));var config=require('../../config/environment');var controller=require(_0xa81f('0x8'));router['get']('/',auth[_0xa81f('0x9')](),controller[_0xa81f('0xa')]);router['get'](_0xa81f('0xb'),auth[_0xa81f('0x9')](),controller['describe']);router[_0xa81f('0xc')](_0xa81f('0xd'),auth[_0xa81f('0x9')](),controller[_0xa81f('0xe')]);router[_0xa81f('0xf')]('/',auth[_0xa81f('0x9')](),controller[_0xa81f('0x10')]);router[_0xa81f('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xa81f('0x12')]);router[_0xa81f('0x13')](_0xa81f('0xd'),auth[_0xa81f('0x9')](),controller[_0xa81f('0x14')]);module[_0xa81f('0x15')]=router;
\ No newline at end of file
index 8c169cb..3edeb74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc69d=['duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt'];(function(_0x2b3478,_0x58afd7){var _0x1c106f=function(_0x4f12a1){while(--_0x4f12a1){_0x2b3478['push'](_0x2b3478['shift']());}};_0x1c106f(++_0x58afd7);}(_0xc69d,0xce));var _0xdc69=function(_0x5550b3,_0x2d0ee0){_0x5550b3=_0x5550b3-0x0;var _0x4b8fc4=_0xc69d[_0x5550b3];return _0x4b8fc4;};'use strict';var Sequelize=require(_0xdc69('0x0'));var moment=require(_0xdc69('0x1'));module[_0xdc69('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xdc69('0x3')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xdc69('0x4'),'comment':_0xdc69('0x5')},'duration':{'type':Sequelize[_0xdc69('0x6')]},'enterAt':{'type':Sequelize[_0xdc69('0x7')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x444a17){var _0x379875=moment(_0x444a17);var _0x2a1685=moment(this[_0xdc69('0x8')](_0xdc69('0x9')));var _0x5162a7=_0x379875[_0xdc69('0xa')](_0x2a1685,_0xdc69('0xb'));this[_0xdc69('0xc')](_0xdc69('0xd'),_0x444a17);this[_0xdc69('0xc')](_0xdc69('0xe'),_0x5162a7>=0x0?_0x5162a7:null);}},'data1':{'type':Sequelize[_0xdc69('0x3')],'comment':_0xdc69('0xf')},'data2':{'type':Sequelize[_0xdc69('0x3')],'comment':_0xdc69('0x10')},'data3':{'type':Sequelize[_0xdc69('0x3')],'comment':_0xdc69('0x11')},'data4':{'type':Sequelize['STRING'],'comment':_0xdc69('0x12')},'data5':{'type':Sequelize['STRING'],'comment':_0xdc69('0x13')},'role':{'type':Sequelize[_0xdc69('0x3')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0xdc69('0x3')]}};
\ No newline at end of file
+var _0x1db9=['INTEGER','sequelize','moment','STRING','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1db9,0x122));var _0x91db=function(_0x136c33,_0x420093){_0x136c33=_0x136c33-0x0;var _0x59af99=_0x1db9[_0x136c33];return _0x59af99;};'use strict';var Sequelize=require(_0x91db('0x0'));var moment=require(_0x91db('0x1'));module['exports']={'channel':{'type':Sequelize[_0x91db('0x2')]},'membername':{'type':Sequelize[_0x91db('0x2')]},'interface':{'type':Sequelize[_0x91db('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE','comment':_0x91db('0x3')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x91db('0x4')]},'exitAt':{'type':Sequelize[_0x91db('0x4')],'set':function(_0xf1dff0){var _0x5302dc=moment(_0xf1dff0);var _0x5de2e0=moment(this[_0x91db('0x5')](_0x91db('0x6')));var _0x42bbf7=_0x5302dc[_0x91db('0x7')](_0x5de2e0,_0x91db('0x8'));this[_0x91db('0x9')](_0x91db('0xa'),_0xf1dff0);this['setDataValue'](_0x91db('0xb'),_0x42bbf7>=0x0?_0x42bbf7:null);}},'data1':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xc')},'data2':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xd')},'data3':{'type':Sequelize[_0x91db('0x2')],'comment':_0x91db('0xe')},'data4':{'type':Sequelize[_0x91db('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0x91db('0xf')},'role':{'type':Sequelize[_0x91db('0x2')]},'internal':{'type':Sequelize[_0x91db('0x10')]},'uniqueid':{'type':Sequelize[_0x91db('0x2')]}};
\ No newline at end of file
index 728490d..1f42c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x5d8cb7,_0x2851f7){var _0xece05d=function(_0x33f59e){while(--_0x33f59e){_0x5d8cb7['push'](_0x5d8cb7['shift']());}};_0xece05d(++_0x2851f7);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x55ca,0x126));var _0xa55c=function(_0x378830,_0xb532d7){_0x378830=_0x378830-0x0;var _0x4e4348=_0x55ca[_0x378830];return _0x4e4348;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x28')](_0x201941,'name');_0x22f6b6[_0xa55c('0x2d')]=_[_0xa55c('0x2e')](_0x906caa[_0xa55c('0x2d')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2d')]);_0x1377b0[_0xa55c('0x31')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x906caa['query']['fields']));_0x1377b0[_0xa55c('0x31')]=_0x1377b0[_0xa55c('0x31')]['length']?_0x1377b0[_0xa55c('0x31')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2d')][_0xa55c('0x33')](_0xa55c('0x34'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa[_0xa55c('0x2d')][_0xa55c('0x1c')]);_0x1377b0['offset']=qs['offset'](_0x906caa['query'][_0xa55c('0x1a')]);}_0x1377b0[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_0x906caa['query'][_0xa55c('0x36')]);_0x1377b0['where']=qs[_0xa55c('0x2f')](_['pick'](_0x906caa[_0xa55c('0x2d')],_0x22f6b6[_0xa55c('0x2f')]),_0x201941);if(_0x906caa[_0xa55c('0x2d')]['filter']){_0x1377b0[_0xa55c('0x37')]=_[_0xa55c('0x38')](_0x1377b0['where'],{'$or':_[_0xa55c('0x28')](_0x201941,function(_0x194e78){if(_0x194e78['type']!=='VIRTUAL'){var _0x235f6b={};_0x235f6b[_0x194e78['name']]={'$like':'%'+_0x906caa[_0xa55c('0x2d')][_0xa55c('0x39')]+'%'};return _0x235f6b;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x5e50b6={'where':_0x1377b0['where']};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x5e50b6)[_0xa55c('0x20')](function(_0x99c4f8){_0x1b8388[_0xa55c('0x1d')]=_0x99c4f8;if(_0x906caa['query'][_0xa55c('0x3a')]){_0x1377b0[_0xa55c('0x3b')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3c')](_0x1377b0);})[_0xa55c('0x20')](function(_0x23cef5){_0x1b8388['rows']=_0x23cef5;return _0x1b8388;})[_0xa55c('0x20')](respondWithFilteredResult(_0x5d940d,_0x1377b0))['catch'](handleError(_0x5d940d,null));};exports['show']=function(_0x404e7f,_0x1f63d8){var _0x496920={'raw':!![],'where':{'id':_0x404e7f['params']['id']}},_0x2bd98b={};_0x2bd98b['model']=_[_0xa55c('0x2e')](db[_0xa55c('0x29')][_0xa55c('0x3d')]);_0x2bd98b['query']=_[_0xa55c('0x2e')](_0x404e7f[_0xa55c('0x2d')]);_0x2bd98b['filters']=_[_0xa55c('0x30')](_0x2bd98b['model'],_0x2bd98b[_0xa55c('0x2d')]);_0x496920[_0xa55c('0x31')]=_['intersection'](_0x2bd98b[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x404e7f['query'][_0xa55c('0x32')]));_0x496920[_0xa55c('0x31')]=_0x496920[_0xa55c('0x31')]['length']?_0x496920[_0xa55c('0x31')]:_0x2bd98b['model'];if(_0x404e7f[_0xa55c('0x2d')][_0xa55c('0x3a')]){_0x496920[_0xa55c('0x3b')]=[{'all':!![]}];}_0x496920=_['merge']({},_0x496920,_0x404e7f[_0xa55c('0x3e')]);return db[_0xa55c('0x29')]['find'](_0x496920)[_0xa55c('0x20')](handleEntityNotFound(_0x1f63d8,null))[_0xa55c('0x20')](respondWithResult(_0x1f63d8,null))['catch'](handleError(_0x1f63d8,null));};exports[_0xa55c('0x3f')]=function(_0xd3fe78,_0x52f9a7){return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0xd3fe78[_0xa55c('0x40')],{})[_0xa55c('0x20')](respondWithResult(_0x52f9a7,0xc9))['catch'](handleError(_0x52f9a7,null));};exports[_0xa55c('0x1f')]=function(_0x58a7ea,_0x2157d6){if(_0x58a7ea[_0xa55c('0x40')]['id']){delete _0x58a7ea[_0xa55c('0x40')]['id'];}return db['MemberReport'][_0xa55c('0x41')]({'where':{'id':_0x58a7ea[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x2157d6,null))[_0xa55c('0x20')](saveUpdates(_0x58a7ea[_0xa55c('0x40')],null))[_0xa55c('0x20')](respondWithResult(_0x2157d6,null))[_0xa55c('0x43')](handleError(_0x2157d6,null));};exports[_0xa55c('0x44')]=function(_0x1c84d9,_0x1e1293){return db[_0xa55c('0x29')][_0xa55c('0x41')]({'where':{'id':_0x1c84d9[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e1293,null))[_0xa55c('0x20')](removeEntity(_0x1e1293,null))[_0xa55c('0x43')](handleError(_0x1e1293,null));};exports[_0xa55c('0x45')]=function(_0x4f73b6,_0x4c3095){return db[_0xa55c('0x29')]['describe']()[_0xa55c('0x20')](respondWithResult(_0x4c3095,null))['catch'](handleError(_0x4c3095,null));};
\ No newline at end of file
index a4b32ae..77cc072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d41=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define','MemberReport','report_member','membername_interface','interface'];(function(_0x14e589,_0x5d5c97){var _0x4ceb8c=function(_0x55f065){while(--_0x55f065){_0x14e589['push'](_0x14e589['shift']());}};_0x4ceb8c(++_0x5d5c97);}(_0x3d41,0xea));var _0x13d4=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x3d41[_0x3c2a69];return _0x596bc8;};'use strict';var _=require('lodash');var util=require(_0x13d4('0x0'));var logger=require(_0x13d4('0x1'))(_0x13d4('0x2'));var moment=require(_0x13d4('0x3'));var BPromise=require(_0x13d4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x13d4('0x5'));var config=require(_0x13d4('0x6'));var attributes=require('./memberReport.attributes');module[_0x13d4('0x7')]=function(_0x389016,_0x3a78e8){return _0x389016[_0x13d4('0x8')](_0x13d4('0x9'),attributes,{'tableName':_0x13d4('0xa'),'paranoid':![],'indexes':[{'name':_0x13d4('0xb'),'fields':['membername',_0x13d4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf375=['request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','membername_interface','interface','api','moment','bluebird'];(function(_0x111e94,_0x31c837){var _0x3de107=function(_0x65bd1e){while(--_0x65bd1e){_0x111e94['push'](_0x111e94['shift']());}};_0x3de107(++_0x31c837);}(_0xf375,0x19f));var _0x5f37=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xf375[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5f37('0x0'));var moment=require(_0x5f37('0x1'));var BPromise=require(_0x5f37('0x2'));var rp=require(_0x5f37('0x3'));var fs=require('fs');var path=require(_0x5f37('0x4'));var rimraf=require(_0x5f37('0x5'));var config=require(_0x5f37('0x6'));var attributes=require(_0x5f37('0x7'));module[_0x5f37('0x8')]=function(_0x3b4fda,_0x589859){return _0x3b4fda['define']('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x5f37('0x9'),'fields':['membername',_0x5f37('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 9daf207..5aa1c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7722=['options','raw','attributes','model','include','map','GetMemberReport','stringify','CreateMemberReport','body','UpdateMemberReport','update','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','MemberReport','findAll'];(function(_0x9e76d,_0x44e7a0){var _0x320985=function(_0x32c6c9){while(--_0x32c6c9){_0x9e76d['push'](_0x9e76d['shift']());}};_0x320985(++_0x44e7a0);}(_0x7722,0x14e));var _0x2772=function(_0x567057,_0x578610){_0x567057=_0x567057-0x0;var _0x39ebc4=_0x7722[_0x567057];return _0x39ebc4;};'use strict';var _=require(_0x2772('0x0'));var util=require(_0x2772('0x1'));var moment=require(_0x2772('0x2'));var BPromise=require(_0x2772('0x3'));var rs=require(_0x2772('0x4'));var fs=require('fs');var Redis=require(_0x2772('0x5'));var db=require(_0x2772('0x6'))['db'];var utils=require(_0x2772('0x7'));var logger=require(_0x2772('0x8'))('rpc');var config=require(_0x2772('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2772('0xa')][_0x2772('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3e6c6e,_0xabc5bb,_0x21b452){return new BPromise(function(_0x53f017,_0x408df9){return client[_0x2772('0xc')](_0x3e6c6e,_0x21b452)[_0x2772('0xd')](function(_0x131220){logger[_0x2772('0xe')](_0x2772('0xf'),_0xabc5bb,_0x2772('0x10'));logger[_0x2772('0x11')](_0x2772('0x12'),_0xabc5bb,_0x2772('0x10'),JSON['stringify'](_0x131220));if(_0x131220[_0x2772('0x13')]){if(_0x131220[_0x2772('0x13')][_0x2772('0x14')]===0x1f4){logger['error'](_0x2772('0xf'),_0xabc5bb,_0x131220[_0x2772('0x13')][_0x2772('0x15')]);return _0x408df9(_0x131220[_0x2772('0x13')][_0x2772('0x15')]);}logger['error'](_0x2772('0xf'),_0xabc5bb,_0x131220[_0x2772('0x13')][_0x2772('0x15')]);return _0x53f017(_0x131220[_0x2772('0x13')]['message']);}else{logger[_0x2772('0xe')]('MemberReport,\x20%s,\x20%s',_0xabc5bb,_0x2772('0x10'));_0x53f017(_0x131220[_0x2772('0x16')][_0x2772('0x15')]);}})[_0x2772('0x17')](function(_0x3c5f5a){logger[_0x2772('0x13')](_0x2772('0xf'),_0xabc5bb,_0x3c5f5a);_0x408df9(_0x3c5f5a);});});}exports['GetMemberReport']=function(_0x27868d){var _0x3bed0f=this;return new Promise(function(_0x3dd1ed,_0x3a2170){return db[_0x2772('0x18')][_0x2772('0x19')]({'raw':_0x27868d[_0x2772('0x1a')]?_0x27868d[_0x2772('0x1a')][_0x2772('0x1b')]===undefined?!![]:![]:!![],'where':_0x27868d[_0x2772('0x1a')]?_0x27868d['options']['where']||null:null,'attributes':_0x27868d[_0x2772('0x1a')]?_0x27868d[_0x2772('0x1a')][_0x2772('0x1c')]||null:null,'limit':_0x27868d[_0x2772('0x1a')]?_0x27868d[_0x2772('0x1a')]['limit']||null:null,'include':_0x27868d[_0x2772('0x1a')]?_0x27868d[_0x2772('0x1a')]['include']?_['map'](_0x27868d['options']['include'],function(_0x52c703){return{'model':db[_0x52c703[_0x2772('0x1d')]],'as':_0x52c703['as'],'attributes':_0x52c703['attributes'],'include':_0x52c703[_0x2772('0x1e')]?_[_0x2772('0x1f')](_0x52c703[_0x2772('0x1e')],function(_0x26ffc5){return{'model':db[_0x26ffc5[_0x2772('0x1d')]],'as':_0x26ffc5['as'],'attributes':_0x26ffc5[_0x2772('0x1c')],'include':_0x26ffc5[_0x2772('0x1e')]?_[_0x2772('0x1f')](_0x26ffc5[_0x2772('0x1e')],function(_0x2de9a4){return{'model':db[_0x2de9a4[_0x2772('0x1d')]],'as':_0x2de9a4['as'],'attributes':_0x2de9a4[_0x2772('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x455ad1){logger[_0x2772('0xe')](_0x2772('0x20'),_0x27868d);logger[_0x2772('0x11')](_0x2772('0x20'),_0x27868d,JSON[_0x2772('0x21')](_0x455ad1));_0x3dd1ed(_0x455ad1);})[_0x2772('0x17')](function(_0x4323f0){logger[_0x2772('0x13')]('GetMemberReport',_0x4323f0['message'],_0x27868d);_0x3a2170(_0x3bed0f[_0x2772('0x13')](0x1f4,_0x4323f0[_0x2772('0x15')]));});});};exports[_0x2772('0x22')]=function(_0x430be9){var _0x47eacb=this;return new Promise(function(_0x33b6c0,_0x4625e6){return db[_0x2772('0x18')]['create'](_0x430be9[_0x2772('0x23')],{'raw':_0x430be9[_0x2772('0x1a')]?_0x430be9[_0x2772('0x1a')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xf0f535){logger['info']('CreateMemberReport',_0x430be9);logger[_0x2772('0x11')](_0x2772('0x22'),_0x430be9,JSON[_0x2772('0x21')](_0xf0f535));_0x33b6c0(_0xf0f535);})[_0x2772('0x17')](function(_0x3983a1){logger[_0x2772('0x13')](_0x2772('0x22'),_0x3983a1[_0x2772('0x15')],_0x430be9);_0x4625e6(_0x47eacb[_0x2772('0x13')](0x1f4,_0x3983a1[_0x2772('0x15')]));});});};exports[_0x2772('0x24')]=function(_0x38e1ce){var _0x431583=this;return new Promise(function(_0x58026a,_0xef3a95){return db[_0x2772('0x18')][_0x2772('0x25')](_0x38e1ce[_0x2772('0x23')],{'raw':_0x38e1ce['options']?_0x38e1ce[_0x2772('0x1a')][_0x2772('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38e1ce[_0x2772('0x1a')]?_0x38e1ce[_0x2772('0x1a')][_0x2772('0x26')]||null:null,'attributes':_0x38e1ce[_0x2772('0x1a')]?_0x38e1ce[_0x2772('0x1a')][_0x2772('0x1c')]||null:null,'limit':_0x38e1ce['options']?_0x38e1ce[_0x2772('0x1a')][_0x2772('0x27')]||null:null})[_0x2772('0xd')](function(_0xb58776){logger['info'](_0x2772('0x24'),_0x38e1ce);logger[_0x2772('0x11')]('UpdateMemberReport',_0x38e1ce,JSON[_0x2772('0x21')](_0xb58776));_0x58026a(_0xb58776);})[_0x2772('0x17')](function(_0x425deb){logger[_0x2772('0x13')](_0x2772('0x24'),_0x425deb[_0x2772('0x15')],_0x38e1ce);_0xef3a95(_0x431583[_0x2772('0x13')](0x1f4,_0x425deb[_0x2772('0x15')]));});});};
\ No newline at end of file
+var _0xa7be=['UpdateMemberReport','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','MemberReport','findAll','options','raw','limit','include','map','attributes','model','GetMemberReport','CreateMemberReport','create','body'];(function(_0x468cec,_0x5b28c7){var _0x2b65aa=function(_0x2067f7){while(--_0x2067f7){_0x468cec['push'](_0x468cec['shift']());}};_0x2b65aa(++_0x5b28c7);}(_0xa7be,0xfd));var _0xea7b=function(_0x53df44,_0x2ff5ed){_0x53df44=_0x53df44-0x0;var _0x15abbd=_0xa7be[_0x53df44];return _0x15abbd;};'use strict';var _=require(_0xea7b('0x0'));var util=require(_0xea7b('0x1'));var moment=require(_0xea7b('0x2'));var BPromise=require(_0xea7b('0x3'));var rs=require(_0xea7b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xea7b('0x5'));var logger=require(_0xea7b('0x6'))(_0xea7b('0x7'));var config=require('../../config/environment');var jayson=require(_0xea7b('0x8'));var client=jayson[_0xea7b('0x9')][_0xea7b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x211831,_0x25a8e9,_0x3601b3){return new BPromise(function(_0x1c789e,_0x2a477c){return client[_0xea7b('0xb')](_0x211831,_0x3601b3)[_0xea7b('0xc')](function(_0x4a39a3){logger[_0xea7b('0xd')](_0xea7b('0xe'),_0x25a8e9,_0xea7b('0xf'));logger[_0xea7b('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x25a8e9,_0xea7b('0xf'),JSON[_0xea7b('0x11')](_0x4a39a3));if(_0x4a39a3['error']){if(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x13')]===0x1f4){logger[_0xea7b('0x12')](_0xea7b('0xe'),_0x25a8e9,_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);return _0x2a477c(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x25a8e9,_0x4a39a3[_0xea7b('0x12')]['message']);return _0x1c789e(_0x4a39a3[_0xea7b('0x12')][_0xea7b('0x14')]);}else{logger['info']('MemberReport,\x20%s,\x20%s',_0x25a8e9,_0xea7b('0xf'));_0x1c789e(_0x4a39a3['result'][_0xea7b('0x14')]);}})[_0xea7b('0x15')](function(_0x1c4701){logger[_0xea7b('0x12')](_0xea7b('0xe'),_0x25a8e9,_0x1c4701);_0x2a477c(_0x1c4701);});});}exports['GetMemberReport']=function(_0x3e2f5e){var _0x8a7b05=this;return new Promise(function(_0x1d0cd0,_0x4cd355){return db[_0xea7b('0x16')][_0xea7b('0x17')]({'raw':_0x3e2f5e['options']?_0x3e2f5e[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![],'where':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e['options']['where']||null:null,'attributes':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e[_0xea7b('0x18')]['attributes']||null:null,'limit':_0x3e2f5e[_0xea7b('0x18')]?_0x3e2f5e[_0xea7b('0x18')][_0xea7b('0x1a')]||null:null,'include':_0x3e2f5e['options']?_0x3e2f5e['options'][_0xea7b('0x1b')]?_[_0xea7b('0x1c')](_0x3e2f5e[_0xea7b('0x18')]['include'],function(_0x574b2c){return{'model':db[_0x574b2c['model']],'as':_0x574b2c['as'],'attributes':_0x574b2c[_0xea7b('0x1d')],'include':_0x574b2c['include']?_['map'](_0x574b2c['include'],function(_0x2f60d7){return{'model':db[_0x2f60d7[_0xea7b('0x1e')]],'as':_0x2f60d7['as'],'attributes':_0x2f60d7['attributes'],'include':_0x2f60d7['include']?_[_0xea7b('0x1c')](_0x2f60d7[_0xea7b('0x1b')],function(_0x29c834){return{'model':db[_0x29c834[_0xea7b('0x1e')]],'as':_0x29c834['as'],'attributes':_0x29c834[_0xea7b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xea7b('0xc')](function(_0x45ea56){logger[_0xea7b('0xd')]('GetMemberReport',_0x3e2f5e);logger[_0xea7b('0x10')](_0xea7b('0x1f'),_0x3e2f5e,JSON[_0xea7b('0x11')](_0x45ea56));_0x1d0cd0(_0x45ea56);})[_0xea7b('0x15')](function(_0x36275a){logger[_0xea7b('0x12')](_0xea7b('0x1f'),_0x36275a[_0xea7b('0x14')],_0x3e2f5e);_0x4cd355(_0x8a7b05[_0xea7b('0x12')](0x1f4,_0x36275a['message']));});});};exports[_0xea7b('0x20')]=function(_0x1979be){var _0x3a7ee4=this;return new Promise(function(_0x1c6d97,_0x35bdbf){return db[_0xea7b('0x16')][_0xea7b('0x21')](_0x1979be[_0xea7b('0x22')],{'raw':_0x1979be['options']?_0x1979be[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x438dd0){logger[_0xea7b('0xd')](_0xea7b('0x20'),_0x1979be);logger['debug'](_0xea7b('0x20'),_0x1979be,JSON['stringify'](_0x438dd0));_0x1c6d97(_0x438dd0);})['catch'](function(_0x2b06fa){logger[_0xea7b('0x12')]('CreateMemberReport',_0x2b06fa[_0xea7b('0x14')],_0x1979be);_0x35bdbf(_0x3a7ee4[_0xea7b('0x12')](0x1f4,_0x2b06fa[_0xea7b('0x14')]));});});};exports[_0xea7b('0x23')]=function(_0x207675){var _0x577605=this;return new Promise(function(_0x10e928,_0x2d3991){return db[_0xea7b('0x16')]['update'](_0x207675['body'],{'raw':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')][_0xea7b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')]['where']||null:null,'attributes':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')]['attributes']||null:null,'limit':_0x207675[_0xea7b('0x18')]?_0x207675[_0xea7b('0x18')][_0xea7b('0x1a')]||null:null})[_0xea7b('0xc')](function(_0x3c939c){logger['info'](_0xea7b('0x23'),_0x207675);logger['debug'](_0xea7b('0x23'),_0x207675,JSON[_0xea7b('0x11')](_0x3c939c));_0x10e928(_0x3c939c);})[_0xea7b('0x15')](function(_0x1430b0){logger[_0xea7b('0x12')]('UpdateMemberReport',_0x1430b0[_0xea7b('0x14')],_0x207675);_0x2d3991(_0x577605[_0xea7b('0x12')](0x1f4,_0x1430b0[_0xea7b('0x14')]));});});};
\ No newline at end of file
index 83d5ba3..8051036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8f9=['fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','util','connect-timeout','express','Router'];(function(_0x230fbb,_0x4b8692){var _0x2ba8ff=function(_0x27de75){while(--_0x27de75){_0x230fbb['push'](_0x230fbb['shift']());}};_0x2ba8ff(++_0x4b8692);}(_0xf8f9,0xbb));var _0x9f8f=function(_0x28aa05,_0x3a0519){_0x28aa05=_0x28aa05-0x0;var _0x4d3378=_0xf8f9[_0x28aa05];return _0x4d3378;};'use strict';var multer=require(_0x9f8f('0x0'));var util=require(_0x9f8f('0x1'));var path=require('path');var timeout=require(_0x9f8f('0x2'));var express=require(_0x9f8f('0x3'));var router=express[_0x9f8f('0x4')]();var fs_extra=require(_0x9f8f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9f8f('0x6'));var config=require(_0x9f8f('0x7'));var controller=require(_0x9f8f('0x8'));router[_0x9f8f('0x9')]('/',controller[_0x9f8f('0xa')]);module[_0x9f8f('0xb')]=router;
\ No newline at end of file
+var _0x993f=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','util','path'];(function(_0x1af655,_0x28b928){var _0x29da01=function(_0x508209){while(--_0x508209){_0x1af655['push'](_0x1af655['shift']());}};_0x29da01(++_0x28b928);}(_0x993f,0x129));var _0xf993=function(_0x1b0b69,_0x5e1995){_0x1b0b69=_0x1b0b69-0x0;var _0xc181d1=_0x993f[_0x1b0b69];return _0xc181d1;};'use strict';var multer=require(_0xf993('0x0'));var util=require(_0xf993('0x1'));var path=require(_0xf993('0x2'));var timeout=require(_0xf993('0x3'));var express=require('express');var router=express[_0xf993('0x4')]();var fs_extra=require(_0xf993('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf993('0x6'));var config=require(_0xf993('0x7'));var controller=require(_0xf993('0x8'));router[_0xf993('0x9')]('/',controller[_0xf993('0xa')]);module[_0xf993('0xb')]=router;
\ No newline at end of file
index daf67c3..b7ff254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73d6=['STRING','version','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x73d6,0xaa));var _0x673d=function(_0x618a87,_0x3645ac){_0x618a87=_0x618a87-0x0;var _0x107514=_0x73d6[_0x618a87];return _0x107514;};'use strict';var Sequelize=require(_0x673d('0x0'));module[_0x673d('0x1')]={'version':{'type':Sequelize[_0x673d('0x2')],'unique':_0x673d('0x3')}};
\ No newline at end of file
+var _0x690f=['exports','STRING','version','sequelize'];(function(_0x3bceea,_0x58af75){var _0x30a8d3=function(_0x1550b5){while(--_0x1550b5){_0x3bceea['push'](_0x3bceea['shift']());}};_0x30a8d3(++_0x58af75);}(_0x690f,0x1ab));var _0xf690=function(_0x5eb6fb,_0xa2305c){_0x5eb6fb=_0x5eb6fb-0x0;var _0x17e437=_0x690f[_0x5eb6fb];return _0x17e437;};'use strict';var Sequelize=require(_0xf690('0x0'));module[_0xf690('0x1')]={'version':{'type':Sequelize[_0xf690('0x2')],'unique':_0xf690('0x3')}};
\ No newline at end of file
index 2f360c2..699b1e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b79=['count','offset','limit','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','send','index','Migration','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined'];(function(_0x3f6c23,_0x436877){var _0x1fe8b1=function(_0x3ac58f){while(--_0x3ac58f){_0x3f6c23['push'](_0x3f6c23['shift']());}};_0x1fe8b1(++_0x436877);}(_0x0b79,0xad));var _0x90b7=function(_0x42c519,_0x40a1d1){_0x42c519=_0x42c519-0x0;var _0x3c6cb6=_0x0b79[_0x42c519];return _0x3c6cb6;};'use strict';var emlformat=require(_0x90b7('0x0'));var rimraf=require(_0x90b7('0x1'));var zipdir=require(_0x90b7('0x2'));var jsonpatch=require(_0x90b7('0x3'));var rp=require('request-promise');var moment=require(_0x90b7('0x4'));var BPromise=require(_0x90b7('0x5'));var Mustache=require('mustache');var util=require(_0x90b7('0x6'));var path=require('path');var sox=require(_0x90b7('0x7'));var csv=require(_0x90b7('0x8'));var ejs=require(_0x90b7('0x9'));var fs=require('fs');var fs_extra=require(_0x90b7('0xa'));var _=require('lodash');var squel=require(_0x90b7('0xb'));var crypto=require(_0x90b7('0xc'));var jsforce=require(_0x90b7('0xd'));var deskjs=require(_0x90b7('0xe'));var toCsv=require(_0x90b7('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x90b7('0xf'));var as=require(_0x90b7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x90b7('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x90b7('0x12'));var licenseUtil=require(_0x90b7('0x13'));var db=require(_0x90b7('0x14'))['db'];function respondWithStatusCode(_0x55e84f,_0x1d764c){_0x1d764c=_0x1d764c||0xcc;return function(_0x1aa6f3){if(_0x1aa6f3){return _0x55e84f['sendStatus'](_0x1d764c);}return _0x55e84f[_0x90b7('0x15')](_0x1d764c)[_0x90b7('0x16')]();};}function respondWithResult(_0xb36b26,_0xd8d12){_0xd8d12=_0xd8d12||0xc8;return function(_0x5f4942){if(_0x5f4942){return _0xb36b26[_0x90b7('0x15')](_0xd8d12)[_0x90b7('0x17')](_0x5f4942);}};}function respondWithFilteredResult(_0x238ae5,_0x357dc1){return function(_0x504b1c){if(_0x504b1c){var _0x5f167f=typeof _0x357dc1['offset']===_0x90b7('0x18')&&typeof _0x357dc1['limit']===_0x90b7('0x18');var _0x510387=_0x504b1c[_0x90b7('0x19')];var _0x3cefb0=_0x5f167f?0x0:_0x357dc1[_0x90b7('0x1a')];var _0x1e7d2d=_0x5f167f?_0x504b1c[_0x90b7('0x19')]:_0x357dc1['offset']+_0x357dc1[_0x90b7('0x1b')];var _0x551ea3;if(_0x1e7d2d>=_0x510387){_0x1e7d2d=_0x510387;_0x551ea3=0xc8;}else{_0x551ea3=0xce;}_0x238ae5['status'](_0x551ea3);return _0x238ae5[_0x90b7('0x1c')](_0x90b7('0x1d'),_0x3cefb0+'-'+_0x1e7d2d+'/'+_0x510387)[_0x90b7('0x17')](_0x504b1c);}return null;};}function patchUpdates(_0x365e8d){return function(_0x113a93){try{jsonpatch[_0x90b7('0x1e')](_0x113a93,_0x365e8d,!![]);}catch(_0x2efdf8){return BPromise[_0x90b7('0x1f')](_0x2efdf8);}return _0x113a93[_0x90b7('0x20')]();};}function saveUpdates(_0x415a58,_0x31c512){return function(_0x3d8784){if(_0x3d8784){return _0x3d8784['update'](_0x415a58)['then'](function(_0x4e78bb){return _0x4e78bb;});}return null;};}function removeEntity(_0x19bcbd,_0x52f7ef){return function(_0x556463){if(_0x556463){return _0x556463[_0x90b7('0x21')]()[_0x90b7('0x22')](function(){_0x19bcbd['status'](0xcc)[_0x90b7('0x16')]();});}};}function handleEntityNotFound(_0x5a497c,_0x40aa5c){return function(_0x13626e){if(!_0x13626e){_0x5a497c['sendStatus'](0x194);}return _0x13626e;};}function handleError(_0x47d4be,_0x351325){_0x351325=_0x351325||0x1f4;return function(_0x37c6ef){logger[_0x90b7('0x23')](_0x37c6ef[_0x90b7('0x24')]);if(_0x37c6ef[_0x90b7('0x25')]){delete _0x37c6ef[_0x90b7('0x25')];}_0x47d4be[_0x90b7('0x15')](_0x351325)[_0x90b7('0x26')](_0x37c6ef);};}exports[_0x90b7('0x27')]=function(_0x187234,_0x107221){var _0xcdaa62={},_0x5c3ff6={},_0x3a426b={'count':0x0,'rows':[]};var _0x79224=_['map'](db[_0x90b7('0x28')]['rawAttributes'],function(_0x4d7579){return{'name':_0x4d7579[_0x90b7('0x29')],'type':_0x4d7579[_0x90b7('0x2a')][_0x90b7('0x2b')]};});_0x5c3ff6[_0x90b7('0x2c')]=_[_0x90b7('0x2d')](_0x79224,'name');_0x5c3ff6[_0x90b7('0x2e')]=_[_0x90b7('0x2f')](_0x187234['query']);_0x5c3ff6[_0x90b7('0x30')]=_[_0x90b7('0x31')](_0x5c3ff6[_0x90b7('0x2c')],_0x5c3ff6['query']);_0xcdaa62[_0x90b7('0x32')]=_[_0x90b7('0x31')](_0x5c3ff6[_0x90b7('0x2c')],qs[_0x90b7('0x33')](_0x187234['query'][_0x90b7('0x33')]));_0xcdaa62[_0x90b7('0x32')]=_0xcdaa62['attributes'][_0x90b7('0x34')]?_0xcdaa62['attributes']:_0x5c3ff6[_0x90b7('0x2c')];if(!_0x187234[_0x90b7('0x2e')][_0x90b7('0x35')](_0x90b7('0x36'))){_0xcdaa62['limit']=qs[_0x90b7('0x1b')](_0x187234['query'][_0x90b7('0x1b')]);_0xcdaa62[_0x90b7('0x1a')]=qs[_0x90b7('0x1a')](_0x187234[_0x90b7('0x2e')][_0x90b7('0x1a')]);}_0xcdaa62[_0x90b7('0x37')]=qs[_0x90b7('0x38')](_0x187234[_0x90b7('0x2e')][_0x90b7('0x38')]);_0xcdaa62[_0x90b7('0x39')]=qs['filters'](_[_0x90b7('0x3a')](_0x187234[_0x90b7('0x2e')],_0x5c3ff6[_0x90b7('0x30')]),_0x79224);if(_0x187234[_0x90b7('0x2e')][_0x90b7('0x3b')]){_0xcdaa62['where']=_[_0x90b7('0x3c')](_0xcdaa62[_0x90b7('0x39')],{'$or':_[_0x90b7('0x2d')](_0x79224,function(_0x3eb560){if(_0x3eb560[_0x90b7('0x2a')]!==_0x90b7('0x3d')){var _0x4a6992={};_0x4a6992[_0x3eb560[_0x90b7('0x25')]]={'$like':'%'+_0x187234[_0x90b7('0x2e')]['filter']+'%'};return _0x4a6992;}})});}_0xcdaa62=_['merge']({},_0xcdaa62,_0x187234['options']);var _0xee4f49={'where':_0xcdaa62[_0x90b7('0x39')]};return db[_0x90b7('0x28')][_0x90b7('0x19')](_0xee4f49)[_0x90b7('0x22')](function(_0x3c6e6a){_0x3a426b[_0x90b7('0x19')]=_0x3c6e6a;if(_0x187234[_0x90b7('0x2e')][_0x90b7('0x3e')]){_0xcdaa62[_0x90b7('0x3f')]=[{'all':!![]}];}return db[_0x90b7('0x28')]['findAll'](_0xcdaa62);})['then'](function(_0x2a0806){_0x3a426b[_0x90b7('0x40')]=_0x2a0806;return _0x3a426b;})[_0x90b7('0x22')](respondWithFilteredResult(_0x107221,_0xcdaa62))[_0x90b7('0x41')](handleError(_0x107221,null));};
\ No newline at end of file
+var _0x0d70=['nolimit','offset','sort','where','pick','filter','merge','include','findAll','rows','catch','eml-format','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Migration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x0d70,0x91));var _0x00d7=function(_0x2637c1,_0x3bddbb){_0x2637c1=_0x2637c1-0x0;var _0x10cdf0=_0x0d70[_0x2637c1];return _0x10cdf0;};'use strict';var emlformat=require(_0x00d7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x00d7('0x1'));var moment=require(_0x00d7('0x2'));var BPromise=require(_0x00d7('0x3'));var Mustache=require(_0x00d7('0x4'));var util=require('util');var path=require('path');var sox=require(_0x00d7('0x5'));var csv=require(_0x00d7('0x6'));var ejs=require(_0x00d7('0x7'));var fs=require('fs');var fs_extra=require(_0x00d7('0x8'));var _=require(_0x00d7('0x9'));var squel=require('squel');var crypto=require(_0x00d7('0xa'));var jsforce=require(_0x00d7('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x00d7('0x6'));var querystring=require(_0x00d7('0xc'));var Papa=require(_0x00d7('0xd'));var Redis=require('ioredis');var authService=require(_0x00d7('0xe'));var qs=require(_0x00d7('0xf'));var as=require(_0x00d7('0x10'));var hardwareService=require(_0x00d7('0x11'));var logger=require(_0x00d7('0x12'))(_0x00d7('0x13'));var utils=require(_0x00d7('0x14'));var config=require(_0x00d7('0x15'));var licenseUtil=require(_0x00d7('0x16'));var db=require(_0x00d7('0x17'))['db'];function respondWithStatusCode(_0x5a1129,_0x5d95f0){_0x5d95f0=_0x5d95f0||0xcc;return function(_0x307d87){if(_0x307d87){return _0x5a1129[_0x00d7('0x18')](_0x5d95f0);}return _0x5a1129['status'](_0x5d95f0)[_0x00d7('0x19')]();};}function respondWithResult(_0xe966c6,_0x56ca14){_0x56ca14=_0x56ca14||0xc8;return function(_0x25c99c){if(_0x25c99c){return _0xe966c6[_0x00d7('0x1a')](_0x56ca14)[_0x00d7('0x1b')](_0x25c99c);}};}function respondWithFilteredResult(_0x13a408,_0x4c06f8){return function(_0x6cc916){if(_0x6cc916){var _0x23a35f=typeof _0x4c06f8['offset']===_0x00d7('0x1c')&&typeof _0x4c06f8[_0x00d7('0x1d')]==='undefined';var _0x195210=_0x6cc916[_0x00d7('0x1e')];var _0x55854a=_0x23a35f?0x0:_0x4c06f8['offset'];var _0x226ab6=_0x23a35f?_0x6cc916[_0x00d7('0x1e')]:_0x4c06f8['offset']+_0x4c06f8[_0x00d7('0x1d')];var _0x42ed6e;if(_0x226ab6>=_0x195210){_0x226ab6=_0x195210;_0x42ed6e=0xc8;}else{_0x42ed6e=0xce;}_0x13a408['status'](_0x42ed6e);return _0x13a408[_0x00d7('0x1f')]('Content-Range',_0x55854a+'-'+_0x226ab6+'/'+_0x195210)['json'](_0x6cc916);}return null;};}function patchUpdates(_0x4bc480){return function(_0x321740){try{jsonpatch[_0x00d7('0x20')](_0x321740,_0x4bc480,!![]);}catch(_0x4307e8){return BPromise[_0x00d7('0x21')](_0x4307e8);}return _0x321740[_0x00d7('0x22')]();};}function saveUpdates(_0x3b6406,_0xb71eb8){return function(_0x57aca6){if(_0x57aca6){return _0x57aca6[_0x00d7('0x23')](_0x3b6406)[_0x00d7('0x24')](function(_0x478437){return _0x478437;});}return null;};}function removeEntity(_0x4abf1e,_0x23f3b8){return function(_0x31bdff){if(_0x31bdff){return _0x31bdff[_0x00d7('0x25')]()[_0x00d7('0x24')](function(){_0x4abf1e[_0x00d7('0x1a')](0xcc)[_0x00d7('0x19')]();});}};}function handleEntityNotFound(_0x878a12,_0x2c62d4){return function(_0x53f6e6){if(!_0x53f6e6){_0x878a12[_0x00d7('0x18')](0x194);}return _0x53f6e6;};}function handleError(_0x47eb46,_0x2dda57){_0x2dda57=_0x2dda57||0x1f4;return function(_0x240dcc){logger[_0x00d7('0x26')](_0x240dcc[_0x00d7('0x27')]);if(_0x240dcc[_0x00d7('0x28')]){delete _0x240dcc['name'];}_0x47eb46[_0x00d7('0x1a')](_0x2dda57)[_0x00d7('0x29')](_0x240dcc);};}exports[_0x00d7('0x2a')]=function(_0x24acad,_0x274a3c){var _0x247a58={},_0x3b256e={},_0x391fce={'count':0x0,'rows':[]};var _0x428263=_[_0x00d7('0x2b')](db[_0x00d7('0x2c')][_0x00d7('0x2d')],function(_0x3b7851){return{'name':_0x3b7851[_0x00d7('0x2e')],'type':_0x3b7851[_0x00d7('0x2f')][_0x00d7('0x30')]};});_0x3b256e[_0x00d7('0x31')]=_[_0x00d7('0x2b')](_0x428263,_0x00d7('0x28'));_0x3b256e[_0x00d7('0x32')]=_['keys'](_0x24acad['query']);_0x3b256e[_0x00d7('0x33')]=_[_0x00d7('0x34')](_0x3b256e['model'],_0x3b256e[_0x00d7('0x32')]);_0x247a58[_0x00d7('0x35')]=_[_0x00d7('0x34')](_0x3b256e[_0x00d7('0x31')],qs[_0x00d7('0x36')](_0x24acad['query'][_0x00d7('0x36')]));_0x247a58[_0x00d7('0x35')]=_0x247a58[_0x00d7('0x35')][_0x00d7('0x37')]?_0x247a58[_0x00d7('0x35')]:_0x3b256e[_0x00d7('0x31')];if(!_0x24acad[_0x00d7('0x32')]['hasOwnProperty'](_0x00d7('0x38'))){_0x247a58[_0x00d7('0x1d')]=qs[_0x00d7('0x1d')](_0x24acad[_0x00d7('0x32')][_0x00d7('0x1d')]);_0x247a58[_0x00d7('0x39')]=qs[_0x00d7('0x39')](_0x24acad[_0x00d7('0x32')]['offset']);}_0x247a58['order']=qs[_0x00d7('0x3a')](_0x24acad['query'][_0x00d7('0x3a')]);_0x247a58[_0x00d7('0x3b')]=qs['filters'](_[_0x00d7('0x3c')](_0x24acad[_0x00d7('0x32')],_0x3b256e[_0x00d7('0x33')]),_0x428263);if(_0x24acad[_0x00d7('0x32')][_0x00d7('0x3d')]){_0x247a58[_0x00d7('0x3b')]=_[_0x00d7('0x3e')](_0x247a58[_0x00d7('0x3b')],{'$or':_[_0x00d7('0x2b')](_0x428263,function(_0x18f011){if(_0x18f011['type']!=='VIRTUAL'){var _0x3889d0={};_0x3889d0[_0x18f011[_0x00d7('0x28')]]={'$like':'%'+_0x24acad[_0x00d7('0x32')][_0x00d7('0x3d')]+'%'};return _0x3889d0;}})});}_0x247a58=_['merge']({},_0x247a58,_0x24acad['options']);var _0xe78f2b={'where':_0x247a58[_0x00d7('0x3b')]};return db[_0x00d7('0x2c')][_0x00d7('0x1e')](_0xe78f2b)[_0x00d7('0x24')](function(_0x40d02e){_0x391fce[_0x00d7('0x1e')]=_0x40d02e;if(_0x24acad[_0x00d7('0x32')]['includeAll']){_0x247a58[_0x00d7('0x3f')]=[{'all':!![]}];}return db[_0x00d7('0x2c')][_0x00d7('0x40')](_0x247a58);})[_0x00d7('0x24')](function(_0x2e888c){_0x391fce[_0x00d7('0x41')]=_0x2e888c;return _0x391fce;})[_0x00d7('0x24')](respondWithFilteredResult(_0x274a3c,_0x247a58))[_0x00d7('0x42')](handleError(_0x274a3c,null));};
\ No newline at end of file
index de0fa83..62c32f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ec=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations'];(function(_0x209d8a,_0x38c581){var _0x3712d7=function(_0x13a8a1){while(--_0x13a8a1){_0x209d8a['push'](_0x209d8a['shift']());}};_0x3712d7(++_0x38c581);}(_0x52ec,0x134));var _0xc52e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x52ec[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0xc52e('0x0'));var util=require(_0xc52e('0x1'));var logger=require(_0xc52e('0x2'))(_0xc52e('0x3'));var moment=require('moment');var BPromise=require(_0xc52e('0x4'));var rp=require(_0xc52e('0x5'));var fs=require('fs');var path=require(_0xc52e('0x6'));var rimraf=require(_0xc52e('0x7'));var config=require(_0xc52e('0x8'));var attributes=require(_0xc52e('0x9'));module[_0xc52e('0xa')]=function(_0x2cedee,_0x122876){return _0x2cedee[_0xc52e('0xb')](_0xc52e('0xc'),attributes,{'tableName':_0xc52e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f27=['../../config/environment','./migration.attributes','exports','define','Migration','migrations','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x483fb9,_0x457348){var _0x27eaf0=function(_0x5bc4a0){while(--_0x5bc4a0){_0x483fb9['push'](_0x483fb9['shift']());}};_0x27eaf0(++_0x457348);}(_0x7f27,0xd2));var _0x77f2=function(_0x2af4ab,_0x91b5de){_0x2af4ab=_0x2af4ab-0x0;var _0x405d34=_0x7f27[_0x2af4ab];return _0x405d34;};'use strict';var _=require('lodash');var util=require(_0x77f2('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x77f2('0x1'));var BPromise=require(_0x77f2('0x2'));var rp=require(_0x77f2('0x3'));var fs=require('fs');var path=require(_0x77f2('0x4'));var rimraf=require(_0x77f2('0x5'));var config=require(_0x77f2('0x6'));var attributes=require(_0x77f2('0x7'));module[_0x77f2('0x8')]=function(_0x33f2fd,_0x527d9c){return _0x33f2fd[_0x77f2('0x9')](_0x77f2('0xa'),attributes,{'tableName':_0x77f2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f70750b..ed9cf60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a24=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x280a81,_0xbe23b8){var _0x46ba97=function(_0x494dc3){while(--_0x494dc3){_0x280a81['push'](_0x280a81['shift']());}};_0x46ba97(++_0xbe23b8);}(_0x6a24,0xd1));var _0x46a2=function(_0x297086,_0x4d74cd){_0x297086=_0x297086-0x0;var _0x3dc62d=_0x6a24[_0x297086];return _0x3dc62d;};'use strict';var _=require(_0x46a2('0x0'));var util=require(_0x46a2('0x1'));var moment=require('moment');var BPromise=require(_0x46a2('0x2'));var rs=require(_0x46a2('0x3'));var fs=require('fs');var Redis=require(_0x46a2('0x4'));var db=require(_0x46a2('0x5'))['db'];var utils=require(_0x46a2('0x6'));var logger=require('../../config/logger')(_0x46a2('0x7'));var config=require(_0x46a2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x46a2('0x9')][_0x46a2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x506698,_0x49870f,_0x2092f3){return new BPromise(function(_0x321b88,_0x587092){return client[_0x46a2('0xb')](_0x506698,_0x2092f3)['then'](function(_0x395578){logger['info'](_0x46a2('0xc'),_0x49870f,_0x46a2('0xd'));logger[_0x46a2('0xe')](_0x46a2('0xf'),_0x49870f,_0x46a2('0xd'),JSON[_0x46a2('0x10')](_0x395578));if(_0x395578[_0x46a2('0x11')]){if(_0x395578[_0x46a2('0x11')]['code']===0x1f4){logger['error'](_0x46a2('0xc'),_0x49870f,_0x395578[_0x46a2('0x11')]['message']);return _0x587092(_0x395578[_0x46a2('0x11')][_0x46a2('0x12')]);}logger[_0x46a2('0x11')](_0x46a2('0xc'),_0x49870f,_0x395578[_0x46a2('0x11')][_0x46a2('0x12')]);return _0x321b88(_0x395578[_0x46a2('0x11')][_0x46a2('0x12')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x49870f,_0x46a2('0xd'));_0x321b88(_0x395578[_0x46a2('0x13')]['message']);}})[_0x46a2('0x14')](function(_0x2d755b){logger['error'](_0x46a2('0xc'),_0x49870f,_0x2d755b);_0x587092(_0x2d755b);});});}
\ No newline at end of file
+var _0x2d58=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2d58,0x186));var _0x82d5=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2d58[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x82d5('0x0'));var util=require(_0x82d5('0x1'));var moment=require(_0x82d5('0x2'));var BPromise=require('bluebird');var rs=require(_0x82d5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82d5('0x4'))['db'];var utils=require(_0x82d5('0x5'));var logger=require(_0x82d5('0x6'))(_0x82d5('0x7'));var config=require(_0x82d5('0x8'));var jayson=require(_0x82d5('0x9'));var client=jayson[_0x82d5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd636fe,_0x2f5257,_0x24c9cb){return new BPromise(function(_0x3dea8b,_0x3ff208){return client[_0x82d5('0xb')](_0xd636fe,_0x24c9cb)[_0x82d5('0xc')](function(_0x19d045){logger[_0x82d5('0xd')](_0x82d5('0xe'),_0x2f5257,'request\x20sent');logger[_0x82d5('0xf')](_0x82d5('0x10'),_0x2f5257,_0x82d5('0x11'),JSON[_0x82d5('0x12')](_0x19d045));if(_0x19d045['error']){if(_0x19d045['error'][_0x82d5('0x13')]===0x1f4){logger[_0x82d5('0x14')]('Migration,\x20%s,\x20%s',_0x2f5257,_0x19d045[_0x82d5('0x14')]['message']);return _0x3ff208(_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);}logger[_0x82d5('0x14')](_0x82d5('0xe'),_0x2f5257,_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);return _0x3dea8b(_0x19d045[_0x82d5('0x14')][_0x82d5('0x15')]);}else{logger['info'](_0x82d5('0xe'),_0x2f5257,_0x82d5('0x11'));_0x3dea8b(_0x19d045['result'][_0x82d5('0x15')]);}})[_0x82d5('0x16')](function(_0x421d58){logger[_0x82d5('0x14')](_0x82d5('0xe'),_0x2f5257,_0x421d58);_0x3ff208(_0x421d58);});});}
\ No newline at end of file
index 00246be..c68c4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db4=['../../config/environment','./network.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5b6d9f,_0x1113b4){var _0x144d7d=function(_0xe149f){while(--_0xe149f){_0x5b6d9f['push'](_0x5b6d9f['shift']());}};_0x144d7d(++_0x1113b4);}(_0x6db4,0x111));var _0x46db=function(_0x3180aa,_0xe36634){_0x3180aa=_0x3180aa-0x0;var _0x5a86cc=_0x6db4[_0x3180aa];return _0x5a86cc;};'use strict';var multer=require('multer');var util=require(_0x46db('0x0'));var path=require(_0x46db('0x1'));var timeout=require(_0x46db('0x2'));var express=require(_0x46db('0x3'));var router=express[_0x46db('0x4')]();var fs_extra=require(_0x46db('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x46db('0x6'));var config=require(_0x46db('0x7'));var controller=require(_0x46db('0x8'));router[_0x46db('0x9')]('/',auth[_0x46db('0xa')](),controller[_0x46db('0xb')]);router[_0x46db('0x9')]('/:id',auth[_0x46db('0xa')](),controller[_0x46db('0xc')]);router[_0x46db('0xd')]('/',auth[_0x46db('0xa')](),controller[_0x46db('0xe')]);router[_0x46db('0xf')](_0x46db('0x10'),auth[_0x46db('0xa')](),controller[_0x46db('0x11')]);router[_0x46db('0x12')](_0x46db('0x10'),auth[_0x46db('0xa')](),controller['destroy']);module[_0x46db('0x13')]=router;
\ No newline at end of file
+var _0xeaab=['exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xeaab,0xd9));var _0xbeaa=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xeaab[_0x432682];return _0x463d05;};'use strict';var multer=require(_0xbeaa('0x0'));var util=require('util');var path=require(_0xbeaa('0x1'));var timeout=require(_0xbeaa('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbeaa('0x3'));var auth=require(_0xbeaa('0x4'));var interaction=require(_0xbeaa('0x5'));var config=require(_0xbeaa('0x6'));var controller=require(_0xbeaa('0x7'));router[_0xbeaa('0x8')]('/',auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xa')]);router[_0xbeaa('0x8')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xc')]);router[_0xbeaa('0xd')]('/',auth[_0xbeaa('0x9')](),controller['create']);router[_0xbeaa('0xe')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller[_0xbeaa('0xf')]);router[_0xbeaa('0x10')](_0xbeaa('0xb'),auth[_0xbeaa('0x9')](),controller['destroy']);module[_0xbeaa('0x11')]=router;
\ No newline at end of file
index b6e3808..484384a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03c3=['sequelize','ENUM','turn','STRING'];(function(_0x555ebb,_0x4b1b68){var _0x3c0a4a=function(_0x312e2f){while(--_0x312e2f){_0x555ebb['push'](_0x555ebb['shift']());}};_0x3c0a4a(++_0x4b1b68);}(_0x03c3,0x6c));var _0x303c=function(_0x304e6e,_0x6d2686){_0x304e6e=_0x304e6e-0x0;var _0x41e010=_0x03c3[_0x304e6e];return _0x41e010;};'use strict';var Sequelize=require(_0x303c('0x0'));module['exports']={'type':{'type':Sequelize[_0x303c('0x1')]('localnet','externip','stun',_0x303c('0x2'))},'value':{'type':Sequelize[_0x303c('0x3')]},'username':{'type':Sequelize[_0x303c('0x3')]},'password':{'type':Sequelize[_0x303c('0x3')]}};
\ No newline at end of file
+var _0x14cf=['stun','turn','STRING','sequelize','ENUM','localnet','externip'];(function(_0x5f56f4,_0x545544){var _0x661cfe=function(_0x4ce8af){while(--_0x4ce8af){_0x5f56f4['push'](_0x5f56f4['shift']());}};_0x661cfe(++_0x545544);}(_0x14cf,0x176));var _0xf14c=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x14cf[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require(_0xf14c('0x0'));module['exports']={'type':{'type':Sequelize[_0xf14c('0x1')](_0xf14c('0x2'),_0xf14c('0x3'),_0xf14c('0x4'),_0xf14c('0x5'))},'value':{'type':Sequelize[_0xf14c('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xf14c('0x6')]}};
\ No newline at end of file
index 4397865..a07ad60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d63=['/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','utf8','path','ejs','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','code','message','error','Network,\x20%s,\x20%s','result','catch','status','json','undefined','limit','count','Content-Range','update','destroy','end','send','index','map','Network','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','nolimit','offset','sort','where','pick','filter','merge','include','rows','show','params','includeAll','options','find','create','body','findAll','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','toUpperCase','TURN','server/files/templates/turn_multiple.ejs'];(function(_0xcdd440,_0x58a1d2){var _0x366308=function(_0x15fc42){while(--_0x15fc42){_0xcdd440['push'](_0xcdd440['shift']());}};_0x366308(++_0x58a1d2);}(_0x1d63,0x101));var _0x31d6=function(_0x45101f,_0x59d599){_0x45101f=_0x45101f-0x0;var _0x25387b=_0x1d63[_0x45101f];return _0x25387b;};'use strict';var util=require('util');var path=require(_0x31d6('0x0'));var ejs=require(_0x31d6('0x1'));var fs=require('fs');var _=require('lodash');var qs=require(_0x31d6('0x2'));var logger=require(_0x31d6('0x3'))(_0x31d6('0x4'));var config=require(_0x31d6('0x5'));var db=require('../../mysqldb')['db'];var jayson=require(_0x31d6('0x6'));var client=jayson['client'][_0x31d6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x55d463,_0x493854,_0x378a59,_0x2b5c4a){return new Promise(function(_0x12e060,_0x5b3be7){var _0x5ade6b=_0x2b5c4a||client;return _0x5ade6b[_0x31d6('0x8')](_0x55d463,_0x378a59)[_0x31d6('0x9')](function(_0x14c300){logger['info']('Network,\x20%s,\x20%s',_0x493854,_0x31d6('0xa'));logger[_0x31d6('0xb')](_0x31d6('0xc'),_0x493854,_0x31d6('0xa'),JSON[_0x31d6('0xd')](_0x14c300));if(_0x14c300['error']){if(_0x14c300['error'][_0x31d6('0xe')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x493854,_0x14c300['error'][_0x31d6('0xf')]);return _0x5b3be7(_0x14c300[_0x31d6('0x10')]['message']);}logger[_0x31d6('0x10')]('Network,\x20%s,\x20%s',_0x493854,_0x14c300['error'][_0x31d6('0xf')]);return _0x12e060(_0x14c300[_0x31d6('0x10')][_0x31d6('0xf')]);}else{logger['info'](_0x31d6('0x11'),_0x493854,'request\x20sent');_0x12e060(_0x14c300[_0x31d6('0x12')][_0x31d6('0xf')]);}})[_0x31d6('0x13')](function(_0x338a31){logger['error'](_0x31d6('0x11'),_0x493854,_0x338a31);_0x5b3be7(_0x338a31);});});}function respondWithResult(_0x87b0d2,_0x1cb299){_0x1cb299=_0x1cb299||0xc8;return function(_0x182b29){if(_0x182b29){return _0x87b0d2[_0x31d6('0x14')](_0x1cb299)[_0x31d6('0x15')](_0x182b29);}};}function respondWithFilteredResult(_0x1e1573,_0x26d32d){return function(_0x589c6f){if(_0x589c6f){var _0x45da39=typeof _0x26d32d['offset']===_0x31d6('0x16')&&typeof _0x26d32d[_0x31d6('0x17')]==='undefined';var _0x4c9eac=_0x589c6f[_0x31d6('0x18')];var _0x3a4d24=_0x45da39?0x0:_0x26d32d['offset'];var _0x2d9bc8=_0x45da39?_0x589c6f[_0x31d6('0x18')]:_0x26d32d['offset']+_0x26d32d[_0x31d6('0x17')];var _0xe4b9dd;if(_0x2d9bc8>=_0x4c9eac){_0x2d9bc8=_0x4c9eac;_0xe4b9dd=0xc8;}else{_0xe4b9dd=0xce;}_0x1e1573[_0x31d6('0x14')](_0xe4b9dd);return _0x1e1573['set'](_0x31d6('0x19'),_0x3a4d24+'-'+_0x2d9bc8+'/'+_0x4c9eac)['json'](_0x589c6f);}return null;};}function saveUpdates(_0x3cae49){return function(_0x4fe4d9){if(_0x4fe4d9){return _0x4fe4d9[_0x31d6('0x1a')](_0x3cae49)[_0x31d6('0x9')](function(_0x3bd0c9){return _0x3bd0c9;});}return null;};}function removeEntity(_0x410912){return function(_0x2e8d82){if(_0x2e8d82){return _0x2e8d82[_0x31d6('0x1b')]()[_0x31d6('0x9')](function(){_0x410912[_0x31d6('0x14')](0xcc)[_0x31d6('0x1c')]();});}};}function handleEntityNotFound(_0x25cc9b){return function(_0xa86df2){if(!_0xa86df2){_0x25cc9b['sendStatus'](0x194);}return _0xa86df2;};}function handleError(_0x5e3572,_0x523604){_0x523604=_0x523604||0x1f4;return function(_0x4ae0f6){logger[_0x31d6('0x10')](_0x4ae0f6['stack']);if(_0x4ae0f6['name']){delete _0x4ae0f6['name'];}_0x5e3572['status'](_0x523604)[_0x31d6('0x1d')](_0x4ae0f6);};}exports[_0x31d6('0x1e')]=function(_0xa8e12e,_0x2fc761){var _0x450a27={},_0x1c736f={},_0x2b7c79={'count':0x0,'rows':[]};var _0x15374a=_[_0x31d6('0x1f')](db[_0x31d6('0x20')][_0x31d6('0x21')],function(_0x32fd88){return{'name':_0x32fd88[_0x31d6('0x22')],'type':_0x32fd88[_0x31d6('0x23')][_0x31d6('0x24')]};});_0x1c736f[_0x31d6('0x25')]=_['map'](_0x15374a,_0x31d6('0x26'));_0x1c736f['query']=_[_0x31d6('0x27')](_0xa8e12e[_0x31d6('0x28')]);_0x1c736f[_0x31d6('0x29')]=_[_0x31d6('0x2a')](_0x1c736f[_0x31d6('0x25')],_0x1c736f[_0x31d6('0x28')]);_0x450a27[_0x31d6('0x2b')]=_[_0x31d6('0x2a')](_0x1c736f[_0x31d6('0x25')],qs[_0x31d6('0x2c')](_0xa8e12e['query']['fields']));_0x450a27[_0x31d6('0x2b')]=_0x450a27[_0x31d6('0x2b')][_0x31d6('0x2d')]?_0x450a27[_0x31d6('0x2b')]:_0x1c736f[_0x31d6('0x25')];if(!_0xa8e12e[_0x31d6('0x28')]['hasOwnProperty'](_0x31d6('0x2e'))){_0x450a27[_0x31d6('0x17')]=qs[_0x31d6('0x17')](_0xa8e12e[_0x31d6('0x28')][_0x31d6('0x17')]);_0x450a27[_0x31d6('0x2f')]=qs[_0x31d6('0x2f')](_0xa8e12e['query'][_0x31d6('0x2f')]);}_0x450a27['order']=qs[_0x31d6('0x30')](_0xa8e12e['query']['sort']);_0x450a27[_0x31d6('0x31')]=qs['filters'](_[_0x31d6('0x32')](_0xa8e12e[_0x31d6('0x28')],_0x1c736f[_0x31d6('0x29')]),_0x15374a);if(_0xa8e12e[_0x31d6('0x28')][_0x31d6('0x33')]){_0x450a27[_0x31d6('0x31')]=_['merge'](_0x450a27[_0x31d6('0x31')],{'$or':_[_0x31d6('0x1f')](_0x15374a,function(_0x4d6bc5){if(_0x4d6bc5['type']!=='VIRTUAL'){var _0x7f3a12={};_0x7f3a12[_0x4d6bc5['name']]={'$like':'%'+_0xa8e12e[_0x31d6('0x28')][_0x31d6('0x33')]+'%'};return _0x7f3a12;}})});}_0x450a27=_[_0x31d6('0x34')]({},_0x450a27,_0xa8e12e['options']);var _0x4a1d={'where':_0x450a27['where']};return db[_0x31d6('0x20')][_0x31d6('0x18')](_0x4a1d)[_0x31d6('0x9')](function(_0x5de10f){_0x2b7c79['count']=_0x5de10f;if(_0xa8e12e[_0x31d6('0x28')]['includeAll']){_0x450a27[_0x31d6('0x35')]=[{'all':!![]}];}return db[_0x31d6('0x20')]['findAll'](_0x450a27);})[_0x31d6('0x9')](function(_0x3b3786){_0x2b7c79[_0x31d6('0x36')]=_0x3b3786;return _0x2b7c79;})['then'](respondWithFilteredResult(_0x2fc761,_0x450a27))[_0x31d6('0x13')](handleError(_0x2fc761,null));};exports[_0x31d6('0x37')]=function(_0x28a507,_0x3eb3a4){var _0x44c9a1={'raw':!![],'where':{'id':_0x28a507[_0x31d6('0x38')]['id']}},_0xe76a48={};_0xe76a48[_0x31d6('0x25')]=_[_0x31d6('0x27')](db['Network'][_0x31d6('0x21')]);_0xe76a48[_0x31d6('0x28')]=_[_0x31d6('0x27')](_0x28a507[_0x31d6('0x28')]);_0xe76a48[_0x31d6('0x29')]=_['intersection'](_0xe76a48[_0x31d6('0x25')],_0xe76a48['query']);_0x44c9a1[_0x31d6('0x2b')]=_[_0x31d6('0x2a')](_0xe76a48['model'],qs[_0x31d6('0x2c')](_0x28a507['query'][_0x31d6('0x2c')]));_0x44c9a1[_0x31d6('0x2b')]=_0x44c9a1[_0x31d6('0x2b')]['length']?_0x44c9a1[_0x31d6('0x2b')]:_0xe76a48['model'];if(_0x28a507[_0x31d6('0x28')][_0x31d6('0x39')]){_0x44c9a1['include']=[{'all':!![]}];}_0x44c9a1=_[_0x31d6('0x34')]({},_0x44c9a1,_0x28a507[_0x31d6('0x3a')]);return db[_0x31d6('0x20')][_0x31d6('0x3b')](_0x44c9a1)[_0x31d6('0x9')](handleEntityNotFound(_0x3eb3a4,null))[_0x31d6('0x9')](respondWithResult(_0x3eb3a4,null))['catch'](handleError(_0x3eb3a4,null));};exports['create']=function(_0x31c1a4,_0x1dd6fd){var _0x491ba2;return db[_0x31d6('0x20')][_0x31d6('0x3c')](_0x31c1a4[_0x31d6('0x3d')],{'raw':!![]})[_0x31d6('0x9')](function(_0x5329a5){_0x491ba2=_0x5329a5;return db[_0x31d6('0x20')][_0x31d6('0x3e')]({'where':{'type':_0x31c1a4[_0x31d6('0x3d')][_0x31d6('0x23')]},'raw':!![]});})['then'](function(_0x2b83c4){if(_0x491ba2[_0x31d6('0x23')]['toUpperCase']()==_0x31d6('0x3f')){var _0x1116d7=fs[_0x31d6('0x40')](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x43')),'utf8');var _0xe3f338=ejs[_0x31d6('0x44')](_0x1116d7,{'networks':_0x2b83c4||[]});fs[_0x31d6('0x45')](_0x31d6('0x46'),_0xe3f338);return respondWithRpcPromise(_0x31d6('0x47'),'create',{'module':'res_stun_monitor.so'});}else if(_0x491ba2['type'][_0x31d6('0x48')]()==_0x31d6('0x49')){var _0x1289bf=fs[_0x31d6('0x40')](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x4a')),'utf8');var _0xe9d10=ejs[_0x31d6('0x44')](_0x1289bf,{'networks':_0x2b83c4||[]});fs[_0x31d6('0x45')](_0x31d6('0x4b'),_0xe9d10);return respondWithRpcPromise('Reload',_0x31d6('0x3c'),{'module':_0x31d6('0x4c')});}else{var _0xc04f1e=fs['readFileSync'](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x4d')),'utf8');var _0x23f8fd=ejs['render'](_0xc04f1e,{'networks':_0x2b83c4||[]});fs[_0x31d6('0x45')](util[_0x31d6('0x4e')](_0x31d6('0x4f'),_0x31c1a4[_0x31d6('0x3d')][_0x31d6('0x23')][_0x31d6('0x50')]()),_0x23f8fd);return respondWithRpcPromise(_0x31d6('0x47'),_0x31d6('0x3c'),{'module':_0x31d6('0x51')});}})[_0x31d6('0x9')](function(){return _0x491ba2;})[_0x31d6('0x9')](respondWithResult(_0x1dd6fd,0xc9))[_0x31d6('0x13')](handleError(_0x1dd6fd,null));};exports[_0x31d6('0x1a')]=function(_0x1bae15,_0x562401){var _0x519c02;return db[_0x31d6('0x20')][_0x31d6('0x3b')]({'where':{'id':_0x1bae15['params']['id']}})[_0x31d6('0x9')](handleEntityNotFound(_0x562401,null))[_0x31d6('0x9')](saveUpdates(_0x1bae15[_0x31d6('0x3d')],null))[_0x31d6('0x9')](function(_0x4506bf){if(_0x4506bf){_0x519c02=_0x4506bf;return db['Network']['findAll']({'where':{'type':_0x519c02[_0x31d6('0x23')]},'raw':!![]});}return null;})[_0x31d6('0x9')](function(_0xfcce4b){if(_0x519c02[_0x31d6('0x23')]['toUpperCase']()==_0x31d6('0x3f')){var _0x80d9e1=fs[_0x31d6('0x40')](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x43')),_0x31d6('0x52'));var _0x3c67de=ejs['render'](_0x80d9e1,{'networks':_0xfcce4b||[]});fs[_0x31d6('0x45')]('/etc/asterisk/stun_xcally.conf',_0x3c67de);return respondWithRpcPromise(_0x31d6('0x47'),_0x31d6('0x1a'),{'module':_0x31d6('0x4c')});}else if(_0x519c02['type']['toUpperCase']()==_0x31d6('0x49')){var _0x4a33cf=fs[_0x31d6('0x40')](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x4a')),'utf8');var _0xffa224=ejs[_0x31d6('0x44')](_0x4a33cf,{'networks':_0xfcce4b||[]});fs[_0x31d6('0x45')](_0x31d6('0x4b'),_0xffa224);return respondWithRpcPromise('Reload',_0x31d6('0x1a'),{'module':_0x31d6('0x4c')});}else{var _0x6e0ff4=fs[_0x31d6('0x40')](path[_0x31d6('0x41')](config[_0x31d6('0x42')],_0x31d6('0x4d')),_0x31d6('0x52'));var _0x3b3326=ejs[_0x31d6('0x44')](_0x6e0ff4,{'networks':_0xfcce4b||[]});fs[_0x31d6('0x45')](util[_0x31d6('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x1bae15[_0x31d6('0x3d')][_0x31d6('0x23')][_0x31d6('0x50')]()),_0x3b3326);return respondWithRpcPromise('Reload','update',{'module':_0x31d6('0x51')});}})[_0x31d6('0x9')](function(_0x144636){if(_0x144636){return _0x519c02;}return null;})['then'](respondWithResult(_0x562401,null))['catch'](handleError(_0x562401,null));};exports[_0x31d6('0x1b')]=function(_0x5b3a05,_0x1f7fe6){var _0x53b8d0;return db[_0x31d6('0x20')]['find']({'where':{'id':_0x5b3a05[_0x31d6('0x38')]['id']}})[_0x31d6('0x9')](function(_0x3b150c){_0x53b8d0=_0x3b150c;return _0x3b150c;})[_0x31d6('0x9')](handleEntityNotFound(_0x1f7fe6,null))[_0x31d6('0x9')](removeEntity(_0x1f7fe6,null))[_0x31d6('0x9')](function(){if(_0x53b8d0){return db[_0x31d6('0x20')][_0x31d6('0x3e')]({'where':{'type':_0x53b8d0[_0x31d6('0x23')]},'raw':!![]});}})[_0x31d6('0x9')](function(_0x3f5765){if(_0x53b8d0['type'][_0x31d6('0x48')]()=='STUN'){var _0x4ebda0=fs[_0x31d6('0x40')](path['join'](config[_0x31d6('0x42')],_0x31d6('0x43')),_0x31d6('0x52'));var _0x3f0a49=ejs[_0x31d6('0x44')](_0x4ebda0,{'networks':_0x3f5765||[]});fs[_0x31d6('0x45')](_0x31d6('0x46'),_0x3f0a49);return respondWithRpcPromise(_0x31d6('0x47'),'destroy',{'module':_0x31d6('0x4c')});}else if(_0x53b8d0[_0x31d6('0x23')][_0x31d6('0x48')]()=='TURN'){var _0x13cf65=fs[_0x31d6('0x40')](path['join'](config['root'],_0x31d6('0x4a')),_0x31d6('0x52'));var _0x8ee64d=ejs[_0x31d6('0x44')](_0x13cf65,{'networks':_0x3f5765||[]});fs[_0x31d6('0x45')](_0x31d6('0x4b'),_0x8ee64d);return respondWithRpcPromise(_0x31d6('0x47'),_0x31d6('0x1b'),{'module':_0x31d6('0x4c')});}else{var _0x2c01e9=fs['readFileSync'](path['join'](config[_0x31d6('0x42')],_0x31d6('0x4d')),_0x31d6('0x52'));var _0x355d22=ejs[_0x31d6('0x44')](_0x2c01e9,{'networks':_0x3f5765||[]});fs[_0x31d6('0x45')](util[_0x31d6('0x4e')](_0x31d6('0x4f'),_0x53b8d0[_0x31d6('0x23')][_0x31d6('0x50')]()),_0x355d22);return respondWithRpcPromise(_0x31d6('0x47'),_0x31d6('0x1b'),{'module':'chan_sip.so'});}})[_0x31d6('0x13')](handleError(_0x1f7fe6,null));};
\ No newline at end of file
+var _0x1e31=['server/files/templates/network.ejs','format','path','ejs','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','json','offset','limit','undefined','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','Network','fieldName','type','key','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','show','rawAttributes','find','create','body','toUpperCase','STUN','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','params','TURN'];(function(_0x3200ba,_0x44da92){var _0x4c015c=function(_0x3eacf5){while(--_0x3eacf5){_0x3200ba['push'](_0x3200ba['shift']());}};_0x4c015c(++_0x44da92);}(_0x1e31,0x1ba));var _0x11e3=function(_0x4abe7c,_0x16f1a5){_0x4abe7c=_0x4abe7c-0x0;var _0x16f044=_0x1e31[_0x4abe7c];return _0x16f044;};'use strict';var util=require('util');var path=require(_0x11e3('0x0'));var ejs=require(_0x11e3('0x1'));var fs=require('fs');var _=require(_0x11e3('0x2'));var qs=require(_0x11e3('0x3'));var logger=require(_0x11e3('0x4'))('api');var config=require(_0x11e3('0x5'));var db=require(_0x11e3('0x6'))['db'];var jayson=require(_0x11e3('0x7'));var client=jayson[_0x11e3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x518259,_0x477fd6,_0x435c36,_0x15c2cb){return new Promise(function(_0x2f6699,_0x292534){var _0x4349c7=_0x15c2cb||client;return _0x4349c7[_0x11e3('0x9')](_0x518259,_0x435c36)[_0x11e3('0xa')](function(_0x256898){logger[_0x11e3('0xb')](_0x11e3('0xc'),_0x477fd6,'request\x20sent');logger['debug'](_0x11e3('0xd'),_0x477fd6,_0x11e3('0xe'),JSON[_0x11e3('0xf')](_0x256898));if(_0x256898[_0x11e3('0x10')]){if(_0x256898[_0x11e3('0x10')][_0x11e3('0x11')]===0x1f4){logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x256898[_0x11e3('0x10')][_0x11e3('0x12')]);return _0x292534(_0x256898['error'][_0x11e3('0x12')]);}logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x256898['error'][_0x11e3('0x12')]);return _0x2f6699(_0x256898[_0x11e3('0x10')][_0x11e3('0x12')]);}else{logger[_0x11e3('0xb')](_0x11e3('0xc'),_0x477fd6,'request\x20sent');_0x2f6699(_0x256898['result'][_0x11e3('0x12')]);}})[_0x11e3('0x13')](function(_0x573d72){logger[_0x11e3('0x10')](_0x11e3('0xc'),_0x477fd6,_0x573d72);_0x292534(_0x573d72);});});}function respondWithResult(_0x253cfb,_0x12571c){_0x12571c=_0x12571c||0xc8;return function(_0x415522){if(_0x415522){return _0x253cfb[_0x11e3('0x14')](_0x12571c)[_0x11e3('0x15')](_0x415522);}};}function respondWithFilteredResult(_0x26e9ad,_0x11a9dd){return function(_0x39af4b){if(_0x39af4b){var _0x2d9eaf=typeof _0x11a9dd[_0x11e3('0x16')]==='undefined'&&typeof _0x11a9dd[_0x11e3('0x17')]===_0x11e3('0x18');var _0x17d9fa=_0x39af4b['count'];var _0x149524=_0x2d9eaf?0x0:_0x11a9dd[_0x11e3('0x16')];var _0xb64b4c=_0x2d9eaf?_0x39af4b[_0x11e3('0x19')]:_0x11a9dd[_0x11e3('0x16')]+_0x11a9dd[_0x11e3('0x17')];var _0x380137;if(_0xb64b4c>=_0x17d9fa){_0xb64b4c=_0x17d9fa;_0x380137=0xc8;}else{_0x380137=0xce;}_0x26e9ad[_0x11e3('0x14')](_0x380137);return _0x26e9ad[_0x11e3('0x1a')](_0x11e3('0x1b'),_0x149524+'-'+_0xb64b4c+'/'+_0x17d9fa)[_0x11e3('0x15')](_0x39af4b);}return null;};}function saveUpdates(_0x1508fa){return function(_0x3f4dc6){if(_0x3f4dc6){return _0x3f4dc6[_0x11e3('0x1c')](_0x1508fa)[_0x11e3('0xa')](function(_0x293ece){return _0x293ece;});}return null;};}function removeEntity(_0x4e743e){return function(_0x3b7900){if(_0x3b7900){return _0x3b7900[_0x11e3('0x1d')]()['then'](function(){_0x4e743e[_0x11e3('0x14')](0xcc)[_0x11e3('0x1e')]();});}};}function handleEntityNotFound(_0x8d5c62){return function(_0xaf0527){if(!_0xaf0527){_0x8d5c62[_0x11e3('0x1f')](0x194);}return _0xaf0527;};}function handleError(_0x4e3209,_0x3290a2){_0x3290a2=_0x3290a2||0x1f4;return function(_0x509e2a){logger[_0x11e3('0x10')](_0x509e2a[_0x11e3('0x20')]);if(_0x509e2a[_0x11e3('0x21')]){delete _0x509e2a[_0x11e3('0x21')];}_0x4e3209['status'](_0x3290a2)[_0x11e3('0x22')](_0x509e2a);};}exports[_0x11e3('0x23')]=function(_0x55b54a,_0x303044){var _0x31bbac={},_0x36a6a4={},_0x3327ac={'count':0x0,'rows':[]};var _0x1301f4=_[_0x11e3('0x24')](db[_0x11e3('0x25')]['rawAttributes'],function(_0x396e62){return{'name':_0x396e62[_0x11e3('0x26')],'type':_0x396e62[_0x11e3('0x27')][_0x11e3('0x28')]};});_0x36a6a4['model']=_[_0x11e3('0x24')](_0x1301f4,_0x11e3('0x21'));_0x36a6a4['query']=_[_0x11e3('0x29')](_0x55b54a['query']);_0x36a6a4[_0x11e3('0x2a')]=_[_0x11e3('0x2b')](_0x36a6a4['model'],_0x36a6a4[_0x11e3('0x2c')]);_0x31bbac[_0x11e3('0x2d')]=_[_0x11e3('0x2b')](_0x36a6a4[_0x11e3('0x2e')],qs['fields'](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x2f')]));_0x31bbac[_0x11e3('0x2d')]=_0x31bbac[_0x11e3('0x2d')][_0x11e3('0x30')]?_0x31bbac[_0x11e3('0x2d')]:_0x36a6a4['model'];if(!_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x31')](_0x11e3('0x32'))){_0x31bbac[_0x11e3('0x17')]=qs[_0x11e3('0x17')](_0x55b54a[_0x11e3('0x2c')]['limit']);_0x31bbac['offset']=qs['offset'](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x16')]);}_0x31bbac[_0x11e3('0x33')]=qs[_0x11e3('0x34')](_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x34')]);_0x31bbac[_0x11e3('0x35')]=qs[_0x11e3('0x2a')](_[_0x11e3('0x36')](_0x55b54a[_0x11e3('0x2c')],_0x36a6a4[_0x11e3('0x2a')]),_0x1301f4);if(_0x55b54a[_0x11e3('0x2c')]['filter']){_0x31bbac[_0x11e3('0x35')]=_['merge'](_0x31bbac[_0x11e3('0x35')],{'$or':_[_0x11e3('0x24')](_0x1301f4,function(_0x495c1a){if(_0x495c1a[_0x11e3('0x27')]!==_0x11e3('0x37')){var _0x3ba7b6={};_0x3ba7b6[_0x495c1a[_0x11e3('0x21')]]={'$like':'%'+_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x38')]+'%'};return _0x3ba7b6;}})});}_0x31bbac=_[_0x11e3('0x39')]({},_0x31bbac,_0x55b54a[_0x11e3('0x3a')]);var _0x59f086={'where':_0x31bbac[_0x11e3('0x35')]};return db[_0x11e3('0x25')]['count'](_0x59f086)[_0x11e3('0xa')](function(_0x5aa8b6){_0x3327ac[_0x11e3('0x19')]=_0x5aa8b6;if(_0x55b54a[_0x11e3('0x2c')][_0x11e3('0x3b')]){_0x31bbac[_0x11e3('0x3c')]=[{'all':!![]}];}return db[_0x11e3('0x25')][_0x11e3('0x3d')](_0x31bbac);})[_0x11e3('0xa')](function(_0x37053d){_0x3327ac['rows']=_0x37053d;return _0x3327ac;})[_0x11e3('0xa')](respondWithFilteredResult(_0x303044,_0x31bbac))[_0x11e3('0x13')](handleError(_0x303044,null));};exports[_0x11e3('0x3e')]=function(_0x1f9c4f,_0x220b75){var _0x4c4ac4={'raw':!![],'where':{'id':_0x1f9c4f['params']['id']}},_0x588c5e={};_0x588c5e['model']=_[_0x11e3('0x29')](db['Network'][_0x11e3('0x3f')]);_0x588c5e[_0x11e3('0x2c')]=_['keys'](_0x1f9c4f['query']);_0x588c5e['filters']=_['intersection'](_0x588c5e['model'],_0x588c5e[_0x11e3('0x2c')]);_0x4c4ac4['attributes']=_[_0x11e3('0x2b')](_0x588c5e[_0x11e3('0x2e')],qs[_0x11e3('0x2f')](_0x1f9c4f[_0x11e3('0x2c')][_0x11e3('0x2f')]));_0x4c4ac4[_0x11e3('0x2d')]=_0x4c4ac4[_0x11e3('0x2d')][_0x11e3('0x30')]?_0x4c4ac4[_0x11e3('0x2d')]:_0x588c5e['model'];if(_0x1f9c4f[_0x11e3('0x2c')][_0x11e3('0x3b')]){_0x4c4ac4[_0x11e3('0x3c')]=[{'all':!![]}];}_0x4c4ac4=_[_0x11e3('0x39')]({},_0x4c4ac4,_0x1f9c4f[_0x11e3('0x3a')]);return db[_0x11e3('0x25')][_0x11e3('0x40')](_0x4c4ac4)[_0x11e3('0xa')](handleEntityNotFound(_0x220b75,null))[_0x11e3('0xa')](respondWithResult(_0x220b75,null))[_0x11e3('0x13')](handleError(_0x220b75,null));};exports[_0x11e3('0x41')]=function(_0x57b953,_0x3a31d0){var _0x9fc7fb;return db['Network'][_0x11e3('0x41')](_0x57b953['body'],{'raw':!![]})['then'](function(_0x61d514){_0x9fc7fb=_0x61d514;return db[_0x11e3('0x25')][_0x11e3('0x3d')]({'where':{'type':_0x57b953[_0x11e3('0x42')][_0x11e3('0x27')]},'raw':!![]});})[_0x11e3('0xa')](function(_0x48340b){if(_0x9fc7fb['type'][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x40ffae=fs['readFileSync'](path[_0x11e3('0x45')](config['root'],_0x11e3('0x46')),_0x11e3('0x47'));var _0x585e53=ejs[_0x11e3('0x48')](_0x40ffae,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x585e53);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x41'),{'module':'res_stun_monitor.so'});}else if(_0x9fc7fb[_0x11e3('0x27')][_0x11e3('0x43')]()=='TURN'){var _0x1fa503=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x4e')),_0x11e3('0x47'));var _0x43307e=ejs[_0x11e3('0x48')](_0x1fa503,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](_0x11e3('0x4f'),_0x43307e);return respondWithRpcPromise(_0x11e3('0x4b'),'create',{'module':_0x11e3('0x50')});}else{var _0x3556a2=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],'server/files/templates/network.ejs'),_0x11e3('0x47'));var _0x2de498=ejs[_0x11e3('0x48')](_0x3556a2,{'networks':_0x48340b||[]});fs[_0x11e3('0x49')](util['format'](_0x11e3('0x51'),_0x57b953['body']['type'][_0x11e3('0x52')]()),_0x2de498);return respondWithRpcPromise('Reload',_0x11e3('0x41'),{'module':_0x11e3('0x53')});}})['then'](function(){return _0x9fc7fb;})[_0x11e3('0xa')](respondWithResult(_0x3a31d0,0xc9))[_0x11e3('0x13')](handleError(_0x3a31d0,null));};exports[_0x11e3('0x1c')]=function(_0x26ecec,_0x1d06d4){var _0xe00d4;return db[_0x11e3('0x25')][_0x11e3('0x40')]({'where':{'id':_0x26ecec[_0x11e3('0x54')]['id']}})[_0x11e3('0xa')](handleEntityNotFound(_0x1d06d4,null))[_0x11e3('0xa')](saveUpdates(_0x26ecec[_0x11e3('0x42')],null))[_0x11e3('0xa')](function(_0x36bdbb){if(_0x36bdbb){_0xe00d4=_0x36bdbb;return db[_0x11e3('0x25')]['findAll']({'where':{'type':_0xe00d4[_0x11e3('0x27')]},'raw':!![]});}return null;})['then'](function(_0x23ebef){if(_0xe00d4[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x7d6a15=fs[_0x11e3('0x4c')](path['join'](config[_0x11e3('0x4d')],'server/files/templates/stun_multiple.ejs'),_0x11e3('0x47'));var _0x2edd4d=ejs[_0x11e3('0x48')](_0x7d6a15,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x2edd4d);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x50')});}else if(_0xe00d4[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x55')){var _0x459265=fs[_0x11e3('0x4c')](path['join'](config[_0x11e3('0x4d')],_0x11e3('0x4e')),_0x11e3('0x47'));var _0x16e8bf=ejs[_0x11e3('0x48')](_0x459265,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')]('/etc/asterisk/turn_xcally.conf',_0x16e8bf);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x50')});}else{var _0x2c2108=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x56')),_0x11e3('0x47'));var _0x4b37fe=ejs[_0x11e3('0x48')](_0x2c2108,{'networks':_0x23ebef||[]});fs[_0x11e3('0x49')](util[_0x11e3('0x57')](_0x11e3('0x51'),_0x26ecec[_0x11e3('0x42')][_0x11e3('0x27')]['toLowerCase']()),_0x4b37fe);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1c'),{'module':_0x11e3('0x53')});}})['then'](function(_0x2de934){if(_0x2de934){return _0xe00d4;}return null;})[_0x11e3('0xa')](respondWithResult(_0x1d06d4,null))[_0x11e3('0x13')](handleError(_0x1d06d4,null));};exports[_0x11e3('0x1d')]=function(_0x3b1842,_0x2ed98e){var _0x504d1b;return db[_0x11e3('0x25')]['find']({'where':{'id':_0x3b1842['params']['id']}})[_0x11e3('0xa')](function(_0x4018cf){_0x504d1b=_0x4018cf;return _0x4018cf;})[_0x11e3('0xa')](handleEntityNotFound(_0x2ed98e,null))[_0x11e3('0xa')](removeEntity(_0x2ed98e,null))[_0x11e3('0xa')](function(){if(_0x504d1b){return db[_0x11e3('0x25')][_0x11e3('0x3d')]({'where':{'type':_0x504d1b[_0x11e3('0x27')]},'raw':!![]});}})['then'](function(_0x595520){if(_0x504d1b[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x44')){var _0x4ef829=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],_0x11e3('0x46')),_0x11e3('0x47'));var _0x25dea6=ejs['render'](_0x4ef829,{'networks':_0x595520||[]});fs[_0x11e3('0x49')](_0x11e3('0x4a'),_0x25dea6);return respondWithRpcPromise('Reload',_0x11e3('0x1d'),{'module':_0x11e3('0x50')});}else if(_0x504d1b[_0x11e3('0x27')][_0x11e3('0x43')]()==_0x11e3('0x55')){var _0x1522df=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config[_0x11e3('0x4d')],'server/files/templates/turn_multiple.ejs'),_0x11e3('0x47'));var _0x27839d=ejs[_0x11e3('0x48')](_0x1522df,{'networks':_0x595520||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x27839d);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1d'),{'module':_0x11e3('0x50')});}else{var _0x26a565=fs[_0x11e3('0x4c')](path[_0x11e3('0x45')](config['root'],_0x11e3('0x56')),_0x11e3('0x47'));var _0x14b4d9=ejs[_0x11e3('0x48')](_0x26a565,{'networks':_0x595520||[]});fs[_0x11e3('0x49')](util[_0x11e3('0x57')](_0x11e3('0x51'),_0x504d1b[_0x11e3('0x27')][_0x11e3('0x52')]()),_0x14b4d9);return respondWithRpcPromise(_0x11e3('0x4b'),_0x11e3('0x1d'),{'module':_0x11e3('0x53')});}})[_0x11e3('0x13')](handleError(_0x2ed98e,null));};
\ No newline at end of file
index 38c1b4d..a1659dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd9=['./network.attributes','exports','Network','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x5edad5,_0x12f95b){var _0x1f47c8=function(_0x1e4f3){while(--_0x1e4f3){_0x5edad5['push'](_0x5edad5['shift']());}};_0x1f47c8(++_0x12f95b);}(_0x0fd9,0xa3));var _0x90fd=function(_0xbc1a4b,_0x4dfbe4){_0xbc1a4b=_0xbc1a4b-0x0;var _0x108b87=_0x0fd9[_0xbc1a4b];return _0x108b87;};'use strict';var _=require('lodash');var util=require(_0x90fd('0x0'));var logger=require(_0x90fd('0x1'))(_0x90fd('0x2'));var moment=require(_0x90fd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x90fd('0x4'));var rimraf=require(_0x90fd('0x5'));var config=require(_0x90fd('0x6'));var attributes=require(_0x90fd('0x7'));module[_0x90fd('0x8')]=function(_0x23e11b,_0x5e2107){return _0x23e11b['define'](_0x90fd('0x9'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4483=['define','Network','network','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./network.attributes','exports'];(function(_0x2edfcc,_0x5d49c0){var _0x969509=function(_0x4bba63){while(--_0x4bba63){_0x2edfcc['push'](_0x2edfcc['shift']());}};_0x969509(++_0x5d49c0);}(_0x4483,0x1a3));var _0x3448=function(_0x3846b3,_0x574329){_0x3846b3=_0x3846b3-0x0;var _0x1ae4f9=_0x4483[_0x3846b3];return _0x1ae4f9;};'use strict';var _=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var logger=require(_0x3448('0x2'))('api');var moment=require(_0x3448('0x3'));var BPromise=require(_0x3448('0x4'));var rp=require(_0x3448('0x5'));var fs=require('fs');var path=require(_0x3448('0x6'));var rimraf=require(_0x3448('0x7'));var config=require('../../config/environment');var attributes=require(_0x3448('0x8'));module[_0x3448('0x9')]=function(_0x1b05db,_0xd3606d){return _0x1b05db[_0x3448('0xa')](_0x3448('0xb'),attributes,{'tableName':_0x3448('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bec28ee..9b79019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x5c97ad,_0x60f126){_0x5c97ad=_0x5c97ad-0x0;var _0x151037=_0x7a54[_0x5c97ad];return _0x151037;};'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(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x4f828b,_0x16b0c0){_0x4f828b=_0x4f828b-0x0;var _0x581c13=_0x7a54[_0x4f828b];return _0x581c13;};'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 0f31dfa..5a60f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x641f=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','getApplications','/:id/interactions','getInteractions','post','create','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','update','delete','removeDispositions','removeAnswers','/:id/users'];(function(_0x2e961e,_0x3d080e){var _0x4368c3=function(_0x1e3ac6){while(--_0x1e3ac6){_0x2e961e['push'](_0x2e961e['shift']());}};_0x4368c3(++_0x3d080e);}(_0x641f,0x118));var _0xf641=function(_0x1967b8,_0x2ce618){_0x1967b8=_0x1967b8-0x0;var _0xeacbb7=_0x641f[_0x1967b8];return _0xeacbb7;};'use strict';var multer=require(_0xf641('0x0'));var util=require('util');var path=require(_0xf641('0x1'));var timeout=require(_0xf641('0x2'));var express=require(_0xf641('0x3'));var router=express[_0xf641('0x4')]();var fs_extra=require(_0xf641('0x5'));var auth=require(_0xf641('0x6'));var interaction=require(_0xf641('0x7'));var config=require(_0xf641('0x8'));var controller=require(_0xf641('0x9'));router[_0xf641('0xa')]('/',auth[_0xf641('0xb')](),controller[_0xf641('0xc')]);router[_0xf641('0xa')](_0xf641('0xd'),auth[_0xf641('0xb')](),controller[_0xf641('0xe')]);router[_0xf641('0xa')](_0xf641('0xf'),auth[_0xf641('0xb')](),controller[_0xf641('0x10')]);router[_0xf641('0xa')](_0xf641('0x11'),auth[_0xf641('0xb')](),controller[_0xf641('0x12')]);router['get']('/:id/canned_answers',auth[_0xf641('0xb')](),controller[_0xf641('0x13')]);router['get']('/:id/applications',auth[_0xf641('0xb')](),controller[_0xf641('0x14')]);router[_0xf641('0xa')](_0xf641('0x15'),auth[_0xf641('0xb')](),controller[_0xf641('0x16')]);router[_0xf641('0xa')]('/:id/users',auth[_0xf641('0xb')](),controller['getAgents']);router[_0xf641('0x17')]('/',auth[_0xf641('0xb')](),controller[_0xf641('0x18')]);router[_0xf641('0x17')](_0xf641('0x11'),auth[_0xf641('0xb')](),controller[_0xf641('0x19')]);router[_0xf641('0x17')](_0xf641('0x1a'),auth['isAuthenticated'](),controller[_0xf641('0x1b')]);router['post'](_0xf641('0x1c'),controller[_0xf641('0x1d')]);router[_0xf641('0x17')]('/:id/applications',auth[_0xf641('0xb')](),controller[_0xf641('0x1e')]);router[_0xf641('0x17')]('/:id/users',auth[_0xf641('0xb')](),controller[_0xf641('0x1f')]);router['post'](_0xf641('0x20'),auth['isAuthenticated'](),controller[_0xf641('0x21')]);router[_0xf641('0x22')](_0xf641('0xf'),auth[_0xf641('0xb')](),controller[_0xf641('0x23')]);router[_0xf641('0x24')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0xf641('0x24')]('/:id/dispositions',auth[_0xf641('0xb')](),controller[_0xf641('0x25')]);router[_0xf641('0x24')](_0xf641('0x1a'),auth[_0xf641('0xb')](),controller[_0xf641('0x26')]);router[_0xf641('0x24')](_0xf641('0x27'),auth[_0xf641('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xbbde=['Router','fs-extra','../../components/auth/service','./openchannelAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','connect-timeout'];(function(_0x3607c0,_0x452a6e){var _0x489705=function(_0x4c8b99){while(--_0x4c8b99){_0x3607c0['push'](_0x3607c0['shift']());}};_0x489705(++_0x452a6e);}(_0xbbde,0x194));var _0xebbd=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0xbbde[_0x504df1];return _0x1063b5;};'use strict';var multer=require(_0xebbd('0x0'));var util=require(_0xebbd('0x1'));var path=require('path');var timeout=require(_0xebbd('0x2'));var express=require('express');var router=express[_0xebbd('0x3')]();var fs_extra=require(_0xebbd('0x4'));var auth=require(_0xebbd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xebbd('0x6'));router[_0xebbd('0x7')]('/',auth[_0xebbd('0x8')](),controller[_0xebbd('0x9')]);router[_0xebbd('0x7')](_0xebbd('0xa'),auth[_0xebbd('0x8')](),controller['describe']);router[_0xebbd('0x7')](_0xebbd('0xb'),auth[_0xebbd('0x8')](),controller[_0xebbd('0xc')]);router['get'](_0xebbd('0xd'),auth['isAuthenticated'](),controller[_0xebbd('0xe')]);router[_0xebbd('0x7')](_0xebbd('0xf'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x10')]);router[_0xebbd('0x7')](_0xebbd('0x11'),auth[_0xebbd('0x8')](),controller['getApplications']);router[_0xebbd('0x7')](_0xebbd('0x12'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x13')]);router['get'](_0xebbd('0x14'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x15')]);router['post']('/',auth[_0xebbd('0x8')](),controller[_0xebbd('0x16')]);router[_0xebbd('0x17')]('/:id/dispositions',auth[_0xebbd('0x8')](),controller['addDisposition']);router[_0xebbd('0x17')](_0xebbd('0xf'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x18')]);router[_0xebbd('0x17')](_0xebbd('0x19'),controller[_0xebbd('0x1a')]);router[_0xebbd('0x17')]('/:id/applications',auth[_0xebbd('0x8')](),controller[_0xebbd('0x1b')]);router[_0xebbd('0x17')](_0xebbd('0x14'),auth['isAuthenticated'](),controller[_0xebbd('0x1c')]);router['post'](_0xebbd('0x1d'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x1e')]);router[_0xebbd('0x1f')]('/:id',auth[_0xebbd('0x8')](),controller['update']);router[_0xebbd('0x20')](_0xebbd('0xb'),auth['isAuthenticated'](),controller[_0xebbd('0x21')]);router[_0xebbd('0x20')](_0xebbd('0xd'),auth[_0xebbd('0x8')](),controller[_0xebbd('0x22')]);router[_0xebbd('0x20')](_0xebbd('0xf'),auth['isAuthenticated'](),controller[_0xebbd('0x23')]);router[_0xebbd('0x20')](_0xebbd('0x14'),auth['isAuthenticated'](),controller[_0xebbd('0x24')]);module['exports']=router;
\ No newline at end of file
index b0a96ab..57e78b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a7=['exports','STRING','name','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','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize'];(function(_0x5a2682,_0x20fb5f){var _0x4d9358=function(_0x4b2baf){while(--_0x4b2baf){_0x5a2682['push'](_0x5a2682['shift']());}};_0x4d9358(++_0x20fb5f);}(_0x60a7,0x175));var _0x760a=function(_0x5742ee,_0x492eb4){_0x5742ee=_0x5742ee-0x0;var _0x588bb8=_0x60a7[_0x5742ee];return _0x588bb8;};'use strict';var Sequelize=require(_0x760a('0x0'));var rs=require('randomstring');module[_0x760a('0x1')]={'name':{'type':Sequelize[_0x760a('0x2')],'unique':_0x760a('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x760a('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x760a('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x760a('0x4');}},'notificationSound':{'type':Sequelize[_0x760a('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x760a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x760a('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x760a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x760a('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x760a('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x760a('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x736a99){if(!_0x736a99)this['setDataValue'](_0x760a('0x8'),null);this[_0x760a('0x9')](_0x760a('0xa'),_0x736a99);}}};
\ No newline at end of file
+var _0x7ef0=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','name','STRING','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x3d742d,_0xa75d8e){var _0x2bbb89=function(_0x3c9500){while(--_0x3c9500){_0x3d742d['push'](_0x3d742d['shift']());}};_0x2bbb89(++_0xa75d8e);}(_0x7ef0,0x1ee));var _0x07ef=function(_0x5c028d,_0x3e2367){_0x5c028d=_0x5c028d-0x0;var _0x3b78ac=_0x7ef0[_0x5c028d];return _0x3b78ac;};'use strict';var Sequelize=require(_0x07ef('0x0'));var rs=require(_0x07ef('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x07ef('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x07ef('0x3')]},'token':{'type':Sequelize[_0x07ef('0x3')],'defaultValue':function(){return rs[_0x07ef('0x4')]();}},'replyUri':{'type':Sequelize[_0x07ef('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x07ef('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x07ef('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x07ef('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x07ef('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x07ef('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x07ef('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x07ef('0x6')],'defaultValue':![],'comment':_0x07ef('0x9'),'set':function(_0x1519e){if(!_0x1519e)this['setDataValue'](_0x07ef('0xa'),null);this['setDataValue'](_0x07ef('0xb'),_0x1519e);}}};
\ No newline at end of file
index 6bbe0c6..7230ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3a=['userProfileId','autoAssociation','UserProfileResource','update','body','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','rawAttributes','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','Contacts','contact','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','lastName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','notify','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','json','getApplications','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','get','OpenchannelAccounts','end','stack','name','send','mandatoryDispositionPause','map','OpenchannelAccount','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','rows','show','params','Pause','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0x3d58cf,_0x2bf8ad){var _0x44956a=function(_0x26d2da){while(--_0x26d2da){_0x3d58cf['push'](_0x3d58cf['shift']());}};_0x44956a(++_0x2bf8ad);}(_0xeb3a,0x12f));var _0xaeb3=function(_0xbc9a0a,_0x1b222e){_0xbc9a0a=_0xbc9a0a-0x0;var _0x1122c9=_0xeb3a[_0xbc9a0a];return _0x1122c9;};'use strict';var emlformat=require(_0xaeb3('0x0'));var rimraf=require(_0xaeb3('0x1'));var zipdir=require(_0xaeb3('0x2'));var jsonpatch=require(_0xaeb3('0x3'));var rp=require(_0xaeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xaeb3('0x5'));var util=require(_0xaeb3('0x6'));var path=require(_0xaeb3('0x7'));var sox=require(_0xaeb3('0x8'));var csv=require(_0xaeb3('0x9'));var ejs=require(_0xaeb3('0xa'));var fs=require('fs');var fs_extra=require(_0xaeb3('0xb'));var _=require(_0xaeb3('0xc'));var squel=require('squel');var crypto=require(_0xaeb3('0xd'));var jsforce=require(_0xaeb3('0xe'));var deskjs=require(_0xaeb3('0xf'));var toCsv=require(_0xaeb3('0x9'));var querystring=require(_0xaeb3('0x10'));var Papa=require(_0xaeb3('0x11'));var Redis=require(_0xaeb3('0x12'));var authService=require(_0xaeb3('0x13'));var qs=require(_0xaeb3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaeb3('0x15'));var logger=require('../../config/logger')(_0xaeb3('0x16'));var utils=require(_0xaeb3('0x17'));var config=require(_0xaeb3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xaeb3('0x19'))['db'];config[_0xaeb3('0x1a')]=_[_0xaeb3('0x1b')](config[_0xaeb3('0x1a')],{'host':_0xaeb3('0x1c'),'port':0x18eb});var socket=require(_0xaeb3('0x1d'))(new Redis(config['redis']));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xaeb3('0x1e'));var client=jayson[_0xaeb3('0x1f')][_0xaeb3('0x20')]({'port':0x232c});var client9002=jayson[_0xaeb3('0x1f')][_0xaeb3('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1c7df6,_0x573c50,_0x2fa648,_0x2b6901){return new BPromise(function(_0x59e3ca,_0x59dac2){var _0x2151d2=_0x2b6901||client;return _0x2151d2[_0xaeb3('0x21')](_0x1c7df6,_0x2fa648)['then'](function(_0x4da5ad){logger['info'](_0xaeb3('0x22'),_0x573c50,_0xaeb3('0x23'));logger[_0xaeb3('0x24')](_0xaeb3('0x25'),_0x573c50,_0xaeb3('0x23'),JSON['stringify'](_0x4da5ad));if(_0x4da5ad[_0xaeb3('0x26')]){if(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x27')]===0x1f4){logger[_0xaeb3('0x26')](_0xaeb3('0x22'),_0x573c50,_0x4da5ad['error']['message']);return _0x59dac2(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);}logger[_0xaeb3('0x26')](_0xaeb3('0x22'),_0x573c50,_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);return _0x59e3ca(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);}else{logger[_0xaeb3('0x29')](_0xaeb3('0x22'),_0x573c50,_0xaeb3('0x23'));_0x59e3ca(_0x4da5ad['result'][_0xaeb3('0x28')]);}})[_0xaeb3('0x2a')](function(_0x8be2f6){logger[_0xaeb3('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x573c50,_0x8be2f6);_0x59dac2(_0x8be2f6);});});}function respondWithStatusCode(_0x23e4d7,_0x583838){_0x583838=_0x583838||0xcc;return function(_0x12cbd5){if(_0x12cbd5){return _0x23e4d7[_0xaeb3('0x2b')](_0x583838);}return _0x23e4d7[_0xaeb3('0x2c')](_0x583838)['end']();};}function respondWithResult(_0xb10cd4,_0x588592){_0x588592=_0x588592||0xc8;return function(_0x3d98cb){if(_0x3d98cb){return _0xb10cd4[_0xaeb3('0x2c')](_0x588592)['json'](_0x3d98cb);}};}function respondWithFilteredResult(_0x1ff26a,_0x23dd08){return function(_0x456d19){if(_0x456d19){var _0x54cacb=typeof _0x23dd08[_0xaeb3('0x2d')]===_0xaeb3('0x2e')&&typeof _0x23dd08['limit']===_0xaeb3('0x2e');var _0x4811e0=_0x456d19[_0xaeb3('0x2f')];var _0x52be91=_0x54cacb?0x0:_0x23dd08['offset'];var _0x51d081=_0x54cacb?_0x456d19[_0xaeb3('0x2f')]:_0x23dd08[_0xaeb3('0x2d')]+_0x23dd08[_0xaeb3('0x30')];var _0x500693;if(_0x51d081>=_0x4811e0){_0x51d081=_0x4811e0;_0x500693=0xc8;}else{_0x500693=0xce;}_0x1ff26a['status'](_0x500693);return _0x1ff26a[_0xaeb3('0x31')](_0xaeb3('0x32'),_0x52be91+'-'+_0x51d081+'/'+_0x4811e0)['json'](_0x456d19);}return null;};}function patchUpdates(_0x27f4be){return function(_0xd5287e){try{jsonpatch[_0xaeb3('0x33')](_0xd5287e,_0x27f4be,!![]);}catch(_0x3917e0){return BPromise[_0xaeb3('0x34')](_0x3917e0);}return _0xd5287e[_0xaeb3('0x35')]();};}function saveUpdates(_0x55b52b,_0x4a6049){return function(_0x382091){if(_0x382091){return _0x382091['update'](_0x55b52b)[_0xaeb3('0x36')](function(_0x2b77ec){return _0x2b77ec;});}return null;};}function removeEntity(_0x2f7a3d,_0x195e89){return function(_0x2b2f7c){if(_0x2b2f7c){return _0x2b2f7c[_0xaeb3('0x37')]()['then'](function(){var _0x164b62=_0x2b2f7c[_0xaeb3('0x38')]({'plain':!![]});var _0x3b5428=_0xaeb3('0x39');return db['UserProfileResource']['destroy']({'where':{'type':_0x3b5428,'resourceId':_0x164b62['id']}})['then'](function(){return _0x2b2f7c;});})[_0xaeb3('0x36')](function(){_0x2f7a3d['status'](0xcc)[_0xaeb3('0x3a')]();});}};}function handleEntityNotFound(_0x33c166,_0x4193cd){return function(_0x1db858){if(!_0x1db858){_0x33c166['sendStatus'](0x194);}return _0x1db858;};}function handleError(_0x21a169,_0x14a88e){_0x14a88e=_0x14a88e||0x1f4;return function(_0x2acb76){logger['error'](_0x2acb76[_0xaeb3('0x3b')]);if(_0x2acb76[_0xaeb3('0x3c')]){delete _0x2acb76[_0xaeb3('0x3c')];}_0x21a169[_0xaeb3('0x2c')](_0x14a88e)[_0xaeb3('0x3d')](_0x2acb76);};}exports['index']=function(_0x2a5e60,_0x5149bd){var _0x2fddd8={'include':[{'model':db['Pause'],'as':_0xaeb3('0x3e')}]},_0x5d2751={},_0x216a51={'count':0x0,'rows':[]};var _0x209c8f=_[_0xaeb3('0x3f')](db[_0xaeb3('0x40')]['rawAttributes'],function(_0x1c3fe6){return{'name':_0x1c3fe6['fieldName'],'type':_0x1c3fe6['type'][_0xaeb3('0x41')]};});_0x5d2751['model']=_[_0xaeb3('0x3f')](_0x209c8f,_0xaeb3('0x3c'));_0x5d2751[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x2a5e60[_0xaeb3('0x42')]);_0x5d2751[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x5d2751[_0xaeb3('0x46')],_0x5d2751[_0xaeb3('0x42')]);_0x2fddd8[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x5d2751[_0xaeb3('0x46')],qs['fields'](_0x2a5e60['query'][_0xaeb3('0x48')]));_0x2fddd8[_0xaeb3('0x47')]=_0x2fddd8[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x2fddd8['attributes']:_0x5d2751[_0xaeb3('0x46')];if(!_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x2fddd8[_0xaeb3('0x30')]=qs['limit'](_0x2a5e60['query']['limit']);_0x2fddd8['offset']=qs[_0xaeb3('0x2d')](_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x2fddd8[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x2fddd8['where']=qs['filters'](_[_0xaeb3('0x4e')](_0x2a5e60[_0xaeb3('0x42')],_0x5d2751[_0xaeb3('0x44')]),_0x209c8f);if(_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x2fddd8['where']=_['merge'](_0x2fddd8[_0xaeb3('0x50')],{'$or':_['map'](_0x209c8f,function(_0x50659c){if(_0x50659c[_0xaeb3('0x51')]!==_0xaeb3('0x52')){var _0x5770ad={};_0x5770ad[_0x50659c[_0xaeb3('0x3c')]]={'$like':'%'+_0x2a5e60['query']['filter']+'%'};return _0x5770ad;}})});}_0x2fddd8=_[_0xaeb3('0x53')]({},_0x2fddd8,_0x2a5e60[_0xaeb3('0x54')]);var _0x49d8e1={'where':_0x2fddd8[_0xaeb3('0x50')]};return db[_0xaeb3('0x40')][_0xaeb3('0x2f')](_0x49d8e1)['then'](function(_0x635df){_0x216a51[_0xaeb3('0x2f')]=_0x635df;if(_0x2a5e60['query'][_0xaeb3('0x55')]){_0x2fddd8[_0xaeb3('0x56')]=[{'all':!![]}];}return db[_0xaeb3('0x40')]['findAll'](_0x2fddd8);})[_0xaeb3('0x36')](function(_0x1f813e){_0x216a51[_0xaeb3('0x57')]=_0x1f813e;return _0x216a51;})['then'](respondWithFilteredResult(_0x5149bd,_0x2fddd8))['catch'](handleError(_0x5149bd,null));};exports[_0xaeb3('0x58')]=function(_0x43ea04,_0x3ce163){var _0x5d4ea6={'raw':![],'where':{'id':_0x43ea04[_0xaeb3('0x59')]['id']},'include':[{'model':db[_0xaeb3('0x5a')],'as':_0xaeb3('0x3e')}]},_0xf6a6b3={};_0xf6a6b3[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x40')]['rawAttributes']);_0xf6a6b3[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x43ea04['query']);_0xf6a6b3[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0xf6a6b3[_0xaeb3('0x46')],_0xf6a6b3[_0xaeb3('0x42')]);_0x5d4ea6[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0xf6a6b3[_0xaeb3('0x46')],qs['fields'](_0x43ea04[_0xaeb3('0x42')][_0xaeb3('0x48')]));_0x5d4ea6['attributes']=_0x5d4ea6['attributes']['length']?_0x5d4ea6[_0xaeb3('0x47')]:_0xf6a6b3['model'];if(_0x43ea04['query'][_0xaeb3('0x55')]){_0x5d4ea6['include']=[{'all':!![]}];}_0x5d4ea6=_['merge']({},_0x5d4ea6,_0x43ea04['options']);return db[_0xaeb3('0x40')]['find'](_0x5d4ea6)[_0xaeb3('0x36')](handleEntityNotFound(_0x3ce163,null))[_0xaeb3('0x36')](respondWithResult(_0x3ce163,null))[_0xaeb3('0x2a')](handleError(_0x3ce163,null));};exports[_0xaeb3('0x5b')]=function(_0x5c672b,_0x152512){return db['OpenchannelAccount']['create'](_0x5c672b['body'],{})[_0xaeb3('0x36')](function(_0x383e86){var _0x3a3c2c=_0x5c672b[_0xaeb3('0x5c')]['get']({'plain':!![]});if(!_0x3a3c2c)throw new Error(_0xaeb3('0x5d'));if(_0x3a3c2c[_0xaeb3('0x5e')]===_0xaeb3('0x5c')){var _0x4388e1=_0x383e86['get']({'plain':!![]});var _0x44d3e1='OpenchannelAccounts';return db['UserProfileSection']['find']({'where':{'name':_0x44d3e1,'userProfileId':_0x3a3c2c[_0xaeb3('0x5f')]},'raw':!![]})[_0xaeb3('0x36')](function(_0x1c93dd){if(_0x1c93dd&&_0x1c93dd[_0xaeb3('0x60')]===0x0){return db[_0xaeb3('0x61')]['create']({'name':_0x4388e1[_0xaeb3('0x3c')],'resourceId':_0x4388e1['id'],'type':_0x1c93dd[_0xaeb3('0x3c')],'sectionId':_0x1c93dd['id']},{})[_0xaeb3('0x36')](function(){return _0x383e86;});}else{return _0x383e86;}})[_0xaeb3('0x2a')](function(_0x386a1f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x386a1f);throw _0x386a1f;});}return _0x383e86;})['then'](respondWithResult(_0x152512,0xc9))[_0xaeb3('0x2a')](handleError(_0x152512,null));};exports[_0xaeb3('0x62')]=function(_0x3053bb,_0x40ce9a){if(_0x3053bb['body']['id']){delete _0x3053bb[_0xaeb3('0x63')]['id'];}return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x3053bb[_0xaeb3('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0xaeb3('0x3e')}]})['then'](handleEntityNotFound(_0x40ce9a,null))[_0xaeb3('0x36')](saveUpdates(_0x3053bb['body'],null))[_0xaeb3('0x36')](respondWithResult(_0x40ce9a,null))['catch'](handleError(_0x40ce9a,null));};exports[_0xaeb3('0x37')]=function(_0x37f937,_0xc3b294){return db[_0xaeb3('0x40')]['find']({'where':{'id':_0x37f937[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0xc3b294,null))['then'](removeEntity(_0xc3b294,null))['catch'](handleError(_0xc3b294,null));};exports[_0xaeb3('0x65')]=function(_0x345b8c,_0x1ed52b){return db[_0xaeb3('0x40')][_0xaeb3('0x65')]()[_0xaeb3('0x36')](respondWithResult(_0x1ed52b,null))[_0xaeb3('0x2a')](handleError(_0x1ed52b,null));};exports[_0xaeb3('0x66')]=function(_0x2fe620,_0x2750fc,_0x51162d){if(_0x2fe620['body']['id']){delete _0x2fe620[_0xaeb3('0x63')]['id'];}return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x2fe620[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x2750fc,null))[_0xaeb3('0x36')](function(_0x21002c){if(_0x21002c){_0x2fe620['body'][_0xaeb3('0x67')]=_0x21002c['id'];return db[_0xaeb3('0x68')][_0xaeb3('0x5b')](_0x2fe620[_0xaeb3('0x63')]);}})[_0xaeb3('0x36')](respondWithResult(_0x2750fc,null))[_0xaeb3('0x2a')](handleError(_0x2750fc,null));};exports[_0xaeb3('0x69')]=function(_0x5505f4,_0x2c682c,_0x214445){var _0x2dcaf4={'raw':![],'where':{}};var _0x5dcbc0={};var _0x118dbc={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x5505f4['params']['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x2c682c,null))[_0xaeb3('0x36')](function(_0x35e8ba){if(_0x35e8ba){_0x5dcbc0[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x68')][_0xaeb3('0x6b')]);_0x5dcbc0['query']=_[_0xaeb3('0x43')](_0x5505f4[_0xaeb3('0x42')]);_0x5dcbc0[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x5dcbc0[_0xaeb3('0x46')],_0x5dcbc0[_0xaeb3('0x42')]);_0x2dcaf4['attributes']=_[_0xaeb3('0x45')](_0x5dcbc0[_0xaeb3('0x46')],qs['fields'](_0x5505f4[_0xaeb3('0x42')]['fields']));_0x2dcaf4[_0xaeb3('0x47')]=_0x2dcaf4[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x2dcaf4[_0xaeb3('0x47')]:_0x5dcbc0[_0xaeb3('0x46')];if(!_0x5505f4['query'][_0xaeb3('0x4a')]('nolimit')){_0x2dcaf4[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x2dcaf4['offset']=qs['offset'](_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x2dcaf4[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x5505f4['query'][_0xaeb3('0x4d')]);_0x2dcaf4[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_[_0xaeb3('0x4e')](_0x5505f4[_0xaeb3('0x42')],_0x5dcbc0['filters']));_0x2dcaf4[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x35e8ba['id'];if(_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x2dcaf4[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x2dcaf4['where'],{'$or':_[_0xaeb3('0x3f')](_0x2dcaf4[_0xaeb3('0x47')],function(_0x3bc1a9){var _0x580945={};_0x580945[_0x3bc1a9]={'$like':'%'+_0x5505f4['query'][_0xaeb3('0x4f')]+'%'};return _0x580945;})});}_0x2dcaf4=_[_0xaeb3('0x53')]({},_0x2dcaf4,_0x5505f4['options']);return db['Disposition'][_0xaeb3('0x2f')]({'where':_0x2dcaf4['where']})[_0xaeb3('0x36')](function(_0x371b4b){_0x118dbc[_0xaeb3('0x2f')]=_0x371b4b;if(_0x5505f4['query']['includeAll']){_0x2dcaf4[_0xaeb3('0x56')]=[{'all':!![]}];}return db[_0xaeb3('0x68')][_0xaeb3('0x6c')](_0x2dcaf4);})[_0xaeb3('0x36')](function(_0x1ddf84){_0x118dbc[_0xaeb3('0x57')]=_0x1ddf84;return _0x118dbc;});}})['then'](respondWithFilteredResult(_0x2c682c,_0x2dcaf4))[_0xaeb3('0x2a')](handleError(_0x2c682c,null));};exports[_0xaeb3('0x6d')]=function(_0x2e2d66,_0x326793,_0x16a8d7){return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x2e2d66['params']['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x326793,null))[_0xaeb3('0x36')](function(_0x10021b){if(_0x10021b){return _0x10021b[_0xaeb3('0x6d')](_0x2e2d66[_0xaeb3('0x42')]['ids']);}})[_0xaeb3('0x36')](respondWithStatusCode(_0x326793,null))[_0xaeb3('0x2a')](handleError(_0x326793,null));};exports[_0xaeb3('0x6e')]=function(_0x3f1d04,_0xf971dc,_0x326bb8){if(_0x3f1d04[_0xaeb3('0x63')]['id']){delete _0x3f1d04[_0xaeb3('0x63')]['id'];}return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x3f1d04[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0xf971dc,null))['then'](function(_0x32f427){if(_0x32f427){_0x3f1d04['body']['OpenchannelAccountId']=_0x32f427['id'];return db[_0xaeb3('0x6f')]['create'](_0x3f1d04[_0xaeb3('0x63')]);}})[_0xaeb3('0x36')](respondWithResult(_0xf971dc,null))[_0xaeb3('0x2a')](handleError(_0xf971dc,null));};exports[_0xaeb3('0x70')]=function(_0x11cf62,_0x3b538f,_0x6bc08e){var _0x3dfdc1={'raw':![],'where':{}};var _0x7c1a97={};var _0xaf2358={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x11cf62[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x3b538f,null))[_0xaeb3('0x36')](function(_0x5e2944){if(_0x5e2944){_0x7c1a97[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x6f')][_0xaeb3('0x6b')]);_0x7c1a97[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x11cf62[_0xaeb3('0x42')]);_0x7c1a97['filters']=_[_0xaeb3('0x45')](_0x7c1a97[_0xaeb3('0x46')],_0x7c1a97[_0xaeb3('0x42')]);_0x3dfdc1['attributes']=_['intersection'](_0x7c1a97[_0xaeb3('0x46')],qs[_0xaeb3('0x48')](_0x11cf62[_0xaeb3('0x42')]['fields']));_0x3dfdc1[_0xaeb3('0x47')]=_0x3dfdc1['attributes'][_0xaeb3('0x49')]?_0x3dfdc1[_0xaeb3('0x47')]:_0x7c1a97[_0xaeb3('0x46')];if(!_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x4a')]('nolimit')){_0x3dfdc1[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x3dfdc1[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x3dfdc1[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x11cf62['query'][_0xaeb3('0x4d')]);_0x3dfdc1[_0xaeb3('0x50')]=qs['filters'](_[_0xaeb3('0x4e')](_0x11cf62[_0xaeb3('0x42')],_0x7c1a97[_0xaeb3('0x44')]));_0x3dfdc1[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x5e2944['id'];if(_0x11cf62[_0xaeb3('0x42')]['filter']){_0x3dfdc1['where']=_['merge'](_0x3dfdc1[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x3dfdc1[_0xaeb3('0x47')],function(_0x5d7739){var _0x2a223a={};_0x2a223a[_0x5d7739]={'$like':'%'+_0x11cf62[_0xaeb3('0x42')]['filter']+'%'};return _0x2a223a;})});}_0x3dfdc1=_['merge']({},_0x3dfdc1,_0x11cf62['options']);return db['CannedAnswer']['count']({'where':_0x3dfdc1[_0xaeb3('0x50')]})[_0xaeb3('0x36')](function(_0x204927){_0xaf2358['count']=_0x204927;if(_0x11cf62[_0xaeb3('0x42')]['includeAll']){_0x3dfdc1[_0xaeb3('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0xaeb3('0x6c')](_0x3dfdc1);})[_0xaeb3('0x36')](function(_0x4a03f0){_0xaf2358[_0xaeb3('0x57')]=_0x4a03f0;return _0xaf2358;});}})[_0xaeb3('0x36')](respondWithFilteredResult(_0x3b538f,_0x3dfdc1))[_0xaeb3('0x2a')](handleError(_0x3b538f,null));};exports[_0xaeb3('0x71')]=function(_0x1f8364,_0x1d0fd7,_0x335a37){return db['OpenchannelAccount']['find']({'where':{'id':_0x1f8364[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x1d0fd7,null))[_0xaeb3('0x36')](function(_0x56acd5){if(_0x56acd5){return _0x56acd5[_0xaeb3('0x71')](_0x1f8364[_0xaeb3('0x42')][_0xaeb3('0x72')]);}})[_0xaeb3('0x36')](respondWithStatusCode(_0x1d0fd7,null))[_0xaeb3('0x2a')](handleError(_0x1d0fd7,null));};exports['notify']=function(_0x1f13bc,_0x15a700,_0x8cfabe){var _0x3584f2={'body':_0x1f13bc['body'],'channel':_0xaeb3('0x73')};var _0x553591=[];var _0x3232e3=[];var _0x445bfb={};var _0x4fe4d8=![];return db[_0xaeb3('0x74')]['describe']()[_0xaeb3('0x36')](function(_0xaa5d72){if(!_0xaa5d72){throw new db[(_0xaeb3('0x75'))][(_0xaeb3('0x76'))](_0xaeb3('0x77'));}_0x553591=_[_0xaeb3('0x78')](_[_0xaeb3('0x43')](_0xaa5d72),[_0xaeb3('0x79'),_0xaeb3('0x7a')]);_0x3232e3=_['difference'](_[_0xaeb3('0x43')](_0xaa5d72),[_0xaeb3('0x79'),_0xaeb3('0x7a'),_0xaeb3('0x7b'),'ListId']);if(_0x1f13bc[_0xaeb3('0x63')]['id']){delete _0x1f13bc['body']['id'];}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x7d')])){throw new db[(_0xaeb3('0x75'))]['ValidationError'](_0xaeb3('0x7e'));}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')])||_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')]===''){throw new db['Sequelize'][(_0xaeb3('0x76'))](_0xaeb3('0x7f'));}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')])){throw new db[(_0xaeb3('0x75'))][(_0xaeb3('0x76'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3232e3);}if(!_['includes'](_0x3232e3,_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')])){throw new db['Sequelize']['ValidationError'](_0xaeb3('0x81')+_0x3232e3);}_0x445bfb[_0x1f13bc['body'][_0xaeb3('0x80')]]=_0x1f13bc[_0xaeb3('0x63')]['from'];})[_0xaeb3('0x36')](function(){return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x1f13bc[_0xaeb3('0x59')]['id']},'include':[{'model':db[_0xaeb3('0x82')],'as':_0xaeb3('0x83'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x445bfb,'limit':0x1,'order':[[_0xaeb3('0x7a'),'DESC']]}]},{'model':db[_0xaeb3('0x84')],'as':_0xaeb3('0x85')}]});})[_0xaeb3('0x36')](handleEntityNotFound(_0x15a700,null))[_0xaeb3('0x36')](function(_0x509800){if(_0x509800&&_0x509800[_0xaeb3('0x83')]){_0x3584f2[_0xaeb3('0x86')]=_0x509800;_0x3584f2[_0xaeb3('0x87')]=_0x509800[_0xaeb3('0x85')];_0x3584f2[_0xaeb3('0x88')]=_0x509800['List'];_0x3584f2[_0xaeb3('0x87')]=_[_0xaeb3('0x89')](_0x3584f2[_0xaeb3('0x87')],[_0xaeb3('0x8a')],[_0xaeb3('0x8b')]);if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x85')]){delete _0x3584f2[_0xaeb3('0x86')]['Applications'];}if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x83')]&&_0x3584f2['account'][_0xaeb3('0x83')]['Contacts'][_0xaeb3('0x49')]){return _0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x83')][_0xaeb3('0x8c')][0x0];}var _0x24d365=_[_0xaeb3('0x1b')](_0x1f13bc['body'],{'firstName':_0x1f13bc[_0xaeb3('0x63')]['from'],'ListId':_0x509800['ListId']});_0x24d365[_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')]]=_0x1f13bc['body'][_0xaeb3('0x7d')];return db['CmContact']['create'](_0x24d365,{'fields':_0x553591,'raw':!![]});}})[_0xaeb3('0x36')](handleEntityNotFound(_0x15a700,null))['then'](function(_0x55eeac){_0x3584f2[_0xaeb3('0x8d')]=_0x55eeac;if(_0x55eeac){var _0x2da11b={'ContactId':_0x55eeac['id'],'OpenchannelAccountId':_0x1f13bc[_0xaeb3('0x59')]['id'],'from':(_0x55eeac[_0xaeb3('0x8e')]||'')+'\x20'+(_0x55eeac['lastName']||'')};var _0x134174={'OpenchannelAccountId':_0x1f13bc[_0xaeb3('0x59')]['id'],'closed':![]};if(_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x8f')]){_0x134174[_0xaeb3('0x8f')]=_0x1f13bc['body']['threadId'];return db[_0xaeb3('0x90')]['find']({'where':_0x134174})['then'](function(_0x5bd513){if(_0x5bd513){return[_0x5bd513,![]];}_0x2da11b[_0xaeb3('0x8f')]=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x8f')];_0x2da11b[_0xaeb3('0x91')]=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x91')];return db[_0xaeb3('0x90')][_0xaeb3('0x5b')](_0x2da11b)[_0xaeb3('0x36')](function(_0x21c73a){return[_0x21c73a,!![]];});});}else{_0x134174[_0xaeb3('0x8f')]=null;}_0x134174[_0xaeb3('0x92')]=_0x55eeac['id'];return db[_0xaeb3('0x90')][_0xaeb3('0x64')]({'where':_0x134174})[_0xaeb3('0x36')](function(_0x106813){if(_0x106813){return[_0x106813,![]];}return db[_0xaeb3('0x90')][_0xaeb3('0x5b')](_0x2da11b)[_0xaeb3('0x36')](function(_0x1579e8){return[_0x1579e8,!![]];});});}})[_0xaeb3('0x93')](function(_0x2cb3ef,_0x503609){if(_0x2cb3ef){_0x4fe4d8=_0x503609;if(!_0x503609){var _0x17f387={'from':(_0x3584f2[_0xaeb3('0x8d')][_0xaeb3('0x8e')]||'')+'\x20'+(_0x3584f2[_0xaeb3('0x8d')][_0xaeb3('0x94')]||'')};if(_0x1f13bc[_0xaeb3('0x63')]['threadId']&&_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x95')]&&_0x1f13bc[_0xaeb3('0x63')]['threadId']!=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x95')]){_0x17f387[_0xaeb3('0x8f')]=_0x1f13bc[_0xaeb3('0x63')]['messageId'];}return _0x2cb3ef[_0xaeb3('0x62')](_0x17f387);}else{return _0x2cb3ef;}}})[_0xaeb3('0x36')](function(_0xa2146b){_0x3584f2[_0xaeb3('0x96')]=_0xa2146b[_0xaeb3('0x38')]({'plain':!![]});_0x3584f2['interaction'][_0xaeb3('0x97')]=_0x4fe4d8;if(_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x97')]){if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x98')]){_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0x99')]({'id':0x0,'priority':_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0x49')]+0x1,'app':_0xaeb3('0x9a'),'appdata':_0xaeb3('0x9b'),'interval':_0xaeb3('0x9c')});}}return db[_0xaeb3('0x9d')][_0xaeb3('0x5b')]({'body':_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x1f13bc['params']['id'],'OpenchannelInteractionId':_0xa2146b['id'],'direction':'in','ContactId':_0x3584f2[_0xaeb3('0x8d')]['id'],'AttachmentId':_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x9e')]});})[_0xaeb3('0x36')](function(_0x1d2b54){_0x3584f2['message']=_0x1d2b54;if(_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x9f')]){return db[_0xaeb3('0xa0')][_0xaeb3('0x64')]({'attributes':['id','name'],'where':{'id':_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x9f')]}})['then'](function(_0x464ea5){if(_0x464ea5){_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0xa1')]({'id':0x0,'priority':0x0,'app':_0xaeb3('0xa2'),'appdata':_0x464ea5['name']+','+(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0xa3')]||0xa),'interval':_0xaeb3('0x9c')});_0x3584f2[_0xaeb3('0xa4')]=![];}return respondWithRpcPromise('Start',_0xaeb3('0xa5'),_0x3584f2);});}return respondWithRpcPromise(_0xaeb3('0xa6'),'startRouting',_0x3584f2);})[_0xaeb3('0x36')](function(_0x30c818){respondWithRpcPromise('EventManager',_0xaeb3('0xa7'),{'event':_0xaeb3('0xa8'),'message':_0x30c818},client9002);return _0x30c818;})[_0xaeb3('0x36')](respondWithResult(_0x15a700,null))[_0xaeb3('0x2a')](handleError(_0x15a700,null));};exports[_0xaeb3('0xa9')]=function(_0x6189d6,_0x17a508){var _0x5de97b=_0x6189d6[_0xaeb3('0x59')]['id'];var _0x113c91=_0x6189d6[_0xaeb3('0x63')];var _0x2ae358=0xc8;var _0x199625=null;return db['sequelize'][_0xaeb3('0xaa')]({'isolationLevel':db[_0xaeb3('0xab')][_0xaeb3('0xac')][_0xaeb3('0xad')][_0xaeb3('0xae')]},function(_0x3ed05a){return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x5de97b},'transaction':_0x3ed05a})[_0xaeb3('0x36')](function(_0x174a79){if(_0x174a79){return db[_0xaeb3('0x84')][_0xaeb3('0x37')]({'where':{'OpenchannelAccountId':_0x5de97b},'transaction':_0x3ed05a})[_0xaeb3('0x36')](function(){var _0x16e052=_[_0xaeb3('0x3f')](_0x113c91,function(_0xe971fe){_0xe971fe[_0xaeb3('0x67')]=_0x5de97b;return _0xe971fe;});return db[_0xaeb3('0x84')]['bulkCreate'](_0x16e052,{'transaction':_0x3ed05a});});}else{_0x2ae358=0x194;_0x199625=[];}});})[_0xaeb3('0x36')](function(){if(_0x2ae358!==0x194){return db[_0xaeb3('0x84')][_0xaeb3('0xaf')]({'where':{'OpenchannelAccountId':_0x5de97b},'order':_0xaeb3('0x8a')})[_0xaeb3('0x36')](function(_0xed293){_0x199625=_0xed293;});}})[_0xaeb3('0x2a')](function(_0x36a8eb){_0x2ae358=0x1f4;logger['error'](_0x36a8eb[_0xaeb3('0x3b')]);if(_0x36a8eb['name']){delete _0x36a8eb['name'];}_0x199625=_0x36a8eb;})[_0xaeb3('0xb0')](function(){if(_0x199625===null){_0x17a508[_0xaeb3('0x2b')](_0x2ae358);}else{if(_0x2ae358===0x1f4){_0x17a508[_0xaeb3('0x2c')](_0x2ae358)['send'](_0x199625);}else{_0x17a508[_0xaeb3('0x2c')](_0x2ae358)[_0xaeb3('0xb1')](_0x199625);}}});};exports['getApplications']=function(_0xd981b7,_0x1c68b3,_0x39404f){var _0x5b285a={};var _0x23b74e={};var _0x1a438c;var _0x39e9b1;return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0xd981b7[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c68b3,null))[_0xaeb3('0x36')](function(_0x10cc20){if(_0x10cc20){_0x1a438c=_0x10cc20;_0x23b74e['model']=_[_0xaeb3('0x43')](db[_0xaeb3('0x84')][_0xaeb3('0x6b')]);_0x23b74e[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0xd981b7[_0xaeb3('0x42')]);_0x23b74e[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x23b74e['model'],_0x23b74e[_0xaeb3('0x42')]);_0x5b285a['attributes']=_[_0xaeb3('0x45')](_0x23b74e['model'],qs[_0xaeb3('0x48')](_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x48')]));_0x5b285a[_0xaeb3('0x47')]=_0x5b285a['attributes'][_0xaeb3('0x49')]?_0x5b285a[_0xaeb3('0x47')]:_0x23b74e[_0xaeb3('0x46')];_0x5b285a[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0xd981b7['query'][_0xaeb3('0x4d')]);_0x5b285a[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_[_0xaeb3('0x4e')](_0xd981b7[_0xaeb3('0x42')],_0x23b74e[_0xaeb3('0x44')]));if(_0xd981b7[_0xaeb3('0x42')]['filter']){_0x5b285a[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x5b285a[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x5b285a[_0xaeb3('0x47')],function(_0x41845d){var _0xdeee0c={};_0xdeee0c[_0x41845d]={'$like':'%'+_0xd981b7[_0xaeb3('0x42')]['filter']+'%'};return _0xdeee0c;})});}_0x5b285a=_[_0xaeb3('0x53')]({},_0x5b285a,_0xd981b7['options']);return _0x1a438c['getApplications'](_0x5b285a);}})['then'](function(_0x492e34){if(_0x492e34){_0x39e9b1=_0x492e34[_0xaeb3('0x49')];if(!_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x5b285a[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x5b285a[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0xd981b7[_0xaeb3('0x42')]['offset']);}return _0x1a438c[_0xaeb3('0xb2')](_0x5b285a);}})[_0xaeb3('0x36')](function(_0x28354f){if(_0x28354f){return _0x28354f?{'count':_0x39e9b1,'rows':_0x28354f}:null;}})[_0xaeb3('0x36')](respondWithResult(_0x1c68b3,null))[_0xaeb3('0x2a')](handleError(_0x1c68b3,null));};exports[_0xaeb3('0xb3')]=function(_0x63e14,_0x249747,_0x38ebe6){var _0x1cec50={'raw':![],'where':{}};var _0x44d340={};var _0x2ec317={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x63e14[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x249747,null))[_0xaeb3('0x36')](function(_0x4c8f32){if(_0x4c8f32){_0x44d340['model']=_[_0xaeb3('0x43')](db[_0xaeb3('0x90')]['rawAttributes']);_0x44d340['query']=_[_0xaeb3('0x43')](_0x63e14['query']);_0x44d340[_0xaeb3('0x44')]=_['intersection'](_0x44d340[_0xaeb3('0x46')],_0x44d340[_0xaeb3('0x42')]);_0x1cec50[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x44d340[_0xaeb3('0x46')],qs[_0xaeb3('0x48')](_0x63e14[_0xaeb3('0x42')]['fields']));_0x1cec50[_0xaeb3('0x47')]=_0x1cec50['attributes']['length']?_0x1cec50['attributes']:_0x44d340['model'];if(!_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x1cec50[_0xaeb3('0x30')]=qs['limit'](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x1cec50[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x1cec50[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x1cec50[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_['pick'](_0x63e14['query'],_0x44d340[_0xaeb3('0x44')]));_0x1cec50[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x4c8f32['id'];if(_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x1cec50[_0xaeb3('0x50')]=_['merge'](_0x1cec50[_0xaeb3('0x50')],{'$or':_['map'](_0x1cec50[_0xaeb3('0x47')],function(_0x1ad967){var _0x1ceae9={};_0x1ceae9[_0x1ad967]={'$like':'%'+_0x63e14[_0xaeb3('0x42')]['filter']+'%'};return _0x1ceae9;})});}_0x1cec50=_[_0xaeb3('0x53')]({},_0x1cec50,_0x63e14['options']);return db[_0xaeb3('0x90')][_0xaeb3('0x2f')]({'where':_0x1cec50[_0xaeb3('0x50')]})[_0xaeb3('0x36')](function(_0x1cfc21){_0x2ec317[_0xaeb3('0x2f')]=_0x1cfc21;if(_0x63e14['query'][_0xaeb3('0x55')]){_0x1cec50[_0xaeb3('0x56')]=[{'model':db[_0xaeb3('0x74')],'as':'Contact','required':![]},{'model':db[_0xaeb3('0xa0')],'as':_0xaeb3('0xb4'),'attributes':[_0xaeb3('0x3c'),_0xaeb3('0xb5'),_0xaeb3('0xb6')],'required':![]},{'model':db[_0xaeb3('0xb7')],'as':_0xaeb3('0xb8'),'attributes':['id',_0xaeb3('0x3c'),_0xaeb3('0xb9')],'where':_0x63e14[_0xaeb3('0x42')][_0xaeb3('0xba')]?{'id':_0x63e14[_0xaeb3('0x42')][_0xaeb3('0xba')]}:undefined,'required':_0x63e14['query'][_0xaeb3('0xba')]?!![]:![]}];}return db[_0xaeb3('0x90')][_0xaeb3('0x6c')](_0x1cec50);})['then'](function(_0x14d1f5){_0x2ec317[_0xaeb3('0x57')]=_0x14d1f5;return _0x2ec317;});}})[_0xaeb3('0x36')](respondWithFilteredResult(_0x249747,_0x1cec50))[_0xaeb3('0x2a')](handleError(_0x249747,null));};exports[_0xaeb3('0xbb')]=function(_0x72a4c9,_0x2ec864,_0xfacce9){return db[_0xaeb3('0x40')]['find']({'where':{'id':_0x72a4c9[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x2ec864,null))['then'](function(_0xc40e5b){if(_0xc40e5b){return _0xc40e5b[_0xaeb3('0xbb')](_0x72a4c9['body']['ids'],_[_0xaeb3('0xbc')](_0x72a4c9[_0xaeb3('0x63')],['ids','id'])||{})[_0xaeb3('0x93')](function(_0xb81ea3){for(var _0x1d0642=0x0;_0x1d0642<_0x72a4c9[_0xaeb3('0x63')]['ids'][_0xaeb3('0x49')];_0x1d0642+=0x1){socket[_0xaeb3('0xbd')](_0xaeb3('0xbe'),{'UserId':Number(_0x72a4c9[_0xaeb3('0x63')]['ids'][_0x1d0642]),'OpenchannelAccountId':Number(_0x72a4c9[_0xaeb3('0x59')]['id'])});}return _0xb81ea3;});}})['then'](respondWithResult(_0x2ec864,null))[_0xaeb3('0x2a')](handleError(_0x2ec864,null));};exports['removeAgents']=function(_0xaa7c32,_0x734083,_0x3e7826){return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0xaa7c32[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x734083,null))[_0xaeb3('0x36')](function(_0x5632e2){if(_0x5632e2){return _0x5632e2[_0xaeb3('0xbf')](_0xaa7c32['query']['ids'])['then'](function(){if(_[_0xaeb3('0xc0')](_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')])){for(var _0x461b32=0x0;_0x461b32<_0xaa7c32['query']['ids']['length'];_0x461b32+=0x1){socket[_0xaeb3('0xbd')](_0xaeb3('0xc1'),{'UserId':Number(_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')][_0x461b32]),'OpenchannelAccountId':Number(_0xaa7c32['params']['id'])});}}else{socket['emit'](_0xaeb3('0xc1'),{'UserId':Number(_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')]),'OpenchannelAccountId':Number(_0xaa7c32[_0xaeb3('0x59')]['id'])});}});}})[_0xaeb3('0x36')](respondWithStatusCode(_0x734083,null))[_0xaeb3('0x2a')](handleError(_0x734083,null));};exports[_0xaeb3('0xc2')]=function(_0x6e2c78,_0x357d6a,_0x5300a7){var _0x55307e={};var _0x310c74={};var _0x4b9f98;var _0x42d682;return db['OpenchannelAccount'][_0xaeb3('0x6a')]({'where':{'id':_0x6e2c78[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x357d6a,null))[_0xaeb3('0x36')](function(_0x230b87){if(_0x230b87){_0x4b9f98=_0x230b87;_0x310c74[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0xa0')][_0xaeb3('0x6b')]);_0x310c74[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x6e2c78['query']);_0x310c74[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x310c74[_0xaeb3('0x46')],_0x310c74[_0xaeb3('0x42')]);_0x55307e[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x310c74['model'],qs['fields'](_0x6e2c78['query'][_0xaeb3('0x48')]));_0x55307e[_0xaeb3('0x47')]=_0x55307e[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x55307e['attributes']:_0x310c74['model'];_0x55307e['order']=qs[_0xaeb3('0x4d')](_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x55307e[_0xaeb3('0x50')]=qs['filters'](_[_0xaeb3('0x4e')](_0x6e2c78[_0xaeb3('0x42')],_0x310c74[_0xaeb3('0x44')]));if(_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x55307e[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x55307e[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x55307e['attributes'],function(_0x3d161d){var _0x57162b={};_0x57162b[_0x3d161d]={'$like':'%'+_0x6e2c78['query'][_0xaeb3('0x4f')]+'%'};return _0x57162b;})});}_0x55307e=_[_0xaeb3('0x53')]({},_0x55307e,_0x6e2c78[_0xaeb3('0x54')]);return _0x4b9f98[_0xaeb3('0xc2')](_0x55307e);}})[_0xaeb3('0x36')](function(_0x295f0a){if(_0x295f0a){_0x42d682=_0x295f0a[_0xaeb3('0x49')];if(!_0x6e2c78['query'][_0xaeb3('0x4a')]('nolimit')){_0x55307e[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x6e2c78['query'][_0xaeb3('0x30')]);_0x55307e[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}return _0x4b9f98[_0xaeb3('0xc2')](_0x55307e);}})['then'](function(_0x55bb51){if(_0x55bb51){return _0x55bb51?{'count':_0x42d682,'rows':_0x55bb51}:null;}})[_0xaeb3('0x36')](respondWithResult(_0x357d6a,null))[_0xaeb3('0x2a')](handleError(_0x357d6a,null));};exports[_0xaeb3('0x3d')]=function(_0x1fae45,_0x235eb4,_0x203edb){var _0x56330e,_0x26954f,_0x2ff49c;if(_[_0xaeb3('0x7c')](_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')])||_0x1fae45[_0xaeb3('0x63')]['body']===''){throw new db[(_0xaeb3('0x75'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xaeb3('0x7c')](_0x1fae45[_0xaeb3('0x63')]['to'])){}_0x56330e=_0x1fae45['body']['to'];return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x1fae45[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x550a49){if(_0x550a49){return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x550a49['id']},'include':[{'model':db['CmList'],'as':_0xaeb3('0x83'),'include':[{'model':db[_0xaeb3('0x74')],'as':'Contacts','where':{[_0x550a49[_0xaeb3('0x80')]]:_0x56330e},'limit':0x1,'order':[['updatedAt',_0xaeb3('0xc3')]]}]}]})['then'](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x4d5175){if(_0x4d5175&&_0x4d5175[_0xaeb3('0x83')]){_0x26954f=_0x4d5175[_0xaeb3('0x38')]({'plain':!![]});if(_0x26954f[_0xaeb3('0x83')]&&_0x26954f[_0xaeb3('0x83')]['Contacts'][_0xaeb3('0x49')]){return _0x26954f[_0xaeb3('0x83')][_0xaeb3('0x8c')][0x0];}return db['CmContact'][_0xaeb3('0x5b')](_['defaults'](_0x1fae45['body'],{'firstName':_0x56330e,[_0x4d5175[_0xaeb3('0x80')]]:_0x56330e,'phone':_0x56330e,'ListId':_0x26954f['ListId']}));}})[_0xaeb3('0x36')](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x5a1896){if(_0x5a1896){_0x2ff49c=_0x5a1896;return db[_0xaeb3('0x90')]['find']({'where':{'ContactId':_0x2ff49c['id'],'closed':![],'OpenchannelAccountId':_0x26954f['id']}})['then'](function(_0x1a2863){if(_0x1a2863){return[_0x1a2863,![]];}return db[_0xaeb3('0x90')][_0xaeb3('0x5b')]({'UserId':_0x1fae45[_0xaeb3('0x5c')]['id'],'ContactId':_0x2ff49c['id'],'OpenchannelAccountId':_0x26954f['id'],'lastMsgDirection':'out','firstMsgDirection':_0xaeb3('0xc4'),'Messages':[_[_0xaeb3('0x53')](_0x1fae45[_0xaeb3('0x63')],{'read':![],'body':_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x26954f['id'],'UserId':_0x1fae45[_0xaeb3('0x5c')]['id'],'ContactId':_0x2ff49c['id']})]},{'include':[{'model':db[_0xaeb3('0x9d')],'as':_0xaeb3('0xc5')}]})[_0xaeb3('0x36')](function(_0x1eaf5f){return[_0x1eaf5f,!![]];});});}})[_0xaeb3('0x93')](function(_0xec3dc1,_0x22c8c9){if(_0x22c8c9){return _0xec3dc1;}return db[_0xaeb3('0x9d')]['create'](_['merge'](_0x1fae45[_0xaeb3('0x63')],{'read':![],'body':_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x26954f['id'],'OpenchannelInteractionId':_0xec3dc1['id'],'UserId':_0x1fae45['user']['id'],'ContactId':_0x2ff49c['id']}))[_0xaeb3('0x36')](function(_0x1e0b0f){_0xec3dc1['dataValues'][_0xaeb3('0xc5')]=[];_0xec3dc1[_0xaeb3('0xc6')][_0xaeb3('0xc5')][_0xaeb3('0x99')](_0x1e0b0f['dataValues']);return _0xec3dc1;});});}})['then'](respondWithResult(_0x235eb4,null))[_0xaeb3('0x2a')](handleError(_0x235eb4,null));};
\ No newline at end of file
+var _0x0fc2=['merge','VIRTUAL','options','includeAll','include','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','Disposition','getDispositions','hasOwnProperty','nolimit','OpenchannelAccountId','findAll','removeDispositions','CannedAnswer','removeAnswers','notify','openchannel','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','OpenchannelApplication','Applications','List','account','applications','list','orderBy','priority','asc','Contacts','contact','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','ids','omit','userOpenchannelAccount:save','removeAgents','emit','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','Messages','dataValues','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','undefined','limit','count','offset','set','apply','reject','save','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','order','sort','where','pick','filter'];(function(_0x2dd5d8,_0x2e01a6){var _0x1b3345=function(_0xae1370){while(--_0xae1370){_0x2dd5d8['push'](_0x2dd5d8['shift']());}};_0x1b3345(++_0x2e01a6);}(_0x0fc2,0x6e));var _0x20fc=function(_0x4b16e5,_0x57229d){_0x4b16e5=_0x4b16e5-0x0;var _0x171dbc=_0x0fc2[_0x4b16e5];return _0x171dbc;};'use strict';var emlformat=require(_0x20fc('0x0'));var rimraf=require(_0x20fc('0x1'));var zipdir=require(_0x20fc('0x2'));var jsonpatch=require(_0x20fc('0x3'));var rp=require('request-promise');var moment=require(_0x20fc('0x4'));var BPromise=require(_0x20fc('0x5'));var Mustache=require(_0x20fc('0x6'));var util=require(_0x20fc('0x7'));var path=require(_0x20fc('0x8'));var sox=require(_0x20fc('0x9'));var csv=require(_0x20fc('0xa'));var ejs=require(_0x20fc('0xb'));var fs=require('fs');var fs_extra=require(_0x20fc('0xc'));var _=require(_0x20fc('0xd'));var squel=require(_0x20fc('0xe'));var crypto=require(_0x20fc('0xf'));var jsforce=require(_0x20fc('0x10'));var deskjs=require(_0x20fc('0x11'));var toCsv=require(_0x20fc('0xa'));var querystring=require(_0x20fc('0x12'));var Papa=require('papaparse');var Redis=require(_0x20fc('0x13'));var authService=require(_0x20fc('0x14'));var qs=require(_0x20fc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x20fc('0x16'));var logger=require(_0x20fc('0x17'))(_0x20fc('0x18'));var utils=require(_0x20fc('0x19'));var config=require(_0x20fc('0x1a'));var licenseUtil=require(_0x20fc('0x1b'));var db=require(_0x20fc('0x1c'))['db'];config[_0x20fc('0x1d')]=_['defaults'](config[_0x20fc('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0x20fc('0x1e'))(new Redis(config['redis']));require(_0x20fc('0x1f'))['register'](socket);var jayson=require(_0x20fc('0x20'));var client=jayson[_0x20fc('0x21')][_0x20fc('0x22')]({'port':0x232c});var client9002=jayson[_0x20fc('0x21')][_0x20fc('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x511e79,_0x29fe77,_0x368662,_0x480878){return new BPromise(function(_0x56eaf4,_0x4569c2){var _0x3dbdc0=_0x480878||client;return _0x3dbdc0[_0x20fc('0x23')](_0x511e79,_0x368662)[_0x20fc('0x24')](function(_0x4d5e00){logger[_0x20fc('0x25')](_0x20fc('0x26'),_0x29fe77,_0x20fc('0x27'));logger[_0x20fc('0x28')](_0x20fc('0x29'),_0x29fe77,_0x20fc('0x27'),JSON[_0x20fc('0x2a')](_0x4d5e00));if(_0x4d5e00[_0x20fc('0x2b')]){if(_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2c')]===0x1f4){logger['error'](_0x20fc('0x26'),_0x29fe77,_0x4d5e00[_0x20fc('0x2b')]['message']);return _0x4569c2(_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2d')]);}logger[_0x20fc('0x2b')](_0x20fc('0x26'),_0x29fe77,_0x4d5e00[_0x20fc('0x2b')][_0x20fc('0x2d')]);return _0x56eaf4(_0x4d5e00[_0x20fc('0x2b')]['message']);}else{logger[_0x20fc('0x25')](_0x20fc('0x26'),_0x29fe77,'request\x20sent');_0x56eaf4(_0x4d5e00[_0x20fc('0x2e')][_0x20fc('0x2d')]);}})[_0x20fc('0x2f')](function(_0x2ed63f){logger['error'](_0x20fc('0x26'),_0x29fe77,_0x2ed63f);_0x4569c2(_0x2ed63f);});});}function respondWithStatusCode(_0x5dbded,_0x4f9b49){_0x4f9b49=_0x4f9b49||0xcc;return function(_0x1b80f){if(_0x1b80f){return _0x5dbded['sendStatus'](_0x4f9b49);}return _0x5dbded[_0x20fc('0x30')](_0x4f9b49)[_0x20fc('0x31')]();};}function respondWithResult(_0x43e310,_0x5eae37){_0x5eae37=_0x5eae37||0xc8;return function(_0x4fd3ba){if(_0x4fd3ba){return _0x43e310['status'](_0x5eae37)[_0x20fc('0x32')](_0x4fd3ba);}};}function respondWithFilteredResult(_0x295f9a,_0x171d14){return function(_0x2c6408){if(_0x2c6408){var _0x5d705f=typeof _0x171d14['offset']===_0x20fc('0x33')&&typeof _0x171d14[_0x20fc('0x34')]==='undefined';var _0x5923b1=_0x2c6408[_0x20fc('0x35')];var _0x539268=_0x5d705f?0x0:_0x171d14[_0x20fc('0x36')];var _0x40fe37=_0x5d705f?_0x2c6408[_0x20fc('0x35')]:_0x171d14[_0x20fc('0x36')]+_0x171d14[_0x20fc('0x34')];var _0x2ddb7d;if(_0x40fe37>=_0x5923b1){_0x40fe37=_0x5923b1;_0x2ddb7d=0xc8;}else{_0x2ddb7d=0xce;}_0x295f9a['status'](_0x2ddb7d);return _0x295f9a[_0x20fc('0x37')]('Content-Range',_0x539268+'-'+_0x40fe37+'/'+_0x5923b1)['json'](_0x2c6408);}return null;};}function patchUpdates(_0x10f891){return function(_0x4bbe53){try{jsonpatch[_0x20fc('0x38')](_0x4bbe53,_0x10f891,!![]);}catch(_0x2e2bbd){return BPromise[_0x20fc('0x39')](_0x2e2bbd);}return _0x4bbe53[_0x20fc('0x3a')]();};}function saveUpdates(_0x299aa2,_0x578f98){return function(_0x6c398e){if(_0x6c398e){return _0x6c398e['update'](_0x299aa2)[_0x20fc('0x24')](function(_0x179f08){return _0x179f08;});}return null;};}function removeEntity(_0x47c03e,_0x2faaab){return function(_0x4d532f){if(_0x4d532f){return _0x4d532f[_0x20fc('0x3b')]()['then'](function(){var _0x4b2f3a=_0x4d532f[_0x20fc('0x3c')]({'plain':!![]});var _0xd5e0d3=_0x20fc('0x3d');return db[_0x20fc('0x3e')][_0x20fc('0x3b')]({'where':{'type':_0xd5e0d3,'resourceId':_0x4b2f3a['id']}})[_0x20fc('0x24')](function(){return _0x4d532f;});})['then'](function(){_0x47c03e[_0x20fc('0x30')](0xcc)[_0x20fc('0x31')]();});}};}function handleEntityNotFound(_0x20400d,_0x1ca486){return function(_0x1ceee3){if(!_0x1ceee3){_0x20400d[_0x20fc('0x3f')](0x194);}return _0x1ceee3;};}function handleError(_0x24ea0e,_0x269f37){_0x269f37=_0x269f37||0x1f4;return function(_0x4992a5){logger[_0x20fc('0x2b')](_0x4992a5[_0x20fc('0x40')]);if(_0x4992a5[_0x20fc('0x41')]){delete _0x4992a5[_0x20fc('0x41')];}_0x24ea0e[_0x20fc('0x30')](_0x269f37)[_0x20fc('0x42')](_0x4992a5);};}exports['index']=function(_0x5024f7,_0x4ee5a8){var _0x3def34={'include':[{'model':db[_0x20fc('0x43')],'as':_0x20fc('0x44')}]},_0x4f7690={},_0x297ab3={'count':0x0,'rows':[]};var _0x49ed2c=_[_0x20fc('0x45')](db[_0x20fc('0x46')][_0x20fc('0x47')],function(_0xecf581){return{'name':_0xecf581[_0x20fc('0x48')],'type':_0xecf581[_0x20fc('0x49')][_0x20fc('0x4a')]};});_0x4f7690[_0x20fc('0x4b')]=_[_0x20fc('0x45')](_0x49ed2c,_0x20fc('0x41'));_0x4f7690[_0x20fc('0x4c')]=_[_0x20fc('0x4d')](_0x5024f7['query']);_0x4f7690[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x4f7690[_0x20fc('0x4b')],_0x4f7690[_0x20fc('0x4c')]);_0x3def34['attributes']=_['intersection'](_0x4f7690[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x3def34['attributes']=_0x3def34['attributes'][_0x20fc('0x51')]?_0x3def34[_0x20fc('0x52')]:_0x4f7690[_0x20fc('0x4b')];if(!_0x5024f7[_0x20fc('0x4c')]['hasOwnProperty']('nolimit')){_0x3def34[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x3def34[_0x20fc('0x36')]=qs['offset'](_0x5024f7[_0x20fc('0x4c')]['offset']);}_0x3def34[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x3def34[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x5024f7[_0x20fc('0x4c')],_0x4f7690[_0x20fc('0x4e')]),_0x49ed2c);if(_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x3def34[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x3def34[_0x20fc('0x55')],{'$or':_[_0x20fc('0x45')](_0x49ed2c,function(_0x25d728){if(_0x25d728['type']!==_0x20fc('0x59')){var _0x46eb17={};_0x46eb17[_0x25d728[_0x20fc('0x41')]]={'$like':'%'+_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x46eb17;}})});}_0x3def34=_[_0x20fc('0x58')]({},_0x3def34,_0x5024f7[_0x20fc('0x5a')]);var _0x2a2897={'where':_0x3def34[_0x20fc('0x55')]};return db[_0x20fc('0x46')][_0x20fc('0x35')](_0x2a2897)['then'](function(_0x41482f){_0x297ab3[_0x20fc('0x35')]=_0x41482f;if(_0x5024f7[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x3def34[_0x20fc('0x5c')]=[{'all':!![]}];}return db[_0x20fc('0x46')]['findAll'](_0x3def34);})[_0x20fc('0x24')](function(_0x236628){_0x297ab3[_0x20fc('0x5d')]=_0x236628;return _0x297ab3;})[_0x20fc('0x24')](respondWithFilteredResult(_0x4ee5a8,_0x3def34))[_0x20fc('0x2f')](handleError(_0x4ee5a8,null));};exports[_0x20fc('0x5e')]=function(_0x2aaf4a,_0x1c2977){var _0x47cacc={'raw':![],'where':{'id':_0x2aaf4a[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x43')],'as':_0x20fc('0x44')}]},_0x4bf571={};_0x4bf571[_0x20fc('0x4b')]=_['keys'](db['OpenchannelAccount']['rawAttributes']);_0x4bf571[_0x20fc('0x4c')]=_[_0x20fc('0x4d')](_0x2aaf4a[_0x20fc('0x4c')]);_0x4bf571['filters']=_[_0x20fc('0x4f')](_0x4bf571[_0x20fc('0x4b')],_0x4bf571[_0x20fc('0x4c')]);_0x47cacc[_0x20fc('0x52')]=_['intersection'](_0x4bf571[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x2aaf4a[_0x20fc('0x4c')]['fields']));_0x47cacc[_0x20fc('0x52')]=_0x47cacc[_0x20fc('0x52')][_0x20fc('0x51')]?_0x47cacc[_0x20fc('0x52')]:_0x4bf571[_0x20fc('0x4b')];if(_0x2aaf4a[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x47cacc[_0x20fc('0x5c')]=[{'all':!![]}];}_0x47cacc=_[_0x20fc('0x58')]({},_0x47cacc,_0x2aaf4a[_0x20fc('0x5a')]);return db[_0x20fc('0x46')]['find'](_0x47cacc)[_0x20fc('0x24')](handleEntityNotFound(_0x1c2977,null))[_0x20fc('0x24')](respondWithResult(_0x1c2977,null))[_0x20fc('0x2f')](handleError(_0x1c2977,null));};exports[_0x20fc('0x60')]=function(_0x5b6d42,_0x3bb80c){return db[_0x20fc('0x46')][_0x20fc('0x60')](_0x5b6d42[_0x20fc('0x61')],{})['then'](function(_0x4ace65){var _0x365b93=_0x5b6d42[_0x20fc('0x62')][_0x20fc('0x3c')]({'plain':!![]});if(!_0x365b93)throw new Error(_0x20fc('0x63'));if(_0x365b93[_0x20fc('0x64')]==='user'){var _0x49d595=_0x4ace65[_0x20fc('0x3c')]({'plain':!![]});var _0x150793=_0x20fc('0x3d');return db[_0x20fc('0x65')]['find']({'where':{'name':_0x150793,'userProfileId':_0x365b93[_0x20fc('0x66')]},'raw':!![]})['then'](function(_0x11f99c){if(_0x11f99c&&_0x11f99c[_0x20fc('0x67')]===0x0){return db[_0x20fc('0x3e')][_0x20fc('0x60')]({'name':_0x49d595[_0x20fc('0x41')],'resourceId':_0x49d595['id'],'type':_0x11f99c[_0x20fc('0x41')],'sectionId':_0x11f99c['id']},{})[_0x20fc('0x24')](function(){return _0x4ace65;});}else{return _0x4ace65;}})['catch'](function(_0x4e4de3){logger['error'](_0x20fc('0x68'),_0x4e4de3);throw _0x4e4de3;});}return _0x4ace65;})['then'](respondWithResult(_0x3bb80c,0xc9))[_0x20fc('0x2f')](handleError(_0x3bb80c,null));};exports['update']=function(_0x3608fd,_0x21121e){if(_0x3608fd['body']['id']){delete _0x3608fd[_0x20fc('0x61')]['id'];}return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x3608fd[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x43')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x21121e,null))[_0x20fc('0x24')](saveUpdates(_0x3608fd[_0x20fc('0x61')],null))[_0x20fc('0x24')](respondWithResult(_0x21121e,null))[_0x20fc('0x2f')](handleError(_0x21121e,null));};exports[_0x20fc('0x3b')]=function(_0x39e2bc,_0x3ae9b3){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x39e2bc['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x3ae9b3,null))[_0x20fc('0x24')](removeEntity(_0x3ae9b3,null))[_0x20fc('0x2f')](handleError(_0x3ae9b3,null));};exports[_0x20fc('0x6a')]=function(_0x20103b,_0x734ad7){return db[_0x20fc('0x46')][_0x20fc('0x6a')]()['then'](respondWithResult(_0x734ad7,null))[_0x20fc('0x2f')](handleError(_0x734ad7,null));};exports[_0x20fc('0x6b')]=function(_0x7f88a5,_0x344c9f,_0x1ac554){if(_0x7f88a5[_0x20fc('0x61')]['id']){delete _0x7f88a5[_0x20fc('0x61')]['id'];}return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x7f88a5[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x344c9f,null))['then'](function(_0x550dba){if(_0x550dba){_0x7f88a5['body']['OpenchannelAccountId']=_0x550dba['id'];return db[_0x20fc('0x6c')][_0x20fc('0x60')](_0x7f88a5[_0x20fc('0x61')]);}})['then'](respondWithResult(_0x344c9f,null))['catch'](handleError(_0x344c9f,null));};exports[_0x20fc('0x6d')]=function(_0x20ab52,_0x5552d0,_0x5eaeaf){var _0x2f07f5={'raw':![],'where':{}};var _0x441aaa={};var _0xd8c1de={'count':0x0,'rows':[]};return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x20ab52['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x5552d0,null))[_0x20fc('0x24')](function(_0x237ab2){if(_0x237ab2){_0x441aaa[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x6c')][_0x20fc('0x47')]);_0x441aaa[_0x20fc('0x4c')]=_['keys'](_0x20ab52['query']);_0x441aaa[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x441aaa[_0x20fc('0x4b')],_0x441aaa[_0x20fc('0x4c')]);_0x2f07f5[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x441aaa[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x2f07f5[_0x20fc('0x52')]=_0x2f07f5[_0x20fc('0x52')][_0x20fc('0x51')]?_0x2f07f5['attributes']:_0x441aaa[_0x20fc('0x4b')];if(!_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x2f07f5[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x2f07f5['offset']=qs['offset'](_0x20ab52[_0x20fc('0x4c')]['offset']);}_0x2f07f5[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x20ab52['query'][_0x20fc('0x54')]);_0x2f07f5[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x20ab52[_0x20fc('0x4c')],_0x441aaa[_0x20fc('0x4e')]));_0x2f07f5[_0x20fc('0x55')][_0x20fc('0x70')]=_0x237ab2['id'];if(_0x20ab52[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x2f07f5[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x2f07f5['where'],{'$or':_[_0x20fc('0x45')](_0x2f07f5[_0x20fc('0x52')],function(_0xf07096){var _0x5407e5={};_0x5407e5[_0xf07096]={'$like':'%'+_0x20ab52['query'][_0x20fc('0x57')]+'%'};return _0x5407e5;})});}_0x2f07f5=_[_0x20fc('0x58')]({},_0x2f07f5,_0x20ab52[_0x20fc('0x5a')]);return db[_0x20fc('0x6c')][_0x20fc('0x35')]({'where':_0x2f07f5[_0x20fc('0x55')]})[_0x20fc('0x24')](function(_0x2c3359){_0xd8c1de[_0x20fc('0x35')]=_0x2c3359;if(_0x20ab52[_0x20fc('0x4c')]['includeAll']){_0x2f07f5[_0x20fc('0x5c')]=[{'all':!![]}];}return db[_0x20fc('0x6c')][_0x20fc('0x71')](_0x2f07f5);})['then'](function(_0x42243a){_0xd8c1de[_0x20fc('0x5d')]=_0x42243a;return _0xd8c1de;});}})[_0x20fc('0x24')](respondWithFilteredResult(_0x5552d0,_0x2f07f5))[_0x20fc('0x2f')](handleError(_0x5552d0,null));};exports[_0x20fc('0x72')]=function(_0x4eb012,_0xc7dae8,_0xca8ef2){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x4eb012[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0xc7dae8,null))[_0x20fc('0x24')](function(_0x44bbc3){if(_0x44bbc3){return _0x44bbc3['removeDispositions'](_0x4eb012[_0x20fc('0x4c')]['ids']);}})[_0x20fc('0x24')](respondWithStatusCode(_0xc7dae8,null))[_0x20fc('0x2f')](handleError(_0xc7dae8,null));};exports['addAnswer']=function(_0x55df37,_0x5a9956,_0x355765){if(_0x55df37[_0x20fc('0x61')]['id']){delete _0x55df37[_0x20fc('0x61')]['id'];}return db['OpenchannelAccount'][_0x20fc('0x69')]({'where':{'id':_0x55df37[_0x20fc('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5a9956,null))[_0x20fc('0x24')](function(_0x59601f){if(_0x59601f){_0x55df37['body']['OpenchannelAccountId']=_0x59601f['id'];return db['CannedAnswer'][_0x20fc('0x60')](_0x55df37['body']);}})['then'](respondWithResult(_0x5a9956,null))[_0x20fc('0x2f')](handleError(_0x5a9956,null));};exports['getAnswers']=function(_0x5de345,_0x2045c1,_0x557d41){var _0x32c849={'raw':![],'where':{}};var _0x252518={};var _0x205f84={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x5de345[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x2045c1,null))[_0x20fc('0x24')](function(_0x309f3d){if(_0x309f3d){_0x252518[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x73')]['rawAttributes']);_0x252518[_0x20fc('0x4c')]=_['keys'](_0x5de345[_0x20fc('0x4c')]);_0x252518[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x252518[_0x20fc('0x4b')],_0x252518['query']);_0x32c849[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x252518[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x5de345['query'][_0x20fc('0x50')]));_0x32c849[_0x20fc('0x52')]=_0x32c849[_0x20fc('0x52')][_0x20fc('0x51')]?_0x32c849[_0x20fc('0x52')]:_0x252518[_0x20fc('0x4b')];if(!_0x5de345[_0x20fc('0x4c')]['hasOwnProperty'](_0x20fc('0x6f'))){_0x32c849[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x5de345['query'][_0x20fc('0x34')]);_0x32c849[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x5de345[_0x20fc('0x4c')][_0x20fc('0x36')]);}_0x32c849[_0x20fc('0x53')]=qs[_0x20fc('0x54')](_0x5de345['query'][_0x20fc('0x54')]);_0x32c849[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_['pick'](_0x5de345['query'],_0x252518['filters']));_0x32c849[_0x20fc('0x55')]['OpenchannelAccountId']=_0x309f3d['id'];if(_0x5de345[_0x20fc('0x4c')]['filter']){_0x32c849[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x32c849['where'],{'$or':_['map'](_0x32c849['attributes'],function(_0x12688a){var _0x1aa667={};_0x1aa667[_0x12688a]={'$like':'%'+_0x5de345['query'][_0x20fc('0x57')]+'%'};return _0x1aa667;})});}_0x32c849=_[_0x20fc('0x58')]({},_0x32c849,_0x5de345[_0x20fc('0x5a')]);return db[_0x20fc('0x73')][_0x20fc('0x35')]({'where':_0x32c849[_0x20fc('0x55')]})['then'](function(_0x117ef5){_0x205f84['count']=_0x117ef5;if(_0x5de345[_0x20fc('0x4c')][_0x20fc('0x5b')]){_0x32c849['include']=[{'all':!![]}];}return db[_0x20fc('0x73')][_0x20fc('0x71')](_0x32c849);})['then'](function(_0x6cb070){_0x205f84[_0x20fc('0x5d')]=_0x6cb070;return _0x205f84;});}})['then'](respondWithFilteredResult(_0x2045c1,_0x32c849))['catch'](handleError(_0x2045c1,null));};exports[_0x20fc('0x74')]=function(_0x5da4e4,_0x4eac38,_0xb40ec6){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x5da4e4['params']['id']}})['then'](handleEntityNotFound(_0x4eac38,null))[_0x20fc('0x24')](function(_0xcc3a33){if(_0xcc3a33){return _0xcc3a33[_0x20fc('0x74')](_0x5da4e4[_0x20fc('0x4c')]['ids']);}})[_0x20fc('0x24')](respondWithStatusCode(_0x4eac38,null))[_0x20fc('0x2f')](handleError(_0x4eac38,null));};exports[_0x20fc('0x75')]=function(_0x3437d0,_0xdda714,_0x3c20e4){var _0x557373={'body':_0x3437d0['body'],'channel':_0x20fc('0x76')};var _0x5e15f1=[];var _0x4154f8=[];var _0x99f69c={};var _0x56fb8d=![];return db[_0x20fc('0x77')][_0x20fc('0x6a')]()['then'](function(_0x55209d){if(!_0x55209d){throw new db['Sequelize']['ValidationError'](_0x20fc('0x78'));}_0x5e15f1=_[_0x20fc('0x79')](_[_0x20fc('0x4d')](_0x55209d),[_0x20fc('0x7a'),_0x20fc('0x7b')]);_0x4154f8=_[_0x20fc('0x79')](_[_0x20fc('0x4d')](_0x55209d),['createdAt',_0x20fc('0x7b'),_0x20fc('0x7c'),_0x20fc('0x7d')]);if(_0x3437d0[_0x20fc('0x61')]['id']){delete _0x3437d0[_0x20fc('0x61')]['id'];}if(_[_0x20fc('0x7e')](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x7f')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x82'));}if(_[_0x20fc('0x7e')](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x61')])||_0x3437d0['body']['body']===''){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x84')+_0x4154f8);}if(!_[_0x20fc('0x85')](_0x4154f8,_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')])){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))](_0x20fc('0x86')+_0x4154f8);}_0x99f69c[_0x3437d0[_0x20fc('0x61')][_0x20fc('0x83')]]=_0x3437d0[_0x20fc('0x61')][_0x20fc('0x7f')];})[_0x20fc('0x24')](function(){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x3437d0[_0x20fc('0x5f')]['id']},'include':[{'model':db[_0x20fc('0x87')],'as':'List','include':[{'model':db[_0x20fc('0x77')],'as':'Contacts','where':_0x99f69c,'limit':0x1,'order':[[_0x20fc('0x7b'),_0x20fc('0x88')]]}]},{'model':db[_0x20fc('0x89')],'as':_0x20fc('0x8a')}]});})['then'](handleEntityNotFound(_0xdda714,null))[_0x20fc('0x24')](function(_0x9a225e){if(_0x9a225e&&_0x9a225e[_0x20fc('0x8b')]){_0x557373[_0x20fc('0x8c')]=_0x9a225e;_0x557373[_0x20fc('0x8d')]=_0x9a225e[_0x20fc('0x8a')];_0x557373[_0x20fc('0x8e')]=_0x9a225e[_0x20fc('0x8b')];_0x557373[_0x20fc('0x8d')]=_[_0x20fc('0x8f')](_0x557373[_0x20fc('0x8d')],[_0x20fc('0x90')],[_0x20fc('0x91')]);if(_0x557373[_0x20fc('0x8c')][_0x20fc('0x8a')]){delete _0x557373[_0x20fc('0x8c')][_0x20fc('0x8a')];}if(_0x557373[_0x20fc('0x8c')][_0x20fc('0x8b')]&&_0x557373[_0x20fc('0x8c')][_0x20fc('0x8b')][_0x20fc('0x92')][_0x20fc('0x51')]){return _0x557373['account'][_0x20fc('0x8b')][_0x20fc('0x92')][0x0];}var _0xe07c9d=_['defaults'](_0x3437d0[_0x20fc('0x61')],{'firstName':_0x3437d0[_0x20fc('0x61')]['from'],'ListId':_0x9a225e['ListId']});_0xe07c9d[_0x3437d0[_0x20fc('0x61')]['mapKey']]=_0x3437d0['body']['from'];return db[_0x20fc('0x77')][_0x20fc('0x60')](_0xe07c9d,{'fields':_0x5e15f1,'raw':!![]});}})['then'](handleEntityNotFound(_0xdda714,null))[_0x20fc('0x24')](function(_0x5a45d1){_0x557373[_0x20fc('0x93')]=_0x5a45d1;if(_0x5a45d1){var _0x249e38={'ContactId':_0x5a45d1['id'],'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'from':(_0x5a45d1['firstName']||'')+'\x20'+(_0x5a45d1['lastName']||'')};var _0x2e7206={'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'closed':![]};if(_0x3437d0['body'][_0x20fc('0x94')]){_0x2e7206[_0x20fc('0x94')]=_0x3437d0[_0x20fc('0x61')][_0x20fc('0x94')];return db[_0x20fc('0x95')]['find']({'where':_0x2e7206})[_0x20fc('0x24')](function(_0xbc7148){if(_0xbc7148){return[_0xbc7148,![]];}_0x249e38[_0x20fc('0x94')]=_0x3437d0[_0x20fc('0x61')]['threadId'];_0x249e38[_0x20fc('0x96')]=_0x3437d0[_0x20fc('0x61')]['externalUrl'];return db[_0x20fc('0x95')][_0x20fc('0x60')](_0x249e38)[_0x20fc('0x24')](function(_0x18c283){return[_0x18c283,!![]];});});}else{_0x2e7206[_0x20fc('0x94')]=null;}_0x2e7206[_0x20fc('0x97')]=_0x5a45d1['id'];return db[_0x20fc('0x95')][_0x20fc('0x69')]({'where':_0x2e7206})[_0x20fc('0x24')](function(_0xa43d1e){if(_0xa43d1e){return[_0xa43d1e,![]];}return db['OpenchannelInteraction'][_0x20fc('0x60')](_0x249e38)[_0x20fc('0x24')](function(_0x333cc6){return[_0x333cc6,!![]];});});}})[_0x20fc('0x98')](function(_0xc1a6f9,_0x25ed55){if(_0xc1a6f9){_0x56fb8d=_0x25ed55;if(!_0x25ed55){var _0x332fbd={'from':(_0x557373[_0x20fc('0x93')][_0x20fc('0x99')]||'')+'\x20'+(_0x557373['contact']['lastName']||'')};if(_0x3437d0['body'][_0x20fc('0x94')]&&_0x3437d0['body']['messageId']&&_0x3437d0['body']['threadId']!=_0x3437d0[_0x20fc('0x61')]['messageId']){_0x332fbd[_0x20fc('0x94')]=_0x3437d0['body'][_0x20fc('0x9a')];}return _0xc1a6f9['update'](_0x332fbd);}else{return _0xc1a6f9;}}})[_0x20fc('0x24')](function(_0x50dd02){_0x557373['interaction']=_0x50dd02[_0x20fc('0x3c')]({'plain':!![]});_0x557373[_0x20fc('0x9b')][_0x20fc('0x9c')]=_0x56fb8d;if(_0x557373[_0x20fc('0x9b')][_0x20fc('0x9c')]){if(_0x557373['account'][_0x20fc('0x9d')]){_0x557373[_0x20fc('0x8d')][_0x20fc('0x9e')]({'id':0x0,'priority':_0x557373[_0x20fc('0x8d')][_0x20fc('0x51')]+0x1,'app':_0x20fc('0x9f'),'appdata':_0x20fc('0xa0'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0x20fc('0x60')]({'body':_0x3437d0[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x3437d0[_0x20fc('0x5f')]['id'],'OpenchannelInteractionId':_0x50dd02['id'],'direction':'in','ContactId':_0x557373['contact']['id'],'AttachmentId':_0x3437d0[_0x20fc('0x61')]['AttachmentId']});})['then'](function(_0x171982){_0x557373[_0x20fc('0x2d')]=_0x171982;if(_0x557373[_0x20fc('0x9b')][_0x20fc('0xa1')]){return db[_0x20fc('0xa2')][_0x20fc('0x69')]({'attributes':['id','name'],'where':{'id':_0x557373[_0x20fc('0x9b')][_0x20fc('0xa1')]}})['then'](function(_0x483f8c){if(_0x483f8c){_0x557373[_0x20fc('0x8d')][_0x20fc('0xa3')]({'id':0x0,'priority':0x0,'app':_0x20fc('0xa4'),'appdata':_0x483f8c[_0x20fc('0x41')]+','+(_0x557373[_0x20fc('0x8c')][_0x20fc('0xa5')]||0xa),'interval':'*,*,*,*'});_0x557373['forcedOwnership']=![];}return respondWithRpcPromise(_0x20fc('0xa6'),_0x20fc('0xa7'),_0x557373);});}return respondWithRpcPromise('Start',_0x20fc('0xa7'),_0x557373);})['then'](function(_0x4c7f86){respondWithRpcPromise(_0x20fc('0xa8'),_0x20fc('0xa8'),{'event':_0x20fc('0x75'),'message':_0x4c7f86},client9002);return _0x4c7f86;})[_0x20fc('0x24')](respondWithResult(_0xdda714,null))[_0x20fc('0x2f')](handleError(_0xdda714,null));};exports['addApplications']=function(_0xd4bcda,_0x209e7c){var _0x29b6cd=_0xd4bcda[_0x20fc('0x5f')]['id'];var _0xb68822=_0xd4bcda[_0x20fc('0x61')];var _0x1f3e28=0xc8;var _0x2ace1b=null;return db[_0x20fc('0xa9')][_0x20fc('0xaa')]({'isolationLevel':db['sequelize'][_0x20fc('0xab')][_0x20fc('0xac')][_0x20fc('0xad')]},function(_0x18a5f8){return db[_0x20fc('0x46')][_0x20fc('0xae')]({'where':{'id':_0x29b6cd},'transaction':_0x18a5f8})[_0x20fc('0x24')](function(_0x13d1e6){if(_0x13d1e6){return db[_0x20fc('0x89')][_0x20fc('0x3b')]({'where':{'OpenchannelAccountId':_0x29b6cd},'transaction':_0x18a5f8})[_0x20fc('0x24')](function(){var _0x38d855=_[_0x20fc('0x45')](_0xb68822,function(_0x390ea7){_0x390ea7[_0x20fc('0x70')]=_0x29b6cd;return _0x390ea7;});return db[_0x20fc('0x89')][_0x20fc('0xaf')](_0x38d855,{'transaction':_0x18a5f8});});}else{_0x1f3e28=0x194;_0x2ace1b=[];}});})[_0x20fc('0x24')](function(){if(_0x1f3e28!==0x194){return db[_0x20fc('0x89')][_0x20fc('0xb0')]({'where':{'OpenchannelAccountId':_0x29b6cd},'order':_0x20fc('0x90')})[_0x20fc('0x24')](function(_0x21d17a){_0x2ace1b=_0x21d17a;});}})['catch'](function(_0x91a11){_0x1f3e28=0x1f4;logger['error'](_0x91a11[_0x20fc('0x40')]);if(_0x91a11['name']){delete _0x91a11[_0x20fc('0x41')];}_0x2ace1b=_0x91a11;})['finally'](function(){if(_0x2ace1b===null){_0x209e7c[_0x20fc('0x3f')](_0x1f3e28);}else{if(_0x1f3e28===0x1f4){_0x209e7c[_0x20fc('0x30')](_0x1f3e28)['send'](_0x2ace1b);}else{_0x209e7c[_0x20fc('0x30')](_0x1f3e28)['json'](_0x2ace1b);}}});};exports[_0x20fc('0xb1')]=function(_0x557384,_0x40cf0f,_0x15cfdc){var _0x44d84c={};var _0x5a37c9={};var _0x31571b;var _0x1666ff;return db[_0x20fc('0x46')][_0x20fc('0xae')]({'where':{'id':_0x557384['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x40cf0f,null))[_0x20fc('0x24')](function(_0x12928b){if(_0x12928b){_0x31571b=_0x12928b;_0x5a37c9[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x89')]['rawAttributes']);_0x5a37c9['query']=_['keys'](_0x557384[_0x20fc('0x4c')]);_0x5a37c9[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x5a37c9[_0x20fc('0x4b')],_0x5a37c9[_0x20fc('0x4c')]);_0x44d84c[_0x20fc('0x52')]=_['intersection'](_0x5a37c9['model'],qs[_0x20fc('0x50')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x44d84c[_0x20fc('0x52')]=_0x44d84c[_0x20fc('0x52')]['length']?_0x44d84c[_0x20fc('0x52')]:_0x5a37c9['model'];_0x44d84c['order']=qs[_0x20fc('0x54')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x44d84c[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_[_0x20fc('0x56')](_0x557384[_0x20fc('0x4c')],_0x5a37c9['filters']));if(_0x557384[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x44d84c[_0x20fc('0x55')]=_['merge'](_0x44d84c['where'],{'$or':_[_0x20fc('0x45')](_0x44d84c[_0x20fc('0x52')],function(_0x1cb133){var _0x24d000={};_0x24d000[_0x1cb133]={'$like':'%'+_0x557384[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x24d000;})});}_0x44d84c=_[_0x20fc('0x58')]({},_0x44d84c,_0x557384['options']);return _0x31571b[_0x20fc('0xb1')](_0x44d84c);}})[_0x20fc('0x24')](function(_0x1a6497){if(_0x1a6497){_0x1666ff=_0x1a6497[_0x20fc('0x51')];if(!_0x557384[_0x20fc('0x4c')][_0x20fc('0x6e')]('nolimit')){_0x44d84c[_0x20fc('0x34')]=qs[_0x20fc('0x34')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x44d84c[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x557384[_0x20fc('0x4c')][_0x20fc('0x36')]);}return _0x31571b[_0x20fc('0xb1')](_0x44d84c);}})[_0x20fc('0x24')](function(_0x59be35){if(_0x59be35){return _0x59be35?{'count':_0x1666ff,'rows':_0x59be35}:null;}})['then'](respondWithResult(_0x40cf0f,null))[_0x20fc('0x2f')](handleError(_0x40cf0f,null));};exports[_0x20fc('0xb2')]=function(_0x419218,_0x32038d,_0xe1f0f7){var _0x974017={'raw':![],'where':{}};var _0xc9d842={};var _0x12a4d3={'count':0x0,'rows':[]};return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x419218[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x32038d,null))[_0x20fc('0x24')](function(_0x4f8f67){if(_0x4f8f67){_0xc9d842[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0x95')][_0x20fc('0x47')]);_0xc9d842['query']=_[_0x20fc('0x4d')](_0x419218[_0x20fc('0x4c')]);_0xc9d842[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0xc9d842[_0x20fc('0x4b')],_0xc9d842[_0x20fc('0x4c')]);_0x974017['attributes']=_[_0x20fc('0x4f')](_0xc9d842['model'],qs[_0x20fc('0x50')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x974017['attributes']=_0x974017['attributes']['length']?_0x974017[_0x20fc('0x52')]:_0xc9d842['model'];if(!_0x419218[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x974017['limit']=qs[_0x20fc('0x34')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x34')]);_0x974017['offset']=qs[_0x20fc('0x36')](_0x419218[_0x20fc('0x4c')][_0x20fc('0x36')]);}_0x974017[_0x20fc('0x53')]=qs['sort'](_0x419218['query'][_0x20fc('0x54')]);_0x974017[_0x20fc('0x55')]=qs[_0x20fc('0x4e')](_['pick'](_0x419218['query'],_0xc9d842['filters']));_0x974017[_0x20fc('0x55')][_0x20fc('0x70')]=_0x4f8f67['id'];if(_0x419218['query']['filter']){_0x974017[_0x20fc('0x55')]=_[_0x20fc('0x58')](_0x974017[_0x20fc('0x55')],{'$or':_[_0x20fc('0x45')](_0x974017[_0x20fc('0x52')],function(_0x3b6d6a){var _0x2995e2={};_0x2995e2[_0x3b6d6a]={'$like':'%'+_0x419218[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x2995e2;})});}_0x974017=_['merge']({},_0x974017,_0x419218[_0x20fc('0x5a')]);return db[_0x20fc('0x95')][_0x20fc('0x35')]({'where':_0x974017['where']})['then'](function(_0x1e4b38){_0x12a4d3[_0x20fc('0x35')]=_0x1e4b38;if(_0x419218['query'][_0x20fc('0x5b')]){_0x974017['include']=[{'model':db['CmContact'],'as':_0x20fc('0xb3'),'required':![]},{'model':db[_0x20fc('0xa2')],'as':_0x20fc('0xb4'),'attributes':[_0x20fc('0x41'),_0x20fc('0xb5'),'internal'],'required':![]},{'model':db[_0x20fc('0xb6')],'as':_0x20fc('0xb7'),'attributes':['id',_0x20fc('0x41'),_0x20fc('0xb8')],'where':_0x419218[_0x20fc('0x4c')][_0x20fc('0xb9')]?{'id':_0x419218[_0x20fc('0x4c')]['tag']}:undefined,'required':_0x419218[_0x20fc('0x4c')][_0x20fc('0xb9')]?!![]:![]}];}return db[_0x20fc('0x95')][_0x20fc('0x71')](_0x974017);})['then'](function(_0x5b81a1){_0x12a4d3[_0x20fc('0x5d')]=_0x5b81a1;return _0x12a4d3;});}})[_0x20fc('0x24')](respondWithFilteredResult(_0x32038d,_0x974017))['catch'](handleError(_0x32038d,null));};exports[_0x20fc('0xba')]=function(_0x5ea05c,_0x448201,_0x32df6f){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x5ea05c[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x448201,null))[_0x20fc('0x24')](function(_0x3eba75){if(_0x3eba75){return _0x3eba75[_0x20fc('0xba')](_0x5ea05c['body'][_0x20fc('0xbb')],_[_0x20fc('0xbc')](_0x5ea05c[_0x20fc('0x61')],[_0x20fc('0xbb'),'id'])||{})[_0x20fc('0x98')](function(_0x4c7813){for(var _0x5e4fde=0x0;_0x5e4fde<_0x5ea05c[_0x20fc('0x61')][_0x20fc('0xbb')][_0x20fc('0x51')];_0x5e4fde+=0x1){socket['emit'](_0x20fc('0xbd'),{'UserId':Number(_0x5ea05c['body'][_0x20fc('0xbb')][_0x5e4fde]),'OpenchannelAccountId':Number(_0x5ea05c[_0x20fc('0x5f')]['id'])});}return _0x4c7813;});}})[_0x20fc('0x24')](respondWithResult(_0x448201,null))[_0x20fc('0x2f')](handleError(_0x448201,null));};exports[_0x20fc('0xbe')]=function(_0x22afc2,_0x44f707,_0x4aee3a){return db[_0x20fc('0x46')][_0x20fc('0x69')]({'where':{'id':_0x22afc2[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x44f707,null))[_0x20fc('0x24')](function(_0x1e468b){if(_0x1e468b){return _0x1e468b[_0x20fc('0xbe')](_0x22afc2['query'][_0x20fc('0xbb')])['then'](function(){if(_['isArray'](_0x22afc2[_0x20fc('0x4c')][_0x20fc('0xbb')])){for(var _0x204dbf=0x0;_0x204dbf<_0x22afc2['query'][_0x20fc('0xbb')][_0x20fc('0x51')];_0x204dbf+=0x1){socket[_0x20fc('0xbf')](_0x20fc('0xc0'),{'UserId':Number(_0x22afc2['query']['ids'][_0x204dbf]),'OpenchannelAccountId':Number(_0x22afc2['params']['id'])});}}else{socket[_0x20fc('0xbf')](_0x20fc('0xc0'),{'UserId':Number(_0x22afc2['query'][_0x20fc('0xbb')]),'OpenchannelAccountId':Number(_0x22afc2[_0x20fc('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0x44f707,null))['catch'](handleError(_0x44f707,null));};exports[_0x20fc('0xc1')]=function(_0x3f89d4,_0x5a2a6a,_0x29cb8f){var _0x5c6f9c={};var _0x41167d={};var _0x27c31e;var _0x4d8481;return db[_0x20fc('0x46')]['findOne']({'where':{'id':_0x3f89d4[_0x20fc('0x5f')]['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x5a2a6a,null))[_0x20fc('0x24')](function(_0x52d70c){if(_0x52d70c){_0x27c31e=_0x52d70c;_0x41167d[_0x20fc('0x4b')]=_[_0x20fc('0x4d')](db[_0x20fc('0xa2')]['rawAttributes']);_0x41167d[_0x20fc('0x4c')]=_['keys'](_0x3f89d4[_0x20fc('0x4c')]);_0x41167d[_0x20fc('0x4e')]=_[_0x20fc('0x4f')](_0x41167d[_0x20fc('0x4b')],_0x41167d[_0x20fc('0x4c')]);_0x5c6f9c[_0x20fc('0x52')]=_[_0x20fc('0x4f')](_0x41167d[_0x20fc('0x4b')],qs[_0x20fc('0x50')](_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x50')]));_0x5c6f9c['attributes']=_0x5c6f9c[_0x20fc('0x52')][_0x20fc('0x51')]?_0x5c6f9c['attributes']:_0x41167d[_0x20fc('0x4b')];_0x5c6f9c['order']=qs[_0x20fc('0x54')](_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x54')]);_0x5c6f9c['where']=qs['filters'](_[_0x20fc('0x56')](_0x3f89d4[_0x20fc('0x4c')],_0x41167d[_0x20fc('0x4e')]));if(_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x57')]){_0x5c6f9c['where']=_['merge'](_0x5c6f9c['where'],{'$or':_[_0x20fc('0x45')](_0x5c6f9c[_0x20fc('0x52')],function(_0x58ead1){var _0x568be9={};_0x568be9[_0x58ead1]={'$like':'%'+_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x57')]+'%'};return _0x568be9;})});}_0x5c6f9c=_[_0x20fc('0x58')]({},_0x5c6f9c,_0x3f89d4[_0x20fc('0x5a')]);return _0x27c31e[_0x20fc('0xc1')](_0x5c6f9c);}})[_0x20fc('0x24')](function(_0x5943a9){if(_0x5943a9){_0x4d8481=_0x5943a9['length'];if(!_0x3f89d4[_0x20fc('0x4c')][_0x20fc('0x6e')](_0x20fc('0x6f'))){_0x5c6f9c[_0x20fc('0x34')]=qs['limit'](_0x3f89d4['query'][_0x20fc('0x34')]);_0x5c6f9c[_0x20fc('0x36')]=qs[_0x20fc('0x36')](_0x3f89d4['query']['offset']);}return _0x27c31e['getAgents'](_0x5c6f9c);}})[_0x20fc('0x24')](function(_0x57a3e9){if(_0x57a3e9){return _0x57a3e9?{'count':_0x4d8481,'rows':_0x57a3e9}:null;}})['then'](respondWithResult(_0x5a2a6a,null))[_0x20fc('0x2f')](handleError(_0x5a2a6a,null));};exports['send']=function(_0x374cfa,_0x4f3c76,_0x51fff5){var _0x2ab9cf,_0x48f14a,_0x4bb377;if(_[_0x20fc('0x7e')](_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')])||_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')]===''){throw new db[(_0x20fc('0x80'))][(_0x20fc('0x81'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x374cfa[_0x20fc('0x61')]['to'])){}_0x2ab9cf=_0x374cfa[_0x20fc('0x61')]['to'];return db['OpenchannelAccount'][_0x20fc('0xae')]({'where':{'id':_0x374cfa['params']['id']}})[_0x20fc('0x24')](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x2e16c5){if(_0x2e16c5){return db[_0x20fc('0x46')]['find']({'where':{'id':_0x2e16c5['id']},'include':[{'model':db[_0x20fc('0x87')],'as':'List','include':[{'model':db[_0x20fc('0x77')],'as':_0x20fc('0x92'),'where':{[_0x2e16c5[_0x20fc('0x83')]]:_0x2ab9cf},'limit':0x1,'order':[[_0x20fc('0x7b'),_0x20fc('0x88')]]}]}]})['then'](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x58d5b5){if(_0x58d5b5&&_0x58d5b5[_0x20fc('0x8b')]){_0x48f14a=_0x58d5b5['get']({'plain':!![]});if(_0x48f14a[_0x20fc('0x8b')]&&_0x48f14a[_0x20fc('0x8b')][_0x20fc('0x92')][_0x20fc('0x51')]){return _0x48f14a[_0x20fc('0x8b')][_0x20fc('0x92')][0x0];}return db['CmContact'][_0x20fc('0x60')](_['defaults'](_0x374cfa[_0x20fc('0x61')],{'firstName':_0x2ab9cf,[_0x58d5b5['mapKey']]:_0x2ab9cf,'phone':_0x2ab9cf,'ListId':_0x48f14a[_0x20fc('0x7d')]}));}})['then'](handleEntityNotFound(_0x4f3c76,null))['then'](function(_0x2d5c01){if(_0x2d5c01){_0x4bb377=_0x2d5c01;return db[_0x20fc('0x95')][_0x20fc('0x69')]({'where':{'ContactId':_0x4bb377['id'],'closed':![],'OpenchannelAccountId':_0x48f14a['id']}})[_0x20fc('0x24')](function(_0x2bd833){if(_0x2bd833){return[_0x2bd833,![]];}return db['OpenchannelInteraction'][_0x20fc('0x60')]({'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id'],'OpenchannelAccountId':_0x48f14a['id'],'lastMsgDirection':'out','firstMsgDirection':_0x20fc('0xc2'),'Messages':[_[_0x20fc('0x58')](_0x374cfa[_0x20fc('0x61')],{'read':![],'body':_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x48f14a['id'],'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id']})]},{'include':[{'model':db[_0x20fc('0xc3')],'as':_0x20fc('0xc4')}]})[_0x20fc('0x24')](function(_0x33f063){return[_0x33f063,!![]];});});}})[_0x20fc('0x98')](function(_0x1863bd,_0x1cbeb3){if(_0x1cbeb3){return _0x1863bd;}return db[_0x20fc('0xc3')][_0x20fc('0x60')](_[_0x20fc('0x58')](_0x374cfa[_0x20fc('0x61')],{'read':![],'body':_0x374cfa[_0x20fc('0x61')][_0x20fc('0x61')],'OpenchannelAccountId':_0x48f14a['id'],'OpenchannelInteractionId':_0x1863bd['id'],'UserId':_0x374cfa[_0x20fc('0x62')]['id'],'ContactId':_0x4bb377['id']}))[_0x20fc('0x24')](function(_0x407882){_0x1863bd['dataValues'][_0x20fc('0xc4')]=[];_0x1863bd[_0x20fc('0xc5')][_0x20fc('0xc4')][_0x20fc('0x9e')](_0x407882[_0x20fc('0xc5')]);return _0x1863bd;});});}})['then'](respondWithResult(_0x4f3c76,null))[_0x20fc('0x2f')](handleError(_0x4f3c76,null));};
\ No newline at end of file
index 5c45c72..3155995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['hook','exports','events','../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x69891f,_0x5e1f28){var _0xcb2761=function(_0x200bc2){while(--_0x200bc2){_0x69891f['push'](_0x69891f['shift']());}};_0xcb2761(++_0x5e1f28);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x2e986d,_0x4b6b63){_0x2e986d=_0x2e986d-0x0;var _0x351c79=_0xe5b5[_0x2e986d];return _0x351c79;};'use strict';var EventEmitter=require(_0x5e5b('0x0'));var OpenchannelAccount=require(_0x5e5b('0x1'))['db'][_0x5e5b('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x5e5b('0x3')](0x0);var events={'afterCreate':_0x5e5b('0x4'),'afterUpdate':_0x5e5b('0x5'),'afterDestroy':_0x5e5b('0x6')};function emitEvent(_0x3dc763){return function(_0xf20c6a,_0x20a50c,_0xdc6616){OpenchannelAccountEvents[_0x5e5b('0x7')](_0x3dc763+':'+_0xf20c6a['id'],_0xf20c6a);OpenchannelAccountEvents[_0x5e5b('0x7')](_0x3dc763,_0xf20c6a);_0xdc6616(null);};}for(var e in events){if(events[_0x5e5b('0x8')](e)){var event=events[e];OpenchannelAccount[_0x5e5b('0x9')](e,emitEvent(event));}}module[_0x5e5b('0xa')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xaa88=['../../mysqldb','OpenchannelAccount','setMaxListeners','update','remove','hasOwnProperty','exports','events'];(function(_0x44f4ea,_0x328067){var _0x28bf57=function(_0x36f45e){while(--_0x36f45e){_0x44f4ea['push'](_0x44f4ea['shift']());}};_0x28bf57(++_0x328067);}(_0xaa88,0x137));var _0x8aa8=function(_0x2967c1,_0x202a72){_0x2967c1=_0x2967c1-0x0;var _0x103397=_0xaa88[_0x2967c1];return _0x103397;};'use strict';var EventEmitter=require(_0x8aa8('0x0'));var OpenchannelAccount=require(_0x8aa8('0x1'))['db'][_0x8aa8('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8aa8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aa8('0x4'),'afterDestroy':_0x8aa8('0x5')};function emitEvent(_0x43f7e4){return function(_0x3b2c88,_0x3e3b70,_0x350e8b){OpenchannelAccountEvents['emit'](_0x43f7e4+':'+_0x3b2c88['id'],_0x3b2c88);OpenchannelAccountEvents['emit'](_0x43f7e4,_0x3b2c88);_0x350e8b(null);};}for(var e in events){if(events[_0x8aa8('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8aa8('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 88e6818..496216d 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(_0x59640c,_0x3ec044){var _0x5e9c4e=function(_0x35f638){while(--_0x35f638){_0x59640c['push'](_0x59640c['shift']());}};_0x5e9c4e(++_0x3ec044);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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(_0x1ab92c,_0x159d37){var _0x827dbf=function(_0x3792f0){while(--_0x3792f0){_0x1ab92c['push'](_0x1ab92c['shift']());}};_0x827dbf(++_0x159d37);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ebf868d..9559c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9861=['debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','request\x20sent'];(function(_0x4d5a82,_0x1955d5){var _0x5c8498=function(_0x2c5fd6){while(--_0x2c5fd6){_0x4d5a82['push'](_0x4d5a82['shift']());}};_0x5c8498(++_0x1955d5);}(_0x9861,0x176));var _0x1986=function(_0x13c4e9,_0x1838af){_0x13c4e9=_0x13c4e9-0x0;var _0x290311=_0x9861[_0x13c4e9];return _0x290311;};'use strict';var _=require(_0x1986('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1986('0x1'));var rs=require(_0x1986('0x2'));var fs=require('fs');var Redis=require(_0x1986('0x3'));var db=require(_0x1986('0x4'))['db'];var utils=require(_0x1986('0x5'));var logger=require(_0x1986('0x6'))('rpc');var config=require(_0x1986('0x7'));var jayson=require(_0x1986('0x8'));var client=jayson[_0x1986('0x9')][_0x1986('0xa')]({'port':0x232a});config[_0x1986('0xb')]=_[_0x1986('0xc')](config[_0x1986('0xb')],{'host':_0x1986('0xd'),'port':0x18eb});var socket=require(_0x1986('0xe'))(new Redis(config[_0x1986('0xb')]));require('./openchannelAccount.socket')[_0x1986('0xf')](socket);function respondWithRpcPromise(_0x1578f9,_0x66f64d,_0xb0e57b){return new BPromise(function(_0x47ab59,_0x3ef718){return client[_0x1986('0x10')](_0x1578f9,_0xb0e57b)['then'](function(_0x1e337d){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x66f64d,_0x1986('0x11'));logger[_0x1986('0x12')](_0x1986('0x13'),_0x66f64d,_0x1986('0x11'),JSON[_0x1986('0x14')](_0x1e337d));if(_0x1e337d[_0x1986('0x15')]){if(_0x1e337d[_0x1986('0x15')][_0x1986('0x16')]===0x1f4){logger[_0x1986('0x15')](_0x1986('0x17'),_0x66f64d,_0x1e337d['error']['message']);return _0x3ef718(_0x1e337d[_0x1986('0x15')][_0x1986('0x18')]);}logger['error'](_0x1986('0x17'),_0x66f64d,_0x1e337d[_0x1986('0x15')][_0x1986('0x18')]);return _0x47ab59(_0x1e337d[_0x1986('0x15')][_0x1986('0x18')]);}else{logger[_0x1986('0x19')](_0x1986('0x17'),_0x66f64d,_0x1986('0x11'));_0x47ab59(_0x1e337d[_0x1986('0x1a')][_0x1986('0x18')]);}})[_0x1986('0x1b')](function(_0x235524){logger[_0x1986('0x15')](_0x1986('0x17'),_0x66f64d,_0x235524);_0x3ef718(_0x235524);});});}
\ No newline at end of file
+var _0x6599=['request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','register','then','info','OpenchannelAccount,\x20%s,\x20%s'];(function(_0x785e75,_0x5ef8da){var _0x3c53c6=function(_0x58e145){while(--_0x58e145){_0x785e75['push'](_0x785e75['shift']());}};_0x3c53c6(++_0x5ef8da);}(_0x6599,0xb0));var _0x9659=function(_0xa60623,_0x2d4e4f){_0xa60623=_0xa60623-0x0;var _0x4a6487=_0x6599[_0xa60623];return _0x4a6487;};'use strict';var _=require('lodash');var util=require(_0x9659('0x0'));var moment=require(_0x9659('0x1'));var BPromise=require(_0x9659('0x2'));var rs=require(_0x9659('0x3'));var fs=require('fs');var Redis=require(_0x9659('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9659('0x5'));var logger=require('../../config/logger')(_0x9659('0x6'));var config=require('../../config/environment');var jayson=require(_0x9659('0x7'));var client=jayson[_0x9659('0x8')][_0x9659('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9659('0xa')],{'host':_0x9659('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9659('0xa')]));require('./openchannelAccount.socket')[_0x9659('0xc')](socket);function respondWithRpcPromise(_0x194d48,_0x58552a,_0x147cac){return new BPromise(function(_0x25a460,_0x349cfb){return client['request'](_0x194d48,_0x147cac)[_0x9659('0xd')](function(_0x520848){logger[_0x9659('0xe')](_0x9659('0xf'),_0x58552a,_0x9659('0x10'));logger['debug'](_0x9659('0x11'),_0x58552a,_0x9659('0x10'),JSON[_0x9659('0x12')](_0x520848));if(_0x520848[_0x9659('0x13')]){if(_0x520848[_0x9659('0x13')][_0x9659('0x14')]===0x1f4){logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x520848[_0x9659('0x13')][_0x9659('0x15')]);return _0x349cfb(_0x520848[_0x9659('0x13')][_0x9659('0x15')]);}logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x520848['error'][_0x9659('0x15')]);return _0x25a460(_0x520848[_0x9659('0x13')][_0x9659('0x15')]);}else{logger[_0x9659('0xe')](_0x9659('0xf'),_0x58552a,_0x9659('0x10'));_0x25a460(_0x520848[_0x9659('0x16')][_0x9659('0x15')]);}})[_0x9659('0x17')](function(_0x525d27){logger[_0x9659('0x13')](_0x9659('0xf'),_0x58552a,_0x525d27);_0x349cfb(_0x525d27);});});}
\ No newline at end of file
index 65f999e..9283be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6d8=['remove','removeListener','register','length','openchannelAccount:','./openchannelAccount.events'];(function(_0x46f429,_0x57a2dc){var _0x1e4eb8=function(_0xc06820){while(--_0xc06820){_0x46f429['push'](_0x46f429['shift']());}};_0x1e4eb8(++_0x57a2dc);}(_0xc6d8,0xd7));var _0x8c6d=function(_0x28db86,_0x45d20f){_0x28db86=_0x28db86-0x0;var _0x3b0ae7=_0xc6d8[_0x28db86];return _0x3b0ae7;};'use strict';var OpenchannelAccountEvents=require(_0x8c6d('0x0'));var events=['save',_0x8c6d('0x1'),'update'];function createListener(_0x3b88d1,_0x5974d3){return function(_0x292852){_0x5974d3['emit'](_0x3b88d1,_0x292852);};}function removeListener(_0x5b6b04,_0x352b8c){return function(){OpenchannelAccountEvents[_0x8c6d('0x2')](_0x5b6b04,_0x352b8c);};}exports[_0x8c6d('0x3')]=function(_0x4f5e8f){for(var _0x3c265c=0x0,_0x2dbb52=events[_0x8c6d('0x4')];_0x3c265c<_0x2dbb52;_0x3c265c++){var _0x5529f1=events[_0x3c265c];var _0x1496ba=createListener(_0x8c6d('0x5')+_0x5529f1,_0x4f5e8f);OpenchannelAccountEvents['on'](_0x5529f1,_0x1496ba);}};
\ No newline at end of file
+var _0xfc03=['removeListener','register','openchannelAccount:','./openchannelAccount.events','remove','update','emit'];(function(_0x1a12c8,_0x2df4dc){var _0x305109=function(_0x438bfb){while(--_0x438bfb){_0x1a12c8['push'](_0x1a12c8['shift']());}};_0x305109(++_0x2df4dc);}(_0xfc03,0x16f));var _0x3fc0=function(_0x8a969d,_0x339d9f){_0x8a969d=_0x8a969d-0x0;var _0x1d8dc7=_0xfc03[_0x8a969d];return _0x1d8dc7;};'use strict';var OpenchannelAccountEvents=require(_0x3fc0('0x0'));var events=['save',_0x3fc0('0x1'),_0x3fc0('0x2')];function createListener(_0x4a3641,_0x39420d){return function(_0x47eb14){_0x39420d[_0x3fc0('0x3')](_0x4a3641,_0x47eb14);};}function removeListener(_0x1eeb62,_0x390f7e){return function(){OpenchannelAccountEvents[_0x3fc0('0x4')](_0x1eeb62,_0x390f7e);};}exports[_0x3fc0('0x5')]=function(_0x389bfb){for(var _0x2b4ef6=0x0,_0xeeb912=events['length'];_0x2b4ef6<_0xeeb912;_0x2b4ef6++){var _0x2fb1a6=events[_0x2b4ef6];var _0x5f52b5=createListener(_0x3fc0('0x6')+_0x2fb1a6,_0x389bfb);OpenchannelAccountEvents['on'](_0x2fb1a6,_0x5f52b5);}};
\ No newline at end of file
index 8a01adb..fbd95e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e35=['multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show','post','create','update','delete','exports'];(function(_0x2a696c,_0x16ad22){var _0x44f2e6=function(_0x25d867){while(--_0x25d867){_0x2a696c['push'](_0x2a696c['shift']());}};_0x44f2e6(++_0x16ad22);}(_0x5e35,0x176));var _0x55e3=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x5e35[_0x8c43de];return _0xa6591b;};'use strict';var multer=require(_0x55e3('0x0'));var util=require(_0x55e3('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x55e3('0x2'));var router=express['Router']();var fs_extra=require(_0x55e3('0x3'));var auth=require(_0x55e3('0x4'));var interaction=require(_0x55e3('0x5'));var config=require(_0x55e3('0x6'));var controller=require(_0x55e3('0x7'));router[_0x55e3('0x8')]('/',auth[_0x55e3('0x9')](),controller['index']);router[_0x55e3('0x8')](_0x55e3('0xa'),auth[_0x55e3('0x9')](),controller[_0x55e3('0xb')]);router[_0x55e3('0xc')]('/',auth[_0x55e3('0x9')](),controller[_0x55e3('0xd')]);router['put'](_0x55e3('0xa'),auth['isAuthenticated'](),controller[_0x55e3('0xe')]);router[_0x55e3('0xf')](_0x55e3('0xa'),auth[_0x55e3('0x9')](),controller['destroy']);module[_0x55e3('0x10')]=router;
\ No newline at end of file
+var _0x182d=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id','show','post','create'];(function(_0x5e271d,_0x3686a7){var _0x48160c=function(_0x252e76){while(--_0x252e76){_0x5e271d['push'](_0x5e271d['shift']());}};_0x48160c(++_0x3686a7);}(_0x182d,0x1ea));var _0xd182=function(_0x491588,_0x121652){_0x491588=_0x491588-0x0;var _0x5a6cd2=_0x182d[_0x491588];return _0x5a6cd2;};'use strict';var multer=require(_0xd182('0x0'));var util=require(_0xd182('0x1'));var path=require(_0xd182('0x2'));var timeout=require(_0xd182('0x3'));var express=require(_0xd182('0x4'));var router=express[_0xd182('0x5')]();var fs_extra=require(_0xd182('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd182('0x7'));var config=require('../../config/environment');var controller=require('./openchannelApplication.controller');router[_0xd182('0x8')]('/',auth[_0xd182('0x9')](),controller['index']);router[_0xd182('0x8')](_0xd182('0xa'),auth[_0xd182('0x9')](),controller[_0xd182('0xb')]);router[_0xd182('0xc')]('/',auth[_0xd182('0x9')](),controller[_0xd182('0xd')]);router[_0xd182('0xe')](_0xd182('0xa'),auth['isAuthenticated'](),controller[_0xd182('0xf')]);router['delete'](_0xd182('0xa'),auth[_0xd182('0x9')](),controller[_0xd182('0x10')]);module[_0xd182('0x11')]=router;
\ No newline at end of file
index 1bf437b..c628ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d8e=['exports','INTEGER','STRING','*,*,*,*','sequelize'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x8d8e,0x112));var _0xe8d8=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x8d8e[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require(_0xe8d8('0x0'));module[_0xe8d8('0x1')]={'priority':{'type':Sequelize[_0xe8d8('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe8d8('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xe8d8('0x3')]},'interval':{'type':Sequelize[_0xe8d8('0x3')],'defaultValue':_0xe8d8('0x4')}};
\ No newline at end of file
+var _0xbd9c=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x4a65a8,_0x366421){var _0x2c9cf0=function(_0x566395){while(--_0x566395){_0x4a65a8['push'](_0x4a65a8['shift']());}};_0x2c9cf0(++_0x366421);}(_0xbd9c,0x175));var _0xcbd9=function(_0x3a2e49,_0x21ebea){_0x3a2e49=_0x3a2e49-0x0;var _0x257140=_0xbd9c[_0x3a2e49];return _0x257140;};'use strict';var Sequelize=require(_0xcbd9('0x0'));module[_0xcbd9('0x1')]={'priority':{'type':Sequelize[_0xcbd9('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xcbd9('0x3')],'allowNull':![],'defaultValue':_0xcbd9('0x4')},'appdata':{'type':Sequelize[_0xcbd9('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xcbd9('0x6')}};
\ No newline at end of file
index f8646e6..28f7e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a9=['intersection','query','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','reject','save','update','destroy','then','stack','name','send','index','OpenchannelApplication','rawAttributes','type','key','model','map','keys','filters'];(function(_0x47d18a,_0xd53074){var _0x130c43=function(_0x380f11){while(--_0x380f11){_0x47d18a['push'](_0x47d18a['shift']());}};_0x130c43(++_0xd53074);}(_0x20a9,0xad));var _0x920a=function(_0xccf869,_0x2556a5){_0xccf869=_0xccf869-0x0;var _0x21a9db=_0x20a9[_0xccf869];return _0x21a9db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x920a('0x0'));var zipdir=require(_0x920a('0x1'));var jsonpatch=require(_0x920a('0x2'));var rp=require('request-promise');var moment=require(_0x920a('0x3'));var BPromise=require(_0x920a('0x4'));var Mustache=require(_0x920a('0x5'));var util=require(_0x920a('0x6'));var path=require(_0x920a('0x7'));var sox=require('sox');var csv=require(_0x920a('0x8'));var ejs=require(_0x920a('0x9'));var fs=require('fs');var fs_extra=require(_0x920a('0xa'));var _=require(_0x920a('0xb'));var squel=require(_0x920a('0xc'));var crypto=require('crypto');var jsforce=require(_0x920a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x920a('0x8'));var querystring=require(_0x920a('0xe'));var Papa=require('papaparse');var Redis=require(_0x920a('0xf'));var authService=require(_0x920a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x920a('0x11'));var hardwareService=require(_0x920a('0x12'));var logger=require(_0x920a('0x13'))(_0x920a('0x14'));var utils=require(_0x920a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x920a('0x16'));var db=require(_0x920a('0x17'))['db'];function respondWithStatusCode(_0x2a6686,_0x17dd7c){_0x17dd7c=_0x17dd7c||0xcc;return function(_0x5c7aac){if(_0x5c7aac){return _0x2a6686[_0x920a('0x18')](_0x17dd7c);}return _0x2a6686[_0x920a('0x19')](_0x17dd7c)[_0x920a('0x1a')]();};}function respondWithResult(_0x4f6f13,_0x12184a){_0x12184a=_0x12184a||0xc8;return function(_0x7aefbb){if(_0x7aefbb){return _0x4f6f13[_0x920a('0x19')](_0x12184a)[_0x920a('0x1b')](_0x7aefbb);}};}function respondWithFilteredResult(_0x2b6dd5,_0xe7b0c5){return function(_0x4dbc9e){if(_0x4dbc9e){var _0x29cc99=typeof _0xe7b0c5[_0x920a('0x1c')]==='undefined'&&typeof _0xe7b0c5['limit']===_0x920a('0x1d');var _0x31cd2a=_0x4dbc9e[_0x920a('0x1e')];var _0x2776b0=_0x29cc99?0x0:_0xe7b0c5[_0x920a('0x1c')];var _0x2e1717=_0x29cc99?_0x4dbc9e[_0x920a('0x1e')]:_0xe7b0c5[_0x920a('0x1c')]+_0xe7b0c5['limit'];var _0x5b6244;if(_0x2e1717>=_0x31cd2a){_0x2e1717=_0x31cd2a;_0x5b6244=0xc8;}else{_0x5b6244=0xce;}_0x2b6dd5[_0x920a('0x19')](_0x5b6244);return _0x2b6dd5[_0x920a('0x1f')]('Content-Range',_0x2776b0+'-'+_0x2e1717+'/'+_0x31cd2a)[_0x920a('0x1b')](_0x4dbc9e);}return null;};}function patchUpdates(_0x191b75){return function(_0x52644e){try{jsonpatch['apply'](_0x52644e,_0x191b75,!![]);}catch(_0x22305d){return BPromise[_0x920a('0x20')](_0x22305d);}return _0x52644e[_0x920a('0x21')]();};}function saveUpdates(_0x3c869c,_0x141b10){return function(_0x379f02){if(_0x379f02){return _0x379f02[_0x920a('0x22')](_0x3c869c)['then'](function(_0x172296){return _0x172296;});}return null;};}function removeEntity(_0xeb9d2f,_0x5285b9){return function(_0xe89e6){if(_0xe89e6){return _0xe89e6[_0x920a('0x23')]()[_0x920a('0x24')](function(){_0xeb9d2f[_0x920a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b6e41,_0x407c8d){return function(_0x3c0186){if(!_0x3c0186){_0x4b6e41[_0x920a('0x18')](0x194);}return _0x3c0186;};}function handleError(_0x4a81e3,_0x31d557){_0x31d557=_0x31d557||0x1f4;return function(_0x5958f1){logger['error'](_0x5958f1[_0x920a('0x25')]);if(_0x5958f1[_0x920a('0x26')]){delete _0x5958f1['name'];}_0x4a81e3['status'](_0x31d557)[_0x920a('0x27')](_0x5958f1);};}exports[_0x920a('0x28')]=function(_0x3c55d2,_0x39a976){var _0x301bbe={},_0x5b4f50={},_0x29a402={'count':0x0,'rows':[]};var _0x530a67=_['map'](db[_0x920a('0x29')][_0x920a('0x2a')],function(_0xcb6022){return{'name':_0xcb6022['fieldName'],'type':_0xcb6022[_0x920a('0x2b')][_0x920a('0x2c')]};});_0x5b4f50[_0x920a('0x2d')]=_[_0x920a('0x2e')](_0x530a67,_0x920a('0x26'));_0x5b4f50['query']=_[_0x920a('0x2f')](_0x3c55d2['query']);_0x5b4f50[_0x920a('0x30')]=_[_0x920a('0x31')](_0x5b4f50[_0x920a('0x2d')],_0x5b4f50[_0x920a('0x32')]);_0x301bbe[_0x920a('0x33')]=_[_0x920a('0x31')](_0x5b4f50['model'],qs[_0x920a('0x34')](_0x3c55d2[_0x920a('0x32')][_0x920a('0x34')]));_0x301bbe[_0x920a('0x33')]=_0x301bbe['attributes'][_0x920a('0x35')]?_0x301bbe[_0x920a('0x33')]:_0x5b4f50['model'];if(!_0x3c55d2['query'][_0x920a('0x36')](_0x920a('0x37'))){_0x301bbe['limit']=qs['limit'](_0x3c55d2[_0x920a('0x32')][_0x920a('0x38')]);_0x301bbe[_0x920a('0x1c')]=qs['offset'](_0x3c55d2[_0x920a('0x32')][_0x920a('0x1c')]);}_0x301bbe[_0x920a('0x39')]=qs[_0x920a('0x3a')](_0x3c55d2[_0x920a('0x32')][_0x920a('0x3a')]);_0x301bbe['where']=qs['filters'](_[_0x920a('0x3b')](_0x3c55d2[_0x920a('0x32')],_0x5b4f50[_0x920a('0x30')]),_0x530a67);if(_0x3c55d2['query'][_0x920a('0x3c')]){_0x301bbe[_0x920a('0x3d')]=_[_0x920a('0x3e')](_0x301bbe[_0x920a('0x3d')],{'$or':_['map'](_0x530a67,function(_0x3f2296){if(_0x3f2296[_0x920a('0x2b')]!==_0x920a('0x3f')){var _0xee8f5e={};_0xee8f5e[_0x3f2296['name']]={'$like':'%'+_0x3c55d2[_0x920a('0x32')][_0x920a('0x3c')]+'%'};return _0xee8f5e;}})});}_0x301bbe=_[_0x920a('0x3e')]({},_0x301bbe,_0x3c55d2[_0x920a('0x40')]);var _0x3bd46a={'where':_0x301bbe[_0x920a('0x3d')]};return db[_0x920a('0x29')][_0x920a('0x1e')](_0x3bd46a)[_0x920a('0x24')](function(_0x4bffb3){_0x29a402['count']=_0x4bffb3;if(_0x3c55d2['query'][_0x920a('0x41')]){_0x301bbe[_0x920a('0x42')]=[{'all':!![]}];}return db[_0x920a('0x29')][_0x920a('0x43')](_0x301bbe);})[_0x920a('0x24')](function(_0x15ef33){_0x29a402[_0x920a('0x44')]=_0x15ef33;return _0x29a402;})[_0x920a('0x24')](respondWithFilteredResult(_0x39a976,_0x301bbe))[_0x920a('0x45')](handleError(_0x39a976,null));};exports['show']=function(_0x14a38b,_0x3c54a2){var _0x467e5={'raw':!![],'where':{'id':_0x14a38b['params']['id']}},_0x48b408={};_0x48b408['model']=_[_0x920a('0x2f')](db[_0x920a('0x29')][_0x920a('0x2a')]);_0x48b408[_0x920a('0x32')]=_[_0x920a('0x2f')](_0x14a38b[_0x920a('0x32')]);_0x48b408[_0x920a('0x30')]=_['intersection'](_0x48b408[_0x920a('0x2d')],_0x48b408[_0x920a('0x32')]);_0x467e5[_0x920a('0x33')]=_[_0x920a('0x31')](_0x48b408[_0x920a('0x2d')],qs[_0x920a('0x34')](_0x14a38b['query']['fields']));_0x467e5[_0x920a('0x33')]=_0x467e5[_0x920a('0x33')][_0x920a('0x35')]?_0x467e5[_0x920a('0x33')]:_0x48b408[_0x920a('0x2d')];if(_0x14a38b['query'][_0x920a('0x41')]){_0x467e5[_0x920a('0x42')]=[{'all':!![]}];}_0x467e5=_[_0x920a('0x3e')]({},_0x467e5,_0x14a38b[_0x920a('0x40')]);return db[_0x920a('0x29')][_0x920a('0x46')](_0x467e5)['then'](handleEntityNotFound(_0x3c54a2,null))[_0x920a('0x24')](respondWithResult(_0x3c54a2,null))[_0x920a('0x45')](handleError(_0x3c54a2,null));};exports[_0x920a('0x47')]=function(_0x485a11,_0x510e99){return db[_0x920a('0x29')][_0x920a('0x47')](_0x485a11[_0x920a('0x48')],{})[_0x920a('0x24')](respondWithResult(_0x510e99,0xc9))[_0x920a('0x45')](handleError(_0x510e99,null));};exports[_0x920a('0x22')]=function(_0x5d00e9,_0x33b593){if(_0x5d00e9['body']['id']){delete _0x5d00e9[_0x920a('0x48')]['id'];}return db[_0x920a('0x29')][_0x920a('0x46')]({'where':{'id':_0x5d00e9[_0x920a('0x49')]['id']}})[_0x920a('0x24')](handleEntityNotFound(_0x33b593,null))[_0x920a('0x24')](saveUpdates(_0x5d00e9[_0x920a('0x48')],null))[_0x920a('0x24')](respondWithResult(_0x33b593,null))[_0x920a('0x45')](handleError(_0x33b593,null));};exports['destroy']=function(_0x1b45f1,_0x3af82c){return db[_0x920a('0x29')][_0x920a('0x46')]({'where':{'id':_0x1b45f1[_0x920a('0x49')]['id']}})[_0x920a('0x24')](handleEntityNotFound(_0x3af82c,null))[_0x920a('0x24')](removeEntity(_0x3af82c,null))[_0x920a('0x45')](handleError(_0x3af82c,null));};
\ No newline at end of file
+var _0x85d0=['where','filter','merge','VIRTUAL','options','findAll','rows','show','params','catch','create','body','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','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','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','OpenchannelApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x79ea32,_0x1d8ea0){var _0x42b0c1=function(_0x3e7c6c){while(--_0x3e7c6c){_0x79ea32['push'](_0x79ea32['shift']());}};_0x42b0c1(++_0x1d8ea0);}(_0x85d0,0xeb));var _0x085d=function(_0x2a319e,_0x2358e1){_0x2a319e=_0x2a319e-0x0;var _0x5dc35d=_0x85d0[_0x2a319e];return _0x5dc35d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x085d('0x0'));var zipdir=require(_0x085d('0x1'));var jsonpatch=require(_0x085d('0x2'));var rp=require('request-promise');var moment=require(_0x085d('0x3'));var BPromise=require(_0x085d('0x4'));var Mustache=require(_0x085d('0x5'));var util=require('util');var path=require(_0x085d('0x6'));var sox=require(_0x085d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x085d('0x8'));var squel=require(_0x085d('0x9'));var crypto=require(_0x085d('0xa'));var jsforce=require(_0x085d('0xb'));var deskjs=require(_0x085d('0xc'));var toCsv=require(_0x085d('0xd'));var querystring=require(_0x085d('0xe'));var Papa=require(_0x085d('0xf'));var Redis=require(_0x085d('0x10'));var authService=require(_0x085d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x085d('0x12'));var hardwareService=require(_0x085d('0x13'));var logger=require(_0x085d('0x14'))('api');var utils=require(_0x085d('0x15'));var config=require(_0x085d('0x16'));var licenseUtil=require(_0x085d('0x17'));var db=require(_0x085d('0x18'))['db'];function respondWithStatusCode(_0x252d62,_0x453311){_0x453311=_0x453311||0xcc;return function(_0xc5a9e3){if(_0xc5a9e3){return _0x252d62['sendStatus'](_0x453311);}return _0x252d62[_0x085d('0x19')](_0x453311)[_0x085d('0x1a')]();};}function respondWithResult(_0x3feee9,_0x206133){_0x206133=_0x206133||0xc8;return function(_0x57dc7b){if(_0x57dc7b){return _0x3feee9[_0x085d('0x19')](_0x206133)[_0x085d('0x1b')](_0x57dc7b);}};}function respondWithFilteredResult(_0x478bcd,_0x4440d5){return function(_0x3452cb){if(_0x3452cb){var _0x4a7a80=typeof _0x4440d5[_0x085d('0x1c')]==='undefined'&&typeof _0x4440d5[_0x085d('0x1d')]===_0x085d('0x1e');var _0x12e30f=_0x3452cb[_0x085d('0x1f')];var _0x35362c=_0x4a7a80?0x0:_0x4440d5[_0x085d('0x1c')];var _0x462fb2=_0x4a7a80?_0x3452cb['count']:_0x4440d5['offset']+_0x4440d5[_0x085d('0x1d')];var _0x40ab43;if(_0x462fb2>=_0x12e30f){_0x462fb2=_0x12e30f;_0x40ab43=0xc8;}else{_0x40ab43=0xce;}_0x478bcd[_0x085d('0x19')](_0x40ab43);return _0x478bcd['set'](_0x085d('0x20'),_0x35362c+'-'+_0x462fb2+'/'+_0x12e30f)[_0x085d('0x1b')](_0x3452cb);}return null;};}function patchUpdates(_0x1d4974){return function(_0x5dfc60){try{jsonpatch['apply'](_0x5dfc60,_0x1d4974,!![]);}catch(_0x4ef65c){return BPromise[_0x085d('0x21')](_0x4ef65c);}return _0x5dfc60[_0x085d('0x22')]();};}function saveUpdates(_0xef96e8,_0x9c33c1){return function(_0x2a88b2){if(_0x2a88b2){return _0x2a88b2[_0x085d('0x23')](_0xef96e8)[_0x085d('0x24')](function(_0x253c52){return _0x253c52;});}return null;};}function removeEntity(_0x4e228f,_0x1b3b96){return function(_0x1cfb0d){if(_0x1cfb0d){return _0x1cfb0d[_0x085d('0x25')]()[_0x085d('0x24')](function(){_0x4e228f[_0x085d('0x19')](0xcc)[_0x085d('0x1a')]();});}};}function handleEntityNotFound(_0x2899cb,_0x21adbd){return function(_0x3a4328){if(!_0x3a4328){_0x2899cb[_0x085d('0x26')](0x194);}return _0x3a4328;};}function handleError(_0x2f46f3,_0x2b3c73){_0x2b3c73=_0x2b3c73||0x1f4;return function(_0x51c95b){logger[_0x085d('0x27')](_0x51c95b[_0x085d('0x28')]);if(_0x51c95b['name']){delete _0x51c95b[_0x085d('0x29')];}_0x2f46f3[_0x085d('0x19')](_0x2b3c73)[_0x085d('0x2a')](_0x51c95b);};}exports[_0x085d('0x2b')]=function(_0x2e3e8d,_0x143612){var _0x1447a5={},_0x16ccbb={},_0x1a792a={'count':0x0,'rows':[]};var _0x581a82=_[_0x085d('0x2c')](db[_0x085d('0x2d')][_0x085d('0x2e')],function(_0x22395e){return{'name':_0x22395e['fieldName'],'type':_0x22395e[_0x085d('0x2f')][_0x085d('0x30')]};});_0x16ccbb[_0x085d('0x31')]=_[_0x085d('0x2c')](_0x581a82,_0x085d('0x29'));_0x16ccbb[_0x085d('0x32')]=_[_0x085d('0x33')](_0x2e3e8d['query']);_0x16ccbb[_0x085d('0x34')]=_[_0x085d('0x35')](_0x16ccbb[_0x085d('0x31')],_0x16ccbb['query']);_0x1447a5[_0x085d('0x36')]=_['intersection'](_0x16ccbb[_0x085d('0x31')],qs['fields'](_0x2e3e8d['query'][_0x085d('0x37')]));_0x1447a5['attributes']=_0x1447a5[_0x085d('0x36')][_0x085d('0x38')]?_0x1447a5[_0x085d('0x36')]:_0x16ccbb[_0x085d('0x31')];if(!_0x2e3e8d[_0x085d('0x32')][_0x085d('0x39')](_0x085d('0x3a'))){_0x1447a5[_0x085d('0x1d')]=qs[_0x085d('0x1d')](_0x2e3e8d['query'][_0x085d('0x1d')]);_0x1447a5[_0x085d('0x1c')]=qs['offset'](_0x2e3e8d[_0x085d('0x32')][_0x085d('0x1c')]);}_0x1447a5[_0x085d('0x3b')]=qs[_0x085d('0x3c')](_0x2e3e8d['query'][_0x085d('0x3c')]);_0x1447a5[_0x085d('0x3d')]=qs[_0x085d('0x34')](_['pick'](_0x2e3e8d[_0x085d('0x32')],_0x16ccbb['filters']),_0x581a82);if(_0x2e3e8d[_0x085d('0x32')][_0x085d('0x3e')]){_0x1447a5['where']=_[_0x085d('0x3f')](_0x1447a5['where'],{'$or':_[_0x085d('0x2c')](_0x581a82,function(_0x5e6b61){if(_0x5e6b61['type']!==_0x085d('0x40')){var _0xeb972c={};_0xeb972c[_0x5e6b61[_0x085d('0x29')]]={'$like':'%'+_0x2e3e8d[_0x085d('0x32')][_0x085d('0x3e')]+'%'};return _0xeb972c;}})});}_0x1447a5=_[_0x085d('0x3f')]({},_0x1447a5,_0x2e3e8d[_0x085d('0x41')]);var _0x10f22a={'where':_0x1447a5[_0x085d('0x3d')]};return db['OpenchannelApplication'][_0x085d('0x1f')](_0x10f22a)[_0x085d('0x24')](function(_0x51fe08){_0x1a792a['count']=_0x51fe08;if(_0x2e3e8d[_0x085d('0x32')]['includeAll']){_0x1447a5['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x085d('0x42')](_0x1447a5);})[_0x085d('0x24')](function(_0x3fbb3b){_0x1a792a[_0x085d('0x43')]=_0x3fbb3b;return _0x1a792a;})['then'](respondWithFilteredResult(_0x143612,_0x1447a5))['catch'](handleError(_0x143612,null));};exports[_0x085d('0x44')]=function(_0x41d7fe,_0xc3ce84){var _0x24df30={'raw':!![],'where':{'id':_0x41d7fe[_0x085d('0x45')]['id']}},_0x41eff4={};_0x41eff4['model']=_[_0x085d('0x33')](db[_0x085d('0x2d')][_0x085d('0x2e')]);_0x41eff4[_0x085d('0x32')]=_[_0x085d('0x33')](_0x41d7fe['query']);_0x41eff4[_0x085d('0x34')]=_[_0x085d('0x35')](_0x41eff4[_0x085d('0x31')],_0x41eff4[_0x085d('0x32')]);_0x24df30[_0x085d('0x36')]=_['intersection'](_0x41eff4['model'],qs['fields'](_0x41d7fe[_0x085d('0x32')]['fields']));_0x24df30['attributes']=_0x24df30[_0x085d('0x36')]['length']?_0x24df30['attributes']:_0x41eff4[_0x085d('0x31')];if(_0x41d7fe['query']['includeAll']){_0x24df30['include']=[{'all':!![]}];}_0x24df30=_[_0x085d('0x3f')]({},_0x24df30,_0x41d7fe[_0x085d('0x41')]);return db[_0x085d('0x2d')]['find'](_0x24df30)[_0x085d('0x24')](handleEntityNotFound(_0xc3ce84,null))[_0x085d('0x24')](respondWithResult(_0xc3ce84,null))[_0x085d('0x46')](handleError(_0xc3ce84,null));};exports[_0x085d('0x47')]=function(_0x49b4d5,_0x594853){return db[_0x085d('0x2d')][_0x085d('0x47')](_0x49b4d5[_0x085d('0x48')],{})[_0x085d('0x24')](respondWithResult(_0x594853,0xc9))[_0x085d('0x46')](handleError(_0x594853,null));};exports[_0x085d('0x23')]=function(_0x29a0a1,_0x817e32){if(_0x29a0a1[_0x085d('0x48')]['id']){delete _0x29a0a1[_0x085d('0x48')]['id'];}return db[_0x085d('0x2d')][_0x085d('0x49')]({'where':{'id':_0x29a0a1[_0x085d('0x45')]['id']}})['then'](handleEntityNotFound(_0x817e32,null))[_0x085d('0x24')](saveUpdates(_0x29a0a1['body'],null))[_0x085d('0x24')](respondWithResult(_0x817e32,null))[_0x085d('0x46')](handleError(_0x817e32,null));};exports[_0x085d('0x25')]=function(_0x1046b2,_0x5cf72e){return db[_0x085d('0x2d')][_0x085d('0x49')]({'where':{'id':_0x1046b2[_0x085d('0x45')]['id']}})[_0x085d('0x24')](handleEntityNotFound(_0x5cf72e,null))['then'](removeEntity(_0x5cf72e,null))[_0x085d('0x46')](handleError(_0x5cf72e,null));};
\ No newline at end of file
index 4095553..b97c357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61b6=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x7a9fdb,_0x3a3ae9){var _0x1ed937=function(_0x4b51f5){while(--_0x4b51f5){_0x7a9fdb['push'](_0x7a9fdb['shift']());}};_0x1ed937(++_0x3a3ae9);}(_0x61b6,0x99));var _0x661b=function(_0x466b92,_0x4003ef){_0x466b92=_0x466b92-0x0;var _0x231950=_0x61b6[_0x466b92];return _0x231950;};'use strict';var _=require('lodash');var util=require(_0x661b('0x0'));var logger=require(_0x661b('0x1'))(_0x661b('0x2'));var moment=require(_0x661b('0x3'));var BPromise=require(_0x661b('0x4'));var rp=require(_0x661b('0x5'));var fs=require('fs');var path=require(_0x661b('0x6'));var rimraf=require(_0x661b('0x7'));var config=require(_0x661b('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0x661b('0x9')]=function(_0x4375c2,_0x1f3258){return _0x4375c2[_0x661b('0xa')]('OpenchannelApplication',attributes,{'tableName':_0x661b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x661b('0xc'),'collate':_0x661b('0xd')});};
\ No newline at end of file
+var _0xa318=['exports','define','OpenchannelApplication','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0xa318,0x7c));var _0x8a31=function(_0x378b0b,_0x5eaf1a){_0x378b0b=_0x378b0b-0x0;var _0x1d19ad=_0xa318[_0x378b0b];return _0x1d19ad;};'use strict';var _=require(_0x8a31('0x0'));var util=require(_0x8a31('0x1'));var logger=require(_0x8a31('0x2'))('api');var moment=require(_0x8a31('0x3'));var BPromise=require('bluebird');var rp=require(_0x8a31('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8a31('0x5'));var config=require(_0x8a31('0x6'));var attributes=require(_0x8a31('0x7'));module[_0x8a31('0x8')]=function(_0x316838,_0x3d1e7a){return _0x316838[_0x8a31('0x9')](_0x8a31('0xa'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1d91521..ab2865f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e7=['raw','where','UpdateOpenchannelApplication','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelApplication','update','body','options'];(function(_0x34e5d2,_0x4731a3){var _0x11e709=function(_0x3a4972){while(--_0x3a4972){_0x34e5d2['push'](_0x34e5d2['shift']());}};_0x11e709(++_0x4731a3);}(_0xe2e7,0x1b6));var _0x7e2e=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xe2e7[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7e2e('0x0'));var BPromise=require(_0x7e2e('0x1'));var rs=require(_0x7e2e('0x2'));var fs=require('fs');var Redis=require(_0x7e2e('0x3'));var db=require(_0x7e2e('0x4'))['db'];var utils=require(_0x7e2e('0x5'));var logger=require('../../config/logger')(_0x7e2e('0x6'));var config=require(_0x7e2e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7e2e('0x8')][_0x7e2e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x320fb9,_0x539138,_0x2dae22){return new BPromise(function(_0x5d65fb,_0x133967){return client[_0x7e2e('0xa')](_0x320fb9,_0x2dae22)[_0x7e2e('0xb')](function(_0x19f950){logger[_0x7e2e('0xc')](_0x7e2e('0xd'),_0x539138,_0x7e2e('0xe'));logger[_0x7e2e('0xf')](_0x7e2e('0x10'),_0x539138,_0x7e2e('0xe'),JSON[_0x7e2e('0x11')](_0x19f950));if(_0x19f950[_0x7e2e('0x12')]){if(_0x19f950[_0x7e2e('0x12')][_0x7e2e('0x13')]===0x1f4){logger[_0x7e2e('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x539138,_0x19f950[_0x7e2e('0x12')][_0x7e2e('0x14')]);return _0x133967(_0x19f950[_0x7e2e('0x12')]['message']);}logger['error'](_0x7e2e('0xd'),_0x539138,_0x19f950[_0x7e2e('0x12')][_0x7e2e('0x14')]);return _0x5d65fb(_0x19f950[_0x7e2e('0x12')][_0x7e2e('0x14')]);}else{logger[_0x7e2e('0xc')](_0x7e2e('0xd'),_0x539138,'request\x20sent');_0x5d65fb(_0x19f950[_0x7e2e('0x15')][_0x7e2e('0x14')]);}})['catch'](function(_0x295cee){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x539138,_0x295cee);_0x133967(_0x295cee);});});}exports['UpdateOpenchannelApplication']=function(_0x3dbba8){var _0x5cb8d5=this;return new Promise(function(_0x47f8ae,_0x9b9b16){return db[_0x7e2e('0x16')][_0x7e2e('0x17')](_0x3dbba8[_0x7e2e('0x18')],{'raw':_0x3dbba8[_0x7e2e('0x19')]?_0x3dbba8[_0x7e2e('0x19')][_0x7e2e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3dbba8[_0x7e2e('0x19')]?_0x3dbba8[_0x7e2e('0x19')][_0x7e2e('0x1b')]||null:null,'attributes':_0x3dbba8[_0x7e2e('0x19')]?_0x3dbba8['options']['attributes']||null:null,'limit':_0x3dbba8['options']?_0x3dbba8['options']['limit']||null:null})[_0x7e2e('0xb')](function(_0x4d3fe1){logger[_0x7e2e('0xc')](_0x7e2e('0x1c'),_0x3dbba8);logger[_0x7e2e('0xf')](_0x7e2e('0x1c'),_0x3dbba8,JSON['stringify'](_0x4d3fe1));_0x47f8ae(_0x4d3fe1);})['catch'](function(_0x1b4fe6){logger['error'](_0x7e2e('0x1c'),_0x1b4fe6[_0x7e2e('0x14')],_0x3dbba8);_0x9b9b16(_0x5cb8d5[_0x7e2e('0x12')](0x1f4,_0x1b4fe6[_0x7e2e('0x14')]));});});};
\ No newline at end of file
+var _0x3736=['result','catch','OpenchannelApplication','update','body','options','raw','where','attributes','UpdateOpenchannelApplication','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message'];(function(_0x15f6a0,_0x5b34fc){var _0x10f8c7=function(_0x5b7d95){while(--_0x5b7d95){_0x15f6a0['push'](_0x15f6a0['shift']());}};_0x10f8c7(++_0x5b34fc);}(_0x3736,0xe2));var _0x6373=function(_0x4e78c0,_0x2d4fbf){_0x4e78c0=_0x4e78c0-0x0;var _0x1d832c=_0x3736[_0x4e78c0];return _0x1d832c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x6373('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6373('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x6373('0x2'));var logger=require('../../config/logger')(_0x6373('0x3'));var config=require(_0x6373('0x4'));var jayson=require(_0x6373('0x5'));var client=jayson[_0x6373('0x6')][_0x6373('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2745f8,_0x1987c,_0x3e3591){return new BPromise(function(_0x3a431b,_0xedcdf9){return client[_0x6373('0x8')](_0x2745f8,_0x3e3591)[_0x6373('0x9')](function(_0x5ee0de){logger[_0x6373('0xa')]('OpenchannelApplication,\x20%s,\x20%s',_0x1987c,_0x6373('0xb'));logger[_0x6373('0xc')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x1987c,_0x6373('0xb'),JSON[_0x6373('0xd')](_0x5ee0de));if(_0x5ee0de[_0x6373('0xe')]){if(_0x5ee0de[_0x6373('0xe')]['code']===0x1f4){logger['error'](_0x6373('0xf'),_0x1987c,_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);return _0xedcdf9(_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);}logger['error'](_0x6373('0xf'),_0x1987c,_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);return _0x3a431b(_0x5ee0de[_0x6373('0xe')][_0x6373('0x10')]);}else{logger[_0x6373('0xa')](_0x6373('0xf'),_0x1987c,'request\x20sent');_0x3a431b(_0x5ee0de[_0x6373('0x11')]['message']);}})[_0x6373('0x12')](function(_0x2ed2b9){logger[_0x6373('0xe')](_0x6373('0xf'),_0x1987c,_0x2ed2b9);_0xedcdf9(_0x2ed2b9);});});}exports['UpdateOpenchannelApplication']=function(_0x2cd224){var _0x59b1ec=this;return new Promise(function(_0x1d0be1,_0x2cbc45){return db[_0x6373('0x13')][_0x6373('0x14')](_0x2cd224[_0x6373('0x15')],{'raw':_0x2cd224['options']?_0x2cd224[_0x6373('0x16')][_0x6373('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2cd224[_0x6373('0x16')]?_0x2cd224[_0x6373('0x16')][_0x6373('0x18')]||null:null,'attributes':_0x2cd224[_0x6373('0x16')]?_0x2cd224[_0x6373('0x16')][_0x6373('0x19')]||null:null,'limit':_0x2cd224['options']?_0x2cd224[_0x6373('0x16')]['limit']||null:null})[_0x6373('0x9')](function(_0x13f2a6){logger[_0x6373('0xa')](_0x6373('0x1a'),_0x2cd224);logger[_0x6373('0xc')](_0x6373('0x1a'),_0x2cd224,JSON[_0x6373('0xd')](_0x13f2a6));_0x1d0be1(_0x13f2a6);})[_0x6373('0x12')](function(_0x3f82c3){logger[_0x6373('0xe')](_0x6373('0x1a'),_0x3f82c3[_0x6373('0x10')],_0x2cd224);_0x2cbc45(_0x59b1ec[_0x6373('0xe')](0x1f4,_0x3f82c3[_0x6373('0x10')]));});});};
\ No newline at end of file
index d498679..9f35c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5bd=['openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','openchannel'];(function(_0x154ebc,_0xc9533f){var _0x141343=function(_0x38e8cf){while(--_0x38e8cf){_0x154ebc['push'](_0x154ebc['shift']());}};_0x141343(++_0xc9533f);}(_0xb5bd,0x130));var _0xdb5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb5bd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xdb5b('0x0'));var util=require('util');var path=require(_0xdb5b('0x1'));var timeout=require(_0xdb5b('0x2'));var express=require(_0xdb5b('0x3'));var router=express[_0xdb5b('0x4')]();var fs_extra=require(_0xdb5b('0x5'));var auth=require(_0xdb5b('0x6'));var interaction=require(_0xdb5b('0x7'));var config=require(_0xdb5b('0x8'));var controller=require(_0xdb5b('0x9'));router['get']('/',auth[_0xdb5b('0xa')](),controller['index']);router[_0xdb5b('0xb')](_0xdb5b('0xc'),auth[_0xdb5b('0xa')](),controller[_0xdb5b('0xd')]);router[_0xdb5b('0xb')](_0xdb5b('0xe'),auth[_0xdb5b('0xa')](),controller[_0xdb5b('0xf')]);router[_0xdb5b('0xb')](_0xdb5b('0x10'),auth[_0xdb5b('0xa')](),controller['getMessages']);router[_0xdb5b('0xb')](_0xdb5b('0x11'),auth[_0xdb5b('0xa')](),controller[_0xdb5b('0x12')]);router[_0xdb5b('0x13')]('/',auth[_0xdb5b('0xa')](),controller[_0xdb5b('0x14')]);router[_0xdb5b('0x13')]('/:id/messages',auth['isAuthenticated'](),controller[_0xdb5b('0x15')]);router[_0xdb5b('0x13')](_0xdb5b('0x16'),auth[_0xdb5b('0xa')](),interaction[_0xdb5b('0x17')]('openchannel',_0xdb5b('0x18')),controller['addTags']);router['put'](_0xdb5b('0xe'),auth['isAuthenticated'](),interaction[_0xdb5b('0x17')](_0xdb5b('0x19'),_0xdb5b('0x1a')),controller[_0xdb5b('0x1b')]);router[_0xdb5b('0x1c')](_0xdb5b('0xe'),auth['isAuthenticated'](),interaction['tracked'](_0xdb5b('0x19'),_0xdb5b('0x1d')),controller[_0xdb5b('0x1e')]);router[_0xdb5b('0x1c')]('/:id/tags',auth[_0xdb5b('0xa')](),controller[_0xdb5b('0x1f')]);module[_0xdb5b('0x20')]=router;
\ No newline at end of file
+var _0x414e=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','addTags','openchannel','openchannelinteraction:update','update','tracked','openchannelinteraction:destroy','destroy','delete','removeTags','exports'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0x414e,0xd9));var _0xe414=function(_0x40a909,_0x2d887e){_0x40a909=_0x40a909-0x0;var _0x488189=_0x414e[_0x40a909];return _0x488189;};'use strict';var multer=require(_0xe414('0x0'));var util=require('util');var path=require(_0xe414('0x1'));var timeout=require(_0xe414('0x2'));var express=require('express');var router=express[_0xe414('0x3')]();var fs_extra=require(_0xe414('0x4'));var auth=require(_0xe414('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe414('0x6'));var controller=require(_0xe414('0x7'));router['get']('/',auth[_0xe414('0x8')](),controller[_0xe414('0x9')]);router[_0xe414('0xa')](_0xe414('0xb'),auth[_0xe414('0x8')](),controller[_0xe414('0xc')]);router[_0xe414('0xa')](_0xe414('0xd'),auth['isAuthenticated'](),controller[_0xe414('0xe')]);router['get'](_0xe414('0xf'),auth['isAuthenticated'](),controller[_0xe414('0x10')]);router[_0xe414('0xa')](_0xe414('0x11'),auth[_0xe414('0x8')](),controller['download']);router[_0xe414('0x12')]('/',auth['isAuthenticated'](),controller[_0xe414('0x13')]);router[_0xe414('0x12')](_0xe414('0xf'),auth[_0xe414('0x8')](),controller['addMessage']);router[_0xe414('0x12')](_0xe414('0x14'),auth[_0xe414('0x8')](),interaction['tracked']('openchannel','openchannelinteraction:addtags'),controller[_0xe414('0x15')]);router['put'](_0xe414('0xd'),auth[_0xe414('0x8')](),interaction['tracked'](_0xe414('0x16'),_0xe414('0x17')),controller[_0xe414('0x18')]);router['delete'](_0xe414('0xd'),auth[_0xe414('0x8')](),interaction[_0xe414('0x19')]('openchannel',_0xe414('0x1a')),controller[_0xe414('0x1b')]);router[_0xe414('0x1c')](_0xe414('0x14'),auth[_0xe414('0x8')](),controller[_0xe414('0x1d')]);module[_0xe414('0x1e')]=router;
\ No newline at end of file
index e03f106..101b601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0834=['STRING','out','BOOLEAN','DATE'];(function(_0x34ab77,_0x43d2f3){var _0x49e912=function(_0x237796){while(--_0x237796){_0x34ab77['push'](_0x34ab77['shift']());}};_0x49e912(++_0x43d2f3);}(_0x0834,0x18e));var _0x4083=function(_0x4f9cd9,_0x331c96){_0x4f9cd9=_0x4f9cd9-0x0;var _0x13e73e=_0x0834[_0x4f9cd9];return _0x13e73e;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x4083('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4083('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4083('0x2')]},'read1stAt':{'type':Sequelize[_0x4083('0x1')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x4083('0x2')]},'lastMsgAt':{'type':Sequelize[_0x4083('0x1')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x4083('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x4083('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x4083('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x4083('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x99e9=['exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x49524d,_0x5ae7a9){var _0x221976=function(_0x28aa71){while(--_0x28aa71){_0x49524d['push'](_0x49524d['shift']());}};_0x221976(++_0x5ae7a9);}(_0x99e9,0xb4));var _0x999e=function(_0x53f897,_0x539857){_0x53f897=_0x53f897-0x0;var _0x6879f8=_0x99e9[_0x53f897];return _0x6879f8;};'use strict';var Sequelize=require('sequelize');module[_0x999e('0x0')]={'closed':{'type':Sequelize[_0x999e('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x999e('0x2')]},'disposition':{'type':Sequelize[_0x999e('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x999e('0x3')]},'note':{'type':Sequelize[_0x999e('0x3')]},'read1stAt':{'type':Sequelize[_0x999e('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x999e('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x999e('0x4')]('in',_0x999e('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x999e('0x4')]('in',_0x999e('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x999e('0x1')],'defaultValue':![]}};
\ No newline at end of file
index fff2d1f..72615fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3489=['basename','existsSync','pipe','createWriteStream','out','System','secret','read','value','views','downloadInteraction.ejs','transcript-','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','util','path','ejs','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','destroy','then','stack','name','send','map','OpenchannelInteraction','rawAttributes','fieldName','type','getOptions','findAll','openchannel','user','catch','show','query','from','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','find','create','body','describe','addMessage','OpenchannelMessage','omit','ids','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','OpenchannelInteractionId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','User','fullname','push','CmContact','Contact','lastName','Attachment','Messages','createdAt','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closed','closedAt','threadId','Public','filter'];(function(_0x401b3e,_0xed8de5){var _0x4f290f=function(_0xa45f77){while(--_0xa45f77){_0x401b3e['push'](_0x401b3e['shift']());}};_0x4f290f(++_0xed8de5);}(_0x3489,0x106));var _0x9348=function(_0x4cbbb8,_0x10995c){_0x4cbbb8=_0x4cbbb8-0x0;var _0x21de1b=_0x3489[_0x4cbbb8];return _0x21de1b;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x9348('0x0'));var moment=require('moment');var util=require(_0x9348('0x1'));var path=require(_0x9348('0x2'));var ejs=require(_0x9348('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x9348('0x4'));var interaction=require(_0x9348('0x5'));var qs=require('../../components/parsers/qs');var pdf=require(_0x9348('0x6'));var logger=require(_0x9348('0x7'))('api');var config=require(_0x9348('0x8'));var db=require(_0x9348('0x9'))['db'];config['redis']=_[_0x9348('0xa')](config[_0x9348('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9348('0xc'))(new Redis(config['redis']));require(_0x9348('0xd'))[_0x9348('0xe')](socket);function respondWithStatusCode(_0x523dd7,_0x3e0b1f){_0x3e0b1f=_0x3e0b1f||0xcc;return function(_0xaad65b){if(_0xaad65b){return _0x523dd7[_0x9348('0xf')](_0x3e0b1f);}return _0x523dd7[_0x9348('0x10')](_0x3e0b1f)['end']();};}function respondWithResult(_0x4afb38,_0x163801){_0x163801=_0x163801||0xc8;return function(_0x3adbb1){if(_0x3adbb1){return _0x4afb38[_0x9348('0x10')](_0x163801)['json'](_0x3adbb1);}};}function respondWithFilteredResult(_0x5ebaba,_0x2af881){return function(_0x1ffb2b){if(_0x1ffb2b){var _0x17ac3a=typeof _0x2af881[_0x9348('0x11')]==='undefined'&&typeof _0x2af881[_0x9348('0x12')]===_0x9348('0x13');var _0x255b40=_0x1ffb2b[_0x9348('0x14')];var _0x698fcf=_0x17ac3a?0x0:_0x2af881[_0x9348('0x11')];var _0x5a742f=_0x17ac3a?_0x1ffb2b['count']:_0x2af881[_0x9348('0x11')]+_0x2af881['limit'];var _0x4a77ea;if(_0x5a742f>=_0x255b40){_0x5a742f=_0x255b40;_0x4a77ea=0xc8;}else{_0x4a77ea=0xce;}_0x5ebaba[_0x9348('0x10')](_0x4a77ea);return _0x5ebaba[_0x9348('0x15')](_0x9348('0x16'),_0x698fcf+'-'+_0x5a742f+'/'+_0x255b40)[_0x9348('0x17')](_0x1ffb2b);}return null;};}function saveUpdates(_0x146393){return function(_0x2a1093){if(_0x2a1093){return _0x2a1093['update'](_0x146393)['then'](function(_0xacf7f1){return _0xacf7f1;});}return null;};}function removeEntity(_0x47c9ee){return function(_0x5ecc89){if(_0x5ecc89){return _0x5ecc89[_0x9348('0x18')]()[_0x9348('0x19')](function(){_0x47c9ee[_0x9348('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23434e){return function(_0x41cace){if(!_0x41cace){_0x23434e[_0x9348('0xf')](0x194);}return _0x41cace;};}function handleError(_0x5ac2eb,_0x2c9d9b){_0x2c9d9b=_0x2c9d9b||0x1f4;return function(_0x4ac5e7){logger['error'](_0x4ac5e7[_0x9348('0x1a')]);if(_0x4ac5e7[_0x9348('0x1b')]){delete _0x4ac5e7[_0x9348('0x1b')];}_0x5ac2eb['status'](_0x2c9d9b)[_0x9348('0x1c')](_0x4ac5e7);};}exports['index']=function(_0x11aa3d,_0x3e48f3){var _0x2025c9={};var _0x4afa99=_[_0x9348('0x1d')](db[_0x9348('0x1e')][_0x9348('0x1f')],function(_0x29bbbe){return{'name':_0x29bbbe[_0x9348('0x20')],'type':_0x29bbbe[_0x9348('0x21')]['key']};});_0x2025c9=qs[_0x9348('0x22')](_0x4afa99,_0x11aa3d);return interaction[_0x9348('0x23')](_0x9348('0x24'),_0x11aa3d['query'],_0x11aa3d[_0x9348('0x25')],_0x2025c9,_0x4afa99)[_0x9348('0x19')](respondWithFilteredResult(_0x3e48f3,_0x2025c9))[_0x9348('0x26')](handleError(_0x3e48f3,null));};exports[_0x9348('0x27')]=function(_0x4c8006,_0x5d8236){var _0x118f13={};if(_0x4c8006[_0x9348('0x28')][_0x9348('0x21')]&&_0x4c8006['query'][_0x9348('0x21')]===_0x9348('0x29')){_0x118f13[_0x9348('0x29')]=_0x4c8006['params']['id'];}else{_0x118f13['id']=_0x4c8006[_0x9348('0x2a')]['id'];}var _0xa100c={'raw':![],'where':_0x118f13},_0xbae0ac={};_0xbae0ac[_0x9348('0x2b')]=_[_0x9348('0x2c')](db[_0x9348('0x1e')][_0x9348('0x1f')]);_0xbae0ac[_0x9348('0x28')]=_[_0x9348('0x2c')](_0x4c8006[_0x9348('0x28')]);_0xbae0ac[_0x9348('0x2d')]=_[_0x9348('0x2e')](_0xbae0ac[_0x9348('0x2b')],_0xbae0ac[_0x9348('0x28')]);_0xa100c[_0x9348('0x2f')]=_[_0x9348('0x2e')](_0xbae0ac['model'],qs[_0x9348('0x30')](_0x4c8006[_0x9348('0x28')][_0x9348('0x30')]));_0xa100c[_0x9348('0x2f')]=_0xa100c[_0x9348('0x2f')][_0x9348('0x31')]?_0xa100c['attributes']:_0xbae0ac[_0x9348('0x2b')];if(_0x4c8006[_0x9348('0x28')][_0x9348('0x32')]){_0xa100c['include']=[{'all':!![]}];}_0xa100c=_[_0x9348('0x33')]({},_0xa100c,_0x4c8006[_0x9348('0x34')]);return db['OpenchannelInteraction'][_0x9348('0x35')](_0xa100c)[_0x9348('0x19')](handleEntityNotFound(_0x5d8236,null))[_0x9348('0x19')](respondWithResult(_0x5d8236,null))[_0x9348('0x26')](handleError(_0x5d8236,null));};exports[_0x9348('0x36')]=function(_0x1ae1b9,_0x7df42b){return db[_0x9348('0x1e')][_0x9348('0x36')](_0x1ae1b9[_0x9348('0x37')],{})['then'](respondWithResult(_0x7df42b,0xc9))[_0x9348('0x26')](handleError(_0x7df42b,null));};exports['update']=function(_0x1c2b45,_0x5e1b22){if(_0x1c2b45['body']['id']){delete _0x1c2b45[_0x9348('0x37')]['id'];}return db[_0x9348('0x1e')][_0x9348('0x35')]({'where':{'id':_0x1c2b45[_0x9348('0x2a')]['id']}})[_0x9348('0x19')](handleEntityNotFound(_0x5e1b22,null))[_0x9348('0x19')](saveUpdates(_0x1c2b45[_0x9348('0x37')],null))[_0x9348('0x19')](respondWithResult(_0x5e1b22,null))[_0x9348('0x26')](handleError(_0x5e1b22,null));};exports[_0x9348('0x18')]=function(_0xead437,_0x2e7e95){return db[_0x9348('0x1e')][_0x9348('0x35')]({'where':{'id':_0xead437['params']['id']}})[_0x9348('0x19')](handleEntityNotFound(_0x2e7e95,null))[_0x9348('0x19')](removeEntity(_0x2e7e95,null))['catch'](handleError(_0x2e7e95,null));};exports[_0x9348('0x38')]=function(_0x29317b,_0x5e47ae){return db[_0x9348('0x1e')]['describe']()[_0x9348('0x19')](respondWithResult(_0x5e47ae,null))[_0x9348('0x26')](handleError(_0x5e47ae,null));};exports[_0x9348('0x39')]=function(_0x3a6aaf,_0x5ee71d){return db[_0x9348('0x3a')][_0x9348('0x35')]({'where':{'id':_0x3a6aaf[_0x9348('0x2a')]['id']}})['then'](handleEntityNotFound(_0x5ee71d,null))['then'](function(_0xfd25ad){if(_0xfd25ad){return _0xfd25ad[_0x9348('0x39')](_0x3a6aaf[_0x9348('0x37')]['ids'],_[_0x9348('0x3b')](_0x3a6aaf[_0x9348('0x37')],[_0x9348('0x3c'),'id'])||{});}})[_0x9348('0x19')](respondWithResult(_0x5ee71d,null))['catch'](handleError(_0x5ee71d,null));};exports[_0x9348('0x3d')]=function(_0x32cd48,_0x51201a){var _0x3ff816={'raw':![],'where':{}};var _0x4bbbf4={};var _0x5e282d={'count':0x0,'rows':[]};return db[_0x9348('0x1e')][_0x9348('0x3e')]({'where':{'id':_0x32cd48[_0x9348('0x2a')]['id']}})[_0x9348('0x19')](handleEntityNotFound(_0x51201a,null))[_0x9348('0x19')](function(_0x44e178){if(_0x44e178){_0x4bbbf4[_0x9348('0x2b')]=_['keys'](db['OpenchannelMessage'][_0x9348('0x1f')]);_0x4bbbf4['query']=_[_0x9348('0x2c')](_0x32cd48[_0x9348('0x28')]);_0x4bbbf4[_0x9348('0x2d')]=_[_0x9348('0x2e')](_0x4bbbf4[_0x9348('0x2b')],_0x4bbbf4['query']);_0x3ff816[_0x9348('0x2f')]=_['intersection'](_0x4bbbf4['model'],qs[_0x9348('0x30')](_0x32cd48['query'][_0x9348('0x30')]));_0x3ff816[_0x9348('0x2f')]=_0x3ff816[_0x9348('0x2f')][_0x9348('0x31')]?_0x3ff816[_0x9348('0x2f')]:_0x4bbbf4[_0x9348('0x2b')];if(!_0x32cd48[_0x9348('0x28')][_0x9348('0x3f')](_0x9348('0x40'))){_0x3ff816[_0x9348('0x12')]=qs[_0x9348('0x12')](_0x32cd48['query'][_0x9348('0x12')]);_0x3ff816[_0x9348('0x11')]=qs[_0x9348('0x11')](_0x32cd48[_0x9348('0x28')][_0x9348('0x11')]);}_0x3ff816[_0x9348('0x41')]=qs[_0x9348('0x42')](_0x32cd48['query']['sort']);_0x3ff816[_0x9348('0x43')]=qs[_0x9348('0x2d')](_[_0x9348('0x44')](_0x32cd48[_0x9348('0x28')],_0x4bbbf4[_0x9348('0x2d')]));_0x3ff816['where'][_0x9348('0x45')]=_0x44e178['id'];if(_0x32cd48[_0x9348('0x28')]['filter']){_0x3ff816[_0x9348('0x43')]=_[_0x9348('0x33')](_0x3ff816[_0x9348('0x43')],{'$or':_['map'](_0x3ff816['attributes'],function(_0x41df9d){var _0x2c27b6={};_0x2c27b6[_0x41df9d]={'$like':'%'+_0x32cd48['query']['filter']+'%'};return _0x2c27b6;})});}if(_0x32cd48[_0x9348('0x28')][_0x9348('0x46')]){var _0x75d262=_0x32cd48[_0x9348('0x28')][_0x9348('0x46')][_0x9348('0x47')](',');var _0x1d9307={};_0x1d9307[_0x75d262[0x0]]={'$gte':moment(_0x75d262[0x1])[_0x9348('0x48')](_0x9348('0x49'))};_0x3ff816['where']=_[_0x9348('0x33')](_0x3ff816[_0x9348('0x43')],_0x1d9307);}_0x3ff816=_[_0x9348('0x33')]({},_0x3ff816,_0x32cd48[_0x9348('0x34')]);return db[_0x9348('0x3a')][_0x9348('0x14')]({'where':_0x3ff816[_0x9348('0x43')]})['then'](function(_0x22a1bc){_0x5e282d[_0x9348('0x14')]=_0x22a1bc;if(_0x32cd48[_0x9348('0x28')][_0x9348('0x32')]){_0x3ff816['include']=[{'all':!![]}];}return db[_0x9348('0x3a')][_0x9348('0x23')](_0x3ff816);})['then'](function(_0xf24b21){_0x5e282d['rows']=_0xf24b21;return _0x5e282d;});}})['then'](respondWithFilteredResult(_0x51201a,_0x3ff816))[_0x9348('0x26')](handleError(_0x51201a,null));};exports['addTags']=function(_0x2ffea8,_0x5bb0de){return db['OpenchannelInteraction'][_0x9348('0x35')]({'where':{'id':_0x2ffea8[_0x9348('0x2a')]['id']}})[_0x9348('0x19')](handleEntityNotFound(_0x5bb0de,null))[_0x9348('0x19')](function(_0x2e0f40){if(_0x2e0f40){return _0x2e0f40['setTags'](_0x2ffea8[_0x9348('0x37')]['ids'],_[_0x9348('0x3b')](_0x2ffea8[_0x9348('0x37')],[_0x9348('0x3c'),'id'])||{})[_0x9348('0x4a')](function(){return db[_0x9348('0x4b')]['findAll']({'attributes':['id',_0x9348('0x1b'),_0x9348('0x4c')],'where':{'id':_0x2ffea8[_0x9348('0x37')][_0x9348('0x3c')]}});})[_0x9348('0x19')](function(_0xc21321){socket[_0x9348('0x4d')](_0x9348('0x4e'),{'id':Number(_0x2ffea8[_0x9348('0x2a')]['id']),'tags':_0xc21321||[]});return{'id':Number(_0x2ffea8[_0x9348('0x2a')]['id']),'tags':_0xc21321||[]};});}})[_0x9348('0x19')](respondWithResult(_0x5bb0de,null))[_0x9348('0x26')](handleError(_0x5bb0de,null));};exports[_0x9348('0x4f')]=function(_0x1a1c4b,_0x5b2b9a){return db[_0x9348('0x1e')]['find']({'where':{'id':_0x1a1c4b[_0x9348('0x2a')]['id']}})[_0x9348('0x19')](handleEntityNotFound(_0x5b2b9a,null))['then'](function(_0x146a0d){if(_0x146a0d){return _0x146a0d[_0x9348('0x4f')](_0x1a1c4b[_0x9348('0x28')]['ids']);}})[_0x9348('0x19')](respondWithStatusCode(_0x5b2b9a,null))[_0x9348('0x26')](handleError(_0x5b2b9a,null));};exports[_0x9348('0x50')]=function(_0x57b76c,_0x504975){var _0x13bc7a=moment()[_0x9348('0x51')]()[_0x9348('0x52')]();var _0x3ea297=path[_0x9348('0x53')](config[_0x9348('0x54')],_0x9348('0x55'),'files','tmp');var _0x16c577=path['join'](config['root'],_0x9348('0x55'),_0x9348('0x56'),_0x9348('0x57'));var _0x5d8bd1=path['join'](_0x3ea297,_0x13bc7a);var _0xcecb15=util[_0x9348('0x48')]('transcript-%d-%s.zip',_0x57b76c[_0x9348('0x2a')]['id'],_0x13bc7a);var _0xeef065=path['join'](_0x3ea297,_0xcecb15);var _0x2eb23d=[];_0x2eb23d['push']({'model':db[_0x9348('0x58')],'as':_0x9348('0x58'),'attributes':['id',_0x9348('0x59')],'raw':!![]});_0x2eb23d[_0x9348('0x5a')]({'model':db[_0x9348('0x5b')],'as':_0x9348('0x5c'),'attributes':['id','firstName',_0x9348('0x5d')],'raw':!![]});if(_0x57b76c[_0x9348('0x28')]['attachments']){_0x2eb23d['push']({'model':db[_0x9348('0x5e')],'as':_0x9348('0x5e'),'raw':!![]});}var _0x4d184d=[{'model':db[_0x9348('0x3a')],'as':_0x9348('0x5f'),'attributes':['id','body',_0x9348('0x60'),_0x9348('0x61'),'secret','read'],'include':_0x2eb23d}];_0x4d184d[_0x9348('0x5a')]({'model':db[_0x9348('0x62')],'as':_0x9348('0x63'),'attributes':['id',_0x9348('0x1b')]});_0x4d184d[_0x9348('0x5a')]({'model':db[_0x9348('0x58')],'as':_0x9348('0x64'),'attributes':['id',_0x9348('0x59')]});return db[_0x9348('0x1e')][_0x9348('0x35')]({'where':{'id':_0x57b76c[_0x9348('0x2a')]['id']},'include':_0x4d184d})[_0x9348('0x19')](handleEntityNotFound(_0x504975,null))[_0x9348('0x19')](function(_0x34a4f7){if(_0x34a4f7){var _0x3f975b=_0x34a4f7[_0x9348('0x65')]({'plain':!![]});fs[_0x9348('0x66')](_0x5d8bd1);var _0x3bd27c={'channel':_0x9348('0x67'),'account':_0x3f975b[_0x9348('0x63')][_0x9348('0x1b')],'agent':_0x3f975b[_0x9348('0x64')]?_0x3f975b[_0x9348('0x64')][_0x9348('0x59')]:_0x9348('0x68'),'createdAt':moment(_0x3f975b['createdAt'])[_0x9348('0x48')]('YYYY-MM-DD\x20HH:mm:ss')[_0x9348('0x52')](),'closedAt':_0x3f975b[_0x9348('0x69')]?moment(_0x3f975b[_0x9348('0x6a')])[_0x9348('0x48')](_0x9348('0x49'))[_0x9348('0x52')]():'','disposition':_0x3f975b['disposition'],'visibility':_0x3f975b[_0x9348('0x6b')]?_0x9348('0x6c'):'Private','messages':_(_0x3f975b['Messages'])[_0x9348('0x6d')]({'secret':![]})['map'](function(_0x36434b){if(_0x36434b[_0x9348('0x5e')]){var _0x3d7c35=path['join'](_0x16c577,_0x36434b[_0x9348('0x5e')][_0x9348('0x6e')]);if(fs[_0x9348('0x6f')](_0x3d7c35)){fs['createReadStream'](_0x3d7c35)[_0x9348('0x70')](fs[_0x9348('0x71')](path[_0x9348('0x53')](_0x5d8bd1,_0x36434b[_0x9348('0x5e')][_0x9348('0x6e')])));}}return{'date':moment(_0x36434b[_0x9348('0x60')])[_0x9348('0x48')](_0x9348('0x49'))['toString'](),'sender':_0x36434b[_0x9348('0x61')]===_0x9348('0x72')?_0x36434b[_0x9348('0x58')]?_0x36434b[_0x9348('0x58')][_0x9348('0x59')]:_0x9348('0x73'):_0x36434b[_0x9348('0x5c')]['firstName']+(_0x36434b[_0x9348('0x5c')][_0x9348('0x5d')]?'\x20'+_0x36434b[_0x9348('0x5c')][_0x9348('0x5d')]:''),'body':_0x36434b['Attachment']?_0x36434b[_0x9348('0x5e')][_0x9348('0x6e')]:_0x36434b['body'],'direction':_0x36434b[_0x9348('0x61')]===_0x9348('0x72')?'A':'C','secret':_0x36434b[_0x9348('0x74')],'read':_0x36434b[_0x9348('0x75')],'attachment':_0x36434b[_0x9348('0x5e')]};})[_0x9348('0x76')]()};return ejs['renderFile'](path[_0x9348('0x53')](config['root'],'server',_0x9348('0x77'),_0x9348('0x78')),{'interaction':_0x3bd27c})[_0x9348('0x19')](function(_0x4a73b7){var _0x312eb9=path[_0x9348('0x53')](_0x5d8bd1,_0x9348('0x79')+_0x3f975b['id']+'-'+_0x13bc7a+'.pdf');var _0x33065a={'path':_0x312eb9,'channel':_0x9348('0x67'),'interactionId':_0x3f975b['id']};return pdf['createPdfFromHTML'](_0x4a73b7,_0x33065a);})[_0x9348('0x19')](function(){return new Promise(function(_0x313d98,_0x1204b4){zipdir(_0x5d8bd1,{'saveTo':_0xeef065},function(_0x300067,_0x499ae2){if(_0x300067)return _0x1204b4(_0x300067);return _0x313d98(_0x499ae2);});})[_0x9348('0x19')](function(){return new Promise(function(_0x4d11d0,_0x323be2){rimraf(_0x5d8bd1,function(_0xcb4a65){if(_0xcb4a65)_0x323be2(_0xcb4a65);return _0x4d11d0();});});})[_0x9348('0x19')](function(){return _0x504975[_0x9348('0x50')](_0xeef065,_0xcecb15,function(_0x21ecef){if(_0x21ecef){logger['error'](_0x9348('0x7a'),_0x21ecef);}else{fs[_0x9348('0x7b')](_0xeef065);}});});});}else{return _0x504975['sendStatus'](0xc8);}})[_0x9348('0x26')](handleError(_0x504975,null));};
\ No newline at end of file
+var _0x48d2=['type','from','params','filters','model','attributes','intersection','fields','length','includeAll','include','merge','options','find','catch','create','body','describe','OpenchannelMessage','ids','omit','getMessages','findOne','keys','hasOwnProperty','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','root','server','files','join','attachments','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Owner','mkdirSync','Openchannel','Account','N.A.','closed','closedAt','disposition','threadId','Public','existsSync','pipe','createWriteStream','out','System','basename','views','downloadInteraction.ejs','.pdf','rimraf','moment','util','path','lodash','../../components/interaction/service','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','json','update','then','destroy','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','key','findAll','openchannel','show','query'];(function(_0x1f5c0a,_0x58001f){var _0x95db4e=function(_0x495214){while(--_0x495214){_0x1f5c0a['push'](_0x1f5c0a['shift']());}};_0x95db4e(++_0x58001f);}(_0x48d2,0x1c9));var _0x248d=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x48d2[_0x31cb5f];return _0x586042;};'use strict';var rimraf=require(_0x248d('0x0'));var zipdir=require('zip-dir');var moment=require(_0x248d('0x1'));var util=require(_0x248d('0x2'));var path=require(_0x248d('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x248d('0x4'));var Redis=require('ioredis');var interaction=require(_0x248d('0x5'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0x248d('0x6'))(_0x248d('0x7'));var config=require('../../config/environment');var db=require(_0x248d('0x8'))['db'];config[_0x248d('0x9')]=_[_0x248d('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x248d('0xb'))(new Redis(config[_0x248d('0x9')]));require(_0x248d('0xc'))[_0x248d('0xd')](socket);function respondWithStatusCode(_0x23fdec,_0x3394e6){_0x3394e6=_0x3394e6||0xcc;return function(_0xc5c7f4){if(_0xc5c7f4){return _0x23fdec[_0x248d('0xe')](_0x3394e6);}return _0x23fdec[_0x248d('0xf')](_0x3394e6)[_0x248d('0x10')]();};}function respondWithResult(_0x553947,_0x2f4b7a){_0x2f4b7a=_0x2f4b7a||0xc8;return function(_0x4ef454){if(_0x4ef454){return _0x553947[_0x248d('0xf')](_0x2f4b7a)['json'](_0x4ef454);}};}function respondWithFilteredResult(_0x6c9bda,_0x1cddf5){return function(_0x5536d1){if(_0x5536d1){var _0x1c3beb=typeof _0x1cddf5['offset']===_0x248d('0x11')&&typeof _0x1cddf5[_0x248d('0x12')]===_0x248d('0x11');var _0x5e5673=_0x5536d1[_0x248d('0x13')];var _0x18145c=_0x1c3beb?0x0:_0x1cddf5[_0x248d('0x14')];var _0x34a232=_0x1c3beb?_0x5536d1['count']:_0x1cddf5[_0x248d('0x14')]+_0x1cddf5[_0x248d('0x12')];var _0xdf25d2;if(_0x34a232>=_0x5e5673){_0x34a232=_0x5e5673;_0xdf25d2=0xc8;}else{_0xdf25d2=0xce;}_0x6c9bda[_0x248d('0xf')](_0xdf25d2);return _0x6c9bda[_0x248d('0x15')]('Content-Range',_0x18145c+'-'+_0x34a232+'/'+_0x5e5673)[_0x248d('0x16')](_0x5536d1);}return null;};}function saveUpdates(_0x54053e){return function(_0xfda299){if(_0xfda299){return _0xfda299[_0x248d('0x17')](_0x54053e)[_0x248d('0x18')](function(_0x59a1f7){return _0x59a1f7;});}return null;};}function removeEntity(_0x2b4417){return function(_0x31cfaf){if(_0x31cfaf){return _0x31cfaf[_0x248d('0x19')]()['then'](function(){_0x2b4417[_0x248d('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d83db){return function(_0x2073c0){if(!_0x2073c0){_0x2d83db[_0x248d('0xe')](0x194);}return _0x2073c0;};}function handleError(_0x3c91c6,_0x4c2782){_0x4c2782=_0x4c2782||0x1f4;return function(_0x5056a4){logger[_0x248d('0x1a')](_0x5056a4[_0x248d('0x1b')]);if(_0x5056a4['name']){delete _0x5056a4[_0x248d('0x1c')];}_0x3c91c6[_0x248d('0xf')](_0x4c2782)[_0x248d('0x1d')](_0x5056a4);};}exports[_0x248d('0x1e')]=function(_0x2c8af2,_0x20e74d){var _0x43ca50={};var _0x57ea84=_[_0x248d('0x1f')](db[_0x248d('0x20')][_0x248d('0x21')],function(_0x392e40){return{'name':_0x392e40['fieldName'],'type':_0x392e40['type'][_0x248d('0x22')]};});_0x43ca50=qs['getOptions'](_0x57ea84,_0x2c8af2);return interaction[_0x248d('0x23')](_0x248d('0x24'),_0x2c8af2['query'],_0x2c8af2['user'],_0x43ca50,_0x57ea84)[_0x248d('0x18')](respondWithFilteredResult(_0x20e74d,_0x43ca50))['catch'](handleError(_0x20e74d,null));};exports[_0x248d('0x25')]=function(_0x4d5e03,_0x4e1360){var _0x1b6bfd={};if(_0x4d5e03[_0x248d('0x26')]['type']&&_0x4d5e03['query'][_0x248d('0x27')]===_0x248d('0x28')){_0x1b6bfd[_0x248d('0x28')]=_0x4d5e03[_0x248d('0x29')]['id'];}else{_0x1b6bfd['id']=_0x4d5e03['params']['id'];}var _0x156511={'raw':![],'where':_0x1b6bfd},_0x279ba0={};_0x279ba0['model']=_['keys'](db['OpenchannelInteraction']['rawAttributes']);_0x279ba0[_0x248d('0x26')]=_['keys'](_0x4d5e03[_0x248d('0x26')]);_0x279ba0[_0x248d('0x2a')]=_['intersection'](_0x279ba0[_0x248d('0x2b')],_0x279ba0['query']);_0x156511[_0x248d('0x2c')]=_[_0x248d('0x2d')](_0x279ba0[_0x248d('0x2b')],qs[_0x248d('0x2e')](_0x4d5e03[_0x248d('0x26')][_0x248d('0x2e')]));_0x156511[_0x248d('0x2c')]=_0x156511['attributes'][_0x248d('0x2f')]?_0x156511['attributes']:_0x279ba0[_0x248d('0x2b')];if(_0x4d5e03[_0x248d('0x26')][_0x248d('0x30')]){_0x156511[_0x248d('0x31')]=[{'all':!![]}];}_0x156511=_[_0x248d('0x32')]({},_0x156511,_0x4d5e03[_0x248d('0x33')]);return db[_0x248d('0x20')][_0x248d('0x34')](_0x156511)[_0x248d('0x18')](handleEntityNotFound(_0x4e1360,null))['then'](respondWithResult(_0x4e1360,null))[_0x248d('0x35')](handleError(_0x4e1360,null));};exports[_0x248d('0x36')]=function(_0x2f40da,_0x5b65e0){return db[_0x248d('0x20')][_0x248d('0x36')](_0x2f40da[_0x248d('0x37')],{})[_0x248d('0x18')](respondWithResult(_0x5b65e0,0xc9))[_0x248d('0x35')](handleError(_0x5b65e0,null));};exports[_0x248d('0x17')]=function(_0x312022,_0x15afa9){if(_0x312022['body']['id']){delete _0x312022['body']['id'];}return db[_0x248d('0x20')]['find']({'where':{'id':_0x312022[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x15afa9,null))['then'](saveUpdates(_0x312022[_0x248d('0x37')],null))[_0x248d('0x18')](respondWithResult(_0x15afa9,null))[_0x248d('0x35')](handleError(_0x15afa9,null));};exports[_0x248d('0x19')]=function(_0x49146d,_0x269861){return db[_0x248d('0x20')]['find']({'where':{'id':_0x49146d[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x269861,null))[_0x248d('0x18')](removeEntity(_0x269861,null))[_0x248d('0x35')](handleError(_0x269861,null));};exports[_0x248d('0x38')]=function(_0x5d665d,_0x1951df){return db[_0x248d('0x20')][_0x248d('0x38')]()[_0x248d('0x18')](respondWithResult(_0x1951df,null))[_0x248d('0x35')](handleError(_0x1951df,null));};exports['addMessage']=function(_0x2d66be,_0x475348){return db[_0x248d('0x39')][_0x248d('0x34')]({'where':{'id':_0x2d66be[_0x248d('0x29')]['id']}})[_0x248d('0x18')](handleEntityNotFound(_0x475348,null))['then'](function(_0x152aa3){if(_0x152aa3){return _0x152aa3['addMessage'](_0x2d66be[_0x248d('0x37')][_0x248d('0x3a')],_[_0x248d('0x3b')](_0x2d66be[_0x248d('0x37')],[_0x248d('0x3a'),'id'])||{});}})[_0x248d('0x18')](respondWithResult(_0x475348,null))[_0x248d('0x35')](handleError(_0x475348,null));};exports[_0x248d('0x3c')]=function(_0x211039,_0x4c336a){var _0xea335c={'raw':![],'where':{}};var _0x58ea36={};var _0x1ddf50={'count':0x0,'rows':[]};return db[_0x248d('0x20')][_0x248d('0x3d')]({'where':{'id':_0x211039[_0x248d('0x29')]['id']}})['then'](handleEntityNotFound(_0x4c336a,null))[_0x248d('0x18')](function(_0x532462){if(_0x532462){_0x58ea36[_0x248d('0x2b')]=_[_0x248d('0x3e')](db['OpenchannelMessage'][_0x248d('0x21')]);_0x58ea36['query']=_['keys'](_0x211039[_0x248d('0x26')]);_0x58ea36['filters']=_[_0x248d('0x2d')](_0x58ea36[_0x248d('0x2b')],_0x58ea36[_0x248d('0x26')]);_0xea335c[_0x248d('0x2c')]=_[_0x248d('0x2d')](_0x58ea36[_0x248d('0x2b')],qs[_0x248d('0x2e')](_0x211039[_0x248d('0x26')][_0x248d('0x2e')]));_0xea335c['attributes']=_0xea335c[_0x248d('0x2c')][_0x248d('0x2f')]?_0xea335c[_0x248d('0x2c')]:_0x58ea36[_0x248d('0x2b')];if(!_0x211039[_0x248d('0x26')][_0x248d('0x3f')]('nolimit')){_0xea335c[_0x248d('0x12')]=qs[_0x248d('0x12')](_0x211039[_0x248d('0x26')][_0x248d('0x12')]);_0xea335c[_0x248d('0x14')]=qs['offset'](_0x211039[_0x248d('0x26')][_0x248d('0x14')]);}_0xea335c[_0x248d('0x40')]=qs['sort'](_0x211039[_0x248d('0x26')][_0x248d('0x41')]);_0xea335c[_0x248d('0x42')]=qs[_0x248d('0x2a')](_[_0x248d('0x43')](_0x211039[_0x248d('0x26')],_0x58ea36[_0x248d('0x2a')]));_0xea335c[_0x248d('0x42')][_0x248d('0x44')]=_0x532462['id'];if(_0x211039['query'][_0x248d('0x45')]){_0xea335c[_0x248d('0x42')]=_['merge'](_0xea335c['where'],{'$or':_[_0x248d('0x1f')](_0xea335c[_0x248d('0x2c')],function(_0x273704){var _0x34bbed={};_0x34bbed[_0x273704]={'$like':'%'+_0x211039[_0x248d('0x26')][_0x248d('0x45')]+'%'};return _0x34bbed;})});}if(_0x211039['query'][_0x248d('0x46')]){var _0x58d795=_0x211039[_0x248d('0x26')]['$gte'][_0x248d('0x47')](',');var _0x1e6ed1={};_0x1e6ed1[_0x58d795[0x0]]={'$gte':moment(_0x58d795[0x1])['format'](_0x248d('0x48'))};_0xea335c[_0x248d('0x42')]=_[_0x248d('0x32')](_0xea335c[_0x248d('0x42')],_0x1e6ed1);}_0xea335c=_[_0x248d('0x32')]({},_0xea335c,_0x211039[_0x248d('0x33')]);return db[_0x248d('0x39')][_0x248d('0x13')]({'where':_0xea335c['where']})[_0x248d('0x18')](function(_0x3ccb81){_0x1ddf50[_0x248d('0x13')]=_0x3ccb81;if(_0x211039[_0x248d('0x26')][_0x248d('0x30')]){_0xea335c[_0x248d('0x31')]=[{'all':!![]}];}return db[_0x248d('0x39')][_0x248d('0x23')](_0xea335c);})['then'](function(_0x3169bf){_0x1ddf50['rows']=_0x3169bf;return _0x1ddf50;});}})['then'](respondWithFilteredResult(_0x4c336a,_0xea335c))[_0x248d('0x35')](handleError(_0x4c336a,null));};exports[_0x248d('0x49')]=function(_0x30d531,_0x381e1c){return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x30d531['params']['id']}})['then'](handleEntityNotFound(_0x381e1c,null))['then'](function(_0x1aaa64){if(_0x1aaa64){return _0x1aaa64[_0x248d('0x4a')](_0x30d531[_0x248d('0x37')][_0x248d('0x3a')],_['omit'](_0x30d531[_0x248d('0x37')],[_0x248d('0x3a'),'id'])||{})[_0x248d('0x4b')](function(){return db[_0x248d('0x4c')][_0x248d('0x23')]({'attributes':['id',_0x248d('0x1c'),_0x248d('0x4d')],'where':{'id':_0x30d531[_0x248d('0x37')][_0x248d('0x3a')]}});})[_0x248d('0x18')](function(_0x15675e){socket[_0x248d('0x4e')](_0x248d('0x4f'),{'id':Number(_0x30d531[_0x248d('0x29')]['id']),'tags':_0x15675e||[]});return{'id':Number(_0x30d531[_0x248d('0x29')]['id']),'tags':_0x15675e||[]};});}})[_0x248d('0x18')](respondWithResult(_0x381e1c,null))[_0x248d('0x35')](handleError(_0x381e1c,null));};exports['removeTags']=function(_0x261302,_0x1ba48a){return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x261302[_0x248d('0x29')]['id']}})['then'](handleEntityNotFound(_0x1ba48a,null))[_0x248d('0x18')](function(_0x4982dd){if(_0x4982dd){return _0x4982dd[_0x248d('0x50')](_0x261302[_0x248d('0x26')]['ids']);}})[_0x248d('0x18')](respondWithStatusCode(_0x1ba48a,null))[_0x248d('0x35')](handleError(_0x1ba48a,null));};exports[_0x248d('0x51')]=function(_0x4201a8,_0x45e2e9){var _0x2bdd12=moment()[_0x248d('0x52')]()[_0x248d('0x53')]();var _0x464306=path['join'](config[_0x248d('0x54')],_0x248d('0x55'),_0x248d('0x56'),'tmp');var _0x4c9dec=path[_0x248d('0x57')](config[_0x248d('0x54')],'server',_0x248d('0x56'),_0x248d('0x58'));var _0x423bcd=path[_0x248d('0x57')](_0x464306,_0x2bdd12);var _0x59567d=util[_0x248d('0x59')](_0x248d('0x5a'),_0x4201a8[_0x248d('0x29')]['id'],_0x2bdd12);var _0x23bab0=path[_0x248d('0x57')](_0x464306,_0x59567d);var _0x28f76c=[];_0x28f76c[_0x248d('0x5b')]({'model':db[_0x248d('0x5c')],'as':'User','attributes':['id',_0x248d('0x5d')],'raw':!![]});_0x28f76c[_0x248d('0x5b')]({'model':db[_0x248d('0x5e')],'as':_0x248d('0x5f'),'attributes':['id',_0x248d('0x60'),_0x248d('0x61')],'raw':!![]});if(_0x4201a8['query']['attachments']){_0x28f76c['push']({'model':db[_0x248d('0x62')],'as':_0x248d('0x62'),'raw':!![]});}var _0x31e47c=[{'model':db[_0x248d('0x39')],'as':_0x248d('0x63'),'attributes':['id',_0x248d('0x37'),_0x248d('0x64'),_0x248d('0x65'),_0x248d('0x66'),_0x248d('0x67')],'include':_0x28f76c}];_0x31e47c['push']({'model':db[_0x248d('0x68')],'as':'Account','attributes':['id',_0x248d('0x1c')]});_0x31e47c['push']({'model':db[_0x248d('0x5c')],'as':_0x248d('0x69'),'attributes':['id',_0x248d('0x5d')]});return db[_0x248d('0x20')][_0x248d('0x34')]({'where':{'id':_0x4201a8['params']['id']},'include':_0x31e47c})[_0x248d('0x18')](handleEntityNotFound(_0x45e2e9,null))['then'](function(_0x34741b){if(_0x34741b){var _0x38000b=_0x34741b['get']({'plain':!![]});fs[_0x248d('0x6a')](_0x423bcd);var _0x41637e={'channel':_0x248d('0x6b'),'account':_0x38000b[_0x248d('0x6c')][_0x248d('0x1c')],'agent':_0x38000b[_0x248d('0x69')]?_0x38000b['Owner'][_0x248d('0x5d')]:_0x248d('0x6d'),'createdAt':moment(_0x38000b[_0x248d('0x64')])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x38000b[_0x248d('0x6e')]?moment(_0x38000b[_0x248d('0x6f')])[_0x248d('0x59')]('YYYY-MM-DD\x20HH:mm:ss')[_0x248d('0x53')]():'','disposition':_0x38000b[_0x248d('0x70')],'visibility':_0x38000b[_0x248d('0x71')]?_0x248d('0x72'):'Private','messages':_(_0x38000b[_0x248d('0x63')])['filter']({'secret':![]})[_0x248d('0x1f')](function(_0x2b20d4){if(_0x2b20d4[_0x248d('0x62')]){var _0x21b96e=path[_0x248d('0x57')](_0x4c9dec,_0x2b20d4['Attachment']['basename']);if(fs[_0x248d('0x73')](_0x21b96e)){fs['createReadStream'](_0x21b96e)[_0x248d('0x74')](fs[_0x248d('0x75')](path[_0x248d('0x57')](_0x423bcd,_0x2b20d4[_0x248d('0x62')]['basename'])));}}return{'date':moment(_0x2b20d4[_0x248d('0x64')])[_0x248d('0x59')](_0x248d('0x48'))[_0x248d('0x53')](),'sender':_0x2b20d4[_0x248d('0x65')]===_0x248d('0x76')?_0x2b20d4[_0x248d('0x5c')]?_0x2b20d4[_0x248d('0x5c')][_0x248d('0x5d')]:_0x248d('0x77'):_0x2b20d4[_0x248d('0x5f')]['firstName']+(_0x2b20d4[_0x248d('0x5f')][_0x248d('0x61')]?'\x20'+_0x2b20d4[_0x248d('0x5f')]['lastName']:''),'body':_0x2b20d4[_0x248d('0x62')]?_0x2b20d4['Attachment'][_0x248d('0x78')]:_0x2b20d4['body'],'direction':_0x2b20d4[_0x248d('0x65')]===_0x248d('0x76')?'A':'C','secret':_0x2b20d4[_0x248d('0x66')],'read':_0x2b20d4['read'],'attachment':_0x2b20d4[_0x248d('0x62')]};})['value']()};return ejs['renderFile'](path[_0x248d('0x57')](config[_0x248d('0x54')],_0x248d('0x55'),_0x248d('0x79'),_0x248d('0x7a')),{'interaction':_0x41637e})[_0x248d('0x18')](function(_0x4175b6){var _0x239cc2=path[_0x248d('0x57')](_0x423bcd,'transcript-'+_0x38000b['id']+'-'+_0x2bdd12+_0x248d('0x7b'));var _0x204cc6={'path':_0x239cc2,'channel':_0x248d('0x6b'),'interactionId':_0x38000b['id']};return pdf['createPdfFromHTML'](_0x4175b6,_0x204cc6);})['then'](function(){return new Promise(function(_0x5c1e28,_0x3aaadd){zipdir(_0x423bcd,{'saveTo':_0x23bab0},function(_0x1ed815,_0x5dcc2f){if(_0x1ed815)return _0x3aaadd(_0x1ed815);return _0x5c1e28(_0x5dcc2f);});})['then'](function(){return new Promise(function(_0x46b0bb,_0x531fe4){rimraf(_0x423bcd,function(_0x5397f3){if(_0x5397f3)_0x531fe4(_0x5397f3);return _0x46b0bb();});});})[_0x248d('0x18')](function(){return _0x45e2e9[_0x248d('0x51')](_0x23bab0,_0x59567d,function(_0x294623){if(_0x294623){logger[_0x248d('0x1a')]('Unable\x20to\x20delete\x20zip\x20file',_0x294623);}else{fs['unlinkSync'](_0x23bab0);}});});});}else{return _0x45e2e9[_0x248d('0xe')](0xc8);}})[_0x248d('0x35')](handleError(_0x45e2e9,null));};
\ No newline at end of file
index 6bef220..d59ea46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7642=['Users','map','length','emit','hook','exports','../../mysqldb','OpenchannelInteraction','update','remove','then','setDataValue'];(function(_0x3f4b7e,_0x296056){var _0x589db0=function(_0x440e12){while(--_0x440e12){_0x3f4b7e['push'](_0x3f4b7e['shift']());}};_0x589db0(++_0x296056);}(_0x7642,0xc6));var _0x2764=function(_0x74ee30,_0x3fee1f){_0x74ee30=_0x74ee30-0x0;var _0x35429b=_0x7642[_0x74ee30];return _0x35429b;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x2764('0x0'))['db'][_0x2764('0x1')];var OpenchannelMessage=require(_0x2764('0x0'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2764('0x2'),'afterDestroy':_0x2764('0x3')};function emitEvent(_0x4045b0){return function(_0x50c24f,_0x9747a1,_0x496514){_0x50c24f['getUsers']({'attributes':['id'],'raw':!![]})[_0x2764('0x4')](function(_0x26f306){_0x50c24f[_0x2764('0x5')](_0x2764('0x6'),_0x26f306[_0x2764('0x7')](function(_0x2da127){return{'id':_0x2da127['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x50c24f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2764('0x4')](function(_0x26c411){_0x50c24f['setDataValue']('unreadMessages',_0x26c411[_0x2764('0x8')]);OpenchannelInteractionEvents['emit'](_0x4045b0+':'+_0x50c24f['id'],_0x50c24f);OpenchannelInteractionEvents[_0x2764('0x9')](_0x4045b0,_0x50c24f);_0x496514(null);})['catch'](_0x496514(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x2764('0xa')](e,emitEvent(event));}}module[_0x2764('0xb')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x7288=['../../mysqldb','OpenchannelInteraction','setMaxListeners','save','update','getUsers','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports'];(function(_0x2a50f7,_0x4c5ed1){var _0x5123ec=function(_0x552d41){while(--_0x552d41){_0x2a50f7['push'](_0x2a50f7['shift']());}};_0x5123ec(++_0x4c5ed1);}(_0x7288,0x1c2));var _0x8728=function(_0x1cc2c3,_0x8e376c){_0x1cc2c3=_0x1cc2c3-0x0;var _0x50abb0=_0x7288[_0x1cc2c3];return _0x50abb0;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x8728('0x0'))['db'][_0x8728('0x1')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x8728('0x2')](0x0);var events={'afterCreate':_0x8728('0x3'),'afterUpdate':_0x8728('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3a57d1){return function(_0x461a08,_0x2b5295,_0xa4b29c){_0x461a08[_0x8728('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x3e85a1){_0x461a08['setDataValue'](_0x8728('0x6'),_0x3e85a1[_0x8728('0x7')](function(_0x29a83b){return{'id':_0x29a83b['id']};}));return OpenchannelMessage[_0x8728('0x8')]({'where':{'OpenchannelInteractionId':_0x461a08['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x10f1c8){_0x461a08['setDataValue'](_0x8728('0x9'),_0x10f1c8[_0x8728('0xa')]);OpenchannelInteractionEvents[_0x8728('0xb')](_0x3a57d1+':'+_0x461a08['id'],_0x461a08);OpenchannelInteractionEvents[_0x8728('0xb')](_0x3a57d1,_0x461a08);_0xa4b29c(null);})[_0x8728('0xc')](_0xa4b29c(null));};}for(var e in events){if(events[_0x8728('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x8728('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 7c599bf..162d5c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dce=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','openchannel_interactions','utf8mb4_unicode_ci'];(function(_0x3a8063,_0x5bb627){var _0x8d748f=function(_0x245890){while(--_0x245890){_0x3a8063['push'](_0x3a8063['shift']());}};_0x8d748f(++_0x5bb627);}(_0x3dce,0xc4));var _0xe3dc=function(_0x4e336a,_0x2841e9){_0x4e336a=_0x4e336a-0x0;var _0x2330e7=_0x3dce[_0x4e336a];return _0x2330e7;};'use strict';var _=require(_0xe3dc('0x0'));var util=require(_0xe3dc('0x1'));var logger=require(_0xe3dc('0x2'))(_0xe3dc('0x3'));var moment=require(_0xe3dc('0x4'));var BPromise=require(_0xe3dc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe3dc('0x6'));var rimraf=require('rimraf');var config=require(_0xe3dc('0x7'));var attributes=require('./openchannelInteraction.attributes');module[_0xe3dc('0x8')]=function(_0x267ff0,_0x293a87){return _0x267ff0[_0xe3dc('0x9')]('OpenchannelInteraction',attributes,{'tableName':_0xe3dc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe3dc('0xb'),'hooks':{'beforeUpdate':function(_0x56e567,_0x55e62e,_0xe1f919){if(_0x56e567['changed'](_0xe3dc('0xc'))){_0x56e567[_0xe3dc('0xd')]=moment()[_0xe3dc('0xe')](_0xe3dc('0xf'));}_0xe1f919(null,_0x56e567);}}});};
\ No newline at end of file
+var _0x354e=['OpenchannelInteraction','openchannel_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define'];(function(_0x3965e3,_0x1700e0){var _0x4b7dd4=function(_0x48c9a9){while(--_0x48c9a9){_0x3965e3['push'](_0x3965e3['shift']());}};_0x4b7dd4(++_0x1700e0);}(_0x354e,0x186));var _0xe354=function(_0x29dc1f,_0x266ad9){_0x29dc1f=_0x29dc1f-0x0;var _0x3be5f6=_0x354e[_0x29dc1f];return _0x3be5f6;};'use strict';var _=require(_0xe354('0x0'));var util=require(_0xe354('0x1'));var logger=require('../../config/logger')(_0xe354('0x2'));var moment=require(_0xe354('0x3'));var BPromise=require('bluebird');var rp=require(_0xe354('0x4'));var fs=require('fs');var path=require(_0xe354('0x5'));var rimraf=require(_0xe354('0x6'));var config=require('../../config/environment');var attributes=require(_0xe354('0x7'));module[_0xe354('0x8')]=function(_0x3dcbe6,_0x4b908a){return _0x3dcbe6[_0xe354('0x9')](_0xe354('0xa'),attributes,{'tableName':_0xe354('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x1ad5a3,_0x27e10a,_0x3a5121){if(_0x1ad5a3[_0xe354('0xc')]('closed')){_0x1ad5a3[_0xe354('0xd')]=moment()[_0xe354('0xe')](_0xe354('0xf'));}_0x3a5121(null,_0x1ad5a3);}}});};
\ No newline at end of file
index 86434b2..f727748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42e5=['OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelInteraction,\x20%s,\x20%s','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','where','attributes','limit','AddTagsToOpenchannelInteraction','find','ids','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelInteraction.socket','register','request','then','info','request\x20sent','debug'];(function(_0x40413a,_0x3056eb){var _0x92d88e=function(_0x17f9db){while(--_0x17f9db){_0x40413a['push'](_0x40413a['shift']());}};_0x92d88e(++_0x3056eb);}(_0x42e5,0xb8));var _0x542e=function(_0x2c5435,_0x1bbff8){_0x2c5435=_0x2c5435-0x0;var _0x1f7ffe=_0x42e5[_0x2c5435];return _0x1f7ffe;};'use strict';var _=require(_0x542e('0x0'));var util=require(_0x542e('0x1'));var moment=require('moment');var BPromise=require(_0x542e('0x2'));var rs=require(_0x542e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x542e('0x4'))['db'];var utils=require(_0x542e('0x5'));var logger=require(_0x542e('0x6'))('rpc');var config=require(_0x542e('0x7'));var jayson=require(_0x542e('0x8'));var client=jayson[_0x542e('0x9')][_0x542e('0xa')]({'port':0x232a});config[_0x542e('0xb')]=_[_0x542e('0xc')](config['redis'],{'host':_0x542e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x542e('0xb')]));require(_0x542e('0xe'))[_0x542e('0xf')](socket);function respondWithRpcPromise(_0x311d7d,_0x205798,_0x469791){return new BPromise(function(_0x284193,_0x34224f){return client[_0x542e('0x10')](_0x311d7d,_0x469791)[_0x542e('0x11')](function(_0x33862b){logger[_0x542e('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x205798,_0x542e('0x13'));logger[_0x542e('0x14')](_0x542e('0x15'),_0x205798,_0x542e('0x13'),JSON[_0x542e('0x16')](_0x33862b));if(_0x33862b[_0x542e('0x17')]){if(_0x33862b[_0x542e('0x17')][_0x542e('0x18')]===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x205798,_0x33862b[_0x542e('0x17')][_0x542e('0x19')]);return _0x34224f(_0x33862b['error'][_0x542e('0x19')]);}logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x205798,_0x33862b['error'][_0x542e('0x19')]);return _0x284193(_0x33862b[_0x542e('0x17')]['message']);}else{logger[_0x542e('0x12')](_0x542e('0x1a'),_0x205798,_0x542e('0x13'));_0x284193(_0x33862b['result'][_0x542e('0x19')]);}})[_0x542e('0x1b')](function(_0x141dbd){logger[_0x542e('0x17')]('OpenchannelInteraction,\x20%s,\x20%s',_0x205798,_0x141dbd);_0x34224f(_0x141dbd);});});}exports[_0x542e('0x1c')]=function(_0x11bb4a){var _0x3ecf9b=this;return new Promise(function(_0x387fab,_0x236e89){return db[_0x542e('0x1d')][_0x542e('0x1e')](_0x11bb4a[_0x542e('0x1f')],{'raw':_0x11bb4a['options']?_0x11bb4a[_0x542e('0x20')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11bb4a[_0x542e('0x20')]?_0x11bb4a['options'][_0x542e('0x21')]||null:null,'attributes':_0x11bb4a[_0x542e('0x20')]?_0x11bb4a[_0x542e('0x20')][_0x542e('0x22')]||null:null,'limit':_0x11bb4a[_0x542e('0x20')]?_0x11bb4a['options'][_0x542e('0x23')]||null:null})[_0x542e('0x11')](function(_0x26fc5c){logger[_0x542e('0x12')](_0x542e('0x1c'),_0x11bb4a);logger[_0x542e('0x14')](_0x542e('0x1c'),_0x11bb4a,JSON[_0x542e('0x16')](_0x26fc5c));_0x387fab(_0x26fc5c);})['catch'](function(_0x38847a){logger[_0x542e('0x17')](_0x542e('0x1c'),_0x38847a[_0x542e('0x19')],_0x11bb4a);_0x236e89(_0x3ecf9b[_0x542e('0x17')](0x1f4,_0x38847a[_0x542e('0x19')]));});});};exports[_0x542e('0x24')]=function(_0x1aca75){return new Promise(function(_0x392926,_0x3e118d){return db['OpenchannelInteraction'][_0x542e('0x25')]({'where':_0x1aca75[_0x542e('0x20')]?_0x1aca75[_0x542e('0x20')][_0x542e('0x21')]||null:null})[_0x542e('0x11')](function(_0x3bb5d5){if(_0x3bb5d5){return _0x3bb5d5['addTags'](_0x1aca75[_0x542e('0x1f')][_0x542e('0x26')],_['omit'](_0x1aca75[_0x542e('0x1f')],[_0x542e('0x26'),'id'])||{});}})[_0x542e('0x27')](function(_0xe8a7c8){logger['info'](_0x542e('0x28'),_0x1aca75);logger['debug']('AddTags',_0x1aca75,JSON[_0x542e('0x16')](_0xe8a7c8));_0x392926(_0xe8a7c8);})[_0x542e('0x1b')](function(_0x17f660){logger[_0x542e('0x17')](_0x542e('0x28'),_0x17f660[_0x542e('0x19')],_0x1aca75);_0x3e118d(_this[_0x542e('0x17')](0x1f4,_0x17f660[_0x542e('0x19')]));});});};
\ No newline at end of file
+var _0x6bb6=['bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','defaults','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','OpenchannelInteraction','update','body','options','raw','where','limit','UpdateOpenchannelInteraction','debug','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment'];(function(_0x1c8e23,_0x26885e){var _0x369ac8=function(_0x503578){while(--_0x503578){_0x1c8e23['push'](_0x1c8e23['shift']());}};_0x369ac8(++_0x26885e);}(_0x6bb6,0x9d));var _0x66bb=function(_0x41e25f,_0x36a937){_0x41e25f=_0x41e25f-0x0;var _0x337a8e=_0x6bb6[_0x41e25f];return _0x337a8e;};'use strict';var _=require(_0x66bb('0x0'));var util=require(_0x66bb('0x1'));var moment=require(_0x66bb('0x2'));var BPromise=require(_0x66bb('0x3'));var rs=require(_0x66bb('0x4'));var fs=require('fs');var Redis=require(_0x66bb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x66bb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x66bb('0x7'));var jayson=require(_0x66bb('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x66bb('0x9')](config[_0x66bb('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x66bb('0xb'))[_0x66bb('0xc')](socket);function respondWithRpcPromise(_0x5d0d60,_0x295471,_0x56e9cc){return new BPromise(function(_0x117ddb,_0x591643){return client[_0x66bb('0xd')](_0x5d0d60,_0x56e9cc)[_0x66bb('0xe')](function(_0x33a0b3){logger[_0x66bb('0xf')](_0x66bb('0x10'),_0x295471,_0x66bb('0x11'));logger['debug']('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x295471,_0x66bb('0x11'),JSON[_0x66bb('0x12')](_0x33a0b3));if(_0x33a0b3[_0x66bb('0x13')]){if(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x14')]===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x295471,_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);return _0x591643(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);}logger[_0x66bb('0x13')](_0x66bb('0x10'),_0x295471,_0x33a0b3[_0x66bb('0x13')]['message']);return _0x117ddb(_0x33a0b3[_0x66bb('0x13')][_0x66bb('0x15')]);}else{logger[_0x66bb('0xf')](_0x66bb('0x10'),_0x295471,_0x66bb('0x11'));_0x117ddb(_0x33a0b3[_0x66bb('0x16')]['message']);}})[_0x66bb('0x17')](function(_0x35b1e8){logger['error'](_0x66bb('0x10'),_0x295471,_0x35b1e8);_0x591643(_0x35b1e8);});});}exports['UpdateOpenchannelInteraction']=function(_0x2784e6){var _0x24f8b6=this;return new Promise(function(_0x44e17c,_0x473117){return db[_0x66bb('0x18')][_0x66bb('0x19')](_0x2784e6[_0x66bb('0x1a')],{'raw':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6[_0x66bb('0x1b')][_0x66bb('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2784e6['options']?_0x2784e6[_0x66bb('0x1b')][_0x66bb('0x1d')]||null:null,'attributes':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6[_0x66bb('0x1b')]['attributes']||null:null,'limit':_0x2784e6[_0x66bb('0x1b')]?_0x2784e6['options'][_0x66bb('0x1e')]||null:null})[_0x66bb('0xe')](function(_0x54f2fd){logger[_0x66bb('0xf')](_0x66bb('0x1f'),_0x2784e6);logger[_0x66bb('0x20')](_0x66bb('0x1f'),_0x2784e6,JSON[_0x66bb('0x12')](_0x54f2fd));_0x44e17c(_0x54f2fd);})[_0x66bb('0x17')](function(_0x3989f9){logger[_0x66bb('0x13')](_0x66bb('0x1f'),_0x3989f9[_0x66bb('0x15')],_0x2784e6);_0x473117(_0x24f8b6[_0x66bb('0x13')](0x1f4,_0x3989f9['message']));});});};exports[_0x66bb('0x21')]=function(_0x2a140a){return new Promise(function(_0x1feba3,_0x5c434e){return db[_0x66bb('0x18')][_0x66bb('0x22')]({'where':_0x2a140a['options']?_0x2a140a['options'][_0x66bb('0x1d')]||null:null})[_0x66bb('0xe')](function(_0x4a959f){if(_0x4a959f){return _0x4a959f[_0x66bb('0x23')](_0x2a140a['body'][_0x66bb('0x24')],_[_0x66bb('0x25')](_0x2a140a[_0x66bb('0x1a')],[_0x66bb('0x24'),'id'])||{});}})[_0x66bb('0x26')](function(_0x2e03f0){logger[_0x66bb('0xf')](_0x66bb('0x27'),_0x2a140a);logger[_0x66bb('0x20')](_0x66bb('0x27'),_0x2a140a,JSON['stringify'](_0x2e03f0));_0x1feba3(_0x2e03f0);})[_0x66bb('0x17')](function(_0x34e146){logger['error'](_0x66bb('0x27'),_0x34e146[_0x66bb('0x15')],_0x2a140a);_0x5c434e(_this[_0x66bb('0x13')](0x1f4,_0x34e146['message']));});});};
\ No newline at end of file
index b47eb42..0a2f74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2586=['./openchannelInteraction.events','save','remove','update','removeListener','register','length','openchannelInteraction:'];(function(_0x575d09,_0x52162d){var _0xf31b8=function(_0x7415a7){while(--_0x7415a7){_0x575d09['push'](_0x575d09['shift']());}};_0xf31b8(++_0x52162d);}(_0x2586,0x178));var _0x6258=function(_0x58e507,_0xcdb376){_0x58e507=_0x58e507-0x0;var _0x1d4f34=_0x2586[_0x58e507];return _0x1d4f34;};'use strict';var OpenchannelInteractionEvents=require(_0x6258('0x0'));var events=[_0x6258('0x1'),_0x6258('0x2'),_0x6258('0x3')];function createListener(_0x53ede2,_0x21c327){return function(_0x96f779){_0x21c327['emit'](_0x53ede2,_0x96f779);};}function removeListener(_0x8fb6e3,_0x1d41d5){return function(){OpenchannelInteractionEvents[_0x6258('0x4')](_0x8fb6e3,_0x1d41d5);};}exports[_0x6258('0x5')]=function(_0x349b67){for(var _0x41627d=0x0,_0x1dc57b=events[_0x6258('0x6')];_0x41627d<_0x1dc57b;_0x41627d++){var _0x2de134=events[_0x41627d];var _0x43f15e=createListener(_0x6258('0x7')+_0x2de134,_0x349b67);OpenchannelInteractionEvents['on'](_0x2de134,_0x43f15e);}};
\ No newline at end of file
+var _0xc16c=['remove','removeListener','register','length','./openchannelInteraction.events','save'];(function(_0x2910fa,_0x1552d7){var _0x17181b=function(_0x1b6122){while(--_0x1b6122){_0x2910fa['push'](_0x2910fa['shift']());}};_0x17181b(++_0x1552d7);}(_0xc16c,0xa6));var _0xcc16=function(_0xce6e82,_0x24e177){_0xce6e82=_0xce6e82-0x0;var _0x2ba1f7=_0xc16c[_0xce6e82];return _0x2ba1f7;};'use strict';var OpenchannelInteractionEvents=require(_0xcc16('0x0'));var events=[_0xcc16('0x1'),_0xcc16('0x2'),'update'];function createListener(_0x361ae4,_0x2d0902){return function(_0x4bfb5a){_0x2d0902['emit'](_0x361ae4,_0x4bfb5a);};}function removeListener(_0x17e2df,_0x45f16b){return function(){OpenchannelInteractionEvents[_0xcc16('0x3')](_0x17e2df,_0x45f16b);};}exports[_0xcc16('0x4')]=function(_0x353585){for(var _0xb810a4=0x0,_0x3cf088=events[_0xcc16('0x5')];_0xb810a4<_0x3cf088;_0xb810a4++){var _0x430d9c=events[_0xb810a4];var _0x308e5f=createListener('openchannelInteraction:'+_0x430d9c,_0x353585);OpenchannelInteractionEvents['on'](_0x430d9c,_0x308e5f);}};
\ No newline at end of file
index 69400d3..977ec85 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','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports'];(function(_0x1dfd43,_0xf2cfd6){var _0x4c80f7=function(_0x54f6b9){while(--_0x54f6b9){_0x1dfd43['push'](_0x1dfd43['shift']());}};_0x4c80f7(++_0xf2cfd6);}(_0xedd9,0xfc));var _0x9edd=function(_0x48f583,_0xfd71d9){_0x48f583=_0x48f583-0x0;var _0x2306c3=_0xedd9[_0x48f583];return _0x2306c3;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['show']);router[_0x9edd('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9edd('0x10')](_0x9edd('0x11'),'openchannelmessage:create'),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')](_0x9edd('0x15'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x16')]);router[_0x9edd('0x13')](_0x9edd('0x17'),auth['isAuthenticated'](),controller[_0x9edd('0x18')]);router[_0x9edd('0x19')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x1a')]);module[_0x9edd('0x1b')]=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x4aaff3,_0x18b012){var _0x3a20f3=function(_0x550df8){while(--_0x550df8){_0x4aaff3['push'](_0x4aaff3['shift']());}};_0x3a20f3(++_0x18b012);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x51cc1d,_0xaa88ae){_0x51cc1d=_0x51cc1d-0x0;var _0x2eb9f2=_0xcb91[_0x51cc1d];return _0x2eb9f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index 764a9fe..559c6dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa693=['BOOLEAN','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x4e6834,_0x3adc17){var _0x42e4fd=function(_0x131125){while(--_0x131125){_0x4e6834['push'](_0x4e6834['shift']());}};_0x42e4fd(++_0x3adc17);}(_0xa693,0xf1));var _0x3a69=function(_0x29dda1,_0x508e13){_0x29dda1=_0x29dda1-0x0;var _0x21b0ef=_0xa693[_0x29dda1];return _0x21b0ef;};'use strict';var Sequelize=require(_0x3a69('0x0'));module[_0x3a69('0x1')]={'body':{'type':Sequelize[_0x3a69('0x2')](_0x3a69('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3a69('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x3a69('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x3a69('0x5')]},'providerName':{'type':Sequelize[_0x3a69('0x6')]},'providerResponse':{'type':Sequelize[_0x3a69('0x2')]}};
\ No newline at end of file
+var _0x1bd1=['BOOLEAN','DATE','STRING','sequelize','exports','TEXT'];(function(_0x5da388,_0x2841af){var _0x57bc7a=function(_0x48820e){while(--_0x48820e){_0x5da388['push'](_0x5da388['shift']());}};_0x57bc7a(++_0x2841af);}(_0x1bd1,0x123));var _0x11bd=function(_0x2ef529,_0x3fd12e){_0x2ef529=_0x2ef529-0x0;var _0x119dde=_0x1bd1[_0x2ef529];return _0x119dde;};'use strict';var Sequelize=require(_0x11bd('0x0'));module[_0x11bd('0x1')]={'body':{'type':Sequelize[_0x11bd('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x11bd('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x11bd('0x4')]},'providerName':{'type':Sequelize[_0x11bd('0x5')]},'providerResponse':{'type':Sequelize[_0x11bd('0x2')]}};
\ No newline at end of file
index 5756732..6d6148f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb12a=['model','keys','query','filters','intersection','attributes','fields','length','order','sort','pick','merge','VIRTUAL','filter','include','findAll','rows','show','params','includeAll','options','create','body','update','find','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','OpenchannelInteraction','OpenchannelInteractionId','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','contact','email','internal','agent','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','reject','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','Sequelize','fullname','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','defaults','redis','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','save','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','type','key'];(function(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0xb12a,0xbd));var _0xab12=function(_0x5684b1,_0xe23834){_0x5684b1=_0x5684b1-0x0;var _0x12d81a=_0xb12a[_0x5684b1];return _0x12d81a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xab12('0x0'));var zipdir=require(_0xab12('0x1'));var jsonpatch=require(_0xab12('0x2'));var rp=require(_0xab12('0x3'));var moment=require(_0xab12('0x4'));var BPromise=require(_0xab12('0x5'));var Mustache=require('mustache');var util=require(_0xab12('0x6'));var path=require('path');var sox=require(_0xab12('0x7'));var csv=require(_0xab12('0x8'));var ejs=require(_0xab12('0x9'));var fs=require('fs');var fs_extra=require(_0xab12('0xa'));var _=require('lodash');var squel=require(_0xab12('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab12('0xc'));var toCsv=require(_0xab12('0x8'));var querystring=require(_0xab12('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xab12('0xe'));var qs=require(_0xab12('0xf'));var as=require(_0xab12('0x10'));var hardwareService=require(_0xab12('0x11'));var logger=require(_0xab12('0x12'))(_0xab12('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xab12('0x14'))['db'];config['redis']=_[_0xab12('0x15')](config[_0xab12('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xab12('0x17'))(new Redis(config['redis']));require(_0xab12('0x18'))[_0xab12('0x19')](socket);var jayson=require(_0xab12('0x1a'));var client=jayson[_0xab12('0x1b')][_0xab12('0x1c')]({'port':0x232c});var client9002=jayson[_0xab12('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a081b,_0x1baa21,_0x3246f5,_0x2044dd){return new BPromise(function(_0x409eb3,_0x51e412){var _0xb7c570=_0x2044dd||client;return _0xb7c570[_0xab12('0x1d')](_0x5a081b,_0x3246f5)[_0xab12('0x1e')](function(_0x2eb43){logger[_0xab12('0x1f')]('OpenchannelMessage,\x20%s,\x20%s',_0x1baa21,_0xab12('0x20'));logger['debug'](_0xab12('0x21'),_0x1baa21,_0xab12('0x20'),JSON[_0xab12('0x22')](_0x2eb43));if(_0x2eb43['error']){if(_0x2eb43[_0xab12('0x23')]['code']===0x1f4){logger[_0xab12('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x1baa21,_0x2eb43['error']['message']);return _0x51e412(_0x2eb43[_0xab12('0x23')]['message']);}logger[_0xab12('0x23')](_0xab12('0x24'),_0x1baa21,_0x2eb43[_0xab12('0x23')][_0xab12('0x25')]);return _0x409eb3(_0x2eb43[_0xab12('0x23')][_0xab12('0x25')]);}else{logger[_0xab12('0x1f')](_0xab12('0x24'),_0x1baa21,_0xab12('0x20'));_0x409eb3(_0x2eb43['result']['message']);}})[_0xab12('0x26')](function(_0x50f3af){logger[_0xab12('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x1baa21,_0x50f3af);_0x51e412(_0x50f3af);});});}function respondWithStatusCode(_0x411c32,_0x1337cb){_0x1337cb=_0x1337cb||0xcc;return function(_0x77b371){if(_0x77b371){return _0x411c32[_0xab12('0x27')](_0x1337cb);}return _0x411c32[_0xab12('0x28')](_0x1337cb)[_0xab12('0x29')]();};}function respondWithResult(_0x4fdd21,_0x37a642){_0x37a642=_0x37a642||0xc8;return function(_0x2c83a1){if(_0x2c83a1){return _0x4fdd21['status'](_0x37a642)[_0xab12('0x2a')](_0x2c83a1);}};}function respondWithFilteredResult(_0xce2e5c,_0x10e7c5){return function(_0x1d3bc6){if(_0x1d3bc6){var _0x2034e0=typeof _0x10e7c5[_0xab12('0x2b')]===_0xab12('0x2c')&&typeof _0x10e7c5[_0xab12('0x2d')]==='undefined';var _0x3ca354=_0x1d3bc6[_0xab12('0x2e')];var _0x4e54ca=_0x2034e0?0x0:_0x10e7c5['offset'];var _0x2bf051=_0x2034e0?_0x1d3bc6[_0xab12('0x2e')]:_0x10e7c5[_0xab12('0x2b')]+_0x10e7c5['limit'];var _0x43d7ef;if(_0x2bf051>=_0x3ca354){_0x2bf051=_0x3ca354;_0x43d7ef=0xc8;}else{_0x43d7ef=0xce;}_0xce2e5c[_0xab12('0x28')](_0x43d7ef);return _0xce2e5c[_0xab12('0x2f')]('Content-Range',_0x4e54ca+'-'+_0x2bf051+'/'+_0x3ca354)[_0xab12('0x2a')](_0x1d3bc6);}return null;};}function patchUpdates(_0x161311){return function(_0x5ec43f){try{jsonpatch['apply'](_0x5ec43f,_0x161311,!![]);}catch(_0x34e93c){return BPromise['reject'](_0x34e93c);}return _0x5ec43f[_0xab12('0x30')]();};}function saveUpdates(_0x569372,_0x1400ec){return function(_0x3a562d){if(_0x3a562d){return _0x3a562d['update'](_0x569372)[_0xab12('0x1e')](function(_0x3ff986){return _0x3ff986;});}return null;};}function removeEntity(_0x325c16,_0xa5234f){return function(_0x40526f){if(_0x40526f){return _0x40526f[_0xab12('0x31')]()[_0xab12('0x1e')](function(){_0x325c16[_0xab12('0x28')](0xcc)[_0xab12('0x29')]();});}};}function handleEntityNotFound(_0x139901,_0x45e55e){return function(_0x4777af){if(!_0x4777af){_0x139901[_0xab12('0x27')](0x194);}return _0x4777af;};}function handleError(_0x3f8368,_0x442ac7){_0x442ac7=_0x442ac7||0x1f4;return function(_0x32217c){logger['error'](_0x32217c[_0xab12('0x32')]);if(_0x32217c['name']){delete _0x32217c[_0xab12('0x33')];}_0x3f8368[_0xab12('0x28')](_0x442ac7)[_0xab12('0x34')](_0x32217c);};}exports[_0xab12('0x35')]=function(_0x5c3093,_0x502c1b){var _0x3c20ca={},_0x34e1c0={},_0x29b746={'count':0x0,'rows':[]};var _0x7e016c=_[_0xab12('0x36')](db[_0xab12('0x37')][_0xab12('0x38')],function(_0x1146e4){return{'name':_0x1146e4['fieldName'],'type':_0x1146e4[_0xab12('0x39')][_0xab12('0x3a')]};});_0x34e1c0[_0xab12('0x3b')]=_['map'](_0x7e016c,_0xab12('0x33'));_0x34e1c0['query']=_[_0xab12('0x3c')](_0x5c3093[_0xab12('0x3d')]);_0x34e1c0[_0xab12('0x3e')]=_[_0xab12('0x3f')](_0x34e1c0[_0xab12('0x3b')],_0x34e1c0['query']);_0x3c20ca[_0xab12('0x40')]=_[_0xab12('0x3f')](_0x34e1c0['model'],qs[_0xab12('0x41')](_0x5c3093[_0xab12('0x3d')]['fields']));_0x3c20ca[_0xab12('0x40')]=_0x3c20ca['attributes'][_0xab12('0x42')]?_0x3c20ca[_0xab12('0x40')]:_0x34e1c0[_0xab12('0x3b')];if(!_0x5c3093[_0xab12('0x3d')]['hasOwnProperty']('nolimit')){_0x3c20ca[_0xab12('0x2d')]=qs[_0xab12('0x2d')](_0x5c3093[_0xab12('0x3d')]['limit']);_0x3c20ca[_0xab12('0x2b')]=qs['offset'](_0x5c3093[_0xab12('0x3d')][_0xab12('0x2b')]);}_0x3c20ca[_0xab12('0x43')]=qs[_0xab12('0x44')](_0x5c3093[_0xab12('0x3d')][_0xab12('0x44')]);_0x3c20ca['where']=qs[_0xab12('0x3e')](_[_0xab12('0x45')](_0x5c3093['query'],_0x34e1c0[_0xab12('0x3e')]),_0x7e016c);if(_0x5c3093[_0xab12('0x3d')]['filter']){_0x3c20ca['where']=_[_0xab12('0x46')](_0x3c20ca['where'],{'$or':_['map'](_0x7e016c,function(_0x29bc98){if(_0x29bc98['type']!==_0xab12('0x47')){var _0x29406e={};_0x29406e[_0x29bc98[_0xab12('0x33')]]={'$like':'%'+_0x5c3093[_0xab12('0x3d')][_0xab12('0x48')]+'%'};return _0x29406e;}})});}_0x3c20ca=_['merge']({},_0x3c20ca,_0x5c3093['options']);var _0x5189ab={'where':_0x3c20ca['where']};return db[_0xab12('0x37')][_0xab12('0x2e')](_0x5189ab)['then'](function(_0x550cbe){_0x29b746[_0xab12('0x2e')]=_0x550cbe;if(_0x5c3093[_0xab12('0x3d')]['includeAll']){_0x3c20ca[_0xab12('0x49')]=[{'all':!![]}];}return db[_0xab12('0x37')][_0xab12('0x4a')](_0x3c20ca);})['then'](function(_0x392a60){_0x29b746[_0xab12('0x4b')]=_0x392a60;return _0x29b746;})['then'](respondWithFilteredResult(_0x502c1b,_0x3c20ca))[_0xab12('0x26')](handleError(_0x502c1b,null));};exports[_0xab12('0x4c')]=function(_0x57dd49,_0x3f2574){var _0x268bba={'raw':!![],'where':{'id':_0x57dd49[_0xab12('0x4d')]['id']}},_0x489327={};_0x489327[_0xab12('0x3b')]=_[_0xab12('0x3c')](db['OpenchannelMessage'][_0xab12('0x38')]);_0x489327['query']=_[_0xab12('0x3c')](_0x57dd49[_0xab12('0x3d')]);_0x489327[_0xab12('0x3e')]=_[_0xab12('0x3f')](_0x489327['model'],_0x489327[_0xab12('0x3d')]);_0x268bba[_0xab12('0x40')]=_[_0xab12('0x3f')](_0x489327[_0xab12('0x3b')],qs['fields'](_0x57dd49[_0xab12('0x3d')][_0xab12('0x41')]));_0x268bba[_0xab12('0x40')]=_0x268bba[_0xab12('0x40')][_0xab12('0x42')]?_0x268bba[_0xab12('0x40')]:_0x489327[_0xab12('0x3b')];if(_0x57dd49[_0xab12('0x3d')][_0xab12('0x4e')]){_0x268bba[_0xab12('0x49')]=[{'all':!![]}];}_0x268bba=_[_0xab12('0x46')]({},_0x268bba,_0x57dd49[_0xab12('0x4f')]);return db[_0xab12('0x37')]['find'](_0x268bba)[_0xab12('0x1e')](handleEntityNotFound(_0x3f2574,null))[_0xab12('0x1e')](respondWithResult(_0x3f2574,null))[_0xab12('0x26')](handleError(_0x3f2574,null));};exports[_0xab12('0x50')]=function(_0x272f44,_0x28e24f){return db['OpenchannelMessage']['create'](_0x272f44[_0xab12('0x51')],{})[_0xab12('0x1e')](respondWithResult(_0x28e24f,0xc9))[_0xab12('0x26')](handleError(_0x28e24f,null));};exports[_0xab12('0x52')]=function(_0x5127d7,_0x485362){if(_0x5127d7[_0xab12('0x51')]['id']){delete _0x5127d7['body']['id'];}return db['OpenchannelMessage'][_0xab12('0x53')]({'where':{'id':_0x5127d7[_0xab12('0x4d')]['id']}})['then'](handleEntityNotFound(_0x485362,null))[_0xab12('0x1e')](saveUpdates(_0x5127d7[_0xab12('0x51')],null))[_0xab12('0x1e')](respondWithResult(_0x485362,null))[_0xab12('0x26')](handleError(_0x485362,null));};exports['destroy']=function(_0x4251f5,_0x29ad68){return db[_0xab12('0x37')][_0xab12('0x53')]({'where':{'id':_0x4251f5['params']['id']}})[_0xab12('0x1e')](handleEntityNotFound(_0x29ad68,null))['then'](removeEntity(_0x29ad68,null))[_0xab12('0x26')](handleError(_0x29ad68,null));};exports[_0xab12('0x54')]=function(_0x435b09,_0x5a7f9f){return db['OpenchannelMessage']['describe']()[_0xab12('0x1e')](respondWithResult(_0x5a7f9f,null))[_0xab12('0x26')](handleError(_0x5a7f9f,null));};var interaction_log=require(_0xab12('0x12'))(_0xab12('0x55'));exports[_0xab12('0x56')]=function(_0x576bad,_0x5e9a22,_0x468b74){var _0x4041c4={'agent':{},'channel':'openchannel'};if(_0x576bad[_0xab12('0x51')]['id']){delete _0x576bad['body']['id'];}_0x576bad[_0xab12('0x51')][_0xab12('0x57')]=!![];_0x576bad[_0xab12('0x51')][_0xab12('0x58')]=moment()[_0xab12('0x59')](_0xab12('0x5a'));_0x576bad[_0xab12('0x51')][_0xab12('0x5b')]=_0x576bad[_0xab12('0x51')]['UserId']||_0x576bad[_0xab12('0x5c')]['id'];_0x4041c4['agent']['id']=_0x576bad[_0xab12('0x51')]['UserId'];return db[_0xab12('0x37')][_0xab12('0x53')]({'where':{'id':_0x576bad[_0xab12('0x4d')]['id'],'UserId':null}})[_0xab12('0x1e')](handleEntityNotFound(_0x5e9a22,null))[_0xab12('0x1e')](saveUpdates(_0x576bad[_0xab12('0x51')],null))['then'](function(_0x4ebd2c){if(_0x4ebd2c){_0x4041c4['message']=_0x4ebd2c['get']({'plain':!![]});return db[_0xab12('0x5d')][_0xab12('0x53')]({'where':{'id':_0x4ebd2c[_0xab12('0x5e')]}});}return null;})[_0xab12('0x1e')](handleEntityNotFound(_0x5e9a22,null))[_0xab12('0x1e')](function(_0x2eb5a0){if(_0x2eb5a0){return _0x2eb5a0['update']({'UserId':_0x576bad[_0xab12('0x51')][_0xab12('0x5b')],'read1stAt':_['isNil'](_0x2eb5a0['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xab12('0x1e')](function(_0x2ee0cc){if(_0x2ee0cc){_0x4041c4['interaction']=_0x2ee0cc[_0xab12('0x5f')]({'plain':!![]});interaction_log[_0xab12('0x1f')](_0xab12('0x60'),_0x576bad[_0xab12('0x5c')]['id'],_0x576bad['user']['name'],_0x576bad[_0xab12('0x5c')][_0xab12('0x61')],_0x4041c4[_0xab12('0x62')]['id'],_0x576bad[_0xab12('0x51')]?JSON[_0xab12('0x22')](_0x576bad[_0xab12('0x51')]):_0xab12('0x63'));return respondWithRpcPromise(_0xab12('0x64'),_0xab12('0x65'),_0x4041c4);}return null;})[_0xab12('0x1e')](function(_0x42da6d){var _0xb5b5a8=_0xab12('0x66')+_0x42da6d[_0xab12('0x25')]['ContactId'];return db[_0xab12('0x67')][_0xab12('0x3d')](_0xb5b5a8,{'type':db['Sequelize'][_0xab12('0x68')][_0xab12('0x69')],'raw':!![]})[_0xab12('0x1e')](function(_0x9b380e){return _0x9b380e;});})[_0xab12('0x1e')](function(_0x2af1d7){if(_0x2af1d7){_0x4041c4[_0xab12('0x25')][_0xab12('0x6a')]=_0x2af1d7[0x0];if(!_0x576bad[_0xab12('0x51')][_0xab12('0x5b')])return;return db['User']['find']({'where':{'id':_0x576bad[_0xab12('0x51')]['UserId'],'role':'agent'},'attributes':['id',_0xab12('0x33'),'fullname',_0xab12('0x6b'),_0xab12('0x6c')],'raw':!![]});}return null;})[_0xab12('0x1e')](function(_0x6be0d4){if(!_0x6be0d4)return null;_0x4041c4[_0xab12('0x25')][_0xab12('0x6d')]=_0x6be0d4;return _0x4041c4;})['then'](function(_0x4cb6ad){if(_0x4cb6ad){if(_0x576bad['body'][_0xab12('0x6e')]){_0x4041c4[_0xab12('0x25')][_0xab12('0x6f')]=util[_0xab12('0x59')](_0xab12('0x70'),_0x576bad[_0xab12('0x5c')][_0xab12('0x33')]);_0x4041c4[_0xab12('0x25')]['channel']=_0x4041c4[_0xab12('0x71')];_0x4041c4[_0xab12('0x25')][_0xab12('0x72')]=_0x4041c4[_0xab12('0x71')];_0x4041c4[_0xab12('0x25')][_0xab12('0x73')]='accept';return respondWithRpcPromise(_0xab12('0x74'),_0xab12('0x74'),{'event':'acceptmessage','message':_0x4041c4[_0xab12('0x25')]},client9002)['then'](function(){return _0x4041c4;});}return _0x4041c4;}return null;})[_0xab12('0x1e')](respondWithResult(_0x5e9a22,null))['catch'](handleError(_0x5e9a22,null));};var interaction_log=require(_0xab12('0x12'))('openchannel-interactions');exports[_0xab12('0x75')]=function(_0x16ea0a,_0x584694,_0x2b586e){var _0x57a436={'agent':{},'channel':_0xab12('0x76')};if(_0x16ea0a[_0xab12('0x51')]['id']){delete _0x16ea0a['body']['id'];}_0x16ea0a['body']['UserId']=_0x16ea0a[_0xab12('0x51')][_0xab12('0x5b')]||_0x16ea0a[_0xab12('0x5c')]['id'];_0x57a436[_0xab12('0x6d')]['id']=_0x16ea0a[_0xab12('0x51')][_0xab12('0x5b')];return db[_0xab12('0x37')]['find']({'where':{'id':_0x16ea0a[_0xab12('0x4d')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x584694,null))[_0xab12('0x1e')](function(_0x50d86f){if(_0x50d86f){_0x57a436[_0xab12('0x25')]=_0x50d86f['get']({'plain':!![]});return db[_0xab12('0x5d')]['find']({'where':{'id':_0x50d86f[_0xab12('0x5e')]}});}return null;})[_0xab12('0x1e')](handleEntityNotFound(_0x584694,null))['then'](function(_0x4a8803){if(_0x4a8803){_0x57a436[_0xab12('0x62')]=_0x4a8803[_0xab12('0x5f')]({'plain':!![]});interaction_log[_0xab12('0x1f')](_0xab12('0x77'),_0x16ea0a[_0xab12('0x5c')]['id'],_0x16ea0a[_0xab12('0x5c')][_0xab12('0x33')],_0x16ea0a[_0xab12('0x5c')][_0xab12('0x61')],_0x57a436[_0xab12('0x62')]['id'],_0x16ea0a['body']?JSON[_0xab12('0x22')](_0x16ea0a[_0xab12('0x51')]):_0xab12('0x63'));return respondWithRpcPromise('RejectMessage',_0xab12('0x78'),_0x57a436);}return null;})[_0xab12('0x1e')](function(_0x1fc329){var _0x175d8f=_0xab12('0x66')+_0x1fc329[_0xab12('0x25')][_0xab12('0x79')];return db[_0xab12('0x67')][_0xab12('0x3d')](_0x175d8f,{'type':db[_0xab12('0x7a')][_0xab12('0x68')][_0xab12('0x69')],'raw':!![]})[_0xab12('0x1e')](function(_0x1ae72e){return _0x1ae72e;});})['then'](function(_0xc5e95){if(_0xc5e95){_0x57a436[_0xab12('0x25')][_0xab12('0x6a')]=_0xc5e95[0x0];if(!_0x16ea0a[_0xab12('0x51')][_0xab12('0x5b')])return;return db['User'][_0xab12('0x53')]({'where':{'id':_0x16ea0a['body'][_0xab12('0x5b')],'role':_0xab12('0x6d')},'attributes':['id',_0xab12('0x33'),_0xab12('0x7b'),_0xab12('0x6b'),_0xab12('0x6c')],'raw':!![]});}return null;})[_0xab12('0x1e')](function(_0x58d7c9){if(!_0x58d7c9)return null;_0x57a436[_0xab12('0x25')]['agent']=_0x58d7c9;return _0x57a436;})[_0xab12('0x1e')](function(_0x44d6b4){if(_0x44d6b4){_0x44d6b4[_0xab12('0x25')][_0xab12('0x6f')]=util['format'](_0xab12('0x70'),_0x16ea0a[_0xab12('0x5c')]['name']);_0x44d6b4[_0xab12('0x25')][_0xab12('0x71')]=_0x57a436[_0xab12('0x71')];_0x44d6b4[_0xab12('0x25')][_0xab12('0x72')]=_0x57a436['channel'];_0x44d6b4[_0xab12('0x25')][_0xab12('0x73')]='reject';respondWithRpcPromise(_0xab12('0x74'),'EventManager',{'event':'rejectmessage','message':_0x44d6b4[_0xab12('0x25')]},client9002);return _0x57a436;}return null;})[_0xab12('0x1e')](respondWithResult(_0x584694,null))[_0xab12('0x26')](handleError(_0x584694,null));};
\ No newline at end of file
+var _0xbf07=['crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','OpenchannelMessage','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','where','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','describe','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','role','RejectMessage','rejectMessage','ContactId','User','event','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','lodash'];(function(_0x1f8155,_0x38250c){var _0x3e187e=function(_0x2b29e4){while(--_0x2b29e4){_0x1f8155['push'](_0x1f8155['shift']());}};_0x3e187e(++_0x38250c);}(_0xbf07,0x77));var _0x7bf0=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0xbf07[_0x2afbb0];return _0x411ff2;};'use strict';var emlformat=require(_0x7bf0('0x0'));var rimraf=require(_0x7bf0('0x1'));var zipdir=require(_0x7bf0('0x2'));var jsonpatch=require(_0x7bf0('0x3'));var rp=require('request-promise');var moment=require(_0x7bf0('0x4'));var BPromise=require(_0x7bf0('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7bf0('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7bf0('0x7'));var squel=require('squel');var crypto=require(_0x7bf0('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x7bf0('0x9'));var toCsv=require(_0x7bf0('0xa'));var querystring=require(_0x7bf0('0xb'));var Papa=require(_0x7bf0('0xc'));var Redis=require(_0x7bf0('0xd'));var authService=require(_0x7bf0('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7bf0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7bf0('0x10'))(_0x7bf0('0x11'));var utils=require(_0x7bf0('0x12'));var config=require(_0x7bf0('0x13'));var licenseUtil=require(_0x7bf0('0x14'));var db=require(_0x7bf0('0x15'))['db'];config[_0x7bf0('0x16')]=_[_0x7bf0('0x17')](config[_0x7bf0('0x16')],{'host':_0x7bf0('0x18'),'port':0x18eb});var socket=require(_0x7bf0('0x19'))(new Redis(config[_0x7bf0('0x16')]));require(_0x7bf0('0x1a'))[_0x7bf0('0x1b')](socket);var jayson=require(_0x7bf0('0x1c'));var client=jayson[_0x7bf0('0x1d')][_0x7bf0('0x1e')]({'port':0x232c});var client9002=jayson[_0x7bf0('0x1d')][_0x7bf0('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x182df9,_0x4f551c,_0x319809,_0x26e6b6){return new BPromise(function(_0x187489,_0x1c2bbe){var _0x13c9bb=_0x26e6b6||client;return _0x13c9bb['request'](_0x182df9,_0x319809)[_0x7bf0('0x1f')](function(_0x3a1c6e){logger[_0x7bf0('0x20')](_0x7bf0('0x21'),_0x4f551c,_0x7bf0('0x22'));logger[_0x7bf0('0x23')](_0x7bf0('0x24'),_0x4f551c,_0x7bf0('0x22'),JSON[_0x7bf0('0x25')](_0x3a1c6e));if(_0x3a1c6e[_0x7bf0('0x26')]){if(_0x3a1c6e['error'][_0x7bf0('0x27')]===0x1f4){logger[_0x7bf0('0x26')](_0x7bf0('0x21'),_0x4f551c,_0x3a1c6e[_0x7bf0('0x26')][_0x7bf0('0x28')]);return _0x1c2bbe(_0x3a1c6e[_0x7bf0('0x26')]['message']);}logger['error'](_0x7bf0('0x21'),_0x4f551c,_0x3a1c6e[_0x7bf0('0x26')]['message']);return _0x187489(_0x3a1c6e[_0x7bf0('0x26')]['message']);}else{logger[_0x7bf0('0x20')](_0x7bf0('0x21'),_0x4f551c,_0x7bf0('0x22'));_0x187489(_0x3a1c6e[_0x7bf0('0x29')][_0x7bf0('0x28')]);}})[_0x7bf0('0x2a')](function(_0x2e4994){logger[_0x7bf0('0x26')](_0x7bf0('0x21'),_0x4f551c,_0x2e4994);_0x1c2bbe(_0x2e4994);});});}function respondWithStatusCode(_0x336572,_0x1e0f7f){_0x1e0f7f=_0x1e0f7f||0xcc;return function(_0x573ab4){if(_0x573ab4){return _0x336572[_0x7bf0('0x2b')](_0x1e0f7f);}return _0x336572[_0x7bf0('0x2c')](_0x1e0f7f)[_0x7bf0('0x2d')]();};}function respondWithResult(_0x368f9f,_0x2ba0a3){_0x2ba0a3=_0x2ba0a3||0xc8;return function(_0x59cb00){if(_0x59cb00){return _0x368f9f[_0x7bf0('0x2c')](_0x2ba0a3)[_0x7bf0('0x2e')](_0x59cb00);}};}function respondWithFilteredResult(_0x4d1b7a,_0x145f54){return function(_0x540e84){if(_0x540e84){var _0x1393f7=typeof _0x145f54[_0x7bf0('0x2f')]===_0x7bf0('0x30')&&typeof _0x145f54['limit']===_0x7bf0('0x30');var _0x37655b=_0x540e84[_0x7bf0('0x31')];var _0x5ad9c9=_0x1393f7?0x0:_0x145f54[_0x7bf0('0x2f')];var _0x318c1f=_0x1393f7?_0x540e84[_0x7bf0('0x31')]:_0x145f54[_0x7bf0('0x2f')]+_0x145f54['limit'];var _0x37942;if(_0x318c1f>=_0x37655b){_0x318c1f=_0x37655b;_0x37942=0xc8;}else{_0x37942=0xce;}_0x4d1b7a[_0x7bf0('0x2c')](_0x37942);return _0x4d1b7a[_0x7bf0('0x32')](_0x7bf0('0x33'),_0x5ad9c9+'-'+_0x318c1f+'/'+_0x37655b)[_0x7bf0('0x2e')](_0x540e84);}return null;};}function patchUpdates(_0x4eac51){return function(_0x1c9910){try{jsonpatch[_0x7bf0('0x34')](_0x1c9910,_0x4eac51,!![]);}catch(_0x5f39dc){return BPromise[_0x7bf0('0x35')](_0x5f39dc);}return _0x1c9910[_0x7bf0('0x36')]();};}function saveUpdates(_0x5ce8f4,_0x4227ec){return function(_0x29f774){if(_0x29f774){return _0x29f774[_0x7bf0('0x37')](_0x5ce8f4)[_0x7bf0('0x1f')](function(_0x1ee014){return _0x1ee014;});}return null;};}function removeEntity(_0x206312,_0x13dc1b){return function(_0x36b25f){if(_0x36b25f){return _0x36b25f[_0x7bf0('0x38')]()[_0x7bf0('0x1f')](function(){_0x206312[_0x7bf0('0x2c')](0xcc)[_0x7bf0('0x2d')]();});}};}function handleEntityNotFound(_0xbf6610,_0x19848f){return function(_0xebe907){if(!_0xebe907){_0xbf6610['sendStatus'](0x194);}return _0xebe907;};}function handleError(_0x2e3852,_0x857ddc){_0x857ddc=_0x857ddc||0x1f4;return function(_0x351336){logger[_0x7bf0('0x26')](_0x351336[_0x7bf0('0x39')]);if(_0x351336['name']){delete _0x351336[_0x7bf0('0x3a')];}_0x2e3852[_0x7bf0('0x2c')](_0x857ddc)['send'](_0x351336);};}exports[_0x7bf0('0x3b')]=function(_0x4d8197,_0x426466){var _0x3e6ed3={},_0x2d7e2c={},_0x32a185={'count':0x0,'rows':[]};var _0x172d35=_[_0x7bf0('0x3c')](db[_0x7bf0('0x3d')]['rawAttributes'],function(_0x519cd6){return{'name':_0x519cd6[_0x7bf0('0x3e')],'type':_0x519cd6[_0x7bf0('0x3f')][_0x7bf0('0x40')]};});_0x2d7e2c['model']=_[_0x7bf0('0x3c')](_0x172d35,_0x7bf0('0x3a'));_0x2d7e2c[_0x7bf0('0x41')]=_[_0x7bf0('0x42')](_0x4d8197[_0x7bf0('0x41')]);_0x2d7e2c[_0x7bf0('0x43')]=_[_0x7bf0('0x44')](_0x2d7e2c['model'],_0x2d7e2c[_0x7bf0('0x41')]);_0x3e6ed3['attributes']=_[_0x7bf0('0x44')](_0x2d7e2c[_0x7bf0('0x45')],qs[_0x7bf0('0x46')](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x46')]));_0x3e6ed3[_0x7bf0('0x47')]=_0x3e6ed3[_0x7bf0('0x47')][_0x7bf0('0x48')]?_0x3e6ed3[_0x7bf0('0x47')]:_0x2d7e2c[_0x7bf0('0x45')];if(!_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x49')]('nolimit')){_0x3e6ed3['limit']=qs[_0x7bf0('0x4a')](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4a')]);_0x3e6ed3[_0x7bf0('0x2f')]=qs['offset'](_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x2f')]);}_0x3e6ed3[_0x7bf0('0x4b')]=qs['sort'](_0x4d8197['query']['sort']);_0x3e6ed3[_0x7bf0('0x4c')]=qs[_0x7bf0('0x43')](_['pick'](_0x4d8197[_0x7bf0('0x41')],_0x2d7e2c[_0x7bf0('0x43')]),_0x172d35);if(_0x4d8197[_0x7bf0('0x41')]['filter']){_0x3e6ed3['where']=_['merge'](_0x3e6ed3['where'],{'$or':_[_0x7bf0('0x3c')](_0x172d35,function(_0x4da701){if(_0x4da701['type']!=='VIRTUAL'){var _0x25e0d0={};_0x25e0d0[_0x4da701[_0x7bf0('0x3a')]]={'$like':'%'+_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4d')]+'%'};return _0x25e0d0;}})});}_0x3e6ed3=_['merge']({},_0x3e6ed3,_0x4d8197[_0x7bf0('0x4e')]);var _0x465b07={'where':_0x3e6ed3[_0x7bf0('0x4c')]};return db['OpenchannelMessage']['count'](_0x465b07)[_0x7bf0('0x1f')](function(_0x3bb7a7){_0x32a185[_0x7bf0('0x31')]=_0x3bb7a7;if(_0x4d8197[_0x7bf0('0x41')][_0x7bf0('0x4f')]){_0x3e6ed3[_0x7bf0('0x50')]=[{'all':!![]}];}return db[_0x7bf0('0x3d')][_0x7bf0('0x51')](_0x3e6ed3);})[_0x7bf0('0x1f')](function(_0x371e0a){_0x32a185[_0x7bf0('0x52')]=_0x371e0a;return _0x32a185;})[_0x7bf0('0x1f')](respondWithFilteredResult(_0x426466,_0x3e6ed3))[_0x7bf0('0x2a')](handleError(_0x426466,null));};exports[_0x7bf0('0x53')]=function(_0x5dfde8,_0x5c2a84){var _0x5c4cb2={'raw':!![],'where':{'id':_0x5dfde8[_0x7bf0('0x54')]['id']}},_0x24dfea={};_0x24dfea[_0x7bf0('0x45')]=_[_0x7bf0('0x42')](db[_0x7bf0('0x3d')][_0x7bf0('0x55')]);_0x24dfea[_0x7bf0('0x41')]=_[_0x7bf0('0x42')](_0x5dfde8[_0x7bf0('0x41')]);_0x24dfea[_0x7bf0('0x43')]=_['intersection'](_0x24dfea['model'],_0x24dfea['query']);_0x5c4cb2[_0x7bf0('0x47')]=_[_0x7bf0('0x44')](_0x24dfea[_0x7bf0('0x45')],qs[_0x7bf0('0x46')](_0x5dfde8[_0x7bf0('0x41')][_0x7bf0('0x46')]));_0x5c4cb2[_0x7bf0('0x47')]=_0x5c4cb2[_0x7bf0('0x47')]['length']?_0x5c4cb2['attributes']:_0x24dfea[_0x7bf0('0x45')];if(_0x5dfde8[_0x7bf0('0x41')]['includeAll']){_0x5c4cb2[_0x7bf0('0x50')]=[{'all':!![]}];}_0x5c4cb2=_['merge']({},_0x5c4cb2,_0x5dfde8[_0x7bf0('0x4e')]);return db[_0x7bf0('0x3d')][_0x7bf0('0x56')](_0x5c4cb2)[_0x7bf0('0x1f')](handleEntityNotFound(_0x5c2a84,null))['then'](respondWithResult(_0x5c2a84,null))[_0x7bf0('0x2a')](handleError(_0x5c2a84,null));};exports['create']=function(_0x452540,_0x294b9e){return db['OpenchannelMessage'][_0x7bf0('0x57')](_0x452540['body'],{})[_0x7bf0('0x1f')](respondWithResult(_0x294b9e,0xc9))[_0x7bf0('0x2a')](handleError(_0x294b9e,null));};exports[_0x7bf0('0x37')]=function(_0x4f0967,_0x842e1c){if(_0x4f0967[_0x7bf0('0x58')]['id']){delete _0x4f0967['body']['id'];}return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x4f0967[_0x7bf0('0x54')]['id']}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x842e1c,null))[_0x7bf0('0x1f')](saveUpdates(_0x4f0967[_0x7bf0('0x58')],null))[_0x7bf0('0x1f')](respondWithResult(_0x842e1c,null))[_0x7bf0('0x2a')](handleError(_0x842e1c,null));};exports['destroy']=function(_0x3affd0,_0x34a93f){return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x3affd0[_0x7bf0('0x54')]['id']}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x34a93f,null))[_0x7bf0('0x1f')](removeEntity(_0x34a93f,null))['catch'](handleError(_0x34a93f,null));};exports[_0x7bf0('0x59')]=function(_0x57f1d7,_0x166c91){return db[_0x7bf0('0x3d')][_0x7bf0('0x59')]()[_0x7bf0('0x1f')](respondWithResult(_0x166c91,null))['catch'](handleError(_0x166c91,null));};var interaction_log=require(_0x7bf0('0x10'))('openchannel-interactions');exports[_0x7bf0('0x5a')]=function(_0x59fb61,_0x37a8c8,_0x4bafec){var _0x4de958={'agent':{},'channel':_0x7bf0('0x5b')};if(_0x59fb61[_0x7bf0('0x58')]['id']){delete _0x59fb61[_0x7bf0('0x58')]['id'];}_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x5c')]=!![];_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x5d')]=moment()[_0x7bf0('0x5e')](_0x7bf0('0x5f'));_0x59fb61[_0x7bf0('0x58')]['UserId']=_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')]||_0x59fb61[_0x7bf0('0x61')]['id'];_0x4de958[_0x7bf0('0x62')]['id']=_0x59fb61['body'][_0x7bf0('0x60')];return db[_0x7bf0('0x3d')][_0x7bf0('0x56')]({'where':{'id':_0x59fb61[_0x7bf0('0x54')]['id'],'UserId':null}})[_0x7bf0('0x1f')](handleEntityNotFound(_0x37a8c8,null))['then'](saveUpdates(_0x59fb61[_0x7bf0('0x58')],null))[_0x7bf0('0x1f')](function(_0x2ecf4a){if(_0x2ecf4a){_0x4de958[_0x7bf0('0x28')]=_0x2ecf4a[_0x7bf0('0x63')]({'plain':!![]});return db[_0x7bf0('0x64')][_0x7bf0('0x56')]({'where':{'id':_0x2ecf4a['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x37a8c8,null))[_0x7bf0('0x1f')](function(_0x57a842){if(_0x57a842){return _0x57a842[_0x7bf0('0x37')]({'UserId':_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')],'read1stAt':_['isNil'](_0x57a842[_0x7bf0('0x65')])?moment()[_0x7bf0('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7bf0('0x1f')](function(_0x190a23){if(_0x190a23){_0x4de958[_0x7bf0('0x66')]=_0x190a23[_0x7bf0('0x63')]({'plain':!![]});interaction_log[_0x7bf0('0x20')](_0x7bf0('0x67'),_0x59fb61[_0x7bf0('0x61')]['id'],_0x59fb61[_0x7bf0('0x61')][_0x7bf0('0x3a')],_0x59fb61[_0x7bf0('0x61')]['role'],_0x4de958[_0x7bf0('0x66')]['id'],_0x59fb61[_0x7bf0('0x58')]?JSON[_0x7bf0('0x25')](_0x59fb61[_0x7bf0('0x58')]):_0x7bf0('0x68'));return respondWithRpcPromise(_0x7bf0('0x69'),'acceptMessage',_0x4de958);}return null;})[_0x7bf0('0x1f')](function(_0x55273e){var _0xba54f8=_0x7bf0('0x6a')+_0x55273e['message']['ContactId'];return db[_0x7bf0('0x6b')][_0x7bf0('0x41')](_0xba54f8,{'type':db[_0x7bf0('0x6c')]['QueryTypes'][_0x7bf0('0x6d')],'raw':!![]})[_0x7bf0('0x1f')](function(_0x494e33){return _0x494e33;});})[_0x7bf0('0x1f')](function(_0x58b003){if(_0x58b003){_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x6e')]=_0x58b003[0x0];if(!_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')])return;return db['User'][_0x7bf0('0x56')]({'where':{'id':_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x60')],'role':_0x7bf0('0x62')},'attributes':['id',_0x7bf0('0x3a'),_0x7bf0('0x6f'),_0x7bf0('0x70'),_0x7bf0('0x71')],'raw':!![]});}return null;})[_0x7bf0('0x1f')](function(_0x44fe2f){if(!_0x44fe2f)return null;_0x4de958['message']['agent']=_0x44fe2f;return _0x4de958;})['then'](function(_0x708e7c){if(_0x708e7c){if(_0x59fb61[_0x7bf0('0x58')][_0x7bf0('0x72')]){_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x73')]=util[_0x7bf0('0x5e')](_0x7bf0('0x74'),_0x59fb61[_0x7bf0('0x61')][_0x7bf0('0x3a')]);_0x4de958[_0x7bf0('0x28')][_0x7bf0('0x75')]=_0x4de958[_0x7bf0('0x75')];_0x4de958['message'][_0x7bf0('0x76')]=_0x4de958['channel'];_0x4de958[_0x7bf0('0x28')]['event']='accept';return respondWithRpcPromise(_0x7bf0('0x77'),_0x7bf0('0x77'),{'event':_0x7bf0('0x78'),'message':_0x4de958[_0x7bf0('0x28')]},client9002)[_0x7bf0('0x1f')](function(){return _0x4de958;});}return _0x4de958;}return null;})[_0x7bf0('0x1f')](respondWithResult(_0x37a8c8,null))['catch'](handleError(_0x37a8c8,null));};var interaction_log=require(_0x7bf0('0x10'))('openchannel-interactions');exports['reject']=function(_0x5c1117,_0x28f7cb,_0x44ff1f){var _0x311b24={'agent':{},'channel':_0x7bf0('0x5b')};if(_0x5c1117['body']['id']){delete _0x5c1117['body']['id'];}_0x5c1117['body']['UserId']=_0x5c1117[_0x7bf0('0x58')]['UserId']||_0x5c1117[_0x7bf0('0x61')]['id'];_0x311b24[_0x7bf0('0x62')]['id']=_0x5c1117[_0x7bf0('0x58')][_0x7bf0('0x60')];return db['OpenchannelMessage'][_0x7bf0('0x56')]({'where':{'id':_0x5c1117['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x28f7cb,null))[_0x7bf0('0x1f')](function(_0x2bcf9e){if(_0x2bcf9e){_0x311b24[_0x7bf0('0x28')]=_0x2bcf9e['get']({'plain':!![]});return db[_0x7bf0('0x64')]['find']({'where':{'id':_0x2bcf9e['OpenchannelInteractionId']}});}return null;})[_0x7bf0('0x1f')](handleEntityNotFound(_0x28f7cb,null))[_0x7bf0('0x1f')](function(_0x1591dd){if(_0x1591dd){_0x311b24['interaction']=_0x1591dd['get']({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5c1117[_0x7bf0('0x61')]['id'],_0x5c1117['user'][_0x7bf0('0x3a')],_0x5c1117[_0x7bf0('0x61')][_0x7bf0('0x79')],_0x311b24[_0x7bf0('0x66')]['id'],_0x5c1117['body']?JSON[_0x7bf0('0x25')](_0x5c1117[_0x7bf0('0x58')]):_0x7bf0('0x68'));return respondWithRpcPromise(_0x7bf0('0x7a'),_0x7bf0('0x7b'),_0x311b24);}return null;})[_0x7bf0('0x1f')](function(_0x479451){var _0x41d1ea='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x479451['message'][_0x7bf0('0x7c')];return db[_0x7bf0('0x6b')]['query'](_0x41d1ea,{'type':db[_0x7bf0('0x6c')]['QueryTypes'][_0x7bf0('0x6d')],'raw':!![]})[_0x7bf0('0x1f')](function(_0xc96482){return _0xc96482;});})[_0x7bf0('0x1f')](function(_0x252633){if(_0x252633){_0x311b24[_0x7bf0('0x28')][_0x7bf0('0x6e')]=_0x252633[0x0];if(!_0x5c1117[_0x7bf0('0x58')][_0x7bf0('0x60')])return;return db[_0x7bf0('0x7d')][_0x7bf0('0x56')]({'where':{'id':_0x5c1117['body'][_0x7bf0('0x60')],'role':_0x7bf0('0x62')},'attributes':['id',_0x7bf0('0x3a'),'fullname',_0x7bf0('0x70'),_0x7bf0('0x71')],'raw':!![]});}return null;})[_0x7bf0('0x1f')](function(_0x3c0c03){if(!_0x3c0c03)return null;_0x311b24[_0x7bf0('0x28')][_0x7bf0('0x62')]=_0x3c0c03;return _0x311b24;})[_0x7bf0('0x1f')](function(_0x40b8ed){if(_0x40b8ed){_0x40b8ed['message'][_0x7bf0('0x73')]=util[_0x7bf0('0x5e')](_0x7bf0('0x74'),_0x5c1117[_0x7bf0('0x61')][_0x7bf0('0x3a')]);_0x40b8ed['message']['channel']=_0x311b24[_0x7bf0('0x75')];_0x40b8ed[_0x7bf0('0x28')][_0x7bf0('0x76')]=_0x311b24[_0x7bf0('0x75')];_0x40b8ed[_0x7bf0('0x28')][_0x7bf0('0x7e')]=_0x7bf0('0x35');respondWithRpcPromise('EventManager',_0x7bf0('0x77'),{'event':'rejectmessage','message':_0x40b8ed['message']},client9002);return _0x311b24;}return null;})[_0x7bf0('0x1f')](respondWithResult(_0x28f7cb,null))[_0x7bf0('0x2a')](handleError(_0x28f7cb,null));};
\ No newline at end of file
index ef80795..f6e97f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc090=['hook','exports','events','../../mysqldb','update','emit','hasOwnProperty'];(function(_0x318dda,_0x1aa800){var _0x3f97ca=function(_0x1dc61a){while(--_0x1dc61a){_0x318dda['push'](_0x318dda['shift']());}};_0x3f97ca(++_0x1aa800);}(_0xc090,0x8e));var _0x0c09=function(_0x551304,_0x394cb9){_0x551304=_0x551304-0x0;var _0x49f8b1=_0xc090[_0x551304];return _0x49f8b1;};'use strict';var EventEmitter=require(_0x0c09('0x0'));var OpenchannelMessage=require(_0x0c09('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0c09('0x2'),'afterDestroy':'remove'};function emitEvent(_0x24b11e){return function(_0x32f84b,_0x3e30c4,_0x4172f5){OpenchannelMessageEvents[_0x0c09('0x3')](_0x24b11e+':'+_0x32f84b['id'],_0x32f84b);OpenchannelMessageEvents[_0x0c09('0x3')](_0x24b11e,_0x32f84b);_0x4172f5(null);};}for(var e in events){if(events[_0x0c09('0x4')](e)){var event=events[e];OpenchannelMessage[_0x0c09('0x5')](e,emitEvent(event));}}module[_0x0c09('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x2c7b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','remove','emit'];(function(_0x3d0710,_0x1298ed){var _0x208399=function(_0x2fb4f7){while(--_0x2fb4f7){_0x3d0710['push'](_0x3d0710['shift']());}};_0x208399(++_0x1298ed);}(_0x2c7b,0xc3));var _0xb2c7=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2c7b[_0x3b380d];return _0x54502b;};'use strict';var EventEmitter=require(_0xb2c7('0x0'));var OpenchannelMessage=require(_0xb2c7('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb2c7('0x2'),'afterUpdate':'update','afterDestroy':_0xb2c7('0x3')};function emitEvent(_0x4145ea){return function(_0x447192,_0x14f1cf,_0x47409e){OpenchannelMessageEvents['emit'](_0x4145ea+':'+_0x447192['id'],_0x447192);OpenchannelMessageEvents[_0xb2c7('0x4')](_0x4145ea,_0x447192);_0x47409e(null);};}for(var e in events){if(events[_0xb2c7('0x5')](e)){var event=events[e];OpenchannelMessage[_0xb2c7('0x6')](e,emitEvent(event));}}module[_0xb2c7('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 79965c0..3a8ae61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1dd=['direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Interaction','omit','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','error','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','fti_openchannel_messages','body','FULLTEXT','models','get'];(function(_0x4687df,_0x12099c){var _0x32eaef=function(_0x2387db){while(--_0x2387db){_0x4687df['push'](_0x4687df['shift']());}};_0x32eaef(++_0x12099c);}(_0xc1dd,0xc6));var _0xdc1d=function(_0x355ce8,_0x5f1d0a){_0x355ce8=_0x355ce8-0x0;var _0x1db8b8=_0xc1dd[_0x355ce8];return _0x1db8b8;};'use strict';var _=require('lodash');var util=require(_0xdc1d('0x0'));var logger=require(_0xdc1d('0x1'))(_0xdc1d('0x2'));var moment=require(_0xdc1d('0x3'));var BPromise=require(_0xdc1d('0x4'));var rp=require(_0xdc1d('0x5'));var fs=require('fs');var path=require(_0xdc1d('0x6'));var rimraf=require(_0xdc1d('0x7'));var config=require(_0xdc1d('0x8'));var attributes=require(_0xdc1d('0x9'));module[_0xdc1d('0xa')]=function(_0x3b5436,_0xd37d9e){return _0x3b5436[_0xdc1d('0xb')](_0xdc1d('0xc'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0xdc1d('0xd'),'fields':[_0xdc1d('0xe')],'type':_0xdc1d('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ea8ad,_0x40bd23,_0x5f2864){var _0x4e6ea3=_0x3b5436[_0xdc1d('0x10')];var _0x50635a=_0x4ea8ad[_0xdc1d('0x11')]({'plain':!![]});if(_0x50635a[_0xdc1d('0x12')][_0xdc1d('0x13')]()==='in'||_0x50635a[_0xdc1d('0x12')][_0xdc1d('0x13')]()===_0xdc1d('0x14')&&!_0x50635a[_0xdc1d('0x15')]&&!_['isNil'](_0x50635a[_0xdc1d('0x16')])){_0x4e6ea3[_0xdc1d('0x17')][_0xdc1d('0x18')]({'where':{'id':_0x50635a[_0xdc1d('0x19')]}})['then'](function(_0x4f4c1f){if(_0x4f4c1f){_0x4f4c1f[_0xdc1d('0x1a')]({'lastMsgAt':_0x50635a[_0xdc1d('0x1b')],'lastMsgDirection':_0x50635a[_0xdc1d('0x12')][_0xdc1d('0x13')]()});}})['catch'](function(_0x1777e3){console['error'](_0x1777e3);});}if(_0x50635a[_0xdc1d('0x12')]===_0xdc1d('0x14')&&!_0x50635a[_0xdc1d('0x15')]){var _0x4df80d;_0x4e6ea3[_0xdc1d('0x1c')][_0xdc1d('0x1d')]()[_0xdc1d('0x1e')](function(_0x3c6abf){return _0x4e6ea3[_0xdc1d('0x1f')][_0xdc1d('0x20')]({'where':{'id':_0x50635a[_0xdc1d('0x21')]},'include':[{'model':_0x4e6ea3[_0xdc1d('0x17')],'as':_0xdc1d('0x22'),'where':{'id':_0x50635a['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x4e6ea3[_0xdc1d('0x1c')],'as':_0xdc1d('0x23'),'attributes':_[_0xdc1d('0x24')](_0x3c6abf)}]}]});})['then'](function(_0x483245){_0x4df80d=_0x483245[_0xdc1d('0x11')]({'plain':!![]});if(_0x4df80d&&_0x4df80d[_0xdc1d('0x25')]){logger[_0xdc1d('0x26')](_0xdc1d('0x27'),_0xdc1d('0x28'),util[_0xdc1d('0x29')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x50635a['id'],_0x4df80d[_0xdc1d('0x25')]));if(_0x4df80d[_0xdc1d('0x22')]&&_0x4df80d[_0xdc1d('0x22')]['length']){_0x50635a[_0xdc1d('0x2a')]=_[_0xdc1d('0x2b')](_0x4df80d['Interactions'][0x0],_0xdc1d('0x23'));_0x50635a[_0xdc1d('0x23')]=_0x4df80d[_0xdc1d('0x22')][0x0]['Contact'];}var _0x40bd23={'method':_0xdc1d('0x2c'),'uri':encodeURI(_0x4df80d[_0xdc1d('0x25')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x40bd23[_0xdc1d('0x2d')]){case _0xdc1d('0x2e'):_0x40bd23['qs']=_0x50635a;break;case'POST':_0x40bd23[_0xdc1d('0xe')]=_0x50635a;break;}return rp(_0x40bd23)[_0xdc1d('0x1e')](function(_0x42872c){logger['info'](_0xdc1d('0x27'),_0xdc1d('0x28'),util[_0xdc1d('0x29')](_0xdc1d('0x2f'),_0x50635a['id'],_0x4df80d[_0xdc1d('0x25')]));if(_0x42872c['body'][_0xdc1d('0x30')]&&_0x42872c['body'][_0xdc1d('0x30')]!=_0x50635a['Interaction'][_0xdc1d('0x30')]){return _0x4e6ea3['OpenchannelInteraction'][_0xdc1d('0x1a')]({'threadId':_0x42872c[_0xdc1d('0xe')][_0xdc1d('0x30')]},{'where':{'id':_0x50635a[_0xdc1d('0x2a')]['id']}});}else{return;}})['then'](function(){return _0x4ea8ad[_0xdc1d('0x1a')]({'read':!![]});})[_0xdc1d('0x31')](function(_0x3942ff){logger[_0xdc1d('0x32')](_0xdc1d('0x27'),'afterCreate',util['inspect'](_0x3942ff,{'showHidden':![],'depth':null}));_0x5f2864();});}else{_0x5f2864();}})[_0xdc1d('0x33')](function(){_0x5f2864();});}else{_0x5f2864();}}},'charset':_0xdc1d('0x34'),'collate':_0xdc1d('0x35')});};
\ No newline at end of file
+var _0xcb14=['info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','GET','body','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','models','get','toLowerCase','direction','out','secret','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','OpenchannelAccountId','Contact','keys','replyUri'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0xcb14,0x194));var _0x4cb1=function(_0x506cfa,_0x2e301){_0x506cfa=_0x506cfa-0x0;var _0x23c230=_0xcb14[_0x506cfa];return _0x23c230;};'use strict';var _=require(_0x4cb1('0x0'));var util=require(_0x4cb1('0x1'));var logger=require(_0x4cb1('0x2'))(_0x4cb1('0x3'));var moment=require(_0x4cb1('0x4'));var BPromise=require(_0x4cb1('0x5'));var rp=require(_0x4cb1('0x6'));var fs=require('fs');var path=require(_0x4cb1('0x7'));var rimraf=require(_0x4cb1('0x8'));var config=require(_0x4cb1('0x9'));var attributes=require('./openchannelMessage.attributes');module[_0x4cb1('0xa')]=function(_0x4627fc,_0x5a461f){return _0x4627fc[_0x4cb1('0xb')](_0x4cb1('0xc'),attributes,{'tableName':_0x4cb1('0xd'),'paranoid':![],'indexes':[{'name':_0x4cb1('0xe'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x28a119,_0x1250fb,_0x1ac636){var _0x48e1a6=_0x4627fc[_0x4cb1('0xf')];var _0x3261b1=_0x28a119[_0x4cb1('0x10')]({'plain':!![]});if(_0x3261b1['direction'][_0x4cb1('0x11')]()==='in'||_0x3261b1[_0x4cb1('0x12')][_0x4cb1('0x11')]()===_0x4cb1('0x13')&&!_0x3261b1[_0x4cb1('0x14')]&&!_[_0x4cb1('0x15')](_0x3261b1[_0x4cb1('0x16')])){_0x48e1a6[_0x4cb1('0x17')]['findOne']({'where':{'id':_0x3261b1[_0x4cb1('0x18')]}})[_0x4cb1('0x19')](function(_0x5d62bf){if(_0x5d62bf){_0x5d62bf[_0x4cb1('0x1a')]({'lastMsgAt':_0x3261b1[_0x4cb1('0x1b')],'lastMsgDirection':_0x3261b1[_0x4cb1('0x12')]['toLowerCase']()});}})[_0x4cb1('0x1c')](function(_0x275754){console[_0x4cb1('0x1d')](_0x275754);});}if(_0x3261b1[_0x4cb1('0x12')]===_0x4cb1('0x13')&&!_0x3261b1[_0x4cb1('0x14')]){var _0x35d30a;_0x48e1a6[_0x4cb1('0x1e')][_0x4cb1('0x1f')]()[_0x4cb1('0x19')](function(_0x2a1838){return _0x48e1a6['OpenchannelAccount']['find']({'where':{'id':_0x3261b1[_0x4cb1('0x20')]},'include':[{'model':_0x48e1a6[_0x4cb1('0x17')],'as':'Interactions','where':{'id':_0x3261b1['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x48e1a6['CmContact'],'as':_0x4cb1('0x21'),'attributes':_[_0x4cb1('0x22')](_0x2a1838)}]}]});})[_0x4cb1('0x19')](function(_0x41f4f9){_0x35d30a=_0x41f4f9['get']({'plain':!![]});if(_0x35d30a&&_0x35d30a[_0x4cb1('0x23')]){logger[_0x4cb1('0x24')](_0x4cb1('0x25'),_0x4cb1('0x26'),util['format'](_0x4cb1('0x27'),_0x3261b1['id'],_0x35d30a[_0x4cb1('0x23')]));if(_0x35d30a['Interactions']&&_0x35d30a[_0x4cb1('0x28')][_0x4cb1('0x29')]){_0x3261b1[_0x4cb1('0x2a')]=_[_0x4cb1('0x2b')](_0x35d30a[_0x4cb1('0x28')][0x0],_0x4cb1('0x21'));_0x3261b1[_0x4cb1('0x21')]=_0x35d30a['Interactions'][0x0]['Contact'];}var _0x1250fb={'method':_0x4cb1('0x2c'),'uri':encodeURI(_0x35d30a[_0x4cb1('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1250fb[_0x4cb1('0x2d')]){case _0x4cb1('0x2e'):_0x1250fb['qs']=_0x3261b1;break;case _0x4cb1('0x2c'):_0x1250fb[_0x4cb1('0x2f')]=_0x3261b1;break;}return rp(_0x1250fb)['then'](function(_0x57fb8a){logger[_0x4cb1('0x24')](_0x4cb1('0x25'),_0x4cb1('0x26'),util[_0x4cb1('0x30')](_0x4cb1('0x31'),_0x3261b1['id'],_0x35d30a[_0x4cb1('0x23')]));if(_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]&&_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]!=_0x3261b1[_0x4cb1('0x2a')][_0x4cb1('0x32')]){return _0x48e1a6[_0x4cb1('0x17')][_0x4cb1('0x1a')]({'threadId':_0x57fb8a[_0x4cb1('0x2f')][_0x4cb1('0x32')]},{'where':{'id':_0x3261b1[_0x4cb1('0x2a')]['id']}});}else{return;}})[_0x4cb1('0x19')](function(){return _0x28a119['update']({'read':!![]});})['catch'](function(_0x3bb552){logger[_0x4cb1('0x1d')](_0x4cb1('0x25'),_0x4cb1('0x26'),util[_0x4cb1('0x33')](_0x3bb552,{'showHidden':![],'depth':null}));_0x1ac636();});}else{_0x1ac636();}})[_0x4cb1('0x34')](function(){_0x1ac636();});}else{_0x1ac636();}}},'charset':_0x4cb1('0x35'),'collate':_0x4cb1('0x36')});};
\ No newline at end of file
index 09d124d..5282feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2a033e,_0x150109){var _0xed1d3c=function(_0x5e8c88){while(--_0x5e8c88){_0x2a033e['push'](_0x2a033e['shift']());}};_0xed1d3c(++_0x150109);}(_0x1261,0x144));var _0x1126=function(_0x1bda09,_0x1d8be5){_0x1bda09=_0x1bda09-0x0;var _0x17be2d=_0x1261[_0x1bda09];return _0x17be2d;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2ccebc,_0xda027){var _0x297edc=function(_0x52dc39){while(--_0x52dc39){_0x2ccebc['push'](_0x2ccebc['shift']());}};_0x297edc(++_0xda027);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4ac63b,_0x1cab02){_0x4ac63b=_0x4ac63b-0x0;var _0x14efb5=_0x5f2f[_0x4ac63b];return _0x14efb5;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 94606ae..4e6722b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa428=['./openchannelMessage.events','remove','update','emit','removeListener','register','length','openchannelMessage:'];(function(_0xded8ac,_0x505743){var _0x3b677c=function(_0x5063d3){while(--_0x5063d3){_0xded8ac['push'](_0xded8ac['shift']());}};_0x3b677c(++_0x505743);}(_0xa428,0xd8));var _0x8a42=function(_0x4c5df7,_0x3beeaa){_0x4c5df7=_0x4c5df7-0x0;var _0x4f61ae=_0xa428[_0x4c5df7];return _0x4f61ae;};'use strict';var OpenchannelMessageEvents=require(_0x8a42('0x0'));var events=['save',_0x8a42('0x1'),_0x8a42('0x2')];function createListener(_0x33945b,_0x27d2e0){return function(_0x3f13ad){_0x27d2e0[_0x8a42('0x3')](_0x33945b,_0x3f13ad);};}function removeListener(_0x42a0cf,_0x5e4511){return function(){OpenchannelMessageEvents[_0x8a42('0x4')](_0x42a0cf,_0x5e4511);};}exports[_0x8a42('0x5')]=function(_0x8d74f1){for(var _0x347ed2=0x0,_0x4d4aba=events[_0x8a42('0x6')];_0x347ed2<_0x4d4aba;_0x347ed2++){var _0x454367=events[_0x347ed2];var _0x56d507=createListener(_0x8a42('0x7')+_0x454367,_0x8d74f1);OpenchannelMessageEvents['on'](_0x454367,_0x56d507);}};
\ No newline at end of file
+var _0x814b=['removeListener','register','length','openchannelMessage:','./openchannelMessage.events','save','remove','update','emit'];(function(_0x4d2993,_0x1c9473){var _0x427374=function(_0x149dfd){while(--_0x149dfd){_0x4d2993['push'](_0x4d2993['shift']());}};_0x427374(++_0x1c9473);}(_0x814b,0x1a2));var _0xb814=function(_0x298064,_0x1d2bfb){_0x298064=_0x298064-0x0;var _0x2512ea=_0x814b[_0x298064];return _0x2512ea;};'use strict';var OpenchannelMessageEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){OpenchannelMessageEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);OpenchannelMessageEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
index 3c8d8f6..220ef2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x138a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router'];(function(_0x459e7e,_0xb027f0){var _0x82fedf=function(_0x4f3d2e){while(--_0x4f3d2e){_0x459e7e['push'](_0x459e7e['shift']());}};_0x82fedf(++_0xb027f0);}(_0x138a,0xd4));var _0xa138=function(_0x5f4337,_0x5d1e22){_0x5f4337=_0x5f4337-0x0;var _0x3caa44=_0x138a[_0x5f4337];return _0x3caa44;};'use strict';var multer=require(_0xa138('0x0'));var util=require(_0xa138('0x1'));var path=require('path');var timeout=require(_0xa138('0x2'));var express=require(_0xa138('0x3'));var router=express[_0xa138('0x4')]();var fs_extra=require(_0xa138('0x5'));var auth=require(_0xa138('0x6'));var interaction=require(_0xa138('0x7'));var config=require(_0xa138('0x8'));var controller=require('./openchannelQueue.controller');router['get']('/',auth[_0xa138('0x9')](),controller[_0xa138('0xa')]);router[_0xa138('0xb')](_0xa138('0xc'),auth[_0xa138('0x9')](),controller[_0xa138('0xd')]);router[_0xa138('0xb')](_0xa138('0xe'),auth[_0xa138('0x9')](),controller[_0xa138('0xf')]);router[_0xa138('0xb')](_0xa138('0x10'),auth['isAuthenticated'](),controller[_0xa138('0x11')]);router[_0xa138('0xb')](_0xa138('0x12'),auth['isAuthenticated'](),controller[_0xa138('0x13')]);router[_0xa138('0xb')](_0xa138('0x14'),auth['isAuthenticated'](),controller[_0xa138('0x15')]);router[_0xa138('0x16')]('/',auth[_0xa138('0x9')](),controller['create']);router[_0xa138('0x16')](_0xa138('0x12'),auth[_0xa138('0x9')](),controller['addTeams']);router[_0xa138('0x16')](_0xa138('0x14'),auth[_0xa138('0x9')](),controller[_0xa138('0x17')]);router[_0xa138('0x18')](_0xa138('0xe'),auth[_0xa138('0x9')](),controller[_0xa138('0x19')]);router[_0xa138('0x1a')](_0xa138('0xe'),auth[_0xa138('0x9')](),controller[_0xa138('0x1b')]);router[_0xa138('0x1a')](_0xa138('0x12'),auth[_0xa138('0x9')](),controller[_0xa138('0x1c')]);router[_0xa138('0x1a')]('/:id/users',auth[_0xa138('0x9')](),controller[_0xa138('0x1d')]);module[_0xa138('0x1e')]=router;
\ No newline at end of file
+var _0x367f=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeAgents'];(function(_0x24aa3c,_0x159da9){var _0x18aefa=function(_0xff058d){while(--_0xff058d){_0x24aa3c['push'](_0x24aa3c['shift']());}};_0x18aefa(++_0x159da9);}(_0x367f,0x121));var _0xf367=function(_0x39e130,_0x5acabc){_0x39e130=_0x39e130-0x0;var _0x132d61=_0x367f[_0x39e130];return _0x132d61;};'use strict';var multer=require(_0xf367('0x0'));var util=require(_0xf367('0x1'));var path=require('path');var timeout=require(_0xf367('0x2'));var express=require(_0xf367('0x3'));var router=express[_0xf367('0x4')]();var fs_extra=require(_0xf367('0x5'));var auth=require(_0xf367('0x6'));var interaction=require(_0xf367('0x7'));var config=require(_0xf367('0x8'));var controller=require(_0xf367('0x9'));router[_0xf367('0xa')]('/',auth[_0xf367('0xb')](),controller[_0xf367('0xc')]);router[_0xf367('0xa')](_0xf367('0xd'),auth[_0xf367('0xb')](),controller[_0xf367('0xe')]);router[_0xf367('0xa')](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x10')]);router[_0xf367('0xa')](_0xf367('0x11'),auth[_0xf367('0xb')](),controller[_0xf367('0x12')]);router[_0xf367('0xa')](_0xf367('0x13'),auth[_0xf367('0xb')](),controller[_0xf367('0x14')]);router[_0xf367('0xa')](_0xf367('0x15'),auth['isAuthenticated'](),controller[_0xf367('0x16')]);router[_0xf367('0x17')]('/',auth['isAuthenticated'](),controller[_0xf367('0x18')]);router[_0xf367('0x17')](_0xf367('0x13'),auth[_0xf367('0xb')](),controller[_0xf367('0x19')]);router[_0xf367('0x17')](_0xf367('0x15'),auth[_0xf367('0xb')](),controller[_0xf367('0x1a')]);router['put'](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x1b')]);router[_0xf367('0x1c')](_0xf367('0xf'),auth[_0xf367('0xb')](),controller[_0xf367('0x1d')]);router[_0xf367('0x1c')](_0xf367('0x13'),auth['isAuthenticated'](),controller['removeTeams']);router[_0xf367('0x1c')](_0xf367('0x15'),auth[_0xf367('0xb')](),controller[_0xf367('0x1e')]);module[_0xf367('0x1f')]=router;
\ No newline at end of file
index a4ddaed..2cbc2cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4b1=['beepall','roundrobin','exports','STRING','name','INTEGER','rrmemory'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0xf4b1,0x128));var _0x1f4b=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xf4b1[_0x4baae2];return _0x1a2285;};'use strict';var Sequelize=require('sequelize');module[_0x1f4b('0x0')]={'name':{'type':Sequelize[_0x1f4b('0x1')],'unique':_0x1f4b('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x1f4b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x1f4b('0x4'),_0x1f4b('0x5'),_0x1f4b('0x6'))}};
\ No newline at end of file
+var _0xbb8f=['roundrobin','sequelize','name','STRING','INTEGER','beepall'];(function(_0xd8323,_0x28a00e){var _0x583d69=function(_0x286db9){while(--_0x286db9){_0xd8323['push'](_0xd8323['shift']());}};_0x583d69(++_0x28a00e);}(_0xbb8f,0xbb));var _0xfbb8=function(_0x2af4ab,_0x1ef402){_0x2af4ab=_0x2af4ab-0x0;var _0x451cfb=_0xbb8f[_0x2af4ab];return _0x451cfb;};'use strict';var Sequelize=require(_0xfbb8('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xfbb8('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfbb8('0x2')]},'timeout':{'type':Sequelize[_0xfbb8('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xfbb8('0x4'),_0xfbb8('0x5'))}};
\ No newline at end of file
index 7065d47..1801a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdee7=['SIP','openchannelPause','getTeams','Team','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','emit','userOpenchannelQueue:remove','omit','spread','removeAgents','isArray','getAgents','pick','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','map','OpenchannelQueue','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','length','include','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','destroy','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','order','OpenchannelQueueId','User','findAndCountAll','agent','updatedAt','createdAt','format','%s/%s'];(function(_0x73fe9f,_0x5bdbeb){var _0x4a2c1f=function(_0x5a2749){while(--_0x5a2749){_0x73fe9f['push'](_0x73fe9f['shift']());}};_0x4a2c1f(++_0x5bdbeb);}(_0xdee7,0x14a));var _0x7dee=function(_0x2521dc,_0x5c393f){_0x2521dc=_0x2521dc-0x0;var _0x7073f3=_0xdee7[_0x2521dc];return _0x7073f3;};'use strict';var emlformat=require(_0x7dee('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7dee('0x1'));var rp=require(_0x7dee('0x2'));var moment=require(_0x7dee('0x3'));var BPromise=require(_0x7dee('0x4'));var Mustache=require('mustache');var util=require(_0x7dee('0x5'));var path=require(_0x7dee('0x6'));var sox=require(_0x7dee('0x7'));var csv=require('to-csv');var ejs=require(_0x7dee('0x8'));var fs=require('fs');var fs_extra=require(_0x7dee('0x9'));var _=require('lodash');var squel=require(_0x7dee('0xa'));var crypto=require(_0x7dee('0xb'));var jsforce=require(_0x7dee('0xc'));var deskjs=require(_0x7dee('0xd'));var toCsv=require(_0x7dee('0xe'));var querystring=require(_0x7dee('0xf'));var Papa=require(_0x7dee('0x10'));var Redis=require(_0x7dee('0x11'));var authService=require(_0x7dee('0x12'));var qs=require(_0x7dee('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7dee('0x14'));var logger=require(_0x7dee('0x15'))(_0x7dee('0x16'));var utils=require(_0x7dee('0x17'));var config=require(_0x7dee('0x18'));var licenseUtil=require(_0x7dee('0x19'));var db=require(_0x7dee('0x1a'))['db'];config[_0x7dee('0x1b')]=_[_0x7dee('0x1c')](config['redis'],{'host':_0x7dee('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7dee('0x1b')]));require('./openchannelQueue.socket')[_0x7dee('0x1e')](socket);function respondWithStatusCode(_0x1cf969,_0x1ecf1b){_0x1ecf1b=_0x1ecf1b||0xcc;return function(_0xc661ea){if(_0xc661ea){return _0x1cf969[_0x7dee('0x1f')](_0x1ecf1b);}return _0x1cf969[_0x7dee('0x20')](_0x1ecf1b)[_0x7dee('0x21')]();};}function respondWithResult(_0x5c711d,_0x98db7){_0x98db7=_0x98db7||0xc8;return function(_0x2cc422){if(_0x2cc422){return _0x5c711d['status'](_0x98db7)[_0x7dee('0x22')](_0x2cc422);}};}function respondWithFilteredResult(_0x2a0089,_0x488760){return function(_0x437807){if(_0x437807){var _0x1de101=typeof _0x488760['offset']===_0x7dee('0x23')&&typeof _0x488760[_0x7dee('0x24')]===_0x7dee('0x23');var _0x383e2a=_0x437807[_0x7dee('0x25')];var _0x4dcf46=_0x1de101?0x0:_0x488760[_0x7dee('0x26')];var _0x2ab89c=_0x1de101?_0x437807[_0x7dee('0x25')]:_0x488760[_0x7dee('0x26')]+_0x488760[_0x7dee('0x24')];var _0x5e733b;if(_0x2ab89c>=_0x383e2a){_0x2ab89c=_0x383e2a;_0x5e733b=0xc8;}else{_0x5e733b=0xce;}_0x2a0089[_0x7dee('0x20')](_0x5e733b);return _0x2a0089[_0x7dee('0x27')](_0x7dee('0x28'),_0x4dcf46+'-'+_0x2ab89c+'/'+_0x383e2a)[_0x7dee('0x22')](_0x437807);}return null;};}function patchUpdates(_0x1d40bd){return function(_0x106539){try{jsonpatch[_0x7dee('0x29')](_0x106539,_0x1d40bd,!![]);}catch(_0x3b76b7){return BPromise[_0x7dee('0x2a')](_0x3b76b7);}return _0x106539[_0x7dee('0x2b')]();};}function saveUpdates(_0x4408a5,_0x26b6ae){return function(_0x4adf65){if(_0x4adf65){return _0x4adf65[_0x7dee('0x2c')](_0x4408a5)[_0x7dee('0x2d')](function(_0x537908){return _0x537908;});}return null;};}function removeEntity(_0x2cfa93,_0x511f3f){return function(_0x5633af){if(_0x5633af){return _0x5633af['destroy']()[_0x7dee('0x2d')](function(){var _0x4325f1=_0x5633af[_0x7dee('0x2e')]({'plain':!![]});var _0x4254ed=_0x7dee('0x2f');return db[_0x7dee('0x30')]['destroy']({'where':{'type':_0x4254ed,'resourceId':_0x4325f1['id']}})[_0x7dee('0x2d')](function(){return _0x5633af;});})[_0x7dee('0x2d')](function(){_0x2cfa93['status'](0xcc)[_0x7dee('0x21')]();});}};}function handleEntityNotFound(_0x310332,_0x2bf68b){return function(_0x1df0df){if(!_0x1df0df){_0x310332[_0x7dee('0x1f')](0x194);}return _0x1df0df;};}function handleError(_0x23fd46,_0xa59119){_0xa59119=_0xa59119||0x1f4;return function(_0x18537d){logger[_0x7dee('0x31')](_0x18537d[_0x7dee('0x32')]);if(_0x18537d[_0x7dee('0x33')]){delete _0x18537d['name'];}_0x23fd46['status'](_0xa59119)[_0x7dee('0x34')](_0x18537d);};}exports['index']=function(_0x34293e,_0x1deb8b){var _0x1cd40a={},_0xb1490d={},_0x3f5ba8={'count':0x0,'rows':[]};var _0x3f675d=_[_0x7dee('0x35')](db[_0x7dee('0x36')]['rawAttributes'],function(_0x3cbad0){return{'name':_0x3cbad0[_0x7dee('0x37')],'type':_0x3cbad0[_0x7dee('0x38')][_0x7dee('0x39')]};});_0xb1490d[_0x7dee('0x3a')]=_[_0x7dee('0x35')](_0x3f675d,'name');_0xb1490d[_0x7dee('0x3b')]=_['keys'](_0x34293e['query']);_0xb1490d[_0x7dee('0x3c')]=_[_0x7dee('0x3d')](_0xb1490d[_0x7dee('0x3a')],_0xb1490d[_0x7dee('0x3b')]);_0x1cd40a['attributes']=_[_0x7dee('0x3d')](_0xb1490d['model'],qs[_0x7dee('0x3e')](_0x34293e['query'][_0x7dee('0x3e')]));_0x1cd40a['attributes']=_0x1cd40a[_0x7dee('0x3f')]['length']?_0x1cd40a[_0x7dee('0x3f')]:_0xb1490d[_0x7dee('0x3a')];if(!_0x34293e[_0x7dee('0x3b')]['hasOwnProperty'](_0x7dee('0x40'))){_0x1cd40a[_0x7dee('0x24')]=qs[_0x7dee('0x24')](_0x34293e['query'][_0x7dee('0x24')]);_0x1cd40a[_0x7dee('0x26')]=qs[_0x7dee('0x26')](_0x34293e[_0x7dee('0x3b')][_0x7dee('0x26')]);}_0x1cd40a['order']=qs[_0x7dee('0x41')](_0x34293e['query'][_0x7dee('0x41')]);_0x1cd40a[_0x7dee('0x42')]=qs[_0x7dee('0x3c')](_['pick'](_0x34293e[_0x7dee('0x3b')],_0xb1490d[_0x7dee('0x3c')]),_0x3f675d);if(_0x34293e['query'][_0x7dee('0x43')]){_0x1cd40a[_0x7dee('0x42')]=_[_0x7dee('0x44')](_0x1cd40a[_0x7dee('0x42')],{'$or':_[_0x7dee('0x35')](_0x3f675d,function(_0x2a37f5){if(_0x2a37f5['type']!==_0x7dee('0x45')){var _0x376e72={};_0x376e72[_0x2a37f5[_0x7dee('0x33')]]={'$like':'%'+_0x34293e[_0x7dee('0x3b')][_0x7dee('0x43')]+'%'};return _0x376e72;}})});}_0x1cd40a=_[_0x7dee('0x44')]({},_0x1cd40a,_0x34293e[_0x7dee('0x46')]);var _0x488377={'where':_0x1cd40a[_0x7dee('0x42')]};return db[_0x7dee('0x36')][_0x7dee('0x25')](_0x488377)[_0x7dee('0x2d')](function(_0x273205){_0x3f5ba8[_0x7dee('0x25')]=_0x273205;if(_0x34293e['query'][_0x7dee('0x47')]){_0x1cd40a['include']=[{'all':!![]}];}return db[_0x7dee('0x36')][_0x7dee('0x48')](_0x1cd40a);})[_0x7dee('0x2d')](function(_0x1b10c9){_0x3f5ba8[_0x7dee('0x49')]=_0x1b10c9;return _0x3f5ba8;})[_0x7dee('0x2d')](respondWithFilteredResult(_0x1deb8b,_0x1cd40a))[_0x7dee('0x4a')](handleError(_0x1deb8b,null));};exports[_0x7dee('0x4b')]=function(_0x20238e,_0x2fa582){var _0x2761f8={'raw':!![],'where':{'id':_0x20238e[_0x7dee('0x4c')]['id']}},_0x2a3199={};_0x2a3199['model']=_[_0x7dee('0x4d')](db['OpenchannelQueue'][_0x7dee('0x4e')]);_0x2a3199[_0x7dee('0x3b')]=_[_0x7dee('0x4d')](_0x20238e['query']);_0x2a3199[_0x7dee('0x3c')]=_[_0x7dee('0x3d')](_0x2a3199[_0x7dee('0x3a')],_0x2a3199['query']);_0x2761f8[_0x7dee('0x3f')]=_[_0x7dee('0x3d')](_0x2a3199['model'],qs[_0x7dee('0x3e')](_0x20238e[_0x7dee('0x3b')]['fields']));_0x2761f8[_0x7dee('0x3f')]=_0x2761f8[_0x7dee('0x3f')][_0x7dee('0x4f')]?_0x2761f8[_0x7dee('0x3f')]:_0x2a3199['model'];if(_0x20238e['query'][_0x7dee('0x47')]){_0x2761f8[_0x7dee('0x50')]=[{'all':!![]}];}_0x2761f8=_['merge']({},_0x2761f8,_0x20238e['options']);return db[_0x7dee('0x36')]['find'](_0x2761f8)[_0x7dee('0x2d')](handleEntityNotFound(_0x2fa582,null))[_0x7dee('0x2d')](respondWithResult(_0x2fa582,null))[_0x7dee('0x4a')](handleError(_0x2fa582,null));};exports[_0x7dee('0x51')]=function(_0x2a4d09,_0x38e9de){return db[_0x7dee('0x36')]['create'](_0x2a4d09[_0x7dee('0x52')],{})[_0x7dee('0x2d')](function(_0x4f64c1){var _0x374bab=_0x2a4d09['user'][_0x7dee('0x2e')]({'plain':!![]});if(!_0x374bab)throw new Error(_0x7dee('0x53'));if(_0x374bab['role']==='user'){var _0x4684ba=_0x4f64c1['get']({'plain':!![]});var _0x5d2886='OpenchannelQueues';return db[_0x7dee('0x54')][_0x7dee('0x55')]({'where':{'name':_0x5d2886,'userProfileId':_0x374bab[_0x7dee('0x56')]},'raw':!![]})[_0x7dee('0x2d')](function(_0x6990b3){if(_0x6990b3&&_0x6990b3['autoAssociation']===0x0){return db['UserProfileResource'][_0x7dee('0x51')]({'name':_0x4684ba[_0x7dee('0x33')],'resourceId':_0x4684ba['id'],'type':_0x6990b3[_0x7dee('0x33')],'sectionId':_0x6990b3['id']},{})[_0x7dee('0x2d')](function(){return _0x4f64c1;});}else{return _0x4f64c1;}})[_0x7dee('0x4a')](function(_0x244432){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x244432);throw _0x244432;});}return _0x4f64c1;})['then'](respondWithResult(_0x38e9de,0xc9))[_0x7dee('0x4a')](handleError(_0x38e9de,null));};exports['update']=function(_0x2c206f,_0xa26808){if(_0x2c206f[_0x7dee('0x52')]['id']){delete _0x2c206f[_0x7dee('0x52')]['id'];}return db[_0x7dee('0x36')]['find']({'where':{'id':_0x2c206f[_0x7dee('0x4c')]['id']}})[_0x7dee('0x2d')](handleEntityNotFound(_0xa26808,null))[_0x7dee('0x2d')](saveUpdates(_0x2c206f['body'],null))[_0x7dee('0x2d')](respondWithResult(_0xa26808,null))[_0x7dee('0x4a')](handleError(_0xa26808,null));};exports[_0x7dee('0x57')]=function(_0x158abf,_0x2133a5){return db['OpenchannelQueue'][_0x7dee('0x55')]({'where':{'id':_0x158abf['params']['id']}})[_0x7dee('0x2d')](handleEntityNotFound(_0x2133a5,null))['then'](removeEntity(_0x2133a5,null))[_0x7dee('0x4a')](handleError(_0x2133a5,null));};exports['describe']=function(_0x21d9c0,_0x798354){return db[_0x7dee('0x36')][_0x7dee('0x58')]()[_0x7dee('0x2d')](respondWithResult(_0x798354,null))['catch'](handleError(_0x798354,null));};exports[_0x7dee('0x59')]=function(_0x5ebcc9,_0xa258af,_0x4f00b9){var _0x573703={'raw':!![],'where':{}},_0x56b0c5={},_0x3c5278;return db['OpenchannelQueue'][_0x7dee('0x5a')]({'where':{'id':_0x5ebcc9[_0x7dee('0x4c')]['id']}})[_0x7dee('0x2d')](handleEntityNotFound(_0xa258af,null))[_0x7dee('0x2d')](function(_0x108e38){if(_0x108e38){_0x3c5278=_0x108e38['get']({'plain':!![]});_0x56b0c5[_0x7dee('0x3a')]=_[_0x7dee('0x4d')](db[_0x7dee('0x5b')][_0x7dee('0x4e')]);_0x56b0c5['query']=_['keys'](_0x5ebcc9[_0x7dee('0x3b')]);_0x56b0c5[_0x7dee('0x3c')]=_[_0x7dee('0x3d')](_0x56b0c5['model'],_0x56b0c5[_0x7dee('0x3b')]);_0x573703[_0x7dee('0x3f')]=_[_0x7dee('0x3d')](_0x56b0c5[_0x7dee('0x3a')],qs[_0x7dee('0x3e')](_0x5ebcc9['query'][_0x7dee('0x3e')]));_0x573703[_0x7dee('0x3f')]=_0x573703['attributes']['length']?_0x573703[_0x7dee('0x3f')]:_0x56b0c5[_0x7dee('0x3a')];if(!_0x5ebcc9[_0x7dee('0x3b')][_0x7dee('0x5c')](_0x7dee('0x40'))){_0x573703['limit']=qs[_0x7dee('0x24')](_0x5ebcc9[_0x7dee('0x3b')][_0x7dee('0x24')]);_0x573703[_0x7dee('0x26')]=qs[_0x7dee('0x26')](_0x5ebcc9[_0x7dee('0x3b')][_0x7dee('0x26')]);}_0x573703[_0x7dee('0x5d')]=qs[_0x7dee('0x41')](_0x5ebcc9['query'][_0x7dee('0x41')]);_0x573703[_0x7dee('0x42')]=qs[_0x7dee('0x3c')](_['pick'](_0x5ebcc9[_0x7dee('0x3b')],_0x56b0c5[_0x7dee('0x3c')]));_0x573703[_0x7dee('0x42')][_0x7dee('0x5e')]=_0x108e38['id'];if(_0x5ebcc9['query'][_0x7dee('0x43')]){_0x573703[_0x7dee('0x42')]=_[_0x7dee('0x44')](_0x573703['where'],{'$or':_[_0x7dee('0x35')](_0x573703['attributes'],function(_0x2c5df7){var _0xa1ac1e={};_0xa1ac1e[_0x2c5df7]={'$like':'%'+_0x5ebcc9['query'][_0x7dee('0x43')]+'%'};return _0xa1ac1e;})});}_0x573703=_[_0x7dee('0x44')]({},_0x573703,_0x5ebcc9[_0x7dee('0x46')]);return db['UserOpenchannelQueue']['findAll'](_0x573703);}})['then'](function(_0x2e2bc9){if(_0x2e2bc9){return db[_0x7dee('0x5f')][_0x7dee('0x60')]({'where':{'id':_[_0x7dee('0x35')](_0x2e2bc9,'UserId'),'role':_0x7dee('0x61')},'attributes':['id',_0x7dee('0x33'),'openchannelPause',_0x7dee('0x62'),_0x7dee('0x63')]});}})[_0x7dee('0x2d')](function(_0x1449f7){if(_0x1449f7){return{'count':_0x1449f7[_0x7dee('0x25')],'rows':_['map'](_0x1449f7[_0x7dee('0x49')],function(_0x5944b1){return{'membername':_0x5944b1[_0x7dee('0x33')],'UserId':_0x5944b1['id'],'queue_name':_0x3c5278['name'],'OpenchannelQueueId':_0x3c5278['id'],'interface':util[_0x7dee('0x64')](_0x7dee('0x65'),_0x7dee('0x66'),_0x5944b1[_0x7dee('0x33')]),'penalty':0x0,'paused':_0x5944b1[_0x7dee('0x67')],'createdAt':_0x5944b1[_0x7dee('0x63')],'updatedAt':_0x5944b1['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7dee('0x2d')](respondWithFilteredResult(_0xa258af,_0x573703))[_0x7dee('0x4a')](handleError(_0xa258af,null));};exports[_0x7dee('0x68')]=function(_0x5d7480,_0x43f169,_0x110fac){var _0x15e9ec={};var _0x5d1b68={};var _0x17f70e;var _0x5e6b91;return db[_0x7dee('0x36')][_0x7dee('0x5a')]({'where':{'id':_0x5d7480[_0x7dee('0x4c')]['id']}})[_0x7dee('0x2d')](handleEntityNotFound(_0x43f169,null))[_0x7dee('0x2d')](function(_0x5a72e4){if(_0x5a72e4){_0x17f70e=_0x5a72e4;_0x5d1b68['model']=_[_0x7dee('0x4d')](db[_0x7dee('0x69')][_0x7dee('0x4e')]);_0x5d1b68['query']=_[_0x7dee('0x4d')](_0x5d7480['query']);_0x5d1b68['filters']=_[_0x7dee('0x3d')](_0x5d1b68['model'],_0x5d1b68[_0x7dee('0x3b')]);_0x15e9ec[_0x7dee('0x3f')]=_[_0x7dee('0x3d')](_0x5d1b68['model'],qs[_0x7dee('0x3e')](_0x5d7480[_0x7dee('0x3b')][_0x7dee('0x3e')]));_0x15e9ec['attributes']=_0x15e9ec[_0x7dee('0x3f')][_0x7dee('0x4f')]?_0x15e9ec[_0x7dee('0x3f')]:_0x5d1b68['model'];_0x15e9ec[_0x7dee('0x5d')]=qs[_0x7dee('0x41')](_0x5d7480[_0x7dee('0x3b')][_0x7dee('0x41')]);_0x15e9ec['where']=qs[_0x7dee('0x3c')](_['pick'](_0x5d7480[_0x7dee('0x3b')],_0x5d1b68['filters']));if(_0x5d7480[_0x7dee('0x3b')]['filter']){_0x15e9ec['where']=_[_0x7dee('0x44')](_0x15e9ec[_0x7dee('0x42')],{'$or':_[_0x7dee('0x35')](_0x15e9ec[_0x7dee('0x3f')],function(_0x5bde8f){var _0xa9db45={};_0xa9db45[_0x5bde8f]={'$like':'%'+_0x5d7480[_0x7dee('0x3b')][_0x7dee('0x43')]+'%'};return _0xa9db45;})});}_0x15e9ec=_[_0x7dee('0x44')]({},_0x15e9ec,_0x5d7480[_0x7dee('0x46')]);return _0x17f70e[_0x7dee('0x68')](_0x15e9ec);}})[_0x7dee('0x2d')](function(_0x2fab86){if(_0x2fab86){_0x5e6b91=_0x2fab86[_0x7dee('0x4f')];if(!_0x5d7480[_0x7dee('0x3b')][_0x7dee('0x5c')](_0x7dee('0x40'))){_0x15e9ec['limit']=qs[_0x7dee('0x24')](_0x5d7480[_0x7dee('0x3b')][_0x7dee('0x24')]);_0x15e9ec[_0x7dee('0x26')]=qs[_0x7dee('0x26')](_0x5d7480[_0x7dee('0x3b')]['offset']);}return _0x17f70e[_0x7dee('0x68')](_0x15e9ec);}})[_0x7dee('0x2d')](function(_0x2fe86d){if(_0x2fe86d){return _0x2fe86d?{'count':_0x5e6b91,'rows':_0x2fe86d}:null;}})[_0x7dee('0x2d')](respondWithResult(_0x43f169,null))[_0x7dee('0x4a')](handleError(_0x43f169,null));};exports['addTeams']=function(_0x2d5cf6,_0x4c4aff,_0x1d577f){var _0x287956=_0x2d5cf6[_0x7dee('0x52')][_0x7dee('0x6a')];return db[_0x7dee('0x69')]['findAll']({'where':{'id':_0x287956},'attributes':['id'],'include':[{'model':db[_0x7dee('0x5f')],'as':_0x7dee('0x6b'),'attributes':['id','name',_0x7dee('0x6c'),_0x7dee('0x6d'),_0x7dee('0x6e')],'raw':!![]}]})['then'](function(_0x2df549){if(_0x2df549){var _0x540b78=_[_0x7dee('0x6f')](_0x2df549,function(_0x370ee5){var _0x4b4f01=_0x370ee5[_0x7dee('0x2e')]({'plain':!![]});return _0x4b4f01[_0x7dee('0x6b')];});return db['OpenchannelQueue'][_0x7dee('0x55')]({'where':{'id':_0x2d5cf6['params']['id']}})[_0x7dee('0x2d')](function(_0x52bb09){return db[_0x7dee('0x70')][_0x7dee('0x71')](function(_0x9656f){return _0x52bb09['addTeams'](_0x287956,{'transaction':_0x9656f})[_0x7dee('0x2d')](function(){return BPromise['each'](_0x540b78,function(_0x4bc5e3){return db[_0x7dee('0x5b')][_0x7dee('0x72')]({'where':{'UserId':_0x4bc5e3['id'],'OpenchannelQueueId':_0x2d5cf6['params']['id']},'transaction':_0x9656f});});})[_0x7dee('0x2d')](function(){_0x540b78[_0x7dee('0x73')](function(_0x2fb419){socket['emit'](_0x7dee('0x74'),{'UserId':_0x2fb419['id'],'OpenchannelQueueId':_0x52bb09['id']});});});});});}})[_0x7dee('0x2d')](respondWithStatusCode(_0x4c4aff,null))[_0x7dee('0x4a')](handleError(_0x4c4aff,null));};exports[_0x7dee('0x75')]=function(_0x4b8173,_0xd071a6,_0x311463){return db[_0x7dee('0x69')][_0x7dee('0x48')]({'where':{'id':_0x4b8173['query'][_0x7dee('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x7dee('0x5f')],'as':_0x7dee('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x7dee('0x2d')](handleEntityNotFound(_0xd071a6,null))[_0x7dee('0x2d')](function(_0x1d329c){var _0x4d3502=_[_0x7dee('0x35')](_0x1d329c,'id');var _0x2ff832=[];var _0x476f8f=[];var _0x288841=squel[_0x7dee('0x76')]();_0x288841[_0x7dee('0x77')](_0x7dee('0x78'))[_0x7dee('0x79')](_0x7dee('0x7a'),'tq')['join'](_0x7dee('0x7b'),'ut',_0x7dee('0x7c'))[_0x7dee('0x42')]('OpenchannelQueueId\x20=\x20?',_0x4b8173[_0x7dee('0x4c')]['id']);for(var _0x2d0777=0x0;_0x2d0777<_0x1d329c[_0x7dee('0x4f')];_0x2d0777+=0x1){let _0x2f8e31=_0x1d329c[_0x2d0777];for(var _0x289bdb=0x0;_0x289bdb<_0x2f8e31['Agents'][_0x7dee('0x4f')];_0x289bdb+=0x1){let _0x5c55c3=_0x2f8e31['Agents'][_0x289bdb];var _0x4f8de8=_0x288841[_0x7dee('0x7d')]();_0x4f8de8[_0x7dee('0x42')](_0x7dee('0x7e'),_0x5c55c3['id']);_0x476f8f[_0x7dee('0x7f')](db[_0x7dee('0x70')][_0x7dee('0x3b')](_0x4f8de8['toString'](),{'type':db[_0x7dee('0x70')][_0x7dee('0x80')][_0x7dee('0x81')]})[_0x7dee('0x2d')](function(_0x394f74){if(_0x394f74['length']===0x1){return _0x5c55c3['id'];}else{var _0x1e5ab8=_['every'](_[_0x7dee('0x35')](_0x394f74,_0x7dee('0x82')),function(_0x42da29){return _[_0x7dee('0x83')](_0x4d3502,_0x42da29);});if(_0x1e5ab8){return _0x5c55c3['id'];}}}));}}return BPromise['all'](_0x476f8f)[_0x7dee('0x2d')](function(_0xc03cec){_0x2ff832=_(_0x2ff832)[_0x7dee('0x84')](_0xc03cec)[_0x7dee('0x85')]()[_0x7dee('0x86')]();return db[_0x7dee('0x36')][_0x7dee('0x55')]({'where':{'id':_0x4b8173[_0x7dee('0x4c')]['id']}})[_0x7dee('0x2d')](function(_0xbcd685){return db[_0x7dee('0x70')]['transaction'](function(_0x3a6760){return _0xbcd685[_0x7dee('0x75')](_0x4b8173[_0x7dee('0x3b')][_0x7dee('0x6a')],{'transaction':_0x3a6760})[_0x7dee('0x2d')](function(){if(!_[_0x7dee('0x87')](_0x2ff832)){return _0xbcd685['removeAgents'](_0x2ff832,{'transaction':_0x3a6760});}})['then'](function(){_0x2ff832[_0x7dee('0x73')](function(_0xaea965){socket[_0x7dee('0x88')](_0x7dee('0x89'),{'UserId':_0xaea965,'OpenchannelQueueId':_0xbcd685['id']});});});});});});})['then'](respondWithStatusCode(_0xd071a6,null))[_0x7dee('0x4a')](handleError(_0xd071a6,null));};exports['addAgents']=function(_0x11e239,_0x1be5ff,_0x5ad635){return db[_0x7dee('0x36')][_0x7dee('0x55')]({'where':{'id':_0x11e239[_0x7dee('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1be5ff,null))[_0x7dee('0x2d')](function(_0x29c073){if(_0x29c073){return _0x29c073['addAgents'](_0x11e239[_0x7dee('0x52')][_0x7dee('0x6a')],_[_0x7dee('0x8a')](_0x11e239[_0x7dee('0x52')],[_0x7dee('0x6a'),'id'])||{})[_0x7dee('0x8b')](function(_0x4dbb31){for(var _0x4ee535=0x0;_0x4ee535<_0x11e239[_0x7dee('0x52')][_0x7dee('0x6a')]['length'];_0x4ee535+=0x1){socket[_0x7dee('0x88')](_0x7dee('0x74'),{'UserId':Number(_0x11e239[_0x7dee('0x52')]['ids'][_0x4ee535]),'OpenchannelQueueId':Number(_0x11e239[_0x7dee('0x4c')]['id'])});}return _0x4dbb31;});}})[_0x7dee('0x2d')](respondWithResult(_0x1be5ff,null))['catch'](handleError(_0x1be5ff,null));};exports[_0x7dee('0x8c')]=function(_0x268283,_0x5081e7,_0x1e6466){return db[_0x7dee('0x36')]['find']({'where':{'id':_0x268283['params']['id']}})['then'](handleEntityNotFound(_0x5081e7,null))[_0x7dee('0x2d')](function(_0x2ffd50){if(_0x2ffd50){return _0x2ffd50[_0x7dee('0x8c')](_0x268283['query']['ids'])[_0x7dee('0x2d')](function(){if(_[_0x7dee('0x8d')](_0x268283[_0x7dee('0x3b')][_0x7dee('0x6a')])){for(var _0x2abf18=0x0;_0x2abf18<_0x268283[_0x7dee('0x3b')]['ids'][_0x7dee('0x4f')];_0x2abf18+=0x1){socket[_0x7dee('0x88')](_0x7dee('0x89'),{'UserId':Number(_0x268283[_0x7dee('0x3b')]['ids'][_0x2abf18]),'OpenchannelQueueId':Number(_0x268283[_0x7dee('0x4c')]['id'])});}}else{socket[_0x7dee('0x88')](_0x7dee('0x89'),{'UserId':Number(_0x268283[_0x7dee('0x3b')]['ids']),'OpenchannelQueueId':Number(_0x268283[_0x7dee('0x4c')]['id'])});}});}})[_0x7dee('0x2d')](respondWithStatusCode(_0x5081e7,null))[_0x7dee('0x4a')](handleError(_0x5081e7,null));};exports[_0x7dee('0x8e')]=function(_0x1978f7,_0x29b4b5,_0xed9079){var _0x491166={};var _0x1aa778={};var _0x1a8490;var _0x24dcad;return db[_0x7dee('0x36')][_0x7dee('0x5a')]({'where':{'id':_0x1978f7['params']['id']}})['then'](handleEntityNotFound(_0x29b4b5,null))[_0x7dee('0x2d')](function(_0x32d6d7){if(_0x32d6d7){_0x1a8490=_0x32d6d7;_0x1aa778['model']=_['keys'](db['User']['rawAttributes']);_0x1aa778[_0x7dee('0x3b')]=_[_0x7dee('0x4d')](_0x1978f7[_0x7dee('0x3b')]);_0x1aa778['filters']=_['intersection'](_0x1aa778[_0x7dee('0x3a')],_0x1aa778[_0x7dee('0x3b')]);_0x491166[_0x7dee('0x3f')]=_['intersection'](_0x1aa778[_0x7dee('0x3a')],qs['fields'](_0x1978f7[_0x7dee('0x3b')]['fields']));_0x491166[_0x7dee('0x3f')]=_0x491166[_0x7dee('0x3f')][_0x7dee('0x4f')]?_0x491166[_0x7dee('0x3f')]:_0x1aa778[_0x7dee('0x3a')];_0x491166[_0x7dee('0x5d')]=qs[_0x7dee('0x41')](_0x1978f7['query']['sort']);_0x491166['where']=qs['filters'](_[_0x7dee('0x8f')](_0x1978f7[_0x7dee('0x3b')],_0x1aa778[_0x7dee('0x3c')]));if(_0x1978f7[_0x7dee('0x3b')][_0x7dee('0x43')]){_0x491166['where']=_[_0x7dee('0x44')](_0x491166['where'],{'$or':_[_0x7dee('0x35')](_0x491166[_0x7dee('0x3f')],function(_0x5edd20){var _0x38a9df={};_0x38a9df[_0x5edd20]={'$like':'%'+_0x1978f7['query']['filter']+'%'};return _0x38a9df;})});}_0x491166=_['merge']({},_0x491166,_0x1978f7[_0x7dee('0x46')]);return _0x1a8490['getAgents'](_0x491166);}})['then'](function(_0x4f7d59){if(_0x4f7d59){_0x24dcad=_0x4f7d59[_0x7dee('0x4f')];if(!_0x1978f7[_0x7dee('0x3b')][_0x7dee('0x5c')]('nolimit')){_0x491166[_0x7dee('0x24')]=qs['limit'](_0x1978f7[_0x7dee('0x3b')]['limit']);_0x491166[_0x7dee('0x26')]=qs[_0x7dee('0x26')](_0x1978f7[_0x7dee('0x3b')][_0x7dee('0x26')]);}return _0x1a8490[_0x7dee('0x8e')](_0x491166);}})['then'](function(_0x4384bd){if(_0x4384bd){return _0x4384bd?{'count':_0x24dcad,'rows':_0x4384bd}:null;}})[_0x7dee('0x2d')](respondWithResult(_0x29b4b5,null))[_0x7dee('0x4a')](handleError(_0x29b4b5,null));};
\ No newline at end of file
+var _0xc8c3=['each','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','all','value','transaction','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./openchannelQueue.socket','status','end','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','index','OpenchannelQueue','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','Agents','voicePause','flatMap','sequelize'];(function(_0x45cda1,_0x2ee1d5){var _0x2a5ad3=function(_0x3865d2){while(--_0x3865d2){_0x45cda1['push'](_0x45cda1['shift']());}};_0x2a5ad3(++_0x2ee1d5);}(_0xc8c3,0x1c3));var _0x3c8c=function(_0x5c18ef,_0xa2e81d){_0x5c18ef=_0x5c18ef-0x0;var _0x33789d=_0xc8c3[_0x5c18ef];return _0x33789d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3c8c('0x0'));var rp=require(_0x3c8c('0x1'));var moment=require(_0x3c8c('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3c8c('0x3'));var util=require(_0x3c8c('0x4'));var path=require(_0x3c8c('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3c8c('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c8c('0x7'));var squel=require(_0x3c8c('0x8'));var crypto=require(_0x3c8c('0x9'));var jsforce=require(_0x3c8c('0xa'));var deskjs=require(_0x3c8c('0xb'));var toCsv=require(_0x3c8c('0xc'));var querystring=require(_0x3c8c('0xd'));var Papa=require(_0x3c8c('0xe'));var Redis=require(_0x3c8c('0xf'));var authService=require(_0x3c8c('0x10'));var qs=require(_0x3c8c('0x11'));var as=require(_0x3c8c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c8c('0x13'))(_0x3c8c('0x14'));var utils=require(_0x3c8c('0x15'));var config=require(_0x3c8c('0x16'));var licenseUtil=require(_0x3c8c('0x17'));var db=require(_0x3c8c('0x18'))['db'];config['redis']=_[_0x3c8c('0x19')](config[_0x3c8c('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3c8c('0x1a')]));require(_0x3c8c('0x1b'))['register'](socket);function respondWithStatusCode(_0x28efb1,_0x382bc7){_0x382bc7=_0x382bc7||0xcc;return function(_0x306ba5){if(_0x306ba5){return _0x28efb1['sendStatus'](_0x382bc7);}return _0x28efb1[_0x3c8c('0x1c')](_0x382bc7)[_0x3c8c('0x1d')]();};}function respondWithResult(_0x3d0c3d,_0x4e8d4d){_0x4e8d4d=_0x4e8d4d||0xc8;return function(_0x4835fd){if(_0x4835fd){return _0x3d0c3d[_0x3c8c('0x1c')](_0x4e8d4d)[_0x3c8c('0x1e')](_0x4835fd);}};}function respondWithFilteredResult(_0x19cdf8,_0x4e35c1){return function(_0x416f01){if(_0x416f01){var _0x1f5cec=typeof _0x4e35c1['offset']===_0x3c8c('0x1f')&&typeof _0x4e35c1['limit']===_0x3c8c('0x1f');var _0x29398e=_0x416f01[_0x3c8c('0x20')];var _0x42a9ba=_0x1f5cec?0x0:_0x4e35c1['offset'];var _0x547eaf=_0x1f5cec?_0x416f01['count']:_0x4e35c1['offset']+_0x4e35c1[_0x3c8c('0x21')];var _0x80fe9c;if(_0x547eaf>=_0x29398e){_0x547eaf=_0x29398e;_0x80fe9c=0xc8;}else{_0x80fe9c=0xce;}_0x19cdf8['status'](_0x80fe9c);return _0x19cdf8[_0x3c8c('0x22')](_0x3c8c('0x23'),_0x42a9ba+'-'+_0x547eaf+'/'+_0x29398e)['json'](_0x416f01);}return null;};}function patchUpdates(_0x460d61){return function(_0x2a61be){try{jsonpatch[_0x3c8c('0x24')](_0x2a61be,_0x460d61,!![]);}catch(_0x41fba8){return BPromise[_0x3c8c('0x25')](_0x41fba8);}return _0x2a61be[_0x3c8c('0x26')]();};}function saveUpdates(_0x2e1579,_0x15a78c){return function(_0xf68079){if(_0xf68079){return _0xf68079[_0x3c8c('0x27')](_0x2e1579)[_0x3c8c('0x28')](function(_0x327cf0){return _0x327cf0;});}return null;};}function removeEntity(_0x2ccd83,_0x24c949){return function(_0x5e3b1b){if(_0x5e3b1b){return _0x5e3b1b[_0x3c8c('0x29')]()['then'](function(){var _0xc88a7c=_0x5e3b1b[_0x3c8c('0x2a')]({'plain':!![]});var _0xc1d49f=_0x3c8c('0x2b');return db[_0x3c8c('0x2c')][_0x3c8c('0x29')]({'where':{'type':_0xc1d49f,'resourceId':_0xc88a7c['id']}})['then'](function(){return _0x5e3b1b;});})['then'](function(){_0x2ccd83[_0x3c8c('0x1c')](0xcc)[_0x3c8c('0x1d')]();});}};}function handleEntityNotFound(_0x3ec5b1,_0x3e017e){return function(_0x38630e){if(!_0x38630e){_0x3ec5b1['sendStatus'](0x194);}return _0x38630e;};}function handleError(_0x57d1c6,_0x47989b){_0x47989b=_0x47989b||0x1f4;return function(_0x5efafe){logger[_0x3c8c('0x2d')](_0x5efafe[_0x3c8c('0x2e')]);if(_0x5efafe[_0x3c8c('0x2f')]){delete _0x5efafe[_0x3c8c('0x2f')];}_0x57d1c6[_0x3c8c('0x1c')](_0x47989b)['send'](_0x5efafe);};}exports[_0x3c8c('0x30')]=function(_0x1ad770,_0x32498c){var _0x1fa2ba={},_0x16d4d2={},_0x286b70={'count':0x0,'rows':[]};var _0x494ac8=_['map'](db[_0x3c8c('0x31')]['rawAttributes'],function(_0x53d440){return{'name':_0x53d440[_0x3c8c('0x32')],'type':_0x53d440['type'][_0x3c8c('0x33')]};});_0x16d4d2[_0x3c8c('0x34')]=_[_0x3c8c('0x35')](_0x494ac8,_0x3c8c('0x2f'));_0x16d4d2[_0x3c8c('0x36')]=_['keys'](_0x1ad770[_0x3c8c('0x36')]);_0x16d4d2[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x16d4d2['model'],_0x16d4d2[_0x3c8c('0x36')]);_0x1fa2ba[_0x3c8c('0x39')]=_['intersection'](_0x16d4d2['model'],qs['fields'](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x1fa2ba[_0x3c8c('0x39')]=_0x1fa2ba[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x1fa2ba[_0x3c8c('0x39')]:_0x16d4d2[_0x3c8c('0x34')];if(!_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3c')](_0x3c8c('0x3d'))){_0x1fa2ba[_0x3c8c('0x21')]=qs[_0x3c8c('0x21')](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x21')]);_0x1fa2ba[_0x3c8c('0x3e')]=qs[_0x3c8c('0x3e')](_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}_0x1fa2ba[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x1ad770['query'][_0x3c8c('0x40')]);_0x1fa2ba[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x1ad770[_0x3c8c('0x36')],_0x16d4d2['filters']),_0x494ac8);if(_0x1ad770['query'][_0x3c8c('0x43')]){_0x1fa2ba[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x1fa2ba[_0x3c8c('0x41')],{'$or':_['map'](_0x494ac8,function(_0x3a7a18){if(_0x3a7a18['type']!==_0x3c8c('0x45')){var _0x80ecbd={};_0x80ecbd[_0x3a7a18[_0x3c8c('0x2f')]]={'$like':'%'+_0x1ad770[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x80ecbd;}})});}_0x1fa2ba=_[_0x3c8c('0x44')]({},_0x1fa2ba,_0x1ad770[_0x3c8c('0x46')]);var _0x1b4ade={'where':_0x1fa2ba[_0x3c8c('0x41')]};return db[_0x3c8c('0x31')]['count'](_0x1b4ade)['then'](function(_0x40f26c){_0x286b70['count']=_0x40f26c;if(_0x1ad770['query'][_0x3c8c('0x47')]){_0x1fa2ba[_0x3c8c('0x48')]=[{'all':!![]}];}return db[_0x3c8c('0x31')][_0x3c8c('0x49')](_0x1fa2ba);})[_0x3c8c('0x28')](function(_0x1daa73){_0x286b70[_0x3c8c('0x4a')]=_0x1daa73;return _0x286b70;})[_0x3c8c('0x28')](respondWithFilteredResult(_0x32498c,_0x1fa2ba))[_0x3c8c('0x4b')](handleError(_0x32498c,null));};exports[_0x3c8c('0x4c')]=function(_0x1b41da,_0x4d788b){var _0x2be023={'raw':!![],'where':{'id':_0x1b41da['params']['id']}},_0x3cc7a0={};_0x3cc7a0['model']=_[_0x3c8c('0x4d')](db[_0x3c8c('0x31')][_0x3c8c('0x4e')]);_0x3cc7a0[_0x3c8c('0x36')]=_[_0x3c8c('0x4d')](_0x1b41da[_0x3c8c('0x36')]);_0x3cc7a0[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x3cc7a0['model'],_0x3cc7a0[_0x3c8c('0x36')]);_0x2be023['attributes']=_[_0x3c8c('0x38')](_0x3cc7a0['model'],qs[_0x3c8c('0x3a')](_0x1b41da[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x2be023[_0x3c8c('0x39')]=_0x2be023[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x2be023['attributes']:_0x3cc7a0[_0x3c8c('0x34')];if(_0x1b41da[_0x3c8c('0x36')][_0x3c8c('0x47')]){_0x2be023['include']=[{'all':!![]}];}_0x2be023=_['merge']({},_0x2be023,_0x1b41da['options']);return db[_0x3c8c('0x31')]['find'](_0x2be023)['then'](handleEntityNotFound(_0x4d788b,null))[_0x3c8c('0x28')](respondWithResult(_0x4d788b,null))[_0x3c8c('0x4b')](handleError(_0x4d788b,null));};exports[_0x3c8c('0x4f')]=function(_0x46e530,_0x5c1754){return db[_0x3c8c('0x31')][_0x3c8c('0x4f')](_0x46e530[_0x3c8c('0x50')],{})[_0x3c8c('0x28')](function(_0x1fbdaf){var _0x1c2e03=_0x46e530[_0x3c8c('0x51')][_0x3c8c('0x2a')]({'plain':!![]});if(!_0x1c2e03)throw new Error(_0x3c8c('0x52'));if(_0x1c2e03[_0x3c8c('0x53')]===_0x3c8c('0x51')){var _0xe0ddda=_0x1fbdaf['get']({'plain':!![]});var _0x45adb3=_0x3c8c('0x2b');return db[_0x3c8c('0x54')][_0x3c8c('0x55')]({'where':{'name':_0x45adb3,'userProfileId':_0x1c2e03['userProfileId']},'raw':!![]})[_0x3c8c('0x28')](function(_0x3330e5){if(_0x3330e5&&_0x3330e5['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xe0ddda[_0x3c8c('0x2f')],'resourceId':_0xe0ddda['id'],'type':_0x3330e5['name'],'sectionId':_0x3330e5['id']},{})[_0x3c8c('0x28')](function(){return _0x1fbdaf;});}else{return _0x1fbdaf;}})[_0x3c8c('0x4b')](function(_0x29962d){logger[_0x3c8c('0x2d')](_0x3c8c('0x56'),_0x29962d);throw _0x29962d;});}return _0x1fbdaf;})['then'](respondWithResult(_0x5c1754,0xc9))[_0x3c8c('0x4b')](handleError(_0x5c1754,null));};exports[_0x3c8c('0x27')]=function(_0xdd926d,_0x332138){if(_0xdd926d[_0x3c8c('0x50')]['id']){delete _0xdd926d[_0x3c8c('0x50')]['id'];}return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0xdd926d['params']['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x332138,null))[_0x3c8c('0x28')](saveUpdates(_0xdd926d[_0x3c8c('0x50')],null))[_0x3c8c('0x28')](respondWithResult(_0x332138,null))[_0x3c8c('0x4b')](handleError(_0x332138,null));};exports[_0x3c8c('0x29')]=function(_0x5c9afc,_0x475c38){return db[_0x3c8c('0x31')]['find']({'where':{'id':_0x5c9afc[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x475c38,null))[_0x3c8c('0x28')](removeEntity(_0x475c38,null))[_0x3c8c('0x4b')](handleError(_0x475c38,null));};exports[_0x3c8c('0x58')]=function(_0x4b9540,_0x3ec0a9){return db[_0x3c8c('0x31')][_0x3c8c('0x58')]()[_0x3c8c('0x28')](respondWithResult(_0x3ec0a9,null))[_0x3c8c('0x4b')](handleError(_0x3ec0a9,null));};exports['getMembers']=function(_0x386265,_0x12c87b,_0x36d3f9){var _0x33e64f={'raw':!![],'where':{}},_0x31ba26={},_0x1b55e4;return db[_0x3c8c('0x31')][_0x3c8c('0x59')]({'where':{'id':_0x386265[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x12c87b,null))[_0x3c8c('0x28')](function(_0x28f648){if(_0x28f648){_0x1b55e4=_0x28f648['get']({'plain':!![]});_0x31ba26[_0x3c8c('0x34')]=_[_0x3c8c('0x4d')](db[_0x3c8c('0x5a')][_0x3c8c('0x4e')]);_0x31ba26[_0x3c8c('0x36')]=_[_0x3c8c('0x4d')](_0x386265[_0x3c8c('0x36')]);_0x31ba26[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x31ba26[_0x3c8c('0x34')],_0x31ba26[_0x3c8c('0x36')]);_0x33e64f[_0x3c8c('0x39')]=_[_0x3c8c('0x38')](_0x31ba26['model'],qs['fields'](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x33e64f['attributes']=_0x33e64f[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x33e64f['attributes']:_0x31ba26[_0x3c8c('0x34')];if(!_0x386265['query']['hasOwnProperty']('nolimit')){_0x33e64f[_0x3c8c('0x21')]=qs['limit'](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x21')]);_0x33e64f[_0x3c8c('0x3e')]=qs[_0x3c8c('0x3e')](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}_0x33e64f[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x386265[_0x3c8c('0x36')][_0x3c8c('0x40')]);_0x33e64f[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x386265['query'],_0x31ba26[_0x3c8c('0x37')]));_0x33e64f[_0x3c8c('0x41')][_0x3c8c('0x5b')]=_0x28f648['id'];if(_0x386265[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x33e64f[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x33e64f[_0x3c8c('0x41')],{'$or':_['map'](_0x33e64f[_0x3c8c('0x39')],function(_0x5cf7c9){var _0x1c8847={};_0x1c8847[_0x5cf7c9]={'$like':'%'+_0x386265[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x1c8847;})});}_0x33e64f=_[_0x3c8c('0x44')]({},_0x33e64f,_0x386265[_0x3c8c('0x46')]);return db[_0x3c8c('0x5a')][_0x3c8c('0x49')](_0x33e64f);}})[_0x3c8c('0x28')](function(_0x5b83a5){if(_0x5b83a5){return db[_0x3c8c('0x5c')][_0x3c8c('0x5d')]({'where':{'id':_[_0x3c8c('0x35')](_0x5b83a5,_0x3c8c('0x5e')),'role':_0x3c8c('0x5f')},'attributes':['id',_0x3c8c('0x2f'),_0x3c8c('0x60'),_0x3c8c('0x61'),'createdAt']});}})[_0x3c8c('0x28')](function(_0x57039f){if(_0x57039f){return{'count':_0x57039f[_0x3c8c('0x20')],'rows':_['map'](_0x57039f[_0x3c8c('0x4a')],function(_0x2d4448){return{'membername':_0x2d4448[_0x3c8c('0x2f')],'UserId':_0x2d4448['id'],'queue_name':_0x1b55e4[_0x3c8c('0x2f')],'OpenchannelQueueId':_0x1b55e4['id'],'interface':util['format'](_0x3c8c('0x62'),_0x3c8c('0x63'),_0x2d4448[_0x3c8c('0x2f')]),'penalty':0x0,'paused':_0x2d4448[_0x3c8c('0x60')],'createdAt':_0x2d4448[_0x3c8c('0x64')],'updatedAt':_0x2d4448[_0x3c8c('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3c8c('0x28')](respondWithFilteredResult(_0x12c87b,_0x33e64f))['catch'](handleError(_0x12c87b,null));};exports[_0x3c8c('0x65')]=function(_0x5c51a,_0x4d383c,_0x51c7e0){var _0x368ec9={};var _0x57878f={};var _0xbd318b;var _0x481612;return db[_0x3c8c('0x31')][_0x3c8c('0x59')]({'where':{'id':_0x5c51a[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x4d383c,null))[_0x3c8c('0x28')](function(_0x4a336a){if(_0x4a336a){_0xbd318b=_0x4a336a;_0x57878f['model']=_['keys'](db[_0x3c8c('0x66')]['rawAttributes']);_0x57878f[_0x3c8c('0x36')]=_['keys'](_0x5c51a[_0x3c8c('0x36')]);_0x57878f[_0x3c8c('0x37')]=_[_0x3c8c('0x38')](_0x57878f[_0x3c8c('0x34')],_0x57878f[_0x3c8c('0x36')]);_0x368ec9[_0x3c8c('0x39')]=_['intersection'](_0x57878f[_0x3c8c('0x34')],qs[_0x3c8c('0x3a')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x3a')]));_0x368ec9[_0x3c8c('0x39')]=_0x368ec9[_0x3c8c('0x39')]['length']?_0x368ec9[_0x3c8c('0x39')]:_0x57878f[_0x3c8c('0x34')];_0x368ec9[_0x3c8c('0x3f')]=qs[_0x3c8c('0x40')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x40')]);_0x368ec9[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_[_0x3c8c('0x42')](_0x5c51a['query'],_0x57878f[_0x3c8c('0x37')]));if(_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x368ec9[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x368ec9[_0x3c8c('0x41')],{'$or':_[_0x3c8c('0x35')](_0x368ec9[_0x3c8c('0x39')],function(_0x2261b8){var _0x3774e1={};_0x3774e1[_0x2261b8]={'$like':'%'+_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x3774e1;})});}_0x368ec9=_[_0x3c8c('0x44')]({},_0x368ec9,_0x5c51a[_0x3c8c('0x46')]);return _0xbd318b[_0x3c8c('0x65')](_0x368ec9);}})[_0x3c8c('0x28')](function(_0x591c67){if(_0x591c67){_0x481612=_0x591c67[_0x3c8c('0x3b')];if(!_0x5c51a[_0x3c8c('0x36')]['hasOwnProperty'](_0x3c8c('0x3d'))){_0x368ec9['limit']=qs[_0x3c8c('0x21')](_0x5c51a['query'][_0x3c8c('0x21')]);_0x368ec9['offset']=qs[_0x3c8c('0x3e')](_0x5c51a[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}return _0xbd318b[_0x3c8c('0x65')](_0x368ec9);}})[_0x3c8c('0x28')](function(_0x5c8eb9){if(_0x5c8eb9){return _0x5c8eb9?{'count':_0x481612,'rows':_0x5c8eb9}:null;}})[_0x3c8c('0x28')](respondWithResult(_0x4d383c,null))['catch'](handleError(_0x4d383c,null));};exports[_0x3c8c('0x67')]=function(_0x3b2ae2,_0x37156b,_0x729d0e){var _0x445317=_0x3b2ae2[_0x3c8c('0x50')][_0x3c8c('0x68')];return db[_0x3c8c('0x66')][_0x3c8c('0x49')]({'where':{'id':_0x445317},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3c8c('0x69'),'attributes':['id','name','online',_0x3c8c('0x6a'),'interface'],'raw':!![]}]})[_0x3c8c('0x28')](function(_0x4469c3){if(_0x4469c3){var _0x5c3105=_[_0x3c8c('0x6b')](_0x4469c3,function(_0x225cda){var _0x5a40b4=_0x225cda[_0x3c8c('0x2a')]({'plain':!![]});return _0x5a40b4[_0x3c8c('0x69')];});return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0x3b2ae2['params']['id']}})['then'](function(_0x586130){return db[_0x3c8c('0x6c')]['transaction'](function(_0x33781b){return _0x586130[_0x3c8c('0x67')](_0x445317,{'transaction':_0x33781b})[_0x3c8c('0x28')](function(){return BPromise[_0x3c8c('0x6d')](_0x5c3105,function(_0x4ac5de){return db[_0x3c8c('0x5a')][_0x3c8c('0x6e')]({'where':{'UserId':_0x4ac5de['id'],'OpenchannelQueueId':_0x3b2ae2[_0x3c8c('0x57')]['id']},'transaction':_0x33781b});});})['then'](function(){_0x5c3105[_0x3c8c('0x6f')](function(_0x9fffc8){socket[_0x3c8c('0x70')](_0x3c8c('0x71'),{'UserId':_0x9fffc8['id'],'OpenchannelQueueId':_0x586130['id']});});});});});}})['then'](respondWithStatusCode(_0x37156b,null))[_0x3c8c('0x4b')](handleError(_0x37156b,null));};exports[_0x3c8c('0x72')]=function(_0x4aaade,_0x593344,_0x444d83){return db[_0x3c8c('0x66')][_0x3c8c('0x49')]({'where':{'id':_0x4aaade[_0x3c8c('0x36')][_0x3c8c('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3c8c('0x69'),'attributes':['id'],'raw':!![]}]})[_0x3c8c('0x28')](handleEntityNotFound(_0x593344,null))[_0x3c8c('0x28')](function(_0x1dd3ff){var _0x35436a=_['map'](_0x1dd3ff,'id');var _0x46a289=[];var _0x2f528b=[];var _0x1fe82b=squel[_0x3c8c('0x73')]();_0x1fe82b[_0x3c8c('0x74')](_0x3c8c('0x75'))[_0x3c8c('0x76')](_0x3c8c('0x77'),'tq')[_0x3c8c('0x78')](_0x3c8c('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3c8c('0x41')](_0x3c8c('0x7a'),_0x4aaade[_0x3c8c('0x57')]['id']);for(var _0x4cc78b=0x0;_0x4cc78b<_0x1dd3ff[_0x3c8c('0x3b')];_0x4cc78b+=0x1){let _0x10ea83=_0x1dd3ff[_0x4cc78b];for(var _0x5c868f=0x0;_0x5c868f<_0x10ea83['Agents'][_0x3c8c('0x3b')];_0x5c868f+=0x1){let _0x55259e=_0x10ea83[_0x3c8c('0x69')][_0x5c868f];var _0x4edfc0=_0x1fe82b[_0x3c8c('0x7b')]();_0x4edfc0['where']('ut.UserId\x20=\x20?',_0x55259e['id']);_0x2f528b[_0x3c8c('0x7c')](db[_0x3c8c('0x6c')][_0x3c8c('0x36')](_0x4edfc0['toString'](),{'type':db['sequelize'][_0x3c8c('0x7d')][_0x3c8c('0x7e')]})['then'](function(_0x2a7c47){if(_0x2a7c47[_0x3c8c('0x3b')]===0x1){return _0x55259e['id'];}else{var _0x45f030=_[_0x3c8c('0x7f')](_[_0x3c8c('0x35')](_0x2a7c47,_0x3c8c('0x80')),function(_0x17ff66){return _['includes'](_0x35436a,_0x17ff66);});if(_0x45f030){return _0x55259e['id'];}}}));}}return BPromise[_0x3c8c('0x81')](_0x2f528b)['then'](function(_0x49c805){_0x46a289=_(_0x46a289)['union'](_0x49c805)['compact']()[_0x3c8c('0x82')]();return db['OpenchannelQueue'][_0x3c8c('0x55')]({'where':{'id':_0x4aaade[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](function(_0x1f98d7){return db[_0x3c8c('0x6c')][_0x3c8c('0x83')](function(_0x2facf9){return _0x1f98d7['removeTeams'](_0x4aaade[_0x3c8c('0x36')]['ids'],{'transaction':_0x2facf9})[_0x3c8c('0x28')](function(){if(!_[_0x3c8c('0x84')](_0x46a289)){return _0x1f98d7[_0x3c8c('0x85')](_0x46a289,{'transaction':_0x2facf9});}})['then'](function(){_0x46a289['forEach'](function(_0x5cce37){socket[_0x3c8c('0x70')](_0x3c8c('0x86'),{'UserId':_0x5cce37,'OpenchannelQueueId':_0x1f98d7['id']});});});});});});})[_0x3c8c('0x28')](respondWithStatusCode(_0x593344,null))[_0x3c8c('0x4b')](handleError(_0x593344,null));};exports[_0x3c8c('0x87')]=function(_0x31d223,_0x3b9718,_0x1bcc83){return db[_0x3c8c('0x31')]['find']({'where':{'id':_0x31d223[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x3b9718,null))[_0x3c8c('0x28')](function(_0x3e4166){if(_0x3e4166){return _0x3e4166[_0x3c8c('0x87')](_0x31d223[_0x3c8c('0x50')]['ids'],_[_0x3c8c('0x88')](_0x31d223[_0x3c8c('0x50')],[_0x3c8c('0x68'),'id'])||{})[_0x3c8c('0x89')](function(_0x3a3e4e){for(var _0x31ce2f=0x0;_0x31ce2f<_0x31d223['body'][_0x3c8c('0x68')][_0x3c8c('0x3b')];_0x31ce2f+=0x1){socket[_0x3c8c('0x70')](_0x3c8c('0x71'),{'UserId':Number(_0x31d223[_0x3c8c('0x50')][_0x3c8c('0x68')][_0x31ce2f]),'OpenchannelQueueId':Number(_0x31d223[_0x3c8c('0x57')]['id'])});}return _0x3a3e4e;});}})['then'](respondWithResult(_0x3b9718,null))[_0x3c8c('0x4b')](handleError(_0x3b9718,null));};exports[_0x3c8c('0x85')]=function(_0x1d9cb8,_0x593612,_0x5cc246){return db[_0x3c8c('0x31')][_0x3c8c('0x55')]({'where':{'id':_0x1d9cb8[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x593612,null))[_0x3c8c('0x28')](function(_0x58c7a4){if(_0x58c7a4){return _0x58c7a4['removeAgents'](_0x1d9cb8[_0x3c8c('0x36')]['ids'])[_0x3c8c('0x28')](function(){if(_[_0x3c8c('0x8a')](_0x1d9cb8[_0x3c8c('0x36')]['ids'])){for(var _0x1b246d=0x0;_0x1b246d<_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')]['length'];_0x1b246d+=0x1){socket['emit'](_0x3c8c('0x86'),{'UserId':Number(_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')][_0x1b246d]),'OpenchannelQueueId':Number(_0x1d9cb8[_0x3c8c('0x57')]['id'])});}}else{socket[_0x3c8c('0x70')](_0x3c8c('0x86'),{'UserId':Number(_0x1d9cb8[_0x3c8c('0x36')][_0x3c8c('0x68')]),'OpenchannelQueueId':Number(_0x1d9cb8[_0x3c8c('0x57')]['id'])});}});}})[_0x3c8c('0x28')](respondWithStatusCode(_0x593612,null))['catch'](handleError(_0x593612,null));};exports[_0x3c8c('0x8b')]=function(_0x281df5,_0x4c2954,_0x5b9dc1){var _0x29f211={};var _0x11ea4b={};var _0x26fd59;var _0x1203a9;return db['OpenchannelQueue'][_0x3c8c('0x59')]({'where':{'id':_0x281df5[_0x3c8c('0x57')]['id']}})[_0x3c8c('0x28')](handleEntityNotFound(_0x4c2954,null))[_0x3c8c('0x28')](function(_0x11f54d){if(_0x11f54d){_0x26fd59=_0x11f54d;_0x11ea4b[_0x3c8c('0x34')]=_[_0x3c8c('0x4d')](db[_0x3c8c('0x5c')][_0x3c8c('0x4e')]);_0x11ea4b[_0x3c8c('0x36')]=_['keys'](_0x281df5['query']);_0x11ea4b[_0x3c8c('0x37')]=_['intersection'](_0x11ea4b[_0x3c8c('0x34')],_0x11ea4b[_0x3c8c('0x36')]);_0x29f211['attributes']=_['intersection'](_0x11ea4b[_0x3c8c('0x34')],qs[_0x3c8c('0x3a')](_0x281df5['query'][_0x3c8c('0x3a')]));_0x29f211['attributes']=_0x29f211[_0x3c8c('0x39')][_0x3c8c('0x3b')]?_0x29f211[_0x3c8c('0x39')]:_0x11ea4b['model'];_0x29f211[_0x3c8c('0x3f')]=qs['sort'](_0x281df5[_0x3c8c('0x36')]['sort']);_0x29f211[_0x3c8c('0x41')]=qs[_0x3c8c('0x37')](_['pick'](_0x281df5[_0x3c8c('0x36')],_0x11ea4b[_0x3c8c('0x37')]));if(_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x43')]){_0x29f211[_0x3c8c('0x41')]=_[_0x3c8c('0x44')](_0x29f211[_0x3c8c('0x41')],{'$or':_[_0x3c8c('0x35')](_0x29f211[_0x3c8c('0x39')],function(_0x249787){var _0x51e022={};_0x51e022[_0x249787]={'$like':'%'+_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x43')]+'%'};return _0x51e022;})});}_0x29f211=_[_0x3c8c('0x44')]({},_0x29f211,_0x281df5[_0x3c8c('0x46')]);return _0x26fd59[_0x3c8c('0x8b')](_0x29f211);}})[_0x3c8c('0x28')](function(_0x4198b5){if(_0x4198b5){_0x1203a9=_0x4198b5['length'];if(!_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x3c')]('nolimit')){_0x29f211[_0x3c8c('0x21')]=qs['limit'](_0x281df5['query'][_0x3c8c('0x21')]);_0x29f211['offset']=qs[_0x3c8c('0x3e')](_0x281df5[_0x3c8c('0x36')][_0x3c8c('0x3e')]);}return _0x26fd59['getAgents'](_0x29f211);}})[_0x3c8c('0x28')](function(_0xd07cdb){if(_0xd07cdb){return _0xd07cdb?{'count':_0x1203a9,'rows':_0xd07cdb}:null;}})[_0x3c8c('0x28')](respondWithResult(_0x4c2954,null))['catch'](handleError(_0x4c2954,null));};
\ No newline at end of file
index bd80c93..81a857c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e2=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x2f52c7,_0x1dbf4f){var _0x24a074=function(_0x54e05f){while(--_0x54e05f){_0x2f52c7['push'](_0x2f52c7['shift']());}};_0x24a074(++_0x1dbf4f);}(_0xa7e2,0x1bb));var _0x2a7e=function(_0xa62b40,_0x5b4794){_0xa62b40=_0xa62b40-0x0;var _0x2b14e9=_0xa7e2[_0xa62b40];return _0x2b14e9;};'use strict';var EventEmitter=require(_0x2a7e('0x0'));var OpenchannelQueue=require(_0x2a7e('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x2a7e('0x2')](0x0);var events={'afterCreate':_0x2a7e('0x3'),'afterUpdate':_0x2a7e('0x4'),'afterDestroy':_0x2a7e('0x5')};function emitEvent(_0x38fbbb){return function(_0x3d2f4b,_0x24d0d2,_0x16fd80){OpenchannelQueueEvents['emit'](_0x38fbbb+':'+_0x3d2f4b['id'],_0x3d2f4b);OpenchannelQueueEvents[_0x2a7e('0x6')](_0x38fbbb,_0x3d2f4b);_0x16fd80(null);};}for(var e in events){if(events[_0x2a7e('0x7')](e)){var event=events[e];OpenchannelQueue[_0x2a7e('0x8')](e,emitEvent(event));}}module[_0x2a7e('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x41c0=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x329808,_0x343255){var _0x1bbad0=function(_0x458c5b){while(--_0x458c5b){_0x329808['push'](_0x329808['shift']());}};_0x1bbad0(++_0x343255);}(_0x41c0,0x1d1));var _0x041c=function(_0x509273,_0x13fc9f){_0x509273=_0x509273-0x0;var _0x38ef40=_0x41c0[_0x509273];return _0x38ef40;};'use strict';var EventEmitter=require(_0x041c('0x0'));var OpenchannelQueue=require(_0x041c('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x041c('0x2')](0x0);var events={'afterCreate':_0x041c('0x3'),'afterUpdate':_0x041c('0x4'),'afterDestroy':_0x041c('0x5')};function emitEvent(_0x14f642){return function(_0x17ba75,_0x29ebc9,_0xaa1863){OpenchannelQueueEvents[_0x041c('0x6')](_0x14f642+':'+_0x17ba75['id'],_0x17ba75);OpenchannelQueueEvents[_0x041c('0x6')](_0x14f642,_0x17ba75);_0xaa1863(null);};}for(var e in events){if(events[_0x041c('0x7')](e)){var event=events[e];OpenchannelQueue[_0x041c('0x8')](e,emitEvent(event));}}module[_0x041c('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
index bce5f77..f1fc221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf839=['lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues'];(function(_0x12012d,_0x46e1f6){var _0x2ccaf1=function(_0x3a9488){while(--_0x3a9488){_0x12012d['push'](_0x12012d['shift']());}};_0x2ccaf1(++_0x46e1f6);}(_0xf839,0xd8));var _0x9f83=function(_0x199e54,_0x446381){_0x199e54=_0x199e54-0x0;var _0x46548e=_0xf839[_0x199e54];return _0x46548e;};'use strict';var _=require(_0x9f83('0x0'));var util=require('util');var logger=require(_0x9f83('0x1'))(_0x9f83('0x2'));var moment=require('moment');var BPromise=require(_0x9f83('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9f83('0x4'));var rimraf=require(_0x9f83('0x5'));var config=require(_0x9f83('0x6'));var attributes=require(_0x9f83('0x7'));module[_0x9f83('0x8')]=function(_0xc0b2ec,_0x10bad9){return _0xc0b2ec[_0x9f83('0x9')](_0x9f83('0xa'),attributes,{'tableName':_0x9f83('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x00f2=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','./openchannelQueue.attributes','openchannel_queues'];(function(_0x3cd9ca,_0x37f8b8){var _0x19b9c6=function(_0x494399){while(--_0x494399){_0x3cd9ca['push'](_0x3cd9ca['shift']());}};_0x19b9c6(++_0x37f8b8);}(_0x00f2,0xe1));var _0x200f=function(_0x4f4282,_0x49b66e){_0x4f4282=_0x4f4282-0x0;var _0x5ad5f4=_0x00f2[_0x4f4282];return _0x5ad5f4;};'use strict';var _=require(_0x200f('0x0'));var util=require(_0x200f('0x1'));var logger=require(_0x200f('0x2'))('api');var moment=require(_0x200f('0x3'));var BPromise=require(_0x200f('0x4'));var rp=require(_0x200f('0x5'));var fs=require('fs');var path=require(_0x200f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x200f('0x7'));module['exports']=function(_0x235a1e,_0x37a321){return _0x235a1e['define']('OpenchannelQueue',attributes,{'tableName':_0x200f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5cf7ddb..03a1b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35fd=['register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','GetOpenchannelQueue','OpenchannelQueue','options','where','limit','include','map','model','attributes','ShowOpenchannelQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelQueue.socket'];(function(_0x4788c7,_0x596e2c){var _0x2fc36f=function(_0x51e819){while(--_0x51e819){_0x4788c7['push'](_0x4788c7['shift']());}};_0x2fc36f(++_0x596e2c);}(_0x35fd,0xdb));var _0xd35f=function(_0x2d3988,_0x1716ec){_0x2d3988=_0x2d3988-0x0;var _0x44fa2c=_0x35fd[_0x2d3988];return _0x44fa2c;};'use strict';var _=require(_0xd35f('0x0'));var util=require(_0xd35f('0x1'));var moment=require(_0xd35f('0x2'));var BPromise=require('bluebird');var rs=require(_0xd35f('0x3'));var fs=require('fs');var Redis=require(_0xd35f('0x4'));var db=require(_0xd35f('0x5'))['db'];var utils=require(_0xd35f('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xd35f('0x7'));var jayson=require(_0xd35f('0x8'));var client=jayson[_0xd35f('0x9')][_0xd35f('0xa')]({'port':0x232a});config[_0xd35f('0xb')]=_[_0xd35f('0xc')](config['redis'],{'host':_0xd35f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd35f('0xb')]));require(_0xd35f('0xe'))[_0xd35f('0xf')](socket);function respondWithRpcPromise(_0x2ec9a6,_0x28f554,_0x147093){return new BPromise(function(_0x36dbb5,_0x122e4c){return client[_0xd35f('0x10')](_0x2ec9a6,_0x147093)[_0xd35f('0x11')](function(_0x444bab){logger[_0xd35f('0x12')](_0xd35f('0x13'),_0x28f554,'request\x20sent');logger[_0xd35f('0x14')](_0xd35f('0x15'),_0x28f554,'request\x20sent',JSON[_0xd35f('0x16')](_0x444bab));if(_0x444bab[_0xd35f('0x17')]){if(_0x444bab[_0xd35f('0x17')][_0xd35f('0x18')]===0x1f4){logger['error'](_0xd35f('0x13'),_0x28f554,_0x444bab[_0xd35f('0x17')][_0xd35f('0x19')]);return _0x122e4c(_0x444bab[_0xd35f('0x17')][_0xd35f('0x19')]);}logger[_0xd35f('0x17')](_0xd35f('0x13'),_0x28f554,_0x444bab[_0xd35f('0x17')]['message']);return _0x36dbb5(_0x444bab['error'][_0xd35f('0x19')]);}else{logger['info'](_0xd35f('0x13'),_0x28f554,_0xd35f('0x1a'));_0x36dbb5(_0x444bab['result'][_0xd35f('0x19')]);}})[_0xd35f('0x1b')](function(_0x24c3c2){logger[_0xd35f('0x17')](_0xd35f('0x13'),_0x28f554,_0x24c3c2);_0x122e4c(_0x24c3c2);});});}exports[_0xd35f('0x1c')]=function(_0x5dbcf5){var _0x5314a2=this;return new Promise(function(_0x38aacf,_0x11f0de){return db[_0xd35f('0x1d')]['findAll']({'raw':_0x5dbcf5[_0xd35f('0x1e')]?_0x5dbcf5[_0xd35f('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5dbcf5[_0xd35f('0x1e')]?_0x5dbcf5[_0xd35f('0x1e')][_0xd35f('0x1f')]||null:null,'attributes':_0x5dbcf5[_0xd35f('0x1e')]?_0x5dbcf5[_0xd35f('0x1e')]['attributes']||null:null,'limit':_0x5dbcf5[_0xd35f('0x1e')]?_0x5dbcf5['options'][_0xd35f('0x20')]||null:null,'include':_0x5dbcf5[_0xd35f('0x1e')]?_0x5dbcf5[_0xd35f('0x1e')][_0xd35f('0x21')]?_[_0xd35f('0x22')](_0x5dbcf5[_0xd35f('0x1e')][_0xd35f('0x21')],function(_0x56fb75){return{'model':db[_0x56fb75[_0xd35f('0x23')]],'as':_0x56fb75['as'],'attributes':_0x56fb75[_0xd35f('0x24')],'include':_0x56fb75[_0xd35f('0x21')]?_['map'](_0x56fb75[_0xd35f('0x21')],function(_0x345f40){return{'model':db[_0x345f40['model']],'as':_0x345f40['as'],'attributes':_0x345f40[_0xd35f('0x24')],'include':_0x345f40[_0xd35f('0x21')]?_[_0xd35f('0x22')](_0x345f40[_0xd35f('0x21')],function(_0x4eb8db){return{'model':db[_0x4eb8db['model']],'as':_0x4eb8db['as'],'attributes':_0x4eb8db[_0xd35f('0x24')]};}):[]};}):[]};}):[]:[]})[_0xd35f('0x11')](function(_0x47d76d){logger[_0xd35f('0x12')]('GetOpenchannelQueue',_0x5dbcf5);logger[_0xd35f('0x14')]('GetOpenchannelQueue',_0x5dbcf5,JSON[_0xd35f('0x16')](_0x47d76d));_0x38aacf(_0x47d76d);})[_0xd35f('0x1b')](function(_0x197b32){logger[_0xd35f('0x17')]('GetOpenchannelQueue',_0x197b32[_0xd35f('0x19')],_0x5dbcf5);_0x11f0de(_0x5314a2[_0xd35f('0x17')](0x1f4,_0x197b32['message']));});});};exports[_0xd35f('0x25')]=function(_0x13f218){var _0x2438eb=this;return new Promise(function(_0xaf4158,_0xfec116){return db[_0xd35f('0x1d')][_0xd35f('0x26')]({'raw':_0x13f218[_0xd35f('0x1e')]?_0x13f218[_0xd35f('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x13f218[_0xd35f('0x1e')]?_0x13f218['options'][_0xd35f('0x1f')]||null:null,'attributes':_0x13f218['options']?_0x13f218['options']['attributes']||null:null,'include':_0x13f218[_0xd35f('0x1e')]?_0x13f218[_0xd35f('0x1e')][_0xd35f('0x21')]?_['map'](_0x13f218['options']['include'],function(_0x339597){return{'model':db[_0x339597['model']],'as':_0x339597['as'],'attributes':_0x339597['attributes'],'include':_0x339597['include']?_[_0xd35f('0x22')](_0x339597[_0xd35f('0x21')],function(_0x3d61f8){return{'model':db[_0x3d61f8[_0xd35f('0x23')]],'as':_0x3d61f8['as'],'attributes':_0x3d61f8[_0xd35f('0x24')],'include':_0x3d61f8[_0xd35f('0x21')]?_[_0xd35f('0x22')](_0x3d61f8[_0xd35f('0x21')],function(_0x32aef3){return{'model':db[_0x32aef3['model']],'as':_0x32aef3['as'],'attributes':_0x32aef3[_0xd35f('0x24')]};}):[]};}):[]};}):[]:[]})[_0xd35f('0x11')](function(_0x2f90ef){logger[_0xd35f('0x12')](_0xd35f('0x25'),_0x13f218);logger[_0xd35f('0x14')](_0xd35f('0x25'),_0x13f218,JSON['stringify'](_0x2f90ef));_0xaf4158(_0x2f90ef);})[_0xd35f('0x1b')](function(_0x2318ab){logger['error'](_0xd35f('0x25'),_0x2318ab[_0xd35f('0x19')],_0x13f218);_0xfec116(_0x2438eb[_0xd35f('0x17')](0x1f4,_0x2318ab['message']));});});};
\ No newline at end of file
+var _0x257d=['map','model','debug','catch','ShowOpenchannelQueue','find','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','where','attributes','limit','include'];(function(_0x236d24,_0x29e80a){var _0x1574cf=function(_0x5d1dad){while(--_0x5d1dad){_0x236d24['push'](_0x236d24['shift']());}};_0x1574cf(++_0x29e80a);}(_0x257d,0x1ab));var _0xd257=function(_0x3b0c88,_0x4d7067){_0x3b0c88=_0x3b0c88-0x0;var _0x6e53a=_0x257d[_0x3b0c88];return _0x6e53a;};'use strict';var _=require('lodash');var util=require(_0xd257('0x0'));var moment=require(_0xd257('0x1'));var BPromise=require(_0xd257('0x2'));var rs=require(_0xd257('0x3'));var fs=require('fs');var Redis=require(_0xd257('0x4'));var db=require(_0xd257('0x5'))['db'];var utils=require(_0xd257('0x6'));var logger=require(_0xd257('0x7'))('rpc');var config=require(_0xd257('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd257('0x9')][_0xd257('0xa')]({'port':0x232a});config[_0xd257('0xb')]=_[_0xd257('0xc')](config[_0xd257('0xb')],{'host':_0xd257('0xd'),'port':0x18eb});var socket=require(_0xd257('0xe'))(new Redis(config[_0xd257('0xb')]));require(_0xd257('0xf'))['register'](socket);function respondWithRpcPromise(_0xbb5b83,_0x1bd318,_0x1c625e){return new BPromise(function(_0x58e1fa,_0x1333b3){return client[_0xd257('0x10')](_0xbb5b83,_0x1c625e)[_0xd257('0x11')](function(_0xaca617){logger['info'](_0xd257('0x12'),_0x1bd318,_0xd257('0x13'));logger['debug'](_0xd257('0x14'),_0x1bd318,_0xd257('0x13'),JSON[_0xd257('0x15')](_0xaca617));if(_0xaca617[_0xd257('0x16')]){if(_0xaca617[_0xd257('0x16')][_0xd257('0x17')]===0x1f4){logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0xaca617[_0xd257('0x16')][_0xd257('0x18')]);return _0x1333b3(_0xaca617[_0xd257('0x16')][_0xd257('0x18')]);}logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0xaca617['error']['message']);return _0x58e1fa(_0xaca617[_0xd257('0x16')]['message']);}else{logger[_0xd257('0x19')](_0xd257('0x12'),_0x1bd318,_0xd257('0x13'));_0x58e1fa(_0xaca617[_0xd257('0x1a')]['message']);}})['catch'](function(_0x1c033e){logger[_0xd257('0x16')](_0xd257('0x12'),_0x1bd318,_0x1c033e);_0x1333b3(_0x1c033e);});});}exports[_0xd257('0x1b')]=function(_0x1d8d27){var _0x21ce14=this;return new Promise(function(_0x3331b1,_0x33c0ad){return db[_0xd257('0x1c')][_0xd257('0x1d')]({'raw':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27['options'][_0xd257('0x1f')]||null:null,'attributes':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x20')]||null:null,'limit':_0x1d8d27['options']?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x21')]||null:null,'include':_0x1d8d27[_0xd257('0x1e')]?_0x1d8d27[_0xd257('0x1e')][_0xd257('0x22')]?_[_0xd257('0x23')](_0x1d8d27[_0xd257('0x1e')]['include'],function(_0x24698b){return{'model':db[_0x24698b['model']],'as':_0x24698b['as'],'attributes':_0x24698b[_0xd257('0x20')],'include':_0x24698b[_0xd257('0x22')]?_['map'](_0x24698b[_0xd257('0x22')],function(_0x309a0d){return{'model':db[_0x309a0d[_0xd257('0x24')]],'as':_0x309a0d['as'],'attributes':_0x309a0d['attributes'],'include':_0x309a0d[_0xd257('0x22')]?_[_0xd257('0x23')](_0x309a0d[_0xd257('0x22')],function(_0x29aae3){return{'model':db[_0x29aae3['model']],'as':_0x29aae3['as'],'attributes':_0x29aae3['attributes']};}):[]};}):[]};}):[]:[]})[_0xd257('0x11')](function(_0x529e1d){logger[_0xd257('0x19')](_0xd257('0x1b'),_0x1d8d27);logger[_0xd257('0x25')](_0xd257('0x1b'),_0x1d8d27,JSON[_0xd257('0x15')](_0x529e1d));_0x3331b1(_0x529e1d);})[_0xd257('0x26')](function(_0x527498){logger[_0xd257('0x16')](_0xd257('0x1b'),_0x527498[_0xd257('0x18')],_0x1d8d27);_0x33c0ad(_0x21ce14[_0xd257('0x16')](0x1f4,_0x527498['message']));});});};exports[_0xd257('0x27')]=function(_0x3c9281){var _0x208dab=this;return new Promise(function(_0x3466b2,_0xdff4c3){return db['OpenchannelQueue'][_0xd257('0x28')]({'raw':_0x3c9281[_0xd257('0x1e')]?_0x3c9281['options'][_0xd257('0x29')]===undefined?!![]:![]:!![],'where':_0x3c9281['options']?_0x3c9281[_0xd257('0x1e')][_0xd257('0x1f')]||null:null,'attributes':_0x3c9281['options']?_0x3c9281[_0xd257('0x1e')][_0xd257('0x20')]||null:null,'include':_0x3c9281[_0xd257('0x1e')]?_0x3c9281[_0xd257('0x1e')]['include']?_[_0xd257('0x23')](_0x3c9281['options'][_0xd257('0x22')],function(_0x600f80){return{'model':db[_0x600f80[_0xd257('0x24')]],'as':_0x600f80['as'],'attributes':_0x600f80[_0xd257('0x20')],'include':_0x600f80[_0xd257('0x22')]?_[_0xd257('0x23')](_0x600f80[_0xd257('0x22')],function(_0x4c07ea){return{'model':db[_0x4c07ea[_0xd257('0x24')]],'as':_0x4c07ea['as'],'attributes':_0x4c07ea[_0xd257('0x20')],'include':_0x4c07ea['include']?_[_0xd257('0x23')](_0x4c07ea[_0xd257('0x22')],function(_0xf23eda){return{'model':db[_0xf23eda[_0xd257('0x24')]],'as':_0xf23eda['as'],'attributes':_0xf23eda[_0xd257('0x20')]};}):[]};}):[]};}):[]:[]})[_0xd257('0x11')](function(_0x19012b){logger[_0xd257('0x19')](_0xd257('0x27'),_0x3c9281);logger['debug'](_0xd257('0x27'),_0x3c9281,JSON['stringify'](_0x19012b));_0x3466b2(_0x19012b);})[_0xd257('0x26')](function(_0x4ad0e0){logger[_0xd257('0x16')](_0xd257('0x27'),_0x4ad0e0[_0xd257('0x18')],_0x3c9281);_0xdff4c3(_0x208dab[_0xd257('0x16')](0x1f4,_0x4ad0e0['message']));});});};
\ No newline at end of file
index 302328b..5c98210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a71=['register','length','openchannelQueue:','save','remove','update','removeListener'];(function(_0x387c3d,_0x4c5c39){var _0x87039c=function(_0x429a69){while(--_0x429a69){_0x387c3d['push'](_0x387c3d['shift']());}};_0x87039c(++_0x4c5c39);}(_0x1a71,0x1ed));var _0x11a7=function(_0x194268,_0x5e2402){_0x194268=_0x194268-0x0;var _0x53c22c=_0x1a71[_0x194268];return _0x53c22c;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0x11a7('0x0'),_0x11a7('0x1'),_0x11a7('0x2')];function createListener(_0x1abae1,_0x326383){return function(_0x605d13){_0x326383['emit'](_0x1abae1,_0x605d13);};}function removeListener(_0x14f825,_0x1bf1b7){return function(){OpenchannelQueueEvents[_0x11a7('0x3')](_0x14f825,_0x1bf1b7);};}exports[_0x11a7('0x4')]=function(_0x584685){for(var _0x1ed7a9=0x0,_0x1ae592=events[_0x11a7('0x5')];_0x1ed7a9<_0x1ae592;_0x1ed7a9++){var _0x452035=events[_0x1ed7a9];var _0x327db6=createListener(_0x11a7('0x6')+_0x452035,_0x584685);OpenchannelQueueEvents['on'](_0x452035,_0x327db6);}};
\ No newline at end of file
+var _0x4486=['length','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x52d543,_0x4982e1){var _0x572ca0=function(_0x4af633){while(--_0x4af633){_0x52d543['push'](_0x52d543['shift']());}};_0x572ca0(++_0x4982e1);}(_0x4486,0x14f));var _0x6448=function(_0x2742db,_0x58e00c){_0x2742db=_0x2742db-0x0;var _0x18659e=_0x4486[_0x2742db];return _0x18659e;};'use strict';var OpenchannelQueueEvents=require(_0x6448('0x0'));var events=[_0x6448('0x1'),_0x6448('0x2'),_0x6448('0x3')];function createListener(_0x459ee6,_0x2eff6e){return function(_0x5853fe){_0x2eff6e[_0x6448('0x4')](_0x459ee6,_0x5853fe);};}function removeListener(_0x22152c,_0x43ade6){return function(){OpenchannelQueueEvents[_0x6448('0x5')](_0x22152c,_0x43ade6);};}exports[_0x6448('0x6')]=function(_0x40e922){for(var _0x4ec0e5=0x0,_0xadf4a2=events[_0x6448('0x7')];_0x4ec0e5<_0xadf4a2;_0x4ec0e5++){var _0x26694a=events[_0x4ec0e5];var _0x57c53c=createListener(_0x6448('0x8')+_0x26694a,_0x40e922);OpenchannelQueueEvents['on'](_0x26694a,_0x57c53c);}};
\ No newline at end of file
index bed53fb..c96ce76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2855=['index','get','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x2855,0x174));var _0x5285=function(_0x4eec9b,_0x4aea09){_0x4eec9b=_0x4eec9b-0x0;var _0x2e3849=_0x2855[_0x4eec9b];return _0x2e3849;};'use strict';var multer=require(_0x5285('0x0'));var util=require(_0x5285('0x1'));var path=require(_0x5285('0x2'));var timeout=require(_0x5285('0x3'));var express=require(_0x5285('0x4'));var router=express[_0x5285('0x5')]();var fs_extra=require(_0x5285('0x6'));var auth=require(_0x5285('0x7'));var interaction=require(_0x5285('0x8'));var config=require(_0x5285('0x9'));var controller=require(_0x5285('0xa'));router['get']('/',auth[_0x5285('0xb')](),controller[_0x5285('0xc')]);router[_0x5285('0xd')](_0x5285('0xe'),auth[_0x5285('0xb')](),controller[_0x5285('0xf')]);router[_0x5285('0xd')](_0x5285('0x10'),auth[_0x5285('0xb')](),controller[_0x5285('0x11')]);router[_0x5285('0x12')]('/',auth[_0x5285('0xb')](),controller[_0x5285('0x13')]);router['put']('/:id',auth[_0x5285('0xb')](),controller[_0x5285('0x14')]);router[_0x5285('0x15')](_0x5285('0x10'),auth[_0x5285('0xb')](),controller[_0x5285('0x16')]);module[_0x5285('0x17')]=router;
\ No newline at end of file
+var _0x4c13=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/:id','show','post','put','delete','destroy'];(function(_0x48cab1,_0xb87e2b){var _0x5674e0=function(_0x5dd839){while(--_0x5dd839){_0x48cab1['push'](_0x48cab1['shift']());}};_0x5674e0(++_0xb87e2b);}(_0x4c13,0xd8));var _0x34c1=function(_0x4ac4ab,_0x88d7cc){_0x4ac4ab=_0x4ac4ab-0x0;var _0x4ab2e4=_0x4c13[_0x4ac4ab];return _0x4ab2e4;};'use strict';var multer=require(_0x34c1('0x0'));var util=require('util');var path=require(_0x34c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x34c1('0x2'));var router=express[_0x34c1('0x3')]();var fs_extra=require(_0x34c1('0x4'));var auth=require(_0x34c1('0x5'));var interaction=require(_0x34c1('0x6'));var config=require(_0x34c1('0x7'));var controller=require(_0x34c1('0x8'));router[_0x34c1('0x9')]('/',auth[_0x34c1('0xa')](),controller[_0x34c1('0xb')]);router[_0x34c1('0x9')]('/describe',auth[_0x34c1('0xa')](),controller['describe']);router[_0x34c1('0x9')](_0x34c1('0xc'),auth['isAuthenticated'](),controller[_0x34c1('0xd')]);router[_0x34c1('0xe')]('/',auth[_0x34c1('0xa')](),controller['create']);router[_0x34c1('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x34c1('0x10')]('/:id',auth[_0x34c1('0xa')](),controller[_0x34c1('0x11')]);module['exports']=router;
\ No newline at end of file
index 8b7cb17..d4a5f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdedc=['sequelize','exports','STRING','DATE','moment'];(function(_0x1433df,_0x1c1ddc){var _0x49fade=function(_0x27803b){while(--_0x27803b){_0x1433df['push'](_0x1433df['shift']());}};_0x49fade(++_0x1c1ddc);}(_0xdedc,0xb8));var _0xcded=function(_0x469c01,_0x10c93c){_0x469c01=_0x469c01-0x0;var _0x534c6f=_0xdedc[_0x469c01];return _0x534c6f;};'use strict';var moment=require(_0xcded('0x0'));var Sequelize=require(_0xcded('0x1'));module[_0xcded('0x2')]={'uniqueid':{'type':Sequelize[_0xcded('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xcded('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xcded('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xcded('0x4')]},'reason':{'type':Sequelize[_0xcded('0x3')]}};
\ No newline at end of file
+var _0x4082=['moment','sequelize','exports','STRING','DATE'];(function(_0x7d62cb,_0x7622c){var _0x3a6266=function(_0x1cc5fa){while(--_0x1cc5fa){_0x7d62cb['push'](_0x7d62cb['shift']());}};_0x3a6266(++_0x7622c);}(_0x4082,0x118));var _0x2408=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x4082[_0x4e9628];return _0x27bc8c;};'use strict';var moment=require(_0x2408('0x0'));var Sequelize=require(_0x2408('0x1'));module[_0x2408('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2408('0x3')]},'joinAt':{'type':Sequelize[_0x2408('0x4')]},'leaveAt':{'type':Sequelize[_0x2408('0x4')]},'acceptAt':{'type':Sequelize[_0x2408('0x4')]},'exitAt':{'type':Sequelize[_0x2408('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8995829..2510144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0631=['body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','OpenchannelQueueReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','show','options','find','catch','create'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x0631,0x9b));var _0x1063=function(_0x214450,_0x1f80ad){_0x214450=_0x214450-0x0;var _0xf0321f=_0x0631[_0x214450];return _0xf0321f;};'use strict';var emlformat=require(_0x1063('0x0'));var rimraf=require(_0x1063('0x1'));var zipdir=require(_0x1063('0x2'));var jsonpatch=require(_0x1063('0x3'));var rp=require(_0x1063('0x4'));var moment=require('moment');var BPromise=require(_0x1063('0x5'));var Mustache=require(_0x1063('0x6'));var util=require(_0x1063('0x7'));var path=require('path');var sox=require(_0x1063('0x8'));var csv=require(_0x1063('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1063('0xa'));var _=require(_0x1063('0xb'));var squel=require(_0x1063('0xc'));var crypto=require(_0x1063('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1063('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1063('0xf'));var Papa=require(_0x1063('0x10'));var Redis=require('ioredis');var authService=require(_0x1063('0x11'));var qs=require(_0x1063('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1063('0x13'))('api');var utils=require(_0x1063('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1063('0x15'))['db'];function respondWithStatusCode(_0x15a3f3,_0x544b0a){_0x544b0a=_0x544b0a||0xcc;return function(_0x5eae11){if(_0x5eae11){return _0x15a3f3[_0x1063('0x16')](_0x544b0a);}return _0x15a3f3[_0x1063('0x17')](_0x544b0a)[_0x1063('0x18')]();};}function respondWithResult(_0x2299fa,_0x3ffb92){_0x3ffb92=_0x3ffb92||0xc8;return function(_0x45c5a3){if(_0x45c5a3){return _0x2299fa['status'](_0x3ffb92)['json'](_0x45c5a3);}};}function respondWithFilteredResult(_0x173f16,_0x223cfd){return function(_0x415638){if(_0x415638){var _0x3d2f4f=typeof _0x223cfd[_0x1063('0x19')]==='undefined'&&typeof _0x223cfd[_0x1063('0x1a')]===_0x1063('0x1b');var _0x5c691a=_0x415638[_0x1063('0x1c')];var _0x3c0975=_0x3d2f4f?0x0:_0x223cfd[_0x1063('0x19')];var _0xda432d=_0x3d2f4f?_0x415638[_0x1063('0x1c')]:_0x223cfd[_0x1063('0x19')]+_0x223cfd[_0x1063('0x1a')];var _0x4d511b;if(_0xda432d>=_0x5c691a){_0xda432d=_0x5c691a;_0x4d511b=0xc8;}else{_0x4d511b=0xce;}_0x173f16[_0x1063('0x17')](_0x4d511b);return _0x173f16[_0x1063('0x1d')](_0x1063('0x1e'),_0x3c0975+'-'+_0xda432d+'/'+_0x5c691a)[_0x1063('0x1f')](_0x415638);}return null;};}function patchUpdates(_0x1c181b){return function(_0x414911){try{jsonpatch[_0x1063('0x20')](_0x414911,_0x1c181b,!![]);}catch(_0x117045){return BPromise[_0x1063('0x21')](_0x117045);}return _0x414911[_0x1063('0x22')]();};}function saveUpdates(_0x2e046c,_0x5aff98){return function(_0x3b6ed4){if(_0x3b6ed4){return _0x3b6ed4[_0x1063('0x23')](_0x2e046c)[_0x1063('0x24')](function(_0x5b5419){return _0x5b5419;});}return null;};}function removeEntity(_0x38d6bc,_0x11e6e0){return function(_0xe37944){if(_0xe37944){return _0xe37944[_0x1063('0x25')]()[_0x1063('0x24')](function(){_0x38d6bc[_0x1063('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c2c0a,_0x56c142){return function(_0x485418){if(!_0x485418){_0x4c2c0a[_0x1063('0x16')](0x194);}return _0x485418;};}function handleError(_0x41b4ec,_0x933f06){_0x933f06=_0x933f06||0x1f4;return function(_0x1f629a){logger[_0x1063('0x26')](_0x1f629a[_0x1063('0x27')]);if(_0x1f629a[_0x1063('0x28')]){delete _0x1f629a[_0x1063('0x28')];}_0x41b4ec[_0x1063('0x17')](_0x933f06)['send'](_0x1f629a);};}exports[_0x1063('0x29')]=function(_0x367b1b,_0x2664de){var _0x4bf198={},_0x16a7fc={},_0x2091e8={'count':0x0,'rows':[]};var _0x44816e=_[_0x1063('0x2a')](db[_0x1063('0x2b')][_0x1063('0x2c')],function(_0xf87524){return{'name':_0xf87524['fieldName'],'type':_0xf87524[_0x1063('0x2d')][_0x1063('0x2e')]};});_0x16a7fc[_0x1063('0x2f')]=_[_0x1063('0x2a')](_0x44816e,_0x1063('0x28'));_0x16a7fc[_0x1063('0x30')]=_[_0x1063('0x31')](_0x367b1b[_0x1063('0x30')]);_0x16a7fc[_0x1063('0x32')]=_['intersection'](_0x16a7fc[_0x1063('0x2f')],_0x16a7fc[_0x1063('0x30')]);_0x4bf198[_0x1063('0x33')]=_[_0x1063('0x34')](_0x16a7fc[_0x1063('0x2f')],qs[_0x1063('0x35')](_0x367b1b['query']['fields']));_0x4bf198['attributes']=_0x4bf198['attributes'][_0x1063('0x36')]?_0x4bf198['attributes']:_0x16a7fc['model'];if(!_0x367b1b['query'][_0x1063('0x37')](_0x1063('0x38'))){_0x4bf198[_0x1063('0x1a')]=qs[_0x1063('0x1a')](_0x367b1b['query'][_0x1063('0x1a')]);_0x4bf198[_0x1063('0x19')]=qs[_0x1063('0x19')](_0x367b1b[_0x1063('0x30')]['offset']);}_0x4bf198[_0x1063('0x39')]=qs[_0x1063('0x3a')](_0x367b1b[_0x1063('0x30')][_0x1063('0x3a')]);_0x4bf198['where']=qs[_0x1063('0x32')](_[_0x1063('0x3b')](_0x367b1b[_0x1063('0x30')],_0x16a7fc[_0x1063('0x32')]),_0x44816e);if(_0x367b1b[_0x1063('0x30')][_0x1063('0x3c')]){_0x4bf198['where']=_[_0x1063('0x3d')](_0x4bf198[_0x1063('0x3e')],{'$or':_[_0x1063('0x2a')](_0x44816e,function(_0xc7133b){if(_0xc7133b[_0x1063('0x2d')]!==_0x1063('0x3f')){var _0x2b29da={};_0x2b29da[_0xc7133b['name']]={'$like':'%'+_0x367b1b[_0x1063('0x30')][_0x1063('0x3c')]+'%'};return _0x2b29da;}})});}_0x4bf198=_['merge']({},_0x4bf198,_0x367b1b['options']);var _0x4d0955={'where':_0x4bf198['where']};return db[_0x1063('0x2b')][_0x1063('0x1c')](_0x4d0955)[_0x1063('0x24')](function(_0x54a659){_0x2091e8[_0x1063('0x1c')]=_0x54a659;if(_0x367b1b[_0x1063('0x30')][_0x1063('0x40')]){_0x4bf198[_0x1063('0x41')]=[{'all':!![]}];}return db[_0x1063('0x2b')][_0x1063('0x42')](_0x4bf198);})[_0x1063('0x24')](function(_0x61f135){_0x2091e8[_0x1063('0x43')]=_0x61f135;return _0x2091e8;})[_0x1063('0x24')](respondWithFilteredResult(_0x2664de,_0x4bf198))['catch'](handleError(_0x2664de,null));};exports[_0x1063('0x44')]=function(_0x1a84ee,_0xf2b282){var _0x4c7f71={'raw':!![],'where':{'id':_0x1a84ee['params']['id']}},_0x3b9662={};_0x3b9662['model']=_['keys'](db[_0x1063('0x2b')]['rawAttributes']);_0x3b9662['query']=_[_0x1063('0x31')](_0x1a84ee[_0x1063('0x30')]);_0x3b9662[_0x1063('0x32')]=_[_0x1063('0x34')](_0x3b9662[_0x1063('0x2f')],_0x3b9662[_0x1063('0x30')]);_0x4c7f71[_0x1063('0x33')]=_['intersection'](_0x3b9662[_0x1063('0x2f')],qs[_0x1063('0x35')](_0x1a84ee[_0x1063('0x30')]['fields']));_0x4c7f71[_0x1063('0x33')]=_0x4c7f71[_0x1063('0x33')]['length']?_0x4c7f71[_0x1063('0x33')]:_0x3b9662[_0x1063('0x2f')];if(_0x1a84ee[_0x1063('0x30')]['includeAll']){_0x4c7f71['include']=[{'all':!![]}];}_0x4c7f71=_['merge']({},_0x4c7f71,_0x1a84ee[_0x1063('0x45')]);return db[_0x1063('0x2b')][_0x1063('0x46')](_0x4c7f71)[_0x1063('0x24')](handleEntityNotFound(_0xf2b282,null))[_0x1063('0x24')](respondWithResult(_0xf2b282,null))[_0x1063('0x47')](handleError(_0xf2b282,null));};exports[_0x1063('0x48')]=function(_0x3ddf17,_0x36fb11){return db[_0x1063('0x2b')][_0x1063('0x48')](_0x3ddf17[_0x1063('0x49')],{})[_0x1063('0x24')](respondWithResult(_0x36fb11,0xc9))['catch'](handleError(_0x36fb11,null));};exports['update']=function(_0x5d03c2,_0x548174){if(_0x5d03c2[_0x1063('0x49')]['id']){delete _0x5d03c2[_0x1063('0x49')]['id'];}return db['OpenchannelQueueReport'][_0x1063('0x46')]({'where':{'id':_0x5d03c2[_0x1063('0x4a')]['id']}})[_0x1063('0x24')](handleEntityNotFound(_0x548174,null))[_0x1063('0x24')](saveUpdates(_0x5d03c2['body'],null))[_0x1063('0x24')](respondWithResult(_0x548174,null))[_0x1063('0x47')](handleError(_0x548174,null));};exports[_0x1063('0x25')]=function(_0x2dccc8,_0x1d7212){return db[_0x1063('0x2b')][_0x1063('0x46')]({'where':{'id':_0x2dccc8[_0x1063('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1d7212,null))[_0x1063('0x24')](removeEntity(_0x1d7212,null))['catch'](handleError(_0x1d7212,null));};exports[_0x1063('0x4b')]=function(_0x2ee489,_0x583b4a){return db['OpenchannelQueueReport'][_0x1063('0x4b')]()[_0x1063('0x24')](respondWithResult(_0x583b4a,null))['catch'](handleError(_0x583b4a,null));};
\ No newline at end of file
+var _0x8d95=['fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','then','show','params','includeAll','create','body','find','catch','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes'];(function(_0x454809,_0x58b683){var _0x2cb4ab=function(_0x2b2b4a){while(--_0x2b2b4a){_0x454809['push'](_0x454809['shift']());}};_0x2cb4ab(++_0x58b683);}(_0x8d95,0x6c));var _0x58d9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8d95[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x58d9('0x0'));var rimraf=require(_0x58d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x58d9('0x2'));var rp=require('request-promise');var moment=require(_0x58d9('0x3'));var BPromise=require(_0x58d9('0x4'));var Mustache=require('mustache');var util=require(_0x58d9('0x5'));var path=require(_0x58d9('0x6'));var sox=require(_0x58d9('0x7'));var csv=require(_0x58d9('0x8'));var ejs=require(_0x58d9('0x9'));var fs=require('fs');var fs_extra=require(_0x58d9('0xa'));var _=require(_0x58d9('0xb'));var squel=require(_0x58d9('0xc'));var crypto=require(_0x58d9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x58d9('0xe'));var toCsv=require(_0x58d9('0x8'));var querystring=require(_0x58d9('0xf'));var Papa=require(_0x58d9('0x10'));var Redis=require(_0x58d9('0x11'));var authService=require(_0x58d9('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x58d9('0x13'))(_0x58d9('0x14'));var utils=require('../../config/utils');var config=require(_0x58d9('0x15'));var licenseUtil=require(_0x58d9('0x16'));var db=require(_0x58d9('0x17'))['db'];function respondWithStatusCode(_0x47c26e,_0x11f0b3){_0x11f0b3=_0x11f0b3||0xcc;return function(_0x4068a7){if(_0x4068a7){return _0x47c26e[_0x58d9('0x18')](_0x11f0b3);}return _0x47c26e[_0x58d9('0x19')](_0x11f0b3)[_0x58d9('0x1a')]();};}function respondWithResult(_0x3e3eb1,_0x31bd3f){_0x31bd3f=_0x31bd3f||0xc8;return function(_0x28a677){if(_0x28a677){return _0x3e3eb1['status'](_0x31bd3f)['json'](_0x28a677);}};}function respondWithFilteredResult(_0x3da286,_0x206ada){return function(_0x40f507){if(_0x40f507){var _0x1bcbf5=typeof _0x206ada[_0x58d9('0x1b')]===_0x58d9('0x1c')&&typeof _0x206ada[_0x58d9('0x1d')]===_0x58d9('0x1c');var _0x4d3d9d=_0x40f507[_0x58d9('0x1e')];var _0x3721b8=_0x1bcbf5?0x0:_0x206ada[_0x58d9('0x1b')];var _0x2353fe=_0x1bcbf5?_0x40f507[_0x58d9('0x1e')]:_0x206ada[_0x58d9('0x1b')]+_0x206ada[_0x58d9('0x1d')];var _0x4eec85;if(_0x2353fe>=_0x4d3d9d){_0x2353fe=_0x4d3d9d;_0x4eec85=0xc8;}else{_0x4eec85=0xce;}_0x3da286[_0x58d9('0x19')](_0x4eec85);return _0x3da286[_0x58d9('0x1f')]('Content-Range',_0x3721b8+'-'+_0x2353fe+'/'+_0x4d3d9d)[_0x58d9('0x20')](_0x40f507);}return null;};}function patchUpdates(_0x585970){return function(_0x4918f6){try{jsonpatch[_0x58d9('0x21')](_0x4918f6,_0x585970,!![]);}catch(_0x4021ca){return BPromise[_0x58d9('0x22')](_0x4021ca);}return _0x4918f6['save']();};}function saveUpdates(_0x219a9f,_0x417e76){return function(_0x4f203e){if(_0x4f203e){return _0x4f203e[_0x58d9('0x23')](_0x219a9f)['then'](function(_0x2acddb){return _0x2acddb;});}return null;};}function removeEntity(_0x9fe5ee,_0x319769){return function(_0x2b3a5e){if(_0x2b3a5e){return _0x2b3a5e['destroy']()['then'](function(){_0x9fe5ee[_0x58d9('0x19')](0xcc)[_0x58d9('0x1a')]();});}};}function handleEntityNotFound(_0x350eca,_0x69e6ad){return function(_0x371432){if(!_0x371432){_0x350eca[_0x58d9('0x18')](0x194);}return _0x371432;};}function handleError(_0x52d91d,_0x117cfd){_0x117cfd=_0x117cfd||0x1f4;return function(_0x219c10){logger[_0x58d9('0x24')](_0x219c10[_0x58d9('0x25')]);if(_0x219c10[_0x58d9('0x26')]){delete _0x219c10[_0x58d9('0x26')];}_0x52d91d[_0x58d9('0x19')](_0x117cfd)[_0x58d9('0x27')](_0x219c10);};}exports[_0x58d9('0x28')]=function(_0x57397d,_0x485e65){var _0x2d2534={},_0x528eec={},_0x10528d={'count':0x0,'rows':[]};var _0x36a29f=_[_0x58d9('0x29')](db[_0x58d9('0x2a')][_0x58d9('0x2b')],function(_0x5b3eab){return{'name':_0x5b3eab[_0x58d9('0x2c')],'type':_0x5b3eab[_0x58d9('0x2d')][_0x58d9('0x2e')]};});_0x528eec[_0x58d9('0x2f')]=_[_0x58d9('0x29')](_0x36a29f,_0x58d9('0x26'));_0x528eec['query']=_[_0x58d9('0x30')](_0x57397d[_0x58d9('0x31')]);_0x528eec[_0x58d9('0x32')]=_[_0x58d9('0x33')](_0x528eec[_0x58d9('0x2f')],_0x528eec[_0x58d9('0x31')]);_0x2d2534[_0x58d9('0x34')]=_[_0x58d9('0x33')](_0x528eec[_0x58d9('0x2f')],qs[_0x58d9('0x35')](_0x57397d['query'][_0x58d9('0x35')]));_0x2d2534[_0x58d9('0x34')]=_0x2d2534['attributes'][_0x58d9('0x36')]?_0x2d2534[_0x58d9('0x34')]:_0x528eec[_0x58d9('0x2f')];if(!_0x57397d['query'][_0x58d9('0x37')](_0x58d9('0x38'))){_0x2d2534[_0x58d9('0x1d')]=qs['limit'](_0x57397d[_0x58d9('0x31')][_0x58d9('0x1d')]);_0x2d2534[_0x58d9('0x1b')]=qs['offset'](_0x57397d[_0x58d9('0x31')]['offset']);}_0x2d2534['order']=qs[_0x58d9('0x39')](_0x57397d[_0x58d9('0x31')]['sort']);_0x2d2534[_0x58d9('0x3a')]=qs[_0x58d9('0x32')](_[_0x58d9('0x3b')](_0x57397d[_0x58d9('0x31')],_0x528eec[_0x58d9('0x32')]),_0x36a29f);if(_0x57397d[_0x58d9('0x31')]['filter']){_0x2d2534[_0x58d9('0x3a')]=_[_0x58d9('0x3c')](_0x2d2534[_0x58d9('0x3a')],{'$or':_[_0x58d9('0x29')](_0x36a29f,function(_0x4b8efe){if(_0x4b8efe['type']!==_0x58d9('0x3d')){var _0x4aa265={};_0x4aa265[_0x4b8efe[_0x58d9('0x26')]]={'$like':'%'+_0x57397d[_0x58d9('0x31')][_0x58d9('0x3e')]+'%'};return _0x4aa265;}})});}_0x2d2534=_['merge']({},_0x2d2534,_0x57397d[_0x58d9('0x3f')]);var _0x5712db={'where':_0x2d2534[_0x58d9('0x3a')]};return db[_0x58d9('0x2a')][_0x58d9('0x1e')](_0x5712db)['then'](function(_0x28296f){_0x10528d[_0x58d9('0x1e')]=_0x28296f;if(_0x57397d[_0x58d9('0x31')]['includeAll']){_0x2d2534[_0x58d9('0x40')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x58d9('0x41')](_0x2d2534);})[_0x58d9('0x42')](function(_0x547431){_0x10528d['rows']=_0x547431;return _0x10528d;})[_0x58d9('0x42')](respondWithFilteredResult(_0x485e65,_0x2d2534))['catch'](handleError(_0x485e65,null));};exports[_0x58d9('0x43')]=function(_0x5bf955,_0x414e80){var _0x4bad53={'raw':!![],'where':{'id':_0x5bf955[_0x58d9('0x44')]['id']}},_0x42eb19={};_0x42eb19['model']=_[_0x58d9('0x30')](db[_0x58d9('0x2a')][_0x58d9('0x2b')]);_0x42eb19[_0x58d9('0x31')]=_[_0x58d9('0x30')](_0x5bf955[_0x58d9('0x31')]);_0x42eb19[_0x58d9('0x32')]=_['intersection'](_0x42eb19['model'],_0x42eb19[_0x58d9('0x31')]);_0x4bad53['attributes']=_[_0x58d9('0x33')](_0x42eb19['model'],qs[_0x58d9('0x35')](_0x5bf955['query'][_0x58d9('0x35')]));_0x4bad53['attributes']=_0x4bad53[_0x58d9('0x34')]['length']?_0x4bad53[_0x58d9('0x34')]:_0x42eb19[_0x58d9('0x2f')];if(_0x5bf955[_0x58d9('0x31')][_0x58d9('0x45')]){_0x4bad53[_0x58d9('0x40')]=[{'all':!![]}];}_0x4bad53=_[_0x58d9('0x3c')]({},_0x4bad53,_0x5bf955['options']);return db[_0x58d9('0x2a')]['find'](_0x4bad53)['then'](handleEntityNotFound(_0x414e80,null))[_0x58d9('0x42')](respondWithResult(_0x414e80,null))['catch'](handleError(_0x414e80,null));};exports[_0x58d9('0x46')]=function(_0x4e18ce,_0x59ceda){return db['OpenchannelQueueReport']['create'](_0x4e18ce['body'],{})[_0x58d9('0x42')](respondWithResult(_0x59ceda,0xc9))['catch'](handleError(_0x59ceda,null));};exports[_0x58d9('0x23')]=function(_0x27adb0,_0x5c7931){if(_0x27adb0[_0x58d9('0x47')]['id']){delete _0x27adb0[_0x58d9('0x47')]['id'];}return db[_0x58d9('0x2a')][_0x58d9('0x48')]({'where':{'id':_0x27adb0['params']['id']}})[_0x58d9('0x42')](handleEntityNotFound(_0x5c7931,null))[_0x58d9('0x42')](saveUpdates(_0x27adb0[_0x58d9('0x47')],null))['then'](respondWithResult(_0x5c7931,null))[_0x58d9('0x49')](handleError(_0x5c7931,null));};exports[_0x58d9('0x4a')]=function(_0x5c0767,_0x33e3fa){return db[_0x58d9('0x2a')][_0x58d9('0x48')]({'where':{'id':_0x5c0767[_0x58d9('0x44')]['id']}})[_0x58d9('0x42')](handleEntityNotFound(_0x33e3fa,null))[_0x58d9('0x42')](removeEntity(_0x33e3fa,null))[_0x58d9('0x49')](handleError(_0x33e3fa,null));};exports[_0x58d9('0x4b')]=function(_0x3388d4,_0x3a2e62){return db[_0x58d9('0x2a')]['describe']()[_0x58d9('0x42')](respondWithResult(_0x3a2e62,null))[_0x58d9('0x49')](handleError(_0x3a2e62,null));};
\ No newline at end of file
index 8cb8e6b..776da38 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(_0x98f820,_0x10f6a0){var _0x277a1f=function(_0x150377){while(--_0x150377){_0x98f820['push'](_0x98f820['shift']());}};_0x277a1f(++_0x10f6a0);}(_0x1261,0x144));var _0x1126=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x1261[_0x585d81];return _0x1aca0d;};'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 _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x47b38c,_0x1787be){var _0x243402=function(_0x465583){while(--_0x465583){_0x47b38c['push'](_0x47b38c['shift']());}};_0x243402(++_0x1787be);}(_0x1261,0x144));var _0x1126=function(_0x319a03,_0x4456d4){_0x319a03=_0x319a03-0x0;var _0x3b6704=_0x1261[_0x319a03];return _0x3b6704;};'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
index 014f7dd..fc58ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x174b=['body','options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','attributes','limit','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','create'];(function(_0x59317f,_0x346811){var _0x3c9330=function(_0x33f7ba){while(--_0x33f7ba){_0x59317f['push'](_0x59317f['shift']());}};_0x3c9330(++_0x346811);}(_0x174b,0x19d));var _0xb174=function(_0x4c57fa,_0x1b810a){_0x4c57fa=_0x4c57fa-0x0;var _0x21dbd7=_0x174b[_0x4c57fa];return _0x21dbd7;};'use strict';var _=require(_0xb174('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb174('0x1'));var rs=require(_0xb174('0x2'));var fs=require('fs');var Redis=require(_0xb174('0x3'));var db=require(_0xb174('0x4'))['db'];var utils=require(_0xb174('0x5'));var logger=require(_0xb174('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb174('0x7'));var client=jayson[_0xb174('0x8')][_0xb174('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e7a36,_0xa073f6,_0x1e3e13){return new BPromise(function(_0x465cd6,_0x149942){return client[_0xb174('0xa')](_0x3e7a36,_0x1e3e13)[_0xb174('0xb')](function(_0x4c3cea){logger[_0xb174('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xa073f6,_0xb174('0xd'));logger[_0xb174('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0xa073f6,_0xb174('0xd'),JSON['stringify'](_0x4c3cea));if(_0x4c3cea[_0xb174('0xf')]){if(_0x4c3cea[_0xb174('0xf')]['code']===0x1f4){logger[_0xb174('0xf')](_0xb174('0x10'),_0xa073f6,_0x4c3cea[_0xb174('0xf')][_0xb174('0x11')]);return _0x149942(_0x4c3cea['error'][_0xb174('0x11')]);}logger['error'](_0xb174('0x10'),_0xa073f6,_0x4c3cea[_0xb174('0xf')][_0xb174('0x11')]);return _0x465cd6(_0x4c3cea[_0xb174('0xf')]['message']);}else{logger[_0xb174('0xc')](_0xb174('0x10'),_0xa073f6,_0xb174('0xd'));_0x465cd6(_0x4c3cea[_0xb174('0x12')][_0xb174('0x11')]);}})[_0xb174('0x13')](function(_0x5d31ac){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0xa073f6,_0x5d31ac);_0x149942(_0x5d31ac);});});}exports['CreateOpenchannelQueueReport']=function(_0x2ab4dc){var _0x4fb4eb=this;return new Promise(function(_0xaf80a9,_0x1a6f40){return db['OpenchannelQueueReport'][_0xb174('0x14')](_0x2ab4dc[_0xb174('0x15')],{'raw':_0x2ab4dc[_0xb174('0x16')]?_0x2ab4dc[_0xb174('0x16')][_0xb174('0x17')]===undefined?!![]:![]:!![]})[_0xb174('0xb')](function(_0xcc8d9a){logger['info'](_0xb174('0x18'),_0x2ab4dc);logger[_0xb174('0xe')]('CreateOpenchannelQueueReport',_0x2ab4dc,JSON['stringify'](_0xcc8d9a));_0xaf80a9(_0xcc8d9a);})['catch'](function(_0x338dc4){logger[_0xb174('0xf')](_0xb174('0x18'),_0x338dc4['message'],_0x2ab4dc);_0x1a6f40(_0x4fb4eb[_0xb174('0xf')](0x1f4,_0x338dc4[_0xb174('0x11')]));});});};exports[_0xb174('0x19')]=function(_0x5a3fbd){var _0x19473b=this;return new Promise(function(_0x410411,_0x3b5abf){return db[_0xb174('0x1a')][_0xb174('0x1b')](_0x5a3fbd['body'],{'raw':_0x5a3fbd[_0xb174('0x16')]?_0x5a3fbd['options'][_0xb174('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a3fbd[_0xb174('0x16')]?_0x5a3fbd[_0xb174('0x16')]['where']||null:null,'attributes':_0x5a3fbd['options']?_0x5a3fbd[_0xb174('0x16')][_0xb174('0x1c')]||null:null,'limit':_0x5a3fbd['options']?_0x5a3fbd['options'][_0xb174('0x1d')]||null:null})['then'](function(_0x291d6c){logger[_0xb174('0xc')](_0xb174('0x19'),_0x5a3fbd);logger[_0xb174('0xe')](_0xb174('0x19'),_0x5a3fbd,JSON[_0xb174('0x1e')](_0x291d6c));_0x410411(_0x291d6c);})[_0xb174('0x13')](function(_0x530167){logger['error'](_0xb174('0x19'),_0x530167[_0xb174('0x11')],_0x5a3fbd);_0x3b5abf(_0x19473b[_0xb174('0xf')](0x1f4,_0x530167[_0xb174('0x11')]));});});};
\ No newline at end of file
+var _0x3cae=['catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','UpdateOpenchannelQueueReport','update','raw','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message'];(function(_0x52bd41,_0x41902a){var _0x2e2ef7=function(_0x479a3e){while(--_0x479a3e){_0x52bd41['push'](_0x52bd41['shift']());}};_0x2e2ef7(++_0x41902a);}(_0x3cae,0x117));var _0xe3ca=function(_0x1d558c,_0x1e497c){_0x1d558c=_0x1d558c-0x0;var _0x15767d=_0x3cae[_0x1d558c];return _0x15767d;};'use strict';var _=require(_0xe3ca('0x0'));var util=require(_0xe3ca('0x1'));var moment=require(_0xe3ca('0x2'));var BPromise=require(_0xe3ca('0x3'));var rs=require(_0xe3ca('0x4'));var fs=require('fs');var Redis=require(_0xe3ca('0x5'));var db=require(_0xe3ca('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe3ca('0x7'))(_0xe3ca('0x8'));var config=require('../../config/environment');var jayson=require(_0xe3ca('0x9'));var client=jayson['client'][_0xe3ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7fafb4,_0x36d17a,_0x578178){return new BPromise(function(_0x2c4863,_0x100c20){return client[_0xe3ca('0xb')](_0x7fafb4,_0x578178)[_0xe3ca('0xc')](function(_0x1ae7bf){logger[_0xe3ca('0xd')](_0xe3ca('0xe'),_0x36d17a,'request\x20sent');logger[_0xe3ca('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x36d17a,_0xe3ca('0x10'),JSON[_0xe3ca('0x11')](_0x1ae7bf));if(_0x1ae7bf[_0xe3ca('0x12')]){if(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x13')]===0x1f4){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x36d17a,_0x1ae7bf[_0xe3ca('0x12')]['message']);return _0x100c20(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);}logger['error'](_0xe3ca('0xe'),_0x36d17a,_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);return _0x2c4863(_0x1ae7bf[_0xe3ca('0x12')][_0xe3ca('0x14')]);}else{logger[_0xe3ca('0xd')](_0xe3ca('0xe'),_0x36d17a,_0xe3ca('0x10'));_0x2c4863(_0x1ae7bf['result']['message']);}})[_0xe3ca('0x15')](function(_0x4296ae){logger[_0xe3ca('0x12')](_0xe3ca('0xe'),_0x36d17a,_0x4296ae);_0x100c20(_0x4296ae);});});}exports[_0xe3ca('0x16')]=function(_0x2d73d9){var _0x5bb8d8=this;return new Promise(function(_0x2eafde,_0xda5841){return db[_0xe3ca('0x17')]['create'](_0x2d73d9['body'],{'raw':_0x2d73d9['options']?_0x2d73d9[_0xe3ca('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3b7591){logger[_0xe3ca('0xd')](_0xe3ca('0x16'),_0x2d73d9);logger[_0xe3ca('0xf')](_0xe3ca('0x16'),_0x2d73d9,JSON['stringify'](_0x3b7591));_0x2eafde(_0x3b7591);})[_0xe3ca('0x15')](function(_0x3ab26e){logger['error'](_0xe3ca('0x16'),_0x3ab26e[_0xe3ca('0x14')],_0x2d73d9);_0xda5841(_0x5bb8d8[_0xe3ca('0x12')](0x1f4,_0x3ab26e[_0xe3ca('0x14')]));});});};exports[_0xe3ca('0x19')]=function(_0x392bdb){var _0x2b571f=this;return new Promise(function(_0x25b39e,_0x477ec7){return db[_0xe3ca('0x17')][_0xe3ca('0x1a')](_0x392bdb['body'],{'raw':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb['options'][_0xe3ca('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb[_0xe3ca('0x18')][_0xe3ca('0x1c')]||null:null,'attributes':_0x392bdb['options']?_0x392bdb['options'][_0xe3ca('0x1d')]||null:null,'limit':_0x392bdb[_0xe3ca('0x18')]?_0x392bdb[_0xe3ca('0x18')]['limit']||null:null})[_0xe3ca('0xc')](function(_0x39dd6e){logger[_0xe3ca('0xd')](_0xe3ca('0x19'),_0x392bdb);logger['debug']('UpdateOpenchannelQueueReport',_0x392bdb,JSON[_0xe3ca('0x11')](_0x39dd6e));_0x25b39e(_0x39dd6e);})['catch'](function(_0x24d40a){logger['error']('UpdateOpenchannelQueueReport',_0x24d40a[_0xe3ca('0x14')],_0x392bdb);_0x477ec7(_0x2b571f[_0xe3ca('0x12')](0x1f4,_0x24d40a[_0xe3ca('0x14')]));});});};
\ No newline at end of file
index f2ea4fd..a284237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf085=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','create','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x52676b,_0x3649f2){var _0x32d0ba=function(_0x18bd68){while(--_0x18bd68){_0x52676b['push'](_0x52676b['shift']());}};_0x32d0ba(++_0x3649f2);}(_0xf085,0x11a));var _0x5f08=function(_0x577fa5,_0x1989b4){_0x577fa5=_0x577fa5-0x0;var _0x3c36be=_0xf085[_0x577fa5];return _0x3c36be;};'use strict';var multer=require(_0x5f08('0x0'));var util=require(_0x5f08('0x1'));var path=require(_0x5f08('0x2'));var timeout=require(_0x5f08('0x3'));var express=require(_0x5f08('0x4'));var router=express[_0x5f08('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5f08('0x6'));var config=require(_0x5f08('0x7'));var controller=require('./openchannelTransferReport.controller');router[_0x5f08('0x8')]('/',auth[_0x5f08('0x9')](),controller[_0x5f08('0xa')]);router['get'](_0x5f08('0xb'),auth['isAuthenticated'](),controller[_0x5f08('0xc')]);router[_0x5f08('0x8')](_0x5f08('0xd'),auth[_0x5f08('0x9')](),controller['show']);router['post']('/',auth[_0x5f08('0x9')](),controller[_0x5f08('0xe')]);router['put']('/:id',auth[_0x5f08('0x9')](),controller[_0x5f08('0xf')]);router[_0x5f08('0x10')](_0x5f08('0xd'),auth[_0x5f08('0x9')](),controller['destroy']);module[_0x5f08('0x11')]=router;
\ No newline at end of file
+var _0x13d3=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','index','/describe','isAuthenticated','describe','post','create','/:id','update','destroy'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x13d3,0x1e1));var _0x313d=function(_0x24e230,_0x3a73d6){_0x24e230=_0x24e230-0x0;var _0x2cbf0d=_0x13d3[_0x24e230];return _0x2cbf0d;};'use strict';var multer=require(_0x313d('0x0'));var util=require(_0x313d('0x1'));var path=require(_0x313d('0x2'));var timeout=require('connect-timeout');var express=require(_0x313d('0x3'));var router=express[_0x313d('0x4')]();var fs_extra=require(_0x313d('0x5'));var auth=require(_0x313d('0x6'));var interaction=require(_0x313d('0x7'));var config=require(_0x313d('0x8'));var controller=require(_0x313d('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x313d('0xa')]);router['get'](_0x313d('0xb'),auth[_0x313d('0xc')](),controller[_0x313d('0xd')]);router['get']('/:id',auth[_0x313d('0xc')](),controller['show']);router[_0x313d('0xe')]('/',auth[_0x313d('0xc')](),controller[_0x313d('0xf')]);router['put'](_0x313d('0x10'),auth[_0x313d('0xc')](),controller[_0x313d('0x11')]);router['delete'](_0x313d('0x10'),auth['isAuthenticated'](),controller[_0x313d('0x12')]);module[_0x313d('0x13')]=router;
\ No newline at end of file
index 1173594..47553d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'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(_0x51ec5c,_0x3506ef){var _0x5b04b8=function(_0x2e741f){while(--_0x2e741f){_0x51ec5c['push'](_0x51ec5c['shift']());}};_0x5b04b8(++_0x3506ef);}(_0x54ef,0x112));var _0xf54e=function(_0x55d195,_0x2eb23c){_0x55d195=_0x55d195-0x0;var _0x4bce4e=_0x54ef[_0x55d195];return _0x4bce4e;};'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 fcbfadf..b27c7c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x002c=['rimraf','zip-dir','fast-json-patch','request-promise','moment','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/environment','../../config/license/util','status','end','offset','undefined','count','limit','set','json','apply','update','then','destroy','stack','name','send','index','OpenchannelTransferReport','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','params','rawAttributes','create','body','catch','find','describe','eml-format'];(function(_0x173f10,_0x35db61){var _0x53142d=function(_0x37bbef){while(--_0x37bbef){_0x173f10['push'](_0x173f10['shift']());}};_0x53142d(++_0x35db61);}(_0x002c,0xd4));var _0xc002=function(_0x54a7aa,_0x568af7){_0x54a7aa=_0x54a7aa-0x0;var _0x958a16=_0x002c[_0x54a7aa];return _0x958a16;};'use strict';var emlformat=require(_0xc002('0x0'));var rimraf=require(_0xc002('0x1'));var zipdir=require(_0xc002('0x2'));var jsonpatch=require(_0xc002('0x3'));var rp=require(_0xc002('0x4'));var moment=require(_0xc002('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xc002('0x6'));var ejs=require(_0xc002('0x7'));var fs=require('fs');var fs_extra=require(_0xc002('0x8'));var _=require(_0xc002('0x9'));var squel=require(_0xc002('0xa'));var crypto=require(_0xc002('0xb'));var jsforce=require(_0xc002('0xc'));var deskjs=require(_0xc002('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc002('0xe'));var Redis=require('ioredis');var authService=require(_0xc002('0xf'));var qs=require(_0xc002('0x10'));var as=require(_0xc002('0x11'));var hardwareService=require(_0xc002('0x12'));var logger=require(_0xc002('0x13'))(_0xc002('0x14'));var utils=require('../../config/utils');var config=require(_0xc002('0x15'));var licenseUtil=require(_0xc002('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x78632,_0x18f7f2){_0x18f7f2=_0x18f7f2||0xcc;return function(_0x12ac0a){if(_0x12ac0a){return _0x78632['sendStatus'](_0x18f7f2);}return _0x78632[_0xc002('0x17')](_0x18f7f2)[_0xc002('0x18')]();};}function respondWithResult(_0x17f1dc,_0x31b07c){_0x31b07c=_0x31b07c||0xc8;return function(_0x2f7757){if(_0x2f7757){return _0x17f1dc['status'](_0x31b07c)['json'](_0x2f7757);}};}function respondWithFilteredResult(_0x5beeb0,_0x55fa30){return function(_0x4822ab){if(_0x4822ab){var _0x1fb382=typeof _0x55fa30[_0xc002('0x19')]==='undefined'&&typeof _0x55fa30['limit']===_0xc002('0x1a');var _0x55f456=_0x4822ab[_0xc002('0x1b')];var _0x54f372=_0x1fb382?0x0:_0x55fa30[_0xc002('0x19')];var _0x425355=_0x1fb382?_0x4822ab[_0xc002('0x1b')]:_0x55fa30[_0xc002('0x19')]+_0x55fa30[_0xc002('0x1c')];var _0x33b2bb;if(_0x425355>=_0x55f456){_0x425355=_0x55f456;_0x33b2bb=0xc8;}else{_0x33b2bb=0xce;}_0x5beeb0[_0xc002('0x17')](_0x33b2bb);return _0x5beeb0[_0xc002('0x1d')]('Content-Range',_0x54f372+'-'+_0x425355+'/'+_0x55f456)[_0xc002('0x1e')](_0x4822ab);}return null;};}function patchUpdates(_0x36c5ea){return function(_0x243456){try{jsonpatch[_0xc002('0x1f')](_0x243456,_0x36c5ea,!![]);}catch(_0x5c68b7){return BPromise['reject'](_0x5c68b7);}return _0x243456['save']();};}function saveUpdates(_0x5be593,_0x11cdd8){return function(_0x3e32e2){if(_0x3e32e2){return _0x3e32e2[_0xc002('0x20')](_0x5be593)[_0xc002('0x21')](function(_0x1fe4b8){return _0x1fe4b8;});}return null;};}function removeEntity(_0x4ea138,_0x332465){return function(_0x487c94){if(_0x487c94){return _0x487c94[_0xc002('0x22')]()[_0xc002('0x21')](function(){_0x4ea138[_0xc002('0x17')](0xcc)[_0xc002('0x18')]();});}};}function handleEntityNotFound(_0x10e3f8,_0x3f2eae){return function(_0x24e6f0){if(!_0x24e6f0){_0x10e3f8['sendStatus'](0x194);}return _0x24e6f0;};}function handleError(_0x284df2,_0x33ac22){_0x33ac22=_0x33ac22||0x1f4;return function(_0x25e1ac){logger['error'](_0x25e1ac[_0xc002('0x23')]);if(_0x25e1ac[_0xc002('0x24')]){delete _0x25e1ac['name'];}_0x284df2[_0xc002('0x17')](_0x33ac22)[_0xc002('0x25')](_0x25e1ac);};}exports[_0xc002('0x26')]=function(_0x27a639,_0x4018be){var _0x4b1a2d={},_0x177c84={},_0x45d365={'count':0x0,'rows':[]};var _0x4829f5=_['map'](db[_0xc002('0x27')]['rawAttributes'],function(_0x34cd3c){return{'name':_0x34cd3c[_0xc002('0x28')],'type':_0x34cd3c[_0xc002('0x29')][_0xc002('0x2a')]};});_0x177c84[_0xc002('0x2b')]=_[_0xc002('0x2c')](_0x4829f5,_0xc002('0x24'));_0x177c84[_0xc002('0x2d')]=_[_0xc002('0x2e')](_0x27a639['query']);_0x177c84['filters']=_[_0xc002('0x2f')](_0x177c84['model'],_0x177c84[_0xc002('0x2d')]);_0x4b1a2d['attributes']=_[_0xc002('0x2f')](_0x177c84['model'],qs[_0xc002('0x30')](_0x27a639[_0xc002('0x2d')][_0xc002('0x30')]));_0x4b1a2d[_0xc002('0x31')]=_0x4b1a2d[_0xc002('0x31')][_0xc002('0x32')]?_0x4b1a2d['attributes']:_0x177c84[_0xc002('0x2b')];if(!_0x27a639[_0xc002('0x2d')][_0xc002('0x33')](_0xc002('0x34'))){_0x4b1a2d[_0xc002('0x1c')]=qs[_0xc002('0x1c')](_0x27a639[_0xc002('0x2d')][_0xc002('0x1c')]);_0x4b1a2d[_0xc002('0x19')]=qs[_0xc002('0x19')](_0x27a639[_0xc002('0x2d')]['offset']);}_0x4b1a2d[_0xc002('0x35')]=qs[_0xc002('0x36')](_0x27a639[_0xc002('0x2d')][_0xc002('0x36')]);_0x4b1a2d[_0xc002('0x37')]=qs[_0xc002('0x38')](_[_0xc002('0x39')](_0x27a639[_0xc002('0x2d')],_0x177c84['filters']),_0x4829f5);if(_0x27a639[_0xc002('0x2d')]['filter']){_0x4b1a2d[_0xc002('0x37')]=_[_0xc002('0x3a')](_0x4b1a2d[_0xc002('0x37')],{'$or':_['map'](_0x4829f5,function(_0x3497e8){if(_0x3497e8[_0xc002('0x29')]!==_0xc002('0x3b')){var _0x5663ef={};_0x5663ef[_0x3497e8[_0xc002('0x24')]]={'$like':'%'+_0x27a639[_0xc002('0x2d')][_0xc002('0x3c')]+'%'};return _0x5663ef;}})});}_0x4b1a2d=_[_0xc002('0x3a')]({},_0x4b1a2d,_0x27a639[_0xc002('0x3d')]);var _0x19a759={'where':_0x4b1a2d[_0xc002('0x37')]};return db[_0xc002('0x27')]['count'](_0x19a759)[_0xc002('0x21')](function(_0x2effa1){_0x45d365[_0xc002('0x1b')]=_0x2effa1;if(_0x27a639[_0xc002('0x2d')][_0xc002('0x3e')]){_0x4b1a2d[_0xc002('0x3f')]=[{'all':!![]}];}return db[_0xc002('0x27')]['findAll'](_0x4b1a2d);})[_0xc002('0x21')](function(_0x4bfc2e){_0x45d365['rows']=_0x4bfc2e;return _0x45d365;})['then'](respondWithFilteredResult(_0x4018be,_0x4b1a2d))['catch'](handleError(_0x4018be,null));};exports['show']=function(_0x45a3e1,_0x28c4da){var _0x44cfec={'raw':!![],'where':{'id':_0x45a3e1[_0xc002('0x40')]['id']}},_0x2e7282={};_0x2e7282[_0xc002('0x2b')]=_[_0xc002('0x2e')](db['OpenchannelTransferReport'][_0xc002('0x41')]);_0x2e7282[_0xc002('0x2d')]=_[_0xc002('0x2e')](_0x45a3e1['query']);_0x2e7282['filters']=_[_0xc002('0x2f')](_0x2e7282[_0xc002('0x2b')],_0x2e7282[_0xc002('0x2d')]);_0x44cfec[_0xc002('0x31')]=_[_0xc002('0x2f')](_0x2e7282[_0xc002('0x2b')],qs[_0xc002('0x30')](_0x45a3e1['query']['fields']));_0x44cfec[_0xc002('0x31')]=_0x44cfec[_0xc002('0x31')][_0xc002('0x32')]?_0x44cfec['attributes']:_0x2e7282[_0xc002('0x2b')];if(_0x45a3e1['query'][_0xc002('0x3e')]){_0x44cfec[_0xc002('0x3f')]=[{'all':!![]}];}_0x44cfec=_[_0xc002('0x3a')]({},_0x44cfec,_0x45a3e1[_0xc002('0x3d')]);return db[_0xc002('0x27')]['find'](_0x44cfec)[_0xc002('0x21')](handleEntityNotFound(_0x28c4da,null))[_0xc002('0x21')](respondWithResult(_0x28c4da,null))['catch'](handleError(_0x28c4da,null));};exports[_0xc002('0x42')]=function(_0x544668,_0x10acae){return db['OpenchannelTransferReport'][_0xc002('0x42')](_0x544668[_0xc002('0x43')],{})[_0xc002('0x21')](respondWithResult(_0x10acae,0xc9))[_0xc002('0x44')](handleError(_0x10acae,null));};exports[_0xc002('0x20')]=function(_0x12d475,_0x406dd3){if(_0x12d475[_0xc002('0x43')]['id']){delete _0x12d475[_0xc002('0x43')]['id'];}return db[_0xc002('0x27')][_0xc002('0x45')]({'where':{'id':_0x12d475[_0xc002('0x40')]['id']}})[_0xc002('0x21')](handleEntityNotFound(_0x406dd3,null))[_0xc002('0x21')](saveUpdates(_0x12d475[_0xc002('0x43')],null))[_0xc002('0x21')](respondWithResult(_0x406dd3,null))[_0xc002('0x44')](handleError(_0x406dd3,null));};exports[_0xc002('0x22')]=function(_0x16c4a1,_0x43818e){return db[_0xc002('0x27')]['find']({'where':{'id':_0x16c4a1[_0xc002('0x40')]['id']}})[_0xc002('0x21')](handleEntityNotFound(_0x43818e,null))[_0xc002('0x21')](removeEntity(_0x43818e,null))[_0xc002('0x44')](handleError(_0x43818e,null));};exports[_0xc002('0x46')]=function(_0x4b80b0,_0x48bbe9){return db['OpenchannelTransferReport'][_0xc002('0x46')]()[_0xc002('0x21')](respondWithResult(_0x48bbe9,null))[_0xc002('0x44')](handleError(_0x48bbe9,null));};
\ No newline at end of file
+var _0x8e04=['body','find','describe','eml-format','zip-dir','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','status','end','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','index','OpenchannelTransferReport','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','includeAll','findAll','show','params','rawAttributes','catch','create'];(function(_0x4b676e,_0xd54452){var _0x22dadf=function(_0x883bb3){while(--_0x883bb3){_0x4b676e['push'](_0x4b676e['shift']());}};_0x22dadf(++_0xd54452);}(_0x8e04,0x183));var _0x48e0=function(_0x3e274d,_0x35f95f){_0x3e274d=_0x3e274d-0x0;var _0x352bf9=_0x8e04[_0x3e274d];return _0x352bf9;};'use strict';var emlformat=require(_0x48e0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x48e0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x48e0('0x2'));var Mustache=require('mustache');var util=require(_0x48e0('0x3'));var path=require(_0x48e0('0x4'));var sox=require(_0x48e0('0x5'));var csv=require(_0x48e0('0x6'));var ejs=require(_0x48e0('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x48e0('0x8'));var squel=require('squel');var crypto=require(_0x48e0('0x9'));var jsforce=require(_0x48e0('0xa'));var deskjs=require(_0x48e0('0xb'));var toCsv=require('to-csv');var querystring=require(_0x48e0('0xc'));var Papa=require('papaparse');var Redis=require(_0x48e0('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x48e0('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x48e0('0xf'))('api');var utils=require(_0x48e0('0x10'));var config=require(_0x48e0('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d060d,_0x23f9c3){_0x23f9c3=_0x23f9c3||0xcc;return function(_0x279203){if(_0x279203){return _0x5d060d['sendStatus'](_0x23f9c3);}return _0x5d060d[_0x48e0('0x12')](_0x23f9c3)[_0x48e0('0x13')]();};}function respondWithResult(_0x968184,_0x68e9a1){_0x68e9a1=_0x68e9a1||0xc8;return function(_0x5975e4){if(_0x5975e4){return _0x968184['status'](_0x68e9a1)[_0x48e0('0x14')](_0x5975e4);}};}function respondWithFilteredResult(_0x8c45f9,_0x5ccade){return function(_0x56497e){if(_0x56497e){var _0x329db3=typeof _0x5ccade[_0x48e0('0x15')]==='undefined'&&typeof _0x5ccade[_0x48e0('0x16')]==='undefined';var _0x381d00=_0x56497e[_0x48e0('0x17')];var _0x356cf8=_0x329db3?0x0:_0x5ccade['offset'];var _0x132cbb=_0x329db3?_0x56497e[_0x48e0('0x17')]:_0x5ccade['offset']+_0x5ccade[_0x48e0('0x16')];var _0x179f68;if(_0x132cbb>=_0x381d00){_0x132cbb=_0x381d00;_0x179f68=0xc8;}else{_0x179f68=0xce;}_0x8c45f9['status'](_0x179f68);return _0x8c45f9[_0x48e0('0x18')](_0x48e0('0x19'),_0x356cf8+'-'+_0x132cbb+'/'+_0x381d00)[_0x48e0('0x14')](_0x56497e);}return null;};}function patchUpdates(_0x2c8de7){return function(_0x589d8f){try{jsonpatch[_0x48e0('0x1a')](_0x589d8f,_0x2c8de7,!![]);}catch(_0x2e3046){return BPromise['reject'](_0x2e3046);}return _0x589d8f['save']();};}function saveUpdates(_0x4b1523,_0x5b0bff){return function(_0x3a95ac){if(_0x3a95ac){return _0x3a95ac[_0x48e0('0x1b')](_0x4b1523)[_0x48e0('0x1c')](function(_0x5ef56d){return _0x5ef56d;});}return null;};}function removeEntity(_0x415b16,_0x23a3c8){return function(_0x493bac){if(_0x493bac){return _0x493bac[_0x48e0('0x1d')]()[_0x48e0('0x1c')](function(){_0x415b16[_0x48e0('0x12')](0xcc)[_0x48e0('0x13')]();});}};}function handleEntityNotFound(_0x3a46b0,_0x556676){return function(_0x3f729a){if(!_0x3f729a){_0x3a46b0['sendStatus'](0x194);}return _0x3f729a;};}function handleError(_0x397599,_0x24e3bf){_0x24e3bf=_0x24e3bf||0x1f4;return function(_0x1ab9d0){logger[_0x48e0('0x1e')](_0x1ab9d0[_0x48e0('0x1f')]);if(_0x1ab9d0[_0x48e0('0x20')]){delete _0x1ab9d0[_0x48e0('0x20')];}_0x397599[_0x48e0('0x12')](_0x24e3bf)['send'](_0x1ab9d0);};}exports[_0x48e0('0x21')]=function(_0x25d0d5,_0x553924){var _0x5ad5d9={},_0x91061c={},_0x15a8a={'count':0x0,'rows':[]};var _0x4a2d98=_['map'](db[_0x48e0('0x22')]['rawAttributes'],function(_0x536cdd){return{'name':_0x536cdd[_0x48e0('0x23')],'type':_0x536cdd[_0x48e0('0x24')][_0x48e0('0x25')]};});_0x91061c[_0x48e0('0x26')]=_[_0x48e0('0x27')](_0x4a2d98,'name');_0x91061c['query']=_[_0x48e0('0x28')](_0x25d0d5[_0x48e0('0x29')]);_0x91061c['filters']=_[_0x48e0('0x2a')](_0x91061c[_0x48e0('0x26')],_0x91061c[_0x48e0('0x29')]);_0x5ad5d9['attributes']=_['intersection'](_0x91061c[_0x48e0('0x26')],qs[_0x48e0('0x2b')](_0x25d0d5[_0x48e0('0x29')]['fields']));_0x5ad5d9[_0x48e0('0x2c')]=_0x5ad5d9[_0x48e0('0x2c')][_0x48e0('0x2d')]?_0x5ad5d9[_0x48e0('0x2c')]:_0x91061c[_0x48e0('0x26')];if(!_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x2e')]('nolimit')){_0x5ad5d9['limit']=qs[_0x48e0('0x16')](_0x25d0d5['query'][_0x48e0('0x16')]);_0x5ad5d9[_0x48e0('0x15')]=qs['offset'](_0x25d0d5['query'][_0x48e0('0x15')]);}_0x5ad5d9['order']=qs['sort'](_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x2f')]);_0x5ad5d9[_0x48e0('0x30')]=qs[_0x48e0('0x31')](_[_0x48e0('0x32')](_0x25d0d5['query'],_0x91061c['filters']),_0x4a2d98);if(_0x25d0d5['query'][_0x48e0('0x33')]){_0x5ad5d9['where']=_[_0x48e0('0x34')](_0x5ad5d9[_0x48e0('0x30')],{'$or':_[_0x48e0('0x27')](_0x4a2d98,function(_0x474962){if(_0x474962['type']!=='VIRTUAL'){var _0x1e88e9={};_0x1e88e9[_0x474962[_0x48e0('0x20')]]={'$like':'%'+_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x33')]+'%'};return _0x1e88e9;}})});}_0x5ad5d9=_[_0x48e0('0x34')]({},_0x5ad5d9,_0x25d0d5[_0x48e0('0x35')]);var _0x14ba11={'where':_0x5ad5d9[_0x48e0('0x30')]};return db[_0x48e0('0x22')]['count'](_0x14ba11)[_0x48e0('0x1c')](function(_0x476199){_0x15a8a[_0x48e0('0x17')]=_0x476199;if(_0x25d0d5[_0x48e0('0x29')][_0x48e0('0x36')]){_0x5ad5d9['include']=[{'all':!![]}];}return db[_0x48e0('0x22')][_0x48e0('0x37')](_0x5ad5d9);})[_0x48e0('0x1c')](function(_0x1a36ba){_0x15a8a['rows']=_0x1a36ba;return _0x15a8a;})['then'](respondWithFilteredResult(_0x553924,_0x5ad5d9))['catch'](handleError(_0x553924,null));};exports[_0x48e0('0x38')]=function(_0x11da60,_0x2fd169){var _0x1aac1c={'raw':!![],'where':{'id':_0x11da60[_0x48e0('0x39')]['id']}},_0x4f22ed={};_0x4f22ed[_0x48e0('0x26')]=_[_0x48e0('0x28')](db[_0x48e0('0x22')][_0x48e0('0x3a')]);_0x4f22ed[_0x48e0('0x29')]=_[_0x48e0('0x28')](_0x11da60[_0x48e0('0x29')]);_0x4f22ed[_0x48e0('0x31')]=_[_0x48e0('0x2a')](_0x4f22ed[_0x48e0('0x26')],_0x4f22ed['query']);_0x1aac1c['attributes']=_[_0x48e0('0x2a')](_0x4f22ed[_0x48e0('0x26')],qs[_0x48e0('0x2b')](_0x11da60['query']['fields']));_0x1aac1c[_0x48e0('0x2c')]=_0x1aac1c[_0x48e0('0x2c')][_0x48e0('0x2d')]?_0x1aac1c['attributes']:_0x4f22ed[_0x48e0('0x26')];if(_0x11da60[_0x48e0('0x29')]['includeAll']){_0x1aac1c['include']=[{'all':!![]}];}_0x1aac1c=_[_0x48e0('0x34')]({},_0x1aac1c,_0x11da60[_0x48e0('0x35')]);return db[_0x48e0('0x22')]['find'](_0x1aac1c)[_0x48e0('0x1c')](handleEntityNotFound(_0x2fd169,null))['then'](respondWithResult(_0x2fd169,null))[_0x48e0('0x3b')](handleError(_0x2fd169,null));};exports[_0x48e0('0x3c')]=function(_0x4dc4b2,_0x38d7fe){return db[_0x48e0('0x22')]['create'](_0x4dc4b2[_0x48e0('0x3d')],{})[_0x48e0('0x1c')](respondWithResult(_0x38d7fe,0xc9))[_0x48e0('0x3b')](handleError(_0x38d7fe,null));};exports[_0x48e0('0x1b')]=function(_0x493da1,_0x24eff8){if(_0x493da1[_0x48e0('0x3d')]['id']){delete _0x493da1['body']['id'];}return db[_0x48e0('0x22')][_0x48e0('0x3e')]({'where':{'id':_0x493da1[_0x48e0('0x39')]['id']}})[_0x48e0('0x1c')](handleEntityNotFound(_0x24eff8,null))[_0x48e0('0x1c')](saveUpdates(_0x493da1[_0x48e0('0x3d')],null))[_0x48e0('0x1c')](respondWithResult(_0x24eff8,null))[_0x48e0('0x3b')](handleError(_0x24eff8,null));};exports['destroy']=function(_0x2340c0,_0x52bfb5){return db[_0x48e0('0x22')][_0x48e0('0x3e')]({'where':{'id':_0x2340c0['params']['id']}})[_0x48e0('0x1c')](handleEntityNotFound(_0x52bfb5,null))['then'](removeEntity(_0x52bfb5,null))[_0x48e0('0x3b')](handleError(_0x52bfb5,null));};exports[_0x48e0('0x3f')]=function(_0x56f787,_0x1fd260){return db['OpenchannelTransferReport'][_0x48e0('0x3f')]()[_0x48e0('0x1c')](respondWithResult(_0x1fd260,null))[_0x48e0('0x3b')](handleError(_0x1fd260,null));};
\ No newline at end of file
index 7210402..1b17c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc307=['request-promise','path','rimraf','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x41ff4f,_0x17ae49){var _0x3d68c3=function(_0x29f438){while(--_0x29f438){_0x41ff4f['push'](_0x41ff4f['shift']());}};_0x3d68c3(++_0x17ae49);}(_0xc307,0x19e));var _0x7c30=function(_0x5e1fe7,_0x4d9f8e){_0x5e1fe7=_0x5e1fe7-0x0;var _0x54a65d=_0xc307[_0x5e1fe7];return _0x54a65d;};'use strict';var _=require(_0x7c30('0x0'));var util=require(_0x7c30('0x1'));var logger=require(_0x7c30('0x2'))(_0x7c30('0x3'));var moment=require(_0x7c30('0x4'));var BPromise=require(_0x7c30('0x5'));var rp=require(_0x7c30('0x6'));var fs=require('fs');var path=require(_0x7c30('0x7'));var rimraf=require(_0x7c30('0x8'));var config=require('../../config/environment');var attributes=require(_0x7c30('0x9'));module[_0x7c30('0xa')]=function(_0x23ac71,_0x28f689){return _0x23ac71[_0x7c30('0xb')](_0x7c30('0xc'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x7c30('0xd'),'fields':[_0x7c30('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xab8d=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelTransferReport','uniqueid'];(function(_0x27c7c6,_0x12974a){var _0x17a8ae=function(_0xbf3605){while(--_0xbf3605){_0x27c7c6['push'](_0x27c7c6['shift']());}};_0x17a8ae(++_0x12974a);}(_0xab8d,0xf2));var _0xdab8=function(_0x22f8ab,_0x15d8ff){_0x22f8ab=_0x22f8ab-0x0;var _0x2a70e5=_0xab8d[_0x22f8ab];return _0x2a70e5;};'use strict';var _=require('lodash');var util=require(_0xdab8('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xdab8('0x1'));var BPromise=require(_0xdab8('0x2'));var rp=require(_0xdab8('0x3'));var fs=require('fs');var path=require(_0xdab8('0x4'));var rimraf=require(_0xdab8('0x5'));var config=require(_0xdab8('0x6'));var attributes=require('./openchannelTransferReport.attributes');module[_0xdab8('0x7')]=function(_0x28e50d,_0x47142b){return _0x28e50d[_0xdab8('0x8')](_0xdab8('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xdab8('0xa'),'fields':[_0xdab8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a80d09c..2389d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3595=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','info','result','lodash','util','moment'];(function(_0x4ac31f,_0x3bf843){var _0x1f1926=function(_0x362de5){while(--_0x362de5){_0x4ac31f['push'](_0x4ac31f['shift']());}};_0x1f1926(++_0x3bf843);}(_0x3595,0x147));var _0x5359=function(_0x18fe4e,_0x4959c7){_0x18fe4e=_0x18fe4e-0x0;var _0x626358=_0x3595[_0x18fe4e];return _0x626358;};'use strict';var _=require(_0x5359('0x0'));var util=require(_0x5359('0x1'));var moment=require(_0x5359('0x2'));var BPromise=require('bluebird');var rs=require(_0x5359('0x3'));var fs=require('fs');var Redis=require(_0x5359('0x4'));var db=require(_0x5359('0x5'))['db'];var utils=require(_0x5359('0x6'));var logger=require(_0x5359('0x7'))(_0x5359('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5359('0x9')][_0x5359('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b6f48,_0x29a776,_0x39fcd8){return new BPromise(function(_0x51b2fb,_0x400db4){return client[_0x5359('0xb')](_0x1b6f48,_0x39fcd8)[_0x5359('0xc')](function(_0x15e2c6){logger['info']('OpenchannelTransferReport,\x20%s,\x20%s',_0x29a776,'request\x20sent');logger['debug'](_0x5359('0xd'),_0x29a776,_0x5359('0xe'),JSON[_0x5359('0xf')](_0x15e2c6));if(_0x15e2c6[_0x5359('0x10')]){if(_0x15e2c6[_0x5359('0x10')][_0x5359('0x11')]===0x1f4){logger[_0x5359('0x10')](_0x5359('0x12'),_0x29a776,_0x15e2c6[_0x5359('0x10')][_0x5359('0x13')]);return _0x400db4(_0x15e2c6[_0x5359('0x10')][_0x5359('0x13')]);}logger[_0x5359('0x10')](_0x5359('0x12'),_0x29a776,_0x15e2c6['error']['message']);return _0x51b2fb(_0x15e2c6[_0x5359('0x10')][_0x5359('0x13')]);}else{logger[_0x5359('0x14')](_0x5359('0x12'),_0x29a776,_0x5359('0xe'));_0x51b2fb(_0x15e2c6[_0x5359('0x15')]['message']);}})['catch'](function(_0x267d4c){logger[_0x5359('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x29a776,_0x267d4c);_0x400db4(_0x267d4c);});});}
\ No newline at end of file
+var _0xc18a=['code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2221f2,_0x4acdaa){var _0x4ba58a=function(_0x502677){while(--_0x502677){_0x2221f2['push'](_0x2221f2['shift']());}};_0x4ba58a(++_0x4acdaa);}(_0xc18a,0x1cf));var _0xac18=function(_0xdddc0c,_0x1f0bd9){_0xdddc0c=_0xdddc0c-0x0;var _0x3c91d9=_0xc18a[_0xdddc0c];return _0x3c91d9;};'use strict';var _=require(_0xac18('0x0'));var util=require(_0xac18('0x1'));var moment=require(_0xac18('0x2'));var BPromise=require(_0xac18('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xac18('0x4'));var db=require(_0xac18('0x5'))['db'];var utils=require(_0xac18('0x6'));var logger=require(_0xac18('0x7'))(_0xac18('0x8'));var config=require(_0xac18('0x9'));var jayson=require(_0xac18('0xa'));var client=jayson[_0xac18('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xab6cb,_0x268fa1,_0x542a9){return new BPromise(function(_0x2bf4b8,_0xd3c4bc){return client[_0xac18('0xc')](_0xab6cb,_0x542a9)[_0xac18('0xd')](function(_0x223d7f){logger[_0xac18('0xe')](_0xac18('0xf'),_0x268fa1,_0xac18('0x10'));logger[_0xac18('0x11')](_0xac18('0x12'),_0x268fa1,_0xac18('0x10'),JSON['stringify'](_0x223d7f));if(_0x223d7f[_0xac18('0x13')]){if(_0x223d7f['error'][_0xac18('0x14')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x268fa1,_0x223d7f[_0xac18('0x13')]['message']);return _0xd3c4bc(_0x223d7f['error'][_0xac18('0x15')]);}logger[_0xac18('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x268fa1,_0x223d7f[_0xac18('0x13')][_0xac18('0x15')]);return _0x2bf4b8(_0x223d7f['error'][_0xac18('0x15')]);}else{logger['info'](_0xac18('0xf'),_0x268fa1,'request\x20sent');_0x2bf4b8(_0x223d7f['result'][_0xac18('0x15')]);}})[_0xac18('0x16')](function(_0x519c07){logger['error'](_0xac18('0xf'),_0x268fa1,_0x519c07);_0xd3c4bc(_0x519c07);});});}
\ No newline at end of file
index 716c0cd..9e828ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2800=['/:id','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x2800,0xd8));var _0x0280=function(_0x151a61,_0x2f53b8){_0x151a61=_0x151a61-0x0;var _0xd0f688=_0x2800[_0x151a61];return _0xd0f688;};'use strict';var multer=require(_0x0280('0x0'));var util=require(_0x0280('0x1'));var path=require(_0x0280('0x2'));var timeout=require(_0x0280('0x3'));var express=require(_0x0280('0x4'));var router=express[_0x0280('0x5')]();var fs_extra=require(_0x0280('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0280('0x7'));var config=require(_0x0280('0x8'));var controller=require(_0x0280('0x9'));router[_0x0280('0xa')]('/',auth[_0x0280('0xb')](),controller['index']);router['get'](_0x0280('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x0280('0xd')]('/',auth[_0x0280('0xb')](),controller[_0x0280('0xe')]);router[_0x0280('0xf')]('/:id',auth[_0x0280('0xb')](),controller['update']);router[_0x0280('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x0280('0x11')]);module[_0x0280('0x12')]=router;
\ No newline at end of file
+var _0x7a80=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','put','update','delete','destroy'];(function(_0x5f20c7,_0x15f2c6){var _0x255adc=function(_0x24c2fa){while(--_0x24c2fa){_0x5f20c7['push'](_0x5f20c7['shift']());}};_0x255adc(++_0x15f2c6);}(_0x7a80,0x10a));var _0x07a8=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x7a80[_0x29d94e];return _0x106237;};'use strict';var multer=require(_0x07a8('0x0'));var util=require(_0x07a8('0x1'));var path=require(_0x07a8('0x2'));var timeout=require(_0x07a8('0x3'));var express=require(_0x07a8('0x4'));var router=express[_0x07a8('0x5')]();var fs_extra=require(_0x07a8('0x6'));var auth=require(_0x07a8('0x7'));var interaction=require(_0x07a8('0x8'));var config=require(_0x07a8('0x9'));var controller=require('./pause.controller');router[_0x07a8('0xa')]('/',auth['isAuthenticated'](),controller[_0x07a8('0xb')]);router[_0x07a8('0xa')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0xe')]);router['post']('/',auth[_0x07a8('0xd')](),controller['create']);router[_0x07a8('0xf')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0x10')]);router[_0x07a8('0x11')](_0x07a8('0xc'),auth[_0x07a8('0xd')](),controller[_0x07a8('0x12')]);module['exports']=router;
\ No newline at end of file
index 8e54361..523f105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b49=['name','exports'];(function(_0x5000e1,_0x474fc0){var _0xa5a2ba=function(_0xff3328){while(--_0xff3328){_0x5000e1['push'](_0x5000e1['shift']());}};_0xa5a2ba(++_0x474fc0);}(_0x1b49,0xf3));var _0x91b4=function(_0x79ef34,_0x42d1a1){_0x79ef34=_0x79ef34-0x0;var _0x43d708=_0x1b49[_0x79ef34];return _0x43d708;};'use strict';var Sequelize=require('sequelize');module[_0x91b4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x91b4('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x587d=['name','exports','STRING'];(function(_0x1712f0,_0x4310fc){var _0x24947c=function(_0x10ae3e){while(--_0x10ae3e){_0x1712f0['push'](_0x1712f0['shift']());}};_0x24947c(++_0x4310fc);}(_0x587d,0x1e7));var _0xd587=function(_0x59a0e0,_0x32baef){_0x59a0e0=_0x59a0e0-0x0;var _0x2e0667=_0x587d[_0x59a0e0];return _0x2e0667;};'use strict';var Sequelize=require('sequelize');module[_0xd587('0x0')]={'name':{'type':Sequelize[_0xd587('0x1')],'unique':_0xd587('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xd587('0x1')]}};
\ No newline at end of file
index d88a612..3d05cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72d5=['stack','name','index','map','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','Pause','count','include','findAll','rows','catch','show','params','includeAll','create','body','user','get','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','apply','save','update','destroy','Pauses','then','error'];(function(_0x355131,_0x360cb1){var _0x4390fa=function(_0x54907f){while(--_0x54907f){_0x355131['push'](_0x355131['shift']());}};_0x4390fa(++_0x360cb1);}(_0x72d5,0x1bc));var _0x572d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x72d5[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x572d('0x0'));var zipdir=require(_0x572d('0x1'));var jsonpatch=require(_0x572d('0x2'));var rp=require(_0x572d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x572d('0x4'));var util=require(_0x572d('0x5'));var path=require(_0x572d('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x572d('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x572d('0x8'));var jsforce=require(_0x572d('0x9'));var deskjs=require(_0x572d('0xa'));var toCsv=require(_0x572d('0xb'));var querystring=require(_0x572d('0xc'));var Papa=require(_0x572d('0xd'));var Redis=require(_0x572d('0xe'));var authService=require(_0x572d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x572d('0x10'));var hardwareService=require(_0x572d('0x11'));var logger=require('../../config/logger')(_0x572d('0x12'));var utils=require(_0x572d('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x572d('0x14'));var db=require(_0x572d('0x15'))['db'];function respondWithStatusCode(_0x38c5ee,_0x38c187){_0x38c187=_0x38c187||0xcc;return function(_0x1a405c){if(_0x1a405c){return _0x38c5ee[_0x572d('0x16')](_0x38c187);}return _0x38c5ee['status'](_0x38c187)['end']();};}function respondWithResult(_0x51c01c,_0x1733e4){_0x1733e4=_0x1733e4||0xc8;return function(_0x522fc0){if(_0x522fc0){return _0x51c01c[_0x572d('0x17')](_0x1733e4)[_0x572d('0x18')](_0x522fc0);}};}function respondWithFilteredResult(_0x15c9ad,_0x8b4bb8){return function(_0x3cc012){if(_0x3cc012){var _0x447eb0=typeof _0x8b4bb8[_0x572d('0x19')]===_0x572d('0x1a')&&typeof _0x8b4bb8['limit']===_0x572d('0x1a');var _0x5656df=_0x3cc012['count'];var _0x88be6a=_0x447eb0?0x0:_0x8b4bb8[_0x572d('0x19')];var _0x53c23c=_0x447eb0?_0x3cc012['count']:_0x8b4bb8['offset']+_0x8b4bb8[_0x572d('0x1b')];var _0x125649;if(_0x53c23c>=_0x5656df){_0x53c23c=_0x5656df;_0x125649=0xc8;}else{_0x125649=0xce;}_0x15c9ad[_0x572d('0x17')](_0x125649);return _0x15c9ad[_0x572d('0x1c')]('Content-Range',_0x88be6a+'-'+_0x53c23c+'/'+_0x5656df)[_0x572d('0x18')](_0x3cc012);}return null;};}function patchUpdates(_0x844255){return function(_0x48dd71){try{jsonpatch[_0x572d('0x1d')](_0x48dd71,_0x844255,!![]);}catch(_0x2d94b7){return BPromise['reject'](_0x2d94b7);}return _0x48dd71[_0x572d('0x1e')]();};}function saveUpdates(_0x2dc1ab,_0x35e321){return function(_0x32e2b6){if(_0x32e2b6){return _0x32e2b6[_0x572d('0x1f')](_0x2dc1ab)['then'](function(_0x233aaf){return _0x233aaf;});}return null;};}function removeEntity(_0x350500,_0x3f8fee){return function(_0x4f93b6){if(_0x4f93b6){return _0x4f93b6[_0x572d('0x20')]()['then'](function(){var _0x131692=_0x4f93b6['get']({'plain':!![]});var _0xa65186=_0x572d('0x21');return db['UserProfileResource'][_0x572d('0x20')]({'where':{'type':_0xa65186,'resourceId':_0x131692['id']}})[_0x572d('0x22')](function(){return _0x4f93b6;});})[_0x572d('0x22')](function(){_0x350500['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ed9ba,_0x5082fb){return function(_0x433129){if(!_0x433129){_0x4ed9ba[_0x572d('0x16')](0x194);}return _0x433129;};}function handleError(_0x592e07,_0x208733){_0x208733=_0x208733||0x1f4;return function(_0x4f9106){logger[_0x572d('0x23')](_0x4f9106[_0x572d('0x24')]);if(_0x4f9106[_0x572d('0x25')]){delete _0x4f9106[_0x572d('0x25')];}_0x592e07['status'](_0x208733)['send'](_0x4f9106);};}exports[_0x572d('0x26')]=function(_0x3e64a3,_0x5d29ee){var _0x46f3b9={},_0x796541={},_0x46ff4a={'count':0x0,'rows':[]};var _0x76c1cc=_[_0x572d('0x27')](db['Pause'][_0x572d('0x28')],function(_0x5bb51b){return{'name':_0x5bb51b[_0x572d('0x29')],'type':_0x5bb51b[_0x572d('0x2a')][_0x572d('0x2b')]};});_0x796541['model']=_['map'](_0x76c1cc,'name');_0x796541['query']=_[_0x572d('0x2c')](_0x3e64a3[_0x572d('0x2d')]);_0x796541['filters']=_[_0x572d('0x2e')](_0x796541[_0x572d('0x2f')],_0x796541[_0x572d('0x2d')]);_0x46f3b9[_0x572d('0x30')]=_['intersection'](_0x796541[_0x572d('0x2f')],qs[_0x572d('0x31')](_0x3e64a3[_0x572d('0x2d')][_0x572d('0x31')]));_0x46f3b9[_0x572d('0x30')]=_0x46f3b9[_0x572d('0x30')][_0x572d('0x32')]?_0x46f3b9['attributes']:_0x796541[_0x572d('0x2f')];if(!_0x3e64a3[_0x572d('0x2d')][_0x572d('0x33')](_0x572d('0x34'))){_0x46f3b9[_0x572d('0x1b')]=qs[_0x572d('0x1b')](_0x3e64a3[_0x572d('0x2d')][_0x572d('0x1b')]);_0x46f3b9[_0x572d('0x19')]=qs['offset'](_0x3e64a3[_0x572d('0x2d')][_0x572d('0x19')]);}_0x46f3b9[_0x572d('0x35')]=qs[_0x572d('0x36')](_0x3e64a3['query'][_0x572d('0x36')]);_0x46f3b9[_0x572d('0x37')]=qs[_0x572d('0x38')](_[_0x572d('0x39')](_0x3e64a3[_0x572d('0x2d')],_0x796541[_0x572d('0x38')]),_0x76c1cc);if(_0x3e64a3['query'][_0x572d('0x3a')]){_0x46f3b9['where']=_['merge'](_0x46f3b9['where'],{'$or':_[_0x572d('0x27')](_0x76c1cc,function(_0x352b7b){if(_0x352b7b[_0x572d('0x2a')]!==_0x572d('0x3b')){var _0x46ba1a={};_0x46ba1a[_0x352b7b[_0x572d('0x25')]]={'$like':'%'+_0x3e64a3[_0x572d('0x2d')]['filter']+'%'};return _0x46ba1a;}})});}_0x46f3b9=_[_0x572d('0x3c')]({},_0x46f3b9,_0x3e64a3[_0x572d('0x3d')]);var _0x1333d3={'where':_0x46f3b9[_0x572d('0x37')]};return db[_0x572d('0x3e')][_0x572d('0x3f')](_0x1333d3)[_0x572d('0x22')](function(_0x3b15af){_0x46ff4a[_0x572d('0x3f')]=_0x3b15af;if(_0x3e64a3['query']['includeAll']){_0x46f3b9[_0x572d('0x40')]=[{'all':!![]}];}return db[_0x572d('0x3e')][_0x572d('0x41')](_0x46f3b9);})[_0x572d('0x22')](function(_0xb9459b){_0x46ff4a[_0x572d('0x42')]=_0xb9459b;return _0x46ff4a;})[_0x572d('0x22')](respondWithFilteredResult(_0x5d29ee,_0x46f3b9))[_0x572d('0x43')](handleError(_0x5d29ee,null));};exports[_0x572d('0x44')]=function(_0x2a93e5,_0x547f70){var _0x27166b={'raw':!![],'where':{'id':_0x2a93e5[_0x572d('0x45')]['id']}},_0x25084c={};_0x25084c[_0x572d('0x2f')]=_['keys'](db[_0x572d('0x3e')]['rawAttributes']);_0x25084c[_0x572d('0x2d')]=_[_0x572d('0x2c')](_0x2a93e5['query']);_0x25084c[_0x572d('0x38')]=_['intersection'](_0x25084c['model'],_0x25084c['query']);_0x27166b['attributes']=_['intersection'](_0x25084c[_0x572d('0x2f')],qs[_0x572d('0x31')](_0x2a93e5[_0x572d('0x2d')][_0x572d('0x31')]));_0x27166b[_0x572d('0x30')]=_0x27166b[_0x572d('0x30')][_0x572d('0x32')]?_0x27166b[_0x572d('0x30')]:_0x25084c[_0x572d('0x2f')];if(_0x2a93e5['query'][_0x572d('0x46')]){_0x27166b[_0x572d('0x40')]=[{'all':!![]}];}_0x27166b=_[_0x572d('0x3c')]({},_0x27166b,_0x2a93e5['options']);return db['Pause']['find'](_0x27166b)['then'](handleEntityNotFound(_0x547f70,null))['then'](respondWithResult(_0x547f70,null))[_0x572d('0x43')](handleError(_0x547f70,null));};exports[_0x572d('0x47')]=function(_0x4eb668,_0x4f9598){return db['Pause']['create'](_0x4eb668[_0x572d('0x48')],{})['then'](function(_0x364b82){var _0x544bd4=_0x4eb668[_0x572d('0x49')][_0x572d('0x4a')]({'plain':!![]});if(!_0x544bd4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x544bd4['role']===_0x572d('0x49')){var _0x3c818a=_0x364b82[_0x572d('0x4a')]({'plain':!![]});var _0xaff964=_0x572d('0x21');return db[_0x572d('0x4b')][_0x572d('0x4c')]({'where':{'name':_0xaff964,'userProfileId':_0x544bd4[_0x572d('0x4d')]},'raw':!![]})[_0x572d('0x22')](function(_0x15c733){if(_0x15c733&&_0x15c733[_0x572d('0x4e')]===0x0){return db['UserProfileResource'][_0x572d('0x47')]({'name':_0x3c818a[_0x572d('0x25')],'resourceId':_0x3c818a['id'],'type':_0x15c733[_0x572d('0x25')],'sectionId':_0x15c733['id']},{})['then'](function(){return _0x364b82;});}else{return _0x364b82;}})['catch'](function(_0x563c07){logger[_0x572d('0x23')](_0x572d('0x4f'),_0x563c07);throw _0x563c07;});}return _0x364b82;})[_0x572d('0x22')](respondWithResult(_0x4f9598,0xc9))[_0x572d('0x43')](handleError(_0x4f9598,null));};exports[_0x572d('0x1f')]=function(_0x4a7c80,_0x3788fb){if(_0x4a7c80['body']['id']){delete _0x4a7c80[_0x572d('0x48')]['id'];}return db[_0x572d('0x3e')][_0x572d('0x4c')]({'where':{'id':_0x4a7c80['params']['id']}})[_0x572d('0x22')](handleEntityNotFound(_0x3788fb,null))[_0x572d('0x22')](saveUpdates(_0x4a7c80[_0x572d('0x48')],null))['then'](respondWithResult(_0x3788fb,null))[_0x572d('0x43')](handleError(_0x3788fb,null));};exports[_0x572d('0x20')]=function(_0x3ce19b,_0xbe2444){return db[_0x572d('0x3e')][_0x572d('0x4c')]({'where':{'id':_0x3ce19b[_0x572d('0x45')]['id']}})['then'](handleEntityNotFound(_0xbe2444,null))[_0x572d('0x22')](removeEntity(_0xbe2444,null))['catch'](handleError(_0xbe2444,null));};
\ No newline at end of file
+var _0xbdda=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','then','Pauses','UserProfileResource','sendStatus','error','stack','name','send','index','Pause','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x356e91,_0x45592c){var _0x5559dc=function(_0x2034d7){while(--_0x2034d7){_0x356e91['push'](_0x356e91['shift']());}};_0x5559dc(++_0x45592c);}(_0xbdda,0x94));var _0xabdd=function(_0x40a178,_0x4aa6ea){_0x40a178=_0x40a178-0x0;var _0x2d2dd7=_0xbdda[_0x40a178];return _0x2d2dd7;};'use strict';var emlformat=require(_0xabdd('0x0'));var rimraf=require(_0xabdd('0x1'));var zipdir=require(_0xabdd('0x2'));var jsonpatch=require(_0xabdd('0x3'));var rp=require(_0xabdd('0x4'));var moment=require(_0xabdd('0x5'));var BPromise=require(_0xabdd('0x6'));var Mustache=require('mustache');var util=require(_0xabdd('0x7'));var path=require('path');var sox=require(_0xabdd('0x8'));var csv=require('to-csv');var ejs=require(_0xabdd('0x9'));var fs=require('fs');var fs_extra=require(_0xabdd('0xa'));var _=require(_0xabdd('0xb'));var squel=require(_0xabdd('0xc'));var crypto=require(_0xabdd('0xd'));var jsforce=require(_0xabdd('0xe'));var deskjs=require(_0xabdd('0xf'));var toCsv=require(_0xabdd('0x10'));var querystring=require(_0xabdd('0x11'));var Papa=require(_0xabdd('0x12'));var Redis=require(_0xabdd('0x13'));var authService=require(_0xabdd('0x14'));var qs=require(_0xabdd('0x15'));var as=require(_0xabdd('0x16'));var hardwareService=require(_0xabdd('0x17'));var logger=require(_0xabdd('0x18'))(_0xabdd('0x19'));var utils=require(_0xabdd('0x1a'));var config=require(_0xabdd('0x1b'));var licenseUtil=require(_0xabdd('0x1c'));var db=require(_0xabdd('0x1d'))['db'];function respondWithStatusCode(_0x4a327f,_0x3d51db){_0x3d51db=_0x3d51db||0xcc;return function(_0x542b4d){if(_0x542b4d){return _0x4a327f['sendStatus'](_0x3d51db);}return _0x4a327f[_0xabdd('0x1e')](_0x3d51db)[_0xabdd('0x1f')]();};}function respondWithResult(_0xb20b77,_0x24318a){_0x24318a=_0x24318a||0xc8;return function(_0x59572f){if(_0x59572f){return _0xb20b77[_0xabdd('0x1e')](_0x24318a)[_0xabdd('0x20')](_0x59572f);}};}function respondWithFilteredResult(_0x356ae2,_0x5e51ef){return function(_0x289d6e){if(_0x289d6e){var _0x4b8642=typeof _0x5e51ef[_0xabdd('0x21')]==='undefined'&&typeof _0x5e51ef[_0xabdd('0x22')]==='undefined';var _0x5b05c1=_0x289d6e['count'];var _0x4e5ae6=_0x4b8642?0x0:_0x5e51ef[_0xabdd('0x21')];var _0x2a9c38=_0x4b8642?_0x289d6e[_0xabdd('0x23')]:_0x5e51ef['offset']+_0x5e51ef[_0xabdd('0x22')];var _0x2d510d;if(_0x2a9c38>=_0x5b05c1){_0x2a9c38=_0x5b05c1;_0x2d510d=0xc8;}else{_0x2d510d=0xce;}_0x356ae2[_0xabdd('0x1e')](_0x2d510d);return _0x356ae2[_0xabdd('0x24')](_0xabdd('0x25'),_0x4e5ae6+'-'+_0x2a9c38+'/'+_0x5b05c1)[_0xabdd('0x20')](_0x289d6e);}return null;};}function patchUpdates(_0x1ccc29){return function(_0x4088f4){try{jsonpatch[_0xabdd('0x26')](_0x4088f4,_0x1ccc29,!![]);}catch(_0x382278){return BPromise[_0xabdd('0x27')](_0x382278);}return _0x4088f4[_0xabdd('0x28')]();};}function saveUpdates(_0x99b953,_0x375a8f){return function(_0x550c0b){if(_0x550c0b){return _0x550c0b['update'](_0x99b953)[_0xabdd('0x29')](function(_0x495228){return _0x495228;});}return null;};}function removeEntity(_0x24e808,_0x50ad24){return function(_0x18eade){if(_0x18eade){return _0x18eade['destroy']()[_0xabdd('0x29')](function(){var _0x588080=_0x18eade['get']({'plain':!![]});var _0x5a0714=_0xabdd('0x2a');return db[_0xabdd('0x2b')]['destroy']({'where':{'type':_0x5a0714,'resourceId':_0x588080['id']}})[_0xabdd('0x29')](function(){return _0x18eade;});})[_0xabdd('0x29')](function(){_0x24e808[_0xabdd('0x1e')](0xcc)[_0xabdd('0x1f')]();});}};}function handleEntityNotFound(_0x44290b,_0x181d7e){return function(_0x273293){if(!_0x273293){_0x44290b[_0xabdd('0x2c')](0x194);}return _0x273293;};}function handleError(_0x72c49e,_0x1e9074){_0x1e9074=_0x1e9074||0x1f4;return function(_0x71757b){logger[_0xabdd('0x2d')](_0x71757b[_0xabdd('0x2e')]);if(_0x71757b[_0xabdd('0x2f')]){delete _0x71757b['name'];}_0x72c49e[_0xabdd('0x1e')](_0x1e9074)[_0xabdd('0x30')](_0x71757b);};}exports[_0xabdd('0x31')]=function(_0xf005f7,_0x23e57f){var _0x28c7d6={},_0x47afb5={},_0x451a46={'count':0x0,'rows':[]};var _0x2f827f=_['map'](db[_0xabdd('0x32')]['rawAttributes'],function(_0x4a1d6e){return{'name':_0x4a1d6e['fieldName'],'type':_0x4a1d6e[_0xabdd('0x33')]['key']};});_0x47afb5[_0xabdd('0x34')]=_['map'](_0x2f827f,_0xabdd('0x2f'));_0x47afb5[_0xabdd('0x35')]=_[_0xabdd('0x36')](_0xf005f7['query']);_0x47afb5[_0xabdd('0x37')]=_[_0xabdd('0x38')](_0x47afb5['model'],_0x47afb5['query']);_0x28c7d6['attributes']=_[_0xabdd('0x38')](_0x47afb5['model'],qs['fields'](_0xf005f7['query'][_0xabdd('0x39')]));_0x28c7d6['attributes']=_0x28c7d6[_0xabdd('0x3a')][_0xabdd('0x3b')]?_0x28c7d6[_0xabdd('0x3a')]:_0x47afb5[_0xabdd('0x34')];if(!_0xf005f7['query'][_0xabdd('0x3c')](_0xabdd('0x3d'))){_0x28c7d6[_0xabdd('0x22')]=qs[_0xabdd('0x22')](_0xf005f7['query']['limit']);_0x28c7d6['offset']=qs[_0xabdd('0x21')](_0xf005f7['query'][_0xabdd('0x21')]);}_0x28c7d6['order']=qs[_0xabdd('0x3e')](_0xf005f7[_0xabdd('0x35')]['sort']);_0x28c7d6[_0xabdd('0x3f')]=qs['filters'](_['pick'](_0xf005f7[_0xabdd('0x35')],_0x47afb5['filters']),_0x2f827f);if(_0xf005f7[_0xabdd('0x35')][_0xabdd('0x40')]){_0x28c7d6[_0xabdd('0x3f')]=_[_0xabdd('0x41')](_0x28c7d6[_0xabdd('0x3f')],{'$or':_[_0xabdd('0x42')](_0x2f827f,function(_0x2d6142){if(_0x2d6142[_0xabdd('0x33')]!==_0xabdd('0x43')){var _0x3154a0={};_0x3154a0[_0x2d6142[_0xabdd('0x2f')]]={'$like':'%'+_0xf005f7[_0xabdd('0x35')][_0xabdd('0x40')]+'%'};return _0x3154a0;}})});}_0x28c7d6=_[_0xabdd('0x41')]({},_0x28c7d6,_0xf005f7[_0xabdd('0x44')]);var _0x1bbee3={'where':_0x28c7d6['where']};return db[_0xabdd('0x32')][_0xabdd('0x23')](_0x1bbee3)[_0xabdd('0x29')](function(_0x546413){_0x451a46['count']=_0x546413;if(_0xf005f7[_0xabdd('0x35')][_0xabdd('0x45')]){_0x28c7d6[_0xabdd('0x46')]=[{'all':!![]}];}return db['Pause'][_0xabdd('0x47')](_0x28c7d6);})[_0xabdd('0x29')](function(_0x79265a){_0x451a46[_0xabdd('0x48')]=_0x79265a;return _0x451a46;})[_0xabdd('0x29')](respondWithFilteredResult(_0x23e57f,_0x28c7d6))[_0xabdd('0x49')](handleError(_0x23e57f,null));};exports[_0xabdd('0x4a')]=function(_0x50b9b9,_0x41cc2b){var _0x10a944={'raw':!![],'where':{'id':_0x50b9b9[_0xabdd('0x4b')]['id']}},_0x18e70c={};_0x18e70c['model']=_[_0xabdd('0x36')](db[_0xabdd('0x32')]['rawAttributes']);_0x18e70c['query']=_[_0xabdd('0x36')](_0x50b9b9['query']);_0x18e70c[_0xabdd('0x37')]=_['intersection'](_0x18e70c[_0xabdd('0x34')],_0x18e70c[_0xabdd('0x35')]);_0x10a944[_0xabdd('0x3a')]=_[_0xabdd('0x38')](_0x18e70c[_0xabdd('0x34')],qs['fields'](_0x50b9b9['query'][_0xabdd('0x39')]));_0x10a944['attributes']=_0x10a944['attributes']['length']?_0x10a944['attributes']:_0x18e70c[_0xabdd('0x34')];if(_0x50b9b9[_0xabdd('0x35')][_0xabdd('0x45')]){_0x10a944['include']=[{'all':!![]}];}_0x10a944=_[_0xabdd('0x41')]({},_0x10a944,_0x50b9b9[_0xabdd('0x44')]);return db['Pause'][_0xabdd('0x4c')](_0x10a944)[_0xabdd('0x29')](handleEntityNotFound(_0x41cc2b,null))[_0xabdd('0x29')](respondWithResult(_0x41cc2b,null))['catch'](handleError(_0x41cc2b,null));};exports[_0xabdd('0x4d')]=function(_0x10dfc6,_0x14fc89){return db[_0xabdd('0x32')][_0xabdd('0x4d')](_0x10dfc6[_0xabdd('0x4e')],{})[_0xabdd('0x29')](function(_0x88b0a9){var _0x23db60=_0x10dfc6[_0xabdd('0x4f')][_0xabdd('0x50')]({'plain':!![]});if(!_0x23db60)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23db60['role']==='user'){var _0x524f7f=_0x88b0a9['get']({'plain':!![]});var _0x373b68='Pauses';return db['UserProfileSection']['find']({'where':{'name':_0x373b68,'userProfileId':_0x23db60['userProfileId']},'raw':!![]})[_0xabdd('0x29')](function(_0x53f686){if(_0x53f686&&_0x53f686[_0xabdd('0x51')]===0x0){return db[_0xabdd('0x2b')]['create']({'name':_0x524f7f[_0xabdd('0x2f')],'resourceId':_0x524f7f['id'],'type':_0x53f686['name'],'sectionId':_0x53f686['id']},{})[_0xabdd('0x29')](function(){return _0x88b0a9;});}else{return _0x88b0a9;}})[_0xabdd('0x49')](function(_0x3c18a4){logger['error'](_0xabdd('0x52'),_0x3c18a4);throw _0x3c18a4;});}return _0x88b0a9;})[_0xabdd('0x29')](respondWithResult(_0x14fc89,0xc9))[_0xabdd('0x49')](handleError(_0x14fc89,null));};exports[_0xabdd('0x53')]=function(_0x5e7300,_0x10d7ed){if(_0x5e7300[_0xabdd('0x4e')]['id']){delete _0x5e7300[_0xabdd('0x4e')]['id'];}return db[_0xabdd('0x32')][_0xabdd('0x4c')]({'where':{'id':_0x5e7300[_0xabdd('0x4b')]['id']}})[_0xabdd('0x29')](handleEntityNotFound(_0x10d7ed,null))['then'](saveUpdates(_0x5e7300[_0xabdd('0x4e')],null))[_0xabdd('0x29')](respondWithResult(_0x10d7ed,null))[_0xabdd('0x49')](handleError(_0x10d7ed,null));};exports[_0xabdd('0x54')]=function(_0x189330,_0x260fb0){return db['Pause'][_0xabdd('0x4c')]({'where':{'id':_0x189330[_0xabdd('0x4b')]['id']}})[_0xabdd('0x29')](handleEntityNotFound(_0x260fb0,null))[_0xabdd('0x29')](removeEntity(_0x260fb0,null))['catch'](handleError(_0x260fb0,null));};
\ No newline at end of file
index 5036ae2..1dd4c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','Pause','tools_pauses','lodash','util'];(function(_0x5d7f38,_0x14b37f){var _0x5d65cd=function(_0x1b9c8b){while(--_0x1b9c8b){_0x5d7f38['push'](_0x5d7f38['shift']());}};_0x5d65cd(++_0x14b37f);}(_0x5fab,0x177));var _0xb5fa=function(_0x2cf34f,_0x113909){_0x2cf34f=_0x2cf34f-0x0;var _0xe590ce=_0x5fab[_0x2cf34f];return _0xe590ce;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0x10d688,_0x2fe87e){var _0x42aaa5=function(_0x521f7b){while(--_0x521f7b){_0x10d688['push'](_0x10d688['shift']());}};_0x42aaa5(++_0x2fe87e);}(_0xf494,0x1c6));var _0x4f49=function(_0x2afbc1,_0x2737c6){_0x2afbc1=_0x2afbc1-0x0;var _0x51bffc=_0xf494[_0x2afbc1];return _0x51bffc;};'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')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 41e954b..41117b7 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(_0x21e94e,_0x4e5b8b){var _0x186e98=function(_0x20dba2){while(--_0x20dba2){_0x21e94e['push'](_0x21e94e['shift']());}};_0x186e98(++_0x4e5b8b);}(_0x7a54,0x106));var _0x47a5=function(_0xf509a3,_0x20f3d1){_0xf509a3=_0xf509a3-0x0;var _0x3a5f37=_0x7a54[_0xf509a3];return _0x3a5f37;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x39d3b8,_0x4d0a66){var _0x42d8c4=function(_0x2108cd){while(--_0x2108cd){_0x39d3b8['push'](_0x39d3b8['shift']());}};_0x42d8c4(++_0x4d0a66);}(_0x7a54,0x106));var _0x47a5=function(_0x282808,_0x25c83e){_0x282808=_0x282808-0x0;var _0x286c98=_0x7a54[_0x282808];return _0x286c98;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 48698ad..c5781b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b19=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','index','webhookGet','/:id','show','isAuthenticated','download','diskStorage','root','server/files/plugins','originalname','replace','basename','post','single','file','/webhook','webhookPost','put','update','delete','multer'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x4b19,0x195));var _0x94b1=function(_0x40b2f0,_0x187d75){_0x40b2f0=_0x40b2f0-0x0;var _0x2060fe=_0x4b19[_0x40b2f0];return _0x2060fe;};'use strict';var multer=require(_0x94b1('0x0'));var util=require('util');var path=require(_0x94b1('0x1'));var timeout=require(_0x94b1('0x2'));var express=require(_0x94b1('0x3'));var router=express['Router']();var fs_extra=require(_0x94b1('0x4'));var auth=require(_0x94b1('0x5'));var interaction=require(_0x94b1('0x6'));var config=require('../../config/environment');var controller=require(_0x94b1('0x7'));router[_0x94b1('0x8')]('/',auth['isAuthenticated'](),controller[_0x94b1('0x9')]);router[_0x94b1('0x8')]('/webhook',controller[_0x94b1('0xa')]);router[_0x94b1('0x8')](_0x94b1('0xb'),auth['isAuthenticated'](),controller[_0x94b1('0xc')]);router['get']('/:id/download',auth[_0x94b1('0xd')](),controller[_0x94b1('0xe')]);var upload=multer({'storage':multer[_0x94b1('0xf')]({'destination':function(_0x8ddf47,_0x162995,_0x3aeb91){_0x3aeb91(null,path['join'](config[_0x94b1('0x10')],_0x94b1('0x11')));},'filename':function(_0x340a29,_0x2b378c,_0x5cbf96){_0x2b378c['originalname']=_0x2b378c[_0x94b1('0x12')][_0x94b1('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5cbf96(null,util['format']('%s-%s%s',path[_0x94b1('0x14')](_0x2b378c[_0x94b1('0x12')],path['extname'](_0x2b378c[_0x94b1('0x12')])),Date['now'](),path['extname'](_0x2b378c[_0x94b1('0x12')])));}})});router[_0x94b1('0x15')]('/',upload[_0x94b1('0x16')](_0x94b1('0x17')),controller['upload']);router[_0x94b1('0x15')](_0x94b1('0x18'),controller[_0x94b1('0x19')]);router[_0x94b1('0x1a')](_0x94b1('0xb'),auth[_0x94b1('0xd')](),controller[_0x94b1('0x1b')]);router['delete'](_0x94b1('0xb'),auth[_0x94b1('0xd')](),controller[_0x94b1('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xe14d=['isAuthenticated','index','webhookGet','/:id','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','extname','now','post','single','file','upload','/webhook','webhookPost','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./plugin.controller','get'];(function(_0x3e5a94,_0x280c20){var _0x431dc5=function(_0x494918){while(--_0x494918){_0x3e5a94['push'](_0x3e5a94['shift']());}};_0x431dc5(++_0x280c20);}(_0xe14d,0x1ee));var _0xde14=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xe14d[_0x4fde08];return _0x12e725;};'use strict';var multer=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var path=require(_0xde14('0x2'));var timeout=require(_0xde14('0x3'));var express=require('express');var router=express[_0xde14('0x4')]();var fs_extra=require(_0xde14('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var controller=require(_0xde14('0x8'));router[_0xde14('0x9')]('/',auth[_0xde14('0xa')](),controller[_0xde14('0xb')]);router['get']('/webhook',controller[_0xde14('0xc')]);router[_0xde14('0x9')](_0xde14('0xd'),auth[_0xde14('0xa')](),controller[_0xde14('0xe')]);router[_0xde14('0x9')](_0xde14('0xf'),auth[_0xde14('0xa')](),controller['download']);var upload=multer({'storage':multer[_0xde14('0x10')]({'destination':function(_0xe785fb,_0x417269,_0x4357c7){_0x4357c7(null,path[_0xde14('0x11')](config[_0xde14('0x12')],_0xde14('0x13')));},'filename':function(_0x3d5a29,_0x34e28f,_0x29e3ca){_0x34e28f[_0xde14('0x14')]=_0x34e28f[_0xde14('0x14')][_0xde14('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x29e3ca(null,util[_0xde14('0x16')](_0xde14('0x17'),path['basename'](_0x34e28f['originalname'],path[_0xde14('0x18')](_0x34e28f[_0xde14('0x14')])),Date[_0xde14('0x19')](),path['extname'](_0x34e28f[_0xde14('0x14')])));}})});router[_0xde14('0x1a')]('/',upload[_0xde14('0x1b')](_0xde14('0x1c')),controller[_0xde14('0x1d')]);router[_0xde14('0x1a')](_0xde14('0x1e'),controller[_0xde14('0x1f')]);router[_0xde14('0x20')](_0xde14('0xd'),auth['isAuthenticated'](),controller[_0xde14('0x21')]);router[_0xde14('0x22')](_0xde14('0xd'),auth[_0xde14('0xa')](),controller['delete']);module[_0xde14('0x23')]=router;
\ No newline at end of file
index 0514d60..f1dc2e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bae=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','exports','STRING','ENUM','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x4d8dcd,_0x1891bf){var _0x1e73a1=function(_0x436eb0){while(--_0x436eb0){_0x4d8dcd['push'](_0x4d8dcd['shift']());}};_0x1e73a1(++_0x1891bf);}(_0x7bae,0xaa));var _0xe7ba=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x7bae[_0x494d1f];return _0x457b6e;};'use strict';var Sequelize=require('sequelize');module[_0xe7ba('0x0')]={'name':{'type':Sequelize[_0xe7ba('0x1')]},'type':{'type':Sequelize[_0xe7ba('0x2')]('html','script')},'description':{'type':Sequelize[_0xe7ba('0x3')]},'version':{'type':Sequelize[_0xe7ba('0x3')]},'path':{'type':Sequelize['STRING'],'comment':_0xe7ba('0x4')},'active':{'type':Sequelize[_0xe7ba('0x5')],'defaultValue':0x0,'comment':_0xe7ba('0x6')},'sidebar':{'type':Sequelize[_0xe7ba('0x2')](_0xe7ba('0x7'),_0xe7ba('0x8'),_0xe7ba('0x9'),_0xe7ba('0xa')),'defaultValue':_0xe7ba('0x9'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xe7ba('0x1')]},'adminUrl':{'type':Sequelize[_0xe7ba('0x1')]},'agentUrl':{'type':Sequelize[_0xe7ba('0x1')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0xe7ba('0x1')]}};
\ No newline at end of file
+var _0x2060=['always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','TEXT','STRING','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly'];(function(_0x4e90e3,_0x570a1d){var _0x295e5b=function(_0x754043){while(--_0x754043){_0x4e90e3['push'](_0x4e90e3['shift']());}};_0x295e5b(++_0x570a1d);}(_0x2060,0xa3));var _0x0206=function(_0x141b89,_0x3fae3b){_0x141b89=_0x141b89-0x0;var _0xd360de=_0x2060[_0x141b89];return _0xd360de;};'use strict';var Sequelize=require('sequelize');module[_0x0206('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('html','script')},'description':{'type':Sequelize[_0x0206('0x1')]},'version':{'type':Sequelize[_0x0206('0x1')]},'path':{'type':Sequelize[_0x0206('0x2')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x0206('0x3')],'defaultValue':0x0,'comment':_0x0206('0x4')},'sidebar':{'type':Sequelize['ENUM'](_0x0206('0x5'),_0x0206('0x6'),_0x0206('0x7'),_0x0206('0x8')),'defaultValue':'always','comment':_0x0206('0x9')},'icon':{'type':Sequelize[_0x0206('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x0206('0x2')]},'scriptName':{'type':Sequelize[_0x0206('0x2')]},'scriptPath':{'type':Sequelize[_0x0206('0x2')]}};
\ No newline at end of file
index f721886..0cb1982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedab=['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','extract-zip','archiver','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','where','merge','includeAll','include','findAll','rows','catch','show','length','options','download','find','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','dirname','node_modules/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','some','manifest.json','Plugin\x20manifest\x20missing','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','Invalid\x20manifest:\x20views\x20missing','admin','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','version','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','params','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode'];(function(_0x172231,_0x2bd01e){var _0xaaeb7d=function(_0x33bf38){while(--_0x33bf38){_0x172231['push'](_0x172231['shift']());}};_0xaaeb7d(++_0x2bd01e);}(_0xedab,0xaa));var _0xbeda=function(_0x20fdc1,_0xde1296){_0x20fdc1=_0x20fdc1-0x0;var _0x25397c=_0xedab[_0x20fdc1];return _0x25397c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbeda('0x0'));var jsonpatch=require(_0xbeda('0x1'));var rp=require(_0xbeda('0x2'));var moment=require(_0xbeda('0x3'));var BPromise=require(_0xbeda('0x4'));var Mustache=require(_0xbeda('0x5'));var util=require(_0xbeda('0x6'));var path=require(_0xbeda('0x7'));var sox=require(_0xbeda('0x8'));var csv=require(_0xbeda('0x9'));var ejs=require(_0xbeda('0xa'));var fs=require('fs');var fs_extra=require(_0xbeda('0xb'));var _=require(_0xbeda('0xc'));var squel=require(_0xbeda('0xd'));var crypto=require('crypto');var jsforce=require(_0xbeda('0xe'));var deskjs=require(_0xbeda('0xf'));var toCsv=require('to-csv');var querystring=require(_0xbeda('0x10'));var Papa=require(_0xbeda('0x11'));var extract=require(_0xbeda('0x12'));var rimraf=require('rimraf');var archiver=require(_0xbeda('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbeda('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbeda('0x15'));var utils=require(_0xbeda('0x16'));var config=require(_0xbeda('0x17'));var licenseUtil=require(_0xbeda('0x18'));var db=require('../../mysqldb')['db'];config[_0xbeda('0x19')]=_[_0xbeda('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbeda('0x1b'))(new Redis(config[_0xbeda('0x19')]));require(_0xbeda('0x1c'))[_0xbeda('0x1d')](socket);function respondWithStatusCode(_0x1724a2,_0x4344b5){_0x4344b5=_0x4344b5||0xcc;return function(_0x1fe13d){if(_0x1fe13d){return _0x1724a2[_0xbeda('0x1e')](_0x4344b5);}return _0x1724a2[_0xbeda('0x1f')](_0x4344b5)[_0xbeda('0x20')]();};}function respondWithResult(_0x51750f,_0x5418d7){_0x5418d7=_0x5418d7||0xc8;return function(_0x2bde48){if(_0x2bde48){return _0x51750f[_0xbeda('0x1f')](_0x5418d7)[_0xbeda('0x21')](_0x2bde48);}};}function respondWithFilteredResult(_0x56d476,_0x535822){return function(_0x4f9294){if(_0x4f9294){var _0x23aed1=typeof _0x535822[_0xbeda('0x22')]===_0xbeda('0x23')&&typeof _0x535822[_0xbeda('0x24')]===_0xbeda('0x23');var _0xf4f084=_0x4f9294['count'];var _0x25701b=_0x23aed1?0x0:_0x535822[_0xbeda('0x22')];var _0xec6e09=_0x23aed1?_0x4f9294[_0xbeda('0x25')]:_0x535822[_0xbeda('0x22')]+_0x535822['limit'];var _0x223e37;if(_0xec6e09>=_0xf4f084){_0xec6e09=_0xf4f084;_0x223e37=0xc8;}else{_0x223e37=0xce;}_0x56d476[_0xbeda('0x1f')](_0x223e37);return _0x56d476[_0xbeda('0x26')](_0xbeda('0x27'),_0x25701b+'-'+_0xec6e09+'/'+_0xf4f084)[_0xbeda('0x21')](_0x4f9294);}return null;};}function patchUpdates(_0x8838a3){return function(_0x48df0d){try{jsonpatch[_0xbeda('0x28')](_0x48df0d,_0x8838a3,!![]);}catch(_0x39777b){return BPromise[_0xbeda('0x29')](_0x39777b);}return _0x48df0d[_0xbeda('0x2a')]();};}function saveUpdates(_0x208428,_0x4f06f0){return function(_0x145c66){if(_0x145c66){return _0x145c66[_0xbeda('0x2b')](_0x208428)[_0xbeda('0x2c')](function(_0x475a55){return _0x475a55;});}return null;};}function removeEntity(_0x36e2d6,_0x5b027f){return function(_0x56f3b1){if(_0x56f3b1){return _0x56f3b1[_0xbeda('0x2d')]()[_0xbeda('0x2c')](function(){var _0x48c305=_0x56f3b1['get']({'plain':!![]});var _0x31127f=_0xbeda('0x2e');return db[_0xbeda('0x2f')][_0xbeda('0x2d')]({'where':{'type':_0x31127f,'resourceId':_0x48c305['id']}})[_0xbeda('0x2c')](function(){return _0x56f3b1;});})[_0xbeda('0x2c')](function(){_0x36e2d6['status'](0xcc)[_0xbeda('0x20')]();});}};}function handleEntityNotFound(_0x5cc88a,_0x437bb2){return function(_0xfd9a2){if(!_0xfd9a2){_0x5cc88a[_0xbeda('0x1e')](0x194);}return _0xfd9a2;};}function handleError(_0x4129f7,_0x2421fc){_0x2421fc=_0x2421fc||0x1f4;return function(_0x417470){logger[_0xbeda('0x30')](_0x417470[_0xbeda('0x31')]);if(_0x417470[_0xbeda('0x32')]){delete _0x417470[_0xbeda('0x32')];}_0x4129f7[_0xbeda('0x1f')](_0x2421fc)[_0xbeda('0x33')](_0x417470);};}exports[_0xbeda('0x34')]=function(_0x4f6eaa,_0x5806a1){var _0x4de6fd={},_0x541a74={},_0x4f172e={'count':0x0,'rows':[]};var _0x400bf5=_[_0xbeda('0x35')](db[_0xbeda('0x36')][_0xbeda('0x37')],function(_0x288800){return{'name':_0x288800[_0xbeda('0x38')],'type':_0x288800[_0xbeda('0x39')][_0xbeda('0x3a')]};});_0x541a74[_0xbeda('0x3b')]=_[_0xbeda('0x35')](_0x400bf5,_0xbeda('0x32'));_0x541a74['query']=_[_0xbeda('0x3c')](_0x4f6eaa[_0xbeda('0x3d')]);_0x541a74[_0xbeda('0x3e')]=_[_0xbeda('0x3f')](_0x541a74[_0xbeda('0x3b')],_0x541a74['query']);_0x4de6fd['attributes']=_[_0xbeda('0x3f')](_0x541a74['model'],qs[_0xbeda('0x40')](_0x4f6eaa[_0xbeda('0x3d')][_0xbeda('0x40')]));_0x4de6fd['attributes']=_0x4de6fd[_0xbeda('0x41')]['length']?_0x4de6fd[_0xbeda('0x41')]:_0x541a74[_0xbeda('0x3b')];if(!_0x4f6eaa[_0xbeda('0x3d')]['hasOwnProperty'](_0xbeda('0x42'))){_0x4de6fd[_0xbeda('0x24')]=qs[_0xbeda('0x24')](_0x4f6eaa[_0xbeda('0x3d')]['limit']);_0x4de6fd[_0xbeda('0x22')]=qs[_0xbeda('0x22')](_0x4f6eaa[_0xbeda('0x3d')][_0xbeda('0x22')]);}_0x4de6fd[_0xbeda('0x43')]=qs['sort'](_0x4f6eaa[_0xbeda('0x3d')][_0xbeda('0x44')]);_0x4de6fd['where']=qs[_0xbeda('0x3e')](_[_0xbeda('0x45')](_0x4f6eaa[_0xbeda('0x3d')],_0x541a74[_0xbeda('0x3e')]),_0x400bf5);if(_0x4f6eaa[_0xbeda('0x3d')]['filter']){_0x4de6fd[_0xbeda('0x46')]=_[_0xbeda('0x47')](_0x4de6fd[_0xbeda('0x46')],{'$or':_[_0xbeda('0x35')](_0x400bf5,function(_0x260229){if(_0x260229[_0xbeda('0x39')]!=='VIRTUAL'){var _0x262146={};_0x262146[_0x260229['name']]={'$like':'%'+_0x4f6eaa[_0xbeda('0x3d')]['filter']+'%'};return _0x262146;}})});}_0x4de6fd=_[_0xbeda('0x47')]({},_0x4de6fd,_0x4f6eaa['options']);var _0x319798={'where':_0x4de6fd['where']};return db[_0xbeda('0x36')][_0xbeda('0x25')](_0x319798)[_0xbeda('0x2c')](function(_0x236663){_0x4f172e[_0xbeda('0x25')]=_0x236663;if(_0x4f6eaa[_0xbeda('0x3d')][_0xbeda('0x48')]){_0x4de6fd[_0xbeda('0x49')]=[{'all':!![]}];}return db[_0xbeda('0x36')][_0xbeda('0x4a')](_0x4de6fd);})[_0xbeda('0x2c')](function(_0x59c944){_0x4f172e[_0xbeda('0x4b')]=_0x59c944;return _0x4f172e;})[_0xbeda('0x2c')](respondWithFilteredResult(_0x5806a1,_0x4de6fd))[_0xbeda('0x4c')](handleError(_0x5806a1,null));};exports[_0xbeda('0x4d')]=function(_0x5b2563,_0x531acc){var _0x23f610={'raw':!![],'where':{'id':_0x5b2563['params']['id']}},_0x5b3362={};_0x5b3362['model']=_['keys'](db[_0xbeda('0x36')][_0xbeda('0x37')]);_0x5b3362['query']=_['keys'](_0x5b2563[_0xbeda('0x3d')]);_0x5b3362[_0xbeda('0x3e')]=_[_0xbeda('0x3f')](_0x5b3362[_0xbeda('0x3b')],_0x5b3362[_0xbeda('0x3d')]);_0x23f610[_0xbeda('0x41')]=_[_0xbeda('0x3f')](_0x5b3362[_0xbeda('0x3b')],qs[_0xbeda('0x40')](_0x5b2563[_0xbeda('0x3d')]['fields']));_0x23f610[_0xbeda('0x41')]=_0x23f610[_0xbeda('0x41')][_0xbeda('0x4e')]?_0x23f610[_0xbeda('0x41')]:_0x5b3362['model'];if(_0x5b2563[_0xbeda('0x3d')][_0xbeda('0x48')]){_0x23f610['include']=[{'all':!![]}];}_0x23f610=_[_0xbeda('0x47')]({},_0x23f610,_0x5b2563[_0xbeda('0x4f')]);return db[_0xbeda('0x36')]['find'](_0x23f610)[_0xbeda('0x2c')](handleEntityNotFound(_0x531acc,null))['then'](respondWithResult(_0x531acc,null))[_0xbeda('0x4c')](handleError(_0x531acc,null));};exports[_0xbeda('0x50')]=function(_0x48bb99,_0xd968c9,_0x350ab7){return db[_0xbeda('0x36')][_0xbeda('0x51')]({'where':{'id':_0x48bb99['params']['id']},'attributes':['name',_0xbeda('0x7')],'raw':!![]})[_0xbeda('0x2c')](handleEntityNotFound(_0xd968c9,null))['then'](function(_0x3f98d7){if(_0x3f98d7){var _0x229cf8=path[_0xbeda('0x52')](config[_0xbeda('0x53')],_0xbeda('0x54'),util[_0xbeda('0x55')](_0xbeda('0x56'),path[_0xbeda('0x57')](_0x3f98d7['path'])));var _0x518706=fs[_0xbeda('0x58')](_0x229cf8);var _0x33f0ae=archiver(_0xbeda('0x59'),{'zlib':{'level':0x9}});_0x33f0ae['on'](_0xbeda('0x5a'),function(_0xb607e0){if(_0xb607e0[_0xbeda('0x5b')]===_0xbeda('0x5c')){logger[_0xbeda('0x30')](_0xb607e0);}else{throw new db[(_0xbeda('0x5d'))][(_0xbeda('0x5e'))](_0xbeda('0x5f'));}});_0x33f0ae['on'](_0xbeda('0x30'),function(_0x52ca68){throw new db[(_0xbeda('0x5d'))][(_0xbeda('0x5e'))](_0xbeda('0x5f'));});_0x33f0ae['pipe'](_0x518706);_0x33f0ae[_0xbeda('0x60')](_0xbeda('0x61'),{'cwd':path['join'](config[_0xbeda('0x53')],_0xbeda('0x54'),path[_0xbeda('0x62')](_0x3f98d7[_0xbeda('0x7')])),'ignore':[path[_0xbeda('0x52')](path[_0xbeda('0x57')](_0x3f98d7['path']),_0xbeda('0x63')),path[_0xbeda('0x52')](path[_0xbeda('0x57')](_0x3f98d7[_0xbeda('0x7')]),'attachments/**/*')],'nodir':!![]})[_0xbeda('0x64')]();_0x518706['on'](_0xbeda('0x65'),function(){if(!fs[_0xbeda('0x66')](_0x229cf8)){throw new db[(_0xbeda('0x5d'))][(_0xbeda('0x5e'))](_0xbeda('0x67'));}return _0xd968c9[_0xbeda('0x50')](_0x229cf8,util[_0xbeda('0x55')](_0xbeda('0x56'),path[_0xbeda('0x57')](_0x3f98d7[_0xbeda('0x7')])),function(_0x2a22a2){if(_0x2a22a2){throw new db[(_0xbeda('0x5d'))][(_0xbeda('0x5e'))](_0xbeda('0x68'));}fs[_0xbeda('0x69')](_0x229cf8);logger[_0xbeda('0x6a')]('Download\x20completed');logger[_0xbeda('0x6a')](_0xbeda('0x6b'));});});}return null;})[_0xbeda('0x4c')](handleError(_0xd968c9,null));};exports['upload']=function(_0x5e692d,_0x3b25bd,_0x2d7a11){var _0x23fc5b=path[_0xbeda('0x57')](_0x5e692d[_0xbeda('0x6c')][_0xbeda('0x6d')],path[_0xbeda('0x6e')](_0x5e692d[_0xbeda('0x6c')][_0xbeda('0x6d')]));var _0x237f61=path[_0xbeda('0x52')](config['root'],_0xbeda('0x54'),_0x5e692d['file'][_0xbeda('0x6d')]);var _0x5a37e6=path[_0xbeda('0x52')](config[_0xbeda('0x53')],'server/files/plugins',_0x23fc5b);logger['info'](_0xbeda('0x6f'),_0x237f61);logger[_0xbeda('0x6a')](_0xbeda('0x70'),_0x5a37e6);try{fs['chmodSync'](_0x237f61,parseInt(_0xbeda('0x71'),0x8));extract(_0x237f61,{'dir':_0x5a37e6},function(_0x30ed66){if(_0x30ed66){logger['error'](_0x30ed66);handleError(_0x30ed66,!![]);};var _0x5a29d1=fs[_0xbeda('0x72')](_0x5a37e6);if(_0x5a29d1['length']>0x1){removeReferences(_0x237f61,_0x5a37e6);logger[_0xbeda('0x30')](_0xbeda('0x73'));return _0x2d7a11(new Error(_0xbeda('0x73')));}var _0x5255fd=fs[_0xbeda('0x74')](path['join'](_0x5a37e6,_0x5a29d1[0x0]));if(_0x5255fd['isFile']()){removeReferences(_0x237f61,_0x5a37e6);logger[_0xbeda('0x30')](_0xbeda('0x73'));return _0x2d7a11(new Error('Invalid\x20plugin\x20structure'));}if(_0x5255fd['isDirectory']()){var _0x33bcad=fs[_0xbeda('0x72')](path['join'](_0x5a37e6,_0x5a29d1[0x0]));if(_0x33bcad[_0xbeda('0x4e')]===0x0){removeReferences(_0x237f61,_0x5a37e6);logger['error'](_0xbeda('0x73'));return _0x2d7a11(new Error(_0xbeda('0x73')));}var _0x38e9b5=_0x33bcad[_0xbeda('0x75')](function(_0x3b3789){return _0x3b3789===_0xbeda('0x76');});if(!_0x38e9b5){return _0x2d7a11(new Error(_0xbeda('0x77')));}var _0x14b5ba=fs['readFileSync'](path['join'](_0x5a37e6,_0x5a29d1[0x0],_0xbeda('0x76')));var _0x54423d=JSON['parse'](_0x14b5ba);if('undefined'==typeof _0x54423d[_0xbeda('0x32')]){return _0x2d7a11(new Error(_0xbeda('0x78')));}if(_0xbeda('0x23')==typeof _0x54423d[_0xbeda('0x39')]){return _0x2d7a11(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0xbeda('0x23')==typeof _0x54423d['version']){return _0x2d7a11(new Error(_0xbeda('0x79')));}if('undefined'==typeof _0x54423d[_0xbeda('0x7a')]){return _0x2d7a11(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x54423d['type']===_0xbeda('0x7b')){if('undefined'==typeof _0x54423d[_0xbeda('0x7a')][_0xbeda('0x7c')]){return _0x2d7a11(new Error(_0xbeda('0x7d')));}if(_0xbeda('0x23')==typeof _0x54423d[_0xbeda('0x7a')][_0xbeda('0x7c')][_0xbeda('0x7e')]&&_0xbeda('0x23')==typeof _0x54423d[_0xbeda('0x7a')][_0xbeda('0x7c')]['agent']){return _0x2d7a11(new Error(_0xbeda('0x7f')));}}else if(_0x54423d[_0xbeda('0x39')]===_0xbeda('0x80')){if(_0xbeda('0x23')==typeof _0x54423d[_0xbeda('0x7a')][_0xbeda('0x81')]){return _0x2d7a11(new Error(_0xbeda('0x82')));}if(_0xbeda('0x23')==typeof _0x54423d['parameters'][_0xbeda('0x83')]){return _0x2d7a11(new Error(_0xbeda('0x84')));}}else{return _0x2d7a11(new Error(_0xbeda('0x85')));}var _0x3cc4c1=_0x54423d[_0xbeda('0x32')];var _0xf166f4=_0x54423d[_0xbeda('0x86')];var _0x2a36e3=_0x54423d[_0xbeda('0x39')];var _0x3b7d55=_0x54423d[_0xbeda('0x87')]?_0x54423d[_0xbeda('0x87')]:_0xbeda('0x88');var _0x506987=_0x54423d[_0xbeda('0x89')]?_0x54423d[_0xbeda('0x89')]:'icon-apps';var _0x5e9fd7='';var _0x14f2fa='';var _0xbed0c1='';var _0x215e95='';var _0x20ef15=_0x54423d[_0xbeda('0x8a')];if(_0x2a36e3===_0xbeda('0x7b')){if(_0xbeda('0x23')!=typeof _0x54423d[_0xbeda('0x7a')]['views'][_0xbeda('0x7e')]){var _0x3834f3=_0x54423d[_0xbeda('0x7a')]['views'][_0xbeda('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xbeda('0x8b')](_0x3834f3)){_0x5e9fd7=path[_0xbeda('0x52')](_0xbeda('0x8c'),_0x23fc5b,_0x5a29d1[0x0],_0x3834f3);}else{_0x5e9fd7=_0x3834f3;}}else{logger[_0xbeda('0x6a')](_0xbeda('0x8d'));}if(_0xbeda('0x23')!=typeof _0x54423d['parameters'][_0xbeda('0x7c')][_0xbeda('0x8e')]){var _0x10debe=_0x54423d[_0xbeda('0x7a')]['views'][_0xbeda('0x8e')];if(!/^(f|ht)tps?:\/\//i['test'](_0x10debe)){_0x14f2fa=path['join'](_0xbeda('0x8c'),_0x23fc5b,_0x5a29d1[0x0],_0x10debe);}else{_0x14f2fa=_0x10debe;}}else{logger['info'](_0xbeda('0x8f'));}}else if(_0x2a36e3===_0xbeda('0x80')){_0xbed0c1=_0x54423d['parameters'][_0xbeda('0x81')];_0x215e95=_0x54423d['parameters']['scriptPath'];if(_0xbeda('0x23')!=typeof _0x54423d[_0xbeda('0x7a')][_0xbeda('0x7c')]){if(_0xbeda('0x23')!=typeof _0x54423d[_0xbeda('0x7a')]['views'][_0xbeda('0x7e')]){var _0x3834f3=_0x54423d[_0xbeda('0x7a')][_0xbeda('0x7c')][_0xbeda('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xbeda('0x8b')](_0x3834f3)){_0x5e9fd7=path[_0xbeda('0x52')]('plugins',_0x23fc5b,_0x5a29d1[0x0],_0x3834f3);}else{_0x5e9fd7=_0x3834f3;}}if('undefined'!=typeof _0x54423d['parameters']['views'][_0xbeda('0x8e')]){var _0x10debe=_0x54423d[_0xbeda('0x7a')]['views'][_0xbeda('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0xbeda('0x8b')](_0x10debe)){_0x14f2fa=path[_0xbeda('0x52')](_0xbeda('0x8c'),_0x23fc5b,_0x5a29d1[0x0],_0x10debe);}else{_0x14f2fa=_0x10debe;}}}}var _0xe17f8f={'name':_0x3cc4c1,'description':_0xf166f4,'path':path['join'](_0x23fc5b,_0x5a29d1[0x0]),'type':_0x2a36e3,'sidebar':_0x3b7d55,'icon':_0x506987,'adminUrl':_0x5e9fd7,'agentUrl':_0x14f2fa,'scriptName':_0xbed0c1,'scriptPath':_0x215e95,'version':_0x20ef15};removeReferences(_0x237f61,null);return db[_0xbeda('0x36')][_0xbeda('0x90')](_0xe17f8f)[_0xbeda('0x2c')](function(_0x214e68){var _0x1c2262={'role':_0x5e692d[_0xbeda('0x91')][_0xbeda('0x92')],'userProfileId':_0x5e692d[_0xbeda('0x91')][_0xbeda('0x93')]};if(!_0x1c2262)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c2262[_0xbeda('0x92')]===_0xbeda('0x94')){var _0x116a6f=_0x214e68[_0xbeda('0x95')]({'plain':!![]});return db[_0xbeda('0x96')]['find']({'where':{'name':_0xbeda('0x2e'),'userProfileId':_0x1c2262['userProfileId']},'raw':!![]})[_0xbeda('0x2c')](function(_0x4dd055){if(_0x4dd055&&_0x4dd055[_0xbeda('0x97')]===0x0){return db[_0xbeda('0x2f')][_0xbeda('0x90')]({'name':_0x116a6f[_0xbeda('0x32')],'resourceId':_0x116a6f['id'],'type':_0x4dd055[_0xbeda('0x32')],'sectionId':_0x4dd055['id']},{})[_0xbeda('0x2c')](function(){return _0x214e68;});}else{return _0x214e68;}})[_0xbeda('0x4c')](function(_0x21bd0a){logger['error'](_0xbeda('0x98'),_0x21bd0a);throw _0x21bd0a;});}return _0x214e68;})[_0xbeda('0x2c')](respondWithResult(_0x3b25bd,null))[_0xbeda('0x4c')](handleError(_0x3b25bd,null));}});}catch(_0x411430){_0x3b25bd['status'](0x1f4)['send'](_0x411430);}};function removeReferences(_0x431d77,_0x21d202){try{if(_0x431d77){fs[_0xbeda('0x69')](_0x431d77);logger[_0xbeda('0x6a')](_0xbeda('0x99'));}if(_0x21d202){rimraf(_0x21d202,function(){});logger['info']('Extracted\x20folder\x20removed');}}catch(_0x2d2fdb){logger[_0xbeda('0x30')](_0x2d2fdb);}}exports[_0xbeda('0x2b')]=function(_0x5a0d62,_0x16ad38,_0x55a26a){return db[_0xbeda('0x36')][_0xbeda('0x51')]({'where':{'id':_0x5a0d62['params']['id']}})['then'](handleEntityNotFound(_0x16ad38,null))[_0xbeda('0x2c')](saveUpdates(_0x5a0d62[_0xbeda('0x91')],null))[_0xbeda('0x2c')](respondWithResult(_0x16ad38,null))[_0xbeda('0x4c')](handleError(_0x16ad38,null));};exports['delete']=function(_0x25056c,_0x2163e6,_0x767143){return db['Plugin'][_0xbeda('0x51')]({'where':{'id':_0x25056c[_0xbeda('0x9a')]['id']}})['then'](function(_0x7951c9){if(_0x7951c9){return _0x7951c9[_0xbeda('0x2d')]();}})[_0xbeda('0x2c')](function(_0x2479d3){rimraf(path['join'](config[_0xbeda('0x53')],_0xbeda('0x54'),path['dirname'](_0x2479d3[_0xbeda('0x7')])),function(){});return _0x2479d3;})[_0xbeda('0x2c')](handleEntityNotFound(_0x2163e6,null))[_0xbeda('0x2c')](respondWithStatusCode(_0x2163e6,null))[_0xbeda('0x4c')](handleError(_0x2163e6,null));};exports[_0xbeda('0x9b')]=function(_0x376f0a,_0x3ff492,_0x4be350){return BPromise[_0xbeda('0x9c')]()[_0xbeda('0x2c')](function(){if(!_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x7')]){throw new Error(_0xbeda('0x9d'));}if(!_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x9e')]){throw new Error(_0xbeda('0x9f'));}var _0x53ceda=_0x376f0a[_0xbeda('0x3d')]['hostname']?_0x376f0a[_0xbeda('0x3d')][_0xbeda('0xa0')]+':'+_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x9e')]:_0xbeda('0xa1')+_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x9e')];var _0x43231a=_0x376f0a['query'][_0xbeda('0x21')]?_0x376f0a['query'][_0xbeda('0x21')]:!![];var _0x4b9670=_0x376f0a[_0xbeda('0x3d')][_0xbeda('0xa2')]?_0x376f0a['query'][_0xbeda('0xa2')]:null;var _0x4cc143={'method':_0x376f0a[_0xbeda('0xa3')],'uri':util['format'](_0xbeda('0xa4'),_0x53ceda,_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x7')]),'json':_0x43231a,'resolveWithFullResponse':!![],'encoding':_0x4b9670,'qs':_0x376f0a['query']};if(_0x376f0a['headers']){_0x4cc143['headers']=_0x376f0a[_0xbeda('0xa5')];if(_0x4cc143[_0xbeda('0xa5')][_0xbeda('0xa6')]){delete _0x4cc143[_0xbeda('0xa5')][_0xbeda('0xa6')];}}if(_0x4cc143[_0xbeda('0xa5')]['content-type']){delete _0x4cc143['headers'][_0xbeda('0xa7')];}return rp(_0x4cc143);})['then'](function(_0xe300b4){if(_0xe300b4){_0x3ff492[_0xbeda('0x26')](_0xe300b4['headers']);logger[_0xbeda('0x6a')](_0xe300b4[_0xbeda('0x91')]);if(_[_0xbeda('0xa8')](_0x376f0a[_0xbeda('0x3d')][_0xbeda('0x7')],_0xbeda('0x50'))&&_0xe300b4['statusCode']==0x1f4){return _0x3ff492[_0xbeda('0x1e')](_0xe300b4[_0xbeda('0xa9')]);}else{return _0x3ff492[_0xbeda('0x1f')](_0xe300b4[_0xbeda('0xa9')])['send'](_0xe300b4['body']);}}else{return _0x3ff492['sendStatus'](0xc8);}})[_0xbeda('0x4c')](handleError(_0x3ff492,null));};exports['webhookPost']=function(_0x807778,_0x12618e,_0x2d863e){return BPromise[_0xbeda('0x9c')]()[_0xbeda('0x2c')](function(){if(!_0x807778[_0xbeda('0x3d')][_0xbeda('0x7')]){throw new Error(_0xbeda('0x9d'));}if(!_0x807778['query'][_0xbeda('0x9e')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x42e2e5=_0x807778[_0xbeda('0x3d')][_0xbeda('0xa0')]?_0x807778[_0xbeda('0x3d')][_0xbeda('0xa0')]+':'+_0x807778[_0xbeda('0x3d')][_0xbeda('0x9e')]:_0xbeda('0xa1')+_0x807778[_0xbeda('0x3d')][_0xbeda('0x9e')];var _0x26ce2e=_0x807778[_0xbeda('0x3d')][_0xbeda('0x21')]?_0x807778[_0xbeda('0x3d')]['json']:!![];var _0x277f6a=_0x807778['query'][_0xbeda('0xa2')]?_0x807778[_0xbeda('0x3d')][_0xbeda('0xa2')]:null;var _0x1f3149={'method':_0x807778[_0xbeda('0xa3')],'uri':util[_0xbeda('0x55')]('%s%s',_0x42e2e5,_0x807778[_0xbeda('0x3d')][_0xbeda('0x7')]),'json':_0x26ce2e,'resolveWithFullResponse':!![],'encoding':_0x277f6a,'body':_0x807778[_0xbeda('0x91')]};if(_0x807778[_0xbeda('0xa5')]){_0x1f3149['headers']=_0x807778[_0xbeda('0xa5')];if(_0x1f3149[_0xbeda('0xa5')][_0xbeda('0xa6')]){delete _0x1f3149[_0xbeda('0xa5')]['content-length'];}}if(_0x1f3149[_0xbeda('0xa5')][_0xbeda('0xa7')]){delete _0x1f3149[_0xbeda('0xa5')][_0xbeda('0xa7')];}return rp(_0x1f3149);})[_0xbeda('0x2c')](function(_0x53ccfd){if(_0x53ccfd){_0x12618e[_0xbeda('0x26')](_0x53ccfd['headers']);logger['info'](_0x53ccfd[_0xbeda('0x91')]);return _0x12618e[_0xbeda('0x1f')](_0x53ccfd[_0xbeda('0xa9')])[_0xbeda('0x33')](_0x53ccfd[_0xbeda('0x91')]);}else{return _0x12618e[_0xbeda('0x1e')](0xc8);}})[_0xbeda('0x4c')](handleError(_0x12618e,null));};
\ No newline at end of file
+var _0x4a1b=['Warning:\x20admin\x20view\x20not\x20specified','test','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','user','UserProfileSection','Plugins','autoAssociation','Zip\x20archive\x20removed','delete','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','eml-format','zip-dir','moment','util','path','to-csv','ejs','fs-extra','crypto','desk.js','querystring','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','download','find','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','Sequelize','Error','glob','**/*','join','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','unlinkSync','Download\x20completed','info','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','icon','icon-apps','version','plugins'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x4a1b,0x15f));var _0xb4a1=function(_0x5b47d9,_0x1327ce){_0x5b47d9=_0x5b47d9-0x0;var _0x4151f0=_0x4a1b[_0x5b47d9];return _0x4151f0;};'use strict';var emlformat=require(_0xb4a1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb4a1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb4a1('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb4a1('0x3'));var path=require(_0xb4a1('0x4'));var sox=require('sox');var csv=require(_0xb4a1('0x5'));var ejs=require(_0xb4a1('0x6'));var fs=require('fs');var fs_extra=require(_0xb4a1('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb4a1('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xb4a1('0x9'));var toCsv=require('to-csv');var querystring=require(_0xb4a1('0xa'));var Papa=require('papaparse');var extract=require(_0xb4a1('0xb'));var rimraf=require(_0xb4a1('0xc'));var archiver=require(_0xb4a1('0xd'));var Redis=require(_0xb4a1('0xe'));var authService=require(_0xb4a1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb4a1('0x10'));var logger=require(_0xb4a1('0x11'))('api');var utils=require(_0xb4a1('0x12'));var config=require(_0xb4a1('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xb4a1('0x14'))['db'];config[_0xb4a1('0x15')]=_[_0xb4a1('0x16')](config[_0xb4a1('0x15')],{'host':_0xb4a1('0x17'),'port':0x18eb});var socket=require(_0xb4a1('0x18'))(new Redis(config[_0xb4a1('0x15')]));require('./plugin.socket')[_0xb4a1('0x19')](socket);function respondWithStatusCode(_0x387e41,_0x17958c){_0x17958c=_0x17958c||0xcc;return function(_0x2eae44){if(_0x2eae44){return _0x387e41[_0xb4a1('0x1a')](_0x17958c);}return _0x387e41[_0xb4a1('0x1b')](_0x17958c)[_0xb4a1('0x1c')]();};}function respondWithResult(_0x15686b,_0x4175de){_0x4175de=_0x4175de||0xc8;return function(_0x4da78b){if(_0x4da78b){return _0x15686b[_0xb4a1('0x1b')](_0x4175de)[_0xb4a1('0x1d')](_0x4da78b);}};}function respondWithFilteredResult(_0x3aa85e,_0x5a96f5){return function(_0x15e795){if(_0x15e795){var _0x46d051=typeof _0x5a96f5[_0xb4a1('0x1e')]===_0xb4a1('0x1f')&&typeof _0x5a96f5[_0xb4a1('0x20')]==='undefined';var _0x33b10f=_0x15e795[_0xb4a1('0x21')];var _0x561fc8=_0x46d051?0x0:_0x5a96f5[_0xb4a1('0x1e')];var _0x4d4a3a=_0x46d051?_0x15e795['count']:_0x5a96f5[_0xb4a1('0x1e')]+_0x5a96f5['limit'];var _0x39488b;if(_0x4d4a3a>=_0x33b10f){_0x4d4a3a=_0x33b10f;_0x39488b=0xc8;}else{_0x39488b=0xce;}_0x3aa85e[_0xb4a1('0x1b')](_0x39488b);return _0x3aa85e[_0xb4a1('0x22')](_0xb4a1('0x23'),_0x561fc8+'-'+_0x4d4a3a+'/'+_0x33b10f)['json'](_0x15e795);}return null;};}function patchUpdates(_0x4beba6){return function(_0x44f7c2){try{jsonpatch[_0xb4a1('0x24')](_0x44f7c2,_0x4beba6,!![]);}catch(_0x187ab8){return BPromise[_0xb4a1('0x25')](_0x187ab8);}return _0x44f7c2[_0xb4a1('0x26')]();};}function saveUpdates(_0x40369c,_0x186144){return function(_0x30cf0c){if(_0x30cf0c){return _0x30cf0c[_0xb4a1('0x27')](_0x40369c)[_0xb4a1('0x28')](function(_0x45e39c){return _0x45e39c;});}return null;};}function removeEntity(_0x3ef026,_0x5fb628){return function(_0x248559){if(_0x248559){return _0x248559[_0xb4a1('0x29')]()[_0xb4a1('0x28')](function(){var _0x473db8=_0x248559[_0xb4a1('0x2a')]({'plain':!![]});var _0x299a12='Plugins';return db[_0xb4a1('0x2b')][_0xb4a1('0x29')]({'where':{'type':_0x299a12,'resourceId':_0x473db8['id']}})[_0xb4a1('0x28')](function(){return _0x248559;});})[_0xb4a1('0x28')](function(){_0x3ef026[_0xb4a1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5001de,_0x42178e){return function(_0x2ff8f2){if(!_0x2ff8f2){_0x5001de[_0xb4a1('0x1a')](0x194);}return _0x2ff8f2;};}function handleError(_0x230b63,_0x1b8b77){_0x1b8b77=_0x1b8b77||0x1f4;return function(_0x1298b8){logger[_0xb4a1('0x2c')](_0x1298b8[_0xb4a1('0x2d')]);if(_0x1298b8['name']){delete _0x1298b8['name'];}_0x230b63[_0xb4a1('0x1b')](_0x1b8b77)[_0xb4a1('0x2e')](_0x1298b8);};}exports[_0xb4a1('0x2f')]=function(_0x26907f,_0x1b0b58){var _0x1ce014={},_0x5aaef9={},_0x5d2c8e={'count':0x0,'rows':[]};var _0x30ecf0=_[_0xb4a1('0x30')](db[_0xb4a1('0x31')][_0xb4a1('0x32')],function(_0x152a7d){return{'name':_0x152a7d[_0xb4a1('0x33')],'type':_0x152a7d[_0xb4a1('0x34')][_0xb4a1('0x35')]};});_0x5aaef9[_0xb4a1('0x36')]=_[_0xb4a1('0x30')](_0x30ecf0,_0xb4a1('0x37'));_0x5aaef9[_0xb4a1('0x38')]=_[_0xb4a1('0x39')](_0x26907f[_0xb4a1('0x38')]);_0x5aaef9[_0xb4a1('0x3a')]=_[_0xb4a1('0x3b')](_0x5aaef9[_0xb4a1('0x36')],_0x5aaef9['query']);_0x1ce014[_0xb4a1('0x3c')]=_[_0xb4a1('0x3b')](_0x5aaef9['model'],qs['fields'](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x3d')]));_0x1ce014[_0xb4a1('0x3c')]=_0x1ce014[_0xb4a1('0x3c')][_0xb4a1('0x3e')]?_0x1ce014[_0xb4a1('0x3c')]:_0x5aaef9[_0xb4a1('0x36')];if(!_0x26907f[_0xb4a1('0x38')]['hasOwnProperty'](_0xb4a1('0x3f'))){_0x1ce014[_0xb4a1('0x20')]=qs[_0xb4a1('0x20')](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x20')]);_0x1ce014[_0xb4a1('0x1e')]=qs['offset'](_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x1e')]);}_0x1ce014['order']=qs['sort'](_0x26907f['query'][_0xb4a1('0x40')]);_0x1ce014[_0xb4a1('0x41')]=qs[_0xb4a1('0x3a')](_['pick'](_0x26907f[_0xb4a1('0x38')],_0x5aaef9[_0xb4a1('0x3a')]),_0x30ecf0);if(_0x26907f['query'][_0xb4a1('0x42')]){_0x1ce014[_0xb4a1('0x41')]=_['merge'](_0x1ce014[_0xb4a1('0x41')],{'$or':_[_0xb4a1('0x30')](_0x30ecf0,function(_0xe77880){if(_0xe77880[_0xb4a1('0x34')]!==_0xb4a1('0x43')){var _0x4acdf8={};_0x4acdf8[_0xe77880[_0xb4a1('0x37')]]={'$like':'%'+_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x42')]+'%'};return _0x4acdf8;}})});}_0x1ce014=_[_0xb4a1('0x44')]({},_0x1ce014,_0x26907f[_0xb4a1('0x45')]);var _0x29a12a={'where':_0x1ce014['where']};return db['Plugin'][_0xb4a1('0x21')](_0x29a12a)[_0xb4a1('0x28')](function(_0x46088c){_0x5d2c8e[_0xb4a1('0x21')]=_0x46088c;if(_0x26907f[_0xb4a1('0x38')][_0xb4a1('0x46')]){_0x1ce014[_0xb4a1('0x47')]=[{'all':!![]}];}return db[_0xb4a1('0x31')][_0xb4a1('0x48')](_0x1ce014);})[_0xb4a1('0x28')](function(_0x5dcf4c){_0x5d2c8e[_0xb4a1('0x49')]=_0x5dcf4c;return _0x5d2c8e;})[_0xb4a1('0x28')](respondWithFilteredResult(_0x1b0b58,_0x1ce014))[_0xb4a1('0x4a')](handleError(_0x1b0b58,null));};exports[_0xb4a1('0x4b')]=function(_0x5e6029,_0x7341f6){var _0x1f28aa={'raw':!![],'where':{'id':_0x5e6029[_0xb4a1('0x4c')]['id']}},_0x1d66f5={};_0x1d66f5['model']=_[_0xb4a1('0x39')](db[_0xb4a1('0x31')][_0xb4a1('0x32')]);_0x1d66f5['query']=_[_0xb4a1('0x39')](_0x5e6029['query']);_0x1d66f5['filters']=_[_0xb4a1('0x3b')](_0x1d66f5['model'],_0x1d66f5[_0xb4a1('0x38')]);_0x1f28aa[_0xb4a1('0x3c')]=_[_0xb4a1('0x3b')](_0x1d66f5['model'],qs[_0xb4a1('0x3d')](_0x5e6029['query'][_0xb4a1('0x3d')]));_0x1f28aa[_0xb4a1('0x3c')]=_0x1f28aa[_0xb4a1('0x3c')][_0xb4a1('0x3e')]?_0x1f28aa[_0xb4a1('0x3c')]:_0x1d66f5[_0xb4a1('0x36')];if(_0x5e6029[_0xb4a1('0x38')][_0xb4a1('0x46')]){_0x1f28aa[_0xb4a1('0x47')]=[{'all':!![]}];}_0x1f28aa=_[_0xb4a1('0x44')]({},_0x1f28aa,_0x5e6029['options']);return db['Plugin']['find'](_0x1f28aa)[_0xb4a1('0x28')](handleEntityNotFound(_0x7341f6,null))[_0xb4a1('0x28')](respondWithResult(_0x7341f6,null))['catch'](handleError(_0x7341f6,null));};exports[_0xb4a1('0x4d')]=function(_0x39fcc5,_0x4ef277,_0x40248a){return db[_0xb4a1('0x31')][_0xb4a1('0x4e')]({'where':{'id':_0x39fcc5[_0xb4a1('0x4c')]['id']},'attributes':['name',_0xb4a1('0x4')],'raw':!![]})[_0xb4a1('0x28')](handleEntityNotFound(_0x4ef277,null))[_0xb4a1('0x28')](function(_0x59f132){if(_0x59f132){var _0x8b0041=path['join'](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),util[_0xb4a1('0x51')](_0xb4a1('0x52'),path[_0xb4a1('0x53')](_0x59f132[_0xb4a1('0x4')])));var _0x3c604f=fs[_0xb4a1('0x54')](_0x8b0041);var _0x45631f=archiver(_0xb4a1('0x55'),{'zlib':{'level':0x9}});_0x45631f['on'](_0xb4a1('0x56'),function(_0x48e555){if(_0x48e555['code']==='ENOENT'){logger[_0xb4a1('0x2c')](_0x48e555);}else{throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x45631f['on']('error',function(_0x441dca){throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x45631f['pipe'](_0x3c604f);_0x45631f[_0xb4a1('0x59')](_0xb4a1('0x5a'),{'cwd':path[_0xb4a1('0x5b')](config['root'],'server/files/plugins',path[_0xb4a1('0x5c')](_0x59f132[_0xb4a1('0x4')])),'ignore':[path[_0xb4a1('0x5b')](path['basename'](_0x59f132[_0xb4a1('0x4')]),_0xb4a1('0x5d')),path[_0xb4a1('0x5b')](path[_0xb4a1('0x53')](_0x59f132['path']),_0xb4a1('0x5e'))],'nodir':!![]})[_0xb4a1('0x5f')]();_0x3c604f['on'](_0xb4a1('0x60'),function(){if(!fs[_0xb4a1('0x61')](_0x8b0041)){throw new db[(_0xb4a1('0x57'))]['Error']('Plugin\x20not\x20found');}return _0x4ef277[_0xb4a1('0x4d')](_0x8b0041,util[_0xb4a1('0x51')](_0xb4a1('0x52'),path['basename'](_0x59f132['path'])),function(_0x4c47cc){if(_0x4c47cc){throw new db[(_0xb4a1('0x57'))][(_0xb4a1('0x58'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xb4a1('0x62')](_0x8b0041);logger['info'](_0xb4a1('0x63'));logger[_0xb4a1('0x64')](_0xb4a1('0x65'));});});}return null;})[_0xb4a1('0x4a')](handleError(_0x4ef277,null));};exports[_0xb4a1('0x66')]=function(_0x453804,_0xdc531e,_0x2be7af){var _0x15ac8e=path[_0xb4a1('0x53')](_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')],path['extname'](_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')]));var _0x4c8ba3=path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),_0x453804[_0xb4a1('0x67')][_0xb4a1('0x68')]);var _0x5c5d6f=path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),_0x15ac8e);logger[_0xb4a1('0x64')](_0xb4a1('0x69'),_0x4c8ba3);logger[_0xb4a1('0x64')]('Plugin\x20upload\x20destination:\x20%s',_0x5c5d6f);try{fs[_0xb4a1('0x6a')](_0x4c8ba3,parseInt(_0xb4a1('0x6b'),0x8));extract(_0x4c8ba3,{'dir':_0x5c5d6f},function(_0x44839d){if(_0x44839d){logger[_0xb4a1('0x2c')](_0x44839d);handleError(_0x44839d,!![]);};var _0x59acd2=fs[_0xb4a1('0x6c')](_0x5c5d6f);if(_0x59acd2[_0xb4a1('0x3e')]>0x1){removeReferences(_0x4c8ba3,_0x5c5d6f);logger['error'](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}var _0x2af1bd=fs[_0xb4a1('0x6e')](path[_0xb4a1('0x5b')](_0x5c5d6f,_0x59acd2[0x0]));if(_0x2af1bd[_0xb4a1('0x6f')]()){removeReferences(_0x4c8ba3,_0x5c5d6f);logger[_0xb4a1('0x2c')](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}if(_0x2af1bd[_0xb4a1('0x70')]()){var _0x17c3b1=fs[_0xb4a1('0x6c')](path[_0xb4a1('0x5b')](_0x5c5d6f,_0x59acd2[0x0]));if(_0x17c3b1[_0xb4a1('0x3e')]===0x0){removeReferences(_0x4c8ba3,_0x5c5d6f);logger[_0xb4a1('0x2c')](_0xb4a1('0x6d'));return _0x2be7af(new Error(_0xb4a1('0x6d')));}var _0x571322=_0x17c3b1[_0xb4a1('0x71')](function(_0x3e8141){return _0x3e8141===_0xb4a1('0x72');});if(!_0x571322){return _0x2be7af(new Error('Plugin\x20manifest\x20missing'));}var _0x2f3250=fs['readFileSync'](path['join'](_0x5c5d6f,_0x59acd2[0x0],_0xb4a1('0x72')));var _0x4c6a45=JSON['parse'](_0x2f3250);if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x37')]){return _0x2be7af(new Error(_0xb4a1('0x73')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x34')]){return _0x2be7af(new Error(_0xb4a1('0x74')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45['version']){return _0x2be7af(new Error(_0xb4a1('0x75')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')]){return _0x2be7af(new Error(_0xb4a1('0x77')));}if(_0x4c6a45['type']===_0xb4a1('0x78')){if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')]){return _0x2be7af(new Error(_0xb4a1('0x7a')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]&&_0xb4a1('0x1f')==typeof _0x4c6a45['parameters']['views'][_0xb4a1('0x7c')]){return _0x2be7af(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x4c6a45[_0xb4a1('0x34')]==='script'){if(_0xb4a1('0x1f')==typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x7d')]){return _0x2be7af(new Error(_0xb4a1('0x7e')));}if(_0xb4a1('0x1f')==typeof _0x4c6a45['parameters'][_0xb4a1('0x7f')]){return _0x2be7af(new Error(_0xb4a1('0x80')));}}else{return _0x2be7af(new Error(_0xb4a1('0x81')));}var _0x32e59c=_0x4c6a45[_0xb4a1('0x37')];var _0x24ea70=_0x4c6a45['description'];var _0x5bd9e0=_0x4c6a45['type'];var _0xf21188=_0x4c6a45[_0xb4a1('0x82')]?_0x4c6a45[_0xb4a1('0x82')]:'always';var _0x3c65fa=_0x4c6a45[_0xb4a1('0x83')]?_0x4c6a45[_0xb4a1('0x83')]:_0xb4a1('0x84');var _0x4855c4='';var _0x4a4720='';var _0x5809ab='';var _0x5de8b1='';var _0x283293=_0x4c6a45[_0xb4a1('0x85')];if(_0x5bd9e0===_0xb4a1('0x78')){if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]){var _0x1c4625=_0x4c6a45[_0xb4a1('0x76')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i['test'](_0x1c4625)){_0x4855c4=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1c4625);}else{_0x4855c4=_0x1c4625;}}else{logger['info'](_0xb4a1('0x87'));}if(_0xb4a1('0x1f')!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')]){var _0x1f9221=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1f9221)){_0x4a4720=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1f9221);}else{_0x4a4720=_0x1f9221;}}else{logger[_0xb4a1('0x64')](_0xb4a1('0x89'));}}else if(_0x5bd9e0==='script'){_0x5809ab=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x7d')];_0x5de8b1=_0x4c6a45[_0xb4a1('0x76')]['scriptPath'];if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')]){if('undefined'!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')]){var _0x1c4625=_0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1c4625)){_0x4855c4=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1c4625);}else{_0x4855c4=_0x1c4625;}}if(_0xb4a1('0x1f')!=typeof _0x4c6a45[_0xb4a1('0x76')][_0xb4a1('0x79')][_0xb4a1('0x7c')]){var _0x1f9221=_0x4c6a45['parameters'][_0xb4a1('0x79')][_0xb4a1('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0xb4a1('0x88')](_0x1f9221)){_0x4a4720=path[_0xb4a1('0x5b')](_0xb4a1('0x86'),_0x15ac8e,_0x59acd2[0x0],_0x1f9221);}else{_0x4a4720=_0x1f9221;}}}}var _0x19473e={'name':_0x32e59c,'description':_0x24ea70,'path':path[_0xb4a1('0x5b')](_0x15ac8e,_0x59acd2[0x0]),'type':_0x5bd9e0,'sidebar':_0xf21188,'icon':_0x3c65fa,'adminUrl':_0x4855c4,'agentUrl':_0x4a4720,'scriptName':_0x5809ab,'scriptPath':_0x5de8b1,'version':_0x283293};removeReferences(_0x4c8ba3,null);return db['Plugin'][_0xb4a1('0x8a')](_0x19473e)['then'](function(_0xde52f8){var _0x527ce1={'role':_0x453804[_0xb4a1('0x8b')][_0xb4a1('0x8c')],'userProfileId':_0x453804['body']['userProfileId']};if(!_0x527ce1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x527ce1[_0xb4a1('0x8c')]===_0xb4a1('0x8d')){var _0x19654d=_0xde52f8['get']({'plain':!![]});return db[_0xb4a1('0x8e')][_0xb4a1('0x4e')]({'where':{'name':_0xb4a1('0x8f'),'userProfileId':_0x527ce1['userProfileId']},'raw':!![]})[_0xb4a1('0x28')](function(_0x40a783){if(_0x40a783&&_0x40a783[_0xb4a1('0x90')]===0x0){return db[_0xb4a1('0x2b')][_0xb4a1('0x8a')]({'name':_0x19654d[_0xb4a1('0x37')],'resourceId':_0x19654d['id'],'type':_0x40a783[_0xb4a1('0x37')],'sectionId':_0x40a783['id']},{})[_0xb4a1('0x28')](function(){return _0xde52f8;});}else{return _0xde52f8;}})[_0xb4a1('0x4a')](function(_0x5e4941){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e4941);throw _0x5e4941;});}return _0xde52f8;})[_0xb4a1('0x28')](respondWithResult(_0xdc531e,null))[_0xb4a1('0x4a')](handleError(_0xdc531e,null));}});}catch(_0x3fd3d0){_0xdc531e['status'](0x1f4)[_0xb4a1('0x2e')](_0x3fd3d0);}};function removeReferences(_0x57d100,_0x24a0bd){try{if(_0x57d100){fs[_0xb4a1('0x62')](_0x57d100);logger[_0xb4a1('0x64')](_0xb4a1('0x91'));}if(_0x24a0bd){rimraf(_0x24a0bd,function(){});logger[_0xb4a1('0x64')]('Extracted\x20folder\x20removed');}}catch(_0x192f09){logger[_0xb4a1('0x2c')](_0x192f09);}}exports[_0xb4a1('0x27')]=function(_0x17c9d5,_0x2a1511,_0x166288){return db['Plugin'][_0xb4a1('0x4e')]({'where':{'id':_0x17c9d5[_0xb4a1('0x4c')]['id']}})[_0xb4a1('0x28')](handleEntityNotFound(_0x2a1511,null))['then'](saveUpdates(_0x17c9d5[_0xb4a1('0x8b')],null))[_0xb4a1('0x28')](respondWithResult(_0x2a1511,null))[_0xb4a1('0x4a')](handleError(_0x2a1511,null));};exports[_0xb4a1('0x92')]=function(_0x2d3ed8,_0x3d4596,_0x44c43a){return db[_0xb4a1('0x31')]['find']({'where':{'id':_0x2d3ed8[_0xb4a1('0x4c')]['id']}})[_0xb4a1('0x28')](function(_0x47d500){if(_0x47d500){return _0x47d500['destroy']();}})[_0xb4a1('0x28')](function(_0x5a4c66){rimraf(path[_0xb4a1('0x5b')](config[_0xb4a1('0x4f')],_0xb4a1('0x50'),path[_0xb4a1('0x5c')](_0x5a4c66['path'])),function(){});return _0x5a4c66;})[_0xb4a1('0x28')](handleEntityNotFound(_0x3d4596,null))['then'](respondWithStatusCode(_0x3d4596,null))[_0xb4a1('0x4a')](handleError(_0x3d4596,null));};exports['webhookGet']=function(_0x15f1ce,_0x2634ac,_0x594243){return BPromise[_0xb4a1('0x93')]()['then'](function(){if(!_0x15f1ce[_0xb4a1('0x38')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x94')]){throw new Error(_0xb4a1('0x95'));}var _0xfb6cb3=_0x15f1ce['query'][_0xb4a1('0x96')]?_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x96')]+':'+_0x15f1ce[_0xb4a1('0x38')]['port']:_0xb4a1('0x97')+_0x15f1ce['query'][_0xb4a1('0x94')];var _0x290672=_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x1d')]?_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x1d')]:!![];var _0x570ea1=_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x98')]?_0x15f1ce[_0xb4a1('0x38')]['encoding']:null;var _0x14ad8b={'method':_0x15f1ce[_0xb4a1('0x99')],'uri':util[_0xb4a1('0x51')](_0xb4a1('0x9a'),_0xfb6cb3,_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x4')]),'json':_0x290672,'resolveWithFullResponse':!![],'encoding':_0x570ea1,'qs':_0x15f1ce['query']};if(_0x15f1ce[_0xb4a1('0x9b')]){_0x14ad8b[_0xb4a1('0x9b')]=_0x15f1ce[_0xb4a1('0x9b')];if(_0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9c')]){delete _0x14ad8b['headers'][_0xb4a1('0x9c')];}}if(_0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9d')]){delete _0x14ad8b[_0xb4a1('0x9b')][_0xb4a1('0x9d')];}return rp(_0x14ad8b);})[_0xb4a1('0x28')](function(_0x4524dc){if(_0x4524dc){_0x2634ac[_0xb4a1('0x22')](_0x4524dc[_0xb4a1('0x9b')]);logger[_0xb4a1('0x64')](_0x4524dc[_0xb4a1('0x8b')]);if(_[_0xb4a1('0x9e')](_0x15f1ce[_0xb4a1('0x38')][_0xb4a1('0x4')],_0xb4a1('0x4d'))&&_0x4524dc[_0xb4a1('0x9f')]==0x1f4){return _0x2634ac[_0xb4a1('0x1a')](_0x4524dc[_0xb4a1('0x9f')]);}else{return _0x2634ac['status'](_0x4524dc[_0xb4a1('0x9f')])[_0xb4a1('0x2e')](_0x4524dc[_0xb4a1('0x8b')]);}}else{return _0x2634ac[_0xb4a1('0x1a')](0xc8);}})[_0xb4a1('0x4a')](handleError(_0x2634ac,null));};exports[_0xb4a1('0xa0')]=function(_0x5e2896,_0x4ee4a8,_0x3f9f0){return BPromise['resolve']()[_0xb4a1('0x28')](function(){if(!_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x4')]){throw new Error(_0xb4a1('0xa1'));}if(!_0x5e2896[_0xb4a1('0x38')]['port']){throw new Error(_0xb4a1('0x95'));}var _0x3a7fb1=_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x96')]?_0x5e2896[_0xb4a1('0x38')]['hostname']+':'+_0x5e2896[_0xb4a1('0x38')]['port']:'http://localhost:'+_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x94')];var _0x3d556b=_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x1d')]?_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x1d')]:!![];var _0x38bea0=_0x5e2896[_0xb4a1('0x38')]['encoding']?_0x5e2896[_0xb4a1('0x38')][_0xb4a1('0x98')]:null;var _0x449308={'method':_0x5e2896[_0xb4a1('0x99')],'uri':util[_0xb4a1('0x51')](_0xb4a1('0x9a'),_0x3a7fb1,_0x5e2896['query'][_0xb4a1('0x4')]),'json':_0x3d556b,'resolveWithFullResponse':!![],'encoding':_0x38bea0,'body':_0x5e2896['body']};if(_0x5e2896[_0xb4a1('0x9b')]){_0x449308[_0xb4a1('0x9b')]=_0x5e2896[_0xb4a1('0x9b')];if(_0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9c')]){delete _0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9c')];}}if(_0x449308[_0xb4a1('0x9b')][_0xb4a1('0x9d')]){delete _0x449308[_0xb4a1('0x9b')]['content-type'];}return rp(_0x449308);})[_0xb4a1('0x28')](function(_0x53c045){if(_0x53c045){_0x4ee4a8['set'](_0x53c045[_0xb4a1('0x9b')]);logger[_0xb4a1('0x64')](_0x53c045[_0xb4a1('0x8b')]);return _0x4ee4a8[_0xb4a1('0x1b')](_0x53c045[_0xb4a1('0x9f')])[_0xb4a1('0x2e')](_0x53c045[_0xb4a1('0x8b')]);}else{return _0x4ee4a8['sendStatus'](0xc8);}})[_0xb4a1('0x4a')](handleError(_0x4ee4a8,null));};
\ No newline at end of file
index dea8a39..89d12a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f0=['hook','exports','events','../../mysqldb','Plugin','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x280f8e,_0x358968){var _0x37257b=function(_0xa04a4e){while(--_0xa04a4e){_0x280f8e['push'](_0x280f8e['shift']());}};_0x37257b(++_0x358968);}(_0x00f0,0xec));var _0x000f=function(_0x2a2dea,_0x2757a9){_0x2a2dea=_0x2a2dea-0x0;var _0x564fb4=_0x00f0[_0x2a2dea];return _0x564fb4;};'use strict';var EventEmitter=require(_0x000f('0x0'));var Plugin=require(_0x000f('0x1'))['db'][_0x000f('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x000f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x000f('0x4')};function emitEvent(_0x4c8ce1){return function(_0x3cd8ed,_0x53989d,_0x3a0613){PluginEvents[_0x000f('0x5')](_0x4c8ce1+':'+_0x3cd8ed['id'],_0x3cd8ed);PluginEvents['emit'](_0x4c8ce1,_0x3cd8ed);_0x3a0613(null);};}for(var e in events){if(events[_0x000f('0x6')](e)){var event=events[e];Plugin[_0x000f('0x7')](e,emitEvent(event));}}module[_0x000f('0x8')]=PluginEvents;
\ No newline at end of file
+var _0x9303=['events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x52fc4c,_0x4d5093){var _0x159b18=function(_0x4e68a2){while(--_0x4e68a2){_0x52fc4c['push'](_0x52fc4c['shift']());}};_0x159b18(++_0x4d5093);}(_0x9303,0xd7));var _0x3930=function(_0x28da10,_0x29470c){_0x28da10=_0x28da10-0x0;var _0x298372=_0x9303[_0x28da10];return _0x298372;};'use strict';var EventEmitter=require(_0x3930('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x3930('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3930('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4fd19e){return function(_0x3e9314,_0x2dddd0,_0x1fb17){PluginEvents[_0x3930('0x3')](_0x4fd19e+':'+_0x3e9314['id'],_0x3e9314);PluginEvents['emit'](_0x4fd19e,_0x3e9314);_0x1fb17(null);};}for(var e in events){if(events[_0x3930('0x4')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index fa1a08e..9524ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a6b=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','util','../../config/logger'];(function(_0x25b6cd,_0x28068c){var _0x48b971=function(_0x503747){while(--_0x503747){_0x25b6cd['push'](_0x25b6cd['shift']());}};_0x48b971(++_0x28068c);}(_0x6a6b,0x165));var _0xb6a6=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x6a6b[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xb6a6('0x0'));var util=require(_0xb6a6('0x1'));var logger=require(_0xb6a6('0x2'))(_0xb6a6('0x3'));var moment=require(_0xb6a6('0x4'));var BPromise=require(_0xb6a6('0x5'));var rp=require(_0xb6a6('0x6'));var fs=require('fs');var path=require(_0xb6a6('0x7'));var rimraf=require(_0xb6a6('0x8'));var config=require(_0xb6a6('0x9'));var attributes=require(_0xb6a6('0xa'));module[_0xb6a6('0xb')]=function(_0x17e422,_0x12b562){return _0x17e422[_0xb6a6('0xc')](_0xb6a6('0xd'),attributes,{'tableName':_0xb6a6('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x905c=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','define','Plugin','plugins','lodash','util'];(function(_0x22bb9f,_0x56da5c){var _0x5aaae5=function(_0x270252){while(--_0x270252){_0x22bb9f['push'](_0x22bb9f['shift']());}};_0x5aaae5(++_0x56da5c);}(_0x905c,0x14e));var _0xc905=function(_0x2fa42f,_0x587463){_0x2fa42f=_0x2fa42f-0x0;var _0x3e30f5=_0x905c[_0x2fa42f];return _0x3e30f5;};'use strict';var _=require(_0xc905('0x0'));var util=require(_0xc905('0x1'));var logger=require(_0xc905('0x2'))(_0xc905('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc905('0x4'));var fs=require('fs');var path=require(_0xc905('0x5'));var rimraf=require(_0xc905('0x6'));var config=require(_0xc905('0x7'));var attributes=require('./plugin.attributes');module[_0xc905('0x8')]=function(_0x1a4087,_0x3ab135){return _0x1a4087[_0xc905('0x9')](_0xc905('0xa'),attributes,{'tableName':_0xc905('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 110c16d..41beaa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aa3=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./plugin.socket','register','request','then','request\x20sent','debug','stringify','error','code','message','Plugin,\x20%s,\x20%s','info','result','catch','CreatePlugin','Plugin','create','body','options','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x382334,_0x433283){var _0x2e3b9e=function(_0x897ae7){while(--_0x897ae7){_0x382334['push'](_0x382334['shift']());}};_0x2e3b9e(++_0x433283);}(_0x9aa3,0x1bf));var _0x39aa=function(_0x37181e,_0x1ed877){_0x37181e=_0x37181e-0x0;var _0x31593c=_0x9aa3[_0x37181e];return _0x31593c;};'use strict';var _=require('lodash');var util=require(_0x39aa('0x0'));var moment=require(_0x39aa('0x1'));var BPromise=require(_0x39aa('0x2'));var rs=require(_0x39aa('0x3'));var fs=require('fs');var Redis=require(_0x39aa('0x4'));var db=require(_0x39aa('0x5'))['db'];var utils=require(_0x39aa('0x6'));var logger=require(_0x39aa('0x7'))(_0x39aa('0x8'));var config=require(_0x39aa('0x9'));var jayson=require(_0x39aa('0xa'));var client=jayson[_0x39aa('0xb')][_0x39aa('0xc')]({'port':0x232a});config[_0x39aa('0xd')]=_[_0x39aa('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x39aa('0xf'))(new Redis(config[_0x39aa('0xd')]));require(_0x39aa('0x10'))[_0x39aa('0x11')](socket);function respondWithRpcPromise(_0x4bd699,_0x34abc6,_0x361e24){return new BPromise(function(_0x2cac26,_0x19febc){return client[_0x39aa('0x12')](_0x4bd699,_0x361e24)[_0x39aa('0x13')](function(_0xaf666a){logger['info']('Plugin,\x20%s,\x20%s',_0x34abc6,_0x39aa('0x14'));logger[_0x39aa('0x15')]('Plugin,\x20%s,\x20%s,\x20%s',_0x34abc6,_0x39aa('0x14'),JSON[_0x39aa('0x16')](_0xaf666a));if(_0xaf666a[_0x39aa('0x17')]){if(_0xaf666a['error'][_0x39aa('0x18')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x34abc6,_0xaf666a[_0x39aa('0x17')][_0x39aa('0x19')]);return _0x19febc(_0xaf666a[_0x39aa('0x17')]['message']);}logger[_0x39aa('0x17')](_0x39aa('0x1a'),_0x34abc6,_0xaf666a[_0x39aa('0x17')][_0x39aa('0x19')]);return _0x2cac26(_0xaf666a[_0x39aa('0x17')][_0x39aa('0x19')]);}else{logger[_0x39aa('0x1b')]('Plugin,\x20%s,\x20%s',_0x34abc6,_0x39aa('0x14'));_0x2cac26(_0xaf666a[_0x39aa('0x1c')][_0x39aa('0x19')]);}})[_0x39aa('0x1d')](function(_0x34824e){logger['error'](_0x39aa('0x1a'),_0x34abc6,_0x34824e);_0x19febc(_0x34824e);});});}exports[_0x39aa('0x1e')]=function(_0x866fac){var _0x16440f=this;return new Promise(function(_0x3163be,_0x1e1f11){return db[_0x39aa('0x1f')][_0x39aa('0x20')](_0x866fac[_0x39aa('0x21')],{'raw':_0x866fac[_0x39aa('0x22')]?_0x866fac[_0x39aa('0x22')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x29f05f){logger[_0x39aa('0x1b')]('CreatePlugin',_0x866fac);logger['debug'](_0x39aa('0x1e'),_0x866fac,JSON[_0x39aa('0x16')](_0x29f05f));_0x3163be(_0x29f05f);})[_0x39aa('0x1d')](function(_0x2d9a13){logger[_0x39aa('0x17')](_0x39aa('0x1e'),_0x2d9a13[_0x39aa('0x19')],_0x866fac);_0x1e1f11(_0x16440f[_0x39aa('0x17')](0x1f4,_0x2d9a13[_0x39aa('0x19')]));});});};
\ No newline at end of file
+var _0xa552=['bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','request\x20sent','debug','error','code','Plugin,\x20%s,\x20%s','message','result','catch','CreatePlugin','create','body','options','stringify','lodash','util','moment'];(function(_0x38954c,_0x357891){var _0x19fd62=function(_0x5a390d){while(--_0x5a390d){_0x38954c['push'](_0x38954c['shift']());}};_0x19fd62(++_0x357891);}(_0xa552,0x147));var _0x2a55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa552[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2a55('0x0'));var util=require(_0x2a55('0x1'));var moment=require(_0x2a55('0x2'));var BPromise=require(_0x2a55('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a55('0x4'));var db=require(_0x2a55('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a55('0x6'));var config=require(_0x2a55('0x7'));var jayson=require(_0x2a55('0x8'));var client=jayson[_0x2a55('0x9')][_0x2a55('0xa')]({'port':0x232a});config[_0x2a55('0xb')]=_[_0x2a55('0xc')](config['redis'],{'host':_0x2a55('0xd'),'port':0x18eb});var socket=require(_0x2a55('0xe'))(new Redis(config['redis']));require(_0x2a55('0xf'))[_0x2a55('0x10')](socket);function respondWithRpcPromise(_0x5ea39b,_0x4d7001,_0xb71862){return new BPromise(function(_0x378ca7,_0x11289c){return client[_0x2a55('0x11')](_0x5ea39b,_0xb71862)[_0x2a55('0x12')](function(_0x1539d8){logger[_0x2a55('0x13')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x2a55('0x14'));logger[_0x2a55('0x15')]('Plugin,\x20%s,\x20%s,\x20%s',_0x4d7001,_0x2a55('0x14'),JSON['stringify'](_0x1539d8));if(_0x1539d8['error']){if(_0x1539d8[_0x2a55('0x16')][_0x2a55('0x17')]===0x1f4){logger[_0x2a55('0x16')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x1539d8[_0x2a55('0x16')]['message']);return _0x11289c(_0x1539d8['error']['message']);}logger[_0x2a55('0x16')](_0x2a55('0x18'),_0x4d7001,_0x1539d8[_0x2a55('0x16')]['message']);return _0x378ca7(_0x1539d8[_0x2a55('0x16')][_0x2a55('0x19')]);}else{logger['info'](_0x2a55('0x18'),_0x4d7001,'request\x20sent');_0x378ca7(_0x1539d8[_0x2a55('0x1a')]['message']);}})[_0x2a55('0x1b')](function(_0x145c89){logger[_0x2a55('0x16')]('Plugin,\x20%s,\x20%s',_0x4d7001,_0x145c89);_0x11289c(_0x145c89);});});}exports[_0x2a55('0x1c')]=function(_0x24161c){var _0x167385=this;return new Promise(function(_0xc01aa7,_0x4b1cc5){return db['Plugin'][_0x2a55('0x1d')](_0x24161c[_0x2a55('0x1e')],{'raw':_0x24161c['options']?_0x24161c[_0x2a55('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x2a55('0x12')](function(_0x2db552){logger[_0x2a55('0x13')]('CreatePlugin',_0x24161c);logger[_0x2a55('0x15')](_0x2a55('0x1c'),_0x24161c,JSON[_0x2a55('0x20')](_0x2db552));_0xc01aa7(_0x2db552);})[_0x2a55('0x1b')](function(_0x580057){logger[_0x2a55('0x16')]('CreatePlugin',_0x580057[_0x2a55('0x19')],_0x24161c);_0x4b1cc5(_0x167385[_0x2a55('0x16')](0x1f4,_0x580057[_0x2a55('0x19')]));});});};
\ No newline at end of file
index 8c87bb1..873f74a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0217=['save','update','register','length','./plugin.events'];(function(_0x269377,_0xbe0c42){var _0x58b9bf=function(_0x241fd6){while(--_0x241fd6){_0x269377['push'](_0x269377['shift']());}};_0x58b9bf(++_0xbe0c42);}(_0x0217,0xc7));var _0x7021=function(_0x38a3da,_0x20a197){_0x38a3da=_0x38a3da-0x0;var _0x23cd21=_0x0217[_0x38a3da];return _0x23cd21;};'use strict';var PluginEvents=require(_0x7021('0x0'));var events=[_0x7021('0x1'),'remove',_0x7021('0x2')];function createListener(_0x50ec06,_0x23bf04){return function(_0x2e15c6){_0x23bf04['emit'](_0x50ec06,_0x2e15c6);};}function removeListener(_0x1e662f,_0x4636db){return function(){PluginEvents['removeListener'](_0x1e662f,_0x4636db);};}exports[_0x7021('0x3')]=function(_0x201635){for(var _0x138f7c=0x0,_0x707031=events[_0x7021('0x4')];_0x138f7c<_0x707031;_0x138f7c++){var _0x44b528=events[_0x138f7c];var _0x36b091=createListener('plugin:'+_0x44b528,_0x201635);PluginEvents['on'](_0x44b528,_0x36b091);}};
\ No newline at end of file
+var _0x5600=['save','remove','update','emit','removeListener','register','plugin:'];(function(_0x154a27,_0x8fee08){var _0x201b9c=function(_0x42b3b6){while(--_0x42b3b6){_0x154a27['push'](_0x154a27['shift']());}};_0x201b9c(++_0x8fee08);}(_0x5600,0x150));var _0x0560=function(_0x33975c,_0x50d085){_0x33975c=_0x33975c-0x0;var _0x1c15ab=_0x5600[_0x33975c];return _0x1c15ab;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x0560('0x0'),_0x0560('0x1'),_0x0560('0x2')];function createListener(_0x2d33e0,_0x3f536f){return function(_0x1a02cd){_0x3f536f[_0x0560('0x3')](_0x2d33e0,_0x1a02cd);};}function removeListener(_0x271ef5,_0x473ed3){return function(){PluginEvents[_0x0560('0x4')](_0x271ef5,_0x473ed3);};}exports[_0x0560('0x5')]=function(_0x26dcb4){for(var _0x4f191b=0x0,_0x240b18=events['length'];_0x4f191b<_0x240b18;_0x4f191b++){var _0x4e86f2=events[_0x4f191b];var _0x1d853f=createListener(_0x0560('0x6')+_0x4e86f2,_0x26dcb4);PluginEvents['on'](_0x4e86f2,_0x1d853f);}};
\ No newline at end of file
index 272095c..f2d326c 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(_0x2a8ade,_0xa3bf14){var _0x461db6=function(_0x53b567){while(--_0x53b567){_0x2a8ade['push'](_0x2a8ade['shift']());}};_0x461db6(++_0xa3bf14);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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(_0x5821b7,_0x21697a){var _0x12dcf9=function(_0x563d52){while(--_0x563d52){_0x5821b7['push'](_0x5821b7['shift']());}};_0x12dcf9(++_0x21697a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 868e4bd..8771d88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['../../config/pm2','api','path','sendStatus','status','error','stack','name','send','npm\x20install','info','index','then','express','motion2','length','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','dirname','chdir','dump','Missing\x20name\x20and/or\x20path','restart','stop','Unknown\x20status','destroy','delete','Unknown\x20id','lodash'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x3c81,0x102));var _0x13c8=function(_0x1589ac,_0x50bdf3){_0x1589ac=_0x1589ac-0x0;var _0x1a9fc4=_0x3c81[_0x1589ac];return _0x1a9fc4;};'use strict';var _=require(_0x13c8('0x0'));var pm2=require(_0x13c8('0x1'));var logger=require('../../config/logger')(_0x13c8('0x2'));var path=require(_0x13c8('0x3'));var exec=require('child_process')['exec'];var BPromise=require('bluebird');function handleEntityNotFound(_0x548599,_0x101d4f){return function(_0x3ec886){if(!_0x3ec886){_0x548599[_0x13c8('0x4')](0x194);;}return _0x3ec886;};}function respondWithResult(_0x1c16f1,_0x2a4d66){_0x2a4d66=_0x2a4d66||0xc8;return function(_0x3f0bd2){if(_0x3f0bd2){return _0x1c16f1[_0x13c8('0x5')](_0x2a4d66)['json'](_0x3f0bd2);}return null;};}function handleError(_0x17c228,_0x4905c3){_0x4905c3=_0x4905c3||0x1f4;return function(_0x380aed){logger[_0x13c8('0x6')](_0x380aed[_0x13c8('0x7')]);if(_0x380aed[_0x13c8('0x8')]){delete _0x380aed[_0x13c8('0x8')];}_0x17c228[_0x13c8('0x5')](_0x4905c3)[_0x13c8('0x9')](_0x380aed);};}function execChildProcess(){return new BPromise(function(_0x2ce95a,_0x26e7d9){exec(_0x13c8('0xa'),function(_0x3ca0a6,_0x2468b3,_0x28417e){logger[_0x13c8('0xb')](_0x2468b3);logger['info'](_0x28417e);if(_0x3ca0a6){logger[_0x13c8('0x6')](_0x3ca0a6);return _0x26e7d9(_0x3ca0a6);}return _0x2ce95a(_0x2468b3);});});}exports[_0x13c8('0xc')]=function(_0x2304b5,_0x1f9b6f){return pm2['list']()[_0x13c8('0xd')](function(_0x515681){if(_0x515681){var _0x4d7a88=_['reject'](_0x515681,function(_0x126359){return _0x126359['name']===_0x13c8('0xe')||_0x126359[_0x13c8('0x8')]===_0x13c8('0xf');});return{'rows':_0x4d7a88,'count':_0x4d7a88[_0x13c8('0x10')]};}return null;})['then'](respondWithResult(_0x1f9b6f,null))[_0x13c8('0x11')](handleError(_0x1f9b6f,null));};exports[_0x13c8('0x12')]=function(_0x31ae02,_0x3bc5a9){return pm2[_0x13c8('0x13')](_0x31ae02[_0x13c8('0x14')]['id'])[_0x13c8('0xd')](respondWithResult(_0x3bc5a9,null))[_0x13c8('0xd')](handleEntityNotFound(_0x3bc5a9,null))[_0x13c8('0x11')](handleError(_0x3bc5a9,null));};exports[_0x13c8('0x15')]=function(_0xe9386a,_0x5ac776){if(_0xe9386a[_0x13c8('0x16')][_0x13c8('0x8')]&&_0xe9386a[_0x13c8('0x16')][_0x13c8('0x17')]){var _0x513085=path[_0x13c8('0x18')](__dirname,_0x13c8('0x19'),_0xe9386a[_0x13c8('0x16')][_0x13c8('0x17')]);var _0x436d5d=process[_0x13c8('0x1a')]();process['chdir'](path[_0x13c8('0x1b')](_0x513085));return execChildProcess()[_0x13c8('0xd')](function(_0x315d6c){process[_0x13c8('0x1c')](_0x436d5d);return pm2['start']({'name':_0xe9386a[_0x13c8('0x16')][_0x13c8('0x8')],'script':_0x513085});})['then'](function(_0x49b552){pm2[_0x13c8('0x1d')]();return _0x49b552[0x0];})[_0x13c8('0xd')](respondWithResult(_0x5ac776,0xc9))['catch'](handleError(_0x5ac776,null));}else{return _0x5ac776['status'](0x1f4)[_0x13c8('0x9')]({'message':_0x13c8('0x1e')});}};exports['update']=function(_0x4df077,_0x196983){if(_0x4df077['body']['id']){delete _0x4df077['body']['id'];}var _0x1c7dc4={'online':_0x13c8('0x1f'),'stopped':_0x13c8('0x20')};if(_0x1c7dc4['hasOwnProperty'](_0x4df077['body'][_0x13c8('0x5')])){return pm2[_0x1c7dc4[_0x4df077[_0x13c8('0x16')][_0x13c8('0x5')]]](_0x4df077[_0x13c8('0x14')]['id'])[_0x13c8('0xd')](respondWithResult(_0x196983,0xc8))[_0x13c8('0x11')](handleError(_0x196983,null));}else{return _0x196983[_0x13c8('0x5')](0x1f4)['send']({'message':_0x13c8('0x21')});}};exports[_0x13c8('0x22')]=function(_0x5a5911,_0x5c85e4){if(_0x5a5911[_0x13c8('0x16')]['id']){delete _0x5a5911[_0x13c8('0x16')]['id'];}if(_0x5a5911['params']['id']){return pm2[_0x13c8('0x23')](_0x5a5911[_0x13c8('0x14')]['id'])['then'](function(_0x21224a){pm2[_0x13c8('0x1d')]();return _0x21224a[0x0];})[_0x13c8('0xd')](respondWithResult(_0x5c85e4,null))[_0x13c8('0x11')](handleError(_0x5c85e4,null));}else{return _0x5c85e4[_0x13c8('0x5')](0x1f4)[_0x13c8('0x9')]({'message':_0x13c8('0x24')});}};
\ No newline at end of file
+var _0x4ea3=['dirname','start','dump','send','Missing\x20name\x20and/or\x20path','update','destroy','lodash','../../config/pm2','../../config/logger','api','child_process','bluebird','sendStatus','status','json','error','name','npm\x20install','info','index','list','then','reject','express','length','catch','show','describe','params','create','body','script','../../files/plugins','chdir'];(function(_0x10fde7,_0x45be17){var _0x224407=function(_0x171330){while(--_0x171330){_0x10fde7['push'](_0x10fde7['shift']());}};_0x224407(++_0x45be17);}(_0x4ea3,0x70));var _0x34ea=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4ea3[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x34ea('0x0'));var pm2=require(_0x34ea('0x1'));var logger=require(_0x34ea('0x2'))(_0x34ea('0x3'));var path=require('path');var exec=require(_0x34ea('0x4'))['exec'];var BPromise=require(_0x34ea('0x5'));function handleEntityNotFound(_0x571f1b,_0x5e5a84){return function(_0x2ce955){if(!_0x2ce955){_0x571f1b[_0x34ea('0x6')](0x194);;}return _0x2ce955;};}function respondWithResult(_0x962596,_0x123d48){_0x123d48=_0x123d48||0xc8;return function(_0x40434e){if(_0x40434e){return _0x962596[_0x34ea('0x7')](_0x123d48)[_0x34ea('0x8')](_0x40434e);}return null;};}function handleError(_0x5bec7c,_0x341727){_0x341727=_0x341727||0x1f4;return function(_0x6e9ccc){logger[_0x34ea('0x9')](_0x6e9ccc['stack']);if(_0x6e9ccc[_0x34ea('0xa')]){delete _0x6e9ccc[_0x34ea('0xa')];}_0x5bec7c['status'](_0x341727)['send'](_0x6e9ccc);};}function execChildProcess(){return new BPromise(function(_0x5bd8b6,_0x346287){exec(_0x34ea('0xb'),function(_0x58bb0d,_0x11229e,_0x29a5c8){logger[_0x34ea('0xc')](_0x11229e);logger[_0x34ea('0xc')](_0x29a5c8);if(_0x58bb0d){logger[_0x34ea('0x9')](_0x58bb0d);return _0x346287(_0x58bb0d);}return _0x5bd8b6(_0x11229e);});});}exports[_0x34ea('0xd')]=function(_0x37e1b4,_0x36af43){return pm2[_0x34ea('0xe')]()[_0x34ea('0xf')](function(_0x36a4c6){if(_0x36a4c6){var _0x5ef9ae=_[_0x34ea('0x10')](_0x36a4c6,function(_0x89e3f2){return _0x89e3f2[_0x34ea('0xa')]===_0x34ea('0x11')||_0x89e3f2[_0x34ea('0xa')]==='motion2';});return{'rows':_0x5ef9ae,'count':_0x5ef9ae[_0x34ea('0x12')]};}return null;})[_0x34ea('0xf')](respondWithResult(_0x36af43,null))[_0x34ea('0x13')](handleError(_0x36af43,null));};exports[_0x34ea('0x14')]=function(_0x5f420f,_0x2680e0){return pm2[_0x34ea('0x15')](_0x5f420f[_0x34ea('0x16')]['id'])['then'](respondWithResult(_0x2680e0,null))[_0x34ea('0xf')](handleEntityNotFound(_0x2680e0,null))[_0x34ea('0x13')](handleError(_0x2680e0,null));};exports[_0x34ea('0x17')]=function(_0x127308,_0x52af16){if(_0x127308[_0x34ea('0x18')][_0x34ea('0xa')]&&_0x127308[_0x34ea('0x18')][_0x34ea('0x19')]){var _0x4fc1a2=path['join'](__dirname,_0x34ea('0x1a'),_0x127308[_0x34ea('0x18')][_0x34ea('0x19')]);var _0x51022f=process['cwd']();process[_0x34ea('0x1b')](path[_0x34ea('0x1c')](_0x4fc1a2));return execChildProcess()[_0x34ea('0xf')](function(_0x30c4b0){process[_0x34ea('0x1b')](_0x51022f);return pm2[_0x34ea('0x1d')]({'name':_0x127308['body'][_0x34ea('0xa')],'script':_0x4fc1a2});})[_0x34ea('0xf')](function(_0x3c0983){pm2[_0x34ea('0x1e')]();return _0x3c0983[0x0];})['then'](respondWithResult(_0x52af16,0xc9))['catch'](handleError(_0x52af16,null));}else{return _0x52af16['status'](0x1f4)[_0x34ea('0x1f')]({'message':_0x34ea('0x20')});}};exports[_0x34ea('0x21')]=function(_0x4204d7,_0x5b8b3e){if(_0x4204d7[_0x34ea('0x18')]['id']){delete _0x4204d7[_0x34ea('0x18')]['id'];}var _0x27c6f7={'online':'restart','stopped':'stop'};if(_0x27c6f7['hasOwnProperty'](_0x4204d7['body'][_0x34ea('0x7')])){return pm2[_0x27c6f7[_0x4204d7[_0x34ea('0x18')][_0x34ea('0x7')]]](_0x4204d7[_0x34ea('0x16')]['id'])['then'](respondWithResult(_0x5b8b3e,0xc8))[_0x34ea('0x13')](handleError(_0x5b8b3e,null));}else{return _0x5b8b3e['status'](0x1f4)[_0x34ea('0x1f')]({'message':'Unknown\x20status'});}};exports[_0x34ea('0x22')]=function(_0x14e018,_0x3cb968){if(_0x14e018['body']['id']){delete _0x14e018[_0x34ea('0x18')]['id'];}if(_0x14e018[_0x34ea('0x16')]['id']){return pm2['delete'](_0x14e018[_0x34ea('0x16')]['id'])['then'](function(_0x1392b6){pm2[_0x34ea('0x1e')]();return _0x1392b6[0x0];})[_0x34ea('0xf')](respondWithResult(_0x3cb968,null))['catch'](handleError(_0x3cb968,null));}else{return _0x3cb968['status'](0x1f4)[_0x34ea('0x1f')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index eddefb6..8f1838b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e11=['getAgents','/queues','exports','express','Router','get','/agents','isAuthenticated'];(function(_0x4a6549,_0x262627){var _0x3ae961=function(_0x1c6dee){while(--_0x1c6dee){_0x4a6549['push'](_0x4a6549['shift']());}};_0x3ae961(++_0x262627);}(_0x1e11,0xab));var _0x11e1=function(_0x15a5c1,_0x177ad3){_0x15a5c1=_0x15a5c1-0x0;var _0x19cb2e=_0x1e11[_0x15a5c1];return _0x19cb2e;};'use strict';var express=require(_0x11e1('0x0'));var router=express[_0x11e1('0x1')]();var auth=require('../../components/auth/service');var controller=require('./realtime.controller');router[_0x11e1('0x2')](_0x11e1('0x3'),auth[_0x11e1('0x4')](),controller[_0x11e1('0x5')]);router['get'](_0x11e1('0x6'),auth[_0x11e1('0x4')](),controller['getQueues']);module[_0x11e1('0x7')]=router;
\ No newline at end of file
+var _0x81a5=['express','Router','../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','exports'];(function(_0x2e04e2,_0xceac3a){var _0x24cdac=function(_0x227328){while(--_0x227328){_0x2e04e2['push'](_0x2e04e2['shift']());}};_0x24cdac(++_0xceac3a);}(_0x81a5,0x17c));var _0x581a=function(_0x35f589,_0x305b30){_0x35f589=_0x35f589-0x0;var _0x17b1d3=_0x81a5[_0x35f589];return _0x17b1d3;};'use strict';var express=require(_0x581a('0x0'));var router=express[_0x581a('0x1')]();var auth=require(_0x581a('0x2'));var controller=require(_0x581a('0x3'));router[_0x581a('0x4')](_0x581a('0x5'),auth[_0x581a('0x6')](),controller[_0x581a('0x7')]);router['get'](_0x581a('0x8'),auth[_0x581a('0x6')](),controller['getQueues']);module[_0x581a('0x9')]=router;
\ No newline at end of file
index 34b5a0b..0932573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bc8=['query','pauseTypeFilter','pause','resolve','channel','sort','includes','validateSortParameter','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','rawAttributes','fieldName','key','agent','getOptions','raw','sequelize','literal','FIELD(id,','*pause','forEach','where','user','userProfileId','Agents','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','globalStatus','getAgentStatus','Status','sortAgentsByStatus','Queue','type','role','QueueCampaigns','Queues','getRealtimeAgents','all','util','lodash','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','../../mysqldb','http','client','offset','undefined','limit','count','status','set','Content-Range','error','name','send','request','startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','talking','paused','voice','outbound','push','pTalking','originated','message','dialActive','dialMethod','startPredictive','erlangCalls','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','agents','loggedInDb','busy','find','merge','filter','queue','length','some','internal','toString','getMembers','UserId','accountcode','online','User','Pause','findAll','getChannels','toLowerCase','Invalid\x20channel','getAgents','globalQueueFilter','globalStatusFilter'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x0bc8,0x127));var _0x80bc=function(_0x288e8e,_0x44ca9f){_0x288e8e=_0x288e8e-0x0;var _0x371e27=_0x0bc8[_0x288e8e];return _0x371e27;};'use strict';var util=require(_0x80bc('0x0'));var _=require(_0x80bc('0x1'));var jayson=require(_0x80bc('0x2'));var rta=require(_0x80bc('0x3'));var qs=require(_0x80bc('0x4'));var utils=require('../../config/utils');var logger=require('../../config/logger')('api');var db=require(_0x80bc('0x5'))['db'];var amiClient=jayson['client'][_0x80bc('0x6')]({'port':0x232a});var routingClient=jayson[_0x80bc('0x7')]['http']({'port':0x232c});function respondWithFilteredResult(_0x3afcc0,_0x19e178){return function(_0x22566f){if(_0x22566f){var _0x5445b0=typeof _0x19e178[_0x80bc('0x8')]===_0x80bc('0x9')&&typeof _0x19e178[_0x80bc('0xa')]==='undefined';var _0x3a655c=_0x22566f[_0x80bc('0xb')];var _0x46988c=_0x5445b0?0x0:_0x19e178['offset'];var _0xfad42b=_0x5445b0?_0x22566f[_0x80bc('0xb')]:_0x19e178[_0x80bc('0x8')]+_0x19e178[_0x80bc('0xa')];var _0x2bb0df;if(_0xfad42b>=_0x3a655c){_0xfad42b=_0x3a655c;_0x2bb0df=0xc8;}else{_0x2bb0df=0xce;}_0x3afcc0[_0x80bc('0xc')](_0x2bb0df);return _0x3afcc0[_0x80bc('0xd')](_0x80bc('0xe'),_0x46988c+'-'+_0xfad42b+'/'+_0x3a655c)['json'](_0x22566f);}return null;};}function handleError(_0x29650f,_0x5afc45){_0x5afc45=_0x5afc45||0x1f4;return function(_0x4dfd94){logger[_0x80bc('0xf')](_0x4dfd94['stack']);if(_0x4dfd94[_0x80bc('0x10')]){delete _0x4dfd94[_0x80bc('0x10')];}_0x29650f[_0x80bc('0xc')](_0x5afc45)[_0x80bc('0x11')](_0x4dfd94);};}function getRealtimeQueues(_0x61b6d2,_0x278a03){return new Promise(function(_0x1f0b48,_0x48c56e){var _0x256524=_0x278a03==='voice'?amiClient:routingClient;return _0x256524[_0x80bc('0x12')](_[_0x80bc('0x13')](_0x278a03)+'Queues',_0x61b6d2)[_0x80bc('0x14')](function(_0x1c5fe9){if(_0x1c5fe9[_0x80bc('0xf')])throw new Error(util[_0x80bc('0x15')](_0x80bc('0x16'),_0x278a03));return _0x1f0b48(_0x1c5fe9[_0x80bc('0x17')]);})[_0x80bc('0x18')](function(_0x1b6bbb){_0x48c56e(_0x1b6bbb);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x593042,_0x1b0735){return amiClient['request'](_0x80bc('0x19'),{})[_0x80bc('0x14')](function(_0x31dd6e){if(_0x31dd6e[_0x80bc('0xf')])throw new Error(_0x80bc('0x1a'));return _0x593042(_0x31dd6e[_0x80bc('0x17')]);})[_0x80bc('0x18')](function(_0x2daee2){_0x1b0735(_0x2daee2);});});}function initializeQueues(_0x38a36a,_0x5383b9,_0x5c26a4,_0x12ec8f){var _0x4f91d2=[_0x80bc('0x1b'),_0x80bc('0x1c'),_0x80bc('0x1d'),_0x80bc('0x1e'),_0x80bc('0x1f')];if(_0x5c26a4===_0x80bc('0x20')&&_0x12ec8f===_0x80bc('0x21')){_0x4f91d2[_0x80bc('0x22')](_0x80bc('0x23'),_0x80bc('0x24'),_0x80bc('0x25'),_0x80bc('0x26'),_0x80bc('0x27'),'Trunk',_0x80bc('0x28'),'startProgressive',_0x80bc('0x29'),'erlangCallToSecond','erlangAbandonmentRate',_0x80bc('0x2a'),_0x80bc('0x2b'),_0x80bc('0x2c'),'dialPredictiveIntervalMinThreshold',_0x80bc('0x2d'),_0x80bc('0x2e'),_0x80bc('0x2f'),_0x80bc('0x30'),'predictiveIntervalDroppedCallsCallersExit',_0x80bc('0x31'),_0x80bc('0x32'));}return _0x38a36a[_0x80bc('0x33')](function(_0x1d41a3){var _0x3e761c=_0x1d41a3[_0x80bc('0x34')]({'plain':!![]});_0x3e761c[_0x80bc('0x35')]=[];_0x3e761c[_0x80bc('0x1f')]=0x0;_0x3e761c[_0x80bc('0x36')]=0x0;_0x3e761c[_0x80bc('0x1b')]=0x0;_0x3e761c[_0x80bc('0x1c')]=0x0;_0x3e761c[_0x80bc('0x1d')]=0x0;if(_0x5c26a4===_0x80bc('0x20')){_0x3e761c[_0x80bc('0x1e')]=0x0;_0x3e761c[_0x80bc('0x37')]=0x0;if(_0x12ec8f===_0x80bc('0x21')){_0x3e761c[_0x80bc('0x23')]=0x0;_0x3e761c[_0x80bc('0x24')]=0x0;}}var _0x56f2d7=_[_0x80bc('0x38')](_0x5383b9,['id',_0x3e761c['id']]);if(_0x56f2d7)_[_0x80bc('0x39')](_0x3e761c,_['pick'](_0x56f2d7,_0x4f91d2));return _0x3e761c;});}function updateAgentVoiceStatus(_0x180fb4,_0x2df94d,_0x26075f){var _0x422fa3=_[_0x80bc('0x3a')](_0x26075f,[_0x80bc('0x3b'),_0x2df94d[_0x80bc('0x10')]]);if(_0x422fa3[_0x80bc('0x3c')]===0x0)return _0x180fb4['busy']=!![];if(_[_0x80bc('0x3d')](_0x422fa3,['connectedlinenum',_0x180fb4[_0x80bc('0x3e')][_0x80bc('0x3f')]()]))return _0x180fb4[_0x80bc('0x1e')]=!![];if(!_0x180fb4[_0x80bc('0x1e')])return _0x180fb4[_0x80bc('0x37')]=!![];}function getVoiceQueueAgents(_0x39d46c,_0x3973a1,_0x336b27,_0x370365){var _0xa95198=_[_0x80bc('0x38')](_0x3973a1,['id',_0x39d46c['id']]);if(!_0xa95198)return _0x39d46c;return _0xa95198[_0x80bc('0x40')]({'raw':!![]})[_0x80bc('0x14')](function(_0x4d9af8){for(var _0x8ec27e=0x0;_0x8ec27e<_0x4d9af8['length'];_0x8ec27e++){var _0x13ffb9=_[_0x80bc('0x38')](_0x336b27,['id',_0x4d9af8[_0x8ec27e][_0x80bc('0x41')]]);if(!_0x13ffb9){_0x13ffb9={'id':_0x4d9af8[_0x8ec27e][_0x80bc('0x41')],'name':_0x4d9af8[_0x8ec27e]['UserId'],'accountcode':'','online':![]};}var _0x3e12d2={'id':_0x13ffb9['id'],'name':_0x13ffb9[_0x80bc('0x10')],'internal':_0x13ffb9[_0x80bc('0x42')],'online':Boolean(_0x13ffb9[_0x80bc('0x43')]),'paused':Boolean(_0x4d9af8[_0x8ec27e]['paused'])};if(_0x13ffb9['voiceStatus']===_0x80bc('0x1e'))updateAgentVoiceStatus(_0x3e12d2,_0x39d46c,_0x370365);if(_0x3e12d2[_0x80bc('0x43')])_0x39d46c[_0x80bc('0x36')]++;if(_0x3e12d2['busy'])_0x39d46c[_0x80bc('0x37')]++;if(_0x3e12d2['paused']&&!_0x3e12d2[_0x80bc('0x37')]&&!_0x3e12d2[_0x80bc('0x1e')])_0x39d46c['paused']++;_0x39d46c[_0x80bc('0x35')][_0x80bc('0x22')](_0x3e12d2);}return _0x39d46c;});}function getQueueAgents(_0x3facc8,_0x3459a9,_0x167b54){var _0x161036=_0x80bc('0x44')+_['startCase'](_0x167b54)+'Queue';var _0x154f3e=_0x167b54+_0x80bc('0x45');return db[_0x161036][_0x80bc('0x46')]({'where':{[_[_0x80bc('0x13')](_0x167b54)+'QueueId']:_0x3facc8['id']},'raw':!![]})[_0x80bc('0x14')](function(_0x52476d){for(var _0x44898a=0x0;_0x44898a<_0x52476d[_0x80bc('0x3c')];_0x44898a++){var _0x38ee46=_['find'](_0x3459a9,['id',_0x52476d[_0x44898a][_0x80bc('0x41')]]);if(!_0x38ee46){_0x38ee46={'id':_0x52476d[_0x44898a][_0x80bc('0x41')],'name':_0x52476d[_0x44898a][_0x80bc('0x41')],'online':![],['pauseField']:![]};}var _0x482dbe={'id':_0x38ee46['id'],'name':_0x38ee46[_0x80bc('0x10')],'online':Boolean(_0x38ee46[_0x80bc('0x43')]),'paused':Boolean(_0x38ee46[_0x154f3e])};if(_0x482dbe[_0x80bc('0x43')])_0x3facc8['loggedInDb']++;_0x3facc8[_0x80bc('0x35')][_0x80bc('0x22')](_0x482dbe);}return _0x3facc8;});}function validateChannel(_0x41b556){var _0x39b89a=utils[_0x80bc('0x47')]();if(!_['includes'](_0x39b89a,_0x41b556[_0x80bc('0x48')]()))throw new Error(_0x80bc('0x49'));return _0x41b556['toLowerCase']();}exports[_0x80bc('0x4a')]=function(_0x1f2458,_0x50e144){var _0x51b5c9={'count':0x0,'rows':[]};var _0x34ac39={};var _0x495a9b;var _0x25d398;var _0x28d906;var _0x6f914d;var _0x14d4e9=utils[_0x80bc('0x47')]();var _0xf58cb3=_0x1f2458['query'][_0x80bc('0x4b')];var _0x1b2f98=_0x1f2458['query'][_0x80bc('0x4c')];var _0xf701f5=_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x4e')];var _0xa12666=_0x1b2f98===_0x80bc('0x4f')||_0x1b2f98==='*pause'?!![]:![];var _0x306675=[];var _0x178ae9;Promise[_0x80bc('0x50')]()['then'](function(){if(_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x51')]){_0x495a9b=validateChannel(_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x51')]);}if(!_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x52')]||!_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x52')][_0x80bc('0x53')]('globalStatus')){_0x1f2458[_0x80bc('0x4d')]['sort']=rta[_0x80bc('0x54')](_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x52')]);return;}var _0x5c5562=rta[_0x80bc('0x55')](_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x52')]);_0x1f2458[_0x80bc('0x4d')][_0x80bc('0x52')]=_0x5c5562[_0x80bc('0x56')][_0x80bc('0x57')](',');_0x25d398=_0x5c5562[_0x80bc('0x58')];})['then'](function(){if(!_0xf58cb3){return[];}return rta[_0x80bc('0x59')](_0xf58cb3,_0x495a9b);})[_0x80bc('0x14')](function(_0x322f9b){_0x306675=_0x322f9b;return rta['getRealtimeAgents']();})['then'](function(_0x13da2f){_0x6f914d=_0x13da2f[_0x80bc('0x5a')];if((!_0x1b2f98||_0xa12666)&&!_0x25d398){return _0x306675;}if(_0x25d398&&!_0x1b2f98){return rta[_0x80bc('0x5b')](_0x6f914d,_0x306675,_0x25d398);}else{return rta['getAgentIdsByStatus'](_0x6f914d,_0x306675,_0x1b2f98);}})[_0x80bc('0x14')](function(_0x1b0005){_0x306675=_0x1b0005;var _0x240d15=![];if(_0x306675['length']===0x0){if(_0xf58cb3||_0x1b2f98){_0x240d15=!![];}if(_0xa12666){_0x240d15=![];}}if(_0x240d15){return _0x51b5c9;}var _0xa44a1b=_['map'](db['User'][_0x80bc('0x5c')],function(_0x2710cf){return{'name':_0x2710cf[_0x80bc('0x5d')],'type':_0x2710cf['type'][_0x80bc('0x5e')]};});_0x1f2458[_0x80bc('0x4d')]['role']=_0x80bc('0x5f');_0x1f2458['query'][_0x80bc('0x43')]=!![];_0x34ac39=qs[_0x80bc('0x60')](_0xa44a1b,_0x1f2458);_0x34ac39[_0x80bc('0x61')]=!![];var _0x5a81e2=[];if(_0x306675[_0x80bc('0x3c')]>0x0){_0x5a81e2[_0x80bc('0x22')]({'id':{'$in':_0x306675}});if(_0x25d398&&!_0x1b2f98){_0x178ae9=[db[_0x80bc('0x62')][_0x80bc('0x63')](_0x80bc('0x64')+_0x306675+')')];_0x34ac39[_0x80bc('0x58')]=_0x178ae9;}}if(_0xa12666){_0x14d4e9['forEach'](function(_0x40a864){var _0x5a6bfe=!![];if(_0x1b2f98===_0x80bc('0x65')&&_0x495a9b!==_0x40a864){_0x5a6bfe=![];}_0x5a81e2[_0x80bc('0x22')]({[_0x40a864+_0x80bc('0x45')]:_0x5a6bfe});});if(_0xf701f5){_0x5a81e2[_0x80bc('0x22')]({'pauseType':_0xf701f5});}}else if(_0x1b2f98){_0x14d4e9[_0x80bc('0x66')](function(_0x19c612){_0x5a81e2['push']({[_0x19c612+_0x80bc('0x45')]:![]});});}_0x34ac39['where']=_[_0x80bc('0x39')](_0x34ac39[_0x80bc('0x67')],{'$and':_0x5a81e2});if(_0x1f2458[_0x80bc('0x68')]['role']===_0x80bc('0x68')){var _0x4c2ecd={'params':{'id':_0x1f2458['user'][_0x80bc('0x69')]},'query':{'section':_0x80bc('0x6a'),'role':_0x80bc('0x5f'),'online':!![],'raw':!![],'ids':_0x306675,'customSorting':_0x178ae9}};if(_0xa12666){_0x4c2ecd[_0x80bc('0x4d')][_0x80bc('0x6b')]=_0x5a81e2;}_0x4c2ecd[_0x80bc('0x4d')]=Object[_0x80bc('0x6c')](_0x4c2ecd[_0x80bc('0x4d')],_0x1f2458[_0x80bc('0x4d')]);delete _0x4c2ecd[_0x80bc('0x4d')]['id'];return db[_0x80bc('0x6d')][_0x80bc('0x6e')](_0x4c2ecd);}return db[_0x80bc('0x44')][_0x80bc('0x6f')](_0x34ac39);})['then'](function(_0x5a5b74){_0x51b5c9[_0x80bc('0xb')]=_0x5a5b74['count'];_0x28d906=_0x5a5b74[_0x80bc('0x5a')];return _0x28d906['map'](function(_0x227fa4){var _0x2c02ad=_['find'](_0x6f914d,['id',_0x227fa4['id']]);if(_0x2c02ad){var _0x33c8a7=rta[_0x80bc('0x70')](_0x2c02ad);_[_0x80bc('0x39')](_0x227fa4,_0x33c8a7);}_0x227fa4[_0x80bc('0x71')]=rta[_0x80bc('0x72')](_0x227fa4);if(_0x227fa4['globalStatus']['includes'](_0x80bc('0x4f'))){_0x14d4e9['forEach'](function(_0x2e64bf){if(_0x227fa4[_0x2e64bf+_0x80bc('0x45')]){_0x227fa4[_0x2e64bf+_0x80bc('0x73')]=_0x80bc('0x4f');}});}return _0x227fa4;});})[_0x80bc('0x14')](function(_0x4feedb){if(!_0x25d398||_0x178ae9){return _0x4feedb;}return rta[_0x80bc('0x74')](_0x4feedb,_0x25d398);})[_0x80bc('0x14')](function(_0x343f22){_0x51b5c9[_0x80bc('0x5a')]=_0x343f22;return _0x51b5c9;})['then'](respondWithFilteredResult(_0x50e144,_0x34ac39))[_0x80bc('0x18')](handleError(_0x50e144,null));};exports['getQueues']=function(_0x35e32b,_0x562d8e){var _0x416033={'count':0x0,'rows':[]},_0x52c41b={},_0x49a1e4,_0x192fd7,_0x5c0411,_0x17dfb5,_0x211190;Promise[_0x80bc('0x50')]()[_0x80bc('0x14')](function(){if(_0x35e32b[_0x80bc('0x4d')][_0x80bc('0x51')])_0x49a1e4=validateChannel(_0x35e32b[_0x80bc('0x4d')][_0x80bc('0x51')]);var _0x2ca841=_[_0x80bc('0x13')](_0x49a1e4)+_0x80bc('0x75');var _0x13958d=_[_0x80bc('0x33')](db[_0x2ca841][_0x80bc('0x5c')],function(_0x503fb2){return{'name':_0x503fb2['fieldName'],'type':_0x503fb2[_0x80bc('0x76')][_0x80bc('0x5e')]};});_0x52c41b=qs[_0x80bc('0x60')](_0x13958d,_0x35e32b);if(_0x35e32b[_0x80bc('0x68')][_0x80bc('0x77')]===_0x80bc('0x68')){var _0x5dd9b4={'params':{'id':_0x35e32b[_0x80bc('0x68')][_0x80bc('0x69')]},'query':{'section':_0x49a1e4===_0x80bc('0x20')&&_0x35e32b['query'][_0x80bc('0x76')]===_0x80bc('0x21')?_0x80bc('0x78'):_[_0x80bc('0x13')](_0x49a1e4)+_0x80bc('0x79'),'type':_0x35e32b[_0x80bc('0x4d')][_0x80bc('0x76')],'nolimit':!![],'sort':_0x80bc('0x10'),'filter':_0x35e32b[_0x80bc('0x4d')][_0x80bc('0x3a')]}};return db[_0x80bc('0x6d')]['getResources'](_0x5dd9b4);}return db[_0x2ca841][_0x80bc('0x6f')](_0x52c41b);})[_0x80bc('0x14')](function(_0x54f085){_0x416033['count']=_0x54f085[_0x80bc('0xb')];_0x192fd7=_0x54f085['rows'];return getRealtimeQueues(_0x35e32b,_0x49a1e4);})['then'](function(_0x5522b4){_0x17dfb5=_0x5522b4['rows'];return rta[_0x80bc('0x7a')]();})['then'](function(_0x43db6e){_0x5c0411=_0x43db6e['rows'];if(_0x49a1e4!=_0x80bc('0x20'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0xaf09f0){_0x211190=_0xaf09f0?_0xaf09f0['rows']:[];return initializeQueues(_0x192fd7,_0x17dfb5,_0x49a1e4,_0x35e32b['query'][_0x80bc('0x76')]);})[_0x80bc('0x14')](function(_0x50d613){var _0x1b39bd=_0x50d613[_0x80bc('0x33')](function(_0x4bb29a){if(_0x49a1e4===_0x80bc('0x20'))return getVoiceQueueAgents(_0x4bb29a,_0x192fd7,_0x5c0411,_0x211190);else return getQueueAgents(_0x4bb29a,_0x5c0411,_0x49a1e4);});return Promise[_0x80bc('0x7b')](_0x1b39bd);})['then'](function(_0x4fefbc){_0x416033['rows']=_0x4fefbc;return _0x416033;})[_0x80bc('0x14')](respondWithFilteredResult(_0x562d8e,_0x52c41b))['catch'](handleError(_0x562d8e,null));};
\ No newline at end of file
+var _0x2b62=['rawAttributes','fieldName','type','role','agent','getOptions','raw','sequelize','FIELD(id,','forEach','where','user','userProfileId','extraQueryConditions','assign','UserProfile','getResources','User','filterAgentAttributes','getAgentStatus','Status','getQueues','startCase','filter','findAndCountAll','all','lodash','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','Content-Range','json','error','stack','name','voice','request','Queues','then','format','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','result','loggedIn','available','waiting','talking','paused','outbound','pTalking','originated','message','dialActive','startPredictive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','busy','find','merge','pick','queue','length','some','connectedlinenum','internal','toString','getMembers','UserId','accountcode','online','voiceStatus','agents','push','Queue','Pause','getChannels','includes','toLowerCase','getAgents','query','globalQueueFilter','globalStatusFilter','pause','*pause','resolve','channel','sort','globalStatus','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map'];(function(_0x2de598,_0x1de96d){var _0x5f4564=function(_0x474dd3){while(--_0x474dd3){_0x2de598['push'](_0x2de598['shift']());}};_0x5f4564(++_0x1de96d);}(_0x2b62,0x170));var _0x22b6=function(_0x39f43c,_0x577bed){_0x39f43c=_0x39f43c-0x0;var _0x164132=_0x2b62[_0x39f43c];return _0x164132;};'use strict';var util=require('util');var _=require(_0x22b6('0x0'));var jayson=require('jayson/promise');var rta=require('../../components/realtime/agents');var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x22b6('0x1'));var db=require(_0x22b6('0x2'))['db'];var amiClient=jayson[_0x22b6('0x3')][_0x22b6('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0x22b6('0x4')]({'port':0x232c});function respondWithFilteredResult(_0xc632e1,_0x5257a7){return function(_0x4951dc){if(_0x4951dc){var _0x2bf219=typeof _0x5257a7[_0x22b6('0x5')]===_0x22b6('0x6')&&typeof _0x5257a7['limit']===_0x22b6('0x6');var _0x24b9d5=_0x4951dc[_0x22b6('0x7')];var _0x5e48b6=_0x2bf219?0x0:_0x5257a7[_0x22b6('0x5')];var _0x45e4c9=_0x2bf219?_0x4951dc['count']:_0x5257a7[_0x22b6('0x5')]+_0x5257a7[_0x22b6('0x8')];var _0x12d9c5;if(_0x45e4c9>=_0x24b9d5){_0x45e4c9=_0x24b9d5;_0x12d9c5=0xc8;}else{_0x12d9c5=0xce;}_0xc632e1[_0x22b6('0x9')](_0x12d9c5);return _0xc632e1[_0x22b6('0xa')](_0x22b6('0xb'),_0x5e48b6+'-'+_0x45e4c9+'/'+_0x24b9d5)[_0x22b6('0xc')](_0x4951dc);}return null;};}function handleError(_0x576648,_0x2938d6){_0x2938d6=_0x2938d6||0x1f4;return function(_0x57b6c1){logger[_0x22b6('0xd')](_0x57b6c1[_0x22b6('0xe')]);if(_0x57b6c1[_0x22b6('0xf')]){delete _0x57b6c1[_0x22b6('0xf')];}_0x576648[_0x22b6('0x9')](_0x2938d6)['send'](_0x57b6c1);};}function getRealtimeQueues(_0x919f47,_0x4a127b){return new Promise(function(_0x298028,_0x565e4e){var _0x4b2717=_0x4a127b===_0x22b6('0x10')?amiClient:routingClient;return _0x4b2717[_0x22b6('0x11')](_['startCase'](_0x4a127b)+_0x22b6('0x12'),_0x919f47)[_0x22b6('0x13')](function(_0x5515ea){if(_0x5515ea[_0x22b6('0xd')])throw new Error(util[_0x22b6('0x14')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x4a127b));return _0x298028(_0x5515ea['result']);})[_0x22b6('0x15')](function(_0x46d61){_0x565e4e(_0x46d61);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x400782,_0x37c9f5){return amiClient[_0x22b6('0x11')](_0x22b6('0x16'),{})[_0x22b6('0x13')](function(_0x4b112d){if(_0x4b112d[_0x22b6('0xd')])throw new Error(_0x22b6('0x17'));return _0x400782(_0x4b112d[_0x22b6('0x18')]);})['catch'](function(_0x2ac6d8){_0x37c9f5(_0x2ac6d8);});});}function initializeQueues(_0x757a6a,_0x43bfff,_0x456c03,_0x10eff1){var _0x5bf077=[_0x22b6('0x19'),_0x22b6('0x1a'),_0x22b6('0x1b'),_0x22b6('0x1c'),_0x22b6('0x1d')];if(_0x456c03===_0x22b6('0x10')&&_0x10eff1===_0x22b6('0x1e')){_0x5bf077['push'](_0x22b6('0x1f'),_0x22b6('0x20'),_0x22b6('0x21'),_0x22b6('0x22'),'dialMethod','Trunk',_0x22b6('0x23'),'startProgressive',_0x22b6('0x24'),_0x22b6('0x25'),'erlangAbandonmentRate',_0x22b6('0x26'),'dialPredictiveInterval',_0x22b6('0x27'),_0x22b6('0x28'),_0x22b6('0x29'),'predictiveIntervalTotalCalls',_0x22b6('0x2a'),'predictiveIntervalDroppedCallsTimeout',_0x22b6('0x2b'),_0x22b6('0x2c'),_0x22b6('0x2d'));}return _0x757a6a['map'](function(_0x53572c){var _0x1452a5=_0x53572c[_0x22b6('0x2e')]({'plain':!![]});_0x1452a5['agents']=[];_0x1452a5[_0x22b6('0x1d')]=0x0;_0x1452a5['loggedInDb']=0x0;_0x1452a5[_0x22b6('0x19')]=0x0;_0x1452a5[_0x22b6('0x1a')]=0x0;_0x1452a5['waiting']=0x0;if(_0x456c03===_0x22b6('0x10')){_0x1452a5['talking']=0x0;_0x1452a5[_0x22b6('0x2f')]=0x0;if(_0x10eff1===_0x22b6('0x1e')){_0x1452a5[_0x22b6('0x1f')]=0x0;_0x1452a5[_0x22b6('0x20')]=0x0;}}var _0x170a4f=_[_0x22b6('0x30')](_0x43bfff,['id',_0x1452a5['id']]);if(_0x170a4f)_[_0x22b6('0x31')](_0x1452a5,_[_0x22b6('0x32')](_0x170a4f,_0x5bf077));return _0x1452a5;});}function updateAgentVoiceStatus(_0x1f8d73,_0x43e370,_0x78a4e9){var _0x27610b=_['filter'](_0x78a4e9,[_0x22b6('0x33'),_0x43e370[_0x22b6('0xf')]]);if(_0x27610b[_0x22b6('0x34')]===0x0)return _0x1f8d73['busy']=!![];if(_[_0x22b6('0x35')](_0x27610b,[_0x22b6('0x36'),_0x1f8d73[_0x22b6('0x37')][_0x22b6('0x38')]()]))return _0x1f8d73[_0x22b6('0x1c')]=!![];if(!_0x1f8d73['talking'])return _0x1f8d73[_0x22b6('0x2f')]=!![];}function getVoiceQueueAgents(_0x462806,_0x1d0512,_0x47b6aa,_0x50d11d){var _0x527a9d=_[_0x22b6('0x30')](_0x1d0512,['id',_0x462806['id']]);if(!_0x527a9d)return _0x462806;return _0x527a9d[_0x22b6('0x39')]({'raw':!![]})[_0x22b6('0x13')](function(_0x23b780){for(var _0x3c0ab5=0x0;_0x3c0ab5<_0x23b780[_0x22b6('0x34')];_0x3c0ab5++){var _0x1f0b70=_[_0x22b6('0x30')](_0x47b6aa,['id',_0x23b780[_0x3c0ab5][_0x22b6('0x3a')]]);if(!_0x1f0b70){_0x1f0b70={'id':_0x23b780[_0x3c0ab5][_0x22b6('0x3a')],'name':_0x23b780[_0x3c0ab5]['UserId'],'accountcode':'','online':![]};}var _0x338fe6={'id':_0x1f0b70['id'],'name':_0x1f0b70[_0x22b6('0xf')],'internal':_0x1f0b70[_0x22b6('0x3b')],'online':Boolean(_0x1f0b70[_0x22b6('0x3c')]),'paused':Boolean(_0x23b780[_0x3c0ab5][_0x22b6('0x1d')])};if(_0x1f0b70[_0x22b6('0x3d')]==='talking')updateAgentVoiceStatus(_0x338fe6,_0x462806,_0x50d11d);if(_0x338fe6[_0x22b6('0x3c')])_0x462806['loggedInDb']++;if(_0x338fe6[_0x22b6('0x2f')])_0x462806[_0x22b6('0x2f')]++;if(_0x338fe6[_0x22b6('0x1d')]&&!_0x338fe6[_0x22b6('0x2f')]&&!_0x338fe6[_0x22b6('0x1c')])_0x462806[_0x22b6('0x1d')]++;_0x462806[_0x22b6('0x3e')][_0x22b6('0x3f')](_0x338fe6);}return _0x462806;});}function getQueueAgents(_0x44bc56,_0x197659,_0x48625c){var _0x2ff321='User'+_['startCase'](_0x48625c)+_0x22b6('0x40');var _0xc8c169=_0x48625c+_0x22b6('0x41');return db[_0x2ff321]['findAll']({'where':{[_['startCase'](_0x48625c)+'QueueId']:_0x44bc56['id']},'raw':!![]})[_0x22b6('0x13')](function(_0x1caf8d){for(var _0x7f920e=0x0;_0x7f920e<_0x1caf8d['length'];_0x7f920e++){var _0x515439=_['find'](_0x197659,['id',_0x1caf8d[_0x7f920e][_0x22b6('0x3a')]]);if(!_0x515439){_0x515439={'id':_0x1caf8d[_0x7f920e][_0x22b6('0x3a')],'name':_0x1caf8d[_0x7f920e][_0x22b6('0x3a')],'online':![],['pauseField']:![]};}var _0x32ba7d={'id':_0x515439['id'],'name':_0x515439[_0x22b6('0xf')],'online':Boolean(_0x515439[_0x22b6('0x3c')]),'paused':Boolean(_0x515439[_0xc8c169])};if(_0x32ba7d[_0x22b6('0x3c')])_0x44bc56['loggedInDb']++;_0x44bc56[_0x22b6('0x3e')][_0x22b6('0x3f')](_0x32ba7d);}return _0x44bc56;});}function validateChannel(_0xdc88c9){var _0x1beb0a=utils[_0x22b6('0x42')]();if(!_[_0x22b6('0x43')](_0x1beb0a,_0xdc88c9['toLowerCase']()))throw new Error('Invalid\x20channel');return _0xdc88c9[_0x22b6('0x44')]();}exports[_0x22b6('0x45')]=function(_0x23f035,_0x243279){var _0x1e1a7b={'count':0x0,'rows':[]};var _0x49829a={};var _0x4ba32f;var _0x3003e1;var _0x41cd08;var _0x327ead;var _0x4530a9=utils[_0x22b6('0x42')]();var _0x1837f7=_0x23f035[_0x22b6('0x46')][_0x22b6('0x47')];var _0x425b71=_0x23f035[_0x22b6('0x46')][_0x22b6('0x48')];var _0x3952ce=_0x23f035[_0x22b6('0x46')]['pauseTypeFilter'];var _0x22aac4=_0x425b71===_0x22b6('0x49')||_0x425b71===_0x22b6('0x4a')?!![]:![];var _0x1935ae=[];var _0x5dc09e;Promise[_0x22b6('0x4b')]()[_0x22b6('0x13')](function(){if(_0x23f035[_0x22b6('0x46')][_0x22b6('0x4c')]){_0x4ba32f=validateChannel(_0x23f035[_0x22b6('0x46')][_0x22b6('0x4c')]);}if(!_0x23f035[_0x22b6('0x46')]['sort']||!_0x23f035[_0x22b6('0x46')][_0x22b6('0x4d')][_0x22b6('0x43')](_0x22b6('0x4e'))){_0x23f035[_0x22b6('0x46')][_0x22b6('0x4d')]=rta['validateSortParameter'](_0x23f035[_0x22b6('0x46')]['sort']);return;}var _0x272101=rta[_0x22b6('0x4f')](_0x23f035[_0x22b6('0x46')]['sort']);_0x23f035['query'][_0x22b6('0x4d')]=_0x272101[_0x22b6('0x50')]['join'](',');_0x3003e1=_0x272101[_0x22b6('0x51')];})[_0x22b6('0x13')](function(){if(!_0x1837f7){return[];}return rta[_0x22b6('0x52')](_0x1837f7,_0x4ba32f);})[_0x22b6('0x13')](function(_0x353cdb){_0x1935ae=_0x353cdb;return rta[_0x22b6('0x53')]();})[_0x22b6('0x13')](function(_0x122599){_0x327ead=_0x122599[_0x22b6('0x54')];if((!_0x425b71||_0x22aac4)&&!_0x3003e1){return _0x1935ae;}if(_0x3003e1&&!_0x425b71){return rta[_0x22b6('0x55')](_0x327ead,_0x1935ae,_0x3003e1);}else{return rta[_0x22b6('0x56')](_0x327ead,_0x1935ae,_0x425b71);}})[_0x22b6('0x13')](function(_0x1495be){_0x1935ae=_0x1495be;var _0x2174a9=![];if(_0x1935ae['length']===0x0){if(_0x1837f7||_0x425b71){_0x2174a9=!![];}if(_0x22aac4){_0x2174a9=![];}}if(_0x2174a9){return _0x1e1a7b;}var _0x816260=_[_0x22b6('0x57')](db['User'][_0x22b6('0x58')],function(_0x4993e8){return{'name':_0x4993e8[_0x22b6('0x59')],'type':_0x4993e8[_0x22b6('0x5a')]['key']};});_0x23f035[_0x22b6('0x46')][_0x22b6('0x5b')]=_0x22b6('0x5c');_0x23f035[_0x22b6('0x46')][_0x22b6('0x3c')]=!![];_0x49829a=qs[_0x22b6('0x5d')](_0x816260,_0x23f035);_0x49829a[_0x22b6('0x5e')]=!![];var _0x128aa0=[];if(_0x1935ae[_0x22b6('0x34')]>0x0){_0x128aa0[_0x22b6('0x3f')]({'id':{'$in':_0x1935ae}});if(_0x3003e1&&!_0x425b71){_0x5dc09e=[db[_0x22b6('0x5f')]['literal'](_0x22b6('0x60')+_0x1935ae+')')];_0x49829a['order']=_0x5dc09e;}}if(_0x22aac4){_0x4530a9[_0x22b6('0x61')](function(_0xbc2983){var _0x15c726=!![];if(_0x425b71==='*pause'&&_0x4ba32f!==_0xbc2983){_0x15c726=![];}_0x128aa0[_0x22b6('0x3f')]({[_0xbc2983+'Pause']:_0x15c726});});if(_0x3952ce){_0x128aa0[_0x22b6('0x3f')]({'pauseType':_0x3952ce});}}else if(_0x425b71){_0x4530a9[_0x22b6('0x61')](function(_0x5e6b36){_0x128aa0['push']({[_0x5e6b36+_0x22b6('0x41')]:![]});});}_0x49829a[_0x22b6('0x62')]=_[_0x22b6('0x31')](_0x49829a['where'],{'$and':_0x128aa0});if(_0x23f035[_0x22b6('0x63')]['role']===_0x22b6('0x63')){var _0xa852e1={'params':{'id':_0x23f035[_0x22b6('0x63')][_0x22b6('0x64')]},'query':{'section':'Agents','role':'agent','online':!![],'raw':!![],'ids':_0x1935ae,'customSorting':_0x5dc09e}};if(_0x22aac4){_0xa852e1[_0x22b6('0x46')][_0x22b6('0x65')]=_0x128aa0;}_0xa852e1[_0x22b6('0x46')]=Object[_0x22b6('0x66')](_0xa852e1[_0x22b6('0x46')],_0x23f035['query']);delete _0xa852e1[_0x22b6('0x46')]['id'];return db[_0x22b6('0x67')][_0x22b6('0x68')](_0xa852e1);}return db[_0x22b6('0x69')]['findAndCountAll'](_0x49829a);})[_0x22b6('0x13')](function(_0x574481){_0x1e1a7b[_0x22b6('0x7')]=_0x574481[_0x22b6('0x7')];_0x41cd08=_0x574481[_0x22b6('0x54')];return _0x41cd08['map'](function(_0xf1463a){var _0x3fa7fd=_[_0x22b6('0x30')](_0x327ead,['id',_0xf1463a['id']]);if(_0x3fa7fd){var _0x1de3fa=rta[_0x22b6('0x6a')](_0x3fa7fd);_[_0x22b6('0x31')](_0xf1463a,_0x1de3fa);}_0xf1463a[_0x22b6('0x4e')]=rta[_0x22b6('0x6b')](_0xf1463a);if(_0xf1463a[_0x22b6('0x4e')][_0x22b6('0x43')](_0x22b6('0x49'))){_0x4530a9['forEach'](function(_0x5c42f9){if(_0xf1463a[_0x5c42f9+_0x22b6('0x41')]){_0xf1463a[_0x5c42f9+_0x22b6('0x6c')]=_0x22b6('0x49');}});}return _0xf1463a;});})[_0x22b6('0x13')](function(_0x5eda53){if(!_0x3003e1||_0x5dc09e){return _0x5eda53;}return rta['sortAgentsByStatus'](_0x5eda53,_0x3003e1);})[_0x22b6('0x13')](function(_0x5b7856){_0x1e1a7b[_0x22b6('0x54')]=_0x5b7856;return _0x1e1a7b;})[_0x22b6('0x13')](respondWithFilteredResult(_0x243279,_0x49829a))['catch'](handleError(_0x243279,null));};exports[_0x22b6('0x6d')]=function(_0x40d666,_0x475058){var _0x78cb84={'count':0x0,'rows':[]},_0x5b0fdc={},_0x2e25d7,_0x795ee9,_0x3f886f,_0x276ebd,_0x3d12e9;Promise['resolve']()[_0x22b6('0x13')](function(){if(_0x40d666[_0x22b6('0x46')][_0x22b6('0x4c')])_0x2e25d7=validateChannel(_0x40d666[_0x22b6('0x46')][_0x22b6('0x4c')]);var _0x2279a4=_['startCase'](_0x2e25d7)+_0x22b6('0x40');var _0xca65fc=_[_0x22b6('0x57')](db[_0x2279a4][_0x22b6('0x58')],function(_0x39d32f){return{'name':_0x39d32f[_0x22b6('0x59')],'type':_0x39d32f['type']['key']};});_0x5b0fdc=qs['getOptions'](_0xca65fc,_0x40d666);if(_0x40d666['user']['role']==='user'){var _0x1f8d97={'params':{'id':_0x40d666[_0x22b6('0x63')]['userProfileId']},'query':{'section':_0x2e25d7===_0x22b6('0x10')&&_0x40d666['query'][_0x22b6('0x5a')]===_0x22b6('0x1e')?'QueueCampaigns':_[_0x22b6('0x6e')](_0x2e25d7)+_0x22b6('0x12'),'type':_0x40d666['query'][_0x22b6('0x5a')],'nolimit':!![],'sort':'name','filter':_0x40d666[_0x22b6('0x46')][_0x22b6('0x6f')]}};return db[_0x22b6('0x67')][_0x22b6('0x68')](_0x1f8d97);}return db[_0x2279a4][_0x22b6('0x70')](_0x5b0fdc);})[_0x22b6('0x13')](function(_0x24cab2){_0x78cb84['count']=_0x24cab2['count'];_0x795ee9=_0x24cab2[_0x22b6('0x54')];return getRealtimeQueues(_0x40d666,_0x2e25d7);})[_0x22b6('0x13')](function(_0x43791a){_0x276ebd=_0x43791a[_0x22b6('0x54')];return rta[_0x22b6('0x53')]();})[_0x22b6('0x13')](function(_0x593bb9){_0x3f886f=_0x593bb9[_0x22b6('0x54')];if(_0x2e25d7!=_0x22b6('0x10'))return;return getRealtimeVoiceQueueChannels();})[_0x22b6('0x13')](function(_0x2e6804){_0x3d12e9=_0x2e6804?_0x2e6804[_0x22b6('0x54')]:[];return initializeQueues(_0x795ee9,_0x276ebd,_0x2e25d7,_0x40d666['query'][_0x22b6('0x5a')]);})['then'](function(_0x4e78a8){var _0x3f17b6=_0x4e78a8['map'](function(_0x319e70){if(_0x2e25d7===_0x22b6('0x10'))return getVoiceQueueAgents(_0x319e70,_0x795ee9,_0x3f886f,_0x3d12e9);else return getQueueAgents(_0x319e70,_0x3f886f,_0x2e25d7);});return Promise[_0x22b6('0x71')](_0x3f17b6);})['then'](function(_0x3984b5){_0x78cb84['rows']=_0x3984b5;return _0x78cb84;})['then'](respondWithFilteredResult(_0x475058,_0x5b0fdc))[_0x22b6('0x15')](handleError(_0x475058,null));};
\ No newline at end of file
index 7414f5d..32b1874 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(_0x2cd944,_0x8ba004){var _0x39e44e=function(_0x3d60da){while(--_0x3d60da){_0x2cd944['push'](_0x2cd944['shift']());}};_0x39e44e(++_0x8ba004);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x4442cc,_0x4b8f77){var _0x5efbbe=function(_0x12de1a){while(--_0x12de1a){_0x4442cc['push'](_0x4442cc['shift']());}};_0x5efbbe(++_0x4b8f77);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index c1a49b5..5793ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e20=['STRING','sequelize','exports','INTEGER','DATE'];(function(_0xee9ce,_0x42c02b){var _0x10241e=function(_0x2fc6a5){while(--_0x2fc6a5){_0xee9ce['push'](_0xee9ce['shift']());}};_0x10241e(++_0x42c02b);}(_0x8e20,0x1af));var _0x08e2=function(_0x13c70c,_0x546b34){_0x13c70c=_0x13c70c-0x0;var _0x50f0f2=_0x8e20[_0x13c70c];return _0x50f0f2;};'use strict';var Sequelize=require(_0x08e2('0x0'));module[_0x08e2('0x1')]={'state':{'type':Sequelize[_0x08e2('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x08e2('0x3')]},'uniqueid':{'type':Sequelize[_0x08e2('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x08e2('0x3')]},'ringtime':{'type':Sequelize[_0x08e2('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x08e2('0x4')]},'campaigntype':{'type':Sequelize[_0x08e2('0x4')]},'membername':{'type':Sequelize[_0x08e2('0x4')]}};
\ No newline at end of file
+var _0xf8bb=['INTEGER','DATE','STRING','sequelize','exports'];(function(_0x47b8d9,_0x2fd2e0){var _0x48216f=function(_0x3f8421){while(--_0x3f8421){_0x47b8d9['push'](_0x47b8d9['shift']());}};_0x48216f(++_0x2fd2e0);}(_0xf8bb,0x111));var _0xbf8b=function(_0xc817e6,_0x2e1c5d){_0xc817e6=_0xc817e6-0x0;var _0xe29f93=_0xf8bb[_0xc817e6];return _0xe29f93;};'use strict';var Sequelize=require(_0xbf8b('0x0'));module[_0xbf8b('0x1')]={'state':{'type':Sequelize[_0xbf8b('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xbf8b('0x3')]},'uniqueid':{'type':Sequelize[_0xbf8b('0x4')]},'starttime':{'type':Sequelize[_0xbf8b('0x3')]},'responsetime':{'type':Sequelize[_0xbf8b('0x3')]},'ringtime':{'type':Sequelize[_0xbf8b('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xbf8b('0x4')]},'campaigntype':{'type':Sequelize[_0xbf8b('0x4')]},'membername':{'type':Sequelize[_0xbf8b('0x4')]}};
\ No newline at end of file
index a83ec61..fa7d67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7008=['./reportAgentPreview.attributes','exports','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x244097,_0x115e4e){var _0x6609c6=function(_0x1e97a7){while(--_0x1e97a7){_0x244097['push'](_0x244097['shift']());}};_0x6609c6(++_0x115e4e);}(_0x7008,0x197));var _0x8700=function(_0x323c15,_0x312d79){_0x323c15=_0x323c15-0x0;var _0x2fe95b=_0x7008[_0x323c15];return _0x2fe95b;};'use strict';var _=require(_0x8700('0x0'));var util=require(_0x8700('0x1'));var logger=require(_0x8700('0x2'))('api');var moment=require(_0x8700('0x3'));var BPromise=require(_0x8700('0x4'));var rp=require(_0x8700('0x5'));var fs=require('fs');var path=require(_0x8700('0x6'));var rimraf=require(_0x8700('0x7'));var config=require(_0x8700('0x8'));var attributes=require(_0x8700('0x9'));module[_0x8700('0xa')]=function(_0x4b7ab9,_0x141fe9){return _0x4b7ab9['define'](_0x8700('0xb'),attributes,{'tableName':_0x8700('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff39=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','util','../../config/logger'];(function(_0x1ee4d6,_0x26a81d){var _0x2cb60e=function(_0x4e3f31){while(--_0x4e3f31){_0x1ee4d6['push'](_0x1ee4d6['shift']());}};_0x2cb60e(++_0x26a81d);}(_0xff39,0xd0));var _0x9ff3=function(_0xf0cf28,_0x1a5fe2){_0xf0cf28=_0xf0cf28-0x0;var _0x2d367d=_0xff39[_0xf0cf28];return _0x2d367d;};'use strict';var _=require('lodash');var util=require(_0x9ff3('0x0'));var logger=require(_0x9ff3('0x1'))(_0x9ff3('0x2'));var moment=require(_0x9ff3('0x3'));var BPromise=require(_0x9ff3('0x4'));var rp=require(_0x9ff3('0x5'));var fs=require('fs');var path=require(_0x9ff3('0x6'));var rimraf=require(_0x9ff3('0x7'));var config=require(_0x9ff3('0x8'));var attributes=require(_0x9ff3('0x9'));module[_0x9ff3('0xa')]=function(_0x4fefdb,_0x28b815){return _0x4fefdb[_0x9ff3('0xb')](_0x9ff3('0xc'),attributes,{'tableName':_0x9ff3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7eecc0c..eaf6e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb524=['jayson/promise','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','stringify','util','moment','bluebird','../../config/logger','rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb524,0xcd));var _0x4b52=function(_0x768418,_0x2351a7){_0x768418=_0x768418-0x0;var _0x28ad2b=_0xb524[_0x768418];return _0x28ad2b;};'use strict';var _=require('lodash');var util=require(_0x4b52('0x0'));var moment=require(_0x4b52('0x1'));var BPromise=require(_0x4b52('0x2'));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(_0x4b52('0x3'))(_0x4b52('0x4'));var config=require('../../config/environment');var jayson=require(_0x4b52('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x59dce4,_0x8a8605,_0x113dc5){return new BPromise(function(_0x34e80e,_0x5aca5a){return client['request'](_0x59dce4,_0x113dc5)['then'](function(_0x17d971){logger['info'](_0x4b52('0x6'),_0x8a8605,'request\x20sent');logger[_0x4b52('0x7')](_0x4b52('0x8'),_0x8a8605,_0x4b52('0x9'),JSON['stringify'](_0x17d971));if(_0x17d971['error']){if(_0x17d971['error'][_0x4b52('0xa')]===0x1f4){logger['error'](_0x4b52('0x6'),_0x8a8605,_0x17d971[_0x4b52('0xb')]['message']);return _0x5aca5a(_0x17d971['error'][_0x4b52('0xc')]);}logger[_0x4b52('0xb')](_0x4b52('0x6'),_0x8a8605,_0x17d971['error']['message']);return _0x34e80e(_0x17d971[_0x4b52('0xb')][_0x4b52('0xc')]);}else{logger['info'](_0x4b52('0x6'),_0x8a8605,'request\x20sent');_0x34e80e(_0x17d971['result'][_0x4b52('0xc')]);}})[_0x4b52('0xd')](function(_0x1f13a0){logger[_0x4b52('0xb')](_0x4b52('0x6'),_0x8a8605,_0x1f13a0);_0x5aca5a(_0x1f13a0);});});}exports['CreateReportAgentPreview']=function(_0x48ca15){var _0x1ede7e=this;return new Promise(function(_0x448420,_0x3292a0){return db[_0x4b52('0xe')][_0x4b52('0xf')](_0x48ca15[_0x4b52('0x10')],{'raw':_0x48ca15[_0x4b52('0x11')]?_0x48ca15['options'][_0x4b52('0x12')]===undefined?!![]:![]:!![]})['then'](function(_0x5e1412){logger['info'](_0x4b52('0x13'),_0x48ca15);logger[_0x4b52('0x7')](_0x4b52('0x13'),_0x48ca15,JSON[_0x4b52('0x14')](_0x5e1412));_0x448420(_0x5e1412);})['catch'](function(_0xf9638b){logger['error'](_0x4b52('0x13'),_0xf9638b[_0x4b52('0xc')],_0x48ca15);_0x3292a0(_0x1ede7e[_0x4b52('0xb')](0x1f4,_0xf9638b[_0x4b52('0xc')]));});});};
\ No newline at end of file
+var _0x72b7=['request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','create','body','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x350e6f,_0x2d40f2){var _0x24e3de=function(_0x3ce74b){while(--_0x3ce74b){_0x350e6f['push'](_0x350e6f['shift']());}};_0x24e3de(++_0x2d40f2);}(_0x72b7,0xad));var _0x772b=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x72b7[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x772b('0x0'));var util=require(_0x772b('0x1'));var moment=require(_0x772b('0x2'));var BPromise=require(_0x772b('0x3'));var rs=require(_0x772b('0x4'));var fs=require('fs');var Redis=require(_0x772b('0x5'));var db=require(_0x772b('0x6'))['db'];var utils=require(_0x772b('0x7'));var logger=require(_0x772b('0x8'))(_0x772b('0x9'));var config=require('../../config/environment');var jayson=require(_0x772b('0xa'));var client=jayson[_0x772b('0xb')][_0x772b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3037c0,_0x5c95dd,_0x5de313){return new BPromise(function(_0x829b6c,_0x34902f){return client[_0x772b('0xd')](_0x3037c0,_0x5de313)[_0x772b('0xe')](function(_0x45353e){logger['info'](_0x772b('0xf'),_0x5c95dd,_0x772b('0x10'));logger[_0x772b('0x11')](_0x772b('0x12'),_0x5c95dd,_0x772b('0x10'),JSON[_0x772b('0x13')](_0x45353e));if(_0x45353e['error']){if(_0x45353e[_0x772b('0x14')][_0x772b('0x15')]===0x1f4){logger['error'](_0x772b('0xf'),_0x5c95dd,_0x45353e['error'][_0x772b('0x16')]);return _0x34902f(_0x45353e[_0x772b('0x14')]['message']);}logger[_0x772b('0x14')](_0x772b('0xf'),_0x5c95dd,_0x45353e[_0x772b('0x14')][_0x772b('0x16')]);return _0x829b6c(_0x45353e[_0x772b('0x14')][_0x772b('0x16')]);}else{logger['info'](_0x772b('0xf'),_0x5c95dd,_0x772b('0x10'));_0x829b6c(_0x45353e[_0x772b('0x17')][_0x772b('0x16')]);}})[_0x772b('0x18')](function(_0x2f4148){logger['error'](_0x772b('0xf'),_0x5c95dd,_0x2f4148);_0x34902f(_0x2f4148);});});}exports[_0x772b('0x19')]=function(_0x10d64e){var _0x43034c=this;return new Promise(function(_0x1e4040,_0x49ef60){return db['ReportAgentPreview'][_0x772b('0x1a')](_0x10d64e[_0x772b('0x1b')],{'raw':_0x10d64e['options']?_0x10d64e[_0x772b('0x1c')][_0x772b('0x1d')]===undefined?!![]:![]:!![]})[_0x772b('0xe')](function(_0x3301c7){logger[_0x772b('0x1e')](_0x772b('0x19'),_0x10d64e);logger['debug']('CreateReportAgentPreview',_0x10d64e,JSON[_0x772b('0x13')](_0x3301c7));_0x1e4040(_0x3301c7);})['catch'](function(_0x18b8bd){logger[_0x772b('0x14')]('CreateReportAgentPreview',_0x18b8bd['message'],_0x10d64e);_0x49ef60(_0x43034c[_0x772b('0x14')](0x1f4,_0x18b8bd['message']));});});};
\ No newline at end of file
index 9748eef..76bd939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcec9=['mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','showSmsQueues','showWhatsappQueues','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','isAuthenticated','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agentCapacity','/telephones','/trunks','/campaigns','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify'];(function(_0x38ac0c,_0x5b11ec){var _0x173e56=function(_0x5bd697){while(--_0x5bd697){_0x38ac0c['push'](_0x38ac0c['shift']());}};_0x173e56(++_0x5b11ec);}(_0xcec9,0x164));var _0x9cec=function(_0x5bd5a3,_0x157c56){_0x5bd5a3=_0x5bd5a3-0x0;var _0x459ba7=_0xcec9[_0x5bd5a3];return _0x459ba7;};'use strict';var multer=require(_0x9cec('0x0'));var util=require(_0x9cec('0x1'));var path=require(_0x9cec('0x2'));var express=require(_0x9cec('0x3'));var router=express[_0x9cec('0x4')]();var auth=require(_0x9cec('0x5'));var controller=require(_0x9cec('0x6'));router[_0x9cec('0x7')]('/voice/channels',auth['isAuthenticated'](),controller[_0x9cec('0x8')]);router[_0x9cec('0x7')]('/voice/channels/:uniqueid/mixmonitor',auth['isAuthenticated'](),controller[_0x9cec('0x9')]);router[_0x9cec('0x7')](_0x9cec('0xa'),auth['isAuthenticated'](),controller[_0x9cec('0xb')]);router[_0x9cec('0x7')](_0x9cec('0xc'),auth[_0x9cec('0xd')](),controller[_0x9cec('0xe')]);router[_0x9cec('0x7')](_0x9cec('0xf'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x10')]);router[_0x9cec('0x7')](_0x9cec('0x11'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x12')]);router['get'](_0x9cec('0x13'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x14')]);router[_0x9cec('0x7')](_0x9cec('0x15'),auth['isAuthenticated'](),controller[_0x9cec('0x16')]);router[_0x9cec('0x7')]('/sms/queues',auth[_0x9cec('0xd')](),controller[_0x9cec('0x17')]);router[_0x9cec('0x7')](_0x9cec('0x18'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x19')]);router[_0x9cec('0x7')](_0x9cec('0x1a'),auth['isAuthenticated'](),controller[_0x9cec('0x1b')]);router[_0x9cec('0x7')](_0x9cec('0x1c'),auth['isAuthenticated'](),controller[_0x9cec('0x1d')]);router[_0x9cec('0x7')](_0x9cec('0x1e'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x1f')]);router[_0x9cec('0x7')]('/voice/queues/channels/:uniqueid',auth['isAuthenticated'](),controller[_0x9cec('0x20')]);router['get'](_0x9cec('0x21'),auth[_0x9cec('0xd')](),controller['voiceQueuesChannelHangup']);router[_0x9cec('0x7')](_0x9cec('0x22'),auth[_0x9cec('0xd')](),controller['voiceQueuesChannelRedirect']);router[_0x9cec('0x7')](_0x9cec('0x23'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x24')]);router[_0x9cec('0x25')](_0x9cec('0x23'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x26')]);router[_0x9cec('0x7')](_0x9cec('0x27'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x28')]);router[_0x9cec('0x7')](_0x9cec('0x29'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x2a')]);router['get'](_0x9cec('0x2b'),auth[_0x9cec('0xd')](),controller['agents']);router[_0x9cec('0x25')]('/agents/:id/capacity',auth[_0x9cec('0xd')](),controller[_0x9cec('0x2c')]);router[_0x9cec('0x7')](_0x9cec('0x2d'),auth[_0x9cec('0xd')](),controller['telephones']);router['get'](_0x9cec('0x2e'),auth[_0x9cec('0xd')](),controller['trunks']);router['get'](_0x9cec('0x2f'),auth[_0x9cec('0xd')](),controller['campaigns']);router[_0x9cec('0x7')](_0x9cec('0x30'),auth[_0x9cec('0xd')](),controller['faxAccounts']);router[_0x9cec('0x7')](_0x9cec('0x31'),auth[_0x9cec('0xd')](),controller['chatQueuesWaitingInteractions']);router[_0x9cec('0x7')](_0x9cec('0x32'),auth['isAuthenticated'](),controller[_0x9cec('0x33')]);router[_0x9cec('0x7')](_0x9cec('0x34'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x35')]);router[_0x9cec('0x7')]('/openchannel/queues/:id/waitinginteractions',auth['isAuthenticated'](),controller[_0x9cec('0x36')]);router['get'](_0x9cec('0x37'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x38')]);router['get'](_0x9cec('0x39'),auth['isAuthenticated'](),controller[_0x9cec('0x3a')]);router[_0x9cec('0x7')](_0x9cec('0x3b'),auth['isAuthenticated'](),controller[_0x9cec('0x3c')]);router[_0x9cec('0x3d')](_0x9cec('0x3e'),auth['isAuthenticated'](),controller[_0x9cec('0x3f')](_0x9cec('0x40')));router[_0x9cec('0x7')](_0x9cec('0x41'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x42')]);router[_0x9cec('0x3d')](_0x9cec('0x43'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x3f')](_0x9cec('0x44')));router[_0x9cec('0x7')](_0x9cec('0x45'),auth['isAuthenticated'](),controller['showChatQueues']);router['post'](_0x9cec('0x46'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x3f')](_0x9cec('0x47')));router['get'](_0x9cec('0x48'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x49')]);router['post'](_0x9cec('0x4a'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x3f')](_0x9cec('0x4b')));router['get']('/openchannel/queues/:id',auth[_0x9cec('0xd')](),controller['showOpenchannelQueues']);router['post'](_0x9cec('0x4c'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x3f')](_0x9cec('0x4d')));router[_0x9cec('0x3d')](_0x9cec('0x4e'),auth[_0x9cec('0xd')](),controller[_0x9cec('0x3f')](_0x9cec('0x4f')));router[_0x9cec('0x7')]('/sms/queues/:id',auth[_0x9cec('0xd')](),controller[_0x9cec('0x50')]);router[_0x9cec('0x7')]('/whatsapp/queues/:id',auth[_0x9cec('0xd')](),controller[_0x9cec('0x51')]);router[_0x9cec('0x3d')]('/agents/:id/notify',auth[_0x9cec('0xd')](),controller[_0x9cec('0x52')]);module[_0x9cec('0x53')]=router;
\ No newline at end of file
+var _0x2ff2=['trunks','/campaigns','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','post','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','multer','util','express','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','telephones','/trunks'];(function(_0x400635,_0x49a764){var _0x5b0c61=function(_0x2cb18a){while(--_0x2cb18a){_0x400635['push'](_0x400635['shift']());}};_0x5b0c61(++_0x49a764);}(_0x2ff2,0x100));var _0x22ff=function(_0x5b5f97,_0x46b15e){_0x5b5f97=_0x5b5f97-0x0;var _0x2f6001=_0x2ff2[_0x5b5f97];return _0x2f6001;};'use strict';var multer=require(_0x22ff('0x0'));var util=require(_0x22ff('0x1'));var path=require('path');var express=require(_0x22ff('0x2'));var router=express[_0x22ff('0x3')]();var auth=require('../../components/auth/service');var controller=require(_0x22ff('0x4'));router[_0x22ff('0x5')]('/voice/channels',auth[_0x22ff('0x6')](),controller[_0x22ff('0x7')]);router[_0x22ff('0x5')](_0x22ff('0x8'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x9')]);router[_0x22ff('0x5')](_0x22ff('0xa'),auth[_0x22ff('0x6')](),controller[_0x22ff('0xb')]);router[_0x22ff('0x5')](_0x22ff('0xc'),auth[_0x22ff('0x6')](),controller[_0x22ff('0xd')]);router[_0x22ff('0x5')]('/chat/queues',auth[_0x22ff('0x6')](),controller[_0x22ff('0xe')]);router['get'](_0x22ff('0xf'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x10')]);router[_0x22ff('0x5')]('/mail/accounts',auth['isAuthenticated'](),controller[_0x22ff('0x11')]);router['get'](_0x22ff('0x12'),auth['isAuthenticated'](),controller[_0x22ff('0x13')]);router[_0x22ff('0x5')](_0x22ff('0x14'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x15')]);router['get'](_0x22ff('0x16'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x17')]);router[_0x22ff('0x5')]('/fax/queues',auth['isAuthenticated'](),controller[_0x22ff('0x18')]);router[_0x22ff('0x5')]('/voice/queues/preview/:id',auth[_0x22ff('0x6')](),controller[_0x22ff('0x19')]);router[_0x22ff('0x5')](_0x22ff('0x1a'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x1b')]);router[_0x22ff('0x5')](_0x22ff('0x1c'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x1d')]);router[_0x22ff('0x5')](_0x22ff('0x1e'),auth[_0x22ff('0x6')](),controller['voiceQueuesChannelHangup']);router[_0x22ff('0x5')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x22ff('0x6')](),controller[_0x22ff('0x1f')]);router[_0x22ff('0x5')](_0x22ff('0x20'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x21')]);router[_0x22ff('0x22')](_0x22ff('0x20'),auth['isAuthenticated'](),controller[_0x22ff('0x23')]);router['get'](_0x22ff('0x24'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x25')]);router['get'](_0x22ff('0x26'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x27')]);router[_0x22ff('0x5')](_0x22ff('0x28'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x29')]);router['put']('/agents/:id/capacity',auth['isAuthenticated'](),controller['agentCapacity']);router[_0x22ff('0x5')]('/telephones',auth[_0x22ff('0x6')](),controller[_0x22ff('0x2a')]);router[_0x22ff('0x5')](_0x22ff('0x2b'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x2c')]);router[_0x22ff('0x5')](_0x22ff('0x2d'),auth[_0x22ff('0x6')](),controller['campaigns']);router[_0x22ff('0x5')]('/fax/accounts',auth[_0x22ff('0x6')](),controller['faxAccounts']);router[_0x22ff('0x5')]('/chat/queues/waitinginteractions',auth[_0x22ff('0x6')](),controller[_0x22ff('0x2e')]);router[_0x22ff('0x5')](_0x22ff('0x2f'),auth['isAuthenticated'](),controller[_0x22ff('0x30')]);router[_0x22ff('0x5')](_0x22ff('0x31'),auth['isAuthenticated'](),controller[_0x22ff('0x32')]);router[_0x22ff('0x5')](_0x22ff('0x33'),auth['isAuthenticated'](),controller[_0x22ff('0x34')]);router[_0x22ff('0x5')](_0x22ff('0x35'),auth[_0x22ff('0x6')](),controller['smsQueuesWaitingInteractions']);router[_0x22ff('0x5')](_0x22ff('0x36'),auth[_0x22ff('0x6')](),controller['whatsappQueuesWaitingInteractions']);router[_0x22ff('0x5')](_0x22ff('0x37'),auth[_0x22ff('0x6')](),controller['faxQueuesWaitingInteractions']);router['post']('/mail/queues/:id/notify',auth['isAuthenticated'](),controller[_0x22ff('0x38')](_0x22ff('0x39')));router[_0x22ff('0x5')](_0x22ff('0x3a'),auth['isAuthenticated'](),controller[_0x22ff('0x3b')]);router['post'](_0x22ff('0x3c'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x3d')));router[_0x22ff('0x5')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0x22ff('0x3e')]);router[_0x22ff('0x3f')](_0x22ff('0x40'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x41')));router[_0x22ff('0x5')]('/fax/queues/:id',auth['isAuthenticated'](),controller[_0x22ff('0x42')]);router['post'](_0x22ff('0x43'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')]('openchannel'));router[_0x22ff('0x5')]('/openchannel/queues/:id',auth[_0x22ff('0x6')](),controller['showOpenchannelQueues']);router[_0x22ff('0x3f')](_0x22ff('0x44'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x45')));router[_0x22ff('0x3f')](_0x22ff('0x46'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x38')](_0x22ff('0x47')));router[_0x22ff('0x5')]('/sms/queues/:id',auth[_0x22ff('0x6')](),controller['showSmsQueues']);router[_0x22ff('0x5')](_0x22ff('0x48'),auth[_0x22ff('0x6')](),controller['showWhatsappQueues']);router['post'](_0x22ff('0x49'),auth[_0x22ff('0x6')](),controller[_0x22ff('0x4a')]);module['exports']=router;
\ No newline at end of file
index 5eb986d..d28f7d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','uniq','value','indexOf','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','update','MessageId','InteractionId','From','QueueId','create','Start','queue','*,*,*,*','agentNotify','channel','Website','User','Agent\x20not\x20found','Message','\x20Message\x20not\x20found','agentTransferTimeout','bluebird','moment','../../config/logger','api','client','http','request','error','code','message','result','catch','stack','name','status','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','then','voiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','params','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','outboundChannels','agents','Agents','agentCapacity','user','interaction','hasOwnProperty','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','MemberReport','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','Trunks','campaigns','Campaigns','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions'];(function(_0x1c4651,_0x404598){var _0x179f88=function(_0x2de0dd){while(--_0x2de0dd){_0x1c4651['push'](_0x1c4651['shift']());}};_0x179f88(++_0x404598);}(_0x55ca,0x126));var _0xa55c=function(_0x3a19d4,_0x3f19a4){_0x3a19d4=_0x3a19d4-0x0;var _0x5b858b=_0x55ca[_0x3a19d4];return _0x5b858b;};'use strict';var BPromise=require(_0xa55c('0x0'));var moment=require(_0xa55c('0x1'));var _=require('lodash');var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0xa55c('0x2'))(_0xa55c('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0xa55c('0x4')][_0xa55c('0x5')]({'port':0x232a});var mailClient=jayson[_0xa55c('0x4')][_0xa55c('0x5')]({'port':0x232b});var routingClient=jayson[_0xa55c('0x4')][_0xa55c('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){var _0x291996=_0x2121fd?_0x2121fd:amiClient;return _0x291996[_0xa55c('0x6')](_0x36b623,_0x4d0624)['then'](function(_0x5849ad){if(_0x5849ad[_0xa55c('0x7')]){if(_0x5849ad[_0xa55c('0x7')][_0xa55c('0x8')]===0x1f4){return _0x57e069(_0x5849ad[_0xa55c('0x7')][_0xa55c('0x9')]);}return _0x2537f0(_0x5849ad[_0xa55c('0x7')][_0xa55c('0x9')]);}else{_0x2537f0(_0x5849ad[_0xa55c('0xa')]);}})[_0xa55c('0xb')](function(_0x15eec8){_0x57e069(_0x15eec8);});});}function respondWithResult(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xc8;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['status'](_0x59d84a)['json'](_0x2a35be);}return _0x5d47ff['sendStatus'](0x194);};}function handleError(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0x1f4;return function(_0x462cd6){logger[_0xa55c('0x7')](_0x462cd6[_0xa55c('0xc')]);if(_0x462cd6[_0xa55c('0xd')]){delete _0x462cd6['name'];}_0x18ee85[_0xa55c('0xe')](_0x3930e4)[_0xa55c('0xf')](_0x462cd6);};}function findById(_0x25934f){return function(_0x31e10d){if(!_[_0xa55c('0x10')](_0x25934f)&&!_[_0xa55c('0x10')](_0x31e10d)&&!_[_0xa55c('0x10')](_0x31e10d[_0xa55c('0x11')])){return _[_0xa55c('0x12')](_0x31e10d['rows'],function(_0x3d4c9e){return _0x3d4c9e['id']==_0x25934f;});}return null;};}exports[_0xa55c('0x13')]=function(_0x461284,_0x358b61){return respondWithRpcPromise(_0xa55c('0x14'),_0x461284[_0xa55c('0x15')])['then'](respondWithResult(_0x358b61,null))['catch'](handleError(_0x358b61,null));};exports[_0xa55c('0x16')]=function(_0x3776ac,_0xade4c4){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xa55c('0x17')](_0x3776ac[_0xa55c('0x15')],_0x3776ac['params']))[_0xa55c('0x18')](respondWithResult(_0xade4c4,null))[_0xa55c('0xb')](handleError(_0xade4c4,null));};exports[_0xa55c('0x19')]=function(_0x1965f1,_0x234372){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xa55c('0x17')](_0x1965f1['query'],_0x1965f1['params']))['then'](respondWithResult(_0x234372,null))[_0xa55c('0xb')](handleError(_0x234372,null));};exports['voiceQueues']=function(_0x3ecbe7,_0x190757){return respondWithRpcPromise(_0xa55c('0x1a'),_0x3ecbe7[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x190757,null))[_0xa55c('0xb')](handleError(_0x190757,null));};exports[_0xa55c('0x1b')]=function(_0x11e7f7,_0x192df2){return respondWithRpcPromise(_0xa55c('0x1a'),_0x11e7f7[_0xa55c('0x15')])['then'](findById(_0x11e7f7[_0xa55c('0x1c')]['id']))[_0xa55c('0x18')](respondWithResult(_0x192df2,null))[_0xa55c('0xb')](handleError(_0x192df2,null));};exports[_0xa55c('0x1d')]=function(_0x5d940d,_0x1377b0){return respondWithRpcPromise(_0xa55c('0x1e'),_[_0xa55c('0x17')](_0x5d940d[_0xa55c('0x1f')],_0x5d940d[_0xa55c('0x1c')]))[_0xa55c('0x18')](respondWithResult(_0x1377b0,null))['catch'](handleError(_0x1377b0,null));};exports[_0xa55c('0x20')]=function(_0x490b7d,_0x35c9c2){return respondWithRpcPromise(_0xa55c('0x21'),_[_0xa55c('0x17')](_0x490b7d[_0xa55c('0x15')],_0x490b7d['params']))[_0xa55c('0x18')](respondWithResult(_0x35c9c2,null))[_0xa55c('0xb')](handleError(_0x35c9c2,null));};exports[_0xa55c('0x22')]=function(_0x20da31,_0x10f4b7){return respondWithRpcPromise(_0xa55c('0x23'),_0x20da31[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x10f4b7,null))[_0xa55c('0xb')](handleError(_0x10f4b7,null));};exports[_0xa55c('0x24')]=function(_0x197099,_0x4eb7c4){return respondWithRpcPromise('VoiceQueuesChannel',_[_0xa55c('0x17')](_0x197099[_0xa55c('0x15')],_0x197099['params']))[_0xa55c('0x18')](respondWithResult(_0x4eb7c4,null))[_0xa55c('0xb')](handleError(_0x4eb7c4,null));};exports[_0xa55c('0x25')]=function(_0x1839ac,_0x30d4f8){return respondWithRpcPromise(_0xa55c('0x26'),_[_0xa55c('0x17')](_0x1839ac[_0xa55c('0x15')],_0x1839ac[_0xa55c('0x1c')]))['then'](respondWithResult(_0x30d4f8,null))['catch'](handleError(_0x30d4f8,null));};exports['voiceQueuesChannelRedirect']=function(_0x3fd75f,_0x18e00e){return respondWithRpcPromise(_0xa55c('0x27'),_['merge'](_0x3fd75f[_0xa55c('0x15')],_0x3fd75f['params']))[_0xa55c('0x18')](respondWithResult(_0x18e00e,null))['catch'](handleError(_0x18e00e,null));};exports[_0xa55c('0x28')]=function(_0x39267c,_0x3c0ec1){return respondWithRpcPromise('Outbound',_0x39267c[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x3c0ec1,null))['catch'](handleError(_0x3c0ec1,null));};exports[_0xa55c('0x29')]=function(_0x194e78,_0x4d9083){return respondWithRpcPromise('OutboundChannels',_0x194e78[_0xa55c('0x15')])['then'](respondWithResult(_0x4d9083,null))[_0xa55c('0xb')](handleError(_0x4d9083,null));};exports[_0xa55c('0x2a')]=function(_0x5427bf,_0x542d76){var _0x5e50b6;return respondWithRpcPromise('Agents',_0x5427bf[_0xa55c('0x15')])[_0xa55c('0x18')](function(_0x429336){_0x5e50b6=_0x429336;return respondWithRpcPromise(_0xa55c('0x2b'),_0x5427bf[_0xa55c('0x15')],routingClient);})['then'](function(_0x3d52d8){return _[_0xa55c('0x17')]({},_0x3d52d8,_0x5e50b6);})[_0xa55c('0x18')](respondWithResult(_0x542d76,null))[_0xa55c('0xb')](handleError(_0x542d76,null));};exports[_0xa55c('0x2c')]=function(_0x23cef5,_0x554620){if(_0x23cef5[_0xa55c('0x1f')]&&_0x23cef5['body']['interaction']&&_0x23cef5[_0xa55c('0x2d')]&&_0x23cef5[_0xa55c('0x2d')]['name']){for(var _0x2bd98b in _0x23cef5['body']['interaction']){if(_0x23cef5[_0xa55c('0x1f')][_0xa55c('0x2e')][_0xa55c('0x2f')](_0x2bd98b)){db['MemberReport'][_0xa55c('0x30')]({'where':{'channel':_0x2bd98b,'membername':_0x23cef5[_0xa55c('0x2d')]['name'],'type':_0xa55c('0x31'),'exitAt':null,'uniqueid':_0x23cef5['body'][_0xa55c('0x2e')][_0x2bd98b]&&_0x23cef5[_0xa55c('0x1f')]['interaction'][_0x2bd98b][_0xa55c('0x32')]?{'$notIn':_0x23cef5[_0xa55c('0x1f')]['interaction'][_0x2bd98b]}:{'$ne':null}}})[_0xa55c('0x18')](function(_0x187e09){var _0x204767=moment()['format'](_0xa55c('0x33'));for(var _0x582901=0x0,_0x2f9717=_0x187e09[_0xa55c('0x32')];_0x582901<_0x2f9717;_0x582901+=0x1){_0x187e09[_0x582901][_0xa55c('0x34')]({'exitAt':_0x204767});}});for(var _0x51d663=0x0;_0x51d663<_0x23cef5[_0xa55c('0x1f')][_0xa55c('0x2e')][_0x2bd98b]['length'];_0x51d663+=0x1){db[_0xa55c('0x35')][_0xa55c('0x36')]({'where':{'channel':_0x2bd98b,'membername':_0x23cef5['user'][_0xa55c('0xd')],'type':_0xa55c('0x31'),'uniqueid':_0x23cef5['body'][_0xa55c('0x2e')][_0x2bd98b][_0x51d663],'exitAt':null},'defaults':{'channel':_0x2bd98b,'membername':_0x23cef5[_0xa55c('0x2d')][_0xa55c('0xd')],'interface':_[_0xa55c('0x10')](_0x23cef5['user'][_0xa55c('0x37')])?util['format'](_0xa55c('0x38'),_0x23cef5[_0xa55c('0x2d')][_0xa55c('0xd')]):_0x23cef5['user'][_0xa55c('0x37')],'type':_0xa55c('0x31'),'enterAt':moment()['format'](_0xa55c('0x33')),'role':_0xa55c('0x39'),'internal':_0x23cef5[_0xa55c('0x2d')][_0xa55c('0x3a')],'uniqueid':_0x23cef5[_0xa55c('0x1f')][_0xa55c('0x2e')][_0x2bd98b][_0x51d663]}});}}}}return respondWithRpcPromise(_0xa55c('0x3b'),{'id':_0x23cef5[_0xa55c('0x1c')]['id'],'capacity':_0x23cef5[_0xa55c('0x1f')][_0xa55c('0x3c')]},routingClient)['then'](respondWithResult(_0x554620,null))[_0xa55c('0xb')](handleError(_0x554620,null));};exports[_0xa55c('0x3d')]=function(_0x216de8,_0x4f73b6){return respondWithRpcPromise(_0xa55c('0x3e'),_0x216de8[_0xa55c('0x15')])['then'](respondWithResult(_0x4f73b6,null))[_0xa55c('0xb')](handleError(_0x4f73b6,null));};exports['trunks']=function(_0x2b6a0e,_0x228df4){return respondWithRpcPromise(_0xa55c('0x3f'),_0x2b6a0e[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x228df4,null))['catch'](handleError(_0x228df4,null));};exports[_0xa55c('0x40')]=function(_0x4607ca,_0x4b85cc){return respondWithRpcPromise(_0xa55c('0x41'),_0x4607ca[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x4b85cc,null))[_0xa55c('0xb')](handleError(_0x4b85cc,null));};exports['chatQueues']=function(_0x4def35,_0x267965){return respondWithRpcPromise(_0xa55c('0x42'),_0x4def35[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x267965,null))['catch'](handleError(_0x267965,null));};exports[_0xa55c('0x43')]=function(_0x5ce463,_0x2742e4){return respondWithRpcPromise(_0xa55c('0x42'),_0x5ce463[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](findById(_0x5ce463[_0xa55c('0x1c')]['id']))['then'](respondWithResult(_0x2742e4,null))[_0xa55c('0xb')](handleError(_0x2742e4,null));};exports['mailQueues']=function(_0x23f67f,_0x157afe){return respondWithRpcPromise(_0xa55c('0x44'),_0x23f67f[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x157afe,null))[_0xa55c('0xb')](handleError(_0x157afe,null));};exports[_0xa55c('0x45')]=function(_0x53e2be,_0x450567){return respondWithRpcPromise(_0xa55c('0x44'),_0x53e2be[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](findById(_0x53e2be[_0xa55c('0x1c')]['id']))['then'](respondWithResult(_0x450567,null))[_0xa55c('0xb')](handleError(_0x450567,null));};exports[_0xa55c('0x46')]=function(_0x28bac4,_0x20e53c){return respondWithRpcPromise(_0xa55c('0x47'),_0x28bac4['query'],mailClient)[_0xa55c('0x18')](respondWithResult(_0x20e53c,null))[_0xa55c('0xb')](handleError(_0x20e53c,null));};exports[_0xa55c('0x48')]=function(_0x16d9b2,_0x3ba56d){return respondWithRpcPromise('OpenchannelQueues',_0x16d9b2[_0xa55c('0x15')],routingClient)['then'](respondWithResult(_0x3ba56d,null))[_0xa55c('0xb')](handleError(_0x3ba56d,null));};exports['showOpenchannelQueues']=function(_0x3495a7,_0x5a8897){return respondWithRpcPromise(_0xa55c('0x49'),_0x3495a7[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](findById(_0x3495a7[_0xa55c('0x1c')]['id']))[_0xa55c('0x18')](respondWithResult(_0x5a8897,null))[_0xa55c('0xb')](handleError(_0x5a8897,null));};exports[_0xa55c('0x4a')]=function(_0x2f2226,_0x14b515){return respondWithRpcPromise(_0xa55c('0x4b'),_0x2f2226['query'],routingClient)[_0xa55c('0x18')](respondWithResult(_0x14b515,null))[_0xa55c('0xb')](handleError(_0x14b515,null));};exports['showSmsQueues']=function(_0x18b928,_0x2b8b88){return respondWithRpcPromise(_0xa55c('0x4b'),_0x18b928[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](findById(_0x18b928[_0xa55c('0x1c')]['id']))[_0xa55c('0x18')](respondWithResult(_0x2b8b88,null))[_0xa55c('0xb')](handleError(_0x2b8b88,null));};exports['whatsappQueues']=function(_0x1dfaf7,_0x475131){return respondWithRpcPromise(_0xa55c('0x4c'),_0x1dfaf7[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x475131,null))[_0xa55c('0xb')](handleError(_0x475131,null));};exports[_0xa55c('0x4d')]=function(_0x4249c1,_0x25d5a1){return respondWithRpcPromise('WhatsappQueues',_0x4249c1[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](findById(_0x4249c1[_0xa55c('0x1c')]['id']))[_0xa55c('0x18')](respondWithResult(_0x25d5a1,null))[_0xa55c('0xb')](handleError(_0x25d5a1,null));};exports[_0xa55c('0x4e')]=function(_0x3ea755,_0x3606b2){return respondWithRpcPromise(_0xa55c('0x4f'),_0x3ea755[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x3606b2,null))['catch'](handleError(_0x3606b2,null));};exports[_0xa55c('0x50')]=function(_0x531eee,_0x1228a4){return respondWithRpcPromise(_0xa55c('0x4f'),_0x531eee[_0xa55c('0x15')],routingClient)['then'](findById(_0x531eee['params']['id']))[_0xa55c('0x18')](respondWithResult(_0x1228a4,null))[_0xa55c('0xb')](handleError(_0x1228a4,null));};exports[_0xa55c('0x51')]=function(_0x42529f,_0x4c7ee1){return respondWithRpcPromise(_0xa55c('0x52'),_0x42529f[_0xa55c('0x15')])[_0xa55c('0x18')](respondWithResult(_0x4c7ee1,null))[_0xa55c('0xb')](handleError(_0x4c7ee1,null));};exports[_0xa55c('0x53')]=function(_0x500968,_0x4b090c){return respondWithRpcPromise(_0xa55c('0x54'),_0x500968[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x4b090c,null))[_0xa55c('0xb')](handleError(_0x4b090c,null));};exports[_0xa55c('0x55')]=function(_0x4b2032,_0x14febc){return respondWithRpcPromise(_0xa55c('0x56'),_0x4b2032['query'],routingClient)[_0xa55c('0x18')](respondWithResult(_0x14febc,null))[_0xa55c('0xb')](handleError(_0x14febc,null));};exports[_0xa55c('0x57')]=function(_0x4dcb93,_0x1521d5){return respondWithRpcPromise(_0xa55c('0x58'),_0x4dcb93[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x1521d5,null))[_0xa55c('0xb')](handleError(_0x1521d5,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x25bd5b,_0x2e2cf6){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x25bd5b['query'],routingClient)[_0xa55c('0x18')](function(_0x4e1cbd){if(_0x25bd5b[_0xa55c('0x15')][_0xa55c('0x59')]!==undefined){var _0x2f13db=_(_0x4e1cbd[_0xa55c('0x11')])[_0xa55c('0x5a')]([_0x25bd5b[_0xa55c('0x15')][_0xa55c('0x59')],_0x25bd5b[_0xa55c('0x1c')]['id']])[_0xa55c('0x5b')]('queue_id')[_0xa55c('0x5c')]()[_0xa55c('0x5d')]();return _0x4e1cbd[_0xa55c('0x11')][_0xa55c('0x5a')](function(_0x4f0a26){return _0x2f13db[_0xa55c('0x5e')](_0x4f0a26[_0xa55c('0x5f')])>-0x1;});}else{return _0x4e1cbd[_0xa55c('0x11')][_0xa55c('0x5a')](function(_0x5d766e){return _0x5d766e['queue_id']===parseInt(_0x25bd5b[_0xa55c('0x1c')]['id']);});}})[_0xa55c('0x18')](respondWithResult(_0x2e2cf6,null))[_0xa55c('0xb')](handleError(_0x2e2cf6,null));};exports[_0xa55c('0x60')]=function(_0x5e87cb,_0x55ee0d){return respondWithRpcPromise(_0xa55c('0x61'),_0x5e87cb[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x55ee0d,null))[_0xa55c('0xb')](handleError(_0x55ee0d,null));};exports[_0xa55c('0x62')]=function(_0x346060,_0x239269){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x346060[_0xa55c('0x15')],routingClient)['then'](respondWithResult(_0x239269,null))[_0xa55c('0xb')](handleError(_0x239269,null));};exports['faxQueuesWaitingInteractions']=function(_0x36ded7,_0x313cdc){return respondWithRpcPromise(_0xa55c('0x63'),_0x36ded7[_0xa55c('0x15')],routingClient)[_0xa55c('0x18')](respondWithResult(_0x313cdc,null))[_0xa55c('0xb')](handleError(_0x313cdc,null));};exports[_0xa55c('0x64')]=function(_0x2c71ca){return function(_0x576a1b,_0x59414d){var _0x14cb74,_0x2948b1;var _0xc2ad5c=_[_0xa55c('0x65')](_0x2c71ca);var _0x1622cb=_0x2c71ca===_0xa55c('0x66')?'Website':_0xa55c('0x67');return db[_0xc2ad5c+_0xa55c('0x68')][_0xa55c('0x69')]({'raw':!![],'where':{'id':_0x576a1b[_0xa55c('0x1c')]['id']}})[_0xa55c('0x18')](function(_0x3b1cd7){if(_[_0xa55c('0x10')](_0x3b1cd7)){throw new Error(_0xc2ad5c+_0xa55c('0x6a'));}_0x14cb74=_0x3b1cd7;return db[_0xc2ad5c+'Message'][_0xa55c('0x69')]({'where':{'id':_0x576a1b[_0xa55c('0x1f')][_0xa55c('0x6b')]},'include':[{'model':db[_0xc2ad5c+_0xa55c('0x6c')],'as':_0xa55c('0x6c')},{'model':db[_0xc2ad5c+_0x1622cb],'as':'Account'}]});})[_0xa55c('0x18')](function(_0x2ab1f2){if(_['isNil'](_0x2ab1f2)){throw new Error(_0xc2ad5c+'\x20Message\x20not\x20found');}_0x2948b1=_0x2ab1f2;return _0x2ab1f2[_0xa55c('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa55c('0x18')](function(){var _0x5c2229={'uniqueid':_0x2c71ca+'.'+_0x2948b1['id']+'.'+_0x2948b1['Interaction']['id'],'FromUserId':_0x576a1b['user']['id'],'type':'queue'};_0x5c2229[_0xc2ad5c+_0xa55c('0x6e')]=_0x2948b1['id'];_0x5c2229[_0xc2ad5c+_0xa55c('0x6f')]=_0x2948b1[_0xa55c('0x6c')]['id'];_0x5c2229[_0xa55c('0x70')+_0xc2ad5c+_0x1622cb+'Id']=_0x2948b1[_0xa55c('0x67')]['id'];_0x5c2229['To'+_0xc2ad5c+_0xa55c('0x71')]=_0x14cb74['id'];return db[_0xc2ad5c+'TransferReport'][_0xa55c('0x72')](_0x5c2229);})[_0xa55c('0x18')](function(){return respondWithRpcPromise(_0xa55c('0x73'),{'channel':_0x2c71ca,'interaction':_0x2948b1[_0xa55c('0x6c')],'message':_0x2948b1,'account':_0x2948b1['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xa55c('0x74'),'appdata':_0x14cb74[_0xa55c('0xd')]+','+(_0x2948b1[_0xa55c('0x67')]['queueTransferTimeout']||0x12c),'interval':_0xa55c('0x75')}]},routingClient);})['then'](respondWithResult(_0x59414d,null))['catch'](handleError(_0x59414d,null));};};exports[_0xa55c('0x76')]=function(_0x413b45,_0x1e298d){var _0x249b0c,_0x2544c1;if(_[_0xa55c('0x10')](_0x413b45[_0xa55c('0x1f')]['channel'])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x71bd0d=_0x413b45[_0xa55c('0x1f')][_0xa55c('0x77')];var _0x1f4bc8=_[_0xa55c('0x65')](_0x71bd0d);var _0x2a0805=_0x71bd0d===_0xa55c('0x66')?_0xa55c('0x78'):_0xa55c('0x67');return db[_0xa55c('0x79')]['findOne']({'raw':!![],'where':{'id':_0x413b45[_0xa55c('0x1c')]['id'],'role':_0xa55c('0x39')}})['then'](function(_0xb9708){if(_['isNil'](_0xb9708)){throw new Error(_0xa55c('0x7a'));}_0x249b0c=_0xb9708;return db[_0x1f4bc8+_0xa55c('0x7b')][_0xa55c('0x69')]({'where':{'id':_0x413b45[_0xa55c('0x1f')][_0xa55c('0x6b')]},'include':[{'model':db[_0x1f4bc8+'Interaction'],'as':_0xa55c('0x6c')},{'model':db[_0x1f4bc8+_0x2a0805],'as':_0xa55c('0x67')}]});})[_0xa55c('0x18')](function(_0x376c1f){if(_[_0xa55c('0x10')](_0x376c1f)){throw new Error(_0x1f4bc8+_0xa55c('0x7c'));}_0x2544c1=_0x376c1f;return _0x376c1f[_0xa55c('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x49a307={'uniqueid':_0x71bd0d+'.'+_0x2544c1['id']+'.'+_0x2544c1['Interaction']['id'],'FromUserId':_0x413b45[_0xa55c('0x2d')]['id'],'type':'queue','ToUserId':_0x249b0c['id']};_0x49a307[_0x1f4bc8+_0xa55c('0x6e')]=_0x2544c1['id'];_0x49a307[_0x1f4bc8+_0xa55c('0x6f')]=_0x2544c1[_0xa55c('0x6c')]['id'];_0x49a307[_0xa55c('0x70')+_0x1f4bc8+_0x2a0805+'Id']=_0x2544c1[_0xa55c('0x67')]['id'];return db[_0x1f4bc8+'TransferReport'][_0xa55c('0x72')](_0x49a307);})['then'](function(){return respondWithRpcPromise(_0xa55c('0x73'),{'channel':_0x71bd0d,'interaction':_0x2544c1[_0xa55c('0x6c')],'message':_0x2544c1,'account':_0x2544c1[_0xa55c('0x67')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa55c('0x39'),'appdata':_0x249b0c['name']+','+(_0x2544c1[_0xa55c('0x67')][_0xa55c('0x7d')]||0x12c),'interval':_0xa55c('0x75')}]},routingClient);})[_0xa55c('0x18')](respondWithResult(_0x1e298d,null))[_0xa55c('0xb')](handleError(_0x1e298d,null));};
\ No newline at end of file
+var _0x24ca=['telephones','Telephones','trunks','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Interaction','update','queue','MessageId','InteractionId','From','QueueId','Start','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found','TransferReport','create','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','api','jayson/promise','client','http','request','error','code','message','result','json','sendStatus','stack','status','send','isNil','rows','voiceChannels','VoiceChannels','query','then','VoiceChannelMixMonitor','merge','params','catch','VoiceQueues','showVoiceQueues','updateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','name','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity'];(function(_0x4749c9,_0x308f6e){var _0x5c973d=function(_0x20e495){while(--_0x20e495){_0x4749c9['push'](_0x4749c9['shift']());}};_0x5c973d(++_0x308f6e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0x24ca[_0x420b24];return _0x4da552;};'use strict';var BPromise=require(_0xa24c('0x0'));var moment=require('moment');var _=require(_0xa24c('0x1'));var util=require(_0xa24c('0x2'));var db=require(_0xa24c('0x3'))['db'];var logger=require('../../config/logger')(_0xa24c('0x4'));var jayson=require(_0xa24c('0x5'));var amiClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232a});var mailClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232b});var routingClient=jayson[_0xa24c('0x6')][_0xa24c('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x2dd348,_0x257264,_0x9a5013){return new BPromise(function(_0x481196,_0x42d89c){var _0x3a5727=_0x9a5013?_0x9a5013:amiClient;return _0x3a5727[_0xa24c('0x8')](_0x2dd348,_0x257264)['then'](function(_0x399f32){if(_0x399f32[_0xa24c('0x9')]){if(_0x399f32[_0xa24c('0x9')][_0xa24c('0xa')]===0x1f4){return _0x42d89c(_0x399f32[_0xa24c('0x9')][_0xa24c('0xb')]);}return _0x481196(_0x399f32[_0xa24c('0x9')][_0xa24c('0xb')]);}else{_0x481196(_0x399f32[_0xa24c('0xc')]);}})['catch'](function(_0x43bcd3){_0x42d89c(_0x43bcd3);});});}function respondWithResult(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xc8;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['status'](_0xcee4fe)[_0xa24c('0xd')](_0x2c2af8);}return _0x11090c[_0xa24c('0xe')](0x194);};}function handleError(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0x1f4;return function(_0x1cb08e){logger[_0xa24c('0x9')](_0x1cb08e[_0xa24c('0xf')]);if(_0x1cb08e['name']){delete _0x1cb08e['name'];}_0x26ff28[_0xa24c('0x10')](_0x2fcd8b)[_0xa24c('0x11')](_0x1cb08e);};}function findById(_0x49ce53){return function(_0x5babb5){if(!_[_0xa24c('0x12')](_0x49ce53)&&!_[_0xa24c('0x12')](_0x5babb5)&&!_['isNil'](_0x5babb5[_0xa24c('0x13')])){return _['find'](_0x5babb5[_0xa24c('0x13')],function(_0x2a610a){return _0x2a610a['id']==_0x49ce53;});}return null;};}exports[_0xa24c('0x14')]=function(_0xefdbd9,_0x4ff97c){return respondWithRpcPromise(_0xa24c('0x15'),_0xefdbd9[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x4ff97c,null))['catch'](handleError(_0x4ff97c,null));};exports['voiceChannelMixMonitor']=function(_0x506424,_0x4cd77e){return respondWithRpcPromise(_0xa24c('0x18'),_[_0xa24c('0x19')](_0x506424[_0xa24c('0x16')],_0x506424[_0xa24c('0x1a')]))['then'](respondWithResult(_0x4cd77e,null))[_0xa24c('0x1b')](handleError(_0x4cd77e,null));};exports['voiceChannelStopMixMonitor']=function(_0x224bca,_0xb81d97){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xa24c('0x19')](_0x224bca[_0xa24c('0x16')],_0x224bca[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0xb81d97,null))[_0xa24c('0x1b')](handleError(_0xb81d97,null));};exports['voiceQueues']=function(_0xec9167,_0x5cc9cb){return respondWithRpcPromise(_0xa24c('0x1c'),_0xec9167[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x5cc9cb,null))['catch'](handleError(_0x5cc9cb,null));};exports[_0xa24c('0x1d')]=function(_0x31c4d9,_0x14fd5a){return respondWithRpcPromise(_0xa24c('0x1c'),_0x31c4d9[_0xa24c('0x16')])[_0xa24c('0x17')](findById(_0x31c4d9[_0xa24c('0x1a')]['id']))['then'](respondWithResult(_0x14fd5a,null))[_0xa24c('0x1b')](handleError(_0x14fd5a,null));};exports[_0xa24c('0x1e')]=function(_0x152120,_0x12dbdc){return respondWithRpcPromise('UpdateVoiceQueue',_[_0xa24c('0x19')](_0x152120[_0xa24c('0x1f')],_0x152120[_0xa24c('0x1a')]))['then'](respondWithResult(_0x12dbdc,null))[_0xa24c('0x1b')](handleError(_0x12dbdc,null));};exports[_0xa24c('0x20')]=function(_0x253d83,_0x4ae35c){return respondWithRpcPromise(_0xa24c('0x21'),_['merge'](_0x253d83[_0xa24c('0x16')],_0x253d83[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x4ae35c,null))['catch'](handleError(_0x4ae35c,null));};exports[_0xa24c('0x22')]=function(_0x53f90,_0x1d0379){return respondWithRpcPromise('VoiceQueuesChannels',_0x53f90[_0xa24c('0x16')])['then'](respondWithResult(_0x1d0379,null))[_0xa24c('0x1b')](handleError(_0x1d0379,null));};exports[_0xa24c('0x23')]=function(_0x592198,_0x5680f5){return respondWithRpcPromise(_0xa24c('0x24'),_[_0xa24c('0x19')](_0x592198[_0xa24c('0x16')],_0x592198[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x5680f5,null))[_0xa24c('0x1b')](handleError(_0x5680f5,null));};exports[_0xa24c('0x25')]=function(_0x4b4dc2,_0x39f146){return respondWithRpcPromise(_0xa24c('0x26'),_[_0xa24c('0x19')](_0x4b4dc2[_0xa24c('0x16')],_0x4b4dc2[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x39f146,null))[_0xa24c('0x1b')](handleError(_0x39f146,null));};exports[_0xa24c('0x27')]=function(_0x1ea166,_0x129bb9){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xa24c('0x19')](_0x1ea166[_0xa24c('0x16')],_0x1ea166[_0xa24c('0x1a')]))[_0xa24c('0x17')](respondWithResult(_0x129bb9,null))['catch'](handleError(_0x129bb9,null));};exports['outbound']=function(_0x19a65f,_0x56ef4d){return respondWithRpcPromise(_0xa24c('0x28'),_0x19a65f[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x56ef4d,null))[_0xa24c('0x1b')](handleError(_0x56ef4d,null));};exports[_0xa24c('0x29')]=function(_0x4c0fb9,_0x532875){return respondWithRpcPromise(_0xa24c('0x2a'),_0x4c0fb9[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x532875,null))[_0xa24c('0x1b')](handleError(_0x532875,null));};exports[_0xa24c('0x2b')]=function(_0x472912,_0x5080d0){var _0x56f392;return respondWithRpcPromise(_0xa24c('0x2c'),_0x472912[_0xa24c('0x16')])[_0xa24c('0x17')](function(_0x2101f8){_0x56f392=_0x2101f8;return respondWithRpcPromise(_0xa24c('0x2c'),_0x472912['query'],routingClient);})[_0xa24c('0x17')](function(_0x7895e){return _['merge']({},_0x7895e,_0x56f392);})['then'](respondWithResult(_0x5080d0,null))[_0xa24c('0x1b')](handleError(_0x5080d0,null));};exports[_0xa24c('0x2d')]=function(_0x231eea,_0x537849){if(_0x231eea['body']&&_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')]&&_0x231eea[_0xa24c('0x2f')]&&_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')]){for(var _0x1b7faf in _0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')]){if(_0x231eea['body']['interaction'][_0xa24c('0x31')](_0x1b7faf)){db[_0xa24c('0x32')][_0xa24c('0x33')]({'where':{'channel':_0x1b7faf,'membername':_0x231eea['user'][_0xa24c('0x30')],'type':_0xa24c('0x34'),'exitAt':null,'uniqueid':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf]&&_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0xa24c('0x35')]?{'$notIn':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf]}:{'$ne':null}}})[_0xa24c('0x17')](function(_0x4bbf93){var _0xb8c7a5=moment()[_0xa24c('0x36')](_0xa24c('0x37'));for(var _0x5aa2b2=0x0,_0x3a85cb=_0x4bbf93[_0xa24c('0x35')];_0x5aa2b2<_0x3a85cb;_0x5aa2b2+=0x1){_0x4bbf93[_0x5aa2b2][_0xa24c('0x38')]({'exitAt':_0xb8c7a5});}});for(var _0x31f05b=0x0;_0x31f05b<_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0xa24c('0x35')];_0x31f05b+=0x1){db[_0xa24c('0x32')][_0xa24c('0x39')]({'where':{'channel':_0x1b7faf,'membername':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')],'type':'INTERACTION','uniqueid':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x2e')][_0x1b7faf][_0x31f05b],'exitAt':null},'defaults':{'channel':_0x1b7faf,'membername':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x30')],'interface':_[_0xa24c('0x12')](_0x231eea[_0xa24c('0x2f')][_0xa24c('0x3a')])?util[_0xa24c('0x36')](_0xa24c('0x3b'),_0x231eea['user']['name']):_0x231eea[_0xa24c('0x2f')]['interface'],'type':_0xa24c('0x34'),'enterAt':moment()[_0xa24c('0x36')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xa24c('0x3c'),'internal':_0x231eea[_0xa24c('0x2f')][_0xa24c('0x3d')],'uniqueid':_0x231eea['body']['interaction'][_0x1b7faf][_0x31f05b]}});}}}}return respondWithRpcPromise(_0xa24c('0x3e'),{'id':_0x231eea['params']['id'],'capacity':_0x231eea[_0xa24c('0x1f')][_0xa24c('0x3f')]},routingClient)[_0xa24c('0x17')](respondWithResult(_0x537849,null))[_0xa24c('0x1b')](handleError(_0x537849,null));};exports[_0xa24c('0x40')]=function(_0x1fa739,_0x3f3ce6){return respondWithRpcPromise(_0xa24c('0x41'),_0x1fa739[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x3f3ce6,null))['catch'](handleError(_0x3f3ce6,null));};exports[_0xa24c('0x42')]=function(_0x2759c1,_0x233f8e){return respondWithRpcPromise('Trunks',_0x2759c1['query'])['then'](respondWithResult(_0x233f8e,null))[_0xa24c('0x1b')](handleError(_0x233f8e,null));};exports['campaigns']=function(_0x4757ff,_0x21d0fc){return respondWithRpcPromise('Campaigns',_0x4757ff[_0xa24c('0x16')])[_0xa24c('0x17')](respondWithResult(_0x21d0fc,null))[_0xa24c('0x1b')](handleError(_0x21d0fc,null));};exports[_0xa24c('0x43')]=function(_0x162a11,_0x3a72e3){return respondWithRpcPromise(_0xa24c('0x44'),_0x162a11[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x3a72e3,null))[_0xa24c('0x1b')](handleError(_0x3a72e3,null));};exports['showChatQueues']=function(_0x5abd45,_0x565f0a){return respondWithRpcPromise('ChatQueues',_0x5abd45['query'],routingClient)[_0xa24c('0x17')](findById(_0x5abd45['params']['id']))[_0xa24c('0x17')](respondWithResult(_0x565f0a,null))[_0xa24c('0x1b')](handleError(_0x565f0a,null));};exports[_0xa24c('0x45')]=function(_0x1a5f17,_0xa371d2){return respondWithRpcPromise(_0xa24c('0x46'),_0x1a5f17[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0xa371d2,null))[_0xa24c('0x1b')](handleError(_0xa371d2,null));};exports[_0xa24c('0x47')]=function(_0x303b7d,_0x37dbbd){return respondWithRpcPromise(_0xa24c('0x46'),_0x303b7d[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0x303b7d['params']['id']))[_0xa24c('0x17')](respondWithResult(_0x37dbbd,null))[_0xa24c('0x1b')](handleError(_0x37dbbd,null));};exports['mailAccounts']=function(_0x1e08bb,_0x179ae1){return respondWithRpcPromise(_0xa24c('0x48'),_0x1e08bb[_0xa24c('0x16')],mailClient)['then'](respondWithResult(_0x179ae1,null))['catch'](handleError(_0x179ae1,null));};exports[_0xa24c('0x49')]=function(_0x5e9631,_0x486040){return respondWithRpcPromise(_0xa24c('0x4a'),_0x5e9631[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x486040,null))[_0xa24c('0x1b')](handleError(_0x486040,null));};exports['showOpenchannelQueues']=function(_0x48a7b2,_0x29b836){return respondWithRpcPromise('OpenchannelQueues',_0x48a7b2['query'],routingClient)[_0xa24c('0x17')](findById(_0x48a7b2[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x29b836,null))['catch'](handleError(_0x29b836,null));};exports[_0xa24c('0x4b')]=function(_0x128e5b,_0x5c3285){return respondWithRpcPromise(_0xa24c('0x4c'),_0x128e5b[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x5c3285,null))['catch'](handleError(_0x5c3285,null));};exports[_0xa24c('0x4d')]=function(_0x34e261,_0x21439a){return respondWithRpcPromise(_0xa24c('0x4c'),_0x34e261[_0xa24c('0x16')],routingClient)['then'](findById(_0x34e261[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x21439a,null))[_0xa24c('0x1b')](handleError(_0x21439a,null));};exports[_0xa24c('0x4e')]=function(_0xab5260,_0x2ca3fa){return respondWithRpcPromise(_0xa24c('0x4f'),_0xab5260['query'],routingClient)[_0xa24c('0x17')](respondWithResult(_0x2ca3fa,null))[_0xa24c('0x1b')](handleError(_0x2ca3fa,null));};exports['showWhatsappQueues']=function(_0xb1048a,_0x3e455b){return respondWithRpcPromise(_0xa24c('0x4f'),_0xb1048a[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0xb1048a[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x3e455b,null))[_0xa24c('0x1b')](handleError(_0x3e455b,null));};exports[_0xa24c('0x50')]=function(_0x32ddc3,_0x50141e){return respondWithRpcPromise(_0xa24c('0x51'),_0x32ddc3[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x50141e,null))['catch'](handleError(_0x50141e,null));};exports[_0xa24c('0x52')]=function(_0xfd57fb,_0x2cc592){return respondWithRpcPromise('FaxQueues',_0xfd57fb[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](findById(_0xfd57fb[_0xa24c('0x1a')]['id']))[_0xa24c('0x17')](respondWithResult(_0x2cc592,null))[_0xa24c('0x1b')](handleError(_0x2cc592,null));};exports[_0xa24c('0x53')]=function(_0x4f9b56,_0x4c374d){return respondWithRpcPromise(_0xa24c('0x54'),_0x4f9b56['query'])[_0xa24c('0x17')](respondWithResult(_0x4c374d,null))[_0xa24c('0x1b')](handleError(_0x4c374d,null));};exports[_0xa24c('0x55')]=function(_0x4073c5,_0x12d715){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x4073c5[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x12d715,null))[_0xa24c('0x1b')](handleError(_0x12d715,null));};exports[_0xa24c('0x56')]=function(_0x987aca,_0x389c08){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x987aca[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x389c08,null))[_0xa24c('0x1b')](handleError(_0x389c08,null));};exports[_0xa24c('0x57')]=function(_0x5ebdd1,_0x403bf1){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x5ebdd1[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x403bf1,null))[_0xa24c('0x1b')](handleError(_0x403bf1,null));};exports[_0xa24c('0x58')]=function(_0x5726e1,_0x2e612d){return respondWithRpcPromise(_0xa24c('0x59'),_0x5726e1['query'],routingClient)[_0xa24c('0x17')](function(_0x168a8b){if(_0x5726e1[_0xa24c('0x16')][_0xa24c('0x5a')]!==undefined){var _0x8bd3fb=_(_0x168a8b[_0xa24c('0x13')])[_0xa24c('0x5b')]([_0x5726e1[_0xa24c('0x16')]['type'],_0x5726e1[_0xa24c('0x1a')]['id']])[_0xa24c('0x5c')](_0xa24c('0x5d'))[_0xa24c('0x5e')]()[_0xa24c('0x5f')]();return _0x168a8b[_0xa24c('0x13')][_0xa24c('0x5b')](function(_0x13dbef){return _0x8bd3fb[_0xa24c('0x60')](_0x13dbef[_0xa24c('0x5d')])>-0x1;});}else{return _0x168a8b[_0xa24c('0x13')]['filter'](function(_0x283c5b){return _0x283c5b[_0xa24c('0x5d')]===parseInt(_0x5726e1['params']['id']);});}})[_0xa24c('0x17')](respondWithResult(_0x2e612d,null))[_0xa24c('0x1b')](handleError(_0x2e612d,null));};exports[_0xa24c('0x61')]=function(_0x4f0f11,_0x5b4468){return respondWithRpcPromise(_0xa24c('0x62'),_0x4f0f11[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x5b4468,null))[_0xa24c('0x1b')](handleError(_0x5b4468,null));};exports[_0xa24c('0x63')]=function(_0x106178,_0x27a666){return respondWithRpcPromise(_0xa24c('0x64'),_0x106178[_0xa24c('0x16')],routingClient)['then'](respondWithResult(_0x27a666,null))['catch'](handleError(_0x27a666,null));};exports['faxQueuesWaitingInteractions']=function(_0x263dab,_0x521894){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x263dab[_0xa24c('0x16')],routingClient)[_0xa24c('0x17')](respondWithResult(_0x521894,null))[_0xa24c('0x1b')](handleError(_0x521894,null));};exports[_0xa24c('0x65')]=function(_0x84ddcc){return function(_0x45b2fe,_0x16f93a){var _0x170b65,_0x2544fc;var _0x4ee10d=_[_0xa24c('0x66')](_0x84ddcc);var _0xa077c8=_0x84ddcc===_0xa24c('0x67')?_0xa24c('0x68'):_0xa24c('0x69');return db[_0x4ee10d+_0xa24c('0x6a')][_0xa24c('0x6b')]({'raw':!![],'where':{'id':_0x45b2fe[_0xa24c('0x1a')]['id']}})[_0xa24c('0x17')](function(_0x3c5495){if(_[_0xa24c('0x12')](_0x3c5495)){throw new Error(_0x4ee10d+_0xa24c('0x6c'));}_0x170b65=_0x3c5495;return db[_0x4ee10d+'Message'][_0xa24c('0x6b')]({'where':{'id':_0x45b2fe[_0xa24c('0x1f')]['messageId']},'include':[{'model':db[_0x4ee10d+_0xa24c('0x6d')],'as':_0xa24c('0x6d')},{'model':db[_0x4ee10d+_0xa077c8],'as':_0xa24c('0x69')}]});})['then'](function(_0x549e07){if(_[_0xa24c('0x12')](_0x549e07)){throw new Error(_0x4ee10d+'\x20Message\x20not\x20found');}_0x2544fc=_0x549e07;return _0x549e07[_0xa24c('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa24c('0x17')](function(){var _0x4c108f={'uniqueid':_0x84ddcc+'.'+_0x2544fc['id']+'.'+_0x2544fc['Interaction']['id'],'FromUserId':_0x45b2fe[_0xa24c('0x2f')]['id'],'type':_0xa24c('0x6f')};_0x4c108f[_0x4ee10d+_0xa24c('0x70')]=_0x2544fc['id'];_0x4c108f[_0x4ee10d+_0xa24c('0x71')]=_0x2544fc['Interaction']['id'];_0x4c108f[_0xa24c('0x72')+_0x4ee10d+_0xa077c8+'Id']=_0x2544fc[_0xa24c('0x69')]['id'];_0x4c108f['To'+_0x4ee10d+_0xa24c('0x73')]=_0x170b65['id'];return db[_0x4ee10d+'TransferReport']['create'](_0x4c108f);})[_0xa24c('0x17')](function(){return respondWithRpcPromise(_0xa24c('0x74'),{'channel':_0x84ddcc,'interaction':_0x2544fc[_0xa24c('0x6d')],'message':_0x2544fc,'account':_0x2544fc['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x170b65[_0xa24c('0x30')]+','+(_0x2544fc['Account']['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xa24c('0x17')](respondWithResult(_0x16f93a,null))[_0xa24c('0x1b')](handleError(_0x16f93a,null));};};exports[_0xa24c('0x75')]=function(_0xd23eb3,_0x890e15){var _0x12836d,_0x280fa2;if(_[_0xa24c('0x12')](_0xd23eb3[_0xa24c('0x1f')][_0xa24c('0x76')])){throw new Error(_0xa24c('0x77'));}var _0x24b28c=_0xd23eb3['body'][_0xa24c('0x76')];var _0x292c22=_['capitalize'](_0x24b28c);var _0x2fd4a2=_0x24b28c==='chat'?'Website':'Account';return db[_0xa24c('0x78')]['findOne']({'raw':!![],'where':{'id':_0xd23eb3[_0xa24c('0x1a')]['id'],'role':'agent'}})[_0xa24c('0x17')](function(_0x144c3b){if(_['isNil'](_0x144c3b)){throw new Error(_0xa24c('0x79'));}_0x12836d=_0x144c3b;return db[_0x292c22+'Message'][_0xa24c('0x6b')]({'where':{'id':_0xd23eb3[_0xa24c('0x1f')][_0xa24c('0x7a')]},'include':[{'model':db[_0x292c22+_0xa24c('0x6d')],'as':_0xa24c('0x6d')},{'model':db[_0x292c22+_0x2fd4a2],'as':'Account'}]});})[_0xa24c('0x17')](function(_0x5774d2){if(_[_0xa24c('0x12')](_0x5774d2)){throw new Error(_0x292c22+_0xa24c('0x7b'));}_0x280fa2=_0x5774d2;return _0x5774d2[_0xa24c('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa24c('0x17')](function(){var _0x4b848d={'uniqueid':_0x24b28c+'.'+_0x280fa2['id']+'.'+_0x280fa2[_0xa24c('0x6d')]['id'],'FromUserId':_0xd23eb3[_0xa24c('0x2f')]['id'],'type':_0xa24c('0x6f'),'ToUserId':_0x12836d['id']};_0x4b848d[_0x292c22+_0xa24c('0x70')]=_0x280fa2['id'];_0x4b848d[_0x292c22+'InteractionId']=_0x280fa2[_0xa24c('0x6d')]['id'];_0x4b848d[_0xa24c('0x72')+_0x292c22+_0x2fd4a2+'Id']=_0x280fa2[_0xa24c('0x69')]['id'];return db[_0x292c22+_0xa24c('0x7c')][_0xa24c('0x7d')](_0x4b848d);})[_0xa24c('0x17')](function(){return respondWithRpcPromise(_0xa24c('0x74'),{'channel':_0x24b28c,'interaction':_0x280fa2[_0xa24c('0x6d')],'message':_0x280fa2,'account':_0x280fa2[_0xa24c('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa24c('0x3c'),'appdata':_0x12836d[_0xa24c('0x30')]+','+(_0x280fa2[_0xa24c('0x69')][_0xa24c('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xa24c('0x17')](respondWithResult(_0x890e15,null))[_0xa24c('0x1b')](handleError(_0x890e15,null));};
\ No newline at end of file
index b9c693a..fb1aa50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ded=['post','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./schedule.controller','isAuthenticated','index','get','/:id','show','run'];(function(_0x34332c,_0x22fc2d){var _0x566d9a=function(_0x284a83){while(--_0x284a83){_0x34332c['push'](_0x34332c['shift']());}};_0x566d9a(++_0x22fc2d);}(_0x1ded,0x64));var _0xd1de=function(_0x43d811,_0x23babc){_0x43d811=_0x43d811-0x0;var _0x274302=_0x1ded[_0x43d811];return _0x274302;};'use strict';var multer=require(_0xd1de('0x0'));var util=require(_0xd1de('0x1'));var path=require('path');var timeout=require(_0xd1de('0x2'));var express=require(_0xd1de('0x3'));var router=express[_0xd1de('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd1de('0x5'));var config=require(_0xd1de('0x6'));var controller=require(_0xd1de('0x7'));router['get']('/',auth[_0xd1de('0x8')](),controller[_0xd1de('0x9')]);router[_0xd1de('0xa')](_0xd1de('0xb'),auth[_0xd1de('0x8')](),controller[_0xd1de('0xc')]);router[_0xd1de('0xa')]('/:id/run',auth['isAuthenticated'](),controller[_0xd1de('0xd')]);router[_0xd1de('0xe')]('/',auth[_0xd1de('0x8')](),controller['create']);router[_0xd1de('0xf')](_0xd1de('0xb'),auth[_0xd1de('0x8')](),controller[_0xd1de('0x10')]);router[_0xd1de('0x11')](_0xd1de('0xb'),auth[_0xd1de('0x8')](),controller[_0xd1de('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x1099=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./schedule.controller','get','index','/:id','show','/:id/run','run','isAuthenticated','put','destroy','exports','multer'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1099,0x10d));var _0x9109=function(_0x3532b5,_0x304f91){_0x3532b5=_0x3532b5-0x0;var _0x2a574a=_0x1099[_0x3532b5];return _0x2a574a;};'use strict';var multer=require(_0x9109('0x0'));var util=require('util');var path=require(_0x9109('0x1'));var timeout=require(_0x9109('0x2'));var express=require(_0x9109('0x3'));var router=express[_0x9109('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9109('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9109('0x6'));var controller=require(_0x9109('0x7'));router[_0x9109('0x8')]('/',auth['isAuthenticated'](),controller[_0x9109('0x9')]);router['get'](_0x9109('0xa'),auth['isAuthenticated'](),controller[_0x9109('0xb')]);router[_0x9109('0x8')](_0x9109('0xc'),auth['isAuthenticated'](),controller[_0x9109('0xd')]);router['post']('/',auth[_0x9109('0xe')](),controller['create']);router[_0x9109('0xf')]('/:id',auth[_0x9109('0xe')](),controller['update']);router['delete'](_0x9109('0xa'),auth[_0x9109('0xe')](),controller[_0x9109('0x10')]);module[_0x9109('0x11')]=router;
\ No newline at end of file
index 50afd63..5787c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e2=['weeks','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','DATE','INTEGER','years','quarters'];(function(_0x6bd946,_0x475712){var _0x314431=function(_0x3eb3df){while(--_0x3eb3df){_0x6bd946['push'](_0x6bd946['shift']());}};_0x314431(++_0x475712);}(_0x70e2,0x1de));var _0x270e=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x70e2[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0x270e('0x0'));module[_0x270e('0x1')]={'name':{'type':Sequelize[_0x270e('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x270e('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x270e('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x270e('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x270e('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x270e('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x270e('0x6'),_0x270e('0x7'),'months',_0x270e('0x8'),_0x270e('0x9'),_0x270e('0xa'),_0x270e('0xb')),'allowNull':![],'defaultValue':_0x270e('0x9')},'output':{'type':Sequelize['ENUM'](_0x270e('0xc'),_0x270e('0xd'),_0x270e('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0x270e('0xf'),_0x270e('0x10')),'allowNull':![],'defaultValue':_0x270e('0xf')},'sendMail':{'type':Sequelize[_0x270e('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x270e('0x11')]},'bcc':{'type':Sequelize[_0x270e('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x270e('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf8f9=['months','weeks','days','hours','minutes','csv','pdf','custom','default','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters'];(function(_0x466ae5,_0xbc79){var _0x51f4f4=function(_0x464476){while(--_0x464476){_0x466ae5['push'](_0x466ae5['shift']());}};_0x51f4f4(++_0xbc79);}(_0xf8f9,0x1af));var _0x9f8f=function(_0x1b0512,_0x171dc2){_0x1b0512=_0x1b0512-0x0;var _0x210725=_0xf8f9[_0x1b0512];return _0x210725;};'use strict';var Sequelize=require(_0x9f8f('0x0'));module[_0x9f8f('0x1')]={'name':{'type':Sequelize[_0x9f8f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9f8f('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x9f8f('0x2')],'allowNull':![],'defaultValue':_0x9f8f('0x3')},'startAt':{'type':Sequelize[_0x9f8f('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x9f8f('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x9f8f('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x9f8f('0x6')](_0x9f8f('0x7'),_0x9f8f('0x8'),_0x9f8f('0x9'),_0x9f8f('0xa'),_0x9f8f('0xb'),_0x9f8f('0xc'),_0x9f8f('0xd')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x9f8f('0x6')](_0x9f8f('0xe'),_0x9f8f('0xf'),'xlsx'),'allowNull':![],'defaultValue':_0x9f8f('0xe')},'type':{'type':Sequelize['ENUM'](_0x9f8f('0x10'),_0x9f8f('0x11')),'allowNull':![],'defaultValue':_0x9f8f('0x10')},'sendMail':{'type':Sequelize[_0x9f8f('0x12')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x9f8f('0x13')]},'bcc':{'type':Sequelize[_0x9f8f('0x13')]},'sendIfEmpty':{'type':Sequelize[_0x9f8f('0x12')],'defaultValue':!![]}};
\ No newline at end of file
index 9b3774a..b6f10dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a6a=['model','keys','query','filters','intersection','attributes','fields','nolimit','limit','order','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','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','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','get','Scheduler','UserProfileResource','destroy','stack','name','send','map','Schedule','rawAttributes','type','key'];(function(_0x16c1a5,_0x17dfb0){var _0x421b5e=function(_0x2813d2){while(--_0x2813d2){_0x16c1a5['push'](_0x16c1a5['shift']());}};_0x421b5e(++_0x17dfb0);}(_0x5a6a,0x17e));var _0xa5a6=function(_0x1efc0b,_0x12d0ca){_0x1efc0b=_0x1efc0b-0x0;var _0x4c8976=_0x5a6a[_0x1efc0b];return _0x4c8976;};'use strict';var emlformat=require(_0xa5a6('0x0'));var rimraf=require(_0xa5a6('0x1'));var zipdir=require(_0xa5a6('0x2'));var jsonpatch=require(_0xa5a6('0x3'));var rp=require(_0xa5a6('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa5a6('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xa5a6('0x6'));var ejs=require(_0xa5a6('0x7'));var fs=require('fs');var fs_extra=require(_0xa5a6('0x8'));var _=require(_0xa5a6('0x9'));var squel=require('squel');var crypto=require(_0xa5a6('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa5a6('0xb'));var toCsv=require(_0xa5a6('0x6'));var querystring=require(_0xa5a6('0xc'));var Papa=require(_0xa5a6('0xd'));var Redis=require(_0xa5a6('0xe'));var authService=require(_0xa5a6('0xf'));var qs=require(_0xa5a6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa5a6('0x11'));var logger=require(_0xa5a6('0x12'))('api');var utils=require(_0xa5a6('0x13'));var config=require(_0xa5a6('0x14'));var licenseUtil=require(_0xa5a6('0x15'));var db=require(_0xa5a6('0x16'))['db'];function respondWithStatusCode(_0x5de98d,_0xb2bc67){_0xb2bc67=_0xb2bc67||0xcc;return function(_0x1ecf68){if(_0x1ecf68){return _0x5de98d[_0xa5a6('0x17')](_0xb2bc67);}return _0x5de98d['status'](_0xb2bc67)[_0xa5a6('0x18')]();};}function respondWithResult(_0x2fb714,_0x4e9cf2){_0x4e9cf2=_0x4e9cf2||0xc8;return function(_0x6819e9){if(_0x6819e9){return _0x2fb714[_0xa5a6('0x19')](_0x4e9cf2)['json'](_0x6819e9);}};}function respondWithFilteredResult(_0x2a917a,_0x3f487e){return function(_0x4c80b4){if(_0x4c80b4){var _0x20aec3=typeof _0x3f487e['offset']===_0xa5a6('0x1a')&&typeof _0x3f487e['limit']===_0xa5a6('0x1a');var _0x1e65d2=_0x4c80b4[_0xa5a6('0x1b')];var _0x5c9de6=_0x20aec3?0x0:_0x3f487e[_0xa5a6('0x1c')];var _0x5d8070=_0x20aec3?_0x4c80b4[_0xa5a6('0x1b')]:_0x3f487e[_0xa5a6('0x1c')]+_0x3f487e['limit'];var _0x3c6e05;if(_0x5d8070>=_0x1e65d2){_0x5d8070=_0x1e65d2;_0x3c6e05=0xc8;}else{_0x3c6e05=0xce;}_0x2a917a['status'](_0x3c6e05);return _0x2a917a[_0xa5a6('0x1d')](_0xa5a6('0x1e'),_0x5c9de6+'-'+_0x5d8070+'/'+_0x1e65d2)[_0xa5a6('0x1f')](_0x4c80b4);}return null;};}function patchUpdates(_0x24f34a){return function(_0x290209){try{jsonpatch[_0xa5a6('0x20')](_0x290209,_0x24f34a,!![]);}catch(_0x4e0353){return BPromise[_0xa5a6('0x21')](_0x4e0353);}return _0x290209[_0xa5a6('0x22')]();};}function saveUpdates(_0x58c30c,_0x2e4e7d){return function(_0x34fd98){if(_0x34fd98){return _0x34fd98[_0xa5a6('0x23')](_0x58c30c)['then'](function(_0x3fe74a){return _0x3fe74a;});}return null;};}function removeEntity(_0x364160,_0x54252f){return function(_0x10a298){if(_0x10a298){return _0x10a298['destroy']()['then'](function(){var _0x2cca14=_0x10a298[_0xa5a6('0x24')]({'plain':!![]});var _0x1b5aaa=_0xa5a6('0x25');return db[_0xa5a6('0x26')][_0xa5a6('0x27')]({'where':{'type':_0x1b5aaa,'resourceId':_0x2cca14['id']}})['then'](function(){return _0x10a298;});})['then'](function(){_0x364160[_0xa5a6('0x19')](0xcc)[_0xa5a6('0x18')]();});}};}function handleEntityNotFound(_0x43e5a6,_0x108859){return function(_0x28b20e){if(!_0x28b20e){_0x43e5a6[_0xa5a6('0x17')](0x194);}return _0x28b20e;};}function handleError(_0x1133fe,_0x454c01){_0x454c01=_0x454c01||0x1f4;return function(_0x4acd17){logger['error'](_0x4acd17[_0xa5a6('0x28')]);if(_0x4acd17[_0xa5a6('0x29')]){delete _0x4acd17[_0xa5a6('0x29')];}_0x1133fe['status'](_0x454c01)[_0xa5a6('0x2a')](_0x4acd17);};}exports['index']=function(_0x5ad4d5,_0x104915){var _0x452207={},_0x455e91={},_0x376c35={'count':0x0,'rows':[]};var _0x84ddd0=_[_0xa5a6('0x2b')](db[_0xa5a6('0x2c')][_0xa5a6('0x2d')],function(_0x4a6402){return{'name':_0x4a6402['fieldName'],'type':_0x4a6402[_0xa5a6('0x2e')][_0xa5a6('0x2f')]};});_0x455e91[_0xa5a6('0x30')]=_[_0xa5a6('0x2b')](_0x84ddd0,_0xa5a6('0x29'));_0x455e91['query']=_[_0xa5a6('0x31')](_0x5ad4d5[_0xa5a6('0x32')]);_0x455e91[_0xa5a6('0x33')]=_[_0xa5a6('0x34')](_0x455e91['model'],_0x455e91['query']);_0x452207[_0xa5a6('0x35')]=_['intersection'](_0x455e91[_0xa5a6('0x30')],qs[_0xa5a6('0x36')](_0x5ad4d5[_0xa5a6('0x32')][_0xa5a6('0x36')]));_0x452207['attributes']=_0x452207[_0xa5a6('0x35')]['length']?_0x452207[_0xa5a6('0x35')]:_0x455e91[_0xa5a6('0x30')];if(!_0x5ad4d5[_0xa5a6('0x32')]['hasOwnProperty'](_0xa5a6('0x37'))){_0x452207[_0xa5a6('0x38')]=qs['limit'](_0x5ad4d5[_0xa5a6('0x32')]['limit']);_0x452207[_0xa5a6('0x1c')]=qs[_0xa5a6('0x1c')](_0x5ad4d5[_0xa5a6('0x32')][_0xa5a6('0x1c')]);}_0x452207[_0xa5a6('0x39')]=qs['sort'](_0x5ad4d5['query']['sort']);_0x452207['where']=qs[_0xa5a6('0x33')](_[_0xa5a6('0x3a')](_0x5ad4d5[_0xa5a6('0x32')],_0x455e91[_0xa5a6('0x33')]),_0x84ddd0);if(_0x5ad4d5[_0xa5a6('0x32')][_0xa5a6('0x3b')]){_0x452207[_0xa5a6('0x3c')]=_[_0xa5a6('0x3d')](_0x452207[_0xa5a6('0x3c')],{'$or':_[_0xa5a6('0x2b')](_0x84ddd0,function(_0x5bf796){if(_0x5bf796[_0xa5a6('0x2e')]!==_0xa5a6('0x3e')){var _0x431afb={};_0x431afb[_0x5bf796['name']]={'$like':'%'+_0x5ad4d5[_0xa5a6('0x32')]['filter']+'%'};return _0x431afb;}})});}_0x452207=_[_0xa5a6('0x3d')]({},_0x452207,_0x5ad4d5[_0xa5a6('0x3f')]);var _0x4c0c26={'where':_0x452207[_0xa5a6('0x3c')]};return db[_0xa5a6('0x2c')][_0xa5a6('0x1b')](_0x4c0c26)[_0xa5a6('0x40')](function(_0x4d9707){_0x376c35['count']=_0x4d9707;if(_0x5ad4d5[_0xa5a6('0x32')][_0xa5a6('0x41')]){_0x452207[_0xa5a6('0x42')]=[{'all':!![]}];}return db[_0xa5a6('0x2c')][_0xa5a6('0x43')](_0x452207);})[_0xa5a6('0x40')](function(_0xdbf18){_0x376c35[_0xa5a6('0x44')]=_0xdbf18;return _0x376c35;})[_0xa5a6('0x40')](respondWithFilteredResult(_0x104915,_0x452207))[_0xa5a6('0x45')](handleError(_0x104915,null));};exports[_0xa5a6('0x46')]=function(_0x55abdc,_0x28e703){var _0x47e16f={'raw':![],'where':{'id':_0x55abdc[_0xa5a6('0x47')]['id']}},_0x5e358d={};_0x5e358d[_0xa5a6('0x30')]=_[_0xa5a6('0x31')](db['Schedule'][_0xa5a6('0x2d')]);_0x5e358d[_0xa5a6('0x32')]=_[_0xa5a6('0x31')](_0x55abdc[_0xa5a6('0x32')]);_0x5e358d[_0xa5a6('0x33')]=_[_0xa5a6('0x34')](_0x5e358d[_0xa5a6('0x30')],_0x5e358d['query']);_0x47e16f[_0xa5a6('0x35')]=_[_0xa5a6('0x34')](_0x5e358d[_0xa5a6('0x30')],qs['fields'](_0x55abdc[_0xa5a6('0x32')][_0xa5a6('0x36')]));_0x47e16f['attributes']=_0x47e16f[_0xa5a6('0x35')][_0xa5a6('0x48')]?_0x47e16f['attributes']:_0x5e358d[_0xa5a6('0x30')];if(_0x55abdc[_0xa5a6('0x32')][_0xa5a6('0x41')]){_0x47e16f[_0xa5a6('0x42')]=[{'all':!![]}];}_0x47e16f=_[_0xa5a6('0x3d')]({},_0x47e16f,_0x55abdc['options']);return db['Schedule'][_0xa5a6('0x49')](_0x47e16f)[_0xa5a6('0x40')](handleEntityNotFound(_0x28e703,null))[_0xa5a6('0x40')](respondWithResult(_0x28e703,null))[_0xa5a6('0x45')](handleError(_0x28e703,null));};exports[_0xa5a6('0x4a')]=function(_0x4fddd5,_0x16325b){return db['Schedule'][_0xa5a6('0x4a')](_0x4fddd5[_0xa5a6('0x4b')],{})[_0xa5a6('0x40')](function(_0x1c05a2){var _0x1fc3b3=_0x4fddd5[_0xa5a6('0x4c')][_0xa5a6('0x24')]({'plain':!![]});if(!_0x1fc3b3)throw new Error(_0xa5a6('0x4d'));if(_0x1fc3b3[_0xa5a6('0x4e')]===_0xa5a6('0x4c')){var _0x2bc2a4=_0x1c05a2['get']({'plain':!![]});var _0x19dcdf=_0xa5a6('0x25');return db[_0xa5a6('0x4f')][_0xa5a6('0x49')]({'where':{'name':_0x19dcdf,'userProfileId':_0x1fc3b3[_0xa5a6('0x50')]},'raw':!![]})['then'](function(_0x11d318){if(_0x11d318&&_0x11d318[_0xa5a6('0x51')]===0x0){return db[_0xa5a6('0x26')][_0xa5a6('0x4a')]({'name':_0x2bc2a4[_0xa5a6('0x29')],'resourceId':_0x2bc2a4['id'],'type':_0x11d318[_0xa5a6('0x29')],'sectionId':_0x11d318['id']},{})[_0xa5a6('0x40')](function(){return _0x1c05a2;});}else{return _0x1c05a2;}})[_0xa5a6('0x45')](function(_0x134836){logger[_0xa5a6('0x52')](_0xa5a6('0x53'),_0x134836);throw _0x134836;});}return _0x1c05a2;})[_0xa5a6('0x40')](respondWithResult(_0x16325b,0xc9))[_0xa5a6('0x45')](handleError(_0x16325b,null));};exports[_0xa5a6('0x23')]=function(_0x30a4e9,_0x3f7295){if(_0x30a4e9[_0xa5a6('0x4b')]['id']){delete _0x30a4e9[_0xa5a6('0x4b')]['id'];}return db[_0xa5a6('0x2c')][_0xa5a6('0x49')]({'where':{'id':_0x30a4e9[_0xa5a6('0x47')]['id']}})['then'](handleEntityNotFound(_0x3f7295,null))[_0xa5a6('0x40')](saveUpdates(_0x30a4e9[_0xa5a6('0x4b')],null))[_0xa5a6('0x40')](respondWithResult(_0x3f7295,null))['catch'](handleError(_0x3f7295,null));};exports[_0xa5a6('0x27')]=function(_0x147ca1,_0x123615){return db['Schedule']['find']({'where':{'id':_0x147ca1[_0xa5a6('0x47')]['id']}})[_0xa5a6('0x40')](handleEntityNotFound(_0x123615,null))[_0xa5a6('0x40')](removeEntity(_0x123615,null))[_0xa5a6('0x45')](handleError(_0x123615,null));};exports[_0xa5a6('0x54')]=function(_0x482175,_0xd75453,_0xc94f90){var _0x2e6abb=require(_0xa5a6('0x55'));return db[_0xa5a6('0x2c')][_0xa5a6('0x49')]({'where':{'id':_0x482175['params']['id']},'raw':!![]})[_0xa5a6('0x40')](handleEntityNotFound(_0xd75453,null))[_0xa5a6('0x40')](function(){_0x2e6abb[_0xa5a6('0x54')](_0x482175[_0xa5a6('0x47')]['id']);})[_0xa5a6('0x40')](respondWithStatusCode(_0xd75453,null))[_0xa5a6('0x45')](handleError(_0xd75453,null));};
\ No newline at end of file
+var _0x28a8=['options','includeAll','rows','catch','show','keys','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Scheduler','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','../../config/schedule','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','index','map','Schedule','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x28a8,0x10c));var _0x828a=function(_0x57c2f6,_0x1ee1bf){_0x57c2f6=_0x57c2f6-0x0;var _0x1cbd95=_0x28a8[_0x57c2f6];return _0x1cbd95;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x828a('0x0'));var jsonpatch=require(_0x828a('0x1'));var rp=require(_0x828a('0x2'));var moment=require(_0x828a('0x3'));var BPromise=require(_0x828a('0x4'));var Mustache=require(_0x828a('0x5'));var util=require(_0x828a('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(_0x828a('0x7'));var _=require(_0x828a('0x8'));var squel=require(_0x828a('0x9'));var crypto=require(_0x828a('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x828a('0xb'));var querystring=require('querystring');var Papa=require(_0x828a('0xc'));var Redis=require(_0x828a('0xd'));var authService=require(_0x828a('0xe'));var qs=require(_0x828a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x828a('0x10'));var utils=require('../../config/utils');var config=require(_0x828a('0x11'));var licenseUtil=require(_0x828a('0x12'));var db=require(_0x828a('0x13'))['db'];function respondWithStatusCode(_0x2af144,_0x516856){_0x516856=_0x516856||0xcc;return function(_0x57cece){if(_0x57cece){return _0x2af144[_0x828a('0x14')](_0x516856);}return _0x2af144['status'](_0x516856)[_0x828a('0x15')]();};}function respondWithResult(_0x5ccbcf,_0x226b8e){_0x226b8e=_0x226b8e||0xc8;return function(_0x3bbd66){if(_0x3bbd66){return _0x5ccbcf[_0x828a('0x16')](_0x226b8e)[_0x828a('0x17')](_0x3bbd66);}};}function respondWithFilteredResult(_0x1be083,_0x5b6e3c){return function(_0x181760){if(_0x181760){var _0x445968=typeof _0x5b6e3c[_0x828a('0x18')]==='undefined'&&typeof _0x5b6e3c[_0x828a('0x19')]===_0x828a('0x1a');var _0x11314e=_0x181760[_0x828a('0x1b')];var _0x453398=_0x445968?0x0:_0x5b6e3c[_0x828a('0x18')];var _0x1ad1d0=_0x445968?_0x181760[_0x828a('0x1b')]:_0x5b6e3c[_0x828a('0x18')]+_0x5b6e3c[_0x828a('0x19')];var _0x51308a;if(_0x1ad1d0>=_0x11314e){_0x1ad1d0=_0x11314e;_0x51308a=0xc8;}else{_0x51308a=0xce;}_0x1be083[_0x828a('0x16')](_0x51308a);return _0x1be083[_0x828a('0x1c')]('Content-Range',_0x453398+'-'+_0x1ad1d0+'/'+_0x11314e)[_0x828a('0x17')](_0x181760);}return null;};}function patchUpdates(_0x3e391e){return function(_0x4bda33){try{jsonpatch[_0x828a('0x1d')](_0x4bda33,_0x3e391e,!![]);}catch(_0xd922dd){return BPromise[_0x828a('0x1e')](_0xd922dd);}return _0x4bda33[_0x828a('0x1f')]();};}function saveUpdates(_0x1cfce1,_0x4b7c36){return function(_0x255be9){if(_0x255be9){return _0x255be9[_0x828a('0x20')](_0x1cfce1)[_0x828a('0x21')](function(_0x5884c8){return _0x5884c8;});}return null;};}function removeEntity(_0x336a11,_0x5eb50b){return function(_0x19349e){if(_0x19349e){return _0x19349e[_0x828a('0x22')]()[_0x828a('0x21')](function(){var _0x269974=_0x19349e[_0x828a('0x23')]({'plain':!![]});var _0x2dfe65='Scheduler';return db[_0x828a('0x24')][_0x828a('0x22')]({'where':{'type':_0x2dfe65,'resourceId':_0x269974['id']}})['then'](function(){return _0x19349e;});})['then'](function(){_0x336a11[_0x828a('0x16')](0xcc)[_0x828a('0x15')]();});}};}function handleEntityNotFound(_0x3a179a,_0x3f57ae){return function(_0x2d0c5a){if(!_0x2d0c5a){_0x3a179a['sendStatus'](0x194);}return _0x2d0c5a;};}function handleError(_0x4ad628,_0x106519){_0x106519=_0x106519||0x1f4;return function(_0x1306fa){logger['error'](_0x1306fa[_0x828a('0x25')]);if(_0x1306fa['name']){delete _0x1306fa['name'];}_0x4ad628[_0x828a('0x16')](_0x106519)['send'](_0x1306fa);};}exports[_0x828a('0x26')]=function(_0x3a86a7,_0x588e4e){var _0x213d7c={},_0x402ab4={},_0x3b9905={'count':0x0,'rows':[]};var _0x244536=_[_0x828a('0x27')](db[_0x828a('0x28')][_0x828a('0x29')],function(_0x266512){return{'name':_0x266512[_0x828a('0x2a')],'type':_0x266512[_0x828a('0x2b')][_0x828a('0x2c')]};});_0x402ab4[_0x828a('0x2d')]=_[_0x828a('0x27')](_0x244536,_0x828a('0x2e'));_0x402ab4[_0x828a('0x2f')]=_['keys'](_0x3a86a7[_0x828a('0x2f')]);_0x402ab4[_0x828a('0x30')]=_[_0x828a('0x31')](_0x402ab4[_0x828a('0x2d')],_0x402ab4[_0x828a('0x2f')]);_0x213d7c['attributes']=_[_0x828a('0x31')](_0x402ab4[_0x828a('0x2d')],qs[_0x828a('0x32')](_0x3a86a7[_0x828a('0x2f')]['fields']));_0x213d7c[_0x828a('0x33')]=_0x213d7c['attributes'][_0x828a('0x34')]?_0x213d7c['attributes']:_0x402ab4[_0x828a('0x2d')];if(!_0x3a86a7[_0x828a('0x2f')][_0x828a('0x35')](_0x828a('0x36'))){_0x213d7c[_0x828a('0x19')]=qs['limit'](_0x3a86a7['query'][_0x828a('0x19')]);_0x213d7c[_0x828a('0x18')]=qs[_0x828a('0x18')](_0x3a86a7[_0x828a('0x2f')][_0x828a('0x18')]);}_0x213d7c['order']=qs['sort'](_0x3a86a7[_0x828a('0x2f')]['sort']);_0x213d7c[_0x828a('0x37')]=qs[_0x828a('0x30')](_[_0x828a('0x38')](_0x3a86a7[_0x828a('0x2f')],_0x402ab4[_0x828a('0x30')]),_0x244536);if(_0x3a86a7[_0x828a('0x2f')][_0x828a('0x39')]){_0x213d7c[_0x828a('0x37')]=_[_0x828a('0x3a')](_0x213d7c[_0x828a('0x37')],{'$or':_[_0x828a('0x27')](_0x244536,function(_0x1e18b5){if(_0x1e18b5[_0x828a('0x2b')]!==_0x828a('0x3b')){var _0x1d0c6e={};_0x1d0c6e[_0x1e18b5['name']]={'$like':'%'+_0x3a86a7[_0x828a('0x2f')][_0x828a('0x39')]+'%'};return _0x1d0c6e;}})});}_0x213d7c=_['merge']({},_0x213d7c,_0x3a86a7[_0x828a('0x3c')]);var _0x137e5={'where':_0x213d7c[_0x828a('0x37')]};return db[_0x828a('0x28')]['count'](_0x137e5)[_0x828a('0x21')](function(_0x259971){_0x3b9905[_0x828a('0x1b')]=_0x259971;if(_0x3a86a7[_0x828a('0x2f')][_0x828a('0x3d')]){_0x213d7c['include']=[{'all':!![]}];}return db[_0x828a('0x28')]['findAll'](_0x213d7c);})['then'](function(_0x1c6c81){_0x3b9905[_0x828a('0x3e')]=_0x1c6c81;return _0x3b9905;})[_0x828a('0x21')](respondWithFilteredResult(_0x588e4e,_0x213d7c))[_0x828a('0x3f')](handleError(_0x588e4e,null));};exports[_0x828a('0x40')]=function(_0x45c40c,_0x5abcc1){var _0x88461a={'raw':![],'where':{'id':_0x45c40c['params']['id']}},_0x2e5778={};_0x2e5778[_0x828a('0x2d')]=_['keys'](db['Schedule'][_0x828a('0x29')]);_0x2e5778[_0x828a('0x2f')]=_[_0x828a('0x41')](_0x45c40c[_0x828a('0x2f')]);_0x2e5778[_0x828a('0x30')]=_[_0x828a('0x31')](_0x2e5778[_0x828a('0x2d')],_0x2e5778[_0x828a('0x2f')]);_0x88461a[_0x828a('0x33')]=_[_0x828a('0x31')](_0x2e5778[_0x828a('0x2d')],qs[_0x828a('0x32')](_0x45c40c['query'][_0x828a('0x32')]));_0x88461a[_0x828a('0x33')]=_0x88461a['attributes'][_0x828a('0x34')]?_0x88461a[_0x828a('0x33')]:_0x2e5778[_0x828a('0x2d')];if(_0x45c40c[_0x828a('0x2f')][_0x828a('0x3d')]){_0x88461a[_0x828a('0x42')]=[{'all':!![]}];}_0x88461a=_['merge']({},_0x88461a,_0x45c40c[_0x828a('0x3c')]);return db[_0x828a('0x28')][_0x828a('0x43')](_0x88461a)[_0x828a('0x21')](handleEntityNotFound(_0x5abcc1,null))['then'](respondWithResult(_0x5abcc1,null))['catch'](handleError(_0x5abcc1,null));};exports[_0x828a('0x44')]=function(_0x10385b,_0x26d5ca){return db['Schedule'][_0x828a('0x44')](_0x10385b[_0x828a('0x45')],{})['then'](function(_0x5af729){var _0x1fff1f=_0x10385b['user'][_0x828a('0x23')]({'plain':!![]});if(!_0x1fff1f)throw new Error(_0x828a('0x46'));if(_0x1fff1f[_0x828a('0x47')]===_0x828a('0x48')){var _0x29dff5=_0x5af729[_0x828a('0x23')]({'plain':!![]});var _0x5e7517=_0x828a('0x49');return db[_0x828a('0x4a')][_0x828a('0x43')]({'where':{'name':_0x5e7517,'userProfileId':_0x1fff1f[_0x828a('0x4b')]},'raw':!![]})[_0x828a('0x21')](function(_0x32be39){if(_0x32be39&&_0x32be39[_0x828a('0x4c')]===0x0){return db[_0x828a('0x24')][_0x828a('0x44')]({'name':_0x29dff5[_0x828a('0x2e')],'resourceId':_0x29dff5['id'],'type':_0x32be39[_0x828a('0x2e')],'sectionId':_0x32be39['id']},{})[_0x828a('0x21')](function(){return _0x5af729;});}else{return _0x5af729;}})[_0x828a('0x3f')](function(_0xccca6){logger[_0x828a('0x4d')](_0x828a('0x4e'),_0xccca6);throw _0xccca6;});}return _0x5af729;})[_0x828a('0x21')](respondWithResult(_0x26d5ca,0xc9))[_0x828a('0x3f')](handleError(_0x26d5ca,null));};exports['update']=function(_0x3db351,_0x53fb28){if(_0x3db351[_0x828a('0x45')]['id']){delete _0x3db351['body']['id'];}return db[_0x828a('0x28')][_0x828a('0x43')]({'where':{'id':_0x3db351[_0x828a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x53fb28,null))[_0x828a('0x21')](saveUpdates(_0x3db351[_0x828a('0x45')],null))[_0x828a('0x21')](respondWithResult(_0x53fb28,null))[_0x828a('0x3f')](handleError(_0x53fb28,null));};exports['destroy']=function(_0x53a541,_0x362775){return db[_0x828a('0x28')][_0x828a('0x43')]({'where':{'id':_0x53a541['params']['id']}})[_0x828a('0x21')](handleEntityNotFound(_0x362775,null))['then'](removeEntity(_0x362775,null))[_0x828a('0x3f')](handleError(_0x362775,null));};exports[_0x828a('0x50')]=function(_0x2fba69,_0x31fa62,_0x2f25a7){var _0x3f38c0=require(_0x828a('0x51'));return db['Schedule'][_0x828a('0x43')]({'where':{'id':_0x2fba69[_0x828a('0x4f')]['id']},'raw':!![]})[_0x828a('0x21')](handleEntityNotFound(_0x31fa62,null))[_0x828a('0x21')](function(){_0x3f38c0['run'](_0x2fba69[_0x828a('0x4f')]['id']);})[_0x828a('0x21')](respondWithStatusCode(_0x31fa62,null))[_0x828a('0x3f')](handleError(_0x31fa62,null));};
\ No newline at end of file
index 17d3b54..1fb10b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7c=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Schedule','tools_schedules'];(function(_0x1a2d1c,_0x4a1873){var _0x56eb67=function(_0x295a7d){while(--_0x295a7d){_0x1a2d1c['push'](_0x1a2d1c['shift']());}};_0x56eb67(++_0x4a1873);}(_0x7c7c,0x126));var _0xc7c7=function(_0x897518,_0x48c709){_0x897518=_0x897518-0x0;var _0x2bf6ca=_0x7c7c[_0x897518];return _0x2bf6ca;};'use strict';var _=require(_0xc7c7('0x0'));var util=require(_0xc7c7('0x1'));var logger=require(_0xc7c7('0x2'))(_0xc7c7('0x3'));var moment=require(_0xc7c7('0x4'));var BPromise=require(_0xc7c7('0x5'));var rp=require(_0xc7c7('0x6'));var fs=require('fs');var path=require(_0xc7c7('0x7'));var rimraf=require(_0xc7c7('0x8'));var config=require(_0xc7c7('0x9'));var attributes=require('./schedule.attributes');module[_0xc7c7('0xa')]=function(_0x4d2d21,_0x598bff){return _0x4d2d21[_0xc7c7('0xb')](_0xc7c7('0xc'),attributes,{'tableName':_0xc7c7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa995=['../../config/environment','./schedule.attributes','exports','Schedule','tools_schedules','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xa995,0xf5));var _0x5a99=function(_0x326e7f,_0xe8da32){_0x326e7f=_0x326e7f-0x0;var _0x5b11fe=_0xa995[_0x326e7f];return _0x5b11fe;};'use strict';var _=require(_0x5a99('0x0'));var util=require(_0x5a99('0x1'));var logger=require('../../config/logger')(_0x5a99('0x2'));var moment=require(_0x5a99('0x3'));var BPromise=require(_0x5a99('0x4'));var rp=require(_0x5a99('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5a99('0x6'));var config=require(_0x5a99('0x7'));var attributes=require(_0x5a99('0x8'));module[_0x5a99('0x9')]=function(_0x135918,_0x5f285b){return _0x135918['define'](_0x5a99('0xa'),attributes,{'tableName':_0x5a99('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f3c8f8..8bf21bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e68=['Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','Schedule,\x20%s,\x20%s','request\x20sent'];(function(_0x45ccca,_0x3b44c0){var _0x238f34=function(_0x1c5ed7){while(--_0x1c5ed7){_0x45ccca['push'](_0x45ccca['shift']());}};_0x238f34(++_0x3b44c0);}(_0x8e68,0x1d3));var _0x88e6=function(_0x4eeeab,_0x23f617){_0x4eeeab=_0x4eeeab-0x0;var _0x11fb04=_0x8e68[_0x4eeeab];return _0x11fb04;};'use strict';var _=require(_0x88e6('0x0'));var util=require(_0x88e6('0x1'));var moment=require(_0x88e6('0x2'));var BPromise=require(_0x88e6('0x3'));var rs=require(_0x88e6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x88e6('0x5'));var logger=require(_0x88e6('0x6'))('rpc');var config=require(_0x88e6('0x7'));var jayson=require(_0x88e6('0x8'));var client=jayson['client'][_0x88e6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ef433,_0x28483c,_0x3175c5){return new BPromise(function(_0x34aa93,_0xf157bd){return client['request'](_0x2ef433,_0x3175c5)[_0x88e6('0xa')](function(_0x3a6391){logger['info'](_0x88e6('0xb'),_0x28483c,_0x88e6('0xc'));logger['debug'](_0x88e6('0xd'),_0x28483c,_0x88e6('0xc'),JSON[_0x88e6('0xe')](_0x3a6391));if(_0x3a6391[_0x88e6('0xf')]){if(_0x3a6391[_0x88e6('0xf')][_0x88e6('0x10')]===0x1f4){logger[_0x88e6('0xf')](_0x88e6('0xb'),_0x28483c,_0x3a6391[_0x88e6('0xf')]['message']);return _0xf157bd(_0x3a6391[_0x88e6('0xf')][_0x88e6('0x11')]);}logger[_0x88e6('0xf')](_0x88e6('0xb'),_0x28483c,_0x3a6391['error'][_0x88e6('0x11')]);return _0x34aa93(_0x3a6391[_0x88e6('0xf')][_0x88e6('0x11')]);}else{logger[_0x88e6('0x12')]('Schedule,\x20%s,\x20%s',_0x28483c,'request\x20sent');_0x34aa93(_0x3a6391['result']['message']);}})[_0x88e6('0x13')](function(_0x4d102f){logger[_0x88e6('0xf')]('Schedule,\x20%s,\x20%s',_0x28483c,_0x4d102f);_0xf157bd(_0x4d102f);});});}
\ No newline at end of file
+var _0x3fb4=['debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Schedule,\x20%s,\x20%s','request\x20sent'];(function(_0xd49730,_0x3501b0){var _0x81a7ea=function(_0x58d152){while(--_0x58d152){_0xd49730['push'](_0xd49730['shift']());}};_0x81a7ea(++_0x3501b0);}(_0x3fb4,0xf3));var _0x43fb=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x3fb4[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x43fb('0x0'));var util=require(_0x43fb('0x1'));var moment=require('moment');var BPromise=require(_0x43fb('0x2'));var rs=require(_0x43fb('0x3'));var fs=require('fs');var Redis=require(_0x43fb('0x4'));var db=require(_0x43fb('0x5'))['db'];var utils=require(_0x43fb('0x6'));var logger=require(_0x43fb('0x7'))(_0x43fb('0x8'));var config=require(_0x43fb('0x9'));var jayson=require(_0x43fb('0xa'));var client=jayson[_0x43fb('0xb')][_0x43fb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x474514,_0x3c19eb,_0x497a68){return new BPromise(function(_0x1647b6,_0x59601d){return client[_0x43fb('0xd')](_0x474514,_0x497a68)[_0x43fb('0xe')](function(_0x464586){logger['info'](_0x43fb('0xf'),_0x3c19eb,_0x43fb('0x10'));logger[_0x43fb('0x11')](_0x43fb('0x12'),_0x3c19eb,'request\x20sent',JSON[_0x43fb('0x13')](_0x464586));if(_0x464586[_0x43fb('0x14')]){if(_0x464586[_0x43fb('0x14')][_0x43fb('0x15')]===0x1f4){logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x464586[_0x43fb('0x14')]['message']);return _0x59601d(_0x464586[_0x43fb('0x14')][_0x43fb('0x16')]);}logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x464586[_0x43fb('0x14')][_0x43fb('0x16')]);return _0x1647b6(_0x464586['error'][_0x43fb('0x16')]);}else{logger[_0x43fb('0x17')]('Schedule,\x20%s,\x20%s',_0x3c19eb,'request\x20sent');_0x1647b6(_0x464586[_0x43fb('0x18')][_0x43fb('0x16')]);}})[_0x43fb('0x19')](function(_0x4afa00){logger[_0x43fb('0x14')](_0x43fb('0xf'),_0x3c19eb,_0x4afa00);_0x59601d(_0x4afa00);});});}
\ No newline at end of file
index cee221d..8916713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fb7=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','show','/:id/download','download','put','/:id','update','delete','destroy','multer','util'];(function(_0xfcf82,_0x1e2324){var _0x3a19ac=function(_0x466c85){while(--_0x466c85){_0xfcf82['push'](_0xfcf82['shift']());}};_0x3a19ac(++_0x1e2324);}(_0x8fb7,0xfa));var _0x78fb=function(_0x28f384,_0x162151){_0x28f384=_0x28f384-0x0;var _0x263da8=_0x8fb7[_0x28f384];return _0x263da8;};'use strict';var multer=require(_0x78fb('0x0'));var util=require(_0x78fb('0x1'));var path=require('path');var timeout=require(_0x78fb('0x2'));var express=require(_0x78fb('0x3'));var router=express[_0x78fb('0x4')]();var fs_extra=require(_0x78fb('0x5'));var auth=require(_0x78fb('0x6'));var interaction=require(_0x78fb('0x7'));var config=require(_0x78fb('0x8'));var controller=require(_0x78fb('0x9'));router[_0x78fb('0xa')]('/',auth[_0x78fb('0xb')](),controller[_0x78fb('0xc')]);router[_0x78fb('0xa')]('/describe',auth[_0x78fb('0xb')](),controller['describe']);router[_0x78fb('0xa')]('/:id',auth[_0x78fb('0xb')](),controller[_0x78fb('0xd')]);router[_0x78fb('0xa')](_0x78fb('0xe'),auth[_0x78fb('0xb')](),controller[_0x78fb('0xf')]);router['post']('/',auth[_0x78fb('0xb')](),controller['create']);router[_0x78fb('0x10')](_0x78fb('0x11'),auth[_0x78fb('0xb')](),controller[_0x78fb('0x12')]);router[_0x78fb('0x13')](_0x78fb('0x11'),auth[_0x78fb('0xb')](),controller[_0x78fb('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xecd2=['/:id/download','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','/describe','describe','/:id','isAuthenticated'];(function(_0x47623f,_0x148f3a){var _0x282ce8=function(_0x35bca1){while(--_0x35bca1){_0x47623f['push'](_0x47623f['shift']());}};_0x282ce8(++_0x148f3a);}(_0xecd2,0x181));var _0x2ecd=function(_0x3cd9bb,_0x1af2fc){_0x3cd9bb=_0x3cd9bb-0x0;var _0x20433b=_0xecd2[_0x3cd9bb];return _0x20433b;};'use strict';var multer=require(_0x2ecd('0x0'));var util=require('util');var path=require(_0x2ecd('0x1'));var timeout=require(_0x2ecd('0x2'));var express=require(_0x2ecd('0x3'));var router=express['Router']();var fs_extra=require(_0x2ecd('0x4'));var auth=require(_0x2ecd('0x5'));var interaction=require(_0x2ecd('0x6'));var config=require(_0x2ecd('0x7'));var controller=require(_0x2ecd('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2ecd('0x9')](_0x2ecd('0xa'),auth['isAuthenticated'](),controller[_0x2ecd('0xb')]);router[_0x2ecd('0x9')](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller['show']);router[_0x2ecd('0x9')](_0x2ecd('0xe'),auth[_0x2ecd('0xd')](),controller['download']);router[_0x2ecd('0xf')]('/',auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x10')]);router['put'](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x11')]);router[_0x2ecd('0x12')](_0x2ecd('0xc'),auth[_0x2ecd('0xd')](),controller[_0x2ecd('0x13')]);module[_0x2ecd('0x14')]=router;
\ No newline at end of file
index 9466c21..1e79358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1131=['setDataValue','INTEGER','startedAt','closedAt','duration','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','format','updatedAt','moment','VIRTUAL','getDataValue','value','extname','STRING'];(function(_0x1a3481,_0x327357){var _0x207510=function(_0x55b725){while(--_0x55b725){_0x1a3481['push'](_0x1a3481['shift']());}};_0x207510(++_0x327357);}(_0x1131,0x71));var _0x1113=function(_0x462d6e,_0x16ce44){_0x462d6e=_0x462d6e-0x0;var _0x20a72a=_0x1131[_0x462d6e];return _0x20a72a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x1113('0x0'));var path=require('path');var config=require('../../config/environment');module['exports']={'format':{'type':Sequelize[_0x1113('0x1')],'get':function(){return this[_0x1113('0x2')](_0x1113('0x3'))?path[_0x1113('0x4')](this[_0x1113('0x2')](_0x1113('0x3'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x1113('0x5')]},'value':{'type':Sequelize['STRING'],'set':function(_0x1f76a7){var _0x500c86=_0x1f76a7['replace'](/\\/g,'/');this[_0x1113('0x6')](_0x1113('0x3'),_0x500c86);}},'rating':{'type':Sequelize[_0x1113('0x7')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x1113('0x7')],'set':function(_0x3e20dd){this[_0x1113('0x6')](_0x1113('0x8'),moment()['subtract'](_0x3e20dd,'ms'));this['setDataValue'](_0x1113('0x9'),moment());this[_0x1113('0x6')](_0x1113('0xa'),_0x3e20dd);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x1113('0x2')](_0x1113('0x8')))['format'](_0x1113('0xb'))[_0x1113('0xc')]();}},'closedAt':{'type':Sequelize[_0x1113('0xd')],'get':function(){return moment(this[_0x1113('0x2')]('closedAt'))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize[_0x1113('0xd')],'get':function(){return moment(this[_0x1113('0x2')](_0x1113('0xe')))[_0x1113('0xf')]('MM-DD-YYYY\x20HH:mm')[_0x1113('0xc')]();}},'updatedAt':{'type':Sequelize[_0x1113('0xd')],'get':function(){return moment(this[_0x1113('0x2')](_0x1113('0x10')))[_0x1113('0xf')](_0x1113('0xb'))[_0x1113('0xc')]();}}};
\ No newline at end of file
+var _0xd786=['extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','../../config/environment','VIRTUAL','getDataValue','value'];(function(_0x1a86f3,_0x21847a){var _0x399b06=function(_0x14c2f6){while(--_0x14c2f6){_0x1a86f3['push'](_0x1a86f3['shift']());}};_0x399b06(++_0x21847a);}(_0xd786,0x1dc));var _0x6d78=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd786[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0x6d78('0x0'));var moment=require(_0x6d78('0x1'));var path=require(_0x6d78('0x2'));var config=require(_0x6d78('0x3'));module['exports']={'format':{'type':Sequelize[_0x6d78('0x4')],'get':function(){return this[_0x6d78('0x5')](_0x6d78('0x6'))?path[_0x6d78('0x7')](this[_0x6d78('0x5')](_0x6d78('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x6d78('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x6d78('0x8')],'set':function(_0x30e9e5){var _0x5c3f38=_0x30e9e5[_0x6d78('0x9')](/\\/g,'/');this[_0x6d78('0xa')](_0x6d78('0x6'),_0x5c3f38);}},'rating':{'type':Sequelize[_0x6d78('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x3198b6){this[_0x6d78('0xa')](_0x6d78('0xc'),moment()['subtract'](_0x3198b6,'ms'));this[_0x6d78('0xa')](_0x6d78('0xd'),moment());this[_0x6d78('0xa')](_0x6d78('0xe'),_0x3198b6);}},'startedAt':{'type':Sequelize[_0x6d78('0xf')],'get':function(){return moment(this[_0x6d78('0x5')](_0x6d78('0xc')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x6d78('0x5')](_0x6d78('0xd')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x6d78('0x13')))['format'](_0x6d78('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0x6d78('0xf')],'get':function(){return moment(this['getDataValue'](_0x6d78('0x14')))[_0x6d78('0x10')](_0x6d78('0x11'))[_0x6d78('0x12')]();}}};
\ No newline at end of file
index 206a93e..8f05867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','ScreenRecording','rawAttributes','fieldName','type','key','differenceBy','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','merge','options','catch','create','body','duration','createdAt','closedAt','value','find','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','eml-format','rimraf'];(function(_0x4d5e0f,_0x211f91){var _0x2d592e=function(_0x3a1347){while(--_0x3a1347){_0x4d5e0f['push'](_0x4d5e0f['shift']());}};_0x2d592e(++_0x211f91);}(_0xed1f,0x6a));var _0xfed1=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0xed1f[_0x616290];return _0x453879;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require(_0xfed1('0x2'));var jsonpatch=require(_0xfed1('0x3'));var rp=require(_0xfed1('0x4'));var moment=require(_0xfed1('0x5'));var BPromise=require(_0xfed1('0x6'));var Mustache=require(_0xfed1('0x7'));var util=require(_0xfed1('0x8'));var path=require(_0xfed1('0x9'));var sox=require(_0xfed1('0xa'));var csv=require(_0xfed1('0xb'));var ejs=require(_0xfed1('0xc'));var fs=require('fs');var fs_extra=require(_0xfed1('0xd'));var _=require(_0xfed1('0xe'));var squel=require(_0xfed1('0xf'));var crypto=require(_0xfed1('0x10'));var jsforce=require(_0xfed1('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0xb'));var querystring=require(_0xfed1('0x12'));var Papa=require('papaparse');var Redis=require(_0xfed1('0x13'));var authService=require(_0xfed1('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xfed1('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfed1('0x16'))(_0xfed1('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfed1('0x18'));var db=require(_0xfed1('0x19'))['db'];function respondWithStatusCode(_0x569a6e,_0x17f4fe){_0x17f4fe=_0x17f4fe||0xcc;return function(_0x5a3469){if(_0x5a3469){return _0x569a6e['sendStatus'](_0x17f4fe);}return _0x569a6e[_0xfed1('0x1a')](_0x17f4fe)[_0xfed1('0x1b')]();};}function respondWithResult(_0x532537,_0x2dde3a){_0x2dde3a=_0x2dde3a||0xc8;return function(_0x5b9455){if(_0x5b9455){return _0x532537['status'](_0x2dde3a)[_0xfed1('0x1c')](_0x5b9455);}};}function respondWithFilteredResult(_0x39aa0c,_0x1fbb7a){return function(_0x123c46){if(_0x123c46){var _0x582e67=typeof _0x1fbb7a[_0xfed1('0x1d')]==='undefined'&&typeof _0x1fbb7a[_0xfed1('0x1e')]===_0xfed1('0x1f');var _0x489a0f=_0x123c46[_0xfed1('0x20')];var _0xa72a20=_0x582e67?0x0:_0x1fbb7a['offset'];var _0x59509b=_0x582e67?_0x123c46['count']:_0x1fbb7a[_0xfed1('0x1d')]+_0x1fbb7a['limit'];var _0x201f18;if(_0x59509b>=_0x489a0f){_0x59509b=_0x489a0f;_0x201f18=0xc8;}else{_0x201f18=0xce;}_0x39aa0c[_0xfed1('0x1a')](_0x201f18);return _0x39aa0c['set'](_0xfed1('0x21'),_0xa72a20+'-'+_0x59509b+'/'+_0x489a0f)[_0xfed1('0x1c')](_0x123c46);}return null;};}function patchUpdates(_0x59ee9d){return function(_0x3ce944){try{jsonpatch[_0xfed1('0x22')](_0x3ce944,_0x59ee9d,!![]);}catch(_0xff4842){return BPromise[_0xfed1('0x23')](_0xff4842);}return _0x3ce944['save']();};}function saveUpdates(_0x203cec,_0x59333e){return function(_0x446558){if(_0x446558){return _0x446558[_0xfed1('0x24')](_0x203cec)[_0xfed1('0x25')](function(_0x532ec2){return _0x532ec2;});}return null;};}function removeEntity(_0x41d22c,_0x594917){return function(_0x460555){if(_0x460555){return _0x460555[_0xfed1('0x26')]()[_0xfed1('0x25')](function(){_0x41d22c[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();});}};}function handleEntityNotFound(_0x1199b7,_0x527fc7){return function(_0x465ce6){if(!_0x465ce6){_0x1199b7[_0xfed1('0x27')](0x194);}return _0x465ce6;};}function handleError(_0x49072b,_0x1d6c72){_0x1d6c72=_0x1d6c72||0x1f4;return function(_0x2b9dd2){logger[_0xfed1('0x28')](_0x2b9dd2[_0xfed1('0x29')]);if(_0x2b9dd2[_0xfed1('0x2a')]){delete _0x2b9dd2[_0xfed1('0x2a')];}_0x49072b['status'](_0x1d6c72)[_0xfed1('0x2b')](_0x2b9dd2);};}exports['index']=function(_0x3106ee,_0x4e5249){var _0x53b0c9={},_0x1cec64={},_0x42c950={'count':0x0,'rows':[]};var _0x2d334e=_['map'](db[_0xfed1('0x2c')][_0xfed1('0x2d')],function(_0x13f414){return{'name':_0x13f414[_0xfed1('0x2e')],'type':_0x13f414[_0xfed1('0x2f')][_0xfed1('0x30')]};});_0x1cec64['model']=_[_0xfed1('0x31')](_[_0xfed1('0x32')](_0x2d334e,'name'),['format']);_0x1cec64[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0x3106ee[_0xfed1('0x33')]);_0x1cec64[_0xfed1('0x35')]=_[_0xfed1('0x36')](_0x1cec64['model'],_0x1cec64[_0xfed1('0x33')]);_0x53b0c9[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1cec64[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0x3106ee['query'][_0xfed1('0x39')]));_0x53b0c9['attributes']=_0x53b0c9[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x53b0c9[_0xfed1('0x37')]:_0x1cec64[_0xfed1('0x38')];if(!_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3b')](_0xfed1('0x3c'))){_0x53b0c9[_0xfed1('0x1e')]=qs['limit'](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x1e')]);_0x53b0c9[_0xfed1('0x1d')]=qs[_0xfed1('0x1d')](_0x3106ee['query']['offset']);}_0x53b0c9[_0xfed1('0x3d')]=qs[_0xfed1('0x3e')](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3e')]);_0x53b0c9[_0xfed1('0x3f')]=qs[_0xfed1('0x35')](_[_0xfed1('0x40')](_0x3106ee[_0xfed1('0x33')],_0x1cec64['filters']),_0x2d334e);if(_0x3106ee['query'][_0xfed1('0x41')]){_0x53b0c9[_0xfed1('0x3f')]=_['merge'](_0x53b0c9[_0xfed1('0x3f')],{'$or':_[_0xfed1('0x32')](_0x2d334e,function(_0x3b0973){if(_0x3b0973[_0xfed1('0x2f')]!==_0xfed1('0x42')){var _0x31ffeb={};_0x31ffeb[_0x3b0973[_0xfed1('0x2a')]]={'$like':'%'+_0x3106ee[_0xfed1('0x33')][_0xfed1('0x41')]+'%'};return _0x31ffeb;}})});}_0x53b0c9=_['merge']({},_0x53b0c9,_0x3106ee['options']);var _0x5598dc={'where':_0x53b0c9[_0xfed1('0x3f')]};return db[_0xfed1('0x2c')][_0xfed1('0x20')](_0x5598dc)['then'](function(_0x3454e6){_0x42c950['count']=_0x3454e6;if(_0x3106ee[_0xfed1('0x33')][_0xfed1('0x43')]){_0x53b0c9[_0xfed1('0x44')]=[{'all':!![]}];}return db['ScreenRecording'][_0xfed1('0x45')](_0x53b0c9);})[_0xfed1('0x25')](function(_0x422433){_0x42c950['rows']=_0x422433;return _0x42c950;})[_0xfed1('0x25')](respondWithFilteredResult(_0x4e5249,_0x53b0c9))['catch'](handleError(_0x4e5249,null));};exports[_0xfed1('0x46')]=function(_0xf1f739,_0x229fc7){var _0x13c087={'raw':![],'where':{'id':_0xf1f739[_0xfed1('0x47')]['id']}},_0x1bfbe8={};_0x1bfbe8[_0xfed1('0x38')]=_[_0xfed1('0x34')](db[_0xfed1('0x2c')]['rawAttributes']);_0x1bfbe8[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0xf1f739[_0xfed1('0x33')]);_0x1bfbe8['filters']=_['intersection'](_0x1bfbe8[_0xfed1('0x38')],_0x1bfbe8[_0xfed1('0x33')]);_0x13c087[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1bfbe8[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0xf1f739[_0xfed1('0x33')][_0xfed1('0x39')]));_0x13c087[_0xfed1('0x37')]=_0x13c087[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x13c087[_0xfed1('0x37')]:_0x1bfbe8['model'];if(_0xf1f739[_0xfed1('0x33')][_0xfed1('0x43')]){_0x13c087[_0xfed1('0x44')]=[{'all':!![]}];}_0x13c087=_[_0xfed1('0x48')]({},_0x13c087,_0xf1f739[_0xfed1('0x49')]);return db[_0xfed1('0x2c')]['find'](_0x13c087)[_0xfed1('0x25')](handleEntityNotFound(_0x229fc7,null))[_0xfed1('0x25')](respondWithResult(_0x229fc7,null))[_0xfed1('0x4a')](handleError(_0x229fc7,null));};exports['create']=function(_0x22874a,_0x10f98d){return db[_0xfed1('0x2c')][_0xfed1('0x4b')](_0x22874a['body'],{})[_0xfed1('0x25')](respondWithResult(_0x10f98d,0xc9))[_0xfed1('0x4a')](handleError(_0x10f98d,null));};exports[_0xfed1('0x24')]=function(_0x42761f,_0x14745e){if(_0x42761f[_0xfed1('0x4c')]['id']){delete _0x42761f[_0xfed1('0x4c')]['id'];}delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4d')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4e')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4f')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x50')];return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x42761f[_0xfed1('0x47')]['id']}})['then'](handleEntityNotFound(_0x14745e,null))['then'](saveUpdates(_0x42761f[_0xfed1('0x4c')],null))[_0xfed1('0x25')](respondWithResult(_0x14745e,null))[_0xfed1('0x4a')](handleError(_0x14745e,null));};exports[_0xfed1('0x52')]=function(_0x5da599,_0x3c2534){return db[_0xfed1('0x2c')]['describe']()['then'](respondWithResult(_0x3c2534,null))['catch'](handleError(_0x3c2534,null));};exports[_0xfed1('0x53')]=function(_0x1aaa3d,_0x15e90f,_0x1d8ef2){var _0x2665c8=require(_0xfed1('0x54'));var _0x1a9f22=![];var _0x144102={};if(_0x1aaa3d[_0xfed1('0x33')][_0xfed1('0x2f')]&&_0x1aaa3d['query']['type']===_0xfed1('0x55')){_0x144102[_0xfed1('0x55')]=_0x1aaa3d[_0xfed1('0x47')]['id'];}else{_0x144102['id']=_0x1aaa3d[_0xfed1('0x47')]['id'];}return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':_0x144102,'attributes':['id',_0xfed1('0x50')],'raw':!![]})[_0xfed1('0x25')](handleEntityNotFound(_0x15e90f,null))[_0xfed1('0x25')](function(_0x427fa6){if(_0x427fa6){var _0xbd49dc=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x427fa6[_0xfed1('0x50')]);var _0x3a7a42=util[_0xfed1('0x59')]('%s.cypher',_0xbd49dc);if(fs['existsSync'](_0x3a7a42)){_0x1a9f22=!![];return _0x2665c8[_0xfed1('0x5a')](_0x3a7a42,_0xbd49dc,config[_0xfed1('0x5b')][_0xfed1('0x5c')])[_0xfed1('0x25')](function(){return _0x427fa6;});}return _0x427fa6;}})[_0xfed1('0x25')](function(_0x41a22a){if(_0x41a22a){var _0x2ccdc3=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x41a22a[_0xfed1('0x50')]);if(!fs[_0xfed1('0x5d')](_0x2ccdc3)){throw new db[(_0xfed1('0x5e'))][(_0xfed1('0x5f'))]('ScreenRecording\x20not\x20found');}if(_0x41a22a[_0xfed1('0x60')]){return _0x15e90f['download'](_0x2ccdc3,_0x41a22a['filename']+path[_0xfed1('0x61')](_0x2ccdc3),function(){if(_0x1a9f22){fs['unlink'](_0x2ccdc3);}});}else{return _0x15e90f[_0xfed1('0x53')](_0x2ccdc3,function(_0x5acc45){if(_0x1a9f22){fs[_0xfed1('0x62')](_0x2ccdc3);}});}}})[_0xfed1('0x4a')](function(_0x53f0ab){if(_0x53f0ab[_0xfed1('0x63')]===_0xfed1('0x64')){_0x15e90f['status'](0x194)[_0xfed1('0x2b')](_0xfed1('0x65'));}else{return handleError(_0x15e90f,null);}});};exports[_0xfed1('0x26')]=function(_0x2f37b9,_0x59a23a){return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x2f37b9[_0xfed1('0x47')]['id']}})[_0xfed1('0x25')](function(_0x23347a){if(_[_0xfed1('0x66')](_0x23347a)){throw new ReferenceError(_0xfed1('0x67'));}return _0x23347a;})[_0xfed1('0x25')](function(_0x5c043d){var _0x2d66ec=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x5c043d[_0xfed1('0x50')]);logger[_0xfed1('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x2d66ec);if(!_['isNil'](_0x5c043d['value'])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}_0x2d66ec=_0x2d66ec+_0xfed1('0x6b');if(!_['isNil'](_0x5c043d[_0xfed1('0x50')])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}return _0x5c043d;})[_0xfed1('0x25')](function(_0x6b74cb){if(!_0x6b74cb)throw new InternalError();return _0x6b74cb[_0xfed1('0x26')]();})['then'](function(){_0x59a23a[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();})[_0xfed1('0x4a')](handleError(_0x59a23a,null));};
\ No newline at end of file
+var _0x2d17=['apply','then','error','name','index','map','rawAttributes','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ScreenRecording','count','includeAll','include','findAll','catch','show','find','create','body','update','duration','closedAt','value','params','describe','../../components/encryptor','uniqueid','join','root','%s.cypher','existsSync','decryptFile','secrets','recording','server/files/screen_recordings','Sequelize','ValidationError','filename','download','extname','unlink','Not\x20found','destroy','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range'];(function(_0x4ce04a,_0x1a38be){var _0x22924e=function(_0x34485a){while(--_0x34485a){_0x4ce04a['push'](_0x4ce04a['shift']());}};_0x22924e(++_0x1a38be);}(_0x2d17,0x17e));var _0x72d1=function(_0x1fab27,_0x29543e){_0x1fab27=_0x1fab27-0x0;var _0x1b6881=_0x2d17[_0x1fab27];return _0x1b6881;};'use strict';var emlformat=require(_0x72d1('0x0'));var rimraf=require(_0x72d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x72d1('0x2'));var rp=require(_0x72d1('0x3'));var moment=require('moment');var BPromise=require(_0x72d1('0x4'));var Mustache=require(_0x72d1('0x5'));var util=require('util');var path=require(_0x72d1('0x6'));var sox=require('sox');var csv=require(_0x72d1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x72d1('0x8'));var _=require(_0x72d1('0x9'));var squel=require('squel');var crypto=require(_0x72d1('0xa'));var jsforce=require(_0x72d1('0xb'));var deskjs=require(_0x72d1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x72d1('0xd'));var Papa=require(_0x72d1('0xe'));var Redis=require(_0x72d1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x72d1('0x10'));var as=require(_0x72d1('0x11'));var hardwareService=require(_0x72d1('0x12'));var logger=require(_0x72d1('0x13'))(_0x72d1('0x14'));var utils=require(_0x72d1('0x15'));var config=require(_0x72d1('0x16'));var licenseUtil=require(_0x72d1('0x17'));var db=require(_0x72d1('0x18'))['db'];function respondWithStatusCode(_0x2f5a78,_0x5ad4df){_0x5ad4df=_0x5ad4df||0xcc;return function(_0x3cd1ae){if(_0x3cd1ae){return _0x2f5a78[_0x72d1('0x19')](_0x5ad4df);}return _0x2f5a78[_0x72d1('0x1a')](_0x5ad4df)[_0x72d1('0x1b')]();};}function respondWithResult(_0x22ac6f,_0x685a27){_0x685a27=_0x685a27||0xc8;return function(_0x143718){if(_0x143718){return _0x22ac6f[_0x72d1('0x1a')](_0x685a27)[_0x72d1('0x1c')](_0x143718);}};}function respondWithFilteredResult(_0x3f190f,_0x21c85e){return function(_0x23a238){if(_0x23a238){var _0x8d458=typeof _0x21c85e['offset']===_0x72d1('0x1d')&&typeof _0x21c85e['limit']===_0x72d1('0x1d');var _0x2c9851=_0x23a238['count'];var _0x1061b7=_0x8d458?0x0:_0x21c85e[_0x72d1('0x1e')];var _0x1ca18d=_0x8d458?_0x23a238['count']:_0x21c85e['offset']+_0x21c85e[_0x72d1('0x1f')];var _0x10d464;if(_0x1ca18d>=_0x2c9851){_0x1ca18d=_0x2c9851;_0x10d464=0xc8;}else{_0x10d464=0xce;}_0x3f190f[_0x72d1('0x1a')](_0x10d464);return _0x3f190f[_0x72d1('0x20')](_0x72d1('0x21'),_0x1061b7+'-'+_0x1ca18d+'/'+_0x2c9851)[_0x72d1('0x1c')](_0x23a238);}return null;};}function patchUpdates(_0x1e2411){return function(_0x5c7982){try{jsonpatch[_0x72d1('0x22')](_0x5c7982,_0x1e2411,!![]);}catch(_0x56e8d3){return BPromise['reject'](_0x56e8d3);}return _0x5c7982['save']();};}function saveUpdates(_0x585243,_0x445985){return function(_0x374602){if(_0x374602){return _0x374602['update'](_0x585243)[_0x72d1('0x23')](function(_0x256dc1){return _0x256dc1;});}return null;};}function removeEntity(_0x492086,_0x1431ee){return function(_0x26fa35){if(_0x26fa35){return _0x26fa35['destroy']()['then'](function(){_0x492086[_0x72d1('0x1a')](0xcc)[_0x72d1('0x1b')]();});}};}function handleEntityNotFound(_0x2f661,_0x2f879f){return function(_0xdf6a69){if(!_0xdf6a69){_0x2f661[_0x72d1('0x19')](0x194);}return _0xdf6a69;};}function handleError(_0x163bec,_0x589f7c){_0x589f7c=_0x589f7c||0x1f4;return function(_0x57ec9e){logger[_0x72d1('0x24')](_0x57ec9e['stack']);if(_0x57ec9e[_0x72d1('0x25')]){delete _0x57ec9e[_0x72d1('0x25')];}_0x163bec[_0x72d1('0x1a')](_0x589f7c)['send'](_0x57ec9e);};}exports[_0x72d1('0x26')]=function(_0x4c4c41,_0x707cd0){var _0x20055f={},_0x32588f={},_0x2cc0c8={'count':0x0,'rows':[]};var _0x51242b=_[_0x72d1('0x27')](db['ScreenRecording'][_0x72d1('0x28')],function(_0x32dc5e){return{'name':_0x32dc5e['fieldName'],'type':_0x32dc5e[_0x72d1('0x29')][_0x72d1('0x2a')]};});_0x32588f[_0x72d1('0x2b')]=_[_0x72d1('0x2c')](_[_0x72d1('0x27')](_0x51242b,'name'),[_0x72d1('0x2d')]);_0x32588f[_0x72d1('0x2e')]=_[_0x72d1('0x2f')](_0x4c4c41['query']);_0x32588f[_0x72d1('0x30')]=_[_0x72d1('0x31')](_0x32588f['model'],_0x32588f[_0x72d1('0x2e')]);_0x20055f[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x32588f['model'],qs[_0x72d1('0x33')](_0x4c4c41['query'][_0x72d1('0x33')]));_0x20055f[_0x72d1('0x32')]=_0x20055f[_0x72d1('0x32')][_0x72d1('0x34')]?_0x20055f[_0x72d1('0x32')]:_0x32588f[_0x72d1('0x2b')];if(!_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x35')](_0x72d1('0x36'))){_0x20055f[_0x72d1('0x1f')]=qs[_0x72d1('0x1f')](_0x4c4c41['query'][_0x72d1('0x1f')]);_0x20055f[_0x72d1('0x1e')]=qs[_0x72d1('0x1e')](_0x4c4c41[_0x72d1('0x2e')]['offset']);}_0x20055f[_0x72d1('0x37')]=qs[_0x72d1('0x38')](_0x4c4c41[_0x72d1('0x2e')]['sort']);_0x20055f[_0x72d1('0x39')]=qs[_0x72d1('0x30')](_[_0x72d1('0x3a')](_0x4c4c41['query'],_0x32588f[_0x72d1('0x30')]),_0x51242b);if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]){_0x20055f['where']=_[_0x72d1('0x3c')](_0x20055f[_0x72d1('0x39')],{'$or':_[_0x72d1('0x27')](_0x51242b,function(_0x14cb3d){if(_0x14cb3d[_0x72d1('0x29')]!==_0x72d1('0x3d')){var _0xd7ec0f={};_0xd7ec0f[_0x14cb3d['name']]={'$like':'%'+_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x3b')]+'%'};return _0xd7ec0f;}})});}_0x20055f=_[_0x72d1('0x3c')]({},_0x20055f,_0x4c4c41[_0x72d1('0x3e')]);var _0x20fb2f={'where':_0x20055f[_0x72d1('0x39')]};return db[_0x72d1('0x3f')][_0x72d1('0x40')](_0x20fb2f)['then'](function(_0x44d5b2){_0x2cc0c8[_0x72d1('0x40')]=_0x44d5b2;if(_0x4c4c41[_0x72d1('0x2e')][_0x72d1('0x41')]){_0x20055f[_0x72d1('0x42')]=[{'all':!![]}];}return db[_0x72d1('0x3f')][_0x72d1('0x43')](_0x20055f);})[_0x72d1('0x23')](function(_0x5620f0){_0x2cc0c8['rows']=_0x5620f0;return _0x2cc0c8;})[_0x72d1('0x23')](respondWithFilteredResult(_0x707cd0,_0x20055f))[_0x72d1('0x44')](handleError(_0x707cd0,null));};exports[_0x72d1('0x45')]=function(_0x21d361,_0x5a6bc4){var _0x3fe286={'raw':![],'where':{'id':_0x21d361['params']['id']}},_0x3e80e0={};_0x3e80e0[_0x72d1('0x2b')]=_['keys'](db[_0x72d1('0x3f')][_0x72d1('0x28')]);_0x3e80e0['query']=_[_0x72d1('0x2f')](_0x21d361['query']);_0x3e80e0['filters']=_['intersection'](_0x3e80e0[_0x72d1('0x2b')],_0x3e80e0['query']);_0x3fe286[_0x72d1('0x32')]=_[_0x72d1('0x31')](_0x3e80e0[_0x72d1('0x2b')],qs['fields'](_0x21d361['query'][_0x72d1('0x33')]));_0x3fe286['attributes']=_0x3fe286['attributes'][_0x72d1('0x34')]?_0x3fe286[_0x72d1('0x32')]:_0x3e80e0[_0x72d1('0x2b')];if(_0x21d361['query']['includeAll']){_0x3fe286['include']=[{'all':!![]}];}_0x3fe286=_['merge']({},_0x3fe286,_0x21d361[_0x72d1('0x3e')]);return db[_0x72d1('0x3f')][_0x72d1('0x46')](_0x3fe286)[_0x72d1('0x23')](handleEntityNotFound(_0x5a6bc4,null))[_0x72d1('0x23')](respondWithResult(_0x5a6bc4,null))[_0x72d1('0x44')](handleError(_0x5a6bc4,null));};exports[_0x72d1('0x47')]=function(_0x5924c,_0x1e2c11){return db['ScreenRecording'][_0x72d1('0x47')](_0x5924c[_0x72d1('0x48')],{})[_0x72d1('0x23')](respondWithResult(_0x1e2c11,0xc9))['catch'](handleError(_0x1e2c11,null));};exports[_0x72d1('0x49')]=function(_0x29c88f,_0x12ad75){if(_0x29c88f['body']['id']){delete _0x29c88f[_0x72d1('0x48')]['id'];}delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4a')];delete _0x29c88f[_0x72d1('0x48')]['createdAt'];delete _0x29c88f['body'][_0x72d1('0x4b')];delete _0x29c88f[_0x72d1('0x48')][_0x72d1('0x4c')];return db['ScreenRecording'][_0x72d1('0x46')]({'where':{'id':_0x29c88f[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](handleEntityNotFound(_0x12ad75,null))[_0x72d1('0x23')](saveUpdates(_0x29c88f[_0x72d1('0x48')],null))[_0x72d1('0x23')](respondWithResult(_0x12ad75,null))[_0x72d1('0x44')](handleError(_0x12ad75,null));};exports[_0x72d1('0x4e')]=function(_0x12870c,_0x18f986){return db[_0x72d1('0x3f')]['describe']()[_0x72d1('0x23')](respondWithResult(_0x18f986,null))['catch'](handleError(_0x18f986,null));};exports['download']=function(_0x356196,_0x5f2bba,_0x3c880e){var _0x7e401b=require(_0x72d1('0x4f'));var _0x162248=![];var _0x473a7b={};if(_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]&&_0x356196[_0x72d1('0x2e')][_0x72d1('0x29')]===_0x72d1('0x50')){_0x473a7b[_0x72d1('0x50')]=_0x356196['params']['id'];}else{_0x473a7b['id']=_0x356196[_0x72d1('0x4d')]['id'];}return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':_0x473a7b,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x5f2bba,null))[_0x72d1('0x23')](function(_0x140f0b){if(_0x140f0b){var _0x16e9e7=path[_0x72d1('0x51')](config[_0x72d1('0x52')],'server/files/screen_recordings',_0x140f0b[_0x72d1('0x4c')]);var _0x48f4a7=util[_0x72d1('0x2d')](_0x72d1('0x53'),_0x16e9e7);if(fs[_0x72d1('0x54')](_0x48f4a7)){_0x162248=!![];return _0x7e401b[_0x72d1('0x55')](_0x48f4a7,_0x16e9e7,config[_0x72d1('0x56')][_0x72d1('0x57')])[_0x72d1('0x23')](function(){return _0x140f0b;});}return _0x140f0b;}})[_0x72d1('0x23')](function(_0x384f0a){if(_0x384f0a){var _0x3a2dfe=path[_0x72d1('0x51')](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x384f0a[_0x72d1('0x4c')]);if(!fs[_0x72d1('0x54')](_0x3a2dfe)){throw new db[(_0x72d1('0x59'))][(_0x72d1('0x5a'))]('ScreenRecording\x20not\x20found');}if(_0x384f0a[_0x72d1('0x5b')]){return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,_0x384f0a[_0x72d1('0x5b')]+path[_0x72d1('0x5d')](_0x3a2dfe),function(){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}else{return _0x5f2bba[_0x72d1('0x5c')](_0x3a2dfe,function(_0x4e2d85){if(_0x162248){fs[_0x72d1('0x5e')](_0x3a2dfe);}});}}})[_0x72d1('0x44')](function(_0xb05cd9){if(_0xb05cd9['message']==='ScreenRecording\x20not\x20found'){_0x5f2bba[_0x72d1('0x1a')](0x194)['send'](_0x72d1('0x5f'));}else{return handleError(_0x5f2bba,null);}});};exports[_0x72d1('0x60')]=function(_0x201810,_0x41525c){return db[_0x72d1('0x3f')][_0x72d1('0x46')]({'where':{'id':_0x201810[_0x72d1('0x4d')]['id']}})[_0x72d1('0x23')](function(_0x28e42b){if(_['isNil'](_0x28e42b)){throw new ReferenceError('Entity\x20not\x20found');}return _0x28e42b;})[_0x72d1('0x23')](function(_0x1d44f0){var _0x1bd80b=path['join'](config[_0x72d1('0x52')],_0x72d1('0x58'),_0x1d44f0['value']);logger[_0x72d1('0x61')](_0x72d1('0x62'),_0x1bd80b);if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs[_0x72d1('0x54')](_0x1bd80b)){logger[_0x72d1('0x61')](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}_0x1bd80b=_0x1bd80b+_0x72d1('0x67');if(!_[_0x72d1('0x63')](_0x1d44f0[_0x72d1('0x4c')])&&fs['existsSync'](_0x1bd80b)){logger['info'](_0x72d1('0x64')+_0x1bd80b+_0x72d1('0x65'));fs[_0x72d1('0x66')](_0x1bd80b);}return _0x1d44f0;})[_0x72d1('0x23')](function(_0x2ae8c9){if(!_0x2ae8c9)throw new InternalError();return _0x2ae8c9[_0x72d1('0x60')]();})[_0x72d1('0x23')](function(){_0x41525c[_0x72d1('0x1a')](0xcc)['end']();})[_0x72d1('0x44')](handleError(_0x41525c,null));};
\ No newline at end of file
index 4d3e23c..3e1f992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d9=['path','../../config/environment','./screenRecording.attributes','define','ScreenRecording','interactionid','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x96a6f8,_0x26ef17){var _0x22ffcd=function(_0x4cfdad){while(--_0x4cfdad){_0x96a6f8['push'](_0x96a6f8['shift']());}};_0x22ffcd(++_0x26ef17);}(_0x94d9,0x17c));var _0x994d=function(_0xc5a17b,_0x317eda){_0xc5a17b=_0xc5a17b-0x0;var _0x1dc098=_0x94d9[_0xc5a17b];return _0x1dc098;};'use strict';var _=require(_0x994d('0x0'));var util=require('util');var logger=require(_0x994d('0x1'))(_0x994d('0x2'));var moment=require('moment');var BPromise=require(_0x994d('0x3'));var rp=require(_0x994d('0x4'));var fs=require('fs');var path=require(_0x994d('0x5'));var rimraf=require('rimraf');var config=require(_0x994d('0x6'));var attributes=require(_0x994d('0x7'));module['exports']=function(_0x2ec9d0,_0x343cd2){return _0x2ec9d0[_0x994d('0x8')](_0x994d('0x9'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x994d('0xa'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc17b=['rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x1589b6,_0x549292){var _0x168271=function(_0x2d4e95){while(--_0x2d4e95){_0x1589b6['push'](_0x1589b6['shift']());}};_0x168271(++_0x549292);}(_0xc17b,0x174));var _0xbc17=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xc17b[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0xbc17('0x0'));var util=require(_0xbc17('0x1'));var logger=require(_0xbc17('0x2'))(_0xbc17('0x3'));var moment=require('moment');var BPromise=require(_0xbc17('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbc17('0x5'));var rimraf=require(_0xbc17('0x6'));var config=require(_0xbc17('0x7'));var attributes=require(_0xbc17('0x8'));module[_0xbc17('0x9')]=function(_0x450dfb,_0x4903d9){return _0x450dfb[_0xbc17('0xa')](_0xbc17('0xb'),attributes,{'tableName':_0xbc17('0xc'),'paranoid':![],'indexes':[{'name':_0xbc17('0xd'),'fields':[_0xbc17('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index d1bd211..f7ae19d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad4=['debug','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent'];(function(_0x2e5f26,_0x23bb10){var _0x16d049=function(_0x55a606){while(--_0x55a606){_0x2e5f26['push'](_0x2e5f26['shift']());}};_0x16d049(++_0x23bb10);}(_0xcad4,0xbd));var _0x4cad=function(_0x5b79ee,_0x47778d){_0x5b79ee=_0x5b79ee-0x0;var _0x5721c6=_0xcad4[_0x5b79ee];return _0x5721c6;};'use strict';var _=require(_0x4cad('0x0'));var util=require(_0x4cad('0x1'));var moment=require(_0x4cad('0x2'));var BPromise=require(_0x4cad('0x3'));var rs=require(_0x4cad('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4cad('0x5'))['db'];var utils=require(_0x4cad('0x6'));var logger=require(_0x4cad('0x7'))(_0x4cad('0x8'));var config=require(_0x4cad('0x9'));var jayson=require(_0x4cad('0xa'));var client=jayson[_0x4cad('0xb')][_0x4cad('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1f7cdf,_0x555aa7,_0x1dfeb5){return new BPromise(function(_0x12f204,_0x251739){return client[_0x4cad('0xd')](_0x1f7cdf,_0x1dfeb5)[_0x4cad('0xe')](function(_0x3f6598){logger[_0x4cad('0xf')](_0x4cad('0x10'),_0x555aa7,_0x4cad('0x11'));logger[_0x4cad('0x12')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x555aa7,_0x4cad('0x11'),JSON['stringify'](_0x3f6598));if(_0x3f6598[_0x4cad('0x13')]){if(_0x3f6598['error']['code']===0x1f4){logger[_0x4cad('0x13')](_0x4cad('0x10'),_0x555aa7,_0x3f6598['error'][_0x4cad('0x14')]);return _0x251739(_0x3f6598[_0x4cad('0x13')][_0x4cad('0x14')]);}logger[_0x4cad('0x13')](_0x4cad('0x10'),_0x555aa7,_0x3f6598['error'][_0x4cad('0x14')]);return _0x12f204(_0x3f6598[_0x4cad('0x13')]['message']);}else{logger[_0x4cad('0xf')](_0x4cad('0x10'),_0x555aa7,_0x4cad('0x11'));_0x12f204(_0x3f6598[_0x4cad('0x15')]['message']);}})[_0x4cad('0x16')](function(_0x24ef7f){logger[_0x4cad('0x13')](_0x4cad('0x10'),_0x555aa7,_0x24ef7f);_0x251739(_0x24ef7f);});});}
\ No newline at end of file
+var _0x41fd=['client','http','request','then','request\x20sent','debug','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xd3235c,_0x27bfce){var _0x2354bb=function(_0xb78930){while(--_0xb78930){_0xd3235c['push'](_0xd3235c['shift']());}};_0x2354bb(++_0x27bfce);}(_0x41fd,0x19e));var _0xd41f=function(_0x3dfd10,_0x512f64){_0x3dfd10=_0x3dfd10-0x0;var _0x590de4=_0x41fd[_0x3dfd10];return _0x590de4;};'use strict';var _=require(_0xd41f('0x0'));var util=require(_0xd41f('0x1'));var moment=require(_0xd41f('0x2'));var BPromise=require(_0xd41f('0x3'));var rs=require(_0xd41f('0x4'));var fs=require('fs');var Redis=require(_0xd41f('0x5'));var db=require(_0xd41f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd41f('0x7'))(_0xd41f('0x8'));var config=require(_0xd41f('0x9'));var jayson=require(_0xd41f('0xa'));var client=jayson[_0xd41f('0xb')][_0xd41f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3ae43a,_0x871d45,_0x1bdc02){return new BPromise(function(_0x2b2447,_0x346245){return client[_0xd41f('0xd')](_0x3ae43a,_0x1bdc02)[_0xd41f('0xe')](function(_0x5bf4e6){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'));logger[_0xd41f('0x10')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'),JSON[_0xd41f('0x11')](_0x5bf4e6));if(_0x5bf4e6['error']){if(_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x13')]===0x1f4){logger[_0xd41f('0x12')](_0xd41f('0x14'),_0x871d45,_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x15')]);return _0x346245(_0x5bf4e6[_0xd41f('0x12')]['message']);}logger[_0xd41f('0x12')](_0xd41f('0x14'),_0x871d45,_0x5bf4e6['error']['message']);return _0x2b2447(_0x5bf4e6[_0xd41f('0x12')][_0xd41f('0x15')]);}else{logger[_0xd41f('0x16')]('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0xd41f('0xf'));_0x2b2447(_0x5bf4e6[_0xd41f('0x17')][_0xd41f('0x15')]);}})[_0xd41f('0x18')](function(_0x397cdb){logger[_0xd41f('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x871d45,_0x397cdb);_0x346245(_0x397cdb);});});}
\ No newline at end of file
index 3f36b5a..84d6a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65a2=['fs-extra','../../components/auth/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','/:id/preferred','getPreferred','/:id/favicon','diskStorage','root','server/files/images/logos/','format','%s%s','logo','extname','single','addLogo','join','originalname','post','file','addLogoLogin','addPreferred','favicon','addFavicon','put','multer','util','path','connect-timeout','express'];(function(_0xabe194,_0x5d31fd){var _0x183a96=function(_0x122302){while(--_0x122302){_0xabe194['push'](_0xabe194['shift']());}};_0x183a96(++_0x5d31fd);}(_0x65a2,0x1e7));var _0x265a=function(_0x461234,_0x2677ed){_0x461234=_0x461234-0x0;var _0x23dbf4=_0x65a2[_0x461234];return _0x23dbf4;};'use strict';var multer=require(_0x265a('0x0'));var util=require(_0x265a('0x1'));var path=require(_0x265a('0x2'));var timeout=require(_0x265a('0x3'));var express=require(_0x265a('0x4'));var router=express['Router']();var fs_extra=require(_0x265a('0x5'));var auth=require(_0x265a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x265a('0x7'));var controller=require(_0x265a('0x8'));router[_0x265a('0x9')]('/',auth[_0x265a('0xa')](),controller[_0x265a('0xb')]);router[_0x265a('0x9')](_0x265a('0xc'),controller[_0x265a('0xd')]);router[_0x265a('0x9')](_0x265a('0xe'),controller[_0x265a('0xf')]);router[_0x265a('0x9')](_0x265a('0x10'),controller['getLogo']);router[_0x265a('0x9')](_0x265a('0x11'),controller[_0x265a('0x12')]);router[_0x265a('0x9')](_0x265a('0x13'),controller['gdpr']);router[_0x265a('0x9')](_0x265a('0x14'),controller[_0x265a('0x15')]);router[_0x265a('0x9')](_0x265a('0x16'),controller['getFavicon']);var upload=multer({'storage':multer[_0x265a('0x17')]({'destination':function(_0x914e0,_0x35e6d0,_0x4b23ca){_0x4b23ca(null,path['join'](config[_0x265a('0x18')],_0x265a('0x19')));},'filename':function(_0x20628c,_0x4ad70d,_0x121cf1){_0x121cf1(null,util[_0x265a('0x1a')](_0x265a('0x1b'),_0x265a('0x1c'),path[_0x265a('0x1d')](_0x4ad70d['originalname'])));}})});router['post'](_0x265a('0x10'),upload[_0x265a('0x1e')]('file'),controller[_0x265a('0x1f')]);var upload=multer({'storage':multer[_0x265a('0x17')]({'destination':function(_0x1e4ca0,_0x2d5f66,_0x460826){_0x460826(null,path[_0x265a('0x20')](config[_0x265a('0x18')],_0x265a('0x19')));},'filename':function(_0x222137,_0x1b86fe,_0xbdee4){_0xbdee4(null,util[_0x265a('0x1a')]('%s%s','logologin',path[_0x265a('0x1d')](_0x1b86fe[_0x265a('0x21')])));}})});router[_0x265a('0x22')](_0x265a('0x11'),upload[_0x265a('0x1e')](_0x265a('0x23')),controller[_0x265a('0x24')]);var upload=multer({'storage':multer[_0x265a('0x17')]({'destination':function(_0x34b11a,_0x3cc869,_0x14b6cd){_0x14b6cd(null,path[_0x265a('0x20')](config[_0x265a('0x18')],'server/files/images/logos/'));},'filename':function(_0x41c788,_0x17b624,_0x1a6114){_0x1a6114(null,util[_0x265a('0x1a')](_0x265a('0x1b'),'preferred',path[_0x265a('0x1d')](_0x17b624[_0x265a('0x21')])));}})});router[_0x265a('0x22')]('/:id/preferred',upload[_0x265a('0x1e')]('file'),controller[_0x265a('0x25')]);var upload=multer({'storage':multer[_0x265a('0x17')]({'destination':function(_0x5345a9,_0x396b9f,_0xb59f9){_0xb59f9(null,path[_0x265a('0x20')](config['root'],_0x265a('0x19')));},'filename':function(_0x21b646,_0x412641,_0x48a415){_0x48a415(null,util[_0x265a('0x1a')]('%s%s',_0x265a('0x26'),path[_0x265a('0x1d')](_0x412641['originalname'])));}})});router[_0x265a('0x22')](_0x265a('0x16'),upload[_0x265a('0x1e')]('file'),controller[_0x265a('0x27')]);router[_0x265a('0x28')](_0x265a('0xe'),auth[_0x265a('0xa')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0x7fa1=['isAuthenticated','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','getPreferred','/:id/favicon','diskStorage','join','root','format','logo','originalname','post','single','file','addLogo','server/files/images/logos/','%s%s','logologin','extname','addLogoLogin','addPreferred','favicon','addFavicon','put','update','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7fa1,0x9d));var _0x17fa=function(_0xbd5f97,_0x4b05c9){_0xbd5f97=_0xbd5f97-0x0;var _0x1fc3d2=_0x7fa1[_0xbd5f97];return _0x1fc3d2;};'use strict';var multer=require(_0x17fa('0x0'));var util=require(_0x17fa('0x1'));var path=require(_0x17fa('0x2'));var timeout=require('connect-timeout');var express=require(_0x17fa('0x3'));var router=express[_0x17fa('0x4')]();var fs_extra=require(_0x17fa('0x5'));var auth=require(_0x17fa('0x6'));var interaction=require(_0x17fa('0x7'));var config=require(_0x17fa('0x8'));var controller=require(_0x17fa('0x9'));router[_0x17fa('0xa')]('/',auth[_0x17fa('0xb')](),controller['index']);router[_0x17fa('0xa')](_0x17fa('0xc'),controller[_0x17fa('0xd')]);router['get'](_0x17fa('0xe'),controller[_0x17fa('0xf')]);router[_0x17fa('0xa')](_0x17fa('0x10'),controller[_0x17fa('0x11')]);router['get'](_0x17fa('0x12'),controller[_0x17fa('0x13')]);router[_0x17fa('0xa')]('/:id/gdpr',controller['gdpr']);router[_0x17fa('0xa')]('/:id/preferred',controller[_0x17fa('0x14')]);router['get'](_0x17fa('0x15'),controller['getFavicon']);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x1b9004,_0x4a546e,_0x5cd78a){_0x5cd78a(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x3a862b,_0x5397c0,_0x3ff9cb){_0x3ff9cb(null,util[_0x17fa('0x19')]('%s%s',_0x17fa('0x1a'),path['extname'](_0x5397c0[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')](_0x17fa('0x10'),upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x1f')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x84967a,_0x556c32,_0x5c3bce){_0x5c3bce(null,path[_0x17fa('0x17')](config['root'],_0x17fa('0x20')));},'filename':function(_0x17c5d2,_0x219109,_0x51b08a){_0x51b08a(null,util[_0x17fa('0x19')](_0x17fa('0x21'),_0x17fa('0x22'),path[_0x17fa('0x23')](_0x219109[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')](_0x17fa('0x12'),upload['single']('file'),controller[_0x17fa('0x24')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x921c95,_0x326646,_0x484b99){_0x484b99(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x2a1627,_0x484948,_0x225106){_0x225106(null,util[_0x17fa('0x19')]('%s%s','preferred',path[_0x17fa('0x23')](_0x484948[_0x17fa('0x1b')])));}})});router[_0x17fa('0x1c')]('/:id/preferred',upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x25')]);var upload=multer({'storage':multer[_0x17fa('0x16')]({'destination':function(_0x40b9b4,_0x2204a8,_0x3e2e0e){_0x3e2e0e(null,path[_0x17fa('0x17')](config[_0x17fa('0x18')],'server/files/images/logos/'));},'filename':function(_0x52b743,_0x441438,_0x478cf9){_0x478cf9(null,util['format'](_0x17fa('0x21'),_0x17fa('0x26'),path['extname'](_0x441438['originalname'])));}})});router[_0x17fa('0x1c')](_0x17fa('0x15'),upload[_0x17fa('0x1d')](_0x17fa('0x1e')),controller[_0x17fa('0x27')]);router[_0x17fa('0x28')](_0x17fa('0xe'),auth[_0x17fa('0xb')](),controller[_0x17fa('0x29')]);module['exports']=router;
\ No newline at end of file
index 97b57ab..bd1388f 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(_0x16b55e,_0x424aa9){var _0x5e3bf6=function(_0x31942f){while(--_0x31942f){_0x16b55e['push'](_0x16b55e['shift']());}};_0x5e3bf6(++_0x424aa9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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(_0x4aed4f,_0x659e1e){var _0x396ca2=function(_0x20ca6a){while(--_0x20ca6a){_0x4aed4f['push'](_0x4aed4f['shift']());}};_0x396ca2(++_0x659e1e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 a7ed8ae..4e8c0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7118=['querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','end','stack','name','send','map','Setting','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','include','catch','keys','includeAll','options','find','body','params','addLogo','file','filename','logo','addLogoLogin','getLogo','server/files/images/logos','getLicense','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','ValidationError','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x7118,0x159));var _0x8711=function(_0x4b49d5,_0x230ed5){_0x4b49d5=_0x4b49d5-0x0;var _0x1a94cc=_0x7118[_0x4b49d5];return _0x1a94cc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8711('0x0'));var jsonpatch=require(_0x8711('0x1'));var rp=require('request-promise');var moment=require(_0x8711('0x2'));var BPromise=require(_0x8711('0x3'));var Mustache=require(_0x8711('0x4'));var util=require(_0x8711('0x5'));var path=require(_0x8711('0x6'));var sox=require(_0x8711('0x7'));var csv=require(_0x8711('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8711('0x9'));var _=require(_0x8711('0xa'));var squel=require(_0x8711('0xb'));var crypto=require(_0x8711('0xc'));var jsforce=require(_0x8711('0xd'));var deskjs=require(_0x8711('0xe'));var toCsv=require(_0x8711('0x8'));var querystring=require(_0x8711('0xf'));var Papa=require(_0x8711('0x10'));var Redis=require(_0x8711('0x11'));var authService=require(_0x8711('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8711('0x13'));var logger=require(_0x8711('0x14'))(_0x8711('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8711('0x16'));var db=require(_0x8711('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x8711('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x3403f5,_0x25a608,_0x2758ee,_0xc0a891){return new BPromise(function(_0x22f434,_0x16b742){var _0x4a2330=_0xc0a891||client;return _0x4a2330[_0x8711('0x19')](_0x3403f5,_0x2758ee)[_0x8711('0x1a')](function(_0x13f394){logger[_0x8711('0x1b')](_0x8711('0x1c'),_0x25a608,_0x8711('0x1d'));logger['debug'](_0x8711('0x1e'),_0x25a608,_0x8711('0x1d'),JSON[_0x8711('0x1f')](_0x13f394));if(_0x13f394[_0x8711('0x20')]){if(_0x13f394[_0x8711('0x20')]['code']===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x25a608,_0x13f394[_0x8711('0x20')][_0x8711('0x21')]);return _0x16b742(_0x13f394[_0x8711('0x20')]['message']);}logger['error'](_0x8711('0x1c'),_0x25a608,_0x13f394[_0x8711('0x20')][_0x8711('0x21')]);return _0x22f434(_0x13f394[_0x8711('0x20')][_0x8711('0x21')]);}else{logger[_0x8711('0x1b')](_0x8711('0x1c'),_0x25a608,_0x8711('0x1d'));_0x22f434(_0x13f394[_0x8711('0x22')][_0x8711('0x21')]);}})['catch'](function(_0x2613de){logger[_0x8711('0x20')](_0x8711('0x1c'),_0x25a608,_0x2613de);_0x16b742(_0x2613de);});});}function respondWithStatusCode(_0x939ef3,_0x4cf830){_0x4cf830=_0x4cf830||0xcc;return function(_0x27cafd){if(_0x27cafd){return _0x939ef3[_0x8711('0x23')](_0x4cf830);}return _0x939ef3[_0x8711('0x24')](_0x4cf830)['end']();};}function respondWithResult(_0xb20da2,_0x17bf7f){_0x17bf7f=_0x17bf7f||0xc8;return function(_0x3e8281){if(_0x3e8281){return _0xb20da2[_0x8711('0x24')](_0x17bf7f)[_0x8711('0x25')](_0x3e8281);}};}function respondWithFilteredResult(_0x514956,_0x494683){return function(_0x515a74){if(_0x515a74){var _0x2ad1fa=typeof _0x494683[_0x8711('0x26')]===_0x8711('0x27')&&typeof _0x494683[_0x8711('0x28')]===_0x8711('0x27');var _0x254b35=_0x515a74[_0x8711('0x29')];var _0x3ca2b5=_0x2ad1fa?0x0:_0x494683[_0x8711('0x26')];var _0x47e7b7=_0x2ad1fa?_0x515a74[_0x8711('0x29')]:_0x494683['offset']+_0x494683[_0x8711('0x28')];var _0xd0c671;if(_0x47e7b7>=_0x254b35){_0x47e7b7=_0x254b35;_0xd0c671=0xc8;}else{_0xd0c671=0xce;}_0x514956[_0x8711('0x24')](_0xd0c671);return _0x514956['set'](_0x8711('0x2a'),_0x3ca2b5+'-'+_0x47e7b7+'/'+_0x254b35)['json'](_0x515a74);}return null;};}function patchUpdates(_0x2c4ba3){return function(_0xa85687){try{jsonpatch[_0x8711('0x2b')](_0xa85687,_0x2c4ba3,!![]);}catch(_0x5c4fcc){return BPromise['reject'](_0x5c4fcc);}return _0xa85687[_0x8711('0x2c')]();};}function saveUpdates(_0x31efa0,_0x35af69){return function(_0x6ab2c7){if(_0x6ab2c7){return _0x6ab2c7[_0x8711('0x2d')](_0x31efa0)[_0x8711('0x1a')](function(_0xc0e73f){return _0xc0e73f;});}return null;};}function removeEntity(_0x64cf25,_0x356303){return function(_0x36f3bd){if(_0x36f3bd){return _0x36f3bd['destroy']()[_0x8711('0x1a')](function(){_0x64cf25[_0x8711('0x24')](0xcc)[_0x8711('0x2e')]();});}};}function handleEntityNotFound(_0x285390,_0x11e2fc){return function(_0x23a78b){if(!_0x23a78b){_0x285390[_0x8711('0x23')](0x194);}return _0x23a78b;};}function handleError(_0x456a23,_0x31a450){_0x31a450=_0x31a450||0x1f4;return function(_0x2c90f0){logger['error'](_0x2c90f0[_0x8711('0x2f')]);if(_0x2c90f0[_0x8711('0x30')]){delete _0x2c90f0[_0x8711('0x30')];}_0x456a23[_0x8711('0x24')](_0x31a450)[_0x8711('0x31')](_0x2c90f0);};}exports['index']=function(_0xe54c38,_0xc4fe93){var _0xa31bb6={},_0x59486c={},_0xee57e={'count':0x0,'rows':[]};var _0x37fc30=_[_0x8711('0x32')](db[_0x8711('0x33')][_0x8711('0x34')],function(_0x14922d){return{'name':_0x14922d[_0x8711('0x35')],'type':_0x14922d['type'][_0x8711('0x36')]};});_0x59486c[_0x8711('0x37')]=_[_0x8711('0x32')](_0x37fc30,_0x8711('0x30'));_0x59486c['query']=_['keys'](_0xe54c38[_0x8711('0x38')]);_0x59486c[_0x8711('0x39')]=_[_0x8711('0x3a')](_0x59486c[_0x8711('0x37')],_0x59486c[_0x8711('0x38')]);_0xa31bb6[_0x8711('0x3b')]=_[_0x8711('0x3a')](_0x59486c[_0x8711('0x37')],qs[_0x8711('0x3c')](_0xe54c38[_0x8711('0x38')][_0x8711('0x3c')]));_0xa31bb6[_0x8711('0x3b')]=_0xa31bb6[_0x8711('0x3b')][_0x8711('0x3d')]?_0xa31bb6[_0x8711('0x3b')]:_0x59486c[_0x8711('0x37')];if(!_0xe54c38[_0x8711('0x38')][_0x8711('0x3e')](_0x8711('0x3f'))){_0xa31bb6[_0x8711('0x28')]=qs[_0x8711('0x28')](_0xe54c38['query'][_0x8711('0x28')]);_0xa31bb6['offset']=qs[_0x8711('0x26')](_0xe54c38[_0x8711('0x38')][_0x8711('0x26')]);}_0xa31bb6[_0x8711('0x40')]=qs['sort'](_0xe54c38[_0x8711('0x38')][_0x8711('0x41')]);_0xa31bb6[_0x8711('0x42')]=qs[_0x8711('0x39')](_[_0x8711('0x43')](_0xe54c38[_0x8711('0x38')],_0x59486c['filters']),_0x37fc30);if(_0xe54c38[_0x8711('0x38')][_0x8711('0x44')]){_0xa31bb6[_0x8711('0x42')]=_[_0x8711('0x45')](_0xa31bb6['where'],{'$or':_[_0x8711('0x32')](_0x37fc30,function(_0x2edbb6){if(_0x2edbb6[_0x8711('0x46')]!==_0x8711('0x47')){var _0x304781={};_0x304781[_0x2edbb6['name']]={'$like':'%'+_0xe54c38['query'][_0x8711('0x44')]+'%'};return _0x304781;}})});}_0xa31bb6=_[_0x8711('0x45')]({},_0xa31bb6,_0xe54c38['options']);var _0x9fba5c={'where':_0xa31bb6[_0x8711('0x42')]};return db[_0x8711('0x33')][_0x8711('0x29')](_0x9fba5c)['then'](function(_0x34ef5a){_0xee57e[_0x8711('0x29')]=_0x34ef5a;if(_0xe54c38[_0x8711('0x38')]['includeAll']){_0xa31bb6[_0x8711('0x48')]=[{'all':!![]}];}return db[_0x8711('0x33')]['findAll'](_0xa31bb6);})[_0x8711('0x1a')](function(_0x14a815){_0xee57e['rows']=_0x14a815;return _0xee57e;})[_0x8711('0x1a')](respondWithFilteredResult(_0xc4fe93,_0xa31bb6))[_0x8711('0x49')](handleError(_0xc4fe93,null));};exports['show']=function(_0x2422b1,_0x3056ae){var _0x1c55d8={'raw':![],'where':{'id':_0x2422b1['params']['id']}},_0x17a3f5={};_0x17a3f5[_0x8711('0x37')]=_[_0x8711('0x4a')](db['Setting'][_0x8711('0x34')]);_0x17a3f5[_0x8711('0x38')]=_['keys'](_0x2422b1['query']);_0x17a3f5['filters']=_['intersection'](_0x17a3f5[_0x8711('0x37')],_0x17a3f5[_0x8711('0x38')]);_0x1c55d8[_0x8711('0x3b')]=_[_0x8711('0x3a')](_0x17a3f5[_0x8711('0x37')],qs[_0x8711('0x3c')](_0x2422b1[_0x8711('0x38')]['fields']));_0x1c55d8['attributes']=_0x1c55d8['attributes'][_0x8711('0x3d')]?_0x1c55d8[_0x8711('0x3b')]:_0x17a3f5[_0x8711('0x37')];if(_0x2422b1[_0x8711('0x38')][_0x8711('0x4b')]){_0x1c55d8[_0x8711('0x48')]=[{'all':!![]}];}_0x1c55d8=_['merge']({},_0x1c55d8,_0x2422b1[_0x8711('0x4c')]);return db[_0x8711('0x33')][_0x8711('0x4d')](_0x1c55d8)['then'](handleEntityNotFound(_0x3056ae,null))[_0x8711('0x1a')](respondWithResult(_0x3056ae,null))[_0x8711('0x49')](handleError(_0x3056ae,null));};exports[_0x8711('0x2d')]=function(_0x152e24,_0x449e3d){if(_0x152e24[_0x8711('0x4e')]['id']){delete _0x152e24[_0x8711('0x4e')]['id'];}return db[_0x8711('0x33')]['find']({'where':{'id':_0x152e24[_0x8711('0x4f')]['id']}})['then'](handleEntityNotFound(_0x449e3d,null))[_0x8711('0x1a')](saveUpdates(_0x152e24['body'],null))['then'](respondWithResult(_0x449e3d,null))['catch'](handleError(_0x449e3d,null));};exports[_0x8711('0x50')]=function(_0x1ee501,_0x5a1468,_0x111915){if(_0x1ee501['file']&&_0x1ee501[_0x8711('0x51')][_0x8711('0x52')]){_0x1ee501['body'][_0x8711('0x53')]=_0x1ee501['file'][_0x8711('0x52')];}return db[_0x8711('0x33')]['find']({'where':{'id':_0x1ee501['params']['id']}})[_0x8711('0x1a')](handleEntityNotFound(_0x5a1468,null))['then'](saveUpdates(_0x1ee501[_0x8711('0x4e')],null))[_0x8711('0x1a')](respondWithResult(_0x5a1468,null))[_0x8711('0x49')](handleError(_0x5a1468,null));};exports[_0x8711('0x54')]=function(_0x3c03bf,_0x5dfb08,_0x20bceb){if(_0x3c03bf[_0x8711('0x51')]&&_0x3c03bf[_0x8711('0x51')][_0x8711('0x52')]){_0x3c03bf[_0x8711('0x4e')]['loginLogo']=_0x3c03bf[_0x8711('0x51')][_0x8711('0x52')];}return db[_0x8711('0x33')]['find']({'where':{'id':_0x3c03bf['params']['id']}})[_0x8711('0x1a')](handleEntityNotFound(_0x5dfb08,null))[_0x8711('0x1a')](saveUpdates(_0x3c03bf['body'],null))['then'](respondWithResult(_0x5dfb08,null))['catch'](handleError(_0x5dfb08,null));};var utilLicense=require(_0x8711('0x16'));exports[_0x8711('0x55')]=function(_0x1d11bc,_0x3c7ec2,_0x678216){var _0x34bc6c=_0x8711('0x56');var _0x822eac={'custom':![]};return utilLicense[_0x8711('0x57')]()[_0x8711('0x1a')](function(_0x120ff8){if(_0x120ff8){_0x822eac=_0x120ff8;}return db['Setting'][_0x8711('0x4d')]({'where':{'id':_0x1d11bc[_0x8711('0x4f')]['id']},'attributes':[_0x8711('0x53'),_0x8711('0x58'),_0x8711('0x59'),_0x8711('0x5a'),_0x8711('0x5b'),_0x8711('0x5c'),_0x8711('0x5d'),_0x8711('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x3c7ec2,null))[_0x8711('0x1a')](function(_0x334308){if(_0x334308){var _0x46f6b7=_0x334308['logo']&&fs[_0x8711('0x5f')](path[_0x8711('0x60')](config[_0x8711('0x61')],_0x34bc6c,_['toLower'](_0x334308['logo'])))?path['join'](config[_0x8711('0x61')],_0x34bc6c,_[_0x8711('0x62')](_0x334308['logo'])):path[_0x8711('0x60')](config[_0x8711('0x61')],_0x34bc6c,_['toLower'](_0x8711('0x63')));var _0x37b23a=_0x8711('0x64')+_[_0x8711('0x65')]('logo');if(_0x334308[_0x37b23a]||!_0x822eac[_0x8711('0x66')]){_0x46f6b7=path[_0x8711('0x60')](config['root'],_0x34bc6c,_[_0x8711('0x62')](_0x8711('0x63')));}if(!fs['existsSync'](_0x46f6b7)){throw new db[(_0x8711('0x67'))]['ValidationError'](_[_0x8711('0x65')](_0x8711('0x53'))+_0x8711('0x68'));}return _0x3c7ec2[_0x8711('0x69')](_0x46f6b7);}})[_0x8711('0x49')](handleError(_0x3c7ec2,null));};var utilLicense=require(_0x8711('0x16'));exports[_0x8711('0x6a')]=function(_0xc9e2ca,_0x11ae51,_0x320dae){var _0x3bcc6f=_0x8711('0x56');var _0x1da9d3={'custom':![]};return utilLicense[_0x8711('0x57')]()[_0x8711('0x1a')](function(_0x368323){if(_0x368323){_0x1da9d3=_0x368323;}return db[_0x8711('0x33')]['find']({'where':{'id':_0xc9e2ca[_0x8711('0x4f')]['id']},'attributes':[_0x8711('0x53'),_0x8711('0x58'),'preferred','favicon',_0x8711('0x5b'),_0x8711('0x5c'),_0x8711('0x5d'),'defaultFavicon'],'raw':!![]});})[_0x8711('0x1a')](handleEntityNotFound(_0x11ae51,null))['then'](function(_0x2c1cbe){if(_0x2c1cbe){var _0x41b6cb=_0x2c1cbe[_0x8711('0x58')]&&fs[_0x8711('0x5f')](path['join'](config[_0x8711('0x61')],_0x3bcc6f,_[_0x8711('0x62')](_0x2c1cbe[_0x8711('0x58')])))?path['join'](config[_0x8711('0x61')],_0x3bcc6f,_['toLower'](_0x2c1cbe[_0x8711('0x58')])):path[_0x8711('0x60')](config['root'],_0x3bcc6f,_[_0x8711('0x62')](_0x8711('0x6b')));var _0xe6acca=_0x8711('0x64')+_[_0x8711('0x65')](_0x8711('0x58'));if(_0x2c1cbe[_0xe6acca]||!_0x1da9d3[_0x8711('0x66')]){_0x41b6cb=path[_0x8711('0x60')](config[_0x8711('0x61')],_0x3bcc6f,_[_0x8711('0x62')]('default_loginLogo.svg'));}if(!fs[_0x8711('0x5f')](_0x41b6cb)){throw new db['Sequelize']['ValidationError'](_[_0x8711('0x65')]('loginLogo')+_0x8711('0x68'));}return _0x11ae51[_0x8711('0x69')](_0x41b6cb);}})[_0x8711('0x49')](handleError(_0x11ae51,null));};exports[_0x8711('0x6c')]=function(_0xa7bb67,_0x1f4708){return db[_0x8711('0x33')][_0x8711('0x4d')]({'where':{'id':_0xa7bb67[_0x8711('0x4f')]['id']},'attributes':[_0x8711('0x6d')]})[_0x8711('0x1a')](respondWithResult(_0x1f4708,null))[_0x8711('0x49')](handleError(_0x1f4708,null));};exports[_0x8711('0x6e')]=function(_0x1db2d4,_0x1a7009,_0x72e514){if(_0x1db2d4[_0x8711('0x51')]&&_0x1db2d4['file'][_0x8711('0x52')]){_0x1db2d4[_0x8711('0x4e')][_0x8711('0x59')]=_0x1db2d4['file']['filename'];}return db['Setting'][_0x8711('0x4d')]({'where':{'id':_0x1db2d4[_0x8711('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1a7009,null))[_0x8711('0x1a')](saveUpdates(_0x1db2d4[_0x8711('0x4e')],null))['then'](respondWithResult(_0x1a7009,null))['catch'](handleError(_0x1a7009,null));};var utilLicense=require(_0x8711('0x16'));exports[_0x8711('0x6f')]=function(_0x2b167c,_0x1e9f64,_0x68af89){var _0x1c736f=_0x8711('0x56');var _0x41c5eb={'custom':![]};return utilLicense[_0x8711('0x57')]()[_0x8711('0x1a')](function(_0x186eff){if(_0x186eff){_0x41c5eb=_0x186eff;}return db[_0x8711('0x33')][_0x8711('0x4d')]({'where':{'id':_0x2b167c[_0x8711('0x4f')]['id']},'attributes':['logo',_0x8711('0x58'),_0x8711('0x59'),_0x8711('0x5a'),'defaultLogo',_0x8711('0x5c'),'defaultPreferred',_0x8711('0x5e')],'raw':!![]});})[_0x8711('0x1a')](handleEntityNotFound(_0x1e9f64,null))[_0x8711('0x1a')](function(_0x2be50c){if(_0x2be50c){var _0x98f35=_0x2be50c[_0x8711('0x59')]&&fs[_0x8711('0x5f')](path[_0x8711('0x60')](config[_0x8711('0x61')],_0x1c736f,_[_0x8711('0x62')](_0x2be50c[_0x8711('0x59')])))?path[_0x8711('0x60')](config[_0x8711('0x61')],_0x1c736f,_[_0x8711('0x62')](_0x2be50c[_0x8711('0x59')])):path['join'](config[_0x8711('0x61')],_0x1c736f,_[_0x8711('0x62')](_0x8711('0x70')));var _0x5e6d20=_0x8711('0x64')+_[_0x8711('0x65')](_0x8711('0x59'));if(_0x2be50c[_0x5e6d20]||!_0x41c5eb['custom']||!_0x41c5eb[_0x8711('0x59')]){_0x98f35=path['join'](config[_0x8711('0x61')],_0x1c736f,_['toLower'](_0x8711('0x70')));}if(!fs[_0x8711('0x5f')](_0x98f35)){throw new db[(_0x8711('0x67'))][(_0x8711('0x71'))](_[_0x8711('0x65')](_0x8711('0x59'))+_0x8711('0x68'));}return _0x1e9f64[_0x8711('0x69')](_0x98f35);}})[_0x8711('0x49')](handleError(_0x1e9f64,null));};exports['addFavicon']=function(_0x4ef677,_0x2e803c,_0x55873c){if(_0x4ef677[_0x8711('0x51')]&&_0x4ef677[_0x8711('0x51')][_0x8711('0x52')]){_0x4ef677['body']['favicon']=_0x4ef677['file'][_0x8711('0x52')];}return db[_0x8711('0x33')][_0x8711('0x4d')]({'where':{'id':_0x4ef677[_0x8711('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2e803c,null))['then'](saveUpdates(_0x4ef677[_0x8711('0x4e')],null))[_0x8711('0x1a')](respondWithResult(_0x2e803c,null))[_0x8711('0x49')](handleError(_0x2e803c,null));};var utilLicense=require('../../config/license/util');exports[_0x8711('0x72')]=function(_0x1288ec,_0x19bea8,_0x4ae4fd){var _0xbf7f08=_0x8711('0x56');var _0x2d5491={'custom':![]};return utilLicense[_0x8711('0x57')]()[_0x8711('0x1a')](function(_0x5b6d59){if(_0x5b6d59){_0x2d5491=_0x5b6d59;}return db[_0x8711('0x33')][_0x8711('0x4d')]({'where':{'id':_0x1288ec[_0x8711('0x4f')]['id']},'attributes':[_0x8711('0x53'),_0x8711('0x58'),'preferred',_0x8711('0x5a'),_0x8711('0x5b'),_0x8711('0x5c'),_0x8711('0x5d'),_0x8711('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x19bea8,null))[_0x8711('0x1a')](function(_0x384ab3){if(_0x384ab3){var _0x1ee4db=_0x384ab3[_0x8711('0x5a')]&&fs[_0x8711('0x5f')](path[_0x8711('0x60')](config[_0x8711('0x61')],_0xbf7f08,_[_0x8711('0x62')](_0x384ab3[_0x8711('0x5a')])))?path[_0x8711('0x60')](config[_0x8711('0x61')],_0xbf7f08,_['toLower'](_0x384ab3[_0x8711('0x5a')])):path[_0x8711('0x60')](config[_0x8711('0x61')],_0xbf7f08,_[_0x8711('0x62')]('default_favicon.ico'));var _0x578859=_0x8711('0x64')+_[_0x8711('0x65')](_0x8711('0x5a'));if(_0x384ab3[_0x578859]||!_0x2d5491[_0x8711('0x66')]){_0x1ee4db=path[_0x8711('0x60')](config[_0x8711('0x61')],_0xbf7f08,_['toLower'](_0x8711('0x73')));}if(!fs[_0x8711('0x5f')](_0x1ee4db)){throw new db[(_0x8711('0x67'))][(_0x8711('0x71'))](_[_0x8711('0x65')](_0x8711('0x5a'))+_0x8711('0x68'));}return _0x19bea8['download'](_0x1ee4db);}})[_0x8711('0x49')](handleError(_0x19bea8,null));};exports[_0x8711('0x74')]=function(_0x21b9a8,_0x536180){var _0x3fe51f={'offset':moment()[_0x8711('0x75')]()};_0x3fe51f[_0x8711('0x76')]=moment()[_0x8711('0x75')](_0x3fe51f[_0x8711('0x26')])[_0x8711('0x77')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x536180[_0x8711('0x24')](0xc8)[_0x8711('0x31')](_0x3fe51f);};
\ No newline at end of file
+var _0xe829=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','code','error','Setting,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','name','send','map','Setting','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','catch','params','keys','include','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','favicon','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','preferred','defaultLogo','defaultLoginLogo','default_loginLogo.svg','custom','gdpr','default_preferred.png','addFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x3a93b7,_0x658183){var _0x2ed891=function(_0x1a60de){while(--_0x1a60de){_0x3a93b7['push'](_0x3a93b7['shift']());}};_0x2ed891(++_0x658183);}(_0xe829,0x1d8));var _0x9e82=function(_0x15876c,_0x510dd4){_0x15876c=_0x15876c-0x0;var _0x39d91b=_0xe829[_0x15876c];return _0x39d91b;};'use strict';var emlformat=require(_0x9e82('0x0'));var rimraf=require(_0x9e82('0x1'));var zipdir=require(_0x9e82('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9e82('0x3'));var BPromise=require(_0x9e82('0x4'));var Mustache=require(_0x9e82('0x5'));var util=require(_0x9e82('0x6'));var path=require(_0x9e82('0x7'));var sox=require(_0x9e82('0x8'));var csv=require('to-csv');var ejs=require(_0x9e82('0x9'));var fs=require('fs');var fs_extra=require(_0x9e82('0xa'));var _=require(_0x9e82('0xb'));var squel=require(_0x9e82('0xc'));var crypto=require(_0x9e82('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9e82('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9e82('0xf'));var Papa=require(_0x9e82('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9e82('0x11'));var as=require(_0x9e82('0x12'));var hardwareService=require(_0x9e82('0x13'));var logger=require(_0x9e82('0x14'))(_0x9e82('0x15'));var utils=require(_0x9e82('0x16'));var config=require(_0x9e82('0x17'));var licenseUtil=require(_0x9e82('0x18'));var db=require(_0x9e82('0x19'))['db'];var jayson=require(_0x9e82('0x1a'));var client=jayson[_0x9e82('0x1b')][_0x9e82('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5e0c79,_0x4ca4c2,_0xd6b81,_0x1e182b){return new BPromise(function(_0x202d99,_0x7f8584){var _0x508234=_0x1e182b||client;return _0x508234[_0x9e82('0x1d')](_0x5e0c79,_0xd6b81)[_0x9e82('0x1e')](function(_0x39039d){logger[_0x9e82('0x1f')]('Setting,\x20%s,\x20%s',_0x4ca4c2,_0x9e82('0x20'));logger[_0x9e82('0x21')](_0x9e82('0x22'),_0x4ca4c2,_0x9e82('0x20'),JSON['stringify'](_0x39039d));if(_0x39039d['error']){if(_0x39039d['error'][_0x9e82('0x23')]===0x1f4){logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x39039d[_0x9e82('0x24')][_0x9e82('0x26')]);return _0x7f8584(_0x39039d['error'][_0x9e82('0x26')]);}logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x39039d[_0x9e82('0x24')]['message']);return _0x202d99(_0x39039d['error'][_0x9e82('0x26')]);}else{logger[_0x9e82('0x1f')](_0x9e82('0x25'),_0x4ca4c2,_0x9e82('0x20'));_0x202d99(_0x39039d[_0x9e82('0x27')][_0x9e82('0x26')]);}})['catch'](function(_0x12a26f){logger[_0x9e82('0x24')](_0x9e82('0x25'),_0x4ca4c2,_0x12a26f);_0x7f8584(_0x12a26f);});});}function respondWithStatusCode(_0x3eb596,_0x3d9bd8){_0x3d9bd8=_0x3d9bd8||0xcc;return function(_0x4e0570){if(_0x4e0570){return _0x3eb596[_0x9e82('0x28')](_0x3d9bd8);}return _0x3eb596['status'](_0x3d9bd8)[_0x9e82('0x29')]();};}function respondWithResult(_0x4d3bbb,_0x277fae){_0x277fae=_0x277fae||0xc8;return function(_0x3911cb){if(_0x3911cb){return _0x4d3bbb[_0x9e82('0x2a')](_0x277fae)[_0x9e82('0x2b')](_0x3911cb);}};}function respondWithFilteredResult(_0x3ef885,_0x3c7d9e){return function(_0x3724cb){if(_0x3724cb){var _0x7743e7=typeof _0x3c7d9e[_0x9e82('0x2c')]===_0x9e82('0x2d')&&typeof _0x3c7d9e[_0x9e82('0x2e')]==='undefined';var _0x3d7932=_0x3724cb[_0x9e82('0x2f')];var _0x221ac0=_0x7743e7?0x0:_0x3c7d9e[_0x9e82('0x2c')];var _0x41c723=_0x7743e7?_0x3724cb[_0x9e82('0x2f')]:_0x3c7d9e[_0x9e82('0x2c')]+_0x3c7d9e[_0x9e82('0x2e')];var _0xa4a754;if(_0x41c723>=_0x3d7932){_0x41c723=_0x3d7932;_0xa4a754=0xc8;}else{_0xa4a754=0xce;}_0x3ef885[_0x9e82('0x2a')](_0xa4a754);return _0x3ef885[_0x9e82('0x30')](_0x9e82('0x31'),_0x221ac0+'-'+_0x41c723+'/'+_0x3d7932)[_0x9e82('0x2b')](_0x3724cb);}return null;};}function patchUpdates(_0x2c7a95){return function(_0x5040a2){try{jsonpatch['apply'](_0x5040a2,_0x2c7a95,!![]);}catch(_0x3d069a){return BPromise[_0x9e82('0x32')](_0x3d069a);}return _0x5040a2[_0x9e82('0x33')]();};}function saveUpdates(_0x32a2d2,_0x133b48){return function(_0x70a276){if(_0x70a276){return _0x70a276[_0x9e82('0x34')](_0x32a2d2)[_0x9e82('0x1e')](function(_0x16ceae){return _0x16ceae;});}return null;};}function removeEntity(_0x265f5d,_0x5d1654){return function(_0x42a8c4){if(_0x42a8c4){return _0x42a8c4[_0x9e82('0x35')]()['then'](function(){_0x265f5d[_0x9e82('0x2a')](0xcc)[_0x9e82('0x29')]();});}};}function handleEntityNotFound(_0x1f744f,_0x3c7a9f){return function(_0xc7bb4d){if(!_0xc7bb4d){_0x1f744f[_0x9e82('0x28')](0x194);}return _0xc7bb4d;};}function handleError(_0x2fe280,_0x5bbedb){_0x5bbedb=_0x5bbedb||0x1f4;return function(_0x2213ad){logger['error'](_0x2213ad['stack']);if(_0x2213ad[_0x9e82('0x36')]){delete _0x2213ad[_0x9e82('0x36')];}_0x2fe280[_0x9e82('0x2a')](_0x5bbedb)[_0x9e82('0x37')](_0x2213ad);};}exports['index']=function(_0x5f11c0,_0x3235e8){var _0x2fe10c={},_0x17bc3a={},_0x3b75ac={'count':0x0,'rows':[]};var _0xbe42f0=_[_0x9e82('0x38')](db[_0x9e82('0x39')][_0x9e82('0x3a')],function(_0x81cc6e){return{'name':_0x81cc6e[_0x9e82('0x3b')],'type':_0x81cc6e['type'][_0x9e82('0x3c')]};});_0x17bc3a[_0x9e82('0x3d')]=_[_0x9e82('0x38')](_0xbe42f0,_0x9e82('0x36'));_0x17bc3a[_0x9e82('0x3e')]=_['keys'](_0x5f11c0['query']);_0x17bc3a['filters']=_['intersection'](_0x17bc3a[_0x9e82('0x3d')],_0x17bc3a[_0x9e82('0x3e')]);_0x2fe10c[_0x9e82('0x3f')]=_[_0x9e82('0x40')](_0x17bc3a[_0x9e82('0x3d')],qs['fields'](_0x5f11c0['query'][_0x9e82('0x41')]));_0x2fe10c[_0x9e82('0x3f')]=_0x2fe10c[_0x9e82('0x3f')][_0x9e82('0x42')]?_0x2fe10c['attributes']:_0x17bc3a[_0x9e82('0x3d')];if(!_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x43')]('nolimit')){_0x2fe10c['limit']=qs[_0x9e82('0x2e')](_0x5f11c0['query'][_0x9e82('0x2e')]);_0x2fe10c[_0x9e82('0x2c')]=qs['offset'](_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x2c')]);}_0x2fe10c[_0x9e82('0x44')]=qs[_0x9e82('0x45')](_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x45')]);_0x2fe10c['where']=qs[_0x9e82('0x46')](_['pick'](_0x5f11c0[_0x9e82('0x3e')],_0x17bc3a[_0x9e82('0x46')]),_0xbe42f0);if(_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x47')]){_0x2fe10c['where']=_[_0x9e82('0x48')](_0x2fe10c[_0x9e82('0x49')],{'$or':_[_0x9e82('0x38')](_0xbe42f0,function(_0x4d5b2f){if(_0x4d5b2f[_0x9e82('0x4a')]!==_0x9e82('0x4b')){var _0x105e7d={};_0x105e7d[_0x4d5b2f[_0x9e82('0x36')]]={'$like':'%'+_0x5f11c0[_0x9e82('0x3e')]['filter']+'%'};return _0x105e7d;}})});}_0x2fe10c=_[_0x9e82('0x48')]({},_0x2fe10c,_0x5f11c0[_0x9e82('0x4c')]);var _0xca10b4={'where':_0x2fe10c[_0x9e82('0x49')]};return db['Setting']['count'](_0xca10b4)[_0x9e82('0x1e')](function(_0x24fdfe){_0x3b75ac[_0x9e82('0x2f')]=_0x24fdfe;if(_0x5f11c0[_0x9e82('0x3e')][_0x9e82('0x4d')]){_0x2fe10c['include']=[{'all':!![]}];}return db[_0x9e82('0x39')][_0x9e82('0x4e')](_0x2fe10c);})[_0x9e82('0x1e')](function(_0x301e21){_0x3b75ac['rows']=_0x301e21;return _0x3b75ac;})['then'](respondWithFilteredResult(_0x3235e8,_0x2fe10c))[_0x9e82('0x4f')](handleError(_0x3235e8,null));};exports['show']=function(_0x5363a2,_0x4268b6){var _0x7a85b8={'raw':![],'where':{'id':_0x5363a2[_0x9e82('0x50')]['id']}},_0x43322c={};_0x43322c[_0x9e82('0x3d')]=_[_0x9e82('0x51')](db[_0x9e82('0x39')][_0x9e82('0x3a')]);_0x43322c[_0x9e82('0x3e')]=_[_0x9e82('0x51')](_0x5363a2[_0x9e82('0x3e')]);_0x43322c[_0x9e82('0x46')]=_['intersection'](_0x43322c[_0x9e82('0x3d')],_0x43322c['query']);_0x7a85b8[_0x9e82('0x3f')]=_[_0x9e82('0x40')](_0x43322c['model'],qs[_0x9e82('0x41')](_0x5363a2[_0x9e82('0x3e')]['fields']));_0x7a85b8[_0x9e82('0x3f')]=_0x7a85b8[_0x9e82('0x3f')][_0x9e82('0x42')]?_0x7a85b8[_0x9e82('0x3f')]:_0x43322c[_0x9e82('0x3d')];if(_0x5363a2['query']['includeAll']){_0x7a85b8[_0x9e82('0x52')]=[{'all':!![]}];}_0x7a85b8=_['merge']({},_0x7a85b8,_0x5363a2['options']);return db[_0x9e82('0x39')][_0x9e82('0x53')](_0x7a85b8)[_0x9e82('0x1e')](handleEntityNotFound(_0x4268b6,null))[_0x9e82('0x1e')](respondWithResult(_0x4268b6,null))[_0x9e82('0x4f')](handleError(_0x4268b6,null));};exports[_0x9e82('0x34')]=function(_0x32dcdc,_0x51f5a2){if(_0x32dcdc[_0x9e82('0x54')]['id']){delete _0x32dcdc[_0x9e82('0x54')]['id'];}return db['Setting']['find']({'where':{'id':_0x32dcdc[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x51f5a2,null))[_0x9e82('0x1e')](saveUpdates(_0x32dcdc[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x51f5a2,null))[_0x9e82('0x4f')](handleError(_0x51f5a2,null));};exports[_0x9e82('0x55')]=function(_0x334512,_0x4ef528,_0x4da3aa){if(_0x334512[_0x9e82('0x56')]&&_0x334512[_0x9e82('0x56')][_0x9e82('0x57')]){_0x334512[_0x9e82('0x54')][_0x9e82('0x58')]=_0x334512['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x334512[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x4ef528,null))[_0x9e82('0x1e')](saveUpdates(_0x334512['body'],null))[_0x9e82('0x1e')](respondWithResult(_0x4ef528,null))[_0x9e82('0x4f')](handleError(_0x4ef528,null));};exports[_0x9e82('0x59')]=function(_0x5dd7d3,_0x4bf6a1,_0x298076){if(_0x5dd7d3[_0x9e82('0x56')]&&_0x5dd7d3['file'][_0x9e82('0x57')]){_0x5dd7d3['body'][_0x9e82('0x5a')]=_0x5dd7d3['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x5dd7d3[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x4bf6a1,null))[_0x9e82('0x1e')](saveUpdates(_0x5dd7d3[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x4bf6a1,null))[_0x9e82('0x4f')](handleError(_0x4bf6a1,null));};var utilLicense=require(_0x9e82('0x18'));exports[_0x9e82('0x5b')]=function(_0x383231,_0x45a6ee,_0x441716){var _0xcd482=_0x9e82('0x5c');var _0x32b90f={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x1a4b98){if(_0x1a4b98){_0x32b90f=_0x1a4b98;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x383231[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),'loginLogo','preferred',_0x9e82('0x5e'),'defaultLogo','defaultLoginLogo',_0x9e82('0x5f'),_0x9e82('0x60')],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x45a6ee,null))['then'](function(_0x484d3a){if(_0x484d3a){var _0x380d20=_0x484d3a['logo']&&fs[_0x9e82('0x61')](path[_0x9e82('0x62')](config['root'],_0xcd482,_[_0x9e82('0x63')](_0x484d3a[_0x9e82('0x58')])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0xcd482,_[_0x9e82('0x63')](_0x484d3a[_0x9e82('0x58')])):path[_0x9e82('0x62')](config['root'],_0xcd482,_['toLower'](_0x9e82('0x65')));var _0x4ee761=_0x9e82('0x66')+_[_0x9e82('0x67')]('logo');if(_0x484d3a[_0x4ee761]||!_0x32b90f['custom']){_0x380d20=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0xcd482,_[_0x9e82('0x63')](_0x9e82('0x65')));}if(!fs[_0x9e82('0x61')](_0x380d20)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_['upperFirst'](_0x9e82('0x58'))+_0x9e82('0x6a'));}return _0x45a6ee[_0x9e82('0x6b')](_0x380d20);}})[_0x9e82('0x4f')](handleError(_0x45a6ee,null));};var utilLicense=require(_0x9e82('0x18'));exports[_0x9e82('0x6c')]=function(_0x5153f1,_0x43ca59,_0x254668){var _0x2d4194='server/files/images/logos';var _0x4c1c2b={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x3db951){if(_0x3db951){_0x4c1c2b=_0x3db951;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x5153f1[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),_0x9e82('0x5a'),_0x9e82('0x6d'),_0x9e82('0x5e'),_0x9e82('0x6e'),_0x9e82('0x6f'),_0x9e82('0x5f'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x43ca59,null))[_0x9e82('0x1e')](function(_0x71df66){if(_0x71df66){var _0x48b026=_0x71df66[_0x9e82('0x5a')]&&fs['existsSync'](path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_[_0x9e82('0x63')](_0x71df66['loginLogo'])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_['toLower'](_0x71df66[_0x9e82('0x5a')])):path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_['toLower'](_0x9e82('0x70')));var _0x584931=_0x9e82('0x66')+_['upperFirst'](_0x9e82('0x5a'));if(_0x71df66[_0x584931]||!_0x4c1c2b[_0x9e82('0x71')]){_0x48b026=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x2d4194,_[_0x9e82('0x63')](_0x9e82('0x70')));}if(!fs[_0x9e82('0x61')](_0x48b026)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x5a'))+_0x9e82('0x6a'));}return _0x43ca59[_0x9e82('0x6b')](_0x48b026);}})[_0x9e82('0x4f')](handleError(_0x43ca59,null));};exports[_0x9e82('0x72')]=function(_0x14a626,_0x3088af){return db['Setting']['find']({'where':{'id':_0x14a626[_0x9e82('0x50')]['id']},'attributes':['securePassword']})[_0x9e82('0x1e')](respondWithResult(_0x3088af,null))[_0x9e82('0x4f')](handleError(_0x3088af,null));};exports['addPreferred']=function(_0x3eb402,_0xe588d0,_0x43cdc2){if(_0x3eb402[_0x9e82('0x56')]&&_0x3eb402['file'][_0x9e82('0x57')]){_0x3eb402[_0x9e82('0x54')][_0x9e82('0x6d')]=_0x3eb402['file'][_0x9e82('0x57')];}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x3eb402[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0xe588d0,null))[_0x9e82('0x1e')](saveUpdates(_0x3eb402[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0xe588d0,null))[_0x9e82('0x4f')](handleError(_0xe588d0,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x282e5d,_0x55784e,_0x5b9eb6){var _0x1eeca0=_0x9e82('0x5c');var _0x354282={'custom':![]};return utilLicense['getLicense']()[_0x9e82('0x1e')](function(_0x4e8ee5){if(_0x4e8ee5){_0x354282=_0x4e8ee5;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x282e5d[_0x9e82('0x50')]['id']},'attributes':['logo',_0x9e82('0x5a'),'preferred',_0x9e82('0x5e'),'defaultLogo',_0x9e82('0x6f'),_0x9e82('0x5f'),'defaultFavicon'],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x55784e,null))[_0x9e82('0x1e')](function(_0x595f90){if(_0x595f90){var _0x2a8e0e=_0x595f90[_0x9e82('0x6d')]&&fs[_0x9e82('0x61')](path['join'](config[_0x9e82('0x64')],_0x1eeca0,_[_0x9e82('0x63')](_0x595f90[_0x9e82('0x6d')])))?path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x1eeca0,_['toLower'](_0x595f90[_0x9e82('0x6d')])):path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x1eeca0,_[_0x9e82('0x63')]('default_preferred.png'));var _0x49f193=_0x9e82('0x66')+_[_0x9e82('0x67')](_0x9e82('0x6d'));if(_0x595f90[_0x49f193]||!_0x354282[_0x9e82('0x71')]||!_0x354282[_0x9e82('0x6d')]){_0x2a8e0e=path['join'](config['root'],_0x1eeca0,_['toLower'](_0x9e82('0x73')));}if(!fs[_0x9e82('0x61')](_0x2a8e0e)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x6d'))+_0x9e82('0x6a'));}return _0x55784e[_0x9e82('0x6b')](_0x2a8e0e);}})['catch'](handleError(_0x55784e,null));};exports[_0x9e82('0x74')]=function(_0x351fc8,_0x23ee53,_0x397a45){if(_0x351fc8['file']&&_0x351fc8[_0x9e82('0x56')][_0x9e82('0x57')]){_0x351fc8[_0x9e82('0x54')][_0x9e82('0x5e')]=_0x351fc8[_0x9e82('0x56')]['filename'];}return db[_0x9e82('0x39')]['find']({'where':{'id':_0x351fc8[_0x9e82('0x50')]['id']}})[_0x9e82('0x1e')](handleEntityNotFound(_0x23ee53,null))[_0x9e82('0x1e')](saveUpdates(_0x351fc8[_0x9e82('0x54')],null))[_0x9e82('0x1e')](respondWithResult(_0x23ee53,null))[_0x9e82('0x4f')](handleError(_0x23ee53,null));};var utilLicense=require('../../config/license/util');exports['getFavicon']=function(_0x4f73c7,_0x346008,_0x6d84a6){var _0x3c4a16='server/files/images/logos';var _0x1da351={'custom':![]};return utilLicense[_0x9e82('0x5d')]()[_0x9e82('0x1e')](function(_0x1cf028){if(_0x1cf028){_0x1da351=_0x1cf028;}return db[_0x9e82('0x39')][_0x9e82('0x53')]({'where':{'id':_0x4f73c7[_0x9e82('0x50')]['id']},'attributes':[_0x9e82('0x58'),_0x9e82('0x5a'),_0x9e82('0x6d'),'favicon',_0x9e82('0x6e'),_0x9e82('0x6f'),_0x9e82('0x5f'),_0x9e82('0x60')],'raw':!![]});})[_0x9e82('0x1e')](handleEntityNotFound(_0x346008,null))['then'](function(_0x42699c){if(_0x42699c){var _0x224bec=_0x42699c[_0x9e82('0x5e')]&&fs[_0x9e82('0x61')](path['join'](config[_0x9e82('0x64')],_0x3c4a16,_[_0x9e82('0x63')](_0x42699c[_0x9e82('0x5e')])))?path[_0x9e82('0x62')](config['root'],_0x3c4a16,_['toLower'](_0x42699c[_0x9e82('0x5e')])):path['join'](config[_0x9e82('0x64')],_0x3c4a16,_[_0x9e82('0x63')](_0x9e82('0x75')));var _0x35857c='default'+_[_0x9e82('0x67')](_0x9e82('0x5e'));if(_0x42699c[_0x35857c]||!_0x1da351[_0x9e82('0x71')]){_0x224bec=path[_0x9e82('0x62')](config[_0x9e82('0x64')],_0x3c4a16,_['toLower']('default_favicon.ico'));}if(!fs[_0x9e82('0x61')](_0x224bec)){throw new db[(_0x9e82('0x68'))][(_0x9e82('0x69'))](_[_0x9e82('0x67')](_0x9e82('0x5e'))+'\x20not\x20found');}return _0x346008[_0x9e82('0x6b')](_0x224bec);}})[_0x9e82('0x4f')](handleError(_0x346008,null));};exports[_0x9e82('0x76')]=function(_0x10e37c,_0x10d0dd){var _0x3cde90={'offset':moment()[_0x9e82('0x77')]()};_0x3cde90[_0x9e82('0x78')]=moment()[_0x9e82('0x77')](_0x3cde90[_0x9e82('0x2c')])['format'](_0x9e82('0x79'));return _0x10d0dd[_0x9e82('0x2a')](0xc8)[_0x9e82('0x37')](_0x3cde90);};
\ No newline at end of file
index 4f58b43..d8b2856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x2e503a,_0x297d81){var _0x46ced8=function(_0x1ea198){while(--_0x1ea198){_0x2e503a['push'](_0x2e503a['shift']());}};_0x46ced8(++_0x297d81);}(_0x34e8,0x12c));var _0x834e=function(_0x3f616f,_0xc3df92){_0x3f616f=_0x3f616f-0x0;var _0xdfa2c0=_0x34e8[_0x3f616f];return _0xdfa2c0;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x195740,_0x3d8e1d){var _0x1ff625=function(_0x23bb5c){while(--_0x23bb5c){_0x195740['push'](_0x195740['shift']());}};_0x1ff625(++_0x3d8e1d);}(_0x34e8,0x12c));var _0x834e=function(_0x44aadd,_0x4fa4df){_0x44aadd=_0x44aadd-0x0;var _0x53072d=_0x34e8[_0x44aadd];return _0x53072d;};'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 0404c0c..a81b2e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444f=['include','map','model','attributes','then','debug','lodash','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','http','request','Setting,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','ShowSetting','Setting','find','options','raw','where'];(function(_0x47ae24,_0x572b90){var _0x592c54=function(_0x47fb11){while(--_0x47fb11){_0x47ae24['push'](_0x47ae24['shift']());}};_0x592c54(++_0x572b90);}(_0x444f,0xf6));var _0xf444=function(_0x2b3d1f,_0x40c8b6){_0x2b3d1f=_0x2b3d1f-0x0;var _0x187469=_0x444f[_0x2b3d1f];return _0x187469;};'use strict';var _=require(_0xf444('0x0'));var util=require(_0xf444('0x1'));var moment=require(_0xf444('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf444('0x3'));var db=require(_0xf444('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf444('0x5'));var config=require(_0xf444('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf444('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4f2be0,_0x5907ed,_0x46ff60){return new BPromise(function(_0x24dccb,_0x1d1183){return client[_0xf444('0x8')](_0x4f2be0,_0x46ff60)['then'](function(_0x56f16d){logger['info'](_0xf444('0x9'),_0x5907ed,'request\x20sent');logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x5907ed,'request\x20sent',JSON[_0xf444('0xa')](_0x56f16d));if(_0x56f16d['error']){if(_0x56f16d[_0xf444('0xb')][_0xf444('0xc')]===0x1f4){logger['error'](_0xf444('0x9'),_0x5907ed,_0x56f16d[_0xf444('0xb')][_0xf444('0xd')]);return _0x1d1183(_0x56f16d[_0xf444('0xb')]['message']);}logger[_0xf444('0xb')]('Setting,\x20%s,\x20%s',_0x5907ed,_0x56f16d['error'][_0xf444('0xd')]);return _0x24dccb(_0x56f16d[_0xf444('0xb')]['message']);}else{logger[_0xf444('0xe')](_0xf444('0x9'),_0x5907ed,_0xf444('0xf'));_0x24dccb(_0x56f16d[_0xf444('0x10')]['message']);}})[_0xf444('0x11')](function(_0x22de33){logger[_0xf444('0xb')](_0xf444('0x9'),_0x5907ed,_0x22de33);_0x1d1183(_0x22de33);});});}exports[_0xf444('0x12')]=function(_0x495e9a){var _0x18ee37=this;return new Promise(function(_0x5a2303,_0x155d51){return db[_0xf444('0x13')][_0xf444('0x14')]({'raw':_0x495e9a[_0xf444('0x15')]?_0x495e9a[_0xf444('0x15')][_0xf444('0x16')]===undefined?!![]:![]:!![],'where':_0x495e9a['options']?_0x495e9a[_0xf444('0x15')][_0xf444('0x17')]||null:null,'attributes':_0x495e9a[_0xf444('0x15')]?_0x495e9a[_0xf444('0x15')]['attributes']||null:null,'include':_0x495e9a[_0xf444('0x15')]?_0x495e9a[_0xf444('0x15')][_0xf444('0x18')]?_[_0xf444('0x19')](_0x495e9a[_0xf444('0x15')][_0xf444('0x18')],function(_0x145d8){return{'model':db[_0x145d8[_0xf444('0x1a')]],'as':_0x145d8['as'],'attributes':_0x145d8[_0xf444('0x1b')],'include':_0x145d8['include']?_[_0xf444('0x19')](_0x145d8[_0xf444('0x18')],function(_0x1cb69e){return{'model':db[_0x1cb69e['model']],'as':_0x1cb69e['as'],'attributes':_0x1cb69e[_0xf444('0x1b')],'include':_0x1cb69e[_0xf444('0x18')]?_[_0xf444('0x19')](_0x1cb69e[_0xf444('0x18')],function(_0x644ef3){return{'model':db[_0x644ef3[_0xf444('0x1a')]],'as':_0x644ef3['as'],'attributes':_0x644ef3['attributes']};}):[]};}):[]};}):[]:[]})[_0xf444('0x1c')](function(_0x130de8){logger[_0xf444('0xe')](_0xf444('0x12'),_0x495e9a);logger[_0xf444('0x1d')](_0xf444('0x12'),_0x495e9a,JSON[_0xf444('0xa')](_0x130de8));_0x5a2303(_0x130de8);})['catch'](function(_0x13c4a4){logger['error'](_0xf444('0x12'),_0x13c4a4[_0xf444('0xd')],_0x495e9a);_0x155d51(_0x18ee37[_0xf444('0xb')](0x1f4,_0x13c4a4[_0xf444('0xd')]));});});};
\ No newline at end of file
+var _0xdb02=['include','map','model','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ShowSetting','Setting','find','raw','options','attributes'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xdb02,0x1e5));var _0x2db0=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xdb02[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0x2db0('0x0'));var util=require(_0x2db0('0x1'));var moment=require(_0x2db0('0x2'));var BPromise=require(_0x2db0('0x3'));var rs=require(_0x2db0('0x4'));var fs=require('fs');var Redis=require(_0x2db0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2db0('0x6'));var logger=require(_0x2db0('0x7'))('rpc');var config=require(_0x2db0('0x8'));var jayson=require(_0x2db0('0x9'));var client=jayson[_0x2db0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d8c9e,_0x337295,_0x5a2e30){return new BPromise(function(_0x367f45,_0x1dbbe2){return client[_0x2db0('0xb')](_0x5d8c9e,_0x5a2e30)[_0x2db0('0xc')](function(_0x533e47){logger[_0x2db0('0xd')](_0x2db0('0xe'),_0x337295,'request\x20sent');logger['debug'](_0x2db0('0xf'),_0x337295,_0x2db0('0x10'),JSON[_0x2db0('0x11')](_0x533e47));if(_0x533e47[_0x2db0('0x12')]){if(_0x533e47[_0x2db0('0x12')][_0x2db0('0x13')]===0x1f4){logger[_0x2db0('0x12')](_0x2db0('0xe'),_0x337295,_0x533e47[_0x2db0('0x12')][_0x2db0('0x14')]);return _0x1dbbe2(_0x533e47['error'][_0x2db0('0x14')]);}logger[_0x2db0('0x12')]('Setting,\x20%s,\x20%s',_0x337295,_0x533e47[_0x2db0('0x12')][_0x2db0('0x14')]);return _0x367f45(_0x533e47[_0x2db0('0x12')]['message']);}else{logger[_0x2db0('0xd')](_0x2db0('0xe'),_0x337295,'request\x20sent');_0x367f45(_0x533e47['result']['message']);}})['catch'](function(_0x38b62d){logger[_0x2db0('0x12')](_0x2db0('0xe'),_0x337295,_0x38b62d);_0x1dbbe2(_0x38b62d);});});}exports[_0x2db0('0x15')]=function(_0x514641){var _0x556087=this;return new Promise(function(_0x334fb4,_0x594561){return db[_0x2db0('0x16')][_0x2db0('0x17')]({'raw':_0x514641['options']?_0x514641['options'][_0x2db0('0x18')]===undefined?!![]:![]:!![],'where':_0x514641[_0x2db0('0x19')]?_0x514641['options']['where']||null:null,'attributes':_0x514641['options']?_0x514641['options'][_0x2db0('0x1a')]||null:null,'include':_0x514641[_0x2db0('0x19')]?_0x514641[_0x2db0('0x19')][_0x2db0('0x1b')]?_[_0x2db0('0x1c')](_0x514641['options'][_0x2db0('0x1b')],function(_0x12cda3){return{'model':db[_0x12cda3['model']],'as':_0x12cda3['as'],'attributes':_0x12cda3[_0x2db0('0x1a')],'include':_0x12cda3['include']?_[_0x2db0('0x1c')](_0x12cda3[_0x2db0('0x1b')],function(_0x32a461){return{'model':db[_0x32a461['model']],'as':_0x32a461['as'],'attributes':_0x32a461['attributes'],'include':_0x32a461[_0x2db0('0x1b')]?_[_0x2db0('0x1c')](_0x32a461[_0x2db0('0x1b')],function(_0x46c94c){return{'model':db[_0x46c94c[_0x2db0('0x1d')]],'as':_0x46c94c['as'],'attributes':_0x46c94c[_0x2db0('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2db0('0xc')](function(_0x3d85ea){logger[_0x2db0('0xd')](_0x2db0('0x15'),_0x514641);logger[_0x2db0('0x1e')](_0x2db0('0x15'),_0x514641,JSON['stringify'](_0x3d85ea));_0x334fb4(_0x3d85ea);})[_0x2db0('0x1f')](function(_0x3ddf93){logger[_0x2db0('0x12')](_0x2db0('0x15'),_0x3ddf93['message'],_0x514641);_0x594561(_0x556087['error'](0x1f4,_0x3ddf93['message']));});});};
\ No newline at end of file
index f6cbc27..e26cdf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['./smsAccount.controller','get','isAuthenticated','index','/describe','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','put','update','/:id','destroy','removeDispositions','delete','/:id/users','removeAgents','multer','util','express','Router','../../components/auth/service'];(function(_0x1df41a,_0x5729e6){var _0xe21af5=function(_0x2b8c3f){while(--_0x2b8c3f){_0x1df41a['push'](_0x1df41a['shift']());}};_0xe21af5(++_0x5729e6);}(_0xe14b,0x93));var _0xbe14=function(_0x2d9d82,_0x277c3c){_0x2d9d82=_0x2d9d82-0x0;var _0x592afd=_0xe14b[_0x2d9d82];return _0x592afd;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getDispositions']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x6')](_0xbe14('0x10'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x6')](_0xbe14('0x12'),controller[_0xbe14('0x13')]);router[_0xbe14('0x6')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x14')]);router[_0xbe14('0x15')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x16')]);router['post'](_0xbe14('0xb'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x15')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);router['post'](_0xbe14('0x19'),controller[_0xbe14('0x1a')]);router[_0xbe14('0x15')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x1b')]);router['post'](_0xbe14('0x1c'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x1d')]);router[_0xbe14('0x15')](_0xbe14('0x12'),controller['status']);router[_0xbe14('0x15')]('/:id/users',auth[_0xbe14('0x7')](),controller['addAgents']);router[_0xbe14('0x1e')]('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0x1f')]);router['delete'](_0xbe14('0x20'),auth['isAuthenticated'](),controller[_0xbe14('0x21')]);router['delete'](_0xbe14('0xb'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x22')]);router[_0xbe14('0x23')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeAnswers']);router[_0xbe14('0x23')](_0xbe14('0x24'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x25')]);module['exports']=router;
\ No newline at end of file
+var _0x7217=['/:id/send','status','put','update','delete','removeDispositions','removeAnswers','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','create','post','/:id/notify','notify','addApplications'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x7217,0x19e));var _0x7721=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x7217[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getApplications']);router[_0x7721('0x8')](_0x7721('0x14'),auth['isAuthenticated'](),controller[_0x7721('0x15')]);router[_0x7721('0x8')](_0x7721('0x16'),controller[_0x7721('0x17')]);router['get'](_0x7721('0x18'),auth[_0x7721('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x1a')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller['addDisposition']);router[_0x7721('0x1a')]('/:id/canned_answers',auth[_0x7721('0x9')](),controller['addAnswer']);router[_0x7721('0x1a')](_0x7721('0x1b'),controller[_0x7721('0x1c')]);router[_0x7721('0x1a')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1d')]);router[_0x7721('0x1a')](_0x7721('0x1e'),auth[_0x7721('0x9')](),controller['send']);router[_0x7721('0x1a')](_0x7721('0x16'),controller[_0x7721('0x1f')]);router[_0x7721('0x1a')]('/:id/users',auth[_0x7721('0x9')](),controller['addAgents']);router[_0x7721('0x20')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x21')]);router[_0x7721('0x22')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller['destroy']);router[_0x7721('0x22')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller[_0x7721('0x23')]);router[_0x7721('0x22')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x24')]);router[_0x7721('0x22')]('/:id/users',auth[_0x7721('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index b9fc48a..247b6e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x947b=['randomstring','exports','STRING','name','generate','ENUM','twilio','skebby','clicksend','plivo','csc','infobip','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x411d73,_0x4cf3a9){var _0x1785d8=function(_0x48f8df){while(--_0x48f8df){_0x411d73['push'](_0x411d73['shift']());}};_0x1785d8(++_0x4cf3a9);}(_0x947b,0x118));var _0xb947=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x947b[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xb947('0x0'));module[_0xb947('0x1')]={'name':{'type':Sequelize[_0xb947('0x2')],'unique':_0xb947('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xb947('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0xb947('0x2')],'defaultValue':function(){return rs[_0xb947('0x4')]();}},'phone':{'type':Sequelize[_0xb947('0x2')]},'type':{'type':Sequelize[_0xb947('0x5')](_0xb947('0x6'),_0xb947('0x7'),'connectel',_0xb947('0x8'),_0xb947('0x9'),'clickatell','bandwidth',_0xb947('0xa'),_0xb947('0xb'),_0xb947('0xc'))},'accountSid':{'type':Sequelize[_0xb947('0x2')]},'authId':{'type':Sequelize[_0xb947('0x2')]},'authToken':{'type':Sequelize[_0xb947('0x2')]},'smsMethod':{'type':Sequelize[_0xb947('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0xb947('0x2')]},'password':{'type':Sequelize[_0xb947('0x2')]},'apiKey':{'type':Sequelize[_0xb947('0x2')]},'applicationId':{'type':Sequelize[_0xb947('0x2')]},'accountId':{'type':Sequelize[_0xb947('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0xb947('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0xb947('0x2')]},'notificationTemplate':{'type':Sequelize[_0xb947('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xb947('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb947('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb947('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb947('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb947('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xb947('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb947('0xf')],'comment':_0xb947('0x10')},'mandatoryDisposition':{'type':Sequelize[_0xb947('0xd')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x331ba8){if(!_0x331ba8)this[_0xb947('0x11')](_0xb947('0x12'),null);this[_0xb947('0x11')](_0xb947('0x13'),_0x331ba8);}}};
\ No newline at end of file
+var _0x0773=['BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','STRING','name','generate','ENUM','twilio','skebby','clicksend','plivo','bandwidth','csc','intelepeer'];(function(_0x340749,_0x48d001){var _0x1d0a62=function(_0x187aa5){while(--_0x187aa5){_0x340749['push'](_0x340749['shift']());}};_0x1d0a62(++_0x48d001);}(_0x0773,0xc5));var _0x3077=function(_0x4add35,_0x40fc13){_0x4add35=_0x4add35-0x0;var _0x445333=_0x0773[_0x4add35];return _0x445333;};'use strict';var Sequelize=require(_0x3077('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x3077('0x1')],'unique':_0x3077('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x3077('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x3077('0x1')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3077('0x3')]();}},'phone':{'type':Sequelize[_0x3077('0x1')]},'type':{'type':Sequelize[_0x3077('0x4')](_0x3077('0x5'),_0x3077('0x6'),'connectel',_0x3077('0x7'),_0x3077('0x8'),'clickatell',_0x3077('0x9'),_0x3077('0xa'),'infobip',_0x3077('0xb'))},'accountSid':{'type':Sequelize[_0x3077('0x1')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x3077('0x1')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x3077('0x1')]},'password':{'type':Sequelize[_0x3077('0x1')]},'apiKey':{'type':Sequelize[_0x3077('0x1')]},'applicationId':{'type':Sequelize[_0x3077('0x1')]},'accountId':{'type':Sequelize[_0x3077('0x1')]},'senderString':{'type':Sequelize[_0x3077('0x1')]},'deliveryReport':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x3077('0x1')]},'notificationTemplate':{'type':Sequelize[_0x3077('0xd')],'defaultValue':function(){return _0x3077('0xe');}},'notificationSound':{'type':Sequelize[_0x3077('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3077('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x3077('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3077('0xf')],'comment':_0x3077('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x3077('0xc')],'defaultValue':![],'comment':_0x3077('0x11'),'set':function(_0x18b20f){if(!_0x18b20f)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x3077('0x12')]('mandatoryDisposition',_0x18b20f);}}};
\ No newline at end of file
index 7802451..c0c6c32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb01f=['Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','intelepeer','redif','error_code','DELIVERED_TO_GATEWAY','ACCEPTD','statusGet','message-id','state','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','api','../../config/license/util','../../mysqldb','redis','defaults','./smsAccount.socket','register','jayson/promise','client','http','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','then','destroy','get','SmsAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','include','SmsAccount','findAll','rows','show','params','options','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','Disposition','pick','count','addAnswer','getAnswers','CannedAnswer','removeAnswers','ids','notify','sms','SmsApplication','Applications','account','orderBy','priority','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','from','Body','messageId','MessageSid','skebby','sender','text','connectel','clicksend','message_id','plivo','From','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','replyMessageId','bandwidth','Sequelize','ValidationError','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','created','applications','push','unmanaged','*,*,*,*','SmsMessage','ContactId','User','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','ISOLATION_LEVELS','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out'];(function(_0x5805d7,_0x3d584a){var _0x170fe4=function(_0x3b9b73){while(--_0x3b9b73){_0x5805d7['push'](_0x5805d7['shift']());}};_0x170fe4(++_0x3d584a);}(_0xb01f,0xfc));var _0xfb01=function(_0x23b454,_0x41fee7){_0x23b454=_0x23b454-0x0;var _0x1dba69=_0xb01f[_0x23b454];return _0x1dba69;};'use strict';var emlformat=require(_0xfb01('0x0'));var rimraf=require(_0xfb01('0x1'));var zipdir=require(_0xfb01('0x2'));var jsonpatch=require(_0xfb01('0x3'));var rp=require(_0xfb01('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xfb01('0x5'));var csv=require(_0xfb01('0x6'));var ejs=require(_0xfb01('0x7'));var fs=require('fs');var fs_extra=require(_0xfb01('0x8'));var _=require(_0xfb01('0x9'));var squel=require(_0xfb01('0xa'));var crypto=require(_0xfb01('0xb'));var jsforce=require(_0xfb01('0xc'));var deskjs=require(_0xfb01('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfb01('0xe'));var Redis=require('ioredis');var authService=require(_0xfb01('0xf'));var qs=require(_0xfb01('0x10'));var as=require(_0xfb01('0x11'));var hardwareService=require(_0xfb01('0x12'));var logger=require('../../config/logger')(_0xfb01('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfb01('0x14'));var db=require(_0xfb01('0x15'))['db'];config[_0xfb01('0x16')]=_[_0xfb01('0x17')](config[_0xfb01('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfb01('0x16')]));require(_0xfb01('0x18'))[_0xfb01('0x19')](socket);var jayson=require(_0xfb01('0x1a'));var client=jayson[_0xfb01('0x1b')][_0xfb01('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x284559,_0x227dcb,_0x556cfb,_0x3aaf53){return new BPromise(function(_0x6ddb49,_0x2c5548){var _0x5b559f=_0x3aaf53||client;return _0x5b559f[_0xfb01('0x1d')](_0x284559,_0x556cfb)['then'](function(_0x251f37){logger[_0xfb01('0x1e')](_0xfb01('0x1f'),_0x227dcb,_0xfb01('0x20'));logger['debug'](_0xfb01('0x21'),_0x227dcb,_0xfb01('0x20'),JSON[_0xfb01('0x22')](_0x251f37));if(_0x251f37[_0xfb01('0x23')]){if(_0x251f37[_0xfb01('0x23')]['code']===0x1f4){logger[_0xfb01('0x23')](_0xfb01('0x1f'),_0x227dcb,_0x251f37[_0xfb01('0x23')]['message']);return _0x2c5548(_0x251f37[_0xfb01('0x23')][_0xfb01('0x24')]);}logger['error'](_0xfb01('0x1f'),_0x227dcb,_0x251f37[_0xfb01('0x23')][_0xfb01('0x24')]);return _0x6ddb49(_0x251f37[_0xfb01('0x23')]['message']);}else{logger['info'](_0xfb01('0x1f'),_0x227dcb,'request\x20sent');_0x6ddb49(_0x251f37[_0xfb01('0x25')][_0xfb01('0x24')]);}})[_0xfb01('0x26')](function(_0x55f263){logger['error']('SmsAccount,\x20%s,\x20%s',_0x227dcb,_0x55f263);_0x2c5548(_0x55f263);});});}function respondWithStatusCode(_0x4d4f1f,_0x38846f){_0x38846f=_0x38846f||0xcc;return function(_0x30c167){if(_0x30c167){return _0x4d4f1f[_0xfb01('0x27')](_0x38846f);}return _0x4d4f1f[_0xfb01('0x28')](_0x38846f)[_0xfb01('0x29')]();};}function respondWithResult(_0x49c7aa,_0x401912){_0x401912=_0x401912||0xc8;return function(_0x3b8ebe){if(_0x3b8ebe){return _0x49c7aa[_0xfb01('0x28')](_0x401912)[_0xfb01('0x2a')](_0x3b8ebe);}};}function respondWithFilteredResult(_0x1cc62c,_0x5a6ed9){return function(_0x5c0d2e){if(_0x5c0d2e){var _0x558c57=typeof _0x5a6ed9[_0xfb01('0x2b')]===_0xfb01('0x2c')&&typeof _0x5a6ed9[_0xfb01('0x2d')]===_0xfb01('0x2c');var _0x19f0a7=_0x5c0d2e['count'];var _0x3e3e70=_0x558c57?0x0:_0x5a6ed9['offset'];var _0x4e2e66=_0x558c57?_0x5c0d2e['count']:_0x5a6ed9[_0xfb01('0x2b')]+_0x5a6ed9[_0xfb01('0x2d')];var _0x124b5c;if(_0x4e2e66>=_0x19f0a7){_0x4e2e66=_0x19f0a7;_0x124b5c=0xc8;}else{_0x124b5c=0xce;}_0x1cc62c[_0xfb01('0x28')](_0x124b5c);return _0x1cc62c['set'](_0xfb01('0x2e'),_0x3e3e70+'-'+_0x4e2e66+'/'+_0x19f0a7)[_0xfb01('0x2a')](_0x5c0d2e);}return null;};}function patchUpdates(_0x50f00f){return function(_0x2bd08c){try{jsonpatch[_0xfb01('0x2f')](_0x2bd08c,_0x50f00f,!![]);}catch(_0x2828ab){return BPromise[_0xfb01('0x30')](_0x2828ab);}return _0x2bd08c[_0xfb01('0x31')]();};}function saveUpdates(_0x18a729,_0x1c13bf){return function(_0x1eaf8b){if(_0x1eaf8b){return _0x1eaf8b['update'](_0x18a729)[_0xfb01('0x32')](function(_0x245366){return _0x245366;});}return null;};}function removeEntity(_0x5b33f4,_0x6d4b84){return function(_0x5d8a28){if(_0x5d8a28){return _0x5d8a28[_0xfb01('0x33')]()['then'](function(){var _0x2d847f=_0x5d8a28[_0xfb01('0x34')]({'plain':!![]});var _0x420aee=_0xfb01('0x35');return db['UserProfileResource']['destroy']({'where':{'type':_0x420aee,'resourceId':_0x2d847f['id']}})[_0xfb01('0x32')](function(){return _0x5d8a28;});})[_0xfb01('0x32')](function(){_0x5b33f4[_0xfb01('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e841d,_0x5de2b9){return function(_0x2b7412){if(!_0x2b7412){_0x2e841d[_0xfb01('0x27')](0x194);}return _0x2b7412;};}function handleError(_0x46525b,_0x4def84){_0x4def84=_0x4def84||0x1f4;return function(_0x2acbe6){logger[_0xfb01('0x23')](_0x2acbe6[_0xfb01('0x36')]);if(_0x2acbe6[_0xfb01('0x37')]){delete _0x2acbe6[_0xfb01('0x37')];}_0x46525b[_0xfb01('0x28')](_0x4def84)[_0xfb01('0x38')](_0x2acbe6);};}exports[_0xfb01('0x39')]=function(_0x1f5365,_0x3dfeee){var _0x8651ae={'include':[{'model':db[_0xfb01('0x3a')],'as':_0xfb01('0x3b')}]},_0x1df246={},_0x402e4b={'count':0x0,'rows':[]};var _0x2f7058=_[_0xfb01('0x3c')](db['SmsAccount'][_0xfb01('0x3d')],function(_0x262ee9){return{'name':_0x262ee9[_0xfb01('0x3e')],'type':_0x262ee9['type']['key']};});_0x1df246[_0xfb01('0x3f')]=_['map'](_0x2f7058,_0xfb01('0x37'));_0x1df246['query']=_[_0xfb01('0x40')](_0x1f5365[_0xfb01('0x41')]);_0x1df246[_0xfb01('0x42')]=_[_0xfb01('0x43')](_0x1df246[_0xfb01('0x3f')],_0x1df246['query']);_0x8651ae[_0xfb01('0x44')]=_[_0xfb01('0x43')](_0x1df246[_0xfb01('0x3f')],qs[_0xfb01('0x45')](_0x1f5365['query'][_0xfb01('0x45')]));_0x8651ae[_0xfb01('0x44')]=_0x8651ae[_0xfb01('0x44')][_0xfb01('0x46')]?_0x8651ae['attributes']:_0x1df246[_0xfb01('0x3f')];if(!_0x1f5365['query'][_0xfb01('0x47')](_0xfb01('0x48'))){_0x8651ae[_0xfb01('0x2d')]=qs['limit'](_0x1f5365[_0xfb01('0x41')][_0xfb01('0x2d')]);_0x8651ae['offset']=qs[_0xfb01('0x2b')](_0x1f5365[_0xfb01('0x41')][_0xfb01('0x2b')]);}_0x8651ae[_0xfb01('0x49')]=qs['sort'](_0x1f5365[_0xfb01('0x41')][_0xfb01('0x4a')]);_0x8651ae[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_['pick'](_0x1f5365['query'],_0x1df246['filters']),_0x2f7058);if(_0x1f5365[_0xfb01('0x41')][_0xfb01('0x4c')]){_0x8651ae[_0xfb01('0x4b')]=_[_0xfb01('0x4d')](_0x8651ae[_0xfb01('0x4b')],{'$or':_[_0xfb01('0x3c')](_0x2f7058,function(_0x4319ec){if(_0x4319ec[_0xfb01('0x4e')]!==_0xfb01('0x4f')){var _0x582d4c={};_0x582d4c[_0x4319ec[_0xfb01('0x37')]]={'$like':'%'+_0x1f5365['query'][_0xfb01('0x4c')]+'%'};return _0x582d4c;}})});}_0x8651ae=_[_0xfb01('0x4d')]({},_0x8651ae,_0x1f5365['options']);var _0xec802a={'where':_0x8651ae['where']};return db['SmsAccount']['count'](_0xec802a)[_0xfb01('0x32')](function(_0x353f6e){_0x402e4b['count']=_0x353f6e;if(_0x1f5365[_0xfb01('0x41')][_0xfb01('0x50')]){_0x8651ae[_0xfb01('0x51')]=[{'all':!![]}];}return db[_0xfb01('0x52')][_0xfb01('0x53')](_0x8651ae);})[_0xfb01('0x32')](function(_0x39a822){_0x402e4b[_0xfb01('0x54')]=_0x39a822;return _0x402e4b;})[_0xfb01('0x32')](respondWithFilteredResult(_0x3dfeee,_0x8651ae))[_0xfb01('0x26')](handleError(_0x3dfeee,null));};exports[_0xfb01('0x55')]=function(_0xcf0e74,_0x21f3ac){var _0x19e40f={'raw':![],'where':{'id':_0xcf0e74[_0xfb01('0x56')]['id']},'include':[{'model':db[_0xfb01('0x3a')],'as':'mandatoryDispositionPause'}]},_0x3cf45a={};_0x3cf45a[_0xfb01('0x3f')]=_[_0xfb01('0x40')](db[_0xfb01('0x52')][_0xfb01('0x3d')]);_0x3cf45a['query']=_[_0xfb01('0x40')](_0xcf0e74[_0xfb01('0x41')]);_0x3cf45a[_0xfb01('0x42')]=_['intersection'](_0x3cf45a[_0xfb01('0x3f')],_0x3cf45a[_0xfb01('0x41')]);_0x19e40f['attributes']=_[_0xfb01('0x43')](_0x3cf45a['model'],qs['fields'](_0xcf0e74['query'][_0xfb01('0x45')]));_0x19e40f[_0xfb01('0x44')]=_0x19e40f[_0xfb01('0x44')][_0xfb01('0x46')]?_0x19e40f['attributes']:_0x3cf45a[_0xfb01('0x3f')];if(_0xcf0e74[_0xfb01('0x41')][_0xfb01('0x50')]){_0x19e40f[_0xfb01('0x51')]=[{'all':!![]}];}_0x19e40f=_[_0xfb01('0x4d')]({},_0x19e40f,_0xcf0e74[_0xfb01('0x57')]);return db[_0xfb01('0x52')][_0xfb01('0x58')](_0x19e40f)['then'](handleEntityNotFound(_0x21f3ac,null))['then'](respondWithResult(_0x21f3ac,null))[_0xfb01('0x26')](handleError(_0x21f3ac,null));};exports['create']=function(_0x3b0499,_0x10cd64){return db[_0xfb01('0x52')]['create'](_0x3b0499[_0xfb01('0x59')],{})['then'](function(_0x5be10d){var _0x3b4ca1=_0x3b0499[_0xfb01('0x5a')][_0xfb01('0x34')]({'plain':!![]});if(!_0x3b4ca1)throw new Error(_0xfb01('0x5b'));if(_0x3b4ca1['role']==='user'){var _0x14d848=_0x5be10d['get']({'plain':!![]});var _0x31823b=_0xfb01('0x35');return db[_0xfb01('0x5c')][_0xfb01('0x58')]({'where':{'name':_0x31823b,'userProfileId':_0x3b4ca1[_0xfb01('0x5d')]},'raw':!![]})[_0xfb01('0x32')](function(_0x194b24){if(_0x194b24&&_0x194b24[_0xfb01('0x5e')]===0x0){return db[_0xfb01('0x5f')][_0xfb01('0x60')]({'name':_0x14d848[_0xfb01('0x37')],'resourceId':_0x14d848['id'],'type':_0x194b24[_0xfb01('0x37')],'sectionId':_0x194b24['id']},{})[_0xfb01('0x32')](function(){return _0x5be10d;});}else{return _0x5be10d;}})[_0xfb01('0x26')](function(_0x5550e1){logger[_0xfb01('0x23')](_0xfb01('0x61'),_0x5550e1);throw _0x5550e1;});}return _0x5be10d;})[_0xfb01('0x32')](respondWithResult(_0x10cd64,0xc9))[_0xfb01('0x26')](handleError(_0x10cd64,null));};exports[_0xfb01('0x62')]=function(_0x3d5405,_0x4cab98){if(_0x3d5405['body']['id']){delete _0x3d5405[_0xfb01('0x59')]['id'];}return db[_0xfb01('0x52')]['find']({'where':{'id':_0x3d5405['params']['id']},'include':[{'model':db['Pause'],'as':_0xfb01('0x3b')}]})[_0xfb01('0x32')](handleEntityNotFound(_0x4cab98,null))[_0xfb01('0x32')](saveUpdates(_0x3d5405[_0xfb01('0x59')],null))['then'](respondWithResult(_0x4cab98,null))[_0xfb01('0x26')](handleError(_0x4cab98,null));};exports[_0xfb01('0x33')]=function(_0x18a8c1,_0x57e7ad){return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x18a8c1[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x57e7ad,null))[_0xfb01('0x32')](removeEntity(_0x57e7ad,null))['catch'](handleError(_0x57e7ad,null));};exports[_0xfb01('0x63')]=function(_0x5bf16b,_0x387753){return db['SmsAccount']['describe']()['then'](respondWithResult(_0x387753,null))[_0xfb01('0x26')](handleError(_0x387753,null));};exports[_0xfb01('0x64')]=function(_0x387159,_0x155734,_0x1bc803){if(_0x387159[_0xfb01('0x59')]['id']){delete _0x387159[_0xfb01('0x59')]['id'];}return db['SmsAccount'][_0xfb01('0x58')]({'where':{'id':_0x387159[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x155734,null))[_0xfb01('0x32')](function(_0x4830bf){if(_0x4830bf){_0x387159[_0xfb01('0x59')][_0xfb01('0x65')]=_0x4830bf['id'];return db[_0xfb01('0x66')]['create'](_0x387159[_0xfb01('0x59')]);}})['then'](respondWithResult(_0x155734,null))[_0xfb01('0x26')](handleError(_0x155734,null));};exports['getDispositions']=function(_0x78fe1d,_0x1fcdf0,_0x2a518d){var _0x1c2675={'raw':![],'where':{}};var _0x317489={};var _0x13904e={'count':0x0,'rows':[]};return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x78fe1d[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x1fcdf0,null))[_0xfb01('0x32')](function(_0x355d1f){if(_0x355d1f){_0x317489[_0xfb01('0x3f')]=_['keys'](db['Disposition'][_0xfb01('0x3d')]);_0x317489[_0xfb01('0x41')]=_[_0xfb01('0x40')](_0x78fe1d['query']);_0x317489[_0xfb01('0x42')]=_[_0xfb01('0x43')](_0x317489[_0xfb01('0x3f')],_0x317489[_0xfb01('0x41')]);_0x1c2675[_0xfb01('0x44')]=_[_0xfb01('0x43')](_0x317489[_0xfb01('0x3f')],qs[_0xfb01('0x45')](_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x45')]));_0x1c2675[_0xfb01('0x44')]=_0x1c2675[_0xfb01('0x44')]['length']?_0x1c2675[_0xfb01('0x44')]:_0x317489[_0xfb01('0x3f')];if(!_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x47')]('nolimit')){_0x1c2675[_0xfb01('0x2d')]=qs['limit'](_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x2d')]);_0x1c2675[_0xfb01('0x2b')]=qs[_0xfb01('0x2b')](_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x2b')]);}_0x1c2675[_0xfb01('0x49')]=qs[_0xfb01('0x4a')](_0x78fe1d[_0xfb01('0x41')]['sort']);_0x1c2675[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_[_0xfb01('0x67')](_0x78fe1d['query'],_0x317489[_0xfb01('0x42')]));_0x1c2675['where'][_0xfb01('0x65')]=_0x355d1f['id'];if(_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x4c')]){_0x1c2675[_0xfb01('0x4b')]=_[_0xfb01('0x4d')](_0x1c2675[_0xfb01('0x4b')],{'$or':_[_0xfb01('0x3c')](_0x1c2675[_0xfb01('0x44')],function(_0x318eb8){var _0x26ed0a={};_0x26ed0a[_0x318eb8]={'$like':'%'+_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x4c')]+'%'};return _0x26ed0a;})});}_0x1c2675=_['merge']({},_0x1c2675,_0x78fe1d['options']);return db[_0xfb01('0x66')][_0xfb01('0x68')]({'where':_0x1c2675['where']})[_0xfb01('0x32')](function(_0x3afc7b){_0x13904e['count']=_0x3afc7b;if(_0x78fe1d[_0xfb01('0x41')][_0xfb01('0x50')]){_0x1c2675['include']=[{'all':!![]}];}return db[_0xfb01('0x66')][_0xfb01('0x53')](_0x1c2675);})['then'](function(_0x58b302){_0x13904e[_0xfb01('0x54')]=_0x58b302;return _0x13904e;});}})['then'](respondWithFilteredResult(_0x1fcdf0,_0x1c2675))[_0xfb01('0x26')](handleError(_0x1fcdf0,null));};exports['removeDispositions']=function(_0x5be541,_0x2d6b14,_0x51db9f){return db['SmsAccount'][_0xfb01('0x58')]({'where':{'id':_0x5be541[_0xfb01('0x56')]['id']}})['then'](handleEntityNotFound(_0x2d6b14,null))['then'](function(_0x3011c4){if(_0x3011c4){return _0x3011c4['removeDispositions'](_0x5be541[_0xfb01('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x2d6b14,null))[_0xfb01('0x26')](handleError(_0x2d6b14,null));};exports[_0xfb01('0x69')]=function(_0x2a4fe7,_0x1a12eb,_0x1a6d76){if(_0x2a4fe7['body']['id']){delete _0x2a4fe7[_0xfb01('0x59')]['id'];}return db[_0xfb01('0x52')]['find']({'where':{'id':_0x2a4fe7[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x1a12eb,null))[_0xfb01('0x32')](function(_0x4903f5){if(_0x4903f5){_0x2a4fe7[_0xfb01('0x59')][_0xfb01('0x65')]=_0x4903f5['id'];return db['CannedAnswer'][_0xfb01('0x60')](_0x2a4fe7[_0xfb01('0x59')]);}})['then'](respondWithResult(_0x1a12eb,null))['catch'](handleError(_0x1a12eb,null));};exports[_0xfb01('0x6a')]=function(_0x454cdf,_0x56ab40,_0x27f62b){var _0x4e6aa3={'raw':![],'where':{}};var _0x19a632={};var _0x453802={'count':0x0,'rows':[]};return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x454cdf[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x56ab40,null))[_0xfb01('0x32')](function(_0x500b67){if(_0x500b67){_0x19a632[_0xfb01('0x3f')]=_[_0xfb01('0x40')](db[_0xfb01('0x6b')][_0xfb01('0x3d')]);_0x19a632[_0xfb01('0x41')]=_[_0xfb01('0x40')](_0x454cdf[_0xfb01('0x41')]);_0x19a632[_0xfb01('0x42')]=_[_0xfb01('0x43')](_0x19a632['model'],_0x19a632[_0xfb01('0x41')]);_0x4e6aa3[_0xfb01('0x44')]=_['intersection'](_0x19a632[_0xfb01('0x3f')],qs[_0xfb01('0x45')](_0x454cdf[_0xfb01('0x41')][_0xfb01('0x45')]));_0x4e6aa3['attributes']=_0x4e6aa3[_0xfb01('0x44')][_0xfb01('0x46')]?_0x4e6aa3[_0xfb01('0x44')]:_0x19a632[_0xfb01('0x3f')];if(!_0x454cdf[_0xfb01('0x41')]['hasOwnProperty'](_0xfb01('0x48'))){_0x4e6aa3[_0xfb01('0x2d')]=qs['limit'](_0x454cdf[_0xfb01('0x41')][_0xfb01('0x2d')]);_0x4e6aa3[_0xfb01('0x2b')]=qs[_0xfb01('0x2b')](_0x454cdf[_0xfb01('0x41')][_0xfb01('0x2b')]);}_0x4e6aa3['order']=qs['sort'](_0x454cdf['query'][_0xfb01('0x4a')]);_0x4e6aa3[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_[_0xfb01('0x67')](_0x454cdf[_0xfb01('0x41')],_0x19a632[_0xfb01('0x42')]));_0x4e6aa3[_0xfb01('0x4b')][_0xfb01('0x65')]=_0x500b67['id'];if(_0x454cdf['query'][_0xfb01('0x4c')]){_0x4e6aa3[_0xfb01('0x4b')]=_[_0xfb01('0x4d')](_0x4e6aa3['where'],{'$or':_[_0xfb01('0x3c')](_0x4e6aa3[_0xfb01('0x44')],function(_0x5a2b03){var _0x12af81={};_0x12af81[_0x5a2b03]={'$like':'%'+_0x454cdf[_0xfb01('0x41')][_0xfb01('0x4c')]+'%'};return _0x12af81;})});}_0x4e6aa3=_[_0xfb01('0x4d')]({},_0x4e6aa3,_0x454cdf[_0xfb01('0x57')]);return db[_0xfb01('0x6b')][_0xfb01('0x68')]({'where':_0x4e6aa3[_0xfb01('0x4b')]})[_0xfb01('0x32')](function(_0x3d3813){_0x453802[_0xfb01('0x68')]=_0x3d3813;if(_0x454cdf['query']['includeAll']){_0x4e6aa3['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xfb01('0x53')](_0x4e6aa3);})['then'](function(_0x34b9cf){_0x453802[_0xfb01('0x54')]=_0x34b9cf;return _0x453802;});}})[_0xfb01('0x32')](respondWithFilteredResult(_0x56ab40,_0x4e6aa3))[_0xfb01('0x26')](handleError(_0x56ab40,null));};exports[_0xfb01('0x6c')]=function(_0x55be09,_0xb538c3,_0x5b9f43){return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x55be09[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0xb538c3,null))[_0xfb01('0x32')](function(_0x498896){if(_0x498896){return _0x498896[_0xfb01('0x6c')](_0x55be09['query'][_0xfb01('0x6d')]);}})[_0xfb01('0x32')](respondWithStatusCode(_0xb538c3,null))[_0xfb01('0x26')](handleError(_0xb538c3,null));};exports[_0xfb01('0x6e')]=function(_0x1f7496,_0x3af4d2,_0x34aa27){var _0x47a17e={'channel':_0xfb01('0x6f')};var _0x3a601e=[];var _0xe7c923=[];var _0x1c52aa={};return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x1f7496['params']['id']},'include':[{'model':db[_0xfb01('0x70')],'as':_0xfb01('0x71')}]})[_0xfb01('0x32')](handleEntityNotFound(_0x3af4d2,null))['then'](function(_0x48da31){_0x47a17e[_0xfb01('0x72')]=_0x48da31;_0x47a17e['applications']=_[_0xfb01('0x73')](_0x48da31[_0xfb01('0x71')],[_0xfb01('0x74')],['asc']);if(_0x47a17e['account']['Applications']){delete _0x47a17e[_0xfb01('0x72')]['Applications'];}return db[_0xfb01('0x75')]['describe']();})[_0xfb01('0x32')](function(_0x23a093){if(!_0x23a093){throw new db['Sequelize']['ValidationError'](_0xfb01('0x76'));}_0x3a601e=_[_0xfb01('0x77')](_[_0xfb01('0x40')](_0x23a093),[_0xfb01('0x78'),_0xfb01('0x79')]);_0xe7c923=_[_0xfb01('0x77')](_[_0xfb01('0x40')](_0x23a093),[_0xfb01('0x78'),_0xfb01('0x79'),'CompanyId',_0xfb01('0x7a')]);_0x47a17e['body']={'mapKey':_0xfb01('0x7b')};if(_0x47a17e[_0xfb01('0x72')][_0xfb01('0x4e')]){switch(_0x47a17e[_0xfb01('0x72')]['type']){case'twilio':_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')]['From'];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x7d')];_0x47a17e['body'][_0xfb01('0x7e')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x7f')];break;case _0xfb01('0x80'):_0x47a17e['body'][_0xfb01('0x7c')]='+'+_0x1f7496[_0xfb01('0x59')][_0xfb01('0x81')];_0x47a17e['body'][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x82')];break;case _0xfb01('0x83'):_0x47a17e['body'][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x7c')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x24')];break;case _0xfb01('0x84'):_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x7c')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')]=_0x1f7496['body'][_0xfb01('0x59')];_0x47a17e[_0xfb01('0x59')]['messageId']=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x85')];break;case _0xfb01('0x86'):_0x47a17e['body'][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x87')];_0x47a17e['body'][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x88')];_0x47a17e[_0xfb01('0x59')]['messageId']=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x89')];break;case _0xfb01('0x8a'):_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]='+'+_0x1f7496[_0xfb01('0x59')]['results'][0x0][_0xfb01('0x7c')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x8b')][0x0][_0xfb01('0x82')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7e')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x8b')][0x0][_0xfb01('0x7e')];break;case _0xfb01('0x8c'):_0x47a17e['body'][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x8d')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x8e')]['message'];break;case _0xfb01('0x8f'):_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')]['fromNumber'];_0x47a17e['body']['body']=_0x1f7496[_0xfb01('0x59')]['text'];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7e')]=_0x1f7496[_0xfb01('0x59')][_0xfb01('0x90')];break;case _0xfb01('0x91'):_0x47a17e[_0xfb01('0x59')]['messageId']=_0x1f7496[_0xfb01('0x59')][0x0][_0xfb01('0x24')]['id'];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')][0x0][_0xfb01('0x24')][_0xfb01('0x7c')];_0x47a17e['body'][_0xfb01('0x59')]=_0x1f7496[_0xfb01('0x59')][0x0][_0xfb01('0x24')][_0xfb01('0x82')];break;case'intelepeer':_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')]=_0x1f7496[_0xfb01('0x59')]['from'];_0x47a17e['body']['body']=_0x1f7496['body'][_0xfb01('0x24')];_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7e')]=_0x1f7496[_0xfb01('0x59')]['refid'];break;}}if(_0x47a17e[_0xfb01('0x59')]['id']){delete _0x47a17e[_0xfb01('0x59')]['id'];}if(_['isNil'](_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')])){throw new db[(_0xfb01('0x92'))][(_0xfb01('0x93'))]('from\x20is\x20mandatory');}if(_[_0xfb01('0x94')](_0x47a17e[_0xfb01('0x59')]['body'])||_0x47a17e[_0xfb01('0x59')]['body']===''){throw new db[(_0xfb01('0x92'))]['ValidationError'](_0xfb01('0x95'));}if(_[_0xfb01('0x94')](_0x47a17e['body']['mapKey'])){throw new db[(_0xfb01('0x92'))][(_0xfb01('0x93'))](_0xfb01('0x96')+_0xe7c923);}if(!_[_0xfb01('0x97')](_0xe7c923,_0x47a17e[_0xfb01('0x59')][_0xfb01('0x98')])){throw new db[(_0xfb01('0x92'))][(_0xfb01('0x93'))](_0xfb01('0x99')+_0xe7c923);}_0x1c52aa[_0x47a17e[_0xfb01('0x59')]['mapKey']]=_0x47a17e[_0xfb01('0x59')]['from'];return db[_0xfb01('0x9a')]['find']({'where':{'id':_0x47a17e['account'][_0xfb01('0x7a')]},'include':[{'model':db[_0xfb01('0x75')],'as':_0xfb01('0x9b'),'where':_0x1c52aa,'limit':0x1,'order':[['updatedAt',_0xfb01('0x9c')]]}]});})['then'](handleEntityNotFound(_0x3af4d2,null))[_0xfb01('0x32')](function(_0x2bfa71){if(_0x2bfa71){_0x47a17e[_0xfb01('0x9d')]=_[_0xfb01('0x9e')](_0x2bfa71,[_0xfb01('0x9b')]);if(_0x2bfa71[_0xfb01('0x9b')][_0xfb01('0x46')]){return _0x2bfa71[_0xfb01('0x9b')][0x0];}var _0xd89804=_[_0xfb01('0x17')](_0x47a17e[_0xfb01('0x59')],{'firstName':_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')],'ListId':_0x2bfa71['id']});_0xd89804[_0x47a17e[_0xfb01('0x59')][_0xfb01('0x98')]]=_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')];return db[_0xfb01('0x75')][_0xfb01('0x60')](_0xd89804,{'fields':_0x3a601e,'raw':!![]});}})['then'](handleEntityNotFound(_0x3af4d2,null))['then'](function(_0x2a44cf){if(_0x2a44cf){_0x47a17e[_0xfb01('0x9f')]=_0x2a44cf;var _0xfa4323={'ContactId':_0x2a44cf['id'],'phone':_0x47a17e[_0xfb01('0x59')]['from'],'SmsAccountId':_0x1f7496[_0xfb01('0x56')]['id']};var _0x19324f={'ContactId':_0x2a44cf['id'],'SmsAccountId':_0x1f7496[_0xfb01('0x56')]['id'],'closed':![]};return db[_0xfb01('0xa0')]['find']({'where':_0x19324f})[_0xfb01('0x32')](function(_0xdaf4ae){if(_0xdaf4ae){return[_0xdaf4ae,![]];}return db[_0xfb01('0xa0')]['create'](_0xfa4323)[_0xfb01('0x32')](function(_0x13028c){return[_0x13028c,!![]];});});}})[_0xfb01('0xa1')](function(_0xf4e4c2,_0x4449f4){_0x47a17e[_0xfb01('0xa2')]=_0xf4e4c2[_0xfb01('0x34')]({'plain':!![]});_0x47a17e[_0xfb01('0xa2')][_0xfb01('0xa3')]=![];if(_0x4449f4){if(_0x47a17e['account']['autoclose']){_0x47a17e[_0xfb01('0xa4')][_0xfb01('0xa5')]({'id':0x0,'priority':_0x47a17e[_0xfb01('0xa4')][_0xfb01('0x46')]+0x1,'app':'close','appdata':_0xfb01('0xa6'),'interval':_0xfb01('0xa7')});}_0x47a17e[_0xfb01('0xa2')][_0xfb01('0xa3')]=!![];}return db[_0xfb01('0xa8')]['create']({'phone':_0x47a17e[_0xfb01('0x59')][_0xfb01('0x7c')],'messageId':_0x47a17e['body']['messageId'],'body':_0x47a17e[_0xfb01('0x59')][_0xfb01('0x59')],'SmsAccountId':_0x1f7496['params']['id'],'SmsInteractionId':_0xf4e4c2['id'],'direction':'in','ContactId':_0xf4e4c2[_0xfb01('0xa9')],'AttachmentId':_0x47a17e['body']['AttachmentId']});})[_0xfb01('0x32')](function(_0x58e9c3){_0x47a17e['message']=_0x58e9c3;if(_0x47a17e[_0xfb01('0xa2')]['UserId']){return db[_0xfb01('0xaa')][_0xfb01('0x58')]({'attributes':['id',_0xfb01('0x37')],'where':{'id':_0x47a17e[_0xfb01('0xa2')][_0xfb01('0xab')]}})[_0xfb01('0x32')](function(_0x12101f){if(_0x12101f){_0x47a17e[_0xfb01('0xa4')][_0xfb01('0xac')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x12101f[_0xfb01('0x37')]+','+(_0x47a17e[_0xfb01('0x72')][_0xfb01('0xad')]||0xa),'interval':_0xfb01('0xa7')});}return respondWithRpcPromise(_0xfb01('0xae'),_0xfb01('0xaf'),_0x47a17e);});}return respondWithRpcPromise(_0xfb01('0xae'),_0xfb01('0xaf'),_0x47a17e);})[_0xfb01('0x32')](function(_0x4e80d4){if(_0x4e80d4){var _0x3872bb=0xc8;var _0xa7ccf2=_0xfb01('0xb0');logger[_0xfb01('0x1e')](_0xfb01('0x21'),_0xa7ccf2,_0x3872bb,_0xfb01('0xb1'));logger[_0xfb01('0xb2')](_0xfb01('0xb3'),_0xa7ccf2,_0x3872bb,_0xfb01('0xb1'),JSON['stringify'](_0x4e80d4));if(_0x47a17e['account']['type']===_0xfb01('0xb4')){return _0x3af4d2[_0xfb01('0x28')](_0x3872bb)[_0xfb01('0xb5')](_0xfb01('0xb6'),_0xfb01('0xb7'))['send'](_0xfb01('0xb8'));}else{return _0x3af4d2['status'](_0x3872bb)[_0xfb01('0x2a')](_0x4e80d4);}}})[_0xfb01('0x26')](handleError(_0x3af4d2,null));};exports[_0xfb01('0xb9')]=function(_0x50bad7,_0x3deffe){var _0x214d52=_0x50bad7['params']['id'];var _0x4317bd=_0x50bad7['body'];var _0xe9cc8f=0xc8;var _0x1f6d86=null;return db[_0xfb01('0xba')][_0xfb01('0xbb')]({'isolationLevel':db[_0xfb01('0xba')]['Transaction'][_0xfb01('0xbc')]['READ_COMMITTED']},function(_0x58f4ca){return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x214d52},'transaction':_0x58f4ca})[_0xfb01('0x32')](function(_0x6b5c7f){if(_0x6b5c7f){return db[_0xfb01('0x70')]['destroy']({'where':{'SmsAccountId':_0x214d52},'transaction':_0x58f4ca})[_0xfb01('0x32')](function(){var _0x668d2d=_['map'](_0x4317bd,function(_0xccad5a){_0xccad5a[_0xfb01('0x65')]=_0x214d52;return _0xccad5a;});return db[_0xfb01('0x70')]['bulkCreate'](_0x668d2d,{'transaction':_0x58f4ca});});}else{_0xe9cc8f=0x194;_0x1f6d86=[];}});})[_0xfb01('0x32')](function(){if(_0xe9cc8f!==0x194){return db[_0xfb01('0x70')][_0xfb01('0xbd')]({'where':{'SmsAccountId':_0x214d52},'order':_0xfb01('0x74')})[_0xfb01('0x32')](function(_0x365994){_0x1f6d86=_0x365994;});}})[_0xfb01('0x26')](function(_0xe27ebd){_0xe9cc8f=0x1f4;logger['error'](_0xe27ebd['stack']);if(_0xe27ebd['name']){delete _0xe27ebd['name'];}_0x1f6d86=_0xe27ebd;})[_0xfb01('0xbe')](function(){if(_0x1f6d86===null){_0x3deffe[_0xfb01('0x27')](_0xe9cc8f);}else{if(_0xe9cc8f===0x1f4){_0x3deffe[_0xfb01('0x28')](_0xe9cc8f)[_0xfb01('0x38')](_0x1f6d86);}else{_0x3deffe['status'](_0xe9cc8f)[_0xfb01('0x2a')](_0x1f6d86);}}});};exports['getApplications']=function(_0x17cfcb,_0x1d4420,_0x394ef2){var _0x26aef3={};var _0x437a63={};var _0x568b8a;var _0x3fe262;return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x17cfcb[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x1d4420,null))['then'](function(_0x332c32){if(_0x332c32){_0x568b8a=_0x332c32;_0x437a63[_0xfb01('0x3f')]=_[_0xfb01('0x40')](db[_0xfb01('0x70')][_0xfb01('0x3d')]);_0x437a63[_0xfb01('0x41')]=_[_0xfb01('0x40')](_0x17cfcb[_0xfb01('0x41')]);_0x437a63['filters']=_[_0xfb01('0x43')](_0x437a63[_0xfb01('0x3f')],_0x437a63[_0xfb01('0x41')]);_0x26aef3[_0xfb01('0x44')]=_['intersection'](_0x437a63[_0xfb01('0x3f')],qs['fields'](_0x17cfcb[_0xfb01('0x41')]['fields']));_0x26aef3[_0xfb01('0x44')]=_0x26aef3[_0xfb01('0x44')][_0xfb01('0x46')]?_0x26aef3['attributes']:_0x437a63[_0xfb01('0x3f')];_0x26aef3[_0xfb01('0x49')]=qs[_0xfb01('0x4a')](_0x17cfcb[_0xfb01('0x41')]['sort']);_0x26aef3[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_[_0xfb01('0x67')](_0x17cfcb[_0xfb01('0x41')],_0x437a63['filters']));if(_0x17cfcb[_0xfb01('0x41')][_0xfb01('0x4c')]){_0x26aef3[_0xfb01('0x4b')]=_[_0xfb01('0x4d')](_0x26aef3[_0xfb01('0x4b')],{'$or':_[_0xfb01('0x3c')](_0x26aef3[_0xfb01('0x44')],function(_0x171151){var _0xa145df={};_0xa145df[_0x171151]={'$like':'%'+_0x17cfcb[_0xfb01('0x41')]['filter']+'%'};return _0xa145df;})});}_0x26aef3=_[_0xfb01('0x4d')]({},_0x26aef3,_0x17cfcb['options']);return _0x568b8a[_0xfb01('0xbf')](_0x26aef3);}})[_0xfb01('0x32')](function(_0x585a9d){if(_0x585a9d){_0x3fe262=_0x585a9d['length'];if(!_0x17cfcb['query']['hasOwnProperty'](_0xfb01('0x48'))){_0x26aef3[_0xfb01('0x2d')]=qs[_0xfb01('0x2d')](_0x17cfcb[_0xfb01('0x41')]['limit']);_0x26aef3[_0xfb01('0x2b')]=qs[_0xfb01('0x2b')](_0x17cfcb[_0xfb01('0x41')][_0xfb01('0x2b')]);}return _0x568b8a[_0xfb01('0xbf')](_0x26aef3);}})[_0xfb01('0x32')](function(_0x56155a){if(_0x56155a){return _0x56155a?{'count':_0x3fe262,'rows':_0x56155a}:null;}})[_0xfb01('0x32')](respondWithResult(_0x1d4420,null))[_0xfb01('0x26')](handleError(_0x1d4420,null));};exports[_0xfb01('0xc0')]=function(_0x3087d0,_0x57ae3b,_0x1962e8){var _0x55a882={'raw':![],'where':{}};var _0x19493f={};var _0x5e7d9f={'count':0x0,'rows':[]};return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x3087d0[_0xfb01('0x56')]['id']}})['then'](handleEntityNotFound(_0x57ae3b,null))[_0xfb01('0x32')](function(_0x32da8c){if(_0x32da8c){_0x19493f[_0xfb01('0x3f')]=_[_0xfb01('0x40')](db['SmsInteraction']['rawAttributes']);_0x19493f['query']=_[_0xfb01('0x40')](_0x3087d0[_0xfb01('0x41')]);_0x19493f['filters']=_[_0xfb01('0x43')](_0x19493f['model'],_0x19493f[_0xfb01('0x41')]);_0x55a882[_0xfb01('0x44')]=_[_0xfb01('0x43')](_0x19493f[_0xfb01('0x3f')],qs[_0xfb01('0x45')](_0x3087d0[_0xfb01('0x41')][_0xfb01('0x45')]));_0x55a882[_0xfb01('0x44')]=_0x55a882[_0xfb01('0x44')][_0xfb01('0x46')]?_0x55a882[_0xfb01('0x44')]:_0x19493f['model'];if(!_0x3087d0[_0xfb01('0x41')][_0xfb01('0x47')]('nolimit')){_0x55a882[_0xfb01('0x2d')]=qs['limit'](_0x3087d0[_0xfb01('0x41')][_0xfb01('0x2d')]);_0x55a882[_0xfb01('0x2b')]=qs[_0xfb01('0x2b')](_0x3087d0['query'][_0xfb01('0x2b')]);}_0x55a882[_0xfb01('0x49')]=qs[_0xfb01('0x4a')](_0x3087d0['query'][_0xfb01('0x4a')]);_0x55a882[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_[_0xfb01('0x67')](_0x3087d0[_0xfb01('0x41')],_0x19493f['filters']));_0x55a882[_0xfb01('0x4b')][_0xfb01('0x65')]=_0x32da8c['id'];if(_0x3087d0[_0xfb01('0x41')]['filter']){_0x55a882[_0xfb01('0x4b')]=_[_0xfb01('0x4d')](_0x55a882['where'],{'$or':_[_0xfb01('0x3c')](_0x55a882['attributes'],function(_0x31ceee){var _0x35e187={};_0x35e187[_0x31ceee]={'$like':'%'+_0x3087d0[_0xfb01('0x41')][_0xfb01('0x4c')]+'%'};return _0x35e187;})});}_0x55a882=_[_0xfb01('0x4d')]({},_0x55a882,_0x3087d0[_0xfb01('0x57')]);return db[_0xfb01('0xa0')]['count']({'where':_0x55a882[_0xfb01('0x4b')]})[_0xfb01('0x32')](function(_0x1ed361){_0x5e7d9f[_0xfb01('0x68')]=_0x1ed361;if(_0x3087d0[_0xfb01('0x41')][_0xfb01('0x50')]){_0x55a882['include']=[{'model':db[_0xfb01('0x75')],'as':_0xfb01('0xc1'),'required':![]},{'model':db[_0xfb01('0xaa')],'as':_0xfb01('0xc2'),'attributes':['name',_0xfb01('0xc3'),_0xfb01('0xc4')],'required':![]},{'model':db[_0xfb01('0xc5')],'as':_0xfb01('0xc6'),'attributes':['id',_0xfb01('0x37'),_0xfb01('0xc7')],'where':_0x3087d0[_0xfb01('0x41')]['tag']?{'id':_0x3087d0[_0xfb01('0x41')]['tag']}:undefined,'required':_0x3087d0[_0xfb01('0x41')][_0xfb01('0xc8')]?!![]:![]}];}return db[_0xfb01('0xa0')][_0xfb01('0x53')](_0x55a882);})[_0xfb01('0x32')](function(_0x18a4ce){_0x5e7d9f[_0xfb01('0x54')]=_0x18a4ce;return _0x5e7d9f;});}})['then'](respondWithFilteredResult(_0x57ae3b,_0x55a882))[_0xfb01('0x26')](handleError(_0x57ae3b,null));};exports[_0xfb01('0x38')]=function(_0x34b993,_0x10a627,_0x17a99c){var _0x3e3045,_0x180f91,_0x4cb098;if(_[_0xfb01('0x94')](_0x34b993[_0xfb01('0x59')]['body'])||_0x34b993['body'][_0xfb01('0x59')]===''){throw new db[(_0xfb01('0x92'))][(_0xfb01('0x93'))](_0xfb01('0x95'));}if(_[_0xfb01('0x94')](_0x34b993[_0xfb01('0x59')]['to'])){throw new db[(_0xfb01('0x92'))][(_0xfb01('0x93'))](_0xfb01('0xc9'));}_0x3e3045=_0x34b993[_0xfb01('0x59')]['to'];return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x34b993[_0xfb01('0x56')]['id']},'include':[{'model':db[_0xfb01('0x9a')],'as':_0xfb01('0xca'),'include':[{'model':db['CmContact'],'as':_0xfb01('0x9b'),'where':{'mobile':_0x3e3045},'limit':0x1,'order':[[_0xfb01('0x79'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x10a627,null))[_0xfb01('0x32')](function(_0x49c151){if(_0x49c151&&_0x49c151[_0xfb01('0xca')]){_0x180f91=_0x49c151[_0xfb01('0x34')]({'plain':!![]});if(_0x180f91[_0xfb01('0xca')]&&_0x180f91[_0xfb01('0xca')]['Contacts'][_0xfb01('0x46')]){return _0x180f91['List'][_0xfb01('0x9b')][0x0];}return db[_0xfb01('0x75')]['create'](_['defaults'](_0x34b993[_0xfb01('0x59')],{'firstName':_0x3e3045,'mobile':_0x3e3045,'phone':_0x3e3045,'ListId':_0x180f91[_0xfb01('0x7a')]}));}})[_0xfb01('0x32')](handleEntityNotFound(_0x10a627,null))[_0xfb01('0x32')](function(_0x20b504){if(_0x20b504){_0x4cb098=_0x20b504;return db[_0xfb01('0xa0')]['find']({'where':{'ContactId':_0x4cb098['id'],'closed':![],'SmsAccountId':_0x180f91['id']}})[_0xfb01('0x32')](function(_0x2fe2b6){if(_0x2fe2b6){return[_0x2fe2b6,![]];}return db[_0xfb01('0xa0')]['create']({'UserId':_0x34b993[_0xfb01('0x5a')]['id'],'ContactId':_0x4cb098['id'],'SmsAccountId':_0x180f91['id'],'phone':_0x3e3045,'firstMsgDirection':_0xfb01('0xcb'),'Messages':[_[_0xfb01('0x4d')](_0x34b993[_0xfb01('0x59')],{'read':![],'body':_0x34b993[_0xfb01('0x59')][_0xfb01('0x59')],'phone':_0x3e3045,'SmsAccountId':_0x180f91['id'],'UserId':_0x34b993[_0xfb01('0x5a')]['id'],'ContactId':_0x4cb098['id']})]},{'include':[{'model':db[_0xfb01('0xa8')],'as':_0xfb01('0xcc')}]})[_0xfb01('0x32')](function(_0x4f2380){return[_0x4f2380,!![]];});});}})[_0xfb01('0xa1')](function(_0x7abc4c,_0x57ec73){if(_0x57ec73){return _0x7abc4c;}return db[_0xfb01('0xa8')][_0xfb01('0x60')](_[_0xfb01('0x4d')](_0x34b993[_0xfb01('0x59')],{'read':![],'body':_0x34b993[_0xfb01('0x59')][_0xfb01('0x59')],'phone':_0x3e3045,'SmsAccountId':_0x180f91['id'],'SmsInteractionId':_0x7abc4c['id'],'UserId':_0x34b993[_0xfb01('0x5a')]['id'],'ContactId':_0x4cb098['id']}))[_0xfb01('0x32')](function(_0x116a73){_0x7abc4c['dataValues'][_0xfb01('0xcc')]=[];_0x7abc4c[_0xfb01('0xcd')]['Messages']['push'](_0x116a73[_0xfb01('0xcd')]);return _0x7abc4c;});})['then'](respondWithResult(_0x10a627,null))[_0xfb01('0x26')](handleError(_0x10a627,null));};exports[_0xfb01('0x28')]=function(_0x3f8c60,_0x1ed99d,_0x4356db){if(_0x3f8c60[_0xfb01('0x59')]['id']){delete _0x3f8c60[_0xfb01('0x59')]['id'];}var _0x381b70,_0x2a4a7d,_0x3a9eeb;return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x3f8c60[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x1ed99d,null))[_0xfb01('0x32')](function(_0x198485){if(_0x198485){_0x3a9eeb=_0x198485;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xfb01('0xce'),_0x198485[_0xfb01('0x4e')],util[_0xfb01('0xcf')](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));switch(_0x198485[_0xfb01('0x4e')]){case _0xfb01('0x80'):if(_0x3f8c60[_0xfb01('0x59')]['skebby_dispatch_id']&&_0x3f8c60[_0xfb01('0x59')]['status']){_0x2a4a7d=_0x3f8c60['body'][_0xfb01('0x28')];return db[_0xfb01('0xa8')][_0xfb01('0x58')]({'where':{'messageId':_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd0')]}});}break;case _0xfb01('0x83'):if(_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd1')]&&_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd2')]){_0x2a4a7d=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd2')];return db['SmsMessage'][_0xfb01('0x58')]({'where':{'messageId':_0x3f8c60[_0xfb01('0x59')]['requestid']}});}break;case _0xfb01('0x84'):if(_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x85')]&&_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd3')]){_0x2a4a7d=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd3')];return db[_0xfb01('0xa8')][_0xfb01('0x58')]({'where':{'messageId':_0x3f8c60['body'][_0xfb01('0x85')]}});}break;case _0xfb01('0x8a'):var _0xf03e70=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x8b')][0x0];if(_0xf03e70['messageId']&&_0xf03e70[_0xfb01('0x28')][_0xfb01('0xd4')]===_0xfb01('0xd5')){_0x2a4a7d=_0xf03e70[_0xfb01('0x28')][_0xfb01('0xd4')];return db[_0xfb01('0xa8')][_0xfb01('0x58')]({'where':{'messageId':_0xf03e70[_0xfb01('0x7e')]}});}break;case _0xfb01('0x8f'):if(_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x7e')]&&_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x28')]){_0x2a4a7d=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x28')];return db[_0xfb01('0xa8')][_0xfb01('0x58')]({'where':{'messageId':_0x3f8c60['body'][_0xfb01('0x7e')]}});}break;case _0xfb01('0x91'):if(_0x3f8c60['body'][0x0][_0xfb01('0x24')]['id']){_0x2a4a7d=_0x3f8c60[_0xfb01('0x59')][0x0][_0xfb01('0x4e')];return db[_0xfb01('0xa8')]['find']({'where':{'messageId':_0x3f8c60['body'][0x0]['message']['id']}});}break;case _0xfb01('0xd6'):if(_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd7')]&&_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x28')]){_0x2a4a7d=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x28')];return db['SmsMessage'][_0xfb01('0x58')]({'where':{'messageId':_0x3f8c60[_0xfb01('0x59')][_0xfb01('0xd7')]}});}break;}}})[_0xfb01('0x32')](handleEntityNotFound(_0x1ed99d,null))[_0xfb01('0x32')](function(_0x3094bf){if(_0x3094bf){_0x381b70=_0x3094bf;switch(_0x3a9eeb['type']){case'skebby':if(_0x2a4a7d===_0xfb01('0xd5')){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfb01('0x28'),_0xfb01('0x80'),util[_0xfb01('0xcf')](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case _0xfb01('0x83'):if(_0x2a4a7d==='1'){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfb01('0x28'),_0xfb01('0x80'),util['inspect'](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case _0xfb01('0x84'):if(!_0x3f8c60['body'][_0xfb01('0xd8')]&&_0x2a4a7d>=0xc8&&_0x2a4a7d<=0xce){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')](_0xfb01('0x21'),_0xfb01('0x28'),'clicksend',util['inspect'](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x83124f=_0x3f8c60[_0xfb01('0x59')][_0xfb01('0x8b')][0x0];if(_0x83124f[_0xfb01('0x28')][_0xfb01('0xd4')]===_0xfb01('0xd5')){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfb01('0x28'),_0xfb01('0x8a'),util['inspect'](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case _0xfb01('0x8f'):if(_0x2a4a7d==_0xfb01('0xd9')||_0x2a4a7d=='RECEIVED_BY_RECIPIENT'){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')](_0xfb01('0x21'),_0xfb01('0x28'),'clickatell',util[_0xfb01('0xcf')](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case _0xfb01('0x91'):if(_0x2a4a7d=='message-delivered'){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')](_0xfb01('0x21'),_0xfb01('0x28'),_0xfb01('0x91'),util[_0xfb01('0xcf')](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;case _0xfb01('0xd6'):if(_0x2a4a7d==='DELIVRD'||_0x2a4a7d===_0xfb01('0xda')){return _0x381b70[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')](_0xfb01('0x21'),_0xfb01('0x28'),_0xfb01('0xd6'),util[_0xfb01('0xcf')](_0x3f8c60[_0xfb01('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x381b70;}})[_0xfb01('0x32')](respondWithResult(_0x1ed99d,null))[_0xfb01('0x26')](handleError(_0x1ed99d,null));};exports[_0xfb01('0xdb')]=function(_0x4c6442,_0x8c78d3,_0x1a920c){var _0x222435,_0x1360e3,_0xf44438;return db[_0xfb01('0x52')][_0xfb01('0x58')]({'where':{'id':_0x4c6442[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x8c78d3,null))[_0xfb01('0x32')](function(_0x5f12a9){if(_0x5f12a9){_0xf44438=_0x5f12a9;logger[_0xfb01('0xb2')](_0xfb01('0x21'),_0xfb01('0x28'),_0xfb01('0xce'),_0x5f12a9[_0xfb01('0x4e')],util[_0xfb01('0xcf')](_0x4c6442['query'],{'showHidden':![],'depth':null}));switch(_0x5f12a9[_0xfb01('0x4e')]){case _0xfb01('0x8c'):if(_0x4c6442[_0xfb01('0x41')][_0xfb01('0xdc')]&&_0x4c6442[_0xfb01('0x41')][_0xfb01('0xdd')]){_0x1360e3=_0x4c6442['query'][_0xfb01('0xdd')];return db[_0xfb01('0xa8')][_0xfb01('0x58')]({'where':{'messageId':_0x4c6442[_0xfb01('0x41')][_0xfb01('0xdc')]}});}break;}}})['then'](handleEntityNotFound(_0x8c78d3,null))[_0xfb01('0x32')](function(_0x42631f){if(_0x42631f){_0x222435=_0x42631f;switch(_0xf44438[_0xfb01('0x4e')]){case _0xfb01('0x8c'):if(_0x1360e3==='2'||_0x1360e3==='6'){return _0x222435[_0xfb01('0x62')]({'read':!![]});}else{logger[_0xfb01('0x23')](_0xfb01('0x21'),'status',_0xfb01('0x8c'),util['inspect'](_0x4c6442['query'],{'showHidden':![],'depth':null}));};break;}return _0x222435;}})[_0xfb01('0x32')](respondWithResult(_0x8c78d3,null))[_0xfb01('0x26')](handleError(_0x8c78d3,null));};exports['addAgents']=function(_0x305815,_0x3589ae,_0x265714){return db['SmsAccount'][_0xfb01('0x58')]({'where':{'id':_0x305815['params']['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x3589ae,null))['then'](function(_0x10818d){if(_0x10818d){return _0x10818d[_0xfb01('0xde')](_0x305815['body'][_0xfb01('0x6d')],_[_0xfb01('0x9e')](_0x305815['body'],[_0xfb01('0x6d'),'id'])||{})[_0xfb01('0xa1')](function(_0x4c3572){for(var _0xdfd328=0x0;_0xdfd328<_0x305815['body'][_0xfb01('0x6d')][_0xfb01('0x46')];_0xdfd328+=0x1){socket[_0xfb01('0xdf')]('userSmsAccount:save',{'UserId':Number(_0x305815[_0xfb01('0x59')][_0xfb01('0x6d')][_0xdfd328]),'SmsAccountId':Number(_0x305815['params']['id'])});}return _0x4c3572;});}})[_0xfb01('0x32')](respondWithResult(_0x3589ae,null))[_0xfb01('0x26')](handleError(_0x3589ae,null));};exports[_0xfb01('0xe0')]=function(_0x30c3a6,_0x20c4d2,_0x55cc89){return db['SmsAccount'][_0xfb01('0x58')]({'where':{'id':_0x30c3a6[_0xfb01('0x56')]['id']}})[_0xfb01('0x32')](handleEntityNotFound(_0x20c4d2,null))[_0xfb01('0x32')](function(_0x352b0b){if(_0x352b0b){return _0x352b0b[_0xfb01('0xe0')](_0x30c3a6[_0xfb01('0x41')][_0xfb01('0x6d')])['then'](function(){if(_[_0xfb01('0xe1')](_0x30c3a6[_0xfb01('0x41')]['ids'])){for(var _0x1875f0=0x0;_0x1875f0<_0x30c3a6['query'][_0xfb01('0x6d')][_0xfb01('0x46')];_0x1875f0+=0x1){socket[_0xfb01('0xdf')](_0xfb01('0xe2'),{'UserId':Number(_0x30c3a6[_0xfb01('0x41')][_0xfb01('0x6d')][_0x1875f0]),'SmsAccountId':Number(_0x30c3a6['params']['id'])});}}else{socket[_0xfb01('0xdf')](_0xfb01('0xe2'),{'UserId':Number(_0x30c3a6[_0xfb01('0x41')][_0xfb01('0x6d')]),'SmsAccountId':Number(_0x30c3a6[_0xfb01('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x20c4d2,null))[_0xfb01('0x26')](handleError(_0x20c4d2,null));};exports[_0xfb01('0xe3')]=function(_0x1bf8b2,_0x1b997f,_0x6da883){var _0x469996={};var _0x85bdb6={};var _0x5a3539;var _0x2e68c1;return db[_0xfb01('0x52')]['findOne']({'where':{'id':_0x1bf8b2[_0xfb01('0x56')]['id']}})['then'](handleEntityNotFound(_0x1b997f,null))[_0xfb01('0x32')](function(_0x4dc00c){if(_0x4dc00c){_0x5a3539=_0x4dc00c;_0x85bdb6[_0xfb01('0x3f')]=_['keys'](db['User'][_0xfb01('0x3d')]);_0x85bdb6['query']=_[_0xfb01('0x40')](_0x1bf8b2[_0xfb01('0x41')]);_0x85bdb6[_0xfb01('0x42')]=_[_0xfb01('0x43')](_0x85bdb6['model'],_0x85bdb6[_0xfb01('0x41')]);_0x469996[_0xfb01('0x44')]=_[_0xfb01('0x43')](_0x85bdb6[_0xfb01('0x3f')],qs[_0xfb01('0x45')](_0x1bf8b2['query'][_0xfb01('0x45')]));_0x469996[_0xfb01('0x44')]=_0x469996[_0xfb01('0x44')][_0xfb01('0x46')]?_0x469996[_0xfb01('0x44')]:_0x85bdb6[_0xfb01('0x3f')];_0x469996[_0xfb01('0x49')]=qs[_0xfb01('0x4a')](_0x1bf8b2['query'][_0xfb01('0x4a')]);_0x469996[_0xfb01('0x4b')]=qs[_0xfb01('0x42')](_[_0xfb01('0x67')](_0x1bf8b2['query'],_0x85bdb6[_0xfb01('0x42')]));if(_0x1bf8b2['query'][_0xfb01('0x4c')]){_0x469996[_0xfb01('0x4b')]=_['merge'](_0x469996[_0xfb01('0x4b')],{'$or':_[_0xfb01('0x3c')](_0x469996['attributes'],function(_0x403277){var _0x1a8b58={};_0x1a8b58[_0x403277]={'$like':'%'+_0x1bf8b2[_0xfb01('0x41')][_0xfb01('0x4c')]+'%'};return _0x1a8b58;})});}_0x469996=_[_0xfb01('0x4d')]({},_0x469996,_0x1bf8b2[_0xfb01('0x57')]);return _0x5a3539['getAgents'](_0x469996);}})[_0xfb01('0x32')](function(_0x12736a){if(_0x12736a){_0x2e68c1=_0x12736a[_0xfb01('0x46')];if(!_0x1bf8b2['query'][_0xfb01('0x47')](_0xfb01('0x48'))){_0x469996[_0xfb01('0x2d')]=qs[_0xfb01('0x2d')](_0x1bf8b2[_0xfb01('0x41')][_0xfb01('0x2d')]);_0x469996[_0xfb01('0x2b')]=qs[_0xfb01('0x2b')](_0x1bf8b2[_0xfb01('0x41')][_0xfb01('0x2b')]);}return _0x5a3539[_0xfb01('0xe3')](_0x469996);}})[_0xfb01('0x32')](function(_0x46f8c1){if(_0x46f8c1){return _0x46f8c1?{'count':_0x2e68c1,'rows':_0x46f8c1}:null;}})[_0xfb01('0x32')](respondWithResult(_0x1b997f,null))[_0xfb01('0x26')](handleError(_0x1b997f,null));};
\ No newline at end of file
+var _0xed1f=['http','request','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','code','SmsAccount,\x20%s,\x20%s','error','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','SmsAccounts','destroy','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','filter','options','SmsAccount','includeAll','include','rows','params','length','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','pick','SmsAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','notify','sms','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','mobile','from','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','From','infobip','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','mapKey','includes','CmList','Contacts','DESC','list','contact','SmsInteraction','spread','interaction','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','stack','finally','sendStatus','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','push','inspect','skebby','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','addAgents','omit','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','client'];(function(_0x56f4ad,_0x557e1c){var _0x1eb7d2=function(_0x2bdf3b){while(--_0x2bdf3b){_0x56f4ad['push'](_0x56f4ad['shift']());}};_0x1eb7d2(++_0x557e1c);}(_0xed1f,0xcc));var _0xfed1=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0xed1f[_0x40a825];return _0x273a54;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require(_0xfed1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfed1('0x3'));var moment=require(_0xfed1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfed1('0x5'));var util=require(_0xfed1('0x6'));var path=require(_0xfed1('0x7'));var sox=require(_0xfed1('0x8'));var csv=require(_0xfed1('0x9'));var ejs=require(_0xfed1('0xa'));var fs=require('fs');var fs_extra=require(_0xfed1('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfed1('0xc'));var jsforce=require(_0xfed1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0x9'));var querystring=require(_0xfed1('0xe'));var Papa=require('papaparse');var Redis=require(_0xfed1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xfed1('0x10'));var as=require(_0xfed1('0x11'));var hardwareService=require(_0xfed1('0x12'));var logger=require('../../config/logger')(_0xfed1('0x13'));var utils=require('../../config/utils');var config=require(_0xfed1('0x14'));var licenseUtil=require(_0xfed1('0x15'));var db=require('../../mysqldb')['db'];config[_0xfed1('0x16')]=_[_0xfed1('0x17')](config['redis'],{'host':_0xfed1('0x18'),'port':0x18eb});var socket=require(_0xfed1('0x19'))(new Redis(config[_0xfed1('0x16')]));require(_0xfed1('0x1a'))['register'](socket);var jayson=require(_0xfed1('0x1b'));var client=jayson[_0xfed1('0x1c')][_0xfed1('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x15dda0,_0x31b53e,_0x23f038,_0xac2b89){return new BPromise(function(_0x257450,_0x477d35){var _0xb05eaf=_0xac2b89||client;return _0xb05eaf[_0xfed1('0x1e')](_0x15dda0,_0x23f038)[_0xfed1('0x1f')](function(_0x30a650){logger[_0xfed1('0x20')]('SmsAccount,\x20%s,\x20%s',_0x31b53e,_0xfed1('0x21'));logger[_0xfed1('0x22')](_0xfed1('0x23'),_0x31b53e,_0xfed1('0x21'),JSON[_0xfed1('0x24')](_0x30a650));if(_0x30a650['error']){if(_0x30a650['error'][_0xfed1('0x25')]===0x1f4){logger['error'](_0xfed1('0x26'),_0x31b53e,_0x30a650[_0xfed1('0x27')][_0xfed1('0x28')]);return _0x477d35(_0x30a650[_0xfed1('0x27')]['message']);}logger[_0xfed1('0x27')](_0xfed1('0x26'),_0x31b53e,_0x30a650[_0xfed1('0x27')][_0xfed1('0x28')]);return _0x257450(_0x30a650['error']['message']);}else{logger[_0xfed1('0x20')](_0xfed1('0x26'),_0x31b53e,_0xfed1('0x21'));_0x257450(_0x30a650[_0xfed1('0x29')][_0xfed1('0x28')]);}})[_0xfed1('0x2a')](function(_0x5620ef){logger[_0xfed1('0x27')](_0xfed1('0x26'),_0x31b53e,_0x5620ef);_0x477d35(_0x5620ef);});});}function respondWithStatusCode(_0x1de475,_0x5ba385){_0x5ba385=_0x5ba385||0xcc;return function(_0x46f77c){if(_0x46f77c){return _0x1de475['sendStatus'](_0x5ba385);}return _0x1de475[_0xfed1('0x2b')](_0x5ba385)[_0xfed1('0x2c')]();};}function respondWithResult(_0x58e449,_0x391491){_0x391491=_0x391491||0xc8;return function(_0x9d673e){if(_0x9d673e){return _0x58e449[_0xfed1('0x2b')](_0x391491)[_0xfed1('0x2d')](_0x9d673e);}};}function respondWithFilteredResult(_0x3b995c,_0x6890a){return function(_0x43c0b8){if(_0x43c0b8){var _0x473751=typeof _0x6890a[_0xfed1('0x2e')]===_0xfed1('0x2f')&&typeof _0x6890a[_0xfed1('0x30')]==='undefined';var _0x2ad2ca=_0x43c0b8[_0xfed1('0x31')];var _0x5a87e9=_0x473751?0x0:_0x6890a[_0xfed1('0x2e')];var _0x4d344a=_0x473751?_0x43c0b8[_0xfed1('0x31')]:_0x6890a[_0xfed1('0x2e')]+_0x6890a['limit'];var _0x3355c9;if(_0x4d344a>=_0x2ad2ca){_0x4d344a=_0x2ad2ca;_0x3355c9=0xc8;}else{_0x3355c9=0xce;}_0x3b995c[_0xfed1('0x2b')](_0x3355c9);return _0x3b995c['set'](_0xfed1('0x32'),_0x5a87e9+'-'+_0x4d344a+'/'+_0x2ad2ca)['json'](_0x43c0b8);}return null;};}function patchUpdates(_0x46fdd6){return function(_0x2ec86c){try{jsonpatch[_0xfed1('0x33')](_0x2ec86c,_0x46fdd6,!![]);}catch(_0x49fdb9){return BPromise[_0xfed1('0x34')](_0x49fdb9);}return _0x2ec86c[_0xfed1('0x35')]();};}function saveUpdates(_0x1fb2dc,_0x56e5bd){return function(_0x55ce83){if(_0x55ce83){return _0x55ce83[_0xfed1('0x36')](_0x1fb2dc)[_0xfed1('0x1f')](function(_0x4890ee){return _0x4890ee;});}return null;};}function removeEntity(_0x3b8870,_0x3c789b){return function(_0x1c380c){if(_0x1c380c){return _0x1c380c['destroy']()['then'](function(){var _0x503e1c=_0x1c380c['get']({'plain':!![]});var _0x2cfb00=_0xfed1('0x37');return db['UserProfileResource'][_0xfed1('0x38')]({'where':{'type':_0x2cfb00,'resourceId':_0x503e1c['id']}})['then'](function(){return _0x1c380c;});})['then'](function(){_0x3b8870['status'](0xcc)[_0xfed1('0x2c')]();});}};}function handleEntityNotFound(_0x209a41,_0x42220b){return function(_0x167bf5){if(!_0x167bf5){_0x209a41['sendStatus'](0x194);}return _0x167bf5;};}function handleError(_0x5290bc,_0x69777c){_0x69777c=_0x69777c||0x1f4;return function(_0x217d64){logger[_0xfed1('0x27')](_0x217d64['stack']);if(_0x217d64[_0xfed1('0x39')]){delete _0x217d64[_0xfed1('0x39')];}_0x5290bc['status'](_0x69777c)['send'](_0x217d64);};}exports[_0xfed1('0x3a')]=function(_0xcb4284,_0x2910b2){var _0xcdf1f9={'include':[{'model':db[_0xfed1('0x3b')],'as':_0xfed1('0x3c')}]},_0x3d6c37={},_0x4c6d21={'count':0x0,'rows':[]};var _0x193c07=_[_0xfed1('0x3d')](db['SmsAccount'][_0xfed1('0x3e')],function(_0x341798){return{'name':_0x341798[_0xfed1('0x3f')],'type':_0x341798[_0xfed1('0x40')][_0xfed1('0x41')]};});_0x3d6c37[_0xfed1('0x42')]=_['map'](_0x193c07,'name');_0x3d6c37[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0xcb4284[_0xfed1('0x43')]);_0x3d6c37[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x3d6c37['model'],_0x3d6c37[_0xfed1('0x43')]);_0xcdf1f9[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x3d6c37[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x48')]));_0xcdf1f9[_0xfed1('0x47')]=_0xcdf1f9['attributes']['length']?_0xcdf1f9[_0xfed1('0x47')]:_0x3d6c37[_0xfed1('0x42')];if(!_0xcb4284['query']['hasOwnProperty'](_0xfed1('0x49'))){_0xcdf1f9[_0xfed1('0x30')]=qs['limit'](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x30')]);_0xcdf1f9[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0xcdf1f9[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0xcb4284[_0xfed1('0x43')][_0xfed1('0x4b')]);_0xcdf1f9['where']=qs[_0xfed1('0x45')](_['pick'](_0xcb4284[_0xfed1('0x43')],_0x3d6c37[_0xfed1('0x45')]),_0x193c07);if(_0xcb4284[_0xfed1('0x43')]['filter']){_0xcdf1f9[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0xcdf1f9[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x193c07,function(_0x5c745f){if(_0x5c745f[_0xfed1('0x40')]!=='VIRTUAL'){var _0x468d66={};_0x468d66[_0x5c745f['name']]={'$like':'%'+_0xcb4284['query'][_0xfed1('0x4e')]+'%'};return _0x468d66;}})});}_0xcdf1f9=_[_0xfed1('0x4d')]({},_0xcdf1f9,_0xcb4284[_0xfed1('0x4f')]);var _0x328405={'where':_0xcdf1f9[_0xfed1('0x4c')]};return db[_0xfed1('0x50')][_0xfed1('0x31')](_0x328405)[_0xfed1('0x1f')](function(_0x1e12fc){_0x4c6d21[_0xfed1('0x31')]=_0x1e12fc;if(_0xcb4284[_0xfed1('0x43')][_0xfed1('0x51')]){_0xcdf1f9[_0xfed1('0x52')]=[{'all':!![]}];}return db[_0xfed1('0x50')]['findAll'](_0xcdf1f9);})[_0xfed1('0x1f')](function(_0x3339bf){_0x4c6d21[_0xfed1('0x53')]=_0x3339bf;return _0x4c6d21;})[_0xfed1('0x1f')](respondWithFilteredResult(_0x2910b2,_0xcdf1f9))[_0xfed1('0x2a')](handleError(_0x2910b2,null));};exports['show']=function(_0x260a83,_0x31229b){var _0x4d155d={'raw':![],'where':{'id':_0x260a83[_0xfed1('0x54')]['id']},'include':[{'model':db[_0xfed1('0x3b')],'as':'mandatoryDispositionPause'}]},_0x283172={};_0x283172[_0xfed1('0x42')]=_[_0xfed1('0x44')](db[_0xfed1('0x50')]['rawAttributes']);_0x283172[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x260a83[_0xfed1('0x43')]);_0x283172[_0xfed1('0x45')]=_['intersection'](_0x283172[_0xfed1('0x42')],_0x283172['query']);_0x4d155d[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x283172[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x260a83[_0xfed1('0x43')]['fields']));_0x4d155d[_0xfed1('0x47')]=_0x4d155d[_0xfed1('0x47')][_0xfed1('0x55')]?_0x4d155d['attributes']:_0x283172[_0xfed1('0x42')];if(_0x260a83[_0xfed1('0x43')]['includeAll']){_0x4d155d[_0xfed1('0x52')]=[{'all':!![]}];}_0x4d155d=_[_0xfed1('0x4d')]({},_0x4d155d,_0x260a83[_0xfed1('0x4f')]);return db[_0xfed1('0x50')]['find'](_0x4d155d)[_0xfed1('0x1f')](handleEntityNotFound(_0x31229b,null))[_0xfed1('0x1f')](respondWithResult(_0x31229b,null))[_0xfed1('0x2a')](handleError(_0x31229b,null));};exports[_0xfed1('0x56')]=function(_0x666e83,_0x22733d){return db[_0xfed1('0x50')]['create'](_0x666e83[_0xfed1('0x57')],{})[_0xfed1('0x1f')](function(_0x1e0aae){var _0x29e7ce=_0x666e83[_0xfed1('0x58')][_0xfed1('0x59')]({'plain':!![]});if(!_0x29e7ce)throw new Error(_0xfed1('0x5a'));if(_0x29e7ce[_0xfed1('0x5b')]===_0xfed1('0x58')){var _0x18fd29=_0x1e0aae[_0xfed1('0x59')]({'plain':!![]});var _0x385ddf=_0xfed1('0x37');return db[_0xfed1('0x5c')][_0xfed1('0x5d')]({'where':{'name':_0x385ddf,'userProfileId':_0x29e7ce['userProfileId']},'raw':!![]})[_0xfed1('0x1f')](function(_0x54dec0){if(_0x54dec0&&_0x54dec0[_0xfed1('0x5e')]===0x0){return db[_0xfed1('0x5f')][_0xfed1('0x56')]({'name':_0x18fd29[_0xfed1('0x39')],'resourceId':_0x18fd29['id'],'type':_0x54dec0[_0xfed1('0x39')],'sectionId':_0x54dec0['id']},{})[_0xfed1('0x1f')](function(){return _0x1e0aae;});}else{return _0x1e0aae;}})['catch'](function(_0xd6ce08){logger[_0xfed1('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd6ce08);throw _0xd6ce08;});}return _0x1e0aae;})[_0xfed1('0x1f')](respondWithResult(_0x22733d,0xc9))[_0xfed1('0x2a')](handleError(_0x22733d,null));};exports['update']=function(_0x141c19,_0x18cb4f){if(_0x141c19[_0xfed1('0x57')]['id']){delete _0x141c19[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x141c19['params']['id']},'include':[{'model':db[_0xfed1('0x3b')],'as':_0xfed1('0x3c')}]})[_0xfed1('0x1f')](handleEntityNotFound(_0x18cb4f,null))[_0xfed1('0x1f')](saveUpdates(_0x141c19[_0xfed1('0x57')],null))[_0xfed1('0x1f')](respondWithResult(_0x18cb4f,null))['catch'](handleError(_0x18cb4f,null));};exports[_0xfed1('0x38')]=function(_0x5be308,_0x2d4330){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x5be308[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x2d4330,null))[_0xfed1('0x1f')](removeEntity(_0x2d4330,null))[_0xfed1('0x2a')](handleError(_0x2d4330,null));};exports[_0xfed1('0x60')]=function(_0x4bd7b7,_0xbcd7ea){return db[_0xfed1('0x50')][_0xfed1('0x60')]()['then'](respondWithResult(_0xbcd7ea,null))['catch'](handleError(_0xbcd7ea,null));};exports[_0xfed1('0x61')]=function(_0x396502,_0x186568,_0x17dbaf){if(_0x396502['body']['id']){delete _0x396502[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x396502[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x186568,null))[_0xfed1('0x1f')](function(_0x835614){if(_0x835614){_0x396502['body']['SmsAccountId']=_0x835614['id'];return db[_0xfed1('0x62')][_0xfed1('0x56')](_0x396502[_0xfed1('0x57')]);}})[_0xfed1('0x1f')](respondWithResult(_0x186568,null))[_0xfed1('0x2a')](handleError(_0x186568,null));};exports[_0xfed1('0x63')]=function(_0x5f4571,_0x4df045,_0x27302b){var _0x36f8a8={'raw':![],'where':{}};var _0x530b11={};var _0x2d84de={'count':0x0,'rows':[]};return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x5f4571['params']['id']}})['then'](handleEntityNotFound(_0x4df045,null))['then'](function(_0x21d264){if(_0x21d264){_0x530b11[_0xfed1('0x42')]=_['keys'](db['Disposition'][_0xfed1('0x3e')]);_0x530b11['query']=_[_0xfed1('0x44')](_0x5f4571[_0xfed1('0x43')]);_0x530b11[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x530b11[_0xfed1('0x42')],_0x530b11[_0xfed1('0x43')]);_0x36f8a8[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x530b11[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x5f4571['query'][_0xfed1('0x48')]));_0x36f8a8[_0xfed1('0x47')]=_0x36f8a8[_0xfed1('0x47')]['length']?_0x36f8a8[_0xfed1('0x47')]:_0x530b11[_0xfed1('0x42')];if(!_0x5f4571['query'][_0xfed1('0x65')](_0xfed1('0x49'))){_0x36f8a8['limit']=qs[_0xfed1('0x30')](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x30')]);_0x36f8a8[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0x36f8a8['order']=qs['sort'](_0x5f4571[_0xfed1('0x43')][_0xfed1('0x4b')]);_0x36f8a8[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x5f4571[_0xfed1('0x43')],_0x530b11['filters']));_0x36f8a8[_0xfed1('0x4c')][_0xfed1('0x67')]=_0x21d264['id'];if(_0x5f4571[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x36f8a8['where']=_[_0xfed1('0x4d')](_0x36f8a8[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x36f8a8['attributes'],function(_0x4fd79b){var _0x4b01da={};_0x4b01da[_0x4fd79b]={'$like':'%'+_0x5f4571[_0xfed1('0x43')]['filter']+'%'};return _0x4b01da;})});}_0x36f8a8=_['merge']({},_0x36f8a8,_0x5f4571[_0xfed1('0x4f')]);return db['Disposition'][_0xfed1('0x31')]({'where':_0x36f8a8[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x30931d){_0x2d84de['count']=_0x30931d;if(_0x5f4571[_0xfed1('0x43')][_0xfed1('0x51')]){_0x36f8a8['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x36f8a8);})['then'](function(_0x4ee925){_0x2d84de['rows']=_0x4ee925;return _0x2d84de;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0x4df045,_0x36f8a8))[_0xfed1('0x2a')](handleError(_0x4df045,null));};exports[_0xfed1('0x68')]=function(_0x577dad,_0x2bccbc,_0x2d6fb2){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x577dad['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x2bccbc,null))[_0xfed1('0x1f')](function(_0x50dd90){if(_0x50dd90){return _0x50dd90[_0xfed1('0x68')](_0x577dad[_0xfed1('0x43')][_0xfed1('0x69')]);}})[_0xfed1('0x1f')](respondWithStatusCode(_0x2bccbc,null))[_0xfed1('0x2a')](handleError(_0x2bccbc,null));};exports[_0xfed1('0x6a')]=function(_0x1206ac,_0x28536e,_0x3743e4){if(_0x1206ac[_0xfed1('0x57')]['id']){delete _0x1206ac[_0xfed1('0x57')]['id'];}return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x1206ac['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x28536e,null))[_0xfed1('0x1f')](function(_0x322df5){if(_0x322df5){_0x1206ac[_0xfed1('0x57')][_0xfed1('0x67')]=_0x322df5['id'];return db[_0xfed1('0x6b')][_0xfed1('0x56')](_0x1206ac[_0xfed1('0x57')]);}})[_0xfed1('0x1f')](respondWithResult(_0x28536e,null))[_0xfed1('0x2a')](handleError(_0x28536e,null));};exports[_0xfed1('0x6c')]=function(_0x392c7e,_0xd17478,_0x445640){var _0x5f25b0={'raw':![],'where':{}};var _0x4d77f2={};var _0x3aa35c={'count':0x0,'rows':[]};return db['SmsAccount'][_0xfed1('0x64')]({'where':{'id':_0x392c7e[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0xd17478,null))[_0xfed1('0x1f')](function(_0x9a7a95){if(_0x9a7a95){_0x4d77f2[_0xfed1('0x42')]=_['keys'](db[_0xfed1('0x6b')][_0xfed1('0x3e')]);_0x4d77f2[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x392c7e['query']);_0x4d77f2[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x4d77f2[_0xfed1('0x42')],_0x4d77f2['query']);_0x5f25b0[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x4d77f2[_0xfed1('0x42')],qs['fields'](_0x392c7e[_0xfed1('0x43')][_0xfed1('0x48')]));_0x5f25b0[_0xfed1('0x47')]=_0x5f25b0[_0xfed1('0x47')][_0xfed1('0x55')]?_0x5f25b0['attributes']:_0x4d77f2[_0xfed1('0x42')];if(!_0x392c7e[_0xfed1('0x43')][_0xfed1('0x65')](_0xfed1('0x49'))){_0x5f25b0[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x392c7e['query'][_0xfed1('0x30')]);_0x5f25b0[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x392c7e['query']['offset']);}_0x5f25b0[_0xfed1('0x4a')]=qs['sort'](_0x392c7e[_0xfed1('0x43')]['sort']);_0x5f25b0[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x392c7e[_0xfed1('0x43')],_0x4d77f2[_0xfed1('0x45')]));_0x5f25b0[_0xfed1('0x4c')]['SmsAccountId']=_0x9a7a95['id'];if(_0x392c7e[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x5f25b0[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x5f25b0['where'],{'$or':_[_0xfed1('0x3d')](_0x5f25b0['attributes'],function(_0x2a5ecd){var _0x29f1ca={};_0x29f1ca[_0x2a5ecd]={'$like':'%'+_0x392c7e[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x29f1ca;})});}_0x5f25b0=_[_0xfed1('0x4d')]({},_0x5f25b0,_0x392c7e[_0xfed1('0x4f')]);return db[_0xfed1('0x6b')][_0xfed1('0x31')]({'where':_0x5f25b0[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x4e5f50){_0x3aa35c[_0xfed1('0x31')]=_0x4e5f50;if(_0x392c7e[_0xfed1('0x43')][_0xfed1('0x51')]){_0x5f25b0[_0xfed1('0x52')]=[{'all':!![]}];}return db[_0xfed1('0x6b')][_0xfed1('0x6d')](_0x5f25b0);})[_0xfed1('0x1f')](function(_0x3ed514){_0x3aa35c['rows']=_0x3ed514;return _0x3aa35c;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0xd17478,_0x5f25b0))[_0xfed1('0x2a')](handleError(_0xd17478,null));};exports['removeAnswers']=function(_0x45039f,_0x539bfa,_0x32e726){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x45039f[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x539bfa,null))[_0xfed1('0x1f')](function(_0x1b0f0b){if(_0x1b0f0b){return _0x1b0f0b[_0xfed1('0x6e')](_0x45039f[_0xfed1('0x43')]['ids']);}})[_0xfed1('0x1f')](respondWithStatusCode(_0x539bfa,null))[_0xfed1('0x2a')](handleError(_0x539bfa,null));};exports[_0xfed1('0x6f')]=function(_0x2ece23,_0x4759d7,_0xcea642){var _0x2a5a4d={'channel':_0xfed1('0x70')};var _0x2ccb88=[];var _0x108b5d=[];var _0x20b731={};return db['SmsAccount']['find']({'where':{'id':_0x2ece23[_0xfed1('0x54')]['id']},'include':[{'model':db['SmsApplication'],'as':_0xfed1('0x71')}]})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))[_0xfed1('0x1f')](function(_0x141f48){_0x2a5a4d[_0xfed1('0x72')]=_0x141f48;_0x2a5a4d[_0xfed1('0x73')]=_[_0xfed1('0x74')](_0x141f48[_0xfed1('0x71')],[_0xfed1('0x75')],[_0xfed1('0x76')]);if(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x71')]){delete _0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x71')];}return db[_0xfed1('0x77')][_0xfed1('0x60')]();})[_0xfed1('0x1f')](function(_0x42c489){if(!_0x42c489){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))](_0xfed1('0x7a'));}_0x2ccb88=_['difference'](_[_0xfed1('0x44')](_0x42c489),[_0xfed1('0x7b'),_0xfed1('0x7c')]);_0x108b5d=_[_0xfed1('0x7d')](_[_0xfed1('0x44')](_0x42c489),[_0xfed1('0x7b'),_0xfed1('0x7c'),'CompanyId',_0xfed1('0x7e')]);_0x2a5a4d[_0xfed1('0x57')]={'mapKey':_0xfed1('0x7f')};if(_0x2a5a4d['account'][_0xfed1('0x40')]){switch(_0x2a5a4d[_0xfed1('0x72')]['type']){case'twilio':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23['body']['From'];_0x2a5a4d['body']['body']=_0x2ece23['body'][_0xfed1('0x81')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x83')];break;case'skebby':_0x2a5a4d['body'][_0xfed1('0x80')]='+'+_0x2ece23[_0xfed1('0x57')][_0xfed1('0x84')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23['body'][_0xfed1('0x85')];break;case _0xfed1('0x86'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x28')];break;case _0xfed1('0x87'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')]['from'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x57')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x88')];break;case _0xfed1('0x89'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8a')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')]['Text'];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')]['MessageUUID'];break;case _0xfed1('0x8b'):_0x2a5a4d['body'][_0xfed1('0x80')]='+'+_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0]['from'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0][_0xfed1('0x85')];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8c')][0x0]['messageId'];break;case _0xfed1('0x8d'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')]['originatingAddress'];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x8e')][_0xfed1('0x28')];break;case _0xfed1('0x8f'):_0x2a5a4d['body']['from']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x90')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x85')];_0x2a5a4d['body']['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x91')];break;case _0xfed1('0x92'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')]=_0x2ece23['body'][0x0][_0xfed1('0x28')]['id'];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23['body'][0x0][_0xfed1('0x28')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')]=_0x2ece23[_0xfed1('0x57')][0x0][_0xfed1('0x28')][_0xfed1('0x85')];break;case _0xfed1('0x93'):_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')]=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x80')];_0x2a5a4d[_0xfed1('0x57')]['body']=_0x2ece23['body'][_0xfed1('0x28')];_0x2a5a4d[_0xfed1('0x57')]['messageId']=_0x2ece23[_0xfed1('0x57')][_0xfed1('0x94')];break;}}if(_0x2a5a4d[_0xfed1('0x57')]['id']){delete _0x2a5a4d[_0xfed1('0x57')]['id'];}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')])){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('from\x20is\x20mandatory');}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x57')])||_0x2a5a4d['body'][_0xfed1('0x57')]===''){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfed1('0x95')](_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')])){throw new db[(_0xfed1('0x78'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x108b5d);}if(!_[_0xfed1('0x97')](_0x108b5d,_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')])){throw new db[(_0xfed1('0x78'))][(_0xfed1('0x79'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x108b5d);}_0x20b731[_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')]]=_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')];return db[_0xfed1('0x98')][_0xfed1('0x5d')]({'where':{'id':_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x7e')]},'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x99'),'where':_0x20b731,'limit':0x1,'order':[['updatedAt',_0xfed1('0x9a')]]}]});})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))['then'](function(_0x436b7c){if(_0x436b7c){_0x2a5a4d[_0xfed1('0x9b')]=_['omit'](_0x436b7c,[_0xfed1('0x99')]);if(_0x436b7c['Contacts'][_0xfed1('0x55')]){return _0x436b7c[_0xfed1('0x99')][0x0];}var _0x31b752=_[_0xfed1('0x17')](_0x2a5a4d[_0xfed1('0x57')],{'firstName':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x80')],'ListId':_0x436b7c['id']});_0x31b752[_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x96')]]=_0x2a5a4d[_0xfed1('0x57')]['from'];return db[_0xfed1('0x77')][_0xfed1('0x56')](_0x31b752,{'fields':_0x2ccb88,'raw':!![]});}})[_0xfed1('0x1f')](handleEntityNotFound(_0x4759d7,null))['then'](function(_0x46f079){if(_0x46f079){_0x2a5a4d[_0xfed1('0x9c')]=_0x46f079;var _0x1dbf65={'ContactId':_0x46f079['id'],'phone':_0x2a5a4d[_0xfed1('0x57')]['from'],'SmsAccountId':_0x2ece23['params']['id']};var _0x3fcdec={'ContactId':_0x46f079['id'],'SmsAccountId':_0x2ece23[_0xfed1('0x54')]['id'],'closed':![]};return db[_0xfed1('0x9d')]['find']({'where':_0x3fcdec})[_0xfed1('0x1f')](function(_0x4276bf){if(_0x4276bf){return[_0x4276bf,![]];}return db[_0xfed1('0x9d')]['create'](_0x1dbf65)['then'](function(_0x23b47c){return[_0x23b47c,!![]];});});}})[_0xfed1('0x9e')](function(_0x2186d9,_0x59d5dc){_0x2a5a4d[_0xfed1('0x9f')]=_0x2186d9[_0xfed1('0x59')]({'plain':!![]});_0x2a5a4d[_0xfed1('0x9f')]['created']=![];if(_0x59d5dc){if(_0x2a5a4d[_0xfed1('0x72')]['autoclose']){_0x2a5a4d[_0xfed1('0x73')]['push']({'id':0x0,'priority':_0x2a5a4d[_0xfed1('0x73')][_0xfed1('0x55')]+0x1,'app':_0xfed1('0xa0'),'appdata':_0xfed1('0xa1'),'interval':'*,*,*,*'});}_0x2a5a4d['interaction']['created']=!![];}return db[_0xfed1('0xa2')][_0xfed1('0x56')]({'phone':_0x2a5a4d[_0xfed1('0x57')]['from'],'messageId':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0x82')],'body':_0x2a5a4d[_0xfed1('0x57')]['body'],'SmsAccountId':_0x2ece23[_0xfed1('0x54')]['id'],'SmsInteractionId':_0x2186d9['id'],'direction':'in','ContactId':_0x2186d9[_0xfed1('0xa3')],'AttachmentId':_0x2a5a4d[_0xfed1('0x57')][_0xfed1('0xa4')]});})[_0xfed1('0x1f')](function(_0x491a6c){_0x2a5a4d[_0xfed1('0x28')]=_0x491a6c;if(_0x2a5a4d[_0xfed1('0x9f')][_0xfed1('0xa5')]){return db[_0xfed1('0xa6')][_0xfed1('0x5d')]({'attributes':['id',_0xfed1('0x39')],'where':{'id':_0x2a5a4d['interaction'][_0xfed1('0xa5')]}})['then'](function(_0x2c394a){if(_0x2c394a){_0x2a5a4d[_0xfed1('0x73')]['unshift']({'id':0x0,'priority':0x0,'app':_0xfed1('0xa7'),'appdata':_0x2c394a['name']+','+(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0xa8')]||0xa),'interval':_0xfed1('0xa9')});}return respondWithRpcPromise(_0xfed1('0xaa'),_0xfed1('0xab'),_0x2a5a4d);});}return respondWithRpcPromise(_0xfed1('0xaa'),_0xfed1('0xab'),_0x2a5a4d);})['then'](function(_0x5998e2){if(_0x5998e2){var _0x5b753d=0xc8;var _0x563c3e=_0xfed1('0xac');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x563c3e,_0x5b753d,_0xfed1('0xad'));logger[_0xfed1('0x22')](_0xfed1('0xae'),_0x563c3e,_0x5b753d,'entity\x20found',JSON[_0xfed1('0x24')](_0x5998e2));if(_0x2a5a4d[_0xfed1('0x72')][_0xfed1('0x40')]==='twilio'){return _0x4759d7[_0xfed1('0x2b')](_0x5b753d)[_0xfed1('0xaf')](_0xfed1('0xb0'),_0xfed1('0xb1'))[_0xfed1('0xb2')](_0xfed1('0xb3'));}else{return _0x4759d7[_0xfed1('0x2b')](_0x5b753d)[_0xfed1('0x2d')](_0x5998e2);}}})['catch'](handleError(_0x4759d7,null));};exports[_0xfed1('0xb4')]=function(_0x24ef21,_0x3942d4){var _0x14e046=_0x24ef21[_0xfed1('0x54')]['id'];var _0x1fd932=_0x24ef21[_0xfed1('0x57')];var _0x6886b4=0xc8;var _0x58b4a3=null;return db[_0xfed1('0xb5')][_0xfed1('0xb6')]({'isolationLevel':db[_0xfed1('0xb5')][_0xfed1('0xb7')]['ISOLATION_LEVELS'][_0xfed1('0xb8')]},function(_0x3e060c){return db[_0xfed1('0x50')]['findOne']({'where':{'id':_0x14e046},'transaction':_0x3e060c})[_0xfed1('0x1f')](function(_0x704716){if(_0x704716){return db[_0xfed1('0xb9')][_0xfed1('0x38')]({'where':{'SmsAccountId':_0x14e046},'transaction':_0x3e060c})['then'](function(){var _0x182ad=_[_0xfed1('0x3d')](_0x1fd932,function(_0x3570c9){_0x3570c9['SmsAccountId']=_0x14e046;return _0x3570c9;});return db[_0xfed1('0xb9')][_0xfed1('0xba')](_0x182ad,{'transaction':_0x3e060c});});}else{_0x6886b4=0x194;_0x58b4a3=[];}});})[_0xfed1('0x1f')](function(){if(_0x6886b4!==0x194){return db[_0xfed1('0xb9')][_0xfed1('0xbb')]({'where':{'SmsAccountId':_0x14e046},'order':_0xfed1('0x75')})[_0xfed1('0x1f')](function(_0x28e635){_0x58b4a3=_0x28e635;});}})[_0xfed1('0x2a')](function(_0x364011){_0x6886b4=0x1f4;logger['error'](_0x364011[_0xfed1('0xbc')]);if(_0x364011['name']){delete _0x364011[_0xfed1('0x39')];}_0x58b4a3=_0x364011;})[_0xfed1('0xbd')](function(){if(_0x58b4a3===null){_0x3942d4[_0xfed1('0xbe')](_0x6886b4);}else{if(_0x6886b4===0x1f4){_0x3942d4[_0xfed1('0x2b')](_0x6886b4)['send'](_0x58b4a3);}else{_0x3942d4[_0xfed1('0x2b')](_0x6886b4)['json'](_0x58b4a3);}}});};exports[_0xfed1('0xbf')]=function(_0x1193f5,_0x16dd8e,_0x56a611){var _0x415cc6={};var _0x4cf79e={};var _0x1f3574;var _0x512fe6;return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x1193f5[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x16dd8e,null))[_0xfed1('0x1f')](function(_0x491e36){if(_0x491e36){_0x1f3574=_0x491e36;_0x4cf79e['model']=_['keys'](db[_0xfed1('0xb9')][_0xfed1('0x3e')]);_0x4cf79e['query']=_[_0xfed1('0x44')](_0x1193f5[_0xfed1('0x43')]);_0x4cf79e['filters']=_[_0xfed1('0x46')](_0x4cf79e[_0xfed1('0x42')],_0x4cf79e[_0xfed1('0x43')]);_0x415cc6['attributes']=_[_0xfed1('0x46')](_0x4cf79e['model'],qs[_0xfed1('0x48')](_0x1193f5[_0xfed1('0x43')]['fields']));_0x415cc6[_0xfed1('0x47')]=_0x415cc6[_0xfed1('0x47')][_0xfed1('0x55')]?_0x415cc6[_0xfed1('0x47')]:_0x4cf79e['model'];_0x415cc6[_0xfed1('0x4a')]=qs['sort'](_0x1193f5[_0xfed1('0x43')][_0xfed1('0x4b')]);_0x415cc6[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x1193f5['query'],_0x4cf79e[_0xfed1('0x45')]));if(_0x1193f5[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x415cc6[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x415cc6['where'],{'$or':_['map'](_0x415cc6[_0xfed1('0x47')],function(_0x1c2781){var _0x2a2c52={};_0x2a2c52[_0x1c2781]={'$like':'%'+_0x1193f5['query'][_0xfed1('0x4e')]+'%'};return _0x2a2c52;})});}_0x415cc6=_[_0xfed1('0x4d')]({},_0x415cc6,_0x1193f5[_0xfed1('0x4f')]);return _0x1f3574[_0xfed1('0xbf')](_0x415cc6);}})[_0xfed1('0x1f')](function(_0x1c36cd){if(_0x1c36cd){_0x512fe6=_0x1c36cd[_0xfed1('0x55')];if(!_0x1193f5[_0xfed1('0x43')]['hasOwnProperty'](_0xfed1('0x49'))){_0x415cc6[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x1193f5[_0xfed1('0x43')][_0xfed1('0x30')]);_0x415cc6[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x1193f5[_0xfed1('0x43')]['offset']);}return _0x1f3574[_0xfed1('0xbf')](_0x415cc6);}})[_0xfed1('0x1f')](function(_0x5ee501){if(_0x5ee501){return _0x5ee501?{'count':_0x512fe6,'rows':_0x5ee501}:null;}})[_0xfed1('0x1f')](respondWithResult(_0x16dd8e,null))['catch'](handleError(_0x16dd8e,null));};exports[_0xfed1('0xc0')]=function(_0x4a2d24,_0x1d9779,_0x1df274){var _0x4da59f={'raw':![],'where':{}};var _0x2bd039={};var _0x42707b={'count':0x0,'rows':[]};return db[_0xfed1('0x50')][_0xfed1('0x64')]({'where':{'id':_0x4a2d24['params']['id']}})['then'](handleEntityNotFound(_0x1d9779,null))[_0xfed1('0x1f')](function(_0x15a8e4){if(_0x15a8e4){_0x2bd039['model']=_['keys'](db[_0xfed1('0x9d')][_0xfed1('0x3e')]);_0x2bd039[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x4a2d24[_0xfed1('0x43')]);_0x2bd039[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x2bd039['model'],_0x2bd039['query']);_0x4da59f[_0xfed1('0x47')]=_[_0xfed1('0x46')](_0x2bd039[_0xfed1('0x42')],qs[_0xfed1('0x48')](_0x4a2d24[_0xfed1('0x43')]['fields']));_0x4da59f[_0xfed1('0x47')]=_0x4da59f[_0xfed1('0x47')][_0xfed1('0x55')]?_0x4da59f[_0xfed1('0x47')]:_0x2bd039[_0xfed1('0x42')];if(!_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x65')]('nolimit')){_0x4da59f[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x30')]);_0x4da59f['offset']=qs[_0xfed1('0x2e')](_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x2e')]);}_0x4da59f[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0x4a2d24['query'][_0xfed1('0x4b')]);_0x4da59f[_0xfed1('0x4c')]=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x4a2d24[_0xfed1('0x43')],_0x2bd039['filters']));_0x4da59f['where'][_0xfed1('0x67')]=_0x15a8e4['id'];if(_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x4e')]){_0x4da59f[_0xfed1('0x4c')]=_['merge'](_0x4da59f[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x4da59f[_0xfed1('0x47')],function(_0x489ce1){var _0x4ffd69={};_0x4ffd69[_0x489ce1]={'$like':'%'+_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x4ffd69;})});}_0x4da59f=_[_0xfed1('0x4d')]({},_0x4da59f,_0x4a2d24[_0xfed1('0x4f')]);return db['SmsInteraction'][_0xfed1('0x31')]({'where':_0x4da59f[_0xfed1('0x4c')]})[_0xfed1('0x1f')](function(_0x362fb7){_0x42707b['count']=_0x362fb7;if(_0x4a2d24[_0xfed1('0x43')][_0xfed1('0x51')]){_0x4da59f[_0xfed1('0x52')]=[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0xc1'),'required':![]},{'model':db[_0xfed1('0xa6')],'as':_0xfed1('0xc2'),'attributes':['name',_0xfed1('0xc3'),_0xfed1('0xc4')],'required':![]},{'model':db[_0xfed1('0xc5')],'as':_0xfed1('0xc6'),'attributes':['id',_0xfed1('0x39'),'color'],'where':_0x4a2d24[_0xfed1('0x43')][_0xfed1('0xc7')]?{'id':_0x4a2d24[_0xfed1('0x43')][_0xfed1('0xc7')]}:undefined,'required':_0x4a2d24[_0xfed1('0x43')]['tag']?!![]:![]}];}return db[_0xfed1('0x9d')][_0xfed1('0x6d')](_0x4da59f);})[_0xfed1('0x1f')](function(_0x5387b2){_0x42707b[_0xfed1('0x53')]=_0x5387b2;return _0x42707b;});}})[_0xfed1('0x1f')](respondWithFilteredResult(_0x1d9779,_0x4da59f))['catch'](handleError(_0x1d9779,null));};exports[_0xfed1('0xb2')]=function(_0x160dd3,_0xdb2e11,_0x2f5b10){var _0x7a8499,_0x4b1676,_0x4cee47;if(_['isNil'](_0x160dd3[_0xfed1('0x57')]['body'])||_0x160dd3[_0xfed1('0x57')][_0xfed1('0x57')]===''){throw new db[(_0xfed1('0x78'))]['ValidationError'](_0xfed1('0xc8'));}if(_[_0xfed1('0x95')](_0x160dd3[_0xfed1('0x57')]['to'])){throw new db[(_0xfed1('0x78'))]['ValidationError'](_0xfed1('0xc9'));}_0x7a8499=_0x160dd3[_0xfed1('0x57')]['to'];return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x160dd3[_0xfed1('0x54')]['id']},'include':[{'model':db[_0xfed1('0x98')],'as':_0xfed1('0xca'),'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x99'),'where':{'mobile':_0x7a8499},'limit':0x1,'order':[[_0xfed1('0x7c'),_0xfed1('0x9a')]]}]}]})[_0xfed1('0x1f')](handleEntityNotFound(_0xdb2e11,null))[_0xfed1('0x1f')](function(_0x31ed2b){if(_0x31ed2b&&_0x31ed2b[_0xfed1('0xca')]){_0x4b1676=_0x31ed2b['get']({'plain':!![]});if(_0x4b1676[_0xfed1('0xca')]&&_0x4b1676['List']['Contacts'][_0xfed1('0x55')]){return _0x4b1676[_0xfed1('0xca')][_0xfed1('0x99')][0x0];}return db['CmContact']['create'](_[_0xfed1('0x17')](_0x160dd3[_0xfed1('0x57')],{'firstName':_0x7a8499,'mobile':_0x7a8499,'phone':_0x7a8499,'ListId':_0x4b1676[_0xfed1('0x7e')]}));}})[_0xfed1('0x1f')](handleEntityNotFound(_0xdb2e11,null))[_0xfed1('0x1f')](function(_0x3fc069){if(_0x3fc069){_0x4cee47=_0x3fc069;return db[_0xfed1('0x9d')][_0xfed1('0x5d')]({'where':{'ContactId':_0x4cee47['id'],'closed':![],'SmsAccountId':_0x4b1676['id']}})[_0xfed1('0x1f')](function(_0xa05cf7){if(_0xa05cf7){return[_0xa05cf7,![]];}return db[_0xfed1('0x9d')][_0xfed1('0x56')]({'UserId':_0x160dd3['user']['id'],'ContactId':_0x4cee47['id'],'SmsAccountId':_0x4b1676['id'],'phone':_0x7a8499,'firstMsgDirection':_0xfed1('0xcb'),'Messages':[_['merge'](_0x160dd3[_0xfed1('0x57')],{'read':![],'body':_0x160dd3['body'][_0xfed1('0x57')],'phone':_0x7a8499,'SmsAccountId':_0x4b1676['id'],'UserId':_0x160dd3[_0xfed1('0x58')]['id'],'ContactId':_0x4cee47['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})[_0xfed1('0x1f')](function(_0x145839){return[_0x145839,!![]];});});}})[_0xfed1('0x9e')](function(_0x2c1a18,_0x4dccf1){if(_0x4dccf1){return _0x2c1a18;}return db[_0xfed1('0xa2')][_0xfed1('0x56')](_[_0xfed1('0x4d')](_0x160dd3['body'],{'read':![],'body':_0x160dd3['body']['body'],'phone':_0x7a8499,'SmsAccountId':_0x4b1676['id'],'SmsInteractionId':_0x2c1a18['id'],'UserId':_0x160dd3[_0xfed1('0x58')]['id'],'ContactId':_0x4cee47['id']}))[_0xfed1('0x1f')](function(_0x40dff3){_0x2c1a18['dataValues'][_0xfed1('0xcc')]=[];_0x2c1a18[_0xfed1('0xcd')][_0xfed1('0xcc')][_0xfed1('0xce')](_0x40dff3['dataValues']);return _0x2c1a18;});})[_0xfed1('0x1f')](respondWithResult(_0xdb2e11,null))['catch'](handleError(_0xdb2e11,null));};exports[_0xfed1('0x2b')]=function(_0x315f37,_0x5ab079,_0x58cd8a){if(_0x315f37[_0xfed1('0x57')]['id']){delete _0x315f37[_0xfed1('0x57')]['id'];}var _0x54352f,_0x25df87,_0x5ef28e;return db[_0xfed1('0x50')]['find']({'where':{'id':_0x315f37['params']['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x5ab079,null))[_0xfed1('0x1f')](function(_0x909e04){if(_0x909e04){_0x5ef28e=_0x909e04;logger['debug'](_0xfed1('0x23'),'status','received\x20delivery\x20report\x20from',_0x909e04[_0xfed1('0x40')],util[_0xfed1('0xcf')](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));switch(_0x909e04[_0xfed1('0x40')]){case _0xfed1('0xd0'):if(_0x315f37['body']['skebby_dispatch_id']&&_0x315f37['body'][_0xfed1('0x2b')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37['body'][_0xfed1('0xd1')]}});}break;case _0xfed1('0x86'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0xd2')]&&_0x315f37[_0xfed1('0x57')]['statusInt']){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0xd3')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0xd2')]}});}break;case _0xfed1('0x87'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0x88')]&&_0x315f37['body'][_0xfed1('0xd4')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0xd4')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37['body'][_0xfed1('0x88')]}});}break;case _0xfed1('0x8b'):var _0x374b7c=_0x315f37[_0xfed1('0x57')][_0xfed1('0x8c')][0x0];if(_0x374b7c[_0xfed1('0x82')]&&_0x374b7c['status'][_0xfed1('0xd5')]===_0xfed1('0xd6')){_0x25df87=_0x374b7c[_0xfed1('0x2b')][_0xfed1('0xd5')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x374b7c[_0xfed1('0x82')]}});}break;case _0xfed1('0x8f'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0x82')]&&_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')]){_0x25df87=_0x315f37[_0xfed1('0x57')][_0xfed1('0x2b')];return db['SmsMessage'][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0x82')]}});}break;case'bandwidth':if(_0x315f37[_0xfed1('0x57')][0x0][_0xfed1('0x28')]['id']){_0x25df87=_0x315f37['body'][0x0]['type'];return db['SmsMessage'][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][0x0]['message']['id']}});}break;case _0xfed1('0x93'):if(_0x315f37[_0xfed1('0x57')][_0xfed1('0xd7')]&&_0x315f37['body'][_0xfed1('0x2b')]){_0x25df87=_0x315f37['body'][_0xfed1('0x2b')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x315f37[_0xfed1('0x57')][_0xfed1('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x5ab079,null))[_0xfed1('0x1f')](function(_0x536578){if(_0x536578){_0x54352f=_0x536578;switch(_0x5ef28e[_0xfed1('0x40')]){case _0xfed1('0xd0'):if(_0x25df87===_0xfed1('0xd6')){return _0x54352f['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfed1('0x2b'),_0xfed1('0xd0'),util[_0xfed1('0xcf')](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x25df87==='1'){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0xd0'),util['inspect'](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x87'):if(!_0x315f37[_0xfed1('0x57')][_0xfed1('0xd8')]&&_0x25df87>=0xc8&&_0x25df87<=0xce){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfed1('0x2b'),_0xfed1('0x87'),util['inspect'](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x8b'):var _0x441014=_0x315f37[_0xfed1('0x57')]['results'][0x0];if(_0x441014[_0xfed1('0x2b')][_0xfed1('0xd5')]==='DELIVERED'){return _0x54352f['update']({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8b'),util[_0xfed1('0xcf')](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x25df87==_0xfed1('0xd9')||_0x25df87==_0xfed1('0xda')){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8f'),util['inspect'](_0x315f37[_0xfed1('0x57')],{'showHidden':![],'depth':null}));}break;case _0xfed1('0x92'):if(_0x25df87=='message-delivered'){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),'bandwidth',util[_0xfed1('0xcf')](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x25df87===_0xfed1('0xdb')||_0x25df87===_0xfed1('0xdc')){return _0x54352f[_0xfed1('0x36')]({'read':!![]});}else{logger[_0xfed1('0x27')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x93'),util['inspect'](_0x315f37['body'],{'showHidden':![],'depth':null}));}break;}return _0x54352f;}})[_0xfed1('0x1f')](respondWithResult(_0x5ab079,null))['catch'](handleError(_0x5ab079,null));};exports[_0xfed1('0xdd')]=function(_0x2ab30a,_0xf2a76c,_0x4fcc5f){var _0x270510,_0x230e31,_0x5dd05c;return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x2ab30a[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0xf2a76c,null))['then'](function(_0x48c21f){if(_0x48c21f){_0x5dd05c=_0x48c21f;logger[_0xfed1('0x22')](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0xde'),_0x48c21f[_0xfed1('0x40')],util[_0xfed1('0xcf')](_0x2ab30a['query'],{'showHidden':![],'depth':null}));switch(_0x48c21f[_0xfed1('0x40')]){case'csc':if(_0x2ab30a[_0xfed1('0x43')]['message-id']&&_0x2ab30a['query']['state']){_0x230e31=_0x2ab30a['query'][_0xfed1('0xdf')];return db[_0xfed1('0xa2')][_0xfed1('0x5d')]({'where':{'messageId':_0x2ab30a[_0xfed1('0x43')][_0xfed1('0xe0')]}});}break;}}})['then'](handleEntityNotFound(_0xf2a76c,null))[_0xfed1('0x1f')](function(_0x45a088){if(_0x45a088){_0x270510=_0x45a088;switch(_0x5dd05c['type']){case _0xfed1('0x8d'):if(_0x230e31==='2'||_0x230e31==='6'){return _0x270510[_0xfed1('0x36')]({'read':!![]});}else{logger['error'](_0xfed1('0x23'),_0xfed1('0x2b'),_0xfed1('0x8d'),util[_0xfed1('0xcf')](_0x2ab30a[_0xfed1('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x270510;}})['then'](respondWithResult(_0xf2a76c,null))[_0xfed1('0x2a')](handleError(_0xf2a76c,null));};exports[_0xfed1('0xe1')]=function(_0x44d73d,_0x700f5d,_0x228ca6){return db[_0xfed1('0x50')]['find']({'where':{'id':_0x44d73d[_0xfed1('0x54')]['id']}})['then'](handleEntityNotFound(_0x700f5d,null))['then'](function(_0x318053){if(_0x318053){return _0x318053[_0xfed1('0xe1')](_0x44d73d['body']['ids'],_[_0xfed1('0xe2')](_0x44d73d['body'],[_0xfed1('0x69'),'id'])||{})[_0xfed1('0x9e')](function(_0x463eaa){for(var _0x3fdde4=0x0;_0x3fdde4<_0x44d73d[_0xfed1('0x57')][_0xfed1('0x69')][_0xfed1('0x55')];_0x3fdde4+=0x1){socket[_0xfed1('0xe3')](_0xfed1('0xe4'),{'UserId':Number(_0x44d73d[_0xfed1('0x57')][_0xfed1('0x69')][_0x3fdde4]),'SmsAccountId':Number(_0x44d73d[_0xfed1('0x54')]['id'])});}return _0x463eaa;});}})[_0xfed1('0x1f')](respondWithResult(_0x700f5d,null))[_0xfed1('0x2a')](handleError(_0x700f5d,null));};exports['removeAgents']=function(_0x4cbc96,_0x399f35,_0x5bd480){return db[_0xfed1('0x50')][_0xfed1('0x5d')]({'where':{'id':_0x4cbc96[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x399f35,null))[_0xfed1('0x1f')](function(_0x3a8ffa){if(_0x3a8ffa){return _0x3a8ffa[_0xfed1('0xe5')](_0x4cbc96['query'][_0xfed1('0x69')])['then'](function(){if(_[_0xfed1('0xe6')](_0x4cbc96[_0xfed1('0x43')][_0xfed1('0x69')])){for(var _0x285c7c=0x0;_0x285c7c<_0x4cbc96[_0xfed1('0x43')]['ids'][_0xfed1('0x55')];_0x285c7c+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x4cbc96[_0xfed1('0x43')]['ids'][_0x285c7c]),'SmsAccountId':Number(_0x4cbc96['params']['id'])});}}else{socket['emit'](_0xfed1('0xe7'),{'UserId':Number(_0x4cbc96['query'][_0xfed1('0x69')]),'SmsAccountId':Number(_0x4cbc96[_0xfed1('0x54')]['id'])});}});}})[_0xfed1('0x1f')](respondWithStatusCode(_0x399f35,null))[_0xfed1('0x2a')](handleError(_0x399f35,null));};exports[_0xfed1('0xe8')]=function(_0x122c51,_0x18ad15,_0x3d9ef4){var _0x897c8c={};var _0x2f80fa={};var _0x2bd964;var _0x5216a2;return db[_0xfed1('0x50')]['findOne']({'where':{'id':_0x122c51[_0xfed1('0x54')]['id']}})[_0xfed1('0x1f')](handleEntityNotFound(_0x18ad15,null))[_0xfed1('0x1f')](function(_0x2e17e8){if(_0x2e17e8){_0x2bd964=_0x2e17e8;_0x2f80fa[_0xfed1('0x42')]=_[_0xfed1('0x44')](db[_0xfed1('0xa6')][_0xfed1('0x3e')]);_0x2f80fa[_0xfed1('0x43')]=_[_0xfed1('0x44')](_0x122c51[_0xfed1('0x43')]);_0x2f80fa[_0xfed1('0x45')]=_[_0xfed1('0x46')](_0x2f80fa[_0xfed1('0x42')],_0x2f80fa[_0xfed1('0x43')]);_0x897c8c['attributes']=_[_0xfed1('0x46')](_0x2f80fa['model'],qs[_0xfed1('0x48')](_0x122c51[_0xfed1('0x43')]['fields']));_0x897c8c[_0xfed1('0x47')]=_0x897c8c[_0xfed1('0x47')][_0xfed1('0x55')]?_0x897c8c[_0xfed1('0x47')]:_0x2f80fa['model'];_0x897c8c[_0xfed1('0x4a')]=qs[_0xfed1('0x4b')](_0x122c51['query'][_0xfed1('0x4b')]);_0x897c8c['where']=qs[_0xfed1('0x45')](_[_0xfed1('0x66')](_0x122c51[_0xfed1('0x43')],_0x2f80fa[_0xfed1('0x45')]));if(_0x122c51[_0xfed1('0x43')]['filter']){_0x897c8c[_0xfed1('0x4c')]=_[_0xfed1('0x4d')](_0x897c8c[_0xfed1('0x4c')],{'$or':_[_0xfed1('0x3d')](_0x897c8c['attributes'],function(_0x251791){var _0x22205e={};_0x22205e[_0x251791]={'$like':'%'+_0x122c51[_0xfed1('0x43')][_0xfed1('0x4e')]+'%'};return _0x22205e;})});}_0x897c8c=_[_0xfed1('0x4d')]({},_0x897c8c,_0x122c51[_0xfed1('0x4f')]);return _0x2bd964[_0xfed1('0xe8')](_0x897c8c);}})[_0xfed1('0x1f')](function(_0x38d690){if(_0x38d690){_0x5216a2=_0x38d690[_0xfed1('0x55')];if(!_0x122c51[_0xfed1('0x43')][_0xfed1('0x65')]('nolimit')){_0x897c8c[_0xfed1('0x30')]=qs[_0xfed1('0x30')](_0x122c51['query'][_0xfed1('0x30')]);_0x897c8c[_0xfed1('0x2e')]=qs[_0xfed1('0x2e')](_0x122c51[_0xfed1('0x43')][_0xfed1('0x2e')]);}return _0x2bd964[_0xfed1('0xe8')](_0x897c8c);}})[_0xfed1('0x1f')](function(_0x4caca1){if(_0x4caca1){return _0x4caca1?{'count':_0x5216a2,'rows':_0x4caca1}:null;}})[_0xfed1('0x1f')](respondWithResult(_0x18ad15,null))[_0xfed1('0x2a')](handleError(_0x18ad15,null));};
\ No newline at end of file
index 355a2bf..eb1ef71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x457a=['SmsAccount','setMaxListeners','save','emit','hasOwnProperty','hook','../../mysqldb'];(function(_0x382be5,_0x4e3599){var _0x3d2df7=function(_0x20f28e){while(--_0x20f28e){_0x382be5['push'](_0x382be5['shift']());}};_0x3d2df7(++_0x4e3599);}(_0x457a,0x76));var _0xa457=function(_0xd2e6f2,_0x576438){_0xd2e6f2=_0xd2e6f2-0x0;var _0x6a209=_0x457a[_0xd2e6f2];return _0x6a209;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xa457('0x0'))['db'][_0xa457('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xa457('0x2')](0x0);var events={'afterCreate':_0xa457('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5c93ce){return function(_0x23c9c0,_0x29d3dc,_0x2fb60a){SmsAccountEvents[_0xa457('0x4')](_0x5c93ce+':'+_0x23c9c0['id'],_0x23c9c0);SmsAccountEvents['emit'](_0x5c93ce,_0x23c9c0);_0x2fb60a(null);};}for(var e in events){if(events[_0xa457('0x5')](e)){var event=events[e];SmsAccount[_0xa457('0x6')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0xda31=['SmsAccount','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3885b7,_0x3371a5){var _0x123132=function(_0x2065e4){while(--_0x2065e4){_0x3885b7['push'](_0x3885b7['shift']());}};_0x123132(++_0x3371a5);}(_0xda31,0x6f));var _0x1da3=function(_0x3774f5,_0x46ea55){_0x3774f5=_0x3774f5-0x0;var _0x144072=_0xda31[_0x3774f5];return _0x144072;};'use strict';var EventEmitter=require(_0x1da3('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x1da3('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1da3('0x2'),'afterUpdate':_0x1da3('0x3'),'afterDestroy':_0x1da3('0x4')};function emitEvent(_0x37e932){return function(_0x40d134,_0x3a1182,_0x596994){SmsAccountEvents[_0x1da3('0x5')](_0x37e932+':'+_0x40d134['id'],_0x40d134);SmsAccountEvents['emit'](_0x37e932,_0x40d134);_0x596994(null);};}for(var e in events){if(events[_0x1da3('0x6')](e)){var event=events[e];SmsAccount[_0x1da3('0x7')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index b5b566b..d8acbb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb548=['util','../../config/logger','api','moment','request-promise','path','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts'];(function(_0xed4e3c,_0x39e976){var _0x4297cc=function(_0x5a0cb8){while(--_0x5a0cb8){_0xed4e3c['push'](_0xed4e3c['shift']());}};_0x4297cc(++_0x39e976);}(_0xb548,0x155));var _0x8b54=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0xb548[_0xab9f3d];return _0x5283bf;};'use strict';var _=require('lodash');var util=require(_0x8b54('0x0'));var logger=require(_0x8b54('0x1'))(_0x8b54('0x2'));var moment=require(_0x8b54('0x3'));var BPromise=require('bluebird');var rp=require(_0x8b54('0x4'));var fs=require('fs');var path=require(_0x8b54('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8b54('0x6'));module[_0x8b54('0x7')]=function(_0x56e9c7,_0x2c1ada){return _0x56e9c7[_0x8b54('0x8')](_0x8b54('0x9'),attributes,{'tableName':_0x8b54('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25d2=['exports','define','SmsAccount','sms_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes'];(function(_0x4e521f,_0x6f8090){var _0x38d101=function(_0x355485){while(--_0x355485){_0x4e521f['push'](_0x4e521f['shift']());}};_0x38d101(++_0x6f8090);}(_0x25d2,0x16c));var _0x225d=function(_0x5ad08a,_0x2f5f0b){_0x5ad08a=_0x5ad08a-0x0;var _0xb433a4=_0x25d2[_0x5ad08a];return _0xb433a4;};'use strict';var _=require(_0x225d('0x0'));var util=require('util');var logger=require(_0x225d('0x1'))(_0x225d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x225d('0x3'));var fs=require('fs');var path=require(_0x225d('0x4'));var rimraf=require(_0x225d('0x5'));var config=require(_0x225d('0x6'));var attributes=require(_0x225d('0x7'));module[_0x225d('0x8')]=function(_0x1d7536,_0x683fd4){return _0x1d7536[_0x225d('0x9')](_0x225d('0xa'),attributes,{'tableName':_0x225d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb9671c..8f8443d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc705=['error','code','message','ShowSmsAccount','SmsAccount','options','raw','where','attributes','include','map','model','then','debug','stringify','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s'];(function(_0xed6c05,_0x346854){var _0x1c5f50=function(_0x461fff){while(--_0x461fff){_0xed6c05['push'](_0xed6c05['shift']());}};_0x1c5f50(++_0x346854);}(_0xc705,0xfd));var _0x5c70=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0xc705[_0x2a55f8];return _0x245efd;};'use strict';var _=require(_0x5c70('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5c70('0x1'));var fs=require('fs');var Redis=require(_0x5c70('0x2'));var db=require(_0x5c70('0x3'))['db'];var utils=require(_0x5c70('0x4'));var logger=require(_0x5c70('0x5'))('rpc');var config=require(_0x5c70('0x6'));var jayson=require(_0x5c70('0x7'));var client=jayson[_0x5c70('0x8')]['http']({'port':0x232a});config[_0x5c70('0x9')]=_[_0x5c70('0xa')](config[_0x5c70('0x9')],{'host':_0x5c70('0xb'),'port':0x18eb});var socket=require(_0x5c70('0xc'))(new Redis(config[_0x5c70('0x9')]));require('./smsAccount.socket')[_0x5c70('0xd')](socket);function respondWithRpcPromise(_0x57afe4,_0x305b9b,_0xa9b280){return new BPromise(function(_0xbea3c0,_0x34281c){return client[_0x5c70('0xe')](_0x57afe4,_0xa9b280)['then'](function(_0x3450f4){logger[_0x5c70('0xf')](_0x5c70('0x10'),_0x305b9b,_0x5c70('0x11'));logger['debug'](_0x5c70('0x12'),_0x305b9b,'request\x20sent',JSON['stringify'](_0x3450f4));if(_0x3450f4[_0x5c70('0x13')]){if(_0x3450f4[_0x5c70('0x13')][_0x5c70('0x14')]===0x1f4){logger[_0x5c70('0x13')](_0x5c70('0x10'),_0x305b9b,_0x3450f4[_0x5c70('0x13')]['message']);return _0x34281c(_0x3450f4[_0x5c70('0x13')]['message']);}logger[_0x5c70('0x13')](_0x5c70('0x10'),_0x305b9b,_0x3450f4[_0x5c70('0x13')][_0x5c70('0x15')]);return _0xbea3c0(_0x3450f4['error'][_0x5c70('0x15')]);}else{logger[_0x5c70('0xf')](_0x5c70('0x10'),_0x305b9b,_0x5c70('0x11'));_0xbea3c0(_0x3450f4['result']['message']);}})['catch'](function(_0x109807){logger[_0x5c70('0x13')](_0x5c70('0x10'),_0x305b9b,_0x109807);_0x34281c(_0x109807);});});}exports[_0x5c70('0x16')]=function(_0x5602b3){var _0x29f831=this;return new Promise(function(_0x230e93,_0x20eec7){return db[_0x5c70('0x17')]['find']({'raw':_0x5602b3[_0x5c70('0x18')]?_0x5602b3['options'][_0x5c70('0x19')]===undefined?!![]:![]:!![],'where':_0x5602b3[_0x5c70('0x18')]?_0x5602b3[_0x5c70('0x18')][_0x5c70('0x1a')]||null:null,'attributes':_0x5602b3['options']?_0x5602b3['options'][_0x5c70('0x1b')]||null:null,'include':_0x5602b3[_0x5c70('0x18')]?_0x5602b3['options'][_0x5c70('0x1c')]?_[_0x5c70('0x1d')](_0x5602b3[_0x5c70('0x18')][_0x5c70('0x1c')],function(_0x46fcaa){return{'model':db[_0x46fcaa[_0x5c70('0x1e')]],'as':_0x46fcaa['as'],'attributes':_0x46fcaa[_0x5c70('0x1b')],'include':_0x46fcaa[_0x5c70('0x1c')]?_[_0x5c70('0x1d')](_0x46fcaa[_0x5c70('0x1c')],function(_0x1ccf9d){return{'model':db[_0x1ccf9d['model']],'as':_0x1ccf9d['as'],'attributes':_0x1ccf9d[_0x5c70('0x1b')],'include':_0x1ccf9d[_0x5c70('0x1c')]?_[_0x5c70('0x1d')](_0x1ccf9d[_0x5c70('0x1c')],function(_0xa76268){return{'model':db[_0xa76268['model']],'as':_0xa76268['as'],'attributes':_0xa76268[_0x5c70('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5c70('0x1f')](function(_0x3fa93c){logger[_0x5c70('0xf')](_0x5c70('0x16'),_0x5602b3);logger[_0x5c70('0x20')](_0x5c70('0x16'),_0x5602b3,JSON[_0x5c70('0x21')](_0x3fa93c));_0x230e93(_0x3fa93c);})['catch'](function(_0x967cb7){logger[_0x5c70('0x13')](_0x5c70('0x16'),_0x967cb7[_0x5c70('0x15')],_0x5602b3);_0x20eec7(_0x29f831[_0x5c70('0x13')](0x1f4,_0x967cb7[_0x5c70('0x15')]));});});};
\ No newline at end of file
+var _0x9978=['info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','attributes','model','then','stringify','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register'];(function(_0x2a84dd,_0xe3c8ba){var _0x5e9879=function(_0x1c9e54){while(--_0x1c9e54){_0x2a84dd['push'](_0x2a84dd['shift']());}};_0x5e9879(++_0xe3c8ba);}(_0x9978,0xb2));var _0x8997=function(_0x290c0e,_0x4d8a04){_0x290c0e=_0x290c0e-0x0;var _0x513c4f=_0x9978[_0x290c0e];return _0x513c4f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8997('0x0'));var BPromise=require('bluebird');var rs=require(_0x8997('0x1'));var fs=require('fs');var Redis=require(_0x8997('0x2'));var db=require(_0x8997('0x3'))['db'];var utils=require(_0x8997('0x4'));var logger=require(_0x8997('0x5'))(_0x8997('0x6'));var config=require(_0x8997('0x7'));var jayson=require(_0x8997('0x8'));var client=jayson[_0x8997('0x9')][_0x8997('0xa')]({'port':0x232a});config[_0x8997('0xb')]=_[_0x8997('0xc')](config[_0x8997('0xb')],{'host':_0x8997('0xd'),'port':0x18eb});var socket=require(_0x8997('0xe'))(new Redis(config[_0x8997('0xb')]));require(_0x8997('0xf'))[_0x8997('0x10')](socket);function respondWithRpcPromise(_0x13f003,_0x46870d,_0x532f27){return new BPromise(function(_0x2ea3b9,_0x22dd44){return client['request'](_0x13f003,_0x532f27)['then'](function(_0x52a29c){logger[_0x8997('0x11')](_0x8997('0x12'),_0x46870d,'request\x20sent');logger[_0x8997('0x13')](_0x8997('0x14'),_0x46870d,_0x8997('0x15'),JSON['stringify'](_0x52a29c));if(_0x52a29c[_0x8997('0x16')]){if(_0x52a29c[_0x8997('0x16')][_0x8997('0x17')]===0x1f4){logger['error'](_0x8997('0x12'),_0x46870d,_0x52a29c[_0x8997('0x16')]['message']);return _0x22dd44(_0x52a29c[_0x8997('0x16')][_0x8997('0x18')]);}logger['error'](_0x8997('0x12'),_0x46870d,_0x52a29c['error'][_0x8997('0x18')]);return _0x2ea3b9(_0x52a29c['error'][_0x8997('0x18')]);}else{logger[_0x8997('0x11')](_0x8997('0x12'),_0x46870d,_0x8997('0x15'));_0x2ea3b9(_0x52a29c[_0x8997('0x19')]['message']);}})[_0x8997('0x1a')](function(_0x47f7c2){logger[_0x8997('0x16')](_0x8997('0x12'),_0x46870d,_0x47f7c2);_0x22dd44(_0x47f7c2);});});}exports[_0x8997('0x1b')]=function(_0x5240a4){var _0x37d9e8=this;return new Promise(function(_0x19951e,_0x130b55){return db[_0x8997('0x1c')][_0x8997('0x1d')]({'raw':_0x5240a4['options']?_0x5240a4[_0x8997('0x1e')][_0x8997('0x1f')]===undefined?!![]:![]:!![],'where':_0x5240a4['options']?_0x5240a4[_0x8997('0x1e')][_0x8997('0x20')]||null:null,'attributes':_0x5240a4[_0x8997('0x1e')]?_0x5240a4[_0x8997('0x1e')]['attributes']||null:null,'include':_0x5240a4[_0x8997('0x1e')]?_0x5240a4[_0x8997('0x1e')][_0x8997('0x21')]?_[_0x8997('0x22')](_0x5240a4[_0x8997('0x1e')]['include'],function(_0x363270){return{'model':db[_0x363270['model']],'as':_0x363270['as'],'attributes':_0x363270[_0x8997('0x23')],'include':_0x363270[_0x8997('0x21')]?_[_0x8997('0x22')](_0x363270['include'],function(_0x34b380){return{'model':db[_0x34b380[_0x8997('0x24')]],'as':_0x34b380['as'],'attributes':_0x34b380['attributes'],'include':_0x34b380[_0x8997('0x21')]?_['map'](_0x34b380[_0x8997('0x21')],function(_0x57b289){return{'model':db[_0x57b289[_0x8997('0x24')]],'as':_0x57b289['as'],'attributes':_0x57b289[_0x8997('0x23')]};}):[]};}):[]};}):[]:[]})[_0x8997('0x25')](function(_0x31b26c){logger[_0x8997('0x11')]('ShowSmsAccount',_0x5240a4);logger[_0x8997('0x13')](_0x8997('0x1b'),_0x5240a4,JSON[_0x8997('0x26')](_0x31b26c));_0x19951e(_0x31b26c);})[_0x8997('0x1a')](function(_0x15bc43){logger['error'](_0x8997('0x1b'),_0x15bc43[_0x8997('0x18')],_0x5240a4);_0x130b55(_0x37d9e8[_0x8997('0x16')](0x1f4,_0x15bc43[_0x8997('0x18')]));});});};
\ No newline at end of file
index 5736b17..17b4d76 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(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 b03343b..b31d28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/:id','create','put','exports','multer','util','express','Router','../../components/auth/service','./smsApplication.controller','get','isAuthenticated','index'];(function(_0x1cb9e8,_0x230f64){var _0x4bf28d=function(_0xc21cb1){while(--_0xc21cb1){_0x1cb9e8['push'](_0x1cb9e8['shift']());}};_0x4bf28d(++_0x230f64);}(_0xe14b,0x93));var _0xbe14=function(_0x11fa3d,_0x402a8d){_0x11fa3d=_0x11fa3d-0x0;var _0x52b603=_0xe14b[_0x11fa3d];return _0x52b603;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router['delete'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['destroy']);module[_0xbe14('0xc')]=router;
\ No newline at end of file
+var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0xa5991b,_0x39b0b9){var _0x392487=function(_0x2fcb2a){while(--_0x2fcb2a){_0xa5991b['push'](_0xa5991b['shift']());}};_0x392487(++_0x39b0b9);}(_0x55ca,0x126));var _0xa55c=function(_0x4a055e,_0x59b80a){_0x4a055e=_0x4a055e-0x0;var _0x328a29=_0x55ca[_0x4a055e];return _0x328a29;};'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 f859c38..2a1a4d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a0=['*,*,*,*','exports','INTEGER','STRING','TEXT'];(function(_0x44393b,_0x5e39ea){var _0x326c6e=function(_0x37427f){while(--_0x37427f){_0x44393b['push'](_0x44393b['shift']());}};_0x326c6e(++_0x5e39ea);}(_0xf2a0,0x7e));var _0x0f2a=function(_0x254076,_0x5e7b8d){_0x254076=_0x254076-0x0;var _0x21a93e=_0xf2a0[_0x254076];return _0x21a93e;};'use strict';var Sequelize=require('sequelize');module[_0x0f2a('0x0')]={'priority':{'type':Sequelize[_0x0f2a('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x0f2a('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x0f2a('0x3')]()},'description':{'type':Sequelize[_0x0f2a('0x2')]},'interval':{'type':Sequelize[_0x0f2a('0x2')],'defaultValue':_0x0f2a('0x4')}};
\ No newline at end of file
+var _0x8312=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x3213c7,_0x1ec702){var _0x1f1e58=function(_0x4c5401){while(--_0x4c5401){_0x3213c7['push'](_0x3213c7['shift']());}};_0x1f1e58(++_0x1ec702);}(_0x8312,0xe7));var _0x2831=function(_0x826fae,_0x7a32ce){_0x826fae=_0x826fae-0x0;var _0x53ed77=_0x8312[_0x826fae];return _0x53ed77;};'use strict';var Sequelize=require(_0x2831('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2831('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x2831('0x2')],'allowNull':![],'defaultValue':_0x2831('0x3')},'appdata':{'type':Sequelize[_0x2831('0x4')]()},'description':{'type':Sequelize[_0x2831('0x2')]},'interval':{'type':Sequelize[_0x2831('0x2')],'defaultValue':_0x2831('0x5')}};
\ No newline at end of file
index c6a3251..c36ea58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7218=['type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','destroy','then','stack','name','send','index','map','SmsApplication','rawAttributes'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x7218,0xfd));var _0x8721=function(_0x41f204,_0x36f911){_0x41f204=_0x41f204-0x0;var _0x30e4b5=_0x7218[_0x41f204];return _0x30e4b5;};'use strict';var emlformat=require(_0x8721('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8721('0x1'));var rp=require('request-promise');var moment=require(_0x8721('0x2'));var BPromise=require(_0x8721('0x3'));var Mustache=require(_0x8721('0x4'));var util=require(_0x8721('0x5'));var path=require(_0x8721('0x6'));var sox=require(_0x8721('0x7'));var csv=require('to-csv');var ejs=require(_0x8721('0x8'));var fs=require('fs');var fs_extra=require(_0x8721('0x9'));var _=require(_0x8721('0xa'));var squel=require(_0x8721('0xb'));var crypto=require(_0x8721('0xc'));var jsforce=require(_0x8721('0xd'));var deskjs=require(_0x8721('0xe'));var toCsv=require(_0x8721('0xf'));var querystring=require(_0x8721('0x10'));var Papa=require(_0x8721('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8721('0x12'));var as=require(_0x8721('0x13'));var hardwareService=require(_0x8721('0x14'));var logger=require('../../config/logger')(_0x8721('0x15'));var utils=require(_0x8721('0x16'));var config=require(_0x8721('0x17'));var licenseUtil=require(_0x8721('0x18'));var db=require(_0x8721('0x19'))['db'];function respondWithStatusCode(_0x16903b,_0x33e01b){_0x33e01b=_0x33e01b||0xcc;return function(_0x213931){if(_0x213931){return _0x16903b[_0x8721('0x1a')](_0x33e01b);}return _0x16903b[_0x8721('0x1b')](_0x33e01b)['end']();};}function respondWithResult(_0x5a26cf,_0x5e94cf){_0x5e94cf=_0x5e94cf||0xc8;return function(_0x246d07){if(_0x246d07){return _0x5a26cf[_0x8721('0x1b')](_0x5e94cf)['json'](_0x246d07);}};}function respondWithFilteredResult(_0x2c1488,_0x146258){return function(_0x2cb531){if(_0x2cb531){var _0x2578e3=typeof _0x146258[_0x8721('0x1c')]===_0x8721('0x1d')&&typeof _0x146258[_0x8721('0x1e')]===_0x8721('0x1d');var _0x1af5ef=_0x2cb531[_0x8721('0x1f')];var _0x372c00=_0x2578e3?0x0:_0x146258[_0x8721('0x1c')];var _0x2e14b8=_0x2578e3?_0x2cb531['count']:_0x146258[_0x8721('0x1c')]+_0x146258['limit'];var _0x8e2bd6;if(_0x2e14b8>=_0x1af5ef){_0x2e14b8=_0x1af5ef;_0x8e2bd6=0xc8;}else{_0x8e2bd6=0xce;}_0x2c1488[_0x8721('0x1b')](_0x8e2bd6);return _0x2c1488[_0x8721('0x20')](_0x8721('0x21'),_0x372c00+'-'+_0x2e14b8+'/'+_0x1af5ef)[_0x8721('0x22')](_0x2cb531);}return null;};}function patchUpdates(_0x530d8d){return function(_0x2b7b6e){try{jsonpatch[_0x8721('0x23')](_0x2b7b6e,_0x530d8d,!![]);}catch(_0x82fc4){return BPromise[_0x8721('0x24')](_0x82fc4);}return _0x2b7b6e[_0x8721('0x25')]();};}function saveUpdates(_0x10a8fc,_0x2f8b6f){return function(_0x568acf){if(_0x568acf){return _0x568acf['update'](_0x10a8fc)['then'](function(_0x21be17){return _0x21be17;});}return null;};}function removeEntity(_0x2452a3,_0x50cad1){return function(_0x4a48c9){if(_0x4a48c9){return _0x4a48c9[_0x8721('0x26')]()[_0x8721('0x27')](function(){_0x2452a3[_0x8721('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa0dee4,_0x5d4882){return function(_0xb13daa){if(!_0xb13daa){_0xa0dee4[_0x8721('0x1a')](0x194);}return _0xb13daa;};}function handleError(_0x1be1f4,_0x567c60){_0x567c60=_0x567c60||0x1f4;return function(_0x30e619){logger['error'](_0x30e619[_0x8721('0x28')]);if(_0x30e619['name']){delete _0x30e619[_0x8721('0x29')];}_0x1be1f4[_0x8721('0x1b')](_0x567c60)[_0x8721('0x2a')](_0x30e619);};}exports[_0x8721('0x2b')]=function(_0x5924b9,_0x588518){var _0x4d476e={},_0x1fde17={},_0x481cfa={'count':0x0,'rows':[]};var _0x709b5e=_[_0x8721('0x2c')](db[_0x8721('0x2d')][_0x8721('0x2e')],function(_0x34d175){return{'name':_0x34d175['fieldName'],'type':_0x34d175[_0x8721('0x2f')]['key']};});_0x1fde17['model']=_[_0x8721('0x2c')](_0x709b5e,_0x8721('0x29'));_0x1fde17[_0x8721('0x30')]=_[_0x8721('0x31')](_0x5924b9[_0x8721('0x30')]);_0x1fde17[_0x8721('0x32')]=_[_0x8721('0x33')](_0x1fde17[_0x8721('0x34')],_0x1fde17[_0x8721('0x30')]);_0x4d476e[_0x8721('0x35')]=_['intersection'](_0x1fde17[_0x8721('0x34')],qs['fields'](_0x5924b9[_0x8721('0x30')][_0x8721('0x36')]));_0x4d476e[_0x8721('0x35')]=_0x4d476e['attributes'][_0x8721('0x37')]?_0x4d476e[_0x8721('0x35')]:_0x1fde17[_0x8721('0x34')];if(!_0x5924b9[_0x8721('0x30')][_0x8721('0x38')]('nolimit')){_0x4d476e[_0x8721('0x1e')]=qs[_0x8721('0x1e')](_0x5924b9['query'][_0x8721('0x1e')]);_0x4d476e['offset']=qs[_0x8721('0x1c')](_0x5924b9[_0x8721('0x30')][_0x8721('0x1c')]);}_0x4d476e[_0x8721('0x39')]=qs[_0x8721('0x3a')](_0x5924b9['query']['sort']);_0x4d476e[_0x8721('0x3b')]=qs[_0x8721('0x32')](_['pick'](_0x5924b9[_0x8721('0x30')],_0x1fde17[_0x8721('0x32')]),_0x709b5e);if(_0x5924b9[_0x8721('0x30')]['filter']){_0x4d476e['where']=_[_0x8721('0x3c')](_0x4d476e[_0x8721('0x3b')],{'$or':_['map'](_0x709b5e,function(_0x59c40b){if(_0x59c40b[_0x8721('0x2f')]!==_0x8721('0x3d')){var _0x215f5e={};_0x215f5e[_0x59c40b[_0x8721('0x29')]]={'$like':'%'+_0x5924b9[_0x8721('0x30')][_0x8721('0x3e')]+'%'};return _0x215f5e;}})});}_0x4d476e=_[_0x8721('0x3c')]({},_0x4d476e,_0x5924b9[_0x8721('0x3f')]);var _0x5297cc={'where':_0x4d476e['where']};return db[_0x8721('0x2d')]['count'](_0x5297cc)[_0x8721('0x27')](function(_0x213980){_0x481cfa['count']=_0x213980;if(_0x5924b9[_0x8721('0x30')][_0x8721('0x40')]){_0x4d476e[_0x8721('0x41')]=[{'all':!![]}];}return db[_0x8721('0x2d')][_0x8721('0x42')](_0x4d476e);})[_0x8721('0x27')](function(_0x51961d){_0x481cfa[_0x8721('0x43')]=_0x51961d;return _0x481cfa;})['then'](respondWithFilteredResult(_0x588518,_0x4d476e))[_0x8721('0x44')](handleError(_0x588518,null));};exports[_0x8721('0x45')]=function(_0x2da634,_0x2d64bf){var _0x339493={'raw':!![],'where':{'id':_0x2da634['params']['id']}},_0x19e30a={};_0x19e30a[_0x8721('0x34')]=_[_0x8721('0x31')](db['SmsApplication'][_0x8721('0x2e')]);_0x19e30a[_0x8721('0x30')]=_[_0x8721('0x31')](_0x2da634['query']);_0x19e30a[_0x8721('0x32')]=_['intersection'](_0x19e30a['model'],_0x19e30a[_0x8721('0x30')]);_0x339493['attributes']=_[_0x8721('0x33')](_0x19e30a[_0x8721('0x34')],qs[_0x8721('0x36')](_0x2da634[_0x8721('0x30')][_0x8721('0x36')]));_0x339493[_0x8721('0x35')]=_0x339493[_0x8721('0x35')][_0x8721('0x37')]?_0x339493['attributes']:_0x19e30a[_0x8721('0x34')];if(_0x2da634[_0x8721('0x30')][_0x8721('0x40')]){_0x339493[_0x8721('0x41')]=[{'all':!![]}];}_0x339493=_[_0x8721('0x3c')]({},_0x339493,_0x2da634[_0x8721('0x3f')]);return db[_0x8721('0x2d')][_0x8721('0x46')](_0x339493)[_0x8721('0x27')](handleEntityNotFound(_0x2d64bf,null))[_0x8721('0x27')](respondWithResult(_0x2d64bf,null))[_0x8721('0x44')](handleError(_0x2d64bf,null));};exports[_0x8721('0x47')]=function(_0x35bf69,_0x52cc59){return db[_0x8721('0x2d')][_0x8721('0x47')](_0x35bf69[_0x8721('0x48')],{})[_0x8721('0x27')](respondWithResult(_0x52cc59,0xc9))['catch'](handleError(_0x52cc59,null));};exports[_0x8721('0x49')]=function(_0x543b8f,_0x4d8b17){if(_0x543b8f['body']['id']){delete _0x543b8f[_0x8721('0x48')]['id'];}return db['SmsApplication']['find']({'where':{'id':_0x543b8f[_0x8721('0x4a')]['id']}})[_0x8721('0x27')](handleEntityNotFound(_0x4d8b17,null))[_0x8721('0x27')](saveUpdates(_0x543b8f['body'],null))[_0x8721('0x27')](respondWithResult(_0x4d8b17,null))[_0x8721('0x44')](handleError(_0x4d8b17,null));};exports[_0x8721('0x26')]=function(_0x2ce546,_0x48838a){return db[_0x8721('0x2d')][_0x8721('0x46')]({'where':{'id':_0x2ce546['params']['id']}})['then'](handleEntityNotFound(_0x48838a,null))[_0x8721('0x27')](removeEntity(_0x48838a,null))[_0x8721('0x44')](handleError(_0x48838a,null));};
\ No newline at end of file
+var _0xe186=['crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','map','SmsApplication','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','then','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x3e2d1c,_0x3ef174){var _0x2e2f15=function(_0xfafd3b){while(--_0xfafd3b){_0x3e2d1c['push'](_0x3e2d1c['shift']());}};_0x2e2f15(++_0x3ef174);}(_0xe186,0x174));var _0x6e18=function(_0x37760a,_0x327c5e){_0x37760a=_0x37760a-0x0;var _0x1684ff=_0xe186[_0x37760a];return _0x1684ff;};'use strict';var emlformat=require(_0x6e18('0x0'));var rimraf=require(_0x6e18('0x1'));var zipdir=require(_0x6e18('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e18('0x3'));var moment=require(_0x6e18('0x4'));var BPromise=require(_0x6e18('0x5'));var Mustache=require('mustache');var util=require(_0x6e18('0x6'));var path=require(_0x6e18('0x7'));var sox=require(_0x6e18('0x8'));var csv=require('to-csv');var ejs=require(_0x6e18('0x9'));var fs=require('fs');var fs_extra=require(_0x6e18('0xa'));var _=require(_0x6e18('0xb'));var squel=require(_0x6e18('0xc'));var crypto=require(_0x6e18('0xd'));var jsforce=require(_0x6e18('0xe'));var deskjs=require(_0x6e18('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6e18('0x10'));var Papa=require(_0x6e18('0x11'));var Redis=require('ioredis');var authService=require(_0x6e18('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6e18('0x13'));var logger=require('../../config/logger')(_0x6e18('0x14'));var utils=require(_0x6e18('0x15'));var config=require(_0x6e18('0x16'));var licenseUtil=require(_0x6e18('0x17'));var db=require(_0x6e18('0x18'))['db'];function respondWithStatusCode(_0x1b770a,_0x435485){_0x435485=_0x435485||0xcc;return function(_0x20bb71){if(_0x20bb71){return _0x1b770a[_0x6e18('0x19')](_0x435485);}return _0x1b770a[_0x6e18('0x1a')](_0x435485)[_0x6e18('0x1b')]();};}function respondWithResult(_0x2bbf2,_0x52adb7){_0x52adb7=_0x52adb7||0xc8;return function(_0x1c9a22){if(_0x1c9a22){return _0x2bbf2[_0x6e18('0x1a')](_0x52adb7)['json'](_0x1c9a22);}};}function respondWithFilteredResult(_0x1998ed,_0x182c36){return function(_0x3cc632){if(_0x3cc632){var _0x47f76c=typeof _0x182c36[_0x6e18('0x1c')]===_0x6e18('0x1d')&&typeof _0x182c36[_0x6e18('0x1e')]===_0x6e18('0x1d');var _0x1a809d=_0x3cc632[_0x6e18('0x1f')];var _0x9143ac=_0x47f76c?0x0:_0x182c36[_0x6e18('0x1c')];var _0x195b4d=_0x47f76c?_0x3cc632[_0x6e18('0x1f')]:_0x182c36[_0x6e18('0x1c')]+_0x182c36[_0x6e18('0x1e')];var _0x5cf9fe;if(_0x195b4d>=_0x1a809d){_0x195b4d=_0x1a809d;_0x5cf9fe=0xc8;}else{_0x5cf9fe=0xce;}_0x1998ed[_0x6e18('0x1a')](_0x5cf9fe);return _0x1998ed[_0x6e18('0x20')](_0x6e18('0x21'),_0x9143ac+'-'+_0x195b4d+'/'+_0x1a809d)[_0x6e18('0x22')](_0x3cc632);}return null;};}function patchUpdates(_0x3d7779){return function(_0x260f95){try{jsonpatch[_0x6e18('0x23')](_0x260f95,_0x3d7779,!![]);}catch(_0x9ee2d5){return BPromise[_0x6e18('0x24')](_0x9ee2d5);}return _0x260f95[_0x6e18('0x25')]();};}function saveUpdates(_0x52ef3d,_0x1217d5){return function(_0x1df395){if(_0x1df395){return _0x1df395[_0x6e18('0x26')](_0x52ef3d)['then'](function(_0x423681){return _0x423681;});}return null;};}function removeEntity(_0x5dd5f6,_0x3cfc30){return function(_0x43fe97){if(_0x43fe97){return _0x43fe97[_0x6e18('0x27')]()['then'](function(){_0x5dd5f6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b0f31,_0x538553){return function(_0x5e91c1){if(!_0x5e91c1){_0x5b0f31['sendStatus'](0x194);}return _0x5e91c1;};}function handleError(_0x2a79dd,_0x458e77){_0x458e77=_0x458e77||0x1f4;return function(_0x562bfa){logger[_0x6e18('0x28')](_0x562bfa[_0x6e18('0x29')]);if(_0x562bfa[_0x6e18('0x2a')]){delete _0x562bfa[_0x6e18('0x2a')];}_0x2a79dd['status'](_0x458e77)[_0x6e18('0x2b')](_0x562bfa);};}exports['index']=function(_0x29d973,_0x35eee6){var _0x4f52b5={},_0x40a10a={},_0x528f0a={'count':0x0,'rows':[]};var _0x4d78ad=_[_0x6e18('0x2c')](db[_0x6e18('0x2d')][_0x6e18('0x2e')],function(_0x23f9f4){return{'name':_0x23f9f4[_0x6e18('0x2f')],'type':_0x23f9f4[_0x6e18('0x30')][_0x6e18('0x31')]};});_0x40a10a[_0x6e18('0x32')]=_[_0x6e18('0x2c')](_0x4d78ad,'name');_0x40a10a['query']=_[_0x6e18('0x33')](_0x29d973['query']);_0x40a10a[_0x6e18('0x34')]=_[_0x6e18('0x35')](_0x40a10a[_0x6e18('0x32')],_0x40a10a[_0x6e18('0x36')]);_0x4f52b5['attributes']=_['intersection'](_0x40a10a[_0x6e18('0x32')],qs[_0x6e18('0x37')](_0x29d973[_0x6e18('0x36')][_0x6e18('0x37')]));_0x4f52b5[_0x6e18('0x38')]=_0x4f52b5[_0x6e18('0x38')][_0x6e18('0x39')]?_0x4f52b5[_0x6e18('0x38')]:_0x40a10a[_0x6e18('0x32')];if(!_0x29d973[_0x6e18('0x36')][_0x6e18('0x3a')](_0x6e18('0x3b'))){_0x4f52b5[_0x6e18('0x1e')]=qs[_0x6e18('0x1e')](_0x29d973['query'][_0x6e18('0x1e')]);_0x4f52b5[_0x6e18('0x1c')]=qs[_0x6e18('0x1c')](_0x29d973[_0x6e18('0x36')]['offset']);}_0x4f52b5[_0x6e18('0x3c')]=qs[_0x6e18('0x3d')](_0x29d973['query'][_0x6e18('0x3d')]);_0x4f52b5['where']=qs['filters'](_[_0x6e18('0x3e')](_0x29d973[_0x6e18('0x36')],_0x40a10a[_0x6e18('0x34')]),_0x4d78ad);if(_0x29d973[_0x6e18('0x36')][_0x6e18('0x3f')]){_0x4f52b5[_0x6e18('0x40')]=_[_0x6e18('0x41')](_0x4f52b5[_0x6e18('0x40')],{'$or':_[_0x6e18('0x2c')](_0x4d78ad,function(_0x41ae2e){if(_0x41ae2e[_0x6e18('0x30')]!=='VIRTUAL'){var _0x3050da={};_0x3050da[_0x41ae2e[_0x6e18('0x2a')]]={'$like':'%'+_0x29d973[_0x6e18('0x36')][_0x6e18('0x3f')]+'%'};return _0x3050da;}})});}_0x4f52b5=_['merge']({},_0x4f52b5,_0x29d973[_0x6e18('0x42')]);var _0x3ad3d6={'where':_0x4f52b5[_0x6e18('0x40')]};return db['SmsApplication']['count'](_0x3ad3d6)['then'](function(_0x13b620){_0x528f0a[_0x6e18('0x1f')]=_0x13b620;if(_0x29d973['query'][_0x6e18('0x43')]){_0x4f52b5[_0x6e18('0x44')]=[{'all':!![]}];}return db[_0x6e18('0x2d')][_0x6e18('0x45')](_0x4f52b5);})['then'](function(_0x573084){_0x528f0a['rows']=_0x573084;return _0x528f0a;})[_0x6e18('0x46')](respondWithFilteredResult(_0x35eee6,_0x4f52b5))[_0x6e18('0x47')](handleError(_0x35eee6,null));};exports[_0x6e18('0x48')]=function(_0x3b3742,_0x1747b5){var _0x49a7e9={'raw':!![],'where':{'id':_0x3b3742[_0x6e18('0x49')]['id']}},_0x5f2436={};_0x5f2436['model']=_['keys'](db['SmsApplication'][_0x6e18('0x2e')]);_0x5f2436[_0x6e18('0x36')]=_[_0x6e18('0x33')](_0x3b3742[_0x6e18('0x36')]);_0x5f2436['filters']=_['intersection'](_0x5f2436['model'],_0x5f2436[_0x6e18('0x36')]);_0x49a7e9['attributes']=_[_0x6e18('0x35')](_0x5f2436[_0x6e18('0x32')],qs[_0x6e18('0x37')](_0x3b3742[_0x6e18('0x36')]['fields']));_0x49a7e9[_0x6e18('0x38')]=_0x49a7e9[_0x6e18('0x38')][_0x6e18('0x39')]?_0x49a7e9['attributes']:_0x5f2436['model'];if(_0x3b3742[_0x6e18('0x36')][_0x6e18('0x43')]){_0x49a7e9['include']=[{'all':!![]}];}_0x49a7e9=_[_0x6e18('0x41')]({},_0x49a7e9,_0x3b3742[_0x6e18('0x42')]);return db[_0x6e18('0x2d')][_0x6e18('0x4a')](_0x49a7e9)[_0x6e18('0x46')](handleEntityNotFound(_0x1747b5,null))['then'](respondWithResult(_0x1747b5,null))[_0x6e18('0x47')](handleError(_0x1747b5,null));};exports['create']=function(_0x2d54e5,_0xf350c5){return db['SmsApplication'][_0x6e18('0x4b')](_0x2d54e5['body'],{})['then'](respondWithResult(_0xf350c5,0xc9))[_0x6e18('0x47')](handleError(_0xf350c5,null));};exports[_0x6e18('0x26')]=function(_0x4fc3d3,_0x1b6df7){if(_0x4fc3d3[_0x6e18('0x4c')]['id']){delete _0x4fc3d3['body']['id'];}return db[_0x6e18('0x2d')][_0x6e18('0x4a')]({'where':{'id':_0x4fc3d3[_0x6e18('0x49')]['id']}})[_0x6e18('0x46')](handleEntityNotFound(_0x1b6df7,null))[_0x6e18('0x46')](saveUpdates(_0x4fc3d3[_0x6e18('0x4c')],null))[_0x6e18('0x46')](respondWithResult(_0x1b6df7,null))[_0x6e18('0x47')](handleError(_0x1b6df7,null));};exports['destroy']=function(_0x5aacb3,_0x4d8418){return db[_0x6e18('0x2d')][_0x6e18('0x4a')]({'where':{'id':_0x5aacb3[_0x6e18('0x49')]['id']}})[_0x6e18('0x46')](handleEntityNotFound(_0x4d8418,null))[_0x6e18('0x46')](removeEntity(_0x4d8418,null))[_0x6e18('0x47')](handleError(_0x4d8418,null));};
\ No newline at end of file
index 3579bc7..1fa9e45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad7a=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsApplication.attributes','exports','define','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x22eca5,_0x3fa0e5){var _0x384d73=function(_0x139588){while(--_0x139588){_0x22eca5['push'](_0x22eca5['shift']());}};_0x384d73(++_0x3fa0e5);}(_0xad7a,0x1b1));var _0xaad7=function(_0x452112,_0x273e7e){_0x452112=_0x452112-0x0;var _0x449277=_0xad7a[_0x452112];return _0x449277;};'use strict';var _=require(_0xaad7('0x0'));var util=require(_0xaad7('0x1'));var logger=require(_0xaad7('0x2'))(_0xaad7('0x3'));var moment=require(_0xaad7('0x4'));var BPromise=require(_0xaad7('0x5'));var rp=require(_0xaad7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaad7('0x7'));var config=require(_0xaad7('0x8'));var attributes=require(_0xaad7('0x9'));module[_0xaad7('0xa')]=function(_0xb0cd1f,_0x171abe){return _0xb0cd1f[_0xaad7('0xb')]('SmsApplication',attributes,{'tableName':_0xaad7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaad7('0xd'),'collate':_0xaad7('0xe')});};
\ No newline at end of file
+var _0xfee0=['exports','define','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','../../config/environment'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xfee0,0x131));var _0x0fee=function(_0x166e33,_0x127e77){_0x166e33=_0x166e33-0x0;var _0x1a2409=_0xfee0[_0x166e33];return _0x1a2409;};'use strict';var _=require(_0x0fee('0x0'));var util=require(_0x0fee('0x1'));var logger=require('../../config/logger')(_0x0fee('0x2'));var moment=require(_0x0fee('0x3'));var BPromise=require('bluebird');var rp=require(_0x0fee('0x4'));var fs=require('fs');var path=require(_0x0fee('0x5'));var rimraf=require('rimraf');var config=require(_0x0fee('0x6'));var attributes=require('./smsApplication.attributes');module[_0x0fee('0x7')]=function(_0x3961e8,_0x5a97ec){return _0x3961e8[_0x0fee('0x8')]('SmsApplication',attributes,{'tableName':_0x0fee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0fee('0xa'),'collate':_0x0fee('0xb')});};
\ No newline at end of file
index b078310..dd7aea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1c=['rpc','../../config/environment','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2ab6a8,_0x13bc73){var _0x4981e3=function(_0x5a5087){while(--_0x5a5087){_0x2ab6a8['push'](_0x2ab6a8['shift']());}};_0x4981e3(++_0x13bc73);}(_0x6e1c,0xb6));var _0xc6e1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6e1c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc6e1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc6e1('0x1'));var rs=require(_0xc6e1('0x2'));var fs=require('fs');var Redis=require(_0xc6e1('0x3'));var db=require(_0xc6e1('0x4'))['db'];var utils=require(_0xc6e1('0x5'));var logger=require(_0xc6e1('0x6'))(_0xc6e1('0x7'));var config=require(_0xc6e1('0x8'));var jayson=require(_0xc6e1('0x9'));var client=jayson[_0xc6e1('0xa')][_0xc6e1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5247f1,_0x3ff10c,_0x1242d5){return new BPromise(function(_0x39000a,_0x2ffee0){return client[_0xc6e1('0xc')](_0x5247f1,_0x1242d5)['then'](function(_0xa29af9){logger[_0xc6e1('0xd')](_0xc6e1('0xe'),_0x3ff10c,'request\x20sent');logger['debug'](_0xc6e1('0xf'),_0x3ff10c,_0xc6e1('0x10'),JSON['stringify'](_0xa29af9));if(_0xa29af9[_0xc6e1('0x11')]){if(_0xa29af9[_0xc6e1('0x11')][_0xc6e1('0x12')]===0x1f4){logger[_0xc6e1('0x11')](_0xc6e1('0xe'),_0x3ff10c,_0xa29af9[_0xc6e1('0x11')]['message']);return _0x2ffee0(_0xa29af9[_0xc6e1('0x11')][_0xc6e1('0x13')]);}logger[_0xc6e1('0x11')](_0xc6e1('0xe'),_0x3ff10c,_0xa29af9[_0xc6e1('0x11')]['message']);return _0x39000a(_0xa29af9['error'][_0xc6e1('0x13')]);}else{logger[_0xc6e1('0xd')]('SmsApplication,\x20%s,\x20%s',_0x3ff10c,_0xc6e1('0x10'));_0x39000a(_0xa29af9[_0xc6e1('0x14')][_0xc6e1('0x13')]);}})['catch'](function(_0x44ef6c){logger[_0xc6e1('0x11')](_0xc6e1('0xe'),_0x3ff10c,_0x44ef6c);_0x2ffee0(_0x44ef6c);});});}
\ No newline at end of file
+var _0x1619=['result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x2c699e,_0x5e9d6c){var _0x5844e3=function(_0x45b361){while(--_0x45b361){_0x2c699e['push'](_0x2c699e['shift']());}};_0x5844e3(++_0x5e9d6c);}(_0x1619,0x189));var _0x9161=function(_0x3b85c7,_0x1c341c){_0x3b85c7=_0x3b85c7-0x0;var _0x137c8a=_0x1619[_0x3b85c7];return _0x137c8a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9161('0x0'));var BPromise=require('bluebird');var rs=require(_0x9161('0x1'));var fs=require('fs');var Redis=require(_0x9161('0x2'));var db=require(_0x9161('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9161('0x4'))('rpc');var config=require(_0x9161('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9161('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x280562,_0x4a0ec2,_0xb212e4){return new BPromise(function(_0x1f8240,_0x4f3e87){return client[_0x9161('0x7')](_0x280562,_0xb212e4)['then'](function(_0x3d6e0b){logger['info'](_0x9161('0x8'),_0x4a0ec2,_0x9161('0x9'));logger[_0x9161('0xa')](_0x9161('0xb'),_0x4a0ec2,_0x9161('0x9'),JSON[_0x9161('0xc')](_0x3d6e0b));if(_0x3d6e0b[_0x9161('0xd')]){if(_0x3d6e0b['error']['code']===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x4a0ec2,_0x3d6e0b[_0x9161('0xd')]['message']);return _0x4f3e87(_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);}logger[_0x9161('0xd')](_0x9161('0x8'),_0x4a0ec2,_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);return _0x1f8240(_0x3d6e0b[_0x9161('0xd')][_0x9161('0xe')]);}else{logger['info'](_0x9161('0x8'),_0x4a0ec2,_0x9161('0x9'));_0x1f8240(_0x3d6e0b[_0x9161('0xf')]['message']);}})[_0x9161('0x10')](function(_0x2a7261){logger[_0x9161('0xd')]('SmsApplication,\x20%s,\x20%s',_0x4a0ec2,_0x2a7261);_0x4f3e87(_0x2a7261);});});}
\ No newline at end of file
index f912abc..da25abf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['addMessage','/:id/tags','sms','smsinteraction:addtags','addTags','put','/:id','tracked','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id/messages','getMessages','/:id/download','download','post','create'];(function(_0x52e363,_0x48062a){var _0x3fc2b5=function(_0x1b0cf9){while(--_0x1b0cf9){_0x52e363['push'](_0x52e363['shift']());}};_0x3fc2b5(++_0x48062a);}(_0x9348,0x10d));var _0x8934=function(_0x26ae01,_0x111515){_0x26ae01=_0x26ae01-0x0;var _0xb6ea46=_0x9348[_0x26ae01];return _0xb6ea46;};'use strict';var multer=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var path=require(_0x8934('0x2'));var timeout=require(_0x8934('0x3'));var express=require(_0x8934('0x4'));var router=express['Router']();var fs_extra=require(_0x8934('0x5'));var auth=require(_0x8934('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8934('0x7'));var controller=require(_0x8934('0x8'));router[_0x8934('0x9')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0xb')]);router[_0x8934('0x9')]('/describe',auth[_0x8934('0xa')](),controller[_0x8934('0xc')]);router[_0x8934('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x8934('0xd'),auth['isAuthenticated'](),controller[_0x8934('0xe')]);router[_0x8934('0x9')](_0x8934('0xf'),auth[_0x8934('0xa')](),controller[_0x8934('0x10')]);router[_0x8934('0x11')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0x12')]);router['post'](_0x8934('0xd'),auth[_0x8934('0xa')](),controller[_0x8934('0x13')]);router[_0x8934('0x11')](_0x8934('0x14'),auth[_0x8934('0xa')](),interaction['tracked'](_0x8934('0x15'),_0x8934('0x16')),controller[_0x8934('0x17')]);router[_0x8934('0x18')](_0x8934('0x19'),auth[_0x8934('0xa')](),interaction[_0x8934('0x1a')](_0x8934('0x15'),'smsinteraction:update'),controller[_0x8934('0x1b')]);router[_0x8934('0x1c')](_0x8934('0x19'),auth['isAuthenticated'](),interaction['tracked']('sms',_0x8934('0x1d')),controller['destroy']);router[_0x8934('0x1c')](_0x8934('0x14'),auth[_0x8934('0xa')](),controller[_0x8934('0x1e')]);module[_0x8934('0x1f')]=router;
\ No newline at end of file
+var _0x3423=['/:id','/:id/messages','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','put','delete','smsinteraction:destroy','destroy','removeTags','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3342('0x0'));var timeout=require(_0x3342('0x1'));var express=require(_0x3342('0x2'));var router=express[_0x3342('0x3')]();var fs_extra=require(_0x3342('0x4'));var auth=require(_0x3342('0x5'));var interaction=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var controller=require(_0x3342('0x8'));router[_0x3342('0x9')]('/',auth[_0x3342('0xa')](),controller[_0x3342('0xb')]);router[_0x3342('0x9')](_0x3342('0xc'),auth[_0x3342('0xa')](),controller[_0x3342('0xd')]);router[_0x3342('0x9')](_0x3342('0xe'),auth[_0x3342('0xa')](),controller['show']);router['get'](_0x3342('0xf'),auth['isAuthenticated'](),controller['getMessages']);router['get']('/:id/download',auth[_0x3342('0xa')](),controller[_0x3342('0x10')]);router['post']('/',auth[_0x3342('0xa')](),controller['create']);router[_0x3342('0x11')](_0x3342('0xf'),auth['isAuthenticated'](),controller[_0x3342('0x12')]);router[_0x3342('0x11')](_0x3342('0x13'),auth[_0x3342('0xa')](),interaction[_0x3342('0x14')](_0x3342('0x15'),_0x3342('0x16')),controller['addTags']);router[_0x3342('0x17')](_0x3342('0xe'),auth['isAuthenticated'](),interaction[_0x3342('0x14')](_0x3342('0x15'),'smsinteraction:update'),controller['update']);router[_0x3342('0x18')](_0x3342('0xe'),auth[_0x3342('0xa')](),interaction[_0x3342('0x14')](_0x3342('0x15'),_0x3342('0x19')),controller[_0x3342('0x1a')]);router[_0x3342('0x18')](_0x3342('0x13'),auth['isAuthenticated'](),controller[_0x3342('0x1b')]);module[_0x3342('0x1c')]=router;
\ No newline at end of file
index 0f6adf4..7844fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6379=['DATE','STRING','ENUM','out','sequelize','moment','exports','BOOLEAN'];(function(_0x28fb28,_0x36446c){var _0x40d6d5=function(_0x11727c){while(--_0x11727c){_0x28fb28['push'](_0x28fb28['shift']());}};_0x40d6d5(++_0x36446c);}(_0x6379,0x84));var _0x9637=function(_0x292bab,_0x4eb300){_0x292bab=_0x292bab-0x0;var _0x18b22a=_0x6379[_0x292bab];return _0x18b22a;};'use strict';var Sequelize=require(_0x9637('0x0'));var moment=require(_0x9637('0x1'));module[_0x9637('0x2')]={'closed':{'type':Sequelize[_0x9637('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9637('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x9637('0x5')]},'thirdDisposition':{'type':Sequelize[_0x9637('0x5')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x9637('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x9637('0x6')]('in',_0x9637('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9637('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x9637('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xe548=['DATE','out','ENUM','sequelize','moment','exports','BOOLEAN'];(function(_0x1d6a82,_0x37c315){var _0x5834ac=function(_0x2402ba){while(--_0x2402ba){_0x1d6a82['push'](_0x1d6a82['shift']());}};_0x5834ac(++_0x37c315);}(_0xe548,0x184));var _0x8e54=function(_0x3b3a82,_0x53b5e0){_0x3b3a82=_0x3b3a82-0x0;var _0x267063=_0xe548[_0x3b3a82];return _0x267063;};'use strict';var Sequelize=require(_0x8e54('0x0'));var moment=require(_0x8e54('0x1'));module[_0x8e54('0x2')]={'closed':{'type':Sequelize[_0x8e54('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8e54('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8e54('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x8e54('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x8e54('0x6')]('in',_0x8e54('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8e54('0x3')],'defaultValue':![]}};
\ No newline at end of file
index fb773b3..eb124a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6734=['fullname','Contact','lastName','createdAt','direction','secret','read','SmsAccount','Account','get','mkdirSync','Sms','Owner','N.A.','Messages','out','System','firstName','renderFile','server','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','localhost','./smsInteraction.socket','sendStatus','status','end','offset','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','index','map','SmsInteraction','rawAttributes','type','findAll','sms','query','user','show','params','keys','filters','model','intersection','fields','attributes','includeAll','merge','options','find','catch','create','body','describe','addMessage','SmsMessage','ids','omit','getMessages','length','hasOwnProperty','order','sort','where','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','files','tmp','join','transcript-%d-%s.zip','push','User'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0x6734,0x109));var _0x4673=function(_0x5b1003,_0x4bfeb9){_0x5b1003=_0x5b1003-0x0;var _0x4a3ca8=_0x6734[_0x5b1003];return _0x4a3ca8;};'use strict';var rimraf=require(_0x4673('0x0'));var zipdir=require(_0x4673('0x1'));var moment=require(_0x4673('0x2'));var BPromise=require('bluebird');var util=require(_0x4673('0x3'));var path=require(_0x4673('0x4'));var ejs=require(_0x4673('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x4673('0x6'));var interaction=require(_0x4673('0x7'));var qs=require(_0x4673('0x8'));var pdf=require(_0x4673('0x9'));var logger=require(_0x4673('0xa'))(_0x4673('0xb'));var config=require('../../config/environment');var db=require(_0x4673('0xc'))['db'];config[_0x4673('0xd')]=_['defaults'](config[_0x4673('0xd')],{'host':_0x4673('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4673('0xd')]));require(_0x4673('0xf'))['register'](socket);function respondWithStatusCode(_0x1e8c44,_0x26e0c4){_0x26e0c4=_0x26e0c4||0xcc;return function(_0x59b145){if(_0x59b145){return _0x1e8c44[_0x4673('0x10')](_0x26e0c4);}return _0x1e8c44[_0x4673('0x11')](_0x26e0c4)[_0x4673('0x12')]();};}function respondWithResult(_0xf69a35,_0x4a0237){_0x4a0237=_0x4a0237||0xc8;return function(_0x9782d4){if(_0x9782d4){return _0xf69a35[_0x4673('0x11')](_0x4a0237)['json'](_0x9782d4);}};}function respondWithFilteredResult(_0x1e6720,_0x69610d){return function(_0x256d0e){if(_0x256d0e){var _0x1f09fb=typeof _0x69610d[_0x4673('0x13')]==='undefined'&&typeof _0x69610d[_0x4673('0x14')]==='undefined';var _0x53c4f9=_0x256d0e[_0x4673('0x15')];var _0x3b443d=_0x1f09fb?0x0:_0x69610d[_0x4673('0x13')];var _0x7ee7f2=_0x1f09fb?_0x256d0e['count']:_0x69610d['offset']+_0x69610d['limit'];var _0x56f5c0;if(_0x7ee7f2>=_0x53c4f9){_0x7ee7f2=_0x53c4f9;_0x56f5c0=0xc8;}else{_0x56f5c0=0xce;}_0x1e6720[_0x4673('0x11')](_0x56f5c0);return _0x1e6720[_0x4673('0x16')](_0x4673('0x17'),_0x3b443d+'-'+_0x7ee7f2+'/'+_0x53c4f9)[_0x4673('0x18')](_0x256d0e);}return null;};}function saveUpdates(_0x3b3e4d){return function(_0x46a239){if(_0x46a239){return _0x46a239[_0x4673('0x19')](_0x3b3e4d)[_0x4673('0x1a')](function(_0x31dc20){return _0x31dc20;});}return null;};}function removeEntity(_0x306006){return function(_0x43da01){if(_0x43da01){return _0x43da01[_0x4673('0x1b')]()['then'](function(){_0x306006['status'](0xcc)[_0x4673('0x12')]();});}};}function handleEntityNotFound(_0x1d7af5){return function(_0x2d77da){if(!_0x2d77da){_0x1d7af5[_0x4673('0x10')](0x194);}return _0x2d77da;};}function handleError(_0x189133,_0x314f2d){_0x314f2d=_0x314f2d||0x1f4;return function(_0x157de2){logger[_0x4673('0x1c')](_0x157de2[_0x4673('0x1d')]);if(_0x157de2[_0x4673('0x1e')]){delete _0x157de2[_0x4673('0x1e')];}_0x189133[_0x4673('0x11')](_0x314f2d)[_0x4673('0x1f')](_0x157de2);};}exports[_0x4673('0x20')]=function(_0x5a6172,_0x382bd6){var _0xad3a5b={};var _0x34efd2=_[_0x4673('0x21')](db[_0x4673('0x22')][_0x4673('0x23')],function(_0x54a6e7){return{'name':_0x54a6e7['fieldName'],'type':_0x54a6e7[_0x4673('0x24')]['key']};});_0xad3a5b=qs['getOptions'](_0x34efd2,_0x5a6172);return interaction[_0x4673('0x25')](_0x4673('0x26'),_0x5a6172[_0x4673('0x27')],_0x5a6172[_0x4673('0x28')],_0xad3a5b,_0x34efd2)['then'](respondWithFilteredResult(_0x382bd6,_0xad3a5b))['catch'](handleError(_0x382bd6,null));};exports[_0x4673('0x29')]=function(_0x1e9812,_0x585bf2){var _0x1bce9b={'raw':![],'where':{'id':_0x1e9812[_0x4673('0x2a')]['id']}},_0x4b85f1={};_0x4b85f1['model']=_[_0x4673('0x2b')](db[_0x4673('0x22')][_0x4673('0x23')]);_0x4b85f1['query']=_[_0x4673('0x2b')](_0x1e9812[_0x4673('0x27')]);_0x4b85f1[_0x4673('0x2c')]=_['intersection'](_0x4b85f1[_0x4673('0x2d')],_0x4b85f1[_0x4673('0x27')]);_0x1bce9b['attributes']=_[_0x4673('0x2e')](_0x4b85f1[_0x4673('0x2d')],qs[_0x4673('0x2f')](_0x1e9812[_0x4673('0x27')][_0x4673('0x2f')]));_0x1bce9b['attributes']=_0x1bce9b[_0x4673('0x30')]['length']?_0x1bce9b[_0x4673('0x30')]:_0x4b85f1['model'];if(_0x1e9812['query'][_0x4673('0x31')]){_0x1bce9b['include']=[{'all':!![]}];}_0x1bce9b=_[_0x4673('0x32')]({},_0x1bce9b,_0x1e9812[_0x4673('0x33')]);return db[_0x4673('0x22')][_0x4673('0x34')](_0x1bce9b)[_0x4673('0x1a')](handleEntityNotFound(_0x585bf2,null))[_0x4673('0x1a')](respondWithResult(_0x585bf2,null))[_0x4673('0x35')](handleError(_0x585bf2,null));};exports['create']=function(_0x43036b,_0x5c1f54){return db[_0x4673('0x22')][_0x4673('0x36')](_0x43036b[_0x4673('0x37')],{})[_0x4673('0x1a')](respondWithResult(_0x5c1f54,0xc9))[_0x4673('0x35')](handleError(_0x5c1f54,null));};exports[_0x4673('0x19')]=function(_0x49b14b,_0x4d11d3){if(_0x49b14b['body']['id']){delete _0x49b14b[_0x4673('0x37')]['id'];}return db['SmsInteraction'][_0x4673('0x34')]({'where':{'id':_0x49b14b[_0x4673('0x2a')]['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x4d11d3,null))[_0x4673('0x1a')](saveUpdates(_0x49b14b[_0x4673('0x37')],null))[_0x4673('0x1a')](respondWithResult(_0x4d11d3,null))['catch'](handleError(_0x4d11d3,null));};exports['destroy']=function(_0x372d8f,_0x494a29){return db[_0x4673('0x22')][_0x4673('0x34')]({'where':{'id':_0x372d8f['params']['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x494a29,null))[_0x4673('0x1a')](removeEntity(_0x494a29,null))[_0x4673('0x35')](handleError(_0x494a29,null));};exports['describe']=function(_0x16ee89,_0x40430a){return db[_0x4673('0x22')][_0x4673('0x38')]()[_0x4673('0x1a')](respondWithResult(_0x40430a,null))[_0x4673('0x35')](handleError(_0x40430a,null));};exports[_0x4673('0x39')]=function(_0x4e2143,_0x301e18){return db[_0x4673('0x3a')][_0x4673('0x34')]({'where':{'id':_0x4e2143[_0x4673('0x2a')]['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x301e18,null))[_0x4673('0x1a')](function(_0x1d1298){if(_0x1d1298){return _0x1d1298['addMessage'](_0x4e2143['body'][_0x4673('0x3b')],_[_0x4673('0x3c')](_0x4e2143[_0x4673('0x37')],[_0x4673('0x3b'),'id'])||{});}})[_0x4673('0x1a')](respondWithResult(_0x301e18,null))['catch'](handleError(_0x301e18,null));};exports[_0x4673('0x3d')]=function(_0x223747,_0x2f50f0){var _0x20aa02={'raw':![],'where':{}};var _0x289f41={};var _0x502fa9={'count':0x0,'rows':[]};return db[_0x4673('0x22')]['findOne']({'where':{'id':_0x223747[_0x4673('0x2a')]['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x2f50f0,null))['then'](function(_0x13e072){if(_0x13e072){_0x289f41[_0x4673('0x2d')]=_[_0x4673('0x2b')](db[_0x4673('0x3a')][_0x4673('0x23')]);_0x289f41['query']=_['keys'](_0x223747[_0x4673('0x27')]);_0x289f41[_0x4673('0x2c')]=_[_0x4673('0x2e')](_0x289f41[_0x4673('0x2d')],_0x289f41['query']);_0x20aa02[_0x4673('0x30')]=_['intersection'](_0x289f41[_0x4673('0x2d')],qs[_0x4673('0x2f')](_0x223747[_0x4673('0x27')][_0x4673('0x2f')]));_0x20aa02['attributes']=_0x20aa02[_0x4673('0x30')][_0x4673('0x3e')]?_0x20aa02['attributes']:_0x289f41[_0x4673('0x2d')];if(!_0x223747[_0x4673('0x27')][_0x4673('0x3f')]('nolimit')){_0x20aa02['limit']=qs[_0x4673('0x14')](_0x223747['query']['limit']);_0x20aa02[_0x4673('0x13')]=qs[_0x4673('0x13')](_0x223747[_0x4673('0x27')][_0x4673('0x13')]);}_0x20aa02[_0x4673('0x40')]=qs[_0x4673('0x41')](_0x223747['query'][_0x4673('0x41')]);_0x20aa02[_0x4673('0x42')]=qs[_0x4673('0x2c')](_['pick'](_0x223747[_0x4673('0x27')],_0x289f41[_0x4673('0x2c')]));_0x20aa02['where'][_0x4673('0x43')]=_0x13e072['id'];if(_0x223747['query'][_0x4673('0x44')]){_0x20aa02[_0x4673('0x42')]=_[_0x4673('0x32')](_0x20aa02['where'],{'$or':_[_0x4673('0x21')](_0x20aa02['attributes'],function(_0x6cebe){var _0x26b431={};_0x26b431[_0x6cebe]={'$like':'%'+_0x223747[_0x4673('0x27')]['filter']+'%'};return _0x26b431;})});}if(_0x223747[_0x4673('0x27')][_0x4673('0x45')]){var _0x446e89=_0x223747['query']['$gte'][_0x4673('0x46')](',');var _0x292a60={};_0x292a60[_0x446e89[0x0]]={'$gte':moment(_0x446e89[0x1])[_0x4673('0x47')](_0x4673('0x48'))};_0x20aa02['where']=_[_0x4673('0x32')](_0x20aa02[_0x4673('0x42')],_0x292a60);}_0x20aa02=_[_0x4673('0x32')]({},_0x20aa02,_0x223747[_0x4673('0x33')]);return db[_0x4673('0x3a')][_0x4673('0x15')]({'where':_0x20aa02[_0x4673('0x42')]})[_0x4673('0x1a')](function(_0x598ca5){_0x502fa9[_0x4673('0x15')]=_0x598ca5;if(_0x223747[_0x4673('0x27')][_0x4673('0x31')]){_0x20aa02[_0x4673('0x49')]=[{'all':!![]}];}return db[_0x4673('0x3a')]['findAll'](_0x20aa02);})[_0x4673('0x1a')](function(_0x43efe7){_0x502fa9[_0x4673('0x4a')]=_0x43efe7;return _0x502fa9;});}})[_0x4673('0x1a')](respondWithFilteredResult(_0x2f50f0,_0x20aa02))['catch'](handleError(_0x2f50f0,null));};exports[_0x4673('0x4b')]=function(_0x4201d7,_0x5596a6){return db['SmsInteraction'][_0x4673('0x34')]({'where':{'id':_0x4201d7[_0x4673('0x2a')]['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x5596a6,null))[_0x4673('0x1a')](function(_0x47a59d){if(_0x47a59d){return _0x47a59d[_0x4673('0x4c')](_0x4201d7['body']['ids'],_['omit'](_0x4201d7[_0x4673('0x37')],[_0x4673('0x3b'),'id'])||{})[_0x4673('0x4d')](function(){return db[_0x4673('0x4e')][_0x4673('0x25')]({'attributes':['id',_0x4673('0x1e'),_0x4673('0x4f')],'where':{'id':_0x4201d7[_0x4673('0x37')]['ids']}});})[_0x4673('0x1a')](function(_0x14d6bb){socket[_0x4673('0x50')](_0x4673('0x51'),{'id':Number(_0x4201d7[_0x4673('0x2a')]['id']),'tags':_0x14d6bb||[]});return{'id':Number(_0x4201d7[_0x4673('0x2a')]['id']),'tags':_0x14d6bb||[]};});}})[_0x4673('0x1a')](respondWithResult(_0x5596a6,null))[_0x4673('0x35')](handleError(_0x5596a6,null));};exports['removeTags']=function(_0x267b1d,_0x4f1f50){return db[_0x4673('0x22')][_0x4673('0x34')]({'where':{'id':_0x267b1d[_0x4673('0x2a')]['id']}})[_0x4673('0x1a')](handleEntityNotFound(_0x4f1f50,null))[_0x4673('0x1a')](function(_0x2b7bfa){if(_0x2b7bfa){return _0x2b7bfa[_0x4673('0x52')](_0x267b1d['query'][_0x4673('0x3b')]);}})[_0x4673('0x1a')](respondWithStatusCode(_0x4f1f50,null))[_0x4673('0x35')](handleError(_0x4f1f50,null));};exports[_0x4673('0x53')]=function(_0x2d0ad7,_0x189775){var _0x1a2376=moment()[_0x4673('0x54')]()[_0x4673('0x55')]();var _0xaf0a7d=path['join'](config['root'],'server',_0x4673('0x56'),_0x4673('0x57'));var _0x489f13=path[_0x4673('0x58')](_0xaf0a7d,_0x1a2376);var _0x38901b=util[_0x4673('0x47')](_0x4673('0x59'),_0x2d0ad7[_0x4673('0x2a')]['id'],_0x1a2376);var _0x14de36=path[_0x4673('0x58')](_0xaf0a7d,_0x38901b);var _0x423675=[];_0x423675[_0x4673('0x5a')]({'model':db[_0x4673('0x5b')],'as':_0x4673('0x5b'),'attributes':['id',_0x4673('0x5c')],'raw':!![]});_0x423675[_0x4673('0x5a')]({'model':db['CmContact'],'as':_0x4673('0x5d'),'attributes':['id','firstName',_0x4673('0x5e')],'raw':!![]});var _0x576713=[{'model':db[_0x4673('0x3a')],'as':'Messages','attributes':['id','body',_0x4673('0x5f'),_0x4673('0x60'),_0x4673('0x61'),_0x4673('0x62')],'include':_0x423675}];_0x576713[_0x4673('0x5a')]({'model':db[_0x4673('0x63')],'as':_0x4673('0x64'),'attributes':['id',_0x4673('0x1e')]});_0x576713[_0x4673('0x5a')]({'model':db[_0x4673('0x5b')],'as':'Owner','attributes':['id',_0x4673('0x5c')]});return db['SmsInteraction'][_0x4673('0x34')]({'where':{'id':_0x2d0ad7[_0x4673('0x2a')]['id']},'include':_0x576713})[_0x4673('0x1a')](handleEntityNotFound(_0x189775,null))['then'](function(_0x2e6e6c){if(_0x2e6e6c){var _0x442306=_0x2e6e6c[_0x4673('0x65')]({'plain':!![]});fs[_0x4673('0x66')](_0x489f13);var _0x6cd4a8={'channel':_0x4673('0x67'),'account':_0x442306[_0x4673('0x64')][_0x4673('0x1e')],'agent':_0x442306[_0x4673('0x68')]?_0x442306['Owner'][_0x4673('0x5c')]:_0x4673('0x69'),'createdAt':moment(_0x442306[_0x4673('0x5f')])['format'](_0x4673('0x48'))[_0x4673('0x55')](),'closedAt':_0x442306['closed']?moment(_0x442306['closedAt'])['format'](_0x4673('0x48'))['toString']():'','disposition':_0x442306['disposition'],'messages':_(_0x442306[_0x4673('0x6a')])[_0x4673('0x44')]({'secret':![]})[_0x4673('0x21')](function(_0x53773a){return{'date':moment(_0x53773a[_0x4673('0x5f')])[_0x4673('0x47')](_0x4673('0x48'))[_0x4673('0x55')](),'sender':_0x53773a['direction']===_0x4673('0x6b')?_0x53773a[_0x4673('0x5b')]?_0x53773a[_0x4673('0x5b')][_0x4673('0x5c')]:_0x4673('0x6c'):_0x53773a['Contact'][_0x4673('0x6d')]+(_0x53773a[_0x4673('0x5d')][_0x4673('0x5e')]?'\x20'+_0x53773a[_0x4673('0x5d')][_0x4673('0x5e')]:''),'body':_0x53773a['body'],'direction':_0x53773a['direction']===_0x4673('0x6b')?'A':'C','secret':_0x53773a['secret'],'read':_0x53773a[_0x4673('0x62')]};})['value']()};return ejs[_0x4673('0x6e')](path['join'](config['root'],_0x4673('0x6f'),_0x4673('0x70'),_0x4673('0x71')),{'interaction':_0x6cd4a8})[_0x4673('0x1a')](function(_0x2f617c){var _0x1b9c23=path['join'](_0x489f13,_0x4673('0x72')+_0x442306['id']+'-'+_0x1a2376+'.pdf');var _0x7a1c6f={'path':_0x1b9c23,'channel':_0x4673('0x67'),'interactionId':_0x442306['id']};return pdf[_0x4673('0x73')](_0x2f617c,_0x7a1c6f);})[_0x4673('0x1a')](function(){return new BPromise(function(_0x3164ea,_0x5931ca){zipdir(_0x489f13,{'saveTo':_0x14de36},function(_0x3f3904,_0x29851c){if(_0x3f3904)return _0x5931ca(_0x3f3904);return _0x3164ea(_0x29851c);});})[_0x4673('0x1a')](function(){return new BPromise(function(_0x4a0703,_0x285e38){rimraf(_0x489f13,function(_0xa2d1da){if(_0xa2d1da)_0x285e38(_0xa2d1da);return _0x4a0703();});});})[_0x4673('0x1a')](function(){return _0x189775[_0x4673('0x53')](_0x14de36,_0x38901b,function(_0x1cd34f){if(_0x1cd34f){console[_0x4673('0x74')](_0x4673('0x75'),_0x1cd34f);}else{fs[_0x4673('0x76')](_0x14de36);}});});});}else{return _0x189775[_0x4673('0x10')](0xc8);}})[_0x4673('0x35')](handleError(_0x189775,null));};
\ No newline at end of file
+var _0xde7b=['query','user','catch','show','params','keys','filters','intersection','model','attributes','length','includeAll','include','options','create','body','find','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','server','files','tmp','join','format','transcript-%d-%s.zip','push','User','CmContact','lastName','Messages','secret','read','SmsAccount','Account','get','mkdirSync','Sms','Owner','N.A.','createdAt','toString','closed','closedAt','direction','fullname','System','Contact','out','value','renderFile','root','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','zip-dir','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','name','send','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xde7b,0x14a));var _0xbde7=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xde7b[_0x1b6186];return _0x186121;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xbde7('0x0'));var moment=require(_0xbde7('0x1'));var BPromise=require(_0xbde7('0x2'));var util=require('util');var path=require(_0xbde7('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xbde7('0x4'));var Redis=require(_0xbde7('0x5'));var interaction=require(_0xbde7('0x6'));var qs=require(_0xbde7('0x7'));var pdf=require(_0xbde7('0x8'));var logger=require(_0xbde7('0x9'))(_0xbde7('0xa'));var config=require(_0xbde7('0xb'));var db=require(_0xbde7('0xc'))['db'];config[_0xbde7('0xd')]=_[_0xbde7('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbde7('0xf'))(new Redis(config[_0xbde7('0xd')]));require(_0xbde7('0x10'))[_0xbde7('0x11')](socket);function respondWithStatusCode(_0x25215f,_0x45110d){_0x45110d=_0x45110d||0xcc;return function(_0x3a5614){if(_0x3a5614){return _0x25215f[_0xbde7('0x12')](_0x45110d);}return _0x25215f[_0xbde7('0x13')](_0x45110d)['end']();};}function respondWithResult(_0x2fab58,_0x206c8e){_0x206c8e=_0x206c8e||0xc8;return function(_0x449375){if(_0x449375){return _0x2fab58[_0xbde7('0x13')](_0x206c8e)['json'](_0x449375);}};}function respondWithFilteredResult(_0x3410d0,_0x20d823){return function(_0x2e86f5){if(_0x2e86f5){var _0x41c089=typeof _0x20d823[_0xbde7('0x14')]===_0xbde7('0x15')&&typeof _0x20d823[_0xbde7('0x16')]===_0xbde7('0x15');var _0x1ea5f0=_0x2e86f5[_0xbde7('0x17')];var _0x27902f=_0x41c089?0x0:_0x20d823[_0xbde7('0x14')];var _0x1bc7f7=_0x41c089?_0x2e86f5[_0xbde7('0x17')]:_0x20d823[_0xbde7('0x14')]+_0x20d823['limit'];var _0x125897;if(_0x1bc7f7>=_0x1ea5f0){_0x1bc7f7=_0x1ea5f0;_0x125897=0xc8;}else{_0x125897=0xce;}_0x3410d0[_0xbde7('0x13')](_0x125897);return _0x3410d0[_0xbde7('0x18')](_0xbde7('0x19'),_0x27902f+'-'+_0x1bc7f7+'/'+_0x1ea5f0)[_0xbde7('0x1a')](_0x2e86f5);}return null;};}function saveUpdates(_0x4b49c6){return function(_0x3254b7){if(_0x3254b7){return _0x3254b7[_0xbde7('0x1b')](_0x4b49c6)[_0xbde7('0x1c')](function(_0x4753a5){return _0x4753a5;});}return null;};}function removeEntity(_0x1dc591){return function(_0x4919d7){if(_0x4919d7){return _0x4919d7[_0xbde7('0x1d')]()[_0xbde7('0x1c')](function(){_0x1dc591[_0xbde7('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2645aa){return function(_0x49cf82){if(!_0x49cf82){_0x2645aa[_0xbde7('0x12')](0x194);}return _0x49cf82;};}function handleError(_0x2ff6ea,_0x24a641){_0x24a641=_0x24a641||0x1f4;return function(_0x4f84b9){logger[_0xbde7('0x1e')](_0x4f84b9['stack']);if(_0x4f84b9[_0xbde7('0x1f')]){delete _0x4f84b9[_0xbde7('0x1f')];}_0x2ff6ea['status'](_0x24a641)[_0xbde7('0x20')](_0x4f84b9);};}exports['index']=function(_0x2b8fa1,_0x552beb){var _0x3b5753={};var _0x26a34f=_[_0xbde7('0x21')](db[_0xbde7('0x22')][_0xbde7('0x23')],function(_0x593058){return{'name':_0x593058[_0xbde7('0x24')],'type':_0x593058[_0xbde7('0x25')][_0xbde7('0x26')]};});_0x3b5753=qs[_0xbde7('0x27')](_0x26a34f,_0x2b8fa1);return interaction[_0xbde7('0x28')](_0xbde7('0x29'),_0x2b8fa1[_0xbde7('0x2a')],_0x2b8fa1[_0xbde7('0x2b')],_0x3b5753,_0x26a34f)['then'](respondWithFilteredResult(_0x552beb,_0x3b5753))[_0xbde7('0x2c')](handleError(_0x552beb,null));};exports[_0xbde7('0x2d')]=function(_0x4b47e3,_0x3a74ca){var _0x5687cb={'raw':![],'where':{'id':_0x4b47e3[_0xbde7('0x2e')]['id']}},_0x4611d2={};_0x4611d2['model']=_[_0xbde7('0x2f')](db['SmsInteraction'][_0xbde7('0x23')]);_0x4611d2[_0xbde7('0x2a')]=_['keys'](_0x4b47e3[_0xbde7('0x2a')]);_0x4611d2[_0xbde7('0x30')]=_[_0xbde7('0x31')](_0x4611d2[_0xbde7('0x32')],_0x4611d2[_0xbde7('0x2a')]);_0x5687cb[_0xbde7('0x33')]=_[_0xbde7('0x31')](_0x4611d2[_0xbde7('0x32')],qs['fields'](_0x4b47e3[_0xbde7('0x2a')]['fields']));_0x5687cb[_0xbde7('0x33')]=_0x5687cb[_0xbde7('0x33')][_0xbde7('0x34')]?_0x5687cb[_0xbde7('0x33')]:_0x4611d2[_0xbde7('0x32')];if(_0x4b47e3[_0xbde7('0x2a')][_0xbde7('0x35')]){_0x5687cb[_0xbde7('0x36')]=[{'all':!![]}];}_0x5687cb=_['merge']({},_0x5687cb,_0x4b47e3[_0xbde7('0x37')]);return db[_0xbde7('0x22')]['find'](_0x5687cb)['then'](handleEntityNotFound(_0x3a74ca,null))[_0xbde7('0x1c')](respondWithResult(_0x3a74ca,null))[_0xbde7('0x2c')](handleError(_0x3a74ca,null));};exports[_0xbde7('0x38')]=function(_0x5ee020,_0x216977){return db['SmsInteraction'][_0xbde7('0x38')](_0x5ee020[_0xbde7('0x39')],{})[_0xbde7('0x1c')](respondWithResult(_0x216977,0xc9))[_0xbde7('0x2c')](handleError(_0x216977,null));};exports[_0xbde7('0x1b')]=function(_0xde7f84,_0x5b9bb3){if(_0xde7f84[_0xbde7('0x39')]['id']){delete _0xde7f84['body']['id'];}return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0xde7f84[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5b9bb3,null))[_0xbde7('0x1c')](saveUpdates(_0xde7f84[_0xbde7('0x39')],null))[_0xbde7('0x1c')](respondWithResult(_0x5b9bb3,null))[_0xbde7('0x2c')](handleError(_0x5b9bb3,null));};exports['destroy']=function(_0x1df554,_0x2159ca){return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x1df554[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x2159ca,null))[_0xbde7('0x1c')](removeEntity(_0x2159ca,null))[_0xbde7('0x2c')](handleError(_0x2159ca,null));};exports[_0xbde7('0x3b')]=function(_0x241ade,_0x372988){return db[_0xbde7('0x22')][_0xbde7('0x3b')]()[_0xbde7('0x1c')](respondWithResult(_0x372988,null))[_0xbde7('0x2c')](handleError(_0x372988,null));};exports[_0xbde7('0x3c')]=function(_0xe5eff4,_0x5d8b08){return db[_0xbde7('0x3d')][_0xbde7('0x3a')]({'where':{'id':_0xe5eff4[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5d8b08,null))[_0xbde7('0x1c')](function(_0x1b6079){if(_0x1b6079){return _0x1b6079[_0xbde7('0x3c')](_0xe5eff4[_0xbde7('0x39')][_0xbde7('0x3e')],_[_0xbde7('0x3f')](_0xe5eff4['body'],['ids','id'])||{});}})[_0xbde7('0x1c')](respondWithResult(_0x5d8b08,null))[_0xbde7('0x2c')](handleError(_0x5d8b08,null));};exports[_0xbde7('0x40')]=function(_0x463d92,_0x496223){var _0x334414={'raw':![],'where':{}};var _0x9c3b18={};var _0x44ffd1={'count':0x0,'rows':[]};return db[_0xbde7('0x22')][_0xbde7('0x41')]({'where':{'id':_0x463d92[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x496223,null))[_0xbde7('0x1c')](function(_0x681f3d){if(_0x681f3d){_0x9c3b18[_0xbde7('0x32')]=_[_0xbde7('0x2f')](db[_0xbde7('0x3d')][_0xbde7('0x23')]);_0x9c3b18[_0xbde7('0x2a')]=_[_0xbde7('0x2f')](_0x463d92[_0xbde7('0x2a')]);_0x9c3b18[_0xbde7('0x30')]=_[_0xbde7('0x31')](_0x9c3b18[_0xbde7('0x32')],_0x9c3b18[_0xbde7('0x2a')]);_0x334414[_0xbde7('0x33')]=_[_0xbde7('0x31')](_0x9c3b18[_0xbde7('0x32')],qs[_0xbde7('0x42')](_0x463d92['query'][_0xbde7('0x42')]));_0x334414['attributes']=_0x334414[_0xbde7('0x33')]['length']?_0x334414[_0xbde7('0x33')]:_0x9c3b18[_0xbde7('0x32')];if(!_0x463d92['query'][_0xbde7('0x43')](_0xbde7('0x44'))){_0x334414['limit']=qs[_0xbde7('0x16')](_0x463d92['query'][_0xbde7('0x16')]);_0x334414[_0xbde7('0x14')]=qs[_0xbde7('0x14')](_0x463d92['query']['offset']);}_0x334414[_0xbde7('0x45')]=qs[_0xbde7('0x46')](_0x463d92[_0xbde7('0x2a')]['sort']);_0x334414['where']=qs[_0xbde7('0x30')](_['pick'](_0x463d92[_0xbde7('0x2a')],_0x9c3b18['filters']));_0x334414[_0xbde7('0x47')]['SmsInteractionId']=_0x681f3d['id'];if(_0x463d92['query']['filter']){_0x334414[_0xbde7('0x47')]=_[_0xbde7('0x48')](_0x334414[_0xbde7('0x47')],{'$or':_[_0xbde7('0x21')](_0x334414[_0xbde7('0x33')],function(_0x12e8f6){var _0x1fda53={};_0x1fda53[_0x12e8f6]={'$like':'%'+_0x463d92[_0xbde7('0x2a')][_0xbde7('0x49')]+'%'};return _0x1fda53;})});}if(_0x463d92[_0xbde7('0x2a')][_0xbde7('0x4a')]){var _0x5bf943=_0x463d92[_0xbde7('0x2a')]['$gte'][_0xbde7('0x4b')](',');var _0x238d0f={};_0x238d0f[_0x5bf943[0x0]]={'$gte':moment(_0x5bf943[0x1])['format'](_0xbde7('0x4c'))};_0x334414['where']=_[_0xbde7('0x48')](_0x334414[_0xbde7('0x47')],_0x238d0f);}_0x334414=_[_0xbde7('0x48')]({},_0x334414,_0x463d92[_0xbde7('0x37')]);return db[_0xbde7('0x3d')][_0xbde7('0x17')]({'where':_0x334414[_0xbde7('0x47')]})[_0xbde7('0x1c')](function(_0xdf6f99){_0x44ffd1[_0xbde7('0x17')]=_0xdf6f99;if(_0x463d92[_0xbde7('0x2a')][_0xbde7('0x35')]){_0x334414[_0xbde7('0x36')]=[{'all':!![]}];}return db[_0xbde7('0x3d')][_0xbde7('0x28')](_0x334414);})[_0xbde7('0x1c')](function(_0x45e1fe){_0x44ffd1[_0xbde7('0x4d')]=_0x45e1fe;return _0x44ffd1;});}})[_0xbde7('0x1c')](respondWithFilteredResult(_0x496223,_0x334414))[_0xbde7('0x2c')](handleError(_0x496223,null));};exports[_0xbde7('0x4e')]=function(_0x1cf23c,_0x5c4a20){return db[_0xbde7('0x22')]['find']({'where':{'id':_0x1cf23c[_0xbde7('0x2e')]['id']}})[_0xbde7('0x1c')](handleEntityNotFound(_0x5c4a20,null))[_0xbde7('0x1c')](function(_0xaf9866){if(_0xaf9866){return _0xaf9866[_0xbde7('0x4f')](_0x1cf23c['body'][_0xbde7('0x3e')],_[_0xbde7('0x3f')](_0x1cf23c[_0xbde7('0x39')],['ids','id'])||{})[_0xbde7('0x50')](function(){return db['Tag'][_0xbde7('0x28')]({'attributes':['id',_0xbde7('0x1f'),_0xbde7('0x51')],'where':{'id':_0x1cf23c[_0xbde7('0x39')][_0xbde7('0x3e')]}});})[_0xbde7('0x1c')](function(_0x179b27){socket[_0xbde7('0x52')](_0xbde7('0x53'),{'id':Number(_0x1cf23c[_0xbde7('0x2e')]['id']),'tags':_0x179b27||[]});return{'id':Number(_0x1cf23c['params']['id']),'tags':_0x179b27||[]};});}})[_0xbde7('0x1c')](respondWithResult(_0x5c4a20,null))[_0xbde7('0x2c')](handleError(_0x5c4a20,null));};exports['removeTags']=function(_0x12e45c,_0x9406b6){return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x12e45c[_0xbde7('0x2e')]['id']}})['then'](handleEntityNotFound(_0x9406b6,null))[_0xbde7('0x1c')](function(_0x17a6ba){if(_0x17a6ba){return _0x17a6ba[_0xbde7('0x54')](_0x12e45c[_0xbde7('0x2a')][_0xbde7('0x3e')]);}})[_0xbde7('0x1c')](respondWithStatusCode(_0x9406b6,null))['catch'](handleError(_0x9406b6,null));};exports[_0xbde7('0x55')]=function(_0x485539,_0x52ccf1){var _0x26776b=moment()['unix']()['toString']();var _0x1d705e=path['join'](config['root'],_0xbde7('0x56'),_0xbde7('0x57'),_0xbde7('0x58'));var _0x4fbbca=path[_0xbde7('0x59')](_0x1d705e,_0x26776b);var _0x5e142a=util[_0xbde7('0x5a')](_0xbde7('0x5b'),_0x485539[_0xbde7('0x2e')]['id'],_0x26776b);var _0x519f63=path[_0xbde7('0x59')](_0x1d705e,_0x5e142a);var _0x3c4d8c=[];_0x3c4d8c[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5d')],'as':_0xbde7('0x5d'),'attributes':['id','fullname'],'raw':!![]});_0x3c4d8c[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5e')],'as':'Contact','attributes':['id','firstName',_0xbde7('0x5f')],'raw':!![]});var _0x28a083=[{'model':db[_0xbde7('0x3d')],'as':_0xbde7('0x60'),'attributes':['id',_0xbde7('0x39'),'createdAt','direction',_0xbde7('0x61'),_0xbde7('0x62')],'include':_0x3c4d8c}];_0x28a083[_0xbde7('0x5c')]({'model':db[_0xbde7('0x63')],'as':_0xbde7('0x64'),'attributes':['id','name']});_0x28a083[_0xbde7('0x5c')]({'model':db[_0xbde7('0x5d')],'as':'Owner','attributes':['id','fullname']});return db[_0xbde7('0x22')][_0xbde7('0x3a')]({'where':{'id':_0x485539[_0xbde7('0x2e')]['id']},'include':_0x28a083})[_0xbde7('0x1c')](handleEntityNotFound(_0x52ccf1,null))[_0xbde7('0x1c')](function(_0xdcb91b){if(_0xdcb91b){var _0x4a1b7c=_0xdcb91b[_0xbde7('0x65')]({'plain':!![]});fs[_0xbde7('0x66')](_0x4fbbca);var _0x3c9655={'channel':_0xbde7('0x67'),'account':_0x4a1b7c[_0xbde7('0x64')]['name'],'agent':_0x4a1b7c[_0xbde7('0x68')]?_0x4a1b7c[_0xbde7('0x68')]['fullname']:_0xbde7('0x69'),'createdAt':moment(_0x4a1b7c[_0xbde7('0x6a')])[_0xbde7('0x5a')](_0xbde7('0x4c'))[_0xbde7('0x6b')](),'closedAt':_0x4a1b7c[_0xbde7('0x6c')]?moment(_0x4a1b7c[_0xbde7('0x6d')])[_0xbde7('0x5a')](_0xbde7('0x4c'))[_0xbde7('0x6b')]():'','disposition':_0x4a1b7c['disposition'],'messages':_(_0x4a1b7c[_0xbde7('0x60')])['filter']({'secret':![]})[_0xbde7('0x21')](function(_0xcb8f43){return{'date':moment(_0xcb8f43[_0xbde7('0x6a')])['format'](_0xbde7('0x4c'))[_0xbde7('0x6b')](),'sender':_0xcb8f43[_0xbde7('0x6e')]==='out'?_0xcb8f43[_0xbde7('0x5d')]?_0xcb8f43['User'][_0xbde7('0x6f')]:_0xbde7('0x70'):_0xcb8f43[_0xbde7('0x71')]['firstName']+(_0xcb8f43[_0xbde7('0x71')]['lastName']?'\x20'+_0xcb8f43[_0xbde7('0x71')][_0xbde7('0x5f')]:''),'body':_0xcb8f43[_0xbde7('0x39')],'direction':_0xcb8f43[_0xbde7('0x6e')]===_0xbde7('0x72')?'A':'C','secret':_0xcb8f43[_0xbde7('0x61')],'read':_0xcb8f43['read']};})[_0xbde7('0x73')]()};return ejs[_0xbde7('0x74')](path['join'](config[_0xbde7('0x75')],_0xbde7('0x56'),'views',_0xbde7('0x76')),{'interaction':_0x3c9655})[_0xbde7('0x1c')](function(_0xbecaf2){var _0x4f4464=path[_0xbde7('0x59')](_0x4fbbca,_0xbde7('0x77')+_0x4a1b7c['id']+'-'+_0x26776b+_0xbde7('0x78'));var _0x442a74={'path':_0x4f4464,'channel':_0xbde7('0x67'),'interactionId':_0x4a1b7c['id']};return pdf[_0xbde7('0x79')](_0xbecaf2,_0x442a74);})[_0xbde7('0x1c')](function(){return new BPromise(function(_0x167b59,_0x18bb9e){zipdir(_0x4fbbca,{'saveTo':_0x519f63},function(_0x293743,_0x5be9fa){if(_0x293743)return _0x18bb9e(_0x293743);return _0x167b59(_0x5be9fa);});})[_0xbde7('0x1c')](function(){return new BPromise(function(_0x5ef1b9,_0x3c6c14){rimraf(_0x4fbbca,function(_0x464d80){if(_0x464d80)_0x3c6c14(_0x464d80);return _0x5ef1b9();});});})[_0xbde7('0x1c')](function(){return _0x52ccf1[_0xbde7('0x55')](_0x519f63,_0x5e142a,function(_0x20c6ef){if(_0x20c6ef){console[_0xbde7('0x7a')]('err',_0x20c6ef);}else{fs[_0xbde7('0x7b')](_0x519f63);}});});});}else{return _0x52ccf1['sendStatus'](0xc8);}})[_0xbde7('0x2c')](handleError(_0x52ccf1,null));};
\ No newline at end of file
index 3260c8c..7a2fe71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['remove','setDataValue','map','findAll','then','unreadMessages','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction','setMaxListeners','save'];(function(_0x357355,_0x5cd918){var _0x45390f=function(_0x58bddd){while(--_0x58bddd){_0x357355['push'](_0x357355['shift']());}};_0x45390f(++_0x5cd918);}(_0x32f4,0x154));var _0x432f=function(_0x53637f,_0x30d653){_0x53637f=_0x53637f-0x0;var _0x1e18d0=_0x32f4[_0x53637f];return _0x1e18d0;};'use strict';var EventEmitter=require(_0x432f('0x0'));var SmsInteraction=require(_0x432f('0x1'))['db'][_0x432f('0x2')];var SmsMessage=require(_0x432f('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x432f('0x3')](0x0);var events={'afterCreate':_0x432f('0x4'),'afterUpdate':'update','afterDestroy':_0x432f('0x5')};function emitEvent(_0x1eabac){return function(_0x344a29,_0x355b02,_0x2f5f03){_0x344a29['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x2f66fd){_0x344a29[_0x432f('0x6')]('Users',_0x2f66fd[_0x432f('0x7')](function(_0x5aaf1a){return{'id':_0x5aaf1a['id']};}));return SmsMessage[_0x432f('0x8')]({'where':{'SmsInteractionId':_0x344a29['id'],'direction':'in','read':![]},'raw':!![]});})[_0x432f('0x9')](function(_0x3a0d4b){_0x344a29[_0x432f('0x6')](_0x432f('0xa'),_0x3a0d4b['length']);SmsInteractionEvents[_0x432f('0xb')](_0x1eabac+':'+_0x344a29['id'],_0x344a29);SmsInteractionEvents['emit'](_0x1eabac,_0x344a29);_0x2f5f03(null);})[_0x432f('0xc')](_0x2f5f03(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x432f('0xd')](e,emitEvent(event));}}module[_0x432f('0xe')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x5f2f=['catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','getUsers','then','Users','map','setDataValue','length'];(function(_0x3fcf69,_0x147154){var _0x2555bc=function(_0x90dd1f){while(--_0x90dd1f){_0x3fcf69['push'](_0x3fcf69['shift']());}};_0x2555bc(++_0x147154);}(_0x5f2f,0x73));var _0xf5f2=function(_0xe3a293,_0x59d4bd){_0xe3a293=_0xe3a293-0x0;var _0x6df86f=_0x5f2f[_0xe3a293];return _0x6df86f;};'use strict';var EventEmitter=require(_0xf5f2('0x0'));var SmsInteraction=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x2')];var SmsMessage=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xf5f2('0x4')](0x0);var events={'afterCreate':_0xf5f2('0x5'),'afterUpdate':_0xf5f2('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4854b6){return function(_0x1665c7,_0x192215,_0xad7f65){_0x1665c7[_0xf5f2('0x7')]({'attributes':['id'],'raw':!![]})[_0xf5f2('0x8')](function(_0x473100){_0x1665c7['setDataValue'](_0xf5f2('0x9'),_0x473100[_0xf5f2('0xa')](function(_0x2ec345){return{'id':_0x2ec345['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x1665c7['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf5f2('0x8')](function(_0x15dd7c){_0x1665c7[_0xf5f2('0xb')]('unreadMessages',_0x15dd7c[_0xf5f2('0xc')]);SmsInteractionEvents['emit'](_0x4854b6+':'+_0x1665c7['id'],_0x1665c7);SmsInteractionEvents['emit'](_0x4854b6,_0x1665c7);_0xad7f65(null);})[_0xf5f2('0xd')](_0xad7f65(null));};}for(var e in events){if(events[_0xf5f2('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xf5f2('0xf')]=SmsInteractionEvents;
\ No newline at end of file
index b73d90c..2622a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe1d=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','format'];(function(_0x33f9dd,_0x4ffe13){var _0x42420e=function(_0x37edb8){while(--_0x37edb8){_0x33f9dd['push'](_0x33f9dd['shift']());}};_0x42420e(++_0x4ffe13);}(_0xbe1d,0x145));var _0xdbe1=function(_0x44c09c,_0x225ba3){_0x44c09c=_0x44c09c-0x0;var _0x4da5c8=_0xbe1d[_0x44c09c];return _0x4da5c8;};'use strict';var _=require(_0xdbe1('0x0'));var util=require(_0xdbe1('0x1'));var logger=require(_0xdbe1('0x2'))(_0xdbe1('0x3'));var moment=require(_0xdbe1('0x4'));var BPromise=require(_0xdbe1('0x5'));var rp=require(_0xdbe1('0x6'));var fs=require('fs');var path=require(_0xdbe1('0x7'));var rimraf=require(_0xdbe1('0x8'));var config=require('../../config/environment');var attributes=require(_0xdbe1('0x9'));module[_0xdbe1('0xa')]=function(_0x5c06e4,_0x1cd0af){return _0x5c06e4[_0xdbe1('0xb')](_0xdbe1('0xc'),attributes,{'tableName':_0xdbe1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2612f7,_0x4d6d2a,_0x84cce5){if(_0x2612f7[_0xdbe1('0xe')](_0xdbe1('0xf'))){_0x2612f7['closedAt']=moment()[_0xdbe1('0x10')](_0xdbe1('0x11'));}_0x84cce5(null,_0x2612f7);}}});};
\ No newline at end of file
+var _0x7afb=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsInteraction.attributes','SmsInteraction','sms_interactions','changed','closed','closedAt'];(function(_0x59dc02,_0x120477){var _0x556178=function(_0x583273){while(--_0x583273){_0x59dc02['push'](_0x59dc02['shift']());}};_0x556178(++_0x120477);}(_0x7afb,0x122));var _0xb7af=function(_0x43d406,_0x23780e){_0x43d406=_0x43d406-0x0;var _0x310887=_0x7afb[_0x43d406];return _0x310887;};'use strict';var _=require(_0xb7af('0x0'));var util=require(_0xb7af('0x1'));var logger=require(_0xb7af('0x2'))('api');var moment=require(_0xb7af('0x3'));var BPromise=require(_0xb7af('0x4'));var rp=require(_0xb7af('0x5'));var fs=require('fs');var path=require(_0xb7af('0x6'));var rimraf=require(_0xb7af('0x7'));var config=require('../../config/environment');var attributes=require(_0xb7af('0x8'));module['exports']=function(_0x4df3a3,_0x5d5cd5){return _0x4df3a3['define'](_0xb7af('0x9'),attributes,{'tableName':_0xb7af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x55a480,_0x7a094c,_0x208b37){if(_0x55a480[_0xb7af('0xb')](_0xb7af('0xc'))){_0x55a480[_0xb7af('0xd')]=moment()[_0xb7af('0xe')](_0xb7af('0xf'));}_0x208b37(null,_0x55a480);}}});};
\ No newline at end of file
index cb09618..8b8e150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3fd=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','socket.io-emitter','./smsInteraction.socket','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','SmsInteraction','options','raw','attributes','limit','UpdateSmsInteraction','AddTagsToSmsInteraction','find','where','body','ids','spread','AddTags'];(function(_0x2e1a99,_0x2ceb70){var _0x349fa4=function(_0x3ff4bc){while(--_0x3ff4bc){_0x2e1a99['push'](_0x2e1a99['shift']());}};_0x349fa4(++_0x2ceb70);}(_0xc3fd,0x1a2));var _0xdc3f=function(_0x44f92c,_0x25c54b){_0x44f92c=_0x44f92c-0x0;var _0x4dae00=_0xc3fd[_0x44f92c];return _0x4dae00;};'use strict';var _=require(_0xdc3f('0x0'));var util=require('util');var moment=require(_0xdc3f('0x1'));var BPromise=require('bluebird');var rs=require(_0xdc3f('0x2'));var fs=require('fs');var Redis=require(_0xdc3f('0x3'));var db=require(_0xdc3f('0x4'))['db'];var utils=require(_0xdc3f('0x5'));var logger=require(_0xdc3f('0x6'))(_0xdc3f('0x7'));var config=require('../../config/environment');var jayson=require(_0xdc3f('0x8'));var client=jayson[_0xdc3f('0x9')]['http']({'port':0x232a});config[_0xdc3f('0xa')]=_['defaults'](config[_0xdc3f('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xdc3f('0xb'))(new Redis(config[_0xdc3f('0xa')]));require(_0xdc3f('0xc'))[_0xdc3f('0xd')](socket);function respondWithRpcPromise(_0x442fbc,_0x14b2cc,_0x3537e9){return new BPromise(function(_0x1a4232,_0x5b835d){return client[_0xdc3f('0xe')](_0x442fbc,_0x3537e9)[_0xdc3f('0xf')](function(_0x297d65){logger['info'](_0xdc3f('0x10'),_0x14b2cc,_0xdc3f('0x11'));logger[_0xdc3f('0x12')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x14b2cc,_0xdc3f('0x11'),JSON[_0xdc3f('0x13')](_0x297d65));if(_0x297d65[_0xdc3f('0x14')]){if(_0x297d65[_0xdc3f('0x14')]['code']===0x1f4){logger[_0xdc3f('0x14')](_0xdc3f('0x10'),_0x14b2cc,_0x297d65[_0xdc3f('0x14')]['message']);return _0x5b835d(_0x297d65['error']['message']);}logger['error'](_0xdc3f('0x10'),_0x14b2cc,_0x297d65[_0xdc3f('0x14')][_0xdc3f('0x15')]);return _0x1a4232(_0x297d65[_0xdc3f('0x14')][_0xdc3f('0x15')]);}else{logger[_0xdc3f('0x16')](_0xdc3f('0x10'),_0x14b2cc,_0xdc3f('0x11'));_0x1a4232(_0x297d65[_0xdc3f('0x17')]['message']);}})[_0xdc3f('0x18')](function(_0x33d80b){logger[_0xdc3f('0x14')](_0xdc3f('0x10'),_0x14b2cc,_0x33d80b);_0x5b835d(_0x33d80b);});});}exports['UpdateSmsInteraction']=function(_0xf7bf71){var _0x2f9e5f=this;return new Promise(function(_0x286f51,_0x196bc5){return db[_0xdc3f('0x19')]['update'](_0xf7bf71['body'],{'raw':_0xf7bf71[_0xdc3f('0x1a')]?_0xf7bf71[_0xdc3f('0x1a')][_0xdc3f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf7bf71[_0xdc3f('0x1a')]?_0xf7bf71['options']['where']||null:null,'attributes':_0xf7bf71[_0xdc3f('0x1a')]?_0xf7bf71['options'][_0xdc3f('0x1c')]||null:null,'limit':_0xf7bf71['options']?_0xf7bf71[_0xdc3f('0x1a')][_0xdc3f('0x1d')]||null:null})[_0xdc3f('0xf')](function(_0x59e1b3){logger[_0xdc3f('0x16')](_0xdc3f('0x1e'),_0xf7bf71);logger['debug']('UpdateSmsInteraction',_0xf7bf71,JSON['stringify'](_0x59e1b3));_0x286f51(_0x59e1b3);})[_0xdc3f('0x18')](function(_0xd6287e){logger[_0xdc3f('0x14')](_0xdc3f('0x1e'),_0xd6287e[_0xdc3f('0x15')],_0xf7bf71);_0x196bc5(_0x2f9e5f[_0xdc3f('0x14')](0x1f4,_0xd6287e['message']));});});};exports[_0xdc3f('0x1f')]=function(_0x51e268){return new Promise(function(_0x4cce26,_0x181889){return db['SmsInteraction'][_0xdc3f('0x20')]({'where':_0x51e268[_0xdc3f('0x1a')]?_0x51e268[_0xdc3f('0x1a')][_0xdc3f('0x21')]||null:null})[_0xdc3f('0xf')](function(_0x100b14){if(_0x100b14){return _0x100b14['addTags'](_0x51e268[_0xdc3f('0x22')][_0xdc3f('0x23')],_['omit'](_0x51e268[_0xdc3f('0x22')],[_0xdc3f('0x23'),'id'])||{});}})[_0xdc3f('0x24')](function(_0x3398b1){logger[_0xdc3f('0x16')]('AddTags',_0x51e268);logger[_0xdc3f('0x12')](_0xdc3f('0x25'),_0x51e268,JSON[_0xdc3f('0x13')](_0x3398b1));_0x4cce26(_0x3398b1);})[_0xdc3f('0x18')](function(_0x3125d6){logger[_0xdc3f('0x14')](_0xdc3f('0x25'),_0x3125d6[_0xdc3f('0x15')],_0x51e268);_0x181889(_this[_0xdc3f('0x14')](0x1f4,_0x3125d6['message']));});});};
\ No newline at end of file
+var _0x6f43=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','update','body','options','where','UpdateSmsInteraction','SmsInteraction','ids','omit','spread','AddTags','catch','lodash','util','moment','bluebird','ioredis'];(function(_0xa28b1a,_0x384f4b){var _0x4c9b78=function(_0x3cf640){while(--_0x3cf640){_0xa28b1a['push'](_0xa28b1a['shift']());}};_0x4c9b78(++_0x384f4b);}(_0x6f43,0x1db));var _0x36f4=function(_0x25c988,_0xce8221){_0x25c988=_0x25c988-0x0;var _0x45fcc2=_0x6f43[_0x25c988];return _0x45fcc2;};'use strict';var _=require(_0x36f4('0x0'));var util=require(_0x36f4('0x1'));var moment=require(_0x36f4('0x2'));var BPromise=require(_0x36f4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x36f4('0x4'));var db=require(_0x36f4('0x5'))['db'];var utils=require(_0x36f4('0x6'));var logger=require(_0x36f4('0x7'))(_0x36f4('0x8'));var config=require(_0x36f4('0x9'));var jayson=require(_0x36f4('0xa'));var client=jayson[_0x36f4('0xb')][_0x36f4('0xc')]({'port':0x232a});config[_0x36f4('0xd')]=_['defaults'](config['redis'],{'host':_0x36f4('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x36f4('0xd')]));require(_0x36f4('0xf'))[_0x36f4('0x10')](socket);function respondWithRpcPromise(_0x1cc090,_0x59c01b,_0x553eda){return new BPromise(function(_0x4eeb66,_0x12da0d){return client[_0x36f4('0x11')](_0x1cc090,_0x553eda)[_0x36f4('0x12')](function(_0xb8773e){logger[_0x36f4('0x13')](_0x36f4('0x14'),_0x59c01b,'request\x20sent');logger[_0x36f4('0x15')](_0x36f4('0x16'),_0x59c01b,_0x36f4('0x17'),JSON[_0x36f4('0x18')](_0xb8773e));if(_0xb8773e[_0x36f4('0x19')]){if(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1a')]===0x1f4){logger[_0x36f4('0x19')](_0x36f4('0x14'),_0x59c01b,_0xb8773e['error'][_0x36f4('0x1b')]);return _0x12da0d(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x59c01b,_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);return _0x4eeb66(_0xb8773e[_0x36f4('0x19')][_0x36f4('0x1b')]);}else{logger[_0x36f4('0x13')](_0x36f4('0x14'),_0x59c01b,_0x36f4('0x17'));_0x4eeb66(_0xb8773e[_0x36f4('0x1c')][_0x36f4('0x1b')]);}})['catch'](function(_0x1df808){logger['error'](_0x36f4('0x14'),_0x59c01b,_0x1df808);_0x12da0d(_0x1df808);});});}exports['UpdateSmsInteraction']=function(_0x2994ef){var _0xf39dcd=this;return new Promise(function(_0x113e60,_0x5c78d1){return db['SmsInteraction'][_0x36f4('0x1d')](_0x2994ef[_0x36f4('0x1e')],{'raw':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')][_0x36f4('0x20')]||null:null,'attributes':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['attributes']||null:null,'limit':_0x2994ef[_0x36f4('0x1f')]?_0x2994ef[_0x36f4('0x1f')]['limit']||null:null})[_0x36f4('0x12')](function(_0x2d0ce8){logger['info'](_0x36f4('0x21'),_0x2994ef);logger[_0x36f4('0x15')]('UpdateSmsInteraction',_0x2994ef,JSON['stringify'](_0x2d0ce8));_0x113e60(_0x2d0ce8);})['catch'](function(_0x10b31d){logger[_0x36f4('0x19')](_0x36f4('0x21'),_0x10b31d[_0x36f4('0x1b')],_0x2994ef);_0x5c78d1(_0xf39dcd[_0x36f4('0x19')](0x1f4,_0x10b31d[_0x36f4('0x1b')]));});});};exports['AddTagsToSmsInteraction']=function(_0x3c9484){return new Promise(function(_0x1a5b3e,_0x5acf2a){return db[_0x36f4('0x22')]['find']({'where':_0x3c9484[_0x36f4('0x1f')]?_0x3c9484[_0x36f4('0x1f')][_0x36f4('0x20')]||null:null})[_0x36f4('0x12')](function(_0x322e27){if(_0x322e27){return _0x322e27['addTags'](_0x3c9484['body'][_0x36f4('0x23')],_[_0x36f4('0x24')](_0x3c9484[_0x36f4('0x1e')],[_0x36f4('0x23'),'id'])||{});}})[_0x36f4('0x25')](function(_0x1bede4){logger['info'](_0x36f4('0x26'),_0x3c9484);logger[_0x36f4('0x15')](_0x36f4('0x26'),_0x3c9484,JSON[_0x36f4('0x18')](_0x1bede4));_0x1a5b3e(_0x1bede4);})[_0x36f4('0x27')](function(_0x309333){logger['error'](_0x36f4('0x26'),_0x309333[_0x36f4('0x1b')],_0x3c9484);_0x5acf2a(_this['error'](0x1f4,_0x309333[_0x36f4('0x1b')]));});});};
\ No newline at end of file
index 2edc361..43d358d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f6=['smsInteraction:','update','emit','removeListener','register','length'];(function(_0x1b478b,_0x5e4049){var _0x35d4f8=function(_0x112b07){while(--_0x112b07){_0x1b478b['push'](_0x1b478b['shift']());}};_0x35d4f8(++_0x5e4049);}(_0x00f6,0x169));var _0x600f=function(_0x46433,_0x1d3ac7){_0x46433=_0x46433-0x0;var _0x459f2b=_0x00f6[_0x46433];return _0x459f2b;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=['save','remove',_0x600f('0x0')];function createListener(_0x3741d7,_0x1ce7aa){return function(_0x8dc0e){_0x1ce7aa[_0x600f('0x1')](_0x3741d7,_0x8dc0e);};}function removeListener(_0x15b7ad,_0x42eda8){return function(){SmsInteractionEvents[_0x600f('0x2')](_0x15b7ad,_0x42eda8);};}exports[_0x600f('0x3')]=function(_0xdac505){for(var _0x5673bc=0x0,_0x5d72bd=events[_0x600f('0x4')];_0x5673bc<_0x5d72bd;_0x5673bc++){var _0x1f09c1=events[_0x5673bc];var _0x27c10f=createListener(_0x600f('0x5')+_0x1f09c1,_0xdac505);SmsInteractionEvents['on'](_0x1f09c1,_0x27c10f);}};
\ No newline at end of file
+var _0x89cc=['./smsInteraction.events','remove','update','removeListener','register','smsInteraction:'];(function(_0x31c910,_0x1c056d){var _0x29cfb3=function(_0x24b79b){while(--_0x24b79b){_0x31c910['push'](_0x31c910['shift']());}};_0x29cfb3(++_0x1c056d);}(_0x89cc,0x168));var _0xc89c=function(_0x1a828e,_0x55aa8d){_0x1a828e=_0x1a828e-0x0;var _0x4a03d9=_0x89cc[_0x1a828e];return _0x4a03d9;};'use strict';var SmsInteractionEvents=require(_0xc89c('0x0'));var events=['save',_0xc89c('0x1'),_0xc89c('0x2')];function createListener(_0x31c5c2,_0x4c5b6d){return function(_0x1c85e9){_0x4c5b6d['emit'](_0x31c5c2,_0x1c85e9);};}function removeListener(_0x16b544,_0x422155){return function(){SmsInteractionEvents[_0xc89c('0x3')](_0x16b544,_0x422155);};}exports[_0xc89c('0x4')]=function(_0x4432e6){for(var _0x346f59=0x0,_0x36955d=events['length'];_0x346f59<_0x36955d;_0x346f59++){var _0x5ed184=events[_0x346f59];var _0x165ed0=createListener(_0xc89c('0x5')+_0x5ed184,_0x4432e6);SmsInteractionEvents['on'](_0x5ed184,_0x165ed0);}};
\ No newline at end of file
index a9bd4fb..9c8c92e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7980=['../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','sms','smsmessage:create','create','/:id/status','status','update','/:id/accept','accept','put','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x1bf809,_0x536f55){var _0x1caa4e=function(_0x9f9636){while(--_0x9f9636){_0x1bf809['push'](_0x1bf809['shift']());}};_0x1caa4e(++_0x536f55);}(_0x7980,0x123));var _0x0798=function(_0x50a0f8,_0x27c0fb){_0x50a0f8=_0x50a0f8-0x0;var _0x52e53d=_0x7980[_0x50a0f8];return _0x52e53d;};'use strict';var multer=require(_0x0798('0x0'));var util=require(_0x0798('0x1'));var path=require('path');var timeout=require(_0x0798('0x2'));var express=require(_0x0798('0x3'));var router=express[_0x0798('0x4')]();var fs_extra=require(_0x0798('0x5'));var auth=require(_0x0798('0x6'));var interaction=require(_0x0798('0x7'));var config=require(_0x0798('0x8'));var controller=require(_0x0798('0x9'));router['get']('/',auth[_0x0798('0xa')](),controller[_0x0798('0xb')]);router[_0x0798('0xc')](_0x0798('0xd'),auth[_0x0798('0xa')](),controller[_0x0798('0xe')]);router['get'](_0x0798('0xf'),auth[_0x0798('0xa')](),controller[_0x0798('0x10')]);router[_0x0798('0x11')]('/',auth[_0x0798('0xa')](),interaction[_0x0798('0x12')](_0x0798('0x13'),_0x0798('0x14')),controller[_0x0798('0x15')]);router[_0x0798('0x11')](_0x0798('0x16'),controller[_0x0798('0x17')]);router['put'](_0x0798('0xf'),auth['isAuthenticated'](),controller[_0x0798('0x18')]);router['put'](_0x0798('0x19'),auth['isAuthenticated'](),controller[_0x0798('0x1a')]);router[_0x0798('0x1b')](_0x0798('0x1c'),auth[_0x0798('0xa')](),controller[_0x0798('0x1d')]);router[_0x0798('0x1e')](_0x0798('0xf'),auth[_0x0798('0xa')](),controller[_0x0798('0x1f')]);module[_0x0798('0x20')]=router;
\ No newline at end of file
+var _0x99d4=['show','post','tracked','sms','smsmessage:create','/:id/status','status','put','accept','/:id/reject','reject','delete','destroy','exports','multer','path','Router','fs-extra','./smsMessage.controller','get','isAuthenticated','/describe','/:id'];(function(_0x20afc3,_0x2f189a){var _0x4cbb43=function(_0x647042){while(--_0x647042){_0x20afc3['push'](_0x20afc3['shift']());}};_0x4cbb43(++_0x2f189a);}(_0x99d4,0x122));var _0x499d=function(_0x1bb3a1,_0x559613){_0x1bb3a1=_0x1bb3a1-0x0;var _0x18bf71=_0x99d4[_0x1bb3a1];return _0x18bf71;};'use strict';var multer=require(_0x499d('0x0'));var util=require('util');var path=require(_0x499d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x499d('0x2')]();var fs_extra=require(_0x499d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x499d('0x4'));router[_0x499d('0x5')]('/',auth[_0x499d('0x6')](),controller['index']);router[_0x499d('0x5')](_0x499d('0x7'),auth[_0x499d('0x6')](),controller['describe']);router['get'](_0x499d('0x8'),auth[_0x499d('0x6')](),controller[_0x499d('0x9')]);router[_0x499d('0xa')]('/',auth[_0x499d('0x6')](),interaction[_0x499d('0xb')](_0x499d('0xc'),_0x499d('0xd')),controller['create']);router[_0x499d('0xa')](_0x499d('0xe'),controller[_0x499d('0xf')]);router[_0x499d('0x10')](_0x499d('0x8'),auth[_0x499d('0x6')](),controller['update']);router[_0x499d('0x10')]('/:id/accept',auth[_0x499d('0x6')](),controller[_0x499d('0x11')]);router[_0x499d('0x10')](_0x499d('0x12'),auth[_0x499d('0x6')](),controller[_0x499d('0x13')]);router[_0x499d('0x14')]('/:id',auth[_0x499d('0x6')](),controller[_0x499d('0x15')]);module[_0x499d('0x16')]=router;
\ No newline at end of file
index 66816b6..a192325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c8a=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x476c7,_0x298ee0){var _0x47ae56=function(_0x4acf5a){while(--_0x4acf5a){_0x476c7['push'](_0x476c7['shift']());}};_0x47ae56(++_0x298ee0);}(_0x1c8a,0x1f0));var _0xa1c8=function(_0x3f48c8,_0x299d53){_0x3f48c8=_0x3f48c8-0x0;var _0x4c7512=_0x1c8a[_0x3f48c8];return _0x4c7512;};'use strict';var Sequelize=require(_0xa1c8('0x0'));module[_0xa1c8('0x1')]={'body':{'type':Sequelize[_0xa1c8('0x2')](_0xa1c8('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xa1c8('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa1c8('0x5')]('in',_0xa1c8('0x6')),'defaultValue':_0xa1c8('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xa1c8('0x7')](0xbe)},'phone':{'type':Sequelize[_0xa1c8('0x7')]},'readAt':{'type':Sequelize[_0xa1c8('0x8')]},'secret':{'type':Sequelize[_0xa1c8('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xa1c8('0x7')]},'providerResponse':{'type':Sequelize[_0xa1c8('0x2')]}};
\ No newline at end of file
+var _0x9787=['DATE','BOOLEAN','sequelize','exports','TEXT','medium','ENUM','out','STRING'];(function(_0x5b794c,_0x27a019){var _0x4caadf=function(_0x563fec){while(--_0x563fec){_0x5b794c['push'](_0x5b794c['shift']());}};_0x4caadf(++_0x27a019);}(_0x9787,0x122));var _0x7978=function(_0x37bcd8,_0x27bed9){_0x37bcd8=_0x37bcd8-0x0;var _0x422480=_0x9787[_0x37bcd8];return _0x422480;};'use strict';var Sequelize=require(_0x7978('0x0'));module[_0x7978('0x1')]={'body':{'type':Sequelize[_0x7978('0x2')](_0x7978('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x7978('0x4')]('in',_0x7978('0x5')),'defaultValue':_0x7978('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7978('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x7978('0x7')]},'secret':{'type':Sequelize[_0x7978('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x7978('0x2')]}};
\ No newline at end of file
index d4e16e0..afe5366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d0b=['result','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','name','send','index','map','SmsMessage','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','where','merge','type','VIRTUAL','filter','options','include','findAll','catch','show','params','keys','length','includeAll','find','create','body','destroy','describe','sms-interactions','sms','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','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','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','email','internal','channel','motionChannel','event','accept','EventManager','acceptmessage','../../config/logger','RejectMessage','rejectMessage','fullname','interface','SIP/%s','rejectmessage','SmsAccount','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','delivered','Status','plivio','infobip','results','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5b5c39,_0x35af0f){var _0x22a196=function(_0x3ec8b0){while(--_0x3ec8b0){_0x5b5c39['push'](_0x5b5c39['shift']());}};_0x22a196(++_0x35af0f);}(_0x2d0b,0x102));var _0xb2d0=function(_0x3abbcf,_0x371ae7){_0x3abbcf=_0x3abbcf-0x0;var _0x16f984=_0x2d0b[_0x3abbcf];return _0x16f984;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb2d0('0x0'));var zipdir=require(_0xb2d0('0x1'));var jsonpatch=require(_0xb2d0('0x2'));var rp=require('request-promise');var moment=require(_0xb2d0('0x3'));var BPromise=require(_0xb2d0('0x4'));var Mustache=require(_0xb2d0('0x5'));var util=require(_0xb2d0('0x6'));var path=require('path');var sox=require(_0xb2d0('0x7'));var csv=require('to-csv');var ejs=require(_0xb2d0('0x8'));var fs=require('fs');var fs_extra=require(_0xb2d0('0x9'));var _=require(_0xb2d0('0xa'));var squel=require(_0xb2d0('0xb'));var crypto=require(_0xb2d0('0xc'));var jsforce=require(_0xb2d0('0xd'));var deskjs=require(_0xb2d0('0xe'));var toCsv=require(_0xb2d0('0xf'));var querystring=require(_0xb2d0('0x10'));var Papa=require(_0xb2d0('0x11'));var Redis=require(_0xb2d0('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb2d0('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb2d0('0x14'));var licenseUtil=require(_0xb2d0('0x15'));var db=require(_0xb2d0('0x16'))['db'];config['redis']=_[_0xb2d0('0x17')](config['redis'],{'host':_0xb2d0('0x18'),'port':0x18eb});var socket=require(_0xb2d0('0x19'))(new Redis(config[_0xb2d0('0x1a')]));require(_0xb2d0('0x1b'))[_0xb2d0('0x1c')](socket);var jayson=require(_0xb2d0('0x1d'));var client=jayson[_0xb2d0('0x1e')][_0xb2d0('0x1f')]({'port':0x232c});var client9002=jayson[_0xb2d0('0x1e')][_0xb2d0('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x36c3b3,_0x1adbea,_0x84fcd7,_0x1cb471){return new BPromise(function(_0x223ae8,_0x5e9c72){var _0x159dc3=_0x1cb471||client;return _0x159dc3['request'](_0x36c3b3,_0x84fcd7)[_0xb2d0('0x20')](function(_0x2810a2){logger[_0xb2d0('0x21')](_0xb2d0('0x22'),_0x1adbea,_0xb2d0('0x23'));logger[_0xb2d0('0x24')](_0xb2d0('0x25'),_0x1adbea,_0xb2d0('0x23'),JSON[_0xb2d0('0x26')](_0x2810a2));if(_0x2810a2['error']){if(_0x2810a2[_0xb2d0('0x27')][_0xb2d0('0x28')]===0x1f4){logger[_0xb2d0('0x27')](_0xb2d0('0x22'),_0x1adbea,_0x2810a2[_0xb2d0('0x27')][_0xb2d0('0x29')]);return _0x5e9c72(_0x2810a2[_0xb2d0('0x27')][_0xb2d0('0x29')]);}logger[_0xb2d0('0x27')](_0xb2d0('0x22'),_0x1adbea,_0x2810a2[_0xb2d0('0x27')]['message']);return _0x223ae8(_0x2810a2[_0xb2d0('0x27')][_0xb2d0('0x29')]);}else{logger[_0xb2d0('0x21')]('SmsMessage,\x20%s,\x20%s',_0x1adbea,_0xb2d0('0x23'));_0x223ae8(_0x2810a2[_0xb2d0('0x2a')][_0xb2d0('0x29')]);}})['catch'](function(_0x39fcd4){logger[_0xb2d0('0x27')](_0xb2d0('0x22'),_0x1adbea,_0x39fcd4);_0x5e9c72(_0x39fcd4);});});}function respondWithStatusCode(_0x295db3,_0x2595a8){_0x2595a8=_0x2595a8||0xcc;return function(_0x31252b){if(_0x31252b){return _0x295db3[_0xb2d0('0x2b')](_0x2595a8);}return _0x295db3[_0xb2d0('0x2c')](_0x2595a8)[_0xb2d0('0x2d')]();};}function respondWithResult(_0x4be597,_0x31d68c){_0x31d68c=_0x31d68c||0xc8;return function(_0x4c1913){if(_0x4c1913){return _0x4be597['status'](_0x31d68c)[_0xb2d0('0x2e')](_0x4c1913);}};}function respondWithFilteredResult(_0x3420e8,_0x2bcc54){return function(_0xadef61){if(_0xadef61){var _0x11e6fe=typeof _0x2bcc54[_0xb2d0('0x2f')]===_0xb2d0('0x30')&&typeof _0x2bcc54[_0xb2d0('0x31')]===_0xb2d0('0x30');var _0x35133a=_0xadef61[_0xb2d0('0x32')];var _0x3e3b12=_0x11e6fe?0x0:_0x2bcc54[_0xb2d0('0x2f')];var _0x5bdd41=_0x11e6fe?_0xadef61[_0xb2d0('0x32')]:_0x2bcc54[_0xb2d0('0x2f')]+_0x2bcc54[_0xb2d0('0x31')];var _0x267b73;if(_0x5bdd41>=_0x35133a){_0x5bdd41=_0x35133a;_0x267b73=0xc8;}else{_0x267b73=0xce;}_0x3420e8[_0xb2d0('0x2c')](_0x267b73);return _0x3420e8[_0xb2d0('0x33')]('Content-Range',_0x3e3b12+'-'+_0x5bdd41+'/'+_0x35133a)[_0xb2d0('0x2e')](_0xadef61);}return null;};}function patchUpdates(_0x4cd035){return function(_0x480466){try{jsonpatch[_0xb2d0('0x34')](_0x480466,_0x4cd035,!![]);}catch(_0x2afd5a){return BPromise[_0xb2d0('0x35')](_0x2afd5a);}return _0x480466[_0xb2d0('0x36')]();};}function saveUpdates(_0xbdc9a8,_0x14d64e){return function(_0x20ea0d){if(_0x20ea0d){return _0x20ea0d[_0xb2d0('0x37')](_0xbdc9a8)[_0xb2d0('0x20')](function(_0x561c60){return _0x561c60;});}return null;};}function removeEntity(_0x2afd5b,_0x4d5c4f){return function(_0x28ec07){if(_0x28ec07){return _0x28ec07['destroy']()[_0xb2d0('0x20')](function(){_0x2afd5b[_0xb2d0('0x2c')](0xcc)[_0xb2d0('0x2d')]();});}};}function handleEntityNotFound(_0x772790,_0x195731){return function(_0x5f12bb){if(!_0x5f12bb){_0x772790['sendStatus'](0x194);}return _0x5f12bb;};}function handleError(_0x415552,_0x57e4c3){_0x57e4c3=_0x57e4c3||0x1f4;return function(_0xda7eda){logger[_0xb2d0('0x27')](_0xda7eda['stack']);if(_0xda7eda[_0xb2d0('0x38')]){delete _0xda7eda[_0xb2d0('0x38')];}_0x415552['status'](_0x57e4c3)[_0xb2d0('0x39')](_0xda7eda);};}exports[_0xb2d0('0x3a')]=function(_0x16546f,_0x41a3be){var _0x5d2a1f={},_0x1964f9={},_0x33f7b7={'count':0x0,'rows':[]};var _0x32c72a=_[_0xb2d0('0x3b')](db[_0xb2d0('0x3c')][_0xb2d0('0x3d')],function(_0x2c7c53){return{'name':_0x2c7c53[_0xb2d0('0x3e')],'type':_0x2c7c53['type'][_0xb2d0('0x3f')]};});_0x1964f9[_0xb2d0('0x40')]=_[_0xb2d0('0x3b')](_0x32c72a,_0xb2d0('0x38'));_0x1964f9[_0xb2d0('0x41')]=_['keys'](_0x16546f[_0xb2d0('0x41')]);_0x1964f9[_0xb2d0('0x42')]=_[_0xb2d0('0x43')](_0x1964f9[_0xb2d0('0x40')],_0x1964f9[_0xb2d0('0x41')]);_0x5d2a1f[_0xb2d0('0x44')]=_[_0xb2d0('0x43')](_0x1964f9[_0xb2d0('0x40')],qs[_0xb2d0('0x45')](_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x45')]));_0x5d2a1f[_0xb2d0('0x44')]=_0x5d2a1f[_0xb2d0('0x44')]['length']?_0x5d2a1f['attributes']:_0x1964f9[_0xb2d0('0x40')];if(!_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x46')]('nolimit')){_0x5d2a1f[_0xb2d0('0x31')]=qs[_0xb2d0('0x31')](_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x31')]);_0x5d2a1f['offset']=qs[_0xb2d0('0x2f')](_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x2f')]);}_0x5d2a1f['order']=qs[_0xb2d0('0x47')](_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x47')]);_0x5d2a1f['where']=qs[_0xb2d0('0x42')](_[_0xb2d0('0x48')](_0x16546f[_0xb2d0('0x41')],_0x1964f9[_0xb2d0('0x42')]),_0x32c72a);if(_0x16546f[_0xb2d0('0x41')]['filter']){_0x5d2a1f[_0xb2d0('0x49')]=_[_0xb2d0('0x4a')](_0x5d2a1f[_0xb2d0('0x49')],{'$or':_['map'](_0x32c72a,function(_0x3398c2){if(_0x3398c2[_0xb2d0('0x4b')]!==_0xb2d0('0x4c')){var _0x551279={};_0x551279[_0x3398c2['name']]={'$like':'%'+_0x16546f[_0xb2d0('0x41')][_0xb2d0('0x4d')]+'%'};return _0x551279;}})});}_0x5d2a1f=_[_0xb2d0('0x4a')]({},_0x5d2a1f,_0x16546f[_0xb2d0('0x4e')]);var _0x4f47be={'where':_0x5d2a1f['where']};return db['SmsMessage'][_0xb2d0('0x32')](_0x4f47be)[_0xb2d0('0x20')](function(_0x11b721){_0x33f7b7['count']=_0x11b721;if(_0x16546f[_0xb2d0('0x41')]['includeAll']){_0x5d2a1f[_0xb2d0('0x4f')]=[{'all':!![]}];}return db[_0xb2d0('0x3c')][_0xb2d0('0x50')](_0x5d2a1f);})[_0xb2d0('0x20')](function(_0x2e3cbf){_0x33f7b7['rows']=_0x2e3cbf;return _0x33f7b7;})[_0xb2d0('0x20')](respondWithFilteredResult(_0x41a3be,_0x5d2a1f))[_0xb2d0('0x51')](handleError(_0x41a3be,null));};exports[_0xb2d0('0x52')]=function(_0x3ba6d9,_0xdc31f9){var _0x53e452={'raw':!![],'where':{'id':_0x3ba6d9[_0xb2d0('0x53')]['id']}},_0xa0de5a={};_0xa0de5a['model']=_[_0xb2d0('0x54')](db[_0xb2d0('0x3c')]['rawAttributes']);_0xa0de5a['query']=_[_0xb2d0('0x54')](_0x3ba6d9[_0xb2d0('0x41')]);_0xa0de5a[_0xb2d0('0x42')]=_[_0xb2d0('0x43')](_0xa0de5a[_0xb2d0('0x40')],_0xa0de5a[_0xb2d0('0x41')]);_0x53e452[_0xb2d0('0x44')]=_[_0xb2d0('0x43')](_0xa0de5a['model'],qs[_0xb2d0('0x45')](_0x3ba6d9[_0xb2d0('0x41')]['fields']));_0x53e452[_0xb2d0('0x44')]=_0x53e452[_0xb2d0('0x44')][_0xb2d0('0x55')]?_0x53e452['attributes']:_0xa0de5a[_0xb2d0('0x40')];if(_0x3ba6d9['query'][_0xb2d0('0x56')]){_0x53e452[_0xb2d0('0x4f')]=[{'all':!![]}];}_0x53e452=_['merge']({},_0x53e452,_0x3ba6d9[_0xb2d0('0x4e')]);return db[_0xb2d0('0x3c')][_0xb2d0('0x57')](_0x53e452)[_0xb2d0('0x20')](handleEntityNotFound(_0xdc31f9,null))[_0xb2d0('0x20')](respondWithResult(_0xdc31f9,null))[_0xb2d0('0x51')](handleError(_0xdc31f9,null));};exports[_0xb2d0('0x58')]=function(_0x47ac15,_0x550a50){return db['SmsMessage'][_0xb2d0('0x58')](_0x47ac15[_0xb2d0('0x59')],{})[_0xb2d0('0x20')](respondWithResult(_0x550a50,0xc9))[_0xb2d0('0x51')](handleError(_0x550a50,null));};exports[_0xb2d0('0x37')]=function(_0x3e9957,_0x3df426){if(_0x3e9957[_0xb2d0('0x59')]['id']){delete _0x3e9957[_0xb2d0('0x59')]['id'];}return db[_0xb2d0('0x3c')][_0xb2d0('0x57')]({'where':{'id':_0x3e9957[_0xb2d0('0x53')]['id']}})['then'](handleEntityNotFound(_0x3df426,null))['then'](saveUpdates(_0x3e9957[_0xb2d0('0x59')],null))[_0xb2d0('0x20')](respondWithResult(_0x3df426,null))['catch'](handleError(_0x3df426,null));};exports[_0xb2d0('0x5a')]=function(_0x38d5ea,_0x480c9e){return db['SmsMessage'][_0xb2d0('0x57')]({'where':{'id':_0x38d5ea[_0xb2d0('0x53')]['id']}})[_0xb2d0('0x20')](handleEntityNotFound(_0x480c9e,null))[_0xb2d0('0x20')](removeEntity(_0x480c9e,null))[_0xb2d0('0x51')](handleError(_0x480c9e,null));};exports[_0xb2d0('0x5b')]=function(_0x1d191a,_0x3d6d57){return db[_0xb2d0('0x3c')]['describe']()['then'](respondWithResult(_0x3d6d57,null))[_0xb2d0('0x51')](handleError(_0x3d6d57,null));};var interaction_log=require('../../config/logger')(_0xb2d0('0x5c'));exports['accept']=function(_0x8bf338,_0xee9dc4,_0x3979b7){var _0x4eceab={'agent':{},'channel':_0xb2d0('0x5d')};if(_0x8bf338[_0xb2d0('0x59')]['id']){delete _0x8bf338[_0xb2d0('0x59')]['id'];}_0x8bf338[_0xb2d0('0x59')]['read']=!![];_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x5e')]=moment()[_0xb2d0('0x5f')](_0xb2d0('0x60'));_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x61')]=_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x61')]||_0x8bf338[_0xb2d0('0x62')]['id'];_0x4eceab['agent']['id']=_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x61')];return db['SmsMessage'][_0xb2d0('0x57')]({'where':{'id':_0x8bf338['params']['id'],'UserId':null}})[_0xb2d0('0x20')](handleEntityNotFound(_0xee9dc4,null))[_0xb2d0('0x20')](saveUpdates(_0x8bf338[_0xb2d0('0x59')],null))[_0xb2d0('0x20')](function(_0x4770bc){if(_0x4770bc){_0x4eceab['message']=_0x4770bc[_0xb2d0('0x63')]({'plain':!![]});return db[_0xb2d0('0x64')][_0xb2d0('0x57')]({'where':{'id':_0x4770bc['SmsInteractionId']}});}return null;})[_0xb2d0('0x20')](handleEntityNotFound(_0xee9dc4,null))[_0xb2d0('0x20')](function(_0x1e61c2){if(_0x1e61c2){return _0x1e61c2[_0xb2d0('0x37')]({'UserId':_0x8bf338['body'][_0xb2d0('0x61')],'read1stAt':_[_0xb2d0('0x65')](_0x1e61c2[_0xb2d0('0x66')])?moment()['format'](_0xb2d0('0x60')):undefined});}return null;})[_0xb2d0('0x20')](function(_0x4c5ba4){if(_0x4c5ba4){_0x4eceab[_0xb2d0('0x67')]=_0x4c5ba4[_0xb2d0('0x63')]({'plain':!![]});interaction_log[_0xb2d0('0x21')](_0xb2d0('0x68'),_0x8bf338[_0xb2d0('0x62')]['id'],_0x8bf338[_0xb2d0('0x62')][_0xb2d0('0x38')],_0x8bf338[_0xb2d0('0x62')][_0xb2d0('0x69')],_0x4eceab[_0xb2d0('0x67')]['id'],_0x8bf338['body']?JSON[_0xb2d0('0x26')](_0x8bf338[_0xb2d0('0x59')]):_0xb2d0('0x6a'));return respondWithRpcPromise(_0xb2d0('0x6b'),_0xb2d0('0x6c'),_0x4eceab);}return null;})['then'](function(_0x8a955e){var _0x2b711e=_0xb2d0('0x6d')+_0x8a955e[_0xb2d0('0x29')][_0xb2d0('0x6e')];return db[_0xb2d0('0x6f')]['query'](_0x2b711e,{'type':db[_0xb2d0('0x70')][_0xb2d0('0x71')][_0xb2d0('0x72')],'raw':!![]})[_0xb2d0('0x20')](function(_0x21475c){return _0x21475c;});})[_0xb2d0('0x20')](function(_0x5cf8ce){if(_0x5cf8ce){_0x4eceab['message'][_0xb2d0('0x73')]=_0x5cf8ce[0x0];if(!_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x61')])return;return db[_0xb2d0('0x74')][_0xb2d0('0x57')]({'where':{'id':_0x8bf338[_0xb2d0('0x59')][_0xb2d0('0x61')],'role':_0xb2d0('0x75')},'attributes':['id','name','fullname',_0xb2d0('0x76'),_0xb2d0('0x77')],'raw':!![]});}return null;})[_0xb2d0('0x20')](function(_0x3a6779){if(!_0x3a6779)return null;_0x4eceab[_0xb2d0('0x29')][_0xb2d0('0x75')]=_0x3a6779;return _0x4eceab;})[_0xb2d0('0x20')](function(_0x573e27){if(_0x573e27){if(_0x8bf338[_0xb2d0('0x59')]['manual']){_0x4eceab[_0xb2d0('0x29')]['interface']=util['format']('SIP/%s',_0x8bf338[_0xb2d0('0x62')]['name']);_0x4eceab[_0xb2d0('0x29')][_0xb2d0('0x78')]=_0x4eceab[_0xb2d0('0x78')];_0x4eceab[_0xb2d0('0x29')][_0xb2d0('0x79')]=_0x4eceab[_0xb2d0('0x78')];_0x4eceab[_0xb2d0('0x29')][_0xb2d0('0x7a')]=_0xb2d0('0x7b');return respondWithRpcPromise('EventManager',_0xb2d0('0x7c'),{'event':_0xb2d0('0x7d'),'message':_0x4eceab[_0xb2d0('0x29')]},client9002)[_0xb2d0('0x20')](function(){return _0x4eceab;});}return _0x4eceab;}return null;})[_0xb2d0('0x20')](respondWithResult(_0xee9dc4,null))[_0xb2d0('0x51')](handleError(_0xee9dc4,null));};var interaction_log=require(_0xb2d0('0x7e'))(_0xb2d0('0x5c'));exports[_0xb2d0('0x35')]=function(_0x441dee,_0x3eb52d,_0x1baac4){var _0x29bbbc={'agent':{},'channel':'sms'};if(_0x441dee[_0xb2d0('0x59')]['id']){delete _0x441dee['body']['id'];}_0x441dee[_0xb2d0('0x59')]['UserId']=_0x441dee['body'][_0xb2d0('0x61')]||_0x441dee[_0xb2d0('0x62')]['id'];_0x29bbbc[_0xb2d0('0x75')]['id']=_0x441dee[_0xb2d0('0x59')][_0xb2d0('0x61')];return db['SmsMessage'][_0xb2d0('0x57')]({'where':{'id':_0x441dee[_0xb2d0('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3eb52d,null))['then'](function(_0x3e0999){if(_0x3e0999){_0x29bbbc[_0xb2d0('0x29')]=_0x3e0999[_0xb2d0('0x63')]({'plain':!![]});return db[_0xb2d0('0x64')][_0xb2d0('0x57')]({'where':{'id':_0x3e0999['SmsInteractionId']}});}return null;})[_0xb2d0('0x20')](handleEntityNotFound(_0x3eb52d,null))[_0xb2d0('0x20')](function(_0x98e03a){if(_0x98e03a){_0x29bbbc[_0xb2d0('0x67')]=_0x98e03a[_0xb2d0('0x63')]({'plain':!![]});interaction_log[_0xb2d0('0x21')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x441dee[_0xb2d0('0x62')]['id'],_0x441dee[_0xb2d0('0x62')][_0xb2d0('0x38')],_0x441dee['user'][_0xb2d0('0x69')],_0x29bbbc['interaction']['id'],_0x441dee['body']?JSON['stringify'](_0x441dee['body']):_0xb2d0('0x6a'));return respondWithRpcPromise(_0xb2d0('0x7f'),_0xb2d0('0x80'),_0x29bbbc);}return null;})[_0xb2d0('0x20')](function(_0x5f2fe8){var _0x53fc83=_0xb2d0('0x6d')+_0x5f2fe8[_0xb2d0('0x29')][_0xb2d0('0x6e')];return db['sequelize']['query'](_0x53fc83,{'type':db[_0xb2d0('0x70')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x462944){return _0x462944;});})[_0xb2d0('0x20')](function(_0x207d28){if(_0x207d28){_0x29bbbc[_0xb2d0('0x29')]['contact']=_0x207d28[0x0];if(!_0x441dee[_0xb2d0('0x59')]['UserId'])return;return db['User'][_0xb2d0('0x57')]({'where':{'id':_0x441dee[_0xb2d0('0x59')][_0xb2d0('0x61')],'role':_0xb2d0('0x75')},'attributes':['id',_0xb2d0('0x38'),_0xb2d0('0x81'),_0xb2d0('0x76'),_0xb2d0('0x77')],'raw':!![]});}return null;})[_0xb2d0('0x20')](function(_0x47759a){if(!_0x47759a)return null;_0x29bbbc[_0xb2d0('0x29')][_0xb2d0('0x75')]=_0x47759a;return _0x29bbbc;})['then'](function(_0x5f509e){if(_0x5f509e){_0x5f509e[_0xb2d0('0x29')][_0xb2d0('0x82')]=util[_0xb2d0('0x5f')](_0xb2d0('0x83'),_0x441dee[_0xb2d0('0x62')]['name']);_0x5f509e[_0xb2d0('0x29')][_0xb2d0('0x78')]=_0x29bbbc[_0xb2d0('0x78')];_0x5f509e[_0xb2d0('0x29')][_0xb2d0('0x79')]=_0x29bbbc[_0xb2d0('0x78')];_0x5f509e[_0xb2d0('0x29')][_0xb2d0('0x7a')]=_0xb2d0('0x35');respondWithRpcPromise(_0xb2d0('0x7c'),'EventManager',{'event':_0xb2d0('0x84'),'message':_0x5f509e[_0xb2d0('0x29')]},client9002);return _0x29bbbc;}return null;})[_0xb2d0('0x20')](respondWithResult(_0x3eb52d,null))[_0xb2d0('0x51')](handleError(_0x3eb52d,null));};exports[_0xb2d0('0x2c')]=function(_0x4f54d2,_0x26abe8,_0x30e104){if(_0x4f54d2[_0xb2d0('0x59')]['id']){delete _0x4f54d2[_0xb2d0('0x59')]['id'];}var _0x41f2f9;return db[_0xb2d0('0x3c')]['find']({'where':{'id':_0x4f54d2[_0xb2d0('0x53')]['id']}})['then'](handleEntityNotFound(_0x26abe8,null))[_0xb2d0('0x20')](function(_0x7afd81){if(_0x7afd81){_0x41f2f9=_0x7afd81;return db[_0xb2d0('0x85')][_0xb2d0('0x57')]({'where':{'id':_0x7afd81['SmsAccountId']}});}})[_0xb2d0('0x20')](handleEntityNotFound(_0x26abe8,null))[_0xb2d0('0x20')](function(_0x4d0b60){if(_0x4d0b60){logger['debug'](_0xb2d0('0x25'),_0xb2d0('0x2c'),_0xb2d0('0x86'),_0x4d0b60[_0xb2d0('0x4b')],util[_0xb2d0('0x87')](_0x4f54d2[_0xb2d0('0x59')],{'showHidden':![],'depth':null}));switch(_0x4d0b60[_0xb2d0('0x4b')]){case _0xb2d0('0x88'):if(_0x4f54d2[_0xb2d0('0x59')][_0xb2d0('0x89')]&&_0x4f54d2[_0xb2d0('0x59')][_0xb2d0('0x89')]===_0x41f2f9[_0xb2d0('0x8a')]){return _0x41f2f9['update']({'read':!![]});}else{logger[_0xb2d0('0x27')](_0xb2d0('0x8b'),_0xb2d0('0x2c'),'twilio',util['inspect'](_0x4f54d2[_0xb2d0('0x59')],{'showHidden':![],'depth':null}));}break;case _0xb2d0('0x8c'):if(_0x4f54d2[_0xb2d0('0x59')][_0xb2d0('0x8d')]&&_0x4f54d2[_0xb2d0('0x59')][_0xb2d0('0x8d')]===_0x41f2f9['messageId']&&_[_0xb2d0('0x8e')](['sent',_0xb2d0('0x8f')],_0x4f54d2['body'][_0xb2d0('0x90')])>=0x0){return _0x41f2f9['update']({'read':!![]});}else{logger['error'](_0xb2d0('0x8b'),'status',_0xb2d0('0x91'),util['inspect'](_0x4f54d2[_0xb2d0('0x59')],{'showHidden':![],'depth':null}));}break;case _0xb2d0('0x92'):var _0x15d590=_0x4f54d2[_0xb2d0('0x59')][_0xb2d0('0x93')][0x0];if(_0x15d590[_0xb2d0('0x2c')][_0xb2d0('0x94')]===_0xb2d0('0x95')){return _0x41f2f9[_0xb2d0('0x37')]({'read':!![]});}else{logger[_0xb2d0('0x27')](_0xb2d0('0x8b'),_0xb2d0('0x2c'),'infobip',util[_0xb2d0('0x87')](_0x4f54d2[_0xb2d0('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x41f2f9;}})['then'](respondWithResult(_0x26abe8,null))['catch'](handleError(_0x26abe8,null));};
\ No newline at end of file
+var _0xd5f9=['merge','options','SmsMessage','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','SmsInteraction','SmsInteractionId','isNil','read1stAt','role','null','AcceptMessage','ContactId','Sequelize','contact','User','agent','fullname','email','internal','manual','interface','motionChannel','channel','event','EventManager','get','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SIP/%s','rejectmessage','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','status','end','json','undefined','count','offset','limit','set','reject','save','update','destroy','stack','name','send','map','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','where','filter','VIRTUAL'];(function(_0x4e9e24,_0x34b638){var _0x3ef905=function(_0x479207){while(--_0x479207){_0x4e9e24['push'](_0x4e9e24['shift']());}};_0x3ef905(++_0x34b638);}(_0xd5f9,0x1f1));var _0x9d5f=function(_0x237da8,_0x37b77a){_0x237da8=_0x237da8-0x0;var _0x558825=_0xd5f9[_0x237da8];return _0x558825;};'use strict';var emlformat=require(_0x9d5f('0x0'));var rimraf=require(_0x9d5f('0x1'));var zipdir=require(_0x9d5f('0x2'));var jsonpatch=require(_0x9d5f('0x3'));var rp=require('request-promise');var moment=require(_0x9d5f('0x4'));var BPromise=require(_0x9d5f('0x5'));var Mustache=require(_0x9d5f('0x6'));var util=require(_0x9d5f('0x7'));var path=require(_0x9d5f('0x8'));var sox=require(_0x9d5f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d5f('0xa'));var squel=require(_0x9d5f('0xb'));var crypto=require('crypto');var jsforce=require(_0x9d5f('0xc'));var deskjs=require(_0x9d5f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9d5f('0xe'));var Papa=require(_0x9d5f('0xf'));var Redis=require('ioredis');var authService=require(_0x9d5f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9d5f('0x11'));var hardwareService=require(_0x9d5f('0x12'));var logger=require(_0x9d5f('0x13'))(_0x9d5f('0x14'));var utils=require(_0x9d5f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9d5f('0x16'));var db=require(_0x9d5f('0x17'))['db'];config[_0x9d5f('0x18')]=_[_0x9d5f('0x19')](config[_0x9d5f('0x18')],{'host':_0x9d5f('0x1a'),'port':0x18eb});var socket=require(_0x9d5f('0x1b'))(new Redis(config[_0x9d5f('0x18')]));require(_0x9d5f('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x9d5f('0x1d')][_0x9d5f('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x5d5f1b,_0x23ca6f,_0x10f7d5,_0x34da46){return new BPromise(function(_0x3a9220,_0xdf88d0){var _0x54de1e=_0x34da46||client;return _0x54de1e[_0x9d5f('0x1f')](_0x5d5f1b,_0x10f7d5)[_0x9d5f('0x20')](function(_0xbfb436){logger[_0x9d5f('0x21')](_0x9d5f('0x22'),_0x23ca6f,_0x9d5f('0x23'));logger[_0x9d5f('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x23ca6f,_0x9d5f('0x23'),JSON[_0x9d5f('0x25')](_0xbfb436));if(_0xbfb436[_0x9d5f('0x26')]){if(_0xbfb436['error']['code']===0x1f4){logger[_0x9d5f('0x26')](_0x9d5f('0x22'),_0x23ca6f,_0xbfb436[_0x9d5f('0x26')][_0x9d5f('0x27')]);return _0xdf88d0(_0xbfb436['error'][_0x9d5f('0x27')]);}logger['error'](_0x9d5f('0x22'),_0x23ca6f,_0xbfb436['error'][_0x9d5f('0x27')]);return _0x3a9220(_0xbfb436[_0x9d5f('0x26')][_0x9d5f('0x27')]);}else{logger[_0x9d5f('0x21')](_0x9d5f('0x22'),_0x23ca6f,'request\x20sent');_0x3a9220(_0xbfb436[_0x9d5f('0x28')][_0x9d5f('0x27')]);}})['catch'](function(_0x2a032a){logger[_0x9d5f('0x26')](_0x9d5f('0x22'),_0x23ca6f,_0x2a032a);_0xdf88d0(_0x2a032a);});});}function respondWithStatusCode(_0x3ccb94,_0x3da35c){_0x3da35c=_0x3da35c||0xcc;return function(_0x507f95){if(_0x507f95){return _0x3ccb94[_0x9d5f('0x29')](_0x3da35c);}return _0x3ccb94[_0x9d5f('0x2a')](_0x3da35c)[_0x9d5f('0x2b')]();};}function respondWithResult(_0x4afdd7,_0x5f8281){_0x5f8281=_0x5f8281||0xc8;return function(_0x4e084a){if(_0x4e084a){return _0x4afdd7[_0x9d5f('0x2a')](_0x5f8281)[_0x9d5f('0x2c')](_0x4e084a);}};}function respondWithFilteredResult(_0x59118d,_0x45465a){return function(_0x1a2b71){if(_0x1a2b71){var _0x3def92=typeof _0x45465a['offset']==='undefined'&&typeof _0x45465a['limit']===_0x9d5f('0x2d');var _0x3e4090=_0x1a2b71[_0x9d5f('0x2e')];var _0x4fafae=_0x3def92?0x0:_0x45465a[_0x9d5f('0x2f')];var _0x4c15e4=_0x3def92?_0x1a2b71[_0x9d5f('0x2e')]:_0x45465a[_0x9d5f('0x2f')]+_0x45465a[_0x9d5f('0x30')];var _0x35f433;if(_0x4c15e4>=_0x3e4090){_0x4c15e4=_0x3e4090;_0x35f433=0xc8;}else{_0x35f433=0xce;}_0x59118d[_0x9d5f('0x2a')](_0x35f433);return _0x59118d[_0x9d5f('0x31')]('Content-Range',_0x4fafae+'-'+_0x4c15e4+'/'+_0x3e4090)[_0x9d5f('0x2c')](_0x1a2b71);}return null;};}function patchUpdates(_0x1cd296){return function(_0x422d88){try{jsonpatch['apply'](_0x422d88,_0x1cd296,!![]);}catch(_0x570476){return BPromise[_0x9d5f('0x32')](_0x570476);}return _0x422d88[_0x9d5f('0x33')]();};}function saveUpdates(_0x297552,_0x18d914){return function(_0x14ac51){if(_0x14ac51){return _0x14ac51[_0x9d5f('0x34')](_0x297552)[_0x9d5f('0x20')](function(_0x3b37e9){return _0x3b37e9;});}return null;};}function removeEntity(_0x233d96,_0x419712){return function(_0x28731e){if(_0x28731e){return _0x28731e[_0x9d5f('0x35')]()[_0x9d5f('0x20')](function(){_0x233d96[_0x9d5f('0x2a')](0xcc)[_0x9d5f('0x2b')]();});}};}function handleEntityNotFound(_0x1a3803,_0xefc4bd){return function(_0x118406){if(!_0x118406){_0x1a3803[_0x9d5f('0x29')](0x194);}return _0x118406;};}function handleError(_0x39d935,_0x27a0d4){_0x27a0d4=_0x27a0d4||0x1f4;return function(_0x4bd128){logger['error'](_0x4bd128[_0x9d5f('0x36')]);if(_0x4bd128[_0x9d5f('0x37')]){delete _0x4bd128[_0x9d5f('0x37')];}_0x39d935[_0x9d5f('0x2a')](_0x27a0d4)[_0x9d5f('0x38')](_0x4bd128);};}exports['index']=function(_0x5548d6,_0x468736){var _0x574350={},_0x2cf184={},_0x59b528={'count':0x0,'rows':[]};var _0xfdde7c=_[_0x9d5f('0x39')](db['SmsMessage'][_0x9d5f('0x3a')],function(_0xe0d1e5){return{'name':_0xe0d1e5['fieldName'],'type':_0xe0d1e5[_0x9d5f('0x3b')]['key']};});_0x2cf184['model']=_[_0x9d5f('0x39')](_0xfdde7c,_0x9d5f('0x37'));_0x2cf184[_0x9d5f('0x3c')]=_[_0x9d5f('0x3d')](_0x5548d6[_0x9d5f('0x3c')]);_0x2cf184[_0x9d5f('0x3e')]=_[_0x9d5f('0x3f')](_0x2cf184[_0x9d5f('0x40')],_0x2cf184[_0x9d5f('0x3c')]);_0x574350[_0x9d5f('0x41')]=_[_0x9d5f('0x3f')](_0x2cf184[_0x9d5f('0x40')],qs[_0x9d5f('0x42')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x42')]));_0x574350['attributes']=_0x574350[_0x9d5f('0x41')]['length']?_0x574350[_0x9d5f('0x41')]:_0x2cf184[_0x9d5f('0x40')];if(!_0x5548d6['query'][_0x9d5f('0x43')]('nolimit')){_0x574350['limit']=qs[_0x9d5f('0x30')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x30')]);_0x574350['offset']=qs[_0x9d5f('0x2f')](_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x2f')]);}_0x574350['order']=qs['sort'](_0x5548d6[_0x9d5f('0x3c')]['sort']);_0x574350[_0x9d5f('0x44')]=qs[_0x9d5f('0x3e')](_['pick'](_0x5548d6['query'],_0x2cf184[_0x9d5f('0x3e')]),_0xfdde7c);if(_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x45')]){_0x574350['where']=_['merge'](_0x574350[_0x9d5f('0x44')],{'$or':_[_0x9d5f('0x39')](_0xfdde7c,function(_0x8e9708){if(_0x8e9708[_0x9d5f('0x3b')]!==_0x9d5f('0x46')){var _0x2e17c0={};_0x2e17c0[_0x8e9708[_0x9d5f('0x37')]]={'$like':'%'+_0x5548d6['query'][_0x9d5f('0x45')]+'%'};return _0x2e17c0;}})});}_0x574350=_[_0x9d5f('0x47')]({},_0x574350,_0x5548d6[_0x9d5f('0x48')]);var _0xdfdf64={'where':_0x574350[_0x9d5f('0x44')]};return db[_0x9d5f('0x49')][_0x9d5f('0x2e')](_0xdfdf64)['then'](function(_0x469ad9){_0x59b528[_0x9d5f('0x2e')]=_0x469ad9;if(_0x5548d6[_0x9d5f('0x3c')][_0x9d5f('0x4a')]){_0x574350[_0x9d5f('0x4b')]=[{'all':!![]}];}return db[_0x9d5f('0x49')][_0x9d5f('0x4c')](_0x574350);})['then'](function(_0x48aca4){_0x59b528[_0x9d5f('0x4d')]=_0x48aca4;return _0x59b528;})[_0x9d5f('0x20')](respondWithFilteredResult(_0x468736,_0x574350))[_0x9d5f('0x4e')](handleError(_0x468736,null));};exports[_0x9d5f('0x4f')]=function(_0x573ef0,_0x562356){var _0x2980a9={'raw':!![],'where':{'id':_0x573ef0[_0x9d5f('0x50')]['id']}},_0x5a6700={};_0x5a6700[_0x9d5f('0x40')]=_['keys'](db['SmsMessage']['rawAttributes']);_0x5a6700['query']=_[_0x9d5f('0x3d')](_0x573ef0['query']);_0x5a6700[_0x9d5f('0x3e')]=_[_0x9d5f('0x3f')](_0x5a6700[_0x9d5f('0x40')],_0x5a6700[_0x9d5f('0x3c')]);_0x2980a9[_0x9d5f('0x41')]=_[_0x9d5f('0x3f')](_0x5a6700['model'],qs[_0x9d5f('0x42')](_0x573ef0[_0x9d5f('0x3c')][_0x9d5f('0x42')]));_0x2980a9[_0x9d5f('0x41')]=_0x2980a9['attributes'][_0x9d5f('0x51')]?_0x2980a9[_0x9d5f('0x41')]:_0x5a6700[_0x9d5f('0x40')];if(_0x573ef0['query'][_0x9d5f('0x4a')]){_0x2980a9[_0x9d5f('0x4b')]=[{'all':!![]}];}_0x2980a9=_[_0x9d5f('0x47')]({},_0x2980a9,_0x573ef0[_0x9d5f('0x48')]);return db[_0x9d5f('0x49')][_0x9d5f('0x52')](_0x2980a9)[_0x9d5f('0x20')](handleEntityNotFound(_0x562356,null))[_0x9d5f('0x20')](respondWithResult(_0x562356,null))['catch'](handleError(_0x562356,null));};exports[_0x9d5f('0x53')]=function(_0xf230ee,_0x2f46be){return db['SmsMessage']['create'](_0xf230ee[_0x9d5f('0x54')],{})[_0x9d5f('0x20')](respondWithResult(_0x2f46be,0xc9))[_0x9d5f('0x4e')](handleError(_0x2f46be,null));};exports['update']=function(_0x2992d7,_0x9dcf01){if(_0x2992d7[_0x9d5f('0x54')]['id']){delete _0x2992d7[_0x9d5f('0x54')]['id'];}return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x2992d7['params']['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x9dcf01,null))[_0x9d5f('0x20')](saveUpdates(_0x2992d7[_0x9d5f('0x54')],null))[_0x9d5f('0x20')](respondWithResult(_0x9dcf01,null))[_0x9d5f('0x4e')](handleError(_0x9dcf01,null));};exports['destroy']=function(_0x1f25dd,_0x4c3926){return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x1f25dd[_0x9d5f('0x50')]['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x4c3926,null))[_0x9d5f('0x20')](removeEntity(_0x4c3926,null))['catch'](handleError(_0x4c3926,null));};exports[_0x9d5f('0x55')]=function(_0x2fb366,_0x23d71e){return db[_0x9d5f('0x49')][_0x9d5f('0x55')]()['then'](respondWithResult(_0x23d71e,null))[_0x9d5f('0x4e')](handleError(_0x23d71e,null));};var interaction_log=require(_0x9d5f('0x13'))(_0x9d5f('0x56'));exports[_0x9d5f('0x57')]=function(_0x1b4c38,_0x59f273,_0x1ac2cf){var _0x232eb5={'agent':{},'channel':_0x9d5f('0x58')};if(_0x1b4c38[_0x9d5f('0x54')]['id']){delete _0x1b4c38[_0x9d5f('0x54')]['id'];}_0x1b4c38['body'][_0x9d5f('0x59')]=!![];_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5a')]=moment()[_0x9d5f('0x5b')](_0x9d5f('0x5c'));_0x1b4c38[_0x9d5f('0x54')]['UserId']=_0x1b4c38['body'][_0x9d5f('0x5d')]||_0x1b4c38[_0x9d5f('0x5e')]['id'];_0x232eb5['agent']['id']=_0x1b4c38[_0x9d5f('0x54')]['UserId'];return db['SmsMessage'][_0x9d5f('0x52')]({'where':{'id':_0x1b4c38['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x59f273,null))['then'](saveUpdates(_0x1b4c38[_0x9d5f('0x54')],null))['then'](function(_0x2ee5fd){if(_0x2ee5fd){_0x232eb5['message']=_0x2ee5fd['get']({'plain':!![]});return db[_0x9d5f('0x5f')][_0x9d5f('0x52')]({'where':{'id':_0x2ee5fd[_0x9d5f('0x60')]}});}return null;})[_0x9d5f('0x20')](handleEntityNotFound(_0x59f273,null))['then'](function(_0x10d283){if(_0x10d283){return _0x10d283['update']({'UserId':_0x1b4c38['body'][_0x9d5f('0x5d')],'read1stAt':_[_0x9d5f('0x61')](_0x10d283[_0x9d5f('0x62')])?moment()[_0x9d5f('0x5b')](_0x9d5f('0x5c')):undefined});}return null;})['then'](function(_0x5a7c00){if(_0x5a7c00){_0x232eb5['interaction']=_0x5a7c00['get']({'plain':!![]});interaction_log['info']('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1b4c38[_0x9d5f('0x5e')]['id'],_0x1b4c38[_0x9d5f('0x5e')][_0x9d5f('0x37')],_0x1b4c38[_0x9d5f('0x5e')][_0x9d5f('0x63')],_0x232eb5['interaction']['id'],_0x1b4c38[_0x9d5f('0x54')]?JSON['stringify'](_0x1b4c38['body']):_0x9d5f('0x64'));return respondWithRpcPromise(_0x9d5f('0x65'),'acceptMessage',_0x232eb5);}return null;})[_0x9d5f('0x20')](function(_0x11a247){var _0x14a323='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x11a247[_0x9d5f('0x27')][_0x9d5f('0x66')];return db['sequelize'][_0x9d5f('0x3c')](_0x14a323,{'type':db[_0x9d5f('0x67')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x2267bd){return _0x2267bd;});})[_0x9d5f('0x20')](function(_0x56b7d6){if(_0x56b7d6){_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x68')]=_0x56b7d6[0x0];if(!_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5d')])return;return db[_0x9d5f('0x69')][_0x9d5f('0x52')]({'where':{'id':_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x5d')],'role':_0x9d5f('0x6a')},'attributes':['id','name',_0x9d5f('0x6b'),_0x9d5f('0x6c'),_0x9d5f('0x6d')],'raw':!![]});}return null;})[_0x9d5f('0x20')](function(_0x8fc895){if(!_0x8fc895)return null;_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x6a')]=_0x8fc895;return _0x232eb5;})[_0x9d5f('0x20')](function(_0x599874){if(_0x599874){if(_0x1b4c38[_0x9d5f('0x54')][_0x9d5f('0x6e')]){_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x6f')]=util[_0x9d5f('0x5b')]('SIP/%s',_0x1b4c38['user']['name']);_0x232eb5[_0x9d5f('0x27')]['channel']=_0x232eb5['channel'];_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x70')]=_0x232eb5[_0x9d5f('0x71')];_0x232eb5[_0x9d5f('0x27')][_0x9d5f('0x72')]=_0x9d5f('0x57');return respondWithRpcPromise(_0x9d5f('0x73'),'EventManager',{'event':'acceptmessage','message':_0x232eb5[_0x9d5f('0x27')]},client9002)[_0x9d5f('0x20')](function(){return _0x232eb5;});}return _0x232eb5;}return null;})[_0x9d5f('0x20')](respondWithResult(_0x59f273,null))[_0x9d5f('0x4e')](handleError(_0x59f273,null));};var interaction_log=require(_0x9d5f('0x13'))(_0x9d5f('0x56'));exports['reject']=function(_0x3fabe9,_0x19049f,_0x42fc08){var _0x51a4aa={'agent':{},'channel':_0x9d5f('0x58')};if(_0x3fabe9[_0x9d5f('0x54')]['id']){delete _0x3fabe9[_0x9d5f('0x54')]['id'];}_0x3fabe9[_0x9d5f('0x54')]['UserId']=_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')]||_0x3fabe9[_0x9d5f('0x5e')]['id'];_0x51a4aa[_0x9d5f('0x6a')]['id']=_0x3fabe9[_0x9d5f('0x54')]['UserId'];return db[_0x9d5f('0x49')][_0x9d5f('0x52')]({'where':{'id':_0x3fabe9['params']['id'],'UserId':null}})[_0x9d5f('0x20')](handleEntityNotFound(_0x19049f,null))['then'](function(_0x307e0e){if(_0x307e0e){_0x51a4aa['message']=_0x307e0e[_0x9d5f('0x74')]({'plain':!![]});return db['SmsInteraction'][_0x9d5f('0x52')]({'where':{'id':_0x307e0e[_0x9d5f('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x19049f,null))[_0x9d5f('0x20')](function(_0x29d412){if(_0x29d412){_0x51a4aa[_0x9d5f('0x75')]=_0x29d412[_0x9d5f('0x74')]({'plain':!![]});interaction_log[_0x9d5f('0x21')](_0x9d5f('0x76'),_0x3fabe9[_0x9d5f('0x5e')]['id'],_0x3fabe9['user'][_0x9d5f('0x37')],_0x3fabe9['user']['role'],_0x51a4aa[_0x9d5f('0x75')]['id'],_0x3fabe9[_0x9d5f('0x54')]?JSON[_0x9d5f('0x25')](_0x3fabe9['body']):_0x9d5f('0x64'));return respondWithRpcPromise(_0x9d5f('0x77'),'rejectMessage',_0x51a4aa);}return null;})[_0x9d5f('0x20')](function(_0x3d261a){var _0x4e093b=_0x9d5f('0x78')+_0x3d261a['message'][_0x9d5f('0x66')];return db['sequelize'][_0x9d5f('0x3c')](_0x4e093b,{'type':db[_0x9d5f('0x67')][_0x9d5f('0x79')]['SELECT'],'raw':!![]})[_0x9d5f('0x20')](function(_0x317f63){return _0x317f63;});})[_0x9d5f('0x20')](function(_0x899c62){if(_0x899c62){_0x51a4aa[_0x9d5f('0x27')][_0x9d5f('0x68')]=_0x899c62[0x0];if(!_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')])return;return db[_0x9d5f('0x69')][_0x9d5f('0x52')]({'where':{'id':_0x3fabe9[_0x9d5f('0x54')][_0x9d5f('0x5d')],'role':_0x9d5f('0x6a')},'attributes':['id',_0x9d5f('0x37'),_0x9d5f('0x6b'),_0x9d5f('0x6c'),_0x9d5f('0x6d')],'raw':!![]});}return null;})[_0x9d5f('0x20')](function(_0x2a5b42){if(!_0x2a5b42)return null;_0x51a4aa[_0x9d5f('0x27')][_0x9d5f('0x6a')]=_0x2a5b42;return _0x51a4aa;})[_0x9d5f('0x20')](function(_0x533e2c){if(_0x533e2c){_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x6f')]=util[_0x9d5f('0x5b')](_0x9d5f('0x7a'),_0x3fabe9[_0x9d5f('0x5e')][_0x9d5f('0x37')]);_0x533e2c['message'][_0x9d5f('0x71')]=_0x51a4aa['channel'];_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x70')]=_0x51a4aa[_0x9d5f('0x71')];_0x533e2c[_0x9d5f('0x27')][_0x9d5f('0x72')]='reject';respondWithRpcPromise(_0x9d5f('0x73'),'EventManager',{'event':_0x9d5f('0x7b'),'message':_0x533e2c['message']},client9002);return _0x51a4aa;}return null;})['then'](respondWithResult(_0x19049f,null))[_0x9d5f('0x4e')](handleError(_0x19049f,null));};exports[_0x9d5f('0x2a')]=function(_0x752fa4,_0x292d2f,_0x263581){if(_0x752fa4[_0x9d5f('0x54')]['id']){delete _0x752fa4[_0x9d5f('0x54')]['id'];}var _0x4e05ce;return db['SmsMessage'][_0x9d5f('0x52')]({'where':{'id':_0x752fa4[_0x9d5f('0x50')]['id']}})[_0x9d5f('0x20')](handleEntityNotFound(_0x292d2f,null))[_0x9d5f('0x20')](function(_0x502f88){if(_0x502f88){_0x4e05ce=_0x502f88;return db[_0x9d5f('0x7c')]['find']({'where':{'id':_0x502f88[_0x9d5f('0x7d')]}});}})[_0x9d5f('0x20')](handleEntityNotFound(_0x292d2f,null))['then'](function(_0x58edfa){if(_0x58edfa){logger[_0x9d5f('0x24')](_0x9d5f('0x7e'),_0x9d5f('0x2a'),_0x9d5f('0x7f'),_0x58edfa[_0x9d5f('0x3b')],util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));switch(_0x58edfa[_0x9d5f('0x3b')]){case _0x9d5f('0x81'):if(_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x82')]&&_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x82')]===_0x4e05ce[_0x9d5f('0x83')]){return _0x4e05ce['update']({'read':!![]});}else{logger['error'](_0x9d5f('0x84'),_0x9d5f('0x2a'),_0x9d5f('0x81'),util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));}break;case _0x9d5f('0x85'):if(_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x86')]&&_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x86')]===_0x4e05ce[_0x9d5f('0x83')]&&_['indexOf']([_0x9d5f('0x87'),'delivered'],_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x88')])>=0x0){return _0x4e05ce[_0x9d5f('0x34')]({'read':!![]});}else{logger[_0x9d5f('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x9d5f('0x2a'),_0x9d5f('0x89'),util[_0x9d5f('0x80')](_0x752fa4[_0x9d5f('0x54')],{'showHidden':![],'depth':null}));}break;case _0x9d5f('0x8a'):var _0x5cfaf1=_0x752fa4[_0x9d5f('0x54')][_0x9d5f('0x8b')][0x0];if(_0x5cfaf1[_0x9d5f('0x2a')][_0x9d5f('0x8c')]===_0x9d5f('0x8d')){return _0x4e05ce[_0x9d5f('0x34')]({'read':!![]});}else{logger[_0x9d5f('0x26')](_0x9d5f('0x84'),'status',_0x9d5f('0x8a'),util[_0x9d5f('0x80')](_0x752fa4['body'],{'showHidden':![],'depth':null}));}break;}return _0x4e05ce;}})[_0x9d5f('0x20')](respondWithResult(_0x292d2f,null))[_0x9d5f('0x4e')](handleError(_0x292d2f,null));};
\ No newline at end of file
index 5a1d618..47b2ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d60=['emit','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','update'];(function(_0x3516a3,_0x5ac718){var _0x10e238=function(_0x468dfc){while(--_0x468dfc){_0x3516a3['push'](_0x3516a3['shift']());}};_0x10e238(++_0x5ac718);}(_0x1d60,0x1f3));var _0x01d6=function(_0x45b7d4,_0x29be3b){_0x45b7d4=_0x45b7d4-0x0;var _0x42393f=_0x1d60[_0x45b7d4];return _0x42393f;};'use strict';var EventEmitter=require(_0x01d6('0x0'));var SmsMessage=require(_0x01d6('0x1'))['db'][_0x01d6('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x01d6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x01d6('0x4'),'afterDestroy':'remove'};function emitEvent(_0x363709){return function(_0x1b253f,_0x279f9a,_0x2d0833){SmsMessageEvents[_0x01d6('0x5')](_0x363709+':'+_0x1b253f['id'],_0x1b253f);SmsMessageEvents[_0x01d6('0x5')](_0x363709,_0x1b253f);_0x2d0833(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x01d6('0x6')](e,emitEvent(event));}}module[_0x01d6('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x424d=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x424d,0x1a7));var _0xd424=function(_0x8cd627,_0x1bf5ca){_0x8cd627=_0x8cd627-0x0;var _0x7e454=_0x424d[_0x8cd627];return _0x7e454;};'use strict';var EventEmitter=require(_0xd424('0x0'));var SmsMessage=require(_0xd424('0x1'))['db'][_0xd424('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd424('0x3')](0x0);var events={'afterCreate':_0xd424('0x4'),'afterUpdate':_0xd424('0x5'),'afterDestroy':_0xd424('0x6')};function emitEvent(_0x3f88bd){return function(_0x4f1f9e,_0x5e8624,_0x403759){SmsMessageEvents[_0xd424('0x7')](_0x3f88bd+':'+_0x4f1f9e['id'],_0x4f1f9e);SmsMessageEvents[_0xd424('0x7')](_0x3f88bd,_0x4f1f9e);_0x403759(null);};}for(var e in events){if(events[_0xd424('0x8')](e)){var event=events[e];SmsMessage[_0xd424('0x9')](e,emitEvent(event));}}module[_0xd424('0xa')]=SmsMessageEvents;
\ No newline at end of file
index 62c0620..37f3c0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54cf=['accountSid','authToken','phone','messages','remote','/api/sms/messages/','token','sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','message_id','clickSend','inspect','authId','/status?token=','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','login','text','timestamp','keys','length','apiKey','createHash','md5','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','bandwidth','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path','rimraf','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','direction','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','toLowerCase','error','SmsAccount','find','SmsAccountId','type','twilio'];(function(_0x2da402,_0x14a691){var _0x31a57d=function(_0x3cfb60){while(--_0x3cfb60){_0x2da402['push'](_0x2da402['shift']());}};_0x31a57d(++_0x14a691);}(_0x54cf,0x143));var _0xf54c=function(_0x205f24,_0x19d9ca){_0x205f24=_0x205f24-0x0;var _0xa40691=_0x54cf[_0x205f24];return _0xa40691;};'use strict';var _=require(_0xf54c('0x0'));var util=require(_0xf54c('0x1'));var logger=require('../../config/logger')(_0xf54c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf54c('0x3'));var fs=require('fs');var path=require(_0xf54c('0x4'));var rimraf=require(_0xf54c('0x5'));var config=require('../../config/environment');var attributes=require('./smsMessage.attributes');module['exports']=function(_0x3889a4,_0x32e2de){return _0x3889a4[_0xf54c('0x6')](_0xf54c('0x7'),attributes,{'tableName':_0xf54c('0x8'),'paranoid':![],'indexes':[{'name':_0xf54c('0x9'),'fields':['messageId']},{'name':_0xf54c('0xa'),'fields':[_0xf54c('0xb')],'type':_0xf54c('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x59cec4,_0xc5316f,_0x331b22){var _0x4ee4f5=_0x3889a4['models'];var _0x23e1d3=_0x59cec4['get']({'plain':!![]});if(_0x23e1d3[_0xf54c('0xd')]['toLowerCase']()==='in'||_0x23e1d3[_0xf54c('0xd')]['toLowerCase']()===_0xf54c('0xe')&&!_0x23e1d3[_0xf54c('0xf')]&&!_[_0xf54c('0x10')](_0x23e1d3[_0xf54c('0x11')])&&!_[_0xf54c('0x10')](_0x23e1d3[_0xf54c('0x12')])){_0x4ee4f5[_0xf54c('0x13')][_0xf54c('0x14')]({'where':{'id':_0x23e1d3['SmsInteractionId']}})[_0xf54c('0x15')](function(_0x3d2abd){if(_0x3d2abd){_0x3d2abd[_0xf54c('0x16')]({'lastMsgAt':_0x23e1d3[_0xf54c('0x17')],'lastMsgDirection':_0x23e1d3[_0xf54c('0xd')][_0xf54c('0x18')]()});}})['catch'](function(_0x4408b8){console[_0xf54c('0x19')](_0x4408b8);});}if(_0x23e1d3[_0xf54c('0xd')]===_0xf54c('0xe')&&!_0x23e1d3[_0xf54c('0xf')]){var _0x1bcb39;_0x4ee4f5[_0xf54c('0x1a')][_0xf54c('0x1b')]({'where':{'id':_0x23e1d3[_0xf54c('0x1c')]},'raw':!![]})[_0xf54c('0x15')](function(_0x40e3fc){_0x1bcb39=_0x40e3fc;if(_0x1bcb39&&_0x1bcb39[_0xf54c('0x1d')]){switch(_0x1bcb39[_0xf54c('0x1d')]){case _0xf54c('0x1e'):var _0x460a43=require(_0xf54c('0x1e'));if(_0x1bcb39[_0xf54c('0x1f')]&&_0x1bcb39[_0xf54c('0x20')]&&_0x1bcb39[_0xf54c('0x21')]){var _0x435144=new _0x460a43(_0x1bcb39[_0xf54c('0x1f')],_0x1bcb39[_0xf54c('0x20')]);_0x435144[_0xf54c('0x22')]['create']({'body':_0x23e1d3[_0xf54c('0xb')],'to':_0x23e1d3['phone'],'from':_0x1bcb39[_0xf54c('0x21')],'statusCallback':_0x1bcb39[_0xf54c('0x23')]+_0xf54c('0x24')+_0x23e1d3['id']+'/status?token='+_0x1bcb39[_0xf54c('0x25')]})['then'](function(_0x13d16c){if(_0x13d16c[_0xf54c('0x26')]){return _0x59cec4[_0xf54c('0x16')]({'messageId':_0x13d16c[_0xf54c('0x26')]});}})[_0xf54c('0x27')](function(_0x394f8b){logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x1e'),util['inspect'](_0x394f8b,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x1e'),_0xf54c('0x2a'));}break;case _0xf54c('0x2b'):var _0x1c1831=_0xf54c('0x2c');if(_0x1bcb39[_0xf54c('0x2d')]&&_0x1bcb39[_0xf54c('0x2e')]){var _0x24a790={'recipient':[_0x23e1d3[_0xf54c('0x21')]],'message':_0x23e1d3[_0xf54c('0xb')],'message_type':_0x1bcb39[_0xf54c('0x2f')]};if(_0x1bcb39['smsMethod']&&_0x1bcb39[_0xf54c('0x2f')]!=='SI'){_0x24a790[_0xf54c('0x30')]=_0x1bcb39[_0xf54c('0x21')];}var _0x224781={'url':_0x1c1831+_0xf54c('0x31')+_0x1bcb39[_0xf54c('0x2d')]+_0xf54c('0x32')+_0x1bcb39[_0xf54c('0x2e')],'method':_0xf54c('0x33')};rp(_0x224781)[_0xf54c('0x15')](function(_0x598015){var _0x54e97b=_0x598015[_0xf54c('0x34')](';');var _0xa768d4={'user_key':_0x54e97b[0x0],'session_key':_0x54e97b[0x1]};_0x224781={'url':_0x1c1831+_0xf54c('0x35'),'method':_0xf54c('0x36'),'headers':{'user_key':_0xa768d4[_0xf54c('0x37')],'Session_key':_0xa768d4['session_key']},'json':!![],'body':_0x24a790};return rp(_0x224781);})[_0xf54c('0x15')](function(_0xc6d677){if(_0xc6d677[_0xf54c('0x38')]>=0x1){var _0x1ab0fd={'messageId':_0xc6d677[_0xf54c('0x39')]};if(_0x1bcb39[_0xf54c('0x2f')]!=='GP'||!_0x1bcb39[_0xf54c('0x3a')]){_0x1ab0fd[_0xf54c('0x3b')]=!![];}return _0x59cec4[_0xf54c('0x16')](_0x1ab0fd);}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),'skebby',util['inspect'](_0xc6d677,{'showHidden':![],'depth':null}));}})[_0xf54c('0x27')](function(_0x1fc93f){return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),'skebby',util['inspect'](_0x1fc93f,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x2b'),_0xf54c('0x3c'));}break;case _0xf54c('0x3d'):if(_0x1bcb39[_0xf54c('0x20')]){var _0x566fba={'recipient':_0x23e1d3[_0xf54c('0x21')],'message':_0x23e1d3[_0xf54c('0xb')],'sender':_0x1bcb39[_0xf54c('0x3e')]||_0x1bcb39['phone'],'authorization':_0x1bcb39[_0xf54c('0x20')]};var _0xc5316f={'method':_0xf54c('0x36'),'uri':_0xf54c('0x3f'),'body':_0x566fba,'json':!![]};rp(_0xc5316f)['then'](function(_0x32b038){var _0x21a6f4={'messageId':_0x32b038['requestid']};if(!_0x1bcb39[_0xf54c('0x3a')]){_0x21a6f4[_0xf54c('0x3b')]=!![];}return _0x59cec4[_0xf54c('0x16')](_0x21a6f4);})[_0xf54c('0x27')](function(_0x473806){logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x3d'),util['inspect'](_0x473806,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x3d'),_0xf54c('0x40'));}break;case _0xf54c('0x41'):if(_0x1bcb39['username']&&_0x1bcb39[_0xf54c('0x2e')]){var _0x566fba={'messages':[{'source':'xCALLY\x20Motion','to':_0x23e1d3['phone'],'body':_0x23e1d3['body'],'from':_0x1bcb39[_0xf54c('0x3e')]||_0x1bcb39[_0xf54c('0x21')]}]};var _0x3ba3d2=util[_0xf54c('0x42')](_0xf54c('0x43'),_0x1bcb39[_0xf54c('0x2d')],_0x1bcb39[_0xf54c('0x2e')]);var _0xc5316f={'method':_0xf54c('0x36'),'uri':_0xf54c('0x44'),'body':_0x566fba,'headers':{'Authorization':util['format'](_0xf54c('0x45'),new Buffer(_0x3ba3d2)[_0xf54c('0x46')](_0xf54c('0x47')))},'json':!![]};rp(_0xc5316f)['then'](function(_0x4314da){if(_0x4314da[_0xf54c('0x48')]>=0xc8&&_0x4314da['http_code']<=0xce){if(_0x4314da[_0xf54c('0x49')]&&_0x4314da[_0xf54c('0x49')][_0xf54c('0x4a')]>0x0){var _0x1318b2=_['head'](_0x4314da[_0xf54c('0x49')]['messages']);var _0x162f0c={'messageId':_0x1318b2[_0xf54c('0x4b')]};if(!_0x1bcb39[_0xf54c('0x3a')]){_0x162f0c[_0xf54c('0x3b')]=!![];}return _0x59cec4[_0xf54c('0x16')](_0x162f0c);}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),'afterCreate',_0xf54c('0x4c'),util[_0xf54c('0x4d')](_0x4314da,{'showHidden':![],'depth':null}));}}else{logger[_0xf54c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf54c('0x4c'),util[_0xf54c('0x4d')](_0x4314da,{'showHidden':![],'depth':null}));}})[_0xf54c('0x27')](function(_0x179907){logger[_0xf54c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf54c('0x29'),_0xf54c('0x4c'),util[_0xf54c('0x4d')](_0x179907,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x4c'),_0xf54c('0x3c'));}break;case'plivo':if(_0x1bcb39[_0xf54c('0x4e')]&&_0x1bcb39[_0xf54c('0x20')]){var _0x566fba={'dst':_0x23e1d3['phone'],'text':_0x23e1d3['body'],'src':_0x1bcb39[_0xf54c('0x3e')]||_0x1bcb39[_0xf54c('0x21')],'url':_0x1bcb39[_0xf54c('0x23')]+'/api/sms/messages/'+_0x23e1d3['id']+_0xf54c('0x4f')+_0x1bcb39[_0xf54c('0x25')]};var _0x3ba3d2=util[_0xf54c('0x42')]('%s:%s',_0x1bcb39['authId'],_0x1bcb39[_0xf54c('0x20')]);var _0xc5316f={'method':'POST','uri':util[_0xf54c('0x42')]('https://api.plivo.com/v1/Account/%s/Message/',_0x1bcb39['authId']),'body':_0x566fba,'headers':{'Authorization':util[_0xf54c('0x42')]('Basic\x20%s',new Buffer(_0x3ba3d2)['toString'](_0xf54c('0x47')))},'json':!![]};rp(_0xc5316f)['then'](function(_0x2b8f0a){var _0x54b1bf={'messageId':_0x2b8f0a[_0xf54c('0x50')][0x0]};return _0x59cec4[_0xf54c('0x16')](_0x54b1bf);})[_0xf54c('0x27')](function(_0x27f069){logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x51'),util[_0xf54c('0x4d')](_0x27f069,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),'afterCreate',_0xf54c('0x51'),_0xf54c('0x52'));}break;case _0xf54c('0x53'):if(_0x1bcb39['username']&&_0x1bcb39['password']){if(_0x1bcb39[_0xf54c('0x54')]){var _0x5349d3={'method':_0xf54c('0x36'),'uri':_0x1bcb39[_0xf54c('0x54')]+'/auth/1/session','body':{'username':_0x1bcb39['username'],'password':_0x1bcb39[_0xf54c('0x2e')]},'json':!![]};return rp(_0x5349d3)[_0xf54c('0x15')](function(_0x1f5533){var _0x579164={'method':_0xf54c('0x36'),'uri':_0x1bcb39[_0xf54c('0x54')]+_0xf54c('0x55'),'body':{'messages':[{'from':_0x1bcb39[_0xf54c('0x21')],'destinations':[{'to':_0x23e1d3[_0xf54c('0x21')]}],'text':_0x23e1d3[_0xf54c('0xb')],'notifyUrl':_0x1bcb39[_0xf54c('0x23')]+_0xf54c('0x24')+_0x23e1d3['id']+_0xf54c('0x4f')+_0x1bcb39['token'],'notifyContentType':_0xf54c('0x56'),'callbackData':_0x1bcb39[_0xf54c('0x21')]+';'+_0x23e1d3['body']}]},'headers':{'Authorization':_0xf54c('0x57')+_0x1f5533[_0xf54c('0x25')]},'json':!![]};return rp(_0x579164)[_0xf54c('0x15')](function(_0x167ebf){if(_0x167ebf[_0xf54c('0x22')]){var _0xd11e0f={'messageId':_0x167ebf[_0xf54c('0x22')][0x0][_0xf54c('0x9')]};if(!_0x1bcb39[_0xf54c('0x3a')]){_0xd11e0f[_0xf54c('0x3b')]=!![];}return _0x59cec4['update'](_0xd11e0f);}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x53'),util[_0xf54c('0x4d')](_0x167ebf,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x20cfe1){return logger[_0xf54c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf54c('0x29'),_0xf54c('0x53'),util[_0xf54c('0x4d')](_0x20cfe1,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x53'),'Missing\x20parameters:\x20base_url');}}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),'afterCreate',_0xf54c('0x53'),_0xf54c('0x3c'));}break;case'csc':var _0x22ef2f=require('crypto');if(_0x1bcb39['apiKey']){var _0x166ad1={};_0x166ad1[_0xf54c('0x58')]=_0x1bcb39[_0xf54c('0x2d')];_0x166ad1[_0xf54c('0x21')]=_0x23e1d3[_0xf54c('0x21')];_0x166ad1[_0xf54c('0x30')]=_0x1bcb39[_0xf54c('0x21')];_0x166ad1[_0xf54c('0x59')]=_0x23e1d3[_0xf54c('0xb')];_0x166ad1[_0xf54c('0x5a')]=+new Date();var _0xc048e1='';var _0x380b58='';var _0x1c1f1b=Object[_0xf54c('0x5b')](_0x166ad1);_0x1c1f1b['sort']();for(var _0x3d0ff1=0x0;_0x3d0ff1<_0x1c1f1b[_0xf54c('0x5c')];_0x3d0ff1++){if(_0xc048e1!=''){_0xc048e1+='&';}_0xc048e1+=_0x1c1f1b[_0x3d0ff1]+'='+encodeURIComponent(_0x166ad1[_0x1c1f1b[_0x3d0ff1]]);_0x380b58+=_0x166ad1[_0x1c1f1b[_0x3d0ff1]];}_0x380b58+=_0x1bcb39[_0xf54c('0x5d')];_0x380b58=_0x22ef2f[_0xf54c('0x5e')](_0xf54c('0x5f'))[_0xf54c('0x16')](_0x380b58)['digest'](_0xf54c('0x60'));if(_0xc048e1!==''){_0xc048e1+='&';}_0xc048e1+=_0xf54c('0x61')+_0x380b58;var _0x224781={'method':_0xf54c('0x33'),'uri':_0x1bcb39[_0xf54c('0x54')]+_0xf54c('0x62')+_0xc048e1,'json':!![]};return rp(_0x224781)[_0xf54c('0x15')](function(_0x1e0a34){var _0x32ee45=Object['keys'](_0x1e0a34);if(_0x1e0a34[_0x32ee45[0x0]]['error']&&parseInt(_0x1e0a34[_0x32ee45[0x0]][_0xf54c('0x19')])===0x0){var _0x15e65b={'messageId':_0x1e0a34[_0x32ee45[0x0]][_0xf54c('0x63')]};if(!_0x1bcb39['deliveryReport']){_0x15e65b[_0xf54c('0x3b')]=!![];}return _0x59cec4[_0xf54c('0x16')](_0x15e65b);}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),'csc',util[_0xf54c('0x4d')](_0x1e0a34['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x3a4203){return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),'csc',util[_0xf54c('0x4d')](_0x3a4203,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),'afterCreate','csc',_0xf54c('0x64'));}break;case _0xf54c('0x65'):if(_0x1bcb39['apiKey']){var _0xba50e8={'method':_0xf54c('0x36'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x1bcb39[_0xf54c('0x5d')]},'body':{'content':_0x23e1d3[_0xf54c('0xb')],'to':[_0x23e1d3[_0xf54c('0x21')]],'from':_0x1bcb39['phone'],'binary':![],'clientMessageId':_0xf54c('0x66'),'charset':_0xf54c('0x67')},'json':!![]};rp(_0xba50e8)[_0xf54c('0x15')](function(_0x1afe2f){if(!_0x1afe2f['error']){var _0x45fbf4={'messageId':_0x1afe2f[_0xf54c('0x22')][0x0]['apiMessageId']};if(!_0x1bcb39[_0xf54c('0x3a')]){_0x45fbf4[_0xf54c('0x3b')]=!![];}return _0x59cec4[_0xf54c('0x16')](_0x45fbf4);}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x65'),util[_0xf54c('0x4d')](_0x1afe2f[_0xf54c('0x19')],{'showHidden':![],'depth':null}));}})[_0xf54c('0x27')](function(_0x461a8d){return logger['error'](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x65'),util['inspect'](_0x461a8d,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x65'),'Missing\x20parameters:\x20apiKey');}break;case _0xf54c('0x68'):if(_0x1bcb39[_0xf54c('0x2d')]&&_0x1bcb39[_0xf54c('0x2e')]){var _0x3ba3d2=util[_0xf54c('0x42')](_0xf54c('0x43'),_0x1bcb39['username'],_0x1bcb39['password']);var _0xc5316f={'method':'POST','uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x1bcb39[_0xf54c('0x69')]+'/messages','body':{'to':[_0x23e1d3[_0xf54c('0x21')]],'text':_0x23e1d3[_0xf54c('0xb')],'from':_0x1bcb39[_0xf54c('0x21')],'applicationId':_0x1bcb39[_0xf54c('0x6a')]},'headers':{'Authorization':util['format'](_0xf54c('0x45'),new Buffer(_0x3ba3d2)['toString']('base64'))},'json':!![]};rp(_0xc5316f)[_0xf54c('0x15')](function(_0x5043c6){if(_0x5043c6['id']){var _0x11be21={'messageId':_0x5043c6['id']};return _0x59cec4[_0xf54c('0x16')](_0x11be21);}else{logger['error'](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x68'),util[_0xf54c('0x4d')](_0x5043c6,{'showHidden':![],'depth':null}));}})[_0xf54c('0x27')](function(_0x48f990){logger[_0xf54c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf54c('0x29'),'bandwidth',util[_0xf54c('0x4d')](_0x48f990,{'showHidden':![],'depth':null}));});}else{logger[_0xf54c('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf54c('0x29'),_0xf54c('0x68'),_0xf54c('0x3c'));}break;case _0xf54c('0x6b'):if(_0x1bcb39[_0xf54c('0x5d')]){var _0x5d9788={};var _0x224781={'method':_0xf54c('0x36'),'uri':_0xf54c('0x6c'),'headers':{'Authorization':_0xf54c('0x6d')+_0x1bcb39[_0xf54c('0x5d')],'Content-Type':_0xf54c('0x56')},'body':{'from':_0x1bcb39[_0xf54c('0x21')],'to':_0x23e1d3[_0xf54c('0x21')],'text':_0x23e1d3[_0xf54c('0xb')]},'json':!![]};return rp(_0x224781)[_0xf54c('0x15')](function(_0x868d4e){if(_0x868d4e['code']==0xca){_0x5d9788[_0xf54c('0x6e')]=_0x868d4e;var _0x2035dc={'method':_0xf54c('0x36'),'uri':_0xf54c('0x6f'),'headers':{'Authorization':_0xf54c('0x6d')+_0x1bcb39[_0xf54c('0x5d')],'Content-Type':_0xf54c('0x56')},'body':{'refid':_0x5d9788['message'][_0xf54c('0x70')]},'json':!![]};return rp(_0x2035dc)[_0xf54c('0x15')](function(_0x4d25be){_0x5d9788[_0xf54c('0x71')]=_0x4d25be;var _0x547b03={'messageId':_0x5d9788[_0xf54c('0x6e')][_0xf54c('0x70')],'read':!![]};return _0x59cec4[_0xf54c('0x16')](_0x547b03);});}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),'afterCreate',_0xf54c('0x6b'),util[_0xf54c('0x4d')](_0x868d4e,{'showHidden':![],'depth':null}));}})[_0xf54c('0x27')](function(_0x3f634a){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf54c('0x29'),_0xf54c('0x6b'),util[_0xf54c('0x4d')](_0x3f634a,{'showHidden':![],'depth':null}));});}else{return logger[_0xf54c('0x19')](_0xf54c('0x28'),_0xf54c('0x29'),_0xf54c('0x6b'),_0xf54c('0x72'));}break;}}})[_0xf54c('0x73')](function(){_0x331b22();});}else{_0x331b22();}}},'charset':_0xf54c('0x74'),'collate':_0xf54c('0x75')});};
\ No newline at end of file
+var _0xb08e=['bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','toString','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','fti_sms_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','findOne','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','token','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','login?username=','&password=','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','messageId','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','sender','timestamp','keys','sort','length','md5','digest','hex','/external/get/send.php?','Missing\x20parameters:\x20apiKey','UTF-8','clickatell'];(function(_0x474d97,_0x5909ce){var _0x1edf25=function(_0x2831df){while(--_0x2831df){_0x474d97['push'](_0x474d97['shift']());}};_0x1edf25(++_0x5909ce);}(_0xb08e,0x182));var _0xeb08=function(_0x376836,_0x2ea4b8){_0x376836=_0x376836-0x0;var _0xc2805a=_0xb08e[_0x376836];return _0xc2805a;};'use strict';var _=require('lodash');var util=require(_0xeb08('0x0'));var logger=require(_0xeb08('0x1'))('api');var moment=require(_0xeb08('0x2'));var BPromise=require(_0xeb08('0x3'));var rp=require(_0xeb08('0x4'));var fs=require('fs');var path=require(_0xeb08('0x5'));var rimraf=require(_0xeb08('0x6'));var config=require(_0xeb08('0x7'));var attributes=require('./smsMessage.attributes');module[_0xeb08('0x8')]=function(_0x2d878d,_0xe5c9e3){return _0x2d878d[_0xeb08('0x9')](_0xeb08('0xa'),attributes,{'tableName':_0xeb08('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xeb08('0xc'),'fields':[_0xeb08('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x89094b,_0xd056c0,_0x3badb9){var _0x2b8104=_0x2d878d[_0xeb08('0xe')];var _0x40dbfb=_0x89094b[_0xeb08('0xf')]({'plain':!![]});if(_0x40dbfb[_0xeb08('0x10')]['toLowerCase']()==='in'||_0x40dbfb[_0xeb08('0x10')][_0xeb08('0x11')]()===_0xeb08('0x12')&&!_0x40dbfb[_0xeb08('0x13')]&&!_[_0xeb08('0x14')](_0x40dbfb[_0xeb08('0x15')])&&!_[_0xeb08('0x14')](_0x40dbfb[_0xeb08('0x16')])){_0x2b8104['SmsInteraction'][_0xeb08('0x17')]({'where':{'id':_0x40dbfb[_0xeb08('0x16')]}})[_0xeb08('0x18')](function(_0x120028){if(_0x120028){_0x120028['update']({'lastMsgAt':_0x40dbfb[_0xeb08('0x19')],'lastMsgDirection':_0x40dbfb[_0xeb08('0x10')]['toLowerCase']()});}})[_0xeb08('0x1a')](function(_0x3f091c){console[_0xeb08('0x1b')](_0x3f091c);});}if(_0x40dbfb[_0xeb08('0x10')]===_0xeb08('0x12')&&!_0x40dbfb[_0xeb08('0x13')]){var _0x4306f5;_0x2b8104[_0xeb08('0x1c')][_0xeb08('0x1d')]({'where':{'id':_0x40dbfb[_0xeb08('0x1e')]},'raw':!![]})[_0xeb08('0x18')](function(_0x5bde79){_0x4306f5=_0x5bde79;if(_0x4306f5&&_0x4306f5[_0xeb08('0x1f')]){switch(_0x4306f5[_0xeb08('0x1f')]){case _0xeb08('0x20'):var _0x4e727a=require('twilio');if(_0x4306f5[_0xeb08('0x21')]&&_0x4306f5[_0xeb08('0x22')]&&_0x4306f5[_0xeb08('0x23')]){var _0x297945=new _0x4e727a(_0x4306f5[_0xeb08('0x21')],_0x4306f5[_0xeb08('0x22')]);_0x297945[_0xeb08('0x24')][_0xeb08('0x25')]({'body':_0x40dbfb[_0xeb08('0xd')],'to':_0x40dbfb['phone'],'from':_0x4306f5[_0xeb08('0x23')],'statusCallback':_0x4306f5[_0xeb08('0x26')]+'/api/sms/messages/'+_0x40dbfb['id']+_0xeb08('0x27')+_0x4306f5[_0xeb08('0x28')]})[_0xeb08('0x18')](function(_0x1c1467){if(_0x1c1467[_0xeb08('0x29')]){return _0x89094b[_0xeb08('0x2a')]({'messageId':_0x1c1467['sid']});}})[_0xeb08('0x1a')](function(_0x1f212c){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'twilio',util[_0xeb08('0x2d')](_0x1f212c,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x20'),_0xeb08('0x2e'));}break;case _0xeb08('0x2f'):var _0xdb4e2f='https://api.skebby.it/API/v1.0/REST/';if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){var _0x40ab54={'recipient':[_0x40dbfb[_0xeb08('0x23')]],'message':_0x40dbfb[_0xeb08('0xd')],'message_type':_0x4306f5['smsMethod']};if(_0x4306f5[_0xeb08('0x32')]&&_0x4306f5['smsMethod']!=='SI'){_0x40ab54['sender']=_0x4306f5[_0xeb08('0x23')];}var _0x190a06={'url':_0xdb4e2f+_0xeb08('0x33')+_0x4306f5[_0xeb08('0x30')]+_0xeb08('0x34')+_0x4306f5[_0xeb08('0x31')],'method':_0xeb08('0x35')};rp(_0x190a06)[_0xeb08('0x18')](function(_0x594416){var _0x2ca6d9=_0x594416[_0xeb08('0x36')](';');var _0xaca8ba={'user_key':_0x2ca6d9[0x0],'session_key':_0x2ca6d9[0x1]};_0x190a06={'url':_0xdb4e2f+_0xeb08('0x37'),'method':_0xeb08('0x38'),'headers':{'user_key':_0xaca8ba['user_key'],'Session_key':_0xaca8ba[_0xeb08('0x39')]},'json':!![],'body':_0x40ab54};return rp(_0x190a06);})[_0xeb08('0x18')](function(_0x4f96dd){if(_0x4f96dd[_0xeb08('0x3a')]>=0x1){var _0x149284={'messageId':_0x4f96dd[_0xeb08('0x3b')]};if(_0x4306f5['smsMethod']!=='GP'||!_0x4306f5[_0xeb08('0x3c')]){_0x149284[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x149284);}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x2f'),util['inspect'](_0x4f96dd,{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x9dd247){return logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),'skebby',util[_0xeb08('0x2d')](_0x9dd247,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x2f'),_0xeb08('0x3e'));}break;case _0xeb08('0x3f'):if(_0x4306f5[_0xeb08('0x22')]){var _0x580074={'recipient':_0x40dbfb[_0xeb08('0x23')],'message':_0x40dbfb[_0xeb08('0xd')],'sender':_0x4306f5['senderString']||_0x4306f5[_0xeb08('0x23')],'authorization':_0x4306f5[_0xeb08('0x22')]};var _0xd056c0={'method':'POST','uri':_0xeb08('0x40'),'body':_0x580074,'json':!![]};rp(_0xd056c0)['then'](function(_0x30dd92){var _0x3cf430={'messageId':_0x30dd92[_0xeb08('0x41')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x3cf430['read']=!![];}return _0x89094b[_0xeb08('0x2a')](_0x3cf430);})[_0xeb08('0x1a')](function(_0x397a67){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'connectel',util[_0xeb08('0x2d')](_0x397a67,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x3f'),_0xeb08('0x42'));}break;case'clicksend':if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){var _0x580074={'messages':[{'source':'xCALLY\x20Motion','to':_0x40dbfb[_0xeb08('0x23')],'body':_0x40dbfb['body'],'from':_0x4306f5[_0xeb08('0x43')]||_0x4306f5[_0xeb08('0x23')]}]};var _0x3c0e7f=util[_0xeb08('0x44')](_0xeb08('0x45'),_0x4306f5[_0xeb08('0x30')],_0x4306f5[_0xeb08('0x31')]);var _0xd056c0={'method':_0xeb08('0x38'),'uri':_0xeb08('0x46'),'body':_0x580074,'headers':{'Authorization':util[_0xeb08('0x44')](_0xeb08('0x47'),new Buffer(_0x3c0e7f)['toString'](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)[_0xeb08('0x18')](function(_0x2da032){if(_0x2da032[_0xeb08('0x49')]>=0xc8&&_0x2da032['http_code']<=0xce){if(_0x2da032['data']&&_0x2da032[_0xeb08('0x4a')][_0xeb08('0x4b')]>0x0){var _0x457f0e=_[_0xeb08('0x4c')](_0x2da032[_0xeb08('0x4a')][_0xeb08('0x24')]);var _0x29fd6d={'messageId':_0x457f0e[_0xeb08('0x4d')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x29fd6d[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x29fd6d);}else{logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x2da032,{'showHidden':![],'depth':null}));}}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x2da032,{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x93cc02){logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4e'),util[_0xeb08('0x2d')](_0x93cc02,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),'clickSend',_0xeb08('0x3e'));}break;case _0xeb08('0x4f'):if(_0x4306f5[_0xeb08('0x50')]&&_0x4306f5[_0xeb08('0x22')]){var _0x580074={'dst':_0x40dbfb['phone'],'text':_0x40dbfb[_0xeb08('0xd')],'src':_0x4306f5[_0xeb08('0x43')]||_0x4306f5['phone'],'url':_0x4306f5['remote']+_0xeb08('0x51')+_0x40dbfb['id']+'/status?token='+_0x4306f5[_0xeb08('0x28')]};var _0x3c0e7f=util[_0xeb08('0x44')](_0xeb08('0x45'),_0x4306f5[_0xeb08('0x50')],_0x4306f5[_0xeb08('0x22')]);var _0xd056c0={'method':_0xeb08('0x38'),'uri':util[_0xeb08('0x44')](_0xeb08('0x52'),_0x4306f5[_0xeb08('0x50')]),'body':_0x580074,'headers':{'Authorization':util[_0xeb08('0x44')](_0xeb08('0x47'),new Buffer(_0x3c0e7f)['toString'](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)[_0xeb08('0x18')](function(_0x3a9b60){var _0xf39500={'messageId':_0x3a9b60['message_uuid'][0x0]};return _0x89094b[_0xeb08('0x2a')](_0xf39500);})[_0xeb08('0x1a')](function(_0x449ad1){logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x4f'),util[_0xeb08('0x2d')](_0x449ad1,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x4306f5[_0xeb08('0x30')]&&_0x4306f5[_0xeb08('0x31')]){if(_0x4306f5['baseUrl']){var _0x1d51ae={'method':_0xeb08('0x38'),'uri':_0x4306f5[_0xeb08('0x53')]+'/auth/1/session','body':{'username':_0x4306f5['username'],'password':_0x4306f5[_0xeb08('0x31')]},'json':!![]};return rp(_0x1d51ae)[_0xeb08('0x18')](function(_0x5ba320){var _0x5bcb5d={'method':_0xeb08('0x38'),'uri':_0x4306f5['baseUrl']+_0xeb08('0x54'),'body':{'messages':[{'from':_0x4306f5['phone'],'destinations':[{'to':_0x40dbfb[_0xeb08('0x23')]}],'text':_0x40dbfb[_0xeb08('0xd')],'notifyUrl':_0x4306f5[_0xeb08('0x26')]+_0xeb08('0x51')+_0x40dbfb['id']+_0xeb08('0x27')+_0x4306f5['token'],'notifyContentType':_0xeb08('0x55'),'callbackData':_0x4306f5[_0xeb08('0x23')]+';'+_0x40dbfb[_0xeb08('0xd')]}]},'headers':{'Authorization':_0xeb08('0x56')+_0x5ba320[_0xeb08('0x28')]},'json':!![]};return rp(_0x5bcb5d)[_0xeb08('0x18')](function(_0x2d153f){if(_0x2d153f[_0xeb08('0x24')]){var _0x111198={'messageId':_0x2d153f[_0xeb08('0x24')][0x0][_0xeb08('0x57')]};if(!_0x4306f5[_0xeb08('0x3c')]){_0x111198[_0xeb08('0x3d')]=!![];}return _0x89094b['update'](_0x111198);}else{return logger['error'](_0xeb08('0x2b'),_0xeb08('0x2c'),'infobip',util['inspect'](_0x2d153f,{'showHidden':![],'depth':null}));}});})[_0xeb08('0x1a')](function(_0x1604b7){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x58'),util[_0xeb08('0x2d')](_0x1604b7,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x58'),_0xeb08('0x59'));}}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x58'),_0xeb08('0x3e'));}break;case _0xeb08('0x5a'):var _0x13bdec=require(_0xeb08('0x5b'));if(_0x4306f5[_0xeb08('0x5c')]){var _0x10e74e={};_0x10e74e[_0xeb08('0x5d')]=_0x4306f5['username'];_0x10e74e[_0xeb08('0x23')]=_0x40dbfb[_0xeb08('0x23')];_0x10e74e[_0xeb08('0x5e')]=_0x4306f5['phone'];_0x10e74e['text']=_0x40dbfb[_0xeb08('0xd')];_0x10e74e[_0xeb08('0x5f')]=+new Date();var _0xb9d6b1='';var _0x208a64='';var _0x3c2a4f=Object[_0xeb08('0x60')](_0x10e74e);_0x3c2a4f[_0xeb08('0x61')]();for(var _0xa4dca6=0x0;_0xa4dca6<_0x3c2a4f[_0xeb08('0x62')];_0xa4dca6++){if(_0xb9d6b1!=''){_0xb9d6b1+='&';}_0xb9d6b1+=_0x3c2a4f[_0xa4dca6]+'='+encodeURIComponent(_0x10e74e[_0x3c2a4f[_0xa4dca6]]);_0x208a64+=_0x10e74e[_0x3c2a4f[_0xa4dca6]];}_0x208a64+=_0x4306f5[_0xeb08('0x5c')];_0x208a64=_0x13bdec['createHash'](_0xeb08('0x63'))[_0xeb08('0x2a')](_0x208a64)[_0xeb08('0x64')](_0xeb08('0x65'));if(_0xb9d6b1!==''){_0xb9d6b1+='&';}_0xb9d6b1+='signature='+_0x208a64;var _0x190a06={'method':_0xeb08('0x35'),'uri':_0x4306f5[_0xeb08('0x53')]+_0xeb08('0x66')+_0xb9d6b1,'json':!![]};return rp(_0x190a06)[_0xeb08('0x18')](function(_0x409417){var _0x5550b6=Object[_0xeb08('0x60')](_0x409417);if(_0x409417[_0x5550b6[0x0]]['error']&&parseInt(_0x409417[_0x5550b6[0x0]][_0xeb08('0x1b')])===0x0){var _0x30f903={'messageId':_0x409417[_0x5550b6[0x0]]['id_sms']};if(!_0x4306f5[_0xeb08('0x3c')]){_0x30f903[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x30f903);}else{return logger['error'](_0xeb08('0x2b'),'afterCreate','csc',util[_0xeb08('0x2d')](_0x409417[_0xeb08('0x1b')],{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x5cd62){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate',_0xeb08('0x5a'),util[_0xeb08('0x2d')](_0x5cd62,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x5a'),_0xeb08('0x67'));}break;case'clickatell':if(_0x4306f5[_0xeb08('0x5c')]){var _0x2cd2dd={'method':_0xeb08('0x38'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x4306f5[_0xeb08('0x5c')]},'body':{'content':_0x40dbfb['body'],'to':[_0x40dbfb['phone']],'from':_0x4306f5[_0xeb08('0x23')],'binary':![],'clientMessageId':'uuid','charset':_0xeb08('0x68')},'json':!![]};rp(_0x2cd2dd)['then'](function(_0xc00ebe){if(!_0xc00ebe[_0xeb08('0x1b')]){var _0x2d6e9={'messageId':_0xc00ebe[_0xeb08('0x24')][0x0]['apiMessageId']};if(!_0x4306f5[_0xeb08('0x3c')]){_0x2d6e9[_0xeb08('0x3d')]=!![];}return _0x89094b[_0xeb08('0x2a')](_0x2d6e9);}else{return logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x69'),util['inspect'](_0xc00ebe[_0xeb08('0x1b')],{'showHidden':![],'depth':null}));}})[_0xeb08('0x1a')](function(_0x5aa623){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x69'),util['inspect'](_0x5aa623,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),'clickatell','Missing\x20parameters:\x20apiKey');}break;case _0xeb08('0x6a'):if(_0x4306f5['username']&&_0x4306f5[_0xeb08('0x31')]){var _0x3c0e7f=util[_0xeb08('0x44')]('%s:%s',_0x4306f5[_0xeb08('0x30')],_0x4306f5['password']);var _0xd056c0={'method':'POST','uri':_0xeb08('0x6b')+_0x4306f5[_0xeb08('0x6c')]+_0xeb08('0x6d'),'body':{'to':[_0x40dbfb[_0xeb08('0x23')]],'text':_0x40dbfb[_0xeb08('0xd')],'from':_0x4306f5[_0xeb08('0x23')],'applicationId':_0x4306f5[_0xeb08('0x6e')]},'headers':{'Authorization':util['format'](_0xeb08('0x47'),new Buffer(_0x3c0e7f)[_0xeb08('0x6f')](_0xeb08('0x48')))},'json':!![]};rp(_0xd056c0)['then'](function(_0x5110e1){if(_0x5110e1['id']){var _0x44e643={'messageId':_0x5110e1['id']};return _0x89094b[_0xeb08('0x2a')](_0x44e643);}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x6a'),util['inspect'](_0x5110e1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x4dd40b){logger[_0xeb08('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeb08('0x2c'),_0xeb08('0x6a'),util['inspect'](_0x4dd40b,{'showHidden':![],'depth':null}));});}else{logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x6a'),_0xeb08('0x3e'));}break;case _0xeb08('0x70'):if(_0x4306f5[_0xeb08('0x5c')]){var _0x1f8be8={};var _0x190a06={'method':_0xeb08('0x38'),'uri':_0xeb08('0x71'),'headers':{'Authorization':_0xeb08('0x72')+_0x4306f5['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x4306f5[_0xeb08('0x23')],'to':_0x40dbfb[_0xeb08('0x23')],'text':_0x40dbfb[_0xeb08('0xd')]},'json':!![]};return rp(_0x190a06)[_0xeb08('0x18')](function(_0x14bab7){if(_0x14bab7[_0xeb08('0x73')]==0xca){_0x1f8be8[_0xeb08('0x74')]=_0x14bab7;var _0x536ab2={'method':_0xeb08('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':'Bearer\x20'+_0x4306f5[_0xeb08('0x5c')],'Content-Type':_0xeb08('0x55')},'body':{'refid':_0x1f8be8['message'][_0xeb08('0x75')]},'json':!![]};return rp(_0x536ab2)[_0xeb08('0x18')](function(_0xb2ea5d){_0x1f8be8[_0xeb08('0x76')]=_0xb2ea5d;var _0x564b20={'messageId':_0x1f8be8[_0xeb08('0x74')][_0xeb08('0x75')],'read':!![]};return _0x89094b['update'](_0x564b20);});}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),'afterCreate','intelepeer',util[_0xeb08('0x2d')](_0x14bab7,{'showHidden':![],'depth':null}));}})['catch'](function(_0x1de37c){return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),_0xeb08('0x70'),util[_0xeb08('0x2d')](_0x1de37c,{'showHidden':![],'depth':null}));});}else{return logger[_0xeb08('0x1b')](_0xeb08('0x2b'),_0xeb08('0x2c'),'intelepeer',_0xeb08('0x77'));}break;}}})[_0xeb08('0x78')](function(){_0x3badb9();});}else{_0x3badb9();}}},'charset':_0xeb08('0x79'),'collate':_0xeb08('0x7a')});};
\ No newline at end of file
index 9bfc0db..ec64669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce84=['util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./smsMessage.socket','register','then','info','request\x20sent','debug','error','message','SmsMessage,\x20%s,\x20%s','result','catch','CreateSmsMessage','SmsMessage','create','body','options','raw','stringify','lodash'];(function(_0x5c1dd7,_0x4a1432){var _0x1bc568=function(_0x14679a){while(--_0x14679a){_0x5c1dd7['push'](_0x5c1dd7['shift']());}};_0x1bc568(++_0x4a1432);}(_0xce84,0x154));var _0x4ce8=function(_0xdaf37e,_0x309dd8){_0xdaf37e=_0xdaf37e-0x0;var _0x3549cd=_0xce84[_0xdaf37e];return _0x3549cd;};'use strict';var _=require(_0x4ce8('0x0'));var util=require(_0x4ce8('0x1'));var moment=require(_0x4ce8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ce8('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ce8('0x4'))(_0x4ce8('0x5'));var config=require(_0x4ce8('0x6'));var jayson=require(_0x4ce8('0x7'));var client=jayson[_0x4ce8('0x8')]['http']({'port':0x232a});config['redis']=_[_0x4ce8('0x9')](config['redis'],{'host':_0x4ce8('0xa'),'port':0x18eb});var socket=require(_0x4ce8('0xb'))(new Redis(config[_0x4ce8('0xc')]));require(_0x4ce8('0xd'))[_0x4ce8('0xe')](socket);function respondWithRpcPromise(_0x598ba5,_0x105f31,_0x55ec47){return new BPromise(function(_0x44927f,_0x15d564){return client['request'](_0x598ba5,_0x55ec47)[_0x4ce8('0xf')](function(_0x4c176f){logger[_0x4ce8('0x10')]('SmsMessage,\x20%s,\x20%s',_0x105f31,_0x4ce8('0x11'));logger[_0x4ce8('0x12')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x105f31,_0x4ce8('0x11'),JSON['stringify'](_0x4c176f));if(_0x4c176f[_0x4ce8('0x13')]){if(_0x4c176f[_0x4ce8('0x13')]['code']===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x105f31,_0x4c176f[_0x4ce8('0x13')][_0x4ce8('0x14')]);return _0x15d564(_0x4c176f[_0x4ce8('0x13')][_0x4ce8('0x14')]);}logger[_0x4ce8('0x13')](_0x4ce8('0x15'),_0x105f31,_0x4c176f['error'][_0x4ce8('0x14')]);return _0x44927f(_0x4c176f[_0x4ce8('0x13')][_0x4ce8('0x14')]);}else{logger[_0x4ce8('0x10')](_0x4ce8('0x15'),_0x105f31,'request\x20sent');_0x44927f(_0x4c176f[_0x4ce8('0x16')][_0x4ce8('0x14')]);}})[_0x4ce8('0x17')](function(_0x5ba87f){logger[_0x4ce8('0x13')](_0x4ce8('0x15'),_0x105f31,_0x5ba87f);_0x15d564(_0x5ba87f);});});}exports[_0x4ce8('0x18')]=function(_0x24f418){var _0x351ea0=this;return new Promise(function(_0x21fcf7,_0x45da58){return db[_0x4ce8('0x19')][_0x4ce8('0x1a')](_0x24f418[_0x4ce8('0x1b')],{'raw':_0x24f418['options']?_0x24f418[_0x4ce8('0x1c')][_0x4ce8('0x1d')]===undefined?!![]:![]:!![]})[_0x4ce8('0xf')](function(_0xf9356e){logger[_0x4ce8('0x10')](_0x4ce8('0x18'),_0x24f418);logger[_0x4ce8('0x12')]('CreateSmsMessage',_0x24f418,JSON[_0x4ce8('0x1e')](_0xf9356e));_0x21fcf7(_0xf9356e);})[_0x4ce8('0x17')](function(_0x38ade){logger['error']('CreateSmsMessage',_0x38ade[_0x4ce8('0x14')],_0x24f418);_0x45da58(_0x351ea0[_0x4ce8('0x13')](0x1f4,_0x38ade['message']));});});};
\ No newline at end of file
+var _0xcb8e=['./smsMessage.socket','register','request','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','create','body','raw','then','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis'];(function(_0xcb19ee,_0x291c41){var _0x243e4c=function(_0x3c8712){while(--_0x3c8712){_0xcb19ee['push'](_0xcb19ee['shift']());}};_0x243e4c(++_0x291c41);}(_0xcb8e,0x1e1));var _0xecb8=function(_0x5727c2,_0x261a07){_0x5727c2=_0x5727c2-0x0;var _0x16d0ed=_0xcb8e[_0x5727c2];return _0x16d0ed;};'use strict';var _=require('lodash');var util=require(_0xecb8('0x0'));var moment=require(_0xecb8('0x1'));var BPromise=require(_0xecb8('0x2'));var rs=require(_0xecb8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xecb8('0x4'))['db'];var utils=require(_0xecb8('0x5'));var logger=require('../../config/logger')(_0xecb8('0x6'));var config=require(_0xecb8('0x7'));var jayson=require(_0xecb8('0x8'));var client=jayson[_0xecb8('0x9')]['http']({'port':0x232a});config['redis']=_[_0xecb8('0xa')](config['redis'],{'host':_0xecb8('0xb'),'port':0x18eb});var socket=require(_0xecb8('0xc'))(new Redis(config[_0xecb8('0xd')]));require(_0xecb8('0xe'))[_0xecb8('0xf')](socket);function respondWithRpcPromise(_0x31ef81,_0xc7b1a2,_0x4a2a1a){return new BPromise(function(_0x3ac1de,_0x3fb278){return client[_0xecb8('0x10')](_0x31ef81,_0x4a2a1a)['then'](function(_0x4bd88b){logger[_0xecb8('0x11')]('SmsMessage,\x20%s,\x20%s',_0xc7b1a2,_0xecb8('0x12'));logger[_0xecb8('0x13')](_0xecb8('0x14'),_0xc7b1a2,_0xecb8('0x12'),JSON[_0xecb8('0x15')](_0x4bd88b));if(_0x4bd88b[_0xecb8('0x16')]){if(_0x4bd88b[_0xecb8('0x16')][_0xecb8('0x17')]===0x1f4){logger[_0xecb8('0x16')](_0xecb8('0x18'),_0xc7b1a2,_0x4bd88b['error']['message']);return _0x3fb278(_0x4bd88b[_0xecb8('0x16')][_0xecb8('0x19')]);}logger['error'](_0xecb8('0x18'),_0xc7b1a2,_0x4bd88b['error'][_0xecb8('0x19')]);return _0x3ac1de(_0x4bd88b['error']['message']);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0xc7b1a2,'request\x20sent');_0x3ac1de(_0x4bd88b[_0xecb8('0x1a')][_0xecb8('0x19')]);}})[_0xecb8('0x1b')](function(_0x2982ba){logger[_0xecb8('0x16')](_0xecb8('0x18'),_0xc7b1a2,_0x2982ba);_0x3fb278(_0x2982ba);});});}exports[_0xecb8('0x1c')]=function(_0x1f1ccf){var _0x125c35=this;return new Promise(function(_0x3bd2aa,_0x1565b7){return db['SmsMessage'][_0xecb8('0x1d')](_0x1f1ccf[_0xecb8('0x1e')],{'raw':_0x1f1ccf['options']?_0x1f1ccf['options'][_0xecb8('0x1f')]===undefined?!![]:![]:!![]})[_0xecb8('0x20')](function(_0x507401){logger[_0xecb8('0x11')](_0xecb8('0x1c'),_0x1f1ccf);logger['debug'](_0xecb8('0x1c'),_0x1f1ccf,JSON[_0xecb8('0x15')](_0x507401));_0x3bd2aa(_0x507401);})[_0xecb8('0x1b')](function(_0x3c4b0d){logger[_0xecb8('0x16')](_0xecb8('0x1c'),_0x3c4b0d[_0xecb8('0x19')],_0x1f1ccf);_0x1565b7(_0x125c35[_0xecb8('0x16')](0x1f4,_0x3c4b0d['message']));});});};
\ No newline at end of file
index 2bdce3b..b0ca1c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966b=['emit','removeListener','register','length','smsMessage:','./smsMessage.events','save','remove','update'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x966b,0x11c));var _0xb966=function(_0x2c735a,_0x25a28b){_0x2c735a=_0x2c735a-0x0;var _0xa0baf8=_0x966b[_0x2c735a];return _0xa0baf8;};'use strict';var SmsMessageEvents=require(_0xb966('0x0'));var events=[_0xb966('0x1'),_0xb966('0x2'),_0xb966('0x3')];function createListener(_0x159a24,_0x5e57e9){return function(_0x1b904b){_0x5e57e9[_0xb966('0x4')](_0x159a24,_0x1b904b);};}function removeListener(_0x3c1b97,_0x3f4b7b){return function(){SmsMessageEvents[_0xb966('0x5')](_0x3c1b97,_0x3f4b7b);};}exports[_0xb966('0x6')]=function(_0x2b095c){for(var _0x3edc86=0x0,_0x527ac3=events[_0xb966('0x7')];_0x3edc86<_0x527ac3;_0x3edc86++){var _0x49cad4=events[_0x3edc86];var _0x5b2eec=createListener(_0xb966('0x8')+_0x49cad4,_0x2b095c);SmsMessageEvents['on'](_0x49cad4,_0x5b2eec);}};
\ No newline at end of file
+var _0xed62=['length','./smsMessage.events','update','emit','register'];(function(_0x2d1663,_0x40865b){var _0xb6f5a4=function(_0x181811){while(--_0x181811){_0x2d1663['push'](_0x2d1663['shift']());}};_0xb6f5a4(++_0x40865b);}(_0xed62,0xa6));var _0x2ed6=function(_0x23424a,_0x4e8489){_0x23424a=_0x23424a-0x0;var _0x48bc6f=_0xed62[_0x23424a];return _0x48bc6f;};'use strict';var SmsMessageEvents=require(_0x2ed6('0x0'));var events=['save','remove',_0x2ed6('0x1')];function createListener(_0x45c8b4,_0x8ecb79){return function(_0x4babc8){_0x8ecb79[_0x2ed6('0x2')](_0x45c8b4,_0x4babc8);};}function removeListener(_0x17d0de,_0x5d7303){return function(){SmsMessageEvents['removeListener'](_0x17d0de,_0x5d7303);};}exports[_0x2ed6('0x3')]=function(_0x250278){for(var _0x4dc135=0x0,_0x4a4365=events[_0x2ed6('0x4')];_0x4dc135<_0x4a4365;_0x4dc135++){var _0x11a3f3=events[_0x4dc135];var _0x275c0e=createListener('smsMessage:'+_0x11a3f3,_0x250278);SmsMessageEvents['on'](_0x11a3f3,_0x275c0e);}};
\ No newline at end of file
index 6db1843..9f81c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd292=['isAuthenticated','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','create','addTeams','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','index','get','/describe'];(function(_0x6d91a,_0x3c06dc){var _0x405faf=function(_0x4b157a){while(--_0x4b157a){_0x6d91a['push'](_0x6d91a['shift']());}};_0x405faf(++_0x3c06dc);}(_0xd292,0xac));var _0x2d29=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd292[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2d29('0x0'));var util=require(_0x2d29('0x1'));var path=require(_0x2d29('0x2'));var timeout=require(_0x2d29('0x3'));var express=require(_0x2d29('0x4'));var router=express[_0x2d29('0x5')]();var fs_extra=require(_0x2d29('0x6'));var auth=require(_0x2d29('0x7'));var interaction=require(_0x2d29('0x8'));var config=require(_0x2d29('0x9'));var controller=require(_0x2d29('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x2d29('0xb')]);router[_0x2d29('0xc')](_0x2d29('0xd'),auth[_0x2d29('0xe')](),controller[_0x2d29('0xf')]);router[_0x2d29('0xc')](_0x2d29('0x10'),auth[_0x2d29('0xe')](),controller['show']);router['get'](_0x2d29('0x11'),auth[_0x2d29('0xe')](),controller[_0x2d29('0x12')]);router['get'](_0x2d29('0x13'),auth[_0x2d29('0xe')](),controller[_0x2d29('0x14')]);router[_0x2d29('0xc')](_0x2d29('0x15'),auth[_0x2d29('0xe')](),controller['getAgents']);router['post']('/',auth[_0x2d29('0xe')](),controller[_0x2d29('0x16')]);router['post'](_0x2d29('0x13'),auth[_0x2d29('0xe')](),controller[_0x2d29('0x17')]);router['post'](_0x2d29('0x15'),auth['isAuthenticated'](),controller[_0x2d29('0x18')]);router[_0x2d29('0x19')](_0x2d29('0x10'),auth[_0x2d29('0xe')](),controller[_0x2d29('0x1a')]);router[_0x2d29('0x1b')](_0x2d29('0x10'),auth[_0x2d29('0xe')](),controller[_0x2d29('0x1c')]);router[_0x2d29('0x1b')](_0x2d29('0x13'),auth[_0x2d29('0xe')](),controller['removeTeams']);router[_0x2d29('0x1b')](_0x2d29('0x15'),auth['isAuthenticated'](),controller[_0x2d29('0x1d')]);module[_0x2d29('0x1e')]=router;
\ No newline at end of file
+var _0xf0aa=['addAgents','put','update','destroy','delete','removeAgents','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams'];(function(_0x15562d,_0x37752c){var _0x58c422=function(_0x2c2c81){while(--_0x2c2c81){_0x15562d['push'](_0x15562d['shift']());}};_0x58c422(++_0x37752c);}(_0xf0aa,0x16e));var _0xaf0a=function(_0x52d861,_0x1ef924){_0x52d861=_0x52d861-0x0;var _0x5a0eed=_0xf0aa[_0x52d861];return _0x5a0eed;};'use strict';var multer=require(_0xaf0a('0x0'));var util=require('util');var path=require(_0xaf0a('0x1'));var timeout=require(_0xaf0a('0x2'));var express=require(_0xaf0a('0x3'));var router=express[_0xaf0a('0x4')]();var fs_extra=require(_0xaf0a('0x5'));var auth=require(_0xaf0a('0x6'));var interaction=require(_0xaf0a('0x7'));var config=require(_0xaf0a('0x8'));var controller=require(_0xaf0a('0x9'));router[_0xaf0a('0xa')]('/',auth['isAuthenticated'](),controller[_0xaf0a('0xb')]);router[_0xaf0a('0xa')](_0xaf0a('0xc'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0xe')]);router[_0xaf0a('0xa')](_0xaf0a('0xf'),auth[_0xaf0a('0xd')](),controller['show']);router[_0xaf0a('0xa')]('/:id/members',auth['isAuthenticated'](),controller[_0xaf0a('0x10')]);router[_0xaf0a('0xa')](_0xaf0a('0x11'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x12')]);router[_0xaf0a('0xa')](_0xaf0a('0x13'),auth['isAuthenticated'](),controller[_0xaf0a('0x14')]);router[_0xaf0a('0x15')]('/',auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x16')]);router[_0xaf0a('0x15')]('/:id/teams',auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x17')]);router[_0xaf0a('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0xaf0a('0x18')]);router[_0xaf0a('0x19')](_0xaf0a('0xf'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x1a')]);router['delete'](_0xaf0a('0xf'),auth['isAuthenticated'](),controller[_0xaf0a('0x1b')]);router[_0xaf0a('0x1c')](_0xaf0a('0x11'),auth[_0xaf0a('0xd')](),controller['removeTeams']);router[_0xaf0a('0x1c')](_0xaf0a('0x13'),auth[_0xaf0a('0xd')](),controller[_0xaf0a('0x1d')]);module['exports']=router;
\ No newline at end of file
index 803a405..9bdf780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a77=['sequelize','exports','STRING','INTEGER','beepall','roundrobin'];(function(_0x3530c7,_0x26669f){var _0x3bd4f5=function(_0x132bdd){while(--_0x132bdd){_0x3530c7['push'](_0x3530c7['shift']());}};_0x3bd4f5(++_0x26669f);}(_0x7a77,0x6c));var _0x77a7=function(_0x1377eb,_0xd97b51){_0x1377eb=_0x1377eb-0x0;var _0x1dd29a=_0x7a77[_0x1377eb];return _0x1dd29a;};'use strict';var Sequelize=require(_0x77a7('0x0'));module[_0x77a7('0x1')]={'name':{'type':Sequelize[_0x77a7('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x77a7('0x2')]},'timeout':{'type':Sequelize[_0x77a7('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x77a7('0x4'),_0x77a7('0x5'))}};
\ No newline at end of file
+var _0x2ceb=['STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x22ffbf,_0x16f31e){var _0x360c17=function(_0x40807f){while(--_0x40807f){_0x22ffbf['push'](_0x22ffbf['shift']());}};_0x360c17(++_0x16f31e);}(_0x2ceb,0x1db));var _0xb2ce=function(_0x165563,_0x382703){_0x165563=_0x165563-0x0;var _0x1c72a9=_0x2ceb[_0x165563];return _0x1c72a9;};'use strict';var Sequelize=require(_0xb2ce('0x0'));module[_0xb2ce('0x1')]={'name':{'type':Sequelize[_0xb2ce('0x2')],'unique':_0xb2ce('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb2ce('0x2')]},'timeout':{'type':Sequelize[_0xb2ce('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb2ce('0x5')](_0xb2ce('0x6'),_0xb2ce('0x7'),_0xb2ce('0x8'))}};
\ No newline at end of file
index b6c89cd..715f57d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2839=['filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','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','UserSmsQueue','order','SmsQueueId','filter','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','union','value','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsQueue.socket','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','type','key','model','keys','query'];(function(_0x21c6b8,_0x16d6f6){var _0x39d474=function(_0x27dbf5){while(--_0x27dbf5){_0x21c6b8['push'](_0x21c6b8['shift']());}};_0x39d474(++_0x16d6f6);}(_0x2839,0xe3));var _0x9283=function(_0x419736,_0x466d8e){_0x419736=_0x419736-0x0;var _0x2046e2=_0x2839[_0x419736];return _0x2046e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9283('0x0'));var zipdir=require(_0x9283('0x1'));var jsonpatch=require(_0x9283('0x2'));var rp=require(_0x9283('0x3'));var moment=require(_0x9283('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9283('0x5'));var path=require(_0x9283('0x6'));var sox=require(_0x9283('0x7'));var csv=require(_0x9283('0x8'));var ejs=require(_0x9283('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9283('0xa'));var squel=require(_0x9283('0xb'));var crypto=require(_0x9283('0xc'));var jsforce=require(_0x9283('0xd'));var deskjs=require(_0x9283('0xe'));var toCsv=require(_0x9283('0x8'));var querystring=require(_0x9283('0xf'));var Papa=require(_0x9283('0x10'));var Redis=require(_0x9283('0x11'));var authService=require(_0x9283('0x12'));var qs=require(_0x9283('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9283('0x14'));var logger=require(_0x9283('0x15'))(_0x9283('0x16'));var utils=require(_0x9283('0x17'));var config=require(_0x9283('0x18'));var licenseUtil=require(_0x9283('0x19'));var db=require(_0x9283('0x1a'))['db'];config[_0x9283('0x1b')]=_[_0x9283('0x1c')](config['redis'],{'host':_0x9283('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9283('0x1e'))['register'](socket);function respondWithStatusCode(_0x317696,_0x42415b){_0x42415b=_0x42415b||0xcc;return function(_0x52dbb7){if(_0x52dbb7){return _0x317696[_0x9283('0x1f')](_0x42415b);}return _0x317696[_0x9283('0x20')](_0x42415b)[_0x9283('0x21')]();};}function respondWithResult(_0x1f7fc3,_0x4f4139){_0x4f4139=_0x4f4139||0xc8;return function(_0x28ac12){if(_0x28ac12){return _0x1f7fc3[_0x9283('0x20')](_0x4f4139)['json'](_0x28ac12);}};}function respondWithFilteredResult(_0x511366,_0x3268d8){return function(_0x51e201){if(_0x51e201){var _0x1adc47=typeof _0x3268d8[_0x9283('0x22')]===_0x9283('0x23')&&typeof _0x3268d8[_0x9283('0x24')]===_0x9283('0x23');var _0x9309f=_0x51e201[_0x9283('0x25')];var _0x35f3f0=_0x1adc47?0x0:_0x3268d8['offset'];var _0x939a49=_0x1adc47?_0x51e201[_0x9283('0x25')]:_0x3268d8[_0x9283('0x22')]+_0x3268d8[_0x9283('0x24')];var _0x4c7f8d;if(_0x939a49>=_0x9309f){_0x939a49=_0x9309f;_0x4c7f8d=0xc8;}else{_0x4c7f8d=0xce;}_0x511366[_0x9283('0x20')](_0x4c7f8d);return _0x511366['set'](_0x9283('0x26'),_0x35f3f0+'-'+_0x939a49+'/'+_0x9309f)[_0x9283('0x27')](_0x51e201);}return null;};}function patchUpdates(_0x1b82fa){return function(_0xab670e){try{jsonpatch[_0x9283('0x28')](_0xab670e,_0x1b82fa,!![]);}catch(_0x28912f){return BPromise[_0x9283('0x29')](_0x28912f);}return _0xab670e['save']();};}function saveUpdates(_0x431654,_0x3cea41){return function(_0x4896bc){if(_0x4896bc){return _0x4896bc[_0x9283('0x2a')](_0x431654)['then'](function(_0x20c8bb){return _0x20c8bb;});}return null;};}function removeEntity(_0x3e6858,_0x32b588){return function(_0x4fb2bf){if(_0x4fb2bf){return _0x4fb2bf[_0x9283('0x2b')]()[_0x9283('0x2c')](function(){var _0x3b0528=_0x4fb2bf[_0x9283('0x2d')]({'plain':!![]});var _0x499339=_0x9283('0x2e');return db[_0x9283('0x2f')]['destroy']({'where':{'type':_0x499339,'resourceId':_0x3b0528['id']}})[_0x9283('0x2c')](function(){return _0x4fb2bf;});})[_0x9283('0x2c')](function(){_0x3e6858[_0x9283('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e6159,_0x196284){return function(_0x447480){if(!_0x447480){_0x3e6159['sendStatus'](0x194);}return _0x447480;};}function handleError(_0x3e8903,_0x41b45e){_0x41b45e=_0x41b45e||0x1f4;return function(_0x4c13ee){logger[_0x9283('0x30')](_0x4c13ee[_0x9283('0x31')]);if(_0x4c13ee[_0x9283('0x32')]){delete _0x4c13ee[_0x9283('0x32')];}_0x3e8903['status'](_0x41b45e)[_0x9283('0x33')](_0x4c13ee);};}exports[_0x9283('0x34')]=function(_0x100d04,_0x53895a){var _0x4cea1f={},_0x35aa86={},_0x359a36={'count':0x0,'rows':[]};var _0x1d7c0e=_[_0x9283('0x35')](db[_0x9283('0x36')][_0x9283('0x37')],function(_0x3699a9){return{'name':_0x3699a9['fieldName'],'type':_0x3699a9[_0x9283('0x38')][_0x9283('0x39')]};});_0x35aa86[_0x9283('0x3a')]=_['map'](_0x1d7c0e,_0x9283('0x32'));_0x35aa86['query']=_[_0x9283('0x3b')](_0x100d04[_0x9283('0x3c')]);_0x35aa86[_0x9283('0x3d')]=_['intersection'](_0x35aa86['model'],_0x35aa86['query']);_0x4cea1f['attributes']=_[_0x9283('0x3e')](_0x35aa86[_0x9283('0x3a')],qs['fields'](_0x100d04[_0x9283('0x3c')][_0x9283('0x3f')]));_0x4cea1f[_0x9283('0x40')]=_0x4cea1f[_0x9283('0x40')][_0x9283('0x41')]?_0x4cea1f[_0x9283('0x40')]:_0x35aa86[_0x9283('0x3a')];if(!_0x100d04[_0x9283('0x3c')][_0x9283('0x42')](_0x9283('0x43'))){_0x4cea1f[_0x9283('0x24')]=qs[_0x9283('0x24')](_0x100d04[_0x9283('0x3c')][_0x9283('0x24')]);_0x4cea1f[_0x9283('0x22')]=qs['offset'](_0x100d04[_0x9283('0x3c')][_0x9283('0x22')]);}_0x4cea1f['order']=qs[_0x9283('0x44')](_0x100d04['query']['sort']);_0x4cea1f[_0x9283('0x45')]=qs[_0x9283('0x3d')](_[_0x9283('0x46')](_0x100d04[_0x9283('0x3c')],_0x35aa86[_0x9283('0x3d')]),_0x1d7c0e);if(_0x100d04['query']['filter']){_0x4cea1f[_0x9283('0x45')]=_[_0x9283('0x47')](_0x4cea1f[_0x9283('0x45')],{'$or':_[_0x9283('0x35')](_0x1d7c0e,function(_0x25cf4e){if(_0x25cf4e[_0x9283('0x38')]!==_0x9283('0x48')){var _0x3c1e7b={};_0x3c1e7b[_0x25cf4e[_0x9283('0x32')]]={'$like':'%'+_0x100d04[_0x9283('0x3c')]['filter']+'%'};return _0x3c1e7b;}})});}_0x4cea1f=_[_0x9283('0x47')]({},_0x4cea1f,_0x100d04[_0x9283('0x49')]);var _0x458f4e={'where':_0x4cea1f['where']};return db[_0x9283('0x36')]['count'](_0x458f4e)[_0x9283('0x2c')](function(_0x4c508d){_0x359a36['count']=_0x4c508d;if(_0x100d04[_0x9283('0x3c')][_0x9283('0x4a')]){_0x4cea1f['include']=[{'all':!![]}];}return db['SmsQueue'][_0x9283('0x4b')](_0x4cea1f);})[_0x9283('0x2c')](function(_0x27ea08){_0x359a36[_0x9283('0x4c')]=_0x27ea08;return _0x359a36;})[_0x9283('0x2c')](respondWithFilteredResult(_0x53895a,_0x4cea1f))[_0x9283('0x4d')](handleError(_0x53895a,null));};exports[_0x9283('0x4e')]=function(_0x2f5b5c,_0x140f3e){var _0x377f68={'raw':!![],'where':{'id':_0x2f5b5c[_0x9283('0x4f')]['id']}},_0x7a75ef={};_0x7a75ef[_0x9283('0x3a')]=_['keys'](db[_0x9283('0x36')][_0x9283('0x37')]);_0x7a75ef[_0x9283('0x3c')]=_[_0x9283('0x3b')](_0x2f5b5c[_0x9283('0x3c')]);_0x7a75ef['filters']=_['intersection'](_0x7a75ef[_0x9283('0x3a')],_0x7a75ef[_0x9283('0x3c')]);_0x377f68['attributes']=_[_0x9283('0x3e')](_0x7a75ef[_0x9283('0x3a')],qs[_0x9283('0x3f')](_0x2f5b5c[_0x9283('0x3c')][_0x9283('0x3f')]));_0x377f68[_0x9283('0x40')]=_0x377f68[_0x9283('0x40')][_0x9283('0x41')]?_0x377f68[_0x9283('0x40')]:_0x7a75ef[_0x9283('0x3a')];if(_0x2f5b5c['query'][_0x9283('0x4a')]){_0x377f68[_0x9283('0x50')]=[{'all':!![]}];}_0x377f68=_['merge']({},_0x377f68,_0x2f5b5c[_0x9283('0x49')]);return db[_0x9283('0x36')][_0x9283('0x51')](_0x377f68)[_0x9283('0x2c')](handleEntityNotFound(_0x140f3e,null))[_0x9283('0x2c')](respondWithResult(_0x140f3e,null))[_0x9283('0x4d')](handleError(_0x140f3e,null));};exports['create']=function(_0x1ecc4f,_0x19c1dd){return db[_0x9283('0x36')][_0x9283('0x52')](_0x1ecc4f[_0x9283('0x53')],{})[_0x9283('0x2c')](function(_0x573beb){var _0x4b5e73=_0x1ecc4f[_0x9283('0x54')][_0x9283('0x2d')]({'plain':!![]});if(!_0x4b5e73)throw new Error(_0x9283('0x55'));if(_0x4b5e73[_0x9283('0x56')]==='user'){var _0x3bfd43=_0x573beb[_0x9283('0x2d')]({'plain':!![]});var _0x120497=_0x9283('0x2e');return db[_0x9283('0x57')][_0x9283('0x51')]({'where':{'name':_0x120497,'userProfileId':_0x4b5e73[_0x9283('0x58')]},'raw':!![]})[_0x9283('0x2c')](function(_0x25907e){if(_0x25907e&&_0x25907e[_0x9283('0x59')]===0x0){return db[_0x9283('0x2f')][_0x9283('0x52')]({'name':_0x3bfd43['name'],'resourceId':_0x3bfd43['id'],'type':_0x25907e[_0x9283('0x32')],'sectionId':_0x25907e['id']},{})[_0x9283('0x2c')](function(){return _0x573beb;});}else{return _0x573beb;}})[_0x9283('0x4d')](function(_0x4b9090){logger['error'](_0x9283('0x5a'),_0x4b9090);throw _0x4b9090;});}return _0x573beb;})['then'](respondWithResult(_0x19c1dd,0xc9))[_0x9283('0x4d')](handleError(_0x19c1dd,null));};exports[_0x9283('0x2a')]=function(_0x26e227,_0x57e5ef){if(_0x26e227[_0x9283('0x53')]['id']){delete _0x26e227['body']['id'];}return db['SmsQueue'][_0x9283('0x51')]({'where':{'id':_0x26e227[_0x9283('0x4f')]['id']}})[_0x9283('0x2c')](handleEntityNotFound(_0x57e5ef,null))['then'](saveUpdates(_0x26e227[_0x9283('0x53')],null))[_0x9283('0x2c')](respondWithResult(_0x57e5ef,null))[_0x9283('0x4d')](handleError(_0x57e5ef,null));};exports[_0x9283('0x2b')]=function(_0xc3848,_0x1a0213){return db[_0x9283('0x36')][_0x9283('0x51')]({'where':{'id':_0xc3848[_0x9283('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1a0213,null))[_0x9283('0x2c')](removeEntity(_0x1a0213,null))[_0x9283('0x4d')](handleError(_0x1a0213,null));};exports[_0x9283('0x5b')]=function(_0x57825b,_0x4c7e8e){return db[_0x9283('0x36')][_0x9283('0x5b')]()[_0x9283('0x2c')](respondWithResult(_0x4c7e8e,null))[_0x9283('0x4d')](handleError(_0x4c7e8e,null));};exports[_0x9283('0x5c')]=function(_0x13ba66,_0x5eeb6e,_0x370f9d){var _0x30f8f5={'raw':!![],'where':{}},_0x3ce8f4={},_0x33b727;return db['SmsQueue'][_0x9283('0x5d')]({'where':{'id':_0x13ba66[_0x9283('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5eeb6e,null))[_0x9283('0x2c')](function(_0x61cb1c){if(_0x61cb1c){_0x33b727=_0x61cb1c[_0x9283('0x2d')]({'plain':!![]});_0x3ce8f4[_0x9283('0x3a')]=_[_0x9283('0x3b')](db[_0x9283('0x5e')][_0x9283('0x37')]);_0x3ce8f4['query']=_['keys'](_0x13ba66[_0x9283('0x3c')]);_0x3ce8f4[_0x9283('0x3d')]=_[_0x9283('0x3e')](_0x3ce8f4[_0x9283('0x3a')],_0x3ce8f4[_0x9283('0x3c')]);_0x30f8f5[_0x9283('0x40')]=_[_0x9283('0x3e')](_0x3ce8f4[_0x9283('0x3a')],qs[_0x9283('0x3f')](_0x13ba66[_0x9283('0x3c')]['fields']));_0x30f8f5[_0x9283('0x40')]=_0x30f8f5[_0x9283('0x40')]['length']?_0x30f8f5[_0x9283('0x40')]:_0x3ce8f4['model'];if(!_0x13ba66['query']['hasOwnProperty']('nolimit')){_0x30f8f5[_0x9283('0x24')]=qs[_0x9283('0x24')](_0x13ba66[_0x9283('0x3c')][_0x9283('0x24')]);_0x30f8f5['offset']=qs[_0x9283('0x22')](_0x13ba66['query'][_0x9283('0x22')]);}_0x30f8f5[_0x9283('0x5f')]=qs['sort'](_0x13ba66['query'][_0x9283('0x44')]);_0x30f8f5[_0x9283('0x45')]=qs['filters'](_[_0x9283('0x46')](_0x13ba66[_0x9283('0x3c')],_0x3ce8f4['filters']));_0x30f8f5[_0x9283('0x45')][_0x9283('0x60')]=_0x61cb1c['id'];if(_0x13ba66[_0x9283('0x3c')][_0x9283('0x61')]){_0x30f8f5[_0x9283('0x45')]=_[_0x9283('0x47')](_0x30f8f5[_0x9283('0x45')],{'$or':_[_0x9283('0x35')](_0x30f8f5[_0x9283('0x40')],function(_0x3b1106){var _0x4bcbf8={};_0x4bcbf8[_0x3b1106]={'$like':'%'+_0x13ba66[_0x9283('0x3c')][_0x9283('0x61')]+'%'};return _0x4bcbf8;})});}_0x30f8f5=_[_0x9283('0x47')]({},_0x30f8f5,_0x13ba66['options']);return db[_0x9283('0x5e')]['findAll'](_0x30f8f5);}})[_0x9283('0x2c')](function(_0x14c8f4){if(_0x14c8f4){return db[_0x9283('0x62')][_0x9283('0x63')]({'where':{'id':_[_0x9283('0x35')](_0x14c8f4,_0x9283('0x64')),'role':_0x9283('0x65')},'attributes':['id','name',_0x9283('0x66'),_0x9283('0x67'),_0x9283('0x68')]});}})[_0x9283('0x2c')](function(_0x66305d){if(_0x66305d){return{'count':_0x66305d[_0x9283('0x25')],'rows':_[_0x9283('0x35')](_0x66305d[_0x9283('0x4c')],function(_0x25c4db){return{'membername':_0x25c4db[_0x9283('0x32')],'UserId':_0x25c4db['id'],'queue_name':_0x33b727[_0x9283('0x32')],'SmsQueueId':_0x33b727['id'],'interface':util['format'](_0x9283('0x69'),_0x9283('0x6a'),_0x25c4db['name']),'penalty':0x0,'paused':_0x25c4db[_0x9283('0x66')],'createdAt':_0x25c4db['createdAt'],'updatedAt':_0x25c4db[_0x9283('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5eeb6e,_0x30f8f5))[_0x9283('0x4d')](handleError(_0x5eeb6e,null));};exports[_0x9283('0x6b')]=function(_0x4c7f55,_0x1891c4,_0x1a0aa6){var _0x52a08b={};var _0x522df7={};var _0x35c344;var _0x57ecff;return db[_0x9283('0x36')][_0x9283('0x5d')]({'where':{'id':_0x4c7f55[_0x9283('0x4f')]['id']}})[_0x9283('0x2c')](handleEntityNotFound(_0x1891c4,null))[_0x9283('0x2c')](function(_0x173963){if(_0x173963){_0x35c344=_0x173963;_0x522df7['model']=_[_0x9283('0x3b')](db[_0x9283('0x6c')][_0x9283('0x37')]);_0x522df7[_0x9283('0x3c')]=_[_0x9283('0x3b')](_0x4c7f55[_0x9283('0x3c')]);_0x522df7[_0x9283('0x3d')]=_['intersection'](_0x522df7[_0x9283('0x3a')],_0x522df7['query']);_0x52a08b[_0x9283('0x40')]=_['intersection'](_0x522df7['model'],qs[_0x9283('0x3f')](_0x4c7f55[_0x9283('0x3c')][_0x9283('0x3f')]));_0x52a08b[_0x9283('0x40')]=_0x52a08b[_0x9283('0x40')][_0x9283('0x41')]?_0x52a08b[_0x9283('0x40')]:_0x522df7['model'];_0x52a08b['order']=qs[_0x9283('0x44')](_0x4c7f55[_0x9283('0x3c')][_0x9283('0x44')]);_0x52a08b[_0x9283('0x45')]=qs[_0x9283('0x3d')](_[_0x9283('0x46')](_0x4c7f55['query'],_0x522df7[_0x9283('0x3d')]));if(_0x4c7f55[_0x9283('0x3c')][_0x9283('0x61')]){_0x52a08b[_0x9283('0x45')]=_[_0x9283('0x47')](_0x52a08b[_0x9283('0x45')],{'$or':_['map'](_0x52a08b['attributes'],function(_0x400ba5){var _0x4f46bd={};_0x4f46bd[_0x400ba5]={'$like':'%'+_0x4c7f55[_0x9283('0x3c')][_0x9283('0x61')]+'%'};return _0x4f46bd;})});}_0x52a08b=_[_0x9283('0x47')]({},_0x52a08b,_0x4c7f55[_0x9283('0x49')]);return _0x35c344[_0x9283('0x6b')](_0x52a08b);}})[_0x9283('0x2c')](function(_0xecc070){if(_0xecc070){_0x57ecff=_0xecc070[_0x9283('0x41')];if(!_0x4c7f55[_0x9283('0x3c')][_0x9283('0x42')]('nolimit')){_0x52a08b['limit']=qs[_0x9283('0x24')](_0x4c7f55[_0x9283('0x3c')]['limit']);_0x52a08b[_0x9283('0x22')]=qs[_0x9283('0x22')](_0x4c7f55[_0x9283('0x3c')]['offset']);}return _0x35c344[_0x9283('0x6b')](_0x52a08b);}})['then'](function(_0x52b5f9){if(_0x52b5f9){return _0x52b5f9?{'count':_0x57ecff,'rows':_0x52b5f9}:null;}})['then'](respondWithResult(_0x1891c4,null))[_0x9283('0x4d')](handleError(_0x1891c4,null));};exports[_0x9283('0x6d')]=function(_0x839ffa,_0x46e1dd,_0x3cfb1a){var _0x225659=_0x839ffa[_0x9283('0x53')][_0x9283('0x6e')];return db[_0x9283('0x6c')][_0x9283('0x4b')]({'where':{'id':_0x225659},'attributes':['id'],'include':[{'model':db[_0x9283('0x62')],'as':_0x9283('0x6f'),'attributes':['id','name',_0x9283('0x70'),_0x9283('0x71'),_0x9283('0x72')],'raw':!![]}]})[_0x9283('0x2c')](function(_0x1440e9){if(_0x1440e9){var _0x17605e=_[_0x9283('0x73')](_0x1440e9,function(_0x47597a){var _0x414abd=_0x47597a[_0x9283('0x2d')]({'plain':!![]});return _0x414abd[_0x9283('0x6f')];});return db[_0x9283('0x36')][_0x9283('0x51')]({'where':{'id':_0x839ffa['params']['id']}})['then'](function(_0x48beb3){return db[_0x9283('0x74')][_0x9283('0x75')](function(_0x29d157){return _0x48beb3['addTeams'](_0x225659,{'transaction':_0x29d157})['then'](function(){return BPromise['each'](_0x17605e,function(_0x425f71){return db[_0x9283('0x5e')][_0x9283('0x76')]({'where':{'UserId':_0x425f71['id'],'SmsQueueId':_0x839ffa[_0x9283('0x4f')]['id']},'transaction':_0x29d157});});})[_0x9283('0x2c')](function(){_0x17605e['forEach'](function(_0x310d0a){socket[_0x9283('0x77')](_0x9283('0x78'),{'UserId':_0x310d0a['id'],'SmsQueueId':_0x48beb3['id']});});});});});}})[_0x9283('0x2c')](respondWithStatusCode(_0x46e1dd,null))[_0x9283('0x4d')](handleError(_0x46e1dd,null));};exports[_0x9283('0x79')]=function(_0x38e49d,_0x257c35,_0x1b5ccc){return db[_0x9283('0x6c')]['findAll']({'where':{'id':_0x38e49d[_0x9283('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x9283('0x62')],'as':_0x9283('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x9283('0x2c')](handleEntityNotFound(_0x257c35,null))['then'](function(_0x217c85){var _0x5bc21f=_['map'](_0x217c85,'id');var _0x37a6d9=[];var _0xb84d7c=[];var _0x48ad28=squel['select']();_0x48ad28[_0x9283('0x7a')](_0x9283('0x7b'))[_0x9283('0x7c')](_0x9283('0x7d'),'tq')['join']('user_has_teams','ut',_0x9283('0x7e'))[_0x9283('0x45')](_0x9283('0x7f'),_0x38e49d['params']['id']);for(var _0x60a0a0=0x0;_0x60a0a0<_0x217c85[_0x9283('0x41')];_0x60a0a0+=0x1){let _0xef03=_0x217c85[_0x60a0a0];for(var _0x7089af=0x0;_0x7089af<_0xef03[_0x9283('0x6f')][_0x9283('0x41')];_0x7089af+=0x1){let _0x18b431=_0xef03['Agents'][_0x7089af];var _0x377ce5=_0x48ad28[_0x9283('0x80')]();_0x377ce5[_0x9283('0x45')](_0x9283('0x81'),_0x18b431['id']);_0xb84d7c[_0x9283('0x82')](db[_0x9283('0x74')][_0x9283('0x3c')](_0x377ce5[_0x9283('0x83')](),{'type':db['sequelize']['QueryTypes'][_0x9283('0x84')]})[_0x9283('0x2c')](function(_0x1be181){if(_0x1be181[_0x9283('0x41')]===0x1){return _0x18b431['id'];}else{var _0xa8dcea=_[_0x9283('0x85')](_[_0x9283('0x35')](_0x1be181,'TeamId'),function(_0x3d538c){return _['includes'](_0x5bc21f,_0x3d538c);});if(_0xa8dcea){return _0x18b431['id'];}}}));}}return BPromise['all'](_0xb84d7c)[_0x9283('0x2c')](function(_0x3117bf){_0x37a6d9=_(_0x37a6d9)[_0x9283('0x86')](_0x3117bf)['compact']()[_0x9283('0x87')]();return db[_0x9283('0x36')]['find']({'where':{'id':_0x38e49d['params']['id']}})[_0x9283('0x2c')](function(_0xe7277b){return db[_0x9283('0x74')][_0x9283('0x75')](function(_0x565666){return _0xe7277b[_0x9283('0x79')](_0x38e49d[_0x9283('0x3c')]['ids'],{'transaction':_0x565666})[_0x9283('0x2c')](function(){if(!_[_0x9283('0x88')](_0x37a6d9)){return _0xe7277b[_0x9283('0x89')](_0x37a6d9,{'transaction':_0x565666});}})[_0x9283('0x2c')](function(){_0x37a6d9[_0x9283('0x8a')](function(_0xa28ac9){socket[_0x9283('0x77')](_0x9283('0x8b'),{'UserId':_0xa28ac9,'SmsQueueId':_0xe7277b['id']});});});});});});})[_0x9283('0x2c')](respondWithStatusCode(_0x257c35,null))[_0x9283('0x4d')](handleError(_0x257c35,null));};exports[_0x9283('0x8c')]=function(_0x347aab,_0x25acb4,_0x257f13){return db[_0x9283('0x36')]['find']({'where':{'id':_0x347aab['params']['id']}})[_0x9283('0x2c')](handleEntityNotFound(_0x25acb4,null))[_0x9283('0x2c')](function(_0x2167c0){if(_0x2167c0){return _0x2167c0['addAgents'](_0x347aab[_0x9283('0x53')][_0x9283('0x6e')],_[_0x9283('0x8d')](_0x347aab[_0x9283('0x53')],['ids','id'])||{})[_0x9283('0x8e')](function(_0x8f89e9){for(var _0x51fc6a=0x0;_0x51fc6a<_0x347aab[_0x9283('0x53')][_0x9283('0x6e')][_0x9283('0x41')];_0x51fc6a+=0x1){socket[_0x9283('0x77')]('userSmsQueue:save',{'UserId':Number(_0x347aab[_0x9283('0x53')][_0x9283('0x6e')][_0x51fc6a]),'SmsQueueId':Number(_0x347aab['params']['id'])});}return _0x8f89e9;});}})[_0x9283('0x2c')](respondWithResult(_0x25acb4,null))[_0x9283('0x4d')](handleError(_0x25acb4,null));};exports['removeAgents']=function(_0x2f8408,_0x2687d0,_0x3105d8){return db[_0x9283('0x36')][_0x9283('0x51')]({'where':{'id':_0x2f8408[_0x9283('0x4f')]['id']}})[_0x9283('0x2c')](handleEntityNotFound(_0x2687d0,null))[_0x9283('0x2c')](function(_0x1bd050){if(_0x1bd050){return _0x1bd050[_0x9283('0x89')](_0x2f8408[_0x9283('0x3c')][_0x9283('0x6e')])['then'](function(){if(_['isArray'](_0x2f8408[_0x9283('0x3c')][_0x9283('0x6e')])){for(var _0x319d4b=0x0;_0x319d4b<_0x2f8408[_0x9283('0x3c')][_0x9283('0x6e')][_0x9283('0x41')];_0x319d4b+=0x1){socket['emit'](_0x9283('0x8b'),{'UserId':Number(_0x2f8408[_0x9283('0x3c')][_0x9283('0x6e')][_0x319d4b]),'SmsQueueId':Number(_0x2f8408[_0x9283('0x4f')]['id'])});}}else{socket[_0x9283('0x77')](_0x9283('0x8b'),{'UserId':Number(_0x2f8408[_0x9283('0x3c')][_0x9283('0x6e')]),'SmsQueueId':Number(_0x2f8408['params']['id'])});}});}})[_0x9283('0x2c')](respondWithStatusCode(_0x2687d0,null))[_0x9283('0x4d')](handleError(_0x2687d0,null));};exports[_0x9283('0x8f')]=function(_0x4a666e,_0x551f61,_0x446f48){var _0x19d644={};var _0x2ee74e={};var _0x4773ee;var _0x4cf528;return db[_0x9283('0x36')][_0x9283('0x5d')]({'where':{'id':_0x4a666e[_0x9283('0x4f')]['id']}})[_0x9283('0x2c')](handleEntityNotFound(_0x551f61,null))[_0x9283('0x2c')](function(_0x14d0c0){if(_0x14d0c0){_0x4773ee=_0x14d0c0;_0x2ee74e[_0x9283('0x3a')]=_[_0x9283('0x3b')](db[_0x9283('0x62')]['rawAttributes']);_0x2ee74e[_0x9283('0x3c')]=_[_0x9283('0x3b')](_0x4a666e[_0x9283('0x3c')]);_0x2ee74e[_0x9283('0x3d')]=_[_0x9283('0x3e')](_0x2ee74e['model'],_0x2ee74e[_0x9283('0x3c')]);_0x19d644[_0x9283('0x40')]=_[_0x9283('0x3e')](_0x2ee74e[_0x9283('0x3a')],qs['fields'](_0x4a666e[_0x9283('0x3c')][_0x9283('0x3f')]));_0x19d644[_0x9283('0x40')]=_0x19d644[_0x9283('0x40')][_0x9283('0x41')]?_0x19d644['attributes']:_0x2ee74e[_0x9283('0x3a')];_0x19d644[_0x9283('0x5f')]=qs[_0x9283('0x44')](_0x4a666e[_0x9283('0x3c')][_0x9283('0x44')]);_0x19d644[_0x9283('0x45')]=qs[_0x9283('0x3d')](_[_0x9283('0x46')](_0x4a666e['query'],_0x2ee74e[_0x9283('0x3d')]));if(_0x4a666e[_0x9283('0x3c')][_0x9283('0x61')]){_0x19d644['where']=_['merge'](_0x19d644[_0x9283('0x45')],{'$or':_[_0x9283('0x35')](_0x19d644['attributes'],function(_0x43b221){var _0x41820a={};_0x41820a[_0x43b221]={'$like':'%'+_0x4a666e[_0x9283('0x3c')][_0x9283('0x61')]+'%'};return _0x41820a;})});}_0x19d644=_['merge']({},_0x19d644,_0x4a666e['options']);return _0x4773ee[_0x9283('0x8f')](_0x19d644);}})[_0x9283('0x2c')](function(_0x156829){if(_0x156829){_0x4cf528=_0x156829['length'];if(!_0x4a666e[_0x9283('0x3c')][_0x9283('0x42')](_0x9283('0x43'))){_0x19d644['limit']=qs[_0x9283('0x24')](_0x4a666e[_0x9283('0x3c')][_0x9283('0x24')]);_0x19d644[_0x9283('0x22')]=qs[_0x9283('0x22')](_0x4a666e[_0x9283('0x3c')][_0x9283('0x22')]);}return _0x4773ee[_0x9283('0x8f')](_0x19d644);}})[_0x9283('0x2c')](function(_0x511583){if(_0x511583){return _0x511583?{'count':_0x4cf528,'rows':_0x511583}:null;}})['then'](respondWithResult(_0x551f61,null))[_0x9283('0x4d')](handleError(_0x551f61,null));};
\ No newline at end of file
+var _0x3f2e=['includes','all','union','compact','value','isEmpty','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','SmsQueues','UserProfileResource','sendStatus','stack','index','map','SmsQueue','rawAttributes','fieldName','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','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','params','describe','getMembers','findOne','order','pick','UserSmsQueue','User','findAndCountAll','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','ids','interface','sequelize','transaction','findOrCreate','forEach','userSmsQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId'];(function(_0x7457fe,_0x564a5e){var _0x57a6e4=function(_0x566577){while(--_0x566577){_0x7457fe['push'](_0x7457fe['shift']());}};_0x57a6e4(++_0x564a5e);}(_0x3f2e,0x9d));var _0xe3f2=function(_0x8a2dae,_0x2a21a7){_0x8a2dae=_0x8a2dae-0x0;var _0x308f20=_0x3f2e[_0x8a2dae];return _0x308f20;};'use strict';var emlformat=require(_0xe3f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe3f2('0x1'));var jsonpatch=require(_0xe3f2('0x2'));var rp=require(_0xe3f2('0x3'));var moment=require(_0xe3f2('0x4'));var BPromise=require(_0xe3f2('0x5'));var Mustache=require(_0xe3f2('0x6'));var util=require(_0xe3f2('0x7'));var path=require('path');var sox=require(_0xe3f2('0x8'));var csv=require('to-csv');var ejs=require(_0xe3f2('0x9'));var fs=require('fs');var fs_extra=require(_0xe3f2('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe3f2('0xb'));var deskjs=require(_0xe3f2('0xc'));var toCsv=require(_0xe3f2('0xd'));var querystring=require(_0xe3f2('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe3f2('0xf'));var qs=require(_0xe3f2('0x10'));var as=require(_0xe3f2('0x11'));var hardwareService=require(_0xe3f2('0x12'));var logger=require(_0xe3f2('0x13'))(_0xe3f2('0x14'));var utils=require(_0xe3f2('0x15'));var config=require(_0xe3f2('0x16'));var licenseUtil=require(_0xe3f2('0x17'));var db=require(_0xe3f2('0x18'))['db'];config[_0xe3f2('0x19')]=_[_0xe3f2('0x1a')](config[_0xe3f2('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xe3f2('0x1b'))(new Redis(config[_0xe3f2('0x19')]));require(_0xe3f2('0x1c'))['register'](socket);function respondWithStatusCode(_0x5492e7,_0x496d3f){_0x496d3f=_0x496d3f||0xcc;return function(_0xc46f89){if(_0xc46f89){return _0x5492e7['sendStatus'](_0x496d3f);}return _0x5492e7[_0xe3f2('0x1d')](_0x496d3f)[_0xe3f2('0x1e')]();};}function respondWithResult(_0x2eaee4,_0x5bc139){_0x5bc139=_0x5bc139||0xc8;return function(_0x2d24aa){if(_0x2d24aa){return _0x2eaee4[_0xe3f2('0x1d')](_0x5bc139)[_0xe3f2('0x1f')](_0x2d24aa);}};}function respondWithFilteredResult(_0x2d7c99,_0x233aae){return function(_0x335e87){if(_0x335e87){var _0x545530=typeof _0x233aae[_0xe3f2('0x20')]===_0xe3f2('0x21')&&typeof _0x233aae[_0xe3f2('0x22')]===_0xe3f2('0x21');var _0x1a5c21=_0x335e87[_0xe3f2('0x23')];var _0x14eb54=_0x545530?0x0:_0x233aae[_0xe3f2('0x20')];var _0x175ce8=_0x545530?_0x335e87['count']:_0x233aae['offset']+_0x233aae['limit'];var _0xeadeb3;if(_0x175ce8>=_0x1a5c21){_0x175ce8=_0x1a5c21;_0xeadeb3=0xc8;}else{_0xeadeb3=0xce;}_0x2d7c99[_0xe3f2('0x1d')](_0xeadeb3);return _0x2d7c99[_0xe3f2('0x24')](_0xe3f2('0x25'),_0x14eb54+'-'+_0x175ce8+'/'+_0x1a5c21)[_0xe3f2('0x1f')](_0x335e87);}return null;};}function patchUpdates(_0x6bd0c9){return function(_0x27b630){try{jsonpatch[_0xe3f2('0x26')](_0x27b630,_0x6bd0c9,!![]);}catch(_0x4ac647){return BPromise[_0xe3f2('0x27')](_0x4ac647);}return _0x27b630['save']();};}function saveUpdates(_0x55d0df,_0x5c41b5){return function(_0xee7ca9){if(_0xee7ca9){return _0xee7ca9[_0xe3f2('0x28')](_0x55d0df)[_0xe3f2('0x29')](function(_0x707e52){return _0x707e52;});}return null;};}function removeEntity(_0x501563,_0x2a185e){return function(_0x4a19ba){if(_0x4a19ba){return _0x4a19ba[_0xe3f2('0x2a')]()[_0xe3f2('0x29')](function(){var _0x3ae9d7=_0x4a19ba[_0xe3f2('0x2b')]({'plain':!![]});var _0x5def04=_0xe3f2('0x2c');return db[_0xe3f2('0x2d')][_0xe3f2('0x2a')]({'where':{'type':_0x5def04,'resourceId':_0x3ae9d7['id']}})[_0xe3f2('0x29')](function(){return _0x4a19ba;});})[_0xe3f2('0x29')](function(){_0x501563[_0xe3f2('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ebe8c,_0x4f5483){return function(_0x26b671){if(!_0x26b671){_0x1ebe8c[_0xe3f2('0x2e')](0x194);}return _0x26b671;};}function handleError(_0x576c92,_0x5e5c1c){_0x5e5c1c=_0x5e5c1c||0x1f4;return function(_0x3b6d00){logger['error'](_0x3b6d00[_0xe3f2('0x2f')]);if(_0x3b6d00['name']){delete _0x3b6d00['name'];}_0x576c92[_0xe3f2('0x1d')](_0x5e5c1c)['send'](_0x3b6d00);};}exports[_0xe3f2('0x30')]=function(_0x13b00c,_0x4e3372){var _0x5d53ca={},_0x12d644={},_0x453a49={'count':0x0,'rows':[]};var _0x37174c=_[_0xe3f2('0x31')](db[_0xe3f2('0x32')][_0xe3f2('0x33')],function(_0x344295){return{'name':_0x344295[_0xe3f2('0x34')],'type':_0x344295['type'][_0xe3f2('0x35')]};});_0x12d644['model']=_['map'](_0x37174c,_0xe3f2('0x36'));_0x12d644[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x13b00c[_0xe3f2('0x37')]);_0x12d644[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x12d644[_0xe3f2('0x3b')],_0x12d644[_0xe3f2('0x37')]);_0x5d53ca[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x12d644[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x13b00c[_0xe3f2('0x37')]['fields']));_0x5d53ca[_0xe3f2('0x3c')]=_0x5d53ca[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x5d53ca['attributes']:_0x12d644[_0xe3f2('0x3b')];if(!_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x3f')](_0xe3f2('0x40'))){_0x5d53ca[_0xe3f2('0x22')]=qs[_0xe3f2('0x22')](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x5d53ca[_0xe3f2('0x20')]=qs[_0xe3f2('0x20')](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x20')]);}_0x5d53ca['order']=qs['sort'](_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x5d53ca['where']=qs[_0xe3f2('0x39')](_['pick'](_0x13b00c[_0xe3f2('0x37')],_0x12d644[_0xe3f2('0x39')]),_0x37174c);if(_0x13b00c[_0xe3f2('0x37')]['filter']){_0x5d53ca[_0xe3f2('0x42')]=_[_0xe3f2('0x43')](_0x5d53ca[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x37174c,function(_0x3bd4fa){if(_0x3bd4fa[_0xe3f2('0x44')]!==_0xe3f2('0x45')){var _0xaa2206={};_0xaa2206[_0x3bd4fa[_0xe3f2('0x36')]]={'$like':'%'+_0x13b00c['query'][_0xe3f2('0x46')]+'%'};return _0xaa2206;}})});}_0x5d53ca=_[_0xe3f2('0x43')]({},_0x5d53ca,_0x13b00c[_0xe3f2('0x47')]);var _0x1c2a24={'where':_0x5d53ca[_0xe3f2('0x42')]};return db[_0xe3f2('0x32')][_0xe3f2('0x23')](_0x1c2a24)[_0xe3f2('0x29')](function(_0x2f7925){_0x453a49[_0xe3f2('0x23')]=_0x2f7925;if(_0x13b00c[_0xe3f2('0x37')][_0xe3f2('0x48')]){_0x5d53ca[_0xe3f2('0x49')]=[{'all':!![]}];}return db['SmsQueue'][_0xe3f2('0x4a')](_0x5d53ca);})['then'](function(_0x40d051){_0x453a49['rows']=_0x40d051;return _0x453a49;})[_0xe3f2('0x29')](respondWithFilteredResult(_0x4e3372,_0x5d53ca))[_0xe3f2('0x4b')](handleError(_0x4e3372,null));};exports[_0xe3f2('0x4c')]=function(_0x8d0941,_0x5e5667){var _0x3ed254={'raw':!![],'where':{'id':_0x8d0941['params']['id']}},_0x550937={};_0x550937[_0xe3f2('0x3b')]=_[_0xe3f2('0x38')](db['SmsQueue'][_0xe3f2('0x33')]);_0x550937['query']=_[_0xe3f2('0x38')](_0x8d0941['query']);_0x550937[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x550937[_0xe3f2('0x3b')],_0x550937[_0xe3f2('0x37')]);_0x3ed254[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x550937[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x8d0941[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x3ed254[_0xe3f2('0x3c')]=_0x3ed254[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x3ed254['attributes']:_0x550937['model'];if(_0x8d0941[_0xe3f2('0x37')]['includeAll']){_0x3ed254[_0xe3f2('0x49')]=[{'all':!![]}];}_0x3ed254=_[_0xe3f2('0x43')]({},_0x3ed254,_0x8d0941['options']);return db[_0xe3f2('0x32')][_0xe3f2('0x4d')](_0x3ed254)[_0xe3f2('0x29')](handleEntityNotFound(_0x5e5667,null))['then'](respondWithResult(_0x5e5667,null))['catch'](handleError(_0x5e5667,null));};exports['create']=function(_0x1a7702,_0x1f6d69){return db[_0xe3f2('0x32')][_0xe3f2('0x4e')](_0x1a7702[_0xe3f2('0x4f')],{})[_0xe3f2('0x29')](function(_0x182dd3){var _0x575382=_0x1a7702[_0xe3f2('0x50')][_0xe3f2('0x2b')]({'plain':!![]});if(!_0x575382)throw new Error(_0xe3f2('0x51'));if(_0x575382[_0xe3f2('0x52')]===_0xe3f2('0x50')){var _0x3c136a=_0x182dd3[_0xe3f2('0x2b')]({'plain':!![]});var _0x4b47fb=_0xe3f2('0x2c');return db[_0xe3f2('0x53')]['find']({'where':{'name':_0x4b47fb,'userProfileId':_0x575382[_0xe3f2('0x54')]},'raw':!![]})[_0xe3f2('0x29')](function(_0x993666){if(_0x993666&&_0x993666[_0xe3f2('0x55')]===0x0){return db['UserProfileResource'][_0xe3f2('0x4e')]({'name':_0x3c136a[_0xe3f2('0x36')],'resourceId':_0x3c136a['id'],'type':_0x993666['name'],'sectionId':_0x993666['id']},{})[_0xe3f2('0x29')](function(){return _0x182dd3;});}else{return _0x182dd3;}})[_0xe3f2('0x4b')](function(_0x2388dc){logger[_0xe3f2('0x56')](_0xe3f2('0x57'),_0x2388dc);throw _0x2388dc;});}return _0x182dd3;})[_0xe3f2('0x29')](respondWithResult(_0x1f6d69,0xc9))[_0xe3f2('0x4b')](handleError(_0x1f6d69,null));};exports[_0xe3f2('0x28')]=function(_0x4e5aa2,_0x32b196){if(_0x4e5aa2[_0xe3f2('0x4f')]['id']){delete _0x4e5aa2['body']['id'];}return db['SmsQueue'][_0xe3f2('0x4d')]({'where':{'id':_0x4e5aa2[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x32b196,null))[_0xe3f2('0x29')](saveUpdates(_0x4e5aa2[_0xe3f2('0x4f')],null))[_0xe3f2('0x29')](respondWithResult(_0x32b196,null))['catch'](handleError(_0x32b196,null));};exports[_0xe3f2('0x2a')]=function(_0x3e3073,_0x576139){return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x3e3073['params']['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x576139,null))['then'](removeEntity(_0x576139,null))['catch'](handleError(_0x576139,null));};exports[_0xe3f2('0x59')]=function(_0x25662c,_0x150e64){return db[_0xe3f2('0x32')][_0xe3f2('0x59')]()[_0xe3f2('0x29')](respondWithResult(_0x150e64,null))[_0xe3f2('0x4b')](handleError(_0x150e64,null));};exports[_0xe3f2('0x5a')]=function(_0xf3bc4a,_0xc11918,_0xa198b8){var _0x355077={'raw':!![],'where':{}},_0x285669={},_0x4c629e;return db[_0xe3f2('0x32')][_0xe3f2('0x5b')]({'where':{'id':_0xf3bc4a[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0xc11918,null))[_0xe3f2('0x29')](function(_0x3390aa){if(_0x3390aa){_0x4c629e=_0x3390aa[_0xe3f2('0x2b')]({'plain':!![]});_0x285669['model']=_[_0xe3f2('0x38')](db['UserSmsQueue']['rawAttributes']);_0x285669[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0xf3bc4a[_0xe3f2('0x37')]);_0x285669[_0xe3f2('0x39')]=_[_0xe3f2('0x3a')](_0x285669[_0xe3f2('0x3b')],_0x285669[_0xe3f2('0x37')]);_0x355077[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x285669[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x355077[_0xe3f2('0x3c')]=_0x355077['attributes'][_0xe3f2('0x3e')]?_0x355077['attributes']:_0x285669[_0xe3f2('0x3b')];if(!_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x3f')]('nolimit')){_0x355077['limit']=qs[_0xe3f2('0x22')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x355077[_0xe3f2('0x20')]=qs['offset'](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x20')]);}_0x355077[_0xe3f2('0x5c')]=qs[_0xe3f2('0x41')](_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x355077['where']=qs['filters'](_[_0xe3f2('0x5d')](_0xf3bc4a['query'],_0x285669['filters']));_0x355077['where']['SmsQueueId']=_0x3390aa['id'];if(_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x46')]){_0x355077[_0xe3f2('0x42')]=_['merge'](_0x355077[_0xe3f2('0x42')],{'$or':_['map'](_0x355077[_0xe3f2('0x3c')],function(_0x569fb9){var _0x3f7c90={};_0x3f7c90[_0x569fb9]={'$like':'%'+_0xf3bc4a[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x3f7c90;})});}_0x355077=_[_0xe3f2('0x43')]({},_0x355077,_0xf3bc4a[_0xe3f2('0x47')]);return db[_0xe3f2('0x5e')]['findAll'](_0x355077);}})[_0xe3f2('0x29')](function(_0x33e853){if(_0x33e853){return db[_0xe3f2('0x5f')][_0xe3f2('0x60')]({'where':{'id':_[_0xe3f2('0x31')](_0x33e853,'UserId'),'role':_0xe3f2('0x61')},'attributes':['id','name',_0xe3f2('0x62'),_0xe3f2('0x63'),_0xe3f2('0x64')]});}})[_0xe3f2('0x29')](function(_0x485312){if(_0x485312){return{'count':_0x485312[_0xe3f2('0x23')],'rows':_[_0xe3f2('0x31')](_0x485312['rows'],function(_0x51dcad){return{'membername':_0x51dcad[_0xe3f2('0x36')],'UserId':_0x51dcad['id'],'queue_name':_0x4c629e[_0xe3f2('0x36')],'SmsQueueId':_0x4c629e['id'],'interface':util[_0xe3f2('0x65')](_0xe3f2('0x66'),_0xe3f2('0x67'),_0x51dcad['name']),'penalty':0x0,'paused':_0x51dcad[_0xe3f2('0x62')],'createdAt':_0x51dcad[_0xe3f2('0x64')],'updatedAt':_0x51dcad[_0xe3f2('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe3f2('0x29')](respondWithFilteredResult(_0xc11918,_0x355077))[_0xe3f2('0x4b')](handleError(_0xc11918,null));};exports['getTeams']=function(_0x32343f,_0x509271,_0x526583){var _0x18ff39={};var _0x6590ef={};var _0x340752;var _0x48c9e6;return db[_0xe3f2('0x32')][_0xe3f2('0x5b')]({'where':{'id':_0x32343f[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x509271,null))[_0xe3f2('0x29')](function(_0x404311){if(_0x404311){_0x340752=_0x404311;_0x6590ef[_0xe3f2('0x3b')]=_[_0xe3f2('0x38')](db[_0xe3f2('0x68')][_0xe3f2('0x33')]);_0x6590ef[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x32343f[_0xe3f2('0x37')]);_0x6590ef['filters']=_[_0xe3f2('0x3a')](_0x6590ef[_0xe3f2('0x3b')],_0x6590ef[_0xe3f2('0x37')]);_0x18ff39[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x6590ef[_0xe3f2('0x3b')],qs[_0xe3f2('0x3d')](_0x32343f[_0xe3f2('0x37')]['fields']));_0x18ff39[_0xe3f2('0x3c')]=_0x18ff39[_0xe3f2('0x3c')][_0xe3f2('0x3e')]?_0x18ff39[_0xe3f2('0x3c')]:_0x6590ef[_0xe3f2('0x3b')];_0x18ff39[_0xe3f2('0x5c')]=qs[_0xe3f2('0x41')](_0x32343f[_0xe3f2('0x37')]['sort']);_0x18ff39[_0xe3f2('0x42')]=qs[_0xe3f2('0x39')](_[_0xe3f2('0x5d')](_0x32343f[_0xe3f2('0x37')],_0x6590ef[_0xe3f2('0x39')]));if(_0x32343f['query']['filter']){_0x18ff39[_0xe3f2('0x42')]=_['merge'](_0x18ff39[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x18ff39['attributes'],function(_0x14a64f){var _0x23c353={};_0x23c353[_0x14a64f]={'$like':'%'+_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x23c353;})});}_0x18ff39=_[_0xe3f2('0x43')]({},_0x18ff39,_0x32343f[_0xe3f2('0x47')]);return _0x340752[_0xe3f2('0x69')](_0x18ff39);}})[_0xe3f2('0x29')](function(_0xcc1d11){if(_0xcc1d11){_0x48c9e6=_0xcc1d11[_0xe3f2('0x3e')];if(!_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x3f')](_0xe3f2('0x40'))){_0x18ff39['limit']=qs[_0xe3f2('0x22')](_0x32343f[_0xe3f2('0x37')][_0xe3f2('0x22')]);_0x18ff39[_0xe3f2('0x20')]=qs[_0xe3f2('0x20')](_0x32343f['query'][_0xe3f2('0x20')]);}return _0x340752[_0xe3f2('0x69')](_0x18ff39);}})[_0xe3f2('0x29')](function(_0xff8d44){if(_0xff8d44){return _0xff8d44?{'count':_0x48c9e6,'rows':_0xff8d44}:null;}})['then'](respondWithResult(_0x509271,null))[_0xe3f2('0x4b')](handleError(_0x509271,null));};exports['addTeams']=function(_0x1d09ad,_0x5f4ca4,_0xf335c2){var _0x5ac47d=_0x1d09ad['body'][_0xe3f2('0x6a')];return db['Team'][_0xe3f2('0x4a')]({'where':{'id':_0x5ac47d},'attributes':['id'],'include':[{'model':db[_0xe3f2('0x5f')],'as':'Agents','attributes':['id',_0xe3f2('0x36'),'online','voicePause',_0xe3f2('0x6b')],'raw':!![]}]})['then'](function(_0x15d461){if(_0x15d461){var _0x2dd2ca=_['flatMap'](_0x15d461,function(_0x2f2c78){var _0x4de51f=_0x2f2c78[_0xe3f2('0x2b')]({'plain':!![]});return _0x4de51f['Agents'];});return db['SmsQueue'][_0xe3f2('0x4d')]({'where':{'id':_0x1d09ad[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](function(_0x20c624){return db[_0xe3f2('0x6c')][_0xe3f2('0x6d')](function(_0x505b90){return _0x20c624['addTeams'](_0x5ac47d,{'transaction':_0x505b90})[_0xe3f2('0x29')](function(){return BPromise['each'](_0x2dd2ca,function(_0xd0bb8c){return db[_0xe3f2('0x5e')][_0xe3f2('0x6e')]({'where':{'UserId':_0xd0bb8c['id'],'SmsQueueId':_0x1d09ad[_0xe3f2('0x58')]['id']},'transaction':_0x505b90});});})[_0xe3f2('0x29')](function(){_0x2dd2ca[_0xe3f2('0x6f')](function(_0x1044b6){socket['emit'](_0xe3f2('0x70'),{'UserId':_0x1044b6['id'],'SmsQueueId':_0x20c624['id']});});});});});}})[_0xe3f2('0x29')](respondWithStatusCode(_0x5f4ca4,null))['catch'](handleError(_0x5f4ca4,null));};exports[_0xe3f2('0x71')]=function(_0x8dd99,_0x4263b4,_0xcef54c){return db[_0xe3f2('0x68')][_0xe3f2('0x4a')]({'where':{'id':_0x8dd99['query'][_0xe3f2('0x6a')]},'attributes':['id'],'include':[{'model':db[_0xe3f2('0x5f')],'as':_0xe3f2('0x72'),'attributes':['id'],'raw':!![]}]})[_0xe3f2('0x29')](handleEntityNotFound(_0x4263b4,null))['then'](function(_0xbf542c){var _0x2d5894=_['map'](_0xbf542c,'id');var _0x1b318b=[];var _0x48840e=[];var _0x48dfc0=squel[_0xe3f2('0x73')]();_0x48dfc0[_0xe3f2('0x74')](_0xe3f2('0x75'))[_0xe3f2('0x76')]('team_has_sms_queues','tq')[_0xe3f2('0x77')]('user_has_teams','ut',_0xe3f2('0x78'))['where'](_0xe3f2('0x79'),_0x8dd99[_0xe3f2('0x58')]['id']);for(var _0x3b516a=0x0;_0x3b516a<_0xbf542c['length'];_0x3b516a+=0x1){let _0x19a4a9=_0xbf542c[_0x3b516a];for(var _0x516cad=0x0;_0x516cad<_0x19a4a9[_0xe3f2('0x72')]['length'];_0x516cad+=0x1){let _0x1aad42=_0x19a4a9['Agents'][_0x516cad];var _0x4e7151=_0x48dfc0[_0xe3f2('0x7a')]();_0x4e7151[_0xe3f2('0x42')](_0xe3f2('0x7b'),_0x1aad42['id']);_0x48840e[_0xe3f2('0x7c')](db[_0xe3f2('0x6c')]['query'](_0x4e7151[_0xe3f2('0x7d')](),{'type':db[_0xe3f2('0x6c')][_0xe3f2('0x7e')][_0xe3f2('0x7f')]})[_0xe3f2('0x29')](function(_0x335536){if(_0x335536[_0xe3f2('0x3e')]===0x1){return _0x1aad42['id'];}else{var _0x478db1=_['every'](_[_0xe3f2('0x31')](_0x335536,_0xe3f2('0x80')),function(_0x7c6ad3){return _[_0xe3f2('0x81')](_0x2d5894,_0x7c6ad3);});if(_0x478db1){return _0x1aad42['id'];}}}));}}return BPromise[_0xe3f2('0x82')](_0x48840e)['then'](function(_0x46915d){_0x1b318b=_(_0x1b318b)[_0xe3f2('0x83')](_0x46915d)[_0xe3f2('0x84')]()[_0xe3f2('0x85')]();return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x8dd99[_0xe3f2('0x58')]['id']}})['then'](function(_0x54b114){return db[_0xe3f2('0x6c')][_0xe3f2('0x6d')](function(_0x4ac6a7){return _0x54b114[_0xe3f2('0x71')](_0x8dd99[_0xe3f2('0x37')][_0xe3f2('0x6a')],{'transaction':_0x4ac6a7})['then'](function(){if(!_[_0xe3f2('0x86')](_0x1b318b)){return _0x54b114[_0xe3f2('0x87')](_0x1b318b,{'transaction':_0x4ac6a7});}})['then'](function(){_0x1b318b[_0xe3f2('0x6f')](function(_0x303105){socket[_0xe3f2('0x88')](_0xe3f2('0x89'),{'UserId':_0x303105,'SmsQueueId':_0x54b114['id']});});});});});});})[_0xe3f2('0x29')](respondWithStatusCode(_0x4263b4,null))[_0xe3f2('0x4b')](handleError(_0x4263b4,null));};exports[_0xe3f2('0x8a')]=function(_0x31ca69,_0xc831f7,_0x1813ec){return db[_0xe3f2('0x32')][_0xe3f2('0x4d')]({'where':{'id':_0x31ca69['params']['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0xc831f7,null))[_0xe3f2('0x29')](function(_0x3025de){if(_0x3025de){return _0x3025de[_0xe3f2('0x8a')](_0x31ca69[_0xe3f2('0x4f')]['ids'],_[_0xe3f2('0x8b')](_0x31ca69[_0xe3f2('0x4f')],[_0xe3f2('0x6a'),'id'])||{})[_0xe3f2('0x8c')](function(_0x469243){for(var _0x2de286=0x0;_0x2de286<_0x31ca69['body'][_0xe3f2('0x6a')]['length'];_0x2de286+=0x1){socket[_0xe3f2('0x88')](_0xe3f2('0x70'),{'UserId':Number(_0x31ca69[_0xe3f2('0x4f')][_0xe3f2('0x6a')][_0x2de286]),'SmsQueueId':Number(_0x31ca69['params']['id'])});}return _0x469243;});}})['then'](respondWithResult(_0xc831f7,null))[_0xe3f2('0x4b')](handleError(_0xc831f7,null));};exports[_0xe3f2('0x87')]=function(_0x36cab4,_0x804cf6,_0x246c30){return db[_0xe3f2('0x32')]['find']({'where':{'id':_0x36cab4['params']['id']}})['then'](handleEntityNotFound(_0x804cf6,null))['then'](function(_0x4c5494){if(_0x4c5494){return _0x4c5494['removeAgents'](_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')])[_0xe3f2('0x29')](function(){if(_[_0xe3f2('0x8d')](_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')])){for(var _0xad130=0x0;_0xad130<_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')][_0xe3f2('0x3e')];_0xad130+=0x1){socket['emit'](_0xe3f2('0x89'),{'UserId':Number(_0x36cab4[_0xe3f2('0x37')][_0xe3f2('0x6a')][_0xad130]),'SmsQueueId':Number(_0x36cab4[_0xe3f2('0x58')]['id'])});}}else{socket[_0xe3f2('0x88')](_0xe3f2('0x89'),{'UserId':Number(_0x36cab4['query']['ids']),'SmsQueueId':Number(_0x36cab4[_0xe3f2('0x58')]['id'])});}});}})[_0xe3f2('0x29')](respondWithStatusCode(_0x804cf6,null))[_0xe3f2('0x4b')](handleError(_0x804cf6,null));};exports['getAgents']=function(_0x5c0ea3,_0x20a81a,_0x3a714e){var _0x3ebf55={};var _0x1aecbe={};var _0x580da1;var _0x37fa68;return db[_0xe3f2('0x32')]['findOne']({'where':{'id':_0x5c0ea3[_0xe3f2('0x58')]['id']}})[_0xe3f2('0x29')](handleEntityNotFound(_0x20a81a,null))[_0xe3f2('0x29')](function(_0x1ffefd){if(_0x1ffefd){_0x580da1=_0x1ffefd;_0x1aecbe['model']=_['keys'](db[_0xe3f2('0x5f')][_0xe3f2('0x33')]);_0x1aecbe[_0xe3f2('0x37')]=_[_0xe3f2('0x38')](_0x5c0ea3[_0xe3f2('0x37')]);_0x1aecbe[_0xe3f2('0x39')]=_['intersection'](_0x1aecbe[_0xe3f2('0x3b')],_0x1aecbe['query']);_0x3ebf55[_0xe3f2('0x3c')]=_[_0xe3f2('0x3a')](_0x1aecbe['model'],qs[_0xe3f2('0x3d')](_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x3d')]));_0x3ebf55[_0xe3f2('0x3c')]=_0x3ebf55[_0xe3f2('0x3c')]['length']?_0x3ebf55[_0xe3f2('0x3c')]:_0x1aecbe[_0xe3f2('0x3b')];_0x3ebf55[_0xe3f2('0x5c')]=qs['sort'](_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x41')]);_0x3ebf55['where']=qs['filters'](_[_0xe3f2('0x5d')](_0x5c0ea3['query'],_0x1aecbe['filters']));if(_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x46')]){_0x3ebf55[_0xe3f2('0x42')]=_['merge'](_0x3ebf55[_0xe3f2('0x42')],{'$or':_[_0xe3f2('0x31')](_0x3ebf55[_0xe3f2('0x3c')],function(_0x1f6ecf){var _0x56bd8a={};_0x56bd8a[_0x1f6ecf]={'$like':'%'+_0x5c0ea3[_0xe3f2('0x37')][_0xe3f2('0x46')]+'%'};return _0x56bd8a;})});}_0x3ebf55=_[_0xe3f2('0x43')]({},_0x3ebf55,_0x5c0ea3[_0xe3f2('0x47')]);return _0x580da1[_0xe3f2('0x8e')](_0x3ebf55);}})[_0xe3f2('0x29')](function(_0x44ccb0){if(_0x44ccb0){_0x37fa68=_0x44ccb0['length'];if(!_0x5c0ea3[_0xe3f2('0x37')]['hasOwnProperty'](_0xe3f2('0x40'))){_0x3ebf55[_0xe3f2('0x22')]=qs[_0xe3f2('0x22')](_0x5c0ea3[_0xe3f2('0x37')]['limit']);_0x3ebf55[_0xe3f2('0x20')]=qs['offset'](_0x5c0ea3['query'][_0xe3f2('0x20')]);}return _0x580da1[_0xe3f2('0x8e')](_0x3ebf55);}})['then'](function(_0x4f99cd){if(_0x4f99cd){return _0x4f99cd?{'count':_0x37fa68,'rows':_0x4f99cd}:null;}})[_0xe3f2('0x29')](respondWithResult(_0x20a81a,null))[_0xe3f2('0x4b')](handleError(_0x20a81a,null));};
\ No newline at end of file
index e9e17a4..7ffb948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a60=['hook','exports','SmsQueue','setMaxListeners','save','remove','emit'];(function(_0x593ffe,_0x160576){var _0x3e01d5=function(_0x528baf){while(--_0x528baf){_0x593ffe['push'](_0x593ffe['shift']());}};_0x3e01d5(++_0x160576);}(_0x4a60,0x1bb));var _0x04a6=function(_0x27604f,_0x5ae336){_0x27604f=_0x27604f-0x0;var _0x40d189=_0x4a60[_0x27604f];return _0x40d189;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0x04a6('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x04a6('0x1')](0x0);var events={'afterCreate':_0x04a6('0x2'),'afterUpdate':'update','afterDestroy':_0x04a6('0x3')};function emitEvent(_0xb296c9){return function(_0x2948d4,_0x5c4285,_0x270a4a){SmsQueueEvents[_0x04a6('0x4')](_0xb296c9+':'+_0x2948d4['id'],_0x2948d4);SmsQueueEvents[_0x04a6('0x4')](_0xb296c9,_0x2948d4);_0x270a4a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x04a6('0x5')](e,emitEvent(event));}}module[_0x04a6('0x6')]=SmsQueueEvents;
\ No newline at end of file
+var _0xb972=['events','SmsQueue','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x1d05a3,_0x125a86){var _0x48d934=function(_0x44f447){while(--_0x44f447){_0x1d05a3['push'](_0x1d05a3['shift']());}};_0x48d934(++_0x125a86);}(_0xb972,0x100));var _0x2b97=function(_0x3d8240,_0x2663d4){_0x3d8240=_0x3d8240-0x0;var _0x3d0372=_0xb972[_0x3d8240];return _0x3d0372;};'use strict';var EventEmitter=require(_0x2b97('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x2b97('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x2b97('0x2')](0x0);var events={'afterCreate':_0x2b97('0x3'),'afterUpdate':'update','afterDestroy':_0x2b97('0x4')};function emitEvent(_0x1904b6){return function(_0x2a6d75,_0xa45428,_0x1d1d3e){SmsQueueEvents['emit'](_0x1904b6+':'+_0x2a6d75['id'],_0x2a6d75);SmsQueueEvents[_0x2b97('0x5')](_0x1904b6,_0x2a6d75);_0x1d1d3e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x2b97('0x6')](e,emitEvent(event));}}module[_0x2b97('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 1ccd3f1..43af70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda6c=['lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','sms_queues'];(function(_0x57251f,_0x22f8a6){var _0x246bd9=function(_0x477472){while(--_0x477472){_0x57251f['push'](_0x57251f['shift']());}};_0x246bd9(++_0x22f8a6);}(_0xda6c,0xf0));var _0xcda6=function(_0x38fc0e,_0x396ece){_0x38fc0e=_0x38fc0e-0x0;var _0x3062be=_0xda6c[_0x38fc0e];return _0x3062be;};'use strict';var _=require(_0xcda6('0x0'));var util=require('util');var logger=require(_0xcda6('0x1'))(_0xcda6('0x2'));var moment=require('moment');var BPromise=require(_0xcda6('0x3'));var rp=require(_0xcda6('0x4'));var fs=require('fs');var path=require(_0xcda6('0x5'));var rimraf=require(_0xcda6('0x6'));var config=require(_0xcda6('0x7'));var attributes=require(_0xcda6('0x8'));module[_0xcda6('0x9')]=function(_0xf19226,_0xeae3ea){return _0xf19226[_0xcda6('0xa')]('SmsQueue',attributes,{'tableName':_0xcda6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x07e0=['rimraf','../../config/environment','define','SmsQueue','sms_queues','util','../../config/logger','api','moment','bluebird','path'];(function(_0x56fcc7,_0x10723d){var _0x3b3db5=function(_0x458b39){while(--_0x458b39){_0x56fcc7['push'](_0x56fcc7['shift']());}};_0x3b3db5(++_0x10723d);}(_0x07e0,0xf7));var _0x007e=function(_0x28acd7,_0x2d7d6a){_0x28acd7=_0x28acd7-0x0;var _0x4fcc45=_0x07e0[_0x28acd7];return _0x4fcc45;};'use strict';var _=require('lodash');var util=require(_0x007e('0x0'));var logger=require(_0x007e('0x1'))(_0x007e('0x2'));var moment=require(_0x007e('0x3'));var BPromise=require(_0x007e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x007e('0x5'));var rimraf=require(_0x007e('0x6'));var config=require(_0x007e('0x7'));var attributes=require('./smsQueue.attributes');module['exports']=function(_0x450f25,_0x288e94){return _0x450f25[_0x007e('0x8')](_0x007e('0x9'),attributes,{'tableName':_0x007e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e40eb1e..a9dd900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb46=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','localhost','socket.io-emitter','redis','./smsQueue.socket','register','request','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','SmsQueue,\x20%s,\x20%s','result','catch','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes','limit','include','model','map','ShowSmsQueue','find','stringify','lodash'];(function(_0x179ab7,_0x1acd98){var _0x39558a=function(_0x5d3c5a){while(--_0x5d3c5a){_0x179ab7['push'](_0x179ab7['shift']());}};_0x39558a(++_0x1acd98);}(_0xdb46,0xfb));var _0x6db4=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0xdb46[_0x133277];return _0x5b4a22;};'use strict';var _=require(_0x6db4('0x0'));var util=require(_0x6db4('0x1'));var moment=require(_0x6db4('0x2'));var BPromise=require(_0x6db4('0x3'));var rs=require(_0x6db4('0x4'));var fs=require('fs');var Redis=require(_0x6db4('0x5'));var db=require(_0x6db4('0x6'))['db'];var utils=require(_0x6db4('0x7'));var logger=require(_0x6db4('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6db4('0x9'));var client=jayson['client'][_0x6db4('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x6db4('0xb'),'port':0x18eb});var socket=require(_0x6db4('0xc'))(new Redis(config[_0x6db4('0xd')]));require(_0x6db4('0xe'))[_0x6db4('0xf')](socket);function respondWithRpcPromise(_0xfc0453,_0x3ba5a8,_0x4b81ca){return new BPromise(function(_0x41a691,_0x257d30){return client[_0x6db4('0x10')](_0xfc0453,_0x4b81ca)[_0x6db4('0x11')](function(_0x6542dc){logger[_0x6db4('0x12')]('SmsQueue,\x20%s,\x20%s',_0x3ba5a8,_0x6db4('0x13'));logger[_0x6db4('0x14')](_0x6db4('0x15'),_0x3ba5a8,_0x6db4('0x13'),JSON['stringify'](_0x6542dc));if(_0x6542dc[_0x6db4('0x16')]){if(_0x6542dc[_0x6db4('0x16')][_0x6db4('0x17')]===0x1f4){logger['error']('SmsQueue,\x20%s,\x20%s',_0x3ba5a8,_0x6542dc[_0x6db4('0x16')][_0x6db4('0x18')]);return _0x257d30(_0x6542dc[_0x6db4('0x16')][_0x6db4('0x18')]);}logger[_0x6db4('0x16')](_0x6db4('0x19'),_0x3ba5a8,_0x6542dc[_0x6db4('0x16')]['message']);return _0x41a691(_0x6542dc[_0x6db4('0x16')][_0x6db4('0x18')]);}else{logger[_0x6db4('0x12')]('SmsQueue,\x20%s,\x20%s',_0x3ba5a8,'request\x20sent');_0x41a691(_0x6542dc[_0x6db4('0x1a')][_0x6db4('0x18')]);}})[_0x6db4('0x1b')](function(_0x2b50c6){logger[_0x6db4('0x16')](_0x6db4('0x19'),_0x3ba5a8,_0x2b50c6);_0x257d30(_0x2b50c6);});});}exports[_0x6db4('0x1c')]=function(_0x539765){var _0x42f19a=this;return new Promise(function(_0x3501ec,_0x1c04c5){return db[_0x6db4('0x1d')][_0x6db4('0x1e')]({'raw':_0x539765[_0x6db4('0x1f')]?_0x539765['options'][_0x6db4('0x20')]===undefined?!![]:![]:!![],'where':_0x539765[_0x6db4('0x1f')]?_0x539765['options'][_0x6db4('0x21')]||null:null,'attributes':_0x539765[_0x6db4('0x1f')]?_0x539765[_0x6db4('0x1f')][_0x6db4('0x22')]||null:null,'limit':_0x539765[_0x6db4('0x1f')]?_0x539765[_0x6db4('0x1f')][_0x6db4('0x23')]||null:null,'include':_0x539765[_0x6db4('0x1f')]?_0x539765[_0x6db4('0x1f')][_0x6db4('0x24')]?_['map'](_0x539765[_0x6db4('0x1f')][_0x6db4('0x24')],function(_0x49ef04){return{'model':db[_0x49ef04[_0x6db4('0x25')]],'as':_0x49ef04['as'],'attributes':_0x49ef04['attributes'],'include':_0x49ef04[_0x6db4('0x24')]?_[_0x6db4('0x26')](_0x49ef04[_0x6db4('0x24')],function(_0x420c5f){return{'model':db[_0x420c5f[_0x6db4('0x25')]],'as':_0x420c5f['as'],'attributes':_0x420c5f['attributes'],'include':_0x420c5f['include']?_['map'](_0x420c5f[_0x6db4('0x24')],function(_0x31431e){return{'model':db[_0x31431e[_0x6db4('0x25')]],'as':_0x31431e['as'],'attributes':_0x31431e[_0x6db4('0x22')]};}):[]};}):[]};}):[]:[]})[_0x6db4('0x11')](function(_0x255b10){logger['info'](_0x6db4('0x1c'),_0x539765);logger[_0x6db4('0x14')](_0x6db4('0x1c'),_0x539765,JSON['stringify'](_0x255b10));_0x3501ec(_0x255b10);})[_0x6db4('0x1b')](function(_0x48fec5){logger[_0x6db4('0x16')](_0x6db4('0x1c'),_0x48fec5[_0x6db4('0x18')],_0x539765);_0x1c04c5(_0x42f19a['error'](0x1f4,_0x48fec5[_0x6db4('0x18')]));});});};exports[_0x6db4('0x27')]=function(_0x57a7f9){var _0x44928d=this;return new Promise(function(_0x251480,_0x58ab69){return db[_0x6db4('0x1d')][_0x6db4('0x28')]({'raw':_0x57a7f9[_0x6db4('0x1f')]?_0x57a7f9[_0x6db4('0x1f')][_0x6db4('0x20')]===undefined?!![]:![]:!![],'where':_0x57a7f9[_0x6db4('0x1f')]?_0x57a7f9['options'][_0x6db4('0x21')]||null:null,'attributes':_0x57a7f9[_0x6db4('0x1f')]?_0x57a7f9['options'][_0x6db4('0x22')]||null:null,'include':_0x57a7f9[_0x6db4('0x1f')]?_0x57a7f9[_0x6db4('0x1f')][_0x6db4('0x24')]?_[_0x6db4('0x26')](_0x57a7f9['options'][_0x6db4('0x24')],function(_0x3e742f){return{'model':db[_0x3e742f[_0x6db4('0x25')]],'as':_0x3e742f['as'],'attributes':_0x3e742f[_0x6db4('0x22')],'include':_0x3e742f[_0x6db4('0x24')]?_['map'](_0x3e742f[_0x6db4('0x24')],function(_0x5d7ace){return{'model':db[_0x5d7ace['model']],'as':_0x5d7ace['as'],'attributes':_0x5d7ace[_0x6db4('0x22')],'include':_0x5d7ace['include']?_[_0x6db4('0x26')](_0x5d7ace[_0x6db4('0x24')],function(_0x5561e3){return{'model':db[_0x5561e3[_0x6db4('0x25')]],'as':_0x5561e3['as'],'attributes':_0x5561e3[_0x6db4('0x22')]};}):[]};}):[]};}):[]:[]})[_0x6db4('0x11')](function(_0x421051){logger[_0x6db4('0x12')]('ShowSmsQueue',_0x57a7f9);logger[_0x6db4('0x14')](_0x6db4('0x27'),_0x57a7f9,JSON[_0x6db4('0x29')](_0x421051));_0x251480(_0x421051);})['catch'](function(_0x11b5fb){logger[_0x6db4('0x16')](_0x6db4('0x27'),_0x11b5fb[_0x6db4('0x18')],_0x57a7f9);_0x58ab69(_0x44928d['error'](0x1f4,_0x11b5fb[_0x6db4('0x18')]));});});};
\ No newline at end of file
+var _0xc781=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetSmsQueue','SmsQueue','options','raw','where','attributes','limit','include','map','model','catch','ShowSmsQueue'];(function(_0x472e9b,_0x39189f){var _0x412bb5=function(_0x291443){while(--_0x291443){_0x472e9b['push'](_0x472e9b['shift']());}};_0x412bb5(++_0x39189f);}(_0xc781,0x118));var _0x1c78=function(_0xbb922,_0x4800c3){_0xbb922=_0xbb922-0x0;var _0x4c4542=_0xc781[_0xbb922];return _0x4c4542;};'use strict';var _=require(_0x1c78('0x0'));var util=require(_0x1c78('0x1'));var moment=require(_0x1c78('0x2'));var BPromise=require(_0x1c78('0x3'));var rs=require(_0x1c78('0x4'));var fs=require('fs');var Redis=require(_0x1c78('0x5'));var db=require(_0x1c78('0x6'))['db'];var utils=require(_0x1c78('0x7'));var logger=require(_0x1c78('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1c78('0x9'));var client=jayson[_0x1c78('0xa')][_0x1c78('0xb')]({'port':0x232a});config[_0x1c78('0xc')]=_[_0x1c78('0xd')](config[_0x1c78('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x1c78('0xe'))(new Redis(config[_0x1c78('0xc')]));require(_0x1c78('0xf'))[_0x1c78('0x10')](socket);function respondWithRpcPromise(_0x2efe46,_0x2fee5b,_0x1bbe1f){return new BPromise(function(_0xd7cc4e,_0x55fe6a){return client[_0x1c78('0x11')](_0x2efe46,_0x1bbe1f)[_0x1c78('0x12')](function(_0xa48d0e){logger[_0x1c78('0x13')](_0x1c78('0x14'),_0x2fee5b,_0x1c78('0x15'));logger[_0x1c78('0x16')](_0x1c78('0x17'),_0x2fee5b,'request\x20sent',JSON[_0x1c78('0x18')](_0xa48d0e));if(_0xa48d0e['error']){if(_0xa48d0e['error']['code']===0x1f4){logger[_0x1c78('0x19')]('SmsQueue,\x20%s,\x20%s',_0x2fee5b,_0xa48d0e['error'][_0x1c78('0x1a')]);return _0x55fe6a(_0xa48d0e[_0x1c78('0x19')]['message']);}logger[_0x1c78('0x19')](_0x1c78('0x14'),_0x2fee5b,_0xa48d0e[_0x1c78('0x19')][_0x1c78('0x1a')]);return _0xd7cc4e(_0xa48d0e['error'][_0x1c78('0x1a')]);}else{logger[_0x1c78('0x13')](_0x1c78('0x14'),_0x2fee5b,'request\x20sent');_0xd7cc4e(_0xa48d0e[_0x1c78('0x1b')]['message']);}})['catch'](function(_0x2bc63c){logger[_0x1c78('0x19')](_0x1c78('0x14'),_0x2fee5b,_0x2bc63c);_0x55fe6a(_0x2bc63c);});});}exports[_0x1c78('0x1c')]=function(_0x4d9286){var _0x5e996f=this;return new Promise(function(_0x25cbc3,_0x3ab7c1){return db[_0x1c78('0x1d')]['findAll']({'raw':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x1f')]===undefined?!![]:![]:!![],'where':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x20')]||null:null,'attributes':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x21')]||null:null,'limit':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x22')]||null:null,'include':_0x4d9286[_0x1c78('0x1e')]?_0x4d9286[_0x1c78('0x1e')][_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x4d9286[_0x1c78('0x1e')]['include'],function(_0x39da29){return{'model':db[_0x39da29[_0x1c78('0x25')]],'as':_0x39da29['as'],'attributes':_0x39da29[_0x1c78('0x21')],'include':_0x39da29[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x39da29[_0x1c78('0x23')],function(_0x7b9b1a){return{'model':db[_0x7b9b1a['model']],'as':_0x7b9b1a['as'],'attributes':_0x7b9b1a[_0x1c78('0x21')],'include':_0x7b9b1a[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x7b9b1a[_0x1c78('0x23')],function(_0x4c5fad){return{'model':db[_0x4c5fad[_0x1c78('0x25')]],'as':_0x4c5fad['as'],'attributes':_0x4c5fad[_0x1c78('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1c78('0x12')](function(_0x1f7aa5){logger[_0x1c78('0x13')]('GetSmsQueue',_0x4d9286);logger['debug']('GetSmsQueue',_0x4d9286,JSON['stringify'](_0x1f7aa5));_0x25cbc3(_0x1f7aa5);})[_0x1c78('0x26')](function(_0x47faa3){logger[_0x1c78('0x19')]('GetSmsQueue',_0x47faa3[_0x1c78('0x1a')],_0x4d9286);_0x3ab7c1(_0x5e996f['error'](0x1f4,_0x47faa3[_0x1c78('0x1a')]));});});};exports['ShowSmsQueue']=function(_0x118e2d){var _0x50ef84=this;return new Promise(function(_0x2c73b2,_0x58742f){return db[_0x1c78('0x1d')]['find']({'raw':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x1f')]===undefined?!![]:![]:!![],'where':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x20')]||null:null,'attributes':_0x118e2d[_0x1c78('0x1e')]?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x21')]||null:null,'include':_0x118e2d['options']?_0x118e2d[_0x1c78('0x1e')][_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x118e2d[_0x1c78('0x1e')]['include'],function(_0x1aec7a){return{'model':db[_0x1aec7a[_0x1c78('0x25')]],'as':_0x1aec7a['as'],'attributes':_0x1aec7a['attributes'],'include':_0x1aec7a[_0x1c78('0x23')]?_['map'](_0x1aec7a[_0x1c78('0x23')],function(_0x5745c8){return{'model':db[_0x5745c8[_0x1c78('0x25')]],'as':_0x5745c8['as'],'attributes':_0x5745c8[_0x1c78('0x21')],'include':_0x5745c8[_0x1c78('0x23')]?_[_0x1c78('0x24')](_0x5745c8[_0x1c78('0x23')],function(_0x375d21){return{'model':db[_0x375d21[_0x1c78('0x25')]],'as':_0x375d21['as'],'attributes':_0x375d21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x6f6e2){logger[_0x1c78('0x13')](_0x1c78('0x27'),_0x118e2d);logger['debug']('ShowSmsQueue',_0x118e2d,JSON[_0x1c78('0x18')](_0x6f6e2));_0x2c73b2(_0x6f6e2);})[_0x1c78('0x26')](function(_0x3bb547){logger[_0x1c78('0x19')](_0x1c78('0x27'),_0x3bb547[_0x1c78('0x1a')],_0x118e2d);_0x58742f(_0x50ef84[_0x1c78('0x19')](0x1f4,_0x3bb547[_0x1c78('0x1a')]));});});};
\ No newline at end of file
index 1d45fd0..745355c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09e1=['register','smsQueue:','./smsQueue.events','save','remove','update','removeListener'];(function(_0x40f1f1,_0x38f44a){var _0x5cd32f=function(_0x5631ce){while(--_0x5631ce){_0x40f1f1['push'](_0x40f1f1['shift']());}};_0x5cd32f(++_0x38f44a);}(_0x09e1,0xcd));var _0x109e=function(_0x540bf0,_0xed7c6a){_0x540bf0=_0x540bf0-0x0;var _0x68c50c=_0x09e1[_0x540bf0];return _0x68c50c;};'use strict';var SmsQueueEvents=require(_0x109e('0x0'));var events=[_0x109e('0x1'),_0x109e('0x2'),_0x109e('0x3')];function createListener(_0x291a56,_0x1dda0f){return function(_0x3d13f1){_0x1dda0f['emit'](_0x291a56,_0x3d13f1);};}function removeListener(_0x1285e0,_0x22d176){return function(){SmsQueueEvents[_0x109e('0x4')](_0x1285e0,_0x22d176);};}exports[_0x109e('0x5')]=function(_0x3fc458){for(var _0x26c9c5=0x0,_0x26635b=events['length'];_0x26c9c5<_0x26635b;_0x26c9c5++){var _0x661c95=events[_0x26c9c5];var _0x1f7bbb=createListener(_0x109e('0x6')+_0x661c95,_0x3fc458);SmsQueueEvents['on'](_0x661c95,_0x1f7bbb);}};
\ No newline at end of file
+var _0x81cb=['smsQueue:','./smsQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x274dd7,_0x2e6051){var _0x148829=function(_0x4cec98){while(--_0x4cec98){_0x274dd7['push'](_0x274dd7['shift']());}};_0x148829(++_0x2e6051);}(_0x81cb,0x1d9));var _0xb81c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x81cb[_0x14add3];return _0x4a174f;};'use strict';var SmsQueueEvents=require(_0xb81c('0x0'));var events=[_0xb81c('0x1'),_0xb81c('0x2'),_0xb81c('0x3')];function createListener(_0x187c05,_0x174229){return function(_0x2cb796){_0x174229[_0xb81c('0x4')](_0x187c05,_0x2cb796);};}function removeListener(_0x329285,_0x509471){return function(){SmsQueueEvents[_0xb81c('0x5')](_0x329285,_0x509471);};}exports[_0xb81c('0x6')]=function(_0xbdfd16){for(var _0x2caa3a=0x0,_0x66f70a=events['length'];_0x2caa3a<_0x66f70a;_0x2caa3a++){var _0x28f9b4=events[_0x2caa3a];var _0x2aa38f=createListener(_0xb81c('0x7')+_0x28f9b4,_0xbdfd16);SmsQueueEvents['on'](_0x28f9b4,_0x2aa38f);}};
\ No newline at end of file
index 04b4363..921e38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dee=['put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','create'];(function(_0x34fed3,_0x463dfb){var _0x4b60a4=function(_0x1e022c){while(--_0x1e022c){_0x34fed3['push'](_0x34fed3['shift']());}};_0x4b60a4(++_0x463dfb);}(_0x7dee,0xb0));var _0xe7de=function(_0x3bc103,_0x16419b){_0x3bc103=_0x3bc103-0x0;var _0x3e64f4=_0x7dee[_0x3bc103];return _0x3e64f4;};'use strict';var multer=require(_0xe7de('0x0'));var util=require('util');var path=require(_0xe7de('0x1'));var timeout=require('connect-timeout');var express=require(_0xe7de('0x2'));var router=express[_0xe7de('0x3')]();var fs_extra=require(_0xe7de('0x4'));var auth=require(_0xe7de('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe7de('0x6'));var controller=require('./smsQueueReport.controller');router[_0xe7de('0x7')]('/',auth[_0xe7de('0x8')](),controller[_0xe7de('0x9')]);router[_0xe7de('0x7')](_0xe7de('0xa'),auth[_0xe7de('0x8')](),controller['describe']);router[_0xe7de('0x7')](_0xe7de('0xb'),auth[_0xe7de('0x8')](),controller[_0xe7de('0xc')]);router['post']('/',auth[_0xe7de('0x8')](),controller[_0xe7de('0xd')]);router[_0xe7de('0xe')](_0xe7de('0xb'),auth[_0xe7de('0x8')](),controller[_0xe7de('0xf')]);router[_0xe7de('0x10')]('/:id',auth[_0xe7de('0x8')](),controller[_0xe7de('0x11')]);module[_0xe7de('0x12')]=router;
\ No newline at end of file
+var _0xb833=['../../config/environment','./smsQueueReport.controller','get','index','/describe','isAuthenticated','describe','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2c87a2,_0x519155){var _0x2b1f02=function(_0x490217){while(--_0x490217){_0x2c87a2['push'](_0x2c87a2['shift']());}};_0x2b1f02(++_0x519155);}(_0xb833,0x168));var _0x3b83=function(_0x32141c,_0x3ad11a){_0x32141c=_0x32141c-0x0;var _0x319b68=_0xb833[_0x32141c];return _0x319b68;};'use strict';var multer=require(_0x3b83('0x0'));var util=require(_0x3b83('0x1'));var path=require(_0x3b83('0x2'));var timeout=require(_0x3b83('0x3'));var express=require(_0x3b83('0x4'));var router=express[_0x3b83('0x5')]();var fs_extra=require(_0x3b83('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3b83('0x7'));var config=require(_0x3b83('0x8'));var controller=require(_0x3b83('0x9'));router[_0x3b83('0xa')]('/',auth['isAuthenticated'](),controller[_0x3b83('0xb')]);router['get'](_0x3b83('0xc'),auth[_0x3b83('0xd')](),controller[_0x3b83('0xe')]);router[_0x3b83('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3b83('0xf')]('/',auth[_0x3b83('0xd')](),controller[_0x3b83('0x10')]);router[_0x3b83('0x11')](_0x3b83('0x12'),auth['isAuthenticated'](),controller[_0x3b83('0x13')]);router[_0x3b83('0x14')](_0x3b83('0x12'),auth[_0x3b83('0xd')](),controller[_0x3b83('0x15')]);module[_0x3b83('0x16')]=router;
\ No newline at end of file
index 30d8721..19734bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3e8=['moment','sequelize','exports','STRING','DATE'];(function(_0x3d118a,_0xc2c0d7){var _0xbdfbf3=function(_0x555085){while(--_0x555085){_0x3d118a['push'](_0x3d118a['shift']());}};_0xbdfbf3(++_0xc2c0d7);}(_0xe3e8,0x181));var _0x8e3e=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0xe3e8[_0x2cf2e9];return _0xd3670d;};'use strict';var moment=require(_0x8e3e('0x0'));var Sequelize=require(_0x8e3e('0x1'));module[_0x8e3e('0x2')]={'uniqueid':{'type':Sequelize[_0x8e3e('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x8e3e('0x3')]},'joinAt':{'type':Sequelize[_0x8e3e('0x4')]},'leaveAt':{'type':Sequelize[_0x8e3e('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x80aa=['STRING','DATE','moment','sequelize','exports'];(function(_0x491d50,_0x4103b9){var _0x411b44=function(_0x9e2c24){while(--_0x9e2c24){_0x491d50['push'](_0x491d50['shift']());}};_0x411b44(++_0x4103b9);}(_0x80aa,0xb1));var _0xa80a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x80aa[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0xa80a('0x0'));var Sequelize=require(_0xa80a('0x1'));module[_0xa80a('0x2')]={'uniqueid':{'type':Sequelize[_0xa80a('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa80a('0x3')]},'joinAt':{'type':Sequelize[_0xa80a('0x4')]},'leaveAt':{'type':Sequelize[_0xa80a('0x4')]},'acceptAt':{'type':Sequelize[_0xa80a('0x4')]},'exitAt':{'type':Sequelize[_0xa80a('0x4')]},'reason':{'type':Sequelize[_0xa80a('0x3')]}};
\ No newline at end of file
index b10d0b6..1f31f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x908d=['sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','Content-Range','apply','save','update','then','end','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','type','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x464e8d,_0x339c9b){var _0x25e3dd=function(_0x285c34){while(--_0x285c34){_0x464e8d['push'](_0x464e8d['shift']());}};_0x25e3dd(++_0x339c9b);}(_0x908d,0x180));var _0xd908=function(_0x81f500,_0x34d10c){_0x81f500=_0x81f500-0x0;var _0x24281e=_0x908d[_0x81f500];return _0x24281e;};'use strict';var emlformat=require(_0xd908('0x0'));var rimraf=require(_0xd908('0x1'));var zipdir=require(_0xd908('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd908('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd908('0x4'));var path=require(_0xd908('0x5'));var sox=require('sox');var csv=require(_0xd908('0x6'));var ejs=require(_0xd908('0x7'));var fs=require('fs');var fs_extra=require(_0xd908('0x8'));var _=require(_0xd908('0x9'));var squel=require(_0xd908('0xa'));var crypto=require(_0xd908('0xb'));var jsforce=require(_0xd908('0xc'));var deskjs=require(_0xd908('0xd'));var toCsv=require(_0xd908('0x6'));var querystring=require(_0xd908('0xe'));var Papa=require(_0xd908('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd908('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd908('0x11'));var logger=require('../../config/logger')(_0xd908('0x12'));var utils=require(_0xd908('0x13'));var config=require(_0xd908('0x14'));var licenseUtil=require(_0xd908('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12d0aa,_0x23c932){_0x23c932=_0x23c932||0xcc;return function(_0x5a1dff){if(_0x5a1dff){return _0x12d0aa['sendStatus'](_0x23c932);}return _0x12d0aa[_0xd908('0x16')](_0x23c932)['end']();};}function respondWithResult(_0x101b57,_0x378ea3){_0x378ea3=_0x378ea3||0xc8;return function(_0xd4ff6f){if(_0xd4ff6f){return _0x101b57[_0xd908('0x16')](_0x378ea3)[_0xd908('0x17')](_0xd4ff6f);}};}function respondWithFilteredResult(_0xc79ddd,_0x2a9405){return function(_0x34ac40){if(_0x34ac40){var _0x92f1e8=typeof _0x2a9405[_0xd908('0x18')]==='undefined'&&typeof _0x2a9405[_0xd908('0x19')]==='undefined';var _0x323614=_0x34ac40[_0xd908('0x1a')];var _0xc526bb=_0x92f1e8?0x0:_0x2a9405[_0xd908('0x18')];var _0x1f72fa=_0x92f1e8?_0x34ac40[_0xd908('0x1a')]:_0x2a9405[_0xd908('0x18')]+_0x2a9405[_0xd908('0x19')];var _0x51b1df;if(_0x1f72fa>=_0x323614){_0x1f72fa=_0x323614;_0x51b1df=0xc8;}else{_0x51b1df=0xce;}_0xc79ddd['status'](_0x51b1df);return _0xc79ddd[_0xd908('0x1b')](_0xd908('0x1c'),_0xc526bb+'-'+_0x1f72fa+'/'+_0x323614)[_0xd908('0x17')](_0x34ac40);}return null;};}function patchUpdates(_0x43c1c5){return function(_0x269d05){try{jsonpatch[_0xd908('0x1d')](_0x269d05,_0x43c1c5,!![]);}catch(_0x1a3068){return BPromise['reject'](_0x1a3068);}return _0x269d05[_0xd908('0x1e')]();};}function saveUpdates(_0x2def53,_0x41e773){return function(_0x4516f7){if(_0x4516f7){return _0x4516f7[_0xd908('0x1f')](_0x2def53)[_0xd908('0x20')](function(_0x2864a4){return _0x2864a4;});}return null;};}function removeEntity(_0x36c82a,_0x3a6cd5){return function(_0x422a04){if(_0x422a04){return _0x422a04['destroy']()[_0xd908('0x20')](function(){_0x36c82a[_0xd908('0x16')](0xcc)[_0xd908('0x21')]();});}};}function handleEntityNotFound(_0x23f8b1,_0xa9ab58){return function(_0x42d105){if(!_0x42d105){_0x23f8b1[_0xd908('0x22')](0x194);}return _0x42d105;};}function handleError(_0x5e75f4,_0x29ebba){_0x29ebba=_0x29ebba||0x1f4;return function(_0x153897){logger[_0xd908('0x23')](_0x153897[_0xd908('0x24')]);if(_0x153897[_0xd908('0x25')]){delete _0x153897['name'];}_0x5e75f4['status'](_0x29ebba)[_0xd908('0x26')](_0x153897);};}exports[_0xd908('0x27')]=function(_0x60cd28,_0x2c7fc3){var _0x387ae2={},_0x149ace={},_0x296026={'count':0x0,'rows':[]};var _0x4d077d=_[_0xd908('0x28')](db[_0xd908('0x29')][_0xd908('0x2a')],function(_0x3db54f){return{'name':_0x3db54f['fieldName'],'type':_0x3db54f[_0xd908('0x2b')]['key']};});_0x149ace[_0xd908('0x2c')]=_[_0xd908('0x28')](_0x4d077d,_0xd908('0x25'));_0x149ace['query']=_[_0xd908('0x2d')](_0x60cd28['query']);_0x149ace[_0xd908('0x2e')]=_['intersection'](_0x149ace[_0xd908('0x2c')],_0x149ace[_0xd908('0x2f')]);_0x387ae2[_0xd908('0x30')]=_[_0xd908('0x31')](_0x149ace[_0xd908('0x2c')],qs[_0xd908('0x32')](_0x60cd28[_0xd908('0x2f')][_0xd908('0x32')]));_0x387ae2['attributes']=_0x387ae2[_0xd908('0x30')][_0xd908('0x33')]?_0x387ae2[_0xd908('0x30')]:_0x149ace[_0xd908('0x2c')];if(!_0x60cd28[_0xd908('0x2f')][_0xd908('0x34')](_0xd908('0x35'))){_0x387ae2['limit']=qs[_0xd908('0x19')](_0x60cd28[_0xd908('0x2f')][_0xd908('0x19')]);_0x387ae2['offset']=qs[_0xd908('0x18')](_0x60cd28['query'][_0xd908('0x18')]);}_0x387ae2['order']=qs[_0xd908('0x36')](_0x60cd28[_0xd908('0x2f')][_0xd908('0x36')]);_0x387ae2[_0xd908('0x37')]=qs[_0xd908('0x2e')](_[_0xd908('0x38')](_0x60cd28['query'],_0x149ace[_0xd908('0x2e')]),_0x4d077d);if(_0x60cd28['query'][_0xd908('0x39')]){_0x387ae2['where']=_[_0xd908('0x3a')](_0x387ae2[_0xd908('0x37')],{'$or':_['map'](_0x4d077d,function(_0x8f64a4){if(_0x8f64a4[_0xd908('0x2b')]!==_0xd908('0x3b')){var _0x41e1ef={};_0x41e1ef[_0x8f64a4[_0xd908('0x25')]]={'$like':'%'+_0x60cd28[_0xd908('0x2f')][_0xd908('0x39')]+'%'};return _0x41e1ef;}})});}_0x387ae2=_['merge']({},_0x387ae2,_0x60cd28[_0xd908('0x3c')]);var _0x52dad2={'where':_0x387ae2[_0xd908('0x37')]};return db[_0xd908('0x29')][_0xd908('0x1a')](_0x52dad2)[_0xd908('0x20')](function(_0xeb5764){_0x296026[_0xd908('0x1a')]=_0xeb5764;if(_0x60cd28['query'][_0xd908('0x3d')]){_0x387ae2[_0xd908('0x3e')]=[{'all':!![]}];}return db[_0xd908('0x29')][_0xd908('0x3f')](_0x387ae2);})['then'](function(_0x4e03a7){_0x296026[_0xd908('0x40')]=_0x4e03a7;return _0x296026;})[_0xd908('0x20')](respondWithFilteredResult(_0x2c7fc3,_0x387ae2))['catch'](handleError(_0x2c7fc3,null));};exports[_0xd908('0x41')]=function(_0xc48e22,_0x3cf6a5){var _0x553390={'raw':!![],'where':{'id':_0xc48e22[_0xd908('0x42')]['id']}},_0x385282={};_0x385282['model']=_['keys'](db['SmsQueueReport']['rawAttributes']);_0x385282[_0xd908('0x2f')]=_[_0xd908('0x2d')](_0xc48e22[_0xd908('0x2f')]);_0x385282[_0xd908('0x2e')]=_[_0xd908('0x31')](_0x385282[_0xd908('0x2c')],_0x385282[_0xd908('0x2f')]);_0x553390[_0xd908('0x30')]=_[_0xd908('0x31')](_0x385282[_0xd908('0x2c')],qs[_0xd908('0x32')](_0xc48e22[_0xd908('0x2f')][_0xd908('0x32')]));_0x553390['attributes']=_0x553390[_0xd908('0x30')][_0xd908('0x33')]?_0x553390[_0xd908('0x30')]:_0x385282[_0xd908('0x2c')];if(_0xc48e22[_0xd908('0x2f')]['includeAll']){_0x553390['include']=[{'all':!![]}];}_0x553390=_[_0xd908('0x3a')]({},_0x553390,_0xc48e22[_0xd908('0x3c')]);return db[_0xd908('0x29')][_0xd908('0x43')](_0x553390)[_0xd908('0x20')](handleEntityNotFound(_0x3cf6a5,null))[_0xd908('0x20')](respondWithResult(_0x3cf6a5,null))[_0xd908('0x44')](handleError(_0x3cf6a5,null));};exports[_0xd908('0x45')]=function(_0x22a510,_0x3bd38b){return db[_0xd908('0x29')][_0xd908('0x45')](_0x22a510[_0xd908('0x46')],{})[_0xd908('0x20')](respondWithResult(_0x3bd38b,0xc9))[_0xd908('0x44')](handleError(_0x3bd38b,null));};exports[_0xd908('0x1f')]=function(_0x7caf36,_0x30c629){if(_0x7caf36[_0xd908('0x46')]['id']){delete _0x7caf36[_0xd908('0x46')]['id'];}return db[_0xd908('0x29')][_0xd908('0x43')]({'where':{'id':_0x7caf36[_0xd908('0x42')]['id']}})[_0xd908('0x20')](handleEntityNotFound(_0x30c629,null))['then'](saveUpdates(_0x7caf36['body'],null))[_0xd908('0x20')](respondWithResult(_0x30c629,null))[_0xd908('0x44')](handleError(_0x30c629,null));};exports[_0xd908('0x47')]=function(_0x239b42,_0x16a95a){return db[_0xd908('0x29')][_0xd908('0x43')]({'where':{'id':_0x239b42[_0xd908('0x42')]['id']}})[_0xd908('0x20')](handleEntityNotFound(_0x16a95a,null))['then'](removeEntity(_0x16a95a,null))[_0xd908('0x44')](handleError(_0x16a95a,null));};exports[_0xd908('0x48')]=function(_0x25d0c4,_0x2595f9){return db[_0xd908('0x29')][_0xd908('0x48')]()[_0xd908('0x20')](respondWithResult(_0x2595f9,null))['catch'](handleError(_0x2595f9,null));};
\ No newline at end of file
+var _0x0cac=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','stack','name','index','map','SmsQueueReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x45d456,_0x5ee6a4){var _0x1b3ce5=function(_0x46b6e2){while(--_0x46b6e2){_0x45d456['push'](_0x45d456['shift']());}};_0x1b3ce5(++_0x5ee6a4);}(_0x0cac,0x111));var _0xc0ca=function(_0x1146f7,_0x475356){_0x1146f7=_0x1146f7-0x0;var _0x2e5725=_0x0cac[_0x1146f7];return _0x2e5725;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc0ca('0x0'));var zipdir=require(_0xc0ca('0x1'));var jsonpatch=require(_0xc0ca('0x2'));var rp=require(_0xc0ca('0x3'));var moment=require('moment');var BPromise=require(_0xc0ca('0x4'));var Mustache=require('mustache');var util=require(_0xc0ca('0x5'));var path=require(_0xc0ca('0x6'));var sox=require(_0xc0ca('0x7'));var csv=require(_0xc0ca('0x8'));var ejs=require(_0xc0ca('0x9'));var fs=require('fs');var fs_extra=require(_0xc0ca('0xa'));var _=require(_0xc0ca('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc0ca('0xc'));var deskjs=require(_0xc0ca('0xd'));var toCsv=require(_0xc0ca('0x8'));var querystring=require(_0xc0ca('0xe'));var Papa=require(_0xc0ca('0xf'));var Redis=require(_0xc0ca('0x10'));var authService=require(_0xc0ca('0x11'));var qs=require(_0xc0ca('0x12'));var as=require(_0xc0ca('0x13'));var hardwareService=require(_0xc0ca('0x14'));var logger=require(_0xc0ca('0x15'))(_0xc0ca('0x16'));var utils=require('../../config/utils');var config=require(_0xc0ca('0x17'));var licenseUtil=require(_0xc0ca('0x18'));var db=require(_0xc0ca('0x19'))['db'];function respondWithStatusCode(_0x3822c5,_0x4a3f40){_0x4a3f40=_0x4a3f40||0xcc;return function(_0x4076f8){if(_0x4076f8){return _0x3822c5['sendStatus'](_0x4a3f40);}return _0x3822c5[_0xc0ca('0x1a')](_0x4a3f40)[_0xc0ca('0x1b')]();};}function respondWithResult(_0x36c75f,_0x30ec1c){_0x30ec1c=_0x30ec1c||0xc8;return function(_0x5b0ab9){if(_0x5b0ab9){return _0x36c75f[_0xc0ca('0x1a')](_0x30ec1c)[_0xc0ca('0x1c')](_0x5b0ab9);}};}function respondWithFilteredResult(_0x3622e2,_0x4a777f){return function(_0x29095d){if(_0x29095d){var _0x21c5d0=typeof _0x4a777f[_0xc0ca('0x1d')]===_0xc0ca('0x1e')&&typeof _0x4a777f[_0xc0ca('0x1f')]===_0xc0ca('0x1e');var _0xaa5d9b=_0x29095d[_0xc0ca('0x20')];var _0x20fd2f=_0x21c5d0?0x0:_0x4a777f['offset'];var _0x1dd32f=_0x21c5d0?_0x29095d[_0xc0ca('0x20')]:_0x4a777f[_0xc0ca('0x1d')]+_0x4a777f[_0xc0ca('0x1f')];var _0x46869e;if(_0x1dd32f>=_0xaa5d9b){_0x1dd32f=_0xaa5d9b;_0x46869e=0xc8;}else{_0x46869e=0xce;}_0x3622e2[_0xc0ca('0x1a')](_0x46869e);return _0x3622e2['set']('Content-Range',_0x20fd2f+'-'+_0x1dd32f+'/'+_0xaa5d9b)[_0xc0ca('0x1c')](_0x29095d);}return null;};}function patchUpdates(_0x5ce1db){return function(_0x14f2b4){try{jsonpatch[_0xc0ca('0x21')](_0x14f2b4,_0x5ce1db,!![]);}catch(_0x4fe0a5){return BPromise[_0xc0ca('0x22')](_0x4fe0a5);}return _0x14f2b4[_0xc0ca('0x23')]();};}function saveUpdates(_0x4fb2ec,_0x3e8e43){return function(_0x47908c){if(_0x47908c){return _0x47908c['update'](_0x4fb2ec)[_0xc0ca('0x24')](function(_0x326bba){return _0x326bba;});}return null;};}function removeEntity(_0x35465b,_0x132490){return function(_0x542189){if(_0x542189){return _0x542189[_0xc0ca('0x25')]()[_0xc0ca('0x24')](function(){_0x35465b[_0xc0ca('0x1a')](0xcc)[_0xc0ca('0x1b')]();});}};}function handleEntityNotFound(_0x1a056a,_0x5adc9c){return function(_0x2d16a1){if(!_0x2d16a1){_0x1a056a['sendStatus'](0x194);}return _0x2d16a1;};}function handleError(_0xc206b2,_0x51f625){_0x51f625=_0x51f625||0x1f4;return function(_0x19eb19){logger[_0xc0ca('0x26')](_0x19eb19[_0xc0ca('0x27')]);if(_0x19eb19['name']){delete _0x19eb19[_0xc0ca('0x28')];}_0xc206b2[_0xc0ca('0x1a')](_0x51f625)['send'](_0x19eb19);};}exports[_0xc0ca('0x29')]=function(_0x208801,_0x1ca117){var _0x473a27={},_0x5098b2={},_0x284d52={'count':0x0,'rows':[]};var _0x42a0cc=_[_0xc0ca('0x2a')](db[_0xc0ca('0x2b')]['rawAttributes'],function(_0x1a662b){return{'name':_0x1a662b['fieldName'],'type':_0x1a662b[_0xc0ca('0x2c')][_0xc0ca('0x2d')]};});_0x5098b2[_0xc0ca('0x2e')]=_[_0xc0ca('0x2a')](_0x42a0cc,'name');_0x5098b2[_0xc0ca('0x2f')]=_[_0xc0ca('0x30')](_0x208801[_0xc0ca('0x2f')]);_0x5098b2[_0xc0ca('0x31')]=_[_0xc0ca('0x32')](_0x5098b2['model'],_0x5098b2[_0xc0ca('0x2f')]);_0x473a27[_0xc0ca('0x33')]=_['intersection'](_0x5098b2[_0xc0ca('0x2e')],qs['fields'](_0x208801['query'][_0xc0ca('0x34')]));_0x473a27[_0xc0ca('0x33')]=_0x473a27[_0xc0ca('0x33')]['length']?_0x473a27[_0xc0ca('0x33')]:_0x5098b2[_0xc0ca('0x2e')];if(!_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x35')](_0xc0ca('0x36'))){_0x473a27[_0xc0ca('0x1f')]=qs['limit'](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x1f')]);_0x473a27[_0xc0ca('0x1d')]=qs[_0xc0ca('0x1d')](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x1d')]);}_0x473a27[_0xc0ca('0x37')]=qs[_0xc0ca('0x38')](_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x38')]);_0x473a27[_0xc0ca('0x39')]=qs[_0xc0ca('0x31')](_['pick'](_0x208801[_0xc0ca('0x2f')],_0x5098b2[_0xc0ca('0x31')]),_0x42a0cc);if(_0x208801[_0xc0ca('0x2f')][_0xc0ca('0x3a')]){_0x473a27['where']=_[_0xc0ca('0x3b')](_0x473a27['where'],{'$or':_[_0xc0ca('0x2a')](_0x42a0cc,function(_0x378325){if(_0x378325[_0xc0ca('0x2c')]!==_0xc0ca('0x3c')){var _0x5e09db={};_0x5e09db[_0x378325[_0xc0ca('0x28')]]={'$like':'%'+_0x208801[_0xc0ca('0x2f')]['filter']+'%'};return _0x5e09db;}})});}_0x473a27=_[_0xc0ca('0x3b')]({},_0x473a27,_0x208801[_0xc0ca('0x3d')]);var _0x32fc1d={'where':_0x473a27[_0xc0ca('0x39')]};return db[_0xc0ca('0x2b')][_0xc0ca('0x20')](_0x32fc1d)[_0xc0ca('0x24')](function(_0x5780aa){_0x284d52[_0xc0ca('0x20')]=_0x5780aa;if(_0x208801[_0xc0ca('0x2f')]['includeAll']){_0x473a27[_0xc0ca('0x3e')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xc0ca('0x3f')](_0x473a27);})[_0xc0ca('0x24')](function(_0x1d4e9b){_0x284d52[_0xc0ca('0x40')]=_0x1d4e9b;return _0x284d52;})[_0xc0ca('0x24')](respondWithFilteredResult(_0x1ca117,_0x473a27))[_0xc0ca('0x41')](handleError(_0x1ca117,null));};exports[_0xc0ca('0x42')]=function(_0x260fa8,_0x273573){var _0x4b4638={'raw':!![],'where':{'id':_0x260fa8[_0xc0ca('0x43')]['id']}},_0x125666={};_0x125666[_0xc0ca('0x2e')]=_['keys'](db[_0xc0ca('0x2b')][_0xc0ca('0x44')]);_0x125666[_0xc0ca('0x2f')]=_[_0xc0ca('0x30')](_0x260fa8['query']);_0x125666[_0xc0ca('0x31')]=_[_0xc0ca('0x32')](_0x125666[_0xc0ca('0x2e')],_0x125666[_0xc0ca('0x2f')]);_0x4b4638[_0xc0ca('0x33')]=_[_0xc0ca('0x32')](_0x125666[_0xc0ca('0x2e')],qs[_0xc0ca('0x34')](_0x260fa8[_0xc0ca('0x2f')][_0xc0ca('0x34')]));_0x4b4638[_0xc0ca('0x33')]=_0x4b4638[_0xc0ca('0x33')]['length']?_0x4b4638['attributes']:_0x125666[_0xc0ca('0x2e')];if(_0x260fa8[_0xc0ca('0x2f')][_0xc0ca('0x45')]){_0x4b4638['include']=[{'all':!![]}];}_0x4b4638=_[_0xc0ca('0x3b')]({},_0x4b4638,_0x260fa8[_0xc0ca('0x3d')]);return db[_0xc0ca('0x2b')]['find'](_0x4b4638)[_0xc0ca('0x24')](handleEntityNotFound(_0x273573,null))[_0xc0ca('0x24')](respondWithResult(_0x273573,null))['catch'](handleError(_0x273573,null));};exports[_0xc0ca('0x46')]=function(_0xa3db54,_0x2f1f90){return db[_0xc0ca('0x2b')][_0xc0ca('0x46')](_0xa3db54[_0xc0ca('0x47')],{})[_0xc0ca('0x24')](respondWithResult(_0x2f1f90,0xc9))[_0xc0ca('0x41')](handleError(_0x2f1f90,null));};exports['update']=function(_0x1b60c1,_0x20f354){if(_0x1b60c1[_0xc0ca('0x47')]['id']){delete _0x1b60c1[_0xc0ca('0x47')]['id'];}return db[_0xc0ca('0x2b')]['find']({'where':{'id':_0x1b60c1['params']['id']}})['then'](handleEntityNotFound(_0x20f354,null))[_0xc0ca('0x24')](saveUpdates(_0x1b60c1[_0xc0ca('0x47')],null))[_0xc0ca('0x24')](respondWithResult(_0x20f354,null))[_0xc0ca('0x41')](handleError(_0x20f354,null));};exports[_0xc0ca('0x25')]=function(_0x32f5d4,_0x5aada5){return db['SmsQueueReport'][_0xc0ca('0x48')]({'where':{'id':_0x32f5d4[_0xc0ca('0x43')]['id']}})[_0xc0ca('0x24')](handleEntityNotFound(_0x5aada5,null))[_0xc0ca('0x24')](removeEntity(_0x5aada5,null))[_0xc0ca('0x41')](handleError(_0x5aada5,null));};exports[_0xc0ca('0x49')]=function(_0x5f050a,_0x24bbe6){return db[_0xc0ca('0x2b')][_0xc0ca('0x49')]()[_0xc0ca('0x24')](respondWithResult(_0x24bbe6,null))[_0xc0ca('0x41')](handleError(_0x24bbe6,null));};
\ No newline at end of file
index bbd8195..e029822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x6a059e,_0x4b57c3){var _0x29fdc0=function(_0x29dfd6){while(--_0x29dfd6){_0x6a059e['push'](_0x6a059e['shift']());}};_0x29fdc0(++_0x4b57c3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 91b20c6..d2f4014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa033=['../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','CreateSmsQueueReport','SmsQueueReport','create','body','options','catch','UpdateSmsQueueReport','update','raw','where','attributes','limit','lodash','ioredis'];(function(_0x262830,_0x464b5c){var _0x359ea1=function(_0x18b685){while(--_0x18b685){_0x262830['push'](_0x262830['shift']());}};_0x359ea1(++_0x464b5c);}(_0xa033,0x13d));var _0x3a03=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa033[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3a03('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a03('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x3a03('0x2'));var logger=require('../../config/logger')(_0x3a03('0x3'));var config=require(_0x3a03('0x4'));var jayson=require(_0x3a03('0x5'));var client=jayson['client'][_0x3a03('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x29333f,_0x57d097,_0x3e137b){return new BPromise(function(_0xacce46,_0x4995b6){return client['request'](_0x29333f,_0x3e137b)[_0x3a03('0x7')](function(_0x39e47c){logger[_0x3a03('0x8')](_0x3a03('0x9'),_0x57d097,'request\x20sent');logger[_0x3a03('0xa')](_0x3a03('0xb'),_0x57d097,'request\x20sent',JSON[_0x3a03('0xc')](_0x39e47c));if(_0x39e47c[_0x3a03('0xd')]){if(_0x39e47c['error'][_0x3a03('0xe')]===0x1f4){logger[_0x3a03('0xd')](_0x3a03('0x9'),_0x57d097,_0x39e47c[_0x3a03('0xd')]['message']);return _0x4995b6(_0x39e47c[_0x3a03('0xd')]['message']);}logger['error'](_0x3a03('0x9'),_0x57d097,_0x39e47c['error'][_0x3a03('0xf')]);return _0xacce46(_0x39e47c[_0x3a03('0xd')][_0x3a03('0xf')]);}else{logger['info'](_0x3a03('0x9'),_0x57d097,_0x3a03('0x10'));_0xacce46(_0x39e47c['result'][_0x3a03('0xf')]);}})['catch'](function(_0x1f91a3){logger[_0x3a03('0xd')](_0x3a03('0x9'),_0x57d097,_0x1f91a3);_0x4995b6(_0x1f91a3);});});}exports[_0x3a03('0x11')]=function(_0x4182c8){var _0x142d14=this;return new Promise(function(_0x37fc37,_0x38d74b){return db[_0x3a03('0x12')][_0x3a03('0x13')](_0x4182c8[_0x3a03('0x14')],{'raw':_0x4182c8[_0x3a03('0x15')]?_0x4182c8['options']['raw']===undefined?!![]:![]:!![]})[_0x3a03('0x7')](function(_0x3f52e9){logger[_0x3a03('0x8')](_0x3a03('0x11'),_0x4182c8);logger[_0x3a03('0xa')](_0x3a03('0x11'),_0x4182c8,JSON[_0x3a03('0xc')](_0x3f52e9));_0x37fc37(_0x3f52e9);})[_0x3a03('0x16')](function(_0x556877){logger[_0x3a03('0xd')]('CreateSmsQueueReport',_0x556877[_0x3a03('0xf')],_0x4182c8);_0x38d74b(_0x142d14[_0x3a03('0xd')](0x1f4,_0x556877[_0x3a03('0xf')]));});});};exports[_0x3a03('0x17')]=function(_0xe85a1c){var _0x3eb900=this;return new Promise(function(_0x38a935,_0x70ac52){return db[_0x3a03('0x12')][_0x3a03('0x18')](_0xe85a1c[_0x3a03('0x14')],{'raw':_0xe85a1c[_0x3a03('0x15')]?_0xe85a1c[_0x3a03('0x15')][_0x3a03('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe85a1c[_0x3a03('0x15')]?_0xe85a1c[_0x3a03('0x15')][_0x3a03('0x1a')]||null:null,'attributes':_0xe85a1c['options']?_0xe85a1c[_0x3a03('0x15')][_0x3a03('0x1b')]||null:null,'limit':_0xe85a1c['options']?_0xe85a1c[_0x3a03('0x15')][_0x3a03('0x1c')]||null:null})[_0x3a03('0x7')](function(_0x3a9dcb){logger[_0x3a03('0x8')](_0x3a03('0x17'),_0xe85a1c);logger[_0x3a03('0xa')](_0x3a03('0x17'),_0xe85a1c,JSON[_0x3a03('0xc')](_0x3a9dcb));_0x38a935(_0x3a9dcb);})[_0x3a03('0x16')](function(_0x3fa5e7){logger[_0x3a03('0xd')](_0x3a03('0x17'),_0x3fa5e7[_0x3a03('0xf')],_0xe85a1c);_0x70ac52(_0x3eb900['error'](0x1f4,_0x3fa5e7['message']));});});};
\ No newline at end of file
+var _0xd7ff=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','stringify','UpdateSmsQueueReport','update','body','where','attributes','limit','lodash','util','moment','randomstring','ioredis'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xd7ff,0xe9));var _0xfd7f=function(_0x5594d3,_0x42e704){_0x5594d3=_0x5594d3-0x0;var _0xf406f6=_0xd7ff[_0x5594d3];return _0xf406f6;};'use strict';var _=require(_0xfd7f('0x0'));var util=require(_0xfd7f('0x1'));var moment=require(_0xfd7f('0x2'));var BPromise=require('bluebird');var rs=require(_0xfd7f('0x3'));var fs=require('fs');var Redis=require(_0xfd7f('0x4'));var db=require(_0xfd7f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd7f('0x6'))(_0xfd7f('0x7'));var config=require(_0xfd7f('0x8'));var jayson=require(_0xfd7f('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x359040,_0x4a173a,_0x10415e){return new BPromise(function(_0x571bd1,_0x5d3be2){return client[_0xfd7f('0xa')](_0x359040,_0x10415e)[_0xfd7f('0xb')](function(_0x3ed5ee){logger[_0xfd7f('0xc')](_0xfd7f('0xd'),_0x4a173a,_0xfd7f('0xe'));logger[_0xfd7f('0xf')](_0xfd7f('0x10'),_0x4a173a,_0xfd7f('0xe'),JSON['stringify'](_0x3ed5ee));if(_0x3ed5ee[_0xfd7f('0x11')]){if(_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x12')]===0x1f4){logger[_0xfd7f('0x11')](_0xfd7f('0xd'),_0x4a173a,_0x3ed5ee[_0xfd7f('0x11')]['message']);return _0x5d3be2(_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x13')]);}logger['error'](_0xfd7f('0xd'),_0x4a173a,_0x3ed5ee[_0xfd7f('0x11')][_0xfd7f('0x13')]);return _0x571bd1(_0x3ed5ee[_0xfd7f('0x11')]['message']);}else{logger[_0xfd7f('0xc')](_0xfd7f('0xd'),_0x4a173a,'request\x20sent');_0x571bd1(_0x3ed5ee[_0xfd7f('0x14')][_0xfd7f('0x13')]);}})[_0xfd7f('0x15')](function(_0x59fb60){logger[_0xfd7f('0x11')](_0xfd7f('0xd'),_0x4a173a,_0x59fb60);_0x5d3be2(_0x59fb60);});});}exports[_0xfd7f('0x16')]=function(_0x1673a1){var _0x4be4c2=this;return new Promise(function(_0xe155b1,_0x41f910){return db[_0xfd7f('0x17')][_0xfd7f('0x18')](_0x1673a1['body'],{'raw':_0x1673a1[_0xfd7f('0x19')]?_0x1673a1[_0xfd7f('0x19')][_0xfd7f('0x1a')]===undefined?!![]:![]:!![]})[_0xfd7f('0xb')](function(_0x2f55d7){logger[_0xfd7f('0xc')](_0xfd7f('0x16'),_0x1673a1);logger[_0xfd7f('0xf')](_0xfd7f('0x16'),_0x1673a1,JSON[_0xfd7f('0x1b')](_0x2f55d7));_0xe155b1(_0x2f55d7);})[_0xfd7f('0x15')](function(_0x40df14){logger[_0xfd7f('0x11')](_0xfd7f('0x16'),_0x40df14['message'],_0x1673a1);_0x41f910(_0x4be4c2[_0xfd7f('0x11')](0x1f4,_0x40df14[_0xfd7f('0x13')]));});});};exports[_0xfd7f('0x1c')]=function(_0x23d1c3){var _0x233ee8=this;return new Promise(function(_0x22427c,_0x6898ef){return db[_0xfd7f('0x17')][_0xfd7f('0x1d')](_0x23d1c3[_0xfd7f('0x1e')],{'raw':_0x23d1c3['options']?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x1f')]||null:null,'attributes':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x20')]||null:null,'limit':_0x23d1c3[_0xfd7f('0x19')]?_0x23d1c3[_0xfd7f('0x19')][_0xfd7f('0x21')]||null:null})[_0xfd7f('0xb')](function(_0x5e35ba){logger[_0xfd7f('0xc')](_0xfd7f('0x1c'),_0x23d1c3);logger['debug'](_0xfd7f('0x1c'),_0x23d1c3,JSON[_0xfd7f('0x1b')](_0x5e35ba));_0x22427c(_0x5e35ba);})['catch'](function(_0x2e51c5){logger[_0xfd7f('0x11')](_0xfd7f('0x1c'),_0x2e51c5[_0xfd7f('0x13')],_0x23d1c3);_0x6898ef(_0x233ee8[_0xfd7f('0x11')](0x1f4,_0x2e51c5['message']));});});};
\ No newline at end of file
index c4d0b90..9807d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['isAuthenticated','index','describe','create','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get'];(function(_0x538d82,_0x1fe95f){var _0x5541db=function(_0xacfcb5){while(--_0xacfcb5){_0x538d82['push'](_0x538d82['shift']());}};_0x5541db(++_0x1fe95f);}(_0x5ad3,0x1e2));var _0x35ad=function(_0xfb0281,_0x3ff38b){_0xfb0281=_0xfb0281-0x0;var _0x408dd3=_0x5ad3[_0xfb0281];return _0x408dd3;};'use strict';var multer=require(_0x35ad('0x0'));var util=require(_0x35ad('0x1'));var path=require(_0x35ad('0x2'));var timeout=require(_0x35ad('0x3'));var express=require('express');var router=express[_0x35ad('0x4')]();var fs_extra=require(_0x35ad('0x5'));var auth=require(_0x35ad('0x6'));var interaction=require(_0x35ad('0x7'));var config=require(_0x35ad('0x8'));var controller=require(_0x35ad('0x9'));router[_0x35ad('0xa')]('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xc')]);router[_0x35ad('0xa')]('/describe',auth[_0x35ad('0xb')](),controller[_0x35ad('0xd')]);router[_0x35ad('0xa')]('/:id',auth[_0x35ad('0xb')](),controller['show']);router['post']('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xe')]);router['put'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['update']);router['delete'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['destroy']);module[_0x35ad('0x10')]=router;
\ No newline at end of file
+var _0x4c4e=['fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','delete','destroy','multer','path','connect-timeout','express'];(function(_0x11ea3f,_0x317de4){var _0x1f1b86=function(_0x234407){while(--_0x234407){_0x11ea3f['push'](_0x11ea3f['shift']());}};_0x1f1b86(++_0x317de4);}(_0x4c4e,0x152));var _0xe4c4=function(_0x4dbad3,_0x419388){_0x4dbad3=_0x4dbad3-0x0;var _0x22eef4=_0x4c4e[_0x4dbad3];return _0x22eef4;};'use strict';var multer=require(_0xe4c4('0x0'));var util=require('util');var path=require(_0xe4c4('0x1'));var timeout=require(_0xe4c4('0x2'));var express=require(_0xe4c4('0x3'));var router=express['Router']();var fs_extra=require(_0xe4c4('0x4'));var auth=require(_0xe4c4('0x5'));var interaction=require(_0xe4c4('0x6'));var config=require('../../config/environment');var controller=require(_0xe4c4('0x7'));router['get']('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x9')]);router[_0xe4c4('0xa')](_0xe4c4('0xb'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xc')]);router[_0xe4c4('0xa')](_0xe4c4('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe4c4('0xe')]('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xf')]);router[_0xe4c4('0x10')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller['update']);router[_0xe4c4('0x11')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x12')]);module['exports']=router;
\ No newline at end of file
index a1d0a53..de5f9f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x9bde,0xe1));var _0xe9bd=function(_0x102148,_0x88ce75){_0x102148=_0x102148-0x0;var _0x4a0d15=_0x9bde[_0x102148];return _0x4a0d15;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x4e349d,_0x507d34){var _0x3086ff=function(_0x5d2e34){while(--_0x5d2e34){_0x4e349d['push'](_0x4e349d['shift']());}};_0x3086ff(++_0x507d34);}(_0xaa88,0x137));var _0x8aa8=function(_0x47e7dd,_0x51b041){_0x47e7dd=_0x47e7dd-0x0;var _0x38501f=_0xaa88[_0x47e7dd];return _0x38501f;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index d404620..cb5ecd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a5=['send','map','SmsTransferReport','rawAttributes','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','findAll','catch','show','params','includeAll','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','lodash','squel','crypto','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','sendStatus','status','end','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name'];(function(_0x1755cd,_0x2626b3){var _0x5756d3=function(_0x1341d0){while(--_0x1341d0){_0x1755cd['push'](_0x1755cd['shift']());}};_0x5756d3(++_0x2626b3);}(_0x04a5,0x12a));var _0x504a=function(_0x318840,_0x561b1e){_0x318840=_0x318840-0x0;var _0x223da4=_0x04a5[_0x318840];return _0x223da4;};'use strict';var emlformat=require(_0x504a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x504a('0x1'));var jsonpatch=require(_0x504a('0x2'));var rp=require('request-promise');var moment=require(_0x504a('0x3'));var BPromise=require(_0x504a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x504a('0x5'));var sox=require('sox');var csv=require(_0x504a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x504a('0x7'));var squel=require(_0x504a('0x8'));var crypto=require(_0x504a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x504a('0xa'));var toCsv=require(_0x504a('0x6'));var querystring=require(_0x504a('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x504a('0xc'));var qs=require(_0x504a('0xd'));var as=require(_0x504a('0xe'));var hardwareService=require(_0x504a('0xf'));var logger=require(_0x504a('0x10'))(_0x504a('0x11'));var utils=require(_0x504a('0x12'));var config=require(_0x504a('0x13'));var licenseUtil=require(_0x504a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e2263,_0x5876b1){_0x5876b1=_0x5876b1||0xcc;return function(_0x37938a){if(_0x37938a){return _0x5e2263[_0x504a('0x15')](_0x5876b1);}return _0x5e2263[_0x504a('0x16')](_0x5876b1)[_0x504a('0x17')]();};}function respondWithResult(_0x101ee1,_0x2f8176){_0x2f8176=_0x2f8176||0xc8;return function(_0xc68a7d){if(_0xc68a7d){return _0x101ee1['status'](_0x2f8176)['json'](_0xc68a7d);}};}function respondWithFilteredResult(_0x5eb819,_0x1cca2d){return function(_0x5ad148){if(_0x5ad148){var _0x2f2fb7=typeof _0x1cca2d[_0x504a('0x18')]===_0x504a('0x19')&&typeof _0x1cca2d[_0x504a('0x1a')]==='undefined';var _0x58ab54=_0x5ad148['count'];var _0x268953=_0x2f2fb7?0x0:_0x1cca2d[_0x504a('0x18')];var _0x3e3d97=_0x2f2fb7?_0x5ad148[_0x504a('0x1b')]:_0x1cca2d[_0x504a('0x18')]+_0x1cca2d[_0x504a('0x1a')];var _0x1e0ad7;if(_0x3e3d97>=_0x58ab54){_0x3e3d97=_0x58ab54;_0x1e0ad7=0xc8;}else{_0x1e0ad7=0xce;}_0x5eb819[_0x504a('0x16')](_0x1e0ad7);return _0x5eb819['set'](_0x504a('0x1c'),_0x268953+'-'+_0x3e3d97+'/'+_0x58ab54)['json'](_0x5ad148);}return null;};}function patchUpdates(_0x93e3e6){return function(_0x448a18){try{jsonpatch['apply'](_0x448a18,_0x93e3e6,!![]);}catch(_0x20454a){return BPromise[_0x504a('0x1d')](_0x20454a);}return _0x448a18[_0x504a('0x1e')]();};}function saveUpdates(_0x812c04,_0x231b8a){return function(_0x3e2cbb){if(_0x3e2cbb){return _0x3e2cbb[_0x504a('0x1f')](_0x812c04)[_0x504a('0x20')](function(_0x485259){return _0x485259;});}return null;};}function removeEntity(_0x5ea016,_0x212fd3){return function(_0x4d94ac){if(_0x4d94ac){return _0x4d94ac[_0x504a('0x21')]()[_0x504a('0x20')](function(){_0x5ea016[_0x504a('0x16')](0xcc)[_0x504a('0x17')]();});}};}function handleEntityNotFound(_0x241ac4,_0x293196){return function(_0x3f0993){if(!_0x3f0993){_0x241ac4[_0x504a('0x15')](0x194);}return _0x3f0993;};}function handleError(_0x31cfec,_0x572a2b){_0x572a2b=_0x572a2b||0x1f4;return function(_0xab011c){logger[_0x504a('0x22')](_0xab011c[_0x504a('0x23')]);if(_0xab011c[_0x504a('0x24')]){delete _0xab011c['name'];}_0x31cfec[_0x504a('0x16')](_0x572a2b)[_0x504a('0x25')](_0xab011c);};}exports['index']=function(_0x54c8f1,_0x5e6d30){var _0x1eee60={},_0x48b1ea={},_0x9959d0={'count':0x0,'rows':[]};var _0x4061be=_[_0x504a('0x26')](db[_0x504a('0x27')][_0x504a('0x28')],function(_0x3f0862){return{'name':_0x3f0862['fieldName'],'type':_0x3f0862[_0x504a('0x29')]['key']};});_0x48b1ea['model']=_[_0x504a('0x26')](_0x4061be,'name');_0x48b1ea[_0x504a('0x2a')]=_[_0x504a('0x2b')](_0x54c8f1[_0x504a('0x2a')]);_0x48b1ea[_0x504a('0x2c')]=_[_0x504a('0x2d')](_0x48b1ea['model'],_0x48b1ea[_0x504a('0x2a')]);_0x1eee60[_0x504a('0x2e')]=_[_0x504a('0x2d')](_0x48b1ea[_0x504a('0x2f')],qs[_0x504a('0x30')](_0x54c8f1[_0x504a('0x2a')][_0x504a('0x30')]));_0x1eee60[_0x504a('0x2e')]=_0x1eee60[_0x504a('0x2e')][_0x504a('0x31')]?_0x1eee60[_0x504a('0x2e')]:_0x48b1ea[_0x504a('0x2f')];if(!_0x54c8f1[_0x504a('0x2a')][_0x504a('0x32')]('nolimit')){_0x1eee60[_0x504a('0x1a')]=qs[_0x504a('0x1a')](_0x54c8f1[_0x504a('0x2a')][_0x504a('0x1a')]);_0x1eee60['offset']=qs[_0x504a('0x18')](_0x54c8f1[_0x504a('0x2a')][_0x504a('0x18')]);}_0x1eee60[_0x504a('0x33')]=qs[_0x504a('0x34')](_0x54c8f1[_0x504a('0x2a')]['sort']);_0x1eee60['where']=qs[_0x504a('0x2c')](_[_0x504a('0x35')](_0x54c8f1[_0x504a('0x2a')],_0x48b1ea[_0x504a('0x2c')]),_0x4061be);if(_0x54c8f1[_0x504a('0x2a')][_0x504a('0x36')]){_0x1eee60[_0x504a('0x37')]=_[_0x504a('0x38')](_0x1eee60[_0x504a('0x37')],{'$or':_[_0x504a('0x26')](_0x4061be,function(_0x40a0c8){if(_0x40a0c8[_0x504a('0x29')]!=='VIRTUAL'){var _0x2cad04={};_0x2cad04[_0x40a0c8[_0x504a('0x24')]]={'$like':'%'+_0x54c8f1[_0x504a('0x2a')]['filter']+'%'};return _0x2cad04;}})});}_0x1eee60=_['merge']({},_0x1eee60,_0x54c8f1[_0x504a('0x39')]);var _0x53e593={'where':_0x1eee60[_0x504a('0x37')]};return db[_0x504a('0x27')]['count'](_0x53e593)[_0x504a('0x20')](function(_0x5d8b7f){_0x9959d0['count']=_0x5d8b7f;if(_0x54c8f1[_0x504a('0x2a')]['includeAll']){_0x1eee60['include']=[{'all':!![]}];}return db[_0x504a('0x27')][_0x504a('0x3a')](_0x1eee60);})[_0x504a('0x20')](function(_0x23de9b){_0x9959d0['rows']=_0x23de9b;return _0x9959d0;})[_0x504a('0x20')](respondWithFilteredResult(_0x5e6d30,_0x1eee60))[_0x504a('0x3b')](handleError(_0x5e6d30,null));};exports[_0x504a('0x3c')]=function(_0x31cfdf,_0x530995){var _0x7de1d1={'raw':!![],'where':{'id':_0x31cfdf[_0x504a('0x3d')]['id']}},_0x5c95a9={};_0x5c95a9['model']=_[_0x504a('0x2b')](db[_0x504a('0x27')][_0x504a('0x28')]);_0x5c95a9['query']=_['keys'](_0x31cfdf[_0x504a('0x2a')]);_0x5c95a9[_0x504a('0x2c')]=_[_0x504a('0x2d')](_0x5c95a9[_0x504a('0x2f')],_0x5c95a9[_0x504a('0x2a')]);_0x7de1d1[_0x504a('0x2e')]=_[_0x504a('0x2d')](_0x5c95a9['model'],qs[_0x504a('0x30')](_0x31cfdf[_0x504a('0x2a')][_0x504a('0x30')]));_0x7de1d1[_0x504a('0x2e')]=_0x7de1d1[_0x504a('0x2e')]['length']?_0x7de1d1[_0x504a('0x2e')]:_0x5c95a9[_0x504a('0x2f')];if(_0x31cfdf[_0x504a('0x2a')][_0x504a('0x3e')]){_0x7de1d1['include']=[{'all':!![]}];}_0x7de1d1=_[_0x504a('0x38')]({},_0x7de1d1,_0x31cfdf[_0x504a('0x39')]);return db[_0x504a('0x27')][_0x504a('0x3f')](_0x7de1d1)['then'](handleEntityNotFound(_0x530995,null))[_0x504a('0x20')](respondWithResult(_0x530995,null))[_0x504a('0x3b')](handleError(_0x530995,null));};exports[_0x504a('0x40')]=function(_0x2b0b65,_0x482624){return db['SmsTransferReport'][_0x504a('0x40')](_0x2b0b65[_0x504a('0x41')],{})['then'](respondWithResult(_0x482624,0xc9))[_0x504a('0x3b')](handleError(_0x482624,null));};exports[_0x504a('0x1f')]=function(_0x4d7d72,_0x532594){if(_0x4d7d72[_0x504a('0x41')]['id']){delete _0x4d7d72[_0x504a('0x41')]['id'];}return db[_0x504a('0x27')][_0x504a('0x3f')]({'where':{'id':_0x4d7d72[_0x504a('0x3d')]['id']}})[_0x504a('0x20')](handleEntityNotFound(_0x532594,null))[_0x504a('0x20')](saveUpdates(_0x4d7d72[_0x504a('0x41')],null))[_0x504a('0x20')](respondWithResult(_0x532594,null))[_0x504a('0x3b')](handleError(_0x532594,null));};exports[_0x504a('0x21')]=function(_0x3999bc,_0x2b88a7){return db[_0x504a('0x27')]['find']({'where':{'id':_0x3999bc[_0x504a('0x3d')]['id']}})[_0x504a('0x20')](handleEntityNotFound(_0x2b88a7,null))['then'](removeEntity(_0x2b88a7,null))[_0x504a('0x3b')](handleError(_0x2b88a7,null));};exports[_0x504a('0x42')]=function(_0x16efe8,_0x539c10){return db[_0x504a('0x27')][_0x504a('0x42')]()[_0x504a('0x20')](respondWithResult(_0x539c10,null))[_0x504a('0x3b')](handleError(_0x539c10,null));};
\ No newline at end of file
+var _0x9e74=['../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','end','error','name','send','index','SmsTransferReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','length','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x374785,_0x4f71b8){var _0x572c40=function(_0x1cf7b0){while(--_0x1cf7b0){_0x374785['push'](_0x374785['shift']());}};_0x572c40(++_0x4f71b8);}(_0x9e74,0x83));var _0x49e7=function(_0x1aa5bd,_0x14866a){_0x1aa5bd=_0x1aa5bd-0x0;var _0x104b6b=_0x9e74[_0x1aa5bd];return _0x104b6b;};'use strict';var emlformat=require(_0x49e7('0x0'));var rimraf=require(_0x49e7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x49e7('0x2'));var rp=require(_0x49e7('0x3'));var moment=require(_0x49e7('0x4'));var BPromise=require(_0x49e7('0x5'));var Mustache=require('mustache');var util=require(_0x49e7('0x6'));var path=require(_0x49e7('0x7'));var sox=require(_0x49e7('0x8'));var csv=require(_0x49e7('0x9'));var ejs=require(_0x49e7('0xa'));var fs=require('fs');var fs_extra=require(_0x49e7('0xb'));var _=require(_0x49e7('0xc'));var squel=require(_0x49e7('0xd'));var crypto=require('crypto');var jsforce=require(_0x49e7('0xe'));var deskjs=require(_0x49e7('0xf'));var toCsv=require(_0x49e7('0x9'));var querystring=require(_0x49e7('0x10'));var Papa=require('papaparse');var Redis=require(_0x49e7('0x11'));var authService=require(_0x49e7('0x12'));var qs=require(_0x49e7('0x13'));var as=require(_0x49e7('0x14'));var hardwareService=require(_0x49e7('0x15'));var logger=require(_0x49e7('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x49e7('0x17'));var licenseUtil=require(_0x49e7('0x18'));var db=require(_0x49e7('0x19'))['db'];function respondWithStatusCode(_0x205651,_0x12ce27){_0x12ce27=_0x12ce27||0xcc;return function(_0x4fc306){if(_0x4fc306){return _0x205651[_0x49e7('0x1a')](_0x12ce27);}return _0x205651[_0x49e7('0x1b')](_0x12ce27)['end']();};}function respondWithResult(_0x21b8c8,_0x40cf95){_0x40cf95=_0x40cf95||0xc8;return function(_0x211314){if(_0x211314){return _0x21b8c8['status'](_0x40cf95)['json'](_0x211314);}};}function respondWithFilteredResult(_0x1ce29a,_0x1fd852){return function(_0x26e9ad){if(_0x26e9ad){var _0x144f89=typeof _0x1fd852[_0x49e7('0x1c')]===_0x49e7('0x1d')&&typeof _0x1fd852[_0x49e7('0x1e')]===_0x49e7('0x1d');var _0x1aaae9=_0x26e9ad['count'];var _0x4a03d6=_0x144f89?0x0:_0x1fd852['offset'];var _0x488109=_0x144f89?_0x26e9ad[_0x49e7('0x1f')]:_0x1fd852['offset']+_0x1fd852[_0x49e7('0x1e')];var _0x137bfb;if(_0x488109>=_0x1aaae9){_0x488109=_0x1aaae9;_0x137bfb=0xc8;}else{_0x137bfb=0xce;}_0x1ce29a['status'](_0x137bfb);return _0x1ce29a[_0x49e7('0x20')](_0x49e7('0x21'),_0x4a03d6+'-'+_0x488109+'/'+_0x1aaae9)[_0x49e7('0x22')](_0x26e9ad);}return null;};}function patchUpdates(_0x38fa3b){return function(_0x45f7ea){try{jsonpatch['apply'](_0x45f7ea,_0x38fa3b,!![]);}catch(_0x235209){return BPromise['reject'](_0x235209);}return _0x45f7ea[_0x49e7('0x23')]();};}function saveUpdates(_0x4d8a4c,_0x3b9332){return function(_0x1e68e9){if(_0x1e68e9){return _0x1e68e9[_0x49e7('0x24')](_0x4d8a4c)[_0x49e7('0x25')](function(_0x4071f1){return _0x4071f1;});}return null;};}function removeEntity(_0x1f7585,_0x147ecd){return function(_0x14ff41){if(_0x14ff41){return _0x14ff41[_0x49e7('0x26')]()[_0x49e7('0x25')](function(){_0x1f7585[_0x49e7('0x1b')](0xcc)[_0x49e7('0x27')]();});}};}function handleEntityNotFound(_0xa08022,_0x1d77fd){return function(_0x895a4f){if(!_0x895a4f){_0xa08022['sendStatus'](0x194);}return _0x895a4f;};}function handleError(_0x38a685,_0x208b2e){_0x208b2e=_0x208b2e||0x1f4;return function(_0x2498a0){logger[_0x49e7('0x28')](_0x2498a0['stack']);if(_0x2498a0[_0x49e7('0x29')]){delete _0x2498a0[_0x49e7('0x29')];}_0x38a685[_0x49e7('0x1b')](_0x208b2e)[_0x49e7('0x2a')](_0x2498a0);};}exports[_0x49e7('0x2b')]=function(_0x51ed31,_0x55bd95){var _0x502206={},_0xec89a3={},_0x11b9ad={'count':0x0,'rows':[]};var _0x228cc5=_['map'](db[_0x49e7('0x2c')]['rawAttributes'],function(_0x1bafbc){return{'name':_0x1bafbc[_0x49e7('0x2d')],'type':_0x1bafbc[_0x49e7('0x2e')][_0x49e7('0x2f')]};});_0xec89a3[_0x49e7('0x30')]=_[_0x49e7('0x31')](_0x228cc5,'name');_0xec89a3[_0x49e7('0x32')]=_[_0x49e7('0x33')](_0x51ed31[_0x49e7('0x32')]);_0xec89a3[_0x49e7('0x34')]=_[_0x49e7('0x35')](_0xec89a3[_0x49e7('0x30')],_0xec89a3[_0x49e7('0x32')]);_0x502206[_0x49e7('0x36')]=_[_0x49e7('0x35')](_0xec89a3[_0x49e7('0x30')],qs['fields'](_0x51ed31[_0x49e7('0x32')]['fields']));_0x502206['attributes']=_0x502206[_0x49e7('0x36')]['length']?_0x502206[_0x49e7('0x36')]:_0xec89a3[_0x49e7('0x30')];if(!_0x51ed31[_0x49e7('0x32')]['hasOwnProperty'](_0x49e7('0x37'))){_0x502206['limit']=qs[_0x49e7('0x1e')](_0x51ed31['query'][_0x49e7('0x1e')]);_0x502206[_0x49e7('0x1c')]=qs[_0x49e7('0x1c')](_0x51ed31['query'][_0x49e7('0x1c')]);}_0x502206['order']=qs[_0x49e7('0x38')](_0x51ed31[_0x49e7('0x32')][_0x49e7('0x38')]);_0x502206[_0x49e7('0x39')]=qs[_0x49e7('0x34')](_['pick'](_0x51ed31[_0x49e7('0x32')],_0xec89a3[_0x49e7('0x34')]),_0x228cc5);if(_0x51ed31['query'][_0x49e7('0x3a')]){_0x502206[_0x49e7('0x39')]=_[_0x49e7('0x3b')](_0x502206['where'],{'$or':_[_0x49e7('0x31')](_0x228cc5,function(_0x5ccae9){if(_0x5ccae9[_0x49e7('0x2e')]!==_0x49e7('0x3c')){var _0x1f3e85={};_0x1f3e85[_0x5ccae9[_0x49e7('0x29')]]={'$like':'%'+_0x51ed31[_0x49e7('0x32')]['filter']+'%'};return _0x1f3e85;}})});}_0x502206=_['merge']({},_0x502206,_0x51ed31['options']);var _0x3cdf00={'where':_0x502206[_0x49e7('0x39')]};return db['SmsTransferReport'][_0x49e7('0x1f')](_0x3cdf00)[_0x49e7('0x25')](function(_0x525db3){_0x11b9ad[_0x49e7('0x1f')]=_0x525db3;if(_0x51ed31[_0x49e7('0x32')][_0x49e7('0x3d')]){_0x502206[_0x49e7('0x3e')]=[{'all':!![]}];}return db[_0x49e7('0x2c')][_0x49e7('0x3f')](_0x502206);})['then'](function(_0x610389){_0x11b9ad[_0x49e7('0x40')]=_0x610389;return _0x11b9ad;})[_0x49e7('0x25')](respondWithFilteredResult(_0x55bd95,_0x502206))[_0x49e7('0x41')](handleError(_0x55bd95,null));};exports[_0x49e7('0x42')]=function(_0x5b6b59,_0xe4b671){var _0x196e2d={'raw':!![],'where':{'id':_0x5b6b59[_0x49e7('0x43')]['id']}},_0x183f19={};_0x183f19[_0x49e7('0x30')]=_[_0x49e7('0x33')](db[_0x49e7('0x2c')][_0x49e7('0x44')]);_0x183f19[_0x49e7('0x32')]=_[_0x49e7('0x33')](_0x5b6b59[_0x49e7('0x32')]);_0x183f19['filters']=_[_0x49e7('0x35')](_0x183f19['model'],_0x183f19[_0x49e7('0x32')]);_0x196e2d[_0x49e7('0x36')]=_[_0x49e7('0x35')](_0x183f19[_0x49e7('0x30')],qs[_0x49e7('0x45')](_0x5b6b59[_0x49e7('0x32')][_0x49e7('0x45')]));_0x196e2d[_0x49e7('0x36')]=_0x196e2d[_0x49e7('0x36')][_0x49e7('0x46')]?_0x196e2d[_0x49e7('0x36')]:_0x183f19['model'];if(_0x5b6b59['query']['includeAll']){_0x196e2d[_0x49e7('0x3e')]=[{'all':!![]}];}_0x196e2d=_['merge']({},_0x196e2d,_0x5b6b59[_0x49e7('0x47')]);return db[_0x49e7('0x2c')][_0x49e7('0x48')](_0x196e2d)[_0x49e7('0x25')](handleEntityNotFound(_0xe4b671,null))['then'](respondWithResult(_0xe4b671,null))[_0x49e7('0x41')](handleError(_0xe4b671,null));};exports['create']=function(_0x3cefa6,_0x591dd9){return db['SmsTransferReport'][_0x49e7('0x49')](_0x3cefa6[_0x49e7('0x4a')],{})[_0x49e7('0x25')](respondWithResult(_0x591dd9,0xc9))['catch'](handleError(_0x591dd9,null));};exports[_0x49e7('0x24')]=function(_0x48307c,_0x4b4f4f){if(_0x48307c[_0x49e7('0x4a')]['id']){delete _0x48307c[_0x49e7('0x4a')]['id'];}return db[_0x49e7('0x2c')][_0x49e7('0x48')]({'where':{'id':_0x48307c[_0x49e7('0x43')]['id']}})[_0x49e7('0x25')](handleEntityNotFound(_0x4b4f4f,null))[_0x49e7('0x25')](saveUpdates(_0x48307c[_0x49e7('0x4a')],null))[_0x49e7('0x25')](respondWithResult(_0x4b4f4f,null))[_0x49e7('0x41')](handleError(_0x4b4f4f,null));};exports['destroy']=function(_0x4dedaf,_0x34a44d){return db[_0x49e7('0x2c')]['find']({'where':{'id':_0x4dedaf[_0x49e7('0x43')]['id']}})[_0x49e7('0x25')](handleEntityNotFound(_0x34a44d,null))[_0x49e7('0x25')](removeEntity(_0x34a44d,null))[_0x49e7('0x41')](handleError(_0x34a44d,null));};exports[_0x49e7('0x4b')]=function(_0x2d4a85,_0x2c9f37){return db[_0x49e7('0x2c')]['describe']()[_0x49e7('0x25')](respondWithResult(_0x2c9f37,null))['catch'](handleError(_0x2c9f37,null));};
\ No newline at end of file
index 1f34e2b..e54ca5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6469=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid'];(function(_0x53ed59,_0x4beb34){var _0x5834ca=function(_0x5f51f0){while(--_0x5f51f0){_0x53ed59['push'](_0x53ed59['shift']());}};_0x5834ca(++_0x4beb34);}(_0x6469,0x142));var _0x9646=function(_0x215f01,_0x59dafb){_0x215f01=_0x215f01-0x0;var _0x55bf5b=_0x6469[_0x215f01];return _0x55bf5b;};'use strict';var _=require(_0x9646('0x0'));var util=require(_0x9646('0x1'));var logger=require(_0x9646('0x2'))(_0x9646('0x3'));var moment=require(_0x9646('0x4'));var BPromise=require(_0x9646('0x5'));var rp=require(_0x9646('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9646('0x7'));var config=require(_0x9646('0x8'));var attributes=require(_0x9646('0x9'));module[_0x9646('0xa')]=function(_0x263157,_0x12e99c){return _0x263157['define'](_0x9646('0xb'),attributes,{'tableName':_0x9646('0xc'),'paranoid':![],'indexes':[{'name':_0x9646('0xd'),'fields':[_0x9646('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x79a8=['request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x2cf536,_0x349aba){var _0x1df7a3=function(_0x1cb1ff){while(--_0x1cb1ff){_0x2cf536['push'](_0x2cf536['shift']());}};_0x1df7a3(++_0x349aba);}(_0x79a8,0x1d0));var _0x879a=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0x79a8[_0x247fa1];return _0x244f35;};'use strict';var _=require(_0x879a('0x0'));var util=require('util');var logger=require(_0x879a('0x1'))(_0x879a('0x2'));var moment=require(_0x879a('0x3'));var BPromise=require('bluebird');var rp=require(_0x879a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x879a('0x5'));var config=require(_0x879a('0x6'));var attributes=require(_0x879a('0x7'));module[_0x879a('0x8')]=function(_0x1808f1,_0x3cb89c){return _0x1808f1[_0x879a('0x9')](_0x879a('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x879a('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 29ea493..34ac079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03e=['catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3d5f84,_0x569548){var _0x1981b8=function(_0x3bf9f3){while(--_0x3bf9f3){_0x3d5f84['push'](_0x3d5f84['shift']());}};_0x1981b8(++_0x569548);}(_0xc03e,0x15a));var _0xec03=function(_0x3145af,_0x53a1d5){_0x3145af=_0x3145af-0x0;var _0x37758a=_0xc03e[_0x3145af];return _0x37758a;};'use strict';var _=require(_0xec03('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xec03('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec03('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xec03('0x3'));var logger=require(_0xec03('0x4'))(_0xec03('0x5'));var config=require(_0xec03('0x6'));var jayson=require(_0xec03('0x7'));var client=jayson[_0xec03('0x8')][_0xec03('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xcaaf03,_0x278f90,_0x529ebd){return new BPromise(function(_0x4205e9,_0xb0638e){return client[_0xec03('0xa')](_0xcaaf03,_0x529ebd)[_0xec03('0xb')](function(_0x4d7e09){logger[_0xec03('0xc')](_0xec03('0xd'),_0x278f90,_0xec03('0xe'));logger[_0xec03('0xf')](_0xec03('0x10'),_0x278f90,_0xec03('0xe'),JSON[_0xec03('0x11')](_0x4d7e09));if(_0x4d7e09[_0xec03('0x12')]){if(_0x4d7e09['error'][_0xec03('0x13')]===0x1f4){logger[_0xec03('0x12')](_0xec03('0xd'),_0x278f90,_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);return _0xb0638e(_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);}logger[_0xec03('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x278f90,_0x4d7e09['error']['message']);return _0x4205e9(_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);}else{logger[_0xec03('0xc')](_0xec03('0xd'),_0x278f90,_0xec03('0xe'));_0x4205e9(_0x4d7e09[_0xec03('0x15')][_0xec03('0x14')]);}})[_0xec03('0x16')](function(_0x5c2f1a){logger[_0xec03('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x278f90,_0x5c2f1a);_0xb0638e(_0x5c2f1a);});});}
\ No newline at end of file
+var _0xf873=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4b6bee,_0x23f984){var _0x167259=function(_0x419bfc){while(--_0x419bfc){_0x4b6bee['push'](_0x4b6bee['shift']());}};_0x167259(++_0x23f984);}(_0xf873,0xb2));var _0x3f87=function(_0x93eaaa,_0x61bcd5){_0x93eaaa=_0x93eaaa-0x0;var _0x4f5a13=_0xf873[_0x93eaaa];return _0x4f5a13;};'use strict';var _=require('lodash');var util=require(_0x3f87('0x0'));var moment=require(_0x3f87('0x1'));var BPromise=require(_0x3f87('0x2'));var rs=require(_0x3f87('0x3'));var fs=require('fs');var Redis=require(_0x3f87('0x4'));var db=require(_0x3f87('0x5'))['db'];var utils=require(_0x3f87('0x6'));var logger=require(_0x3f87('0x7'))(_0x3f87('0x8'));var config=require('../../config/environment');var jayson=require(_0x3f87('0x9'));var client=jayson[_0x3f87('0xa')][_0x3f87('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a5e37,_0x8bf89b,_0x2c7ccc){return new BPromise(function(_0x3b8e92,_0x41faf2){return client[_0x3f87('0xc')](_0x5a5e37,_0x2c7ccc)[_0x3f87('0xd')](function(_0x4c3ed4){logger[_0x3f87('0xe')](_0x3f87('0xf'),_0x8bf89b,_0x3f87('0x10'));logger[_0x3f87('0x11')](_0x3f87('0x12'),_0x8bf89b,_0x3f87('0x10'),JSON[_0x3f87('0x13')](_0x4c3ed4));if(_0x4c3ed4[_0x3f87('0x14')]){if(_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x15')]===0x1f4){logger[_0x3f87('0x14')](_0x3f87('0xf'),_0x8bf89b,_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);return _0x41faf2(_0x4c3ed4['error'][_0x3f87('0x16')]);}logger[_0x3f87('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x8bf89b,_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);return _0x3b8e92(_0x4c3ed4[_0x3f87('0x14')][_0x3f87('0x16')]);}else{logger[_0x3f87('0xe')](_0x3f87('0xf'),_0x8bf89b,_0x3f87('0x10'));_0x3b8e92(_0x4c3ed4[_0x3f87('0x17')]['message']);}})[_0x3f87('0x18')](function(_0x3ac7a7){logger[_0x3f87('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x8bf89b,_0x3ac7a7);_0x41faf2(_0x3ac7a7);});});}
\ No newline at end of file
index 73c21ba..88837c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab4=['basename','extname','now','post','single','file','create','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','download','diskStorage','join','server/files/sounds/original/','originalname','format','%s-%s%s'];(function(_0x4fcbcc,_0x2bb417){var _0x3c7610=function(_0x37b231){while(--_0x37b231){_0x4fcbcc['push'](_0x4fcbcc['shift']());}};_0x3c7610(++_0x2bb417);}(_0x9ab4,0xdc));var _0x49ab=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9ab4[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x49ab('0x0'));var util=require(_0x49ab('0x1'));var path=require(_0x49ab('0x2'));var timeout=require('connect-timeout');var express=require(_0x49ab('0x3'));var router=express[_0x49ab('0x4')]();var fs_extra=require(_0x49ab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x49ab('0x6'));var config=require(_0x49ab('0x7'));var controller=require(_0x49ab('0x8'));router[_0x49ab('0x9')]('/',auth[_0x49ab('0xa')](),controller[_0x49ab('0xb')]);router[_0x49ab('0x9')](_0x49ab('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x49ab('0x9')]('/:id/download',auth[_0x49ab('0xa')](),controller[_0x49ab('0xd')]);var upload=multer({'storage':multer[_0x49ab('0xe')]({'destination':function(_0x2f5022,_0x12adee,_0x19bf5d){_0x19bf5d(null,path[_0x49ab('0xf')](config['root'],_0x49ab('0x10')));},'filename':function(_0x1e9a13,_0x96573e,_0x1d2744){_0x96573e[_0x49ab('0x11')]=_0x96573e[_0x49ab('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1d2744(null,util[_0x49ab('0x12')](_0x49ab('0x13'),path[_0x49ab('0x14')](_0x96573e[_0x49ab('0x11')],path[_0x49ab('0x15')](_0x96573e[_0x49ab('0x11')])),Date[_0x49ab('0x16')](),path[_0x49ab('0x15')](_0x96573e['originalname'])));}})});router[_0x49ab('0x17')]('/',upload[_0x49ab('0x18')](_0x49ab('0x19')),controller[_0x49ab('0x1a')]);router['put'](_0x49ab('0xc'),auth[_0x49ab('0xa')](),controller[_0x49ab('0x1b')]);router[_0x49ab('0x1c')](_0x49ab('0xc'),auth['isAuthenticated'](),controller[_0x49ab('0x1c')]);module[_0x49ab('0x1d')]=router;
\ No newline at end of file
+var _0xff0d=['show','/:id/download','download','root','server/files/sounds/original/','originalname','basename','extname','now','post','file','create','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0xee994d,_0x5b8f3a){var _0x360861=function(_0x24750a){while(--_0x24750a){_0xee994d['push'](_0xee994d['shift']());}};_0x360861(++_0x5b8f3a);}(_0xff0d,0x101));var _0xdff0=function(_0x324012,_0x23f45f){_0x324012=_0x324012-0x0;var _0x435cf2=_0xff0d[_0x324012];return _0x435cf2;};'use strict';var multer=require(_0xdff0('0x0'));var util=require(_0xdff0('0x1'));var path=require(_0xdff0('0x2'));var timeout=require(_0xdff0('0x3'));var express=require(_0xdff0('0x4'));var router=express[_0xdff0('0x5')]();var fs_extra=require(_0xdff0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdff0('0x7'));var config=require(_0xdff0('0x8'));var controller=require('./sound.controller');router[_0xdff0('0x9')]('/',auth[_0xdff0('0xa')](),controller[_0xdff0('0xb')]);router[_0xdff0('0x9')](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller[_0xdff0('0xd')]);router['get'](_0xdff0('0xe'),auth[_0xdff0('0xa')](),controller[_0xdff0('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x51240b,_0x1f6fa8,_0x4c22fd){_0x4c22fd(null,path['join'](config[_0xdff0('0x10')],_0xdff0('0x11')));},'filename':function(_0x1467c7,_0x342798,_0x4f5584){_0x342798[_0xdff0('0x12')]=_0x342798['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4f5584(null,util['format']('%s-%s%s',path[_0xdff0('0x13')](_0x342798[_0xdff0('0x12')],path[_0xdff0('0x14')](_0x342798['originalname'])),Date[_0xdff0('0x15')](),path[_0xdff0('0x14')](_0x342798[_0xdff0('0x12')])));}})});router[_0xdff0('0x16')]('/',upload['single'](_0xdff0('0x17')),controller[_0xdff0('0x18')]);router['put'](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller['update']);router[_0xdff0('0x19')](_0xdff0('0xc'),auth[_0xdff0('0xa')](),controller[_0xdff0('0x19')]);module[_0xdff0('0x1a')]=router;
\ No newline at end of file
index 4fbae61..ce44cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa914=['STRING','name','BIGINT','FLOAT','INTEGER','sequelize','exports'];(function(_0x355b14,_0x39ee97){var _0x3b7707=function(_0x1deff2){while(--_0x1deff2){_0x355b14['push'](_0x355b14['shift']());}};_0x3b7707(++_0x39ee97);}(_0xa914,0x19b));var _0x4a91=function(_0x395155,_0x192ffd){_0x395155=_0x395155-0x0;var _0x179767=_0xa914[_0x395155];return _0x179767;};'use strict';var Sequelize=require(_0x4a91('0x0'));module[_0x4a91('0x1')]={'name':{'type':Sequelize[_0x4a91('0x2')],'unique':_0x4a91('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x4a91('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x4a91('0x2')]},'original_format':{'type':Sequelize[_0x4a91('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x4a91('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x4a91('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x4a91('0x2')]},'converted_duration':{'type':Sequelize[_0x4a91('0x5')]},'converted_sampleCount':{'type':Sequelize[_0x4a91('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0x4a91('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x4a91('0x6')]}};
\ No newline at end of file
+var _0x4abf=['STRING','FLOAT','BIGINT','INTEGER','sequelize','exports','name'];(function(_0x5d4ca7,_0x19113b){var _0x3efc03=function(_0x59675b){while(--_0x59675b){_0x5d4ca7['push'](_0x5d4ca7['shift']());}};_0x3efc03(++_0x19113b);}(_0x4abf,0xac));var _0xf4ab=function(_0x79288c,_0xdeee0d){_0x79288c=_0x79288c-0x0;var _0x13014d=_0x4abf[_0x79288c];return _0x13014d;};'use strict';var Sequelize=require(_0xf4ab('0x0'));module[_0xf4ab('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf4ab('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xf4ab('0x3')]},'original_duration':{'type':Sequelize[_0xf4ab('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xf4ab('0x5')]},'original_sampleRate':{'type':Sequelize[_0xf4ab('0x6')]},'converted_format':{'type':Sequelize[_0xf4ab('0x3')]},'converted_duration':{'type':Sequelize[_0xf4ab('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0xf4ab('0x6')]},'converted_bitRate':{'type':Sequelize[_0xf4ab('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 784a176..7a5a620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb1=['save_name','existsSync','join','server/files/sounds/converted','converted_format','ValidationError','root','format','%s.%s','create','basename','file','extname','originalname','substring','wav','server/files/sounds/original','filename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_sampleRate','0777','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Sounds','UserProfileResource','destroy','then','stack','name','send','index','map','Sound','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','find'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x4bb1,0x1a9));var _0x14bb=function(_0x503306,_0x356f2f){_0x503306=_0x503306-0x0;var _0x44a99d=_0x4bb1[_0x503306];return _0x44a99d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x14bb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x14bb('0x1'));var rp=require(_0x14bb('0x2'));var moment=require(_0x14bb('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x14bb('0x4'));var path=require(_0x14bb('0x5'));var sox=require(_0x14bb('0x6'));var csv=require('to-csv');var ejs=require(_0x14bb('0x7'));var fs=require('fs');var fs_extra=require(_0x14bb('0x8'));var _=require(_0x14bb('0x9'));var squel=require('squel');var crypto=require(_0x14bb('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x14bb('0xb'));var toCsv=require(_0x14bb('0xc'));var querystring=require(_0x14bb('0xd'));var Papa=require(_0x14bb('0xe'));var Redis=require(_0x14bb('0xf'));var authService=require(_0x14bb('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x14bb('0x11'));var logger=require(_0x14bb('0x12'))(_0x14bb('0x13'));var utils=require(_0x14bb('0x14'));var config=require(_0x14bb('0x15'));var licenseUtil=require(_0x14bb('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dfa28,_0xa657ed){_0xa657ed=_0xa657ed||0xcc;return function(_0x36fed1){if(_0x36fed1){return _0x5dfa28[_0x14bb('0x17')](_0xa657ed);}return _0x5dfa28[_0x14bb('0x18')](_0xa657ed)[_0x14bb('0x19')]();};}function respondWithResult(_0x13a050,_0x47204c){_0x47204c=_0x47204c||0xc8;return function(_0xacd1e3){if(_0xacd1e3){return _0x13a050[_0x14bb('0x18')](_0x47204c)[_0x14bb('0x1a')](_0xacd1e3);}};}function respondWithFilteredResult(_0x44f09b,_0x30f7fe){return function(_0x49e997){if(_0x49e997){var _0x5f0565=typeof _0x30f7fe[_0x14bb('0x1b')]===_0x14bb('0x1c')&&typeof _0x30f7fe[_0x14bb('0x1d')]==='undefined';var _0x126274=_0x49e997[_0x14bb('0x1e')];var _0x4ea69d=_0x5f0565?0x0:_0x30f7fe['offset'];var _0x35d5d2=_0x5f0565?_0x49e997['count']:_0x30f7fe[_0x14bb('0x1b')]+_0x30f7fe[_0x14bb('0x1d')];var _0x42f455;if(_0x35d5d2>=_0x126274){_0x35d5d2=_0x126274;_0x42f455=0xc8;}else{_0x42f455=0xce;}_0x44f09b[_0x14bb('0x18')](_0x42f455);return _0x44f09b[_0x14bb('0x1f')](_0x14bb('0x20'),_0x4ea69d+'-'+_0x35d5d2+'/'+_0x126274)[_0x14bb('0x1a')](_0x49e997);}return null;};}function patchUpdates(_0xd07b2){return function(_0x35cd97){try{jsonpatch[_0x14bb('0x21')](_0x35cd97,_0xd07b2,!![]);}catch(_0x5e1d85){return BPromise[_0x14bb('0x22')](_0x5e1d85);}return _0x35cd97[_0x14bb('0x23')]();};}function saveUpdates(_0x5c21f8,_0x143780){return function(_0x4b4f15){if(_0x4b4f15){return _0x4b4f15[_0x14bb('0x24')](_0x5c21f8)['then'](function(_0x45f656){return _0x45f656;});}return null;};}function removeEntity(_0x47c34f,_0x5d37c1){return function(_0x4ab9c3){if(_0x4ab9c3){return _0x4ab9c3['destroy']()['then'](function(){var _0x178bca=_0x4ab9c3[_0x14bb('0x25')]({'plain':!![]});var _0x2ad043=_0x14bb('0x26');return db[_0x14bb('0x27')][_0x14bb('0x28')]({'where':{'type':_0x2ad043,'resourceId':_0x178bca['id']}})[_0x14bb('0x29')](function(){return _0x4ab9c3;});})[_0x14bb('0x29')](function(){_0x47c34f['status'](0xcc)[_0x14bb('0x19')]();});}};}function handleEntityNotFound(_0x1e3d2d,_0x391f2b){return function(_0x34755e){if(!_0x34755e){_0x1e3d2d[_0x14bb('0x17')](0x194);}return _0x34755e;};}function handleError(_0x3b63c5,_0x488365){_0x488365=_0x488365||0x1f4;return function(_0x472e21){logger['error'](_0x472e21[_0x14bb('0x2a')]);if(_0x472e21[_0x14bb('0x2b')]){delete _0x472e21[_0x14bb('0x2b')];}_0x3b63c5[_0x14bb('0x18')](_0x488365)[_0x14bb('0x2c')](_0x472e21);};}exports[_0x14bb('0x2d')]=function(_0x15917c,_0x1fab95){var _0x2f83de={},_0x50a2ba={},_0x57a6dd={'count':0x0,'rows':[]};var _0x499dc4=_[_0x14bb('0x2e')](db[_0x14bb('0x2f')][_0x14bb('0x30')],function(_0x293f5c){return{'name':_0x293f5c['fieldName'],'type':_0x293f5c['type'][_0x14bb('0x31')]};});_0x50a2ba[_0x14bb('0x32')]=_['map'](_0x499dc4,_0x14bb('0x2b'));_0x50a2ba[_0x14bb('0x33')]=_[_0x14bb('0x34')](_0x15917c['query']);_0x50a2ba[_0x14bb('0x35')]=_['intersection'](_0x50a2ba[_0x14bb('0x32')],_0x50a2ba[_0x14bb('0x33')]);_0x2f83de[_0x14bb('0x36')]=_[_0x14bb('0x37')](_0x50a2ba[_0x14bb('0x32')],qs[_0x14bb('0x38')](_0x15917c[_0x14bb('0x33')][_0x14bb('0x38')]));_0x2f83de[_0x14bb('0x36')]=_0x2f83de['attributes'][_0x14bb('0x39')]?_0x2f83de['attributes']:_0x50a2ba[_0x14bb('0x32')];if(!_0x15917c[_0x14bb('0x33')][_0x14bb('0x3a')](_0x14bb('0x3b'))){_0x2f83de[_0x14bb('0x1d')]=qs[_0x14bb('0x1d')](_0x15917c[_0x14bb('0x33')][_0x14bb('0x1d')]);_0x2f83de[_0x14bb('0x1b')]=qs['offset'](_0x15917c[_0x14bb('0x33')][_0x14bb('0x1b')]);}_0x2f83de[_0x14bb('0x3c')]=qs[_0x14bb('0x3d')](_0x15917c[_0x14bb('0x33')]['sort']);_0x2f83de[_0x14bb('0x3e')]=qs[_0x14bb('0x35')](_[_0x14bb('0x3f')](_0x15917c[_0x14bb('0x33')],_0x50a2ba[_0x14bb('0x35')]),_0x499dc4);if(_0x15917c[_0x14bb('0x33')][_0x14bb('0x40')]){_0x2f83de[_0x14bb('0x3e')]=_['merge'](_0x2f83de[_0x14bb('0x3e')],{'$or':_[_0x14bb('0x2e')](_0x499dc4,function(_0x5afee4){if(_0x5afee4['type']!==_0x14bb('0x41')){var _0x1de1d1={};_0x1de1d1[_0x5afee4[_0x14bb('0x2b')]]={'$like':'%'+_0x15917c['query'][_0x14bb('0x40')]+'%'};return _0x1de1d1;}})});}_0x2f83de=_[_0x14bb('0x42')]({},_0x2f83de,_0x15917c[_0x14bb('0x43')]);var _0x33e17d={'where':_0x2f83de['where']};return db['Sound']['count'](_0x33e17d)[_0x14bb('0x29')](function(_0x3762cc){_0x57a6dd[_0x14bb('0x1e')]=_0x3762cc;if(_0x15917c[_0x14bb('0x33')][_0x14bb('0x44')]){_0x2f83de[_0x14bb('0x45')]=[{'all':!![]}];}return db['Sound'][_0x14bb('0x46')](_0x2f83de);})[_0x14bb('0x29')](function(_0x36e0b6){_0x57a6dd[_0x14bb('0x47')]=_0x36e0b6;return _0x57a6dd;})[_0x14bb('0x29')](respondWithFilteredResult(_0x1fab95,_0x2f83de))[_0x14bb('0x48')](handleError(_0x1fab95,null));};exports['show']=function(_0x12bea3,_0x276816){var _0x4272eb={'raw':!![],'where':{'id':_0x12bea3[_0x14bb('0x49')]['id']}},_0x12ba8f={};_0x12ba8f['model']=_['keys'](db[_0x14bb('0x2f')][_0x14bb('0x30')]);_0x12ba8f['query']=_[_0x14bb('0x34')](_0x12bea3[_0x14bb('0x33')]);_0x12ba8f[_0x14bb('0x35')]=_[_0x14bb('0x37')](_0x12ba8f[_0x14bb('0x32')],_0x12ba8f[_0x14bb('0x33')]);_0x4272eb[_0x14bb('0x36')]=_[_0x14bb('0x37')](_0x12ba8f[_0x14bb('0x32')],qs[_0x14bb('0x38')](_0x12bea3[_0x14bb('0x33')][_0x14bb('0x38')]));_0x4272eb['attributes']=_0x4272eb[_0x14bb('0x36')][_0x14bb('0x39')]?_0x4272eb['attributes']:_0x12ba8f[_0x14bb('0x32')];if(_0x12bea3[_0x14bb('0x33')][_0x14bb('0x44')]){_0x4272eb[_0x14bb('0x45')]=[{'all':!![]}];}_0x4272eb=_[_0x14bb('0x42')]({},_0x4272eb,_0x12bea3[_0x14bb('0x43')]);return db[_0x14bb('0x2f')][_0x14bb('0x4a')](_0x4272eb)['then'](handleEntityNotFound(_0x276816,null))[_0x14bb('0x29')](respondWithResult(_0x276816,null))[_0x14bb('0x48')](handleError(_0x276816,null));};exports['download']=function(_0x354fd5,_0x4c8153,_0x363a60){return db[_0x14bb('0x2f')][_0x14bb('0x4a')]({'where':{'id':_0x354fd5['params']['id']},'attributes':[_0x14bb('0x2b'),_0x14bb('0x4b'),'converted_format'],'raw':!![]})['then'](handleEntityNotFound(_0x4c8153,null))['then'](function(_0x4dec57){if(_0x4dec57){if(!fs[_0x14bb('0x4c')](path[_0x14bb('0x4d')](config['root'],_0x14bb('0x4e'),_0x4dec57[_0x14bb('0x4b')]+'.'+_0x4dec57[_0x14bb('0x4f')]))){throw new db['Sequelize'][(_0x14bb('0x50'))]('Sound\x20not\x20found');}return _0x4c8153['download'](path[_0x14bb('0x4d')](config[_0x14bb('0x51')],_0x14bb('0x4e'),util[_0x14bb('0x52')](_0x14bb('0x53'),_0x4dec57[_0x14bb('0x4b')],_0x4dec57[_0x14bb('0x4f')])),util['format'](_0x14bb('0x53'),_0x4dec57[_0x14bb('0x2b')],_0x4dec57[_0x14bb('0x4f')]));}return null;})[_0x14bb('0x48')](handleError(_0x4c8153,null));};exports[_0x14bb('0x54')]=function(_0x3af145,_0xd6e830,_0xb53dec){var _0x44c7a6={'name':path[_0x14bb('0x55')](_0x3af145[_0x14bb('0x56')]['originalname'],path[_0x14bb('0x57')](_0x3af145['file']['originalname'])),'save_name':path[_0x14bb('0x55')](_0x3af145['file']['filename'],path['extname'](_0x3af145[_0x14bb('0x56')]['filename'])),'original_format':path['extname'](_0x3af145[_0x14bb('0x56')][_0x14bb('0x58')])[_0x14bb('0x59')](0x1),'converted_format':_0x14bb('0x5a')};var _0x324a9f=path[_0x14bb('0x4d')](config['root'],_0x14bb('0x5b'),_0x3af145[_0x14bb('0x56')][_0x14bb('0x5c')]);var _0x4275b8=path[_0x14bb('0x4d')](config[_0x14bb('0x51')],_0x14bb('0x4e'),util[_0x14bb('0x52')](_0x14bb('0x53'),path[_0x14bb('0x55')](_0x3af145[_0x14bb('0x56')]['filename'],path[_0x14bb('0x57')](_0x3af145[_0x14bb('0x56')][_0x14bb('0x5c')])),_0x44c7a6[_0x14bb('0x4f')]));logger[_0x14bb('0x5d')](_0x14bb('0x5e'),_0x324a9f);logger[_0x14bb('0x5d')](_0x14bb('0x5f'),_0x4275b8);try{fs[_0x14bb('0x60')](_0x324a9f,parseInt('0777',0x8));var _0x2dcefd=sox[_0x14bb('0x61')](_0x324a9f,_0x4275b8,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2dcefd['on'](_0x14bb('0x62'),function(_0x4c5fb6){fs[_0x14bb('0x63')](_0x324a9f);_0xd6e830[_0x14bb('0x18')](0x1f4)[_0x14bb('0x2c')](_0x4c5fb6);});_0x2dcefd['on'](_0x14bb('0x64'),function(_0x245a43){_0x44c7a6[_0x14bb('0x65')]=isNaN(_0x245a43[_0x14bb('0x66')])?null:_0x245a43[_0x14bb('0x66')]*0x3e8;_0x44c7a6[_0x14bb('0x67')]=isNaN(_0x245a43[_0x14bb('0x68')])?null:_0x245a43[_0x14bb('0x68')];_0x44c7a6['original_channelCount']=isNaN(_0x245a43[_0x14bb('0x69')])?null:_0x245a43[_0x14bb('0x69')];_0x44c7a6['original_bitRate']=isNaN(_0x245a43[_0x14bb('0x6a')])?null:_0x245a43[_0x14bb('0x6a')];_0x44c7a6[_0x14bb('0x6b')]=isNaN(_0x245a43[_0x14bb('0x6c')])?null:_0x245a43[_0x14bb('0x6c')];});_0x2dcefd['on'](_0x14bb('0x6d'),function(_0x47d12f){_0x44c7a6[_0x14bb('0x6e')]=isNaN(_0x47d12f[_0x14bb('0x66')])?null:_0x47d12f[_0x14bb('0x66')]*0x3e8;_0x44c7a6[_0x14bb('0x6f')]=isNaN(_0x47d12f[_0x14bb('0x68')])?null:_0x47d12f[_0x14bb('0x68')];_0x44c7a6[_0x14bb('0x70')]=isNaN(_0x47d12f[_0x14bb('0x69')])?null:_0x47d12f[_0x14bb('0x69')];_0x44c7a6['converted_bitRate']=isNaN(_0x47d12f[_0x14bb('0x6a')])?null:_0x47d12f[_0x14bb('0x6a')];_0x44c7a6[_0x14bb('0x71')]=isNaN(_0x47d12f[_0x14bb('0x6c')])?null:_0x47d12f[_0x14bb('0x6c')];});_0x2dcefd['on']('end',function(){fs[_0x14bb('0x60')](_0x4275b8,parseInt(_0x14bb('0x72'),0x8));return db['Sound']['create'](_0x44c7a6)[_0x14bb('0x29')](function(_0x4ae6e0){var _0x211d11={'role':_0x3af145[_0x14bb('0x73')]['role'],'userProfileId':_0x3af145[_0x14bb('0x73')][_0x14bb('0x74')]};if(!_0x211d11)throw new Error(_0x14bb('0x75'));if(_0x211d11[_0x14bb('0x76')]==='user'){var _0x28258d=_0x4ae6e0[_0x14bb('0x25')]({'plain':!![]});return db[_0x14bb('0x77')][_0x14bb('0x4a')]({'where':{'name':'Sounds','userProfileId':_0x211d11[_0x14bb('0x74')]},'raw':!![]})['then'](function(_0x3f5972){if(_0x3f5972&&_0x3f5972['autoAssociation']===0x0){return db[_0x14bb('0x27')][_0x14bb('0x54')]({'name':_0x28258d[_0x14bb('0x2b')],'resourceId':_0x28258d['id'],'type':_0x3f5972[_0x14bb('0x2b')],'sectionId':_0x3f5972['id']},{})[_0x14bb('0x29')](function(){return _0x4ae6e0;});}else{return _0x4ae6e0;}})[_0x14bb('0x48')](function(_0x28502b){logger['error'](_0x14bb('0x78'),_0x28502b);throw _0x28502b;});}return _0x4ae6e0;})[_0x14bb('0x29')](respondWithResult(_0xd6e830,null))[_0x14bb('0x48')](handleError(_0xd6e830,null));});_0x2dcefd[_0x14bb('0x79')]();}catch(_0x1585ff){_0xd6e830['status'](0x1f4)[_0x14bb('0x2c')](_0x1585ff);}};exports['update']=function(_0x32af6c,_0x3f68a9,_0x3ec06a){return db[_0x14bb('0x2f')][_0x14bb('0x4a')]({'where':{'id':_0x32af6c[_0x14bb('0x49')]['id']}})[_0x14bb('0x29')](handleEntityNotFound(_0x3f68a9,null))['then'](saveUpdates(_[_0x14bb('0x3f')](_0x32af6c[_0x14bb('0x73')],[_0x14bb('0x2b'),_0x14bb('0x7a')]),null))[_0x14bb('0x29')](respondWithResult(_0x3f68a9,null))[_0x14bb('0x48')](handleError(_0x3f68a9,null));};exports[_0x14bb('0x7b')]=function(_0x3d0902,_0x58f53b,_0x3a3c3d){return db[_0x14bb('0x2f')][_0x14bb('0x4a')]({'where':{'id':_0x3d0902[_0x14bb('0x49')]['id']}})[_0x14bb('0x29')](function(_0x3c113f){if(_0x3c113f){return _0x3c113f[_0x14bb('0x28')]();}})[_0x14bb('0x29')](function(_0x2bdd79){var _0x10f5a6=path['join'](config[_0x14bb('0x51')],_0x14bb('0x5b'),util[_0x14bb('0x52')](_0x14bb('0x53'),_0x2bdd79['save_name'],_0x2bdd79[_0x14bb('0x7c')]));var _0x30bb80=path['join'](config['root'],_0x14bb('0x4e'),util[_0x14bb('0x52')](_0x14bb('0x53'),_0x2bdd79[_0x14bb('0x4b')],_0x2bdd79[_0x14bb('0x4f')]));fs[_0x14bb('0x63')](_0x10f5a6);fs[_0x14bb('0x63')](_0x30bb80);return _0x2bdd79;})[_0x14bb('0x29')](function(_0x576a54){if(_0x576a54){return _0x58f53b[_0x14bb('0x18')](0xcc)[_0x14bb('0x19')]();}})['then'](handleEntityNotFound(_0x58f53b,null))[_0x14bb('0x48')](handleError(_0x58f53b,null));};
\ No newline at end of file
+var _0x3aee=['request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','limit','count','set','json','apply','save','Sounds','UserProfileResource','destroy','then','sendStatus','error','stack','name','send','index','map','Sound','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','options','find','catch','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','download','format','%s.%s','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','chmodSync','create','body','role','userProfileId','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','update','original_format','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x5292a9,_0x37f0c5){var _0x32ff30=function(_0x5b081d){while(--_0x5b081d){_0x5292a9['push'](_0x5292a9['shift']());}};_0x32ff30(++_0x37f0c5);}(_0x3aee,0x17f));var _0xe3ae=function(_0x255ac0,_0x3f6645){_0x255ac0=_0x255ac0-0x0;var _0x437bf1=_0x3aee[_0x255ac0];return _0x437bf1;};'use strict';var emlformat=require(_0xe3ae('0x0'));var rimraf=require(_0xe3ae('0x1'));var zipdir=require(_0xe3ae('0x2'));var jsonpatch=require(_0xe3ae('0x3'));var rp=require(_0xe3ae('0x4'));var moment=require('moment');var BPromise=require(_0xe3ae('0x5'));var Mustache=require(_0xe3ae('0x6'));var util=require(_0xe3ae('0x7'));var path=require(_0xe3ae('0x8'));var sox=require(_0xe3ae('0x9'));var csv=require('to-csv');var ejs=require(_0xe3ae('0xa'));var fs=require('fs');var fs_extra=require(_0xe3ae('0xb'));var _=require(_0xe3ae('0xc'));var squel=require(_0xe3ae('0xd'));var crypto=require(_0xe3ae('0xe'));var jsforce=require(_0xe3ae('0xf'));var deskjs=require(_0xe3ae('0x10'));var toCsv=require(_0xe3ae('0x11'));var querystring=require(_0xe3ae('0x12'));var Papa=require(_0xe3ae('0x13'));var Redis=require(_0xe3ae('0x14'));var authService=require(_0xe3ae('0x15'));var qs=require(_0xe3ae('0x16'));var as=require(_0xe3ae('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3ae('0x18'))(_0xe3ae('0x19'));var utils=require(_0xe3ae('0x1a'));var config=require(_0xe3ae('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xe3ae('0x1c'))['db'];function respondWithStatusCode(_0x6346da,_0x32c72c){_0x32c72c=_0x32c72c||0xcc;return function(_0x4486da){if(_0x4486da){return _0x6346da['sendStatus'](_0x32c72c);}return _0x6346da['status'](_0x32c72c)[_0xe3ae('0x1d')]();};}function respondWithResult(_0x2b1fb2,_0xc05092){_0xc05092=_0xc05092||0xc8;return function(_0x5c9f92){if(_0x5c9f92){return _0x2b1fb2[_0xe3ae('0x1e')](_0xc05092)['json'](_0x5c9f92);}};}function respondWithFilteredResult(_0x4b1a29,_0x26ee74){return function(_0x1ace72){if(_0x1ace72){var _0x4907f9=typeof _0x26ee74[_0xe3ae('0x1f')]==='undefined'&&typeof _0x26ee74[_0xe3ae('0x20')]==='undefined';var _0x3c1564=_0x1ace72[_0xe3ae('0x21')];var _0x243ddb=_0x4907f9?0x0:_0x26ee74['offset'];var _0x4eae68=_0x4907f9?_0x1ace72[_0xe3ae('0x21')]:_0x26ee74[_0xe3ae('0x1f')]+_0x26ee74[_0xe3ae('0x20')];var _0x150b2f;if(_0x4eae68>=_0x3c1564){_0x4eae68=_0x3c1564;_0x150b2f=0xc8;}else{_0x150b2f=0xce;}_0x4b1a29['status'](_0x150b2f);return _0x4b1a29[_0xe3ae('0x22')]('Content-Range',_0x243ddb+'-'+_0x4eae68+'/'+_0x3c1564)[_0xe3ae('0x23')](_0x1ace72);}return null;};}function patchUpdates(_0x147598){return function(_0xa0449){try{jsonpatch[_0xe3ae('0x24')](_0xa0449,_0x147598,!![]);}catch(_0x1e3aad){return BPromise['reject'](_0x1e3aad);}return _0xa0449[_0xe3ae('0x25')]();};}function saveUpdates(_0x4160d1,_0x483822){return function(_0x550461){if(_0x550461){return _0x550461['update'](_0x4160d1)['then'](function(_0x4c6d5e){return _0x4c6d5e;});}return null;};}function removeEntity(_0x3f04dc,_0x55eab2){return function(_0x24817e){if(_0x24817e){return _0x24817e['destroy']()['then'](function(){var _0x5dbacc=_0x24817e['get']({'plain':!![]});var _0x45184b=_0xe3ae('0x26');return db[_0xe3ae('0x27')][_0xe3ae('0x28')]({'where':{'type':_0x45184b,'resourceId':_0x5dbacc['id']}})[_0xe3ae('0x29')](function(){return _0x24817e;});})['then'](function(){_0x3f04dc[_0xe3ae('0x1e')](0xcc)[_0xe3ae('0x1d')]();});}};}function handleEntityNotFound(_0x4aa7ee,_0x5228c1){return function(_0x348caa){if(!_0x348caa){_0x4aa7ee[_0xe3ae('0x2a')](0x194);}return _0x348caa;};}function handleError(_0x1c1430,_0x46852a){_0x46852a=_0x46852a||0x1f4;return function(_0x34314d){logger[_0xe3ae('0x2b')](_0x34314d[_0xe3ae('0x2c')]);if(_0x34314d['name']){delete _0x34314d[_0xe3ae('0x2d')];}_0x1c1430[_0xe3ae('0x1e')](_0x46852a)[_0xe3ae('0x2e')](_0x34314d);};}exports[_0xe3ae('0x2f')]=function(_0x1a783a,_0x42c5e3){var _0x20677b={},_0x13296f={},_0x3aada1={'count':0x0,'rows':[]};var _0x47552c=_[_0xe3ae('0x30')](db[_0xe3ae('0x31')]['rawAttributes'],function(_0x15f3a9){return{'name':_0x15f3a9[_0xe3ae('0x32')],'type':_0x15f3a9[_0xe3ae('0x33')][_0xe3ae('0x34')]};});_0x13296f['model']=_[_0xe3ae('0x30')](_0x47552c,_0xe3ae('0x2d'));_0x13296f[_0xe3ae('0x35')]=_[_0xe3ae('0x36')](_0x1a783a[_0xe3ae('0x35')]);_0x13296f[_0xe3ae('0x37')]=_['intersection'](_0x13296f[_0xe3ae('0x38')],_0x13296f[_0xe3ae('0x35')]);_0x20677b[_0xe3ae('0x39')]=_[_0xe3ae('0x3a')](_0x13296f[_0xe3ae('0x38')],qs[_0xe3ae('0x3b')](_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3b')]));_0x20677b[_0xe3ae('0x39')]=_0x20677b[_0xe3ae('0x39')][_0xe3ae('0x3c')]?_0x20677b[_0xe3ae('0x39')]:_0x13296f[_0xe3ae('0x38')];if(!_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3d')]('nolimit')){_0x20677b[_0xe3ae('0x20')]=qs[_0xe3ae('0x20')](_0x1a783a[_0xe3ae('0x35')]['limit']);_0x20677b['offset']=qs[_0xe3ae('0x1f')](_0x1a783a['query'][_0xe3ae('0x1f')]);}_0x20677b['order']=qs[_0xe3ae('0x3e')](_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x3e')]);_0x20677b[_0xe3ae('0x3f')]=qs[_0xe3ae('0x37')](_[_0xe3ae('0x40')](_0x1a783a[_0xe3ae('0x35')],_0x13296f[_0xe3ae('0x37')]),_0x47552c);if(_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x41')]){_0x20677b[_0xe3ae('0x3f')]=_[_0xe3ae('0x42')](_0x20677b[_0xe3ae('0x3f')],{'$or':_[_0xe3ae('0x30')](_0x47552c,function(_0x49918e){if(_0x49918e[_0xe3ae('0x33')]!==_0xe3ae('0x43')){var _0x2a652c={};_0x2a652c[_0x49918e[_0xe3ae('0x2d')]]={'$like':'%'+_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x41')]+'%'};return _0x2a652c;}})});}_0x20677b=_[_0xe3ae('0x42')]({},_0x20677b,_0x1a783a['options']);var _0x30ed6c={'where':_0x20677b[_0xe3ae('0x3f')]};return db[_0xe3ae('0x31')][_0xe3ae('0x21')](_0x30ed6c)[_0xe3ae('0x29')](function(_0x17957a){_0x3aada1[_0xe3ae('0x21')]=_0x17957a;if(_0x1a783a[_0xe3ae('0x35')][_0xe3ae('0x44')]){_0x20677b[_0xe3ae('0x45')]=[{'all':!![]}];}return db[_0xe3ae('0x31')][_0xe3ae('0x46')](_0x20677b);})[_0xe3ae('0x29')](function(_0x40e2ef){_0x3aada1[_0xe3ae('0x47')]=_0x40e2ef;return _0x3aada1;})['then'](respondWithFilteredResult(_0x42c5e3,_0x20677b))['catch'](handleError(_0x42c5e3,null));};exports[_0xe3ae('0x48')]=function(_0x9a0f4f,_0x3487c6){var _0x17cf43={'raw':!![],'where':{'id':_0x9a0f4f[_0xe3ae('0x49')]['id']}},_0x1a1ec9={};_0x1a1ec9[_0xe3ae('0x38')]=_[_0xe3ae('0x36')](db['Sound'][_0xe3ae('0x4a')]);_0x1a1ec9[_0xe3ae('0x35')]=_[_0xe3ae('0x36')](_0x9a0f4f[_0xe3ae('0x35')]);_0x1a1ec9[_0xe3ae('0x37')]=_[_0xe3ae('0x3a')](_0x1a1ec9[_0xe3ae('0x38')],_0x1a1ec9[_0xe3ae('0x35')]);_0x17cf43[_0xe3ae('0x39')]=_['intersection'](_0x1a1ec9[_0xe3ae('0x38')],qs[_0xe3ae('0x3b')](_0x9a0f4f[_0xe3ae('0x35')]['fields']));_0x17cf43['attributes']=_0x17cf43[_0xe3ae('0x39')][_0xe3ae('0x3c')]?_0x17cf43[_0xe3ae('0x39')]:_0x1a1ec9[_0xe3ae('0x38')];if(_0x9a0f4f[_0xe3ae('0x35')]['includeAll']){_0x17cf43[_0xe3ae('0x45')]=[{'all':!![]}];}_0x17cf43=_['merge']({},_0x17cf43,_0x9a0f4f[_0xe3ae('0x4b')]);return db[_0xe3ae('0x31')][_0xe3ae('0x4c')](_0x17cf43)[_0xe3ae('0x29')](handleEntityNotFound(_0x3487c6,null))[_0xe3ae('0x29')](respondWithResult(_0x3487c6,null))[_0xe3ae('0x4d')](handleError(_0x3487c6,null));};exports['download']=function(_0x42c9d6,_0x357088,_0x145f38){return db['Sound'][_0xe3ae('0x4c')]({'where':{'id':_0x42c9d6[_0xe3ae('0x49')]['id']},'attributes':[_0xe3ae('0x2d'),_0xe3ae('0x4e'),_0xe3ae('0x4f')],'raw':!![]})[_0xe3ae('0x29')](handleEntityNotFound(_0x357088,null))[_0xe3ae('0x29')](function(_0x2b0c37){if(_0x2b0c37){if(!fs[_0xe3ae('0x50')](path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),_0x2b0c37[_0xe3ae('0x4e')]+'.'+_0x2b0c37['converted_format']))){throw new db[(_0xe3ae('0x54'))][(_0xe3ae('0x55'))](_0xe3ae('0x56'));}return _0x357088[_0xe3ae('0x57')](path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x2b0c37[_0xe3ae('0x4e')],_0x2b0c37[_0xe3ae('0x4f')])),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x2b0c37[_0xe3ae('0x2d')],_0x2b0c37['converted_format']));}return null;})[_0xe3ae('0x4d')](handleError(_0x357088,null));};exports['create']=function(_0x5149c0,_0x4776a9,_0x362a2d){var _0x5f1f1e={'name':path[_0xe3ae('0x5a')](_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5c')],path[_0xe3ae('0x5d')](_0x5149c0[_0xe3ae('0x5b')]['originalname'])),'save_name':path[_0xe3ae('0x5a')](_0x5149c0['file'][_0xe3ae('0x5e')],path['extname'](_0x5149c0['file']['filename'])),'original_format':path['extname'](_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5c')])[_0xe3ae('0x5f')](0x1),'converted_format':_0xe3ae('0x60')};var _0x511c2a=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x61'),_0x5149c0[_0xe3ae('0x5b')][_0xe3ae('0x5e')]);var _0x224b42=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util['format']('%s.%s',path[_0xe3ae('0x5a')](_0x5149c0['file']['filename'],path[_0xe3ae('0x5d')](_0x5149c0['file'][_0xe3ae('0x5e')])),_0x5f1f1e[_0xe3ae('0x4f')]));logger[_0xe3ae('0x62')](_0xe3ae('0x63'),_0x511c2a);logger[_0xe3ae('0x62')]('Sound\x20upload\x20destination:\x20%s',_0x224b42);try{fs['chmodSync'](_0x511c2a,parseInt(_0xe3ae('0x64'),0x8));var _0x564c11=sox['transcode'](_0x511c2a,_0x224b42,{'sampleRate':0x1f40,'format':_0xe3ae('0x60'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x564c11['on'](_0xe3ae('0x2b'),function(_0x507e10){fs[_0xe3ae('0x65')](_0x511c2a);_0x4776a9[_0xe3ae('0x1e')](0x1f4)[_0xe3ae('0x2e')](_0x507e10);});_0x564c11['on'](_0xe3ae('0x66'),function(_0x4552f0){_0x5f1f1e[_0xe3ae('0x67')]=isNaN(_0x4552f0[_0xe3ae('0x68')])?null:_0x4552f0[_0xe3ae('0x68')]*0x3e8;_0x5f1f1e[_0xe3ae('0x69')]=isNaN(_0x4552f0[_0xe3ae('0x6a')])?null:_0x4552f0['sampleCount'];_0x5f1f1e[_0xe3ae('0x6b')]=isNaN(_0x4552f0[_0xe3ae('0x6c')])?null:_0x4552f0[_0xe3ae('0x6c')];_0x5f1f1e[_0xe3ae('0x6d')]=isNaN(_0x4552f0['bitRate'])?null:_0x4552f0[_0xe3ae('0x6e')];_0x5f1f1e['original_sampleRate']=isNaN(_0x4552f0[_0xe3ae('0x6f')])?null:_0x4552f0[_0xe3ae('0x6f')];});_0x564c11['on']('dest',function(_0x39daca){_0x5f1f1e[_0xe3ae('0x70')]=isNaN(_0x39daca[_0xe3ae('0x68')])?null:_0x39daca['duration']*0x3e8;_0x5f1f1e[_0xe3ae('0x71')]=isNaN(_0x39daca['sampleCount'])?null:_0x39daca[_0xe3ae('0x6a')];_0x5f1f1e[_0xe3ae('0x72')]=isNaN(_0x39daca[_0xe3ae('0x6c')])?null:_0x39daca['channelCount'];_0x5f1f1e[_0xe3ae('0x73')]=isNaN(_0x39daca['bitRate'])?null:_0x39daca[_0xe3ae('0x6e')];_0x5f1f1e['converted_sampleRate']=isNaN(_0x39daca[_0xe3ae('0x6f')])?null:_0x39daca['sampleRate'];});_0x564c11['on'](_0xe3ae('0x1d'),function(){fs[_0xe3ae('0x74')](_0x224b42,parseInt(_0xe3ae('0x64'),0x8));return db[_0xe3ae('0x31')][_0xe3ae('0x75')](_0x5f1f1e)['then'](function(_0x483846){var _0x1e7202={'role':_0x5149c0[_0xe3ae('0x76')][_0xe3ae('0x77')],'userProfileId':_0x5149c0[_0xe3ae('0x76')][_0xe3ae('0x78')]};if(!_0x1e7202)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e7202[_0xe3ae('0x77')]===_0xe3ae('0x79')){var _0x30b074=_0x483846[_0xe3ae('0x7a')]({'plain':!![]});return db[_0xe3ae('0x7b')][_0xe3ae('0x4c')]({'where':{'name':_0xe3ae('0x26'),'userProfileId':_0x1e7202[_0xe3ae('0x78')]},'raw':!![]})['then'](function(_0x10f3cc){if(_0x10f3cc&&_0x10f3cc[_0xe3ae('0x7c')]===0x0){return db[_0xe3ae('0x27')][_0xe3ae('0x75')]({'name':_0x30b074[_0xe3ae('0x2d')],'resourceId':_0x30b074['id'],'type':_0x10f3cc[_0xe3ae('0x2d')],'sectionId':_0x10f3cc['id']},{})[_0xe3ae('0x29')](function(){return _0x483846;});}else{return _0x483846;}})[_0xe3ae('0x4d')](function(_0x456f15){logger[_0xe3ae('0x2b')](_0xe3ae('0x7d'),_0x456f15);throw _0x456f15;});}return _0x483846;})[_0xe3ae('0x29')](respondWithResult(_0x4776a9,null))[_0xe3ae('0x4d')](handleError(_0x4776a9,null));});_0x564c11[_0xe3ae('0x7e')]();}catch(_0x3ddac2){_0x4776a9['status'](0x1f4)[_0xe3ae('0x2e')](_0x3ddac2);}};exports[_0xe3ae('0x7f')]=function(_0xa62d64,_0x417361,_0x5a45ba){return db['Sound'][_0xe3ae('0x4c')]({'where':{'id':_0xa62d64[_0xe3ae('0x49')]['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0x417361,null))[_0xe3ae('0x29')](saveUpdates(_['pick'](_0xa62d64['body'],['name','description']),null))[_0xe3ae('0x29')](respondWithResult(_0x417361,null))[_0xe3ae('0x4d')](handleError(_0x417361,null));};exports['delete']=function(_0x2bf7e5,_0x7c4828,_0x591a70){return db[_0xe3ae('0x31')][_0xe3ae('0x4c')]({'where':{'id':_0x2bf7e5[_0xe3ae('0x49')]['id']}})[_0xe3ae('0x29')](function(_0x5e4ae2){if(_0x5e4ae2){return _0x5e4ae2[_0xe3ae('0x28')]();}})[_0xe3ae('0x29')](function(_0x335274){var _0x5800ab=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x61'),util[_0xe3ae('0x58')]('%s.%s',_0x335274[_0xe3ae('0x4e')],_0x335274[_0xe3ae('0x80')]));var _0x679081=path[_0xe3ae('0x51')](config[_0xe3ae('0x52')],_0xe3ae('0x53'),util[_0xe3ae('0x58')](_0xe3ae('0x59'),_0x335274[_0xe3ae('0x4e')],_0x335274[_0xe3ae('0x4f')]));fs[_0xe3ae('0x65')](_0x5800ab);fs['unlinkSync'](_0x679081);return _0x335274;})[_0xe3ae('0x29')](function(_0x5c3df1){if(_0x5c3df1){return _0x7c4828[_0xe3ae('0x1e')](0xcc)[_0xe3ae('0x1d')]();}})[_0xe3ae('0x29')](handleEntityNotFound(_0x7c4828,null))[_0xe3ae('0x4d')](handleError(_0x7c4828,null));};
\ No newline at end of file
index aff21d4..f4a1da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc675=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util'];(function(_0x3c7d59,_0x1036bd){var _0x5cbd93=function(_0x406190){while(--_0x406190){_0x3c7d59['push'](_0x3c7d59['shift']());}};_0x5cbd93(++_0x1036bd);}(_0xc675,0x186));var _0x5c67=function(_0x2cf858,_0x1a45c7){_0x2cf858=_0x2cf858-0x0;var _0x3de8d6=_0xc675[_0x2cf858];return _0x3de8d6;};'use strict';var _=require(_0x5c67('0x0'));var util=require(_0x5c67('0x1'));var logger=require(_0x5c67('0x2'))(_0x5c67('0x3'));var moment=require('moment');var BPromise=require(_0x5c67('0x4'));var rp=require(_0x5c67('0x5'));var fs=require('fs');var path=require(_0x5c67('0x6'));var rimraf=require(_0x5c67('0x7'));var config=require(_0x5c67('0x8'));var attributes=require(_0x5c67('0x9'));module[_0x5c67('0xa')]=function(_0xe202ba,_0x1bfb2b){return _0xe202ba[_0x5c67('0xb')](_0x5c67('0xc'),attributes,{'tableName':_0x5c67('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0586=['../../config/logger','api','request-promise','path','./sound.attributes','exports','define','Sound','tools_sounds','util'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x0586,0xa9));var _0x6058=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0586[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x6058('0x0'));var logger=require(_0x6058('0x1'))(_0x6058('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6058('0x3'));var fs=require('fs');var path=require(_0x6058('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6058('0x5'));module[_0x6058('0x6')]=function(_0x5b9b98,_0x49c0ae){return _0x5b9b98[_0x6058('0x7')](_0x6058('0x8'),attributes,{'tableName':_0x6058('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f2dbc6..91926a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac78=['request\x20sent','debug','error','code','message','result','ShowSound','Sound','find','options','raw','attributes','include','model','map','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Sound,\x20%s,\x20%s'];(function(_0x51d45c,_0xeb7306){var _0x494f15=function(_0x258f41){while(--_0x258f41){_0x51d45c['push'](_0x51d45c['shift']());}};_0x494f15(++_0xeb7306);}(_0xac78,0x19c));var _0x8ac7=function(_0x384718,_0x10dc17){_0x384718=_0x384718-0x0;var _0x344fc8=_0xac78[_0x384718];return _0x344fc8;};'use strict';var _=require(_0x8ac7('0x0'));var util=require(_0x8ac7('0x1'));var moment=require(_0x8ac7('0x2'));var BPromise=require(_0x8ac7('0x3'));var rs=require(_0x8ac7('0x4'));var fs=require('fs');var Redis=require(_0x8ac7('0x5'));var db=require(_0x8ac7('0x6'))['db'];var utils=require(_0x8ac7('0x7'));var logger=require(_0x8ac7('0x8'))(_0x8ac7('0x9'));var config=require(_0x8ac7('0xa'));var jayson=require(_0x8ac7('0xb'));var client=jayson[_0x8ac7('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x482d04,_0x2318bb,_0x1bbe0d){return new BPromise(function(_0x2647cd,_0x310fc0){return client[_0x8ac7('0xd')](_0x482d04,_0x1bbe0d)[_0x8ac7('0xe')](function(_0x2efc9f){logger[_0x8ac7('0xf')](_0x8ac7('0x10'),_0x2318bb,_0x8ac7('0x11'));logger[_0x8ac7('0x12')]('Sound,\x20%s,\x20%s,\x20%s',_0x2318bb,_0x8ac7('0x11'),JSON['stringify'](_0x2efc9f));if(_0x2efc9f[_0x8ac7('0x13')]){if(_0x2efc9f[_0x8ac7('0x13')][_0x8ac7('0x14')]===0x1f4){logger[_0x8ac7('0x13')]('Sound,\x20%s,\x20%s',_0x2318bb,_0x2efc9f[_0x8ac7('0x13')][_0x8ac7('0x15')]);return _0x310fc0(_0x2efc9f['error'][_0x8ac7('0x15')]);}logger[_0x8ac7('0x13')](_0x8ac7('0x10'),_0x2318bb,_0x2efc9f[_0x8ac7('0x13')]['message']);return _0x2647cd(_0x2efc9f[_0x8ac7('0x13')][_0x8ac7('0x15')]);}else{logger[_0x8ac7('0xf')](_0x8ac7('0x10'),_0x2318bb,_0x8ac7('0x11'));_0x2647cd(_0x2efc9f[_0x8ac7('0x16')]['message']);}})['catch'](function(_0x12c627){logger[_0x8ac7('0x13')]('Sound,\x20%s,\x20%s',_0x2318bb,_0x12c627);_0x310fc0(_0x12c627);});});}exports[_0x8ac7('0x17')]=function(_0x258b88){var _0x3e2eb8=this;return new Promise(function(_0x4c5d75,_0x267439){return db[_0x8ac7('0x18')][_0x8ac7('0x19')]({'raw':_0x258b88[_0x8ac7('0x1a')]?_0x258b88['options'][_0x8ac7('0x1b')]===undefined?!![]:![]:!![],'where':_0x258b88[_0x8ac7('0x1a')]?_0x258b88[_0x8ac7('0x1a')]['where']||null:null,'attributes':_0x258b88[_0x8ac7('0x1a')]?_0x258b88[_0x8ac7('0x1a')][_0x8ac7('0x1c')]||null:null,'include':_0x258b88['options']?_0x258b88[_0x8ac7('0x1a')][_0x8ac7('0x1d')]?_['map'](_0x258b88[_0x8ac7('0x1a')]['include'],function(_0xc2eb76){return{'model':db[_0xc2eb76[_0x8ac7('0x1e')]],'as':_0xc2eb76['as'],'attributes':_0xc2eb76[_0x8ac7('0x1c')],'include':_0xc2eb76[_0x8ac7('0x1d')]?_[_0x8ac7('0x1f')](_0xc2eb76['include'],function(_0x345310){return{'model':db[_0x345310[_0x8ac7('0x1e')]],'as':_0x345310['as'],'attributes':_0x345310['attributes'],'include':_0x345310[_0x8ac7('0x1d')]?_[_0x8ac7('0x1f')](_0x345310[_0x8ac7('0x1d')],function(_0x26d951){return{'model':db[_0x26d951[_0x8ac7('0x1e')]],'as':_0x26d951['as'],'attributes':_0x26d951[_0x8ac7('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8ac7('0xe')](function(_0x27a7fb){logger[_0x8ac7('0xf')](_0x8ac7('0x17'),_0x258b88);logger[_0x8ac7('0x12')](_0x8ac7('0x17'),_0x258b88,JSON[_0x8ac7('0x20')](_0x27a7fb));_0x4c5d75(_0x27a7fb);})['catch'](function(_0x530edc){logger['error'](_0x8ac7('0x17'),_0x530edc['message'],_0x258b88);_0x267439(_0x3e2eb8[_0x8ac7('0x13')](0x1f4,_0x530edc['message']));});});};
\ No newline at end of file
+var _0xe600=['ShowSound','find','options','where','attributes','map','include','model','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0x8e4279,_0x57d83e){var _0x14950e=function(_0x505e75){while(--_0x505e75){_0x8e4279['push'](_0x8e4279['shift']());}};_0x14950e(++_0x57d83e);}(_0xe600,0x9e));var _0x0e60=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe600[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0e60('0x0'));var util=require(_0x0e60('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e60('0x2'));var db=require(_0x0e60('0x3'))['db'];var utils=require(_0x0e60('0x4'));var logger=require(_0x0e60('0x5'))(_0x0e60('0x6'));var config=require(_0x0e60('0x7'));var jayson=require(_0x0e60('0x8'));var client=jayson['client'][_0x0e60('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3559,_0x7d92ab,_0x399830){return new BPromise(function(_0x10eee2,_0x40883d){return client[_0x0e60('0xa')](_0x5b3559,_0x399830)[_0x0e60('0xb')](function(_0x2d401d){logger[_0x0e60('0xc')](_0x0e60('0xd'),_0x7d92ab,'request\x20sent');logger[_0x0e60('0xe')](_0x0e60('0xf'),_0x7d92ab,_0x0e60('0x10'),JSON[_0x0e60('0x11')](_0x2d401d));if(_0x2d401d[_0x0e60('0x12')]){if(_0x2d401d[_0x0e60('0x12')]['code']===0x1f4){logger[_0x0e60('0x12')]('Sound,\x20%s,\x20%s',_0x7d92ab,_0x2d401d['error'][_0x0e60('0x13')]);return _0x40883d(_0x2d401d[_0x0e60('0x12')]['message']);}logger[_0x0e60('0x12')](_0x0e60('0xd'),_0x7d92ab,_0x2d401d[_0x0e60('0x12')]['message']);return _0x10eee2(_0x2d401d[_0x0e60('0x12')][_0x0e60('0x13')]);}else{logger[_0x0e60('0xc')](_0x0e60('0xd'),_0x7d92ab,_0x0e60('0x10'));_0x10eee2(_0x2d401d[_0x0e60('0x14')][_0x0e60('0x13')]);}})[_0x0e60('0x15')](function(_0x5e2ab3){logger[_0x0e60('0x12')](_0x0e60('0xd'),_0x7d92ab,_0x5e2ab3);_0x40883d(_0x5e2ab3);});});}exports[_0x0e60('0x16')]=function(_0x2a84b5){var _0x3eb365=this;return new Promise(function(_0x3e1bab,_0x3185e1){return db['Sound'][_0x0e60('0x17')]({'raw':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5['options']['raw']===undefined?!![]:![]:!![],'where':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')][_0x0e60('0x19')]||null:null,'attributes':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')][_0x0e60('0x1a')]||null:null,'include':_0x2a84b5[_0x0e60('0x18')]?_0x2a84b5[_0x0e60('0x18')]['include']?_[_0x0e60('0x1b')](_0x2a84b5['options'][_0x0e60('0x1c')],function(_0x3a56fe){return{'model':db[_0x3a56fe[_0x0e60('0x1d')]],'as':_0x3a56fe['as'],'attributes':_0x3a56fe[_0x0e60('0x1a')],'include':_0x3a56fe[_0x0e60('0x1c')]?_[_0x0e60('0x1b')](_0x3a56fe[_0x0e60('0x1c')],function(_0x40168c){return{'model':db[_0x40168c['model']],'as':_0x40168c['as'],'attributes':_0x40168c[_0x0e60('0x1a')],'include':_0x40168c[_0x0e60('0x1c')]?_[_0x0e60('0x1b')](_0x40168c[_0x0e60('0x1c')],function(_0x35a5c0){return{'model':db[_0x35a5c0[_0x0e60('0x1d')]],'as':_0x35a5c0['as'],'attributes':_0x35a5c0[_0x0e60('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0e60('0xb')](function(_0x5261df){logger[_0x0e60('0xc')]('ShowSound',_0x2a84b5);logger[_0x0e60('0xe')](_0x0e60('0x16'),_0x2a84b5,JSON['stringify'](_0x5261df));_0x3e1bab(_0x5261df);})[_0x0e60('0x15')](function(_0x4d0b6d){logger['error'](_0x0e60('0x16'),_0x4d0b6d['message'],_0x2a84b5);_0x3185e1(_0x3eb365[_0x0e60('0x12')](0x1f4,_0x4d0b6d[_0x0e60('0x13')]));});});};
\ No newline at end of file
index b155a63..6e2b33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./squareMessage.controller','get','index','isAuthenticated','show','post','create','put','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2a9ef7,_0x20a4b0){var _0x3bb186=function(_0x23faaa){while(--_0x23faaa){_0x2a9ef7['push'](_0x2a9ef7['shift']());}};_0x3bb186(++_0x20a4b0);}(_0xb10b,0x12a));var _0xbb10=function(_0x258150,_0x3c6757){_0x258150=_0x258150-0x0;var _0x26be3b=_0xb10b[_0x258150];return _0x26be3b;};'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('0xd')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['update']);router['delete'](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy'];(function(_0x30b992,_0x2bbbe9){var _0x421407=function(_0x5406d5){while(--_0x5406d5){_0x30b992['push'](_0x30b992['shift']());}};_0x421407(++_0x2bbbe9);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./squareMessage.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0xb')]('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router['put']('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0x9'),auth['isAuthenticated'](),controller[_0x65f6('0xf')]);module['exports']=router;
\ No newline at end of file
index 8ee5f32..e8f0ae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ede=['exports','STRING','TEXT','medium','ENUM','out','sequelize'];(function(_0x28d0b5,_0xc9feb5){var _0x3f8df0=function(_0x17916c){while(--_0x17916c){_0x28d0b5['push'](_0x28d0b5['shift']());}};_0x3f8df0(++_0xc9feb5);}(_0x9ede,0x102));var _0xe9ed=function(_0x1318f5,_0x568ff5){_0x1318f5=_0x1318f5-0x0;var _0xafaa26=_0x9ede[_0x1318f5];return _0xafaa26;};'use strict';var Sequelize=require(_0xe9ed('0x0'));module[_0xe9ed('0x1')]={'uniqueid':{'type':Sequelize[_0xe9ed('0x2')]},'body':{'type':Sequelize[_0xe9ed('0x3')](_0xe9ed('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0xe9ed('0x5')]('in',_0xe9ed('0x6')),'defaultValue':_0xe9ed('0x6'),'allowNull':![]},'providerName':{'type':Sequelize[_0xe9ed('0x2')]},'providerResponse':{'type':Sequelize[_0xe9ed('0x3')]}};
\ No newline at end of file
+var _0x9c2a=['out','STRING','medium'];(function(_0x1958b4,_0x54472a){var _0x1c6d76=function(_0x304321){while(--_0x304321){_0x1958b4['push'](_0x1958b4['shift']());}};_0x1c6d76(++_0x54472a);}(_0x9c2a,0x85));var _0xa9c2=function(_0xb98d8d,_0x481423){_0xb98d8d=_0xb98d8d-0x0;var _0x489b15=_0x9c2a[_0xb98d8d];return _0x489b15;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xa9c2('0x0')]},'body':{'type':Sequelize['TEXT'](_0xa9c2('0x1')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0xa9c2('0x2')),'defaultValue':_0xa9c2('0x2'),'allowNull':![]},'providerName':{'type':Sequelize[_0xa9c2('0x0')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 87baabc..a35edb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e9=['include','findAll','rows','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','ejs','fs-extra','squel','crypto','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','status','end','json','offset','undefined','limit','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','count','includeAll'];(function(_0x53e55c,_0x40898b){var _0x451802=function(_0x83076b){while(--_0x83076b){_0x53e55c['push'](_0x53e55c['shift']());}};_0x451802(++_0x40898b);}(_0x70e9,0x1d2));var _0x970e=function(_0x2e13cc,_0x3feda2){_0x2e13cc=_0x2e13cc-0x0;var _0x2e88d0=_0x70e9[_0x2e13cc];return _0x2e88d0;};'use strict';var emlformat=require(_0x970e('0x0'));var rimraf=require(_0x970e('0x1'));var zipdir=require(_0x970e('0x2'));var jsonpatch=require(_0x970e('0x3'));var rp=require(_0x970e('0x4'));var moment=require(_0x970e('0x5'));var BPromise=require(_0x970e('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x970e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x970e('0x8'));var fs=require('fs');var fs_extra=require(_0x970e('0x9'));var _=require('lodash');var squel=require(_0x970e('0xa'));var crypto=require(_0x970e('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x970e('0xc'));var querystring=require(_0x970e('0xd'));var Papa=require(_0x970e('0xe'));var Redis=require(_0x970e('0xf'));var authService=require(_0x970e('0x10'));var qs=require(_0x970e('0x11'));var as=require(_0x970e('0x12'));var hardwareService=require(_0x970e('0x13'));var logger=require('../../config/logger')(_0x970e('0x14'));var utils=require(_0x970e('0x15'));var config=require(_0x970e('0x16'));var licenseUtil=require(_0x970e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x195751,_0x35fc33){_0x35fc33=_0x35fc33||0xcc;return function(_0x201508){if(_0x201508){return _0x195751['sendStatus'](_0x35fc33);}return _0x195751[_0x970e('0x18')](_0x35fc33)[_0x970e('0x19')]();};}function respondWithResult(_0x3bfd6e,_0xc0988d){_0xc0988d=_0xc0988d||0xc8;return function(_0x4a03a0){if(_0x4a03a0){return _0x3bfd6e[_0x970e('0x18')](_0xc0988d)[_0x970e('0x1a')](_0x4a03a0);}};}function respondWithFilteredResult(_0x1cd2fa,_0x49cefb){return function(_0x27fddb){if(_0x27fddb){var _0x1ecf4e=typeof _0x49cefb[_0x970e('0x1b')]===_0x970e('0x1c')&&typeof _0x49cefb[_0x970e('0x1d')]===_0x970e('0x1c');var _0x507510=_0x27fddb['count'];var _0x46e75c=_0x1ecf4e?0x0:_0x49cefb[_0x970e('0x1b')];var _0x595eb2=_0x1ecf4e?_0x27fddb['count']:_0x49cefb[_0x970e('0x1b')]+_0x49cefb['limit'];var _0xad9ba4;if(_0x595eb2>=_0x507510){_0x595eb2=_0x507510;_0xad9ba4=0xc8;}else{_0xad9ba4=0xce;}_0x1cd2fa['status'](_0xad9ba4);return _0x1cd2fa[_0x970e('0x1e')]('Content-Range',_0x46e75c+'-'+_0x595eb2+'/'+_0x507510)[_0x970e('0x1a')](_0x27fddb);}return null;};}function patchUpdates(_0x264466){return function(_0x5c04f1){try{jsonpatch[_0x970e('0x1f')](_0x5c04f1,_0x264466,!![]);}catch(_0x135354){return BPromise[_0x970e('0x20')](_0x135354);}return _0x5c04f1['save']();};}function saveUpdates(_0x5c3342,_0x439de9){return function(_0x3f0c7d){if(_0x3f0c7d){return _0x3f0c7d[_0x970e('0x21')](_0x5c3342)[_0x970e('0x22')](function(_0x5dc352){return _0x5dc352;});}return null;};}function removeEntity(_0x1225fb,_0x290b92){return function(_0x5191ae){if(_0x5191ae){return _0x5191ae[_0x970e('0x23')]()['then'](function(){_0x1225fb[_0x970e('0x18')](0xcc)[_0x970e('0x19')]();});}};}function handleEntityNotFound(_0x471ce8,_0x32df6d){return function(_0x3d2941){if(!_0x3d2941){_0x471ce8[_0x970e('0x24')](0x194);}return _0x3d2941;};}function handleError(_0x47a59e,_0x3d6e7f){_0x3d6e7f=_0x3d6e7f||0x1f4;return function(_0x3a31fc){logger[_0x970e('0x25')](_0x3a31fc[_0x970e('0x26')]);if(_0x3a31fc[_0x970e('0x27')]){delete _0x3a31fc[_0x970e('0x27')];}_0x47a59e[_0x970e('0x18')](_0x3d6e7f)['send'](_0x3a31fc);};}exports[_0x970e('0x28')]=function(_0x36da85,_0x5a05c5){var _0x1f8b46={},_0x2ab78f={},_0x448200={'count':0x0,'rows':[]};var _0x373222=_[_0x970e('0x29')](db[_0x970e('0x2a')][_0x970e('0x2b')],function(_0xeb46bf){return{'name':_0xeb46bf[_0x970e('0x2c')],'type':_0xeb46bf[_0x970e('0x2d')][_0x970e('0x2e')]};});_0x2ab78f[_0x970e('0x2f')]=_[_0x970e('0x29')](_0x373222,_0x970e('0x27'));_0x2ab78f[_0x970e('0x30')]=_[_0x970e('0x31')](_0x36da85[_0x970e('0x30')]);_0x2ab78f['filters']=_[_0x970e('0x32')](_0x2ab78f[_0x970e('0x2f')],_0x2ab78f[_0x970e('0x30')]);_0x1f8b46[_0x970e('0x33')]=_['intersection'](_0x2ab78f[_0x970e('0x2f')],qs['fields'](_0x36da85['query'][_0x970e('0x34')]));_0x1f8b46[_0x970e('0x33')]=_0x1f8b46['attributes']['length']?_0x1f8b46['attributes']:_0x2ab78f[_0x970e('0x2f')];if(!_0x36da85[_0x970e('0x30')][_0x970e('0x35')](_0x970e('0x36'))){_0x1f8b46[_0x970e('0x1d')]=qs[_0x970e('0x1d')](_0x36da85[_0x970e('0x30')]['limit']);_0x1f8b46[_0x970e('0x1b')]=qs[_0x970e('0x1b')](_0x36da85[_0x970e('0x30')][_0x970e('0x1b')]);}_0x1f8b46[_0x970e('0x37')]=qs[_0x970e('0x38')](_0x36da85[_0x970e('0x30')][_0x970e('0x38')]);_0x1f8b46['where']=qs[_0x970e('0x39')](_[_0x970e('0x3a')](_0x36da85[_0x970e('0x30')],_0x2ab78f['filters']),_0x373222);if(_0x36da85[_0x970e('0x30')][_0x970e('0x3b')]){_0x1f8b46[_0x970e('0x3c')]=_[_0x970e('0x3d')](_0x1f8b46[_0x970e('0x3c')],{'$or':_['map'](_0x373222,function(_0x1b20ed){if(_0x1b20ed[_0x970e('0x2d')]!==_0x970e('0x3e')){var _0x296266={};_0x296266[_0x1b20ed['name']]={'$like':'%'+_0x36da85[_0x970e('0x30')]['filter']+'%'};return _0x296266;}})});}_0x1f8b46=_['merge']({},_0x1f8b46,_0x36da85[_0x970e('0x3f')]);var _0x5f38a5={'where':_0x1f8b46['where']};return db[_0x970e('0x2a')][_0x970e('0x40')](_0x5f38a5)[_0x970e('0x22')](function(_0x146c04){_0x448200['count']=_0x146c04;if(_0x36da85[_0x970e('0x30')][_0x970e('0x41')]){_0x1f8b46[_0x970e('0x42')]=[{'all':!![]}];}return db[_0x970e('0x2a')][_0x970e('0x43')](_0x1f8b46);})['then'](function(_0x222e1b){_0x448200[_0x970e('0x44')]=_0x222e1b;return _0x448200;})[_0x970e('0x22')](respondWithFilteredResult(_0x5a05c5,_0x1f8b46))[_0x970e('0x45')](handleError(_0x5a05c5,null));};exports[_0x970e('0x46')]=function(_0x6d14ba,_0x5ee189){var _0x11ee46={'raw':!![],'where':{'id':_0x6d14ba[_0x970e('0x47')]['id']}},_0x5a5f8a={};_0x5a5f8a['model']=_[_0x970e('0x31')](db['SquareMessage']['rawAttributes']);_0x5a5f8a[_0x970e('0x30')]=_['keys'](_0x6d14ba[_0x970e('0x30')]);_0x5a5f8a[_0x970e('0x39')]=_[_0x970e('0x32')](_0x5a5f8a[_0x970e('0x2f')],_0x5a5f8a[_0x970e('0x30')]);_0x11ee46[_0x970e('0x33')]=_[_0x970e('0x32')](_0x5a5f8a[_0x970e('0x2f')],qs[_0x970e('0x34')](_0x6d14ba[_0x970e('0x30')][_0x970e('0x34')]));_0x11ee46['attributes']=_0x11ee46[_0x970e('0x33')][_0x970e('0x48')]?_0x11ee46[_0x970e('0x33')]:_0x5a5f8a['model'];if(_0x6d14ba['query'][_0x970e('0x41')]){_0x11ee46[_0x970e('0x42')]=[{'all':!![]}];}_0x11ee46=_['merge']({},_0x11ee46,_0x6d14ba[_0x970e('0x3f')]);return db[_0x970e('0x2a')][_0x970e('0x49')](_0x11ee46)[_0x970e('0x22')](handleEntityNotFound(_0x5ee189,null))[_0x970e('0x22')](respondWithResult(_0x5ee189,null))[_0x970e('0x45')](handleError(_0x5ee189,null));};exports[_0x970e('0x4a')]=function(_0x499089,_0x314ed6){return db['SquareMessage'][_0x970e('0x4a')](_0x499089[_0x970e('0x4b')],{})[_0x970e('0x22')](respondWithResult(_0x314ed6,0xc9))[_0x970e('0x45')](handleError(_0x314ed6,null));};exports[_0x970e('0x21')]=function(_0x3bba76,_0x32078c){if(_0x3bba76[_0x970e('0x4b')]['id']){delete _0x3bba76[_0x970e('0x4b')]['id'];}return db[_0x970e('0x2a')][_0x970e('0x49')]({'where':{'id':_0x3bba76[_0x970e('0x47')]['id']}})[_0x970e('0x22')](handleEntityNotFound(_0x32078c,null))[_0x970e('0x22')](saveUpdates(_0x3bba76[_0x970e('0x4b')],null))[_0x970e('0x22')](respondWithResult(_0x32078c,null))['catch'](handleError(_0x32078c,null));};exports[_0x970e('0x23')]=function(_0x16d78b,_0x5f1f6a){return db[_0x970e('0x2a')][_0x970e('0x49')]({'where':{'id':_0x16d78b[_0x970e('0x47')]['id']}})[_0x970e('0x22')](handleEntityNotFound(_0x5f1f6a,null))[_0x970e('0x22')](removeEntity(_0x5f1f6a,null))[_0x970e('0x45')](handleError(_0x5f1f6a,null));};
\ No newline at end of file
+var _0x22ea=['name','send','index','map','SquareMessage','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','show','includeAll','find','create','body','destroy','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x22ea,0xb3));var _0xa22e=function(_0x2c0275,_0x7a6b6d){_0x2c0275=_0x2c0275-0x0;var _0x352cc9=_0x22ea[_0x2c0275];return _0x352cc9;};'use strict';var emlformat=require(_0xa22e('0x0'));var rimraf=require(_0xa22e('0x1'));var zipdir=require(_0xa22e('0x2'));var jsonpatch=require(_0xa22e('0x3'));var rp=require('request-promise');var moment=require(_0xa22e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa22e('0x5'));var util=require(_0xa22e('0x6'));var path=require(_0xa22e('0x7'));var sox=require(_0xa22e('0x8'));var csv=require(_0xa22e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa22e('0xa'));var squel=require(_0xa22e('0xb'));var crypto=require(_0xa22e('0xc'));var jsforce=require(_0xa22e('0xd'));var deskjs=require(_0xa22e('0xe'));var toCsv=require(_0xa22e('0x9'));var querystring=require(_0xa22e('0xf'));var Papa=require(_0xa22e('0x10'));var Redis=require(_0xa22e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa22e('0x12'));var as=require(_0xa22e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa22e('0x14'))(_0xa22e('0x15'));var utils=require(_0xa22e('0x16'));var config=require(_0xa22e('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16a29b,_0x2a3eea){_0x2a3eea=_0x2a3eea||0xcc;return function(_0x19e3a2){if(_0x19e3a2){return _0x16a29b[_0xa22e('0x18')](_0x2a3eea);}return _0x16a29b[_0xa22e('0x19')](_0x2a3eea)[_0xa22e('0x1a')]();};}function respondWithResult(_0x36d769,_0x365ce6){_0x365ce6=_0x365ce6||0xc8;return function(_0x2cd615){if(_0x2cd615){return _0x36d769[_0xa22e('0x19')](_0x365ce6)[_0xa22e('0x1b')](_0x2cd615);}};}function respondWithFilteredResult(_0x1021cb,_0x2b59a0){return function(_0x433cf0){if(_0x433cf0){var _0xff49da=typeof _0x2b59a0[_0xa22e('0x1c')]===_0xa22e('0x1d')&&typeof _0x2b59a0[_0xa22e('0x1e')]===_0xa22e('0x1d');var _0x6de3ed=_0x433cf0[_0xa22e('0x1f')];var _0x28eef5=_0xff49da?0x0:_0x2b59a0[_0xa22e('0x1c')];var _0x3ea0df=_0xff49da?_0x433cf0[_0xa22e('0x1f')]:_0x2b59a0['offset']+_0x2b59a0[_0xa22e('0x1e')];var _0x39a0bb;if(_0x3ea0df>=_0x6de3ed){_0x3ea0df=_0x6de3ed;_0x39a0bb=0xc8;}else{_0x39a0bb=0xce;}_0x1021cb[_0xa22e('0x19')](_0x39a0bb);return _0x1021cb[_0xa22e('0x20')](_0xa22e('0x21'),_0x28eef5+'-'+_0x3ea0df+'/'+_0x6de3ed)['json'](_0x433cf0);}return null;};}function patchUpdates(_0xc1022e){return function(_0x3b1a9f){try{jsonpatch[_0xa22e('0x22')](_0x3b1a9f,_0xc1022e,!![]);}catch(_0x5a3790){return BPromise[_0xa22e('0x23')](_0x5a3790);}return _0x3b1a9f[_0xa22e('0x24')]();};}function saveUpdates(_0xcccaca,_0x283318){return function(_0x301b30){if(_0x301b30){return _0x301b30[_0xa22e('0x25')](_0xcccaca)['then'](function(_0x5c5717){return _0x5c5717;});}return null;};}function removeEntity(_0x10ed24,_0x17d8d7){return function(_0x364cf0){if(_0x364cf0){return _0x364cf0['destroy']()[_0xa22e('0x26')](function(){_0x10ed24[_0xa22e('0x19')](0xcc)[_0xa22e('0x1a')]();});}};}function handleEntityNotFound(_0x1a7cd8,_0x150f0a){return function(_0x252d24){if(!_0x252d24){_0x1a7cd8['sendStatus'](0x194);}return _0x252d24;};}function handleError(_0x4c34d4,_0x2461da){_0x2461da=_0x2461da||0x1f4;return function(_0x5bfa2e){logger[_0xa22e('0x27')](_0x5bfa2e['stack']);if(_0x5bfa2e[_0xa22e('0x28')]){delete _0x5bfa2e[_0xa22e('0x28')];}_0x4c34d4[_0xa22e('0x19')](_0x2461da)[_0xa22e('0x29')](_0x5bfa2e);};}exports[_0xa22e('0x2a')]=function(_0x49298f,_0x5d7db7){var _0x4251e7={},_0x46124b={},_0x2319bc={'count':0x0,'rows':[]};var _0xcfc075=_[_0xa22e('0x2b')](db[_0xa22e('0x2c')][_0xa22e('0x2d')],function(_0x26d421){return{'name':_0x26d421['fieldName'],'type':_0x26d421[_0xa22e('0x2e')]['key']};});_0x46124b[_0xa22e('0x2f')]=_['map'](_0xcfc075,_0xa22e('0x28'));_0x46124b[_0xa22e('0x30')]=_[_0xa22e('0x31')](_0x49298f[_0xa22e('0x30')]);_0x46124b[_0xa22e('0x32')]=_['intersection'](_0x46124b[_0xa22e('0x2f')],_0x46124b[_0xa22e('0x30')]);_0x4251e7[_0xa22e('0x33')]=_[_0xa22e('0x34')](_0x46124b[_0xa22e('0x2f')],qs[_0xa22e('0x35')](_0x49298f[_0xa22e('0x30')][_0xa22e('0x35')]));_0x4251e7['attributes']=_0x4251e7[_0xa22e('0x33')][_0xa22e('0x36')]?_0x4251e7[_0xa22e('0x33')]:_0x46124b['model'];if(!_0x49298f[_0xa22e('0x30')][_0xa22e('0x37')](_0xa22e('0x38'))){_0x4251e7[_0xa22e('0x1e')]=qs['limit'](_0x49298f[_0xa22e('0x30')][_0xa22e('0x1e')]);_0x4251e7[_0xa22e('0x1c')]=qs['offset'](_0x49298f['query'][_0xa22e('0x1c')]);}_0x4251e7['order']=qs['sort'](_0x49298f[_0xa22e('0x30')][_0xa22e('0x39')]);_0x4251e7[_0xa22e('0x3a')]=qs[_0xa22e('0x32')](_[_0xa22e('0x3b')](_0x49298f['query'],_0x46124b[_0xa22e('0x32')]),_0xcfc075);if(_0x49298f[_0xa22e('0x30')][_0xa22e('0x3c')]){_0x4251e7[_0xa22e('0x3a')]=_['merge'](_0x4251e7[_0xa22e('0x3a')],{'$or':_[_0xa22e('0x2b')](_0xcfc075,function(_0x71db2c){if(_0x71db2c['type']!==_0xa22e('0x3d')){var _0x1bfa32={};_0x1bfa32[_0x71db2c[_0xa22e('0x28')]]={'$like':'%'+_0x49298f[_0xa22e('0x30')][_0xa22e('0x3c')]+'%'};return _0x1bfa32;}})});}_0x4251e7=_[_0xa22e('0x3e')]({},_0x4251e7,_0x49298f[_0xa22e('0x3f')]);var _0x513918={'where':_0x4251e7[_0xa22e('0x3a')]};return db[_0xa22e('0x2c')]['count'](_0x513918)['then'](function(_0x532702){_0x2319bc[_0xa22e('0x1f')]=_0x532702;if(_0x49298f['query']['includeAll']){_0x4251e7[_0xa22e('0x40')]=[{'all':!![]}];}return db[_0xa22e('0x2c')]['findAll'](_0x4251e7);})['then'](function(_0x5af37d){_0x2319bc['rows']=_0x5af37d;return _0x2319bc;})[_0xa22e('0x26')](respondWithFilteredResult(_0x5d7db7,_0x4251e7))['catch'](handleError(_0x5d7db7,null));};exports[_0xa22e('0x41')]=function(_0x841e22,_0x1edaa2){var _0x1b95fa={'raw':!![],'where':{'id':_0x841e22['params']['id']}},_0x9daedc={};_0x9daedc['model']=_['keys'](db['SquareMessage'][_0xa22e('0x2d')]);_0x9daedc[_0xa22e('0x30')]=_[_0xa22e('0x31')](_0x841e22[_0xa22e('0x30')]);_0x9daedc[_0xa22e('0x32')]=_[_0xa22e('0x34')](_0x9daedc[_0xa22e('0x2f')],_0x9daedc[_0xa22e('0x30')]);_0x1b95fa[_0xa22e('0x33')]=_[_0xa22e('0x34')](_0x9daedc[_0xa22e('0x2f')],qs[_0xa22e('0x35')](_0x841e22[_0xa22e('0x30')][_0xa22e('0x35')]));_0x1b95fa[_0xa22e('0x33')]=_0x1b95fa[_0xa22e('0x33')][_0xa22e('0x36')]?_0x1b95fa[_0xa22e('0x33')]:_0x9daedc['model'];if(_0x841e22[_0xa22e('0x30')][_0xa22e('0x42')]){_0x1b95fa[_0xa22e('0x40')]=[{'all':!![]}];}_0x1b95fa=_[_0xa22e('0x3e')]({},_0x1b95fa,_0x841e22[_0xa22e('0x3f')]);return db[_0xa22e('0x2c')][_0xa22e('0x43')](_0x1b95fa)[_0xa22e('0x26')](handleEntityNotFound(_0x1edaa2,null))[_0xa22e('0x26')](respondWithResult(_0x1edaa2,null))['catch'](handleError(_0x1edaa2,null));};exports['create']=function(_0x29931e,_0xf889f0){return db['SquareMessage'][_0xa22e('0x44')](_0x29931e[_0xa22e('0x45')],{})['then'](respondWithResult(_0xf889f0,0xc9))['catch'](handleError(_0xf889f0,null));};exports[_0xa22e('0x25')]=function(_0x5b85e8,_0x1c070a){if(_0x5b85e8[_0xa22e('0x45')]['id']){delete _0x5b85e8[_0xa22e('0x45')]['id'];}return db[_0xa22e('0x2c')][_0xa22e('0x43')]({'where':{'id':_0x5b85e8['params']['id']}})['then'](handleEntityNotFound(_0x1c070a,null))[_0xa22e('0x26')](saveUpdates(_0x5b85e8[_0xa22e('0x45')],null))[_0xa22e('0x26')](respondWithResult(_0x1c070a,null))['catch'](handleError(_0x1c070a,null));};exports[_0xa22e('0x46')]=function(_0x29e302,_0x163c75){return db['SquareMessage']['find']({'where':{'id':_0x29e302[_0xa22e('0x47')]['id']}})['then'](handleEntityNotFound(_0x163c75,null))[_0xa22e('0x26')](removeEntity(_0x163c75,null))[_0xa22e('0x48')](handleError(_0x163c75,null));};
\ No newline at end of file
index 942af78..adf78ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f0e=['./squareMessage.attributes','define','SquareMessage','square_messages','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2824dd,_0x298cd5){var _0x6f277f=function(_0x273dab){while(--_0x273dab){_0x2824dd['push'](_0x2824dd['shift']());}};_0x6f277f(++_0x298cd5);}(_0x1f0e,0x1e4));var _0xe1f0=function(_0x27495e,_0x51082a){_0x27495e=_0x27495e-0x0;var _0x1ee822=_0x1f0e[_0x27495e];return _0x1ee822;};'use strict';var _=require(_0xe1f0('0x0'));var util=require('util');var logger=require(_0xe1f0('0x1'))(_0xe1f0('0x2'));var moment=require(_0xe1f0('0x3'));var BPromise=require(_0xe1f0('0x4'));var rp=require(_0xe1f0('0x5'));var fs=require('fs');var path=require(_0xe1f0('0x6'));var rimraf=require(_0xe1f0('0x7'));var config=require('../../config/environment');var attributes=require(_0xe1f0('0x8'));module['exports']=function(_0x111377,_0x292c99){return _0x111377[_0xe1f0('0x9')](_0xe1f0('0xa'),attributes,{'tableName':_0xe1f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7148=['lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','define','square_messages'];(function(_0x53aa73,_0x3306db){var _0x5afcea=function(_0x234ae8){while(--_0x234ae8){_0x53aa73['push'](_0x53aa73['shift']());}};_0x5afcea(++_0x3306db);}(_0x7148,0x64));var _0x8714=function(_0x2bf352,_0x5bcea2){_0x2bf352=_0x2bf352-0x0;var _0xb35dc=_0x7148[_0x2bf352];return _0xb35dc;};'use strict';var _=require(_0x8714('0x0'));var util=require('util');var logger=require(_0x8714('0x1'))(_0x8714('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8714('0x3'));var fs=require('fs');var path=require(_0x8714('0x4'));var rimraf=require(_0x8714('0x5'));var config=require(_0x8714('0x6'));var attributes=require(_0x8714('0x7'));module['exports']=function(_0x1091f7,_0x23d55c){return _0x1091f7[_0x8714('0x8')]('SquareMessage',attributes,{'tableName':_0x8714('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ded744..0628539 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51bb=['create','body','options','stringify','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateSquareMessage'];(function(_0x421618,_0xb1c182){var _0x3b0fe4=function(_0x574076){while(--_0x574076){_0x421618['push'](_0x421618['shift']());}};_0x3b0fe4(++_0xb1c182);}(_0x51bb,0x163));var _0xb51b=function(_0x3e38aa,_0x2d7dc5){_0x3e38aa=_0x3e38aa-0x0;var _0x59c298=_0x51bb[_0x3e38aa];return _0x59c298;};'use strict';var _=require(_0xb51b('0x0'));var util=require(_0xb51b('0x1'));var moment=require(_0xb51b('0x2'));var BPromise=require(_0xb51b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb51b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb51b('0x5'));var logger=require(_0xb51b('0x6'))(_0xb51b('0x7'));var config=require(_0xb51b('0x8'));var jayson=require(_0xb51b('0x9'));var client=jayson[_0xb51b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc9bb6e,_0x197c69,_0x1d6113){return new BPromise(function(_0x21b50c,_0x243a3a){return client[_0xb51b('0xb')](_0xc9bb6e,_0x1d6113)[_0xb51b('0xc')](function(_0x2b6d1e){logger[_0xb51b('0xd')](_0xb51b('0xe'),_0x197c69,_0xb51b('0xf'));logger[_0xb51b('0x10')](_0xb51b('0x11'),_0x197c69,_0xb51b('0xf'),JSON['stringify'](_0x2b6d1e));if(_0x2b6d1e['error']){if(_0x2b6d1e[_0xb51b('0x12')][_0xb51b('0x13')]===0x1f4){logger[_0xb51b('0x12')]('SquareMessage,\x20%s,\x20%s',_0x197c69,_0x2b6d1e['error'][_0xb51b('0x14')]);return _0x243a3a(_0x2b6d1e[_0xb51b('0x12')][_0xb51b('0x14')]);}logger[_0xb51b('0x12')](_0xb51b('0xe'),_0x197c69,_0x2b6d1e[_0xb51b('0x12')]['message']);return _0x21b50c(_0x2b6d1e['error'][_0xb51b('0x14')]);}else{logger[_0xb51b('0xd')](_0xb51b('0xe'),_0x197c69,_0xb51b('0xf'));_0x21b50c(_0x2b6d1e['result'][_0xb51b('0x14')]);}})[_0xb51b('0x15')](function(_0x2c0636){logger['error'](_0xb51b('0xe'),_0x197c69,_0x2c0636);_0x243a3a(_0x2c0636);});});}exports[_0xb51b('0x16')]=function(_0x41596b){var _0x111730=this;return new Promise(function(_0x5ae24b,_0xf406a6){return db['SquareMessage'][_0xb51b('0x17')](_0x41596b[_0xb51b('0x18')],{'raw':_0x41596b[_0xb51b('0x19')]?_0x41596b[_0xb51b('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xb51b('0xc')](function(_0x4e9a03){logger[_0xb51b('0xd')](_0xb51b('0x16'),_0x41596b);logger['debug'](_0xb51b('0x16'),_0x41596b,JSON[_0xb51b('0x1a')](_0x4e9a03));_0x5ae24b(_0x4e9a03);})[_0xb51b('0x15')](function(_0x4cb548){logger['error']('CreateSquareMessage',_0x4cb548[_0xb51b('0x14')],_0x41596b);_0xf406a6(_0x111730[_0xb51b('0x12')](0x1f4,_0x4cb548[_0xb51b('0x14')]));});});};
\ No newline at end of file
+var _0x7ba8=['stringify','error','message','result','catch','CreateSquareMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s'];(function(_0x3c6dce,_0x5424dd){var _0x1450e9=function(_0xd51b5c){while(--_0xd51b5c){_0x3c6dce['push'](_0x3c6dce['shift']());}};_0x1450e9(++_0x5424dd);}(_0x7ba8,0x91));var _0x87ba=function(_0x2efd8b,_0x36c86f){_0x2efd8b=_0x2efd8b-0x0;var _0x1c1a0d=_0x7ba8[_0x2efd8b];return _0x1c1a0d;};'use strict';var _=require(_0x87ba('0x0'));var util=require(_0x87ba('0x1'));var moment=require(_0x87ba('0x2'));var BPromise=require(_0x87ba('0x3'));var rs=require(_0x87ba('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x87ba('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x87ba('0x6'))(_0x87ba('0x7'));var config=require('../../config/environment');var jayson=require(_0x87ba('0x8'));var client=jayson[_0x87ba('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e64bc,_0x341747,_0x56f83e){return new BPromise(function(_0x22ea9e,_0x5d41db){return client[_0x87ba('0xa')](_0x4e64bc,_0x56f83e)[_0x87ba('0xb')](function(_0x3c3785){logger[_0x87ba('0xc')](_0x87ba('0xd'),_0x341747,_0x87ba('0xe'));logger[_0x87ba('0xf')](_0x87ba('0x10'),_0x341747,_0x87ba('0xe'),JSON[_0x87ba('0x11')](_0x3c3785));if(_0x3c3785[_0x87ba('0x12')]){if(_0x3c3785[_0x87ba('0x12')]['code']===0x1f4){logger[_0x87ba('0x12')](_0x87ba('0xd'),_0x341747,_0x3c3785['error'][_0x87ba('0x13')]);return _0x5d41db(_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);}logger[_0x87ba('0x12')]('SquareMessage,\x20%s,\x20%s',_0x341747,_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);return _0x22ea9e(_0x3c3785[_0x87ba('0x12')][_0x87ba('0x13')]);}else{logger[_0x87ba('0xc')]('SquareMessage,\x20%s,\x20%s',_0x341747,_0x87ba('0xe'));_0x22ea9e(_0x3c3785[_0x87ba('0x14')][_0x87ba('0x13')]);}})[_0x87ba('0x15')](function(_0x3f5f1e){logger['error']('SquareMessage,\x20%s,\x20%s',_0x341747,_0x3f5f1e);_0x5d41db(_0x3f5f1e);});});}exports[_0x87ba('0x16')]=function(_0x104df0){var _0x10c741=this;return new Promise(function(_0x3cc7bf,_0x5e4d4a){return db['SquareMessage'][_0x87ba('0x17')](_0x104df0[_0x87ba('0x18')],{'raw':_0x104df0[_0x87ba('0x19')]?_0x104df0[_0x87ba('0x19')][_0x87ba('0x1a')]===undefined?!![]:![]:!![]})[_0x87ba('0xb')](function(_0x514023){logger[_0x87ba('0xc')](_0x87ba('0x16'),_0x104df0);logger[_0x87ba('0xf')](_0x87ba('0x16'),_0x104df0,JSON[_0x87ba('0x11')](_0x514023));_0x3cc7bf(_0x514023);})[_0x87ba('0x15')](function(_0xa8344c){logger[_0x87ba('0x12')](_0x87ba('0x16'),_0xa8344c[_0x87ba('0x13')],_0x104df0);_0x5e4d4a(_0x10c741['error'](0x1f4,_0xa8344c[_0x87ba('0x13')]));});});};
\ No newline at end of file
index 9182a70..0c7b2a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ad6=['15s','test','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/test'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9ad6,0x104));var _0x69ad=function(_0x9593f2,_0x1f7391){_0x9593f2=_0x9593f2-0x0;var _0x5a8250=_0x9ad6[_0x9593f2];return _0x5a8250;};'use strict';var multer=require(_0x69ad('0x0'));var util=require('util');var path=require(_0x69ad('0x1'));var timeout=require(_0x69ad('0x2'));var express=require('express');var router=express[_0x69ad('0x3')]();var fs_extra=require(_0x69ad('0x4'));var auth=require(_0x69ad('0x5'));var interaction=require(_0x69ad('0x6'));var config=require(_0x69ad('0x7'));var controller=require('./squareOdbc.controller');router[_0x69ad('0x8')]('/',auth[_0x69ad('0x9')](),controller[_0x69ad('0xa')]);router[_0x69ad('0x8')](_0x69ad('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0x69ad('0xc'),auth[_0x69ad('0x9')](),timeout(_0x69ad('0xd')),controller[_0x69ad('0xe')]);router['post']('/',auth[_0x69ad('0x9')](),controller[_0x69ad('0xf')]);router[_0x69ad('0x10')](_0x69ad('0xb'),auth[_0x69ad('0x9')](),controller[_0x69ad('0x11')]);router[_0x69ad('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x69ad('0x13')]);module[_0x69ad('0x14')]=router;
\ No newline at end of file
+var _0xe33c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','test','post','create','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x3af59e,_0x254370){var _0x53a678=function(_0x338f25){while(--_0x338f25){_0x3af59e['push'](_0x3af59e['shift']());}};_0x53a678(++_0x254370);}(_0xe33c,0x11b));var _0xce33=function(_0x1c74c6,_0x32680b){_0x1c74c6=_0x1c74c6-0x0;var _0x5ce7ac=_0xe33c[_0x1c74c6];return _0x5ce7ac;};'use strict';var multer=require('multer');var util=require(_0xce33('0x0'));var path=require(_0xce33('0x1'));var timeout=require(_0xce33('0x2'));var express=require(_0xce33('0x3'));var router=express[_0xce33('0x4')]();var fs_extra=require(_0xce33('0x5'));var auth=require(_0xce33('0x6'));var interaction=require(_0xce33('0x7'));var config=require('../../config/environment');var controller=require(_0xce33('0x8'));router[_0xce33('0x9')]('/',auth[_0xce33('0xa')](),controller[_0xce33('0xb')]);router[_0xce33('0x9')](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0xd')]);router[_0xce33('0x9')](_0xce33('0xe'),auth['isAuthenticated'](),timeout('15s'),controller[_0xce33('0xf')]);router[_0xce33('0x10')]('/',auth[_0xce33('0xa')](),controller[_0xce33('0x11')]);router['put'](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0x12')]);router[_0xce33('0x13')](_0xce33('0xc'),auth[_0xce33('0xa')](),controller[_0xce33('0x14')]);module[_0xce33('0x15')]=router;
\ No newline at end of file
index 8418001..91093d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c66=['sequelize','exports','name','STRING'];(function(_0x221b17,_0x4c6878){var _0x12e9de=function(_0xfecf27){while(--_0xfecf27){_0x221b17['push'](_0x221b17['shift']());}};_0x12e9de(++_0x4c6878);}(_0x5c66,0x198));var _0x65c6=function(_0x4c9072,_0x81ce2){_0x4c9072=_0x4c9072-0x0;var _0x2e94c1=_0x5c66[_0x4c9072];return _0x2e94c1;};'use strict';var Sequelize=require(_0x65c6('0x0'));module[_0x65c6('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x65c6('0x2'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65c6('0x3')]}};
\ No newline at end of file
+var _0xae51=['sequelize','exports','STRING','name'];(function(_0x178cd1,_0x2e6970){var _0x162978=function(_0x468213){while(--_0x468213){_0x178cd1['push'](_0x178cd1['shift']());}};_0x162978(++_0x2e6970);}(_0xae51,0x174));var _0x1ae5=function(_0x392bfe,_0x50f7a9){_0x392bfe=_0x392bfe-0x0;var _0x1e56d9=_0xae51[_0x392bfe];return _0x1e56d9;};'use strict';var Sequelize=require(_0x1ae5('0x0'));module[_0x1ae5('0x1')]={'name':{'type':Sequelize[_0x1ae5('0x2')],'unique':_0x1ae5('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x1ae5('0x2')]},'description':{'type':Sequelize[_0x1ae5('0x2')]}};
\ No newline at end of file
index 3460327..ba72183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa9=['then','get','ODBC','UserProfileResource','destroy','end','error','stack','name','send','map','SquareOdbc','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','keys','include','find','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','eml-format','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x203d2f,_0x50ef43){var _0x244469=function(_0xdf5d6a){while(--_0xdf5d6a){_0x203d2f['push'](_0x203d2f['shift']());}};_0x244469(++_0x50ef43);}(_0xcfa9,0x84));var _0x9cfa=function(_0x3cc8df,_0x50f1d8){_0x3cc8df=_0x3cc8df-0x0;var _0x29068a=_0xcfa9[_0x3cc8df];return _0x29068a;};'use strict';var emlformat=require(_0x9cfa('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9cfa('0x1'));var rp=require(_0x9cfa('0x2'));var moment=require('moment');var BPromise=require(_0x9cfa('0x3'));var Mustache=require('mustache');var util=require(_0x9cfa('0x4'));var path=require(_0x9cfa('0x5'));var sox=require(_0x9cfa('0x6'));var csv=require(_0x9cfa('0x7'));var ejs=require(_0x9cfa('0x8'));var fs=require('fs');var fs_extra=require(_0x9cfa('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9cfa('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9cfa('0xb'));var toCsv=require(_0x9cfa('0x7'));var querystring=require(_0x9cfa('0xc'));var Papa=require('papaparse');var Redis=require(_0x9cfa('0xd'));var authService=require(_0x9cfa('0xe'));var qs=require(_0x9cfa('0xf'));var as=require(_0x9cfa('0x10'));var hardwareService=require(_0x9cfa('0x11'));var logger=require(_0x9cfa('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x9cfa('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9cfa('0x14'))['db'];function respondWithStatusCode(_0xab2575,_0x287c3f){_0x287c3f=_0x287c3f||0xcc;return function(_0x315add){if(_0x315add){return _0xab2575[_0x9cfa('0x15')](_0x287c3f);}return _0xab2575['status'](_0x287c3f)['end']();};}function respondWithResult(_0x1e9c41,_0x45b1c4){_0x45b1c4=_0x45b1c4||0xc8;return function(_0x51e32c){if(_0x51e32c){return _0x1e9c41[_0x9cfa('0x16')](_0x45b1c4)[_0x9cfa('0x17')](_0x51e32c);}};}function respondWithFilteredResult(_0x254ce3,_0x4cc051){return function(_0x2e6fd0){if(_0x2e6fd0){var _0x1196ca=typeof _0x4cc051[_0x9cfa('0x18')]===_0x9cfa('0x19')&&typeof _0x4cc051[_0x9cfa('0x1a')]==='undefined';var _0x27dfc8=_0x2e6fd0[_0x9cfa('0x1b')];var _0x16e135=_0x1196ca?0x0:_0x4cc051['offset'];var _0x2869bb=_0x1196ca?_0x2e6fd0['count']:_0x4cc051[_0x9cfa('0x18')]+_0x4cc051[_0x9cfa('0x1a')];var _0x1389fd;if(_0x2869bb>=_0x27dfc8){_0x2869bb=_0x27dfc8;_0x1389fd=0xc8;}else{_0x1389fd=0xce;}_0x254ce3['status'](_0x1389fd);return _0x254ce3[_0x9cfa('0x1c')](_0x9cfa('0x1d'),_0x16e135+'-'+_0x2869bb+'/'+_0x27dfc8)[_0x9cfa('0x17')](_0x2e6fd0);}return null;};}function patchUpdates(_0x140f6e){return function(_0x19b4fd){try{jsonpatch[_0x9cfa('0x1e')](_0x19b4fd,_0x140f6e,!![]);}catch(_0x15ba79){return BPromise[_0x9cfa('0x1f')](_0x15ba79);}return _0x19b4fd[_0x9cfa('0x20')]();};}function saveUpdates(_0x29d9c8,_0x270aff){return function(_0x1f7bde){if(_0x1f7bde){return _0x1f7bde[_0x9cfa('0x21')](_0x29d9c8)[_0x9cfa('0x22')](function(_0x511f1e){return _0x511f1e;});}return null;};}function removeEntity(_0x439208,_0x52a5e7){return function(_0x3ba28d){if(_0x3ba28d){return _0x3ba28d['destroy']()['then'](function(){var _0x5a5958=_0x3ba28d[_0x9cfa('0x23')]({'plain':!![]});var _0x5ef463=_0x9cfa('0x24');return db[_0x9cfa('0x25')][_0x9cfa('0x26')]({'where':{'type':_0x5ef463,'resourceId':_0x5a5958['id']}})[_0x9cfa('0x22')](function(){return _0x3ba28d;});})['then'](function(){_0x439208[_0x9cfa('0x16')](0xcc)[_0x9cfa('0x27')]();});}};}function handleEntityNotFound(_0x42d003,_0x5016a8){return function(_0x3d22fe){if(!_0x3d22fe){_0x42d003[_0x9cfa('0x15')](0x194);}return _0x3d22fe;};}function handleError(_0x56908a,_0x30b810){_0x30b810=_0x30b810||0x1f4;return function(_0x435c56){logger[_0x9cfa('0x28')](_0x435c56[_0x9cfa('0x29')]);if(_0x435c56[_0x9cfa('0x2a')]){delete _0x435c56[_0x9cfa('0x2a')];}_0x56908a[_0x9cfa('0x16')](_0x30b810)[_0x9cfa('0x2b')](_0x435c56);};}exports['index']=function(_0x40d22a,_0x413ecc){var _0x296b7e={},_0x1bf941={},_0x2f5f17={'count':0x0,'rows':[]};var _0x21ca7a=_[_0x9cfa('0x2c')](db[_0x9cfa('0x2d')][_0x9cfa('0x2e')],function(_0x41931e){return{'name':_0x41931e[_0x9cfa('0x2f')],'type':_0x41931e['type'][_0x9cfa('0x30')]};});_0x1bf941[_0x9cfa('0x31')]=_[_0x9cfa('0x2c')](_0x21ca7a,_0x9cfa('0x2a'));_0x1bf941[_0x9cfa('0x32')]=_['keys'](_0x40d22a[_0x9cfa('0x32')]);_0x1bf941[_0x9cfa('0x33')]=_[_0x9cfa('0x34')](_0x1bf941[_0x9cfa('0x31')],_0x1bf941['query']);_0x296b7e['attributes']=_[_0x9cfa('0x34')](_0x1bf941[_0x9cfa('0x31')],qs[_0x9cfa('0x35')](_0x40d22a['query'][_0x9cfa('0x35')]));_0x296b7e['attributes']=_0x296b7e[_0x9cfa('0x36')][_0x9cfa('0x37')]?_0x296b7e[_0x9cfa('0x36')]:_0x1bf941['model'];if(!_0x40d22a[_0x9cfa('0x32')]['hasOwnProperty'](_0x9cfa('0x38'))){_0x296b7e[_0x9cfa('0x1a')]=qs['limit'](_0x40d22a[_0x9cfa('0x32')][_0x9cfa('0x1a')]);_0x296b7e['offset']=qs[_0x9cfa('0x18')](_0x40d22a[_0x9cfa('0x32')][_0x9cfa('0x18')]);}_0x296b7e[_0x9cfa('0x39')]=qs[_0x9cfa('0x3a')](_0x40d22a['query'][_0x9cfa('0x3a')]);_0x296b7e[_0x9cfa('0x3b')]=qs[_0x9cfa('0x33')](_[_0x9cfa('0x3c')](_0x40d22a[_0x9cfa('0x32')],_0x1bf941[_0x9cfa('0x33')]),_0x21ca7a);if(_0x40d22a[_0x9cfa('0x32')][_0x9cfa('0x3d')]){_0x296b7e[_0x9cfa('0x3b')]=_[_0x9cfa('0x3e')](_0x296b7e['where'],{'$or':_[_0x9cfa('0x2c')](_0x21ca7a,function(_0x993d0f){if(_0x993d0f[_0x9cfa('0x3f')]!==_0x9cfa('0x40')){var _0x3d88cb={};_0x3d88cb[_0x993d0f['name']]={'$like':'%'+_0x40d22a['query'][_0x9cfa('0x3d')]+'%'};return _0x3d88cb;}})});}_0x296b7e=_[_0x9cfa('0x3e')]({},_0x296b7e,_0x40d22a[_0x9cfa('0x41')]);var _0x4ffbaf={'where':_0x296b7e['where']};return db[_0x9cfa('0x2d')][_0x9cfa('0x1b')](_0x4ffbaf)[_0x9cfa('0x22')](function(_0x46ae77){_0x2f5f17['count']=_0x46ae77;if(_0x40d22a[_0x9cfa('0x32')][_0x9cfa('0x42')]){_0x296b7e['include']=[{'all':!![]}];}return db[_0x9cfa('0x2d')]['findAll'](_0x296b7e);})[_0x9cfa('0x22')](function(_0x5459f0){_0x2f5f17[_0x9cfa('0x43')]=_0x5459f0;return _0x2f5f17;})[_0x9cfa('0x22')](respondWithFilteredResult(_0x413ecc,_0x296b7e))[_0x9cfa('0x44')](handleError(_0x413ecc,null));};exports[_0x9cfa('0x45')]=function(_0x38a484,_0x23ede4){var _0x1cb840={'raw':!![],'where':{'id':_0x38a484['params']['id']}},_0x236123={};_0x236123[_0x9cfa('0x31')]=_[_0x9cfa('0x46')](db['SquareOdbc']['rawAttributes']);_0x236123[_0x9cfa('0x32')]=_[_0x9cfa('0x46')](_0x38a484[_0x9cfa('0x32')]);_0x236123['filters']=_[_0x9cfa('0x34')](_0x236123[_0x9cfa('0x31')],_0x236123[_0x9cfa('0x32')]);_0x1cb840[_0x9cfa('0x36')]=_['intersection'](_0x236123['model'],qs['fields'](_0x38a484[_0x9cfa('0x32')][_0x9cfa('0x35')]));_0x1cb840[_0x9cfa('0x36')]=_0x1cb840[_0x9cfa('0x36')][_0x9cfa('0x37')]?_0x1cb840[_0x9cfa('0x36')]:_0x236123[_0x9cfa('0x31')];if(_0x38a484['query']['includeAll']){_0x1cb840[_0x9cfa('0x47')]=[{'all':!![]}];}_0x1cb840=_[_0x9cfa('0x3e')]({},_0x1cb840,_0x38a484[_0x9cfa('0x41')]);return db[_0x9cfa('0x2d')][_0x9cfa('0x48')](_0x1cb840)[_0x9cfa('0x22')](handleEntityNotFound(_0x23ede4,null))[_0x9cfa('0x22')](respondWithResult(_0x23ede4,null))[_0x9cfa('0x44')](handleError(_0x23ede4,null));};exports[_0x9cfa('0x49')]=function(_0x25e6f0,_0x1ba299){return db[_0x9cfa('0x2d')][_0x9cfa('0x49')](_0x25e6f0[_0x9cfa('0x4a')],{})['then'](function(_0xb5905d){var _0x4e0842=_0x25e6f0[_0x9cfa('0x4b')][_0x9cfa('0x23')]({'plain':!![]});if(!_0x4e0842)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e0842[_0x9cfa('0x4c')]===_0x9cfa('0x4b')){var _0x1391db=_0xb5905d[_0x9cfa('0x23')]({'plain':!![]});var _0x3cc29e='ODBC';return db[_0x9cfa('0x4d')][_0x9cfa('0x48')]({'where':{'name':_0x3cc29e,'userProfileId':_0x4e0842['userProfileId']},'raw':!![]})[_0x9cfa('0x22')](function(_0x679130){if(_0x679130&&_0x679130[_0x9cfa('0x4e')]===0x0){return db[_0x9cfa('0x25')][_0x9cfa('0x49')]({'name':_0x1391db[_0x9cfa('0x2a')],'resourceId':_0x1391db['id'],'type':_0x679130['name'],'sectionId':_0x679130['id']},{})['then'](function(){return _0xb5905d;});}else{return _0xb5905d;}})[_0x9cfa('0x44')](function(_0x42f80a){logger[_0x9cfa('0x28')](_0x9cfa('0x4f'),_0x42f80a);throw _0x42f80a;});}return _0xb5905d;})[_0x9cfa('0x22')](respondWithResult(_0x1ba299,0xc9))[_0x9cfa('0x44')](handleError(_0x1ba299,null));};exports[_0x9cfa('0x21')]=function(_0xff47aa,_0x14e7c2){if(_0xff47aa['body']['id']){delete _0xff47aa[_0x9cfa('0x4a')]['id'];}return db['SquareOdbc'][_0x9cfa('0x48')]({'where':{'id':_0xff47aa['params']['id']}})[_0x9cfa('0x22')](handleEntityNotFound(_0x14e7c2,null))[_0x9cfa('0x22')](saveUpdates(_0xff47aa[_0x9cfa('0x4a')],null))[_0x9cfa('0x22')](respondWithResult(_0x14e7c2,null))[_0x9cfa('0x44')](handleError(_0x14e7c2,null));};exports[_0x9cfa('0x26')]=function(_0x276e5e,_0x52f65f){return db['SquareOdbc']['find']({'where':{'id':_0x276e5e[_0x9cfa('0x50')]['id']}})['then'](handleEntityNotFound(_0x52f65f,null))['then'](removeEntity(_0x52f65f,null))['catch'](handleError(_0x52f65f,null));};exports[_0x9cfa('0x51')]=function(_0xbda05e,_0x4f404d,_0x2d4485){var _0x5ab2c3;return db['SquareOdbc'][_0x9cfa('0x48')]({'where':{'id':_0xbda05e[_0x9cfa('0x50')]['id']},'attributes':['id',_0x9cfa('0x52')]})['then'](handleEntityNotFound(_0x4f404d,null))[_0x9cfa('0x22')](function(_0x21d049){if(_0x21d049){var _0x3b9192=require('odbc')();_0x3b9192['openSync'](_0x21d049['dsn']);_0x3b9192['closeSync']();return _0x21d049;}})['then'](respondWithResult(_0x4f404d,null))[_0x9cfa('0x44')](handleError(_0x4f404d,null));};
\ No newline at end of file
+var _0x7ae8=['fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','offset','limit','set','apply','reject','save','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','map','SquareOdbc','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','type','filter','options','count','includeAll','include','findAll','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','params','test','dsn','odbc','openSync','closeSync','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs'];(function(_0x394a83,_0x28bf62){var _0x1527bc=function(_0x7199c5){while(--_0x7199c5){_0x394a83['push'](_0x394a83['shift']());}};_0x1527bc(++_0x28bf62);}(_0x7ae8,0x1e4));var _0x87ae=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7ae8[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x87ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x87ae('0x1'));var moment=require('moment');var BPromise=require(_0x87ae('0x2'));var Mustache=require('mustache');var util=require(_0x87ae('0x3'));var path=require(_0x87ae('0x4'));var sox=require(_0x87ae('0x5'));var csv=require(_0x87ae('0x6'));var ejs=require(_0x87ae('0x7'));var fs=require('fs');var fs_extra=require(_0x87ae('0x8'));var _=require(_0x87ae('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x87ae('0xa'));var deskjs=require(_0x87ae('0xb'));var toCsv=require(_0x87ae('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x87ae('0xc'));var authService=require(_0x87ae('0xd'));var qs=require(_0x87ae('0xe'));var as=require(_0x87ae('0xf'));var hardwareService=require(_0x87ae('0x10'));var logger=require(_0x87ae('0x11'))(_0x87ae('0x12'));var utils=require(_0x87ae('0x13'));var config=require(_0x87ae('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x87ae('0x15'))['db'];function respondWithStatusCode(_0x4ce3bd,_0x320aa0){_0x320aa0=_0x320aa0||0xcc;return function(_0x12953f){if(_0x12953f){return _0x4ce3bd['sendStatus'](_0x320aa0);}return _0x4ce3bd[_0x87ae('0x16')](_0x320aa0)[_0x87ae('0x17')]();};}function respondWithResult(_0x1e2179,_0x5a7645){_0x5a7645=_0x5a7645||0xc8;return function(_0x3b275f){if(_0x3b275f){return _0x1e2179[_0x87ae('0x16')](_0x5a7645)[_0x87ae('0x18')](_0x3b275f);}};}function respondWithFilteredResult(_0x26411c,_0x345554){return function(_0x1b1b6a){if(_0x1b1b6a){var _0x531f87=typeof _0x345554['offset']===_0x87ae('0x19')&&typeof _0x345554['limit']==='undefined';var _0x54dc40=_0x1b1b6a['count'];var _0x2b6ef3=_0x531f87?0x0:_0x345554['offset'];var _0x4d6360=_0x531f87?_0x1b1b6a['count']:_0x345554[_0x87ae('0x1a')]+_0x345554[_0x87ae('0x1b')];var _0x280858;if(_0x4d6360>=_0x54dc40){_0x4d6360=_0x54dc40;_0x280858=0xc8;}else{_0x280858=0xce;}_0x26411c['status'](_0x280858);return _0x26411c[_0x87ae('0x1c')]('Content-Range',_0x2b6ef3+'-'+_0x4d6360+'/'+_0x54dc40)[_0x87ae('0x18')](_0x1b1b6a);}return null;};}function patchUpdates(_0x1eb81d){return function(_0x47d690){try{jsonpatch[_0x87ae('0x1d')](_0x47d690,_0x1eb81d,!![]);}catch(_0x48b483){return BPromise[_0x87ae('0x1e')](_0x48b483);}return _0x47d690[_0x87ae('0x1f')]();};}function saveUpdates(_0x597db9,_0x1c77b3){return function(_0x4f710c){if(_0x4f710c){return _0x4f710c['update'](_0x597db9)[_0x87ae('0x20')](function(_0x2a9fd6){return _0x2a9fd6;});}return null;};}function removeEntity(_0x597f40,_0xf54f9d){return function(_0x4d3e07){if(_0x4d3e07){return _0x4d3e07[_0x87ae('0x21')]()[_0x87ae('0x20')](function(){var _0x4934d6=_0x4d3e07[_0x87ae('0x22')]({'plain':!![]});var _0x4fc164='ODBC';return db[_0x87ae('0x23')][_0x87ae('0x21')]({'where':{'type':_0x4fc164,'resourceId':_0x4934d6['id']}})[_0x87ae('0x20')](function(){return _0x4d3e07;});})[_0x87ae('0x20')](function(){_0x597f40['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x42c192,_0x389a18){return function(_0x358a9a){if(!_0x358a9a){_0x42c192[_0x87ae('0x24')](0x194);}return _0x358a9a;};}function handleError(_0x50368c,_0x312c7c){_0x312c7c=_0x312c7c||0x1f4;return function(_0x4708c3){logger[_0x87ae('0x25')](_0x4708c3[_0x87ae('0x26')]);if(_0x4708c3[_0x87ae('0x27')]){delete _0x4708c3[_0x87ae('0x27')];}_0x50368c[_0x87ae('0x16')](_0x312c7c)[_0x87ae('0x28')](_0x4708c3);};}exports['index']=function(_0x3e5e3d,_0x2c24ea){var _0x47ce1b={},_0x22eb81={},_0x87d63b={'count':0x0,'rows':[]};var _0x2bac87=_[_0x87ae('0x29')](db[_0x87ae('0x2a')][_0x87ae('0x2b')],function(_0xf73c1c){return{'name':_0xf73c1c['fieldName'],'type':_0xf73c1c['type']['key']};});_0x22eb81[_0x87ae('0x2c')]=_[_0x87ae('0x29')](_0x2bac87,_0x87ae('0x27'));_0x22eb81[_0x87ae('0x2d')]=_[_0x87ae('0x2e')](_0x3e5e3d[_0x87ae('0x2d')]);_0x22eb81[_0x87ae('0x2f')]=_[_0x87ae('0x30')](_0x22eb81[_0x87ae('0x2c')],_0x22eb81[_0x87ae('0x2d')]);_0x47ce1b[_0x87ae('0x31')]=_[_0x87ae('0x30')](_0x22eb81[_0x87ae('0x2c')],qs['fields'](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x32')]));_0x47ce1b[_0x87ae('0x31')]=_0x47ce1b['attributes'][_0x87ae('0x33')]?_0x47ce1b[_0x87ae('0x31')]:_0x22eb81['model'];if(!_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x34')](_0x87ae('0x35'))){_0x47ce1b['limit']=qs[_0x87ae('0x1b')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x1b')]);_0x47ce1b[_0x87ae('0x1a')]=qs[_0x87ae('0x1a')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x1a')]);}_0x47ce1b[_0x87ae('0x36')]=qs[_0x87ae('0x37')](_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x37')]);_0x47ce1b['where']=qs[_0x87ae('0x2f')](_['pick'](_0x3e5e3d['query'],_0x22eb81[_0x87ae('0x2f')]),_0x2bac87);if(_0x3e5e3d[_0x87ae('0x2d')]['filter']){_0x47ce1b['where']=_[_0x87ae('0x38')](_0x47ce1b[_0x87ae('0x39')],{'$or':_[_0x87ae('0x29')](_0x2bac87,function(_0x4fcb32){if(_0x4fcb32[_0x87ae('0x3a')]!=='VIRTUAL'){var _0x2fdbf0={};_0x2fdbf0[_0x4fcb32['name']]={'$like':'%'+_0x3e5e3d[_0x87ae('0x2d')][_0x87ae('0x3b')]+'%'};return _0x2fdbf0;}})});}_0x47ce1b=_['merge']({},_0x47ce1b,_0x3e5e3d[_0x87ae('0x3c')]);var _0x247ada={'where':_0x47ce1b['where']};return db[_0x87ae('0x2a')][_0x87ae('0x3d')](_0x247ada)[_0x87ae('0x20')](function(_0x34fe2a){_0x87d63b[_0x87ae('0x3d')]=_0x34fe2a;if(_0x3e5e3d['query'][_0x87ae('0x3e')]){_0x47ce1b[_0x87ae('0x3f')]=[{'all':!![]}];}return db[_0x87ae('0x2a')][_0x87ae('0x40')](_0x47ce1b);})['then'](function(_0x5d3d09){_0x87d63b['rows']=_0x5d3d09;return _0x87d63b;})[_0x87ae('0x20')](respondWithFilteredResult(_0x2c24ea,_0x47ce1b))[_0x87ae('0x41')](handleError(_0x2c24ea,null));};exports['show']=function(_0x44e7b2,_0x305adf){var _0x1ee8b2={'raw':!![],'where':{'id':_0x44e7b2['params']['id']}},_0x183648={};_0x183648['model']=_[_0x87ae('0x2e')](db[_0x87ae('0x2a')][_0x87ae('0x2b')]);_0x183648[_0x87ae('0x2d')]=_[_0x87ae('0x2e')](_0x44e7b2[_0x87ae('0x2d')]);_0x183648[_0x87ae('0x2f')]=_[_0x87ae('0x30')](_0x183648[_0x87ae('0x2c')],_0x183648[_0x87ae('0x2d')]);_0x1ee8b2[_0x87ae('0x31')]=_[_0x87ae('0x30')](_0x183648['model'],qs['fields'](_0x44e7b2['query']['fields']));_0x1ee8b2[_0x87ae('0x31')]=_0x1ee8b2['attributes'][_0x87ae('0x33')]?_0x1ee8b2['attributes']:_0x183648[_0x87ae('0x2c')];if(_0x44e7b2[_0x87ae('0x2d')]['includeAll']){_0x1ee8b2['include']=[{'all':!![]}];}_0x1ee8b2=_[_0x87ae('0x38')]({},_0x1ee8b2,_0x44e7b2[_0x87ae('0x3c')]);return db[_0x87ae('0x2a')][_0x87ae('0x42')](_0x1ee8b2)['then'](handleEntityNotFound(_0x305adf,null))[_0x87ae('0x20')](respondWithResult(_0x305adf,null))[_0x87ae('0x41')](handleError(_0x305adf,null));};exports[_0x87ae('0x43')]=function(_0x2addff,_0xf55425){return db[_0x87ae('0x2a')][_0x87ae('0x43')](_0x2addff[_0x87ae('0x44')],{})[_0x87ae('0x20')](function(_0x4d7489){var _0x43a809=_0x2addff[_0x87ae('0x45')]['get']({'plain':!![]});if(!_0x43a809)throw new Error(_0x87ae('0x46'));if(_0x43a809[_0x87ae('0x47')]===_0x87ae('0x45')){var _0x1f5d58=_0x4d7489['get']({'plain':!![]});var _0x55f97b='ODBC';return db[_0x87ae('0x48')]['find']({'where':{'name':_0x55f97b,'userProfileId':_0x43a809[_0x87ae('0x49')]},'raw':!![]})['then'](function(_0x54badb){if(_0x54badb&&_0x54badb[_0x87ae('0x4a')]===0x0){return db['UserProfileResource'][_0x87ae('0x43')]({'name':_0x1f5d58['name'],'resourceId':_0x1f5d58['id'],'type':_0x54badb[_0x87ae('0x27')],'sectionId':_0x54badb['id']},{})[_0x87ae('0x20')](function(){return _0x4d7489;});}else{return _0x4d7489;}})['catch'](function(_0x193aec){logger[_0x87ae('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x193aec);throw _0x193aec;});}return _0x4d7489;})[_0x87ae('0x20')](respondWithResult(_0xf55425,0xc9))[_0x87ae('0x41')](handleError(_0xf55425,null));};exports[_0x87ae('0x4b')]=function(_0x517942,_0x1a9bf5){if(_0x517942[_0x87ae('0x44')]['id']){delete _0x517942[_0x87ae('0x44')]['id'];}return db['SquareOdbc'][_0x87ae('0x42')]({'where':{'id':_0x517942[_0x87ae('0x4c')]['id']}})[_0x87ae('0x20')](handleEntityNotFound(_0x1a9bf5,null))[_0x87ae('0x20')](saveUpdates(_0x517942[_0x87ae('0x44')],null))[_0x87ae('0x20')](respondWithResult(_0x1a9bf5,null))[_0x87ae('0x41')](handleError(_0x1a9bf5,null));};exports['destroy']=function(_0x18a857,_0x14e65e){return db[_0x87ae('0x2a')][_0x87ae('0x42')]({'where':{'id':_0x18a857[_0x87ae('0x4c')]['id']}})[_0x87ae('0x20')](handleEntityNotFound(_0x14e65e,null))[_0x87ae('0x20')](removeEntity(_0x14e65e,null))[_0x87ae('0x41')](handleError(_0x14e65e,null));};exports[_0x87ae('0x4d')]=function(_0x36b3b2,_0xbf8e62,_0x40133f){var _0x112696;return db[_0x87ae('0x2a')]['find']({'where':{'id':_0x36b3b2[_0x87ae('0x4c')]['id']},'attributes':['id',_0x87ae('0x4e')]})[_0x87ae('0x20')](handleEntityNotFound(_0xbf8e62,null))[_0x87ae('0x20')](function(_0x32d563){if(_0x32d563){var _0x1d4dbb=require(_0x87ae('0x4f'))();_0x1d4dbb[_0x87ae('0x50')](_0x32d563[_0x87ae('0x4e')]);_0x1d4dbb[_0x87ae('0x51')]();return _0x32d563;}})['then'](respondWithResult(_0xbf8e62,null))[_0x87ae('0x41')](handleError(_0xbf8e62,null));};
\ No newline at end of file
index dfd4ef8..0880565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62e0=['square_odbc','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./squareOdbc.attributes','define'];(function(_0x3080d9,_0x68b836){var _0x456668=function(_0x539c99){while(--_0x539c99){_0x3080d9['push'](_0x3080d9['shift']());}};_0x456668(++_0x68b836);}(_0x62e0,0x83));var _0x062e=function(_0x32e61d,_0x178a50){_0x32e61d=_0x32e61d-0x0;var _0xd27c60=_0x62e0[_0x32e61d];return _0xd27c60;};'use strict';var _=require('lodash');var util=require(_0x062e('0x0'));var logger=require(_0x062e('0x1'))(_0x062e('0x2'));var moment=require('moment');var BPromise=require(_0x062e('0x3'));var rp=require(_0x062e('0x4'));var fs=require('fs');var path=require(_0x062e('0x5'));var rimraf=require(_0x062e('0x6'));var config=require('../../config/environment');var attributes=require(_0x062e('0x7'));module['exports']=function(_0x19134d,_0x134a1c){return _0x19134d[_0x062e('0x8')]('SquareOdbc',attributes,{'tableName':_0x062e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5495=['bluebird','request-promise','path','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','lodash','util','api'];(function(_0x4e07c4,_0x20a2cf){var _0x176c64=function(_0x46ae29){while(--_0x46ae29){_0x4e07c4['push'](_0x4e07c4['shift']());}};_0x176c64(++_0x20a2cf);}(_0x5495,0xc3));var _0x5549=function(_0x8d6de9,_0x8daaea){_0x8d6de9=_0x8d6de9-0x0;var _0x1fb1c5=_0x5495[_0x8d6de9];return _0x1fb1c5;};'use strict';var _=require(_0x5549('0x0'));var util=require(_0x5549('0x1'));var logger=require('../../config/logger')(_0x5549('0x2'));var moment=require('moment');var BPromise=require(_0x5549('0x3'));var rp=require(_0x5549('0x4'));var fs=require('fs');var path=require(_0x5549('0x5'));var rimraf=require('rimraf');var config=require(_0x5549('0x6'));var attributes=require(_0x5549('0x7'));module[_0x5549('0x8')]=function(_0x209371,_0x20e0a6){return _0x209371[_0x5549('0x9')](_0x5549('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03e1d1b..a7172a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f6a=['message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','map','include','model','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s'];(function(_0x3efe87,_0x35ad48){var _0x56a4cc=function(_0x47869e){while(--_0x47869e){_0x3efe87['push'](_0x3efe87['shift']());}};_0x56a4cc(++_0x35ad48);}(_0x6f6a,0x70));var _0xa6f6=function(_0x584293,_0x47e116){_0x584293=_0x584293-0x0;var _0x581adf=_0x6f6a[_0x584293];return _0x581adf;};'use strict';var _=require(_0xa6f6('0x0'));var util=require(_0xa6f6('0x1'));var moment=require('moment');var BPromise=require(_0xa6f6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa6f6('0x3'));var db=require(_0xa6f6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa6f6('0x5'))('rpc');var config=require(_0xa6f6('0x6'));var jayson=require(_0xa6f6('0x7'));var client=jayson[_0xa6f6('0x8')][_0xa6f6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1540fd,_0x34bd6b,_0x58f128){return new BPromise(function(_0x4314bf,_0x473807){return client[_0xa6f6('0xa')](_0x1540fd,_0x58f128)[_0xa6f6('0xb')](function(_0x39f23e){logger[_0xa6f6('0xc')]('SquareOdbc,\x20%s,\x20%s',_0x34bd6b,_0xa6f6('0xd'));logger[_0xa6f6('0xe')](_0xa6f6('0xf'),_0x34bd6b,_0xa6f6('0xd'),JSON[_0xa6f6('0x10')](_0x39f23e));if(_0x39f23e['error']){if(_0x39f23e[_0xa6f6('0x11')][_0xa6f6('0x12')]===0x1f4){logger[_0xa6f6('0x11')](_0xa6f6('0x13'),_0x34bd6b,_0x39f23e['error'][_0xa6f6('0x14')]);return _0x473807(_0x39f23e[_0xa6f6('0x11')][_0xa6f6('0x14')]);}logger['error']('SquareOdbc,\x20%s,\x20%s',_0x34bd6b,_0x39f23e['error'][_0xa6f6('0x14')]);return _0x4314bf(_0x39f23e[_0xa6f6('0x11')][_0xa6f6('0x14')]);}else{logger[_0xa6f6('0xc')](_0xa6f6('0x13'),_0x34bd6b,_0xa6f6('0xd'));_0x4314bf(_0x39f23e[_0xa6f6('0x15')][_0xa6f6('0x14')]);}})['catch'](function(_0x8973ff){logger[_0xa6f6('0x11')](_0xa6f6('0x13'),_0x34bd6b,_0x8973ff);_0x473807(_0x8973ff);});});}exports[_0xa6f6('0x16')]=function(_0x252b08){var _0x455b5d=this;return new Promise(function(_0x362436,_0x3d5be9){return db[_0xa6f6('0x17')][_0xa6f6('0x18')]({'raw':_0x252b08[_0xa6f6('0x19')]?_0x252b08['options'][_0xa6f6('0x1a')]===undefined?!![]:![]:!![],'where':_0x252b08[_0xa6f6('0x19')]?_0x252b08['options'][_0xa6f6('0x1b')]||null:null,'attributes':_0x252b08[_0xa6f6('0x19')]?_0x252b08[_0xa6f6('0x19')][_0xa6f6('0x1c')]||null:null,'include':_0x252b08[_0xa6f6('0x19')]?_0x252b08['options']['include']?_[_0xa6f6('0x1d')](_0x252b08[_0xa6f6('0x19')][_0xa6f6('0x1e')],function(_0x121726){return{'model':db[_0x121726[_0xa6f6('0x1f')]],'as':_0x121726['as'],'attributes':_0x121726[_0xa6f6('0x1c')],'include':_0x121726[_0xa6f6('0x1e')]?_['map'](_0x121726['include'],function(_0x3fdb5e){return{'model':db[_0x3fdb5e[_0xa6f6('0x1f')]],'as':_0x3fdb5e['as'],'attributes':_0x3fdb5e['attributes'],'include':_0x3fdb5e[_0xa6f6('0x1e')]?_[_0xa6f6('0x1d')](_0x3fdb5e[_0xa6f6('0x1e')],function(_0x5f310a){return{'model':db[_0x5f310a[_0xa6f6('0x1f')]],'as':_0x5f310a['as'],'attributes':_0x5f310a['attributes']};}):[]};}):[]};}):[]:[]})[_0xa6f6('0xb')](function(_0x120079){logger[_0xa6f6('0xc')](_0xa6f6('0x16'),_0x252b08);logger[_0xa6f6('0xe')](_0xa6f6('0x16'),_0x252b08,JSON[_0xa6f6('0x10')](_0x120079));_0x362436(_0x120079);})[_0xa6f6('0x20')](function(_0x3db883){logger[_0xa6f6('0x11')](_0xa6f6('0x16'),_0x3db883[_0xa6f6('0x14')],_0x252b08);_0x3d5be9(_0x455b5d[_0xa6f6('0x11')](0x1f4,_0x3db883[_0xa6f6('0x14')]));});});};
\ No newline at end of file
+var _0x6f1c=['find','options','raw','where','map','include','model','attributes','ShowSquareOdbc','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','info','catch'];(function(_0xf79bae,_0x263b2a){var _0x5d2cb7=function(_0x27c86b){while(--_0x27c86b){_0xf79bae['push'](_0xf79bae['shift']());}};_0x5d2cb7(++_0x263b2a);}(_0x6f1c,0x189));var _0xc6f1=function(_0x41ded9,_0x281049){_0x41ded9=_0x41ded9-0x0;var _0x178c21=_0x6f1c[_0x41ded9];return _0x178c21;};'use strict';var _=require(_0xc6f1('0x0'));var util=require(_0xc6f1('0x1'));var moment=require(_0xc6f1('0x2'));var BPromise=require(_0xc6f1('0x3'));var rs=require(_0xc6f1('0x4'));var fs=require('fs');var Redis=require(_0xc6f1('0x5'));var db=require(_0xc6f1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc6f1('0x7'));var config=require(_0xc6f1('0x8'));var jayson=require(_0xc6f1('0x9'));var client=jayson['client'][_0xc6f1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4880ed,_0x4188f4,_0x59e153){return new BPromise(function(_0x4f9085,_0x32f3d9){return client[_0xc6f1('0xb')](_0x4880ed,_0x59e153)[_0xc6f1('0xc')](function(_0x8ec548){logger['info']('SquareOdbc,\x20%s,\x20%s',_0x4188f4,_0xc6f1('0xd'));logger[_0xc6f1('0xe')](_0xc6f1('0xf'),_0x4188f4,_0xc6f1('0xd'),JSON[_0xc6f1('0x10')](_0x8ec548));if(_0x8ec548[_0xc6f1('0x11')]){if(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x12')]===0x1f4){logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);return _0x32f3d9(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);}logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0x8ec548[_0xc6f1('0x11')]['message']);return _0x4f9085(_0x8ec548[_0xc6f1('0x11')][_0xc6f1('0x14')]);}else{logger[_0xc6f1('0x15')]('SquareOdbc,\x20%s,\x20%s',_0x4188f4,'request\x20sent');_0x4f9085(_0x8ec548['result'][_0xc6f1('0x14')]);}})[_0xc6f1('0x16')](function(_0xcca15d){logger[_0xc6f1('0x11')](_0xc6f1('0x13'),_0x4188f4,_0xcca15d);_0x32f3d9(_0xcca15d);});});}exports['ShowSquareOdbc']=function(_0x382acd){var _0x13de47=this;return new Promise(function(_0x13c099,_0x179ad7){return db['SquareOdbc'][_0xc6f1('0x17')]({'raw':_0x382acd['options']?_0x382acd[_0xc6f1('0x18')][_0xc6f1('0x19')]===undefined?!![]:![]:!![],'where':_0x382acd['options']?_0x382acd[_0xc6f1('0x18')][_0xc6f1('0x1a')]||null:null,'attributes':_0x382acd[_0xc6f1('0x18')]?_0x382acd[_0xc6f1('0x18')]['attributes']||null:null,'include':_0x382acd[_0xc6f1('0x18')]?_0x382acd[_0xc6f1('0x18')]['include']?_[_0xc6f1('0x1b')](_0x382acd['options'][_0xc6f1('0x1c')],function(_0x19a08d){return{'model':db[_0x19a08d[_0xc6f1('0x1d')]],'as':_0x19a08d['as'],'attributes':_0x19a08d[_0xc6f1('0x1e')],'include':_0x19a08d[_0xc6f1('0x1c')]?_[_0xc6f1('0x1b')](_0x19a08d[_0xc6f1('0x1c')],function(_0x1b398a){return{'model':db[_0x1b398a[_0xc6f1('0x1d')]],'as':_0x1b398a['as'],'attributes':_0x1b398a[_0xc6f1('0x1e')],'include':_0x1b398a['include']?_[_0xc6f1('0x1b')](_0x1b398a[_0xc6f1('0x1c')],function(_0x1c420f){return{'model':db[_0x1c420f['model']],'as':_0x1c420f['as'],'attributes':_0x1c420f[_0xc6f1('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc6f1('0xc')](function(_0xf03513){logger[_0xc6f1('0x15')](_0xc6f1('0x1f'),_0x382acd);logger[_0xc6f1('0xe')](_0xc6f1('0x1f'),_0x382acd,JSON[_0xc6f1('0x10')](_0xf03513));_0x13c099(_0xf03513);})[_0xc6f1('0x16')](function(_0x5b6181){logger[_0xc6f1('0x11')](_0xc6f1('0x1f'),_0x5b6181[_0xc6f1('0x14')],_0x382acd);_0x179ad7(_0x13de47['error'](0x1f4,_0x5b6181[_0xc6f1('0x14')]));});});};
\ No newline at end of file
index 8e6554c..f15b778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81e4=['post','create','update','delete','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','/:id'];(function(_0x419e27,_0x56f247){var _0x228821=function(_0x30d099){while(--_0x30d099){_0x419e27['push'](_0x419e27['shift']());}};_0x228821(++_0x56f247);}(_0x81e4,0x135));var _0x481e=function(_0x197b38,_0x394a4d){_0x197b38=_0x197b38-0x0;var _0x20a23a=_0x81e4[_0x197b38];return _0x20a23a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x481e('0x0'));var express=require(_0x481e('0x1'));var router=express[_0x481e('0x2')]();var fs_extra=require(_0x481e('0x3'));var auth=require(_0x481e('0x4'));var interaction=require(_0x481e('0x5'));var config=require(_0x481e('0x6'));var controller=require(_0x481e('0x7'));router[_0x481e('0x8')]('/',auth[_0x481e('0x9')](),controller['index']);router[_0x481e('0x8')](_0x481e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x481e('0xb')]('/',auth['isAuthenticated'](),controller[_0x481e('0xc')]);router['put'](_0x481e('0xa'),auth[_0x481e('0x9')](),controller[_0x481e('0xd')]);router[_0x481e('0xe')]('/:id',auth[_0x481e('0x9')](),controller['destroy']);module[_0x481e('0xf')]=router;
\ No newline at end of file
+var _0xee18=['../../config/environment','./squareProject.controller','isAuthenticated','get','show','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x366195,_0x50da84){var _0xf37646=function(_0x53a253){while(--_0x53a253){_0x366195['push'](_0x366195['shift']());}};_0xf37646(++_0x50da84);}(_0xee18,0x161));var _0x8ee1=function(_0x1acc01,_0x5cb80c){_0x1acc01=_0x1acc01-0x0;var _0x5603f1=_0xee18[_0x1acc01];return _0x5603f1;};'use strict';var multer=require(_0x8ee1('0x0'));var util=require(_0x8ee1('0x1'));var path=require(_0x8ee1('0x2'));var timeout=require(_0x8ee1('0x3'));var express=require(_0x8ee1('0x4'));var router=express['Router']();var fs_extra=require(_0x8ee1('0x5'));var auth=require(_0x8ee1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8ee1('0x7'));var controller=require(_0x8ee1('0x8'));router['get']('/',auth[_0x8ee1('0x9')](),controller['index']);router[_0x8ee1('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8ee1('0xb')]);router[_0x8ee1('0xc')]('/',auth[_0x8ee1('0x9')](),controller[_0x8ee1('0xd')]);router[_0x8ee1('0xe')](_0x8ee1('0xf'),auth['isAuthenticated'](),controller[_0x8ee1('0x10')]);router[_0x8ee1('0x11')](_0x8ee1('0xf'),auth[_0x8ee1('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4ecf42f..f6c874f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3251=['sequelize','exports','STRING','name','getDataValue','preproduction','long','production','utf8','DATE'];(function(_0x1aebb7,_0x725d1a){var _0x200381=function(_0x394766){while(--_0x394766){_0x1aebb7['push'](_0x1aebb7['shift']());}};_0x200381(++_0x725d1a);}(_0x3251,0x14a));var _0x1325=function(_0x32f109,_0x1f1b71){_0x32f109=_0x32f109-0x0;var _0x550dc7=_0x3251[_0x32f109];return _0x550dc7;};'use strict';var Sequelize=require(_0x1325('0x0'));module[_0x1325('0x1')]={'name':{'type':Sequelize[_0x1325('0x2')],'unique':_0x1325('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0x1325('0x4')](_0x1325('0x5'))){return this[_0x1325('0x4')](_0x1325('0x5'))['toString']('utf8');}}},'production':{'type':Sequelize['BLOB'](_0x1325('0x6')),'get':function(){if(this[_0x1325('0x4')](_0x1325('0x7'))){return this[_0x1325('0x4')]('production')['toString'](_0x1325('0x8'));}}},'savedAt':{'type':Sequelize[_0x1325('0x9')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xabb2=['sequelize','exports','STRING','name','BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE'];(function(_0xff2e2f,_0x579ae7){var _0x548fee=function(_0x55551c){while(--_0x55551c){_0xff2e2f['push'](_0xff2e2f['shift']());}};_0x548fee(++_0x579ae7);}(_0xabb2,0xa8));var _0x2abb=function(_0x27c24e,_0x5db1c7){_0x27c24e=_0x27c24e-0x0;var _0x39004a=_0xabb2[_0x27c24e];return _0x39004a;};'use strict';var Sequelize=require(_0x2abb('0x0'));module[_0x2abb('0x1')]={'name':{'type':Sequelize[_0x2abb('0x2')],'unique':_0x2abb('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x2abb('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x2abb('0x4')](_0x2abb('0x5')),'get':function(){if(this[_0x2abb('0x6')](_0x2abb('0x7'))){return this[_0x2abb('0x6')]('preproduction')[_0x2abb('0x8')](_0x2abb('0x9'));}}},'production':{'type':Sequelize[_0x2abb('0x4')]('long'),'get':function(){if(this['getDataValue'](_0x2abb('0xa'))){return this[_0x2abb('0x6')]('production')[_0x2abb('0x8')]('utf8');}}},'savedAt':{'type':Sequelize[_0x2abb('0xb')]},'publishedAt':{'type':Sequelize[_0x2abb('0xb')]}};
\ No newline at end of file
index e4378e6..eb9a7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb9=['key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','pick','filter','where','merge','SquareProject','includeAll','include','findAll','rows','params','keys','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','production','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','status','json','offset','undefined','count','set','Content-Range','update','destroy','then','get','publish','agi','stringify','end','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type'];(function(_0x5ba421,_0x2f537a){var _0x59f637=function(_0x2e8136){while(--_0x2e8136){_0x5ba421['push'](_0x5ba421['shift']());}};_0x59f637(++_0x2f537a);}(_0x4fb9,0x146));var _0x94fb=function(_0x16c22e,_0x563387){_0x16c22e=_0x16c22e-0x0;var _0x3101a5=_0x4fb9[_0x16c22e];return _0x3101a5;};'use strict';var _=require('lodash');var Redis=require(_0x94fb('0x0'));var qs=require(_0x94fb('0x1'));var logger=require(_0x94fb('0x2'))('api');var config=require(_0x94fb('0x3'));var db=require(_0x94fb('0x4'))['db'];config['redis']=_[_0x94fb('0x5')](config[_0x94fb('0x6')],{'host':_0x94fb('0x7'),'port':0x18eb});var socket=require(_0x94fb('0x8'))(new Redis(config[_0x94fb('0x6')]));require(_0x94fb('0x9'))['register'](socket);function respondWithResult(_0x13689a,_0x262463){_0x262463=_0x262463||0xc8;return function(_0x1bf775){if(_0x1bf775){return _0x13689a[_0x94fb('0xa')](_0x262463)[_0x94fb('0xb')](_0x1bf775);}};}function respondWithFilteredResult(_0x2a77cd,_0x55a9e2){return function(_0x45644f){if(_0x45644f){var _0x517a30=typeof _0x55a9e2[_0x94fb('0xc')]===_0x94fb('0xd')&&typeof _0x55a9e2['limit']===_0x94fb('0xd');var _0x19b620=_0x45644f['count'];var _0x2c1de3=_0x517a30?0x0:_0x55a9e2[_0x94fb('0xc')];var _0x1fd79d=_0x517a30?_0x45644f[_0x94fb('0xe')]:_0x55a9e2[_0x94fb('0xc')]+_0x55a9e2['limit'];var _0x333d0d;if(_0x1fd79d>=_0x19b620){_0x1fd79d=_0x19b620;_0x333d0d=0xc8;}else{_0x333d0d=0xce;}_0x2a77cd[_0x94fb('0xa')](_0x333d0d);return _0x2a77cd[_0x94fb('0xf')](_0x94fb('0x10'),_0x2c1de3+'-'+_0x1fd79d+'/'+_0x19b620)['json'](_0x45644f);}return null;};}function saveUpdates(_0x5bd248){return function(_0x150c70){if(_0x150c70){return _0x150c70[_0x94fb('0x11')](_0x5bd248)['then'](function(_0x2d8480){return _0x2d8480;});}return null;};}function removeEntity(_0x8c8c2){return function(_0x5641fe){if(_0x5641fe){return _0x5641fe[_0x94fb('0x12')]()[_0x94fb('0x13')](function(){var _0x518af4=_0x5641fe[_0x94fb('0x14')]({'plain':!![]});var _0x478dc1='SquareProjects';return db['UserProfileResource'][_0x94fb('0x12')]({'where':{'type':_0x478dc1,'resourceId':_0x518af4['id']}})[_0x94fb('0x13')](function(){return _0x5641fe;});})[_0x94fb('0x13')](function(){var _0x1b7547=new Redis(config[_0x94fb('0x6')]);_0x1b7547[_0x94fb('0x15')](_0x94fb('0x16'),JSON[_0x94fb('0x17')]({'id':_0x5641fe['id'],'deleted':!![]}));})[_0x94fb('0x13')](function(){_0x8c8c2[_0x94fb('0xa')](0xcc)[_0x94fb('0x18')]();});}};}function handleEntityNotFound(_0x5342bf){return function(_0x279c37){if(!_0x279c37){_0x5342bf[_0x94fb('0x19')](0x194);}return _0x279c37;};}function handleError(_0x317adf,_0x229131){_0x229131=_0x229131||0x1f4;return function(_0x32de3c){logger[_0x94fb('0x1a')](_0x32de3c[_0x94fb('0x1b')]);if(_0x32de3c['name']){delete _0x32de3c[_0x94fb('0x1c')];}_0x317adf[_0x94fb('0xa')](_0x229131)[_0x94fb('0x1d')](_0x32de3c);};}exports[_0x94fb('0x1e')]=function(_0x5a59fa,_0x5b78a5){var _0x23fcfa={},_0x143b44={},_0x500fa1={'count':0x0,'rows':[]};var _0x41f5f3=_['map'](db['SquareProject'][_0x94fb('0x1f')],function(_0x58d263){return{'name':_0x58d263[_0x94fb('0x20')],'type':_0x58d263[_0x94fb('0x21')][_0x94fb('0x22')]};});_0x143b44[_0x94fb('0x23')]=_[_0x94fb('0x24')](_0x41f5f3,_0x94fb('0x1c'));_0x143b44[_0x94fb('0x25')]=_['keys'](_0x5a59fa[_0x94fb('0x25')]);_0x143b44[_0x94fb('0x26')]=_[_0x94fb('0x27')](_0x143b44[_0x94fb('0x23')],_0x143b44[_0x94fb('0x25')]);_0x23fcfa[_0x94fb('0x28')]=_['intersection'](_0x143b44[_0x94fb('0x23')],qs[_0x94fb('0x29')](_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x29')]));_0x23fcfa[_0x94fb('0x28')]=_0x23fcfa[_0x94fb('0x28')][_0x94fb('0x2a')]?_0x23fcfa[_0x94fb('0x28')]:_0x143b44[_0x94fb('0x23')];if(!_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x2b')](_0x94fb('0x2c'))){_0x23fcfa[_0x94fb('0x2d')]=qs[_0x94fb('0x2d')](_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x2d')]);_0x23fcfa[_0x94fb('0xc')]=qs['offset'](_0x5a59fa[_0x94fb('0x25')][_0x94fb('0xc')]);}_0x23fcfa[_0x94fb('0x2e')]=qs['sort'](_0x5a59fa['query']['sort']);_0x23fcfa['where']=qs[_0x94fb('0x26')](_[_0x94fb('0x2f')](_0x5a59fa[_0x94fb('0x25')],_0x143b44[_0x94fb('0x26')]),_0x41f5f3);if(_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x30')]){_0x23fcfa[_0x94fb('0x31')]=_['merge'](_0x23fcfa[_0x94fb('0x31')],{'$or':_[_0x94fb('0x24')](_0x41f5f3,function(_0x49a7a7){if(_0x49a7a7[_0x94fb('0x21')]!=='VIRTUAL'){var _0x1cc7b6={};_0x1cc7b6[_0x49a7a7[_0x94fb('0x1c')]]={'$like':'%'+_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x30')]+'%'};return _0x1cc7b6;}})});}_0x23fcfa=_[_0x94fb('0x32')]({},_0x23fcfa,_0x5a59fa['options']);var _0xea7c12={'where':_0x23fcfa[_0x94fb('0x31')]};return db[_0x94fb('0x33')][_0x94fb('0xe')](_0xea7c12)[_0x94fb('0x13')](function(_0x3b48d3){_0x500fa1[_0x94fb('0xe')]=_0x3b48d3;if(_0x5a59fa[_0x94fb('0x25')][_0x94fb('0x34')]){_0x23fcfa[_0x94fb('0x35')]=[{'all':!![]}];}return db[_0x94fb('0x33')][_0x94fb('0x36')](_0x23fcfa);})['then'](function(_0x3ca0af){_0x500fa1[_0x94fb('0x37')]=_0x3ca0af;return _0x500fa1;})['then'](respondWithFilteredResult(_0x5b78a5,_0x23fcfa))['catch'](handleError(_0x5b78a5,null));};exports['show']=function(_0x1c086c,_0x24cabc){var _0x4b38ca={'raw':![],'where':{'id':_0x1c086c[_0x94fb('0x38')]['id']}},_0xd12e3={};_0xd12e3[_0x94fb('0x23')]=_[_0x94fb('0x39')](db[_0x94fb('0x33')][_0x94fb('0x1f')]);_0xd12e3['query']=_[_0x94fb('0x39')](_0x1c086c[_0x94fb('0x25')]);_0xd12e3[_0x94fb('0x26')]=_[_0x94fb('0x27')](_0xd12e3[_0x94fb('0x23')],_0xd12e3[_0x94fb('0x25')]);_0x4b38ca[_0x94fb('0x28')]=_['intersection'](_0xd12e3[_0x94fb('0x23')],qs['fields'](_0x1c086c[_0x94fb('0x25')]['fields']));_0x4b38ca[_0x94fb('0x28')]=_0x4b38ca[_0x94fb('0x28')][_0x94fb('0x2a')]?_0x4b38ca[_0x94fb('0x28')]:_0xd12e3[_0x94fb('0x23')];if(_0x1c086c['query'][_0x94fb('0x34')]){_0x4b38ca[_0x94fb('0x35')]=[{'all':!![]}];}_0x4b38ca=_[_0x94fb('0x32')]({},_0x4b38ca,_0x1c086c['options']);return db[_0x94fb('0x33')][_0x94fb('0x3a')](_0x4b38ca)[_0x94fb('0x13')](handleEntityNotFound(_0x24cabc,null))[_0x94fb('0x13')](respondWithResult(_0x24cabc,null))[_0x94fb('0x3b')](handleError(_0x24cabc,null));};exports['create']=function(_0x435e6a,_0x4d2b45){return db['SquareProject'][_0x94fb('0x3c')](_0x435e6a[_0x94fb('0x3d')],{})[_0x94fb('0x13')](function(_0x226219){var _0x311d06=_0x435e6a[_0x94fb('0x3e')][_0x94fb('0x14')]({'plain':!![]});if(!_0x311d06)throw new Error(_0x94fb('0x3f'));if(_0x311d06[_0x94fb('0x40')]===_0x94fb('0x3e')){var _0xed7ab=_0x226219[_0x94fb('0x14')]({'plain':!![]});var _0x271fb1=_0x94fb('0x41');return db[_0x94fb('0x42')][_0x94fb('0x3a')]({'where':{'name':_0x271fb1,'userProfileId':_0x311d06[_0x94fb('0x43')]},'raw':!![]})[_0x94fb('0x13')](function(_0x25faee){if(_0x25faee&&_0x25faee[_0x94fb('0x44')]===0x0){return db[_0x94fb('0x45')][_0x94fb('0x3c')]({'name':_0xed7ab[_0x94fb('0x1c')],'resourceId':_0xed7ab['id'],'type':_0x25faee[_0x94fb('0x1c')],'sectionId':_0x25faee['id']},{})['then'](function(){return _0x226219;});}else{return _0x226219;}})[_0x94fb('0x3b')](function(_0x23507b){logger[_0x94fb('0x1a')](_0x94fb('0x46'),_0x23507b);throw _0x23507b;});}return _0x226219;})[_0x94fb('0x13')](respondWithResult(_0x4d2b45,0xc9))['catch'](handleError(_0x4d2b45,null));};exports['update']=function(_0x357af5,_0x304767){if(_0x357af5[_0x94fb('0x3d')]['id']){delete _0x357af5[_0x94fb('0x3d')]['id'];}return db[_0x94fb('0x33')][_0x94fb('0x3a')]({'where':{'id':_0x357af5[_0x94fb('0x38')]['id']}})['then'](handleEntityNotFound(_0x304767,null))[_0x94fb('0x13')](saveUpdates(_0x357af5[_0x94fb('0x3d')],null))[_0x94fb('0x13')](function(_0xba7b28){if(!_0xba7b28)return;var _0x2f1bfd=_0xba7b28[_0x94fb('0x14')]({'plain':!![]});return _0x2f1bfd;})[_0x94fb('0x13')](function(_0x508d56){var _0x5d0d82=new Redis(config[_0x94fb('0x6')]);_0x5d0d82[_0x94fb('0x15')](_0x94fb('0x16'),JSON[_0x94fb('0x17')](_[_0x94fb('0x2f')](_0x508d56,['id',_0x94fb('0x1c'),_0x94fb('0x47')])));return _0x508d56;})[_0x94fb('0x13')](respondWithResult(_0x304767,null))['catch'](handleError(_0x304767,null));};exports['destroy']=function(_0x51c2ed,_0x44deb2){return db[_0x94fb('0x33')][_0x94fb('0x3a')]({'where':{'id':_0x51c2ed['params']['id']}})['then'](handleEntityNotFound(_0x44deb2,null))[_0x94fb('0x13')](removeEntity(_0x44deb2,null))[_0x94fb('0x3b')](handleError(_0x44deb2,null));};
\ No newline at end of file
+var _0x30e3=['find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','production','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./squareProject.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','SquareProjects','UserProfileResource','publish','stringify','end','name','send','map','SquareProject','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','create','body','user','role','UserProfileSection'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x30e3,0x11c));var _0x330e=function(_0x1dac1f,_0xfefec9){_0x1dac1f=_0x1dac1f-0x0;var _0x44f6de=_0x30e3[_0x1dac1f];return _0x44f6de;};'use strict';var _=require('lodash');var Redis=require(_0x330e('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0x330e('0x1'))(_0x330e('0x2'));var config=require(_0x330e('0x3'));var db=require(_0x330e('0x4'))['db'];config[_0x330e('0x5')]=_[_0x330e('0x6')](config[_0x330e('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x330e('0x7'))(new Redis(config[_0x330e('0x5')]));require(_0x330e('0x8'))[_0x330e('0x9')](socket);function respondWithResult(_0x2f0fdd,_0x867720){_0x867720=_0x867720||0xc8;return function(_0x1fff12){if(_0x1fff12){return _0x2f0fdd[_0x330e('0xa')](_0x867720)[_0x330e('0xb')](_0x1fff12);}};}function respondWithFilteredResult(_0x59387f,_0x3b793e){return function(_0x4fd371){if(_0x4fd371){var _0x3ff73d=typeof _0x3b793e[_0x330e('0xc')]===_0x330e('0xd')&&typeof _0x3b793e[_0x330e('0xe')]===_0x330e('0xd');var _0x3a4f33=_0x4fd371[_0x330e('0xf')];var _0x4f26e9=_0x3ff73d?0x0:_0x3b793e[_0x330e('0xc')];var _0x95c6cc=_0x3ff73d?_0x4fd371[_0x330e('0xf')]:_0x3b793e['offset']+_0x3b793e['limit'];var _0xe2855b;if(_0x95c6cc>=_0x3a4f33){_0x95c6cc=_0x3a4f33;_0xe2855b=0xc8;}else{_0xe2855b=0xce;}_0x59387f[_0x330e('0xa')](_0xe2855b);return _0x59387f[_0x330e('0x10')](_0x330e('0x11'),_0x4f26e9+'-'+_0x95c6cc+'/'+_0x3a4f33)[_0x330e('0xb')](_0x4fd371);}return null;};}function saveUpdates(_0x3260f9){return function(_0x13224d){if(_0x13224d){return _0x13224d['update'](_0x3260f9)[_0x330e('0x12')](function(_0xbfd6ec){return _0xbfd6ec;});}return null;};}function removeEntity(_0x435c32){return function(_0x47196f){if(_0x47196f){return _0x47196f[_0x330e('0x13')]()[_0x330e('0x12')](function(){var _0xf6e55e=_0x47196f[_0x330e('0x14')]({'plain':!![]});var _0x46567c=_0x330e('0x15');return db[_0x330e('0x16')][_0x330e('0x13')]({'where':{'type':_0x46567c,'resourceId':_0xf6e55e['id']}})[_0x330e('0x12')](function(){return _0x47196f;});})[_0x330e('0x12')](function(){var _0x3f56e6=new Redis(config['redis']);_0x3f56e6[_0x330e('0x17')]('agi',JSON[_0x330e('0x18')]({'id':_0x47196f['id'],'deleted':!![]}));})[_0x330e('0x12')](function(){_0x435c32[_0x330e('0xa')](0xcc)[_0x330e('0x19')]();});}};}function handleEntityNotFound(_0x502ada){return function(_0x3bcd60){if(!_0x3bcd60){_0x502ada['sendStatus'](0x194);}return _0x3bcd60;};}function handleError(_0x27953b,_0x6c9785){_0x6c9785=_0x6c9785||0x1f4;return function(_0x1ae98d){logger['error'](_0x1ae98d['stack']);if(_0x1ae98d[_0x330e('0x1a')]){delete _0x1ae98d['name'];}_0x27953b[_0x330e('0xa')](_0x6c9785)[_0x330e('0x1b')](_0x1ae98d);};}exports['index']=function(_0x2cb279,_0x146a63){var _0x3c2a4f={},_0x3f4f15={},_0x31b05f={'count':0x0,'rows':[]};var _0x7934d6=_[_0x330e('0x1c')](db[_0x330e('0x1d')][_0x330e('0x1e')],function(_0x604683){return{'name':_0x604683[_0x330e('0x1f')],'type':_0x604683['type'][_0x330e('0x20')]};});_0x3f4f15[_0x330e('0x21')]=_[_0x330e('0x1c')](_0x7934d6,_0x330e('0x1a'));_0x3f4f15[_0x330e('0x22')]=_[_0x330e('0x23')](_0x2cb279[_0x330e('0x22')]);_0x3f4f15['filters']=_[_0x330e('0x24')](_0x3f4f15[_0x330e('0x21')],_0x3f4f15[_0x330e('0x22')]);_0x3c2a4f[_0x330e('0x25')]=_[_0x330e('0x24')](_0x3f4f15[_0x330e('0x21')],qs[_0x330e('0x26')](_0x2cb279[_0x330e('0x22')][_0x330e('0x26')]));_0x3c2a4f['attributes']=_0x3c2a4f[_0x330e('0x25')][_0x330e('0x27')]?_0x3c2a4f[_0x330e('0x25')]:_0x3f4f15[_0x330e('0x21')];if(!_0x2cb279['query'][_0x330e('0x28')](_0x330e('0x29'))){_0x3c2a4f['limit']=qs['limit'](_0x2cb279[_0x330e('0x22')]['limit']);_0x3c2a4f[_0x330e('0xc')]=qs[_0x330e('0xc')](_0x2cb279[_0x330e('0x22')][_0x330e('0xc')]);}_0x3c2a4f[_0x330e('0x2a')]=qs['sort'](_0x2cb279[_0x330e('0x22')]['sort']);_0x3c2a4f[_0x330e('0x2b')]=qs[_0x330e('0x2c')](_[_0x330e('0x2d')](_0x2cb279[_0x330e('0x22')],_0x3f4f15[_0x330e('0x2c')]),_0x7934d6);if(_0x2cb279[_0x330e('0x22')][_0x330e('0x2e')]){_0x3c2a4f[_0x330e('0x2b')]=_[_0x330e('0x2f')](_0x3c2a4f[_0x330e('0x2b')],{'$or':_[_0x330e('0x1c')](_0x7934d6,function(_0x40dbf4){if(_0x40dbf4[_0x330e('0x30')]!==_0x330e('0x31')){var _0x260508={};_0x260508[_0x40dbf4['name']]={'$like':'%'+_0x2cb279[_0x330e('0x22')][_0x330e('0x2e')]+'%'};return _0x260508;}})});}_0x3c2a4f=_[_0x330e('0x2f')]({},_0x3c2a4f,_0x2cb279[_0x330e('0x32')]);var _0x425879={'where':_0x3c2a4f['where']};return db[_0x330e('0x1d')][_0x330e('0xf')](_0x425879)[_0x330e('0x12')](function(_0x91ae68){_0x31b05f[_0x330e('0xf')]=_0x91ae68;if(_0x2cb279[_0x330e('0x22')][_0x330e('0x33')]){_0x3c2a4f[_0x330e('0x34')]=[{'all':!![]}];}return db[_0x330e('0x1d')]['findAll'](_0x3c2a4f);})[_0x330e('0x12')](function(_0x200a41){_0x31b05f[_0x330e('0x35')]=_0x200a41;return _0x31b05f;})[_0x330e('0x12')](respondWithFilteredResult(_0x146a63,_0x3c2a4f))[_0x330e('0x36')](handleError(_0x146a63,null));};exports[_0x330e('0x37')]=function(_0x366262,_0x157f4b){var _0x1c93c1={'raw':![],'where':{'id':_0x366262['params']['id']}},_0x36d94a={};_0x36d94a[_0x330e('0x21')]=_[_0x330e('0x23')](db[_0x330e('0x1d')][_0x330e('0x1e')]);_0x36d94a[_0x330e('0x22')]=_['keys'](_0x366262[_0x330e('0x22')]);_0x36d94a['filters']=_['intersection'](_0x36d94a[_0x330e('0x21')],_0x36d94a[_0x330e('0x22')]);_0x1c93c1[_0x330e('0x25')]=_[_0x330e('0x24')](_0x36d94a[_0x330e('0x21')],qs[_0x330e('0x26')](_0x366262[_0x330e('0x22')][_0x330e('0x26')]));_0x1c93c1[_0x330e('0x25')]=_0x1c93c1[_0x330e('0x25')][_0x330e('0x27')]?_0x1c93c1[_0x330e('0x25')]:_0x36d94a[_0x330e('0x21')];if(_0x366262[_0x330e('0x22')][_0x330e('0x33')]){_0x1c93c1[_0x330e('0x34')]=[{'all':!![]}];}_0x1c93c1=_['merge']({},_0x1c93c1,_0x366262[_0x330e('0x32')]);return db[_0x330e('0x1d')]['find'](_0x1c93c1)['then'](handleEntityNotFound(_0x157f4b,null))[_0x330e('0x12')](respondWithResult(_0x157f4b,null))[_0x330e('0x36')](handleError(_0x157f4b,null));};exports[_0x330e('0x38')]=function(_0x1d663e,_0x1e123b){return db[_0x330e('0x1d')]['create'](_0x1d663e[_0x330e('0x39')],{})[_0x330e('0x12')](function(_0x1a302b){var _0x4ddb0f=_0x1d663e[_0x330e('0x3a')]['get']({'plain':!![]});if(!_0x4ddb0f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ddb0f[_0x330e('0x3b')]==='user'){var _0x1e218c=_0x1a302b[_0x330e('0x14')]({'plain':!![]});var _0x5b48d5=_0x330e('0x15');return db[_0x330e('0x3c')][_0x330e('0x3d')]({'where':{'name':_0x5b48d5,'userProfileId':_0x4ddb0f[_0x330e('0x3e')]},'raw':!![]})['then'](function(_0x15128a){if(_0x15128a&&_0x15128a[_0x330e('0x3f')]===0x0){return db[_0x330e('0x16')]['create']({'name':_0x1e218c[_0x330e('0x1a')],'resourceId':_0x1e218c['id'],'type':_0x15128a[_0x330e('0x1a')],'sectionId':_0x15128a['id']},{})['then'](function(){return _0x1a302b;});}else{return _0x1a302b;}})[_0x330e('0x36')](function(_0x443465){logger[_0x330e('0x40')](_0x330e('0x41'),_0x443465);throw _0x443465;});}return _0x1a302b;})[_0x330e('0x12')](respondWithResult(_0x1e123b,0xc9))[_0x330e('0x36')](handleError(_0x1e123b,null));};exports[_0x330e('0x42')]=function(_0x6ddb51,_0x58cb9b){if(_0x6ddb51[_0x330e('0x39')]['id']){delete _0x6ddb51[_0x330e('0x39')]['id'];}return db[_0x330e('0x1d')][_0x330e('0x3d')]({'where':{'id':_0x6ddb51[_0x330e('0x43')]['id']}})[_0x330e('0x12')](handleEntityNotFound(_0x58cb9b,null))[_0x330e('0x12')](saveUpdates(_0x6ddb51[_0x330e('0x39')],null))[_0x330e('0x12')](function(_0x3f28d2){if(!_0x3f28d2)return;var _0x289d5f=_0x3f28d2[_0x330e('0x14')]({'plain':!![]});return _0x289d5f;})[_0x330e('0x12')](function(_0x377b72){var _0x4002ef=new Redis(config[_0x330e('0x5')]);_0x4002ef[_0x330e('0x17')]('agi',JSON[_0x330e('0x18')](_['pick'](_0x377b72,['id',_0x330e('0x1a'),_0x330e('0x44')])));return _0x377b72;})[_0x330e('0x12')](respondWithResult(_0x58cb9b,null))['catch'](handleError(_0x58cb9b,null));};exports[_0x330e('0x13')]=function(_0x45e1e9,_0x386251){return db[_0x330e('0x1d')]['find']({'where':{'id':_0x45e1e9[_0x330e('0x43')]['id']}})[_0x330e('0x12')](handleEntityNotFound(_0x386251,null))[_0x330e('0x12')](removeEntity(_0x386251,null))[_0x330e('0x36')](handleError(_0x386251,null));};
\ No newline at end of file
index 9061f12..724473f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4067=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update'];(function(_0x346880,_0x5a55a3){var _0x3d696b=function(_0x3035fd){while(--_0x3035fd){_0x346880['push'](_0x346880['shift']());}};_0x3d696b(++_0x5a55a3);}(_0x4067,0xe1));var _0x7406=function(_0x31073b,_0x46d38c){_0x31073b=_0x31073b-0x0;var _0x43680a=_0x4067[_0x31073b];return _0x43680a;};'use strict';var EventEmitter=require(_0x7406('0x0'));var SquareProject=require(_0x7406('0x1'))['db'][_0x7406('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x7406('0x3')](0x0);var events={'afterCreate':_0x7406('0x4'),'afterUpdate':_0x7406('0x5'),'afterDestroy':_0x7406('0x6')};function emitEvent(_0x3c80e1){return function(_0x2b7db1,_0x36ba95,_0x1d643f){SquareProjectEvents[_0x7406('0x7')](_0x3c80e1+':'+_0x2b7db1['id'],_0x2b7db1);SquareProjectEvents[_0x7406('0x7')](_0x3c80e1,_0x2b7db1);_0x1d643f(null);};}for(var e in events){if(events[_0x7406('0x8')](e)){var event=events[e];SquareProject[_0x7406('0x9')](e,emitEvent(event));}}module[_0x7406('0xa')]=SquareProjectEvents;
\ No newline at end of file
+var _0x5648=['setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x23126e,_0x572d61){var _0x4186bf=function(_0x2ced5e){while(--_0x2ced5e){_0x23126e['push'](_0x23126e['shift']());}};_0x4186bf(++_0x572d61);}(_0x5648,0x12c));var _0x8564=function(_0x54158c,_0x3a4bbb){_0x54158c=_0x54158c-0x0;var _0x4f7d28=_0x5648[_0x54158c];return _0x4f7d28;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x8564('0x0'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x8564('0x1')](0x0);var events={'afterCreate':_0x8564('0x2'),'afterUpdate':_0x8564('0x3'),'afterDestroy':'remove'};function emitEvent(_0xdcfc59){return function(_0x17a4dd,_0x25de39,_0x5b345c){SquareProjectEvents[_0x8564('0x4')](_0xdcfc59+':'+_0x17a4dd['id'],_0x17a4dd);SquareProjectEvents[_0x8564('0x4')](_0xdcfc59,_0x17a4dd);_0x5b345c(null);};}for(var e in events){if(events[_0x8564('0x5')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x8564('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 01d778a..c255dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b2=['preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','path','rimraf','exports','define','square_projects','changed'];(function(_0x5582f8,_0x4c83f6){var _0x3190a1=function(_0xe57d83){while(--_0xe57d83){_0x5582f8['push'](_0x5582f8['shift']());}};_0x3190a1(++_0x4c83f6);}(_0xb0b2,0xc4));var _0x2b0b=function(_0x93bee,_0x358a57){_0x93bee=_0x93bee-0x0;var _0x42ca69=_0xb0b2[_0x93bee];return _0x42ca69;};'use strict';var _=require(_0x2b0b('0x0'));var util=require(_0x2b0b('0x1'));var logger=require('../../config/logger')(_0x2b0b('0x2'));var moment=require(_0x2b0b('0x3'));var BPromise=require(_0x2b0b('0x4'));var rp=require(_0x2b0b('0x5'));var fs=require('fs');var path=require(_0x2b0b('0x6'));var rimraf=require(_0x2b0b('0x7'));var config=require('../../config/environment');var attributes=require('./squareProject.attributes');module[_0x2b0b('0x8')]=function(_0x2cce0c,_0x561f68){return _0x2cce0c[_0x2b0b('0x9')]('SquareProject',attributes,{'tableName':_0x2b0b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2556b6,_0x30fe1d,_0x5a88df){if(_0x2556b6[_0x2b0b('0xb')](_0x2b0b('0xc'))){_0x2556b6[_0x2b0b('0xd')]=moment()[_0x2b0b('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x2556b6[_0x2b0b('0xb')]('production')){_0x2556b6['publishedAt']=moment()[_0x2b0b('0xe')](_0x2b0b('0xf'));}_0x5a88df(null,_0x2556b6);}}});};
\ No newline at end of file
+var _0x33b8=['square_projects','preproduction','changed','production','publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject'];(function(_0x179b74,_0x5dc97d){var _0x268f76=function(_0x19c8c2){while(--_0x19c8c2){_0x179b74['push'](_0x179b74['shift']());}};_0x268f76(++_0x5dc97d);}(_0x33b8,0xd7));var _0x833b=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0x33b8[_0x46a671];return _0x526d75;};'use strict';var _=require(_0x833b('0x0'));var util=require('util');var logger=require(_0x833b('0x1'))(_0x833b('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(_0x833b('0x3'));var config=require(_0x833b('0x4'));var attributes=require(_0x833b('0x5'));module[_0x833b('0x6')]=function(_0xd5b836,_0x2f5e25){return _0xd5b836[_0x833b('0x7')](_0x833b('0x8'),attributes,{'tableName':_0x833b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x59fb6e,_0x4cf5f0,_0x3e82ab){if(_0x59fb6e['changed'](_0x833b('0xa'))){_0x59fb6e['savedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x59fb6e[_0x833b('0xb')](_0x833b('0xc'))){_0x59fb6e[_0x833b('0xd')]=moment()[_0x833b('0xe')](_0x833b('0xf'));}_0x3e82ab(null,_0x59fb6e);}}});};
\ No newline at end of file
index 40744b0..795e796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7988=['GetSquareProjects','findAll','options','raw','where','attributes','limit','include','model','map','then','info','debug','catch','error','ShowSquareProject','SquareProject','find','stringify','message','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register'];(function(_0x291d64,_0x27e47a){var _0x4f35d6=function(_0x4daacd){while(--_0x4daacd){_0x291d64['push'](_0x291d64['shift']());}};_0x4f35d6(++_0x27e47a);}(_0x7988,0x134));var _0x8798=function(_0x4b5963,_0x526267){_0x4b5963=_0x4b5963-0x0;var _0x45ea47=_0x7988[_0x4b5963];return _0x45ea47;};'use strict';var _=require(_0x8798('0x0'));var Redis=require(_0x8798('0x1'));var db=require(_0x8798('0x2'))['db'];var logger=require(_0x8798('0x3'))(_0x8798('0x4'));var config=require(_0x8798('0x5'));config[_0x8798('0x6')]=_[_0x8798('0x7')](config[_0x8798('0x6')],{'host':_0x8798('0x8'),'port':0x18eb});var socket=require(_0x8798('0x9'))(new Redis(config['redis']));require(_0x8798('0xa'))[_0x8798('0xb')](socket);exports[_0x8798('0xc')]=function(_0x354b7c){var _0x27749a=this;return new Promise(function(_0x340f25,_0x2a0089){return db['SquareProject'][_0x8798('0xd')]({'raw':_0x354b7c[_0x8798('0xe')]?_0x354b7c[_0x8798('0xe')][_0x8798('0xf')]===undefined?!![]:![]:!![],'where':_0x354b7c['options']?_0x354b7c['options'][_0x8798('0x10')]||null:null,'attributes':_0x354b7c['options']?_0x354b7c[_0x8798('0xe')][_0x8798('0x11')]||null:null,'limit':_0x354b7c[_0x8798('0xe')]?_0x354b7c['options'][_0x8798('0x12')]||null:null,'include':_0x354b7c[_0x8798('0xe')]?_0x354b7c[_0x8798('0xe')][_0x8798('0x13')]?_['map'](_0x354b7c[_0x8798('0xe')][_0x8798('0x13')],function(_0xa36257){return{'model':db[_0xa36257[_0x8798('0x14')]],'as':_0xa36257['as'],'attributes':_0xa36257[_0x8798('0x11')],'include':_0xa36257[_0x8798('0x13')]?_[_0x8798('0x15')](_0xa36257['include'],function(_0x32e856){return{'model':db[_0x32e856[_0x8798('0x14')]],'as':_0x32e856['as'],'attributes':_0x32e856[_0x8798('0x11')],'include':_0x32e856[_0x8798('0x13')]?_[_0x8798('0x15')](_0x32e856[_0x8798('0x13')],function(_0x3562d5){return{'model':db[_0x3562d5[_0x8798('0x14')]],'as':_0x3562d5['as'],'attributes':_0x3562d5[_0x8798('0x11')]};}):[]};}):[]};}):[]:[]})[_0x8798('0x16')](function(_0x3d036){logger[_0x8798('0x17')](_0x8798('0xc'),_0x354b7c);logger[_0x8798('0x18')](_0x8798('0xc'),_0x354b7c,JSON['stringify'](_0x3d036));_0x340f25(_0x3d036);})[_0x8798('0x19')](function(_0x462f17){logger[_0x8798('0x1a')](_0x8798('0xc'),_0x462f17['message'],_0x354b7c);_0x2a0089(_0x27749a['error'](0x1f4,_0x462f17['message']));});});};exports[_0x8798('0x1b')]=function(_0x445e35){var _0x13698f=this;return new Promise(function(_0x308836,_0x5c9b76){return db[_0x8798('0x1c')][_0x8798('0x1d')]({'raw':_0x445e35[_0x8798('0xe')]?_0x445e35[_0x8798('0xe')][_0x8798('0xf')]===undefined?!![]:![]:!![],'where':_0x445e35[_0x8798('0xe')]?_0x445e35['options'][_0x8798('0x10')]||null:null,'attributes':_0x445e35[_0x8798('0xe')]?_0x445e35[_0x8798('0xe')][_0x8798('0x11')]||null:null,'include':_0x445e35[_0x8798('0xe')]?_0x445e35[_0x8798('0xe')]['include']?_[_0x8798('0x15')](_0x445e35[_0x8798('0xe')][_0x8798('0x13')],function(_0x4ad4fa){return{'model':db[_0x4ad4fa[_0x8798('0x14')]],'as':_0x4ad4fa['as'],'attributes':_0x4ad4fa[_0x8798('0x11')],'include':_0x4ad4fa[_0x8798('0x13')]?_['map'](_0x4ad4fa['include'],function(_0x5e70e9){return{'model':db[_0x5e70e9[_0x8798('0x14')]],'as':_0x5e70e9['as'],'attributes':_0x5e70e9[_0x8798('0x11')],'include':_0x5e70e9['include']?_['map'](_0x5e70e9[_0x8798('0x13')],function(_0x341c74){return{'model':db[_0x341c74[_0x8798('0x14')]],'as':_0x341c74['as'],'attributes':_0x341c74[_0x8798('0x11')]};}):[]};}):[]};}):[]:[]})[_0x8798('0x16')](function(_0x25b6ed){logger['info'](_0x8798('0x1b'),_0x445e35);logger[_0x8798('0x18')]('ShowSquareProject',_0x445e35,JSON[_0x8798('0x1e')](_0x25b6ed));_0x308836(_0x25b6ed);})[_0x8798('0x19')](function(_0x487114){logger[_0x8798('0x1a')](_0x8798('0x1b'),_0x487114['message'],_0x445e35);_0x5c9b76(_0x13698f[_0x8798('0x1a')](0x1f4,_0x487114[_0x8798('0x1f')]));});});};
\ No newline at end of file
+var _0x95b3=['ioredis','../../config/logger','../../config/environment','defaults','redis','./squareProject.socket','register','SquareProject','findAll','options','raw','where','attributes','limit','map','include','model','info','GetSquareProjects','debug','catch','error','message','ShowSquareProject','then','stringify'];(function(_0x34da86,_0x16cd32){var _0x396bc1=function(_0x220f6f){while(--_0x220f6f){_0x34da86['push'](_0x34da86['shift']());}};_0x396bc1(++_0x16cd32);}(_0x95b3,0xb6));var _0x395b=function(_0x412505,_0x39533a){_0x412505=_0x412505-0x0;var _0xaedf91=_0x95b3[_0x412505];return _0xaedf91;};'use strict';var _=require('lodash');var Redis=require(_0x395b('0x0'));var db=require('../../mysqldb')['db'];var logger=require(_0x395b('0x1'))('rpc');var config=require(_0x395b('0x2'));config['redis']=_[_0x395b('0x3')](config[_0x395b('0x4')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x395b('0x4')]));require(_0x395b('0x5'))[_0x395b('0x6')](socket);exports['GetSquareProjects']=function(_0x5ed637){var _0x254676=this;return new Promise(function(_0x74a83a,_0x12b323){return db[_0x395b('0x7')][_0x395b('0x8')]({'raw':_0x5ed637[_0x395b('0x9')]?_0x5ed637[_0x395b('0x9')][_0x395b('0xa')]===undefined?!![]:![]:!![],'where':_0x5ed637['options']?_0x5ed637[_0x395b('0x9')][_0x395b('0xb')]||null:null,'attributes':_0x5ed637[_0x395b('0x9')]?_0x5ed637[_0x395b('0x9')][_0x395b('0xc')]||null:null,'limit':_0x5ed637['options']?_0x5ed637['options'][_0x395b('0xd')]||null:null,'include':_0x5ed637['options']?_0x5ed637['options']['include']?_[_0x395b('0xe')](_0x5ed637[_0x395b('0x9')][_0x395b('0xf')],function(_0x482bbc){return{'model':db[_0x482bbc['model']],'as':_0x482bbc['as'],'attributes':_0x482bbc[_0x395b('0xc')],'include':_0x482bbc[_0x395b('0xf')]?_[_0x395b('0xe')](_0x482bbc['include'],function(_0x54ee8c){return{'model':db[_0x54ee8c[_0x395b('0x10')]],'as':_0x54ee8c['as'],'attributes':_0x54ee8c[_0x395b('0xc')],'include':_0x54ee8c[_0x395b('0xf')]?_[_0x395b('0xe')](_0x54ee8c[_0x395b('0xf')],function(_0x15066c){return{'model':db[_0x15066c[_0x395b('0x10')]],'as':_0x15066c['as'],'attributes':_0x15066c[_0x395b('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5081fc){logger[_0x395b('0x11')](_0x395b('0x12'),_0x5ed637);logger[_0x395b('0x13')](_0x395b('0x12'),_0x5ed637,JSON['stringify'](_0x5081fc));_0x74a83a(_0x5081fc);})[_0x395b('0x14')](function(_0x47979d){logger[_0x395b('0x15')]('GetSquareProjects',_0x47979d[_0x395b('0x16')],_0x5ed637);_0x12b323(_0x254676[_0x395b('0x15')](0x1f4,_0x47979d[_0x395b('0x16')]));});});};exports[_0x395b('0x17')]=function(_0x59bd7b){var _0x557e35=this;return new Promise(function(_0x3fdf3d,_0x4afd3d){return db['SquareProject']['find']({'raw':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options'][_0x395b('0xa')]===undefined?!![]:![]:!![],'where':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options']['where']||null:null,'attributes':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b['options'][_0x395b('0xc')]||null:null,'include':_0x59bd7b[_0x395b('0x9')]?_0x59bd7b[_0x395b('0x9')][_0x395b('0xf')]?_[_0x395b('0xe')](_0x59bd7b[_0x395b('0x9')][_0x395b('0xf')],function(_0x213564){return{'model':db[_0x213564['model']],'as':_0x213564['as'],'attributes':_0x213564['attributes'],'include':_0x213564[_0x395b('0xf')]?_['map'](_0x213564[_0x395b('0xf')],function(_0x405826){return{'model':db[_0x405826[_0x395b('0x10')]],'as':_0x405826['as'],'attributes':_0x405826[_0x395b('0xc')],'include':_0x405826[_0x395b('0xf')]?_['map'](_0x405826['include'],function(_0x1ab8ae){return{'model':db[_0x1ab8ae[_0x395b('0x10')]],'as':_0x1ab8ae['as'],'attributes':_0x1ab8ae[_0x395b('0xc')]};}):[]};}):[]};}):[]:[]})[_0x395b('0x18')](function(_0x313795){logger['info'](_0x395b('0x17'),_0x59bd7b);logger[_0x395b('0x13')](_0x395b('0x17'),_0x59bd7b,JSON[_0x395b('0x19')](_0x313795));_0x3fdf3d(_0x313795);})[_0x395b('0x14')](function(_0x407bb1){logger[_0x395b('0x15')](_0x395b('0x17'),_0x407bb1['message'],_0x59bd7b);_0x4afd3d(_0x557e35[_0x395b('0x15')](0x1f4,_0x407bb1[_0x395b('0x16')]));});});};
\ No newline at end of file
index 730bb45..dbba17a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de0=['squareProject:','remove','removeListener'];(function(_0x108181,_0x374a37){var _0x17f2a2=function(_0x3616d7){while(--_0x3616d7){_0x108181['push'](_0x108181['shift']());}};_0x17f2a2(++_0x374a37);}(_0x4de0,0x1ba));var _0x04de=function(_0x585ff6,_0x14cf47){_0x585ff6=_0x585ff6-0x0;var _0x5a449e=_0x4de0[_0x585ff6];return _0x5a449e;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save',_0x04de('0x0'),'update'];function createListener(_0x54b249,_0x1f7b80){return function(_0x3efe2b){_0x1f7b80['emit'](_0x54b249,_0x3efe2b);};}function removeListener(_0xcb2842,_0x28538b){return function(){SquareProjectEvents[_0x04de('0x1')](_0xcb2842,_0x28538b);};}exports['register']=function(_0x3690fe){for(var _0x54d713=0x0,_0x3805a4=events['length'];_0x54d713<_0x3805a4;_0x54d713++){var _0x31c8c0=events[_0x54d713];var _0x25ff51=createListener(_0x04de('0x2')+_0x31c8c0,_0x3690fe);SquareProjectEvents['on'](_0x31c8c0,_0x25ff51);}};
\ No newline at end of file
+var _0x0216=['register','length','squareProject:','remove','emit'];(function(_0x10a512,_0x59c8a3){var _0xd6e5e6=function(_0x49bb2f){while(--_0x49bb2f){_0x10a512['push'](_0x10a512['shift']());}};_0xd6e5e6(++_0x59c8a3);}(_0x0216,0x9e));var _0x6021=function(_0x5090e3,_0x36d336){_0x5090e3=_0x5090e3-0x0;var _0x437af6=_0x0216[_0x5090e3];return _0x437af6;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save',_0x6021('0x0'),'update'];function createListener(_0x212f18,_0x1ac32e){return function(_0x150335){_0x1ac32e[_0x6021('0x1')](_0x212f18,_0x150335);};}function removeListener(_0x392a40,_0x224089){return function(){SquareProjectEvents['removeListener'](_0x392a40,_0x224089);};}exports[_0x6021('0x2')]=function(_0x5adf51){for(var _0x4ee02d=0x0,_0x12f4cd=events[_0x6021('0x3')];_0x4ee02d<_0x12f4cd;_0x4ee02d++){var _0xa9c0f8=events[_0x4ee02d];var _0x5a0352=createListener(_0x6021('0x4')+_0xa9c0f8,_0x5adf51);SquareProjectEvents['on'](_0xa9c0f8,_0x5a0352);}};
\ No newline at end of file
index 204fe1d..db88094 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(_0x123547,_0x453119){var _0x55dc98=function(_0x25387f){while(--_0x25387f){_0x123547['push'](_0x123547['shift']());}};_0x55dc98(++_0x453119);}(_0x1cb9,0x14e));var _0x91cb=function(_0x37bbdc,_0x1dc177){_0x37bbdc=_0x37bbdc-0x0;var _0x267715=_0x1cb9[_0x37bbdc];return _0x267715;};'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 _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0x298cac,_0x1ae36e){var _0x24a351=function(_0x2f700d){while(--_0x2f700d){_0x298cac['push'](_0x298cac['shift']());}};_0x24a351(++_0x1ae36e);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'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['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
index dcba228..19c5377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7da7,0x10d));var _0x77da=function(_0x189d3c,_0x5efebf){_0x189d3c=_0x189d3c-0x0;var _0x485959=_0x7da7[_0x189d3c];return _0x485959;};'use strict';var Sequelize=require(_0x77da('0x0'));module[_0x77da('0x1')]={'uniqueid':{'type':Sequelize[_0x77da('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x77da('0x2')]},'extension':{'type':Sequelize[_0x77da('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x77da('0x2')]},'dnid':{'type':Sequelize[_0x77da('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x77da('0x2')]},'filename':{'type':Sequelize[_0x77da('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x77da('0x3')],'get':function(){var _0x47cf1d='';var _0x1191de=this[_0x77da('0x4')](_0x77da('0x5'));if(_0x1191de){_0x47cf1d=_0x1191de[_0x77da('0x6')](_0x1191de[_0x77da('0x7')]('.'));}return _0x47cf1d;}}};
\ No newline at end of file
+var _0xee14=['VIRTUAL','getDataValue','savePath','substring','STRING'];(function(_0x1eb89f,_0x4f3443){var _0x269225=function(_0x4f8096){while(--_0x4f8096){_0x1eb89f['push'](_0x1eb89f['shift']());}};_0x269225(++_0x4f3443);}(_0xee14,0x13a));var _0x4ee1=function(_0x8386ab,_0x18bf29){_0x8386ab=_0x8386ab-0x0;var _0x854811=_0xee14[_0x8386ab];return _0x854811;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x4ee1('0x0')]},'callerid':{'type':Sequelize[_0x4ee1('0x0')]},'calleridname':{'type':Sequelize[_0x4ee1('0x0')]},'context':{'type':Sequelize[_0x4ee1('0x0')]},'extension':{'type':Sequelize[_0x4ee1('0x0')]},'priority':{'type':Sequelize[_0x4ee1('0x0')]},'accountcode':{'type':Sequelize[_0x4ee1('0x0')]},'dnid':{'type':Sequelize[_0x4ee1('0x0')]},'projectName':{'type':Sequelize[_0x4ee1('0x0')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x4ee1('0x0')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x4ee1('0x1')],'get':function(){var _0x3a45a3='';var _0x187656=this[_0x4ee1('0x2')](_0x4ee1('0x3'));if(_0x187656){_0x3a45a3=_0x187656[_0x4ee1('0x4')](_0x187656['lastIndexOf']('.'));}return _0x3a45a3;}}};
\ No newline at end of file
index a63bf63..725780e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x983a=['info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','SquareRecording','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','show','rawAttributes','catch','create','body','find','params','../../components/encryptor','type','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','download','extname','SquareRecording\x20not\x20found','Not\x20found','destroy','isNil','Entity\x20not\x20found'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0x983a,0xca));var _0xa983=function(_0x38fa8c,_0x439c5c){_0x38fa8c=_0x38fa8c-0x0;var _0x99aa12=_0x983a[_0x38fa8c];return _0x99aa12;};'use strict';var emlformat=require(_0xa983('0x0'));var rimraf=require(_0xa983('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa983('0x2'));var moment=require('moment');var BPromise=require(_0xa983('0x3'));var Mustache=require(_0xa983('0x4'));var util=require(_0xa983('0x5'));var path=require(_0xa983('0x6'));var sox=require('sox');var csv=require(_0xa983('0x7'));var ejs=require(_0xa983('0x8'));var fs=require('fs');var fs_extra=require(_0xa983('0x9'));var _=require(_0xa983('0xa'));var squel=require(_0xa983('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa983('0xc'));var toCsv=require(_0xa983('0x7'));var querystring=require(_0xa983('0xd'));var Papa=require('papaparse');var Redis=require(_0xa983('0xe'));var authService=require(_0xa983('0xf'));var qs=require(_0xa983('0x10'));var as=require(_0xa983('0x11'));var hardwareService=require(_0xa983('0x12'));var logger=require(_0xa983('0x13'))(_0xa983('0x14'));var utils=require(_0xa983('0x15'));var config=require(_0xa983('0x16'));var licenseUtil=require(_0xa983('0x17'));var db=require(_0xa983('0x18'))['db'];function respondWithStatusCode(_0x1a33ad,_0x10de82){_0x10de82=_0x10de82||0xcc;return function(_0x593856){if(_0x593856){return _0x1a33ad[_0xa983('0x19')](_0x10de82);}return _0x1a33ad['status'](_0x10de82)[_0xa983('0x1a')]();};}function respondWithResult(_0x3a632a,_0x36ebae){_0x36ebae=_0x36ebae||0xc8;return function(_0x4571a9){if(_0x4571a9){return _0x3a632a[_0xa983('0x1b')](_0x36ebae)['json'](_0x4571a9);}};}function respondWithFilteredResult(_0x21f8c8,_0x3fb1f3){return function(_0x1eda10){if(_0x1eda10){var _0x455807=typeof _0x3fb1f3[_0xa983('0x1c')]===_0xa983('0x1d')&&typeof _0x3fb1f3[_0xa983('0x1e')]==='undefined';var _0x188d68=_0x1eda10[_0xa983('0x1f')];var _0x5ef0f8=_0x455807?0x0:_0x3fb1f3[_0xa983('0x1c')];var _0x11cf8f=_0x455807?_0x1eda10[_0xa983('0x1f')]:_0x3fb1f3['offset']+_0x3fb1f3[_0xa983('0x1e')];var _0x35c9bd;if(_0x11cf8f>=_0x188d68){_0x11cf8f=_0x188d68;_0x35c9bd=0xc8;}else{_0x35c9bd=0xce;}_0x21f8c8[_0xa983('0x1b')](_0x35c9bd);return _0x21f8c8['set'](_0xa983('0x20'),_0x5ef0f8+'-'+_0x11cf8f+'/'+_0x188d68)[_0xa983('0x21')](_0x1eda10);}return null;};}function patchUpdates(_0x2c4c1d){return function(_0x254a09){try{jsonpatch[_0xa983('0x22')](_0x254a09,_0x2c4c1d,!![]);}catch(_0x580bcc){return BPromise[_0xa983('0x23')](_0x580bcc);}return _0x254a09[_0xa983('0x24')]();};}function saveUpdates(_0x3557c4,_0xa69f19){return function(_0x3fa797){if(_0x3fa797){return _0x3fa797[_0xa983('0x25')](_0x3557c4)[_0xa983('0x26')](function(_0x1a9f11){return _0x1a9f11;});}return null;};}function removeEntity(_0xfdec0c,_0x4365c8){return function(_0x500619){if(_0x500619){return _0x500619['destroy']()['then'](function(){_0xfdec0c[_0xa983('0x1b')](0xcc)[_0xa983('0x1a')]();});}};}function handleEntityNotFound(_0x370899,_0x1eb499){return function(_0x53d59c){if(!_0x53d59c){_0x370899[_0xa983('0x19')](0x194);}return _0x53d59c;};}function handleError(_0x17058f,_0x194377){_0x194377=_0x194377||0x1f4;return function(_0xa1247f){logger[_0xa983('0x27')](_0xa1247f[_0xa983('0x28')]);if(_0xa1247f[_0xa983('0x29')]){delete _0xa1247f[_0xa983('0x29')];}_0x17058f[_0xa983('0x1b')](_0x194377)[_0xa983('0x2a')](_0xa1247f);};}exports[_0xa983('0x2b')]=function(_0x1933e0,_0x1ce610){var _0x18d100={},_0x631c82={},_0x5970d7={'count':0x0,'rows':[]};var _0x5b3e6a=_[_0xa983('0x2c')](db[_0xa983('0x2d')]['rawAttributes'],function(_0x56e177){return{'name':_0x56e177['fieldName'],'type':_0x56e177['type'][_0xa983('0x2e')]};});_0x631c82[_0xa983('0x2f')]=_['map'](_0x5b3e6a,_0xa983('0x29'));_0x631c82[_0xa983('0x30')]=_[_0xa983('0x31')](_0x1933e0[_0xa983('0x30')]);_0x631c82[_0xa983('0x32')]=_['intersection'](_0x631c82[_0xa983('0x2f')],_0x631c82[_0xa983('0x30')]);_0x18d100[_0xa983('0x33')]=_[_0xa983('0x34')](_0x631c82[_0xa983('0x2f')],qs[_0xa983('0x35')](_0x1933e0[_0xa983('0x30')][_0xa983('0x35')]));_0x18d100[_0xa983('0x33')]=_0x18d100[_0xa983('0x33')][_0xa983('0x36')]?_0x18d100[_0xa983('0x33')]:_0x631c82[_0xa983('0x2f')];if(!_0x1933e0['query'][_0xa983('0x37')](_0xa983('0x38'))){_0x18d100[_0xa983('0x1e')]=qs[_0xa983('0x1e')](_0x1933e0['query'][_0xa983('0x1e')]);_0x18d100['offset']=qs['offset'](_0x1933e0[_0xa983('0x30')][_0xa983('0x1c')]);}_0x18d100['order']=qs[_0xa983('0x39')](_0x1933e0[_0xa983('0x30')][_0xa983('0x39')]);_0x18d100[_0xa983('0x3a')]=qs['filters'](_[_0xa983('0x3b')](_0x1933e0[_0xa983('0x30')],_0x631c82[_0xa983('0x32')]),_0x5b3e6a);if(_0x1933e0[_0xa983('0x30')]['filter']){_0x18d100[_0xa983('0x3a')]=_[_0xa983('0x3c')](_0x18d100[_0xa983('0x3a')],{'$or':_['map'](_0x5b3e6a,function(_0x1b45cd){if(_0x1b45cd['type']!==_0xa983('0x3d')){var _0x545602={};_0x545602[_0x1b45cd[_0xa983('0x29')]]={'$like':'%'+_0x1933e0[_0xa983('0x30')]['filter']+'%'};return _0x545602;}})});}_0x18d100=_[_0xa983('0x3c')]({},_0x18d100,_0x1933e0[_0xa983('0x3e')]);var _0x3dc541={'where':_0x18d100[_0xa983('0x3a')]};return db['SquareRecording'][_0xa983('0x1f')](_0x3dc541)['then'](function(_0x13bddf){_0x5970d7[_0xa983('0x1f')]=_0x13bddf;if(_0x1933e0[_0xa983('0x30')][_0xa983('0x3f')]){_0x18d100[_0xa983('0x40')]=[{'all':!![]}];}return db[_0xa983('0x2d')]['findAll'](_0x18d100);})[_0xa983('0x26')](function(_0x56c84c){_0x5970d7[_0xa983('0x41')]=_0x56c84c;return _0x5970d7;})[_0xa983('0x26')](respondWithFilteredResult(_0x1ce610,_0x18d100))['catch'](handleError(_0x1ce610,null));};exports[_0xa983('0x42')]=function(_0x13776f,_0x2a92e0){var _0x3bffc8={'raw':!![],'where':{'id':_0x13776f['params']['id']}},_0x12e9f9={};_0x12e9f9[_0xa983('0x2f')]=_[_0xa983('0x31')](db[_0xa983('0x2d')][_0xa983('0x43')]);_0x12e9f9[_0xa983('0x30')]=_[_0xa983('0x31')](_0x13776f[_0xa983('0x30')]);_0x12e9f9[_0xa983('0x32')]=_[_0xa983('0x34')](_0x12e9f9[_0xa983('0x2f')],_0x12e9f9[_0xa983('0x30')]);_0x3bffc8[_0xa983('0x33')]=_[_0xa983('0x34')](_0x12e9f9[_0xa983('0x2f')],qs[_0xa983('0x35')](_0x13776f[_0xa983('0x30')][_0xa983('0x35')]));_0x3bffc8[_0xa983('0x33')]=_0x3bffc8[_0xa983('0x33')][_0xa983('0x36')]?_0x3bffc8[_0xa983('0x33')]:_0x12e9f9['model'];if(_0x13776f[_0xa983('0x30')]['includeAll']){_0x3bffc8[_0xa983('0x40')]=[{'all':!![]}];}_0x3bffc8=_[_0xa983('0x3c')]({},_0x3bffc8,_0x13776f[_0xa983('0x3e')]);return db[_0xa983('0x2d')]['find'](_0x3bffc8)[_0xa983('0x26')](handleEntityNotFound(_0x2a92e0,null))[_0xa983('0x26')](respondWithResult(_0x2a92e0,null))[_0xa983('0x44')](handleError(_0x2a92e0,null));};exports[_0xa983('0x45')]=function(_0x379d5b,_0x3e9f7e){return db[_0xa983('0x2d')]['create'](_0x379d5b[_0xa983('0x46')],{})[_0xa983('0x26')](respondWithResult(_0x3e9f7e,0xc9))[_0xa983('0x44')](handleError(_0x3e9f7e,null));};exports[_0xa983('0x25')]=function(_0x1dd4dd,_0x957d4d){if(_0x1dd4dd[_0xa983('0x46')]['id']){delete _0x1dd4dd[_0xa983('0x46')]['id'];}return db['SquareRecording'][_0xa983('0x47')]({'where':{'id':_0x1dd4dd[_0xa983('0x48')]['id']}})[_0xa983('0x26')](handleEntityNotFound(_0x957d4d,null))[_0xa983('0x26')](saveUpdates(_0x1dd4dd[_0xa983('0x46')],null))[_0xa983('0x26')](respondWithResult(_0x957d4d,null))[_0xa983('0x44')](handleError(_0x957d4d,null));};exports['download']=function(_0x5e64d3,_0x27c6b2,_0x18c092){var _0x4fd809=require(_0xa983('0x49'));var _0xe01239=![];var _0x461c35={};if(_0x5e64d3[_0xa983('0x30')]['type']&&_0x5e64d3[_0xa983('0x30')][_0xa983('0x4a')]===_0xa983('0x4b')){_0x461c35['uniqueid']=_0x5e64d3['params']['id'];}else{_0x461c35['id']=_0x5e64d3[_0xa983('0x48')]['id'];}return db[_0xa983('0x2d')][_0xa983('0x47')]({'where':_0x461c35,'attributes':['id',_0xa983('0x4c'),_0xa983('0x4d')],'raw':!![]})[_0xa983('0x26')](handleEntityNotFound(_0x27c6b2,null))['then'](function(_0xeaeedf){if(_0xeaeedf){var _0x34cb4c=_0xeaeedf[_0xa983('0x4c')];var _0x384a1c=util[_0xa983('0x4e')](_0xa983('0x4f'),_0x34cb4c);if(fs[_0xa983('0x50')](_0x384a1c)){_0xe01239=!![];return _0x4fd809[_0xa983('0x51')](_0x384a1c,_0x34cb4c,config[_0xa983('0x52')][_0xa983('0x53')])['then'](function(){return _0xeaeedf;});}return _0xeaeedf;}})['then'](function(_0x54c84e){if(_0x54c84e){var _0x5314bd=_0x54c84e[_0xa983('0x4c')];if(!fs[_0xa983('0x50')](_0x5314bd)){throw new db[(_0xa983('0x54'))]['ValidationError']('SquareRecording\x20not\x20found');}if(_0x54c84e[_0xa983('0x4d')]){return _0x27c6b2[_0xa983('0x55')](_0x5314bd,_0x54c84e[_0xa983('0x4d')]+path[_0xa983('0x56')](_0x5314bd),function(){if(_0xe01239){fs['unlink'](_0x5314bd);}});}else{return _0x27c6b2[_0xa983('0x55')](_0x5314bd,function(_0x489787){if(_0xe01239){fs['unlink'](_0x5314bd);}});}}})[_0xa983('0x44')](function(_0x17332c){if(_0x17332c['message']===_0xa983('0x57')){_0x27c6b2['status'](0x194)[_0xa983('0x2a')](_0xa983('0x58'));}else{return handleError(_0x27c6b2,null);}});};exports[_0xa983('0x59')]=function(_0x565f99,_0x6698a4){return db[_0xa983('0x2d')][_0xa983('0x47')]({'where':{'id':_0x565f99[_0xa983('0x48')]['id']}})['then'](function(_0x1587b5){if(_[_0xa983('0x5a')](_0x1587b5)){throw new ReferenceError(_0xa983('0x5b'));}return _0x1587b5;})[_0xa983('0x26')](function(_0x42ba9f){var _0x85ece=_0x42ba9f[_0xa983('0x4c')];logger[_0xa983('0x5c')](_0xa983('0x5d'),_0x85ece);if(!_[_0xa983('0x5a')](_0x42ba9f[_0xa983('0x4c')])&&fs[_0xa983('0x50')](_0x85ece)){logger[_0xa983('0x5c')](_0xa983('0x5e')+_0x85ece+_0xa983('0x5f'));fs[_0xa983('0x60')](_0x85ece);}_0x85ece=_0x85ece+_0xa983('0x61');if(!_[_0xa983('0x5a')](_0x42ba9f['savePath'])&&fs['existsSync'](_0x85ece)){logger['info'](_0xa983('0x5e')+_0x85ece+_0xa983('0x5f'));fs['unlinkSync'](_0x85ece);}return _0x42ba9f;})[_0xa983('0x26')](function(_0x308236){if(!_0x308236)throw new InternalError();return _0x308236[_0xa983('0x59')]();})[_0xa983('0x26')](function(){_0x6698a4[_0xa983('0x1b')](0xcc)[_0xa983('0x1a')]();})['catch'](handleError(_0x6698a4,null));};
\ No newline at end of file
+var _0x61a0=['../../components/encryptor','type','uniqueid','savePath','filename','%s.cypher','existsSync','decryptFile','recording','ValidationError','SquareRecording\x20not\x20found','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','sendStatus','error','name','send','SquareRecording','rawAttributes','key','model','map','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','update'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x61a0,0xd9));var _0x061a=function(_0x30c713,_0x14ddfd){_0x30c713=_0x30c713-0x0;var _0x5791af=_0x61a0[_0x30c713];return _0x5791af;};'use strict';var emlformat=require(_0x061a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x061a('0x1'));var jsonpatch=require(_0x061a('0x2'));var rp=require(_0x061a('0x3'));var moment=require('moment');var BPromise=require(_0x061a('0x4'));var Mustache=require(_0x061a('0x5'));var util=require(_0x061a('0x6'));var path=require(_0x061a('0x7'));var sox=require(_0x061a('0x8'));var csv=require(_0x061a('0x9'));var ejs=require(_0x061a('0xa'));var fs=require('fs');var fs_extra=require(_0x061a('0xb'));var _=require(_0x061a('0xc'));var squel=require(_0x061a('0xd'));var crypto=require(_0x061a('0xe'));var jsforce=require(_0x061a('0xf'));var deskjs=require(_0x061a('0x10'));var toCsv=require(_0x061a('0x9'));var querystring=require(_0x061a('0x11'));var Papa=require(_0x061a('0x12'));var Redis=require('ioredis');var authService=require(_0x061a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x061a('0x14'));var hardwareService=require(_0x061a('0x15'));var logger=require(_0x061a('0x16'))(_0x061a('0x17'));var utils=require(_0x061a('0x18'));var config=require(_0x061a('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x061a('0x1a'))['db'];function respondWithStatusCode(_0x3ce0a4,_0x4c3ca0){_0x4c3ca0=_0x4c3ca0||0xcc;return function(_0x502bea){if(_0x502bea){return _0x3ce0a4['sendStatus'](_0x4c3ca0);}return _0x3ce0a4[_0x061a('0x1b')](_0x4c3ca0)[_0x061a('0x1c')]();};}function respondWithResult(_0x504df4,_0x4b960c){_0x4b960c=_0x4b960c||0xc8;return function(_0x4382ab){if(_0x4382ab){return _0x504df4['status'](_0x4b960c)['json'](_0x4382ab);}};}function respondWithFilteredResult(_0x229ce7,_0x203f72){return function(_0x3442d){if(_0x3442d){var _0x1a42f0=typeof _0x203f72[_0x061a('0x1d')]===_0x061a('0x1e')&&typeof _0x203f72[_0x061a('0x1f')]===_0x061a('0x1e');var _0x59c793=_0x3442d[_0x061a('0x20')];var _0x5791fc=_0x1a42f0?0x0:_0x203f72[_0x061a('0x1d')];var _0x334059=_0x1a42f0?_0x3442d['count']:_0x203f72[_0x061a('0x1d')]+_0x203f72['limit'];var _0x4a393e;if(_0x334059>=_0x59c793){_0x334059=_0x59c793;_0x4a393e=0xc8;}else{_0x4a393e=0xce;}_0x229ce7[_0x061a('0x1b')](_0x4a393e);return _0x229ce7[_0x061a('0x21')](_0x061a('0x22'),_0x5791fc+'-'+_0x334059+'/'+_0x59c793)[_0x061a('0x23')](_0x3442d);}return null;};}function patchUpdates(_0x4a09e7){return function(_0x3575f3){try{jsonpatch[_0x061a('0x24')](_0x3575f3,_0x4a09e7,!![]);}catch(_0x53fb4a){return BPromise['reject'](_0x53fb4a);}return _0x3575f3[_0x061a('0x25')]();};}function saveUpdates(_0x25fc49,_0x5d612a){return function(_0x8602bf){if(_0x8602bf){return _0x8602bf['update'](_0x25fc49)[_0x061a('0x26')](function(_0x1e2734){return _0x1e2734;});}return null;};}function removeEntity(_0x2e07ca,_0x15419a){return function(_0x410f26){if(_0x410f26){return _0x410f26[_0x061a('0x27')]()[_0x061a('0x26')](function(){_0x2e07ca[_0x061a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x122314,_0x12a1aa){return function(_0x3a0002){if(!_0x3a0002){_0x122314[_0x061a('0x28')](0x194);}return _0x3a0002;};}function handleError(_0x32f2cb,_0x4a832f){_0x4a832f=_0x4a832f||0x1f4;return function(_0x49f9e3){logger[_0x061a('0x29')](_0x49f9e3['stack']);if(_0x49f9e3[_0x061a('0x2a')]){delete _0x49f9e3[_0x061a('0x2a')];}_0x32f2cb[_0x061a('0x1b')](_0x4a832f)[_0x061a('0x2b')](_0x49f9e3);};}exports['index']=function(_0x24223d,_0x4f1e29){var _0x445a87={},_0x5614a7={},_0x4d92cd={'count':0x0,'rows':[]};var _0x169148=_['map'](db[_0x061a('0x2c')][_0x061a('0x2d')],function(_0x5a967e){return{'name':_0x5a967e['fieldName'],'type':_0x5a967e['type'][_0x061a('0x2e')]};});_0x5614a7[_0x061a('0x2f')]=_[_0x061a('0x30')](_0x169148,_0x061a('0x2a'));_0x5614a7[_0x061a('0x31')]=_[_0x061a('0x32')](_0x24223d[_0x061a('0x31')]);_0x5614a7['filters']=_[_0x061a('0x33')](_0x5614a7[_0x061a('0x2f')],_0x5614a7[_0x061a('0x31')]);_0x445a87[_0x061a('0x34')]=_[_0x061a('0x33')](_0x5614a7[_0x061a('0x2f')],qs['fields'](_0x24223d['query']['fields']));_0x445a87['attributes']=_0x445a87[_0x061a('0x34')]['length']?_0x445a87[_0x061a('0x34')]:_0x5614a7[_0x061a('0x2f')];if(!_0x24223d[_0x061a('0x31')][_0x061a('0x35')](_0x061a('0x36'))){_0x445a87[_0x061a('0x1f')]=qs['limit'](_0x24223d[_0x061a('0x31')][_0x061a('0x1f')]);_0x445a87[_0x061a('0x1d')]=qs[_0x061a('0x1d')](_0x24223d['query'][_0x061a('0x1d')]);}_0x445a87[_0x061a('0x37')]=qs[_0x061a('0x38')](_0x24223d[_0x061a('0x31')][_0x061a('0x38')]);_0x445a87['where']=qs['filters'](_[_0x061a('0x39')](_0x24223d[_0x061a('0x31')],_0x5614a7[_0x061a('0x3a')]),_0x169148);if(_0x24223d[_0x061a('0x31')][_0x061a('0x3b')]){_0x445a87['where']=_[_0x061a('0x3c')](_0x445a87[_0x061a('0x3d')],{'$or':_['map'](_0x169148,function(_0x25b063){if(_0x25b063['type']!==_0x061a('0x3e')){var _0x1ca1f5={};_0x1ca1f5[_0x25b063[_0x061a('0x2a')]]={'$like':'%'+_0x24223d['query'][_0x061a('0x3b')]+'%'};return _0x1ca1f5;}})});}_0x445a87=_[_0x061a('0x3c')]({},_0x445a87,_0x24223d['options']);var _0x22117d={'where':_0x445a87[_0x061a('0x3d')]};return db['SquareRecording'][_0x061a('0x20')](_0x22117d)[_0x061a('0x26')](function(_0x71c3fb){_0x4d92cd[_0x061a('0x20')]=_0x71c3fb;if(_0x24223d[_0x061a('0x31')][_0x061a('0x3f')]){_0x445a87[_0x061a('0x40')]=[{'all':!![]}];}return db[_0x061a('0x2c')][_0x061a('0x41')](_0x445a87);})[_0x061a('0x26')](function(_0xf252d0){_0x4d92cd[_0x061a('0x42')]=_0xf252d0;return _0x4d92cd;})[_0x061a('0x26')](respondWithFilteredResult(_0x4f1e29,_0x445a87))[_0x061a('0x43')](handleError(_0x4f1e29,null));};exports[_0x061a('0x44')]=function(_0x208d43,_0x558c46){var _0x159234={'raw':!![],'where':{'id':_0x208d43[_0x061a('0x45')]['id']}},_0x2fd2d2={};_0x2fd2d2[_0x061a('0x2f')]=_['keys'](db[_0x061a('0x2c')][_0x061a('0x2d')]);_0x2fd2d2[_0x061a('0x31')]=_['keys'](_0x208d43[_0x061a('0x31')]);_0x2fd2d2[_0x061a('0x3a')]=_[_0x061a('0x33')](_0x2fd2d2[_0x061a('0x2f')],_0x2fd2d2[_0x061a('0x31')]);_0x159234['attributes']=_['intersection'](_0x2fd2d2[_0x061a('0x2f')],qs['fields'](_0x208d43['query'][_0x061a('0x46')]));_0x159234[_0x061a('0x34')]=_0x159234[_0x061a('0x34')][_0x061a('0x47')]?_0x159234[_0x061a('0x34')]:_0x2fd2d2[_0x061a('0x2f')];if(_0x208d43['query'][_0x061a('0x3f')]){_0x159234[_0x061a('0x40')]=[{'all':!![]}];}_0x159234=_[_0x061a('0x3c')]({},_0x159234,_0x208d43[_0x061a('0x48')]);return db[_0x061a('0x2c')][_0x061a('0x49')](_0x159234)[_0x061a('0x26')](handleEntityNotFound(_0x558c46,null))[_0x061a('0x26')](respondWithResult(_0x558c46,null))[_0x061a('0x43')](handleError(_0x558c46,null));};exports[_0x061a('0x4a')]=function(_0x1bd710,_0x5ed31d){return db[_0x061a('0x2c')]['create'](_0x1bd710[_0x061a('0x4b')],{})[_0x061a('0x26')](respondWithResult(_0x5ed31d,0xc9))[_0x061a('0x43')](handleError(_0x5ed31d,null));};exports[_0x061a('0x4c')]=function(_0x16614d,_0x281565){if(_0x16614d['body']['id']){delete _0x16614d[_0x061a('0x4b')]['id'];}return db['SquareRecording'][_0x061a('0x49')]({'where':{'id':_0x16614d[_0x061a('0x45')]['id']}})[_0x061a('0x26')](handleEntityNotFound(_0x281565,null))['then'](saveUpdates(_0x16614d[_0x061a('0x4b')],null))[_0x061a('0x26')](respondWithResult(_0x281565,null))['catch'](handleError(_0x281565,null));};exports['download']=function(_0x17a49c,_0x28a105,_0x5eca96){var _0x4bdc96=require(_0x061a('0x4d'));var _0x23db1f=![];var _0x3301db={};if(_0x17a49c['query'][_0x061a('0x4e')]&&_0x17a49c[_0x061a('0x31')][_0x061a('0x4e')]===_0x061a('0x4f')){_0x3301db[_0x061a('0x4f')]=_0x17a49c[_0x061a('0x45')]['id'];}else{_0x3301db['id']=_0x17a49c[_0x061a('0x45')]['id'];}return db[_0x061a('0x2c')]['find']({'where':_0x3301db,'attributes':['id',_0x061a('0x50'),_0x061a('0x51')],'raw':!![]})[_0x061a('0x26')](handleEntityNotFound(_0x28a105,null))[_0x061a('0x26')](function(_0xd4c6b0){if(_0xd4c6b0){var _0x207b84=_0xd4c6b0[_0x061a('0x50')];var _0x43b18c=util['format'](_0x061a('0x52'),_0x207b84);if(fs[_0x061a('0x53')](_0x43b18c)){_0x23db1f=!![];return _0x4bdc96[_0x061a('0x54')](_0x43b18c,_0x207b84,config['secrets'][_0x061a('0x55')])['then'](function(){return _0xd4c6b0;});}return _0xd4c6b0;}})['then'](function(_0x3b47ea){if(_0x3b47ea){var _0x3bf50a=_0x3b47ea['savePath'];if(!fs['existsSync'](_0x3bf50a)){throw new db['Sequelize'][(_0x061a('0x56'))](_0x061a('0x57'));}if(_0x3b47ea[_0x061a('0x51')]){return _0x28a105['download'](_0x3bf50a,_0x3b47ea[_0x061a('0x51')]+path[_0x061a('0x58')](_0x3bf50a),function(){if(_0x23db1f){fs[_0x061a('0x59')](_0x3bf50a);}});}else{return _0x28a105['download'](_0x3bf50a,function(_0x2f32b2){if(_0x23db1f){fs[_0x061a('0x59')](_0x3bf50a);}});}}})['catch'](function(_0x55e4f0){if(_0x55e4f0['message']===_0x061a('0x57')){_0x28a105[_0x061a('0x1b')](0x194)[_0x061a('0x2b')](_0x061a('0x5a'));}else{return handleError(_0x28a105,null);}});};exports['destroy']=function(_0x4347d2,_0x794053){return db[_0x061a('0x2c')][_0x061a('0x49')]({'where':{'id':_0x4347d2[_0x061a('0x45')]['id']}})[_0x061a('0x26')](function(_0x6811f7){if(_[_0x061a('0x5b')](_0x6811f7)){throw new ReferenceError(_0x061a('0x5c'));}return _0x6811f7;})[_0x061a('0x26')](function(_0x4a89ac){var _0x4ba06e=_0x4a89ac[_0x061a('0x50')];logger[_0x061a('0x5d')](_0x061a('0x5e'),_0x4ba06e);if(!_[_0x061a('0x5b')](_0x4a89ac[_0x061a('0x50')])&&fs[_0x061a('0x53')](_0x4ba06e)){logger[_0x061a('0x5d')](_0x061a('0x5f')+_0x4ba06e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x061a('0x60')](_0x4ba06e);}_0x4ba06e=_0x4ba06e+'.cypher';if(!_[_0x061a('0x5b')](_0x4a89ac[_0x061a('0x50')])&&fs['existsSync'](_0x4ba06e)){logger[_0x061a('0x5d')](_0x061a('0x5f')+_0x4ba06e+_0x061a('0x61'));fs[_0x061a('0x60')](_0x4ba06e);}return _0x4a89ac;})['then'](function(_0x3593da){if(!_0x3593da)throw new InternalError();return _0x3593da[_0x061a('0x27')]();})[_0x061a('0x26')](function(){_0x794053[_0x061a('0x1b')](0xcc)[_0x061a('0x1c')]();})[_0x061a('0x43')](handleError(_0x794053,null));};
\ No newline at end of file
index 5446a2e..f69df08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd49=['../../config/environment','./squareRecording.attributes','square_recordings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x516c81,_0x2d1b8a){var _0x4e1213=function(_0x566b0e){while(--_0x566b0e){_0x516c81['push'](_0x516c81['shift']());}};_0x4e1213(++_0x2d1b8a);}(_0xfd49,0x121));var _0x9fd4=function(_0x5a1afa,_0x1975fc){_0x5a1afa=_0x5a1afa-0x0;var _0xfd0ec0=_0xfd49[_0x5a1afa];return _0xfd0ec0;};'use strict';var _=require(_0x9fd4('0x0'));var util=require(_0x9fd4('0x1'));var logger=require(_0x9fd4('0x2'))(_0x9fd4('0x3'));var moment=require(_0x9fd4('0x4'));var BPromise=require('bluebird');var rp=require(_0x9fd4('0x5'));var fs=require('fs');var path=require(_0x9fd4('0x6'));var rimraf=require(_0x9fd4('0x7'));var config=require(_0x9fd4('0x8'));var attributes=require(_0x9fd4('0x9'));module['exports']=function(_0x5d8420,_0x89e59b){return _0x5d8420['define']('SquareRecording',attributes,{'tableName':_0x9fd4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x24bb=['square_recordings','lodash','../../config/logger','moment','bluebird','path','./squareRecording.attributes','exports','SquareRecording'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x24bb,0x19f));var _0xb24b=function(_0x5a37f7,_0x318b51){_0x5a37f7=_0x5a37f7-0x0;var _0x399d38=_0x24bb[_0x5a37f7];return _0x399d38;};'use strict';var _=require(_0xb24b('0x0'));var util=require('util');var logger=require(_0xb24b('0x1'))('api');var moment=require(_0xb24b('0x2'));var BPromise=require(_0xb24b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb24b('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb24b('0x5'));module[_0xb24b('0x6')]=function(_0x45588a,_0x51e19e){return _0x45588a['define'](_0xb24b('0x7'),attributes,{'tableName':_0xb24b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b83766..b8352d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68eb=['../../config/utils','rpc','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0xee7f96,_0x35c0d5){var _0xa0de8d=function(_0x53b8a7){while(--_0x53b8a7){_0xee7f96['push'](_0xee7f96['shift']());}};_0xa0de8d(++_0x35c0d5);}(_0x68eb,0x1e0));var _0xb68e=function(_0x1709e7,_0x2ced21){_0x1709e7=_0x1709e7-0x0;var _0x402819=_0x68eb[_0x1709e7];return _0x402819;};'use strict';var _=require(_0xb68e('0x0'));var util=require(_0xb68e('0x1'));var moment=require(_0xb68e('0x2'));var BPromise=require(_0xb68e('0x3'));var rs=require(_0xb68e('0x4'));var fs=require('fs');var Redis=require(_0xb68e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb68e('0x6'));var logger=require('../../config/logger')(_0xb68e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb68e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f00fe,_0x541938,_0x451e7e){return new BPromise(function(_0x40839b,_0x5f1822){return client[_0xb68e('0x9')](_0x3f00fe,_0x451e7e)[_0xb68e('0xa')](function(_0x33d39e){logger[_0xb68e('0xb')](_0xb68e('0xc'),_0x541938,'request\x20sent');logger[_0xb68e('0xd')](_0xb68e('0xe'),_0x541938,_0xb68e('0xf'),JSON[_0xb68e('0x10')](_0x33d39e));if(_0x33d39e[_0xb68e('0x11')]){if(_0x33d39e[_0xb68e('0x11')][_0xb68e('0x12')]===0x1f4){logger[_0xb68e('0x11')](_0xb68e('0xc'),_0x541938,_0x33d39e[_0xb68e('0x11')]['message']);return _0x5f1822(_0x33d39e['error'][_0xb68e('0x13')]);}logger[_0xb68e('0x11')](_0xb68e('0xc'),_0x541938,_0x33d39e['error'][_0xb68e('0x13')]);return _0x40839b(_0x33d39e[_0xb68e('0x11')][_0xb68e('0x13')]);}else{logger['info'](_0xb68e('0xc'),_0x541938,_0xb68e('0xf'));_0x40839b(_0x33d39e[_0xb68e('0x14')][_0xb68e('0x13')]);}})[_0xb68e('0x15')](function(_0x564331){logger[_0xb68e('0x11')](_0xb68e('0xc'),_0x541938,_0x564331);_0x5f1822(_0x564331);});});}exports[_0xb68e('0x16')]=function(_0x2cab8b){var _0x3fc1d6=this;return new Promise(function(_0x5edef1,_0x30c9e2){return db[_0xb68e('0x17')][_0xb68e('0x18')](_0x2cab8b[_0xb68e('0x19')],{'raw':_0x2cab8b[_0xb68e('0x1a')]?_0x2cab8b[_0xb68e('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xb68e('0xa')](function(_0x574bf3){logger[_0xb68e('0xb')]('CreateSquareRecording',_0x2cab8b);logger[_0xb68e('0xd')](_0xb68e('0x16'),_0x2cab8b,JSON[_0xb68e('0x10')](_0x574bf3));_0x5edef1(_0x574bf3);})['catch'](function(_0x2b4b14){logger[_0xb68e('0x11')](_0xb68e('0x16'),_0x2b4b14[_0xb68e('0x13')],_0x2cab8b);_0x30c9e2(_0x3fc1d6[_0xb68e('0x11')](0x1f4,_0x2b4b14[_0xb68e('0x13')]));});});};
\ No newline at end of file
+var _0x1547=['stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch','SquareRecording','create','raw','CreateSquareRecording','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x1185cd,_0x1ec3b2){var _0x4f2cbe=function(_0x13b060){while(--_0x13b060){_0x1185cd['push'](_0x1185cd['shift']());}};_0x4f2cbe(++_0x1ec3b2);}(_0x1547,0x191));var _0x7154=function(_0x3f9193,_0x2cc320){_0x3f9193=_0x3f9193-0x0;var _0x1faa1c=_0x1547[_0x3f9193];return _0x1faa1c;};'use strict';var _=require(_0x7154('0x0'));var util=require(_0x7154('0x1'));var moment=require('moment');var BPromise=require(_0x7154('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7154('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7154('0x4'));var logger=require(_0x7154('0x5'))('rpc');var config=require(_0x7154('0x6'));var jayson=require(_0x7154('0x7'));var client=jayson['client'][_0x7154('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x174228,_0x3a5ec5,_0x237106){return new BPromise(function(_0x57fc1d,_0x30ba92){return client[_0x7154('0x9')](_0x174228,_0x237106)[_0x7154('0xa')](function(_0x1102c0){logger[_0x7154('0xb')]('SquareRecording,\x20%s,\x20%s',_0x3a5ec5,'request\x20sent');logger[_0x7154('0xc')](_0x7154('0xd'),_0x3a5ec5,_0x7154('0xe'),JSON[_0x7154('0xf')](_0x1102c0));if(_0x1102c0['error']){if(_0x1102c0[_0x7154('0x10')][_0x7154('0x11')]===0x1f4){logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);return _0x30ba92(_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);}logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x1102c0[_0x7154('0x10')]['message']);return _0x57fc1d(_0x1102c0[_0x7154('0x10')][_0x7154('0x13')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x3a5ec5,_0x7154('0xe'));_0x57fc1d(_0x1102c0[_0x7154('0x14')][_0x7154('0x13')]);}})[_0x7154('0x15')](function(_0x49ed37){logger[_0x7154('0x10')](_0x7154('0x12'),_0x3a5ec5,_0x49ed37);_0x30ba92(_0x49ed37);});});}exports['CreateSquareRecording']=function(_0x181d46){var _0x44012f=this;return new Promise(function(_0x5e0199,_0x43fe68){return db[_0x7154('0x16')][_0x7154('0x17')](_0x181d46['body'],{'raw':_0x181d46['options']?_0x181d46['options'][_0x7154('0x18')]===undefined?!![]:![]:!![]})[_0x7154('0xa')](function(_0xe304a9){logger[_0x7154('0xb')](_0x7154('0x19'),_0x181d46);logger['debug'](_0x7154('0x19'),_0x181d46,JSON['stringify'](_0xe304a9));_0x5e0199(_0xe304a9);})[_0x7154('0x15')](function(_0x3d653e){logger[_0x7154('0x10')]('CreateSquareRecording',_0x3d653e[_0x7154('0x13')],_0x181d46);_0x43fe68(_0x44012f['error'](0x1f4,_0x3d653e[_0x7154('0x13')]));});});};
\ No newline at end of file
index a2b1f37..00edefd 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(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x9b5d88,_0x275ec3){var _0x2d6a89=function(_0x3b9b79){while(--_0x3b9b79){_0x9b5d88['push'](_0x9b5d88['shift']());}};_0x2d6a89(++_0x275ec3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
index d660159..a2dbe89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d62=['DATE','BOOLEAN','sequelize','exports','STRING'];(function(_0x28e2db,_0x4bfacc){var _0x3d75bc=function(_0x2affc9){while(--_0x2affc9){_0x28e2db['push'](_0x28e2db['shift']());}};_0x3d75bc(++_0x4bfacc);}(_0x3d62,0x133));var _0x23d6=function(_0x39876f,_0x2b5178){_0x39876f=_0x39876f-0x0;var _0xc36ad2=_0x3d62[_0x39876f];return _0xc36ad2;};'use strict';var Sequelize=require(_0x23d6('0x0'));module[_0x23d6('0x1')]={'network':{'type':Sequelize[_0x23d6('0x2')]},'network_script':{'type':Sequelize[_0x23d6('0x2')]},'request':{'type':Sequelize[_0x23d6('0x2')]},'channel':{'type':Sequelize[_0x23d6('0x2')]},'language':{'type':Sequelize[_0x23d6('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x23d6('0x2')]},'callingpres':{'type':Sequelize[_0x23d6('0x2')]},'callingani2':{'type':Sequelize[_0x23d6('0x2')]},'callington':{'type':Sequelize[_0x23d6('0x2')]},'callingtns':{'type':Sequelize[_0x23d6('0x2')]},'dnid':{'type':Sequelize[_0x23d6('0x2')]},'rdnis':{'type':Sequelize[_0x23d6('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x23d6('0x2')]},'priority':{'type':Sequelize[_0x23d6('0x2')]},'enhanced':{'type':Sequelize[_0x23d6('0x2')]},'accountcode':{'type':Sequelize[_0x23d6('0x2')]},'threadid':{'type':Sequelize[_0x23d6('0x2')]},'project_name':{'type':Sequelize[_0x23d6('0x2')]},'joinAt':{'type':Sequelize[_0x23d6('0x3')]},'leaveAt':{'type':Sequelize[_0x23d6('0x3')]},'bot':{'type':Sequelize[_0x23d6('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xfd2b=['BOOLEAN','sequelize','STRING','DATE'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfd2b,0x79));var _0xbfd2=function(_0x1daede,_0x446c28){_0x1daede=_0x1daede-0x0;var _0x5ec090=_0xfd2b[_0x1daede];return _0x5ec090;};'use strict';var Sequelize=require(_0xbfd2('0x0'));module['exports']={'network':{'type':Sequelize[_0xbfd2('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xbfd2('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbfd2('0x1')]},'uniqueid':{'type':Sequelize[_0xbfd2('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xbfd2('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0xbfd2('0x1')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xbfd2('0x1')]},'dnid':{'type':Sequelize[_0xbfd2('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xbfd2('0x1')]},'extension':{'type':Sequelize[_0xbfd2('0x1')]},'priority':{'type':Sequelize[_0xbfd2('0x1')]},'enhanced':{'type':Sequelize[_0xbfd2('0x1')]},'accountcode':{'type':Sequelize[_0xbfd2('0x1')]},'threadid':{'type':Sequelize[_0xbfd2('0x1')]},'project_name':{'type':Sequelize[_0xbfd2('0x1')]},'joinAt':{'type':Sequelize[_0xbfd2('0x2')]},'leaveAt':{'type':Sequelize[_0xbfd2('0x2')]},'bot':{'type':Sequelize[_0xbfd2('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 97e5510..f658345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6455=['VIRTUAL','options','SquareReport','then','includeAll','include','findAll','rows','catch','show','find','create','body','params','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','save','update','end','name','index','map','rawAttributes','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge'];(function(_0x39d38e,_0x3da1f7){var _0x18e737=function(_0x373eef){while(--_0x373eef){_0x39d38e['push'](_0x39d38e['shift']());}};_0x18e737(++_0x3da1f7);}(_0x6455,0xeb));var _0x5645=function(_0x8168a7,_0x5ac33c){_0x8168a7=_0x8168a7-0x0;var _0x112c33=_0x6455[_0x8168a7];return _0x112c33;};'use strict';var emlformat=require(_0x5645('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5645('0x1'));var jsonpatch=require(_0x5645('0x2'));var rp=require(_0x5645('0x3'));var moment=require(_0x5645('0x4'));var BPromise=require(_0x5645('0x5'));var Mustache=require(_0x5645('0x6'));var util=require(_0x5645('0x7'));var path=require('path');var sox=require(_0x5645('0x8'));var csv=require(_0x5645('0x9'));var ejs=require(_0x5645('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5645('0xb'));var squel=require(_0x5645('0xc'));var crypto=require(_0x5645('0xd'));var jsforce=require(_0x5645('0xe'));var deskjs=require(_0x5645('0xf'));var toCsv=require(_0x5645('0x9'));var querystring=require(_0x5645('0x10'));var Papa=require(_0x5645('0x11'));var Redis=require(_0x5645('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5645('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5645('0x14'))(_0x5645('0x15'));var utils=require(_0x5645('0x16'));var config=require(_0x5645('0x17'));var licenseUtil=require(_0x5645('0x18'));var db=require(_0x5645('0x19'))['db'];function respondWithStatusCode(_0x4e1179,_0x5077b0){_0x5077b0=_0x5077b0||0xcc;return function(_0x4cd78e){if(_0x4cd78e){return _0x4e1179[_0x5645('0x1a')](_0x5077b0);}return _0x4e1179[_0x5645('0x1b')](_0x5077b0)['end']();};}function respondWithResult(_0x132ba9,_0x4c2382){_0x4c2382=_0x4c2382||0xc8;return function(_0x31c27e){if(_0x31c27e){return _0x132ba9[_0x5645('0x1b')](_0x4c2382)['json'](_0x31c27e);}};}function respondWithFilteredResult(_0x1f1b26,_0x243f69){return function(_0x5a16b0){if(_0x5a16b0){var _0x23358e=typeof _0x243f69[_0x5645('0x1c')]===_0x5645('0x1d')&&typeof _0x243f69['limit']===_0x5645('0x1d');var _0x4f1f98=_0x5a16b0['count'];var _0x2438e3=_0x23358e?0x0:_0x243f69[_0x5645('0x1c')];var _0x2e8b4a=_0x23358e?_0x5a16b0[_0x5645('0x1e')]:_0x243f69[_0x5645('0x1c')]+_0x243f69[_0x5645('0x1f')];var _0x27f558;if(_0x2e8b4a>=_0x4f1f98){_0x2e8b4a=_0x4f1f98;_0x27f558=0xc8;}else{_0x27f558=0xce;}_0x1f1b26[_0x5645('0x1b')](_0x27f558);return _0x1f1b26[_0x5645('0x20')](_0x5645('0x21'),_0x2438e3+'-'+_0x2e8b4a+'/'+_0x4f1f98)['json'](_0x5a16b0);}return null;};}function patchUpdates(_0x53490b){return function(_0x651bcb){try{jsonpatch[_0x5645('0x22')](_0x651bcb,_0x53490b,!![]);}catch(_0x5da10d){return BPromise['reject'](_0x5da10d);}return _0x651bcb[_0x5645('0x23')]();};}function saveUpdates(_0x189f53,_0x245733){return function(_0x463cd3){if(_0x463cd3){return _0x463cd3[_0x5645('0x24')](_0x189f53)['then'](function(_0x1535b2){return _0x1535b2;});}return null;};}function removeEntity(_0x10a465,_0x3b0c40){return function(_0x5a4ab2){if(_0x5a4ab2){return _0x5a4ab2['destroy']()['then'](function(){_0x10a465[_0x5645('0x1b')](0xcc)[_0x5645('0x25')]();});}};}function handleEntityNotFound(_0x1d0a26,_0x4ac686){return function(_0x4aa77e){if(!_0x4aa77e){_0x1d0a26[_0x5645('0x1a')](0x194);}return _0x4aa77e;};}function handleError(_0x3104fd,_0x417ea5){_0x417ea5=_0x417ea5||0x1f4;return function(_0x36c641){logger['error'](_0x36c641['stack']);if(_0x36c641[_0x5645('0x26')]){delete _0x36c641[_0x5645('0x26')];}_0x3104fd[_0x5645('0x1b')](_0x417ea5)['send'](_0x36c641);};}exports[_0x5645('0x27')]=function(_0x4fc27a,_0x5bc98f){var _0x75e9e={},_0x109f0b={},_0x131c5c={'count':0x0,'rows':[]};var _0x32a786=_[_0x5645('0x28')](db['SquareReport'][_0x5645('0x29')],function(_0x5039fa){return{'name':_0x5039fa['fieldName'],'type':_0x5039fa[_0x5645('0x2a')]['key']};});_0x109f0b['model']=_[_0x5645('0x28')](_0x32a786,_0x5645('0x26'));_0x109f0b['query']=_[_0x5645('0x2b')](_0x4fc27a[_0x5645('0x2c')]);_0x109f0b[_0x5645('0x2d')]=_[_0x5645('0x2e')](_0x109f0b[_0x5645('0x2f')],_0x109f0b['query']);_0x75e9e[_0x5645('0x30')]=_[_0x5645('0x2e')](_0x109f0b['model'],qs[_0x5645('0x31')](_0x4fc27a[_0x5645('0x2c')]['fields']));_0x75e9e[_0x5645('0x30')]=_0x75e9e[_0x5645('0x30')][_0x5645('0x32')]?_0x75e9e[_0x5645('0x30')]:_0x109f0b[_0x5645('0x2f')];if(!_0x4fc27a[_0x5645('0x2c')][_0x5645('0x33')]('nolimit')){_0x75e9e[_0x5645('0x1f')]=qs[_0x5645('0x1f')](_0x4fc27a[_0x5645('0x2c')][_0x5645('0x1f')]);_0x75e9e[_0x5645('0x1c')]=qs[_0x5645('0x1c')](_0x4fc27a[_0x5645('0x2c')]['offset']);}_0x75e9e[_0x5645('0x34')]=qs[_0x5645('0x35')](_0x4fc27a[_0x5645('0x2c')][_0x5645('0x35')]);_0x75e9e[_0x5645('0x36')]=qs[_0x5645('0x2d')](_[_0x5645('0x37')](_0x4fc27a[_0x5645('0x2c')],_0x109f0b['filters']),_0x32a786);if(_0x4fc27a['query']['filter']){_0x75e9e[_0x5645('0x36')]=_[_0x5645('0x38')](_0x75e9e[_0x5645('0x36')],{'$or':_[_0x5645('0x28')](_0x32a786,function(_0x15ad2b){if(_0x15ad2b[_0x5645('0x2a')]!==_0x5645('0x39')){var _0x36b653={};_0x36b653[_0x15ad2b[_0x5645('0x26')]]={'$like':'%'+_0x4fc27a[_0x5645('0x2c')]['filter']+'%'};return _0x36b653;}})});}_0x75e9e=_[_0x5645('0x38')]({},_0x75e9e,_0x4fc27a[_0x5645('0x3a')]);var _0x3736c5={'where':_0x75e9e[_0x5645('0x36')]};return db[_0x5645('0x3b')][_0x5645('0x1e')](_0x3736c5)[_0x5645('0x3c')](function(_0x3c2e5a){_0x131c5c[_0x5645('0x1e')]=_0x3c2e5a;if(_0x4fc27a[_0x5645('0x2c')][_0x5645('0x3d')]){_0x75e9e[_0x5645('0x3e')]=[{'all':!![]}];}return db[_0x5645('0x3b')][_0x5645('0x3f')](_0x75e9e);})[_0x5645('0x3c')](function(_0x27adb2){_0x131c5c[_0x5645('0x40')]=_0x27adb2;return _0x131c5c;})[_0x5645('0x3c')](respondWithFilteredResult(_0x5bc98f,_0x75e9e))[_0x5645('0x41')](handleError(_0x5bc98f,null));};exports[_0x5645('0x42')]=function(_0x2a9ab8,_0x12d702){var _0x18003f={'raw':!![],'where':{'id':_0x2a9ab8['params']['id']}},_0xf0fb9={};_0xf0fb9[_0x5645('0x2f')]=_[_0x5645('0x2b')](db[_0x5645('0x3b')][_0x5645('0x29')]);_0xf0fb9[_0x5645('0x2c')]=_['keys'](_0x2a9ab8['query']);_0xf0fb9['filters']=_[_0x5645('0x2e')](_0xf0fb9['model'],_0xf0fb9[_0x5645('0x2c')]);_0x18003f[_0x5645('0x30')]=_[_0x5645('0x2e')](_0xf0fb9[_0x5645('0x2f')],qs[_0x5645('0x31')](_0x2a9ab8['query']['fields']));_0x18003f[_0x5645('0x30')]=_0x18003f[_0x5645('0x30')]['length']?_0x18003f[_0x5645('0x30')]:_0xf0fb9[_0x5645('0x2f')];if(_0x2a9ab8[_0x5645('0x2c')][_0x5645('0x3d')]){_0x18003f[_0x5645('0x3e')]=[{'all':!![]}];}_0x18003f=_[_0x5645('0x38')]({},_0x18003f,_0x2a9ab8[_0x5645('0x3a')]);return db[_0x5645('0x3b')][_0x5645('0x43')](_0x18003f)[_0x5645('0x3c')](handleEntityNotFound(_0x12d702,null))[_0x5645('0x3c')](respondWithResult(_0x12d702,null))[_0x5645('0x41')](handleError(_0x12d702,null));};exports[_0x5645('0x44')]=function(_0x1e2a00,_0x28be39){return db[_0x5645('0x3b')]['create'](_0x1e2a00[_0x5645('0x45')],{})[_0x5645('0x3c')](respondWithResult(_0x28be39,0xc9))[_0x5645('0x41')](handleError(_0x28be39,null));};exports['update']=function(_0x5d46ff,_0x293ab3){if(_0x5d46ff[_0x5645('0x45')]['id']){delete _0x5d46ff[_0x5645('0x45')]['id'];}return db[_0x5645('0x3b')][_0x5645('0x43')]({'where':{'id':_0x5d46ff[_0x5645('0x46')]['id']}})['then'](handleEntityNotFound(_0x293ab3,null))[_0x5645('0x3c')](saveUpdates(_0x5d46ff[_0x5645('0x45')],null))[_0x5645('0x3c')](respondWithResult(_0x293ab3,null))['catch'](handleError(_0x293ab3,null));};exports[_0x5645('0x47')]=function(_0x396dd7,_0x17b5a5){return db[_0x5645('0x3b')][_0x5645('0x43')]({'where':{'id':_0x396dd7[_0x5645('0x46')]['id']}})['then'](handleEntityNotFound(_0x17b5a5,null))['then'](removeEntity(_0x17b5a5,null))[_0x5645('0x41')](handleError(_0x17b5a5,null));};exports['describe']=function(_0x1ab467,_0x1ee839){return db[_0x5645('0x3b')][_0x5645('0x48')]()[_0x5645('0x3c')](respondWithResult(_0x1ee839,null))[_0x5645('0x41')](handleError(_0x1ee839,null));};
\ No newline at end of file
+var _0x59fa=['sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','SquareReport','findAll','catch','show','params','find','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order'];(function(_0x1ece91,_0x247458){var _0x2ebd3c=function(_0x472f83){while(--_0x472f83){_0x1ece91['push'](_0x1ece91['shift']());}};_0x2ebd3c(++_0x247458);}(_0x59fa,0xe9));var _0xa59f=function(_0x5e8e86,_0x4f5b8e){_0x5e8e86=_0x5e8e86-0x0;var _0x11224c=_0x59fa[_0x5e8e86];return _0x11224c;};'use strict';var emlformat=require(_0xa59f('0x0'));var rimraf=require(_0xa59f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa59f('0x2'));var rp=require(_0xa59f('0x3'));var moment=require(_0xa59f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa59f('0x5'));var util=require('util');var path=require(_0xa59f('0x6'));var sox=require(_0xa59f('0x7'));var csv=require(_0xa59f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa59f('0x9'));var crypto=require(_0xa59f('0xa'));var jsforce=require(_0xa59f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa59f('0x8'));var querystring=require(_0xa59f('0xc'));var Papa=require(_0xa59f('0xd'));var Redis=require(_0xa59f('0xe'));var authService=require(_0xa59f('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa59f('0x10'));var logger=require(_0xa59f('0x11'))(_0xa59f('0x12'));var utils=require(_0xa59f('0x13'));var config=require(_0xa59f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa59f('0x15'))['db'];function respondWithStatusCode(_0xd0c4b2,_0x194385){_0x194385=_0x194385||0xcc;return function(_0x1a3cef){if(_0x1a3cef){return _0xd0c4b2[_0xa59f('0x16')](_0x194385);}return _0xd0c4b2[_0xa59f('0x17')](_0x194385)[_0xa59f('0x18')]();};}function respondWithResult(_0x4a91d8,_0x449f33){_0x449f33=_0x449f33||0xc8;return function(_0x4a3829){if(_0x4a3829){return _0x4a91d8['status'](_0x449f33)[_0xa59f('0x19')](_0x4a3829);}};}function respondWithFilteredResult(_0x2785b7,_0x1f5a00){return function(_0x475289){if(_0x475289){var _0xef2ef8=typeof _0x1f5a00[_0xa59f('0x1a')]===_0xa59f('0x1b')&&typeof _0x1f5a00['limit']===_0xa59f('0x1b');var _0xc7c74d=_0x475289[_0xa59f('0x1c')];var _0x2850f2=_0xef2ef8?0x0:_0x1f5a00[_0xa59f('0x1a')];var _0x368118=_0xef2ef8?_0x475289[_0xa59f('0x1c')]:_0x1f5a00[_0xa59f('0x1a')]+_0x1f5a00['limit'];var _0x3a91b1;if(_0x368118>=_0xc7c74d){_0x368118=_0xc7c74d;_0x3a91b1=0xc8;}else{_0x3a91b1=0xce;}_0x2785b7[_0xa59f('0x17')](_0x3a91b1);return _0x2785b7[_0xa59f('0x1d')]('Content-Range',_0x2850f2+'-'+_0x368118+'/'+_0xc7c74d)[_0xa59f('0x19')](_0x475289);}return null;};}function patchUpdates(_0x34277a){return function(_0x302308){try{jsonpatch[_0xa59f('0x1e')](_0x302308,_0x34277a,!![]);}catch(_0x1521c2){return BPromise[_0xa59f('0x1f')](_0x1521c2);}return _0x302308[_0xa59f('0x20')]();};}function saveUpdates(_0x6dc1ee,_0x4e8a50){return function(_0x53f613){if(_0x53f613){return _0x53f613[_0xa59f('0x21')](_0x6dc1ee)[_0xa59f('0x22')](function(_0x3c68d8){return _0x3c68d8;});}return null;};}function removeEntity(_0xdaa47c,_0x9aeb96){return function(_0x17d8b4){if(_0x17d8b4){return _0x17d8b4[_0xa59f('0x23')]()['then'](function(){_0xdaa47c[_0xa59f('0x17')](0xcc)[_0xa59f('0x18')]();});}};}function handleEntityNotFound(_0x269606,_0x4bef90){return function(_0x4a6e54){if(!_0x4a6e54){_0x269606[_0xa59f('0x16')](0x194);}return _0x4a6e54;};}function handleError(_0x4fccd7,_0x1818f2){_0x1818f2=_0x1818f2||0x1f4;return function(_0x241ed2){logger[_0xa59f('0x24')](_0x241ed2['stack']);if(_0x241ed2[_0xa59f('0x25')]){delete _0x241ed2[_0xa59f('0x25')];}_0x4fccd7['status'](_0x1818f2)[_0xa59f('0x26')](_0x241ed2);};}exports[_0xa59f('0x27')]=function(_0x50e837,_0x146b4b){var _0x2491cc={},_0x43ecbc={},_0x4023a8={'count':0x0,'rows':[]};var _0x11d727=_[_0xa59f('0x28')](db['SquareReport']['rawAttributes'],function(_0x302196){return{'name':_0x302196[_0xa59f('0x29')],'type':_0x302196[_0xa59f('0x2a')][_0xa59f('0x2b')]};});_0x43ecbc[_0xa59f('0x2c')]=_[_0xa59f('0x28')](_0x11d727,_0xa59f('0x25'));_0x43ecbc[_0xa59f('0x2d')]=_[_0xa59f('0x2e')](_0x50e837[_0xa59f('0x2d')]);_0x43ecbc[_0xa59f('0x2f')]=_[_0xa59f('0x30')](_0x43ecbc['model'],_0x43ecbc[_0xa59f('0x2d')]);_0x2491cc[_0xa59f('0x31')]=_['intersection'](_0x43ecbc['model'],qs[_0xa59f('0x32')](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x32')]));_0x2491cc[_0xa59f('0x31')]=_0x2491cc[_0xa59f('0x31')][_0xa59f('0x33')]?_0x2491cc[_0xa59f('0x31')]:_0x43ecbc[_0xa59f('0x2c')];if(!_0x50e837[_0xa59f('0x2d')][_0xa59f('0x34')]('nolimit')){_0x2491cc[_0xa59f('0x35')]=qs['limit'](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x35')]);_0x2491cc[_0xa59f('0x1a')]=qs[_0xa59f('0x1a')](_0x50e837[_0xa59f('0x2d')][_0xa59f('0x1a')]);}_0x2491cc[_0xa59f('0x36')]=qs[_0xa59f('0x37')](_0x50e837[_0xa59f('0x2d')]['sort']);_0x2491cc[_0xa59f('0x38')]=qs[_0xa59f('0x2f')](_[_0xa59f('0x39')](_0x50e837[_0xa59f('0x2d')],_0x43ecbc[_0xa59f('0x2f')]),_0x11d727);if(_0x50e837['query'][_0xa59f('0x3a')]){_0x2491cc[_0xa59f('0x38')]=_['merge'](_0x2491cc['where'],{'$or':_[_0xa59f('0x28')](_0x11d727,function(_0x1d314b){if(_0x1d314b['type']!==_0xa59f('0x3b')){var _0x40539={};_0x40539[_0x1d314b['name']]={'$like':'%'+_0x50e837[_0xa59f('0x2d')]['filter']+'%'};return _0x40539;}})});}_0x2491cc=_[_0xa59f('0x3c')]({},_0x2491cc,_0x50e837[_0xa59f('0x3d')]);var _0x48e345={'where':_0x2491cc[_0xa59f('0x38')]};return db['SquareReport'][_0xa59f('0x1c')](_0x48e345)[_0xa59f('0x22')](function(_0x531928){_0x4023a8[_0xa59f('0x1c')]=_0x531928;if(_0x50e837[_0xa59f('0x2d')][_0xa59f('0x3e')]){_0x2491cc[_0xa59f('0x3f')]=[{'all':!![]}];}return db[_0xa59f('0x40')][_0xa59f('0x41')](_0x2491cc);})[_0xa59f('0x22')](function(_0x1e7b99){_0x4023a8['rows']=_0x1e7b99;return _0x4023a8;})[_0xa59f('0x22')](respondWithFilteredResult(_0x146b4b,_0x2491cc))[_0xa59f('0x42')](handleError(_0x146b4b,null));};exports[_0xa59f('0x43')]=function(_0x3e4263,_0x2c8849){var _0x1b686d={'raw':!![],'where':{'id':_0x3e4263[_0xa59f('0x44')]['id']}},_0x4e340b={};_0x4e340b[_0xa59f('0x2c')]=_['keys'](db[_0xa59f('0x40')]['rawAttributes']);_0x4e340b[_0xa59f('0x2d')]=_[_0xa59f('0x2e')](_0x3e4263['query']);_0x4e340b[_0xa59f('0x2f')]=_['intersection'](_0x4e340b[_0xa59f('0x2c')],_0x4e340b['query']);_0x1b686d[_0xa59f('0x31')]=_[_0xa59f('0x30')](_0x4e340b[_0xa59f('0x2c')],qs['fields'](_0x3e4263[_0xa59f('0x2d')][_0xa59f('0x32')]));_0x1b686d[_0xa59f('0x31')]=_0x1b686d[_0xa59f('0x31')]['length']?_0x1b686d[_0xa59f('0x31')]:_0x4e340b[_0xa59f('0x2c')];if(_0x3e4263[_0xa59f('0x2d')]['includeAll']){_0x1b686d[_0xa59f('0x3f')]=[{'all':!![]}];}_0x1b686d=_[_0xa59f('0x3c')]({},_0x1b686d,_0x3e4263[_0xa59f('0x3d')]);return db[_0xa59f('0x40')][_0xa59f('0x45')](_0x1b686d)[_0xa59f('0x22')](handleEntityNotFound(_0x2c8849,null))[_0xa59f('0x22')](respondWithResult(_0x2c8849,null))[_0xa59f('0x42')](handleError(_0x2c8849,null));};exports['create']=function(_0x276613,_0x366d34){return db[_0xa59f('0x40')]['create'](_0x276613[_0xa59f('0x46')],{})[_0xa59f('0x22')](respondWithResult(_0x366d34,0xc9))[_0xa59f('0x42')](handleError(_0x366d34,null));};exports[_0xa59f('0x21')]=function(_0x541da3,_0x40ee51){if(_0x541da3[_0xa59f('0x46')]['id']){delete _0x541da3[_0xa59f('0x46')]['id'];}return db[_0xa59f('0x40')][_0xa59f('0x45')]({'where':{'id':_0x541da3[_0xa59f('0x44')]['id']}})[_0xa59f('0x22')](handleEntityNotFound(_0x40ee51,null))[_0xa59f('0x22')](saveUpdates(_0x541da3['body'],null))[_0xa59f('0x22')](respondWithResult(_0x40ee51,null))[_0xa59f('0x42')](handleError(_0x40ee51,null));};exports[_0xa59f('0x23')]=function(_0xa71e18,_0x423dfb){return db[_0xa59f('0x40')][_0xa59f('0x45')]({'where':{'id':_0xa71e18[_0xa59f('0x44')]['id']}})[_0xa59f('0x22')](handleEntityNotFound(_0x423dfb,null))['then'](removeEntity(_0x423dfb,null))['catch'](handleError(_0x423dfb,null));};exports['describe']=function(_0x2fc376,_0x37350e){return db[_0xa59f('0x40')][_0xa59f('0x47')]()['then'](respondWithResult(_0x37350e,null))[_0xa59f('0x42')](handleError(_0x37350e,null));};
\ No newline at end of file
index dbcd8ea..e869685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb67=['../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','leaveAt','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb67,0xf9));var _0x7eb6=function(_0x3ec58a,_0x38bc33){_0x3ec58a=_0x3ec58a-0x0;var _0x50b5df=_0xeb67[_0x3ec58a];return _0x50b5df;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7eb6('0x0'))(_0x7eb6('0x1'));var moment=require(_0x7eb6('0x2'));var BPromise=require('bluebird');var rp=require(_0x7eb6('0x3'));var fs=require('fs');var path=require(_0x7eb6('0x4'));var rimraf=require(_0x7eb6('0x5'));var config=require(_0x7eb6('0x6'));var attributes=require(_0x7eb6('0x7'));module[_0x7eb6('0x8')]=function(_0x21611c,_0x136b26){return _0x21611c[_0x7eb6('0x9')](_0x7eb6('0xa'),attributes,{'tableName':_0x7eb6('0xb'),'paranoid':![],'indexes':[{'name':_0x7eb6('0xc'),'fields':['uniqueid',_0x7eb6('0xd')]},{'name':_0x7eb6('0xe'),'fields':[_0x7eb6('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xed8d=['./squareReport.attributes','define','SquareReport','report_square','uid_pname','project_name','leaveAt','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4b47fa,_0x5816d1){var _0x49fb27=function(_0x31d1a9){while(--_0x31d1a9){_0x4b47fa['push'](_0x4b47fa['shift']());}};_0x49fb27(++_0x5816d1);}(_0xed8d,0xaf));var _0xded8=function(_0x1ac2cc,_0x220ffa){_0x1ac2cc=_0x1ac2cc-0x0;var _0x58dead=_0xed8d[_0x1ac2cc];return _0x58dead;};'use strict';var _=require(_0xded8('0x0'));var util=require(_0xded8('0x1'));var logger=require(_0xded8('0x2'))(_0xded8('0x3'));var moment=require('moment');var BPromise=require(_0xded8('0x4'));var rp=require(_0xded8('0x5'));var fs=require('fs');var path=require(_0xded8('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xded8('0x7'));module['exports']=function(_0xe5518f,_0x2f5c99){return _0xe5518f[_0xded8('0x8')](_0xded8('0x9'),attributes,{'tableName':_0xded8('0xa'),'paranoid':![],'indexes':[{'name':_0xded8('0xb'),'fields':['uniqueid',_0xded8('0xc')]},{'name':_0xded8('0xd'),'fields':[_0xded8('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index fa3c692..ba09de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b1f=['limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','create','options','raw','CreateSquareReport','stringify','UpdateSquareReport','SquareReport','update','body','where','attributes'];(function(_0x4337d0,_0x38f161){var _0xdcc0c1=function(_0x406f00){while(--_0x406f00){_0x4337d0['push'](_0x4337d0['shift']());}};_0xdcc0c1(++_0x38f161);}(_0x5b1f,0x1eb));var _0xf5b1=function(_0x67a073,_0x18fec4){_0x67a073=_0x67a073-0x0;var _0x407ded=_0x5b1f[_0x67a073];return _0x407ded;};'use strict';var _=require(_0xf5b1('0x0'));var util=require(_0xf5b1('0x1'));var moment=require(_0xf5b1('0x2'));var BPromise=require(_0xf5b1('0x3'));var rs=require(_0xf5b1('0x4'));var fs=require('fs');var Redis=require(_0xf5b1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf5b1('0x6'));var logger=require(_0xf5b1('0x7'))(_0xf5b1('0x8'));var config=require('../../config/environment');var jayson=require(_0xf5b1('0x9'));var client=jayson[_0xf5b1('0xa')][_0xf5b1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2415e8,_0x40eb52,_0x4ef09d){return new BPromise(function(_0x3c5a70,_0x12fa69){return client[_0xf5b1('0xc')](_0x2415e8,_0x4ef09d)[_0xf5b1('0xd')](function(_0x4b8a60){logger[_0xf5b1('0xe')](_0xf5b1('0xf'),_0x40eb52,_0xf5b1('0x10'));logger[_0xf5b1('0x11')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x40eb52,_0xf5b1('0x10'),JSON['stringify'](_0x4b8a60));if(_0x4b8a60[_0xf5b1('0x12')]){if(_0x4b8a60[_0xf5b1('0x12')][_0xf5b1('0x13')]===0x1f4){logger[_0xf5b1('0x12')](_0xf5b1('0xf'),_0x40eb52,_0x4b8a60['error'][_0xf5b1('0x14')]);return _0x12fa69(_0x4b8a60['error'][_0xf5b1('0x14')]);}logger[_0xf5b1('0x12')](_0xf5b1('0xf'),_0x40eb52,_0x4b8a60[_0xf5b1('0x12')][_0xf5b1('0x14')]);return _0x3c5a70(_0x4b8a60[_0xf5b1('0x12')][_0xf5b1('0x14')]);}else{logger[_0xf5b1('0xe')](_0xf5b1('0xf'),_0x40eb52,_0xf5b1('0x10'));_0x3c5a70(_0x4b8a60[_0xf5b1('0x15')][_0xf5b1('0x14')]);}})[_0xf5b1('0x16')](function(_0x203f5e){logger[_0xf5b1('0x12')](_0xf5b1('0xf'),_0x40eb52,_0x203f5e);_0x12fa69(_0x203f5e);});});}exports['CreateSquareReport']=function(_0x1abfbd){var _0x2e25a0=this;return new Promise(function(_0x273368,_0x5d174d){return db['SquareReport'][_0xf5b1('0x17')](_0x1abfbd['body'],{'raw':_0x1abfbd['options']?_0x1abfbd[_0xf5b1('0x18')][_0xf5b1('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1b7fda){logger[_0xf5b1('0xe')]('CreateSquareReport',_0x1abfbd);logger[_0xf5b1('0x11')](_0xf5b1('0x1a'),_0x1abfbd,JSON[_0xf5b1('0x1b')](_0x1b7fda));_0x273368(_0x1b7fda);})[_0xf5b1('0x16')](function(_0x510c07){logger[_0xf5b1('0x12')](_0xf5b1('0x1a'),_0x510c07[_0xf5b1('0x14')],_0x1abfbd);_0x5d174d(_0x2e25a0['error'](0x1f4,_0x510c07[_0xf5b1('0x14')]));});});};exports[_0xf5b1('0x1c')]=function(_0x33d22c){var _0x62519e=this;return new Promise(function(_0x1cfcc8,_0x570040){return db[_0xf5b1('0x1d')][_0xf5b1('0x1e')](_0x33d22c[_0xf5b1('0x1f')],{'raw':_0x33d22c[_0xf5b1('0x18')]?_0x33d22c[_0xf5b1('0x18')][_0xf5b1('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33d22c[_0xf5b1('0x18')]?_0x33d22c[_0xf5b1('0x18')][_0xf5b1('0x20')]||null:null,'attributes':_0x33d22c[_0xf5b1('0x18')]?_0x33d22c[_0xf5b1('0x18')][_0xf5b1('0x21')]||null:null,'limit':_0x33d22c[_0xf5b1('0x18')]?_0x33d22c[_0xf5b1('0x18')][_0xf5b1('0x22')]||null:null})[_0xf5b1('0xd')](function(_0x528ce1){logger[_0xf5b1('0xe')]('UpdateSquareReport',_0x33d22c);logger[_0xf5b1('0x11')](_0xf5b1('0x1c'),_0x33d22c,JSON[_0xf5b1('0x1b')](_0x528ce1));_0x1cfcc8(_0x528ce1);})[_0xf5b1('0x16')](function(_0x1c25dc){logger[_0xf5b1('0x12')](_0xf5b1('0x1c'),_0x1c25dc[_0xf5b1('0x14')],_0x33d22c);_0x570040(_0x62519e[_0xf5b1('0x12')](0x1f4,_0x1c25dc[_0xf5b1('0x14')]));});});};
\ No newline at end of file
+var _0x76ed=['http','request','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','body','options','then','UpdateSquareReport','SquareReport','where','attributes','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x26d9c8,_0x11b77f){var _0x4ebe6a=function(_0x457d9d){while(--_0x457d9d){_0x26d9c8['push'](_0x26d9c8['shift']());}};_0x4ebe6a(++_0x11b77f);}(_0x76ed,0xa1));var _0xd76e=function(_0x1a7a1b,_0x518846){_0x1a7a1b=_0x1a7a1b-0x0;var _0x350750=_0x76ed[_0x1a7a1b];return _0x350750;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd76e('0x0'));var BPromise=require(_0xd76e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd76e('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd76e('0x3'));var logger=require('../../config/logger')(_0xd76e('0x4'));var config=require(_0xd76e('0x5'));var jayson=require(_0xd76e('0x6'));var client=jayson['client'][_0xd76e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5f5a6d,_0x453c1c,_0x4eec93){return new BPromise(function(_0x54c324,_0x1744f9){return client[_0xd76e('0x8')](_0x5f5a6d,_0x4eec93)['then'](function(_0xb4f84e){logger[_0xd76e('0x9')](_0xd76e('0xa'),_0x453c1c,'request\x20sent');logger[_0xd76e('0xb')](_0xd76e('0xc'),_0x453c1c,_0xd76e('0xd'),JSON[_0xd76e('0xe')](_0xb4f84e));if(_0xb4f84e[_0xd76e('0xf')]){if(_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x10')]===0x1f4){logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0xb4f84e['error'][_0xd76e('0x11')]);return _0x1744f9(_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x11')]);}logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0xb4f84e[_0xd76e('0xf')][_0xd76e('0x11')]);return _0x54c324(_0xb4f84e['error']['message']);}else{logger[_0xd76e('0x9')](_0xd76e('0xa'),_0x453c1c,_0xd76e('0xd'));_0x54c324(_0xb4f84e[_0xd76e('0x12')]['message']);}})[_0xd76e('0x13')](function(_0x407be0){logger[_0xd76e('0xf')](_0xd76e('0xa'),_0x453c1c,_0x407be0);_0x1744f9(_0x407be0);});});}exports[_0xd76e('0x14')]=function(_0x27284a){var _0x5d42ae=this;return new Promise(function(_0x2f075b,_0x334a5d){return db['SquareReport']['create'](_0x27284a[_0xd76e('0x15')],{'raw':_0x27284a[_0xd76e('0x16')]?_0x27284a[_0xd76e('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xd76e('0x17')](function(_0x51b344){logger[_0xd76e('0x9')](_0xd76e('0x14'),_0x27284a);logger[_0xd76e('0xb')](_0xd76e('0x14'),_0x27284a,JSON[_0xd76e('0xe')](_0x51b344));_0x2f075b(_0x51b344);})[_0xd76e('0x13')](function(_0x46b515){logger[_0xd76e('0xf')]('CreateSquareReport',_0x46b515[_0xd76e('0x11')],_0x27284a);_0x334a5d(_0x5d42ae[_0xd76e('0xf')](0x1f4,_0x46b515['message']));});});};exports[_0xd76e('0x18')]=function(_0x286725){var _0x439abd=this;return new Promise(function(_0x1997b4,_0x59be45){return db[_0xd76e('0x19')]['update'](_0x286725['body'],{'raw':_0x286725[_0xd76e('0x16')]?_0x286725[_0xd76e('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x286725[_0xd76e('0x16')]?_0x286725[_0xd76e('0x16')][_0xd76e('0x1a')]||null:null,'attributes':_0x286725['options']?_0x286725[_0xd76e('0x16')][_0xd76e('0x1b')]||null:null,'limit':_0x286725['options']?_0x286725[_0xd76e('0x16')]['limit']||null:null})[_0xd76e('0x17')](function(_0x28187f){logger['info'](_0xd76e('0x18'),_0x286725);logger[_0xd76e('0xb')]('UpdateSquareReport',_0x286725,JSON[_0xd76e('0xe')](_0x28187f));_0x1997b4(_0x28187f);})[_0xd76e('0x13')](function(_0x204c4a){logger[_0xd76e('0xf')](_0xd76e('0x18'),_0x204c4a[_0xd76e('0x11')],_0x286725);_0x59be45(_0x439abd[_0xd76e('0xf')](0x1f4,_0x204c4a['message']));});});};
\ No newline at end of file
index 4e52f89..05db0bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc09e=['post','create','put','delete','destroy','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x982859,_0x14be5d){var _0x27adac=function(_0x2cda54){while(--_0x2cda54){_0x982859['push'](_0x982859['shift']());}};_0x27adac(++_0x14be5d);}(_0xc09e,0xef));var _0xec09=function(_0x5f31db,_0x1c3507){_0x5f31db=_0x5f31db-0x0;var _0x45f850=_0xc09e[_0x5f31db];return _0x45f850;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xec09('0x0'));var timeout=require('connect-timeout');var express=require(_0xec09('0x1'));var router=express[_0xec09('0x2')]();var fs_extra=require(_0xec09('0x3'));var auth=require(_0xec09('0x4'));var interaction=require(_0xec09('0x5'));var config=require('../../config/environment');var controller=require(_0xec09('0x6'));router[_0xec09('0x7')]('/',auth[_0xec09('0x8')](),controller[_0xec09('0x9')]);router['get'](_0xec09('0xa'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xec09('0xb'),auth[_0xec09('0x8')](),controller[_0xec09('0xc')]);router[_0xec09('0xd')]('/',auth[_0xec09('0x8')](),controller[_0xec09('0xe')]);router[_0xec09('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xec09('0x10')](_0xec09('0xb'),auth[_0xec09('0x8')](),controller[_0xec09('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x9200=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','destroy','exports'];(function(_0x2c87db,_0x548c2d){var _0x1b15a2=function(_0x6306e0){while(--_0x6306e0){_0x2c87db['push'](_0x2c87db['shift']());}};_0x1b15a2(++_0x548c2d);}(_0x9200,0xf0));var _0x0920=function(_0x253bfc,_0x30e9f6){_0x253bfc=_0x253bfc-0x0;var _0x42b25a=_0x9200[_0x253bfc];return _0x42b25a;};'use strict';var multer=require('multer');var util=require(_0x0920('0x0'));var path=require(_0x0920('0x1'));var timeout=require('connect-timeout');var express=require(_0x0920('0x2'));var router=express['Router']();var fs_extra=require(_0x0920('0x3'));var auth=require(_0x0920('0x4'));var interaction=require(_0x0920('0x5'));var config=require(_0x0920('0x6'));var controller=require(_0x0920('0x7'));router[_0x0920('0x8')]('/',auth[_0x0920('0x9')](),controller['index']);router['get'](_0x0920('0xa'),auth[_0x0920('0x9')](),controller[_0x0920('0xb')]);router[_0x0920('0x8')](_0x0920('0xc'),auth['isAuthenticated'](),controller[_0x0920('0xd')]);router[_0x0920('0xe')]('/',auth['isAuthenticated'](),controller[_0x0920('0xf')]);router[_0x0920('0x10')](_0x0920('0xc'),auth[_0x0920('0x9')](),controller[_0x0920('0x11')]);router['delete'](_0x0920('0xc'),auth[_0x0920('0x9')](),controller[_0x0920('0x12')]);module[_0x0920('0x13')]=router;
\ No newline at end of file
index 69d2630..180cbce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7e=['STRING','exports','TEXT'];(function(_0x56d92f,_0x35937f){var _0x32968f=function(_0x4a9be2){while(--_0x4a9be2){_0x56d92f['push'](_0x56d92f['shift']());}};_0x32968f(++_0x35937f);}(_0xea7e,0xb5));var _0xeea7=function(_0x21a86e,_0x30345c){_0x21a86e=_0x21a86e-0x0;var _0xd77321=_0xea7e[_0x21a86e];return _0xd77321;};'use strict';var Sequelize=require('sequelize');module[_0xeea7('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0xeea7('0x1')]},'project_name':{'type':Sequelize[_0xeea7('0x2')]},'callerid':{'type':Sequelize[_0xeea7('0x2')]}};
\ No newline at end of file
+var _0x9cf8=['sequelize','exports','STRING'];(function(_0x59710f,_0x44c7f0){var _0xaae66a=function(_0x1c2397){while(--_0x1c2397){_0x59710f['push'](_0x59710f['shift']());}};_0xaae66a(++_0x44c7f0);}(_0x9cf8,0x150));var _0x89cf=function(_0x29e671,_0x2002be){_0x29e671=_0x29e671-0x0;var _0x4eafac=_0x9cf8[_0x29e671];return _0x4eafac;};'use strict';var Sequelize=require(_0x89cf('0x0'));module[_0x89cf('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x89cf('0x2')]},'application':{'type':Sequelize[_0x89cf('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x89cf('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 59451a4..2d261f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4190=['error','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','end'];(function(_0x2eb0cb,_0x29eaac){var _0x2c5cdb=function(_0x5f1071){while(--_0x5f1071){_0x2eb0cb['push'](_0x2eb0cb['shift']());}};_0x2c5cdb(++_0x29eaac);}(_0x4190,0x13b));var _0x0419=function(_0x4ec911,_0x3534a0){_0x4ec911=_0x4ec911-0x0;var _0x13ab51=_0x4190[_0x4ec911];return _0x13ab51;};'use strict';var emlformat=require(_0x0419('0x0'));var rimraf=require(_0x0419('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0419('0x2'));var rp=require(_0x0419('0x3'));var moment=require('moment');var BPromise=require(_0x0419('0x4'));var Mustache=require(_0x0419('0x5'));var util=require('util');var path=require(_0x0419('0x6'));var sox=require(_0x0419('0x7'));var csv=require(_0x0419('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0419('0x9'));var _=require('lodash');var squel=require(_0x0419('0xa'));var crypto=require(_0x0419('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0419('0xc'));var Papa=require(_0x0419('0xd'));var Redis=require('ioredis');var authService=require(_0x0419('0xe'));var qs=require(_0x0419('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0419('0x10'));var utils=require(_0x0419('0x11'));var config=require(_0x0419('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x0419('0x13'))['db'];function respondWithStatusCode(_0x1633ea,_0x27cac5){_0x27cac5=_0x27cac5||0xcc;return function(_0x2e274d){if(_0x2e274d){return _0x1633ea[_0x0419('0x14')](_0x27cac5);}return _0x1633ea[_0x0419('0x15')](_0x27cac5)['end']();};}function respondWithResult(_0x4d519a,_0x21eb1c){_0x21eb1c=_0x21eb1c||0xc8;return function(_0x150833){if(_0x150833){return _0x4d519a[_0x0419('0x15')](_0x21eb1c)[_0x0419('0x16')](_0x150833);}};}function respondWithFilteredResult(_0x331d18,_0x34f28a){return function(_0x216738){if(_0x216738){var _0x208a63=typeof _0x34f28a['offset']===_0x0419('0x17')&&typeof _0x34f28a[_0x0419('0x18')]===_0x0419('0x17');var _0x577494=_0x216738[_0x0419('0x19')];var _0x1f947c=_0x208a63?0x0:_0x34f28a[_0x0419('0x1a')];var _0x51dff5=_0x208a63?_0x216738[_0x0419('0x19')]:_0x34f28a[_0x0419('0x1a')]+_0x34f28a[_0x0419('0x18')];var _0x394e02;if(_0x51dff5>=_0x577494){_0x51dff5=_0x577494;_0x394e02=0xc8;}else{_0x394e02=0xce;}_0x331d18[_0x0419('0x15')](_0x394e02);return _0x331d18[_0x0419('0x1b')](_0x0419('0x1c'),_0x1f947c+'-'+_0x51dff5+'/'+_0x577494)[_0x0419('0x16')](_0x216738);}return null;};}function patchUpdates(_0x1ae6f){return function(_0x2ea2f3){try{jsonpatch['apply'](_0x2ea2f3,_0x1ae6f,!![]);}catch(_0x9f504c){return BPromise[_0x0419('0x1d')](_0x9f504c);}return _0x2ea2f3[_0x0419('0x1e')]();};}function saveUpdates(_0x15c953,_0x29acaf){return function(_0x491e8c){if(_0x491e8c){return _0x491e8c[_0x0419('0x1f')](_0x15c953)[_0x0419('0x20')](function(_0x29aa88){return _0x29aa88;});}return null;};}function removeEntity(_0x4cca00,_0x15015f){return function(_0x2eedac){if(_0x2eedac){return _0x2eedac[_0x0419('0x21')]()[_0x0419('0x20')](function(){_0x4cca00[_0x0419('0x15')](0xcc)[_0x0419('0x22')]();});}};}function handleEntityNotFound(_0x22d464,_0x42603b){return function(_0x3589f6){if(!_0x3589f6){_0x22d464[_0x0419('0x14')](0x194);}return _0x3589f6;};}function handleError(_0x3aab83,_0x147ff2){_0x147ff2=_0x147ff2||0x1f4;return function(_0x264566){logger[_0x0419('0x23')](_0x264566['stack']);if(_0x264566['name']){delete _0x264566[_0x0419('0x24')];}_0x3aab83[_0x0419('0x15')](_0x147ff2)[_0x0419('0x25')](_0x264566);};}exports[_0x0419('0x26')]=function(_0x44cad0,_0x1fcaa6){var _0x43f9a2={},_0x5f0c80={},_0x5ec96f={'count':0x0,'rows':[]};var _0xb6bcf4=_[_0x0419('0x27')](db[_0x0419('0x28')][_0x0419('0x29')],function(_0x58988d){return{'name':_0x58988d[_0x0419('0x2a')],'type':_0x58988d[_0x0419('0x2b')][_0x0419('0x2c')]};});_0x5f0c80['model']=_[_0x0419('0x27')](_0xb6bcf4,_0x0419('0x24'));_0x5f0c80[_0x0419('0x2d')]=_[_0x0419('0x2e')](_0x44cad0[_0x0419('0x2d')]);_0x5f0c80[_0x0419('0x2f')]=_[_0x0419('0x30')](_0x5f0c80[_0x0419('0x31')],_0x5f0c80[_0x0419('0x2d')]);_0x43f9a2[_0x0419('0x32')]=_[_0x0419('0x30')](_0x5f0c80[_0x0419('0x31')],qs[_0x0419('0x33')](_0x44cad0[_0x0419('0x2d')][_0x0419('0x33')]));_0x43f9a2[_0x0419('0x32')]=_0x43f9a2['attributes']['length']?_0x43f9a2[_0x0419('0x32')]:_0x5f0c80[_0x0419('0x31')];if(!_0x44cad0[_0x0419('0x2d')]['hasOwnProperty']('nolimit')){_0x43f9a2[_0x0419('0x18')]=qs[_0x0419('0x18')](_0x44cad0[_0x0419('0x2d')][_0x0419('0x18')]);_0x43f9a2[_0x0419('0x1a')]=qs[_0x0419('0x1a')](_0x44cad0['query'][_0x0419('0x1a')]);}_0x43f9a2[_0x0419('0x34')]=qs[_0x0419('0x35')](_0x44cad0[_0x0419('0x2d')][_0x0419('0x35')]);_0x43f9a2[_0x0419('0x36')]=qs[_0x0419('0x2f')](_['pick'](_0x44cad0[_0x0419('0x2d')],_0x5f0c80['filters']),_0xb6bcf4);if(_0x44cad0['query']['filter']){_0x43f9a2[_0x0419('0x36')]=_[_0x0419('0x37')](_0x43f9a2[_0x0419('0x36')],{'$or':_[_0x0419('0x27')](_0xb6bcf4,function(_0x112275){if(_0x112275[_0x0419('0x2b')]!==_0x0419('0x38')){var _0x2fce68={};_0x2fce68[_0x112275[_0x0419('0x24')]]={'$like':'%'+_0x44cad0[_0x0419('0x2d')][_0x0419('0x39')]+'%'};return _0x2fce68;}})});}_0x43f9a2=_[_0x0419('0x37')]({},_0x43f9a2,_0x44cad0[_0x0419('0x3a')]);var _0x33aa80={'where':_0x43f9a2['where']};return db['SquareDetailsReport'][_0x0419('0x19')](_0x33aa80)['then'](function(_0x515fad){_0x5ec96f[_0x0419('0x19')]=_0x515fad;if(_0x44cad0[_0x0419('0x2d')][_0x0419('0x3b')]){_0x43f9a2['include']=[{'all':!![]}];}return db[_0x0419('0x28')][_0x0419('0x3c')](_0x43f9a2);})[_0x0419('0x20')](function(_0x430d7f){_0x5ec96f[_0x0419('0x3d')]=_0x430d7f;return _0x5ec96f;})['then'](respondWithFilteredResult(_0x1fcaa6,_0x43f9a2))[_0x0419('0x3e')](handleError(_0x1fcaa6,null));};exports[_0x0419('0x3f')]=function(_0xd6f568,_0x3d6e94){var _0x4a71a7={'raw':!![],'where':{'id':_0xd6f568[_0x0419('0x40')]['id']}},_0x17c7a7={};_0x17c7a7[_0x0419('0x31')]=_[_0x0419('0x2e')](db[_0x0419('0x28')][_0x0419('0x29')]);_0x17c7a7[_0x0419('0x2d')]=_[_0x0419('0x2e')](_0xd6f568[_0x0419('0x2d')]);_0x17c7a7[_0x0419('0x2f')]=_['intersection'](_0x17c7a7[_0x0419('0x31')],_0x17c7a7['query']);_0x4a71a7[_0x0419('0x32')]=_['intersection'](_0x17c7a7['model'],qs['fields'](_0xd6f568[_0x0419('0x2d')][_0x0419('0x33')]));_0x4a71a7[_0x0419('0x32')]=_0x4a71a7[_0x0419('0x32')][_0x0419('0x41')]?_0x4a71a7['attributes']:_0x17c7a7['model'];if(_0xd6f568[_0x0419('0x2d')][_0x0419('0x3b')]){_0x4a71a7[_0x0419('0x42')]=[{'all':!![]}];}_0x4a71a7=_[_0x0419('0x37')]({},_0x4a71a7,_0xd6f568['options']);return db[_0x0419('0x28')][_0x0419('0x43')](_0x4a71a7)[_0x0419('0x20')](handleEntityNotFound(_0x3d6e94,null))[_0x0419('0x20')](respondWithResult(_0x3d6e94,null))[_0x0419('0x3e')](handleError(_0x3d6e94,null));};exports['create']=function(_0x19dbde,_0xe7b250){return db[_0x0419('0x28')][_0x0419('0x44')](_0x19dbde[_0x0419('0x45')],{})[_0x0419('0x20')](respondWithResult(_0xe7b250,0xc9))[_0x0419('0x3e')](handleError(_0xe7b250,null));};exports['update']=function(_0xfeb5c1,_0x217838){if(_0xfeb5c1[_0x0419('0x45')]['id']){delete _0xfeb5c1['body']['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0xfeb5c1[_0x0419('0x40')]['id']}})[_0x0419('0x20')](handleEntityNotFound(_0x217838,null))[_0x0419('0x20')](saveUpdates(_0xfeb5c1[_0x0419('0x45')],null))['then'](respondWithResult(_0x217838,null))['catch'](handleError(_0x217838,null));};exports[_0x0419('0x21')]=function(_0xf623ce,_0x1d09f6){return db['SquareDetailsReport'][_0x0419('0x43')]({'where':{'id':_0xf623ce[_0x0419('0x40')]['id']}})[_0x0419('0x20')](handleEntityNotFound(_0x1d09f6,null))[_0x0419('0x20')](removeEntity(_0x1d09f6,null))[_0x0419('0x3e')](handleError(_0x1d09f6,null));};exports['describe']=function(_0x57807e,_0x89bf4d){return db[_0x0419('0x28')]['describe']()[_0x0419('0x20')](respondWithResult(_0x89bf4d,null))['catch'](handleError(_0x89bf4d,null));};
\ No newline at end of file
+var _0x9c97=['update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','SquareDetailsReport','findAll','catch','keys','length','create','body','find','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save'];(function(_0x44f033,_0x50304d){var _0xfb2869=function(_0x25785d){while(--_0x25785d){_0x44f033['push'](_0x44f033['shift']());}};_0xfb2869(++_0x50304d);}(_0x9c97,0x15c));var _0x79c9=function(_0x3fbfa4,_0x4dc57a){_0x3fbfa4=_0x3fbfa4-0x0;var _0x19f5ec=_0x9c97[_0x3fbfa4];return _0x19f5ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79c9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x79c9('0x1'));var rp=require(_0x79c9('0x2'));var moment=require(_0x79c9('0x3'));var BPromise=require(_0x79c9('0x4'));var Mustache=require(_0x79c9('0x5'));var util=require(_0x79c9('0x6'));var path=require(_0x79c9('0x7'));var sox=require(_0x79c9('0x8'));var csv=require(_0x79c9('0x9'));var ejs=require(_0x79c9('0xa'));var fs=require('fs');var fs_extra=require(_0x79c9('0xb'));var _=require(_0x79c9('0xc'));var squel=require(_0x79c9('0xd'));var crypto=require('crypto');var jsforce=require(_0x79c9('0xe'));var deskjs=require(_0x79c9('0xf'));var toCsv=require('to-csv');var querystring=require(_0x79c9('0x10'));var Papa=require(_0x79c9('0x11'));var Redis=require('ioredis');var authService=require(_0x79c9('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x79c9('0x13'));var hardwareService=require(_0x79c9('0x14'));var logger=require(_0x79c9('0x15'))(_0x79c9('0x16'));var utils=require('../../config/utils');var config=require(_0x79c9('0x17'));var licenseUtil=require(_0x79c9('0x18'));var db=require(_0x79c9('0x19'))['db'];function respondWithStatusCode(_0x5370c4,_0x2cc1a9){_0x2cc1a9=_0x2cc1a9||0xcc;return function(_0x37af9a){if(_0x37af9a){return _0x5370c4[_0x79c9('0x1a')](_0x2cc1a9);}return _0x5370c4['status'](_0x2cc1a9)['end']();};}function respondWithResult(_0x519510,_0x253400){_0x253400=_0x253400||0xc8;return function(_0x430e2a){if(_0x430e2a){return _0x519510[_0x79c9('0x1b')](_0x253400)[_0x79c9('0x1c')](_0x430e2a);}};}function respondWithFilteredResult(_0x5c90d6,_0x31cd4d){return function(_0x58c259){if(_0x58c259){var _0x3b2584=typeof _0x31cd4d[_0x79c9('0x1d')]===_0x79c9('0x1e')&&typeof _0x31cd4d[_0x79c9('0x1f')]===_0x79c9('0x1e');var _0x2f4193=_0x58c259[_0x79c9('0x20')];var _0x58a734=_0x3b2584?0x0:_0x31cd4d[_0x79c9('0x1d')];var _0x33fb49=_0x3b2584?_0x58c259[_0x79c9('0x20')]:_0x31cd4d[_0x79c9('0x1d')]+_0x31cd4d[_0x79c9('0x1f')];var _0x572b43;if(_0x33fb49>=_0x2f4193){_0x33fb49=_0x2f4193;_0x572b43=0xc8;}else{_0x572b43=0xce;}_0x5c90d6[_0x79c9('0x1b')](_0x572b43);return _0x5c90d6[_0x79c9('0x21')]('Content-Range',_0x58a734+'-'+_0x33fb49+'/'+_0x2f4193)[_0x79c9('0x1c')](_0x58c259);}return null;};}function patchUpdates(_0x5561b0){return function(_0x43d286){try{jsonpatch[_0x79c9('0x22')](_0x43d286,_0x5561b0,!![]);}catch(_0x47c4d3){return BPromise[_0x79c9('0x23')](_0x47c4d3);}return _0x43d286[_0x79c9('0x24')]();};}function saveUpdates(_0xaa5f68,_0x3601b2){return function(_0x1c6cab){if(_0x1c6cab){return _0x1c6cab[_0x79c9('0x25')](_0xaa5f68)[_0x79c9('0x26')](function(_0xe1c835){return _0xe1c835;});}return null;};}function removeEntity(_0x13b5a7,_0x704040){return function(_0x57fdc9){if(_0x57fdc9){return _0x57fdc9[_0x79c9('0x27')]()[_0x79c9('0x26')](function(){_0x13b5a7['status'](0xcc)[_0x79c9('0x28')]();});}};}function handleEntityNotFound(_0x29bcb2,_0x10981a){return function(_0x5947b7){if(!_0x5947b7){_0x29bcb2[_0x79c9('0x1a')](0x194);}return _0x5947b7;};}function handleError(_0x19ba5c,_0x405ea8){_0x405ea8=_0x405ea8||0x1f4;return function(_0x4c6635){logger[_0x79c9('0x29')](_0x4c6635[_0x79c9('0x2a')]);if(_0x4c6635[_0x79c9('0x2b')]){delete _0x4c6635[_0x79c9('0x2b')];}_0x19ba5c['status'](_0x405ea8)[_0x79c9('0x2c')](_0x4c6635);};}exports[_0x79c9('0x2d')]=function(_0x3211dc,_0x4a3fde){var _0x37bbf8={},_0x2793cd={},_0x5589d0={'count':0x0,'rows':[]};var _0x11d6ea=_[_0x79c9('0x2e')](db['SquareDetailsReport'][_0x79c9('0x2f')],function(_0x316552){return{'name':_0x316552[_0x79c9('0x30')],'type':_0x316552[_0x79c9('0x31')][_0x79c9('0x32')]};});_0x2793cd['model']=_[_0x79c9('0x2e')](_0x11d6ea,_0x79c9('0x2b'));_0x2793cd[_0x79c9('0x33')]=_['keys'](_0x3211dc[_0x79c9('0x33')]);_0x2793cd[_0x79c9('0x34')]=_[_0x79c9('0x35')](_0x2793cd[_0x79c9('0x36')],_0x2793cd[_0x79c9('0x33')]);_0x37bbf8[_0x79c9('0x37')]=_[_0x79c9('0x35')](_0x2793cd[_0x79c9('0x36')],qs[_0x79c9('0x38')](_0x3211dc[_0x79c9('0x33')][_0x79c9('0x38')]));_0x37bbf8[_0x79c9('0x37')]=_0x37bbf8[_0x79c9('0x37')]['length']?_0x37bbf8['attributes']:_0x2793cd[_0x79c9('0x36')];if(!_0x3211dc[_0x79c9('0x33')][_0x79c9('0x39')]('nolimit')){_0x37bbf8[_0x79c9('0x1f')]=qs['limit'](_0x3211dc[_0x79c9('0x33')]['limit']);_0x37bbf8[_0x79c9('0x1d')]=qs[_0x79c9('0x1d')](_0x3211dc[_0x79c9('0x33')][_0x79c9('0x1d')]);}_0x37bbf8[_0x79c9('0x3a')]=qs[_0x79c9('0x3b')](_0x3211dc['query'][_0x79c9('0x3b')]);_0x37bbf8['where']=qs[_0x79c9('0x34')](_['pick'](_0x3211dc[_0x79c9('0x33')],_0x2793cd[_0x79c9('0x34')]),_0x11d6ea);if(_0x3211dc[_0x79c9('0x33')][_0x79c9('0x3c')]){_0x37bbf8['where']=_[_0x79c9('0x3d')](_0x37bbf8[_0x79c9('0x3e')],{'$or':_[_0x79c9('0x2e')](_0x11d6ea,function(_0x5c9611){if(_0x5c9611[_0x79c9('0x31')]!==_0x79c9('0x3f')){var _0x41312a={};_0x41312a[_0x5c9611['name']]={'$like':'%'+_0x3211dc[_0x79c9('0x33')][_0x79c9('0x3c')]+'%'};return _0x41312a;}})});}_0x37bbf8=_[_0x79c9('0x3d')]({},_0x37bbf8,_0x3211dc[_0x79c9('0x40')]);var _0x51f9c0={'where':_0x37bbf8[_0x79c9('0x3e')]};return db['SquareDetailsReport']['count'](_0x51f9c0)[_0x79c9('0x26')](function(_0x130529){_0x5589d0['count']=_0x130529;if(_0x3211dc[_0x79c9('0x33')][_0x79c9('0x41')]){_0x37bbf8[_0x79c9('0x42')]=[{'all':!![]}];}return db[_0x79c9('0x43')][_0x79c9('0x44')](_0x37bbf8);})[_0x79c9('0x26')](function(_0x19f34b){_0x5589d0['rows']=_0x19f34b;return _0x5589d0;})[_0x79c9('0x26')](respondWithFilteredResult(_0x4a3fde,_0x37bbf8))[_0x79c9('0x45')](handleError(_0x4a3fde,null));};exports['show']=function(_0x2910ef,_0x3e64e1){var _0x3dbc30={'raw':!![],'where':{'id':_0x2910ef['params']['id']}},_0x4059ab={};_0x4059ab[_0x79c9('0x36')]=_['keys'](db[_0x79c9('0x43')][_0x79c9('0x2f')]);_0x4059ab[_0x79c9('0x33')]=_[_0x79c9('0x46')](_0x2910ef[_0x79c9('0x33')]);_0x4059ab[_0x79c9('0x34')]=_[_0x79c9('0x35')](_0x4059ab[_0x79c9('0x36')],_0x4059ab['query']);_0x3dbc30['attributes']=_[_0x79c9('0x35')](_0x4059ab['model'],qs[_0x79c9('0x38')](_0x2910ef[_0x79c9('0x33')]['fields']));_0x3dbc30[_0x79c9('0x37')]=_0x3dbc30[_0x79c9('0x37')][_0x79c9('0x47')]?_0x3dbc30[_0x79c9('0x37')]:_0x4059ab[_0x79c9('0x36')];if(_0x2910ef[_0x79c9('0x33')][_0x79c9('0x41')]){_0x3dbc30[_0x79c9('0x42')]=[{'all':!![]}];}_0x3dbc30=_[_0x79c9('0x3d')]({},_0x3dbc30,_0x2910ef[_0x79c9('0x40')]);return db['SquareDetailsReport']['find'](_0x3dbc30)[_0x79c9('0x26')](handleEntityNotFound(_0x3e64e1,null))[_0x79c9('0x26')](respondWithResult(_0x3e64e1,null))[_0x79c9('0x45')](handleError(_0x3e64e1,null));};exports[_0x79c9('0x48')]=function(_0x24b820,_0x247d8f){return db['SquareDetailsReport'][_0x79c9('0x48')](_0x24b820[_0x79c9('0x49')],{})[_0x79c9('0x26')](respondWithResult(_0x247d8f,0xc9))['catch'](handleError(_0x247d8f,null));};exports['update']=function(_0x563d26,_0x53b553){if(_0x563d26[_0x79c9('0x49')]['id']){delete _0x563d26[_0x79c9('0x49')]['id'];}return db[_0x79c9('0x43')][_0x79c9('0x4a')]({'where':{'id':_0x563d26[_0x79c9('0x4b')]['id']}})[_0x79c9('0x26')](handleEntityNotFound(_0x53b553,null))[_0x79c9('0x26')](saveUpdates(_0x563d26[_0x79c9('0x49')],null))['then'](respondWithResult(_0x53b553,null))[_0x79c9('0x45')](handleError(_0x53b553,null));};exports[_0x79c9('0x27')]=function(_0x4ad831,_0x22af47){return db[_0x79c9('0x43')]['find']({'where':{'id':_0x4ad831[_0x79c9('0x4b')]['id']}})[_0x79c9('0x26')](handleEntityNotFound(_0x22af47,null))[_0x79c9('0x26')](removeEntity(_0x22af47,null))[_0x79c9('0x45')](handleError(_0x22af47,null));};exports[_0x79c9('0x4c')]=function(_0x2a6362,_0x2f359f){return db[_0x79c9('0x43')][_0x79c9('0x4c')]()['then'](respondWithResult(_0x2f359f,null))[_0x79c9('0x45')](handleError(_0x2f359f,null));};
\ No newline at end of file
index 9d27c68..0e3b3dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef58=['request-promise','path','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment'];(function(_0x30c92b,_0x154324){var _0x33837b=function(_0x3366e6){while(--_0x3366e6){_0x30c92b['push'](_0x30c92b['shift']());}};_0x33837b(++_0x154324);}(_0xef58,0xf2));var _0x8ef5=function(_0x4269ea,_0x56b0de){_0x4269ea=_0x4269ea-0x0;var _0x332e41=_0xef58[_0x4269ea];return _0x332e41;};'use strict';var _=require(_0x8ef5('0x0'));var util=require(_0x8ef5('0x1'));var logger=require(_0x8ef5('0x2'))(_0x8ef5('0x3'));var moment=require(_0x8ef5('0x4'));var BPromise=require('bluebird');var rp=require(_0x8ef5('0x5'));var fs=require('fs');var path=require(_0x8ef5('0x6'));var rimraf=require('rimraf');var config=require(_0x8ef5('0x7'));var attributes=require(_0x8ef5('0x8'));module[_0x8ef5('0x9')]=function(_0x4c6309,_0x53a0cd){return _0x4c6309[_0x8ef5('0xa')](_0x8ef5('0xb'),attributes,{'tableName':_0x8ef5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8f0=['../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd8f0,0x109));var _0x0d8f=function(_0x29b01f,_0x13e8bb){_0x29b01f=_0x29b01f-0x0;var _0xf7d6c3=_0xd8f0[_0x29b01f];return _0xf7d6c3;};'use strict';var _=require(_0x0d8f('0x0'));var util=require(_0x0d8f('0x1'));var logger=require(_0x0d8f('0x2'))(_0x0d8f('0x3'));var moment=require(_0x0d8f('0x4'));var BPromise=require(_0x0d8f('0x5'));var rp=require(_0x0d8f('0x6'));var fs=require('fs');var path=require(_0x0d8f('0x7'));var rimraf=require('rimraf');var config=require(_0x0d8f('0x8'));var attributes=require(_0x0d8f('0x9'));module[_0x0d8f('0xa')]=function(_0x43960b,_0x46e5a4){return _0x43960b['define'](_0x0d8f('0xb'),attributes,{'tableName':_0x0d8f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43b03c8..4862012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c5=['options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','debug','request\x20sent','stringify','error','code','message','SquareDetailsReport,\x20%s,\x20%s','info','catch','CreateSquareDetailsReport','create'];(function(_0x5852eb,_0xf4528d){var _0x574981=function(_0x3f4130){while(--_0x3f4130){_0x5852eb['push'](_0x5852eb['shift']());}};_0x574981(++_0xf4528d);}(_0x51c5,0x8f));var _0x551c=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x51c5[_0x42bdad];return _0x122626;};'use strict';var _=require(_0x551c('0x0'));var util=require(_0x551c('0x1'));var moment=require(_0x551c('0x2'));var BPromise=require(_0x551c('0x3'));var rs=require(_0x551c('0x4'));var fs=require('fs');var Redis=require(_0x551c('0x5'));var db=require(_0x551c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x551c('0x7'))(_0x551c('0x8'));var config=require(_0x551c('0x9'));var jayson=require(_0x551c('0xa'));var client=jayson[_0x551c('0xb')][_0x551c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21dfa1,_0x196955,_0x4f3a0a){return new BPromise(function(_0x414edb,_0x15f4f8){return client[_0x551c('0xd')](_0x21dfa1,_0x4f3a0a)['then'](function(_0x17683c){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x196955,'request\x20sent');logger[_0x551c('0xe')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x196955,_0x551c('0xf'),JSON[_0x551c('0x10')](_0x17683c));if(_0x17683c[_0x551c('0x11')]){if(_0x17683c[_0x551c('0x11')][_0x551c('0x12')]===0x1f4){logger[_0x551c('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x196955,_0x17683c[_0x551c('0x11')][_0x551c('0x13')]);return _0x15f4f8(_0x17683c[_0x551c('0x11')]['message']);}logger[_0x551c('0x11')](_0x551c('0x14'),_0x196955,_0x17683c['error'][_0x551c('0x13')]);return _0x414edb(_0x17683c['error'][_0x551c('0x13')]);}else{logger[_0x551c('0x15')](_0x551c('0x14'),_0x196955,_0x551c('0xf'));_0x414edb(_0x17683c['result']['message']);}})[_0x551c('0x16')](function(_0xcdf011){logger['error'](_0x551c('0x14'),_0x196955,_0xcdf011);_0x15f4f8(_0xcdf011);});});}exports[_0x551c('0x17')]=function(_0x274432){var _0x2a0b55=this;return new Promise(function(_0x4c8dba,_0x4fcaf3){return db['SquareDetailsReport'][_0x551c('0x18')](_0x274432['body'],{'raw':_0x274432['options']?_0x274432[_0x551c('0x19')][_0x551c('0x1a')]===undefined?!![]:![]:!![]})[_0x551c('0x1b')](function(_0x1927e7){logger[_0x551c('0x15')](_0x551c('0x17'),_0x274432);logger['debug']('CreateSquareDetailsReport',_0x274432,JSON[_0x551c('0x10')](_0x1927e7));_0x4c8dba(_0x1927e7);})['catch'](function(_0x330160){logger[_0x551c('0x11')](_0x551c('0x17'),_0x330160[_0x551c('0x13')],_0x274432);_0x4fcaf3(_0x2a0b55[_0x551c('0x11')](0x1f4,_0x330160['message']));});});};
\ No newline at end of file
+var _0xcecc=['SquareDetailsReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport','create','body','options','raw','CreateSquareDetailsReport','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','info'];(function(_0x323e78,_0x119aea){var _0x2c9991=function(_0x437638){while(--_0x437638){_0x323e78['push'](_0x323e78['shift']());}};_0x2c9991(++_0x119aea);}(_0xcecc,0x186));var _0xccec=function(_0x1a9a12,_0x3afa3b){_0x1a9a12=_0x1a9a12-0x0;var _0x23460f=_0xcecc[_0x1a9a12];return _0x23460f;};'use strict';var _=require(_0xccec('0x0'));var util=require('util');var moment=require(_0xccec('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xccec('0x2'));var db=require(_0xccec('0x3'))['db'];var utils=require(_0xccec('0x4'));var logger=require(_0xccec('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xccec('0x6'));var client=jayson['client'][_0xccec('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x44ed01,_0x2a66e5,_0x5788aa){return new BPromise(function(_0x372ea6,_0x3d7b1a){return client['request'](_0x44ed01,_0x5788aa)[_0xccec('0x8')](function(_0xbbf504){logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,'request\x20sent');logger[_0xccec('0xb')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x2a66e5,_0xccec('0xc'),JSON[_0xccec('0xd')](_0xbbf504));if(_0xbbf504['error']){if(_0xbbf504[_0xccec('0xe')][_0xccec('0xf')]===0x1f4){logger[_0xccec('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);return _0x3d7b1a(_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);}logger[_0xccec('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')]['message']);return _0x372ea6(_0xbbf504['error']['message']);}else{logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,_0xccec('0xc'));_0x372ea6(_0xbbf504[_0xccec('0x11')][_0xccec('0x10')]);}})[_0xccec('0x12')](function(_0x7abe38){logger[_0xccec('0xe')](_0xccec('0xa'),_0x2a66e5,_0x7abe38);_0x3d7b1a(_0x7abe38);});});}exports['CreateSquareDetailsReport']=function(_0x518016){var _0x56b926=this;return new Promise(function(_0x970c66,_0x551d33){return db[_0xccec('0x13')][_0xccec('0x14')](_0x518016[_0xccec('0x15')],{'raw':_0x518016['options']?_0x518016[_0xccec('0x16')][_0xccec('0x17')]===undefined?!![]:![]:!![]})[_0xccec('0x8')](function(_0x4a7f08){logger[_0xccec('0x9')](_0xccec('0x18'),_0x518016);logger[_0xccec('0xb')]('CreateSquareDetailsReport',_0x518016,JSON[_0xccec('0xd')](_0x4a7f08));_0x970c66(_0x4a7f08);})['catch'](function(_0x9065a3){logger['error'](_0xccec('0x18'),_0x9065a3[_0xccec('0x10')],_0x518016);_0x551d33(_0x56b926[_0xccec('0xe')](0x1f4,_0x9065a3[_0xccec('0x10')]));});});};
\ No newline at end of file
index 9e92887..69fd6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x673f=['./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service'];(function(_0xaf8267,_0x33968b){var _0x20798b=function(_0xaa6732){while(--_0xaa6732){_0xaf8267['push'](_0xaf8267['shift']());}};_0x20798b(++_0x33968b);}(_0x673f,0x147));var _0xf673=function(_0x3edc24,_0x35775a){_0x3edc24=_0x3edc24-0x0;var _0x253a3b=_0x673f[_0x3edc24];return _0x253a3b;};'use strict';var express=require(_0xf673('0x0'));var router=express[_0xf673('0x1')]();var auth=require(_0xf673('0x2'));var controller=require(_0xf673('0x3'));router[_0xf673('0x4')]('/',auth[_0xf673('0x5')](),controller[_0xf673('0x6')]);router[_0xf673('0x4')](_0xf673('0x7'),auth[_0xf673('0x5')](),controller[_0xf673('0x8')]);module[_0xf673('0x9')]=router;
\ No newline at end of file
+var _0xf25c=['exports','express','Router','get','isAuthenticated','index','/process/:pid/kill','killProcess'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf25c,0x151));var _0xcf25=function(_0xd0a847,_0x72562b){_0xd0a847=_0xd0a847-0x0;var _0x2536ec=_0xf25c[_0xd0a847];return _0x2536ec;};'use strict';var express=require(_0xcf25('0x0'));var router=express[_0xcf25('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0xcf25('0x2')]('/',auth[_0xcf25('0x3')](),controller[_0xcf25('0x4')]);router[_0xcf25('0x2')](_0xcf25('0x5'),auth[_0xcf25('0x3')](),controller[_0xcf25('0x6')]);module[_0xcf25('0x7')]=router;
\ No newline at end of file
index fd0f7bd..11c4d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3246=['kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','exec','../../config/logger','api','util','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','index','then','json','killProcess','components/import/cm','format','params','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid'];(function(_0x36ab62,_0x38d8cf){var _0x51a427=function(_0x1928fd){while(--_0x1928fd){_0x36ab62['push'](_0x36ab62['shift']());}};_0x51a427(++_0x38d8cf);}(_0x3246,0x1ce));var _0x6324=function(_0x416dc4,_0x38b779){_0x416dc4=_0x416dc4-0x0;var _0x4d8b72=_0x3246[_0x416dc4];return _0x4d8b72;};'use strict';var info=require(_0x6324('0x0'));var exec=require(_0x6324('0x1'))[_0x6324('0x2')];var logger=require(_0x6324('0x3'))(_0x6324('0x4'));var util=require(_0x6324('0x5'));var BPromise=require(_0x6324('0x6'));var _=require(_0x6324('0x7'));function handleError(_0x3a5891,_0x3831f3,_0xaf58a1){_0x3831f3=_0x3831f3||0x1f4;return function(_0x5e7b0b){logger['error'](_0x6324('0x8'),_0xaf58a1,_0x3831f3,util['inspect'](_0x5e7b0b,{'showHidden':![],'depth':null}));delete _0x5e7b0b[_0x6324('0x9')];_0x3a5891[_0x6324('0xa')](_0x3831f3)[_0x6324('0xb')](_0x5e7b0b);};}exports[_0x6324('0xc')]=function(_0x4c8d54,_0x5a22c6){return info['getAllData']()[_0x6324('0xd')](function(_0x4f665b){return _0x5a22c6[_0x6324('0xa')](0xc8)[_0x6324('0xe')](_0x4f665b);})['catch'](function(_0x560516){return _0x5a22c6[_0x6324('0xa')](0x1f4)[_0x6324('0xe')](_0x560516);});};exports[_0x6324('0xf')]=function(_0x24a25a,_0xfcff28){var _0x35db74=[_0x6324('0x10')];return new BPromise(function(_0x5a7fec,_0x398cae){return exec(util[_0x6324('0x11')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x24a25a[_0x6324('0x12')]['pid']),function(_0x33a5fd,_0x47e0a2,_0x1978e0){if(_0x33a5fd){return _0x398cae(_0x33a5fd);}return _0x5a7fec(_0x47e0a2);});})[_0x6324('0xd')](function(_0x10293b){var _0x3f5e27=![];var _0x1a996c=_0x10293b[_0x6324('0x13')](/\n/);for(var _0x498115=0x0,_0x27ae0d=_0x35db74[_0x6324('0x14')];_0x498115<_0x27ae0d,_0x3f5e27===![];_0x498115+=0x1){if(_0x10293b[_0x6324('0x15')](_0x35db74[_0x498115])>=0x0){_0x3f5e27=!![];}}if(!_0x3f5e27){throw new Error(util[_0x6324('0x11')](_0x6324('0x16'),_0x24a25a[_0x6324('0x12')][_0x6324('0x17')]));}process[_0x6324('0x18')](_0x24a25a[_0x6324('0x12')][_0x6324('0x17')],'SIGINT');return _0xfcff28[_0x6324('0xa')](0xc8)[_0x6324('0xe')]({'message':util['format'](_0x6324('0x19'),_0x24a25a['params']['pid'])});})[_0x6324('0x1a')](handleError(_0xfcff28,null,'killProcess'));};
\ No newline at end of file
+var _0xe1bd=['child_process','exec','../../config/logger','api','util','bluebird','lodash','error','inspect','name','status','send','index','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation'];(function(_0x67be8b,_0x679402){var _0x18368e=function(_0xae6ef9){while(--_0xae6ef9){_0x67be8b['push'](_0x67be8b['shift']());}};_0x18368e(++_0x679402);}(_0xe1bd,0x1a3));var _0xde1b=function(_0x4f4589,_0xe12809){_0x4f4589=_0x4f4589-0x0;var _0x250e25=_0xe1bd[_0x4f4589];return _0x250e25;};'use strict';var info=require(_0xde1b('0x0'));var exec=require(_0xde1b('0x1'))[_0xde1b('0x2')];var logger=require(_0xde1b('0x3'))(_0xde1b('0x4'));var util=require(_0xde1b('0x5'));var BPromise=require(_0xde1b('0x6'));var _=require(_0xde1b('0x7'));function handleError(_0x2b5703,_0x383725,_0x488abe){_0x383725=_0x383725||0x1f4;return function(_0xf345cf){logger[_0xde1b('0x8')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x488abe,_0x383725,util[_0xde1b('0x9')](_0xf345cf,{'showHidden':![],'depth':null}));delete _0xf345cf[_0xde1b('0xa')];_0x2b5703[_0xde1b('0xb')](_0x383725)[_0xde1b('0xc')](_0xf345cf);};}exports[_0xde1b('0xd')]=function(_0x236e1e,_0x1f8701){return info['getAllData']()[_0xde1b('0xe')](function(_0x42e991){return _0x1f8701[_0xde1b('0xb')](0xc8)[_0xde1b('0xf')](_0x42e991);})['catch'](function(_0x4b01e4){return _0x1f8701[_0xde1b('0xb')](0x1f4)['json'](_0x4b01e4);});};exports[_0xde1b('0x10')]=function(_0x40736d,_0x4bd041){var _0xfec5d6=[_0xde1b('0x11')];return new BPromise(function(_0x58a637,_0x2ba08c){return exec(util[_0xde1b('0x12')](_0xde1b('0x13'),_0x40736d[_0xde1b('0x14')][_0xde1b('0x15')]),function(_0x5af5a4,_0x946630,_0x3a86cf){if(_0x5af5a4){return _0x2ba08c(_0x5af5a4);}return _0x58a637(_0x946630);});})['then'](function(_0x1ee14e){var _0x379740=![];var _0x12e8c0=_0x1ee14e['split'](/\n/);for(var _0x3cb3d8=0x0,_0x3f6c4d=_0xfec5d6[_0xde1b('0x16')];_0x3cb3d8<_0x3f6c4d,_0x379740===![];_0x3cb3d8+=0x1){if(_0x1ee14e[_0xde1b('0x17')](_0xfec5d6[_0x3cb3d8])>=0x0){_0x379740=!![];}}if(!_0x379740){throw new Error(util[_0xde1b('0x12')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x40736d['params']['pid']));}process[_0xde1b('0x18')](_0x40736d[_0xde1b('0x14')]['pid'],_0xde1b('0x19'));return _0x4bd041['status'](0xc8)[_0xde1b('0xf')]({'message':util[_0xde1b('0x12')](_0xde1b('0x1a'),_0x40736d[_0xde1b('0x14')][_0xde1b('0x15')])});})[_0xde1b('0x1b')](handleError(_0x4bd041,null,'killProcess'));};
\ No newline at end of file
index da36f35..e608caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa03d=['show','post','/:id','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./tag.controller','isAuthenticated','index','get'];(function(_0x481ffc,_0x4acb82){var _0x51d09a=function(_0x2d73e0){while(--_0x2d73e0){_0x481ffc['push'](_0x481ffc['shift']());}};_0x51d09a(++_0x4acb82);}(_0xa03d,0x15b));var _0xda03=function(_0xd2cf26,_0x4c055b){_0xd2cf26=_0xd2cf26-0x0;var _0x14c095=_0xa03d[_0xd2cf26];return _0x14c095;};'use strict';var multer=require(_0xda03('0x0'));var util=require(_0xda03('0x1'));var path=require('path');var timeout=require(_0xda03('0x2'));var express=require('express');var router=express[_0xda03('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xda03('0x4'));var interaction=require(_0xda03('0x5'));var config=require('../../config/environment');var controller=require(_0xda03('0x6'));router['get']('/',auth[_0xda03('0x7')](),controller[_0xda03('0x8')]);router[_0xda03('0x9')]('/:id',auth[_0xda03('0x7')](),controller[_0xda03('0xa')]);router[_0xda03('0xb')]('/',auth[_0xda03('0x7')](),controller['create']);router['put'](_0xda03('0xc'),auth[_0xda03('0x7')](),controller[_0xda03('0xd')]);router[_0xda03('0xe')](_0xda03('0xc'),auth['isAuthenticated'](),controller[_0xda03('0xf')]);module[_0xda03('0x10')]=router;
\ No newline at end of file
+var _0x4797=['multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','isAuthenticated','show','post','put','/:id','update','delete','destroy'];(function(_0x57dec2,_0xf7ab2e){var _0xbe1b41=function(_0x2b7270){while(--_0x2b7270){_0x57dec2['push'](_0x57dec2['shift']());}};_0xbe1b41(++_0xf7ab2e);}(_0x4797,0x143));var _0x7479=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4797[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x7479('0x0'));var util=require(_0x7479('0x1'));var path=require(_0x7479('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7479('0x3')]();var fs_extra=require(_0x7479('0x4'));var auth=require(_0x7479('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7479('0x6'));var controller=require(_0x7479('0x7'));router[_0x7479('0x8')]('/',auth[_0x7479('0x9')](),controller['index']);router[_0x7479('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x7479('0xa')]);router[_0x7479('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7479('0xc')](_0x7479('0xd'),auth[_0x7479('0x9')](),controller[_0x7479('0xe')]);router[_0x7479('0xf')]('/:id',auth[_0x7479('0x9')](),controller[_0x7479('0x10')]);module['exports']=router;
\ No newline at end of file
index 8c6f1d9..60946f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe3=['STRING','#0091EA','sequelize'];(function(_0x417a0d,_0x332649){var _0x4f5b4e=function(_0x1df856){while(--_0x1df856){_0x417a0d['push'](_0x417a0d['shift']());}};_0x4f5b4e(++_0x332649);}(_0xefe3,0xf5));var _0x3efe=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xefe3[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x3efe('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x3efe('0x1')],'defaultValue':_0x3efe('0x2')},'description':{'type':Sequelize[_0x3efe('0x1')]}};
\ No newline at end of file
+var _0xf972=['sequelize','STRING','name'];(function(_0x29162a,_0x523e59){var _0x343593=function(_0x3876a8){while(--_0x3876a8){_0x29162a['push'](_0x29162a['shift']());}};_0x343593(++_0x523e59);}(_0xf972,0x171));var _0x2f97=function(_0x50328b,_0x477603){_0x50328b=_0x50328b-0x0;var _0x5875c4=_0xf972[_0x50328b];return _0x5875c4;};'use strict';var Sequelize=require(_0x2f97('0x0'));module['exports']={'name':{'type':Sequelize[_0x2f97('0x1')],'unique':_0x2f97('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x2f97('0x1')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x2f97('0x1')]}};
\ No newline at end of file
index 76d2e1b..78d84e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','Tags','UserProfileResource','destroy','error','stack','name','send','index','map','Tag','rawAttributes','type','keys','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0x120fed,_0x44bcaf){var _0x5091a7=function(_0x9836e4){while(--_0x9836e4){_0x120fed['push'](_0x120fed['shift']());}};_0x5091a7(++_0x44bcaf);}(_0xe5b3,0x133));var _0x3e5b=function(_0xf5f512,_0x131ec0){_0xf5f512=_0xf5f512-0x0;var _0x1940c9=_0xe5b3[_0xf5f512];return _0x1940c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3e5b('0x0'));var zipdir=require(_0x3e5b('0x1'));var jsonpatch=require(_0x3e5b('0x2'));var rp=require(_0x3e5b('0x3'));var moment=require(_0x3e5b('0x4'));var BPromise=require(_0x3e5b('0x5'));var Mustache=require(_0x3e5b('0x6'));var util=require(_0x3e5b('0x7'));var path=require(_0x3e5b('0x8'));var sox=require(_0x3e5b('0x9'));var csv=require(_0x3e5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e5b('0xb'));var _=require(_0x3e5b('0xc'));var squel=require('squel');var crypto=require(_0x3e5b('0xd'));var jsforce=require(_0x3e5b('0xe'));var deskjs=require(_0x3e5b('0xf'));var toCsv=require(_0x3e5b('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3e5b('0x10'));var authService=require(_0x3e5b('0x11'));var qs=require(_0x3e5b('0x12'));var as=require(_0x3e5b('0x13'));var hardwareService=require(_0x3e5b('0x14'));var logger=require('../../config/logger')(_0x3e5b('0x15'));var utils=require('../../config/utils');var config=require(_0x3e5b('0x16'));var licenseUtil=require(_0x3e5b('0x17'));var db=require(_0x3e5b('0x18'))['db'];function respondWithStatusCode(_0x374068,_0x20b97b){_0x20b97b=_0x20b97b||0xcc;return function(_0x3c4eb1){if(_0x3c4eb1){return _0x374068[_0x3e5b('0x19')](_0x20b97b);}return _0x374068['status'](_0x20b97b)[_0x3e5b('0x1a')]();};}function respondWithResult(_0x5f2f9c,_0x51a188){_0x51a188=_0x51a188||0xc8;return function(_0x4d71a3){if(_0x4d71a3){return _0x5f2f9c[_0x3e5b('0x1b')](_0x51a188)[_0x3e5b('0x1c')](_0x4d71a3);}};}function respondWithFilteredResult(_0x17aaa3,_0x4fb471){return function(_0x1f81a7){if(_0x1f81a7){var _0x59ddc0=typeof _0x4fb471['offset']===_0x3e5b('0x1d')&&typeof _0x4fb471[_0x3e5b('0x1e')]==='undefined';var _0x3d58a4=_0x1f81a7[_0x3e5b('0x1f')];var _0x555002=_0x59ddc0?0x0:_0x4fb471[_0x3e5b('0x20')];var _0x3365dd=_0x59ddc0?_0x1f81a7['count']:_0x4fb471['offset']+_0x4fb471[_0x3e5b('0x1e')];var _0x20806a;if(_0x3365dd>=_0x3d58a4){_0x3365dd=_0x3d58a4;_0x20806a=0xc8;}else{_0x20806a=0xce;}_0x17aaa3[_0x3e5b('0x1b')](_0x20806a);return _0x17aaa3[_0x3e5b('0x21')](_0x3e5b('0x22'),_0x555002+'-'+_0x3365dd+'/'+_0x3d58a4)[_0x3e5b('0x1c')](_0x1f81a7);}return null;};}function patchUpdates(_0x447d36){return function(_0x21fc32){try{jsonpatch[_0x3e5b('0x23')](_0x21fc32,_0x447d36,!![]);}catch(_0x3d95f3){return BPromise[_0x3e5b('0x24')](_0x3d95f3);}return _0x21fc32[_0x3e5b('0x25')]();};}function saveUpdates(_0x2d77cc,_0x402873){return function(_0x5b46d4){if(_0x5b46d4){return _0x5b46d4[_0x3e5b('0x26')](_0x2d77cc)[_0x3e5b('0x27')](function(_0x2146d4){return _0x2146d4;});}return null;};}function removeEntity(_0x150674,_0x50039b){return function(_0x1eb80f){if(_0x1eb80f){return _0x1eb80f['destroy']()[_0x3e5b('0x27')](function(){var _0x36d960=_0x1eb80f['get']({'plain':!![]});var _0x41b684=_0x3e5b('0x28');return db[_0x3e5b('0x29')][_0x3e5b('0x2a')]({'where':{'type':_0x41b684,'resourceId':_0x36d960['id']}})[_0x3e5b('0x27')](function(){return _0x1eb80f;});})[_0x3e5b('0x27')](function(){_0x150674[_0x3e5b('0x1b')](0xcc)[_0x3e5b('0x1a')]();});}};}function handleEntityNotFound(_0x4c4b89,_0x1c7278){return function(_0x505f40){if(!_0x505f40){_0x4c4b89[_0x3e5b('0x19')](0x194);}return _0x505f40;};}function handleError(_0x4fd64b,_0x101653){_0x101653=_0x101653||0x1f4;return function(_0x1f6473){logger[_0x3e5b('0x2b')](_0x1f6473[_0x3e5b('0x2c')]);if(_0x1f6473[_0x3e5b('0x2d')]){delete _0x1f6473[_0x3e5b('0x2d')];}_0x4fd64b[_0x3e5b('0x1b')](_0x101653)[_0x3e5b('0x2e')](_0x1f6473);};}exports[_0x3e5b('0x2f')]=function(_0x112dc0,_0x1e1565){var _0x489221={},_0x21bc10={},_0x1882aa={'count':0x0,'rows':[]};var _0xa8760b=_[_0x3e5b('0x30')](db[_0x3e5b('0x31')][_0x3e5b('0x32')],function(_0x345927){return{'name':_0x345927['fieldName'],'type':_0x345927[_0x3e5b('0x33')]['key']};});_0x21bc10['model']=_[_0x3e5b('0x30')](_0xa8760b,_0x3e5b('0x2d'));_0x21bc10['query']=_[_0x3e5b('0x34')](_0x112dc0[_0x3e5b('0x35')]);_0x21bc10[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],_0x21bc10[_0x3e5b('0x35')]);_0x489221[_0x3e5b('0x39')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],qs[_0x3e5b('0x3a')](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x489221['attributes']=_0x489221[_0x3e5b('0x39')][_0x3e5b('0x3b')]?_0x489221['attributes']:_0x21bc10['model'];if(!_0x112dc0[_0x3e5b('0x35')]['hasOwnProperty'](_0x3e5b('0x3c'))){_0x489221[_0x3e5b('0x1e')]=qs[_0x3e5b('0x1e')](_0x112dc0[_0x3e5b('0x35')]['limit']);_0x489221[_0x3e5b('0x20')]=qs['offset'](_0x112dc0[_0x3e5b('0x35')]['offset']);}_0x489221['order']=qs['sort'](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3d')]);_0x489221[_0x3e5b('0x3e')]=qs[_0x3e5b('0x36')](_[_0x3e5b('0x3f')](_0x112dc0[_0x3e5b('0x35')],_0x21bc10['filters']),_0xa8760b);if(_0x112dc0['query']['filter']){_0x489221['where']=_['merge'](_0x489221['where'],{'$or':_['map'](_0xa8760b,function(_0x182bc4){if(_0x182bc4[_0x3e5b('0x33')]!==_0x3e5b('0x40')){var _0x1aafd5={};_0x1aafd5[_0x182bc4[_0x3e5b('0x2d')]]={'$like':'%'+_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x41')]+'%'};return _0x1aafd5;}})});}_0x489221=_[_0x3e5b('0x42')]({},_0x489221,_0x112dc0[_0x3e5b('0x43')]);var _0xbbc6b={'where':_0x489221[_0x3e5b('0x3e')]};return db['Tag'][_0x3e5b('0x1f')](_0xbbc6b)[_0x3e5b('0x27')](function(_0x1e8075){_0x1882aa[_0x3e5b('0x1f')]=_0x1e8075;if(_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x44')]){_0x489221[_0x3e5b('0x45')]=[{'all':!![]}];}return db[_0x3e5b('0x31')][_0x3e5b('0x46')](_0x489221);})[_0x3e5b('0x27')](function(_0x13c8d5){_0x1882aa['rows']=_0x13c8d5;return _0x1882aa;})['then'](respondWithFilteredResult(_0x1e1565,_0x489221))['catch'](handleError(_0x1e1565,null));};exports['show']=function(_0xa99d75,_0x21ee8a){var _0x9fc025={'raw':!![],'where':{'id':_0xa99d75[_0x3e5b('0x47')]['id']}},_0x24c416={};_0x24c416[_0x3e5b('0x38')]=_[_0x3e5b('0x34')](db[_0x3e5b('0x31')][_0x3e5b('0x32')]);_0x24c416[_0x3e5b('0x35')]=_['keys'](_0xa99d75[_0x3e5b('0x35')]);_0x24c416[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x24c416[_0x3e5b('0x38')],_0x24c416[_0x3e5b('0x35')]);_0x9fc025['attributes']=_['intersection'](_0x24c416['model'],qs[_0x3e5b('0x3a')](_0xa99d75[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x9fc025['attributes']=_0x9fc025['attributes'][_0x3e5b('0x3b')]?_0x9fc025[_0x3e5b('0x39')]:_0x24c416[_0x3e5b('0x38')];if(_0xa99d75['query']['includeAll']){_0x9fc025[_0x3e5b('0x45')]=[{'all':!![]}];}_0x9fc025=_['merge']({},_0x9fc025,_0xa99d75[_0x3e5b('0x43')]);return db[_0x3e5b('0x31')][_0x3e5b('0x48')](_0x9fc025)[_0x3e5b('0x27')](handleEntityNotFound(_0x21ee8a,null))[_0x3e5b('0x27')](respondWithResult(_0x21ee8a,null))[_0x3e5b('0x49')](handleError(_0x21ee8a,null));};exports[_0x3e5b('0x4a')]=function(_0x3ea5aa,_0x339852){return db['Tag'][_0x3e5b('0x4a')](_0x3ea5aa['body'],{})[_0x3e5b('0x27')](function(_0x2e7047){var _0x26e11e=_0x3ea5aa[_0x3e5b('0x4b')][_0x3e5b('0x4c')]({'plain':!![]});if(!_0x26e11e)throw new Error(_0x3e5b('0x4d'));if(_0x26e11e[_0x3e5b('0x4e')]===_0x3e5b('0x4b')){var _0x2b5d3d=_0x2e7047[_0x3e5b('0x4c')]({'plain':!![]});var _0xf6ca5b=_0x3e5b('0x28');return db[_0x3e5b('0x4f')]['find']({'where':{'name':_0xf6ca5b,'userProfileId':_0x26e11e[_0x3e5b('0x50')]},'raw':!![]})[_0x3e5b('0x27')](function(_0x2ca33b){if(_0x2ca33b&&_0x2ca33b[_0x3e5b('0x51')]===0x0){return db[_0x3e5b('0x29')][_0x3e5b('0x4a')]({'name':_0x2b5d3d['name'],'resourceId':_0x2b5d3d['id'],'type':_0x2ca33b[_0x3e5b('0x2d')],'sectionId':_0x2ca33b['id']},{})[_0x3e5b('0x27')](function(){return _0x2e7047;});}else{return _0x2e7047;}})[_0x3e5b('0x49')](function(_0x314d42){logger[_0x3e5b('0x2b')](_0x3e5b('0x52'),_0x314d42);throw _0x314d42;});}return _0x2e7047;})[_0x3e5b('0x27')](respondWithResult(_0x339852,0xc9))[_0x3e5b('0x49')](handleError(_0x339852,null));};exports['update']=function(_0x1e6403,_0x5e702f){if(_0x1e6403['body']['id']){delete _0x1e6403[_0x3e5b('0x53')]['id'];}return db['Tag'][_0x3e5b('0x48')]({'where':{'id':_0x1e6403[_0x3e5b('0x47')]['id']}})[_0x3e5b('0x27')](handleEntityNotFound(_0x5e702f,null))[_0x3e5b('0x27')](saveUpdates(_0x1e6403['body'],null))['then'](respondWithResult(_0x5e702f,null))['catch'](handleError(_0x5e702f,null));};exports['destroy']=function(_0x2ab5f3,_0x999518){return db[_0x3e5b('0x31')][_0x3e5b('0x48')]({'where':{'id':_0x2ab5f3[_0x3e5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x999518,null))['then'](removeEntity(_0x999518,null))[_0x3e5b('0x49')](handleError(_0x999518,null));};
\ No newline at end of file
+var _0xf021=['autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','limit','reject','save','update','then','Tags','end','error','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','merge','filter','options','Tag','count','includeAll','include','rows','catch','show','intersection','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xf021,0x18f));var _0x1f02=function(_0x2f2ed0,_0x1c6435){_0x2f2ed0=_0x2f2ed0-0x0;var _0x250b0d=_0xf021[_0x2f2ed0];return _0x250b0d;};'use strict';var emlformat=require(_0x1f02('0x0'));var rimraf=require(_0x1f02('0x1'));var zipdir=require(_0x1f02('0x2'));var jsonpatch=require(_0x1f02('0x3'));var rp=require(_0x1f02('0x4'));var moment=require('moment');var BPromise=require(_0x1f02('0x5'));var Mustache=require('mustache');var util=require(_0x1f02('0x6'));var path=require(_0x1f02('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1f02('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1f02('0x9'));var squel=require(_0x1f02('0xa'));var crypto=require(_0x1f02('0xb'));var jsforce=require(_0x1f02('0xc'));var deskjs=require(_0x1f02('0xd'));var toCsv=require('to-csv');var querystring=require(_0x1f02('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1f02('0xf'));var as=require(_0x1f02('0x10'));var hardwareService=require(_0x1f02('0x11'));var logger=require(_0x1f02('0x12'))(_0x1f02('0x13'));var utils=require('../../config/utils');var config=require(_0x1f02('0x14'));var licenseUtil=require(_0x1f02('0x15'));var db=require(_0x1f02('0x16'))['db'];function respondWithStatusCode(_0x56a2c2,_0x24e9b8){_0x24e9b8=_0x24e9b8||0xcc;return function(_0x1ac6eb){if(_0x1ac6eb){return _0x56a2c2[_0x1f02('0x17')](_0x24e9b8);}return _0x56a2c2['status'](_0x24e9b8)['end']();};}function respondWithResult(_0x4974bd,_0x11ba7e){_0x11ba7e=_0x11ba7e||0xc8;return function(_0x2c08ad){if(_0x2c08ad){return _0x4974bd[_0x1f02('0x18')](_0x11ba7e)[_0x1f02('0x19')](_0x2c08ad);}};}function respondWithFilteredResult(_0x1c16ce,_0x45bae1){return function(_0x440328){if(_0x440328){var _0x3b0a3d=typeof _0x45bae1['offset']===_0x1f02('0x1a')&&typeof _0x45bae1['limit']==='undefined';var _0x4a66a5=_0x440328['count'];var _0x4d1e4f=_0x3b0a3d?0x0:_0x45bae1[_0x1f02('0x1b')];var _0x3033a2=_0x3b0a3d?_0x440328['count']:_0x45bae1[_0x1f02('0x1b')]+_0x45bae1[_0x1f02('0x1c')];var _0x356444;if(_0x3033a2>=_0x4a66a5){_0x3033a2=_0x4a66a5;_0x356444=0xc8;}else{_0x356444=0xce;}_0x1c16ce[_0x1f02('0x18')](_0x356444);return _0x1c16ce['set']('Content-Range',_0x4d1e4f+'-'+_0x3033a2+'/'+_0x4a66a5)[_0x1f02('0x19')](_0x440328);}return null;};}function patchUpdates(_0x37393a){return function(_0x5e78c2){try{jsonpatch['apply'](_0x5e78c2,_0x37393a,!![]);}catch(_0x339c29){return BPromise[_0x1f02('0x1d')](_0x339c29);}return _0x5e78c2[_0x1f02('0x1e')]();};}function saveUpdates(_0xbabbd7,_0x480297){return function(_0x12c4af){if(_0x12c4af){return _0x12c4af[_0x1f02('0x1f')](_0xbabbd7)[_0x1f02('0x20')](function(_0x2f422c){return _0x2f422c;});}return null;};}function removeEntity(_0x43b3e7,_0x134398){return function(_0x1328ea){if(_0x1328ea){return _0x1328ea['destroy']()[_0x1f02('0x20')](function(){var _0x3a8c57=_0x1328ea['get']({'plain':!![]});var _0x25a8d1=_0x1f02('0x21');return db['UserProfileResource']['destroy']({'where':{'type':_0x25a8d1,'resourceId':_0x3a8c57['id']}})[_0x1f02('0x20')](function(){return _0x1328ea;});})[_0x1f02('0x20')](function(){_0x43b3e7[_0x1f02('0x18')](0xcc)[_0x1f02('0x22')]();});}};}function handleEntityNotFound(_0x3f5c5e,_0x3f5577){return function(_0x297cf4){if(!_0x297cf4){_0x3f5c5e['sendStatus'](0x194);}return _0x297cf4;};}function handleError(_0x4d5f7e,_0x4e04f2){_0x4e04f2=_0x4e04f2||0x1f4;return function(_0x3ef4bf){logger[_0x1f02('0x23')](_0x3ef4bf[_0x1f02('0x24')]);if(_0x3ef4bf['name']){delete _0x3ef4bf['name'];}_0x4d5f7e[_0x1f02('0x18')](_0x4e04f2)[_0x1f02('0x25')](_0x3ef4bf);};}exports[_0x1f02('0x26')]=function(_0x433a1e,_0x220345){var _0x3080a6={},_0x442333={},_0x23fa22={'count':0x0,'rows':[]};var _0x1c2a0d=_[_0x1f02('0x27')](db['Tag'][_0x1f02('0x28')],function(_0x5ab7a2){return{'name':_0x5ab7a2[_0x1f02('0x29')],'type':_0x5ab7a2[_0x1f02('0x2a')][_0x1f02('0x2b')]};});_0x442333[_0x1f02('0x2c')]=_[_0x1f02('0x27')](_0x1c2a0d,_0x1f02('0x2d'));_0x442333['query']=_['keys'](_0x433a1e[_0x1f02('0x2e')]);_0x442333[_0x1f02('0x2f')]=_['intersection'](_0x442333[_0x1f02('0x2c')],_0x442333['query']);_0x3080a6[_0x1f02('0x30')]=_['intersection'](_0x442333[_0x1f02('0x2c')],qs['fields'](_0x433a1e['query'][_0x1f02('0x31')]));_0x3080a6[_0x1f02('0x30')]=_0x3080a6[_0x1f02('0x30')][_0x1f02('0x32')]?_0x3080a6['attributes']:_0x442333[_0x1f02('0x2c')];if(!_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x33')]('nolimit')){_0x3080a6[_0x1f02('0x1c')]=qs[_0x1f02('0x1c')](_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x1c')]);_0x3080a6[_0x1f02('0x1b')]=qs[_0x1f02('0x1b')](_0x433a1e['query'][_0x1f02('0x1b')]);}_0x3080a6[_0x1f02('0x34')]=qs[_0x1f02('0x35')](_0x433a1e['query'][_0x1f02('0x35')]);_0x3080a6['where']=qs[_0x1f02('0x2f')](_['pick'](_0x433a1e['query'],_0x442333[_0x1f02('0x2f')]),_0x1c2a0d);if(_0x433a1e['query']['filter']){_0x3080a6[_0x1f02('0x36')]=_[_0x1f02('0x37')](_0x3080a6[_0x1f02('0x36')],{'$or':_[_0x1f02('0x27')](_0x1c2a0d,function(_0x47ee27){if(_0x47ee27[_0x1f02('0x2a')]!=='VIRTUAL'){var _0x2cd179={};_0x2cd179[_0x47ee27[_0x1f02('0x2d')]]={'$like':'%'+_0x433a1e[_0x1f02('0x2e')][_0x1f02('0x38')]+'%'};return _0x2cd179;}})});}_0x3080a6=_[_0x1f02('0x37')]({},_0x3080a6,_0x433a1e[_0x1f02('0x39')]);var _0xb4fac5={'where':_0x3080a6[_0x1f02('0x36')]};return db[_0x1f02('0x3a')]['count'](_0xb4fac5)[_0x1f02('0x20')](function(_0x5aab10){_0x23fa22[_0x1f02('0x3b')]=_0x5aab10;if(_0x433a1e['query'][_0x1f02('0x3c')]){_0x3080a6[_0x1f02('0x3d')]=[{'all':!![]}];}return db[_0x1f02('0x3a')]['findAll'](_0x3080a6);})['then'](function(_0x1c3f09){_0x23fa22[_0x1f02('0x3e')]=_0x1c3f09;return _0x23fa22;})[_0x1f02('0x20')](respondWithFilteredResult(_0x220345,_0x3080a6))[_0x1f02('0x3f')](handleError(_0x220345,null));};exports[_0x1f02('0x40')]=function(_0x15fb49,_0x23733c){var _0x11f31f={'raw':!![],'where':{'id':_0x15fb49['params']['id']}},_0x391b57={};_0x391b57[_0x1f02('0x2c')]=_['keys'](db['Tag'][_0x1f02('0x28')]);_0x391b57['query']=_['keys'](_0x15fb49[_0x1f02('0x2e')]);_0x391b57['filters']=_['intersection'](_0x391b57[_0x1f02('0x2c')],_0x391b57[_0x1f02('0x2e')]);_0x11f31f['attributes']=_[_0x1f02('0x41')](_0x391b57[_0x1f02('0x2c')],qs[_0x1f02('0x31')](_0x15fb49[_0x1f02('0x2e')]['fields']));_0x11f31f[_0x1f02('0x30')]=_0x11f31f[_0x1f02('0x30')][_0x1f02('0x32')]?_0x11f31f[_0x1f02('0x30')]:_0x391b57[_0x1f02('0x2c')];if(_0x15fb49[_0x1f02('0x2e')][_0x1f02('0x3c')]){_0x11f31f[_0x1f02('0x3d')]=[{'all':!![]}];}_0x11f31f=_[_0x1f02('0x37')]({},_0x11f31f,_0x15fb49[_0x1f02('0x39')]);return db[_0x1f02('0x3a')][_0x1f02('0x42')](_0x11f31f)[_0x1f02('0x20')](handleEntityNotFound(_0x23733c,null))[_0x1f02('0x20')](respondWithResult(_0x23733c,null))['catch'](handleError(_0x23733c,null));};exports[_0x1f02('0x43')]=function(_0x50d5ed,_0x37759d){return db['Tag'][_0x1f02('0x43')](_0x50d5ed[_0x1f02('0x44')],{})[_0x1f02('0x20')](function(_0x32dac3){var _0x40bf99=_0x50d5ed[_0x1f02('0x45')][_0x1f02('0x46')]({'plain':!![]});if(!_0x40bf99)throw new Error(_0x1f02('0x47'));if(_0x40bf99[_0x1f02('0x48')]===_0x1f02('0x45')){var _0x1241c5=_0x32dac3['get']({'plain':!![]});var _0x45e71d=_0x1f02('0x21');return db[_0x1f02('0x49')][_0x1f02('0x42')]({'where':{'name':_0x45e71d,'userProfileId':_0x40bf99[_0x1f02('0x4a')]},'raw':!![]})[_0x1f02('0x20')](function(_0x2201b4){if(_0x2201b4&&_0x2201b4[_0x1f02('0x4b')]===0x0){return db[_0x1f02('0x4c')]['create']({'name':_0x1241c5[_0x1f02('0x2d')],'resourceId':_0x1241c5['id'],'type':_0x2201b4[_0x1f02('0x2d')],'sectionId':_0x2201b4['id']},{})[_0x1f02('0x20')](function(){return _0x32dac3;});}else{return _0x32dac3;}})[_0x1f02('0x3f')](function(_0x3cdf8c){logger['error'](_0x1f02('0x4d'),_0x3cdf8c);throw _0x3cdf8c;});}return _0x32dac3;})['then'](respondWithResult(_0x37759d,0xc9))[_0x1f02('0x3f')](handleError(_0x37759d,null));};exports[_0x1f02('0x1f')]=function(_0x2240d1,_0x18d80d){if(_0x2240d1[_0x1f02('0x44')]['id']){delete _0x2240d1[_0x1f02('0x44')]['id'];}return db[_0x1f02('0x3a')][_0x1f02('0x42')]({'where':{'id':_0x2240d1[_0x1f02('0x4e')]['id']}})[_0x1f02('0x20')](handleEntityNotFound(_0x18d80d,null))['then'](saveUpdates(_0x2240d1['body'],null))['then'](respondWithResult(_0x18d80d,null))[_0x1f02('0x3f')](handleError(_0x18d80d,null));};exports['destroy']=function(_0x238911,_0x449d58){return db['Tag'][_0x1f02('0x42')]({'where':{'id':_0x238911['params']['id']}})['then'](handleEntityNotFound(_0x449d58,null))['then'](removeEntity(_0x449d58,null))[_0x1f02('0x3f')](handleError(_0x449d58,null));};
\ No newline at end of file
index 8185453..4b99e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x252f=['tools_tags','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag'];(function(_0x3b594b,_0x5835c3){var _0x1ea5f8=function(_0x191b3e){while(--_0x191b3e){_0x3b594b['push'](_0x3b594b['shift']());}};_0x1ea5f8(++_0x5835c3);}(_0x252f,0x1e2));var _0xf252=function(_0x97d6d5,_0x4453e7){_0x97d6d5=_0x97d6d5-0x0;var _0x3baaa2=_0x252f[_0x97d6d5];return _0x3baaa2;};'use strict';var _=require(_0xf252('0x0'));var util=require('util');var logger=require(_0xf252('0x1'))(_0xf252('0x2'));var moment=require(_0xf252('0x3'));var BPromise=require(_0xf252('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf252('0x5'));var rimraf=require(_0xf252('0x6'));var config=require(_0xf252('0x7'));var attributes=require(_0xf252('0x8'));module[_0xf252('0x9')]=function(_0x2bb2e8,_0x351b14){return _0x2bb2e8[_0xf252('0xa')](_0xf252('0xb'),attributes,{'tableName':_0xf252('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fec=['moment','bluebird','request-promise','rimraf','../../config/environment','define','Tag','lodash','../../config/logger','api'];(function(_0x5e275e,_0x190a72){var _0x969919=function(_0x351e1c){while(--_0x351e1c){_0x5e275e['push'](_0x5e275e['shift']());}};_0x969919(++_0x190a72);}(_0x5fec,0x6b));var _0xc5fe=function(_0x550f9a,_0x23fee6){_0x550f9a=_0x550f9a-0x0;var _0x5e4f84=_0x5fec[_0x550f9a];return _0x5e4f84;};'use strict';var _=require(_0xc5fe('0x0'));var util=require('util');var logger=require(_0xc5fe('0x1'))(_0xc5fe('0x2'));var moment=require(_0xc5fe('0x3'));var BPromise=require(_0xc5fe('0x4'));var rp=require(_0xc5fe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5fe('0x6'));var config=require(_0xc5fe('0x7'));var attributes=require('./tag.attributes');module['exports']=function(_0x218026,_0x263dd1){return _0x218026[_0xc5fe('0x8')](_0xc5fe('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c423b42..5c7e997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['stringify','error','Tag,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s'];(function(_0x5d5ed4,_0x19a592){var _0x13304d=function(_0x438f06){while(--_0x438f06){_0x5d5ed4['push'](_0x5d5ed4['shift']());}};_0x13304d(++_0x19a592);}(_0x72b1,0x16e));var _0x172b=function(_0x34c4f8,_0x18d72c){_0x34c4f8=_0x34c4f8-0x0;var _0x22a03b=_0x72b1[_0x34c4f8];return _0x22a03b;};'use strict';var _=require(_0x172b('0x0'));var util=require('util');var moment=require(_0x172b('0x1'));var BPromise=require(_0x172b('0x2'));var rs=require(_0x172b('0x3'));var fs=require('fs');var Redis=require(_0x172b('0x4'));var db=require(_0x172b('0x5'))['db'];var utils=require(_0x172b('0x6'));var logger=require(_0x172b('0x7'))('rpc');var config=require(_0x172b('0x8'));var jayson=require(_0x172b('0x9'));var client=jayson[_0x172b('0xa')][_0x172b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x571994,_0x345e5e,_0x517363){return new BPromise(function(_0x1f98e9,_0x531b10){return client[_0x172b('0xc')](_0x571994,_0x517363)[_0x172b('0xd')](function(_0x977f18){logger[_0x172b('0xe')]('Tag,\x20%s,\x20%s',_0x345e5e,_0x172b('0xf'));logger[_0x172b('0x10')](_0x172b('0x11'),_0x345e5e,_0x172b('0xf'),JSON[_0x172b('0x12')](_0x977f18));if(_0x977f18[_0x172b('0x13')]){if(_0x977f18[_0x172b('0x13')]['code']===0x1f4){logger[_0x172b('0x13')](_0x172b('0x14'),_0x345e5e,_0x977f18[_0x172b('0x13')]['message']);return _0x531b10(_0x977f18[_0x172b('0x13')]['message']);}logger[_0x172b('0x13')](_0x172b('0x14'),_0x345e5e,_0x977f18['error'][_0x172b('0x15')]);return _0x1f98e9(_0x977f18[_0x172b('0x13')][_0x172b('0x15')]);}else{logger[_0x172b('0xe')]('Tag,\x20%s,\x20%s',_0x345e5e,'request\x20sent');_0x1f98e9(_0x977f18[_0x172b('0x16')][_0x172b('0x15')]);}})[_0x172b('0x17')](function(_0x3c7fff){logger['error']('Tag,\x20%s,\x20%s',_0x345e5e,_0x3c7fff);_0x531b10(_0x3c7fff);});});}
\ No newline at end of file
+var _0xe181=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0xe181,0x68));var _0x1e18=function(_0x45b190,_0x6297da){_0x45b190=_0x45b190-0x0;var _0x46234d=_0xe181[_0x45b190];return _0x46234d;};'use strict';var _=require(_0x1e18('0x0'));var util=require('util');var moment=require(_0x1e18('0x1'));var BPromise=require(_0x1e18('0x2'));var rs=require(_0x1e18('0x3'));var fs=require('fs');var Redis=require(_0x1e18('0x4'));var db=require(_0x1e18('0x5'))['db'];var utils=require(_0x1e18('0x6'));var logger=require(_0x1e18('0x7'))('rpc');var config=require(_0x1e18('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1e18('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x182c98,_0x46ba95,_0x25b786){return new BPromise(function(_0x9f9541,_0x398f77){return client['request'](_0x182c98,_0x25b786)[_0x1e18('0xa')](function(_0x40fda9){logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));logger[_0x1e18('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0x46ba95,_0x1e18('0xd'),JSON[_0x1e18('0xf')](_0x40fda9));if(_0x40fda9[_0x1e18('0x10')]){if(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x11')]===0x1f4){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x40fda9[_0x1e18('0x10')]['message']);return _0x398f77(_0x40fda9[_0x1e18('0x10')]['message']);}logger[_0x1e18('0x10')]('Tag,\x20%s,\x20%s',_0x46ba95,_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);return _0x9f9541(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);}else{logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));_0x9f9541(_0x40fda9[_0x1e18('0x13')][_0x1e18('0x12')]);}})[_0x1e18('0x14')](function(_0x12ef98){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x12ef98);_0x398f77(_0x12ef98);});});}
\ No newline at end of file
index d95056d..d3a3ffc 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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_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('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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 8a7233c..9470019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x2bd630,_0x484329){var _0x4d5f30=function(_0x4fcdfb){while(--_0x4fcdfb){_0x2bd630['push'](_0x2bd630['shift']());}};_0x4d5f30(++_0x484329);}(_0x757a,0xde));var _0xa757=function(_0x18d03d,_0x1aa3fd){_0x18d03d=_0x18d03d-0x0;var _0x5318d1=_0x757a[_0x18d03d];return _0x5318d1;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x4aedf6,_0x5934b1){var _0x22852a=function(_0x9864c4){while(--_0x9864c4){_0x4aedf6['push'](_0x4aedf6['shift']());}};_0x22852a(++_0x5934b1);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xb10b[_0x5e8c32];return _0x595f7b;};'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 d647d6f..23824cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe86e=['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','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','Teams','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','toLowerCase','Queue','Queues','addQueues','ids','removeQueues','remove','capitalize','addAgents','isArray','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','Voice','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','all','VoicePrefixId','removeAgents','Queue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','stack','name','send','index','map','Team','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','findAll','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','Sequelize','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SmsQueueId'];(function(_0x2e4816,_0x47b7d){var _0x10ec05=function(_0x1d4a2e){while(--_0x1d4a2e){_0x2e4816['push'](_0x2e4816['shift']());}};_0x10ec05(++_0x47b7d);}(_0xe86e,0x17a));var _0xee86=function(_0x278b00,_0x1c7a48){_0x278b00=_0x278b00-0x0;var _0x2dc8f2=_0xe86e[_0x278b00];return _0x2dc8f2;};'use strict';var emlformat=require(_0xee86('0x0'));var rimraf=require(_0xee86('0x1'));var zipdir=require(_0xee86('0x2'));var jsonpatch=require(_0xee86('0x3'));var rp=require(_0xee86('0x4'));var moment=require(_0xee86('0x5'));var BPromise=require(_0xee86('0x6'));var Mustache=require(_0xee86('0x7'));var util=require('util');var path=require(_0xee86('0x8'));var sox=require(_0xee86('0x9'));var csv=require('to-csv');var ejs=require(_0xee86('0xa'));var fs=require('fs');var fs_extra=require(_0xee86('0xb'));var _=require(_0xee86('0xc'));var squel=require(_0xee86('0xd'));var crypto=require(_0xee86('0xe'));var jsforce=require(_0xee86('0xf'));var deskjs=require(_0xee86('0x10'));var toCsv=require('to-csv');var querystring=require(_0xee86('0x11'));var Papa=require(_0xee86('0x12'));var Redis=require('ioredis');var authService=require(_0xee86('0x13'));var qs=require(_0xee86('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xee86('0x15'));var logger=require(_0xee86('0x16'))(_0xee86('0x17'));var utils=require(_0xee86('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xee86('0x19'));var db=require(_0xee86('0x1a'))['db'];config[_0xee86('0x1b')]=_[_0xee86('0x1c')](config[_0xee86('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xee86('0x1d'))(new Redis(config[_0xee86('0x1b')]));require(_0xee86('0x1e'))[_0xee86('0x1f')](socket);function respondWithStatusCode(_0x4af682,_0x3343b7){_0x3343b7=_0x3343b7||0xcc;return function(_0x4f3f72){if(_0x4f3f72){return _0x4af682[_0xee86('0x20')](_0x3343b7);}return _0x4af682[_0xee86('0x21')](_0x3343b7)[_0xee86('0x22')]();};}function respondWithResult(_0x5b651c,_0x1649a5){_0x1649a5=_0x1649a5||0xc8;return function(_0x9be826){if(_0x9be826){return _0x5b651c[_0xee86('0x21')](_0x1649a5)[_0xee86('0x23')](_0x9be826);}};}function respondWithFilteredResult(_0x2757b1,_0x26fca3){return function(_0x4b4c30){if(_0x4b4c30){var _0x2e34d3=typeof _0x26fca3['offset']===_0xee86('0x24')&&typeof _0x26fca3[_0xee86('0x25')]==='undefined';var _0x5b53a3=_0x4b4c30[_0xee86('0x26')];var _0x4de6ff=_0x2e34d3?0x0:_0x26fca3[_0xee86('0x27')];var _0x2972c0=_0x2e34d3?_0x4b4c30[_0xee86('0x26')]:_0x26fca3['offset']+_0x26fca3['limit'];var _0x278445;if(_0x2972c0>=_0x5b53a3){_0x2972c0=_0x5b53a3;_0x278445=0xc8;}else{_0x278445=0xce;}_0x2757b1[_0xee86('0x21')](_0x278445);return _0x2757b1[_0xee86('0x28')](_0xee86('0x29'),_0x4de6ff+'-'+_0x2972c0+'/'+_0x5b53a3)[_0xee86('0x23')](_0x4b4c30);}return null;};}function patchUpdates(_0x34681b){return function(_0x417822){try{jsonpatch[_0xee86('0x2a')](_0x417822,_0x34681b,!![]);}catch(_0x2dc2eb){return BPromise[_0xee86('0x2b')](_0x2dc2eb);}return _0x417822['save']();};}function saveUpdates(_0x4fab2b,_0x3cdd86){return function(_0x104632){if(_0x104632){return _0x104632['update'](_0x4fab2b)[_0xee86('0x2c')](function(_0x4b4049){return _0x4b4049;});}return null;};}function handleEntityNotFound(_0x57bd08,_0x53c06d){return function(_0x103afe){if(!_0x103afe){_0x57bd08[_0xee86('0x20')](0x194);}return _0x103afe;};}function handleError(_0x1d6033,_0x55b589){_0x55b589=_0x55b589||0x1f4;return function(_0x1e4fa7){logger['error'](_0x1e4fa7[_0xee86('0x2d')]);if(_0x1e4fa7[_0xee86('0x2e')]){delete _0x1e4fa7[_0xee86('0x2e')];}_0x1d6033[_0xee86('0x21')](_0x55b589)[_0xee86('0x2f')](_0x1e4fa7);};}exports[_0xee86('0x30')]=function(_0x5434da,_0x2a023f){var _0x4bd894={},_0x555389={},_0x41ea4f={'count':0x0,'rows':[]};var _0x3478bb=_[_0xee86('0x31')](db[_0xee86('0x32')][_0xee86('0x33')],function(_0x20f29c){return{'name':_0x20f29c[_0xee86('0x34')],'type':_0x20f29c[_0xee86('0x35')]['key']};});_0x555389[_0xee86('0x36')]=_[_0xee86('0x31')](_0x3478bb,'name');_0x555389[_0xee86('0x37')]=_[_0xee86('0x38')](_0x5434da[_0xee86('0x37')]);_0x555389[_0xee86('0x39')]=_['intersection'](_0x555389[_0xee86('0x36')],_0x555389[_0xee86('0x37')]);_0x4bd894['attributes']=_[_0xee86('0x3a')](_0x555389[_0xee86('0x36')],qs[_0xee86('0x3b')](_0x5434da[_0xee86('0x37')]['fields']));_0x4bd894[_0xee86('0x3c')]=_0x4bd894[_0xee86('0x3c')][_0xee86('0x3d')]?_0x4bd894['attributes']:_0x555389[_0xee86('0x36')];if(!_0x5434da[_0xee86('0x37')][_0xee86('0x3e')](_0xee86('0x3f'))){_0x4bd894['limit']=qs[_0xee86('0x25')](_0x5434da[_0xee86('0x37')]['limit']);_0x4bd894[_0xee86('0x27')]=qs[_0xee86('0x27')](_0x5434da['query'][_0xee86('0x27')]);}_0x4bd894[_0xee86('0x40')]=qs[_0xee86('0x41')](_0x5434da[_0xee86('0x37')]['sort']);_0x4bd894['where']=qs[_0xee86('0x39')](_[_0xee86('0x42')](_0x5434da['query'],_0x555389[_0xee86('0x39')]),_0x3478bb);if(_0x5434da['query']['filter']){_0x4bd894[_0xee86('0x43')]=_['merge'](_0x4bd894[_0xee86('0x43')],{'$or':_[_0xee86('0x31')](_0x3478bb,function(_0x1c515c){if(_0x1c515c[_0xee86('0x35')]!==_0xee86('0x44')){var _0x2eecd3={};_0x2eecd3[_0x1c515c[_0xee86('0x2e')]]={'$like':'%'+_0x5434da[_0xee86('0x37')][_0xee86('0x45')]+'%'};return _0x2eecd3;}})});}_0x4bd894=_[_0xee86('0x46')]({},_0x4bd894,_0x5434da[_0xee86('0x47')]);var _0x36fc8={'where':_0x4bd894['where']};return db[_0xee86('0x32')][_0xee86('0x26')](_0x36fc8)[_0xee86('0x2c')](function(_0x425630){_0x41ea4f[_0xee86('0x26')]=_0x425630;if(_0x5434da['query']['includeAll']){_0x4bd894['include']=[{'all':!![]}];}return db['Team'][_0xee86('0x48')](_0x4bd894);})[_0xee86('0x2c')](function(_0x5ceb20){_0x41ea4f['rows']=_0x5ceb20;return _0x41ea4f;})[_0xee86('0x2c')](respondWithFilteredResult(_0x2a023f,_0x4bd894))[_0xee86('0x49')](handleError(_0x2a023f,null));};exports[_0xee86('0x4a')]=function(_0x5463b2,_0x16f66a){var _0xd7e33d={'raw':![],'where':{'id':_0x5463b2[_0xee86('0x4b')]['id']}},_0x13e5a5={};_0x13e5a5[_0xee86('0x36')]=_['keys'](db[_0xee86('0x32')]['rawAttributes']);_0x13e5a5[_0xee86('0x37')]=_['keys'](_0x5463b2[_0xee86('0x37')]);_0x13e5a5[_0xee86('0x39')]=_['intersection'](_0x13e5a5[_0xee86('0x36')],_0x13e5a5[_0xee86('0x37')]);_0xd7e33d[_0xee86('0x3c')]=_['intersection'](_0x13e5a5[_0xee86('0x36')],qs['fields'](_0x5463b2[_0xee86('0x37')][_0xee86('0x3b')]));_0xd7e33d[_0xee86('0x3c')]=_0xd7e33d[_0xee86('0x3c')]['length']?_0xd7e33d['attributes']:_0x13e5a5[_0xee86('0x36')];if(_0x5463b2[_0xee86('0x37')][_0xee86('0x4c')]){_0xd7e33d['include']=[{'all':!![]}];}_0xd7e33d=_[_0xee86('0x46')]({},_0xd7e33d,_0x5463b2[_0xee86('0x47')]);return db['Team'][_0xee86('0x4d')](_0xd7e33d)[_0xee86('0x2c')](handleEntityNotFound(_0x16f66a,null))['then'](respondWithResult(_0x16f66a,null))[_0xee86('0x49')](handleError(_0x16f66a,null));};exports[_0xee86('0x4e')]=function(_0x5f1c03,_0x1bcb23){return db[_0xee86('0x32')][_0xee86('0x4e')](_0x5f1c03[_0xee86('0x4f')],{})[_0xee86('0x2c')](function(_0x1a0671){var _0x631786=_0x5f1c03[_0xee86('0x50')]['get']({'plain':!![]});if(!_0x631786)throw new Error(_0xee86('0x51'));if(_0x631786['role']==='user'){var _0x3cbc36=_0x1a0671[_0xee86('0x52')]({'plain':!![]});var _0x523775='Teams';return db[_0xee86('0x53')][_0xee86('0x4d')]({'where':{'name':_0x523775,'userProfileId':_0x631786[_0xee86('0x54')]},'raw':!![]})[_0xee86('0x2c')](function(_0x3ab191){if(_0x3ab191&&_0x3ab191[_0xee86('0x55')]===0x0){return db[_0xee86('0x56')]['create']({'name':_0x3cbc36[_0xee86('0x2e')],'resourceId':_0x3cbc36['id'],'type':_0x3ab191[_0xee86('0x2e')],'sectionId':_0x3ab191['id']},{})['then'](function(){return _0x1a0671;});}else{return _0x1a0671;}})[_0xee86('0x49')](function(_0xe435a6){logger[_0xee86('0x57')](_0xee86('0x58'),_0xe435a6);throw _0xe435a6;});}return _0x1a0671;})[_0xee86('0x2c')](respondWithResult(_0x1bcb23,0xc9))[_0xee86('0x49')](handleError(_0x1bcb23,null));};exports[_0xee86('0x59')]=function(_0x45b198,_0x113b42){if(_0x45b198[_0xee86('0x4f')]['id']){delete _0x45b198[_0xee86('0x4f')]['id'];}return db[_0xee86('0x32')]['find']({'where':{'id':_0x45b198[_0xee86('0x4b')]['id']}})[_0xee86('0x2c')](handleEntityNotFound(_0x113b42,null))[_0xee86('0x2c')](saveUpdates(_0x45b198['body'],null))[_0xee86('0x2c')](respondWithResult(_0x113b42,null))[_0xee86('0x49')](handleError(_0x113b42,null));};exports[_0xee86('0x5a')]=function(_0x3663f5,_0xd7c649){var _0x35e889=_0x3663f5['params']['id'];var _0x171add=[];return db[_0xee86('0x5b')]['transaction'](function(_0x36d5e4){var _0x76ff5d=_0xee86('0x5c')+_0x35e889;return db['sequelize'][_0xee86('0x37')](_0x76ff5d,{'type':db['Sequelize'][_0xee86('0x5d')][_0xee86('0x5e')],'raw':!![],'transaction':_0x36d5e4})['then'](function(_0x2d055d){_0x171add=_[_0xee86('0x31')](_0x2d055d,function(_0x49087a){return Number(_0x49087a[_0xee86('0x5f')]);});})[_0xee86('0x2c')](function(){var _0x497b2c=_0xee86('0x60')+_0x35e889;return db[_0xee86('0x5b')][_0xee86('0x37')](_0x497b2c,{'type':db[_0xee86('0x61')][_0xee86('0x5d')][_0xee86('0x5e')],'raw':!![],'transaction':_0x36d5e4});})['then'](function(_0x5e839d){var _0x3f4d31=_[_0xee86('0x31')](_0x5e839d,function(_0x23ee52){return Number(_0x23ee52['VoiceQueueId']);});return db['UserVoiceQueue'][_0xee86('0x5a')]({'where':{'UserId':{'$in':_0x171add},'VoiceQueueId':{'$in':_0x3f4d31}},'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(){var _0x2b9dfa=_0xee86('0x62')+_0x35e889;return db['sequelize'][_0xee86('0x37')](_0x2b9dfa,{'type':db[_0xee86('0x61')][_0xee86('0x5d')]['SELECT'],'raw':!![],'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(_0xb0c743){var _0x46e0d6=_[_0xee86('0x31')](_0xb0c743,function(_0x10ed33){return Number(_0x10ed33[_0xee86('0x63')]);});return db[_0xee86('0x64')]['destroy']({'where':{'UserId':{'$in':_0x171add},'MailQueueId':{'$in':_0x46e0d6}},'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(){var _0x5a1602='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x35e889;return db[_0xee86('0x5b')]['query'](_0x5a1602,{'type':db['Sequelize'][_0xee86('0x5d')][_0xee86('0x5e')],'raw':!![],'transaction':_0x36d5e4});})['then'](function(_0x591e04){var _0x472e30=_[_0xee86('0x31')](_0x591e04,function(_0x336a33){return Number(_0x336a33[_0xee86('0x65')]);});return db['UserSmsQueue'][_0xee86('0x5a')]({'where':{'UserId':{'$in':_0x171add},'SmsQueueId':{'$in':_0x472e30}},'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(){var _0x29d34=_0xee86('0x66')+_0x35e889;return db[_0xee86('0x5b')][_0xee86('0x37')](_0x29d34,{'type':db['Sequelize'][_0xee86('0x5d')]['SELECT'],'raw':!![],'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(_0x1e1eee){var _0x10dbc1=_[_0xee86('0x31')](_0x1e1eee,function(_0x137c53){return Number(_0x137c53[_0xee86('0x67')]);});return db[_0xee86('0x68')]['destroy']({'where':{'UserId':{'$in':_0x171add},'ChatQueueId':{'$in':_0x10dbc1}},'transaction':_0x36d5e4});})['then'](function(){var _0x1386ca=_0xee86('0x69')+_0x35e889;return db[_0xee86('0x5b')]['query'](_0x1386ca,{'type':db[_0xee86('0x61')][_0xee86('0x5d')][_0xee86('0x5e')],'raw':!![],'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(_0x3453be){var _0x14df48=_['map'](_0x3453be,function(_0x374004){return Number(_0x374004[_0xee86('0x6a')]);});return db[_0xee86('0x6b')][_0xee86('0x5a')]({'where':{'UserId':{'$in':_0x171add},'FaxQueueId':{'$in':_0x14df48}},'transaction':_0x36d5e4});})['then'](function(){var _0x11b979=_0xee86('0x6c')+_0x35e889;return db[_0xee86('0x5b')][_0xee86('0x37')](_0x11b979,{'type':db['Sequelize'][_0xee86('0x5d')]['SELECT'],'raw':!![],'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(_0x1ecb69){var _0x856df7=_['map'](_0x1ecb69,function(_0x49afa7){return Number(_0x49afa7['OpenchannelQueueId']);});return db[_0xee86('0x6d')][_0xee86('0x5a')]({'where':{'UserId':{'$in':_0x171add},'OpenchannelQueueId':{'$in':_0x856df7}},'transaction':_0x36d5e4});})['then'](function(){var _0x50a016=_0xee86('0x6e')+_0x35e889;return db['sequelize'][_0xee86('0x37')](_0x50a016,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x36d5e4});})[_0xee86('0x2c')](function(_0x2c8b3e){var _0x4a0ace=_[_0xee86('0x31')](_0x2c8b3e,function(_0x2b7a98){return Number(_0x2b7a98[_0xee86('0x6f')]);});return db[_0xee86('0x70')][_0xee86('0x5a')]({'where':{'UserId':{'$in':_0x171add},'WhatsappQueueId':{'$in':_0x4a0ace}},'transaction':_0x36d5e4});})['then'](function(){return db[_0xee86('0x71')]['find']({'where':{'TeamId':_0x35e889}});})[_0xee86('0x2c')](function(_0x4398a8){if(_0x4398a8===null){return;}return db[_0xee86('0x72')]['destroy']({'where':{'UserId':{'$in':_0x171add},'VoicePrefixId':_0x4398a8['VoicePrefixId']},'transaction':_0x36d5e4});})['then'](function(){return db[_0xee86('0x32')][_0xee86('0x5a')]({'where':{'id':_0x35e889},'cascade':!![],'transaction':_0x36d5e4});})['then'](function(_0x33e459){if(_0x33e459===0x0){_0xd7c649[_0xee86('0x20')](0x194);}else{return db['UserProfileResource'][_0xee86('0x5a')]({'where':{'type':_0xee86('0x73'),'resourceId':_0x35e889},'cascade':!![],'transaction':_0x36d5e4})['then'](function(){_0xd7c649[_0xee86('0x21')](0xcc)[_0xee86('0x22')]();});}})[_0xee86('0x49')](function(_0x2ab7fa){_0xd7c649['status'](0x1f4)['send'](_0x2ab7fa);});});};exports[_0xee86('0x74')]=function(_0x3b8b2c,_0x1d5d86,_0x16ea63){return db[_0xee86('0x32')][_0xee86('0x75')]({'where':{'id':_0x3b8b2c[_0xee86('0x4b')]['id']}})[_0xee86('0x2c')](handleEntityNotFound(_0x1d5d86,null))['then'](function(_0x3fb7e6){if(!_0x3b8b2c[_0xee86('0x37')][_0xee86('0x76')]||!utils[_0xee86('0x77')](_0x3b8b2c[_0xee86('0x37')][_0xee86('0x76')])){throw new db[(_0xee86('0x61'))][(_0xee86('0x78'))](_0xee86('0x79'));}var _0x8b588={};var _0x56ea08={};_0x56ea08[_0xee86('0x36')]=_[_0xee86('0x38')](db[_['capitalize'](_0x3b8b2c[_0xee86('0x37')][_0xee86('0x76')][_0xee86('0x7a')]())+_0xee86('0x7b')][_0xee86('0x33')]);_0x56ea08['query']=_[_0xee86('0x38')](_0x3b8b2c['query']);_0x56ea08[_0xee86('0x39')]=_[_0xee86('0x3a')](_0x56ea08[_0xee86('0x36')],_0x56ea08[_0xee86('0x37')]);_0x8b588[_0xee86('0x3c')]=_[_0xee86('0x3a')](_0x56ea08[_0xee86('0x36')],qs[_0xee86('0x3b')](_0x3b8b2c[_0xee86('0x37')]['fields']));_0x8b588['attributes']=_0x8b588[_0xee86('0x3c')][_0xee86('0x3d')]?_0x8b588['attributes']:_0x56ea08[_0xee86('0x36')];_0x8b588[_0xee86('0x25')]=qs['limit'](_0x3b8b2c[_0xee86('0x37')][_0xee86('0x25')]);_0x8b588[_0xee86('0x27')]=qs[_0xee86('0x27')](_0x3b8b2c[_0xee86('0x37')][_0xee86('0x27')]);_0x8b588['order']=qs['sort'](_0x3b8b2c[_0xee86('0x37')]['sort']);_0x8b588['where']=qs[_0xee86('0x39')](_['pick'](_0x3b8b2c['query'],_0x56ea08[_0xee86('0x39')]));_0x8b588=_['merge']({},_0x8b588,_0x3b8b2c[_0xee86('0x47')]);return _0x3fb7e6['get'+_['capitalize'](_0x3b8b2c[_0xee86('0x37')][_0xee86('0x76')]['toLowerCase']())+_0xee86('0x7c')](_0x8b588);})[_0xee86('0x2c')](respondWithResult(_0x1d5d86,null))[_0xee86('0x49')](handleError(_0x1d5d86,null));};exports[_0xee86('0x7d')]=function(_0x595df0,_0x228cae,_0x207cf2){return db['Team'][_0xee86('0x75')]({'where':{'id':_0x595df0[_0xee86('0x4b')]['id']}})[_0xee86('0x2c')](function(_0x447e91){if(_0x447e91){if(!_0x595df0[_0xee86('0x4f')][_0xee86('0x76')]||!utils['isValidChannel'](_0x595df0[_0xee86('0x4f')][_0xee86('0x76')])){throw new db[(_0xee86('0x61'))][(_0xee86('0x78'))](_0xee86('0x79'));}return _0x447e91['add'+_['capitalize'](_0x595df0[_0xee86('0x4f')][_0xee86('0x76')][_0xee86('0x7a')]())+_0xee86('0x7c')](_0x595df0[_0xee86('0x4f')][_0xee86('0x7e')]);}return null;})[_0xee86('0x2c')](handleEntityNotFound(_0x228cae,null))['then'](respondWithStatusCode(_0x228cae,null))[_0xee86('0x49')](handleError(_0x228cae,null));};exports[_0xee86('0x7f')]=function(_0x4782a6,_0x514d72,_0x17bd3a){return db[_0xee86('0x32')]['findOne']({'where':{'id':_0x4782a6[_0xee86('0x4b')]['id']}})[_0xee86('0x2c')](function(_0x3f03b8){if(_0x3f03b8){if(!_0x4782a6['query'][_0xee86('0x76')]||!utils['isValidChannel'](_0x4782a6[_0xee86('0x37')][_0xee86('0x76')])){throw new db[(_0xee86('0x61'))][(_0xee86('0x78'))](_0xee86('0x79'));}return _0x3f03b8[_0xee86('0x80')+_[_0xee86('0x81')](_0x4782a6['query'][_0xee86('0x76')][_0xee86('0x7a')]())+_0xee86('0x7c')](_0x4782a6[_0xee86('0x37')]['ids']);}return null;})[_0xee86('0x2c')](handleEntityNotFound(_0x514d72,null))[_0xee86('0x2c')](respondWithStatusCode(_0x514d72,null))[_0xee86('0x49')](handleError(_0x514d72,null));};exports[_0xee86('0x82')]=function(_0x4ed794,_0x1382d4){var _0x4e39a3=_[_0xee86('0x83')](_0x4ed794[_0xee86('0x4f')][_0xee86('0x7e')])?_0x4ed794['body'][_0xee86('0x7e')]:[_0x4ed794['body'][_0xee86('0x7e')]];var _0x380498=_0x4ed794[_0xee86('0x4b')]['id'];return db[_0xee86('0x32')][_0xee86('0x4d')]({'where':{'id':_0x380498}})[_0xee86('0x2c')](handleEntityNotFound(_0x1382d4,null))['then'](function(_0x56c738){if(_0x56c738){var _0x16bad3=['Voice',_0xee86('0x84'),_0xee86('0x85'),_0xee86('0x86'),_0xee86('0x87'),_0xee86('0x88'),_0xee86('0x89')];return db[_0xee86('0x5b')]['transaction'](function(_0x4aa086){var _0x532261=_[_0xee86('0x31')](_0x16bad3,function(_0x4a9d4d){var _0x89e86f={'attributes':['id',_0xee86('0x2e')]};if(_0x4a9d4d===_0xee86('0x8a')){_0x89e86f[_0xee86('0x8b')]={'attributes':[_0xee86('0x8c')]};}return _0x56c738[_0xee86('0x52')+_0x4a9d4d+'Queues'](_0x89e86f)[_0xee86('0x2c')](function(_0x41393c){var _0x52ed8a=_['map'](_0x41393c,function(_0x3dc41b){var _0x4ee56f=_[_0xee86('0x31')](_0x4e39a3,function(_0xfff4bd){var _0x4be201={'where':{'UserId':_0xfff4bd,[_0x4a9d4d+_0xee86('0x8d')]:_0x3dc41b['id']},'transaction':_0x4aa086};if(_0x4a9d4d===_0xee86('0x8a')){_0x4be201[_0xee86('0x1c')]={'penalty':_0x3dc41b[_0xee86('0x8e')][_0xee86('0x8c')]};}return db[_0xee86('0x8f')+_0x4a9d4d+_0xee86('0x7b')][_0xee86('0x90')](_0x4be201)['then'](function(){socket[_0xee86('0x91')](_0xee86('0x50')+_0x4a9d4d+_0xee86('0x92'),{'UserId':_0xfff4bd,[_0x4a9d4d+'QueueId']:_0x3dc41b['id']});if(_0x4a9d4d!==_0xee86('0x8a')){return;}return db[_0xee86('0x8f')][_0xee86('0x48')]({'where':{'id':_0x4e39a3,'online':0x1},'attributes':['id','name',_0xee86('0x93'),_0xee86('0x94'),'interface'],'raw':!![]})[_0xee86('0x2c')](function(_0x5cd10b){var _0x2d28fe=_['map'](_0x5cd10b,function(_0x1d2968){return db[_0xee86('0x95')][_0xee86('0x96')]({'membername':_0x1d2968[_0xee86('0x2e')],'UserId':_0x1d2968['id'],'queue_name':_0x3dc41b['name'],'VoiceQueueId':_0x3dc41b['id'],'interface':_[_0xee86('0x97')](_0x1d2968[_0xee86('0x98')])?util[_0xee86('0x99')](_0xee86('0x9a'),_0x1d2968[_0xee86('0x2e')]):_0x1d2968[_0xee86('0x98')],'paused':_0x1d2968['voicePause']||![],'penalty':_0x3dc41b[_0xee86('0x8e')]['penalty']},{'transaction':_0x4aa086});});return Promise['all'](_0x2d28fe);});});});return Promise[_0xee86('0x9b')](_0x4ee56f);});return Promise[_0xee86('0x9b')](_0x52ed8a);})[_0xee86('0x2c')](function(){return db[_0xee86('0x71')][_0xee86('0x75')]({'where':{'teamId':_0x380498}})[_0xee86('0x2c')](function(_0x1d065b){if(_0x1d065b){var _0x3ada38=_[_0xee86('0x31')](_0x4e39a3,function(_0x32a48f){db[_0xee86('0x72')][_0xee86('0x96')]({'UserId':_0x32a48f,'VoicePrefixId':_0x1d065b[_0xee86('0x9c')]});});return Promise[_0xee86('0x9b')](_0x3ada38);}});});});return Promise[_0xee86('0x9b')](_0x532261)['then'](function(){return _0x56c738[_0xee86('0x82')](_0x4e39a3,{'transaction':_0x4aa086})['spread'](function(_0x99839){return _0x99839;});});});}})[_0xee86('0x2c')](respondWithResult(_0x1382d4,null))[_0xee86('0x49')](handleError(_0x1382d4,null));};exports[_0xee86('0x9d')]=function(_0x44d00a,_0x24d1a7){var _0x1e8b27=_[_0xee86('0x83')](_0x44d00a['query'][_0xee86('0x7e')])?_0x44d00a[_0xee86('0x37')][_0xee86('0x7e')]:[_0x44d00a[_0xee86('0x37')]['ids']];var _0x4e5773=_0x44d00a['params']['id'];return db[_0xee86('0x32')][_0xee86('0x4d')]({'where':{'id':_0x4e5773}})['then'](handleEntityNotFound(_0x24d1a7,null))['then'](function(_0x3fc23d){if(_0x3fc23d){var _0x47eb25=[_0xee86('0x8a'),'Chat','Mail','Sms',_0xee86('0x87'),'Openchannel',_0xee86('0x89')];return db[_0xee86('0x5b')]['transaction'](function(_0x3fa94e){var _0x14842e=_[_0xee86('0x31')](_0x47eb25,function(_0x3e1b59){var _0x40383d={'attributes':['id',_0xee86('0x2e')]};return _0x3fc23d[_0xee86('0x52')+_0x3e1b59+_0xee86('0x7c')](_0x40383d)[_0xee86('0x2c')](function(_0x14ed35){var _0x1bba5f=_[_0xee86('0x31')](_0x14ed35,function(_0x1f165d){return _0x1f165d[_0xee86('0x9d')](_0x1e8b27,{'transaction':_0x3fa94e})[_0xee86('0x2c')](function(){var _0x5e2ee5=_[_0xee86('0x31')](_0x1e8b27,function(_0x12b0ab){socket[_0xee86('0x91')](_0xee86('0x50')+_0x3e1b59+_0xee86('0x9e'),{'UserId':Number(_0x12b0ab),[_0x3e1b59+_0xee86('0x8d')]:_0x1f165d['id']});if(_0x3e1b59!==_0xee86('0x8a')){return;}return db[_0xee86('0x95')][_0xee86('0x5a')]({'where':{'VoiceQueueId':_0x1f165d['id'],'UserId':_0x12b0ab},'transaction':_0x3fa94e});});return Promise[_0xee86('0x9b')](_0x5e2ee5);});});return Promise[_0xee86('0x9b')](_0x1bba5f);});});return Promise['all'](_0x14842e)[_0xee86('0x2c')](function(){return _0x3fc23d[_0xee86('0x9d')](_0x1e8b27,{'transaction':_0x3fa94e});})[_0xee86('0x2c')](function(){return db[_0xee86('0x71')][_0xee86('0x75')]({'where':{'teamId':_0x4e5773}})[_0xee86('0x2c')](function(_0x389b9e){if(_0x389b9e){var _0x20ce5b=_['map'](_0x1e8b27,function(_0x5ebcdc){db[_0xee86('0x72')][_0xee86('0x5a')]({'where':{'UserId':_0x5ebcdc,'VoicePrefixId':_0x389b9e[_0xee86('0x9c')]}});});return Promise[_0xee86('0x9b')](_0x20ce5b);}});});});}})[_0xee86('0x2c')](respondWithStatusCode(_0x24d1a7,null))[_0xee86('0x49')](handleError(_0x24d1a7,null));};exports['getAgents']=function(_0x5c5e02,_0xa69b9e,_0x2c1ce6){var _0x4cbaab={};var _0x19903c={};var _0x4b509a;var _0x26de4f;return db[_0xee86('0x32')]['findOne']({'where':{'id':_0x5c5e02[_0xee86('0x4b')]['id']}})[_0xee86('0x2c')](handleEntityNotFound(_0xa69b9e,null))[_0xee86('0x2c')](function(_0x722c23){if(_0x722c23){_0x4b509a=_0x722c23;_0x19903c[_0xee86('0x36')]=_[_0xee86('0x38')](db[_0xee86('0x8f')][_0xee86('0x33')]);_0x19903c[_0xee86('0x37')]=_[_0xee86('0x38')](_0x5c5e02[_0xee86('0x37')]);_0x19903c['filters']=_['intersection'](_0x19903c[_0xee86('0x36')],_0x19903c['query']);_0x4cbaab[_0xee86('0x3c')]=_['intersection'](_0x19903c[_0xee86('0x36')],qs['fields'](_0x5c5e02[_0xee86('0x37')][_0xee86('0x3b')]));_0x4cbaab[_0xee86('0x3c')]=_0x4cbaab['attributes'][_0xee86('0x3d')]?_0x4cbaab[_0xee86('0x3c')]:_0x19903c[_0xee86('0x36')];_0x4cbaab[_0xee86('0x40')]=qs[_0xee86('0x41')](_0x5c5e02[_0xee86('0x37')][_0xee86('0x41')]);_0x4cbaab[_0xee86('0x43')]=qs['filters'](_['pick'](_0x5c5e02[_0xee86('0x37')],_0x19903c['filters']));if(_0x5c5e02[_0xee86('0x37')]['filter']){_0x4cbaab[_0xee86('0x43')]=_['merge'](_0x4cbaab[_0xee86('0x43')],{'$or':_[_0xee86('0x31')](_0x4cbaab[_0xee86('0x3c')],function(_0x5969dc){var _0x11b1ed={};_0x11b1ed[_0x5969dc]={'$like':'%'+_0x5c5e02[_0xee86('0x37')][_0xee86('0x45')]+'%'};return _0x11b1ed;})});}_0x4cbaab=_[_0xee86('0x46')]({},_0x4cbaab,_0x5c5e02['options']);return _0x4b509a[_0xee86('0x9f')](_0x4cbaab);}})[_0xee86('0x2c')](function(_0xab2c65){if(_0xab2c65){_0x26de4f=_0xab2c65[_0xee86('0x3d')];if(!_0x5c5e02['query']['hasOwnProperty'](_0xee86('0x3f'))){_0x4cbaab[_0xee86('0x25')]=qs[_0xee86('0x25')](_0x5c5e02['query'][_0xee86('0x25')]);_0x4cbaab['offset']=qs[_0xee86('0x27')](_0x5c5e02[_0xee86('0x37')][_0xee86('0x27')]);}return _0x4b509a[_0xee86('0x9f')](_0x4cbaab);}})['then'](function(_0x4b745b){if(_0x4b745b){return _0x4b745b?{'count':_0x26de4f,'rows':_0x4b745b}:null;}})[_0xee86('0x2c')](respondWithResult(_0xa69b9e,null))[_0xee86('0x49')](handleError(_0xa69b9e,null));};
\ No newline at end of file
+var _0x5efa=['undefined','count','offset','set','Content-Range','apply','reject','then','sendStatus','error','stack','name','send','index','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','Team','includeAll','include','catch','params','rawAttributes','keys','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','VoiceQueueId','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','UserFaxQueue','UserOpenchannelQueue','TeamVoicePrefix','VoicePrefixId','Teams','end','getQueues','findOne','channel','isValidChannel','ValidationError','capitalize','toLowerCase','Queue','length','order','Queues','addQueues','Unknown\x20channel','ids','removeQueues','remove','Voice','Chat','Sms','Fax','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','voicePause','all','UserVoicePrefix','addAgents','removeAgents','isArray','Mail','Openchannel','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./team.socket','status','json','limit'];(function(_0x3719cf,_0x4c9fc9){var _0x23d659=function(_0x1ddbbb){while(--_0x1ddbbb){_0x3719cf['push'](_0x3719cf['shift']());}};_0x23d659(++_0x4c9fc9);}(_0x5efa,0x74));var _0xa5ef=function(_0x1f8f84,_0x9659e1){_0x1f8f84=_0x1f8f84-0x0;var _0x538a96=_0x5efa[_0x1f8f84];return _0x538a96;};'use strict';var emlformat=require(_0xa5ef('0x0'));var rimraf=require(_0xa5ef('0x1'));var zipdir=require(_0xa5ef('0x2'));var jsonpatch=require(_0xa5ef('0x3'));var rp=require(_0xa5ef('0x4'));var moment=require(_0xa5ef('0x5'));var BPromise=require(_0xa5ef('0x6'));var Mustache=require(_0xa5ef('0x7'));var util=require(_0xa5ef('0x8'));var path=require(_0xa5ef('0x9'));var sox=require(_0xa5ef('0xa'));var csv=require(_0xa5ef('0xb'));var ejs=require(_0xa5ef('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa5ef('0xd'));var crypto=require('crypto');var jsforce=require(_0xa5ef('0xe'));var deskjs=require(_0xa5ef('0xf'));var toCsv=require(_0xa5ef('0xb'));var querystring=require(_0xa5ef('0x10'));var Papa=require(_0xa5ef('0x11'));var Redis=require(_0xa5ef('0x12'));var authService=require(_0xa5ef('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa5ef('0x14'));var hardwareService=require(_0xa5ef('0x15'));var logger=require('../../config/logger')(_0xa5ef('0x16'));var utils=require('../../config/utils');var config=require(_0xa5ef('0x17'));var licenseUtil=require(_0xa5ef('0x18'));var db=require(_0xa5ef('0x19'))['db'];config[_0xa5ef('0x1a')]=_[_0xa5ef('0x1b')](config[_0xa5ef('0x1a')],{'host':_0xa5ef('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5ef('0x1a')]));require(_0xa5ef('0x1d'))['register'](socket);function respondWithStatusCode(_0x3267ef,_0x35652b){_0x35652b=_0x35652b||0xcc;return function(_0x32a463){if(_0x32a463){return _0x3267ef['sendStatus'](_0x35652b);}return _0x3267ef[_0xa5ef('0x1e')](_0x35652b)['end']();};}function respondWithResult(_0x47948d,_0x4b83fd){_0x4b83fd=_0x4b83fd||0xc8;return function(_0x283c0d){if(_0x283c0d){return _0x47948d['status'](_0x4b83fd)[_0xa5ef('0x1f')](_0x283c0d);}};}function respondWithFilteredResult(_0x2b9242,_0x5990aa){return function(_0x344d2e){if(_0x344d2e){var _0x552d70=typeof _0x5990aa['offset']==='undefined'&&typeof _0x5990aa[_0xa5ef('0x20')]===_0xa5ef('0x21');var _0x33f7b3=_0x344d2e[_0xa5ef('0x22')];var _0x376dda=_0x552d70?0x0:_0x5990aa[_0xa5ef('0x23')];var _0x23ded8=_0x552d70?_0x344d2e[_0xa5ef('0x22')]:_0x5990aa[_0xa5ef('0x23')]+_0x5990aa[_0xa5ef('0x20')];var _0x11a642;if(_0x23ded8>=_0x33f7b3){_0x23ded8=_0x33f7b3;_0x11a642=0xc8;}else{_0x11a642=0xce;}_0x2b9242['status'](_0x11a642);return _0x2b9242[_0xa5ef('0x24')](_0xa5ef('0x25'),_0x376dda+'-'+_0x23ded8+'/'+_0x33f7b3)[_0xa5ef('0x1f')](_0x344d2e);}return null;};}function patchUpdates(_0x2a95fe){return function(_0x130c0e){try{jsonpatch[_0xa5ef('0x26')](_0x130c0e,_0x2a95fe,!![]);}catch(_0x204f9f){return BPromise[_0xa5ef('0x27')](_0x204f9f);}return _0x130c0e['save']();};}function saveUpdates(_0x3d831e,_0x4fb2ec){return function(_0x2a0deb){if(_0x2a0deb){return _0x2a0deb['update'](_0x3d831e)[_0xa5ef('0x28')](function(_0x4131f0){return _0x4131f0;});}return null;};}function handleEntityNotFound(_0xb5eb0,_0x5ef82e){return function(_0x170317){if(!_0x170317){_0xb5eb0[_0xa5ef('0x29')](0x194);}return _0x170317;};}function handleError(_0xfbf04d,_0x342b5e){_0x342b5e=_0x342b5e||0x1f4;return function(_0x340933){logger[_0xa5ef('0x2a')](_0x340933[_0xa5ef('0x2b')]);if(_0x340933[_0xa5ef('0x2c')]){delete _0x340933[_0xa5ef('0x2c')];}_0xfbf04d['status'](_0x342b5e)[_0xa5ef('0x2d')](_0x340933);};}exports[_0xa5ef('0x2e')]=function(_0xdce27a,_0x3b4bd1){var _0x2f4661={},_0x3bfbdf={},_0x3f1c2e={'count':0x0,'rows':[]};var _0x521090=_['map'](db['Team']['rawAttributes'],function(_0x101c21){return{'name':_0x101c21[_0xa5ef('0x2f')],'type':_0x101c21[_0xa5ef('0x30')][_0xa5ef('0x31')]};});_0x3bfbdf[_0xa5ef('0x32')]=_[_0xa5ef('0x33')](_0x521090,_0xa5ef('0x2c'));_0x3bfbdf[_0xa5ef('0x34')]=_['keys'](_0xdce27a['query']);_0x3bfbdf[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0x3bfbdf['model'],_0x3bfbdf[_0xa5ef('0x34')]);_0x2f4661[_0xa5ef('0x37')]=_[_0xa5ef('0x36')](_0x3bfbdf['model'],qs['fields'](_0xdce27a['query'][_0xa5ef('0x38')]));_0x2f4661[_0xa5ef('0x37')]=_0x2f4661[_0xa5ef('0x37')]['length']?_0x2f4661[_0xa5ef('0x37')]:_0x3bfbdf[_0xa5ef('0x32')];if(!_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x39')](_0xa5ef('0x3a'))){_0x2f4661[_0xa5ef('0x20')]=qs['limit'](_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x20')]);_0x2f4661[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0xdce27a['query']['offset']);}_0x2f4661['order']=qs[_0xa5ef('0x3b')](_0xdce27a['query'][_0xa5ef('0x3b')]);_0x2f4661[_0xa5ef('0x3c')]=qs[_0xa5ef('0x35')](_[_0xa5ef('0x3d')](_0xdce27a[_0xa5ef('0x34')],_0x3bfbdf['filters']),_0x521090);if(_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x3e')]){_0x2f4661['where']=_[_0xa5ef('0x3f')](_0x2f4661[_0xa5ef('0x3c')],{'$or':_[_0xa5ef('0x33')](_0x521090,function(_0x2cd074){if(_0x2cd074[_0xa5ef('0x30')]!=='VIRTUAL'){var _0x47ef5d={};_0x47ef5d[_0x2cd074[_0xa5ef('0x2c')]]={'$like':'%'+_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x3e')]+'%'};return _0x47ef5d;}})});}_0x2f4661=_[_0xa5ef('0x3f')]({},_0x2f4661,_0xdce27a[_0xa5ef('0x40')]);var _0x256c06={'where':_0x2f4661[_0xa5ef('0x3c')]};return db[_0xa5ef('0x41')][_0xa5ef('0x22')](_0x256c06)[_0xa5ef('0x28')](function(_0x120025){_0x3f1c2e[_0xa5ef('0x22')]=_0x120025;if(_0xdce27a[_0xa5ef('0x34')][_0xa5ef('0x42')]){_0x2f4661[_0xa5ef('0x43')]=[{'all':!![]}];}return db[_0xa5ef('0x41')]['findAll'](_0x2f4661);})[_0xa5ef('0x28')](function(_0x4db3d0){_0x3f1c2e['rows']=_0x4db3d0;return _0x3f1c2e;})[_0xa5ef('0x28')](respondWithFilteredResult(_0x3b4bd1,_0x2f4661))[_0xa5ef('0x44')](handleError(_0x3b4bd1,null));};exports['show']=function(_0x2c2b6f,_0x1909c1){var _0x522b5d={'raw':![],'where':{'id':_0x2c2b6f[_0xa5ef('0x45')]['id']}},_0x4e4790={};_0x4e4790[_0xa5ef('0x32')]=_['keys'](db[_0xa5ef('0x41')][_0xa5ef('0x46')]);_0x4e4790[_0xa5ef('0x34')]=_[_0xa5ef('0x47')](_0x2c2b6f[_0xa5ef('0x34')]);_0x4e4790[_0xa5ef('0x35')]=_['intersection'](_0x4e4790['model'],_0x4e4790[_0xa5ef('0x34')]);_0x522b5d[_0xa5ef('0x37')]=_[_0xa5ef('0x36')](_0x4e4790[_0xa5ef('0x32')],qs[_0xa5ef('0x38')](_0x2c2b6f[_0xa5ef('0x34')][_0xa5ef('0x38')]));_0x522b5d[_0xa5ef('0x37')]=_0x522b5d[_0xa5ef('0x37')]['length']?_0x522b5d[_0xa5ef('0x37')]:_0x4e4790['model'];if(_0x2c2b6f['query'][_0xa5ef('0x42')]){_0x522b5d[_0xa5ef('0x43')]=[{'all':!![]}];}_0x522b5d=_[_0xa5ef('0x3f')]({},_0x522b5d,_0x2c2b6f[_0xa5ef('0x40')]);return db['Team']['find'](_0x522b5d)[_0xa5ef('0x28')](handleEntityNotFound(_0x1909c1,null))[_0xa5ef('0x28')](respondWithResult(_0x1909c1,null))['catch'](handleError(_0x1909c1,null));};exports[_0xa5ef('0x48')]=function(_0x29e7e4,_0x54413c){return db['Team'][_0xa5ef('0x48')](_0x29e7e4[_0xa5ef('0x49')],{})[_0xa5ef('0x28')](function(_0x101b97){var _0x2360fb=_0x29e7e4[_0xa5ef('0x4a')][_0xa5ef('0x4b')]({'plain':!![]});if(!_0x2360fb)throw new Error(_0xa5ef('0x4c'));if(_0x2360fb['role']===_0xa5ef('0x4a')){var _0x5f1fc6=_0x101b97[_0xa5ef('0x4b')]({'plain':!![]});var _0x5e030d='Teams';return db[_0xa5ef('0x4d')][_0xa5ef('0x4e')]({'where':{'name':_0x5e030d,'userProfileId':_0x2360fb['userProfileId']},'raw':!![]})[_0xa5ef('0x28')](function(_0x3aa77e){if(_0x3aa77e&&_0x3aa77e[_0xa5ef('0x4f')]===0x0){return db[_0xa5ef('0x50')][_0xa5ef('0x48')]({'name':_0x5f1fc6['name'],'resourceId':_0x5f1fc6['id'],'type':_0x3aa77e[_0xa5ef('0x2c')],'sectionId':_0x3aa77e['id']},{})[_0xa5ef('0x28')](function(){return _0x101b97;});}else{return _0x101b97;}})[_0xa5ef('0x44')](function(_0x4dc804){logger[_0xa5ef('0x2a')](_0xa5ef('0x51'),_0x4dc804);throw _0x4dc804;});}return _0x101b97;})[_0xa5ef('0x28')](respondWithResult(_0x54413c,0xc9))['catch'](handleError(_0x54413c,null));};exports[_0xa5ef('0x52')]=function(_0x518628,_0xc64372){if(_0x518628['body']['id']){delete _0x518628[_0xa5ef('0x49')]['id'];}return db[_0xa5ef('0x41')][_0xa5ef('0x4e')]({'where':{'id':_0x518628['params']['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0xc64372,null))['then'](saveUpdates(_0x518628[_0xa5ef('0x49')],null))[_0xa5ef('0x28')](respondWithResult(_0xc64372,null))[_0xa5ef('0x44')](handleError(_0xc64372,null));};exports[_0xa5ef('0x53')]=function(_0x6c4d5f,_0x31752a){var _0x1f59f4=_0x6c4d5f[_0xa5ef('0x45')]['id'];var _0x47398e=[];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x1da779){var _0x22abb3=_0xa5ef('0x56')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x22abb3,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779})[_0xa5ef('0x28')](function(_0xb36f10){_0x47398e=_['map'](_0xb36f10,function(_0xb2dc10){return Number(_0xb2dc10['UserId']);});})[_0xa5ef('0x28')](function(){var _0x4edbea='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x4edbea,{'type':db[_0xa5ef('0x57')]['QueryTypes'][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x20d8c6){var _0x522792=_[_0xa5ef('0x33')](_0x20d8c6,function(_0x1e78a9){return Number(_0x1e78a9[_0xa5ef('0x5a')]);});return db['UserVoiceQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'VoiceQueueId':{'$in':_0x522792}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x3063a5='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x3063a5,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x176463){var _0x87907f=_[_0xa5ef('0x33')](_0x176463,function(_0xf98d98){return Number(_0xf98d98[_0xa5ef('0x5b')]);});return db['UserMailQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'MailQueueId':{'$in':_0x87907f}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x32c25f=_0xa5ef('0x5c')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0x32c25f,{'type':db['Sequelize'][_0xa5ef('0x58')][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x3e9722){var _0x117c85=_[_0xa5ef('0x33')](_0x3e9722,function(_0x880f55){return Number(_0x880f55[_0xa5ef('0x5d')]);});return db['UserSmsQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'SmsQueueId':{'$in':_0x117c85}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0xd48ff1=_0xa5ef('0x5e')+_0x1f59f4;return db[_0xa5ef('0x54')][_0xa5ef('0x34')](_0xd48ff1,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x5137e6){var _0x12c7ca=_[_0xa5ef('0x33')](_0x5137e6,function(_0x4d524b){return Number(_0x4d524b['ChatQueueId']);});return db[_0xa5ef('0x5f')][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'ChatQueueId':{'$in':_0x12c7ca}},'transaction':_0x1da779});})['then'](function(){var _0x30af35=_0xa5ef('0x60')+_0x1f59f4;return db['sequelize']['query'](_0x30af35,{'type':db[_0xa5ef('0x57')]['QueryTypes'][_0xa5ef('0x59')],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x2db45b){var _0x25245b=_[_0xa5ef('0x33')](_0x2db45b,function(_0x119bf1){return Number(_0x119bf1['FaxQueueId']);});return db[_0xa5ef('0x61')][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'FaxQueueId':{'$in':_0x25245b}},'transaction':_0x1da779});})['then'](function(){var _0xc8c4e6='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db[_0xa5ef('0x54')]['query'](_0xc8c4e6,{'type':db[_0xa5ef('0x57')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1da779});})['then'](function(_0x285e2a){var _0x45eb4b=_[_0xa5ef('0x33')](_0x285e2a,function(_0xab81b6){return Number(_0xab81b6['OpenchannelQueueId']);});return db[_0xa5ef('0x62')]['destroy']({'where':{'UserId':{'$in':_0x47398e},'OpenchannelQueueId':{'$in':_0x45eb4b}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){var _0x4296d1='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1f59f4;return db['sequelize'][_0xa5ef('0x34')](_0x4296d1,{'type':db[_0xa5ef('0x57')][_0xa5ef('0x58')]['SELECT'],'raw':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x27b623){var _0x19bc8f=_[_0xa5ef('0x33')](_0x27b623,function(_0x23eee2){return Number(_0x23eee2['WhatsappQueueId']);});return db['UserWhatsappQueue'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'WhatsappQueueId':{'$in':_0x19bc8f}},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x4e')]({'where':{'TeamId':_0x1f59f4}});})[_0xa5ef('0x28')](function(_0x535402){if(_0x535402===null){return;}return db['UserVoicePrefix'][_0xa5ef('0x53')]({'where':{'UserId':{'$in':_0x47398e},'VoicePrefixId':_0x535402[_0xa5ef('0x64')]},'transaction':_0x1da779});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x41')]['destroy']({'where':{'id':_0x1f59f4},'cascade':!![],'transaction':_0x1da779});})[_0xa5ef('0x28')](function(_0x16b7ea){if(_0x16b7ea===0x0){_0x31752a['sendStatus'](0x194);}else{return db['UserProfileResource']['destroy']({'where':{'type':_0xa5ef('0x65'),'resourceId':_0x1f59f4},'cascade':!![],'transaction':_0x1da779})[_0xa5ef('0x28')](function(){_0x31752a['status'](0xcc)[_0xa5ef('0x66')]();});}})[_0xa5ef('0x44')](function(_0x4e3555){_0x31752a[_0xa5ef('0x1e')](0x1f4)[_0xa5ef('0x2d')](_0x4e3555);});});};exports[_0xa5ef('0x67')]=function(_0x3d8776,_0x22bfcf,_0x46d030){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x3d8776['params']['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0x22bfcf,null))['then'](function(_0x2bc86c){if(!_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))][(_0xa5ef('0x6b'))]('Unknown\x20channel');}var _0x3229df={};var _0x106cf2={};_0x106cf2[_0xa5ef('0x32')]=_['keys'](db[_[_0xa5ef('0x6c')](_0x3d8776['query'][_0xa5ef('0x69')][_0xa5ef('0x6d')]())+_0xa5ef('0x6e')][_0xa5ef('0x46')]);_0x106cf2[_0xa5ef('0x34')]=_[_0xa5ef('0x47')](_0x3d8776[_0xa5ef('0x34')]);_0x106cf2[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0x106cf2[_0xa5ef('0x32')],_0x106cf2[_0xa5ef('0x34')]);_0x3229df[_0xa5ef('0x37')]=_['intersection'](_0x106cf2[_0xa5ef('0x32')],qs[_0xa5ef('0x38')](_0x3d8776[_0xa5ef('0x34')][_0xa5ef('0x38')]));_0x3229df[_0xa5ef('0x37')]=_0x3229df[_0xa5ef('0x37')][_0xa5ef('0x6f')]?_0x3229df[_0xa5ef('0x37')]:_0x106cf2[_0xa5ef('0x32')];_0x3229df[_0xa5ef('0x20')]=qs[_0xa5ef('0x20')](_0x3d8776['query'][_0xa5ef('0x20')]);_0x3229df[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0x3d8776[_0xa5ef('0x34')]['offset']);_0x3229df[_0xa5ef('0x70')]=qs[_0xa5ef('0x3b')](_0x3d8776[_0xa5ef('0x34')]['sort']);_0x3229df[_0xa5ef('0x3c')]=qs['filters'](_[_0xa5ef('0x3d')](_0x3d8776[_0xa5ef('0x34')],_0x106cf2[_0xa5ef('0x35')]));_0x3229df=_[_0xa5ef('0x3f')]({},_0x3229df,_0x3d8776[_0xa5ef('0x40')]);return _0x2bc86c[_0xa5ef('0x4b')+_[_0xa5ef('0x6c')](_0x3d8776[_0xa5ef('0x34')]['channel']['toLowerCase']())+_0xa5ef('0x71')](_0x3229df);})['then'](respondWithResult(_0x22bfcf,null))['catch'](handleError(_0x22bfcf,null));};exports[_0xa5ef('0x72')]=function(_0x3e4ab3,_0x32ed44,_0x134e99){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x3e4ab3[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](function(_0x5684e8){if(_0x5684e8){if(!_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))]['ValidationError'](_0xa5ef('0x73'));}return _0x5684e8['add'+_['capitalize'](_0x3e4ab3[_0xa5ef('0x49')]['channel'][_0xa5ef('0x6d')]())+_0xa5ef('0x71')](_0x3e4ab3[_0xa5ef('0x49')][_0xa5ef('0x74')]);}return null;})[_0xa5ef('0x28')](handleEntityNotFound(_0x32ed44,null))[_0xa5ef('0x28')](respondWithStatusCode(_0x32ed44,null))[_0xa5ef('0x44')](handleError(_0x32ed44,null));};exports[_0xa5ef('0x75')]=function(_0x424df8,_0x22f78a,_0x1dc74d){return db[_0xa5ef('0x41')][_0xa5ef('0x68')]({'where':{'id':_0x424df8[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](function(_0x538614){if(_0x538614){if(!_0x424df8[_0xa5ef('0x34')][_0xa5ef('0x69')]||!utils[_0xa5ef('0x6a')](_0x424df8['query'][_0xa5ef('0x69')])){throw new db[(_0xa5ef('0x57'))][(_0xa5ef('0x6b'))](_0xa5ef('0x73'));}return _0x538614[_0xa5ef('0x76')+_[_0xa5ef('0x6c')](_0x424df8[_0xa5ef('0x34')][_0xa5ef('0x69')][_0xa5ef('0x6d')]())+_0xa5ef('0x71')](_0x424df8[_0xa5ef('0x34')]['ids']);}return null;})[_0xa5ef('0x28')](handleEntityNotFound(_0x22f78a,null))[_0xa5ef('0x28')](respondWithStatusCode(_0x22f78a,null))[_0xa5ef('0x44')](handleError(_0x22f78a,null));};exports['addAgents']=function(_0x244a01,_0x4716d2){var _0x23c98f=_['isArray'](_0x244a01[_0xa5ef('0x49')]['ids'])?_0x244a01[_0xa5ef('0x49')][_0xa5ef('0x74')]:[_0x244a01[_0xa5ef('0x49')][_0xa5ef('0x74')]];var _0xa3fd7a=_0x244a01[_0xa5ef('0x45')]['id'];return db[_0xa5ef('0x41')][_0xa5ef('0x4e')]({'where':{'id':_0xa3fd7a}})['then'](handleEntityNotFound(_0x4716d2,null))[_0xa5ef('0x28')](function(_0x51e80e){if(_0x51e80e){var _0x1b721a=[_0xa5ef('0x77'),_0xa5ef('0x78'),'Mail',_0xa5ef('0x79'),_0xa5ef('0x7a'),'Openchannel',_0xa5ef('0x7b')];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x164cd9){var _0x4d4d01=_[_0xa5ef('0x33')](_0x1b721a,function(_0x1c407e){var _0x58c6d9={'attributes':['id',_0xa5ef('0x2c')]};if(_0x1c407e===_0xa5ef('0x77')){_0x58c6d9[_0xa5ef('0x7c')]={'attributes':[_0xa5ef('0x7d')]};}return _0x51e80e[_0xa5ef('0x4b')+_0x1c407e+_0xa5ef('0x71')](_0x58c6d9)[_0xa5ef('0x28')](function(_0x5b79fa){var _0x3cde77=_[_0xa5ef('0x33')](_0x5b79fa,function(_0x12e807){var _0x54deee=_[_0xa5ef('0x33')](_0x23c98f,function(_0x27494a){var _0x151d5b={'where':{'UserId':_0x27494a,[_0x1c407e+_0xa5ef('0x7e')]:_0x12e807['id']},'transaction':_0x164cd9};if(_0x1c407e===_0xa5ef('0x77')){_0x151d5b[_0xa5ef('0x1b')]={'penalty':_0x12e807[_0xa5ef('0x7f')]['penalty']};}return db[_0xa5ef('0x80')+_0x1c407e+'Queue'][_0xa5ef('0x81')](_0x151d5b)[_0xa5ef('0x28')](function(){socket[_0xa5ef('0x82')](_0xa5ef('0x4a')+_0x1c407e+_0xa5ef('0x83'),{'UserId':_0x27494a,[_0x1c407e+_0xa5ef('0x7e')]:_0x12e807['id']});if(_0x1c407e!==_0xa5ef('0x77')){return;}return db['User'][_0xa5ef('0x84')]({'where':{'id':_0x23c98f,'online':0x1},'attributes':['id',_0xa5ef('0x2c'),_0xa5ef('0x85'),'voicePause',_0xa5ef('0x86')],'raw':!![]})[_0xa5ef('0x28')](function(_0x3732ad){var _0x5828d3=_[_0xa5ef('0x33')](_0x3732ad,function(_0x28a237){return db[_0xa5ef('0x87')][_0xa5ef('0x88')]({'membername':_0x28a237[_0xa5ef('0x2c')],'UserId':_0x28a237['id'],'queue_name':_0x12e807[_0xa5ef('0x2c')],'VoiceQueueId':_0x12e807['id'],'interface':_[_0xa5ef('0x89')](_0x28a237[_0xa5ef('0x86')])?util[_0xa5ef('0x8a')](_0xa5ef('0x8b'),_0x28a237[_0xa5ef('0x2c')]):_0x28a237['interface'],'paused':_0x28a237[_0xa5ef('0x8c')]||![],'penalty':_0x12e807[_0xa5ef('0x7f')][_0xa5ef('0x7d')]},{'transaction':_0x164cd9});});return Promise[_0xa5ef('0x8d')](_0x5828d3);});});});return Promise['all'](_0x54deee);});return Promise[_0xa5ef('0x8d')](_0x3cde77);})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x68')]({'where':{'teamId':_0xa3fd7a}})[_0xa5ef('0x28')](function(_0x1dd959){if(_0x1dd959){var _0x1ca92c=_[_0xa5ef('0x33')](_0x23c98f,function(_0x2c8a4c){db[_0xa5ef('0x8e')][_0xa5ef('0x88')]({'UserId':_0x2c8a4c,'VoicePrefixId':_0x1dd959[_0xa5ef('0x64')]});});return Promise['all'](_0x1ca92c);}});});});return Promise[_0xa5ef('0x8d')](_0x4d4d01)[_0xa5ef('0x28')](function(){return _0x51e80e[_0xa5ef('0x8f')](_0x23c98f,{'transaction':_0x164cd9})['spread'](function(_0x4f5534){return _0x4f5534;});});});}})['then'](respondWithResult(_0x4716d2,null))[_0xa5ef('0x44')](handleError(_0x4716d2,null));};exports[_0xa5ef('0x90')]=function(_0xa8af24,_0x3da5a9){var _0x1834cf=_[_0xa5ef('0x91')](_0xa8af24['query'][_0xa5ef('0x74')])?_0xa8af24['query'][_0xa5ef('0x74')]:[_0xa8af24[_0xa5ef('0x34')][_0xa5ef('0x74')]];var _0x5bd7a4=_0xa8af24[_0xa5ef('0x45')]['id'];return db[_0xa5ef('0x41')]['find']({'where':{'id':_0x5bd7a4}})[_0xa5ef('0x28')](handleEntityNotFound(_0x3da5a9,null))[_0xa5ef('0x28')](function(_0x231d40){if(_0x231d40){var _0x11e6da=['Voice','Chat',_0xa5ef('0x92'),_0xa5ef('0x79'),_0xa5ef('0x7a'),_0xa5ef('0x93'),'Whatsapp'];return db[_0xa5ef('0x54')][_0xa5ef('0x55')](function(_0x40d9f3){var _0x107e32=_[_0xa5ef('0x33')](_0x11e6da,function(_0x3239a8){var _0x5edb39={'attributes':['id','name']};return _0x231d40[_0xa5ef('0x4b')+_0x3239a8+'Queues'](_0x5edb39)[_0xa5ef('0x28')](function(_0x3e25ca){var _0x294feb=_['map'](_0x3e25ca,function(_0x4656d0){return _0x4656d0[_0xa5ef('0x90')](_0x1834cf,{'transaction':_0x40d9f3})[_0xa5ef('0x28')](function(){var _0x730a66=_[_0xa5ef('0x33')](_0x1834cf,function(_0x52fc7f){socket[_0xa5ef('0x82')]('user'+_0x3239a8+'Queue:remove',{'UserId':Number(_0x52fc7f),[_0x3239a8+_0xa5ef('0x7e')]:_0x4656d0['id']});if(_0x3239a8!==_0xa5ef('0x77')){return;}return db[_0xa5ef('0x87')][_0xa5ef('0x53')]({'where':{'VoiceQueueId':_0x4656d0['id'],'UserId':_0x52fc7f},'transaction':_0x40d9f3});});return Promise['all'](_0x730a66);});});return Promise['all'](_0x294feb);});});return Promise[_0xa5ef('0x8d')](_0x107e32)[_0xa5ef('0x28')](function(){return _0x231d40[_0xa5ef('0x90')](_0x1834cf,{'transaction':_0x40d9f3});})[_0xa5ef('0x28')](function(){return db[_0xa5ef('0x63')][_0xa5ef('0x68')]({'where':{'teamId':_0x5bd7a4}})[_0xa5ef('0x28')](function(_0x4a9e65){if(_0x4a9e65){var _0x3104b8=_['map'](_0x1834cf,function(_0x51615f){db[_0xa5ef('0x8e')][_0xa5ef('0x53')]({'where':{'UserId':_0x51615f,'VoicePrefixId':_0x4a9e65[_0xa5ef('0x64')]}});});return Promise[_0xa5ef('0x8d')](_0x3104b8);}});});});}})[_0xa5ef('0x28')](respondWithStatusCode(_0x3da5a9,null))[_0xa5ef('0x44')](handleError(_0x3da5a9,null));};exports[_0xa5ef('0x94')]=function(_0x27dae0,_0x3c6468,_0x6d01d){var _0x45709a={};var _0xddc264={};var _0x5a26ce;var _0x43ff19;return db['Team'][_0xa5ef('0x68')]({'where':{'id':_0x27dae0[_0xa5ef('0x45')]['id']}})[_0xa5ef('0x28')](handleEntityNotFound(_0x3c6468,null))[_0xa5ef('0x28')](function(_0x572eff){if(_0x572eff){_0x5a26ce=_0x572eff;_0xddc264[_0xa5ef('0x32')]=_['keys'](db[_0xa5ef('0x80')][_0xa5ef('0x46')]);_0xddc264[_0xa5ef('0x34')]=_['keys'](_0x27dae0['query']);_0xddc264[_0xa5ef('0x35')]=_[_0xa5ef('0x36')](_0xddc264[_0xa5ef('0x32')],_0xddc264[_0xa5ef('0x34')]);_0x45709a['attributes']=_[_0xa5ef('0x36')](_0xddc264['model'],qs[_0xa5ef('0x38')](_0x27dae0[_0xa5ef('0x34')]['fields']));_0x45709a['attributes']=_0x45709a[_0xa5ef('0x37')][_0xa5ef('0x6f')]?_0x45709a['attributes']:_0xddc264[_0xa5ef('0x32')];_0x45709a[_0xa5ef('0x70')]=qs[_0xa5ef('0x3b')](_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3b')]);_0x45709a[_0xa5ef('0x3c')]=qs[_0xa5ef('0x35')](_[_0xa5ef('0x3d')](_0x27dae0[_0xa5ef('0x34')],_0xddc264['filters']));if(_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3e')]){_0x45709a[_0xa5ef('0x3c')]=_[_0xa5ef('0x3f')](_0x45709a[_0xa5ef('0x3c')],{'$or':_[_0xa5ef('0x33')](_0x45709a[_0xa5ef('0x37')],function(_0x218cf7){var _0x4a9118={};_0x4a9118[_0x218cf7]={'$like':'%'+_0x27dae0[_0xa5ef('0x34')][_0xa5ef('0x3e')]+'%'};return _0x4a9118;})});}_0x45709a=_[_0xa5ef('0x3f')]({},_0x45709a,_0x27dae0[_0xa5ef('0x40')]);return _0x5a26ce[_0xa5ef('0x94')](_0x45709a);}})['then'](function(_0x34c346){if(_0x34c346){_0x43ff19=_0x34c346[_0xa5ef('0x6f')];if(!_0x27dae0['query'][_0xa5ef('0x39')]('nolimit')){_0x45709a[_0xa5ef('0x20')]=qs[_0xa5ef('0x20')](_0x27dae0['query'][_0xa5ef('0x20')]);_0x45709a[_0xa5ef('0x23')]=qs[_0xa5ef('0x23')](_0x27dae0['query']['offset']);}return _0x5a26ce[_0xa5ef('0x94')](_0x45709a);}})[_0xa5ef('0x28')](function(_0x2220a7){if(_0x2220a7){return _0x2220a7?{'count':_0x43ff19,'rows':_0x2220a7}:null;}})['then'](respondWithResult(_0x3c6468,null))[_0xa5ef('0x44')](handleError(_0x3c6468,null));};
\ No newline at end of file
index 070772e..d556252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6b=['hasOwnProperty','hook','exports','events','../../mysqldb','Team','save','remove','emit'];(function(_0x49178b,_0x3a882b){var _0x2d73cc=function(_0x2e29aa){while(--_0x2e29aa){_0x49178b['push'](_0x49178b['shift']());}};_0x2d73cc(++_0x3a882b);}(_0xae6b,0x111));var _0xbae6=function(_0xf15be4,_0x2c2591){_0xf15be4=_0xf15be4-0x0;var _0x2b6849=_0xae6b[_0xf15be4];return _0x2b6849;};'use strict';var EventEmitter=require(_0xbae6('0x0'));var Team=require(_0xbae6('0x1'))['db'][_0xbae6('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbae6('0x3'),'afterUpdate':'update','afterDestroy':_0xbae6('0x4')};function emitEvent(_0x49314f){return function(_0x7d79ba,_0x46c00e,_0x1d511e){TeamEvents['emit'](_0x49314f+':'+_0x7d79ba['id'],_0x7d79ba);TeamEvents[_0xbae6('0x5')](_0x49314f,_0x7d79ba);_0x1d511e(null);};}for(var e in events){if(events[_0xbae6('0x6')](e)){var event=events[e];Team[_0xbae6('0x7')](e,emitEvent(event));}}module[_0xbae6('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x2fce=['save','update','remove','emit','hasOwnProperty','events','Team','setMaxListeners'];(function(_0x2e2ef8,_0x3d9284){var _0x2b0792=function(_0xf2cdbc){while(--_0xf2cdbc){_0x2e2ef8['push'](_0x2e2ef8['shift']());}};_0x2b0792(++_0x3d9284);}(_0x2fce,0x19d));var _0xe2fc=function(_0x351e18,_0x22e3c0){_0x351e18=_0x351e18-0x0;var _0x1abbca=_0x2fce[_0x351e18];return _0x1abbca;};'use strict';var EventEmitter=require(_0xe2fc('0x0'));var Team=require('../../mysqldb')['db'][_0xe2fc('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xe2fc('0x2')](0x0);var events={'afterCreate':_0xe2fc('0x3'),'afterUpdate':_0xe2fc('0x4'),'afterDestroy':_0xe2fc('0x5')};function emitEvent(_0xe4e71b){return function(_0x2b598c,_0x398bd2,_0x4a514f){TeamEvents[_0xe2fc('0x6')](_0xe4e71b+':'+_0x2b598c['id'],_0x2b598c);TeamEvents[_0xe2fc('0x6')](_0xe4e71b,_0x2b598c);_0x4a514f(null);};}for(var e in events){if(events[_0xe2fc('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 4933c18..3113298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5beb=['Openchannel','Sms','Voice','Whatsapp','resolve','all','catch','lodash','./team.attributes','Queues','then','map','exports','teams','Fax','Mail'];(function(_0x5067ed,_0x46b64c){var _0x4cf3b0=function(_0x19108c){while(--_0x19108c){_0x5067ed['push'](_0x5067ed['shift']());}};_0x4cf3b0(++_0x46b64c);}(_0x5beb,0xa7));var _0xb5be=function(_0x58a52b,_0x5e2885){_0x58a52b=_0x58a52b-0x0;var _0xf6e084=_0x5beb[_0x58a52b];return _0xf6e084;};'use strict';var _=require(_0xb5be('0x0'));var attributes=require(_0xb5be('0x1'));function getQueuesByChannel(_0x651e6,_0x2a9a2d){var _0x2409a1='get'+_0x2a9a2d+_0xb5be('0x2');return _0x651e6[_0x2409a1]()[_0xb5be('0x3')](function(_0x4ac2e1){return _[_0xb5be('0x4')](_0x4ac2e1,function(_0x36d1d4){_0x36d1d4['setDataValue']('channel',_0x2a9a2d);return _0x36d1d4;});})['catch'](function(_0x5cdcc9){throw _0x5cdcc9;});}module[_0xb5be('0x5')]=function(_0x332227){return _0x332227['define']('Team',attributes,{'tableName':_0xb5be('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x21106b=this;var _0x25a73a=['Chat',_0xb5be('0x7'),_0xb5be('0x8'),_0xb5be('0x9'),_0xb5be('0xa'),_0xb5be('0xb'),_0xb5be('0xc')];return Promise[_0xb5be('0xd')]()[_0xb5be('0x3')](function(){var _0x3b8575=_['map'](_0x25a73a,function(_0x1a4405){return getQueuesByChannel(_0x21106b,_0x1a4405);});return Promise[_0xb5be('0xe')](_0x3b8575);})[_0xb5be('0xf')](function(_0x59a068){throw _0x59a068;});}}});};
\ No newline at end of file
+var _0x37f9=['resolve','all','lodash','./team.attributes','get','Queues','then','map','setDataValue','channel','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms'];(function(_0x3f4f9e,_0x47227e){var _0x3b2a1b=function(_0x20f640){while(--_0x20f640){_0x3f4f9e['push'](_0x3f4f9e['shift']());}};_0x3b2a1b(++_0x47227e);}(_0x37f9,0x142));var _0x937f=function(_0x4f1e6d,_0x8924de){_0x4f1e6d=_0x4f1e6d-0x0;var _0xdc791e=_0x37f9[_0x4f1e6d];return _0xdc791e;};'use strict';var _=require(_0x937f('0x0'));var attributes=require(_0x937f('0x1'));function getQueuesByChannel(_0x58168d,_0x3c4b71){var _0x46d091=_0x937f('0x2')+_0x3c4b71+_0x937f('0x3');return _0x58168d[_0x46d091]()[_0x937f('0x4')](function(_0x24d641){return _[_0x937f('0x5')](_0x24d641,function(_0x5c4717){_0x5c4717[_0x937f('0x6')](_0x937f('0x7'),_0x3c4b71);return _0x5c4717;});})[_0x937f('0x8')](function(_0x2b3024){throw _0x2b3024;});}module[_0x937f('0x9')]=function(_0x11f224){return _0x11f224[_0x937f('0xa')](_0x937f('0xb'),attributes,{'tableName':_0x937f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x115b24=this;var _0x754b3b=[_0x937f('0xd'),_0x937f('0xe'),_0x937f('0xf'),_0x937f('0x10'),_0x937f('0x11'),'Voice','Whatsapp'];return Promise[_0x937f('0x12')]()['then'](function(){var _0x3b68d0=_['map'](_0x754b3b,function(_0x35654f){return getQueuesByChannel(_0x115b24,_0x35654f);});return Promise[_0x937f('0x13')](_0x3b68d0);})[_0x937f('0x8')](function(_0x5049a7){throw _0x5049a7;});}}});};
\ No newline at end of file
index cbcc76e..3a22b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6193=['defaults','localhost','./team.socket','register','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0x6193,0x107));var _0x3619=function(_0x1e1685,_0x7f426e){_0x1e1685=_0x1e1685-0x0;var _0x4a663c=_0x6193[_0x1e1685];return _0x4a663c;};'use strict';var _=require('lodash');var util=require(_0x3619('0x0'));var moment=require(_0x3619('0x1'));var BPromise=require(_0x3619('0x2'));var rs=require(_0x3619('0x3'));var fs=require('fs');var Redis=require(_0x3619('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3619('0x5'));var logger=require('../../config/logger')(_0x3619('0x6'));var config=require(_0x3619('0x7'));var jayson=require(_0x3619('0x8'));var client=jayson[_0x3619('0x9')][_0x3619('0xa')]({'port':0x232a});config[_0x3619('0xb')]=_[_0x3619('0xc')](config[_0x3619('0xb')],{'host':_0x3619('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3619('0xe'))[_0x3619('0xf')](socket);function respondWithRpcPromise(_0xc3ec66,_0x4873f2,_0x250cfd){return new BPromise(function(_0x12f8e7,_0x1bce42){return client['request'](_0xc3ec66,_0x250cfd)['then'](function(_0x3de1a7){logger[_0x3619('0x10')](_0x3619('0x11'),_0x4873f2,_0x3619('0x12'));logger['debug'](_0x3619('0x13'),_0x4873f2,_0x3619('0x12'),JSON[_0x3619('0x14')](_0x3de1a7));if(_0x3de1a7[_0x3619('0x15')]){if(_0x3de1a7[_0x3619('0x15')]['code']===0x1f4){logger[_0x3619('0x15')](_0x3619('0x11'),_0x4873f2,_0x3de1a7[_0x3619('0x15')]['message']);return _0x1bce42(_0x3de1a7[_0x3619('0x15')]['message']);}logger[_0x3619('0x15')]('Team,\x20%s,\x20%s',_0x4873f2,_0x3de1a7[_0x3619('0x15')][_0x3619('0x16')]);return _0x12f8e7(_0x3de1a7[_0x3619('0x15')][_0x3619('0x16')]);}else{logger[_0x3619('0x10')]('Team,\x20%s,\x20%s',_0x4873f2,_0x3619('0x12'));_0x12f8e7(_0x3de1a7[_0x3619('0x17')]['message']);}})[_0x3619('0x18')](function(_0x15b004){logger['error']('Team,\x20%s,\x20%s',_0x4873f2,_0x15b004);_0x1bce42(_0x15b004);});});}
\ No newline at end of file
+var _0x0d49=['../../config/utils','../../config/logger','rpc','client','http','redis','socket.io-emitter','./team.socket','register','request','info','Team,\x20%s,\x20%s','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','bluebird','randomstring','../../mysqldb'];(function(_0x3e5dfe,_0x678723){var _0x5d9284=function(_0x14a765){while(--_0x14a765){_0x3e5dfe['push'](_0x3e5dfe['shift']());}};_0x5d9284(++_0x678723);}(_0x0d49,0x14d));var _0x90d4=function(_0x1f737c,_0x582c8c){_0x1f737c=_0x1f737c-0x0;var _0x2df3dc=_0x0d49[_0x1f737c];return _0x2df3dc;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x90d4('0x0'));var rs=require(_0x90d4('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x90d4('0x2'))['db'];var utils=require(_0x90d4('0x3'));var logger=require(_0x90d4('0x4'))(_0x90d4('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x90d4('0x6')][_0x90d4('0x7')]({'port':0x232a});config[_0x90d4('0x8')]=_['defaults'](config[_0x90d4('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x90d4('0x9'))(new Redis(config[_0x90d4('0x8')]));require(_0x90d4('0xa'))[_0x90d4('0xb')](socket);function respondWithRpcPromise(_0x49fa71,_0x31db30,_0x18886c){return new BPromise(function(_0x3db3ee,_0x3b16e4){return client[_0x90d4('0xc')](_0x49fa71,_0x18886c)['then'](function(_0x37a0bc){logger[_0x90d4('0xd')](_0x90d4('0xe'),_0x31db30,'request\x20sent');logger['debug'](_0x90d4('0xf'),_0x31db30,'request\x20sent',JSON[_0x90d4('0x10')](_0x37a0bc));if(_0x37a0bc[_0x90d4('0x11')]){if(_0x37a0bc['error']['code']===0x1f4){logger[_0x90d4('0x11')](_0x90d4('0xe'),_0x31db30,_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);return _0x3b16e4(_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);}logger[_0x90d4('0x11')]('Team,\x20%s,\x20%s',_0x31db30,_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);return _0x3db3ee(_0x37a0bc[_0x90d4('0x11')][_0x90d4('0x12')]);}else{logger['info'](_0x90d4('0xe'),_0x31db30,_0x90d4('0x13'));_0x3db3ee(_0x37a0bc[_0x90d4('0x14')][_0x90d4('0x12')]);}})['catch'](function(_0x414e9b){logger[_0x90d4('0x11')](_0x90d4('0xe'),_0x31db30,_0x414e9b);_0x3b16e4(_0x414e9b);});});}
\ No newline at end of file
index eec6c02..610246c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd552=['update','removeListener','length','team:','./team.events','save','remove'];(function(_0x15118e,_0x3aecc3){var _0x35a467=function(_0x2a0544){while(--_0x2a0544){_0x15118e['push'](_0x15118e['shift']());}};_0x35a467(++_0x3aecc3);}(_0xd552,0x185));var _0x2d55=function(_0x5ac5a1,_0x3484ad){_0x5ac5a1=_0x5ac5a1-0x0;var _0x1cb8a3=_0xd552[_0x5ac5a1];return _0x1cb8a3;};'use strict';var TeamEvents=require(_0x2d55('0x0'));var events=[_0x2d55('0x1'),_0x2d55('0x2'),_0x2d55('0x3')];function createListener(_0x2cfb91,_0x88f133){return function(_0x4a11ef){_0x88f133['emit'](_0x2cfb91,_0x4a11ef);};}function removeListener(_0x11c928,_0x77416){return function(){TeamEvents[_0x2d55('0x4')](_0x11c928,_0x77416);};}exports['register']=function(_0x1d585){for(var _0x5950f9=0x0,_0x282a69=events[_0x2d55('0x5')];_0x5950f9<_0x282a69;_0x5950f9++){var _0x31ac0a=events[_0x5950f9];var _0x331217=createListener(_0x2d55('0x6')+_0x31ac0a,_0x1d585);TeamEvents['on'](_0x31ac0a,_0x331217);}};
\ No newline at end of file
+var _0x8546=['emit','removeListener','register','length','team:','save','remove','update'];(function(_0x119de3,_0x53950c){var _0x5ec1f4=function(_0x3e0775){while(--_0x3e0775){_0x119de3['push'](_0x119de3['shift']());}};_0x5ec1f4(++_0x53950c);}(_0x8546,0x75));var _0x6854=function(_0x3bf17a,_0x155f1f){_0x3bf17a=_0x3bf17a-0x0;var _0x5302e3=_0x8546[_0x3bf17a];return _0x5302e3;};'use strict';var TeamEvents=require('./team.events');var events=[_0x6854('0x0'),_0x6854('0x1'),_0x6854('0x2')];function createListener(_0x175253,_0x25338f){return function(_0x2708ce){_0x25338f[_0x6854('0x3')](_0x175253,_0x2708ce);};}function removeListener(_0xa90d66,_0x117674){return function(){TeamEvents[_0x6854('0x4')](_0xa90d66,_0x117674);};}exports[_0x6854('0x5')]=function(_0x43765f){for(var _0x38ab8f=0x0,_0x149138=events[_0x6854('0x6')];_0x38ab8f<_0x149138;_0x38ab8f++){var _0x180f79=events[_0x38ab8f];var _0x126d83=createListener(_0x6854('0x7')+_0x180f79,_0x43765f);TeamEvents['on'](_0x180f79,_0x126d83);}};
\ No newline at end of file
index 8ce3c02..cf89702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b7=['sequelize','exports','INTEGER'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x41b7,0x1bc));var _0x741b=function(_0x575a16,_0x18eefa){_0x575a16=_0x575a16-0x0;var _0x298d59=_0x41b7[_0x575a16];return _0x298d59;};'use strict';var Sequelize=require(_0x741b('0x0'));module[_0x741b('0x1')]={'TeamId':{'type':Sequelize[_0x741b('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x741b('0x2')]}};
\ No newline at end of file
+var _0xed8a=['exports','INTEGER','sequelize'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xed8a,0xc5));var _0xaed8=function(_0x2fd880,_0x25d6a1){_0x2fd880=_0x2fd880-0x0;var _0xb43d0a=_0xed8a[_0x2fd880];return _0xb43d0a;};'use strict';var Sequelize=require(_0xaed8('0x0'));module[_0xaed8('0x1')]={'TeamId':{'type':Sequelize[_0xaed8('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xaed8('0x2')]}};
\ No newline at end of file
index 2fd44ba..d66f9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65d2=['moment','bluebird','path','rimraf','../../config/environment','exports','define','TeamVoicePrefix','lodash','util','api'];(function(_0x4dfe81,_0x428405){var _0x522d90=function(_0x5c6bb4){while(--_0x5c6bb4){_0x4dfe81['push'](_0x4dfe81['shift']());}};_0x522d90(++_0x428405);}(_0x65d2,0xb8));var _0x265d=function(_0x35d1ec,_0x2bb56e){_0x35d1ec=_0x35d1ec-0x0;var _0x186ac6=_0x65d2[_0x35d1ec];return _0x186ac6;};'use strict';var _=require(_0x265d('0x0'));var util=require(_0x265d('0x1'));var logger=require('../../config/logger')(_0x265d('0x2'));var moment=require(_0x265d('0x3'));var BPromise=require(_0x265d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x265d('0x5'));var rimraf=require(_0x265d('0x6'));var config=require(_0x265d('0x7'));var attributes=require('./teamVoicePrefix.attributes');module[_0x265d('0x8')]=function(_0xd49e24,_0x27dc2d){return _0xd49e24[_0x265d('0x9')](_0x265d('0xa'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5dd=['./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x112b7c,_0x14c678){var _0x28d51f=function(_0x2dc04f){while(--_0x2dc04f){_0x112b7c['push'](_0x112b7c['shift']());}};_0x28d51f(++_0x14c678);}(_0xa5dd,0x101));var _0xda5d=function(_0x3155a8,_0x3803ab){_0x3155a8=_0x3155a8-0x0;var _0x132313=_0xa5dd[_0x3155a8];return _0x132313;};'use strict';var _=require(_0xda5d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xda5d('0x1'));var moment=require(_0xda5d('0x2'));var BPromise=require(_0xda5d('0x3'));var rp=require(_0xda5d('0x4'));var fs=require('fs');var path=require(_0xda5d('0x5'));var rimraf=require('rimraf');var config=require(_0xda5d('0x6'));var attributes=require(_0xda5d('0x7'));module[_0xda5d('0x8')]=function(_0x5a437a,_0x555107){return _0x5a437a[_0xda5d('0x9')](_0xda5d('0xa'),attributes,{'tableName':_0xda5d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42d00d5..d107947 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x599a4b,_0x2c093f){var _0x10f25c=function(_0x56953c){while(--_0x56953c){_0x599a4b['push'](_0x599a4b['shift']());}};_0x10f25c(++_0x2c093f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x46efd7,_0x43f84d){_0x46efd7=_0x46efd7-0x0;var _0x5637e4=_0xcb91[_0x46efd7];return _0x5637e4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x55fd0e,_0x2d994b){var _0x4fe939=function(_0x108f83){while(--_0x108f83){_0x55fd0e['push'](_0x55fd0e['shift']());}};_0x4fe939(++_0x2d994b);}(_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 a63643b..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd28c=['exports','INTEGER'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xd28c,0x72));var _0xcd28=function(_0x4bbf33,_0xf1a0b4){_0x4bbf33=_0x4bbf33-0x0;var _0x2e42ff=_0xd28c[_0x4bbf33];return _0x2e42ff;};'use strict';var Sequelize=require('sequelize');module[_0xcd28('0x0')]={'penalty':{'type':Sequelize[_0xcd28('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b10b935..2352835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd28=['rimraf','./teamVoiceQueue.attributes','exports','define','util','../../config/logger','moment','request-promise','path'];(function(_0x27d000,_0x242f8c){var _0x5d4416=function(_0x3d5533){while(--_0x3d5533){_0x27d000['push'](_0x27d000['shift']());}};_0x5d4416(++_0x242f8c);}(_0xfd28,0x148));var _0x8fd2=function(_0x35485a,_0x91cdd4){_0x35485a=_0x35485a-0x0;var _0x5148e6=_0xfd28[_0x35485a];return _0x5148e6;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var logger=require(_0x8fd2('0x1'))('api');var moment=require(_0x8fd2('0x2'));var BPromise=require('bluebird');var rp=require(_0x8fd2('0x3'));var fs=require('fs');var path=require(_0x8fd2('0x4'));var rimraf=require(_0x8fd2('0x5'));var config=require('../../config/environment');var attributes=require(_0x8fd2('0x6'));module[_0x8fd2('0x7')]=function(_0x2ee87e,_0x36178a){return _0x2ee87e[_0x8fd2('0x8')]('TeamVoiceQueue',attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5cd8=['./teamVoiceQueue.attributes','exports','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x527407,_0xb23409){var _0x2f00fa=function(_0xd88ace){while(--_0xd88ace){_0x527407['push'](_0x527407['shift']());}};_0x2f00fa(++_0xb23409);}(_0x5cd8,0x1d2));var _0x85cd=function(_0x16f160,_0x8b0a98){_0x16f160=_0x16f160-0x0;var _0x3837e7=_0x5cd8[_0x16f160];return _0x3837e7;};'use strict';var _=require(_0x85cd('0x0'));var util=require('util');var logger=require(_0x85cd('0x1'))(_0x85cd('0x2'));var moment=require(_0x85cd('0x3'));var BPromise=require(_0x85cd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85cd('0x5'));var rimraf=require('rimraf');var config=require(_0x85cd('0x6'));var attributes=require(_0x85cd('0x7'));module[_0x85cd('0x8')]=function(_0x322e08,_0xcfad76){return _0x322e08['define'](_0x85cd('0x9'),attributes,{'tableName':_0x85cd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eca8128..d7a02e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ef=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis'];(function(_0x148dd3,_0x1c2a95){var _0x537b8d=function(_0x5c172f){while(--_0x5c172f){_0x148dd3['push'](_0x148dd3['shift']());}};_0x537b8d(++_0x1c2a95);}(_0x14ef,0xf8));var _0xf14e=function(_0xae01dd,_0xbd8a3c){_0xae01dd=_0xae01dd-0x0;var _0x8c26df=_0x14ef[_0xae01dd];return _0x8c26df;};'use strict';var _=require(_0xf14e('0x0'));var util=require(_0xf14e('0x1'));var moment=require('moment');var BPromise=require(_0xf14e('0x2'));var rs=require(_0xf14e('0x3'));var fs=require('fs');var Redis=require(_0xf14e('0x4'));var db=require(_0xf14e('0x5'))['db'];var utils=require(_0xf14e('0x6'));var logger=require(_0xf14e('0x7'))(_0xf14e('0x8'));var config=require(_0xf14e('0x9'));var jayson=require(_0xf14e('0xa'));var client=jayson[_0xf14e('0xb')][_0xf14e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1d192b,_0x37030b,_0x13e8e7){return new BPromise(function(_0x4fe16d,_0x17d408){return client[_0xf14e('0xd')](_0x1d192b,_0x13e8e7)[_0xf14e('0xe')](function(_0x23d942){logger[_0xf14e('0xf')](_0xf14e('0x10'),_0x37030b,_0xf14e('0x11'));logger['debug']('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x37030b,'request\x20sent',JSON[_0xf14e('0x12')](_0x23d942));if(_0x23d942[_0xf14e('0x13')]){if(_0x23d942[_0xf14e('0x13')][_0xf14e('0x14')]===0x1f4){logger[_0xf14e('0x13')](_0xf14e('0x10'),_0x37030b,_0x23d942[_0xf14e('0x13')][_0xf14e('0x15')]);return _0x17d408(_0x23d942[_0xf14e('0x13')]['message']);}logger['error'](_0xf14e('0x10'),_0x37030b,_0x23d942[_0xf14e('0x13')][_0xf14e('0x15')]);return _0x4fe16d(_0x23d942[_0xf14e('0x13')][_0xf14e('0x15')]);}else{logger[_0xf14e('0xf')](_0xf14e('0x10'),_0x37030b,'request\x20sent');_0x4fe16d(_0x23d942[_0xf14e('0x16')][_0xf14e('0x15')]);}})['catch'](function(_0x580f44){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x37030b,_0x580f44);_0x17d408(_0x580f44);});});}
\ No newline at end of file
+var _0xec25=['catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x3b8efd,_0x2d7db1){var _0x42c93a=function(_0x4a50fe){while(--_0x4a50fe){_0x3b8efd['push'](_0x3b8efd['shift']());}};_0x42c93a(++_0x2d7db1);}(_0xec25,0x1b9));var _0x5ec2=function(_0x170995,_0x294e09){_0x170995=_0x170995-0x0;var _0x1c117e=_0xec25[_0x170995];return _0x1c117e;};'use strict';var _=require('lodash');var util=require(_0x5ec2('0x0'));var moment=require('moment');var BPromise=require(_0x5ec2('0x1'));var rs=require(_0x5ec2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ec2('0x3'))['db'];var utils=require(_0x5ec2('0x4'));var logger=require(_0x5ec2('0x5'))(_0x5ec2('0x6'));var config=require('../../config/environment');var jayson=require(_0x5ec2('0x7'));var client=jayson[_0x5ec2('0x8')][_0x5ec2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x10cc1d,_0x2e4bae,_0x48d0a1){return new BPromise(function(_0x5c7158,_0x1a8e63){return client[_0x5ec2('0xa')](_0x10cc1d,_0x48d0a1)['then'](function(_0x53193e){logger['info'](_0x5ec2('0xb'),_0x2e4bae,_0x5ec2('0xc'));logger[_0x5ec2('0xd')](_0x5ec2('0xe'),_0x2e4bae,'request\x20sent',JSON[_0x5ec2('0xf')](_0x53193e));if(_0x53193e[_0x5ec2('0x10')]){if(_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x11')]===0x1f4){logger[_0x5ec2('0x10')](_0x5ec2('0xb'),_0x2e4bae,_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x12')]);return _0x1a8e63(_0x53193e['error']['message']);}logger[_0x5ec2('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2e4bae,_0x53193e[_0x5ec2('0x10')][_0x5ec2('0x12')]);return _0x5c7158(_0x53193e[_0x5ec2('0x10')]['message']);}else{logger[_0x5ec2('0x13')](_0x5ec2('0xb'),_0x2e4bae,'request\x20sent');_0x5c7158(_0x53193e[_0x5ec2('0x14')][_0x5ec2('0x12')]);}})[_0x5ec2('0x15')](function(_0x24c496){logger['error'](_0x5ec2('0xb'),_0x2e4bae,_0x24c496);_0x1a8e63(_0x24c496);});});}
\ No newline at end of file
index 126f90a..d2cb095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a43=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','get','isAuthenticated','index','/:id','post','create','put'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5a43,0xf1));var _0x35a4=function(_0x109b0e,_0x2eb138){_0x109b0e=_0x109b0e-0x0;var _0xf6e8e9=_0x5a43[_0x109b0e];return _0xf6e8e9;};'use strict';var multer=require(_0x35a4('0x0'));var util=require(_0x35a4('0x1'));var path=require(_0x35a4('0x2'));var timeout=require(_0x35a4('0x3'));var express=require(_0x35a4('0x4'));var router=express[_0x35a4('0x5')]();var fs_extra=require(_0x35a4('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./template.controller');router[_0x35a4('0x7')]('/',auth[_0x35a4('0x8')](),controller[_0x35a4('0x9')]);router[_0x35a4('0x7')](_0x35a4('0xa'),auth[_0x35a4('0x8')](),controller['show']);router[_0x35a4('0xb')]('/',auth[_0x35a4('0x8')](),controller[_0x35a4('0xc')]);router[_0x35a4('0xd')](_0x35a4('0xa'),auth[_0x35a4('0x8')](),controller['update']);router['delete']('/:id',auth[_0x35a4('0x8')](),controller['destroy']);module[_0x35a4('0xe')]=router;
\ No newline at end of file
+var _0x8b52=['../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','create','put','update','destroy','exports','multer','util','path','express','Router'];(function(_0x399849,_0x3b630d){var _0xfbb04=function(_0x4fea04){while(--_0x4fea04){_0x399849['push'](_0x399849['shift']());}};_0xfbb04(++_0x3b630d);}(_0x8b52,0x151));var _0x28b5=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8b52[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0x28b5('0x0'));var util=require(_0x28b5('0x1'));var path=require(_0x28b5('0x2'));var timeout=require('connect-timeout');var express=require(_0x28b5('0x3'));var router=express[_0x28b5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x28b5('0x5'));var interaction=require(_0x28b5('0x6'));var config=require(_0x28b5('0x7'));var controller=require(_0x28b5('0x8'));router[_0x28b5('0x9')]('/',auth[_0x28b5('0xa')](),controller[_0x28b5('0xb')]);router[_0x28b5('0x9')](_0x28b5('0xc'),auth['isAuthenticated'](),controller[_0x28b5('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x28b5('0xe')]);router[_0x28b5('0xf')]('/:id',auth[_0x28b5('0xa')](),controller[_0x28b5('0x10')]);router['delete'](_0x28b5('0xc'),auth[_0x28b5('0xa')](),controller[_0x28b5('0x11')]);module[_0x28b5('0x12')]=router;
\ No newline at end of file
index efa5da8..3f2f21a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b3=['TEXT','sequelize','exports','STRING'];(function(_0x533110,_0x20937f){var _0xc3c866=function(_0x2d4a68){while(--_0x2d4a68){_0x533110['push'](_0x533110['shift']());}};_0xc3c866(++_0x20937f);}(_0x24b3,0x1ed));var _0x324b=function(_0x8712d2,_0x124e1c){_0x8712d2=_0x8712d2-0x0;var _0x6b0bff=_0x24b3[_0x8712d2];return _0x6b0bff;};'use strict';var Sequelize=require(_0x324b('0x0'));module[_0x324b('0x1')]={'name':{'type':Sequelize[_0x324b('0x2')]},'description':{'type':Sequelize[_0x324b('0x2')]},'html':{'type':Sequelize[_0x324b('0x3')]}};
\ No newline at end of file
+var _0xced2=['TEXT','exports','STRING'];(function(_0x3a5f4f,_0x272383){var _0x59254d=function(_0x1c6a48){while(--_0x1c6a48){_0x3a5f4f['push'](_0x3a5f4f['shift']());}};_0x59254d(++_0x272383);}(_0xced2,0xee));var _0x2ced=function(_0x5204f5,_0x3961a2){_0x5204f5=_0x5204f5-0x0;var _0x4c55ee=_0xced2[_0x5204f5];return _0x4c55ee;};'use strict';var Sequelize=require('sequelize');module[_0x2ced('0x0')]={'name':{'type':Sequelize[_0x2ced('0x1')]},'description':{'type':Sequelize[_0x2ced('0x1')]},'html':{'type':Sequelize[_0x2ced('0x2')]}};
\ No newline at end of file
index 3319eb2..bab5531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8db=['undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Template','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','role','Templates','UserProfileSection','userProfileId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x5c5a9b,_0x3b9a8c){var _0x5a0e85=function(_0x1c22fe){while(--_0x1c22fe){_0x5c5a9b['push'](_0x5c5a9b['shift']());}};_0x5a0e85(++_0x3b9a8c);}(_0xf8db,0x8d));var _0xbf8d=function(_0xa7ee44,_0x389bd9){_0xa7ee44=_0xa7ee44-0x0;var _0x4a8ef2=_0xf8db[_0xa7ee44];return _0x4a8ef2;};'use strict';var emlformat=require(_0xbf8d('0x0'));var rimraf=require(_0xbf8d('0x1'));var zipdir=require(_0xbf8d('0x2'));var jsonpatch=require(_0xbf8d('0x3'));var rp=require(_0xbf8d('0x4'));var moment=require(_0xbf8d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xbf8d('0x6'));var util=require(_0xbf8d('0x7'));var path=require(_0xbf8d('0x8'));var sox=require(_0xbf8d('0x9'));var csv=require(_0xbf8d('0xa'));var ejs=require(_0xbf8d('0xb'));var fs=require('fs');var fs_extra=require(_0xbf8d('0xc'));var _=require(_0xbf8d('0xd'));var squel=require(_0xbf8d('0xe'));var crypto=require(_0xbf8d('0xf'));var jsforce=require(_0xbf8d('0x10'));var deskjs=require(_0xbf8d('0x11'));var toCsv=require(_0xbf8d('0xa'));var querystring=require(_0xbf8d('0x12'));var Papa=require(_0xbf8d('0x13'));var Redis=require(_0xbf8d('0x14'));var authService=require(_0xbf8d('0x15'));var qs=require(_0xbf8d('0x16'));var as=require(_0xbf8d('0x17'));var hardwareService=require(_0xbf8d('0x18'));var logger=require(_0xbf8d('0x19'))(_0xbf8d('0x1a'));var utils=require(_0xbf8d('0x1b'));var config=require(_0xbf8d('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0xbf8d('0x1d'))['db'];function respondWithStatusCode(_0xe83ff7,_0x43c385){_0x43c385=_0x43c385||0xcc;return function(_0x22aa2f){if(_0x22aa2f){return _0xe83ff7[_0xbf8d('0x1e')](_0x43c385);}return _0xe83ff7[_0xbf8d('0x1f')](_0x43c385)[_0xbf8d('0x20')]();};}function respondWithResult(_0x1bad54,_0x42e021){_0x42e021=_0x42e021||0xc8;return function(_0x24184d){if(_0x24184d){return _0x1bad54[_0xbf8d('0x1f')](_0x42e021)[_0xbf8d('0x21')](_0x24184d);}};}function respondWithFilteredResult(_0x95c3e7,_0x3f83b1){return function(_0x59ff94){if(_0x59ff94){var _0x5461b7=typeof _0x3f83b1[_0xbf8d('0x22')]===_0xbf8d('0x23')&&typeof _0x3f83b1[_0xbf8d('0x24')]===_0xbf8d('0x23');var _0x528559=_0x59ff94[_0xbf8d('0x25')];var _0x1945dd=_0x5461b7?0x0:_0x3f83b1['offset'];var _0x2b6b06=_0x5461b7?_0x59ff94[_0xbf8d('0x25')]:_0x3f83b1[_0xbf8d('0x22')]+_0x3f83b1['limit'];var _0x3f1132;if(_0x2b6b06>=_0x528559){_0x2b6b06=_0x528559;_0x3f1132=0xc8;}else{_0x3f1132=0xce;}_0x95c3e7[_0xbf8d('0x1f')](_0x3f1132);return _0x95c3e7[_0xbf8d('0x26')](_0xbf8d('0x27'),_0x1945dd+'-'+_0x2b6b06+'/'+_0x528559)[_0xbf8d('0x21')](_0x59ff94);}return null;};}function patchUpdates(_0x28cb79){return function(_0x1cad51){try{jsonpatch[_0xbf8d('0x28')](_0x1cad51,_0x28cb79,!![]);}catch(_0x5cf7ca){return BPromise[_0xbf8d('0x29')](_0x5cf7ca);}return _0x1cad51['save']();};}function saveUpdates(_0x476a9f,_0x23a874){return function(_0x349a4f){if(_0x349a4f){return _0x349a4f[_0xbf8d('0x2a')](_0x476a9f)[_0xbf8d('0x2b')](function(_0x3e46ae){return _0x3e46ae;});}return null;};}function removeEntity(_0x26a608,_0x16f54b){return function(_0x3e8aef){if(_0x3e8aef){return _0x3e8aef[_0xbf8d('0x2c')]()[_0xbf8d('0x2b')](function(){var _0x253e92=_0x3e8aef[_0xbf8d('0x2d')]({'plain':!![]});var _0x1f90df='Templates';return db[_0xbf8d('0x2e')][_0xbf8d('0x2c')]({'where':{'type':_0x1f90df,'resourceId':_0x253e92['id']}})['then'](function(){return _0x3e8aef;});})[_0xbf8d('0x2b')](function(){_0x26a608['status'](0xcc)[_0xbf8d('0x20')]();});}};}function handleEntityNotFound(_0x253c1c,_0x1ac99f){return function(_0x59bf30){if(!_0x59bf30){_0x253c1c[_0xbf8d('0x1e')](0x194);}return _0x59bf30;};}function handleError(_0x2e2db6,_0xcfabf5){_0xcfabf5=_0xcfabf5||0x1f4;return function(_0x5ab767){logger[_0xbf8d('0x2f')](_0x5ab767[_0xbf8d('0x30')]);if(_0x5ab767[_0xbf8d('0x31')]){delete _0x5ab767[_0xbf8d('0x31')];}_0x2e2db6['status'](_0xcfabf5)[_0xbf8d('0x32')](_0x5ab767);};}exports[_0xbf8d('0x33')]=function(_0x1d1a43,_0x13673e){var _0x1ffc54={},_0x227d53={},_0x2a78d9={'count':0x0,'rows':[]};var _0x4ea8dc=_[_0xbf8d('0x34')](db[_0xbf8d('0x35')][_0xbf8d('0x36')],function(_0x2f25d1){return{'name':_0x2f25d1['fieldName'],'type':_0x2f25d1[_0xbf8d('0x37')][_0xbf8d('0x38')]};});_0x227d53[_0xbf8d('0x39')]=_[_0xbf8d('0x34')](_0x4ea8dc,_0xbf8d('0x31'));_0x227d53[_0xbf8d('0x3a')]=_['keys'](_0x1d1a43[_0xbf8d('0x3a')]);_0x227d53[_0xbf8d('0x3b')]=_[_0xbf8d('0x3c')](_0x227d53[_0xbf8d('0x39')],_0x227d53[_0xbf8d('0x3a')]);_0x1ffc54[_0xbf8d('0x3d')]=_[_0xbf8d('0x3c')](_0x227d53[_0xbf8d('0x39')],qs[_0xbf8d('0x3e')](_0x1d1a43[_0xbf8d('0x3a')][_0xbf8d('0x3e')]));_0x1ffc54[_0xbf8d('0x3d')]=_0x1ffc54[_0xbf8d('0x3d')][_0xbf8d('0x3f')]?_0x1ffc54[_0xbf8d('0x3d')]:_0x227d53['model'];if(!_0x1d1a43[_0xbf8d('0x3a')]['hasOwnProperty'](_0xbf8d('0x40'))){_0x1ffc54['limit']=qs[_0xbf8d('0x24')](_0x1d1a43[_0xbf8d('0x3a')]['limit']);_0x1ffc54[_0xbf8d('0x22')]=qs['offset'](_0x1d1a43[_0xbf8d('0x3a')][_0xbf8d('0x22')]);}_0x1ffc54[_0xbf8d('0x41')]=qs[_0xbf8d('0x42')](_0x1d1a43['query'][_0xbf8d('0x42')]);_0x1ffc54[_0xbf8d('0x43')]=qs['filters'](_[_0xbf8d('0x44')](_0x1d1a43[_0xbf8d('0x3a')],_0x227d53[_0xbf8d('0x3b')]),_0x4ea8dc);if(_0x1d1a43[_0xbf8d('0x3a')][_0xbf8d('0x45')]){_0x1ffc54[_0xbf8d('0x43')]=_[_0xbf8d('0x46')](_0x1ffc54[_0xbf8d('0x43')],{'$or':_[_0xbf8d('0x34')](_0x4ea8dc,function(_0x58c4d7){if(_0x58c4d7['type']!==_0xbf8d('0x47')){var _0x1b46c3={};_0x1b46c3[_0x58c4d7[_0xbf8d('0x31')]]={'$like':'%'+_0x1d1a43[_0xbf8d('0x3a')][_0xbf8d('0x45')]+'%'};return _0x1b46c3;}})});}_0x1ffc54=_[_0xbf8d('0x46')]({},_0x1ffc54,_0x1d1a43[_0xbf8d('0x48')]);var _0xab7d3={'where':_0x1ffc54[_0xbf8d('0x43')]};return db[_0xbf8d('0x35')]['count'](_0xab7d3)[_0xbf8d('0x2b')](function(_0x48baba){_0x2a78d9[_0xbf8d('0x25')]=_0x48baba;if(_0x1d1a43[_0xbf8d('0x3a')][_0xbf8d('0x49')]){_0x1ffc54['include']=[{'all':!![]}];}return db[_0xbf8d('0x35')][_0xbf8d('0x4a')](_0x1ffc54);})[_0xbf8d('0x2b')](function(_0x2163c4){_0x2a78d9[_0xbf8d('0x4b')]=_0x2163c4;return _0x2a78d9;})[_0xbf8d('0x2b')](respondWithFilteredResult(_0x13673e,_0x1ffc54))[_0xbf8d('0x4c')](handleError(_0x13673e,null));};exports[_0xbf8d('0x4d')]=function(_0x301dd4,_0x2a53c9){var _0x3b495a={'raw':!![],'where':{'id':_0x301dd4[_0xbf8d('0x4e')]['id']}},_0x12b4d3={};_0x12b4d3['model']=_['keys'](db[_0xbf8d('0x35')]['rawAttributes']);_0x12b4d3[_0xbf8d('0x3a')]=_['keys'](_0x301dd4['query']);_0x12b4d3[_0xbf8d('0x3b')]=_[_0xbf8d('0x3c')](_0x12b4d3[_0xbf8d('0x39')],_0x12b4d3[_0xbf8d('0x3a')]);_0x3b495a['attributes']=_['intersection'](_0x12b4d3['model'],qs[_0xbf8d('0x3e')](_0x301dd4['query'][_0xbf8d('0x3e')]));_0x3b495a[_0xbf8d('0x3d')]=_0x3b495a[_0xbf8d('0x3d')][_0xbf8d('0x3f')]?_0x3b495a[_0xbf8d('0x3d')]:_0x12b4d3[_0xbf8d('0x39')];if(_0x301dd4[_0xbf8d('0x3a')][_0xbf8d('0x49')]){_0x3b495a[_0xbf8d('0x4f')]=[{'all':!![]}];}_0x3b495a=_['merge']({},_0x3b495a,_0x301dd4[_0xbf8d('0x48')]);return db['Template'][_0xbf8d('0x50')](_0x3b495a)[_0xbf8d('0x2b')](handleEntityNotFound(_0x2a53c9,null))['then'](respondWithResult(_0x2a53c9,null))['catch'](handleError(_0x2a53c9,null));};exports[_0xbf8d('0x51')]=function(_0xb32e75,_0x3abf55){return db[_0xbf8d('0x35')]['create'](_0xb32e75[_0xbf8d('0x52')],{})[_0xbf8d('0x2b')](function(_0x317aa8){var _0x21ff77=_0xb32e75[_0xbf8d('0x53')][_0xbf8d('0x2d')]({'plain':!![]});if(!_0x21ff77)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21ff77[_0xbf8d('0x54')]===_0xbf8d('0x53')){var _0x5a9316=_0x317aa8[_0xbf8d('0x2d')]({'plain':!![]});var _0x1f962b=_0xbf8d('0x55');return db[_0xbf8d('0x56')][_0xbf8d('0x50')]({'where':{'name':_0x1f962b,'userProfileId':_0x21ff77[_0xbf8d('0x57')]},'raw':!![]})['then'](function(_0x3ba517){if(_0x3ba517&&_0x3ba517['autoAssociation']===0x0){return db['UserProfileResource'][_0xbf8d('0x51')]({'name':_0x5a9316[_0xbf8d('0x31')],'resourceId':_0x5a9316['id'],'type':_0x3ba517[_0xbf8d('0x31')],'sectionId':_0x3ba517['id']},{})[_0xbf8d('0x2b')](function(){return _0x317aa8;});}else{return _0x317aa8;}})[_0xbf8d('0x4c')](function(_0x1150b5){logger[_0xbf8d('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1150b5);throw _0x1150b5;});}return _0x317aa8;})[_0xbf8d('0x2b')](respondWithResult(_0x3abf55,0xc9))[_0xbf8d('0x4c')](handleError(_0x3abf55,null));};exports['update']=function(_0x386ad7,_0x4890a5){if(_0x386ad7[_0xbf8d('0x52')]['id']){delete _0x386ad7[_0xbf8d('0x52')]['id'];}return db[_0xbf8d('0x35')]['find']({'where':{'id':_0x386ad7[_0xbf8d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4890a5,null))[_0xbf8d('0x2b')](saveUpdates(_0x386ad7[_0xbf8d('0x52')],null))[_0xbf8d('0x2b')](respondWithResult(_0x4890a5,null))[_0xbf8d('0x4c')](handleError(_0x4890a5,null));};exports['destroy']=function(_0x2fe450,_0x4501df){return db[_0xbf8d('0x35')][_0xbf8d('0x50')]({'where':{'id':_0x2fe450[_0xbf8d('0x4e')]['id']}})[_0xbf8d('0x2b')](handleEntityNotFound(_0x4501df,null))[_0xbf8d('0x2b')](removeEntity(_0x4501df,null))[_0xbf8d('0x4c')](handleError(_0x4501df,null));};
\ No newline at end of file
+var _0x0617=['stack','name','send','index','map','Template','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','end','sendStatus','error'];(function(_0x1553e1,_0x3b4f05){var _0x21d5a8=function(_0x35957d){while(--_0x35957d){_0x1553e1['push'](_0x1553e1['shift']());}};_0x21d5a8(++_0x3b4f05);}(_0x0617,0x1f4));var _0x7061=function(_0x45d0ee,_0x486987){_0x45d0ee=_0x45d0ee-0x0;var _0xa54d93=_0x0617[_0x45d0ee];return _0xa54d93;};'use strict';var emlformat=require(_0x7061('0x0'));var rimraf=require(_0x7061('0x1'));var zipdir=require(_0x7061('0x2'));var jsonpatch=require(_0x7061('0x3'));var rp=require(_0x7061('0x4'));var moment=require(_0x7061('0x5'));var BPromise=require(_0x7061('0x6'));var Mustache=require(_0x7061('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7061('0x8'));var ejs=require(_0x7061('0x9'));var fs=require('fs');var fs_extra=require(_0x7061('0xa'));var _=require(_0x7061('0xb'));var squel=require('squel');var crypto=require(_0x7061('0xc'));var jsforce=require(_0x7061('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7061('0x8'));var querystring=require('querystring');var Papa=require(_0x7061('0xe'));var Redis=require(_0x7061('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7061('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7061('0x11'))(_0x7061('0x12'));var utils=require('../../config/utils');var config=require(_0x7061('0x13'));var licenseUtil=require(_0x7061('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40847b,_0x4a4ac5){_0x4a4ac5=_0x4a4ac5||0xcc;return function(_0x9d47f){if(_0x9d47f){return _0x40847b['sendStatus'](_0x4a4ac5);}return _0x40847b[_0x7061('0x15')](_0x4a4ac5)['end']();};}function respondWithResult(_0x4a7fa9,_0x16aa3d){_0x16aa3d=_0x16aa3d||0xc8;return function(_0xa226a5){if(_0xa226a5){return _0x4a7fa9[_0x7061('0x15')](_0x16aa3d)[_0x7061('0x16')](_0xa226a5);}};}function respondWithFilteredResult(_0x45d748,_0x150ceb){return function(_0x59f604){if(_0x59f604){var _0x3b5e50=typeof _0x150ceb[_0x7061('0x17')]===_0x7061('0x18')&&typeof _0x150ceb[_0x7061('0x19')]==='undefined';var _0x45f66f=_0x59f604['count'];var _0xd312c3=_0x3b5e50?0x0:_0x150ceb[_0x7061('0x17')];var _0x4722a1=_0x3b5e50?_0x59f604[_0x7061('0x1a')]:_0x150ceb['offset']+_0x150ceb[_0x7061('0x19')];var _0x256e00;if(_0x4722a1>=_0x45f66f){_0x4722a1=_0x45f66f;_0x256e00=0xc8;}else{_0x256e00=0xce;}_0x45d748[_0x7061('0x15')](_0x256e00);return _0x45d748[_0x7061('0x1b')](_0x7061('0x1c'),_0xd312c3+'-'+_0x4722a1+'/'+_0x45f66f)[_0x7061('0x16')](_0x59f604);}return null;};}function patchUpdates(_0x5e3c45){return function(_0x2960bd){try{jsonpatch['apply'](_0x2960bd,_0x5e3c45,!![]);}catch(_0x10d110){return BPromise[_0x7061('0x1d')](_0x10d110);}return _0x2960bd[_0x7061('0x1e')]();};}function saveUpdates(_0x47caed,_0x42561d){return function(_0x12bf54){if(_0x12bf54){return _0x12bf54[_0x7061('0x1f')](_0x47caed)['then'](function(_0x15f1ec){return _0x15f1ec;});}return null;};}function removeEntity(_0xd3ca49,_0x382535){return function(_0xa60908){if(_0xa60908){return _0xa60908['destroy']()[_0x7061('0x20')](function(){var _0x42419e=_0xa60908[_0x7061('0x21')]({'plain':!![]});var _0x5d2dc9='Templates';return db[_0x7061('0x22')][_0x7061('0x23')]({'where':{'type':_0x5d2dc9,'resourceId':_0x42419e['id']}})[_0x7061('0x20')](function(){return _0xa60908;});})['then'](function(){_0xd3ca49['status'](0xcc)[_0x7061('0x24')]();});}};}function handleEntityNotFound(_0x1355e9,_0x247bc5){return function(_0x41cb9b){if(!_0x41cb9b){_0x1355e9[_0x7061('0x25')](0x194);}return _0x41cb9b;};}function handleError(_0x2c94b0,_0x514970){_0x514970=_0x514970||0x1f4;return function(_0x598a1c){logger[_0x7061('0x26')](_0x598a1c[_0x7061('0x27')]);if(_0x598a1c[_0x7061('0x28')]){delete _0x598a1c['name'];}_0x2c94b0[_0x7061('0x15')](_0x514970)[_0x7061('0x29')](_0x598a1c);};}exports[_0x7061('0x2a')]=function(_0x5c132f,_0x3fbfd4){var _0x2f74e6={},_0x5c2f37={},_0x1a24ba={'count':0x0,'rows':[]};var _0xad4c8c=_[_0x7061('0x2b')](db[_0x7061('0x2c')]['rawAttributes'],function(_0x3931ad){return{'name':_0x3931ad[_0x7061('0x2d')],'type':_0x3931ad[_0x7061('0x2e')][_0x7061('0x2f')]};});_0x5c2f37[_0x7061('0x30')]=_['map'](_0xad4c8c,'name');_0x5c2f37[_0x7061('0x31')]=_['keys'](_0x5c132f[_0x7061('0x31')]);_0x5c2f37[_0x7061('0x32')]=_[_0x7061('0x33')](_0x5c2f37[_0x7061('0x30')],_0x5c2f37['query']);_0x2f74e6[_0x7061('0x34')]=_['intersection'](_0x5c2f37[_0x7061('0x30')],qs[_0x7061('0x35')](_0x5c132f[_0x7061('0x31')][_0x7061('0x35')]));_0x2f74e6[_0x7061('0x34')]=_0x2f74e6[_0x7061('0x34')]['length']?_0x2f74e6['attributes']:_0x5c2f37[_0x7061('0x30')];if(!_0x5c132f[_0x7061('0x31')]['hasOwnProperty'](_0x7061('0x36'))){_0x2f74e6[_0x7061('0x19')]=qs[_0x7061('0x19')](_0x5c132f[_0x7061('0x31')][_0x7061('0x19')]);_0x2f74e6[_0x7061('0x17')]=qs[_0x7061('0x17')](_0x5c132f[_0x7061('0x31')]['offset']);}_0x2f74e6['order']=qs[_0x7061('0x37')](_0x5c132f[_0x7061('0x31')][_0x7061('0x37')]);_0x2f74e6[_0x7061('0x38')]=qs[_0x7061('0x32')](_['pick'](_0x5c132f['query'],_0x5c2f37['filters']),_0xad4c8c);if(_0x5c132f[_0x7061('0x31')][_0x7061('0x39')]){_0x2f74e6['where']=_[_0x7061('0x3a')](_0x2f74e6['where'],{'$or':_[_0x7061('0x2b')](_0xad4c8c,function(_0x7e94e5){if(_0x7e94e5[_0x7061('0x2e')]!==_0x7061('0x3b')){var _0xc34278={};_0xc34278[_0x7e94e5[_0x7061('0x28')]]={'$like':'%'+_0x5c132f[_0x7061('0x31')][_0x7061('0x39')]+'%'};return _0xc34278;}})});}_0x2f74e6=_[_0x7061('0x3a')]({},_0x2f74e6,_0x5c132f[_0x7061('0x3c')]);var _0x17fef3={'where':_0x2f74e6[_0x7061('0x38')]};return db[_0x7061('0x2c')][_0x7061('0x1a')](_0x17fef3)[_0x7061('0x20')](function(_0x473e5f){_0x1a24ba[_0x7061('0x1a')]=_0x473e5f;if(_0x5c132f[_0x7061('0x31')][_0x7061('0x3d')]){_0x2f74e6[_0x7061('0x3e')]=[{'all':!![]}];}return db[_0x7061('0x2c')][_0x7061('0x3f')](_0x2f74e6);})['then'](function(_0x2d296a){_0x1a24ba[_0x7061('0x40')]=_0x2d296a;return _0x1a24ba;})[_0x7061('0x20')](respondWithFilteredResult(_0x3fbfd4,_0x2f74e6))[_0x7061('0x41')](handleError(_0x3fbfd4,null));};exports[_0x7061('0x42')]=function(_0x55eb3d,_0x4ad7f3){var _0x39f48a={'raw':!![],'where':{'id':_0x55eb3d[_0x7061('0x43')]['id']}},_0x1766d3={};_0x1766d3[_0x7061('0x30')]=_[_0x7061('0x44')](db[_0x7061('0x2c')]['rawAttributes']);_0x1766d3[_0x7061('0x31')]=_[_0x7061('0x44')](_0x55eb3d['query']);_0x1766d3[_0x7061('0x32')]=_[_0x7061('0x33')](_0x1766d3[_0x7061('0x30')],_0x1766d3[_0x7061('0x31')]);_0x39f48a[_0x7061('0x34')]=_[_0x7061('0x33')](_0x1766d3[_0x7061('0x30')],qs[_0x7061('0x35')](_0x55eb3d[_0x7061('0x31')][_0x7061('0x35')]));_0x39f48a[_0x7061('0x34')]=_0x39f48a[_0x7061('0x34')]['length']?_0x39f48a[_0x7061('0x34')]:_0x1766d3[_0x7061('0x30')];if(_0x55eb3d['query'][_0x7061('0x3d')]){_0x39f48a[_0x7061('0x3e')]=[{'all':!![]}];}_0x39f48a=_[_0x7061('0x3a')]({},_0x39f48a,_0x55eb3d[_0x7061('0x3c')]);return db[_0x7061('0x2c')][_0x7061('0x45')](_0x39f48a)[_0x7061('0x20')](handleEntityNotFound(_0x4ad7f3,null))[_0x7061('0x20')](respondWithResult(_0x4ad7f3,null))[_0x7061('0x41')](handleError(_0x4ad7f3,null));};exports[_0x7061('0x46')]=function(_0x86eb4b,_0x5785c5){return db[_0x7061('0x2c')]['create'](_0x86eb4b[_0x7061('0x47')],{})[_0x7061('0x20')](function(_0x22748f){var _0x11315b=_0x86eb4b['user'][_0x7061('0x21')]({'plain':!![]});if(!_0x11315b)throw new Error(_0x7061('0x48'));if(_0x11315b[_0x7061('0x49')]==='user'){var _0x5dea06=_0x22748f[_0x7061('0x21')]({'plain':!![]});var _0x5cc00e=_0x7061('0x4a');return db[_0x7061('0x4b')]['find']({'where':{'name':_0x5cc00e,'userProfileId':_0x11315b['userProfileId']},'raw':!![]})[_0x7061('0x20')](function(_0x3fa7d9){if(_0x3fa7d9&&_0x3fa7d9['autoAssociation']===0x0){return db[_0x7061('0x22')][_0x7061('0x46')]({'name':_0x5dea06[_0x7061('0x28')],'resourceId':_0x5dea06['id'],'type':_0x3fa7d9['name'],'sectionId':_0x3fa7d9['id']},{})['then'](function(){return _0x22748f;});}else{return _0x22748f;}})[_0x7061('0x41')](function(_0x4afa12){logger['error'](_0x7061('0x4c'),_0x4afa12);throw _0x4afa12;});}return _0x22748f;})[_0x7061('0x20')](respondWithResult(_0x5785c5,0xc9))[_0x7061('0x41')](handleError(_0x5785c5,null));};exports['update']=function(_0x45ff85,_0x12164f){if(_0x45ff85[_0x7061('0x47')]['id']){delete _0x45ff85['body']['id'];}return db[_0x7061('0x2c')]['find']({'where':{'id':_0x45ff85[_0x7061('0x43')]['id']}})[_0x7061('0x20')](handleEntityNotFound(_0x12164f,null))[_0x7061('0x20')](saveUpdates(_0x45ff85['body'],null))['then'](respondWithResult(_0x12164f,null))[_0x7061('0x41')](handleError(_0x12164f,null));};exports[_0x7061('0x23')]=function(_0xfe3782,_0x270e6d){return db[_0x7061('0x2c')][_0x7061('0x45')]({'where':{'id':_0xfe3782[_0x7061('0x43')]['id']}})['then'](handleEntityNotFound(_0x270e6d,null))[_0x7061('0x20')](removeEntity(_0x270e6d,null))[_0x7061('0x41')](handleError(_0x270e6d,null));};
\ No newline at end of file
index 2e2eef6..5344bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe433=['tools_templates','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x4fdd37,_0x6ddb6){var _0x46d6d1=function(_0x48ad38){while(--_0x48ad38){_0x4fdd37['push'](_0x4fdd37['shift']());}};_0x46d6d1(++_0x6ddb6);}(_0xe433,0xbf));var _0x3e43=function(_0x19905f,_0x318147){_0x19905f=_0x19905f-0x0;var _0x42c774=_0xe433[_0x19905f];return _0x42c774;};'use strict';var _=require(_0x3e43('0x0'));var util=require('util');var logger=require(_0x3e43('0x1'))('api');var moment=require('moment');var BPromise=require(_0x3e43('0x2'));var rp=require(_0x3e43('0x3'));var fs=require('fs');var path=require(_0x3e43('0x4'));var rimraf=require(_0x3e43('0x5'));var config=require(_0x3e43('0x6'));var attributes=require('./template.attributes');module[_0x3e43('0x7')]=function(_0x41d2e5,_0x362c87){return _0x41d2e5[_0x3e43('0x8')]('Template',attributes,{'tableName':_0x3e43('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8b5c=['moment','request-promise','path','./template.attributes','exports','define','tools_templates','lodash','../../config/logger','api'];(function(_0x5bf184,_0x6921e9){var _0x4f4e5c=function(_0x2b526d){while(--_0x2b526d){_0x5bf184['push'](_0x5bf184['shift']());}};_0x4f4e5c(++_0x6921e9);}(_0x8b5c,0xcf));var _0xc8b5=function(_0x5435b9,_0x57b534){_0x5435b9=_0x5435b9-0x0;var _0xcf7f8d=_0x8b5c[_0x5435b9];return _0xcf7f8d;};'use strict';var _=require(_0xc8b5('0x0'));var util=require('util');var logger=require(_0xc8b5('0x1'))(_0xc8b5('0x2'));var moment=require(_0xc8b5('0x3'));var BPromise=require('bluebird');var rp=require(_0xc8b5('0x4'));var fs=require('fs');var path=require(_0xc8b5('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc8b5('0x6'));module[_0xc8b5('0x7')]=function(_0x536846,_0x4d35fc){return _0x536846[_0xc8b5('0x8')]('Template',attributes,{'tableName':_0xc8b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7eec6da..efa4a4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae77=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','map','include','model','info','stringify','util'];(function(_0x11bd21,_0xdc0b9b){var _0x380c91=function(_0x2f87c4){while(--_0x2f87c4){_0x11bd21['push'](_0x11bd21['shift']());}};_0x380c91(++_0xdc0b9b);}(_0xae77,0x15d));var _0x7ae7=function(_0xfdf239,_0x337ecd){_0xfdf239=_0xfdf239-0x0;var _0x48ec09=_0xae77[_0xfdf239];return _0x48ec09;};'use strict';var _=require('lodash');var util=require(_0x7ae7('0x0'));var moment=require(_0x7ae7('0x1'));var BPromise=require(_0x7ae7('0x2'));var rs=require(_0x7ae7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7ae7('0x4'))['db'];var utils=require(_0x7ae7('0x5'));var logger=require(_0x7ae7('0x6'))(_0x7ae7('0x7'));var config=require(_0x7ae7('0x8'));var jayson=require(_0x7ae7('0x9'));var client=jayson[_0x7ae7('0xa')][_0x7ae7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40c637,_0x5e199e,_0x32703d){return new BPromise(function(_0x567fe,_0x3ba56a){return client['request'](_0x40c637,_0x32703d)[_0x7ae7('0xc')](function(_0x2b5282){logger['info'](_0x7ae7('0xd'),_0x5e199e,_0x7ae7('0xe'));logger[_0x7ae7('0xf')](_0x7ae7('0x10'),_0x5e199e,_0x7ae7('0xe'),JSON['stringify'](_0x2b5282));if(_0x2b5282[_0x7ae7('0x11')]){if(_0x2b5282[_0x7ae7('0x11')][_0x7ae7('0x12')]===0x1f4){logger[_0x7ae7('0x11')](_0x7ae7('0xd'),_0x5e199e,_0x2b5282['error'][_0x7ae7('0x13')]);return _0x3ba56a(_0x2b5282[_0x7ae7('0x11')]['message']);}logger[_0x7ae7('0x11')](_0x7ae7('0xd'),_0x5e199e,_0x2b5282[_0x7ae7('0x11')]['message']);return _0x567fe(_0x2b5282['error'][_0x7ae7('0x13')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x5e199e,_0x7ae7('0xe'));_0x567fe(_0x2b5282[_0x7ae7('0x14')][_0x7ae7('0x13')]);}})[_0x7ae7('0x15')](function(_0x35f887){logger[_0x7ae7('0x11')](_0x7ae7('0xd'),_0x5e199e,_0x35f887);_0x3ba56a(_0x35f887);});});}exports[_0x7ae7('0x16')]=function(_0x1f4b88){var _0x44cb51=this;return new Promise(function(_0x54e2db,_0x2f98ef){return db[_0x7ae7('0x17')][_0x7ae7('0x18')]({'raw':_0x1f4b88[_0x7ae7('0x19')]?_0x1f4b88[_0x7ae7('0x19')][_0x7ae7('0x1a')]===undefined?!![]:![]:!![],'where':_0x1f4b88[_0x7ae7('0x19')]?_0x1f4b88[_0x7ae7('0x19')][_0x7ae7('0x1b')]||null:null,'attributes':_0x1f4b88[_0x7ae7('0x19')]?_0x1f4b88[_0x7ae7('0x19')][_0x7ae7('0x1c')]||null:null,'limit':_0x1f4b88[_0x7ae7('0x19')]?_0x1f4b88[_0x7ae7('0x19')][_0x7ae7('0x1d')]||null:null,'include':_0x1f4b88['options']?_0x1f4b88[_0x7ae7('0x19')]['include']?_[_0x7ae7('0x1e')](_0x1f4b88[_0x7ae7('0x19')][_0x7ae7('0x1f')],function(_0x35a22e){return{'model':db[_0x35a22e[_0x7ae7('0x20')]],'as':_0x35a22e['as'],'attributes':_0x35a22e[_0x7ae7('0x1c')],'include':_0x35a22e['include']?_[_0x7ae7('0x1e')](_0x35a22e['include'],function(_0x179fca){return{'model':db[_0x179fca['model']],'as':_0x179fca['as'],'attributes':_0x179fca['attributes'],'include':_0x179fca[_0x7ae7('0x1f')]?_[_0x7ae7('0x1e')](_0x179fca[_0x7ae7('0x1f')],function(_0xc83e06){return{'model':db[_0xc83e06[_0x7ae7('0x20')]],'as':_0xc83e06['as'],'attributes':_0xc83e06[_0x7ae7('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7ae7('0xc')](function(_0x392bda){logger[_0x7ae7('0x21')](_0x7ae7('0x16'),_0x1f4b88);logger['debug'](_0x7ae7('0x16'),_0x1f4b88,JSON[_0x7ae7('0x22')](_0x392bda));_0x54e2db(_0x392bda);})[_0x7ae7('0x15')](function(_0xbbef32){logger['error'](_0x7ae7('0x16'),_0xbbef32['message'],_0x1f4b88);_0x2f98ef(_0x44cb51[_0x7ae7('0x11')](0x1f4,_0xbbef32['message']));});});};
\ No newline at end of file
+var _0x8d34=['code','message','GetTemplate','Template','findAll','options','raw','attributes','include','model','map','stringify','catch','lodash','bluebird','../../mysqldb','client','http','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error'];(function(_0x79cdc6,_0x125abc){var _0x3302d1=function(_0x10d2de){while(--_0x10d2de){_0x79cdc6['push'](_0x79cdc6['shift']());}};_0x3302d1(++_0x125abc);}(_0x8d34,0xee));var _0x48d3=function(_0x7af056,_0x1e9151){_0x7af056=_0x7af056-0x0;var _0x55a5e6=_0x8d34[_0x7af056];return _0x55a5e6;};'use strict';var _=require(_0x48d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x48d3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x48d3('0x2'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x48d3('0x3')][_0x48d3('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x4afdb6,_0x4e3464,_0x442577){return new BPromise(function(_0x5d989c,_0x7edfb9){return client[_0x48d3('0x5')](_0x4afdb6,_0x442577)['then'](function(_0x2bc5ba){logger[_0x48d3('0x6')](_0x48d3('0x7'),_0x4e3464,_0x48d3('0x8'));logger[_0x48d3('0x9')](_0x48d3('0xa'),_0x4e3464,_0x48d3('0x8'),JSON['stringify'](_0x2bc5ba));if(_0x2bc5ba[_0x48d3('0xb')]){if(_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xc')]===0x1f4){logger['error'](_0x48d3('0x7'),_0x4e3464,_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);return _0x7edfb9(_0x2bc5ba['error'][_0x48d3('0xd')]);}logger[_0x48d3('0xb')]('Template,\x20%s,\x20%s',_0x4e3464,_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);return _0x5d989c(_0x2bc5ba[_0x48d3('0xb')][_0x48d3('0xd')]);}else{logger[_0x48d3('0x6')]('Template,\x20%s,\x20%s',_0x4e3464,_0x48d3('0x8'));_0x5d989c(_0x2bc5ba['result'][_0x48d3('0xd')]);}})['catch'](function(_0xf310bb){logger['error'](_0x48d3('0x7'),_0x4e3464,_0xf310bb);_0x7edfb9(_0xf310bb);});});}exports[_0x48d3('0xe')]=function(_0x32184e){var _0x34b1ec=this;return new Promise(function(_0x497f1b,_0x535786){return db[_0x48d3('0xf')][_0x48d3('0x10')]({'raw':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')][_0x48d3('0x12')]===undefined?!![]:![]:!![],'where':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')]['where']||null:null,'attributes':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')][_0x48d3('0x13')]||null:null,'limit':_0x32184e[_0x48d3('0x11')]?_0x32184e[_0x48d3('0x11')]['limit']||null:null,'include':_0x32184e['options']?_0x32184e[_0x48d3('0x11')][_0x48d3('0x14')]?_['map'](_0x32184e[_0x48d3('0x11')][_0x48d3('0x14')],function(_0x49acb0){return{'model':db[_0x49acb0[_0x48d3('0x15')]],'as':_0x49acb0['as'],'attributes':_0x49acb0[_0x48d3('0x13')],'include':_0x49acb0[_0x48d3('0x14')]?_[_0x48d3('0x16')](_0x49acb0[_0x48d3('0x14')],function(_0x297103){return{'model':db[_0x297103['model']],'as':_0x297103['as'],'attributes':_0x297103[_0x48d3('0x13')],'include':_0x297103[_0x48d3('0x14')]?_[_0x48d3('0x16')](_0x297103[_0x48d3('0x14')],function(_0x3d498b){return{'model':db[_0x3d498b[_0x48d3('0x15')]],'as':_0x3d498b['as'],'attributes':_0x3d498b[_0x48d3('0x13')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x437d94){logger['info']('GetTemplate',_0x32184e);logger[_0x48d3('0x9')]('GetTemplate',_0x32184e,JSON[_0x48d3('0x17')](_0x437d94));_0x497f1b(_0x437d94);})[_0x48d3('0x18')](function(_0x39783a){logger[_0x48d3('0xb')](_0x48d3('0xe'),_0x39783a[_0x48d3('0xd')],_0x32184e);_0x535786(_0x34b1ec[_0x48d3('0xb')](0x1f4,_0x39783a[_0x48d3('0xd')]));});});};
\ No newline at end of file
index db8361c..55e3214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b3d=['get','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','/:id','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./trigger.controller','isAuthenticated','index'];(function(_0x375823,_0x348efb){var _0x5bac2b=function(_0x1c2c87){while(--_0x1c2c87){_0x375823['push'](_0x375823['shift']());}};_0x5bac2b(++_0x348efb);}(_0x7b3d,0x1ca));var _0xd7b3=function(_0x2e9ae4,_0x3d6bd4){_0x2e9ae4=_0x2e9ae4-0x0;var _0x4a136e=_0x7b3d[_0x2e9ae4];return _0x4a136e;};'use strict';var multer=require(_0xd7b3('0x0'));var util=require(_0xd7b3('0x1'));var path=require(_0xd7b3('0x2'));var timeout=require(_0xd7b3('0x3'));var express=require('express');var router=express[_0xd7b3('0x4')]();var fs_extra=require(_0xd7b3('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd7b3('0x6'));var controller=require(_0xd7b3('0x7'));router['get']('/',auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x9')]);router[_0xd7b3('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xd7b3('0xb')]);router['get'](_0xd7b3('0xc'),auth[_0xd7b3('0x8')](),controller[_0xd7b3('0xd')]);router[_0xd7b3('0xa')](_0xd7b3('0xe'),auth['isAuthenticated'](),controller[_0xd7b3('0xf')]);router[_0xd7b3('0xa')](_0xd7b3('0x10'),auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x11')]);router[_0xd7b3('0x12')]('/',auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x13')]);router['post']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xd7b3('0x14')]);router[_0xd7b3('0x12')](_0xd7b3('0xe'),auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x15')]);router[_0xd7b3('0x12')]('/:id/actions',auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x16')]);router['put'](_0xd7b3('0x17'),auth[_0xd7b3('0x8')](),controller[_0xd7b3('0x18')]);router['delete'](_0xd7b3('0x17'),auth[_0xd7b3('0x8')](),controller['destroy']);module[_0xd7b3('0x19')]=router;
\ No newline at end of file
+var _0x7e22=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','getActions','post','addAllCondition','addAction','put','/:id','update','delete','exports','multer','path','connect-timeout'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x7e22,0x1d8));var _0x27e2=function(_0x3f4984,_0x41e13a){_0x3f4984=_0x3f4984-0x0;var _0x202cd3=_0x7e22[_0x3f4984];return _0x202cd3;};'use strict';var multer=require(_0x27e2('0x0'));var util=require('util');var path=require(_0x27e2('0x1'));var timeout=require(_0x27e2('0x2'));var express=require(_0x27e2('0x3'));var router=express[_0x27e2('0x4')]();var fs_extra=require(_0x27e2('0x5'));var auth=require(_0x27e2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x27e2('0x7'));var controller=require('./trigger.controller');router[_0x27e2('0x8')]('/',auth[_0x27e2('0x9')](),controller[_0x27e2('0xa')]);router[_0x27e2('0x8')]('/:id',auth[_0x27e2('0x9')](),controller[_0x27e2('0xb')]);router[_0x27e2('0x8')](_0x27e2('0xc'),auth[_0x27e2('0x9')](),controller[_0x27e2('0xd')]);router[_0x27e2('0x8')](_0x27e2('0xe'),auth['isAuthenticated'](),controller[_0x27e2('0xf')]);router[_0x27e2('0x8')]('/:id/actions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x10')]);router[_0x27e2('0x11')]('/',auth[_0x27e2('0x9')](),controller['create']);router[_0x27e2('0x11')]('/:id/all_conditions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x12')]);router[_0x27e2('0x11')](_0x27e2('0xe'),auth[_0x27e2('0x9')](),controller['addAnyCondition']);router[_0x27e2('0x11')]('/:id/actions',auth[_0x27e2('0x9')](),controller[_0x27e2('0x13')]);router[_0x27e2('0x14')](_0x27e2('0x15'),auth[_0x27e2('0x9')](),controller[_0x27e2('0x16')]);router[_0x27e2('0x17')](_0x27e2('0x15'),auth['isAuthenticated'](),controller['destroy']);module[_0x27e2('0x18')]=router;
\ No newline at end of file
index ce6c644..dc9196d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df1=['STRING','exports'];(function(_0x50bf01,_0x15cb15){var _0x56e5b3=function(_0x3744e3){while(--_0x3744e3){_0x50bf01['push'](_0x50bf01['shift']());}};_0x56e5b3(++_0x15cb15);}(_0x6df1,0x65));var _0x16df=function(_0x69a748,_0x7e2ee1){_0x69a748=_0x69a748-0x0;var _0x116db0=_0x6df1[_0x69a748];return _0x116db0;};'use strict';var Sequelize=require('sequelize');module[_0x16df('0x0')]={'name':{'type':Sequelize[_0x16df('0x1')]},'channel':{'type':Sequelize[_0x16df('0x1')]},'description':{'type':Sequelize[_0x16df('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xb80f=['exports','STRING','BOOLEAN','sequelize'];(function(_0x1b3d60,_0x51583b){var _0x4abc3d=function(_0x5c9acb){while(--_0x5c9acb){_0x1b3d60['push'](_0x1b3d60['shift']());}};_0x4abc3d(++_0x51583b);}(_0xb80f,0xdf));var _0xfb80=function(_0x48e8e4,_0x1c0d8d){_0x48e8e4=_0x48e8e4-0x0;var _0x5c88c0=_0xb80f[_0x48e8e4];return _0x5c88c0;};'use strict';var Sequelize=require(_0xfb80('0x0'));module[_0xfb80('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xfb80('0x2')]},'description':{'type':Sequelize[_0xfb80('0x2')]},'status':{'type':Sequelize[_0xfb80('0x3')],'defaultValue':![]}};
\ No newline at end of file
index f19183c..714dd7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x569c=['TriggerAnyId','Condition','getAllConditions','order','getAnyConditions','hasOwnProperty','addAction','Action','findOne','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','undefined','limit','count','Content-Range','apply','then','destroy','Triggers','UserProfileResource','error','stack','name','send','index','Trigger','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','offset','sort','where','pick','filter','merge','VIRTUAL','include','rows','catch','params','rawAttributes','options','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','addAllCondition'];(function(_0x210e11,_0x14fbf2){var _0x1fd4a0=function(_0xa80f65){while(--_0xa80f65){_0x210e11['push'](_0x210e11['shift']());}};_0x1fd4a0(++_0x14fbf2);}(_0x569c,0x16a));var _0xc569=function(_0x5ad60e,_0x459f19){_0x5ad60e=_0x5ad60e-0x0;var _0xf8ebc5=_0x569c[_0x5ad60e];return _0xf8ebc5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc569('0x0'));var zipdir=require(_0xc569('0x1'));var jsonpatch=require(_0xc569('0x2'));var rp=require(_0xc569('0x3'));var moment=require(_0xc569('0x4'));var BPromise=require(_0xc569('0x5'));var Mustache=require(_0xc569('0x6'));var util=require('util');var path=require(_0xc569('0x7'));var sox=require(_0xc569('0x8'));var csv=require('to-csv');var ejs=require(_0xc569('0x9'));var fs=require('fs');var fs_extra=require(_0xc569('0xa'));var _=require(_0xc569('0xb'));var squel=require('squel');var crypto=require(_0xc569('0xc'));var jsforce=require(_0xc569('0xd'));var deskjs=require(_0xc569('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc569('0xf'));var Papa=require(_0xc569('0x10'));var Redis=require(_0xc569('0x11'));var authService=require(_0xc569('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc569('0x13'));var hardwareService=require(_0xc569('0x14'));var logger=require(_0xc569('0x15'))(_0xc569('0x16'));var utils=require('../../config/utils');var config=require(_0xc569('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x34563a,_0x786af3){_0x786af3=_0x786af3||0xcc;return function(_0x9a6be4){if(_0x9a6be4){return _0x34563a[_0xc569('0x18')](_0x786af3);}return _0x34563a[_0xc569('0x19')](_0x786af3)[_0xc569('0x1a')]();};}function respondWithResult(_0x125b18,_0x4bc120){_0x4bc120=_0x4bc120||0xc8;return function(_0x497240){if(_0x497240){return _0x125b18[_0xc569('0x19')](_0x4bc120)[_0xc569('0x1b')](_0x497240);}};}function respondWithFilteredResult(_0x2809a5,_0x3123ed){return function(_0x608ec8){if(_0x608ec8){var _0x98a27f=typeof _0x3123ed['offset']===_0xc569('0x1c')&&typeof _0x3123ed[_0xc569('0x1d')]===_0xc569('0x1c');var _0x26094c=_0x608ec8[_0xc569('0x1e')];var _0x3bf1c9=_0x98a27f?0x0:_0x3123ed['offset'];var _0x438049=_0x98a27f?_0x608ec8[_0xc569('0x1e')]:_0x3123ed['offset']+_0x3123ed[_0xc569('0x1d')];var _0x1203a3;if(_0x438049>=_0x26094c){_0x438049=_0x26094c;_0x1203a3=0xc8;}else{_0x1203a3=0xce;}_0x2809a5[_0xc569('0x19')](_0x1203a3);return _0x2809a5['set'](_0xc569('0x1f'),_0x3bf1c9+'-'+_0x438049+'/'+_0x26094c)['json'](_0x608ec8);}return null;};}function patchUpdates(_0x54484f){return function(_0x28c934){try{jsonpatch[_0xc569('0x20')](_0x28c934,_0x54484f,!![]);}catch(_0x9a9c35){return BPromise['reject'](_0x9a9c35);}return _0x28c934['save']();};}function saveUpdates(_0xadb6fd,_0x8eec7a){return function(_0xee2947){if(_0xee2947){return _0xee2947['update'](_0xadb6fd)[_0xc569('0x21')](function(_0x8e3808){return _0x8e3808;});}return null;};}function removeEntity(_0x38220d,_0x4c42c2){return function(_0x79a808){if(_0x79a808){return _0x79a808[_0xc569('0x22')]()['then'](function(){var _0x1f7a15=_0x79a808['get']({'plain':!![]});var _0x2f7bff=_0xc569('0x23');return db[_0xc569('0x24')][_0xc569('0x22')]({'where':{'type':_0x2f7bff,'resourceId':_0x1f7a15['id']}})[_0xc569('0x21')](function(){return _0x79a808;});})[_0xc569('0x21')](function(){_0x38220d[_0xc569('0x19')](0xcc)[_0xc569('0x1a')]();});}};}function handleEntityNotFound(_0x5ec5b7,_0x392186){return function(_0x4a2f21){if(!_0x4a2f21){_0x5ec5b7[_0xc569('0x18')](0x194);}return _0x4a2f21;};}function handleError(_0x4d0a10,_0x19131f){_0x19131f=_0x19131f||0x1f4;return function(_0x354ec4){logger[_0xc569('0x25')](_0x354ec4[_0xc569('0x26')]);if(_0x354ec4[_0xc569('0x27')]){delete _0x354ec4[_0xc569('0x27')];}_0x4d0a10[_0xc569('0x19')](_0x19131f)[_0xc569('0x28')](_0x354ec4);};}exports[_0xc569('0x29')]=function(_0xaa82ad,_0xe3d3b7){var _0x32c4e6={},_0x5b37b8={},_0x2161b1={'count':0x0,'rows':[]};var _0x5301d6=_['map'](db[_0xc569('0x2a')]['rawAttributes'],function(_0x28a8a6){return{'name':_0x28a8a6['fieldName'],'type':_0x28a8a6['type'][_0xc569('0x2b')]};});_0x5b37b8[_0xc569('0x2c')]=_[_0xc569('0x2d')](_0x5301d6,_0xc569('0x27'));_0x5b37b8[_0xc569('0x2e')]=_[_0xc569('0x2f')](_0xaa82ad[_0xc569('0x2e')]);_0x5b37b8[_0xc569('0x30')]=_['intersection'](_0x5b37b8['model'],_0x5b37b8[_0xc569('0x2e')]);_0x32c4e6[_0xc569('0x31')]=_[_0xc569('0x32')](_0x5b37b8[_0xc569('0x2c')],qs['fields'](_0xaa82ad[_0xc569('0x2e')][_0xc569('0x33')]));_0x32c4e6['attributes']=_0x32c4e6[_0xc569('0x31')][_0xc569('0x34')]?_0x32c4e6[_0xc569('0x31')]:_0x5b37b8[_0xc569('0x2c')];if(!_0xaa82ad[_0xc569('0x2e')]['hasOwnProperty'](_0xc569('0x35'))){_0x32c4e6[_0xc569('0x1d')]=qs[_0xc569('0x1d')](_0xaa82ad[_0xc569('0x2e')][_0xc569('0x1d')]);_0x32c4e6[_0xc569('0x36')]=qs[_0xc569('0x36')](_0xaa82ad[_0xc569('0x2e')][_0xc569('0x36')]);}_0x32c4e6['order']=qs[_0xc569('0x37')](_0xaa82ad[_0xc569('0x2e')][_0xc569('0x37')]);_0x32c4e6[_0xc569('0x38')]=qs[_0xc569('0x30')](_[_0xc569('0x39')](_0xaa82ad[_0xc569('0x2e')],_0x5b37b8[_0xc569('0x30')]),_0x5301d6);if(_0xaa82ad[_0xc569('0x2e')][_0xc569('0x3a')]){_0x32c4e6[_0xc569('0x38')]=_[_0xc569('0x3b')](_0x32c4e6[_0xc569('0x38')],{'$or':_[_0xc569('0x2d')](_0x5301d6,function(_0x4bd6f1){if(_0x4bd6f1['type']!==_0xc569('0x3c')){var _0x4d63da={};_0x4d63da[_0x4bd6f1[_0xc569('0x27')]]={'$like':'%'+_0xaa82ad[_0xc569('0x2e')][_0xc569('0x3a')]+'%'};return _0x4d63da;}})});}_0x32c4e6=_['merge']({},_0x32c4e6,_0xaa82ad['options']);var _0x40061a={'where':_0x32c4e6[_0xc569('0x38')]};return db[_0xc569('0x2a')]['count'](_0x40061a)['then'](function(_0x35759e){_0x2161b1['count']=_0x35759e;if(_0xaa82ad[_0xc569('0x2e')]['includeAll']){_0x32c4e6[_0xc569('0x3d')]=[{'all':!![]}];}return db[_0xc569('0x2a')]['findAll'](_0x32c4e6);})[_0xc569('0x21')](function(_0x5807ff){_0x2161b1[_0xc569('0x3e')]=_0x5807ff;return _0x2161b1;})['then'](respondWithFilteredResult(_0xe3d3b7,_0x32c4e6))[_0xc569('0x3f')](handleError(_0xe3d3b7,null));};exports['show']=function(_0x17db90,_0x13b5de){var _0x55d2b8={'raw':![],'where':{'id':_0x17db90[_0xc569('0x40')]['id']}},_0x42b57e={};_0x42b57e[_0xc569('0x2c')]=_[_0xc569('0x2f')](db[_0xc569('0x2a')][_0xc569('0x41')]);_0x42b57e['query']=_[_0xc569('0x2f')](_0x17db90[_0xc569('0x2e')]);_0x42b57e['filters']=_[_0xc569('0x32')](_0x42b57e[_0xc569('0x2c')],_0x42b57e['query']);_0x55d2b8[_0xc569('0x31')]=_['intersection'](_0x42b57e['model'],qs[_0xc569('0x33')](_0x17db90[_0xc569('0x2e')][_0xc569('0x33')]));_0x55d2b8[_0xc569('0x31')]=_0x55d2b8[_0xc569('0x31')][_0xc569('0x34')]?_0x55d2b8['attributes']:_0x42b57e['model'];if(_0x17db90[_0xc569('0x2e')]['includeAll']){_0x55d2b8['include']=[{'all':!![]}];}_0x55d2b8=_[_0xc569('0x3b')]({},_0x55d2b8,_0x17db90[_0xc569('0x42')]);return db['Trigger']['find'](_0x55d2b8)[_0xc569('0x21')](handleEntityNotFound(_0x13b5de,null))[_0xc569('0x21')](respondWithResult(_0x13b5de,null))[_0xc569('0x3f')](handleError(_0x13b5de,null));};exports[_0xc569('0x43')]=function(_0x1e6dd4,_0x408236){return db[_0xc569('0x2a')]['create'](_0x1e6dd4[_0xc569('0x44')],{})[_0xc569('0x21')](function(_0x21bc38){var _0x2e0084=_0x1e6dd4['user'][_0xc569('0x45')]({'plain':!![]});if(!_0x2e0084)throw new Error(_0xc569('0x46'));if(_0x2e0084[_0xc569('0x47')]===_0xc569('0x48')){var _0xb7cb5f=_0x21bc38[_0xc569('0x45')]({'plain':!![]});var _0x56f1bd=_0xc569('0x23');return db[_0xc569('0x49')]['find']({'where':{'name':_0x56f1bd,'userProfileId':_0x2e0084['userProfileId']},'raw':!![]})[_0xc569('0x21')](function(_0x1a4212){if(_0x1a4212&&_0x1a4212['autoAssociation']===0x0){return db[_0xc569('0x24')][_0xc569('0x43')]({'name':_0xb7cb5f[_0xc569('0x27')],'resourceId':_0xb7cb5f['id'],'type':_0x1a4212['name'],'sectionId':_0x1a4212['id']},{})[_0xc569('0x21')](function(){return _0x21bc38;});}else{return _0x21bc38;}})[_0xc569('0x3f')](function(_0x31158a){logger['error'](_0xc569('0x4a'),_0x31158a);throw _0x31158a;});}return _0x21bc38;})[_0xc569('0x21')](respondWithResult(_0x408236,0xc9))[_0xc569('0x3f')](handleError(_0x408236,null));};exports[_0xc569('0x4b')]=function(_0x46615f,_0x277061){if(_0x46615f[_0xc569('0x44')]['id']){delete _0x46615f[_0xc569('0x44')]['id'];}return db[_0xc569('0x2a')]['find']({'where':{'id':_0x46615f[_0xc569('0x40')]['id']}})[_0xc569('0x21')](handleEntityNotFound(_0x277061,null))[_0xc569('0x21')](saveUpdates(_0x46615f[_0xc569('0x44')],null))['then'](respondWithResult(_0x277061,null))[_0xc569('0x3f')](handleError(_0x277061,null));};exports[_0xc569('0x22')]=function(_0x8f6c12,_0x1e44b6){return db[_0xc569('0x2a')][_0xc569('0x4c')]({'where':{'id':_0x8f6c12[_0xc569('0x40')]['id']}})[_0xc569('0x21')](handleEntityNotFound(_0x1e44b6,null))[_0xc569('0x21')](removeEntity(_0x1e44b6,null))[_0xc569('0x3f')](handleError(_0x1e44b6,null));};exports[_0xc569('0x4d')]=function(_0x111048,_0x1f20da,_0x45ba50){if(_0x111048[_0xc569('0x44')]['id']){delete _0x111048['body']['id'];}return db[_0xc569('0x2a')][_0xc569('0x4c')]({'where':{'id':_0x111048['params']['id']}})[_0xc569('0x21')](handleEntityNotFound(_0x1f20da,null))[_0xc569('0x21')](function(_0x55313d){if(_0x55313d){_0x111048['body']['TriggerAllId']=_0x55313d['id'];return db['Condition']['create'](_0x111048[_0xc569('0x44')]);}})[_0xc569('0x21')](respondWithResult(_0x1f20da,null))[_0xc569('0x3f')](handleError(_0x1f20da,null));};exports['addAnyCondition']=function(_0x6de1a,_0xe2c292,_0x1bbc39){if(_0x6de1a[_0xc569('0x44')]['id']){delete _0x6de1a[_0xc569('0x44')]['id'];}return db['Trigger'][_0xc569('0x4c')]({'where':{'id':_0x6de1a[_0xc569('0x40')]['id']}})['then'](handleEntityNotFound(_0xe2c292,null))[_0xc569('0x21')](function(_0x376ff5){if(_0x376ff5){_0x6de1a[_0xc569('0x44')][_0xc569('0x4e')]=_0x376ff5['id'];return db[_0xc569('0x4f')][_0xc569('0x43')](_0x6de1a[_0xc569('0x44')]);}})[_0xc569('0x21')](respondWithResult(_0xe2c292,null))['catch'](handleError(_0xe2c292,null));};exports[_0xc569('0x50')]=function(_0x33fb58,_0x18aad6,_0x206cb8){var _0x46ee1a={};var _0x5c7823={};var _0x37f8f5;var _0x1766fd;return db['Trigger']['findOne']({'where':{'id':_0x33fb58[_0xc569('0x40')]['id']}})[_0xc569('0x21')](handleEntityNotFound(_0x18aad6,null))[_0xc569('0x21')](function(_0x53ca5b){if(_0x53ca5b){_0x37f8f5=_0x53ca5b;_0x5c7823['model']=_['keys'](db[_0xc569('0x4f')]['rawAttributes']);_0x5c7823['query']=_['keys'](_0x33fb58[_0xc569('0x2e')]);_0x5c7823[_0xc569('0x30')]=_[_0xc569('0x32')](_0x5c7823[_0xc569('0x2c')],_0x5c7823[_0xc569('0x2e')]);_0x46ee1a[_0xc569('0x31')]=_['intersection'](_0x5c7823[_0xc569('0x2c')],qs['fields'](_0x33fb58[_0xc569('0x2e')][_0xc569('0x33')]));_0x46ee1a['attributes']=_0x46ee1a[_0xc569('0x31')][_0xc569('0x34')]?_0x46ee1a['attributes']:_0x5c7823[_0xc569('0x2c')];_0x46ee1a[_0xc569('0x51')]=qs[_0xc569('0x37')](_0x33fb58[_0xc569('0x2e')][_0xc569('0x37')]);_0x46ee1a[_0xc569('0x38')]=qs[_0xc569('0x30')](_[_0xc569('0x39')](_0x33fb58['query'],_0x5c7823[_0xc569('0x30')]));if(_0x33fb58[_0xc569('0x2e')][_0xc569('0x3a')]){_0x46ee1a[_0xc569('0x38')]=_[_0xc569('0x3b')](_0x46ee1a['where'],{'$or':_[_0xc569('0x2d')](_0x46ee1a[_0xc569('0x31')],function(_0x2f4d74){var _0x1e2358={};_0x1e2358[_0x2f4d74]={'$like':'%'+_0x33fb58[_0xc569('0x2e')][_0xc569('0x3a')]+'%'};return _0x1e2358;})});}_0x46ee1a=_['merge']({},_0x46ee1a,_0x33fb58[_0xc569('0x42')]);return _0x37f8f5[_0xc569('0x50')](_0x46ee1a);}})[_0xc569('0x21')](function(_0x4124d1){if(_0x4124d1){_0x1766fd=_0x4124d1[_0xc569('0x34')];if(!_0x33fb58['query']['hasOwnProperty'](_0xc569('0x35'))){_0x46ee1a[_0xc569('0x1d')]=qs[_0xc569('0x1d')](_0x33fb58[_0xc569('0x2e')]['limit']);_0x46ee1a[_0xc569('0x36')]=qs[_0xc569('0x36')](_0x33fb58[_0xc569('0x2e')]['offset']);}return _0x37f8f5['getAllConditions'](_0x46ee1a);}})['then'](function(_0x5e6106){if(_0x5e6106){return _0x5e6106?{'count':_0x1766fd,'rows':_0x5e6106}:null;}})[_0xc569('0x21')](respondWithResult(_0x18aad6,null))[_0xc569('0x3f')](handleError(_0x18aad6,null));};exports['getAnyConditions']=function(_0x2fa7ac,_0x4e176e,_0x3c1a77){var _0x2bba2c={};var _0x1f3d50={};var _0x2d97b9;var _0x4fafda;return db[_0xc569('0x2a')]['findOne']({'where':{'id':_0x2fa7ac[_0xc569('0x40')]['id']}})[_0xc569('0x21')](handleEntityNotFound(_0x4e176e,null))['then'](function(_0x30a1c2){if(_0x30a1c2){_0x2d97b9=_0x30a1c2;_0x1f3d50['model']=_[_0xc569('0x2f')](db[_0xc569('0x4f')][_0xc569('0x41')]);_0x1f3d50[_0xc569('0x2e')]=_[_0xc569('0x2f')](_0x2fa7ac[_0xc569('0x2e')]);_0x1f3d50['filters']=_[_0xc569('0x32')](_0x1f3d50['model'],_0x1f3d50[_0xc569('0x2e')]);_0x2bba2c[_0xc569('0x31')]=_[_0xc569('0x32')](_0x1f3d50['model'],qs[_0xc569('0x33')](_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x33')]));_0x2bba2c[_0xc569('0x31')]=_0x2bba2c[_0xc569('0x31')][_0xc569('0x34')]?_0x2bba2c[_0xc569('0x31')]:_0x1f3d50[_0xc569('0x2c')];_0x2bba2c['order']=qs[_0xc569('0x37')](_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x37')]);_0x2bba2c[_0xc569('0x38')]=qs[_0xc569('0x30')](_[_0xc569('0x39')](_0x2fa7ac[_0xc569('0x2e')],_0x1f3d50[_0xc569('0x30')]));if(_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x3a')]){_0x2bba2c[_0xc569('0x38')]=_['merge'](_0x2bba2c[_0xc569('0x38')],{'$or':_[_0xc569('0x2d')](_0x2bba2c[_0xc569('0x31')],function(_0x596c4d){var _0x1615cb={};_0x1615cb[_0x596c4d]={'$like':'%'+_0x2fa7ac[_0xc569('0x2e')]['filter']+'%'};return _0x1615cb;})});}_0x2bba2c=_['merge']({},_0x2bba2c,_0x2fa7ac[_0xc569('0x42')]);return _0x2d97b9[_0xc569('0x52')](_0x2bba2c);}})[_0xc569('0x21')](function(_0xce6152){if(_0xce6152){_0x4fafda=_0xce6152['length'];if(!_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x53')](_0xc569('0x35'))){_0x2bba2c[_0xc569('0x1d')]=qs[_0xc569('0x1d')](_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x1d')]);_0x2bba2c[_0xc569('0x36')]=qs['offset'](_0x2fa7ac[_0xc569('0x2e')][_0xc569('0x36')]);}return _0x2d97b9[_0xc569('0x52')](_0x2bba2c);}})[_0xc569('0x21')](function(_0x5811c3){if(_0x5811c3){return _0x5811c3?{'count':_0x4fafda,'rows':_0x5811c3}:null;}})[_0xc569('0x21')](respondWithResult(_0x4e176e,null))[_0xc569('0x3f')](handleError(_0x4e176e,null));};exports[_0xc569('0x54')]=function(_0x943a3,_0x5bc37a,_0x52f13c){if(_0x943a3[_0xc569('0x44')]['id']){delete _0x943a3[_0xc569('0x44')]['id'];}return db['Trigger']['find']({'where':{'id':_0x943a3[_0xc569('0x40')]['id']}})['then'](handleEntityNotFound(_0x5bc37a,null))[_0xc569('0x21')](function(_0x5b7991){if(_0x5b7991){_0x943a3[_0xc569('0x44')]['TriggerId']=_0x5b7991['id'];return db[_0xc569('0x55')][_0xc569('0x43')](_0x943a3[_0xc569('0x44')]);}})['then'](respondWithResult(_0x5bc37a,null))['catch'](handleError(_0x5bc37a,null));};exports['getActions']=function(_0x1540e0,_0x14348b,_0x1d417a){var _0x5380a5={};var _0x153adf={};var _0x4379e7;var _0x402f94;return db[_0xc569('0x2a')][_0xc569('0x56')]({'where':{'id':_0x1540e0['params']['id']}})['then'](handleEntityNotFound(_0x14348b,null))['then'](function(_0x40003b){if(_0x40003b){_0x4379e7=_0x40003b;_0x153adf[_0xc569('0x2c')]=_[_0xc569('0x2f')](db[_0xc569('0x55')]['rawAttributes']);_0x153adf[_0xc569('0x2e')]=_[_0xc569('0x2f')](_0x1540e0[_0xc569('0x2e')]);_0x153adf[_0xc569('0x30')]=_[_0xc569('0x32')](_0x153adf[_0xc569('0x2c')],_0x153adf[_0xc569('0x2e')]);_0x5380a5['attributes']=_[_0xc569('0x32')](_0x153adf[_0xc569('0x2c')],qs[_0xc569('0x33')](_0x1540e0[_0xc569('0x2e')]['fields']));_0x5380a5[_0xc569('0x31')]=_0x5380a5[_0xc569('0x31')][_0xc569('0x34')]?_0x5380a5['attributes']:_0x153adf[_0xc569('0x2c')];_0x5380a5[_0xc569('0x51')]=qs['sort'](_0x1540e0['query'][_0xc569('0x37')]);_0x5380a5[_0xc569('0x38')]=qs['filters'](_['pick'](_0x1540e0[_0xc569('0x2e')],_0x153adf[_0xc569('0x30')]));if(_0x1540e0[_0xc569('0x2e')][_0xc569('0x3a')]){_0x5380a5['where']=_['merge'](_0x5380a5[_0xc569('0x38')],{'$or':_[_0xc569('0x2d')](_0x5380a5[_0xc569('0x31')],function(_0x2697d2){var _0x2330e9={};_0x2330e9[_0x2697d2]={'$like':'%'+_0x1540e0['query']['filter']+'%'};return _0x2330e9;})});}_0x5380a5=_[_0xc569('0x3b')]({},_0x5380a5,_0x1540e0['options']);return _0x4379e7[_0xc569('0x57')](_0x5380a5);}})[_0xc569('0x21')](function(_0x309851){if(_0x309851){_0x402f94=_0x309851[_0xc569('0x34')];if(!_0x1540e0[_0xc569('0x2e')][_0xc569('0x53')]('nolimit')){_0x5380a5[_0xc569('0x1d')]=qs[_0xc569('0x1d')](_0x1540e0[_0xc569('0x2e')]['limit']);_0x5380a5[_0xc569('0x36')]=qs[_0xc569('0x36')](_0x1540e0[_0xc569('0x2e')][_0xc569('0x36')]);}return _0x4379e7[_0xc569('0x57')](_0x5380a5);}})[_0xc569('0x21')](function(_0x393781){if(_0x393781){return _0x393781?{'count':_0x402f94,'rows':_0x393781}:null;}})[_0xc569('0x21')](respondWithResult(_0x14348b,null))[_0xc569('0x3f')](handleError(_0x14348b,null));};
\ No newline at end of file
+var _0x750c=['find','create','body','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','findOne','Condition','getAllConditions','getAnyConditions','hasOwnProperty','addAction','TriggerId','getActions','Action','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','apply','save','update','then','Triggers','UserProfileResource','destroy','sendStatus','error','stack','name','map','Trigger','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','params','intersection','include','options'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x750c,0x1ef));var _0xc750=function(_0x44f220,_0x1ec8bc){_0x44f220=_0x44f220-0x0;var _0x2c786f=_0x750c[_0x44f220];return _0x2c786f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc750('0x0'));var zipdir=require(_0xc750('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc750('0x2'));var moment=require(_0xc750('0x3'));var BPromise=require(_0xc750('0x4'));var Mustache=require(_0xc750('0x5'));var util=require(_0xc750('0x6'));var path=require(_0xc750('0x7'));var sox=require(_0xc750('0x8'));var csv=require('to-csv');var ejs=require(_0xc750('0x9'));var fs=require('fs');var fs_extra=require(_0xc750('0xa'));var _=require(_0xc750('0xb'));var squel=require(_0xc750('0xc'));var crypto=require(_0xc750('0xd'));var jsforce=require(_0xc750('0xe'));var deskjs=require(_0xc750('0xf'));var toCsv=require(_0xc750('0x10'));var querystring=require(_0xc750('0x11'));var Papa=require('papaparse');var Redis=require(_0xc750('0x12'));var authService=require(_0xc750('0x13'));var qs=require(_0xc750('0x14'));var as=require(_0xc750('0x15'));var hardwareService=require(_0xc750('0x16'));var logger=require(_0xc750('0x17'))('api');var utils=require(_0xc750('0x18'));var config=require(_0xc750('0x19'));var licenseUtil=require(_0xc750('0x1a'));var db=require(_0xc750('0x1b'))['db'];function respondWithStatusCode(_0x2e681a,_0x32f4cf){_0x32f4cf=_0x32f4cf||0xcc;return function(_0x50dcb4){if(_0x50dcb4){return _0x2e681a['sendStatus'](_0x32f4cf);}return _0x2e681a[_0xc750('0x1c')](_0x32f4cf)[_0xc750('0x1d')]();};}function respondWithResult(_0x25c3af,_0x59c964){_0x59c964=_0x59c964||0xc8;return function(_0xe9e5f2){if(_0xe9e5f2){return _0x25c3af[_0xc750('0x1c')](_0x59c964)[_0xc750('0x1e')](_0xe9e5f2);}};}function respondWithFilteredResult(_0x543f61,_0x19a8ab){return function(_0xb463cc){if(_0xb463cc){var _0x4151f7=typeof _0x19a8ab[_0xc750('0x1f')]===_0xc750('0x20')&&typeof _0x19a8ab['limit']===_0xc750('0x20');var _0x50858f=_0xb463cc['count'];var _0x2c38ed=_0x4151f7?0x0:_0x19a8ab['offset'];var _0x591338=_0x4151f7?_0xb463cc['count']:_0x19a8ab[_0xc750('0x1f')]+_0x19a8ab[_0xc750('0x21')];var _0x2a97aa;if(_0x591338>=_0x50858f){_0x591338=_0x50858f;_0x2a97aa=0xc8;}else{_0x2a97aa=0xce;}_0x543f61[_0xc750('0x1c')](_0x2a97aa);return _0x543f61[_0xc750('0x22')]('Content-Range',_0x2c38ed+'-'+_0x591338+'/'+_0x50858f)[_0xc750('0x1e')](_0xb463cc);}return null;};}function patchUpdates(_0x49f7e2){return function(_0x3c63d5){try{jsonpatch[_0xc750('0x23')](_0x3c63d5,_0x49f7e2,!![]);}catch(_0x55300f){return BPromise['reject'](_0x55300f);}return _0x3c63d5[_0xc750('0x24')]();};}function saveUpdates(_0xc00fb9,_0x35464b){return function(_0x5bba8a){if(_0x5bba8a){return _0x5bba8a[_0xc750('0x25')](_0xc00fb9)[_0xc750('0x26')](function(_0x4be2d8){return _0x4be2d8;});}return null;};}function removeEntity(_0x1c8d70,_0x2f60a9){return function(_0x35dfe2){if(_0x35dfe2){return _0x35dfe2['destroy']()['then'](function(){var _0x3e5c97=_0x35dfe2['get']({'plain':!![]});var _0x3bdeab=_0xc750('0x27');return db[_0xc750('0x28')][_0xc750('0x29')]({'where':{'type':_0x3bdeab,'resourceId':_0x3e5c97['id']}})['then'](function(){return _0x35dfe2;});})['then'](function(){_0x1c8d70[_0xc750('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c7280,_0x99a4c0){return function(_0x5202f7){if(!_0x5202f7){_0x5c7280[_0xc750('0x2a')](0x194);}return _0x5202f7;};}function handleError(_0x387a43,_0x1c2a39){_0x1c2a39=_0x1c2a39||0x1f4;return function(_0x5d4a7d){logger[_0xc750('0x2b')](_0x5d4a7d[_0xc750('0x2c')]);if(_0x5d4a7d['name']){delete _0x5d4a7d[_0xc750('0x2d')];}_0x387a43[_0xc750('0x1c')](_0x1c2a39)['send'](_0x5d4a7d);};}exports['index']=function(_0x4a595c,_0x30a262){var _0x34c9e8={},_0x2c59bf={},_0x309512={'count':0x0,'rows':[]};var _0x3af068=_[_0xc750('0x2e')](db[_0xc750('0x2f')][_0xc750('0x30')],function(_0x38b136){return{'name':_0x38b136[_0xc750('0x31')],'type':_0x38b136[_0xc750('0x32')]['key']};});_0x2c59bf[_0xc750('0x33')]=_[_0xc750('0x2e')](_0x3af068,_0xc750('0x2d'));_0x2c59bf[_0xc750('0x34')]=_[_0xc750('0x35')](_0x4a595c['query']);_0x2c59bf[_0xc750('0x36')]=_['intersection'](_0x2c59bf['model'],_0x2c59bf[_0xc750('0x34')]);_0x34c9e8[_0xc750('0x37')]=_['intersection'](_0x2c59bf['model'],qs[_0xc750('0x38')](_0x4a595c[_0xc750('0x34')]['fields']));_0x34c9e8['attributes']=_0x34c9e8[_0xc750('0x37')][_0xc750('0x39')]?_0x34c9e8[_0xc750('0x37')]:_0x2c59bf['model'];if(!_0x4a595c[_0xc750('0x34')]['hasOwnProperty'](_0xc750('0x3a'))){_0x34c9e8['limit']=qs[_0xc750('0x21')](_0x4a595c['query']['limit']);_0x34c9e8[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x4a595c['query'][_0xc750('0x1f')]);}_0x34c9e8[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x4a595c[_0xc750('0x34')][_0xc750('0x3c')]);_0x34c9e8[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x4a595c[_0xc750('0x34')],_0x2c59bf[_0xc750('0x36')]),_0x3af068);if(_0x4a595c['query'][_0xc750('0x3f')]){_0x34c9e8['where']=_[_0xc750('0x40')](_0x34c9e8[_0xc750('0x3d')],{'$or':_[_0xc750('0x2e')](_0x3af068,function(_0x280b87){if(_0x280b87[_0xc750('0x32')]!==_0xc750('0x41')){var _0x21f998={};_0x21f998[_0x280b87[_0xc750('0x2d')]]={'$like':'%'+_0x4a595c[_0xc750('0x34')]['filter']+'%'};return _0x21f998;}})});}_0x34c9e8=_[_0xc750('0x40')]({},_0x34c9e8,_0x4a595c['options']);var _0x4534c8={'where':_0x34c9e8['where']};return db['Trigger']['count'](_0x4534c8)['then'](function(_0x483064){_0x309512[_0xc750('0x42')]=_0x483064;if(_0x4a595c[_0xc750('0x34')][_0xc750('0x43')]){_0x34c9e8['include']=[{'all':!![]}];}return db[_0xc750('0x2f')][_0xc750('0x44')](_0x34c9e8);})[_0xc750('0x26')](function(_0x57d0fd){_0x309512[_0xc750('0x45')]=_0x57d0fd;return _0x309512;})['then'](respondWithFilteredResult(_0x30a262,_0x34c9e8))[_0xc750('0x46')](handleError(_0x30a262,null));};exports['show']=function(_0x5f1dd1,_0x509ebd){var _0x321308={'raw':![],'where':{'id':_0x5f1dd1[_0xc750('0x47')]['id']}},_0x3d8f98={};_0x3d8f98['model']=_[_0xc750('0x35')](db[_0xc750('0x2f')][_0xc750('0x30')]);_0x3d8f98[_0xc750('0x34')]=_[_0xc750('0x35')](_0x5f1dd1[_0xc750('0x34')]);_0x3d8f98['filters']=_[_0xc750('0x48')](_0x3d8f98[_0xc750('0x33')],_0x3d8f98[_0xc750('0x34')]);_0x321308[_0xc750('0x37')]=_[_0xc750('0x48')](_0x3d8f98[_0xc750('0x33')],qs[_0xc750('0x38')](_0x5f1dd1[_0xc750('0x34')][_0xc750('0x38')]));_0x321308['attributes']=_0x321308[_0xc750('0x37')][_0xc750('0x39')]?_0x321308['attributes']:_0x3d8f98['model'];if(_0x5f1dd1[_0xc750('0x34')]['includeAll']){_0x321308[_0xc750('0x49')]=[{'all':!![]}];}_0x321308=_[_0xc750('0x40')]({},_0x321308,_0x5f1dd1[_0xc750('0x4a')]);return db[_0xc750('0x2f')][_0xc750('0x4b')](_0x321308)[_0xc750('0x26')](handleEntityNotFound(_0x509ebd,null))[_0xc750('0x26')](respondWithResult(_0x509ebd,null))[_0xc750('0x46')](handleError(_0x509ebd,null));};exports[_0xc750('0x4c')]=function(_0x401138,_0x3c5d3b){return db[_0xc750('0x2f')]['create'](_0x401138[_0xc750('0x4d')],{})[_0xc750('0x26')](function(_0x264f26){var _0x504be0=_0x401138[_0xc750('0x4e')][_0xc750('0x4f')]({'plain':!![]});if(!_0x504be0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x504be0['role']==='user'){var _0x18dfd4=_0x264f26['get']({'plain':!![]});var _0x13cbe8=_0xc750('0x27');return db['UserProfileSection'][_0xc750('0x4b')]({'where':{'name':_0x13cbe8,'userProfileId':_0x504be0['userProfileId']},'raw':!![]})[_0xc750('0x26')](function(_0x369758){if(_0x369758&&_0x369758[_0xc750('0x50')]===0x0){return db['UserProfileResource'][_0xc750('0x4c')]({'name':_0x18dfd4[_0xc750('0x2d')],'resourceId':_0x18dfd4['id'],'type':_0x369758['name'],'sectionId':_0x369758['id']},{})[_0xc750('0x26')](function(){return _0x264f26;});}else{return _0x264f26;}})[_0xc750('0x46')](function(_0x6f4f37){logger[_0xc750('0x2b')](_0xc750('0x51'),_0x6f4f37);throw _0x6f4f37;});}return _0x264f26;})[_0xc750('0x26')](respondWithResult(_0x3c5d3b,0xc9))[_0xc750('0x46')](handleError(_0x3c5d3b,null));};exports[_0xc750('0x25')]=function(_0x2ad3a9,_0x5f1d22){if(_0x2ad3a9[_0xc750('0x4d')]['id']){delete _0x2ad3a9[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x2ad3a9[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x5f1d22,null))[_0xc750('0x26')](saveUpdates(_0x2ad3a9['body'],null))[_0xc750('0x26')](respondWithResult(_0x5f1d22,null))[_0xc750('0x46')](handleError(_0x5f1d22,null));};exports[_0xc750('0x29')]=function(_0x372040,_0x56be7e){return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x372040[_0xc750('0x47')]['id']}})['then'](handleEntityNotFound(_0x56be7e,null))[_0xc750('0x26')](removeEntity(_0x56be7e,null))[_0xc750('0x46')](handleError(_0x56be7e,null));};exports[_0xc750('0x52')]=function(_0x2ed454,_0x113bf7,_0x295113){if(_0x2ed454[_0xc750('0x4d')]['id']){delete _0x2ed454[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')]['find']({'where':{'id':_0x2ed454[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x113bf7,null))[_0xc750('0x26')](function(_0x496b99){if(_0x496b99){_0x2ed454[_0xc750('0x4d')][_0xc750('0x53')]=_0x496b99['id'];return db['Condition']['create'](_0x2ed454[_0xc750('0x4d')]);}})['then'](respondWithResult(_0x113bf7,null))['catch'](handleError(_0x113bf7,null));};exports[_0xc750('0x54')]=function(_0x53704d,_0xf276a2,_0x15f2de){if(_0x53704d[_0xc750('0x4d')]['id']){delete _0x53704d[_0xc750('0x4d')]['id'];}return db[_0xc750('0x2f')]['find']({'where':{'id':_0x53704d['params']['id']}})['then'](handleEntityNotFound(_0xf276a2,null))['then'](function(_0x1dd052){if(_0x1dd052){_0x53704d[_0xc750('0x4d')][_0xc750('0x55')]=_0x1dd052['id'];return db['Condition'][_0xc750('0x4c')](_0x53704d[_0xc750('0x4d')]);}})[_0xc750('0x26')](respondWithResult(_0xf276a2,null))[_0xc750('0x46')](handleError(_0xf276a2,null));};exports['getAllConditions']=function(_0x25da86,_0x3888fd,_0x182912){var _0x4f4b0c={};var _0x5d553b={};var _0x16c2d0;var _0x2e0d9f;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x25da86[_0xc750('0x47')]['id']}})['then'](handleEntityNotFound(_0x3888fd,null))['then'](function(_0x168e5a){if(_0x168e5a){_0x16c2d0=_0x168e5a;_0x5d553b['model']=_[_0xc750('0x35')](db[_0xc750('0x57')][_0xc750('0x30')]);_0x5d553b[_0xc750('0x34')]=_[_0xc750('0x35')](_0x25da86[_0xc750('0x34')]);_0x5d553b[_0xc750('0x36')]=_[_0xc750('0x48')](_0x5d553b[_0xc750('0x33')],_0x5d553b[_0xc750('0x34')]);_0x4f4b0c['attributes']=_[_0xc750('0x48')](_0x5d553b[_0xc750('0x33')],qs['fields'](_0x25da86[_0xc750('0x34')][_0xc750('0x38')]));_0x4f4b0c[_0xc750('0x37')]=_0x4f4b0c[_0xc750('0x37')][_0xc750('0x39')]?_0x4f4b0c[_0xc750('0x37')]:_0x5d553b['model'];_0x4f4b0c[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x25da86[_0xc750('0x34')][_0xc750('0x3c')]);_0x4f4b0c['where']=qs[_0xc750('0x36')](_['pick'](_0x25da86[_0xc750('0x34')],_0x5d553b['filters']));if(_0x25da86[_0xc750('0x34')][_0xc750('0x3f')]){_0x4f4b0c['where']=_[_0xc750('0x40')](_0x4f4b0c[_0xc750('0x3d')],{'$or':_[_0xc750('0x2e')](_0x4f4b0c[_0xc750('0x37')],function(_0x1843e6){var _0x46a5c0={};_0x46a5c0[_0x1843e6]={'$like':'%'+_0x25da86['query'][_0xc750('0x3f')]+'%'};return _0x46a5c0;})});}_0x4f4b0c=_['merge']({},_0x4f4b0c,_0x25da86[_0xc750('0x4a')]);return _0x16c2d0[_0xc750('0x58')](_0x4f4b0c);}})[_0xc750('0x26')](function(_0x2c1fe4){if(_0x2c1fe4){_0x2e0d9f=_0x2c1fe4['length'];if(!_0x25da86[_0xc750('0x34')]['hasOwnProperty'](_0xc750('0x3a'))){_0x4f4b0c[_0xc750('0x21')]=qs[_0xc750('0x21')](_0x25da86['query'][_0xc750('0x21')]);_0x4f4b0c[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x25da86[_0xc750('0x34')]['offset']);}return _0x16c2d0[_0xc750('0x58')](_0x4f4b0c);}})[_0xc750('0x26')](function(_0x47e3b5){if(_0x47e3b5){return _0x47e3b5?{'count':_0x2e0d9f,'rows':_0x47e3b5}:null;}})['then'](respondWithResult(_0x3888fd,null))[_0xc750('0x46')](handleError(_0x3888fd,null));};exports[_0xc750('0x59')]=function(_0x152e5e,_0x396eca,_0x3999e8){var _0x3b5664={};var _0x4ceced={};var _0x2334c1;var _0x8e5757;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x152e5e[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x396eca,null))['then'](function(_0x55f18a){if(_0x55f18a){_0x2334c1=_0x55f18a;_0x4ceced[_0xc750('0x33')]=_[_0xc750('0x35')](db['Condition']['rawAttributes']);_0x4ceced[_0xc750('0x34')]=_[_0xc750('0x35')](_0x152e5e[_0xc750('0x34')]);_0x4ceced[_0xc750('0x36')]=_[_0xc750('0x48')](_0x4ceced[_0xc750('0x33')],_0x4ceced[_0xc750('0x34')]);_0x3b5664[_0xc750('0x37')]=_['intersection'](_0x4ceced[_0xc750('0x33')],qs[_0xc750('0x38')](_0x152e5e['query'][_0xc750('0x38')]));_0x3b5664[_0xc750('0x37')]=_0x3b5664[_0xc750('0x37')][_0xc750('0x39')]?_0x3b5664['attributes']:_0x4ceced[_0xc750('0x33')];_0x3b5664[_0xc750('0x3b')]=qs[_0xc750('0x3c')](_0x152e5e[_0xc750('0x34')][_0xc750('0x3c')]);_0x3b5664[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x152e5e['query'],_0x4ceced[_0xc750('0x36')]));if(_0x152e5e[_0xc750('0x34')][_0xc750('0x3f')]){_0x3b5664[_0xc750('0x3d')]=_[_0xc750('0x40')](_0x3b5664['where'],{'$or':_[_0xc750('0x2e')](_0x3b5664[_0xc750('0x37')],function(_0x127dd2){var _0x358af1={};_0x358af1[_0x127dd2]={'$like':'%'+_0x152e5e[_0xc750('0x34')][_0xc750('0x3f')]+'%'};return _0x358af1;})});}_0x3b5664=_['merge']({},_0x3b5664,_0x152e5e[_0xc750('0x4a')]);return _0x2334c1[_0xc750('0x59')](_0x3b5664);}})[_0xc750('0x26')](function(_0x546ccd){if(_0x546ccd){_0x8e5757=_0x546ccd[_0xc750('0x39')];if(!_0x152e5e[_0xc750('0x34')][_0xc750('0x5a')](_0xc750('0x3a'))){_0x3b5664[_0xc750('0x21')]=qs['limit'](_0x152e5e[_0xc750('0x34')][_0xc750('0x21')]);_0x3b5664[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x152e5e['query'][_0xc750('0x1f')]);}return _0x2334c1[_0xc750('0x59')](_0x3b5664);}})[_0xc750('0x26')](function(_0x1cd37b){if(_0x1cd37b){return _0x1cd37b?{'count':_0x8e5757,'rows':_0x1cd37b}:null;}})[_0xc750('0x26')](respondWithResult(_0x396eca,null))[_0xc750('0x46')](handleError(_0x396eca,null));};exports[_0xc750('0x5b')]=function(_0x35c08f,_0x4d4071,_0x4ccf76){if(_0x35c08f['body']['id']){delete _0x35c08f['body']['id'];}return db[_0xc750('0x2f')][_0xc750('0x4b')]({'where':{'id':_0x35c08f[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x4d4071,null))[_0xc750('0x26')](function(_0x139104){if(_0x139104){_0x35c08f['body'][_0xc750('0x5c')]=_0x139104['id'];return db['Action'][_0xc750('0x4c')](_0x35c08f[_0xc750('0x4d')]);}})[_0xc750('0x26')](respondWithResult(_0x4d4071,null))[_0xc750('0x46')](handleError(_0x4d4071,null));};exports[_0xc750('0x5d')]=function(_0x25c4f7,_0x12fa58,_0x28b085){var _0x147a8b={};var _0x415bbd={};var _0x1c104c;var _0x155dd0;return db[_0xc750('0x2f')][_0xc750('0x56')]({'where':{'id':_0x25c4f7[_0xc750('0x47')]['id']}})[_0xc750('0x26')](handleEntityNotFound(_0x12fa58,null))[_0xc750('0x26')](function(_0x247b77){if(_0x247b77){_0x1c104c=_0x247b77;_0x415bbd['model']=_[_0xc750('0x35')](db[_0xc750('0x5e')][_0xc750('0x30')]);_0x415bbd[_0xc750('0x34')]=_[_0xc750('0x35')](_0x25c4f7[_0xc750('0x34')]);_0x415bbd[_0xc750('0x36')]=_['intersection'](_0x415bbd[_0xc750('0x33')],_0x415bbd[_0xc750('0x34')]);_0x147a8b[_0xc750('0x37')]=_[_0xc750('0x48')](_0x415bbd[_0xc750('0x33')],qs[_0xc750('0x38')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x38')]));_0x147a8b[_0xc750('0x37')]=_0x147a8b[_0xc750('0x37')][_0xc750('0x39')]?_0x147a8b[_0xc750('0x37')]:_0x415bbd[_0xc750('0x33')];_0x147a8b['order']=qs[_0xc750('0x3c')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x3c')]);_0x147a8b[_0xc750('0x3d')]=qs[_0xc750('0x36')](_[_0xc750('0x3e')](_0x25c4f7[_0xc750('0x34')],_0x415bbd[_0xc750('0x36')]));if(_0x25c4f7[_0xc750('0x34')][_0xc750('0x3f')]){_0x147a8b[_0xc750('0x3d')]=_[_0xc750('0x40')](_0x147a8b['where'],{'$or':_[_0xc750('0x2e')](_0x147a8b[_0xc750('0x37')],function(_0x1a49ea){var _0x3b253c={};_0x3b253c[_0x1a49ea]={'$like':'%'+_0x25c4f7[_0xc750('0x34')][_0xc750('0x3f')]+'%'};return _0x3b253c;})});}_0x147a8b=_['merge']({},_0x147a8b,_0x25c4f7[_0xc750('0x4a')]);return _0x1c104c['getActions'](_0x147a8b);}})[_0xc750('0x26')](function(_0x18097d){if(_0x18097d){_0x155dd0=_0x18097d[_0xc750('0x39')];if(!_0x25c4f7[_0xc750('0x34')][_0xc750('0x5a')](_0xc750('0x3a'))){_0x147a8b[_0xc750('0x21')]=qs[_0xc750('0x21')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x21')]);_0x147a8b[_0xc750('0x1f')]=qs[_0xc750('0x1f')](_0x25c4f7[_0xc750('0x34')][_0xc750('0x1f')]);}return _0x1c104c[_0xc750('0x5d')](_0x147a8b);}})[_0xc750('0x26')](function(_0x100e7b){if(_0x100e7b){return _0x100e7b?{'count':_0x155dd0,'rows':_0x100e7b}:null;}})[_0xc750('0x26')](respondWithResult(_0x12fa58,null))[_0xc750('0x46')](handleError(_0x12fa58,null));};
\ No newline at end of file
index 644df87..1968c9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10af=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Trigger','tools_triggers'];(function(_0x385592,_0x1bc29d){var _0x197929=function(_0x7f91fe){while(--_0x7f91fe){_0x385592['push'](_0x385592['shift']());}};_0x197929(++_0x1bc29d);}(_0x10af,0xfc));var _0xf10a=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x10af[_0x1beef3];return _0x5af964;};'use strict';var _=require(_0xf10a('0x0'));var util=require('util');var logger=require(_0xf10a('0x1'))(_0xf10a('0x2'));var moment=require(_0xf10a('0x3'));var BPromise=require(_0xf10a('0x4'));var rp=require(_0xf10a('0x5'));var fs=require('fs');var path=require(_0xf10a('0x6'));var rimraf=require(_0xf10a('0x7'));var config=require(_0xf10a('0x8'));var attributes=require('./trigger.attributes');module[_0xf10a('0x9')]=function(_0xf86ea1,_0x5c9a4c){return _0xf86ea1['define'](_0xf10a('0xa'),attributes,{'tableName':_0xf10a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab86=['util','../../config/logger','bluebird','path','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash'];(function(_0x2f99b7,_0x6301f9){var _0x2a201b=function(_0x32e6e8){while(--_0x32e6e8){_0x2f99b7['push'](_0x2f99b7['shift']());}};_0x2a201b(++_0x6301f9);}(_0xab86,0x13e));var _0x6ab8=function(_0x403adb,_0x267efc){_0x403adb=_0x403adb-0x0;var _0x4589f7=_0xab86[_0x403adb];return _0x4589f7;};'use strict';var _=require(_0x6ab8('0x0'));var util=require(_0x6ab8('0x1'));var logger=require(_0x6ab8('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6ab8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ab8('0x4'));var rimraf=require('rimraf');var config=require(_0x6ab8('0x5'));var attributes=require(_0x6ab8('0x6'));module[_0x6ab8('0x7')]=function(_0x154d17,_0x6f41f){return _0x154d17[_0x6ab8('0x8')](_0x6ab8('0x9'),attributes,{'tableName':_0x6ab8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f280473..d460573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da5=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','GetTrigger','Trigger','options','raw','where','attributes','limit','include','map','model','then','info','ShowTrigger','find','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3da5,0x1b9));var _0x53da=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3da5[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x53da('0x0'));var moment=require('moment');var BPromise=require(_0x53da('0x1'));var rs=require(_0x53da('0x2'));var fs=require('fs');var Redis=require(_0x53da('0x3'));var db=require(_0x53da('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x53da('0x5'));var config=require(_0x53da('0x6'));var jayson=require(_0x53da('0x7'));var client=jayson[_0x53da('0x8')][_0x53da('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x204056,_0x19d945,_0x4d3980){return new BPromise(function(_0x352469,_0x44d566){return client[_0x53da('0xa')](_0x204056,_0x4d3980)['then'](function(_0x425631){logger['info'](_0x53da('0xb'),_0x19d945,_0x53da('0xc'));logger[_0x53da('0xd')]('Trigger,\x20%s,\x20%s,\x20%s',_0x19d945,'request\x20sent',JSON[_0x53da('0xe')](_0x425631));if(_0x425631['error']){if(_0x425631['error'][_0x53da('0xf')]===0x1f4){logger[_0x53da('0x10')](_0x53da('0xb'),_0x19d945,_0x425631[_0x53da('0x10')][_0x53da('0x11')]);return _0x44d566(_0x425631['error'][_0x53da('0x11')]);}logger[_0x53da('0x10')]('Trigger,\x20%s,\x20%s',_0x19d945,_0x425631['error'][_0x53da('0x11')]);return _0x352469(_0x425631[_0x53da('0x10')][_0x53da('0x11')]);}else{logger['info'](_0x53da('0xb'),_0x19d945,_0x53da('0xc'));_0x352469(_0x425631[_0x53da('0x12')][_0x53da('0x11')]);}})[_0x53da('0x13')](function(_0x2e443e){logger[_0x53da('0x10')](_0x53da('0xb'),_0x19d945,_0x2e443e);_0x44d566(_0x2e443e);});});}exports[_0x53da('0x14')]=function(_0x5ca150){var _0x422749=this;return new Promise(function(_0x532b2a,_0x3a83bd){return db[_0x53da('0x15')]['findAll']({'raw':_0x5ca150[_0x53da('0x16')]?_0x5ca150[_0x53da('0x16')][_0x53da('0x17')]===undefined?!![]:![]:!![],'where':_0x5ca150['options']?_0x5ca150['options'][_0x53da('0x18')]||null:null,'attributes':_0x5ca150['options']?_0x5ca150[_0x53da('0x16')][_0x53da('0x19')]||null:null,'limit':_0x5ca150[_0x53da('0x16')]?_0x5ca150[_0x53da('0x16')][_0x53da('0x1a')]||null:null,'include':_0x5ca150['options']?_0x5ca150['options'][_0x53da('0x1b')]?_[_0x53da('0x1c')](_0x5ca150[_0x53da('0x16')]['include'],function(_0x33c566){return{'model':db[_0x33c566[_0x53da('0x1d')]],'as':_0x33c566['as'],'attributes':_0x33c566[_0x53da('0x19')],'include':_0x33c566[_0x53da('0x1b')]?_[_0x53da('0x1c')](_0x33c566[_0x53da('0x1b')],function(_0x5eeaee){return{'model':db[_0x5eeaee[_0x53da('0x1d')]],'as':_0x5eeaee['as'],'attributes':_0x5eeaee[_0x53da('0x19')],'include':_0x5eeaee['include']?_[_0x53da('0x1c')](_0x5eeaee[_0x53da('0x1b')],function(_0x383e5f){return{'model':db[_0x383e5f[_0x53da('0x1d')]],'as':_0x383e5f['as'],'attributes':_0x383e5f['attributes']};}):[]};}):[]};}):[]:[]})[_0x53da('0x1e')](function(_0x1ce204){logger[_0x53da('0x1f')]('GetTrigger',_0x5ca150);logger[_0x53da('0xd')](_0x53da('0x14'),_0x5ca150,JSON[_0x53da('0xe')](_0x1ce204));_0x532b2a(_0x1ce204);})['catch'](function(_0x4b9c7f){logger[_0x53da('0x10')]('GetTrigger',_0x4b9c7f[_0x53da('0x11')],_0x5ca150);_0x3a83bd(_0x422749[_0x53da('0x10')](0x1f4,_0x4b9c7f[_0x53da('0x11')]));});});};exports[_0x53da('0x20')]=function(_0x5ca30f){var _0x20ca0e=this;return new Promise(function(_0x409a54,_0x4cedc1){return db[_0x53da('0x15')][_0x53da('0x21')]({'raw':_0x5ca30f[_0x53da('0x16')]?_0x5ca30f[_0x53da('0x16')][_0x53da('0x17')]===undefined?!![]:![]:!![],'where':_0x5ca30f[_0x53da('0x16')]?_0x5ca30f[_0x53da('0x16')][_0x53da('0x18')]||null:null,'attributes':_0x5ca30f['options']?_0x5ca30f[_0x53da('0x16')][_0x53da('0x19')]||null:null,'include':_0x5ca30f[_0x53da('0x16')]?_0x5ca30f[_0x53da('0x16')]['include']?_[_0x53da('0x1c')](_0x5ca30f[_0x53da('0x16')][_0x53da('0x1b')],function(_0x2d0607){return{'model':db[_0x2d0607[_0x53da('0x1d')]],'as':_0x2d0607['as'],'attributes':_0x2d0607['attributes'],'include':_0x2d0607[_0x53da('0x1b')]?_[_0x53da('0x1c')](_0x2d0607['include'],function(_0x19d6c2){return{'model':db[_0x19d6c2[_0x53da('0x1d')]],'as':_0x19d6c2['as'],'attributes':_0x19d6c2[_0x53da('0x19')],'include':_0x19d6c2[_0x53da('0x1b')]?_['map'](_0x19d6c2[_0x53da('0x1b')],function(_0x2a19a5){return{'model':db[_0x2a19a5['model']],'as':_0x2a19a5['as'],'attributes':_0x2a19a5[_0x53da('0x19')]};}):[]};}):[]};}):[]:[]})[_0x53da('0x1e')](function(_0x2f2e3e){logger[_0x53da('0x1f')](_0x53da('0x20'),_0x5ca30f);logger[_0x53da('0xd')](_0x53da('0x20'),_0x5ca30f,JSON[_0x53da('0xe')](_0x2f2e3e));_0x409a54(_0x2f2e3e);})[_0x53da('0x13')](function(_0xb2e480){logger[_0x53da('0x10')](_0x53da('0x20'),_0xb2e480[_0x53da('0x11')],_0x5ca30f);_0x4cedc1(_0x20ca0e[_0x53da('0x10')](0x1f4,_0xb2e480[_0x53da('0x11')]));});});};
\ No newline at end of file
+var _0x8423=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','map','include','model','ShowTrigger','util','moment'];(function(_0x15e566,_0x343b37){var _0x587b0b=function(_0x242345){while(--_0x242345){_0x15e566['push'](_0x15e566['shift']());}};_0x587b0b(++_0x343b37);}(_0x8423,0x11e));var _0x3842=function(_0x48008f,_0x7e49f8){_0x48008f=_0x48008f-0x0;var _0x2cb4b1=_0x8423[_0x48008f];return _0x2cb4b1;};'use strict';var _=require('lodash');var util=require(_0x3842('0x0'));var moment=require(_0x3842('0x1'));var BPromise=require('bluebird');var rs=require(_0x3842('0x2'));var fs=require('fs');var Redis=require(_0x3842('0x3'));var db=require(_0x3842('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3842('0x5'));var config=require(_0x3842('0x6'));var jayson=require(_0x3842('0x7'));var client=jayson['client'][_0x3842('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5861b5,_0x37c709,_0x17caa4){return new BPromise(function(_0xbbc34b,_0xfa89fa){return client[_0x3842('0x9')](_0x5861b5,_0x17caa4)[_0x3842('0xa')](function(_0x5cbbad){logger[_0x3842('0xb')]('Trigger,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'));logger[_0x3842('0xd')]('Trigger,\x20%s,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'),JSON[_0x3842('0xe')](_0x5cbbad));if(_0x5cbbad[_0x3842('0xf')]){if(_0x5cbbad[_0x3842('0xf')][_0x3842('0x10')]===0x1f4){logger[_0x3842('0xf')](_0x3842('0x11'),_0x37c709,_0x5cbbad['error'][_0x3842('0x12')]);return _0xfa89fa(_0x5cbbad['error'][_0x3842('0x12')]);}logger[_0x3842('0xf')](_0x3842('0x11'),_0x37c709,_0x5cbbad[_0x3842('0xf')][_0x3842('0x12')]);return _0xbbc34b(_0x5cbbad[_0x3842('0xf')]['message']);}else{logger[_0x3842('0xb')]('Trigger,\x20%s,\x20%s',_0x37c709,_0x3842('0xc'));_0xbbc34b(_0x5cbbad[_0x3842('0x13')][_0x3842('0x12')]);}})[_0x3842('0x14')](function(_0x4ba7cc){logger['error'](_0x3842('0x11'),_0x37c709,_0x4ba7cc);_0xfa89fa(_0x4ba7cc);});});}exports[_0x3842('0x15')]=function(_0x5c1ec6){var _0x5a6643=this;return new Promise(function(_0x30d6ae,_0x253431){return db[_0x3842('0x16')][_0x3842('0x17')]({'raw':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6['options'][_0x3842('0x19')]===undefined?!![]:![]:!![],'where':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6['options'][_0x3842('0x1a')]||null:null,'attributes':_0x5c1ec6['options']?_0x5c1ec6['options'][_0x3842('0x1b')]||null:null,'limit':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6[_0x3842('0x18')]['limit']||null:null,'include':_0x5c1ec6[_0x3842('0x18')]?_0x5c1ec6[_0x3842('0x18')]['include']?_[_0x3842('0x1c')](_0x5c1ec6[_0x3842('0x18')][_0x3842('0x1d')],function(_0xa529fd){return{'model':db[_0xa529fd[_0x3842('0x1e')]],'as':_0xa529fd['as'],'attributes':_0xa529fd[_0x3842('0x1b')],'include':_0xa529fd[_0x3842('0x1d')]?_['map'](_0xa529fd['include'],function(_0x1daf23){return{'model':db[_0x1daf23[_0x3842('0x1e')]],'as':_0x1daf23['as'],'attributes':_0x1daf23[_0x3842('0x1b')],'include':_0x1daf23[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x1daf23['include'],function(_0x5be7ab){return{'model':db[_0x5be7ab[_0x3842('0x1e')]],'as':_0x5be7ab['as'],'attributes':_0x5be7ab[_0x3842('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ba319){logger[_0x3842('0xb')](_0x3842('0x15'),_0x5c1ec6);logger[_0x3842('0xd')](_0x3842('0x15'),_0x5c1ec6,JSON[_0x3842('0xe')](_0x5ba319));_0x30d6ae(_0x5ba319);})[_0x3842('0x14')](function(_0x3f9f81){logger[_0x3842('0xf')](_0x3842('0x15'),_0x3f9f81[_0x3842('0x12')],_0x5c1ec6);_0x253431(_0x5a6643[_0x3842('0xf')](0x1f4,_0x3f9f81[_0x3842('0x12')]));});});};exports[_0x3842('0x1f')]=function(_0x3635d3){var _0x2c46a4=this;return new Promise(function(_0x410bb8,_0x632200){return db[_0x3842('0x16')]['find']({'raw':_0x3635d3['options']?_0x3635d3[_0x3842('0x18')][_0x3842('0x19')]===undefined?!![]:![]:!![],'where':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1a')]||null:null,'attributes':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1b')]||null:null,'include':_0x3635d3[_0x3842('0x18')]?_0x3635d3[_0x3842('0x18')][_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x3635d3[_0x3842('0x18')]['include'],function(_0xd328e1){return{'model':db[_0xd328e1[_0x3842('0x1e')]],'as':_0xd328e1['as'],'attributes':_0xd328e1[_0x3842('0x1b')],'include':_0xd328e1[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0xd328e1[_0x3842('0x1d')],function(_0x47ac97){return{'model':db[_0x47ac97[_0x3842('0x1e')]],'as':_0x47ac97['as'],'attributes':_0x47ac97['attributes'],'include':_0x47ac97[_0x3842('0x1d')]?_[_0x3842('0x1c')](_0x47ac97[_0x3842('0x1d')],function(_0x45db8d){return{'model':db[_0x45db8d[_0x3842('0x1e')]],'as':_0x45db8d['as'],'attributes':_0x45db8d[_0x3842('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3842('0xa')](function(_0x5b8d91){logger['info'](_0x3842('0x1f'),_0x3635d3);logger['debug'](_0x3842('0x1f'),_0x3635d3,JSON[_0x3842('0xe')](_0x5b8d91));_0x410bb8(_0x5b8d91);})[_0x3842('0x14')](function(_0x2237bb){logger[_0x3842('0xf')](_0x3842('0x1f'),_0x2237bb[_0x3842('0x12')],_0x3635d3);_0x632200(_0x2c46a4[_0x3842('0xf')](0x1f4,_0x2237bb[_0x3842('0x12')]));});});};
\ No newline at end of file
index 044fe11..435adf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x168d=['util','path','express','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','show','post','/:id/clone','clone','create','put','delete','/:id','exports','multer'];(function(_0x4f373a,_0x4223a5){var _0x17bede=function(_0x4a8f6c){while(--_0x4a8f6c){_0x4f373a['push'](_0x4f373a['shift']());}};_0x17bede(++_0x4223a5);}(_0x168d,0x1c7));var _0xd168=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x168d[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0xd168('0x0'));var util=require(_0xd168('0x1'));var path=require(_0xd168('0x2'));var timeout=require('connect-timeout');var express=require(_0xd168('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd168('0x4'));var config=require(_0xd168('0x5'));var controller=require(_0xd168('0x6'));router[_0xd168('0x7')]('/',auth[_0xd168('0x8')](),controller[_0xd168('0x9')]);router[_0xd168('0x7')]('/:id',auth[_0xd168('0x8')](),controller[_0xd168('0xa')]);router[_0xd168('0xb')](_0xd168('0xc'),auth[_0xd168('0x8')](),controller[_0xd168('0xd')]);router[_0xd168('0xb')]('/',auth[_0xd168('0x8')](),controller[_0xd168('0xe')]);router[_0xd168('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd168('0x10')](_0xd168('0x11'),auth[_0xd168('0x8')](),controller['destroy']);module[_0xd168('0x12')]=router;
\ No newline at end of file
+var _0x8f68=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/clone','clone','create','put','update','delete','multer','util'];(function(_0x3499fa,_0x4121d7){var _0x6b6ff0=function(_0x407745){while(--_0x407745){_0x3499fa['push'](_0x3499fa['shift']());}};_0x6b6ff0(++_0x4121d7);}(_0x8f68,0x1b6));var _0x88f6=function(_0x1ad7d5,_0x4e06db){_0x1ad7d5=_0x1ad7d5-0x0;var _0x100716=_0x8f68[_0x1ad7d5];return _0x100716;};'use strict';var multer=require(_0x88f6('0x0'));var util=require(_0x88f6('0x1'));var path=require(_0x88f6('0x2'));var timeout=require(_0x88f6('0x3'));var express=require(_0x88f6('0x4'));var router=express[_0x88f6('0x5')]();var fs_extra=require(_0x88f6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x88f6('0x7'));var config=require(_0x88f6('0x8'));var controller=require('./trunk.controller');router[_0x88f6('0x9')]('/',auth[_0x88f6('0xa')](),controller[_0x88f6('0xb')]);router['get'](_0x88f6('0xc'),auth[_0x88f6('0xa')](),controller[_0x88f6('0xd')]);router['post'](_0x88f6('0xe'),auth[_0x88f6('0xa')](),controller[_0x88f6('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x88f6('0x10')]);router[_0x88f6('0x11')](_0x88f6('0xc'),auth[_0x88f6('0xa')](),controller[_0x88f6('0x12')]);router[_0x88f6('0x13')](_0x88f6('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cb37623..561481a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa662=['force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','uac','uas','pai','fingerprint','certificate','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','STRING','name','ENUM','friend','user','peer','ALLOWED_FAILED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','auto','nonat','update','outgoing','yes'];(function(_0xb7c1e0,_0x696ce1){var _0x121d4a=function(_0x15edb4){while(--_0x15edb4){_0xb7c1e0['push'](_0xb7c1e0['shift']());}};_0x121d4a(++_0x696ce1);}(_0xa662,0x190));var _0x2a66=function(_0x19635f,_0x564859){_0x19635f=_0x19635f-0x0;var _0x482132=_0xa662[_0x19635f];return _0x482132;};'use strict';var Sequelize=require(_0x2a66('0x0'));module['exports']={'name':{'type':Sequelize[_0x2a66('0x1')],'allowNull':![],'unique':_0x2a66('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x4'),_0x2a66('0x5'),_0x2a66('0x6')),'allowNull':![],'defaultValue':_0x2a66('0x4')},'context':{'type':Sequelize[_0x2a66('0x1')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x2a66('0x3')]('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0x2a66('0x7'),'ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0x2a66('0x8'),_0x2a66('0x9'))},'deny':{'type':Sequelize[_0x2a66('0x1')]},'permit':{'type':Sequelize[_0x2a66('0x1')]},'secret':{'type':Sequelize[_0x2a66('0x1')]},'md5secret':{'type':Sequelize[_0x2a66('0x1')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x2a66('0x1')],'defaultValue':'udp','set':function(_0x141628){this[_0x2a66('0xa')](_0x2a66('0xb'),_0x141628?_0x141628[_0x2a66('0xc')](','):null);},'get':function(){return this[_0x2a66('0xd')](_0x2a66('0xb'))?this['getDataValue'](_0x2a66('0xb'))[_0x2a66('0xe')](','):null;},'comment':_0x2a66('0xf')},'dtmfmode':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x10'),'info',_0x2a66('0x11'),'inband',_0x2a66('0x12')),'defaultValue':_0x2a66('0x10')},'directmedia':{'type':Sequelize[_0x2a66('0x3')]('yes','no',_0x2a66('0x13'),_0x2a66('0x14'),_0x2a66('0x15')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x2a66('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x2a66('0x1')]},'directmediadeny':{'type':Sequelize[_0x2a66('0x1')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x2a66('0x17'),'set':function(_0x42c5ca){this['setDataValue']('nat',_0x42c5ca?_0x42c5ca['join'](','):null);},'get':function(){return this[_0x2a66('0xd')](_0x2a66('0x18'))?this['getDataValue'](_0x2a66('0x18'))[_0x2a66('0xe')](','):null;},'comment':_0x2a66('0x19')},'callgroup':{'type':Sequelize[_0x2a66('0x1')]},'namedcallgroup':{'type':Sequelize[_0x2a66('0x1')]},'pickupgroup':{'type':Sequelize[_0x2a66('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x2a66('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x2a66('0x1a')},'allow':{'type':Sequelize[_0x2a66('0x1')],'allowNull':![],'defaultValue':_0x2a66('0x1b'),'set':function(_0x3ad705){this['setDataValue'](_0x2a66('0x1c'),_0x3ad705?_0x3ad705[_0x2a66('0xc')](';'):_0x2a66('0x1b'));},'get':function(){return this[_0x2a66('0xd')](_0x2a66('0x1c'))?this[_0x2a66('0xd')]('allow')['split'](';'):null;},'comment':_0x2a66('0x1d')},'autoframing':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x2a66('0x1e'),'set':function(_0x5f2443){this[_0x2a66('0xa')](_0x2a66('0x1f'),_0x5f2443?_0x5f2443[_0x2a66('0xc')](','):null);},'get':function(){return this['getDataValue'](_0x2a66('0x1f'))?this['getDataValue'](_0x2a66('0x1f'))[_0x2a66('0xe')](','):null;},'comment':_0x2a66('0x20')},'trustrpid':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no',_0x2a66('0x21'))},'promiscredir':{'type':Sequelize[_0x2a66('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0x2a66('0x3')]('yes','no')},'accountcode':{'type':Sequelize[_0x2a66('0x22')](0xb)},'setvar':{'type':Sequelize[_0x2a66('0x1')]},'callerid':{'type':Sequelize[_0x2a66('0x1')],'defaultValue':_0x2a66('0x23')},'amaflags':{'type':Sequelize[_0x2a66('0x1')]},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x2a66('0x16')},'busylevel':{'type':Sequelize[_0x2a66('0x22')](0xb)},'allowoverlap':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'allowsubscribe':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0x2a66('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no',_0x2a66('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'mailbox':{'type':Sequelize[_0x2a66('0x1')]},'session_timers':{'type':Sequelize[_0x2a66('0x3')]('accept','refuse','originate')},'session_expires':{'type':Sequelize[_0x2a66('0x22')](0xb)},'session_minse':{'type':Sequelize[_0x2a66('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x25'),_0x2a66('0x26')),'defaultValue':_0x2a66('0x26')},'t38pt_usertpsource':{'type':Sequelize[_0x2a66('0x1')]},'regexten':{'type':Sequelize[_0x2a66('0x1')]},'fromdomain':{'type':Sequelize[_0x2a66('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x2a66('0x22')](0x5)},'qualify':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no'),'defaultValue':_0x2a66('0x16')},'keepalive':{'type':Sequelize[_0x2a66('0x22')](0xb)},'defaultip':{'type':Sequelize[_0x2a66('0x1')]},'defaultuser':{'type':Sequelize[_0x2a66('0x1')]},'rtptimeout':{'type':Sequelize[_0x2a66('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x2a66('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x2a66('0x16'),'no',_0x2a66('0x27')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x2a66('0x1')]},'callbackextension':{'type':Sequelize[_0x2a66('0x1')]},'timert1':{'type':Sequelize[_0x2a66('0x22')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x2a66('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x2a66('0x1')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x2a66('0x1')]},'maxforwards':{'type':Sequelize[_0x2a66('0x22')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x2a66('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0x2a66('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0x2a66('0x3')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no',_0x2a66('0x28'),_0x2a66('0x29'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x2a66('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x2a66('0x1')]},'dtlscipher':{'type':Sequelize[_0x2a66('0x1')]},'dtlscafile':{'type':Sequelize[_0x2a66('0x1')]},'dtlscapath':{'type':Sequelize[_0x2a66('0x1')]},'dtlssetup':{'type':Sequelize[_0x2a66('0x3')]('active',_0x2a66('0x2a'),_0x2a66('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x2a66('0x1')]},'recordofffeature':{'type':Sequelize[_0x2a66('0x1')]},'call_limit':{'type':Sequelize[_0x2a66('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0x2a66('0x3')](_0x2a66('0x16'),'no')},'vmexten':{'type':Sequelize[_0x2a66('0x1')]},'mohinterpret':{'type':Sequelize[_0x2a66('0x1')]},'mohsuggest':{'type':Sequelize[_0x2a66('0x1')]},'parkinglot':{'type':Sequelize[_0x2a66('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x2a66('0x1')],'defaultValue':_0x2a66('0x2c')},'canreinvite':{'type':Sequelize[_0x2a66('0x3')]('yes','no','nonat','update',_0x2a66('0x2d')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x2a66('0x1')]},'otherFields':{'type':Sequelize[_0x2a66('0x1')]},'active':{'type':Sequelize[_0x2a66('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2a66('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x48a9=['nonat','outgoing','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','INTEGER','always','refuse','uas','pai','fingerprint','certificate','active','passive','dynamic','update','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','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','auto','yes'];(function(_0x42d444,_0x5cf29f){var _0x41df07=function(_0x5af036){while(--_0x5af036){_0x42d444['push'](_0x42d444['shift']());}};_0x41df07(++_0x5cf29f);}(_0x48a9,0xe0));var _0x948a=function(_0x1f5887,_0x2fa1f1){_0x1f5887=_0x1f5887-0x0;var _0x21774b=_0x48a9[_0x1f5887];return _0x21774b;};'use strict';var Sequelize=require(_0x948a('0x0'));module[_0x948a('0x1')]={'name':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x4'),_0x948a('0x5'),_0x948a('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'defaultValue':_0x948a('0x7')},'callingpres':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x8'),_0x948a('0x9'),'ALLOWED_FAILED_SCREEN',_0x948a('0xa'),_0x948a('0xb'),_0x948a('0xc'),_0x948a('0xd'),_0x948a('0xe'))},'deny':{'type':Sequelize[_0x948a('0x2')]},'permit':{'type':Sequelize[_0x948a('0x2')]},'secret':{'type':Sequelize[_0x948a('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x948a('0x2')]},'transport':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0xf'),'set':function(_0xac91ef){this[_0x948a('0x10')](_0x948a('0x11'),_0xac91ef?_0xac91ef[_0x948a('0x12')](','):null);},'get':function(){return this[_0x948a('0x13')](_0x948a('0x11'))?this[_0x948a('0x13')](_0x948a('0x11'))[_0x948a('0x14')](','):null;},'comment':_0x948a('0x15')},'dtmfmode':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x16'),_0x948a('0x17'),'shortinfo','inband',_0x948a('0x18')),'defaultValue':_0x948a('0x16')},'directmedia':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x1a'),'update',_0x948a('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x948a('0x2')]},'nat':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x374261){this[_0x948a('0x10')]('nat',_0x374261?_0x374261[_0x948a('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x948a('0x1c'))?this['getDataValue'](_0x948a('0x1c'))[_0x948a('0x14')](','):null;},'comment':_0x948a('0x1d')},'callgroup':{'type':Sequelize[_0x948a('0x2')]},'namedcallgroup':{'type':Sequelize[_0x948a('0x2')]},'pickupgroup':{'type':Sequelize[_0x948a('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x948a('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x1e')},'allow':{'type':Sequelize[_0x948a('0x2')],'allowNull':![],'defaultValue':_0x948a('0x1f'),'set':function(_0x40854e){this[_0x948a('0x10')](_0x948a('0x20'),_0x40854e?_0x40854e[_0x948a('0x12')](';'):_0x948a('0x1f'));},'get':function(){return this['getDataValue'](_0x948a('0x20'))?this[_0x948a('0x13')](_0x948a('0x20'))[_0x948a('0x14')](';'):null;},'comment':_0x948a('0x21')},'autoframing':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x948a('0x22'),'set':function(_0x193282){this['setDataValue']('insecure',_0x193282?_0x193282['join'](','):null);},'get':function(){return this['getDataValue'](_0x948a('0x23'))?this[_0x948a('0x13')](_0x948a('0x23'))['split'](','):null;},'comment':_0x948a('0x24')},'trustrpid':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x948a('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no','never')},'promiscredir':{'type':Sequelize[_0x948a('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x25')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x948a('0x26')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0x948a('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x948a('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x948a('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'mailbox':{'type':Sequelize[_0x948a('0x2')]},'session_timers':{'type':Sequelize[_0x948a('0x3')]('accept',_0x948a('0x28'),'originate')},'session_expires':{'type':Sequelize[_0x948a('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x948a('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0x948a('0x3')]('uac','uas'),'defaultValue':_0x948a('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0x948a('0x2')]},'regexten':{'type':Sequelize[_0x948a('0x2')]},'fromdomain':{'type':Sequelize[_0x948a('0x2')]},'fromuser':{'type':Sequelize[_0x948a('0x2')]},'port':{'type':Sequelize[_0x948a('0x26')](0x5)},'qualify':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x948a('0x26')](0xb)},'defaultip':{'type':Sequelize[_0x948a('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x948a('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x948a('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x948a('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x948a('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0x948a('0x26')](0xb)},'timerb':{'type':Sequelize[_0x948a('0x26')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0x948a('0x2')]},'contactdeny':{'type':Sequelize[_0x948a('0x2')]},'contactacl':{'type':Sequelize[_0x948a('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x948a('0x2')]},'use_q850_reason':{'type':Sequelize[_0x948a('0x2')]},'maxforwards':{'type':Sequelize[_0x948a('0x26')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'force_avp':{'type':Sequelize[_0x948a('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'dtlsverify':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x2b'),_0x948a('0x2c'))},'dtlsrekey':{'type':Sequelize[_0x948a('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x948a('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x948a('0x2')]},'dtlscipher':{'type':Sequelize[_0x948a('0x2')]},'dtlscafile':{'type':Sequelize[_0x948a('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0x948a('0x2d'),_0x948a('0x2e'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x948a('0x2')]},'usereqphone':{'type':Sequelize[_0x948a('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x948a('0x2')]},'recordofffeature':{'type':Sequelize[_0x948a('0x2')]},'call_limit':{'type':Sequelize[_0x948a('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x948a('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no')},'vmexten':{'type':Sequelize[_0x948a('0x2')]},'mohinterpret':{'type':Sequelize[_0x948a('0x2')]},'mohsuggest':{'type':Sequelize[_0x948a('0x2')]},'parkinglot':{'type':Sequelize[_0x948a('0x2')]},'description':{'type':Sequelize[_0x948a('0x2')]},'host':{'type':Sequelize[_0x948a('0x2')],'defaultValue':_0x948a('0x2f')},'canreinvite':{'type':Sequelize[_0x948a('0x3')](_0x948a('0x19'),'no',_0x948a('0x1a'),_0x948a('0x30'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x948a('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x948a('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x948a('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index ec9e56b..29e4f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['../../mysqldb','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','destroy','stack','name','index','map','rawAttributes','fieldName','type','query','keys','intersection','fields','attributes','length','model','order','sort','where','filters','pick','merge','filter','options','Trunk','count','includeAll','rows','params','include','find','createdAt','updatedAt','body','omit','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','readFileSync','utf8','join','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','userProfileId','autoAssociation','root','chan_sip.so','server/files/templates/trunk.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4b55e8,_0x41ba7e){var _0x46e844=function(_0x2b1e4f){while(--_0x2b1e4f){_0x4b55e8['push'](_0x4b55e8['shift']());}};_0x46e844(++_0x41ba7e);}(_0x84ab,0x12f));var _0xb84a=function(_0x5b740b,_0x381833){_0x5b740b=_0x5b740b-0x0;var _0x6f8f4e=_0x84ab[_0x5b740b];return _0x6f8f4e;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xb84a('0x16')][_0xb84a('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x39a0df,_0x3c161c,_0x44b26b,_0x11dfe9){return new BPromise(function(_0x12ccab,_0x475b){var _0x3113a2=_0x11dfe9||client;return _0x3113a2[_0xb84a('0x18')](_0x39a0df,_0x44b26b)[_0xb84a('0x19')](function(_0x1251ec){logger['info'](_0xb84a('0x1a'),_0x3c161c,_0xb84a('0x1b'));logger[_0xb84a('0x1c')](_0xb84a('0x1d'),_0x3c161c,_0xb84a('0x1b'),JSON[_0xb84a('0x1e')](_0x1251ec));if(_0x1251ec[_0xb84a('0x1f')]){if(_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x20')]===0x1f4){logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x21')]);return _0x475b(_0x1251ec[_0xb84a('0x1f')]['message']);}logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x1251ec['error'][_0xb84a('0x21')]);return _0x12ccab(_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x21')]);}else{logger[_0xb84a('0x22')]('Trunk,\x20%s,\x20%s',_0x3c161c,'request\x20sent');_0x12ccab(_0x1251ec[_0xb84a('0x23')][_0xb84a('0x21')]);}})[_0xb84a('0x24')](function(_0x259f74){logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x259f74);_0x475b(_0x259f74);});});}function respondWithStatusCode(_0x8b28cd,_0x21d0d3){_0x21d0d3=_0x21d0d3||0xcc;return function(_0x3aa06f){if(_0x3aa06f){return _0x8b28cd[_0xb84a('0x25')](_0x21d0d3);}return _0x8b28cd[_0xb84a('0x26')](_0x21d0d3)[_0xb84a('0x27')]();};}function respondWithResult(_0x218aef,_0x409df0){_0x409df0=_0x409df0||0xc8;return function(_0x19bdfa){if(_0x19bdfa){return _0x218aef[_0xb84a('0x26')](_0x409df0)[_0xb84a('0x28')](_0x19bdfa);}};}function respondWithFilteredResult(_0x3ff0bc,_0x3b6805){return function(_0xd468c3){if(_0xd468c3){var _0x33bf1d=typeof _0x3b6805[_0xb84a('0x29')]===_0xb84a('0x2a')&&typeof _0x3b6805[_0xb84a('0x2b')]===_0xb84a('0x2a');var _0x97d71b=_0xd468c3['count'];var _0x582954=_0x33bf1d?0x0:_0x3b6805[_0xb84a('0x29')];var _0x2c30b0=_0x33bf1d?_0xd468c3['count']:_0x3b6805[_0xb84a('0x29')]+_0x3b6805[_0xb84a('0x2b')];var _0x52c23c;if(_0x2c30b0>=_0x97d71b){_0x2c30b0=_0x97d71b;_0x52c23c=0xc8;}else{_0x52c23c=0xce;}_0x3ff0bc['status'](_0x52c23c);return _0x3ff0bc[_0xb84a('0x2c')](_0xb84a('0x2d'),_0x582954+'-'+_0x2c30b0+'/'+_0x97d71b)['json'](_0xd468c3);}return null;};}function patchUpdates(_0x251778){return function(_0xba1147){try{jsonpatch[_0xb84a('0x2e')](_0xba1147,_0x251778,!![]);}catch(_0x44a405){return BPromise[_0xb84a('0x2f')](_0x44a405);}return _0xba1147[_0xb84a('0x30')]();};}function saveUpdates(_0x34b212,_0xac214f){return function(_0x54ec50){if(_0x54ec50){return _0x54ec50[_0xb84a('0x31')](_0x34b212)['then'](function(_0x4bca85){return _0x4bca85;});}return null;};}function removeEntity(_0x2eea7e,_0x3b4515){return function(_0x47a5b6){if(_0x47a5b6){return _0x47a5b6['destroy']()[_0xb84a('0x19')](function(){var _0x13c167=_0x47a5b6[_0xb84a('0x32')]({'plain':!![]});var _0x308240=_0xb84a('0x33');return db[_0xb84a('0x34')][_0xb84a('0x35')]({'where':{'type':_0x308240,'resourceId':_0x13c167['id']}})[_0xb84a('0x19')](function(){return _0x47a5b6;});})['then'](function(){_0x2eea7e[_0xb84a('0x26')](0xcc)[_0xb84a('0x27')]();});}};}function handleEntityNotFound(_0x10b944,_0xf894a6){return function(_0x36aa07){if(!_0x36aa07){_0x10b944[_0xb84a('0x25')](0x194);}return _0x36aa07;};}function handleError(_0x2a5130,_0x5aa2ae){_0x5aa2ae=_0x5aa2ae||0x1f4;return function(_0x30d22d){logger['error'](_0x30d22d[_0xb84a('0x36')]);if(_0x30d22d[_0xb84a('0x37')]){delete _0x30d22d[_0xb84a('0x37')];}_0x2a5130['status'](_0x5aa2ae)['send'](_0x30d22d);};}exports[_0xb84a('0x38')]=function(_0x75e6e6,_0x4a3737){var _0x2d3e08={},_0xab76ce={},_0x4cb5d4={'count':0x0,'rows':[]};var _0x19aa4c=_[_0xb84a('0x39')](db['Trunk'][_0xb84a('0x3a')],function(_0xe6f19e){return{'name':_0xe6f19e[_0xb84a('0x3b')],'type':_0xe6f19e[_0xb84a('0x3c')]['key']};});_0xab76ce['model']=_['map'](_0x19aa4c,_0xb84a('0x37'));_0xab76ce[_0xb84a('0x3d')]=_[_0xb84a('0x3e')](_0x75e6e6[_0xb84a('0x3d')]);_0xab76ce['filters']=_[_0xb84a('0x3f')](_0xab76ce['model'],_0xab76ce[_0xb84a('0x3d')]);_0x2d3e08['attributes']=_['intersection'](_0xab76ce['model'],qs[_0xb84a('0x40')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x40')]));_0x2d3e08[_0xb84a('0x41')]=_0x2d3e08['attributes'][_0xb84a('0x42')]?_0x2d3e08[_0xb84a('0x41')]:_0xab76ce[_0xb84a('0x43')];if(!_0x75e6e6[_0xb84a('0x3d')]['hasOwnProperty']('nolimit')){_0x2d3e08[_0xb84a('0x2b')]=qs[_0xb84a('0x2b')](_0x75e6e6['query'][_0xb84a('0x2b')]);_0x2d3e08[_0xb84a('0x29')]=qs[_0xb84a('0x29')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x29')]);}_0x2d3e08[_0xb84a('0x44')]=qs[_0xb84a('0x45')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x45')]);_0x2d3e08[_0xb84a('0x46')]=qs[_0xb84a('0x47')](_[_0xb84a('0x48')](_0x75e6e6[_0xb84a('0x3d')],_0xab76ce[_0xb84a('0x47')]),_0x19aa4c);if(_0x75e6e6[_0xb84a('0x3d')]['filter']){_0x2d3e08[_0xb84a('0x46')]=_[_0xb84a('0x49')](_0x2d3e08[_0xb84a('0x46')],{'$or':_[_0xb84a('0x39')](_0x19aa4c,function(_0x37f4fe){if(_0x37f4fe[_0xb84a('0x3c')]!=='VIRTUAL'){var _0xfd2927={};_0xfd2927[_0x37f4fe['name']]={'$like':'%'+_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x4a')]+'%'};return _0xfd2927;}})});}_0x2d3e08=_[_0xb84a('0x49')]({},_0x2d3e08,_0x75e6e6[_0xb84a('0x4b')]);var _0x5e7327={'where':_0x2d3e08[_0xb84a('0x46')]};return db[_0xb84a('0x4c')][_0xb84a('0x4d')](_0x5e7327)['then'](function(_0x55f39f){_0x4cb5d4[_0xb84a('0x4d')]=_0x55f39f;if(_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x4e')]){_0x2d3e08['include']=[{'all':!![]}];}return db['Trunk']['findAll'](_0x2d3e08);})[_0xb84a('0x19')](function(_0x384a0d){_0x4cb5d4[_0xb84a('0x4f')]=_0x384a0d;return _0x4cb5d4;})[_0xb84a('0x19')](respondWithFilteredResult(_0x4a3737,_0x2d3e08))[_0xb84a('0x24')](handleError(_0x4a3737,null));};exports['show']=function(_0x4b40fe,_0x5b853a){var _0x53d4d6={'raw':![],'where':{'id':_0x4b40fe[_0xb84a('0x50')]['id']}},_0x421ba0={};_0x421ba0['model']=_[_0xb84a('0x3e')](db[_0xb84a('0x4c')][_0xb84a('0x3a')]);_0x421ba0[_0xb84a('0x3d')]=_[_0xb84a('0x3e')](_0x4b40fe[_0xb84a('0x3d')]);_0x421ba0['filters']=_['intersection'](_0x421ba0[_0xb84a('0x43')],_0x421ba0['query']);_0x53d4d6[_0xb84a('0x41')]=_['intersection'](_0x421ba0['model'],qs['fields'](_0x4b40fe[_0xb84a('0x3d')][_0xb84a('0x40')]));_0x53d4d6[_0xb84a('0x41')]=_0x53d4d6[_0xb84a('0x41')][_0xb84a('0x42')]?_0x53d4d6[_0xb84a('0x41')]:_0x421ba0[_0xb84a('0x43')];if(_0x4b40fe[_0xb84a('0x3d')]['includeAll']){_0x53d4d6['include']=[{'all':!![]}];}_0x53d4d6=_['merge']({},_0x53d4d6,_0x4b40fe[_0xb84a('0x4b')]);return db[_0xb84a('0x4c')]['find'](_0x53d4d6)[_0xb84a('0x19')](handleEntityNotFound(_0x5b853a,null))['then'](respondWithResult(_0x5b853a,null))['catch'](handleError(_0x5b853a,null));};exports['clone']=function(_0x419e27,_0x172076){var _0x49a0e2={'where':{'id':_0x419e27[_0xb84a('0x50')]['id']}},_0x51c415={};_0x51c415[_0xb84a('0x43')]=_[_0xb84a('0x3e')](db['Trunk'][_0xb84a('0x3a')]);_0x49a0e2['attributes']=_['intersection'](_0x51c415[_0xb84a('0x43')],qs['fields'](_0x419e27[_0xb84a('0x3d')]['fields']));_0x49a0e2[_0xb84a('0x41')]=_0x49a0e2[_0xb84a('0x41')][_0xb84a('0x42')]?_0x49a0e2[_0xb84a('0x41')]:_0x51c415['model'];if(_0x419e27['query']['includeAll']){_0x49a0e2[_0xb84a('0x51')]=[{'all':!![]}];}_0x49a0e2=_[_0xb84a('0x49')]({},_0x49a0e2,_0x419e27['options']);return db['Trunk'][_0xb84a('0x52')](_0x49a0e2)[_0xb84a('0x19')](handleEntityNotFound(_0x172076,null))[_0xb84a('0x19')](function(_0x5f415d){if(_0x5f415d){var _0x29f67f=_0x5f415d[_0xb84a('0x32')]({'plain':!![]});_0x29f67f=qs['omit'](_0x29f67f,['id',_0xb84a('0x53'),_0xb84a('0x54')]);_0x419e27[_0xb84a('0x55')]=_[_0xb84a('0x56')](_0x419e27[_0xb84a('0x55')],['id',_0xb84a('0x53'),_0xb84a('0x54')]);return db['Trunk'][_0xb84a('0x57')](_[_0xb84a('0x49')](_0x29f67f,_0x419e27['body']),{'include':_0x419e27[_0xb84a('0x3d')][_0xb84a('0x4e')]?[{'all':!![]}]:undefined})[_0xb84a('0x19')](function(_0x3e16d8){var _0x347998=_0x419e27[_0xb84a('0x58')][_0xb84a('0x32')]({'plain':!![]});if(!_0x347998)throw new Error(_0xb84a('0x59'));if(_0x347998[_0xb84a('0x5a')]==='user'){var _0x291008=_0x3e16d8['get']({'plain':!![]});var _0x5a2d44=_0xb84a('0x33');return db['UserProfileSection'][_0xb84a('0x52')]({'where':{'name':_0x5a2d44,'userProfileId':_0x347998['userProfileId']},'raw':!![]})[_0xb84a('0x19')](function(_0x44e508){if(_0x44e508&&_0x44e508['autoAssociation']===0x0){return db[_0xb84a('0x34')][_0xb84a('0x57')]({'name':_0x291008[_0xb84a('0x37')],'resourceId':_0x291008['id'],'type':_0x44e508[_0xb84a('0x37')],'sectionId':_0x44e508['id']},{})[_0xb84a('0x19')](function(){return _0x3e16d8;});}else{return _0x3e16d8;}})[_0xb84a('0x24')](function(_0x4514f0){logger['error'](_0xb84a('0x5b'),_0x4514f0);throw _0x4514f0;});}return _0x3e16d8;});}})['then'](respondWithResult(_0x172076,0xc9))['catch'](handleError(_0x172076,null));};exports[_0xb84a('0x57')]=function(_0x2a2dc0,_0x2ee241,_0x32a455){var _0x5612f3;return db['Trunk'][_0xb84a('0x57')](_0x2a2dc0[_0xb84a('0x55')],{'raw':!![]})[_0xb84a('0x19')](function(_0x1a2e1a){_0x5612f3=_0x1a2e1a;return db['Trunk'][_0xb84a('0x5c')]({'raw':!![]});})['then'](function(_0x1eec1f){var _0x57b784=fs[_0xb84a('0x5d')](path['join'](config['root'],'server/files/templates/trunk.ejs'),_0xb84a('0x5e'));var _0xf936f1=fs[_0xb84a('0x5d')](path[_0xb84a('0x5f')](config['root'],_0xb84a('0x60')),_0xb84a('0x5e'));var _0x33d416=ejs[_0xb84a('0x61')](_0x57b784,{'trunks':_0x1eec1f||[]});fs[_0xb84a('0x62')](_0xb84a('0x63'),_0x33d416);if(_0x5612f3[_0xb84a('0x64')]){var _0x542d70=ejs[_0xb84a('0x61')](_0xf936f1,{'trunks':_0x1eec1f||[]});fs[_0xb84a('0x62')](_0xb84a('0x65'),_0x542d70);}})[_0xb84a('0x19')](function(){return respondWithRpcPromise(_0xb84a('0x66'),_0xb84a('0x57'),{'module':'chan_sip.so'});})[_0xb84a('0x19')](function(){var _0x6f8f=_0x2a2dc0[_0xb84a('0x58')][_0xb84a('0x32')]({'plain':!![]});if(!_0x6f8f)throw new Error(_0xb84a('0x59'));if(_0x6f8f['role']===_0xb84a('0x58')){var _0x4b0b18=_0x5612f3[_0xb84a('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xb84a('0x52')]({'where':{'name':_0xb84a('0x33'),'userProfileId':_0x6f8f[_0xb84a('0x67')]},'raw':!![]})['then'](function(_0x121fda){if(_0x121fda&&_0x121fda[_0xb84a('0x68')]===0x0){return db[_0xb84a('0x34')][_0xb84a('0x57')]({'name':_0x4b0b18[_0xb84a('0x37')],'resourceId':_0x4b0b18['id'],'type':_0x121fda['name'],'sectionId':_0x121fda['id']},{})[_0xb84a('0x19')](function(){return _0x5612f3;});}else{return _0x5612f3;}})[_0xb84a('0x24')](function(_0x287d25){logger['error'](_0xb84a('0x5b'),_0x287d25);throw _0x287d25;});}return _0x5612f3;})['then'](respondWithResult(_0x2ee241,0xc9))['catch'](handleError(_0x2ee241,null));};exports[_0xb84a('0x31')]=function(_0x35cb8b,_0x13c7b7,_0x3b2a2d){var _0x2047f5;return db[_0xb84a('0x4c')][_0xb84a('0x52')]({'where':{'id':_0x35cb8b[_0xb84a('0x50')]['id']}})[_0xb84a('0x19')](handleEntityNotFound(_0x13c7b7,null))[_0xb84a('0x19')](saveUpdates(_0x35cb8b[_0xb84a('0x55')],null))[_0xb84a('0x19')](function(_0x3ec1fb){if(_0x3ec1fb){_0x2047f5=_0x3ec1fb;return db[_0xb84a('0x4c')][_0xb84a('0x5c')]({'raw':!![]});}})[_0xb84a('0x19')](function(_0xb18756){if(_0xb18756){var _0x1169d1=fs['readFileSync'](path[_0xb84a('0x5f')](config[_0xb84a('0x69')],'server/files/templates/trunk.ejs'),_0xb84a('0x5e'));var _0x576df5=fs[_0xb84a('0x5d')](path['join'](config[_0xb84a('0x69')],'server/files/templates/registry.ejs'),'utf8');var _0xf3f253=ejs[_0xb84a('0x61')](_0x1169d1,{'trunks':_0xb18756||[]});fs['writeFileSync'](_0xb84a('0x63'),_0xf3f253);var _0xcf9bc2=ejs[_0xb84a('0x61')](_0x576df5,{'trunks':_0xb18756||[]});fs[_0xb84a('0x62')](_0xb84a('0x65'),_0xcf9bc2);return respondWithRpcPromise('Reload',_0xb84a('0x31'),{'module':_0xb84a('0x6a')});}return null;})[_0xb84a('0x19')](function(_0x30f7cd){if(_0x30f7cd){return _0x2047f5;}})['then'](respondWithResult(_0x13c7b7,null))[_0xb84a('0x24')](handleError(_0x13c7b7,null));};exports['destroy']=function(_0x14118c,_0x12d796,_0x54ae3e){var _0xf6765a;return db[_0xb84a('0x4c')][_0xb84a('0x52')]({'where':{'id':_0x14118c['params']['id']}})['then'](handleEntityNotFound(_0x12d796,null))[_0xb84a('0x19')](removeEntity(_0x12d796,null))[_0xb84a('0x19')](function(){return db['Trunk'][_0xb84a('0x5c')]({'raw':!![]});})['then'](function(_0x166d75){var _0x54161c=fs['readFileSync'](path[_0xb84a('0x5f')](config[_0xb84a('0x69')],_0xb84a('0x6b')),_0xb84a('0x5e'));var _0x403a3e=fs['readFileSync'](path['join'](config[_0xb84a('0x69')],_0xb84a('0x60')),'utf8');var _0x305b67=ejs[_0xb84a('0x61')](_0x54161c,{'trunks':_0x166d75});var _0x385a05=ejs[_0xb84a('0x61')](_0x403a3e,{'trunks':_0x166d75});fs['writeFileSync'](_0xb84a('0x63'),_0x305b67);fs['writeFileSync'](_0xb84a('0x65'),_0x385a05);return respondWithRpcPromise(_0xb84a('0x66'),_0xb84a('0x35'),{'module':_0xb84a('0x6a')});})[_0xb84a('0x24')](handleError(_0x12d796,null));};
\ No newline at end of file
+var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x130ca5,_0x1aec51){var _0xd44d0a=function(_0xef53bd){while(--_0xef53bd){_0x130ca5['push'](_0x130ca5['shift']());}};_0xd44d0a(++_0x1aec51);}(_0x98a8,0x12c));var _0x898a=function(_0x52d254,_0x42bff1){_0x52d254=_0x52d254-0x0;var _0x4facf9=_0x98a8[_0x52d254];return _0x4facf9;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
index 6f0bbc1..e8c81e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa477=['moment','request-promise','rimraf','../../config/environment','./trunk.attributes','define','lodash','util','../../config/logger'];(function(_0x4852ff,_0x35118d){var _0x3ee92e=function(_0x37de82){while(--_0x37de82){_0x4852ff['push'](_0x4852ff['shift']());}};_0x3ee92e(++_0x35118d);}(_0xa477,0x126));var _0x7a47=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xa477[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x7a47('0x0'));var util=require(_0x7a47('0x1'));var logger=require(_0x7a47('0x2'))('api');var moment=require(_0x7a47('0x3'));var BPromise=require('bluebird');var rp=require(_0x7a47('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7a47('0x5'));var config=require(_0x7a47('0x6'));var attributes=require(_0x7a47('0x7'));module['exports']=function(_0x52ab6e,_0x2cec56){return _0x52ab6e[_0x7a47('0x8')]('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6b84=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define','tools_trunks','../../config/logger'];(function(_0x116b7d,_0x14abe1){var _0x3642fc=function(_0x5eea6f){while(--_0x5eea6f){_0x116b7d['push'](_0x116b7d['shift']());}};_0x3642fc(++_0x14abe1);}(_0x6b84,0x17f));var _0x46b8=function(_0x74862c,_0x5cdf82){_0x74862c=_0x74862c-0x0;var _0xdd02b7=_0x6b84[_0x74862c];return _0xdd02b7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46b8('0x0'))(_0x46b8('0x1'));var moment=require(_0x46b8('0x2'));var BPromise=require(_0x46b8('0x3'));var rp=require(_0x46b8('0x4'));var fs=require('fs');var path=require(_0x46b8('0x5'));var rimraf=require(_0x46b8('0x6'));var config=require(_0x46b8('0x7'));var attributes=require(_0x46b8('0x8'));module[_0x46b8('0x9')]=function(_0x3565b1,_0x49d634){return _0x3565b1[_0x46b8('0xa')]('Trunk',attributes,{'tableName':_0x46b8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d981743..10825ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f7=['options','where','attributes','limit','include','model','map','debug','stringify','Trunk','ShowTrunk','lodash','util','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetTrunk'];(function(_0x529f79,_0x5b4c85){var _0x21e1d5=function(_0x31226f){while(--_0x31226f){_0x529f79['push'](_0x529f79['shift']());}};_0x21e1d5(++_0x5b4c85);}(_0xe1f7,0x103));var _0x7e1f=function(_0x5ebf44,_0x4e543e){_0x5ebf44=_0x5ebf44-0x0;var _0x2fef12=_0xe1f7[_0x5ebf44];return _0x2fef12;};'use strict';var _=require(_0x7e1f('0x0'));var util=require(_0x7e1f('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(_0x7e1f('0x2'));var logger=require(_0x7e1f('0x3'))(_0x7e1f('0x4'));var config=require(_0x7e1f('0x5'));var jayson=require(_0x7e1f('0x6'));var client=jayson[_0x7e1f('0x7')][_0x7e1f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1fbda7,_0x49c10c,_0x363647){return new BPromise(function(_0x57326a,_0x48f4e1){return client[_0x7e1f('0x9')](_0x1fbda7,_0x363647)[_0x7e1f('0xa')](function(_0x5595e8){logger[_0x7e1f('0xb')](_0x7e1f('0xc'),_0x49c10c,_0x7e1f('0xd'));logger['debug'](_0x7e1f('0xe'),_0x49c10c,_0x7e1f('0xd'),JSON['stringify'](_0x5595e8));if(_0x5595e8['error']){if(_0x5595e8[_0x7e1f('0xf')][_0x7e1f('0x10')]===0x1f4){logger['error'](_0x7e1f('0xc'),_0x49c10c,_0x5595e8[_0x7e1f('0xf')]['message']);return _0x48f4e1(_0x5595e8[_0x7e1f('0xf')][_0x7e1f('0x11')]);}logger[_0x7e1f('0xf')]('Trunk,\x20%s,\x20%s',_0x49c10c,_0x5595e8[_0x7e1f('0xf')]['message']);return _0x57326a(_0x5595e8[_0x7e1f('0xf')][_0x7e1f('0x11')]);}else{logger['info'](_0x7e1f('0xc'),_0x49c10c,_0x7e1f('0xd'));_0x57326a(_0x5595e8['result'][_0x7e1f('0x11')]);}})[_0x7e1f('0x12')](function(_0x50800c){logger['error'](_0x7e1f('0xc'),_0x49c10c,_0x50800c);_0x48f4e1(_0x50800c);});});}exports[_0x7e1f('0x13')]=function(_0x56a9e6){var _0x350eb6=this;return new Promise(function(_0x3499df,_0x62dbe3){return db['Trunk']['findAll']({'raw':_0x56a9e6[_0x7e1f('0x14')]?_0x56a9e6[_0x7e1f('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x56a9e6['options']?_0x56a9e6[_0x7e1f('0x14')][_0x7e1f('0x15')]||null:null,'attributes':_0x56a9e6[_0x7e1f('0x14')]?_0x56a9e6[_0x7e1f('0x14')][_0x7e1f('0x16')]||null:null,'limit':_0x56a9e6[_0x7e1f('0x14')]?_0x56a9e6['options'][_0x7e1f('0x17')]||null:null,'include':_0x56a9e6[_0x7e1f('0x14')]?_0x56a9e6[_0x7e1f('0x14')]['include']?_['map'](_0x56a9e6[_0x7e1f('0x14')][_0x7e1f('0x18')],function(_0x28442e){return{'model':db[_0x28442e[_0x7e1f('0x19')]],'as':_0x28442e['as'],'attributes':_0x28442e[_0x7e1f('0x16')],'include':_0x28442e[_0x7e1f('0x18')]?_[_0x7e1f('0x1a')](_0x28442e[_0x7e1f('0x18')],function(_0x551d9e){return{'model':db[_0x551d9e[_0x7e1f('0x19')]],'as':_0x551d9e['as'],'attributes':_0x551d9e[_0x7e1f('0x16')],'include':_0x551d9e[_0x7e1f('0x18')]?_[_0x7e1f('0x1a')](_0x551d9e[_0x7e1f('0x18')],function(_0x2fd0ed){return{'model':db[_0x2fd0ed[_0x7e1f('0x19')]],'as':_0x2fd0ed['as'],'attributes':_0x2fd0ed[_0x7e1f('0x16')]};}):[]};}):[]};}):[]:[]})[_0x7e1f('0xa')](function(_0x40014c){logger[_0x7e1f('0xb')](_0x7e1f('0x13'),_0x56a9e6);logger[_0x7e1f('0x1b')](_0x7e1f('0x13'),_0x56a9e6,JSON[_0x7e1f('0x1c')](_0x40014c));_0x3499df(_0x40014c);})[_0x7e1f('0x12')](function(_0xed78ba){logger['error'](_0x7e1f('0x13'),_0xed78ba['message'],_0x56a9e6);_0x62dbe3(_0x350eb6[_0x7e1f('0xf')](0x1f4,_0xed78ba[_0x7e1f('0x11')]));});});};exports['ShowTrunk']=function(_0x415a95){var _0xf8d166=this;return new Promise(function(_0x47b174,_0x4cdae8){return db[_0x7e1f('0x1d')]['find']({'raw':_0x415a95[_0x7e1f('0x14')]?_0x415a95[_0x7e1f('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x415a95[_0x7e1f('0x14')]?_0x415a95[_0x7e1f('0x14')]['where']||null:null,'attributes':_0x415a95['options']?_0x415a95[_0x7e1f('0x14')]['attributes']||null:null,'include':_0x415a95[_0x7e1f('0x14')]?_0x415a95[_0x7e1f('0x14')][_0x7e1f('0x18')]?_[_0x7e1f('0x1a')](_0x415a95['options']['include'],function(_0x53fc9e){return{'model':db[_0x53fc9e[_0x7e1f('0x19')]],'as':_0x53fc9e['as'],'attributes':_0x53fc9e[_0x7e1f('0x16')],'include':_0x53fc9e[_0x7e1f('0x18')]?_[_0x7e1f('0x1a')](_0x53fc9e[_0x7e1f('0x18')],function(_0x312bd1){return{'model':db[_0x312bd1[_0x7e1f('0x19')]],'as':_0x312bd1['as'],'attributes':_0x312bd1[_0x7e1f('0x16')],'include':_0x312bd1[_0x7e1f('0x18')]?_[_0x7e1f('0x1a')](_0x312bd1[_0x7e1f('0x18')],function(_0x2c6910){return{'model':db[_0x2c6910[_0x7e1f('0x19')]],'as':_0x2c6910['as'],'attributes':_0x2c6910[_0x7e1f('0x16')]};}):[]};}):[]};}):[]:[]})[_0x7e1f('0xa')](function(_0x3a7155){logger['info'](_0x7e1f('0x1e'),_0x415a95);logger[_0x7e1f('0x1b')](_0x7e1f('0x1e'),_0x415a95,JSON[_0x7e1f('0x1c')](_0x3a7155));_0x47b174(_0x3a7155);})[_0x7e1f('0x12')](function(_0x181f78){logger['error'](_0x7e1f('0x1e'),_0x181f78[_0x7e1f('0x11')],_0x415a95);_0x4cdae8(_0xf8d166[_0x7e1f('0xf')](0x1f4,_0x181f78[_0x7e1f('0x11')]));});});};
\ No newline at end of file
+var _0xf908=['catch','GetTrunk','Trunk','findAll','options','attributes','include','map','model','stringify','ShowTrunk','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','info','result'];(function(_0xc7626d,_0x4f79e4){var _0x297b36=function(_0x552127){while(--_0x552127){_0xc7626d['push'](_0xc7626d['shift']());}};_0x297b36(++_0x4f79e4);}(_0xf908,0x1b0));var _0x8f90=function(_0x68db5d,_0x36ff91){_0x68db5d=_0x68db5d-0x0;var _0xa68b54=_0xf908[_0x68db5d];return _0xa68b54;};'use strict';var _=require(_0x8f90('0x0'));var util=require(_0x8f90('0x1'));var moment=require(_0x8f90('0x2'));var BPromise=require(_0x8f90('0x3'));var rs=require(_0x8f90('0x4'));var fs=require('fs');var Redis=require(_0x8f90('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f90('0x6'));var logger=require(_0x8f90('0x7'))(_0x8f90('0x8'));var config=require(_0x8f90('0x9'));var jayson=require(_0x8f90('0xa'));var client=jayson[_0x8f90('0xb')][_0x8f90('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x13f076,_0x2d649f,_0x219a62){return new BPromise(function(_0x26b89a,_0x2ad34a){return client[_0x8f90('0xd')](_0x13f076,_0x219a62)[_0x8f90('0xe')](function(_0x895e58){logger['info'](_0x8f90('0xf'),_0x2d649f,_0x8f90('0x10'));logger[_0x8f90('0x11')](_0x8f90('0x12'),_0x2d649f,_0x8f90('0x10'),JSON['stringify'](_0x895e58));if(_0x895e58[_0x8f90('0x13')]){if(_0x895e58[_0x8f90('0x13')][_0x8f90('0x14')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x2d649f,_0x895e58[_0x8f90('0x13')][_0x8f90('0x15')]);return _0x2ad34a(_0x895e58['error'][_0x8f90('0x15')]);}logger[_0x8f90('0x13')](_0x8f90('0xf'),_0x2d649f,_0x895e58['error'][_0x8f90('0x15')]);return _0x26b89a(_0x895e58[_0x8f90('0x13')][_0x8f90('0x15')]);}else{logger[_0x8f90('0x16')](_0x8f90('0xf'),_0x2d649f,'request\x20sent');_0x26b89a(_0x895e58[_0x8f90('0x17')][_0x8f90('0x15')]);}})[_0x8f90('0x18')](function(_0x26533e){logger[_0x8f90('0x13')]('Trunk,\x20%s,\x20%s',_0x2d649f,_0x26533e);_0x2ad34a(_0x26533e);});});}exports[_0x8f90('0x19')]=function(_0x52687f){var _0x1ccdb9=this;return new Promise(function(_0x15886b,_0x5f32af){return db[_0x8f90('0x1a')][_0x8f90('0x1b')]({'raw':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x52687f[_0x8f90('0x1c')]?_0x52687f['options']['where']||null:null,'attributes':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')][_0x8f90('0x1d')]||null:null,'limit':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')]['limit']||null:null,'include':_0x52687f[_0x8f90('0x1c')]?_0x52687f[_0x8f90('0x1c')][_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x52687f[_0x8f90('0x1c')]['include'],function(_0x2de6c5){return{'model':db[_0x2de6c5[_0x8f90('0x20')]],'as':_0x2de6c5['as'],'attributes':_0x2de6c5['attributes'],'include':_0x2de6c5[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x2de6c5[_0x8f90('0x1e')],function(_0x5295cc){return{'model':db[_0x5295cc['model']],'as':_0x5295cc['as'],'attributes':_0x5295cc[_0x8f90('0x1d')],'include':_0x5295cc[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x5295cc[_0x8f90('0x1e')],function(_0x4696e4){return{'model':db[_0x4696e4['model']],'as':_0x4696e4['as'],'attributes':_0x4696e4[_0x8f90('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e8507){logger[_0x8f90('0x16')]('GetTrunk',_0x52687f);logger[_0x8f90('0x11')](_0x8f90('0x19'),_0x52687f,JSON[_0x8f90('0x21')](_0x5e8507));_0x15886b(_0x5e8507);})[_0x8f90('0x18')](function(_0x44b529){logger[_0x8f90('0x13')]('GetTrunk',_0x44b529['message'],_0x52687f);_0x5f32af(_0x1ccdb9['error'](0x1f4,_0x44b529['message']));});});};exports[_0x8f90('0x22')]=function(_0x2c9cee){var _0x39547e=this;return new Promise(function(_0x2cd65b,_0x3160f4){return db[_0x8f90('0x1a')][_0x8f90('0x23')]({'raw':_0x2c9cee['options']?_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x24')]===undefined?!![]:![]:!![],'where':_0x2c9cee[_0x8f90('0x1c')]?_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x25')]||null:null,'attributes':_0x2c9cee['options']?_0x2c9cee['options'][_0x8f90('0x1d')]||null:null,'include':_0x2c9cee[_0x8f90('0x1c')]?_0x2c9cee['options'][_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x2c9cee[_0x8f90('0x1c')][_0x8f90('0x1e')],function(_0x3106f6){return{'model':db[_0x3106f6[_0x8f90('0x20')]],'as':_0x3106f6['as'],'attributes':_0x3106f6[_0x8f90('0x1d')],'include':_0x3106f6[_0x8f90('0x1e')]?_[_0x8f90('0x1f')](_0x3106f6[_0x8f90('0x1e')],function(_0x415c75){return{'model':db[_0x415c75[_0x8f90('0x20')]],'as':_0x415c75['as'],'attributes':_0x415c75[_0x8f90('0x1d')],'include':_0x415c75['include']?_[_0x8f90('0x1f')](_0x415c75[_0x8f90('0x1e')],function(_0x3b503c){return{'model':db[_0x3b503c[_0x8f90('0x20')]],'as':_0x3b503c['as'],'attributes':_0x3b503c[_0x8f90('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8f90('0xe')](function(_0x411674){logger['info'](_0x8f90('0x22'),_0x2c9cee);logger[_0x8f90('0x11')](_0x8f90('0x22'),_0x2c9cee,JSON[_0x8f90('0x21')](_0x411674));_0x2cd65b(_0x411674);})[_0x8f90('0x18')](function(_0x309930){logger[_0x8f90('0x13')](_0x8f90('0x22'),_0x309930[_0x8f90('0x15')],_0x2c9cee);_0x3160f4(_0x39547e[_0x8f90('0x13')](0x1f4,_0x309930[_0x8f90('0x15')]));});});};
\ No newline at end of file
index e117f63..bd5ffe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb1=['Router','../../components/auth/service','./user-setting.controller','put','/:id','isAuthenticated','update','exports','express'];(function(_0x1ecf1d,_0x58ece3){var _0x15ba07=function(_0x4d0a30){while(--_0x4d0a30){_0x1ecf1d['push'](_0x1ecf1d['shift']());}};_0x15ba07(++_0x58ece3);}(_0x6fb1,0x74));var _0x16fb=function(_0x4f1afe,_0x29a790){_0x4f1afe=_0x4f1afe-0x0;var _0x552767=_0x6fb1[_0x4f1afe];return _0x552767;};'use strict';var express=require(_0x16fb('0x0'));var router=express[_0x16fb('0x1')]();var auth=require(_0x16fb('0x2'));var controller=require(_0x16fb('0x3'));router[_0x16fb('0x4')](_0x16fb('0x5'),auth[_0x16fb('0x6')](),controller[_0x16fb('0x7')]);module[_0x16fb('0x8')]=router;
\ No newline at end of file
+var _0x64e6=['put','/:id','update','exports','express','Router','./user-setting.controller'];(function(_0x38c1b2,_0x138a70){var _0x138943=function(_0x38827d){while(--_0x38827d){_0x38c1b2['push'](_0x38c1b2['shift']());}};_0x138943(++_0x138a70);}(_0x64e6,0x138));var _0x664e=function(_0x56af40,_0x28be9f){_0x56af40=_0x56af40-0x0;var _0x56add5=_0x64e6[_0x56af40];return _0x56add5;};'use strict';var express=require(_0x664e('0x0'));var router=express[_0x664e('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x664e('0x2'));router[_0x664e('0x3')](_0x664e('0x4'),auth['isAuthenticated'](),controller[_0x664e('0x5')]);module[_0x664e('0x6')]=router;
\ No newline at end of file
index 5dd0afb..807848e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c3=['sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN','TEXT','DATE','INTEGER'];(function(_0x1687fc,_0x4b4578){var _0x352519=function(_0x30053b){while(--_0x30053b){_0x1687fc['push'](_0x1687fc['shift']());}};_0x352519(++_0x4b4578);}(_0xe6c3,0x134));var _0x3e6c=function(_0x54d4a7,_0x2a4315){_0x54d4a7=_0x54d4a7-0x0;var _0x337a2a=_0xe6c3[_0x54d4a7];return _0x337a2a;};'use strict';var Sequelize=require(_0x3e6c('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x3e6c('0x1'),_0x3e6c('0x2'),_0x3e6c('0x3'),_0x3e6c('0x4')];module[_0x3e6c('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x3e6c('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x3e6c('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x3e6c('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x3e6c('0x9')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x3e6c('0xa')],'unique':'UserId'}};
\ No newline at end of file
+var _0x2214=['info','debug','ENUM','BOOLEAN','TEXT','DATE','INTEGER','UserId','sequelize','error'];(function(_0x448f97,_0x2f68ce){var _0x37c226=function(_0x10e584){while(--_0x10e584){_0x448f97['push'](_0x448f97['shift']());}};_0x37c226(++_0x2f68ce);}(_0x2214,0x10c));var _0x4221=function(_0x344890,_0x35a1d3){_0x344890=_0x344890-0x0;var _0xb7533e=_0x2214[_0x344890];return _0xb7533e;};'use strict';var Sequelize=require(_0x4221('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x4221('0x1'),'warning',_0x4221('0x2'),_0x4221('0x3')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0x4221('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x4221('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x4221('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x4221('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x4221('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x4221('0x8')],'unique':_0x4221('0x9')}};
\ No newline at end of file
index 7811437..5f40383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238f=['status','json','then','sendStatus','error','stack','name','send','user','role','admin','params','UserSetting','find','body','lodash','ioredis','../../config/logger','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults'];(function(_0x5e34a4,_0x2e63ed){var _0x8d41d7=function(_0x45c61b){while(--_0x45c61b){_0x5e34a4['push'](_0x5e34a4['shift']());}};_0x8d41d7(++_0x2e63ed);}(_0x238f,0xa5));var _0xf238=function(_0x1ff38f,_0x4d2698){_0x1ff38f=_0x1ff38f-0x0;var _0x3cfce0=_0x238f[_0x1ff38f];return _0x3cfce0;};'use strict';var _=require(_0xf238('0x0'));var Redis=require(_0xf238('0x1'));var logger=require(_0xf238('0x2'))('api');var config=require(_0xf238('0x3'));var db=require(_0xf238('0x4'))['db'];var socket=require(_0xf238('0x5'))(new Redis(config[_0xf238('0x6')]));require(_0xf238('0x7'))[_0xf238('0x8')](socket);config['redis']=_[_0xf238('0x9')](config[_0xf238('0x6')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x549a61,_0x355a13){_0x355a13=_0x355a13||0xc8;return function(_0x5432d0){if(_0x5432d0){return _0x549a61[_0xf238('0xa')](_0x355a13)[_0xf238('0xb')](_0x5432d0);}};}function saveUpdates(_0x40bf77){return function(_0x24b11a){if(_0x24b11a){return _0x24b11a['update'](_0x40bf77)[_0xf238('0xc')](function(_0x4eaf8b){return _0x4eaf8b;});}return null;};}function handleEntityNotFound(_0x3bfe22){return function(_0x7928d1){if(!_0x7928d1){_0x3bfe22[_0xf238('0xd')](0x194);}return _0x7928d1;};}function handleError(_0x26f5f0,_0x39cedf){_0x39cedf=_0x39cedf||0x1f4;return function(_0xa69cd6){logger[_0xf238('0xe')](_0xa69cd6[_0xf238('0xf')]);if(_0xa69cd6['name']){delete _0xa69cd6[_0xf238('0x10')];}_0x26f5f0[_0xf238('0xa')](_0x39cedf)[_0xf238('0x11')](_0xa69cd6);};}exports['update']=function(_0xf138d0,_0x2d87e8){if(_0xf138d0[_0xf238('0x12')][_0xf238('0x13')]!==_0xf238('0x14'))throw new Error('Unauthorized');if(isNaN(Number(_0xf138d0[_0xf238('0x15')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0xf238('0x16')][_0xf238('0x17')]({'where':{'id':_0xf138d0[_0xf238('0x15')]['id']}})[_0xf238('0xc')](handleEntityNotFound(_0x2d87e8,null))[_0xf238('0xc')](saveUpdates(_0xf138d0[_0xf238('0x18')],null))[_0xf238('0xc')](respondWithResult(_0x2d87e8,null))['catch'](handleError(_0x2d87e8,null));};
\ No newline at end of file
+var _0xe812=['defaults','redis','json','update','sendStatus','error','stack','name','send','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','then','body','catch','ioredis','../../config/logger','../../mysqldb','socket.io-emitter','./user-setting.socket','register'];(function(_0x3a4e4e,_0x1063eb){var _0x16a6fd=function(_0x1aa14c){while(--_0x1aa14c){_0x3a4e4e['push'](_0x3a4e4e['shift']());}};_0x16a6fd(++_0x1063eb);}(_0xe812,0x1f2));var _0x2e81=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xe812[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var Redis=require(_0x2e81('0x0'));var logger=require(_0x2e81('0x1'))('api');var config=require('../../config/environment');var db=require(_0x2e81('0x2'))['db'];var socket=require(_0x2e81('0x3'))(new Redis(config['redis']));require(_0x2e81('0x4'))[_0x2e81('0x5')](socket);config['redis']=_[_0x2e81('0x6')](config[_0x2e81('0x7')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x36604d,_0x32b221){_0x32b221=_0x32b221||0xc8;return function(_0x27f9c6){if(_0x27f9c6){return _0x36604d['status'](_0x32b221)[_0x2e81('0x8')](_0x27f9c6);}};}function saveUpdates(_0x29857f){return function(_0x1be71e){if(_0x1be71e){return _0x1be71e[_0x2e81('0x9')](_0x29857f)['then'](function(_0x3375d6){return _0x3375d6;});}return null;};}function handleEntityNotFound(_0x1afde0){return function(_0xec148d){if(!_0xec148d){_0x1afde0[_0x2e81('0xa')](0x194);}return _0xec148d;};}function handleError(_0x1e125a,_0x3cbca8){_0x3cbca8=_0x3cbca8||0x1f4;return function(_0x3a4aa8){logger[_0x2e81('0xb')](_0x3a4aa8[_0x2e81('0xc')]);if(_0x3a4aa8[_0x2e81('0xd')]){delete _0x3a4aa8[_0x2e81('0xd')];}_0x1e125a['status'](_0x3cbca8)[_0x2e81('0xe')](_0x3a4aa8);};}exports[_0x2e81('0x9')]=function(_0x4c4f16,_0x40ff0c){if(_0x4c4f16['user'][_0x2e81('0xf')]!==_0x2e81('0x10'))throw new Error(_0x2e81('0x11'));if(isNaN(Number(_0x4c4f16[_0x2e81('0x12')]['id'])))throw new Error(_0x2e81('0x13'));return db[_0x2e81('0x14')]['find']({'where':{'id':_0x4c4f16[_0x2e81('0x12')]['id']}})[_0x2e81('0x15')](handleEntityNotFound(_0x40ff0c,null))['then'](saveUpdates(_0x4c4f16[_0x2e81('0x16')],null))['then'](respondWithResult(_0x40ff0c,null))[_0x2e81('0x17')](handleError(_0x40ff0c,null));};
\ No newline at end of file
index a557178..f633c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804c=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x18fb16,_0x45edbc){var _0x147b0d=function(_0x5b1b00){while(--_0x5b1b00){_0x18fb16['push'](_0x18fb16['shift']());}};_0x147b0d(++_0x45edbc);}(_0x804c,0x74));var _0xc804=function(_0xc8edf0,_0xb4f9e7){_0xc8edf0=_0xc8edf0-0x0;var _0x4d8908=_0x804c[_0xc8edf0];return _0x4d8908;};'use strict';var EventEmitter=require(_0xc804('0x0'));var UserSetting=require(_0xc804('0x1'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xc804('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc804('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3d3865){return function(_0x3d5d3b,_0x3795a3,_0x3e7fd3){UserSettingEvents[_0xc804('0x4')](_0x3d3865+':'+_0x3d5d3b['id'],_0x3d5d3b);UserSettingEvents[_0xc804('0x4')](_0x3d3865,_0x3d5d3b);_0x3e7fd3(null);};}for(var e in events){if(events[_0xc804('0x5')](e)){var event=events[e];UserSetting[_0xc804('0x6')](e,emitEvent(event));}}module[_0xc804('0x7')]=UserSettingEvents;
\ No newline at end of file
+var _0x0819=['hook','events','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x49f85f,_0x3313f6){var _0x432ba7=function(_0x3d438f){while(--_0x3d438f){_0x49f85f['push'](_0x49f85f['shift']());}};_0x432ba7(++_0x3313f6);}(_0x0819,0x16d));var _0x9081=function(_0x5b9122,_0x12de84){_0x5b9122=_0x5b9122-0x0;var _0x22c66c=_0x0819[_0x5b9122];return _0x22c66c;};'use strict';var EventEmitter=require(_0x9081('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x9081('0x1')](0x0);var events={'afterCreate':_0x9081('0x2'),'afterUpdate':_0x9081('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2d894c){return function(_0x158998,_0x3c9568,_0xebf5f4){UserSettingEvents[_0x9081('0x4')](_0x2d894c+':'+_0x158998['id'],_0x158998);UserSettingEvents['emit'](_0x2d894c,_0x158998);_0xebf5f4(null);};}for(var e in events){if(events[_0x9081('0x5')](e)){var event=events[e];UserSetting[_0x9081('0x6')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index d6d3126..2cdeaa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb0=['clientSideLoggingEnabled','clientSideLoggingEnabledSince','UserSetting'];(function(_0x511bd1,_0x223e5b){var _0x4c48ec=function(_0x31814e){while(--_0x31814e){_0x511bd1['push'](_0x511bd1['shift']());}};_0x4c48ec(++_0x223e5b);}(_0xceb0,0x173));var _0x0ceb=function(_0x51d068,_0x4cbc80){_0x51d068=_0x51d068-0x0;var _0x5cd217=_0xceb0[_0x51d068];return _0x5cd217;};'use strict';var attributes=require('./user-setting.attributes');module['exports']=function(_0x54382b){return _0x54382b['define'](_0x0ceb('0x0'),attributes,{'tableName':'user_settings','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1659e3){if(!_0x1659e3[_0x0ceb('0x1')])_0x1659e3[_0x0ceb('0x2')]=null;else if(_0x1659e3['clientSideLoggingEnabledSince']===null)_0x1659e3['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
+var _0xc901=['clientSideLoggingEnabledSince','./user-setting.attributes','user_settings'];(function(_0x39a62d,_0x4d0ebe){var _0x4876c5=function(_0x5e3608){while(--_0x5e3608){_0x39a62d['push'](_0x39a62d['shift']());}};_0x4876c5(++_0x4d0ebe);}(_0xc901,0x142));var _0x1c90=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc901[_0x321bb2];return _0x9c12ed;};'use strict';var attributes=require(_0x1c90('0x0'));module['exports']=function(_0x5ac4c7){return _0x5ac4c7['define']('UserSetting',attributes,{'tableName':_0x1c90('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4386c8){if(!_0x4386c8['clientSideLoggingEnabled'])_0x4386c8[_0x1c90('0x2')]=null;else if(_0x4386c8[_0x1c90('0x2')]===null)_0x4386c8[_0x1c90('0x2')]=new Date();}}});};
\ No newline at end of file
index a3572f6..620854f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ec=['length','user-setting:','./user-setting.events','save','remove','update','emit','UserId','register'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x10ec,0x92));var _0xc10e=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x10ec[_0x3ab51d];return _0x29a04e;};'use strict';var UserSettingEvents=require(_0xc10e('0x0'));var events=[_0xc10e('0x1'),_0xc10e('0x2'),_0xc10e('0x3')];function createListener(_0xed8162,_0x1a015a){return function(_0x5b35c8){_0x1a015a[_0xc10e('0x4')](_0xed8162,_0x5b35c8);if(_0xed8162==='user-setting:update'){_0x1a015a[_0xc10e('0x4')]('user-setting:update:user-'+_0x5b35c8[_0xc10e('0x5')],_0x5b35c8);}};}exports[_0xc10e('0x6')]=function(_0x2df7b8){for(var _0x562447=0x0,_0x4c8c7e=events[_0xc10e('0x7')];_0x562447<_0x4c8c7e;_0x562447++){var _0x1395e8=events[_0x562447];var _0x2ea532=createListener(_0xc10e('0x8')+_0x1395e8,_0x2df7b8);UserSettingEvents['on'](_0x1395e8,_0x2ea532);}};
\ No newline at end of file
+var _0xb438=['save','remove','emit','user-setting:update:user-','UserId','length','user-setting:','./user-setting.events'];(function(_0x15411c,_0xe7d9d1){var _0x30ad08=function(_0x97a026){while(--_0x97a026){_0x15411c['push'](_0x15411c['shift']());}};_0x30ad08(++_0xe7d9d1);}(_0xb438,0xf7));var _0x8b43=function(_0x1232b,_0x559732){_0x1232b=_0x1232b-0x0;var _0x4f5de3=_0xb438[_0x1232b];return _0x4f5de3;};'use strict';var UserSettingEvents=require(_0x8b43('0x0'));var events=[_0x8b43('0x1'),_0x8b43('0x2'),'update'];function createListener(_0x1309f3,_0x257854){return function(_0xb63ab7){_0x257854['emit'](_0x1309f3,_0xb63ab7);if(_0x1309f3==='user-setting:update'){_0x257854[_0x8b43('0x3')](_0x8b43('0x4')+_0xb63ab7[_0x8b43('0x5')],_0xb63ab7);}};}exports['register']=function(_0x290290){for(var _0x4f34d9=0x0,_0x462c11=events[_0x8b43('0x6')];_0x4f34d9<_0x462c11;_0x4f34d9++){var _0x5c3695=events[_0x4f34d9];var _0x490d68=createListener(_0x8b43('0x7')+_0x5c3695,_0x290290);UserSettingEvents['on'](_0x5c3695,_0x490d68);}};
\ No newline at end of file
index bdfbaf9..788e883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc817=['removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','isAuthenticated','index','/describe','get','/whoami','whoami','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','diskStorage','join','server/files/images/','format','%s-%s','now','file','addAvatar','/:id/login','login','logout','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','addSmsInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','put','update','/:id/password','changePassword','delete','removeQueues','destroy','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xc817,0x75));var _0x7c81=function(_0x32a88a,_0x59d429){_0x32a88a=_0x32a88a-0x0;var _0x50d13c=_0xc817[_0x32a88a];return _0x50d13c;};'use strict';var multer=require(_0x7c81('0x0'));var util=require(_0x7c81('0x1'));var path=require(_0x7c81('0x2'));var timeout=require(_0x7c81('0x3'));var express=require('express');var router=express[_0x7c81('0x4')]();var fs_extra=require(_0x7c81('0x5'));var auth=require(_0x7c81('0x6'));var interaction=require(_0x7c81('0x7'));var config=require(_0x7c81('0x8'));var controller=require(_0x7c81('0x9'));router['get']('/',auth[_0x7c81('0xa')](),controller[_0x7c81('0xb')]);router['get'](_0x7c81('0xc'),auth[_0x7c81('0xa')](),controller['describe']);router[_0x7c81('0xd')](_0x7c81('0xe'),auth[_0x7c81('0xa')](),controller[_0x7c81('0xf')]);router[_0x7c81('0xd')]('/presence',auth[_0x7c81('0xa')](),controller[_0x7c81('0x10')]);router[_0x7c81('0xd')](_0x7c81('0x11'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x12')]);router[_0x7c81('0xd')](_0x7c81('0x13'),controller[_0x7c81('0x14')]);router[_0x7c81('0xd')](_0x7c81('0x15'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x16')]);router[_0x7c81('0xd')](_0x7c81('0x17'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x18')]);router[_0x7c81('0xd')](_0x7c81('0x19'),auth['isAuthenticated'](),controller[_0x7c81('0x1a')]);router[_0x7c81('0xd')](_0x7c81('0x1b'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x1c')]);router[_0x7c81('0xd')](_0x7c81('0x1d'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x1e')]);router['get'](_0x7c81('0x1f'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x20')]);router[_0x7c81('0xd')]('/:id/screen_recordings',auth[_0x7c81('0xa')](),controller[_0x7c81('0x21')]);router[_0x7c81('0xd')](_0x7c81('0x22'),auth[_0x7c81('0xa')](),controller['getChatInteractions']);router[_0x7c81('0xd')](_0x7c81('0x23'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x24')]);router[_0x7c81('0xd')]('/:id/mail/interactions',auth[_0x7c81('0xa')](),controller[_0x7c81('0x25')]);router[_0x7c81('0xd')](_0x7c81('0x26'),auth['isAuthenticated'](),controller[_0x7c81('0x27')]);router[_0x7c81('0xd')]('/:id/fax/interactions',auth['isAuthenticated'](),controller[_0x7c81('0x28')]);router['get']('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller[_0x7c81('0x29')]);router['get'](_0x7c81('0x2a'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x2b')]);router['get'](_0x7c81('0x2c'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x2d')]);router[_0x7c81('0xd')](_0x7c81('0x2e'),auth[_0x7c81('0xa')](),controller['getAgents']);router[_0x7c81('0xd')]('/:id/prefixes',auth[_0x7c81('0xa')](),controller['getVoicePrefixes']);router[_0x7c81('0xd')](_0x7c81('0x2f'),auth[_0x7c81('0xa')](),controller['getFaxAccounts']);router[_0x7c81('0xd')](_0x7c81('0x30'),auth['isAuthenticated'](),controller[_0x7c81('0x31')]);router['get']('/:id/openchannel_accounts',auth[_0x7c81('0xa')](),controller[_0x7c81('0x32')]);router[_0x7c81('0xd')](_0x7c81('0x33'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x34')]);router[_0x7c81('0xd')](_0x7c81('0x35'),auth['isAuthenticated'](),controller[_0x7c81('0x36')]);router[_0x7c81('0xd')]('/:id/whatsapp_accounts',auth[_0x7c81('0xa')](),controller[_0x7c81('0x37')]);router[_0x7c81('0xd')]('/:id/scheduled_calls',auth[_0x7c81('0xa')](),controller[_0x7c81('0x38')]);router[_0x7c81('0xd')](_0x7c81('0x39'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x3a')]);router[_0x7c81('0x3b')](_0x7c81('0x17'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x3c')]);router[_0x7c81('0x3b')]('/',auth[_0x7c81('0xa')](),controller[_0x7c81('0x3d')]);router['post'](_0x7c81('0x3e'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x3f')]);router[_0x7c81('0x3b')](_0x7c81('0x19'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0x7c81('0x40')]({'destination':function(_0x3bcd76,_0x397a61,_0x172711){_0x172711(null,path[_0x7c81('0x41')](config['root'],_0x7c81('0x42')));},'filename':function(_0x3479b3,_0x39438d,_0x5b2d87){_0x5b2d87(null,util[_0x7c81('0x43')](_0x7c81('0x44'),Date[_0x7c81('0x45')](),_0x39438d['originalname']));}})});router[_0x7c81('0x3b')](_0x7c81('0x13'),upload['single'](_0x7c81('0x46')),controller[_0x7c81('0x47')]);router[_0x7c81('0x3b')](_0x7c81('0x48'),auth['isAuthenticated'](),controller[_0x7c81('0x49')]);router[_0x7c81('0x3b')]('/:id/logout',auth[_0x7c81('0xa')](),controller[_0x7c81('0x4a')]);router[_0x7c81('0x3b')]('/:id/pause',auth['isAuthenticated'](),controller[_0x7c81('0x4b')]);router['post'](_0x7c81('0x4c'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x4d')]);router[_0x7c81('0x3b')]('/:id/teams',auth[_0x7c81('0xa')](),controller[_0x7c81('0x4e')]);router[_0x7c81('0x3b')](_0x7c81('0x4f'),auth[_0x7c81('0xa')](),controller['addChatInteractions']);router[_0x7c81('0x3b')](_0x7c81('0x50'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x51')]);router[_0x7c81('0x3b')]('/:id/fax_interactions',auth[_0x7c81('0xa')](),controller[_0x7c81('0x52')]);router[_0x7c81('0x3b')]('/:id/sms_interactions',auth[_0x7c81('0xa')](),controller[_0x7c81('0x53')]);router['post']('/:id/openchannel_interactions',auth[_0x7c81('0xa')](),controller[_0x7c81('0x54')]);router[_0x7c81('0x3b')](_0x7c81('0x55'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x56')]);router[_0x7c81('0x3b')]('/:id/fax_accounts',auth[_0x7c81('0xa')](),controller['addFaxAccounts']);router[_0x7c81('0x3b')](_0x7c81('0x30'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x57')]);router[_0x7c81('0x3b')](_0x7c81('0x58'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x59')]);router[_0x7c81('0x3b')](_0x7c81('0x33'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x5a')]);router[_0x7c81('0x3b')](_0x7c81('0x35'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x5b')]);router['post'](_0x7c81('0x5c'),auth['isAuthenticated'](),controller[_0x7c81('0x5d')]);router[_0x7c81('0x3b')](_0x7c81('0x39'),auth['isAuthenticated'](),controller['createApiKey']);router[_0x7c81('0x5e')]('/:id',auth[_0x7c81('0xa')](),controller[_0x7c81('0x5f')]);router[_0x7c81('0x5e')](_0x7c81('0x60'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x61')]);router[_0x7c81('0x62')]('/:id/queues',auth[_0x7c81('0xa')](),controller[_0x7c81('0x63')]);router['delete'](_0x7c81('0x2a'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x7c81('0x62')](_0x7c81('0x11'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x64')]);router[_0x7c81('0x62')]('/:id/chat_interactions',auth[_0x7c81('0xa')](),controller['removeChatInteractions']);router[_0x7c81('0x62')](_0x7c81('0x50'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x65')]);router[_0x7c81('0x62')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0x7c81('0x66')]);router[_0x7c81('0x62')](_0x7c81('0x67'),auth['isAuthenticated'](),controller[_0x7c81('0x68')]);router['delete'](_0x7c81('0x69'),auth['isAuthenticated'](),controller[_0x7c81('0x6a')]);router[_0x7c81('0x62')]('/:id/whatsapp_interactions',auth[_0x7c81('0xa')](),controller['removeWhatsappInteractions']);router[_0x7c81('0x62')](_0x7c81('0x2f'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x6b')]);router[_0x7c81('0x62')](_0x7c81('0x30'),auth[_0x7c81('0xa')](),controller[_0x7c81('0x6c')]);router[_0x7c81('0x62')](_0x7c81('0x58'),auth['isAuthenticated'](),controller[_0x7c81('0x6d')]);router['delete']('/:id/sms_accounts',auth[_0x7c81('0xa')](),controller['removeSmsAccounts']);router['delete']('/:id/chat_websites',auth[_0x7c81('0xa')](),controller[_0x7c81('0x6e')]);router['delete'](_0x7c81('0x5c'),auth['isAuthenticated'](),controller['removeWhatsappAccounts']);router['delete'](_0x7c81('0x39'),auth[_0x7c81('0xa')](),controller['removeApiKey']);module[_0x7c81('0x6f')]=router;
\ No newline at end of file
+var _0xcdd2=['/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/whatsapp_accounts','getWhatsappAccounts','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','/:id/queues','addQueues','diskStorage','root','server/files/images/','format','%s-%s','now','originalname','single','file','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addWhatsappAccounts','put','update','changePassword','removeQueues','removeTeams','delete','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','whoami','/presence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xcdd2,0x13d));var _0x2cdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcdd2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2cdd('0x0'));var util=require(_0x2cdd('0x1'));var path=require('path');var timeout=require(_0x2cdd('0x2'));var express=require('express');var router=express[_0x2cdd('0x3')]();var fs_extra=require(_0x2cdd('0x4'));var auth=require(_0x2cdd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2cdd('0x6'));var controller=require(_0x2cdd('0x7'));router[_0x2cdd('0x8')]('/',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0xa')]);router[_0x2cdd('0x8')](_0x2cdd('0xb'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0xc')]);router[_0x2cdd('0x8')]('/whoami',auth['isAuthenticated'](),controller[_0x2cdd('0xd')]);router[_0x2cdd('0x8')](_0x2cdd('0xe'),auth[_0x2cdd('0x9')](),controller['getPresence']);router['get'](_0x2cdd('0xf'),auth['isAuthenticated'](),controller[_0x2cdd('0x10')]);router[_0x2cdd('0x8')](_0x2cdd('0x11'),controller[_0x2cdd('0x12')]);router[_0x2cdd('0x8')](_0x2cdd('0x13'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x14')]);router[_0x2cdd('0x8')](_0x2cdd('0x15'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x16')]);router[_0x2cdd('0x8')]('/:id/queues',auth[_0x2cdd('0x9')](),controller['getQueues']);router[_0x2cdd('0x8')](_0x2cdd('0x17'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x18')]);router[_0x2cdd('0x8')](_0x2cdd('0x19'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x1a')]);router[_0x2cdd('0x8')](_0x2cdd('0x1b'),auth['isAuthenticated'](),controller[_0x2cdd('0x1c')]);router[_0x2cdd('0x8')](_0x2cdd('0x1d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x1e')]);router[_0x2cdd('0x8')](_0x2cdd('0x1f'),auth['isAuthenticated'](),controller[_0x2cdd('0x20')]);router[_0x2cdd('0x8')]('/:id/openchannel/interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x21')]);router['get'](_0x2cdd('0x22'),auth['isAuthenticated'](),controller[_0x2cdd('0x23')]);router[_0x2cdd('0x8')]('/:id/sms/interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x24')]);router[_0x2cdd('0x8')](_0x2cdd('0x25'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x26')]);router[_0x2cdd('0x8')](_0x2cdd('0x27'),auth['isAuthenticated'](),controller[_0x2cdd('0x28')]);router[_0x2cdd('0x8')](_0x2cdd('0x29'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2a')]);router[_0x2cdd('0x8')]('/:id/lists',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2b')]);router[_0x2cdd('0x8')](_0x2cdd('0x2c'),auth[_0x2cdd('0x9')](),controller['getAgents']);router[_0x2cdd('0x8')](_0x2cdd('0x2d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x2e')]);router['get'](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x30')]);router[_0x2cdd('0x8')](_0x2cdd('0x31'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x32')]);router['get']('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x2cdd('0x33')]);router[_0x2cdd('0x8')](_0x2cdd('0x34'),auth[_0x2cdd('0x9')](),controller['getSmsAccounts']);router[_0x2cdd('0x8')]('/:id/chat_websites',auth[_0x2cdd('0x9')](),controller['getChatWebsites']);router['get'](_0x2cdd('0x35'),auth['isAuthenticated'](),controller[_0x2cdd('0x36')]);router[_0x2cdd('0x8')]('/:id/scheduled_calls',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x37')]);router['get'](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x39')]);router[_0x2cdd('0x3a')]('/:id/contacts',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x3b')]);router[_0x2cdd('0x3a')]('/',auth['isAuthenticated'](),controller[_0x2cdd('0x3c')]);router['post'](_0x2cdd('0x3d'),auth['isAuthenticated'](),controller[_0x2cdd('0x3e')]);router[_0x2cdd('0x3a')](_0x2cdd('0x3f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x40')]);var upload=multer({'storage':multer[_0x2cdd('0x41')]({'destination':function(_0xbc5761,_0x32cecb,_0x4994d4){_0x4994d4(null,path['join'](config[_0x2cdd('0x42')],_0x2cdd('0x43')));},'filename':function(_0x4003f3,_0x141afe,_0x4d7b70){_0x4d7b70(null,util[_0x2cdd('0x44')](_0x2cdd('0x45'),Date[_0x2cdd('0x46')](),_0x141afe[_0x2cdd('0x47')]));}})});router[_0x2cdd('0x3a')]('/:id/avatar',upload[_0x2cdd('0x48')](_0x2cdd('0x49')),controller['addAvatar']);router[_0x2cdd('0x3a')]('/:id/login',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4a')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4b'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4c')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4d'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x4e')]);router[_0x2cdd('0x3a')](_0x2cdd('0x4f'),auth[_0x2cdd('0x9')](),controller['unpause']);router[_0x2cdd('0x3a')]('/:id/teams',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x50')]);router[_0x2cdd('0x3a')](_0x2cdd('0x51'),auth['isAuthenticated'](),controller[_0x2cdd('0x52')]);router[_0x2cdd('0x3a')](_0x2cdd('0x53'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x54')]);router[_0x2cdd('0x3a')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0x2cdd('0x55')]);router[_0x2cdd('0x3a')](_0x2cdd('0x56'),auth[_0x2cdd('0x9')](),controller['addSmsInteractions']);router[_0x2cdd('0x3a')](_0x2cdd('0x57'),auth['isAuthenticated'](),controller[_0x2cdd('0x58')]);router[_0x2cdd('0x3a')](_0x2cdd('0x59'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5a')]);router['post'](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller['addFaxAccounts']);router[_0x2cdd('0x3a')](_0x2cdd('0x31'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5b')]);router[_0x2cdd('0x3a')](_0x2cdd('0x5c'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5d')]);router['post']('/:id/sms_accounts',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x5e')]);router['post'](_0x2cdd('0x5f'),auth[_0x2cdd('0x9')](),controller['addChatWebsites']);router['post'](_0x2cdd('0x35'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x60')]);router['post'](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller['createApiKey']);router[_0x2cdd('0x61')](_0x2cdd('0xf'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x62')]);router[_0x2cdd('0x61')]('/:id/password',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x63')]);router['delete'](_0x2cdd('0x3f'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x64')]);router['delete'](_0x2cdd('0x29'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x65')]);router[_0x2cdd('0x66')](_0x2cdd('0xf'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x2cdd('0x51'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x67')]);router['delete']('/:id/mail_interactions',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x68')]);router['delete'](_0x2cdd('0x69'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6a')]);router['delete'](_0x2cdd('0x56'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6b')]);router[_0x2cdd('0x66')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x2cdd('0x6c')]);router['delete'](_0x2cdd('0x59'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6d')]);router[_0x2cdd('0x66')](_0x2cdd('0x2f'),auth[_0x2cdd('0x9')](),controller['removeFaxAccounts']);router['delete'](_0x2cdd('0x31'),auth['isAuthenticated'](),controller[_0x2cdd('0x6e')]);router[_0x2cdd('0x66')](_0x2cdd('0x5c'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x6f')]);router[_0x2cdd('0x66')](_0x2cdd('0x34'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x70')]);router['delete']('/:id/chat_websites',auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x71')]);router[_0x2cdd('0x66')](_0x2cdd('0x35'),auth['isAuthenticated'](),controller[_0x2cdd('0x72')]);router[_0x2cdd('0x66')](_0x2cdd('0x38'),auth[_0x2cdd('0x9')](),controller[_0x2cdd('0x73')]);module['exports']=router;
\ No newline at end of file
index 1027279..3afb27d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9c44,0x178));var _0x49c4=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x9c44[_0x1694f5];return _0x5b4321;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _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(_0x58cc3e,_0x1c29f4){var _0x3cd43e=function(_0x292a70){while(--_0x292a70){_0x58cc3e['push'](_0x58cc3e['shift']());}};_0x3cd43e(++_0x1c29f4);}(_0x34e8,0x12c));var _0x834e=function(_0xb58d13,_0xf6d668){_0xb58d13=_0xb58d13-0x0;var _0x28d2fc=_0x34e8[_0xb58d13];return _0x28d2fc;};'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
index b06ef57..9fa7351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb68f=['UserProfileResource','end','stack','name','send','User','fieldName','type','password','salt','query','include','true','UserSetting','userSetting','push','findAll','rows','length','chat','dataValues','sms','mail','openchannel','whatsapp','all','catch','show','model','keys','rawAttributes','filters','intersection','fields','attributes','includeAll','options','openTabs','fax','body','params','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','max','min_internal','isNil','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','voicemail','VoiceMail','fullname','email','101','102','103','113','110','105','107','109','100','114','115','create','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','Unauthorized','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','isEmpty','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','ValidationError','Wrong\x20credentials','Invalid\x20body\x20format.\x20Use\x20newPassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','add','capitalize','toLowerCase','Queues','spread','QueueId','Queue:save','VoiceQueue','voice','format','SIP/%s','penalty','UserVoiceQueueRt','removeQueues','isValidChannel','remove','isArray','Queue:remove','addAvatar','userpic','file','getAvatar','root','server/files/images/logos/default_profile.png','existsSync','join','download','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','FAX','createdAt','OpenchannelOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','findOne','sort','where','pick','merge','hasOwnProperty','CmList','List','Tag','tag','nolimit','getQueues','Queue','order','getVoiceQueuesRt','ChatGroup','getGroups','getRecordings','UserId','VoiceRecording','getScreenRecordings','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','headers','connection','remoteAddress','socket','UserVoiceQueue.penalty','upsert','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','openchannelPause','whatsappPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','getTeams','transaction','Team','flattenDeep','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getDataValue','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','getAssociatedQueues','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','$and','$or','$gt','$gte','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$overlap','$contains','$contained','$any','CmHopper','firstName','lastName','CmContact','Contact','retrieveApiKey','json','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','token','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','flatten','col','asc','desc','substring','uniqBy','orderBy','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','idle','unavailable','ringing','voiceStatus','busy','charAt','toUpperCase','slice','select','field','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','register','client','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','undefined','limit','offset','count','Content-Range','update','emit','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find'];(function(_0x41f6e9,_0x4dac69){var _0x3a9b89=function(_0x25e5c0){while(--_0x25e5c0){_0x41f6e9['push'](_0x41f6e9['shift']());}};_0x3a9b89(++_0x4dac69);}(_0xb68f,0x154));var _0xfb68=function(_0x4b819c,_0x57adcc){_0x4b819c=_0x4b819c-0x0;var _0x507426=_0xb68f[_0x4b819c];return _0x507426;};'use strict';var moment=require(_0xfb68('0x0'));var util=require(_0xfb68('0x1'));var path=require(_0xfb68('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0xfb68('0x3'));var jayson=require(_0xfb68('0x4'));var Redis=require(_0xfb68('0x5'));var authService=require(_0xfb68('0x6'));var qs=require(_0xfb68('0x7'));var logger=require('../../config/logger')(_0xfb68('0x8'));var utils=require(_0xfb68('0x9'));var config=require(_0xfb68('0xa'));var licenseUtil=require(_0xfb68('0xb'));var APIBadRequestError=require(_0xfb68('0xc'))[_0xfb68('0xd')];var APINotFoundError=require(_0xfb68('0xc'))[_0xfb68('0xe')];var APIHandleError=require(_0xfb68('0xc'))[_0xfb68('0xf')];var db=require(_0xfb68('0x10'))['db'];var socket=require(_0xfb68('0x11'))(new Redis(config[_0xfb68('0x12')]));require(_0xfb68('0x13'))[_0xfb68('0x14')](socket);config[_0xfb68('0x12')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var amiClient=jayson[_0xfb68('0x15')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0xee91d1,_0x381497,_0x5c4740,_0x120d06){return new Promise(function(_0x50a125,_0x9d1e9c){var _0x2f2ea9=_0x120d06||amiClient;return _0x2f2ea9[_0xfb68('0x16')](_0xee91d1,_0x5c4740)[_0xfb68('0x17')](function(_0x2bbc1d){logger[_0xfb68('0x18')](_0xfb68('0x19'),_0x381497,_0xfb68('0x1a'));logger[_0xfb68('0x1b')](_0xfb68('0x1c'),_0x381497,'request\x20sent',JSON['stringify'](_0x2bbc1d));if(_0x2bbc1d[_0xfb68('0x1d')]){if(_0x2bbc1d[_0xfb68('0x1d')][_0xfb68('0x1e')]===0x1f4){logger[_0xfb68('0x1d')]('User,\x20%s,\x20%s',_0x381497,_0x2bbc1d[_0xfb68('0x1d')][_0xfb68('0x1f')]);return _0x9d1e9c(_0x2bbc1d['error'][_0xfb68('0x1f')]);}logger[_0xfb68('0x1d')](_0xfb68('0x19'),_0x381497,_0x2bbc1d['error'][_0xfb68('0x1f')]);return _0x50a125(_0x2bbc1d[_0xfb68('0x1d')]['message']);}else{logger[_0xfb68('0x18')](_0xfb68('0x19'),_0x381497,_0xfb68('0x1a'));_0x50a125(_0x2bbc1d[_0xfb68('0x20')][_0xfb68('0x1f')]);}})['catch'](function(_0x5a385f){logger[_0xfb68('0x1d')]('User,\x20%s,\x20%s',_0x381497,_0x5a385f);_0x9d1e9c(_0x5a385f);});});}function respondWithStatusCode(_0x237e71,_0x46e651){_0x46e651=_0x46e651||0xcc;return function(_0xe93e24){if(_0xe93e24){return _0x237e71[_0xfb68('0x21')](_0x46e651);}return _0x237e71[_0xfb68('0x22')](_0x46e651)['end']();};}function respondWithResult(_0x4fd4c4,_0x4ebe57){_0x4ebe57=_0x4ebe57||0xc8;return function(_0x1a9f70){if(_0x1a9f70){return _0x4fd4c4[_0xfb68('0x22')](_0x4ebe57)['json'](_0x1a9f70);}};}function respondWithFilteredResult(_0x42589b,_0x23e591){return function(_0xc1d0d){if(_0xc1d0d){var _0x17736d=typeof _0x23e591['offset']===_0xfb68('0x23')&&typeof _0x23e591[_0xfb68('0x24')]===_0xfb68('0x23');var _0x5eaf7e=_0xc1d0d['count'];var _0x560225=_0x17736d?0x0:_0x23e591[_0xfb68('0x25')];var _0x113191=_0x17736d?_0xc1d0d[_0xfb68('0x26')]:_0x23e591['offset']+_0x23e591[_0xfb68('0x24')];var _0x239402;if(_0x113191>=_0x5eaf7e){_0x113191=_0x5eaf7e;_0x239402=0xc8;}else{_0x239402=0xce;}_0x42589b[_0xfb68('0x22')](_0x239402);return _0x42589b['set'](_0xfb68('0x27'),_0x560225+'-'+_0x113191+'/'+_0x5eaf7e)['json'](_0xc1d0d);}return null;};}function saveUpdates(_0x1be3dc){return function(_0x4a06da){if(_0x4a06da){return _0x4a06da[_0xfb68('0x28')](_0x1be3dc)[_0xfb68('0x17')](function(_0x5556fb){socket[_0xfb68('0x29')]('userNotification:recalc:'+_0x5556fb['id'],{});return _0x5556fb;});}return null;};}function removeEntity(_0x5a238b){return function(_0x4d7838){if(_0x4d7838){return _0x4d7838[_0xfb68('0x2a')]()[_0xfb68('0x17')](function(){var _0x3dd83d=_0x4d7838[_0xfb68('0x2b')]({'plain':!![]});if(_0x3dd83d[_0xfb68('0x2c')]===_0xfb68('0x2d'))return;var _0x4ecdf1=[{'name':_0xfb68('0x2e'),'value':_0xfb68('0x2f'),'ignore':!![]},{'name':_0xfb68('0x30'),'value':_0xfb68('0x31'),'ignore':![]},{'name':_0xfb68('0x32'),'value':_0xfb68('0x33'),'ignore':![]}];var _0x523c2e=_(_0x4ecdf1)[_0xfb68('0x34')](_0xfb68('0x35'))[_0xfb68('0x36')](_0xfb68('0x37'))[_0xfb68('0x37')]();if(_[_0xfb68('0x38')](_0x523c2e,_0x3dd83d[_0xfb68('0x2c')])){return;}var _0x4e3ef8=_[_0xfb68('0x39')](_0x4ecdf1,[_0xfb68('0x37'),_0x3dd83d[_0xfb68('0x2c')]])['name'];return db[_0xfb68('0x3a')][_0xfb68('0x2a')]({'where':{'type':_0x4e3ef8,'resourceId':_0x3dd83d['id']}})[_0xfb68('0x17')](function(){return _0x4d7838;});})[_0xfb68('0x17')](function(){_0x5a238b['status'](0xcc)[_0xfb68('0x3b')]();});}};}function handleEntityNotFound(_0x5e07c1){return function(_0x4f8666){if(!_0x4f8666){_0x5e07c1[_0xfb68('0x21')](0x194);}return _0x4f8666;};}function handleError(_0x72d145,_0x13a860){_0x13a860=_0x13a860||0x1f4;return function(_0x5f3cf5){logger[_0xfb68('0x1d')](_0x5f3cf5[_0xfb68('0x3c')]);if(_0x5f3cf5['name']){delete _0x5f3cf5[_0xfb68('0x3d')];}_0x72d145[_0xfb68('0x22')](_0x13a860)[_0xfb68('0x3e')](_0x5f3cf5);};}exports['index']=function(_0x34bea6,_0xc9785c){var _0x2acb0f={},_0x4b031b={'count':0x0,'rows':[]};var _0x1b52bb=_(db[_0xfb68('0x3f')]['rawAttributes'])['map'](function(_0x343b7d){return{'name':_0x343b7d[_0xfb68('0x40')],'type':_0x343b7d[_0xfb68('0x41')]['key']};})['filter'](function(_0x4b4036){return!_[_0xfb68('0x38')]([_0xfb68('0x42'),_0xfb68('0x43')],_0x4b4036[_0xfb68('0x3d')]);})[_0xfb68('0x37')]();_0x2acb0f=qs['getOptions'](_0x1b52bb,_0x34bea6);var _0x4d0537={'where':_0x2acb0f['where']};return db['User']['count'](_0x4d0537)[_0xfb68('0x17')](function(_0x5e4379){_0x4b031b[_0xfb68('0x26')]=_0x5e4379;if(_0x34bea6[_0xfb68('0x44')]['includeAll']){_0x2acb0f[_0xfb68('0x45')]=[{'all':!![]}];}if(_0x34bea6[_0xfb68('0x44')]['userSetting']===_0xfb68('0x46')){_0x2acb0f['include']=[{'model':db[_0xfb68('0x47')],'as':_0xfb68('0x48')}];}if(!_[_0xfb68('0x38')](_0x2acb0f['attributes'],'id')){_0x2acb0f['attributes'][_0xfb68('0x49')]('id');}return db['User'][_0xfb68('0x4a')](_0x2acb0f);})[_0xfb68('0x17')](function(_0x274676){_0x4b031b[_0xfb68('0x4b')]=_0x274676;if(_0x34bea6[_0xfb68('0x44')]['openTabs']===_0xfb68('0x46')){var _0x1204d7=[];for(var _0x2d4940=0x0;_0x2d4940<_0x4b031b['rows'][_0xfb68('0x4c')];_0x2d4940++){_0x1204d7[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x4d'),_0x4b031b[_0xfb68('0x4b')][_0x2d4940][_0xfb68('0x4e')]));_0x1204d7['push'](get_open_tabs(_0xfb68('0x4f'),_0x4b031b[_0xfb68('0x4b')][_0x2d4940][_0xfb68('0x4e')]));_0x1204d7[_0xfb68('0x49')](get_open_tabs('fax',_0x4b031b[_0xfb68('0x4b')][_0x2d4940][_0xfb68('0x4e')]));_0x1204d7[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x50'),_0x4b031b[_0xfb68('0x4b')][_0x2d4940][_0xfb68('0x4e')]));_0x1204d7[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x51'),_0x4b031b[_0xfb68('0x4b')][_0x2d4940][_0xfb68('0x4e')]));_0x1204d7[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x52'),_0x4b031b[_0xfb68('0x4b')][_0x2d4940]['dataValues']));}return Promise[_0xfb68('0x53')](_0x1204d7)[_0xfb68('0x17')](function(){return _0x4b031b;});}else{return _0x4b031b;}})[_0xfb68('0x17')](respondWithFilteredResult(_0xc9785c,_0x2acb0f))[_0xfb68('0x54')](handleError(_0xc9785c,null));};exports[_0xfb68('0x55')]=function(_0x114991,_0x19de5d){var _0x5ee397={'raw':![],'where':{'id':_0x114991['params']['id']}},_0x2b1173={};_0x2b1173[_0xfb68('0x56')]=_['differenceBy'](_[_0xfb68('0x57')](db[_0xfb68('0x3f')][_0xfb68('0x58')]),['password','salt']);_0x2b1173[_0xfb68('0x44')]=_['keys'](_0x114991[_0xfb68('0x44')]);_0x2b1173[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x2b1173[_0xfb68('0x56')],_0x2b1173[_0xfb68('0x44')]);_0x5ee397['attributes']=_[_0xfb68('0x5a')](_0x2b1173[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x114991[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x5ee397[_0xfb68('0x5c')]=_0x5ee397[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x5ee397[_0xfb68('0x5c')]:_0x2b1173[_0xfb68('0x56')];if(_0x114991[_0xfb68('0x44')][_0xfb68('0x5d')]){_0x5ee397[_0xfb68('0x45')]=[{'all':!![]}];}if(_0x114991[_0xfb68('0x44')][_0xfb68('0x48')]===_0xfb68('0x46')){_0x5ee397['include']=[{'model':db['UserSetting'],'as':_0xfb68('0x48')}];}_0x5ee397=_['merge']({},_0x5ee397,_0x114991[_0xfb68('0x5e')]);if(!_[_0xfb68('0x38')](_0x5ee397['attributes'],'id')){_0x5ee397[_0xfb68('0x5c')][_0xfb68('0x49')]('id');}return db['User'][_0xfb68('0x39')](_0x5ee397)['then'](handleEntityNotFound(_0x19de5d,null))[_0xfb68('0x17')](function(_0x26de97){var _0x3171fc=[];values=_0x26de97;if(_0x114991[_0xfb68('0x44')][_0xfb68('0x5f')]==='true'){_0x3171fc[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x4d'),_0x26de97['dataValues']));_0x3171fc[_0xfb68('0x49')](get_open_tabs('sms',_0x26de97[_0xfb68('0x4e')]));_0x3171fc[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x51'),_0x26de97[_0xfb68('0x4e')]));_0x3171fc[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x52'),_0x26de97[_0xfb68('0x4e')]));_0x3171fc['push'](get_open_tabs(_0xfb68('0x60'),_0x26de97[_0xfb68('0x4e')]));_0x3171fc[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x50'),_0x26de97[_0xfb68('0x4e')]));return Promise['all'](_0x3171fc);}else{return values;}})[_0xfb68('0x17')](function(){return values;})[_0xfb68('0x17')](respondWithResult(_0x19de5d,null))[_0xfb68('0x54')](handleError(_0x19de5d,null));};exports[_0xfb68('0x28')]=function(_0xa7d69d,_0x52b28c){if(_0xa7d69d[_0xfb68('0x61')]['id']){delete _0xa7d69d[_0xfb68('0x61')]['id'];}delete _0xa7d69d[_0xfb68('0x61')][_0xfb68('0x2c')];return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0xa7d69d[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x52b28c,null))[_0xfb68('0x17')](saveUpdates(_0xa7d69d[_0xfb68('0x61')],null))[_0xfb68('0x17')](respondWithResult(_0x52b28c,null))[_0xfb68('0x54')](handleError(_0x52b28c,null));};exports[_0xfb68('0x63')]=function(_0x519e87,_0x369cb0){return db[_0xfb68('0x3f')][_0xfb68('0x63')]()[_0xfb68('0x17')](respondWithResult(_0x369cb0,null))[_0xfb68('0x54')](handleError(_0x369cb0,null));};exports[_0xfb68('0x64')]=function(_0x33a2e7,_0xf159b6){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x33a2e7['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xf159b6,null))['then'](function(_0x530c8f){if(_0x530c8f){return _0x530c8f[_0xfb68('0x64')](_0x33a2e7[_0xfb68('0x61')][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x33a2e7[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0xf159b6,null))[_0xfb68('0x54')](handleError(_0xf159b6,null));};function validateUser(_0x508de4){return new Promise(function(_0x7bb539,_0xa1c54c){if(_0x508de4[_0xfb68('0x67')])return _0x7bb539(_0x508de4);return db[_0xfb68('0x68')][_0xfb68('0x69')](0x1)['then'](function(_0x728489){if(_0x728489[_0xfb68('0x6a')])authService['validatePasswordPattern'](_0x508de4['password']);db[_0xfb68('0x3f')][_0xfb68('0x6b')](_0xfb68('0x67'))[_0xfb68('0x17')](function(_0x4c6077){if(_['isNil'](_0x4c6077)){_0x508de4[_0xfb68('0x67')]=_0x728489[_0xfb68('0x6c')]||0x1;return;}if(_[_0xfb68('0x6d')](_0x728489['min_internal'])||_0x728489['min_internal']===_0x4c6077){_0x508de4['internal']=_0x4c6077+0x1;return;}if(_0x728489[_0xfb68('0x6c')]>_0x4c6077){_0x508de4[_0xfb68('0x67')]=_0x728489[_0xfb68('0x6c')];return;}return db[_0xfb68('0x6e')]['query'](_0xfb68('0x6f'),{'type':db[_0xfb68('0x6e')][_0xfb68('0x70')][_0xfb68('0x71')]})[_0xfb68('0x17')](function(_0x2f003d){if(_0x2f003d&&_0x2f003d[_0xfb68('0x4c')]){for(var _0x1867aa=0x0,_0x2fc147=_0x2f003d['length'];_0x1867aa<_0x2fc147&&_['isNil'](_0x508de4['internal']);_0x1867aa++){if(_0x728489[_0xfb68('0x6c')]<=_0x2f003d[_0x1867aa][_0xfb68('0x72')]){_0x508de4[_0xfb68('0x67')]=_0x2f003d[_0x1867aa]['from'];}else if(_0x728489[_0xfb68('0x6c')]>_0x2f003d[_0x1867aa][_0xfb68('0x72')]&&_0x728489['min_internal']<=_0x2f003d[_0x1867aa]['to']){_0x508de4[_0xfb68('0x67')]=_0x728489['min_internal'];}}}if(_['isNil'](_0x508de4['internal'])){_0x508de4[_0xfb68('0x67')]=_0x4c6077+0x1;}return _0x7bb539(_0x508de4);});});})['catch'](function(_0x505236){_0xa1c54c(_0x505236);});});}function updateUser(_0x33e9ec){return new Promise(function(_0x165bf9,_0x340a3d){try{if(_0x33e9ec[_0xfb68('0x73')]){_0x33e9ec['mailbox']=_0x33e9ec['internal'];_0x33e9ec[_0xfb68('0x74')]={'mailbox':_0x33e9ec[_0xfb68('0x67')],'password':_0x33e9ec['password'],'fullname':_0x33e9ec[_0xfb68('0x75')],'email':_0x33e9ec[_0xfb68('0x76')]};}if(_0x33e9ec[_0xfb68('0x2c')]==='agent'){if(!_0x33e9ec['permissions'])_0x33e9ec['permissions']=[_0xfb68('0x77'),_0xfb68('0x78'),_0xfb68('0x79'),_0xfb68('0x7a'),_0xfb68('0x7b'),'104',_0xfb68('0x7c'),'106',_0xfb68('0x7d'),'108',_0xfb68('0x7e'),_0xfb68('0x7f'),'111',_0xfb68('0x80'),_0xfb68('0x81')];}_0x165bf9(_0x33e9ec);}catch(_0x155e0c){_0x340a3d(_0x155e0c);}});}exports[_0xfb68('0x82')]=function(_0x3101ea,_0x1249e0){if(_0x3101ea[_0xfb68('0x2f')][_0xfb68('0x2c')]===_0xfb68('0x31'))throw new Error('Unauthorized');if(_0x3101ea[_0xfb68('0x61')][_0xfb68('0x2c')]===_0xfb68('0x2f')&&_0x3101ea[_0xfb68('0x2f')][_0xfb68('0x2c')]!==_0xfb68('0x2d')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x3101ea[_0xfb68('0x61')][_0xfb68('0x2c')]===_0xfb68('0x2d')&&_0x3101ea['user']['role']!==_0xfb68('0x2d')){throw new Error(_0xfb68('0x83'));}return licenseUtil[_0xfb68('0x84')]([_0x3101ea[_0xfb68('0x61')]])['then'](function(){return validateUser(_0x3101ea[_0xfb68('0x61')]);})[_0xfb68('0x17')](function(_0x2b3bcf){return updateUser(_0x2b3bcf)[_0xfb68('0x17')](function(_0x443bd9){if(_0x443bd9[_0xfb68('0x2c')]===_0xfb68('0x2d')){_0x443bd9[_0xfb68('0x85')]=_0x3101ea['user'][_0xfb68('0x85')];delete _0x443bd9[_0xfb68('0x86')];}return _0x443bd9;});})[_0xfb68('0x17')](function(_0x5d3e1d){return db['User'][_0xfb68('0x82')](_0x5d3e1d,{'include':[{'model':db[_0xfb68('0x74')],'as':_0xfb68('0x74')}]});})[_0xfb68('0x17')](function(_0x586c51){if(_0x3101ea[_0xfb68('0x61')][_0xfb68('0x2c')]===_0xfb68('0x2f'))return _0x586c51;if(_0x3101ea[_0xfb68('0x2f')][_0xfb68('0x2c')]!==_0xfb68('0x2f'))return _0x586c51;return db[_0xfb68('0x87')][_0xfb68('0x39')]({'where':{'name':_0x586c51[_0xfb68('0x2c')]==='agent'?_0xfb68('0x30'):_0xfb68('0x32'),'userProfileId':_0x3101ea[_0xfb68('0x2f')]['userProfileId']},'raw':!![]})[_0xfb68('0x17')](function(_0xcfbf0a){if(!_0xcfbf0a||_0xcfbf0a[_0xfb68('0x88')]!=0x0)return _0x586c51;return db['UserProfileResource']['create']({'name':_0x586c51[_0xfb68('0x3d')],'resourceId':_0x586c51['id'],'type':_0xcfbf0a[_0xfb68('0x3d')],'sectionId':_0xcfbf0a['id']},{})['then'](function(){return _0x586c51;});})[_0xfb68('0x54')](function(_0x529854){logger[_0xfb68('0x1d')](_0xfb68('0x89'),_0x529854);throw _0x529854;});})[_0xfb68('0x17')](respondWithResult(_0x1249e0,0xc9))['catch'](handleError(_0x1249e0,null));};exports[_0xfb68('0x8a')]=function(_0x3ac1e3,_0xde07d){var _0x4ff22c=_0x3ac1e3[_0xfb68('0x61')];var _0x1186fe=[];if(_0x3ac1e3[_0xfb68('0x2f')][_0xfb68('0x2c')]==='agent')throw new Error(_0xfb68('0x8b'));if(_[_0xfb68('0x8c')](_0x4ff22c,['role',_0xfb68('0x2f')])&&_0x3ac1e3[_0xfb68('0x2f')]['role']!==_0xfb68('0x2d')){throw new Error(_0xfb68('0x8d'));}if(_[_0xfb68('0x8c')](_0x4ff22c,[_0xfb68('0x2c'),_0xfb68('0x2d')])&&_0x3ac1e3[_0xfb68('0x2f')][_0xfb68('0x2c')]!=='admin'){throw new Error(_0xfb68('0x8e'));}return licenseUtil[_0xfb68('0x84')](_0x4ff22c)[_0xfb68('0x17')](function(){return validateUser(_0x4ff22c[0x0]);})['then'](function(){for(var _0x13b12e=0x1;_0x13b12e<_0x4ff22c['length'];_0x13b12e++){var _0x29250c=_0x4ff22c[_0x13b12e-0x1][_0xfb68('0x67')];if(!_0x4ff22c[_0x13b12e][_0xfb68('0x67')])_0x4ff22c[_0x13b12e][_0xfb68('0x67')]=_0x29250c+0x1;_0x1186fe[_0xfb68('0x49')](validateUser(_0x4ff22c[_0x13b12e]));}return Promise[_0xfb68('0x53')](_0x1186fe);})[_0xfb68('0x17')](function(){_0x1186fe=[];for(var _0x2d6237=0x0;_0x2d6237<_0x4ff22c[_0xfb68('0x4c')];_0x2d6237++){_0x1186fe['push'](updateUser(_0x4ff22c[_0x2d6237]));}return Promise[_0xfb68('0x53')](_0x1186fe);})['then'](function(){_0x1186fe=_0x4ff22c[_0xfb68('0x36')](function(_0x7c51d1){return db[_0xfb68('0x3f')]['create'](_0x7c51d1,{'include':[{'model':db['VoiceMail'],'as':_0xfb68('0x74')}]})['then'](function(_0x1f5f42){_0x7c51d1['id']=_0x1f5f42['id'];return _0x7c51d1;});});return Promise[_0xfb68('0x53')](_0x1186fe);})[_0xfb68('0x17')](function(_0x207558){if(_0x3ac1e3[_0xfb68('0x61')][_0xfb68('0x2c')]==='user')return _0x207558;if(_0x3ac1e3[_0xfb68('0x2f')]['role']!==_0xfb68('0x2f'))return _0x207558;var _0x4629a=_[_0xfb68('0x8c')](_0x207558,function(_0x457dc1){return _0x457dc1['role']===_0xfb68('0x31')||_0x457dc1[_0xfb68('0x2c')]===_0xfb68('0x33');});if(!_0x4629a)return _0x207558;return db[_0xfb68('0x87')][_0xfb68('0x4a')]({'where':{'name':{'$or':[_0xfb68('0x30'),_0xfb68('0x32')]},'userProfileId':_0x3ac1e3['user'][_0xfb68('0x86')]},'raw':!![]})['then'](function(_0x46fcd8){if(_[_0xfb68('0x8f')](_0x46fcd8)||!_[_0xfb68('0x8c')](_0x46fcd8,[_0xfb68('0x88'),0x0]))return _0x207558;_0x1186fe=[];var _0x3b962a=_(_0x46fcd8)[_0xfb68('0x36')](function(_0x3833fb){if(_0x3833fb[_0xfb68('0x88')]===0x1)return;return _0x3833fb['name']==='Agents'?'agent':_0xfb68('0x33');})['compact']()[_0xfb68('0x37')]();for(var _0xafa874=0x0;_0xafa874<_0x207558['length'];_0xafa874++){if(!_[_0xfb68('0x38')](_0x3b962a,_0x207558[_0xafa874]['role']))return;var _0x525286=_0x207558[_0xafa874][_0xfb68('0x2c')]===_0xfb68('0x31')?_0xfb68('0x30'):_0xfb68('0x32');_0x1186fe[_0xfb68('0x49')](db[_0xfb68('0x3a')][_0xfb68('0x82')]({'name':_0x207558[_0xafa874][_0xfb68('0x3d')],'resourceId':_0x207558[_0xafa874]['id'],'type':_0x525286,'sectionId':_[_0xfb68('0x39')](_0x46fcd8,['name',_0x525286])['id']},{}));}return Promise[_0xfb68('0x53')](_0x1186fe);});})[_0xfb68('0x17')](respondWithResult(_0xde07d,0xc9))[_0xfb68('0x54')](handleError(_0xde07d,null));};exports[_0xfb68('0x90')]=function(_0x408630,_0x1fc890){if(_0x408630['body']['id']){delete _0x408630[_0xfb68('0x61')]['id'];}return db['User'][_0xfb68('0x39')]({'where':{'id':_0x408630[_0xfb68('0x62')]['id']}})['then'](function(_0x2ed45a){if(!_0x2ed45a)return null;if(_0x2ed45a['id']===_0x408630[_0xfb68('0x2f')]['id']){if(!_0x408630[_0xfb68('0x61')][_0xfb68('0x91')]||!_0x408630['body'][_0xfb68('0x92')]){throw new db[(_0xfb68('0x93'))]['ValidationError'](_0xfb68('0x94'));}if(!_0x2ed45a[_0xfb68('0x95')](_0x408630[_0xfb68('0x61')][_0xfb68('0x91')])){throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))](_0xfb68('0x97'));}if(_0x408630[_0xfb68('0x61')][_0xfb68('0x91')]===_0x408630[_0xfb68('0x61')][_0xfb68('0x92')]){throw new db[(_0xfb68('0x93'))]['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x408630[_0xfb68('0x2f')][_0xfb68('0x2c')]==='admin'){if(!_0x408630[_0xfb68('0x61')]['newPassword']){throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))](_0xfb68('0x98'));}}else if(_0x408630[_0xfb68('0x2f')][_0xfb68('0x2c')]===_0xfb68('0x2f')){if(!_0x408630[_0xfb68('0x61')]['newPassword']){throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))](_0xfb68('0x98'));}if(_0x2ed45a['role']!==_0xfb68('0x31')){throw new db['Sequelize']['ValidationError'](_0xfb68('0x8b'));}}else{throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))](_0xfb68('0x8b'));}return _0x2ed45a;})['then'](handleEntityNotFound(_0x1fc890,null))[_0xfb68('0x17')](function(_0x5ee4d4){return db[_0xfb68('0x68')]['findOne']({'attributes':['id',_0xfb68('0x6a'),_0xfb68('0x99'),_0xfb68('0x9a')]})['then'](function(_0x59ff70){if(_0x59ff70[_0xfb68('0x6a')])authService[_0xfb68('0x9b')](_0x408630[_0xfb68('0x61')][_0xfb68('0x92')]);if(!_0x59ff70[_0xfb68('0x99')]||!_0x5ee4d4['previousPasswords'])return _0x5ee4d4;authService[_0xfb68('0x9c')](_0x408630[_0xfb68('0x61')][_0xfb68('0x92')],_0x5ee4d4[_0xfb68('0x9d')],_0x59ff70[_0xfb68('0x9a')]);return _0x5ee4d4;})['then'](saveUpdates({'password':_0x408630[_0xfb68('0x61')][_0xfb68('0x92')],'passwordResetAt':_0x408630[_0xfb68('0x2f')]['id']==_0x408630['params']['id']?moment():null,'previousPasswords':authService[_0xfb68('0x9e')](_0x408630['body'][_0xfb68('0x92')],_0x5ee4d4[_0xfb68('0x9d')])},null));})[_0xfb68('0x17')](respondWithResult(_0x1fc890,null))[_0xfb68('0x54')](handleError(_0x1fc890,null));};exports[_0xfb68('0x9f')]=function(_0x3da328,_0x4462fe){var _0x262ce4=_0x3da328[_0xfb68('0x61')][_0xfb68('0xa0')];return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x3da328[_0xfb68('0x62')]['id']},'attributes':['id','name',_0xfb68('0x2c'),_0xfb68('0xa1'),_0xfb68('0xa2'),_0xfb68('0xa3'),_0xfb68('0xa4')]})[_0xfb68('0x17')](handleEntityNotFound(_0x4462fe,null))[_0xfb68('0x17')](function(_0xca9273){if(_0xca9273){if(!utils['isValidChannel'](_0x262ce4)){throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))]('Unknown\x20channel');}return _0xca9273[_0xfb68('0xa5')+_[_0xfb68('0xa6')](_0x262ce4[_0xfb68('0xa7')]())+_0xfb68('0xa8')](_0x3da328[_0xfb68('0x61')]['ids'],{'penalty':_0x3da328[_0xfb68('0x61')]['penalty']||0x0})[_0xfb68('0xa9')](function(_0x2121ff){for(var _0x1c761e=0x0;_0x1c761e<_0x3da328[_0xfb68('0x61')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x1c761e+=0x1){var _0x1fcaa8={'UserId':Number(_0x3da328[_0xfb68('0x62')]['id'])};_0x1fcaa8[_[_0xfb68('0xa6')](_0x262ce4[_0xfb68('0xa7')]())+_0xfb68('0xaa')]=Number(_0x3da328[_0xfb68('0x61')]['ids'][_0x1c761e]);socket['emit'](_0xfb68('0x2f')+_['capitalize'](_0x262ce4[_0xfb68('0xa7')]())+_0xfb68('0xab'),_0x1fcaa8);}return _0x2121ff;})[_0xfb68('0x17')](function(){if(_0x262ce4==='voice'){return db[_0xfb68('0xac')][_0xfb68('0x4a')]({'where':{'id':_0x3da328['body']['ids']||[]},'raw':!![],'attributes':['id',_0xfb68('0x3d')]});}})[_0xfb68('0x17')](function(_0x15147b){var _0x1facd6=_0xca9273[_0xfb68('0x2b')]({'plain':!![]});var _0x9341e4=[];if(_0x262ce4===_0xfb68('0xad')&&_0x1facd6[_0xfb68('0x2c')]===_0xfb68('0x31')&&_0x1facd6['online']){for(let _0x38fda8=0x0;_0x38fda8<_0x15147b['length'];_0x38fda8+=0x1){_0x9341e4[_0xfb68('0x49')]({'membername':_0x1facd6['name'],'UserId':_0x1facd6['id'],'queue_name':_0x15147b[_0x38fda8][_0xfb68('0x3d')],'VoiceQueueId':_0x15147b[_0x38fda8]['id'],'interface':_[_0xfb68('0x6d')](_0x1facd6[_0xfb68('0xa4')])?util[_0xfb68('0xae')](_0xfb68('0xaf'),_0x1facd6[_0xfb68('0x3d')]):_0x1facd6[_0xfb68('0xa4')],'paused':_0x1facd6['voicePause']||![],'penalty':_0x3da328[_0xfb68('0x61')][_0xfb68('0xb0')]||0x0});}return Promise[_0xfb68('0x53')](_0x9341e4[_0xfb68('0x36')](function(_0x187068){return db[_0xfb68('0xb1')]['upsert'](_0x187068);}));}return _0xca9273;});}})['then'](respondWithStatusCode(_0x4462fe,null))[_0xfb68('0x54')](handleError(_0x4462fe,null));};exports[_0xfb68('0xb2')]=function(_0x19fed5,_0x3289ca){var _0x2f0fc5,_0x1e7f27;return db['User'][_0xfb68('0x39')]({'where':{'id':_0x19fed5[_0xfb68('0x62')]['id']},'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x2c')]})[_0xfb68('0x17')](handleEntityNotFound(_0x3289ca,null))[_0xfb68('0x17')](function(_0x54e687){if(_0x54e687){_0x2f0fc5=_0x54e687;if(!_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')]||!utils[_0xfb68('0xb3')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')])){throw new db['Sequelize'][(_0xfb68('0x96'))]('Unknown\x20channel');}return _0x54e687[_0xfb68('0xb4')+_['capitalize'](_0x19fed5['query'][_0xfb68('0xa0')][_0xfb68('0xa7')]())+_0xfb68('0xa8')](_0x19fed5['query']['ids']);}})[_0xfb68('0x17')](function(_0x18b429){if(_[_0xfb68('0xb5')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0x65')])){for(var _0x491eeb=0x0;_0x491eeb<_0x19fed5['query'][_0xfb68('0x65')]['length'];_0x491eeb+=0x1){_0x1e7f27={'UserId':Number(_0x19fed5['params']['id'])};_0x1e7f27[_[_0xfb68('0xa6')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')][_0xfb68('0xa7')]())+'QueueId']=Number(_0x19fed5[_0xfb68('0x44')][_0xfb68('0x65')][_0x491eeb]);socket['emit']('user'+_[_0xfb68('0xa6')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')][_0xfb68('0xa7')]())+'Queue:remove',_0x1e7f27);}}else{_0x1e7f27={'UserId':Number(_0x19fed5['params']['id'])};_0x1e7f27[_[_0xfb68('0xa6')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')][_0xfb68('0xa7')]())+'QueueId']=Number(_0x19fed5['query'][_0xfb68('0x65')]);socket[_0xfb68('0x29')](_0xfb68('0x2f')+_[_0xfb68('0xa6')](_0x19fed5[_0xfb68('0x44')][_0xfb68('0xa0')][_0xfb68('0xa7')]())+_0xfb68('0xb6'),_0x1e7f27);}return _0x18b429;})['then'](function(){if(_0x19fed5[_0xfb68('0x44')]['channel']==='voice'){return db['UserVoiceQueueRt'][_0xfb68('0x2a')]({'where':{'UserId':_0x19fed5['params']['id'],'VoiceQueueId':_0x19fed5[_0xfb68('0x44')]['ids']},'individualHooks':!![]})[_0xfb68('0x17')](function(){return _0x2f0fc5;});}return _0x2f0fc5;})[_0xfb68('0x17')](respondWithStatusCode(_0x3289ca,null))[_0xfb68('0x54')](handleError(_0x3289ca,null));};exports[_0xfb68('0xb7')]=function(_0x311807,_0x77cefa){_0x311807[_0xfb68('0x61')][_0xfb68('0xb8')]=_0x311807[_0xfb68('0xb9')]['filename'];return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x311807['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x77cefa,null))[_0xfb68('0x17')](saveUpdates(_0x311807[_0xfb68('0x61')],null))['then'](respondWithResult(_0x77cefa,null))[_0xfb68('0x54')](handleError(_0x77cefa,null));};exports[_0xfb68('0xba')]=function(_0x42791b,_0xe8106b){var _0x11142e=path['join'](config[_0xfb68('0xbb')],_0xfb68('0xbc'));return db['User']['find']({'where':{'id':_0x42791b[_0xfb68('0x62')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xfb68('0x17')](handleEntityNotFound(_0xe8106b,null))['then'](function(_0x141956){if(_0x141956){if(_['isNil'](_0x141956[_0xfb68('0xb8')])){return _0xe8106b['download'](_0x11142e);}else{if(!fs[_0xfb68('0xbd')](path[_0xfb68('0xbe')](config['root'],'server/files/images/',_0x141956['userpic']))){return _0xe8106b[_0xfb68('0xbf')](_0x11142e);}return _0xe8106b['download'](path[_0xfb68('0xbe')](config[_0xfb68('0xbb')],_0xfb68('0xc0'),_0x141956[_0xfb68('0xb8')]));}}})[_0xfb68('0x54')](handleError(_0xe8106b,null));};exports[_0xfb68('0xc1')]=function(_0x346a98,_0xd05400){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x346a98[_0xfb68('0x62')]['id']},'attributes':['id']})[_0xfb68('0x17')](handleEntityNotFound(_0xd05400,null))[_0xfb68('0x17')](function(_0xb0b9cc){var _0x326b62=[];values=_0xb0b9cc['dataValues'];_0x326b62[_0xfb68('0x49')](get_open_tabs('chat',_0xb0b9cc['dataValues']));_0x326b62['push'](get_open_tabs(_0xfb68('0x4f'),_0xb0b9cc[_0xfb68('0x4e')]));_0x326b62[_0xfb68('0x49')](get_open_tabs('openchannel',_0xb0b9cc[_0xfb68('0x4e')]));_0x326b62[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x52'),_0xb0b9cc[_0xfb68('0x4e')]));_0x326b62[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x60'),_0xb0b9cc['dataValues']));_0x326b62[_0xfb68('0x49')](get_open_tabs(_0xfb68('0x50'),_0xb0b9cc[_0xfb68('0x4e')]));return Promise[_0xfb68('0x53')](_0x326b62);})[_0xfb68('0x17')](function(_0x2d9e17){if(_0x2d9e17){var _0x5390b0=_[_0xfb68('0x36')](values[_0xfb68('0xc2')],function(_0x2074b5){return{'channel':_0xfb68('0xc3'),'id':_0x2074b5['id'],'createdAt':_0x2074b5['createdAt']};});var _0x4a20cc=_[_0xfb68('0x36')](values['FaxOpenTabs'],function(_0x4193a5){return{'channel':_0xfb68('0xc4'),'id':_0x4193a5['id'],'createdAt':_0x4193a5[_0xfb68('0xc5')]};});var _0x5d6076=_[_0xfb68('0x36')](values[_0xfb68('0xc6')],function(_0x57ed0d){return{'channel':'OPENCHANNEL','id':_0x57ed0d['id'],'createdAt':_0x57ed0d[_0xfb68('0xc5')]};});var _0x505315=_[_0xfb68('0x36')](values['MailOpenTabs'],function(_0x33fb43){return{'channel':_0xfb68('0xc7'),'id':_0x33fb43['id'],'createdAt':_0x33fb43['createdAt']};});var _0x965522=_[_0xfb68('0x36')](values[_0xfb68('0xc8')],function(_0x245df8){return{'channel':_0xfb68('0xc9'),'id':_0x245df8['id'],'createdAt':_0x245df8[_0xfb68('0xc5')]};});var _0x253248=_[_0xfb68('0x36')](values[_0xfb68('0xca')],function(_0x15ef73){return{'channel':_0xfb68('0xcb'),'id':_0x15ef73['id'],'createdAt':_0x15ef73[_0xfb68('0xc5')]};});var _0x5ca709=_['concat'](_0x5390b0,_0x4a20cc,_0x5d6076,_0x505315,_0x965522,_0x253248);var _0x4e3fde={'count':_0x5ca709[_0xfb68('0x4c')],'rows':_0x5ca709};return _0x4e3fde;}else return null;})[_0xfb68('0x17')](respondWithResult(_0xd05400,null))[_0xfb68('0x54')](handleError(_0xd05400,null));};exports[_0xfb68('0xcc')]=function(_0x512a5a,_0x335ad8){var _0x4a8c88={};var _0x114081={};var _0x3b67ee;var _0x272531;return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x512a5a['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x335ad8,null))[_0xfb68('0x17')](function(_0x3c4b3f){if(_0x3c4b3f){_0x3b67ee=_0x3c4b3f;_0x114081[_0xfb68('0x56')]=_['keys'](db['CmContact'][_0xfb68('0x58')]);_0x114081[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x512a5a[_0xfb68('0x44')]);_0x114081[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x114081[_0xfb68('0x56')],_0x114081[_0xfb68('0x44')]);_0x4a8c88['attributes']=_[_0xfb68('0x5a')](_0x114081[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x512a5a[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x4a8c88[_0xfb68('0x5c')]=_0x4a8c88[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x4a8c88[_0xfb68('0x5c')]:_0x114081[_0xfb68('0x56')];_0x4a8c88['order']=qs[_0xfb68('0xce')](_0x512a5a['query']['sort']);_0x4a8c88[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x512a5a[_0xfb68('0x44')],_0x114081[_0xfb68('0x59')]));if(_0x512a5a[_0xfb68('0x44')][_0xfb68('0x34')]){_0x4a8c88[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x4a8c88[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x4a8c88[_0xfb68('0x5c')],function(_0x5ef8a0){var _0xd45e36={};_0xd45e36[_0x5ef8a0]={'$like':'%'+_0x512a5a[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0xd45e36;})});}_0x4a8c88=_[_0xfb68('0xd1')]({},_0x4a8c88,_0x512a5a['options']);return _0x3b67ee[_0xfb68('0xcc')](_0x4a8c88);}})[_0xfb68('0x17')](function(_0x51e7b5){if(_0x51e7b5){_0x272531=_0x51e7b5['length'];if(_0x512a5a[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0x5d'))){_0x4a8c88[_0xfb68('0x45')]=[{'model':db[_0xfb68('0xd3')],'as':_0xfb68('0xd4'),'required':![]},{'model':db[_0xfb68('0xd5')],'as':'Tags','attributes':['id',_0xfb68('0x3d'),'color'],'where':_0x512a5a[_0xfb68('0x44')]['tag']?{'id':_0x512a5a[_0xfb68('0x44')][_0xfb68('0xd6')]}:undefined,'required':_0x512a5a[_0xfb68('0x44')][_0xfb68('0xd6')]?!![]:![]}];}if(!_0x512a5a[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x4a8c88[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x512a5a[_0xfb68('0x44')][_0xfb68('0x24')]);_0x4a8c88[_0xfb68('0x25')]=qs['offset'](_0x512a5a[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x3b67ee[_0xfb68('0xcc')](_0x4a8c88);}})['then'](function(_0x12b39e){if(_0x12b39e){return _0x12b39e?{'count':_0x272531,'rows':_0x12b39e}:null;}})[_0xfb68('0x17')](respondWithResult(_0x335ad8,null))[_0xfb68('0x54')](handleError(_0x335ad8,null));};exports[_0xfb68('0xd8')]=function(_0x50fce5,_0x30aadb){var _0x35ab6b;var _0x4dfe18={};var _0x498ed5;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0x50fce5[_0xfb68('0x62')]['id']},'attributes':['id',_0xfb68('0x3d'),'role']})['then'](handleEntityNotFound(_0x30aadb,null))[_0xfb68('0x17')](function(_0x358c94){if(!utils[_0xfb68('0xb3')](_0x50fce5[_0xfb68('0x44')]['channel'])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}_0x35ab6b=_0x358c94;var _0x5e12fb={};_0x5e12fb[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_['capitalize'](_0x50fce5[_0xfb68('0x44')][_0xfb68('0xa0')])+_0xfb68('0xd9')][_0xfb68('0x58')]);_0x5e12fb['query']=_[_0xfb68('0x57')](_0x50fce5['query']);_0x5e12fb['filters']=_[_0xfb68('0x5a')](_0x5e12fb['model'],_0x5e12fb[_0xfb68('0x44')]);_0x4dfe18[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x5e12fb[_0xfb68('0x56')],qs['fields'](_0x50fce5[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x4dfe18['attributes']=_0x4dfe18[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x4dfe18[_0xfb68('0x5c')]:_0x5e12fb['model'];_0x4dfe18[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x50fce5['query']['sort']);_0x4dfe18[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x50fce5[_0xfb68('0x44')],_0x5e12fb[_0xfb68('0x59')]));if(_0x50fce5['query'][_0xfb68('0x34')]){_0x4dfe18[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x4dfe18[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x4dfe18[_0xfb68('0x5c')],function(_0x1f9122){var _0x1c5674={};_0x1c5674[_0x1f9122]={'$like':'%'+_0x50fce5[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x1c5674;})});}_0x4dfe18=_[_0xfb68('0xd1')]({},_0x4dfe18,_0x50fce5['options']);switch(_0x35ab6b[_0xfb68('0x2c')]){case _0xfb68('0x2d'):return db[_[_0xfb68('0xa6')](_0x50fce5[_0xfb68('0x44')][_0xfb68('0xa0')])+_0xfb68('0xd9')][_0xfb68('0x4a')](_0x4dfe18);case _0xfb68('0x2f'):case _0xfb68('0x31'):return _0x35ab6b[_0xfb68('0x2b')+_['capitalize'](_0x50fce5[_0xfb68('0x44')][_0xfb68('0xa0')])+_0xfb68('0xa8')](_0x4dfe18);default:throw new db[(_0xfb68('0x93'))][(_0xfb68('0x96'))]('Unknown\x20role');}})[_0xfb68('0x17')](function(_0x36d659){_0x498ed5=_0x36d659[_0xfb68('0x4c')];if(!_0x50fce5['query']['hasOwnProperty']('nolimit')){_0x4dfe18['limit']=qs[_0xfb68('0x24')](_0x50fce5['query'][_0xfb68('0x24')]);_0x4dfe18['offset']=qs['offset'](_0x50fce5[_0xfb68('0x44')][_0xfb68('0x25')]);}switch(_0x35ab6b[_0xfb68('0x2c')]){case _0xfb68('0x2d'):return db[_[_0xfb68('0xa6')](_0x50fce5[_0xfb68('0x44')][_0xfb68('0xa0')])+_0xfb68('0xd9')][_0xfb68('0x4a')](_0x4dfe18);case _0xfb68('0x2f'):case _0xfb68('0x31'):return _0x35ab6b[_0xfb68('0x2b')+_[_0xfb68('0xa6')](_0x50fce5['query'][_0xfb68('0xa0')])+_0xfb68('0xa8')](_0x4dfe18);}})[_0xfb68('0x17')](function(_0x4bb477){return{'count':_0x498ed5,'rows':_0x4bb477};})[_0xfb68('0x17')](respondWithResult(_0x30aadb,null))[_0xfb68('0x54')](handleError(_0x30aadb,null));};exports[_0xfb68('0xdb')]=function(_0x59c29b,_0x1912e7){var _0x248a8e={};var _0x9d89f2={};var _0x2de276;var _0x2c186e;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x59c29b['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x1912e7,null))[_0xfb68('0x17')](function(_0x70d814){if(_0x70d814){_0x2de276=_0x70d814;_0x9d89f2[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0xb1')]['rawAttributes']);_0x9d89f2['query']=_['keys'](_0x59c29b[_0xfb68('0x44')]);_0x9d89f2['filters']=_[_0xfb68('0x5a')](_0x9d89f2[_0xfb68('0x56')],_0x9d89f2[_0xfb68('0x44')]);_0x248a8e[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x9d89f2[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x59c29b['query'][_0xfb68('0x5b')]));_0x248a8e[_0xfb68('0x5c')]=_0x248a8e[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x248a8e['attributes']:_0x9d89f2[_0xfb68('0x56')];_0x248a8e[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x59c29b[_0xfb68('0x44')]['sort']);_0x248a8e[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x59c29b['query'],_0x9d89f2[_0xfb68('0x59')]));if(_0x59c29b[_0xfb68('0x44')][_0xfb68('0x34')]){_0x248a8e[_0xfb68('0xcf')]=_['merge'](_0x248a8e[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x248a8e[_0xfb68('0x5c')],function(_0x27f037){var _0x82f0a6={};_0x82f0a6[_0x27f037]={'$like':'%'+_0x59c29b[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x82f0a6;})});}_0x248a8e=_[_0xfb68('0xd1')]({},_0x248a8e,_0x59c29b['options']);return _0x2de276[_0xfb68('0xdb')](_0x248a8e);}})[_0xfb68('0x17')](function(_0x5843c4){if(_0x5843c4){_0x2c186e=_0x5843c4[_0xfb68('0x4c')];if(!_0x59c29b[_0xfb68('0x44')]['hasOwnProperty'](_0xfb68('0xd7'))){_0x248a8e['limit']=qs['limit'](_0x59c29b[_0xfb68('0x44')][_0xfb68('0x24')]);_0x248a8e[_0xfb68('0x25')]=qs['offset'](_0x59c29b[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x2de276['getVoiceQueuesRt'](_0x248a8e);}})[_0xfb68('0x17')](function(_0x16a7f3){if(_0x16a7f3){return _0x16a7f3?{'count':_0x2c186e,'rows':_0x16a7f3}:null;}})['then'](respondWithResult(_0x1912e7,null))[_0xfb68('0x54')](handleError(_0x1912e7,null));};exports['getGroups']=function(_0x293d43,_0x5c83ed){var _0x11bc88={};var _0x41269a={};var _0x2985d0;var _0x3fb4b;return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x293d43[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x5c83ed,null))[_0xfb68('0x17')](function(_0x4e3e75){if(_0x4e3e75){_0x2985d0=_0x4e3e75;_0x41269a[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0xdc')]['rawAttributes']);_0x41269a[_0xfb68('0x44')]=_['keys'](_0x293d43[_0xfb68('0x44')]);_0x41269a['filters']=_[_0xfb68('0x5a')](_0x41269a[_0xfb68('0x56')],_0x41269a[_0xfb68('0x44')]);_0x11bc88[_0xfb68('0x5c')]=_['intersection'](_0x41269a[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x293d43[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x11bc88[_0xfb68('0x5c')]=_0x11bc88[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x11bc88[_0xfb68('0x5c')]:_0x41269a['model'];_0x11bc88['order']=qs['sort'](_0x293d43[_0xfb68('0x44')][_0xfb68('0xce')]);_0x11bc88[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x293d43[_0xfb68('0x44')],_0x41269a['filters']));if(_0x293d43[_0xfb68('0x44')][_0xfb68('0x34')]){_0x11bc88[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x11bc88[_0xfb68('0xcf')],{'$or':_['map'](_0x11bc88[_0xfb68('0x5c')],function(_0x284a51){var _0x59cc5c={};_0x59cc5c[_0x284a51]={'$like':'%'+_0x293d43['query'][_0xfb68('0x34')]+'%'};return _0x59cc5c;})});}_0x11bc88=_[_0xfb68('0xd1')]({},_0x11bc88,_0x293d43[_0xfb68('0x5e')]);return _0x2985d0[_0xfb68('0xdd')](_0x11bc88);}})[_0xfb68('0x17')](function(_0x569dc1){if(_0x569dc1){_0x3fb4b=_0x569dc1[_0xfb68('0x4c')];if(!_0x293d43[_0xfb68('0x44')]['hasOwnProperty']('nolimit')){_0x11bc88[_0xfb68('0x24')]=qs['limit'](_0x293d43[_0xfb68('0x44')]['limit']);_0x11bc88['offset']=qs['offset'](_0x293d43[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x2985d0['getGroups'](_0x11bc88);}})[_0xfb68('0x17')](function(_0x14b124){if(_0x14b124){return _0x14b124?{'count':_0x3fb4b,'rows':_0x14b124}:null;}})[_0xfb68('0x17')](respondWithResult(_0x5c83ed,null))[_0xfb68('0x54')](handleError(_0x5c83ed,null));};exports[_0xfb68('0xde')]=function(_0x5895fc,_0x14ce75){var _0x5f190c={'raw':!![],'where':{}};var _0x2eb01e={};var _0x31509e={'count':0x0,'rows':[]};return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x5895fc[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x14ce75,null))[_0xfb68('0x17')](function(_0x4abaa2){if(_0x4abaa2){_0x2eb01e['model']=_['keys'](db['VoiceRecording'][_0xfb68('0x58')]);_0x2eb01e['query']=_[_0xfb68('0x57')](_0x5895fc[_0xfb68('0x44')]);_0x2eb01e[_0xfb68('0x59')]=_['intersection'](_0x2eb01e[_0xfb68('0x56')],_0x2eb01e[_0xfb68('0x44')]);_0x5f190c['attributes']=_[_0xfb68('0x5a')](_0x2eb01e[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x5895fc['query']['fields']));_0x5f190c[_0xfb68('0x5c')]=_0x5f190c[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x5f190c[_0xfb68('0x5c')]:_0x2eb01e[_0xfb68('0x56')];if(!_0x5895fc[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x5f190c[_0xfb68('0x24')]=qs['limit'](_0x5895fc[_0xfb68('0x44')][_0xfb68('0x24')]);_0x5f190c[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x5895fc[_0xfb68('0x44')][_0xfb68('0x25')]);}_0x5f190c[_0xfb68('0xda')]=qs['sort'](_0x5895fc[_0xfb68('0x44')][_0xfb68('0xce')]);_0x5f190c[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x5895fc[_0xfb68('0x44')],_0x2eb01e[_0xfb68('0x59')]));_0x5f190c[_0xfb68('0xcf')][_0xfb68('0xdf')]=_0x4abaa2['id'];if(_0x5895fc[_0xfb68('0x44')][_0xfb68('0x34')]){_0x5f190c[_0xfb68('0xcf')]=_['merge'](_0x5f190c[_0xfb68('0xcf')],{'$or':_['map'](_0x5f190c[_0xfb68('0x5c')],function(_0x5f7c1d){var _0x589734={};_0x589734[_0x5f7c1d]={'$like':'%'+_0x5895fc[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x589734;})});}_0x5f190c=_['merge']({},_0x5f190c,_0x5895fc[_0xfb68('0x5e')]);return db[_0xfb68('0xe0')][_0xfb68('0x26')]({'where':_0x5f190c[_0xfb68('0xcf')]})[_0xfb68('0x17')](function(_0x218a95){_0x31509e['count']=_0x218a95;if(_0x5895fc[_0xfb68('0x44')][_0xfb68('0x5d')]){_0x5f190c[_0xfb68('0x45')]=[{'all':!![]}];}return db['VoiceRecording'][_0xfb68('0x4a')](_0x5f190c);})['then'](function(_0xa89843){_0x31509e[_0xfb68('0x4b')]=_0xa89843;return _0x31509e;});}})[_0xfb68('0x17')](respondWithFilteredResult(_0x14ce75,_0x5f190c))['catch'](handleError(_0x14ce75,null));};exports[_0xfb68('0xe1')]=function(_0x596970,_0xd35f16){var _0x65b8bc={'raw':!![],'where':{}};var _0x44367a={};var _0x239105={'count':0x0,'rows':[]};return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x596970[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xd35f16,null))['then'](function(_0x856c6c){if(_0x856c6c){_0x44367a[_0xfb68('0x56')]=_[_0xfb68('0x57')](db['ScreenRecording'][_0xfb68('0x58')]);_0x44367a[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x596970[_0xfb68('0x44')]);_0x44367a[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x44367a[_0xfb68('0x56')],_0x44367a[_0xfb68('0x44')]);_0x65b8bc[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x44367a['model'],qs[_0xfb68('0x5b')](_0x596970['query']['fields']));_0x65b8bc[_0xfb68('0x5c')]=_0x65b8bc[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x65b8bc[_0xfb68('0x5c')]:_0x44367a[_0xfb68('0x56')];if(!_0x596970['query']['hasOwnProperty'](_0xfb68('0xd7'))){_0x65b8bc[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x596970[_0xfb68('0x44')]['limit']);_0x65b8bc[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x596970[_0xfb68('0x44')]['offset']);}_0x65b8bc['order']=qs['sort'](_0x596970[_0xfb68('0x44')][_0xfb68('0xce')]);_0x65b8bc[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x596970[_0xfb68('0x44')],_0x44367a[_0xfb68('0x59')]));_0x65b8bc[_0xfb68('0xcf')][_0xfb68('0xdf')]=_0x856c6c['id'];if(_0x596970[_0xfb68('0x44')][_0xfb68('0x34')]){_0x65b8bc[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x65b8bc[_0xfb68('0xcf')],{'$or':_['map'](_0x65b8bc[_0xfb68('0x5c')],function(_0x401b2c){var _0x31b149={};_0x31b149[_0x401b2c]={'$like':'%'+_0x596970[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x31b149;})});}_0x65b8bc=_[_0xfb68('0xd1')]({},_0x65b8bc,_0x596970[_0xfb68('0x5e')]);return db['ScreenRecording'][_0xfb68('0x26')]({'where':_0x65b8bc['where']})[_0xfb68('0x17')](function(_0x3db943){_0x239105['count']=_0x3db943;if(_0x596970[_0xfb68('0x44')][_0xfb68('0x5d')]){_0x65b8bc['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xfb68('0x4a')](_0x65b8bc);})['then'](function(_0x235b9a){_0x239105[_0xfb68('0x4b')]=_0x235b9a;return _0x239105;});}})[_0xfb68('0x17')](respondWithFilteredResult(_0xd35f16,_0x65b8bc))['catch'](handleError(_0xd35f16,null));};exports['getChatInteractions']=function(_0x504c34,_0x261ae5){var _0x18aae3={};var _0x325c48={};var _0x446332;var _0x1a381e;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0x504c34['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x261ae5,null))[_0xfb68('0x17')](function(_0xc5b553){if(_0xc5b553){_0x446332=_0xc5b553;_0x325c48['model']=_['keys'](db[_0xfb68('0xe2')]['rawAttributes']);_0x325c48[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x504c34[_0xfb68('0x44')]);_0x325c48[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x325c48[_0xfb68('0x56')],_0x325c48['query']);_0x18aae3[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x325c48[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x504c34['query'][_0xfb68('0x5b')]));_0x18aae3[_0xfb68('0x5c')]=_0x18aae3[_0xfb68('0x5c')]['length']?_0x18aae3[_0xfb68('0x5c')]:_0x325c48[_0xfb68('0x56')];_0x18aae3[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x504c34['query'][_0xfb68('0xce')]);_0x18aae3['where']=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x504c34['query'],_0x325c48[_0xfb68('0x59')]));if(_0x504c34[_0xfb68('0x44')][_0xfb68('0x34')]){_0x18aae3[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x18aae3[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x18aae3[_0xfb68('0x5c')],function(_0x4b2027){var _0x33ee23={};_0x33ee23[_0x4b2027]={'$like':'%'+_0x504c34[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x33ee23;})});}_0x18aae3=_[_0xfb68('0xd1')]({},_0x18aae3,_0x504c34[_0xfb68('0x5e')]);return _0x446332[_0xfb68('0xe3')](_0x18aae3);}})[_0xfb68('0x17')](function(_0x223736){if(_0x223736){_0x1a381e=_0x223736[_0xfb68('0x4c')];if(!_0x504c34[_0xfb68('0x44')][_0xfb68('0xd2')]('nolimit')){_0x18aae3[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x504c34['query'][_0xfb68('0x24')]);_0x18aae3['offset']=qs[_0xfb68('0x25')](_0x504c34['query'][_0xfb68('0x25')]);}return _0x446332[_0xfb68('0xe3')](_0x18aae3);}})[_0xfb68('0x17')](function(_0x46ba5c){if(_0x46ba5c){return _0x46ba5c?{'count':_0x1a381e,'rows':_0x46ba5c}:null;}})['then'](respondWithResult(_0x261ae5,null))[_0xfb68('0x54')](handleError(_0x261ae5,null));};exports[_0xfb68('0xe4')]=function(_0x4d3cc3,_0x4ef731){var _0x9cf050={};var _0x1f5ce1={};var _0xde4891;var _0x18adf0;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x4d3cc3[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x4ef731,null))[_0xfb68('0x17')](function(_0x532874){if(_0x532874){_0xde4891=_0x532874;_0x1f5ce1[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0xe5')]['rawAttributes']);_0x1f5ce1[_0xfb68('0x44')]=_['keys'](_0x4d3cc3[_0xfb68('0x44')]);_0x1f5ce1[_0xfb68('0x59')]=_['intersection'](_0x1f5ce1[_0xfb68('0x56')],_0x1f5ce1[_0xfb68('0x44')]);_0x9cf050[_0xfb68('0x5c')]=_['intersection'](_0x1f5ce1[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x4d3cc3['query'][_0xfb68('0x5b')]));_0x9cf050[_0xfb68('0x5c')]=_0x9cf050[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x9cf050[_0xfb68('0x5c')]:_0x1f5ce1[_0xfb68('0x56')];_0x9cf050['order']=qs[_0xfb68('0xce')](_0x4d3cc3[_0xfb68('0x44')]['sort']);_0x9cf050['where']=qs['filters'](_[_0xfb68('0xd0')](_0x4d3cc3[_0xfb68('0x44')],_0x1f5ce1[_0xfb68('0x59')]));if(_0x4d3cc3[_0xfb68('0x44')][_0xfb68('0x34')]){_0x9cf050[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x9cf050[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x9cf050[_0xfb68('0x5c')],function(_0x5b8a79){var _0x486233={};_0x486233[_0x5b8a79]={'$like':'%'+_0x4d3cc3[_0xfb68('0x44')]['filter']+'%'};return _0x486233;})});}_0x9cf050=_[_0xfb68('0xd1')]({},_0x9cf050,_0x4d3cc3[_0xfb68('0x5e')]);return _0xde4891[_0xfb68('0xe4')](_0x9cf050);}})[_0xfb68('0x17')](function(_0x15727a){if(_0x15727a){_0x18adf0=_0x15727a[_0xfb68('0x4c')];if(!_0x4d3cc3[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x9cf050[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x4d3cc3['query']['limit']);_0x9cf050[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x4d3cc3[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0xde4891[_0xfb68('0xe4')](_0x9cf050);}})[_0xfb68('0x17')](function(_0x4299f4){if(_0x4299f4){return _0x4299f4?{'count':_0x18adf0,'rows':_0x4299f4}:null;}})[_0xfb68('0x17')](respondWithResult(_0x4ef731,null))[_0xfb68('0x54')](handleError(_0x4ef731,null));};exports['getMailInteractions']=function(_0x50d2c2,_0x50b998){var _0x4a295d={'raw':!![],'where':{}};var _0x1d7aac={};var _0x46b45d={'count':0x0,'rows':[]};return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x50d2c2[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x50b998,null))[_0xfb68('0x17')](function(_0x4ac3b0){if(_0x4ac3b0){_0x1d7aac[_0xfb68('0x56')]=_['keys'](db[_0xfb68('0xe6')][_0xfb68('0x58')]);_0x1d7aac['query']=_[_0xfb68('0x57')](_0x50d2c2[_0xfb68('0x44')]);_0x1d7aac[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x1d7aac[_0xfb68('0x56')],_0x1d7aac[_0xfb68('0x44')]);_0x4a295d[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x1d7aac['model'],qs[_0xfb68('0x5b')](_0x50d2c2['query'][_0xfb68('0x5b')]));_0x4a295d['attributes']=_0x4a295d[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x4a295d[_0xfb68('0x5c')]:_0x1d7aac[_0xfb68('0x56')];if(!_0x50d2c2[_0xfb68('0x44')][_0xfb68('0xd2')]('nolimit')){_0x4a295d[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x50d2c2['query'][_0xfb68('0x24')]);_0x4a295d[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x50d2c2['query']['offset']);}_0x4a295d[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x50d2c2[_0xfb68('0x44')][_0xfb68('0xce')]);_0x4a295d[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x50d2c2[_0xfb68('0x44')],_0x1d7aac[_0xfb68('0x59')]));_0x4a295d['where'][_0xfb68('0xdf')]=_0x4ac3b0['id'];if(_0x50d2c2['query'][_0xfb68('0x34')]){_0x4a295d['where']=_[_0xfb68('0xd1')](_0x4a295d[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x4a295d['attributes'],function(_0x5cc610){var _0x758830={};_0x758830[_0x5cc610]={'$like':'%'+_0x50d2c2[_0xfb68('0x44')]['filter']+'%'};return _0x758830;})});}_0x4a295d=_[_0xfb68('0xd1')]({},_0x4a295d,_0x50d2c2[_0xfb68('0x5e')]);return db['MailInteraction'][_0xfb68('0x26')]({'where':_0x4a295d[_0xfb68('0xcf')]})[_0xfb68('0x17')](function(_0x32bd15){_0x46b45d[_0xfb68('0x26')]=_0x32bd15;if(_0x50d2c2[_0xfb68('0x44')]['includeAll']){_0x4a295d['include']=[{'all':!![]}];}return db[_0xfb68('0xe6')][_0xfb68('0x4a')](_0x4a295d);})['then'](function(_0x20715f){_0x46b45d['rows']=_0x20715f;return _0x46b45d;});}})[_0xfb68('0x17')](respondWithFilteredResult(_0x50b998,_0x4a295d))[_0xfb68('0x54')](handleError(_0x50b998,null));};exports[_0xfb68('0xe7')]=function(_0x7c3900,_0x217128){var _0x2295c4={};var _0x1bcb46={};var _0x1ac24f;var _0x44d145;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x7c3900[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x217128,null))[_0xfb68('0x17')](function(_0x16176a){if(_0x16176a){_0x1ac24f=_0x16176a;_0x1bcb46[_0xfb68('0x56')]=_['keys'](db[_0xfb68('0xe8')]['rawAttributes']);_0x1bcb46[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x7c3900[_0xfb68('0x44')]);_0x1bcb46[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x1bcb46['model'],_0x1bcb46[_0xfb68('0x44')]);_0x2295c4[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x1bcb46['model'],qs[_0xfb68('0x5b')](_0x7c3900[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x2295c4[_0xfb68('0x5c')]=_0x2295c4[_0xfb68('0x5c')]['length']?_0x2295c4['attributes']:_0x1bcb46[_0xfb68('0x56')];_0x2295c4[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x7c3900[_0xfb68('0x44')][_0xfb68('0xce')]);_0x2295c4['where']=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x7c3900[_0xfb68('0x44')],_0x1bcb46[_0xfb68('0x59')]));if(_0x7c3900['query']['filter']){_0x2295c4[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x2295c4[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x2295c4['attributes'],function(_0x2d8626){var _0x282eac={};_0x282eac[_0x2d8626]={'$like':'%'+_0x7c3900[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x282eac;})});}_0x2295c4=_['merge']({},_0x2295c4,_0x7c3900[_0xfb68('0x5e')]);return _0x1ac24f[_0xfb68('0xe7')](_0x2295c4);}})[_0xfb68('0x17')](function(_0x1fa4c1){if(_0x1fa4c1){_0x44d145=_0x1fa4c1[_0xfb68('0x4c')];if(!_0x7c3900[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x2295c4[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x7c3900[_0xfb68('0x44')][_0xfb68('0x24')]);_0x2295c4[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x7c3900[_0xfb68('0x44')]['offset']);}return _0x1ac24f[_0xfb68('0xe7')](_0x2295c4);}})[_0xfb68('0x17')](function(_0x4adbe8){if(_0x4adbe8){return _0x4adbe8?{'count':_0x44d145,'rows':_0x4adbe8}:null;}})[_0xfb68('0x17')](respondWithResult(_0x217128,null))[_0xfb68('0x54')](handleError(_0x217128,null));};exports[_0xfb68('0xe9')]=function(_0x59d5ca,_0x504c16){var _0x17132e={};var _0x2fdc8e={};var _0x1bac83;var _0x53c296;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x59d5ca[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x504c16,null))[_0xfb68('0x17')](function(_0x382399){if(_0x382399){_0x1bac83=_0x382399;_0x2fdc8e[_0xfb68('0x56')]=_[_0xfb68('0x57')](db['FaxInteraction'][_0xfb68('0x58')]);_0x2fdc8e['query']=_['keys'](_0x59d5ca[_0xfb68('0x44')]);_0x2fdc8e['filters']=_[_0xfb68('0x5a')](_0x2fdc8e[_0xfb68('0x56')],_0x2fdc8e[_0xfb68('0x44')]);_0x17132e['attributes']=_[_0xfb68('0x5a')](_0x2fdc8e[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x59d5ca[_0xfb68('0x44')]['fields']));_0x17132e[_0xfb68('0x5c')]=_0x17132e['attributes'][_0xfb68('0x4c')]?_0x17132e['attributes']:_0x2fdc8e[_0xfb68('0x56')];_0x17132e['order']=qs[_0xfb68('0xce')](_0x59d5ca[_0xfb68('0x44')][_0xfb68('0xce')]);_0x17132e['where']=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x59d5ca[_0xfb68('0x44')],_0x2fdc8e['filters']));if(_0x59d5ca[_0xfb68('0x44')][_0xfb68('0x34')]){_0x17132e[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x17132e['where'],{'$or':_[_0xfb68('0x36')](_0x17132e[_0xfb68('0x5c')],function(_0x53da58){var _0x514854={};_0x514854[_0x53da58]={'$like':'%'+_0x59d5ca[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x514854;})});}_0x17132e=_[_0xfb68('0xd1')]({},_0x17132e,_0x59d5ca[_0xfb68('0x5e')]);return _0x1bac83[_0xfb68('0xe9')](_0x17132e);}})[_0xfb68('0x17')](function(_0x33b2f8){if(_0x33b2f8){_0x53c296=_0x33b2f8[_0xfb68('0x4c')];if(!_0x59d5ca[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x17132e[_0xfb68('0x24')]=qs['limit'](_0x59d5ca[_0xfb68('0x44')]['limit']);_0x17132e['offset']=qs[_0xfb68('0x25')](_0x59d5ca['query'][_0xfb68('0x25')]);}return _0x1bac83[_0xfb68('0xe9')](_0x17132e);}})[_0xfb68('0x17')](function(_0x5a1b86){if(_0x5a1b86){return _0x5a1b86?{'count':_0x53c296,'rows':_0x5a1b86}:null;}})[_0xfb68('0x17')](respondWithResult(_0x504c16,null))['catch'](handleError(_0x504c16,null));};exports['getWhatsappInteractions']=function(_0x2d898a,_0x21f4ff){var _0x4783b2={};var _0xfcdef0={};var _0x2bf9fc;var _0x4c8359;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x2d898a[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x21f4ff,null))[_0xfb68('0x17')](function(_0x374bfa){if(_0x374bfa){_0x2bf9fc=_0x374bfa;_0xfcdef0[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0xea')][_0xfb68('0x58')]);_0xfcdef0[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x2d898a[_0xfb68('0x44')]);_0xfcdef0[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0xfcdef0['model'],_0xfcdef0['query']);_0x4783b2[_0xfb68('0x5c')]=_['intersection'](_0xfcdef0[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x2d898a['query'][_0xfb68('0x5b')]));_0x4783b2[_0xfb68('0x5c')]=_0x4783b2[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x4783b2['attributes']:_0xfcdef0[_0xfb68('0x56')];_0x4783b2['order']=qs[_0xfb68('0xce')](_0x2d898a[_0xfb68('0x44')][_0xfb68('0xce')]);_0x4783b2['where']=qs[_0xfb68('0x59')](_['pick'](_0x2d898a['query'],_0xfcdef0[_0xfb68('0x59')]));if(_0x2d898a[_0xfb68('0x44')][_0xfb68('0x34')]){_0x4783b2[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x4783b2[_0xfb68('0xcf')],{'$or':_['map'](_0x4783b2[_0xfb68('0x5c')],function(_0xd42179){var _0x43a255={};_0x43a255[_0xd42179]={'$like':'%'+_0x2d898a[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x43a255;})});}_0x4783b2=_[_0xfb68('0xd1')]({},_0x4783b2,_0x2d898a['options']);return _0x2bf9fc[_0xfb68('0xeb')](_0x4783b2);}})[_0xfb68('0x17')](function(_0x3a24e5){if(_0x3a24e5){_0x4c8359=_0x3a24e5[_0xfb68('0x4c')];if(!_0x2d898a[_0xfb68('0x44')]['hasOwnProperty']('nolimit')){_0x4783b2[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x2d898a[_0xfb68('0x44')][_0xfb68('0x24')]);_0x4783b2[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x2d898a[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x2bf9fc[_0xfb68('0xeb')](_0x4783b2);}})[_0xfb68('0x17')](function(_0xc738ae){if(_0xc738ae){return _0xc738ae?{'count':_0x4c8359,'rows':_0xc738ae}:null;}})[_0xfb68('0x17')](respondWithResult(_0x21f4ff,null))['catch'](handleError(_0x21f4ff,null));};exports['login']=function(_0xf8dc88,_0x30d741,_0x5a256a){var _0x396801;var _0x37c08b;var _0xe9312f;var _0xa6ed0b=!_[_0xfb68('0x6d')](_0xf8dc88[_0xfb68('0x62')]['id'])?_0xf8dc88['params']['id']:!_[_0xfb68('0x6d')](_0xf8dc88['user']['id'])?_0xf8dc88[_0xfb68('0x2f')]['id']:null;return db[_0xfb68('0x3f')]['find']({'where':{'id':_0xa6ed0b,'role':{'$or':[_0xfb68('0x2d'),_0xfb68('0x2f'),'agent']}},'attributes':['id',_0xfb68('0x3d'),_0xfb68('0xec'),_0xfb68('0xed'),_0xfb68('0x2c'),'internal','loginInPause']})[_0xfb68('0x17')](function(_0x54b5e8){if(_0x54b5e8){if(_0x54b5e8[_0xfb68('0x2c')]===_0xfb68('0x31')){_0x396801=_0x54b5e8;if(_0xf8dc88[_0xfb68('0x61')][_0xfb68('0xa4')]){_0xe9312f=util[_0xfb68('0xae')](_0xfb68('0xee'),_0x396801[_0xf8dc88['body']['interface']]);}else if(_0xf8dc88['body'][_0xfb68('0xef')]){_0xe9312f=util[_0xfb68('0xae')](_0xfb68('0xaf'),_0xf8dc88[_0xfb68('0x61')][_0xfb68('0xef')]);}else{_0xe9312f=util['format'](_0xfb68('0xaf'),_0x396801['name']);}socket['to'](util[_0xfb68('0xae')](_0xfb68('0xf0'),_0x396801['name']))[_0xfb68('0x29')]('user:forcelogout',{'user':{'id':_0x396801['id'],'name':_0x396801[_0xfb68('0x3d')]},'ip':_0xf8dc88[_0xfb68('0xf1')]['x-forwarded-for']||_0xf8dc88[_0xfb68('0xf2')][_0xfb68('0xf3')]||_0xf8dc88[_0xfb68('0xf4')][_0xfb68('0xf3')]||_0xf8dc88[_0xfb68('0xf2')][_0xfb68('0xf4')][_0xfb68('0xf3')]});return db[_0xfb68('0xb1')][_0xfb68('0x2a')]({'where':{'membername':_0x396801['name']},'individualHooks':!![]});}}else{throw new db[(_0xfb68('0x93'))]['ValidationError']('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})['then'](function(){if(_0x396801){return _0x396801['getVoiceQueues']({'raw':!![]});}})[_0xfb68('0x17')](function(_0x1532d1){if(_0x396801){if(_0x1532d1){_0x37c08b=_0x1532d1;if(_0x37c08b[_0xfb68('0x4c')]){var _0x5580e6=_0x37c08b['map'](function(_0x5e06fb){var _0x1ae4d6={'membername':_0x396801['name'],'UserId':_0x396801['id'],'queue_name':_0x5e06fb[_0xfb68('0x3d')],'VoiceQueueId':_0x5e06fb['id'],'interface':_0xe9312f,'paused':_0x396801[_0xfb68('0xa2')]||![],'penalty':_0x5e06fb[_0xfb68('0xf5')]||0x0};return db[_0xfb68('0xb1')][_0xfb68('0xf6')](_0x1ae4d6);});return Promise[_0xfb68('0x53')](_0x5580e6);}}}})[_0xfb68('0x17')](function(){if(_0x396801){return db['MemberReport'][_0xfb68('0x4a')]({'where':{'membername':_0x396801[_0xfb68('0x3d')],'exitAt':null}});}})[_0xfb68('0x17')](function(_0x35a7cd){if(_0x396801){var _0x2a89cb=[];_0x35a7cd[_0xfb68('0xf7')](function(_0x56b831){_0x2a89cb[_0xfb68('0x49')](_0x56b831['update']({'exitAt':moment()[_0xfb68('0xae')](_0xfb68('0xf8'))}));});return Promise[_0xfb68('0x53')](_0x2a89cb);}})[_0xfb68('0x17')](function(){if(_0x396801){var _0x11d8ca=[];var _0x48a385=[];var _0x885760=utils[_0xfb68('0xf9')]();var _0x1c1612={'membername':_0x396801[_0xfb68('0x3d')],'interface':_0xe9312f,'enterAt':moment()['format'](_0xfb68('0xf8')),'role':_0x396801[_0xfb68('0x2c')],'internal':_0x396801[_0xfb68('0x67')]};_0x885760['forEach'](function(_0x3e9528){_0x11d8ca[_0xfb68('0x49')](_[_0xfb68('0xd1')]({'channel':_0x3e9528,'type':'LOGIN','data1':_0xf8dc88['body'][_0xfb68('0xfa')],'data2':_0xe9312f},_0x1c1612));if(_0x396801[_0xfb68('0xa2')]){_0x48a385['push'](_[_0xfb68('0xd1')]({'channel':_0x3e9528,'type':_0xfb68('0xfb'),'data1':_0xfb68('0xfc')},_0x1c1612));}});return db[_0xfb68('0xfd')]['bulkCreate'](_0x11d8ca[_0xfb68('0xfe')](_0x48a385),{'individualHooks':!![]});}})[_0xfb68('0x17')](function(){if(_0x396801){return _0x396801[_0xfb68('0x28')]({'online':!![],'lastLoginAt':moment()[_0xfb68('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x396801[_0xfb68('0xa2')]||![],'mailPause':_0x396801[_0xfb68('0xa2')]||![],'chatPause':_0x396801[_0xfb68('0xa2')]||![],'faxPause':_0x396801['loginInPause']||![],'smsPause':_0x396801[_0xfb68('0xa2')]||![],'openchannelPause':_0x396801[_0xfb68('0xa2')]||![],'whatsappPause':_0x396801['loginInPause']||![],'pauseType':_0x396801[_0xfb68('0xa2')]?_0xfb68('0xfc'):null,'interface':_0xe9312f,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xfb68('0x17')](function(_0x1f00c1){if(_0xf8dc88[_0xfb68('0xff')]){return _0x5a256a();}else{return Promise[_0xfb68('0x100')](_0x1f00c1)[_0xfb68('0x17')](respondWithResult(_0x30d741,null));}})[_0xfb68('0x54')](handleError(_0x30d741,null));};exports[_0xfb68('0x101')]=function(_0x297494,_0x3f271e){var _0x90dc76;return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x297494[_0xfb68('0x62')]['id'],'role':_0xfb68('0x31')},'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x2c')]})[_0xfb68('0x17')](handleEntityNotFound(_0x3f271e,null))[_0xfb68('0x17')](function(_0x5e8a45){if(_0x5e8a45){_0x90dc76=_0x5e8a45;return db[_0xfb68('0xb1')][_0xfb68('0x2a')]({'where':{'membername':_0x90dc76[_0xfb68('0x3d')]},'individualHooks':!![]});}})[_0xfb68('0x17')](function(){return db[_0xfb68('0xfd')][_0xfb68('0x4a')]({'where':{'membername':_0x90dc76[_0xfb68('0x3d')],'exitAt':null}});})['then'](function(_0x215e46){var _0xa48fc7=[];_0x215e46[_0xfb68('0xf7')](function(_0x21117e){_0xa48fc7['push'](_0x21117e[_0xfb68('0x28')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0xfb68('0x53')](_0xa48fc7);})['then'](function(){return _0x90dc76[_0xfb68('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xfb68('0x17')](respondWithResult(_0x3f271e,null))[_0xfb68('0x54')](handleError(_0x3f271e,null));};exports[_0xfb68('0x102')]=function(_0x3080be,_0x80b597){var _0x3a3a4f;return db[_0xfb68('0xb1')][_0xfb68('0x28')]({'paused':0x1},{'where':{'UserId':_0x3080be[_0xfb68('0x62')]['id']},'individualHooks':!![]})[_0xfb68('0x17')](function(){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x3080be[_0xfb68('0x62')]['id'],'role':_0xfb68('0x31')},'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x2c'),'internal',_0xfb68('0xa4'),_0xfb68('0xa1')]});})[_0xfb68('0x17')](handleEntityNotFound(_0x80b597,null))['then'](function(_0x79e190){if(_0x79e190){_0x3a3a4f=_0x79e190;return respondWithRpcPromise(_0xfb68('0x103'),_0xfb68('0x102'),{'id':_0x3a3a4f['id'],'name':_0x3a3a4f[_0xfb68('0x3d')],'pause':!![]});}})['then'](function(){if(_0x3a3a4f){return db['MemberReport'][_0xfb68('0x4a')]({'where':{'membername':_0x3a3a4f[_0xfb68('0x3d')],'type':_0xfb68('0xfb'),'exitAt':null}});}})[_0xfb68('0x17')](function(_0x234089){if(_0x234089[_0xfb68('0x4c')]){var _0x1c7888=moment()[_0xfb68('0xae')](_0xfb68('0xf8'));for(var _0x33e0c9=0x0,_0x5e0b22=_0x234089['length'];_0x33e0c9<_0x5e0b22;_0x33e0c9++){_0x234089[_0x33e0c9][_0xfb68('0x104')]({'exitAt':_0x1c7888});}}})['then'](function(){var _0x5d7bcc=[];var _0x53a46e=utils[_0xfb68('0xf9')]();_0x53a46e[_0xfb68('0xf7')](function(_0x44270d){_0x5d7bcc[_0xfb68('0x49')]({'channel':_0x44270d,'membername':_0x3a3a4f['name'],'interface':_['isNil'](_0x3a3a4f['interface'])?util[_0xfb68('0xae')]('SIP/%s',_0x3a3a4f[_0xfb68('0x3d')]):_0x3a3a4f['interface'],'type':_0xfb68('0xfb'),'enterAt':moment()[_0xfb68('0xae')](_0xfb68('0xf8')),'data1':_0x3080be[_0xfb68('0x61')][_0xfb68('0x41')]||_0xfb68('0x105'),'role':_0x3a3a4f[_0xfb68('0x2c')],'internal':_0x3a3a4f[_0xfb68('0x67')]});});return db[_0xfb68('0xfd')][_0xfb68('0x8a')](_0x5d7bcc,{'individualHooks':!![]});})[_0xfb68('0x17')](function(){return _0x3a3a4f[_0xfb68('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3080be[_0xfb68('0x61')]['type']||_0xfb68('0x105'),'lastPauseAt':moment()[_0xfb68('0xae')](_0xfb68('0xf8'))});})[_0xfb68('0x17')](respondWithResult(_0x80b597,null))[_0xfb68('0x54')](handleError(_0x80b597,null));};exports[_0xfb68('0x106')]=function(_0x5b7fd9,_0x32cefd){if(_0x5b7fd9[_0xfb68('0x61')][_0xfb68('0xa0')]&&!utils[_0xfb68('0xb3')](_0x5b7fd9['body'][_0xfb68('0xa0')])){throw new APIBadRequestError(util[_0xfb68('0xae')](_0xfb68('0x107'),_0x5b7fd9['body'][_0xfb68('0xa0')]));}return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x5b7fd9[_0xfb68('0x62')]['id']},'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x2c'),_0xfb68('0x67'),_0xfb68('0xa4'),_0xfb68('0xa1'),_0xfb68('0xa3'),_0xfb68('0x108'),'chatPause',_0xfb68('0x109'),_0xfb68('0x10a'),'smsPause',_0xfb68('0x10b'),_0xfb68('0x10c'),'lastPauseAt']})['then'](function(_0x2b40cc){if(!_0x2b40cc){throw new APINotFoundError(util['format'](_0xfb68('0x10d'),_0x5b7fd9[_0xfb68('0x62')]['id']));}return _0x2b40cc[_0xfb68('0x106')](_0x5b7fd9['body']['channel']);})[_0xfb68('0x17')](respondWithResult(_0x32cefd,null))['catch'](APIHandleError(_0x32cefd));};exports[_0xfb68('0x10e')]=function(_0xfaf11a,_0x769120){var _0x439940={};var _0x242dff={};var _0x26b940;var _0x1d3885;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0xfaf11a[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x769120,null))['then'](function(_0x4eed40){if(_0x4eed40){_0x26b940=_0x4eed40;_0x242dff[_0xfb68('0x56')]=_[_0xfb68('0x57')](db['Team'][_0xfb68('0x58')]);_0x242dff[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0xfaf11a[_0xfb68('0x44')]);_0x242dff[_0xfb68('0x59')]=_['intersection'](_0x242dff[_0xfb68('0x56')],_0x242dff[_0xfb68('0x44')]);_0x439940[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x242dff[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0xfaf11a[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x439940[_0xfb68('0x5c')]=_0x439940[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x439940[_0xfb68('0x5c')]:_0x242dff[_0xfb68('0x56')];_0x439940[_0xfb68('0xda')]=qs['sort'](_0xfaf11a[_0xfb68('0x44')]['sort']);_0x439940[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0xfaf11a[_0xfb68('0x44')],_0x242dff[_0xfb68('0x59')]));if(_0xfaf11a[_0xfb68('0x44')][_0xfb68('0x34')]){_0x439940[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x439940[_0xfb68('0xcf')],{'$or':_['map'](_0x439940[_0xfb68('0x5c')],function(_0x4968a0){var _0x458507={};_0x458507[_0x4968a0]={'$like':'%'+_0xfaf11a[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x458507;})});}_0x439940=_[_0xfb68('0xd1')]({},_0x439940,_0xfaf11a[_0xfb68('0x5e')]);return _0x26b940[_0xfb68('0x10e')](_0x439940);}})['then'](function(_0x355f7a){if(_0x355f7a){_0x1d3885=_0x355f7a[_0xfb68('0x4c')];if(!_0xfaf11a[_0xfb68('0x44')]['hasOwnProperty']('nolimit')){_0x439940[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0xfaf11a[_0xfb68('0x44')][_0xfb68('0x24')]);_0x439940[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0xfaf11a[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x26b940[_0xfb68('0x10e')](_0x439940);}})['then'](function(_0xf19d30){if(_0xf19d30){return _0xf19d30?{'count':_0x1d3885,'rows':_0xf19d30}:null;}})[_0xfb68('0x17')](respondWithResult(_0x769120,null))[_0xfb68('0x54')](handleError(_0x769120,null));};exports['addTeams']=function(_0x3c13c3,_0x5ad278){var _0x10f72a=_0x3c13c3[_0xfb68('0x62')]['id'];var _0x510c2d=_0x3c13c3['body']?_0x3c13c3[_0xfb68('0x61')][_0xfb68('0x65')]:null;var _0xb7afaa=[];return Promise['resolve']()['then'](function(){if(!_0x510c2d)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0xfb68('0x17')](function(){return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x10f72a}});})[_0xfb68('0x17')](function(_0x4f64a0){if(!_0x4f64a0)throw new APINotFoundError(util[_0xfb68('0xae')]('User\x20with\x20id\x20%s\x20not\x20found',_0x3c13c3[_0xfb68('0x62')]['id']));return db[_0xfb68('0x6e')][_0xfb68('0x10f')](function(_0x2bfcf3){return _0x4f64a0['addTeams'](_0x510c2d,{'transaction':_0x2bfcf3})['then'](function(){return db[_0xfb68('0x110')][_0xfb68('0x4a')]({'where':{'id':{'$in':_0x510c2d}}});})[_0xfb68('0x17')](function(_0xa3ad52){var _0x262dc3=_[_0xfb68('0x36')](_0xa3ad52,function(_0x31d4a3){return _0x31d4a3['getAssociatedQueues']();});return Promise['all'](_0x262dc3);})['then'](function(_0x293304){_0xb7afaa=_[_0xfb68('0x111')](_0x293304);var _0xcd4796=_['map'](_0xb7afaa,function(_0x118931){return _0x118931['addAgent'](_0x4f64a0['id'],{'transaction':_0x2bfcf3});});return Promise[_0xfb68('0x53')](_0xcd4796);})[_0xfb68('0x17')](function(){if(!_0x4f64a0['online'])return;var _0x212349=_['filter'](_0xb7afaa,function(_0x34a225){return _0x34a225['getDataValue'](_0xfb68('0xa0'))==='Voice';});var _0x47dc52=_[_0xfb68('0x36')](_0x212349,function(_0x232306){return db[_0xfb68('0xb1')][_0xfb68('0xf6')]({'membername':_0x4f64a0['name'],'UserId':_0x4f64a0['id'],'queue_name':_0x232306[_0xfb68('0x3d')],'VoiceQueueId':_0x232306['id'],'interface':_[_0xfb68('0x6d')](_0x4f64a0[_0xfb68('0xa4')])?util[_0xfb68('0xae')](_0xfb68('0xaf'),_0x4f64a0[_0xfb68('0x3d')]):_0x4f64a0[_0xfb68('0xa4')],'paused':_0x4f64a0['voicePause']||![],'penalty':_0x4f64a0['penalty']},{'transaction':_0x2bfcf3});});return Promise[_0xfb68('0x53')](_0x47dc52);})[_0xfb68('0x17')](function(){return db[_0xfb68('0x112')][_0xfb68('0x4a')]({'where':{'teamId':{'$in':_0x510c2d}}});})['then'](function(_0x560341){var _0x2d99ca=_[_0xfb68('0x36')](_0x560341,function(_0x51fc26){return db[_0xfb68('0x113')]['create']({'UserId':_0x4f64a0['id'],'VoicePrefixId':_0x51fc26[_0xfb68('0x114')]},{'transaction':_0x2bfcf3});});return Promise[_0xfb68('0x53')](_0x2d99ca);});});})[_0xfb68('0x17')](function(){for(var _0x2f291c=0x0;_0x2f291c<_0xb7afaa[_0xfb68('0x4c')];_0x2f291c++){var _0x497d4b=_0xb7afaa[_0x2f291c][_0xfb68('0x115')](_0xfb68('0xa0'));var _0x20ba90=_0x497d4b+_0xfb68('0xaa');socket[_0xfb68('0x29')](_0xfb68('0x2f')+_0x497d4b+_0xfb68('0xab'),{'UserId':_0x10f72a,['queueField']:_0xb7afaa[_0x2f291c]['id']});}})[_0xfb68('0x17')](respondWithStatusCode(_0x5ad278,null))[_0xfb68('0x54')](APIHandleError(_0x5ad278));};exports['removeTeams']=function(_0x297f7c,_0x264c0d){var _0x53134b=_0x297f7c['params']['id'];var _0x4171b4=null;if(_0x297f7c[_0xfb68('0x44')][_0xfb68('0x65')]){_0x4171b4=_['isArray'](_0x297f7c[_0xfb68('0x44')]['ids'])?_0x297f7c[_0xfb68('0x44')][_0xfb68('0x65')]:[_0x297f7c[_0xfb68('0x44')]['ids']];}var _0x8bed5f=[];return Promise[_0xfb68('0x100')]()[_0xfb68('0x17')](function(){if(!_0x4171b4)throw new APIBadRequestError(_0xfb68('0x116'));})[_0xfb68('0x17')](function(){return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x53134b}});})[_0xfb68('0x17')](function(_0x234e1d){if(!_0x234e1d)throw new APINotFoundError(util[_0xfb68('0xae')](_0xfb68('0x10d'),_0x297f7c['params']['id']));return db['sequelize'][_0xfb68('0x10f')](function(_0x2a5b76){return _0x234e1d[_0xfb68('0x117')](_0x4171b4,{'transaction':_0x2a5b76})[_0xfb68('0x17')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x4171b4}}});})[_0xfb68('0x17')](function(_0x4f189d){var _0x536e34=_['map'](_0x4f189d,function(_0x3b7ccf){return _0x3b7ccf[_0xfb68('0x118')]();});return Promise[_0xfb68('0x53')](_0x536e34);})[_0xfb68('0x17')](function(_0x42fe2d){_0x8bed5f=_[_0xfb68('0x111')](_0x42fe2d);var _0xe2ac61=_[_0xfb68('0x36')](_0x8bed5f,function(_0x14a124){return _0x14a124[_0xfb68('0x119')](_0x234e1d['id'],{'transaction':_0x2a5b76});});return Promise[_0xfb68('0x53')](_0xe2ac61);})[_0xfb68('0x17')](function(){if(!_0x234e1d[_0xfb68('0xa1')])return;var _0x463953=_[_0xfb68('0x34')](_0x8bed5f,function(_0x56bae4){return _0x56bae4[_0xfb68('0x115')](_0xfb68('0xa0'))==='Voice';});var _0x26a143=_[_0xfb68('0x36')](_0x463953,function(_0x102d9c){return db[_0xfb68('0xb1')][_0xfb68('0x2a')]({'where':{'VoiceQueueId':_0x102d9c['id'],'UserId':_0x234e1d['id']},'transaction':_0x2a5b76});});return Promise[_0xfb68('0x53')](_0x26a143);})['then'](function(){return db['TeamVoicePrefix'][_0xfb68('0x4a')]({'where':{'teamId':{'$in':_0x4171b4}}});})[_0xfb68('0x17')](function(_0x297ca9){var _0x16e114=_[_0xfb68('0x36')](_0x297ca9,function(_0x221926){return db[_0xfb68('0x113')][_0xfb68('0x2a')]({'where':{'UserId':_0x234e1d['id'],'VoicePrefixId':_0x221926[_0xfb68('0x114')]}},{'transaction':_0x2a5b76});});return Promise['all'](_0x16e114);});});})[_0xfb68('0x17')](function(){for(var _0x3b0857=0x0;_0x3b0857<_0x8bed5f[_0xfb68('0x4c')];_0x3b0857++){var _0x55b107=_0x8bed5f[_0x3b0857]['getDataValue'](_0xfb68('0xa0'));var _0x1c6384=_0x55b107+_0xfb68('0xaa');socket[_0xfb68('0x29')]('user'+_0x55b107+_0xfb68('0xb6'),{'UserId':_0x53134b,['queueField']:_0x8bed5f[_0x3b0857]['id']});}})[_0xfb68('0x17')](respondWithStatusCode(_0x264c0d,null))[_0xfb68('0x54')](APIHandleError(_0x264c0d));};exports[_0xfb68('0x11a')]=function(_0x338992,_0x15c434){var _0x226624={};var _0x3f0636={};var _0x244aff;var _0x3c6fbe;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0x338992['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x15c434,null))[_0xfb68('0x17')](function(_0x1ef71b){if(_0x1ef71b){_0x244aff=_0x1ef71b;_0x3f0636['model']=_[_0xfb68('0x57')](db[_0xfb68('0xd3')][_0xfb68('0x58')]);_0x3f0636[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x338992[_0xfb68('0x44')]);_0x3f0636[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x3f0636['model'],_0x3f0636['query']);_0x226624[_0xfb68('0x5c')]=_['intersection'](_0x3f0636[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x338992[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x226624[_0xfb68('0x5c')]=_0x226624[_0xfb68('0x5c')]['length']?_0x226624[_0xfb68('0x5c')]:_0x3f0636[_0xfb68('0x56')];_0x226624['order']=qs[_0xfb68('0xce')](_0x338992[_0xfb68('0x44')]['sort']);_0x226624[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x338992['query'],_0x3f0636[_0xfb68('0x59')]));if(_0x338992[_0xfb68('0x44')][_0xfb68('0x34')]){_0x226624[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x226624[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x226624[_0xfb68('0x5c')],function(_0x16f0dd){var _0xdefe69={};_0xdefe69[_0x16f0dd]={'$like':'%'+_0x338992[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0xdefe69;})});}_0x226624=_[_0xfb68('0xd1')]({},_0x226624,_0x338992['options']);return _0x244aff[_0xfb68('0x11a')](_0x226624);}})['then'](function(_0x4a54c6){if(_0x4a54c6){_0x3c6fbe=_0x4a54c6[_0xfb68('0x4c')];if(!_0x338992[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x226624[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x338992[_0xfb68('0x44')]['limit']);_0x226624[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x338992['query']['offset']);}return _0x244aff['getLists'](_0x226624);}})['then'](function(_0x3e7d79){if(_0x3e7d79){return _0x3e7d79?{'count':_0x3c6fbe,'rows':_0x3e7d79}:null;}})[_0xfb68('0x17')](respondWithResult(_0x15c434,null))[_0xfb68('0x54')](handleError(_0x15c434,null));};exports[_0xfb68('0x11b')]=function(_0x402ee6,_0x25d29b){var _0x849814={};var _0x466f97={};var _0xf9afb;return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x402ee6[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x25d29b,null))[_0xfb68('0x17')](function(_0x4cd833){if(_0x4cd833){_0xf9afb=_0x4cd833;_0x466f97[_0xfb68('0x56')]=_['keys'](db[_0xfb68('0x3f')][_0xfb68('0x58')]);_0x466f97[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x402ee6[_0xfb68('0x44')]);_0x466f97[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x466f97[_0xfb68('0x56')],_0x466f97['query']);_0x849814[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x466f97['model'],qs['fields'](_0x402ee6[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x849814['attributes']=_0x849814['attributes'][_0xfb68('0x4c')]?_0x849814['attributes']:_0x466f97[_0xfb68('0x56')];_0x849814[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x402ee6[_0xfb68('0x44')][_0xfb68('0xce')]);_0x849814['where']=qs[_0xfb68('0x59')](_['pick'](_0x402ee6[_0xfb68('0x44')],_0x466f97[_0xfb68('0x59')]));if(_0x402ee6[_0xfb68('0x44')][_0xfb68('0x34')]){_0x849814['where']=_[_0xfb68('0xd1')](_0x849814['where'],{'$or':_[_0xfb68('0x36')](_0x849814['attributes'],function(_0x37c86b){var _0x2ae0a5={};_0x2ae0a5[_0x37c86b]={'$like':'%'+_0x402ee6[_0xfb68('0x44')]['filter']+'%'};return _0x2ae0a5;})});}_0x849814[_0xfb68('0x56')]=db['User'];_0x849814['as']=_0xfb68('0x30');_0x849814=_['merge']({},_0x849814,_0x402ee6[_0xfb68('0x5e')]);return _0xf9afb['getVoiceQueues']({'include':[_0x849814]});}})[_0xfb68('0x17')](function(_0x135bec){if(_0x135bec){var _0x2c353a={},_0x861a1c=[];for(var _0x4177ac=0x0;_0x4177ac<_0x135bec[_0xfb68('0x4c')];_0x4177ac+=0x1){for(var _0x377a5b=0x0,_0x56606a;_0x377a5b<_0x135bec[_0x4177ac][_0xfb68('0x30')][_0xfb68('0x4c')];_0x377a5b+=0x1){_0x56606a=_0x135bec[_0x4177ac][_0xfb68('0x30')][_0x377a5b][_0xfb68('0x2b')]({'plain':!![]});_0x2c353a[_0x56606a['id']]=_0x56606a;}}_0x2c353a=_[_0xfb68('0x11c')](_0x2c353a);for(var _0x5d7698=qs['offset'](_0x402ee6['query'][_0xfb68('0x25')]);_0x5d7698<_0x2c353a['length']&&_0x861a1c['length']<qs[_0xfb68('0x24')](_0x402ee6['query'][_0xfb68('0x24')]);_0x5d7698+=0x1){if(_0x2c353a[_0x5d7698]){_0x861a1c[_0xfb68('0x49')](_0x2c353a[_0x5d7698]);}}return{'count':_0x2c353a[_0xfb68('0x4c')],'rows':_0x861a1c};}})[_0xfb68('0x17')](respondWithResult(_0x25d29b,null))[_0xfb68('0x54')](handleError(_0x25d29b,null));};exports[_0xfb68('0x2a')]=function(_0x59a89a,_0x1b3588){if(_0x59a89a[_0xfb68('0x2f')]['id']==_0x59a89a[_0xfb68('0x62')]['id']){return _0x1b3588[_0xfb68('0x22')](0x1f4)[_0xfb68('0x3e')]({'message':_0xfb68('0x11d')});}return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x59a89a[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x1b3588,null))[_0xfb68('0x17')](removeEntity(_0x1b3588,null))[_0xfb68('0x54')](handleError(_0x1b3588,null));};exports[_0xfb68('0x11e')]=function(_0x30e8af,_0x1d9f78){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x30e8af[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x1d9f78,null))[_0xfb68('0x17')](function(_0x2a7ad9){if(_0x2a7ad9){return _0x2a7ad9['addChatInteractions'](_0x30e8af[_0xfb68('0x61')]['ids'],_[_0xfb68('0x66')](_0x30e8af['body'],[_0xfb68('0x65'),'id'])||{})['spread'](function(){for(var _0x57de37=0x0;_0x57de37<_0x30e8af[_0xfb68('0x61')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x57de37+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x11f'),{'ChatInteractionId':Number(_0x30e8af[_0xfb68('0x61')]['ids'][_0x57de37]),'UserId':Number(_0x30e8af[_0xfb68('0x62')]['id'])});}return _0x30e8af['body'][_0xfb68('0x65')];});}})[_0xfb68('0x17')](respondWithResult(_0x1d9f78,null))[_0xfb68('0x54')](handleError(_0x1d9f78,null));};exports[_0xfb68('0x120')]=function(_0x33e4a3,_0x38aa9c){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x33e4a3[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x38aa9c,null))[_0xfb68('0x17')](function(_0x1d0aa7){if(_0x1d0aa7){return _0x1d0aa7[_0xfb68('0x120')](_0x33e4a3[_0xfb68('0x44')][_0xfb68('0x65')])[_0xfb68('0x17')](function(){if(_[_0xfb68('0xb5')](_0x33e4a3[_0xfb68('0x44')][_0xfb68('0x65')])){for(var _0x42b968=0x0;_0x42b968<_0x33e4a3[_0xfb68('0x44')]['ids']['length'];_0x42b968+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x121'),{'ChatInteractionId':Number(_0x33e4a3[_0xfb68('0x44')][_0xfb68('0x65')][_0x42b968]),'UserId':Number(_0x33e4a3[_0xfb68('0x62')]['id'])});}}else{socket[_0xfb68('0x29')](_0xfb68('0x121'),{'ChatInteractionId':Number(_0x33e4a3['query'][_0xfb68('0x65')]),'UserId':Number(_0x33e4a3['params']['id'])});}});}})[_0xfb68('0x17')](respondWithStatusCode(_0x38aa9c,null))[_0xfb68('0x54')](handleError(_0x38aa9c,null));};exports[_0xfb68('0x122')]=function(_0x3ebc8e,_0x2d532d){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x3ebc8e['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x2d532d,null))[_0xfb68('0x17')](function(_0x4db018){if(_0x4db018){return _0x4db018[_0xfb68('0x122')](_0x3ebc8e[_0xfb68('0x61')][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x3ebc8e[_0xfb68('0x61')],['ids','id'])||{})['spread'](function(){for(var _0x11643f=0x0;_0x11643f<_0x3ebc8e[_0xfb68('0x61')]['ids'][_0xfb68('0x4c')];_0x11643f+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x123'),{'MailInteractionId':Number(_0x3ebc8e[_0xfb68('0x61')][_0xfb68('0x65')][_0x11643f]),'UserId':Number(_0x3ebc8e[_0xfb68('0x62')]['id'])});}return _0x3ebc8e[_0xfb68('0x61')][_0xfb68('0x65')];});}})[_0xfb68('0x17')](respondWithResult(_0x2d532d,null))[_0xfb68('0x54')](handleError(_0x2d532d,null));};exports['removeMailInteractions']=function(_0x1e8343,_0x545297){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x1e8343[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x545297,null))['then'](function(_0x1e76ab){if(_0x1e76ab){return _0x1e76ab[_0xfb68('0x124')](_0x1e8343['query'][_0xfb68('0x65')])[_0xfb68('0x17')](function(){if(_[_0xfb68('0xb5')](_0x1e8343[_0xfb68('0x44')][_0xfb68('0x65')])){for(var _0x3c72dd=0x0;_0x3c72dd<_0x1e8343[_0xfb68('0x44')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x3c72dd+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x125'),{'MailInteractionId':Number(_0x1e8343[_0xfb68('0x44')][_0xfb68('0x65')][_0x3c72dd]),'UserId':Number(_0x1e8343['params']['id'])});}}else{socket[_0xfb68('0x29')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1e8343[_0xfb68('0x44')][_0xfb68('0x65')]),'UserId':Number(_0x1e8343[_0xfb68('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x545297,null))[_0xfb68('0x54')](handleError(_0x545297,null));};exports[_0xfb68('0x126')]=function(_0x349808,_0x118477){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x349808[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x118477,null))[_0xfb68('0x17')](function(_0x3e34d1){if(_0x3e34d1){return _0x3e34d1[_0xfb68('0x126')](_0x349808['body'][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x349808[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{})[_0xfb68('0xa9')](function(){for(var _0x3675d6=0x0;_0x3675d6<_0x349808['body'][_0xfb68('0x65')][_0xfb68('0x4c')];_0x3675d6+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x127'),{'FaxInteractionId':Number(_0x349808['body'][_0xfb68('0x65')][_0x3675d6]),'UserId':Number(_0x349808[_0xfb68('0x62')]['id'])});}return _0x349808['body'][_0xfb68('0x65')];});}})[_0xfb68('0x17')](respondWithResult(_0x118477,null))[_0xfb68('0x54')](handleError(_0x118477,null));};exports[_0xfb68('0x128')]=function(_0x846bf,_0x2cafe1){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x846bf[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x2cafe1,null))[_0xfb68('0x17')](function(_0x4f768c){if(_0x4f768c){return _0x4f768c[_0xfb68('0x128')](_0x846bf[_0xfb68('0x44')]['ids'])['then'](function(){if(_[_0xfb68('0xb5')](_0x846bf['query']['ids'])){for(var _0x2d0ab8=0x0;_0x2d0ab8<_0x846bf[_0xfb68('0x44')]['ids'][_0xfb68('0x4c')];_0x2d0ab8+=0x1){socket[_0xfb68('0x29')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x846bf[_0xfb68('0x44')][_0xfb68('0x65')][_0x2d0ab8]),'UserId':Number(_0x846bf[_0xfb68('0x62')]['id'])});}}else{socket[_0xfb68('0x29')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x846bf[_0xfb68('0x44')][_0xfb68('0x65')]),'UserId':Number(_0x846bf[_0xfb68('0x62')]['id'])});}});}})[_0xfb68('0x17')](respondWithStatusCode(_0x2cafe1,null))[_0xfb68('0x54')](handleError(_0x2cafe1,null));};exports[_0xfb68('0x129')]=function(_0x4639bd,_0x4ede23){return db['User']['find']({'where':{'id':_0x4639bd[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x4ede23,null))[_0xfb68('0x17')](function(_0x4e3407){if(_0x4e3407){return _0x4e3407['addSmsInteractions'](_0x4639bd[_0xfb68('0x61')]['ids'],_[_0xfb68('0x66')](_0x4639bd[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{})[_0xfb68('0xa9')](function(){for(var _0x2cafcc=0x0;_0x2cafcc<_0x4639bd[_0xfb68('0x61')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x2cafcc+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x12a'),{'SmsInteractionId':Number(_0x4639bd[_0xfb68('0x61')][_0xfb68('0x65')][_0x2cafcc]),'UserId':Number(_0x4639bd['params']['id'])});}return _0x4639bd[_0xfb68('0x61')]['ids'];});}})[_0xfb68('0x17')](respondWithResult(_0x4ede23,null))[_0xfb68('0x54')](handleError(_0x4ede23,null));};exports[_0xfb68('0x12b')]=function(_0x25238d,_0xd46885){return db['User']['find']({'where':{'id':_0x25238d['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xd46885,null))[_0xfb68('0x17')](function(_0x5a3691){if(_0x5a3691){return _0x5a3691[_0xfb68('0x12b')](_0x25238d[_0xfb68('0x44')][_0xfb68('0x65')])[_0xfb68('0x17')](function(){if(_[_0xfb68('0xb5')](_0x25238d[_0xfb68('0x44')]['ids'])){for(var _0x53e542=0x0;_0x53e542<_0x25238d[_0xfb68('0x44')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x53e542+=0x1){socket[_0xfb68('0x29')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x25238d[_0xfb68('0x44')][_0xfb68('0x65')][_0x53e542]),'UserId':Number(_0x25238d[_0xfb68('0x62')]['id'])});}}else{socket[_0xfb68('0x29')](_0xfb68('0x12c'),{'SmsInteractionId':Number(_0x25238d[_0xfb68('0x44')][_0xfb68('0x65')]),'UserId':Number(_0x25238d[_0xfb68('0x62')]['id'])});}});}})[_0xfb68('0x17')](respondWithStatusCode(_0xd46885,null))[_0xfb68('0x54')](handleError(_0xd46885,null));};exports[_0xfb68('0x12d')]=function(_0x2748c5,_0x26614a){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x2748c5[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x26614a,null))[_0xfb68('0x17')](function(_0x40be69){if(_0x40be69){return _0x40be69[_0xfb68('0x12d')](_0x2748c5[_0xfb68('0x61')]['ids'],_[_0xfb68('0x66')](_0x2748c5[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{})[_0xfb68('0xa9')](function(){for(var _0xcb0f5c=0x0;_0xcb0f5c<_0x2748c5[_0xfb68('0x61')][_0xfb68('0x65')][_0xfb68('0x4c')];_0xcb0f5c+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x12e'),{'OpenchannelInteractionId':Number(_0x2748c5['body'][_0xfb68('0x65')][_0xcb0f5c]),'UserId':Number(_0x2748c5[_0xfb68('0x62')]['id'])});}return _0x2748c5['body'][_0xfb68('0x65')];});}})[_0xfb68('0x17')](respondWithResult(_0x26614a,null))[_0xfb68('0x54')](handleError(_0x26614a,null));};exports['removeOpenchannelInteractions']=function(_0x5b99e4,_0x1a3071){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x5b99e4['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x1a3071,null))[_0xfb68('0x17')](function(_0x111b89){if(_0x111b89){return _0x111b89['removeOpenchannelInteractions'](_0x5b99e4['query'][_0xfb68('0x65')])[_0xfb68('0x17')](function(){if(_[_0xfb68('0xb5')](_0x5b99e4['query']['ids'])){for(var _0x242383=0x0;_0x242383<_0x5b99e4['query'][_0xfb68('0x65')][_0xfb68('0x4c')];_0x242383+=0x1){socket[_0xfb68('0x29')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5b99e4['query'][_0xfb68('0x65')][_0x242383]),'UserId':Number(_0x5b99e4[_0xfb68('0x62')]['id'])});}}else{socket['emit'](_0xfb68('0x12f'),{'OpenchannelInteractionId':Number(_0x5b99e4['query'][_0xfb68('0x65')]),'UserId':Number(_0x5b99e4[_0xfb68('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x1a3071,null))[_0xfb68('0x54')](handleError(_0x1a3071,null));};exports[_0xfb68('0x130')]=function(_0x4bb514,_0x27128a){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x4bb514[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x27128a,null))['then'](function(_0x4c45d0){if(_0x4c45d0){return _0x4c45d0[_0xfb68('0x130')](_0x4bb514['body'][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x4bb514['body'],['ids','id'])||{})[_0xfb68('0xa9')](function(){for(var _0x578516=0x0;_0x578516<_0x4bb514[_0xfb68('0x61')][_0xfb68('0x65')][_0xfb68('0x4c')];_0x578516+=0x1){socket[_0xfb68('0x29')](_0xfb68('0x131'),{'WhatsappInteractionId':Number(_0x4bb514[_0xfb68('0x61')][_0xfb68('0x65')][_0x578516]),'UserId':Number(_0x4bb514[_0xfb68('0x62')]['id'])});}return _0x4bb514[_0xfb68('0x61')][_0xfb68('0x65')];});}})[_0xfb68('0x17')](respondWithResult(_0x27128a,null))[_0xfb68('0x54')](handleError(_0x27128a,null));};exports[_0xfb68('0x132')]=function(_0x3434b7,_0x589c79){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x3434b7[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x589c79,null))[_0xfb68('0x17')](function(_0x19ce1a){if(_0x19ce1a){return _0x19ce1a[_0xfb68('0x132')](_0x3434b7['query']['ids']);}})[_0xfb68('0x17')](respondWithStatusCode(_0x589c79,null))[_0xfb68('0x54')](handleError(_0x589c79,null));};exports[_0xfb68('0x133')]=function(_0x2683dd,_0x537068){var _0x2e4fb0={};var _0x406caa={};var _0x1593be;var _0x1d4151;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x2683dd[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x537068,null))[_0xfb68('0x17')](function(_0x27d87c){if(_0x27d87c){_0x1593be=_0x27d87c;_0x406caa['model']=_[_0xfb68('0x57')](db[_0xfb68('0x134')][_0xfb68('0x58')]);_0x406caa[_0xfb68('0x44')]=_['keys'](_0x2683dd[_0xfb68('0x44')]);_0x406caa[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x406caa[_0xfb68('0x56')],_0x406caa['query']);_0x2e4fb0[_0xfb68('0x5c')]=_['intersection'](_0x406caa[_0xfb68('0x56')],qs['fields'](_0x2683dd['query']['fields']));_0x2e4fb0[_0xfb68('0x5c')]=_0x2e4fb0[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x2e4fb0[_0xfb68('0x5c')]:_0x406caa[_0xfb68('0x56')];_0x2e4fb0[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x2683dd[_0xfb68('0x44')][_0xfb68('0xce')]);_0x2e4fb0[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_['pick'](_0x2683dd[_0xfb68('0x44')],_0x406caa[_0xfb68('0x59')]));if(_0x2683dd[_0xfb68('0x44')][_0xfb68('0x34')]){_0x2e4fb0[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x2e4fb0[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x2e4fb0['attributes'],function(_0xeb32a3){var _0x502503={};_0x502503[_0xeb32a3]={'$like':'%'+_0x2683dd[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x502503;})});}_0x2e4fb0=_[_0xfb68('0xd1')]({},_0x2e4fb0,_0x2683dd[_0xfb68('0x5e')]);return _0x1593be[_0xfb68('0x133')](_0x2e4fb0);}})[_0xfb68('0x17')](function(_0x5e7d47){if(_0x5e7d47){_0x1d4151=_0x5e7d47[_0xfb68('0x4c')];if(!_0x2683dd['query'][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x2e4fb0[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x2683dd[_0xfb68('0x44')]['limit']);_0x2e4fb0[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x2683dd[_0xfb68('0x44')]['offset']);}return _0x1593be['getVoicePrefixes'](_0x2e4fb0);}})[_0xfb68('0x17')](function(_0x87fa2f){if(_0x87fa2f){return _0x87fa2f?{'count':_0x1d4151,'rows':_0x87fa2f}:null;}})['then'](respondWithResult(_0x537068,null))[_0xfb68('0x54')](handleError(_0x537068,null));};exports[_0xfb68('0x135')]=function(_0x319025,_0xc71e59){var _0x5aa809={};var _0x2f0271={};var _0x4c5798;var _0x3759ab;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0x319025[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xc71e59,null))['then'](function(_0x125702){if(_0x125702){_0x4c5798=_0x125702;_0x2f0271[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0x136')][_0xfb68('0x58')]);_0x2f0271[_0xfb68('0x44')]=_['keys'](_0x319025['query']);_0x2f0271[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x2f0271[_0xfb68('0x56')],_0x2f0271[_0xfb68('0x44')]);_0x5aa809[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x2f0271['model'],qs['fields'](_0x319025['query'][_0xfb68('0x5b')]));_0x5aa809[_0xfb68('0x5c')]=_0x5aa809[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x5aa809[_0xfb68('0x5c')]:_0x2f0271[_0xfb68('0x56')];_0x5aa809[_0xfb68('0xda')]=qs['sort'](_0x319025['query']['sort']);_0x5aa809['where']=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x319025[_0xfb68('0x44')],_0x2f0271[_0xfb68('0x59')]));if(_0x319025['query'][_0xfb68('0x34')]){_0x5aa809[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x5aa809['where'],{'$or':_[_0xfb68('0x36')](_0x5aa809[_0xfb68('0x5c')],function(_0x2b25bf){var _0x4d47c7={};_0x4d47c7[_0x2b25bf]={'$like':'%'+_0x319025['query'][_0xfb68('0x34')]+'%'};return _0x4d47c7;})});}_0x5aa809=_['merge']({},_0x5aa809,_0x319025[_0xfb68('0x5e')]);return _0x4c5798['getFaxAccounts'](_0x5aa809);}})[_0xfb68('0x17')](function(_0x56abca){if(_0x56abca){_0x3759ab=_0x56abca['length'];if(!_0x319025[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x5aa809[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x319025[_0xfb68('0x44')]['limit']);_0x5aa809[_0xfb68('0x25')]=qs['offset'](_0x319025[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x4c5798[_0xfb68('0x135')](_0x5aa809);}})[_0xfb68('0x17')](function(_0x4798aa){if(_0x4798aa){return _0x4798aa?{'count':_0x3759ab,'rows':_0x4798aa}:null;}})['then'](respondWithResult(_0xc71e59,null))[_0xfb68('0x54')](handleError(_0xc71e59,null));};exports[_0xfb68('0x137')]=function(_0x45ff5c,_0x223f78){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x45ff5c[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x223f78,null))[_0xfb68('0x17')](function(_0x2c66af){if(_0x2c66af){return _0x2c66af[_0xfb68('0x137')](_0x45ff5c[_0xfb68('0x61')][_0xfb68('0x65')],_['omit'](_0x45ff5c[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x223f78,null))[_0xfb68('0x54')](handleError(_0x223f78,null));};exports[_0xfb68('0x138')]=function(_0x33e199,_0x5bc260){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x33e199['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x5bc260,null))[_0xfb68('0x17')](function(_0x37300f){if(_0x37300f){return _0x37300f[_0xfb68('0x138')](_0x33e199[_0xfb68('0x44')]['ids']);}})[_0xfb68('0x17')](respondWithStatusCode(_0x5bc260,null))[_0xfb68('0x54')](handleError(_0x5bc260,null));};exports[_0xfb68('0x139')]=function(_0x1d3f52,_0x3611e4){var _0x56330e={};var _0x143d64={};var _0x5941a3;var _0x18ebd6;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x1d3f52[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x3611e4,null))[_0xfb68('0x17')](function(_0xaa01ef){if(_0xaa01ef){_0x5941a3=_0xaa01ef;_0x143d64['model']=_[_0xfb68('0x57')](db[_0xfb68('0x13a')]['rawAttributes']);_0x143d64['query']=_['keys'](_0x1d3f52[_0xfb68('0x44')]);_0x143d64['filters']=_[_0xfb68('0x5a')](_0x143d64['model'],_0x143d64[_0xfb68('0x44')]);_0x56330e['attributes']=_[_0xfb68('0x5a')](_0x143d64['model'],qs[_0xfb68('0x5b')](_0x1d3f52[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x56330e[_0xfb68('0x5c')]=_0x56330e['attributes'][_0xfb68('0x4c')]?_0x56330e[_0xfb68('0x5c')]:_0x143d64[_0xfb68('0x56')];_0x56330e[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x1d3f52[_0xfb68('0x44')][_0xfb68('0xce')]);_0x56330e[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x1d3f52[_0xfb68('0x44')],_0x143d64['filters']));if(_0x1d3f52[_0xfb68('0x44')][_0xfb68('0x34')]){_0x56330e['where']=_[_0xfb68('0xd1')](_0x56330e[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x56330e['attributes'],function(_0x44c8f4){var _0x46ffb1={};_0x46ffb1[_0x44c8f4]={'$like':'%'+_0x1d3f52[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x46ffb1;})});}_0x56330e=_[_0xfb68('0xd1')]({},_0x56330e,_0x1d3f52[_0xfb68('0x5e')]);return _0x5941a3['getMailAccounts'](_0x56330e);}})[_0xfb68('0x17')](function(_0x12b826){if(_0x12b826){_0x18ebd6=_0x12b826['length'];if(!_0x1d3f52[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x56330e['limit']=qs[_0xfb68('0x24')](_0x1d3f52[_0xfb68('0x44')][_0xfb68('0x24')]);_0x56330e[_0xfb68('0x25')]=qs['offset'](_0x1d3f52[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x5941a3[_0xfb68('0x139')](_0x56330e);}})[_0xfb68('0x17')](function(_0x3ee931){if(_0x3ee931){return _0x3ee931?{'count':_0x18ebd6,'rows':_0x3ee931}:null;}})[_0xfb68('0x17')](respondWithResult(_0x3611e4,null))[_0xfb68('0x54')](handleError(_0x3611e4,null));};exports[_0xfb68('0x13b')]=function(_0xb56137,_0x5111f7){return db['User'][_0xfb68('0x39')]({'where':{'id':_0xb56137['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x5111f7,null))[_0xfb68('0x17')](function(_0xd4a502){if(_0xd4a502){return _0xd4a502['addMailAccounts'](_0xb56137['body'][_0xfb68('0x65')],_[_0xfb68('0x66')](_0xb56137[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x5111f7,null))['catch'](handleError(_0x5111f7,null));};exports[_0xfb68('0x13c')]=function(_0x3a49d0,_0x45fbd3){return db[_0xfb68('0x3f')]['find']({'where':{'id':_0x3a49d0[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x45fbd3,null))[_0xfb68('0x17')](function(_0x36d320){if(_0x36d320){return _0x36d320[_0xfb68('0x13c')](_0x3a49d0['query'][_0xfb68('0x65')]);}})['then'](respondWithStatusCode(_0x45fbd3,null))['catch'](handleError(_0x45fbd3,null));};exports[_0xfb68('0x13d')]=function(_0x50fc12,_0x173a50){var _0x2d2566={};var _0x561a9a={};var _0x4b6081;var _0x17f42b;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x50fc12['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x173a50,null))[_0xfb68('0x17')](function(_0x352971){if(_0x352971){_0x4b6081=_0x352971;_0x561a9a[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0x13e')][_0xfb68('0x58')]);_0x561a9a[_0xfb68('0x44')]=_['keys'](_0x50fc12[_0xfb68('0x44')]);_0x561a9a[_0xfb68('0x59')]=_['intersection'](_0x561a9a[_0xfb68('0x56')],_0x561a9a[_0xfb68('0x44')]);_0x2d2566['attributes']=_[_0xfb68('0x5a')](_0x561a9a['model'],qs[_0xfb68('0x5b')](_0x50fc12[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x2d2566[_0xfb68('0x5c')]=_0x2d2566[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x2d2566['attributes']:_0x561a9a[_0xfb68('0x56')];_0x2d2566[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x50fc12[_0xfb68('0x44')]['sort']);_0x2d2566['where']=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x50fc12['query'],_0x561a9a[_0xfb68('0x59')]));if(_0x50fc12[_0xfb68('0x44')][_0xfb68('0x34')]){_0x2d2566['where']=_[_0xfb68('0xd1')](_0x2d2566[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x2d2566['attributes'],function(_0x476741){var _0x22e536={};_0x22e536[_0x476741]={'$like':'%'+_0x50fc12[_0xfb68('0x44')]['filter']+'%'};return _0x22e536;})});}_0x2d2566=_[_0xfb68('0xd1')]({},_0x2d2566,_0x50fc12[_0xfb68('0x5e')]);return _0x4b6081['getOpenchannelAccounts'](_0x2d2566);}})[_0xfb68('0x17')](function(_0x5e8222){if(_0x5e8222){_0x17f42b=_0x5e8222[_0xfb68('0x4c')];if(!_0x50fc12[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x2d2566[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x50fc12[_0xfb68('0x44')][_0xfb68('0x24')]);_0x2d2566[_0xfb68('0x25')]=qs['offset'](_0x50fc12[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x4b6081['getOpenchannelAccounts'](_0x2d2566);}})[_0xfb68('0x17')](function(_0x2d2b19){if(_0x2d2b19){return _0x2d2b19?{'count':_0x17f42b,'rows':_0x2d2b19}:null;}})[_0xfb68('0x17')](respondWithResult(_0x173a50,null))['catch'](handleError(_0x173a50,null));};exports['addOpenchannelAccounts']=function(_0x33004d,_0x58dfe1){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x33004d[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x58dfe1,null))[_0xfb68('0x17')](function(_0x25ec8f){if(_0x25ec8f){return _0x25ec8f[_0xfb68('0x13f')](_0x33004d[_0xfb68('0x61')]['ids'],_[_0xfb68('0x66')](_0x33004d[_0xfb68('0x61')],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x58dfe1,null))[_0xfb68('0x54')](handleError(_0x58dfe1,null));};exports[_0xfb68('0x140')]=function(_0x5f1529,_0x161b3c){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x5f1529[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x161b3c,null))[_0xfb68('0x17')](function(_0x2c24bc){if(_0x2c24bc){return _0x2c24bc[_0xfb68('0x140')](_0x5f1529[_0xfb68('0x44')][_0xfb68('0x65')]);}})[_0xfb68('0x17')](respondWithStatusCode(_0x161b3c,null))['catch'](handleError(_0x161b3c,null));};exports[_0xfb68('0x141')]=function(_0x177bd8,_0x382c1a){var _0x32a298={};var _0x54bf75={};var _0x4d54ef;var _0x4674d3;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x177bd8[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x382c1a,null))['then'](function(_0x2eda2c){if(_0x2eda2c){_0x4d54ef=_0x2eda2c;_0x54bf75['model']=_[_0xfb68('0x57')](db[_0xfb68('0x142')][_0xfb68('0x58')]);_0x54bf75[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x177bd8[_0xfb68('0x44')]);_0x54bf75[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x54bf75[_0xfb68('0x56')],_0x54bf75[_0xfb68('0x44')]);_0x32a298[_0xfb68('0x5c')]=_[_0xfb68('0x5a')](_0x54bf75[_0xfb68('0x56')],qs['fields'](_0x177bd8[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x32a298[_0xfb68('0x5c')]=_0x32a298['attributes'][_0xfb68('0x4c')]?_0x32a298[_0xfb68('0x5c')]:_0x54bf75[_0xfb68('0x56')];_0x32a298[_0xfb68('0xda')]=qs['sort'](_0x177bd8[_0xfb68('0x44')][_0xfb68('0xce')]);_0x32a298[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x177bd8[_0xfb68('0x44')],_0x54bf75[_0xfb68('0x59')]));if(_0x177bd8['query'][_0xfb68('0x34')]){_0x32a298[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x32a298[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x32a298[_0xfb68('0x5c')],function(_0x10f6a2){var _0x5562b0={};_0x5562b0[_0x10f6a2]={'$like':'%'+_0x177bd8['query'][_0xfb68('0x34')]+'%'};return _0x5562b0;})});}_0x32a298=_['merge']({},_0x32a298,_0x177bd8['options']);return _0x4d54ef['getSmsAccounts'](_0x32a298);}})['then'](function(_0x469aaf){if(_0x469aaf){_0x4674d3=_0x469aaf[_0xfb68('0x4c')];if(!_0x177bd8['query'][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x32a298[_0xfb68('0x24')]=qs['limit'](_0x177bd8[_0xfb68('0x44')][_0xfb68('0x24')]);_0x32a298[_0xfb68('0x25')]=qs['offset'](_0x177bd8['query'][_0xfb68('0x25')]);}return _0x4d54ef[_0xfb68('0x141')](_0x32a298);}})[_0xfb68('0x17')](function(_0x1321bd){if(_0x1321bd){return _0x1321bd?{'count':_0x4674d3,'rows':_0x1321bd}:null;}})['then'](respondWithResult(_0x382c1a,null))[_0xfb68('0x54')](handleError(_0x382c1a,null));};exports[_0xfb68('0x143')]=function(_0x228d8a,_0x5f4f51){return db['User']['find']({'where':{'id':_0x228d8a['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x5f4f51,null))[_0xfb68('0x17')](function(_0x511c08){if(_0x511c08){return _0x511c08[_0xfb68('0x143')](_0x228d8a[_0xfb68('0x61')][_0xfb68('0x65')],_['omit'](_0x228d8a['body'],['ids','id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x5f4f51,null))[_0xfb68('0x54')](handleError(_0x5f4f51,null));};exports[_0xfb68('0x144')]=function(_0x3f3f77,_0x5268eb){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x3f3f77[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x5268eb,null))[_0xfb68('0x17')](function(_0x4734e2){if(_0x4734e2){return _0x4734e2[_0xfb68('0x144')](_0x3f3f77[_0xfb68('0x44')][_0xfb68('0x65')]);}})['then'](respondWithStatusCode(_0x5268eb,null))[_0xfb68('0x54')](handleError(_0x5268eb,null));};exports[_0xfb68('0x145')]=function(_0x1db36e,_0x15402e){var _0x5ee53c={};var _0x1a8991={};var _0x46c171;var _0x56c040;return db[_0xfb68('0x3f')]['findOne']({'where':{'id':_0x1db36e['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x15402e,null))[_0xfb68('0x17')](function(_0x38990e){if(_0x38990e){_0x46c171=_0x38990e;_0x1a8991[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0x146')][_0xfb68('0x58')]);_0x1a8991[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x1db36e[_0xfb68('0x44')]);_0x1a8991[_0xfb68('0x59')]=_['intersection'](_0x1a8991['model'],_0x1a8991[_0xfb68('0x44')]);_0x5ee53c[_0xfb68('0x5c')]=_['intersection'](_0x1a8991[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x1db36e['query']['fields']));_0x5ee53c[_0xfb68('0x5c')]=_0x5ee53c[_0xfb68('0x5c')]['length']?_0x5ee53c[_0xfb68('0x5c')]:_0x1a8991['model'];_0x5ee53c[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x1db36e[_0xfb68('0x44')][_0xfb68('0xce')]);_0x5ee53c[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x1db36e[_0xfb68('0x44')],_0x1a8991[_0xfb68('0x59')]));if(_0x1db36e[_0xfb68('0x44')][_0xfb68('0x34')]){_0x5ee53c['where']=_['merge'](_0x5ee53c[_0xfb68('0xcf')],{'$or':_[_0xfb68('0x36')](_0x5ee53c['attributes'],function(_0x248083){var _0x37dd1={};_0x37dd1[_0x248083]={'$like':'%'+_0x1db36e[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x37dd1;})});}_0x5ee53c=_[_0xfb68('0xd1')]({},_0x5ee53c,_0x1db36e[_0xfb68('0x5e')]);return _0x46c171[_0xfb68('0x145')](_0x5ee53c);}})[_0xfb68('0x17')](function(_0x18806b){if(_0x18806b){_0x56c040=_0x18806b[_0xfb68('0x4c')];if(!_0x1db36e[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x5ee53c['limit']=qs[_0xfb68('0x24')](_0x1db36e[_0xfb68('0x44')][_0xfb68('0x24')]);_0x5ee53c[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x1db36e[_0xfb68('0x44')][_0xfb68('0x25')]);}return _0x46c171[_0xfb68('0x145')](_0x5ee53c);}})[_0xfb68('0x17')](function(_0x3f2ec3){if(_0x3f2ec3){return _0x3f2ec3?{'count':_0x56c040,'rows':_0x3f2ec3}:null;}})['then'](respondWithResult(_0x15402e,null))[_0xfb68('0x54')](handleError(_0x15402e,null));};exports['addChatWebsites']=function(_0x3d4d11,_0x3627a9){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x3d4d11[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x3627a9,null))['then'](function(_0x3d22c4){if(_0x3d22c4){return _0x3d22c4[_0xfb68('0x147')](_0x3d4d11['body'][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x3d4d11['body'],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x3627a9,null))[_0xfb68('0x54')](handleError(_0x3627a9,null));};exports[_0xfb68('0x148')]=function(_0x3912af,_0x5e4273){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x3912af['params']['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x5e4273,null))[_0xfb68('0x17')](function(_0x517c86){if(_0x517c86){return _0x517c86[_0xfb68('0x148')](_0x3912af[_0xfb68('0x44')]['ids']);}})[_0xfb68('0x17')](respondWithStatusCode(_0x5e4273,null))[_0xfb68('0x54')](handleError(_0x5e4273,null));};exports[_0xfb68('0x149')]=function(_0x55f054,_0xfea9dd){var _0x39c895={};var _0x4d9958={};var _0x1cb253;var _0x225491;return db[_0xfb68('0x3f')][_0xfb68('0xcd')]({'where':{'id':_0x55f054[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xfea9dd,null))[_0xfb68('0x17')](function(_0x101e90){if(_0x101e90){_0x1cb253=_0x101e90;_0x4d9958[_0xfb68('0x56')]=_[_0xfb68('0x57')](db[_0xfb68('0x14a')][_0xfb68('0x58')]);_0x4d9958[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x55f054[_0xfb68('0x44')]);_0x4d9958[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x4d9958['model'],_0x4d9958[_0xfb68('0x44')]);_0x39c895[_0xfb68('0x5c')]=_['intersection'](_0x4d9958[_0xfb68('0x56')],qs[_0xfb68('0x5b')](_0x55f054[_0xfb68('0x44')]['fields']));_0x39c895[_0xfb68('0x5c')]=_0x39c895[_0xfb68('0x5c')][_0xfb68('0x4c')]?_0x39c895[_0xfb68('0x5c')]:_0x4d9958['model'];_0x39c895[_0xfb68('0xda')]=qs[_0xfb68('0xce')](_0x55f054[_0xfb68('0x44')][_0xfb68('0xce')]);_0x39c895[_0xfb68('0xcf')]=qs['filters'](_[_0xfb68('0xd0')](_0x55f054[_0xfb68('0x44')],_0x4d9958[_0xfb68('0x59')]));if(_0x55f054[_0xfb68('0x44')][_0xfb68('0x34')]){_0x39c895[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x39c895['where'],{'$or':_[_0xfb68('0x36')](_0x39c895[_0xfb68('0x5c')],function(_0x5816e3){var _0x5a1402={};_0x5a1402[_0x5816e3]={'$like':'%'+_0x55f054[_0xfb68('0x44')][_0xfb68('0x34')]+'%'};return _0x5a1402;})});}_0x39c895=_[_0xfb68('0xd1')]({},_0x39c895,_0x55f054[_0xfb68('0x5e')]);return _0x1cb253[_0xfb68('0x149')](_0x39c895);}})[_0xfb68('0x17')](function(_0x2e4dd2){if(_0x2e4dd2){_0x225491=_0x2e4dd2[_0xfb68('0x4c')];if(!_0x55f054['query'][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x39c895[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x55f054['query']['limit']);_0x39c895[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x55f054[_0xfb68('0x44')]['offset']);}return _0x1cb253[_0xfb68('0x149')](_0x39c895);}})['then'](function(_0x39bff2){if(_0x39bff2){return _0x39bff2?{'count':_0x225491,'rows':_0x39bff2}:null;}})[_0xfb68('0x17')](respondWithResult(_0xfea9dd,null))[_0xfb68('0x54')](handleError(_0xfea9dd,null));};exports['addWhatsappAccounts']=function(_0x4f0795,_0x5e0452){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x4f0795[_0xfb68('0x62')]['id']}})['then'](handleEntityNotFound(_0x5e0452,null))[_0xfb68('0x17')](function(_0x5e75ba){if(_0x5e75ba){return _0x5e75ba[_0xfb68('0x14b')](_0x4f0795[_0xfb68('0x61')][_0xfb68('0x65')],_[_0xfb68('0x66')](_0x4f0795['body'],[_0xfb68('0x65'),'id'])||{});}})[_0xfb68('0x17')](respondWithResult(_0x5e0452,null))['catch'](handleError(_0x5e0452,null));};exports[_0xfb68('0x14c')]=function(_0x2c5fae,_0xd664d6){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x2c5fae[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0xd664d6,null))[_0xfb68('0x17')](function(_0x199dd3){if(_0x199dd3){return _0x199dd3[_0xfb68('0x14c')](_0x2c5fae[_0xfb68('0x44')][_0xfb68('0x65')]);}})[_0xfb68('0x17')](respondWithStatusCode(_0xd664d6,null))['catch'](handleError(_0xd664d6,null));};exports['getScheduledCalls']=function(_0x480c8d,_0x24d680){var _0x565764={},_0x48de12={},_0x39f09a={'count':0x0,'rows':[]};var _0x191913=db['CmHopper']['rawAttributes'];_0x48de12[_0xfb68('0x56')]=_[_0xfb68('0x57')](_0x191913);_0x48de12[_0xfb68('0x44')]=_[_0xfb68('0x57')](_0x480c8d['query']);_0x48de12[_0xfb68('0x59')]=_[_0xfb68('0x5a')](_0x48de12['model'],_0x48de12[_0xfb68('0x44')]);_0x48de12[_0xfb68('0x59')]=_[_0xfb68('0xfe')](_0x48de12[_0xfb68('0x59')],[_0xfb68('0x14d'),_0xfb68('0x14e'),_0xfb68('0x14f'),_0xfb68('0x150'),'$lt',_0xfb68('0x151'),_0xfb68('0x152'),_0xfb68('0x153'),_0xfb68('0x154'),'$between',_0xfb68('0x155'),_0xfb68('0x156'),_0xfb68('0x157'),_0xfb68('0x158'),'$notLike','$iLike','$notILike',_0xfb68('0x158'),_0xfb68('0x159'),_0xfb68('0x15a'),_0xfb68('0x15b'),_0xfb68('0x15c')]);_0x565764[_0xfb68('0x5c')]=_['intersection'](_0x48de12[_0xfb68('0x56')],qs['fields'](_0x480c8d[_0xfb68('0x44')][_0xfb68('0x5b')]));_0x565764[_0xfb68('0x5c')]=_0x565764[_0xfb68('0x5c')]['length']?_0x565764[_0xfb68('0x5c')]:_0x48de12['model'];if(!_0x480c8d[_0xfb68('0x44')][_0xfb68('0xd2')]('nolimit')){_0x565764[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x480c8d[_0xfb68('0x44')][_0xfb68('0x24')]);_0x565764['offset']=qs[_0xfb68('0x25')](_0x480c8d[_0xfb68('0x44')][_0xfb68('0x25')]);}_0x565764['order']=qs[_0xfb68('0xce')](_0x480c8d['query'][_0xfb68('0xce')]);_0x565764[_0xfb68('0xcf')]=qs[_0xfb68('0x59')](_[_0xfb68('0xd0')](_0x480c8d[_0xfb68('0x44')],_0x48de12[_0xfb68('0x59')]));if(_0x480c8d[_0xfb68('0x44')][_0xfb68('0x34')]){_0x565764[_0xfb68('0xcf')]=_[_0xfb68('0xd1')](_0x565764[_0xfb68('0xcf')],{'$or':_['map'](_0x565764['attributes'],function(_0x1551e6){var _0x5d2ad8={};_0x5d2ad8[_0x1551e6]={'$like':'%'+_0x480c8d['query']['filter']+'%'};return _0x5d2ad8;})});}_0x565764[_0xfb68('0xcf')]={'$and':[_0x565764[_0xfb68('0xcf')],{'$or':[{'UserId':_0x480c8d[_0xfb68('0x62')]['id']},{'OwnerId':_0x480c8d['params']['id']}]}]};_0x565764=_[_0xfb68('0xd1')]({},_0x565764,_0x480c8d['options']);var _0x49c16d={'where':_0x565764['where']};return db[_0xfb68('0x15d')][_0xfb68('0x26')](_0x49c16d)[_0xfb68('0x17')](function(_0xbd7c65){_0x39f09a['count']=_0xbd7c65;if(_0x480c8d['query'][_0xfb68('0x5d')]){_0x565764[_0xfb68('0x45')]=[{'attributes':['id',_0xfb68('0x15e'),_0xfb68('0x15f'),_0xfb68('0xec')],'model':db[_0xfb68('0x160')],'as':_0xfb68('0x161')},{'attributes':['id','name','dialActive'],'model':db[_0xfb68('0xac')],'as':_0xfb68('0xd9')}];}return db['CmHopper'][_0xfb68('0x4a')](_0x565764);})['then'](function(_0x1ccf54){_0x39f09a[_0xfb68('0x4b')]=_0x1ccf54;return _0x39f09a;})[_0xfb68('0x17')](respondWithFilteredResult(_0x24d680,_0x565764))[_0xfb68('0x54')](handleError(_0x24d680,null));};exports['getApiKey']=function(_0x327a66,_0x3d271c){if(!_[_0xfb68('0x6d')](_0x327a66[_0xfb68('0x2f')]['id'])&&(_0x327a66[_0xfb68('0x2f')]['role']==_0xfb68('0x2d')||_0x327a66[_0xfb68('0x2f')][_0xfb68('0x2c')]==_0xfb68('0x2f'))){return db['User'][_0xfb68('0xcd')]({'where':{'id':_0x327a66[_0xfb68('0x62')]['id']},'raw':!![]})[_0xfb68('0x17')](function(_0x59d910){return authService[_0xfb68('0x162')](_0x59d910);})[_0xfb68('0x17')](function(_0x2669ea){if(_0x2669ea){return _0x3d271c[_0xfb68('0x22')](0xc8)[_0xfb68('0x163')]({'api_key':_0x2669ea['token']});}else{return _0x3d271c[_0xfb68('0x22')](0xcc)[_0xfb68('0x163')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x3d271c,0x193));}else{return _0x3d271c[_0xfb68('0x22')](0x191)[_0xfb68('0x163')]({'message':_0xfb68('0x164')});}};exports[_0xfb68('0x165')]=function(_0x5836b3,_0x99eec){if(!_[_0xfb68('0x6d')](_0x5836b3[_0xfb68('0x2f')]['id'])&&(_0x5836b3[_0xfb68('0x2f')][_0xfb68('0x2c')]==_0xfb68('0x2d')||_0x5836b3['user']['role']=='user')){return db['User'][_0xfb68('0x39')]({'where':{'id':_0x5836b3['params']['id']}})[_0xfb68('0x17')](function(_0x2884be){return authService[_0xfb68('0x166')](_0x2884be);})[_0xfb68('0x17')](function(_0x1fba1e){return db[_0xfb68('0x3f')][_0xfb68('0x28')]({'apiKeyIat':_0x1fba1e[_0xfb68('0x167')],'apiKeyNonce':_0x1fba1e['nonce']},{'where':{'id':_0x5836b3['params']['id']}})[_0xfb68('0x17')](function(){return _0x99eec[_0xfb68('0x22')](0xc8)[_0xfb68('0x163')]({'api_key':_0x1fba1e[_0xfb68('0x168')]});});})[_0xfb68('0x54')](handleError(_0x99eec,0x193));}else{return _0x99eec[_0xfb68('0x22')](0x191)[_0xfb68('0x163')]({'message':_0xfb68('0x164')});}};exports[_0xfb68('0x169')]=function(_0x3ab72b,_0x12a002){if(!_[_0xfb68('0x6d')](_0x3ab72b[_0xfb68('0x2f')]['id'])&&(_0x3ab72b[_0xfb68('0x2f')][_0xfb68('0x2c')]==_0xfb68('0x2d')||_0x3ab72b[_0xfb68('0x2f')][_0xfb68('0x2c')]=='user')){return db[_0xfb68('0x3f')][_0xfb68('0x39')]({'where':{'id':_0x3ab72b[_0xfb68('0x62')]['id']}})[_0xfb68('0x17')](handleEntityNotFound(_0x12a002,null))[_0xfb68('0x17')](function(_0x12d49){if(_0x12d49&&_0x12d49[_0xfb68('0x16a')]&&_0x12d49[_0xfb68('0x16b')])return _0x12d49;else throw{'message':_0xfb68('0x16c')};})[_0xfb68('0x17')](function(){return db[_0xfb68('0x3f')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x3ab72b['params']['id']}});})[_0xfb68('0x17')](respondWithStatusCode(_0x12a002,0xc8))['catch'](handleError(_0x12a002,0x193));}else{return _0x12a002['status'](0x191)[_0xfb68('0x163')]({'message':_0xfb68('0x164')});}};exports[_0xfb68('0x16d')]=function(_0x357012,_0x385d0e){var _0x1f7d50=_0x357012['user'][_0xfb68('0x2b')]({'plain':!![]});if(!_0x1f7d50){return _0x385d0e[_0xfb68('0x22')](0x191)[_0xfb68('0x3e')](_0xfb68('0x16e'));}else{Promise[_0xfb68('0x100')]()['then'](function(){if(_0x357012[_0xfb68('0x44')][_0xfb68('0x48')]!==_0xfb68('0x46'))return;return _0x357012[_0xfb68('0x2f')][_0xfb68('0x16f')]();})[_0xfb68('0x17')](function(_0x2f54da){if(!_0x2f54da)return;return _0x2f54da['get']({'plain':!![]});})[_0xfb68('0x17')](function(_0x530e67){_0x1f7d50[_0xfb68('0x48')]=_0x530e67;return _0x385d0e['status'](0xc8)[_0xfb68('0x163')](_0x1f7d50);});}};exports[_0xfb68('0x170')]=function(_0x42d964,_0x2b4cdc){var _0x5d89a8={'offset':0x0},_0x271595={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(!_0x42d964[_0xfb68('0x44')][_0xfb68('0x34')]&&!_0x42d964['query'][_0xfb68('0x171')]&&!_0x42d964['query'][_0xfb68('0x172')])return[];return Promise[_0xfb68('0x100')]()['then'](function(){var _0x3ffe21=[];if(!_[_0xfb68('0x8f')](_0x42d964['query'][_0xfb68('0x171')])){_0x3ffe21[_0xfb68('0x49')](db['Team'][_0xfb68('0x4a')]({'attributes':['id',_0xfb68('0x3d')],'where':{'id':_0x42d964[_0xfb68('0x44')][_0xfb68('0x171')]}}));}if(!_[_0xfb68('0x8f')](_0x42d964[_0xfb68('0x44')]['queues'])){_0x3ffe21[_0xfb68('0x49')](db['VoiceQueue'][_0xfb68('0x4a')]({'attributes':['id',_0xfb68('0x3d')],'type':_0xfb68('0x173'),'where':{'id':_0x42d964[_0xfb68('0x44')][_0xfb68('0x172')]}}));}return Promise[_0xfb68('0x53')](_0x3ffe21);})[_0xfb68('0x17')](function(_0x415dd3){var _0x30b930=_[_0xfb68('0x174')](_0x415dd3)[_0xfb68('0x36')](function(_0x4ef6ad){return _0x4ef6ad['getAgents']({'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x67'),'online'],'raw':!![]});});return Promise[_0xfb68('0x53')](_0x30b930);})['then'](function(_0x34d7c3){var _0x23c2ad=_[_0xfb68('0x174')](_0x34d7c3);if(!_0x42d964[_0xfb68('0x44')][_0xfb68('0x34')])return _0x23c2ad;if(_[_0xfb68('0x8f')](_0x23c2ad)){return db['User'][_0xfb68('0x4a')]({'attributes':['id',_0xfb68('0x3d'),_0xfb68('0x67'),_0xfb68('0xa1')],'where':{'role':_0xfb68('0x31'),'$or':[db[_0xfb68('0x6e')][_0xfb68('0xcf')](db['sequelize']['fn']('lower',db[_0xfb68('0x6e')][_0xfb68('0x175')](_0xfb68('0x3d'))),{'$like':'%'+_0x42d964['query'][_0xfb68('0x34')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x42d964[_0xfb68('0x44')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x23c2ad)[_0xfb68('0x174')]()[_0xfb68('0x34')](function(_0x15f5c8){return _0x15f5c8[_0xfb68('0x3d')]['toLowerCase']()[_0xfb68('0x38')](_0x42d964[_0xfb68('0x44')][_0xfb68('0x34')]['toLowerCase']())||_0x15f5c8[_0xfb68('0x67')]['toString']()[_0xfb68('0x38')](_0x42d964[_0xfb68('0x44')][_0xfb68('0x34')]);})[_0xfb68('0x37')]();}})['then'](function(_0x513616){var _0x3672bc=_0xfb68('0x3d');var _0x8f9ba7=_0xfb68('0x176');if(_0x42d964['query']['sort']){_0x8f9ba7=_0x42d964[_0xfb68('0x44')][_0xfb68('0xce')][0x0]==='-'?_0xfb68('0x177'):_0xfb68('0x176');_0x3672bc=_0x8f9ba7===_0xfb68('0x176')?_0x42d964[_0xfb68('0x44')]['sort']:_0x42d964['query'][_0xfb68('0xce')][_0xfb68('0x178')](0x1);}return _(_0x513616)[_0xfb68('0x179')]('id')[_0xfb68('0x17a')]([function(_0x566544){return _0x3672bc===_0xfb68('0x3d')?_0x566544[_0x3672bc][_0xfb68('0xa7')]():_0x566544[_0x3672bc];}],[_0x8f9ba7])[_0xfb68('0x36')](function(_0x1086b0){return _[_0xfb68('0xd0')](_0x1086b0,['id','name',_0xfb68('0x67'),_0xfb68('0xa1')]);})[_0xfb68('0x37')]();})[_0xfb68('0x17')](function(_0x1ef140){return amiClient['request'](_0xfb68('0x30'),_0x42d964)[_0xfb68('0x17')](function(_0xd28f94){if(_0xd28f94[_0xfb68('0x1d')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x545b13=_0xd28f94[_0xfb68('0x20')];var _0x2f3f8c=jayson[_0xfb68('0x15')][_0xfb68('0x17b')]({'port':0x232c});return _0x2f3f8c[_0xfb68('0x16')](_0xfb68('0x30'),_0x42d964)['then'](function(_0x1c1b6e){if(_0x1c1b6e[_0xfb68('0x1d')])throw new Error(_0xfb68('0x17c'));var _0x486b37=_0x1c1b6e[_0xfb68('0x20')];return _['merge']({},_0x486b37,_0x545b13);});})['then'](function(_0x1916b1){return _['map'](_0x1ef140,function(_0xe8be86){var _0x325d2b=_[_0xfb68('0x39')](_0x1916b1['rows'],['id',_0xe8be86['id']]);if(!_0x325d2b||!_0xe8be86[_0xfb68('0xa1')]){_0xe8be86[_0xfb68('0x22')]='offline';}else if(_0x325d2b[_0xfb68('0xa3')]){_0xe8be86['status']=_0xfb68('0x102');}else{_0xe8be86[_0xfb68('0x22')]=_[_0xfb68('0x38')]([_0xfb68('0x17d'),'unknown',_0xfb68('0x17e'),_0xfb68('0x17f'),null,undefined],_0x325d2b[_0xfb68('0x180')])?_0xfb68('0xa1'):_0xfb68('0x181');}return _0xe8be86;});});});})[_0xfb68('0x17')](function(_0x2e8ae3){if(!_0x42d964[_0xfb68('0x44')][_0xfb68('0xd2')](_0xfb68('0xd7'))){_0x5d89a8[_0xfb68('0x24')]=qs[_0xfb68('0x24')](_0x42d964[_0xfb68('0x44')][_0xfb68('0x24')]||0xa);_0x5d89a8[_0xfb68('0x25')]=qs[_0xfb68('0x25')](_0x42d964[_0xfb68('0x44')][_0xfb68('0x25')]);}_0x271595[_0xfb68('0x26')]=_0x2e8ae3[_0xfb68('0x4c')];_0x271595[_0xfb68('0x4b')]=_0x5d89a8[_0xfb68('0x24')]?_0x2e8ae3['slice'](_0x5d89a8[_0xfb68('0x25')],_0x5d89a8[_0xfb68('0x25')]+_0x5d89a8['limit']):_0x2e8ae3;return _0x271595;})[_0xfb68('0x17')](respondWithFilteredResult(_0x2b4cdc,_0x5d89a8))['catch'](handleError(_0x2b4cdc,null));};function get_open_tabs(_0x309f66,_0x18eaaf){var _0x51e771=_0x309f66[_0xfb68('0x182')](0x0)[_0xfb68('0x183')]()+_0x309f66[_0xfb68('0x184')](0x1);var _0x3802e9={'type':db['Sequelize'][_0xfb68('0x70')][_0xfb68('0x71')],'raw':!![]};return new Promise(function(_0x4c0152,_0x3ae566){var _0x50d90d=squel[_0xfb68('0x185')]()[_0xfb68('0x186')]('ui.'+_0x51e771+_0xfb68('0x187'),'id')[_0xfb68('0x186')](_0xfb68('0x188'))[_0xfb68('0x72')](_0xfb68('0x189')+_0x309f66+_0xfb68('0x18a'),'ui')['where'](_0xfb68('0x18b'),_0x18eaaf['id']);return db[_0xfb68('0x6e')][_0xfb68('0x44')](_0x50d90d[_0xfb68('0x18c')](),_0x3802e9)['then'](function(_0x27d724){_0x18eaaf[_0x51e771+_0xfb68('0x18d')]=_0x27d724;_0x4c0152(_0x27d724);})['catch'](function(_0xee2cf6){_0x3ae566(_0xee2cf6);});});}
\ No newline at end of file
+var _0xeb10=['addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$gt','$lte','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','firstName','lastName','Contact','dialActive','getApiKey','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','isEmpty','teams','inbound','queues','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','idle','slice','charAt','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','util','path','lodash','squel','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','handleError','socket.io-emitter','redis','./user.socket','register','localhost','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','userNotification:recalc:','destroy','role','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','User','fieldName','key','password','salt','where','query','include','true','userSetting','attributes','push','findAll','openTabs','rows','length','chat','dataValues','sms','fax','mail','openchannel','all','catch','show','model','differenceBy','keys','rawAttributes','intersection','fields','includeAll','UserSetting','merge','options','update','body','params','describe','addContacts','ids','omit','internal','findById','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','mailbox','fullname','permissions','102','103','113','110','104','105','106','107','109','100','114','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','VoiceMail','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','UserProfileSection','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','online','interface','Unknown\x20channel','capitalize','Queues','penalty','spread','toLowerCase','emit','Queue:save','voice','VoiceQueue','get','SIP/%s','voicePause','UserVoiceQueueRt','upsert','channel','isValidChannel','remove','isArray','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','CHAT','createdAt','FaxOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','filters','pick','hasOwnProperty','CmList','List','Tag','Tags','tag','Queue','order','sort','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','loginInPause','intrf','format','user:%s','headers','x-forwarded-for','connection','socket','remoteAddress','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','logout','QueuePause','pause','getChannels','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','smsPause','whatsappPause','pauseType','lastPauseAt','Team','getTeams','addTeams','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','UserVoicePrefix','VoicePrefixId','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','removeAgent','TeamVoicePrefix','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','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','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite'];(function(_0x541180,_0x3fc094){var _0x298220=function(_0x2edfb9){while(--_0x2edfb9){_0x541180['push'](_0x541180['shift']());}};_0x298220(++_0x3fc094);}(_0xeb10,0x1c7));var _0x0eb1=function(_0x5299d0,_0x4a6a1a){_0x5299d0=_0x5299d0-0x0;var _0x53beb2=_0xeb10[_0x5299d0];return _0x53beb2;};'use strict';var moment=require('moment');var util=require(_0x0eb1('0x0'));var path=require(_0x0eb1('0x1'));var fs=require('fs');var _=require(_0x0eb1('0x2'));var squel=require(_0x0eb1('0x3'));var jayson=require('jayson/promise');var Redis=require(_0x0eb1('0x4'));var authService=require(_0x0eb1('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0x0eb1('0x6'))(_0x0eb1('0x7'));var utils=require(_0x0eb1('0x8'));var config=require('../../config/environment');var licenseUtil=require(_0x0eb1('0x9'));var APIBadRequestError=require(_0x0eb1('0xa'))[_0x0eb1('0xb')];var APINotFoundError=require(_0x0eb1('0xa'))[_0x0eb1('0xc')];var APIHandleError=require(_0x0eb1('0xa'))[_0x0eb1('0xd')];var db=require('../../mysqldb')['db'];var socket=require(_0x0eb1('0xe'))(new Redis(config[_0x0eb1('0xf')]));require(_0x0eb1('0x10'))[_0x0eb1('0x11')](socket);config[_0x0eb1('0xf')]=_['defaults'](config['redis'],{'host':_0x0eb1('0x12'),'port':0x18eb});var amiClient=jayson[_0x0eb1('0x13')][_0x0eb1('0x14')]({'port':0x232a});var values;function respondWithRpcPromise(_0x5d16ae,_0x183c2b,_0x4c19bd,_0xe32ada){return new Promise(function(_0x329c33,_0x2d5aab){var _0x48370c=_0xe32ada||amiClient;return _0x48370c[_0x0eb1('0x15')](_0x5d16ae,_0x4c19bd)[_0x0eb1('0x16')](function(_0x3cfbb3){logger[_0x0eb1('0x17')](_0x0eb1('0x18'),_0x183c2b,_0x0eb1('0x19'));logger[_0x0eb1('0x1a')](_0x0eb1('0x1b'),_0x183c2b,_0x0eb1('0x19'),JSON[_0x0eb1('0x1c')](_0x3cfbb3));if(_0x3cfbb3[_0x0eb1('0x1d')]){if(_0x3cfbb3[_0x0eb1('0x1d')]['code']===0x1f4){logger[_0x0eb1('0x1d')]('User,\x20%s,\x20%s',_0x183c2b,_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);return _0x2d5aab(_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);}logger[_0x0eb1('0x1d')](_0x0eb1('0x18'),_0x183c2b,_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);return _0x329c33(_0x3cfbb3[_0x0eb1('0x1d')][_0x0eb1('0x1e')]);}else{logger['info'](_0x0eb1('0x18'),_0x183c2b,_0x0eb1('0x19'));_0x329c33(_0x3cfbb3[_0x0eb1('0x1f')]['message']);}})['catch'](function(_0x5dd6f3){logger[_0x0eb1('0x1d')](_0x0eb1('0x18'),_0x183c2b,_0x5dd6f3);_0x2d5aab(_0x5dd6f3);});});}function respondWithStatusCode(_0x1862d5,_0x59f35b){_0x59f35b=_0x59f35b||0xcc;return function(_0x38c454){if(_0x38c454){return _0x1862d5[_0x0eb1('0x20')](_0x59f35b);}return _0x1862d5[_0x0eb1('0x21')](_0x59f35b)[_0x0eb1('0x22')]();};}function respondWithResult(_0x319ef8,_0x89d0c6){_0x89d0c6=_0x89d0c6||0xc8;return function(_0xee0c9e){if(_0xee0c9e){return _0x319ef8['status'](_0x89d0c6)[_0x0eb1('0x23')](_0xee0c9e);}};}function respondWithFilteredResult(_0x4c4233,_0x1479f0){return function(_0x37642b){if(_0x37642b){var _0x16c7d5=typeof _0x1479f0[_0x0eb1('0x24')]===_0x0eb1('0x25')&&typeof _0x1479f0[_0x0eb1('0x26')]===_0x0eb1('0x25');var _0x24d487=_0x37642b['count'];var _0xc0b8af=_0x16c7d5?0x0:_0x1479f0[_0x0eb1('0x24')];var _0xe2b162=_0x16c7d5?_0x37642b[_0x0eb1('0x27')]:_0x1479f0[_0x0eb1('0x24')]+_0x1479f0[_0x0eb1('0x26')];var _0x4a1e71;if(_0xe2b162>=_0x24d487){_0xe2b162=_0x24d487;_0x4a1e71=0xc8;}else{_0x4a1e71=0xce;}_0x4c4233[_0x0eb1('0x21')](_0x4a1e71);return _0x4c4233[_0x0eb1('0x28')](_0x0eb1('0x29'),_0xc0b8af+'-'+_0xe2b162+'/'+_0x24d487)['json'](_0x37642b);}return null;};}function saveUpdates(_0x51968b){return function(_0x56437a){if(_0x56437a){return _0x56437a['update'](_0x51968b)[_0x0eb1('0x16')](function(_0x213a0c){socket['emit'](_0x0eb1('0x2a')+_0x213a0c['id'],{});return _0x213a0c;});}return null;};}function removeEntity(_0x28837c){return function(_0x339b35){if(_0x339b35){return _0x339b35[_0x0eb1('0x2b')]()[_0x0eb1('0x16')](function(){var _0x33c45f=_0x339b35['get']({'plain':!![]});if(_0x33c45f[_0x0eb1('0x2c')]==='admin')return;var _0x3434e3=[{'name':_0x0eb1('0x2d'),'value':_0x0eb1('0x2e'),'ignore':!![]},{'name':_0x0eb1('0x2f'),'value':_0x0eb1('0x30'),'ignore':![]},{'name':_0x0eb1('0x31'),'value':_0x0eb1('0x32'),'ignore':![]}];var _0x4df96b=_(_0x3434e3)[_0x0eb1('0x33')](_0x0eb1('0x34'))[_0x0eb1('0x35')](_0x0eb1('0x36'))[_0x0eb1('0x36')]();if(_[_0x0eb1('0x37')](_0x4df96b,_0x33c45f[_0x0eb1('0x2c')])){return;}var _0x42c531=_[_0x0eb1('0x38')](_0x3434e3,['value',_0x33c45f['role']])[_0x0eb1('0x39')];return db[_0x0eb1('0x3a')][_0x0eb1('0x2b')]({'where':{'type':_0x42c531,'resourceId':_0x33c45f['id']}})['then'](function(){return _0x339b35;});})[_0x0eb1('0x16')](function(){_0x28837c[_0x0eb1('0x21')](0xcc)[_0x0eb1('0x22')]();});}};}function handleEntityNotFound(_0x4033b6){return function(_0x341787){if(!_0x341787){_0x4033b6['sendStatus'](0x194);}return _0x341787;};}function handleError(_0x326cd4,_0x189b5e){_0x189b5e=_0x189b5e||0x1f4;return function(_0x2c3bb6){logger[_0x0eb1('0x1d')](_0x2c3bb6[_0x0eb1('0x3b')]);if(_0x2c3bb6[_0x0eb1('0x39')]){delete _0x2c3bb6[_0x0eb1('0x39')];}_0x326cd4[_0x0eb1('0x21')](_0x189b5e)[_0x0eb1('0x3c')](_0x2c3bb6);};}exports['index']=function(_0x2d7f62,_0x222351){var _0x565a6b={},_0x5596dc={'count':0x0,'rows':[]};var _0x331a04=_(db[_0x0eb1('0x3d')]['rawAttributes'])[_0x0eb1('0x35')](function(_0xa60df4){return{'name':_0xa60df4[_0x0eb1('0x3e')],'type':_0xa60df4['type'][_0x0eb1('0x3f')]};})[_0x0eb1('0x33')](function(_0x3051c7){return!_['includes']([_0x0eb1('0x40'),_0x0eb1('0x41')],_0x3051c7['name']);})[_0x0eb1('0x36')]();_0x565a6b=qs['getOptions'](_0x331a04,_0x2d7f62);var _0x463131={'where':_0x565a6b[_0x0eb1('0x42')]};return db[_0x0eb1('0x3d')]['count'](_0x463131)['then'](function(_0x2bfcec){_0x5596dc[_0x0eb1('0x27')]=_0x2bfcec;if(_0x2d7f62[_0x0eb1('0x43')]['includeAll']){_0x565a6b[_0x0eb1('0x44')]=[{'all':!![]}];}if(_0x2d7f62[_0x0eb1('0x43')]['userSetting']===_0x0eb1('0x45')){_0x565a6b[_0x0eb1('0x44')]=[{'model':db['UserSetting'],'as':_0x0eb1('0x46')}];}if(!_['includes'](_0x565a6b[_0x0eb1('0x47')],'id')){_0x565a6b[_0x0eb1('0x47')][_0x0eb1('0x48')]('id');}return db['User'][_0x0eb1('0x49')](_0x565a6b);})[_0x0eb1('0x16')](function(_0x5f1bd7){_0x5596dc['rows']=_0x5f1bd7;if(_0x2d7f62[_0x0eb1('0x43')][_0x0eb1('0x4a')]==='true'){var _0x4849ca=[];for(var _0x37be1c=0x0;_0x37be1c<_0x5596dc[_0x0eb1('0x4b')][_0x0eb1('0x4c')];_0x37be1c++){_0x4849ca['push'](get_open_tabs(_0x0eb1('0x4d'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x50'),_0x5596dc['rows'][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca['push'](get_open_tabs(_0x0eb1('0x51'),_0x5596dc[_0x0eb1('0x4b')][_0x37be1c][_0x0eb1('0x4e')]));_0x4849ca[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x52'),_0x5596dc['rows'][_0x37be1c]['dataValues']));_0x4849ca[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x5596dc['rows'][_0x37be1c]['dataValues']));}return Promise[_0x0eb1('0x53')](_0x4849ca)[_0x0eb1('0x16')](function(){return _0x5596dc;});}else{return _0x5596dc;}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x222351,_0x565a6b))[_0x0eb1('0x54')](handleError(_0x222351,null));};exports[_0x0eb1('0x55')]=function(_0xb06b4f,_0x1a0478){var _0x277494={'raw':![],'where':{'id':_0xb06b4f['params']['id']}},_0x5036ea={};_0x5036ea[_0x0eb1('0x56')]=_[_0x0eb1('0x57')](_[_0x0eb1('0x58')](db[_0x0eb1('0x3d')][_0x0eb1('0x59')]),[_0x0eb1('0x40'),_0x0eb1('0x41')]);_0x5036ea['query']=_[_0x0eb1('0x58')](_0xb06b4f[_0x0eb1('0x43')]);_0x5036ea['filters']=_[_0x0eb1('0x5a')](_0x5036ea['model'],_0x5036ea[_0x0eb1('0x43')]);_0x277494[_0x0eb1('0x47')]=_['intersection'](_0x5036ea[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x277494['attributes']=_0x277494[_0x0eb1('0x47')]['length']?_0x277494[_0x0eb1('0x47')]:_0x5036ea[_0x0eb1('0x56')];if(_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x277494[_0x0eb1('0x44')]=[{'all':!![]}];}if(_0xb06b4f['query'][_0x0eb1('0x46')]===_0x0eb1('0x45')){_0x277494['include']=[{'model':db[_0x0eb1('0x5d')],'as':_0x0eb1('0x46')}];}_0x277494=_[_0x0eb1('0x5e')]({},_0x277494,_0xb06b4f[_0x0eb1('0x5f')]);if(!_[_0x0eb1('0x37')](_0x277494[_0x0eb1('0x47')],'id')){_0x277494[_0x0eb1('0x47')][_0x0eb1('0x48')]('id');}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')](_0x277494)[_0x0eb1('0x16')](handleEntityNotFound(_0x1a0478,null))[_0x0eb1('0x16')](function(_0x484704){var _0x36afcd=[];values=_0x484704;if(_0xb06b4f[_0x0eb1('0x43')][_0x0eb1('0x4a')]==='true'){_0x36afcd['push'](get_open_tabs(_0x0eb1('0x4d'),_0x484704[_0x0eb1('0x4e')]));_0x36afcd[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x484704[_0x0eb1('0x4e')]));_0x36afcd['push'](get_open_tabs(_0x0eb1('0x52'),_0x484704['dataValues']));_0x36afcd[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x484704[_0x0eb1('0x4e')]));_0x36afcd[_0x0eb1('0x48')](get_open_tabs('fax',_0x484704['dataValues']));_0x36afcd[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x51'),_0x484704[_0x0eb1('0x4e')]));return Promise['all'](_0x36afcd);}else{return values;}})[_0x0eb1('0x16')](function(){return values;})[_0x0eb1('0x16')](respondWithResult(_0x1a0478,null))[_0x0eb1('0x54')](handleError(_0x1a0478,null));};exports[_0x0eb1('0x60')]=function(_0x286a42,_0x45fbea){if(_0x286a42[_0x0eb1('0x61')]['id']){delete _0x286a42[_0x0eb1('0x61')]['id'];}delete _0x286a42[_0x0eb1('0x61')][_0x0eb1('0x2c')];return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x286a42[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x45fbea,null))[_0x0eb1('0x16')](saveUpdates(_0x286a42[_0x0eb1('0x61')],null))[_0x0eb1('0x16')](respondWithResult(_0x45fbea,null))[_0x0eb1('0x54')](handleError(_0x45fbea,null));};exports[_0x0eb1('0x63')]=function(_0x3dfd87,_0x16441c){return db[_0x0eb1('0x3d')][_0x0eb1('0x63')]()[_0x0eb1('0x16')](respondWithResult(_0x16441c,null))[_0x0eb1('0x54')](handleError(_0x16441c,null));};exports[_0x0eb1('0x64')]=function(_0x1f4136,_0x5ae189){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1f4136[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5ae189,null))[_0x0eb1('0x16')](function(_0x24d5b1){if(_0x24d5b1){return _0x24d5b1[_0x0eb1('0x64')](_0x1f4136[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x1f4136[_0x0eb1('0x61')],['ids','id'])||{});}})['then'](respondWithResult(_0x5ae189,null))[_0x0eb1('0x54')](handleError(_0x5ae189,null));};function validateUser(_0x2fcbd3){return new Promise(function(_0x20216d,_0x22221b){if(_0x2fcbd3[_0x0eb1('0x67')])return _0x20216d(_0x2fcbd3);return db['Setting'][_0x0eb1('0x68')](0x1)['then'](function(_0x36d4b4){if(_0x36d4b4['securePassword'])authService['validatePasswordPattern'](_0x2fcbd3[_0x0eb1('0x40')]);db['User'][_0x0eb1('0x69')](_0x0eb1('0x67'))[_0x0eb1('0x16')](function(_0x222538){if(_[_0x0eb1('0x6a')](_0x222538)){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')]||0x1;return;}if(_[_0x0eb1('0x6a')](_0x36d4b4['min_internal'])||_0x36d4b4[_0x0eb1('0x6b')]===_0x222538){_0x2fcbd3[_0x0eb1('0x67')]=_0x222538+0x1;return;}if(_0x36d4b4[_0x0eb1('0x6b')]>_0x222538){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')];return;}return db[_0x0eb1('0x6c')]['query']('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)',{'type':db[_0x0eb1('0x6c')][_0x0eb1('0x6d')][_0x0eb1('0x6e')]})[_0x0eb1('0x16')](function(_0x53f5dd){if(_0x53f5dd&&_0x53f5dd['length']){for(var _0x23ac61=0x0,_0x19f306=_0x53f5dd['length'];_0x23ac61<_0x19f306&&_['isNil'](_0x2fcbd3[_0x0eb1('0x67')]);_0x23ac61++){if(_0x36d4b4['min_internal']<=_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')]){_0x2fcbd3[_0x0eb1('0x67')]=_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')];}else if(_0x36d4b4['min_internal']>_0x53f5dd[_0x23ac61][_0x0eb1('0x6f')]&&_0x36d4b4[_0x0eb1('0x6b')]<=_0x53f5dd[_0x23ac61]['to']){_0x2fcbd3[_0x0eb1('0x67')]=_0x36d4b4[_0x0eb1('0x6b')];}}}if(_['isNil'](_0x2fcbd3[_0x0eb1('0x67')])){_0x2fcbd3[_0x0eb1('0x67')]=_0x222538+0x1;}return _0x20216d(_0x2fcbd3);});});})[_0x0eb1('0x54')](function(_0x16011e){_0x22221b(_0x16011e);});});}function updateUser(_0x231130){return new Promise(function(_0x567939,_0xcafb59){try{if(_0x231130['voicemail']){_0x231130[_0x0eb1('0x70')]=_0x231130[_0x0eb1('0x67')];_0x231130['VoiceMail']={'mailbox':_0x231130['internal'],'password':_0x231130['password'],'fullname':_0x231130[_0x0eb1('0x71')],'email':_0x231130['email']};}if(_0x231130[_0x0eb1('0x2c')]===_0x0eb1('0x30')){if(!_0x231130[_0x0eb1('0x72')])_0x231130[_0x0eb1('0x72')]=['101',_0x0eb1('0x73'),_0x0eb1('0x74'),_0x0eb1('0x75'),_0x0eb1('0x76'),_0x0eb1('0x77'),_0x0eb1('0x78'),_0x0eb1('0x79'),_0x0eb1('0x7a'),'108',_0x0eb1('0x7b'),_0x0eb1('0x7c'),'111',_0x0eb1('0x7d'),_0x0eb1('0x7e')];}_0x567939(_0x231130);}catch(_0x29cf7f){_0xcafb59(_0x29cf7f);}});}exports[_0x0eb1('0x7f')]=function(_0x7e850a,_0x3fcaef){if(_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x30'))throw new Error(_0x0eb1('0x80'));if(_0x7e850a[_0x0eb1('0x61')][_0x0eb1('0x2c')]===_0x0eb1('0x2e')&&_0x7e850a[_0x0eb1('0x2e')]['role']!==_0x0eb1('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x7e850a[_0x0eb1('0x61')]['role']===_0x0eb1('0x81')&&_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error(_0x0eb1('0x82'));}return licenseUtil[_0x0eb1('0x83')]([_0x7e850a[_0x0eb1('0x61')]])[_0x0eb1('0x16')](function(){return validateUser(_0x7e850a['body']);})[_0x0eb1('0x16')](function(_0x483055){return updateUser(_0x483055)[_0x0eb1('0x16')](function(_0xa8f8f6){if(_0xa8f8f6[_0x0eb1('0x2c')]==='admin'){_0xa8f8f6[_0x0eb1('0x84')]=_0x7e850a['user']['settingsEnabled'];delete _0xa8f8f6[_0x0eb1('0x85')];}return _0xa8f8f6;});})['then'](function(_0xef537e){return db[_0x0eb1('0x3d')]['create'](_0xef537e,{'include':[{'model':db[_0x0eb1('0x86')],'as':'VoiceMail'}]});})['then'](function(_0x388c38){if(_0x7e850a[_0x0eb1('0x61')][_0x0eb1('0x2c')]===_0x0eb1('0x2e'))return _0x388c38;if(_0x7e850a['user'][_0x0eb1('0x2c')]!==_0x0eb1('0x2e'))return _0x388c38;return db['UserProfileSection'][_0x0eb1('0x38')]({'where':{'name':_0x388c38[_0x0eb1('0x2c')]===_0x0eb1('0x30')?_0x0eb1('0x2f'):_0x0eb1('0x31'),'userProfileId':_0x7e850a[_0x0eb1('0x2e')][_0x0eb1('0x85')]},'raw':!![]})[_0x0eb1('0x16')](function(_0x290610){if(!_0x290610||_0x290610['autoAssociation']!=0x0)return _0x388c38;return db[_0x0eb1('0x3a')][_0x0eb1('0x7f')]({'name':_0x388c38['name'],'resourceId':_0x388c38['id'],'type':_0x290610['name'],'sectionId':_0x290610['id']},{})[_0x0eb1('0x16')](function(){return _0x388c38;});})[_0x0eb1('0x54')](function(_0x1d7401){logger[_0x0eb1('0x1d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d7401);throw _0x1d7401;});})[_0x0eb1('0x16')](respondWithResult(_0x3fcaef,0xc9))['catch'](handleError(_0x3fcaef,null));};exports[_0x0eb1('0x87')]=function(_0x245cc2,_0x5d126d){var _0xbbad5b=_0x245cc2[_0x0eb1('0x61')];var _0x4b9098=[];if(_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x30'))throw new Error('Unauthorized');if(_[_0x0eb1('0x88')](_0xbbad5b,[_0x0eb1('0x2c'),_0x0eb1('0x2e')])&&_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error(_0x0eb1('0x89'));}if(_['some'](_0xbbad5b,['role',_0x0eb1('0x81')])&&_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x0eb1('0x83')](_0xbbad5b)[_0x0eb1('0x16')](function(){return validateUser(_0xbbad5b[0x0]);})['then'](function(){for(var _0x47ca26=0x1;_0x47ca26<_0xbbad5b['length'];_0x47ca26++){var _0x27b8b1=_0xbbad5b[_0x47ca26-0x1][_0x0eb1('0x67')];if(!_0xbbad5b[_0x47ca26][_0x0eb1('0x67')])_0xbbad5b[_0x47ca26][_0x0eb1('0x67')]=_0x27b8b1+0x1;_0x4b9098[_0x0eb1('0x48')](validateUser(_0xbbad5b[_0x47ca26]));}return Promise[_0x0eb1('0x53')](_0x4b9098);})['then'](function(){_0x4b9098=[];for(var _0x403471=0x0;_0x403471<_0xbbad5b[_0x0eb1('0x4c')];_0x403471++){_0x4b9098[_0x0eb1('0x48')](updateUser(_0xbbad5b[_0x403471]));}return Promise[_0x0eb1('0x53')](_0x4b9098);})[_0x0eb1('0x16')](function(){_0x4b9098=_0xbbad5b[_0x0eb1('0x35')](function(_0xa22aba){return db[_0x0eb1('0x3d')][_0x0eb1('0x7f')](_0xa22aba,{'include':[{'model':db[_0x0eb1('0x86')],'as':'VoiceMail'}]})[_0x0eb1('0x16')](function(_0x411341){_0xa22aba['id']=_0x411341['id'];return _0xa22aba;});});return Promise[_0x0eb1('0x53')](_0x4b9098);})[_0x0eb1('0x16')](function(_0x143930){if(_0x245cc2[_0x0eb1('0x61')]['role']===_0x0eb1('0x2e'))return _0x143930;if(_0x245cc2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]!==_0x0eb1('0x2e'))return _0x143930;var _0x10b9ef=_[_0x0eb1('0x88')](_0x143930,function(_0x5ed47f){return _0x5ed47f[_0x0eb1('0x2c')]==='agent'||_0x5ed47f[_0x0eb1('0x2c')]==='telephone';});if(!_0x10b9ef)return _0x143930;return db[_0x0eb1('0x8a')][_0x0eb1('0x49')]({'where':{'name':{'$or':[_0x0eb1('0x2f'),_0x0eb1('0x31')]},'userProfileId':_0x245cc2[_0x0eb1('0x2e')]['userProfileId']},'raw':!![]})['then'](function(_0x13afcf){if(_['isEmpty'](_0x13afcf)||!_[_0x0eb1('0x88')](_0x13afcf,['autoAssociation',0x0]))return _0x143930;_0x4b9098=[];var _0x574629=_(_0x13afcf)[_0x0eb1('0x35')](function(_0x1c922){if(_0x1c922['autoAssociation']===0x1)return;return _0x1c922[_0x0eb1('0x39')]===_0x0eb1('0x2f')?_0x0eb1('0x30'):_0x0eb1('0x32');})['compact']()[_0x0eb1('0x36')]();for(var _0x50468f=0x0;_0x50468f<_0x143930['length'];_0x50468f++){if(!_[_0x0eb1('0x37')](_0x574629,_0x143930[_0x50468f][_0x0eb1('0x2c')]))return;var _0x271c7e=_0x143930[_0x50468f][_0x0eb1('0x2c')]===_0x0eb1('0x30')?'Agents':'Telephones';_0x4b9098[_0x0eb1('0x48')](db['UserProfileResource']['create']({'name':_0x143930[_0x50468f][_0x0eb1('0x39')],'resourceId':_0x143930[_0x50468f]['id'],'type':_0x271c7e,'sectionId':_[_0x0eb1('0x38')](_0x13afcf,[_0x0eb1('0x39'),_0x271c7e])['id']},{}));}return Promise[_0x0eb1('0x53')](_0x4b9098);});})[_0x0eb1('0x16')](respondWithResult(_0x5d126d,0xc9))[_0x0eb1('0x54')](handleError(_0x5d126d,null));};exports['changePassword']=function(_0x54cd6a,_0x2ac4d6){if(_0x54cd6a['body']['id']){delete _0x54cd6a[_0x0eb1('0x61')]['id'];}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x54cd6a['params']['id']}})[_0x0eb1('0x16')](function(_0x3e9310){if(!_0x3e9310)return null;if(_0x3e9310['id']===_0x54cd6a[_0x0eb1('0x2e')]['id']){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x8b')]||!_0x54cd6a[_0x0eb1('0x61')]['newPassword']){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x8e'));}if(!_0x3e9310[_0x0eb1('0x8f')](_0x54cd6a[_0x0eb1('0x61')]['oldPassword'])){throw new db[(_0x0eb1('0x8c'))]['ValidationError'](_0x0eb1('0x90'));}if(_0x54cd6a['body'][_0x0eb1('0x8b')]===_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))]['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x54cd6a[_0x0eb1('0x2e')][_0x0eb1('0x2c')]===_0x0eb1('0x81')){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x92'));}}else if(_0x54cd6a[_0x0eb1('0x2e')]['role']==='user'){if(!_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')]){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x92'));}if(_0x3e9310[_0x0eb1('0x2c')]!==_0x0eb1('0x30')){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x80'));}}else{throw new db['Sequelize'][(_0x0eb1('0x8d'))](_0x0eb1('0x80'));}return _0x3e9310;})[_0x0eb1('0x16')](handleEntityNotFound(_0x2ac4d6,null))[_0x0eb1('0x16')](function(_0x474262){return db[_0x0eb1('0x93')][_0x0eb1('0x94')]({'attributes':['id','securePassword','enforcePasswordHistory',_0x0eb1('0x95')]})[_0x0eb1('0x16')](function(_0x5881af){if(_0x5881af['securePassword'])authService[_0x0eb1('0x96')](_0x54cd6a[_0x0eb1('0x61')]['newPassword']);if(!_0x5881af['enforcePasswordHistory']||!_0x474262[_0x0eb1('0x97')])return _0x474262;authService[_0x0eb1('0x98')](_0x54cd6a[_0x0eb1('0x61')][_0x0eb1('0x91')],_0x474262[_0x0eb1('0x97')],_0x5881af[_0x0eb1('0x95')]);return _0x474262;})['then'](saveUpdates({'password':_0x54cd6a['body'][_0x0eb1('0x91')],'passwordResetAt':_0x54cd6a[_0x0eb1('0x2e')]['id']==_0x54cd6a[_0x0eb1('0x62')]['id']?moment():null,'previousPasswords':authService[_0x0eb1('0x99')](_0x54cd6a['body'][_0x0eb1('0x91')],_0x474262[_0x0eb1('0x97')])},null));})[_0x0eb1('0x16')](respondWithResult(_0x2ac4d6,null))[_0x0eb1('0x54')](handleError(_0x2ac4d6,null));};exports[_0x0eb1('0x9a')]=function(_0x2dc77e,_0x1b834e){var _0x28a9db=_0x2dc77e[_0x0eb1('0x61')]['channel'];return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x2dc77e[_0x0eb1('0x62')]['id']},'attributes':['id','name',_0x0eb1('0x2c'),_0x0eb1('0x9b'),'loginInPause','voicePause',_0x0eb1('0x9c')]})['then'](handleEntityNotFound(_0x1b834e,null))[_0x0eb1('0x16')](function(_0x20c75a){if(_0x20c75a){if(!utils['isValidChannel'](_0x28a9db)){throw new db[(_0x0eb1('0x8c'))]['ValidationError'](_0x0eb1('0x9d'));}return _0x20c75a['add'+_[_0x0eb1('0x9e')](_0x28a9db['toLowerCase']())+_0x0eb1('0x9f')](_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0x65')],{'penalty':_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0xa0')]||0x0})[_0x0eb1('0xa1')](function(_0xb9b7d6){for(var _0x58238a=0x0;_0x58238a<_0x2dc77e['body'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x58238a+=0x1){var _0x174665={'UserId':Number(_0x2dc77e[_0x0eb1('0x62')]['id'])};_0x174665[_['capitalize'](_0x28a9db[_0x0eb1('0xa2')]())+'QueueId']=Number(_0x2dc77e[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x58238a]);socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x28a9db['toLowerCase']())+_0x0eb1('0xa4'),_0x174665);}return _0xb9b7d6;})['then'](function(){if(_0x28a9db===_0x0eb1('0xa5')){return db[_0x0eb1('0xa6')][_0x0eb1('0x49')]({'where':{'id':_0x2dc77e['body']['ids']||[]},'raw':!![],'attributes':['id',_0x0eb1('0x39')]});}})[_0x0eb1('0x16')](function(_0x272420){var _0x34811e=_0x20c75a[_0x0eb1('0xa7')]({'plain':!![]});var _0x2fa9fa=[];if(_0x28a9db===_0x0eb1('0xa5')&&_0x34811e[_0x0eb1('0x2c')]==='agent'&&_0x34811e[_0x0eb1('0x9b')]){for(let _0x50d4c9=0x0;_0x50d4c9<_0x272420[_0x0eb1('0x4c')];_0x50d4c9+=0x1){_0x2fa9fa[_0x0eb1('0x48')]({'membername':_0x34811e[_0x0eb1('0x39')],'UserId':_0x34811e['id'],'queue_name':_0x272420[_0x50d4c9][_0x0eb1('0x39')],'VoiceQueueId':_0x272420[_0x50d4c9]['id'],'interface':_['isNil'](_0x34811e[_0x0eb1('0x9c')])?util['format'](_0x0eb1('0xa8'),_0x34811e['name']):_0x34811e[_0x0eb1('0x9c')],'paused':_0x34811e[_0x0eb1('0xa9')]||![],'penalty':_0x2dc77e['body']['penalty']||0x0});}return Promise['all'](_0x2fa9fa[_0x0eb1('0x35')](function(_0x6c71ad){return db[_0x0eb1('0xaa')][_0x0eb1('0xab')](_0x6c71ad);}));}return _0x20c75a;});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1b834e,null))[_0x0eb1('0x54')](handleError(_0x1b834e,null));};exports['removeQueues']=function(_0x36698e,_0x5b7c7a){var _0x4571cf,_0x422919;return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x36698e[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0x39'),'role']})['then'](handleEntityNotFound(_0x5b7c7a,null))[_0x0eb1('0x16')](function(_0x1c1258){if(_0x1c1258){_0x4571cf=_0x1c1258;if(!_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')]||!utils[_0x0eb1('0xad')](_0x36698e['query'][_0x0eb1('0xac')])){throw new db[(_0x0eb1('0x8c'))]['ValidationError']('Unknown\x20channel');}return _0x1c1258[_0x0eb1('0xae')+_[_0x0eb1('0x9e')](_0x36698e['query']['channel'][_0x0eb1('0xa2')]())+'Queues'](_0x36698e['query']['ids']);}})[_0x0eb1('0x16')](function(_0x2c3090){if(_[_0x0eb1('0xaf')](_0x36698e[_0x0eb1('0x43')]['ids'])){for(var _0x1f1954=0x0;_0x1f1954<_0x36698e[_0x0eb1('0x43')]['ids'][_0x0eb1('0x4c')];_0x1f1954+=0x1){_0x422919={'UserId':Number(_0x36698e['params']['id'])};_0x422919[_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')][_0x0eb1('0xa2')]())+_0x0eb1('0xb0')]=Number(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x1f1954]);socket['emit'](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')]['channel'][_0x0eb1('0xa2')]())+'Queue:remove',_0x422919);}}else{_0x422919={'UserId':Number(_0x36698e[_0x0eb1('0x62')]['id'])};_0x422919[_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')][_0x0eb1('0xa2')]())+_0x0eb1('0xb0')]=Number(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0x65')]);socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_[_0x0eb1('0x9e')](_0x36698e[_0x0eb1('0x43')]['channel']['toLowerCase']())+_0x0eb1('0xb1'),_0x422919);}return _0x2c3090;})[_0x0eb1('0x16')](function(){if(_0x36698e[_0x0eb1('0x43')][_0x0eb1('0xac')]===_0x0eb1('0xa5')){return db[_0x0eb1('0xaa')]['destroy']({'where':{'UserId':_0x36698e['params']['id'],'VoiceQueueId':_0x36698e[_0x0eb1('0x43')]['ids']},'individualHooks':!![]})[_0x0eb1('0x16')](function(){return _0x4571cf;});}return _0x4571cf;})[_0x0eb1('0x16')](respondWithStatusCode(_0x5b7c7a,null))[_0x0eb1('0x54')](handleError(_0x5b7c7a,null));};exports['addAvatar']=function(_0x1006bf,_0x4e4717){_0x1006bf['body'][_0x0eb1('0xb2')]=_0x1006bf[_0x0eb1('0xb3')][_0x0eb1('0xb4')];return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1006bf['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4e4717,null))[_0x0eb1('0x16')](saveUpdates(_0x1006bf[_0x0eb1('0x61')],null))[_0x0eb1('0x16')](respondWithResult(_0x4e4717,null))[_0x0eb1('0x54')](handleError(_0x4e4717,null));};exports[_0x0eb1('0xb5')]=function(_0x17bbe4,_0x1d1b47){var _0x122a0c=path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xb8'));return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x17bbe4[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0xb2')],'raw':!![]})[_0x0eb1('0x16')](handleEntityNotFound(_0x1d1b47,null))[_0x0eb1('0x16')](function(_0x2c988c){if(_0x2c988c){if(_[_0x0eb1('0x6a')](_0x2c988c[_0x0eb1('0xb2')])){return _0x1d1b47[_0x0eb1('0xb9')](_0x122a0c);}else{if(!fs[_0x0eb1('0xba')](path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xbb'),_0x2c988c['userpic']))){return _0x1d1b47[_0x0eb1('0xb9')](_0x122a0c);}return _0x1d1b47['download'](path[_0x0eb1('0xb6')](config[_0x0eb1('0xb7')],_0x0eb1('0xbb'),_0x2c988c[_0x0eb1('0xb2')]));}}})[_0x0eb1('0x54')](handleError(_0x1d1b47,null));};exports[_0x0eb1('0xbc')]=function(_0x392038,_0x477c83){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x392038[_0x0eb1('0x62')]['id']},'attributes':['id']})[_0x0eb1('0x16')](handleEntityNotFound(_0x477c83,null))[_0x0eb1('0x16')](function(_0x49c029){var _0x53b192=[];values=_0x49c029['dataValues'];_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4d'),_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x4f'),_0x49c029['dataValues']));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x52'),_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs('whatsapp',_0x49c029[_0x0eb1('0x4e')]));_0x53b192[_0x0eb1('0x48')](get_open_tabs('fax',_0x49c029['dataValues']));_0x53b192[_0x0eb1('0x48')](get_open_tabs(_0x0eb1('0x51'),_0x49c029[_0x0eb1('0x4e')]));return Promise[_0x0eb1('0x53')](_0x53b192);})['then'](function(_0x571602){if(_0x571602){var _0x100c22=_['map'](values['ChatOpenTabs'],function(_0x283a94){return{'channel':_0x0eb1('0xbd'),'id':_0x283a94['id'],'createdAt':_0x283a94[_0x0eb1('0xbe')]};});var _0x590637=_[_0x0eb1('0x35')](values[_0x0eb1('0xbf')],function(_0x3afb9e){return{'channel':'FAX','id':_0x3afb9e['id'],'createdAt':_0x3afb9e['createdAt']};});var _0x2f72bb=_[_0x0eb1('0x35')](values['OpenchannelOpenTabs'],function(_0x6a257c){return{'channel':_0x0eb1('0xc0'),'id':_0x6a257c['id'],'createdAt':_0x6a257c['createdAt']};});var _0x346162=_[_0x0eb1('0x35')](values[_0x0eb1('0xc1')],function(_0x7f60e9){return{'channel':_0x0eb1('0xc2'),'id':_0x7f60e9['id'],'createdAt':_0x7f60e9[_0x0eb1('0xbe')]};});var _0x1cf0f2=_[_0x0eb1('0x35')](values[_0x0eb1('0xc3')],function(_0x231fe6){return{'channel':_0x0eb1('0xc4'),'id':_0x231fe6['id'],'createdAt':_0x231fe6[_0x0eb1('0xbe')]};});var _0x1815e0=_['map'](values[_0x0eb1('0xc5')],function(_0x3a2942){return{'channel':_0x0eb1('0xc6'),'id':_0x3a2942['id'],'createdAt':_0x3a2942['createdAt']};});var _0x36ca29=_['concat'](_0x100c22,_0x590637,_0x2f72bb,_0x346162,_0x1cf0f2,_0x1815e0);var _0x44d730={'count':_0x36ca29[_0x0eb1('0x4c')],'rows':_0x36ca29};return _0x44d730;}else return null;})[_0x0eb1('0x16')](respondWithResult(_0x477c83,null))[_0x0eb1('0x54')](handleError(_0x477c83,null));};exports[_0x0eb1('0xc7')]=function(_0x41eea1,_0x1ece72){var _0x122d2d={};var _0x4bbeac={};var _0x3dacf1;var _0x187925;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x41eea1[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1ece72,null))[_0x0eb1('0x16')](function(_0x379f60){if(_0x379f60){_0x3dacf1=_0x379f60;_0x4bbeac[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xc8')][_0x0eb1('0x59')]);_0x4bbeac['query']=_[_0x0eb1('0x58')](_0x41eea1[_0x0eb1('0x43')]);_0x4bbeac['filters']=_['intersection'](_0x4bbeac[_0x0eb1('0x56')],_0x4bbeac[_0x0eb1('0x43')]);_0x122d2d[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x4bbeac[_0x0eb1('0x56')],qs['fields'](_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x122d2d[_0x0eb1('0x47')]=_0x122d2d[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x122d2d[_0x0eb1('0x47')]:_0x4bbeac[_0x0eb1('0x56')];_0x122d2d['order']=qs['sort'](_0x41eea1[_0x0eb1('0x43')]['sort']);_0x122d2d[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x41eea1[_0x0eb1('0x43')],_0x4bbeac[_0x0eb1('0xc9')]));if(_0x41eea1['query'][_0x0eb1('0x33')]){_0x122d2d[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x122d2d[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x122d2d[_0x0eb1('0x47')],function(_0x13da27){var _0x2c2e1a={};_0x2c2e1a[_0x13da27]={'$like':'%'+_0x41eea1['query'][_0x0eb1('0x33')]+'%'};return _0x2c2e1a;})});}_0x122d2d=_[_0x0eb1('0x5e')]({},_0x122d2d,_0x41eea1[_0x0eb1('0x5f')]);return _0x3dacf1['getContacts'](_0x122d2d);}})[_0x0eb1('0x16')](function(_0x483e65){if(_0x483e65){_0x187925=_0x483e65['length'];if(_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0x5c'))){_0x122d2d[_0x0eb1('0x44')]=[{'model':db[_0x0eb1('0xcc')],'as':_0x0eb1('0xcd'),'required':![]},{'model':db[_0x0eb1('0xce')],'as':_0x0eb1('0xcf'),'attributes':['id',_0x0eb1('0x39'),'color'],'where':_0x41eea1[_0x0eb1('0x43')]['tag']?{'id':_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xd0')]}:undefined,'required':_0x41eea1['query'][_0x0eb1('0xd0')]?!![]:![]}];}if(!_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0x122d2d['limit']=qs[_0x0eb1('0x26')](_0x41eea1[_0x0eb1('0x43')]['limit']);_0x122d2d[_0x0eb1('0x24')]=qs['offset'](_0x41eea1[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x3dacf1[_0x0eb1('0xc7')](_0x122d2d);}})[_0x0eb1('0x16')](function(_0x37b412){if(_0x37b412){return _0x37b412?{'count':_0x187925,'rows':_0x37b412}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x1ece72,null))[_0x0eb1('0x54')](handleError(_0x1ece72,null));};exports['getQueues']=function(_0x265b8e,_0xf2eb7e){var _0x2fbb7e;var _0x426549={};var _0x5282d8;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x265b8e[_0x0eb1('0x62')]['id']},'attributes':['id','name','role']})['then'](handleEntityNotFound(_0xf2eb7e,null))['then'](function(_0x446f3e){if(!utils[_0x0eb1('0xad')](_0x265b8e[_0x0eb1('0x43')]['channel'])){throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0x9d'));}_0x2fbb7e=_0x446f3e;var _0x22e887={};_0x22e887[_0x0eb1('0x56')]=_['keys'](db[_['capitalize'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x59')]);_0x22e887['query']=_[_0x0eb1('0x58')](_0x265b8e['query']);_0x22e887[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x22e887['model'],_0x22e887[_0x0eb1('0x43')]);_0x426549[_0x0eb1('0x47')]=_['intersection'](_0x22e887[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x426549[_0x0eb1('0x47')]=_0x426549[_0x0eb1('0x47')]['length']?_0x426549[_0x0eb1('0x47')]:_0x22e887['model'];_0x426549[_0x0eb1('0xd2')]=qs['sort'](_0x265b8e['query'][_0x0eb1('0xd3')]);_0x426549[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x265b8e[_0x0eb1('0x43')],_0x22e887['filters']));if(_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x426549[_0x0eb1('0x42')]=_['merge'](_0x426549[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x426549[_0x0eb1('0x47')],function(_0x19260a){var _0x10fbb1={};_0x10fbb1[_0x19260a]={'$like':'%'+_0x265b8e[_0x0eb1('0x43')]['filter']+'%'};return _0x10fbb1;})});}_0x426549=_[_0x0eb1('0x5e')]({},_0x426549,_0x265b8e[_0x0eb1('0x5f')]);switch(_0x2fbb7e['role']){case'admin':return db[_[_0x0eb1('0x9e')](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x49')](_0x426549);case _0x0eb1('0x2e'):case _0x0eb1('0x30'):return _0x2fbb7e[_0x0eb1('0xa7')+_['capitalize'](_0x265b8e[_0x0eb1('0x43')]['channel'])+_0x0eb1('0x9f')](_0x426549);default:throw new db['Sequelize'][(_0x0eb1('0x8d'))](_0x0eb1('0xd4'));}})[_0x0eb1('0x16')](function(_0x40df0f){_0x5282d8=_0x40df0f['length'];if(!_0x265b8e[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x426549[_0x0eb1('0x26')]=qs['limit'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x426549[_0x0eb1('0x24')]=qs['offset'](_0x265b8e[_0x0eb1('0x43')][_0x0eb1('0x24')]);}switch(_0x2fbb7e[_0x0eb1('0x2c')]){case _0x0eb1('0x81'):return db[_['capitalize'](_0x265b8e['query'][_0x0eb1('0xac')])+_0x0eb1('0xd1')][_0x0eb1('0x49')](_0x426549);case _0x0eb1('0x2e'):case _0x0eb1('0x30'):return _0x2fbb7e['get'+_[_0x0eb1('0x9e')](_0x265b8e['query']['channel'])+_0x0eb1('0x9f')](_0x426549);}})[_0x0eb1('0x16')](function(_0x2f4ec7){return{'count':_0x5282d8,'rows':_0x2f4ec7};})['then'](respondWithResult(_0xf2eb7e,null))['catch'](handleError(_0xf2eb7e,null));};exports[_0x0eb1('0xd6')]=function(_0x1abc21,_0xd2c1fb){var _0xfbf11c={};var _0x5c3753={};var _0x356edf;var _0x5a7896;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x1abc21['params']['id']}})['then'](handleEntityNotFound(_0xd2c1fb,null))['then'](function(_0x1ec4ad){if(_0x1ec4ad){_0x356edf=_0x1ec4ad;_0x5c3753[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['UserVoiceQueueRt'][_0x0eb1('0x59')]);_0x5c3753['query']=_[_0x0eb1('0x58')](_0x1abc21[_0x0eb1('0x43')]);_0x5c3753[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x5c3753[_0x0eb1('0x56')],_0x5c3753[_0x0eb1('0x43')]);_0xfbf11c[_0x0eb1('0x47')]=_['intersection'](_0x5c3753['model'],qs['fields'](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0xfbf11c[_0x0eb1('0x47')]=_0xfbf11c[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0xfbf11c[_0x0eb1('0x47')]:_0x5c3753[_0x0eb1('0x56')];_0xfbf11c[_0x0eb1('0xd2')]=qs['sort'](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0xfbf11c['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x1abc21[_0x0eb1('0x43')],_0x5c3753['filters']));if(_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0xfbf11c[_0x0eb1('0x42')]=_['merge'](_0xfbf11c[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0xfbf11c[_0x0eb1('0x47')],function(_0x2c60a0){var _0x475c99={};_0x475c99[_0x2c60a0]={'$like':'%'+_0x1abc21[_0x0eb1('0x43')]['filter']+'%'};return _0x475c99;})});}_0xfbf11c=_[_0x0eb1('0x5e')]({},_0xfbf11c,_0x1abc21[_0x0eb1('0x5f')]);return _0x356edf[_0x0eb1('0xd6')](_0xfbf11c);}})[_0x0eb1('0x16')](function(_0x29356a){if(_0x29356a){_0x5a7896=_0x29356a[_0x0eb1('0x4c')];if(!_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0xfbf11c['limit']=qs[_0x0eb1('0x26')](_0x1abc21[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0xfbf11c['offset']=qs['offset'](_0x1abc21[_0x0eb1('0x43')]['offset']);}return _0x356edf[_0x0eb1('0xd6')](_0xfbf11c);}})['then'](function(_0x1d204c){if(_0x1d204c){return _0x1d204c?{'count':_0x5a7896,'rows':_0x1d204c}:null;}})[_0x0eb1('0x16')](respondWithResult(_0xd2c1fb,null))['catch'](handleError(_0xd2c1fb,null));};exports[_0x0eb1('0xd7')]=function(_0x5cc47c,_0x28b7e8){var _0x79adc7={};var _0x37683e={};var _0x1e588b;var _0x4ae23b;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5cc47c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x28b7e8,null))[_0x0eb1('0x16')](function(_0x3813e9){if(_0x3813e9){_0x1e588b=_0x3813e9;_0x37683e[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xd8')][_0x0eb1('0x59')]);_0x37683e[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x5cc47c['query']);_0x37683e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x37683e[_0x0eb1('0x56')],_0x37683e[_0x0eb1('0x43')]);_0x79adc7[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x37683e[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x79adc7['attributes']=_0x79adc7[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x79adc7[_0x0eb1('0x47')]:_0x37683e['model'];_0x79adc7['order']=qs[_0x0eb1('0xd3')](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x79adc7[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x5cc47c['query'],_0x37683e['filters']));if(_0x5cc47c[_0x0eb1('0x43')]['filter']){_0x79adc7[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x79adc7['where'],{'$or':_[_0x0eb1('0x35')](_0x79adc7[_0x0eb1('0x47')],function(_0x1f609a){var _0x2c85b2={};_0x2c85b2[_0x1f609a]={'$like':'%'+_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2c85b2;})});}_0x79adc7=_[_0x0eb1('0x5e')]({},_0x79adc7,_0x5cc47c[_0x0eb1('0x5f')]);return _0x1e588b[_0x0eb1('0xd7')](_0x79adc7);}})[_0x0eb1('0x16')](function(_0x5cb73b){if(_0x5cb73b){_0x4ae23b=_0x5cb73b[_0x0eb1('0x4c')];if(!_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x79adc7['limit']=qs['limit'](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x79adc7['offset']=qs['offset'](_0x5cc47c[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x1e588b['getGroups'](_0x79adc7);}})[_0x0eb1('0x16')](function(_0x56c4f0){if(_0x56c4f0){return _0x56c4f0?{'count':_0x4ae23b,'rows':_0x56c4f0}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x28b7e8,null))[_0x0eb1('0x54')](handleError(_0x28b7e8,null));};exports['getRecordings']=function(_0x1b5faf,_0x215d30){var _0x2cf09d={'raw':!![],'where':{}};var _0x4cefc4={};var _0x45da76={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x1b5faf['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x215d30,null))[_0x0eb1('0x16')](function(_0x5d6479){if(_0x5d6479){_0x4cefc4['model']=_[_0x0eb1('0x58')](db[_0x0eb1('0xd9')][_0x0eb1('0x59')]);_0x4cefc4[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x1b5faf['query']);_0x4cefc4['filters']=_[_0x0eb1('0x5a')](_0x4cefc4[_0x0eb1('0x56')],_0x4cefc4[_0x0eb1('0x43')]);_0x2cf09d[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x4cefc4[_0x0eb1('0x56')],qs['fields'](_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x2cf09d['attributes']=_0x2cf09d[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x2cf09d[_0x0eb1('0x47')]:_0x4cefc4[_0x0eb1('0x56')];if(!_0x1b5faf['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2cf09d[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x1b5faf[_0x0eb1('0x43')]['limit']);_0x2cf09d[_0x0eb1('0x24')]=qs['offset'](_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0x2cf09d[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x1b5faf[_0x0eb1('0x43')]['sort']);_0x2cf09d[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x1b5faf[_0x0eb1('0x43')],_0x4cefc4[_0x0eb1('0xc9')]));_0x2cf09d[_0x0eb1('0x42')][_0x0eb1('0xda')]=_0x5d6479['id'];if(_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x2cf09d[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x2cf09d[_0x0eb1('0x42')],{'$or':_['map'](_0x2cf09d[_0x0eb1('0x47')],function(_0x7c6eef){var _0x20e927={};_0x20e927[_0x7c6eef]={'$like':'%'+_0x1b5faf[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x20e927;})});}_0x2cf09d=_[_0x0eb1('0x5e')]({},_0x2cf09d,_0x1b5faf['options']);return db[_0x0eb1('0xd9')][_0x0eb1('0x27')]({'where':_0x2cf09d['where']})[_0x0eb1('0x16')](function(_0x593031){_0x45da76[_0x0eb1('0x27')]=_0x593031;if(_0x1b5faf[_0x0eb1('0x43')]['includeAll']){_0x2cf09d['include']=[{'all':!![]}];}return db[_0x0eb1('0xd9')][_0x0eb1('0x49')](_0x2cf09d);})[_0x0eb1('0x16')](function(_0x509d1b){_0x45da76['rows']=_0x509d1b;return _0x45da76;});}})['then'](respondWithFilteredResult(_0x215d30,_0x2cf09d))[_0x0eb1('0x54')](handleError(_0x215d30,null));};exports['getScreenRecordings']=function(_0x2a4995,_0x2c4854){var _0x219ce9={'raw':!![],'where':{}};var _0x581d66={};var _0x30162a={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x2a4995[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2c4854,null))['then'](function(_0x4c7b95){if(_0x4c7b95){_0x581d66[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['ScreenRecording'][_0x0eb1('0x59')]);_0x581d66[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x2a4995['query']);_0x581d66[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x581d66[_0x0eb1('0x56')],_0x581d66[_0x0eb1('0x43')]);_0x219ce9[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x581d66[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x2a4995['query'][_0x0eb1('0x5b')]));_0x219ce9[_0x0eb1('0x47')]=_0x219ce9[_0x0eb1('0x47')]['length']?_0x219ce9[_0x0eb1('0x47')]:_0x581d66[_0x0eb1('0x56')];if(!_0x2a4995['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x219ce9[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x2a4995[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x219ce9['offset']=qs[_0x0eb1('0x24')](_0x2a4995[_0x0eb1('0x43')]['offset']);}_0x219ce9[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x2a4995['query'][_0x0eb1('0xd3')]);_0x219ce9[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x2a4995['query'],_0x581d66[_0x0eb1('0xc9')]));_0x219ce9[_0x0eb1('0x42')]['UserId']=_0x4c7b95['id'];if(_0x2a4995['query']['filter']){_0x219ce9['where']=_[_0x0eb1('0x5e')](_0x219ce9[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x219ce9[_0x0eb1('0x47')],function(_0x46ef06){var _0x35e73b={};_0x35e73b[_0x46ef06]={'$like':'%'+_0x2a4995[_0x0eb1('0x43')]['filter']+'%'};return _0x35e73b;})});}_0x219ce9=_['merge']({},_0x219ce9,_0x2a4995[_0x0eb1('0x5f')]);return db[_0x0eb1('0xdb')][_0x0eb1('0x27')]({'where':_0x219ce9[_0x0eb1('0x42')]})[_0x0eb1('0x16')](function(_0x37f3bb){_0x30162a[_0x0eb1('0x27')]=_0x37f3bb;if(_0x2a4995[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x219ce9['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x0eb1('0x49')](_0x219ce9);})[_0x0eb1('0x16')](function(_0x4d5d15){_0x30162a['rows']=_0x4d5d15;return _0x30162a;});}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x2c4854,_0x219ce9))[_0x0eb1('0x54')](handleError(_0x2c4854,null));};exports[_0x0eb1('0xdc')]=function(_0x902bbd,_0x57e0f5){var _0x9a0c15={};var _0x5a454c={};var _0x818847;var _0x20bb7f;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x902bbd[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x57e0f5,null))[_0x0eb1('0x16')](function(_0x3e7482){if(_0x3e7482){_0x818847=_0x3e7482;_0x5a454c['model']=_['keys'](db[_0x0eb1('0xdd')][_0x0eb1('0x59')]);_0x5a454c[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x902bbd['query']);_0x5a454c[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x5a454c[_0x0eb1('0x56')],_0x5a454c['query']);_0x9a0c15[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x5a454c[_0x0eb1('0x56')],qs['fields'](_0x902bbd[_0x0eb1('0x43')]['fields']));_0x9a0c15[_0x0eb1('0x47')]=_0x9a0c15[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x9a0c15[_0x0eb1('0x47')]:_0x5a454c[_0x0eb1('0x56')];_0x9a0c15[_0x0eb1('0xd2')]=qs['sort'](_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x9a0c15['where']=qs[_0x0eb1('0xc9')](_['pick'](_0x902bbd[_0x0eb1('0x43')],_0x5a454c[_0x0eb1('0xc9')]));if(_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x9a0c15[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x9a0c15[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x9a0c15['attributes'],function(_0x5896c4){var _0x5c29d1={};_0x5c29d1[_0x5896c4]={'$like':'%'+_0x902bbd['query']['filter']+'%'};return _0x5c29d1;})});}_0x9a0c15=_[_0x0eb1('0x5e')]({},_0x9a0c15,_0x902bbd[_0x0eb1('0x5f')]);return _0x818847[_0x0eb1('0xdc')](_0x9a0c15);}})[_0x0eb1('0x16')](function(_0x41b217){if(_0x41b217){_0x20bb7f=_0x41b217[_0x0eb1('0x4c')];if(!_0x902bbd['query'][_0x0eb1('0xcb')]('nolimit')){_0x9a0c15[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x902bbd['query'][_0x0eb1('0x26')]);_0x9a0c15['offset']=qs[_0x0eb1('0x24')](_0x902bbd[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x818847[_0x0eb1('0xdc')](_0x9a0c15);}})['then'](function(_0x18b076){if(_0x18b076){return _0x18b076?{'count':_0x20bb7f,'rows':_0x18b076}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x57e0f5,null))[_0x0eb1('0x54')](handleError(_0x57e0f5,null));};exports[_0x0eb1('0xde')]=function(_0x240b94,_0x20293b){var _0x1ac36e={};var _0x546863={};var _0x41bf1d;var _0x1ca263;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x240b94[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x20293b,null))[_0x0eb1('0x16')](function(_0x1a48f0){if(_0x1a48f0){_0x41bf1d=_0x1a48f0;_0x546863[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0xdf')][_0x0eb1('0x59')]);_0x546863[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x240b94[_0x0eb1('0x43')]);_0x546863[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x546863[_0x0eb1('0x56')],_0x546863['query']);_0x1ac36e[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x546863[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x240b94[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1ac36e[_0x0eb1('0x47')]=_0x1ac36e[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1ac36e[_0x0eb1('0x47')]:_0x546863['model'];_0x1ac36e[_0x0eb1('0xd2')]=qs['sort'](_0x240b94['query'][_0x0eb1('0xd3')]);_0x1ac36e['where']=qs['filters'](_['pick'](_0x240b94[_0x0eb1('0x43')],_0x546863[_0x0eb1('0xc9')]));if(_0x240b94[_0x0eb1('0x43')]['filter']){_0x1ac36e[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1ac36e['where'],{'$or':_[_0x0eb1('0x35')](_0x1ac36e['attributes'],function(_0x5804fd){var _0x4e0006={};_0x4e0006[_0x5804fd]={'$like':'%'+_0x240b94['query'][_0x0eb1('0x33')]+'%'};return _0x4e0006;})});}_0x1ac36e=_[_0x0eb1('0x5e')]({},_0x1ac36e,_0x240b94[_0x0eb1('0x5f')]);return _0x41bf1d[_0x0eb1('0xde')](_0x1ac36e);}})[_0x0eb1('0x16')](function(_0x41bf5b){if(_0x41bf5b){_0x1ca263=_0x41bf5b[_0x0eb1('0x4c')];if(!_0x240b94[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1ac36e['limit']=qs[_0x0eb1('0x26')](_0x240b94['query']['limit']);_0x1ac36e[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x240b94[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x41bf1d[_0x0eb1('0xde')](_0x1ac36e);}})[_0x0eb1('0x16')](function(_0x22ac45){if(_0x22ac45){return _0x22ac45?{'count':_0x1ca263,'rows':_0x22ac45}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x20293b,null))[_0x0eb1('0x54')](handleError(_0x20293b,null));};exports[_0x0eb1('0xe0')]=function(_0x3a2657,_0x57eec8){var _0x44c1bf={'raw':!![],'where':{}};var _0x4ed85a={};var _0x4f20ad={'count':0x0,'rows':[]};return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x3a2657[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x57eec8,null))[_0x0eb1('0x16')](function(_0xfe854e){if(_0xfe854e){_0x4ed85a[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['MailInteraction'][_0x0eb1('0x59')]);_0x4ed85a[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x3a2657[_0x0eb1('0x43')]);_0x4ed85a['filters']=_[_0x0eb1('0x5a')](_0x4ed85a['model'],_0x4ed85a[_0x0eb1('0x43')]);_0x44c1bf['attributes']=_['intersection'](_0x4ed85a[_0x0eb1('0x56')],qs['fields'](_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x44c1bf[_0x0eb1('0x47')]=_0x44c1bf[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x44c1bf['attributes']:_0x4ed85a[_0x0eb1('0x56')];if(!_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x44c1bf[_0x0eb1('0x26')]=qs['limit'](_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x44c1bf[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x3a2657['query']['offset']);}_0x44c1bf[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x3a2657['query'][_0x0eb1('0xd3')]);_0x44c1bf[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x3a2657[_0x0eb1('0x43')],_0x4ed85a[_0x0eb1('0xc9')]));_0x44c1bf[_0x0eb1('0x42')]['UserId']=_0xfe854e['id'];if(_0x3a2657['query'][_0x0eb1('0x33')]){_0x44c1bf[_0x0eb1('0x42')]=_['merge'](_0x44c1bf[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x44c1bf[_0x0eb1('0x47')],function(_0x80d24d){var _0x2d4f45={};_0x2d4f45[_0x80d24d]={'$like':'%'+_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2d4f45;})});}_0x44c1bf=_[_0x0eb1('0x5e')]({},_0x44c1bf,_0x3a2657[_0x0eb1('0x5f')]);return db[_0x0eb1('0xe1')][_0x0eb1('0x27')]({'where':_0x44c1bf['where']})['then'](function(_0x2ad645){_0x4f20ad['count']=_0x2ad645;if(_0x3a2657[_0x0eb1('0x43')][_0x0eb1('0x5c')]){_0x44c1bf['include']=[{'all':!![]}];}return db['MailInteraction']['findAll'](_0x44c1bf);})[_0x0eb1('0x16')](function(_0x16b59f){_0x4f20ad[_0x0eb1('0x4b')]=_0x16b59f;return _0x4f20ad;});}})[_0x0eb1('0x16')](respondWithFilteredResult(_0x57eec8,_0x44c1bf))[_0x0eb1('0x54')](handleError(_0x57eec8,null));};exports[_0x0eb1('0xe2')]=function(_0x392e3e,_0x53ed43){var _0x2f4f96={};var _0x541f6c={};var _0x558c74;var _0x3e5edc;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x392e3e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x53ed43,null))[_0x0eb1('0x16')](function(_0x42d997){if(_0x42d997){_0x558c74=_0x42d997;_0x541f6c[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xe3')][_0x0eb1('0x59')]);_0x541f6c[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x392e3e[_0x0eb1('0x43')]);_0x541f6c['filters']=_[_0x0eb1('0x5a')](_0x541f6c[_0x0eb1('0x56')],_0x541f6c['query']);_0x2f4f96[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x541f6c[_0x0eb1('0x56')],qs['fields'](_0x392e3e[_0x0eb1('0x43')]['fields']));_0x2f4f96[_0x0eb1('0x47')]=_0x2f4f96['attributes']['length']?_0x2f4f96[_0x0eb1('0x47')]:_0x541f6c[_0x0eb1('0x56')];_0x2f4f96[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x2f4f96[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x392e3e[_0x0eb1('0x43')],_0x541f6c[_0x0eb1('0xc9')]));if(_0x392e3e['query'][_0x0eb1('0x33')]){_0x2f4f96['where']=_[_0x0eb1('0x5e')](_0x2f4f96[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x2f4f96[_0x0eb1('0x47')],function(_0x482576){var _0x478a14={};_0x478a14[_0x482576]={'$like':'%'+_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x478a14;})});}_0x2f4f96=_['merge']({},_0x2f4f96,_0x392e3e[_0x0eb1('0x5f')]);return _0x558c74[_0x0eb1('0xe2')](_0x2f4f96);}})[_0x0eb1('0x16')](function(_0x3461ac){if(_0x3461ac){_0x3e5edc=_0x3461ac[_0x0eb1('0x4c')];if(!_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2f4f96[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2f4f96[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x392e3e[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x558c74[_0x0eb1('0xe2')](_0x2f4f96);}})['then'](function(_0x563d70){if(_0x563d70){return _0x563d70?{'count':_0x3e5edc,'rows':_0x563d70}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x53ed43,null))['catch'](handleError(_0x53ed43,null));};exports[_0x0eb1('0xe4')]=function(_0x325849,_0x58470c){var _0x2c8418={};var _0x29801e={};var _0x17b84e;var _0x5356da;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x325849[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x58470c,null))[_0x0eb1('0x16')](function(_0xf5f018){if(_0xf5f018){_0x17b84e=_0xf5f018;_0x29801e[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xe5')]['rawAttributes']);_0x29801e['query']=_[_0x0eb1('0x58')](_0x325849[_0x0eb1('0x43')]);_0x29801e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x29801e[_0x0eb1('0x56')],_0x29801e[_0x0eb1('0x43')]);_0x2c8418['attributes']=_['intersection'](_0x29801e[_0x0eb1('0x56')],qs['fields'](_0x325849['query'][_0x0eb1('0x5b')]));_0x2c8418[_0x0eb1('0x47')]=_0x2c8418[_0x0eb1('0x47')]['length']?_0x2c8418[_0x0eb1('0x47')]:_0x29801e[_0x0eb1('0x56')];_0x2c8418['order']=qs['sort'](_0x325849['query'][_0x0eb1('0xd3')]);_0x2c8418[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x325849[_0x0eb1('0x43')],_0x29801e['filters']));if(_0x325849['query'][_0x0eb1('0x33')]){_0x2c8418[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x2c8418[_0x0eb1('0x42')],{'$or':_['map'](_0x2c8418[_0x0eb1('0x47')],function(_0x4b231d){var _0x4f7882={};_0x4f7882[_0x4b231d]={'$like':'%'+_0x325849[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x4f7882;})});}_0x2c8418=_['merge']({},_0x2c8418,_0x325849[_0x0eb1('0x5f')]);return _0x17b84e['getFaxInteractions'](_0x2c8418);}})[_0x0eb1('0x16')](function(_0x18a7a7){if(_0x18a7a7){_0x5356da=_0x18a7a7[_0x0eb1('0x4c')];if(!_0x325849[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x2c8418[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x325849[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2c8418[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x325849['query'][_0x0eb1('0x24')]);}return _0x17b84e[_0x0eb1('0xe4')](_0x2c8418);}})[_0x0eb1('0x16')](function(_0x359215){if(_0x359215){return _0x359215?{'count':_0x5356da,'rows':_0x359215}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x58470c,null))['catch'](handleError(_0x58470c,null));};exports['getWhatsappInteractions']=function(_0x45d2ef,_0x363192){var _0x1dcb84={};var _0x302087={};var _0x19bc42;var _0x17bae0;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x45d2ef['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x363192,null))[_0x0eb1('0x16')](function(_0x3a5dc3){if(_0x3a5dc3){_0x19bc42=_0x3a5dc3;_0x302087[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['WhatsappInteraction'][_0x0eb1('0x59')]);_0x302087[_0x0eb1('0x43')]=_['keys'](_0x45d2ef['query']);_0x302087[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x302087[_0x0eb1('0x56')],_0x302087['query']);_0x1dcb84[_0x0eb1('0x47')]=_['intersection'](_0x302087[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1dcb84[_0x0eb1('0x47')]=_0x1dcb84['attributes']['length']?_0x1dcb84[_0x0eb1('0x47')]:_0x302087[_0x0eb1('0x56')];_0x1dcb84[_0x0eb1('0xd2')]=qs['sort'](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x1dcb84[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x45d2ef['query'],_0x302087[_0x0eb1('0xc9')]));if(_0x45d2ef[_0x0eb1('0x43')]['filter']){_0x1dcb84[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1dcb84[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1dcb84[_0x0eb1('0x47')],function(_0x71994){var _0x4d9f11={};_0x4d9f11[_0x71994]={'$like':'%'+_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x4d9f11;})});}_0x1dcb84=_['merge']({},_0x1dcb84,_0x45d2ef[_0x0eb1('0x5f')]);return _0x19bc42[_0x0eb1('0xe6')](_0x1dcb84);}})[_0x0eb1('0x16')](function(_0xadf54f){if(_0xadf54f){_0x17bae0=_0xadf54f[_0x0eb1('0x4c')];if(!_0x45d2ef['query'][_0x0eb1('0xcb')]('nolimit')){_0x1dcb84['limit']=qs[_0x0eb1('0x26')](_0x45d2ef[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x1dcb84['offset']=qs[_0x0eb1('0x24')](_0x45d2ef[_0x0eb1('0x43')]['offset']);}return _0x19bc42[_0x0eb1('0xe6')](_0x1dcb84);}})['then'](function(_0x598259){if(_0x598259){return _0x598259?{'count':_0x17bae0,'rows':_0x598259}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x363192,null))[_0x0eb1('0x54')](handleError(_0x363192,null));};exports[_0x0eb1('0xe7')]=function(_0xb3a3cc,_0xe71ad8,_0x4193f5){var _0xd2c6ae;var _0x24db89;var _0x92a65c;var _0x2fefb3=!_[_0x0eb1('0x6a')](_0xb3a3cc[_0x0eb1('0x62')]['id'])?_0xb3a3cc[_0x0eb1('0x62')]['id']:!_['isNil'](_0xb3a3cc['user']['id'])?_0xb3a3cc['user']['id']:null;return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x2fefb3,'role':{'$or':['admin',_0x0eb1('0x2e'),'agent']}},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0xe8'),_0x0eb1('0xe9'),_0x0eb1('0x2c'),_0x0eb1('0x67'),_0x0eb1('0xea')]})['then'](function(_0x20b9a1){if(_0x20b9a1){if(_0x20b9a1['role']===_0x0eb1('0x30')){_0xd2c6ae=_0x20b9a1;if(_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0x9c')]){_0x92a65c=util['format']('LOCAL/%s@from-sip/n',_0xd2c6ae[_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0x9c')]]);}else if(_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xeb')]){_0x92a65c=util[_0x0eb1('0xec')](_0x0eb1('0xa8'),_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xeb')]);}else{_0x92a65c=util['format'](_0x0eb1('0xa8'),_0xd2c6ae['name']);}socket['to'](util['format'](_0x0eb1('0xed'),_0xd2c6ae[_0x0eb1('0x39')]))[_0x0eb1('0xa3')]('user:forcelogout',{'user':{'id':_0xd2c6ae['id'],'name':_0xd2c6ae[_0x0eb1('0x39')]},'ip':_0xb3a3cc[_0x0eb1('0xee')][_0x0eb1('0xef')]||_0xb3a3cc[_0x0eb1('0xf0')]['remoteAddress']||_0xb3a3cc[_0x0eb1('0xf1')][_0x0eb1('0xf2')]||_0xb3a3cc[_0x0eb1('0xf0')]['socket'][_0x0eb1('0xf2')]});return db[_0x0eb1('0xaa')]['destroy']({'where':{'membername':_0xd2c6ae[_0x0eb1('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0x0eb1('0x8c'))][(_0x0eb1('0x8d'))](_0x0eb1('0xf3'));}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return _0xd2c6ae['getVoiceQueues']({'raw':!![]});}})[_0x0eb1('0x16')](function(_0x110c44){if(_0xd2c6ae){if(_0x110c44){_0x24db89=_0x110c44;if(_0x24db89[_0x0eb1('0x4c')]){var _0x2709b5=_0x24db89[_0x0eb1('0x35')](function(_0x3d10df){var _0x26c739={'membername':_0xd2c6ae[_0x0eb1('0x39')],'UserId':_0xd2c6ae['id'],'queue_name':_0x3d10df['name'],'VoiceQueueId':_0x3d10df['id'],'interface':_0x92a65c,'paused':_0xd2c6ae[_0x0eb1('0xea')]||![],'penalty':_0x3d10df[_0x0eb1('0xf4')]||0x0};return db[_0x0eb1('0xaa')][_0x0eb1('0xab')](_0x26c739);});return Promise['all'](_0x2709b5);}}}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return db['MemberReport'][_0x0eb1('0x49')]({'where':{'membername':_0xd2c6ae[_0x0eb1('0x39')],'exitAt':null}});}})['then'](function(_0x6a3405){if(_0xd2c6ae){var _0x3689bf=[];_0x6a3405[_0x0eb1('0xf5')](function(_0x31d0cf){_0x3689bf[_0x0eb1('0x48')](_0x31d0cf['update']({'exitAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))}));});return Promise[_0x0eb1('0x53')](_0x3689bf);}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){var _0x5aafb7=[];var _0x3e7bcd=[];var _0x1701df=utils['getChannels']();var _0x514ea8={'membername':_0xd2c6ae[_0x0eb1('0x39')],'interface':_0x92a65c,'enterAt':moment()['format'](_0x0eb1('0xf6')),'role':_0xd2c6ae[_0x0eb1('0x2c')],'internal':_0xd2c6ae[_0x0eb1('0x67')]};_0x1701df['forEach'](function(_0x285dfe){_0x5aafb7[_0x0eb1('0x48')](_[_0x0eb1('0x5e')]({'channel':_0x285dfe,'type':'LOGIN','data1':_0xb3a3cc[_0x0eb1('0x61')][_0x0eb1('0xf7')],'data2':_0x92a65c},_0x514ea8));if(_0xd2c6ae[_0x0eb1('0xea')]){_0x3e7bcd['push'](_['merge']({'channel':_0x285dfe,'type':_0x0eb1('0xf8'),'data1':_0x0eb1('0xf9')},_0x514ea8));}});return db[_0x0eb1('0xfa')][_0x0eb1('0x87')](_0x5aafb7[_0x0eb1('0xfb')](_0x3e7bcd),{'individualHooks':!![]});}})[_0x0eb1('0x16')](function(){if(_0xd2c6ae){return _0xd2c6ae[_0x0eb1('0x60')]({'online':!![],'lastLoginAt':moment()[_0x0eb1('0xec')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0xd2c6ae[_0x0eb1('0xea')]||![],'mailPause':_0xd2c6ae['loginInPause']||![],'chatPause':_0xd2c6ae['loginInPause']||![],'faxPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'smsPause':_0xd2c6ae['loginInPause']||![],'openchannelPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'whatsappPause':_0xd2c6ae[_0x0eb1('0xea')]||![],'pauseType':_0xd2c6ae[_0x0eb1('0xea')]?'LOGININPAUSE':null,'interface':_0x92a65c,'lastPauseAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))});}})[_0x0eb1('0x16')](function(_0x30c15b){if(_0xb3a3cc[_0x0eb1('0xfc')]){return _0x4193f5();}else{return Promise['resolve'](_0x30c15b)[_0x0eb1('0x16')](respondWithResult(_0xe71ad8,null));}})[_0x0eb1('0x54')](handleError(_0xe71ad8,null));};exports[_0x0eb1('0xfd')]=function(_0xdf0b2d,_0x1eb966){var _0x3bea91;return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0xdf0b2d['params']['id'],'role':_0x0eb1('0x30')},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x2c')]})[_0x0eb1('0x16')](handleEntityNotFound(_0x1eb966,null))[_0x0eb1('0x16')](function(_0x178974){if(_0x178974){_0x3bea91=_0x178974;return db[_0x0eb1('0xaa')][_0x0eb1('0x2b')]({'where':{'membername':_0x3bea91[_0x0eb1('0x39')]},'individualHooks':!![]});}})['then'](function(){return db[_0x0eb1('0xfa')][_0x0eb1('0x49')]({'where':{'membername':_0x3bea91['name'],'exitAt':null}});})['then'](function(_0x265f0e){var _0x57403b=[];_0x265f0e[_0x0eb1('0xf5')](function(_0x4c5521){_0x57403b[_0x0eb1('0x48')](_0x4c5521[_0x0eb1('0x60')]({'exitAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))}));});return Promise['all'](_0x57403b);})['then'](function(){return _0x3bea91[_0x0eb1('0x60')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x1eb966,null))[_0x0eb1('0x54')](handleError(_0x1eb966,null));};exports['pause']=function(_0x1becd2,_0x2da5a8){var _0x439b6e;return db[_0x0eb1('0xaa')]['update']({'paused':0x1},{'where':{'UserId':_0x1becd2[_0x0eb1('0x62')]['id']},'individualHooks':!![]})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1becd2[_0x0eb1('0x62')]['id'],'role':_0x0eb1('0x30')},'attributes':['id','name',_0x0eb1('0x2c'),_0x0eb1('0x67'),'interface',_0x0eb1('0x9b')]});})[_0x0eb1('0x16')](handleEntityNotFound(_0x2da5a8,null))[_0x0eb1('0x16')](function(_0x2061b3){if(_0x2061b3){_0x439b6e=_0x2061b3;return respondWithRpcPromise(_0x0eb1('0xfe'),_0x0eb1('0xff'),{'id':_0x439b6e['id'],'name':_0x439b6e['name'],'pause':!![]});}})[_0x0eb1('0x16')](function(){if(_0x439b6e){return db[_0x0eb1('0xfa')][_0x0eb1('0x49')]({'where':{'membername':_0x439b6e[_0x0eb1('0x39')],'type':_0x0eb1('0xf8'),'exitAt':null}});}})['then'](function(_0x3c9988){if(_0x3c9988['length']){var _0x458d1a=moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'));for(var _0x4e51d1=0x0,_0x3d3631=_0x3c9988[_0x0eb1('0x4c')];_0x4e51d1<_0x3d3631;_0x4e51d1++){_0x3c9988[_0x4e51d1]['updateAttributes']({'exitAt':_0x458d1a});}}})[_0x0eb1('0x16')](function(){var _0x30b731=[];var _0xa0fc56=utils[_0x0eb1('0x100')]();_0xa0fc56['forEach'](function(_0x30eb5b){_0x30b731[_0x0eb1('0x48')]({'channel':_0x30eb5b,'membername':_0x439b6e[_0x0eb1('0x39')],'interface':_[_0x0eb1('0x6a')](_0x439b6e[_0x0eb1('0x9c')])?util['format'](_0x0eb1('0xa8'),_0x439b6e[_0x0eb1('0x39')]):_0x439b6e[_0x0eb1('0x9c')],'type':'PAUSE','enterAt':moment()[_0x0eb1('0xec')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x1becd2[_0x0eb1('0x61')][_0x0eb1('0x101')]||'DEFAULT\x20PAUSE','role':_0x439b6e[_0x0eb1('0x2c')],'internal':_0x439b6e[_0x0eb1('0x67')]});});return db[_0x0eb1('0xfa')][_0x0eb1('0x87')](_0x30b731,{'individualHooks':!![]});})['then'](function(){return _0x439b6e[_0x0eb1('0x60')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x1becd2['body'][_0x0eb1('0x101')]||_0x0eb1('0x102'),'lastPauseAt':moment()[_0x0eb1('0xec')](_0x0eb1('0xf6'))});})[_0x0eb1('0x16')](respondWithResult(_0x2da5a8,null))[_0x0eb1('0x54')](handleError(_0x2da5a8,null));};exports[_0x0eb1('0x103')]=function(_0x21c9a6,_0x12fcae){if(_0x21c9a6[_0x0eb1('0x61')][_0x0eb1('0xac')]&&!utils['isValidChannel'](_0x21c9a6[_0x0eb1('0x61')][_0x0eb1('0xac')])){throw new APIBadRequestError(util[_0x0eb1('0xec')](_0x0eb1('0x104'),_0x21c9a6['body']['channel']));}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x21c9a6[_0x0eb1('0x62')]['id']},'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x2c'),_0x0eb1('0x67'),'interface',_0x0eb1('0x9b'),_0x0eb1('0xa9'),_0x0eb1('0x105'),_0x0eb1('0x106'),_0x0eb1('0x107'),'openchannelPause',_0x0eb1('0x108'),_0x0eb1('0x109'),_0x0eb1('0x10a'),_0x0eb1('0x10b')]})[_0x0eb1('0x16')](function(_0x555759){if(!_0x555759){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x21c9a6[_0x0eb1('0x62')]['id']));}return _0x555759['unpause'](_0x21c9a6['body'][_0x0eb1('0xac')]);})[_0x0eb1('0x16')](respondWithResult(_0x12fcae,null))[_0x0eb1('0x54')](APIHandleError(_0x12fcae));};exports['getTeams']=function(_0x31a644,_0x30fa0a){var _0x1f8900={};var _0x5f5463={};var _0x1fef64;var _0x76edd1;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x31a644[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x30fa0a,null))['then'](function(_0x1a1934){if(_0x1a1934){_0x1fef64=_0x1a1934;_0x5f5463[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0x10c')]['rawAttributes']);_0x5f5463['query']=_['keys'](_0x31a644[_0x0eb1('0x43')]);_0x5f5463[_0x0eb1('0xc9')]=_['intersection'](_0x5f5463[_0x0eb1('0x56')],_0x5f5463[_0x0eb1('0x43')]);_0x1f8900[_0x0eb1('0x47')]=_['intersection'](_0x5f5463[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x31a644['query'][_0x0eb1('0x5b')]));_0x1f8900[_0x0eb1('0x47')]=_0x1f8900[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1f8900[_0x0eb1('0x47')]:_0x5f5463['model'];_0x1f8900[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x31a644['query']['sort']);_0x1f8900[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x31a644[_0x0eb1('0x43')],_0x5f5463[_0x0eb1('0xc9')]));if(_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x1f8900[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x1f8900[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1f8900[_0x0eb1('0x47')],function(_0xf16c5d){var _0x219d25={};_0x219d25[_0xf16c5d]={'$like':'%'+_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x219d25;})});}_0x1f8900=_[_0x0eb1('0x5e')]({},_0x1f8900,_0x31a644[_0x0eb1('0x5f')]);return _0x1fef64[_0x0eb1('0x10d')](_0x1f8900);}})[_0x0eb1('0x16')](function(_0x4a1325){if(_0x4a1325){_0x76edd1=_0x4a1325[_0x0eb1('0x4c')];if(!_0x31a644[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1f8900['limit']=qs[_0x0eb1('0x26')](_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x1f8900[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x31a644[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x1fef64[_0x0eb1('0x10d')](_0x1f8900);}})[_0x0eb1('0x16')](function(_0x23631a){if(_0x23631a){return _0x23631a?{'count':_0x76edd1,'rows':_0x23631a}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x30fa0a,null))[_0x0eb1('0x54')](handleError(_0x30fa0a,null));};exports[_0x0eb1('0x10e')]=function(_0x266948,_0x587439){var _0xa7d0b9=_0x266948[_0x0eb1('0x62')]['id'];var _0x35f018=_0x266948[_0x0eb1('0x61')]?_0x266948['body']['ids']:null;var _0x2a6076=[];return Promise[_0x0eb1('0x10f')]()[_0x0eb1('0x16')](function(){if(!_0x35f018)throw new APIBadRequestError(_0x0eb1('0x110'));})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0xa7d0b9}});})[_0x0eb1('0x16')](function(_0x494932){if(!_0x494932)throw new APINotFoundError(util[_0x0eb1('0xec')](_0x0eb1('0x111'),_0x266948['params']['id']));return db[_0x0eb1('0x6c')][_0x0eb1('0x112')](function(_0x3aa889){return _0x494932[_0x0eb1('0x10e')](_0x35f018,{'transaction':_0x3aa889})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x10c')]['findAll']({'where':{'id':{'$in':_0x35f018}}});})[_0x0eb1('0x16')](function(_0xbe7d32){var _0x81a3d4=_['map'](_0xbe7d32,function(_0x15f467){return _0x15f467[_0x0eb1('0x113')]();});return Promise[_0x0eb1('0x53')](_0x81a3d4);})['then'](function(_0x4dd4f5){_0x2a6076=_[_0x0eb1('0x114')](_0x4dd4f5);var _0x3c8904=_['map'](_0x2a6076,function(_0x3fd98e){return _0x3fd98e[_0x0eb1('0x115')](_0x494932['id'],{'transaction':_0x3aa889});});return Promise['all'](_0x3c8904);})[_0x0eb1('0x16')](function(){if(!_0x494932[_0x0eb1('0x9b')])return;var _0x363d89=_['filter'](_0x2a6076,function(_0x43a41f){return _0x43a41f[_0x0eb1('0x116')](_0x0eb1('0xac'))===_0x0eb1('0x117');});var _0x24fe93=_[_0x0eb1('0x35')](_0x363d89,function(_0x5b0c4d){return db['UserVoiceQueueRt'][_0x0eb1('0xab')]({'membername':_0x494932[_0x0eb1('0x39')],'UserId':_0x494932['id'],'queue_name':_0x5b0c4d[_0x0eb1('0x39')],'VoiceQueueId':_0x5b0c4d['id'],'interface':_[_0x0eb1('0x6a')](_0x494932[_0x0eb1('0x9c')])?util[_0x0eb1('0xec')](_0x0eb1('0xa8'),_0x494932[_0x0eb1('0x39')]):_0x494932['interface'],'paused':_0x494932[_0x0eb1('0xa9')]||![],'penalty':_0x494932[_0x0eb1('0xa0')]},{'transaction':_0x3aa889});});return Promise[_0x0eb1('0x53')](_0x24fe93);})['then'](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x35f018}}});})[_0x0eb1('0x16')](function(_0x3304ed){var _0x581e05=_[_0x0eb1('0x35')](_0x3304ed,function(_0x43fe40){return db[_0x0eb1('0x118')][_0x0eb1('0x7f')]({'UserId':_0x494932['id'],'VoicePrefixId':_0x43fe40[_0x0eb1('0x119')]},{'transaction':_0x3aa889});});return Promise['all'](_0x581e05);});});})[_0x0eb1('0x16')](function(){for(var _0x5bb2a4=0x0;_0x5bb2a4<_0x2a6076['length'];_0x5bb2a4++){var _0x5a04a8=_0x2a6076[_0x5bb2a4]['getDataValue'](_0x0eb1('0xac'));var _0x3170fa=_0x5a04a8+_0x0eb1('0xb0');socket[_0x0eb1('0xa3')](_0x0eb1('0x2e')+_0x5a04a8+_0x0eb1('0xa4'),{'UserId':_0xa7d0b9,['queueField']:_0x2a6076[_0x5bb2a4]['id']});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x587439,null))['catch'](APIHandleError(_0x587439));};exports['removeTeams']=function(_0x462e00,_0x386a4b){var _0x5ba8b0=_0x462e00['params']['id'];var _0x2b7c34=null;if(_0x462e00[_0x0eb1('0x43')]['ids']){_0x2b7c34=_[_0x0eb1('0xaf')](_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')])?_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')]:[_0x462e00[_0x0eb1('0x43')][_0x0eb1('0x65')]];}var _0x20ad53=[];return Promise['resolve']()['then'](function(){if(!_0x2b7c34)throw new APIBadRequestError(_0x0eb1('0x11a'));})['then'](function(){return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5ba8b0}});})['then'](function(_0x2a0a28){if(!_0x2a0a28)throw new APINotFoundError(util[_0x0eb1('0xec')](_0x0eb1('0x111'),_0x462e00[_0x0eb1('0x62')]['id']));return db['sequelize'][_0x0eb1('0x112')](function(_0x5684e4){return _0x2a0a28[_0x0eb1('0x11b')](_0x2b7c34,{'transaction':_0x5684e4})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x10c')][_0x0eb1('0x49')]({'where':{'id':{'$in':_0x2b7c34}}});})['then'](function(_0x3d5b61){var _0x406116=_[_0x0eb1('0x35')](_0x3d5b61,function(_0x5a6764){return _0x5a6764[_0x0eb1('0x113')]();});return Promise[_0x0eb1('0x53')](_0x406116);})['then'](function(_0x1f0d30){_0x20ad53=_[_0x0eb1('0x114')](_0x1f0d30);var _0x4fa90e=_['map'](_0x20ad53,function(_0x15f917){return _0x15f917[_0x0eb1('0x11c')](_0x2a0a28['id'],{'transaction':_0x5684e4});});return Promise['all'](_0x4fa90e);})[_0x0eb1('0x16')](function(){if(!_0x2a0a28[_0x0eb1('0x9b')])return;var _0x4162dd=_[_0x0eb1('0x33')](_0x20ad53,function(_0x4b9243){return _0x4b9243['getDataValue'](_0x0eb1('0xac'))===_0x0eb1('0x117');});var _0x56f1e3=_['map'](_0x4162dd,function(_0x5848ad){return db[_0x0eb1('0xaa')][_0x0eb1('0x2b')]({'where':{'VoiceQueueId':_0x5848ad['id'],'UserId':_0x2a0a28['id']},'transaction':_0x5684e4});});return Promise['all'](_0x56f1e3);})[_0x0eb1('0x16')](function(){return db[_0x0eb1('0x11d')]['findAll']({'where':{'teamId':{'$in':_0x2b7c34}}});})[_0x0eb1('0x16')](function(_0x386e32){var _0x2e5d12=_[_0x0eb1('0x35')](_0x386e32,function(_0x5c7da9){return db['UserVoicePrefix'][_0x0eb1('0x2b')]({'where':{'UserId':_0x2a0a28['id'],'VoicePrefixId':_0x5c7da9[_0x0eb1('0x119')]}},{'transaction':_0x5684e4});});return Promise[_0x0eb1('0x53')](_0x2e5d12);});});})['then'](function(){for(var _0x4c4b20=0x0;_0x4c4b20<_0x20ad53['length'];_0x4c4b20++){var _0x4c06ff=_0x20ad53[_0x4c4b20][_0x0eb1('0x116')]('channel');var _0x23d72a=_0x4c06ff+_0x0eb1('0xb0');socket['emit'](_0x0eb1('0x2e')+_0x4c06ff+'Queue:remove',{'UserId':_0x5ba8b0,['queueField']:_0x20ad53[_0x4c4b20]['id']});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x386a4b,null))[_0x0eb1('0x54')](APIHandleError(_0x386a4b));};exports[_0x0eb1('0x11e')]=function(_0x2d4731,_0x2a1aea){var _0x3f83c9={};var _0x45f894={};var _0x5a384f;var _0x19adb0;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x2d4731[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2a1aea,null))[_0x0eb1('0x16')](function(_0x587684){if(_0x587684){_0x5a384f=_0x587684;_0x45f894[_0x0eb1('0x56')]=_['keys'](db[_0x0eb1('0xcc')][_0x0eb1('0x59')]);_0x45f894[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x2d4731['query']);_0x45f894[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x45f894[_0x0eb1('0x56')],_0x45f894[_0x0eb1('0x43')]);_0x3f83c9[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x45f894['model'],qs[_0x0eb1('0x5b')](_0x2d4731['query']['fields']));_0x3f83c9['attributes']=_0x3f83c9['attributes'][_0x0eb1('0x4c')]?_0x3f83c9[_0x0eb1('0x47')]:_0x45f894[_0x0eb1('0x56')];_0x3f83c9['order']=qs[_0x0eb1('0xd3')](_0x2d4731[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x3f83c9[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x2d4731[_0x0eb1('0x43')],_0x45f894[_0x0eb1('0xc9')]));if(_0x2d4731['query'][_0x0eb1('0x33')]){_0x3f83c9['where']=_[_0x0eb1('0x5e')](_0x3f83c9[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x3f83c9[_0x0eb1('0x47')],function(_0x2a8014){var _0x3a8ab8={};_0x3a8ab8[_0x2a8014]={'$like':'%'+_0x2d4731['query'][_0x0eb1('0x33')]+'%'};return _0x3a8ab8;})});}_0x3f83c9=_[_0x0eb1('0x5e')]({},_0x3f83c9,_0x2d4731['options']);return _0x5a384f[_0x0eb1('0x11e')](_0x3f83c9);}})[_0x0eb1('0x16')](function(_0x6b28ab){if(_0x6b28ab){_0x19adb0=_0x6b28ab[_0x0eb1('0x4c')];if(!_0x2d4731[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x3f83c9[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x2d4731[_0x0eb1('0x43')]['limit']);_0x3f83c9[_0x0eb1('0x24')]=qs['offset'](_0x2d4731[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x5a384f[_0x0eb1('0x11e')](_0x3f83c9);}})[_0x0eb1('0x16')](function(_0x598c11){if(_0x598c11){return _0x598c11?{'count':_0x19adb0,'rows':_0x598c11}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x2a1aea,null))[_0x0eb1('0x54')](handleError(_0x2a1aea,null));};exports[_0x0eb1('0x11f')]=function(_0x85a1a9,_0x202f11){var _0x5f3d78={};var _0x1f460d={};var _0x356c46;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x85a1a9[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x202f11,null))[_0x0eb1('0x16')](function(_0x579ae5){if(_0x579ae5){_0x356c46=_0x579ae5;_0x1f460d[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x3d')]['rawAttributes']);_0x1f460d[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x85a1a9[_0x0eb1('0x43')]);_0x1f460d['filters']=_['intersection'](_0x1f460d[_0x0eb1('0x56')],_0x1f460d['query']);_0x5f3d78[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x1f460d['model'],qs[_0x0eb1('0x5b')](_0x85a1a9['query']['fields']));_0x5f3d78[_0x0eb1('0x47')]=_0x5f3d78[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x5f3d78[_0x0eb1('0x47')]:_0x1f460d[_0x0eb1('0x56')];_0x5f3d78[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x85a1a9[_0x0eb1('0x43')]['sort']);_0x5f3d78['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x85a1a9['query'],_0x1f460d[_0x0eb1('0xc9')]));if(_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x5f3d78[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x5f3d78[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x5f3d78[_0x0eb1('0x47')],function(_0x2a6689){var _0x3810ac={};_0x3810ac[_0x2a6689]={'$like':'%'+_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x3810ac;})});}_0x5f3d78[_0x0eb1('0x56')]=db['User'];_0x5f3d78['as']=_0x0eb1('0x2f');_0x5f3d78=_[_0x0eb1('0x5e')]({},_0x5f3d78,_0x85a1a9[_0x0eb1('0x5f')]);return _0x356c46['getVoiceQueues']({'include':[_0x5f3d78]});}})[_0x0eb1('0x16')](function(_0x2d9dd8){if(_0x2d9dd8){var _0xdba31b={},_0x2f60f2=[];for(var _0x1f2337=0x0;_0x1f2337<_0x2d9dd8[_0x0eb1('0x4c')];_0x1f2337+=0x1){for(var _0x225dbb=0x0,_0x52ecc4;_0x225dbb<_0x2d9dd8[_0x1f2337][_0x0eb1('0x2f')]['length'];_0x225dbb+=0x1){_0x52ecc4=_0x2d9dd8[_0x1f2337][_0x0eb1('0x2f')][_0x225dbb][_0x0eb1('0xa7')]({'plain':!![]});_0xdba31b[_0x52ecc4['id']]=_0x52ecc4;}}_0xdba31b=_[_0x0eb1('0x120')](_0xdba31b);for(var _0xb19cd7=qs[_0x0eb1('0x24')](_0x85a1a9[_0x0eb1('0x43')]['offset']);_0xb19cd7<_0xdba31b[_0x0eb1('0x4c')]&&_0x2f60f2[_0x0eb1('0x4c')]<qs[_0x0eb1('0x26')](_0x85a1a9[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0xb19cd7+=0x1){if(_0xdba31b[_0xb19cd7]){_0x2f60f2[_0x0eb1('0x48')](_0xdba31b[_0xb19cd7]);}}return{'count':_0xdba31b['length'],'rows':_0x2f60f2};}})[_0x0eb1('0x16')](respondWithResult(_0x202f11,null))[_0x0eb1('0x54')](handleError(_0x202f11,null));};exports[_0x0eb1('0x2b')]=function(_0x5ba39e,_0x476b37){if(_0x5ba39e[_0x0eb1('0x2e')]['id']==_0x5ba39e[_0x0eb1('0x62')]['id']){return _0x476b37[_0x0eb1('0x21')](0x1f4)[_0x0eb1('0x3c')]({'message':_0x0eb1('0x121')});}return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5ba39e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x476b37,null))[_0x0eb1('0x16')](removeEntity(_0x476b37,null))[_0x0eb1('0x54')](handleError(_0x476b37,null));};exports['addChatInteractions']=function(_0x328768,_0x51d3f3){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x328768['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x51d3f3,null))[_0x0eb1('0x16')](function(_0x3d3df2){if(_0x3d3df2){return _0x3d3df2[_0x0eb1('0x122')](_0x328768[_0x0eb1('0x61')]['ids'],_[_0x0eb1('0x66')](_0x328768['body'],[_0x0eb1('0x65'),'id'])||{})[_0x0eb1('0xa1')](function(){for(var _0x2e680d=0x0;_0x2e680d<_0x328768[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x2e680d+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x123'),{'ChatInteractionId':Number(_0x328768[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x2e680d]),'UserId':Number(_0x328768[_0x0eb1('0x62')]['id'])});}return _0x328768['body']['ids'];});}})[_0x0eb1('0x16')](respondWithResult(_0x51d3f3,null))[_0x0eb1('0x54')](handleError(_0x51d3f3,null));};exports[_0x0eb1('0x124')]=function(_0x16926e,_0x4393c3){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x16926e['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4393c3,null))[_0x0eb1('0x16')](function(_0x4b7ee8){if(_0x4b7ee8){return _0x4b7ee8[_0x0eb1('0x124')](_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_['isArray'](_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')])){for(var _0x2edc3a=0x0;_0x2edc3a<_0x16926e['query'][_0x0eb1('0x65')]['length'];_0x2edc3a+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x125'),{'ChatInteractionId':Number(_0x16926e[_0x0eb1('0x43')]['ids'][_0x2edc3a]),'UserId':Number(_0x16926e[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x125'),{'ChatInteractionId':Number(_0x16926e[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x16926e[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x4393c3,null))[_0x0eb1('0x54')](handleError(_0x4393c3,null));};exports[_0x0eb1('0x126')]=function(_0x21ad67,_0x7d7609){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x21ad67[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x7d7609,null))[_0x0eb1('0x16')](function(_0x18a4c3){if(_0x18a4c3){return _0x18a4c3['addMailInteractions'](_0x21ad67[_0x0eb1('0x61')]['ids'],_[_0x0eb1('0x66')](_0x21ad67[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})[_0x0eb1('0xa1')](function(){for(var _0x38b4cf=0x0;_0x38b4cf<_0x21ad67[_0x0eb1('0x61')][_0x0eb1('0x65')]['length'];_0x38b4cf+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x127'),{'MailInteractionId':Number(_0x21ad67[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x38b4cf]),'UserId':Number(_0x21ad67['params']['id'])});}return _0x21ad67[_0x0eb1('0x61')]['ids'];});}})['then'](respondWithResult(_0x7d7609,null))[_0x0eb1('0x54')](handleError(_0x7d7609,null));};exports[_0x0eb1('0x128')]=function(_0x146b1b,_0x5a2f0c){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x146b1b[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5a2f0c,null))[_0x0eb1('0x16')](function(_0x38613b){if(_0x38613b){return _0x38613b[_0x0eb1('0x128')](_0x146b1b[_0x0eb1('0x43')][_0x0eb1('0x65')])[_0x0eb1('0x16')](function(){if(_[_0x0eb1('0xaf')](_0x146b1b['query'][_0x0eb1('0x65')])){for(var _0x39efdc=0x0;_0x39efdc<_0x146b1b['query']['ids'][_0x0eb1('0x4c')];_0x39efdc+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x129'),{'MailInteractionId':Number(_0x146b1b['query'][_0x0eb1('0x65')][_0x39efdc]),'UserId':Number(_0x146b1b[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x129'),{'MailInteractionId':Number(_0x146b1b[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x146b1b[_0x0eb1('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x5a2f0c,null))[_0x0eb1('0x54')](handleError(_0x5a2f0c,null));};exports[_0x0eb1('0x12a')]=function(_0x412673,_0x5f0e4e){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x412673[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x5f0e4e,null))[_0x0eb1('0x16')](function(_0xba7847){if(_0xba7847){return _0xba7847['addFaxInteractions'](_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x412673[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x20f5e7=0x0;_0x20f5e7<_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x20f5e7+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x12b'),{'FaxInteractionId':Number(_0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x20f5e7]),'UserId':Number(_0x412673[_0x0eb1('0x62')]['id'])});}return _0x412673[_0x0eb1('0x61')][_0x0eb1('0x65')];});}})[_0x0eb1('0x16')](respondWithResult(_0x5f0e4e,null))[_0x0eb1('0x54')](handleError(_0x5f0e4e,null));};exports[_0x0eb1('0x12c')]=function(_0x25003c,_0x566383){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x25003c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x566383,null))[_0x0eb1('0x16')](function(_0x28a4bb){if(_0x28a4bb){return _0x28a4bb[_0x0eb1('0x12c')](_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_[_0x0eb1('0xaf')](_0x25003c[_0x0eb1('0x43')]['ids'])){for(var _0xa9e986=0x0;_0xa9e986<_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0xa9e986+=0x1){socket[_0x0eb1('0xa3')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')][_0xa9e986]),'UserId':Number(_0x25003c[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x12d'),{'FaxInteractionId':Number(_0x25003c[_0x0eb1('0x43')][_0x0eb1('0x65')]),'UserId':Number(_0x25003c[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x566383,null))[_0x0eb1('0x54')](handleError(_0x566383,null));};exports[_0x0eb1('0x12e')]=function(_0x598a21,_0x443bbb){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x598a21[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x443bbb,null))[_0x0eb1('0x16')](function(_0x216140){if(_0x216140){return _0x216140[_0x0eb1('0x12e')](_0x598a21[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x598a21[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x56387b=0x0;_0x56387b<_0x598a21[_0x0eb1('0x61')]['ids'][_0x0eb1('0x4c')];_0x56387b+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x12f'),{'SmsInteractionId':Number(_0x598a21[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x56387b]),'UserId':Number(_0x598a21[_0x0eb1('0x62')]['id'])});}return _0x598a21[_0x0eb1('0x61')]['ids'];});}})['then'](respondWithResult(_0x443bbb,null))[_0x0eb1('0x54')](handleError(_0x443bbb,null));};exports['removeSmsInteractions']=function(_0x33118e,_0x2b3bfe){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x33118e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2b3bfe,null))[_0x0eb1('0x16')](function(_0x24d900){if(_0x24d900){return _0x24d900[_0x0eb1('0x130')](_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')])['then'](function(){if(_['isArray'](_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')])){for(var _0x235b20=0x0;_0x235b20<_0x33118e[_0x0eb1('0x43')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x235b20+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x131'),{'SmsInteractionId':Number(_0x33118e['query'][_0x0eb1('0x65')][_0x235b20]),'UserId':Number(_0x33118e[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x131'),{'SmsInteractionId':Number(_0x33118e[_0x0eb1('0x43')]['ids']),'UserId':Number(_0x33118e[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x2b3bfe,null))[_0x0eb1('0x54')](handleError(_0x2b3bfe,null));};exports['addOpenchannelInteractions']=function(_0x1f6788,_0x2bf948){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1f6788['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x2bf948,null))[_0x0eb1('0x16')](function(_0x5dceeb){if(_0x5dceeb){return _0x5dceeb[_0x0eb1('0x132')](_0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')],_['omit'](_0x1f6788[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x152b57=0x0;_0x152b57<_0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x152b57+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x133'),{'OpenchannelInteractionId':Number(_0x1f6788['body']['ids'][_0x152b57]),'UserId':Number(_0x1f6788[_0x0eb1('0x62')]['id'])});}return _0x1f6788[_0x0eb1('0x61')][_0x0eb1('0x65')];});}})[_0x0eb1('0x16')](respondWithResult(_0x2bf948,null))[_0x0eb1('0x54')](handleError(_0x2bf948,null));};exports[_0x0eb1('0x134')]=function(_0x3314fd,_0x32d1c7){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3314fd[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x32d1c7,null))[_0x0eb1('0x16')](function(_0xb8b457){if(_0xb8b457){return _0xb8b457[_0x0eb1('0x134')](_0x3314fd[_0x0eb1('0x43')][_0x0eb1('0x65')])[_0x0eb1('0x16')](function(){if(_[_0x0eb1('0xaf')](_0x3314fd[_0x0eb1('0x43')]['ids'])){for(var _0x359eba=0x0;_0x359eba<_0x3314fd['query'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x359eba+=0x1){socket['emit'](_0x0eb1('0x135'),{'OpenchannelInteractionId':Number(_0x3314fd['query'][_0x0eb1('0x65')][_0x359eba]),'UserId':Number(_0x3314fd[_0x0eb1('0x62')]['id'])});}}else{socket[_0x0eb1('0xa3')](_0x0eb1('0x135'),{'OpenchannelInteractionId':Number(_0x3314fd['query'][_0x0eb1('0x65')]),'UserId':Number(_0x3314fd[_0x0eb1('0x62')]['id'])});}});}})[_0x0eb1('0x16')](respondWithStatusCode(_0x32d1c7,null))[_0x0eb1('0x54')](handleError(_0x32d1c7,null));};exports[_0x0eb1('0x136')]=function(_0x574522,_0x12df66){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x574522[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x12df66,null))[_0x0eb1('0x16')](function(_0x4c54c4){if(_0x4c54c4){return _0x4c54c4[_0x0eb1('0x136')](_0x574522[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x574522[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{})['spread'](function(){for(var _0x47c937=0x0;_0x47c937<_0x574522['body'][_0x0eb1('0x65')][_0x0eb1('0x4c')];_0x47c937+=0x1){socket[_0x0eb1('0xa3')](_0x0eb1('0x137'),{'WhatsappInteractionId':Number(_0x574522['body'][_0x0eb1('0x65')][_0x47c937]),'UserId':Number(_0x574522['params']['id'])});}return _0x574522[_0x0eb1('0x61')]['ids'];});}})[_0x0eb1('0x16')](respondWithResult(_0x12df66,null))[_0x0eb1('0x54')](handleError(_0x12df66,null));};exports[_0x0eb1('0x138')]=function(_0xdcbe58,_0x37b34d){return db['User']['find']({'where':{'id':_0xdcbe58['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x37b34d,null))[_0x0eb1('0x16')](function(_0x56f973){if(_0x56f973){return _0x56f973[_0x0eb1('0x138')](_0xdcbe58[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x37b34d,null))[_0x0eb1('0x54')](handleError(_0x37b34d,null));};exports[_0x0eb1('0x139')]=function(_0x892d78,_0x4196f8){var _0x283ac7={};var _0x3eff2e={};var _0x55d6b6;var _0x5a44f8;return db['User'][_0x0eb1('0x94')]({'where':{'id':_0x892d78[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x4196f8,null))['then'](function(_0x2430a4){if(_0x2430a4){_0x55d6b6=_0x2430a4;_0x3eff2e[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x13a')][_0x0eb1('0x59')]);_0x3eff2e[_0x0eb1('0x43')]=_['keys'](_0x892d78[_0x0eb1('0x43')]);_0x3eff2e[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x3eff2e[_0x0eb1('0x56')],_0x3eff2e['query']);_0x283ac7['attributes']=_[_0x0eb1('0x5a')](_0x3eff2e[_0x0eb1('0x56')],qs['fields'](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x283ac7[_0x0eb1('0x47')]=_0x283ac7[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x283ac7[_0x0eb1('0x47')]:_0x3eff2e['model'];_0x283ac7[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x283ac7['where']=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x892d78[_0x0eb1('0x43')],_0x3eff2e[_0x0eb1('0xc9')]));if(_0x892d78[_0x0eb1('0x43')]['filter']){_0x283ac7['where']=_['merge'](_0x283ac7[_0x0eb1('0x42')],{'$or':_['map'](_0x283ac7[_0x0eb1('0x47')],function(_0x3dbc21){var _0x3f8afc={};_0x3f8afc[_0x3dbc21]={'$like':'%'+_0x892d78[_0x0eb1('0x43')]['filter']+'%'};return _0x3f8afc;})});}_0x283ac7=_['merge']({},_0x283ac7,_0x892d78[_0x0eb1('0x5f')]);return _0x55d6b6[_0x0eb1('0x139')](_0x283ac7);}})['then'](function(_0x914972){if(_0x914972){_0x5a44f8=_0x914972[_0x0eb1('0x4c')];if(!_0x892d78[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x283ac7[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x892d78[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x283ac7[_0x0eb1('0x24')]=qs['offset'](_0x892d78['query'][_0x0eb1('0x24')]);}return _0x55d6b6[_0x0eb1('0x139')](_0x283ac7);}})['then'](function(_0x1bcdf0){if(_0x1bcdf0){return _0x1bcdf0?{'count':_0x5a44f8,'rows':_0x1bcdf0}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x4196f8,null))['catch'](handleError(_0x4196f8,null));};exports[_0x0eb1('0x13b')]=function(_0x362fcd,_0x17ef7a){var _0x5335c6={};var _0x15aa07={};var _0x2a2ee6;var _0x5690cd;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x362fcd[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x17ef7a,null))[_0x0eb1('0x16')](function(_0x187cab){if(_0x187cab){_0x2a2ee6=_0x187cab;_0x15aa07[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x13c')]['rawAttributes']);_0x15aa07['query']=_['keys'](_0x362fcd[_0x0eb1('0x43')]);_0x15aa07['filters']=_[_0x0eb1('0x5a')](_0x15aa07[_0x0eb1('0x56')],_0x15aa07[_0x0eb1('0x43')]);_0x5335c6['attributes']=_[_0x0eb1('0x5a')](_0x15aa07[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x362fcd[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x5335c6['attributes']=_0x5335c6[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x5335c6['attributes']:_0x15aa07[_0x0eb1('0x56')];_0x5335c6[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x362fcd[_0x0eb1('0x43')]['sort']);_0x5335c6[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x362fcd[_0x0eb1('0x43')],_0x15aa07['filters']));if(_0x362fcd['query'][_0x0eb1('0x33')]){_0x5335c6[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x5335c6['where'],{'$or':_[_0x0eb1('0x35')](_0x5335c6['attributes'],function(_0x8afede){var _0x5cda86={};_0x5cda86[_0x8afede]={'$like':'%'+_0x362fcd['query'][_0x0eb1('0x33')]+'%'};return _0x5cda86;})});}_0x5335c6=_[_0x0eb1('0x5e')]({},_0x5335c6,_0x362fcd[_0x0eb1('0x5f')]);return _0x2a2ee6[_0x0eb1('0x13b')](_0x5335c6);}})[_0x0eb1('0x16')](function(_0x1d6b3d){if(_0x1d6b3d){_0x5690cd=_0x1d6b3d[_0x0eb1('0x4c')];if(!_0x362fcd['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x5335c6[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x362fcd[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x5335c6[_0x0eb1('0x24')]=qs['offset'](_0x362fcd[_0x0eb1('0x43')]['offset']);}return _0x2a2ee6[_0x0eb1('0x13b')](_0x5335c6);}})['then'](function(_0x584a8c){if(_0x584a8c){return _0x584a8c?{'count':_0x5690cd,'rows':_0x584a8c}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x17ef7a,null))[_0x0eb1('0x54')](handleError(_0x17ef7a,null));};exports[_0x0eb1('0x13d')]=function(_0x3a3cdb,_0x1216bb){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3a3cdb[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x1216bb,null))[_0x0eb1('0x16')](function(_0x428b8f){if(_0x428b8f){return _0x428b8f['addFaxAccounts'](_0x3a3cdb[_0x0eb1('0x61')][_0x0eb1('0x65')],_['omit'](_0x3a3cdb[_0x0eb1('0x61')],['ids','id'])||{});}})['then'](respondWithResult(_0x1216bb,null))['catch'](handleError(_0x1216bb,null));};exports[_0x0eb1('0x13e')]=function(_0x5579ea,_0x502b91){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5579ea['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x502b91,null))[_0x0eb1('0x16')](function(_0x32e23c){if(_0x32e23c){return _0x32e23c['removeFaxAccounts'](_0x5579ea['query'][_0x0eb1('0x65')]);}})['then'](respondWithStatusCode(_0x502b91,null))['catch'](handleError(_0x502b91,null));};exports[_0x0eb1('0x13f')]=function(_0x5f8a74,_0x17e509){var _0x1da91b={};var _0xefcff6={};var _0xfd87d9;var _0x33f901;return db[_0x0eb1('0x3d')]['findOne']({'where':{'id':_0x5f8a74['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x17e509,null))[_0x0eb1('0x16')](function(_0x5d522b){if(_0x5d522b){_0xfd87d9=_0x5d522b;_0xefcff6['model']=_[_0x0eb1('0x58')](db[_0x0eb1('0x140')][_0x0eb1('0x59')]);_0xefcff6['query']=_['keys'](_0x5f8a74[_0x0eb1('0x43')]);_0xefcff6[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0xefcff6['model'],_0xefcff6[_0x0eb1('0x43')]);_0x1da91b['attributes']=_[_0x0eb1('0x5a')](_0xefcff6['model'],qs[_0x0eb1('0x5b')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x1da91b['attributes']=_0x1da91b[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x1da91b[_0x0eb1('0x47')]:_0xefcff6['model'];_0x1da91b[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x1da91b[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_['pick'](_0x5f8a74[_0x0eb1('0x43')],_0xefcff6[_0x0eb1('0xc9')]));if(_0x5f8a74['query'][_0x0eb1('0x33')]){_0x1da91b['where']=_[_0x0eb1('0x5e')](_0x1da91b[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x1da91b[_0x0eb1('0x47')],function(_0x3b83eb){var _0x2692d6={};_0x2692d6[_0x3b83eb]={'$like':'%'+_0x5f8a74['query'][_0x0eb1('0x33')]+'%'};return _0x2692d6;})});}_0x1da91b=_[_0x0eb1('0x5e')]({},_0x1da91b,_0x5f8a74[_0x0eb1('0x5f')]);return _0xfd87d9['getMailAccounts'](_0x1da91b);}})[_0x0eb1('0x16')](function(_0x2b2e60){if(_0x2b2e60){_0x33f901=_0x2b2e60[_0x0eb1('0x4c')];if(!_0x5f8a74[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0x1da91b[_0x0eb1('0x26')]=qs['limit'](_0x5f8a74[_0x0eb1('0x43')]['limit']);_0x1da91b['offset']=qs[_0x0eb1('0x24')](_0x5f8a74[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0xfd87d9[_0x0eb1('0x13f')](_0x1da91b);}})[_0x0eb1('0x16')](function(_0x48f541){if(_0x48f541){return _0x48f541?{'count':_0x33f901,'rows':_0x48f541}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x17e509,null))['catch'](handleError(_0x17e509,null));};exports['addMailAccounts']=function(_0x3f170b,_0x4d511c){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x3f170b[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x4d511c,null))['then'](function(_0x4b957d){if(_0x4b957d){return _0x4b957d[_0x0eb1('0x141')](_0x3f170b['body']['ids'],_['omit'](_0x3f170b[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x4d511c,null))['catch'](handleError(_0x4d511c,null));};exports[_0x0eb1('0x142')]=function(_0x2f27e9,_0x1454c2){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x2f27e9[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1454c2,null))[_0x0eb1('0x16')](function(_0x29549d){if(_0x29549d){return _0x29549d[_0x0eb1('0x142')](_0x2f27e9[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1454c2,null))[_0x0eb1('0x54')](handleError(_0x1454c2,null));};exports[_0x0eb1('0x143')]=function(_0x3e40c3,_0x392512){var _0x19d665={};var _0x35cdb9={};var _0x242d84;var _0x239cd1;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x3e40c3[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x392512,null))['then'](function(_0x5e7f7a){if(_0x5e7f7a){_0x242d84=_0x5e7f7a;_0x35cdb9[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['OpenchannelAccount'][_0x0eb1('0x59')]);_0x35cdb9[_0x0eb1('0x43')]=_['keys'](_0x3e40c3['query']);_0x35cdb9['filters']=_['intersection'](_0x35cdb9[_0x0eb1('0x56')],_0x35cdb9[_0x0eb1('0x43')]);_0x19d665[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x35cdb9[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x19d665[_0x0eb1('0x47')]=_0x19d665[_0x0eb1('0x47')]['length']?_0x19d665[_0x0eb1('0x47')]:_0x35cdb9[_0x0eb1('0x56')];_0x19d665[_0x0eb1('0xd2')]=qs['sort'](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x19d665[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x3e40c3[_0x0eb1('0x43')],_0x35cdb9[_0x0eb1('0xc9')]));if(_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x33')]){_0x19d665[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0x19d665[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x19d665[_0x0eb1('0x47')],function(_0x42c0b0){var _0xb737c0={};_0xb737c0[_0x42c0b0]={'$like':'%'+_0x3e40c3['query'][_0x0eb1('0x33')]+'%'};return _0xb737c0;})});}_0x19d665=_[_0x0eb1('0x5e')]({},_0x19d665,_0x3e40c3[_0x0eb1('0x5f')]);return _0x242d84[_0x0eb1('0x143')](_0x19d665);}})[_0x0eb1('0x16')](function(_0x5a17b7){if(_0x5a17b7){_0x239cd1=_0x5a17b7[_0x0eb1('0x4c')];if(!_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0xcb')]('nolimit')){_0x19d665['limit']=qs[_0x0eb1('0x26')](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x19d665[_0x0eb1('0x24')]=qs['offset'](_0x3e40c3[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x242d84[_0x0eb1('0x143')](_0x19d665);}})[_0x0eb1('0x16')](function(_0x52fc2d){if(_0x52fc2d){return _0x52fc2d?{'count':_0x239cd1,'rows':_0x52fc2d}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x392512,null))[_0x0eb1('0x54')](handleError(_0x392512,null));};exports[_0x0eb1('0x144')]=function(_0x1e7cf3,_0x27a8b9){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1e7cf3[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x27a8b9,null))[_0x0eb1('0x16')](function(_0x4a310e){if(_0x4a310e){return _0x4a310e[_0x0eb1('0x144')](_0x1e7cf3['body'][_0x0eb1('0x65')],_['omit'](_0x1e7cf3['body'],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x27a8b9,null))[_0x0eb1('0x54')](handleError(_0x27a8b9,null));};exports['removeOpenchannelAccounts']=function(_0x5844e8,_0x1fdb97){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x5844e8[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1fdb97,null))[_0x0eb1('0x16')](function(_0x3658fd){if(_0x3658fd){return _0x3658fd['removeOpenchannelAccounts'](_0x5844e8['query'][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1fdb97,null))[_0x0eb1('0x54')](handleError(_0x1fdb97,null));};exports[_0x0eb1('0x145')]=function(_0x4a519c,_0x48ef88){var _0x2ea152={};var _0xc98e42={};var _0x265d15;var _0x403f25;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x4a519c['params']['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x48ef88,null))[_0x0eb1('0x16')](function(_0x459d7a){if(_0x459d7a){_0x265d15=_0x459d7a;_0xc98e42[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db[_0x0eb1('0x146')][_0x0eb1('0x59')]);_0xc98e42[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x4a519c[_0x0eb1('0x43')]);_0xc98e42[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0xc98e42[_0x0eb1('0x56')],_0xc98e42[_0x0eb1('0x43')]);_0x2ea152['attributes']=_[_0x0eb1('0x5a')](_0xc98e42[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x4a519c[_0x0eb1('0x43')]['fields']));_0x2ea152[_0x0eb1('0x47')]=_0x2ea152['attributes'][_0x0eb1('0x4c')]?_0x2ea152[_0x0eb1('0x47')]:_0xc98e42[_0x0eb1('0x56')];_0x2ea152['order']=qs[_0x0eb1('0xd3')](_0x4a519c[_0x0eb1('0x43')]['sort']);_0x2ea152[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x4a519c[_0x0eb1('0x43')],_0xc98e42[_0x0eb1('0xc9')]));if(_0x4a519c['query'][_0x0eb1('0x33')]){_0x2ea152[_0x0eb1('0x42')]=_['merge'](_0x2ea152[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x2ea152[_0x0eb1('0x47')],function(_0x8a970b){var _0x2c8c6d={};_0x2c8c6d[_0x8a970b]={'$like':'%'+_0x4a519c[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x2c8c6d;})});}_0x2ea152=_[_0x0eb1('0x5e')]({},_0x2ea152,_0x4a519c[_0x0eb1('0x5f')]);return _0x265d15[_0x0eb1('0x145')](_0x2ea152);}})[_0x0eb1('0x16')](function(_0x2348ee){if(_0x2348ee){_0x403f25=_0x2348ee[_0x0eb1('0x4c')];if(!_0x4a519c['query'][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x2ea152[_0x0eb1('0x26')]=qs['limit'](_0x4a519c[_0x0eb1('0x43')][_0x0eb1('0x26')]);_0x2ea152['offset']=qs[_0x0eb1('0x24')](_0x4a519c[_0x0eb1('0x43')]['offset']);}return _0x265d15['getSmsAccounts'](_0x2ea152);}})[_0x0eb1('0x16')](function(_0x368d95){if(_0x368d95){return _0x368d95?{'count':_0x403f25,'rows':_0x368d95}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x48ef88,null))[_0x0eb1('0x54')](handleError(_0x48ef88,null));};exports[_0x0eb1('0x147')]=function(_0x224b71,_0xa150df){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x224b71[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0xa150df,null))[_0x0eb1('0x16')](function(_0x5964e2){if(_0x5964e2){return _0x5964e2[_0x0eb1('0x147')](_0x224b71[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x224b71[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0xa150df,null))[_0x0eb1('0x54')](handleError(_0xa150df,null));};exports[_0x0eb1('0x148')]=function(_0x1300ab,_0x2d2716){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x1300ab[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x2d2716,null))[_0x0eb1('0x16')](function(_0x4f1214){if(_0x4f1214){return _0x4f1214[_0x0eb1('0x148')](_0x1300ab[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x2d2716,null))[_0x0eb1('0x54')](handleError(_0x2d2716,null));};exports[_0x0eb1('0x149')]=function(_0x4cae33,_0x462706){var _0x463850={};var _0x10e8e7={};var _0x3db8d2;var _0xa76b99;return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x4cae33[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x462706,null))['then'](function(_0x5aad1b){if(_0x5aad1b){_0x3db8d2=_0x5aad1b;_0x10e8e7['model']=_['keys'](db[_0x0eb1('0x14a')][_0x0eb1('0x59')]);_0x10e8e7[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x4cae33[_0x0eb1('0x43')]);_0x10e8e7[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x10e8e7[_0x0eb1('0x56')],_0x10e8e7[_0x0eb1('0x43')]);_0x463850[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x10e8e7[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x4cae33[_0x0eb1('0x43')]['fields']));_0x463850[_0x0eb1('0x47')]=_0x463850[_0x0eb1('0x47')]['length']?_0x463850[_0x0eb1('0x47')]:_0x10e8e7[_0x0eb1('0x56')];_0x463850['order']=qs['sort'](_0x4cae33[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x463850[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x4cae33['query'],_0x10e8e7[_0x0eb1('0xc9')]));if(_0x4cae33['query'][_0x0eb1('0x33')]){_0x463850['where']=_['merge'](_0x463850[_0x0eb1('0x42')],{'$or':_[_0x0eb1('0x35')](_0x463850[_0x0eb1('0x47')],function(_0x4d5442){var _0x177528={};_0x177528[_0x4d5442]={'$like':'%'+_0x4cae33['query'][_0x0eb1('0x33')]+'%'};return _0x177528;})});}_0x463850=_[_0x0eb1('0x5e')]({},_0x463850,_0x4cae33['options']);return _0x3db8d2['getChatWebsites'](_0x463850);}})['then'](function(_0x3f1c45){if(_0x3f1c45){_0xa76b99=_0x3f1c45['length'];if(!_0x4cae33[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x463850['limit']=qs[_0x0eb1('0x26')](_0x4cae33['query'][_0x0eb1('0x26')]);_0x463850[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x4cae33[_0x0eb1('0x43')]['offset']);}return _0x3db8d2[_0x0eb1('0x149')](_0x463850);}})[_0x0eb1('0x16')](function(_0x360f7d){if(_0x360f7d){return _0x360f7d?{'count':_0xa76b99,'rows':_0x360f7d}:null;}})[_0x0eb1('0x16')](respondWithResult(_0x462706,null))['catch'](handleError(_0x462706,null));};exports['addChatWebsites']=function(_0x31c6e8,_0x6365f5){return db[_0x0eb1('0x3d')]['find']({'where':{'id':_0x31c6e8[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x6365f5,null))['then'](function(_0x5d091a){if(_0x5d091a){return _0x5d091a[_0x0eb1('0x14b')](_0x31c6e8[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x31c6e8[_0x0eb1('0x61')],['ids','id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x6365f5,null))['catch'](handleError(_0x6365f5,null));};exports[_0x0eb1('0x14c')]=function(_0xdcb27,_0x1b583f){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0xdcb27[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x1b583f,null))[_0x0eb1('0x16')](function(_0xca0d57){if(_0xca0d57){return _0xca0d57['removeChatWebsites'](_0xdcb27[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})[_0x0eb1('0x16')](respondWithStatusCode(_0x1b583f,null))[_0x0eb1('0x54')](handleError(_0x1b583f,null));};exports[_0x0eb1('0x14d')]=function(_0x269569,_0x5cc6d5){var _0x4c9791={};var _0x1c3518={};var _0x19463c;var _0x366d60;return db['User']['findOne']({'where':{'id':_0x269569[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x5cc6d5,null))[_0x0eb1('0x16')](function(_0x2c9600){if(_0x2c9600){_0x19463c=_0x2c9600;_0x1c3518[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](db['WhatsappAccount']['rawAttributes']);_0x1c3518[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x269569['query']);_0x1c3518[_0x0eb1('0xc9')]=_[_0x0eb1('0x5a')](_0x1c3518[_0x0eb1('0x56')],_0x1c3518[_0x0eb1('0x43')]);_0x4c9791[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x1c3518[_0x0eb1('0x56')],qs[_0x0eb1('0x5b')](_0x269569[_0x0eb1('0x43')][_0x0eb1('0x5b')]));_0x4c9791[_0x0eb1('0x47')]=_0x4c9791[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0x4c9791[_0x0eb1('0x47')]:_0x1c3518[_0x0eb1('0x56')];_0x4c9791[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x269569[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0x4c9791[_0x0eb1('0x42')]=qs[_0x0eb1('0xc9')](_[_0x0eb1('0xca')](_0x269569['query'],_0x1c3518['filters']));if(_0x269569['query']['filter']){_0x4c9791[_0x0eb1('0x42')]=_['merge'](_0x4c9791['where'],{'$or':_[_0x0eb1('0x35')](_0x4c9791[_0x0eb1('0x47')],function(_0x5eeac1){var _0x19e2ba={};_0x19e2ba[_0x5eeac1]={'$like':'%'+_0x269569[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'};return _0x19e2ba;})});}_0x4c9791=_['merge']({},_0x4c9791,_0x269569[_0x0eb1('0x5f')]);return _0x19463c[_0x0eb1('0x14d')](_0x4c9791);}})[_0x0eb1('0x16')](function(_0x37517a){if(_0x37517a){_0x366d60=_0x37517a[_0x0eb1('0x4c')];if(!_0x269569[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x4c9791[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x269569[_0x0eb1('0x43')]['limit']);_0x4c9791[_0x0eb1('0x24')]=qs['offset'](_0x269569[_0x0eb1('0x43')][_0x0eb1('0x24')]);}return _0x19463c[_0x0eb1('0x14d')](_0x4c9791);}})[_0x0eb1('0x16')](function(_0x138509){if(_0x138509){return _0x138509?{'count':_0x366d60,'rows':_0x138509}:null;}})['then'](respondWithResult(_0x5cc6d5,null))[_0x0eb1('0x54')](handleError(_0x5cc6d5,null));};exports[_0x0eb1('0x14e')]=function(_0x68b96f,_0x59a783){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x68b96f[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x59a783,null))[_0x0eb1('0x16')](function(_0x16e54f){if(_0x16e54f){return _0x16e54f['addWhatsappAccounts'](_0x68b96f[_0x0eb1('0x61')][_0x0eb1('0x65')],_[_0x0eb1('0x66')](_0x68b96f[_0x0eb1('0x61')],[_0x0eb1('0x65'),'id'])||{});}})[_0x0eb1('0x16')](respondWithResult(_0x59a783,null))[_0x0eb1('0x54')](handleError(_0x59a783,null));};exports['removeWhatsappAccounts']=function(_0x43fc39,_0x338ca5){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x43fc39[_0x0eb1('0x62')]['id']}})['then'](handleEntityNotFound(_0x338ca5,null))['then'](function(_0x3be23c){if(_0x3be23c){return _0x3be23c[_0x0eb1('0x14f')](_0x43fc39[_0x0eb1('0x43')][_0x0eb1('0x65')]);}})['then'](respondWithStatusCode(_0x338ca5,null))['catch'](handleError(_0x338ca5,null));};exports[_0x0eb1('0x150')]=function(_0x5d52cf,_0x3a9441){var _0xe86329={},_0x3fb5d0={},_0x4fcdd6={'count':0x0,'rows':[]};var _0x2e50e3=db[_0x0eb1('0x151')]['rawAttributes'];_0x3fb5d0[_0x0eb1('0x56')]=_[_0x0eb1('0x58')](_0x2e50e3);_0x3fb5d0[_0x0eb1('0x43')]=_[_0x0eb1('0x58')](_0x5d52cf[_0x0eb1('0x43')]);_0x3fb5d0[_0x0eb1('0xc9')]=_['intersection'](_0x3fb5d0['model'],_0x3fb5d0[_0x0eb1('0x43')]);_0x3fb5d0[_0x0eb1('0xc9')]=_[_0x0eb1('0xfb')](_0x3fb5d0['filters'],[_0x0eb1('0x152'),'$or',_0x0eb1('0x153'),'$gte','$lt',_0x0eb1('0x154'),'$ne','$eq','$not','$between','$notBetween','$in',_0x0eb1('0x155'),_0x0eb1('0x156'),_0x0eb1('0x157'),_0x0eb1('0x158'),_0x0eb1('0x159'),'$like',_0x0eb1('0x15a'),'$contains',_0x0eb1('0x15b'),'$any']);_0xe86329[_0x0eb1('0x47')]=_[_0x0eb1('0x5a')](_0x3fb5d0['model'],qs[_0x0eb1('0x5b')](_0x5d52cf[_0x0eb1('0x43')]['fields']));_0xe86329[_0x0eb1('0x47')]=_0xe86329[_0x0eb1('0x47')][_0x0eb1('0x4c')]?_0xe86329[_0x0eb1('0x47')]:_0x3fb5d0[_0x0eb1('0x56')];if(!_0x5d52cf[_0x0eb1('0x43')]['hasOwnProperty'](_0x0eb1('0xd5'))){_0xe86329[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x5d52cf['query'][_0x0eb1('0x26')]);_0xe86329[_0x0eb1('0x24')]=qs[_0x0eb1('0x24')](_0x5d52cf[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0xe86329[_0x0eb1('0xd2')]=qs[_0x0eb1('0xd3')](_0x5d52cf[_0x0eb1('0x43')][_0x0eb1('0xd3')]);_0xe86329[_0x0eb1('0x42')]=qs['filters'](_[_0x0eb1('0xca')](_0x5d52cf[_0x0eb1('0x43')],_0x3fb5d0[_0x0eb1('0xc9')]));if(_0x5d52cf['query'][_0x0eb1('0x33')]){_0xe86329[_0x0eb1('0x42')]=_[_0x0eb1('0x5e')](_0xe86329['where'],{'$or':_[_0x0eb1('0x35')](_0xe86329[_0x0eb1('0x47')],function(_0x25d2a9){var _0x56eae1={};_0x56eae1[_0x25d2a9]={'$like':'%'+_0x5d52cf['query'][_0x0eb1('0x33')]+'%'};return _0x56eae1;})});}_0xe86329[_0x0eb1('0x42')]={'$and':[_0xe86329[_0x0eb1('0x42')],{'$or':[{'UserId':_0x5d52cf[_0x0eb1('0x62')]['id']},{'OwnerId':_0x5d52cf[_0x0eb1('0x62')]['id']}]}]};_0xe86329=_['merge']({},_0xe86329,_0x5d52cf['options']);var _0x3a3929={'where':_0xe86329[_0x0eb1('0x42')]};return db[_0x0eb1('0x151')]['count'](_0x3a3929)['then'](function(_0x215bdb){_0x4fcdd6[_0x0eb1('0x27')]=_0x215bdb;if(_0x5d52cf['query'][_0x0eb1('0x5c')]){_0xe86329[_0x0eb1('0x44')]=[{'attributes':['id',_0x0eb1('0x15c'),_0x0eb1('0x15d'),_0x0eb1('0xe8')],'model':db[_0x0eb1('0xc8')],'as':_0x0eb1('0x15e')},{'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x15f')],'model':db['VoiceQueue'],'as':_0x0eb1('0xd1')}];}return db[_0x0eb1('0x151')][_0x0eb1('0x49')](_0xe86329);})[_0x0eb1('0x16')](function(_0x52b4da){_0x4fcdd6[_0x0eb1('0x4b')]=_0x52b4da;return _0x4fcdd6;})[_0x0eb1('0x16')](respondWithFilteredResult(_0x3a9441,_0xe86329))['catch'](handleError(_0x3a9441,null));};exports[_0x0eb1('0x160')]=function(_0x3f7fa2,_0x1f5733){if(!_[_0x0eb1('0x6a')](_0x3f7fa2[_0x0eb1('0x2e')]['id'])&&(_0x3f7fa2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x81')||_0x3f7fa2[_0x0eb1('0x2e')][_0x0eb1('0x2c')]=='user')){return db[_0x0eb1('0x3d')][_0x0eb1('0x94')]({'where':{'id':_0x3f7fa2[_0x0eb1('0x62')]['id']},'raw':!![]})[_0x0eb1('0x16')](function(_0x30ac5b){return authService[_0x0eb1('0x161')](_0x30ac5b);})[_0x0eb1('0x16')](function(_0x131229){if(_0x131229){return _0x1f5733[_0x0eb1('0x21')](0xc8)[_0x0eb1('0x23')]({'api_key':_0x131229[_0x0eb1('0x162')]});}else{return _0x1f5733[_0x0eb1('0x21')](0xcc)[_0x0eb1('0x23')]({'message':_0x0eb1('0x163')});}})[_0x0eb1('0x54')](handleError(_0x1f5733,0x193));}else{return _0x1f5733[_0x0eb1('0x21')](0x191)[_0x0eb1('0x23')]({'message':_0x0eb1('0x164')});}};exports[_0x0eb1('0x165')]=function(_0x28662e,_0x12bb29){if(!_[_0x0eb1('0x6a')](_0x28662e[_0x0eb1('0x2e')]['id'])&&(_0x28662e[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x81')||_0x28662e['user']['role']==_0x0eb1('0x2e'))){return db['User'][_0x0eb1('0x38')]({'where':{'id':_0x28662e[_0x0eb1('0x62')]['id']}})['then'](function(_0xbb1e0b){return authService[_0x0eb1('0x166')](_0xbb1e0b);})[_0x0eb1('0x16')](function(_0xcc39a8){return db[_0x0eb1('0x3d')][_0x0eb1('0x60')]({'apiKeyIat':_0xcc39a8[_0x0eb1('0x167')],'apiKeyNonce':_0xcc39a8[_0x0eb1('0x168')]},{'where':{'id':_0x28662e[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](function(){return _0x12bb29['status'](0xc8)[_0x0eb1('0x23')]({'api_key':_0xcc39a8[_0x0eb1('0x162')]});});})['catch'](handleError(_0x12bb29,0x193));}else{return _0x12bb29[_0x0eb1('0x21')](0x191)['json']({'message':_0x0eb1('0x164')});}};exports[_0x0eb1('0x169')]=function(_0x35b6ca,_0x39f6f4){if(!_[_0x0eb1('0x6a')](_0x35b6ca[_0x0eb1('0x2e')]['id'])&&(_0x35b6ca[_0x0eb1('0x2e')][_0x0eb1('0x2c')]=='admin'||_0x35b6ca[_0x0eb1('0x2e')][_0x0eb1('0x2c')]==_0x0eb1('0x2e'))){return db[_0x0eb1('0x3d')][_0x0eb1('0x38')]({'where':{'id':_0x35b6ca[_0x0eb1('0x62')]['id']}})[_0x0eb1('0x16')](handleEntityNotFound(_0x39f6f4,null))[_0x0eb1('0x16')](function(_0x3e4373){if(_0x3e4373&&_0x3e4373[_0x0eb1('0x16a')]&&_0x3e4373[_0x0eb1('0x16b')])return _0x3e4373;else throw{'message':_0x0eb1('0x16c')};})['then'](function(){return db[_0x0eb1('0x3d')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x35b6ca[_0x0eb1('0x62')]['id']}});})['then'](respondWithStatusCode(_0x39f6f4,0xc8))[_0x0eb1('0x54')](handleError(_0x39f6f4,0x193));}else{return _0x39f6f4[_0x0eb1('0x21')](0x191)[_0x0eb1('0x23')]({'message':_0x0eb1('0x164')});}};exports['whoami']=function(_0x5e5407,_0x32de7b){var _0x5f14e3=_0x5e5407['user'][_0x0eb1('0xa7')]({'plain':!![]});if(!_0x5f14e3){return _0x32de7b[_0x0eb1('0x21')](0x191)['send'](_0x0eb1('0x16d'));}else{Promise[_0x0eb1('0x10f')]()['then'](function(){if(_0x5e5407[_0x0eb1('0x43')][_0x0eb1('0x46')]!==_0x0eb1('0x45'))return;return _0x5e5407['user']['getUserSetting']();})[_0x0eb1('0x16')](function(_0xa3f05f){if(!_0xa3f05f)return;return _0xa3f05f['get']({'plain':!![]});})['then'](function(_0x16463a){_0x5f14e3[_0x0eb1('0x46')]=_0x16463a;return _0x32de7b[_0x0eb1('0x21')](0xc8)[_0x0eb1('0x23')](_0x5f14e3);});}};exports['getPresence']=function(_0x28b854,_0x57da28){var _0x1e9e3c={'offset':0x0},_0x21fdf7={'count':0x0,'rows':[]};Promise['resolve']()[_0x0eb1('0x16')](function(){if(!_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]&&!_0x28b854[_0x0eb1('0x43')]['teams']&&!_0x28b854[_0x0eb1('0x43')]['queues'])return[];return Promise[_0x0eb1('0x10f')]()['then'](function(){var _0x4b2355=[];if(!_[_0x0eb1('0x16e')](_0x28b854[_0x0eb1('0x43')]['teams'])){_0x4b2355[_0x0eb1('0x48')](db[_0x0eb1('0x10c')][_0x0eb1('0x49')]({'attributes':['id',_0x0eb1('0x39')],'where':{'id':_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x16f')]}}));}if(!_[_0x0eb1('0x16e')](_0x28b854['query']['queues'])){_0x4b2355[_0x0eb1('0x48')](db[_0x0eb1('0xa6')]['findAll']({'attributes':['id',_0x0eb1('0x39')],'type':_0x0eb1('0x170'),'where':{'id':_0x28b854['query'][_0x0eb1('0x171')]}}));}return Promise[_0x0eb1('0x53')](_0x4b2355);})['then'](function(_0x41a43c){var _0x169046=_[_0x0eb1('0x172')](_0x41a43c)[_0x0eb1('0x35')](function(_0x4c916d){return _0x4c916d['getAgents']({'attributes':['id','name',_0x0eb1('0x67'),_0x0eb1('0x9b')],'raw':!![]});});return Promise['all'](_0x169046);})[_0x0eb1('0x16')](function(_0x5d855f){var _0x1704d7=_[_0x0eb1('0x172')](_0x5d855f);if(!_0x28b854['query'][_0x0eb1('0x33')])return _0x1704d7;if(_[_0x0eb1('0x16e')](_0x1704d7)){return db[_0x0eb1('0x3d')][_0x0eb1('0x49')]({'attributes':['id',_0x0eb1('0x39'),_0x0eb1('0x67'),_0x0eb1('0x9b')],'where':{'role':_0x0eb1('0x30'),'$or':[db[_0x0eb1('0x6c')][_0x0eb1('0x42')](db[_0x0eb1('0x6c')]['fn'](_0x0eb1('0x173'),db['sequelize'][_0x0eb1('0x174')]('name')),{'$like':'%'+_0x28b854['query'][_0x0eb1('0x33')][_0x0eb1('0xa2')]()+'%'}),{'internal':{'$like':'%'+_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]+'%'}}]},'raw':!![]});}else{return _(_0x1704d7)['flatten']()[_0x0eb1('0x33')](function(_0x5c5097){return _0x5c5097[_0x0eb1('0x39')]['toLowerCase']()['includes'](_0x28b854['query'][_0x0eb1('0x33')][_0x0eb1('0xa2')]())||_0x5c5097['internal'][_0x0eb1('0x175')]()[_0x0eb1('0x37')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x33')]);})[_0x0eb1('0x36')]();}})[_0x0eb1('0x16')](function(_0x494b22){var _0x190539='name';var _0x258a4d=_0x0eb1('0x176');if(_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')]){_0x258a4d=_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')][0x0]==='-'?_0x0eb1('0x177'):'asc';_0x190539=_0x258a4d===_0x0eb1('0x176')?_0x28b854['query']['sort']:_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xd3')][_0x0eb1('0x178')](0x1);}return _(_0x494b22)[_0x0eb1('0x179')]('id')[_0x0eb1('0x17a')]([function(_0x2eb355){return _0x190539===_0x0eb1('0x39')?_0x2eb355[_0x190539][_0x0eb1('0xa2')]():_0x2eb355[_0x190539];}],[_0x258a4d])[_0x0eb1('0x35')](function(_0x316d91){return _[_0x0eb1('0xca')](_0x316d91,['id',_0x0eb1('0x39'),_0x0eb1('0x67'),_0x0eb1('0x9b')]);})[_0x0eb1('0x36')]();})[_0x0eb1('0x16')](function(_0x5a0e93){return amiClient['request'](_0x0eb1('0x2f'),_0x28b854)['then'](function(_0x34a446){if(_0x34a446[_0x0eb1('0x1d')])throw new Error(_0x0eb1('0x17b'));var _0x56942f=_0x34a446[_0x0eb1('0x1f')];var _0x2d35b1=jayson[_0x0eb1('0x13')][_0x0eb1('0x14')]({'port':0x232c});return _0x2d35b1[_0x0eb1('0x15')](_0x0eb1('0x2f'),_0x28b854)['then'](function(_0x24baab){if(_0x24baab[_0x0eb1('0x1d')])throw new Error(_0x0eb1('0x17c'));var _0x34b03d=_0x24baab[_0x0eb1('0x1f')];return _['merge']({},_0x34b03d,_0x56942f);});})[_0x0eb1('0x16')](function(_0x5342b4){return _['map'](_0x5a0e93,function(_0x839045){var _0x233129=_[_0x0eb1('0x38')](_0x5342b4[_0x0eb1('0x4b')],['id',_0x839045['id']]);if(!_0x233129||!_0x839045[_0x0eb1('0x9b')]){_0x839045[_0x0eb1('0x21')]='offline';}else if(_0x233129[_0x0eb1('0xa9')]){_0x839045[_0x0eb1('0x21')]=_0x0eb1('0xff');}else{_0x839045[_0x0eb1('0x21')]=_[_0x0eb1('0x37')]([_0x0eb1('0x17d'),'unknown','unavailable','ringing',null,undefined],_0x233129['voiceStatus'])?_0x0eb1('0x9b'):'busy';}return _0x839045;});});});})[_0x0eb1('0x16')](function(_0x3c2a6b){if(!_0x28b854[_0x0eb1('0x43')][_0x0eb1('0xcb')](_0x0eb1('0xd5'))){_0x1e9e3c[_0x0eb1('0x26')]=qs[_0x0eb1('0x26')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x26')]||0xa);_0x1e9e3c['offset']=qs[_0x0eb1('0x24')](_0x28b854[_0x0eb1('0x43')][_0x0eb1('0x24')]);}_0x21fdf7[_0x0eb1('0x27')]=_0x3c2a6b[_0x0eb1('0x4c')];_0x21fdf7['rows']=_0x1e9e3c['limit']?_0x3c2a6b[_0x0eb1('0x17e')](_0x1e9e3c[_0x0eb1('0x24')],_0x1e9e3c[_0x0eb1('0x24')]+_0x1e9e3c[_0x0eb1('0x26')]):_0x3c2a6b;return _0x21fdf7;})[_0x0eb1('0x16')](respondWithFilteredResult(_0x57da28,_0x1e9e3c))['catch'](handleError(_0x57da28,null));};function get_open_tabs(_0x392ec9,_0x58c9f6){var _0x2dfee8=_0x392ec9[_0x0eb1('0x17f')](0x0)['toUpperCase']()+_0x392ec9[_0x0eb1('0x17e')](0x1);var _0x561e67={'type':db[_0x0eb1('0x8c')][_0x0eb1('0x6d')]['SELECT'],'raw':!![]};return new Promise(function(_0x3a7853,_0x2c9aa0){var _0x3b8677=squel[_0x0eb1('0x180')]()[_0x0eb1('0x181')](_0x0eb1('0x182')+_0x2dfee8+_0x0eb1('0x183'),'id')[_0x0eb1('0x181')](_0x0eb1('0x184'))[_0x0eb1('0x6f')](_0x0eb1('0x185')+_0x392ec9+_0x0eb1('0x186'),'ui')['where'](_0x0eb1('0x187'),_0x58c9f6['id']);return db[_0x0eb1('0x6c')][_0x0eb1('0x43')](_0x3b8677[_0x0eb1('0x175')](),_0x561e67)[_0x0eb1('0x16')](function(_0x319432){_0x58c9f6[_0x2dfee8+_0x0eb1('0x188')]=_0x319432;_0x3a7853(_0x319432);})[_0x0eb1('0x54')](function(_0x3c27aa){_0x2c9aa0(_0x3c27aa);});});}
\ No newline at end of file
index 0607b6c..e368d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73cc=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','User','save'];(function(_0x59e95d,_0x552501){var _0x1e53e5=function(_0xab9be9){while(--_0xab9be9){_0x59e95d['push'](_0x59e95d['shift']());}};_0x1e53e5(++_0x552501);}(_0x73cc,0x1d9));var _0xc73c=function(_0xc552f9,_0x5ac2d2){_0xc552f9=_0xc552f9-0x0;var _0x56fcce=_0x73cc[_0xc552f9];return _0x56fcce;};'use strict';var EventEmitter=require(_0xc73c('0x0'));var User=require(_0xc73c('0x1'))['db'][_0xc73c('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc73c('0x3'),'afterUpdate':_0xc73c('0x4'),'afterDestroy':'remove'};function emitEvent(_0xa7b893){return function(_0x2bfa0e,_0x222f1f,_0x1fab39){UserEvents[_0xc73c('0x5')](_0xa7b893+':'+_0x2bfa0e['id'],_0x2bfa0e);UserEvents[_0xc73c('0x5')](_0xa7b893,_0x2bfa0e);_0x1fab39(null);};}for(var e in events){if(events[_0xc73c('0x6')](e)){var event=events[e];User[_0xc73c('0x7')](e,emitEvent(event));}}module[_0xc73c('0x8')]=UserEvents;
\ No newline at end of file
+var _0x3d71=['User','save','remove','emit','exports'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3d71,0xb9));var _0x13d7=function(_0x4453a9,_0x217f6c){_0x4453a9=_0x4453a9-0x0;var _0x2828ea=_0x3d71[_0x4453a9];return _0x2828ea;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0x13d7('0x0')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x13d7('0x1'),'afterUpdate':'update','afterDestroy':_0x13d7('0x2')};function emitEvent(_0x36a78b){return function(_0x180c32,_0x59fd2d,_0x1472b5){UserEvents[_0x13d7('0x3')](_0x36a78b+':'+_0x180c32['id'],_0x180c32);UserEvents[_0x13d7('0x3')](_0x36a78b,_0x180c32);_0x1472b5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x13d7('0x4')]=UserEvents;
\ No newline at end of file
index 9cd1e09..9094f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc03=['jayson/promise','./user.attributes','google','length','from-sip','format','%s%s','prefix','push','CDR(type)=%s','chanspy','merge','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','wav','WAV','gsm','context','system','Set','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','Hangup','priority','VoiceChanSpy','internal','concat','catch','exports','models','define','User','users','userProfileId','undefined','then','updateMd5Password','updatePassword','resolve','changed','UserProfile','find','privacyEnabled','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','from','sha1','provider','Invalid\x20password','makeSalt','salt','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','result','message','update','findAll','findOne','PAUSE','channel','MemberReport','map','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','faxPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','bluebird','util','md5','lodash'];(function(_0x12b5e4,_0x538bea){var _0x22c3b0=function(_0x424649){while(--_0x424649){_0x12b5e4['push'](_0x12b5e4['shift']());}};_0x22c3b0(++_0x538bea);}(_0xdc03,0x65));var _0x3dc0=function(_0x3e8eb5,_0x37b412){_0x3e8eb5=_0x3e8eb5-0x0;var _0x40b382=_0xdc03[_0x3e8eb5];return _0x40b382;};'use strict';var BPromise=require(_0x3dc0('0x0'));var crypto=require('crypto');var util=require(_0x3dc0('0x1'));var md5=require(_0x3dc0('0x2'));var moment=require('moment');var _=require(_0x3dc0('0x3'));var jayson=require(_0x3dc0('0x4'));var attributes=require(_0x3dc0('0x5'));var authTypes=[_0x3dc0('0x6')];var validatePresenceOf=function(_0x3b41f0){return _0x3b41f0&&_0x3b41f0[_0x3dc0('0x7')];};var getChanSpyApplications=function(_0x499cbe,_0x3c5407,_0x20c408){var _0xb96fd0={'context':_0x499cbe['context']||_0x3dc0('0x8'),'type':'system','isApp':![],'UserId':_0x499cbe['id']};var _0x51e98a=[];for(var _0x51f26b=0x0,_0x7d59a8=0x1;_0x51f26b<_0x20c408[_0x3dc0('0x7')];_0x51f26b++,_0x7d59a8=0x1){var _0xb5ff98={'exten':util[_0x3dc0('0x9')](_0x3dc0('0xa'),_0x20c408[_0x51f26b][_0x3dc0('0xb')],_0x3c5407),'ChanSpyId':_0x20c408[_0x51f26b]['id']};_0x51e98a[_0x3dc0('0xc')](_['merge']({'app':'Set','appdata':util[_0x3dc0('0x9')](_0x3dc0('0xd'),_0x3dc0('0xe')),'priority':_0x7d59a8++},_0xb96fd0,_0xb5ff98));if(_0x20c408[_0x51f26b]['record']){_0x51e98a['push'](_[_0x3dc0('0xf')]({'app':'MixMonitor','appdata':util[_0x3dc0('0x9')]('${UNIQUEID}.%s,a',_0x20c408[_0x51f26b]['recordingFormat']),'priority':_0x7d59a8++},_0xb96fd0,_0xb5ff98));}if(_0x20c408[_0x51f26b][_0x3dc0('0x10')]){_0x51e98a[_0x3dc0('0xc')](_[_0x3dc0('0xf')]({'app':_0x3dc0('0x11'),'appdata':_0x20c408[_0x51f26b][_0x3dc0('0x12')],'priority':_0x7d59a8++},_0xb96fd0,_0xb5ff98));}_0x51e98a[_0x3dc0('0xc')](_[_0x3dc0('0xf')]({'app':_0x3dc0('0x13'),'appdata':util['format'](_0x3dc0('0x14'),_0x499cbe[_0x3dc0('0x15')],_0x20c408[_0x51f26b]['options']?_0x20c408[_0x51f26b][_0x3dc0('0x16')][_0x3dc0('0x17')](''):''),'priority':_0x7d59a8++},_0xb96fd0,_0xb5ff98));if(_0x20c408[_0x51f26b][_0x3dc0('0x18')]){_0x51e98a['push'](_[_0x3dc0('0xf')]({'app':_0x3dc0('0x19'),'priority':_0x7d59a8++},_0xb96fd0,_0xb5ff98));}}return _0x51e98a;};var getUserApplications=function(_0x200a15,_0x5a67af){var _0x415974=[_0x3dc0('0x1a'),_0x3dc0('0x1b'),_0x3dc0('0x1c')];var _0x24bf8c={'context':_0x200a15[_0x3dc0('0x1d')]||_0x3dc0('0x8'),'exten':_0x5a67af,'type':_0x3dc0('0x1e'),'isApp':![],'UserId':_0x200a15['id']};var _0x22d36e=[{'app':_0x3dc0('0x1f'),'appdata':'CDR(type)=internal'}];if(_0x200a15[_0x3dc0('0x20')]&&_[_0x3dc0('0x21')](_0x415974,_0x200a15[_0x3dc0('0x20')])){_0x22d36e['push']({'app':'Set','appdata':_0x3dc0('0x22')});_0x22d36e[_0x3dc0('0xc')]({'app':_0x3dc0('0x1f'),'appdata':util[_0x3dc0('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x200a15[_0x3dc0('0x20')])});_0x22d36e['push']({'app':'Dial','appdata':util[_0x3dc0('0x9')](_0x3dc0('0x23'),_0x200a15[_0x3dc0('0x15')])});}else{_0x22d36e[_0x3dc0('0xc')]({'app':_0x3dc0('0x24'),'appdata':util['format']('SIP/%s,,tTxX',_0x200a15[_0x3dc0('0x15')])});}_0x22d36e['push']({'app':_0x3dc0('0x25')});for(var _0x1ec992=0x0;_0x1ec992<_0x22d36e['length'];_0x1ec992++){_0x22d36e[_0x1ec992][_0x3dc0('0x26')]=_0x1ec992+0x1;_0x22d36e[_0x1ec992]=_['defaults'](_0x22d36e[_0x1ec992],_0x24bf8c);}return _0x22d36e;};var getChanSpyPromise=function(_0x3348b6,_0xf1f3e6){return new BPromise(function(_0x59593c,_0x4c9486){return _0x3348b6[_0x3dc0('0x27')]['findAll']()['then'](function(_0x4ce07c){if(_0x4ce07c){var _0xd9c8e3=getChanSpyApplications(_0xf1f3e6,_0xf1f3e6[_0x3dc0('0x28')],_0x4ce07c);if(_0xf1f3e6[_0x3dc0('0x28')]!=_0xf1f3e6['name']){_0xd9c8e3=_0xd9c8e3[_0x3dc0('0x29')](getChanSpyApplications(_0xf1f3e6,_0xf1f3e6[_0x3dc0('0x15')],_0x4ce07c));}return _0x59593c(_0xd9c8e3);}return _0x59593c([]);})[_0x3dc0('0x2a')](function(_0x576b63){_0x4c9486(_0x576b63);});});};module[_0x3dc0('0x2b')]=function(_0x4dc781){var _0x3c47b7=_0x4dc781[_0x3dc0('0x2c')];return _0x4dc781[_0x3dc0('0x2d')](_0x3dc0('0x2e'),attributes,{'tableName':_0x3dc0('0x2f'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x7fa507,_0x156a7c,_0x4b8783){var _0x159796=typeof _0x7fa507[_0x3dc0('0x30')]===_0x3dc0('0x31')?BPromise['resolve'](null):_0x3c47b7['UserProfile']['find']({'where':{'id':_0x7fa507[_0x3dc0('0x30')]}});_0x159796[_0x3dc0('0x32')](function(_0x27bc5c){if(_0x27bc5c){_0x7fa507['privacyEnabled']=_0x27bc5c['privacyEnabled'];}})[_0x3dc0('0x32')](function(){_0x7fa507[_0x3dc0('0x33')]();_0x7fa507[_0x3dc0('0x34')](_0x4b8783);})['catch'](function(_0xcd328b){_0x4b8783(_0xcd328b);});},'beforeUpdate':function(_0xd7d3b7,_0x27f435,_0x561096){Promise[_0x3dc0('0x35')]()[_0x3dc0('0x32')](function(){if(_0xd7d3b7[_0x3dc0('0x36')](_0x3dc0('0x30'))===![])return;return _0x3c47b7[_0x3dc0('0x37')][_0x3dc0('0x38')]({'where':{'id':_0xd7d3b7[_0x3dc0('0x30')]}})['then'](function(_0x316604){if(_0x316604)_0xd7d3b7['privacyEnabled']=_0x316604[_0x3dc0('0x39')];return;});})[_0x3dc0('0x32')](function(){if(_0xd7d3b7[_0x3dc0('0x36')](_0x3dc0('0x12'))){_0xd7d3b7[_0x3dc0('0x33')]();return _0xd7d3b7[_0x3dc0('0x34')](_0x561096);}_0x561096();})[_0x3dc0('0x2a')](function(_0x4eb5e9){_0x561096(_0x4eb5e9);});},'afterCreate':function(_0x5f0676,_0x5e8dfa,_0xd171f6){var _0x197d92=getUserApplications(_0x5f0676,_0x5f0676[_0x3dc0('0x28')]);if(_0x5f0676['internal']!=_0x5f0676[_0x3dc0('0x15')]){_0x197d92=_0x197d92['concat'](getUserApplications(_0x5f0676,_0x5f0676[_0x3dc0('0x15')]));}return Promise[_0x3dc0('0x35')]()[_0x3dc0('0x32')](function(){if(!_0x5f0676['userSetting']){return _0x5f0676[_0x3dc0('0x3a')]({'clientSideLoggingLevel':_0x3dc0('0x3b'),'clientSideLoggingEnabled':![]});}})[_0x3dc0('0x32')](function(){return _0x3c47b7[_0x3dc0('0x3c')][_0x3dc0('0x3d')](_0x197d92);})['then'](function(){if(_0x5f0676[_0x3dc0('0xe')]){return getChanSpyPromise(_0x3c47b7,_0x5f0676);}})[_0x3dc0('0x32')](function(_0x11e95a){if(_0x11e95a&&_0x11e95a['length']){return _0x3c47b7[_0x3dc0('0x3c')]['bulkCreate'](_0x11e95a);}})[_0x3dc0('0x32')](function(){_0xd171f6();})[_0x3dc0('0x2a')](function(_0x2715f8){_0xd171f6(_0x2715f8);});},'afterUpdate':function(_0x331dba,_0xc409c,_0x2b35ed){return BPromise['resolve']()[_0x3dc0('0x32')](function(){if(_0x331dba['changed'](_0x3dc0('0xe'))||_0x331dba[_0x3dc0('0x36')](_0x3dc0('0x1d'))){return _0x3c47b7['VoiceExtension'][_0x3dc0('0x3e')]({'where':{'UserId':_0x331dba['id'],'type':_0x3dc0('0x1e'),'ChanSpyId':{'$ne':null}}})[_0x3dc0('0x32')](function(){if(_0x331dba[_0x3dc0('0xe')]){return getChanSpyPromise(_0x3c47b7,_0x331dba)[_0x3dc0('0x32')](function(_0xb21e0b){if(_0xb21e0b&&_0xb21e0b[_0x3dc0('0x7')]){return _0x3c47b7['VoiceExtension'][_0x3dc0('0x3d')](_0xb21e0b);}});}});}})[_0x3dc0('0x32')](function(){if(_0x331dba[_0x3dc0('0x36')](_0x3dc0('0x20'))||_0x331dba[_0x3dc0('0x36')]('context')){return _0x3c47b7[_0x3dc0('0x3c')][_0x3dc0('0x3e')]({'where':{'UserId':_0x331dba['id'],'type':_0x3dc0('0x1e'),'ChanSpyId':null}})[_0x3dc0('0x32')](function(){var _0x52e8b9=getUserApplications(_0x331dba,_0x331dba[_0x3dc0('0x28')]);if(_0x331dba[_0x3dc0('0x28')]!=_0x331dba[_0x3dc0('0x15')]){_0x52e8b9=_0x52e8b9[_0x3dc0('0x29')](getUserApplications(_0x331dba,_0x331dba[_0x3dc0('0x15')]));}return _0x3c47b7[_0x3dc0('0x3c')][_0x3dc0('0x3d')](_0x52e8b9);});}})['then'](function(){_0x2b35ed();})[_0x3dc0('0x2a')](function(_0x5863c8){_0x2b35ed(_0x5863c8);});},'afterDestroy':function(_0x152c12){return _0x3c47b7[_0x3dc0('0x3c')][_0x3dc0('0x3e')]({'where':{'UserId':_0x152c12['id'],'type':_0x3dc0('0x1e')}});}},'instanceMethods':{'authenticate':function(_0x1b84e6,_0x370cfe){if(!_0x370cfe){return this[_0x3dc0('0x12')]===this[_0x3dc0('0x3f')](_0x1b84e6);}var _0x39d5e6=this;this[_0x3dc0('0x3f')](_0x1b84e6,function(_0x3689e0,_0x1879e7){if(_0x3689e0){_0x370cfe(_0x3689e0);}if(_0x39d5e6[_0x3dc0('0x12')]===_0x1879e7){_0x370cfe(null,!![]);}else{_0x370cfe(null,![]);}});},'makeSalt':function(_0x470faf,_0x448c8f){var _0x430dc1=0x10;if(typeof arguments[0x0]===_0x3dc0('0x40')){_0x448c8f=arguments[0x0];_0x470faf=_0x430dc1;}else if(typeof arguments[0x1]===_0x3dc0('0x40')){_0x448c8f=arguments[0x1];}else{throw new Error(_0x3dc0('0x41'));}if(!_0x470faf){_0x470faf=_0x430dc1;}return crypto['randomBytes'](_0x470faf,function(_0x58a9b1,_0x275945){if(_0x58a9b1){_0x448c8f(_0x58a9b1);}return _0x448c8f(null,_0x275945[_0x3dc0('0x42')](_0x3dc0('0x43')));});},'encryptPassword':function(_0x3a2f4a,_0x1a0c67){if(!_0x3a2f4a||!this['salt']){return _0x1a0c67?_0x1a0c67(null):null;}var _0x1f4d02=0x2710;var _0x1eadfb=0x40;var _0x9ede10=Buffer[_0x3dc0('0x44')](this['salt'],_0x3dc0('0x43'));if(!_0x1a0c67){return crypto['pbkdf2Sync'](_0x3a2f4a,_0x9ede10,_0x1f4d02,_0x1eadfb,'sha1')[_0x3dc0('0x42')]('base64');}return crypto['pbkdf2'](_0x3a2f4a,_0x9ede10,_0x1f4d02,_0x1eadfb,_0x3dc0('0x45'),function(_0x46df28,_0x5424c1){if(_0x46df28){_0x1a0c67(_0x46df28);}return _0x1a0c67(null,_0x5424c1[_0x3dc0('0x42')](_0x3dc0('0x43')));});},'updatePassword':function(_0x5ada95){if(!this['password']){return _0x5ada95(null);}if(!validatePresenceOf(this[_0x3dc0('0x12')])&&authTypes['indexOf'](this[_0x3dc0('0x46')])===-0x1){_0x5ada95(new Error(_0x3dc0('0x47')));}var _0x563e44=this;this[_0x3dc0('0x48')](function(_0x2626c5,_0x2cf469){if(_0x2626c5){return _0x5ada95(_0x2626c5);}_0x563e44[_0x3dc0('0x49')]=_0x2cf469;_0x563e44[_0x3dc0('0x3f')](_0x563e44['password'],function(_0x487471,_0xfda90d){if(_0x487471){_0x5ada95(_0x487471);}_0x563e44['password']=_0xfda90d;_0x5ada95(null);});});},'updateMd5Password':function(){this[_0x3dc0('0x4a')]=md5(this[_0x3dc0('0x15')]+':asterisk:'+this[_0x3dc0('0x12')]);return this[_0x3dc0('0x4a')];},'getRealtimeData':function(){var _0x589ec5={'id':this['id']};var _0x2d4b79=jayson[_0x3dc0('0x4b')][_0x3dc0('0x4c')]({'port':0x232a});var _0x219004=jayson['client'][_0x3dc0('0x4c')]({'port':0x232c});var _0x3d561b={};var _0x190280={};return _0x2d4b79[_0x3dc0('0x4d')](_0x3dc0('0x4e'),_0x589ec5)[_0x3dc0('0x32')](function(_0x50634e){if(_0x50634e[_0x3dc0('0x3b')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x3d561b=_0x50634e['result'];return _0x219004['request'](_0x3dc0('0x4e'),_0x589ec5);})[_0x3dc0('0x32')](function(_0x42ed52){if(_0x42ed52[_0x3dc0('0x3b')]){throw new Error(_0x3dc0('0x4f'));}_0x190280=_0x42ed52['result'];var _0x379866=_[_0x3dc0('0xf')]({},_0x3d561b,_0x190280);return _0x379866;})[_0x3dc0('0x2a')](function(_0x5239a5){throw _0x5239a5;});},'unpause':function(_0x25cdcc,_0x5437d2=_0x3dc0('0x50')){var _0x1db14b=this;var _0x57a15b={};return Promise['resolve']()[_0x3dc0('0x32')](function(){if(!_0x25cdcc||_0x25cdcc===_0x3dc0('0x51')&&_0x5437d2===_0x3dc0('0x50')){var _0x3316d9=jayson[_0x3dc0('0x4b')][_0x3dc0('0x4c')]({'port':0x232a});return _0x3316d9['request'](_0x3dc0('0x52'),{'id':_0x1db14b['id'],'name':_0x1db14b['name'],'pause':![]})[_0x3dc0('0x32')](function(_0x17d69d){if(_0x17d69d[_0x3dc0('0x3b')]){throw new Error(util[_0x3dc0('0x9')](_0x3dc0('0x53'),_0x1db14b['id'],_0x1db14b['name']));}return _0x17d69d[_0x3dc0('0x54')][_0x3dc0('0x55')];});}})['then'](function(){if(!_0x25cdcc||_0x25cdcc===_0x3dc0('0x51')){return _0x3c47b7['UserVoiceQueueRt'][_0x3dc0('0x56')]({'paused':0x0},{'where':{'UserId':_0x1db14b['id']},'individualHooks':!![]});}})['then'](function(){var _0x3e5fea=!_0x25cdcc?_0x3dc0('0x57'):_0x3dc0('0x58');var _0x15d06e={'membername':_0x1db14b[_0x3dc0('0x15')],'type':_0x3dc0('0x59'),'exitAt':null};if(_0x25cdcc){_0x15d06e[_0x3dc0('0x5a')]=_0x25cdcc;}return _0x3c47b7[_0x3dc0('0x5b')][_0x3e5fea]({'where':_0x15d06e});})[_0x3dc0('0x32')](function(_0x3f9506){if(_0x3f9506){var _0x489216=Array['isArray'](_0x3f9506)?_0x3f9506:[_0x3f9506];var _0x493b83=_0x489216[_0x3dc0('0x5c')](function(_0x449522){return _0x449522['update']({'exitAt':moment()[_0x3dc0('0x9')](_0x3dc0('0x5d')),'data2':_0x5437d2});});return Promise['all'](_0x493b83);}})['then'](function(){if(!_0x25cdcc){_0x57a15b[_0x3dc0('0x5e')]=![];_0x57a15b[_0x3dc0('0x5f')]=![];_0x57a15b['chatPause']=![];_0x57a15b[_0x3dc0('0x60')]=![];_0x57a15b['smsPause']=![];_0x57a15b['whatsappPause']=![];_0x57a15b[_0x3dc0('0x61')]=![];}else{_0x57a15b[_0x25cdcc+_0x3dc0('0x62')]=![];}return _0x1db14b[_0x3dc0('0x63')]();})['then'](function(_0x4f84d5){var _0x234318=require(_0x3dc0('0x64'));var _0x2494c4=_0x234318[_0x3dc0('0x65')]();_0x2494c4[_0x3dc0('0x66')](function(_0x1a7679){var _0x725fb=_0x1a7679+_0x3dc0('0x67');_0x1db14b[_0x3dc0('0x68')]([_0x725fb],_0x4f84d5[_0x725fb]);});return _0x1db14b[_0x3dc0('0x56')](_0x57a15b);})[_0x3dc0('0x2a')](function(_0x30cc7f){throw _0x30cc7f;});}}});};
\ No newline at end of file
+var _0x9221=['prefix','push','Set','CDR(type)=%s','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','options','join','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','internal','catch','exports','models','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','then','updateMd5Password','updatePassword','changed','concat','userSetting','createUserSetting','error','VoiceExtension','chanspy','bulkCreate','destroy','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','provider','Invalid\x20password','makeSalt','encryptPassword','md5secret',':asterisk:','client','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','manual','voice','http','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','MemberReport','isArray','map','all','voicePause','mailPause','chatPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','crypto','util','moment','lodash','./user.attributes','google','length','context','from-sip','system','format'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x9221,0x64));var _0x1922=function(_0x3c3ec7,_0x309339){_0x3c3ec7=_0x3c3ec7-0x0;var _0x23e52c=_0x9221[_0x3c3ec7];return _0x23e52c;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x1922('0x0'));var util=require(_0x1922('0x1'));var md5=require('md5');var moment=require(_0x1922('0x2'));var _=require(_0x1922('0x3'));var jayson=require('jayson/promise');var attributes=require(_0x1922('0x4'));var authTypes=[_0x1922('0x5')];var validatePresenceOf=function(_0x459eee){return _0x459eee&&_0x459eee[_0x1922('0x6')];};var getChanSpyApplications=function(_0x263f7f,_0x1944a5,_0x1351a0){var _0x5aa05c={'context':_0x263f7f[_0x1922('0x7')]||_0x1922('0x8'),'type':_0x1922('0x9'),'isApp':![],'UserId':_0x263f7f['id']};var _0x47c225=[];for(var _0x4632ac=0x0,_0x5e9060=0x1;_0x4632ac<_0x1351a0[_0x1922('0x6')];_0x4632ac++,_0x5e9060=0x1){var _0xc1ae7={'exten':util[_0x1922('0xa')]('%s%s',_0x1351a0[_0x4632ac][_0x1922('0xb')],_0x1944a5),'ChanSpyId':_0x1351a0[_0x4632ac]['id']};_0x47c225[_0x1922('0xc')](_['merge']({'app':_0x1922('0xd'),'appdata':util['format'](_0x1922('0xe'),'chanspy'),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));if(_0x1351a0[_0x4632ac][_0x1922('0xf')]){_0x47c225[_0x1922('0xc')](_[_0x1922('0x10')]({'app':'MixMonitor','appdata':util['format'](_0x1922('0x11'),_0x1351a0[_0x4632ac][_0x1922('0x12')]),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}if(_0x1351a0[_0x4632ac][_0x1922('0x13')]){_0x47c225[_0x1922('0xc')](_[_0x1922('0x10')]({'app':'Authenticate','appdata':_0x1351a0[_0x4632ac][_0x1922('0x14')],'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}_0x47c225['push'](_[_0x1922('0x10')]({'app':_0x1922('0x15'),'appdata':util[_0x1922('0xa')](_0x1922('0x16'),_0x263f7f['name'],_0x1351a0[_0x4632ac][_0x1922('0x17')]?_0x1351a0[_0x4632ac][_0x1922('0x17')][_0x1922('0x18')](''):''),'priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));if(_0x1351a0[_0x4632ac]['record']){_0x47c225['push'](_[_0x1922('0x10')]({'app':'StopMixMonitor','priority':_0x5e9060++},_0x5aa05c,_0xc1ae7));}}return _0x47c225;};var getUserApplications=function(_0x3c6f9a,_0x1266c0){var _0x54848e=['wav',_0x1922('0x19'),'gsm'];var _0x23984c={'context':_0x3c6f9a[_0x1922('0x7')]||_0x1922('0x8'),'exten':_0x1266c0,'type':_0x1922('0x9'),'isApp':![],'UserId':_0x3c6f9a['id']};var _0x5dacc5=[{'app':_0x1922('0xd'),'appdata':_0x1922('0x1a')}];if(_0x3c6f9a[_0x1922('0x1b')]&&_[_0x1922('0x1c')](_0x54848e,_0x3c6f9a['extensionMonitor'])){_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0xd'),'appdata':_0x1922('0x1d')});_0x5dacc5['push']({'app':_0x1922('0xd'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x3c6f9a[_0x1922('0x1b')])});_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0x1e'),'appdata':util[_0x1922('0xa')](_0x1922('0x1f'),_0x3c6f9a[_0x1922('0x20')])});}else{_0x5dacc5[_0x1922('0xc')]({'app':_0x1922('0x1e'),'appdata':util[_0x1922('0xa')](_0x1922('0x21'),_0x3c6f9a[_0x1922('0x20')])});}_0x5dacc5['push']({'app':_0x1922('0x22')});for(var _0x58ebb5=0x0;_0x58ebb5<_0x5dacc5[_0x1922('0x6')];_0x58ebb5++){_0x5dacc5[_0x58ebb5][_0x1922('0x23')]=_0x58ebb5+0x1;_0x5dacc5[_0x58ebb5]=_[_0x1922('0x24')](_0x5dacc5[_0x58ebb5],_0x23984c);}return _0x5dacc5;};var getChanSpyPromise=function(_0x392cc9,_0x1bb708){return new BPromise(function(_0x1ea3bf,_0xe37ecc){return _0x392cc9[_0x1922('0x25')][_0x1922('0x26')]()['then'](function(_0x17ecaa){if(_0x17ecaa){var _0x153ebd=getChanSpyApplications(_0x1bb708,_0x1bb708[_0x1922('0x27')],_0x17ecaa);if(_0x1bb708[_0x1922('0x27')]!=_0x1bb708[_0x1922('0x20')]){_0x153ebd=_0x153ebd['concat'](getChanSpyApplications(_0x1bb708,_0x1bb708[_0x1922('0x20')],_0x17ecaa));}return _0x1ea3bf(_0x153ebd);}return _0x1ea3bf([]);})[_0x1922('0x28')](function(_0x1d783c){_0xe37ecc(_0x1d783c);});});};module[_0x1922('0x29')]=function(_0x2a4215){var _0x474e85=_0x2a4215[_0x1922('0x2a')];return _0x2a4215['define'](_0x1922('0x2b'),attributes,{'tableName':_0x1922('0x2c'),'charset':_0x1922('0x2d'),'collate':_0x1922('0x2e'),'hooks':{'beforeCreate':function(_0x40234e,_0x3f3914,_0x483910){var _0xff58ab=typeof _0x40234e[_0x1922('0x2f')]===_0x1922('0x30')?BPromise[_0x1922('0x31')](null):_0x474e85[_0x1922('0x32')][_0x1922('0x33')]({'where':{'id':_0x40234e[_0x1922('0x2f')]}});_0xff58ab['then'](function(_0x349f04){if(_0x349f04){_0x40234e[_0x1922('0x34')]=_0x349f04[_0x1922('0x34')];}})[_0x1922('0x35')](function(){_0x40234e[_0x1922('0x36')]();_0x40234e[_0x1922('0x37')](_0x483910);})['catch'](function(_0x28a789){_0x483910(_0x28a789);});},'beforeUpdate':function(_0x83fd0f,_0x5eaa0b,_0xcf2991){Promise[_0x1922('0x31')]()['then'](function(){if(_0x83fd0f[_0x1922('0x38')](_0x1922('0x2f'))===![])return;return _0x474e85[_0x1922('0x32')]['find']({'where':{'id':_0x83fd0f[_0x1922('0x2f')]}})[_0x1922('0x35')](function(_0x51eb82){if(_0x51eb82)_0x83fd0f[_0x1922('0x34')]=_0x51eb82[_0x1922('0x34')];return;});})[_0x1922('0x35')](function(){if(_0x83fd0f['changed'](_0x1922('0x14'))){_0x83fd0f['updateMd5Password']();return _0x83fd0f[_0x1922('0x37')](_0xcf2991);}_0xcf2991();})['catch'](function(_0x53572f){_0xcf2991(_0x53572f);});},'afterCreate':function(_0x2aec14,_0x350136,_0x5f423d){var _0x119bba=getUserApplications(_0x2aec14,_0x2aec14[_0x1922('0x27')]);if(_0x2aec14[_0x1922('0x27')]!=_0x2aec14[_0x1922('0x20')]){_0x119bba=_0x119bba[_0x1922('0x39')](getUserApplications(_0x2aec14,_0x2aec14['name']));}return Promise['resolve']()[_0x1922('0x35')](function(){if(!_0x2aec14[_0x1922('0x3a')]){return _0x2aec14[_0x1922('0x3b')]({'clientSideLoggingLevel':_0x1922('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x1922('0x35')](function(){return _0x474e85[_0x1922('0x3d')]['bulkCreate'](_0x119bba);})[_0x1922('0x35')](function(){if(_0x2aec14[_0x1922('0x3e')]){return getChanSpyPromise(_0x474e85,_0x2aec14);}})[_0x1922('0x35')](function(_0x8c9e3a){if(_0x8c9e3a&&_0x8c9e3a[_0x1922('0x6')]){return _0x474e85[_0x1922('0x3d')][_0x1922('0x3f')](_0x8c9e3a);}})['then'](function(){_0x5f423d();})[_0x1922('0x28')](function(_0x1e474b){_0x5f423d(_0x1e474b);});},'afterUpdate':function(_0x3f9f64,_0x5df17d,_0x18a891){return BPromise['resolve']()[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x38')](_0x1922('0x3e'))||_0x3f9f64[_0x1922('0x38')](_0x1922('0x7'))){return _0x474e85['VoiceExtension'][_0x1922('0x40')]({'where':{'UserId':_0x3f9f64['id'],'type':_0x1922('0x9'),'ChanSpyId':{'$ne':null}}})[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x3e')]){return getChanSpyPromise(_0x474e85,_0x3f9f64)['then'](function(_0x24dce1){if(_0x24dce1&&_0x24dce1['length']){return _0x474e85[_0x1922('0x3d')][_0x1922('0x3f')](_0x24dce1);}});}});}})[_0x1922('0x35')](function(){if(_0x3f9f64[_0x1922('0x38')](_0x1922('0x1b'))||_0x3f9f64[_0x1922('0x38')](_0x1922('0x7'))){return _0x474e85['VoiceExtension']['destroy']({'where':{'UserId':_0x3f9f64['id'],'type':'system','ChanSpyId':null}})[_0x1922('0x35')](function(){var _0x323af7=getUserApplications(_0x3f9f64,_0x3f9f64[_0x1922('0x27')]);if(_0x3f9f64[_0x1922('0x27')]!=_0x3f9f64[_0x1922('0x20')]){_0x323af7=_0x323af7[_0x1922('0x39')](getUserApplications(_0x3f9f64,_0x3f9f64[_0x1922('0x20')]));}return _0x474e85[_0x1922('0x3d')]['bulkCreate'](_0x323af7);});}})[_0x1922('0x35')](function(){_0x18a891();})[_0x1922('0x28')](function(_0x4ed204){_0x18a891(_0x4ed204);});},'afterDestroy':function(_0x3f7b65){return _0x474e85[_0x1922('0x3d')][_0x1922('0x40')]({'where':{'UserId':_0x3f7b65['id'],'type':_0x1922('0x9')}});}},'instanceMethods':{'authenticate':function(_0x1e6d2f,_0x5b51c2){if(!_0x5b51c2){return this['password']===this['encryptPassword'](_0x1e6d2f);}var _0x2a723e=this;this['encryptPassword'](_0x1e6d2f,function(_0x5e537c,_0x28adf1){if(_0x5e537c){_0x5b51c2(_0x5e537c);}if(_0x2a723e[_0x1922('0x14')]===_0x28adf1){_0x5b51c2(null,!![]);}else{_0x5b51c2(null,![]);}});},'makeSalt':function(_0x22d668,_0x5eab61){var _0x5bacf0=0x10;if(typeof arguments[0x0]==='function'){_0x5eab61=arguments[0x0];_0x22d668=_0x5bacf0;}else if(typeof arguments[0x1]==='function'){_0x5eab61=arguments[0x1];}else{throw new Error(_0x1922('0x41'));}if(!_0x22d668){_0x22d668=_0x5bacf0;}return crypto[_0x1922('0x42')](_0x22d668,function(_0x26d3a0,_0x2fea1c){if(_0x26d3a0){_0x5eab61(_0x26d3a0);}return _0x5eab61(null,_0x2fea1c['toString'](_0x1922('0x43')));});},'encryptPassword':function(_0x245807,_0x35d515){if(!_0x245807||!this[_0x1922('0x44')]){return _0x35d515?_0x35d515(null):null;}var _0x494b84=0x2710;var _0x10c090=0x40;var _0x2dfcb5=Buffer['from'](this[_0x1922('0x44')],_0x1922('0x43'));if(!_0x35d515){return crypto[_0x1922('0x45')](_0x245807,_0x2dfcb5,_0x494b84,_0x10c090,_0x1922('0x46'))[_0x1922('0x47')](_0x1922('0x43'));}return crypto[_0x1922('0x48')](_0x245807,_0x2dfcb5,_0x494b84,_0x10c090,_0x1922('0x46'),function(_0xeb183e,_0xc5b7da){if(_0xeb183e){_0x35d515(_0xeb183e);}return _0x35d515(null,_0xc5b7da[_0x1922('0x47')](_0x1922('0x43')));});},'updatePassword':function(_0x3e6408){if(!this[_0x1922('0x14')]){return _0x3e6408(null);}if(!validatePresenceOf(this[_0x1922('0x14')])&&authTypes['indexOf'](this[_0x1922('0x49')])===-0x1){_0x3e6408(new Error(_0x1922('0x4a')));}var _0x98318b=this;this[_0x1922('0x4b')](function(_0x4b3836,_0x505472){if(_0x4b3836){return _0x3e6408(_0x4b3836);}_0x98318b['salt']=_0x505472;_0x98318b[_0x1922('0x4c')](_0x98318b[_0x1922('0x14')],function(_0x1eef02,_0x46fb40){if(_0x1eef02){_0x3e6408(_0x1eef02);}_0x98318b[_0x1922('0x14')]=_0x46fb40;_0x3e6408(null);});});},'updateMd5Password':function(){this[_0x1922('0x4d')]=md5(this[_0x1922('0x20')]+_0x1922('0x4e')+this[_0x1922('0x14')]);return this['md5secret'];},'getRealtimeData':function(){var _0x229d41={'id':this['id']};var _0x4bb417=jayson[_0x1922('0x4f')]['http']({'port':0x232a});var _0x173601=jayson[_0x1922('0x4f')]['http']({'port':0x232c});var _0x1c1997={};var _0x5bbfc2={};return _0x4bb417[_0x1922('0x50')](_0x1922('0x51'),_0x229d41)[_0x1922('0x35')](function(_0xd6ecb8){if(_0xd6ecb8[_0x1922('0x3c')]){throw new Error(_0x1922('0x52'));}_0x1c1997=_0xd6ecb8['result'];return _0x173601[_0x1922('0x50')](_0x1922('0x51'),_0x229d41);})[_0x1922('0x35')](function(_0xf878a8){if(_0xf878a8[_0x1922('0x3c')]){throw new Error(_0x1922('0x53'));}_0x5bbfc2=_0xf878a8[_0x1922('0x54')];var _0x39f5da=_[_0x1922('0x10')]({},_0x1c1997,_0x5bbfc2);return _0x39f5da;})[_0x1922('0x28')](function(_0x41f53f){throw _0x41f53f;});},'unpause':function(_0x4ff467,_0xb1d467=_0x1922('0x55')){var _0x2a067d=this;var _0x23e688={};return Promise[_0x1922('0x31')]()[_0x1922('0x35')](function(){if(!_0x4ff467||_0x4ff467===_0x1922('0x56')&&_0xb1d467===_0x1922('0x55')){var _0x2cc3a3=jayson[_0x1922('0x4f')][_0x1922('0x57')]({'port':0x232a});return _0x2cc3a3['request'](_0x1922('0x58'),{'id':_0x2a067d['id'],'name':_0x2a067d[_0x1922('0x20')],'pause':![]})[_0x1922('0x35')](function(_0x481d81){if(_0x481d81[_0x1922('0x3c')]){throw new Error(util[_0x1922('0xa')](_0x1922('0x59'),_0x2a067d['id'],_0x2a067d['name']));}return _0x481d81['result'][_0x1922('0x5a')];});}})['then'](function(){if(!_0x4ff467||_0x4ff467===_0x1922('0x56')){return _0x474e85[_0x1922('0x5b')][_0x1922('0x5c')]({'paused':0x0},{'where':{'UserId':_0x2a067d['id']},'individualHooks':!![]});}})[_0x1922('0x35')](function(){var _0x51a42d=!_0x4ff467?_0x1922('0x26'):_0x1922('0x5d');var _0x20a5ec={'membername':_0x2a067d[_0x1922('0x20')],'type':_0x1922('0x5e'),'exitAt':null};if(_0x4ff467){_0x20a5ec['channel']=_0x4ff467;}return _0x474e85[_0x1922('0x5f')][_0x51a42d]({'where':_0x20a5ec});})['then'](function(_0x3cc184){if(_0x3cc184){var _0x6fadbd=Array[_0x1922('0x60')](_0x3cc184)?_0x3cc184:[_0x3cc184];var _0x545467=_0x6fadbd[_0x1922('0x61')](function(_0x577174){return _0x577174['update']({'exitAt':moment()[_0x1922('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb1d467});});return Promise[_0x1922('0x62')](_0x545467);}})[_0x1922('0x35')](function(){if(!_0x4ff467){_0x23e688[_0x1922('0x63')]=![];_0x23e688[_0x1922('0x64')]=![];_0x23e688[_0x1922('0x65')]=![];_0x23e688[_0x1922('0x66')]=![];_0x23e688[_0x1922('0x67')]=![];_0x23e688[_0x1922('0x68')]=![];_0x23e688['openchannelPause']=![];}else{_0x23e688[_0x4ff467+_0x1922('0x69')]=![];}return _0x2a067d[_0x1922('0x6a')]();})[_0x1922('0x35')](function(_0x41a759){var _0x38d4d2=require(_0x1922('0x6b'));var _0xfd2ca4=_0x38d4d2[_0x1922('0x6c')]();_0xfd2ca4[_0x1922('0x6d')](function(_0x2ee082){var _0x1e7e00=_0x2ee082+'Status';_0x2a067d[_0x1922('0x6e')]([_0x1e7e00],_0x41a759[_0x1e7e00]);});return _0x2a067d[_0x1922('0x5c')](_0x23e688);})[_0x1922('0x28')](function(_0x413e52){throw _0x413e52;});}}});};
\ No newline at end of file
index a730009..23191c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x191f=['smsPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','LogoutUser','destroy','forEach','LoginUser','mobile','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','merge','LOGIN','callysquare','LOGININPAUSE','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','findAll','options','raw','where','limit','include','map','model','attributes','then','info','GetUser','debug','stringify','catch','error','message','ShowUser','User','find','PauseUser','name','role','internal','UserVoiceQueueRt','update','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','getChannels','push','isNil','interface','format','SIP/%s','type','DEFAULT\x20PAUSE','body','uniqueid','MemberReport','bulkCreate','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','faxPause','openchannelPause'];(function(_0xfbdff6,_0x2af690){var _0x4cb9be=function(_0x4022d8){while(--_0x4022d8){_0xfbdff6['push'](_0xfbdff6['shift']());}};_0x4cb9be(++_0x2af690);}(_0x191f,0xcc));var _0xf191=function(_0x3fb354,_0x523e06){_0x3fb354=_0x3fb354-0x0;var _0x17589d=_0x191f[_0x3fb354];return _0x17589d;};'use strict';var _=require(_0xf191('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var Redis=require(_0xf191('0x1'));var db=require(_0xf191('0x2'))['db'];var utils=require(_0xf191('0x3'));var logger=require(_0xf191('0x4'))(_0xf191('0x5'));var config=require(_0xf191('0x6'));config[_0xf191('0x7')]=_[_0xf191('0x8')](config['redis'],{'host':_0xf191('0x9'),'port':0x18eb});var socket=require(_0xf191('0xa'))(new Redis(config['redis']));require(_0xf191('0xb'))[_0xf191('0xc')](socket);exports['GetUser']=function(_0x1971a3){var _0x139b50=this;return new Promise(function(_0xa3e02f,_0x3d94b7){return db['User'][_0xf191('0xd')]({'raw':_0x1971a3[_0xf191('0xe')]?_0x1971a3['options'][_0xf191('0xf')]===undefined?!![]:![]:!![],'where':_0x1971a3['options']?_0x1971a3[_0xf191('0xe')][_0xf191('0x10')]||null:null,'attributes':_0x1971a3[_0xf191('0xe')]?_0x1971a3[_0xf191('0xe')]['attributes']||null:null,'limit':_0x1971a3[_0xf191('0xe')]?_0x1971a3['options'][_0xf191('0x11')]||null:null,'include':_0x1971a3[_0xf191('0xe')]?_0x1971a3['options'][_0xf191('0x12')]?_[_0xf191('0x13')](_0x1971a3[_0xf191('0xe')][_0xf191('0x12')],function(_0x34667b){return{'model':db[_0x34667b[_0xf191('0x14')]],'as':_0x34667b['as'],'attributes':_0x34667b[_0xf191('0x15')],'include':_0x34667b[_0xf191('0x12')]?_[_0xf191('0x13')](_0x34667b[_0xf191('0x12')],function(_0x25d87b){return{'model':db[_0x25d87b['model']],'as':_0x25d87b['as'],'attributes':_0x25d87b['attributes'],'include':_0x25d87b[_0xf191('0x12')]?_[_0xf191('0x13')](_0x25d87b[_0xf191('0x12')],function(_0x43b1ab){return{'model':db[_0x43b1ab['model']],'as':_0x43b1ab['as'],'attributes':_0x43b1ab[_0xf191('0x15')]};}):[]};}):[]};}):[]:[]})[_0xf191('0x16')](function(_0x43225f){logger[_0xf191('0x17')](_0xf191('0x18'),_0x1971a3);logger[_0xf191('0x19')](_0xf191('0x18'),_0x1971a3,JSON[_0xf191('0x1a')](_0x43225f));_0xa3e02f(_0x43225f);})[_0xf191('0x1b')](function(_0x50423f){logger[_0xf191('0x1c')]('GetUser',_0x50423f[_0xf191('0x1d')],_0x1971a3);_0x3d94b7(_0x139b50['error'](0x1f4,_0x50423f[_0xf191('0x1d')]));});});};exports[_0xf191('0x1e')]=function(_0x8aa480){var _0x4664a8=this;return new Promise(function(_0x15861,_0x5dac03){return db[_0xf191('0x1f')][_0xf191('0x20')]({'raw':_0x8aa480['options']?_0x8aa480[_0xf191('0xe')]['raw']===undefined?!![]:![]:!![],'where':_0x8aa480[_0xf191('0xe')]?_0x8aa480['options'][_0xf191('0x10')]||null:null,'attributes':_0x8aa480['options']?_0x8aa480[_0xf191('0xe')][_0xf191('0x15')]||null:null,'include':_0x8aa480[_0xf191('0xe')]?_0x8aa480[_0xf191('0xe')][_0xf191('0x12')]?_[_0xf191('0x13')](_0x8aa480[_0xf191('0xe')][_0xf191('0x12')],function(_0x56be8e){return{'model':db[_0x56be8e['model']],'as':_0x56be8e['as'],'attributes':_0x56be8e['attributes'],'include':_0x56be8e[_0xf191('0x12')]?_[_0xf191('0x13')](_0x56be8e[_0xf191('0x12')],function(_0x3616c1){return{'model':db[_0x3616c1[_0xf191('0x14')]],'as':_0x3616c1['as'],'attributes':_0x3616c1[_0xf191('0x15')],'include':_0x3616c1[_0xf191('0x12')]?_['map'](_0x3616c1[_0xf191('0x12')],function(_0x1cc716){return{'model':db[_0x1cc716[_0xf191('0x14')]],'as':_0x1cc716['as'],'attributes':_0x1cc716[_0xf191('0x15')]};}):[]};}):[]};}):[]:[]})[_0xf191('0x16')](function(_0x4dd952){logger['info'](_0xf191('0x1e'),_0x8aa480);logger['debug'](_0xf191('0x1e'),_0x8aa480,JSON[_0xf191('0x1a')](_0x4dd952));_0x15861(_0x4dd952);})[_0xf191('0x1b')](function(_0xd1f2e9){logger[_0xf191('0x1c')](_0xf191('0x1e'),_0xd1f2e9[_0xf191('0x1d')],_0x8aa480);_0x5dac03(_0x4664a8['error'](0x1f4,_0xd1f2e9[_0xf191('0x1d')]));});});};exports[_0xf191('0x21')]=function(_0x403888){var _0x5ad9f4=this;return new Promise(function(_0x15dd99,_0x46e7eb){var _0x480343;return db[_0xf191('0x1f')][_0xf191('0x20')]({'where':_0x403888[_0xf191('0xe')][_0xf191('0x10')]||{},'attributes':['id',_0xf191('0x22'),_0xf191('0x23'),_0xf191('0x24'),'interface']})[_0xf191('0x16')](function(_0x466da0){if(_0x466da0){_0x480343=_0x466da0;return db[_0xf191('0x25')][_0xf191('0x26')]({'paused':0x1},{'where':{'UserId':_0x480343['id']},'individualHooks':!![]});}})[_0xf191('0x16')](function(){if(_0x480343){return db['MemberReport']['findAll']({'where':{'membername':_0x480343[_0xf191('0x22')],'type':_0xf191('0x27'),'exitAt':null}});}})['then'](function(_0x149ead){if(_0x480343){if(_0x149ead&&_0x149ead[_0xf191('0x28')]){var _0x1c8e9e=moment()['format'](_0xf191('0x29'));for(var _0xcb0cb5=0x0,_0x15ced0=_0x149ead[_0xf191('0x28')];_0xcb0cb5<_0x15ced0;_0xcb0cb5++){_0x149ead[_0xcb0cb5]['updateAttributes']({'exitAt':_0x1c8e9e});}}}})['then'](function(){if(_0x480343){var _0x16c9ba=[];var _0x1c15fb=utils[_0xf191('0x2a')]();_0x1c15fb['forEach'](function(_0x1f502a){_0x16c9ba[_0xf191('0x2b')]({'channel':_0x1f502a,'membername':_0x480343[_0xf191('0x22')],'interface':_[_0xf191('0x2c')](_0x480343[_0xf191('0x2d')])?util[_0xf191('0x2e')](_0xf191('0x2f'),_0x480343[_0xf191('0x22')]):_0x480343['interface'],'type':'PAUSE','enterAt':moment()[_0xf191('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x403888['body'][_0xf191('0x30')]||_0xf191('0x31'),'role':_0x480343[_0xf191('0x23')],'internal':_0x480343[_0xf191('0x24')],'uniqueid':_0x403888[_0xf191('0x32')][_0xf191('0x33')]||null});});return db[_0xf191('0x34')][_0xf191('0x35')](_0x16c9ba,{'individualHooks':!![]});}})[_0xf191('0x16')](function(){if(_0x480343){return _0x480343[_0xf191('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x403888[_0xf191('0x32')][_0xf191('0x30')]||_0xf191('0x31'),'lastPauseAt':moment()[_0xf191('0x2e')](_0xf191('0x29'))});}})[_0xf191('0x16')](function(_0x253845){_0x15dd99(_0x253845);})[_0xf191('0x1b')](function(_0x395f45){_0x46e7eb(_0x5ad9f4[_0xf191('0x1c')](0x1f4,_0x395f45[_0xf191('0x1d')]));});});};exports['UnpauseUser']=function(_0x46bec0){var _0x560edb=this;return new Promise(function(_0x471ece,_0x2307fb){if(_0x46bec0['body'][_0xf191('0x36')]&&!utils[_0xf191('0x37')](_0x46bec0[_0xf191('0x32')][_0xf191('0x36')])){throw new Error(util[_0xf191('0x2e')](_0xf191('0x38'),_0x46bec0[_0xf191('0x32')][_0xf191('0x36')]));}return db['User'][_0xf191('0x39')]({'where':_0x46bec0['options'][_0xf191('0x10')]||{},'attributes':['id',_0xf191('0x22'),'role','internal','interface',_0xf191('0x3a'),_0xf191('0x3b'),_0xf191('0x3c'),'chatPause',_0xf191('0x3d'),_0xf191('0x3e'),_0xf191('0x3f'),'whatsappPause',_0xf191('0x40'),_0xf191('0x41')]})[_0xf191('0x16')](function(_0x358f64){if(!_0x358f64){throw new Error(util[_0xf191('0x2e')](_0xf191('0x42'),_0x46bec0[_0xf191('0x43')]['id']));}return _0x358f64[_0xf191('0x44')](_0x46bec0[_0xf191('0x32')][_0xf191('0x36')],'system');})[_0xf191('0x16')](function(_0x9d8d19){_0x471ece(_0x9d8d19);})[_0xf191('0x1b')](function(_0xe0a4e6){_0x2307fb(_0x560edb[_0xf191('0x1c')](0x1f4,_0xe0a4e6[_0xf191('0x1d')]));});});};exports[_0xf191('0x45')]=function(_0x1e2a4e){var _0x5cb769=this;return new Promise(function(_0x53e026,_0x126ae8){var _0x3d4661;return db[_0xf191('0x1f')][_0xf191('0x39')]({'where':_0x1e2a4e[_0xf191('0xe')][_0xf191('0x10')]||{},'attributes':['id',_0xf191('0x22')]})[_0xf191('0x16')](function(_0x28cbb3){if(_0x28cbb3){_0x3d4661=_0x28cbb3;return db[_0xf191('0x25')][_0xf191('0x46')]({'where':{'membername':_0x3d4661['name']},'individualHooks':!![]});}})[_0xf191('0x16')](function(){if(_0x3d4661){return db[_0xf191('0x34')][_0xf191('0xd')]({'where':{'membername':_0x3d4661['name'],'exitAt':null}});}})[_0xf191('0x16')](function(_0x5cdf94){if(_0x3d4661){if(_0x5cdf94&&_0x5cdf94['length']){var _0x33458f=[];_0x5cdf94[_0xf191('0x47')](function(_0x5b687a){_0x33458f['push'](_0x5b687a[_0xf191('0x26')]({'exitAt':moment()[_0xf191('0x2e')](_0xf191('0x29'))}));});return BPromise['all'](_0x33458f);}}})[_0xf191('0x16')](function(){if(_0x3d4661){return _0x3d4661['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf191('0x16')](function(_0x4361d0){_0x53e026(_0x4361d0);})[_0xf191('0x1b')](function(_0x2d153c){_0x126ae8(_0x5cb769[_0xf191('0x1c')](0x1f4,_0x2d153c[_0xf191('0x1d')]));});});};exports[_0xf191('0x48')]=function(_0x34d481){var _0x36d0d0=this;return new Promise(function(_0x30acde,_0x3082f6){var _0xdb3217;var _0x172059;var _0x2f064f;var _0x2dbd83;return db[_0xf191('0x1f')][_0xf191('0x39')]({'where':_0x34d481[_0xf191('0xe')][_0xf191('0x10')]||{},'attributes':['id','name',_0xf191('0x23'),_0xf191('0x49'),'phone','internal',_0xf191('0x4a'),'interface']})[_0xf191('0x16')](function(_0x49b730){if(_0x49b730){_0xdb3217=_0x49b730;_0x2dbd83=_0x34d481[_0xf191('0x32')][_0xf191('0x2d')]?_0x34d481['body'][_0xf191('0x2d')]:util[_0xf191('0x2e')](_0xf191('0x2f'),_0xdb3217['name']);return db[_0xf191('0x1f')][_0xf191('0x4b')]({'where':{'role':_0xf191('0x4c'),'online':!![],'id':{'$ne':_0xdb3217['id']}}});}})[_0xf191('0x16')](function(_0x2ec9cd){if(_0x2ec9cd){_0x2f064f=_0x2ec9cd;return require(_0xf191('0x4d'))[_0xf191('0x4e')]();}})[_0xf191('0x16')](function(_0x2da49b){if(_0x2da49b&&_0x2da49b[_0xf191('0x4f')]&&_0x2f064f>=_0x2da49b[_0xf191('0x4f')]){throw new Error(_0xf191('0x50'));}})['then'](function(){if(_0xdb3217){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0xdb3217['name']},'individualHooks':!![]});}})[_0xf191('0x16')](function(){if(_0xdb3217){return _0xdb3217[_0xf191('0x51')]({'raw':!![]});}})[_0xf191('0x16')](function(_0x4ad7e4){if(_0xdb3217){if(_0x4ad7e4){var _0x439760=[];_0x172059=_0x4ad7e4;if(_0x172059['length']){for(var _0x3da502=0x0;_0x3da502<_0x172059['length'];_0x3da502++){_0x439760[_0xf191('0x2b')](db[_0xf191('0x25')][_0xf191('0x52')]({'membername':_0xdb3217['name'],'UserId':_0xdb3217['id'],'queue_name':_0x172059[_0x3da502]['name'],'VoiceQueueId':_0x172059[_0x3da502]['id'],'interface':_0x2dbd83,'paused':_0xdb3217['loginInPause']||![],'penalty':_0x172059[_0x3da502][_0xf191('0x53')]||0x0}));}return BPromise[_0xf191('0x54')](_0x439760);}}}})[_0xf191('0x16')](function(){if(_0xdb3217){return db[_0xf191('0x34')][_0xf191('0xd')]({'where':{'membername':_0xdb3217[_0xf191('0x22')],'exitAt':null}});}})[_0xf191('0x16')](function(_0x2e0ac3){if(_0xdb3217){if(_0x2e0ac3&&_0x2e0ac3['length']){var _0x38574a=[];_0x2e0ac3[_0xf191('0x47')](function(_0x2574bc){_0x38574a['push'](_0x2574bc[_0xf191('0x26')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xf191('0x54')](_0x38574a);}}})[_0xf191('0x16')](function(){if(_0xdb3217){var _0x2edd8c=[];var _0x11edbd=[];var _0x43b991=utils[_0xf191('0x2a')]();var _0x4a881c={'membername':_0xdb3217[_0xf191('0x22')],'interface':_0x2dbd83,'enterAt':moment()[_0xf191('0x2e')](_0xf191('0x29')),'role':_0xdb3217[_0xf191('0x23')],'internal':_0xdb3217[_0xf191('0x24')]};_0x43b991['forEach'](function(_0x1b0758){_0x2edd8c[_0xf191('0x2b')](_[_0xf191('0x55')]({'channel':_0x1b0758,'type':_0xf191('0x56'),'data1':_0xf191('0x57'),'data2':_0x2dbd83},_0x4a881c));if(_0xdb3217['loginInPause']){_0x11edbd['push'](_['merge']({'channel':_0x1b0758,'type':_0xf191('0x27'),'data1':_0xf191('0x58')},_0x4a881c));}});return db[_0xf191('0x34')][_0xf191('0x35')](_0x2edd8c['concat'](_0x11edbd),{'individualHooks':!![]});}})['then'](function(){if(_0xdb3217){return _0xdb3217[_0xf191('0x26')]({'online':!![],'lastLoginAt':moment()[_0xf191('0x2e')](_0xf191('0x29')),'voicePause':_0xdb3217[_0xf191('0x4a')]||![],'mailPause':_0xdb3217['loginInPause']||![],'chatPause':_0xdb3217[_0xf191('0x4a')]||![],'faxPause':_0xdb3217[_0xf191('0x4a')]||![],'smsPause':_0xdb3217[_0xf191('0x4a')]||![],'openchannelPause':_0xdb3217[_0xf191('0x4a')]||![],'pauseType':_0xdb3217[_0xf191('0x4a')]?_0xf191('0x58'):null,'lastPauseAt':moment()[_0xf191('0x2e')](_0xf191('0x29')),'interface':_0x2dbd83});}})[_0xf191('0x16')](function(_0x4ecda5){_0x30acde(_0x4ecda5);})[_0xf191('0x1b')](function(_0x18ae89){_0x3082f6(_0x36d0d0['error'](0x1f4,_0x18ae89[_0xf191('0x1d')]));});});};
\ No newline at end of file
+var _0x7183=['socket.io-emitter','GetUser','findAll','options','where','attributes','limit','include','map','model','then','info','debug','stringify','message','ShowUser','User','find','raw','catch','error','PauseUser','name','internal','interface','UserVoiceQueueRt','update','MemberReport','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','SIP/%s','PAUSE','body','type','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','isValidChannel','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','voicePause','mailPause','chatPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','system','LogoutUser','destroy','forEach','all','LoginUser','role','mobile','phone','loginInPause','count','agent','getLicense','agents','getVoiceQueues','upsert','LOGIN','callysquare','merge','LOGININPAUSE','concat','bluebird','../../config/utils','rpc','../../config/environment','redis','defaults'];(function(_0x302309,_0x53ad9f){var _0x2f5b71=function(_0x458d15){while(--_0x458d15){_0x302309['push'](_0x302309['shift']());}};_0x2f5b71(++_0x53ad9f);}(_0x7183,0x1e0));var _0x3718=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x7183[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3718('0x0'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3718('0x1'));var logger=require('../../config/logger')(_0x3718('0x2'));var config=require(_0x3718('0x3'));config[_0x3718('0x4')]=_[_0x3718('0x5')](config[_0x3718('0x4')],{'host':'localhost','port':0x18eb});var socket=require(_0x3718('0x6'))(new Redis(config[_0x3718('0x4')]));require('./user.socket')['register'](socket);exports[_0x3718('0x7')]=function(_0x450020){var _0x470f3a=this;return new Promise(function(_0x184337,_0x2bcaad){return db['User'][_0x3718('0x8')]({'raw':_0x450020[_0x3718('0x9')]?_0x450020['options']['raw']===undefined?!![]:![]:!![],'where':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xa')]||null:null,'attributes':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xb')]||null:null,'limit':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xc')]||null:null,'include':_0x450020['options']?_0x450020[_0x3718('0x9')][_0x3718('0xd')]?_[_0x3718('0xe')](_0x450020[_0x3718('0x9')][_0x3718('0xd')],function(_0x43bf2e){return{'model':db[_0x43bf2e[_0x3718('0xf')]],'as':_0x43bf2e['as'],'attributes':_0x43bf2e['attributes'],'include':_0x43bf2e[_0x3718('0xd')]?_['map'](_0x43bf2e[_0x3718('0xd')],function(_0x54e328){return{'model':db[_0x54e328[_0x3718('0xf')]],'as':_0x54e328['as'],'attributes':_0x54e328[_0x3718('0xb')],'include':_0x54e328[_0x3718('0xd')]?_[_0x3718('0xe')](_0x54e328[_0x3718('0xd')],function(_0x1f2563){return{'model':db[_0x1f2563[_0x3718('0xf')]],'as':_0x1f2563['as'],'attributes':_0x1f2563[_0x3718('0xb')]};}):[]};}):[]};}):[]:[]})[_0x3718('0x10')](function(_0x546d49){logger[_0x3718('0x11')](_0x3718('0x7'),_0x450020);logger[_0x3718('0x12')](_0x3718('0x7'),_0x450020,JSON[_0x3718('0x13')](_0x546d49));_0x184337(_0x546d49);})['catch'](function(_0x11cec3){logger['error'](_0x3718('0x7'),_0x11cec3[_0x3718('0x14')],_0x450020);_0x2bcaad(_0x470f3a['error'](0x1f4,_0x11cec3[_0x3718('0x14')]));});});};exports[_0x3718('0x15')]=function(_0x1181e7){var _0x3064fc=this;return new Promise(function(_0x53aa74,_0x187835){return db[_0x3718('0x16')][_0x3718('0x17')]({'raw':_0x1181e7[_0x3718('0x9')]?_0x1181e7[_0x3718('0x9')][_0x3718('0x18')]===undefined?!![]:![]:!![],'where':_0x1181e7[_0x3718('0x9')]?_0x1181e7['options'][_0x3718('0xa')]||null:null,'attributes':_0x1181e7[_0x3718('0x9')]?_0x1181e7['options'][_0x3718('0xb')]||null:null,'include':_0x1181e7['options']?_0x1181e7[_0x3718('0x9')][_0x3718('0xd')]?_['map'](_0x1181e7['options'][_0x3718('0xd')],function(_0x1b36d1){return{'model':db[_0x1b36d1[_0x3718('0xf')]],'as':_0x1b36d1['as'],'attributes':_0x1b36d1[_0x3718('0xb')],'include':_0x1b36d1[_0x3718('0xd')]?_[_0x3718('0xe')](_0x1b36d1[_0x3718('0xd')],function(_0x1a5e1a){return{'model':db[_0x1a5e1a['model']],'as':_0x1a5e1a['as'],'attributes':_0x1a5e1a[_0x3718('0xb')],'include':_0x1a5e1a[_0x3718('0xd')]?_[_0x3718('0xe')](_0x1a5e1a[_0x3718('0xd')],function(_0x1b82bc){return{'model':db[_0x1b82bc[_0x3718('0xf')]],'as':_0x1b82bc['as'],'attributes':_0x1b82bc[_0x3718('0xb')]};}):[]};}):[]};}):[]:[]})[_0x3718('0x10')](function(_0x58e0a3){logger[_0x3718('0x11')]('ShowUser',_0x1181e7);logger[_0x3718('0x12')](_0x3718('0x15'),_0x1181e7,JSON[_0x3718('0x13')](_0x58e0a3));_0x53aa74(_0x58e0a3);})[_0x3718('0x19')](function(_0x5de72c){logger[_0x3718('0x1a')]('ShowUser',_0x5de72c[_0x3718('0x14')],_0x1181e7);_0x187835(_0x3064fc['error'](0x1f4,_0x5de72c[_0x3718('0x14')]));});});};exports[_0x3718('0x1b')]=function(_0x47dcba){var _0x1aaeff=this;return new Promise(function(_0xe2665f,_0x1b0b4a){var _0x639a6b;return db[_0x3718('0x16')][_0x3718('0x17')]({'where':_0x47dcba[_0x3718('0x9')][_0x3718('0xa')]||{},'attributes':['id',_0x3718('0x1c'),'role',_0x3718('0x1d'),_0x3718('0x1e')]})[_0x3718('0x10')](function(_0x37679a){if(_0x37679a){_0x639a6b=_0x37679a;return db[_0x3718('0x1f')][_0x3718('0x20')]({'paused':0x1},{'where':{'UserId':_0x639a6b['id']},'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x639a6b){return db[_0x3718('0x21')][_0x3718('0x8')]({'where':{'membername':_0x639a6b[_0x3718('0x1c')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x59ec79){if(_0x639a6b){if(_0x59ec79&&_0x59ec79[_0x3718('0x22')]){var _0x165058=moment()[_0x3718('0x23')](_0x3718('0x24'));for(var _0x29b0a6=0x0,_0x8b1b12=_0x59ec79[_0x3718('0x22')];_0x29b0a6<_0x8b1b12;_0x29b0a6++){_0x59ec79[_0x29b0a6][_0x3718('0x25')]({'exitAt':_0x165058});}}}})[_0x3718('0x10')](function(){if(_0x639a6b){var _0x571803=[];var _0x28f028=utils['getChannels']();_0x28f028['forEach'](function(_0x180d7d){_0x571803[_0x3718('0x26')]({'channel':_0x180d7d,'membername':_0x639a6b['name'],'interface':_[_0x3718('0x27')](_0x639a6b['interface'])?util[_0x3718('0x23')](_0x3718('0x28'),_0x639a6b[_0x3718('0x1c')]):_0x639a6b[_0x3718('0x1e')],'type':_0x3718('0x29'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x47dcba[_0x3718('0x2a')][_0x3718('0x2b')]||'DEFAULT\x20PAUSE','role':_0x639a6b['role'],'internal':_0x639a6b[_0x3718('0x1d')],'uniqueid':_0x47dcba[_0x3718('0x2a')]['uniqueid']||null});});return db[_0x3718('0x21')][_0x3718('0x2c')](_0x571803,{'individualHooks':!![]});}})['then'](function(){if(_0x639a6b){return _0x639a6b[_0x3718('0x20')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x47dcba[_0x3718('0x2a')]['type']||_0x3718('0x2d'),'lastPauseAt':moment()[_0x3718('0x23')](_0x3718('0x24'))});}})[_0x3718('0x10')](function(_0x2cfa26){_0xe2665f(_0x2cfa26);})[_0x3718('0x19')](function(_0x3ed68a){_0x1b0b4a(_0x1aaeff[_0x3718('0x1a')](0x1f4,_0x3ed68a[_0x3718('0x14')]));});});};exports[_0x3718('0x2e')]=function(_0x1a63c1){var _0x523ec7=this;return new Promise(function(_0x14a50e,_0x6e7437){if(_0x1a63c1[_0x3718('0x2a')]['channel']&&!utils[_0x3718('0x2f')](_0x1a63c1[_0x3718('0x2a')][_0x3718('0x30')])){throw new Error(util[_0x3718('0x23')](_0x3718('0x31'),_0x1a63c1[_0x3718('0x2a')]['channel']));}return db[_0x3718('0x16')][_0x3718('0x32')]({'where':_0x1a63c1[_0x3718('0x9')][_0x3718('0xa')]||{},'attributes':['id','name','role',_0x3718('0x1d'),_0x3718('0x1e'),'online',_0x3718('0x33'),_0x3718('0x34'),_0x3718('0x35'),'faxPause','openchannelPause','smsPause',_0x3718('0x36'),_0x3718('0x37'),_0x3718('0x38')]})[_0x3718('0x10')](function(_0x5bcaac){if(!_0x5bcaac){throw new Error(util[_0x3718('0x23')](_0x3718('0x39'),_0x1a63c1[_0x3718('0x3a')]['id']));}return _0x5bcaac[_0x3718('0x3b')](_0x1a63c1[_0x3718('0x2a')][_0x3718('0x30')],_0x3718('0x3c'));})[_0x3718('0x10')](function(_0x13c6dc){_0x14a50e(_0x13c6dc);})['catch'](function(_0x42e28d){_0x6e7437(_0x523ec7[_0x3718('0x1a')](0x1f4,_0x42e28d[_0x3718('0x14')]));});});};exports[_0x3718('0x3d')]=function(_0x4adeca){var _0x4ada17=this;return new Promise(function(_0x58df6f,_0x5617eb){var _0x896278;return db[_0x3718('0x16')][_0x3718('0x32')]({'where':_0x4adeca['options'][_0x3718('0xa')]||{},'attributes':['id',_0x3718('0x1c')]})[_0x3718('0x10')](function(_0x59ffb9){if(_0x59ffb9){_0x896278=_0x59ffb9;return db[_0x3718('0x1f')][_0x3718('0x3e')]({'where':{'membername':_0x896278[_0x3718('0x1c')]},'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x896278){return db['MemberReport'][_0x3718('0x8')]({'where':{'membername':_0x896278[_0x3718('0x1c')],'exitAt':null}});}})['then'](function(_0x1b1011){if(_0x896278){if(_0x1b1011&&_0x1b1011[_0x3718('0x22')]){var _0x325f77=[];_0x1b1011[_0x3718('0x3f')](function(_0x44c43a){_0x325f77['push'](_0x44c43a[_0x3718('0x20')]({'exitAt':moment()[_0x3718('0x23')](_0x3718('0x24'))}));});return BPromise[_0x3718('0x40')](_0x325f77);}}})[_0x3718('0x10')](function(){if(_0x896278){return _0x896278[_0x3718('0x20')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3718('0x10')](function(_0x2481f0){_0x58df6f(_0x2481f0);})[_0x3718('0x19')](function(_0x1e38ce){_0x5617eb(_0x4ada17[_0x3718('0x1a')](0x1f4,_0x1e38ce['message']));});});};exports[_0x3718('0x41')]=function(_0x3f2dc5){var _0x490d68=this;return new Promise(function(_0x1ff9ae,_0x564e65){var _0x533712;var _0x7ef8a9;var _0x313cf1;var _0x20b5e2;return db[_0x3718('0x16')]['findOne']({'where':_0x3f2dc5[_0x3718('0x9')]['where']||{},'attributes':['id',_0x3718('0x1c'),_0x3718('0x42'),_0x3718('0x43'),_0x3718('0x44'),_0x3718('0x1d'),_0x3718('0x45'),_0x3718('0x1e')]})[_0x3718('0x10')](function(_0x3af748){if(_0x3af748){_0x533712=_0x3af748;_0x20b5e2=_0x3f2dc5[_0x3718('0x2a')][_0x3718('0x1e')]?_0x3f2dc5['body'][_0x3718('0x1e')]:util['format'](_0x3718('0x28'),_0x533712[_0x3718('0x1c')]);return db[_0x3718('0x16')][_0x3718('0x46')]({'where':{'role':_0x3718('0x47'),'online':!![],'id':{'$ne':_0x533712['id']}}});}})['then'](function(_0x48860e){if(_0x48860e){_0x313cf1=_0x48860e;return require('../../config/license/util')[_0x3718('0x48')]();}})[_0x3718('0x10')](function(_0x2984d2){if(_0x2984d2&&_0x2984d2[_0x3718('0x49')]&&_0x313cf1>=_0x2984d2[_0x3718('0x49')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x3718('0x10')](function(){if(_0x533712){return db[_0x3718('0x1f')][_0x3718('0x3e')]({'where':{'membername':_0x533712[_0x3718('0x1c')]},'individualHooks':!![]});}})['then'](function(){if(_0x533712){return _0x533712[_0x3718('0x4a')]({'raw':!![]});}})[_0x3718('0x10')](function(_0x159f3c){if(_0x533712){if(_0x159f3c){var _0x283892=[];_0x7ef8a9=_0x159f3c;if(_0x7ef8a9[_0x3718('0x22')]){for(var _0x14589e=0x0;_0x14589e<_0x7ef8a9['length'];_0x14589e++){_0x283892[_0x3718('0x26')](db[_0x3718('0x1f')][_0x3718('0x4b')]({'membername':_0x533712[_0x3718('0x1c')],'UserId':_0x533712['id'],'queue_name':_0x7ef8a9[_0x14589e][_0x3718('0x1c')],'VoiceQueueId':_0x7ef8a9[_0x14589e]['id'],'interface':_0x20b5e2,'paused':_0x533712['loginInPause']||![],'penalty':_0x7ef8a9[_0x14589e]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x283892);}}}})[_0x3718('0x10')](function(){if(_0x533712){return db[_0x3718('0x21')][_0x3718('0x8')]({'where':{'membername':_0x533712['name'],'exitAt':null}});}})[_0x3718('0x10')](function(_0x454e79){if(_0x533712){if(_0x454e79&&_0x454e79[_0x3718('0x22')]){var _0x40995d=[];_0x454e79[_0x3718('0x3f')](function(_0x25f59e){_0x40995d[_0x3718('0x26')](_0x25f59e[_0x3718('0x20')]({'exitAt':moment()[_0x3718('0x23')](_0x3718('0x24'))}));});return BPromise['all'](_0x40995d);}}})[_0x3718('0x10')](function(){if(_0x533712){var _0x491637=[];var _0x2df36c=[];var _0x198712=utils['getChannels']();var _0x511691={'membername':_0x533712['name'],'interface':_0x20b5e2,'enterAt':moment()[_0x3718('0x23')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x533712['role'],'internal':_0x533712[_0x3718('0x1d')]};_0x198712['forEach'](function(_0x2e9203){_0x491637[_0x3718('0x26')](_['merge']({'channel':_0x2e9203,'type':_0x3718('0x4c'),'data1':_0x3718('0x4d'),'data2':_0x20b5e2},_0x511691));if(_0x533712[_0x3718('0x45')]){_0x2df36c[_0x3718('0x26')](_[_0x3718('0x4e')]({'channel':_0x2e9203,'type':_0x3718('0x29'),'data1':_0x3718('0x4f')},_0x511691));}});return db[_0x3718('0x21')][_0x3718('0x2c')](_0x491637[_0x3718('0x50')](_0x2df36c),{'individualHooks':!![]});}})[_0x3718('0x10')](function(){if(_0x533712){return _0x533712[_0x3718('0x20')]({'online':!![],'lastLoginAt':moment()['format'](_0x3718('0x24')),'voicePause':_0x533712[_0x3718('0x45')]||![],'mailPause':_0x533712['loginInPause']||![],'chatPause':_0x533712[_0x3718('0x45')]||![],'faxPause':_0x533712['loginInPause']||![],'smsPause':_0x533712[_0x3718('0x45')]||![],'openchannelPause':_0x533712[_0x3718('0x45')]||![],'pauseType':_0x533712[_0x3718('0x45')]?_0x3718('0x4f'):null,'lastPauseAt':moment()[_0x3718('0x23')](_0x3718('0x24')),'interface':_0x20b5e2});}})[_0x3718('0x10')](function(_0x2a0b3d){_0x1ff9ae(_0x2a0b3d);})['catch'](function(_0x43fa2c){_0x564e65(_0x490d68['error'](0x1f4,_0x43fa2c[_0x3718('0x14')]));});});};
\ No newline at end of file
index d2a01f7..20cfe14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb04=['./user.events','save','update','emit','removeListener','length','user:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbb04,0x1dc));var _0x4bb0=function(_0x1016ad,_0x4e75b8){_0x1016ad=_0x1016ad-0x0;var _0x1419d4=_0xbb04[_0x1016ad];return _0x1419d4;};'use strict';var UserEvents=require(_0x4bb0('0x0'));var events=[_0x4bb0('0x1'),'remove',_0x4bb0('0x2')];function createListener(_0x309afb,_0x19db43){return function(_0x898d7d){_0x19db43[_0x4bb0('0x3')](_0x309afb,_0x898d7d);};}function removeListener(_0x1dd16c,_0x4ff7e8){return function(){UserEvents[_0x4bb0('0x4')](_0x1dd16c,_0x4ff7e8);};}exports['register']=function(_0x5bf123){for(var _0x52d521=0x0,_0x35b9e7=events[_0x4bb0('0x5')];_0x52d521<_0x35b9e7;_0x52d521++){var _0x361bb7=events[_0x52d521];var _0x3c3e79=createListener(_0x4bb0('0x6')+_0x361bb7,_0x5bf123);UserEvents['on'](_0x361bb7,_0x3c3e79);}};
\ No newline at end of file
+var _0x7c2d=['remove','emit','removeListener','register','length','user:','./user.events','save'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7c2d,0xae));var _0xd7c2=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x7c2d[_0x1ccdf7];return _0x52a0ae;};'use strict';var UserEvents=require(_0xd7c2('0x0'));var events=[_0xd7c2('0x1'),_0xd7c2('0x2'),'update'];function createListener(_0x18b801,_0x5efa86){return function(_0xb3181c){_0x5efa86[_0xd7c2('0x3')](_0x18b801,_0xb3181c);};}function removeListener(_0x17f670,_0x12e2eb){return function(){UserEvents[_0xd7c2('0x4')](_0x17f670,_0x12e2eb);};}exports[_0xd7c2('0x5')]=function(_0x129c4f){for(var _0x5b022a=0x0,_0x4b55c4=events[_0xd7c2('0x6')];_0x5b022a<_0x4b55c4;_0x5b022a++){var _0x48d8dd=events[_0x5b022a];var _0x133993=createListener(_0xd7c2('0x7')+_0x48d8dd,_0x129c4f);UserEvents['on'](_0x48d8dd,_0x133993);}};
\ No newline at end of file
index 60be0ab..c298171 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(_0xdbd4f7,_0x4e3bdd){var _0x5c3f9d=function(_0xa7a35a){while(--_0xa7a35a){_0xdbd4f7['push'](_0xdbd4f7['shift']());}};_0x5c3f9d(++_0x4e3bdd);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x1826c8,_0x14372e){var _0x20ce29=function(_0x54f01d){while(--_0x54f01d){_0x1826c8['push'](_0x1826c8['shift']());}};_0x20ce29(++_0x14372e);}(_0x70e0,0x17b));var _0x070e=function(_0x3f0e83,_0x28eb0a){_0x3f0e83=_0x3f0e83-0x0;var _0x3075bb=_0x70e0[_0x3f0e83];return _0x3075bb;};'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 45718af..361e316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ecf=['INTEGER','sequelize','exports'];(function(_0x5c2879,_0x554de6){var _0x4a646f=function(_0x2909c6){while(--_0x2909c6){_0x5c2879['push'](_0x5c2879['shift']());}};_0x4a646f(++_0x554de6);}(_0x5ecf,0x1c3));var _0xf5ec=function(_0x27d59f,_0x427e28){_0x27d59f=_0x27d59f-0x0;var _0x56d3b3=_0x5ecf[_0x27d59f];return _0x56d3b3;};'use strict';var Sequelize=require(_0xf5ec('0x0'));module[_0xf5ec('0x1')]={'penalty':{'type':Sequelize[_0xf5ec('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x782d=['sequelize','exports','INTEGER'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x782d,0xc6));var _0xd782=function(_0x257e3d,_0x4bcf87){_0x257e3d=_0x257e3d-0x0;var _0x321d68=_0x782d[_0x257e3d];return _0x321d68;};'use strict';var Sequelize=require(_0xd782('0x0'));module[_0xd782('0x1')]={'penalty':{'type':Sequelize[_0xd782('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e064736..59209ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a05=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x3a1f22,_0x565007){var _0x2b0fc9=function(_0x4deb74){while(--_0x4deb74){_0x3a1f22['push'](_0x3a1f22['shift']());}};_0x2b0fc9(++_0x565007);}(_0x8a05,0x66));var _0x58a0=function(_0x127153,_0x1dbcde){_0x127153=_0x127153-0x0;var _0x5d685f=_0x8a05[_0x127153];return _0x5d685f;};'use strict';var _=require(_0x58a0('0x0'));var util=require(_0x58a0('0x1'));var logger=require(_0x58a0('0x2'))(_0x58a0('0x3'));var moment=require(_0x58a0('0x4'));var BPromise=require(_0x58a0('0x5'));var rp=require(_0x58a0('0x6'));var fs=require('fs');var path=require(_0x58a0('0x7'));var rimraf=require(_0x58a0('0x8'));var config=require(_0x58a0('0x9'));var attributes=require(_0x58a0('0xa'));module[_0x58a0('0xb')]=function(_0x5c5310,_0x5b948b){return _0x5c5310[_0x58a0('0xc')](_0x58a0('0xd'),attributes,{'tableName':_0x58a0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb468=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','user_has_chat_queues','lodash','util'];(function(_0x249451,_0x1c62db){var _0x50cabe=function(_0x3d9bac){while(--_0x3d9bac){_0x249451['push'](_0x249451['shift']());}};_0x50cabe(++_0x1c62db);}(_0xb468,0x196));var _0x8b46=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xb468[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x8b46('0x0'));var util=require(_0x8b46('0x1'));var logger=require(_0x8b46('0x2'))('api');var moment=require(_0x8b46('0x3'));var BPromise=require(_0x8b46('0x4'));var rp=require(_0x8b46('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b46('0x6'));var config=require(_0x8b46('0x7'));var attributes=require(_0x8b46('0x8'));module[_0x8b46('0x9')]=function(_0x1dbc87,_0x43cf90){return _0x1dbc87[_0x8b46('0xa')]('UserChatQueue',attributes,{'tableName':_0x8b46('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32aea12..99bf915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e7e=['UserChatQueue,\x20%s,\x20%s','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then'];(function(_0x410747,_0x168eed){var _0x5141d0=function(_0x1b965d){while(--_0x1b965d){_0x410747['push'](_0x410747['shift']());}};_0x5141d0(++_0x168eed);}(_0x7e7e,0x1c3));var _0xe7e7=function(_0x41c48c,_0x8477b1){_0x41c48c=_0x41c48c-0x0;var _0xc579a9=_0x7e7e[_0x41c48c];return _0xc579a9;};'use strict';var _=require(_0xe7e7('0x0'));var util=require(_0xe7e7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe7e7('0x2'));var fs=require('fs');var Redis=require(_0xe7e7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7e7('0x4'));var logger=require(_0xe7e7('0x5'))(_0xe7e7('0x6'));var config=require(_0xe7e7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe7e7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xf74bc0,_0x375ecc,_0x419022){return new BPromise(function(_0x368e0b,_0x3eac01){return client[_0xe7e7('0x9')](_0xf74bc0,_0x419022)[_0xe7e7('0xa')](function(_0x43c4bb){logger['info'](_0xe7e7('0xb'),_0x375ecc,'request\x20sent');logger[_0xe7e7('0xc')](_0xe7e7('0xd'),_0x375ecc,_0xe7e7('0xe'),JSON[_0xe7e7('0xf')](_0x43c4bb));if(_0x43c4bb[_0xe7e7('0x10')]){if(_0x43c4bb[_0xe7e7('0x10')][_0xe7e7('0x11')]===0x1f4){logger['error'](_0xe7e7('0xb'),_0x375ecc,_0x43c4bb[_0xe7e7('0x10')]['message']);return _0x3eac01(_0x43c4bb['error'][_0xe7e7('0x12')]);}logger['error'](_0xe7e7('0xb'),_0x375ecc,_0x43c4bb[_0xe7e7('0x10')]['message']);return _0x368e0b(_0x43c4bb[_0xe7e7('0x10')]['message']);}else{logger[_0xe7e7('0x13')](_0xe7e7('0xb'),_0x375ecc,'request\x20sent');_0x368e0b(_0x43c4bb['result']['message']);}})[_0xe7e7('0x14')](function(_0x5c57b3){logger[_0xe7e7('0x10')](_0xe7e7('0xb'),_0x375ecc,_0x5c57b3);_0x3eac01(_0x5c57b3);});});}
\ No newline at end of file
+var _0x6c49=['request\x20sent','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserChatQueue,\x20%s,\x20%s'];(function(_0x4e55a9,_0x241b22){var _0x4a9b67=function(_0x2a3bd1){while(--_0x2a3bd1){_0x4e55a9['push'](_0x4e55a9['shift']());}};_0x4a9b67(++_0x241b22);}(_0x6c49,0x132));var _0x96c4=function(_0x284dab,_0x2ca215){_0x284dab=_0x284dab-0x0;var _0x4ac778=_0x6c49[_0x284dab];return _0x4ac778;};'use strict';var _=require(_0x96c4('0x0'));var util=require(_0x96c4('0x1'));var moment=require('moment');var BPromise=require(_0x96c4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96c4('0x3'))['db'];var utils=require(_0x96c4('0x4'));var logger=require(_0x96c4('0x5'))(_0x96c4('0x6'));var config=require(_0x96c4('0x7'));var jayson=require(_0x96c4('0x8'));var client=jayson[_0x96c4('0x9')][_0x96c4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42df6d,_0x45b6b0,_0xbbbdbc){return new BPromise(function(_0x35c07f,_0x3af3c7){return client['request'](_0x42df6d,_0xbbbdbc)[_0x96c4('0xb')](function(_0x3b789c){logger[_0x96c4('0xc')](_0x96c4('0xd'),_0x45b6b0,'request\x20sent');logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x45b6b0,_0x96c4('0xe'),JSON['stringify'](_0x3b789c));if(_0x3b789c[_0x96c4('0xf')]){if(_0x3b789c[_0x96c4('0xf')][_0x96c4('0x10')]===0x1f4){logger['error'](_0x96c4('0xd'),_0x45b6b0,_0x3b789c['error'][_0x96c4('0x11')]);return _0x3af3c7(_0x3b789c['error'][_0x96c4('0x11')]);}logger['error'](_0x96c4('0xd'),_0x45b6b0,_0x3b789c['error'][_0x96c4('0x11')]);return _0x35c07f(_0x3b789c[_0x96c4('0xf')][_0x96c4('0x11')]);}else{logger[_0x96c4('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x45b6b0,_0x96c4('0xe'));_0x35c07f(_0x3b789c[_0x96c4('0x12')][_0x96c4('0x11')]);}})[_0x96c4('0x13')](function(_0x3c8364){logger[_0x96c4('0xf')](_0x96c4('0xd'),_0x45b6b0,_0x3c8364);_0x3af3c7(_0x3c8364);});});}
\ No newline at end of file
index 3e29f3a..2f8b92e 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(_0x11bc40,_0x537bbc){var _0x2b7a99=function(_0x50135b){while(--_0x50135b){_0x11bc40['push'](_0x11bc40['shift']());}};_0x2b7a99(++_0x537bbc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x42f4ad,_0xcc1fa1){var _0x2d70b7=function(_0xd060f5){while(--_0xd060f5){_0x42f4ad['push'](_0x42f4ad['shift']());}};_0x2d70b7(++_0xcc1fa1);}(_0x70e0,0x17b));var _0x070e=function(_0x1f09be,_0x3c7353){_0x1f09be=_0x1f09be-0x0;var _0x2d7b6d=_0x70e0[_0x1f09be];return _0x2d7b6d;};'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 25ac060..fdf8023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d5=['STRING','sequelize','exports','INTEGER'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0x93d5,0xf5));var _0x593d=function(_0x3a7650,_0x3682b3){_0x3a7650=_0x3a7650-0x0;var _0x4db2ce=_0x93d5[_0x3a7650];return _0x4db2ce;};'use strict';var Sequelize=require(_0x593d('0x0'));module[_0x593d('0x1')]={'penalty':{'type':Sequelize[_0x593d('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x593d('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x593d('0x3')]}};
\ No newline at end of file
+var _0x1cd4=['sequelize','exports','INTEGER','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1cd4,0x1e8));var _0x41cd=function(_0x4dae63,_0x1589ec){_0x4dae63=_0x4dae63-0x0;var _0x1f92da=_0x1cd4[_0x4dae63];return _0x1f92da;};'use strict';var Sequelize=require(_0x41cd('0x0'));module[_0x41cd('0x1')]={'penalty':{'type':Sequelize[_0x41cd('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x41cd('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x41cd('0x3')]}};
\ No newline at end of file
index bc3f6c6..cdb725d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f38=['lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','UserFaxQueue','user_has_fax_queues'];(function(_0x157d23,_0x4027b9){var _0x5b93cc=function(_0x18af99){while(--_0x18af99){_0x157d23['push'](_0x157d23['shift']());}};_0x5b93cc(++_0x4027b9);}(_0x8f38,0x79));var _0x88f3=function(_0x5e6cb8,_0x16cf56){_0x5e6cb8=_0x5e6cb8-0x0;var _0x3faeb3=_0x8f38[_0x5e6cb8];return _0x3faeb3;};'use strict';var _=require(_0x88f3('0x0'));var util=require(_0x88f3('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x88f3('0x2'));var rp=require(_0x88f3('0x3'));var fs=require('fs');var path=require(_0x88f3('0x4'));var rimraf=require(_0x88f3('0x5'));var config=require(_0x88f3('0x6'));var attributes=require(_0x88f3('0x7'));module[_0x88f3('0x8')]=function(_0x35ef48,_0x16b825){return _0x35ef48['define'](_0x88f3('0x9'),attributes,{'tableName':_0x88f3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe08c=['bluebird','request-promise','path','rimraf','../../config/environment','exports','UserFaxQueue','lodash','../../config/logger','moment'];(function(_0x1a4cfc,_0x53a1af){var _0x1bb003=function(_0x2396f5){while(--_0x2396f5){_0x1a4cfc['push'](_0x1a4cfc['shift']());}};_0x1bb003(++_0x53a1af);}(_0xe08c,0xc5));var _0xce08=function(_0x4bbab5,_0x2956f9){_0x4bbab5=_0x4bbab5-0x0;var _0x5045da=_0xe08c[_0x4bbab5];return _0x5045da;};'use strict';var _=require(_0xce08('0x0'));var util=require('util');var logger=require(_0xce08('0x1'))('api');var moment=require(_0xce08('0x2'));var BPromise=require(_0xce08('0x3'));var rp=require(_0xce08('0x4'));var fs=require('fs');var path=require(_0xce08('0x5'));var rimraf=require(_0xce08('0x6'));var config=require(_0xce08('0x7'));var attributes=require('./userFaxQueue.attributes');module[_0xce08('0x8')]=function(_0x343726,_0x237eb8){return _0x343726['define'](_0xce08('0x9'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8d0d0cd..f05ced0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fc=['request','then','info','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','UserFaxQueue,\x20%s,\x20%s','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xc7fc,0xc3));var _0xcc7f=function(_0x6fc5ba,_0x4a75c6){_0x6fc5ba=_0x6fc5ba-0x0;var _0x26e04c=_0xc7fc[_0x6fc5ba];return _0x26e04c;};'use strict';var _=require('lodash');var util=require(_0xcc7f('0x0'));var moment=require('moment');var BPromise=require(_0xcc7f('0x1'));var rs=require(_0xcc7f('0x2'));var fs=require('fs');var Redis=require(_0xcc7f('0x3'));var db=require(_0xcc7f('0x4'))['db'];var utils=require(_0xcc7f('0x5'));var logger=require(_0xcc7f('0x6'))(_0xcc7f('0x7'));var config=require(_0xcc7f('0x8'));var jayson=require(_0xcc7f('0x9'));var client=jayson[_0xcc7f('0xa')][_0xcc7f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13654a,_0x384a46,_0x2d2229){return new BPromise(function(_0xcbdb24,_0x3a1ae2){return client[_0xcc7f('0xc')](_0x13654a,_0x2d2229)[_0xcc7f('0xd')](function(_0x4cebea){logger[_0xcc7f('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x384a46,_0xcc7f('0xf'));logger['debug'](_0xcc7f('0x10'),_0x384a46,_0xcc7f('0xf'),JSON[_0xcc7f('0x11')](_0x4cebea));if(_0x4cebea[_0xcc7f('0x12')]){if(_0x4cebea[_0xcc7f('0x12')]['code']===0x1f4){logger[_0xcc7f('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x384a46,_0x4cebea[_0xcc7f('0x12')][_0xcc7f('0x13')]);return _0x3a1ae2(_0x4cebea['error'][_0xcc7f('0x13')]);}logger[_0xcc7f('0x12')](_0xcc7f('0x14'),_0x384a46,_0x4cebea[_0xcc7f('0x12')][_0xcc7f('0x13')]);return _0xcbdb24(_0x4cebea[_0xcc7f('0x12')][_0xcc7f('0x13')]);}else{logger['info'](_0xcc7f('0x14'),_0x384a46,_0xcc7f('0xf'));_0xcbdb24(_0x4cebea[_0xcc7f('0x15')][_0xcc7f('0x13')]);}})[_0xcc7f('0x16')](function(_0x346265){logger[_0xcc7f('0x12')](_0xcc7f('0x14'),_0x384a46,_0x346265);_0x3a1ae2(_0x346265);});});}
\ No newline at end of file
+var _0x40b7=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x40b7,0x1a3));var _0x740b=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x40b7[_0x4dc7b9];return _0x3ab114;};'use strict';var _=require(_0x740b('0x0'));var util=require(_0x740b('0x1'));var moment=require(_0x740b('0x2'));var BPromise=require(_0x740b('0x3'));var rs=require(_0x740b('0x4'));var fs=require('fs');var Redis=require(_0x740b('0x5'));var db=require(_0x740b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x740b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x740b('0x8'));var client=jayson[_0x740b('0x9')][_0x740b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3fdec8,_0x4bfe54,_0x5d79e8){return new BPromise(function(_0x2d2a7d,_0x2d7fc6){return client[_0x740b('0xb')](_0x3fdec8,_0x5d79e8)['then'](function(_0x66cd97){logger[_0x740b('0xc')](_0x740b('0xd'),_0x4bfe54,_0x740b('0xe'));logger[_0x740b('0xf')](_0x740b('0x10'),_0x4bfe54,'request\x20sent',JSON[_0x740b('0x11')](_0x66cd97));if(_0x66cd97[_0x740b('0x12')]){if(_0x66cd97[_0x740b('0x12')][_0x740b('0x13')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x4bfe54,_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);return _0x2d7fc6(_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);}logger[_0x740b('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x4bfe54,_0x66cd97[_0x740b('0x12')][_0x740b('0x14')]);return _0x2d2a7d(_0x66cd97['error'][_0x740b('0x14')]);}else{logger['info'](_0x740b('0xd'),_0x4bfe54,'request\x20sent');_0x2d2a7d(_0x66cd97[_0x740b('0x15')][_0x740b('0x14')]);}})[_0x740b('0x16')](function(_0x547ab2){logger['error'](_0x740b('0xd'),_0x4bfe54,_0x547ab2);_0x2d7fc6(_0x547ab2);});});}
\ No newline at end of file
index 191a4c8..4cefd26 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(_0xf72bed,_0x5a37a0){var _0x1ea8f3=function(_0x53442e){while(--_0x53442e){_0xf72bed['push'](_0xf72bed['shift']());}};_0x1ea8f3(++_0x5a37a0);}(_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(_0x5cb76d,_0x47d11a){var _0x34a1f2=function(_0x189bc8){while(--_0x189bc8){_0x5cb76d['push'](_0x5cb76d['shift']());}};_0x34a1f2(++_0x47d11a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 3c998fb..2165789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd601=['exports','INTEGER'];(function(_0x5e2a33,_0x104330){var _0x909eb1=function(_0x462bbf){while(--_0x462bbf){_0x5e2a33['push'](_0x5e2a33['shift']());}};_0x909eb1(++_0x104330);}(_0xd601,0x17e));var _0x1d60=function(_0x174887,_0x207009){_0x174887=_0x174887-0x0;var _0x2e31d4=_0xd601[_0x174887];return _0x2e31d4;};'use strict';var Sequelize=require('sequelize');module[_0x1d60('0x0')]={'penalty':{'type':Sequelize[_0x1d60('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe234=['exports','INTEGER'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0xe234,0xfe));var _0x4e23=function(_0x3b917a,_0x22aad6){_0x3b917a=_0x3b917a-0x0;var _0x321be6=_0xe234[_0x3b917a];return _0x321be6;};'use strict';var Sequelize=require('sequelize');module[_0x4e23('0x0')]={'penalty':{'type':Sequelize[_0x4e23('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 0b4419f..4dac7b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f7=['./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x25f3e3,_0x207891){var _0xa89b6d=function(_0xa51f2){while(--_0xa51f2){_0x25f3e3['push'](_0x25f3e3['shift']());}};_0xa89b6d(++_0x207891);}(_0xf0f7,0x1e6));var _0x7f0f=function(_0x296ace,_0x591e14){_0x296ace=_0x296ace-0x0;var _0x5da250=_0xf0f7[_0x296ace];return _0x5da250;};'use strict';var _=require(_0x7f0f('0x0'));var util=require(_0x7f0f('0x1'));var logger=require(_0x7f0f('0x2'))(_0x7f0f('0x3'));var moment=require(_0x7f0f('0x4'));var BPromise=require(_0x7f0f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f0f('0x6'));var rimraf=require('rimraf');var config=require(_0x7f0f('0x7'));var attributes=require(_0x7f0f('0x8'));module[_0x7f0f('0x9')]=function(_0x535213,_0x4a5118){return _0x535213[_0x7f0f('0xa')](_0x7f0f('0xb'),attributes,{'tableName':_0x7f0f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f70=['../../config/logger','api','bluebird','request-promise','path','rimraf','./userMailQueue.attributes','UserMailQueue','util'];(function(_0xcf323f,_0x31b656){var _0x2a9135=function(_0x14ddc7){while(--_0x14ddc7){_0xcf323f['push'](_0xcf323f['shift']());}};_0x2a9135(++_0x31b656);}(_0x2f70,0x1b8));var _0x02f7=function(_0xf7ee87,_0x504bb7){_0xf7ee87=_0xf7ee87-0x0;var _0xf12d77=_0x2f70[_0xf7ee87];return _0xf12d77;};'use strict';var _=require('lodash');var util=require(_0x02f7('0x0'));var logger=require(_0x02f7('0x1'))(_0x02f7('0x2'));var moment=require('moment');var BPromise=require(_0x02f7('0x3'));var rp=require(_0x02f7('0x4'));var fs=require('fs');var path=require(_0x02f7('0x5'));var rimraf=require(_0x02f7('0x6'));var config=require('../../config/environment');var attributes=require(_0x02f7('0x7'));module['exports']=function(_0x4d6a8c,_0x3561d2){return _0x4d6a8c['define'](_0x02f7('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 914b46c..df65b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13aba3,_0x40e99a){var _0x4d977e=function(_0x173eaf){while(--_0x173eaf){_0x13aba3['push'](_0x13aba3['shift']());}};_0x4d977e(++_0x40e99a);}(_0x8ef6,0xf2));var _0x68ef=function(_0x2b9781,_0xc384cd){_0x2b9781=_0x2b9781-0x0;var _0x16903f=_0x8ef6[_0x2b9781];return _0x16903f;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}
\ No newline at end of file
+var _0xf3cd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserMailQueue,\x20%s,\x20%s','message','result'];(function(_0x2fd299,_0x34886b){var _0x2a5ab4=function(_0x5b20e4){while(--_0x5b20e4){_0x2fd299['push'](_0x2fd299['shift']());}};_0x2a5ab4(++_0x34886b);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x32f05c,_0x273aef){_0x32f05c=_0x32f05c-0x0;var _0x4307ed=_0xf3cd[_0x32f05c];return _0x4307ed;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var moment=require(_0xdf3c('0x2'));var BPromise=require(_0xdf3c('0x3'));var rs=require(_0xdf3c('0x4'));var fs=require('fs');var Redis=require(_0xdf3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf3c('0x6'));var logger=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf3c('0x9'));var client=jayson[_0xdf3c('0xa')][_0xdf3c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0601,_0x106021,_0x28edae){return new BPromise(function(_0x52c073,_0x15705d){return client['request'](_0x1f0601,_0x28edae)['then'](function(_0x22d8ae){logger[_0xdf3c('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0xdf3c('0xd'));logger[_0xdf3c('0xe')](_0xdf3c('0xf'),_0x106021,_0xdf3c('0xd'),JSON[_0xdf3c('0x10')](_0x22d8ae));if(_0x22d8ae[_0xdf3c('0x11')]){if(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x12')]===0x1f4){logger['error'](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);return _0x15705d(_0x22d8ae[_0xdf3c('0x11')]['message']);}logger[_0xdf3c('0x11')](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')]['message']);return _0x52c073(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);}else{logger[_0xdf3c('0xc')](_0xdf3c('0x13'),_0x106021,_0xdf3c('0xd'));_0x52c073(_0x22d8ae[_0xdf3c('0x15')][_0xdf3c('0x14')]);}})[_0xdf3c('0x16')](function(_0x2986d0){logger[_0xdf3c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0x2986d0);_0x15705d(_0x2986d0);});});}
\ No newline at end of file
index 6cafcba..cc4226a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed50=['../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x12aec9,_0x45e694){var _0x2c62a4=function(_0x21fd50){while(--_0x21fd50){_0x12aec9['push'](_0x12aec9['shift']());}};_0x2c62a4(++_0x45e694);}(_0xed50,0x92));var _0x0ed5=function(_0x35d649,_0x37210f){_0x35d649=_0x35d649-0x0;var _0x541bc4=_0xed50[_0x35d649];return _0x541bc4;};'use strict';var multer=require(_0x0ed5('0x0'));var util=require(_0x0ed5('0x1'));var path=require(_0x0ed5('0x2'));var timeout=require(_0x0ed5('0x3'));var express=require(_0x0ed5('0x4'));var router=express[_0x0ed5('0x5')]();var fs_extra=require(_0x0ed5('0x6'));var auth=require(_0x0ed5('0x7'));var interaction=require(_0x0ed5('0x8'));var config=require(_0x0ed5('0x9'));var controller=require(_0x0ed5('0xa'));router[_0x0ed5('0xb')]('/',auth[_0x0ed5('0xc')](),controller[_0x0ed5('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xe6c3=['post','sendUserNotification','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0xaf29da,_0x117f5a){var _0x295c51=function(_0x3feaf4){while(--_0x3feaf4){_0xaf29da['push'](_0xaf29da['shift']());}};_0x295c51(++_0x117f5a);}(_0xe6c3,0xcb));var _0x3e6c=function(_0x431939,_0x272af9){_0x431939=_0x431939-0x0;var _0x4debbc=_0xe6c3[_0x431939];return _0x4debbc;};'use strict';var multer=require('multer');var util=require(_0x3e6c('0x0'));var path=require('path');var timeout=require(_0x3e6c('0x1'));var express=require(_0x3e6c('0x2'));var router=express[_0x3e6c('0x3')]();var fs_extra=require(_0x3e6c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3e6c('0x5'));var config=require(_0x3e6c('0x6'));var controller=require('./userNotification.controller');router[_0x3e6c('0x7')]('/',auth['isAuthenticated'](),controller[_0x3e6c('0x8')]);module[_0x3e6c('0x9')]=router;
\ No newline at end of file
index b9531fa..a18d8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf18=['TEXT','STRING','BOOLEAN'];(function(_0x40c2f4,_0x53b288){var _0x2bfd69=function(_0x8b0f69){while(--_0x8b0f69){_0x40c2f4['push'](_0x40c2f4['shift']());}};_0x2bfd69(++_0x53b288);}(_0xcf18,0xde));var _0x8cf1=function(_0x328f06,_0x475748){_0x328f06=_0x328f06-0x0;var _0xce756b=_0xcf18[_0x328f06];return _0xce756b;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x8cf1('0x0')]},'senderName':{'type':Sequelize[_0x8cf1('0x1')]},'recipientsId':{'type':Sequelize[_0x8cf1('0x0')]},'recipientsDescription':{'type':Sequelize[_0x8cf1('0x1')]},'beep':{'type':Sequelize[_0x8cf1('0x2')]}};
\ No newline at end of file
+var _0xa746=['sequelize','exports','STRING'];(function(_0xfb4410,_0x4f0eab){var _0x41aaa3=function(_0x381a00){while(--_0x381a00){_0xfb4410['push'](_0xfb4410['shift']());}};_0x41aaa3(++_0x4f0eab);}(_0xa746,0x87));var _0x6a74=function(_0x2cdb22,_0x3e7ea0){_0x2cdb22=_0x2cdb22-0x0;var _0x2d66a9=_0xa746[_0x2cdb22];return _0x2d66a9;};'use strict';var Sequelize=require(_0x6a74('0x0'));module[_0x6a74('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x6a74('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x6a74('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index b08dfe4..5c64a6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ca=['all','flatten','findOne','map','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','mailqueue','voicequeue','whatsappqueue','team','user','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','User','union','queue','replace','Queue','ids'];(function(_0x318267,_0x561de5){var _0x375e94=function(_0x584b1b){while(--_0x584b1b){_0x318267['push'](_0x318267['shift']());}};_0x375e94(++_0x561de5);}(_0xb1ca,0x184));var _0xab1c=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0xb1ca[_0x5f3f88];return _0xd08119;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xab1c('0x0'));var moment=require(_0xab1c('0x1'));var BPromise=require(_0xab1c('0x2'));var Mustache=require(_0xab1c('0x3'));var util=require(_0xab1c('0x4'));var path=require(_0xab1c('0x5'));var sox=require(_0xab1c('0x6'));var csv=require(_0xab1c('0x7'));var ejs=require(_0xab1c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xab1c('0x9'));var squel=require('squel');var crypto=require(_0xab1c('0xa'));var jsforce=require(_0xab1c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xab1c('0x7'));var querystring=require(_0xab1c('0xc'));var Papa=require('papaparse');var Redis=require(_0xab1c('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xab1c('0xe'));var as=require(_0xab1c('0xf'));var hardwareService=require(_0xab1c('0x10'));var logger=require('../../config/logger')(_0xab1c('0x11'));var utils=require('../../config/utils');var config=require(_0xab1c('0x12'));var licenseUtil=require(_0xab1c('0x13'));var db=require(_0xab1c('0x14'))['db'];config[_0xab1c('0x15')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xab1c('0x16'))(new Redis(config[_0xab1c('0x15')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x1bde9b,_0xd40211){_0xd40211=_0xd40211||0xcc;return function(_0x58003d){if(_0x58003d){return _0x1bde9b[_0xab1c('0x17')](_0xd40211);}return _0x1bde9b[_0xab1c('0x18')](_0xd40211)[_0xab1c('0x19')]();};}function respondWithResult(_0x1c9e81,_0x4c9a8a){_0x4c9a8a=_0x4c9a8a||0xc8;return function(_0x4f8bc7){if(_0x4f8bc7){return _0x1c9e81[_0xab1c('0x18')](_0x4c9a8a)[_0xab1c('0x1a')](_0x4f8bc7);}};}function respondWithFilteredResult(_0x348d53,_0x5da550){return function(_0x4b23f0){if(_0x4b23f0){var _0x51cefd=typeof _0x5da550[_0xab1c('0x1b')]==='undefined'&&typeof _0x5da550[_0xab1c('0x1c')]===_0xab1c('0x1d');var _0x484656=_0x4b23f0[_0xab1c('0x1e')];var _0x2f7876=_0x51cefd?0x0:_0x5da550[_0xab1c('0x1b')];var _0x3a6662=_0x51cefd?_0x4b23f0[_0xab1c('0x1e')]:_0x5da550[_0xab1c('0x1b')]+_0x5da550[_0xab1c('0x1c')];var _0x255c7a;if(_0x3a6662>=_0x484656){_0x3a6662=_0x484656;_0x255c7a=0xc8;}else{_0x255c7a=0xce;}_0x348d53[_0xab1c('0x18')](_0x255c7a);return _0x348d53[_0xab1c('0x1f')](_0xab1c('0x20'),_0x2f7876+'-'+_0x3a6662+'/'+_0x484656)[_0xab1c('0x1a')](_0x4b23f0);}return null;};}function patchUpdates(_0x349132){return function(_0x352468){try{jsonpatch[_0xab1c('0x21')](_0x352468,_0x349132,!![]);}catch(_0x5b25b2){return BPromise[_0xab1c('0x22')](_0x5b25b2);}return _0x352468[_0xab1c('0x23')]();};}function saveUpdates(_0x516810,_0x427666){return function(_0x240b90){if(_0x240b90){return _0x240b90[_0xab1c('0x24')](_0x516810)[_0xab1c('0x25')](function(_0x43efd7){return _0x43efd7;});}return null;};}function removeEntity(_0x1c51db,_0x253d7f){return function(_0x300f98){if(_0x300f98){return _0x300f98[_0xab1c('0x26')]()['then'](function(){_0x1c51db[_0xab1c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12b9f0,_0x44f7fb){return function(_0xa2980){if(!_0xa2980){_0x12b9f0[_0xab1c('0x17')](0x194);}return _0xa2980;};}function handleError(_0x2736b1,_0x1d5686){_0x1d5686=_0x1d5686||0x1f4;return function(_0xae6784){logger[_0xab1c('0x27')](_0xae6784[_0xab1c('0x28')]);if(_0xae6784['name']){delete _0xae6784['name'];}_0x2736b1[_0xab1c('0x18')](_0x1d5686)[_0xab1c('0x29')](_0xae6784);};}exports[_0xab1c('0x2a')]=function(_0x2c9d4a,_0x30cdbf,_0x437cec){if(!_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x2c')](_0xab1c('0x2d'))&&!_0x2c9d4a['body'][_0xab1c('0x2c')]('TemplateId')){throw new db[(_0xab1c('0x2e'))][(_0xab1c('0x2f'))](_0xab1c('0x30'));}else{if(_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x2c')](_0xab1c('0x31'))&&!_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x2c')](_0xab1c('0x32'))){throw new db[(_0xab1c('0x2e'))][(_0xab1c('0x2f'))](_0xab1c('0x33'));}if(!_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x2c')](_0xab1c('0x34'))){throw new db[(_0xab1c('0x2e'))][(_0xab1c('0x2f'))](_0xab1c('0x35'));}else{try{var _0x57b746=JSON[_0xab1c('0x36')](_0x2c9d4a['body'][_0xab1c('0x34')]);}catch(_0x35f7fe){logger['error'](_0x35f7fe);throw new db[(_0xab1c('0x2e'))][(_0xab1c('0x2f'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x44daad=[_0xab1c('0x37'),'faxqueue',_0xab1c('0x38'),'openchannelqueue','smsqueue',_0xab1c('0x39'),_0xab1c('0x3a'),_0xab1c('0x3b'),_0xab1c('0x3c')];if(_[_0xab1c('0x3d')](_0x57b746,function(_0x3e6a5b){return!_['includes'](_0x44daad,_0x3e6a5b[_0xab1c('0x3e')][_0xab1c('0x3f')]());})){throw new db['Sequelize'][(_0xab1c('0x2f'))](_0xab1c('0x40'));}}}var _0x490a4e={};_0x490a4e[_0xab1c('0x41')]=_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x2c')](_0xab1c('0x41'))?_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x41')]:_0x2c9d4a[_0xab1c('0x3c')]['fullname'];_0x490a4e[_0xab1c('0x42')]=_[_0xab1c('0x43')](_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x42')])?null:_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x42')];_0x490a4e[_0xab1c('0x44')]=_0x2c9d4a[_0xab1c('0x2b')][_0xab1c('0x44')]||![];_0x490a4e[_0xab1c('0x45')]=_0x2c9d4a[_0xab1c('0x3c')]['id'];return getContent(_0x2c9d4a[_0xab1c('0x2b')])[_0xab1c('0x25')](function(_0x276310){_0x490a4e[_0xab1c('0x2b')]=_0x276310;return getRecipients(_0x57b746);})[_0xab1c('0x25')](function(_0x5437c2){_0x490a4e[_0xab1c('0x46')]=_[_0xab1c('0x47')](_0x5437c2)[_0xab1c('0x48')](',');return db[_0xab1c('0x49')][_0xab1c('0x4a')](function(_0x226ae8){return db[_0xab1c('0x4b')][_0xab1c('0x4c')](_0x490a4e,{'raw':!![],'transaction':_0x226ae8})[_0xab1c('0x25')](function(_0x5419d5){var _0x31ee4c={'sender':_0x490a4e[_0xab1c('0x41')],'description':_0x490a4e['recipientsDescription'],'content':_0x490a4e[_0xab1c('0x2b')],'beep':_0x490a4e[_0xab1c('0x44')]};_0x5437c2[_0xab1c('0x4d')](function(_0x50bf22){_0x31ee4c[_0xab1c('0x4e')]=_0x50bf22;socket[_0xab1c('0x4f')](_0xab1c('0x50'),_0x31ee4c);});return _0x5419d5;});});})[_0xab1c('0x25')](respondWithResult(_0x30cdbf,0xc9))[_0xab1c('0x51')](handleError(_0x30cdbf,null));};function getContent(_0x38e03b){return new BPromise(function(_0x49b69b,_0x392a9b){if(_0x38e03b['text']){_0x49b69b(_0x38e03b['text']);return;}return db['Template']['findOne']({'attributes':[_0xab1c('0x52')],'where':{'id':_0x38e03b[_0xab1c('0x31')]},'raw':!![]})[_0xab1c('0x25')](function(_0x506d7b){if(!_0x506d7b)throw new db[(_0xab1c('0x2e'))][(_0xab1c('0x2f'))](_0xab1c('0x53'));var _0x738e6a=Mustache[_0xab1c('0x54')](_0x506d7b[_0xab1c('0x52')],_0x38e03b['view']);_0x49b69b(_0x738e6a);})[_0xab1c('0x51')](function(_0xd38547){_0x392a9b(_0xd38547);});});}function getRecipients(_0x45ff2a){return new BPromise(function(_0x36c3f4,_0x591a84){var _0x9d1d93=[];var _0x5c2df7=[];_0x45ff2a[_0xab1c('0x4d')](function(_0x46b5c0){var _0x263908=_[_0xab1c('0x55')](_0x46b5c0[_0xab1c('0x3e')][_0xab1c('0x3f')]());if(_0x263908===_0xab1c('0x56')){_0x9d1d93=_[_0xab1c('0x57')](_0x9d1d93,_0x46b5c0['ids']);}else{if(_['includes'](_0x263908,_0xab1c('0x58')))_0x263908=_0x263908[_0xab1c('0x59')]('queue',_0xab1c('0x5a'));_0x46b5c0[_0xab1c('0x5b')]['forEach'](function(_0x512c0a){_0x5c2df7['push'](getAgents(_0x263908,_0x512c0a));});}});return BPromise[_0xab1c('0x5c')](_0x5c2df7)[_0xab1c('0x25')](function(_0x29370d){_0x9d1d93=_[_0xab1c('0x57')](_0x9d1d93,_[_0xab1c('0x5d')](_0x29370d));_0x36c3f4(_0x9d1d93);})[_0xab1c('0x51')](function(_0x32117d){_0x591a84(_0x32117d);});});}function getAgents(_0x54c06e,_0x344e0d){return new BPromise(function(_0x321a5d,_0x40adbc){return db[_0x54c06e][_0xab1c('0x5e')]({'where':{'id':_0x344e0d}})[_0xab1c('0x25')](function(_0x1f94fa){return _0x1f94fa['getAgents']({'attributes':['id'],'raw':!![]})[_0xab1c('0x25')](function(_0x129b5f){var _0x521922=_[_0xab1c('0x5f')](_0x129b5f,'id');_0x321a5d(_0x521922);});})['catch'](function(_0x10f759){_0x40adbc(_0x10f759);});});}
\ No newline at end of file
+var _0xd782=['end','sendStatus','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','user','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','beep','recipientsId','sortBy','join','transaction','UserNotification','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','model','User','union','queue','Queue','ids','push','all','flatten','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','json','offset','count','limit','status','set','Content-Range','apply','save','then','destroy'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xd782,0x9e));var _0x2d78=function(_0x270222,_0x199d50){_0x270222=_0x270222-0x0;var _0x5c575e=_0xd782[_0x270222];return _0x5c575e;};'use strict';var emlformat=require(_0x2d78('0x0'));var rimraf=require(_0x2d78('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2d78('0x2'));var rp=require(_0x2d78('0x3'));var moment=require('moment');var BPromise=require(_0x2d78('0x4'));var Mustache=require(_0x2d78('0x5'));var util=require(_0x2d78('0x6'));var path=require('path');var sox=require(_0x2d78('0x7'));var csv=require('to-csv');var ejs=require(_0x2d78('0x8'));var fs=require('fs');var fs_extra=require(_0x2d78('0x9'));var _=require('lodash');var squel=require(_0x2d78('0xa'));var crypto=require(_0x2d78('0xb'));var jsforce=require(_0x2d78('0xc'));var deskjs=require(_0x2d78('0xd'));var toCsv=require(_0x2d78('0xe'));var querystring=require(_0x2d78('0xf'));var Papa=require(_0x2d78('0x10'));var Redis=require(_0x2d78('0x11'));var authService=require(_0x2d78('0x12'));var qs=require(_0x2d78('0x13'));var as=require(_0x2d78('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2d78('0x15'))(_0x2d78('0x16'));var utils=require(_0x2d78('0x17'));var config=require(_0x2d78('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2d78('0x19'))['db'];config[_0x2d78('0x1a')]=_['defaults'](config[_0x2d78('0x1a')],{'host':_0x2d78('0x1b'),'port':0x18eb});var socket=require(_0x2d78('0x1c'))(new Redis(config[_0x2d78('0x1a')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x260f81,_0x5c6b66){_0x5c6b66=_0x5c6b66||0xcc;return function(_0xcc1897){if(_0xcc1897){return _0x260f81['sendStatus'](_0x5c6b66);}return _0x260f81['status'](_0x5c6b66)['end']();};}function respondWithResult(_0x724982,_0x333540){_0x333540=_0x333540||0xc8;return function(_0x18be2f){if(_0x18be2f){return _0x724982['status'](_0x333540)[_0x2d78('0x1d')](_0x18be2f);}};}function respondWithFilteredResult(_0x152b83,_0xb82baf){return function(_0x471c41){if(_0x471c41){var _0x132daa=typeof _0xb82baf[_0x2d78('0x1e')]==='undefined'&&typeof _0xb82baf['limit']==='undefined';var _0x51803d=_0x471c41[_0x2d78('0x1f')];var _0x41cc84=_0x132daa?0x0:_0xb82baf[_0x2d78('0x1e')];var _0x48ef9e=_0x132daa?_0x471c41[_0x2d78('0x1f')]:_0xb82baf['offset']+_0xb82baf[_0x2d78('0x20')];var _0x35d133;if(_0x48ef9e>=_0x51803d){_0x48ef9e=_0x51803d;_0x35d133=0xc8;}else{_0x35d133=0xce;}_0x152b83[_0x2d78('0x21')](_0x35d133);return _0x152b83[_0x2d78('0x22')](_0x2d78('0x23'),_0x41cc84+'-'+_0x48ef9e+'/'+_0x51803d)['json'](_0x471c41);}return null;};}function patchUpdates(_0x331d09){return function(_0xbeb032){try{jsonpatch[_0x2d78('0x24')](_0xbeb032,_0x331d09,!![]);}catch(_0x381d88){return BPromise['reject'](_0x381d88);}return _0xbeb032[_0x2d78('0x25')]();};}function saveUpdates(_0x1ab20e,_0x5943f0){return function(_0x764fa4){if(_0x764fa4){return _0x764fa4['update'](_0x1ab20e)[_0x2d78('0x26')](function(_0x31979f){return _0x31979f;});}return null;};}function removeEntity(_0x17dc0d,_0x29adb5){return function(_0x1ffbb1){if(_0x1ffbb1){return _0x1ffbb1[_0x2d78('0x27')]()[_0x2d78('0x26')](function(){_0x17dc0d[_0x2d78('0x21')](0xcc)[_0x2d78('0x28')]();});}};}function handleEntityNotFound(_0x207c28,_0x43665f){return function(_0x11a75d){if(!_0x11a75d){_0x207c28[_0x2d78('0x29')](0x194);}return _0x11a75d;};}function handleError(_0x1483bc,_0x2294d0){_0x2294d0=_0x2294d0||0x1f4;return function(_0x2e300c){logger[_0x2d78('0x2a')](_0x2e300c[_0x2d78('0x2b')]);if(_0x2e300c[_0x2d78('0x2c')]){delete _0x2e300c[_0x2d78('0x2c')];}_0x1483bc[_0x2d78('0x21')](_0x2294d0)[_0x2d78('0x2d')](_0x2e300c);};}exports[_0x2d78('0x2e')]=function(_0x3a5909,_0x2489b9,_0x2c3361){if(!_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x30')](_0x2d78('0x31'))&&!_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x30')]('TemplateId')){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x34'));}else{if(_0x3a5909[_0x2d78('0x2f')]['hasOwnProperty'](_0x2d78('0x35'))&&!_0x3a5909['body']['hasOwnProperty'](_0x2d78('0x36'))){throw new db['Sequelize'][(_0x2d78('0x33'))](_0x2d78('0x37'));}if(!_0x3a5909['body']['hasOwnProperty'](_0x2d78('0x38'))){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x39'));}else{try{var _0x552c4b=JSON[_0x2d78('0x3a')](_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x38')]);}catch(_0x348f78){logger[_0x2d78('0x2a')](_0x348f78);throw new db['Sequelize']['ValidationError'](_0x2d78('0x3b'));}var _0x5ac9f1=[_0x2d78('0x3c'),_0x2d78('0x3d'),_0x2d78('0x3e'),_0x2d78('0x3f'),_0x2d78('0x40'),'voicequeue',_0x2d78('0x41'),'team',_0x2d78('0x42')];if(_[_0x2d78('0x43')](_0x552c4b,function(_0x251951){return!_[_0x2d78('0x44')](_0x5ac9f1,_0x251951['model'][_0x2d78('0x45')]());})){throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x46'));}}}var _0x53c014={};_0x53c014[_0x2d78('0x47')]=_0x3a5909[_0x2d78('0x2f')]['hasOwnProperty'](_0x2d78('0x47'))?_0x3a5909['body'][_0x2d78('0x47')]:_0x3a5909['user']['fullname'];_0x53c014[_0x2d78('0x48')]=_['isEmpty'](_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x48')])?null:_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x48')];_0x53c014[_0x2d78('0x49')]=_0x3a5909[_0x2d78('0x2f')][_0x2d78('0x49')]||![];_0x53c014['SenderId']=_0x3a5909[_0x2d78('0x42')]['id'];return getContent(_0x3a5909[_0x2d78('0x2f')])[_0x2d78('0x26')](function(_0x37d7c8){_0x53c014['body']=_0x37d7c8;return getRecipients(_0x552c4b);})[_0x2d78('0x26')](function(_0x35fc16){_0x53c014[_0x2d78('0x4a')]=_[_0x2d78('0x4b')](_0x35fc16)[_0x2d78('0x4c')](',');return db['sequelize'][_0x2d78('0x4d')](function(_0x269d01){return db[_0x2d78('0x4e')]['create'](_0x53c014,{'raw':!![],'transaction':_0x269d01})[_0x2d78('0x26')](function(_0x5d8e3a){var _0x3df468={'sender':_0x53c014[_0x2d78('0x47')],'description':_0x53c014[_0x2d78('0x48')],'content':_0x53c014[_0x2d78('0x2f')],'beep':_0x53c014[_0x2d78('0x49')]};_0x35fc16[_0x2d78('0x4f')](function(_0x266acd){_0x3df468[_0x2d78('0x50')]=_0x266acd;socket[_0x2d78('0x51')](_0x2d78('0x52'),_0x3df468);});return _0x5d8e3a;});});})[_0x2d78('0x26')](respondWithResult(_0x2489b9,0xc9))[_0x2d78('0x53')](handleError(_0x2489b9,null));};function getContent(_0x33195b){return new BPromise(function(_0x31bd0b,_0x5e6246){if(_0x33195b['text']){_0x31bd0b(_0x33195b[_0x2d78('0x31')]);return;}return db[_0x2d78('0x54')][_0x2d78('0x55')]({'attributes':[_0x2d78('0x56')],'where':{'id':_0x33195b['TemplateId']},'raw':!![]})[_0x2d78('0x26')](function(_0x2dc28d){if(!_0x2dc28d)throw new db[(_0x2d78('0x32'))][(_0x2d78('0x33'))](_0x2d78('0x57'));var _0xb7a880=Mustache[_0x2d78('0x58')](_0x2dc28d['html'],_0x33195b[_0x2d78('0x36')]);_0x31bd0b(_0xb7a880);})[_0x2d78('0x53')](function(_0x3aecf4){_0x5e6246(_0x3aecf4);});});}function getRecipients(_0x30e000){return new BPromise(function(_0x975fc5,_0x101063){var _0x3e3a24=[];var _0x19ebad=[];_0x30e000['forEach'](function(_0x32b115){var _0x375138=_['startCase'](_0x32b115[_0x2d78('0x59')]['toLowerCase']());if(_0x375138===_0x2d78('0x5a')){_0x3e3a24=_[_0x2d78('0x5b')](_0x3e3a24,_0x32b115['ids']);}else{if(_[_0x2d78('0x44')](_0x375138,_0x2d78('0x5c')))_0x375138=_0x375138['replace'](_0x2d78('0x5c'),_0x2d78('0x5d'));_0x32b115[_0x2d78('0x5e')][_0x2d78('0x4f')](function(_0x57b69e){_0x19ebad[_0x2d78('0x5f')](getAgents(_0x375138,_0x57b69e));});}});return BPromise[_0x2d78('0x60')](_0x19ebad)[_0x2d78('0x26')](function(_0xa69c98){_0x3e3a24=_[_0x2d78('0x5b')](_0x3e3a24,_[_0x2d78('0x61')](_0xa69c98));_0x975fc5(_0x3e3a24);})['catch'](function(_0x33cc8d){_0x101063(_0x33cc8d);});});}function getAgents(_0x62466,_0x2d73e2){return new BPromise(function(_0x229c0d,_0x42af0a){return db[_0x62466][_0x2d78('0x55')]({'where':{'id':_0x2d73e2}})['then'](function(_0x2eb5ae){return _0x2eb5ae[_0x2d78('0x62')]({'attributes':['id'],'raw':!![]})[_0x2d78('0x26')](function(_0x19ac90){var _0xd752fa=_['map'](_0x19ac90,'id');_0x229c0d(_0xd752fa);});})[_0x2d78('0x53')](function(_0x4e590b){_0x42af0a(_0x4e590b);});});}
\ No newline at end of file
index e56947d..163c2da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a46=['hasOwnProperty','hook','exports','../../mysqldb','UserNotification','setMaxListeners','save','remove','emit'];(function(_0x378bb4,_0x57579e){var _0x464fa2=function(_0x2b6ff6){while(--_0x2b6ff6){_0x378bb4['push'](_0x378bb4['shift']());}};_0x464fa2(++_0x57579e);}(_0x4a46,0x81));var _0x64a4=function(_0x572eb5,_0x4d2f0f){_0x572eb5=_0x572eb5-0x0;var _0xd5b42=_0x4a46[_0x572eb5];return _0xd5b42;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x64a4('0x0'))['db'][_0x64a4('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x64a4('0x2')](0x0);var events={'afterCreate':_0x64a4('0x3'),'afterUpdate':'update','afterDestroy':_0x64a4('0x4')};function emitEvent(_0x37dc29){return function(_0x572761,_0x9811f5,_0x2e2cd2){UserNotificationEvents['emit'](_0x37dc29+':'+_0x572761['id'],_0x572761);UserNotificationEvents[_0x64a4('0x5')](_0x37dc29,_0x572761);_0x2e2cd2(null);};}for(var e in events){if(events[_0x64a4('0x6')](e)){var event=events[e];UserNotification[_0x64a4('0x7')](e,emitEvent(event));}}module[_0x64a4('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x23aa=['hook','exports','events','UserNotification','save','update','remove','emit','hasOwnProperty'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x23aa,0x80));var _0xa23a=function(_0x39614c,_0x183c94){_0x39614c=_0x39614c-0x0;var _0x4958cd=_0x23aa[_0x39614c];return _0x4958cd;};'use strict';var EventEmitter=require(_0xa23a('0x0'));var UserNotification=require('../../mysqldb')['db'][_0xa23a('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa23a('0x2'),'afterUpdate':_0xa23a('0x3'),'afterDestroy':_0xa23a('0x4')};function emitEvent(_0x4b512b){return function(_0x2237b2,_0xfeb670,_0x313418){UserNotificationEvents[_0xa23a('0x5')](_0x4b512b+':'+_0x2237b2['id'],_0x2237b2);UserNotificationEvents[_0xa23a('0x5')](_0x4b512b,_0x2237b2);_0x313418(null);};}for(var e in events){if(events[_0xa23a('0x6')](e)){var event=events[e];UserNotification[_0xa23a('0x7')](e,emitEvent(event));}}module[_0xa23a('0x8')]=UserNotificationEvents;
\ No newline at end of file
index d7fef9a..cb2b4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db5=['path','rimraf','../../config/environment','./userNotification.attributes','define','userNotifications','lodash','../../config/logger','bluebird','request-promise'];(function(_0x95a12,_0x38bed8){var _0x3805e9=function(_0x1c0874){while(--_0x1c0874){_0x95a12['push'](_0x95a12['shift']());}};_0x3805e9(++_0x38bed8);}(_0x1db5,0x18c));var _0x51db=function(_0x5b1060,_0x3bf049){_0x5b1060=_0x5b1060-0x0;var _0x4d21b4=_0x1db5[_0x5b1060];return _0x4d21b4;};'use strict';var _=require(_0x51db('0x0'));var util=require('util');var logger=require(_0x51db('0x1'))('api');var moment=require('moment');var BPromise=require(_0x51db('0x2'));var rp=require(_0x51db('0x3'));var fs=require('fs');var path=require(_0x51db('0x4'));var rimraf=require(_0x51db('0x5'));var config=require(_0x51db('0x6'));var attributes=require(_0x51db('0x7'));module['exports']=function(_0x313989,_0x403b09){return _0x313989[_0x51db('0x8')]('UserNotification',attributes,{'tableName':_0x51db('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1305=['bluebird','request-promise','path','rimraf','./userNotification.attributes','exports','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x2f6702,_0x1fe336){var _0x567352=function(_0x149ca4){while(--_0x149ca4){_0x2f6702['push'](_0x2f6702['shift']());}};_0x567352(++_0x1fe336);}(_0x1305,0x172));var _0x5130=function(_0x12de2b,_0x565585){_0x12de2b=_0x12de2b-0x0;var _0x248c02=_0x1305[_0x12de2b];return _0x248c02;};'use strict';var _=require(_0x5130('0x0'));var util=require(_0x5130('0x1'));var logger=require(_0x5130('0x2'))(_0x5130('0x3'));var moment=require(_0x5130('0x4'));var BPromise=require(_0x5130('0x5'));var rp=require(_0x5130('0x6'));var fs=require('fs');var path=require(_0x5130('0x7'));var rimraf=require(_0x5130('0x8'));var config=require('../../config/environment');var attributes=require(_0x5130('0x9'));module[_0x5130('0xa')]=function(_0xf832f8,_0x5a2618){return _0xf832f8[_0x5130('0xb')](_0x5130('0xc'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5130('0xd'),'collate':_0x5130('0xe')});};
\ No newline at end of file
index 02c5db1..6beb730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3708=['defaults','localhost','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis'];(function(_0x59596d,_0x618414){var _0x535eaf=function(_0x4ce272){while(--_0x4ce272){_0x59596d['push'](_0x59596d['shift']());}};_0x535eaf(++_0x618414);}(_0x3708,0x12e));var _0x8370=function(_0x4eb253,_0x360a23){_0x4eb253=_0x4eb253-0x0;var _0x87d2bd=_0x3708[_0x4eb253];return _0x87d2bd;};'use strict';var _=require(_0x8370('0x0'));var util=require(_0x8370('0x1'));var moment=require('moment');var BPromise=require(_0x8370('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8370('0x3'));var logger=require(_0x8370('0x4'))(_0x8370('0x5'));var config=require(_0x8370('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8370('0x7')][_0x8370('0x8')]({'port':0x232a});config[_0x8370('0x9')]=_[_0x8370('0xa')](config[_0x8370('0x9')],{'host':_0x8370('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8370('0xc'))[_0x8370('0xd')](socket);function respondWithRpcPromise(_0x5723fe,_0x5f1b52,_0x3342f9){return new BPromise(function(_0x47ffd7,_0x9c1066){return client[_0x8370('0xe')](_0x5723fe,_0x3342f9)['then'](function(_0x2da30f){logger[_0x8370('0xf')](_0x8370('0x10'),_0x5f1b52,_0x8370('0x11'));logger[_0x8370('0x12')](_0x8370('0x13'),_0x5f1b52,'request\x20sent',JSON[_0x8370('0x14')](_0x2da30f));if(_0x2da30f[_0x8370('0x15')]){if(_0x2da30f[_0x8370('0x15')][_0x8370('0x16')]===0x1f4){logger['error'](_0x8370('0x10'),_0x5f1b52,_0x2da30f['error'][_0x8370('0x17')]);return _0x9c1066(_0x2da30f[_0x8370('0x15')]['message']);}logger[_0x8370('0x15')](_0x8370('0x10'),_0x5f1b52,_0x2da30f['error'][_0x8370('0x17')]);return _0x47ffd7(_0x2da30f['error'][_0x8370('0x17')]);}else{logger['info'](_0x8370('0x10'),_0x5f1b52,_0x8370('0x11'));_0x47ffd7(_0x2da30f[_0x8370('0x18')]['message']);}})[_0x8370('0x19')](function(_0x22d208){logger[_0x8370('0x15')](_0x8370('0x10'),_0x5f1b52,_0x22d208);_0x9c1066(_0x22d208);});});}
\ No newline at end of file
+var _0xcd9a=['request\x20sent','stringify','error','code','UserNotification,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info'];(function(_0x242eb9,_0x56376d){var _0xc7e2a0=function(_0x251b94){while(--_0x251b94){_0x242eb9['push'](_0x242eb9['shift']());}};_0xc7e2a0(++_0x56376d);}(_0xcd9a,0x1ea));var _0xacd9=function(_0x19a85f,_0x50ea42){_0x19a85f=_0x19a85f-0x0;var _0x2a8c76=_0xcd9a[_0x19a85f];return _0x2a8c76;};'use strict';var _=require(_0xacd9('0x0'));var util=require('util');var moment=require(_0xacd9('0x1'));var BPromise=require(_0xacd9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xacd9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xacd9('0x4'));var logger=require(_0xacd9('0x5'))('rpc');var config=require(_0xacd9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xacd9('0x7')]['http']({'port':0x232a});config[_0xacd9('0x8')]=_[_0xacd9('0x9')](config['redis'],{'host':_0xacd9('0xa'),'port':0x18eb});var socket=require(_0xacd9('0xb'))(new Redis(config['redis']));require('./userNotification.socket')[_0xacd9('0xc')](socket);function respondWithRpcPromise(_0x1f3895,_0x3b72f7,_0x51d15c){return new BPromise(function(_0x10a8f9,_0x239891){return client[_0xacd9('0xd')](_0x1f3895,_0x51d15c)[_0xacd9('0xe')](function(_0x540df6){logger[_0xacd9('0xf')]('UserNotification,\x20%s,\x20%s',_0x3b72f7,'request\x20sent');logger['debug']('UserNotification,\x20%s,\x20%s,\x20%s',_0x3b72f7,_0xacd9('0x10'),JSON[_0xacd9('0x11')](_0x540df6));if(_0x540df6[_0xacd9('0x12')]){if(_0x540df6['error'][_0xacd9('0x13')]===0x1f4){logger[_0xacd9('0x12')](_0xacd9('0x14'),_0x3b72f7,_0x540df6[_0xacd9('0x12')]['message']);return _0x239891(_0x540df6[_0xacd9('0x12')][_0xacd9('0x15')]);}logger['error'](_0xacd9('0x14'),_0x3b72f7,_0x540df6[_0xacd9('0x12')]['message']);return _0x10a8f9(_0x540df6['error']['message']);}else{logger[_0xacd9('0xf')](_0xacd9('0x14'),_0x3b72f7,_0xacd9('0x10'));_0x10a8f9(_0x540df6['result'][_0xacd9('0x15')]);}})[_0xacd9('0x16')](function(_0x4bf7d8){logger[_0xacd9('0x12')](_0xacd9('0x14'),_0x3b72f7,_0x4bf7d8);_0x239891(_0x4bf7d8);});});}
\ No newline at end of file
index 5113653..ecbbe03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea84=['register','userNotification:','save','update','emit'];(function(_0x43e2c0,_0x5dff8c){var _0x7a6bbd=function(_0x3072b3){while(--_0x3072b3){_0x43e2c0['push'](_0x43e2c0['shift']());}};_0x7a6bbd(++_0x5dff8c);}(_0xea84,0xca));var _0x4ea8=function(_0x541bd8,_0x50f4da){_0x541bd8=_0x541bd8-0x0;var _0x42f5f5=_0xea84[_0x541bd8];return _0x42f5f5;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0x4ea8('0x0'),'remove',_0x4ea8('0x1')];function createListener(_0x3723a5,_0x4374ba){return function(_0x5cc2a5){_0x4374ba[_0x4ea8('0x2')](_0x3723a5,_0x5cc2a5);};}function removeListener(_0x4d305f,_0x1c7cd7){return function(){UserNotificationEvents['removeListener'](_0x4d305f,_0x1c7cd7);};}exports[_0x4ea8('0x3')]=function(_0x670b3){for(var _0x3c54cb=0x0,_0x47cd07=events['length'];_0x3c54cb<_0x47cd07;_0x3c54cb++){var _0x56078d=events[_0x3c54cb];var _0x404a9a=createListener(_0x4ea8('0x4')+_0x56078d,_0x670b3);UserNotificationEvents['on'](_0x56078d,_0x404a9a);}};
\ No newline at end of file
+var _0xa0f4=['length','remove','update','emit','removeListener','register'];(function(_0x25ad30,_0x4d9cb8){var _0x97c45e=function(_0x2f3b62){while(--_0x2f3b62){_0x25ad30['push'](_0x25ad30['shift']());}};_0x97c45e(++_0x4d9cb8);}(_0xa0f4,0xeb));var _0x4a0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0f4[_0x3dd15e];return _0x231fd0;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=['save',_0x4a0f('0x0'),_0x4a0f('0x1')];function createListener(_0x5e1b1d,_0xe9142b){return function(_0x5de8b1){_0xe9142b[_0x4a0f('0x2')](_0x5e1b1d,_0x5de8b1);};}function removeListener(_0x11ca7d,_0x5e2d5b){return function(){UserNotificationEvents[_0x4a0f('0x3')](_0x11ca7d,_0x5e2d5b);};}exports[_0x4a0f('0x4')]=function(_0x468406){for(var _0x69daef=0x0,_0x1e73dc=events[_0x4a0f('0x5')];_0x69daef<_0x1e73dc;_0x69daef++){var _0x39f9c9=events[_0x69daef];var _0x54e1d4=createListener('userNotification:'+_0x39f9c9,_0x468406);UserNotificationEvents['on'](_0x39f9c9,_0x54e1d4);}};
\ No newline at end of file
index 9a0a6f9..9cc81aa 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(_0x1be709,_0x3038f3){var _0x110ecb=function(_0x6896e3){while(--_0x6896e3){_0x1be709['push'](_0x1be709['shift']());}};_0x110ecb(++_0x3038f3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x1ca6a1,_0x13a708){var _0x5ddb07=function(_0x13fb33){while(--_0x13fb33){_0x1ca6a1['push'](_0x1ca6a1['shift']());}};_0x5ddb07(++_0x13a708);}(_0xe706,0xa3));var _0x6e70=function(_0x496cdc,_0x9d6db3){_0x496cdc=_0x496cdc-0x0;var _0x103a8e=_0xe706[_0x496cdc];return _0x103a8e;};'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 6b23a8c..72e161f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe888=['sequelize','exports'];(function(_0x155e04,_0x28cd61){var _0x4590d0=function(_0x3f685b){while(--_0x3f685b){_0x155e04['push'](_0x155e04['shift']());}};_0x4590d0(++_0x28cd61);}(_0xe888,0x1a6));var _0x8e88=function(_0x44216d,_0x4938a7){_0x44216d=_0x44216d-0x0;var _0xeca523=_0xe888[_0x44216d];return _0xeca523;};'use strict';var Sequelize=require(_0x8e88('0x0'));module[_0x8e88('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0178=['exports','INTEGER','sequelize'];(function(_0x4ac98a,_0x239b8a){var _0x3f0fe2=function(_0x1a9d77){while(--_0x1a9d77){_0x4ac98a['push'](_0x4ac98a['shift']());}};_0x3f0fe2(++_0x239b8a);}(_0x0178,0xce));var _0x8017=function(_0x2ff0ef,_0x2daf13){_0x2ff0ef=_0x2ff0ef-0x0;var _0x3215bc=_0x0178[_0x2ff0ef];return _0x3215bc;};'use strict';var Sequelize=require(_0x8017('0x0'));module[_0x8017('0x1')]={'penalty':{'type':Sequelize[_0x8017('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 0777433..d6ad647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf25=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues'];(function(_0x3f1d10,_0x2ddcfc){var _0x3f55b1=function(_0x1f5a21){while(--_0x1f5a21){_0x3f1d10['push'](_0x3f1d10['shift']());}};_0x3f55b1(++_0x2ddcfc);}(_0xbf25,0x1a0));var _0x5bf2=function(_0x114ab9,_0x41f12b){_0x114ab9=_0x114ab9-0x0;var _0x7e04af=_0xbf25[_0x114ab9];return _0x7e04af;};'use strict';var _=require(_0x5bf2('0x0'));var util=require(_0x5bf2('0x1'));var logger=require(_0x5bf2('0x2'))(_0x5bf2('0x3'));var moment=require(_0x5bf2('0x4'));var BPromise=require(_0x5bf2('0x5'));var rp=require(_0x5bf2('0x6'));var fs=require('fs');var path=require(_0x5bf2('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5bf2('0x8'));module[_0x5bf2('0x9')]=function(_0x5a7ee8,_0xc1c544){return _0x5a7ee8[_0x5bf2('0xa')](_0x5bf2('0xb'),attributes,{'tableName':_0x5bf2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8927=['UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','api','moment','bluebird','request-promise','path','./userOpenchannelQueue.attributes','define'];(function(_0x250986,_0x50d510){var _0x31c8ef=function(_0x4628c0){while(--_0x4628c0){_0x250986['push'](_0x250986['shift']());}};_0x31c8ef(++_0x50d510);}(_0x8927,0xde));var _0x7892=function(_0x686d8c,_0x4dc124){_0x686d8c=_0x686d8c-0x0;var _0x4b11ae=_0x8927[_0x686d8c];return _0x4b11ae;};'use strict';var _=require(_0x7892('0x0'));var util=require(_0x7892('0x1'));var logger=require('../../config/logger')(_0x7892('0x2'));var moment=require(_0x7892('0x3'));var BPromise=require(_0x7892('0x4'));var rp=require(_0x7892('0x5'));var fs=require('fs');var path=require(_0x7892('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7892('0x7'));module['exports']=function(_0x10675d,_0xc0bce7){return _0x10675d[_0x7892('0x8')](_0x7892('0x9'),attributes,{'tableName':_0x7892('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44072c6..3068b12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4752=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x32753a,_0x313eff){var _0x5cc638=function(_0x87e14c){while(--_0x87e14c){_0x32753a['push'](_0x32753a['shift']());}};_0x5cc638(++_0x313eff);}(_0x4752,0x1ba));var _0x2475=function(_0x317c97,_0x44b147){_0x317c97=_0x317c97-0x0;var _0x4d0797=_0x4752[_0x317c97];return _0x4d0797;};'use strict';var _=require(_0x2475('0x0'));var util=require('util');var moment=require(_0x2475('0x1'));var BPromise=require(_0x2475('0x2'));var rs=require(_0x2475('0x3'));var fs=require('fs');var Redis=require(_0x2475('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2475('0x5'));var logger=require(_0x2475('0x6'))(_0x2475('0x7'));var config=require(_0x2475('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2475('0x9')][_0x2475('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7ca9,_0x4f2051,_0x1fadcb){return new BPromise(function(_0x10a845,_0x17e3aa){return client[_0x2475('0xb')](_0x3f7ca9,_0x1fadcb)[_0x2475('0xc')](function(_0xd1edc3){logger[_0x2475('0xd')](_0x2475('0xe'),_0x4f2051,'request\x20sent');logger[_0x2475('0xf')](_0x2475('0x10'),_0x4f2051,_0x2475('0x11'),JSON['stringify'](_0xd1edc3));if(_0xd1edc3['error']){if(_0xd1edc3[_0x2475('0x12')][_0x2475('0x13')]===0x1f4){logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x4f2051,_0xd1edc3[_0x2475('0x12')][_0x2475('0x14')]);return _0x17e3aa(_0xd1edc3['error']['message']);}logger[_0x2475('0x12')](_0x2475('0xe'),_0x4f2051,_0xd1edc3[_0x2475('0x12')][_0x2475('0x14')]);return _0x10a845(_0xd1edc3[_0x2475('0x12')][_0x2475('0x14')]);}else{logger[_0x2475('0xd')](_0x2475('0xe'),_0x4f2051,_0x2475('0x11'));_0x10a845(_0xd1edc3[_0x2475('0x15')][_0x2475('0x14')]);}})[_0x2475('0x16')](function(_0xb33cb7){logger[_0x2475('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4f2051,_0xb33cb7);_0x17e3aa(_0xb33cb7);});});}
\ No newline at end of file
+var _0xe7a8=['../../config/environment','jayson/promise','client','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2ba00c,_0x182642){var _0x21712b=function(_0x1bcf8e){while(--_0x1bcf8e){_0x2ba00c['push'](_0x2ba00c['shift']());}};_0x21712b(++_0x182642);}(_0xe7a8,0x92));var _0x8e7a=function(_0xb3c46e,_0x5c15f0){_0xb3c46e=_0xb3c46e-0x0;var _0x43ad16=_0xe7a8[_0xb3c46e];return _0x43ad16;};'use strict';var _=require(_0x8e7a('0x0'));var util=require('util');var moment=require(_0x8e7a('0x1'));var BPromise=require(_0x8e7a('0x2'));var rs=require(_0x8e7a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e7a('0x4'))['db'];var utils=require(_0x8e7a('0x5'));var logger=require(_0x8e7a('0x6'))(_0x8e7a('0x7'));var config=require(_0x8e7a('0x8'));var jayson=require(_0x8e7a('0x9'));var client=jayson[_0x8e7a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e2b04,_0x2d4143,_0x4f35a8){return new BPromise(function(_0x42239a,_0x1d9bf8){return client[_0x8e7a('0xb')](_0x3e2b04,_0x4f35a8)[_0x8e7a('0xc')](function(_0x46566f){logger['info'](_0x8e7a('0xd'),_0x2d4143,_0x8e7a('0xe'));logger['debug']('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x2d4143,'request\x20sent',JSON[_0x8e7a('0xf')](_0x46566f));if(_0x46566f['error']){if(_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x11')]===0x1f4){logger[_0x8e7a('0x10')](_0x8e7a('0xd'),_0x2d4143,_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x12')]);return _0x1d9bf8(_0x46566f[_0x8e7a('0x10')][_0x8e7a('0x12')]);}logger[_0x8e7a('0x10')](_0x8e7a('0xd'),_0x2d4143,_0x46566f[_0x8e7a('0x10')]['message']);return _0x42239a(_0x46566f['error']['message']);}else{logger[_0x8e7a('0x13')](_0x8e7a('0xd'),_0x2d4143,_0x8e7a('0xe'));_0x42239a(_0x46566f[_0x8e7a('0x14')][_0x8e7a('0x12')]);}})[_0x8e7a('0x15')](function(_0x237ebc){logger[_0x8e7a('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d4143,_0x237ebc);_0x1d9bf8(_0x237ebc);});});}
\ No newline at end of file
index 8274c1d..d56c4a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x206f=['/:id/clone','clone','addResources','put','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/sections','getSections','/:id/resources','getResources','post','create'];(function(_0x3af742,_0x4e366a){var _0x5b7f3f=function(_0x1ba35e){while(--_0x1ba35e){_0x3af742['push'](_0x3af742['shift']());}};_0x5b7f3f(++_0x4e366a);}(_0x206f,0xf8));var _0xf206=function(_0x27b931,_0x109342){_0x27b931=_0x27b931-0x0;var _0x995ba0=_0x206f[_0x27b931];return _0x995ba0;};'use strict';var multer=require(_0xf206('0x0'));var util=require(_0xf206('0x1'));var path=require(_0xf206('0x2'));var timeout=require(_0xf206('0x3'));var express=require(_0xf206('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf206('0x5'));var interaction=require(_0xf206('0x6'));var config=require(_0xf206('0x7'));var controller=require(_0xf206('0x8'));router[_0xf206('0x9')]('/',auth[_0xf206('0xa')](),controller[_0xf206('0xb')]);router['get'](_0xf206('0xc'),auth[_0xf206('0xa')](),controller[_0xf206('0xd')]);router[_0xf206('0x9')](_0xf206('0xe'),auth[_0xf206('0xa')](),controller[_0xf206('0xf')]);router['get'](_0xf206('0x10'),auth[_0xf206('0xa')](),controller[_0xf206('0x11')]);router[_0xf206('0x9')](_0xf206('0x12'),auth[_0xf206('0xa')](),controller[_0xf206('0x13')]);router[_0xf206('0x14')]('/',auth[_0xf206('0xa')](),controller[_0xf206('0x15')]);router[_0xf206('0x14')](_0xf206('0x16'),auth[_0xf206('0xa')](),controller[_0xf206('0x17')]);router['post'](_0xf206('0x10'),auth[_0xf206('0xa')](),controller['addSections']);router[_0xf206('0x14')](_0xf206('0x12'),auth[_0xf206('0xa')](),controller[_0xf206('0x18')]);router[_0xf206('0x19')]('/:id',auth[_0xf206('0xa')](),controller['update']);router[_0xf206('0x1a')](_0xf206('0xe'),auth[_0xf206('0xa')](),controller['destroy']);router[_0xf206('0x1a')](_0xf206('0x10'),auth[_0xf206('0xa')](),controller[_0xf206('0x1b')]);router['delete'](_0xf206('0x12'),auth[_0xf206('0xa')](),controller[_0xf206('0x1c')]);module[_0xf206('0x1d')]=router;
\ No newline at end of file
+var _0x855f=['show','/:id/sections','/:id/resources','getResources','post','create','clone','addSections','addResources','delete','removeResources','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./userProfile.controller','isAuthenticated','get','/describe','/:id'];(function(_0x3c82df,_0x59b7c5){var _0x1494e3=function(_0x4a910c){while(--_0x4a910c){_0x3c82df['push'](_0x3c82df['shift']());}};_0x1494e3(++_0x59b7c5);}(_0x855f,0x7f));var _0xf855=function(_0x34b363,_0xdad765){_0x34b363=_0x34b363-0x0;var _0x518b75=_0x855f[_0x34b363];return _0x518b75;};'use strict';var multer=require('multer');var util=require(_0xf855('0x0'));var path=require('path');var timeout=require(_0xf855('0x1'));var express=require(_0xf855('0x2'));var router=express[_0xf855('0x3')]();var fs_extra=require(_0xf855('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf855('0x5'));var controller=require(_0xf855('0x6'));router['get']('/',auth[_0xf855('0x7')](),controller['index']);router[_0xf855('0x8')](_0xf855('0x9'),auth[_0xf855('0x7')](),controller['describe']);router['get'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller[_0xf855('0xb')]);router[_0xf855('0x8')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller['getSections']);router['get'](_0xf855('0xd'),auth[_0xf855('0x7')](),controller[_0xf855('0xe')]);router[_0xf855('0xf')]('/',auth[_0xf855('0x7')](),controller[_0xf855('0x10')]);router[_0xf855('0xf')]('/:id/clone',auth[_0xf855('0x7')](),controller[_0xf855('0x11')]);router[_0xf855('0xf')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller[_0xf855('0x12')]);router[_0xf855('0xf')](_0xf855('0xd'),auth[_0xf855('0x7')](),controller[_0xf855('0x13')]);router['put'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller['update']);router['delete'](_0xf855('0xa'),auth[_0xf855('0x7')](),controller['destroy']);router[_0xf855('0x14')](_0xf855('0xc'),auth[_0xf855('0x7')](),controller['removeSections']);router[_0xf855('0x14')]('/:id/resources',auth[_0xf855('0x7')](),controller[_0xf855('0x15')]);module[_0xf855('0x16')]=router;
\ No newline at end of file
index cf01380..6ba7b3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe186=['getDataValue','crudPermissions','split','BOOLEAN','sequelize','exports','name','STRING','setDataValue','join'];(function(_0x15d203,_0x5b93ba){var _0x350cf6=function(_0x32335b){while(--_0x32335b){_0x15d203['push'](_0x15d203['shift']());}};_0x350cf6(++_0x5b93ba);}(_0xe186,0x1ee));var _0x6e18=function(_0x537a96,_0x5ba26e){_0x537a96=_0x537a96-0x0;var _0x1d140f=_0xe186[_0x537a96];return _0x1d140f;};'use strict';var Sequelize=require(_0x6e18('0x0'));module[_0x6e18('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x6e18('0x2')},'crudPermissions':{'type':Sequelize[_0x6e18('0x3')],'set':function(_0x1d84e6){this[_0x6e18('0x4')]('crudPermissions',_0x1d84e6?_0x1d84e6[_0x6e18('0x5')](''):[]);},'get':function(){return this[_0x6e18('0x6')]('crudPermissions')?this['getDataValue'](_0x6e18('0x7'))[_0x6e18('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x6e18('0x9')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9655=['exports','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x3c2941,_0x102112){var _0x3931a4=function(_0x182580){while(--_0x182580){_0x3c2941['push'](_0x3c2941['shift']());}};_0x3931a4(++_0x102112);}(_0x9655,0x13f));var _0x5965=function(_0x750cf3,_0xe992d6){_0x750cf3=_0x750cf3-0x0;var _0x5514d4=_0x9655[_0x750cf3];return _0x5514d4;};'use strict';var Sequelize=require(_0x5965('0x0'));module[_0x5965('0x1')]={'name':{'type':Sequelize[_0x5965('0x2')],'allowNull':![],'unique':_0x5965('0x3')},'crudPermissions':{'type':Sequelize[_0x5965('0x2')],'set':function(_0x3c3d8d){this[_0x5965('0x4')](_0x5965('0x5'),_0x3c3d8d?_0x3c3d8d[_0x5965('0x6')](''):[]);},'get':function(){return this[_0x5965('0x7')](_0x5965('0x5'))?this[_0x5965('0x7')](_0x5965('0x5'))[_0x5965('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x5965('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x5965('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5965('0x9')],'defaultValue':!![]}};
\ No newline at end of file
index 36f93dd..c733de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa94=['removeSections','ids','getSections','enabled','includes','subsections','findOne','Dashboard','forEach','resourceId','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','UserProfile','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','length','includeAll','create','clone','get','omit','body','createdAt','updatedAt','UserProfileSection','each','autoAssociation','UserProfileResource','userProfileId','Resources','find','addSections','sequelize','transaction','sectionId','push'];(function(_0x43aee5,_0x11268b){var _0x76d1d0=function(_0x3faee6){while(--_0x3faee6){_0x43aee5['push'](_0x43aee5['shift']());}};_0x76d1d0(++_0x11268b);}(_0xfa94,0xef));var _0x4fa9=function(_0x36bff5,_0x3156cb){_0x36bff5=_0x36bff5-0x0;var _0x80ade5=_0xfa94[_0x36bff5];return _0x80ade5;};'use strict';var emlformat=require(_0x4fa9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4fa9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4fa9('0x2'));var moment=require(_0x4fa9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4fa9('0x4'));var util=require(_0x4fa9('0x5'));var path=require(_0x4fa9('0x6'));var sox=require(_0x4fa9('0x7'));var csv=require(_0x4fa9('0x8'));var ejs=require(_0x4fa9('0x9'));var fs=require('fs');var fs_extra=require(_0x4fa9('0xa'));var _=require('lodash');var squel=require(_0x4fa9('0xb'));var crypto=require(_0x4fa9('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4fa9('0x8'));var querystring=require('querystring');var Papa=require(_0x4fa9('0xd'));var Redis=require(_0x4fa9('0xe'));var authService=require(_0x4fa9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4fa9('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4fa9('0x11'))(_0x4fa9('0x12'));var utils=require('../../config/utils');var config=require(_0x4fa9('0x13'));var licenseUtil=require(_0x4fa9('0x14'));var db=require(_0x4fa9('0x15'))['db'];config['redis']=_[_0x4fa9('0x16')](config['redis'],{'host':_0x4fa9('0x17'),'port':0x18eb});var socket=require(_0x4fa9('0x18'))(new Redis(config['redis']));require(_0x4fa9('0x19'))[_0x4fa9('0x1a')](socket);function respondWithStatusCode(_0x43b71d,_0x183aab){_0x183aab=_0x183aab||0xcc;return function(_0x18847){if(_0x18847){return _0x43b71d[_0x4fa9('0x1b')](_0x183aab);}return _0x43b71d[_0x4fa9('0x1c')](_0x183aab)[_0x4fa9('0x1d')]();};}function respondWithResult(_0x328770,_0x4ef6d8){_0x4ef6d8=_0x4ef6d8||0xc8;return function(_0x19ea1b){if(_0x19ea1b){return _0x328770[_0x4fa9('0x1c')](_0x4ef6d8)['json'](_0x19ea1b);}};}function respondWithFilteredResult(_0x56cf7d,_0x2b93a2){return function(_0x4f58bd){if(_0x4f58bd){var _0x2fe920=typeof _0x2b93a2[_0x4fa9('0x1e')]==='undefined'&&typeof _0x2b93a2[_0x4fa9('0x1f')]==='undefined';var _0x3f8036=_0x4f58bd[_0x4fa9('0x20')];var _0x1fb51e=_0x2fe920?0x0:_0x2b93a2[_0x4fa9('0x1e')];var _0x35f7d8=_0x2fe920?_0x4f58bd['count']:_0x2b93a2[_0x4fa9('0x1e')]+_0x2b93a2[_0x4fa9('0x1f')];var _0xa43250;if(_0x35f7d8>=_0x3f8036){_0x35f7d8=_0x3f8036;_0xa43250=0xc8;}else{_0xa43250=0xce;}_0x56cf7d['status'](_0xa43250);return _0x56cf7d[_0x4fa9('0x21')](_0x4fa9('0x22'),_0x1fb51e+'-'+_0x35f7d8+'/'+_0x3f8036)[_0x4fa9('0x23')](_0x4f58bd);}return null;};}function patchUpdates(_0x475624){return function(_0x3f3568){try{jsonpatch[_0x4fa9('0x24')](_0x3f3568,_0x475624,!![]);}catch(_0x360262){return BPromise[_0x4fa9('0x25')](_0x360262);}return _0x3f3568[_0x4fa9('0x26')]();};}function saveUpdates(_0x1189c6,_0x243083){return function(_0x1fbbcf){if(_0x1fbbcf){return _0x1fbbcf[_0x4fa9('0x27')](_0x1189c6)[_0x4fa9('0x28')](function(_0x1d00c9){return _0x1d00c9;});}return null;};}function removeEntity(_0x244c95,_0x1bac66){return function(_0x1e5836){if(_0x1e5836){return _0x1e5836[_0x4fa9('0x29')]()[_0x4fa9('0x28')](function(){_0x244c95['status'](0xcc)[_0x4fa9('0x1d')]();});}};}function handleEntityNotFound(_0x181dd7,_0x12f169){return function(_0xdeffbf){if(!_0xdeffbf){_0x181dd7[_0x4fa9('0x1b')](0x194);}return _0xdeffbf;};}function handleError(_0x410339,_0x31ada4){_0x31ada4=_0x31ada4||0x1f4;return function(_0x5545b9){logger[_0x4fa9('0x2a')](_0x5545b9[_0x4fa9('0x2b')]);if(_0x5545b9[_0x4fa9('0x2c')]){delete _0x5545b9[_0x4fa9('0x2c')];}_0x410339[_0x4fa9('0x1c')](_0x31ada4)[_0x4fa9('0x2d')](_0x5545b9);};}exports[_0x4fa9('0x2e')]=function(_0x2f7d40,_0xa9932f){var _0x472173={},_0x1efb9d={},_0x8aae26={'count':0x0,'rows':[]};var _0x3b4b88=_[_0x4fa9('0x2f')](db[_0x4fa9('0x30')][_0x4fa9('0x31')],function(_0x2e1b22){return{'name':_0x2e1b22['fieldName'],'type':_0x2e1b22[_0x4fa9('0x32')][_0x4fa9('0x33')]};});_0x1efb9d[_0x4fa9('0x34')]=_[_0x4fa9('0x2f')](_0x3b4b88,_0x4fa9('0x2c'));_0x1efb9d[_0x4fa9('0x35')]=_['keys'](_0x2f7d40[_0x4fa9('0x35')]);_0x1efb9d[_0x4fa9('0x36')]=_[_0x4fa9('0x37')](_0x1efb9d['model'],_0x1efb9d[_0x4fa9('0x35')]);_0x472173['attributes']=_['intersection'](_0x1efb9d[_0x4fa9('0x34')],qs['fields'](_0x2f7d40[_0x4fa9('0x35')][_0x4fa9('0x38')]));_0x472173[_0x4fa9('0x39')]=_0x472173[_0x4fa9('0x39')]['length']?_0x472173[_0x4fa9('0x39')]:_0x1efb9d[_0x4fa9('0x34')];if(!_0x2f7d40[_0x4fa9('0x35')]['hasOwnProperty'](_0x4fa9('0x3a'))){_0x472173[_0x4fa9('0x1f')]=qs[_0x4fa9('0x1f')](_0x2f7d40[_0x4fa9('0x35')][_0x4fa9('0x1f')]);_0x472173[_0x4fa9('0x1e')]=qs[_0x4fa9('0x1e')](_0x2f7d40[_0x4fa9('0x35')][_0x4fa9('0x1e')]);}_0x472173[_0x4fa9('0x3b')]=qs[_0x4fa9('0x3c')](_0x2f7d40[_0x4fa9('0x35')]['sort']);_0x472173[_0x4fa9('0x3d')]=qs['filters'](_['pick'](_0x2f7d40[_0x4fa9('0x35')],_0x1efb9d['filters']),_0x3b4b88);if(_0x2f7d40['query']['filter']){_0x472173[_0x4fa9('0x3d')]=_[_0x4fa9('0x3e')](_0x472173['where'],{'$or':_[_0x4fa9('0x2f')](_0x3b4b88,function(_0x4ca6cb){if(_0x4ca6cb['type']!==_0x4fa9('0x3f')){var _0x22b9cf={};_0x22b9cf[_0x4ca6cb[_0x4fa9('0x2c')]]={'$like':'%'+_0x2f7d40[_0x4fa9('0x35')][_0x4fa9('0x40')]+'%'};return _0x22b9cf;}})});}_0x472173=_[_0x4fa9('0x3e')]({},_0x472173,_0x2f7d40[_0x4fa9('0x41')]);var _0x4bad19={'where':_0x472173['where']};return db[_0x4fa9('0x30')]['count'](_0x4bad19)[_0x4fa9('0x28')](function(_0x19fe0f){_0x8aae26[_0x4fa9('0x20')]=_0x19fe0f;if(_0x2f7d40[_0x4fa9('0x35')]['includeAll']){_0x472173[_0x4fa9('0x42')]=[{'all':!![]}];}return db['UserProfile'][_0x4fa9('0x43')](_0x472173);})[_0x4fa9('0x28')](function(_0x14eb12){_0x8aae26[_0x4fa9('0x44')]=_0x14eb12;return _0x8aae26;})[_0x4fa9('0x28')](respondWithFilteredResult(_0xa9932f,_0x472173))[_0x4fa9('0x45')](handleError(_0xa9932f,null));};exports[_0x4fa9('0x46')]=function(_0x283ed3,_0x4844ef){var _0x2e1e3d={'raw':![],'where':{'id':_0x283ed3[_0x4fa9('0x47')]['id']}},_0x3cd10e={};_0x3cd10e['model']=_[_0x4fa9('0x48')](db[_0x4fa9('0x30')][_0x4fa9('0x31')]);_0x3cd10e[_0x4fa9('0x35')]=_[_0x4fa9('0x48')](_0x283ed3[_0x4fa9('0x35')]);_0x3cd10e[_0x4fa9('0x36')]=_[_0x4fa9('0x37')](_0x3cd10e[_0x4fa9('0x34')],_0x3cd10e[_0x4fa9('0x35')]);_0x2e1e3d[_0x4fa9('0x39')]=_[_0x4fa9('0x37')](_0x3cd10e['model'],qs[_0x4fa9('0x38')](_0x283ed3[_0x4fa9('0x35')][_0x4fa9('0x38')]));_0x2e1e3d[_0x4fa9('0x39')]=_0x2e1e3d[_0x4fa9('0x39')][_0x4fa9('0x49')]?_0x2e1e3d[_0x4fa9('0x39')]:_0x3cd10e[_0x4fa9('0x34')];if(_0x283ed3[_0x4fa9('0x35')][_0x4fa9('0x4a')]){_0x2e1e3d[_0x4fa9('0x42')]=[{'all':!![]}];}_0x2e1e3d=_['merge']({},_0x2e1e3d,_0x283ed3['options']);return db[_0x4fa9('0x30')]['find'](_0x2e1e3d)[_0x4fa9('0x28')](handleEntityNotFound(_0x4844ef,null))[_0x4fa9('0x28')](respondWithResult(_0x4844ef,null))[_0x4fa9('0x45')](handleError(_0x4844ef,null));};exports[_0x4fa9('0x4b')]=function(_0x306096,_0x12e735){return db['UserProfile']['create'](_0x306096['body'],{})[_0x4fa9('0x28')](respondWithResult(_0x12e735,0xc9))['catch'](handleError(_0x12e735,null));};exports[_0x4fa9('0x4c')]=function(_0x374c4b,_0x2cc580){var _0x12a746={'where':{'id':_0x374c4b[_0x4fa9('0x47')]['id']}},_0x5c1b21={};_0x5c1b21[_0x4fa9('0x34')]=_['keys'](db[_0x4fa9('0x30')][_0x4fa9('0x31')]);_0x12a746[_0x4fa9('0x39')]=_[_0x4fa9('0x37')](_0x5c1b21[_0x4fa9('0x34')],qs[_0x4fa9('0x38')](_0x374c4b['query']['fields']));_0x12a746[_0x4fa9('0x39')]=_0x12a746['attributes'][_0x4fa9('0x49')]?_0x12a746[_0x4fa9('0x39')]:_0x5c1b21[_0x4fa9('0x34')];if(_0x374c4b[_0x4fa9('0x35')][_0x4fa9('0x4a')]){_0x12a746[_0x4fa9('0x42')]=[{'all':!![]}];}_0x12a746=_[_0x4fa9('0x3e')]({},_0x12a746,_0x374c4b['options']);return db[_0x4fa9('0x30')]['find'](_0x12a746)[_0x4fa9('0x28')](handleEntityNotFound(_0x2cc580,null))[_0x4fa9('0x28')](function(_0x2c3515){if(_0x2c3515){var _0x119611=_0x2c3515[_0x4fa9('0x4d')]({'plain':!![]});_0x119611=qs[_0x4fa9('0x4e')](_0x119611,['id','createdAt','updatedAt','crudPermissions']);_0x374c4b[_0x4fa9('0x4f')]=_['omit'](_0x374c4b[_0x4fa9('0x4f')],['id',_0x4fa9('0x50'),_0x4fa9('0x51')]);return db['sequelize']['transaction'](function(_0x5e8252){return db['UserProfile'][_0x4fa9('0x4b')](_['merge'](_0x119611,_0x374c4b[_0x4fa9('0x4f')]),{'include':_0x374c4b['query'][_0x4fa9('0x4a')]?[{'all':!![]}]:undefined,'transaction':_0x5e8252})[_0x4fa9('0x28')](function(_0x3fa43a){var _0x3e32fc=_0x3fa43a[_0x4fa9('0x4d')]({'plain':!![]});return db[_0x4fa9('0x52')][_0x4fa9('0x43')]({'where':{'userProfileId':_0x374c4b[_0x4fa9('0x47')]['id']},'raw':!![]})[_0x4fa9('0x28')](function(_0x42f7b0){if(_0x42f7b0){return BPromise[_0x4fa9('0x53')](_0x42f7b0,function(_0x304a69){return new BPromise(function(_0x4f0003,_0x5bb415){if(_0x304a69[_0x4fa9('0x54')]===null||_0x304a69[_0x4fa9('0x54')]===0x1)_0x4f0003(null);return db[_0x4fa9('0x55')][_0x4fa9('0x43')]({'where':{'sectionId':_0x304a69['id']},'raw':!![]})['then'](function(_0x55bf91){var _0x108bdc=_[_0x4fa9('0x2f')](_0x55bf91,function(_0x1b0959){return qs[_0x4fa9('0x4e')](_0x1b0959,['id',_0x4fa9('0x50'),_0x4fa9('0x51'),'sectionId']);});_0x4f0003(_0x108bdc);})[_0x4fa9('0x45')](function(_0x22a1f3){_0x5bb415(_0x22a1f3);});})[_0x4fa9('0x28')](function(_0x9e8bc0){var _0x3512a4=qs['omit'](_0x304a69,['id',_0x4fa9('0x50'),_0x4fa9('0x51')]);_0x3512a4[_0x4fa9('0x56')]=_0x3e32fc['id'];if(_0x9e8bc0)_0x3512a4[_0x4fa9('0x57')]=_0x9e8bc0;return _0x3512a4;})['then'](function(_0x40f400){return db[_0x4fa9('0x52')][_0x4fa9('0x4b')](_0x40f400,{'include':[{'model':db[_0x4fa9('0x55')],'as':_0x4fa9('0x57')}],'raw':!![],'transaction':_0x5e8252});});})[_0x4fa9('0x28')](function(){return _0x3e32fc;});}});});});}})['then'](respondWithResult(_0x2cc580,0xc9))[_0x4fa9('0x45')](handleError(_0x2cc580,null));};exports['update']=function(_0xd63c71,_0x11ed3d){if(_0xd63c71[_0x4fa9('0x4f')]['id']){delete _0xd63c71[_0x4fa9('0x4f')]['id'];}return db['UserProfile'][_0x4fa9('0x58')]({'where':{'id':_0xd63c71[_0x4fa9('0x47')]['id']}})[_0x4fa9('0x28')](handleEntityNotFound(_0x11ed3d,null))[_0x4fa9('0x28')](saveUpdates(_0xd63c71['body'],null))[_0x4fa9('0x28')](respondWithResult(_0x11ed3d,null))['catch'](handleError(_0x11ed3d,null));};exports[_0x4fa9('0x29')]=function(_0x58ea8d,_0x20b2ea){return db[_0x4fa9('0x30')][_0x4fa9('0x58')]({'where':{'id':_0x58ea8d[_0x4fa9('0x47')]['id']}})[_0x4fa9('0x28')](handleEntityNotFound(_0x20b2ea,null))[_0x4fa9('0x28')](removeEntity(_0x20b2ea,null))[_0x4fa9('0x45')](handleError(_0x20b2ea,null));};exports['describe']=function(_0x19ae7b,_0x4ec4fa){return db[_0x4fa9('0x30')]['describe']()[_0x4fa9('0x28')](respondWithResult(_0x4ec4fa,null))[_0x4fa9('0x45')](handleError(_0x4ec4fa,null));};exports[_0x4fa9('0x59')]=function(_0x46fafa,_0x116972){var _0x109b9e=_0x46fafa[_0x4fa9('0x4f')];return db[_0x4fa9('0x30')][_0x4fa9('0x58')]({'where':{'id':_0x46fafa[_0x4fa9('0x47')]['id']}})[_0x4fa9('0x28')](handleEntityNotFound(_0x116972,null))[_0x4fa9('0x28')](function(_0x11dcbe){if(_0x11dcbe){return db[_0x4fa9('0x5a')][_0x4fa9('0x5b')](function(_0x3f9376){return db[_0x4fa9('0x52')][_0x4fa9('0x29')]({'where':{'userProfileId':_0x46fafa[_0x4fa9('0x47')]['id'],'sectionId':_[_0x4fa9('0x2f')](_0x109b9e,function(_0x327fdf){return _0x327fdf[_0x4fa9('0x5c')];})},'transaction':_0x3f9376})[_0x4fa9('0x28')](function(){var _0x287e5c=_[_0x4fa9('0x2f')](_0x109b9e,function(_0x59cb39){_0x59cb39['userProfileId']=_0x46fafa['params']['id'];return _0x59cb39;});var _0x4e2e60=[];return BPromise['each'](_0x287e5c,function(_0x4a8db1){return db[_0x4fa9('0x52')][_0x4fa9('0x4b')](_0x4a8db1,{'include':[{'model':db[_0x4fa9('0x55')],'as':_0x4fa9('0x57')}],'raw':!![],'transaction':_0x3f9376})['then'](function(_0x19874e){_0x4e2e60[_0x4fa9('0x5d')](_0x19874e[_0x4fa9('0x4d')]({'plain':!![]}));});})['then'](function(){return _0x4e2e60;});});});}})[_0x4fa9('0x28')](function(_0x225199){return _0x225199;})[_0x4fa9('0x28')](respondWithResult(_0x116972,null))[_0x4fa9('0x45')](handleError(_0x116972,null));};exports[_0x4fa9('0x5e')]=function(_0x24e092,_0x47bd03){var _0x42860a;return db['UserProfile'][_0x4fa9('0x58')]({'where':{'id':_0x24e092[_0x4fa9('0x47')]['id']},'attributes':['id','name']})[_0x4fa9('0x28')](handleEntityNotFound(_0x47bd03,null))[_0x4fa9('0x28')](function(_0x128ccf){if(_0x128ccf){_0x42860a=_0x128ccf;return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x24e092[_0x4fa9('0x47')]['id'],'sectionId':_0x24e092[_0x4fa9('0x35')][_0x4fa9('0x5f')]}});}})[_0x4fa9('0x28')](function(){return _0x42860a;})['then'](respondWithStatusCode(_0x47bd03,null))[_0x4fa9('0x45')](handleError(_0x47bd03,null));};exports[_0x4fa9('0x60')]=function(_0x2ac154,_0x5ee173){var _0x33a3ee=[];var _0x257b07=[];return db[_0x4fa9('0x52')]['findAll']({'where':{'userProfileId':_0x2ac154[_0x4fa9('0x47')]['id']},'raw':!![]})['then'](function(_0x344ffc){_0x33a3ee=_[_0x4fa9('0x40')](_0x344ffc,function(_0xad055c){return _0xad055c[_0x4fa9('0x61')]===0x1||_[_0x4fa9('0x62')]([0x3eb,0x709],_0xad055c['sectionId']);});if(!_['isEmpty'](_0x33a3ee)){return _[_0x4fa9('0x2f')](_0x33a3ee,function(_0x3cae67){return _0x3cae67[_0x4fa9('0x5c')];});}else{return;}})[_0x4fa9('0x28')](function(_0x2654be){if(_0x2654be)_0x257b07=_0x2654be;if(_['includes'](_0x257b07,0x64)){var _0x5d2bbe=_[_0x4fa9('0x58')](_0x33a3ee,{'sectionId':0x64});return hasDefaultDashboard(_0x5d2bbe)[_0x4fa9('0x28')](function(_0x257068){return _[_0x4fa9('0x2f')](_0x33a3ee,function(_0x44bde2){if(_0x44bde2[_0x4fa9('0x5c')]===0x64){_0x44bde2['subsections']=_0x257068;}return _0x44bde2;});});}else{return;}})[_0x4fa9('0x28')](function(_0xb3fc8b){if(_0xb3fc8b)_0x33a3ee=_0xb3fc8b;if(_[_0x4fa9('0x62')](_0x257b07,0x3eb)){var _0x277324=_[_0x4fa9('0x58')](_0x33a3ee,{'sectionId':0x3eb});return getCustomDashboards(_0x277324)[_0x4fa9('0x28')](function(_0xc9665b){return _[_0x4fa9('0x2f')](_0x33a3ee,function(_0x62ad1b){if(_0x277324[_0x4fa9('0x61')]){if(_0x62ad1b[_0x4fa9('0x5c')]===0x3eb){_0x62ad1b[_0x4fa9('0x63')]=_0xc9665b;}}else{if(_0x62ad1b[_0x4fa9('0x5c')]===0x64){_0x62ad1b[_0x4fa9('0x63')]=_0xc9665b;}}return _0x62ad1b;});});}else{return;}})[_0x4fa9('0x28')](function(_0x46684a){if(_0x46684a)_0x33a3ee=_0x46684a;if(_[_0x4fa9('0x62')](_0x257b07,0x709)){var _0x288204=_['find'](_0x33a3ee,{'sectionId':0x709});return getPlugins(_0x288204)['then'](function(_0x328b90){if(_0x288204[_0x4fa9('0x61')]){return _[_0x4fa9('0x2f')](_0x33a3ee,function(_0x3b4565){if(_0x3b4565[_0x4fa9('0x5c')]===0x709){_0x3b4565[_0x4fa9('0x63')]=_0x328b90;}return _0x3b4565;});}else{var _0x21fba5={'sectionId':0x76c,'enabled':0x1,'subsections':_0x328b90};var _0x2bd0d6=_[_0x4fa9('0x2f')](_0x33a3ee);_0x2bd0d6[_0x4fa9('0x5d')](_0x21fba5);return _0x2bd0d6;}});}else{return;}})[_0x4fa9('0x28')](function(_0x424f7a){if(_0x424f7a)_0x33a3ee=_0x424f7a;return _[_0x4fa9('0x40')](_0x33a3ee,[_0x4fa9('0x61'),0x1]);})['then'](respondWithResult(_0x5ee173,null))[_0x4fa9('0x45')](handleError(_0x5ee173,null));};function hasDefaultDashboard(_0x321207){var _0x3e2c9f=[0x65];return new BPromise(function(_0x3527a1,_0x503c58){try{if(_0x321207[_0x4fa9('0x54')]){_0x3527a1(_0x3e2c9f);}else{return db[_0x4fa9('0x55')][_0x4fa9('0x64')]({'where':{'sectionId':_0x321207['id']},'raw':!![]})[_0x4fa9('0x28')](function(_0x4135c6){_0x4135c6?_0x3527a1(_0x3e2c9f):_0x3527a1();});}}catch(_0x1dc430){_0x503c58(_0x1dc430);}});}function getCustomDashboards(_0x31c237){var _0xb3b10d=[];return new BPromise(function(_0x4996ac,_0x31e288){try{if(_0x31c237['autoAssociation']){return db[_0x4fa9('0x65')][_0x4fa9('0x43')]({'raw':!![]})[_0x4fa9('0x28')](function(_0x2a4def){_0x2a4def[_0x4fa9('0x66')](function(_0x1bc1c1){_0xb3b10d['push'](_0x1bc1c1['id']+0x1869f);});_0x4996ac(_0xb3b10d);});}else{return db['UserProfileResource'][_0x4fa9('0x43')]({'where':{'sectionId':_0x31c237['id']},'raw':!![]})[_0x4fa9('0x28')](function(_0x306e73){_0x306e73[_0x4fa9('0x66')](function(_0x554154){_0xb3b10d[_0x4fa9('0x5d')](_0x554154[_0x4fa9('0x67')]+0x1869f);});_0x4996ac(_0xb3b10d);});}}catch(_0x15033f){_0x31e288(_0x15033f);}});}function getPlugins(_0x5787f6){var _0x27037b=[];return new BPromise(function(_0xf5c730,_0x1b8659){try{if(_0x5787f6[_0x4fa9('0x54')]){return db['Plugin'][_0x4fa9('0x43')]({'raw':!![]})['then'](function(_0x4f76fb){_0x4f76fb[_0x4fa9('0x66')](function(_0x804d0a){_0x27037b[_0x4fa9('0x5d')](_0x804d0a['id']+0x15b38);});_0xf5c730(_0x27037b);});}else{return db['UserProfileResource'][_0x4fa9('0x43')]({'where':{'sectionId':_0x5787f6['id']},'raw':!![]})[_0x4fa9('0x28')](function(_0x2138e5){_0x2138e5[_0x4fa9('0x66')](function(_0x3e5c9e){_0x27037b[_0x4fa9('0x5d')](_0x3e5c9e[_0x4fa9('0x67')]+0x15b38);});_0xf5c730(_0x27037b);});}}catch(_0x9a59be){_0x1b8659(_0x9a59be);}});}exports['addResources']=function(_0x1ab3f0,_0x2b00e7){return db[_0x4fa9('0x30')][_0x4fa9('0x58')]({'where':{'id':_0x1ab3f0['params']['id']}})[_0x4fa9('0x28')](handleEntityNotFound(_0x2b00e7,null))['then'](function(_0x103d68){if(_0x103d68){return db[_0x4fa9('0x5a')]['transaction'](function(_0x90bafc){return db[_0x4fa9('0x52')][_0x4fa9('0x43')]({'where':{'userProfileId':_0x1ab3f0['params']['id']},'attributes':['id'],'raw':!![]})[_0x4fa9('0x28')](function(_0x5ae54d){if(_0x5ae54d){return db['UserProfileSection'][_0x4fa9('0x29')]({'where':{'userProfileId':_0x1ab3f0['params']['id'],'id':_[_0x4fa9('0x2f')](_0x5ae54d,function(_0x2f5cdc){return _0x2f5cdc['id'];})},'transaction':_0x90bafc});}})[_0x4fa9('0x28')](function(_0xc5bcab){var _0x11018b=_[_0x4fa9('0x2f')](_0x1ab3f0[_0x4fa9('0x4f')],function(_0x155252){_0x155252[_0x4fa9('0x56')]=_0x1ab3f0[_0x4fa9('0x47')]['id'];return _0x155252;});return db[_0x4fa9('0x52')][_0x4fa9('0x68')](_0x11018b,{'raw':!![],'transaction':_0x90bafc});})[_0x4fa9('0x28')](function(_0x302206){var _0x2ecf1d=_[_0x4fa9('0x40')](_['map'](_0x302206,function(_0x4a6165){return _0x4a6165[_0x4fa9('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x2ecf1d){return db[_0x4fa9('0x52')][_0x4fa9('0x43')]({'where':{'userProfileId':_0x1ab3f0[_0x4fa9('0x47')]['id'],'sectionId':_[_0x4fa9('0x2f')](_0x2ecf1d,function(_0x381710){return _0x381710[_0x4fa9('0x5c')];})},'attributes':['id',_0x4fa9('0x5c')],'raw':!![]})[_0x4fa9('0x28')](function(_0x4b4ef3){var _0x1d6d06=_[_0x4fa9('0x2f')](_0x1ab3f0['body'],function(_0x53d10f){_0x53d10f[_0x4fa9('0x56')]=_0x1ab3f0[_0x4fa9('0x47')]['id'];return _0x53d10f;});return db[_0x4fa9('0x55')][_0x4fa9('0x68')](_0x1d6d06,{'raw':!![],'transaction':_0x90bafc});});}})[_0x4fa9('0x45')](handleError(_0x2b00e7,null));});}})[_0x4fa9('0x28')](function(_0x5bc7f3){var _0x2b68a9=_['map'](_0x5bc7f3,function(_0x2745bd){return _0x2745bd[_0x4fa9('0x4d')]({'plain':!![]});});})[_0x4fa9('0x28')](respondWithResult(_0x2b00e7,null))['catch'](handleError(_0x2b00e7,null));};exports[_0x4fa9('0x69')]=function(_0x505eae,_0xc6e309,_0x3fc0a0){return db[_0x4fa9('0x30')][_0x4fa9('0x58')]({'where':{'id':_0x505eae[_0x4fa9('0x47')]['id']}})[_0x4fa9('0x28')](handleEntityNotFound(_0xc6e309,null))[_0x4fa9('0x28')](function(_0x117f31){if(_0x117f31){return _0x117f31[_0x4fa9('0x69')](_0x505eae['query'][_0x4fa9('0x5f')]);}})[_0x4fa9('0x28')](respondWithStatusCode(_0xc6e309,null))['catch'](handleError(_0xc6e309,null));};exports[_0x4fa9('0x6a')]=function(_0x78b666,_0x1b2af9){var _0x500cae={};if(!_0x78b666[_0x4fa9('0x35')][_0x4fa9('0x6b')])throw new Error(_0x4fa9('0x6c'));if(!_0x78b666['query'][_0x4fa9('0x6d')](_0x4fa9('0x3a'))){_0x500cae[_0x4fa9('0x1f')]=qs[_0x4fa9('0x1f')](_0x78b666['query'][_0x4fa9('0x1f')]);_0x500cae[_0x4fa9('0x1e')]=qs[_0x4fa9('0x1e')](_0x78b666[_0x4fa9('0x35')][_0x4fa9('0x1e')]);}return db[_0x4fa9('0x30')][_0x4fa9('0x58')]({'where':{'id':_0x78b666[_0x4fa9('0x47')]['id']}})[_0x4fa9('0x28')](function(_0x21794f){if(!_0x21794f)throw new Error(_0x4fa9('0x6e')+_0x78b666['params']['id']);return db[_0x4fa9('0x30')]['getResources'](_0x78b666);})[_0x4fa9('0x28')](respondWithFilteredResult(_0x1b2af9,_0x500cae))[_0x4fa9('0x45')](handleError(_0x1b2af9,null));};
\ No newline at end of file
+var _0xdc15=['find','create','body','catch','clone','get','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','autoAssociation','omit','sectionId','Resources','UserProfileResource','describe','userProfileId','each','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','push','forEach','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','hasOwnProperty','getResources','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','UserProfile','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','params','rawAttributes','include'];(function(_0x5c084b,_0xe3ec58){var _0x4ab02a=function(_0x212cf9){while(--_0x212cf9){_0x5c084b['push'](_0x5c084b['shift']());}};_0x4ab02a(++_0xe3ec58);}(_0xdc15,0x1f3));var _0x5dc1=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xdc15[_0x1d24eb];return _0x1dc576;};'use strict';var emlformat=require(_0x5dc1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5dc1('0x1'));var jsonpatch=require(_0x5dc1('0x2'));var rp=require(_0x5dc1('0x3'));var moment=require(_0x5dc1('0x4'));var BPromise=require(_0x5dc1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x5dc1('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5dc1('0x7'));var _=require(_0x5dc1('0x8'));var squel=require(_0x5dc1('0x9'));var crypto=require(_0x5dc1('0xa'));var jsforce=require(_0x5dc1('0xb'));var deskjs=require(_0x5dc1('0xc'));var toCsv=require(_0x5dc1('0xd'));var querystring=require(_0x5dc1('0xe'));var Papa=require(_0x5dc1('0xf'));var Redis=require(_0x5dc1('0x10'));var authService=require(_0x5dc1('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5dc1('0x12'));var logger=require(_0x5dc1('0x13'))('api');var utils=require(_0x5dc1('0x14'));var config=require(_0x5dc1('0x15'));var licenseUtil=require(_0x5dc1('0x16'));var db=require(_0x5dc1('0x17'))['db'];config[_0x5dc1('0x18')]=_[_0x5dc1('0x19')](config[_0x5dc1('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x5dc1('0x1a'))(new Redis(config[_0x5dc1('0x18')]));require('./userProfile.socket')[_0x5dc1('0x1b')](socket);function respondWithStatusCode(_0x359e88,_0x5ce46b){_0x5ce46b=_0x5ce46b||0xcc;return function(_0x2ae64f){if(_0x2ae64f){return _0x359e88[_0x5dc1('0x1c')](_0x5ce46b);}return _0x359e88[_0x5dc1('0x1d')](_0x5ce46b)['end']();};}function respondWithResult(_0x1424ee,_0x4a8652){_0x4a8652=_0x4a8652||0xc8;return function(_0x5b6518){if(_0x5b6518){return _0x1424ee[_0x5dc1('0x1d')](_0x4a8652)[_0x5dc1('0x1e')](_0x5b6518);}};}function respondWithFilteredResult(_0x1f2e4a,_0x533446){return function(_0x427496){if(_0x427496){var _0xf980e7=typeof _0x533446[_0x5dc1('0x1f')]===_0x5dc1('0x20')&&typeof _0x533446[_0x5dc1('0x21')]===_0x5dc1('0x20');var _0x1ba1fe=_0x427496[_0x5dc1('0x22')];var _0x52a1e2=_0xf980e7?0x0:_0x533446[_0x5dc1('0x1f')];var _0xdcd30f=_0xf980e7?_0x427496[_0x5dc1('0x22')]:_0x533446[_0x5dc1('0x1f')]+_0x533446[_0x5dc1('0x21')];var _0x6ecab3;if(_0xdcd30f>=_0x1ba1fe){_0xdcd30f=_0x1ba1fe;_0x6ecab3=0xc8;}else{_0x6ecab3=0xce;}_0x1f2e4a['status'](_0x6ecab3);return _0x1f2e4a[_0x5dc1('0x23')](_0x5dc1('0x24'),_0x52a1e2+'-'+_0xdcd30f+'/'+_0x1ba1fe)[_0x5dc1('0x1e')](_0x427496);}return null;};}function patchUpdates(_0x3ae1f3){return function(_0x4c2a54){try{jsonpatch[_0x5dc1('0x25')](_0x4c2a54,_0x3ae1f3,!![]);}catch(_0x4610a1){return BPromise[_0x5dc1('0x26')](_0x4610a1);}return _0x4c2a54[_0x5dc1('0x27')]();};}function saveUpdates(_0x26ee71,_0x4158fc){return function(_0x36a047){if(_0x36a047){return _0x36a047[_0x5dc1('0x28')](_0x26ee71)['then'](function(_0x1a21f2){return _0x1a21f2;});}return null;};}function removeEntity(_0x124abd,_0x531c00){return function(_0x4562a5){if(_0x4562a5){return _0x4562a5[_0x5dc1('0x29')]()[_0x5dc1('0x2a')](function(){_0x124abd[_0x5dc1('0x1d')](0xcc)[_0x5dc1('0x2b')]();});}};}function handleEntityNotFound(_0x191668,_0x1b2063){return function(_0x2a13f9){if(!_0x2a13f9){_0x191668[_0x5dc1('0x1c')](0x194);}return _0x2a13f9;};}function handleError(_0x466667,_0x204b53){_0x204b53=_0x204b53||0x1f4;return function(_0xddba38){logger[_0x5dc1('0x2c')](_0xddba38[_0x5dc1('0x2d')]);if(_0xddba38[_0x5dc1('0x2e')]){delete _0xddba38[_0x5dc1('0x2e')];}_0x466667[_0x5dc1('0x1d')](_0x204b53)[_0x5dc1('0x2f')](_0xddba38);};}exports[_0x5dc1('0x30')]=function(_0x4eadf1,_0x225bb6){var _0x3ab569={},_0x1331de={},_0x1dfe74={'count':0x0,'rows':[]};var _0x19cb45=_['map'](db[_0x5dc1('0x31')]['rawAttributes'],function(_0x553c9f){return{'name':_0x553c9f[_0x5dc1('0x32')],'type':_0x553c9f[_0x5dc1('0x33')][_0x5dc1('0x34')]};});_0x1331de[_0x5dc1('0x35')]=_[_0x5dc1('0x36')](_0x19cb45,'name');_0x1331de[_0x5dc1('0x37')]=_[_0x5dc1('0x38')](_0x4eadf1[_0x5dc1('0x37')]);_0x1331de[_0x5dc1('0x39')]=_[_0x5dc1('0x3a')](_0x1331de[_0x5dc1('0x35')],_0x1331de['query']);_0x3ab569[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x1331de[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x3ab569[_0x5dc1('0x3b')]=_0x3ab569[_0x5dc1('0x3b')][_0x5dc1('0x3d')]?_0x3ab569[_0x5dc1('0x3b')]:_0x1331de[_0x5dc1('0x35')];if(!_0x4eadf1[_0x5dc1('0x37')]['hasOwnProperty'](_0x5dc1('0x3e'))){_0x3ab569[_0x5dc1('0x21')]=qs[_0x5dc1('0x21')](_0x4eadf1[_0x5dc1('0x37')]['limit']);_0x3ab569[_0x5dc1('0x1f')]=qs[_0x5dc1('0x1f')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x1f')]);}_0x3ab569[_0x5dc1('0x3f')]=qs[_0x5dc1('0x40')](_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x40')]);_0x3ab569[_0x5dc1('0x41')]=qs[_0x5dc1('0x39')](_[_0x5dc1('0x42')](_0x4eadf1[_0x5dc1('0x37')],_0x1331de[_0x5dc1('0x39')]),_0x19cb45);if(_0x4eadf1[_0x5dc1('0x37')]['filter']){_0x3ab569[_0x5dc1('0x41')]=_[_0x5dc1('0x43')](_0x3ab569[_0x5dc1('0x41')],{'$or':_[_0x5dc1('0x36')](_0x19cb45,function(_0xdf98aa){if(_0xdf98aa[_0x5dc1('0x33')]!==_0x5dc1('0x44')){var _0x2b26ff={};_0x2b26ff[_0xdf98aa['name']]={'$like':'%'+_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x45')]+'%'};return _0x2b26ff;}})});}_0x3ab569=_[_0x5dc1('0x43')]({},_0x3ab569,_0x4eadf1[_0x5dc1('0x46')]);var _0x2ac806={'where':_0x3ab569['where']};return db[_0x5dc1('0x31')][_0x5dc1('0x22')](_0x2ac806)[_0x5dc1('0x2a')](function(_0x26eb34){_0x1dfe74[_0x5dc1('0x22')]=_0x26eb34;if(_0x4eadf1[_0x5dc1('0x37')][_0x5dc1('0x47')]){_0x3ab569['include']=[{'all':!![]}];}return db[_0x5dc1('0x31')]['findAll'](_0x3ab569);})[_0x5dc1('0x2a')](function(_0x2d446d){_0x1dfe74[_0x5dc1('0x48')]=_0x2d446d;return _0x1dfe74;})[_0x5dc1('0x2a')](respondWithFilteredResult(_0x225bb6,_0x3ab569))['catch'](handleError(_0x225bb6,null));};exports['show']=function(_0x22be79,_0x105a3a){var _0x2b80be={'raw':![],'where':{'id':_0x22be79[_0x5dc1('0x49')]['id']}},_0x25e8c3={};_0x25e8c3[_0x5dc1('0x35')]=_['keys'](db[_0x5dc1('0x31')][_0x5dc1('0x4a')]);_0x25e8c3['query']=_[_0x5dc1('0x38')](_0x22be79[_0x5dc1('0x37')]);_0x25e8c3[_0x5dc1('0x39')]=_[_0x5dc1('0x3a')](_0x25e8c3['model'],_0x25e8c3[_0x5dc1('0x37')]);_0x2b80be[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x25e8c3[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x22be79[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x2b80be[_0x5dc1('0x3b')]=_0x2b80be['attributes'][_0x5dc1('0x3d')]?_0x2b80be[_0x5dc1('0x3b')]:_0x25e8c3['model'];if(_0x22be79['query'][_0x5dc1('0x47')]){_0x2b80be[_0x5dc1('0x4b')]=[{'all':!![]}];}_0x2b80be=_['merge']({},_0x2b80be,_0x22be79[_0x5dc1('0x46')]);return db['UserProfile'][_0x5dc1('0x4c')](_0x2b80be)['then'](handleEntityNotFound(_0x105a3a,null))[_0x5dc1('0x2a')](respondWithResult(_0x105a3a,null))['catch'](handleError(_0x105a3a,null));};exports[_0x5dc1('0x4d')]=function(_0x2f374d,_0x2c1563){return db[_0x5dc1('0x31')][_0x5dc1('0x4d')](_0x2f374d[_0x5dc1('0x4e')],{})['then'](respondWithResult(_0x2c1563,0xc9))[_0x5dc1('0x4f')](handleError(_0x2c1563,null));};exports[_0x5dc1('0x50')]=function(_0x4e03bc,_0x3e9d9f){var _0x3b51c8={'where':{'id':_0x4e03bc['params']['id']}},_0x5e5f06={};_0x5e5f06[_0x5dc1('0x35')]=_['keys'](db[_0x5dc1('0x31')][_0x5dc1('0x4a')]);_0x3b51c8[_0x5dc1('0x3b')]=_[_0x5dc1('0x3a')](_0x5e5f06[_0x5dc1('0x35')],qs[_0x5dc1('0x3c')](_0x4e03bc[_0x5dc1('0x37')][_0x5dc1('0x3c')]));_0x3b51c8['attributes']=_0x3b51c8['attributes'][_0x5dc1('0x3d')]?_0x3b51c8[_0x5dc1('0x3b')]:_0x5e5f06[_0x5dc1('0x35')];if(_0x4e03bc['query'][_0x5dc1('0x47')]){_0x3b51c8['include']=[{'all':!![]}];}_0x3b51c8=_[_0x5dc1('0x43')]({},_0x3b51c8,_0x4e03bc[_0x5dc1('0x46')]);return db[_0x5dc1('0x31')][_0x5dc1('0x4c')](_0x3b51c8)['then'](handleEntityNotFound(_0x3e9d9f,null))[_0x5dc1('0x2a')](function(_0x4f4022){if(_0x4f4022){var _0x430ea9=_0x4f4022[_0x5dc1('0x51')]({'plain':!![]});_0x430ea9=qs['omit'](_0x430ea9,['id',_0x5dc1('0x52'),_0x5dc1('0x53'),_0x5dc1('0x54')]);_0x4e03bc['body']=_['omit'](_0x4e03bc['body'],['id','createdAt',_0x5dc1('0x53')]);return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x4f2118){return db[_0x5dc1('0x31')][_0x5dc1('0x4d')](_['merge'](_0x430ea9,_0x4e03bc[_0x5dc1('0x4e')]),{'include':_0x4e03bc[_0x5dc1('0x37')][_0x5dc1('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x4f2118})[_0x5dc1('0x2a')](function(_0x5c7b8b){var _0x347db3=_0x5c7b8b[_0x5dc1('0x51')]({'plain':!![]});return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x4e03bc['params']['id']},'raw':!![]})['then'](function(_0x59778b){if(_0x59778b){return BPromise['each'](_0x59778b,function(_0x1a2669){return new BPromise(function(_0x345e95,_0x4ca199){if(_0x1a2669['autoAssociation']===null||_0x1a2669[_0x5dc1('0x59')]===0x1)_0x345e95(null);return db['UserProfileResource'][_0x5dc1('0x58')]({'where':{'sectionId':_0x1a2669['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x510205){var _0x2c062b=_[_0x5dc1('0x36')](_0x510205,function(_0x22fc7a){return qs[_0x5dc1('0x5a')](_0x22fc7a,['id',_0x5dc1('0x52'),_0x5dc1('0x53'),_0x5dc1('0x5b')]);});_0x345e95(_0x2c062b);})[_0x5dc1('0x4f')](function(_0x1109e7){_0x4ca199(_0x1109e7);});})['then'](function(_0x234251){var _0x552cf6=qs[_0x5dc1('0x5a')](_0x1a2669,['id',_0x5dc1('0x52'),_0x5dc1('0x53')]);_0x552cf6['userProfileId']=_0x347db3['id'];if(_0x234251)_0x552cf6[_0x5dc1('0x5c')]=_0x234251;return _0x552cf6;})[_0x5dc1('0x2a')](function(_0x85e375){return db[_0x5dc1('0x57')][_0x5dc1('0x4d')](_0x85e375,{'include':[{'model':db[_0x5dc1('0x5d')],'as':_0x5dc1('0x5c')}],'raw':!![],'transaction':_0x4f2118});});})['then'](function(){return _0x347db3;});}});});});}})['then'](respondWithResult(_0x3e9d9f,0xc9))[_0x5dc1('0x4f')](handleError(_0x3e9d9f,null));};exports[_0x5dc1('0x28')]=function(_0x56ffa2,_0x28062e){if(_0x56ffa2[_0x5dc1('0x4e')]['id']){delete _0x56ffa2[_0x5dc1('0x4e')]['id'];}return db['UserProfile'][_0x5dc1('0x4c')]({'where':{'id':_0x56ffa2[_0x5dc1('0x49')]['id']}})['then'](handleEntityNotFound(_0x28062e,null))['then'](saveUpdates(_0x56ffa2[_0x5dc1('0x4e')],null))['then'](respondWithResult(_0x28062e,null))[_0x5dc1('0x4f')](handleError(_0x28062e,null));};exports['destroy']=function(_0x45946b,_0x2971cb){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x45946b[_0x5dc1('0x49')]['id']}})['then'](handleEntityNotFound(_0x2971cb,null))[_0x5dc1('0x2a')](removeEntity(_0x2971cb,null))[_0x5dc1('0x4f')](handleError(_0x2971cb,null));};exports[_0x5dc1('0x5e')]=function(_0x1c7d91,_0x3d30d0){return db[_0x5dc1('0x31')]['describe']()[_0x5dc1('0x2a')](respondWithResult(_0x3d30d0,null))[_0x5dc1('0x4f')](handleError(_0x3d30d0,null));};exports['addSections']=function(_0x504b5d,_0x3ede01){var _0x31d17f=_0x504b5d[_0x5dc1('0x4e')];return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x504b5d[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x3ede01,null))['then'](function(_0x550a33){if(_0x550a33){return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x2ca042){return db[_0x5dc1('0x57')][_0x5dc1('0x29')]({'where':{'userProfileId':_0x504b5d[_0x5dc1('0x49')]['id'],'sectionId':_['map'](_0x31d17f,function(_0x1b10bf){return _0x1b10bf[_0x5dc1('0x5b')];})},'transaction':_0x2ca042})[_0x5dc1('0x2a')](function(){var _0x42eb81=_['map'](_0x31d17f,function(_0x2a8a81){_0x2a8a81[_0x5dc1('0x5f')]=_0x504b5d['params']['id'];return _0x2a8a81;});var _0x1d574a=[];return BPromise[_0x5dc1('0x60')](_0x42eb81,function(_0x51fec7){return db[_0x5dc1('0x57')][_0x5dc1('0x4d')](_0x51fec7,{'include':[{'model':db[_0x5dc1('0x5d')],'as':_0x5dc1('0x5c')}],'raw':!![],'transaction':_0x2ca042})['then'](function(_0x534914){_0x1d574a['push'](_0x534914[_0x5dc1('0x51')]({'plain':!![]}));});})[_0x5dc1('0x2a')](function(){return _0x1d574a;});});});}})[_0x5dc1('0x2a')](function(_0x1175cb){return _0x1175cb;})[_0x5dc1('0x2a')](respondWithResult(_0x3ede01,null))[_0x5dc1('0x4f')](handleError(_0x3ede01,null));};exports[_0x5dc1('0x61')]=function(_0x23e227,_0x2b49c0){var _0x3576ce;return db['UserProfile']['find']({'where':{'id':_0x23e227[_0x5dc1('0x49')]['id']},'attributes':['id',_0x5dc1('0x2e')]})[_0x5dc1('0x2a')](handleEntityNotFound(_0x2b49c0,null))[_0x5dc1('0x2a')](function(_0x4ec5de){if(_0x4ec5de){_0x3576ce=_0x4ec5de;return db[_0x5dc1('0x57')][_0x5dc1('0x29')]({'where':{'userProfileId':_0x23e227[_0x5dc1('0x49')]['id'],'sectionId':_0x23e227[_0x5dc1('0x37')][_0x5dc1('0x62')]}});}})[_0x5dc1('0x2a')](function(){return _0x3576ce;})[_0x5dc1('0x2a')](respondWithStatusCode(_0x2b49c0,null))[_0x5dc1('0x4f')](handleError(_0x2b49c0,null));};exports[_0x5dc1('0x63')]=function(_0x7b3f72,_0x158506){var _0x3d0deb=[];var _0x455709=[];return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x7b3f72['params']['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x4221de){_0x3d0deb=_['filter'](_0x4221de,function(_0x151f7d){return _0x151f7d[_0x5dc1('0x64')]===0x1||_[_0x5dc1('0x65')]([0x3eb,0x709],_0x151f7d['sectionId']);});if(!_[_0x5dc1('0x66')](_0x3d0deb)){return _['map'](_0x3d0deb,function(_0x3c64a8){return _0x3c64a8['sectionId'];});}else{return;}})[_0x5dc1('0x2a')](function(_0x177588){if(_0x177588)_0x455709=_0x177588;if(_['includes'](_0x455709,0x64)){var _0x36d294=_[_0x5dc1('0x4c')](_0x3d0deb,{'sectionId':0x64});return hasDefaultDashboard(_0x36d294)[_0x5dc1('0x2a')](function(_0x33ed85){return _[_0x5dc1('0x36')](_0x3d0deb,function(_0x23f818){if(_0x23f818[_0x5dc1('0x5b')]===0x64){_0x23f818[_0x5dc1('0x67')]=_0x33ed85;}return _0x23f818;});});}else{return;}})[_0x5dc1('0x2a')](function(_0x59bfd3){if(_0x59bfd3)_0x3d0deb=_0x59bfd3;if(_[_0x5dc1('0x65')](_0x455709,0x3eb)){var _0x3ff3d4=_['find'](_0x3d0deb,{'sectionId':0x3eb});return getCustomDashboards(_0x3ff3d4)[_0x5dc1('0x2a')](function(_0x19c997){return _['map'](_0x3d0deb,function(_0x4ab110){if(_0x3ff3d4[_0x5dc1('0x64')]){if(_0x4ab110[_0x5dc1('0x5b')]===0x3eb){_0x4ab110[_0x5dc1('0x67')]=_0x19c997;}}else{if(_0x4ab110[_0x5dc1('0x5b')]===0x64){_0x4ab110['subsections']=_0x19c997;}}return _0x4ab110;});});}else{return;}})[_0x5dc1('0x2a')](function(_0x183810){if(_0x183810)_0x3d0deb=_0x183810;if(_[_0x5dc1('0x65')](_0x455709,0x709)){var _0xb022b1=_[_0x5dc1('0x4c')](_0x3d0deb,{'sectionId':0x709});return getPlugins(_0xb022b1)['then'](function(_0x3e636b){if(_0xb022b1[_0x5dc1('0x64')]){return _['map'](_0x3d0deb,function(_0xe95e0a){if(_0xe95e0a[_0x5dc1('0x5b')]===0x709){_0xe95e0a[_0x5dc1('0x67')]=_0x3e636b;}return _0xe95e0a;});}else{var _0x3333f9={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3e636b};var _0x27a5ab=_[_0x5dc1('0x36')](_0x3d0deb);_0x27a5ab['push'](_0x3333f9);return _0x27a5ab;}});}else{return;}})[_0x5dc1('0x2a')](function(_0x530c15){if(_0x530c15)_0x3d0deb=_0x530c15;return _[_0x5dc1('0x45')](_0x3d0deb,['enabled',0x1]);})[_0x5dc1('0x2a')](respondWithResult(_0x158506,null))['catch'](handleError(_0x158506,null));};function hasDefaultDashboard(_0x503e54){var _0x376b7f=[0x65];return new BPromise(function(_0x423dec,_0x45bb60){try{if(_0x503e54[_0x5dc1('0x59')]){_0x423dec(_0x376b7f);}else{return db[_0x5dc1('0x5d')][_0x5dc1('0x68')]({'where':{'sectionId':_0x503e54['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x20cd8c){_0x20cd8c?_0x423dec(_0x376b7f):_0x423dec();});}}catch(_0x1ea4af){_0x45bb60(_0x1ea4af);}});}function getCustomDashboards(_0x5aeaad){var _0x450a82=[];return new BPromise(function(_0x9406e7,_0xa4e284){try{if(_0x5aeaad[_0x5dc1('0x59')]){return db['Dashboard'][_0x5dc1('0x58')]({'raw':!![]})[_0x5dc1('0x2a')](function(_0x27d952){_0x27d952['forEach'](function(_0x1a1a33){_0x450a82[_0x5dc1('0x69')](_0x1a1a33['id']+0x1869f);});_0x9406e7(_0x450a82);});}else{return db['UserProfileResource'][_0x5dc1('0x58')]({'where':{'sectionId':_0x5aeaad['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x2b8c44){_0x2b8c44[_0x5dc1('0x6a')](function(_0x5be41c){_0x450a82[_0x5dc1('0x69')](_0x5be41c[_0x5dc1('0x6b')]+0x1869f);});_0x9406e7(_0x450a82);});}}catch(_0x332bb4){_0xa4e284(_0x332bb4);}});}function getPlugins(_0x4afc21){var _0x5ce360=[];return new BPromise(function(_0x38da53,_0x163ee1){try{if(_0x4afc21[_0x5dc1('0x59')]){return db['Plugin']['findAll']({'raw':!![]})[_0x5dc1('0x2a')](function(_0x5a8d99){_0x5a8d99['forEach'](function(_0x513610){_0x5ce360['push'](_0x513610['id']+0x15b38);});_0x38da53(_0x5ce360);});}else{return db[_0x5dc1('0x5d')][_0x5dc1('0x58')]({'where':{'sectionId':_0x4afc21['id']},'raw':!![]})[_0x5dc1('0x2a')](function(_0x1478cb){_0x1478cb[_0x5dc1('0x6a')](function(_0x1ff230){_0x5ce360[_0x5dc1('0x69')](_0x1ff230[_0x5dc1('0x6b')]+0x15b38);});_0x38da53(_0x5ce360);});}}catch(_0x58fd34){_0x163ee1(_0x58fd34);}});}exports[_0x5dc1('0x6c')]=function(_0x465c4e,_0x4a3ebd){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x465c4e['params']['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x4a3ebd,null))['then'](function(_0x523ded){if(_0x523ded){return db[_0x5dc1('0x55')][_0x5dc1('0x56')](function(_0x1ee178){return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id']},'attributes':['id'],'raw':!![]})[_0x5dc1('0x2a')](function(_0x16cdd8){if(_0x16cdd8){return db['UserProfileSection'][_0x5dc1('0x29')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id'],'id':_['map'](_0x16cdd8,function(_0xd05906){return _0xd05906['id'];})},'transaction':_0x1ee178});}})[_0x5dc1('0x2a')](function(_0x54eaaf){var _0x2a3a53=_['map'](_0x465c4e['body'],function(_0x36f38d){_0x36f38d[_0x5dc1('0x5f')]=_0x465c4e['params']['id'];return _0x36f38d;});return db[_0x5dc1('0x57')][_0x5dc1('0x6d')](_0x2a3a53,{'raw':!![],'transaction':_0x1ee178});})[_0x5dc1('0x2a')](function(_0x3c44ad){var _0x5cdf3c=_['filter'](_[_0x5dc1('0x36')](_0x3c44ad,function(_0x280314){return _0x280314[_0x5dc1('0x51')]({'plain':!![]});}),{'includeAll':![]});if(_0x5cdf3c){return db[_0x5dc1('0x57')][_0x5dc1('0x58')]({'where':{'userProfileId':_0x465c4e[_0x5dc1('0x49')]['id'],'sectionId':_[_0x5dc1('0x36')](_0x5cdf3c,function(_0x577540){return _0x577540[_0x5dc1('0x5b')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x5dc1('0x2a')](function(_0x55cd78){var _0x32aace=_['map'](_0x465c4e[_0x5dc1('0x4e')],function(_0x48fd80){_0x48fd80[_0x5dc1('0x5f')]=_0x465c4e['params']['id'];return _0x48fd80;});return db[_0x5dc1('0x5d')][_0x5dc1('0x6d')](_0x32aace,{'raw':!![],'transaction':_0x1ee178});});}})[_0x5dc1('0x4f')](handleError(_0x4a3ebd,null));});}})[_0x5dc1('0x2a')](function(_0x5f26e8){var _0x39c7a4=_[_0x5dc1('0x36')](_0x5f26e8,function(_0x1e3b25){return _0x1e3b25['get']({'plain':!![]});});})[_0x5dc1('0x2a')](respondWithResult(_0x4a3ebd,null))[_0x5dc1('0x4f')](handleError(_0x4a3ebd,null));};exports[_0x5dc1('0x6e')]=function(_0x47812a,_0x2fc39e,_0x5491e9){return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x47812a[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](handleEntityNotFound(_0x2fc39e,null))[_0x5dc1('0x2a')](function(_0x56d19a){if(_0x56d19a){return _0x56d19a['removeResources'](_0x47812a['query'][_0x5dc1('0x62')]);}})[_0x5dc1('0x2a')](respondWithStatusCode(_0x2fc39e,null))[_0x5dc1('0x4f')](handleError(_0x2fc39e,null));};exports['getResources']=function(_0x4aa589,_0x3f3c5b){var _0x3b99c8={};if(!_0x4aa589[_0x5dc1('0x37')][_0x5dc1('0x6f')])throw new Error(_0x5dc1('0x70'));if(!_0x4aa589[_0x5dc1('0x37')][_0x5dc1('0x71')](_0x5dc1('0x3e'))){_0x3b99c8[_0x5dc1('0x21')]=qs[_0x5dc1('0x21')](_0x4aa589[_0x5dc1('0x37')]['limit']);_0x3b99c8[_0x5dc1('0x1f')]=qs[_0x5dc1('0x1f')](_0x4aa589[_0x5dc1('0x37')]['offset']);}return db[_0x5dc1('0x31')][_0x5dc1('0x4c')]({'where':{'id':_0x4aa589[_0x5dc1('0x49')]['id']}})[_0x5dc1('0x2a')](function(_0x477427){if(!_0x477427)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x4aa589['params']['id']);return db[_0x5dc1('0x31')][_0x5dc1('0x72')](_0x4aa589);})[_0x5dc1('0x2a')](respondWithFilteredResult(_0x3f3c5b,_0x3b99c8))[_0x5dc1('0x4f')](handleError(_0x3f3c5b,null));};
\ No newline at end of file
index 4f4928b..89a7fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserProfile','setMaxListeners','save'];(function(_0x55fa03,_0xcb96c2){var _0x2cd7cd=function(_0x56611f){while(--_0x56611f){_0x55fa03['push'](_0x55fa03['shift']());}};_0x2cd7cd(++_0xcb96c2);}(_0x4137,0xf8));var _0x7413=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4137[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require(_0x7413('0x0'));var UserProfile=require(_0x7413('0x1'))['db'][_0x7413('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x7413('0x3')](0x0);var events={'afterCreate':_0x7413('0x4'),'afterUpdate':_0x7413('0x5'),'afterDestroy':_0x7413('0x6')};function emitEvent(_0x299eea){return function(_0x258255,_0x3dc48a,_0x451a96){UserProfileEvents[_0x7413('0x7')](_0x299eea+':'+_0x258255['id'],_0x258255);UserProfileEvents['emit'](_0x299eea,_0x258255);_0x451a96(null);};}for(var e in events){if(events[_0x7413('0x8')](e)){var event=events[e];UserProfile[_0x7413('0x9')](e,emitEvent(event));}}module[_0x7413('0xa')]=UserProfileEvents;
\ No newline at end of file
+var _0xf446=['setMaxListeners','update','hook','events','UserProfile'];(function(_0x522ae8,_0x3b637e){var _0x3189b9=function(_0x3115d4){while(--_0x3115d4){_0x522ae8['push'](_0x522ae8['shift']());}};_0x3189b9(++_0x3b637e);}(_0xf446,0x1c0));var _0x6f44=function(_0x3201fb,_0x404813){_0x3201fb=_0x3201fb-0x0;var _0x2a0e2c=_0xf446[_0x3201fb];return _0x2a0e2c;};'use strict';var EventEmitter=require(_0x6f44('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x6f44('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x6f44('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6f44('0x3'),'afterDestroy':'remove'};function emitEvent(_0x13b43d){return function(_0x477db7,_0x5b59aa,_0x41bcac){UserProfileEvents['emit'](_0x13b43d+':'+_0x477db7['id'],_0x477db7);UserProfileEvents['emit'](_0x13b43d,_0x477db7);_0x41bcac(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x6f44('0x4')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 74b3b49..2379f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f30=['OpenTabs','UserProfile','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','push','find','all','ignore','union','autoAssociation','rawAttributes','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','filters','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','color','tag','ThroughTags','openTabs','chat','dataValues','sms','fax','mail','whatsapp','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','then','associatedResources','map','model','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','catch','toLowerCase','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','CmContact','Lists','ListId','CmList','companies','CmCustomField','ChatQueue','ChatWebsite','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','agent','Telephones','role','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','type','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','MailQueue','mailsubstatuses','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','voicequeues','agents','telephones','Users','salesforceaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','Sound','Tag','templates','Template','triggers','Trigger','trunks','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','SELECT','select','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4f30,0x1a9));var _0x04f3=function(_0x459b7a,_0x171a18){_0x459b7a=_0x459b7a-0x0;var _0x53f3cf=_0x4f30[_0x459b7a];return _0x53f3cf;};'use strict';var _=require('lodash');var attributes=require(_0x04f3('0x0'));var qs=require(_0x04f3('0x1'));var squel=require(_0x04f3('0x2'));module[_0x04f3('0x3')]=function(_0x1739d9){var _0x4c5acf=_0x1739d9[_0x04f3('0x4')];function _0x146ac5(_0x3214ab,_0x301369){return new Promise(function(_0x594600,_0x575a88){if(!_0x301369)return _0x594600(null);var _0x1bbef3=_0x301369[_0x04f3('0x5')]?{[_0x301369[_0x04f3('0x5')][_0x04f3('0x6')]]:_0x301369[_0x04f3('0x5')]['value']}:undefined;return _0x4c5acf[_0x3214ab][_0x04f3('0x7')]({'where':_0x1bbef3,'raw':!![]})[_0x04f3('0x8')](function(_0x2449e1){_0x301369[_0x04f3('0x9')]=_[_0x04f3('0xa')](_0x2449e1,'id');_0x594600(_0x301369);})['catch'](function(_0x3f1884){_0x575a88(_0x3f1884);});});}function _0x423254(_0x51301c,_0x2b0683){return new Promise(function(_0x24ab5f,_0x1ce529){var _0x1a0416=_0x51301c[_0x04f3('0x5')]?{[_0x51301c[_0x04f3('0x5')][_0x04f3('0x6')]]:_0x51301c[_0x04f3('0x5')]['value']}:undefined;return _0x4c5acf[_0x51301c[_0x04f3('0xb')]]['findAll']({'where':_0x1a0416,'raw':!![]})['then'](function(_0x1122bd){_0x2b0683[_0x04f3('0x9')]=_[_0x04f3('0xa')](_0x1122bd,function(_0x2cf3ac){return _0x2cf3ac[_0x04f3('0xc')];});_0x24ab5f(_0x2b0683);})['catch'](function(_0x912aa6){_0x1ce529(_0x912aa6);});});}function _0x5ef45f(_0x135611,_0x519d55,_0xfc7204){if(!_0x519d55)return Promise[_0x04f3('0xd')](null);return new Promise(function(_0x58a434,_0x4579fe){return _0x4c5acf[_0x04f3('0xe')]['findAll']({'where':{'sectionId':_0x519d55['id']},'raw':!![]})['then'](function(_0x5d4fba){if(_0x135611['field']&&_0x135611[_0x04f3('0x6')]!=='id'){_0x519d55['associatedResources']=_[_0x04f3('0xa')](_0x5d4fba,function(_0x38f1cd){return _0x38f1cd[_0x135611[_0x04f3('0x6')]];});}else{if(_0xfc7204===_0x04f3('0xf')){_0x519d55[_0x04f3('0x9')]=_[_0x04f3('0xa')](_0x5d4fba,function(_0x2e5014){return{'id':_0x2e5014[_0x04f3('0x10')],'type':_0x2e5014['type']};});}else{_0x519d55[_0x04f3('0x9')]=_[_0x04f3('0xa')](_0x5d4fba,function(_0x2ae4bb){return _0x2ae4bb['resourceId'];});}}_0x58a434(_0x519d55);})[_0x04f3('0x11')](function(_0x5507a0){_0x4579fe(_0x5507a0);});});}function _0x3b35b9(_0x1d70fa,_0x3a8a22){var _0x541b56={'parentSections':[]};switch(_0x1d70fa[_0x04f3('0x12')]()){case'squareprojects':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x14');break;case _0x04f3('0x15'):_0x541b56[_0x04f3('0x13')]='SquareOdbc';break;case _0x04f3('0x16'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x17');_0x541b56[_0x04f3('0x18')]=[{'name':_0x04f3('0x19'),'field':_0x04f3('0xc'),'foreignKey':_0x04f3('0x1a')}];break;case'projects':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x1b');break;case'contacts':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x1c');_0x541b56['parentSections']=[{'name':_0x04f3('0x1d'),'field':'id','foreignKey':_0x04f3('0x1e')}];break;case'lists':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x1f');break;case _0x04f3('0x20'):_0x541b56[_0x04f3('0x13')]='CmCompany';break;case'globalcustomfields':_0x541b56['childModel']=_0x04f3('0x21');break;case'chatqueues':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x22');break;case'chatwebsites':_0x541b56['childModel']=_0x04f3('0x23');break;case'faxqueues':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x24');break;case _0x04f3('0x25'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x26');break;case'inboundroutes':case _0x04f3('0x27'):case _0x04f3('0x28'):_0x541b56['childModel']=_0x04f3('0x29');break;case _0x04f3('0x2a'):_0x541b56[_0x04f3('0x13')]='VoiceContext';break;case _0x04f3('0x2b'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x2c');break;case _0x04f3('0x2d'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x2e');_0x541b56[_0x04f3('0x18')]=[{'name':_0x04f3('0x2f'),'field':_0x04f3('0xc'),'foreignKey':_0x04f3('0x30'),'model':_0x04f3('0x31'),'filter':{'field':'role','value':[_0x04f3('0x32')]}},{'name':_0x04f3('0x33'),'field':_0x04f3('0xc'),'foreignKey':_0x04f3('0x30'),'model':'User','filter':{'field':_0x04f3('0x34'),'value':[_0x04f3('0x35')]}},{'name':_0x04f3('0x36'),'field':_0x04f3('0xc'),'foreignKey':_0x04f3('0x37'),'model':_0x04f3('0x38'),'filter':{'field':'type','value':[_0x04f3('0x39')]}},{'name':_0x04f3('0x3a'),'field':'name','foreignKey':_0x04f3('0x37'),'model':_0x04f3('0x38'),'filter':{'field':_0x04f3('0x3b'),'value':['outbound']}}];break;case _0x04f3('0x3c'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x3d');break;case _0x04f3('0x3e'):_0x541b56['childModel']=_0x04f3('0x3f');break;case _0x04f3('0x40'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x41');break;case _0x04f3('0x42'):_0x541b56['childModel']=_0x04f3('0x43');break;case'mailqueues':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x44');break;case'mailaccounts':_0x541b56[_0x04f3('0x13')]='MailAccount';break;case _0x04f3('0x45'):_0x541b56[_0x04f3('0x13')]='MailSubstatus';break;case _0x04f3('0x46'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x47');break;case _0x04f3('0x48'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x49');break;case _0x04f3('0x4a'):_0x541b56[_0x04f3('0x13')]='SmsQueue';break;case _0x04f3('0x4b'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x4c');break;case _0x04f3('0x4d'):_0x541b56[_0x04f3('0x13')]='WhatsappQueue';break;case _0x04f3('0x4e'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x4f');break;case _0x04f3('0x50'):_0x541b56[_0x04f3('0x13')]='Team';break;case _0x04f3('0x51'):case'queuecampaigns':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x38');if(_0x3a8a22){_0x541b56[_0x04f3('0x18')]=[{'name':_0x04f3('0x36')},{'name':_0x04f3('0x3a')}];}break;case'users':case _0x04f3('0x52'):case _0x04f3('0x53'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x31');if(_0x3a8a22){_0x541b56[_0x04f3('0x18')]=[{'name':_0x04f3('0x54'),'filter':{'field':_0x04f3('0x34'),'value':['admin','user']},'ignore':!![]},{'name':_0x04f3('0x2f')},{'name':'Telephones'}];}break;case'zendeskaccounts':_0x541b56[_0x04f3('0x13')]='ZendeskAccount';break;case _0x04f3('0x55'):_0x541b56[_0x04f3('0x13')]='SalesforceAccount';break;case'freshdeskaccounts':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x56');break;case _0x04f3('0x57'):_0x541b56[_0x04f3('0x13')]='SugarcrmAccount';break;case _0x04f3('0x58'):_0x541b56['childModel']='DeskAccount';break;case _0x04f3('0x59'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x5a');break;case _0x04f3('0x5b'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x31');break;case _0x04f3('0x5c'):_0x541b56['childModel']=_0x04f3('0x5d');break;case _0x04f3('0x5e'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x5f');break;case'customdashboards':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x60');break;case _0x04f3('0x61'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x62');break;case _0x04f3('0x63'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x64');break;case _0x04f3('0x65'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x66');break;case'sounds':_0x541b56['childModel']=_0x04f3('0x67');break;case'tags':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x68');break;case _0x04f3('0x69'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x6a');break;case _0x04f3('0x6b'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x6c');break;case _0x04f3('0x6d'):_0x541b56[_0x04f3('0x13')]='Trunk';break;case _0x04f3('0x6e'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x6f');break;case _0x04f3('0x70'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0x71');break;case _0x04f3('0x72'):_0x541b56[_0x04f3('0x13')]=_0x04f3('0xf');_0x541b56['parentSections']=[{'name':_0x04f3('0x73'),'field':'id','foreignKey':_0x04f3('0x74')}];break;case'metrics':_0x541b56[_0x04f3('0x13')]=_0x04f3('0x75');break;}return _0x541b56;}function _0x4cc0c6(_0x2b99ad,_0x3b5db7){var _0x5ee9dc=_0x2b99ad[_0x04f3('0x76')](0x0)[_0x04f3('0x77')]()+_0x2b99ad[_0x04f3('0x78')](0x1);var _0xab24d3={'type':_0x4c5acf[_0x04f3('0x79')]['QueryTypes'][_0x04f3('0x7a')],'raw':!![]};return new Promise(function(_0x3ed134,_0x5c2bd5){var _0x548f32=squel[_0x04f3('0x7b')]()[_0x04f3('0x6')]('ui.'+_0x5ee9dc+'InteractionId','id')['field'](_0x04f3('0x7c'))[_0x04f3('0x7d')](_0x04f3('0x7e')+_0x2b99ad+_0x04f3('0x7f'),'ui')[_0x04f3('0x80')](_0x04f3('0x81'),_0x3b5db7['id']);return _0x4c5acf[_0x04f3('0x82')][_0x04f3('0x83')](_0x548f32[_0x04f3('0x84')](),_0xab24d3)[_0x04f3('0x8')](function(_0x539bd6){_0x3b5db7[_0x5ee9dc+_0x04f3('0x85')]=_0x539bd6;_0x3ed134(_0x539bd6);})[_0x04f3('0x11')](function(_0x3119de){_0x5c2bd5(_0x3119de);});});}return _0x1739d9['define'](_0x04f3('0x86'),attributes,{'tableName':_0x04f3('0x87'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x3abca3){var _0x2eb172={'raw':_0x3abca3['query']['raw'],'where':{}};var _0x30a70d={};var _0x4f0ab7={'count':0x0,'rows':[]};var _0x3d2d62=_0x3abca3[_0x04f3('0x83')][_0x04f3('0x88')];var _0x1890f8=_0x3abca3[_0x04f3('0x83')]['mergeResources']||![];var _0xc74a61=_0x3b35b9(_0x3d2d62,_0x1890f8);if(!_0xc74a61[_0x04f3('0x13')])throw new Error(_0x04f3('0x89')+_0x3d2d62+'\x27');var _0x32d189=[{'name':_0x3d2d62}];if(!_[_0x04f3('0x8a')](_0xc74a61[_0x04f3('0x18')]))_0x32d189=_0xc74a61[_0x04f3('0x18')];var _0x3513fe=[];for(var _0x4ca9b4=0x0;_0x4ca9b4<_0x32d189[_0x04f3('0x8b')];_0x4ca9b4++){_0x3513fe[_0x04f3('0x8c')](_0x4c5acf['UserProfileSection'][_0x04f3('0x8d')]({'where':{'userProfileId':_0x3abca3['params']['id'],'name':_0x32d189[_0x4ca9b4][_0x04f3('0xc')]},'raw':!![]}));}return Promise[_0x04f3('0x8e')](_0x3513fe)[_0x04f3('0x8')](function(_0x4ddea1){var _0x2b0da6=_[_0x04f3('0x5')](_0x4ddea1,function(_0x3044a1){return _0x3044a1?_0x3044a1:undefined;});var _0x42fb76=_['filter'](_0x32d189,[_0x04f3('0x8f'),!![]]);var _0x540738=_[_0x04f3('0x8a')](_0x2b0da6)&&_[_0x04f3('0x8a')](_0x42fb76)?null:_[_0x04f3('0x90')](_0x42fb76,_0x2b0da6);if(!_0x540738)return null;var _0x57c56d=[];for(var _0x2e0ae8=0x0;_0x2e0ae8<_0x540738[_0x04f3('0x8b')];_0x2e0ae8++){var _0x3476bf=_[_0x04f3('0x8d')](_0x32d189,function(_0x415166){return _0x540738[_0x2e0ae8]?_0x415166['name']===_0x540738[_0x2e0ae8][_0x04f3('0xc')]:null;});if(_0x3476bf){if(_0x540738[_0x2e0ae8][_0x04f3('0x8f')]){_0x57c56d[_0x04f3('0x8c')](_0x146ac5(_0xc74a61[_0x04f3('0x13')],_0x540738[_0x2e0ae8]));}else{if(!_0x540738[_0x2e0ae8][_0x04f3('0x91')]){_0x57c56d['push'](_0x5ef45f(_0x3476bf,_0x540738[_0x2e0ae8],_0xc74a61[_0x04f3('0x13')]));}else{if(_0x3476bf[_0x04f3('0xb')]){_0x57c56d[_0x04f3('0x8c')](_0x423254(_0x3476bf,_0x540738[_0x2e0ae8]));}}}}}return Promise[_0x04f3('0x8e')](_0x57c56d);})[_0x04f3('0x8')](function(_0x15b45c){var _0x17e30e=_0x15b45c;var _0x5c2087=null;if(_0x17e30e){_0x5c2087=_0x17e30e[_0x04f3('0x8b')]===0x1?_0x17e30e[0x0]:null;}if(!_0x5c2087&&!_0x17e30e)return _0x4f0ab7;var _0x10eb15=_0x4c5acf[_0xc74a61[_0x04f3('0x13')]][_0x04f3('0x92')];_0x30a70d[_0x04f3('0xb')]=_[_0x04f3('0x93')](_0x10eb15);_0x30a70d[_0x04f3('0x83')]=_[_0x04f3('0x93')](_0x3abca3['query']);_0x30a70d['filters']=_[_0x04f3('0x94')](_0x30a70d[_0x04f3('0xb')],_0x30a70d['query']);_0x2eb172[_0x04f3('0x95')]=_[_0x04f3('0x94')](_0x30a70d['model'],qs[_0x04f3('0x96')](_0x3abca3[_0x04f3('0x83')][_0x04f3('0x96')]));_0x2eb172[_0x04f3('0x95')]=_0x2eb172[_0x04f3('0x95')][_0x04f3('0x8b')]?_0x2eb172[_0x04f3('0x95')]:_0x30a70d['model'];if(!_0x3abca3[_0x04f3('0x83')][_0x04f3('0x97')](_0x04f3('0x98'))){_0x2eb172['limit']=qs[_0x04f3('0x99')](_0x3abca3[_0x04f3('0x83')][_0x04f3('0x99')]);_0x2eb172[_0x04f3('0x9a')]=qs[_0x04f3('0x9a')](_0x3abca3['query'][_0x04f3('0x9a')]);}_0x2eb172['order']=qs[_0x04f3('0x9b')](_0x3abca3['query'][_0x04f3('0x9b')]);_0x2eb172[_0x04f3('0x80')]=qs[_0x04f3('0x9c')](_[_0x04f3('0x9d')](_0x3abca3[_0x04f3('0x83')],_0x30a70d[_0x04f3('0x9c')]));if(_0x3abca3['query']['filter']){_0x2eb172[_0x04f3('0x80')]=_[_0x04f3('0x9e')](_0x2eb172['where'],{'$or':_[_0x04f3('0xa')](_0x10eb15,function(_0x45b0f1){if(_0x45b0f1[_0x04f3('0x3b')][_0x04f3('0x9f')]!==_0x04f3('0xa0')){var _0x1750b9={};_0x1750b9[_0x45b0f1[_0x04f3('0x6')]]={'$like':'%'+_0x3abca3[_0x04f3('0x83')][_0x04f3('0x5')]+'%'};return _0x1750b9;}})});}var _0x572d8a=[];var _0x3269c2=null;var _0x279553={};if(_0x5c2087){_0x3269c2=_[_0x04f3('0x8d')](_0x32d189,[_0x04f3('0xc'),_0x5c2087[_0x04f3('0xc')]]);if(_0x3269c2[_0x04f3('0x6')]){_0x279553={};if(_0xc74a61[_0x04f3('0x13')]===_0x04f3('0xf')){_0x279553[_0x3269c2[_0x04f3('0xa1')]]=_['map'](_0x5c2087[_0x04f3('0x9')],'id');}else{_0x279553[_0x3269c2[_0x04f3('0xa1')]]=_0x5c2087['associatedResources'];}_0x572d8a['push'](_0x279553);}else{_0x2eb172['where']['id']=_0x5c2087[_0x04f3('0x9')];}}else{for(var _0x4f3651=0x0;_0x4f3651<_0x17e30e['length'];_0x4f3651++){_0x3269c2=_[_0x04f3('0x8d')](_0x32d189,[_0x04f3('0xc'),_0x17e30e[_0x4f3651][_0x04f3('0xc')]]);if(_0x3269c2[_0x04f3('0x6')]){_0x279553={};_0x279553[_0x3269c2[_0x04f3('0xa1')]]=_0x17e30e[_0x4f3651][_0x04f3('0x9')];_0x572d8a[_0x04f3('0x8c')](_0x279553);}else{if(!_0x2eb172['where']['id'])_0x2eb172['where']['id']=[];_0x17e30e[_0x4f3651][_0x04f3('0x9')][_0x04f3('0xa2')](function(_0x28ef44){_0x2eb172[_0x04f3('0x80')]['id'][_0x04f3('0x8c')](_0x28ef44);});}}}if(!_[_0x04f3('0x8a')](_0x572d8a)){_0x2eb172[_0x04f3('0x80')]=_[_0x04f3('0x9e')](_0x2eb172[_0x04f3('0x80')],{'$and':{'$or':_0x572d8a}});}_0x2eb172=_[_0x04f3('0x9e')]({},_0x2eb172,_0x3abca3[_0x04f3('0xa3')]);if(_0x5c2087&&!_0x5c2087[_0x04f3('0x91')]&&_0xc74a61[_0x04f3('0x13')]===_0x04f3('0xf')){if(_0x3abca3['query'][_0x04f3('0xa4')]){_0x2eb172[_0x04f3('0xa5')]=[{'all':!![]}];}return _0x4c5acf[_0xc74a61[_0x04f3('0x13')]][_0x04f3('0x7')](_0x2eb172)[_0x04f3('0x8')](function(_0x3613fc){var _0x46afed=[];_0x3613fc[_0x04f3('0xa2')](function(_0x8106fc){var _0x4a93f1;switch(_0x8106fc[_0x04f3('0xa6')]){case _0x04f3('0xa7'):_0x4a93f1=_[_0x04f3('0x8d')](_0x5c2087['associatedResources'],function(_0x2be958){return _0x2be958['id']===_0x8106fc['reportId']&&_0x2be958[_0x04f3('0x3b')]===_0x04f3('0xa8');});break;case _0x04f3('0xa9'):_0x4a93f1=_['find'](_0x5c2087['associatedResources'],function(_0x373269){return _0x373269['id']===_0x8106fc[_0x04f3('0x74')]&&_0x373269[_0x04f3('0x3b')]===_0x04f3('0xaa');});break;}if(_0x4a93f1)_0x46afed[_0x04f3('0x8c')](_0x8106fc);});_0x4f0ab7[_0x04f3('0xab')]=_0x46afed[_0x04f3('0x8b')];_0x4f0ab7[_0x04f3('0xac')]=_0x46afed;return _0x4f0ab7;});}else{if(!_[_0x04f3('0x8a')](_0x3abca3[_0x04f3('0x83')][_0x04f3('0xad')])){_0x2eb172[_0x04f3('0x80')]['id']=_0x2eb172[_0x04f3('0x80')]['id']?_[_0x04f3('0x94')](_0x2eb172[_0x04f3('0x80')]['id'],_0x3abca3['query'][_0x04f3('0xad')]):_0x3abca3[_0x04f3('0x83')]['ids'];if(_0x3abca3['query'][_0x04f3('0xae')]){_0x2eb172['order']=_0x3abca3[_0x04f3('0x83')][_0x04f3('0xae')];}}if(_0x3abca3[_0x04f3('0x83')][_0x04f3('0xaf')]){_0x2eb172['where']=_['merge'](_0x2eb172['where'],{'$and':_0x3abca3['query']['extraQueryConditions']});}return _0x4c5acf[_0xc74a61[_0x04f3('0x13')]]['count']({'where':_0x2eb172['where']})[_0x04f3('0x8')](function(_0x258f09){_0x4f0ab7[_0x04f3('0xab')]=_0x258f09;if(_0x3abca3['query'][_0x04f3('0xa4')]){if(_0xc74a61[_0x04f3('0x13')]===_0x04f3('0x1c')){_0x2eb172[_0x04f3('0xa5')]=[{'model':_0x4c5acf['Tag'],'as':'Tags','attributes':['id',_0x04f3('0xc'),_0x04f3('0xb0')],'required':_0x3abca3[_0x04f3('0x83')][_0x04f3('0xb1')]?!![]:![]},{'model':_0x4c5acf[_0x04f3('0x68')],'as':_0x04f3('0xb2'),'attributes':['id',_0x04f3('0xc'),_0x04f3('0xb0')],'through':_0x3abca3[_0x04f3('0x83')]['tag']?{'attributes':[],'where':{'TagId':_0x3abca3['query'][_0x04f3('0xb1')]||undefined}}:{},'required':_0x3abca3[_0x04f3('0x83')][_0x04f3('0xb1')]?!![]:![]}];}else{_0x2eb172[_0x04f3('0xa5')]=[{'all':!![]}];}}return _0x4c5acf[_0xc74a61[_0x04f3('0x13')]][_0x04f3('0x7')](_0x2eb172);})['then'](function(_0x260f9b){_0x4f0ab7[_0x04f3('0xac')]=_0x260f9b;if(_0x3d2d62==='Agents'&&_0x3abca3[_0x04f3('0x83')][_0x04f3('0xb3')]==='true'){var _0x1aab29=[];for(var _0x21c486=0x0;_0x21c486<_0x4f0ab7[_0x04f3('0xac')][_0x04f3('0x8b')];_0x21c486++){_0x1aab29[_0x04f3('0x8c')](_0x4cc0c6(_0x04f3('0xb4'),_0x4f0ab7['rows'][_0x21c486][_0x04f3('0xb5')]));_0x1aab29['push'](_0x4cc0c6(_0x04f3('0xb6'),_0x4f0ab7[_0x04f3('0xac')][_0x21c486][_0x04f3('0xb5')]));_0x1aab29[_0x04f3('0x8c')](_0x4cc0c6(_0x04f3('0xb7'),_0x4f0ab7[_0x04f3('0xac')][_0x21c486]['dataValues']));_0x1aab29['push'](_0x4cc0c6(_0x04f3('0xb8'),_0x4f0ab7[_0x04f3('0xac')][_0x21c486]['dataValues']));_0x1aab29['push'](_0x4cc0c6('openchannel',_0x4f0ab7[_0x04f3('0xac')][_0x21c486]['dataValues']));_0x1aab29['push'](_0x4cc0c6(_0x04f3('0xb9'),_0x4f0ab7[_0x04f3('0xac')][_0x21c486][_0x04f3('0xb5')]));}return Promise[_0x04f3('0x8e')](_0x1aab29)[_0x04f3('0x8')](function(){return _0x4f0ab7;});}return _0x4f0ab7;});}});}}});};
\ No newline at end of file
+var _0x4be6=['zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','pauses','Schedule','sounds','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','extractedreports','Reports','metrics','toUpperCase','slice','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','_interactions','where','sequelize','define','UserProfile','raw','query','section','Invalid\x20section\x20\x27','isEmpty','length','push','find','params','union','ignore','all','rawAttributes','keys','intersection','attributes','fields','nolimit','limit','offset','pick','filters','merge','foreignKey','forEach','options','autoAssociation','includeAll','include','reportType','default','reportId','DefaultReports','custom','count','rows','ids','customSorting','extraQueryConditions','Tags','tag','ThroughTags','color','true','dataValues','sms','mail','lodash','./userProfile.attributes','squel','exports','filter','field','value','findAll','associatedResources','catch','model','then','map','name','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','SquareRecording','projectName','contacts','CmContact','parentSections','Lists','ListId','CmList','CmCompany','CmCustomField','chatqueues','ChatQueue','faxqueues','FaxQueue','faxaccounts','FaxAccount','outboundroutes','VoiceExtension','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','User','Telephones','membername','role','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','agents','telephones','Users','admin','user'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4be6,0x1c0));var _0x64be=function(_0x1e6b81,_0x1eb3ec){_0x1e6b81=_0x1e6b81-0x0;var _0x457c87=_0x4be6[_0x1e6b81];return _0x457c87;};'use strict';var _=require(_0x64be('0x0'));var attributes=require(_0x64be('0x1'));var qs=require('../../components/parsers/qs');var squel=require(_0x64be('0x2'));module[_0x64be('0x3')]=function(_0x2e566a){var _0x105319=_0x2e566a['models'];function _0x16faa5(_0x3391f4,_0x12ae63){return new Promise(function(_0x22d08f,_0x5d2352){if(!_0x12ae63)return _0x22d08f(null);var _0x5020a4=_0x12ae63[_0x64be('0x4')]?{[_0x12ae63[_0x64be('0x4')][_0x64be('0x5')]]:_0x12ae63['filter'][_0x64be('0x6')]}:undefined;return _0x105319[_0x3391f4][_0x64be('0x7')]({'where':_0x5020a4,'raw':!![]})['then'](function(_0x382336){_0x12ae63[_0x64be('0x8')]=_['map'](_0x382336,'id');_0x22d08f(_0x12ae63);})[_0x64be('0x9')](function(_0x4ead62){_0x5d2352(_0x4ead62);});});}function _0xe860c2(_0x11b17c,_0x1aa2d5){return new Promise(function(_0x13d8a5,_0x4bb6e5){var _0x507891=_0x11b17c[_0x64be('0x4')]?{[_0x11b17c['filter'][_0x64be('0x5')]]:_0x11b17c['filter']['value']}:undefined;return _0x105319[_0x11b17c[_0x64be('0xa')]][_0x64be('0x7')]({'where':_0x507891,'raw':!![]})[_0x64be('0xb')](function(_0x5d61ec){_0x1aa2d5[_0x64be('0x8')]=_[_0x64be('0xc')](_0x5d61ec,function(_0x49e2c0){return _0x49e2c0[_0x64be('0xd')];});_0x13d8a5(_0x1aa2d5);})[_0x64be('0x9')](function(_0x1568c5){_0x4bb6e5(_0x1568c5);});});}function _0xde2783(_0x4f9419,_0xc58e76,_0x5d2af2){if(!_0xc58e76)return Promise['resolve'](null);return new Promise(function(_0x830e1f,_0x31aa2b){return _0x105319[_0x64be('0xe')][_0x64be('0x7')]({'where':{'sectionId':_0xc58e76['id']},'raw':!![]})[_0x64be('0xb')](function(_0x21a7f5){if(_0x4f9419[_0x64be('0x5')]&&_0x4f9419[_0x64be('0x5')]!=='id'){_0xc58e76[_0x64be('0x8')]=_[_0x64be('0xc')](_0x21a7f5,function(_0x40d7f8){return _0x40d7f8[_0x4f9419['field']];});}else{if(_0x5d2af2===_0x64be('0xf')){_0xc58e76[_0x64be('0x8')]=_['map'](_0x21a7f5,function(_0x1456a6){return{'id':_0x1456a6[_0x64be('0x10')],'type':_0x1456a6[_0x64be('0x11')]};});}else{_0xc58e76[_0x64be('0x8')]=_[_0x64be('0xc')](_0x21a7f5,function(_0x5c4716){return _0x5c4716[_0x64be('0x10')];});}}_0x830e1f(_0xc58e76);})[_0x64be('0x9')](function(_0x21c50e){_0x31aa2b(_0x21c50e);});});}function _0x482f0f(_0x180410,_0x4c464d){var _0x2f79c2={'parentSections':[]};switch(_0x180410[_0x64be('0x12')]()){case _0x64be('0x13'):_0x2f79c2['childModel']=_0x64be('0x14');break;case _0x64be('0x15'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x17');break;case'squarerecordings':_0x2f79c2['childModel']=_0x64be('0x18');_0x2f79c2['parentSections']=[{'name':'SquareProjects','field':'name','foreignKey':_0x64be('0x19')}];break;case'projects':_0x2f79c2['childModel']='JscriptyProject';break;case _0x64be('0x1a'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x1b');_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x1d'),'field':'id','foreignKey':_0x64be('0x1e')}];break;case'lists':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x1f');break;case'companies':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x20');break;case'globalcustomfields':_0x2f79c2['childModel']=_0x64be('0x21');break;case _0x64be('0x22'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x23');break;case'chatwebsites':_0x2f79c2[_0x64be('0x16')]='ChatWebsite';break;case _0x64be('0x24'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x25');break;case _0x64be('0x26'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x27');break;case'inboundroutes':case'internalroutes':case _0x64be('0x28'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x29');break;case'contexts':_0x2f79c2['childModel']=_0x64be('0x2a');break;case _0x64be('0x2b'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x2c');break;case _0x64be('0x2d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x2e');_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x2f'),'field':_0x64be('0xd'),'foreignKey':'membername','model':_0x64be('0x30'),'filter':{'field':'role','value':['agent']}},{'name':_0x64be('0x31'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x32'),'model':'User','filter':{'field':_0x64be('0x33'),'value':[_0x64be('0x34')]}},{'name':_0x64be('0x35'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x36'),'model':_0x64be('0x37'),'filter':{'field':'type','value':[_0x64be('0x38')]}},{'name':_0x64be('0x39'),'field':_0x64be('0xd'),'foreignKey':_0x64be('0x36'),'model':_0x64be('0x37'),'filter':{'field':_0x64be('0x11'),'value':['outbound']}}];break;case'musiconholds':_0x2f79c2['childModel']='VoiceMusicOnHold';break;case _0x64be('0x3a'):_0x2f79c2[_0x64be('0x16')]='VoiceChanSpy';break;case _0x64be('0x3b'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3c');break;case _0x64be('0x3d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3e');break;case'mailqueues':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x3f');break;case'mailaccounts':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x40');break;case _0x64be('0x41'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x42');break;case _0x64be('0x43'):_0x2f79c2['childModel']=_0x64be('0x44');break;case'openchannelaccounts':_0x2f79c2[_0x64be('0x16')]='OpenchannelAccount';break;case'smsqueues':_0x2f79c2['childModel']=_0x64be('0x45');break;case _0x64be('0x46'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x47');break;case _0x64be('0x48'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x49');break;case _0x64be('0x4a'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x4b');break;case _0x64be('0x4c'):_0x2f79c2[_0x64be('0x16')]='Team';break;case _0x64be('0x4d'):case'queuecampaigns':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x37');if(_0x4c464d){_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x35')},{'name':'QueueCampaigns'}];}break;case'users':case _0x64be('0x4e'):case _0x64be('0x4f'):_0x2f79c2[_0x64be('0x16')]='User';if(_0x4c464d){_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x50'),'filter':{'field':_0x64be('0x33'),'value':[_0x64be('0x51'),_0x64be('0x52')]},'ignore':!![]},{'name':'Agents'},{'name':_0x64be('0x31')}];}break;case _0x64be('0x53'):_0x2f79c2['childModel']=_0x64be('0x54');break;case'salesforceaccounts':_0x2f79c2[_0x64be('0x16')]=_0x64be('0x55');break;case _0x64be('0x56'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x57');break;case _0x64be('0x58'):_0x2f79c2['childModel']=_0x64be('0x59');break;case _0x64be('0x5a'):_0x2f79c2['childModel']=_0x64be('0x5b');break;case _0x64be('0x5c'):_0x2f79c2[_0x64be('0x16')]='ZohoAccount';break;case _0x64be('0x5d'):_0x2f79c2['childModel']='User';break;case _0x64be('0x5e'):_0x2f79c2['childModel']=_0x64be('0x5f');break;case _0x64be('0x60'):_0x2f79c2['childModel']=_0x64be('0x61');break;case _0x64be('0x62'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x63');break;case'intervals':_0x2f79c2[_0x64be('0x16')]='Interval';break;case _0x64be('0x64'):_0x2f79c2[_0x64be('0x16')]='Pause';break;case'scheduler':_0x2f79c2['childModel']=_0x64be('0x65');break;case _0x64be('0x66'):_0x2f79c2['childModel']='Sound';break;case _0x64be('0x67'):_0x2f79c2['childModel']=_0x64be('0x68');break;case _0x64be('0x69'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x6a');break;case _0x64be('0x6b'):_0x2f79c2['childModel']=_0x64be('0x6c');break;case _0x64be('0x6d'):_0x2f79c2[_0x64be('0x16')]=_0x64be('0x6e');break;case _0x64be('0x6f'):_0x2f79c2['childModel']=_0x64be('0x70');break;case _0x64be('0x71'):_0x2f79c2[_0x64be('0x16')]='Plugin';break;case _0x64be('0x72'):_0x2f79c2[_0x64be('0x16')]='AnalyticExtractedReport';_0x2f79c2[_0x64be('0x1c')]=[{'name':_0x64be('0x73'),'field':'id','foreignKey':'reportId'}];break;case _0x64be('0x74'):_0x2f79c2[_0x64be('0x16')]='AnalyticMetric';break;}return _0x2f79c2;}function _0x184a68(_0x154400,_0x238ec5){var _0x9a3f8b=_0x154400['charAt'](0x0)[_0x64be('0x75')]()+_0x154400[_0x64be('0x76')](0x1);var _0x77318={'type':_0x105319['Sequelize'][_0x64be('0x77')][_0x64be('0x78')],'raw':!![]};return new Promise(function(_0x27ebbe,_0x5f4c62){var _0x1a0fe7=squel['select']()[_0x64be('0x5')](_0x64be('0x79')+_0x9a3f8b+_0x64be('0x7a'),'id')['field'](_0x64be('0x7b'))[_0x64be('0x7c')]('user_has_'+_0x154400+_0x64be('0x7d'),'ui')[_0x64be('0x7e')]('ui.UserId\x20=\x20?',_0x238ec5['id']);return _0x105319[_0x64be('0x7f')]['query'](_0x1a0fe7['toString'](),_0x77318)[_0x64be('0xb')](function(_0xfb0089){_0x238ec5[_0x9a3f8b+'OpenTabs']=_0xfb0089;_0x27ebbe(_0xfb0089);})[_0x64be('0x9')](function(_0xd8ed80){_0x5f4c62(_0xd8ed80);});});}return _0x2e566a[_0x64be('0x80')](_0x64be('0x81'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x14fc36){var _0x472cf5={'raw':_0x14fc36['query'][_0x64be('0x82')],'where':{}};var _0x2555ff={};var _0x30169a={'count':0x0,'rows':[]};var _0x1ef805=_0x14fc36[_0x64be('0x83')][_0x64be('0x84')];var _0x1d3cd9=_0x14fc36[_0x64be('0x83')]['mergeResources']||![];var _0x2a5d5=_0x482f0f(_0x1ef805,_0x1d3cd9);if(!_0x2a5d5[_0x64be('0x16')])throw new Error(_0x64be('0x85')+_0x1ef805+'\x27');var _0x44d51d=[{'name':_0x1ef805}];if(!_[_0x64be('0x86')](_0x2a5d5[_0x64be('0x1c')]))_0x44d51d=_0x2a5d5['parentSections'];var _0x3ad759=[];for(var _0x10864b=0x0;_0x10864b<_0x44d51d[_0x64be('0x87')];_0x10864b++){_0x3ad759[_0x64be('0x88')](_0x105319['UserProfileSection'][_0x64be('0x89')]({'where':{'userProfileId':_0x14fc36[_0x64be('0x8a')]['id'],'name':_0x44d51d[_0x10864b][_0x64be('0xd')]},'raw':!![]}));}return Promise['all'](_0x3ad759)['then'](function(_0x1c8391){var _0x2a73ad=_[_0x64be('0x4')](_0x1c8391,function(_0x1724ac){return _0x1724ac?_0x1724ac:undefined;});var _0x4036be=_[_0x64be('0x4')](_0x44d51d,['ignore',!![]]);var _0x3ce6e9=_[_0x64be('0x86')](_0x2a73ad)&&_['isEmpty'](_0x4036be)?null:_[_0x64be('0x8b')](_0x4036be,_0x2a73ad);if(!_0x3ce6e9)return null;var _0x3aeba4=[];for(var _0x2cde6b=0x0;_0x2cde6b<_0x3ce6e9[_0x64be('0x87')];_0x2cde6b++){var _0x296290=_[_0x64be('0x89')](_0x44d51d,function(_0x27f4dd){return _0x3ce6e9[_0x2cde6b]?_0x27f4dd[_0x64be('0xd')]===_0x3ce6e9[_0x2cde6b][_0x64be('0xd')]:null;});if(_0x296290){if(_0x3ce6e9[_0x2cde6b][_0x64be('0x8c')]){_0x3aeba4['push'](_0x16faa5(_0x2a5d5[_0x64be('0x16')],_0x3ce6e9[_0x2cde6b]));}else{if(!_0x3ce6e9[_0x2cde6b]['autoAssociation']){_0x3aeba4[_0x64be('0x88')](_0xde2783(_0x296290,_0x3ce6e9[_0x2cde6b],_0x2a5d5['childModel']));}else{if(_0x296290[_0x64be('0xa')]){_0x3aeba4[_0x64be('0x88')](_0xe860c2(_0x296290,_0x3ce6e9[_0x2cde6b]));}}}}}return Promise[_0x64be('0x8d')](_0x3aeba4);})['then'](function(_0x50a2c9){var _0x3f784e=_0x50a2c9;var _0x1fc9a9=null;if(_0x3f784e){_0x1fc9a9=_0x3f784e[_0x64be('0x87')]===0x1?_0x3f784e[0x0]:null;}if(!_0x1fc9a9&&!_0x3f784e)return _0x30169a;var _0x406f6d=_0x105319[_0x2a5d5['childModel']][_0x64be('0x8e')];_0x2555ff['model']=_[_0x64be('0x8f')](_0x406f6d);_0x2555ff['query']=_[_0x64be('0x8f')](_0x14fc36[_0x64be('0x83')]);_0x2555ff['filters']=_[_0x64be('0x90')](_0x2555ff[_0x64be('0xa')],_0x2555ff[_0x64be('0x83')]);_0x472cf5[_0x64be('0x91')]=_['intersection'](_0x2555ff['model'],qs[_0x64be('0x92')](_0x14fc36[_0x64be('0x83')][_0x64be('0x92')]));_0x472cf5['attributes']=_0x472cf5['attributes'][_0x64be('0x87')]?_0x472cf5['attributes']:_0x2555ff[_0x64be('0xa')];if(!_0x14fc36[_0x64be('0x83')]['hasOwnProperty'](_0x64be('0x93'))){_0x472cf5[_0x64be('0x94')]=qs[_0x64be('0x94')](_0x14fc36[_0x64be('0x83')][_0x64be('0x94')]);_0x472cf5[_0x64be('0x95')]=qs[_0x64be('0x95')](_0x14fc36[_0x64be('0x83')][_0x64be('0x95')]);}_0x472cf5['order']=qs['sort'](_0x14fc36['query']['sort']);_0x472cf5[_0x64be('0x7e')]=qs['filters'](_[_0x64be('0x96')](_0x14fc36[_0x64be('0x83')],_0x2555ff[_0x64be('0x97')]));if(_0x14fc36[_0x64be('0x83')][_0x64be('0x4')]){_0x472cf5[_0x64be('0x7e')]=_[_0x64be('0x98')](_0x472cf5[_0x64be('0x7e')],{'$or':_[_0x64be('0xc')](_0x406f6d,function(_0x12e014){if(_0x12e014['type']['key']!=='VIRTUAL'){var _0x1507bb={};_0x1507bb[_0x12e014[_0x64be('0x5')]]={'$like':'%'+_0x14fc36[_0x64be('0x83')]['filter']+'%'};return _0x1507bb;}})});}var _0xf615ca=[];var _0x3a62ca=null;var _0x2a5ddb={};if(_0x1fc9a9){_0x3a62ca=_['find'](_0x44d51d,[_0x64be('0xd'),_0x1fc9a9['name']]);if(_0x3a62ca[_0x64be('0x5')]){_0x2a5ddb={};if(_0x2a5d5[_0x64be('0x16')]===_0x64be('0xf')){_0x2a5ddb[_0x3a62ca[_0x64be('0x99')]]=_['map'](_0x1fc9a9[_0x64be('0x8')],'id');}else{_0x2a5ddb[_0x3a62ca['foreignKey']]=_0x1fc9a9[_0x64be('0x8')];}_0xf615ca[_0x64be('0x88')](_0x2a5ddb);}else{_0x472cf5[_0x64be('0x7e')]['id']=_0x1fc9a9['associatedResources'];}}else{for(var _0x58c74c=0x0;_0x58c74c<_0x3f784e[_0x64be('0x87')];_0x58c74c++){_0x3a62ca=_['find'](_0x44d51d,['name',_0x3f784e[_0x58c74c][_0x64be('0xd')]]);if(_0x3a62ca['field']){_0x2a5ddb={};_0x2a5ddb[_0x3a62ca[_0x64be('0x99')]]=_0x3f784e[_0x58c74c]['associatedResources'];_0xf615ca[_0x64be('0x88')](_0x2a5ddb);}else{if(!_0x472cf5['where']['id'])_0x472cf5[_0x64be('0x7e')]['id']=[];_0x3f784e[_0x58c74c][_0x64be('0x8')][_0x64be('0x9a')](function(_0x23d48d){_0x472cf5['where']['id'][_0x64be('0x88')](_0x23d48d);});}}}if(!_[_0x64be('0x86')](_0xf615ca)){_0x472cf5['where']=_['merge'](_0x472cf5[_0x64be('0x7e')],{'$and':{'$or':_0xf615ca}});}_0x472cf5=_[_0x64be('0x98')]({},_0x472cf5,_0x14fc36[_0x64be('0x9b')]);if(_0x1fc9a9&&!_0x1fc9a9[_0x64be('0x9c')]&&_0x2a5d5[_0x64be('0x16')]==='AnalyticExtractedReport'){if(_0x14fc36[_0x64be('0x83')][_0x64be('0x9d')]){_0x472cf5[_0x64be('0x9e')]=[{'all':!![]}];}return _0x105319[_0x2a5d5[_0x64be('0x16')]]['findAll'](_0x472cf5)[_0x64be('0xb')](function(_0x5d37d0){var _0x942a8e=[];_0x5d37d0['forEach'](function(_0x2853c8){var _0x4c0240;switch(_0x2853c8[_0x64be('0x9f')]){case _0x64be('0xa0'):_0x4c0240=_[_0x64be('0x89')](_0x1fc9a9[_0x64be('0x8')],function(_0x4ad52b){return _0x4ad52b['id']===_0x2853c8[_0x64be('0xa1')]&&_0x4ad52b[_0x64be('0x11')]===_0x64be('0xa2');});break;case _0x64be('0xa3'):_0x4c0240=_['find'](_0x1fc9a9[_0x64be('0x8')],function(_0x4ad28a){return _0x4ad28a['id']===_0x2853c8[_0x64be('0xa1')]&&_0x4ad28a['type']==='CustomReports';});break;}if(_0x4c0240)_0x942a8e['push'](_0x2853c8);});_0x30169a[_0x64be('0xa4')]=_0x942a8e['length'];_0x30169a[_0x64be('0xa5')]=_0x942a8e;return _0x30169a;});}else{if(!_[_0x64be('0x86')](_0x14fc36[_0x64be('0x83')][_0x64be('0xa6')])){_0x472cf5['where']['id']=_0x472cf5[_0x64be('0x7e')]['id']?_[_0x64be('0x90')](_0x472cf5[_0x64be('0x7e')]['id'],_0x14fc36['query']['ids']):_0x14fc36['query'][_0x64be('0xa6')];if(_0x14fc36['query']['customSorting']){_0x472cf5['order']=_0x14fc36[_0x64be('0x83')][_0x64be('0xa7')];}}if(_0x14fc36[_0x64be('0x83')][_0x64be('0xa8')]){_0x472cf5[_0x64be('0x7e')]=_[_0x64be('0x98')](_0x472cf5['where'],{'$and':_0x14fc36[_0x64be('0x83')][_0x64be('0xa8')]});}return _0x105319[_0x2a5d5[_0x64be('0x16')]][_0x64be('0xa4')]({'where':_0x472cf5['where']})[_0x64be('0xb')](function(_0x1d3d1a){_0x30169a[_0x64be('0xa4')]=_0x1d3d1a;if(_0x14fc36[_0x64be('0x83')][_0x64be('0x9d')]){if(_0x2a5d5[_0x64be('0x16')]===_0x64be('0x1b')){_0x472cf5[_0x64be('0x9e')]=[{'model':_0x105319[_0x64be('0x68')],'as':_0x64be('0xa9'),'attributes':['id',_0x64be('0xd'),'color'],'required':_0x14fc36['query'][_0x64be('0xaa')]?!![]:![]},{'model':_0x105319[_0x64be('0x68')],'as':_0x64be('0xab'),'attributes':['id','name',_0x64be('0xac')],'through':_0x14fc36[_0x64be('0x83')][_0x64be('0xaa')]?{'attributes':[],'where':{'TagId':_0x14fc36[_0x64be('0x83')][_0x64be('0xaa')]||undefined}}:{},'required':_0x14fc36[_0x64be('0x83')]['tag']?!![]:![]}];}else{_0x472cf5[_0x64be('0x9e')]=[{'all':!![]}];}}return _0x105319[_0x2a5d5[_0x64be('0x16')]][_0x64be('0x7')](_0x472cf5);})[_0x64be('0xb')](function(_0x4dd6b1){_0x30169a[_0x64be('0xa5')]=_0x4dd6b1;if(_0x1ef805===_0x64be('0x2f')&&_0x14fc36['query']['openTabs']===_0x64be('0xad')){var _0x4fbf2e=[];for(var _0xb6a741=0x0;_0xb6a741<_0x30169a[_0x64be('0xa5')]['length'];_0xb6a741++){_0x4fbf2e[_0x64be('0x88')](_0x184a68('chat',_0x30169a[_0x64be('0xa5')][_0xb6a741][_0x64be('0xae')]));_0x4fbf2e[_0x64be('0x88')](_0x184a68(_0x64be('0xaf'),_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e['push'](_0x184a68('fax',_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e['push'](_0x184a68(_0x64be('0xb0'),_0x30169a[_0x64be('0xa5')][_0xb6a741]['dataValues']));_0x4fbf2e[_0x64be('0x88')](_0x184a68('openchannel',_0x30169a['rows'][_0xb6a741]['dataValues']));_0x4fbf2e[_0x64be('0x88')](_0x184a68('whatsapp',_0x30169a[_0x64be('0xa5')][_0xb6a741][_0x64be('0xae')]));}return Promise[_0x64be('0x8d')](_0x4fbf2e)[_0x64be('0xb')](function(){return _0x30169a;});}return _0x30169a;});}});}}});};
\ No newline at end of file
index 836a417..0539379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe626=['debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','localhost','socket.io-emitter','register','then','info','UserProfile,\x20%s,\x20%s','request\x20sent'];(function(_0x5d179f,_0xe3457){var _0x45d160=function(_0x1f735e){while(--_0x1f735e){_0x5d179f['push'](_0x5d179f['shift']());}};_0x45d160(++_0xe3457);}(_0xe626,0x9d));var _0x6e62=function(_0x9097ed,_0x5784ec){_0x9097ed=_0x9097ed-0x0;var _0x1bbda3=_0xe626[_0x9097ed];return _0x1bbda3;};'use strict';var _=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var moment=require(_0x6e62('0x2'));var BPromise=require(_0x6e62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e62('0x4'));var db=require(_0x6e62('0x5'))['db'];var utils=require(_0x6e62('0x6'));var logger=require(_0x6e62('0x7'))(_0x6e62('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6e62('0x9')]({'port':0x232a});config[_0x6e62('0xa')]=_['defaults'](config[_0x6e62('0xa')],{'host':_0x6e62('0xb'),'port':0x18eb});var socket=require(_0x6e62('0xc'))(new Redis(config[_0x6e62('0xa')]));require('./userProfile.socket')[_0x6e62('0xd')](socket);function respondWithRpcPromise(_0x3d677f,_0x4e25d3,_0x2fbfd0){return new BPromise(function(_0x4c3b6b,_0x1f2693){return client['request'](_0x3d677f,_0x2fbfd0)[_0x6e62('0xe')](function(_0x4fc5a8){logger[_0x6e62('0xf')](_0x6e62('0x10'),_0x4e25d3,_0x6e62('0x11'));logger[_0x6e62('0x12')](_0x6e62('0x13'),_0x4e25d3,_0x6e62('0x11'),JSON[_0x6e62('0x14')](_0x4fc5a8));if(_0x4fc5a8['error']){if(_0x4fc5a8['error'][_0x6e62('0x15')]===0x1f4){logger[_0x6e62('0x16')]('UserProfile,\x20%s,\x20%s',_0x4e25d3,_0x4fc5a8[_0x6e62('0x16')][_0x6e62('0x17')]);return _0x1f2693(_0x4fc5a8[_0x6e62('0x16')][_0x6e62('0x17')]);}logger['error'](_0x6e62('0x10'),_0x4e25d3,_0x4fc5a8[_0x6e62('0x16')][_0x6e62('0x17')]);return _0x4c3b6b(_0x4fc5a8[_0x6e62('0x16')][_0x6e62('0x17')]);}else{logger[_0x6e62('0xf')](_0x6e62('0x10'),_0x4e25d3,_0x6e62('0x11'));_0x4c3b6b(_0x4fc5a8[_0x6e62('0x18')][_0x6e62('0x17')]);}})['catch'](function(_0x1f5ee7){logger[_0x6e62('0x16')]('UserProfile,\x20%s,\x20%s',_0x4e25d3,_0x1f5ee7);_0x1f2693(_0x1f5ee7);});});}
\ No newline at end of file
+var _0xb366=['request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','redis','localhost','socket.io-emitter','./userProfile.socket'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb366,0xa4));var _0x6b36=function(_0x432a98,_0xc97403){_0x432a98=_0x432a98-0x0;var _0x252c59=_0xb366[_0x432a98];return _0x252c59;};'use strict';var _=require(_0x6b36('0x0'));var util=require('util');var moment=require(_0x6b36('0x1'));var BPromise=require(_0x6b36('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b36('0x3'));var db=require(_0x6b36('0x4'))['db'];var utils=require(_0x6b36('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x6b36('0x6'));var client=jayson[_0x6b36('0x7')]['http']({'port':0x232a});config[_0x6b36('0x8')]=_['defaults'](config['redis'],{'host':_0x6b36('0x9'),'port':0x18eb});var socket=require(_0x6b36('0xa'))(new Redis(config[_0x6b36('0x8')]));require(_0x6b36('0xb'))['register'](socket);function respondWithRpcPromise(_0x171558,_0x22804e,_0x4d1437){return new BPromise(function(_0x32bbb5,_0x567985){return client[_0x6b36('0xc')](_0x171558,_0x4d1437)[_0x6b36('0xd')](function(_0x46eaa8){logger[_0x6b36('0xe')](_0x6b36('0xf'),_0x22804e,_0x6b36('0x10'));logger['debug'](_0x6b36('0x11'),_0x22804e,_0x6b36('0x10'),JSON['stringify'](_0x46eaa8));if(_0x46eaa8[_0x6b36('0x12')]){if(_0x46eaa8['error'][_0x6b36('0x13')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x22804e,_0x46eaa8['error'][_0x6b36('0x14')]);return _0x567985(_0x46eaa8[_0x6b36('0x12')][_0x6b36('0x14')]);}logger['error'](_0x6b36('0xf'),_0x22804e,_0x46eaa8['error'][_0x6b36('0x14')]);return _0x32bbb5(_0x46eaa8[_0x6b36('0x12')][_0x6b36('0x14')]);}else{logger['info']('UserProfile,\x20%s,\x20%s',_0x22804e,_0x6b36('0x10'));_0x32bbb5(_0x46eaa8['result'][_0x6b36('0x14')]);}})[_0x6b36('0x15')](function(_0x5ad465){logger[_0x6b36('0x12')]('UserProfile,\x20%s,\x20%s',_0x22804e,_0x5ad465);_0x567985(_0x5ad465);});});}
\ No newline at end of file
index 90e7c85..2453a0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b6e=['remove','update','userProfile:','./userProfile.events','save'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x7b6e,0x13e));var _0xe7b6=function(_0x1541c3,_0x2c6f07){_0x1541c3=_0x1541c3-0x0;var _0x3f9028=_0x7b6e[_0x1541c3];return _0x3f9028;};'use strict';var UserProfileEvents=require(_0xe7b6('0x0'));var events=[_0xe7b6('0x1'),_0xe7b6('0x2'),_0xe7b6('0x3')];function createListener(_0xd545c3,_0x1d8dd7){return function(_0x422495){_0x1d8dd7['emit'](_0xd545c3,_0x422495);};}function removeListener(_0x2b3832,_0x14a794){return function(){UserProfileEvents['removeListener'](_0x2b3832,_0x14a794);};}exports['register']=function(_0x5b45e3){for(var _0x36d685=0x0,_0x350155=events['length'];_0x36d685<_0x350155;_0x36d685++){var _0x28cf51=events[_0x36d685];var _0x220299=createListener(_0xe7b6('0x4')+_0x28cf51,_0x5b45e3);UserProfileEvents['on'](_0x28cf51,_0x220299);}};
\ No newline at end of file
+var _0xc591=['emit','removeListener','length','./userProfile.events','save','update'];(function(_0x5deb20,_0x159196){var _0x4346a6=function(_0x1c8dba){while(--_0x1c8dba){_0x5deb20['push'](_0x5deb20['shift']());}};_0x4346a6(++_0x159196);}(_0xc591,0x19b));var _0x1c59=function(_0x14a69f,_0x159b4e){_0x14a69f=_0x14a69f-0x0;var _0x4d542c=_0xc591[_0x14a69f];return _0x4d542c;};'use strict';var UserProfileEvents=require(_0x1c59('0x0'));var events=[_0x1c59('0x1'),'remove',_0x1c59('0x2')];function createListener(_0x1f7b5b,_0x7288c0){return function(_0x4de9b0){_0x7288c0[_0x1c59('0x3')](_0x1f7b5b,_0x4de9b0);};}function removeListener(_0x29a6c0,_0x4ebbd2){return function(){UserProfileEvents[_0x1c59('0x4')](_0x29a6c0,_0x4ebbd2);};}exports['register']=function(_0x1ad60a){for(var _0x3f638f=0x0,_0x790a72=events[_0x1c59('0x5')];_0x3f638f<_0x790a72;_0x3f638f++){var _0x374389=events[_0x3f638f];var _0x34a365=createListener('userProfile:'+_0x374389,_0x1ad60a);UserProfileEvents['on'](_0x374389,_0x34a365);}};
\ No newline at end of file
index e94ccfd..2cbff2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb288=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update'];(function(_0xb585d,_0x431ee2){var _0x50bff8=function(_0x54dc19){while(--_0x54dc19){_0xb585d['push'](_0xb585d['shift']());}};_0x50bff8(++_0x431ee2);}(_0xb288,0x1c5));var _0x8b28=function(_0x2b3f1a,_0x102f22){_0x2b3f1a=_0x2b3f1a-0x0;var _0xab7861=_0xb288[_0x2b3f1a];return _0xab7861;};'use strict';var multer=require(_0x8b28('0x0'));var util=require(_0x8b28('0x1'));var path=require(_0x8b28('0x2'));var timeout=require(_0x8b28('0x3'));var express=require(_0x8b28('0x4'));var router=express[_0x8b28('0x5')]();var fs_extra=require(_0x8b28('0x6'));var auth=require(_0x8b28('0x7'));var interaction=require(_0x8b28('0x8'));var config=require(_0x8b28('0x9'));var controller=require(_0x8b28('0xa'));router['get']('/',auth[_0x8b28('0xb')](),controller[_0x8b28('0xc')]);router[_0x8b28('0xd')](_0x8b28('0xe'),auth[_0x8b28('0xb')](),controller[_0x8b28('0xf')]);router[_0x8b28('0xd')](_0x8b28('0x10'),auth[_0x8b28('0xb')](),controller[_0x8b28('0x11')]);router[_0x8b28('0x12')]('/',auth['isAuthenticated'](),controller[_0x8b28('0x13')]);router[_0x8b28('0x14')](_0x8b28('0x10'),auth['isAuthenticated'](),controller[_0x8b28('0x15')]);router[_0x8b28('0x16')](_0x8b28('0x10'),auth[_0x8b28('0xb')](),controller[_0x8b28('0x17')]);module[_0x8b28('0x18')]=router;
\ No newline at end of file
+var _0x0afc=['/describe','describe','/:id','show','isAuthenticated','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','index','get'];(function(_0x27af08,_0x192c31){var _0x49eb8e=function(_0x249b6b){while(--_0x249b6b){_0x27af08['push'](_0x27af08['shift']());}};_0x49eb8e(++_0x192c31);}(_0x0afc,0x196));var _0xc0af=function(_0x5385ed,_0x304cae){_0x5385ed=_0x5385ed-0x0;var _0x34ba03=_0x0afc[_0x5385ed];return _0x34ba03;};'use strict';var multer=require(_0xc0af('0x0'));var util=require(_0xc0af('0x1'));var path=require(_0xc0af('0x2'));var timeout=require(_0xc0af('0x3'));var express=require(_0xc0af('0x4'));var router=express[_0xc0af('0x5')]();var fs_extra=require(_0xc0af('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc0af('0x7'));var config=require(_0xc0af('0x8'));var controller=require(_0xc0af('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xc0af('0xa')]);router[_0xc0af('0xb')](_0xc0af('0xc'),auth['isAuthenticated'](),controller[_0xc0af('0xd')]);router[_0xc0af('0xb')](_0xc0af('0xe'),auth['isAuthenticated'](),controller[_0xc0af('0xf')]);router['post']('/',auth[_0xc0af('0x10')](),controller[_0xc0af('0x11')]);router['put'](_0xc0af('0xe'),auth['isAuthenticated'](),controller[_0xc0af('0x12')]);router[_0xc0af('0x13')](_0xc0af('0xe'),auth[_0xc0af('0x10')](),controller[_0xc0af('0x14')]);module[_0xc0af('0x15')]=router;
\ No newline at end of file
index 79bd163..996673d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cb6=['exports','STRING','sequelize'];(function(_0x3207aa,_0xe86a72){var _0x51758f=function(_0x9ff790){while(--_0x9ff790){_0x3207aa['push'](_0x3207aa['shift']());}};_0x51758f(++_0xe86a72);}(_0x0cb6,0x1c1));var _0x60cb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0cb6[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x60cb('0x0'));module[_0x60cb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x60cb('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xcf61=['INTEGER','exports','STRING'];(function(_0x9bb562,_0x16cce5){var _0x5d7f9e=function(_0x33a1d2){while(--_0x33a1d2){_0x9bb562['push'](_0x9bb562['shift']());}};_0x5d7f9e(++_0x16cce5);}(_0xcf61,0x1ed));var _0x1cf6=function(_0x3d695b,_0x5ce0b3){_0x3d695b=_0x3d695b-0x0;var _0x3346dc=_0xcf61[_0x3d695b];return _0x3346dc;};'use strict';var Sequelize=require('sequelize');module[_0x1cf6('0x0')]={'name':{'type':Sequelize[_0x1cf6('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x1cf6('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index b081668..bea6d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['end','json','offset','limit','count','set','apply','reject','save','update','destroy','name','send','index','map','rawAttributes','key','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','UserProfileResource','then','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x569942,_0x970f33){var _0x5ea77d=function(_0x1ada75){while(--_0x1ada75){_0x569942['push'](_0x569942['shift']());}};_0x5ea77d(++_0x970f33);}(_0x524e,0x15e));var _0xe524=function(_0x3b5dc3,_0x1e4393){_0x3b5dc3=_0x3b5dc3-0x0;var _0x3f44f2=_0x524e[_0x3b5dc3];return _0x3f44f2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];function respondWithStatusCode(_0x5077c1,_0x4b0f51){_0x4b0f51=_0x4b0f51||0xcc;return function(_0xfdc2a5){if(_0xfdc2a5){return _0x5077c1[_0xe524('0x1c')](_0x4b0f51);}return _0x5077c1[_0xe524('0x1d')](_0x4b0f51)[_0xe524('0x1e')]();};}function respondWithResult(_0x20a852,_0x57c1b6){_0x57c1b6=_0x57c1b6||0xc8;return function(_0x12ff75){if(_0x12ff75){return _0x20a852['status'](_0x57c1b6)[_0xe524('0x1f')](_0x12ff75);}};}function respondWithFilteredResult(_0x1b0af6,_0x48165e){return function(_0x569660){if(_0x569660){var _0x488fce=typeof _0x48165e[_0xe524('0x20')]==='undefined'&&typeof _0x48165e[_0xe524('0x21')]==='undefined';var _0x5c8736=_0x569660['count'];var _0x3a4027=_0x488fce?0x0:_0x48165e['offset'];var _0x11b2a1=_0x488fce?_0x569660[_0xe524('0x22')]:_0x48165e[_0xe524('0x20')]+_0x48165e[_0xe524('0x21')];var _0x5d7b17;if(_0x11b2a1>=_0x5c8736){_0x11b2a1=_0x5c8736;_0x5d7b17=0xc8;}else{_0x5d7b17=0xce;}_0x1b0af6[_0xe524('0x1d')](_0x5d7b17);return _0x1b0af6[_0xe524('0x23')]('Content-Range',_0x3a4027+'-'+_0x11b2a1+'/'+_0x5c8736)[_0xe524('0x1f')](_0x569660);}return null;};}function patchUpdates(_0x309f85){return function(_0x43a4f9){try{jsonpatch[_0xe524('0x24')](_0x43a4f9,_0x309f85,!![]);}catch(_0x1c4194){return BPromise[_0xe524('0x25')](_0x1c4194);}return _0x43a4f9[_0xe524('0x26')]();};}function saveUpdates(_0x375219,_0x7dfe97){return function(_0x5c4d21){if(_0x5c4d21){return _0x5c4d21[_0xe524('0x27')](_0x375219)['then'](function(_0x577d1f){return _0x577d1f;});}return null;};}function removeEntity(_0x2d2f83,_0x23df5e){return function(_0x1ad106){if(_0x1ad106){return _0x1ad106[_0xe524('0x28')]()['then'](function(){_0x2d2f83[_0xe524('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e245,_0xcf5db){return function(_0xd62772){if(!_0xd62772){_0x17e245[_0xe524('0x1c')](0x194);}return _0xd62772;};}function handleError(_0x4102d9,_0xfd5965){_0xfd5965=_0xfd5965||0x1f4;return function(_0x2141db){logger['error'](_0x2141db['stack']);if(_0x2141db[_0xe524('0x29')]){delete _0x2141db[_0xe524('0x29')];}_0x4102d9[_0xe524('0x1d')](_0xfd5965)[_0xe524('0x2a')](_0x2141db);};}exports[_0xe524('0x2b')]=function(_0x5405e4,_0x52f140){var _0x4b1ff={},_0x25e7a7={},_0x3aedd9={'count':0x0,'rows':[]};var _0x8070e4=_[_0xe524('0x2c')](db['UserProfileResource'][_0xe524('0x2d')],function(_0x9a7e98){return{'name':_0x9a7e98['fieldName'],'type':_0x9a7e98['type'][_0xe524('0x2e')]};});_0x25e7a7[_0xe524('0x2f')]=_['map'](_0x8070e4,_0xe524('0x29'));_0x25e7a7['query']=_[_0xe524('0x30')](_0x5405e4['query']);_0x25e7a7[_0xe524('0x31')]=_[_0xe524('0x32')](_0x25e7a7[_0xe524('0x2f')],_0x25e7a7['query']);_0x4b1ff[_0xe524('0x33')]=_['intersection'](_0x25e7a7[_0xe524('0x2f')],qs[_0xe524('0x34')](_0x5405e4[_0xe524('0x35')]['fields']));_0x4b1ff[_0xe524('0x33')]=_0x4b1ff[_0xe524('0x33')]['length']?_0x4b1ff[_0xe524('0x33')]:_0x25e7a7[_0xe524('0x2f')];if(!_0x5405e4[_0xe524('0x35')][_0xe524('0x36')]('nolimit')){_0x4b1ff[_0xe524('0x21')]=qs[_0xe524('0x21')](_0x5405e4[_0xe524('0x35')][_0xe524('0x21')]);_0x4b1ff[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x5405e4[_0xe524('0x35')][_0xe524('0x20')]);}_0x4b1ff['order']=qs[_0xe524('0x37')](_0x5405e4['query'][_0xe524('0x37')]);_0x4b1ff[_0xe524('0x38')]=qs['filters'](_[_0xe524('0x39')](_0x5405e4['query'],_0x25e7a7[_0xe524('0x31')]),_0x8070e4);if(_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]){_0x4b1ff[_0xe524('0x38')]=_[_0xe524('0x3b')](_0x4b1ff[_0xe524('0x38')],{'$or':_[_0xe524('0x2c')](_0x8070e4,function(_0x13762c){if(_0x13762c['type']!==_0xe524('0x3c')){var _0x940c05={};_0x940c05[_0x13762c[_0xe524('0x29')]]={'$like':'%'+_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]+'%'};return _0x940c05;}})});}_0x4b1ff=_[_0xe524('0x3b')]({},_0x4b1ff,_0x5405e4[_0xe524('0x3d')]);var _0x158d45={'where':_0x4b1ff['where']};return db[_0xe524('0x3e')][_0xe524('0x22')](_0x158d45)[_0xe524('0x3f')](function(_0x59781b){_0x3aedd9[_0xe524('0x22')]=_0x59781b;if(_0x5405e4['query'][_0xe524('0x40')]){_0x4b1ff[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0x3e')][_0xe524('0x42')](_0x4b1ff);})[_0xe524('0x3f')](function(_0x4746cd){_0x3aedd9[_0xe524('0x43')]=_0x4746cd;return _0x3aedd9;})['then'](respondWithFilteredResult(_0x52f140,_0x4b1ff))[_0xe524('0x44')](handleError(_0x52f140,null));};exports[_0xe524('0x45')]=function(_0x13c54c,_0x376505){var _0x438962={'raw':![],'where':{'id':_0x13c54c['params']['id']}},_0x1ae283={};_0x1ae283[_0xe524('0x2f')]=_[_0xe524('0x30')](db[_0xe524('0x3e')]['rawAttributes']);_0x1ae283[_0xe524('0x35')]=_['keys'](_0x13c54c['query']);_0x1ae283[_0xe524('0x31')]=_[_0xe524('0x32')](_0x1ae283['model'],_0x1ae283[_0xe524('0x35')]);_0x438962[_0xe524('0x33')]=_[_0xe524('0x32')](_0x1ae283[_0xe524('0x2f')],qs['fields'](_0x13c54c['query'][_0xe524('0x34')]));_0x438962[_0xe524('0x33')]=_0x438962['attributes'][_0xe524('0x46')]?_0x438962['attributes']:_0x1ae283[_0xe524('0x2f')];if(_0x13c54c[_0xe524('0x35')][_0xe524('0x40')]){_0x438962[_0xe524('0x41')]=[{'all':!![]}];}_0x438962=_[_0xe524('0x3b')]({},_0x438962,_0x13c54c[_0xe524('0x3d')]);return db[_0xe524('0x3e')][_0xe524('0x47')](_0x438962)[_0xe524('0x3f')](handleEntityNotFound(_0x376505,null))[_0xe524('0x3f')](respondWithResult(_0x376505,null))[_0xe524('0x44')](handleError(_0x376505,null));};exports[_0xe524('0x48')]=function(_0x3d7ab7,_0x33b1c8){return db[_0xe524('0x3e')]['create'](_0x3d7ab7[_0xe524('0x49')],{})['then'](respondWithResult(_0x33b1c8,0xc9))['catch'](handleError(_0x33b1c8,null));};exports[_0xe524('0x27')]=function(_0x59fe6b,_0x232cf0){if(_0x59fe6b[_0xe524('0x49')]['id']){delete _0x59fe6b['body']['id'];}return db[_0xe524('0x3e')]['find']({'where':{'id':_0x59fe6b['params']['id']}})[_0xe524('0x3f')](handleEntityNotFound(_0x232cf0,null))[_0xe524('0x3f')](saveUpdates(_0x59fe6b[_0xe524('0x49')],null))['then'](respondWithResult(_0x232cf0,null))['catch'](handleError(_0x232cf0,null));};exports['destroy']=function(_0x4e9c3b,_0x4f7a64){return db['UserProfileResource'][_0xe524('0x47')]({'where':{'id':_0x4e9c3b[_0xe524('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4f7a64,null))[_0xe524('0x3f')](removeEntity(_0x4f7a64,null))[_0xe524('0x44')](handleError(_0x4f7a64,null));};exports[_0xe524('0x4b')]=function(_0x208aa8,_0x2fa143){return db['UserProfileResource'][_0xe524('0x4b')]()[_0xe524('0x3f')](respondWithResult(_0x2fa143,null))[_0xe524('0x44')](handleError(_0x2fa143,null));};
\ No newline at end of file
+var _0x9582=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','offset','count','set','json','reject','save','update','then','destroy','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir'];(function(_0x1e87ec,_0x42bfff){var _0x1e11a9=function(_0x142726){while(--_0x142726){_0x1e87ec['push'](_0x1e87ec['shift']());}};_0x1e11a9(++_0x42bfff);}(_0x9582,0x95));var _0x2958=function(_0x159eb3,_0x224b61){_0x159eb3=_0x159eb3-0x0;var _0x241cf2=_0x9582[_0x159eb3];return _0x241cf2;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];function respondWithStatusCode(_0x33a13a,_0x20e06a){_0x20e06a=_0x20e06a||0xcc;return function(_0x47067d){if(_0x47067d){return _0x33a13a[_0x2958('0x19')](_0x20e06a);}return _0x33a13a[_0x2958('0x1a')](_0x20e06a)[_0x2958('0x1b')]();};}function respondWithResult(_0x5bd520,_0x42e976){_0x42e976=_0x42e976||0xc8;return function(_0x2e12d4){if(_0x2e12d4){return _0x5bd520['status'](_0x42e976)['json'](_0x2e12d4);}};}function respondWithFilteredResult(_0x21ed6c,_0x38e724){return function(_0x5f06b1){if(_0x5f06b1){var _0x3bef50=typeof _0x38e724['offset']==='undefined'&&typeof _0x38e724[_0x2958('0x1c')]===_0x2958('0x1d');var _0x55e261=_0x5f06b1['count'];var _0x28a92c=_0x3bef50?0x0:_0x38e724[_0x2958('0x1e')];var _0x310d07=_0x3bef50?_0x5f06b1[_0x2958('0x1f')]:_0x38e724[_0x2958('0x1e')]+_0x38e724['limit'];var _0x19a614;if(_0x310d07>=_0x55e261){_0x310d07=_0x55e261;_0x19a614=0xc8;}else{_0x19a614=0xce;}_0x21ed6c[_0x2958('0x1a')](_0x19a614);return _0x21ed6c[_0x2958('0x20')]('Content-Range',_0x28a92c+'-'+_0x310d07+'/'+_0x55e261)[_0x2958('0x21')](_0x5f06b1);}return null;};}function patchUpdates(_0x53b100){return function(_0x1da684){try{jsonpatch['apply'](_0x1da684,_0x53b100,!![]);}catch(_0x5eaf36){return BPromise[_0x2958('0x22')](_0x5eaf36);}return _0x1da684[_0x2958('0x23')]();};}function saveUpdates(_0x2a02a4,_0x26c5a5){return function(_0x2202f8){if(_0x2202f8){return _0x2202f8[_0x2958('0x24')](_0x2a02a4)[_0x2958('0x25')](function(_0x2b9818){return _0x2b9818;});}return null;};}function removeEntity(_0x330763,_0x2aa514){return function(_0xaf5547){if(_0xaf5547){return _0xaf5547[_0x2958('0x26')]()[_0x2958('0x25')](function(){_0x330763[_0x2958('0x1a')](0xcc)[_0x2958('0x1b')]();});}};}function handleEntityNotFound(_0x4f811a,_0x574df5){return function(_0x3c1155){if(!_0x3c1155){_0x4f811a[_0x2958('0x19')](0x194);}return _0x3c1155;};}function handleError(_0x28c1f5,_0x43cf73){_0x43cf73=_0x43cf73||0x1f4;return function(_0x52bd32){logger[_0x2958('0x27')](_0x52bd32['stack']);if(_0x52bd32[_0x2958('0x28')]){delete _0x52bd32[_0x2958('0x28')];}_0x28c1f5[_0x2958('0x1a')](_0x43cf73)[_0x2958('0x29')](_0x52bd32);};}exports[_0x2958('0x2a')]=function(_0x36e2a5,_0x153958){var _0x5d1dfc={},_0x21b919={},_0x5053d0={'count':0x0,'rows':[]};var _0x48650d=_[_0x2958('0x2b')](db[_0x2958('0x2c')][_0x2958('0x2d')],function(_0x34e56e){return{'name':_0x34e56e[_0x2958('0x2e')],'type':_0x34e56e[_0x2958('0x2f')][_0x2958('0x30')]};});_0x21b919[_0x2958('0x31')]=_['map'](_0x48650d,_0x2958('0x28'));_0x21b919[_0x2958('0x32')]=_['keys'](_0x36e2a5[_0x2958('0x32')]);_0x21b919['filters']=_[_0x2958('0x33')](_0x21b919['model'],_0x21b919[_0x2958('0x32')]);_0x5d1dfc['attributes']=_[_0x2958('0x33')](_0x21b919[_0x2958('0x31')],qs[_0x2958('0x34')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x34')]));_0x5d1dfc[_0x2958('0x35')]=_0x5d1dfc[_0x2958('0x35')][_0x2958('0x36')]?_0x5d1dfc[_0x2958('0x35')]:_0x21b919['model'];if(!_0x36e2a5[_0x2958('0x32')]['hasOwnProperty'](_0x2958('0x37'))){_0x5d1dfc['limit']=qs[_0x2958('0x1c')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1c')]);_0x5d1dfc[_0x2958('0x1e')]=qs[_0x2958('0x1e')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1e')]);}_0x5d1dfc[_0x2958('0x38')]=qs[_0x2958('0x39')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x39')]);_0x5d1dfc[_0x2958('0x3a')]=qs[_0x2958('0x3b')](_['pick'](_0x36e2a5[_0x2958('0x32')],_0x21b919[_0x2958('0x3b')]),_0x48650d);if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]){_0x5d1dfc['where']=_[_0x2958('0x3d')](_0x5d1dfc[_0x2958('0x3a')],{'$or':_[_0x2958('0x2b')](_0x48650d,function(_0x3f7e27){if(_0x3f7e27[_0x2958('0x2f')]!==_0x2958('0x3e')){var _0x1ed89b={};_0x1ed89b[_0x3f7e27[_0x2958('0x28')]]={'$like':'%'+_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]+'%'};return _0x1ed89b;}})});}_0x5d1dfc=_[_0x2958('0x3d')]({},_0x5d1dfc,_0x36e2a5[_0x2958('0x3f')]);var _0x319243={'where':_0x5d1dfc['where']};return db[_0x2958('0x2c')][_0x2958('0x1f')](_0x319243)['then'](function(_0x4fe061){_0x5053d0[_0x2958('0x1f')]=_0x4fe061;if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x40')]){_0x5d1dfc[_0x2958('0x41')]=[{'all':!![]}];}return db[_0x2958('0x2c')][_0x2958('0x42')](_0x5d1dfc);})[_0x2958('0x25')](function(_0x13be6d){_0x5053d0[_0x2958('0x43')]=_0x13be6d;return _0x5053d0;})[_0x2958('0x25')](respondWithFilteredResult(_0x153958,_0x5d1dfc))[_0x2958('0x44')](handleError(_0x153958,null));};exports[_0x2958('0x45')]=function(_0xe33c56,_0x5a58ea){var _0x645b66={'raw':![],'where':{'id':_0xe33c56[_0x2958('0x46')]['id']}},_0x112256={};_0x112256[_0x2958('0x31')]=_['keys'](db[_0x2958('0x2c')]['rawAttributes']);_0x112256['query']=_[_0x2958('0x47')](_0xe33c56[_0x2958('0x32')]);_0x112256[_0x2958('0x3b')]=_[_0x2958('0x33')](_0x112256[_0x2958('0x31')],_0x112256[_0x2958('0x32')]);_0x645b66['attributes']=_[_0x2958('0x33')](_0x112256['model'],qs['fields'](_0xe33c56[_0x2958('0x32')]['fields']));_0x645b66[_0x2958('0x35')]=_0x645b66[_0x2958('0x35')][_0x2958('0x36')]?_0x645b66[_0x2958('0x35')]:_0x112256[_0x2958('0x31')];if(_0xe33c56[_0x2958('0x32')][_0x2958('0x40')]){_0x645b66[_0x2958('0x41')]=[{'all':!![]}];}_0x645b66=_['merge']({},_0x645b66,_0xe33c56[_0x2958('0x3f')]);return db[_0x2958('0x2c')][_0x2958('0x48')](_0x645b66)[_0x2958('0x25')](handleEntityNotFound(_0x5a58ea,null))['then'](respondWithResult(_0x5a58ea,null))[_0x2958('0x44')](handleError(_0x5a58ea,null));};exports[_0x2958('0x49')]=function(_0x4a51b1,_0x1b6829){return db[_0x2958('0x2c')][_0x2958('0x49')](_0x4a51b1[_0x2958('0x4a')],{})[_0x2958('0x25')](respondWithResult(_0x1b6829,0xc9))[_0x2958('0x44')](handleError(_0x1b6829,null));};exports['update']=function(_0x1fff2a,_0x38b551){if(_0x1fff2a[_0x2958('0x4a')]['id']){delete _0x1fff2a[_0x2958('0x4a')]['id'];}return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x1fff2a[_0x2958('0x46')]['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x38b551,null))[_0x2958('0x25')](saveUpdates(_0x1fff2a[_0x2958('0x4a')],null))[_0x2958('0x25')](respondWithResult(_0x38b551,null))[_0x2958('0x44')](handleError(_0x38b551,null));};exports[_0x2958('0x26')]=function(_0x3f7bc1,_0x1bb780){return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x3f7bc1['params']['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x1bb780,null))['then'](removeEntity(_0x1bb780,null))[_0x2958('0x44')](handleError(_0x1bb780,null));};exports[_0x2958('0x4b')]=function(_0x1db8b1,_0x534677){return db['UserProfileResource'][_0x2958('0x4b')]()[_0x2958('0x25')](respondWithResult(_0x534677,null))[_0x2958('0x44')](handleError(_0x534677,null));};
\ No newline at end of file
index f39edc0..9835f19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc8=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','sectionId','lodash'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0xebc8,0x13f));var _0x8ebc=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xebc8[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x8ebc('0x0'));var util=require(_0x8ebc('0x1'));var logger=require(_0x8ebc('0x2'))(_0x8ebc('0x3'));var moment=require('moment');var BPromise=require(_0x8ebc('0x4'));var rp=require(_0x8ebc('0x5'));var fs=require('fs');var path=require(_0x8ebc('0x6'));var rimraf=require(_0x8ebc('0x7'));var config=require(_0x8ebc('0x8'));var attributes=require(_0x8ebc('0x9'));module[_0x8ebc('0xa')]=function(_0xb27d61,_0x1b66fd){return _0xb27d61[_0x8ebc('0xb')](_0x8ebc('0xc'),attributes,{'tableName':_0x8ebc('0xd'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x8ebc('0xe'),_0x8ebc('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e82=['rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x3e82,0x117));var _0x23e8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3e82[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x23e8('0x0'));var util=require('util');var logger=require(_0x23e8('0x1'))(_0x23e8('0x2'));var moment=require(_0x23e8('0x3'));var BPromise=require(_0x23e8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x23e8('0x5'));var rimraf=require(_0x23e8('0x6'));var config=require(_0x23e8('0x7'));var attributes=require(_0x23e8('0x8'));module[_0x23e8('0x9')]=function(_0x5962ce,_0x937436){return _0x5962ce[_0x23e8('0xa')](_0x23e8('0xb'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x23e8('0xc'),'fields':[_0x23e8('0xd'),_0x23e8('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e3b8521..ca3dee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f36=['error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1f36,0x100));var _0x61f3=function(_0x557bf4,_0x1f8dad){_0x557bf4=_0x557bf4-0x0;var _0x2916e2=_0x1f36[_0x557bf4];return _0x2916e2;};'use strict';var _=require('lodash');var util=require(_0x61f3('0x0'));var moment=require(_0x61f3('0x1'));var BPromise=require('bluebird');var rs=require(_0x61f3('0x2'));var fs=require('fs');var Redis=require(_0x61f3('0x3'));var db=require(_0x61f3('0x4'))['db'];var utils=require(_0x61f3('0x5'));var logger=require(_0x61f3('0x6'))(_0x61f3('0x7'));var config=require(_0x61f3('0x8'));var jayson=require(_0x61f3('0x9'));var client=jayson[_0x61f3('0xa')][_0x61f3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x559176,_0x40d57a,_0x466100){return new BPromise(function(_0x3bf39d,_0x1d9d2b){return client[_0x61f3('0xc')](_0x559176,_0x466100)[_0x61f3('0xd')](function(_0x134080){logger['info'](_0x61f3('0xe'),_0x40d57a,_0x61f3('0xf'));logger[_0x61f3('0x10')](_0x61f3('0x11'),_0x40d57a,'request\x20sent',JSON[_0x61f3('0x12')](_0x134080));if(_0x134080[_0x61f3('0x13')]){if(_0x134080[_0x61f3('0x13')][_0x61f3('0x14')]===0x1f4){logger['error'](_0x61f3('0xe'),_0x40d57a,_0x134080[_0x61f3('0x13')][_0x61f3('0x15')]);return _0x1d9d2b(_0x134080[_0x61f3('0x13')]['message']);}logger[_0x61f3('0x13')](_0x61f3('0xe'),_0x40d57a,_0x134080[_0x61f3('0x13')][_0x61f3('0x15')]);return _0x3bf39d(_0x134080[_0x61f3('0x13')][_0x61f3('0x15')]);}else{logger[_0x61f3('0x16')]('UserProfileResource,\x20%s,\x20%s',_0x40d57a,_0x61f3('0xf'));_0x3bf39d(_0x134080[_0x61f3('0x17')][_0x61f3('0x15')]);}})[_0x61f3('0x18')](function(_0x3e2c0e){logger[_0x61f3('0x13')](_0x61f3('0xe'),_0x40d57a,_0x3e2c0e);_0x1d9d2b(_0x3e2c0e);});});}
\ No newline at end of file
+var _0x3745=['info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileResource,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request'];(function(_0x31704f,_0x3b64f6){var _0x2a8df1=function(_0x2294f4){while(--_0x2294f4){_0x31704f['push'](_0x31704f['shift']());}};_0x2a8df1(++_0x3b64f6);}(_0x3745,0x16f));var _0x5374=function(_0x2e49fc,_0x4a11bf){_0x2e49fc=_0x2e49fc-0x0;var _0xa7ba95=_0x3745[_0x2e49fc];return _0xa7ba95;};'use strict';var _=require(_0x5374('0x0'));var util=require(_0x5374('0x1'));var moment=require(_0x5374('0x2'));var BPromise=require('bluebird');var rs=require(_0x5374('0x3'));var fs=require('fs');var Redis=require(_0x5374('0x4'));var db=require(_0x5374('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5374('0x6'));var config=require('../../config/environment');var jayson=require(_0x5374('0x7'));var client=jayson[_0x5374('0x8')][_0x5374('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4fc6de,_0x19ee85,_0x28b2f7){return new BPromise(function(_0x130b9e,_0x102117){return client[_0x5374('0xa')](_0x4fc6de,_0x28b2f7)['then'](function(_0x156fc3){logger[_0x5374('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x19ee85,_0x5374('0xc'));logger[_0x5374('0xd')](_0x5374('0xe'),_0x19ee85,_0x5374('0xc'),JSON[_0x5374('0xf')](_0x156fc3));if(_0x156fc3[_0x5374('0x10')]){if(_0x156fc3[_0x5374('0x10')][_0x5374('0x11')]===0x1f4){logger['error'](_0x5374('0x12'),_0x19ee85,_0x156fc3[_0x5374('0x10')][_0x5374('0x13')]);return _0x102117(_0x156fc3['error']['message']);}logger[_0x5374('0x10')](_0x5374('0x12'),_0x19ee85,_0x156fc3[_0x5374('0x10')][_0x5374('0x13')]);return _0x130b9e(_0x156fc3['error'][_0x5374('0x13')]);}else{logger[_0x5374('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x19ee85,_0x5374('0xc'));_0x130b9e(_0x156fc3['result'][_0x5374('0x13')]);}})[_0x5374('0x14')](function(_0xaa33bd){logger[_0x5374('0x10')](_0x5374('0x12'),_0x19ee85,_0xaa33bd);_0x102117(_0xaa33bd);});});}
\ No newline at end of file
index ed120ab..f9ebb36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa387=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','delete','destroy'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xa387,0xe8));var _0x7a38=function(_0x5857d7,_0x3cd54b){_0x5857d7=_0x5857d7-0x0;var _0x3c7d0f=_0xa387[_0x5857d7];return _0x3c7d0f;};'use strict';var multer=require(_0x7a38('0x0'));var util=require(_0x7a38('0x1'));var path=require(_0x7a38('0x2'));var timeout=require(_0x7a38('0x3'));var express=require(_0x7a38('0x4'));var router=express[_0x7a38('0x5')]();var fs_extra=require(_0x7a38('0x6'));var auth=require(_0x7a38('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7a38('0x8'));router[_0x7a38('0x9')]('/',auth[_0x7a38('0xa')](),controller[_0x7a38('0xb')]);router[_0x7a38('0x9')](_0x7a38('0xc'),auth['isAuthenticated'](),controller[_0x7a38('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x7a38('0xe')]);router['post']('/',auth[_0x7a38('0xa')](),controller[_0x7a38('0xf')]);router[_0x7a38('0x10')](_0x7a38('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x7a38('0x12')]('/:id',auth[_0x7a38('0xa')](),controller[_0x7a38('0x13')]);module[_0x7a38('0x14')]=router;
\ No newline at end of file
+var _0x0b30=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe','describe','/:id','show','create','put','delete','exports'];(function(_0x418fd8,_0xf30fde){var _0x384d42=function(_0x5f3cb0){while(--_0x5f3cb0){_0x418fd8['push'](_0x418fd8['shift']());}};_0x384d42(++_0xf30fde);}(_0x0b30,0x7e));var _0x00b3=function(_0x340514,_0x24c774){_0x340514=_0x340514-0x0;var _0x3a6823=_0x0b30[_0x340514];return _0x3a6823;};'use strict';var multer=require(_0x00b3('0x0'));var util=require(_0x00b3('0x1'));var path=require('path');var timeout=require(_0x00b3('0x2'));var express=require(_0x00b3('0x3'));var router=express[_0x00b3('0x4')]();var fs_extra=require(_0x00b3('0x5'));var auth=require(_0x00b3('0x6'));var interaction=require(_0x00b3('0x7'));var config=require('../../config/environment');var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x00b3('0x8')](),controller['index']);router[_0x00b3('0x9')](_0x00b3('0xa'),auth[_0x00b3('0x8')](),controller[_0x00b3('0xb')]);router[_0x00b3('0x9')](_0x00b3('0xc'),auth['isAuthenticated'](),controller[_0x00b3('0xd')]);router['post']('/',auth[_0x00b3('0x8')](),controller[_0x00b3('0xe')]);router[_0x00b3('0xf')](_0x00b3('0xc'),auth[_0x00b3('0x8')](),controller['update']);router[_0x00b3('0x10')](_0x00b3('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x00b3('0x11')]=router;
\ No newline at end of file
index 41bad49..1ff439a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['split','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x330ff0,_0x146528){var _0x215472=function(_0x57447b){while(--_0x57447b){_0x330ff0['push'](_0x330ff0['shift']());}};_0x215472(++_0x146528);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0baf('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x0baf('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0baf('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x232cc7){this[_0x0baf('0x4')](_0x0baf('0x5'),_0x232cc7?_0x232cc7[_0x0baf('0x6')](''):[]);},'get':function(){return this[_0x0baf('0x7')](_0x0baf('0x5'))?this[_0x0baf('0x7')](_0x0baf('0x5'))[_0x0baf('0x8')](''):[];}}};
\ No newline at end of file
+var _0xd824=['STRING','setDataValue','getDataValue','crudPermissions','split','sequelize','exports','INTEGER','BOOLEAN'];(function(_0x167559,_0xc2822d){var _0x53ab6a=function(_0x4ae492){while(--_0x4ae492){_0x167559['push'](_0x167559['shift']());}};_0x53ab6a(++_0xc2822d);}(_0xd824,0xc2));var _0x4d82=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd824[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4d82('0x4')],'set':function(_0x287fbf){this[_0x4d82('0x5')]('crudPermissions',_0x287fbf?_0x287fbf['join'](''):[]);},'get':function(){return this[_0x4d82('0x6')]('crudPermissions')?this['getDataValue'](_0x4d82('0x7'))[_0x4d82('0x8')](''):[];}}};
\ No newline at end of file
index 9f6fa76..4b912c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3755=['request-promise','moment','mustache','util','path','sox','to-csv','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','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','UserProfileSection','intersection','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x13e75a,_0x85c33){var _0x10bfb3=function(_0x519cb7){while(--_0x519cb7){_0x13e75a['push'](_0x13e75a['shift']());}};_0x10bfb3(++_0x85c33);}(_0x3755,0xe9));var _0x5375=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x3755[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x5375('0x0'));var rimraf=require(_0x5375('0x1'));var zipdir=require(_0x5375('0x2'));var jsonpatch=require(_0x5375('0x3'));var rp=require(_0x5375('0x4'));var moment=require(_0x5375('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5375('0x6'));var util=require(_0x5375('0x7'));var path=require(_0x5375('0x8'));var sox=require(_0x5375('0x9'));var csv=require(_0x5375('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5375('0xb'));var squel=require(_0x5375('0xc'));var crypto=require(_0x5375('0xd'));var jsforce=require(_0x5375('0xe'));var deskjs=require(_0x5375('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5375('0x10'));var Redis=require('ioredis');var authService=require(_0x5375('0x11'));var qs=require(_0x5375('0x12'));var as=require(_0x5375('0x13'));var hardwareService=require(_0x5375('0x14'));var logger=require(_0x5375('0x15'))(_0x5375('0x16'));var utils=require(_0x5375('0x17'));var config=require(_0x5375('0x18'));var licenseUtil=require(_0x5375('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ee429,_0xc39f5c){_0xc39f5c=_0xc39f5c||0xcc;return function(_0x5324e8){if(_0x5324e8){return _0x1ee429[_0x5375('0x1a')](_0xc39f5c);}return _0x1ee429[_0x5375('0x1b')](_0xc39f5c)[_0x5375('0x1c')]();};}function respondWithResult(_0x676680,_0x49468d){_0x49468d=_0x49468d||0xc8;return function(_0x354860){if(_0x354860){return _0x676680[_0x5375('0x1b')](_0x49468d)[_0x5375('0x1d')](_0x354860);}};}function respondWithFilteredResult(_0x458eff,_0x1a1223){return function(_0x1c5b50){if(_0x1c5b50){var _0x5be74e=typeof _0x1a1223[_0x5375('0x1e')]===_0x5375('0x1f')&&typeof _0x1a1223[_0x5375('0x20')]===_0x5375('0x1f');var _0x2d6819=_0x1c5b50[_0x5375('0x21')];var _0x46b80a=_0x5be74e?0x0:_0x1a1223[_0x5375('0x1e')];var _0x4b6c9a=_0x5be74e?_0x1c5b50[_0x5375('0x21')]:_0x1a1223[_0x5375('0x1e')]+_0x1a1223['limit'];var _0x3e3486;if(_0x4b6c9a>=_0x2d6819){_0x4b6c9a=_0x2d6819;_0x3e3486=0xc8;}else{_0x3e3486=0xce;}_0x458eff[_0x5375('0x1b')](_0x3e3486);return _0x458eff[_0x5375('0x22')](_0x5375('0x23'),_0x46b80a+'-'+_0x4b6c9a+'/'+_0x2d6819)[_0x5375('0x1d')](_0x1c5b50);}return null;};}function patchUpdates(_0x342cb0){return function(_0x5d8cf0){try{jsonpatch[_0x5375('0x24')](_0x5d8cf0,_0x342cb0,!![]);}catch(_0x4cc944){return BPromise[_0x5375('0x25')](_0x4cc944);}return _0x5d8cf0[_0x5375('0x26')]();};}function saveUpdates(_0x3c41ef,_0x3f2c81){return function(_0x17b277){if(_0x17b277){return _0x17b277['update'](_0x3c41ef)[_0x5375('0x27')](function(_0x7dd259){return _0x7dd259;});}return null;};}function removeEntity(_0x1741d4,_0x2f39b3){return function(_0x7d4558){if(_0x7d4558){return _0x7d4558[_0x5375('0x28')]()['then'](function(){_0x1741d4[_0x5375('0x1b')](0xcc)[_0x5375('0x1c')]();});}};}function handleEntityNotFound(_0xcabe85,_0x10adbb){return function(_0xe55ace){if(!_0xe55ace){_0xcabe85[_0x5375('0x1a')](0x194);}return _0xe55ace;};}function handleError(_0x3e301b,_0x37b465){_0x37b465=_0x37b465||0x1f4;return function(_0x38dc24){logger[_0x5375('0x29')](_0x38dc24[_0x5375('0x2a')]);if(_0x38dc24[_0x5375('0x2b')]){delete _0x38dc24[_0x5375('0x2b')];}_0x3e301b[_0x5375('0x1b')](_0x37b465)[_0x5375('0x2c')](_0x38dc24);};}exports['index']=function(_0x3f21a4,_0x3ea800){var _0x336abb={},_0x11e218={},_0x2f89a4={'count':0x0,'rows':[]};var _0x42cdde=_[_0x5375('0x2d')](db['UserProfileSection'][_0x5375('0x2e')],function(_0x41dbb3){return{'name':_0x41dbb3[_0x5375('0x2f')],'type':_0x41dbb3['type'][_0x5375('0x30')]};});_0x11e218[_0x5375('0x31')]=_[_0x5375('0x2d')](_0x42cdde,'name');_0x11e218[_0x5375('0x32')]=_[_0x5375('0x33')](_0x3f21a4[_0x5375('0x32')]);_0x11e218['filters']=_['intersection'](_0x11e218[_0x5375('0x31')],_0x11e218[_0x5375('0x32')]);_0x336abb[_0x5375('0x34')]=_['intersection'](_0x11e218[_0x5375('0x31')],qs[_0x5375('0x35')](_0x3f21a4[_0x5375('0x32')][_0x5375('0x35')]));_0x336abb['attributes']=_0x336abb[_0x5375('0x34')][_0x5375('0x36')]?_0x336abb[_0x5375('0x34')]:_0x11e218['model'];if(!_0x3f21a4[_0x5375('0x32')][_0x5375('0x37')](_0x5375('0x38'))){_0x336abb['limit']=qs['limit'](_0x3f21a4[_0x5375('0x32')]['limit']);_0x336abb[_0x5375('0x1e')]=qs[_0x5375('0x1e')](_0x3f21a4[_0x5375('0x32')]['offset']);}_0x336abb['order']=qs[_0x5375('0x39')](_0x3f21a4[_0x5375('0x32')]['sort']);_0x336abb['where']=qs[_0x5375('0x3a')](_[_0x5375('0x3b')](_0x3f21a4[_0x5375('0x32')],_0x11e218[_0x5375('0x3a')]),_0x42cdde);if(_0x3f21a4['query'][_0x5375('0x3c')]){_0x336abb[_0x5375('0x3d')]=_[_0x5375('0x3e')](_0x336abb['where'],{'$or':_[_0x5375('0x2d')](_0x42cdde,function(_0x199095){if(_0x199095['type']!==_0x5375('0x3f')){var _0x1e3c92={};_0x1e3c92[_0x199095[_0x5375('0x2b')]]={'$like':'%'+_0x3f21a4[_0x5375('0x32')][_0x5375('0x3c')]+'%'};return _0x1e3c92;}})});}_0x336abb=_[_0x5375('0x3e')]({},_0x336abb,_0x3f21a4[_0x5375('0x40')]);var _0x379a86={'where':_0x336abb[_0x5375('0x3d')]};return db['UserProfileSection'][_0x5375('0x21')](_0x379a86)[_0x5375('0x27')](function(_0x3deb7c){_0x2f89a4['count']=_0x3deb7c;if(_0x3f21a4['query'][_0x5375('0x41')]){_0x336abb[_0x5375('0x42')]=[{'all':!![]}];}return db['UserProfileSection'][_0x5375('0x43')](_0x336abb);})[_0x5375('0x27')](function(_0x13cd61){_0x2f89a4[_0x5375('0x44')]=_0x13cd61;return _0x2f89a4;})[_0x5375('0x27')](respondWithFilteredResult(_0x3ea800,_0x336abb))[_0x5375('0x45')](handleError(_0x3ea800,null));};exports[_0x5375('0x46')]=function(_0x4fdbd6,_0x28dc9e){var _0x38d66f={'raw':![],'where':{'id':_0x4fdbd6['params']['id']}},_0x83da5f={};_0x83da5f[_0x5375('0x31')]=_[_0x5375('0x33')](db[_0x5375('0x47')][_0x5375('0x2e')]);_0x83da5f[_0x5375('0x32')]=_[_0x5375('0x33')](_0x4fdbd6['query']);_0x83da5f[_0x5375('0x3a')]=_[_0x5375('0x48')](_0x83da5f[_0x5375('0x31')],_0x83da5f['query']);_0x38d66f[_0x5375('0x34')]=_[_0x5375('0x48')](_0x83da5f[_0x5375('0x31')],qs[_0x5375('0x35')](_0x4fdbd6[_0x5375('0x32')][_0x5375('0x35')]));_0x38d66f[_0x5375('0x34')]=_0x38d66f['attributes']['length']?_0x38d66f[_0x5375('0x34')]:_0x83da5f[_0x5375('0x31')];if(_0x4fdbd6[_0x5375('0x32')][_0x5375('0x41')]){_0x38d66f['include']=[{'all':!![]}];}_0x38d66f=_[_0x5375('0x3e')]({},_0x38d66f,_0x4fdbd6[_0x5375('0x40')]);return db[_0x5375('0x47')]['find'](_0x38d66f)[_0x5375('0x27')](handleEntityNotFound(_0x28dc9e,null))[_0x5375('0x27')](respondWithResult(_0x28dc9e,null))['catch'](handleError(_0x28dc9e,null));};exports[_0x5375('0x49')]=function(_0x435ba2,_0x4bd74d){return db[_0x5375('0x47')][_0x5375('0x49')](_0x435ba2[_0x5375('0x4a')],{})[_0x5375('0x27')](respondWithResult(_0x4bd74d,0xc9))[_0x5375('0x45')](handleError(_0x4bd74d,null));};exports[_0x5375('0x4b')]=function(_0x4d605e,_0x2a97ad){if(_0x4d605e[_0x5375('0x4a')]['id']){delete _0x4d605e['body']['id'];}return db[_0x5375('0x47')][_0x5375('0x4c')]({'where':{'id':_0x4d605e[_0x5375('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2a97ad,null))[_0x5375('0x27')](saveUpdates(_0x4d605e['body'],null))[_0x5375('0x27')](respondWithResult(_0x2a97ad,null))['catch'](handleError(_0x2a97ad,null));};exports['destroy']=function(_0x28a84c,_0x5e2e32){return db[_0x5375('0x47')][_0x5375('0x4c')]({'where':{'id':_0x28a84c['params']['id']}})[_0x5375('0x27')](handleEntityNotFound(_0x5e2e32,null))['then'](removeEntity(_0x5e2e32,null))[_0x5375('0x45')](handleError(_0x5e2e32,null));};exports[_0x5375('0x4e')]=function(_0xa500cf,_0x55bce4){return db[_0x5375('0x47')][_0x5375('0x4e')]()[_0x5375('0x27')](respondWithResult(_0x55bce4,null))[_0x5375('0x45')](handleError(_0x55bce4,null));};
\ No newline at end of file
+var _0x408d=['limit','count','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','UserProfileSection','fieldName','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','catch','show','params','rawAttributes','fields','options','find','create','body','destroy','describe','zip-dir','request-promise','mustache','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/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined'];(function(_0x4d576e,_0x3dc877){var _0x11749b=function(_0xce6a1b){while(--_0xce6a1b){_0x4d576e['push'](_0x4d576e['shift']());}};_0x11749b(++_0x3dc877);}(_0x408d,0xc3));var _0xd408=function(_0x440464,_0xb7afd8){_0x440464=_0x440464-0x0;var _0x2f4043=_0x408d[_0x440464];return _0x2f4043;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd408('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd408('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd408('0x2'));var util=require('util');var path=require(_0xd408('0x3'));var sox=require(_0xd408('0x4'));var csv=require(_0xd408('0x5'));var ejs=require(_0xd408('0x6'));var fs=require('fs');var fs_extra=require(_0xd408('0x7'));var _=require(_0xd408('0x8'));var squel=require(_0xd408('0x9'));var crypto=require(_0xd408('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd408('0xb'));var toCsv=require(_0xd408('0x5'));var querystring=require(_0xd408('0xc'));var Papa=require(_0xd408('0xd'));var Redis=require(_0xd408('0xe'));var authService=require(_0xd408('0xf'));var qs=require(_0xd408('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd408('0x11'));var logger=require(_0xd408('0x12'))('api');var utils=require(_0xd408('0x13'));var config=require(_0xd408('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd408('0x15'))['db'];function respondWithStatusCode(_0x543cbd,_0x40007){_0x40007=_0x40007||0xcc;return function(_0x16bada){if(_0x16bada){return _0x543cbd['sendStatus'](_0x40007);}return _0x543cbd[_0xd408('0x16')](_0x40007)[_0xd408('0x17')]();};}function respondWithResult(_0x207513,_0x14da87){_0x14da87=_0x14da87||0xc8;return function(_0x43171d){if(_0x43171d){return _0x207513['status'](_0x14da87)[_0xd408('0x18')](_0x43171d);}};}function respondWithFilteredResult(_0x1bc660,_0x1e0126){return function(_0x2a5ffd){if(_0x2a5ffd){var _0x43cfd4=typeof _0x1e0126[_0xd408('0x19')]===_0xd408('0x1a')&&typeof _0x1e0126[_0xd408('0x1b')]===_0xd408('0x1a');var _0x56e548=_0x2a5ffd[_0xd408('0x1c')];var _0x4ef493=_0x43cfd4?0x0:_0x1e0126['offset'];var _0x525f4a=_0x43cfd4?_0x2a5ffd[_0xd408('0x1c')]:_0x1e0126[_0xd408('0x19')]+_0x1e0126['limit'];var _0x47c535;if(_0x525f4a>=_0x56e548){_0x525f4a=_0x56e548;_0x47c535=0xc8;}else{_0x47c535=0xce;}_0x1bc660[_0xd408('0x16')](_0x47c535);return _0x1bc660[_0xd408('0x1d')]('Content-Range',_0x4ef493+'-'+_0x525f4a+'/'+_0x56e548)[_0xd408('0x18')](_0x2a5ffd);}return null;};}function patchUpdates(_0x26c18f){return function(_0x4f77db){try{jsonpatch[_0xd408('0x1e')](_0x4f77db,_0x26c18f,!![]);}catch(_0x1064b4){return BPromise[_0xd408('0x1f')](_0x1064b4);}return _0x4f77db[_0xd408('0x20')]();};}function saveUpdates(_0x4f581e,_0x58a40d){return function(_0x4bd4f3){if(_0x4bd4f3){return _0x4bd4f3[_0xd408('0x21')](_0x4f581e)[_0xd408('0x22')](function(_0x1ef539){return _0x1ef539;});}return null;};}function removeEntity(_0x167ec9,_0x93eca9){return function(_0x471d7e){if(_0x471d7e){return _0x471d7e['destroy']()[_0xd408('0x22')](function(){_0x167ec9[_0xd408('0x16')](0xcc)[_0xd408('0x17')]();});}};}function handleEntityNotFound(_0x2dcbe3,_0x33c665){return function(_0x1befb6){if(!_0x1befb6){_0x2dcbe3[_0xd408('0x23')](0x194);}return _0x1befb6;};}function handleError(_0x47d3f7,_0x4a5db0){_0x4a5db0=_0x4a5db0||0x1f4;return function(_0x43456a){logger[_0xd408('0x24')](_0x43456a[_0xd408('0x25')]);if(_0x43456a['name']){delete _0x43456a[_0xd408('0x26')];}_0x47d3f7[_0xd408('0x16')](_0x4a5db0)[_0xd408('0x27')](_0x43456a);};}exports[_0xd408('0x28')]=function(_0x15bbc6,_0x2f3501){var _0x10032c={},_0x5a4a0f={},_0x118613={'count':0x0,'rows':[]};var _0x10deaf=_[_0xd408('0x29')](db[_0xd408('0x2a')]['rawAttributes'],function(_0x16647d){return{'name':_0x16647d[_0xd408('0x2b')],'type':_0x16647d['type'][_0xd408('0x2c')]};});_0x5a4a0f[_0xd408('0x2d')]=_['map'](_0x10deaf,_0xd408('0x26'));_0x5a4a0f['query']=_[_0xd408('0x2e')](_0x15bbc6[_0xd408('0x2f')]);_0x5a4a0f[_0xd408('0x30')]=_[_0xd408('0x31')](_0x5a4a0f[_0xd408('0x2d')],_0x5a4a0f[_0xd408('0x2f')]);_0x10032c[_0xd408('0x32')]=_[_0xd408('0x31')](_0x5a4a0f['model'],qs['fields'](_0x15bbc6['query']['fields']));_0x10032c[_0xd408('0x32')]=_0x10032c[_0xd408('0x32')][_0xd408('0x33')]?_0x10032c[_0xd408('0x32')]:_0x5a4a0f[_0xd408('0x2d')];if(!_0x15bbc6[_0xd408('0x2f')][_0xd408('0x34')](_0xd408('0x35'))){_0x10032c['limit']=qs[_0xd408('0x1b')](_0x15bbc6['query'][_0xd408('0x1b')]);_0x10032c[_0xd408('0x19')]=qs[_0xd408('0x19')](_0x15bbc6[_0xd408('0x2f')][_0xd408('0x19')]);}_0x10032c[_0xd408('0x36')]=qs['sort'](_0x15bbc6[_0xd408('0x2f')][_0xd408('0x37')]);_0x10032c['where']=qs[_0xd408('0x30')](_[_0xd408('0x38')](_0x15bbc6[_0xd408('0x2f')],_0x5a4a0f[_0xd408('0x30')]),_0x10deaf);if(_0x15bbc6[_0xd408('0x2f')][_0xd408('0x39')]){_0x10032c['where']=_[_0xd408('0x3a')](_0x10032c[_0xd408('0x3b')],{'$or':_[_0xd408('0x29')](_0x10deaf,function(_0x32172b){if(_0x32172b['type']!==_0xd408('0x3c')){var _0x1a9f0d={};_0x1a9f0d[_0x32172b[_0xd408('0x26')]]={'$like':'%'+_0x15bbc6[_0xd408('0x2f')]['filter']+'%'};return _0x1a9f0d;}})});}_0x10032c=_[_0xd408('0x3a')]({},_0x10032c,_0x15bbc6['options']);var _0x5bcea1={'where':_0x10032c['where']};return db[_0xd408('0x2a')][_0xd408('0x1c')](_0x5bcea1)[_0xd408('0x22')](function(_0x5e310f){_0x118613[_0xd408('0x1c')]=_0x5e310f;if(_0x15bbc6[_0xd408('0x2f')][_0xd408('0x3d')]){_0x10032c[_0xd408('0x3e')]=[{'all':!![]}];}return db[_0xd408('0x2a')]['findAll'](_0x10032c);})[_0xd408('0x22')](function(_0x541f69){_0x118613['rows']=_0x541f69;return _0x118613;})['then'](respondWithFilteredResult(_0x2f3501,_0x10032c))[_0xd408('0x3f')](handleError(_0x2f3501,null));};exports[_0xd408('0x40')]=function(_0xfb9676,_0xc441c1){var _0x45226b={'raw':![],'where':{'id':_0xfb9676[_0xd408('0x41')]['id']}},_0x2cbea4={};_0x2cbea4[_0xd408('0x2d')]=_[_0xd408('0x2e')](db[_0xd408('0x2a')][_0xd408('0x42')]);_0x2cbea4[_0xd408('0x2f')]=_[_0xd408('0x2e')](_0xfb9676[_0xd408('0x2f')]);_0x2cbea4[_0xd408('0x30')]=_[_0xd408('0x31')](_0x2cbea4['model'],_0x2cbea4['query']);_0x45226b['attributes']=_[_0xd408('0x31')](_0x2cbea4['model'],qs[_0xd408('0x43')](_0xfb9676[_0xd408('0x2f')][_0xd408('0x43')]));_0x45226b[_0xd408('0x32')]=_0x45226b['attributes'][_0xd408('0x33')]?_0x45226b[_0xd408('0x32')]:_0x2cbea4[_0xd408('0x2d')];if(_0xfb9676[_0xd408('0x2f')][_0xd408('0x3d')]){_0x45226b[_0xd408('0x3e')]=[{'all':!![]}];}_0x45226b=_[_0xd408('0x3a')]({},_0x45226b,_0xfb9676[_0xd408('0x44')]);return db[_0xd408('0x2a')][_0xd408('0x45')](_0x45226b)[_0xd408('0x22')](handleEntityNotFound(_0xc441c1,null))[_0xd408('0x22')](respondWithResult(_0xc441c1,null))[_0xd408('0x3f')](handleError(_0xc441c1,null));};exports[_0xd408('0x46')]=function(_0x11d178,_0x223e3e){return db[_0xd408('0x2a')][_0xd408('0x46')](_0x11d178[_0xd408('0x47')],{})['then'](respondWithResult(_0x223e3e,0xc9))['catch'](handleError(_0x223e3e,null));};exports[_0xd408('0x21')]=function(_0x113910,_0x5b1651){if(_0x113910[_0xd408('0x47')]['id']){delete _0x113910[_0xd408('0x47')]['id'];}return db['UserProfileSection'][_0xd408('0x45')]({'where':{'id':_0x113910[_0xd408('0x41')]['id']}})[_0xd408('0x22')](handleEntityNotFound(_0x5b1651,null))['then'](saveUpdates(_0x113910[_0xd408('0x47')],null))[_0xd408('0x22')](respondWithResult(_0x5b1651,null))[_0xd408('0x3f')](handleError(_0x5b1651,null));};exports[_0xd408('0x48')]=function(_0xfbf144,_0x1608db){return db[_0xd408('0x2a')][_0xd408('0x45')]({'where':{'id':_0xfbf144[_0xd408('0x41')]['id']}})[_0xd408('0x22')](handleEntityNotFound(_0x1608db,null))['then'](removeEntity(_0x1608db,null))[_0xd408('0x3f')](handleError(_0x1608db,null));};exports['describe']=function(_0x2ec4ff,_0x35cc25){return db['UserProfileSection'][_0xd408('0x49')]()[_0xd408('0x22')](respondWithResult(_0x35cc25,null))[_0xd408('0x3f')](handleError(_0x35cc25,null));};
\ No newline at end of file
index 6d3d438..16a91fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42d2=['moment','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','UserProfileSection','compositeIndex','sectionId','userProfileId','util','../../config/logger','api'];(function(_0x407e59,_0x361985){var _0x5d1126=function(_0x3d794b){while(--_0x3d794b){_0x407e59['push'](_0x407e59['shift']());}};_0x5d1126(++_0x361985);}(_0x42d2,0x1aa));var _0x242d=function(_0xba1760,_0x191969){_0xba1760=_0xba1760-0x0;var _0x1f3143=_0x42d2[_0xba1760];return _0x1f3143;};'use strict';var _=require('lodash');var util=require(_0x242d('0x0'));var logger=require(_0x242d('0x1'))(_0x242d('0x2'));var moment=require(_0x242d('0x3'));var BPromise=require('bluebird');var rp=require(_0x242d('0x4'));var fs=require('fs');var path=require(_0x242d('0x5'));var rimraf=require(_0x242d('0x6'));var config=require(_0x242d('0x7'));var attributes=require(_0x242d('0x8'));module['exports']=function(_0x1114cd,_0x543be5){return _0x1114cd['define'](_0x242d('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x242d('0xa'),'fields':[_0x242d('0xb'),_0x242d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa331=['./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','userProfileId','lodash','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x39adcb,_0x41e2d2){var _0x1552d8=function(_0x282611){while(--_0x282611){_0x39adcb['push'](_0x39adcb['shift']());}};_0x1552d8(++_0x41e2d2);}(_0xa331,0x11a));var _0x1a33=function(_0x325358,_0x62452a){_0x325358=_0x325358-0x0;var _0xeca104=_0xa331[_0x325358];return _0xeca104;};'use strict';var _=require(_0x1a33('0x0'));var util=require('util');var logger=require(_0x1a33('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1a33('0x2'));var rp=require(_0x1a33('0x3'));var fs=require('fs');var path=require(_0x1a33('0x4'));var rimraf=require(_0x1a33('0x5'));var config=require('../../config/environment');var attributes=require(_0x1a33('0x6'));module[_0x1a33('0x7')]=function(_0x1fb8d4,_0x18ff81){return _0x1fb8d4[_0x1a33('0x8')](_0x1a33('0x9'),attributes,{'tableName':_0x1a33('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId',_0x1a33('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d7da9c0..081a034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d75=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','result'];(function(_0x5f39fc,_0x375794){var _0x16aaf0=function(_0xaf7371){while(--_0xaf7371){_0x5f39fc['push'](_0x5f39fc['shift']());}};_0x16aaf0(++_0x375794);}(_0x0d75,0x91));var _0x50d7=function(_0x3af320,_0x39bcc5){_0x3af320=_0x3af320-0x0;var _0x292b1a=_0x0d75[_0x3af320];return _0x292b1a;};'use strict';var _=require(_0x50d7('0x0'));var util=require(_0x50d7('0x1'));var moment=require(_0x50d7('0x2'));var BPromise=require('bluebird');var rs=require(_0x50d7('0x3'));var fs=require('fs');var Redis=require(_0x50d7('0x4'));var db=require(_0x50d7('0x5'))['db'];var utils=require(_0x50d7('0x6'));var logger=require('../../config/logger')(_0x50d7('0x7'));var config=require(_0x50d7('0x8'));var jayson=require(_0x50d7('0x9'));var client=jayson[_0x50d7('0xa')][_0x50d7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5872e7,_0x5960dd,_0x4885e2){return new BPromise(function(_0x10db0b,_0x1bc34b){return client[_0x50d7('0xc')](_0x5872e7,_0x4885e2)['then'](function(_0x12caa9){logger[_0x50d7('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x5960dd,'request\x20sent');logger[_0x50d7('0xe')](_0x50d7('0xf'),_0x5960dd,_0x50d7('0x10'),JSON[_0x50d7('0x11')](_0x12caa9));if(_0x12caa9[_0x50d7('0x12')]){if(_0x12caa9['error'][_0x50d7('0x13')]===0x1f4){logger[_0x50d7('0x12')](_0x50d7('0x14'),_0x5960dd,_0x12caa9[_0x50d7('0x12')][_0x50d7('0x15')]);return _0x1bc34b(_0x12caa9[_0x50d7('0x12')]['message']);}logger['error'](_0x50d7('0x14'),_0x5960dd,_0x12caa9['error'][_0x50d7('0x15')]);return _0x10db0b(_0x12caa9[_0x50d7('0x12')][_0x50d7('0x15')]);}else{logger['info'](_0x50d7('0x14'),_0x5960dd,_0x50d7('0x10'));_0x10db0b(_0x12caa9[_0x50d7('0x16')]['message']);}})[_0x50d7('0x17')](function(_0xdcb3f6){logger[_0x50d7('0x12')](_0x50d7('0x14'),_0x5960dd,_0xdcb3f6);_0x1bc34b(_0xdcb3f6);});});}
\ No newline at end of file
+var _0xae16=['debug','stringify','error','code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent'];(function(_0x366be3,_0x4d0600){var _0x3d2b7f=function(_0x107e0d){while(--_0x107e0d){_0x366be3['push'](_0x366be3['shift']());}};_0x3d2b7f(++_0x4d0600);}(_0xae16,0xee));var _0x6ae1=function(_0x41ee01,_0x40d3a0){_0x41ee01=_0x41ee01-0x0;var _0x402117=_0xae16[_0x41ee01];return _0x402117;};'use strict';var _=require(_0x6ae1('0x0'));var util=require('util');var moment=require(_0x6ae1('0x1'));var BPromise=require('bluebird');var rs=require(_0x6ae1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6ae1('0x3'));var logger=require(_0x6ae1('0x4'))(_0x6ae1('0x5'));var config=require(_0x6ae1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6ae1('0x7')][_0x6ae1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17f788,_0x15cf4e,_0x4744d4){return new BPromise(function(_0x46b311,_0x383c32){return client[_0x6ae1('0x9')](_0x17f788,_0x4744d4)[_0x6ae1('0xa')](function(_0x55230d){logger[_0x6ae1('0xb')](_0x6ae1('0xc'),_0x15cf4e,_0x6ae1('0xd'));logger[_0x6ae1('0xe')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x15cf4e,_0x6ae1('0xd'),JSON[_0x6ae1('0xf')](_0x55230d));if(_0x55230d[_0x6ae1('0x10')]){if(_0x55230d['error'][_0x6ae1('0x11')]===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x15cf4e,_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);return _0x383c32(_0x55230d['error'][_0x6ae1('0x12')]);}logger[_0x6ae1('0x10')](_0x6ae1('0xc'),_0x15cf4e,_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);return _0x46b311(_0x55230d[_0x6ae1('0x10')][_0x6ae1('0x12')]);}else{logger['info'](_0x6ae1('0xc'),_0x15cf4e,_0x6ae1('0xd'));_0x46b311(_0x55230d[_0x6ae1('0x13')]['message']);}})[_0x6ae1('0x14')](function(_0x30b2ff){logger[_0x6ae1('0x10')](_0x6ae1('0xc'),_0x15cf4e,_0x30b2ff);_0x383c32(_0x30b2ff);});});}
\ No newline at end of file
index 961c255..4b26246 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(_0x1cbd1b,_0x1898df){var _0x3df9c4=function(_0x1b13af){while(--_0x1b13af){_0x1cbd1b['push'](_0x1cbd1b['shift']());}};_0x3df9c4(++_0x1898df);}(_0x70e0,0x17b));var _0x070e=function(_0x3e32d6,_0x1b6202){_0x3e32d6=_0x3e32d6-0x0;var _0x53a7c6=_0x70e0[_0x3e32d6];return _0x53a7c6;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x38adea,_0x97d455){var _0x3ea832=function(_0x53f5c4){while(--_0x53f5c4){_0x38adea['push'](_0x38adea['shift']());}};_0x3ea832(++_0x97d455);}(_0xe706,0xa3));var _0x6e70=function(_0x159152,_0x174251){_0x159152=_0x159152-0x0;var _0x50a4aa=_0xe706[_0x159152];return _0x50a4aa;};'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 1a3025c..a6ca105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a7=['exports','INTEGER','sequelize'];(function(_0x59223a,_0xd0cc2c){var _0x10d016=function(_0x5f4cc3){while(--_0x5f4cc3){_0x59223a['push'](_0x59223a['shift']());}};_0x10d016(++_0xd0cc2c);}(_0x54a7,0xe9));var _0x754a=function(_0xe0b10a,_0x55f82b){_0xe0b10a=_0xe0b10a-0x0;var _0x3e9635=_0x54a7[_0xe0b10a];return _0x3e9635;};'use strict';var Sequelize=require(_0x754a('0x0'));module[_0x754a('0x1')]={'penalty':{'type':Sequelize[_0x754a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd25b=['INTEGER','sequelize'];(function(_0x1e4593,_0x4dca85){var _0x4e8061=function(_0xe7d247){while(--_0xe7d247){_0x1e4593['push'](_0x1e4593['shift']());}};_0x4e8061(++_0x4dca85);}(_0xd25b,0x7d));var _0xbd25=function(_0x4d3853,_0x1091e1){_0x4d3853=_0x4d3853-0x0;var _0xbdac9=_0xd25b[_0x4d3853];return _0xbdac9;};'use strict';var Sequelize=require(_0xbd25('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xbd25('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 8654f7c..1c9b16e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['util','api','moment','request-promise','path','rimraf','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash'];(function(_0x54edc9,_0x345f01){var _0x2ae7a9=function(_0x24a545){while(--_0x24a545){_0x54edc9['push'](_0x54edc9['shift']());}};_0x2ae7a9(++_0x345f01);}(_0xdf55,0x83));var _0x5df5=function(_0x1fafa5,_0x1aa281){_0x1fafa5=_0x1fafa5-0x0;var _0xcf08c9=_0xdf55[_0x1fafa5];return _0xcf08c9;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var logger=require('../../config/logger')(_0x5df5('0x2'));var moment=require(_0x5df5('0x3'));var BPromise=require('bluebird');var rp=require(_0x5df5('0x4'));var fs=require('fs');var path=require(_0x5df5('0x5'));var rimraf=require(_0x5df5('0x6'));var config=require('../../config/environment');var attributes=require(_0x5df5('0x7'));module[_0x5df5('0x8')]=function(_0x27ec86,_0x476e21){return _0x27ec86[_0x5df5('0x9')](_0x5df5('0xa'),attributes,{'tableName':_0x5df5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4819=['user_has_sms_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','UserSmsQueue'];(function(_0x5393cd,_0x12006b){var _0x18d09d=function(_0x49357a){while(--_0x49357a){_0x5393cd['push'](_0x5393cd['shift']());}};_0x18d09d(++_0x12006b);}(_0x4819,0xcd));var _0x9481=function(_0x4fe566,_0x93c45f){_0x4fe566=_0x4fe566-0x0;var _0x5e38e0=_0x4819[_0x4fe566];return _0x5e38e0;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var logger=require(_0x9481('0x1'))(_0x9481('0x2'));var moment=require(_0x9481('0x3'));var BPromise=require(_0x9481('0x4'));var rp=require(_0x9481('0x5'));var fs=require('fs');var path=require(_0x9481('0x6'));var rimraf=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var attributes=require(_0x9481('0x9'));module['exports']=function(_0x4d9e3a,_0x5def07){return _0x4d9e3a['define'](_0x9481('0xa'),attributes,{'tableName':_0x9481('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85a1161..6c94529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2394=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment'];(function(_0x54defc,_0x627178){var _0x1955d3=function(_0x299afe){while(--_0x299afe){_0x54defc['push'](_0x54defc['shift']());}};_0x1955d3(++_0x627178);}(_0x2394,0x9e));var _0x4239=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0x2394[_0xd578cb];return _0x775533;};'use strict';var _=require(_0x4239('0x0'));var util=require(_0x4239('0x1'));var moment=require(_0x4239('0x2'));var BPromise=require(_0x4239('0x3'));var rs=require(_0x4239('0x4'));var fs=require('fs');var Redis=require(_0x4239('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4239('0x6'))(_0x4239('0x7'));var config=require(_0x4239('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4239('0x9')][_0x4239('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x466f9b,_0x22117b,_0x42ef86){return new BPromise(function(_0x47e0e0,_0x465356){return client[_0x4239('0xb')](_0x466f9b,_0x42ef86)[_0x4239('0xc')](function(_0x2b5da5){logger[_0x4239('0xd')](_0x4239('0xe'),_0x22117b,_0x4239('0xf'));logger[_0x4239('0x10')](_0x4239('0x11'),_0x22117b,'request\x20sent',JSON['stringify'](_0x2b5da5));if(_0x2b5da5[_0x4239('0x12')]){if(_0x2b5da5[_0x4239('0x12')][_0x4239('0x13')]===0x1f4){logger['error'](_0x4239('0xe'),_0x22117b,_0x2b5da5['error']['message']);return _0x465356(_0x2b5da5[_0x4239('0x12')]['message']);}logger[_0x4239('0x12')](_0x4239('0xe'),_0x22117b,_0x2b5da5[_0x4239('0x12')][_0x4239('0x14')]);return _0x47e0e0(_0x2b5da5[_0x4239('0x12')][_0x4239('0x14')]);}else{logger[_0x4239('0xd')](_0x4239('0xe'),_0x22117b,_0x4239('0xf'));_0x47e0e0(_0x2b5da5[_0x4239('0x15')][_0x4239('0x14')]);}})[_0x4239('0x16')](function(_0x2517a8){logger[_0x4239('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x22117b,_0x2517a8);_0x465356(_0x2517a8);});});}
\ No newline at end of file
+var _0xa9c1=['../../config/logger','rpc','jayson/promise','http','request','then','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserSmsQueue,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4f4e6d,_0x16d20e){var _0x1e9ac7=function(_0x2aae6a){while(--_0x2aae6a){_0x4f4e6d['push'](_0x4f4e6d['shift']());}};_0x1e9ac7(++_0x16d20e);}(_0xa9c1,0xf2));var _0x1a9c=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xa9c1[_0x53cf8e];return _0x459197;};'use strict';var _=require(_0x1a9c('0x0'));var util=require(_0x1a9c('0x1'));var moment=require(_0x1a9c('0x2'));var BPromise=require(_0x1a9c('0x3'));var rs=require(_0x1a9c('0x4'));var fs=require('fs');var Redis=require(_0x1a9c('0x5'));var db=require(_0x1a9c('0x6'))['db'];var utils=require(_0x1a9c('0x7'));var logger=require(_0x1a9c('0x8'))(_0x1a9c('0x9'));var config=require('../../config/environment');var jayson=require(_0x1a9c('0xa'));var client=jayson['client'][_0x1a9c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x157806,_0x6939f4,_0x4651fa){return new BPromise(function(_0x193ce1,_0x449d5d){return client[_0x1a9c('0xc')](_0x157806,_0x4651fa)[_0x1a9c('0xd')](function(_0x704e5){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x1a9c('0xe'));logger[_0x1a9c('0xf')](_0x1a9c('0x10'),_0x6939f4,_0x1a9c('0xe'),JSON[_0x1a9c('0x11')](_0x704e5));if(_0x704e5['error']){if(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x13')]===0x1f4){logger[_0x1a9c('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);return _0x449d5d(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);}logger[_0x1a9c('0x12')](_0x1a9c('0x15'),_0x6939f4,_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);return _0x193ce1(_0x704e5[_0x1a9c('0x12')][_0x1a9c('0x14')]);}else{logger[_0x1a9c('0x16')](_0x1a9c('0x15'),_0x6939f4,_0x1a9c('0xe'));_0x193ce1(_0x704e5[_0x1a9c('0x17')][_0x1a9c('0x14')]);}})[_0x1a9c('0x18')](function(_0x5bc783){logger[_0x1a9c('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x6939f4,_0x5bc783);_0x449d5d(_0x5bc783);});});}
\ No newline at end of file
index a253b71..3a53db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3afc=['INTEGER','sequelize','exports'];(function(_0x18d5d7,_0x19074b){var _0x30a9ea=function(_0x514f3f){while(--_0x514f3f){_0x18d5d7['push'](_0x18d5d7['shift']());}};_0x30a9ea(++_0x19074b);}(_0x3afc,0xc1));var _0xc3af=function(_0x460eae,_0x503ef0){_0x460eae=_0x460eae-0x0;var _0x40b950=_0x3afc[_0x460eae];return _0x40b950;};'use strict';var Sequelize=require(_0xc3af('0x0'));module[_0xc3af('0x1')]={'UserId':{'type':Sequelize[_0xc3af('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x3652=['sequelize','INTEGER'];(function(_0x4ebf43,_0x3716cf){var _0x2b50b7=function(_0x476b20){while(--_0x476b20){_0x4ebf43['push'](_0x4ebf43['shift']());}};_0x2b50b7(++_0x3716cf);}(_0x3652,0xd0));var _0x2365=function(_0x4a93bb,_0x495404){_0x4a93bb=_0x4a93bb-0x0;var _0x208468=_0x3652[_0x4a93bb];return _0x208468;};'use strict';var Sequelize=require(_0x2365('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x2365('0x1')]}};
\ No newline at end of file
index 8d4c46a..2014c82 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(_0x4dda36,_0x401959){var _0x418826=function(_0x32988b){while(--_0x32988b){_0x4dda36['push'](_0x4dda36['shift']());}};_0x418826(++_0x401959);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'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(_0x2f6f67,_0x3a6817){var _0x2c0da2=function(_0x8175e){while(--_0x8175e){_0x2f6f67['push'](_0x2f6f67['shift']());}};_0x2c0da2(++_0x3a6817);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8974ae1..290eb4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2ea16f,_0x2ff17b){var _0x4bed24=function(_0x26a3a5){while(--_0x26a3a5){_0x2ea16f['push'](_0x2ea16f['shift']());}};_0x4bed24(++_0x2ff17b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0xcb91[_0x352e09];return _0x1b7094;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x13becb,_0x58fdb5){var _0x539864=function(_0x33443c){while(--_0x33443c){_0x13becb['push'](_0x13becb['shift']());}};_0x539864(++_0x58fdb5);}(_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 e3d2097..e90f277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x033f=['sequelize','exports','INTEGER'];(function(_0x3abb03,_0x4eb2e6){var _0x26cfe0=function(_0x228092){while(--_0x228092){_0x3abb03['push'](_0x3abb03['shift']());}};_0x26cfe0(++_0x4eb2e6);}(_0x033f,0x135));var _0xf033=function(_0x131604,_0x475a68){_0x131604=_0x131604-0x0;var _0x4a2aea=_0x033f[_0x131604];return _0x4a2aea;};'use strict';var Sequelize=require(_0xf033('0x0'));module[_0xf033('0x1')]={'penalty':{'type':Sequelize[_0xf033('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5d87=['exports','INTEGER'];(function(_0x488623,_0x23228c){var _0x25bba8=function(_0x1753b6){while(--_0x1753b6){_0x488623['push'](_0x488623['shift']());}};_0x25bba8(++_0x23228c);}(_0x5d87,0x1b0));var _0x75d8=function(_0x44d163,_0x29d801){_0x44d163=_0x44d163-0x0;var _0x46d6d8=_0x5d87[_0x44d163];return _0x46d6d8;};'use strict';var Sequelize=require('sequelize');module[_0x75d8('0x0')]={'penalty':{'type':Sequelize[_0x75d8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 1ce1fec..c041c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e4c=['api','moment','bluebird','request-promise','path','rimraf','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','util','../../config/logger'];(function(_0x5333a2,_0x3ce220){var _0xcb090e=function(_0x4542fd){while(--_0x4542fd){_0x5333a2['push'](_0x5333a2['shift']());}};_0xcb090e(++_0x3ce220);}(_0x2e4c,0x1df));var _0xc2e4=function(_0xa60623,_0x2d4e4f){_0xa60623=_0xa60623-0x0;var _0x4a6487=_0x2e4c[_0xa60623];return _0x4a6487;};'use strict';var _=require('lodash');var util=require(_0xc2e4('0x0'));var logger=require(_0xc2e4('0x1'))(_0xc2e4('0x2'));var moment=require(_0xc2e4('0x3'));var BPromise=require(_0xc2e4('0x4'));var rp=require(_0xc2e4('0x5'));var fs=require('fs');var path=require(_0xc2e4('0x6'));var rimraf=require(_0xc2e4('0x7'));var config=require('../../config/environment');var attributes=require(_0xc2e4('0x8'));module[_0xc2e4('0x9')]=function(_0x6b26d0,_0x2e234f){return _0x6b26d0[_0xc2e4('0xa')](_0xc2e4('0xb'),attributes,{'tableName':_0xc2e4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf239=['./userVoiceQueue.attributes','UserVoiceQueue','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x2ad11f,_0x3f9c6f){var _0x42a28f=function(_0x3d1ca2){while(--_0x3d1ca2){_0x2ad11f['push'](_0x2ad11f['shift']());}};_0x42a28f(++_0x3f9c6f);}(_0xf239,0x161));var _0x9f23=function(_0xed35e0,_0x3fbfa7){_0xed35e0=_0xed35e0-0x0;var _0x1dad57=_0xf239[_0xed35e0];return _0x1dad57;};'use strict';var _=require('lodash');var util=require(_0x9f23('0x0'));var logger=require('../../config/logger')(_0x9f23('0x1'));var moment=require(_0x9f23('0x2'));var BPromise=require(_0x9f23('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9f23('0x4'));var rimraf=require(_0x9f23('0x5'));var config=require(_0x9f23('0x6'));var attributes=require(_0x9f23('0x7'));module['exports']=function(_0x578241,_0x19d233){return _0x578241['define'](_0x9f23('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42f7793..92be830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bfb=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x40c849,_0xbc22a1){var _0x7d3bef=function(_0x23df0c){while(--_0x23df0c){_0x40c849['push'](_0x40c849['shift']());}};_0x7d3bef(++_0xbc22a1);}(_0x6bfb,0x91));var _0xb6bf=function(_0x1ab3a3,_0x2c1522){_0x1ab3a3=_0x1ab3a3-0x0;var _0x40154b=_0x6bfb[_0x1ab3a3];return _0x40154b;};'use strict';var _=require(_0xb6bf('0x0'));var util=require(_0xb6bf('0x1'));var moment=require(_0xb6bf('0x2'));var BPromise=require(_0xb6bf('0x3'));var rs=require(_0xb6bf('0x4'));var fs=require('fs');var Redis=require(_0xb6bf('0x5'));var db=require(_0xb6bf('0x6'))['db'];var utils=require(_0xb6bf('0x7'));var logger=require(_0xb6bf('0x8'))(_0xb6bf('0x9'));var config=require(_0xb6bf('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xb6bf('0xb')][_0xb6bf('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1eb2ee,_0xd7f7fa,_0x56e5d1){return new BPromise(function(_0x42ca82,_0x409892){return client['request'](_0x1eb2ee,_0x56e5d1)[_0xb6bf('0xd')](function(_0x4756a8){logger[_0xb6bf('0xe')](_0xb6bf('0xf'),_0xd7f7fa,_0xb6bf('0x10'));logger[_0xb6bf('0x11')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0xd7f7fa,'request\x20sent',JSON[_0xb6bf('0x12')](_0x4756a8));if(_0x4756a8[_0xb6bf('0x13')]){if(_0x4756a8[_0xb6bf('0x13')][_0xb6bf('0x14')]===0x1f4){logger[_0xb6bf('0x13')](_0xb6bf('0xf'),_0xd7f7fa,_0x4756a8[_0xb6bf('0x13')][_0xb6bf('0x15')]);return _0x409892(_0x4756a8[_0xb6bf('0x13')]['message']);}logger[_0xb6bf('0x13')](_0xb6bf('0xf'),_0xd7f7fa,_0x4756a8[_0xb6bf('0x13')][_0xb6bf('0x15')]);return _0x42ca82(_0x4756a8[_0xb6bf('0x13')]['message']);}else{logger[_0xb6bf('0xe')](_0xb6bf('0xf'),_0xd7f7fa,_0xb6bf('0x10'));_0x42ca82(_0x4756a8[_0xb6bf('0x16')][_0xb6bf('0x15')]);}})[_0xb6bf('0x17')](function(_0x47eff4){logger[_0xb6bf('0x13')](_0xb6bf('0xf'),_0xd7f7fa,_0x47eff4);_0x409892(_0x47eff4);});});}
\ No newline at end of file
+var _0x0cea=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util'];(function(_0x441f7a,_0x576321){var _0x4821da=function(_0x5c5b52){while(--_0x5c5b52){_0x441f7a['push'](_0x441f7a['shift']());}};_0x4821da(++_0x576321);}(_0x0cea,0x1cc));var _0xa0ce=function(_0x55701e,_0x25167e){_0x55701e=_0x55701e-0x0;var _0x409cf9=_0x0cea[_0x55701e];return _0x409cf9;};'use strict';var _=require(_0xa0ce('0x0'));var util=require(_0xa0ce('0x1'));var moment=require(_0xa0ce('0x2'));var BPromise=require(_0xa0ce('0x3'));var rs=require(_0xa0ce('0x4'));var fs=require('fs');var Redis=require(_0xa0ce('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0ce('0x6'));var logger=require(_0xa0ce('0x7'))(_0xa0ce('0x8'));var config=require(_0xa0ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa0ce('0xa')][_0xa0ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x516eda,_0x11d179,_0x3bcf15){return new BPromise(function(_0x2ec0ec,_0x7bbe2a){return client[_0xa0ce('0xc')](_0x516eda,_0x3bcf15)['then'](function(_0x4772e7){logger[_0xa0ce('0xd')](_0xa0ce('0xe'),_0x11d179,'request\x20sent');logger[_0xa0ce('0xf')](_0xa0ce('0x10'),_0x11d179,_0xa0ce('0x11'),JSON[_0xa0ce('0x12')](_0x4772e7));if(_0x4772e7['error']){if(_0x4772e7[_0xa0ce('0x13')]['code']===0x1f4){logger[_0xa0ce('0x13')](_0xa0ce('0xe'),_0x11d179,_0x4772e7[_0xa0ce('0x13')]['message']);return _0x7bbe2a(_0x4772e7[_0xa0ce('0x13')][_0xa0ce('0x14')]);}logger['error'](_0xa0ce('0xe'),_0x11d179,_0x4772e7[_0xa0ce('0x13')]['message']);return _0x2ec0ec(_0x4772e7[_0xa0ce('0x13')][_0xa0ce('0x14')]);}else{logger['info'](_0xa0ce('0xe'),_0x11d179,_0xa0ce('0x11'));_0x2ec0ec(_0x4772e7['result'][_0xa0ce('0x14')]);}})[_0xa0ce('0x15')](function(_0x44f008){logger[_0xa0ce('0x13')](_0xa0ce('0xe'),_0x11d179,_0x44f008);_0x7bbe2a(_0x44f008);});});}
\ No newline at end of file
index 6fe8583..36ac4c5 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(_0x55ec0f,_0x4f1125){var _0x486c19=function(_0x21535b){while(--_0x21535b){_0x55ec0f['push'](_0x55ec0f['shift']());}};_0x486c19(++_0x4f1125);}(_0xedd9,0xfc));var _0x9edd=function(_0x5065a6,_0x15b320){_0x5065a6=_0x5065a6-0x0;var _0x557ec6=_0xedd9[_0x5065a6];return _0x557ec6;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x1cab41,_0x4bfa57){var _0x511deb=function(_0x3d1a43){while(--_0x3d1a43){_0x1cab41['push'](_0x1cab41['shift']());}};_0x511deb(++_0x4bfa57);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'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 746aa01..c862090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c52=['queue_interface','sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x17bfaf,_0x38320d){var _0x1f2594=function(_0x5dd0b9){while(--_0x5dd0b9){_0x17bfaf['push'](_0x17bfaf['shift']());}};_0x1f2594(++_0x38320d);}(_0x7c52,0x12d));var _0x27c5=function(_0x81a91b,_0xa4910b){_0x81a91b=_0x81a91b-0x0;var _0xe29046=_0x7c52[_0x81a91b];return _0xe29046;};'use strict';var Sequelize=require(_0x27c5('0x0'));module[_0x27c5('0x1')]={'uniqueid':{'type':Sequelize[_0x27c5('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x27c5('0x3')},'membername':{'type':Sequelize[_0x27c5('0x4')],'allowNull':![],'comment':_0x27c5('0x3')},'UserId':{'type':Sequelize[_0x27c5('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x27c5('0x4')],'allowNull':![],'unique':_0x27c5('0x5'),'comment':_0x27c5('0x3')},'VoiceQueueId':{'type':Sequelize[_0x27c5('0x2')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0x27c5('0x3')},'penalty':{'type':Sequelize[_0x27c5('0x2')](0xb),'defaultValue':0x0,'comment':_0x27c5('0x3')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x8b9c=['INTEGER','Required\x20by\x20Asterisk','queue_interface','STRING'];(function(_0x246115,_0x398123){var _0x385878=function(_0x534a9c){while(--_0x534a9c){_0x246115['push'](_0x246115['shift']());}};_0x385878(++_0x398123);}(_0x8b9c,0x198));var _0xc8b9=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8b9c[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xc8b9('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xc8b9('0x1')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xc8b9('0x1')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc8b9('0x2'),'comment':_0xc8b9('0x1')},'VoiceQueueId':{'type':Sequelize[_0xc8b9('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0xc8b9('0x3')],'allowNull':![],'unique':_0xc8b9('0x2'),'comment':_0xc8b9('0x1')},'penalty':{'type':Sequelize[_0xc8b9('0x0')](0xb),'defaultValue':0x0,'comment':_0xc8b9('0x1')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index d39d37f..a9776fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb44=['update','emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xcb44,0x88));var _0x4cb4=function(_0x1a20ec,_0x27626c){_0x1a20ec=_0x1a20ec-0x0;var _0x3a2ec1=_0xcb44[_0x1a20ec];return _0x3a2ec1;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x4cb4('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x4cb4('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4cb4('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4d6bc3){return function(_0x1f5134,_0x3d3b44,_0x5e24f2){UserVoiceQueueRtEvents[_0x4cb4('0x3')](_0x4d6bc3+':'+_0x1f5134['id'],_0x1f5134);UserVoiceQueueRtEvents['emit'](_0x4d6bc3,_0x1f5134);_0x5e24f2(null);};}for(var e in events){if(events[_0x4cb4('0x4')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x4cb4('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x5318=['hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit'];(function(_0x1ca4cc,_0x402c23){var _0x108010=function(_0x4c5082){while(--_0x4c5082){_0x1ca4cc['push'](_0x1ca4cc['shift']());}};_0x108010(++_0x402c23);}(_0x5318,0x184));var _0x8531=function(_0x27830a,_0x4e8504){_0x27830a=_0x27830a-0x0;var _0x32ccc3=_0x5318[_0x27830a];return _0x32ccc3;};'use strict';var EventEmitter=require(_0x8531('0x0'));var UserVoiceQueueRt=require(_0x8531('0x1'))['db'][_0x8531('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x8531('0x3')](0x0);var events={'afterCreate':_0x8531('0x4'),'afterUpdate':_0x8531('0x5'),'afterDestroy':_0x8531('0x6')};function emitEvent(_0x28d8bb){return function(_0x42589b,_0x1a56a9,_0x32a86e){UserVoiceQueueRtEvents[_0x8531('0x7')](_0x28d8bb+':'+_0x42589b['id'],_0x42589b);UserVoiceQueueRtEvents[_0x8531('0x7')](_0x28d8bb,_0x42589b);_0x32a86e(null);};}for(var e in events){if(events[_0x8531('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x8531('0x9')](e,emitEvent(event));}}module[_0x8531('0xa')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index b602e26..eaeab75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79ac=['moment','request-promise','rimraf','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','../../config/logger','api'];(function(_0x7f9224,_0x186851){var _0x3bc305=function(_0x35c046){while(--_0x35c046){_0x7f9224['push'](_0x7f9224['shift']());}};_0x3bc305(++_0x186851);}(_0x79ac,0x1f1));var _0xc79a=function(_0x39c3b1,_0x3ac7d8){_0x39c3b1=_0x39c3b1-0x0;var _0x5497e8=_0x79ac[_0x39c3b1];return _0x5497e8;};'use strict';var _=require(_0xc79a('0x0'));var util=require('util');var logger=require(_0xc79a('0x1'))(_0xc79a('0x2'));var moment=require(_0xc79a('0x3'));var BPromise=require('bluebird');var rp=require(_0xc79a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc79a('0x5'));var config=require('../../config/environment');var attributes=require(_0xc79a('0x6'));module[_0xc79a('0x7')]=function(_0x13464a,_0x1ffa25){return _0x13464a['define'](_0xc79a('0x8'),attributes,{'tableName':_0xc79a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1978=['user_has_voice_queues_rt','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','UserVoiceQueueRt'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x1978,0x90));var _0x8197=function(_0x40d727,_0x3caaac){_0x40d727=_0x40d727-0x0;var _0x2a72c9=_0x1978[_0x40d727];return _0x2a72c9;};'use strict';var _=require(_0x8197('0x0'));var util=require('util');var logger=require(_0x8197('0x1'))(_0x8197('0x2'));var moment=require(_0x8197('0x3'));var BPromise=require(_0x8197('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8197('0x5'));var rimraf=require('rimraf');var config=require(_0x8197('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x8197('0x7')]=function(_0x1f703d,_0x708210){return _0x1f703d[_0x8197('0x8')](_0x8197('0x9'),attributes,{'tableName':_0x8197('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42802f0..f9ae929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4720=['../../config/environment','client','http','redis','defaults','localhost','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','where','sequelize','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1b81ae,_0x1941f7){var _0x33ba48=function(_0x1d6bb0){while(--_0x1d6bb0){_0x1b81ae['push'](_0x1b81ae['shift']());}};_0x33ba48(++_0x1941f7);}(_0x4720,0x9e));var _0x0472=function(_0xdb0cc5,_0x33653a){_0xdb0cc5=_0xdb0cc5-0x0;var _0x153aa=_0x4720[_0xdb0cc5];return _0x153aa;};'use strict';var _=require(_0x0472('0x0'));var util=require(_0x0472('0x1'));var moment=require('moment');var BPromise=require(_0x0472('0x2'));var rs=require(_0x0472('0x3'));var fs=require('fs');var Redis=require(_0x0472('0x4'));var db=require(_0x0472('0x5'))['db'];var utils=require(_0x0472('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x0472('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0472('0x8')][_0x0472('0x9')]({'port':0x232a});config[_0x0472('0xa')]=_[_0x0472('0xb')](config[_0x0472('0xa')],{'host':_0x0472('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0472('0xa')]));require('./userVoiceQueueRt.socket')[_0x0472('0xd')](socket);function respondWithRpcPromise(_0x4edd02,_0x4230ae,_0x50d0ca){return new BPromise(function(_0x3b4b91,_0x352eb0){return client[_0x0472('0xe')](_0x4edd02,_0x50d0ca)[_0x0472('0xf')](function(_0x57396d){logger[_0x0472('0x10')](_0x0472('0x11'),_0x4230ae,'request\x20sent');logger[_0x0472('0x12')](_0x0472('0x13'),_0x4230ae,'request\x20sent',JSON[_0x0472('0x14')](_0x57396d));if(_0x57396d[_0x0472('0x15')]){if(_0x57396d[_0x0472('0x15')][_0x0472('0x16')]===0x1f4){logger[_0x0472('0x15')](_0x0472('0x11'),_0x4230ae,_0x57396d['error'][_0x0472('0x17')]);return _0x352eb0(_0x57396d[_0x0472('0x15')][_0x0472('0x17')]);}logger[_0x0472('0x15')](_0x0472('0x11'),_0x4230ae,_0x57396d['error'][_0x0472('0x17')]);return _0x3b4b91(_0x57396d['error'][_0x0472('0x17')]);}else{logger[_0x0472('0x10')](_0x0472('0x11'),_0x4230ae,_0x0472('0x18'));_0x3b4b91(_0x57396d[_0x0472('0x19')][_0x0472('0x17')]);}})[_0x0472('0x1a')](function(_0x4612eb){logger[_0x0472('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4230ae,_0x4612eb);_0x352eb0(_0x4612eb);});});}exports[_0x0472('0x1b')]=function(_0xcf351d){var _0x3a1c06=this;return new Promise(function(_0xf534f8,_0x1ce713){return db[_0x0472('0x1c')]['findAll']({'raw':_0xcf351d[_0x0472('0x1d')]?_0xcf351d[_0x0472('0x1d')][_0x0472('0x1e')]===undefined?!![]:![]:!![],'where':_0xcf351d[_0x0472('0x1d')]?_0xcf351d['options'][_0x0472('0x1f')]||null:null,'attributes':[[db[_0x0472('0x20')]['fn']('COUNT',db[_0x0472('0x20')]['fn']('IF',db[_0x0472('0x20')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),'outboundQueuePauses']]})[_0x0472('0xf')](function(_0x50e855){logger['info'](_0x0472('0x1b'),_0xcf351d);logger[_0x0472('0x12')]('GetVoiceQueueRtPauses',_0xcf351d,JSON[_0x0472('0x14')](_0x50e855));_0xf534f8(_0x50e855);})[_0x0472('0x1a')](function(_0xb9636a){logger[_0x0472('0x15')](_0x0472('0x1b'),_0xb9636a[_0x0472('0x17')],_0xcf351d);_0x1ce713(_0x3a1c06[_0x0472('0x15')](0x1f4,_0xb9636a[_0x0472('0x17')]));});});};
\ No newline at end of file
+var _0xa9ee=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','outboundQueuePauses','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4fc963,_0x446bad){var _0x2da3b5=function(_0x3505d8){while(--_0x3505d8){_0x4fc963['push'](_0x4fc963['shift']());}};_0x2da3b5(++_0x446bad);}(_0xa9ee,0x186));var _0xea9e=function(_0x3e6518,_0x4b549c){_0x3e6518=_0x3e6518-0x0;var _0x2ed21b=_0xa9ee[_0x3e6518];return _0x2ed21b;};'use strict';var _=require(_0xea9e('0x0'));var util=require(_0xea9e('0x1'));var moment=require('moment');var BPromise=require(_0xea9e('0x2'));var rs=require(_0xea9e('0x3'));var fs=require('fs');var Redis=require(_0xea9e('0x4'));var db=require(_0xea9e('0x5'))['db'];var utils=require(_0xea9e('0x6'));var logger=require(_0xea9e('0x7'))(_0xea9e('0x8'));var config=require(_0xea9e('0x9'));var jayson=require(_0xea9e('0xa'));var client=jayson['client'][_0xea9e('0xb')]({'port':0x232a});config[_0xea9e('0xc')]=_[_0xea9e('0xd')](config[_0xea9e('0xc')],{'host':_0xea9e('0xe'),'port':0x18eb});var socket=require(_0xea9e('0xf'))(new Redis(config[_0xea9e('0xc')]));require(_0xea9e('0x10'))[_0xea9e('0x11')](socket);function respondWithRpcPromise(_0xcafb61,_0x1147f9,_0xf093ce){return new BPromise(function(_0x8dbc10,_0x1574b7){return client[_0xea9e('0x12')](_0xcafb61,_0xf093ce)['then'](function(_0x47be5a){logger[_0xea9e('0x13')](_0xea9e('0x14'),_0x1147f9,_0xea9e('0x15'));logger[_0xea9e('0x16')](_0xea9e('0x17'),_0x1147f9,_0xea9e('0x15'),JSON[_0xea9e('0x18')](_0x47be5a));if(_0x47be5a[_0xea9e('0x19')]){if(_0x47be5a[_0xea9e('0x19')]['code']===0x1f4){logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);return _0x1574b7(_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);}logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);return _0x8dbc10(_0x47be5a[_0xea9e('0x19')][_0xea9e('0x1a')]);}else{logger['info'](_0xea9e('0x14'),_0x1147f9,_0xea9e('0x15'));_0x8dbc10(_0x47be5a[_0xea9e('0x1b')][_0xea9e('0x1a')]);}})[_0xea9e('0x1c')](function(_0x46f774){logger[_0xea9e('0x19')](_0xea9e('0x14'),_0x1147f9,_0x46f774);_0x1574b7(_0x46f774);});});}exports[_0xea9e('0x1d')]=function(_0xc93c91){var _0x204464=this;return new Promise(function(_0x56ebb1,_0x548047){return db[_0xea9e('0x1e')][_0xea9e('0x1f')]({'raw':_0xc93c91[_0xea9e('0x20')]?_0xc93c91[_0xea9e('0x20')][_0xea9e('0x21')]===undefined?!![]:![]:!![],'where':_0xc93c91[_0xea9e('0x20')]?_0xc93c91[_0xea9e('0x20')][_0xea9e('0x22')]||null:null,'attributes':[[db[_0xea9e('0x23')]['fn'](_0xea9e('0x24'),db[_0xea9e('0x23')]['fn']('IF',db[_0xea9e('0x23')][_0xea9e('0x25')]('`paused`\x20=\x201,\x201,\x20null'))),_0xea9e('0x26')]]})[_0xea9e('0x27')](function(_0x41522e){logger[_0xea9e('0x13')](_0xea9e('0x1d'),_0xc93c91);logger['debug']('GetVoiceQueueRtPauses',_0xc93c91,JSON['stringify'](_0x41522e));_0x56ebb1(_0x41522e);})[_0xea9e('0x1c')](function(_0x3d717d){logger[_0xea9e('0x19')](_0xea9e('0x1d'),_0x3d717d[_0xea9e('0x1a')],_0xc93c91);_0x548047(_0x204464[_0xea9e('0x19')](0x1f4,_0x3d717d[_0xea9e('0x1a')]));});});};
\ No newline at end of file
index 68728ff..6f089d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fd6=['userVoiceQueueRt:','./userVoiceQueueRt.events','remove','update','emit','length'];(function(_0x4f1cb6,_0x13a47f){var _0x35726d=function(_0x34c529){while(--_0x34c529){_0x4f1cb6['push'](_0x4f1cb6['shift']());}};_0x35726d(++_0x13a47f);}(_0x7fd6,0x157));var _0x67fd=function(_0x205226,_0x22d476){_0x205226=_0x205226-0x0;var _0x54d1a5=_0x7fd6[_0x205226];return _0x54d1a5;};'use strict';var UserVoiceQueueRtEvents=require(_0x67fd('0x0'));var events=['save',_0x67fd('0x1'),_0x67fd('0x2')];function createListener(_0x1a9316,_0x14e844){return function(_0x251423){_0x14e844[_0x67fd('0x3')](_0x1a9316,_0x251423);};}function removeListener(_0x4f52bc,_0x187f3e){return function(){UserVoiceQueueRtEvents['removeListener'](_0x4f52bc,_0x187f3e);};}exports['register']=function(_0x49e35b){for(var _0x57c327=0x0,_0x440518=events[_0x67fd('0x4')];_0x57c327<_0x440518;_0x57c327++){var _0x21d7b1=events[_0x57c327];var _0x1bbae4=createListener(_0x67fd('0x5')+_0x21d7b1,_0x49e35b);UserVoiceQueueRtEvents['on'](_0x21d7b1,_0x1bbae4);}};
\ No newline at end of file
+var _0x66c7=['remove','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x1b321c,_0x543c48){var _0xd4fca3=function(_0x491508){while(--_0x491508){_0x1b321c['push'](_0x1b321c['shift']());}};_0xd4fca3(++_0x543c48);}(_0x66c7,0x15c));var _0x766c=function(_0x19d600,_0x2502b8){_0x19d600=_0x19d600-0x0;var _0x3a30a0=_0x66c7[_0x19d600];return _0x3a30a0;};'use strict';var UserVoiceQueueRtEvents=require(_0x766c('0x0'));var events=[_0x766c('0x1'),_0x766c('0x2'),'update'];function createListener(_0x507a68,_0x47351a){return function(_0x23b678){_0x47351a[_0x766c('0x3')](_0x507a68,_0x23b678);};}function removeListener(_0x1b2a8e,_0x2b4c75){return function(){UserVoiceQueueRtEvents['removeListener'](_0x1b2a8e,_0x2b4c75);};}exports[_0x766c('0x4')]=function(_0x80d91d){for(var _0x6f94c3=0x0,_0xb0b5f7=events[_0x766c('0x5')];_0x6f94c3<_0xb0b5f7;_0x6f94c3++){var _0x3c4683=events[_0x6f94c3];var _0x22a524=createListener(_0x766c('0x6')+_0x3c4683,_0x80d91d);UserVoiceQueueRtEvents['on'](_0x3c4683,_0x22a524);}};
\ No newline at end of file
index 899055a..0b4124a 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(_0x532792,_0x96e24a){var _0x2f06d8=function(_0x12908a){while(--_0x12908a){_0x532792['push'](_0x532792['shift']());}};_0x2f06d8(++_0x96e24a);}(_0xe706,0xa3));var _0x6e70=function(_0x1f0398,_0x37a6dd){_0x1f0398=_0x1f0398-0x0;var _0x3f0ad5=_0xe706[_0x1f0398];return _0x3f0ad5;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3e68c6,_0xb9d042){var _0x5eea23=function(_0x4bced8){while(--_0x4bced8){_0x3e68c6['push'](_0x3e68c6['shift']());}};_0x5eea23(++_0xb9d042);}(_0xe706,0xa3));var _0x6e70=function(_0x46ad9e,_0x203184){_0x46ad9e=_0x46ad9e-0x0;var _0x5727cb=_0xe706[_0x46ad9e];return _0x5727cb;};'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 23c4b29..e597678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0604=['INTEGER','exports'];(function(_0x1bee2a,_0x2cba92){var _0x2b2ec1=function(_0x4ef8bb){while(--_0x4ef8bb){_0x1bee2a['push'](_0x1bee2a['shift']());}};_0x2b2ec1(++_0x2cba92);}(_0x0604,0x179));var _0x4060=function(_0x5e7943,_0x5d0b54){_0x5e7943=_0x5e7943-0x0;var _0x13920=_0x0604[_0x5e7943];return _0x13920;};'use strict';var Sequelize=require('sequelize');module[_0x4060('0x0')]={'penalty':{'type':Sequelize[_0x4060('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5e3c=['sequelize','exports','INTEGER'];(function(_0x318dda,_0x1aa800){var _0x3f97ca=function(_0x1dc61a){while(--_0x1dc61a){_0x318dda['push'](_0x318dda['shift']());}};_0x3f97ca(++_0x1aa800);}(_0x5e3c,0x16b));var _0xc5e3=function(_0x443c33,_0x55415b){_0x443c33=_0x443c33-0x0;var _0x2cddcf=_0x5e3c[_0x443c33];return _0x2cddcf;};'use strict';var Sequelize=require(_0xc5e3('0x0'));module[_0xc5e3('0x1')]={'penalty':{'type':Sequelize[_0xc5e3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 39d9afe..dd7e77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8019=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues'];(function(_0x543b33,_0x49be03){var _0x442720=function(_0x567b03){while(--_0x567b03){_0x543b33['push'](_0x543b33['shift']());}};_0x442720(++_0x49be03);}(_0x8019,0xd0));var _0x9801=function(_0x34b115,_0x532adc){_0x34b115=_0x34b115-0x0;var _0x442e7c=_0x8019[_0x34b115];return _0x442e7c;};'use strict';var _=require(_0x9801('0x0'));var util=require(_0x9801('0x1'));var logger=require(_0x9801('0x2'))(_0x9801('0x3'));var moment=require(_0x9801('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9801('0x5'));var rimraf=require(_0x9801('0x6'));var config=require(_0x9801('0x7'));var attributes=require(_0x9801('0x8'));module[_0x9801('0x9')]=function(_0x48a4fd,_0x13c711){return _0x48a4fd[_0x9801('0xa')](_0x9801('0xb'),attributes,{'tableName':_0x9801('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5397=['../../config/environment','./userWhatsappQueue.attributes','define','user_has_whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3b3f4f,_0x403216){var _0x174dbe=function(_0x30e333){while(--_0x30e333){_0x3b3f4f['push'](_0x3b3f4f['shift']());}};_0x174dbe(++_0x403216);}(_0x5397,0xf4));var _0x7539=function(_0xd9c489,_0x3dfdc3){_0xd9c489=_0xd9c489-0x0;var _0x5504eb=_0x5397[_0xd9c489];return _0x5504eb;};'use strict';var _=require(_0x7539('0x0'));var util=require(_0x7539('0x1'));var logger=require(_0x7539('0x2'))(_0x7539('0x3'));var moment=require('moment');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(_0x7539('0x9'));module['exports']=function(_0x4f2152,_0x78339f){return _0x4f2152[_0x7539('0xa')]('UserWhatsappQueue',attributes,{'tableName':_0x7539('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 182f054..d679861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2209=['UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x52a857,_0xc99fa1){var _0x4e2aae=function(_0x5410d9){while(--_0x5410d9){_0x52a857['push'](_0x52a857['shift']());}};_0x4e2aae(++_0xc99fa1);}(_0x2209,0x149));var _0x9220=function(_0x4c1b03,_0x5750d0){_0x4c1b03=_0x4c1b03-0x0;var _0x1785a5=_0x2209[_0x4c1b03];return _0x1785a5;};'use strict';var _=require(_0x9220('0x0'));var util=require(_0x9220('0x1'));var moment=require(_0x9220('0x2'));var BPromise=require(_0x9220('0x3'));var rs=require(_0x9220('0x4'));var fs=require('fs');var Redis=require(_0x9220('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9220('0x6'));var logger=require('../../config/logger')(_0x9220('0x7'));var config=require(_0x9220('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9220('0x9')][_0x9220('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42ec8f,_0x490d2e,_0x23cd23){return new BPromise(function(_0x4fb0b5,_0xc53b09){return client[_0x9220('0xb')](_0x42ec8f,_0x23cd23)['then'](function(_0x95cfd8){logger[_0x9220('0xc')](_0x9220('0xd'),_0x490d2e,_0x9220('0xe'));logger[_0x9220('0xf')](_0x9220('0x10'),_0x490d2e,'request\x20sent',JSON[_0x9220('0x11')](_0x95cfd8));if(_0x95cfd8[_0x9220('0x12')]){if(_0x95cfd8['error'][_0x9220('0x13')]===0x1f4){logger[_0x9220('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x490d2e,_0x95cfd8['error'][_0x9220('0x14')]);return _0xc53b09(_0x95cfd8['error'][_0x9220('0x14')]);}logger[_0x9220('0x12')](_0x9220('0xd'),_0x490d2e,_0x95cfd8['error']['message']);return _0x4fb0b5(_0x95cfd8['error']['message']);}else{logger['info'](_0x9220('0xd'),_0x490d2e,_0x9220('0xe'));_0x4fb0b5(_0x95cfd8[_0x9220('0x15')][_0x9220('0x14')]);}})[_0x9220('0x16')](function(_0x52f615){logger[_0x9220('0x12')](_0x9220('0xd'),_0x490d2e,_0x52f615);_0xc53b09(_0x52f615);});});}
\ No newline at end of file
+var _0xe5f8=['request','then','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x48acba,_0x381558){var _0x3f7a72=function(_0xdd72f){while(--_0xdd72f){_0x48acba['push'](_0x48acba['shift']());}};_0x3f7a72(++_0x381558);}(_0xe5f8,0x8a));var _0x8e5f=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe5f8[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x8e5f('0x0'));var util=require(_0x8e5f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8e5f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e5f('0x3'))['db'];var utils=require(_0x8e5f('0x4'));var logger=require(_0x8e5f('0x5'))(_0x8e5f('0x6'));var config=require('../../config/environment');var jayson=require(_0x8e5f('0x7'));var client=jayson['client'][_0x8e5f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x321774,_0x130ba8,_0x14f5d9){return new BPromise(function(_0x59c6a8,_0x5a7e42){return client[_0x8e5f('0x9')](_0x321774,_0x14f5d9)[_0x8e5f('0xa')](function(_0x52b142){logger['info'](_0x8e5f('0xb'),_0x130ba8,'request\x20sent');logger[_0x8e5f('0xc')](_0x8e5f('0xd'),_0x130ba8,_0x8e5f('0xe'),JSON['stringify'](_0x52b142));if(_0x52b142[_0x8e5f('0xf')]){if(_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x10')]===0x1f4){logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);return _0x5a7e42(_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);}logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x52b142[_0x8e5f('0xf')][_0x8e5f('0x11')]);return _0x59c6a8(_0x52b142['error'][_0x8e5f('0x11')]);}else{logger[_0x8e5f('0x12')](_0x8e5f('0xb'),_0x130ba8,'request\x20sent');_0x59c6a8(_0x52b142[_0x8e5f('0x13')][_0x8e5f('0x11')]);}})[_0x8e5f('0x14')](function(_0x37675a){logger[_0x8e5f('0xf')](_0x8e5f('0xb'),_0x130ba8,_0x37675a);_0x5a7e42(_0x37675a);});});}
\ No newline at end of file
index 5a1d048..38b0108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','/:id','show','post','create','put','delete','multer','util'];(function(_0x5a2291,_0x3ddda7){var _0x10e3f5=function(_0xc510cc){while(--_0xc510cc){_0x5a2291['push'](_0x5a2291['shift']());}};_0x10e3f5(++_0x3ddda7);}(_0x21d1,0x1c9));var _0x121d=function(_0x9056b5,_0x12239c){_0x9056b5=_0x9056b5-0x0;var _0x17f1fa=_0x21d1[_0x9056b5];return _0x17f1fa;};'use strict';var multer=require(_0x121d('0x0'));var util=require(_0x121d('0x1'));var path=require(_0x121d('0x2'));var timeout=require(_0x121d('0x3'));var express=require(_0x121d('0x4'));var router=express[_0x121d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x121d('0x6'));var config=require(_0x121d('0x7'));var controller=require(_0x121d('0x8'));router[_0x121d('0x9')]('/',auth[_0x121d('0xa')](),controller['index']);router[_0x121d('0x9')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller[_0x121d('0xc')]);router[_0x121d('0xd')]('/',auth[_0x121d('0xa')](),controller[_0x121d('0xe')]);router[_0x121d('0xf')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller['update']);router[_0x121d('0x10')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x87df=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0xe782a1,_0xbdc981){var _0x5d8909=function(_0x4cf8b9){while(--_0x4cf8b9){_0xe782a1['push'](_0xe782a1['shift']());}};_0x5d8909(++_0xbdc981);}(_0x87df,0x167));var _0xf87d=function(_0x177c0f,_0x324360){_0x177c0f=_0x177c0f-0x0;var _0x1f4d28=_0x87df[_0x177c0f];return _0x1f4d28;};'use strict';var multer=require(_0xf87d('0x0'));var util=require(_0xf87d('0x1'));var path=require(_0xf87d('0x2'));var timeout=require(_0xf87d('0x3'));var express=require(_0xf87d('0x4'));var router=express[_0xf87d('0x5')]();var fs_extra=require(_0xf87d('0x6'));var auth=require(_0xf87d('0x7'));var interaction=require(_0xf87d('0x8'));var config=require(_0xf87d('0x9'));var controller=require('./variable.controller');router['get']('/',auth[_0xf87d('0xa')](),controller[_0xf87d('0xb')]);router['get'](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0xd')]);router[_0xf87d('0xe')]('/',auth[_0xf87d('0xa')](),controller[_0xf87d('0xf')]);router[_0xf87d('0x10')](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0x11')]);router[_0xf87d('0x12')](_0xf87d('0xc'),auth[_0xf87d('0xa')](),controller[_0xf87d('0x13')]);module[_0xf87d('0x14')]=router;
\ No newline at end of file
index 66b345b..0057df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac21=['STRING','exports'];(function(_0x43a2c2,_0x1a8205){var _0x1d9941=function(_0x4eabc8){while(--_0x4eabc8){_0x43a2c2['push'](_0x43a2c2['shift']());}};_0x1d9941(++_0x1a8205);}(_0xac21,0x1af));var _0x1ac2=function(_0x2c8126,_0x5a9d3d){_0x2c8126=_0x2c8126-0x0;var _0x553f21=_0xac21[_0x2c8126];return _0x553f21;};'use strict';var Sequelize=require('sequelize');module[_0x1ac2('0x0')]={'name':{'type':Sequelize[_0x1ac2('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1ac2('0x1')]}};
\ No newline at end of file
+var _0xa8fb=['STRING','sequelize','name'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xa8fb,0x172));var _0xba8f=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xa8fb[_0x243b59];return _0x3e1676;};'use strict';var Sequelize=require(_0xba8f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xba8f('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xba8f('0x2')]}};
\ No newline at end of file
index 6533749..432bcc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1691=['Variables','UserProfileResource','stack','name','send','index','map','Variable','rawAttributes','type','key','filters','intersection','model','attributes','fields','query','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','reject','save','update','destroy','then','get'];(function(_0x7c70be,_0x57a2dd){var _0x88ec91=function(_0x1d58d5){while(--_0x1d58d5){_0x7c70be['push'](_0x7c70be['shift']());}};_0x88ec91(++_0x57a2dd);}(_0x1691,0x1cf));var _0x1169=function(_0xe16f3c,_0x2ee8c4){_0xe16f3c=_0xe16f3c-0x0;var _0x7df2cb=_0x1691[_0xe16f3c];return _0x7df2cb;};'use strict';var emlformat=require(_0x1169('0x0'));var rimraf=require(_0x1169('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1169('0x2'));var rp=require(_0x1169('0x3'));var moment=require(_0x1169('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1169('0x5'));var util=require(_0x1169('0x6'));var path=require(_0x1169('0x7'));var sox=require(_0x1169('0x8'));var csv=require(_0x1169('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1169('0xa'));var squel=require(_0x1169('0xb'));var crypto=require(_0x1169('0xc'));var jsforce=require(_0x1169('0xd'));var deskjs=require(_0x1169('0xe'));var toCsv=require(_0x1169('0x9'));var querystring=require(_0x1169('0xf'));var Papa=require(_0x1169('0x10'));var Redis=require(_0x1169('0x11'));var authService=require(_0x1169('0x12'));var qs=require(_0x1169('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1169('0x14'));var logger=require('../../config/logger')(_0x1169('0x15'));var utils=require(_0x1169('0x16'));var config=require(_0x1169('0x17'));var licenseUtil=require(_0x1169('0x18'));var db=require(_0x1169('0x19'))['db'];function respondWithStatusCode(_0x2f42ad,_0x311aa7){_0x311aa7=_0x311aa7||0xcc;return function(_0x36b08f){if(_0x36b08f){return _0x2f42ad[_0x1169('0x1a')](_0x311aa7);}return _0x2f42ad['status'](_0x311aa7)[_0x1169('0x1b')]();};}function respondWithResult(_0x10ab5c,_0x5eeba4){_0x5eeba4=_0x5eeba4||0xc8;return function(_0x26602e){if(_0x26602e){return _0x10ab5c[_0x1169('0x1c')](_0x5eeba4)[_0x1169('0x1d')](_0x26602e);}};}function respondWithFilteredResult(_0x28cbb3,_0x3433c7){return function(_0x11a53d){if(_0x11a53d){var _0x326ea5=typeof _0x3433c7[_0x1169('0x1e')]==='undefined'&&typeof _0x3433c7['limit']===_0x1169('0x1f');var _0x37997c=_0x11a53d[_0x1169('0x20')];var _0x35048d=_0x326ea5?0x0:_0x3433c7[_0x1169('0x1e')];var _0xb9ba27=_0x326ea5?_0x11a53d['count']:_0x3433c7[_0x1169('0x1e')]+_0x3433c7['limit'];var _0x40c1ff;if(_0xb9ba27>=_0x37997c){_0xb9ba27=_0x37997c;_0x40c1ff=0xc8;}else{_0x40c1ff=0xce;}_0x28cbb3['status'](_0x40c1ff);return _0x28cbb3[_0x1169('0x21')](_0x1169('0x22'),_0x35048d+'-'+_0xb9ba27+'/'+_0x37997c)['json'](_0x11a53d);}return null;};}function patchUpdates(_0x5bb0b8){return function(_0x197255){try{jsonpatch['apply'](_0x197255,_0x5bb0b8,!![]);}catch(_0x487fed){return BPromise[_0x1169('0x23')](_0x487fed);}return _0x197255[_0x1169('0x24')]();};}function saveUpdates(_0x41a3df,_0x473cf6){return function(_0x188e36){if(_0x188e36){return _0x188e36[_0x1169('0x25')](_0x41a3df)['then'](function(_0x22c00c){return _0x22c00c;});}return null;};}function removeEntity(_0x48430d,_0x359870){return function(_0xcb2ead){if(_0xcb2ead){return _0xcb2ead[_0x1169('0x26')]()[_0x1169('0x27')](function(){var _0x1dec57=_0xcb2ead[_0x1169('0x28')]({'plain':!![]});var _0x3b5d39=_0x1169('0x29');return db[_0x1169('0x2a')][_0x1169('0x26')]({'where':{'type':_0x3b5d39,'resourceId':_0x1dec57['id']}})[_0x1169('0x27')](function(){return _0xcb2ead;});})['then'](function(){_0x48430d[_0x1169('0x1c')](0xcc)[_0x1169('0x1b')]();});}};}function handleEntityNotFound(_0x508892,_0x20bd33){return function(_0x29fe9c){if(!_0x29fe9c){_0x508892['sendStatus'](0x194);}return _0x29fe9c;};}function handleError(_0x4f3be8,_0x259750){_0x259750=_0x259750||0x1f4;return function(_0x151e4d){logger['error'](_0x151e4d[_0x1169('0x2b')]);if(_0x151e4d[_0x1169('0x2c')]){delete _0x151e4d[_0x1169('0x2c')];}_0x4f3be8[_0x1169('0x1c')](_0x259750)[_0x1169('0x2d')](_0x151e4d);};}exports[_0x1169('0x2e')]=function(_0x51476c,_0x3325cc){var _0x497d60={},_0x3c1184={},_0x215acd={'count':0x0,'rows':[]};var _0x298f7b=_[_0x1169('0x2f')](db[_0x1169('0x30')][_0x1169('0x31')],function(_0x388777){return{'name':_0x388777['fieldName'],'type':_0x388777[_0x1169('0x32')][_0x1169('0x33')]};});_0x3c1184['model']=_[_0x1169('0x2f')](_0x298f7b,_0x1169('0x2c'));_0x3c1184['query']=_['keys'](_0x51476c['query']);_0x3c1184[_0x1169('0x34')]=_[_0x1169('0x35')](_0x3c1184[_0x1169('0x36')],_0x3c1184['query']);_0x497d60[_0x1169('0x37')]=_[_0x1169('0x35')](_0x3c1184[_0x1169('0x36')],qs[_0x1169('0x38')](_0x51476c[_0x1169('0x39')][_0x1169('0x38')]));_0x497d60[_0x1169('0x37')]=_0x497d60['attributes'][_0x1169('0x3a')]?_0x497d60['attributes']:_0x3c1184['model'];if(!_0x51476c['query'][_0x1169('0x3b')](_0x1169('0x3c'))){_0x497d60[_0x1169('0x3d')]=qs[_0x1169('0x3d')](_0x51476c['query'][_0x1169('0x3d')]);_0x497d60[_0x1169('0x1e')]=qs[_0x1169('0x1e')](_0x51476c[_0x1169('0x39')][_0x1169('0x1e')]);}_0x497d60[_0x1169('0x3e')]=qs[_0x1169('0x3f')](_0x51476c['query'][_0x1169('0x3f')]);_0x497d60[_0x1169('0x40')]=qs[_0x1169('0x34')](_[_0x1169('0x41')](_0x51476c['query'],_0x3c1184[_0x1169('0x34')]),_0x298f7b);if(_0x51476c[_0x1169('0x39')][_0x1169('0x42')]){_0x497d60[_0x1169('0x40')]=_[_0x1169('0x43')](_0x497d60[_0x1169('0x40')],{'$or':_[_0x1169('0x2f')](_0x298f7b,function(_0x41a1f4){if(_0x41a1f4['type']!==_0x1169('0x44')){var _0x47877a={};_0x47877a[_0x41a1f4[_0x1169('0x2c')]]={'$like':'%'+_0x51476c[_0x1169('0x39')][_0x1169('0x42')]+'%'};return _0x47877a;}})});}_0x497d60=_[_0x1169('0x43')]({},_0x497d60,_0x51476c['options']);var _0x4d7dac={'where':_0x497d60[_0x1169('0x40')]};return db[_0x1169('0x30')][_0x1169('0x20')](_0x4d7dac)[_0x1169('0x27')](function(_0x3afe38){_0x215acd[_0x1169('0x20')]=_0x3afe38;if(_0x51476c[_0x1169('0x39')][_0x1169('0x45')]){_0x497d60[_0x1169('0x46')]=[{'all':!![]}];}return db[_0x1169('0x30')][_0x1169('0x47')](_0x497d60);})[_0x1169('0x27')](function(_0x16fc95){_0x215acd[_0x1169('0x48')]=_0x16fc95;return _0x215acd;})['then'](respondWithFilteredResult(_0x3325cc,_0x497d60))[_0x1169('0x49')](handleError(_0x3325cc,null));};exports[_0x1169('0x4a')]=function(_0x555793,_0x4c8285){var _0x26fac7={'raw':!![],'where':{'id':_0x555793[_0x1169('0x4b')]['id']}},_0x46b904={};_0x46b904[_0x1169('0x36')]=_[_0x1169('0x4c')](db['Variable'][_0x1169('0x31')]);_0x46b904[_0x1169('0x39')]=_[_0x1169('0x4c')](_0x555793[_0x1169('0x39')]);_0x46b904[_0x1169('0x34')]=_[_0x1169('0x35')](_0x46b904[_0x1169('0x36')],_0x46b904[_0x1169('0x39')]);_0x26fac7['attributes']=_[_0x1169('0x35')](_0x46b904[_0x1169('0x36')],qs[_0x1169('0x38')](_0x555793[_0x1169('0x39')][_0x1169('0x38')]));_0x26fac7[_0x1169('0x37')]=_0x26fac7['attributes'][_0x1169('0x3a')]?_0x26fac7[_0x1169('0x37')]:_0x46b904[_0x1169('0x36')];if(_0x555793[_0x1169('0x39')]['includeAll']){_0x26fac7[_0x1169('0x46')]=[{'all':!![]}];}_0x26fac7=_['merge']({},_0x26fac7,_0x555793[_0x1169('0x4d')]);return db[_0x1169('0x30')][_0x1169('0x4e')](_0x26fac7)[_0x1169('0x27')](handleEntityNotFound(_0x4c8285,null))['then'](respondWithResult(_0x4c8285,null))[_0x1169('0x49')](handleError(_0x4c8285,null));};exports[_0x1169('0x4f')]=function(_0x52f993,_0x1e85e8){return db[_0x1169('0x30')]['create'](_0x52f993[_0x1169('0x50')],{})[_0x1169('0x27')](function(_0x29d3e3){var _0x1a5f81=_0x52f993['user'][_0x1169('0x28')]({'plain':!![]});if(!_0x1a5f81)throw new Error(_0x1169('0x51'));if(_0x1a5f81['role']===_0x1169('0x52')){var _0x20bf71=_0x29d3e3[_0x1169('0x28')]({'plain':!![]});var _0x233398=_0x1169('0x29');return db[_0x1169('0x53')][_0x1169('0x4e')]({'where':{'name':_0x233398,'userProfileId':_0x1a5f81['userProfileId']},'raw':!![]})['then'](function(_0x96feef){if(_0x96feef&&_0x96feef['autoAssociation']===0x0){return db[_0x1169('0x2a')][_0x1169('0x4f')]({'name':_0x20bf71[_0x1169('0x2c')],'resourceId':_0x20bf71['id'],'type':_0x96feef[_0x1169('0x2c')],'sectionId':_0x96feef['id']},{})[_0x1169('0x27')](function(){return _0x29d3e3;});}else{return _0x29d3e3;}})['catch'](function(_0x5d26e1){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d26e1);throw _0x5d26e1;});}return _0x29d3e3;})[_0x1169('0x27')](respondWithResult(_0x1e85e8,0xc9))[_0x1169('0x49')](handleError(_0x1e85e8,null));};exports[_0x1169('0x25')]=function(_0x535c62,_0x5aaf8c){if(_0x535c62[_0x1169('0x50')]['id']){delete _0x535c62[_0x1169('0x50')]['id'];}return db['Variable'][_0x1169('0x4e')]({'where':{'id':_0x535c62[_0x1169('0x4b')]['id']}})[_0x1169('0x27')](handleEntityNotFound(_0x5aaf8c,null))['then'](saveUpdates(_0x535c62['body'],null))[_0x1169('0x27')](respondWithResult(_0x5aaf8c,null))[_0x1169('0x49')](handleError(_0x5aaf8c,null));};exports[_0x1169('0x26')]=function(_0x3f48f7,_0x102ba0){return db[_0x1169('0x30')][_0x1169('0x4e')]({'where':{'id':_0x3f48f7['params']['id']}})[_0x1169('0x27')](handleEntityNotFound(_0x102ba0,null))[_0x1169('0x27')](removeEntity(_0x102ba0,null))[_0x1169('0x49')](handleError(_0x102ba0,null));};
\ No newline at end of file
+var _0x04f9=['find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','get','Variables','UserProfileResource','destroy','sendStatus','error','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','show','params','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection'];(function(_0x3e8bf8,_0x4e76d6){var _0x3391ce=function(_0x4f32d6){while(--_0x4f32d6){_0x3e8bf8['push'](_0x3e8bf8['shift']());}};_0x3391ce(++_0x4e76d6);}(_0x04f9,0x15c));var _0x904f=function(_0x3fd837,_0x4cb9a6){_0x3fd837=_0x3fd837-0x0;var _0x4f86d8=_0x04f9[_0x3fd837];return _0x4f86d8;};'use strict';var emlformat=require(_0x904f('0x0'));var rimraf=require(_0x904f('0x1'));var zipdir=require(_0x904f('0x2'));var jsonpatch=require(_0x904f('0x3'));var rp=require(_0x904f('0x4'));var moment=require('moment');var BPromise=require(_0x904f('0x5'));var Mustache=require(_0x904f('0x6'));var util=require('util');var path=require(_0x904f('0x7'));var sox=require(_0x904f('0x8'));var csv=require(_0x904f('0x9'));var ejs=require(_0x904f('0xa'));var fs=require('fs');var fs_extra=require(_0x904f('0xb'));var _=require(_0x904f('0xc'));var squel=require('squel');var crypto=require(_0x904f('0xd'));var jsforce=require(_0x904f('0xe'));var deskjs=require(_0x904f('0xf'));var toCsv=require(_0x904f('0x9'));var querystring=require(_0x904f('0x10'));var Papa=require(_0x904f('0x11'));var Redis=require(_0x904f('0x12'));var authService=require(_0x904f('0x13'));var qs=require(_0x904f('0x14'));var as=require(_0x904f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x904f('0x16'))('api');var utils=require(_0x904f('0x17'));var config=require(_0x904f('0x18'));var licenseUtil=require(_0x904f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x106738,_0x4728b){_0x4728b=_0x4728b||0xcc;return function(_0x46138b){if(_0x46138b){return _0x106738['sendStatus'](_0x4728b);}return _0x106738[_0x904f('0x1a')](_0x4728b)[_0x904f('0x1b')]();};}function respondWithResult(_0xc7a391,_0x2314ed){_0x2314ed=_0x2314ed||0xc8;return function(_0x37b035){if(_0x37b035){return _0xc7a391[_0x904f('0x1a')](_0x2314ed)[_0x904f('0x1c')](_0x37b035);}};}function respondWithFilteredResult(_0x194a42,_0x4593a6){return function(_0x259a0c){if(_0x259a0c){var _0x256185=typeof _0x4593a6[_0x904f('0x1d')]===_0x904f('0x1e')&&typeof _0x4593a6['limit']===_0x904f('0x1e');var _0x119c2b=_0x259a0c['count'];var _0x3168f3=_0x256185?0x0:_0x4593a6[_0x904f('0x1d')];var _0x247019=_0x256185?_0x259a0c['count']:_0x4593a6[_0x904f('0x1d')]+_0x4593a6[_0x904f('0x1f')];var _0xc2b1bd;if(_0x247019>=_0x119c2b){_0x247019=_0x119c2b;_0xc2b1bd=0xc8;}else{_0xc2b1bd=0xce;}_0x194a42[_0x904f('0x1a')](_0xc2b1bd);return _0x194a42[_0x904f('0x20')]('Content-Range',_0x3168f3+'-'+_0x247019+'/'+_0x119c2b)[_0x904f('0x1c')](_0x259a0c);}return null;};}function patchUpdates(_0x5e6fb6){return function(_0x1e3e79){try{jsonpatch[_0x904f('0x21')](_0x1e3e79,_0x5e6fb6,!![]);}catch(_0x82a6f0){return BPromise[_0x904f('0x22')](_0x82a6f0);}return _0x1e3e79[_0x904f('0x23')]();};}function saveUpdates(_0xc5578,_0x388159){return function(_0xb7e43){if(_0xb7e43){return _0xb7e43[_0x904f('0x24')](_0xc5578)['then'](function(_0x213eef){return _0x213eef;});}return null;};}function removeEntity(_0x9a967e,_0x2fbf80){return function(_0x501c89){if(_0x501c89){return _0x501c89['destroy']()[_0x904f('0x25')](function(){var _0x8e9d58=_0x501c89[_0x904f('0x26')]({'plain':!![]});var _0x5375ec=_0x904f('0x27');return db[_0x904f('0x28')][_0x904f('0x29')]({'where':{'type':_0x5375ec,'resourceId':_0x8e9d58['id']}})['then'](function(){return _0x501c89;});})['then'](function(){_0x9a967e[_0x904f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46a657,_0x11af34){return function(_0x445a55){if(!_0x445a55){_0x46a657[_0x904f('0x2a')](0x194);}return _0x445a55;};}function handleError(_0xf691af,_0x2fb103){_0x2fb103=_0x2fb103||0x1f4;return function(_0x209e28){logger[_0x904f('0x2b')](_0x209e28['stack']);if(_0x209e28[_0x904f('0x2c')]){delete _0x209e28[_0x904f('0x2c')];}_0xf691af[_0x904f('0x1a')](_0x2fb103)[_0x904f('0x2d')](_0x209e28);};}exports[_0x904f('0x2e')]=function(_0x37ad6b,_0x1d65d2){var _0x2a1bb7={},_0x1aa55a={},_0x254c37={'count':0x0,'rows':[]};var _0x3ac10a=_[_0x904f('0x2f')](db[_0x904f('0x30')][_0x904f('0x31')],function(_0x476612){return{'name':_0x476612[_0x904f('0x32')],'type':_0x476612[_0x904f('0x33')][_0x904f('0x34')]};});_0x1aa55a[_0x904f('0x35')]=_[_0x904f('0x2f')](_0x3ac10a,_0x904f('0x2c'));_0x1aa55a[_0x904f('0x36')]=_[_0x904f('0x37')](_0x37ad6b['query']);_0x1aa55a[_0x904f('0x38')]=_[_0x904f('0x39')](_0x1aa55a[_0x904f('0x35')],_0x1aa55a[_0x904f('0x36')]);_0x2a1bb7[_0x904f('0x3a')]=_[_0x904f('0x39')](_0x1aa55a[_0x904f('0x35')],qs[_0x904f('0x3b')](_0x37ad6b[_0x904f('0x36')]['fields']));_0x2a1bb7[_0x904f('0x3a')]=_0x2a1bb7['attributes']['length']?_0x2a1bb7[_0x904f('0x3a')]:_0x1aa55a[_0x904f('0x35')];if(!_0x37ad6b[_0x904f('0x36')][_0x904f('0x3c')](_0x904f('0x3d'))){_0x2a1bb7['limit']=qs[_0x904f('0x1f')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x1f')]);_0x2a1bb7[_0x904f('0x1d')]=qs[_0x904f('0x1d')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x1d')]);}_0x2a1bb7[_0x904f('0x3e')]=qs[_0x904f('0x3f')](_0x37ad6b[_0x904f('0x36')][_0x904f('0x3f')]);_0x2a1bb7[_0x904f('0x40')]=qs[_0x904f('0x38')](_[_0x904f('0x41')](_0x37ad6b[_0x904f('0x36')],_0x1aa55a['filters']),_0x3ac10a);if(_0x37ad6b[_0x904f('0x36')][_0x904f('0x42')]){_0x2a1bb7[_0x904f('0x40')]=_[_0x904f('0x43')](_0x2a1bb7[_0x904f('0x40')],{'$or':_[_0x904f('0x2f')](_0x3ac10a,function(_0x4e93d7){if(_0x4e93d7[_0x904f('0x33')]!==_0x904f('0x44')){var _0x76c4e7={};_0x76c4e7[_0x4e93d7[_0x904f('0x2c')]]={'$like':'%'+_0x37ad6b[_0x904f('0x36')][_0x904f('0x42')]+'%'};return _0x76c4e7;}})});}_0x2a1bb7=_['merge']({},_0x2a1bb7,_0x37ad6b[_0x904f('0x45')]);var _0x3a3c07={'where':_0x2a1bb7[_0x904f('0x40')]};return db[_0x904f('0x30')][_0x904f('0x46')](_0x3a3c07)[_0x904f('0x25')](function(_0x37e7d1){_0x254c37[_0x904f('0x46')]=_0x37e7d1;if(_0x37ad6b[_0x904f('0x36')]['includeAll']){_0x2a1bb7[_0x904f('0x47')]=[{'all':!![]}];}return db[_0x904f('0x30')]['findAll'](_0x2a1bb7);})[_0x904f('0x25')](function(_0x912801){_0x254c37[_0x904f('0x48')]=_0x912801;return _0x254c37;})[_0x904f('0x25')](respondWithFilteredResult(_0x1d65d2,_0x2a1bb7))[_0x904f('0x49')](handleError(_0x1d65d2,null));};exports[_0x904f('0x4a')]=function(_0x1eb4fe,_0x3e09c6){var _0x13875f={'raw':!![],'where':{'id':_0x1eb4fe[_0x904f('0x4b')]['id']}},_0x4dc9f2={};_0x4dc9f2[_0x904f('0x35')]=_[_0x904f('0x37')](db[_0x904f('0x30')][_0x904f('0x31')]);_0x4dc9f2[_0x904f('0x36')]=_[_0x904f('0x37')](_0x1eb4fe[_0x904f('0x36')]);_0x4dc9f2[_0x904f('0x38')]=_[_0x904f('0x39')](_0x4dc9f2[_0x904f('0x35')],_0x4dc9f2[_0x904f('0x36')]);_0x13875f[_0x904f('0x3a')]=_['intersection'](_0x4dc9f2[_0x904f('0x35')],qs[_0x904f('0x3b')](_0x1eb4fe[_0x904f('0x36')]['fields']));_0x13875f['attributes']=_0x13875f[_0x904f('0x3a')][_0x904f('0x4c')]?_0x13875f[_0x904f('0x3a')]:_0x4dc9f2['model'];if(_0x1eb4fe[_0x904f('0x36')][_0x904f('0x4d')]){_0x13875f[_0x904f('0x47')]=[{'all':!![]}];}_0x13875f=_[_0x904f('0x43')]({},_0x13875f,_0x1eb4fe['options']);return db['Variable']['find'](_0x13875f)[_0x904f('0x25')](handleEntityNotFound(_0x3e09c6,null))['then'](respondWithResult(_0x3e09c6,null))[_0x904f('0x49')](handleError(_0x3e09c6,null));};exports[_0x904f('0x4e')]=function(_0x397607,_0x36dd96){return db[_0x904f('0x30')][_0x904f('0x4e')](_0x397607['body'],{})['then'](function(_0x58211f){var _0xbb6494=_0x397607['user'][_0x904f('0x26')]({'plain':!![]});if(!_0xbb6494)throw new Error(_0x904f('0x4f'));if(_0xbb6494['role']===_0x904f('0x50')){var _0x4c828a=_0x58211f[_0x904f('0x26')]({'plain':!![]});var _0x4fc6e3=_0x904f('0x27');return db[_0x904f('0x51')][_0x904f('0x52')]({'where':{'name':_0x4fc6e3,'userProfileId':_0xbb6494['userProfileId']},'raw':!![]})['then'](function(_0x498ee3){if(_0x498ee3&&_0x498ee3[_0x904f('0x53')]===0x0){return db[_0x904f('0x28')][_0x904f('0x4e')]({'name':_0x4c828a[_0x904f('0x2c')],'resourceId':_0x4c828a['id'],'type':_0x498ee3[_0x904f('0x2c')],'sectionId':_0x498ee3['id']},{})[_0x904f('0x25')](function(){return _0x58211f;});}else{return _0x58211f;}})[_0x904f('0x49')](function(_0x34069e){logger[_0x904f('0x2b')](_0x904f('0x54'),_0x34069e);throw _0x34069e;});}return _0x58211f;})[_0x904f('0x25')](respondWithResult(_0x36dd96,0xc9))[_0x904f('0x49')](handleError(_0x36dd96,null));};exports[_0x904f('0x24')]=function(_0x5c7dcf,_0x5a3540){if(_0x5c7dcf[_0x904f('0x55')]['id']){delete _0x5c7dcf['body']['id'];}return db[_0x904f('0x30')]['find']({'where':{'id':_0x5c7dcf[_0x904f('0x4b')]['id']}})[_0x904f('0x25')](handleEntityNotFound(_0x5a3540,null))[_0x904f('0x25')](saveUpdates(_0x5c7dcf['body'],null))[_0x904f('0x25')](respondWithResult(_0x5a3540,null))['catch'](handleError(_0x5a3540,null));};exports[_0x904f('0x29')]=function(_0x2a17d5,_0x184378){return db[_0x904f('0x30')][_0x904f('0x52')]({'where':{'id':_0x2a17d5[_0x904f('0x4b')]['id']}})[_0x904f('0x25')](handleEntityNotFound(_0x184378,null))[_0x904f('0x25')](removeEntity(_0x184378,null))[_0x904f('0x49')](handleError(_0x184378,null));};
\ No newline at end of file
index 0048e5d..6648d5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa098=['define','Variable','tools_variables','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./variable.attributes'];(function(_0x1c8791,_0x17d51f){var _0x44e64c=function(_0x3af0a0){while(--_0x3af0a0){_0x1c8791['push'](_0x1c8791['shift']());}};_0x44e64c(++_0x17d51f);}(_0xa098,0xff));var _0x8a09=function(_0x3513a3,_0x48554d){_0x3513a3=_0x3513a3-0x0;var _0x116a19=_0xa098[_0x3513a3];return _0x116a19;};'use strict';var _=require('lodash');var util=require(_0x8a09('0x0'));var logger=require(_0x8a09('0x1'))(_0x8a09('0x2'));var moment=require(_0x8a09('0x3'));var BPromise=require(_0x8a09('0x4'));var rp=require(_0x8a09('0x5'));var fs=require('fs');var path=require(_0x8a09('0x6'));var rimraf=require(_0x8a09('0x7'));var config=require('../../config/environment');var attributes=require(_0x8a09('0x8'));module['exports']=function(_0x41fdca,_0x4f82ed){return _0x41fdca[_0x8a09('0x9')](_0x8a09('0xa'),attributes,{'tableName':_0x8a09('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4220=['api','bluebird','request-promise','../../config/environment','exports','define','Variable','util','../../config/logger'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0x4220,0xbb));var _0x0422=function(_0xe69c16,_0x1188ec){_0xe69c16=_0xe69c16-0x0;var _0x5150c3=_0x4220[_0xe69c16];return _0x5150c3;};'use strict';var _=require('lodash');var util=require(_0x0422('0x0'));var logger=require(_0x0422('0x1'))(_0x0422('0x2'));var moment=require('moment');var BPromise=require(_0x0422('0x3'));var rp=require(_0x0422('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0422('0x5'));var attributes=require('./variable.attributes');module[_0x0422('0x6')]=function(_0x36007b,_0x2e0708){return _0x36007b[_0x0422('0x7')](_0x0422('0x8'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4ed04b..84b3c1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['stringify','error','code','message','result','catch','ShowVariable','find','raw','options','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x56c953,_0x3e08b4){var _0x284b24=function(_0x19d264){while(--_0x19d264){_0x56c953['push'](_0x56c953['shift']());}};_0x284b24(++_0x3e08b4);}(_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 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']('Variable,\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);});});}exports[_0x7995('0x18')]=function(_0x291317){var _0x1e1415=this;return new Promise(function(_0x37a7d4,_0x4faa60){return db['Variable'][_0x7995('0x19')]({'raw':_0x291317['options']?_0x291317['options'][_0x7995('0x1a')]===undefined?!![]:![]:!![],'where':_0x291317[_0x7995('0x1b')]?_0x291317['options'][_0x7995('0x1c')]||null:null,'attributes':_0x291317['options']?_0x291317['options'][_0x7995('0x1d')]||null:null,'include':_0x291317[_0x7995('0x1b')]?_0x291317[_0x7995('0x1b')][_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x291317[_0x7995('0x1b')]['include'],function(_0x32a09a){return{'model':db[_0x32a09a[_0x7995('0x20')]],'as':_0x32a09a['as'],'attributes':_0x32a09a[_0x7995('0x1d')],'include':_0x32a09a[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x32a09a[_0x7995('0x1e')],function(_0x475351){return{'model':db[_0x475351[_0x7995('0x20')]],'as':_0x475351['as'],'attributes':_0x475351['attributes'],'include':_0x475351[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x475351[_0x7995('0x1e')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x20')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47625f){logger['info'](_0x7995('0x18'),_0x291317);logger[_0x7995('0x10')](_0x7995('0x18'),_0x291317,JSON[_0x7995('0x12')](_0x47625f));_0x37a7d4(_0x47625f);})[_0x7995('0x17')](function(_0x4b6f99){logger[_0x7995('0x13')]('ShowVariable',_0x4b6f99[_0x7995('0x15')],_0x291317);_0x4faa60(_0x1e1415[_0x7995('0x13')](0x1f4,_0x4b6f99[_0x7995('0x15')]));});});};
\ No newline at end of file
+var _0x55ca=['options','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowVariable','Variable','find'];(function(_0x9fdca,_0x364493){var _0x4037a3=function(_0x241c66){while(--_0x241c66){_0x9fdca['push'](_0x9fdca['shift']());}};_0x4037a3(++_0x364493);}(_0x55ca,0x126));var _0xa55c=function(_0x13b330,_0x297092){_0x13b330=_0x13b330-0x0;var _0x1f666c=_0x55ca[_0x13b330];return _0x1f666c;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('Variable,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('Variable,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}exports[_0xa55c('0x17')]=function(_0x24783b){var _0x4cee3c=this;return new Promise(function(_0x3d4c9e,_0x104a99){return db[_0xa55c('0x18')][_0xa55c('0x19')]({'raw':_0x24783b[_0xa55c('0x1a')]?_0x24783b[_0xa55c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x24783b['options']?_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1b')]||null:null,'attributes':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1c')]||null:null,'include':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1d')],function(_0x234372){return{'model':db[_0x234372['model']],'as':_0x234372['as'],'attributes':_0x234372[_0xa55c('0x1c')],'include':_0x234372['include']?_['map'](_0x234372['include'],function(_0x19ae88){return{'model':db[_0x19ae88['model']],'as':_0x19ae88['as'],'attributes':_0x19ae88[_0xa55c('0x1c')],'include':_0x19ae88[_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x19ae88[_0xa55c('0x1d')],function(_0x2313a9){return{'model':db[_0x2313a9[_0xa55c('0x1f')]],'as':_0x2313a9['as'],'attributes':_0x2313a9[_0xa55c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa55c('0xb')](function(_0x192df2){logger[_0xa55c('0x14')](_0xa55c('0x17'),_0x24783b);logger['debug'](_0xa55c('0x17'),_0x24783b,JSON[_0xa55c('0x10')](_0x192df2));_0x3d4c9e(_0x192df2);})[_0xa55c('0x16')](function(_0x906caa){logger['error'](_0xa55c('0x17'),_0x906caa[_0xa55c('0x13')],_0x24783b);_0x104a99(_0x4cee3c[_0xa55c('0x11')](0x1f4,_0x906caa[_0xa55c('0x13')]));});});};
\ No newline at end of file
index d38c83a..5dedc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea3c=['reset','pull','/restart','restart','/migrations','migrations','exports','../../components/auth/service','isAuthenticated','canUpdate','fetch','get'];(function(_0x6e0cd1,_0x3d0072){var _0x3c6761=function(_0xc1faa6){while(--_0xc1faa6){_0x6e0cd1['push'](_0x6e0cd1['shift']());}};_0x3c6761(++_0x3d0072);}(_0xea3c,0x1db));var _0xcea3=function(_0xf3b1df,_0x452eb6){_0xf3b1df=_0xf3b1df-0x0;var _0x371354=_0xea3c[_0xf3b1df];return _0x371354;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0xcea3('0x0'));var controller=require('./version.controller');router['get']('/',controller['index']);router['get']('/fetch',auth[_0xcea3('0x1')](),auth[_0xcea3('0x2')](),controller[_0xcea3('0x3')]);router[_0xcea3('0x4')]('/reset',auth[_0xcea3('0x1')](),auth[_0xcea3('0x2')](),controller[_0xcea3('0x5')]);router['get']('/pull',auth['isAuthenticated'](),auth[_0xcea3('0x2')](),controller[_0xcea3('0x6')]);router[_0xcea3('0x4')](_0xcea3('0x7'),auth['isAuthenticated'](),controller[_0xcea3('0x8')]);router[_0xcea3('0x4')](_0xcea3('0x9'),controller[_0xcea3('0xa')]);module[_0xcea3('0xb')]=router;
\ No newline at end of file
+var _0x4adc=['../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','pull','/restart','restart','/migrations','migrations','exports','express','Router'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x4adc,0x1d2));var _0xc4ad=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4adc[_0x167cc1];return _0x10bc4b;};'use strict';var express=require(_0xc4ad('0x0'));var router=express[_0xc4ad('0x1')]();var auth=require(_0xc4ad('0x2'));var controller=require(_0xc4ad('0x3'));router[_0xc4ad('0x4')]('/',controller[_0xc4ad('0x5')]);router[_0xc4ad('0x4')](_0xc4ad('0x6'),auth[_0xc4ad('0x7')](),auth[_0xc4ad('0x8')](),controller['fetch']);router[_0xc4ad('0x4')](_0xc4ad('0x9'),auth[_0xc4ad('0x7')](),auth[_0xc4ad('0x8')](),controller[_0xc4ad('0xa')]);router['get'](_0xc4ad('0xb'),auth['isAuthenticated'](),auth[_0xc4ad('0x8')](),controller[_0xc4ad('0xc')]);router['get'](_0xc4ad('0xd'),auth[_0xc4ad('0x7')](),controller[_0xc4ad('0xe')]);router[_0xc4ad('0x4')](_0xc4ad('0xf'),controller[_0xc4ad('0x10')]);module[_0xc4ad('0x11')]=router;
\ No newline at end of file
index 8739475..cf97c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be1=['lodash','pkginfo','version','compare-versions','child_process','../../config/pm2','../../config/logger','update','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','error','info','git\x20fetch','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','server','length','replace','.js','sort','sequelize','Migration','getQueryInterface','constructor','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path'];(function(_0x25e607,_0x12ebef){var _0x2d355f=function(_0x4cf6dd){while(--_0x4cf6dd){_0x25e607['push'](_0x25e607['shift']());}};_0x2d355f(++_0x12ebef);}(_0x8be1,0x16a));var _0x18be=function(_0x1ce49d,_0x3bdae2){_0x1ce49d=_0x1ce49d-0x0;var _0x200eb2=_0x8be1[_0x1ce49d];return _0x200eb2;};'use strict';var Umzug=require(_0x18be('0x0'));var path=require(_0x18be('0x1'));var fs=require('fs');var _=require(_0x18be('0x2'));var pkginfo=require(_0x18be('0x3'))(module,_0x18be('0x4'));var compareVersions=require(_0x18be('0x5'));var exec=require(_0x18be('0x6'))['exec'];var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var pm2=require(_0x18be('0x7'));var logger=require(_0x18be('0x8'))(_0x18be('0x9'));var git=require('simple-git')(config[_0x18be('0xa')]);exports[_0x18be('0xb')]=function(_0x2e65b8,_0x30a1ef){var _0x520194={'current':module[_0x18be('0xc')][_0x18be('0x4')],'phonebar':0x2};if(_0x2e65b8['query']&&_0x2e65b8[_0x18be('0xd')][_0x18be('0xe')]){return git[_0x18be('0xf')]()[_0x18be('0x10')](function(_0x22305a,_0x48cc90){_0x520194['latest']=(_0x22305a?module[_0x18be('0xc')][_0x18be('0x4')]:_0x48cc90[_0x18be('0xe')])||_0x18be('0x11');return _0x30a1ef[_0x18be('0x12')](0xc8)[_0x18be('0x13')](_0x520194);});}else{return _0x30a1ef[_0x18be('0x12')](0xc8)[_0x18be('0x13')](_0x520194);}};exports['fetch']=function(_0x23c497,_0x477f25){return git[_0x18be('0xf')]([_0x18be('0x14'),_0x18be('0x15')],function(_0x3b51d6){if(_0x3b51d6){logger[_0x18be('0x16')](_0x3b51d6);return _0x477f25['status'](0x1f4)['json'](_0x3b51d6);}logger[_0x18be('0x17')](_0x18be('0x18'));return _0x477f25['status'](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x5abca9,_0x32f46c){return git['reset'](['--hard',_0x18be('0x19')],function(_0x29d75b){if(_0x29d75b){logger[_0x18be('0x16')](_0x29d75b);return _0x32f46c[_0x18be('0x12')](0x1f4)[_0x18be('0x13')](_0x29d75b);}logger[_0x18be('0x17')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x32f46c['status'](0xc8)['json']({'output':_0x18be('0x1a')});});};exports[_0x18be('0x1b')]=function(_0x26eb38,_0x3062fd){exec(_0x18be('0x1c'),function(_0x268f66,_0xf8ff8c,_0x499fc4){logger['info'](_0xf8ff8c);logger[_0x18be('0x17')](_0x499fc4);if(_0x268f66){logger['error'](_0x268f66);return _0x3062fd[_0x18be('0x12')](0x1f4)[_0x18be('0x13')](_0x268f66);}return _0x3062fd['status'](0xc8)[_0x18be('0x13')]({'output':_0xf8ff8c});});};exports[_0x18be('0x1d')]=function(_0x3999d2,_0x1bcff6){return pm2[_0x18be('0x1d')](_0x18be('0x1e'))[_0x18be('0x1f')](function(_0x4730f9){logger[_0x18be('0x17')](_0x18be('0x20'),_0x4730f9);return _0x1bcff6[_0x18be('0x12')](0xc8)[_0x18be('0x13')]({'output':_0x18be('0x21')});})['catch'](function(_0xb944fd){logger['error'](_0xb944fd);return _0x1bcff6[_0x18be('0x12')](0x1f4)[_0x18be('0x13')](_0xb944fd);});};exports[_0x18be('0x22')]=function(_0x4ecefa,_0x215eed){var _0x42a4f7=fs['readdirSync'](path['join'](config['root'],_0x18be('0x23'),_0x18be('0x22')));var _0x2805fc=[];for(var _0x312152=0x0;_0x312152<_0x42a4f7[_0x18be('0x24')];_0x312152++){var _0x1d7aa7=_0x42a4f7[_0x312152][_0x18be('0x25')](_0x18be('0x26'),'');if(compareVersions(module[_0x18be('0xc')][_0x18be('0x4')],_0x1d7aa7)===-0x1){_0x2805fc['push'](_0x1d7aa7);}}if(_0x2805fc[_0x18be('0x24')]){var _0x4e49d7=_0x2805fc[_0x18be('0x27')](compareVersions);var _0x394a70=new Umzug({'storage':_0x18be('0x28'),'storageOptions':{'model':db[_0x18be('0x29')],'modelName':'Migration','columnName':'version'},'migrations':{'params':[db['sequelize'][_0x18be('0x2a')](),db[_0x18be('0x28')][_0x18be('0x2b')],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[_0x18be('0x2c')](config[_0x18be('0xa')],_0x18be('0x23'),'migrations'),'pattern':/\.js$/}});_0x394a70['up']({'migrations':_[_0x18be('0x2d')](_0x4e49d7,function(_0x1db2c1){return _0x1db2c1+_0x18be('0x26');})})['then'](function(){return _0x215eed[_0x18be('0x12')](0xc8)[_0x18be('0x13')]({'output':_0x18be('0x2e')+module[_0x18be('0xc')]['version']+_0x18be('0x2f')+_[_0x18be('0x30')](_0x4e49d7),'migrations':_[_0x18be('0x2c')](_0x4e49d7)});})[_0x18be('0x31')](function(_0x255df7){if(_0x255df7 instanceof db['sequelize'][_0x18be('0x32')]){return _0x215eed['status'](0xc8)[_0x18be('0x13')]({'output':_0x18be('0x33')});}else{return _0x215eed['status'](0x1f4)['json'](_0x255df7);}});}else{return _0x215eed[_0x18be('0x12')](0xc8)[_0x18be('0x13')]({'output':_0x18be('0x33')});}};
\ No newline at end of file
+var _0xaa14=['sort','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','map','.js','then','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','status','json','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','length','replace','push'];(function(_0x2773f1,_0x50d045){var _0x47f446=function(_0x42307f){while(--_0x42307f){_0x2773f1['push'](_0x2773f1['shift']());}};_0x47f446(++_0x50d045);}(_0xaa14,0xe9));var _0x4aa1=function(_0x4ab7a5,_0x35eb99){_0x4ab7a5=_0x4ab7a5-0x0;var _0x5f5013=_0xaa14[_0x4ab7a5];return _0x5f5013;};'use strict';var Umzug=require(_0x4aa1('0x0'));var path=require(_0x4aa1('0x1'));var fs=require('fs');var _=require(_0x4aa1('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x4aa1('0x3'));var exec=require(_0x4aa1('0x4'))[_0x4aa1('0x5')];var db=require(_0x4aa1('0x6'))['db'];var config=require(_0x4aa1('0x7'));var pm2=require(_0x4aa1('0x8'));var logger=require(_0x4aa1('0x9'))(_0x4aa1('0xa'));var git=require(_0x4aa1('0xb'))(config[_0x4aa1('0xc')]);exports[_0x4aa1('0xd')]=function(_0x5efadc,_0x11cc73){var _0x4da0b5={'current':module[_0x4aa1('0xe')][_0x4aa1('0xf')],'phonebar':0x2};if(_0x5efadc[_0x4aa1('0x10')]&&_0x5efadc[_0x4aa1('0x10')][_0x4aa1('0x11')]){return git[_0x4aa1('0x12')]()['tags'](function(_0x5e057f,_0x336074){_0x4da0b5[_0x4aa1('0x11')]=(_0x5e057f?module[_0x4aa1('0xe')][_0x4aa1('0xf')]:_0x336074[_0x4aa1('0x11')])||'2.0.0';return _0x11cc73['status'](0xc8)['json'](_0x4da0b5);});}else{return _0x11cc73[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')](_0x4da0b5);}};exports[_0x4aa1('0x12')]=function(_0x5e1108,_0xb02af8){return git[_0x4aa1('0x12')]([_0x4aa1('0x15'),_0x4aa1('0x16')],function(_0x3281b7){if(_0x3281b7){logger[_0x4aa1('0x17')](_0x3281b7);return _0xb02af8[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x3281b7);}logger[_0x4aa1('0x18')](_0x4aa1('0x19'));return _0xb02af8[_0x4aa1('0x13')](0xc8)['json']({'output':_0x4aa1('0x1a')});});};exports[_0x4aa1('0x1b')]=function(_0x18c8aa,_0x4f8f00){return git[_0x4aa1('0x1b')]([_0x4aa1('0x1c'),_0x4aa1('0x1d')],function(_0x5a674b){if(_0x5a674b){logger[_0x4aa1('0x17')](_0x5a674b);return _0x4f8f00[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x5a674b);}logger[_0x4aa1('0x18')](_0x4aa1('0x1e'));return _0x4f8f00['status'](0xc8)['json']({'output':'git\x20reset\x20--hard'});});};exports[_0x4aa1('0x1f')]=function(_0x419486,_0x13e61a){exec(_0x4aa1('0x20'),function(_0x353154,_0x551d1d,_0x3c3da0){logger['info'](_0x551d1d);logger['info'](_0x3c3da0);if(_0x353154){logger[_0x4aa1('0x17')](_0x353154);return _0x13e61a['status'](0x1f4)[_0x4aa1('0x14')](_0x353154);}return _0x13e61a[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x551d1d});});};exports[_0x4aa1('0x21')]=function(_0x5cbbf9,_0x498cfa){return pm2[_0x4aa1('0x21')](_0x4aa1('0x22'))['then'](function(_0x349d66){logger[_0x4aa1('0x18')]('pm2\x20restart\x20motion\x20%s',_0x349d66);return _0x498cfa['status'](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x23')});})['catch'](function(_0x18f294){logger['error'](_0x18f294);return _0x498cfa[_0x4aa1('0x13')](0x1f4)[_0x4aa1('0x14')](_0x18f294);});};exports[_0x4aa1('0x24')]=function(_0x100af4,_0x587aca){var _0x75d1da=fs[_0x4aa1('0x25')](path[_0x4aa1('0x26')](config['root'],'server','migrations'));var _0x1da15a=[];for(var _0x569259=0x0;_0x569259<_0x75d1da[_0x4aa1('0x27')];_0x569259++){var _0x54cb39=_0x75d1da[_0x569259][_0x4aa1('0x28')]('.js','');if(compareVersions(module[_0x4aa1('0xe')][_0x4aa1('0xf')],_0x54cb39)===-0x1){_0x1da15a[_0x4aa1('0x29')](_0x54cb39);}}if(_0x1da15a[_0x4aa1('0x27')]){var _0x134496=_0x1da15a[_0x4aa1('0x2a')](compareVersions);var _0x195fb7=new Umzug({'storage':_0x4aa1('0x2b'),'storageOptions':{'model':db[_0x4aa1('0x2c')],'modelName':_0x4aa1('0x2c'),'columnName':_0x4aa1('0xf')},'migrations':{'params':[db[_0x4aa1('0x2b')]['getQueryInterface'](),db[_0x4aa1('0x2b')][_0x4aa1('0x2d')],function(){throw new Error(_0x4aa1('0x2e'));}],'path':path[_0x4aa1('0x26')](config['root'],_0x4aa1('0x2f'),'migrations'),'pattern':/\.js$/}});_0x195fb7['up']({'migrations':_[_0x4aa1('0x30')](_0x134496,function(_0x2d072d){return _0x2d072d+_0x4aa1('0x31');})})[_0x4aa1('0x32')](function(){return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x4aa1('0xe')][_0x4aa1('0xf')]+'\x20to\x20'+_[_0x4aa1('0x33')](_0x134496),'migrations':_['join'](_0x134496)});})[_0x4aa1('0x34')](function(_0x59f708){if(_0x59f708 instanceof db[_0x4aa1('0x2b')][_0x4aa1('0x35')]){return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x36')});}else{return _0x587aca[_0x4aa1('0x13')](0x1f4)['json'](_0x59f708);}});}else{return _0x587aca[_0x4aa1('0x13')](0xc8)[_0x4aa1('0x14')]({'output':_0x4aa1('0x36')});}};
\ No newline at end of file
index aa87ab5..28a7682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d92=['update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','/describe','isAuthenticated','describe','/:id','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d92,0x159));var _0x24d9=function(_0x5f4cd7,_0x459c44){_0x5f4cd7=_0x5f4cd7-0x0;var _0x47c93f=_0x4d92[_0x5f4cd7];return _0x47c93f;};'use strict';var multer=require(_0x24d9('0x0'));var util=require(_0x24d9('0x1'));var path=require(_0x24d9('0x2'));var timeout=require(_0x24d9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x24d9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x24d9('0x5'));var config=require(_0x24d9('0x6'));var controller=require(_0x24d9('0x7'));router[_0x24d9('0x8')]('/',auth['isAuthenticated'](),controller[_0x24d9('0x9')]);router['get'](_0x24d9('0xa'),auth[_0x24d9('0xb')](),controller[_0x24d9('0xc')]);router[_0x24d9('0x8')](_0x24d9('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x24d9('0xe')]('/',auth[_0x24d9('0xb')](),controller['create']);router['put'](_0x24d9('0xd'),auth['isAuthenticated'](),controller[_0x24d9('0xf')]);router[_0x24d9('0x10')](_0x24d9('0xd'),auth[_0x24d9('0xb')](),controller['destroy']);module[_0x24d9('0x11')]=router;
\ No newline at end of file
+var _0xd447=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','isAuthenticated','describe','put','delete','/:id','destroy','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd447,0xbe));var _0x7d44=function(_0x5a7708,_0x2ae50f){_0x5a7708=_0x5a7708-0x0;var _0x5e3d5a=_0xd447[_0x5a7708];return _0x5e3d5a;};'use strict';var multer=require('multer');var util=require(_0x7d44('0x0'));var path=require(_0x7d44('0x1'));var timeout=require(_0x7d44('0x2'));var express=require(_0x7d44('0x3'));var router=express[_0x7d44('0x4')]();var fs_extra=require(_0x7d44('0x5'));var auth=require(_0x7d44('0x6'));var interaction=require(_0x7d44('0x7'));var config=require(_0x7d44('0x8'));var controller=require(_0x7d44('0x9'));router[_0x7d44('0xa')]('/',auth['isAuthenticated'](),controller[_0x7d44('0xb')]);router[_0x7d44('0xa')]('/describe',auth[_0x7d44('0xc')](),controller[_0x7d44('0xd')]);router[_0x7d44('0xa')]('/:id',auth[_0x7d44('0xc')](),controller['show']);router['post']('/',auth[_0x7d44('0xc')](),controller['create']);router[_0x7d44('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x7d44('0xf')](_0x7d44('0x10'),auth['isAuthenticated'](),controller[_0x7d44('0x11')]);module[_0x7d44('0x12')]=router;
\ No newline at end of file
index 42fe82c..5800334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e2=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x4d3eb5,_0x511afb){var _0x4b3b6a=function(_0x220f41){while(--_0x220f41){_0x4d3eb5['push'](_0x4d3eb5['shift']());}};_0x4b3b6a(++_0x511afb);}(_0x79e2,0x1c3));var _0x279e=function(_0x5cfec9,_0x303ef8){_0x5cfec9=_0x5cfec9-0x0;var _0xfaff2c=_0x79e2[_0x5cfec9];return _0xfaff2c;};'use strict';var Sequelize=require(_0x279e('0x0'));module['exports']={'type':{'type':Sequelize[_0x279e('0x1')]},'uniqueid':{'type':Sequelize[_0x279e('0x1')]},'calleridnum':{'type':Sequelize[_0x279e('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x279e('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x279e('0x1')]},'agentcalledAt':{'type':Sequelize[_0x279e('0x2')]},'agentconnectAt':{'type':Sequelize[_0x279e('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x279e('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x279e('0x3')]},'agentcomplete':{'type':Sequelize[_0x279e('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x279e('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x279e('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x279e('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x279e('0x3')]},'reason':{'type':Sequelize[_0x279e('0x1')]},'lastevent':{'type':Sequelize[_0x279e('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x279e('0x3')]},'channelstatedesc':{'type':Sequelize[_0x279e('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x279e('0x1')]},'language':{'type':Sequelize[_0x279e('0x1')]},'accountcode':{'type':Sequelize[_0x279e('0x1')]},'context':{'type':Sequelize[_0x279e('0x1')]},'exten':{'type':Sequelize[_0x279e('0x1')]},'priority':{'type':Sequelize[_0x279e('0x1')]},'destchannel':{'type':Sequelize[_0x279e('0x1')]},'destchannelstate':{'type':Sequelize[_0x279e('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x279e('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x279e('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x279e('0x1')]},'destlanguage':{'type':Sequelize[_0x279e('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x279e('0x1')]},'destexten':{'type':Sequelize[_0x279e('0x1')]},'destpriority':{'type':Sequelize[_0x279e('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x279e('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x279e('0x1')]},'transfer':{'type':Sequelize[_0x279e('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x279e('0x1')],'comment':_0x279e('0x5')},'transferexten':{'type':Sequelize[_0x279e('0x1')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x279e('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x55f1=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x151178,_0x22d5e7){var _0x5339bb=function(_0x2a7bc2){while(--_0x2a7bc2){_0x151178['push'](_0x151178['shift']());}};_0x5339bb(++_0x22d5e7);}(_0x55f1,0x9b));var _0x155f=function(_0x245e1c,_0x1213a8){_0x245e1c=_0x245e1c-0x0;var _0x4308ca=_0x55f1[_0x245e1c];return _0x4308ca;};'use strict';var Sequelize=require(_0x155f('0x0'));module['exports']={'type':{'type':Sequelize[_0x155f('0x1')]},'uniqueid':{'type':Sequelize[_0x155f('0x1')]},'calleridnum':{'type':Sequelize[_0x155f('0x1')]},'calleridname':{'type':Sequelize[_0x155f('0x1')]},'queue':{'type':Sequelize[_0x155f('0x1')]},'interface':{'type':Sequelize[_0x155f('0x1')]},'membername':{'type':Sequelize[_0x155f('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0x155f('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0x155f('0x2')]},'holdtime':{'type':Sequelize[_0x155f('0x3')]},'agentcomplete':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x155f('0x3')]},'agentacw':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x155f('0x3')]},'reason':{'type':Sequelize[_0x155f('0x1')]},'lastevent':{'type':Sequelize[_0x155f('0x1')]},'channel':{'type':Sequelize[_0x155f('0x1')]},'channelstate':{'type':Sequelize[_0x155f('0x3')]},'channelstatedesc':{'type':Sequelize[_0x155f('0x1')]},'connectedlinenum':{'type':Sequelize[_0x155f('0x1')]},'connectedlinename':{'type':Sequelize[_0x155f('0x1')]},'language':{'type':Sequelize[_0x155f('0x1')]},'accountcode':{'type':Sequelize[_0x155f('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x155f('0x1')]},'priority':{'type':Sequelize[_0x155f('0x1')]},'destchannel':{'type':Sequelize[_0x155f('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x155f('0x1')]},'destcalleridname':{'type':Sequelize[_0x155f('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x155f('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x155f('0x1')]},'destlanguage':{'type':Sequelize[_0x155f('0x1')]},'destaccountcode':{'type':Sequelize[_0x155f('0x1')]},'destcontext':{'type':Sequelize[_0x155f('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x155f('0x1')]},'destuniqueid':{'type':Sequelize[_0x155f('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x155f('0x1')]},'transfer':{'type':Sequelize[_0x155f('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x155f('0x1')],'comment':_0x155f('0x5')},'transferexten':{'type':Sequelize[_0x155f('0x1')]},'transferuniqueid':{'type':Sequelize[_0x155f('0x1')]},'agententerreason':{'type':Sequelize[_0x155f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index d59ef05..59a97c3 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(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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 e3cb10d..fde2663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c32=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util'];(function(_0x540605,_0x2310c3){var _0x89d412=function(_0x16a5dd){while(--_0x16a5dd){_0x540605['push'](_0x540605['shift']());}};_0x89d412(++_0x2310c3);}(_0x8c32,0x130));var _0x28c3=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x8c32[_0x12fc8d];return _0x3f9d04;};'use strict';var _=require(_0x28c3('0x0'));var util=require(_0x28c3('0x1'));var logger=require(_0x28c3('0x2'))(_0x28c3('0x3'));var moment=require(_0x28c3('0x4'));var BPromise=require(_0x28c3('0x5'));var rp=require(_0x28c3('0x6'));var fs=require('fs');var path=require(_0x28c3('0x7'));var rimraf=require(_0x28c3('0x8'));var config=require(_0x28c3('0x9'));var attributes=require(_0x28c3('0xa'));module[_0x28c3('0xb')]=function(_0x537b4f,_0x2861c9){return _0x537b4f[_0x28c3('0xc')](_0x28c3('0xd'),attributes,{'tableName':_0x28c3('0xe'),'paranoid':![],'indexes':[{'fields':[_0x28c3('0xf'),_0x28c3('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ab0=['moment','bluebird','rimraf','../../config/environment','exports','define','VoiceAgentReport','report_agent','destuniqueid','util','../../config/logger','api'];(function(_0x20f7b0,_0x376c05){var _0x5d31e9=function(_0x5dc16c){while(--_0x5dc16c){_0x20f7b0['push'](_0x20f7b0['shift']());}};_0x5d31e9(++_0x376c05);}(_0x4ab0,0xd5));var _0x04ab=function(_0x58f460,_0x510933){_0x58f460=_0x58f460-0x0;var _0x548965=_0x4ab0[_0x58f460];return _0x548965;};'use strict';var _=require('lodash');var util=require(_0x04ab('0x0'));var logger=require(_0x04ab('0x1'))(_0x04ab('0x2'));var moment=require(_0x04ab('0x3'));var BPromise=require(_0x04ab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x04ab('0x5'));var config=require(_0x04ab('0x6'));var attributes=require('./voiceAgentReport.attributes');module[_0x04ab('0x7')]=function(_0x2c5730,_0x4edd2e){return _0x2c5730[_0x04ab('0x8')](_0x04ab('0x9'),attributes,{'tableName':_0x04ab('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x04ab('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4fcc8b0..813610c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ec=['create','body','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','VoiceAgentReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x41b0b5,_0x3d964b){var _0x13b46c=function(_0x10188a){while(--_0x10188a){_0x41b0b5['push'](_0x41b0b5['shift']());}};_0x13b46c(++_0x3d964b);}(_0x26ec,0x197));var _0xc26e=function(_0x377d82,_0x4aad98){_0x377d82=_0x377d82-0x0;var _0x5d46f6=_0x26ec[_0x377d82];return _0x5d46f6;};'use strict';var _=require(_0xc26e('0x0'));var util=require(_0xc26e('0x1'));var moment=require(_0xc26e('0x2'));var BPromise=require(_0xc26e('0x3'));var rs=require(_0xc26e('0x4'));var fs=require('fs');var Redis=require(_0xc26e('0x5'));var db=require(_0xc26e('0x6'))['db'];var utils=require(_0xc26e('0x7'));var logger=require('../../config/logger')(_0xc26e('0x8'));var config=require(_0xc26e('0x9'));var jayson=require(_0xc26e('0xa'));var client=jayson[_0xc26e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5150f1,_0x458a9f,_0x3ce1cd){return new BPromise(function(_0x3f345f,_0x446204){return client[_0xc26e('0xc')](_0x5150f1,_0x3ce1cd)[_0xc26e('0xd')](function(_0x3f8963){logger[_0xc26e('0xe')](_0xc26e('0xf'),_0x458a9f,'request\x20sent');logger[_0xc26e('0x10')](_0xc26e('0x11'),_0x458a9f,'request\x20sent',JSON[_0xc26e('0x12')](_0x3f8963));if(_0x3f8963[_0xc26e('0x13')]){if(_0x3f8963['error'][_0xc26e('0x14')]===0x1f4){logger[_0xc26e('0x13')](_0xc26e('0xf'),_0x458a9f,_0x3f8963['error'][_0xc26e('0x15')]);return _0x446204(_0x3f8963[_0xc26e('0x13')][_0xc26e('0x15')]);}logger[_0xc26e('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x458a9f,_0x3f8963[_0xc26e('0x13')][_0xc26e('0x15')]);return _0x3f345f(_0x3f8963[_0xc26e('0x13')]['message']);}else{logger[_0xc26e('0xe')](_0xc26e('0xf'),_0x458a9f,_0xc26e('0x16'));_0x3f345f(_0x3f8963[_0xc26e('0x17')][_0xc26e('0x15')]);}})[_0xc26e('0x18')](function(_0x343c8c){logger[_0xc26e('0x13')](_0xc26e('0xf'),_0x458a9f,_0x343c8c);_0x446204(_0x343c8c);});});}exports['CreateVoiceAgentReport']=function(_0x33b792){var _0x2467a0=this;return new Promise(function(_0x34e377,_0x3924ce){return db['VoiceAgentReport'][_0xc26e('0x19')](_0x33b792[_0xc26e('0x1a')],{'raw':_0x33b792[_0xc26e('0x1b')]?_0x33b792['options'][_0xc26e('0x1c')]===undefined?!![]:![]:!![]})[_0xc26e('0xd')](function(_0x3d408e){logger[_0xc26e('0xe')]('CreateVoiceAgentReport',_0x33b792);logger['debug'](_0xc26e('0x1d'),_0x33b792,JSON[_0xc26e('0x12')](_0x3d408e));_0x34e377(_0x3d408e);})[_0xc26e('0x18')](function(_0x414670){logger['error'](_0xc26e('0x1d'),_0x414670[_0xc26e('0x15')],_0x33b792);_0x3924ce(_0x2467a0['error'](0x1f4,_0x414670[_0xc26e('0x15')]));});});};exports[_0xc26e('0x1e')]=function(_0x2d5b86){var _0x56adf5=this;return new Promise(function(_0x283e63,_0x46b67){return db[_0xc26e('0x1f')][_0xc26e('0x20')](_0x2d5b86[_0xc26e('0x1a')],{'raw':_0x2d5b86['options']?_0x2d5b86[_0xc26e('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d5b86[_0xc26e('0x1b')]?_0x2d5b86[_0xc26e('0x1b')][_0xc26e('0x21')]||null:null,'attributes':_0x2d5b86[_0xc26e('0x1b')]?_0x2d5b86[_0xc26e('0x1b')][_0xc26e('0x22')]||null:null,'limit':_0x2d5b86[_0xc26e('0x1b')]?_0x2d5b86[_0xc26e('0x1b')][_0xc26e('0x23')]||null:null})[_0xc26e('0xd')](function(_0x2a4b42){logger[_0xc26e('0xe')]('UpdateVoiceAgentReport',_0x2d5b86);logger[_0xc26e('0x10')](_0xc26e('0x1e'),_0x2d5b86,JSON[_0xc26e('0x12')](_0x2a4b42));_0x283e63(_0x2a4b42);})[_0xc26e('0x18')](function(_0x4472ad){logger[_0xc26e('0x13')](_0xc26e('0x1e'),_0x4472ad[_0xc26e('0x15')],_0x2d5b86);_0x46b67(_0x56adf5['error'](0x1f4,_0x4472ad[_0xc26e('0x15')]));});});};
\ No newline at end of file
+var _0x64ba=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','VoiceAgentReport','body','options','catch','UpdateVoiceAgentReport','where','attributes','limit','lodash','util','moment','bluebird'];(function(_0x533e4e,_0x4eba54){var _0x1f14bb=function(_0x33a485){while(--_0x33a485){_0x533e4e['push'](_0x533e4e['shift']());}};_0x1f14bb(++_0x4eba54);}(_0x64ba,0x1d8));var _0xa64b=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x64ba[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require(_0xa64b('0x0'));var util=require(_0xa64b('0x1'));var moment=require(_0xa64b('0x2'));var BPromise=require(_0xa64b('0x3'));var rs=require(_0xa64b('0x4'));var fs=require('fs');var Redis=require(_0xa64b('0x5'));var db=require(_0xa64b('0x6'))['db'];var utils=require(_0xa64b('0x7'));var logger=require(_0xa64b('0x8'))(_0xa64b('0x9'));var config=require(_0xa64b('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa64b('0xb')][_0xa64b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3d487b,_0x1456be,_0x4f8226){return new BPromise(function(_0x3a2797,_0x5e2be8){return client[_0xa64b('0xd')](_0x3d487b,_0x4f8226)[_0xa64b('0xe')](function(_0x504e94){logger[_0xa64b('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x1456be,'request\x20sent');logger[_0xa64b('0x10')](_0xa64b('0x11'),_0x1456be,_0xa64b('0x12'),JSON[_0xa64b('0x13')](_0x504e94));if(_0x504e94[_0xa64b('0x14')]){if(_0x504e94['error'][_0xa64b('0x15')]===0x1f4){logger[_0xa64b('0x14')](_0xa64b('0x16'),_0x1456be,_0x504e94['error']['message']);return _0x5e2be8(_0x504e94['error']['message']);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x1456be,_0x504e94[_0xa64b('0x14')][_0xa64b('0x17')]);return _0x3a2797(_0x504e94[_0xa64b('0x14')]['message']);}else{logger[_0xa64b('0xf')](_0xa64b('0x16'),_0x1456be,_0xa64b('0x12'));_0x3a2797(_0x504e94[_0xa64b('0x18')][_0xa64b('0x17')]);}})['catch'](function(_0x28f5f0){logger[_0xa64b('0x14')](_0xa64b('0x16'),_0x1456be,_0x28f5f0);_0x5e2be8(_0x28f5f0);});});}exports[_0xa64b('0x19')]=function(_0x13f1fc){var _0x36f356=this;return new Promise(function(_0xa9838c,_0x17ce20){return db[_0xa64b('0x1a')]['create'](_0x13f1fc[_0xa64b('0x1b')],{'raw':_0x13f1fc['options']?_0x13f1fc[_0xa64b('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xa64b('0xe')](function(_0x46a836){logger[_0xa64b('0xf')](_0xa64b('0x19'),_0x13f1fc);logger[_0xa64b('0x10')](_0xa64b('0x19'),_0x13f1fc,JSON[_0xa64b('0x13')](_0x46a836));_0xa9838c(_0x46a836);})[_0xa64b('0x1d')](function(_0x580a83){logger['error'](_0xa64b('0x19'),_0x580a83[_0xa64b('0x17')],_0x13f1fc);_0x17ce20(_0x36f356['error'](0x1f4,_0x580a83['message']));});});};exports[_0xa64b('0x1e')]=function(_0x3622bc){var _0x4fbaa7=this;return new Promise(function(_0x18067a,_0x5902d4){return db[_0xa64b('0x1a')]['update'](_0x3622bc[_0xa64b('0x1b')],{'raw':_0x3622bc['options']?_0x3622bc['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x1f')]||null:null,'attributes':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x20')]||null:null,'limit':_0x3622bc[_0xa64b('0x1c')]?_0x3622bc[_0xa64b('0x1c')][_0xa64b('0x21')]||null:null})[_0xa64b('0xe')](function(_0x1cef12){logger[_0xa64b('0xf')](_0xa64b('0x1e'),_0x3622bc);logger[_0xa64b('0x10')](_0xa64b('0x1e'),_0x3622bc,JSON[_0xa64b('0x13')](_0x1cef12));_0x18067a(_0x1cef12);})['catch'](function(_0xc71032){logger[_0xa64b('0x14')](_0xa64b('0x1e'),_0xc71032[_0xa64b('0x17')],_0x3622bc);_0x5902d4(_0x4fbaa7[_0xa64b('0x14')](0x1f4,_0xc71032[_0xa64b('0x17')]));});});};
\ No newline at end of file
index 919ad35..ed89d35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['isAuthenticated','index','/describe','describe','get','show','post','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xeec6,0x1c2));var _0x6eec=function(_0x5a26f5,_0x196300){_0x5a26f5=_0x5a26f5-0x0;var _0x2e9ef7=_0xeec6[_0x5a26f5];return _0x2e9ef7;};'use strict';var multer=require(_0x6eec('0x0'));var util=require(_0x6eec('0x1'));var path=require(_0x6eec('0x2'));var timeout=require(_0x6eec('0x3'));var express=require('express');var router=express[_0x6eec('0x4')]();var fs_extra=require(_0x6eec('0x5'));var auth=require(_0x6eec('0x6'));var interaction=require(_0x6eec('0x7'));var config=require(_0x6eec('0x8'));var controller=require(_0x6eec('0x9'));router['get']('/',auth[_0x6eec('0xa')](),controller[_0x6eec('0xb')]);router['get'](_0x6eec('0xc'),auth[_0x6eec('0xa')](),controller[_0x6eec('0xd')]);router[_0x6eec('0xe')]('/:id',auth[_0x6eec('0xa')](),controller[_0x6eec('0xf')]);router[_0x6eec('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6eec('0x11'),auth[_0x6eec('0xa')](),controller['update']);router['delete'](_0x6eec('0x11'),auth['isAuthenticated'](),controller[_0x6eec('0x12')]);module[_0x6eec('0x13')]=router;
\ No newline at end of file
+var _0x57d4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','/:id','show','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x57d4,0x78));var _0x457d=function(_0x31dcc9,_0x476fc7){_0x31dcc9=_0x31dcc9-0x0;var _0x324aec=_0x57d4[_0x31dcc9];return _0x324aec;};'use strict';var multer=require(_0x457d('0x0'));var util=require(_0x457d('0x1'));var path=require('path');var timeout=require(_0x457d('0x2'));var express=require(_0x457d('0x3'));var router=express[_0x457d('0x4')]();var fs_extra=require(_0x457d('0x5'));var auth=require(_0x457d('0x6'));var interaction=require(_0x457d('0x7'));var config=require(_0x457d('0x8'));var controller=require(_0x457d('0x9'));router[_0x457d('0xa')]('/',auth[_0x457d('0xb')](),controller[_0x457d('0xc')]);router['get'](_0x457d('0xd'),auth[_0x457d('0xb')](),controller['describe']);router['get'](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x457d('0x10')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x11')]);router[_0x457d('0x12')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x13')]);module[_0x457d('0x14')]=router;
\ No newline at end of file
index 3f60942..0c7df44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1280=['DATE','INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound','inbound-fax','dialer'];(function(_0x18f90e,_0x25a7f8){var _0x11cb87=function(_0x204815){while(--_0x204815){_0x18f90e['push'](_0x18f90e['shift']());}};_0x11cb87(++_0x25a7f8);}(_0x1280,0xac));var _0x0128=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0x1280[_0x4702ee];return _0x62ca7d;};'use strict';var Sequelize=require(_0x0128('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x0128('0x1')]},'type':{'type':Sequelize[_0x0128('0x2')](_0x0128('0x3'),_0x0128('0x4'),_0x0128('0x5'),_0x0128('0x6'),'outbound-fax',_0x0128('0x7'))},'tag':{'type':Sequelize[_0x0128('0x1')]},'accountcode':{'type':Sequelize[_0x0128('0x1')]},'source':{'type':Sequelize[_0x0128('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x0128('0x1')]},'channel':{'type':Sequelize[_0x0128('0x1')]},'destinationchannel':{'type':Sequelize[_0x0128('0x1')]},'lastapplication':{'type':Sequelize[_0x0128('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x0128('0x8')]},'systemanswertime':{'type':Sequelize[_0x0128('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x0128('0x8')]},'duration':{'type':Sequelize[_0x0128('0x9')]},'billableseconds':{'type':Sequelize[_0x0128('0x9')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x0128('0x1')]},'userfield':{'type':Sequelize[_0x0128('0x1')]},'userDisposition':{'type':Sequelize[_0x0128('0x1')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x0128('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x0128('0x1')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0x0128('0x1')]}};
\ No newline at end of file
+var _0x3719=['INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound','outbound-fax','dialer','DATE'];(function(_0x313c4a,_0x9fc91e){var _0x3de44a=function(_0x48fa3d){while(--_0x48fa3d){_0x313c4a['push'](_0x313c4a['shift']());}};_0x3de44a(++_0x9fc91e);}(_0x3719,0x123));var _0x9371=function(_0xed9b68,_0x33f3ba){_0xed9b68=_0xed9b68-0x0;var _0x4da1b1=_0x3719[_0xed9b68];return _0x4da1b1;};'use strict';var Sequelize=require(_0x9371('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x9371('0x1')]},'type':{'type':Sequelize[_0x9371('0x2')](_0x9371('0x3'),_0x9371('0x4'),_0x9371('0x5'),'inbound-fax',_0x9371('0x6'),_0x9371('0x7'))},'tag':{'type':Sequelize[_0x9371('0x1')]},'accountcode':{'type':Sequelize[_0x9371('0x1')]},'source':{'type':Sequelize[_0x9371('0x1')]},'destination':{'type':Sequelize[_0x9371('0x1')]},'destinationcontext':{'type':Sequelize[_0x9371('0x1')]},'callerid':{'type':Sequelize[_0x9371('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x9371('0x1')]},'lastapplication':{'type':Sequelize[_0x9371('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x9371('0x8')]},'answertime':{'type':Sequelize[_0x9371('0x8')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x9371('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x9371('0x1')]},'amaflags':{'type':Sequelize[_0x9371('0x1')]},'userfield':{'type':Sequelize[_0x9371('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x9371('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x9371('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x9371('0x1')]},'routeid':{'type':Sequelize[_0x9371('0x9')]},'sipcallid':{'type':Sequelize[_0x9371('0x1')]}};
\ No newline at end of file
index 57e42eb..c940a18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x4cae58,_0x4d0741){var _0x352477=function(_0x42bab0){while(--_0x42bab0){_0x4cae58['push'](_0x4cae58['shift']());}};_0x352477(++_0x4d0741);}(_0xdb28,0x106));var _0x8db2=function(_0x14cc24,_0xa2f3f7){_0x14cc24=_0x14cc24-0x0;var _0x3cbdc2=_0xdb28[_0x14cc24];return _0x3cbdc2;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
+var _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x36743b,_0x41426a){var _0xc6db05=function(_0xa1afe5){while(--_0xa1afe5){_0x36743b['push'](_0x36743b['shift']());}};_0xc6db05(++_0x41426a);}(_0x0b0e,0x187));var _0xe0b0=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x0b0e[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
index 7a6e5df..6980317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa049=['report_call','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xa049,0x136));var _0x9a04=function(_0x3a831f,_0x31c8a4){_0x3a831f=_0x3a831f-0x0;var _0x26786c=_0xa049[_0x3a831f];return _0x26786c;};'use strict';var _=require('lodash');var util=require(_0x9a04('0x0'));var logger=require(_0x9a04('0x1'))(_0x9a04('0x2'));var moment=require(_0x9a04('0x3'));var BPromise=require(_0x9a04('0x4'));var rp=require(_0x9a04('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9a04('0x6'));var config=require(_0x9a04('0x7'));var attributes=require(_0x9a04('0x8'));module[_0x9a04('0x9')]=function(_0x376afc,_0x15d14a){return _0x376afc[_0x9a04('0xa')](_0x9a04('0xb'),attributes,{'tableName':_0x9a04('0xc'),'paranoid':![],'indexes':[{'fields':[_0x9a04('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3da=['exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x4216ba,_0x5739c5){var _0x2592ca=function(_0x58ecea){while(--_0x58ecea){_0x4216ba['push'](_0x4216ba['shift']());}};_0x2592ca(++_0x5739c5);}(_0xa3da,0x195));var _0xaa3d=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa3da[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xaa3d('0x0'));var util=require(_0xaa3d('0x1'));var logger=require(_0xaa3d('0x2'))(_0xaa3d('0x3'));var moment=require(_0xaa3d('0x4'));var BPromise=require(_0xaa3d('0x5'));var rp=require(_0xaa3d('0x6'));var fs=require('fs');var path=require(_0xaa3d('0x7'));var rimraf=require(_0xaa3d('0x8'));var config=require(_0xaa3d('0x9'));var attributes=require(_0xaa3d('0xa'));module[_0xaa3d('0xb')]=function(_0x392139,_0xbee26){return _0x392139[_0xaa3d('0xc')](_0xaa3d('0xd'),attributes,{'tableName':_0xaa3d('0xe'),'paranoid':![],'indexes':[{'fields':[_0xaa3d('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 19f8076..8a9746b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e9=['request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','include','map','model','stringify','CreateVoiceCallReport','create','body','update','limit','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2fe8fb,_0xe98f56){var _0x301d5d=function(_0x3b720e){while(--_0x3b720e){_0x2fe8fb['push'](_0x2fe8fb['shift']());}};_0x301d5d(++_0xe98f56);}(_0x26e9,0x142));var _0x926e=function(_0x117f85,_0x5afa65){_0x117f85=_0x117f85-0x0;var _0x1c61a7=_0x26e9[_0x117f85];return _0x1c61a7;};'use strict';var _=require(_0x926e('0x0'));var util=require(_0x926e('0x1'));var moment=require(_0x926e('0x2'));var BPromise=require(_0x926e('0x3'));var rs=require(_0x926e('0x4'));var fs=require('fs');var Redis=require(_0x926e('0x5'));var db=require(_0x926e('0x6'))['db'];var utils=require(_0x926e('0x7'));var logger=require(_0x926e('0x8'))(_0x926e('0x9'));var config=require(_0x926e('0xa'));var jayson=require(_0x926e('0xb'));var client=jayson[_0x926e('0xc')][_0x926e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x16f988,_0x1ff76c,_0xfb7fc9){return new BPromise(function(_0x3874c2,_0x5252bb){return client[_0x926e('0xe')](_0x16f988,_0xfb7fc9)[_0x926e('0xf')](function(_0x1aee01){logger[_0x926e('0x10')](_0x926e('0x11'),_0x1ff76c,_0x926e('0x12'));logger[_0x926e('0x13')](_0x926e('0x14'),_0x1ff76c,_0x926e('0x12'),JSON['stringify'](_0x1aee01));if(_0x1aee01[_0x926e('0x15')]){if(_0x1aee01[_0x926e('0x15')]['code']===0x1f4){logger['error'](_0x926e('0x11'),_0x1ff76c,_0x1aee01[_0x926e('0x15')]['message']);return _0x5252bb(_0x1aee01[_0x926e('0x15')][_0x926e('0x16')]);}logger[_0x926e('0x15')](_0x926e('0x11'),_0x1ff76c,_0x1aee01[_0x926e('0x15')][_0x926e('0x16')]);return _0x3874c2(_0x1aee01[_0x926e('0x15')][_0x926e('0x16')]);}else{logger['info'](_0x926e('0x11'),_0x1ff76c,_0x926e('0x12'));_0x3874c2(_0x1aee01[_0x926e('0x17')][_0x926e('0x16')]);}})[_0x926e('0x18')](function(_0x350b83){logger['error'](_0x926e('0x11'),_0x1ff76c,_0x350b83);_0x5252bb(_0x350b83);});});}exports[_0x926e('0x19')]=function(_0xe927cf){var _0x2fdb03=this;return new Promise(function(_0x4e83ad,_0x58ebfa){return db[_0x926e('0x1a')][_0x926e('0x1b')]({'raw':_0xe927cf['options']?_0xe927cf[_0x926e('0x1c')][_0x926e('0x1d')]===undefined?!![]:![]:!![],'where':_0xe927cf['options']?_0xe927cf[_0x926e('0x1c')][_0x926e('0x1e')]||null:null,'attributes':_0xe927cf[_0x926e('0x1c')]?_0xe927cf['options'][_0x926e('0x1f')]||null:null,'limit':_0xe927cf['options']?_0xe927cf[_0x926e('0x1c')]['limit']||null:null,'include':_0xe927cf[_0x926e('0x1c')]?_0xe927cf['options'][_0x926e('0x20')]?_[_0x926e('0x21')](_0xe927cf[_0x926e('0x1c')][_0x926e('0x20')],function(_0x3c10fc){return{'model':db[_0x3c10fc[_0x926e('0x22')]],'as':_0x3c10fc['as'],'attributes':_0x3c10fc['attributes'],'include':_0x3c10fc[_0x926e('0x20')]?_[_0x926e('0x21')](_0x3c10fc[_0x926e('0x20')],function(_0x319609){return{'model':db[_0x319609[_0x926e('0x22')]],'as':_0x319609['as'],'attributes':_0x319609[_0x926e('0x1f')],'include':_0x319609[_0x926e('0x20')]?_['map'](_0x319609[_0x926e('0x20')],function(_0xd56e25){return{'model':db[_0xd56e25[_0x926e('0x22')]],'as':_0xd56e25['as'],'attributes':_0xd56e25[_0x926e('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x16d206){logger[_0x926e('0x10')](_0x926e('0x19'),_0xe927cf);logger[_0x926e('0x13')](_0x926e('0x19'),_0xe927cf,JSON[_0x926e('0x23')](_0x16d206));_0x4e83ad(_0x16d206);})[_0x926e('0x18')](function(_0x43896e){logger[_0x926e('0x15')](_0x926e('0x19'),_0x43896e[_0x926e('0x16')],_0xe927cf);_0x58ebfa(_0x2fdb03[_0x926e('0x15')](0x1f4,_0x43896e[_0x926e('0x16')]));});});};exports[_0x926e('0x24')]=function(_0x4aa30c){var _0x5612e6=this;return new Promise(function(_0x333409,_0x482929){return db['VoiceCallReport'][_0x926e('0x25')](_0x4aa30c[_0x926e('0x26')],{'raw':_0x4aa30c[_0x926e('0x1c')]?_0x4aa30c[_0x926e('0x1c')][_0x926e('0x1d')]===undefined?!![]:![]:!![]})[_0x926e('0xf')](function(_0x42d08d){logger[_0x926e('0x10')]('CreateVoiceCallReport',_0x4aa30c);logger[_0x926e('0x13')]('CreateVoiceCallReport',_0x4aa30c,JSON[_0x926e('0x23')](_0x42d08d));_0x333409(_0x42d08d);})['catch'](function(_0x190063){logger[_0x926e('0x15')](_0x926e('0x24'),_0x190063[_0x926e('0x16')],_0x4aa30c);_0x482929(_0x5612e6['error'](0x1f4,_0x190063[_0x926e('0x16')]));});});};exports['UpdateVoiceCallReport']=function(_0x42562f){var _0x46f374=this;return new Promise(function(_0x44fe26,_0x57ff6f){return db['VoiceCallReport'][_0x926e('0x27')](_0x42562f['body'],{'raw':_0x42562f[_0x926e('0x1c')]?_0x42562f[_0x926e('0x1c')][_0x926e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42562f[_0x926e('0x1c')]?_0x42562f[_0x926e('0x1c')]['where']||null:null,'attributes':_0x42562f['options']?_0x42562f['options'][_0x926e('0x1f')]||null:null,'limit':_0x42562f['options']?_0x42562f['options'][_0x926e('0x28')]||null:null})['then'](function(_0x244caa){logger[_0x926e('0x10')](_0x926e('0x29'),_0x42562f);logger[_0x926e('0x13')]('UpdateVoiceCallReport',_0x42562f,JSON[_0x926e('0x23')](_0x244caa));_0x44fe26(_0x244caa);})[_0x926e('0x18')](function(_0x440e9d){logger[_0x926e('0x15')](_0x926e('0x29'),_0x440e9d[_0x926e('0x16')],_0x42562f);_0x57ff6f(_0x46f374[_0x926e('0x15')](0x1f4,_0x440e9d['message']));});});};
\ No newline at end of file
+var _0x8714=['then','CreateVoiceCallReport','VoiceCallReport','create','body','UpdateVoiceCallReport','update','util','moment','randomstring','ioredis','jayson/promise','client','http','request','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','findAll','options','raw','attributes','limit','include','model','map'];(function(_0x4ca985,_0x345ada){var _0x9f53b5=function(_0x559a58){while(--_0x559a58){_0x4ca985['push'](_0x4ca985['shift']());}};_0x9f53b5(++_0x345ada);}(_0x8714,0xfc));var _0x4871=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x8714[_0x491a7f];return _0x3d8f44;};'use strict';var _=require('lodash');var util=require(_0x4871('0x0'));var moment=require(_0x4871('0x1'));var BPromise=require('bluebird');var rs=require(_0x4871('0x2'));var fs=require('fs');var Redis=require(_0x4871('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4871('0x4'));var client=jayson[_0x4871('0x5')][_0x4871('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x373b43,_0x381d21,_0x3e3f9b){return new BPromise(function(_0x1c183d,_0x509902){return client[_0x4871('0x7')](_0x373b43,_0x3e3f9b)['then'](function(_0x36de70){logger[_0x4871('0x8')](_0x4871('0x9'),_0x381d21,_0x4871('0xa'));logger[_0x4871('0xb')](_0x4871('0xc'),_0x381d21,_0x4871('0xa'),JSON[_0x4871('0xd')](_0x36de70));if(_0x36de70['error']){if(_0x36de70[_0x4871('0xe')][_0x4871('0xf')]===0x1f4){logger[_0x4871('0xe')](_0x4871('0x9'),_0x381d21,_0x36de70[_0x4871('0xe')][_0x4871('0x10')]);return _0x509902(_0x36de70['error'][_0x4871('0x10')]);}logger['error'](_0x4871('0x9'),_0x381d21,_0x36de70[_0x4871('0xe')][_0x4871('0x10')]);return _0x1c183d(_0x36de70['error'][_0x4871('0x10')]);}else{logger['info'](_0x4871('0x9'),_0x381d21,_0x4871('0xa'));_0x1c183d(_0x36de70[_0x4871('0x11')][_0x4871('0x10')]);}})[_0x4871('0x12')](function(_0x408329){logger[_0x4871('0xe')](_0x4871('0x9'),_0x381d21,_0x408329);_0x509902(_0x408329);});});}exports[_0x4871('0x13')]=function(_0x12c4fc){var _0x1872c1=this;return new Promise(function(_0x5e7511,_0x47c48c){return db['VoiceCallReport'][_0x4871('0x14')]({'raw':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![],'where':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc['options']['where']||null:null,'attributes':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc['options'][_0x4871('0x17')]||null:null,'limit':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')][_0x4871('0x18')]||null:null,'include':_0x12c4fc[_0x4871('0x15')]?_0x12c4fc[_0x4871('0x15')]['include']?_['map'](_0x12c4fc['options'][_0x4871('0x19')],function(_0x4b0d93){return{'model':db[_0x4b0d93[_0x4871('0x1a')]],'as':_0x4b0d93['as'],'attributes':_0x4b0d93[_0x4871('0x17')],'include':_0x4b0d93[_0x4871('0x19')]?_[_0x4871('0x1b')](_0x4b0d93[_0x4871('0x19')],function(_0x2bb39e){return{'model':db[_0x2bb39e['model']],'as':_0x2bb39e['as'],'attributes':_0x2bb39e[_0x4871('0x17')],'include':_0x2bb39e['include']?_[_0x4871('0x1b')](_0x2bb39e[_0x4871('0x19')],function(_0x5f4014){return{'model':db[_0x5f4014['model']],'as':_0x5f4014['as'],'attributes':_0x5f4014['attributes']};}):[]};}):[]};}):[]:[]})[_0x4871('0x1c')](function(_0x505f99){logger[_0x4871('0x8')]('GetVoiceCallReport',_0x12c4fc);logger[_0x4871('0xb')](_0x4871('0x13'),_0x12c4fc,JSON[_0x4871('0xd')](_0x505f99));_0x5e7511(_0x505f99);})[_0x4871('0x12')](function(_0x28ec57){logger[_0x4871('0xe')]('GetVoiceCallReport',_0x28ec57[_0x4871('0x10')],_0x12c4fc);_0x47c48c(_0x1872c1['error'](0x1f4,_0x28ec57[_0x4871('0x10')]));});});};exports[_0x4871('0x1d')]=function(_0x3ac9a2){var _0x5b1bd4=this;return new Promise(function(_0x45313e,_0x2d2196){return db[_0x4871('0x1e')][_0x4871('0x1f')](_0x3ac9a2[_0x4871('0x20')],{'raw':_0x3ac9a2[_0x4871('0x15')]?_0x3ac9a2[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x547595){logger['info'](_0x4871('0x1d'),_0x3ac9a2);logger['debug'](_0x4871('0x1d'),_0x3ac9a2,JSON[_0x4871('0xd')](_0x547595));_0x45313e(_0x547595);})[_0x4871('0x12')](function(_0x2a226f){logger['error'](_0x4871('0x1d'),_0x2a226f[_0x4871('0x10')],_0x3ac9a2);_0x2d2196(_0x5b1bd4[_0x4871('0xe')](0x1f4,_0x2a226f[_0x4871('0x10')]));});});};exports[_0x4871('0x21')]=function(_0x17a070){var _0x13f16a=this;return new Promise(function(_0x2b7c6a,_0x53288b){return db['VoiceCallReport'][_0x4871('0x22')](_0x17a070[_0x4871('0x20')],{'raw':_0x17a070[_0x4871('0x15')]?_0x17a070[_0x4871('0x15')][_0x4871('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17a070['options']?_0x17a070[_0x4871('0x15')]['where']||null:null,'attributes':_0x17a070[_0x4871('0x15')]?_0x17a070['options'][_0x4871('0x17')]||null:null,'limit':_0x17a070['options']?_0x17a070['options'][_0x4871('0x18')]||null:null})[_0x4871('0x1c')](function(_0x4d144b){logger[_0x4871('0x8')]('UpdateVoiceCallReport',_0x17a070);logger[_0x4871('0xb')]('UpdateVoiceCallReport',_0x17a070,JSON[_0x4871('0xd')](_0x4d144b));_0x2b7c6a(_0x4d144b);})['catch'](function(_0x3ea816){logger[_0x4871('0xe')](_0x4871('0x21'),_0x3ea816[_0x4871('0x10')],_0x17a070);_0x53288b(_0x13f16a[_0x4871('0xe')](0x1f4,_0x3ea816[_0x4871('0x10')]));});});};
\ No newline at end of file
index ff48395..91b8b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ad=['isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x3a4f80,_0x543687){var _0x3a9fed=function(_0x33216f){while(--_0x33216f){_0x3a4f80['push'](_0x3a4f80['shift']());}};_0x3a9fed(++_0x543687);}(_0xb9ad,0xe2));var _0xdb9a=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xb9ad[_0x1ac595];return _0x455fff;};'use strict';var multer=require('multer');var util=require(_0xdb9a('0x0'));var path=require(_0xdb9a('0x1'));var timeout=require('connect-timeout');var express=require(_0xdb9a('0x2'));var router=express[_0xdb9a('0x3')]();var fs_extra=require(_0xdb9a('0x4'));var auth=require(_0xdb9a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdb9a('0x6'));var controller=require('./voiceChanSpy.controller');router[_0xdb9a('0x7')]('/',auth[_0xdb9a('0x8')](),controller[_0xdb9a('0x9')]);router['get'](_0xdb9a('0xa'),auth[_0xdb9a('0x8')](),controller['show']);router[_0xdb9a('0xb')]('/',auth[_0xdb9a('0x8')](),controller[_0xdb9a('0xc')]);router[_0xdb9a('0xd')](_0xdb9a('0xa'),auth['isAuthenticated'](),controller[_0xdb9a('0xe')]);router[_0xdb9a('0xf')]('/:id',auth[_0xdb9a('0x8')](),controller[_0xdb9a('0x10')]);module[_0xdb9a('0x11')]=router;
\ No newline at end of file
+var _0x80ca=['get','post','create','/:id','update','delete','exports','multer','express','Router','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated'];(function(_0x545795,_0x176bcf){var _0x4ad27f=function(_0x34a367){while(--_0x34a367){_0x545795['push'](_0x545795['shift']());}};_0x4ad27f(++_0x176bcf);}(_0x80ca,0x1b9));var _0xa80c=function(_0x1a96ef,_0x11d2fa){_0x1a96ef=_0x1a96ef-0x0;var _0x170d11=_0x80ca[_0x1a96ef];return _0x170d11;};'use strict';var multer=require(_0xa80c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa80c('0x1'));var router=express[_0xa80c('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa80c('0x3'));var config=require(_0xa80c('0x4'));var controller=require(_0xa80c('0x5'));router['get']('/',auth[_0xa80c('0x6')](),controller['index']);router[_0xa80c('0x7')]('/:id',auth[_0xa80c('0x6')](),controller['show']);router[_0xa80c('0x8')]('/',auth[_0xa80c('0x6')](),controller[_0xa80c('0x9')]);router['put'](_0xa80c('0xa'),auth[_0xa80c('0x6')](),controller[_0xa80c('0xb')]);router[_0xa80c('0xc')]('/:id',auth[_0xa80c('0x6')](),controller['destroy']);module[_0xa80c('0xd')]=router;
\ No newline at end of file
index 77eda33..0efc338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb96f=['split','BOOLEAN','sequelize','exports','STRING','name','options','getDataValue'];(function(_0x200e9b,_0x17cd3d){var _0x45159b=function(_0x1554c4){while(--_0x1554c4){_0x200e9b['push'](_0x200e9b['shift']());}};_0x45159b(++_0x17cd3d);}(_0xb96f,0x15a));var _0xfb96=function(_0x58043d,_0x3be627){_0x58043d=_0x58043d-0x0;var _0x41beb9=_0xb96f[_0x58043d];return _0x41beb9;};'use strict';var Sequelize=require(_0xfb96('0x0'));module[_0xfb96('0x1')]={'name':{'type':Sequelize[_0xfb96('0x2')]},'prefix':{'type':Sequelize[_0xfb96('0x2')],'unique':_0xfb96('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0xfb96('0x2')],'set':function(_0x4d0af1){this['setDataValue'](_0xfb96('0x4'),_0x4d0af1?_0x4d0af1['join'](''):[]);},'get':function(){return this[_0xfb96('0x5')]('options')?this[_0xfb96('0x5')]('options')[_0xfb96('0x6')](''):[];}},'auth':{'type':Sequelize[_0xfb96('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xfb96('0x2')]},'record':{'type':Sequelize[_0xfb96('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xfb96('0x2')]},'description':{'type':Sequelize[_0xfb96('0x2')]}};
\ No newline at end of file
+var _0x3ebf=['options','join','getDataValue','split','BOOLEAN','sequelize','STRING','setDataValue'];(function(_0x2ddf2d,_0x272b8a){var _0x53dd02=function(_0x5a889c){while(--_0x5a889c){_0x2ddf2d['push'](_0x2ddf2d['shift']());}};_0x53dd02(++_0x272b8a);}(_0x3ebf,0x1ed));var _0xf3eb=function(_0x2658f7,_0x480b29){_0x2658f7=_0x2658f7-0x0;var _0x35ae99=_0x3ebf[_0x2658f7];return _0x35ae99;};'use strict';var Sequelize=require(_0xf3eb('0x0'));module['exports']={'name':{'type':Sequelize[_0xf3eb('0x1')]},'prefix':{'type':Sequelize[_0xf3eb('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xf3eb('0x1')],'set':function(_0x2f1cc9){this[_0xf3eb('0x2')](_0xf3eb('0x3'),_0x2f1cc9?_0x2f1cc9[_0xf3eb('0x4')](''):[]);},'get':function(){return this[_0xf3eb('0x5')](_0xf3eb('0x3'))?this[_0xf3eb('0x5')]('options')[_0xf3eb('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0xf3eb('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xf3eb('0x1')]},'description':{'type':Sequelize[_0xf3eb('0x1')]}};
\ No newline at end of file
index d9e963e..2a0d58b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a81=['then','get','ChanSpies','sendStatus','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','model','query','keys','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','count','set','apply','reject','update','destroy'];(function(_0x5ca8bb,_0x28fcec){var _0x2ea375=function(_0x7d0839){while(--_0x7d0839){_0x5ca8bb['push'](_0x5ca8bb['shift']());}};_0x2ea375(++_0x28fcec);}(_0x4a81,0x1b7));var _0x14a8=function(_0x5c9a26,_0x24b924){_0x5c9a26=_0x5c9a26-0x0;var _0x593dd1=_0x4a81[_0x5c9a26];return _0x593dd1;};'use strict';var emlformat=require(_0x14a8('0x0'));var rimraf=require(_0x14a8('0x1'));var zipdir=require(_0x14a8('0x2'));var jsonpatch=require(_0x14a8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x14a8('0x4'));var Mustache=require('mustache');var util=require(_0x14a8('0x5'));var path=require(_0x14a8('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x14a8('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x14a8('0x8'));var squel=require('squel');var crypto=require(_0x14a8('0x9'));var jsforce=require(_0x14a8('0xa'));var deskjs=require(_0x14a8('0xb'));var toCsv=require(_0x14a8('0xc'));var querystring=require(_0x14a8('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x14a8('0xe'));var qs=require(_0x14a8('0xf'));var as=require(_0x14a8('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x14a8('0x11'))(_0x14a8('0x12'));var utils=require(_0x14a8('0x13'));var config=require(_0x14a8('0x14'));var licenseUtil=require(_0x14a8('0x15'));var db=require(_0x14a8('0x16'))['db'];function respondWithStatusCode(_0x260a55,_0x1f43f7){_0x1f43f7=_0x1f43f7||0xcc;return function(_0x5e41f9){if(_0x5e41f9){return _0x260a55['sendStatus'](_0x1f43f7);}return _0x260a55[_0x14a8('0x17')](_0x1f43f7)[_0x14a8('0x18')]();};}function respondWithResult(_0x531ff8,_0x19d25e){_0x19d25e=_0x19d25e||0xc8;return function(_0x54223b){if(_0x54223b){return _0x531ff8[_0x14a8('0x17')](_0x19d25e)[_0x14a8('0x19')](_0x54223b);}};}function respondWithFilteredResult(_0x3dc509,_0x3f0c93){return function(_0x31ce02){if(_0x31ce02){var _0x3a7152=typeof _0x3f0c93['offset']===_0x14a8('0x1a')&&typeof _0x3f0c93[_0x14a8('0x1b')]==='undefined';var _0x3b8a59=_0x31ce02['count'];var _0x98e1d5=_0x3a7152?0x0:_0x3f0c93[_0x14a8('0x1c')];var _0x456b7f=_0x3a7152?_0x31ce02[_0x14a8('0x1d')]:_0x3f0c93[_0x14a8('0x1c')]+_0x3f0c93[_0x14a8('0x1b')];var _0x4a87f7;if(_0x456b7f>=_0x3b8a59){_0x456b7f=_0x3b8a59;_0x4a87f7=0xc8;}else{_0x4a87f7=0xce;}_0x3dc509[_0x14a8('0x17')](_0x4a87f7);return _0x3dc509[_0x14a8('0x1e')]('Content-Range',_0x98e1d5+'-'+_0x456b7f+'/'+_0x3b8a59)['json'](_0x31ce02);}return null;};}function patchUpdates(_0x1956a2){return function(_0x4ee380){try{jsonpatch[_0x14a8('0x1f')](_0x4ee380,_0x1956a2,!![]);}catch(_0x5c0f41){return BPromise[_0x14a8('0x20')](_0x5c0f41);}return _0x4ee380['save']();};}function saveUpdates(_0x190189,_0x3afd58){return function(_0x182f2b){if(_0x182f2b){return _0x182f2b[_0x14a8('0x21')](_0x190189)['then'](function(_0x3d8cd1){return _0x3d8cd1;});}return null;};}function removeEntity(_0x5a624f,_0x2cee5e){return function(_0x250055){if(_0x250055){return _0x250055[_0x14a8('0x22')]()[_0x14a8('0x23')](function(){var _0x3eeaa1=_0x250055[_0x14a8('0x24')]({'plain':!![]});var _0x1f251a=_0x14a8('0x25');return db['UserProfileResource'][_0x14a8('0x22')]({'where':{'type':_0x1f251a,'resourceId':_0x3eeaa1['id']}})[_0x14a8('0x23')](function(){return _0x250055;});})[_0x14a8('0x23')](function(){_0x5a624f[_0x14a8('0x17')](0xcc)[_0x14a8('0x18')]();});}};}function handleEntityNotFound(_0x42bdea,_0x3ae40c){return function(_0x37a780){if(!_0x37a780){_0x42bdea[_0x14a8('0x26')](0x194);}return _0x37a780;};}function handleError(_0x28d25c,_0x23adba){_0x23adba=_0x23adba||0x1f4;return function(_0x1c378a){logger[_0x14a8('0x27')](_0x1c378a['stack']);if(_0x1c378a[_0x14a8('0x28')]){delete _0x1c378a[_0x14a8('0x28')];}_0x28d25c['status'](_0x23adba)[_0x14a8('0x29')](_0x1c378a);};}exports[_0x14a8('0x2a')]=function(_0x326901,_0x486f3f){var _0x45ba6e={},_0x15d874={},_0x27baf5={'count':0x0,'rows':[]};var _0xd58d50=_[_0x14a8('0x2b')](db[_0x14a8('0x2c')][_0x14a8('0x2d')],function(_0x4f98a0){return{'name':_0x4f98a0[_0x14a8('0x2e')],'type':_0x4f98a0['type']['key']};});_0x15d874[_0x14a8('0x2f')]=_['map'](_0xd58d50,'name');_0x15d874[_0x14a8('0x30')]=_[_0x14a8('0x31')](_0x326901[_0x14a8('0x30')]);_0x15d874['filters']=_[_0x14a8('0x32')](_0x15d874[_0x14a8('0x2f')],_0x15d874[_0x14a8('0x30')]);_0x45ba6e['attributes']=_[_0x14a8('0x32')](_0x15d874[_0x14a8('0x2f')],qs[_0x14a8('0x33')](_0x326901[_0x14a8('0x30')][_0x14a8('0x33')]));_0x45ba6e['attributes']=_0x45ba6e['attributes'][_0x14a8('0x34')]?_0x45ba6e[_0x14a8('0x35')]:_0x15d874[_0x14a8('0x2f')];if(!_0x326901[_0x14a8('0x30')][_0x14a8('0x36')](_0x14a8('0x37'))){_0x45ba6e[_0x14a8('0x1b')]=qs['limit'](_0x326901[_0x14a8('0x30')][_0x14a8('0x1b')]);_0x45ba6e['offset']=qs[_0x14a8('0x1c')](_0x326901['query']['offset']);}_0x45ba6e[_0x14a8('0x38')]=qs[_0x14a8('0x39')](_0x326901['query']['sort']);_0x45ba6e[_0x14a8('0x3a')]=qs[_0x14a8('0x3b')](_[_0x14a8('0x3c')](_0x326901[_0x14a8('0x30')],_0x15d874[_0x14a8('0x3b')]),_0xd58d50);if(_0x326901['query'][_0x14a8('0x3d')]){_0x45ba6e['where']=_['merge'](_0x45ba6e[_0x14a8('0x3a')],{'$or':_[_0x14a8('0x2b')](_0xd58d50,function(_0x29c0b5){if(_0x29c0b5['type']!==_0x14a8('0x3e')){var _0x268a1a={};_0x268a1a[_0x29c0b5[_0x14a8('0x28')]]={'$like':'%'+_0x326901[_0x14a8('0x30')]['filter']+'%'};return _0x268a1a;}})});}_0x45ba6e=_[_0x14a8('0x3f')]({},_0x45ba6e,_0x326901[_0x14a8('0x40')]);var _0x4b834f={'where':_0x45ba6e[_0x14a8('0x3a')]};return db[_0x14a8('0x2c')][_0x14a8('0x1d')](_0x4b834f)[_0x14a8('0x23')](function(_0x20764e){_0x27baf5[_0x14a8('0x1d')]=_0x20764e;if(_0x326901[_0x14a8('0x30')]['includeAll']){_0x45ba6e[_0x14a8('0x41')]=[{'all':!![]}];}return db[_0x14a8('0x2c')]['findAll'](_0x45ba6e);})[_0x14a8('0x23')](function(_0x472362){_0x27baf5['rows']=_0x472362;return _0x27baf5;})[_0x14a8('0x23')](respondWithFilteredResult(_0x486f3f,_0x45ba6e))[_0x14a8('0x42')](handleError(_0x486f3f,null));};exports[_0x14a8('0x43')]=function(_0x2b279f,_0x3dfca3){var _0x11d8f0={'raw':![],'where':{'id':_0x2b279f[_0x14a8('0x44')]['id']}},_0x4ad341={};_0x4ad341['model']=_[_0x14a8('0x31')](db[_0x14a8('0x2c')][_0x14a8('0x2d')]);_0x4ad341[_0x14a8('0x30')]=_[_0x14a8('0x31')](_0x2b279f[_0x14a8('0x30')]);_0x4ad341[_0x14a8('0x3b')]=_['intersection'](_0x4ad341[_0x14a8('0x2f')],_0x4ad341[_0x14a8('0x30')]);_0x11d8f0['attributes']=_['intersection'](_0x4ad341[_0x14a8('0x2f')],qs['fields'](_0x2b279f[_0x14a8('0x30')]['fields']));_0x11d8f0[_0x14a8('0x35')]=_0x11d8f0[_0x14a8('0x35')][_0x14a8('0x34')]?_0x11d8f0[_0x14a8('0x35')]:_0x4ad341[_0x14a8('0x2f')];if(_0x2b279f[_0x14a8('0x30')]['includeAll']){_0x11d8f0['include']=[{'all':!![]}];}_0x11d8f0=_['merge']({},_0x11d8f0,_0x2b279f[_0x14a8('0x40')]);return db[_0x14a8('0x2c')][_0x14a8('0x45')](_0x11d8f0)[_0x14a8('0x23')](handleEntityNotFound(_0x3dfca3,null))['then'](respondWithResult(_0x3dfca3,null))[_0x14a8('0x42')](handleError(_0x3dfca3,null));};exports[_0x14a8('0x46')]=function(_0xb3a3a0,_0x205307){return db['VoiceChanSpy']['create'](_0xb3a3a0[_0x14a8('0x47')],{})[_0x14a8('0x23')](function(_0xc46a4c){var _0x2fb473=_0xb3a3a0['user'][_0x14a8('0x24')]({'plain':!![]});if(!_0x2fb473)throw new Error(_0x14a8('0x48'));if(_0x2fb473[_0x14a8('0x49')]===_0x14a8('0x4a')){var _0x33b86f=_0xc46a4c[_0x14a8('0x24')]({'plain':!![]});var _0x323cc8=_0x14a8('0x25');return db[_0x14a8('0x4b')][_0x14a8('0x45')]({'where':{'name':_0x323cc8,'userProfileId':_0x2fb473[_0x14a8('0x4c')]},'raw':!![]})[_0x14a8('0x23')](function(_0xfb738a){if(_0xfb738a&&_0xfb738a[_0x14a8('0x4d')]===0x0){return db['UserProfileResource'][_0x14a8('0x46')]({'name':_0x33b86f[_0x14a8('0x28')],'resourceId':_0x33b86f['id'],'type':_0xfb738a[_0x14a8('0x28')],'sectionId':_0xfb738a['id']},{})[_0x14a8('0x23')](function(){return _0xc46a4c;});}else{return _0xc46a4c;}})['catch'](function(_0x7ca84f){logger['error'](_0x14a8('0x4e'),_0x7ca84f);throw _0x7ca84f;});}return _0xc46a4c;})[_0x14a8('0x23')](respondWithResult(_0x205307,0xc9))['catch'](handleError(_0x205307,null));};exports['update']=function(_0x12242e,_0x3dc969){if(_0x12242e[_0x14a8('0x47')]['id']){delete _0x12242e['body']['id'];}return db[_0x14a8('0x2c')][_0x14a8('0x45')]({'where':{'id':_0x12242e['params']['id']}})['then'](handleEntityNotFound(_0x3dc969,null))[_0x14a8('0x23')](saveUpdates(_0x12242e[_0x14a8('0x47')],null))['then'](respondWithResult(_0x3dc969,null))['catch'](handleError(_0x3dc969,null));};exports['destroy']=function(_0x5d6f58,_0x192d6c){return db[_0x14a8('0x2c')]['find']({'where':{'id':_0x5d6f58[_0x14a8('0x44')]['id']}})['then'](handleEntityNotFound(_0x192d6c,null))['then'](removeEntity(_0x192d6c,null))[_0x14a8('0x42')](handleError(_0x192d6c,null));};
\ No newline at end of file
+var _0x36f1=['params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','intersection','fields','attributes','length','query','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','VoiceChanSpy','includeAll','include','findAll','rows','catch','show'];(function(_0x5c2a88,_0x491a16){var _0x1742f2=function(_0x57bd85){while(--_0x57bd85){_0x5c2a88['push'](_0x5c2a88['shift']());}};_0x1742f2(++_0x491a16);}(_0x36f1,0xb0));var _0x136f=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x36f1[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x136f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x136f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x136f('0x2'));var moment=require(_0x136f('0x3'));var BPromise=require(_0x136f('0x4'));var Mustache=require(_0x136f('0x5'));var util=require(_0x136f('0x6'));var path=require(_0x136f('0x7'));var sox=require(_0x136f('0x8'));var csv=require(_0x136f('0x9'));var ejs=require(_0x136f('0xa'));var fs=require('fs');var fs_extra=require(_0x136f('0xb'));var _=require('lodash');var squel=require(_0x136f('0xc'));var crypto=require(_0x136f('0xd'));var jsforce=require(_0x136f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x136f('0x9'));var querystring=require(_0x136f('0xf'));var Papa=require(_0x136f('0x10'));var Redis=require(_0x136f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x136f('0x12'));var hardwareService=require(_0x136f('0x13'));var logger=require(_0x136f('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x136f('0x15'));var licenseUtil=require(_0x136f('0x16'));var db=require(_0x136f('0x17'))['db'];function respondWithStatusCode(_0x227d03,_0x32cd2d){_0x32cd2d=_0x32cd2d||0xcc;return function(_0x58d3ef){if(_0x58d3ef){return _0x227d03['sendStatus'](_0x32cd2d);}return _0x227d03[_0x136f('0x18')](_0x32cd2d)[_0x136f('0x19')]();};}function respondWithResult(_0x21ede1,_0x541865){_0x541865=_0x541865||0xc8;return function(_0x43fca8){if(_0x43fca8){return _0x21ede1[_0x136f('0x18')](_0x541865)[_0x136f('0x1a')](_0x43fca8);}};}function respondWithFilteredResult(_0x91d7fc,_0x1c89fa){return function(_0x685a22){if(_0x685a22){var _0x3a4a84=typeof _0x1c89fa[_0x136f('0x1b')]==='undefined'&&typeof _0x1c89fa[_0x136f('0x1c')]===_0x136f('0x1d');var _0x66cee=_0x685a22[_0x136f('0x1e')];var _0x3e2b02=_0x3a4a84?0x0:_0x1c89fa[_0x136f('0x1b')];var _0x54b793=_0x3a4a84?_0x685a22[_0x136f('0x1e')]:_0x1c89fa[_0x136f('0x1b')]+_0x1c89fa['limit'];var _0x3722c2;if(_0x54b793>=_0x66cee){_0x54b793=_0x66cee;_0x3722c2=0xc8;}else{_0x3722c2=0xce;}_0x91d7fc[_0x136f('0x18')](_0x3722c2);return _0x91d7fc[_0x136f('0x1f')](_0x136f('0x20'),_0x3e2b02+'-'+_0x54b793+'/'+_0x66cee)[_0x136f('0x1a')](_0x685a22);}return null;};}function patchUpdates(_0x372f55){return function(_0x493b41){try{jsonpatch[_0x136f('0x21')](_0x493b41,_0x372f55,!![]);}catch(_0x6b3282){return BPromise[_0x136f('0x22')](_0x6b3282);}return _0x493b41['save']();};}function saveUpdates(_0x4e8c6c,_0xa0416a){return function(_0x5b600f){if(_0x5b600f){return _0x5b600f['update'](_0x4e8c6c)[_0x136f('0x23')](function(_0x44014f){return _0x44014f;});}return null;};}function removeEntity(_0x581b7c,_0xf3ad9b){return function(_0x34f467){if(_0x34f467){return _0x34f467[_0x136f('0x24')]()['then'](function(){var _0x115ad5=_0x34f467[_0x136f('0x25')]({'plain':!![]});var _0x538101=_0x136f('0x26');return db[_0x136f('0x27')]['destroy']({'where':{'type':_0x538101,'resourceId':_0x115ad5['id']}})[_0x136f('0x23')](function(){return _0x34f467;});})[_0x136f('0x23')](function(){_0x581b7c[_0x136f('0x18')](0xcc)[_0x136f('0x19')]();});}};}function handleEntityNotFound(_0x4e2587,_0x164e96){return function(_0x1400c9){if(!_0x1400c9){_0x4e2587[_0x136f('0x28')](0x194);}return _0x1400c9;};}function handleError(_0x23ab25,_0x5dbc94){_0x5dbc94=_0x5dbc94||0x1f4;return function(_0x3a630c){logger[_0x136f('0x29')](_0x3a630c[_0x136f('0x2a')]);if(_0x3a630c[_0x136f('0x2b')]){delete _0x3a630c[_0x136f('0x2b')];}_0x23ab25[_0x136f('0x18')](_0x5dbc94)['send'](_0x3a630c);};}exports[_0x136f('0x2c')]=function(_0xb09aa5,_0x1cea33){var _0x4eb639={},_0x3341ea={},_0x5bfdbd={'count':0x0,'rows':[]};var _0x207c91=_[_0x136f('0x2d')](db['VoiceChanSpy'][_0x136f('0x2e')],function(_0x65ef2){return{'name':_0x65ef2[_0x136f('0x2f')],'type':_0x65ef2[_0x136f('0x30')][_0x136f('0x31')]};});_0x3341ea[_0x136f('0x32')]=_[_0x136f('0x2d')](_0x207c91,_0x136f('0x2b'));_0x3341ea['query']=_[_0x136f('0x33')](_0xb09aa5['query']);_0x3341ea['filters']=_[_0x136f('0x34')](_0x3341ea[_0x136f('0x32')],_0x3341ea['query']);_0x4eb639['attributes']=_[_0x136f('0x34')](_0x3341ea[_0x136f('0x32')],qs[_0x136f('0x35')](_0xb09aa5['query'][_0x136f('0x35')]));_0x4eb639[_0x136f('0x36')]=_0x4eb639[_0x136f('0x36')][_0x136f('0x37')]?_0x4eb639[_0x136f('0x36')]:_0x3341ea['model'];if(!_0xb09aa5[_0x136f('0x38')][_0x136f('0x39')](_0x136f('0x3a'))){_0x4eb639[_0x136f('0x1c')]=qs[_0x136f('0x1c')](_0xb09aa5[_0x136f('0x38')][_0x136f('0x1c')]);_0x4eb639[_0x136f('0x1b')]=qs['offset'](_0xb09aa5[_0x136f('0x38')][_0x136f('0x1b')]);}_0x4eb639['order']=qs['sort'](_0xb09aa5[_0x136f('0x38')][_0x136f('0x3b')]);_0x4eb639[_0x136f('0x3c')]=qs[_0x136f('0x3d')](_[_0x136f('0x3e')](_0xb09aa5[_0x136f('0x38')],_0x3341ea[_0x136f('0x3d')]),_0x207c91);if(_0xb09aa5[_0x136f('0x38')][_0x136f('0x3f')]){_0x4eb639[_0x136f('0x3c')]=_['merge'](_0x4eb639[_0x136f('0x3c')],{'$or':_[_0x136f('0x2d')](_0x207c91,function(_0x281789){if(_0x281789['type']!=='VIRTUAL'){var _0x5c4237={};_0x5c4237[_0x281789[_0x136f('0x2b')]]={'$like':'%'+_0xb09aa5[_0x136f('0x38')][_0x136f('0x3f')]+'%'};return _0x5c4237;}})});}_0x4eb639=_[_0x136f('0x40')]({},_0x4eb639,_0xb09aa5[_0x136f('0x41')]);var _0x9b57c={'where':_0x4eb639[_0x136f('0x3c')]};return db[_0x136f('0x42')][_0x136f('0x1e')](_0x9b57c)[_0x136f('0x23')](function(_0x177715){_0x5bfdbd[_0x136f('0x1e')]=_0x177715;if(_0xb09aa5[_0x136f('0x38')][_0x136f('0x43')]){_0x4eb639[_0x136f('0x44')]=[{'all':!![]}];}return db[_0x136f('0x42')][_0x136f('0x45')](_0x4eb639);})[_0x136f('0x23')](function(_0x560ec3){_0x5bfdbd[_0x136f('0x46')]=_0x560ec3;return _0x5bfdbd;})[_0x136f('0x23')](respondWithFilteredResult(_0x1cea33,_0x4eb639))[_0x136f('0x47')](handleError(_0x1cea33,null));};exports[_0x136f('0x48')]=function(_0x379940,_0x392a51){var _0x3a2af0={'raw':![],'where':{'id':_0x379940[_0x136f('0x49')]['id']}},_0x238efc={};_0x238efc[_0x136f('0x32')]=_[_0x136f('0x33')](db[_0x136f('0x42')]['rawAttributes']);_0x238efc[_0x136f('0x38')]=_[_0x136f('0x33')](_0x379940['query']);_0x238efc[_0x136f('0x3d')]=_[_0x136f('0x34')](_0x238efc[_0x136f('0x32')],_0x238efc[_0x136f('0x38')]);_0x3a2af0[_0x136f('0x36')]=_[_0x136f('0x34')](_0x238efc[_0x136f('0x32')],qs[_0x136f('0x35')](_0x379940[_0x136f('0x38')][_0x136f('0x35')]));_0x3a2af0[_0x136f('0x36')]=_0x3a2af0[_0x136f('0x36')][_0x136f('0x37')]?_0x3a2af0[_0x136f('0x36')]:_0x238efc['model'];if(_0x379940[_0x136f('0x38')][_0x136f('0x43')]){_0x3a2af0[_0x136f('0x44')]=[{'all':!![]}];}_0x3a2af0=_[_0x136f('0x40')]({},_0x3a2af0,_0x379940[_0x136f('0x41')]);return db[_0x136f('0x42')][_0x136f('0x4a')](_0x3a2af0)[_0x136f('0x23')](handleEntityNotFound(_0x392a51,null))[_0x136f('0x23')](respondWithResult(_0x392a51,null))['catch'](handleError(_0x392a51,null));};exports[_0x136f('0x4b')]=function(_0x4376f6,_0x2a8749){return db['VoiceChanSpy'][_0x136f('0x4b')](_0x4376f6[_0x136f('0x4c')],{})[_0x136f('0x23')](function(_0x1953b4){var _0x4e9a52=_0x4376f6[_0x136f('0x4d')][_0x136f('0x25')]({'plain':!![]});if(!_0x4e9a52)throw new Error(_0x136f('0x4e'));if(_0x4e9a52['role']==='user'){var _0x418e34=_0x1953b4[_0x136f('0x25')]({'plain':!![]});var _0x48d472=_0x136f('0x26');return db[_0x136f('0x4f')][_0x136f('0x4a')]({'where':{'name':_0x48d472,'userProfileId':_0x4e9a52[_0x136f('0x50')]},'raw':!![]})['then'](function(_0x4371f4){if(_0x4371f4&&_0x4371f4[_0x136f('0x51')]===0x0){return db[_0x136f('0x27')][_0x136f('0x4b')]({'name':_0x418e34['name'],'resourceId':_0x418e34['id'],'type':_0x4371f4[_0x136f('0x2b')],'sectionId':_0x4371f4['id']},{})['then'](function(){return _0x1953b4;});}else{return _0x1953b4;}})['catch'](function(_0x13313b){logger[_0x136f('0x29')](_0x136f('0x52'),_0x13313b);throw _0x13313b;});}return _0x1953b4;})[_0x136f('0x23')](respondWithResult(_0x2a8749,0xc9))[_0x136f('0x47')](handleError(_0x2a8749,null));};exports['update']=function(_0x44fc7e,_0x7edaa2){if(_0x44fc7e[_0x136f('0x4c')]['id']){delete _0x44fc7e[_0x136f('0x4c')]['id'];}return db[_0x136f('0x42')][_0x136f('0x4a')]({'where':{'id':_0x44fc7e[_0x136f('0x49')]['id']}})[_0x136f('0x23')](handleEntityNotFound(_0x7edaa2,null))['then'](saveUpdates(_0x44fc7e[_0x136f('0x4c')],null))[_0x136f('0x23')](respondWithResult(_0x7edaa2,null))[_0x136f('0x47')](handleError(_0x7edaa2,null));};exports[_0x136f('0x24')]=function(_0x316d9b,_0x499b2f){return db[_0x136f('0x42')][_0x136f('0x4a')]({'where':{'id':_0x316d9b[_0x136f('0x49')]['id']}})[_0x136f('0x23')](handleEntityNotFound(_0x499b2f,null))['then'](removeEntity(_0x499b2f,null))[_0x136f('0x47')](handleError(_0x499b2f,null));};
\ No newline at end of file
index 4bc666c..d406fdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x471f=['context','from-sip','format','%s%s','prefix','system','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','length','concat','internal','findAll','agent','then','exports','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','util','./voiceChanSpy.attributes'];(function(_0x3c4958,_0x450ef9){var _0x46bd11=function(_0x232e5b){while(--_0x232e5b){_0x3c4958['push'](_0x3c4958['shift']());}};_0x46bd11(++_0x450ef9);}(_0x471f,0x6f));var _0xf471=function(_0x4b7c65,_0x48df1d){_0x4b7c65=_0x4b7c65-0x0;var _0x16a07f=_0x471f[_0x4b7c65];return _0x16a07f;};'use strict';var _=require(_0xf471('0x0'));var util=require(_0xf471('0x1'));var BPromise=require('bluebird');var attributes=require(_0xf471('0x2'));var getUserApplications=function(_0x168835,_0x1012e7,_0x5b7786){var _0x2ea536=0x1;var _0x508641=[];var _0x3eb3d4={'context':_0x1012e7[_0xf471('0x3')]||_0xf471('0x4'),'exten':util[_0xf471('0x5')](_0xf471('0x6'),_0x168835[_0xf471('0x7')],_0x5b7786),'type':_0xf471('0x8'),'isApp':![],'ChanSpyId':_0x168835['id'],'UserId':_0x1012e7['id']};_0x508641[_0xf471('0x9')](_[_0xf471('0xa')]({'app':_0xf471('0xb'),'appdata':util[_0xf471('0x5')]('CDR(type)=%s',_0xf471('0xc')),'priority':_0x2ea536++},_0x3eb3d4));if(_0x168835[_0xf471('0xd')]){_0x508641['push'](_[_0xf471('0xa')]({'app':_0xf471('0xe'),'appdata':util[_0xf471('0x5')](_0xf471('0xf'),_0x168835['recordingFormat']),'priority':_0x2ea536++},_0x3eb3d4));}if(_0x168835['auth']){_0x508641[_0xf471('0x9')](_[_0xf471('0xa')]({'app':_0xf471('0x10'),'appdata':_0x168835[_0xf471('0x11')],'priority':_0x2ea536++},_0x3eb3d4));}_0x508641[_0xf471('0x9')](_['merge']({'app':_0xf471('0x12'),'appdata':util[_0xf471('0x5')](_0xf471('0x13'),_0x1012e7[_0xf471('0x14')],_0x168835[_0xf471('0x15')]?_0x168835[_0xf471('0x15')][_0xf471('0x16')](''):''),'priority':_0x2ea536++},_0x3eb3d4));if(_0x168835[_0xf471('0xd')]){_0x508641['push'](_[_0xf471('0xa')]({'app':'StopMixMonitor','priority':_0x2ea536++},_0x3eb3d4));}return _0x508641;};var getChanSpyApplications=function(_0x226726,_0x5ae79a){var _0x1cb60e=[];for(var _0x3d4341=0x0,_0x2cc803=0x1;_0x3d4341<_0x5ae79a[_0xf471('0x17')];_0x3d4341++,_0x2cc803=0x1){_0x1cb60e=_0x1cb60e[_0xf471('0x18')](getUserApplications(_0x226726,_0x5ae79a[_0x3d4341],_0x5ae79a[_0x3d4341][_0xf471('0x19')]));if(_0x5ae79a[_0x3d4341]['internal']!=_0x5ae79a[_0x3d4341]['name']){_0x1cb60e=_0x1cb60e['concat'](getUserApplications(_0x226726,_0x5ae79a[_0x3d4341],_0x5ae79a[_0x3d4341]['name']));}}return _0x1cb60e;};var getChanSpyPromise=function(_0x5f3344,_0x1b2069){return new BPromise(function(_0x28f032,_0x24a1a6){return _0x5f3344['User'][_0xf471('0x1a')]({'attributes':['id',_0xf471('0x14'),_0xf471('0x19')],'where':{'role':_0xf471('0x1b'),'chanspy':!![]},'raw':!![]})[_0xf471('0x1c')](function(_0x37e50c){if(_0x37e50c){return _0x28f032(getChanSpyApplications(_0x1b2069,_0x37e50c));}return _0x28f032([]);})['catch'](function(_0x25d57f){_0x24a1a6(_0x25d57f);});});};module[_0xf471('0x1d')]=function(_0x16ed2e,_0x2648a){var _0x266270=_0x16ed2e[_0xf471('0x1e')];return _0x16ed2e[_0xf471('0x1f')](_0xf471('0x20'),attributes,{'tableName':_0xf471('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f575a,_0x1c68e6,_0x484e31){return getChanSpyPromise(_0x266270,_0x3f575a)[_0xf471('0x1c')](function(_0xc62478){if(_0xc62478&&_0xc62478[_0xf471('0x17')]){return _0x266270[_0xf471('0x22')][_0xf471('0x23')](_0xc62478);}})[_0xf471('0x1c')](function(){_0x484e31();})[_0xf471('0x24')](function(_0x3c3292){_0x484e31(_0x3c3292);});},'afterUpdate':function(_0x38a909,_0x3995eb,_0x1e4235){return _0x266270['VoiceExtension'][_0xf471('0x25')]({'where':{'ChanSpyId':_0x38a909['id']}})[_0xf471('0x1c')](function(){return getChanSpyPromise(_0x266270,_0x38a909);})[_0xf471('0x1c')](function(_0x56ccf4){if(_0x56ccf4&&_0x56ccf4[_0xf471('0x17')]){return _0x266270[_0xf471('0x22')]['bulkCreate'](_0x56ccf4);}})[_0xf471('0x1c')](function(){_0x1e4235();})[_0xf471('0x24')](function(_0x29974b){_0x1e4235(_0x29974b);});},'afterDestroy':function(_0x4e31d3,_0x32e5fc,_0x5c5b48){return _0x266270[_0xf471('0x22')][_0xf471('0x25')]({'where':{'ChanSpyId':_0x4e31d3['id']}})['then'](function(){_0x5c5b48();})[_0xf471('0x24')](function(_0x416d3e){_0x5c5b48(_0x416d3e);});}}});};
\ No newline at end of file
+var _0xe538=['models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','%s%s','system','push','merge','format','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','length','internal','concat','User','findAll','agent','then','exports'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xe538,0x138));var _0x8e53=function(_0x3a814f,_0x553e5b){_0x3a814f=_0x3a814f-0x0;var _0x150de1=_0xe538[_0x3a814f];return _0x150de1;};'use strict';var _=require(_0x8e53('0x0'));var util=require(_0x8e53('0x1'));var BPromise=require(_0x8e53('0x2'));var attributes=require(_0x8e53('0x3'));var getUserApplications=function(_0x369fdc,_0x27a3d8,_0x44ba57){var _0x48dc72=0x1;var _0x3f2085=[];var _0x2c46c8={'context':_0x27a3d8['context']||'from-sip','exten':util['format'](_0x8e53('0x4'),_0x369fdc['prefix'],_0x44ba57),'type':_0x8e53('0x5'),'isApp':![],'ChanSpyId':_0x369fdc['id'],'UserId':_0x27a3d8['id']};_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':'Set','appdata':util[_0x8e53('0x8')](_0x8e53('0x9'),_0x8e53('0xa')),'priority':_0x48dc72++},_0x2c46c8));if(_0x369fdc[_0x8e53('0xb')]){_0x3f2085[_0x8e53('0x6')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x8e53('0xc'),_0x369fdc[_0x8e53('0xd')]),'priority':_0x48dc72++},_0x2c46c8));}if(_0x369fdc[_0x8e53('0xe')]){_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0xf'),'appdata':_0x369fdc[_0x8e53('0x10')],'priority':_0x48dc72++},_0x2c46c8));}_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0x11'),'appdata':util[_0x8e53('0x8')]('SIP/%s,%s',_0x27a3d8[_0x8e53('0x12')],_0x369fdc[_0x8e53('0x13')]?_0x369fdc[_0x8e53('0x13')][_0x8e53('0x14')](''):''),'priority':_0x48dc72++},_0x2c46c8));if(_0x369fdc['record']){_0x3f2085[_0x8e53('0x6')](_[_0x8e53('0x7')]({'app':_0x8e53('0x15'),'priority':_0x48dc72++},_0x2c46c8));}return _0x3f2085;};var getChanSpyApplications=function(_0x4dfdf4,_0x1281e5){var _0x3266fd=[];for(var _0x12a840=0x0,_0x5844b1=0x1;_0x12a840<_0x1281e5[_0x8e53('0x16')];_0x12a840++,_0x5844b1=0x1){_0x3266fd=_0x3266fd['concat'](getUserApplications(_0x4dfdf4,_0x1281e5[_0x12a840],_0x1281e5[_0x12a840][_0x8e53('0x17')]));if(_0x1281e5[_0x12a840][_0x8e53('0x17')]!=_0x1281e5[_0x12a840][_0x8e53('0x12')]){_0x3266fd=_0x3266fd[_0x8e53('0x18')](getUserApplications(_0x4dfdf4,_0x1281e5[_0x12a840],_0x1281e5[_0x12a840][_0x8e53('0x12')]));}}return _0x3266fd;};var getChanSpyPromise=function(_0x2dc0c2,_0x92056){return new BPromise(function(_0x25d95b,_0x36ab32){return _0x2dc0c2[_0x8e53('0x19')][_0x8e53('0x1a')]({'attributes':['id',_0x8e53('0x12'),_0x8e53('0x17')],'where':{'role':_0x8e53('0x1b'),'chanspy':!![]},'raw':!![]})[_0x8e53('0x1c')](function(_0x5d1726){if(_0x5d1726){return _0x25d95b(getChanSpyApplications(_0x92056,_0x5d1726));}return _0x25d95b([]);})['catch'](function(_0x5a2445){_0x36ab32(_0x5a2445);});});};module[_0x8e53('0x1d')]=function(_0x37e9d7,_0x1a5158){var _0x304853=_0x37e9d7[_0x8e53('0x1e')];return _0x37e9d7[_0x8e53('0x1f')](_0x8e53('0x20'),attributes,{'tableName':_0x8e53('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x408df1,_0x30f3e6,_0x105df5){return getChanSpyPromise(_0x304853,_0x408df1)[_0x8e53('0x1c')](function(_0x13066c){if(_0x13066c&&_0x13066c[_0x8e53('0x16')]){return _0x304853[_0x8e53('0x22')][_0x8e53('0x23')](_0x13066c);}})[_0x8e53('0x1c')](function(){_0x105df5();})[_0x8e53('0x24')](function(_0x4bbcab){_0x105df5(_0x4bbcab);});},'afterUpdate':function(_0x466bae,_0x18a6da,_0x2c007f){return _0x304853[_0x8e53('0x22')][_0x8e53('0x25')]({'where':{'ChanSpyId':_0x466bae['id']}})['then'](function(){return getChanSpyPromise(_0x304853,_0x466bae);})[_0x8e53('0x1c')](function(_0x2cb18){if(_0x2cb18&&_0x2cb18[_0x8e53('0x16')]){return _0x304853[_0x8e53('0x22')][_0x8e53('0x23')](_0x2cb18);}})[_0x8e53('0x1c')](function(){_0x2c007f();})[_0x8e53('0x24')](function(_0x2a8c8d){_0x2c007f(_0x2a8c8d);});},'afterDestroy':function(_0x5bb599,_0x2173b7,_0x5dec8f){return _0x304853[_0x8e53('0x22')][_0x8e53('0x25')]({'where':{'ChanSpyId':_0x5bb599['id']}})['then'](function(){_0x5dec8f();})[_0x8e53('0x24')](function(_0x92387){_0x5dec8f(_0x92387);});}}});};
\ No newline at end of file
index 048b254..2bcc035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fa=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment'];(function(_0x3bf485,_0x5a035d){var _0x57cea6=function(_0x1874f8){while(--_0x1874f8){_0x3bf485['push'](_0x3bf485['shift']());}};_0x57cea6(++_0x5a035d);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x144049,_0x4e6ccf){_0x144049=_0x144049-0x0;var _0x517caa=_0xa5fa[_0x144049];return _0x517caa;};'use strict';var _=require('lodash');var util=require(_0xaa5f('0x0'));var moment=require(_0xaa5f('0x1'));var BPromise=require(_0xaa5f('0x2'));var rs=require(_0xaa5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa5f('0x4'))['db'];var utils=require(_0xaa5f('0x5'));var logger=require('../../config/logger')(_0xaa5f('0x6'));var config=require(_0xaa5f('0x7'));var jayson=require(_0xaa5f('0x8'));var client=jayson[_0xaa5f('0x9')][_0xaa5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13b606,_0x302138,_0xc326df){return new BPromise(function(_0x74f64f,_0x3f550e){return client[_0xaa5f('0xb')](_0x13b606,_0xc326df)['then'](function(_0x1674c2){logger[_0xaa5f('0xc')]('VoiceChanSpy,\x20%s,\x20%s',_0x302138,'request\x20sent');logger[_0xaa5f('0xd')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x302138,'request\x20sent',JSON[_0xaa5f('0xe')](_0x1674c2));if(_0x1674c2['error']){if(_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x10')]===0x1f4){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')]['message']);return _0x3f550e(_0x1674c2[_0xaa5f('0xf')]['message']);}logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x12')]);return _0x74f64f(_0x1674c2[_0xaa5f('0xf')]['message']);}else{logger['info'](_0xaa5f('0x11'),_0x302138,_0xaa5f('0x13'));_0x74f64f(_0x1674c2[_0xaa5f('0x14')][_0xaa5f('0x12')]);}})[_0xaa5f('0x15')](function(_0x1fa36a){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1fa36a);_0x3f550e(_0x1fa36a);});});}
\ No newline at end of file
+var _0x878f=['../../config/logger','rpc','../../config/environment','jayson/promise','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0xabcea5,_0x2d2869){var _0x38c879=function(_0x1d69d7){while(--_0x1d69d7){_0xabcea5['push'](_0xabcea5['shift']());}};_0x38c879(++_0x2d2869);}(_0x878f,0x173));var _0xf878=function(_0x5b0cde,_0x5b5ca3){_0x5b0cde=_0x5b0cde-0x0;var _0x5442f7=_0x878f[_0x5b0cde];return _0x5442f7;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var moment=require(_0xf878('0x1'));var BPromise=require(_0xf878('0x2'));var rs=require(_0xf878('0x3'));var fs=require('fs');var Redis=require(_0xf878('0x4'));var db=require(_0xf878('0x5'))['db'];var utils=require(_0xf878('0x6'));var logger=require(_0xf878('0x7'))(_0xf878('0x8'));var config=require(_0xf878('0x9'));var jayson=require(_0xf878('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c5f5c,_0x62b420,_0x59e564){return new BPromise(function(_0x52851e,_0x530767){return client[_0xf878('0xb')](_0x3c5f5c,_0x59e564)['then'](function(_0x4a9d79){logger[_0xf878('0xc')](_0xf878('0xd'),_0x62b420,_0xf878('0xe'));logger['debug'](_0xf878('0xf'),_0x62b420,_0xf878('0xe'),JSON['stringify'](_0x4a9d79));if(_0x4a9d79[_0xf878('0x10')]){if(_0x4a9d79['error'][_0xf878('0x11')]===0x1f4){logger[_0xf878('0x10')](_0xf878('0xd'),_0x62b420,_0x4a9d79['error'][_0xf878('0x12')]);return _0x530767(_0x4a9d79[_0xf878('0x10')][_0xf878('0x12')]);}logger['error'](_0xf878('0xd'),_0x62b420,_0x4a9d79[_0xf878('0x10')][_0xf878('0x12')]);return _0x52851e(_0x4a9d79['error']['message']);}else{logger[_0xf878('0xc')](_0xf878('0xd'),_0x62b420,_0xf878('0xe'));_0x52851e(_0x4a9d79[_0xf878('0x13')][_0xf878('0x12')]);}})[_0xf878('0x14')](function(_0x415056){logger[_0xf878('0x10')](_0xf878('0xd'),_0x62b420,_0x415056);_0x530767(_0x415056);});});}
\ No newline at end of file
index 42e9bbc..9ba6ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0a=['post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show'];(function(_0x624b02,_0x48333f){var _0x129f5f=function(_0x1cc1fa){while(--_0x1cc1fa){_0x624b02['push'](_0x624b02['shift']());}};_0x129f5f(++_0x48333f);}(_0xef0a,0x110));var _0xaef0=function(_0x4737e9,_0x5cde48){_0x4737e9=_0x4737e9-0x0;var _0x4025fb=_0xef0a[_0x4737e9];return _0x4025fb;};'use strict';var multer=require(_0xaef0('0x0'));var util=require(_0xaef0('0x1'));var path=require('path');var timeout=require(_0xaef0('0x2'));var express=require(_0xaef0('0x3'));var router=express[_0xaef0('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaef0('0x5'));var config=require(_0xaef0('0x6'));var controller=require(_0xaef0('0x7'));router[_0xaef0('0x8')]('/',auth[_0xaef0('0x9')](),controller[_0xaef0('0xa')]);router[_0xaef0('0x8')](_0xaef0('0xb'),auth[_0xaef0('0x9')](),controller[_0xaef0('0xc')]);router[_0xaef0('0xd')]('/',auth[_0xaef0('0x9')](),controller[_0xaef0('0xe')]);router[_0xaef0('0xf')](_0xaef0('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xaef0('0x10')]('/:id',auth[_0xaef0('0x9')](),controller[_0xaef0('0x11')]);module[_0xaef0('0x12')]=router;
\ No newline at end of file
+var _0xb579=['/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceContext.controller','get','isAuthenticated','index'];(function(_0x45a694,_0x23da14){var _0x380226=function(_0x18d7ba){while(--_0x18d7ba){_0x45a694['push'](_0x45a694['shift']());}};_0x380226(++_0x23da14);}(_0xb579,0x1e3));var _0x9b57=function(_0x1b06b4,_0x5b446d){_0x1b06b4=_0x1b06b4-0x0;var _0x4dfaf1=_0xb579[_0x1b06b4];return _0x4dfaf1;};'use strict';var multer=require(_0x9b57('0x0'));var util=require('util');var path=require(_0x9b57('0x1'));var timeout=require(_0x9b57('0x2'));var express=require(_0x9b57('0x3'));var router=express[_0x9b57('0x4')]();var fs_extra=require(_0x9b57('0x5'));var auth=require(_0x9b57('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9b57('0x7'));router[_0x9b57('0x8')]('/',auth[_0x9b57('0x9')](),controller[_0x9b57('0xa')]);router['get'](_0x9b57('0xb'),auth['isAuthenticated'](),controller[_0x9b57('0xc')]);router[_0x9b57('0xd')]('/',auth[_0x9b57('0x9')](),controller[_0x9b57('0xe')]);router[_0x9b57('0xf')](_0x9b57('0xb'),auth[_0x9b57('0x9')](),controller[_0x9b57('0x10')]);router[_0x9b57('0x11')](_0x9b57('0xb'),auth[_0x9b57('0x9')](),controller['destroy']);module[_0x9b57('0x12')]=router;
\ No newline at end of file
index a435703..a5cfe3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3885=['name','sequelize','exports','STRING'];(function(_0x410be8,_0x327e0c){var _0x13a103=function(_0x48561f){while(--_0x48561f){_0x410be8['push'](_0x410be8['shift']());}};_0x13a103(++_0x327e0c);}(_0x3885,0x95));var _0x5388=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x3885[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x5388('0x0'));module[_0x5388('0x1')]={'name':{'type':Sequelize[_0x5388('0x2')],'unique':_0x5388('0x3')},'description':{'type':Sequelize[_0x5388('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5019=['STRING','name','exports'];(function(_0x38cc41,_0x168f2e){var _0x1f59e9=function(_0x3bad3f){while(--_0x3bad3f){_0x38cc41['push'](_0x38cc41['shift']());}};_0x1f59e9(++_0x168f2e);}(_0x5019,0xd1));var _0x9501=function(_0x43b8b0,_0xce5a24){_0x43b8b0=_0x43b8b0-0x0;var _0x111dd9=_0x5019[_0x43b8b0];return _0x111dd9;};'use strict';var Sequelize=require('sequelize');module[_0x9501('0x0')]={'name':{'type':Sequelize[_0x9501('0x1')],'unique':_0x9501('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 703629e..62c6371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8283=['stringify','error','code','message','result','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','destroy','get','Contexts','UserProfileResource','stack','name','send','index','VoiceContext','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','find','create','body','findAll','join','root','server/files/templates/context.ejs','utf8','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','readFileSync','render','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','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','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s'];(function(_0x286bfb,_0x46ac3c){var _0x52b683=function(_0x3e7fb1){while(--_0x3e7fb1){_0x286bfb['push'](_0x286bfb['shift']());}};_0x52b683(++_0x46ac3c);}(_0x8283,0xb3));var _0x3828=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8283[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3828('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3828('0x1'));var moment=require('moment');var BPromise=require(_0x3828('0x2'));var Mustache=require(_0x3828('0x3'));var util=require(_0x3828('0x4'));var path=require(_0x3828('0x5'));var sox=require('sox');var csv=require(_0x3828('0x6'));var ejs=require(_0x3828('0x7'));var fs=require('fs');var fs_extra=require(_0x3828('0x8'));var _=require('lodash');var squel=require(_0x3828('0x9'));var crypto=require(_0x3828('0xa'));var jsforce=require(_0x3828('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3828('0x6'));var querystring=require(_0x3828('0xc'));var Papa=require(_0x3828('0xd'));var Redis=require(_0x3828('0xe'));var authService=require(_0x3828('0xf'));var qs=require(_0x3828('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3828('0x11'));var logger=require(_0x3828('0x12'))(_0x3828('0x13'));var utils=require(_0x3828('0x14'));var config=require(_0x3828('0x15'));var licenseUtil=require(_0x3828('0x16'));var db=require(_0x3828('0x17'))['db'];var jayson=require(_0x3828('0x18'));var client=jayson[_0x3828('0x19')][_0x3828('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x3494a5,_0x525b44,_0x4ad4c4,_0x44cdb2){return new BPromise(function(_0x2e4b76,_0x276b09){var _0x2d6fbe=_0x44cdb2||client;return _0x2d6fbe[_0x3828('0x1b')](_0x3494a5,_0x4ad4c4)[_0x3828('0x1c')](function(_0x273d5f){logger[_0x3828('0x1d')](_0x3828('0x1e'),_0x525b44,_0x3828('0x1f'));logger['debug'](_0x3828('0x20'),_0x525b44,_0x3828('0x1f'),JSON[_0x3828('0x21')](_0x273d5f));if(_0x273d5f[_0x3828('0x22')]){if(_0x273d5f[_0x3828('0x22')][_0x3828('0x23')]===0x1f4){logger[_0x3828('0x22')](_0x3828('0x1e'),_0x525b44,_0x273d5f['error']['message']);return _0x276b09(_0x273d5f['error']['message']);}logger['error'](_0x3828('0x1e'),_0x525b44,_0x273d5f[_0x3828('0x22')][_0x3828('0x24')]);return _0x2e4b76(_0x273d5f[_0x3828('0x22')]['message']);}else{logger[_0x3828('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x525b44,_0x3828('0x1f'));_0x2e4b76(_0x273d5f[_0x3828('0x25')][_0x3828('0x24')]);}})[_0x3828('0x26')](function(_0xe5873b){logger['error']('VoiceContext,\x20%s,\x20%s',_0x525b44,_0xe5873b);_0x276b09(_0xe5873b);});});}function respondWithStatusCode(_0x2cb883,_0x1bfb03){_0x1bfb03=_0x1bfb03||0xcc;return function(_0x126592){if(_0x126592){return _0x2cb883[_0x3828('0x27')](_0x1bfb03);}return _0x2cb883[_0x3828('0x28')](_0x1bfb03)[_0x3828('0x29')]();};}function respondWithResult(_0x53e4b5,_0x38f005){_0x38f005=_0x38f005||0xc8;return function(_0x4fb714){if(_0x4fb714){return _0x53e4b5[_0x3828('0x28')](_0x38f005)['json'](_0x4fb714);}};}function respondWithFilteredResult(_0x7c1918,_0x313beb){return function(_0x11b63e){if(_0x11b63e){var _0x35484c=typeof _0x313beb[_0x3828('0x2a')]==='undefined'&&typeof _0x313beb[_0x3828('0x2b')]===_0x3828('0x2c');var _0x1c0ac2=_0x11b63e[_0x3828('0x2d')];var _0x26e815=_0x35484c?0x0:_0x313beb[_0x3828('0x2a')];var _0x4d2886=_0x35484c?_0x11b63e['count']:_0x313beb[_0x3828('0x2a')]+_0x313beb[_0x3828('0x2b')];var _0x5b8d21;if(_0x4d2886>=_0x1c0ac2){_0x4d2886=_0x1c0ac2;_0x5b8d21=0xc8;}else{_0x5b8d21=0xce;}_0x7c1918[_0x3828('0x28')](_0x5b8d21);return _0x7c1918[_0x3828('0x2e')](_0x3828('0x2f'),_0x26e815+'-'+_0x4d2886+'/'+_0x1c0ac2)[_0x3828('0x30')](_0x11b63e);}return null;};}function patchUpdates(_0x5a4756){return function(_0x4e9f24){try{jsonpatch[_0x3828('0x31')](_0x4e9f24,_0x5a4756,!![]);}catch(_0x54716f){return BPromise['reject'](_0x54716f);}return _0x4e9f24[_0x3828('0x32')]();};}function saveUpdates(_0x9eee69,_0x124bba){return function(_0x15a18d){if(_0x15a18d){return _0x15a18d[_0x3828('0x33')](_0x9eee69)[_0x3828('0x1c')](function(_0x56a24e){return _0x56a24e;});}return null;};}function removeEntity(_0x1bc267,_0x17f839){return function(_0x549a12){if(_0x549a12){return _0x549a12[_0x3828('0x34')]()['then'](function(){var _0x25a19b=_0x549a12[_0x3828('0x35')]({'plain':!![]});var _0x38a602=_0x3828('0x36');return db[_0x3828('0x37')][_0x3828('0x34')]({'where':{'type':_0x38a602,'resourceId':_0x25a19b['id']}})[_0x3828('0x1c')](function(){return _0x549a12;});})[_0x3828('0x1c')](function(){_0x1bc267[_0x3828('0x28')](0xcc)[_0x3828('0x29')]();});}};}function handleEntityNotFound(_0x42ba45,_0x5756be){return function(_0x413709){if(!_0x413709){_0x42ba45[_0x3828('0x27')](0x194);}return _0x413709;};}function handleError(_0x35f7fc,_0x545c2f){_0x545c2f=_0x545c2f||0x1f4;return function(_0x2680f9){logger[_0x3828('0x22')](_0x2680f9[_0x3828('0x38')]);if(_0x2680f9[_0x3828('0x39')]){delete _0x2680f9[_0x3828('0x39')];}_0x35f7fc[_0x3828('0x28')](_0x545c2f)[_0x3828('0x3a')](_0x2680f9);};}exports[_0x3828('0x3b')]=function(_0x2518b6,_0x3215c2){var _0x1d8344={},_0xa73dd9={},_0x487fe2={'count':0x0,'rows':[]};var _0x33d3b7=_['map'](db[_0x3828('0x3c')][_0x3828('0x3d')],function(_0x5784f3){return{'name':_0x5784f3[_0x3828('0x3e')],'type':_0x5784f3[_0x3828('0x3f')][_0x3828('0x40')]};});_0xa73dd9[_0x3828('0x41')]=_[_0x3828('0x42')](_0x33d3b7,'name');_0xa73dd9[_0x3828('0x43')]=_[_0x3828('0x44')](_0x2518b6['query']);_0xa73dd9['filters']=_[_0x3828('0x45')](_0xa73dd9['model'],_0xa73dd9['query']);_0x1d8344[_0x3828('0x46')]=_[_0x3828('0x45')](_0xa73dd9['model'],qs[_0x3828('0x47')](_0x2518b6[_0x3828('0x43')]['fields']));_0x1d8344['attributes']=_0x1d8344[_0x3828('0x46')][_0x3828('0x48')]?_0x1d8344['attributes']:_0xa73dd9[_0x3828('0x41')];if(!_0x2518b6['query'][_0x3828('0x49')]('nolimit')){_0x1d8344[_0x3828('0x2b')]=qs[_0x3828('0x2b')](_0x2518b6[_0x3828('0x43')][_0x3828('0x2b')]);_0x1d8344[_0x3828('0x2a')]=qs[_0x3828('0x2a')](_0x2518b6[_0x3828('0x43')]['offset']);}_0x1d8344['order']=qs[_0x3828('0x4a')](_0x2518b6[_0x3828('0x43')]['sort']);_0x1d8344[_0x3828('0x4b')]=qs[_0x3828('0x4c')](_[_0x3828('0x4d')](_0x2518b6[_0x3828('0x43')],_0xa73dd9[_0x3828('0x4c')]),_0x33d3b7);if(_0x2518b6[_0x3828('0x43')][_0x3828('0x4e')]){_0x1d8344['where']=_[_0x3828('0x4f')](_0x1d8344['where'],{'$or':_['map'](_0x33d3b7,function(_0x33a301){if(_0x33a301[_0x3828('0x3f')]!==_0x3828('0x50')){var _0x572289={};_0x572289[_0x33a301['name']]={'$like':'%'+_0x2518b6[_0x3828('0x43')][_0x3828('0x4e')]+'%'};return _0x572289;}})});}_0x1d8344=_[_0x3828('0x4f')]({},_0x1d8344,_0x2518b6[_0x3828('0x51')]);var _0x4d207c={'where':_0x1d8344['where']};return db[_0x3828('0x3c')][_0x3828('0x2d')](_0x4d207c)[_0x3828('0x1c')](function(_0x14ca05){_0x487fe2[_0x3828('0x2d')]=_0x14ca05;if(_0x2518b6[_0x3828('0x43')][_0x3828('0x52')]){_0x1d8344[_0x3828('0x53')]=[{'all':!![]}];}return db['VoiceContext']['findAll'](_0x1d8344);})[_0x3828('0x1c')](function(_0x3738af){_0x487fe2[_0x3828('0x54')]=_0x3738af;return _0x487fe2;})['then'](respondWithFilteredResult(_0x3215c2,_0x1d8344))['catch'](handleError(_0x3215c2,null));};exports['show']=function(_0x3c3843,_0x5b561f){var _0x1e77ba={'raw':![],'where':{'id':_0x3c3843['params']['id']}},_0x249275={};_0x249275['model']=_[_0x3828('0x44')](db[_0x3828('0x3c')]['rawAttributes']);_0x249275['query']=_['keys'](_0x3c3843[_0x3828('0x43')]);_0x249275[_0x3828('0x4c')]=_[_0x3828('0x45')](_0x249275[_0x3828('0x41')],_0x249275[_0x3828('0x43')]);_0x1e77ba['attributes']=_[_0x3828('0x45')](_0x249275[_0x3828('0x41')],qs[_0x3828('0x47')](_0x3c3843[_0x3828('0x43')][_0x3828('0x47')]));_0x1e77ba[_0x3828('0x46')]=_0x1e77ba[_0x3828('0x46')][_0x3828('0x48')]?_0x1e77ba['attributes']:_0x249275[_0x3828('0x41')];if(_0x3c3843[_0x3828('0x43')][_0x3828('0x52')]){_0x1e77ba[_0x3828('0x53')]=[{'all':!![]}];}_0x1e77ba=_[_0x3828('0x4f')]({},_0x1e77ba,_0x3c3843[_0x3828('0x51')]);return db[_0x3828('0x3c')][_0x3828('0x55')](_0x1e77ba)[_0x3828('0x1c')](handleEntityNotFound(_0x5b561f,null))[_0x3828('0x1c')](respondWithResult(_0x5b561f,null))['catch'](handleError(_0x5b561f,null));};exports[_0x3828('0x56')]=function(_0x3eb2b2,_0x228f7f,_0x2d581b){var _0x1f5ff7;return db[_0x3828('0x3c')][_0x3828('0x56')](_0x3eb2b2[_0x3828('0x57')],{'raw':!![]})['then'](function(_0x5204bf){_0x1f5ff7=_0x5204bf;return db[_0x3828('0x3c')][_0x3828('0x58')]({'raw':!![]});})[_0x3828('0x1c')](function(_0x5f3841){var _0x3c3350=fs['readFileSync'](path[_0x3828('0x59')](config[_0x3828('0x5a')],_0x3828('0x5b')),_0x3828('0x5c'));var _0x16b3ee=ejs['render'](_0x3c3350,{'contexts':_0x5f3841||[]});fs[_0x3828('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x16b3ee);})['then'](function(){return respondWithRpcPromise(_0x3828('0x5e'),'create',{'module':_0x3828('0x5f')});})['then'](function(){var _0x286119=_0x3eb2b2[_0x3828('0x60')][_0x3828('0x35')]({'plain':!![]});if(!_0x286119)throw new Error(_0x3828('0x61'));if(_0x286119[_0x3828('0x62')]===_0x3828('0x60')){var _0x25e86a=_0x1f5ff7[_0x3828('0x35')]({'plain':!![]});return db[_0x3828('0x63')][_0x3828('0x55')]({'where':{'name':_0x3828('0x36'),'userProfileId':_0x286119[_0x3828('0x64')]},'raw':!![]})[_0x3828('0x1c')](function(_0x462f3d){if(_0x462f3d&&_0x462f3d[_0x3828('0x65')]===0x0){return db[_0x3828('0x37')][_0x3828('0x56')]({'name':_0x25e86a[_0x3828('0x39')],'resourceId':_0x25e86a['id'],'type':_0x462f3d[_0x3828('0x39')],'sectionId':_0x462f3d['id']},{})[_0x3828('0x1c')](function(){return _0x1f5ff7;});}else{return _0x1f5ff7;}})[_0x3828('0x26')](function(_0x198a75){logger[_0x3828('0x22')](_0x3828('0x66'),_0x198a75);throw _0x198a75;});}return _0x1f5ff7;})[_0x3828('0x1c')](respondWithResult(_0x228f7f,0xc9))[_0x3828('0x26')](handleError(_0x228f7f,null));};exports[_0x3828('0x33')]=function(_0x1d5d7c,_0x31c083,_0x5b4a69){var _0x3228b2;return db[_0x3828('0x3c')][_0x3828('0x55')]({'where':{'id':_0x1d5d7c[_0x3828('0x67')]['id']}})['then'](handleEntityNotFound(_0x31c083,null))[_0x3828('0x1c')](saveUpdates(_0x1d5d7c['body'],null))['then'](function(_0x359fd2){if(_0x359fd2){_0x3228b2=_0x359fd2;return db[_0x3828('0x3c')][_0x3828('0x58')]({'raw':!![]});}})[_0x3828('0x1c')](function(_0x529e47){var _0x585cc0=fs[_0x3828('0x68')](path[_0x3828('0x59')](config[_0x3828('0x5a')],_0x3828('0x5b')),'utf8');var _0x399c0f=ejs[_0x3828('0x69')](_0x585cc0,{'contexts':_0x529e47||[]});fs[_0x3828('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x399c0f);})[_0x3828('0x1c')](function(){return respondWithRpcPromise(_0x3828('0x5e'),_0x3828('0x33'),{'module':_0x3828('0x5f')});})['then'](function(){return _0x3228b2;})[_0x3828('0x1c')](respondWithResult(_0x31c083,null))[_0x3828('0x26')](handleError(_0x31c083,null));};exports[_0x3828('0x34')]=function(_0x3d78e6,_0x16a6f7,_0x531711){var _0x28aa34;return db[_0x3828('0x3c')]['find']({'where':{'id':_0x3d78e6[_0x3828('0x67')]['id']}})[_0x3828('0x1c')](handleEntityNotFound(_0x16a6f7,null))['then'](removeEntity(_0x16a6f7,null))['then'](function(){return db[_0x3828('0x3c')]['findAll']({'raw':!![]});})['then'](function(_0x5ebcb1){var _0x137b55=fs['readFileSync'](path[_0x3828('0x59')](config['root'],_0x3828('0x5b')),_0x3828('0x5c'));var _0xce8f4=ejs[_0x3828('0x69')](_0x137b55,{'contexts':_0x5ebcb1});fs[_0x3828('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0xce8f4);return respondWithRpcPromise('Reload',_0x3828('0x34'),{'module':_0x3828('0x5f')});})[_0x3828('0x26')](handleError(_0x16a6f7,null));};
\ No newline at end of file
+var _0x29c8=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Contexts','name','send','index','map','VoiceContext','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','rawAttributes','find','create','body','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','render','Reload','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0x29c8,0x12e));var _0x829c=function(_0x4def2a,_0x39e43b){_0x4def2a=_0x4def2a-0x0;var _0x410242=_0x29c8[_0x4def2a];return _0x410242;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x829c('0x0'));var rp=require(_0x829c('0x1'));var moment=require(_0x829c('0x2'));var BPromise=require(_0x829c('0x3'));var Mustache=require(_0x829c('0x4'));var util=require(_0x829c('0x5'));var path=require(_0x829c('0x6'));var sox=require(_0x829c('0x7'));var csv=require(_0x829c('0x8'));var ejs=require(_0x829c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x829c('0xa'));var squel=require(_0x829c('0xb'));var crypto=require(_0x829c('0xc'));var jsforce=require(_0x829c('0xd'));var deskjs=require(_0x829c('0xe'));var toCsv=require(_0x829c('0x8'));var querystring=require(_0x829c('0xf'));var Papa=require(_0x829c('0x10'));var Redis=require(_0x829c('0x11'));var authService=require(_0x829c('0x12'));var qs=require(_0x829c('0x13'));var as=require(_0x829c('0x14'));var hardwareService=require(_0x829c('0x15'));var logger=require('../../config/logger')(_0x829c('0x16'));var utils=require(_0x829c('0x17'));var config=require(_0x829c('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x829c('0x19'));var client=jayson[_0x829c('0x1a')][_0x829c('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x45b39a,_0x480ffa,_0x54a430,_0x58bf59){return new BPromise(function(_0x561705,_0x19bb66){var _0x10f588=_0x58bf59||client;return _0x10f588[_0x829c('0x1c')](_0x45b39a,_0x54a430)[_0x829c('0x1d')](function(_0x10a708){logger[_0x829c('0x1e')](_0x829c('0x1f'),_0x480ffa,'request\x20sent');logger['debug'](_0x829c('0x20'),_0x480ffa,_0x829c('0x21'),JSON[_0x829c('0x22')](_0x10a708));if(_0x10a708['error']){if(_0x10a708[_0x829c('0x23')]['code']===0x1f4){logger['error'](_0x829c('0x1f'),_0x480ffa,_0x10a708['error'][_0x829c('0x24')]);return _0x19bb66(_0x10a708['error'][_0x829c('0x24')]);}logger['error'](_0x829c('0x1f'),_0x480ffa,_0x10a708[_0x829c('0x23')]['message']);return _0x561705(_0x10a708[_0x829c('0x23')][_0x829c('0x24')]);}else{logger[_0x829c('0x1e')](_0x829c('0x1f'),_0x480ffa,'request\x20sent');_0x561705(_0x10a708[_0x829c('0x25')][_0x829c('0x24')]);}})[_0x829c('0x26')](function(_0x31201b){logger[_0x829c('0x23')](_0x829c('0x1f'),_0x480ffa,_0x31201b);_0x19bb66(_0x31201b);});});}function respondWithStatusCode(_0x515e78,_0x5e1356){_0x5e1356=_0x5e1356||0xcc;return function(_0x453bde){if(_0x453bde){return _0x515e78[_0x829c('0x27')](_0x5e1356);}return _0x515e78[_0x829c('0x28')](_0x5e1356)[_0x829c('0x29')]();};}function respondWithResult(_0x20ec87,_0x52fb95){_0x52fb95=_0x52fb95||0xc8;return function(_0x4417fb){if(_0x4417fb){return _0x20ec87[_0x829c('0x28')](_0x52fb95)[_0x829c('0x2a')](_0x4417fb);}};}function respondWithFilteredResult(_0x3a9c82,_0x3f6b0b){return function(_0x5d1eeb){if(_0x5d1eeb){var _0x3f887a=typeof _0x3f6b0b[_0x829c('0x2b')]===_0x829c('0x2c')&&typeof _0x3f6b0b[_0x829c('0x2d')]==='undefined';var _0x269bd=_0x5d1eeb[_0x829c('0x2e')];var _0x299003=_0x3f887a?0x0:_0x3f6b0b[_0x829c('0x2b')];var _0x21399d=_0x3f887a?_0x5d1eeb['count']:_0x3f6b0b[_0x829c('0x2b')]+_0x3f6b0b[_0x829c('0x2d')];var _0x4953cf;if(_0x21399d>=_0x269bd){_0x21399d=_0x269bd;_0x4953cf=0xc8;}else{_0x4953cf=0xce;}_0x3a9c82[_0x829c('0x28')](_0x4953cf);return _0x3a9c82['set'](_0x829c('0x2f'),_0x299003+'-'+_0x21399d+'/'+_0x269bd)[_0x829c('0x2a')](_0x5d1eeb);}return null;};}function patchUpdates(_0xd0771f){return function(_0x5079f5){try{jsonpatch[_0x829c('0x30')](_0x5079f5,_0xd0771f,!![]);}catch(_0x1aef61){return BPromise[_0x829c('0x31')](_0x1aef61);}return _0x5079f5[_0x829c('0x32')]();};}function saveUpdates(_0x506b1d,_0x3fe7b9){return function(_0x23a8b9){if(_0x23a8b9){return _0x23a8b9['update'](_0x506b1d)['then'](function(_0x19bb73){return _0x19bb73;});}return null;};}function removeEntity(_0x13252e,_0x959ce7){return function(_0x26ba7e){if(_0x26ba7e){return _0x26ba7e[_0x829c('0x33')]()[_0x829c('0x1d')](function(){var _0x487b38=_0x26ba7e[_0x829c('0x34')]({'plain':!![]});var _0x461fbe=_0x829c('0x35');return db['UserProfileResource'][_0x829c('0x33')]({'where':{'type':_0x461fbe,'resourceId':_0x487b38['id']}})['then'](function(){return _0x26ba7e;});})[_0x829c('0x1d')](function(){_0x13252e[_0x829c('0x28')](0xcc)[_0x829c('0x29')]();});}};}function handleEntityNotFound(_0x4b0168,_0x25e1cf){return function(_0x4f31d0){if(!_0x4f31d0){_0x4b0168[_0x829c('0x27')](0x194);}return _0x4f31d0;};}function handleError(_0x219df3,_0x2dee79){_0x2dee79=_0x2dee79||0x1f4;return function(_0x3f2fcf){logger[_0x829c('0x23')](_0x3f2fcf['stack']);if(_0x3f2fcf[_0x829c('0x36')]){delete _0x3f2fcf['name'];}_0x219df3[_0x829c('0x28')](_0x2dee79)[_0x829c('0x37')](_0x3f2fcf);};}exports[_0x829c('0x38')]=function(_0x161db3,_0x4400f4){var _0x3ac569={},_0x32f53a={},_0x1e65f9={'count':0x0,'rows':[]};var _0x1b00be=_[_0x829c('0x39')](db[_0x829c('0x3a')]['rawAttributes'],function(_0x24a999){return{'name':_0x24a999[_0x829c('0x3b')],'type':_0x24a999[_0x829c('0x3c')]['key']};});_0x32f53a['model']=_[_0x829c('0x39')](_0x1b00be,'name');_0x32f53a[_0x829c('0x3d')]=_[_0x829c('0x3e')](_0x161db3['query']);_0x32f53a['filters']=_[_0x829c('0x3f')](_0x32f53a[_0x829c('0x40')],_0x32f53a[_0x829c('0x3d')]);_0x3ac569['attributes']=_['intersection'](_0x32f53a[_0x829c('0x40')],qs[_0x829c('0x41')](_0x161db3['query'][_0x829c('0x41')]));_0x3ac569[_0x829c('0x42')]=_0x3ac569[_0x829c('0x42')][_0x829c('0x43')]?_0x3ac569[_0x829c('0x42')]:_0x32f53a[_0x829c('0x40')];if(!_0x161db3['query'][_0x829c('0x44')](_0x829c('0x45'))){_0x3ac569['limit']=qs['limit'](_0x161db3[_0x829c('0x3d')][_0x829c('0x2d')]);_0x3ac569[_0x829c('0x2b')]=qs[_0x829c('0x2b')](_0x161db3[_0x829c('0x3d')][_0x829c('0x2b')]);}_0x3ac569[_0x829c('0x46')]=qs[_0x829c('0x47')](_0x161db3['query']['sort']);_0x3ac569['where']=qs[_0x829c('0x48')](_[_0x829c('0x49')](_0x161db3[_0x829c('0x3d')],_0x32f53a['filters']),_0x1b00be);if(_0x161db3[_0x829c('0x3d')]['filter']){_0x3ac569[_0x829c('0x4a')]=_[_0x829c('0x4b')](_0x3ac569[_0x829c('0x4a')],{'$or':_[_0x829c('0x39')](_0x1b00be,function(_0x5662de){if(_0x5662de['type']!==_0x829c('0x4c')){var _0x42c6db={};_0x42c6db[_0x5662de[_0x829c('0x36')]]={'$like':'%'+_0x161db3['query'][_0x829c('0x4d')]+'%'};return _0x42c6db;}})});}_0x3ac569=_[_0x829c('0x4b')]({},_0x3ac569,_0x161db3[_0x829c('0x4e')]);var _0x1403ef={'where':_0x3ac569[_0x829c('0x4a')]};return db[_0x829c('0x3a')][_0x829c('0x2e')](_0x1403ef)[_0x829c('0x1d')](function(_0x31ade0){_0x1e65f9[_0x829c('0x2e')]=_0x31ade0;if(_0x161db3['query'][_0x829c('0x4f')]){_0x3ac569[_0x829c('0x50')]=[{'all':!![]}];}return db[_0x829c('0x3a')]['findAll'](_0x3ac569);})['then'](function(_0x4fdd9a){_0x1e65f9[_0x829c('0x51')]=_0x4fdd9a;return _0x1e65f9;})[_0x829c('0x1d')](respondWithFilteredResult(_0x4400f4,_0x3ac569))['catch'](handleError(_0x4400f4,null));};exports[_0x829c('0x52')]=function(_0x336ec7,_0x10ec70){var _0x580d60={'raw':![],'where':{'id':_0x336ec7[_0x829c('0x53')]['id']}},_0x55dd33={};_0x55dd33[_0x829c('0x40')]=_[_0x829c('0x3e')](db[_0x829c('0x3a')][_0x829c('0x54')]);_0x55dd33[_0x829c('0x3d')]=_[_0x829c('0x3e')](_0x336ec7[_0x829c('0x3d')]);_0x55dd33[_0x829c('0x48')]=_[_0x829c('0x3f')](_0x55dd33[_0x829c('0x40')],_0x55dd33['query']);_0x580d60[_0x829c('0x42')]=_[_0x829c('0x3f')](_0x55dd33[_0x829c('0x40')],qs[_0x829c('0x41')](_0x336ec7[_0x829c('0x3d')][_0x829c('0x41')]));_0x580d60[_0x829c('0x42')]=_0x580d60['attributes'][_0x829c('0x43')]?_0x580d60[_0x829c('0x42')]:_0x55dd33['model'];if(_0x336ec7[_0x829c('0x3d')][_0x829c('0x4f')]){_0x580d60['include']=[{'all':!![]}];}_0x580d60=_[_0x829c('0x4b')]({},_0x580d60,_0x336ec7['options']);return db[_0x829c('0x3a')][_0x829c('0x55')](_0x580d60)[_0x829c('0x1d')](handleEntityNotFound(_0x10ec70,null))[_0x829c('0x1d')](respondWithResult(_0x10ec70,null))[_0x829c('0x26')](handleError(_0x10ec70,null));};exports[_0x829c('0x56')]=function(_0xe2f1f8,_0x3be741,_0x1366b2){var _0x170d25;return db['VoiceContext']['create'](_0xe2f1f8[_0x829c('0x57')],{'raw':!![]})[_0x829c('0x1d')](function(_0x1c6ddc){_0x170d25=_0x1c6ddc;return db[_0x829c('0x3a')][_0x829c('0x58')]({'raw':!![]});})[_0x829c('0x1d')](function(_0x1825ec){var _0xa0c03c=fs[_0x829c('0x59')](path[_0x829c('0x5a')](config[_0x829c('0x5b')],_0x829c('0x5c')),_0x829c('0x5d'));var _0x136ade=ejs['render'](_0xa0c03c,{'contexts':_0x1825ec||[]});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x136ade);})['then'](function(){return respondWithRpcPromise('Reload',_0x829c('0x56'),{'module':_0x829c('0x60')});})[_0x829c('0x1d')](function(){var _0x3129af=_0xe2f1f8[_0x829c('0x61')][_0x829c('0x34')]({'plain':!![]});if(!_0x3129af)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3129af['role']===_0x829c('0x61')){var _0x2fb3c7=_0x170d25[_0x829c('0x34')]({'plain':!![]});return db[_0x829c('0x62')][_0x829c('0x55')]({'where':{'name':_0x829c('0x35'),'userProfileId':_0x3129af[_0x829c('0x63')]},'raw':!![]})[_0x829c('0x1d')](function(_0x4d3315){if(_0x4d3315&&_0x4d3315[_0x829c('0x64')]===0x0){return db['UserProfileResource'][_0x829c('0x56')]({'name':_0x2fb3c7[_0x829c('0x36')],'resourceId':_0x2fb3c7['id'],'type':_0x4d3315[_0x829c('0x36')],'sectionId':_0x4d3315['id']},{})[_0x829c('0x1d')](function(){return _0x170d25;});}else{return _0x170d25;}})['catch'](function(_0x592109){logger[_0x829c('0x23')](_0x829c('0x65'),_0x592109);throw _0x592109;});}return _0x170d25;})[_0x829c('0x1d')](respondWithResult(_0x3be741,0xc9))[_0x829c('0x26')](handleError(_0x3be741,null));};exports[_0x829c('0x66')]=function(_0xb45b5,_0x194a09,_0x48adf3){var _0x2ae9ab;return db[_0x829c('0x3a')][_0x829c('0x55')]({'where':{'id':_0xb45b5[_0x829c('0x53')]['id']}})[_0x829c('0x1d')](handleEntityNotFound(_0x194a09,null))[_0x829c('0x1d')](saveUpdates(_0xb45b5['body'],null))[_0x829c('0x1d')](function(_0x2c2b17){if(_0x2c2b17){_0x2ae9ab=_0x2c2b17;return db['VoiceContext'][_0x829c('0x58')]({'raw':!![]});}})[_0x829c('0x1d')](function(_0xbe3f9c){var _0x391816=fs[_0x829c('0x59')](path['join'](config[_0x829c('0x5b')],'server/files/templates/context.ejs'),_0x829c('0x5d'));var _0x58080f=ejs[_0x829c('0x67')](_0x391816,{'contexts':_0xbe3f9c||[]});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x58080f);})['then'](function(){return respondWithRpcPromise(_0x829c('0x68'),_0x829c('0x66'),{'module':_0x829c('0x60')});})[_0x829c('0x1d')](function(){return _0x2ae9ab;})['then'](respondWithResult(_0x194a09,null))[_0x829c('0x26')](handleError(_0x194a09,null));};exports[_0x829c('0x33')]=function(_0x3694db,_0x3884de,_0x4bb191){var _0x4d3729;return db[_0x829c('0x3a')]['find']({'where':{'id':_0x3694db[_0x829c('0x53')]['id']}})[_0x829c('0x1d')](handleEntityNotFound(_0x3884de,null))[_0x829c('0x1d')](removeEntity(_0x3884de,null))[_0x829c('0x1d')](function(){return db[_0x829c('0x3a')][_0x829c('0x58')]({'raw':!![]});})[_0x829c('0x1d')](function(_0x41bbfa){var _0xe7a069=fs[_0x829c('0x59')](path[_0x829c('0x5a')](config[_0x829c('0x5b')],_0x829c('0x5c')),'utf8');var _0x30cdbd=ejs[_0x829c('0x67')](_0xe7a069,{'contexts':_0x41bbfa});fs[_0x829c('0x5e')](_0x829c('0x5f'),_0x30cdbd);return respondWithRpcPromise('Reload',_0x829c('0x33'),{'module':_0x829c('0x60')});})[_0x829c('0x26')](handleError(_0x3884de,null));};
\ No newline at end of file
index 0946167..2a0d960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd910=['voice_contexts','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x1a9d40,_0x4f4136){var _0xee5b74=function(_0x226158){while(--_0x226158){_0x1a9d40['push'](_0x1a9d40['shift']());}};_0xee5b74(++_0x4f4136);}(_0xd910,0xb9));var _0x0d91=function(_0x2fb9a3,_0x8ed09f){_0x2fb9a3=_0x2fb9a3-0x0;var _0x43f6ec=_0xd910[_0x2fb9a3];return _0x43f6ec;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0d91('0x0'))('api');var moment=require(_0x0d91('0x1'));var BPromise=require(_0x0d91('0x2'));var rp=require(_0x0d91('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0d91('0x4'));var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module[_0x0d91('0x5')]=function(_0x218316,_0x362f34){return _0x218316[_0x0d91('0x6')]('VoiceContext',attributes,{'tableName':_0x0d91('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec7c=['VoiceContext','voice_contexts','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0x2e2467,_0x56c489){var _0x5969d7=function(_0x278c7d){while(--_0x278c7d){_0x2e2467['push'](_0x2e2467['shift']());}};_0x5969d7(++_0x56c489);}(_0xec7c,0x154));var _0xcec7=function(_0x10ddc4,_0x29acf9){_0x10ddc4=_0x10ddc4-0x0;var _0x1fdb84=_0xec7c[_0x10ddc4];return _0x1fdb84;};'use strict';var _=require(_0xcec7('0x0'));var util=require('util');var logger=require(_0xcec7('0x1'))(_0xcec7('0x2'));var moment=require(_0xcec7('0x3'));var BPromise=require('bluebird');var rp=require(_0xcec7('0x4'));var fs=require('fs');var path=require(_0xcec7('0x5'));var rimraf=require(_0xcec7('0x6'));var config=require(_0xcec7('0x7'));var attributes=require(_0xcec7('0x8'));module[_0xcec7('0x9')]=function(_0x5aafce,_0x30efd6){return _0x5aafce[_0xcec7('0xa')](_0xcec7('0xb'),attributes,{'tableName':_0xcec7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87a6c6c..18fd1cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x105b=['message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error'];(function(_0x1f90f2,_0x360848){var _0x148c7e=function(_0x3734e2){while(--_0x3734e2){_0x1f90f2['push'](_0x1f90f2['shift']());}};_0x148c7e(++_0x360848);}(_0x105b,0x1a7));var _0xb105=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x105b[_0x433a86];return _0x23000c;};'use strict';var _=require(_0xb105('0x0'));var util=require(_0xb105('0x1'));var moment=require(_0xb105('0x2'));var BPromise=require(_0xb105('0x3'));var rs=require(_0xb105('0x4'));var fs=require('fs');var Redis=require(_0xb105('0x5'));var db=require(_0xb105('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb105('0x7'))(_0xb105('0x8'));var config=require(_0xb105('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb105('0xa')][_0xb105('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x269602,_0x285b2a,_0x2a0cdd){return new BPromise(function(_0x32f457,_0xcd9441){return client['request'](_0x269602,_0x2a0cdd)[_0xb105('0xc')](function(_0x203aed){logger['info'](_0xb105('0xd'),_0x285b2a,_0xb105('0xe'));logger[_0xb105('0xf')](_0xb105('0x10'),_0x285b2a,_0xb105('0xe'),JSON['stringify'](_0x203aed));if(_0x203aed[_0xb105('0x11')]){if(_0x203aed[_0xb105('0x11')]['code']===0x1f4){logger[_0xb105('0x11')](_0xb105('0xd'),_0x285b2a,_0x203aed[_0xb105('0x11')][_0xb105('0x12')]);return _0xcd9441(_0x203aed['error']['message']);}logger[_0xb105('0x11')](_0xb105('0xd'),_0x285b2a,_0x203aed['error']['message']);return _0x32f457(_0x203aed[_0xb105('0x11')][_0xb105('0x12')]);}else{logger[_0xb105('0x13')](_0xb105('0xd'),_0x285b2a,_0xb105('0xe'));_0x32f457(_0x203aed['result']['message']);}})[_0xb105('0x14')](function(_0x57fdda){logger['error'](_0xb105('0xd'),_0x285b2a,_0x57fdda);_0xcd9441(_0x57fdda);});});}
\ No newline at end of file
+var _0x40a3=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','error','message','info','lodash'];(function(_0x2d631d,_0x5443e7){var _0x36c3f5=function(_0x2ec5b1){while(--_0x2ec5b1){_0x2d631d['push'](_0x2d631d['shift']());}};_0x36c3f5(++_0x5443e7);}(_0x40a3,0x153));var _0x340a=function(_0x50fd54,_0x1a9e96){_0x50fd54=_0x50fd54-0x0;var _0x4d8580=_0x40a3[_0x50fd54];return _0x4d8580;};'use strict';var _=require(_0x340a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x340a('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x340a('0x2'))['db'];var utils=require(_0x340a('0x3'));var logger=require(_0x340a('0x4'))(_0x340a('0x5'));var config=require(_0x340a('0x6'));var jayson=require(_0x340a('0x7'));var client=jayson[_0x340a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c1457,_0x41df9f,_0x535230){return new BPromise(function(_0x1c4655,_0x15a515){return client[_0x340a('0x9')](_0x1c1457,_0x535230)[_0x340a('0xa')](function(_0x120fb2){logger['info'](_0x340a('0xb'),_0x41df9f,_0x340a('0xc'));logger[_0x340a('0xd')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x41df9f,_0x340a('0xc'),JSON['stringify'](_0x120fb2));if(_0x120fb2[_0x340a('0xe')]){if(_0x120fb2[_0x340a('0xe')]['code']===0x1f4){logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);return _0x15a515(_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);}logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);return _0x1c4655(_0x120fb2[_0x340a('0xe')][_0x340a('0xf')]);}else{logger[_0x340a('0x10')](_0x340a('0xb'),_0x41df9f,_0x340a('0xc'));_0x1c4655(_0x120fb2['result'][_0x340a('0xf')]);}})['catch'](function(_0x52fee8){logger[_0x340a('0xe')](_0x340a('0xb'),_0x41df9f,_0x52fee8);_0x15a515(_0x52fee8);});});}
\ No newline at end of file
index 4a34883..fcd8789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24d3=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','update','destroy','exports','multer','util','path'];(function(_0x308d7a,_0x2b7931){var _0x4694df=function(_0x350bc7){while(--_0x350bc7){_0x308d7a['push'](_0x308d7a['shift']());}};_0x4694df(++_0x2b7931);}(_0x24d3,0xcf));var _0x324d=function(_0x5972e3,_0x32f5b9){_0x5972e3=_0x5972e3-0x0;var _0x265a48=_0x24d3[_0x5972e3];return _0x265a48;};'use strict';var multer=require(_0x324d('0x0'));var util=require(_0x324d('0x1'));var path=require(_0x324d('0x2'));var timeout=require(_0x324d('0x3'));var express=require(_0x324d('0x4'));var router=express[_0x324d('0x5')]();var fs_extra=require(_0x324d('0x6'));var auth=require(_0x324d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x324d('0x8'));var controller=require('./voiceDialReport.controller');router[_0x324d('0x9')]('/',auth[_0x324d('0xa')](),controller[_0x324d('0xb')]);router[_0x324d('0x9')](_0x324d('0xc'),auth['isAuthenticated'](),controller[_0x324d('0xd')]);router[_0x324d('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x324d('0xe')]);router[_0x324d('0xf')]('/',auth[_0x324d('0xa')](),controller['create']);router[_0x324d('0x10')](_0x324d('0x11'),auth['isAuthenticated'](),controller[_0x324d('0x12')]);router['delete']('/:id',auth[_0x324d('0xa')](),controller[_0x324d('0x13')]);module[_0x324d('0x14')]=router;
\ No newline at end of file
+var _0x908b=['isAuthenticated','index','describe','get','/:id','show','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceDialReport.controller'];(function(_0x1d7332,_0x23e627){var _0x4a85bc=function(_0xe34551){while(--_0xe34551){_0x1d7332['push'](_0x1d7332['shift']());}};_0x4a85bc(++_0x23e627);}(_0x908b,0x137));var _0xb908=function(_0x1ba950,_0x4d57bc){_0x1ba950=_0x1ba950-0x0;var _0x4d2343=_0x908b[_0x1ba950];return _0x4d2343;};'use strict';var multer=require('multer');var util=require(_0xb908('0x0'));var path=require(_0xb908('0x1'));var timeout=require(_0xb908('0x2'));var express=require(_0xb908('0x3'));var router=express[_0xb908('0x4')]();var fs_extra=require(_0xb908('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb908('0x6'));var config=require(_0xb908('0x7'));var controller=require(_0xb908('0x8'));router['get']('/',auth[_0xb908('0x9')](),controller[_0xb908('0xa')]);router['get']('/describe',auth[_0xb908('0x9')](),controller[_0xb908('0xb')]);router[_0xb908('0xc')](_0xb908('0xd'),auth['isAuthenticated'](),controller[_0xb908('0xe')]);router['post']('/',auth[_0xb908('0x9')](),controller[_0xb908('0xf')]);router[_0xb908('0x10')](_0xb908('0xd'),auth[_0xb908('0x9')](),controller[_0xb908('0x11')]);router['delete']('/:id',auth[_0xb908('0x9')](),controller[_0xb908('0x12')]);module[_0xb908('0x13')]=router;
\ No newline at end of file
index 586096d..f6813bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x1b455f,_0x4cfd39){var _0xe59ed5=function(_0x1554e9){while(--_0x1554e9){_0x1b455f['push'](_0x1b455f['shift']());}};_0xe59ed5(++_0x4cfd39);}(_0x81bd,0x7c));var _0xd81b=function(_0x1d2520,_0x105606){_0x1d2520=_0x1d2520-0x0;var _0x22fd54=_0x81bd[_0x1d2520];return _0x22fd54;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'privilege':{'type':Sequelize[_0xd81b('0x2')]},'channel':{'type':Sequelize[_0xd81b('0x2')]},'channelstate':{'type':Sequelize[_0xd81b('0x3')]},'channelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'calleridnum':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'connectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'language':{'type':Sequelize[_0xd81b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd81b('0x2')]},'exten':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize[_0xd81b('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd81b('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridnum':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridname':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'destlanguage':{'type':Sequelize[_0xd81b('0x2')]},'destaccountcode':{'type':Sequelize[_0xd81b('0x2')]},'destcontext':{'type':Sequelize[_0xd81b('0x2')]},'destexten':{'type':Sequelize[_0xd81b('0x2')]},'destpriority':{'type':Sequelize[_0xd81b('0x3')]},'destuniqueid':{'type':Sequelize[_0xd81b('0x2')]},'destlinkedid':{'type':Sequelize[_0xd81b('0x2')]},'dialstring':{'type':Sequelize[_0xd81b('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xd81b('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xd81b('0x4')]},'lastevent':{'type':Sequelize[_0xd81b('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xd81b('0x3')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xd81b('0x3')]},'billableseconds':{'type':Sequelize[_0xd81b('0x3')]}};
\ No newline at end of file
+var _0xe5b3=['STRING','INTEGER','DATE','exports'];(function(_0x3a4e14,_0x22e3a2){var _0x5769b0=function(_0x4f2fc7){while(--_0x4f2fc7){_0x3a4e14['push'](_0x3a4e14['shift']());}};_0x5769b0(++_0x22e3a2);}(_0xe5b3,0x133));var _0x3e5b=function(_0x137f1a,_0x2887df){_0x137f1a=_0x137f1a-0x0;var _0x439923=_0xe5b3[_0x137f1a];return _0x439923;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'privilege':{'type':Sequelize[_0x3e5b('0x1')]},'channel':{'type':Sequelize[_0x3e5b('0x1')]},'channelstate':{'type':Sequelize[_0x3e5b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'calleridnum':{'type':Sequelize[_0x3e5b('0x1')]},'calleridname':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'language':{'type':Sequelize[_0x3e5b('0x1')]},'accountcode':{'type':Sequelize[_0x3e5b('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3e5b('0x1')]},'priority':{'type':Sequelize[_0x3e5b('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x3e5b('0x1')]},'destchannel':{'type':Sequelize[_0x3e5b('0x1')]},'destchannelstate':{'type':Sequelize[_0x3e5b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'destlanguage':{'type':Sequelize[_0x3e5b('0x1')]},'destaccountcode':{'type':Sequelize[_0x3e5b('0x1')]},'destcontext':{'type':Sequelize[_0x3e5b('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x3e5b('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x3e5b('0x1')]},'dialstring':{'type':Sequelize[_0x3e5b('0x1')]},'dialstatus':{'type':Sequelize[_0x3e5b('0x1')]},'starttime':{'type':Sequelize[_0x3e5b('0x3')]},'answertime':{'type':Sequelize[_0x3e5b('0x3')]},'endtime':{'type':Sequelize[_0x3e5b('0x3')]},'lastevent':{'type':Sequelize[_0x3e5b('0x1')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x3e5b('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 2b1dfbb..8aa3411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd1a=['status','end','offset','undefined','count','limit','Content-Range','reject','update','then','destroy','sendStatus','error','stack','send','VoiceDialReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','name','options','includeAll','include','findAll','rows','catch','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x5e6c6b,_0x394668){var _0x14a242=function(_0x5dc425){while(--_0x5dc425){_0x5e6c6b['push'](_0x5e6c6b['shift']());}};_0x14a242(++_0x394668);}(_0xbd1a,0x14c));var _0xabd1=function(_0x1c364b,_0x2262d5){_0x1c364b=_0x1c364b-0x0;var _0x21b48e=_0xbd1a[_0x1c364b];return _0x21b48e;};'use strict';var emlformat=require(_0xabd1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabd1('0x1'));var jsonpatch=require(_0xabd1('0x2'));var rp=require(_0xabd1('0x3'));var moment=require(_0xabd1('0x4'));var BPromise=require(_0xabd1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xabd1('0x6'));var sox=require(_0xabd1('0x7'));var csv=require(_0xabd1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xabd1('0x9'));var squel=require(_0xabd1('0xa'));var crypto=require(_0xabd1('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xabd1('0xc'));var Papa=require(_0xabd1('0xd'));var Redis=require('ioredis');var authService=require(_0xabd1('0xe'));var qs=require(_0xabd1('0xf'));var as=require(_0xabd1('0x10'));var hardwareService=require(_0xabd1('0x11'));var logger=require(_0xabd1('0x12'))(_0xabd1('0x13'));var utils=require(_0xabd1('0x14'));var config=require(_0xabd1('0x15'));var licenseUtil=require(_0xabd1('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x491089,_0x412c63){_0x412c63=_0x412c63||0xcc;return function(_0x4baafd){if(_0x4baafd){return _0x491089['sendStatus'](_0x412c63);}return _0x491089[_0xabd1('0x17')](_0x412c63)[_0xabd1('0x18')]();};}function respondWithResult(_0x8c6f7a,_0x3cd8e9){_0x3cd8e9=_0x3cd8e9||0xc8;return function(_0x591cf3){if(_0x591cf3){return _0x8c6f7a[_0xabd1('0x17')](_0x3cd8e9)['json'](_0x591cf3);}};}function respondWithFilteredResult(_0x5669cd,_0x5f2e0c){return function(_0x437333){if(_0x437333){var _0x14881e=typeof _0x5f2e0c[_0xabd1('0x19')]==='undefined'&&typeof _0x5f2e0c['limit']===_0xabd1('0x1a');var _0xa9834b=_0x437333[_0xabd1('0x1b')];var _0xb43de1=_0x14881e?0x0:_0x5f2e0c[_0xabd1('0x19')];var _0x5bb34d=_0x14881e?_0x437333[_0xabd1('0x1b')]:_0x5f2e0c[_0xabd1('0x19')]+_0x5f2e0c[_0xabd1('0x1c')];var _0x36a3e7;if(_0x5bb34d>=_0xa9834b){_0x5bb34d=_0xa9834b;_0x36a3e7=0xc8;}else{_0x36a3e7=0xce;}_0x5669cd[_0xabd1('0x17')](_0x36a3e7);return _0x5669cd['set'](_0xabd1('0x1d'),_0xb43de1+'-'+_0x5bb34d+'/'+_0xa9834b)['json'](_0x437333);}return null;};}function patchUpdates(_0x443c42){return function(_0x407fe3){try{jsonpatch['apply'](_0x407fe3,_0x443c42,!![]);}catch(_0x4b5381){return BPromise[_0xabd1('0x1e')](_0x4b5381);}return _0x407fe3['save']();};}function saveUpdates(_0x2c09e2,_0x549ac7){return function(_0x2b4db9){if(_0x2b4db9){return _0x2b4db9[_0xabd1('0x1f')](_0x2c09e2)[_0xabd1('0x20')](function(_0x4bf325){return _0x4bf325;});}return null;};}function removeEntity(_0x458261,_0x5c1348){return function(_0x3ca128){if(_0x3ca128){return _0x3ca128[_0xabd1('0x21')]()[_0xabd1('0x20')](function(){_0x458261[_0xabd1('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x241934,_0x281b8c){return function(_0x33f560){if(!_0x33f560){_0x241934[_0xabd1('0x22')](0x194);}return _0x33f560;};}function handleError(_0x1461e9,_0x2dca30){_0x2dca30=_0x2dca30||0x1f4;return function(_0x31b1cd){logger[_0xabd1('0x23')](_0x31b1cd[_0xabd1('0x24')]);if(_0x31b1cd['name']){delete _0x31b1cd['name'];}_0x1461e9['status'](_0x2dca30)[_0xabd1('0x25')](_0x31b1cd);};}exports['index']=function(_0x54cecc,_0x5a1795){var _0x4a2c1a={},_0x91aff3={},_0x546062={'count':0x0,'rows':[]};var _0x53a9f0=_['map'](db[_0xabd1('0x26')][_0xabd1('0x27')],function(_0x5d5720){return{'name':_0x5d5720[_0xabd1('0x28')],'type':_0x5d5720[_0xabd1('0x29')][_0xabd1('0x2a')]};});_0x91aff3[_0xabd1('0x2b')]=_[_0xabd1('0x2c')](_0x53a9f0,'name');_0x91aff3[_0xabd1('0x2d')]=_[_0xabd1('0x2e')](_0x54cecc[_0xabd1('0x2d')]);_0x91aff3[_0xabd1('0x2f')]=_[_0xabd1('0x30')](_0x91aff3[_0xabd1('0x2b')],_0x91aff3[_0xabd1('0x2d')]);_0x4a2c1a[_0xabd1('0x31')]=_[_0xabd1('0x30')](_0x91aff3[_0xabd1('0x2b')],qs[_0xabd1('0x32')](_0x54cecc[_0xabd1('0x2d')][_0xabd1('0x32')]));_0x4a2c1a[_0xabd1('0x31')]=_0x4a2c1a[_0xabd1('0x31')][_0xabd1('0x33')]?_0x4a2c1a['attributes']:_0x91aff3['model'];if(!_0x54cecc[_0xabd1('0x2d')]['hasOwnProperty'](_0xabd1('0x34'))){_0x4a2c1a['limit']=qs[_0xabd1('0x1c')](_0x54cecc[_0xabd1('0x2d')][_0xabd1('0x1c')]);_0x4a2c1a['offset']=qs[_0xabd1('0x19')](_0x54cecc[_0xabd1('0x2d')][_0xabd1('0x19')]);}_0x4a2c1a[_0xabd1('0x35')]=qs[_0xabd1('0x36')](_0x54cecc['query'][_0xabd1('0x36')]);_0x4a2c1a[_0xabd1('0x37')]=qs['filters'](_[_0xabd1('0x38')](_0x54cecc[_0xabd1('0x2d')],_0x91aff3[_0xabd1('0x2f')]),_0x53a9f0);if(_0x54cecc['query'][_0xabd1('0x39')]){_0x4a2c1a[_0xabd1('0x37')]=_[_0xabd1('0x3a')](_0x4a2c1a['where'],{'$or':_[_0xabd1('0x2c')](_0x53a9f0,function(_0x19a7ad){if(_0x19a7ad[_0xabd1('0x29')]!=='VIRTUAL'){var _0x30dbc5={};_0x30dbc5[_0x19a7ad[_0xabd1('0x3b')]]={'$like':'%'+_0x54cecc[_0xabd1('0x2d')][_0xabd1('0x39')]+'%'};return _0x30dbc5;}})});}_0x4a2c1a=_[_0xabd1('0x3a')]({},_0x4a2c1a,_0x54cecc[_0xabd1('0x3c')]);var _0x12ad7f={'where':_0x4a2c1a[_0xabd1('0x37')]};return db[_0xabd1('0x26')]['count'](_0x12ad7f)[_0xabd1('0x20')](function(_0x382794){_0x546062[_0xabd1('0x1b')]=_0x382794;if(_0x54cecc[_0xabd1('0x2d')][_0xabd1('0x3d')]){_0x4a2c1a[_0xabd1('0x3e')]=[{'all':!![]}];}return db[_0xabd1('0x26')][_0xabd1('0x3f')](_0x4a2c1a);})[_0xabd1('0x20')](function(_0x472c1b){_0x546062[_0xabd1('0x40')]=_0x472c1b;return _0x546062;})[_0xabd1('0x20')](respondWithFilteredResult(_0x5a1795,_0x4a2c1a))[_0xabd1('0x41')](handleError(_0x5a1795,null));};exports['show']=function(_0x171b80,_0x4d658d){var _0x2cfdcb={'raw':!![],'where':{'id':_0x171b80[_0xabd1('0x42')]['id']}},_0x714dd7={};_0x714dd7[_0xabd1('0x2b')]=_['keys'](db[_0xabd1('0x26')]['rawAttributes']);_0x714dd7[_0xabd1('0x2d')]=_[_0xabd1('0x2e')](_0x171b80[_0xabd1('0x2d')]);_0x714dd7['filters']=_[_0xabd1('0x30')](_0x714dd7[_0xabd1('0x2b')],_0x714dd7['query']);_0x2cfdcb[_0xabd1('0x31')]=_[_0xabd1('0x30')](_0x714dd7[_0xabd1('0x2b')],qs[_0xabd1('0x32')](_0x171b80[_0xabd1('0x2d')]['fields']));_0x2cfdcb[_0xabd1('0x31')]=_0x2cfdcb['attributes']['length']?_0x2cfdcb[_0xabd1('0x31')]:_0x714dd7[_0xabd1('0x2b')];if(_0x171b80[_0xabd1('0x2d')][_0xabd1('0x3d')]){_0x2cfdcb[_0xabd1('0x3e')]=[{'all':!![]}];}_0x2cfdcb=_[_0xabd1('0x3a')]({},_0x2cfdcb,_0x171b80[_0xabd1('0x3c')]);return db['VoiceDialReport']['find'](_0x2cfdcb)['then'](handleEntityNotFound(_0x4d658d,null))[_0xabd1('0x20')](respondWithResult(_0x4d658d,null))['catch'](handleError(_0x4d658d,null));};exports['create']=function(_0x3950b2,_0x3b53a8){return db['VoiceDialReport'][_0xabd1('0x43')](_0x3950b2[_0xabd1('0x44')],{})[_0xabd1('0x20')](respondWithResult(_0x3b53a8,0xc9))[_0xabd1('0x41')](handleError(_0x3b53a8,null));};exports[_0xabd1('0x1f')]=function(_0x287417,_0x3f4922){if(_0x287417['body']['id']){delete _0x287417[_0xabd1('0x44')]['id'];}return db[_0xabd1('0x26')][_0xabd1('0x45')]({'where':{'id':_0x287417[_0xabd1('0x42')]['id']}})[_0xabd1('0x20')](handleEntityNotFound(_0x3f4922,null))[_0xabd1('0x20')](saveUpdates(_0x287417[_0xabd1('0x44')],null))[_0xabd1('0x20')](respondWithResult(_0x3f4922,null))[_0xabd1('0x41')](handleError(_0x3f4922,null));};exports['destroy']=function(_0x2bf5fc,_0x2b2ff9){return db[_0xabd1('0x26')][_0xabd1('0x45')]({'where':{'id':_0x2bf5fc[_0xabd1('0x42')]['id']}})[_0xabd1('0x20')](handleEntityNotFound(_0x2b2ff9,null))['then'](removeEntity(_0x2b2ff9,null))['catch'](handleError(_0x2b2ff9,null));};exports[_0xabd1('0x46')]=function(_0x1c3a2d,_0x33e471){return db[_0xabd1('0x26')][_0xabd1('0x46')]()['then'](respondWithResult(_0x33e471,null))[_0xabd1('0x41')](handleError(_0x33e471,null));};
\ No newline at end of file
+var _0x89cc=['ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','send','map','fieldName','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','rows','catch','show','keys','VoiceDialReport','includeAll','include','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x89cc,0xda));var _0xc89c=function(_0x881002,_0x238316){_0x881002=_0x881002-0x0;var _0x574dcf=_0x89cc[_0x881002];return _0x574dcf;};'use strict';var emlformat=require(_0xc89c('0x0'));var rimraf=require(_0xc89c('0x1'));var zipdir=require(_0xc89c('0x2'));var jsonpatch=require(_0xc89c('0x3'));var rp=require(_0xc89c('0x4'));var moment=require(_0xc89c('0x5'));var BPromise=require(_0xc89c('0x6'));var Mustache=require(_0xc89c('0x7'));var util=require(_0xc89c('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xc89c('0x9'));var ejs=require(_0xc89c('0xa'));var fs=require('fs');var fs_extra=require(_0xc89c('0xb'));var _=require('lodash');var squel=require(_0xc89c('0xc'));var crypto=require(_0xc89c('0xd'));var jsforce=require(_0xc89c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc89c('0x9'));var querystring=require(_0xc89c('0xf'));var Papa=require('papaparse');var Redis=require(_0xc89c('0x10'));var authService=require(_0xc89c('0x11'));var qs=require(_0xc89c('0x12'));var as=require(_0xc89c('0x13'));var hardwareService=require(_0xc89c('0x14'));var logger=require(_0xc89c('0x15'))(_0xc89c('0x16'));var utils=require(_0xc89c('0x17'));var config=require(_0xc89c('0x18'));var licenseUtil=require(_0xc89c('0x19'));var db=require(_0xc89c('0x1a'))['db'];function respondWithStatusCode(_0x1faaf9,_0x4a21aa){_0x4a21aa=_0x4a21aa||0xcc;return function(_0x4fb62a){if(_0x4fb62a){return _0x1faaf9[_0xc89c('0x1b')](_0x4a21aa);}return _0x1faaf9[_0xc89c('0x1c')](_0x4a21aa)[_0xc89c('0x1d')]();};}function respondWithResult(_0x33b74c,_0x5d4ce7){_0x5d4ce7=_0x5d4ce7||0xc8;return function(_0x353311){if(_0x353311){return _0x33b74c[_0xc89c('0x1c')](_0x5d4ce7)[_0xc89c('0x1e')](_0x353311);}};}function respondWithFilteredResult(_0x2cc0cd,_0x29c114){return function(_0x55ed9d){if(_0x55ed9d){var _0x524398=typeof _0x29c114[_0xc89c('0x1f')]===_0xc89c('0x20')&&typeof _0x29c114[_0xc89c('0x21')]===_0xc89c('0x20');var _0x42b012=_0x55ed9d[_0xc89c('0x22')];var _0x318639=_0x524398?0x0:_0x29c114[_0xc89c('0x1f')];var _0x23d5f7=_0x524398?_0x55ed9d[_0xc89c('0x22')]:_0x29c114[_0xc89c('0x1f')]+_0x29c114['limit'];var _0x35b840;if(_0x23d5f7>=_0x42b012){_0x23d5f7=_0x42b012;_0x35b840=0xc8;}else{_0x35b840=0xce;}_0x2cc0cd[_0xc89c('0x1c')](_0x35b840);return _0x2cc0cd['set'](_0xc89c('0x23'),_0x318639+'-'+_0x23d5f7+'/'+_0x42b012)[_0xc89c('0x1e')](_0x55ed9d);}return null;};}function patchUpdates(_0x18629d){return function(_0x596b59){try{jsonpatch[_0xc89c('0x24')](_0x596b59,_0x18629d,!![]);}catch(_0x2c26f7){return BPromise[_0xc89c('0x25')](_0x2c26f7);}return _0x596b59[_0xc89c('0x26')]();};}function saveUpdates(_0x16a76a,_0x53047a){return function(_0x105b81){if(_0x105b81){return _0x105b81[_0xc89c('0x27')](_0x16a76a)[_0xc89c('0x28')](function(_0x131a21){return _0x131a21;});}return null;};}function removeEntity(_0x5d66e6,_0x43a1ae){return function(_0x44bb7a){if(_0x44bb7a){return _0x44bb7a[_0xc89c('0x29')]()[_0xc89c('0x28')](function(){_0x5d66e6[_0xc89c('0x1c')](0xcc)[_0xc89c('0x1d')]();});}};}function handleEntityNotFound(_0x7feaec,_0x4754a7){return function(_0x2d3ab1){if(!_0x2d3ab1){_0x7feaec[_0xc89c('0x1b')](0x194);}return _0x2d3ab1;};}function handleError(_0x343b82,_0x19fbca){_0x19fbca=_0x19fbca||0x1f4;return function(_0x342dcf){logger['error'](_0x342dcf['stack']);if(_0x342dcf['name']){delete _0x342dcf['name'];}_0x343b82[_0xc89c('0x1c')](_0x19fbca)[_0xc89c('0x2a')](_0x342dcf);};}exports['index']=function(_0x3cf982,_0x2344e5){var _0x5c87ec={},_0x5304df={},_0x21046a={'count':0x0,'rows':[]};var _0x516bc4=_[_0xc89c('0x2b')](db['VoiceDialReport']['rawAttributes'],function(_0x32164c){return{'name':_0x32164c[_0xc89c('0x2c')],'type':_0x32164c[_0xc89c('0x2d')][_0xc89c('0x2e')]};});_0x5304df[_0xc89c('0x2f')]=_[_0xc89c('0x2b')](_0x516bc4,_0xc89c('0x30'));_0x5304df[_0xc89c('0x31')]=_['keys'](_0x3cf982[_0xc89c('0x31')]);_0x5304df[_0xc89c('0x32')]=_[_0xc89c('0x33')](_0x5304df[_0xc89c('0x2f')],_0x5304df[_0xc89c('0x31')]);_0x5c87ec['attributes']=_[_0xc89c('0x33')](_0x5304df[_0xc89c('0x2f')],qs[_0xc89c('0x34')](_0x3cf982['query'][_0xc89c('0x34')]));_0x5c87ec[_0xc89c('0x35')]=_0x5c87ec[_0xc89c('0x35')][_0xc89c('0x36')]?_0x5c87ec[_0xc89c('0x35')]:_0x5304df['model'];if(!_0x3cf982[_0xc89c('0x31')][_0xc89c('0x37')]('nolimit')){_0x5c87ec[_0xc89c('0x21')]=qs[_0xc89c('0x21')](_0x3cf982['query'][_0xc89c('0x21')]);_0x5c87ec['offset']=qs[_0xc89c('0x1f')](_0x3cf982[_0xc89c('0x31')][_0xc89c('0x1f')]);}_0x5c87ec[_0xc89c('0x38')]=qs[_0xc89c('0x39')](_0x3cf982[_0xc89c('0x31')][_0xc89c('0x39')]);_0x5c87ec[_0xc89c('0x3a')]=qs[_0xc89c('0x32')](_[_0xc89c('0x3b')](_0x3cf982[_0xc89c('0x31')],_0x5304df[_0xc89c('0x32')]),_0x516bc4);if(_0x3cf982[_0xc89c('0x31')][_0xc89c('0x3c')]){_0x5c87ec['where']=_['merge'](_0x5c87ec[_0xc89c('0x3a')],{'$or':_['map'](_0x516bc4,function(_0x20e599){if(_0x20e599[_0xc89c('0x2d')]!==_0xc89c('0x3d')){var _0x1f1c82={};_0x1f1c82[_0x20e599[_0xc89c('0x30')]]={'$like':'%'+_0x3cf982[_0xc89c('0x31')]['filter']+'%'};return _0x1f1c82;}})});}_0x5c87ec=_[_0xc89c('0x3e')]({},_0x5c87ec,_0x3cf982[_0xc89c('0x3f')]);var _0x5ed30a={'where':_0x5c87ec['where']};return db['VoiceDialReport'][_0xc89c('0x22')](_0x5ed30a)[_0xc89c('0x28')](function(_0x1b4e09){_0x21046a[_0xc89c('0x22')]=_0x1b4e09;if(_0x3cf982[_0xc89c('0x31')]['includeAll']){_0x5c87ec['include']=[{'all':!![]}];}return db['VoiceDialReport']['findAll'](_0x5c87ec);})[_0xc89c('0x28')](function(_0x56ce64){_0x21046a[_0xc89c('0x40')]=_0x56ce64;return _0x21046a;})[_0xc89c('0x28')](respondWithFilteredResult(_0x2344e5,_0x5c87ec))[_0xc89c('0x41')](handleError(_0x2344e5,null));};exports[_0xc89c('0x42')]=function(_0x49317a,_0x705a6a){var _0x3d14d1={'raw':!![],'where':{'id':_0x49317a['params']['id']}},_0x14d2b0={};_0x14d2b0['model']=_[_0xc89c('0x43')](db[_0xc89c('0x44')]['rawAttributes']);_0x14d2b0[_0xc89c('0x31')]=_['keys'](_0x49317a[_0xc89c('0x31')]);_0x14d2b0[_0xc89c('0x32')]=_[_0xc89c('0x33')](_0x14d2b0['model'],_0x14d2b0['query']);_0x3d14d1['attributes']=_[_0xc89c('0x33')](_0x14d2b0[_0xc89c('0x2f')],qs[_0xc89c('0x34')](_0x49317a['query'][_0xc89c('0x34')]));_0x3d14d1[_0xc89c('0x35')]=_0x3d14d1['attributes'][_0xc89c('0x36')]?_0x3d14d1[_0xc89c('0x35')]:_0x14d2b0[_0xc89c('0x2f')];if(_0x49317a[_0xc89c('0x31')][_0xc89c('0x45')]){_0x3d14d1[_0xc89c('0x46')]=[{'all':!![]}];}_0x3d14d1=_[_0xc89c('0x3e')]({},_0x3d14d1,_0x49317a[_0xc89c('0x3f')]);return db['VoiceDialReport'][_0xc89c('0x47')](_0x3d14d1)['then'](handleEntityNotFound(_0x705a6a,null))[_0xc89c('0x28')](respondWithResult(_0x705a6a,null))[_0xc89c('0x41')](handleError(_0x705a6a,null));};exports[_0xc89c('0x48')]=function(_0x4fb415,_0x37f8e8){return db[_0xc89c('0x44')][_0xc89c('0x48')](_0x4fb415[_0xc89c('0x49')],{})['then'](respondWithResult(_0x37f8e8,0xc9))[_0xc89c('0x41')](handleError(_0x37f8e8,null));};exports[_0xc89c('0x27')]=function(_0x1a3149,_0x58b79b){if(_0x1a3149[_0xc89c('0x49')]['id']){delete _0x1a3149['body']['id'];}return db[_0xc89c('0x44')][_0xc89c('0x47')]({'where':{'id':_0x1a3149[_0xc89c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x58b79b,null))['then'](saveUpdates(_0x1a3149['body'],null))[_0xc89c('0x28')](respondWithResult(_0x58b79b,null))['catch'](handleError(_0x58b79b,null));};exports[_0xc89c('0x29')]=function(_0x1ea0ad,_0x113556){return db[_0xc89c('0x44')][_0xc89c('0x47')]({'where':{'id':_0x1ea0ad[_0xc89c('0x4a')]['id']}})[_0xc89c('0x28')](handleEntityNotFound(_0x113556,null))['then'](removeEntity(_0x113556,null))['catch'](handleError(_0x113556,null));};exports[_0xc89c('0x4b')]=function(_0x12e90c,_0x388dee){return db['VoiceDialReport'][_0xc89c('0x4b')]()[_0xc89c('0x28')](respondWithResult(_0x388dee,null))['catch'](handleError(_0x388dee,null));};
\ No newline at end of file
index 2356347..b4bee46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74cb=['../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial','uniqueid','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x31ce59,_0x17ef0d){var _0xa0dfc2=function(_0x38b89){while(--_0x38b89){_0x31ce59['push'](_0x31ce59['shift']());}};_0xa0dfc2(++_0x17ef0d);}(_0x74cb,0xf6));var _0xb74c=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x74cb[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0xb74c('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb74c('0x1'));var BPromise=require(_0xb74c('0x2'));var rp=require(_0xb74c('0x3'));var fs=require('fs');var path=require(_0xb74c('0x4'));var rimraf=require(_0xb74c('0x5'));var config=require(_0xb74c('0x6'));var attributes=require(_0xb74c('0x7'));module['exports']=function(_0xf98ecb,_0x4c4535){return _0xf98ecb[_0xb74c('0x8')](_0xb74c('0x9'),attributes,{'tableName':_0xb74c('0xa'),'paranoid':![],'indexes':[{'fields':[_0xb74c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d3f=['request-promise','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4e1991,_0xeb727c){var _0x318050=function(_0x1af113){while(--_0x1af113){_0x4e1991['push'](_0x4e1991['shift']());}};_0x318050(++_0xeb727c);}(_0x5d3f,0x18d));var _0xf5d3=function(_0x2f3610,_0x248f57){_0x2f3610=_0x2f3610-0x0;var _0x502dbe=_0x5d3f[_0x2f3610];return _0x502dbe;};'use strict';var _=require(_0xf5d3('0x0'));var util=require(_0xf5d3('0x1'));var logger=require(_0xf5d3('0x2'))(_0xf5d3('0x3'));var moment=require(_0xf5d3('0x4'));var BPromise=require(_0xf5d3('0x5'));var rp=require(_0xf5d3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf5d3('0x7'));var attributes=require(_0xf5d3('0x8'));module['exports']=function(_0x2e0c26,_0x395f9d){return _0x2e0c26[_0xf5d3('0x9')](_0xf5d3('0xa'),attributes,{'tableName':_0xf5d3('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf5d3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6101b05..7cdc853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf455=['body','options','then','UpdateVoiceDialReport','update','raw','where','attributes','limit','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','CreateVoiceDialReport','VoiceDialReport','create'];(function(_0x41e45d,_0x1ee3b0){var _0x4d3aac=function(_0x4b7503){while(--_0x4b7503){_0x41e45d['push'](_0x41e45d['shift']());}};_0x4d3aac(++_0x1ee3b0);}(_0xf455,0x16a));var _0x5f45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf455[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f45('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5f45('0x1'));var fs=require('fs');var Redis=require(_0x5f45('0x2'));var db=require(_0x5f45('0x3'))['db'];var utils=require(_0x5f45('0x4'));var logger=require('../../config/logger')(_0x5f45('0x5'));var config=require('../../config/environment');var jayson=require(_0x5f45('0x6'));var client=jayson[_0x5f45('0x7')][_0x5f45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40226a,_0x1b1e74,_0x398d71){return new BPromise(function(_0x9bb109,_0xf2d495){return client[_0x5f45('0x9')](_0x40226a,_0x398d71)['then'](function(_0x1f6e10){logger[_0x5f45('0xa')](_0x5f45('0xb'),_0x1b1e74,'request\x20sent');logger[_0x5f45('0xc')](_0x5f45('0xd'),_0x1b1e74,'request\x20sent',JSON[_0x5f45('0xe')](_0x1f6e10));if(_0x1f6e10[_0x5f45('0xf')]){if(_0x1f6e10[_0x5f45('0xf')]['code']===0x1f4){logger[_0x5f45('0xf')](_0x5f45('0xb'),_0x1b1e74,_0x1f6e10[_0x5f45('0xf')]['message']);return _0xf2d495(_0x1f6e10[_0x5f45('0xf')][_0x5f45('0x10')]);}logger[_0x5f45('0xf')](_0x5f45('0xb'),_0x1b1e74,_0x1f6e10[_0x5f45('0xf')]['message']);return _0x9bb109(_0x1f6e10[_0x5f45('0xf')][_0x5f45('0x10')]);}else{logger[_0x5f45('0xa')]('VoiceDialReport,\x20%s,\x20%s',_0x1b1e74,_0x5f45('0x11'));_0x9bb109(_0x1f6e10[_0x5f45('0x12')]['message']);}})['catch'](function(_0x10157c){logger['error'](_0x5f45('0xb'),_0x1b1e74,_0x10157c);_0xf2d495(_0x10157c);});});}exports[_0x5f45('0x13')]=function(_0x5efb2b){var _0x1b1394=this;return new Promise(function(_0x504631,_0x542e31){return db[_0x5f45('0x14')][_0x5f45('0x15')](_0x5efb2b[_0x5f45('0x16')],{'raw':_0x5efb2b[_0x5f45('0x17')]?_0x5efb2b[_0x5f45('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x5f45('0x18')](function(_0x4917f6){logger[_0x5f45('0xa')](_0x5f45('0x13'),_0x5efb2b);logger['debug'](_0x5f45('0x13'),_0x5efb2b,JSON[_0x5f45('0xe')](_0x4917f6));_0x504631(_0x4917f6);})['catch'](function(_0x5021be){logger[_0x5f45('0xf')](_0x5f45('0x13'),_0x5021be[_0x5f45('0x10')],_0x5efb2b);_0x542e31(_0x1b1394[_0x5f45('0xf')](0x1f4,_0x5021be[_0x5f45('0x10')]));});});};exports[_0x5f45('0x19')]=function(_0xd4f21e){var _0x2e43e2=this;return new Promise(function(_0x296213,_0x284c60){return db[_0x5f45('0x14')][_0x5f45('0x1a')](_0xd4f21e[_0x5f45('0x16')],{'raw':_0xd4f21e['options']?_0xd4f21e[_0x5f45('0x17')][_0x5f45('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd4f21e[_0x5f45('0x17')]?_0xd4f21e[_0x5f45('0x17')][_0x5f45('0x1c')]||null:null,'attributes':_0xd4f21e[_0x5f45('0x17')]?_0xd4f21e[_0x5f45('0x17')][_0x5f45('0x1d')]||null:null,'limit':_0xd4f21e['options']?_0xd4f21e[_0x5f45('0x17')][_0x5f45('0x1e')]||null:null})['then'](function(_0x2b5bad){logger[_0x5f45('0xa')](_0x5f45('0x19'),_0xd4f21e);logger[_0x5f45('0xc')](_0x5f45('0x19'),_0xd4f21e,JSON[_0x5f45('0xe')](_0x2b5bad));_0x296213(_0x2b5bad);})[_0x5f45('0x1f')](function(_0x44ef18){logger[_0x5f45('0xf')](_0x5f45('0x19'),_0x44ef18[_0x5f45('0x10')],_0xd4f21e);_0x284c60(_0x2e43e2['error'](0x1f4,_0x44ef18[_0x5f45('0x10')]));});});};
\ No newline at end of file
+var _0xf162=['../../config/environment','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','body','options','raw','then','update','where','attributes','UpdateVoiceDialReport','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x120b1e,_0x4d2bec){var _0x186859=function(_0xed22d){while(--_0xed22d){_0x120b1e['push'](_0x120b1e['shift']());}};_0x186859(++_0x4d2bec);}(_0xf162,0x1a6));var _0x2f16=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xf162[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require(_0x2f16('0x0'));var moment=require(_0x2f16('0x1'));var BPromise=require('bluebird');var rs=require(_0x2f16('0x2'));var fs=require('fs');var Redis=require(_0x2f16('0x3'));var db=require(_0x2f16('0x4'))['db'];var utils=require(_0x2f16('0x5'));var logger=require('../../config/logger')(_0x2f16('0x6'));var config=require(_0x2f16('0x7'));var jayson=require(_0x2f16('0x8'));var client=jayson[_0x2f16('0x9')][_0x2f16('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3af307,_0x1e8372,_0x29050f){return new BPromise(function(_0x5a40c2,_0x4f2995){return client[_0x2f16('0xb')](_0x3af307,_0x29050f)['then'](function(_0x140fac){logger[_0x2f16('0xc')](_0x2f16('0xd'),_0x1e8372,'request\x20sent');logger[_0x2f16('0xe')](_0x2f16('0xf'),_0x1e8372,_0x2f16('0x10'),JSON[_0x2f16('0x11')](_0x140fac));if(_0x140fac[_0x2f16('0x12')]){if(_0x140fac[_0x2f16('0x12')][_0x2f16('0x13')]===0x1f4){logger[_0x2f16('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x1e8372,_0x140fac['error']['message']);return _0x4f2995(_0x140fac[_0x2f16('0x12')]['message']);}logger['error'](_0x2f16('0xd'),_0x1e8372,_0x140fac[_0x2f16('0x12')][_0x2f16('0x14')]);return _0x5a40c2(_0x140fac[_0x2f16('0x12')][_0x2f16('0x14')]);}else{logger[_0x2f16('0xc')](_0x2f16('0xd'),_0x1e8372,_0x2f16('0x10'));_0x5a40c2(_0x140fac[_0x2f16('0x15')]['message']);}})[_0x2f16('0x16')](function(_0x4fc742){logger[_0x2f16('0x12')](_0x2f16('0xd'),_0x1e8372,_0x4fc742);_0x4f2995(_0x4fc742);});});}exports[_0x2f16('0x17')]=function(_0x18bb84){var _0xe37adb=this;return new Promise(function(_0x15b763,_0x43e2e6){return db[_0x2f16('0x18')]['create'](_0x18bb84[_0x2f16('0x19')],{'raw':_0x18bb84[_0x2f16('0x1a')]?_0x18bb84['options'][_0x2f16('0x1b')]===undefined?!![]:![]:!![]})[_0x2f16('0x1c')](function(_0x60e55){logger[_0x2f16('0xc')]('CreateVoiceDialReport',_0x18bb84);logger[_0x2f16('0xe')]('CreateVoiceDialReport',_0x18bb84,JSON[_0x2f16('0x11')](_0x60e55));_0x15b763(_0x60e55);})[_0x2f16('0x16')](function(_0x33e0e8){logger[_0x2f16('0x12')](_0x2f16('0x17'),_0x33e0e8[_0x2f16('0x14')],_0x18bb84);_0x43e2e6(_0xe37adb[_0x2f16('0x12')](0x1f4,_0x33e0e8[_0x2f16('0x14')]));});});};exports['UpdateVoiceDialReport']=function(_0x4e7be0){var _0x1259f5=this;return new Promise(function(_0x19f512,_0x32d7c7){return db[_0x2f16('0x18')][_0x2f16('0x1d')](_0x4e7be0['body'],{'raw':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1e')]||null:null,'attributes':_0x4e7be0['options']?_0x4e7be0[_0x2f16('0x1a')][_0x2f16('0x1f')]||null:null,'limit':_0x4e7be0[_0x2f16('0x1a')]?_0x4e7be0[_0x2f16('0x1a')]['limit']||null:null})[_0x2f16('0x1c')](function(_0x16c4ff){logger[_0x2f16('0xc')](_0x2f16('0x20'),_0x4e7be0);logger[_0x2f16('0xe')](_0x2f16('0x20'),_0x4e7be0,JSON[_0x2f16('0x11')](_0x16c4ff));_0x19f512(_0x16c4ff);})[_0x2f16('0x16')](function(_0x55268a){logger['error'](_0x2f16('0x20'),_0x55268a[_0x2f16('0x14')],_0x4e7be0);_0x32d7c7(_0x1259f5[_0x2f16('0x12')](0x1f4,_0x55268a[_0x2f16('0x14')]));});});};
\ No newline at end of file
index abb8475..96eb5d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e6b=['delete','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','/:id/applications','addApplications','put'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x4e6b,0x1e7));var _0xb4e6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x4e6b[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require(_0xb4e6('0x0'));var path=require(_0xb4e6('0x1'));var timeout=require('connect-timeout');var express=require(_0xb4e6('0x2'));var router=express['Router']();var fs_extra=require(_0xb4e6('0x3'));var auth=require(_0xb4e6('0x4'));var interaction=require(_0xb4e6('0x5'));var config=require(_0xb4e6('0x6'));var controller=require(_0xb4e6('0x7'));router[_0xb4e6('0x8')]('/',auth[_0xb4e6('0x9')](),controller[_0xb4e6('0xa')]);router[_0xb4e6('0x8')](_0xb4e6('0xb'),auth['isAuthenticated'](),controller[_0xb4e6('0xc')]);router[_0xb4e6('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb4e6('0xd')](_0xb4e6('0xe'),auth[_0xb4e6('0x9')](),controller[_0xb4e6('0xf')]);router[_0xb4e6('0x10')](_0xb4e6('0xb'),auth[_0xb4e6('0x9')](),controller['update']);router[_0xb4e6('0x11')](_0xb4e6('0xb'),auth[_0xb4e6('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x503f=['show','post','create','/:id/applications','put','delete','destroy','exports','multer','util','path','fs-extra','./voiceExtension.controller','get','index','/:id','isAuthenticated'];(function(_0x11062a,_0x286e8d){var _0x511a54=function(_0x36207a){while(--_0x36207a){_0x11062a['push'](_0x11062a['shift']());}};_0x511a54(++_0x286e8d);}(_0x503f,0x90));var _0xf503=function(_0x389f9e,_0x5d41ac){_0x389f9e=_0x389f9e-0x0;var _0x5cce80=_0x503f[_0x389f9e];return _0x5cce80;};'use strict';var multer=require(_0xf503('0x0'));var util=require(_0xf503('0x1'));var path=require(_0xf503('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xf503('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf503('0x4'));router[_0xf503('0x5')]('/',auth['isAuthenticated'](),controller[_0xf503('0x6')]);router[_0xf503('0x5')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller[_0xf503('0x9')]);router[_0xf503('0xa')]('/',auth[_0xf503('0x8')](),controller[_0xf503('0xb')]);router['post'](_0xf503('0xc'),auth[_0xf503('0x8')](),controller['addApplications']);router[_0xf503('0xd')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller['update']);router[_0xf503('0xe')](_0xf503('0x7'),auth[_0xf503('0x8')](),controller[_0xf503('0xf')]);module[_0xf503('0x10')]=router;
\ No newline at end of file
index 05cb617..36f8e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ebf=['outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','STRING','compositeIndex','NoOp','ENUM','inbound'];(function(_0x24f862,_0x4b645a){var _0x198aa4=function(_0x131195){while(--_0x131195){_0x24f862['push'](_0x24f862['shift']());}};_0x198aa4(++_0x4b645a);}(_0x9ebf,0x13d));var _0xf9eb=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9ebf[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require('sequelize');module['exports']={'context':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'unique':_0xf9eb('0x1')},'priority':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'defaultValue':'1','unique':_0xf9eb('0x1')},'tag':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'defaultValue':_0xf9eb('0x2')},'appdata':{'type':Sequelize[_0xf9eb('0x0')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xf9eb('0x3')](_0xf9eb('0x4'),_0xf9eb('0x5'),'internal',_0xf9eb('0x6'),_0xf9eb('0x7'),_0xf9eb('0x8'),_0xf9eb('0x9')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':![],'defaultValue':_0xf9eb('0xa')},'IntervalId':{'type':Sequelize[_0xf9eb('0xb')]},'isApp':{'type':Sequelize[_0xf9eb('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xf9eb('0x0')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xf9eb('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0xf9eb('0x0')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xf9eb('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xf9eb('0xd')],'get':function(_0x1992a4){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0xf9eb('0x0')],'allowNull':!![]}};
\ No newline at end of file
+var _0x7e81=['ENUM','inbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','BOOLEAN','INTEGER','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7e81,0xd9));var _0x17e8=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x7e81[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x17e8('0x0'));module[_0x17e8('0x1')]={'context':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'unique':_0x17e8('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x17e8('0x3')},'priority':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x17e8('0x3')},'tag':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x17e8('0x4')](_0x17e8('0x5'),'outbound',_0x17e8('0x6'),_0x17e8('0x7'),_0x17e8('0x8'),_0x17e8('0x9'),_0x17e8('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x17e8('0x2')],'allowNull':![],'defaultValue':_0x17e8('0xb')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x17e8('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x17e8('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x17e8('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x17e8('0xd')]},'recordingFormat':{'type':Sequelize[_0x17e8('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x17e8('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x17e8('0xe')],'get':function(_0x361655){return this[_0x17e8('0xf')](_0x17e8('0x10'));}},'alias':{'type':Sequelize[_0x17e8('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 8426810..60695a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb7=['recordingFormat','mandatoryDisposition','alias','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','stack','sendStatus','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','localhost','register','status','end','json','undefined','count','offset','Content-Range','destroy','then','get','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','internal','filter','map','value','includes','find','type','name','UserProfileResource','error','send','index','VoiceExtension','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','options','create','body','startsWith','exten','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','inbound','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xdcb7,0x127));var _0x7dcb=function(_0x2cf4f5,_0x1d54af){_0x2cf4f5=_0x2cf4f5-0x0;var _0x2f0198=_0xdcb7[_0x2cf4f5];return _0x2f0198;};'use strict';var _=require(_0x7dcb('0x0'));var Redis=require(_0x7dcb('0x1'));var qs=require(_0x7dcb('0x2'));var logger=require('../../config/logger')('api');var config=require(_0x7dcb('0x3'));var db=require(_0x7dcb('0x4'))['db'];config[_0x7dcb('0x5')]=_[_0x7dcb('0x6')](config[_0x7dcb('0x5')],{'host':_0x7dcb('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7dcb('0x5')]));require('./voiceExtension.socket')[_0x7dcb('0x8')](socket);function respondWithStatusCode(_0x508292,_0x7625ed){_0x7625ed=_0x7625ed||0xcc;return function(_0x381d37){if(_0x381d37){return _0x508292['sendStatus'](_0x7625ed);}return _0x508292[_0x7dcb('0x9')](_0x7625ed)[_0x7dcb('0xa')]();};}function respondWithResult(_0x2d3e90,_0x3da9dc){_0x3da9dc=_0x3da9dc||0xc8;return function(_0x50837c){if(_0x50837c){return _0x2d3e90['status'](_0x3da9dc)[_0x7dcb('0xb')](_0x50837c);}};}function respondWithFilteredResult(_0x25a590,_0x5adf33){return function(_0x3e981c){if(_0x3e981c){var _0x1ca81a=typeof _0x5adf33['offset']===_0x7dcb('0xc')&&typeof _0x5adf33['limit']===_0x7dcb('0xc');var _0x74517b=_0x3e981c[_0x7dcb('0xd')];var _0x9fa818=_0x1ca81a?0x0:_0x5adf33[_0x7dcb('0xe')];var _0x241459=_0x1ca81a?_0x3e981c['count']:_0x5adf33['offset']+_0x5adf33['limit'];var _0x5ba3b7;if(_0x241459>=_0x74517b){_0x241459=_0x74517b;_0x5ba3b7=0xc8;}else{_0x5ba3b7=0xce;}_0x25a590[_0x7dcb('0x9')](_0x5ba3b7);return _0x25a590['set'](_0x7dcb('0xf'),_0x9fa818+'-'+_0x241459+'/'+_0x74517b)['json'](_0x3e981c);}return null;};}function removeEntity(_0x35d438){return function(_0x54cf8f){if(_0x54cf8f){return _0x54cf8f[_0x7dcb('0x10')]()[_0x7dcb('0x11')](function(){var _0x493a27=_0x54cf8f[_0x7dcb('0x12')]({'plain':!![]});var _0x30d5e3=[{'name':_0x7dcb('0x13'),'value':'inbound','ignore':![]},{'name':_0x7dcb('0x14'),'value':_0x7dcb('0x15'),'ignore':![]},{'name':_0x7dcb('0x16'),'value':_0x7dcb('0x17'),'ignore':![]}];var _0x4c2a14=_(_0x30d5e3)[_0x7dcb('0x18')]('ignore')[_0x7dcb('0x19')](_0x7dcb('0x1a'))[_0x7dcb('0x1a')]();if(_[_0x7dcb('0x1b')](_0x4c2a14,_0x493a27['type'])){return;}var _0xee3a1e=_[_0x7dcb('0x1c')](_0x30d5e3,['value',_0x493a27[_0x7dcb('0x1d')]])[_0x7dcb('0x1e')];return db[_0x7dcb('0x1f')][_0x7dcb('0x10')]({'where':{'type':_0xee3a1e,'resourceId':_0x493a27['id']}})[_0x7dcb('0x11')](function(){return _0x54cf8f;});})[_0x7dcb('0x11')](function(){_0x35d438['status'](0xcc)[_0x7dcb('0xa')]();});}};}function handleEntityNotFound(_0x18cb7a){return function(_0x3d872c){if(!_0x3d872c){_0x18cb7a['sendStatus'](0x194);}return _0x3d872c;};}function handleError(_0x148bbf,_0x46d29c){_0x46d29c=_0x46d29c||0x1f4;return function(_0x3cd6d7){logger[_0x7dcb('0x20')](_0x3cd6d7['stack']);if(_0x3cd6d7[_0x7dcb('0x1e')]){delete _0x3cd6d7[_0x7dcb('0x1e')];}_0x148bbf[_0x7dcb('0x9')](_0x46d29c)[_0x7dcb('0x21')](_0x3cd6d7);};}exports[_0x7dcb('0x22')]=function(_0x2eb79d,_0xe53d14){var _0x536a36={},_0x4b5e36={},_0x5b2176={'count':0x0,'rows':[]};var _0x2e7ce9=_[_0x7dcb('0x19')](db[_0x7dcb('0x23')]['rawAttributes'],function(_0x4e1b70){return{'name':_0x4e1b70[_0x7dcb('0x24')],'type':_0x4e1b70[_0x7dcb('0x1d')][_0x7dcb('0x25')]};});_0x4b5e36[_0x7dcb('0x26')]=_['map'](_0x2e7ce9,_0x7dcb('0x1e'));_0x4b5e36[_0x7dcb('0x27')]=_['keys'](_0x2eb79d[_0x7dcb('0x27')]);_0x4b5e36[_0x7dcb('0x28')]=_['intersection'](_0x4b5e36[_0x7dcb('0x26')],_0x4b5e36[_0x7dcb('0x27')]);_0x536a36['attributes']=_[_0x7dcb('0x29')](_0x4b5e36['model'],qs[_0x7dcb('0x2a')](_0x2eb79d[_0x7dcb('0x27')]['fields']));_0x536a36[_0x7dcb('0x2b')]=_0x536a36['attributes'][_0x7dcb('0x2c')]?_0x536a36[_0x7dcb('0x2b')]:_0x4b5e36['model'];if(!_0x2eb79d[_0x7dcb('0x27')][_0x7dcb('0x2d')](_0x7dcb('0x2e'))){_0x536a36[_0x7dcb('0x2f')]=qs['limit'](_0x2eb79d[_0x7dcb('0x27')][_0x7dcb('0x2f')]);_0x536a36[_0x7dcb('0xe')]=qs[_0x7dcb('0xe')](_0x2eb79d['query']['offset']);}_0x536a36[_0x7dcb('0x30')]=qs[_0x7dcb('0x31')](_0x2eb79d[_0x7dcb('0x27')][_0x7dcb('0x31')]);_0x536a36[_0x7dcb('0x32')]=qs[_0x7dcb('0x28')](_['pick'](_0x2eb79d['query'],_0x4b5e36[_0x7dcb('0x28')]),_0x2e7ce9);if(_0x2eb79d['query']['filter']){_0x536a36[_0x7dcb('0x32')]=_[_0x7dcb('0x33')](_0x536a36[_0x7dcb('0x32')],{'$or':_[_0x7dcb('0x19')](_0x2e7ce9,function(_0x35f199){if(_0x35f199['type']!==_0x7dcb('0x34')){var _0x230d99={};_0x230d99[_0x35f199[_0x7dcb('0x1e')]]={'$like':'%'+_0x2eb79d[_0x7dcb('0x27')][_0x7dcb('0x18')]+'%'};return _0x230d99;}})});}_0x536a36=_[_0x7dcb('0x33')]({},_0x536a36,_0x2eb79d['options']);var _0xaa7366={'where':_0x536a36[_0x7dcb('0x32')]};return db[_0x7dcb('0x23')]['count'](_0xaa7366)['then'](function(_0x19b564){_0x5b2176[_0x7dcb('0xd')]=_0x19b564;if(_0x2eb79d['query'][_0x7dcb('0x35')]){_0x536a36[_0x7dcb('0x36')]=[{'all':!![]}];}return db[_0x7dcb('0x23')][_0x7dcb('0x37')](_0x536a36);})[_0x7dcb('0x11')](function(_0x5e645b){_0x5b2176[_0x7dcb('0x38')]=_0x5e645b;return _0x5b2176;})[_0x7dcb('0x11')](respondWithFilteredResult(_0xe53d14,_0x536a36))[_0x7dcb('0x39')](handleError(_0xe53d14,null));};exports[_0x7dcb('0x3a')]=function(_0x11d3d1,_0x425b3d){var _0x3b4c11={'raw':![],'where':{'id':_0x11d3d1[_0x7dcb('0x3b')]['id']}},_0x3b723c={};_0x3b723c[_0x7dcb('0x26')]=_[_0x7dcb('0x3c')](db[_0x7dcb('0x23')][_0x7dcb('0x3d')]);_0x3b723c[_0x7dcb('0x27')]=_[_0x7dcb('0x3c')](_0x11d3d1[_0x7dcb('0x27')]);_0x3b723c['filters']=_[_0x7dcb('0x29')](_0x3b723c['model'],_0x3b723c[_0x7dcb('0x27')]);_0x3b4c11[_0x7dcb('0x2b')]=_[_0x7dcb('0x29')](_0x3b723c['model'],qs[_0x7dcb('0x2a')](_0x11d3d1[_0x7dcb('0x27')]['fields']));_0x3b4c11['attributes']=_0x3b4c11[_0x7dcb('0x2b')]['length']?_0x3b4c11[_0x7dcb('0x2b')]:_0x3b723c[_0x7dcb('0x26')];if(_0x11d3d1[_0x7dcb('0x27')][_0x7dcb('0x35')]){_0x3b4c11[_0x7dcb('0x36')]=[{'all':!![]}];}_0x3b4c11=_[_0x7dcb('0x33')]({},_0x3b4c11,_0x11d3d1[_0x7dcb('0x3e')]);return db['VoiceExtension']['find'](_0x3b4c11)[_0x7dcb('0x11')](handleEntityNotFound(_0x425b3d,null))[_0x7dcb('0x11')](respondWithResult(_0x425b3d,null))[_0x7dcb('0x39')](handleError(_0x425b3d,null));};exports['destroy']=function(_0x4af70c,_0x4fc85a){return db[_0x7dcb('0x23')]['find']({'where':{'id':_0x4af70c[_0x7dcb('0x3b')]['id']}})[_0x7dcb('0x11')](handleEntityNotFound(_0x4fc85a,null))[_0x7dcb('0x11')](removeEntity(_0x4fc85a,null))[_0x7dcb('0x39')](handleError(_0x4fc85a,null));};exports[_0x7dcb('0x3f')]=function(_0x542d32,_0x3a613d){if(_0x542d32[_0x7dcb('0x40')][_0x7dcb('0x1d')]===_0x7dcb('0x15')&&!_[_0x7dcb('0x41')](_0x542d32['body'][_0x7dcb('0x42')],'_')){_0x542d32[_0x7dcb('0x40')][_0x7dcb('0x42')]='_'['concat'](_0x542d32[_0x7dcb('0x40')][_0x7dcb('0x42')]);}return db[_0x7dcb('0x23')][_0x7dcb('0x3f')](_0x542d32[_0x7dcb('0x40')],{'raw':![]})[_0x7dcb('0x11')](function(_0x21a11a){var _0x3ef479=_0x542d32['user'][_0x7dcb('0x12')]({'plain':!![]});if(!_0x3ef479)throw new Error(_0x7dcb('0x43'));if(_0x3ef479['role']===_0x7dcb('0x44')){var _0x2de2c1=_0x21a11a[_0x7dcb('0x12')]({'plain':!![]});var _0x384d9a=[{'name':_0x7dcb('0x13'),'value':_0x7dcb('0x45')},{'name':_0x7dcb('0x14'),'value':_0x7dcb('0x15')},{'name':'InternalRoutes','value':'internal'}];var _0x4949df=_['find'](_0x384d9a,['value',_0x2de2c1[_0x7dcb('0x1d')]])[_0x7dcb('0x1e')];return db[_0x7dcb('0x46')][_0x7dcb('0x1c')]({'where':{'name':_0x4949df,'userProfileId':_0x3ef479[_0x7dcb('0x47')]},'raw':!![]})['then'](function(_0x2795a5){if(_0x2795a5&&_0x2795a5[_0x7dcb('0x48')]===0x0){return db[_0x7dcb('0x1f')]['create']({'name':_0x2de2c1[_0x7dcb('0x1e')],'resourceId':_0x2de2c1['id'],'type':_0x2795a5['name'],'sectionId':_0x2795a5['id']},{})[_0x7dcb('0x11')](function(){return _0x21a11a;});}else{return _0x21a11a;}})['catch'](function(_0x5efb5d){logger[_0x7dcb('0x20')](_0x7dcb('0x49'),_0x5efb5d);throw _0x5efb5d;});}return _0x21a11a;})['then'](respondWithResult(_0x3a613d,0xc9))['catch'](handleError(_0x3a613d,null));};exports[_0x7dcb('0x4a')]=function(_0x433a21,_0xebcc75){if(_0x433a21[_0x7dcb('0x40')]['id']){delete _0x433a21[_0x7dcb('0x40')]['id'];}return db['VoiceExtension'][_0x7dcb('0x1c')]({'where':{'id':_0x433a21['params']['id']}})[_0x7dcb('0x11')](handleEntityNotFound(_0xebcc75,null))[_0x7dcb('0x11')](function(_0x3f2d4f){if(_0x3f2d4f){return db[_0x7dcb('0x23')][_0x7dcb('0x4a')](_[_0x7dcb('0x4b')](_0x433a21['body'],['exten',_0x7dcb('0x4c'),'description',_0x7dcb('0x4d'),'cutdigits',_0x7dcb('0x4e'),_0x7dcb('0x4f')]),{'where':{'context':_0x3f2d4f[_0x7dcb('0x4c')],'exten':_0x3f2d4f[_0x7dcb('0x42')]},'individualHooks':!![]})['then'](function(_0x221e5d){return _0x221e5d;});}return null;})[_0x7dcb('0x11')](respondWithStatusCode(_0xebcc75,null))[_0x7dcb('0x39')](handleError(_0xebcc75,null));};exports['addApplications']=function(_0x401910,_0x3aae13){var _0x3367f8=_0x401910[_0x7dcb('0x3b')]['id'];var _0x1d8ad8=_0x401910[_0x7dcb('0x40')];var _0xffdf06=0xc8;var _0xf3b383=null;return db[_0x7dcb('0x50')][_0x7dcb('0x51')]({'isolationLevel':db[_0x7dcb('0x50')][_0x7dcb('0x52')][_0x7dcb('0x53')][_0x7dcb('0x54')]},function(_0x580464){return db[_0x7dcb('0x23')][_0x7dcb('0x55')]({'where':{'id':_0x3367f8},'transaction':_0x580464})[_0x7dcb('0x11')](function(_0x174dd3){if(_0x174dd3){return db['VoiceExtension'][_0x7dcb('0x10')]({'where':{'VoiceExtensionId':_0x3367f8},'transaction':_0x580464})[_0x7dcb('0x11')](function(){var _0x3eedae=_[_0x7dcb('0x19')](_0x1d8ad8,function(_0x2efc4f){_0x2efc4f[_0x7dcb('0x56')]=_0x3367f8;_0x2efc4f[_0x7dcb('0x57')]=!![];return _0x2efc4f;});return _0x174dd3[_0x7dcb('0x58')](_0x3eedae);})[_0x7dcb('0x11')](function(_0x2bffa6){return db[_0x7dcb('0x23')][_0x7dcb('0x59')](_0x2bffa6,{'transaction':_0x580464});});}else{_0xffdf06=0x194;_0xf3b383=[];}});})[_0x7dcb('0x11')](function(){if(_0xffdf06!==0x194){return db[_0x7dcb('0x23')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x3367f8},'order':_0x7dcb('0x5a')})[_0x7dcb('0x11')](function(_0x34bdb5){_0xf3b383=_0x34bdb5;});}})[_0x7dcb('0x39')](function(_0x4fc92e){_0xffdf06=0x1f4;logger[_0x7dcb('0x20')](_0x4fc92e[_0x7dcb('0x5b')]);if(_0x4fc92e[_0x7dcb('0x1e')]){delete _0x4fc92e[_0x7dcb('0x1e')];}_0xf3b383=_0x4fc92e;})['finally'](function(){if(_0xf3b383===null){_0x3aae13[_0x7dcb('0x5c')](_0xffdf06);}else{if(_0xffdf06===0x1f4){_0x3aae13[_0x7dcb('0x9')](_0xffdf06)[_0x7dcb('0x21')](_0xf3b383);}else{_0x3aae13[_0x7dcb('0x9')](_0xffdf06)[_0x7dcb('0xb')](_0xf3b383);}}});};
\ No newline at end of file
+var _0x5eb8=['hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','includeAll','include','VoiceExtension','findAll','rows','catch','show','params','keys','find','create','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','internal','UserProfileSection','userProfileId','update','context','recordingFormat','mandatoryDisposition','alias','addApplications','transaction','Transaction','ISOLATION_LEVELS','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','send','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','offset','undefined','limit','count','set','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','type','name','UserProfileResource','error','stack','index','rawAttributes','query','filters','intersection','model','fields','attributes','length'];(function(_0x2a457d,_0x1f4ee4){var _0x6074eb=function(_0x283d77){while(--_0x283d77){_0x2a457d['push'](_0x2a457d['shift']());}};_0x6074eb(++_0x1f4ee4);}(_0x5eb8,0x130));var _0x85eb=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x5eb8[_0x35da42];return _0x370035;};'use strict';var _=require(_0x85eb('0x0'));var Redis=require(_0x85eb('0x1'));var qs=require(_0x85eb('0x2'));var logger=require(_0x85eb('0x3'))(_0x85eb('0x4'));var config=require('../../config/environment');var db=require(_0x85eb('0x5'))['db'];config['redis']=_['defaults'](config[_0x85eb('0x6')],{'host':_0x85eb('0x7'),'port':0x18eb});var socket=require(_0x85eb('0x8'))(new Redis(config[_0x85eb('0x6')]));require(_0x85eb('0x9'))['register'](socket);function respondWithStatusCode(_0x27f6a6,_0x5a7c28){_0x5a7c28=_0x5a7c28||0xcc;return function(_0x3afdf6){if(_0x3afdf6){return _0x27f6a6[_0x85eb('0xa')](_0x5a7c28);}return _0x27f6a6[_0x85eb('0xb')](_0x5a7c28)['end']();};}function respondWithResult(_0x25bd88,_0x119075){_0x119075=_0x119075||0xc8;return function(_0x47c56c){if(_0x47c56c){return _0x25bd88[_0x85eb('0xb')](_0x119075)['json'](_0x47c56c);}};}function respondWithFilteredResult(_0xebc5ca,_0x263948){return function(_0x1f1c40){if(_0x1f1c40){var _0x50f476=typeof _0x263948[_0x85eb('0xc')]===_0x85eb('0xd')&&typeof _0x263948[_0x85eb('0xe')]===_0x85eb('0xd');var _0x4ca0e8=_0x1f1c40[_0x85eb('0xf')];var _0x18fd45=_0x50f476?0x0:_0x263948['offset'];var _0x12b661=_0x50f476?_0x1f1c40[_0x85eb('0xf')]:_0x263948[_0x85eb('0xc')]+_0x263948[_0x85eb('0xe')];var _0x485ec7;if(_0x12b661>=_0x4ca0e8){_0x12b661=_0x4ca0e8;_0x485ec7=0xc8;}else{_0x485ec7=0xce;}_0xebc5ca[_0x85eb('0xb')](_0x485ec7);return _0xebc5ca[_0x85eb('0x10')]('Content-Range',_0x18fd45+'-'+_0x12b661+'/'+_0x4ca0e8)[_0x85eb('0x11')](_0x1f1c40);}return null;};}function removeEntity(_0x5d0f3b){return function(_0x4890d8){if(_0x4890d8){return _0x4890d8[_0x85eb('0x12')]()[_0x85eb('0x13')](function(){var _0x2acb3f=_0x4890d8[_0x85eb('0x14')]({'plain':!![]});var _0x2d6fcd=[{'name':_0x85eb('0x15'),'value':_0x85eb('0x16'),'ignore':![]},{'name':_0x85eb('0x17'),'value':_0x85eb('0x18'),'ignore':![]},{'name':_0x85eb('0x19'),'value':'internal','ignore':![]}];var _0x5c16e3=_(_0x2d6fcd)[_0x85eb('0x1a')](_0x85eb('0x1b'))[_0x85eb('0x1c')](_0x85eb('0x1d'))[_0x85eb('0x1d')]();if(_['includes'](_0x5c16e3,_0x2acb3f[_0x85eb('0x1e')])){return;}var _0x51c2af=_['find'](_0x2d6fcd,['value',_0x2acb3f['type']])[_0x85eb('0x1f')];return db[_0x85eb('0x20')][_0x85eb('0x12')]({'where':{'type':_0x51c2af,'resourceId':_0x2acb3f['id']}})[_0x85eb('0x13')](function(){return _0x4890d8;});})[_0x85eb('0x13')](function(){_0x5d0f3b[_0x85eb('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45b237){return function(_0x4eb01a){if(!_0x4eb01a){_0x45b237['sendStatus'](0x194);}return _0x4eb01a;};}function handleError(_0x4ef37a,_0x39e180){_0x39e180=_0x39e180||0x1f4;return function(_0x7aab7d){logger[_0x85eb('0x21')](_0x7aab7d[_0x85eb('0x22')]);if(_0x7aab7d['name']){delete _0x7aab7d['name'];}_0x4ef37a['status'](_0x39e180)['send'](_0x7aab7d);};}exports[_0x85eb('0x23')]=function(_0x8224c8,_0x4e077a){var _0x1c3637={},_0x3e1905={},_0x350b42={'count':0x0,'rows':[]};var _0x55ec8a=_[_0x85eb('0x1c')](db['VoiceExtension'][_0x85eb('0x24')],function(_0x3a6b57){return{'name':_0x3a6b57['fieldName'],'type':_0x3a6b57[_0x85eb('0x1e')]['key']};});_0x3e1905['model']=_['map'](_0x55ec8a,_0x85eb('0x1f'));_0x3e1905[_0x85eb('0x25')]=_['keys'](_0x8224c8[_0x85eb('0x25')]);_0x3e1905[_0x85eb('0x26')]=_[_0x85eb('0x27')](_0x3e1905['model'],_0x3e1905[_0x85eb('0x25')]);_0x1c3637['attributes']=_['intersection'](_0x3e1905[_0x85eb('0x28')],qs[_0x85eb('0x29')](_0x8224c8[_0x85eb('0x25')][_0x85eb('0x29')]));_0x1c3637[_0x85eb('0x2a')]=_0x1c3637[_0x85eb('0x2a')][_0x85eb('0x2b')]?_0x1c3637[_0x85eb('0x2a')]:_0x3e1905[_0x85eb('0x28')];if(!_0x8224c8[_0x85eb('0x25')][_0x85eb('0x2c')]('nolimit')){_0x1c3637[_0x85eb('0xe')]=qs[_0x85eb('0xe')](_0x8224c8[_0x85eb('0x25')]['limit']);_0x1c3637[_0x85eb('0xc')]=qs[_0x85eb('0xc')](_0x8224c8[_0x85eb('0x25')]['offset']);}_0x1c3637['order']=qs[_0x85eb('0x2d')](_0x8224c8[_0x85eb('0x25')][_0x85eb('0x2d')]);_0x1c3637[_0x85eb('0x2e')]=qs[_0x85eb('0x26')](_[_0x85eb('0x2f')](_0x8224c8[_0x85eb('0x25')],_0x3e1905[_0x85eb('0x26')]),_0x55ec8a);if(_0x8224c8[_0x85eb('0x25')][_0x85eb('0x1a')]){_0x1c3637[_0x85eb('0x2e')]=_[_0x85eb('0x30')](_0x1c3637['where'],{'$or':_[_0x85eb('0x1c')](_0x55ec8a,function(_0x703deb){if(_0x703deb['type']!==_0x85eb('0x31')){var _0x48d1f9={};_0x48d1f9[_0x703deb['name']]={'$like':'%'+_0x8224c8[_0x85eb('0x25')][_0x85eb('0x1a')]+'%'};return _0x48d1f9;}})});}_0x1c3637=_[_0x85eb('0x30')]({},_0x1c3637,_0x8224c8[_0x85eb('0x32')]);var _0x581fc2={'where':_0x1c3637[_0x85eb('0x2e')]};return db['VoiceExtension'][_0x85eb('0xf')](_0x581fc2)['then'](function(_0x4a61b2){_0x350b42[_0x85eb('0xf')]=_0x4a61b2;if(_0x8224c8[_0x85eb('0x25')][_0x85eb('0x33')]){_0x1c3637[_0x85eb('0x34')]=[{'all':!![]}];}return db[_0x85eb('0x35')][_0x85eb('0x36')](_0x1c3637);})['then'](function(_0x289714){_0x350b42[_0x85eb('0x37')]=_0x289714;return _0x350b42;})[_0x85eb('0x13')](respondWithFilteredResult(_0x4e077a,_0x1c3637))[_0x85eb('0x38')](handleError(_0x4e077a,null));};exports[_0x85eb('0x39')]=function(_0x1d8034,_0x4d56d8){var _0x1abe94={'raw':![],'where':{'id':_0x1d8034[_0x85eb('0x3a')]['id']}},_0x3ad1cd={};_0x3ad1cd['model']=_[_0x85eb('0x3b')](db[_0x85eb('0x35')][_0x85eb('0x24')]);_0x3ad1cd[_0x85eb('0x25')]=_[_0x85eb('0x3b')](_0x1d8034['query']);_0x3ad1cd[_0x85eb('0x26')]=_[_0x85eb('0x27')](_0x3ad1cd['model'],_0x3ad1cd[_0x85eb('0x25')]);_0x1abe94['attributes']=_[_0x85eb('0x27')](_0x3ad1cd[_0x85eb('0x28')],qs[_0x85eb('0x29')](_0x1d8034['query']['fields']));_0x1abe94[_0x85eb('0x2a')]=_0x1abe94[_0x85eb('0x2a')][_0x85eb('0x2b')]?_0x1abe94['attributes']:_0x3ad1cd[_0x85eb('0x28')];if(_0x1d8034[_0x85eb('0x25')]['includeAll']){_0x1abe94[_0x85eb('0x34')]=[{'all':!![]}];}_0x1abe94=_[_0x85eb('0x30')]({},_0x1abe94,_0x1d8034[_0x85eb('0x32')]);return db[_0x85eb('0x35')][_0x85eb('0x3c')](_0x1abe94)[_0x85eb('0x13')](handleEntityNotFound(_0x4d56d8,null))[_0x85eb('0x13')](respondWithResult(_0x4d56d8,null))[_0x85eb('0x38')](handleError(_0x4d56d8,null));};exports['destroy']=function(_0x262217,_0xc1cba7){return db[_0x85eb('0x35')][_0x85eb('0x3c')]({'where':{'id':_0x262217[_0x85eb('0x3a')]['id']}})[_0x85eb('0x13')](handleEntityNotFound(_0xc1cba7,null))[_0x85eb('0x13')](removeEntity(_0xc1cba7,null))['catch'](handleError(_0xc1cba7,null));};exports[_0x85eb('0x3d')]=function(_0x44834b,_0x5d3c53){if(_0x44834b['body'][_0x85eb('0x1e')]===_0x85eb('0x18')&&!_['startsWith'](_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')],'_')){_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')]='_'[_0x85eb('0x40')](_0x44834b[_0x85eb('0x3e')][_0x85eb('0x3f')]);}return db['VoiceExtension']['create'](_0x44834b[_0x85eb('0x3e')],{'raw':![]})['then'](function(_0x8fd76f){var _0x124023=_0x44834b[_0x85eb('0x41')][_0x85eb('0x14')]({'plain':!![]});if(!_0x124023)throw new Error(_0x85eb('0x42'));if(_0x124023[_0x85eb('0x43')]===_0x85eb('0x41')){var _0x26174c=_0x8fd76f[_0x85eb('0x14')]({'plain':!![]});var _0x5c06cf=[{'name':_0x85eb('0x15'),'value':_0x85eb('0x16')},{'name':_0x85eb('0x17'),'value':_0x85eb('0x18')},{'name':_0x85eb('0x19'),'value':_0x85eb('0x44')}];var _0x513729=_['find'](_0x5c06cf,[_0x85eb('0x1d'),_0x26174c['type']])[_0x85eb('0x1f')];return db[_0x85eb('0x45')][_0x85eb('0x3c')]({'where':{'name':_0x513729,'userProfileId':_0x124023[_0x85eb('0x46')]},'raw':!![]})[_0x85eb('0x13')](function(_0x5a821f){if(_0x5a821f&&_0x5a821f['autoAssociation']===0x0){return db[_0x85eb('0x20')][_0x85eb('0x3d')]({'name':_0x26174c[_0x85eb('0x1f')],'resourceId':_0x26174c['id'],'type':_0x5a821f[_0x85eb('0x1f')],'sectionId':_0x5a821f['id']},{})[_0x85eb('0x13')](function(){return _0x8fd76f;});}else{return _0x8fd76f;}})[_0x85eb('0x38')](function(_0x3054a4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3054a4);throw _0x3054a4;});}return _0x8fd76f;})[_0x85eb('0x13')](respondWithResult(_0x5d3c53,0xc9))[_0x85eb('0x38')](handleError(_0x5d3c53,null));};exports['update']=function(_0x133143,_0x79a21){if(_0x133143[_0x85eb('0x3e')]['id']){delete _0x133143[_0x85eb('0x3e')]['id'];}return db[_0x85eb('0x35')]['find']({'where':{'id':_0x133143[_0x85eb('0x3a')]['id']}})[_0x85eb('0x13')](handleEntityNotFound(_0x79a21,null))['then'](function(_0x4a881c){if(_0x4a881c){return db[_0x85eb('0x35')][_0x85eb('0x47')](_['pick'](_0x133143['body'],[_0x85eb('0x3f'),_0x85eb('0x48'),'description',_0x85eb('0x49'),'cutdigits',_0x85eb('0x4a'),_0x85eb('0x4b')]),{'where':{'context':_0x4a881c['context'],'exten':_0x4a881c[_0x85eb('0x3f')]},'individualHooks':!![]})[_0x85eb('0x13')](function(_0x10c70c){return _0x10c70c;});}return null;})[_0x85eb('0x13')](respondWithStatusCode(_0x79a21,null))['catch'](handleError(_0x79a21,null));};exports[_0x85eb('0x4c')]=function(_0xd07634,_0x502bf9){var _0x63148b=_0xd07634['params']['id'];var _0x155554=_0xd07634[_0x85eb('0x3e')];var _0x5276ed=0xc8;var _0x1b6f85=null;return db['sequelize'][_0x85eb('0x4d')]({'isolationLevel':db['sequelize'][_0x85eb('0x4e')][_0x85eb('0x4f')]['READ_COMMITTED']},function(_0x3c8fa6){return db[_0x85eb('0x35')]['findOne']({'where':{'id':_0x63148b},'transaction':_0x3c8fa6})[_0x85eb('0x13')](function(_0x20dc97){if(_0x20dc97){return db['VoiceExtension'][_0x85eb('0x12')]({'where':{'VoiceExtensionId':_0x63148b},'transaction':_0x3c8fa6})[_0x85eb('0x13')](function(){var _0x578edc=_[_0x85eb('0x1c')](_0x155554,function(_0x3b6c2d){_0x3b6c2d[_0x85eb('0x50')]=_0x63148b;_0x3b6c2d[_0x85eb('0x51')]=!![];return _0x3b6c2d;});return _0x20dc97[_0x85eb('0x52')](_0x578edc);})[_0x85eb('0x13')](function(_0x1e925e){return db[_0x85eb('0x35')][_0x85eb('0x53')](_0x1e925e,{'transaction':_0x3c8fa6});});}else{_0x5276ed=0x194;_0x1b6f85=[];}});})['then'](function(){if(_0x5276ed!==0x194){return db[_0x85eb('0x35')][_0x85eb('0x54')]({'where':{'isApp':!![],'VoiceExtensionId':_0x63148b},'order':_0x85eb('0x55')})['then'](function(_0xeeb257){_0x1b6f85=_0xeeb257;});}})[_0x85eb('0x38')](function(_0x518f2d){_0x5276ed=0x1f4;logger[_0x85eb('0x21')](_0x518f2d[_0x85eb('0x22')]);if(_0x518f2d[_0x85eb('0x1f')]){delete _0x518f2d[_0x85eb('0x1f')];}_0x1b6f85=_0x518f2d;})['finally'](function(){if(_0x1b6f85===null){_0x502bf9[_0x85eb('0xa')](_0x5276ed);}else{if(_0x5276ed===0x1f4){_0x502bf9[_0x85eb('0xb')](_0x5276ed)[_0x85eb('0x56')](_0x1b6f85);}else{_0x502bf9[_0x85eb('0xb')](_0x5276ed)['json'](_0x1b6f85);}}});};
\ No newline at end of file
index 9ac6ef6..5cffd97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd9d=['VoiceExtension','setMaxListeners','save','remove','emit','hasOwnProperty','exports'];(function(_0x273ca2,_0x43f5c5){var _0x24fd32=function(_0x482313){while(--_0x482313){_0x273ca2['push'](_0x273ca2['shift']());}};_0x24fd32(++_0x43f5c5);}(_0xfd9d,0x126));var _0xdfd9=function(_0x2125f0,_0x2f23b9){_0x2125f0=_0x2125f0-0x0;var _0x12d6eb=_0xfd9d[_0x2125f0];return _0x12d6eb;};'use strict';var EventEmitter=require('events');var VoiceExtension=require('../../mysqldb')['db'][_0xdfd9('0x0')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xdfd9('0x1')](0x0);var events={'afterCreate':_0xdfd9('0x2'),'afterUpdate':'update','afterDestroy':_0xdfd9('0x3')};function emitEvent(_0x30efdd){return function(_0x13a792,_0x527ec9,_0x28fa0c){VoiceExtensionEvents[_0xdfd9('0x4')](_0x30efdd+':'+_0x13a792['id'],_0x13a792);VoiceExtensionEvents[_0xdfd9('0x4')](_0x30efdd,_0x13a792);_0x28fa0c(null);};}for(var e in events){if(events[_0xdfd9('0x5')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0xdfd9('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x49b0=['VoiceExtension','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x91a997,_0x411892){var _0x2ee914=function(_0x5443a5){while(--_0x5443a5){_0x91a997['push'](_0x91a997['shift']());}};_0x2ee914(++_0x411892);}(_0x49b0,0xa1));var _0x049b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49b0[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x049b('0x0'))['db'][_0x049b('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x049b('0x2')](0x0);var events={'afterCreate':_0x049b('0x3'),'afterUpdate':_0x049b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2e560a){return function(_0x4909df,_0x39248e,_0x382031){VoiceExtensionEvents[_0x049b('0x5')](_0x2e560a+':'+_0x4909df['id'],_0x4909df);VoiceExtensionEvents['emit'](_0x2e560a,_0x4909df);_0x382031(null);};}for(var e in events){if(events[_0x049b('0x6')](e)){var event=events[e];VoiceExtension[_0x049b('0x7')](e,emitEvent(event));}}module[_0x049b('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index 728bb9c..8574479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a8=['XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','No\x20alias\x20set','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','trunk','timeout','options','url','split','length','name','param','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','IntervalId','then','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','queue','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','appdata','priority','concat','catch','define','VoiceExtension','voice_extensions','last','Hangup','lodash','./voiceExtension.attributes','exports','Set','CDR(type)=','type','context','exten','NoOp','alias','CDR(routeAlias)=','inbound','push','CDR(routeid)='];(function(_0x2b29ab,_0x201845){var _0x16e64b=function(_0x42f652){while(--_0x42f652){_0x2b29ab['push'](_0x2b29ab['shift']());}};_0x16e64b(++_0x201845);}(_0xc3a8,0xe8));var _0x8c3a=function(_0x5cf90e,_0x5df405){_0x5cf90e=_0x5cf90e-0x0;var _0xae958d=_0xc3a8[_0x5cf90e];return _0xae958d;};'use strict';var _=require(_0x8c3a('0x0'));var attributes=require(_0x8c3a('0x1'));module[_0x8c3a('0x2')]=function(_0x4fff77){var _0x1790e6=_0x4fff77['models'];function _0x3142c7(_0x43b5f6){var _0x3585d1=0x2;var _0x1d993b=[{'type':_0x43b5f6['type'],'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0x4')+_0x43b5f6[_0x8c3a('0x5')],'context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6[_0x8c3a('0x7')],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']},{'type':_0x43b5f6[_0x8c3a('0x5')],'app':_0x43b5f6['alias']?_0x8c3a('0x3'):_0x8c3a('0x8'),'appdata':_0x43b5f6[_0x8c3a('0x9')]?_0x8c3a('0xa')+_0x43b5f6[_0x8c3a('0x9')]:'No\x20alias\x20set','context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6[_0x8c3a('0x7')],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']}];if(_0x43b5f6['type']===_0x8c3a('0xb')){_0x1d993b[_0x8c3a('0xc')]({'type':_0x8c3a('0xb'),'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0xd')+_0x43b5f6['id'],'context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6['exten'],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']});}_0x1d993b[_0x8c3a('0xc')]({'type':_0x43b5f6['type'],'app':'Set','appdata':_0x8c3a('0xe'),'context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6[_0x8c3a('0x7')],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']},{'type':_0x43b5f6[_0x8c3a('0x5')],'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0xf'),'context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6[_0x8c3a('0x7')],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']},{'type':_0x43b5f6[_0x8c3a('0x5')],'app':'Set','appdata':_0x8c3a('0x10'),'context':_0x43b5f6[_0x8c3a('0x6')],'exten':_0x43b5f6[_0x8c3a('0x7')],'priority':_0x3585d1++,'VoiceExtensionId':_0x43b5f6['id']});return _0x1d993b;}function _0x1ee355(_0x95e9d4){var _0x54fe05=0x2;var _0x580838=[{'type':'outbound','app':'Set','appdata':_0x8c3a('0x11'),'context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x95e9d4[_0x8c3a('0x9')]?_0x8c3a('0x3'):'NoOp','appdata':_0x95e9d4[_0x8c3a('0x9')]?_0x8c3a('0xa')+_0x95e9d4['alias']:_0x8c3a('0x13'),'context':_0x95e9d4['context'],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':'CDR(destination)='+(_0x95e9d4[_0x8c3a('0x14')]?_0x8c3a('0x15')+_0x95e9d4[_0x8c3a('0x14')]+'}':_0x8c3a('0x16')),'context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':'Set','appdata':_0x8c3a('0xd')+_0x95e9d4['id'],'context':_0x95e9d4['context'],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':'outbound','app':_0x8c3a('0x17'),'appdata':_0x8c3a('0x18')+(_0x54fe05+0x2)+'):Goto('+(_0x54fe05+0x1)+')','context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4['exten'],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':_0x95e9d4[_0x8c3a('0x14')]?'CDR(prefix)=${EXTEN:0:'+_0x95e9d4['cutdigits']+'}':_0x8c3a('0x19'),'context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4['exten'],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':'Set','appdata':_0x8c3a('0xf'),'context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4['exten'],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':'MONITOR_OPTIONS=ab','context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':'Set','appdata':_0x8c3a('0x1a')+_0x95e9d4['id'],'context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']}];if(_0x95e9d4[_0x8c3a('0x1b')]('recordingFormat')&&_0x95e9d4['recordingFormat']!==_0x8c3a('0x1c')){_0x580838[_0x8c3a('0xc')]({'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0x1d'),'context':_0x95e9d4['context'],'exten':_0x95e9d4[_0x8c3a('0x7')],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']},{'type':_0x8c3a('0x12'),'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0x1e')+_0x95e9d4[_0x8c3a('0x1f')]||'wav','context':_0x95e9d4[_0x8c3a('0x6')],'exten':_0x95e9d4['exten'],'priority':_0x54fe05++,'VoiceExtensionId':_0x95e9d4['id']});}return _0x580838;}function _0x528ac1(_0x519041,_0x8170c1){var _0x51aa22=[{'name':_0x8c3a('0x20'),'param':0x0},{'name':_0x8c3a('0x21'),'param':0x1},{'name':_0x8c3a('0x22'),'param':0x2},{'name':_0x8c3a('0x23'),'param':0x3}];var _0x482910={};var _0x3013e9=_0x8170c1[_0x8c3a('0x24')](',');var _0x3586e2=[];for(var _0x4970f0=0x0;_0x4970f0<_0x51aa22[_0x8c3a('0x25')];_0x4970f0++){switch(_0x51aa22[_0x4970f0][_0x8c3a('0x26')]){case _0x8c3a('0x20'):_0x482910[_0x8c3a('0x20')]=_0x3013e9[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]][_0x8c3a('0x24')]('/')[0x1];_0x482910[_0x8c3a('0x28')]=_0x3013e9[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]][_0x8c3a('0x24')]('/')[0x2];_0x482910[_0x8c3a('0x29')]=_0x482910[_0x8c3a('0x28')]?_0x482910['phone'][_0x8c3a('0x24')]('$')[0x0]:undefined;_0x482910[_0x8c3a('0x28')]=_0x519041[_0x8c3a('0x14')]?(_0x482910['prefix']||'')+_0x8c3a('0x15')+_0x519041['cutdigits']+'}':(_0x482910[_0x8c3a('0x29')]||'')+'${EXTEN}';_0x3586e2[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]]=[_0x8c3a('0x2a'),_0x482910['trunk'],_0x482910[_0x8c3a('0x28')]][_0x8c3a('0x2b')]('/');break;case _0x8c3a('0x22'):_0x482910[_0x8c3a('0x22')]=_0x3013e9[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]];if(_0x519041[_0x8c3a('0x1f')]!=='none'){if(_0x482910['options'][_0x8c3a('0x2c')](_0x8c3a('0x2d'))<0x0){_0x482910[_0x8c3a('0x22')]+=_0x8c3a('0x2d');}}else{_0x482910['options']=_0x482910[_0x8c3a('0x22')]['replace'](_0x8c3a('0x2d'),'');}_0x3586e2[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]]=_0x482910[_0x8c3a('0x22')];break;default:_0x3586e2[_0x51aa22[_0x4970f0]['param']]=_0x3013e9[_0x51aa22[_0x4970f0][_0x8c3a('0x27')]];}}return _0x3586e2[_0x8c3a('0x2b')](',');}function _0x1d9c6c(_0xe3776e,_0x1c441e,_0x30b2c2){return new Promise(function(_0x4d0137,_0x54732c){var _0x3f4177=[];if(_[_0x8c3a('0x2e')](_0x1c441e))return _0x4d0137(_0x3f4177);_0x1790e6[_0x8c3a('0x2f')]['findAll']({'attributes':['id',_0x8c3a('0x30'),_0x8c3a('0x31')],'raw':!![]})[_0x8c3a('0x32')](function(_0x52b352){for(var _0x45d0d6=0x0,_0x210086=0x0;_0x45d0d6<_0x1c441e[_0x8c3a('0x25')];_0x45d0d6++,_0x210086=0x0){var _0x1e479d=_0x1c441e[_0x45d0d6];var _0x53afe6=[];var _0x37ca54=[];delete _0x1e479d['id'];if(_0x1e479d[_0x8c3a('0x30')]!=='*,*,*,*'){_0x1e479d[_0x8c3a('0x33')]=[_0x1e479d['interval']];}else{_0x1e479d['intervals']=_0x1e479d['IntervalId']?_[_0x8c3a('0x34')](_[_0x8c3a('0x35')](_0x52b352,{'IntervalId':_0x1e479d[_0x8c3a('0x31')]}),_0x8c3a('0x30')):[];}_0x1e479d[_0x8c3a('0x6')]=_0xe3776e[_0x8c3a('0x6')];_0x1e479d[_0x8c3a('0x7')]=_0xe3776e[_0x8c3a('0x7')];if(_0x1e479d[_0x8c3a('0x5')])_0x1e479d[_0x8c3a('0x5')]=_0x1e479d[_0x8c3a('0x5')]['toLowerCase']();if(_0xe3776e[_0x8c3a('0x5')]===_0x8c3a('0x12')){if(_0x1e479d[_0x8c3a('0x1b')](_0x8c3a('0x36'))&&_0x1e479d[_0x8c3a('0x36')]&&_0x1e479d[_0x8c3a('0x36')]!=='--'){_0x53afe6[_0x8c3a('0xc')]({'type':_0x1e479d[_0x8c3a('0x5')][_0x8c3a('0x37')](),'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0x38')+_0x1e479d['tag'],'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e[_0x8c3a('0x7')],'priority':_0x1e479d[_0x8c3a('0x33')][_0x8c3a('0x25')]+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});}_0x53afe6[_0x8c3a('0xc')]({'type':_0x1e479d[_0x8c3a('0x5')][_0x8c3a('0x37')](),'app':_0x8c3a('0x17'),'appdata':_0x8c3a('0x39')+(_0x1e479d['callerID']?_0x8c3a('0x3a')+_0x1e479d[_0x8c3a('0x3b')]+')':_0x8c3a('0x3c')),'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e['exten'],'priority':_0x1e479d[_0x8c3a('0x33')]['length']+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});}else{if(_0x1e479d['hasOwnProperty'](_0x8c3a('0x3d'))){if([_0x8c3a('0x3e'),'playback'][_0x8c3a('0x3f')](_0x1e479d[_0x8c3a('0x40')][_0x8c3a('0x37')]())&&_0x1e479d[_0x8c3a('0x41')]!==_0x8c3a('0x42')){if(_0x1e479d[_0x8c3a('0x3d')]){_0x53afe6[_0x8c3a('0xc')]({'type':_0x1e479d[_0x8c3a('0x5')][_0x8c3a('0x37')](),'app':_0x8c3a('0x17'),'appdata':_0x8c3a('0x43'),'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e[_0x8c3a('0x7')],'priority':_0x1e479d[_0x8c3a('0x33')][_0x8c3a('0x25')]+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});_0x53afe6['push']({'type':_0x1e479d[_0x8c3a('0x5')]['toLowerCase'](),'app':_0x8c3a('0x3'),'appdata':_0x8c3a('0x44'),'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e['exten'],'priority':_0x1e479d[_0x8c3a('0x33')][_0x8c3a('0x25')]+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});}else{_0x53afe6[_0x8c3a('0xc')]({'type':_0x1e479d[_0x8c3a('0x5')]['toLowerCase'](),'app':'ExecIf','appdata':_0x8c3a('0x45'),'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e[_0x8c3a('0x7')],'priority':_0x1e479d['intervals'][_0x8c3a('0x25')]+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});_0x53afe6[_0x8c3a('0xc')]({'type':_0x1e479d[_0x8c3a('0x5')][_0x8c3a('0x37')](),'app':'Set','appdata':_0x8c3a('0x46'),'context':_0xe3776e[_0x8c3a('0x6')],'exten':_0xe3776e[_0x8c3a('0x7')],'priority':_0x1e479d[_0x8c3a('0x33')][_0x8c3a('0x25')]+_0x30b2c2+_0x210086++,'VoiceExtensionId':_0xe3776e['id']});}}}}for(var _0x3fc1f3=0x0;_0x3fc1f3<_0x1e479d['intervals'][_0x8c3a('0x25')];_0x3fc1f3++){var _0x8ee0d6=_0x30b2c2+_0x1e479d['intervals'][_0x8c3a('0x25')];var _0x36175a=_0x3fc1f3===_0x1e479d[_0x8c3a('0x33')][_0x8c3a('0x25')]-0x1?_0x30b2c2+_0x53afe6[_0x8c3a('0x25')]+_0x37ca54[_0x8c3a('0x25')]+0x2:_0x30b2c2+_0x3fc1f3+0x1;_0x53afe6[_0x8c3a('0x47')](_0x3fc1f3,0x0,{'type':_0xe3776e[_0x8c3a('0x5')],'app':'GotoIfTime','appdata':_0x1e479d[_0x8c3a('0x33')][_0x3fc1f3]+'?'+_0xe3776e['context']+_0x8c3a('0x48')+_0x8ee0d6+':'+_0xe3776e[_0x8c3a('0x6')]+_0x8c3a('0x48')+_0x36175a,'exten':_0xe3776e['exten'],'context':_0xe3776e[_0x8c3a('0x6')],'priority':_0x30b2c2+_0x3fc1f3,'VoiceExtensionId':_0xe3776e['id']});}if(_0x1e479d['appType']==='outboundDial')_0x1e479d['appdata']=_0x528ac1(_0xe3776e,_0x1e479d[_0x8c3a('0x49')]);_0x1e479d[_0x8c3a('0x4a')]=_0x53afe6[_0x8c3a('0x25')]?_['last'](_0x53afe6)[_0x8c3a('0x4a')]+0x1:_0x30b2c2;_0x3f4177=_[_0x8c3a('0x4b')](_0x3f4177,_0x53afe6,[_0x1e479d],_0x37ca54);_0x30b2c2=_['last'](_0x3f4177)['priority']+0x1;}return _0x4d0137(_0x3f4177);})[_0x8c3a('0x4c')](function(_0x23fb39){_0x54732c(_0x23fb39);});});}return _0x4fff77[_0x8c3a('0x4d')](_0x8c3a('0x4e'),attributes,{'tableName':_0x8c3a('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3d0680){var _0x4ff0b7=this['get']({'plain':!![]});var _0x55d5ba=_0x4ff0b7['type']===_0x8c3a('0x12')?_0x1ee355(_0x4ff0b7):_0x3142c7(_0x4ff0b7);return _0x1d9c6c(_0x4ff0b7,_0x3d0680,_[_0x8c3a('0x50')](_0x55d5ba)[_0x8c3a('0x4a')]+0x1)[_0x8c3a('0x32')](function(_0x8ff4fb){var _0xd31644=_[_0x8c3a('0x4b')](_0x55d5ba,_0x8ff4fb);_0xd31644[_0x8c3a('0xc')]({'type':_0x4ff0b7[_0x8c3a('0x5')],'app':_0x8c3a('0x51'),'exten':_0x4ff0b7[_0x8c3a('0x7')],'context':_0x4ff0b7[_0x8c3a('0x6')],'priority':_[_0x8c3a('0x50')](_0xd31644)['priority']+0x1,'VoiceExtensionId':_0x4ff0b7['id']});return _0xd31644;});}}});};
\ No newline at end of file
+var _0x09da=[',${EXTEN},','outboundDial','appdata','priority','concat','last','catch','VoiceExtension','voice_extensions','Hangup','./voiceExtension.attributes','exports','models','type','CDR(type)=','context','exten','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','alias','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','phone','prefix','${EXTEN:','indexOf','U(xcally-mixmonitor-context)','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','splice'];(function(_0x4fcca7,_0x2f7f74){var _0x28ef84=function(_0x17ca82){while(--_0x17ca82){_0x4fcca7['push'](_0x4fcca7['shift']());}};_0x28ef84(++_0x2f7f74);}(_0x09da,0xf4));var _0xa09d=function(_0x11e18a,_0x4da734){_0x11e18a=_0x11e18a-0x0;var _0xc2d8ff=_0x09da[_0x11e18a];return _0xc2d8ff;};'use strict';var _=require('lodash');var attributes=require(_0xa09d('0x0'));module[_0xa09d('0x1')]=function(_0x14b512){var _0x3f871b=_0x14b512[_0xa09d('0x2')];function _0x1e4d24(_0x129dc6){var _0x50a6b8=0x2;var _0x2a4f75=[{'type':_0x129dc6[_0xa09d('0x3')],'app':'Set','appdata':_0xa09d('0x4')+_0x129dc6[_0xa09d('0x3')],'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6['type'],'app':_0x129dc6['alias']?_0xa09d('0x7'):_0xa09d('0x8'),'appdata':_0x129dc6['alias']?_0xa09d('0x9')+_0x129dc6['alias']:_0xa09d('0xa'),'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']}];if(_0x129dc6[_0xa09d('0x3')]===_0xa09d('0xb')){_0x2a4f75[_0xa09d('0xc')]({'type':_0xa09d('0xb'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xd')+_0x129dc6['id'],'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']});}_0x2a4f75[_0xa09d('0xc')]({'type':_0x129dc6['type'],'app':_0xa09d('0x7'),'appdata':_0xa09d('0xe'),'context':_0x129dc6['context'],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6[_0xa09d('0x3')],'app':_0xa09d('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x129dc6['context'],'exten':_0x129dc6['exten'],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']},{'type':_0x129dc6[_0xa09d('0x3')],'app':_0xa09d('0x7'),'appdata':_0xa09d('0xf'),'context':_0x129dc6[_0xa09d('0x5')],'exten':_0x129dc6[_0xa09d('0x6')],'priority':_0x50a6b8++,'VoiceExtensionId':_0x129dc6['id']});return _0x2a4f75;}function _0x4c0fc9(_0x2320e9){var _0x22c06a=0x2;var _0x194899=[{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'CDR(type)=outbound','context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0x2320e9[_0xa09d('0x11')]?_0xa09d('0x7'):_0xa09d('0x8'),'appdata':_0x2320e9[_0xa09d('0x11')]?_0xa09d('0x9')+_0x2320e9[_0xa09d('0x11')]:_0xa09d('0xa'),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'CDR(destination)='+(_0x2320e9[_0xa09d('0x12')]?'${EXTEN:'+_0x2320e9['cutdigits']+'}':_0xa09d('0x13')),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xd')+_0x2320e9['id'],'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':'outbound','app':_0xa09d('0x14'),'appdata':_0xa09d('0x15')+(_0x22c06a+0x2)+'):Goto('+(_0x22c06a+0x1)+')','context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0x2320e9['cutdigits']?_0xa09d('0x16')+_0x2320e9[_0xa09d('0x12')]+'}':_0xa09d('0x17'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x18'),'context':_0x2320e9['context'],'exten':_0x2320e9['exten'],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0xf'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':'Set','appdata':'outboundrouteid='+_0x2320e9['id'],'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']}];if(_0x2320e9[_0xa09d('0x19')](_0xa09d('0x1a'))&&_0x2320e9[_0xa09d('0x1a')]!==_0xa09d('0x1b')){_0x194899['push']({'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x1c'),'context':_0x2320e9['context'],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']},{'type':_0xa09d('0x10'),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x1d')+_0x2320e9['recordingFormat']||_0xa09d('0x1e'),'context':_0x2320e9[_0xa09d('0x5')],'exten':_0x2320e9[_0xa09d('0x6')],'priority':_0x22c06a++,'VoiceExtensionId':_0x2320e9['id']});}return _0x194899;}function _0x2b3bac(_0x467cc5,_0x4a069a){var _0x78a182=[{'name':_0xa09d('0x1f'),'param':0x0},{'name':_0xa09d('0x20'),'param':0x1},{'name':_0xa09d('0x21'),'param':0x2},{'name':_0xa09d('0x22'),'param':0x3}];var _0x12b84d={};var _0x187ff3=_0x4a069a['split'](',');var _0xdcfbe8=[];for(var _0x1bd855=0x0;_0x1bd855<_0x78a182[_0xa09d('0x23')];_0x1bd855++){switch(_0x78a182[_0x1bd855][_0xa09d('0x24')]){case _0xa09d('0x1f'):_0x12b84d[_0xa09d('0x1f')]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]][_0xa09d('0x26')]('/')[0x1];_0x12b84d['phone']=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]][_0xa09d('0x26')]('/')[0x2];_0x12b84d['prefix']=_0x12b84d[_0xa09d('0x27')]?_0x12b84d[_0xa09d('0x27')][_0xa09d('0x26')]('$')[0x0]:undefined;_0x12b84d['phone']=_0x467cc5[_0xa09d('0x12')]?(_0x12b84d[_0xa09d('0x28')]||'')+_0xa09d('0x29')+_0x467cc5['cutdigits']+'}':(_0x12b84d['prefix']||'')+_0xa09d('0x13');_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=['SIP',_0x12b84d[_0xa09d('0x1f')],_0x12b84d[_0xa09d('0x27')]]['join']('/');break;case'options':_0x12b84d[_0xa09d('0x21')]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]];if(_0x467cc5[_0xa09d('0x1a')]!==_0xa09d('0x1b')){if(_0x12b84d[_0xa09d('0x21')][_0xa09d('0x2a')](_0xa09d('0x2b'))<0x0){_0x12b84d[_0xa09d('0x21')]+=_0xa09d('0x2b');}}else{_0x12b84d[_0xa09d('0x21')]=_0x12b84d[_0xa09d('0x21')]['replace'](_0xa09d('0x2b'),'');}_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=_0x12b84d[_0xa09d('0x21')];break;default:_0xdcfbe8[_0x78a182[_0x1bd855][_0xa09d('0x25')]]=_0x187ff3[_0x78a182[_0x1bd855][_0xa09d('0x25')]];}}return _0xdcfbe8['join'](',');}function _0x3b850c(_0x50b64b,_0x335f53,_0x15d791){return new Promise(function(_0x48da1e,_0x2fd762){var _0x442514=[];if(_['isEmpty'](_0x335f53))return _0x48da1e(_0x442514);_0x3f871b[_0xa09d('0x2c')][_0xa09d('0x2d')]({'attributes':['id',_0xa09d('0x2e'),_0xa09d('0x2f')],'raw':!![]})[_0xa09d('0x30')](function(_0x22519b){for(var _0x32e0c5=0x0,_0x1dcbf7=0x0;_0x32e0c5<_0x335f53[_0xa09d('0x23')];_0x32e0c5++,_0x1dcbf7=0x0){var _0x256e57=_0x335f53[_0x32e0c5];var _0x2b3635=[];var _0x1c0a65=[];delete _0x256e57['id'];if(_0x256e57['interval']!==_0xa09d('0x31')){_0x256e57[_0xa09d('0x32')]=[_0x256e57[_0xa09d('0x2e')]];}else{_0x256e57[_0xa09d('0x32')]=_0x256e57[_0xa09d('0x2f')]?_[_0xa09d('0x33')](_[_0xa09d('0x34')](_0x22519b,{'IntervalId':_0x256e57['IntervalId']}),_0xa09d('0x2e')):[];}_0x256e57[_0xa09d('0x5')]=_0x50b64b[_0xa09d('0x5')];_0x256e57[_0xa09d('0x6')]=_0x50b64b[_0xa09d('0x6')];if(_0x256e57[_0xa09d('0x3')])_0x256e57[_0xa09d('0x3')]=_0x256e57['type']['toLowerCase']();if(_0x50b64b[_0xa09d('0x3')]===_0xa09d('0x10')){if(_0x256e57[_0xa09d('0x19')]('tag')&&_0x256e57[_0xa09d('0x35')]&&_0x256e57[_0xa09d('0x35')]!=='--'){_0x2b3635['push']({'type':_0x256e57[_0xa09d('0x3')]['toLowerCase'](),'app':'Set','appdata':'CDR(tag)='+_0x256e57[_0xa09d('0x35')],'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':_0xa09d('0x37')+(_0x256e57[_0xa09d('0x38')]?_0xa09d('0x39')+_0x256e57['callerID']+')':_0xa09d('0x3a')),'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57['intervals'][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}else{if(_0x256e57[_0xa09d('0x19')](_0xa09d('0x3b'))){if(['queue',_0xa09d('0x3c')][_0xa09d('0x3d')](_0x256e57[_0xa09d('0x3e')][_0xa09d('0x36')]())&&_0x256e57[_0xa09d('0x3f')]!==_0xa09d('0x40')){if(_0x256e57[_0xa09d('0x3b')]){_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':_0xa09d('0x41'),'context':_0x50b64b['context'],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});_0x2b3635[_0xa09d('0xc')]({'type':_0x256e57['type'][_0xa09d('0x36')](),'app':_0xa09d('0x7'),'appdata':_0xa09d('0x42'),'context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b['exten'],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}else{_0x2b3635['push']({'type':_0x256e57['type'][_0xa09d('0x36')](),'app':_0xa09d('0x14'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x50b64b[_0xa09d('0x5')],'exten':_0x50b64b['exten'],'priority':_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')]+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});_0x2b3635['push']({'type':_0x256e57[_0xa09d('0x3')][_0xa09d('0x36')](),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x50b64b['context'],'exten':_0x50b64b[_0xa09d('0x6')],'priority':_0x256e57[_0xa09d('0x32')]['length']+_0x15d791+_0x1dcbf7++,'VoiceExtensionId':_0x50b64b['id']});}}}}for(var _0x1f50b4=0x0;_0x1f50b4<_0x256e57['intervals'][_0xa09d('0x23')];_0x1f50b4++){var _0x2cc58d=_0x15d791+_0x256e57[_0xa09d('0x32')][_0xa09d('0x23')];var _0xaeb77b=_0x1f50b4===_0x256e57['intervals'][_0xa09d('0x23')]-0x1?_0x15d791+_0x2b3635[_0xa09d('0x23')]+_0x1c0a65[_0xa09d('0x23')]+0x2:_0x15d791+_0x1f50b4+0x1;_0x2b3635[_0xa09d('0x43')](_0x1f50b4,0x0,{'type':_0x50b64b[_0xa09d('0x3')],'app':'GotoIfTime','appdata':_0x256e57[_0xa09d('0x32')][_0x1f50b4]+'?'+_0x50b64b[_0xa09d('0x5')]+',${EXTEN},'+_0x2cc58d+':'+_0x50b64b[_0xa09d('0x5')]+_0xa09d('0x44')+_0xaeb77b,'exten':_0x50b64b[_0xa09d('0x6')],'context':_0x50b64b[_0xa09d('0x5')],'priority':_0x15d791+_0x1f50b4,'VoiceExtensionId':_0x50b64b['id']});}if(_0x256e57['appType']===_0xa09d('0x45'))_0x256e57[_0xa09d('0x46')]=_0x2b3bac(_0x50b64b,_0x256e57[_0xa09d('0x46')]);_0x256e57[_0xa09d('0x47')]=_0x2b3635[_0xa09d('0x23')]?_['last'](_0x2b3635)['priority']+0x1:_0x15d791;_0x442514=_[_0xa09d('0x48')](_0x442514,_0x2b3635,[_0x256e57],_0x1c0a65);_0x15d791=_[_0xa09d('0x49')](_0x442514)[_0xa09d('0x47')]+0x1;}return _0x48da1e(_0x442514);})[_0xa09d('0x4a')](function(_0x475782){_0x2fd762(_0x475782);});});}return _0x14b512['define'](_0xa09d('0x4b'),attributes,{'tableName':_0xa09d('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1b47e9){var _0x2d43c1=this['get']({'plain':!![]});var _0x5135ce=_0x2d43c1['type']===_0xa09d('0x10')?_0x4c0fc9(_0x2d43c1):_0x1e4d24(_0x2d43c1);return _0x3b850c(_0x2d43c1,_0x1b47e9,_['last'](_0x5135ce)[_0xa09d('0x47')]+0x1)[_0xa09d('0x30')](function(_0x220845){var _0x20dfc5=_['concat'](_0x5135ce,_0x220845);_0x20dfc5[_0xa09d('0xc')]({'type':_0x2d43c1['type'],'app':_0xa09d('0x4d'),'exten':_0x2d43c1['exten'],'context':_0x2d43c1['context'],'priority':_[_0xa09d('0x49')](_0x20dfc5)[_0xa09d('0x47')]+0x1,'VoiceExtensionId':_0x2d43c1['id']});return _0x20dfc5;});}}});};
\ No newline at end of file
index 857ed7c..1f9cf71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ae=['where','attributes','include','map','model','GetVoiceExtension','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','socket.io-emitter','register','then','info','VoiceExtension,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','findAll','options','raw'];(function(_0xa7662e,_0x22304d){var _0x425053=function(_0x3e24a6){while(--_0x3e24a6){_0xa7662e['push'](_0xa7662e['shift']());}};_0x425053(++_0x22304d);}(_0xe0ae,0xa1));var _0xee0a=function(_0x261522,_0x1adc1f){_0x261522=_0x261522-0x0;var _0x98a25a=_0xe0ae[_0x261522];return _0x98a25a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xee0a('0x0'));var BPromise=require(_0xee0a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee0a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xee0a('0x3'));var logger=require(_0xee0a('0x4'))('rpc');var config=require(_0xee0a('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xee0a('0x6')]({'port':0x232a});config[_0xee0a('0x7')]=_[_0xee0a('0x8')](config[_0xee0a('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0xee0a('0x9'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0xee0a('0xa')](socket);function respondWithRpcPromise(_0x3d0b3f,_0xbd4483,_0x57d190){return new BPromise(function(_0x3bc0cf,_0x1a953e){return client['request'](_0x3d0b3f,_0x57d190)[_0xee0a('0xb')](function(_0x4b3e49){logger[_0xee0a('0xc')](_0xee0a('0xd'),_0xbd4483,'request\x20sent');logger[_0xee0a('0xe')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0xbd4483,_0xee0a('0xf'),JSON[_0xee0a('0x10')](_0x4b3e49));if(_0x4b3e49['error']){if(_0x4b3e49['error'][_0xee0a('0x11')]===0x1f4){logger[_0xee0a('0x12')](_0xee0a('0xd'),_0xbd4483,_0x4b3e49[_0xee0a('0x12')][_0xee0a('0x13')]);return _0x1a953e(_0x4b3e49['error'][_0xee0a('0x13')]);}logger[_0xee0a('0x12')]('VoiceExtension,\x20%s,\x20%s',_0xbd4483,_0x4b3e49[_0xee0a('0x12')][_0xee0a('0x13')]);return _0x3bc0cf(_0x4b3e49[_0xee0a('0x12')][_0xee0a('0x13')]);}else{logger['info'](_0xee0a('0xd'),_0xbd4483,_0xee0a('0xf'));_0x3bc0cf(_0x4b3e49[_0xee0a('0x14')]['message']);}})[_0xee0a('0x15')](function(_0x1ffdb5){logger[_0xee0a('0x12')](_0xee0a('0xd'),_0xbd4483,_0x1ffdb5);_0x1a953e(_0x1ffdb5);});});}exports['GetVoiceExtension']=function(_0xe9d5d4){var _0x10c224=this;return new Promise(function(_0x452d97,_0x201d32){return db['VoiceExtension'][_0xee0a('0x16')]({'raw':_0xe9d5d4[_0xee0a('0x17')]?_0xe9d5d4[_0xee0a('0x17')][_0xee0a('0x18')]===undefined?!![]:![]:!![],'where':_0xe9d5d4[_0xee0a('0x17')]?_0xe9d5d4[_0xee0a('0x17')][_0xee0a('0x19')]||null:null,'attributes':_0xe9d5d4['options']?_0xe9d5d4[_0xee0a('0x17')][_0xee0a('0x1a')]||null:null,'limit':_0xe9d5d4[_0xee0a('0x17')]?_0xe9d5d4[_0xee0a('0x17')]['limit']||null:null,'include':_0xe9d5d4[_0xee0a('0x17')]?_0xe9d5d4[_0xee0a('0x17')][_0xee0a('0x1b')]?_[_0xee0a('0x1c')](_0xe9d5d4['options']['include'],function(_0x578ecf){return{'model':db[_0x578ecf[_0xee0a('0x1d')]],'as':_0x578ecf['as'],'attributes':_0x578ecf['attributes'],'include':_0x578ecf['include']?_[_0xee0a('0x1c')](_0x578ecf[_0xee0a('0x1b')],function(_0xe5365f){return{'model':db[_0xe5365f['model']],'as':_0xe5365f['as'],'attributes':_0xe5365f[_0xee0a('0x1a')],'include':_0xe5365f[_0xee0a('0x1b')]?_[_0xee0a('0x1c')](_0xe5365f[_0xee0a('0x1b')],function(_0x2e7f18){return{'model':db[_0x2e7f18[_0xee0a('0x1d')]],'as':_0x2e7f18['as'],'attributes':_0x2e7f18[_0xee0a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xee0a('0xb')](function(_0x65e054){logger[_0xee0a('0xc')]('GetVoiceExtension',_0xe9d5d4);logger[_0xee0a('0xe')](_0xee0a('0x1e'),_0xe9d5d4,JSON[_0xee0a('0x10')](_0x65e054));_0x452d97(_0x65e054);})[_0xee0a('0x15')](function(_0x45feeb){logger[_0xee0a('0x12')]('GetVoiceExtension',_0x45feeb[_0xee0a('0x13')],_0xe9d5d4);_0x201d32(_0x10c224[_0xee0a('0x12')](0x1f4,_0x45feeb[_0xee0a('0x13')]));});});};
\ No newline at end of file
+var _0x55c1=['../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','register','request','info','request\x20sent','debug','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../config/utils'];(function(_0x477159,_0x4a2728){var _0x81a2ed=function(_0xa103f9){while(--_0xa103f9){_0x477159['push'](_0x477159['shift']());}};_0x81a2ed(++_0x4a2728);}(_0x55c1,0x1e5));var _0x155c=function(_0x5b6fd3,_0x4af8d4){_0x5b6fd3=_0x5b6fd3-0x0;var _0x75ef1e=_0x55c1[_0x5b6fd3];return _0x75ef1e;};'use strict';var _=require(_0x155c('0x0'));var util=require(_0x155c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x155c('0x2'));var db=require(_0x155c('0x3'))['db'];var utils=require(_0x155c('0x4'));var logger=require(_0x155c('0x5'))(_0x155c('0x6'));var config=require('../../config/environment');var jayson=require(_0x155c('0x7'));var client=jayson[_0x155c('0x8')][_0x155c('0x9')]({'port':0x232a});config['redis']=_[_0x155c('0xa')](config[_0x155c('0xb')],{'host':_0x155c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceExtension.socket')[_0x155c('0xd')](socket);function respondWithRpcPromise(_0xb51331,_0x2bf577,_0x2194ff){return new BPromise(function(_0x4f95f0,_0x228de5){return client[_0x155c('0xe')](_0xb51331,_0x2194ff)['then'](function(_0x192182){logger[_0x155c('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'));logger[_0x155c('0x11')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'),JSON[_0x155c('0x12')](_0x192182));if(_0x192182[_0x155c('0x13')]){if(_0x192182['error'][_0x155c('0x14')]===0x1f4){logger[_0x155c('0x13')](_0x155c('0x15'),_0x2bf577,_0x192182[_0x155c('0x13')][_0x155c('0x16')]);return _0x228de5(_0x192182['error'][_0x155c('0x16')]);}logger[_0x155c('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x192182[_0x155c('0x13')]['message']);return _0x4f95f0(_0x192182[_0x155c('0x13')][_0x155c('0x16')]);}else{logger[_0x155c('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x2bf577,_0x155c('0x10'));_0x4f95f0(_0x192182[_0x155c('0x17')][_0x155c('0x16')]);}})[_0x155c('0x18')](function(_0x43f537){logger[_0x155c('0x13')](_0x155c('0x15'),_0x2bf577,_0x43f537);_0x228de5(_0x43f537);});});}exports[_0x155c('0x19')]=function(_0x105206){var _0x137342=this;return new Promise(function(_0x32134a,_0xe422f6){return db[_0x155c('0x1a')][_0x155c('0x1b')]({'raw':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x1d')]===undefined?!![]:![]:!![],'where':_0x105206['options']?_0x105206[_0x155c('0x1c')][_0x155c('0x1e')]||null:null,'attributes':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x1f')]||null:null,'limit':_0x105206[_0x155c('0x1c')]?_0x105206['options']['limit']||null:null,'include':_0x105206[_0x155c('0x1c')]?_0x105206[_0x155c('0x1c')][_0x155c('0x20')]?_[_0x155c('0x21')](_0x105206[_0x155c('0x1c')][_0x155c('0x20')],function(_0x452175){return{'model':db[_0x452175[_0x155c('0x22')]],'as':_0x452175['as'],'attributes':_0x452175[_0x155c('0x1f')],'include':_0x452175[_0x155c('0x20')]?_[_0x155c('0x21')](_0x452175[_0x155c('0x20')],function(_0xf4e683){return{'model':db[_0xf4e683[_0x155c('0x22')]],'as':_0xf4e683['as'],'attributes':_0xf4e683[_0x155c('0x1f')],'include':_0xf4e683[_0x155c('0x20')]?_['map'](_0xf4e683[_0x155c('0x20')],function(_0x5a2004){return{'model':db[_0x5a2004['model']],'as':_0x5a2004['as'],'attributes':_0x5a2004['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x43608a){logger[_0x155c('0xf')](_0x155c('0x19'),_0x105206);logger['debug'](_0x155c('0x19'),_0x105206,JSON[_0x155c('0x12')](_0x43608a));_0x32134a(_0x43608a);})[_0x155c('0x18')](function(_0x595d47){logger['error']('GetVoiceExtension',_0x595d47[_0x155c('0x16')],_0x105206);_0xe422f6(_0x137342[_0x155c('0x13')](0x1f4,_0x595d47['message']));});});};
\ No newline at end of file
index 8b33dc7..fa0c02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['length','voiceExtension:','./voiceExtension.events','save','remove','update','emit','removeListener'];(function(_0x3dcfb9,_0x368922){var _0x53968d=function(_0x48982d){while(--_0x48982d){_0x3dcfb9['push'](_0x3dcfb9['shift']());}};_0x53968d(++_0x368922);}(_0x53ec,0x192));var _0xc53e=function(_0x58675f,_0x390355){_0x58675f=_0x58675f-0x0;var _0x1cc7f0=_0x53ec[_0x58675f];return _0x1cc7f0;};'use strict';var VoiceExtensionEvents=require(_0xc53e('0x0'));var events=[_0xc53e('0x1'),_0xc53e('0x2'),_0xc53e('0x3')];function createListener(_0x1b04cc,_0xe45c6d){return function(_0x51c435){_0xe45c6d[_0xc53e('0x4')](_0x1b04cc,_0x51c435);};}function removeListener(_0x4e954a,_0x2b90f6){return function(){VoiceExtensionEvents[_0xc53e('0x5')](_0x4e954a,_0x2b90f6);};}exports['register']=function(_0x2f1414){for(var _0x4f989b=0x0,_0x41a9e8=events[_0xc53e('0x6')];_0x4f989b<_0x41a9e8;_0x4f989b++){var _0x5d3b28=events[_0x4f989b];var _0x1616ac=createListener(_0xc53e('0x7')+_0x5d3b28,_0x2f1414);VoiceExtensionEvents['on'](_0x5d3b28,_0x1616ac);}};
\ No newline at end of file
+var _0x0295=['emit','removeListener','register','voiceExtension:','./voiceExtension.events','update'];(function(_0x2290aa,_0x288e44){var _0x362ee8=function(_0x9db4f3){while(--_0x9db4f3){_0x2290aa['push'](_0x2290aa['shift']());}};_0x362ee8(++_0x288e44);}(_0x0295,0x1f0));var _0x5029=function(_0x3aeae6,_0x201d94){_0x3aeae6=_0x3aeae6-0x0;var _0xc3594=_0x0295[_0x3aeae6];return _0xc3594;};'use strict';var VoiceExtensionEvents=require(_0x5029('0x0'));var events=['save','remove',_0x5029('0x1')];function createListener(_0x4f552a,_0x53c2e1){return function(_0x315589){_0x53c2e1[_0x5029('0x2')](_0x4f552a,_0x315589);};}function removeListener(_0x157a4f,_0x3d0af1){return function(){VoiceExtensionEvents[_0x5029('0x3')](_0x157a4f,_0x3d0af1);};}exports[_0x5029('0x4')]=function(_0x200217){for(var _0x215955=0x0,_0x5b3cd=events['length'];_0x215955<_0x5b3cd;_0x215955++){var _0x54978f=events[_0x215955];var _0x4ee867=createListener(_0x5029('0x5')+_0x54978f,_0x200217);VoiceExtensionEvents['on'](_0x54978f,_0x4ee867);}};
\ No newline at end of file
index 13965ba..445426e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['/:id','show','post','put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index'];(function(_0x3367e4,_0x1334fe){var _0x1c6684=function(_0x28f078){while(--_0x28f078){_0x3367e4['push'](_0x3367e4['shift']());}};_0x1c6684(++_0x1334fe);}(_0x781d,0x14a));var _0xd781=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x781d[_0xbca1b1];return _0x4e1686;};'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/messages',auth[_0xd781('0xa')](),controller['getMessages']);router[_0xd781('0xe')]('/',auth[_0xd781('0xa')](),controller['create']);router[_0xd781('0xf')](_0xd781('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xd781('0x10')](_0xd781('0xc'),auth[_0xd781('0xa')](),controller[_0xd781('0x11')]);module[_0xd781('0x12')]=router;
\ No newline at end of file
+var _0xd117=['./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x105944,_0x7f391){var _0x315964=function(_0x2c2328){while(--_0x2c2328){_0x105944['push'](_0x105944['shift']());}};_0x315964(++_0x7f391);}(_0xd117,0x182));var _0x7d11=function(_0x30182f,_0x30ce41){_0x30182f=_0x30182f-0x0;var _0x5207db=_0xd117[_0x30182f];return _0x5207db;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')]('/',auth[_0x7d11('0xc')](),controller['create']);router[_0x7d11('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7d11('0x14')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module[_0x7d11('0x15')]=router;
\ No newline at end of file
index bc96100..ad88330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae0=['VIRTUAL','getDataValue','fullname','sequelize','exports','STRING','from-voicemail','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER'];(function(_0x234403,_0x412945){var _0x35ebcb=function(_0x1ba012){while(--_0x1ba012){_0x234403['push'](_0x234403['shift']());}};_0x35ebcb(++_0x412945);}(_0x1ae0,0x9c));var _0x01ae=function(_0x29ce17,_0x100ee2){_0x29ce17=_0x29ce17-0x0;var _0x51bf75=_0x1ae0[_0x29ce17];return _0x51bf75;};'use strict';var Sequelize=require(_0x01ae('0x0'));module[_0x01ae('0x1')]={'customer_id':{'type':Sequelize[_0x01ae('0x2')]},'context':{'type':Sequelize[_0x01ae('0x2')],'defaultValue':_0x01ae('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x01ae('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x01ae('0x2')]},'fullname':{'type':Sequelize[_0x01ae('0x2')]},'email':{'type':Sequelize[_0x01ae('0x2')],'validate':{'isEmail':!![]},'set':function(_0x224a98){this[_0x01ae('0x4')](_0x01ae('0x5'),typeof _0x224a98===_0x01ae('0x6')&&_0x224a98[_0x01ae('0x7')]()?_0x224a98['trim']():null);}},'pager':{'type':Sequelize[_0x01ae('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x01ae('0x8')},'attach':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':_0x01ae('0xa'),'allowNull':![]},'saycid':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':_0x01ae('0xa'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x01ae('0x2')]},'review':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x01ae('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x01ae('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':_0x01ae('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x01ae('0x9')](_0x01ae('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x01ae('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x01ae('0xc')},'emailsubject':{'type':Sequelize[_0x01ae('0x2')]},'emailbody':{'type':Sequelize[_0x01ae('0x2')]},'maxsecs':{'type':Sequelize[_0x01ae('0xd')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x01ae('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x01ae('0xe')],'get':function(){return this[_0x01ae('0xf')](_0x01ae('0x10'))+'\x20-\x20'+this[_0x01ae('0xf')]('mailbox');}}};
\ No newline at end of file
+var _0xffcf=['sequelize','STRING','contest_mailbox','setDataValue','email','string','ENUM','yes','TINYINT(4)','TIMESTAMP','VIRTUAL','getDataValue','mailbox'];(function(_0xa2e621,_0x35d1a5){var _0x376bcc=function(_0x353a15){while(--_0x353a15){_0xa2e621['push'](_0xa2e621['shift']());}};_0x376bcc(++_0x35d1a5);}(_0xffcf,0x8f));var _0xfffc=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0xffcf[_0xd39959];return _0x1ff69c;};'use strict';var Sequelize=require(_0xfffc('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xfffc('0x1')]},'context':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'from-voicemail','unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'','allowNull':![],'unique':_0xfffc('0x2')},'password':{'type':Sequelize[_0xfffc('0x1')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xfffc('0x1')],'validate':{'isEmail':!![]},'set':function(_0xd1cfc9){this[_0xfffc('0x3')](_0xfffc('0x4'),typeof _0xd1cfc9===_0xfffc('0x5')&&_0xd1cfc9['trim']()?_0xd1cfc9['trim']():null);}},'pager':{'type':Sequelize[_0xfffc('0x1')]},'tz':{'type':Sequelize[_0xfffc('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'saycid':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xfffc('0x1')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xfffc('0x8'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'forcename':{'type':Sequelize[_0xfffc('0x6')](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xfffc('0x7'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xfffc('0x7'),'no'),'defaultValue':_0xfffc('0x7'),'allowNull':![]},'stamp':{'type':_0xfffc('0x9')},'emailsubject':{'type':Sequelize[_0xfffc('0x1')]},'emailbody':{'type':Sequelize[_0xfffc('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xfffc('0xa')],'get':function(){return this[_0xfffc('0xb')]('fullname')+'\x20-\x20'+this['getDataValue'](_0xfffc('0xc'));}}};
\ No newline at end of file
index 3b20420..a9cffd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['UserProfileSection','userProfileId','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','destroy','then','get','Voicemails','error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x84a0,0x66));var _0x084a=function(_0x8ea622,_0x8a4da8){_0x8ea622=_0x8ea622-0x0;var _0x44521e=_0x84a0[_0x8ea622];return _0x44521e;};'use strict';var emlformat=require(_0x084a('0x0'));var rimraf=require(_0x084a('0x1'));var zipdir=require(_0x084a('0x2'));var jsonpatch=require(_0x084a('0x3'));var rp=require('request-promise');var moment=require(_0x084a('0x4'));var BPromise=require(_0x084a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x084a('0x6'));var sox=require(_0x084a('0x7'));var csv=require('to-csv');var ejs=require(_0x084a('0x8'));var fs=require('fs');var fs_extra=require(_0x084a('0x9'));var _=require(_0x084a('0xa'));var squel=require(_0x084a('0xb'));var crypto=require(_0x084a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x084a('0xd'));var toCsv=require(_0x084a('0xe'));var querystring=require(_0x084a('0xf'));var Papa=require(_0x084a('0x10'));var Redis=require(_0x084a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x084a('0x12'));var hardwareService=require(_0x084a('0x13'));var logger=require(_0x084a('0x14'))(_0x084a('0x15'));var utils=require(_0x084a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x084a('0x17'))['db'];function respondWithStatusCode(_0x3ca72f,_0xec90a5){_0xec90a5=_0xec90a5||0xcc;return function(_0x9245b1){if(_0x9245b1){return _0x3ca72f[_0x084a('0x18')](_0xec90a5);}return _0x3ca72f[_0x084a('0x19')](_0xec90a5)[_0x084a('0x1a')]();};}function respondWithResult(_0x3a76d1,_0x5aef40){_0x5aef40=_0x5aef40||0xc8;return function(_0x4277c9){if(_0x4277c9){return _0x3a76d1['status'](_0x5aef40)[_0x084a('0x1b')](_0x4277c9);}};}function respondWithFilteredResult(_0x3ccaca,_0x366624){return function(_0x2d35b8){if(_0x2d35b8){var _0xd20527=typeof _0x366624['offset']===_0x084a('0x1c')&&typeof _0x366624['limit']===_0x084a('0x1c');var _0x355b45=_0x2d35b8['count'];var _0xf2c333=_0xd20527?0x0:_0x366624[_0x084a('0x1d')];var _0x4134b9=_0xd20527?_0x2d35b8[_0x084a('0x1e')]:_0x366624[_0x084a('0x1d')]+_0x366624[_0x084a('0x1f')];var _0x447a19;if(_0x4134b9>=_0x355b45){_0x4134b9=_0x355b45;_0x447a19=0xc8;}else{_0x447a19=0xce;}_0x3ccaca[_0x084a('0x19')](_0x447a19);return _0x3ccaca[_0x084a('0x20')](_0x084a('0x21'),_0xf2c333+'-'+_0x4134b9+'/'+_0x355b45)[_0x084a('0x1b')](_0x2d35b8);}return null;};}function patchUpdates(_0x279e25){return function(_0x116328){try{jsonpatch[_0x084a('0x22')](_0x116328,_0x279e25,!![]);}catch(_0xf0dd98){return BPromise['reject'](_0xf0dd98);}return _0x116328[_0x084a('0x23')]();};}function saveUpdates(_0x1ad257,_0x41a90f){return function(_0x2d62bf){if(_0x2d62bf){return _0x2d62bf[_0x084a('0x24')](_0x1ad257)['then'](function(_0x755c24){return _0x755c24;});}return null;};}function removeEntity(_0x288e9e,_0x6346a5){return function(_0x1f2c9f){if(_0x1f2c9f){return _0x1f2c9f[_0x084a('0x25')]()[_0x084a('0x26')](function(){var _0x5be167=_0x1f2c9f[_0x084a('0x27')]({'plain':!![]});var _0x2af138=_0x084a('0x28');return db['UserProfileResource'][_0x084a('0x25')]({'where':{'type':_0x2af138,'resourceId':_0x5be167['id']}})[_0x084a('0x26')](function(){return _0x1f2c9f;});})[_0x084a('0x26')](function(){_0x288e9e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4874fe,_0x52227a){return function(_0x33b88f){if(!_0x33b88f){_0x4874fe['sendStatus'](0x194);}return _0x33b88f;};}function handleError(_0x5bea78,_0x51c9f4){_0x51c9f4=_0x51c9f4||0x1f4;return function(_0x3b8176){logger[_0x084a('0x29')](_0x3b8176[_0x084a('0x2a')]);if(_0x3b8176[_0x084a('0x2b')]){delete _0x3b8176[_0x084a('0x2b')];}_0x5bea78[_0x084a('0x19')](_0x51c9f4)[_0x084a('0x2c')](_0x3b8176);};}exports[_0x084a('0x2d')]=function(_0x5e6ea8,_0x2ed3cd){var _0x3b2b38={},_0x501a16={},_0xe1980b={'count':0x0,'rows':[]};var _0x24bcf5=_[_0x084a('0x2e')](db[_0x084a('0x2f')][_0x084a('0x30')],function(_0x202602){return{'name':_0x202602[_0x084a('0x31')],'type':_0x202602[_0x084a('0x32')][_0x084a('0x33')]};});_0x501a16[_0x084a('0x34')]=_[_0x084a('0x2e')](_0x24bcf5,_0x084a('0x2b'));_0x501a16[_0x084a('0x35')]=_['keys'](_0x5e6ea8['query']);_0x501a16[_0x084a('0x36')]=_[_0x084a('0x37')](_0x501a16[_0x084a('0x34')],_0x501a16[_0x084a('0x35')]);_0x3b2b38[_0x084a('0x38')]=_['intersection'](_0x501a16[_0x084a('0x34')],qs[_0x084a('0x39')](_0x5e6ea8[_0x084a('0x35')]['fields']));_0x3b2b38[_0x084a('0x38')]=_0x3b2b38[_0x084a('0x38')][_0x084a('0x3a')]?_0x3b2b38['attributes']:_0x501a16['model'];if(!_0x5e6ea8['query'][_0x084a('0x3b')](_0x084a('0x3c'))){_0x3b2b38[_0x084a('0x1f')]=qs['limit'](_0x5e6ea8[_0x084a('0x35')][_0x084a('0x1f')]);_0x3b2b38[_0x084a('0x1d')]=qs[_0x084a('0x1d')](_0x5e6ea8[_0x084a('0x35')][_0x084a('0x1d')]);}_0x3b2b38[_0x084a('0x3d')]=qs[_0x084a('0x3e')](_0x5e6ea8[_0x084a('0x35')][_0x084a('0x3e')]);_0x3b2b38[_0x084a('0x3f')]=qs[_0x084a('0x36')](_[_0x084a('0x40')](_0x5e6ea8[_0x084a('0x35')],_0x501a16[_0x084a('0x36')]),_0x24bcf5);if(_0x5e6ea8['query'][_0x084a('0x41')]){_0x3b2b38[_0x084a('0x3f')]=_[_0x084a('0x42')](_0x3b2b38[_0x084a('0x3f')],{'$or':_[_0x084a('0x2e')](_0x24bcf5,function(_0x22862b){if(_0x22862b[_0x084a('0x32')]!==_0x084a('0x43')){var _0x13dc4c={};_0x13dc4c[_0x22862b['name']]={'$like':'%'+_0x5e6ea8[_0x084a('0x35')][_0x084a('0x41')]+'%'};return _0x13dc4c;}})});}_0x3b2b38=_[_0x084a('0x42')]({},_0x3b2b38,_0x5e6ea8[_0x084a('0x44')]);var _0x256008={'where':_0x3b2b38[_0x084a('0x3f')]};return db['VoiceMail'][_0x084a('0x1e')](_0x256008)[_0x084a('0x26')](function(_0x55c5f4){_0xe1980b[_0x084a('0x1e')]=_0x55c5f4;if(_0x5e6ea8[_0x084a('0x35')][_0x084a('0x45')]){_0x3b2b38['include']=[{'all':!![]}];}return db[_0x084a('0x2f')][_0x084a('0x46')](_0x3b2b38);})['then'](function(_0x3e2b92){_0xe1980b[_0x084a('0x47')]=_0x3e2b92;return _0xe1980b;})['then'](respondWithFilteredResult(_0x2ed3cd,_0x3b2b38))['catch'](handleError(_0x2ed3cd,null));};exports[_0x084a('0x48')]=function(_0x17a8d4,_0x3726bd){var _0xec2713={'raw':!![],'where':{'id':_0x17a8d4[_0x084a('0x49')]['id']}},_0x1e2a2d={};_0x1e2a2d[_0x084a('0x34')]=_[_0x084a('0x4a')](db[_0x084a('0x2f')][_0x084a('0x30')]);_0x1e2a2d[_0x084a('0x35')]=_['keys'](_0x17a8d4['query']);_0x1e2a2d[_0x084a('0x36')]=_[_0x084a('0x37')](_0x1e2a2d[_0x084a('0x34')],_0x1e2a2d['query']);_0xec2713[_0x084a('0x38')]=_[_0x084a('0x37')](_0x1e2a2d[_0x084a('0x34')],qs[_0x084a('0x39')](_0x17a8d4[_0x084a('0x35')]['fields']));_0xec2713[_0x084a('0x38')]=_0xec2713['attributes'][_0x084a('0x3a')]?_0xec2713[_0x084a('0x38')]:_0x1e2a2d[_0x084a('0x34')];if(_0x17a8d4['query']['includeAll']){_0xec2713[_0x084a('0x4b')]=[{'all':!![]}];}_0xec2713=_[_0x084a('0x42')]({},_0xec2713,_0x17a8d4['options']);return db[_0x084a('0x2f')][_0x084a('0x4c')](_0xec2713)[_0x084a('0x26')](handleEntityNotFound(_0x3726bd,null))[_0x084a('0x26')](respondWithResult(_0x3726bd,null))['catch'](handleError(_0x3726bd,null));};exports[_0x084a('0x4d')]=function(_0x865368,_0x31677b){return db[_0x084a('0x2f')]['create'](_0x865368[_0x084a('0x4e')],{})[_0x084a('0x26')](function(_0x411fa9){var _0x2d3d01=_0x865368['user']['get']({'plain':!![]});if(!_0x2d3d01)throw new Error(_0x084a('0x4f'));if(_0x2d3d01[_0x084a('0x50')]===_0x084a('0x51')){var _0x264f09=_0x411fa9[_0x084a('0x27')]({'plain':!![]});var _0x3b2df4=_0x084a('0x28');return db[_0x084a('0x52')][_0x084a('0x4c')]({'where':{'name':_0x3b2df4,'userProfileId':_0x2d3d01[_0x084a('0x53')]},'raw':!![]})[_0x084a('0x26')](function(_0x98769c){if(_0x98769c&&_0x98769c['autoAssociation']===0x0){return db[_0x084a('0x54')][_0x084a('0x4d')]({'name':_0x264f09[_0x084a('0x2b')],'resourceId':_0x264f09['id'],'type':_0x98769c[_0x084a('0x2b')],'sectionId':_0x98769c['id']},{})[_0x084a('0x26')](function(){return _0x411fa9;});}else{return _0x411fa9;}})[_0x084a('0x55')](function(_0xa5362){logger['error'](_0x084a('0x56'),_0xa5362);throw _0xa5362;});}return _0x411fa9;})[_0x084a('0x26')](respondWithResult(_0x31677b,0xc9))[_0x084a('0x55')](handleError(_0x31677b,null));};exports['update']=function(_0x54ca1f,_0x424cd1){if(_0x54ca1f['body']['id']){delete _0x54ca1f[_0x084a('0x4e')]['id'];}return db[_0x084a('0x2f')]['find']({'where':{'id':_0x54ca1f[_0x084a('0x49')]['id']}})['then'](handleEntityNotFound(_0x424cd1,null))['then'](saveUpdates(_0x54ca1f[_0x084a('0x4e')],null))[_0x084a('0x26')](respondWithResult(_0x424cd1,null))[_0x084a('0x55')](handleError(_0x424cd1,null));};exports[_0x084a('0x25')]=function(_0x2a8056,_0x57d397){return db[_0x084a('0x2f')]['find']({'where':{'id':_0x2a8056[_0x084a('0x49')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x57d397,null))[_0x084a('0x26')](removeEntity(_0x57d397,null))['catch'](handleError(_0x57d397,null));};exports[_0x084a('0x57')]=function(_0x339088,_0x12db87,_0x9246dd){return db['VoiceMail'][_0x084a('0x58')]({'where':{'id':_0x339088['params']['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x12db87,null))[_0x084a('0x26')](function(_0x21a18a){var _0x4cc344;var _0x589e38={},_0xd37003={};_0xd37003[_0x084a('0x34')]=_['keys'](db[_0x084a('0x59')]['rawAttributes']);_0xd37003['query']=_[_0x084a('0x4a')](_0x339088[_0x084a('0x35')]);_0xd37003[_0x084a('0x36')]=_[_0x084a('0x37')](_0xd37003[_0x084a('0x34')],_0xd37003[_0x084a('0x35')]);_0x589e38[_0x084a('0x38')]=_[_0x084a('0x37')](_0xd37003[_0x084a('0x34')],qs['fields'](_0x339088[_0x084a('0x35')][_0x084a('0x39')]));_0x589e38[_0x084a('0x38')]=_0x589e38['attributes'][_0x084a('0x3a')]?_0x589e38[_0x084a('0x38')]:_0xd37003['model'];if(!_0x339088[_0x084a('0x35')]['hasOwnProperty']('nolimit')){_0x589e38[_0x084a('0x1f')]=qs['limit'](_0x339088['query'][_0x084a('0x1f')]);_0x589e38[_0x084a('0x1d')]=qs[_0x084a('0x1d')](_0x339088['query'][_0x084a('0x1d')]);}_0x589e38[_0x084a('0x3d')]=qs[_0x084a('0x3e')](_0x339088[_0x084a('0x35')][_0x084a('0x3e')]);_0x589e38[_0x084a('0x3f')]=qs[_0x084a('0x36')](_['pick'](_0x339088['query'],_0xd37003[_0x084a('0x36')]));if(_0x339088[_0x084a('0x35')]['filter']){_0x589e38[_0x084a('0x3f')]=_[_0x084a('0x42')](_0x589e38[_0x084a('0x3f')],{'$or':_[_0x084a('0x2e')](_0x589e38['attributes'],function(_0x21dd85){var _0x3fa52e={};_0x3fa52e[_0x21dd85]={'$like':'%'+_0x339088[_0x084a('0x35')]['filter']+'%'};return _0x3fa52e;})});}_0x589e38['where']=_[_0x084a('0x42')](_0x589e38[_0x084a('0x3f')],{'mailboxuser':_0x21a18a[_0x084a('0x5a')]});_0x589e38=_[_0x084a('0x42')]({},_0x589e38,_0x339088[_0x084a('0x44')]);return db[_0x084a('0x59')][_0x084a('0x5b')](_0x589e38)['then'](respondWithFilteredResult(_0x12db87,_0x589e38));})[_0x084a('0x55')](handleError(_0x12db87,null));};
\ No newline at end of file
+var _0xb9be=['filter','options','include','findAll','rows','catch','show','rawAttributes','length','includeAll','create','body','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','end','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','name','index','VoiceMail','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xb9be,0xc5));var _0xeb9b=function(_0x503950,_0x5022eb){_0x503950=_0x503950-0x0;var _0x1657a9=_0xb9be[_0x503950];return _0x1657a9;};'use strict';var emlformat=require(_0xeb9b('0x0'));var rimraf=require(_0xeb9b('0x1'));var zipdir=require(_0xeb9b('0x2'));var jsonpatch=require(_0xeb9b('0x3'));var rp=require(_0xeb9b('0x4'));var moment=require(_0xeb9b('0x5'));var BPromise=require(_0xeb9b('0x6'));var Mustache=require(_0xeb9b('0x7'));var util=require(_0xeb9b('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xeb9b('0x9'));var ejs=require(_0xeb9b('0xa'));var fs=require('fs');var fs_extra=require(_0xeb9b('0xb'));var _=require('lodash');var squel=require(_0xeb9b('0xc'));var crypto=require(_0xeb9b('0xd'));var jsforce=require(_0xeb9b('0xe'));var deskjs=require(_0xeb9b('0xf'));var toCsv=require(_0xeb9b('0x9'));var querystring=require(_0xeb9b('0x10'));var Papa=require(_0xeb9b('0x11'));var Redis=require(_0xeb9b('0x12'));var authService=require(_0xeb9b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xeb9b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xeb9b('0x15'));var utils=require(_0xeb9b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xeb9b('0x17'));var db=require(_0xeb9b('0x18'))['db'];function respondWithStatusCode(_0x3df18a,_0x2a01df){_0x2a01df=_0x2a01df||0xcc;return function(_0x51598f){if(_0x51598f){return _0x3df18a['sendStatus'](_0x2a01df);}return _0x3df18a['status'](_0x2a01df)[_0xeb9b('0x19')]();};}function respondWithResult(_0x1ef03f,_0x2674e6){_0x2674e6=_0x2674e6||0xc8;return function(_0x4ec46d){if(_0x4ec46d){return _0x1ef03f['status'](_0x2674e6)['json'](_0x4ec46d);}};}function respondWithFilteredResult(_0x32538b,_0x1a5f27){return function(_0x406afd){if(_0x406afd){var _0x3fa308=typeof _0x1a5f27[_0xeb9b('0x1a')]===_0xeb9b('0x1b')&&typeof _0x1a5f27[_0xeb9b('0x1c')]==='undefined';var _0x2e8645=_0x406afd[_0xeb9b('0x1d')];var _0x21aca6=_0x3fa308?0x0:_0x1a5f27[_0xeb9b('0x1a')];var _0x3cbe3e=_0x3fa308?_0x406afd[_0xeb9b('0x1d')]:_0x1a5f27[_0xeb9b('0x1a')]+_0x1a5f27[_0xeb9b('0x1c')];var _0x2c199f;if(_0x3cbe3e>=_0x2e8645){_0x3cbe3e=_0x2e8645;_0x2c199f=0xc8;}else{_0x2c199f=0xce;}_0x32538b[_0xeb9b('0x1e')](_0x2c199f);return _0x32538b['set'](_0xeb9b('0x1f'),_0x21aca6+'-'+_0x3cbe3e+'/'+_0x2e8645)['json'](_0x406afd);}return null;};}function patchUpdates(_0x5d5f54){return function(_0x580498){try{jsonpatch[_0xeb9b('0x20')](_0x580498,_0x5d5f54,!![]);}catch(_0x4ab4b8){return BPromise[_0xeb9b('0x21')](_0x4ab4b8);}return _0x580498[_0xeb9b('0x22')]();};}function saveUpdates(_0x37935c,_0x37d7e0){return function(_0x3c8be7){if(_0x3c8be7){return _0x3c8be7[_0xeb9b('0x23')](_0x37935c)[_0xeb9b('0x24')](function(_0x15e5b8){return _0x15e5b8;});}return null;};}function removeEntity(_0x142d1c,_0x46df93){return function(_0x61c86d){if(_0x61c86d){return _0x61c86d[_0xeb9b('0x25')]()[_0xeb9b('0x24')](function(){var _0xe6d3e1=_0x61c86d[_0xeb9b('0x26')]({'plain':!![]});var _0x434461='Voicemails';return db[_0xeb9b('0x27')]['destroy']({'where':{'type':_0x434461,'resourceId':_0xe6d3e1['id']}})[_0xeb9b('0x24')](function(){return _0x61c86d;});})['then'](function(){_0x142d1c[_0xeb9b('0x1e')](0xcc)[_0xeb9b('0x19')]();});}};}function handleEntityNotFound(_0x7e0134,_0xe3eda5){return function(_0x52f6c1){if(!_0x52f6c1){_0x7e0134[_0xeb9b('0x28')](0x194);}return _0x52f6c1;};}function handleError(_0x42fe78,_0x54ab67){_0x54ab67=_0x54ab67||0x1f4;return function(_0x35ff07){logger[_0xeb9b('0x29')](_0x35ff07['stack']);if(_0x35ff07[_0xeb9b('0x2a')]){delete _0x35ff07[_0xeb9b('0x2a')];}_0x42fe78[_0xeb9b('0x1e')](_0x54ab67)['send'](_0x35ff07);};}exports[_0xeb9b('0x2b')]=function(_0x5336f2,_0x6bb66){var _0x4c1331={},_0x411467={},_0x54c659={'count':0x0,'rows':[]};var _0x27578d=_['map'](db[_0xeb9b('0x2c')]['rawAttributes'],function(_0x25b8da){return{'name':_0x25b8da[_0xeb9b('0x2d')],'type':_0x25b8da[_0xeb9b('0x2e')][_0xeb9b('0x2f')]};});_0x411467[_0xeb9b('0x30')]=_[_0xeb9b('0x31')](_0x27578d,_0xeb9b('0x2a'));_0x411467[_0xeb9b('0x32')]=_[_0xeb9b('0x33')](_0x5336f2[_0xeb9b('0x32')]);_0x411467['filters']=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],_0x411467[_0xeb9b('0x32')]);_0x4c1331[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x5336f2['query'][_0xeb9b('0x36')]));_0x4c1331[_0xeb9b('0x35')]=_0x4c1331[_0xeb9b('0x35')]['length']?_0x4c1331[_0xeb9b('0x35')]:_0x411467[_0xeb9b('0x30')];if(!_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4c1331[_0xeb9b('0x1c')]=qs['limit'](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1c')]);_0x4c1331['offset']=qs[_0xeb9b('0x1a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1a')]);}_0x4c1331[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x3a')]);_0x4c1331['where']=qs[_0xeb9b('0x3b')](_[_0xeb9b('0x3c')](_0x5336f2[_0xeb9b('0x32')],_0x411467['filters']),_0x27578d);if(_0x5336f2['query']['filter']){_0x4c1331[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4c1331[_0xeb9b('0x3d')],{'$or':_['map'](_0x27578d,function(_0x409ce6){if(_0x409ce6[_0xeb9b('0x2e')]!==_0xeb9b('0x3f')){var _0x20da52={};_0x20da52[_0x409ce6[_0xeb9b('0x2a')]]={'$like':'%'+_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x20da52;}})});}_0x4c1331=_['merge']({},_0x4c1331,_0x5336f2[_0xeb9b('0x41')]);var _0x3ccf45={'where':_0x4c1331[_0xeb9b('0x3d')]};return db['VoiceMail']['count'](_0x3ccf45)[_0xeb9b('0x24')](function(_0x110122){_0x54c659['count']=_0x110122;if(_0x5336f2[_0xeb9b('0x32')]['includeAll']){_0x4c1331[_0xeb9b('0x42')]=[{'all':!![]}];}return db[_0xeb9b('0x2c')][_0xeb9b('0x43')](_0x4c1331);})[_0xeb9b('0x24')](function(_0xbee63e){_0x54c659[_0xeb9b('0x44')]=_0xbee63e;return _0x54c659;})[_0xeb9b('0x24')](respondWithFilteredResult(_0x6bb66,_0x4c1331))[_0xeb9b('0x45')](handleError(_0x6bb66,null));};exports[_0xeb9b('0x46')]=function(_0x311e7d,_0x21bcf1){var _0x761d18={'raw':!![],'where':{'id':_0x311e7d['params']['id']}},_0x5e270a={};_0x5e270a[_0xeb9b('0x30')]=_['keys'](db[_0xeb9b('0x2c')][_0xeb9b('0x47')]);_0x5e270a[_0xeb9b('0x32')]=_['keys'](_0x311e7d[_0xeb9b('0x32')]);_0x5e270a[_0xeb9b('0x3b')]=_['intersection'](_0x5e270a[_0xeb9b('0x30')],_0x5e270a[_0xeb9b('0x32')]);_0x761d18[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x5e270a[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x761d18['attributes']=_0x761d18['attributes'][_0xeb9b('0x48')]?_0x761d18['attributes']:_0x5e270a['model'];if(_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x49')]){_0x761d18[_0xeb9b('0x42')]=[{'all':!![]}];}_0x761d18=_[_0xeb9b('0x3e')]({},_0x761d18,_0x311e7d[_0xeb9b('0x41')]);return db[_0xeb9b('0x2c')]['find'](_0x761d18)['then'](handleEntityNotFound(_0x21bcf1,null))['then'](respondWithResult(_0x21bcf1,null))[_0xeb9b('0x45')](handleError(_0x21bcf1,null));};exports['create']=function(_0x4901b0,_0x2ee59c){return db[_0xeb9b('0x2c')][_0xeb9b('0x4a')](_0x4901b0[_0xeb9b('0x4b')],{})[_0xeb9b('0x24')](function(_0x202ef3){var _0x1a2189=_0x4901b0[_0xeb9b('0x4c')][_0xeb9b('0x26')]({'plain':!![]});if(!_0x1a2189)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a2189['role']===_0xeb9b('0x4c')){var _0x21c93a=_0x202ef3['get']({'plain':!![]});var _0x19bfe9='Voicemails';return db[_0xeb9b('0x4d')][_0xeb9b('0x4e')]({'where':{'name':_0x19bfe9,'userProfileId':_0x1a2189['userProfileId']},'raw':!![]})['then'](function(_0x530c1c){if(_0x530c1c&&_0x530c1c[_0xeb9b('0x4f')]===0x0){return db[_0xeb9b('0x27')][_0xeb9b('0x4a')]({'name':_0x21c93a['name'],'resourceId':_0x21c93a['id'],'type':_0x530c1c['name'],'sectionId':_0x530c1c['id']},{})[_0xeb9b('0x24')](function(){return _0x202ef3;});}else{return _0x202ef3;}})[_0xeb9b('0x45')](function(_0x3e6e73){logger[_0xeb9b('0x29')](_0xeb9b('0x50'),_0x3e6e73);throw _0x3e6e73;});}return _0x202ef3;})[_0xeb9b('0x24')](respondWithResult(_0x2ee59c,0xc9))['catch'](handleError(_0x2ee59c,null));};exports[_0xeb9b('0x23')]=function(_0x1fab7a,_0x47e84a){if(_0x1fab7a[_0xeb9b('0x4b')]['id']){delete _0x1fab7a['body']['id'];}return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x1fab7a['params']['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x47e84a,null))['then'](saveUpdates(_0x1fab7a[_0xeb9b('0x4b')],null))[_0xeb9b('0x24')](respondWithResult(_0x47e84a,null))[_0xeb9b('0x45')](handleError(_0x47e84a,null));};exports[_0xeb9b('0x25')]=function(_0x5c769e,_0x5a641a){return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x5c769e[_0xeb9b('0x51')]['id']}})['then'](handleEntityNotFound(_0x5a641a,null))[_0xeb9b('0x24')](removeEntity(_0x5a641a,null))[_0xeb9b('0x45')](handleError(_0x5a641a,null));};exports[_0xeb9b('0x52')]=function(_0x24444e,_0x2d0ba9,_0x114132){return db[_0xeb9b('0x2c')][_0xeb9b('0x53')]({'where':{'id':_0x24444e[_0xeb9b('0x51')]['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x2d0ba9,null))[_0xeb9b('0x24')](function(_0x58e550){var _0x5531a4;var _0x4b2506={},_0x83d48a={};_0x83d48a['model']=_[_0xeb9b('0x33')](db[_0xeb9b('0x54')][_0xeb9b('0x47')]);_0x83d48a['query']=_[_0xeb9b('0x33')](_0x24444e[_0xeb9b('0x32')]);_0x83d48a[_0xeb9b('0x3b')]=_[_0xeb9b('0x34')](_0x83d48a[_0xeb9b('0x30')],_0x83d48a[_0xeb9b('0x32')]);_0x4b2506[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x83d48a['model'],qs['fields'](_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x4b2506[_0xeb9b('0x35')]=_0x4b2506['attributes'][_0xeb9b('0x48')]?_0x4b2506['attributes']:_0x83d48a[_0xeb9b('0x30')];if(!_0x24444e['query'][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4b2506[_0xeb9b('0x1c')]=qs[_0xeb9b('0x1c')](_0x24444e[_0xeb9b('0x32')]['limit']);_0x4b2506[_0xeb9b('0x1a')]=qs[_0xeb9b('0x1a')](_0x24444e['query']['offset']);}_0x4b2506[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x24444e['query'][_0xeb9b('0x3a')]);_0x4b2506['where']=qs[_0xeb9b('0x3b')](_['pick'](_0x24444e[_0xeb9b('0x32')],_0x83d48a[_0xeb9b('0x3b')]));if(_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]){_0x4b2506[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4b2506['where'],{'$or':_[_0xeb9b('0x31')](_0x4b2506[_0xeb9b('0x35')],function(_0x5b670b){var _0x1acf82={};_0x1acf82[_0x5b670b]={'$like':'%'+_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x1acf82;})});}_0x4b2506[_0xeb9b('0x3d')]=_['merge'](_0x4b2506[_0xeb9b('0x3d')],{'mailboxuser':_0x58e550[_0xeb9b('0x55')]});_0x4b2506=_['merge']({},_0x4b2506,_0x24444e[_0xeb9b('0x41')]);return db[_0xeb9b('0x54')][_0xeb9b('0x56')](_0x4b2506)[_0xeb9b('0x24')](respondWithFilteredResult(_0x2d0ba9,_0x4b2506));})[_0xeb9b('0x45')](handleError(_0x2d0ba9,null));};
\ No newline at end of file
index 4d88296..6e546bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f38=['bluebird','path','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','mailbox_context','context','lodash','api','moment'];(function(_0x2aefda,_0x2ffebd){var _0x881531=function(_0x415363){while(--_0x415363){_0x2aefda['push'](_0x2aefda['shift']());}};_0x881531(++_0x2ffebd);}(_0x5f38,0x17d));var _0x85f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f38[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x85f3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x85f3('0x1'));var moment=require(_0x85f3('0x2'));var BPromise=require(_0x85f3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85f3('0x4'));var rimraf=require('rimraf');var config=require(_0x85f3('0x5'));var attributes=require(_0x85f3('0x6'));module[_0x85f3('0x7')]=function(_0x1c1553,_0x48026f){return _0x1c1553[_0x85f3('0x8')](_0x85f3('0x9'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x85f3('0xa'),'fields':['mailbox',_0x85f3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5acd=['mailbox','context','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','mailbox_context'];(function(_0x473b41,_0x1c320f){var _0x4e521d=function(_0x19a745){while(--_0x19a745){_0x473b41['push'](_0x473b41['shift']());}};_0x4e521d(++_0x1c320f);}(_0x5acd,0x154));var _0xd5ac=function(_0x4d7431,_0x148aa9){_0x4d7431=_0x4d7431-0x0;var _0x38b6e9=_0x5acd[_0x4d7431];return _0x38b6e9;};'use strict';var _=require('lodash');var util=require(_0xd5ac('0x0'));var logger=require(_0xd5ac('0x1'))(_0xd5ac('0x2'));var moment=require('moment');var BPromise=require(_0xd5ac('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd5ac('0x4'));var config=require(_0xd5ac('0x5'));var attributes=require(_0xd5ac('0x6'));module[_0xd5ac('0x7')]=function(_0x5f2c5c,_0x26d132){return _0x5f2c5c[_0xd5ac('0x8')]('VoiceMail',attributes,{'tableName':_0xd5ac('0x9'),'paranoid':![],'indexes':[{'name':_0xd5ac('0xa'),'fields':[_0xd5ac('0xb'),_0xd5ac('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a900d3a..4653cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b0=['VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','then'];(function(_0x5165e3,_0x1634da){var _0x563e02=function(_0x19f767){while(--_0x19f767){_0x5165e3['push'](_0x5165e3['shift']());}};_0x563e02(++_0x1634da);}(_0xc9b0,0x9e));var _0x0c9b=function(_0x45138c,_0x1683ae){_0x45138c=_0x45138c-0x0;var _0x100f93=_0xc9b0[_0x45138c];return _0x100f93;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0c9b('0x0'));var BPromise=require(_0x0c9b('0x1'));var rs=require(_0x0c9b('0x2'));var fs=require('fs');var Redis=require(_0x0c9b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0c9b('0x4'))(_0x0c9b('0x5'));var config=require(_0x0c9b('0x6'));var jayson=require(_0x0c9b('0x7'));var client=jayson[_0x0c9b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21c10a,_0x25b3c3,_0x22666c){return new BPromise(function(_0x2f6936,_0x4a2943){return client['request'](_0x21c10a,_0x22666c)[_0x0c9b('0x9')](function(_0x44c1cc){logger['info'](_0x0c9b('0xa'),_0x25b3c3,_0x0c9b('0xb'));logger[_0x0c9b('0xc')](_0x0c9b('0xd'),_0x25b3c3,_0x0c9b('0xb'),JSON[_0x0c9b('0xe')](_0x44c1cc));if(_0x44c1cc[_0x0c9b('0xf')]){if(_0x44c1cc[_0x0c9b('0xf')][_0x0c9b('0x10')]===0x1f4){logger[_0x0c9b('0xf')](_0x0c9b('0xa'),_0x25b3c3,_0x44c1cc[_0x0c9b('0xf')][_0x0c9b('0x11')]);return _0x4a2943(_0x44c1cc[_0x0c9b('0xf')]['message']);}logger[_0x0c9b('0xf')](_0x0c9b('0xa'),_0x25b3c3,_0x44c1cc[_0x0c9b('0xf')]['message']);return _0x2f6936(_0x44c1cc[_0x0c9b('0xf')][_0x0c9b('0x11')]);}else{logger[_0x0c9b('0x12')](_0x0c9b('0xa'),_0x25b3c3,_0x0c9b('0xb'));_0x2f6936(_0x44c1cc[_0x0c9b('0x13')][_0x0c9b('0x11')]);}})[_0x0c9b('0x14')](function(_0x1ab649){logger['error']('VoiceMail,\x20%s,\x20%s',_0x25b3c3,_0x1ab649);_0x4a2943(_0x1ab649);});});}
\ No newline at end of file
+var _0xbd09=['jayson/promise','client','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3b29cc,_0x428036){var _0x5ed34b=function(_0x1df4e4){while(--_0x1df4e4){_0x3b29cc['push'](_0x3b29cc['shift']());}};_0x5ed34b(++_0x428036);}(_0xbd09,0x124));var _0x9bd0=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xbd09[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x9bd0('0x0'));var util=require(_0x9bd0('0x1'));var moment=require(_0x9bd0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bd0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9bd0('0x4'));var logger=require(_0x9bd0('0x5'))(_0x9bd0('0x6'));var config=require(_0x9bd0('0x7'));var jayson=require(_0x9bd0('0x8'));var client=jayson[_0x9bd0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ecbb7,_0x1aafa2,_0x2bbc8){return new BPromise(function(_0x4df289,_0x3bd762){return client[_0x9bd0('0xa')](_0x1ecbb7,_0x2bbc8)[_0x9bd0('0xb')](function(_0x861a7a){logger[_0x9bd0('0xc')](_0x9bd0('0xd'),_0x1aafa2,_0x9bd0('0xe'));logger[_0x9bd0('0xf')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x1aafa2,_0x9bd0('0xe'),JSON['stringify'](_0x861a7a));if(_0x861a7a[_0x9bd0('0x10')]){if(_0x861a7a['error'][_0x9bd0('0x11')]===0x1f4){logger[_0x9bd0('0x10')](_0x9bd0('0xd'),_0x1aafa2,_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);return _0x3bd762(_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);}logger[_0x9bd0('0x10')](_0x9bd0('0xd'),_0x1aafa2,_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);return _0x4df289(_0x861a7a[_0x9bd0('0x10')][_0x9bd0('0x12')]);}else{logger[_0x9bd0('0xc')](_0x9bd0('0xd'),_0x1aafa2,_0x9bd0('0xe'));_0x4df289(_0x861a7a[_0x9bd0('0x13')][_0x9bd0('0x12')]);}})['catch'](function(_0x737f7a){logger['error'](_0x9bd0('0xd'),_0x1aafa2,_0x737f7a);_0x3bd762(_0x737f7a);});});}
\ No newline at end of file
index 6638154..0cec070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e05=['update','delete','exports','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','show','/:id/download','download','post','put','/:id'];(function(_0xd38f1a,_0x470d19){var _0x1f1eac=function(_0x4786c5){while(--_0x4786c5){_0xd38f1a['push'](_0xd38f1a['shift']());}};_0x1f1eac(++_0x470d19);}(_0x7e05,0x81));var _0x57e0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7e05[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x57e0('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x57e0('0x1'));var auth=require(_0x57e0('0x2'));var interaction=require(_0x57e0('0x3'));var config=require(_0x57e0('0x4'));var controller=require(_0x57e0('0x5'));router[_0x57e0('0x6')]('/',auth[_0x57e0('0x7')](),controller[_0x57e0('0x8')]);router[_0x57e0('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x57e0('0x9')]);router[_0x57e0('0x6')](_0x57e0('0xa'),auth[_0x57e0('0x7')](),controller[_0x57e0('0xb')]);router[_0x57e0('0xc')]('/',auth[_0x57e0('0x7')](),controller['create']);router[_0x57e0('0xd')](_0x57e0('0xe'),auth[_0x57e0('0x7')](),controller[_0x57e0('0xf')]);router[_0x57e0('0x10')](_0x57e0('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x57e0('0x11')]=router;
\ No newline at end of file
+var _0xca8f=['exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy'];(function(_0x547456,_0x1de17e){var _0xc1fd7b=function(_0x12be35){while(--_0x12be35){_0x547456['push'](_0x547456['shift']());}};_0xc1fd7b(++_0x1de17e);}(_0xca8f,0x155));var _0xfca8=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xca8f[_0x3511d3];return _0x5d6321;};'use strict';var multer=require(_0xfca8('0x0'));var util=require('util');var path=require(_0xfca8('0x1'));var timeout=require(_0xfca8('0x2'));var express=require(_0xfca8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfca8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xfca8('0x5'));var controller=require(_0xfca8('0x6'));router[_0xfca8('0x7')]('/',auth[_0xfca8('0x8')](),controller[_0xfca8('0x9')]);router[_0xfca8('0x7')](_0xfca8('0xa'),auth[_0xfca8('0x8')](),controller[_0xfca8('0xb')]);router['get'](_0xfca8('0xc'),auth[_0xfca8('0x8')](),controller[_0xfca8('0xd')]);router[_0xfca8('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfca8('0xf')](_0xfca8('0xa'),auth[_0xfca8('0x8')](),controller[_0xfca8('0x10')]);router[_0xfca8('0x11')](_0xfca8('0xa'),auth['isAuthenticated'](),controller[_0xfca8('0x12')]);module[_0xfca8('0x13')]=router;
\ No newline at end of file
index c1b1b51..4f0ecbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b7d=['STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL','getDataValue','INTEGER'];(function(_0x483eae,_0x525171){var _0xeccbeb=function(_0x314e4d){while(--_0x314e4d){_0x483eae['push'](_0x483eae['shift']());}};_0xeccbeb(++_0x525171);}(_0x2b7d,0x12e));var _0xd2b7=function(_0xcb2ad0,_0x490837){_0xcb2ad0=_0xcb2ad0-0x0;var _0x34750b=_0x2b7d[_0xcb2ad0];return _0x34750b;};'use strict';var Sequelize=require(_0xd2b7('0x0'));module['exports']={'name':{'type':Sequelize[_0xd2b7('0x1')],'get':function(_0x4301ce){return this[_0xd2b7('0x2')]('id');}},'msgnum':{'type':Sequelize[_0xd2b7('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xd2b7('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xd2b7('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xd2b7('0x6'),'defaultValue':Sequelize[_0xd2b7('0x7')](_0xd2b7('0x8'))}};
\ No newline at end of file
+var _0xa97f=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','getDataValue','STRING','long','TIMESTAMP','literal'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa97f,0x67));var _0xfa97=function(_0x4d38cb,_0x28c8b7){_0x4d38cb=_0x4d38cb-0x0;var _0x58c2e9=_0xa97f[_0x4d38cb];return _0x58c2e9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x41b7dc){return this[_0xfa97('0x0')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'context':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'callerid':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'origtime':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xfa97('0x1')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xfa97('0x2')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xfa97('0x3'),'defaultValue':Sequelize[_0xfa97('0x4')](_0xfa97('0x5'))}};
\ No newline at end of file
index c69c2c9..0b96c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3821=['../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','VoiceMailMessage','rawAttributes','fieldName','type','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','params','includeAll','find','create','body','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils'];(function(_0x597009,_0x3dc203){var _0xbd16d9=function(_0x425d8d){while(--_0x425d8d){_0x597009['push'](_0x597009['shift']());}};_0xbd16d9(++_0x3dc203);}(_0x3821,0x187));var _0x1382=function(_0x113dc0,_0x4c14c7){_0x113dc0=_0x113dc0-0x0;var _0x40367a=_0x3821[_0x113dc0];return _0x40367a;};'use strict';var emlformat=require(_0x1382('0x0'));var rimraf=require(_0x1382('0x1'));var zipdir=require(_0x1382('0x2'));var jsonpatch=require(_0x1382('0x3'));var rp=require(_0x1382('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1382('0x5'));var path=require(_0x1382('0x6'));var sox=require(_0x1382('0x7'));var csv=require('to-csv');var ejs=require(_0x1382('0x8'));var fs=require('fs');var fs_extra=require(_0x1382('0x9'));var _=require(_0x1382('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1382('0xb'));var deskjs=require(_0x1382('0xc'));var toCsv=require(_0x1382('0xd'));var querystring=require('querystring');var Papa=require(_0x1382('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1382('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1382('0x10'))(_0x1382('0x11'));var utils=require(_0x1382('0x12'));var config=require(_0x1382('0x13'));var licenseUtil=require(_0x1382('0x14'));var db=require(_0x1382('0x15'))['db'];function respondWithStatusCode(_0x58460a,_0x5232db){_0x5232db=_0x5232db||0xcc;return function(_0x5d59da){if(_0x5d59da){return _0x58460a['sendStatus'](_0x5232db);}return _0x58460a[_0x1382('0x16')](_0x5232db)[_0x1382('0x17')]();};}function respondWithResult(_0x455ac3,_0x35672c){_0x35672c=_0x35672c||0xc8;return function(_0x736972){if(_0x736972){return _0x455ac3[_0x1382('0x16')](_0x35672c)['json'](_0x736972);}};}function respondWithFilteredResult(_0x2997ca,_0x5b0f54){return function(_0xe89abe){if(_0xe89abe){var _0x31e541=typeof _0x5b0f54['offset']===_0x1382('0x18')&&typeof _0x5b0f54[_0x1382('0x19')]===_0x1382('0x18');var _0x18f939=_0xe89abe[_0x1382('0x1a')];var _0x5642b4=_0x31e541?0x0:_0x5b0f54['offset'];var _0x1b7603=_0x31e541?_0xe89abe[_0x1382('0x1a')]:_0x5b0f54[_0x1382('0x1b')]+_0x5b0f54[_0x1382('0x19')];var _0x29ef73;if(_0x1b7603>=_0x18f939){_0x1b7603=_0x18f939;_0x29ef73=0xc8;}else{_0x29ef73=0xce;}_0x2997ca[_0x1382('0x16')](_0x29ef73);return _0x2997ca[_0x1382('0x1c')]('Content-Range',_0x5642b4+'-'+_0x1b7603+'/'+_0x18f939)['json'](_0xe89abe);}return null;};}function patchUpdates(_0xf4fd77){return function(_0xc7f30a){try{jsonpatch[_0x1382('0x1d')](_0xc7f30a,_0xf4fd77,!![]);}catch(_0x9ed34a){return BPromise[_0x1382('0x1e')](_0x9ed34a);}return _0xc7f30a[_0x1382('0x1f')]();};}function saveUpdates(_0x2152b6,_0x729721){return function(_0x5182d5){if(_0x5182d5){return _0x5182d5[_0x1382('0x20')](_0x2152b6)[_0x1382('0x21')](function(_0x25e2a6){return _0x25e2a6;});}return null;};}function removeEntity(_0x458fbe,_0x33d04b){return function(_0x157f97){if(_0x157f97){return _0x157f97[_0x1382('0x22')]()[_0x1382('0x21')](function(){_0x458fbe[_0x1382('0x16')](0xcc)[_0x1382('0x17')]();});}};}function handleEntityNotFound(_0x311b00,_0x1c4432){return function(_0x1fbdb3){if(!_0x1fbdb3){_0x311b00[_0x1382('0x23')](0x194);}return _0x1fbdb3;};}function handleError(_0x47136e,_0x18c9f4){_0x18c9f4=_0x18c9f4||0x1f4;return function(_0x1a959e){logger[_0x1382('0x24')](_0x1a959e[_0x1382('0x25')]);if(_0x1a959e['name']){delete _0x1a959e[_0x1382('0x26')];}_0x47136e[_0x1382('0x16')](_0x18c9f4)[_0x1382('0x27')](_0x1a959e);};}exports['index']=function(_0x116ff8,_0x319785){var _0x228079={},_0x594e2f={},_0x16b758={'count':0x0,'rows':[]};var _0x5df8e5=_[_0x1382('0x28')](db[_0x1382('0x29')][_0x1382('0x2a')],function(_0x4a3c3e){return{'name':_0x4a3c3e[_0x1382('0x2b')],'type':_0x4a3c3e[_0x1382('0x2c')]['key']};});_0x594e2f[_0x1382('0x2d')]=_[_0x1382('0x2e')](_['map'](_0x5df8e5,_0x1382('0x26')),[_0x1382('0x26')]);_0x594e2f[_0x1382('0x2f')]=_[_0x1382('0x30')](_0x116ff8[_0x1382('0x2f')]);_0x594e2f[_0x1382('0x31')]=_[_0x1382('0x32')](_0x594e2f[_0x1382('0x2d')],_0x594e2f[_0x1382('0x2f')]);_0x228079[_0x1382('0x33')]=_[_0x1382('0x32')](_0x594e2f['model'],qs[_0x1382('0x34')](_0x116ff8[_0x1382('0x2f')][_0x1382('0x34')]));_0x228079[_0x1382('0x33')]=_0x228079['attributes'][_0x1382('0x35')]?_0x228079[_0x1382('0x33')]:_0x594e2f[_0x1382('0x2d')];if(!_0x116ff8['query'][_0x1382('0x36')](_0x1382('0x37'))){_0x228079[_0x1382('0x19')]=qs[_0x1382('0x19')](_0x116ff8[_0x1382('0x2f')][_0x1382('0x19')]);_0x228079[_0x1382('0x1b')]=qs[_0x1382('0x1b')](_0x116ff8[_0x1382('0x2f')][_0x1382('0x1b')]);}_0x228079[_0x1382('0x38')]=qs[_0x1382('0x39')](_0x116ff8[_0x1382('0x2f')][_0x1382('0x39')]);_0x228079[_0x1382('0x3a')]=qs[_0x1382('0x31')](_[_0x1382('0x3b')](_0x116ff8[_0x1382('0x2f')],_0x594e2f['filters']),_0x5df8e5);if(_0x116ff8['query']['filter']){_0x228079[_0x1382('0x3a')]=_['merge'](_0x228079[_0x1382('0x3a')],{'$or':_[_0x1382('0x28')](_0x5df8e5,function(_0x28f196){if(_0x28f196[_0x1382('0x2c')]!=='VIRTUAL'){var _0xc9e7fd={};_0xc9e7fd[_0x28f196['name']]={'$like':'%'+_0x116ff8[_0x1382('0x2f')][_0x1382('0x3c')]+'%'};return _0xc9e7fd;}})});}_0x228079=_[_0x1382('0x3d')]({},_0x228079,_0x116ff8[_0x1382('0x3e')]);var _0x239f5d={'where':_0x228079[_0x1382('0x3a')]};return db[_0x1382('0x29')][_0x1382('0x1a')](_0x239f5d)[_0x1382('0x21')](function(_0xa928bb){_0x16b758[_0x1382('0x1a')]=_0xa928bb;if(_0x116ff8[_0x1382('0x2f')]['includeAll']){_0x228079[_0x1382('0x3f')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x1382('0x40')](_0x228079);})['then'](function(_0x216b82){_0x16b758[_0x1382('0x41')]=_0x216b82;return _0x16b758;})[_0x1382('0x21')](respondWithFilteredResult(_0x319785,_0x228079))[_0x1382('0x42')](handleError(_0x319785,null));};exports['show']=function(_0x2e1305,_0x1f92e6){var _0x1d43d7={'raw':!![],'where':{'id':_0x2e1305[_0x1382('0x43')]['id']}},_0x4e5654={};_0x4e5654['model']=_['keys'](db[_0x1382('0x29')][_0x1382('0x2a')]);_0x4e5654['query']=_[_0x1382('0x30')](_0x2e1305['query']);_0x4e5654[_0x1382('0x31')]=_[_0x1382('0x32')](_0x4e5654[_0x1382('0x2d')],_0x4e5654[_0x1382('0x2f')]);_0x1d43d7[_0x1382('0x33')]=_[_0x1382('0x32')](_0x4e5654['model'],qs[_0x1382('0x34')](_0x2e1305[_0x1382('0x2f')][_0x1382('0x34')]));_0x1d43d7['attributes']=_0x1d43d7[_0x1382('0x33')][_0x1382('0x35')]?_0x1d43d7[_0x1382('0x33')]:_0x4e5654[_0x1382('0x2d')];if(_0x2e1305['query'][_0x1382('0x44')]){_0x1d43d7[_0x1382('0x3f')]=[{'all':!![]}];}_0x1d43d7=_[_0x1382('0x3d')]({},_0x1d43d7,_0x2e1305[_0x1382('0x3e')]);return db[_0x1382('0x29')][_0x1382('0x45')](_0x1d43d7)[_0x1382('0x21')](handleEntityNotFound(_0x1f92e6,null))[_0x1382('0x21')](respondWithResult(_0x1f92e6,null))[_0x1382('0x42')](handleError(_0x1f92e6,null));};exports[_0x1382('0x46')]=function(_0x358a9d,_0x4691c8){return db[_0x1382('0x29')][_0x1382('0x46')](_0x358a9d[_0x1382('0x47')],{})[_0x1382('0x21')](respondWithResult(_0x4691c8,0xc9))[_0x1382('0x42')](handleError(_0x4691c8,null));};exports['update']=function(_0x27b3ad,_0x182acb){if(_0x27b3ad[_0x1382('0x47')]['id']){delete _0x27b3ad[_0x1382('0x47')]['id'];}return db[_0x1382('0x29')]['find']({'where':{'id':_0x27b3ad['params']['id']}})[_0x1382('0x21')](handleEntityNotFound(_0x182acb,null))[_0x1382('0x21')](saveUpdates(_0x27b3ad[_0x1382('0x47')],null))[_0x1382('0x21')](respondWithResult(_0x182acb,null))['catch'](handleError(_0x182acb,null));};exports[_0x1382('0x22')]=function(_0x36840e,_0x159152){return db[_0x1382('0x29')][_0x1382('0x45')]({'where':{'id':_0x36840e[_0x1382('0x43')]['id']}})[_0x1382('0x21')](handleEntityNotFound(_0x159152,null))[_0x1382('0x21')](removeEntity(_0x159152,null))[_0x1382('0x42')](handleError(_0x159152,null));};exports[_0x1382('0x48')]=function(_0x3ba928,_0x3ae54e,_0x1ce66b){return db[_0x1382('0x29')][_0x1382('0x45')]({'where':{'id':_0x3ba928[_0x1382('0x43')]['id']},'attributes':['id',_0x1382('0x49'),_0x1382('0x4a')]})[_0x1382('0x21')](handleEntityNotFound(_0x3ae54e,null))[_0x1382('0x21')](function(_0x1e1eef){if(_0x1e1eef){if(!_0x1e1eef['recording']){throw new db[(_0x1382('0x4b'))][(_0x1382('0x4c'))](_0x1382('0x4d'));}var _0x2d0936={'Content-Type':_0x1382('0x4e'),'Content-Disposition':_0x1382('0x4f')};if(_0x1e1eef[_0x1382('0x4a')]){_0x2d0936[_0x1382('0x50')]=_0x1382('0x51')+_0x1e1eef[_0x1382('0x4a')]+'.wav\x22';}_0x3ae54e['set'](_0x2d0936);return _0x3ae54e['send'](new Buffer(_0x1e1eef[_0x1382('0x49')]));}})[_0x1382('0x42')](handleError(_0x3ae54e,null));};
\ No newline at end of file
+var _0x0888=['update','then','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','model','differenceBy','query','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','rawAttributes','keys','includeAll','find','create','body','destroy','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x5a905e,_0x31aa4a){var _0x4124d6=function(_0x37c28a){while(--_0x37c28a){_0x5a905e['push'](_0x5a905e['shift']());}};_0x4124d6(++_0x31aa4a);}(_0x0888,0x14b));var _0x8088=function(_0x46dbaf,_0x44a1f2){_0x46dbaf=_0x46dbaf-0x0;var _0x3a7022=_0x0888[_0x46dbaf];return _0x3a7022;};'use strict';var emlformat=require(_0x8088('0x0'));var rimraf=require(_0x8088('0x1'));var zipdir=require(_0x8088('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8088('0x3'));var moment=require(_0x8088('0x4'));var BPromise=require(_0x8088('0x5'));var Mustache=require(_0x8088('0x6'));var util=require(_0x8088('0x7'));var path=require('path');var sox=require(_0x8088('0x8'));var csv=require(_0x8088('0x9'));var ejs=require(_0x8088('0xa'));var fs=require('fs');var fs_extra=require(_0x8088('0xb'));var _=require(_0x8088('0xc'));var squel=require(_0x8088('0xd'));var crypto=require(_0x8088('0xe'));var jsforce=require(_0x8088('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x8088('0x9'));var querystring=require('querystring');var Papa=require(_0x8088('0x10'));var Redis=require(_0x8088('0x11'));var authService=require(_0x8088('0x12'));var qs=require(_0x8088('0x13'));var as=require(_0x8088('0x14'));var hardwareService=require(_0x8088('0x15'));var logger=require(_0x8088('0x16'))(_0x8088('0x17'));var utils=require(_0x8088('0x18'));var config=require(_0x8088('0x19'));var licenseUtil=require(_0x8088('0x1a'));var db=require(_0x8088('0x1b'))['db'];function respondWithStatusCode(_0x582154,_0x13f401){_0x13f401=_0x13f401||0xcc;return function(_0x17fdd9){if(_0x17fdd9){return _0x582154[_0x8088('0x1c')](_0x13f401);}return _0x582154['status'](_0x13f401)[_0x8088('0x1d')]();};}function respondWithResult(_0x4587fa,_0x10786f){_0x10786f=_0x10786f||0xc8;return function(_0x2f9092){if(_0x2f9092){return _0x4587fa[_0x8088('0x1e')](_0x10786f)[_0x8088('0x1f')](_0x2f9092);}};}function respondWithFilteredResult(_0x5d490b,_0x1c33aa){return function(_0x45e64d){if(_0x45e64d){var _0x1a011f=typeof _0x1c33aa[_0x8088('0x20')]===_0x8088('0x21')&&typeof _0x1c33aa[_0x8088('0x22')]===_0x8088('0x21');var _0x24dc45=_0x45e64d[_0x8088('0x23')];var _0x52e0a4=_0x1a011f?0x0:_0x1c33aa[_0x8088('0x20')];var _0x5d2f4b=_0x1a011f?_0x45e64d[_0x8088('0x23')]:_0x1c33aa[_0x8088('0x20')]+_0x1c33aa['limit'];var _0x4eedde;if(_0x5d2f4b>=_0x24dc45){_0x5d2f4b=_0x24dc45;_0x4eedde=0xc8;}else{_0x4eedde=0xce;}_0x5d490b[_0x8088('0x1e')](_0x4eedde);return _0x5d490b[_0x8088('0x24')](_0x8088('0x25'),_0x52e0a4+'-'+_0x5d2f4b+'/'+_0x24dc45)[_0x8088('0x1f')](_0x45e64d);}return null;};}function patchUpdates(_0x54a180){return function(_0x509f74){try{jsonpatch[_0x8088('0x26')](_0x509f74,_0x54a180,!![]);}catch(_0x1027c5){return BPromise[_0x8088('0x27')](_0x1027c5);}return _0x509f74[_0x8088('0x28')]();};}function saveUpdates(_0x4b5467,_0x2c6689){return function(_0x23b189){if(_0x23b189){return _0x23b189[_0x8088('0x29')](_0x4b5467)['then'](function(_0x336ba7){return _0x336ba7;});}return null;};}function removeEntity(_0x1c0d83,_0x50225a){return function(_0x3b006e){if(_0x3b006e){return _0x3b006e['destroy']()[_0x8088('0x2a')](function(){_0x1c0d83[_0x8088('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x111b6e,_0x2b4931){return function(_0x3cc89c){if(!_0x3cc89c){_0x111b6e[_0x8088('0x1c')](0x194);}return _0x3cc89c;};}function handleError(_0x291161,_0xcc176b){_0xcc176b=_0xcc176b||0x1f4;return function(_0x312d5e){logger[_0x8088('0x2b')](_0x312d5e[_0x8088('0x2c')]);if(_0x312d5e['name']){delete _0x312d5e[_0x8088('0x2d')];}_0x291161[_0x8088('0x1e')](_0xcc176b)[_0x8088('0x2e')](_0x312d5e);};}exports[_0x8088('0x2f')]=function(_0x502b4f,_0xf2f374){var _0xbbb715={},_0x42149a={},_0x789757={'count':0x0,'rows':[]};var _0x1c72d9=_[_0x8088('0x30')](db[_0x8088('0x31')]['rawAttributes'],function(_0x1d7709){return{'name':_0x1d7709[_0x8088('0x32')],'type':_0x1d7709[_0x8088('0x33')][_0x8088('0x34')]};});_0x42149a[_0x8088('0x35')]=_[_0x8088('0x36')](_[_0x8088('0x30')](_0x1c72d9,_0x8088('0x2d')),[_0x8088('0x2d')]);_0x42149a[_0x8088('0x37')]=_['keys'](_0x502b4f['query']);_0x42149a[_0x8088('0x38')]=_[_0x8088('0x39')](_0x42149a[_0x8088('0x35')],_0x42149a[_0x8088('0x37')]);_0xbbb715['attributes']=_[_0x8088('0x39')](_0x42149a['model'],qs[_0x8088('0x3a')](_0x502b4f[_0x8088('0x37')][_0x8088('0x3a')]));_0xbbb715[_0x8088('0x3b')]=_0xbbb715['attributes'][_0x8088('0x3c')]?_0xbbb715[_0x8088('0x3b')]:_0x42149a[_0x8088('0x35')];if(!_0x502b4f['query']['hasOwnProperty']('nolimit')){_0xbbb715[_0x8088('0x22')]=qs['limit'](_0x502b4f[_0x8088('0x37')][_0x8088('0x22')]);_0xbbb715[_0x8088('0x20')]=qs[_0x8088('0x20')](_0x502b4f['query'][_0x8088('0x20')]);}_0xbbb715[_0x8088('0x3d')]=qs[_0x8088('0x3e')](_0x502b4f['query'][_0x8088('0x3e')]);_0xbbb715[_0x8088('0x3f')]=qs[_0x8088('0x38')](_[_0x8088('0x40')](_0x502b4f[_0x8088('0x37')],_0x42149a['filters']),_0x1c72d9);if(_0x502b4f['query'][_0x8088('0x41')]){_0xbbb715[_0x8088('0x3f')]=_['merge'](_0xbbb715[_0x8088('0x3f')],{'$or':_[_0x8088('0x30')](_0x1c72d9,function(_0x16a233){if(_0x16a233['type']!==_0x8088('0x42')){var _0x1e31fa={};_0x1e31fa[_0x16a233[_0x8088('0x2d')]]={'$like':'%'+_0x502b4f[_0x8088('0x37')]['filter']+'%'};return _0x1e31fa;}})});}_0xbbb715=_[_0x8088('0x43')]({},_0xbbb715,_0x502b4f[_0x8088('0x44')]);var _0x11203e={'where':_0xbbb715[_0x8088('0x3f')]};return db[_0x8088('0x31')][_0x8088('0x23')](_0x11203e)[_0x8088('0x2a')](function(_0x17d4ea){_0x789757['count']=_0x17d4ea;if(_0x502b4f[_0x8088('0x37')]['includeAll']){_0xbbb715[_0x8088('0x45')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x8088('0x46')](_0xbbb715);})[_0x8088('0x2a')](function(_0x4ecb70){_0x789757[_0x8088('0x47')]=_0x4ecb70;return _0x789757;})[_0x8088('0x2a')](respondWithFilteredResult(_0xf2f374,_0xbbb715))[_0x8088('0x48')](handleError(_0xf2f374,null));};exports[_0x8088('0x49')]=function(_0x592e5a,_0x4d79d5){var _0x27af27={'raw':!![],'where':{'id':_0x592e5a[_0x8088('0x4a')]['id']}},_0x136793={};_0x136793[_0x8088('0x35')]=_['keys'](db['VoiceMailMessage'][_0x8088('0x4b')]);_0x136793['query']=_[_0x8088('0x4c')](_0x592e5a['query']);_0x136793[_0x8088('0x38')]=_[_0x8088('0x39')](_0x136793[_0x8088('0x35')],_0x136793[_0x8088('0x37')]);_0x27af27['attributes']=_[_0x8088('0x39')](_0x136793[_0x8088('0x35')],qs[_0x8088('0x3a')](_0x592e5a[_0x8088('0x37')][_0x8088('0x3a')]));_0x27af27[_0x8088('0x3b')]=_0x27af27['attributes'][_0x8088('0x3c')]?_0x27af27['attributes']:_0x136793['model'];if(_0x592e5a[_0x8088('0x37')][_0x8088('0x4d')]){_0x27af27[_0x8088('0x45')]=[{'all':!![]}];}_0x27af27=_[_0x8088('0x43')]({},_0x27af27,_0x592e5a[_0x8088('0x44')]);return db['VoiceMailMessage'][_0x8088('0x4e')](_0x27af27)[_0x8088('0x2a')](handleEntityNotFound(_0x4d79d5,null))[_0x8088('0x2a')](respondWithResult(_0x4d79d5,null))['catch'](handleError(_0x4d79d5,null));};exports[_0x8088('0x4f')]=function(_0x25e38f,_0x10d439){return db[_0x8088('0x31')][_0x8088('0x4f')](_0x25e38f['body'],{})[_0x8088('0x2a')](respondWithResult(_0x10d439,0xc9))['catch'](handleError(_0x10d439,null));};exports[_0x8088('0x29')]=function(_0x53548b,_0x27b80d){if(_0x53548b[_0x8088('0x50')]['id']){delete _0x53548b['body']['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0x53548b[_0x8088('0x4a')]['id']}})[_0x8088('0x2a')](handleEntityNotFound(_0x27b80d,null))[_0x8088('0x2a')](saveUpdates(_0x53548b[_0x8088('0x50')],null))[_0x8088('0x2a')](respondWithResult(_0x27b80d,null))[_0x8088('0x48')](handleError(_0x27b80d,null));};exports[_0x8088('0x51')]=function(_0x489dd9,_0x2de124){return db[_0x8088('0x31')]['find']({'where':{'id':_0x489dd9[_0x8088('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2de124,null))[_0x8088('0x2a')](removeEntity(_0x2de124,null))[_0x8088('0x48')](handleError(_0x2de124,null));};exports[_0x8088('0x52')]=function(_0x42356f,_0x3e62ba,_0x28c438){return db['VoiceMailMessage'][_0x8088('0x4e')]({'where':{'id':_0x42356f[_0x8088('0x4a')]['id']},'attributes':['id','recording',_0x8088('0x53')]})[_0x8088('0x2a')](handleEntityNotFound(_0x3e62ba,null))[_0x8088('0x2a')](function(_0x20213a){if(_0x20213a){if(!_0x20213a[_0x8088('0x54')]){throw new db[(_0x8088('0x55'))][(_0x8088('0x56'))](_0x8088('0x57'));}var _0x37e731={'Content-Type':_0x8088('0x58'),'Content-Disposition':_0x8088('0x59')};if(_0x20213a['msg_id']){_0x37e731[_0x8088('0x5a')]=_0x8088('0x5b')+_0x20213a[_0x8088('0x53')]+_0x8088('0x5c');}_0x3e62ba[_0x8088('0x24')](_0x37e731);return _0x3e62ba[_0x8088('0x2e')](new Buffer(_0x20213a[_0x8088('0x54')]));}})['catch'](handleError(_0x3e62ba,null));};
\ No newline at end of file
index c2f836c..68f2970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d24=['lodash','util','api','moment','request-promise','path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x6d24,0x8f));var _0x46d2=function(_0x581714,_0x19b53c){_0x581714=_0x581714-0x0;var _0x3b9dad=_0x6d24[_0x581714];return _0x3b9dad;};'use strict';var _=require(_0x46d2('0x0'));var util=require(_0x46d2('0x1'));var logger=require('../../config/logger')(_0x46d2('0x2'));var moment=require(_0x46d2('0x3'));var BPromise=require('bluebird');var rp=require(_0x46d2('0x4'));var fs=require('fs');var path=require(_0x46d2('0x5'));var rimraf=require(_0x46d2('0x6'));var config=require('../../config/environment');var attributes=require(_0x46d2('0x7'));module[_0x46d2('0x8')]=function(_0x52dd7a,_0x146924){return _0x52dd7a[_0x46d2('0x9')](_0x46d2('0xa'),attributes,{'tableName':_0x46d2('0xb'),'paranoid':![],'indexes':[{'name':_0x46d2('0xc'),'fields':[_0x46d2('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xabfc=['api','moment','bluebird','path','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','util','../../config/logger'];(function(_0x403a34,_0x3c3010){var _0x2736d7=function(_0x3f640d){while(--_0x3f640d){_0x403a34['push'](_0x403a34['shift']());}};_0x2736d7(++_0x3c3010);}(_0xabfc,0x11c));var _0xcabf=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xabfc[_0x3b0731];return _0x4204d7;};'use strict';var _=require('lodash');var util=require(_0xcabf('0x0'));var logger=require(_0xcabf('0x1'))(_0xcabf('0x2'));var moment=require(_0xcabf('0x3'));var BPromise=require(_0xcabf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcabf('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcabf('0x6'));module[_0xcabf('0x7')]=function(_0x2b2cac,_0x37b74a){return _0x2b2cac[_0xcabf('0x8')]('VoiceMailMessage',attributes,{'tableName':_0xcabf('0x9'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xcabf('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 7b286bf..57fa5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbef9=['client','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','bluebird','randomstring','../../config/utils','rpc','../../config/environment'];(function(_0x909ba0,_0x48d8be){var _0x2673c5=function(_0x3f7c92){while(--_0x3f7c92){_0x909ba0['push'](_0x909ba0['shift']());}};_0x2673c5(++_0x48d8be);}(_0xbef9,0x103));var _0x9bef=function(_0xb75ef8,_0x595d65){_0xb75ef8=_0xb75ef8-0x0;var _0x409f8e=_0xbef9[_0xb75ef8];return _0x409f8e;};'use strict';var _=require(_0x9bef('0x0'));var util=require(_0x9bef('0x1'));var moment=require('moment');var BPromise=require(_0x9bef('0x2'));var rs=require(_0x9bef('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9bef('0x4'));var logger=require('../../config/logger')(_0x9bef('0x5'));var config=require(_0x9bef('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9bef('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed1f6,_0x27a1d8,_0xb1ed70){return new BPromise(function(_0x478b38,_0x18e0f8){return client[_0x9bef('0x8')](_0x4ed1f6,_0xb1ed70)[_0x9bef('0x9')](function(_0x4d68c4){logger[_0x9bef('0xa')](_0x9bef('0xb'),_0x27a1d8,_0x9bef('0xc'));logger[_0x9bef('0xd')](_0x9bef('0xe'),_0x27a1d8,'request\x20sent',JSON['stringify'](_0x4d68c4));if(_0x4d68c4[_0x9bef('0xf')]){if(_0x4d68c4[_0x9bef('0xf')][_0x9bef('0x10')]===0x1f4){logger[_0x9bef('0xf')](_0x9bef('0xb'),_0x27a1d8,_0x4d68c4[_0x9bef('0xf')][_0x9bef('0x11')]);return _0x18e0f8(_0x4d68c4[_0x9bef('0xf')][_0x9bef('0x11')]);}logger[_0x9bef('0xf')](_0x9bef('0xb'),_0x27a1d8,_0x4d68c4['error']['message']);return _0x478b38(_0x4d68c4['error'][_0x9bef('0x11')]);}else{logger[_0x9bef('0xa')](_0x9bef('0xb'),_0x27a1d8,'request\x20sent');_0x478b38(_0x4d68c4[_0x9bef('0x12')]['message']);}})['catch'](function(_0x4fb7ed){logger[_0x9bef('0xf')](_0x9bef('0xb'),_0x27a1d8,_0x4fb7ed);_0x18e0f8(_0x4fb7ed);});});}
\ No newline at end of file
+var _0xe778=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMailMessage,\x20%s,\x20%s','catch'];(function(_0x15d173,_0x932049){var _0x4ef635=function(_0x5ea3da){while(--_0x5ea3da){_0x15d173['push'](_0x15d173['shift']());}};_0x4ef635(++_0x932049);}(_0xe778,0x1cc));var _0x8e77=function(_0xef92ad,_0x50851c){_0xef92ad=_0xef92ad-0x0;var _0x1e20d8=_0xe778[_0xef92ad];return _0x1e20d8;};'use strict';var _=require(_0x8e77('0x0'));var util=require(_0x8e77('0x1'));var moment=require(_0x8e77('0x2'));var BPromise=require('bluebird');var rs=require(_0x8e77('0x3'));var fs=require('fs');var Redis=require(_0x8e77('0x4'));var db=require(_0x8e77('0x5'))['db'];var utils=require(_0x8e77('0x6'));var logger=require(_0x8e77('0x7'))(_0x8e77('0x8'));var config=require(_0x8e77('0x9'));var jayson=require(_0x8e77('0xa'));var client=jayson[_0x8e77('0xb')][_0x8e77('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x328451,_0x58b669,_0x9246b0){return new BPromise(function(_0x113db4,_0x55fe9c){return client['request'](_0x328451,_0x9246b0)[_0x8e77('0xd')](function(_0x3a8a76){logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x58b669,_0x8e77('0xe'));logger[_0x8e77('0xf')](_0x8e77('0x10'),_0x58b669,_0x8e77('0xe'),JSON[_0x8e77('0x11')](_0x3a8a76));if(_0x3a8a76[_0x8e77('0x12')]){if(_0x3a8a76[_0x8e77('0x12')][_0x8e77('0x13')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x58b669,_0x3a8a76['error'][_0x8e77('0x14')]);return _0x55fe9c(_0x3a8a76['error']['message']);}logger[_0x8e77('0x12')](_0x8e77('0x15'),_0x58b669,_0x3a8a76[_0x8e77('0x12')]['message']);return _0x113db4(_0x3a8a76['error'][_0x8e77('0x14')]);}else{logger['info'](_0x8e77('0x15'),_0x58b669,_0x8e77('0xe'));_0x113db4(_0x3a8a76['result'][_0x8e77('0x14')]);}})[_0x8e77('0x16')](function(_0x3151d3){logger['error'](_0x8e77('0x15'),_0x58b669,_0x3151d3);_0x55fe9c(_0x3151d3);});});}
\ No newline at end of file
index 18ae196..9838961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe44e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','getSounds','post','create','update','delete','destroy','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x39f18f,_0x41841a){var _0x8285b7=function(_0x196a8f){while(--_0x196a8f){_0x39f18f['push'](_0x39f18f['shift']());}};_0x8285b7(++_0x41841a);}(_0xe44e,0x13c));var _0xee44=function(_0x3e14b2,_0x894916){_0x3e14b2=_0x3e14b2-0x0;var _0x1a7658=_0xe44e[_0x3e14b2];return _0x1a7658;};'use strict';var multer=require(_0xee44('0x0'));var util=require(_0xee44('0x1'));var path=require(_0xee44('0x2'));var timeout=require(_0xee44('0x3'));var express=require('express');var router=express[_0xee44('0x4')]();var fs_extra=require(_0xee44('0x5'));var auth=require(_0xee44('0x6'));var interaction=require(_0xee44('0x7'));var config=require(_0xee44('0x8'));var controller=require(_0xee44('0x9'));router[_0xee44('0xa')]('/',auth[_0xee44('0xb')](),controller[_0xee44('0xc')]);router['get'](_0xee44('0xd'),auth[_0xee44('0xb')](),controller['show']);router['get'](_0xee44('0xe'),auth[_0xee44('0xb')](),controller[_0xee44('0xf')]);router[_0xee44('0x10')]('/',auth[_0xee44('0xb')](),controller[_0xee44('0x11')]);router[_0xee44('0x10')](_0xee44('0xe'),auth[_0xee44('0xb')](),controller['addSound']);router['put'](_0xee44('0xd'),auth[_0xee44('0xb')](),controller[_0xee44('0x12')]);router[_0xee44('0x13')](_0xee44('0xd'),auth['isAuthenticated'](),controller[_0xee44('0x14')]);router[_0xee44('0x13')](_0xee44('0x15'),auth['isAuthenticated'](),controller[_0xee44('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x5bb9=['express','fs-extra','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','post','addSound','update','delete','/:id/sounds/:id2','removeSound','exports','multer','path','connect-timeout'];(function(_0x525b2f,_0x54ef4e){var _0x234cec=function(_0x29f29a){while(--_0x29f29a){_0x525b2f['push'](_0x525b2f['shift']());}};_0x234cec(++_0x54ef4e);}(_0x5bb9,0x95));var _0x95bb=function(_0x4c23a3,_0x52e5f8){_0x4c23a3=_0x4c23a3-0x0;var _0x4113fa=_0x5bb9[_0x4c23a3];return _0x4113fa;};'use strict';var multer=require(_0x95bb('0x0'));var util=require('util');var path=require(_0x95bb('0x1'));var timeout=require(_0x95bb('0x2'));var express=require(_0x95bb('0x3'));var router=express['Router']();var fs_extra=require(_0x95bb('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x95bb('0x5'));var controller=require(_0x95bb('0x6'));router[_0x95bb('0x7')]('/',auth[_0x95bb('0x8')](),controller[_0x95bb('0x9')]);router[_0x95bb('0x7')](_0x95bb('0xa'),auth[_0x95bb('0x8')](),controller['show']);router[_0x95bb('0x7')](_0x95bb('0xb'),auth[_0x95bb('0x8')](),controller['getSounds']);router[_0x95bb('0xc')]('/',auth[_0x95bb('0x8')](),controller['create']);router[_0x95bb('0xc')]('/:id/sounds',auth[_0x95bb('0x8')](),controller[_0x95bb('0xd')]);router['put'](_0x95bb('0xa'),auth['isAuthenticated'](),controller[_0x95bb('0xe')]);router[_0x95bb('0xf')](_0x95bb('0xa'),auth[_0x95bb('0x8')](),controller['destroy']);router[_0x95bb('0xf')](_0x95bb('0x10'),auth[_0x95bb('0x8')](),controller[_0x95bb('0x11')]);module[_0x95bb('0x12')]=router;
\ No newline at end of file
index 75aac74..0c31948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e7=['name','ENUM','files','mp3nb','quietmp3nb','mp3','STRING','alpha','TIMESTAMP','BOOLEAN','sequelize','exports'];(function(_0x219bb2,_0x1f8612){var _0x299dde=function(_0x50db7d){while(--_0x50db7d){_0x219bb2['push'](_0x219bb2['shift']());}};_0x299dde(++_0x1f8612);}(_0x30e7,0x15a));var _0x730e=function(_0x2994e8,_0x15f8f6){_0x2994e8=_0x2994e8-0x0;var _0x1a38ec=_0x30e7[_0x2994e8];return _0x1a38ec;};'use strict';var Sequelize=require(_0x730e('0x0'));module[_0x730e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x730e('0x2')},'mode':{'type':Sequelize[_0x730e('0x3')]('custom',_0x730e('0x4'),_0x730e('0x5'),_0x730e('0x6'),'quietmp3',_0x730e('0x7')),'allowNull':!![],'defaultValue':_0x730e('0x4')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x730e('0x8')],'allowNull':!![]},'sort':{'type':Sequelize[_0x730e('0x8')],'allowNull':!![],'defaultValue':_0x730e('0x9')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x730e('0xa')},'defaultEntry':{'type':Sequelize[_0x730e('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x80d8=['ENUM','files','quietmp3nb','alpha','TIMESTAMP','BOOLEAN','exports','STRING'];(function(_0x1da6a2,_0x253fac){var _0x2eccd0=function(_0x296d55){while(--_0x296d55){_0x1da6a2['push'](_0x1da6a2['shift']());}};_0x2eccd0(++_0x253fac);}(_0x80d8,0x136));var _0x880d=function(_0x13486c,_0x139348){_0x13486c=_0x13486c-0x0;var _0x135738=_0x80d8[_0x13486c];return _0x135738;};'use strict';var Sequelize=require('sequelize');module[_0x880d('0x0')]={'name':{'type':Sequelize[_0x880d('0x1')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x880d('0x2')]('custom',_0x880d('0x3'),'mp3nb',_0x880d('0x4'),'quietmp3','mp3'),'allowNull':!![],'defaultValue':_0x880d('0x3')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![],'defaultValue':_0x880d('0x5')},'format':{'type':Sequelize[_0x880d('0x1')],'allowNull':!![]},'stamp':{'type':_0x880d('0x6')},'defaultEntry':{'type':Sequelize[_0x880d('0x7')],'defaultValue':0x0}};
\ No newline at end of file
index cfbe971..664d3ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe95d=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','get','UserProfileResource','then','end','error','stack','name','send','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','body','mode','files','directory','join','root','server/files/moh','create','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MusicOnHolds','userProfileId','sequelize','transaction','readdirSync','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','save_name','converted_format','createdAt','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','findOne','getSounds','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x491306,_0x132425){var _0x23dfed=function(_0x11ba74){while(--_0x11ba74){_0x491306['push'](_0x491306['shift']());}};_0x23dfed(++_0x132425);}(_0xe95d,0x6a));var _0xde95=function(_0x3a4203,_0xa6ff2e){_0x3a4203=_0x3a4203-0x0;var _0x1a5661=_0xe95d[_0x3a4203];return _0x1a5661;};'use strict';var emlformat=require(_0xde95('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xde95('0x1'));var rp=require(_0xde95('0x2'));var moment=require(_0xde95('0x3'));var BPromise=require(_0xde95('0x4'));var Mustache=require(_0xde95('0x5'));var util=require(_0xde95('0x6'));var path=require(_0xde95('0x7'));var sox=require(_0xde95('0x8'));var csv=require('to-csv');var ejs=require(_0xde95('0x9'));var fs=require('fs');var fs_extra=require(_0xde95('0xa'));var _=require(_0xde95('0xb'));var squel=require(_0xde95('0xc'));var crypto=require(_0xde95('0xd'));var jsforce=require(_0xde95('0xe'));var deskjs=require(_0xde95('0xf'));var toCsv=require(_0xde95('0x10'));var querystring=require('querystring');var Papa=require(_0xde95('0x11'));var Redis=require(_0xde95('0x12'));var authService=require(_0xde95('0x13'));var qs=require(_0xde95('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xde95('0x15'));var logger=require(_0xde95('0x16'))(_0xde95('0x17'));var utils=require('../../config/utils');var config=require(_0xde95('0x18'));var licenseUtil=require(_0xde95('0x19'));var db=require(_0xde95('0x1a'))['db'];function respondWithStatusCode(_0x48e005,_0x2c2d72){_0x2c2d72=_0x2c2d72||0xcc;return function(_0x4a8986){if(_0x4a8986){return _0x48e005[_0xde95('0x1b')](_0x2c2d72);}return _0x48e005['status'](_0x2c2d72)['end']();};}function respondWithResult(_0x30c3d5,_0x53582f){_0x53582f=_0x53582f||0xc8;return function(_0x5d359f){if(_0x5d359f){return _0x30c3d5[_0xde95('0x1c')](_0x53582f)[_0xde95('0x1d')](_0x5d359f);}};}function respondWithFilteredResult(_0x1f1696,_0xd1521d){return function(_0x2fa561){if(_0x2fa561){var _0x24de0e=typeof _0xd1521d['offset']===_0xde95('0x1e')&&typeof _0xd1521d[_0xde95('0x1f')]===_0xde95('0x1e');var _0xe0a40e=_0x2fa561['count'];var _0x20dc28=_0x24de0e?0x0:_0xd1521d['offset'];var _0x2a9794=_0x24de0e?_0x2fa561[_0xde95('0x20')]:_0xd1521d[_0xde95('0x21')]+_0xd1521d[_0xde95('0x1f')];var _0x2eaf27;if(_0x2a9794>=_0xe0a40e){_0x2a9794=_0xe0a40e;_0x2eaf27=0xc8;}else{_0x2eaf27=0xce;}_0x1f1696[_0xde95('0x1c')](_0x2eaf27);return _0x1f1696['set'](_0xde95('0x22'),_0x20dc28+'-'+_0x2a9794+'/'+_0xe0a40e)['json'](_0x2fa561);}return null;};}function patchUpdates(_0x84ee3d){return function(_0x23399b){try{jsonpatch[_0xde95('0x23')](_0x23399b,_0x84ee3d,!![]);}catch(_0x49db0c){return BPromise['reject'](_0x49db0c);}return _0x23399b[_0xde95('0x24')]();};}function saveUpdates(_0xe838d7,_0x461f6f){return function(_0x528077){if(_0x528077){return _0x528077[_0xde95('0x25')](_0xe838d7)['then'](function(_0x112260){return _0x112260;});}return null;};}function removeEntity(_0x201a51,_0xd2c5c5){return function(_0x24b08b){if(_0x24b08b){return _0x24b08b[_0xde95('0x26')]()['then'](function(){var _0x58bcf1=_0x24b08b[_0xde95('0x27')]({'plain':!![]});var _0x1ffbc9='MusicOnHolds';return db[_0xde95('0x28')][_0xde95('0x26')]({'where':{'type':_0x1ffbc9,'resourceId':_0x58bcf1['id']}})[_0xde95('0x29')](function(){return _0x24b08b;});})[_0xde95('0x29')](function(){_0x201a51[_0xde95('0x1c')](0xcc)[_0xde95('0x2a')]();});}};}function handleEntityNotFound(_0x220153,_0xd50592){return function(_0x492291){if(!_0x492291){_0x220153[_0xde95('0x1b')](0x194);}return _0x492291;};}function handleError(_0x73c610,_0x310b0f){_0x310b0f=_0x310b0f||0x1f4;return function(_0x1f077e){logger[_0xde95('0x2b')](_0x1f077e[_0xde95('0x2c')]);if(_0x1f077e[_0xde95('0x2d')]){delete _0x1f077e[_0xde95('0x2d')];}_0x73c610[_0xde95('0x1c')](_0x310b0f)[_0xde95('0x2e')](_0x1f077e);};}exports['index']=function(_0x558439,_0x59b5ed){var _0x2379e0={},_0x217788={},_0x35a9ab={'count':0x0,'rows':[]};var _0xadd30a=_['map'](db[_0xde95('0x2f')][_0xde95('0x30')],function(_0x240af4){return{'name':_0x240af4[_0xde95('0x31')],'type':_0x240af4[_0xde95('0x32')][_0xde95('0x33')]};});_0x217788[_0xde95('0x34')]=_[_0xde95('0x35')](_0xadd30a,_0xde95('0x2d'));_0x217788[_0xde95('0x36')]=_['keys'](_0x558439[_0xde95('0x36')]);_0x217788['filters']=_['intersection'](_0x217788[_0xde95('0x34')],_0x217788['query']);_0x2379e0[_0xde95('0x37')]=_[_0xde95('0x38')](_0x217788['model'],qs[_0xde95('0x39')](_0x558439[_0xde95('0x36')][_0xde95('0x39')]));_0x2379e0[_0xde95('0x37')]=_0x2379e0[_0xde95('0x37')]['length']?_0x2379e0['attributes']:_0x217788[_0xde95('0x34')];if(!_0x558439[_0xde95('0x36')][_0xde95('0x3a')](_0xde95('0x3b'))){_0x2379e0[_0xde95('0x1f')]=qs[_0xde95('0x1f')](_0x558439[_0xde95('0x36')][_0xde95('0x1f')]);_0x2379e0[_0xde95('0x21')]=qs[_0xde95('0x21')](_0x558439[_0xde95('0x36')][_0xde95('0x21')]);}_0x2379e0[_0xde95('0x3c')]=qs[_0xde95('0x3d')](_0x558439[_0xde95('0x36')][_0xde95('0x3d')]);delete _0x558439[_0xde95('0x36')][_0xde95('0x3d')];_0x2379e0['where']=qs[_0xde95('0x3e')](_[_0xde95('0x3f')](_0x558439[_0xde95('0x36')],_0x217788[_0xde95('0x3e')]),_0xadd30a);if(_0x558439[_0xde95('0x36')][_0xde95('0x40')]){_0x2379e0[_0xde95('0x41')]=_[_0xde95('0x42')](_0x2379e0[_0xde95('0x41')],{'$or':_['map'](_0xadd30a,function(_0x1f2b24){if(_0x1f2b24[_0xde95('0x32')]!==_0xde95('0x43')){var _0xd70137={};_0xd70137[_0x1f2b24[_0xde95('0x2d')]]={'$like':'%'+_0x558439[_0xde95('0x36')][_0xde95('0x40')]+'%'};return _0xd70137;}})});}_0x2379e0=_[_0xde95('0x42')]({},_0x2379e0,_0x558439[_0xde95('0x44')]);var _0x31c380={'where':_0x2379e0[_0xde95('0x41')]};return db[_0xde95('0x2f')][_0xde95('0x20')](_0x31c380)[_0xde95('0x29')](function(_0x921ef6){_0x35a9ab[_0xde95('0x20')]=_0x921ef6;if(_0x558439[_0xde95('0x36')][_0xde95('0x45')]){_0x2379e0[_0xde95('0x46')]=[{'all':!![]}];}return db[_0xde95('0x2f')][_0xde95('0x47')](_0x2379e0);})['then'](function(_0x519784){_0x35a9ab[_0xde95('0x48')]=_0x519784;return _0x35a9ab;})[_0xde95('0x29')](respondWithFilteredResult(_0x59b5ed,_0x2379e0))[_0xde95('0x49')](handleError(_0x59b5ed,null));};exports[_0xde95('0x4a')]=function(_0x5205fe,_0x2af180){var _0x295d81={'raw':![],'where':{'id':_0x5205fe[_0xde95('0x4b')]['id']}},_0x475193={};_0x475193[_0xde95('0x34')]=_[_0xde95('0x4c')](db[_0xde95('0x2f')][_0xde95('0x30')]);_0x475193[_0xde95('0x36')]=_['keys'](_0x5205fe['query']);_0x475193[_0xde95('0x3e')]=_[_0xde95('0x38')](_0x475193[_0xde95('0x34')],_0x475193[_0xde95('0x36')]);_0x295d81['attributes']=_[_0xde95('0x38')](_0x475193['model'],qs[_0xde95('0x39')](_0x5205fe['query'][_0xde95('0x39')]));_0x295d81[_0xde95('0x37')]=_0x295d81['attributes'][_0xde95('0x4d')]?_0x295d81[_0xde95('0x37')]:_0x475193['model'];if(_0x5205fe[_0xde95('0x36')][_0xde95('0x45')]){_0x295d81[_0xde95('0x46')]=[{'all':!![]}];}_0x295d81=_['merge']({},_0x295d81,_0x5205fe[_0xde95('0x44')]);return db[_0xde95('0x2f')]['find'](_0x295d81)['then'](handleEntityNotFound(_0x2af180,null))['then'](respondWithResult(_0x2af180,null))[_0xde95('0x49')](handleError(_0x2af180,null));};exports['update']=function(_0x82d692,_0x323515){if(_0x82d692['body']['id']){delete _0x82d692['body']['id'];}return db[_0xde95('0x2f')][_0xde95('0x4e')]({'where':{'id':_0x82d692[_0xde95('0x4b')]['id']}})['then'](handleEntityNotFound(_0x323515,null))[_0xde95('0x29')](saveUpdates(_0x82d692[_0xde95('0x4f')],null))[_0xde95('0x29')](respondWithResult(_0x323515,null))[_0xde95('0x49')](handleError(_0x323515,null));};exports['create']=function(_0x50d202,_0x4b802a,_0x5db51d){return db['sequelize']['transaction'](function(_0x36bea8){if(_0x50d202[_0xde95('0x4f')][_0xde95('0x50')]===_0xde95('0x51')){_0x50d202['body'][_0xde95('0x52')]=path[_0xde95('0x53')](config[_0xde95('0x54')],_0xde95('0x55'),_0x50d202['body'][_0xde95('0x2d')]);}return db[_0xde95('0x2f')][_0xde95('0x56')](_0x50d202[_0xde95('0x4f')],{'transaction':_0x36bea8})[_0xde95('0x29')](function(_0x1b107b){if(_0x50d202[_0xde95('0x4f')][_0xde95('0x50')]==='files'){fs['mkdirSync'](_0x1b107b['directory'],parseInt(_0xde95('0x57'),0x8));}var _0x14adfe=_0x50d202[_0xde95('0x58')]['get']({'plain':!![]});if(!_0x14adfe)throw new Error(_0xde95('0x59'));if(_0x14adfe[_0xde95('0x5a')]===_0xde95('0x58')){var _0x2baebb=_0x1b107b[_0xde95('0x27')]({'plain':!![]});return db['UserProfileSection'][_0xde95('0x4e')]({'where':{'name':_0xde95('0x5b'),'userProfileId':_0x14adfe[_0xde95('0x5c')]},'raw':!![]})[_0xde95('0x29')](function(_0x3d7270){if(_0x3d7270&&_0x3d7270['autoAssociation']===0x0){return db[_0xde95('0x28')][_0xde95('0x56')]({'name':_0x2baebb['name'],'resourceId':_0x2baebb['id'],'type':_0x3d7270['name'],'sectionId':_0x3d7270['id']},{})[_0xde95('0x29')](function(){return _0x1b107b;});}else{return _0x1b107b;}})['catch'](function(_0xb931c4){logger[_0xde95('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb931c4);});}return _0x1b107b;});})[_0xde95('0x29')](respondWithResult(_0x4b802a,0xc9))[_0xde95('0x49')](handleError(_0x4b802a,null));};exports[_0xde95('0x26')]=function(_0x5358b2,_0x355dec,_0x189d42){var _0x8ec636;return db[_0xde95('0x2f')][_0xde95('0x4e')]({'where':{'id':_0x5358b2[_0xde95('0x4b')]['id']}})[_0xde95('0x29')](function(_0x2062f4){if(_0x2062f4){return db[_0xde95('0x5d')][_0xde95('0x5e')](function(_0x194bb5){return _0x2062f4[_0xde95('0x26')]({'transaction':_0x194bb5,'raw':!![]})['then'](function(_0x5b6638){if(_0x5b6638['directory']){fs[_0xde95('0x5f')](_0x5b6638[_0xde95('0x52')])['forEach'](function(_0x519733){fs[_0xde95('0x60')](path['join'](_0x5b6638[_0xde95('0x52')],_0x519733));});fs[_0xde95('0x61')](_0x5b6638[_0xde95('0x52')]);}return _0x5b6638;});})['catch'](function(_0x377207){throw new db[(_0xde95('0x62'))][(_0xde95('0x63'))](_0x377207[_0xde95('0x64')]);});}})[_0xde95('0x29')](handleEntityNotFound(_0x355dec,null))['then'](removeEntity(_0x355dec,null))[_0xde95('0x49')](handleError(_0x355dec,null));};exports[_0xde95('0x65')]=function(_0x4ad05e,_0x2f9302,_0x215893){return db[_0xde95('0x5d')][_0xde95('0x5e')](function(_0x469431){var _0x3f9d90;return db['VoiceMusicOnHold'][_0xde95('0x4e')]({'where':{'id':_0x4ad05e[_0xde95('0x4b')]['id']}})['then'](function(_0x4de47c){if(_0x4de47c){_0x3f9d90=_0x4de47c;return _0x4de47c['addSound'](_0x4ad05e[_0xde95('0x4f')]['id'],{'transaction':_0x469431});}})[_0xde95('0x29')](function(_0x5734d6){if(_0x5734d6){return db[_0xde95('0x66')]['findOne']({'where':{'id':_0x4ad05e[_0xde95('0x4f')]['id']},'attributes':['id',_0xde95('0x2d'),_0xde95('0x67'),_0xde95('0x68'),_0xde95('0x69')],'raw':!![]});}})[_0xde95('0x29')](function(_0x3cd662){if(_0x3cd662){var _0xb7e556=path[_0xde95('0x53')](config[_0xde95('0x54')],'server/files/sounds/converted',util[_0xde95('0x6a')](_0xde95('0x6b'),path[_0xde95('0x6c')](_0x3cd662[_0xde95('0x67')],path[_0xde95('0x6d')](_0x3cd662[_0xde95('0x67')])),_0x3cd662[_0xde95('0x68')]));var _0x40a016=path[_0xde95('0x53')](config[_0xde95('0x54')],_0xde95('0x55'),_0x3f9d90[_0xde95('0x2d')],util[_0xde95('0x6a')](_0xde95('0x6b'),_0x3cd662[_0xde95('0x2d')],_0x3cd662['converted_format']));fs[_0xde95('0x6e')](_0xb7e556,_0x40a016);return _0x3cd662;}})[_0xde95('0x49')](function(_0x246c2f){throw new db[(_0xde95('0x62'))][(_0xde95('0x63'))](_0x246c2f[_0xde95('0x64')]);});})['then'](handleEntityNotFound(_0x2f9302,null))[_0xde95('0x29')](respondWithResult(_0x2f9302,0xc9))[_0xde95('0x49')](handleError(_0x2f9302,null));};exports[_0xde95('0x6f')]=function(_0x1bcc1d,_0xacb330,_0x12386a){return db[_0xde95('0x5d')][_0xde95('0x5e')](function(_0x11df30){var _0x49b5dd;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x1bcc1d[_0xde95('0x4b')]['id']}})[_0xde95('0x29')](handleEntityNotFound(_0xacb330,null))[_0xde95('0x29')](function(_0x3db666){if(_0x3db666){_0x49b5dd=_0x3db666;return _0x3db666['removeSound'](_0x1bcc1d[_0xde95('0x4b')]['id2']);}})[_0xde95('0x29')](function(_0x30fdc5){if(_0x30fdc5){return db[_0xde95('0x66')]['findOne']({'where':{'id':_0x1bcc1d[_0xde95('0x4b')][_0xde95('0x70')]},'attributes':['id',_0xde95('0x2d'),_0xde95('0x67'),_0xde95('0x68'),'createdAt'],'raw':!![]});}})[_0xde95('0x29')](function(_0x17e534){if(_0x17e534){fs[_0xde95('0x60')](path[_0xde95('0x53')](_0x49b5dd[_0xde95('0x52')],util[_0xde95('0x6a')](_0xde95('0x6b'),_0x17e534[_0xde95('0x2d')],_0x17e534[_0xde95('0x68')])));return _0x17e534;}})['catch'](function(_0x31e017){throw new db[(_0xde95('0x62'))][(_0xde95('0x63'))](_0x31e017[_0xde95('0x64')]);});})[_0xde95('0x29')](handleEntityNotFound(_0xacb330,null))[_0xde95('0x29')](respondWithStatusCode(_0xacb330,0xcc))[_0xde95('0x49')](handleError(_0xacb330,null));};exports['getSounds']=function(_0x56f0b9,_0x226286,_0x318642){var _0x12cf04={};var _0x3d86fb={};var _0x51ea69;var _0x2fff21;return db[_0xde95('0x2f')][_0xde95('0x71')]({'where':{'id':_0x56f0b9[_0xde95('0x4b')]['id']}})['then'](handleEntityNotFound(_0x226286,null))['then'](function(_0x953333){if(_0x953333){_0x51ea69=_0x953333;_0x3d86fb['model']=_[_0xde95('0x4c')](db['Sound'][_0xde95('0x30')]);_0x3d86fb[_0xde95('0x36')]=_[_0xde95('0x4c')](_0x56f0b9[_0xde95('0x36')]);_0x3d86fb[_0xde95('0x3e')]=_[_0xde95('0x38')](_0x3d86fb[_0xde95('0x34')],_0x3d86fb['query']);_0x12cf04[_0xde95('0x37')]=_[_0xde95('0x38')](_0x3d86fb[_0xde95('0x34')],qs[_0xde95('0x39')](_0x56f0b9['query'][_0xde95('0x39')]));_0x12cf04['attributes']=_0x12cf04[_0xde95('0x37')]['length']?_0x12cf04[_0xde95('0x37')]:_0x3d86fb[_0xde95('0x34')];_0x12cf04[_0xde95('0x3c')]=qs['sort'](_0x56f0b9['query']['sort']);_0x12cf04['where']=qs['filters'](_['pick'](_0x56f0b9[_0xde95('0x36')],_0x3d86fb['filters']));if(_0x56f0b9['query']['filter']){_0x12cf04[_0xde95('0x41')]=_[_0xde95('0x42')](_0x12cf04['where'],{'$or':_['map'](_0x12cf04[_0xde95('0x37')],function(_0x7a3f3a){var _0x1d66ec={};_0x1d66ec[_0x7a3f3a]={'$like':'%'+_0x56f0b9[_0xde95('0x36')][_0xde95('0x40')]+'%'};return _0x1d66ec;})});}_0x12cf04=_[_0xde95('0x42')]({},_0x12cf04,_0x56f0b9[_0xde95('0x44')]);return _0x51ea69['getSounds'](_0x12cf04);}})['then'](function(_0x426b5e){if(_0x426b5e){_0x2fff21=_0x426b5e[_0xde95('0x4d')];if(!_0x56f0b9[_0xde95('0x36')][_0xde95('0x3a')](_0xde95('0x3b'))){_0x12cf04[_0xde95('0x1f')]=qs[_0xde95('0x1f')](_0x56f0b9[_0xde95('0x36')][_0xde95('0x1f')]);_0x12cf04[_0xde95('0x21')]=qs[_0xde95('0x21')](_0x56f0b9['query']['offset']);}return _0x51ea69[_0xde95('0x72')](_0x12cf04);}})[_0xde95('0x29')](function(_0x2d109d){if(_0x2d109d){return _0x2d109d?{'count':_0x2fff21,'rows':_0x2d109d}:null;}})[_0xde95('0x29')](respondWithResult(_0x226286,null))[_0xde95('0x49')](handleError(_0x226286,null));};
\ No newline at end of file
+var _0x03af=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','show','params','includeAll','include','find','body','create','sequelize','transaction','files','directory','join','root','server/files/moh','mode','mkdirSync','user','get','UserProfileSection','userProfileId','autoAssociation','readdirSync','unlinkSync','rmdirSync','Sequelize','message','addSound','findOne','save_name','converted_format','createdAt','format','basename','extname','symlinkSync','ValidationError','removeSound','id2','Sound','%s.%s','getSounds','eml-format','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','type','key','model','query','keys'];(function(_0x5ea0fd,_0x3c36e4){var _0x32ebf6=function(_0x4ee91d){while(--_0x4ee91d){_0x5ea0fd['push'](_0x5ea0fd['shift']());}};_0x32ebf6(++_0x3c36e4);}(_0x03af,0x191));var _0xf03a=function(_0x25de51,_0x104ef9){_0x25de51=_0x25de51-0x0;var _0x36b88e=_0x03af[_0x25de51];return _0x36b88e;};'use strict';var emlformat=require(_0xf03a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf03a('0x1'));var BPromise=require(_0xf03a('0x2'));var Mustache=require(_0xf03a('0x3'));var util=require(_0xf03a('0x4'));var path=require(_0xf03a('0x5'));var sox=require(_0xf03a('0x6'));var csv=require('to-csv');var ejs=require(_0xf03a('0x7'));var fs=require('fs');var fs_extra=require(_0xf03a('0x8'));var _=require(_0xf03a('0x9'));var squel=require(_0xf03a('0xa'));var crypto=require(_0xf03a('0xb'));var jsforce=require(_0xf03a('0xc'));var deskjs=require(_0xf03a('0xd'));var toCsv=require(_0xf03a('0xe'));var querystring=require(_0xf03a('0xf'));var Papa=require('papaparse');var Redis=require(_0xf03a('0x10'));var authService=require(_0xf03a('0x11'));var qs=require(_0xf03a('0x12'));var as=require(_0xf03a('0x13'));var hardwareService=require(_0xf03a('0x14'));var logger=require(_0xf03a('0x15'))(_0xf03a('0x16'));var utils=require('../../config/utils');var config=require(_0xf03a('0x17'));var licenseUtil=require(_0xf03a('0x18'));var db=require(_0xf03a('0x19'))['db'];function respondWithStatusCode(_0x5f2af7,_0x1bd1f5){_0x1bd1f5=_0x1bd1f5||0xcc;return function(_0x26750a){if(_0x26750a){return _0x5f2af7[_0xf03a('0x1a')](_0x1bd1f5);}return _0x5f2af7[_0xf03a('0x1b')](_0x1bd1f5)[_0xf03a('0x1c')]();};}function respondWithResult(_0x592d90,_0x21fa2c){_0x21fa2c=_0x21fa2c||0xc8;return function(_0x35abcb){if(_0x35abcb){return _0x592d90['status'](_0x21fa2c)[_0xf03a('0x1d')](_0x35abcb);}};}function respondWithFilteredResult(_0xdce09f,_0x3507b7){return function(_0x577a49){if(_0x577a49){var _0x53f978=typeof _0x3507b7['offset']===_0xf03a('0x1e')&&typeof _0x3507b7[_0xf03a('0x1f')]===_0xf03a('0x1e');var _0x779515=_0x577a49[_0xf03a('0x20')];var _0x24cbe4=_0x53f978?0x0:_0x3507b7[_0xf03a('0x21')];var _0x236202=_0x53f978?_0x577a49[_0xf03a('0x20')]:_0x3507b7[_0xf03a('0x21')]+_0x3507b7[_0xf03a('0x1f')];var _0x148900;if(_0x236202>=_0x779515){_0x236202=_0x779515;_0x148900=0xc8;}else{_0x148900=0xce;}_0xdce09f['status'](_0x148900);return _0xdce09f[_0xf03a('0x22')](_0xf03a('0x23'),_0x24cbe4+'-'+_0x236202+'/'+_0x779515)[_0xf03a('0x1d')](_0x577a49);}return null;};}function patchUpdates(_0xec8c35){return function(_0x3f9fef){try{jsonpatch[_0xf03a('0x24')](_0x3f9fef,_0xec8c35,!![]);}catch(_0x6beffb){return BPromise[_0xf03a('0x25')](_0x6beffb);}return _0x3f9fef['save']();};}function saveUpdates(_0x4bbe15,_0x123fef){return function(_0x38dd48){if(_0x38dd48){return _0x38dd48[_0xf03a('0x26')](_0x4bbe15)[_0xf03a('0x27')](function(_0x16c554){return _0x16c554;});}return null;};}function removeEntity(_0x1e94fa,_0x2a105a){return function(_0x59b714){if(_0x59b714){return _0x59b714[_0xf03a('0x28')]()[_0xf03a('0x27')](function(){var _0x4b2c09=_0x59b714['get']({'plain':!![]});var _0x5d8c3a='MusicOnHolds';return db[_0xf03a('0x29')][_0xf03a('0x28')]({'where':{'type':_0x5d8c3a,'resourceId':_0x4b2c09['id']}})[_0xf03a('0x27')](function(){return _0x59b714;});})[_0xf03a('0x27')](function(){_0x1e94fa[_0xf03a('0x1b')](0xcc)[_0xf03a('0x1c')]();});}};}function handleEntityNotFound(_0x4bca2f,_0x3008df){return function(_0x320a84){if(!_0x320a84){_0x4bca2f[_0xf03a('0x1a')](0x194);}return _0x320a84;};}function handleError(_0x5d7459,_0x560e54){_0x560e54=_0x560e54||0x1f4;return function(_0x281036){logger[_0xf03a('0x2a')](_0x281036[_0xf03a('0x2b')]);if(_0x281036[_0xf03a('0x2c')]){delete _0x281036[_0xf03a('0x2c')];}_0x5d7459[_0xf03a('0x1b')](_0x560e54)[_0xf03a('0x2d')](_0x281036);};}exports[_0xf03a('0x2e')]=function(_0x5c90b2,_0x3d2c1e){var _0x2f5f01={},_0x30ffa3={},_0x481a68={'count':0x0,'rows':[]};var _0x5b708f=_[_0xf03a('0x2f')](db[_0xf03a('0x30')][_0xf03a('0x31')],function(_0x4341d9){return{'name':_0x4341d9['fieldName'],'type':_0x4341d9[_0xf03a('0x32')][_0xf03a('0x33')]};});_0x30ffa3[_0xf03a('0x34')]=_['map'](_0x5b708f,_0xf03a('0x2c'));_0x30ffa3[_0xf03a('0x35')]=_[_0xf03a('0x36')](_0x5c90b2['query']);_0x30ffa3[_0xf03a('0x37')]=_[_0xf03a('0x38')](_0x30ffa3[_0xf03a('0x34')],_0x30ffa3[_0xf03a('0x35')]);_0x2f5f01[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0x30ffa3[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3a')]));_0x2f5f01[_0xf03a('0x39')]=_0x2f5f01[_0xf03a('0x39')][_0xf03a('0x3b')]?_0x2f5f01[_0xf03a('0x39')]:_0x30ffa3[_0xf03a('0x34')];if(!_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3c')](_0xf03a('0x3d'))){_0x2f5f01['limit']=qs[_0xf03a('0x1f')](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x1f')]);_0x2f5f01[_0xf03a('0x21')]=qs['offset'](_0x5c90b2[_0xf03a('0x35')][_0xf03a('0x21')]);}_0x2f5f01[_0xf03a('0x3e')]=qs['sort'](_0x5c90b2['query']['sort']);delete _0x5c90b2[_0xf03a('0x35')][_0xf03a('0x3f')];_0x2f5f01[_0xf03a('0x40')]=qs[_0xf03a('0x37')](_[_0xf03a('0x41')](_0x5c90b2[_0xf03a('0x35')],_0x30ffa3['filters']),_0x5b708f);if(_0x5c90b2[_0xf03a('0x35')]['filter']){_0x2f5f01['where']=_[_0xf03a('0x42')](_0x2f5f01['where'],{'$or':_[_0xf03a('0x2f')](_0x5b708f,function(_0x4bb9e8){if(_0x4bb9e8[_0xf03a('0x32')]!==_0xf03a('0x43')){var _0x23f4e4={};_0x23f4e4[_0x4bb9e8[_0xf03a('0x2c')]]={'$like':'%'+_0x5c90b2['query'][_0xf03a('0x44')]+'%'};return _0x23f4e4;}})});}_0x2f5f01=_[_0xf03a('0x42')]({},_0x2f5f01,_0x5c90b2[_0xf03a('0x45')]);var _0x4884f1={'where':_0x2f5f01['where']};return db[_0xf03a('0x30')]['count'](_0x4884f1)[_0xf03a('0x27')](function(_0x3b556a){_0x481a68[_0xf03a('0x20')]=_0x3b556a;if(_0x5c90b2[_0xf03a('0x35')]['includeAll']){_0x2f5f01['include']=[{'all':!![]}];}return db[_0xf03a('0x30')][_0xf03a('0x46')](_0x2f5f01);})[_0xf03a('0x27')](function(_0x462ec1){_0x481a68[_0xf03a('0x47')]=_0x462ec1;return _0x481a68;})[_0xf03a('0x27')](respondWithFilteredResult(_0x3d2c1e,_0x2f5f01))[_0xf03a('0x48')](handleError(_0x3d2c1e,null));};exports[_0xf03a('0x49')]=function(_0x2335af,_0x2769c2){var _0x29f147={'raw':![],'where':{'id':_0x2335af[_0xf03a('0x4a')]['id']}},_0xca708f={};_0xca708f[_0xf03a('0x34')]=_[_0xf03a('0x36')](db[_0xf03a('0x30')][_0xf03a('0x31')]);_0xca708f[_0xf03a('0x35')]=_[_0xf03a('0x36')](_0x2335af[_0xf03a('0x35')]);_0xca708f['filters']=_[_0xf03a('0x38')](_0xca708f[_0xf03a('0x34')],_0xca708f['query']);_0x29f147[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0xca708f[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x2335af['query']['fields']));_0x29f147[_0xf03a('0x39')]=_0x29f147['attributes']['length']?_0x29f147[_0xf03a('0x39')]:_0xca708f[_0xf03a('0x34')];if(_0x2335af[_0xf03a('0x35')][_0xf03a('0x4b')]){_0x29f147[_0xf03a('0x4c')]=[{'all':!![]}];}_0x29f147=_[_0xf03a('0x42')]({},_0x29f147,_0x2335af[_0xf03a('0x45')]);return db[_0xf03a('0x30')][_0xf03a('0x4d')](_0x29f147)[_0xf03a('0x27')](handleEntityNotFound(_0x2769c2,null))[_0xf03a('0x27')](respondWithResult(_0x2769c2,null))[_0xf03a('0x48')](handleError(_0x2769c2,null));};exports[_0xf03a('0x26')]=function(_0x1d534b,_0x277cd6){if(_0x1d534b[_0xf03a('0x4e')]['id']){delete _0x1d534b[_0xf03a('0x4e')]['id'];}return db[_0xf03a('0x30')]['find']({'where':{'id':_0x1d534b[_0xf03a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x277cd6,null))['then'](saveUpdates(_0x1d534b[_0xf03a('0x4e')],null))[_0xf03a('0x27')](respondWithResult(_0x277cd6,null))[_0xf03a('0x48')](handleError(_0x277cd6,null));};exports[_0xf03a('0x4f')]=function(_0x86a476,_0x3fd424,_0x5b32c6){return db[_0xf03a('0x50')][_0xf03a('0x51')](function(_0x3e8229){if(_0x86a476[_0xf03a('0x4e')]['mode']===_0xf03a('0x52')){_0x86a476[_0xf03a('0x4e')][_0xf03a('0x53')]=path[_0xf03a('0x54')](config[_0xf03a('0x55')],_0xf03a('0x56'),_0x86a476[_0xf03a('0x4e')]['name']);}return db['VoiceMusicOnHold'][_0xf03a('0x4f')](_0x86a476['body'],{'transaction':_0x3e8229})['then'](function(_0x4a11f6){if(_0x86a476[_0xf03a('0x4e')][_0xf03a('0x57')]===_0xf03a('0x52')){fs[_0xf03a('0x58')](_0x4a11f6[_0xf03a('0x53')],parseInt('0777',0x8));}var _0x5ab811=_0x86a476[_0xf03a('0x59')][_0xf03a('0x5a')]({'plain':!![]});if(!_0x5ab811)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ab811['role']===_0xf03a('0x59')){var _0x46c19b=_0x4a11f6['get']({'plain':!![]});return db[_0xf03a('0x5b')][_0xf03a('0x4d')]({'where':{'name':'MusicOnHolds','userProfileId':_0x5ab811[_0xf03a('0x5c')]},'raw':!![]})[_0xf03a('0x27')](function(_0x59895e){if(_0x59895e&&_0x59895e[_0xf03a('0x5d')]===0x0){return db[_0xf03a('0x29')][_0xf03a('0x4f')]({'name':_0x46c19b[_0xf03a('0x2c')],'resourceId':_0x46c19b['id'],'type':_0x59895e[_0xf03a('0x2c')],'sectionId':_0x59895e['id']},{})[_0xf03a('0x27')](function(){return _0x4a11f6;});}else{return _0x4a11f6;}})['catch'](function(_0x592774){logger[_0xf03a('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x592774);});}return _0x4a11f6;});})[_0xf03a('0x27')](respondWithResult(_0x3fd424,0xc9))['catch'](handleError(_0x3fd424,null));};exports[_0xf03a('0x28')]=function(_0x40df38,_0x44d795,_0x4aab91){var _0x38d10c;return db[_0xf03a('0x30')][_0xf03a('0x4d')]({'where':{'id':_0x40df38[_0xf03a('0x4a')]['id']}})['then'](function(_0x42d34d){if(_0x42d34d){return db['sequelize'][_0xf03a('0x51')](function(_0x4d4047){return _0x42d34d[_0xf03a('0x28')]({'transaction':_0x4d4047,'raw':!![]})[_0xf03a('0x27')](function(_0x4ce6b2){if(_0x4ce6b2['directory']){fs[_0xf03a('0x5e')](_0x4ce6b2[_0xf03a('0x53')])['forEach'](function(_0x441099){fs[_0xf03a('0x5f')](path['join'](_0x4ce6b2['directory'],_0x441099));});fs[_0xf03a('0x60')](_0x4ce6b2['directory']);}return _0x4ce6b2;});})[_0xf03a('0x48')](function(_0x3595fa){throw new db[(_0xf03a('0x61'))]['ValidationError'](_0x3595fa[_0xf03a('0x62')]);});}})[_0xf03a('0x27')](handleEntityNotFound(_0x44d795,null))[_0xf03a('0x27')](removeEntity(_0x44d795,null))[_0xf03a('0x48')](handleError(_0x44d795,null));};exports[_0xf03a('0x63')]=function(_0x5a9e48,_0xbea1f7,_0x14175f){return db['sequelize'][_0xf03a('0x51')](function(_0x2f9cf6){var _0x443109;return db[_0xf03a('0x30')][_0xf03a('0x4d')]({'where':{'id':_0x5a9e48['params']['id']}})[_0xf03a('0x27')](function(_0x1e2cc3){if(_0x1e2cc3){_0x443109=_0x1e2cc3;return _0x1e2cc3[_0xf03a('0x63')](_0x5a9e48['body']['id'],{'transaction':_0x2f9cf6});}})[_0xf03a('0x27')](function(_0x58f247){if(_0x58f247){return db['Sound'][_0xf03a('0x64')]({'where':{'id':_0x5a9e48[_0xf03a('0x4e')]['id']},'attributes':['id',_0xf03a('0x2c'),_0xf03a('0x65'),_0xf03a('0x66'),_0xf03a('0x67')],'raw':!![]});}})[_0xf03a('0x27')](function(_0x231795){if(_0x231795){var _0x4bb512=path[_0xf03a('0x54')](config[_0xf03a('0x55')],'server/files/sounds/converted',util[_0xf03a('0x68')]('%s.%s',path[_0xf03a('0x69')](_0x231795[_0xf03a('0x65')],path[_0xf03a('0x6a')](_0x231795[_0xf03a('0x65')])),_0x231795[_0xf03a('0x66')]));var _0x416c2c=path[_0xf03a('0x54')](config[_0xf03a('0x55')],_0xf03a('0x56'),_0x443109[_0xf03a('0x2c')],util[_0xf03a('0x68')]('%s.%s',_0x231795[_0xf03a('0x2c')],_0x231795[_0xf03a('0x66')]));fs[_0xf03a('0x6b')](_0x4bb512,_0x416c2c);return _0x231795;}})[_0xf03a('0x48')](function(_0x27d441){throw new db[(_0xf03a('0x61'))][(_0xf03a('0x6c'))](_0x27d441[_0xf03a('0x62')]);});})[_0xf03a('0x27')](handleEntityNotFound(_0xbea1f7,null))[_0xf03a('0x27')](respondWithResult(_0xbea1f7,0xc9))['catch'](handleError(_0xbea1f7,null));};exports[_0xf03a('0x6d')]=function(_0x47ca0d,_0x3601a2,_0x5c55fc){return db[_0xf03a('0x50')][_0xf03a('0x51')](function(_0x57ef80){var _0x11830b;return db[_0xf03a('0x30')][_0xf03a('0x64')]({'where':{'id':_0x47ca0d[_0xf03a('0x4a')]['id']}})[_0xf03a('0x27')](handleEntityNotFound(_0x3601a2,null))['then'](function(_0x517a81){if(_0x517a81){_0x11830b=_0x517a81;return _0x517a81['removeSound'](_0x47ca0d[_0xf03a('0x4a')][_0xf03a('0x6e')]);}})[_0xf03a('0x27')](function(_0x397fc0){if(_0x397fc0){return db[_0xf03a('0x6f')]['findOne']({'where':{'id':_0x47ca0d[_0xf03a('0x4a')][_0xf03a('0x6e')]},'attributes':['id',_0xf03a('0x2c'),_0xf03a('0x65'),'converted_format',_0xf03a('0x67')],'raw':!![]});}})['then'](function(_0x18df8e){if(_0x18df8e){fs[_0xf03a('0x5f')](path[_0xf03a('0x54')](_0x11830b[_0xf03a('0x53')],util[_0xf03a('0x68')](_0xf03a('0x70'),_0x18df8e[_0xf03a('0x2c')],_0x18df8e['converted_format'])));return _0x18df8e;}})['catch'](function(_0x1ad3ee){throw new db[(_0xf03a('0x61'))]['ValidationError'](_0x1ad3ee['message']);});})['then'](handleEntityNotFound(_0x3601a2,null))[_0xf03a('0x27')](respondWithStatusCode(_0x3601a2,0xcc))[_0xf03a('0x48')](handleError(_0x3601a2,null));};exports[_0xf03a('0x71')]=function(_0x4f0a50,_0x2c8a49,_0x143c68){var _0x23fa3a={};var _0x5816d9={};var _0xd3ffc8;var _0x49e948;return db[_0xf03a('0x30')]['findOne']({'where':{'id':_0x4f0a50[_0xf03a('0x4a')]['id']}})[_0xf03a('0x27')](handleEntityNotFound(_0x2c8a49,null))[_0xf03a('0x27')](function(_0x3cd894){if(_0x3cd894){_0xd3ffc8=_0x3cd894;_0x5816d9[_0xf03a('0x34')]=_['keys'](db[_0xf03a('0x6f')]['rawAttributes']);_0x5816d9[_0xf03a('0x35')]=_['keys'](_0x4f0a50[_0xf03a('0x35')]);_0x5816d9[_0xf03a('0x37')]=_[_0xf03a('0x38')](_0x5816d9['model'],_0x5816d9[_0xf03a('0x35')]);_0x23fa3a[_0xf03a('0x39')]=_[_0xf03a('0x38')](_0x5816d9[_0xf03a('0x34')],qs[_0xf03a('0x3a')](_0x4f0a50[_0xf03a('0x35')]['fields']));_0x23fa3a[_0xf03a('0x39')]=_0x23fa3a[_0xf03a('0x39')]['length']?_0x23fa3a['attributes']:_0x5816d9[_0xf03a('0x34')];_0x23fa3a['order']=qs[_0xf03a('0x3f')](_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x3f')]);_0x23fa3a[_0xf03a('0x40')]=qs[_0xf03a('0x37')](_[_0xf03a('0x41')](_0x4f0a50[_0xf03a('0x35')],_0x5816d9['filters']));if(_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x44')]){_0x23fa3a[_0xf03a('0x40')]=_[_0xf03a('0x42')](_0x23fa3a[_0xf03a('0x40')],{'$or':_[_0xf03a('0x2f')](_0x23fa3a[_0xf03a('0x39')],function(_0x4c45cb){var _0x7c75bd={};_0x7c75bd[_0x4c45cb]={'$like':'%'+_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x44')]+'%'};return _0x7c75bd;})});}_0x23fa3a=_[_0xf03a('0x42')]({},_0x23fa3a,_0x4f0a50[_0xf03a('0x45')]);return _0xd3ffc8[_0xf03a('0x71')](_0x23fa3a);}})['then'](function(_0x52d5a9){if(_0x52d5a9){_0x49e948=_0x52d5a9[_0xf03a('0x3b')];if(!_0x4f0a50['query'][_0xf03a('0x3c')](_0xf03a('0x3d'))){_0x23fa3a[_0xf03a('0x1f')]=qs[_0xf03a('0x1f')](_0x4f0a50[_0xf03a('0x35')][_0xf03a('0x1f')]);_0x23fa3a[_0xf03a('0x21')]=qs[_0xf03a('0x21')](_0x4f0a50['query'][_0xf03a('0x21')]);}return _0xd3ffc8[_0xf03a('0x71')](_0x23fa3a);}})[_0xf03a('0x27')](function(_0x285802){if(_0x285802){return _0x285802?{'count':_0x49e948,'rows':_0x285802}:null;}})['then'](respondWithResult(_0x2c8a49,null))[_0xf03a('0x48')](handleError(_0x2c8a49,null));};
\ No newline at end of file
index 20d1143..4265a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f7=['define','VoiceMusicOnHold','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports'];(function(_0x4b7454,_0x553040){var _0x2e8f2f=function(_0x29bf92){while(--_0x29bf92){_0x4b7454['push'](_0x4b7454['shift']());}};_0x2e8f2f(++_0x553040);}(_0xa1f7,0xda));var _0x7a1f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa1f7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7a1f('0x0'));var util=require('util');var logger=require(_0x7a1f('0x1'))(_0x7a1f('0x2'));var moment=require(_0x7a1f('0x3'));var BPromise=require('bluebird');var rp=require(_0x7a1f('0x4'));var fs=require('fs');var path=require(_0x7a1f('0x5'));var rimraf=require(_0x7a1f('0x6'));var config=require(_0x7a1f('0x7'));var attributes=require(_0x7a1f('0x8'));module[_0x7a1f('0x9')]=function(_0x2b85ce,_0x343850){return _0x2b85ce[_0x7a1f('0xa')](_0x7a1f('0xb'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe295=['define','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2b1b2e,_0x1557ff){var _0x419099=function(_0x536efd){while(--_0x536efd){_0x2b1b2e['push'](_0x2b1b2e['shift']());}};_0x419099(++_0x1557ff);}(_0xe295,0xd0));var _0x5e29=function(_0x502ca3,_0x36be36){_0x502ca3=_0x502ca3-0x0;var _0x27f42c=_0xe295[_0x502ca3];return _0x27f42c;};'use strict';var _=require('lodash');var util=require(_0x5e29('0x0'));var logger=require(_0x5e29('0x1'))('api');var moment=require(_0x5e29('0x2'));var BPromise=require(_0x5e29('0x3'));var rp=require(_0x5e29('0x4'));var fs=require('fs');var path=require(_0x5e29('0x5'));var rimraf=require(_0x5e29('0x6'));var config=require(_0x5e29('0x7'));var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x542ede,_0x188c5d){return _0x542ede[_0x5e29('0x8')]('VoiceMusicOnHold',attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 487a98b..b02bab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x572d9a,_0x4d90f8){var _0xe7d234=function(_0x559b62){while(--_0x559b62){_0x572d9a['push'](_0x572d9a['shift']());}};_0xe7d234(++_0x4d90f8);}(_0x70e0,0x17b));var _0x070e=function(_0x4d716e,_0x36df3b){_0x4d716e=_0x4d716e-0x0;var _0x43f08f=_0x70e0[_0x4d716e];return _0x43f08f;};'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
+var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4ca5dc,_0x55177d){var _0x3b12ab=function(_0x533f24){while(--_0x533f24){_0x4ca5dc['push'](_0x4ca5dc['shift']());}};_0x3b12ab(++_0x55177d);}(_0xe706,0xa3));var _0x6e70=function(_0x34c825,_0x44cad4){_0x34c825=_0x34c825-0x0;var _0x2fde13=_0xe706[_0x34c825];return _0x2fde13;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index e7bf01f..b35e060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d4f=['/describe','describe','isAuthenticated','show','/:id/users','getTeams','create','post','addAgents','/:id/teams','addTeams','put','/:id','update','delete','destroy','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get'];(function(_0xad5b6b,_0xb15682){var _0x2ab492=function(_0x42bc56){while(--_0x42bc56){_0xad5b6b['push'](_0xad5b6b['shift']());}};_0x2ab492(++_0xb15682);}(_0x6d4f,0x121));var _0xf6d4=function(_0x88fab1,_0x1accff){_0x88fab1=_0x88fab1-0x0;var _0x20c571=_0x6d4f[_0x88fab1];return _0x20c571;};'use strict';var multer=require(_0xf6d4('0x0'));var util=require(_0xf6d4('0x1'));var path=require(_0xf6d4('0x2'));var timeout=require(_0xf6d4('0x3'));var express=require(_0xf6d4('0x4'));var router=express[_0xf6d4('0x5')]();var fs_extra=require(_0xf6d4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf6d4('0x7'));var config=require(_0xf6d4('0x8'));var controller=require(_0xf6d4('0x9'));router[_0xf6d4('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf6d4('0xa')](_0xf6d4('0xb'),auth['isAuthenticated'](),controller[_0xf6d4('0xc')]);router['get']('/:id',auth[_0xf6d4('0xd')](),controller[_0xf6d4('0xe')]);router[_0xf6d4('0xa')](_0xf6d4('0xf'),auth[_0xf6d4('0xd')](),controller['getAgents']);router[_0xf6d4('0xa')]('/:id/teams',auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x10')]);router['post']('/',auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x11')]);router[_0xf6d4('0x12')](_0xf6d4('0xf'),auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x13')]);router[_0xf6d4('0x12')](_0xf6d4('0x14'),auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x15')]);router[_0xf6d4('0x16')](_0xf6d4('0x17'),auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x18')]);router[_0xf6d4('0x19')](_0xf6d4('0x17'),auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x1a')]);router[_0xf6d4('0x19')](_0xf6d4('0xf'),auth['isAuthenticated'](),controller[_0xf6d4('0x1b')]);router[_0xf6d4('0x19')](_0xf6d4('0x14'),auth[_0xf6d4('0xd')](),controller[_0xf6d4('0x1c')]);module[_0xf6d4('0x1d')]=router;
\ No newline at end of file
+var _0x5e67=['update','removeAgents','delete','removeTeams','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','/:id','show','/:id/users','getAgents','getTeams','create','post','addAgents','/:id/teams','put'];(function(_0x35f635,_0x47dc4b){var _0x55b60a=function(_0x3cdc2){while(--_0x3cdc2){_0x35f635['push'](_0x35f635['shift']());}};_0x55b60a(++_0x47dc4b);}(_0x5e67,0x70));var _0x75e6=function(_0x2ea202,_0xdbba97){_0x2ea202=_0x2ea202-0x0;var _0x13c370=_0x5e67[_0x2ea202];return _0x13c370;};'use strict';var multer=require(_0x75e6('0x0'));var util=require(_0x75e6('0x1'));var path=require(_0x75e6('0x2'));var timeout=require(_0x75e6('0x3'));var express=require(_0x75e6('0x4'));var router=express[_0x75e6('0x5')]();var fs_extra=require(_0x75e6('0x6'));var auth=require(_0x75e6('0x7'));var interaction=require(_0x75e6('0x8'));var config=require(_0x75e6('0x9'));var controller=require(_0x75e6('0xa'));router[_0x75e6('0xb')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x75e6('0xc')](),controller['describe']);router[_0x75e6('0xb')](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller[_0x75e6('0xe')]);router['get'](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x10')]);router['get']('/:id/teams',auth[_0x75e6('0xc')](),controller[_0x75e6('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x75e6('0x12')]);router[_0x75e6('0x13')](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x14')]);router[_0x75e6('0x13')](_0x75e6('0x15'),auth[_0x75e6('0xc')](),controller['addTeams']);router[_0x75e6('0x16')](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x17')]);router['delete'](_0x75e6('0xd'),auth[_0x75e6('0xc')](),controller['destroy']);router['delete'](_0x75e6('0xf'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x18')]);router[_0x75e6('0x19')](_0x75e6('0x15'),auth[_0x75e6('0xc')](),controller[_0x75e6('0x1a')]);module['exports']=router;
\ No newline at end of file
index feb54ef..3520051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b6=['name','VIRTUAL','system-','getDataValue','STRING','INTEGER'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xb8b6,0x144));var _0x6b8b=function(_0x2d9e34,_0x54344c){_0x2d9e34=_0x2d9e34-0x0;var _0x110b8e=_0xb8b6[_0x2d9e34];return _0x110b8e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x6b8b('0x0')},'prefix':{'type':Sequelize[_0x6b8b('0x1')],'get':function(_0x481a09){return _0x6b8b('0x2')+this[_0x6b8b('0x3')](_0x6b8b('0x0'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x6b8b('0x4')]},'VoiceExtensionId':{'type':Sequelize[_0x6b8b('0x5')]}};
\ No newline at end of file
+var _0x1901=['exports','STRING','name','system-','getDataValue','INTEGER','sequelize'];(function(_0x1666af,_0x3d5121){var _0x247b79=function(_0xec9044){while(--_0xec9044){_0x1666af['push'](_0x1666af['shift']());}};_0x247b79(++_0x3d5121);}(_0x1901,0xc3));var _0x1190=function(_0x48eef4,_0x54ca8f){_0x48eef4=_0x48eef4-0x0;var _0xbcb029=_0x1901[_0x48eef4];return _0xbcb029;};'use strict';var Sequelize=require(_0x1190('0x0'));module[_0x1190('0x1')]={'name':{'type':Sequelize[_0x1190('0x2')],'allowNull':![],'unique':_0x1190('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x5a9e07){return _0x1190('0x4')+this[_0x1190('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0x1190('0x2')]},'callerIdAll':{'type':Sequelize[_0x1190('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x1190('0x6')]}};
\ No newline at end of file
index 7a4c1de..da56b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['show','params','rawAttributes','length','merge','find','sequelize','transaction','body','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoicePrefixes','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','type','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','VoiceExtensionId','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','PREFIX-CALLERIDALL=','callerIdAll','goto','charAt','update','system-','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','hasOwnProperty','getTeams','Team','Agents','voicePause','flatMap','addTeams','each','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','QueryTypes','SELECT','every','includes','all','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','VoicePrefix','fieldName','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x5eb4c5,_0x9d2b75){var _0x3bdec4=function(_0x462532){while(--_0x462532){_0x5eb4c5['push'](_0x5eb4c5['shift']());}};_0x3bdec4(++_0x9d2b75);}(_0x0abf,0xe8));var _0xf0ab=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x0abf[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0ab('0x11'));var logger=require('../../config/logger')(_0xf0ab('0x12'));var utils=require(_0xf0ab('0x13'));var config=require(_0xf0ab('0x14'));var licenseUtil=require(_0xf0ab('0x15'));var db=require(_0xf0ab('0x16'))['db'];config[_0xf0ab('0x17')]=_[_0xf0ab('0x18')](config['redis'],{'host':_0xf0ab('0x19'),'port':0x18eb});var socket=require(_0xf0ab('0x1a'))(new Redis(config[_0xf0ab('0x17')]));require(_0xf0ab('0x1b'))[_0xf0ab('0x1c')](socket);function respondWithStatusCode(_0x36cabe,_0x3d7129){_0x3d7129=_0x3d7129||0xcc;return function(_0x1fb4e5){if(_0x1fb4e5){return _0x36cabe[_0xf0ab('0x1d')](_0x3d7129);}return _0x36cabe[_0xf0ab('0x1e')](_0x3d7129)[_0xf0ab('0x1f')]();};}function respondWithResult(_0x221bac,_0x200cf5){_0x200cf5=_0x200cf5||0xc8;return function(_0x2f4618){if(_0x2f4618){return _0x221bac[_0xf0ab('0x1e')](_0x200cf5)['json'](_0x2f4618);}};}function respondWithFilteredResult(_0x457465,_0x9e3b47){return function(_0x1803f0){if(_0x1803f0){var _0x1ffeb5=typeof _0x9e3b47[_0xf0ab('0x20')]===_0xf0ab('0x21')&&typeof _0x9e3b47[_0xf0ab('0x22')]===_0xf0ab('0x21');var _0x1713d6=_0x1803f0[_0xf0ab('0x23')];var _0x715579=_0x1ffeb5?0x0:_0x9e3b47[_0xf0ab('0x20')];var _0xf43bc4=_0x1ffeb5?_0x1803f0[_0xf0ab('0x23')]:_0x9e3b47[_0xf0ab('0x20')]+_0x9e3b47[_0xf0ab('0x22')];var _0x537673;if(_0xf43bc4>=_0x1713d6){_0xf43bc4=_0x1713d6;_0x537673=0xc8;}else{_0x537673=0xce;}_0x457465[_0xf0ab('0x1e')](_0x537673);return _0x457465[_0xf0ab('0x24')](_0xf0ab('0x25'),_0x715579+'-'+_0xf43bc4+'/'+_0x1713d6)[_0xf0ab('0x26')](_0x1803f0);}return null;};}function patchUpdates(_0x3bf6a1){return function(_0x374531){try{jsonpatch[_0xf0ab('0x27')](_0x374531,_0x3bf6a1,!![]);}catch(_0x20140b){return BPromise[_0xf0ab('0x28')](_0x20140b);}return _0x374531[_0xf0ab('0x29')]();};}function saveUpdates(_0x43119f,_0x5645b2){return function(_0x585841){if(_0x585841){return _0x585841['update'](_0x43119f)[_0xf0ab('0x2a')](function(_0x4f0caf){return _0x4f0caf;});}return null;};}function removeEntity(_0x3eca32,_0x16b979){return function(_0x51ac90){if(_0x51ac90){return _0x51ac90[_0xf0ab('0x2b')]()[_0xf0ab('0x2a')](function(){var _0x10bf5f=_0x51ac90[_0xf0ab('0x2c')]({'plain':!![]});var _0x7d4ff9='VoicePrefixes';return db[_0xf0ab('0x2d')]['destroy']({'where':{'type':_0x7d4ff9,'resourceId':_0x10bf5f['id']}})['then'](function(){return _0x51ac90;});})[_0xf0ab('0x2a')](function(){_0x3eca32[_0xf0ab('0x1e')](0xcc)[_0xf0ab('0x1f')]();});}};}function handleEntityNotFound(_0x445160,_0x43476c){return function(_0x174052){if(!_0x174052){_0x445160[_0xf0ab('0x1d')](0x194);}return _0x174052;};}function handleError(_0x14da9c,_0x76a3f3){_0x76a3f3=_0x76a3f3||0x1f4;return function(_0x2f0fcd){logger[_0xf0ab('0x2e')](_0x2f0fcd[_0xf0ab('0x2f')]);if(_0x2f0fcd['name']){delete _0x2f0fcd[_0xf0ab('0x30')];}_0x14da9c[_0xf0ab('0x1e')](_0x76a3f3)['send'](_0x2f0fcd);};}exports['index']=function(_0x1eff91,_0x1dc84e){var _0x43e500={},_0x4dd5b7={},_0x58efce={'count':0x0,'rows':[]};var _0x3ef37c=_['map'](db[_0xf0ab('0x31')]['rawAttributes'],function(_0x3f66fa){return{'name':_0x3f66fa[_0xf0ab('0x32')],'type':_0x3f66fa['type']['key']};});_0x4dd5b7[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x3ef37c,_0xf0ab('0x30'));_0x4dd5b7[_0xf0ab('0x35')]=_[_0xf0ab('0x36')](_0x1eff91[_0xf0ab('0x35')]);_0x4dd5b7[_0xf0ab('0x37')]=_[_0xf0ab('0x38')](_0x4dd5b7[_0xf0ab('0x33')],_0x4dd5b7[_0xf0ab('0x35')]);_0x43e500[_0xf0ab('0x39')]=_[_0xf0ab('0x38')](_0x4dd5b7[_0xf0ab('0x33')],qs[_0xf0ab('0x3a')](_0x1eff91['query'][_0xf0ab('0x3a')]));_0x43e500[_0xf0ab('0x39')]=_0x43e500[_0xf0ab('0x39')]['length']?_0x43e500[_0xf0ab('0x39')]:_0x4dd5b7[_0xf0ab('0x33')];if(!_0x1eff91[_0xf0ab('0x35')]['hasOwnProperty'](_0xf0ab('0x3b'))){_0x43e500['limit']=qs[_0xf0ab('0x22')](_0x1eff91['query'][_0xf0ab('0x22')]);_0x43e500[_0xf0ab('0x20')]=qs[_0xf0ab('0x20')](_0x1eff91[_0xf0ab('0x35')][_0xf0ab('0x20')]);}_0x43e500[_0xf0ab('0x3c')]=qs['sort'](_0x1eff91[_0xf0ab('0x35')][_0xf0ab('0x3d')]);_0x43e500['where']=qs[_0xf0ab('0x37')](_[_0xf0ab('0x3e')](_0x1eff91[_0xf0ab('0x35')],_0x4dd5b7[_0xf0ab('0x37')]),_0x3ef37c);if(_0x1eff91[_0xf0ab('0x35')][_0xf0ab('0x3f')]){_0x43e500[_0xf0ab('0x40')]=_['merge'](_0x43e500[_0xf0ab('0x40')],{'$or':_[_0xf0ab('0x34')](_0x3ef37c,function(_0x7c4629){if(_0x7c4629['type']!==_0xf0ab('0x41')){var _0x234315={};_0x234315[_0x7c4629[_0xf0ab('0x30')]]={'$like':'%'+_0x1eff91[_0xf0ab('0x35')][_0xf0ab('0x3f')]+'%'};return _0x234315;}})});}_0x43e500=_['merge']({},_0x43e500,_0x1eff91[_0xf0ab('0x42')]);var _0x39a212={'where':_0x43e500[_0xf0ab('0x40')]};return db[_0xf0ab('0x31')][_0xf0ab('0x23')](_0x39a212)[_0xf0ab('0x2a')](function(_0x45849c){_0x58efce[_0xf0ab('0x23')]=_0x45849c;if(_0x1eff91[_0xf0ab('0x35')][_0xf0ab('0x43')]){_0x43e500[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x31')][_0xf0ab('0x45')](_0x43e500);})['then'](function(_0x4c4ab9){_0x58efce[_0xf0ab('0x46')]=_0x4c4ab9;return _0x58efce;})['then'](respondWithFilteredResult(_0x1dc84e,_0x43e500))[_0xf0ab('0x47')](handleError(_0x1dc84e,null));};exports[_0xf0ab('0x48')]=function(_0x4bbdf6,_0x8c2d2c){var _0x17ac48={'raw':![],'where':{'id':_0x4bbdf6[_0xf0ab('0x49')]['id']}},_0x591d37={};_0x591d37[_0xf0ab('0x33')]=_[_0xf0ab('0x36')](db[_0xf0ab('0x31')][_0xf0ab('0x4a')]);_0x591d37[_0xf0ab('0x35')]=_[_0xf0ab('0x36')](_0x4bbdf6[_0xf0ab('0x35')]);_0x591d37[_0xf0ab('0x37')]=_[_0xf0ab('0x38')](_0x591d37[_0xf0ab('0x33')],_0x591d37[_0xf0ab('0x35')]);_0x17ac48[_0xf0ab('0x39')]=_[_0xf0ab('0x38')](_0x591d37['model'],qs['fields'](_0x4bbdf6[_0xf0ab('0x35')]['fields']));_0x17ac48['attributes']=_0x17ac48['attributes'][_0xf0ab('0x4b')]?_0x17ac48[_0xf0ab('0x39')]:_0x591d37[_0xf0ab('0x33')];if(_0x4bbdf6[_0xf0ab('0x35')][_0xf0ab('0x43')]){_0x17ac48[_0xf0ab('0x44')]=[{'all':!![]}];}_0x17ac48=_[_0xf0ab('0x4c')]({},_0x17ac48,_0x4bbdf6[_0xf0ab('0x42')]);return db[_0xf0ab('0x31')][_0xf0ab('0x4d')](_0x17ac48)[_0xf0ab('0x2a')](handleEntityNotFound(_0x8c2d2c,null))[_0xf0ab('0x2a')](respondWithResult(_0x8c2d2c,null))['catch'](handleError(_0x8c2d2c,null));};exports[_0xf0ab('0x2b')]=function(_0x41065c,_0x43abde){return db[_0xf0ab('0x31')][_0xf0ab('0x4d')]({'where':{'id':_0x41065c[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x2a')](handleEntityNotFound(_0x43abde,null))[_0xf0ab('0x2a')](removeEntity(_0x43abde,null))['catch'](handleError(_0x43abde,null));};exports['describe']=function(_0x51b4a9,_0xc73871){return db[_0xf0ab('0x31')]['describe']()[_0xf0ab('0x2a')](respondWithResult(_0xc73871,null))[_0xf0ab('0x47')](handleError(_0xc73871,null));};exports['create']=function(_0x1a9981,_0x53d6a4){var _0x1352ac;return db[_0xf0ab('0x4e')][_0xf0ab('0x4f')](function(_0x33112b){return db[_0xf0ab('0x31')]['create'](_0x1a9981[_0xf0ab('0x50')],{'transaction':_0x33112b})['then'](function(_0x229184){_0x1352ac=_0x229184['get']({'plain':!![]});return db[_0xf0ab('0x51')]['find']({'where':{'id':_0x1352ac['VoiceExtensionId']},'raw':!![]})[_0xf0ab('0x2a')](function(_0x58ac39){return createVoicePrefixExtensions(_0x1352ac,_0x58ac39,_0x33112b);});});})[_0xf0ab('0x2a')](function(){var _0x54efed=_0x1a9981[_0xf0ab('0x52')]['get']({'plain':!![]});if(!_0x54efed)throw new Error(_0xf0ab('0x53'));if(_0x54efed[_0xf0ab('0x54')]===_0xf0ab('0x52')){var _0x57f9dd=_0x1352ac;return db['UserProfileSection']['find']({'where':{'name':_0xf0ab('0x55'),'userProfileId':_0x54efed[_0xf0ab('0x56')]},'raw':!![]})['then'](function(_0x511e23){if(_0x511e23&&_0x511e23[_0xf0ab('0x57')]===0x0){return db[_0xf0ab('0x2d')][_0xf0ab('0x58')]({'name':_0x57f9dd[_0xf0ab('0x30')],'resourceId':_0x57f9dd['id'],'type':_0x511e23[_0xf0ab('0x30')],'sectionId':_0x511e23['id']},{})[_0xf0ab('0x2a')](function(){return _0x1352ac;});}else{return _0x1352ac;}})[_0xf0ab('0x47')](function(_0x3bc749){logger[_0xf0ab('0x2e')](_0xf0ab('0x59'),_0x3bc749);throw _0x3bc749;});}return _0x1352ac;})[_0xf0ab('0x2a')](respondWithResult(_0x53d6a4,null))['catch'](handleError(_0x53d6a4,null));};function Extension(_0x41ed17,_0x5b24e3,_0x185b3c,_0x61d3db){this[_0xf0ab('0x5a')]=_0xf0ab('0x5b');this[_0xf0ab('0x5c')]=_0x41ed17;this[_0xf0ab('0x5d')]=_0x185b3c;this[_0xf0ab('0x5e')]=_0xf0ab('0x5f');this[_0xf0ab('0x60')]=_0xf0ab('0x61');this['priority']=_0x5b24e3;this[_0xf0ab('0x62')]=_0x61d3db;}function createVoicePrefixExtensions(_0x2266f3,_0x4062b7,_0x1d4a72){return new BPromise(function(_0x2232eb,_0x314a26){var _0x2a906e=new Extension(formatPrefixName(_0x2266f3[_0xf0ab('0x63')]),0x1,_0xf0ab('0x64'),'Voice\x20Prefix');_0x2a906e['VoicePrefixId']=_0x2266f3['id'];return db[_0xf0ab('0x51')][_0xf0ab('0x58')](_0x2a906e,{'transaction':_0x1d4a72})[_0xf0ab('0x2a')](function(_0x52058a){var _0x3f6c02=_0x52058a[_0xf0ab('0x2c')]({'plain':!![]});var _0xd61dcf=_['map'](addVoicePrefixExtensions(_0x2266f3,_0x4062b7),function(_0x2c1a44){_0x2c1a44[_0xf0ab('0x65')]=_0x3f6c02['id'];_0x2c1a44[_0xf0ab('0x66')]=_0x2266f3['id'];return _0x2c1a44;});return db[_0xf0ab('0x51')][_0xf0ab('0x67')](_0xd61dcf,{'transaction':_0x1d4a72})['then'](function(_0x3f0e11){if(!_0x3f0e11){return _0x314a26(_0xf0ab('0x68'));}else{return _0x2232eb(_0x3f0e11);}})[_0xf0ab('0x47')](function(_0x4531ae){return _0x314a26(_0x4531ae);});});;});};function addVoicePrefixExtensions(_0x14cd6f,_0x3ba915){var _0xe3fc19=[];var _0x2b0b89=formatPrefixName(_0x14cd6f[_0xf0ab('0x63')]);_0xe3fc19[_0xf0ab('0x69')](new Extension(_0x2b0b89,0x2,_0xf0ab('0x6a'),_0xf0ab('0x6b')+_0x14cd6f[_0xf0ab('0x30')]));if(_0x14cd6f['callerIdAll']){_0xe3fc19['push'](new Extension(_0x2b0b89,0x3,_0xf0ab('0x6a'),_0xf0ab('0x6c')+_0x14cd6f[_0xf0ab('0x6d')]));}else{_0xe3fc19['push'](new Extension(_0x2b0b89,0x3,_0xf0ab('0x64'),'No\x20callerid\x20available'));}_0xe3fc19[_0xf0ab('0x69')](new Extension(_0x2b0b89,0x4,_0xf0ab('0x6e'),_0x3ba915[_0xf0ab('0x5a')]+','+'${EXTEN:'+(0x8+_0x14cd6f[_0xf0ab('0x30')]['length'])+'}'+','+0x1));return _0xe3fc19;}function formatPrefixName(_0x5dbeac){var _0x43f9c0='_';for(var _0x461c7a=0x0;_0x461c7a<_0x5dbeac[_0xf0ab('0x4b')];_0x461c7a++){if(_0x5dbeac['charAt'](_0x461c7a)=='-'){_0x43f9c0+=_0x5dbeac[_0xf0ab('0x6f')](_0x461c7a);}else{_0x43f9c0+='['+_0x5dbeac[_0xf0ab('0x6f')](_0x461c7a)+']';}}_0x43f9c0+='.';return _0x43f9c0;}exports[_0xf0ab('0x70')]=function(_0x122c41,_0x5b6923,_0x50137a){var _0x5398e2=_0x122c41[_0xf0ab('0x50')];_0x5398e2[_0xf0ab('0x63')]=_0xf0ab('0x71')+_0x5398e2[_0xf0ab('0x30')]+'-';return db[_0xf0ab('0x4e')][_0xf0ab('0x4f')](function(_0x3a5205){return db[_0xf0ab('0x31')][_0xf0ab('0x70')](_0x5398e2,{'where':{'id':_0x5398e2['id']},'transaction':_0x3a5205})[_0xf0ab('0x2a')](function(){return db[_0xf0ab('0x51')]['destroy']({'where':{'VoicePrefixId':_0x5398e2['id']},'transaction':_0x3a5205})[_0xf0ab('0x2a')](function(){return db[_0xf0ab('0x51')][_0xf0ab('0x4d')]({'where':{'id':_0x5398e2[_0xf0ab('0x65')]},'raw':!![]})[_0xf0ab('0x2a')](function(_0x2d9797){return createVoicePrefixExtensions(_0x5398e2,_0x2d9797,_0x3a5205);});});});})[_0xf0ab('0x2a')](function(){return db[_0xf0ab('0x31')]['findById'](_0x5398e2['id']);})[_0xf0ab('0x2a')](respondWithResult(_0x5b6923,null))[_0xf0ab('0x47')](handleError(_0x5b6923,null));};exports['addAgents']=function(_0x515e2f,_0x4b1a28,_0x331433){return db[_0xf0ab('0x31')][_0xf0ab('0x4d')]({'where':{'id':_0x515e2f[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x2a')](handleEntityNotFound(_0x4b1a28,null))[_0xf0ab('0x2a')](function(_0x4d011e){if(_0x4d011e){return _0x4d011e[_0xf0ab('0x72')](_0x515e2f['body'][_0xf0ab('0x73')],_['omit'](_0x515e2f[_0xf0ab('0x50')],['ids','id'])||{})[_0xf0ab('0x74')](function(_0x4ffd8d){for(var _0x58ca28=0x0;_0x58ca28<_0x515e2f[_0xf0ab('0x50')][_0xf0ab('0x73')][_0xf0ab('0x4b')];_0x58ca28+=0x1){socket[_0xf0ab('0x75')](_0xf0ab('0x76'),{'UserId':Number(_0x515e2f[_0xf0ab('0x50')][_0xf0ab('0x73')][_0x58ca28]),'VoicePrefixId':Number(_0x515e2f[_0xf0ab('0x49')]['id'])});}return _0x4ffd8d;});}})[_0xf0ab('0x2a')](respondWithResult(_0x4b1a28,null))[_0xf0ab('0x47')](handleError(_0x4b1a28,null));};exports[_0xf0ab('0x77')]=function(_0x31f464,_0x228688,_0x59d215){return db[_0xf0ab('0x31')][_0xf0ab('0x4d')]({'where':{'id':_0x31f464[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x2a')](handleEntityNotFound(_0x228688,null))[_0xf0ab('0x2a')](function(_0x3aafc4){if(_0x3aafc4){return _0x3aafc4[_0xf0ab('0x77')](_0x31f464[_0xf0ab('0x35')][_0xf0ab('0x73')])[_0xf0ab('0x2a')](function(){if(_[_0xf0ab('0x78')](_0x31f464[_0xf0ab('0x35')]['ids'])){for(var _0x38249b=0x0;_0x38249b<_0x31f464[_0xf0ab('0x35')][_0xf0ab('0x73')][_0xf0ab('0x4b')];_0x38249b+=0x1){socket['emit'](_0xf0ab('0x79'),{'UserId':Number(_0x31f464[_0xf0ab('0x35')][_0xf0ab('0x73')][_0x38249b]),'VoicePrefixId':Number(_0x31f464[_0xf0ab('0x49')]['id'])});}}else{socket[_0xf0ab('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x31f464[_0xf0ab('0x35')][_0xf0ab('0x73')]),'VoicePrefixId':Number(_0x31f464['params']['id'])});}});}})[_0xf0ab('0x2a')](respondWithStatusCode(_0x228688,null))['catch'](handleError(_0x228688,null));};exports[_0xf0ab('0x7a')]=function(_0x277cec,_0x597a3d,_0x104542){var _0x148a72={};var _0x4c62cb={};var _0x4c5e63;var _0x2cffac;return db['VoicePrefix'][_0xf0ab('0x7b')]({'where':{'id':_0x277cec[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x597a3d,null))['then'](function(_0x50c52c){if(_0x50c52c){_0x4c5e63=_0x50c52c;_0x4c62cb[_0xf0ab('0x33')]=_[_0xf0ab('0x36')](db[_0xf0ab('0x7c')][_0xf0ab('0x4a')]);_0x4c62cb['query']=_[_0xf0ab('0x36')](_0x277cec[_0xf0ab('0x35')]);_0x4c62cb[_0xf0ab('0x37')]=_[_0xf0ab('0x38')](_0x4c62cb[_0xf0ab('0x33')],_0x4c62cb['query']);_0x148a72['attributes']=_[_0xf0ab('0x38')](_0x4c62cb[_0xf0ab('0x33')],qs['fields'](_0x277cec['query'][_0xf0ab('0x3a')]));_0x148a72[_0xf0ab('0x39')]=_0x148a72[_0xf0ab('0x39')][_0xf0ab('0x4b')]?_0x148a72[_0xf0ab('0x39')]:_0x4c62cb[_0xf0ab('0x33')];_0x148a72[_0xf0ab('0x3c')]=qs[_0xf0ab('0x3d')](_0x277cec[_0xf0ab('0x35')][_0xf0ab('0x3d')]);_0x148a72[_0xf0ab('0x40')]=qs['filters'](_['pick'](_0x277cec[_0xf0ab('0x35')],_0x4c62cb['filters']));if(_0x277cec[_0xf0ab('0x35')][_0xf0ab('0x3f')]){_0x148a72[_0xf0ab('0x40')]=_[_0xf0ab('0x4c')](_0x148a72['where'],{'$or':_[_0xf0ab('0x34')](_0x148a72[_0xf0ab('0x39')],function(_0x22923d){var _0xde9d9a={};_0xde9d9a[_0x22923d]={'$like':'%'+_0x277cec[_0xf0ab('0x35')][_0xf0ab('0x3f')]+'%'};return _0xde9d9a;})});}_0x148a72=_[_0xf0ab('0x4c')]({},_0x148a72,_0x277cec[_0xf0ab('0x42')]);return _0x4c5e63[_0xf0ab('0x7a')](_0x148a72);}})[_0xf0ab('0x2a')](function(_0x8671e7){if(_0x8671e7){_0x2cffac=_0x8671e7[_0xf0ab('0x4b')];if(!_0x277cec[_0xf0ab('0x35')][_0xf0ab('0x7d')]('nolimit')){_0x148a72[_0xf0ab('0x22')]=qs[_0xf0ab('0x22')](_0x277cec[_0xf0ab('0x35')][_0xf0ab('0x22')]);_0x148a72[_0xf0ab('0x20')]=qs[_0xf0ab('0x20')](_0x277cec[_0xf0ab('0x35')]['offset']);}return _0x4c5e63['getAgents'](_0x148a72);}})[_0xf0ab('0x2a')](function(_0x200a20){if(_0x200a20){return _0x200a20?{'count':_0x2cffac,'rows':_0x200a20}:null;}})[_0xf0ab('0x2a')](respondWithResult(_0x597a3d,null))['catch'](handleError(_0x597a3d,null));};exports[_0xf0ab('0x7e')]=function(_0x405b34,_0x2dc1d5,_0x1a717e){var _0x334718={};var _0x543638={};var _0x4a91dc;var _0x2a3dd3;return db['VoicePrefix'][_0xf0ab('0x7b')]({'where':{'id':_0x405b34[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x2dc1d5,null))[_0xf0ab('0x2a')](function(_0x223090){if(_0x223090){_0x4a91dc=_0x223090;_0x543638[_0xf0ab('0x33')]=_[_0xf0ab('0x36')](db[_0xf0ab('0x7f')]['rawAttributes']);_0x543638[_0xf0ab('0x35')]=_[_0xf0ab('0x36')](_0x405b34[_0xf0ab('0x35')]);_0x543638[_0xf0ab('0x37')]=_[_0xf0ab('0x38')](_0x543638['model'],_0x543638[_0xf0ab('0x35')]);_0x334718[_0xf0ab('0x39')]=_[_0xf0ab('0x38')](_0x543638[_0xf0ab('0x33')],qs[_0xf0ab('0x3a')](_0x405b34['query'][_0xf0ab('0x3a')]));_0x334718[_0xf0ab('0x39')]=_0x334718[_0xf0ab('0x39')]['length']?_0x334718[_0xf0ab('0x39')]:_0x543638['model'];_0x334718[_0xf0ab('0x3c')]=qs[_0xf0ab('0x3d')](_0x405b34[_0xf0ab('0x35')][_0xf0ab('0x3d')]);_0x334718['where']=qs[_0xf0ab('0x37')](_['pick'](_0x405b34['query'],_0x543638[_0xf0ab('0x37')]));if(_0x405b34['query']['filter']){_0x334718[_0xf0ab('0x40')]=_[_0xf0ab('0x4c')](_0x334718['where'],{'$or':_['map'](_0x334718['attributes'],function(_0x4ca025){var _0x3cba0d={};_0x3cba0d[_0x4ca025]={'$like':'%'+_0x405b34[_0xf0ab('0x35')][_0xf0ab('0x3f')]+'%'};return _0x3cba0d;})});}_0x334718=_[_0xf0ab('0x4c')]({},_0x334718,_0x405b34[_0xf0ab('0x42')]);return _0x4a91dc['getTeams'](_0x334718);}})[_0xf0ab('0x2a')](function(_0x2dd8c0){if(_0x2dd8c0){_0x2a3dd3=_0x2dd8c0[_0xf0ab('0x4b')];if(!_0x405b34[_0xf0ab('0x35')][_0xf0ab('0x7d')](_0xf0ab('0x3b'))){_0x334718[_0xf0ab('0x22')]=qs['limit'](_0x405b34[_0xf0ab('0x35')][_0xf0ab('0x22')]);_0x334718[_0xf0ab('0x20')]=qs[_0xf0ab('0x20')](_0x405b34[_0xf0ab('0x35')][_0xf0ab('0x20')]);}return _0x4a91dc['getTeams'](_0x334718);}})[_0xf0ab('0x2a')](function(_0x45a3f3){if(_0x45a3f3){return _0x45a3f3?{'count':_0x2a3dd3,'rows':_0x45a3f3}:null;}})[_0xf0ab('0x2a')](respondWithResult(_0x2dc1d5,null))[_0xf0ab('0x47')](handleError(_0x2dc1d5,null));};exports['addTeams']=function(_0x426419,_0x395bf6,_0x5b7744){var _0x4a0a43=_0x426419[_0xf0ab('0x50')][_0xf0ab('0x73')];var _0x89b176;return db[_0xf0ab('0x7f')][_0xf0ab('0x45')]({'where':{'id':_0x4a0a43},'attributes':['id'],'include':[{'model':db[_0xf0ab('0x7c')],'as':_0xf0ab('0x80'),'attributes':['id',_0xf0ab('0x30'),'online',_0xf0ab('0x81'),'interface'],'raw':!![]}]})['then'](function(_0x2e7aff){if(_0x2e7aff){_0x89b176=_0x2e7aff;var _0x1e9aab=_[_0xf0ab('0x82')](_0x2e7aff,function(_0x3c799f){var _0x409295=_0x3c799f[_0xf0ab('0x2c')]({'plain':!![]});return _0x409295[_0xf0ab('0x80')];});return db[_0xf0ab('0x31')]['find']({'where':{'id':_0x426419[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x2a')](function(_0x202014){return db[_0xf0ab('0x4e')][_0xf0ab('0x4f')](function(_0x42cb5f){return _0x202014[_0xf0ab('0x83')](_0x4a0a43,{'transaction':_0x42cb5f})[_0xf0ab('0x2a')](function(){return BPromise[_0xf0ab('0x84')](_0x89b176,function(_0x1c77e4){return db['TeamVoicePrefix']['upsert']({'TeamId':_0x1c77e4['id'],'VoicePrefixId':_0x426419['params']['id']},{'transaction':_0x42cb5f});});})[_0xf0ab('0x2a')](function(){return BPromise['each'](_0x1e9aab,function(_0x562b44){return db[_0xf0ab('0x85')][_0xf0ab('0x86')]({'where':{'UserId':_0x562b44['id'],'VoicePrefixId':_0x426419[_0xf0ab('0x49')]['id']},'transaction':_0x42cb5f});});})[_0xf0ab('0x2a')](function(){_0x1e9aab[_0xf0ab('0x87')](function(_0x55a296){socket[_0xf0ab('0x75')](_0xf0ab('0x76'),{'UserId':_0x55a296['id'],'VoicePrefixId':_0x202014['id']});});});});});}})[_0xf0ab('0x2a')](respondWithStatusCode(_0x395bf6,null))[_0xf0ab('0x47')](handleError(_0x395bf6,null));};exports[_0xf0ab('0x88')]=function(_0x1c7ced,_0x3130ea,_0x44d791){return db['Team'][_0xf0ab('0x45')]({'where':{'id':_0x1c7ced['query'][_0xf0ab('0x73')]},'attributes':['id'],'include':[{'model':db[_0xf0ab('0x7c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xf0ab('0x2a')](handleEntityNotFound(_0x3130ea,null))[_0xf0ab('0x2a')](function(_0x485eb3){var _0x42a8c4=_[_0xf0ab('0x34')](_0x485eb3,'id');var _0x2286b1=[];var _0x1f2efa=[];var _0x1d12fb=squel[_0xf0ab('0x89')]();_0x1d12fb['field'](_0xf0ab('0x8a'))[_0xf0ab('0x8b')]('team_has_voice_prefixes','tq')[_0xf0ab('0x8c')](_0xf0ab('0x8d'),'ut',_0xf0ab('0x8e'))[_0xf0ab('0x40')]('VoicePrefixId\x20=\x20?',_0x1c7ced['params']['id']);for(var _0x7c7c3b=0x0;_0x7c7c3b<_0x485eb3[_0xf0ab('0x4b')];_0x7c7c3b+=0x1){let _0x550b8c=_0x485eb3[_0x7c7c3b];for(var _0x2f957b=0x0;_0x2f957b<_0x550b8c[_0xf0ab('0x80')][_0xf0ab('0x4b')];_0x2f957b+=0x1){let _0x169831=_0x550b8c[_0xf0ab('0x80')][_0x2f957b];var _0x21283a=_0x1d12fb['clone']();_0x21283a[_0xf0ab('0x40')]('ut.UserId\x20=\x20?',_0x169831['id']);_0x1f2efa[_0xf0ab('0x69')](db[_0xf0ab('0x4e')][_0xf0ab('0x35')](_0x21283a['toString'](),{'type':db[_0xf0ab('0x4e')][_0xf0ab('0x8f')][_0xf0ab('0x90')]})[_0xf0ab('0x2a')](function(_0x3b4538){if(_0x3b4538[_0xf0ab('0x4b')]===0x1){return _0x169831['id'];}else{var _0x31689f=_[_0xf0ab('0x91')](_[_0xf0ab('0x34')](_0x3b4538,'TeamId'),function(_0x4ca354){return _[_0xf0ab('0x92')](_0x42a8c4,_0x4ca354);});if(_0x31689f){return _0x169831['id'];}}}));}}return BPromise[_0xf0ab('0x93')](_0x1f2efa)[_0xf0ab('0x2a')](function(_0x3ece93){_0x2286b1=_(_0x2286b1)[_0xf0ab('0x94')](_0x3ece93)[_0xf0ab('0x95')]()[_0xf0ab('0x96')]();return db[_0xf0ab('0x31')][_0xf0ab('0x4d')]({'where':{'id':_0x1c7ced[_0xf0ab('0x49')]['id']}})['then'](function(_0x1ad0f1){return db[_0xf0ab('0x4e')][_0xf0ab('0x4f')](function(_0x45080a){return _0x1ad0f1[_0xf0ab('0x88')](_0x1c7ced[_0xf0ab('0x35')]['ids'],{'transaction':_0x45080a})[_0xf0ab('0x2a')](function(){if(!_[_0xf0ab('0x97')](_0x2286b1)){return _0x1ad0f1[_0xf0ab('0x77')](_0x2286b1,{'transaction':_0x45080a});}})['then'](function(){_0x2286b1[_0xf0ab('0x87')](function(_0x53f38b){socket['emit'](_0xf0ab('0x79'),{'UserId':_0x53f38b,'VoicePrefixId':_0x1ad0f1['id']});});});});});});})[_0xf0ab('0x2a')](respondWithStatusCode(_0x3130ea,null))[_0xf0ab('0x47')](handleError(_0x3130ea,null));};
\ No newline at end of file
+var _0x9582=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','VoicePrefix','include','rows','catch','show','params','keys','includeAll','find','describe','sequelize','create','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','transaction','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','hasOwnProperty','getTeams','Team','addTeams','findAll','Agents','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','join','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x158825,_0x1eff7f){var _0x127265=function(_0x1e3710){while(--_0x1e3710){_0x158825['push'](_0x158825['shift']());}};_0x127265(++_0x1eff7f);}(_0x9582,0x95));var _0x2958=function(_0x270e72,_0x3d65fa){_0x270e72=_0x270e72-0x0;var _0x11affa=_0x9582[_0x270e72];return _0x11affa;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];config[_0x2958('0x19')]=_[_0x2958('0x1a')](config[_0x2958('0x19')],{'host':_0x2958('0x1b'),'port':0x18eb});var socket=require(_0x2958('0x1c'))(new Redis(config[_0x2958('0x19')]));require('./voicePrefix.socket')[_0x2958('0x1d')](socket);function respondWithStatusCode(_0x2e12d4,_0x4f2a1b){_0x4f2a1b=_0x4f2a1b||0xcc;return function(_0x4c762e){if(_0x4c762e){return _0x2e12d4[_0x2958('0x1e')](_0x4f2a1b);}return _0x2e12d4[_0x2958('0x1f')](_0x4f2a1b)['end']();};}function respondWithResult(_0x3bef50,_0x544563){_0x544563=_0x544563||0xc8;return function(_0x5c3ac3){if(_0x5c3ac3){return _0x3bef50[_0x2958('0x1f')](_0x544563)[_0x2958('0x20')](_0x5c3ac3);}};}function respondWithFilteredResult(_0x55e261,_0x54ef76){return function(_0x28a92c){if(_0x28a92c){var _0x160949=typeof _0x54ef76[_0x2958('0x21')]===_0x2958('0x22')&&typeof _0x54ef76[_0x2958('0x23')]==='undefined';var _0x19a614=_0x28a92c[_0x2958('0x24')];var _0x1a12fa=_0x160949?0x0:_0x54ef76['offset'];var _0x1e77eb=_0x160949?_0x28a92c['count']:_0x54ef76[_0x2958('0x21')]+_0x54ef76['limit'];var _0x5eaf36;if(_0x1e77eb>=_0x19a614){_0x1e77eb=_0x19a614;_0x5eaf36=0xc8;}else{_0x5eaf36=0xce;}_0x55e261[_0x2958('0x1f')](_0x5eaf36);return _0x55e261[_0x2958('0x25')](_0x2958('0x26'),_0x1a12fa+'-'+_0x1e77eb+'/'+_0x19a614)[_0x2958('0x20')](_0x28a92c);}return null;};}function patchUpdates(_0x2202f8){return function(_0x412e42){try{jsonpatch[_0x2958('0x27')](_0x412e42,_0x2202f8,!![]);}catch(_0x2b9818){return BPromise[_0x2958('0x28')](_0x2b9818);}return _0x412e42[_0x2958('0x29')]();};}function saveUpdates(_0xaf5547,_0xd58ae1){return function(_0x119242){if(_0x119242){return _0x119242[_0x2958('0x2a')](_0xaf5547)[_0x2958('0x2b')](function(_0x4f811a){return _0x4f811a;});}return null;};}function removeEntity(_0x574df5,_0x3c1155){return function(_0x33c5b0){if(_0x33c5b0){return _0x33c5b0[_0x2958('0x2c')]()[_0x2958('0x2b')](function(){var _0x52bd32=_0x33c5b0[_0x2958('0x2d')]({'plain':!![]});var _0x57ae96=_0x2958('0x2e');return db[_0x2958('0x2f')][_0x2958('0x2c')]({'where':{'type':_0x57ae96,'resourceId':_0x52bd32['id']}})[_0x2958('0x2b')](function(){return _0x33c5b0;});})[_0x2958('0x2b')](function(){_0x574df5[_0x2958('0x1f')](0xcc)[_0x2958('0x30')]();});}};}function handleEntityNotFound(_0x5d1dfc,_0x21b919){return function(_0x5053d0){if(!_0x5053d0){_0x5d1dfc['sendStatus'](0x194);}return _0x5053d0;};}function handleError(_0x28ee09,_0x15bab3){_0x15bab3=_0x15bab3||0x1f4;return function(_0x973486){logger[_0x2958('0x31')](_0x973486[_0x2958('0x32')]);if(_0x973486[_0x2958('0x33')]){delete _0x973486[_0x2958('0x33')];}_0x28ee09[_0x2958('0x1f')](_0x15bab3)['send'](_0x973486);};}exports[_0x2958('0x34')]=function(_0x32e366,_0x5f34d4){var _0x430484={},_0x5ed343={},_0x380e1d={'count':0x0,'rows':[]};var _0x56d9fd=_[_0x2958('0x35')](db['VoicePrefix'][_0x2958('0x36')],function(_0x2e2a0b){return{'name':_0x2e2a0b[_0x2958('0x37')],'type':_0x2e2a0b[_0x2958('0x38')][_0x2958('0x39')]};});_0x5ed343[_0x2958('0x3a')]=_[_0x2958('0x35')](_0x56d9fd,_0x2958('0x33'));_0x5ed343[_0x2958('0x3b')]=_['keys'](_0x32e366[_0x2958('0x3b')]);_0x5ed343['filters']=_[_0x2958('0x3c')](_0x5ed343['model'],_0x5ed343[_0x2958('0x3b')]);_0x430484[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x5ed343[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0x32e366[_0x2958('0x3b')][_0x2958('0x3e')]));_0x430484[_0x2958('0x3d')]=_0x430484[_0x2958('0x3d')][_0x2958('0x3f')]?_0x430484[_0x2958('0x3d')]:_0x5ed343[_0x2958('0x3a')];if(!_0x32e366[_0x2958('0x3b')]['hasOwnProperty'](_0x2958('0x40'))){_0x430484[_0x2958('0x23')]=qs[_0x2958('0x23')](_0x32e366[_0x2958('0x3b')]['limit']);_0x430484[_0x2958('0x21')]=qs[_0x2958('0x21')](_0x32e366[_0x2958('0x3b')][_0x2958('0x21')]);}_0x430484[_0x2958('0x41')]=qs[_0x2958('0x42')](_0x32e366[_0x2958('0x3b')][_0x2958('0x42')]);_0x430484[_0x2958('0x43')]=qs[_0x2958('0x44')](_[_0x2958('0x45')](_0x32e366[_0x2958('0x3b')],_0x5ed343[_0x2958('0x44')]),_0x56d9fd);if(_0x32e366['query'][_0x2958('0x46')]){_0x430484[_0x2958('0x43')]=_['merge'](_0x430484['where'],{'$or':_[_0x2958('0x35')](_0x56d9fd,function(_0x265055){if(_0x265055[_0x2958('0x38')]!==_0x2958('0x47')){var _0x3ec87a={};_0x3ec87a[_0x265055[_0x2958('0x33')]]={'$like':'%'+_0x32e366[_0x2958('0x3b')][_0x2958('0x46')]+'%'};return _0x3ec87a;}})});}_0x430484=_[_0x2958('0x48')]({},_0x430484,_0x32e366[_0x2958('0x49')]);var _0x16aae8={'where':_0x430484[_0x2958('0x43')]};return db[_0x2958('0x4a')]['count'](_0x16aae8)[_0x2958('0x2b')](function(_0x112256){_0x380e1d[_0x2958('0x24')]=_0x112256;if(_0x32e366[_0x2958('0x3b')]['includeAll']){_0x430484[_0x2958('0x4b')]=[{'all':!![]}];}return db['VoicePrefix']['findAll'](_0x430484);})[_0x2958('0x2b')](function(_0x35993f){_0x380e1d[_0x2958('0x4c')]=_0x35993f;return _0x380e1d;})[_0x2958('0x2b')](respondWithFilteredResult(_0x5f34d4,_0x430484))[_0x2958('0x4d')](handleError(_0x5f34d4,null));};exports[_0x2958('0x4e')]=function(_0x52d40e,_0x17e8d6){var _0x4fb27a={'raw':![],'where':{'id':_0x52d40e[_0x2958('0x4f')]['id']}},_0x488f49={};_0x488f49['model']=_[_0x2958('0x50')](db[_0x2958('0x4a')][_0x2958('0x36')]);_0x488f49[_0x2958('0x3b')]=_[_0x2958('0x50')](_0x52d40e[_0x2958('0x3b')]);_0x488f49[_0x2958('0x44')]=_[_0x2958('0x3c')](_0x488f49['model'],_0x488f49[_0x2958('0x3b')]);_0x4fb27a[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x488f49[_0x2958('0x3a')],qs['fields'](_0x52d40e[_0x2958('0x3b')][_0x2958('0x3e')]));_0x4fb27a['attributes']=_0x4fb27a[_0x2958('0x3d')][_0x2958('0x3f')]?_0x4fb27a[_0x2958('0x3d')]:_0x488f49[_0x2958('0x3a')];if(_0x52d40e[_0x2958('0x3b')][_0x2958('0x51')]){_0x4fb27a['include']=[{'all':!![]}];}_0x4fb27a=_[_0x2958('0x48')]({},_0x4fb27a,_0x52d40e[_0x2958('0x49')]);return db[_0x2958('0x4a')][_0x2958('0x52')](_0x4fb27a)[_0x2958('0x2b')](handleEntityNotFound(_0x17e8d6,null))[_0x2958('0x2b')](respondWithResult(_0x17e8d6,null))[_0x2958('0x4d')](handleError(_0x17e8d6,null));};exports[_0x2958('0x2c')]=function(_0x2e0fc7,_0x329652){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x2e0fc7[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x329652,null))[_0x2958('0x2b')](removeEntity(_0x329652,null))[_0x2958('0x4d')](handleError(_0x329652,null));};exports[_0x2958('0x53')]=function(_0x4889b6,_0xa1073b){return db['VoicePrefix'][_0x2958('0x53')]()[_0x2958('0x2b')](respondWithResult(_0xa1073b,null))[_0x2958('0x4d')](handleError(_0xa1073b,null));};exports['create']=function(_0x497a30,_0x39cc25){var _0x394c29;return db[_0x2958('0x54')]['transaction'](function(_0x524562){return db[_0x2958('0x4a')][_0x2958('0x55')](_0x497a30[_0x2958('0x56')],{'transaction':_0x524562})[_0x2958('0x2b')](function(_0x4347c0){_0x394c29=_0x4347c0[_0x2958('0x2d')]({'plain':!![]});return db[_0x2958('0x57')][_0x2958('0x52')]({'where':{'id':_0x394c29[_0x2958('0x58')]},'raw':!![]})['then'](function(_0x30c739){return createVoicePrefixExtensions(_0x394c29,_0x30c739,_0x524562);});});})[_0x2958('0x2b')](function(){var _0x5671d1=_0x497a30[_0x2958('0x59')][_0x2958('0x2d')]({'plain':!![]});if(!_0x5671d1)throw new Error(_0x2958('0x5a'));if(_0x5671d1[_0x2958('0x5b')]===_0x2958('0x59')){var _0x16d927=_0x394c29;return db['UserProfileSection'][_0x2958('0x52')]({'where':{'name':_0x2958('0x2e'),'userProfileId':_0x5671d1[_0x2958('0x5c')]},'raw':!![]})['then'](function(_0x595738){if(_0x595738&&_0x595738[_0x2958('0x5d')]===0x0){return db['UserProfileResource'][_0x2958('0x55')]({'name':_0x16d927['name'],'resourceId':_0x16d927['id'],'type':_0x595738[_0x2958('0x33')],'sectionId':_0x595738['id']},{})[_0x2958('0x2b')](function(){return _0x394c29;});}else{return _0x394c29;}})[_0x2958('0x4d')](function(_0x474f6b){logger[_0x2958('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x474f6b);throw _0x474f6b;});}return _0x394c29;})['then'](respondWithResult(_0x39cc25,null))[_0x2958('0x4d')](handleError(_0x39cc25,null));};function Extension(_0x3e11eb,_0xfa171d,_0x51bf4c,_0x55676f){this[_0x2958('0x5e')]=_0x2958('0x5f');this[_0x2958('0x60')]=_0x3e11eb;this[_0x2958('0x61')]=_0x51bf4c;this[_0x2958('0x38')]=_0x2958('0x62');this[_0x2958('0x63')]=_0x2958('0x64');this[_0x2958('0x65')]=_0xfa171d;this[_0x2958('0x66')]=_0x55676f;}function createVoicePrefixExtensions(_0x2de03a,_0x2bef16,_0x3cc345){return new BPromise(function(_0x49d190,_0x3a4ad9){var _0x8c7203=new Extension(formatPrefixName(_0x2de03a[_0x2958('0x67')]),0x1,_0x2958('0x68'),_0x2958('0x69'));_0x8c7203[_0x2958('0x6a')]=_0x2de03a['id'];return db[_0x2958('0x57')][_0x2958('0x55')](_0x8c7203,{'transaction':_0x3cc345})[_0x2958('0x2b')](function(_0x4dd3de){var _0x2269e1=_0x4dd3de['get']({'plain':!![]});var _0x196901=_[_0x2958('0x35')](addVoicePrefixExtensions(_0x2de03a,_0x2bef16),function(_0x31a596){_0x31a596['VoiceExtensionId']=_0x2269e1['id'];_0x31a596['VoicePrefixId']=_0x2de03a['id'];return _0x31a596;});return db['VoiceExtension'][_0x2958('0x6b')](_0x196901,{'transaction':_0x3cc345})[_0x2958('0x2b')](function(_0x4c1516){if(!_0x4c1516){return _0x3a4ad9(_0x2958('0x6c'));}else{return _0x49d190(_0x4c1516);}})[_0x2958('0x4d')](function(_0xb2fe28){return _0x3a4ad9(_0xb2fe28);});});;});};function addVoicePrefixExtensions(_0x32a216,_0x13f850){var _0x538298=[];var _0x55da00=formatPrefixName(_0x32a216[_0x2958('0x67')]);_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x2,_0x2958('0x6e'),_0x2958('0x6f')+_0x32a216['name']));if(_0x32a216[_0x2958('0x70')]){_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x3,_0x2958('0x6e'),_0x2958('0x71')+_0x32a216['callerIdAll']));}else{_0x538298['push'](new Extension(_0x55da00,0x3,'NoOp','No\x20callerid\x20available'));}_0x538298[_0x2958('0x6d')](new Extension(_0x55da00,0x4,_0x2958('0x72'),_0x13f850['context']+','+_0x2958('0x73')+(0x8+_0x32a216[_0x2958('0x33')][_0x2958('0x3f')])+'}'+','+0x1));return _0x538298;}function formatPrefixName(_0x234d7f){var _0x1eefb5='_';for(var _0x41ab26=0x0;_0x41ab26<_0x234d7f['length'];_0x41ab26++){if(_0x234d7f[_0x2958('0x74')](_0x41ab26)=='-'){_0x1eefb5+=_0x234d7f[_0x2958('0x74')](_0x41ab26);}else{_0x1eefb5+='['+_0x234d7f[_0x2958('0x74')](_0x41ab26)+']';}}_0x1eefb5+='.';return _0x1eefb5;}exports['update']=function(_0xd61e21,_0x566123,_0x546721){var _0x584429=_0xd61e21['body'];_0x584429[_0x2958('0x67')]='system-'+_0x584429[_0x2958('0x33')]+'-';return db[_0x2958('0x54')][_0x2958('0x75')](function(_0x41ead9){return db[_0x2958('0x4a')][_0x2958('0x2a')](_0x584429,{'where':{'id':_0x584429['id']},'transaction':_0x41ead9})['then'](function(){return db[_0x2958('0x57')][_0x2958('0x2c')]({'where':{'VoicePrefixId':_0x584429['id']},'transaction':_0x41ead9})[_0x2958('0x2b')](function(){return db[_0x2958('0x57')][_0x2958('0x52')]({'where':{'id':_0x584429[_0x2958('0x58')]},'raw':!![]})[_0x2958('0x2b')](function(_0x3674b3){return createVoicePrefixExtensions(_0x584429,_0x3674b3,_0x41ead9);});});});})[_0x2958('0x2b')](function(){return db[_0x2958('0x4a')][_0x2958('0x76')](_0x584429['id']);})[_0x2958('0x2b')](respondWithResult(_0x566123,null))[_0x2958('0x4d')](handleError(_0x566123,null));};exports[_0x2958('0x77')]=function(_0x1a2cf2,_0x2136fe,_0x19b819){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x1a2cf2[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x2136fe,null))['then'](function(_0x831f42){if(_0x831f42){return _0x831f42[_0x2958('0x77')](_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')],_[_0x2958('0x79')](_0x1a2cf2['body'],[_0x2958('0x78'),'id'])||{})[_0x2958('0x7a')](function(_0x214b51){for(var _0x1a9f51=0x0;_0x1a9f51<_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')][_0x2958('0x3f')];_0x1a9f51+=0x1){socket[_0x2958('0x7b')](_0x2958('0x7c'),{'UserId':Number(_0x1a2cf2[_0x2958('0x56')][_0x2958('0x78')][_0x1a9f51]),'VoicePrefixId':Number(_0x1a2cf2[_0x2958('0x4f')]['id'])});}return _0x214b51;});}})[_0x2958('0x2b')](respondWithResult(_0x2136fe,null))[_0x2958('0x4d')](handleError(_0x2136fe,null));};exports[_0x2958('0x7d')]=function(_0x33e4b5,_0x3c7a19,_0x80a4db){return db[_0x2958('0x4a')][_0x2958('0x52')]({'where':{'id':_0x33e4b5[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x3c7a19,null))[_0x2958('0x2b')](function(_0x2a3c34){if(_0x2a3c34){return _0x2a3c34['removeAgents'](_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')])[_0x2958('0x2b')](function(){if(_[_0x2958('0x7e')](_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')])){for(var _0x1d0bfd=0x0;_0x1d0bfd<_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')][_0x2958('0x3f')];_0x1d0bfd+=0x1){socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':Number(_0x33e4b5['query'][_0x2958('0x78')][_0x1d0bfd]),'VoicePrefixId':Number(_0x33e4b5[_0x2958('0x4f')]['id'])});}}else{socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':Number(_0x33e4b5[_0x2958('0x3b')][_0x2958('0x78')]),'VoicePrefixId':Number(_0x33e4b5['params']['id'])});}});}})[_0x2958('0x2b')](respondWithStatusCode(_0x3c7a19,null))[_0x2958('0x4d')](handleError(_0x3c7a19,null));};exports[_0x2958('0x80')]=function(_0xe483b9,_0x2b7e0e,_0x558b10){var _0x158c43={};var _0x5be9e={};var _0x2f3f81;var _0x171717;return db[_0x2958('0x4a')][_0x2958('0x81')]({'where':{'id':_0xe483b9[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x2b7e0e,null))[_0x2958('0x2b')](function(_0x4739b0){if(_0x4739b0){_0x2f3f81=_0x4739b0;_0x5be9e[_0x2958('0x3a')]=_['keys'](db[_0x2958('0x82')][_0x2958('0x36')]);_0x5be9e['query']=_['keys'](_0xe483b9[_0x2958('0x3b')]);_0x5be9e[_0x2958('0x44')]=_['intersection'](_0x5be9e[_0x2958('0x3a')],_0x5be9e[_0x2958('0x3b')]);_0x158c43[_0x2958('0x3d')]=_['intersection'](_0x5be9e[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0xe483b9[_0x2958('0x3b')][_0x2958('0x3e')]));_0x158c43[_0x2958('0x3d')]=_0x158c43[_0x2958('0x3d')]['length']?_0x158c43[_0x2958('0x3d')]:_0x5be9e[_0x2958('0x3a')];_0x158c43[_0x2958('0x41')]=qs[_0x2958('0x42')](_0xe483b9['query']['sort']);_0x158c43['where']=qs[_0x2958('0x44')](_['pick'](_0xe483b9[_0x2958('0x3b')],_0x5be9e['filters']));if(_0xe483b9['query'][_0x2958('0x46')]){_0x158c43[_0x2958('0x43')]=_['merge'](_0x158c43[_0x2958('0x43')],{'$or':_[_0x2958('0x35')](_0x158c43[_0x2958('0x3d')],function(_0x2aa634){var _0x37b94a={};_0x37b94a[_0x2aa634]={'$like':'%'+_0xe483b9['query'][_0x2958('0x46')]+'%'};return _0x37b94a;})});}_0x158c43=_[_0x2958('0x48')]({},_0x158c43,_0xe483b9[_0x2958('0x49')]);return _0x2f3f81[_0x2958('0x80')](_0x158c43);}})[_0x2958('0x2b')](function(_0x17b2bf){if(_0x17b2bf){_0x171717=_0x17b2bf[_0x2958('0x3f')];if(!_0xe483b9[_0x2958('0x3b')][_0x2958('0x83')]('nolimit')){_0x158c43[_0x2958('0x23')]=qs[_0x2958('0x23')](_0xe483b9[_0x2958('0x3b')]['limit']);_0x158c43[_0x2958('0x21')]=qs[_0x2958('0x21')](_0xe483b9[_0x2958('0x3b')][_0x2958('0x21')]);}return _0x2f3f81[_0x2958('0x80')](_0x158c43);}})[_0x2958('0x2b')](function(_0xb41929){if(_0xb41929){return _0xb41929?{'count':_0x171717,'rows':_0xb41929}:null;}})[_0x2958('0x2b')](respondWithResult(_0x2b7e0e,null))[_0x2958('0x4d')](handleError(_0x2b7e0e,null));};exports[_0x2958('0x84')]=function(_0x57db70,_0x3077ef,_0x5d9ad0){var _0x57ae87={};var _0x2f279a={};var _0x445e57;var _0x561ecc;return db['VoicePrefix']['findOne']({'where':{'id':_0x57db70[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](handleEntityNotFound(_0x3077ef,null))['then'](function(_0x3876cb){if(_0x3876cb){_0x445e57=_0x3876cb;_0x2f279a[_0x2958('0x3a')]=_[_0x2958('0x50')](db[_0x2958('0x85')][_0x2958('0x36')]);_0x2f279a[_0x2958('0x3b')]=_[_0x2958('0x50')](_0x57db70['query']);_0x2f279a[_0x2958('0x44')]=_[_0x2958('0x3c')](_0x2f279a[_0x2958('0x3a')],_0x2f279a[_0x2958('0x3b')]);_0x57ae87[_0x2958('0x3d')]=_[_0x2958('0x3c')](_0x2f279a[_0x2958('0x3a')],qs[_0x2958('0x3e')](_0x57db70[_0x2958('0x3b')][_0x2958('0x3e')]));_0x57ae87['attributes']=_0x57ae87['attributes'][_0x2958('0x3f')]?_0x57ae87['attributes']:_0x2f279a[_0x2958('0x3a')];_0x57ae87[_0x2958('0x41')]=qs[_0x2958('0x42')](_0x57db70[_0x2958('0x3b')][_0x2958('0x42')]);_0x57ae87[_0x2958('0x43')]=qs[_0x2958('0x44')](_['pick'](_0x57db70[_0x2958('0x3b')],_0x2f279a[_0x2958('0x44')]));if(_0x57db70[_0x2958('0x3b')][_0x2958('0x46')]){_0x57ae87[_0x2958('0x43')]=_['merge'](_0x57ae87[_0x2958('0x43')],{'$or':_[_0x2958('0x35')](_0x57ae87[_0x2958('0x3d')],function(_0x533243){var _0x12ffd1={};_0x12ffd1[_0x533243]={'$like':'%'+_0x57db70[_0x2958('0x3b')][_0x2958('0x46')]+'%'};return _0x12ffd1;})});}_0x57ae87=_[_0x2958('0x48')]({},_0x57ae87,_0x57db70[_0x2958('0x49')]);return _0x445e57[_0x2958('0x84')](_0x57ae87);}})['then'](function(_0x5f4622){if(_0x5f4622){_0x561ecc=_0x5f4622[_0x2958('0x3f')];if(!_0x57db70[_0x2958('0x3b')][_0x2958('0x83')]('nolimit')){_0x57ae87[_0x2958('0x23')]=qs['limit'](_0x57db70[_0x2958('0x3b')][_0x2958('0x23')]);_0x57ae87[_0x2958('0x21')]=qs['offset'](_0x57db70[_0x2958('0x3b')][_0x2958('0x21')]);}return _0x445e57[_0x2958('0x84')](_0x57ae87);}})[_0x2958('0x2b')](function(_0x49bd35){if(_0x49bd35){return _0x49bd35?{'count':_0x561ecc,'rows':_0x49bd35}:null;}})['then'](respondWithResult(_0x3077ef,null))[_0x2958('0x4d')](handleError(_0x3077ef,null));};exports[_0x2958('0x86')]=function(_0x118318,_0x39d235,_0x3eeedf){var _0x498e07=_0x118318[_0x2958('0x56')][_0x2958('0x78')];var _0x1437a7;return db[_0x2958('0x85')][_0x2958('0x87')]({'where':{'id':_0x498e07},'attributes':['id'],'include':[{'model':db[_0x2958('0x82')],'as':_0x2958('0x88'),'attributes':['id',_0x2958('0x33'),'online','voicePause','interface'],'raw':!![]}]})[_0x2958('0x2b')](function(_0x45fcc5){if(_0x45fcc5){_0x1437a7=_0x45fcc5;var _0x3d4314=_['flatMap'](_0x45fcc5,function(_0x413447){var _0x42c8b0=_0x413447[_0x2958('0x2d')]({'plain':!![]});return _0x42c8b0['Agents'];});return db['VoicePrefix']['find']({'where':{'id':_0x118318[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](function(_0x36c52a){return db[_0x2958('0x54')][_0x2958('0x75')](function(_0x43b9ec){return _0x36c52a['addTeams'](_0x498e07,{'transaction':_0x43b9ec})[_0x2958('0x2b')](function(){return BPromise[_0x2958('0x89')](_0x1437a7,function(_0x9b8367){return db[_0x2958('0x8a')][_0x2958('0x8b')]({'TeamId':_0x9b8367['id'],'VoicePrefixId':_0x118318[_0x2958('0x4f')]['id']},{'transaction':_0x43b9ec});});})['then'](function(){return BPromise['each'](_0x3d4314,function(_0x38a789){return db[_0x2958('0x8c')][_0x2958('0x8d')]({'where':{'UserId':_0x38a789['id'],'VoicePrefixId':_0x118318[_0x2958('0x4f')]['id']},'transaction':_0x43b9ec});});})[_0x2958('0x2b')](function(){_0x3d4314[_0x2958('0x8e')](function(_0x1ec753){socket[_0x2958('0x7b')]('userVoicePrefix:save',{'UserId':_0x1ec753['id'],'VoicePrefixId':_0x36c52a['id']});});});});});}})[_0x2958('0x2b')](respondWithStatusCode(_0x39d235,null))[_0x2958('0x4d')](handleError(_0x39d235,null));};exports[_0x2958('0x8f')]=function(_0x6f44ca,_0x1ddda5,_0x2f5a39){return db[_0x2958('0x85')][_0x2958('0x87')]({'where':{'id':_0x6f44ca['query'][_0x2958('0x78')]},'attributes':['id'],'include':[{'model':db[_0x2958('0x82')],'as':_0x2958('0x88'),'attributes':['id'],'raw':!![]}]})[_0x2958('0x2b')](handleEntityNotFound(_0x1ddda5,null))[_0x2958('0x2b')](function(_0x1c926e){var _0x245a12=_['map'](_0x1c926e,'id');var _0x270846=[];var _0x1d0d0d=[];var _0xc3b770=squel[_0x2958('0x90')]();_0xc3b770[_0x2958('0x91')]('tq.TeamId')['from']('team_has_voice_prefixes','tq')[_0x2958('0x92')]('user_has_teams','ut',_0x2958('0x93'))[_0x2958('0x43')](_0x2958('0x94'),_0x6f44ca['params']['id']);for(var _0x56c6a3=0x0;_0x56c6a3<_0x1c926e[_0x2958('0x3f')];_0x56c6a3+=0x1){let _0x1fd536=_0x1c926e[_0x56c6a3];for(var _0x3fbe11=0x0;_0x3fbe11<_0x1fd536[_0x2958('0x88')][_0x2958('0x3f')];_0x3fbe11+=0x1){let _0x21c020=_0x1fd536[_0x2958('0x88')][_0x3fbe11];var _0x89b78c=_0xc3b770[_0x2958('0x95')]();_0x89b78c[_0x2958('0x43')](_0x2958('0x96'),_0x21c020['id']);_0x1d0d0d[_0x2958('0x6d')](db[_0x2958('0x54')][_0x2958('0x3b')](_0x89b78c[_0x2958('0x97')](),{'type':db[_0x2958('0x54')][_0x2958('0x98')][_0x2958('0x99')]})[_0x2958('0x2b')](function(_0x729aaf){if(_0x729aaf[_0x2958('0x3f')]===0x1){return _0x21c020['id'];}else{var _0x362837=_['every'](_[_0x2958('0x35')](_0x729aaf,_0x2958('0x9a')),function(_0x33af4f){return _[_0x2958('0x9b')](_0x245a12,_0x33af4f);});if(_0x362837){return _0x21c020['id'];}}}));}}return BPromise['all'](_0x1d0d0d)[_0x2958('0x2b')](function(_0x119ff3){_0x270846=_(_0x270846)['union'](_0x119ff3)['compact']()['value']();return db[_0x2958('0x4a')]['find']({'where':{'id':_0x6f44ca[_0x2958('0x4f')]['id']}})[_0x2958('0x2b')](function(_0x26c52f){return db['sequelize'][_0x2958('0x75')](function(_0x2355a0){return _0x26c52f[_0x2958('0x8f')](_0x6f44ca[_0x2958('0x3b')][_0x2958('0x78')],{'transaction':_0x2355a0})[_0x2958('0x2b')](function(){if(!_[_0x2958('0x9c')](_0x270846)){return _0x26c52f[_0x2958('0x7d')](_0x270846,{'transaction':_0x2355a0});}})['then'](function(){_0x270846['forEach'](function(_0x1c5d40){socket[_0x2958('0x7b')](_0x2958('0x7f'),{'UserId':_0x1c5d40,'VoicePrefixId':_0x26c52f['id']});});});});});});})[_0x2958('0x2b')](respondWithStatusCode(_0x1ddda5,null))[_0x2958('0x4d')](handleError(_0x1ddda5,null));};
\ No newline at end of file
index 2a39d42..392aeab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe17a=['remove','emit','hasOwnProperty','hook','exports','VoicePrefix','setMaxListeners','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe17a,0x6d));var _0xae17=function(_0x384b59,_0x25453a){_0x384b59=_0x384b59-0x0;var _0x591bbe=_0xe17a[_0x384b59];return _0x591bbe;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db'][_0xae17('0x0')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xae17('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xae17('0x2'),'afterDestroy':_0xae17('0x3')};function emitEvent(_0x5f454f){return function(_0x2609de,_0x4fb4b0,_0x1f46d9){VoicePrefixEvents[_0xae17('0x4')](_0x5f454f+':'+_0x2609de['id'],_0x2609de);VoicePrefixEvents[_0xae17('0x4')](_0x5f454f,_0x2609de);_0x1f46d9(null);};}for(var e in events){if(events[_0xae17('0x5')](e)){var event=events[e];VoicePrefix[_0xae17('0x6')](e,emitEvent(event));}}module[_0xae17('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xfc44=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','update'];(function(_0x168b64,_0x3bd2a8){var _0x298845=function(_0x5ecf2e){while(--_0x5ecf2e){_0x168b64['push'](_0x168b64['shift']());}};_0x298845(++_0x3bd2a8);}(_0xfc44,0x13c));var _0x4fc4=function(_0x4717d4,_0x1c8e1e){_0x4717d4=_0x4717d4-0x0;var _0x11edeb=_0xfc44[_0x4717d4];return _0x11edeb;};'use strict';var EventEmitter=require(_0x4fc4('0x0'));var VoicePrefix=require(_0x4fc4('0x1'))['db'][_0x4fc4('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4fc4('0x3'),'afterDestroy':_0x4fc4('0x4')};function emitEvent(_0x1da771){return function(_0x3141c4,_0x3287b8,_0x40b490){VoicePrefixEvents[_0x4fc4('0x5')](_0x1da771+':'+_0x3141c4['id'],_0x3141c4);VoicePrefixEvents[_0x4fc4('0x5')](_0x1da771,_0x3141c4);_0x40b490(null);};}for(var e in events){if(events[_0x4fc4('0x6')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x4fc4('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index 4661c85..f746f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9c6=['moment','bluebird','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash','util','../../config/logger'];(function(_0x122128,_0x41eee4){var _0x28c644=function(_0x24162b){while(--_0x24162b){_0x122128['push'](_0x122128['shift']());}};_0x28c644(++_0x41eee4);}(_0xa9c6,0xe4));var _0x6a9c=function(_0x35e151,_0x102334){_0x35e151=_0x35e151-0x0;var _0x2349da=_0xa9c6[_0x35e151];return _0x2349da;};'use strict';var _=require(_0x6a9c('0x0'));var util=require(_0x6a9c('0x1'));var logger=require(_0x6a9c('0x2'))('api');var moment=require(_0x6a9c('0x3'));var BPromise=require(_0x6a9c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6a9c('0x5'));var config=require(_0x6a9c('0x6'));var attributes=require(_0x6a9c('0x7'));module[_0x6a9c('0x8')]=function(_0x2d0c0d,_0x26a686){return _0x2d0c0d[_0x6a9c('0x9')]('VoicePrefix',attributes,{'tableName':_0x6a9c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f89=['bluebird','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0x7f89,0x17c));var _0x97f8=function(_0x598b78,_0xf4ee7e){_0x598b78=_0x598b78-0x0;var _0x6392fa=_0x7f89[_0x598b78];return _0x6392fa;};'use strict';var _=require(_0x97f8('0x0'));var util=require(_0x97f8('0x1'));var logger=require(_0x97f8('0x2'))(_0x97f8('0x3'));var moment=require('moment');var BPromise=require(_0x97f8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x97f8('0x5'));var rimraf=require(_0x97f8('0x6'));var config=require(_0x97f8('0x7'));var attributes=require(_0x97f8('0x8'));module[_0x97f8('0x9')]=function(_0xaf90bf,_0x28392d){return _0xaf90bf[_0x97f8('0xa')]('VoicePrefix',attributes,{'tableName':_0x97f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ef2249..62b126c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1867=['util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./voicePrefix.socket','register','request','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash'];(function(_0x5a6da4,_0x37e9b8){var _0x39d106=function(_0x7c6642){while(--_0x7c6642){_0x5a6da4['push'](_0x5a6da4['shift']());}};_0x39d106(++_0x37e9b8);}(_0x1867,0xb5));var _0x7186=function(_0x2a44ed,_0x32d9c8){_0x2a44ed=_0x2a44ed-0x0;var _0x2f28d5=_0x1867[_0x2a44ed];return _0x2f28d5;};'use strict';var _=require(_0x7186('0x0'));var util=require(_0x7186('0x1'));var moment=require('moment');var BPromise=require(_0x7186('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7186('0x3'));var db=require(_0x7186('0x4'))['db'];var utils=require(_0x7186('0x5'));var logger=require(_0x7186('0x6'))(_0x7186('0x7'));var config=require(_0x7186('0x8'));var jayson=require(_0x7186('0x9'));var client=jayson[_0x7186('0xa')][_0x7186('0xb')]({'port':0x232a});config['redis']=_[_0x7186('0xc')](config[_0x7186('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x7186('0xe'))(new Redis(config[_0x7186('0xd')]));require(_0x7186('0xf'))[_0x7186('0x10')](socket);function respondWithRpcPromise(_0x551c34,_0x41739d,_0x12ab6d){return new BPromise(function(_0xb922a,_0x32e85f){return client[_0x7186('0x11')](_0x551c34,_0x12ab6d)['then'](function(_0x5dad55){logger[_0x7186('0x12')](_0x7186('0x13'),_0x41739d,_0x7186('0x14'));logger['debug'](_0x7186('0x15'),_0x41739d,_0x7186('0x14'),JSON[_0x7186('0x16')](_0x5dad55));if(_0x5dad55[_0x7186('0x17')]){if(_0x5dad55['error']['code']===0x1f4){logger['error'](_0x7186('0x13'),_0x41739d,_0x5dad55[_0x7186('0x17')][_0x7186('0x18')]);return _0x32e85f(_0x5dad55[_0x7186('0x17')]['message']);}logger[_0x7186('0x17')](_0x7186('0x13'),_0x41739d,_0x5dad55[_0x7186('0x17')][_0x7186('0x18')]);return _0xb922a(_0x5dad55[_0x7186('0x17')][_0x7186('0x18')]);}else{logger[_0x7186('0x12')](_0x7186('0x13'),_0x41739d,'request\x20sent');_0xb922a(_0x5dad55[_0x7186('0x19')][_0x7186('0x18')]);}})['catch'](function(_0x1394b7){logger[_0x7186('0x17')](_0x7186('0x13'),_0x41739d,_0x1394b7);_0x32e85f(_0x1394b7);});});}
\ No newline at end of file
+var _0x4cff=['stringify','error','code','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent'];(function(_0x75c542,_0x51d3bf){var _0x38e6e0=function(_0x3e06ff){while(--_0x3e06ff){_0x75c542['push'](_0x75c542['shift']());}};_0x38e6e0(++_0x51d3bf);}(_0x4cff,0x14a));var _0xf4cf=function(_0x4fef01,_0x2abe19){_0x4fef01=_0x4fef01-0x0;var _0x2ebdea=_0x4cff[_0x4fef01];return _0x2ebdea;};'use strict';var _=require(_0xf4cf('0x0'));var util=require(_0xf4cf('0x1'));var moment=require('moment');var BPromise=require(_0xf4cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4cf('0x3'));var db=require(_0xf4cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf4cf('0x5'))(_0xf4cf('0x6'));var config=require(_0xf4cf('0x7'));var jayson=require(_0xf4cf('0x8'));var client=jayson[_0xf4cf('0x9')][_0xf4cf('0xa')]({'port':0x232a});config['redis']=_[_0xf4cf('0xb')](config[_0xf4cf('0xc')],{'host':_0xf4cf('0xd'),'port':0x18eb});var socket=require(_0xf4cf('0xe'))(new Redis(config['redis']));require(_0xf4cf('0xf'))[_0xf4cf('0x10')](socket);function respondWithRpcPromise(_0x10dd9e,_0x16a6f1,_0x520c03){return new BPromise(function(_0x3c40ab,_0xec3042){return client[_0xf4cf('0x11')](_0x10dd9e,_0x520c03)[_0xf4cf('0x12')](function(_0x50f939){logger['info'](_0xf4cf('0x13'),_0x16a6f1,'request\x20sent');logger['debug']('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'),JSON[_0xf4cf('0x15')](_0x50f939));if(_0x50f939[_0xf4cf('0x16')]){if(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x17')]===0x1f4){logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0xec3042(_0x50f939[_0xf4cf('0x16')]['message']);}logger[_0xf4cf('0x16')](_0xf4cf('0x13'),_0x16a6f1,_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);return _0x3c40ab(_0x50f939[_0xf4cf('0x16')][_0xf4cf('0x18')]);}else{logger[_0xf4cf('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x16a6f1,_0xf4cf('0x14'));_0x3c40ab(_0x50f939[_0xf4cf('0x1a')][_0xf4cf('0x18')]);}})['catch'](function(_0x23f181){logger['error'](_0xf4cf('0x13'),_0x16a6f1,_0x23f181);_0xec3042(_0x23f181);});});}
\ No newline at end of file
index 626b307..78c000c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9086=['emit','removeListener','length','./voicePrefix.events','save','update'];(function(_0x31fb5f,_0x57ccbb){var _0x5b93c6=function(_0xde06cb){while(--_0xde06cb){_0x31fb5f['push'](_0x31fb5f['shift']());}};_0x5b93c6(++_0x57ccbb);}(_0x9086,0x10b));var _0x6908=function(_0x9041a8,_0x56f039){_0x9041a8=_0x9041a8-0x0;var _0x44c73d=_0x9086[_0x9041a8];return _0x44c73d;};'use strict';var VoicePrefixEvents=require(_0x6908('0x0'));var events=[_0x6908('0x1'),'remove',_0x6908('0x2')];function createListener(_0x3f95e4,_0x38d58b){return function(_0x230e29){_0x38d58b[_0x6908('0x3')](_0x3f95e4,_0x230e29);};}function removeListener(_0x1a49e1,_0x4b8a45){return function(){VoicePrefixEvents[_0x6908('0x4')](_0x1a49e1,_0x4b8a45);};}exports['register']=function(_0x578f7a){for(var _0xecf3b7=0x0,_0x4e8ff0=events[_0x6908('0x5')];_0xecf3b7<_0x4e8ff0;_0xecf3b7++){var _0x2049a1=events[_0xecf3b7];var _0x2ce577=createListener('voicePrefix:'+_0x2049a1,_0x578f7a);VoicePrefixEvents['on'](_0x2049a1,_0x2ce577);}};
\ No newline at end of file
+var _0x4746=['length','voicePrefix:','./voicePrefix.events','save','update','emit','register'];(function(_0x8e7772,_0x9d77b0){var _0x408200=function(_0x1c61b6){while(--_0x1c61b6){_0x8e7772['push'](_0x8e7772['shift']());}};_0x408200(++_0x9d77b0);}(_0x4746,0xc6));var _0x6474=function(_0x12c39e,_0x3f158a){_0x12c39e=_0x12c39e-0x0;var _0x372933=_0x4746[_0x12c39e];return _0x372933;};'use strict';var VoicePrefixEvents=require(_0x6474('0x0'));var events=[_0x6474('0x1'),'remove',_0x6474('0x2')];function createListener(_0x59b95a,_0xd115f7){return function(_0x244bc5){_0xd115f7[_0x6474('0x3')](_0x59b95a,_0x244bc5);};}function removeListener(_0x156374,_0x1314f4){return function(){VoicePrefixEvents['removeListener'](_0x156374,_0x1314f4);};}exports[_0x6474('0x4')]=function(_0x2bcf7c){for(var _0x4cadd7=0x0,_0x433af9=events[_0x6474('0x5')];_0x4cadd7<_0x433af9;_0x4cadd7++){var _0xcd065e=events[_0x4cadd7];var _0xec3cda=createListener(_0x6474('0x6')+_0xcd065e,_0x2bcf7c);VoicePrefixEvents['on'](_0xcd065e,_0xec3cda);}};
\ No newline at end of file
index a5b7a92..edc9765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0xfb9aaa,_0x37935d){var _0x103bf7=function(_0x1e9f2a){while(--_0x1e9f2a){_0xfb9aaa['push'](_0xfb9aaa['shift']());}};_0x103bf7(++_0x37935d);}(_0xb10b,0x12a));var _0xbb10=function(_0x504f4c,_0x1aedf0){_0x504f4c=_0x504f4c-0x0;var _0x3e7570=_0xb10b[_0x504f4c];return _0x3e7570;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0xdb1da0,_0x5813b2){var _0x53065e=function(_0x24f83b){while(--_0x24f83b){_0xdb1da0['push'](_0xdb1da0['shift']());}};_0x53065e(++_0x5813b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 404fb7b..8d13582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a3f=['Active/Disactive\x20Campaign','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#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','outbound','inbound','default','ENUM','ringall','leastrecent','linear','wrandom','rrordered','setDataValue','getDataValue','type','dialMethod','strategy','booked','rrmemory','progressive','power','INTEGER','yes','all','once','periodic_announce','join','joinempty','split','leavewhenempty','BOOLEAN','wrapuptime'];(function(_0x22548f,_0x19c332){var _0x380e85=function(_0x4041c3){while(--_0x4041c3){_0x22548f['push'](_0x22548f['shift']());}};_0x380e85(++_0x19c332);}(_0x3a3f,0xd2));var _0xf3a3=function(_0x522533,_0x3a0693){_0x522533=_0x522533-0x0;var _0x49cc4f=_0x3a3f[_0x522533];return _0x49cc4f;};'use strict';var Sequelize=require(_0xf3a3('0x0'));module[_0xf3a3('0x1')]={'name':{'type':Sequelize[_0xf3a3('0x2')],'allowNull':![],'unique':_0xf3a3('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0xf3a3('0x4')),'allowNull':![],'defaultValue':_0xf3a3('0x5')},'musiconhold':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':_0xf3a3('0x6')},'announce':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xf3a3('0x7')]('rr',_0xf3a3('0x8'),_0xf3a3('0x9'),'fewestcalls','random','rrmemory',_0xf3a3('0xa'),_0xf3a3('0xb'),_0xf3a3('0xc')),'allowNull':![],'defaultValue':_0xf3a3('0x8'),'set':function(_0x51d5c8){this[_0xf3a3('0xd')]('strategy',_0x51d5c8?_0x51d5c8:'rrmemory');},'get':function(){var _0x4d8914=this[_0xf3a3('0xe')](_0xf3a3('0xf'));var _0xfbc6c3=this[_0xf3a3('0xe')](_0xf3a3('0x10'));var _0x49696d=this[_0xf3a3('0xe')](_0xf3a3('0x11'));if(_0x4d8914==='inbound'){return _0x49696d;}if(_0xfbc6c3===_0xf3a3('0x12')&&_0x49696d===_0xf3a3('0x13')||_0xfbc6c3===_0xf3a3('0x12')&&_0x49696d==='roundrobin'){return _0x49696d;}if(_0xfbc6c3===_0xf3a3('0x14')||_0xfbc6c3==='predictive'||_0xfbc6c3===_0xf3a3('0x15')){return _0x49696d;}return null;}},'servicelevel':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xf3a3('0x2')]},'weight':{'type':Sequelize[_0xf3a3('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0xf3a3('0x17'),'no'),'defaultValue':_0xf3a3('0x17')},'autopause':{'type':Sequelize['ENUM'](_0xf3a3('0x17'),'no',_0xf3a3('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xf3a3('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM']('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xf3a3('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':_0xf3a3('0x17')},'announce_holdtime':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x17'),'no',_0xf3a3('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0xf3a3('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xf3a3('0x7')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xf3a3('0x2')]},'queue_youarenext':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xf3a3('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0xf3a3('0x2')]},'queue_quantity2':{'type':Sequelize[_0xf3a3('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xf3a3('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1cf123){this[_0xf3a3('0xd')](_0xf3a3('0x1a'),_0x1cf123?_0x1cf123[_0xf3a3('0x1b')](','):[]);},'get':function(){return this[_0xf3a3('0xe')](_0xf3a3('0x1a'))?this[_0xf3a3('0xe')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':_0xf3a3('0x17'),'set':function(_0x1b3e49){this[_0xf3a3('0xd')](_0xf3a3('0x1c'),_0x1b3e49?_0x1b3e49[_0xf3a3('0x1b')](','):undefined);},'get':function(){return this['getDataValue'](_0xf3a3('0x1c'))?this['getDataValue']('joinempty')[_0xf3a3('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':'no','set':function(_0x1de799){this[_0xf3a3('0xd')](_0xf3a3('0x1e'),_0x1de799?_0x1de799[_0xf3a3('0x1b')](','):undefined);},'get':function(){return this[_0xf3a3('0xe')]('leavewhenempty')?this['getDataValue']('leavewhenempty')[_0xf3a3('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xf3a3('0x7')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xf3a3('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xf3a3('0x2')]},'description':{'type':Sequelize[_0xf3a3('0x2')]},'acw':{'type':Sequelize[_0xf3a3('0x1f')],'defaultValue':0x0,'set':function(_0x59fbeb){this['setDataValue']('acw',_0x59fbeb);if(_0x59fbeb){if(this[_0xf3a3('0xe')](_0xf3a3('0x20'))<0x2){this[_0xf3a3('0xd')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xf3a3('0x1f')],'defaultValue':0x0,'comment':_0xf3a3('0x21')},'dialMethod':{'type':Sequelize[_0xf3a3('0x7')]('preview',_0xf3a3('0x14'),_0xf3a3('0x15'),_0xf3a3('0x22'),'booked'),'defaultValue':_0xf3a3('0x14'),'comment':_0xf3a3('0x23')},'dialLimitChannel':{'type':Sequelize[_0xf3a3('0x16')](0x4)[_0xf3a3('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf3a3('0x25')},'dialLimitQueue':{'type':Sequelize[_0xf3a3('0x16')](0x4)[_0xf3a3('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf3a3('0x26')},'dialPowerLevel':{'type':Sequelize[_0xf3a3('0x27')](0x2)[_0xf3a3('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xf3a3('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x29'),_0xf3a3('0x2a')),'defaultValue':_0xf3a3('0x2a'),'comment':_0xf3a3('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xf3a3('0x27')](0x2)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x2c')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xf3a3('0x2d'),'comment':_0xf3a3('0x2e')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x2f')},'dialQueueProject':{'type':Sequelize[_0xf3a3('0x2')],'comment':_0xf3a3('0x30')},'dialCongestionMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf3a3('0x32')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x33')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'comment':_0xf3a3('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf3a3('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xf3a3('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf3a3('0x36'),_0xf3a3('0x37'),_0xf3a3('0x38')),'defaultValue':_0xf3a3('0x36')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf3a3('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf3a3('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf3a3('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf3a3('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf3a3('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf3a3('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf3a3('0x16')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf3a3('0x3f')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf3a3('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf3a3('0x16')](0x9)[_0xf3a3('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xf3a3('0x16')](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf3a3('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0xf3a3('0x7')](_0xf3a3('0x42'),'ASC'),'defaultValue':_0xf3a3('0x42')},'dialQueueProject2':{'type':Sequelize[_0xf3a3('0x2')],'comment':_0xf3a3('0x30')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xf3a3('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf3a3('0x43')},'dialCutDigit':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf3a3('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x45')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf3a3('0x16')](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf3a3('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x47')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf3a3('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf3a3('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf3a3('0x16')](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xf3a3('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf3a3('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf3a3('0x16')](0x5)[_0xf3a3('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf3a3('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf3a3('0x16')],'allowNull':!![],'comment':_0xf3a3('0x4d')},'mandatoryDisposition':{'type':Sequelize[_0xf3a3('0x1f')],'defaultValue':![],'comment':_0xf3a3('0x4e'),'set':function(_0x1b9ff3){if(!_0x1b9ff3)this[_0xf3a3('0xd')](_0xf3a3('0x4f'),null);this['setDataValue'](_0xf3a3('0x50'),_0x1b9ff3);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xf3a3('0x1f')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xf3a3('0x16')](0x3)[_0xf3a3('0x24')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xbe44=['Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','name','ENUM','outbound','inbound','leastrecent','rrmemory','linear','rrordered','ringall','strategy','type','getDataValue','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','split','setDataValue','join','joinempty','leavewhenempty','BOOLEAN','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','#Congestion\x20Retry\x20(min:1,\x20max:999)'];(function(_0x1c1bbb,_0x38a0b8){var _0x2e667c=function(_0x154180){while(--_0x154180){_0x1c1bbb['push'](_0x1c1bbb['shift']());}};_0x2e667c(++_0x38a0b8);}(_0xbe44,0x1e0));var _0x4be4=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xbe44[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0x4be4('0x0')]={'name':{'type':Sequelize[_0x4be4('0x1')],'allowNull':![],'unique':_0x4be4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x4be4('0x3')]('inbound',_0x4be4('0x4')),'allowNull':![],'defaultValue':_0x4be4('0x5')},'musiconhold':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x4be4('0x6'),'fewestcalls','random',_0x4be4('0x7'),_0x4be4('0x8'),'wrandom',_0x4be4('0x9')),'allowNull':![],'defaultValue':_0x4be4('0xa'),'set':function(_0x315020){this['setDataValue'](_0x4be4('0xb'),_0x315020?_0x315020:'rrmemory');},'get':function(){var _0x4f9f55=this['getDataValue'](_0x4be4('0xc'));var _0x516854=this[_0x4be4('0xd')]('dialMethod');var _0x311aa9=this[_0x4be4('0xd')](_0x4be4('0xb'));if(_0x4f9f55==='inbound'){return _0x311aa9;}if(_0x516854===_0x4be4('0xe')&&_0x311aa9===_0x4be4('0x7')||_0x516854==='booked'&&_0x311aa9===_0x4be4('0xf')){return _0x311aa9;}if(_0x516854===_0x4be4('0x10')||_0x516854===_0x4be4('0x11')||_0x516854===_0x4be4('0x12')){return _0x311aa9;}return null;}},'servicelevel':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x4be4('0x13')](0xb)},'timeout':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x4be4('0x1')]},'weight':{'type':Sequelize[_0x4be4('0x13')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x4be4('0x14'),'no'),'defaultValue':_0x4be4('0x14')},'autopause':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no',_0x4be4('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x4be4('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':_0x4be4('0x14')},'announce_holdtime':{'type':Sequelize[_0x4be4('0x3')]('yes','no',_0x4be4('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no')},'announce_position_limit':{'type':Sequelize[_0x4be4('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x4be4('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x4be4('0x1')]},'queue_quantity1':{'type':Sequelize[_0x4be4('0x1')]},'queue_quantity2':{'type':Sequelize[_0x4be4('0x1')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0x4be4('0x1')]},'periodic_announce':{'type':Sequelize[_0x4be4('0x17')],'set':function(_0x33fe51){this['setDataValue'](_0x4be4('0x18'),_0x33fe51?_0x33fe51['join'](','):[]);},'get':function(){return this[_0x4be4('0xd')](_0x4be4('0x18'))?this['getDataValue'](_0x4be4('0x18'))[_0x4be4('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':_0x4be4('0x14'),'set':function(_0xa344d3){this[_0x4be4('0x1a')]('joinempty',_0xa344d3?_0xa344d3[_0x4be4('0x1b')](','):undefined);},'get':function(){return this[_0x4be4('0xd')](_0x4be4('0x1c'))?this[_0x4be4('0xd')](_0x4be4('0x1c'))[_0x4be4('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':'no','set':function(_0x53a92a){this[_0x4be4('0x1a')]('leavewhenempty',_0x53a92a?_0x53a92a['join'](','):undefined);},'get':function(){return this['getDataValue'](_0x4be4('0x1d'))?this[_0x4be4('0xd')](_0x4be4('0x1d'))[_0x4be4('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x4be4('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x4be4('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4be4('0x1')]},'acw':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':0x0,'set':function(_0x549e72){this['setDataValue']('acw',_0x549e72);if(_0x549e72){if(this[_0x4be4('0xd')](_0x4be4('0x1f'))<0x2){this['setDataValue'](_0x4be4('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x4be4('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x20'),_0x4be4('0x10'),_0x4be4('0x12'),_0x4be4('0x11'),_0x4be4('0xe')),'defaultValue':_0x4be4('0x10'),'comment':_0x4be4('0x21')},'dialLimitChannel':{'type':Sequelize[_0x4be4('0x13')](0x4)[_0x4be4('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4be4('0x23')},'dialLimitQueue':{'type':Sequelize[_0x4be4('0x13')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x4be4('0x24')](0x2)[_0x4be4('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x4be4('0x25')},'dialPredictiveOptimization':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x26'),_0x4be4('0x27')),'defaultValue':_0x4be4('0x27'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x4be4('0x24')](0x2)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x4be4('0x28')},'dialOriginateCallerIdName':{'type':Sequelize[_0x4be4('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x4be4('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x29')},'dialQueueOptions':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':_0x4be4('0x2a'),'comment':_0x4be4('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x4be4('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x2c')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x2d')},'dialBusyMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x2e')},'dialBusyRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x2f')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'comment':_0x4be4('0x30')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x31')},'dialGlobalMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x4be4('0x32')},'dialTimezone':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x4be4('0x33')},'dialPrefix':{'type':Sequelize[_0x4be4('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x34'),'never',_0x4be4('0x35')),'defaultValue':_0x4be4('0x34')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x4be4('0x36')},'dialAMDGreeting':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x4be4('0x37')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x4be4('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x4be4('0x13')](0x9)[_0x4be4('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4be4('0x38')},'dialAMDMinWordLength':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x4be4('0x13')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x4be4('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x4be4('0x13')](0x9)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x4be4('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x4be4('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x4be4('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4be4('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x4be4('0x3d')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x4be4('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize[_0x4be4('0x3')](_0x4be4('0x3f'),_0x4be4('0x40')),'defaultValue':_0x4be4('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x4be4('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x4be4('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x41')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4be4('0x42')},'dialDropMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x43')},'dialDropRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x45')},'dialMachineRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)[_0x4be4('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4be4('0x46')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x4be4('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4be4('0x13')],'allowNull':!![],'comment':_0x4be4('0x47')},'mandatoryDisposition':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![],'comment':_0x4be4('0x48'),'set':function(_0x407722){if(!_0x407722)this['setDataValue'](_0x4be4('0x49'),null);this[_0x4be4('0x1a')](_0x4be4('0x4a'),_0x407722);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x4be4('0x13')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x4be4('0x13')](0x3)[_0x4be4('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x4be4('0x1e')],'defaultValue':![]}};
\ No newline at end of file
index af01d02..756223c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7374=['QueryTypes','SELECT','every','includes','all','union','compact','removeTeams','removeAgents','UserVoiceQueueRt','emit','userVoiceQueue:remove','addAgents','ids','spread','isEmpty','isArray','getAgents','getMembers','CmList','getLists','YYYY-MM-DD\x20HH:mm:ss','addLists','omit','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','register','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','VoiceQueues','inbound','QueueCampaigns','filter','ignore','map','value','type','find','name','UserProfileResource','destroy','end','sendStatus','stack','send','index','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','VoiceQueue','include','findAll','catch','show','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','outbound','userProfileId','autoAssociation','error','params','updatedAt','body','createdAt','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','CmHopperBlack','VoiceQueueId','getTeams','teams','Team','User','Agents','online','interface','flatMap','forEach','penalty','transaction','each','upsert','UserVoiceQueue','findOrCreate','isNil','format','SIP/%s','voicePause','userVoiceQueue:save','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','sequelize','toString'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7374,0x1b9));var _0x4737=function(_0x1db854,_0x51768f){_0x1db854=_0x1db854-0x0;var _0x1353cf=_0x7374[_0x1db854];return _0x1353cf;};'use strict';var emlformat=require(_0x4737('0x0'));var rimraf=require(_0x4737('0x1'));var zipdir=require(_0x4737('0x2'));var jsonpatch=require(_0x4737('0x3'));var rp=require(_0x4737('0x4'));var moment=require('moment');var BPromise=require(_0x4737('0x5'));var Mustache=require(_0x4737('0x6'));var util=require(_0x4737('0x7'));var path=require(_0x4737('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4737('0x9'));var fs=require('fs');var fs_extra=require(_0x4737('0xa'));var _=require(_0x4737('0xb'));var squel=require(_0x4737('0xc'));var crypto=require('crypto');var jsforce=require(_0x4737('0xd'));var deskjs=require(_0x4737('0xe'));var toCsv=require(_0x4737('0xf'));var querystring=require(_0x4737('0x10'));var Papa=require(_0x4737('0x11'));var Redis=require('ioredis');var authService=require(_0x4737('0x12'));var qs=require(_0x4737('0x13'));var as=require(_0x4737('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4737('0x15'));var utils=require(_0x4737('0x16'));var config=require(_0x4737('0x17'));var licenseUtil=require(_0x4737('0x18'));var db=require(_0x4737('0x19'))['db'];config[_0x4737('0x1a')]=_[_0x4737('0x1b')](config[_0x4737('0x1a')],{'host':_0x4737('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4737('0x1a')]));require(_0x4737('0x1d'))[_0x4737('0x1e')](socket);function respondWithStatusCode(_0xc7fceb,_0x3c07c0){_0x3c07c0=_0x3c07c0||0xcc;return function(_0x4f4e8a){if(_0x4f4e8a){return _0xc7fceb['sendStatus'](_0x3c07c0);}return _0xc7fceb[_0x4737('0x1f')](_0x3c07c0)['end']();};}function respondWithResult(_0x470ed4,_0xf96423){_0xf96423=_0xf96423||0xc8;return function(_0x5f415d){if(_0x5f415d){return _0x470ed4[_0x4737('0x1f')](_0xf96423)[_0x4737('0x20')](_0x5f415d);}};}function respondWithFilteredResult(_0xef032a,_0x51f125){return function(_0x2d2c32){if(_0x2d2c32){var _0x560265=typeof _0x51f125[_0x4737('0x21')]===_0x4737('0x22')&&typeof _0x51f125[_0x4737('0x23')]===_0x4737('0x22');var _0x1b2183=_0x2d2c32['count'];var _0x241ba7=_0x560265?0x0:_0x51f125[_0x4737('0x21')];var _0x6a2198=_0x560265?_0x2d2c32[_0x4737('0x24')]:_0x51f125['offset']+_0x51f125[_0x4737('0x23')];var _0x5d9ed4;if(_0x6a2198>=_0x1b2183){_0x6a2198=_0x1b2183;_0x5d9ed4=0xc8;}else{_0x5d9ed4=0xce;}_0xef032a[_0x4737('0x1f')](_0x5d9ed4);return _0xef032a[_0x4737('0x25')]('Content-Range',_0x241ba7+'-'+_0x6a2198+'/'+_0x1b2183)[_0x4737('0x20')](_0x2d2c32);}return null;};}function patchUpdates(_0x1c004f){return function(_0xa5e7dd){try{jsonpatch[_0x4737('0x26')](_0xa5e7dd,_0x1c004f,!![]);}catch(_0x56d82f){return BPromise[_0x4737('0x27')](_0x56d82f);}return _0xa5e7dd[_0x4737('0x28')]();};}function saveUpdates(_0x49eddf,_0x37382f){return function(_0x4805a0){if(_0x4805a0){return _0x4805a0[_0x4737('0x29')](_0x49eddf)[_0x4737('0x2a')](function(_0x3df6c5){return _0x3df6c5;});}return null;};}function removeEntity(_0x10685f,_0xe8e844){return function(_0x2a99fe){if(_0x2a99fe){return _0x2a99fe['destroy']()[_0x4737('0x2a')](function(){var _0x52c764=_0x2a99fe[_0x4737('0x2b')]({'plain':!![]});var _0x4998ee=[{'name':_0x4737('0x2c'),'value':_0x4737('0x2d'),'ignore':![]},{'name':_0x4737('0x2e'),'value':'outbound','ignore':![]}];var _0x4f3e2d=_(_0x4998ee)[_0x4737('0x2f')](_0x4737('0x30'))[_0x4737('0x31')](_0x4737('0x32'))[_0x4737('0x32')]();if(_['includes'](_0x4f3e2d,_0x52c764[_0x4737('0x33')])){return;}var _0x2a8f99=_[_0x4737('0x34')](_0x4998ee,[_0x4737('0x32'),_0x52c764[_0x4737('0x33')]])[_0x4737('0x35')];return db[_0x4737('0x36')][_0x4737('0x37')]({'where':{'type':_0x2a8f99,'resourceId':_0x52c764['id']}})['then'](function(){return _0x2a99fe;});})[_0x4737('0x2a')](function(){_0x10685f[_0x4737('0x1f')](0xcc)[_0x4737('0x38')]();});}};}function handleEntityNotFound(_0x2ea236,_0xa1eea4){return function(_0x273fae){if(!_0x273fae){_0x2ea236[_0x4737('0x39')](0x194);}return _0x273fae;};}function handleError(_0x3d4330,_0x1ffdee){_0x1ffdee=_0x1ffdee||0x1f4;return function(_0x555227){logger['error'](_0x555227[_0x4737('0x3a')]);if(_0x555227[_0x4737('0x35')]){delete _0x555227['name'];}_0x3d4330[_0x4737('0x1f')](_0x1ffdee)[_0x4737('0x3b')](_0x555227);};}exports[_0x4737('0x3c')]=function(_0x3b8aa0,_0xe58a10){var _0x59f44f={},_0x45ea75={},_0x69d090={'count':0x0,'rows':[]};var _0x2ce402=_[_0x4737('0x31')](db['VoiceQueue'][_0x4737('0x3d')],function(_0x315ee6){return{'name':_0x315ee6[_0x4737('0x3e')],'type':_0x315ee6[_0x4737('0x33')]['key']};});_0x45ea75['model']=_[_0x4737('0x31')](_0x2ce402,'name');_0x45ea75[_0x4737('0x3f')]=_[_0x4737('0x40')](_0x3b8aa0['query']);_0x45ea75[_0x4737('0x41')]=_[_0x4737('0x42')](_0x45ea75[_0x4737('0x43')],_0x45ea75[_0x4737('0x3f')]);_0x59f44f[_0x4737('0x44')]=_[_0x4737('0x42')](_0x45ea75[_0x4737('0x43')],qs['fields'](_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x45')]));_0x59f44f[_0x4737('0x44')]=_0x59f44f[_0x4737('0x44')][_0x4737('0x46')]?_0x59f44f[_0x4737('0x44')]:_0x45ea75['model'];if(!_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x47')](_0x4737('0x48'))){_0x59f44f['limit']=qs['limit'](_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x23')]);_0x59f44f['offset']=qs[_0x4737('0x21')](_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x21')]);}_0x59f44f[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x4a')]);_0x59f44f[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x3b8aa0[_0x4737('0x3f')],_0x45ea75[_0x4737('0x41')]),_0x2ce402);if(_0x3b8aa0[_0x4737('0x3f')][_0x4737('0x2f')]){_0x59f44f['where']=_[_0x4737('0x4d')](_0x59f44f[_0x4737('0x4b')],{'$or':_[_0x4737('0x31')](_0x2ce402,function(_0xe2ad47){if(_0xe2ad47[_0x4737('0x33')]!==_0x4737('0x4e')){var _0x325527={};_0x325527[_0xe2ad47[_0x4737('0x35')]]={'$like':'%'+_0x3b8aa0[_0x4737('0x3f')]['filter']+'%'};return _0x325527;}})});}_0x59f44f=_[_0x4737('0x4d')]({},_0x59f44f,_0x3b8aa0[_0x4737('0x4f')]);var _0x2cdec6={'where':_0x59f44f['where']};return db[_0x4737('0x50')][_0x4737('0x24')](_0x2cdec6)[_0x4737('0x2a')](function(_0xb38327){_0x69d090[_0x4737('0x24')]=_0xb38327;if(_0x3b8aa0['query']['includeAll']){_0x59f44f[_0x4737('0x51')]=[{'all':!![]}];}return db[_0x4737('0x50')][_0x4737('0x52')](_0x59f44f);})[_0x4737('0x2a')](function(_0x10857a){_0x69d090['rows']=_0x10857a;return _0x69d090;})[_0x4737('0x2a')](respondWithFilteredResult(_0xe58a10,_0x59f44f))[_0x4737('0x53')](handleError(_0xe58a10,null));};exports[_0x4737('0x54')]=function(_0x1e1b80,_0x44aebc){var _0x23b945={'raw':![],'where':{'id':_0x1e1b80['params']['id']}},_0xb4e5bc={};_0xb4e5bc['model']=_[_0x4737('0x40')](db[_0x4737('0x50')][_0x4737('0x3d')]);_0xb4e5bc['query']=_[_0x4737('0x40')](_0x1e1b80['query']);_0xb4e5bc[_0x4737('0x41')]=_[_0x4737('0x42')](_0xb4e5bc[_0x4737('0x43')],_0xb4e5bc[_0x4737('0x3f')]);_0x23b945[_0x4737('0x44')]=_[_0x4737('0x42')](_0xb4e5bc[_0x4737('0x43')],qs[_0x4737('0x45')](_0x1e1b80[_0x4737('0x3f')]['fields']));_0x23b945[_0x4737('0x44')]=_0x23b945[_0x4737('0x44')][_0x4737('0x46')]?_0x23b945['attributes']:_0xb4e5bc[_0x4737('0x43')];if(_0x1e1b80[_0x4737('0x3f')][_0x4737('0x55')]){_0x23b945['include']=[{'all':!![]}];}_0x23b945=_[_0x4737('0x4d')]({},_0x23b945,_0x1e1b80[_0x4737('0x4f')]);return db[_0x4737('0x50')][_0x4737('0x34')](_0x23b945)[_0x4737('0x2a')](handleEntityNotFound(_0x44aebc,null))['then'](respondWithResult(_0x44aebc,null))['catch'](handleError(_0x44aebc,null));};exports[_0x4737('0x56')]=function(_0x2805f4,_0x33ab10){return db[_0x4737('0x50')][_0x4737('0x56')](_0x2805f4['body'],{})[_0x4737('0x2a')](function(_0x5804fb){var _0x3d2c25=_0x2805f4[_0x4737('0x57')][_0x4737('0x2b')]({'plain':!![]});if(!_0x3d2c25)throw new Error(_0x4737('0x58'));if(_0x3d2c25[_0x4737('0x59')]===_0x4737('0x57')){var _0x5dc8bd=_0x5804fb[_0x4737('0x2b')]({'plain':!![]});var _0x1c97a0=[{'name':'VoiceQueues','value':_0x4737('0x2d')},{'name':_0x4737('0x2e'),'value':_0x4737('0x5a')}];var _0x543ae5=_[_0x4737('0x34')](_0x1c97a0,['value',_0x5dc8bd[_0x4737('0x33')]])[_0x4737('0x35')];return db['UserProfileSection'][_0x4737('0x34')]({'where':{'name':_0x543ae5,'userProfileId':_0x3d2c25[_0x4737('0x5b')]},'raw':!![]})[_0x4737('0x2a')](function(_0x45c2b2){if(_0x45c2b2&&_0x45c2b2[_0x4737('0x5c')]===0x0){return db[_0x4737('0x36')][_0x4737('0x56')]({'name':_0x5dc8bd['name'],'resourceId':_0x5dc8bd['id'],'type':_0x45c2b2[_0x4737('0x35')],'sectionId':_0x45c2b2['id']},{})[_0x4737('0x2a')](function(){return _0x5804fb;});}else{return _0x5804fb;}})[_0x4737('0x53')](function(_0x3b6f24){logger[_0x4737('0x5d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b6f24);throw _0x3b6f24;});}return _0x5804fb;})['then'](respondWithResult(_0x33ab10,0xc9))[_0x4737('0x53')](handleError(_0x33ab10,null));};exports['clone']=function(_0x4db258,_0x1998a9){var _0x50bab3={'where':{'id':_0x4db258[_0x4737('0x5e')]['id']}},_0xd94f66={};_0xd94f66[_0x4737('0x43')]=_['keys'](db[_0x4737('0x50')]['rawAttributes']);_0x50bab3[_0x4737('0x44')]=_[_0x4737('0x42')](_0xd94f66[_0x4737('0x43')],qs[_0x4737('0x45')](_0x4db258[_0x4737('0x3f')][_0x4737('0x45')]));_0x50bab3['attributes']=_0x50bab3[_0x4737('0x44')][_0x4737('0x46')]?_0x50bab3[_0x4737('0x44')]:_0xd94f66[_0x4737('0x43')];if(_0x4db258['query']['includeAll']){_0x50bab3['include']=[{'all':!![]}];}_0x50bab3=_[_0x4737('0x4d')]({},_0x50bab3,_0x4db258[_0x4737('0x4f')]);return db[_0x4737('0x50')][_0x4737('0x34')](_0x50bab3)[_0x4737('0x2a')](handleEntityNotFound(_0x1998a9,null))[_0x4737('0x2a')](function(_0x2ce227){if(_0x2ce227){var _0xf5dde=_0x2ce227[_0x4737('0x2b')]({'plain':!![]});_0xf5dde=qs['omit'](_0xf5dde,['id','createdAt',_0x4737('0x5f')]);_0x4db258['body']=_['omit'](_0x4db258[_0x4737('0x60')],['id',_0x4737('0x61'),_0x4737('0x5f')]);return db[_0x4737('0x50')][_0x4737('0x56')](_[_0x4737('0x4d')](_0xf5dde,_0x4db258[_0x4737('0x60')]),{'include':_0x4db258[_0x4737('0x3f')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x287d25){var _0x3d8d6f=_0x4db258['user']['get']({'plain':!![]});if(!_0x3d8d6f)throw new Error(_0x4737('0x58'));if(_0x3d8d6f['role']===_0x4737('0x57')){var _0xc1f647=_0x287d25[_0x4737('0x2b')]({'plain':!![]});var _0x48f4cd=[{'name':'VoiceQueues','value':_0x4737('0x2d')},{'name':_0x4737('0x2e'),'value':_0x4737('0x5a')}];var _0x31a09b=_[_0x4737('0x34')](_0x48f4cd,[_0x4737('0x32'),_0xc1f647[_0x4737('0x33')]])[_0x4737('0x35')];return db[_0x4737('0x62')][_0x4737('0x34')]({'where':{'name':_0x31a09b,'userProfileId':_0x3d8d6f[_0x4737('0x5b')]},'raw':!![]})['then'](function(_0x401a56){if(_0x401a56&&_0x401a56[_0x4737('0x5c')]===0x0){return db['UserProfileResource']['create']({'name':_0xc1f647[_0x4737('0x35')],'resourceId':_0xc1f647['id'],'type':_0x401a56[_0x4737('0x35')],'sectionId':_0x401a56['id']},{})[_0x4737('0x2a')](function(){return _0x287d25;});}else{return _0x287d25;}})['catch'](function(_0x38052f){logger[_0x4737('0x5d')](_0x4737('0x63'),_0x38052f);throw _0x38052f;});}return _0x287d25;});}})[_0x4737('0x2a')](respondWithResult(_0x1998a9,0xc9))[_0x4737('0x53')](handleError(_0x1998a9,null));};exports[_0x4737('0x29')]=function(_0x3b0c59,_0x19d0dd){if(_0x3b0c59[_0x4737('0x60')]['id']){delete _0x3b0c59[_0x4737('0x60')]['id'];}return db[_0x4737('0x50')]['find']({'where':{'id':_0x3b0c59[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x19d0dd,null))['then'](saveUpdates(_0x3b0c59['body'],null))['then'](respondWithResult(_0x19d0dd,null))['catch'](handleError(_0x19d0dd,null));};exports[_0x4737('0x37')]=function(_0x47d0e2,_0x21ca8e){return db[_0x4737('0x50')][_0x4737('0x34')]({'where':{'id':_0x47d0e2[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x21ca8e,null))['then'](removeEntity(_0x21ca8e,null))[_0x4737('0x53')](handleError(_0x21ca8e,null));};exports['getHoppers']=function(_0x1d3c2a,_0x37b9a2,_0x5215c7){var _0x1fc3ac={'raw':![],'where':{}};var _0x6e73b9={};var _0x1a947a={'count':0x0,'rows':[]};return db[_0x4737('0x50')][_0x4737('0x64')]({'where':{'id':_0x1d3c2a['params']['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x37b9a2,null))[_0x4737('0x2a')](function(_0x40338d){if(_0x40338d){_0x6e73b9['model']=_['keys'](db['CmHopper'][_0x4737('0x3d')]);_0x6e73b9[_0x4737('0x3f')]=_[_0x4737('0x40')](_0x1d3c2a['query']);_0x6e73b9[_0x4737('0x41')]=_[_0x4737('0x42')](_0x6e73b9[_0x4737('0x43')],_0x6e73b9[_0x4737('0x3f')]);_0x1fc3ac[_0x4737('0x44')]=_['intersection'](_0x6e73b9[_0x4737('0x43')],qs[_0x4737('0x45')](_0x1d3c2a[_0x4737('0x3f')]['fields']));_0x1fc3ac[_0x4737('0x44')]=_0x1fc3ac[_0x4737('0x44')][_0x4737('0x46')]?_0x1fc3ac[_0x4737('0x44')]:_0x6e73b9[_0x4737('0x43')];if(!_0x1d3c2a[_0x4737('0x3f')][_0x4737('0x47')](_0x4737('0x48'))){_0x1fc3ac[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x1d3c2a[_0x4737('0x3f')]['limit']);_0x1fc3ac[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x1d3c2a[_0x4737('0x3f')]['offset']);}_0x1fc3ac[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x1d3c2a[_0x4737('0x3f')]['sort']);_0x1fc3ac[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x1d3c2a['query'],_0x6e73b9[_0x4737('0x41')]));_0x1fc3ac[_0x4737('0x4b')]['VoiceQueueId']=_0x40338d['id'];if(_0x1d3c2a[_0x4737('0x3f')][_0x4737('0x2f')]){_0x1fc3ac['where']=_[_0x4737('0x4d')](_0x1fc3ac[_0x4737('0x4b')],{'$or':_['map'](_0x1fc3ac['attributes'],function(_0x2c916a){var _0x167c98={};_0x167c98[_0x2c916a]={'$like':'%'+_0x1d3c2a[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x167c98;})});}_0x1fc3ac=_[_0x4737('0x4d')]({},_0x1fc3ac,_0x1d3c2a[_0x4737('0x4f')]);return db[_0x4737('0x65')][_0x4737('0x24')]({'where':_0x1fc3ac[_0x4737('0x4b')]})['then'](function(_0x209646){_0x1a947a[_0x4737('0x24')]=_0x209646;if(_0x1d3c2a[_0x4737('0x3f')][_0x4737('0x55')]){_0x1fc3ac['include']=[{'all':!![]}];}return db[_0x4737('0x65')][_0x4737('0x52')](_0x1fc3ac);})[_0x4737('0x2a')](function(_0x3feb78){_0x1a947a['rows']=_0x3feb78;return _0x1a947a;});}})[_0x4737('0x2a')](respondWithFilteredResult(_0x37b9a2,_0x1fc3ac))[_0x4737('0x53')](handleError(_0x37b9a2,null));};exports['getHopperHistories']=function(_0x4f0a21,_0x4c762c,_0x46fc62){var _0x53a15c={'raw':!![],'where':{}};var _0x5ee536={};var _0x366539={'count':0x0,'rows':[]};return db[_0x4737('0x50')][_0x4737('0x64')]({'where':{'id':_0x4f0a21[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x4c762c,null))[_0x4737('0x2a')](function(_0x1d08a6){if(_0x1d08a6){_0x5ee536[_0x4737('0x43')]=_[_0x4737('0x40')](db['CmHopperHistory'][_0x4737('0x3d')]);_0x5ee536[_0x4737('0x3f')]=_[_0x4737('0x40')](_0x4f0a21[_0x4737('0x3f')]);_0x5ee536[_0x4737('0x41')]=_[_0x4737('0x42')](_0x5ee536[_0x4737('0x43')],_0x5ee536['query']);_0x53a15c['attributes']=_['intersection'](_0x5ee536[_0x4737('0x43')],qs['fields'](_0x4f0a21[_0x4737('0x3f')]['fields']));_0x53a15c['attributes']=_0x53a15c[_0x4737('0x44')]['length']?_0x53a15c[_0x4737('0x44')]:_0x5ee536[_0x4737('0x43')];if(!_0x4f0a21[_0x4737('0x3f')][_0x4737('0x47')](_0x4737('0x48'))){_0x53a15c[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x4f0a21[_0x4737('0x3f')][_0x4737('0x23')]);_0x53a15c[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x4f0a21['query'][_0x4737('0x21')]);}_0x53a15c[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x4f0a21['query'][_0x4737('0x4a')]);_0x53a15c[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x4f0a21[_0x4737('0x3f')],_0x5ee536['filters']));_0x53a15c[_0x4737('0x4b')]['VoiceQueueId']=_0x1d08a6['id'];if(_0x4f0a21[_0x4737('0x3f')][_0x4737('0x2f')]){_0x53a15c['where']=_[_0x4737('0x4d')](_0x53a15c[_0x4737('0x4b')],{'$or':_['map'](_0x53a15c['attributes'],function(_0x5ea2b2){var _0x5568b3={};_0x5568b3[_0x5ea2b2]={'$like':'%'+_0x4f0a21['query']['filter']+'%'};return _0x5568b3;})});}_0x53a15c=_[_0x4737('0x4d')]({},_0x53a15c,_0x4f0a21[_0x4737('0x4f')]);return db[_0x4737('0x66')][_0x4737('0x24')]({'where':_0x53a15c[_0x4737('0x4b')]})[_0x4737('0x2a')](function(_0x217ca8){_0x366539['count']=_0x217ca8;if(_0x4f0a21['query'][_0x4737('0x55')]){_0x53a15c[_0x4737('0x51')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x4737('0x52')](_0x53a15c);})[_0x4737('0x2a')](function(_0x3e9100){_0x366539[_0x4737('0x67')]=_0x3e9100;return _0x366539;});}})[_0x4737('0x2a')](respondWithFilteredResult(_0x4c762c,_0x53a15c))['catch'](handleError(_0x4c762c,null));};exports[_0x4737('0x68')]=function(_0x483b12,_0x343796,_0x8fd9c5){var _0x1509cc={'raw':!![],'where':{}};var _0x5d9d98={};var _0x2b64dc={'count':0x0,'rows':[]};return db[_0x4737('0x50')]['findOne']({'where':{'id':_0x483b12[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x343796,null))[_0x4737('0x2a')](function(_0x459bf4){if(_0x459bf4){_0x5d9d98[_0x4737('0x43')]=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x5d9d98[_0x4737('0x3f')]=_['keys'](_0x483b12[_0x4737('0x3f')]);_0x5d9d98[_0x4737('0x41')]=_[_0x4737('0x42')](_0x5d9d98['model'],_0x5d9d98[_0x4737('0x3f')]);_0x1509cc[_0x4737('0x44')]=_['intersection'](_0x5d9d98[_0x4737('0x43')],qs[_0x4737('0x45')](_0x483b12[_0x4737('0x3f')][_0x4737('0x45')]));_0x1509cc[_0x4737('0x44')]=_0x1509cc['attributes'][_0x4737('0x46')]?_0x1509cc[_0x4737('0x44')]:_0x5d9d98[_0x4737('0x43')];if(!_0x483b12[_0x4737('0x3f')][_0x4737('0x47')](_0x4737('0x48'))){_0x1509cc[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x483b12[_0x4737('0x3f')][_0x4737('0x23')]);_0x1509cc[_0x4737('0x21')]=qs['offset'](_0x483b12[_0x4737('0x3f')]['offset']);}_0x1509cc['order']=qs[_0x4737('0x4a')](_0x483b12[_0x4737('0x3f')][_0x4737('0x4a')]);_0x1509cc[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x483b12[_0x4737('0x3f')],_0x5d9d98[_0x4737('0x41')]));_0x1509cc[_0x4737('0x4b')]['VoiceQueueId']=_0x459bf4['id'];if(_0x483b12[_0x4737('0x3f')]['filter']){_0x1509cc[_0x4737('0x4b')]=_[_0x4737('0x4d')](_0x1509cc['where'],{'$or':_['map'](_0x1509cc[_0x4737('0x44')],function(_0x19c2b5){var _0x1d42f0={};_0x1d42f0[_0x19c2b5]={'$like':'%'+_0x483b12[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x1d42f0;})});}_0x1509cc=_['merge']({},_0x1509cc,_0x483b12['options']);return db[_0x4737('0x69')][_0x4737('0x24')]({'where':_0x1509cc[_0x4737('0x4b')]})[_0x4737('0x2a')](function(_0x1995ae){_0x2b64dc[_0x4737('0x24')]=_0x1995ae;if(_0x483b12['query']['includeAll']){_0x1509cc[_0x4737('0x51')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x4737('0x52')](_0x1509cc);})[_0x4737('0x2a')](function(_0x2c61d8){_0x2b64dc[_0x4737('0x67')]=_0x2c61d8;return _0x2b64dc;});}})[_0x4737('0x2a')](respondWithFilteredResult(_0x343796,_0x1509cc))[_0x4737('0x53')](handleError(_0x343796,null));};exports['getHopperBlacks']=function(_0x1bded1,_0x211184,_0xfbc4d5){var _0x5569db={'raw':!![],'where':{}};var _0x2a26dc={};var _0x10b588={'count':0x0,'rows':[]};return db[_0x4737('0x50')][_0x4737('0x64')]({'where':{'id':_0x1bded1[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x211184,null))[_0x4737('0x2a')](function(_0x1cdeb4){if(_0x1cdeb4){_0x2a26dc[_0x4737('0x43')]=_[_0x4737('0x40')](db[_0x4737('0x6a')][_0x4737('0x3d')]);_0x2a26dc['query']=_[_0x4737('0x40')](_0x1bded1['query']);_0x2a26dc['filters']=_['intersection'](_0x2a26dc['model'],_0x2a26dc[_0x4737('0x3f')]);_0x5569db['attributes']=_['intersection'](_0x2a26dc[_0x4737('0x43')],qs[_0x4737('0x45')](_0x1bded1[_0x4737('0x3f')][_0x4737('0x45')]));_0x5569db['attributes']=_0x5569db[_0x4737('0x44')][_0x4737('0x46')]?_0x5569db[_0x4737('0x44')]:_0x2a26dc[_0x4737('0x43')];if(!_0x1bded1[_0x4737('0x3f')]['hasOwnProperty'](_0x4737('0x48'))){_0x5569db['limit']=qs[_0x4737('0x23')](_0x1bded1[_0x4737('0x3f')][_0x4737('0x23')]);_0x5569db[_0x4737('0x21')]=qs['offset'](_0x1bded1[_0x4737('0x3f')][_0x4737('0x21')]);}_0x5569db[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x1bded1[_0x4737('0x3f')][_0x4737('0x4a')]);_0x5569db[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x1bded1[_0x4737('0x3f')],_0x2a26dc[_0x4737('0x41')]));_0x5569db['where'][_0x4737('0x6b')]=_0x1cdeb4['id'];if(_0x1bded1['query'][_0x4737('0x2f')]){_0x5569db[_0x4737('0x4b')]=_['merge'](_0x5569db[_0x4737('0x4b')],{'$or':_[_0x4737('0x31')](_0x5569db['attributes'],function(_0x350558){var _0x584113={};_0x584113[_0x350558]={'$like':'%'+_0x1bded1[_0x4737('0x3f')]['filter']+'%'};return _0x584113;})});}_0x5569db=_['merge']({},_0x5569db,_0x1bded1[_0x4737('0x4f')]);return db['CmHopperBlack']['count']({'where':_0x5569db['where']})[_0x4737('0x2a')](function(_0x2b3aab){_0x10b588[_0x4737('0x24')]=_0x2b3aab;if(_0x1bded1[_0x4737('0x3f')][_0x4737('0x55')]){_0x5569db[_0x4737('0x51')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x4737('0x52')](_0x5569db);})['then'](function(_0x1c715c){_0x10b588[_0x4737('0x67')]=_0x1c715c;return _0x10b588;});}})[_0x4737('0x2a')](respondWithFilteredResult(_0x211184,_0x5569db))['catch'](handleError(_0x211184,null));};exports[_0x4737('0x6c')]=function(_0x507591,_0x40c540,_0x21ab72){var _0x3c26b7={};var _0x3482a2={};var _0x403e99;var _0xfbb6dd;return db[_0x4737('0x50')][_0x4737('0x64')]({'where':{'id':_0x507591[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x40c540,null))[_0x4737('0x2a')](function(_0x190b47){if(_0x190b47){_0x403e99=_0x190b47;_0x3482a2[_0x4737('0x43')]=_['keys'](db['Team'][_0x4737('0x3d')]);_0x3482a2[_0x4737('0x3f')]=_['keys'](_0x507591[_0x4737('0x3f')]);_0x3482a2[_0x4737('0x41')]=_['intersection'](_0x3482a2[_0x4737('0x43')],_0x3482a2[_0x4737('0x3f')]);_0x3c26b7[_0x4737('0x44')]=_[_0x4737('0x42')](_0x3482a2[_0x4737('0x43')],qs[_0x4737('0x45')](_0x507591[_0x4737('0x3f')][_0x4737('0x45')]));_0x3c26b7['attributes']=_0x3c26b7[_0x4737('0x44')][_0x4737('0x46')]?_0x3c26b7[_0x4737('0x44')]:_0x3482a2['model'];_0x3c26b7[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x507591[_0x4737('0x3f')][_0x4737('0x4a')]);_0x3c26b7[_0x4737('0x4b')]=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x507591['query'],_0x3482a2[_0x4737('0x41')]));if(_0x507591['query']['filter']){_0x3c26b7[_0x4737('0x4b')]=_[_0x4737('0x4d')](_0x3c26b7[_0x4737('0x4b')],{'$or':_[_0x4737('0x31')](_0x3c26b7[_0x4737('0x44')],function(_0x249b72){var _0x223007={};_0x223007[_0x249b72]={'$like':'%'+_0x507591[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x223007;})});}_0x3c26b7=_[_0x4737('0x4d')]({},_0x3c26b7,_0x507591['options']);return _0x403e99[_0x4737('0x6c')](_0x3c26b7);}})[_0x4737('0x2a')](function(_0x2b5852){if(_0x2b5852){_0xfbb6dd=_0x2b5852[_0x4737('0x46')];if(!_0x507591['query'][_0x4737('0x47')]('nolimit')){_0x3c26b7[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x507591['query'][_0x4737('0x23')]);_0x3c26b7[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x507591[_0x4737('0x3f')]['offset']);}return _0x403e99[_0x4737('0x6c')](_0x3c26b7);}})[_0x4737('0x2a')](function(_0x2972f3){if(_0x2972f3){return _0x2972f3?{'count':_0xfbb6dd,'rows':_0x2972f3}:null;}})[_0x4737('0x2a')](respondWithResult(_0x40c540,null))['catch'](handleError(_0x40c540,null));};exports['addTeams']=function(_0x5a2efc,_0x22ae7b,_0x153805){var _0x17ddb2=_0x5a2efc[_0x4737('0x60')][_0x4737('0x6d')];var _0x59896d=_['map'](_0x17ddb2,'id');return db[_0x4737('0x6e')]['findAll']({'where':{'id':_0x59896d},'attributes':['id'],'include':[{'model':db[_0x4737('0x6f')],'as':_0x4737('0x70'),'attributes':['id',_0x4737('0x35'),_0x4737('0x71'),'voicePause',_0x4737('0x72')],'raw':!![]}]})[_0x4737('0x2a')](function(_0x546020){if(_0x546020){var _0x2783ba=_[_0x4737('0x73')](_0x546020,function(_0x4b7976){var _0x3e1ddc=_0x4b7976[_0x4737('0x2b')]({'plain':!![]});_0x3e1ddc[_0x4737('0x70')][_0x4737('0x74')](function(_0x2991ab){_0x2991ab[_0x4737('0x75')]=_[_0x4737('0x34')](_0x17ddb2,{'id':_0x3e1ddc['id']})[_0x4737('0x75')];});return _0x3e1ddc[_0x4737('0x70')];});return db[_0x4737('0x50')][_0x4737('0x34')]({'where':{'id':_0x5a2efc['params']['id']}})[_0x4737('0x2a')](function(_0x1ff8ed){return db['sequelize'][_0x4737('0x76')](function(_0x2f59bf){return _0x1ff8ed['addTeams'](_0x59896d,{'transaction':_0x2f59bf})['then'](function(){return BPromise[_0x4737('0x77')](_0x17ddb2,function(_0xdbf66e){return db['TeamVoiceQueue'][_0x4737('0x78')]({'TeamId':_0xdbf66e['id'],'VoiceQueueId':_0x5a2efc[_0x4737('0x5e')]['id'],'penalty':_0xdbf66e[_0x4737('0x75')]},{'transaction':_0x2f59bf});});})[_0x4737('0x2a')](function(){return BPromise[_0x4737('0x77')](_0x2783ba,function(_0x45484c){return db[_0x4737('0x79')][_0x4737('0x7a')]({'where':{'UserId':_0x45484c['id'],'VoiceQueueId':_0x5a2efc['params']['id']},'defaults':{'penalty':_0x45484c[_0x4737('0x75')]},'transaction':_0x2f59bf});});})[_0x4737('0x2a')](function(){return BPromise[_0x4737('0x77')](_[_0x4737('0x2f')](_0x2783ba,{'online':!![]}),function(_0x1ff82c){return db['UserVoiceQueueRt'][_0x4737('0x78')]({'membername':_0x1ff82c[_0x4737('0x35')],'UserId':_0x1ff82c['id'],'queue_name':_0x1ff8ed[_0x4737('0x35')],'VoiceQueueId':_0x1ff8ed['id'],'interface':_[_0x4737('0x7b')](_0x1ff82c[_0x4737('0x72')])?util[_0x4737('0x7c')](_0x4737('0x7d'),_0x1ff82c[_0x4737('0x35')]):_0x1ff82c['interface'],'paused':_0x1ff82c[_0x4737('0x7e')]||![],'penalty':_0x1ff82c[_0x4737('0x75')]},{'transaction':_0x2f59bf});});})[_0x4737('0x2a')](function(){_0x2783ba['forEach'](function(_0x510117){socket['emit'](_0x4737('0x7f'),{'UserId':_0x510117['id'],'VoiceQueueId':_0x1ff8ed['id']});});});});});}})[_0x4737('0x2a')](respondWithStatusCode(_0x22ae7b,null))[_0x4737('0x53')](handleError(_0x22ae7b,null));};exports['removeTeams']=function(_0x330b01,_0x266653,_0x3172d6){return db[_0x4737('0x6e')][_0x4737('0x52')]({'where':{'id':_0x330b01[_0x4737('0x3f')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x266653,null))[_0x4737('0x2a')](function(_0x6c0530){var _0x37e706=_[_0x4737('0x31')](_0x6c0530,'id');var _0x39f5a8=[];var _0x390157=[];var _0x2b7de8=squel[_0x4737('0x80')]();_0x2b7de8[_0x4737('0x81')]('tq.TeamId')[_0x4737('0x82')](_0x4737('0x83'),'tq')['join'](_0x4737('0x84'),'ut',_0x4737('0x85'))[_0x4737('0x4b')](_0x4737('0x86'),_0x330b01[_0x4737('0x5e')]['id']);for(var _0x15ed96=0x0;_0x15ed96<_0x6c0530[_0x4737('0x46')];_0x15ed96+=0x1){let _0x7656fc=_0x6c0530[_0x15ed96];for(var _0xedb6c8=0x0;_0xedb6c8<_0x7656fc['Agents'][_0x4737('0x46')];_0xedb6c8+=0x1){let _0x37fad0=_0x7656fc[_0x4737('0x70')][_0xedb6c8];var _0x5b7825=_0x2b7de8['clone']();_0x5b7825[_0x4737('0x4b')]('ut.UserId\x20=\x20?',_0x37fad0['id']);_0x390157[_0x4737('0x87')](db[_0x4737('0x88')][_0x4737('0x3f')](_0x5b7825[_0x4737('0x89')](),{'type':db['sequelize'][_0x4737('0x8a')][_0x4737('0x8b')]})[_0x4737('0x2a')](function(_0x367723){if(_0x367723[_0x4737('0x46')]===0x1){return _0x37fad0['id'];}else{var _0xba22b=_[_0x4737('0x8c')](_[_0x4737('0x31')](_0x367723,'TeamId'),function(_0x208c64){return _[_0x4737('0x8d')](_0x37e706,_0x208c64);});if(_0xba22b){return _0x37fad0['id'];}}}));}}return BPromise[_0x4737('0x8e')](_0x390157)['then'](function(_0xc41c68){_0x39f5a8=_(_0x39f5a8)[_0x4737('0x8f')](_0xc41c68)[_0x4737('0x90')]()[_0x4737('0x32')]();return db[_0x4737('0x50')][_0x4737('0x34')]({'where':{'id':_0x330b01[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](function(_0x28b269){return db[_0x4737('0x88')]['transaction'](function(_0x12788e){return _0x28b269[_0x4737('0x91')](_0x330b01[_0x4737('0x3f')]['ids'],{'transaction':_0x12788e})[_0x4737('0x2a')](function(){if(!_['isEmpty'](_0x39f5a8)){return _0x28b269[_0x4737('0x92')](_0x39f5a8,{'transaction':_0x12788e})[_0x4737('0x2a')](function(){return db[_0x4737('0x93')][_0x4737('0x37')]({'where':{'VoiceQueueId':_0x330b01[_0x4737('0x5e')]['id'],'UserId':_0x39f5a8},'transaction':_0x12788e});});}})['then'](function(){_0x39f5a8[_0x4737('0x74')](function(_0x197b36){socket[_0x4737('0x94')](_0x4737('0x95'),{'UserId':_0x197b36,'VoiceQueueId':_0x28b269['id']});});});});});});})['then'](respondWithStatusCode(_0x266653,null))[_0x4737('0x53')](handleError(_0x266653,null));};exports['addAgents']=function(_0x468793,_0x21d3f2,_0x4499fa){var _0x203135,_0xdce680;return db['VoiceQueue'][_0x4737('0x34')]({'where':{'id':_0x468793[_0x4737('0x5e')]['id']}})['then'](handleEntityNotFound(_0x21d3f2,null))[_0x4737('0x2a')](function(_0x421f9c){if(_0x421f9c){_0xdce680=_0x421f9c;return _0x421f9c[_0x4737('0x96')](_0x468793[_0x4737('0x60')][_0x4737('0x97')],_['omit'](_0x468793[_0x4737('0x60')],['ids','id'])||{})[_0x4737('0x98')](function(_0x32308a){for(var _0x52eca4=0x0;_0x52eca4<_0x468793[_0x4737('0x60')]['ids'][_0x4737('0x46')];_0x52eca4+=0x1){socket[_0x4737('0x94')]('userVoiceQueue:save',{'UserId':Number(_0x468793[_0x4737('0x60')][_0x4737('0x97')][_0x52eca4]),'VoiceQueueId':Number(_0x468793['params']['id'])});}return _0x32308a;});}})['then'](function(_0x33c528){_0x203135=_0x33c528||[];if(_0xdce680){return db['User'][_0x4737('0x52')]({'where':{'id':_0x468793[_0x4737('0x60')][_0x4737('0x97')]},'attributes':['id',_0x4737('0x35'),_0x4737('0x71'),_0x4737('0x7e'),'interface'],'raw':!![]});}})[_0x4737('0x2a')](function(_0x5d6442){if(!_[_0x4737('0x99')](_0x5d6442)){var _0xca6ffc=[];for(var _0x16b098=0x0;_0x16b098<_0x5d6442[_0x4737('0x46')];_0x16b098++){if(_0x5d6442[_0x16b098]['online']){_0xca6ffc['push'](db['UserVoiceQueueRt'][_0x4737('0x78')]({'membername':_0x5d6442[_0x16b098]['name'],'UserId':_0x5d6442[_0x16b098]['id'],'queue_name':_0xdce680[_0x4737('0x35')],'VoiceQueueId':_0xdce680['id'],'interface':_[_0x4737('0x7b')](_0x5d6442[_0x16b098][_0x4737('0x72')])?util['format'](_0x4737('0x7d'),_0x5d6442[_0x16b098][_0x4737('0x35')]):_0x5d6442[_0x16b098]['interface'],'paused':_0x5d6442[_0x16b098]['voicePause']||![],'penalty':_0x468793[_0x4737('0x60')][_0x4737('0x75')]||0x0}));}}return BPromise[_0x4737('0x8e')](_0xca6ffc);}})[_0x4737('0x2a')](function(){return _0x203135;})['then'](respondWithResult(_0x21d3f2,null))[_0x4737('0x53')](handleError(_0x21d3f2,null));};exports[_0x4737('0x92')]=function(_0x563124,_0x466598,_0x758357){return db[_0x4737('0x50')][_0x4737('0x34')]({'where':{'id':_0x563124['params']['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x466598,null))[_0x4737('0x2a')](function(_0x336cc4){if(_0x336cc4){return _0x336cc4[_0x4737('0x92')](_0x563124[_0x4737('0x3f')][_0x4737('0x97')])['then'](function(){if(_[_0x4737('0x9a')](_0x563124[_0x4737('0x3f')][_0x4737('0x97')])){for(var _0x279714=0x0;_0x279714<_0x563124[_0x4737('0x3f')][_0x4737('0x97')]['length'];_0x279714+=0x1){socket['emit'](_0x4737('0x95'),{'UserId':Number(_0x563124[_0x4737('0x3f')][_0x4737('0x97')][_0x279714]),'VoiceQueueId':Number(_0x563124[_0x4737('0x5e')]['id'])});}}else{socket[_0x4737('0x94')](_0x4737('0x95'),{'UserId':Number(_0x563124['query']['ids']),'VoiceQueueId':Number(_0x563124[_0x4737('0x5e')]['id'])});}});}})[_0x4737('0x2a')](function(_0x342a90){return db[_0x4737('0x93')][_0x4737('0x37')]({'where':{'VoiceQueueId':_0x563124['params']['id'],'UserId':_0x563124[_0x4737('0x3f')]['ids']}})['then'](function(){return _0x342a90;});})[_0x4737('0x2a')](respondWithStatusCode(_0x466598,null))[_0x4737('0x53')](handleError(_0x466598,null));};exports[_0x4737('0x9b')]=function(_0x4dbc6b,_0x503964,_0xbb989b){var _0xa90d8a={};var _0x336cb6={};var _0x1c5938;var _0x3d7f47;return db[_0x4737('0x50')]['findOne']({'where':{'id':_0x4dbc6b[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x503964,null))[_0x4737('0x2a')](function(_0x39ff63){if(_0x39ff63){_0x1c5938=_0x39ff63;_0x336cb6[_0x4737('0x43')]=_[_0x4737('0x40')](db[_0x4737('0x6f')][_0x4737('0x3d')]);_0x336cb6[_0x4737('0x3f')]=_['keys'](_0x4dbc6b[_0x4737('0x3f')]);_0x336cb6[_0x4737('0x41')]=_[_0x4737('0x42')](_0x336cb6[_0x4737('0x43')],_0x336cb6[_0x4737('0x3f')]);_0xa90d8a['attributes']=_[_0x4737('0x42')](_0x336cb6['model'],qs[_0x4737('0x45')](_0x4dbc6b['query'][_0x4737('0x45')]));_0xa90d8a[_0x4737('0x44')]=_0xa90d8a[_0x4737('0x44')][_0x4737('0x46')]?_0xa90d8a[_0x4737('0x44')]:_0x336cb6['model'];_0xa90d8a[_0x4737('0x49')]=qs['sort'](_0x4dbc6b[_0x4737('0x3f')][_0x4737('0x4a')]);_0xa90d8a['where']=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x4dbc6b[_0x4737('0x3f')],_0x336cb6[_0x4737('0x41')]));if(_0x4dbc6b[_0x4737('0x3f')][_0x4737('0x2f')]){_0xa90d8a[_0x4737('0x4b')]=_[_0x4737('0x4d')](_0xa90d8a['where'],{'$or':_[_0x4737('0x31')](_0xa90d8a['attributes'],function(_0x22576d){var _0x1c5ecb={};_0x1c5ecb[_0x22576d]={'$like':'%'+_0x4dbc6b[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x1c5ecb;})});}_0xa90d8a=_['merge']({},_0xa90d8a,_0x4dbc6b[_0x4737('0x4f')]);return _0x1c5938[_0x4737('0x9b')](_0xa90d8a);}})[_0x4737('0x2a')](function(_0x547765){if(_0x547765){_0x3d7f47=_0x547765[_0x4737('0x46')];if(!_0x4dbc6b['query'][_0x4737('0x47')]('nolimit')){_0xa90d8a[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x4dbc6b[_0x4737('0x3f')][_0x4737('0x23')]);_0xa90d8a[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x4dbc6b[_0x4737('0x3f')][_0x4737('0x21')]);}return _0x1c5938[_0x4737('0x9b')](_0xa90d8a);}})['then'](function(_0x4311cd){if(_0x4311cd){return _0x4311cd?{'count':_0x3d7f47,'rows':_0x4311cd}:null;}})[_0x4737('0x2a')](respondWithResult(_0x503964,null))[_0x4737('0x53')](handleError(_0x503964,null));};exports[_0x4737('0x9c')]=function(_0x305a32,_0x5492b7,_0x12164a){var _0x2d74c5={};var _0x371c21={};var _0x392a65;var _0x2771bc;return db['VoiceQueue']['findOne']({'where':{'id':_0x305a32[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x5492b7,null))[_0x4737('0x2a')](function(_0x55d251){if(_0x55d251){_0x392a65=_0x55d251;_0x371c21['model']=_[_0x4737('0x40')](db['UserVoiceQueueRt'][_0x4737('0x3d')]);_0x371c21[_0x4737('0x3f')]=_['keys'](_0x305a32[_0x4737('0x3f')]);_0x371c21[_0x4737('0x41')]=_['intersection'](_0x371c21[_0x4737('0x43')],_0x371c21[_0x4737('0x3f')]);_0x2d74c5[_0x4737('0x44')]=_['intersection'](_0x371c21[_0x4737('0x43')],qs[_0x4737('0x45')](_0x305a32[_0x4737('0x3f')][_0x4737('0x45')]));_0x2d74c5[_0x4737('0x44')]=_0x2d74c5[_0x4737('0x44')]['length']?_0x2d74c5[_0x4737('0x44')]:_0x371c21[_0x4737('0x43')];_0x2d74c5[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x305a32[_0x4737('0x3f')]['sort']);_0x2d74c5['where']=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x305a32[_0x4737('0x3f')],_0x371c21['filters']));if(_0x305a32[_0x4737('0x3f')][_0x4737('0x2f')]){_0x2d74c5[_0x4737('0x4b')]=_['merge'](_0x2d74c5[_0x4737('0x4b')],{'$or':_['map'](_0x2d74c5[_0x4737('0x44')],function(_0x2c6792){var _0x5e522f={};_0x5e522f[_0x2c6792]={'$like':'%'+_0x305a32[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x5e522f;})});}_0x2d74c5=_['merge']({},_0x2d74c5,_0x305a32[_0x4737('0x4f')]);return _0x392a65[_0x4737('0x9c')](_0x2d74c5);}})[_0x4737('0x2a')](function(_0x1b59be){if(_0x1b59be){_0x2771bc=_0x1b59be['length'];if(!_0x305a32['query']['hasOwnProperty'](_0x4737('0x48'))){_0x2d74c5[_0x4737('0x23')]=qs[_0x4737('0x23')](_0x305a32[_0x4737('0x3f')][_0x4737('0x23')]);_0x2d74c5[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x305a32[_0x4737('0x3f')][_0x4737('0x21')]);}return _0x392a65['getMembers'](_0x2d74c5);}})[_0x4737('0x2a')](function(_0x450c44){return _0x450c44?{'count':_0x2771bc,'rows':_0x450c44}:null;})[_0x4737('0x2a')](respondWithResult(_0x5492b7,null))['catch'](handleError(_0x5492b7,null));};exports['getLists']=function(_0x31fc91,_0x38328c,_0x4e1408){var _0x3418f5={};var _0x220d83={};var _0x56a28e;var _0x8ca7df;return db[_0x4737('0x50')][_0x4737('0x64')]({'where':{'id':_0x31fc91['params']['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x38328c,null))[_0x4737('0x2a')](function(_0x550881){if(_0x550881){_0x56a28e=_0x550881;_0x220d83[_0x4737('0x43')]=_[_0x4737('0x40')](db[_0x4737('0x9d')]['rawAttributes']);_0x220d83[_0x4737('0x3f')]=_[_0x4737('0x40')](_0x31fc91[_0x4737('0x3f')]);_0x220d83[_0x4737('0x41')]=_[_0x4737('0x42')](_0x220d83[_0x4737('0x43')],_0x220d83[_0x4737('0x3f')]);_0x3418f5['attributes']=_[_0x4737('0x42')](_0x220d83[_0x4737('0x43')],qs[_0x4737('0x45')](_0x31fc91['query'][_0x4737('0x45')]));_0x3418f5[_0x4737('0x44')]=_0x3418f5[_0x4737('0x44')][_0x4737('0x46')]?_0x3418f5[_0x4737('0x44')]:_0x220d83[_0x4737('0x43')];_0x3418f5[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x31fc91[_0x4737('0x3f')][_0x4737('0x4a')]);_0x3418f5['where']=qs[_0x4737('0x41')](_[_0x4737('0x4c')](_0x31fc91[_0x4737('0x3f')],_0x220d83[_0x4737('0x41')]));if(_0x31fc91['query'][_0x4737('0x2f')]){_0x3418f5[_0x4737('0x4b')]=_[_0x4737('0x4d')](_0x3418f5[_0x4737('0x4b')],{'$or':_[_0x4737('0x31')](_0x3418f5[_0x4737('0x44')],function(_0x2eaf09){var _0x827550={};_0x827550[_0x2eaf09]={'$like':'%'+_0x31fc91[_0x4737('0x3f')][_0x4737('0x2f')]+'%'};return _0x827550;})});}_0x3418f5=_[_0x4737('0x4d')]({},_0x3418f5,_0x31fc91[_0x4737('0x4f')]);return _0x56a28e[_0x4737('0x9e')](_0x3418f5);}})[_0x4737('0x2a')](function(_0x2ed8a3){if(_0x2ed8a3){_0x8ca7df=_0x2ed8a3['length'];if(!_0x31fc91[_0x4737('0x3f')][_0x4737('0x47')](_0x4737('0x48'))){_0x3418f5['limit']=qs[_0x4737('0x23')](_0x31fc91[_0x4737('0x3f')][_0x4737('0x23')]);_0x3418f5['offset']=qs[_0x4737('0x21')](_0x31fc91[_0x4737('0x3f')][_0x4737('0x21')]);}return _0x56a28e['getLists'](_0x3418f5);}})[_0x4737('0x2a')](function(_0x447c67){if(_0x447c67){return _0x447c67?{'count':_0x8ca7df,'rows':_0x447c67}:null;}})[_0x4737('0x2a')](respondWithResult(_0x38328c,null))[_0x4737('0x53')](handleError(_0x38328c,null));};exports['addLists']=function(_0x4b9ed5,_0x59e63c,_0x164c52){var _0x4b0681=moment()[_0x4737('0x7c')](_0x4737('0x9f'));var _0x487703,_0x2931b4;return db['VoiceQueue'][_0x4737('0x34')]({'where':{'id':_0x4b9ed5['params']['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x59e63c,null))[_0x4737('0x2a')](function(_0x4a18d4){if(_0x4a18d4){_0x2931b4=_0x4a18d4;return _0x4a18d4[_0x4737('0xa0')](_0x4b9ed5[_0x4737('0x60')]['ids'],_[_0x4737('0xa1')](_0x4b9ed5[_0x4737('0x60')],['ids','id'])||{});}return null;})[_0x4737('0x98')](function(_0x562f83){var _0x28f424;_0x487703=_0x562f83||[];var _0x4d232e=[];if(_0x562f83){for(var _0x1c74c8=0x0;_0x1c74c8<_0x562f83[_0x4737('0x46')];_0x1c74c8+=0x1){var _0x17cbc9=_0x562f83[_0x1c74c8][_0x4737('0x2b')]({'plain':!![]});_0x2931b4['dialCheckDuplicateType']=_0x4b9ed5[_0x4737('0x60')][_0x4737('0xa2')]?_0x4b9ed5[_0x4737('0x60')]['dialCheckDuplicateType']:_0x2931b4['dialCheckDuplicateType'];switch(_0x2931b4[_0x4737('0xa2')]){case'always':_0x28f424=squel[_0x4737('0xa3')]()[_0x4737('0xa4')](_0x4737('0xa5'))[_0x4737('0xa6')]([_0x4737('0xa7'),_0x4737('0xa8'),_0x4737('0xa9'),_0x4737('0xaa'),_0x4737('0x6b'),_0x4737('0x61'),_0x4737('0x5f')],squel[_0x4737('0x80')]()[_0x4737('0x81')](_0x4737('0xa7'),'phone')[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27','scheduledAt')[_0x4737('0x81')]('id','ContactId')['field'](_0x17cbc9[_0x4737('0xab')][_0x4737('0x89')](),_0x4737('0xaa'))[_0x4737('0x81')](_0x4b9ed5[_0x4737('0x5e')]['id'][_0x4737('0x89')](),_0x4737('0x6b'))['field']('\x27'+_0x4b0681+'\x27',_0x4737('0x61'))['field']('\x27'+_0x4b0681+'\x27','updatedAt')[_0x4737('0x82')](_0x4737('0xac'))[_0x4737('0x4b')](_0x4737('0xad'))[_0x4737('0x4b')](_0x4737('0xae'),_0x17cbc9[_0x4737('0xab')][_0x4737('0x89')]())[_0x4737('0x4b')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x4737('0xaf'),squel[_0x4737('0x80')]()['field']('COALESCE(calleridnum,\x27\x27)')['from']('cm_hopper_final')[_0x4737('0x4b')](_0x4737('0x86'),_0x4b9ed5[_0x4737('0x5e')]['id'][_0x4737('0x89')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x4737('0x80')]()[_0x4737('0x81')](_0x4737('0xb0'))['from']('cm_hopper')['where'](_0x4737('0x86'),_0x4b9ed5[_0x4737('0x5e')]['id']['toString']())))[_0x4737('0x89')]();break;case _0x4737('0xb1'):_0x28f424=squel[_0x4737('0xa3')]()['into'](_0x4737('0xa5'))[_0x4737('0xa6')](['phone',_0x4737('0xa8'),'ContactId',_0x4737('0xaa'),_0x4737('0x6b'),_0x4737('0x61'),_0x4737('0x5f')],squel[_0x4737('0x80')]()[_0x4737('0x81')](_0x4737('0xa7'),'phone')[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0xa8'))['field']('id','ContactId')[_0x4737('0x81')](_0x17cbc9[_0x4737('0xab')][_0x4737('0x89')](),_0x4737('0xaa'))[_0x4737('0x81')](_0x4b9ed5[_0x4737('0x5e')]['id']['toString'](),_0x4737('0x6b'))[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0x61'))[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0x5f'))[_0x4737('0x82')](_0x4737('0xac'))[_0x4737('0x4b')](_0x4737('0xad'))[_0x4737('0x4b')](_0x4737('0xae'),_0x17cbc9[_0x4737('0xab')]['toString']())[_0x4737('0x4b')](_0x4737('0xb2'))[_0x4737('0x4b')](_0x4737('0xaf'),squel[_0x4737('0x80')]()[_0x4737('0x81')](_0x4737('0xb0'))[_0x4737('0x82')]('cm_hopper')['where']('VoiceQueueId\x20=\x20?',_0x4b9ed5[_0x4737('0x5e')]['id'][_0x4737('0x89')]())))[_0x4737('0x89')]();break;default:_0x28f424=squel[_0x4737('0xa3')]()[_0x4737('0xa4')](_0x4737('0xa5'))[_0x4737('0xa6')]([_0x4737('0xa7'),_0x4737('0xa8'),_0x4737('0xa9'),_0x4737('0xaa'),_0x4737('0x6b'),_0x4737('0x61'),_0x4737('0x5f')],squel[_0x4737('0x80')]()[_0x4737('0x81')]('phone',_0x4737('0xa7'))[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0xa8'))[_0x4737('0x81')]('id',_0x4737('0xa9'))[_0x4737('0x81')](_0x17cbc9[_0x4737('0xab')]['toString'](),_0x4737('0xaa'))['field'](_0x4b9ed5[_0x4737('0x5e')]['id'][_0x4737('0x89')](),_0x4737('0x6b'))['field']('\x27'+_0x4b0681+'\x27','createdAt')[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27','updatedAt')[_0x4737('0x82')]('cm_contacts')[_0x4737('0x4b')](_0x4737('0xad'))[_0x4737('0x4b')]('ListId\x20=\x20?',_0x17cbc9['CmListId'][_0x4737('0x89')]())[_0x4737('0x4b')](_0x4737('0xb2')))[_0x4737('0x89')]();}_0x4d232e[_0x4737('0x87')](db[_0x4737('0x88')][_0x4737('0x3f')](_0x28f424));}return BPromise[_0x4737('0x8e')](_0x4d232e);}})[_0x4737('0x2a')](function(){var _0x6a9201=[];var _0x22fd42=squel[_0x4737('0xa3')]()['into']('cm_hopper_additional_phones')[_0x4737('0xa6')](['CmHopperId',_0x4737('0xa7'),_0x4737('0xb3'),_0x4737('0x61'),'updatedAt'],squel['select']()['field'](_0x4737('0xb4'))['field'](_0x4737('0xb5'))['field'](_0x4737('0xb6'))[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0x61'))[_0x4737('0x81')]('\x27'+_0x4b0681+'\x27',_0x4737('0x5f'))['from'](_0x4737('0xb7'),'ci')[_0x4737('0xb8')](_0x4737('0xa5'),'h','h.ContactId=ci.CmContactId')['where']('h.scheduledat=?',_0x4b0681)['where'](_0x4737('0xb9'),_0x4737('0xba')))['toString']();_0x6a9201[_0x4737('0x87')](db[_0x4737('0x88')][_0x4737('0x3f')](_0x22fd42));return BPromise['all'](_0x6a9201);})['then'](function(){return _0x487703;})[_0x4737('0x2a')](respondWithResult(_0x59e63c,null))[_0x4737('0x53')](handleError(_0x59e63c,null));};exports[_0x4737('0xbb')]=function(_0x18ad7d,_0x5feb54,_0x2578cb){return db[_0x4737('0x50')][_0x4737('0x34')]({'where':{'id':_0x18ad7d[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x5feb54,null))[_0x4737('0x2a')](function(_0x1aeeb2){if(_0x1aeeb2){return _0x1aeeb2[_0x4737('0xbb')](_0x18ad7d[_0x4737('0x3f')]['ids']);}})[_0x4737('0x2a')](function(_0x565d27){if(_0x565d27){return db[_0x4737('0x65')][_0x4737('0x37')]({'where':{'ListId':_0x18ad7d[_0x4737('0x3f')][_0x4737('0x97')],'VoiceQueueId':_0x18ad7d['params']['id']}})[_0x4737('0x2a')](function(){return _0x565d27;});}})[_0x4737('0x2a')](respondWithStatusCode(_0x5feb54,null))['catch'](handleError(_0x5feb54,null));};exports[_0x4737('0xbc')]=function(_0x9000e7,_0x5ce278,_0x4abd29){var _0xa3e044={};var _0x1b4fce={};var _0x5f4b34;var _0x3b6912;return db[_0x4737('0x50')]['findOne']({'where':{'id':_0x9000e7[_0x4737('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5ce278,null))[_0x4737('0x2a')](function(_0x44e937){if(_0x44e937){_0x5f4b34=_0x44e937;_0x1b4fce[_0x4737('0x43')]=_[_0x4737('0x40')](db[_0x4737('0x9d')][_0x4737('0x3d')]);_0x1b4fce['query']=_[_0x4737('0x40')](_0x9000e7[_0x4737('0x3f')]);_0x1b4fce[_0x4737('0x41')]=_[_0x4737('0x42')](_0x1b4fce[_0x4737('0x43')],_0x1b4fce[_0x4737('0x3f')]);_0xa3e044[_0x4737('0x44')]=_[_0x4737('0x42')](_0x1b4fce['model'],qs['fields'](_0x9000e7[_0x4737('0x3f')]['fields']));_0xa3e044[_0x4737('0x44')]=_0xa3e044['attributes'][_0x4737('0x46')]?_0xa3e044['attributes']:_0x1b4fce[_0x4737('0x43')];_0xa3e044[_0x4737('0x49')]=qs[_0x4737('0x4a')](_0x9000e7['query'][_0x4737('0x4a')]);_0xa3e044[_0x4737('0x4b')]=qs[_0x4737('0x41')](_['pick'](_0x9000e7[_0x4737('0x3f')],_0x1b4fce[_0x4737('0x41')]));if(_0x9000e7[_0x4737('0x3f')][_0x4737('0x2f')]){_0xa3e044[_0x4737('0x4b')]=_[_0x4737('0x4d')](_0xa3e044[_0x4737('0x4b')],{'$or':_[_0x4737('0x31')](_0xa3e044[_0x4737('0x44')],function(_0x252ec7){var _0x8286cc={};_0x8286cc[_0x252ec7]={'$like':'%'+_0x9000e7['query']['filter']+'%'};return _0x8286cc;})});}_0xa3e044=_[_0x4737('0x4d')]({},_0xa3e044,_0x9000e7['options']);return _0x5f4b34[_0x4737('0xbc')](_0xa3e044);}})['then'](function(_0x3e59b1){if(_0x3e59b1){_0x3b6912=_0x3e59b1[_0x4737('0x46')];if(!_0x9000e7[_0x4737('0x3f')][_0x4737('0x47')]('nolimit')){_0xa3e044[_0x4737('0x23')]=qs['limit'](_0x9000e7[_0x4737('0x3f')][_0x4737('0x23')]);_0xa3e044[_0x4737('0x21')]=qs[_0x4737('0x21')](_0x9000e7['query'][_0x4737('0x21')]);}return _0x5f4b34[_0x4737('0xbc')](_0xa3e044);}})[_0x4737('0x2a')](function(_0x33e28b){if(_0x33e28b){return _0x33e28b?{'count':_0x3b6912,'rows':_0x33e28b}:null;}})[_0x4737('0x2a')](respondWithResult(_0x5ce278,null))[_0x4737('0x53')](handleError(_0x5ce278,null));};exports['addBlackLists']=function(_0x254015,_0x362b22,_0x10a729){var _0x2d9dec,_0x43e7e9;return db[_0x4737('0x50')]['find']({'where':{'id':_0x254015[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](handleEntityNotFound(_0x362b22,null))[_0x4737('0x2a')](function(_0x517334){if(_0x517334){_0x43e7e9=_0x517334;return _0x517334[_0x4737('0xbd')](_0x254015['body'][_0x4737('0x97')],_[_0x4737('0xa1')](_0x254015[_0x4737('0x60')],[_0x4737('0x97'),'id'])||{});}return null;})[_0x4737('0x98')](function(_0x5cc655){var _0x5dbe0a;_0x2d9dec=_0x5cc655||[];var _0xb547b6=[];if(_0x5cc655){for(var _0x3553d5=0x0;_0x3553d5<_0x5cc655[_0x4737('0x46')];_0x3553d5+=0x1){var _0x4e6572=_0x5cc655[_0x3553d5]['get']({'plain':!![]});_0x5dbe0a=squel[_0x4737('0xa3')]()[_0x4737('0xa4')](_0x4737('0xbe'))[_0x4737('0xa6')](['phone','ContactId',_0x4737('0xaa'),_0x4737('0x6b'),'createdAt',_0x4737('0x5f')],squel[_0x4737('0x80')]()[_0x4737('0x81')](_0x4737('0xa7'),_0x4737('0xa7'))[_0x4737('0x81')]('id',_0x4737('0xa9'))['field'](_0x4e6572[_0x4737('0xab')][_0x4737('0x89')](),_0x4737('0xaa'))[_0x4737('0x81')](_0x254015[_0x4737('0x5e')]['id'][_0x4737('0x89')](),_0x4737('0x6b'))[_0x4737('0x81')]('NOW()',_0x4737('0x61'))['field'](_0x4737('0xbf'),_0x4737('0x5f'))['from'](_0x4737('0xac'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x4737('0xae'),_0x4e6572[_0x4737('0xab')][_0x4737('0x89')]())[_0x4737('0x4b')](_0x4737('0xb2')))[_0x4737('0x89')]();_0xb547b6[_0x4737('0x87')](db[_0x4737('0x88')]['query'](_0x5dbe0a));}return BPromise[_0x4737('0x8e')](_0xb547b6);}})['then'](function(){return _0x2d9dec;})[_0x4737('0x2a')](respondWithResult(_0x362b22,null))['catch'](handleError(_0x362b22,null));};exports[_0x4737('0xc0')]=function(_0x46d995,_0x2bbbab,_0x39ad0f){return db['VoiceQueue'][_0x4737('0x34')]({'where':{'id':_0x46d995[_0x4737('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2bbbab,null))[_0x4737('0x2a')](function(_0x14cafd){if(_0x14cafd){return _0x14cafd[_0x4737('0xc0')](_0x46d995['query'][_0x4737('0x97')]);}})[_0x4737('0x2a')](function(_0x3867cf){if(_0x3867cf){return db[_0x4737('0x6a')][_0x4737('0x37')]({'where':{'ListId':_0x46d995['query'][_0x4737('0x97')],'VoiceQueueId':_0x46d995[_0x4737('0x5e')]['id']}})[_0x4737('0x2a')](function(){return _0x3867cf;});}})[_0x4737('0x2a')](respondWithStatusCode(_0x2bbbab,null))[_0x4737('0x53')](handleError(_0x2bbbab,null));};
\ No newline at end of file
+var _0xb2ac=['redis','defaults','localhost','./voiceQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','ignore','map','value','includes','type','UserProfileResource','stack','name','VoiceQueue','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','include','findAll','show','params','rawAttributes','keys','includeAll','catch','create','body','user','outbound','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','role','getHoppers','findOne','CmHopper','nolimit','VoiceQueueId','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','online','interface','flatMap','Agents','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','voicePause','userVoiceQueue:save','ids','select','field','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','all','union','compact','isEmpty','userVoiceQueue:remove','addAgents','omit','spread','removeAgents','isArray','emit','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ListId','phone','ContactId','from','cm_contacts','deletedAt\x20IS\x20NULL','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','COALESCE(phone,\x27\x27)','ListId\x20=\x20?','CmHopperId','OrderBy','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment'];(function(_0x58129e,_0x3e073b){var _0x3b80c0=function(_0x1388e7){while(--_0x1388e7){_0x58129e['push'](_0x58129e['shift']());}};_0x3b80c0(++_0x3e073b);}(_0xb2ac,0x16a));var _0xcb2a=function(_0x4076a4,_0x4b373b){_0x4076a4=_0x4076a4-0x0;var _0x440575=_0xb2ac[_0x4076a4];return _0x440575;};'use strict';var emlformat=require(_0xcb2a('0x0'));var rimraf=require(_0xcb2a('0x1'));var zipdir=require(_0xcb2a('0x2'));var jsonpatch=require(_0xcb2a('0x3'));var rp=require(_0xcb2a('0x4'));var moment=require(_0xcb2a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xcb2a('0x6'));var util=require(_0xcb2a('0x7'));var path=require(_0xcb2a('0x8'));var sox=require(_0xcb2a('0x9'));var csv=require(_0xcb2a('0xa'));var ejs=require(_0xcb2a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb2a('0xc'));var squel=require(_0xcb2a('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcb2a('0xa'));var querystring=require('querystring');var Papa=require(_0xcb2a('0xe'));var Redis=require(_0xcb2a('0xf'));var authService=require(_0xcb2a('0x10'));var qs=require(_0xcb2a('0x11'));var as=require(_0xcb2a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcb2a('0x13'))(_0xcb2a('0x14'));var utils=require('../../config/utils');var config=require(_0xcb2a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xcb2a('0x16')]=_[_0xcb2a('0x17')](config[_0xcb2a('0x16')],{'host':_0xcb2a('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcb2a('0x16')]));require(_0xcb2a('0x19'))['register'](socket);function respondWithStatusCode(_0x3a647c,_0x2b88e9){_0x2b88e9=_0x2b88e9||0xcc;return function(_0xfca62f){if(_0xfca62f){return _0x3a647c[_0xcb2a('0x1a')](_0x2b88e9);}return _0x3a647c[_0xcb2a('0x1b')](_0x2b88e9)[_0xcb2a('0x1c')]();};}function respondWithResult(_0x27b758,_0x2a3541){_0x2a3541=_0x2a3541||0xc8;return function(_0x51bba7){if(_0x51bba7){return _0x27b758['status'](_0x2a3541)[_0xcb2a('0x1d')](_0x51bba7);}};}function respondWithFilteredResult(_0x31fe86,_0x5279be){return function(_0x4e595b){if(_0x4e595b){var _0x60836a=typeof _0x5279be[_0xcb2a('0x1e')]===_0xcb2a('0x1f')&&typeof _0x5279be[_0xcb2a('0x20')]===_0xcb2a('0x1f');var _0x1a9f50=_0x4e595b[_0xcb2a('0x21')];var _0x5eb1f3=_0x60836a?0x0:_0x5279be[_0xcb2a('0x1e')];var _0x2eee07=_0x60836a?_0x4e595b[_0xcb2a('0x21')]:_0x5279be[_0xcb2a('0x1e')]+_0x5279be[_0xcb2a('0x20')];var _0x2f0343;if(_0x2eee07>=_0x1a9f50){_0x2eee07=_0x1a9f50;_0x2f0343=0xc8;}else{_0x2f0343=0xce;}_0x31fe86[_0xcb2a('0x1b')](_0x2f0343);return _0x31fe86[_0xcb2a('0x22')]('Content-Range',_0x5eb1f3+'-'+_0x2eee07+'/'+_0x1a9f50)[_0xcb2a('0x1d')](_0x4e595b);}return null;};}function patchUpdates(_0x269fa1){return function(_0x2509e0){try{jsonpatch[_0xcb2a('0x23')](_0x2509e0,_0x269fa1,!![]);}catch(_0x5752bd){return BPromise[_0xcb2a('0x24')](_0x5752bd);}return _0x2509e0[_0xcb2a('0x25')]();};}function saveUpdates(_0x20eee4,_0xbedade){return function(_0x4eddd6){if(_0x4eddd6){return _0x4eddd6[_0xcb2a('0x26')](_0x20eee4)[_0xcb2a('0x27')](function(_0x20b76a){return _0x20b76a;});}return null;};}function removeEntity(_0x3548f4,_0x4f9887){return function(_0x246a3d){if(_0x246a3d){return _0x246a3d[_0xcb2a('0x28')]()[_0xcb2a('0x27')](function(){var _0x5d70df=_0x246a3d[_0xcb2a('0x29')]({'plain':!![]});var _0x47511d=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b'),'ignore':![]},{'name':_0xcb2a('0x2c'),'value':'outbound','ignore':![]}];var _0xf9ea0d=_(_0x47511d)['filter'](_0xcb2a('0x2d'))[_0xcb2a('0x2e')](_0xcb2a('0x2f'))[_0xcb2a('0x2f')]();if(_[_0xcb2a('0x30')](_0xf9ea0d,_0x5d70df[_0xcb2a('0x31')])){return;}var _0x318146=_['find'](_0x47511d,[_0xcb2a('0x2f'),_0x5d70df[_0xcb2a('0x31')]])['name'];return db[_0xcb2a('0x32')][_0xcb2a('0x28')]({'where':{'type':_0x318146,'resourceId':_0x5d70df['id']}})['then'](function(){return _0x246a3d;});})['then'](function(){_0x3548f4['status'](0xcc)[_0xcb2a('0x1c')]();});}};}function handleEntityNotFound(_0x4545e3,_0x37bedb){return function(_0x111c81){if(!_0x111c81){_0x4545e3[_0xcb2a('0x1a')](0x194);}return _0x111c81;};}function handleError(_0x3285b0,_0x2d0569){_0x2d0569=_0x2d0569||0x1f4;return function(_0x19006f){logger['error'](_0x19006f[_0xcb2a('0x33')]);if(_0x19006f[_0xcb2a('0x34')]){delete _0x19006f['name'];}_0x3285b0[_0xcb2a('0x1b')](_0x2d0569)['send'](_0x19006f);};}exports['index']=function(_0x5c1b60,_0x19d6f2){var _0x311fe4={},_0x25fabc={},_0x6329c6={'count':0x0,'rows':[]};var _0x5b744f=_[_0xcb2a('0x2e')](db[_0xcb2a('0x35')]['rawAttributes'],function(_0xd54f07){return{'name':_0xd54f07[_0xcb2a('0x36')],'type':_0xd54f07[_0xcb2a('0x31')][_0xcb2a('0x37')]};});_0x25fabc[_0xcb2a('0x38')]=_[_0xcb2a('0x2e')](_0x5b744f,_0xcb2a('0x34'));_0x25fabc['query']=_['keys'](_0x5c1b60[_0xcb2a('0x39')]);_0x25fabc[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x25fabc[_0xcb2a('0x38')],_0x25fabc[_0xcb2a('0x39')]);_0x311fe4[_0xcb2a('0x3c')]=_['intersection'](_0x25fabc['model'],qs[_0xcb2a('0x3d')](_0x5c1b60['query'][_0xcb2a('0x3d')]));_0x311fe4[_0xcb2a('0x3c')]=_0x311fe4['attributes'][_0xcb2a('0x3e')]?_0x311fe4[_0xcb2a('0x3c')]:_0x25fabc['model'];if(!_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x311fe4[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x5c1b60['query'][_0xcb2a('0x20')]);_0x311fe4[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}_0x311fe4[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x5c1b60['query'][_0xcb2a('0x41')]);_0x311fe4[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x5c1b60['query'],_0x25fabc[_0xcb2a('0x3a')]),_0x5b744f);if(_0x5c1b60['query'][_0xcb2a('0x44')]){_0x311fe4['where']=_[_0xcb2a('0x45')](_0x311fe4[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x5b744f,function(_0x2a6778){if(_0x2a6778[_0xcb2a('0x31')]!=='VIRTUAL'){var _0x2e593c={};_0x2e593c[_0x2a6778[_0xcb2a('0x34')]]={'$like':'%'+_0x5c1b60[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x2e593c;}})});}_0x311fe4=_[_0xcb2a('0x45')]({},_0x311fe4,_0x5c1b60[_0xcb2a('0x46')]);var _0x3af282={'where':_0x311fe4[_0xcb2a('0x42')]};return db[_0xcb2a('0x35')][_0xcb2a('0x21')](_0x3af282)['then'](function(_0x3a90b1){_0x6329c6[_0xcb2a('0x21')]=_0x3a90b1;if(_0x5c1b60[_0xcb2a('0x39')]['includeAll']){_0x311fe4[_0xcb2a('0x47')]=[{'all':!![]}];}return db['VoiceQueue'][_0xcb2a('0x48')](_0x311fe4);})['then'](function(_0x4f869e){_0x6329c6['rows']=_0x4f869e;return _0x6329c6;})[_0xcb2a('0x27')](respondWithFilteredResult(_0x19d6f2,_0x311fe4))['catch'](handleError(_0x19d6f2,null));};exports[_0xcb2a('0x49')]=function(_0x28a41b,_0x15dbbb){var _0x171efb={'raw':![],'where':{'id':_0x28a41b[_0xcb2a('0x4a')]['id']}},_0x363252={};_0x363252['model']=_['keys'](db['VoiceQueue'][_0xcb2a('0x4b')]);_0x363252[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x28a41b[_0xcb2a('0x39')]);_0x363252[_0xcb2a('0x3a')]=_['intersection'](_0x363252[_0xcb2a('0x38')],_0x363252[_0xcb2a('0x39')]);_0x171efb[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x363252[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x28a41b[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x171efb['attributes']=_0x171efb['attributes']['length']?_0x171efb[_0xcb2a('0x3c')]:_0x363252[_0xcb2a('0x38')];if(_0x28a41b[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x171efb[_0xcb2a('0x47')]=[{'all':!![]}];}_0x171efb=_[_0xcb2a('0x45')]({},_0x171efb,_0x28a41b[_0xcb2a('0x46')]);return db['VoiceQueue']['find'](_0x171efb)[_0xcb2a('0x27')](handleEntityNotFound(_0x15dbbb,null))['then'](respondWithResult(_0x15dbbb,null))[_0xcb2a('0x4e')](handleError(_0x15dbbb,null));};exports[_0xcb2a('0x4f')]=function(_0x264ad3,_0x41748a){return db[_0xcb2a('0x35')][_0xcb2a('0x4f')](_0x264ad3[_0xcb2a('0x50')],{})['then'](function(_0x364772){var _0x48171c=_0x264ad3[_0xcb2a('0x51')]['get']({'plain':!![]});if(!_0x48171c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x48171c['role']===_0xcb2a('0x51')){var _0x2803c9=_0x364772[_0xcb2a('0x29')]({'plain':!![]});var _0x1d61db=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b')},{'name':'QueueCampaigns','value':_0xcb2a('0x52')}];var _0x177d6e=_['find'](_0x1d61db,[_0xcb2a('0x2f'),_0x2803c9[_0xcb2a('0x31')]])['name'];return db[_0xcb2a('0x53')][_0xcb2a('0x54')]({'where':{'name':_0x177d6e,'userProfileId':_0x48171c[_0xcb2a('0x55')]},'raw':!![]})[_0xcb2a('0x27')](function(_0xa6c172){if(_0xa6c172&&_0xa6c172[_0xcb2a('0x56')]===0x0){return db[_0xcb2a('0x32')][_0xcb2a('0x4f')]({'name':_0x2803c9[_0xcb2a('0x34')],'resourceId':_0x2803c9['id'],'type':_0xa6c172[_0xcb2a('0x34')],'sectionId':_0xa6c172['id']},{})[_0xcb2a('0x27')](function(){return _0x364772;});}else{return _0x364772;}})['catch'](function(_0x276578){logger[_0xcb2a('0x57')](_0xcb2a('0x58'),_0x276578);throw _0x276578;});}return _0x364772;})[_0xcb2a('0x27')](respondWithResult(_0x41748a,0xc9))['catch'](handleError(_0x41748a,null));};exports[_0xcb2a('0x59')]=function(_0x31f5c2,_0x19d253){var _0x5a9782={'where':{'id':_0x31f5c2['params']['id']}},_0x45aaa4={};_0x45aaa4[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x35')][_0xcb2a('0x4b')]);_0x5a9782[_0xcb2a('0x3c')]=_['intersection'](_0x45aaa4['model'],qs['fields'](_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x5a9782[_0xcb2a('0x3c')]=_0x5a9782[_0xcb2a('0x3c')]['length']?_0x5a9782[_0xcb2a('0x3c')]:_0x45aaa4[_0xcb2a('0x38')];if(_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x5a9782[_0xcb2a('0x47')]=[{'all':!![]}];}_0x5a9782=_[_0xcb2a('0x45')]({},_0x5a9782,_0x31f5c2[_0xcb2a('0x46')]);return db[_0xcb2a('0x35')][_0xcb2a('0x54')](_0x5a9782)[_0xcb2a('0x27')](handleEntityNotFound(_0x19d253,null))[_0xcb2a('0x27')](function(_0x4ca650){if(_0x4ca650){var _0x1a1f6d=_0x4ca650[_0xcb2a('0x29')]({'plain':!![]});_0x1a1f6d=qs['omit'](_0x1a1f6d,['id',_0xcb2a('0x5a'),'updatedAt']);_0x31f5c2[_0xcb2a('0x50')]=_['omit'](_0x31f5c2[_0xcb2a('0x50')],['id','createdAt',_0xcb2a('0x5b')]);return db['VoiceQueue'][_0xcb2a('0x4f')](_[_0xcb2a('0x45')](_0x1a1f6d,_0x31f5c2[_0xcb2a('0x50')]),{'include':_0x31f5c2[_0xcb2a('0x39')][_0xcb2a('0x4d')]?[{'all':!![]}]:undefined})['then'](function(_0x1740d5){var _0x38b06c=_0x31f5c2[_0xcb2a('0x51')]['get']({'plain':!![]});if(!_0x38b06c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38b06c[_0xcb2a('0x5c')]===_0xcb2a('0x51')){var _0x8205a7=_0x1740d5['get']({'plain':!![]});var _0x58495d=[{'name':_0xcb2a('0x2a'),'value':_0xcb2a('0x2b')},{'name':'QueueCampaigns','value':'outbound'}];var _0x5e1a89=_['find'](_0x58495d,[_0xcb2a('0x2f'),_0x8205a7['type']])[_0xcb2a('0x34')];return db[_0xcb2a('0x53')][_0xcb2a('0x54')]({'where':{'name':_0x5e1a89,'userProfileId':_0x38b06c[_0xcb2a('0x55')]},'raw':!![]})[_0xcb2a('0x27')](function(_0x2e7e33){if(_0x2e7e33&&_0x2e7e33['autoAssociation']===0x0){return db[_0xcb2a('0x32')][_0xcb2a('0x4f')]({'name':_0x8205a7['name'],'resourceId':_0x8205a7['id'],'type':_0x2e7e33['name'],'sectionId':_0x2e7e33['id']},{})[_0xcb2a('0x27')](function(){return _0x1740d5;});}else{return _0x1740d5;}})[_0xcb2a('0x4e')](function(_0x36c89b){logger[_0xcb2a('0x57')](_0xcb2a('0x58'),_0x36c89b);throw _0x36c89b;});}return _0x1740d5;});}})[_0xcb2a('0x27')](respondWithResult(_0x19d253,0xc9))[_0xcb2a('0x4e')](handleError(_0x19d253,null));};exports[_0xcb2a('0x26')]=function(_0x4d86b8,_0x473dc3){if(_0x4d86b8[_0xcb2a('0x50')]['id']){delete _0x4d86b8[_0xcb2a('0x50')]['id'];}return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x4d86b8['params']['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x473dc3,null))[_0xcb2a('0x27')](saveUpdates(_0x4d86b8[_0xcb2a('0x50')],null))[_0xcb2a('0x27')](respondWithResult(_0x473dc3,null))[_0xcb2a('0x4e')](handleError(_0x473dc3,null));};exports[_0xcb2a('0x28')]=function(_0x1053eb,_0x3448c9){return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x1053eb[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3448c9,null))[_0xcb2a('0x27')](removeEntity(_0x3448c9,null))[_0xcb2a('0x4e')](handleError(_0x3448c9,null));};exports[_0xcb2a('0x5d')]=function(_0x2a4997,_0x50ca76,_0x50deb6){var _0x9738ab={'raw':![],'where':{}};var _0x1bffd8={};var _0xdd22fe={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x2a4997[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x50ca76,null))['then'](function(_0x508d4b){if(_0x508d4b){_0x1bffd8['model']=_['keys'](db[_0xcb2a('0x5f')]['rawAttributes']);_0x1bffd8[_0xcb2a('0x39')]=_['keys'](_0x2a4997[_0xcb2a('0x39')]);_0x1bffd8[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x1bffd8[_0xcb2a('0x38')],_0x1bffd8[_0xcb2a('0x39')]);_0x9738ab[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1bffd8['model'],qs[_0xcb2a('0x3d')](_0x2a4997[_0xcb2a('0x39')]['fields']));_0x9738ab[_0xcb2a('0x3c')]=_0x9738ab[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x9738ab[_0xcb2a('0x3c')]:_0x1bffd8['model'];if(!_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x9738ab[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x9738ab[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x2a4997['query'][_0xcb2a('0x1e')]);}_0x9738ab[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x9738ab[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_['pick'](_0x2a4997['query'],_0x1bffd8[_0xcb2a('0x3a')]));_0x9738ab[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x508d4b['id'];if(_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x9738ab[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x9738ab[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x9738ab[_0xcb2a('0x3c')],function(_0x5bb182){var _0x1c52f5={};_0x1c52f5[_0x5bb182]={'$like':'%'+_0x2a4997[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x1c52f5;})});}_0x9738ab=_[_0xcb2a('0x45')]({},_0x9738ab,_0x2a4997[_0xcb2a('0x46')]);return db['CmHopper'][_0xcb2a('0x21')]({'where':_0x9738ab[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x399771){_0xdd22fe[_0xcb2a('0x21')]=_0x399771;if(_0x2a4997['query']['includeAll']){_0x9738ab['include']=[{'all':!![]}];}return db[_0xcb2a('0x5f')][_0xcb2a('0x48')](_0x9738ab);})[_0xcb2a('0x27')](function(_0x38d4ad){_0xdd22fe['rows']=_0x38d4ad;return _0xdd22fe;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x50ca76,_0x9738ab))[_0xcb2a('0x4e')](handleError(_0x50ca76,null));};exports['getHopperHistories']=function(_0x779c0c,_0x2b853b,_0x5e51fb){var _0x485032={'raw':!![],'where':{}};var _0x53e227={};var _0x17329f={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x779c0c[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x2b853b,null))[_0xcb2a('0x27')](function(_0x2a6ffe){if(_0x2a6ffe){_0x53e227[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x62')][_0xcb2a('0x4b')]);_0x53e227[_0xcb2a('0x39')]=_['keys'](_0x779c0c[_0xcb2a('0x39')]);_0x53e227[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x53e227[_0xcb2a('0x38')],_0x53e227['query']);_0x485032['attributes']=_[_0xcb2a('0x3b')](_0x53e227[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x485032['attributes']=_0x485032[_0xcb2a('0x3c')]['length']?_0x485032[_0xcb2a('0x3c')]:_0x53e227[_0xcb2a('0x38')];if(!_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x485032[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x485032[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x779c0c['query'][_0xcb2a('0x1e')]);}_0x485032[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x779c0c['query'][_0xcb2a('0x41')]);_0x485032[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_['pick'](_0x779c0c[_0xcb2a('0x39')],_0x53e227[_0xcb2a('0x3a')]));_0x485032[_0xcb2a('0x42')]['VoiceQueueId']=_0x2a6ffe['id'];if(_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x485032['where']=_[_0xcb2a('0x45')](_0x485032[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x485032[_0xcb2a('0x3c')],function(_0x2aff74){var _0x584966={};_0x584966[_0x2aff74]={'$like':'%'+_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x584966;})});}_0x485032=_[_0xcb2a('0x45')]({},_0x485032,_0x779c0c['options']);return db[_0xcb2a('0x62')]['count']({'where':_0x485032[_0xcb2a('0x42')]})['then'](function(_0x3bf2b8){_0x17329f['count']=_0x3bf2b8;if(_0x779c0c[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x485032['include']=[{'all':!![]}];}return db[_0xcb2a('0x62')][_0xcb2a('0x48')](_0x485032);})[_0xcb2a('0x27')](function(_0x52a8ae){_0x17329f[_0xcb2a('0x63')]=_0x52a8ae;return _0x17329f;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x2b853b,_0x485032))['catch'](handleError(_0x2b853b,null));};exports[_0xcb2a('0x64')]=function(_0x573aaf,_0x316579,_0x3334d8){var _0x1ca29f={'raw':!![],'where':{}};var _0x420365={};var _0x5eb8c7={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x573aaf[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x316579,null))[_0xcb2a('0x27')](function(_0x2fccd6){if(_0x2fccd6){_0x420365[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db['CmHopperFinal'][_0xcb2a('0x4b')]);_0x420365[_0xcb2a('0x39')]=_['keys'](_0x573aaf[_0xcb2a('0x39')]);_0x420365[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x420365[_0xcb2a('0x38')],_0x420365[_0xcb2a('0x39')]);_0x1ca29f['attributes']=_['intersection'](_0x420365['model'],qs[_0xcb2a('0x3d')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x1ca29f[_0xcb2a('0x3c')]=_0x1ca29f[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x1ca29f[_0xcb2a('0x3c')]:_0x420365[_0xcb2a('0x38')];if(!_0x573aaf['query']['hasOwnProperty'](_0xcb2a('0x60'))){_0x1ca29f[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x1ca29f[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}_0x1ca29f[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x1ca29f[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x573aaf[_0xcb2a('0x39')],_0x420365[_0xcb2a('0x3a')]));_0x1ca29f[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x2fccd6['id'];if(_0x573aaf[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x1ca29f[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x1ca29f[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x1ca29f[_0xcb2a('0x3c')],function(_0x475650){var _0x395f70={};_0x395f70[_0x475650]={'$like':'%'+_0x573aaf['query'][_0xcb2a('0x44')]+'%'};return _0x395f70;})});}_0x1ca29f=_[_0xcb2a('0x45')]({},_0x1ca29f,_0x573aaf[_0xcb2a('0x46')]);return db['CmHopperFinal'][_0xcb2a('0x21')]({'where':_0x1ca29f[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x5dd6b7){_0x5eb8c7[_0xcb2a('0x21')]=_0x5dd6b7;if(_0x573aaf['query']['includeAll']){_0x1ca29f['include']=[{'all':!![]}];}return db[_0xcb2a('0x65')][_0xcb2a('0x48')](_0x1ca29f);})[_0xcb2a('0x27')](function(_0x1574e3){_0x5eb8c7['rows']=_0x1574e3;return _0x5eb8c7;});}})[_0xcb2a('0x27')](respondWithFilteredResult(_0x316579,_0x1ca29f))['catch'](handleError(_0x316579,null));};exports[_0xcb2a('0x66')]=function(_0x4d3dc2,_0x4074bb,_0x1de18a){var _0x4ab0c9={'raw':!![],'where':{}};var _0x221e3d={};var _0x12b199={'count':0x0,'rows':[]};return db[_0xcb2a('0x35')]['findOne']({'where':{'id':_0x4d3dc2[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x4074bb,null))[_0xcb2a('0x27')](function(_0x4dcc0d){if(_0x4dcc0d){_0x221e3d[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x67')]['rawAttributes']);_0x221e3d[_0xcb2a('0x39')]=_['keys'](_0x4d3dc2['query']);_0x221e3d[_0xcb2a('0x3a')]=_['intersection'](_0x221e3d[_0xcb2a('0x38')],_0x221e3d['query']);_0x4ab0c9['attributes']=_[_0xcb2a('0x3b')](_0x221e3d['model'],qs['fields'](_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x4ab0c9[_0xcb2a('0x3c')]=_0x4ab0c9[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x4ab0c9[_0xcb2a('0x3c')]:_0x221e3d[_0xcb2a('0x38')];if(!_0x4d3dc2['query'][_0xcb2a('0x3f')]('nolimit')){_0x4ab0c9[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x4ab0c9[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x4d3dc2['query'][_0xcb2a('0x1e')]);}_0x4ab0c9[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x4d3dc2[_0xcb2a('0x39')]['sort']);_0x4ab0c9[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x4d3dc2[_0xcb2a('0x39')],_0x221e3d[_0xcb2a('0x3a')]));_0x4ab0c9[_0xcb2a('0x42')][_0xcb2a('0x61')]=_0x4dcc0d['id'];if(_0x4d3dc2[_0xcb2a('0x39')]['filter']){_0x4ab0c9[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x4ab0c9[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x4ab0c9[_0xcb2a('0x3c')],function(_0x730d25){var _0x34fb97={};_0x34fb97[_0x730d25]={'$like':'%'+_0x4d3dc2[_0xcb2a('0x39')]['filter']+'%'};return _0x34fb97;})});}_0x4ab0c9=_[_0xcb2a('0x45')]({},_0x4ab0c9,_0x4d3dc2[_0xcb2a('0x46')]);return db[_0xcb2a('0x67')]['count']({'where':_0x4ab0c9[_0xcb2a('0x42')]})[_0xcb2a('0x27')](function(_0x107408){_0x12b199[_0xcb2a('0x21')]=_0x107408;if(_0x4d3dc2[_0xcb2a('0x39')][_0xcb2a('0x4d')]){_0x4ab0c9['include']=[{'all':!![]}];}return db[_0xcb2a('0x67')][_0xcb2a('0x48')](_0x4ab0c9);})[_0xcb2a('0x27')](function(_0x2993fd){_0x12b199[_0xcb2a('0x63')]=_0x2993fd;return _0x12b199;});}})['then'](respondWithFilteredResult(_0x4074bb,_0x4ab0c9))[_0xcb2a('0x4e')](handleError(_0x4074bb,null));};exports[_0xcb2a('0x68')]=function(_0x4f22cb,_0x46d6ac,_0x40fc2b){var _0x1d10df={};var _0x1c5f5c={};var _0x3d0ac4;var _0x5540a5;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x4f22cb[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x46d6ac,null))['then'](function(_0x286b96){if(_0x286b96){_0x3d0ac4=_0x286b96;_0x1c5f5c[_0xcb2a('0x38')]=_['keys'](db[_0xcb2a('0x69')]['rawAttributes']);_0x1c5f5c[_0xcb2a('0x39')]=_['keys'](_0x4f22cb['query']);_0x1c5f5c['filters']=_['intersection'](_0x1c5f5c['model'],_0x1c5f5c[_0xcb2a('0x39')]);_0x1d10df[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1c5f5c['model'],qs[_0xcb2a('0x3d')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x1d10df[_0xcb2a('0x3c')]=_0x1d10df[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x1d10df['attributes']:_0x1c5f5c[_0xcb2a('0x38')];_0x1d10df[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x1d10df[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x4f22cb[_0xcb2a('0x39')],_0x1c5f5c[_0xcb2a('0x3a')]));if(_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x1d10df[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x1d10df[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x1d10df[_0xcb2a('0x3c')],function(_0x244a4e){var _0x3e7cd5={};_0x3e7cd5[_0x244a4e]={'$like':'%'+_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x3e7cd5;})});}_0x1d10df=_[_0xcb2a('0x45')]({},_0x1d10df,_0x4f22cb[_0xcb2a('0x46')]);return _0x3d0ac4[_0xcb2a('0x68')](_0x1d10df);}})['then'](function(_0x993fd8){if(_0x993fd8){_0x5540a5=_0x993fd8[_0xcb2a('0x3e')];if(!_0x4f22cb['query']['hasOwnProperty'](_0xcb2a('0x60'))){_0x1d10df['limit']=qs[_0xcb2a('0x20')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x1d10df[_0xcb2a('0x1e')]=qs[_0xcb2a('0x1e')](_0x4f22cb[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x3d0ac4[_0xcb2a('0x68')](_0x1d10df);}})['then'](function(_0x950123){if(_0x950123){return _0x950123?{'count':_0x5540a5,'rows':_0x950123}:null;}})[_0xcb2a('0x27')](respondWithResult(_0x46d6ac,null))['catch'](handleError(_0x46d6ac,null));};exports[_0xcb2a('0x6a')]=function(_0x13e41b,_0x2184fb,_0x3cbab5){var _0x121484=_0x13e41b[_0xcb2a('0x50')][_0xcb2a('0x6b')];var _0x2cf1c5=_[_0xcb2a('0x2e')](_0x121484,'id');return db[_0xcb2a('0x69')][_0xcb2a('0x48')]({'where':{'id':_0x2cf1c5},'attributes':['id'],'include':[{'model':db[_0xcb2a('0x6c')],'as':'Agents','attributes':['id',_0xcb2a('0x34'),_0xcb2a('0x6d'),'voicePause',_0xcb2a('0x6e')],'raw':!![]}]})['then'](function(_0x2d7ca4){if(_0x2d7ca4){var _0x356b0f=_[_0xcb2a('0x6f')](_0x2d7ca4,function(_0x3c4139){var _0x5d7ca5=_0x3c4139[_0xcb2a('0x29')]({'plain':!![]});_0x5d7ca5[_0xcb2a('0x70')][_0xcb2a('0x71')](function(_0x84bf53){_0x84bf53[_0xcb2a('0x72')]=_[_0xcb2a('0x54')](_0x121484,{'id':_0x5d7ca5['id']})[_0xcb2a('0x72')];});return _0x5d7ca5['Agents'];});return db['VoiceQueue'][_0xcb2a('0x54')]({'where':{'id':_0x13e41b[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(_0x3860d2){return db[_0xcb2a('0x73')][_0xcb2a('0x74')](function(_0x2e8fbd){return _0x3860d2[_0xcb2a('0x6a')](_0x2cf1c5,{'transaction':_0x2e8fbd})[_0xcb2a('0x27')](function(){return BPromise[_0xcb2a('0x75')](_0x121484,function(_0x5ab4ab){return db[_0xcb2a('0x76')][_0xcb2a('0x77')]({'TeamId':_0x5ab4ab['id'],'VoiceQueueId':_0x13e41b['params']['id'],'penalty':_0x5ab4ab[_0xcb2a('0x72')]},{'transaction':_0x2e8fbd});});})['then'](function(){return BPromise[_0xcb2a('0x75')](_0x356b0f,function(_0x1ffac9){return db[_0xcb2a('0x78')][_0xcb2a('0x79')]({'where':{'UserId':_0x1ffac9['id'],'VoiceQueueId':_0x13e41b[_0xcb2a('0x4a')]['id']},'defaults':{'penalty':_0x1ffac9[_0xcb2a('0x72')]},'transaction':_0x2e8fbd});});})['then'](function(){return BPromise[_0xcb2a('0x75')](_[_0xcb2a('0x44')](_0x356b0f,{'online':!![]}),function(_0x4ef138){return db[_0xcb2a('0x7a')][_0xcb2a('0x77')]({'membername':_0x4ef138['name'],'UserId':_0x4ef138['id'],'queue_name':_0x3860d2[_0xcb2a('0x34')],'VoiceQueueId':_0x3860d2['id'],'interface':_[_0xcb2a('0x7b')](_0x4ef138[_0xcb2a('0x6e')])?util[_0xcb2a('0x7c')](_0xcb2a('0x7d'),_0x4ef138[_0xcb2a('0x34')]):_0x4ef138['interface'],'paused':_0x4ef138[_0xcb2a('0x7e')]||![],'penalty':_0x4ef138['penalty']},{'transaction':_0x2e8fbd});});})[_0xcb2a('0x27')](function(){_0x356b0f['forEach'](function(_0x1f599c){socket['emit'](_0xcb2a('0x7f'),{'UserId':_0x1f599c['id'],'VoiceQueueId':_0x3860d2['id']});});});});});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x2184fb,null))[_0xcb2a('0x4e')](handleError(_0x2184fb,null));};exports['removeTeams']=function(_0x56b25c,_0x3aa012,_0x2d3cd4){return db[_0xcb2a('0x69')][_0xcb2a('0x48')]({'where':{'id':_0x56b25c[_0xcb2a('0x39')][_0xcb2a('0x80')]},'attributes':['id'],'include':[{'model':db[_0xcb2a('0x6c')],'as':_0xcb2a('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3aa012,null))['then'](function(_0x4a145d){var _0x14cde6=_[_0xcb2a('0x2e')](_0x4a145d,'id');var _0x16a503=[];var _0x13a846=[];var _0x3de516=squel[_0xcb2a('0x81')]();_0x3de516[_0xcb2a('0x82')](_0xcb2a('0x83'))['from'](_0xcb2a('0x84'),'tq')[_0xcb2a('0x85')](_0xcb2a('0x86'),'ut',_0xcb2a('0x87'))[_0xcb2a('0x42')](_0xcb2a('0x88'),_0x56b25c[_0xcb2a('0x4a')]['id']);for(var _0x544c1f=0x0;_0x544c1f<_0x4a145d[_0xcb2a('0x3e')];_0x544c1f+=0x1){let _0x4d67dc=_0x4a145d[_0x544c1f];for(var _0x141572=0x0;_0x141572<_0x4d67dc[_0xcb2a('0x70')][_0xcb2a('0x3e')];_0x141572+=0x1){let _0x5219b4=_0x4d67dc['Agents'][_0x141572];var _0x6b4a1=_0x3de516[_0xcb2a('0x59')]();_0x6b4a1[_0xcb2a('0x42')](_0xcb2a('0x89'),_0x5219b4['id']);_0x13a846[_0xcb2a('0x8a')](db[_0xcb2a('0x73')][_0xcb2a('0x39')](_0x6b4a1[_0xcb2a('0x8b')](),{'type':db[_0xcb2a('0x73')][_0xcb2a('0x8c')]['SELECT']})[_0xcb2a('0x27')](function(_0x2a9236){if(_0x2a9236[_0xcb2a('0x3e')]===0x1){return _0x5219b4['id'];}else{var _0x21e4f3=_['every'](_[_0xcb2a('0x2e')](_0x2a9236,_0xcb2a('0x8d')),function(_0x560073){return _[_0xcb2a('0x30')](_0x14cde6,_0x560073);});if(_0x21e4f3){return _0x5219b4['id'];}}}));}}return BPromise[_0xcb2a('0x8e')](_0x13a846)[_0xcb2a('0x27')](function(_0x2f03d0){_0x16a503=_(_0x16a503)[_0xcb2a('0x8f')](_0x2f03d0)[_0xcb2a('0x90')]()[_0xcb2a('0x2f')]();return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x56b25c[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(_0x48d28f){return db['sequelize'][_0xcb2a('0x74')](function(_0x45644b){return _0x48d28f['removeTeams'](_0x56b25c[_0xcb2a('0x39')][_0xcb2a('0x80')],{'transaction':_0x45644b})[_0xcb2a('0x27')](function(){if(!_[_0xcb2a('0x91')](_0x16a503)){return _0x48d28f['removeAgents'](_0x16a503,{'transaction':_0x45644b})[_0xcb2a('0x27')](function(){return db[_0xcb2a('0x7a')][_0xcb2a('0x28')]({'where':{'VoiceQueueId':_0x56b25c['params']['id'],'UserId':_0x16a503},'transaction':_0x45644b});});}})[_0xcb2a('0x27')](function(){_0x16a503[_0xcb2a('0x71')](function(_0x17fa90){socket['emit'](_0xcb2a('0x92'),{'UserId':_0x17fa90,'VoiceQueueId':_0x48d28f['id']});});});});});});})['then'](respondWithStatusCode(_0x3aa012,null))[_0xcb2a('0x4e')](handleError(_0x3aa012,null));};exports[_0xcb2a('0x93')]=function(_0x503fb7,_0xeaec3,_0x2dccf6){var _0x282692,_0xa7bba3;return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x503fb7['params']['id']}})['then'](handleEntityNotFound(_0xeaec3,null))['then'](function(_0xf95c42){if(_0xf95c42){_0xa7bba3=_0xf95c42;return _0xf95c42[_0xcb2a('0x93')](_0x503fb7[_0xcb2a('0x50')]['ids'],_[_0xcb2a('0x94')](_0x503fb7['body'],[_0xcb2a('0x80'),'id'])||{})[_0xcb2a('0x95')](function(_0x306dc7){for(var _0x1870f9=0x0;_0x1870f9<_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')][_0xcb2a('0x3e')];_0x1870f9+=0x1){socket['emit'](_0xcb2a('0x7f'),{'UserId':Number(_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')][_0x1870f9]),'VoiceQueueId':Number(_0x503fb7[_0xcb2a('0x4a')]['id'])});}return _0x306dc7;});}})[_0xcb2a('0x27')](function(_0x4fb023){_0x282692=_0x4fb023||[];if(_0xa7bba3){return db[_0xcb2a('0x6c')][_0xcb2a('0x48')]({'where':{'id':_0x503fb7[_0xcb2a('0x50')][_0xcb2a('0x80')]},'attributes':['id','name',_0xcb2a('0x6d'),_0xcb2a('0x7e'),_0xcb2a('0x6e')],'raw':!![]});}})[_0xcb2a('0x27')](function(_0x14e0b1){if(!_[_0xcb2a('0x91')](_0x14e0b1)){var _0x507c47=[];for(var _0x1acd7e=0x0;_0x1acd7e<_0x14e0b1['length'];_0x1acd7e++){if(_0x14e0b1[_0x1acd7e][_0xcb2a('0x6d')]){_0x507c47[_0xcb2a('0x8a')](db[_0xcb2a('0x7a')]['upsert']({'membername':_0x14e0b1[_0x1acd7e][_0xcb2a('0x34')],'UserId':_0x14e0b1[_0x1acd7e]['id'],'queue_name':_0xa7bba3[_0xcb2a('0x34')],'VoiceQueueId':_0xa7bba3['id'],'interface':_[_0xcb2a('0x7b')](_0x14e0b1[_0x1acd7e]['interface'])?util[_0xcb2a('0x7c')](_0xcb2a('0x7d'),_0x14e0b1[_0x1acd7e]['name']):_0x14e0b1[_0x1acd7e][_0xcb2a('0x6e')],'paused':_0x14e0b1[_0x1acd7e][_0xcb2a('0x7e')]||![],'penalty':_0x503fb7['body'][_0xcb2a('0x72')]||0x0}));}}return BPromise[_0xcb2a('0x8e')](_0x507c47);}})[_0xcb2a('0x27')](function(){return _0x282692;})['then'](respondWithResult(_0xeaec3,null))[_0xcb2a('0x4e')](handleError(_0xeaec3,null));};exports[_0xcb2a('0x96')]=function(_0x334ff8,_0x5d476b,_0x1462bf){return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x334ff8['params']['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5d476b,null))[_0xcb2a('0x27')](function(_0x5ee714){if(_0x5ee714){return _0x5ee714[_0xcb2a('0x96')](_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')])[_0xcb2a('0x27')](function(){if(_[_0xcb2a('0x97')](_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')])){for(var _0x392f8f=0x0;_0x392f8f<_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')][_0xcb2a('0x3e')];_0x392f8f+=0x1){socket[_0xcb2a('0x98')](_0xcb2a('0x92'),{'UserId':Number(_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')][_0x392f8f]),'VoiceQueueId':Number(_0x334ff8[_0xcb2a('0x4a')]['id'])});}}else{socket[_0xcb2a('0x98')]('userVoiceQueue:remove',{'UserId':Number(_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')]),'VoiceQueueId':Number(_0x334ff8[_0xcb2a('0x4a')]['id'])});}});}})[_0xcb2a('0x27')](function(_0x2109c8){return db[_0xcb2a('0x7a')][_0xcb2a('0x28')]({'where':{'VoiceQueueId':_0x334ff8['params']['id'],'UserId':_0x334ff8[_0xcb2a('0x39')][_0xcb2a('0x80')]}})[_0xcb2a('0x27')](function(){return _0x2109c8;});})['then'](respondWithStatusCode(_0x5d476b,null))[_0xcb2a('0x4e')](handleError(_0x5d476b,null));};exports[_0xcb2a('0x99')]=function(_0x2314f6,_0x5e15a0,_0x24a216){var _0x31d303={};var _0x17fccc={};var _0x5d0c78;var _0x59461c;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x2314f6[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5e15a0,null))[_0xcb2a('0x27')](function(_0x3d2e07){if(_0x3d2e07){_0x5d0c78=_0x3d2e07;_0x17fccc[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x6c')][_0xcb2a('0x4b')]);_0x17fccc[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x2314f6[_0xcb2a('0x39')]);_0x17fccc[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x17fccc[_0xcb2a('0x38')],_0x17fccc[_0xcb2a('0x39')]);_0x31d303[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x17fccc['model'],qs[_0xcb2a('0x3d')](_0x2314f6[_0xcb2a('0x39')]['fields']));_0x31d303[_0xcb2a('0x3c')]=_0x31d303[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x31d303[_0xcb2a('0x3c')]:_0x17fccc['model'];_0x31d303[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x31d303['where']=qs['filters'](_['pick'](_0x2314f6['query'],_0x17fccc[_0xcb2a('0x3a')]));if(_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x31d303[_0xcb2a('0x42')]=_['merge'](_0x31d303[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x31d303[_0xcb2a('0x3c')],function(_0x4d1e64){var _0x56d97d={};_0x56d97d[_0x4d1e64]={'$like':'%'+_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x56d97d;})});}_0x31d303=_[_0xcb2a('0x45')]({},_0x31d303,_0x2314f6['options']);return _0x5d0c78['getAgents'](_0x31d303);}})[_0xcb2a('0x27')](function(_0xaac358){if(_0xaac358){_0x59461c=_0xaac358[_0xcb2a('0x3e')];if(!_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x31d303['limit']=qs['limit'](_0x2314f6[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x31d303[_0xcb2a('0x1e')]=qs['offset'](_0x2314f6['query'][_0xcb2a('0x1e')]);}return _0x5d0c78['getAgents'](_0x31d303);}})[_0xcb2a('0x27')](function(_0x149fa3){if(_0x149fa3){return _0x149fa3?{'count':_0x59461c,'rows':_0x149fa3}:null;}})[_0xcb2a('0x27')](respondWithResult(_0x5e15a0,null))[_0xcb2a('0x4e')](handleError(_0x5e15a0,null));};exports[_0xcb2a('0x9a')]=function(_0x401a03,_0x263369,_0x2c6f9c){var _0x10d0ec={};var _0x1a57f1={};var _0x19d888;var _0x1008d8;return db['VoiceQueue']['findOne']({'where':{'id':_0x401a03[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x263369,null))[_0xcb2a('0x27')](function(_0xd0e831){if(_0xd0e831){_0x19d888=_0xd0e831;_0x1a57f1['model']=_[_0xcb2a('0x4c')](db[_0xcb2a('0x7a')]['rawAttributes']);_0x1a57f1['query']=_[_0xcb2a('0x4c')](_0x401a03[_0xcb2a('0x39')]);_0x1a57f1['filters']=_[_0xcb2a('0x3b')](_0x1a57f1['model'],_0x1a57f1['query']);_0x10d0ec['attributes']=_[_0xcb2a('0x3b')](_0x1a57f1['model'],qs[_0xcb2a('0x3d')](_0x401a03[_0xcb2a('0x39')]['fields']));_0x10d0ec[_0xcb2a('0x3c')]=_0x10d0ec[_0xcb2a('0x3c')][_0xcb2a('0x3e')]?_0x10d0ec[_0xcb2a('0x3c')]:_0x1a57f1['model'];_0x10d0ec[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x401a03[_0xcb2a('0x39')]['sort']);_0x10d0ec[_0xcb2a('0x42')]=qs['filters'](_[_0xcb2a('0x43')](_0x401a03[_0xcb2a('0x39')],_0x1a57f1[_0xcb2a('0x3a')]));if(_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x10d0ec[_0xcb2a('0x42')]=_['merge'](_0x10d0ec[_0xcb2a('0x42')],{'$or':_['map'](_0x10d0ec[_0xcb2a('0x3c')],function(_0x3d5f93){var _0x4f6ba5={};_0x4f6ba5[_0x3d5f93]={'$like':'%'+_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x4f6ba5;})});}_0x10d0ec=_[_0xcb2a('0x45')]({},_0x10d0ec,_0x401a03[_0xcb2a('0x46')]);return _0x19d888[_0xcb2a('0x9a')](_0x10d0ec);}})[_0xcb2a('0x27')](function(_0x4237e9){if(_0x4237e9){_0x1008d8=_0x4237e9['length'];if(!_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x3f')](_0xcb2a('0x60'))){_0x10d0ec[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x10d0ec['offset']=qs[_0xcb2a('0x1e')](_0x401a03[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x19d888[_0xcb2a('0x9a')](_0x10d0ec);}})['then'](function(_0xd0ebc1){return _0xd0ebc1?{'count':_0x1008d8,'rows':_0xd0ebc1}:null;})[_0xcb2a('0x27')](respondWithResult(_0x263369,null))[_0xcb2a('0x4e')](handleError(_0x263369,null));};exports[_0xcb2a('0x9b')]=function(_0x599024,_0x5548f7,_0xf787c6){var _0x4af4b5={};var _0x6173e7={};var _0x52bbe6;var _0x45ca4d;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x599024[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5548f7,null))[_0xcb2a('0x27')](function(_0x435218){if(_0x435218){_0x52bbe6=_0x435218;_0x6173e7[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x9c')][_0xcb2a('0x4b')]);_0x6173e7[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x599024[_0xcb2a('0x39')]);_0x6173e7[_0xcb2a('0x3a')]=_[_0xcb2a('0x3b')](_0x6173e7[_0xcb2a('0x38')],_0x6173e7[_0xcb2a('0x39')]);_0x4af4b5[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x6173e7[_0xcb2a('0x38')],qs['fields'](_0x599024[_0xcb2a('0x39')]['fields']));_0x4af4b5[_0xcb2a('0x3c')]=_0x4af4b5['attributes']['length']?_0x4af4b5[_0xcb2a('0x3c')]:_0x6173e7[_0xcb2a('0x38')];_0x4af4b5[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x599024['query'][_0xcb2a('0x41')]);_0x4af4b5[_0xcb2a('0x42')]=qs[_0xcb2a('0x3a')](_[_0xcb2a('0x43')](_0x599024[_0xcb2a('0x39')],_0x6173e7[_0xcb2a('0x3a')]));if(_0x599024[_0xcb2a('0x39')][_0xcb2a('0x44')]){_0x4af4b5[_0xcb2a('0x42')]=_[_0xcb2a('0x45')](_0x4af4b5[_0xcb2a('0x42')],{'$or':_[_0xcb2a('0x2e')](_0x4af4b5[_0xcb2a('0x3c')],function(_0x32699b){var _0x40d6f9={};_0x40d6f9[_0x32699b]={'$like':'%'+_0x599024[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x40d6f9;})});}_0x4af4b5=_[_0xcb2a('0x45')]({},_0x4af4b5,_0x599024[_0xcb2a('0x46')]);return _0x52bbe6[_0xcb2a('0x9b')](_0x4af4b5);}})[_0xcb2a('0x27')](function(_0x300c2c){if(_0x300c2c){_0x45ca4d=_0x300c2c[_0xcb2a('0x3e')];if(!_0x599024[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x4af4b5[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x599024[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x4af4b5[_0xcb2a('0x1e')]=qs['offset'](_0x599024[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x52bbe6[_0xcb2a('0x9b')](_0x4af4b5);}})[_0xcb2a('0x27')](function(_0x2b8e38){if(_0x2b8e38){return _0x2b8e38?{'count':_0x45ca4d,'rows':_0x2b8e38}:null;}})['then'](respondWithResult(_0x5548f7,null))[_0xcb2a('0x4e')](handleError(_0x5548f7,null));};exports[_0xcb2a('0x9d')]=function(_0x3b7037,_0x5d09f3,_0xfc190f){var _0x301948=moment()[_0xcb2a('0x7c')](_0xcb2a('0x9e'));var _0x177a68,_0x2a495f;return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x3b7037[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x5d09f3,null))[_0xcb2a('0x27')](function(_0x44b4ae){if(_0x44b4ae){_0x2a495f=_0x44b4ae;return _0x44b4ae[_0xcb2a('0x9d')](_0x3b7037[_0xcb2a('0x50')][_0xcb2a('0x80')],_[_0xcb2a('0x94')](_0x3b7037[_0xcb2a('0x50')],[_0xcb2a('0x80'),'id'])||{});}return null;})[_0xcb2a('0x95')](function(_0x2d6398){var _0x779abc;_0x177a68=_0x2d6398||[];var _0x210353=[];if(_0x2d6398){for(var _0x4e8645=0x0;_0x4e8645<_0x2d6398[_0xcb2a('0x3e')];_0x4e8645+=0x1){var _0x420701=_0x2d6398[_0x4e8645][_0xcb2a('0x29')]({'plain':!![]});_0x2a495f['dialCheckDuplicateType']=_0x3b7037[_0xcb2a('0x50')]['dialCheckDuplicateType']?_0x3b7037['body']['dialCheckDuplicateType']:_0x2a495f[_0xcb2a('0x9f')];switch(_0x2a495f[_0xcb2a('0x9f')]){case _0xcb2a('0xa0'):_0x779abc=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')](_0xcb2a('0xa3'))[_0xcb2a('0xa4')](['phone',_0xcb2a('0xa5'),'ContactId',_0xcb2a('0xa6'),'VoiceQueueId',_0xcb2a('0x5a'),'updatedAt'],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),_0xcb2a('0xa7'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','scheduledAt')[_0xcb2a('0x82')]('id',_0xcb2a('0xa8'))[_0xcb2a('0x82')](_0x420701['CmListId'][_0xcb2a('0x8b')](),'ListId')[_0xcb2a('0x82')](_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),'VoiceQueueId')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))['field']('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))['where'](_0xcb2a('0xab'))[_0xcb2a('0x42')]('ListId\x20=\x20?',_0x420701[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad'))[_0xcb2a('0x42')](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()['field'](_0xcb2a('0xaf'))[_0xcb2a('0xa9')](_0xcb2a('0xb0'))[_0xcb2a('0x42')]('VoiceQueueId\x20=\x20?',_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]()))['where'](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()[_0xcb2a('0x82')]('COALESCE(phone,\x27\x27)')[_0xcb2a('0xa9')]('cm_hopper')[_0xcb2a('0x42')]('VoiceQueueId\x20=\x20?',_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]())))['toString']();break;case _0xcb2a('0xb1'):_0x779abc=squel[_0xcb2a('0xa1')]()['into']('cm_hopper')[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),_0xcb2a('0xa5'),_0xcb2a('0xa8'),_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),'updatedAt'],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),_0xcb2a('0xa7'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0xa5'))[_0xcb2a('0x82')]('id','ContactId')[_0xcb2a('0x82')](_0x420701[_0xcb2a('0xac')]['toString'](),'ListId')[_0xcb2a('0x82')](_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),_0xcb2a('0x61'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','createdAt')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27','updatedAt')['from']('cm_contacts')[_0xcb2a('0x42')](_0xcb2a('0xab'))[_0xcb2a('0x42')]('ListId\x20=\x20?',_0x420701[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad'))[_0xcb2a('0x42')](_0xcb2a('0xae'),squel[_0xcb2a('0x81')]()[_0xcb2a('0x82')](_0xcb2a('0xb2'))[_0xcb2a('0xa9')]('cm_hopper')[_0xcb2a('0x42')](_0xcb2a('0x88'),_0x3b7037[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')]())))[_0xcb2a('0x8b')]();break;default:_0x779abc=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')](_0xcb2a('0xa3'))[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),'scheduledAt',_0xcb2a('0xa8'),_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()[_0xcb2a('0x82')](_0xcb2a('0xa7'),'phone')['field']('\x27'+_0x301948+'\x27',_0xcb2a('0xa5'))['field']('id','ContactId')[_0xcb2a('0x82')](_0x420701['CmListId'][_0xcb2a('0x8b')](),_0xcb2a('0xa6'))['field'](_0x3b7037['params']['id'][_0xcb2a('0x8b')](),_0xcb2a('0x61'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))[_0xcb2a('0x42')](_0xcb2a('0xab'))['where'](_0xcb2a('0xb3'),_0x420701[_0xcb2a('0xac')]['toString']())['where'](_0xcb2a('0xad')))[_0xcb2a('0x8b')]();}_0x210353['push'](db[_0xcb2a('0x73')][_0xcb2a('0x39')](_0x779abc));}return BPromise[_0xcb2a('0x8e')](_0x210353);}})[_0xcb2a('0x27')](function(){var _0x78617b=[];var _0x504b73=squel[_0xcb2a('0xa1')]()[_0xcb2a('0xa2')]('cm_hopper_additional_phones')['fromQuery']([_0xcb2a('0xb4'),_0xcb2a('0xa7'),_0xcb2a('0xb5'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()['field']('h.id')['field'](_0xcb2a('0xb6'))[_0xcb2a('0x82')]('ci.OrderBy+1')[_0xcb2a('0x82')]('\x27'+_0x301948+'\x27',_0xcb2a('0x5a'))['field']('\x27'+_0x301948+'\x27',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xb7'),'ci')[_0xcb2a('0x85')](_0xcb2a('0xa3'),'h',_0xcb2a('0xb8'))['where'](_0xcb2a('0xb9'),_0x301948)[_0xcb2a('0x42')]('ci.ItemClass=?',_0xcb2a('0xba')))[_0xcb2a('0x8b')]();_0x78617b['push'](db[_0xcb2a('0x73')]['query'](_0x504b73));return BPromise[_0xcb2a('0x8e')](_0x78617b);})[_0xcb2a('0x27')](function(){return _0x177a68;})['then'](respondWithResult(_0x5d09f3,null))['catch'](handleError(_0x5d09f3,null));};exports['removeLists']=function(_0x43b606,_0x5f2e10,_0x56727d){return db[_0xcb2a('0x35')]['find']({'where':{'id':_0x43b606[_0xcb2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5f2e10,null))[_0xcb2a('0x27')](function(_0x5f3c9e){if(_0x5f3c9e){return _0x5f3c9e[_0xcb2a('0xbb')](_0x43b606[_0xcb2a('0x39')][_0xcb2a('0x80')]);}})[_0xcb2a('0x27')](function(_0x5c84b2){if(_0x5c84b2){return db[_0xcb2a('0x5f')][_0xcb2a('0x28')]({'where':{'ListId':_0x43b606['query'][_0xcb2a('0x80')],'VoiceQueueId':_0x43b606[_0xcb2a('0x4a')]['id']}})['then'](function(){return _0x5c84b2;});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x5f2e10,null))[_0xcb2a('0x4e')](handleError(_0x5f2e10,null));};exports[_0xcb2a('0xbc')]=function(_0x34d874,_0x290451,_0x478eb6){var _0x29f30={};var _0x1b31b6={};var _0x265791;var _0x36013b;return db[_0xcb2a('0x35')][_0xcb2a('0x5e')]({'where':{'id':_0x34d874[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x290451,null))['then'](function(_0x2a3ea2){if(_0x2a3ea2){_0x265791=_0x2a3ea2;_0x1b31b6[_0xcb2a('0x38')]=_[_0xcb2a('0x4c')](db[_0xcb2a('0x9c')]['rawAttributes']);_0x1b31b6[_0xcb2a('0x39')]=_[_0xcb2a('0x4c')](_0x34d874[_0xcb2a('0x39')]);_0x1b31b6[_0xcb2a('0x3a')]=_['intersection'](_0x1b31b6[_0xcb2a('0x38')],_0x1b31b6[_0xcb2a('0x39')]);_0x29f30[_0xcb2a('0x3c')]=_[_0xcb2a('0x3b')](_0x1b31b6[_0xcb2a('0x38')],qs[_0xcb2a('0x3d')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x3d')]));_0x29f30[_0xcb2a('0x3c')]=_0x29f30['attributes'][_0xcb2a('0x3e')]?_0x29f30[_0xcb2a('0x3c')]:_0x1b31b6[_0xcb2a('0x38')];_0x29f30[_0xcb2a('0x40')]=qs[_0xcb2a('0x41')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x41')]);_0x29f30[_0xcb2a('0x42')]=qs['filters'](_[_0xcb2a('0x43')](_0x34d874[_0xcb2a('0x39')],_0x1b31b6[_0xcb2a('0x3a')]));if(_0x34d874['query'][_0xcb2a('0x44')]){_0x29f30['where']=_[_0xcb2a('0x45')](_0x29f30['where'],{'$or':_['map'](_0x29f30[_0xcb2a('0x3c')],function(_0x18f32b){var _0x487bd8={};_0x487bd8[_0x18f32b]={'$like':'%'+_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x44')]+'%'};return _0x487bd8;})});}_0x29f30=_[_0xcb2a('0x45')]({},_0x29f30,_0x34d874[_0xcb2a('0x46')]);return _0x265791['getBlackLists'](_0x29f30);}})['then'](function(_0x5d73c3){if(_0x5d73c3){_0x36013b=_0x5d73c3[_0xcb2a('0x3e')];if(!_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x3f')]('nolimit')){_0x29f30[_0xcb2a('0x20')]=qs[_0xcb2a('0x20')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x20')]);_0x29f30['offset']=qs[_0xcb2a('0x1e')](_0x34d874[_0xcb2a('0x39')][_0xcb2a('0x1e')]);}return _0x265791[_0xcb2a('0xbc')](_0x29f30);}})[_0xcb2a('0x27')](function(_0x4fc784){if(_0x4fc784){return _0x4fc784?{'count':_0x36013b,'rows':_0x4fc784}:null;}})['then'](respondWithResult(_0x290451,null))[_0xcb2a('0x4e')](handleError(_0x290451,null));};exports[_0xcb2a('0xbd')]=function(_0x46be03,_0x58a0f6,_0xd5df16){var _0x1ea1a0,_0x49293f;return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x46be03[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](handleEntityNotFound(_0x58a0f6,null))[_0xcb2a('0x27')](function(_0x5a0727){if(_0x5a0727){_0x49293f=_0x5a0727;return _0x5a0727[_0xcb2a('0xbd')](_0x46be03['body'][_0xcb2a('0x80')],_[_0xcb2a('0x94')](_0x46be03[_0xcb2a('0x50')],[_0xcb2a('0x80'),'id'])||{});}return null;})[_0xcb2a('0x95')](function(_0x145857){var _0x407d1f;_0x1ea1a0=_0x145857||[];var _0x275461=[];if(_0x145857){for(var _0x214a3a=0x0;_0x214a3a<_0x145857[_0xcb2a('0x3e')];_0x214a3a+=0x1){var _0xc8f3ea=_0x145857[_0x214a3a][_0xcb2a('0x29')]({'plain':!![]});_0x407d1f=squel['insert']()[_0xcb2a('0xa2')](_0xcb2a('0xbe'))[_0xcb2a('0xa4')]([_0xcb2a('0xa7'),'ContactId',_0xcb2a('0xa6'),_0xcb2a('0x61'),_0xcb2a('0x5a'),_0xcb2a('0x5b')],squel['select']()[_0xcb2a('0x82')]('phone',_0xcb2a('0xa7'))[_0xcb2a('0x82')]('id',_0xcb2a('0xa8'))[_0xcb2a('0x82')](_0xc8f3ea['CmListId'][_0xcb2a('0x8b')](),_0xcb2a('0xa6'))[_0xcb2a('0x82')](_0x46be03[_0xcb2a('0x4a')]['id'][_0xcb2a('0x8b')](),'VoiceQueueId')['field']('NOW()',_0xcb2a('0x5a'))['field']('NOW()',_0xcb2a('0x5b'))[_0xcb2a('0xa9')](_0xcb2a('0xaa'))[_0xcb2a('0x42')](_0xcb2a('0xab'))[_0xcb2a('0x42')](_0xcb2a('0xb3'),_0xc8f3ea[_0xcb2a('0xac')][_0xcb2a('0x8b')]())[_0xcb2a('0x42')](_0xcb2a('0xad')))[_0xcb2a('0x8b')]();_0x275461['push'](db['sequelize'][_0xcb2a('0x39')](_0x407d1f));}return BPromise[_0xcb2a('0x8e')](_0x275461);}})[_0xcb2a('0x27')](function(){return _0x1ea1a0;})['then'](respondWithResult(_0x58a0f6,null))['catch'](handleError(_0x58a0f6,null));};exports[_0xcb2a('0xbf')]=function(_0x22a0d2,_0x31ae39,_0x41ddae){return db[_0xcb2a('0x35')][_0xcb2a('0x54')]({'where':{'id':_0x22a0d2['params']['id']}})['then'](handleEntityNotFound(_0x31ae39,null))['then'](function(_0x4b6331){if(_0x4b6331){return _0x4b6331['removeBlackLists'](_0x22a0d2['query'][_0xcb2a('0x80')]);}})[_0xcb2a('0x27')](function(_0x2ab840){if(_0x2ab840){return db[_0xcb2a('0x67')]['destroy']({'where':{'ListId':_0x22a0d2[_0xcb2a('0x39')][_0xcb2a('0x80')],'VoiceQueueId':_0x22a0d2[_0xcb2a('0x4a')]['id']}})[_0xcb2a('0x27')](function(){return _0x2ab840;});}})[_0xcb2a('0x27')](respondWithStatusCode(_0x31ae39,null))[_0xcb2a('0x4e')](handleError(_0x31ae39,null));};
\ No newline at end of file
index c870a43..0770e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac1=['exports','events','VoiceQueue','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x7fce38,_0x2b8ad2){var _0x39c4df=function(_0x53afef){while(--_0x53afef){_0x7fce38['push'](_0x7fce38['shift']());}};_0x39c4df(++_0x2b8ad2);}(_0x6ac1,0x181));var _0x16ac=function(_0x2bbbc2,_0x2fd8b9){_0x2bbbc2=_0x2bbbc2-0x0;var _0x1f0319=_0x6ac1[_0x2bbbc2];return _0x1f0319;};'use strict';var EventEmitter=require(_0x16ac('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x16ac('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x16ac('0x2')](0x0);var events={'afterCreate':_0x16ac('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2ae124){return function(_0x56104b,_0x4c4cb3,_0x281fb8){VoiceQueueEvents['emit'](_0x2ae124+':'+_0x56104b['id'],_0x56104b);VoiceQueueEvents[_0x16ac('0x4')](_0x2ae124,_0x56104b);_0x281fb8(null);};}for(var e in events){if(events[_0x16ac('0x5')](e)){var event=events[e];VoiceQueue[_0x16ac('0x6')](e,emitEvent(event));}}module[_0x16ac('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xec5a=['../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x490b58,_0x3902bf){var _0x2ff908=function(_0x2a1b0b){while(--_0x2a1b0b){_0x490b58['push'](_0x490b58['shift']());}};_0x2ff908(++_0x3902bf);}(_0xec5a,0x195));var _0xaec5=function(_0x41070a,_0x34c057){_0x41070a=_0x41070a-0x0;var _0xe50e7=_0xec5a[_0x41070a];return _0xe50e7;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0xaec5('0x0'))['db'][_0xaec5('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xaec5('0x2')](0x0);var events={'afterCreate':_0xaec5('0x3'),'afterUpdate':_0xaec5('0x4'),'afterDestroy':_0xaec5('0x5')};function emitEvent(_0x336a65){return function(_0x30c2a2,_0x21f7ee,_0x4c20bf){VoiceQueueEvents[_0xaec5('0x6')](_0x336a65+':'+_0x30c2a2['id'],_0x30c2a2);VoiceQueueEvents[_0xaec5('0x6')](_0x336a65,_0x30c2a2);_0x4c20bf(null);};}for(var e in events){if(events[_0xaec5('0x7')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0xaec5('0x8')]=VoiceQueueEvents;
\ No newline at end of file
index 7e74f46..4514704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0x3e74,0x175));var _0x43e7=function(_0x5714f6,_0x55acae){_0x5714f6=_0x5714f6-0x0;var _0x2e02f2=_0x3e74[_0x5714f6];return _0x2e02f2;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x379973,_0x3d37c3){var _0x3e78b3=function(_0x1d5c66){while(--_0x1d5c66){_0x379973['push'](_0x379973['shift']());}};_0x3e78b3(++_0x3d37c3);}(_0x34e8,0x12c));var _0x834e=function(_0x48880b,_0x5ed8cb){_0x48880b=_0x48880b-0x0;var _0x4771ce=_0x34e8[_0x48880b];return _0x4771ce;};'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 943657b..2f07d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a01=['debug','ShowVoiceQueue','VoiceQueue','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','findAll','options','raw','where','include','map','model','attributes','GetVoiceQueue'];(function(_0x39ce39,_0x1bf84d){var _0x3a9824=function(_0xbb39b6){while(--_0xbb39b6){_0x39ce39['push'](_0x39ce39['shift']());}};_0x3a9824(++_0x1bf84d);}(_0x0a01,0x13c));var _0x10a0=function(_0x3f591e,_0xe02469){_0x3f591e=_0x3f591e-0x0;var _0x41d0c6=_0x0a01[_0x3f591e];return _0x41d0c6;};'use strict';var _=require(_0x10a0('0x0'));var util=require(_0x10a0('0x1'));var moment=require(_0x10a0('0x2'));var BPromise=require('bluebird');var rs=require(_0x10a0('0x3'));var fs=require('fs');var Redis=require(_0x10a0('0x4'));var db=require(_0x10a0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x10a0('0x6'))(_0x10a0('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x10a0('0x8')]({'port':0x232a});config[_0x10a0('0x9')]=_[_0x10a0('0xa')](config[_0x10a0('0x9')],{'host':_0x10a0('0xb'),'port':0x18eb});var socket=require(_0x10a0('0xc'))(new Redis(config[_0x10a0('0x9')]));require(_0x10a0('0xd'))[_0x10a0('0xe')](socket);function respondWithRpcPromise(_0x4c84fe,_0x29efa5,_0x393d3f){return new BPromise(function(_0x49ef5f,_0x419fb9){return client[_0x10a0('0xf')](_0x4c84fe,_0x393d3f)[_0x10a0('0x10')](function(_0x269b61){logger[_0x10a0('0x11')](_0x10a0('0x12'),_0x29efa5,_0x10a0('0x13'));logger['debug'](_0x10a0('0x14'),_0x29efa5,'request\x20sent',JSON[_0x10a0('0x15')](_0x269b61));if(_0x269b61[_0x10a0('0x16')]){if(_0x269b61['error'][_0x10a0('0x17')]===0x1f4){logger['error'](_0x10a0('0x12'),_0x29efa5,_0x269b61[_0x10a0('0x16')][_0x10a0('0x18')]);return _0x419fb9(_0x269b61[_0x10a0('0x16')]['message']);}logger['error'](_0x10a0('0x12'),_0x29efa5,_0x269b61[_0x10a0('0x16')]['message']);return _0x49ef5f(_0x269b61[_0x10a0('0x16')]['message']);}else{logger[_0x10a0('0x11')](_0x10a0('0x12'),_0x29efa5,_0x10a0('0x13'));_0x49ef5f(_0x269b61[_0x10a0('0x19')]['message']);}})['catch'](function(_0x1cdcba){logger[_0x10a0('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x29efa5,_0x1cdcba);_0x419fb9(_0x1cdcba);});});}exports['GetVoiceQueue']=function(_0x12b2f9){var _0x3894e9=this;return new Promise(function(_0x2a283e,_0x304b8){return db['VoiceQueue'][_0x10a0('0x1a')]({'raw':_0x12b2f9['options']?_0x12b2f9[_0x10a0('0x1b')][_0x10a0('0x1c')]===undefined?!![]:![]:!![],'where':_0x12b2f9[_0x10a0('0x1b')]?_0x12b2f9[_0x10a0('0x1b')][_0x10a0('0x1d')]||null:null,'attributes':_0x12b2f9['options']?_0x12b2f9[_0x10a0('0x1b')]['attributes']||null:null,'limit':_0x12b2f9['options']?_0x12b2f9[_0x10a0('0x1b')]['limit']||null:null,'include':_0x12b2f9['options']?_0x12b2f9[_0x10a0('0x1b')][_0x10a0('0x1e')]?_[_0x10a0('0x1f')](_0x12b2f9[_0x10a0('0x1b')][_0x10a0('0x1e')],function(_0x20f856){return{'model':db[_0x20f856[_0x10a0('0x20')]],'as':_0x20f856['as'],'attributes':_0x20f856[_0x10a0('0x21')],'include':_0x20f856['include']?_[_0x10a0('0x1f')](_0x20f856['include'],function(_0x528cde){return{'model':db[_0x528cde[_0x10a0('0x20')]],'as':_0x528cde['as'],'attributes':_0x528cde[_0x10a0('0x21')],'include':_0x528cde[_0x10a0('0x1e')]?_[_0x10a0('0x1f')](_0x528cde[_0x10a0('0x1e')],function(_0x30a054){return{'model':db[_0x30a054[_0x10a0('0x20')]],'as':_0x30a054['as'],'attributes':_0x30a054[_0x10a0('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x267025){logger[_0x10a0('0x11')](_0x10a0('0x22'),_0x12b2f9);logger[_0x10a0('0x23')](_0x10a0('0x22'),_0x12b2f9,JSON[_0x10a0('0x15')](_0x267025));_0x2a283e(_0x267025);})['catch'](function(_0x11cf70){logger[_0x10a0('0x16')](_0x10a0('0x22'),_0x11cf70[_0x10a0('0x18')],_0x12b2f9);_0x304b8(_0x3894e9[_0x10a0('0x16')](0x1f4,_0x11cf70[_0x10a0('0x18')]));});});};exports[_0x10a0('0x24')]=function(_0x31057b){var _0x5d71f9=this;return new Promise(function(_0x1c24e4,_0x334b0a){return db[_0x10a0('0x25')]['find']({'raw':_0x31057b[_0x10a0('0x1b')]?_0x31057b[_0x10a0('0x1b')][_0x10a0('0x1c')]===undefined?!![]:![]:!![],'where':_0x31057b['options']?_0x31057b[_0x10a0('0x1b')][_0x10a0('0x1d')]||null:null,'attributes':_0x31057b['options']?_0x31057b[_0x10a0('0x1b')]['attributes']||null:null,'include':_0x31057b[_0x10a0('0x1b')]?_0x31057b[_0x10a0('0x1b')]['include']?_[_0x10a0('0x1f')](_0x31057b[_0x10a0('0x1b')][_0x10a0('0x1e')],function(_0x1d2125){return{'model':db[_0x1d2125[_0x10a0('0x20')]],'as':_0x1d2125['as'],'attributes':_0x1d2125[_0x10a0('0x21')],'include':_0x1d2125['include']?_['map'](_0x1d2125[_0x10a0('0x1e')],function(_0x389319){return{'model':db[_0x389319[_0x10a0('0x20')]],'as':_0x389319['as'],'attributes':_0x389319[_0x10a0('0x21')],'include':_0x389319[_0x10a0('0x1e')]?_[_0x10a0('0x1f')](_0x389319[_0x10a0('0x1e')],function(_0x209d8d){return{'model':db[_0x209d8d['model']],'as':_0x209d8d['as'],'attributes':_0x209d8d[_0x10a0('0x21')]};}):[]};}):[]};}):[]:[]})[_0x10a0('0x10')](function(_0x18da40){logger[_0x10a0('0x11')]('ShowVoiceQueue',_0x31057b);logger[_0x10a0('0x23')]('ShowVoiceQueue',_0x31057b,JSON[_0x10a0('0x15')](_0x18da40));_0x1c24e4(_0x18da40);})[_0x10a0('0x26')](function(_0x340667){logger[_0x10a0('0x16')]('ShowVoiceQueue',_0x340667[_0x10a0('0x18')],_0x31057b);_0x334b0a(_0x5d71f9[_0x10a0('0x16')](0x1f4,_0x340667[_0x10a0('0x18')]));});});};
\ No newline at end of file
+var _0xee6a=['register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','attributes','limit','map','model','include','ShowVoiceQueue','raw','where','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0xee6a,0x18c));var _0xaee6=function(_0x59fc33,_0x2e182d){_0x59fc33=_0x59fc33-0x0;var _0x39066f=_0xee6a[_0x59fc33];return _0x39066f;};'use strict';var _=require(_0xaee6('0x0'));var util=require('util');var moment=require(_0xaee6('0x1'));var BPromise=require(_0xaee6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaee6('0x3'));var db=require(_0xaee6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaee6('0x5'))('rpc');var config=require(_0xaee6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaee6('0x7')][_0xaee6('0x8')]({'port':0x232a});config[_0xaee6('0x9')]=_['defaults'](config[_0xaee6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xaee6('0xa'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0xaee6('0xb')](socket);function respondWithRpcPromise(_0x117a31,_0x4ce197,_0x490e40){return new BPromise(function(_0x12ec7b,_0x3d67bb){return client[_0xaee6('0xc')](_0x117a31,_0x490e40)[_0xaee6('0xd')](function(_0x5dd832){logger[_0xaee6('0xe')](_0xaee6('0xf'),_0x4ce197,_0xaee6('0x10'));logger[_0xaee6('0x11')](_0xaee6('0x12'),_0x4ce197,_0xaee6('0x10'),JSON[_0xaee6('0x13')](_0x5dd832));if(_0x5dd832['error']){if(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x15')]===0x1f4){logger['error'](_0xaee6('0xf'),_0x4ce197,_0x5dd832[_0xaee6('0x14')]['message']);return _0x3d67bb(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x16')]);}logger[_0xaee6('0x14')](_0xaee6('0xf'),_0x4ce197,_0x5dd832[_0xaee6('0x14')]['message']);return _0x12ec7b(_0x5dd832[_0xaee6('0x14')][_0xaee6('0x16')]);}else{logger[_0xaee6('0xe')](_0xaee6('0xf'),_0x4ce197,_0xaee6('0x10'));_0x12ec7b(_0x5dd832[_0xaee6('0x17')][_0xaee6('0x16')]);}})[_0xaee6('0x18')](function(_0x2f8196){logger['error'](_0xaee6('0xf'),_0x4ce197,_0x2f8196);_0x3d67bb(_0x2f8196);});});}exports[_0xaee6('0x19')]=function(_0x5f21e1){var _0x2a8030=this;return new Promise(function(_0x3d5535,_0xb27fee){return db[_0xaee6('0x1a')][_0xaee6('0x1b')]({'raw':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1['options']['raw']===undefined?!![]:![]:!![],'where':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')]['where']||null:null,'attributes':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')][_0xaee6('0x1d')]||null:null,'limit':_0x5f21e1['options']?_0x5f21e1[_0xaee6('0x1c')][_0xaee6('0x1e')]||null:null,'include':_0x5f21e1[_0xaee6('0x1c')]?_0x5f21e1[_0xaee6('0x1c')]['include']?_[_0xaee6('0x1f')](_0x5f21e1[_0xaee6('0x1c')]['include'],function(_0x3cbb20){return{'model':db[_0x3cbb20[_0xaee6('0x20')]],'as':_0x3cbb20['as'],'attributes':_0x3cbb20[_0xaee6('0x1d')],'include':_0x3cbb20[_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x3cbb20['include'],function(_0x15dbd7){return{'model':db[_0x15dbd7[_0xaee6('0x20')]],'as':_0x15dbd7['as'],'attributes':_0x15dbd7[_0xaee6('0x1d')],'include':_0x15dbd7[_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x15dbd7[_0xaee6('0x21')],function(_0xd90fb4){return{'model':db[_0xd90fb4[_0xaee6('0x20')]],'as':_0xd90fb4['as'],'attributes':_0xd90fb4[_0xaee6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xaee6('0xd')](function(_0x2332fa){logger[_0xaee6('0xe')](_0xaee6('0x19'),_0x5f21e1);logger[_0xaee6('0x11')]('GetVoiceQueue',_0x5f21e1,JSON[_0xaee6('0x13')](_0x2332fa));_0x3d5535(_0x2332fa);})['catch'](function(_0x32c855){logger[_0xaee6('0x14')](_0xaee6('0x19'),_0x32c855[_0xaee6('0x16')],_0x5f21e1);_0xb27fee(_0x2a8030[_0xaee6('0x14')](0x1f4,_0x32c855[_0xaee6('0x16')]));});});};exports[_0xaee6('0x22')]=function(_0x29caed){var _0x249e03=this;return new Promise(function(_0x101c8e,_0x40c324){return db[_0xaee6('0x1a')]['find']({'raw':_0x29caed[_0xaee6('0x1c')]?_0x29caed[_0xaee6('0x1c')][_0xaee6('0x23')]===undefined?!![]:![]:!![],'where':_0x29caed['options']?_0x29caed['options'][_0xaee6('0x24')]||null:null,'attributes':_0x29caed['options']?_0x29caed[_0xaee6('0x1c')]['attributes']||null:null,'include':_0x29caed[_0xaee6('0x1c')]?_0x29caed[_0xaee6('0x1c')][_0xaee6('0x21')]?_[_0xaee6('0x1f')](_0x29caed[_0xaee6('0x1c')][_0xaee6('0x21')],function(_0x10eead){return{'model':db[_0x10eead[_0xaee6('0x20')]],'as':_0x10eead['as'],'attributes':_0x10eead[_0xaee6('0x1d')],'include':_0x10eead[_0xaee6('0x21')]?_['map'](_0x10eead[_0xaee6('0x21')],function(_0x3993c4){return{'model':db[_0x3993c4[_0xaee6('0x20')]],'as':_0x3993c4['as'],'attributes':_0x3993c4[_0xaee6('0x1d')],'include':_0x3993c4[_0xaee6('0x21')]?_['map'](_0x3993c4[_0xaee6('0x21')],function(_0x3fc28a){return{'model':db[_0x3fc28a[_0xaee6('0x20')]],'as':_0x3fc28a['as'],'attributes':_0x3fc28a[_0xaee6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xaee6('0xd')](function(_0x3821f6){logger[_0xaee6('0xe')](_0xaee6('0x22'),_0x29caed);logger['debug']('ShowVoiceQueue',_0x29caed,JSON[_0xaee6('0x13')](_0x3821f6));_0x101c8e(_0x3821f6);})[_0xaee6('0x18')](function(_0x30ab82){logger['error']('ShowVoiceQueue',_0x30ab82[_0xaee6('0x16')],_0x29caed);_0x40c324(_0x249e03[_0xaee6('0x14')](0x1f4,_0x30ab82[_0xaee6('0x16')]));});});};
\ No newline at end of file
index 5da703d..ba0fef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57c=['length','voiceQueue:','./voiceQueue.events','save','remove'];(function(_0x3ade36,_0x269006){var _0x1cf00b=function(_0x59198e){while(--_0x59198e){_0x3ade36['push'](_0x3ade36['shift']());}};_0x1cf00b(++_0x269006);}(_0xb57c,0xca));var _0xcb57=function(_0x19c6fe,_0x707452){_0x19c6fe=_0x19c6fe-0x0;var _0x5b72c7=_0xb57c[_0x19c6fe];return _0x5b72c7;};'use strict';var VoiceQueueEvents=require(_0xcb57('0x0'));var events=[_0xcb57('0x1'),_0xcb57('0x2'),'update'];function createListener(_0x56b475,_0xd29901){return function(_0x3a5707){_0xd29901['emit'](_0x56b475,_0x3a5707);};}function removeListener(_0x51a6f7,_0x3a2119){return function(){VoiceQueueEvents['removeListener'](_0x51a6f7,_0x3a2119);};}exports['register']=function(_0x15778c){for(var _0x5d0503=0x0,_0x518d49=events[_0xcb57('0x3')];_0x5d0503<_0x518d49;_0x5d0503++){var _0x3bb737=events[_0x5d0503];var _0x255f0d=createListener(_0xcb57('0x4')+_0x3bb737,_0x15778c);VoiceQueueEvents['on'](_0x3bb737,_0x255f0d);}};
\ No newline at end of file
+var _0x5faf=['./voiceQueue.events','save','remove','update','emit','removeListener','length','voiceQueue:'];(function(_0x2242a1,_0x38f44d){var _0x2c298b=function(_0x4f4246){while(--_0x4f4246){_0x2242a1['push'](_0x2242a1['shift']());}};_0x2c298b(++_0x38f44d);}(_0x5faf,0x1a8));var _0xf5fa=function(_0x2ae9f6,_0xd4264e){_0x2ae9f6=_0x2ae9f6-0x0;var _0xc2aead=_0x5faf[_0x2ae9f6];return _0xc2aead;};'use strict';var VoiceQueueEvents=require(_0xf5fa('0x0'));var events=[_0xf5fa('0x1'),_0xf5fa('0x2'),_0xf5fa('0x3')];function createListener(_0x53feb2,_0x3b25cb){return function(_0x1881ba){_0x3b25cb[_0xf5fa('0x4')](_0x53feb2,_0x1881ba);};}function removeListener(_0x254304,_0x58c775){return function(){VoiceQueueEvents[_0xf5fa('0x5')](_0x254304,_0x58c775);};}exports['register']=function(_0x45474f){for(var _0x106c69=0x0,_0x26e33e=events[_0xf5fa('0x6')];_0x106c69<_0x26e33e;_0x106c69++){var _0x1323ac=events[_0x106c69];var _0x3b970c=createListener(_0xf5fa('0x7')+_0x1323ac,_0x45474f);VoiceQueueEvents['on'](_0x1323ac,_0x3b970c);}};
\ No newline at end of file
index 593306c..dbb6ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd8=['/index','getVoiceQueuesReport','show','post','create','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x4bfcb2,_0x574f8f){var _0xa01a12=function(_0x4e6e8c){while(--_0x4e6e8c){_0x4bfcb2['push'](_0x4bfcb2['shift']());}};_0xa01a12(++_0x574f8f);}(_0xecd8,0x1ba));var _0x8ecd=function(_0x2ef5de,_0x29c687){_0x2ef5de=_0x2ef5de-0x0;var _0x26675a=_0xecd8[_0x2ef5de];return _0x26675a;};'use strict';var multer=require(_0x8ecd('0x0'));var util=require(_0x8ecd('0x1'));var path=require('path');var timeout=require(_0x8ecd('0x2'));var express=require(_0x8ecd('0x3'));var router=express[_0x8ecd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8ecd('0x5'));var interaction=require(_0x8ecd('0x6'));var config=require(_0x8ecd('0x7'));var controller=require(_0x8ecd('0x8'));router['get']('/',auth[_0x8ecd('0x9')](),controller[_0x8ecd('0xa')]);router[_0x8ecd('0xb')](_0x8ecd('0xc'),auth['isAuthenticated'](),controller[_0x8ecd('0xd')]);router[_0x8ecd('0xb')](_0x8ecd('0xe'),auth['isAuthenticated'](),controller[_0x8ecd('0xf')]);router[_0x8ecd('0xb')]('/:id',auth[_0x8ecd('0x9')](),controller[_0x8ecd('0x10')]);router[_0x8ecd('0x11')]('/',auth[_0x8ecd('0x9')](),controller[_0x8ecd('0x12')]);router[_0x8ecd('0x13')](_0x8ecd('0x14'),auth[_0x8ecd('0x9')](),controller['update']);router[_0x8ecd('0x15')](_0x8ecd('0x14'),auth[_0x8ecd('0x9')](),controller[_0x8ecd('0x16')]);module[_0x8ecd('0x17')]=router;
\ No newline at end of file
+var _0x2b3f=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','destroy','multer','path','connect-timeout'];(function(_0xec9daf,_0x13ba78){var _0x271ec4=function(_0x1b752){while(--_0x1b752){_0xec9daf['push'](_0xec9daf['shift']());}};_0x271ec4(++_0x13ba78);}(_0x2b3f,0x1e1));var _0xf2b3=function(_0x114353,_0x1044a7){_0x114353=_0x114353-0x0;var _0x4a3565=_0x2b3f[_0x114353];return _0x4a3565;};'use strict';var multer=require(_0xf2b3('0x0'));var util=require('util');var path=require(_0xf2b3('0x1'));var timeout=require(_0xf2b3('0x2'));var express=require(_0xf2b3('0x3'));var router=express['Router']();var fs_extra=require(_0xf2b3('0x4'));var auth=require(_0xf2b3('0x5'));var interaction=require(_0xf2b3('0x6'));var config=require(_0xf2b3('0x7'));var controller=require(_0xf2b3('0x8'));router[_0xf2b3('0x9')]('/',auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xb')]);router[_0xf2b3('0x9')](_0xf2b3('0xc'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xd')]);router[_0xf2b3('0x9')](_0xf2b3('0xe'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0xf')]);router[_0xf2b3('0x9')](_0xf2b3('0x10'),auth['isAuthenticated'](),controller[_0xf2b3('0x11')]);router[_0xf2b3('0x12')]('/',auth[_0xf2b3('0xa')](),controller[_0xf2b3('0x13')]);router[_0xf2b3('0x14')](_0xf2b3('0x10'),auth[_0xf2b3('0xa')](),controller['update']);router['delete'](_0xf2b3('0x10'),auth[_0xf2b3('0xa')](),controller[_0xf2b3('0x15')]);module['exports']=router;
\ No newline at end of file
index 95371da..ba9a00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd6=['moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','sequelize'];(function(_0x52170b,_0x395cbd){var _0xfab8f0=function(_0x434441){while(--_0x434441){_0x52170b['push'](_0x52170b['shift']());}};_0xfab8f0(++_0x395cbd);}(_0x6dd6,0x167));var _0x66dd=function(_0x15ed84,_0x589521){_0x15ed84=_0x15ed84-0x0;var _0x426d2b=_0x6dd6[_0x15ed84];return _0x426d2b;};'use strict';var Sequelize=require(_0x66dd('0x0'));var moment=require(_0x66dd('0x1'));module[_0x66dd('0x2')]={'type':{'type':Sequelize[_0x66dd('0x3')]},'uniqueid':{'type':Sequelize[_0x66dd('0x3')]},'calleridnum':{'type':Sequelize[_0x66dd('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x66dd('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x66dd('0x4')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x14e32e){var _0x2b903a=moment(_0x14e32e);var _0x31d5dc=moment(this[_0x66dd('0x5')]('queuecallerjoinAt'))[_0x66dd('0x6')](_0x66dd('0x7'));var _0x445edc=_0x2b903a[_0x66dd('0x8')](_0x31d5dc,_0x66dd('0x9'));this[_0x66dd('0xa')](_0x66dd('0xb'),_0x14e32e);this['setDataValue'](_0x66dd('0xc'),_0x445edc||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x66dd('0xd')]},'queuecallerabandon':{'type':Sequelize[_0x66dd('0xe')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x66dd('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x66dd('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x66dd('0x4')]},'queuecallerexit':{'type':Sequelize[_0x66dd('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x66dd('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x66dd('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x66dd('0xd')]},'channel':{'type':Sequelize[_0x66dd('0x3')]},'connectedlinenum':{'type':Sequelize[_0x66dd('0x3')]},'connectedlinename':{'type':Sequelize[_0x66dd('0x3')]},'accountcode':{'type':Sequelize[_0x66dd('0x3')]},'context':{'type':Sequelize[_0x66dd('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x66dd('0x3')]},'holdtime':{'type':Sequelize[_0x66dd('0xd')]},'mohtime':{'type':Sequelize[_0x66dd('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x66dd('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x66dd('0x3')]},'transfer':{'type':Sequelize[_0x66dd('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x66dd('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x66dd('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x66dd('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x66dd('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x66dd('0xd')],'defaultValue':0x0},'note':{'type':Sequelize[_0x66dd('0x3')]}};
\ No newline at end of file
+var _0x27e0=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','queuecallerleaveAt','holdtime'];(function(_0xf89a62,_0x5e0eec){var _0x44fabf=function(_0x1b3375){while(--_0x1b3375){_0xf89a62['push'](_0xf89a62['shift']());}};_0x44fabf(++_0x5e0eec);}(_0x27e0,0x1e4));var _0x027e=function(_0x41a4c7,_0x542e7c){_0x41a4c7=_0x41a4c7-0x0;var _0x3d11bc=_0x27e0[_0x41a4c7];return _0x3d11bc;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x027e('0x0'));module[_0x027e('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x027e('0x2')]},'calleridnum':{'type':Sequelize[_0x027e('0x2')]},'calleridname':{'type':Sequelize[_0x027e('0x2')]},'queue':{'type':Sequelize[_0x027e('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x027e('0x3')],'set':function(_0x1689f6){var _0x2a7026=moment(_0x1689f6);var _0xa6b2bb=moment(this['getDataValue'](_0x027e('0x4')))[_0x027e('0x5')](_0x027e('0x6'));var _0x47add3=_0x2a7026['diff'](_0xa6b2bb,_0x027e('0x7'));this[_0x027e('0x8')](_0x027e('0x9'),_0x1689f6);this[_0x027e('0x8')](_0x027e('0xa'),_0x47add3||null);}},'position':{'type':Sequelize[_0x027e('0xb')]},'count':{'type':Sequelize[_0x027e('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallerexit':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x027e('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x027e('0x2')],'comment':_0x027e('0xd')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x027e('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x027e('0x2')]},'exten':{'type':Sequelize[_0x027e('0x2')]},'priority':{'type':Sequelize[_0x027e('0x2')]},'holdtime':{'type':Sequelize[_0x027e('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x027e('0x2')]},'transfer':{'type':Sequelize[_0x027e('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x027e('0xe')},'transferexten':{'type':Sequelize[_0x027e('0x2')]},'transferuniqueid':{'type':Sequelize[_0x027e('0x2')]},'disposition':{'type':Sequelize[_0x027e('0x2')]},'secondDisposition':{'type':Sequelize[_0x027e('0x2')]},'thirdDisposition':{'type':Sequelize[_0x027e('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x027e('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x027e('0x2')]}};
\ No newline at end of file
index 1793d56..b879635 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70d=['update','describe','getVoiceQueuesReport','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','name','send','map','VoiceQueueReport','rawAttributes','type','key','query','keys','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0xd70d,0x153));var _0xdd70=function(_0x1cfa64,_0x1d8a82){_0x1cfa64=_0x1cfa64-0x0;var _0x1f0d2a=_0xd70d[_0x1cfa64];return _0x1f0d2a;};'use strict';var emlformat=require(_0xdd70('0x0'));var rimraf=require(_0xdd70('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdd70('0x2'));var Mustache=require(_0xdd70('0x3'));var util=require(_0xdd70('0x4'));var path=require(_0xdd70('0x5'));var sox=require(_0xdd70('0x6'));var csv=require(_0xdd70('0x7'));var ejs=require(_0xdd70('0x8'));var fs=require('fs');var fs_extra=require(_0xdd70('0x9'));var _=require(_0xdd70('0xa'));var squel=require(_0xdd70('0xb'));var crypto=require(_0xdd70('0xc'));var jsforce=require(_0xdd70('0xd'));var deskjs=require(_0xdd70('0xe'));var toCsv=require(_0xdd70('0x7'));var querystring=require(_0xdd70('0xf'));var Papa=require(_0xdd70('0x10'));var Redis=require('ioredis');var authService=require(_0xdd70('0x11'));var qs=require(_0xdd70('0x12'));var as=require(_0xdd70('0x13'));var hardwareService=require(_0xdd70('0x14'));var logger=require(_0xdd70('0x15'))('api');var utils=require(_0xdd70('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdd70('0x17'))['db'];config[_0xdd70('0x18')]=_[_0xdd70('0x19')](config[_0xdd70('0x18')],{'host':_0xdd70('0x1a'),'port':0x18eb});var socket=require(_0xdd70('0x1b'))(new Redis(config[_0xdd70('0x18')]));require(_0xdd70('0x1c'))[_0xdd70('0x1d')](socket);function respondWithStatusCode(_0x5137db,_0xbe7c6a){_0xbe7c6a=_0xbe7c6a||0xcc;return function(_0x4e2d22){if(_0x4e2d22){return _0x5137db[_0xdd70('0x1e')](_0xbe7c6a);}return _0x5137db['status'](_0xbe7c6a)['end']();};}function respondWithResult(_0x22fee3,_0xd4dc4e){_0xd4dc4e=_0xd4dc4e||0xc8;return function(_0x4e6c61){if(_0x4e6c61){return _0x22fee3[_0xdd70('0x1f')](_0xd4dc4e)[_0xdd70('0x20')](_0x4e6c61);}};}function respondWithFilteredResult(_0xd3c413,_0x4d5e83){return function(_0x5c32be){if(_0x5c32be){var _0xf5a4c1=typeof _0x4d5e83[_0xdd70('0x21')]===_0xdd70('0x22')&&typeof _0x4d5e83[_0xdd70('0x23')]===_0xdd70('0x22');var _0x462281=_0x5c32be['count'];var _0x4585c3=_0xf5a4c1?0x0:_0x4d5e83[_0xdd70('0x21')];var _0x27e6d7=_0xf5a4c1?_0x5c32be[_0xdd70('0x24')]:_0x4d5e83[_0xdd70('0x21')]+_0x4d5e83['limit'];var _0xafbb12;if(_0x27e6d7>=_0x462281){_0x27e6d7=_0x462281;_0xafbb12=0xc8;}else{_0xafbb12=0xce;}_0xd3c413['status'](_0xafbb12);return _0xd3c413[_0xdd70('0x25')](_0xdd70('0x26'),_0x4585c3+'-'+_0x27e6d7+'/'+_0x462281)[_0xdd70('0x20')](_0x5c32be);}return null;};}function patchUpdates(_0xac1566){return function(_0x5d68d8){try{jsonpatch[_0xdd70('0x27')](_0x5d68d8,_0xac1566,!![]);}catch(_0x56ffcc){return BPromise[_0xdd70('0x28')](_0x56ffcc);}return _0x5d68d8[_0xdd70('0x29')]();};}function saveUpdates(_0x109660,_0x567d7d){return function(_0x29f1b1){if(_0x29f1b1){return _0x29f1b1['update'](_0x109660)[_0xdd70('0x2a')](function(_0x23d8ac){return _0x23d8ac;});}return null;};}function removeEntity(_0x8c16af,_0x41eb91){return function(_0x1c8d3d){if(_0x1c8d3d){return _0x1c8d3d['destroy']()[_0xdd70('0x2a')](function(){_0x8c16af['status'](0xcc)[_0xdd70('0x2b')]();});}};}function handleEntityNotFound(_0x4a900d,_0x1147fd){return function(_0x29fb87){if(!_0x29fb87){_0x4a900d['sendStatus'](0x194);}return _0x29fb87;};}function handleError(_0x87ff95,_0x37fb36){_0x37fb36=_0x37fb36||0x1f4;return function(_0x105fc9){logger[_0xdd70('0x2c')](_0x105fc9[_0xdd70('0x2d')]);if(_0x105fc9[_0xdd70('0x2e')]){delete _0x105fc9[_0xdd70('0x2e')];}_0x87ff95[_0xdd70('0x1f')](_0x37fb36)[_0xdd70('0x2f')](_0x105fc9);};}exports['index']=function(_0xbf0224,_0x35619f){var _0x239ea8={},_0xde9c0e={},_0x557238={'count':0x0,'rows':[]};var _0x14cc9c=_[_0xdd70('0x30')](db[_0xdd70('0x31')][_0xdd70('0x32')],function(_0x1fcc01){return{'name':_0x1fcc01['fieldName'],'type':_0x1fcc01[_0xdd70('0x33')][_0xdd70('0x34')]};});_0xde9c0e['model']=_[_0xdd70('0x30')](_0x14cc9c,_0xdd70('0x2e'));_0xde9c0e[_0xdd70('0x35')]=_[_0xdd70('0x36')](_0xbf0224[_0xdd70('0x35')]);_0xde9c0e['filters']=_['intersection'](_0xde9c0e['model'],_0xde9c0e[_0xdd70('0x35')]);_0x239ea8['attributes']=_['intersection'](_0xde9c0e[_0xdd70('0x37')],qs[_0xdd70('0x38')](_0xbf0224[_0xdd70('0x35')][_0xdd70('0x38')]));_0x239ea8[_0xdd70('0x39')]=_0x239ea8[_0xdd70('0x39')][_0xdd70('0x3a')]?_0x239ea8[_0xdd70('0x39')]:_0xde9c0e[_0xdd70('0x37')];if(!_0xbf0224[_0xdd70('0x35')][_0xdd70('0x3b')](_0xdd70('0x3c'))){_0x239ea8[_0xdd70('0x23')]=qs['limit'](_0xbf0224[_0xdd70('0x35')]['limit']);_0x239ea8[_0xdd70('0x21')]=qs[_0xdd70('0x21')](_0xbf0224[_0xdd70('0x35')][_0xdd70('0x21')]);}_0x239ea8[_0xdd70('0x3d')]=qs[_0xdd70('0x3e')](_0xbf0224[_0xdd70('0x35')][_0xdd70('0x3e')]);_0x239ea8[_0xdd70('0x3f')]=qs['filters'](_[_0xdd70('0x40')](_0xbf0224[_0xdd70('0x35')],_0xde9c0e[_0xdd70('0x41')]),_0x14cc9c);if(_0xbf0224[_0xdd70('0x35')][_0xdd70('0x42')]){_0x239ea8['where']=_[_0xdd70('0x43')](_0x239ea8['where'],{'$or':_[_0xdd70('0x30')](_0x14cc9c,function(_0x5acefb){if(_0x5acefb['type']!==_0xdd70('0x44')){var _0x36553d={};_0x36553d[_0x5acefb[_0xdd70('0x2e')]]={'$like':'%'+_0xbf0224[_0xdd70('0x35')][_0xdd70('0x42')]+'%'};return _0x36553d;}})});}_0x239ea8=_[_0xdd70('0x43')]({},_0x239ea8,_0xbf0224[_0xdd70('0x45')]);var _0x44cad0={'where':_0x239ea8[_0xdd70('0x3f')]};return db[_0xdd70('0x31')][_0xdd70('0x24')](_0x44cad0)['then'](function(_0x315cb9){_0x557238[_0xdd70('0x24')]=_0x315cb9;if(_0xbf0224['query'][_0xdd70('0x46')]){_0x239ea8[_0xdd70('0x47')]=[{'all':!![]}];}return db[_0xdd70('0x31')][_0xdd70('0x48')](_0x239ea8);})[_0xdd70('0x2a')](function(_0x3738c5){_0x557238[_0xdd70('0x49')]=_0x3738c5;return _0x557238;})[_0xdd70('0x2a')](respondWithFilteredResult(_0x35619f,_0x239ea8))[_0xdd70('0x4a')](handleError(_0x35619f,null));};exports[_0xdd70('0x4b')]=function(_0x13318c,_0x338ae1){var _0x408576={'raw':![],'where':{'id':_0x13318c[_0xdd70('0x4c')]['id']}},_0x3cf880={};_0x3cf880[_0xdd70('0x37')]=_[_0xdd70('0x36')](db[_0xdd70('0x31')][_0xdd70('0x32')]);_0x3cf880[_0xdd70('0x35')]=_[_0xdd70('0x36')](_0x13318c[_0xdd70('0x35')]);_0x3cf880[_0xdd70('0x41')]=_[_0xdd70('0x4d')](_0x3cf880[_0xdd70('0x37')],_0x3cf880[_0xdd70('0x35')]);_0x408576[_0xdd70('0x39')]=_[_0xdd70('0x4d')](_0x3cf880[_0xdd70('0x37')],qs[_0xdd70('0x38')](_0x13318c[_0xdd70('0x35')][_0xdd70('0x38')]));_0x408576[_0xdd70('0x39')]=_0x408576[_0xdd70('0x39')]['length']?_0x408576['attributes']:_0x3cf880[_0xdd70('0x37')];if(_0x13318c[_0xdd70('0x35')][_0xdd70('0x46')]){_0x408576[_0xdd70('0x47')]=[{'all':!![]}];}_0x408576=_[_0xdd70('0x43')]({},_0x408576,_0x13318c[_0xdd70('0x45')]);return db['VoiceQueueReport'][_0xdd70('0x4e')](_0x408576)[_0xdd70('0x2a')](handleEntityNotFound(_0x338ae1,null))[_0xdd70('0x2a')](respondWithResult(_0x338ae1,null))[_0xdd70('0x4a')](handleError(_0x338ae1,null));};exports[_0xdd70('0x4f')]=function(_0x266997,_0x2733d0){return db['VoiceQueueReport'][_0xdd70('0x4f')](_0x266997[_0xdd70('0x50')],{})[_0xdd70('0x2a')](respondWithResult(_0x2733d0,0xc9))['catch'](handleError(_0x2733d0,null));};exports[_0xdd70('0x51')]=function(_0x4a33e0,_0x2da897){if(_0x4a33e0[_0xdd70('0x50')]['id']){delete _0x4a33e0[_0xdd70('0x50')]['id'];}return db[_0xdd70('0x31')][_0xdd70('0x4e')]({'where':{'id':_0x4a33e0['params']['id']}})['then'](handleEntityNotFound(_0x2da897,null))[_0xdd70('0x2a')](saveUpdates(_0x4a33e0[_0xdd70('0x50')],null))[_0xdd70('0x2a')](respondWithResult(_0x2da897,null))[_0xdd70('0x4a')](handleError(_0x2da897,null));};exports['destroy']=function(_0x2b208b,_0x20ddd0){return db[_0xdd70('0x31')][_0xdd70('0x4e')]({'where':{'id':_0x2b208b[_0xdd70('0x4c')]['id']}})['then'](handleEntityNotFound(_0x20ddd0,null))[_0xdd70('0x2a')](removeEntity(_0x20ddd0,null))[_0xdd70('0x4a')](handleError(_0x20ddd0,null));};exports[_0xdd70('0x52')]=function(_0x2af452,_0x298ecf){return db[_0xdd70('0x31')][_0xdd70('0x52')]()['then'](respondWithResult(_0x298ecf,null))[_0xdd70('0x4a')](handleError(_0x298ecf,null));};exports[_0xdd70('0x53')]=function(_0x3d0988,_0x59e1ae){var _0x4bf6ec={},_0x31cee1={},_0x9d77ce={'count':0x0,'rows':[]};_0x31cee1[_0xdd70('0x37')]=_['keys'](db[_0xdd70('0x31')][_0xdd70('0x32')]);_0x31cee1['query']=_[_0xdd70('0x36')](_0x3d0988[_0xdd70('0x35')]);_0x31cee1['filters']=_[_0xdd70('0x4d')](_0x31cee1[_0xdd70('0x37')],_0x31cee1['query']);_0x4bf6ec[_0xdd70('0x39')]=_['intersection'](_0x31cee1[_0xdd70('0x37')],qs[_0xdd70('0x38')](_0x3d0988[_0xdd70('0x35')]['fields']));_0x4bf6ec[_0xdd70('0x39')]=_0x4bf6ec[_0xdd70('0x39')][_0xdd70('0x3a')]?_0x4bf6ec[_0xdd70('0x39')]:_0x31cee1[_0xdd70('0x37')];if(!_0x3d0988[_0xdd70('0x35')][_0xdd70('0x3b')](_0xdd70('0x3c'))){_0x4bf6ec[_0xdd70('0x23')]=qs['limit'](_0x3d0988[_0xdd70('0x35')][_0xdd70('0x23')]);_0x4bf6ec[_0xdd70('0x21')]=qs[_0xdd70('0x21')](_0x3d0988[_0xdd70('0x35')][_0xdd70('0x21')]);}_0x4bf6ec[_0xdd70('0x3d')]=qs['sort'](_0x3d0988[_0xdd70('0x35')]['sort']);_0x4bf6ec[_0xdd70('0x3f')]=qs[_0xdd70('0x41')](_['pick'](_0x3d0988['query'],_0x31cee1[_0xdd70('0x41')]));if(_0x3d0988['query'][_0xdd70('0x42')]){_0x4bf6ec[_0xdd70('0x3f')]=_[_0xdd70('0x43')](_0x4bf6ec[_0xdd70('0x3f')],{'$or':_['map'](_0x4bf6ec[_0xdd70('0x39')],function(_0x403e56){var _0xc7cc4b={};_0xc7cc4b[_0x403e56]={'$like':'%'+_0x3d0988[_0xdd70('0x35')][_0xdd70('0x42')]+'%'};return _0xc7cc4b;})});}_0x4bf6ec=_[_0xdd70('0x43')]({},_0x4bf6ec,_0x3d0988[_0xdd70('0x45')]);var _0x2cf92c={'where':_0x4bf6ec[_0xdd70('0x3f')]};return db['VoiceQueueReport'][_0xdd70('0x24')](_0x2cf92c)[_0xdd70('0x2a')](function(_0x5a1812){_0x9d77ce['count']=_0x5a1812;if(_0x3d0988['query'][_0xdd70('0x46')]){_0x4bf6ec[_0xdd70('0x47')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xdd70('0x48')](_0x4bf6ec);})['then'](function(_0x5fa72f){_0x9d77ce[_0xdd70('0x49')]=_0x5fa72f;return _0x9d77ce;})['then'](respondWithFilteredResult(_0x59e1ae,_0x4bf6ec,'getVoiceQueuesReport'))[_0xdd70('0x4a')](handleError(_0x59e1ae,null,_0xdd70('0x53')));};
\ No newline at end of file
+var _0x8aa2=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./voiceQueueReport.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','error','stack','name','send','index','map','VoiceQueueReport','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','catch','params','rawAttributes','options','find','create','body','destroy','describe','getVoiceQueuesReport','hasOwnProperty','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x59c888,_0xdb422c){var _0x3bd480=function(_0x1d6daa){while(--_0x1d6daa){_0x59c888['push'](_0x59c888['shift']());}};_0x3bd480(++_0xdb422c);}(_0x8aa2,0x13f));var _0x28aa=function(_0x4985aa,_0x1072b3){_0x4985aa=_0x4985aa-0x0;var _0x4e16c6=_0x8aa2[_0x4985aa];return _0x4e16c6;};'use strict';var emlformat=require(_0x28aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28aa('0x1'));var jsonpatch=require(_0x28aa('0x2'));var rp=require(_0x28aa('0x3'));var moment=require(_0x28aa('0x4'));var BPromise=require(_0x28aa('0x5'));var Mustache=require(_0x28aa('0x6'));var util=require(_0x28aa('0x7'));var path=require(_0x28aa('0x8'));var sox=require(_0x28aa('0x9'));var csv=require(_0x28aa('0xa'));var ejs=require(_0x28aa('0xb'));var fs=require('fs');var fs_extra=require(_0x28aa('0xc'));var _=require(_0x28aa('0xd'));var squel=require(_0x28aa('0xe'));var crypto=require(_0x28aa('0xf'));var jsforce=require(_0x28aa('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x28aa('0xa'));var querystring=require(_0x28aa('0x11'));var Papa=require(_0x28aa('0x12'));var Redis=require(_0x28aa('0x13'));var authService=require(_0x28aa('0x14'));var qs=require(_0x28aa('0x15'));var as=require(_0x28aa('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x28aa('0x17'));var utils=require('../../config/utils');var config=require(_0x28aa('0x18'));var licenseUtil=require(_0x28aa('0x19'));var db=require('../../mysqldb')['db'];config[_0x28aa('0x1a')]=_[_0x28aa('0x1b')](config[_0x28aa('0x1a')],{'host':_0x28aa('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x28aa('0x1d'))['register'](socket);function respondWithStatusCode(_0x241baa,_0x21cdb3){_0x21cdb3=_0x21cdb3||0xcc;return function(_0x24a3e6){if(_0x24a3e6){return _0x241baa[_0x28aa('0x1e')](_0x21cdb3);}return _0x241baa[_0x28aa('0x1f')](_0x21cdb3)['end']();};}function respondWithResult(_0x405474,_0x4358f0){_0x4358f0=_0x4358f0||0xc8;return function(_0x582688){if(_0x582688){return _0x405474['status'](_0x4358f0)['json'](_0x582688);}};}function respondWithFilteredResult(_0x1dad00,_0x1850b6){return function(_0x219bf6){if(_0x219bf6){var _0x327a32=typeof _0x1850b6[_0x28aa('0x20')]===_0x28aa('0x21')&&typeof _0x1850b6[_0x28aa('0x22')]===_0x28aa('0x21');var _0x281e97=_0x219bf6[_0x28aa('0x23')];var _0x3aa912=_0x327a32?0x0:_0x1850b6['offset'];var _0x1604ec=_0x327a32?_0x219bf6['count']:_0x1850b6[_0x28aa('0x20')]+_0x1850b6['limit'];var _0x39a21f;if(_0x1604ec>=_0x281e97){_0x1604ec=_0x281e97;_0x39a21f=0xc8;}else{_0x39a21f=0xce;}_0x1dad00[_0x28aa('0x1f')](_0x39a21f);return _0x1dad00['set'](_0x28aa('0x24'),_0x3aa912+'-'+_0x1604ec+'/'+_0x281e97)[_0x28aa('0x25')](_0x219bf6);}return null;};}function patchUpdates(_0x4b6f20){return function(_0x2c022c){try{jsonpatch[_0x28aa('0x26')](_0x2c022c,_0x4b6f20,!![]);}catch(_0x23ada3){return BPromise[_0x28aa('0x27')](_0x23ada3);}return _0x2c022c['save']();};}function saveUpdates(_0x434ef7,_0x42edba){return function(_0x7677be){if(_0x7677be){return _0x7677be[_0x28aa('0x28')](_0x434ef7)[_0x28aa('0x29')](function(_0x19e944){return _0x19e944;});}return null;};}function removeEntity(_0x40cf91,_0x42054c){return function(_0x5732a6){if(_0x5732a6){return _0x5732a6['destroy']()[_0x28aa('0x29')](function(){_0x40cf91[_0x28aa('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eba61,_0x1807a5){return function(_0x39d958){if(!_0x39d958){_0x4eba61[_0x28aa('0x1e')](0x194);}return _0x39d958;};}function handleError(_0xbb3f3a,_0x2a8e57){_0x2a8e57=_0x2a8e57||0x1f4;return function(_0xa63972){logger[_0x28aa('0x2a')](_0xa63972[_0x28aa('0x2b')]);if(_0xa63972[_0x28aa('0x2c')]){delete _0xa63972[_0x28aa('0x2c')];}_0xbb3f3a['status'](_0x2a8e57)[_0x28aa('0x2d')](_0xa63972);};}exports[_0x28aa('0x2e')]=function(_0x2218fb,_0x1d11f4){var _0x539287={},_0x25f3cb={},_0x395fa5={'count':0x0,'rows':[]};var _0x41278e=_[_0x28aa('0x2f')](db[_0x28aa('0x30')]['rawAttributes'],function(_0x2521c1){return{'name':_0x2521c1[_0x28aa('0x31')],'type':_0x2521c1[_0x28aa('0x32')][_0x28aa('0x33')]};});_0x25f3cb['model']=_[_0x28aa('0x2f')](_0x41278e,_0x28aa('0x2c'));_0x25f3cb[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x2218fb[_0x28aa('0x34')]);_0x25f3cb['filters']=_[_0x28aa('0x36')](_0x25f3cb['model'],_0x25f3cb['query']);_0x539287[_0x28aa('0x37')]=_['intersection'](_0x25f3cb[_0x28aa('0x38')],qs[_0x28aa('0x39')](_0x2218fb[_0x28aa('0x34')]['fields']));_0x539287[_0x28aa('0x37')]=_0x539287[_0x28aa('0x37')][_0x28aa('0x3a')]?_0x539287['attributes']:_0x25f3cb['model'];if(!_0x2218fb['query']['hasOwnProperty'](_0x28aa('0x3b'))){_0x539287['limit']=qs['limit'](_0x2218fb[_0x28aa('0x34')]['limit']);_0x539287[_0x28aa('0x20')]=qs[_0x28aa('0x20')](_0x2218fb[_0x28aa('0x34')][_0x28aa('0x20')]);}_0x539287[_0x28aa('0x3c')]=qs['sort'](_0x2218fb[_0x28aa('0x34')][_0x28aa('0x3d')]);_0x539287[_0x28aa('0x3e')]=qs[_0x28aa('0x3f')](_[_0x28aa('0x40')](_0x2218fb['query'],_0x25f3cb[_0x28aa('0x3f')]),_0x41278e);if(_0x2218fb[_0x28aa('0x34')]['filter']){_0x539287[_0x28aa('0x3e')]=_['merge'](_0x539287[_0x28aa('0x3e')],{'$or':_[_0x28aa('0x2f')](_0x41278e,function(_0x131d2e){if(_0x131d2e['type']!=='VIRTUAL'){var _0x5c5449={};_0x5c5449[_0x131d2e[_0x28aa('0x2c')]]={'$like':'%'+_0x2218fb['query'][_0x28aa('0x41')]+'%'};return _0x5c5449;}})});}_0x539287=_[_0x28aa('0x42')]({},_0x539287,_0x2218fb['options']);var _0x463d35={'where':_0x539287[_0x28aa('0x3e')]};return db[_0x28aa('0x30')][_0x28aa('0x23')](_0x463d35)[_0x28aa('0x29')](function(_0x500559){_0x395fa5[_0x28aa('0x23')]=_0x500559;if(_0x2218fb[_0x28aa('0x34')][_0x28aa('0x43')]){_0x539287[_0x28aa('0x44')]=[{'all':!![]}];}return db[_0x28aa('0x30')][_0x28aa('0x45')](_0x539287);})['then'](function(_0x12a70e){_0x395fa5['rows']=_0x12a70e;return _0x395fa5;})[_0x28aa('0x29')](respondWithFilteredResult(_0x1d11f4,_0x539287))[_0x28aa('0x46')](handleError(_0x1d11f4,null));};exports['show']=function(_0x45b4bf,_0x384f6e){var _0x1ebe5c={'raw':![],'where':{'id':_0x45b4bf[_0x28aa('0x47')]['id']}},_0x4b4164={};_0x4b4164[_0x28aa('0x38')]=_['keys'](db[_0x28aa('0x30')][_0x28aa('0x48')]);_0x4b4164[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x45b4bf[_0x28aa('0x34')]);_0x4b4164[_0x28aa('0x3f')]=_[_0x28aa('0x36')](_0x4b4164[_0x28aa('0x38')],_0x4b4164[_0x28aa('0x34')]);_0x1ebe5c[_0x28aa('0x37')]=_[_0x28aa('0x36')](_0x4b4164['model'],qs[_0x28aa('0x39')](_0x45b4bf[_0x28aa('0x34')][_0x28aa('0x39')]));_0x1ebe5c[_0x28aa('0x37')]=_0x1ebe5c[_0x28aa('0x37')]['length']?_0x1ebe5c[_0x28aa('0x37')]:_0x4b4164[_0x28aa('0x38')];if(_0x45b4bf['query'][_0x28aa('0x43')]){_0x1ebe5c[_0x28aa('0x44')]=[{'all':!![]}];}_0x1ebe5c=_[_0x28aa('0x42')]({},_0x1ebe5c,_0x45b4bf[_0x28aa('0x49')]);return db['VoiceQueueReport'][_0x28aa('0x4a')](_0x1ebe5c)['then'](handleEntityNotFound(_0x384f6e,null))[_0x28aa('0x29')](respondWithResult(_0x384f6e,null))[_0x28aa('0x46')](handleError(_0x384f6e,null));};exports[_0x28aa('0x4b')]=function(_0x2a736a,_0x4afa1b){return db[_0x28aa('0x30')][_0x28aa('0x4b')](_0x2a736a[_0x28aa('0x4c')],{})[_0x28aa('0x29')](respondWithResult(_0x4afa1b,0xc9))[_0x28aa('0x46')](handleError(_0x4afa1b,null));};exports[_0x28aa('0x28')]=function(_0x45b97f,_0x2e56d0){if(_0x45b97f['body']['id']){delete _0x45b97f[_0x28aa('0x4c')]['id'];}return db[_0x28aa('0x30')][_0x28aa('0x4a')]({'where':{'id':_0x45b97f['params']['id']}})['then'](handleEntityNotFound(_0x2e56d0,null))[_0x28aa('0x29')](saveUpdates(_0x45b97f[_0x28aa('0x4c')],null))['then'](respondWithResult(_0x2e56d0,null))[_0x28aa('0x46')](handleError(_0x2e56d0,null));};exports[_0x28aa('0x4d')]=function(_0x397359,_0x4acaa9){return db['VoiceQueueReport'][_0x28aa('0x4a')]({'where':{'id':_0x397359['params']['id']}})[_0x28aa('0x29')](handleEntityNotFound(_0x4acaa9,null))[_0x28aa('0x29')](removeEntity(_0x4acaa9,null))[_0x28aa('0x46')](handleError(_0x4acaa9,null));};exports[_0x28aa('0x4e')]=function(_0x5d8c69,_0x58eea4){return db[_0x28aa('0x30')][_0x28aa('0x4e')]()['then'](respondWithResult(_0x58eea4,null))[_0x28aa('0x46')](handleError(_0x58eea4,null));};exports[_0x28aa('0x4f')]=function(_0x19e25f,_0x1e4dc3){var _0x59d800={},_0xbe9a84={},_0x54cf03={'count':0x0,'rows':[]};_0xbe9a84['model']=_[_0x28aa('0x35')](db[_0x28aa('0x30')][_0x28aa('0x48')]);_0xbe9a84[_0x28aa('0x34')]=_[_0x28aa('0x35')](_0x19e25f['query']);_0xbe9a84[_0x28aa('0x3f')]=_[_0x28aa('0x36')](_0xbe9a84[_0x28aa('0x38')],_0xbe9a84[_0x28aa('0x34')]);_0x59d800[_0x28aa('0x37')]=_[_0x28aa('0x36')](_0xbe9a84[_0x28aa('0x38')],qs['fields'](_0x19e25f['query'][_0x28aa('0x39')]));_0x59d800[_0x28aa('0x37')]=_0x59d800['attributes'][_0x28aa('0x3a')]?_0x59d800[_0x28aa('0x37')]:_0xbe9a84[_0x28aa('0x38')];if(!_0x19e25f[_0x28aa('0x34')][_0x28aa('0x50')](_0x28aa('0x3b'))){_0x59d800[_0x28aa('0x22')]=qs['limit'](_0x19e25f['query'][_0x28aa('0x22')]);_0x59d800['offset']=qs['offset'](_0x19e25f['query']['offset']);}_0x59d800[_0x28aa('0x3c')]=qs[_0x28aa('0x3d')](_0x19e25f['query'][_0x28aa('0x3d')]);_0x59d800[_0x28aa('0x3e')]=qs[_0x28aa('0x3f')](_[_0x28aa('0x40')](_0x19e25f[_0x28aa('0x34')],_0xbe9a84[_0x28aa('0x3f')]));if(_0x19e25f[_0x28aa('0x34')]['filter']){_0x59d800['where']=_[_0x28aa('0x42')](_0x59d800[_0x28aa('0x3e')],{'$or':_[_0x28aa('0x2f')](_0x59d800['attributes'],function(_0x45a328){var _0x3cc2b5={};_0x3cc2b5[_0x45a328]={'$like':'%'+_0x19e25f[_0x28aa('0x34')]['filter']+'%'};return _0x3cc2b5;})});}_0x59d800=_[_0x28aa('0x42')]({},_0x59d800,_0x19e25f[_0x28aa('0x49')]);var _0x2dae63={'where':_0x59d800[_0x28aa('0x3e')]};return db[_0x28aa('0x30')][_0x28aa('0x23')](_0x2dae63)[_0x28aa('0x29')](function(_0x66e9b1){_0x54cf03['count']=_0x66e9b1;if(_0x19e25f[_0x28aa('0x34')]['includeAll']){_0x59d800[_0x28aa('0x44')]=[{'all':!![]}];}return db[_0x28aa('0x30')][_0x28aa('0x45')](_0x59d800);})[_0x28aa('0x29')](function(_0xd0c2ac){_0x54cf03['rows']=_0xd0c2ac;return _0x54cf03;})[_0x28aa('0x29')](respondWithFilteredResult(_0x1e4dc3,_0x59d800,_0x28aa('0x4f')))[_0x28aa('0x46')](handleError(_0x1e4dc3,null,_0x28aa('0x4f')));};
\ No newline at end of file
index 8cf94d8..fd897aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded9=['../../mysqldb','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x2e9984,_0x19e073){var _0x28dd22=function(_0x2a1213){while(--_0x2a1213){_0x2e9984['push'](_0x2e9984['shift']());}};_0x28dd22(++_0x19e073);}(_0xded9,0x15f));var _0x9ded=function(_0x128c03,_0x274252){_0x128c03=_0x128c03-0x0;var _0x5aa723=_0xded9[_0x128c03];return _0x5aa723;};'use strict';var EventEmitter=require(_0x9ded('0x0'));var VoiceQueueReport=require(_0x9ded('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9ded('0x2'),'afterUpdate':'update','afterDestroy':_0x9ded('0x3')};function emitEvent(_0x1dd83f){return function(_0x20c861,_0x5bc0da,_0x3671ee){VoiceQueueReportEvents[_0x9ded('0x4')](_0x1dd83f+':'+_0x20c861['id'],_0x20c861);VoiceQueueReportEvents[_0x9ded('0x4')](_0x1dd83f,_0x20c861);_0x3671ee(null);};}for(var e in events){if(events[_0x9ded('0x5')](e)){var event=events[e];VoiceQueueReport[_0x9ded('0x6')](e,emitEvent(event));}}module[_0x9ded('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xb4cd=['hook','exports','events','../../mysqldb','VoiceQueueReport','save','update','emit'];(function(_0x200766,_0x5114fa){var _0x8cc5d1=function(_0x11d1c3){while(--_0x11d1c3){_0x200766['push'](_0x200766['shift']());}};_0x8cc5d1(++_0x5114fa);}(_0xb4cd,0x72));var _0xdb4c=function(_0x5a1186,_0xf64424){_0x5a1186=_0x5a1186-0x0;var _0x3264c0=_0xb4cd[_0x5a1186];return _0x3264c0;};'use strict';var EventEmitter=require(_0xdb4c('0x0'));var VoiceQueueReport=require(_0xdb4c('0x1'))['db'][_0xdb4c('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdb4c('0x3'),'afterUpdate':_0xdb4c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4b74c2){return function(_0x3d5972,_0x3d5098,_0x14026f){VoiceQueueReportEvents[_0xdb4c('0x5')](_0x4b74c2+':'+_0x3d5972['id'],_0x3d5972);VoiceQueueReportEvents[_0xdb4c('0x5')](_0x4b74c2,_0x3d5972);_0x14026f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xdb4c('0x6')](e,emitEvent(event));}}module[_0xdb4c('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
index b1c4d2b..7ce0d29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21a1=['exports','define','VoiceQueueReport','report_queue','calleridnum','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueueReport.attributes'];(function(_0x40fb93,_0x572590){var _0x470a04=function(_0x25778a){while(--_0x25778a){_0x40fb93['push'](_0x40fb93['shift']());}};_0x470a04(++_0x572590);}(_0x21a1,0x18d));var _0x121a=function(_0x1e3254,_0x33278a){_0x1e3254=_0x1e3254-0x0;var _0x13c46b=_0x21a1[_0x1e3254];return _0x13c46b;};'use strict';var _=require(_0x121a('0x0'));var util=require('util');var logger=require(_0x121a('0x1'))(_0x121a('0x2'));var moment=require(_0x121a('0x3'));var BPromise=require(_0x121a('0x4'));var rp=require(_0x121a('0x5'));var fs=require('fs');var path=require(_0x121a('0x6'));var rimraf=require(_0x121a('0x7'));var config=require('../../config/environment');var attributes=require(_0x121a('0x8'));module[_0x121a('0x9')]=function(_0x3a9b18,_0x15109f){return _0x3a9b18[_0x121a('0xa')](_0x121a('0xb'),attributes,{'tableName':_0x121a('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x121a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb97b=['rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1a1bae,_0x32c63b){var _0x299846=function(_0x38867f){while(--_0x38867f){_0x1a1bae['push'](_0x1a1bae['shift']());}};_0x299846(++_0x32c63b);}(_0xb97b,0xd8));var _0xbb97=function(_0x45cc5b,_0x4e00c8){_0x45cc5b=_0x45cc5b-0x0;var _0x2a8c69=_0xb97b[_0x45cc5b];return _0x2a8c69;};'use strict';var _=require('lodash');var util=require(_0xbb97('0x0'));var logger=require(_0xbb97('0x1'))(_0xbb97('0x2'));var moment=require('moment');var BPromise=require(_0xbb97('0x3'));var rp=require(_0xbb97('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb97('0x5'));var config=require('../../config/environment');var attributes=require(_0xbb97('0x6'));module[_0xbb97('0x7')]=function(_0x47a823,_0x383267){return _0x47a823[_0xbb97('0x8')](_0xbb97('0x9'),attributes,{'tableName':_0xbb97('0xa'),'paranoid':![],'indexes':[{'fields':[_0xbb97('0xb')]},{'fields':[_0xbb97('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6b8ada2..18641e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74b9=['body','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','./voiceQueueReport.socket','register','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map','info','create','CreateVoiceQueueReport','UpdateVoiceQueueReport','update'];(function(_0x32aafe,_0x412387){var _0x9691ef=function(_0x315049){while(--_0x315049){_0x32aafe['push'](_0x32aafe['shift']());}};_0x9691ef(++_0x412387);}(_0x74b9,0x7c));var _0x974b=function(_0x2723c1,_0x546bdc){_0x2723c1=_0x2723c1-0x0;var _0x522561=_0x74b9[_0x2723c1];return _0x522561;};'use strict';var _=require(_0x974b('0x0'));var util=require('util');var moment=require(_0x974b('0x1'));var BPromise=require(_0x974b('0x2'));var rs=require(_0x974b('0x3'));var fs=require('fs');var Redis=require(_0x974b('0x4'));var db=require(_0x974b('0x5'))['db'];var utils=require(_0x974b('0x6'));var logger=require(_0x974b('0x7'))(_0x974b('0x8'));var config=require('../../config/environment');var jayson=require(_0x974b('0x9'));var client=jayson['client'][_0x974b('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x974b('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x974b('0xb')]));require(_0x974b('0xc'))[_0x974b('0xd')](socket);function respondWithRpcPromise(_0x2acda5,_0x2c5aae,_0x159966){return new BPromise(function(_0x46380f,_0x3a33ce){return client['request'](_0x2acda5,_0x159966)[_0x974b('0xe')](function(_0x722ccd){logger['info'](_0x974b('0xf'),_0x2c5aae,_0x974b('0x10'));logger[_0x974b('0x11')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x2c5aae,_0x974b('0x10'),JSON[_0x974b('0x12')](_0x722ccd));if(_0x722ccd[_0x974b('0x13')]){if(_0x722ccd[_0x974b('0x13')][_0x974b('0x14')]===0x1f4){logger[_0x974b('0x13')](_0x974b('0xf'),_0x2c5aae,_0x722ccd[_0x974b('0x13')][_0x974b('0x15')]);return _0x3a33ce(_0x722ccd[_0x974b('0x13')][_0x974b('0x15')]);}logger[_0x974b('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x2c5aae,_0x722ccd[_0x974b('0x13')][_0x974b('0x15')]);return _0x46380f(_0x722ccd[_0x974b('0x13')][_0x974b('0x15')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x2c5aae,_0x974b('0x10'));_0x46380f(_0x722ccd[_0x974b('0x16')][_0x974b('0x15')]);}})[_0x974b('0x17')](function(_0x24afaf){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x2c5aae,_0x24afaf);_0x3a33ce(_0x24afaf);});});}exports[_0x974b('0x18')]=function(_0x3a4752){var _0x1022de=this;return new Promise(function(_0xd5ac09,_0x30dc9a){return db[_0x974b('0x19')][_0x974b('0x1a')]({'raw':_0x3a4752[_0x974b('0x1b')]?_0x3a4752['options'][_0x974b('0x1c')]===undefined?!![]:![]:!![],'where':_0x3a4752['options']?_0x3a4752[_0x974b('0x1b')][_0x974b('0x1d')]||null:null,'attributes':_0x3a4752[_0x974b('0x1b')]?_0x3a4752[_0x974b('0x1b')][_0x974b('0x1e')]||null:null,'limit':_0x3a4752['options']?_0x3a4752['options'][_0x974b('0x1f')]||null:null,'include':_0x3a4752['options']?_0x3a4752[_0x974b('0x1b')]['include']?_['map'](_0x3a4752[_0x974b('0x1b')][_0x974b('0x20')],function(_0x2fb817){return{'model':db[_0x2fb817[_0x974b('0x21')]],'as':_0x2fb817['as'],'attributes':_0x2fb817[_0x974b('0x1e')],'include':_0x2fb817[_0x974b('0x20')]?_['map'](_0x2fb817['include'],function(_0x3bdddb){return{'model':db[_0x3bdddb[_0x974b('0x21')]],'as':_0x3bdddb['as'],'attributes':_0x3bdddb[_0x974b('0x1e')],'include':_0x3bdddb[_0x974b('0x20')]?_[_0x974b('0x22')](_0x3bdddb[_0x974b('0x20')],function(_0x32ca88){return{'model':db[_0x32ca88[_0x974b('0x21')]],'as':_0x32ca88['as'],'attributes':_0x32ca88['attributes']};}):[]};}):[]};}):[]:[]})[_0x974b('0xe')](function(_0x3c89c7){logger[_0x974b('0x23')](_0x974b('0x18'),_0x3a4752);logger[_0x974b('0x11')](_0x974b('0x18'),_0x3a4752,JSON[_0x974b('0x12')](_0x3c89c7));_0xd5ac09(_0x3c89c7);})[_0x974b('0x17')](function(_0x339669){logger[_0x974b('0x13')](_0x974b('0x18'),_0x339669[_0x974b('0x15')],_0x3a4752);_0x30dc9a(_0x1022de['error'](0x1f4,_0x339669[_0x974b('0x15')]));});});};exports['CreateVoiceQueueReport']=function(_0x2c0bc4){var _0x3b29da=this;return new Promise(function(_0x540445,_0x3f658e){return db[_0x974b('0x19')][_0x974b('0x24')](_0x2c0bc4['body'],{'raw':_0x2c0bc4[_0x974b('0x1b')]?_0x2c0bc4[_0x974b('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x974b('0xe')](function(_0x45743d){logger['info'](_0x974b('0x25'),_0x2c0bc4);logger[_0x974b('0x11')](_0x974b('0x25'),_0x2c0bc4,JSON[_0x974b('0x12')](_0x45743d));_0x540445(_0x45743d);})['catch'](function(_0x2d2e0b){logger['error'](_0x974b('0x25'),_0x2d2e0b[_0x974b('0x15')],_0x2c0bc4);_0x3f658e(_0x3b29da['error'](0x1f4,_0x2d2e0b['message']));});});};exports[_0x974b('0x26')]=function(_0x2de072){var _0x168178=this;return new Promise(function(_0x2da1ff,_0x46bf84){return db[_0x974b('0x19')][_0x974b('0x27')](_0x2de072[_0x974b('0x28')],{'raw':_0x2de072[_0x974b('0x1b')]?_0x2de072[_0x974b('0x1b')][_0x974b('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2de072[_0x974b('0x1b')]?_0x2de072[_0x974b('0x1b')][_0x974b('0x1d')]||null:null,'attributes':_0x2de072['options']?_0x2de072[_0x974b('0x1b')][_0x974b('0x1e')]||null:null,'limit':_0x2de072[_0x974b('0x1b')]?_0x2de072['options']['limit']||null:null})['then'](function(_0x1393a9){logger[_0x974b('0x23')](_0x974b('0x26'),_0x2de072);logger[_0x974b('0x11')](_0x974b('0x26'),_0x2de072,JSON['stringify'](_0x1393a9));_0x2da1ff(_0x1393a9);})['catch'](function(_0x124eef){logger[_0x974b('0x13')](_0x974b('0x26'),_0x124eef[_0x974b('0x15')],_0x2de072);_0x46bf84(_0x168178[_0x974b('0x13')](0x1f4,_0x124eef['message']));});});};
\ No newline at end of file
+var _0x83b9=['map','CreateVoiceQueueReport','VoiceQueueReport','create','update','body','where','limit','UpdateVoiceQueueReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueueReport','findAll','options','raw','attributes','include','model'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x83b9,0x10b));var _0x983b=function(_0x556bd0,_0xb1b8a4){_0x556bd0=_0x556bd0-0x0;var _0x362c89=_0x83b9[_0x556bd0];return _0x362c89;};'use strict';var _=require('lodash');var util=require(_0x983b('0x0'));var moment=require('moment');var BPromise=require(_0x983b('0x1'));var rs=require(_0x983b('0x2'));var fs=require('fs');var Redis=require(_0x983b('0x3'));var db=require(_0x983b('0x4'))['db'];var utils=require(_0x983b('0x5'));var logger=require('../../config/logger')(_0x983b('0x6'));var config=require('../../config/environment');var jayson=require(_0x983b('0x7'));var client=jayson[_0x983b('0x8')]['http']({'port':0x232a});config[_0x983b('0x9')]=_[_0x983b('0xa')](config[_0x983b('0x9')],{'host':_0x983b('0xb'),'port':0x18eb});var socket=require(_0x983b('0xc'))(new Redis(config['redis']));require(_0x983b('0xd'))['register'](socket);function respondWithRpcPromise(_0x3a7cba,_0x12b20c,_0x540b79){return new BPromise(function(_0x546688,_0x2fa6dc){return client[_0x983b('0xe')](_0x3a7cba,_0x540b79)[_0x983b('0xf')](function(_0x217b77){logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x12b20c,_0x983b('0x10'));logger[_0x983b('0x11')](_0x983b('0x12'),_0x12b20c,'request\x20sent',JSON[_0x983b('0x13')](_0x217b77));if(_0x217b77['error']){if(_0x217b77[_0x983b('0x14')][_0x983b('0x15')]===0x1f4){logger[_0x983b('0x14')](_0x983b('0x16'),_0x12b20c,_0x217b77[_0x983b('0x14')]['message']);return _0x2fa6dc(_0x217b77['error'][_0x983b('0x17')]);}logger[_0x983b('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x12b20c,_0x217b77['error'][_0x983b('0x17')]);return _0x546688(_0x217b77[_0x983b('0x14')]['message']);}else{logger[_0x983b('0x18')](_0x983b('0x16'),_0x12b20c,_0x983b('0x10'));_0x546688(_0x217b77[_0x983b('0x19')][_0x983b('0x17')]);}})[_0x983b('0x1a')](function(_0x1be816){logger[_0x983b('0x14')](_0x983b('0x16'),_0x12b20c,_0x1be816);_0x2fa6dc(_0x1be816);});});}exports[_0x983b('0x1b')]=function(_0x453142){var _0x527cc4=this;return new Promise(function(_0x5f536b,_0x170242){return db['VoiceQueueReport'][_0x983b('0x1c')]({'raw':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')][_0x983b('0x1e')]===undefined?!![]:![]:!![],'where':_0x453142[_0x983b('0x1d')]?_0x453142['options']['where']||null:null,'attributes':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')][_0x983b('0x1f')]||null:null,'limit':_0x453142['options']?_0x453142[_0x983b('0x1d')]['limit']||null:null,'include':_0x453142[_0x983b('0x1d')]?_0x453142[_0x983b('0x1d')]['include']?_['map'](_0x453142[_0x983b('0x1d')][_0x983b('0x20')],function(_0xc5f090){return{'model':db[_0xc5f090[_0x983b('0x21')]],'as':_0xc5f090['as'],'attributes':_0xc5f090['attributes'],'include':_0xc5f090[_0x983b('0x20')]?_[_0x983b('0x22')](_0xc5f090['include'],function(_0x2d569b){return{'model':db[_0x2d569b['model']],'as':_0x2d569b['as'],'attributes':_0x2d569b[_0x983b('0x1f')],'include':_0x2d569b[_0x983b('0x20')]?_[_0x983b('0x22')](_0x2d569b[_0x983b('0x20')],function(_0x6fb230){return{'model':db[_0x6fb230['model']],'as':_0x6fb230['as'],'attributes':_0x6fb230[_0x983b('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3bf69c){logger['info'](_0x983b('0x1b'),_0x453142);logger[_0x983b('0x11')](_0x983b('0x1b'),_0x453142,JSON[_0x983b('0x13')](_0x3bf69c));_0x5f536b(_0x3bf69c);})[_0x983b('0x1a')](function(_0x245ba9){logger[_0x983b('0x14')](_0x983b('0x1b'),_0x245ba9[_0x983b('0x17')],_0x453142);_0x170242(_0x527cc4[_0x983b('0x14')](0x1f4,_0x245ba9[_0x983b('0x17')]));});});};exports[_0x983b('0x23')]=function(_0x3cc17f){var _0x3ecdab=this;return new Promise(function(_0x4caddb,_0x2c52a4){return db[_0x983b('0x24')][_0x983b('0x25')](_0x3cc17f['body'],{'raw':_0x3cc17f[_0x983b('0x1d')]?_0x3cc17f['options'][_0x983b('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x42d630){logger['info'](_0x983b('0x23'),_0x3cc17f);logger[_0x983b('0x11')](_0x983b('0x23'),_0x3cc17f,JSON[_0x983b('0x13')](_0x42d630));_0x4caddb(_0x42d630);})[_0x983b('0x1a')](function(_0x488a27){logger[_0x983b('0x14')]('CreateVoiceQueueReport',_0x488a27[_0x983b('0x17')],_0x3cc17f);_0x2c52a4(_0x3ecdab[_0x983b('0x14')](0x1f4,_0x488a27[_0x983b('0x17')]));});});};exports['UpdateVoiceQueueReport']=function(_0x1f2e9f){var _0x59859c=this;return new Promise(function(_0x3c8480,_0x4f87ba){return db[_0x983b('0x24')][_0x983b('0x26')](_0x1f2e9f[_0x983b('0x27')],{'raw':_0x1f2e9f['options']?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x28')]||null:null,'attributes':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f['options'][_0x983b('0x1f')]||null:null,'limit':_0x1f2e9f[_0x983b('0x1d')]?_0x1f2e9f[_0x983b('0x1d')][_0x983b('0x29')]||null:null})[_0x983b('0xf')](function(_0x425277){logger[_0x983b('0x18')](_0x983b('0x2a'),_0x1f2e9f);logger['debug'](_0x983b('0x2a'),_0x1f2e9f,JSON[_0x983b('0x13')](_0x425277));_0x3c8480(_0x425277);})[_0x983b('0x1a')](function(_0x46de88){logger[_0x983b('0x14')]('UpdateVoiceQueueReport',_0x46de88['message'],_0x1f2e9f);_0x4f87ba(_0x59859c['error'](0x1f4,_0x46de88[_0x983b('0x17')]));});});};
\ No newline at end of file
index 7f4f515..96386d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd59=['remove','update','emit','removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x517ed0,_0x444fe1){var _0x33fd21=function(_0x152187){while(--_0x152187){_0x517ed0['push'](_0x517ed0['shift']());}};_0x33fd21(++_0x444fe1);}(_0xcd59,0x14b));var _0x9cd5=function(_0x52b24f,_0xca062d){_0x52b24f=_0x52b24f-0x0;var _0x46ea6b=_0xcd59[_0x52b24f];return _0x46ea6b;};'use strict';var VoiceQueueReportEvents=require(_0x9cd5('0x0'));var events=[_0x9cd5('0x1'),_0x9cd5('0x2'),_0x9cd5('0x3')];function createListener(_0x271070,_0x302b21){return function(_0x4b93b9){_0x302b21[_0x9cd5('0x4')](_0x271070,_0x4b93b9);};}function removeListener(_0x191236,_0xf96efa){return function(){VoiceQueueReportEvents[_0x9cd5('0x5')](_0x191236,_0xf96efa);};}exports[_0x9cd5('0x6')]=function(_0x2db192){for(var _0x46277c=0x0,_0x2cd19a=events[_0x9cd5('0x7')];_0x46277c<_0x2cd19a;_0x46277c++){var _0x3f888f=events[_0x46277c];var _0x545407=createListener(_0x9cd5('0x8')+_0x3f888f,_0x2db192);VoiceQueueReportEvents['on'](_0x3f888f,_0x545407);}};
\ No newline at end of file
+var _0xb97c=['register','length','voiceQueueReport:','remove','update','removeListener'];(function(_0x3d3895,_0x3ffddc){var _0x4ec39e=function(_0x2ffde7){while(--_0x2ffde7){_0x3d3895['push'](_0x3d3895['shift']());}};_0x4ec39e(++_0x3ffddc);}(_0xb97c,0x19b));var _0xcb97=function(_0x2a9398,_0x4206f1){_0x2a9398=_0x2a9398-0x0;var _0x28abe9=_0xb97c[_0x2a9398];return _0x28abe9;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=['save',_0xcb97('0x0'),_0xcb97('0x1')];function createListener(_0x18cecd,_0x352d71){return function(_0x58b860){_0x352d71['emit'](_0x18cecd,_0x58b860);};}function removeListener(_0xb96d7f,_0x11bfb9){return function(){VoiceQueueReportEvents[_0xcb97('0x2')](_0xb96d7f,_0x11bfb9);};}exports[_0xcb97('0x3')]=function(_0xf87cc2){for(var _0x4b17c9=0x0,_0xf7c6e5=events[_0xcb97('0x4')];_0x4b17c9<_0xf7c6e5;_0x4b17c9++){var _0x2b72c7=events[_0x4b17c9];var _0x6e2720=createListener(_0xcb97('0x5')+_0x2b72c7,_0xf87cc2);VoiceQueueReportEvents['on'](_0x2b72c7,_0x6e2720);}};
\ No newline at end of file
index c08b52f..58ae927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa19c=['./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','create','put','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x43c69d,_0x1161cf){var _0x1fa4fb=function(_0x609e5b){while(--_0x609e5b){_0x43c69d['push'](_0x43c69d['shift']());}};_0x1fa4fb(++_0x1161cf);}(_0xa19c,0x114));var _0xca19=function(_0x231dfd,_0x5ea5ea){_0x231dfd=_0x231dfd-0x0;var _0x17a587=_0xa19c[_0x231dfd];return _0x17a587;};'use strict';var multer=require(_0xca19('0x0'));var util=require(_0xca19('0x1'));var path=require('path');var timeout=require(_0xca19('0x2'));var express=require(_0xca19('0x3'));var router=express[_0xca19('0x4')]();var fs_extra=require(_0xca19('0x5'));var auth=require(_0xca19('0x6'));var interaction=require(_0xca19('0x7'));var config=require(_0xca19('0x8'));var controller=require(_0xca19('0x9'));router[_0xca19('0xa')]('/',auth[_0xca19('0xb')](),controller[_0xca19('0xc')]);router[_0xca19('0xa')](_0xca19('0xd'),auth[_0xca19('0xb')](),controller[_0xca19('0xe')]);router['post']('/',auth[_0xca19('0xb')](),controller[_0xca19('0xf')]);router[_0xca19('0x10')](_0xca19('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xca19('0x11')]('/:id',auth[_0xca19('0xb')](),controller[_0xca19('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb2f4=['update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','show','post','create'];(function(_0x2b9c55,_0x3977d0){var _0x48257a=function(_0x3dea34){while(--_0x3dea34){_0x2b9c55['push'](_0x2b9c55['shift']());}};_0x48257a(++_0x3977d0);}(_0xb2f4,0x14f));var _0x4b2f=function(_0x17144e,_0x54b854){_0x17144e=_0x17144e-0x0;var _0x393e3e=_0xb2f4[_0x17144e];return _0x393e3e;};'use strict';var multer=require(_0x4b2f('0x0'));var util=require(_0x4b2f('0x1'));var path=require(_0x4b2f('0x2'));var timeout=require(_0x4b2f('0x3'));var express=require(_0x4b2f('0x4'));var router=express[_0x4b2f('0x5')]();var fs_extra=require(_0x4b2f('0x6'));var auth=require(_0x4b2f('0x7'));var interaction=require(_0x4b2f('0x8'));var config=require(_0x4b2f('0x9'));var controller=require(_0x4b2f('0xa'));router[_0x4b2f('0xb')]('/',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0xd')]);router[_0x4b2f('0xb')]('/:id',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0xe')]);router[_0x4b2f('0xf')]('/',auth[_0x4b2f('0xc')](),controller[_0x4b2f('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4b2f('0x11')]);router[_0x4b2f('0x12')](_0x4b2f('0x13'),auth[_0x4b2f('0xc')](),controller[_0x4b2f('0x14')]);module[_0x4b2f('0x15')]=router;
\ No newline at end of file
index 0624dc7..cfa46fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda5e=['DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','moment','exports','STRING'];(function(_0x922dc0,_0x3dafc3){var _0x5543e2=function(_0x5b820a){while(--_0x5b820a){_0x922dc0['push'](_0x922dc0['shift']());}};_0x5543e2(++_0x3dafc3);}(_0xda5e,0xff));var _0xeda5=function(_0x4b0d0b,_0x15807d){_0x4b0d0b=_0x4b0d0b-0x0;var _0x2d2f74=_0xda5e[_0x4b0d0b];return _0x2d2f74;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xeda5('0x0'));module[_0xeda5('0x1')]={'time':{'type':Sequelize[_0xeda5('0x2')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xeda5('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xeda5('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xeda5('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xeda5('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xeda5('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xeda5('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xeda5('0x4')](_0xeda5('0x5'))}};
\ No newline at end of file
+var _0x1b20=['exports','STRING','DATE','literal','moment'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0x1b20,0x1b2));var _0x01b2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1b20[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x01b2('0x0'));module[_0x01b2('0x1')]={'time':{'type':Sequelize[_0x01b2('0x2')]},'callid':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x01b2('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x01b2('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x01b2('0x4')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 0d9e8fb..4ba5de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61d=['filters','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','include','options','find','create','body','destroy','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','map','VoiceQueuesLog','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x186fd6,_0x1beb26){var _0x50a926=function(_0x588f02){while(--_0x588f02){_0x186fd6['push'](_0x186fd6['shift']());}};_0x50a926(++_0x1beb26);}(_0xc61d,0x17d));var _0xdc61=function(_0x59629b,_0x3d305e){_0x59629b=_0x59629b-0x0;var _0x19df9c=_0xc61d[_0x59629b];return _0x19df9c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc61('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdc61('0x1'));var rp=require(_0xdc61('0x2'));var moment=require(_0xdc61('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xdc61('0x4'));var util=require(_0xdc61('0x5'));var path=require('path');var sox=require(_0xdc61('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdc61('0x7'));var _=require(_0xdc61('0x8'));var squel=require(_0xdc61('0x9'));var crypto=require(_0xdc61('0xa'));var jsforce=require(_0xdc61('0xb'));var deskjs=require(_0xdc61('0xc'));var toCsv=require('to-csv');var querystring=require(_0xdc61('0xd'));var Papa=require(_0xdc61('0xe'));var Redis=require(_0xdc61('0xf'));var authService=require(_0xdc61('0x10'));var qs=require(_0xdc61('0x11'));var as=require(_0xdc61('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdc61('0x13'))(_0xdc61('0x14'));var utils=require('../../config/utils');var config=require(_0xdc61('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdc61('0x16'))['db'];function respondWithStatusCode(_0x493e3f,_0x399644){_0x399644=_0x399644||0xcc;return function(_0x1cb18e){if(_0x1cb18e){return _0x493e3f[_0xdc61('0x17')](_0x399644);}return _0x493e3f[_0xdc61('0x18')](_0x399644)['end']();};}function respondWithResult(_0x32b311,_0x323b70){_0x323b70=_0x323b70||0xc8;return function(_0x4a765c){if(_0x4a765c){return _0x32b311['status'](_0x323b70)['json'](_0x4a765c);}};}function respondWithFilteredResult(_0x3a9f3e,_0x108388){return function(_0x108d43){if(_0x108d43){var _0x16f050=typeof _0x108388[_0xdc61('0x19')]===_0xdc61('0x1a')&&typeof _0x108388[_0xdc61('0x1b')]===_0xdc61('0x1a');var _0x14acd0=_0x108d43[_0xdc61('0x1c')];var _0x394f03=_0x16f050?0x0:_0x108388[_0xdc61('0x19')];var _0xb7e61d=_0x16f050?_0x108d43[_0xdc61('0x1c')]:_0x108388[_0xdc61('0x19')]+_0x108388[_0xdc61('0x1b')];var _0x39353e;if(_0xb7e61d>=_0x14acd0){_0xb7e61d=_0x14acd0;_0x39353e=0xc8;}else{_0x39353e=0xce;}_0x3a9f3e[_0xdc61('0x18')](_0x39353e);return _0x3a9f3e[_0xdc61('0x1d')](_0xdc61('0x1e'),_0x394f03+'-'+_0xb7e61d+'/'+_0x14acd0)['json'](_0x108d43);}return null;};}function patchUpdates(_0x2dad08){return function(_0x307e6c){try{jsonpatch[_0xdc61('0x1f')](_0x307e6c,_0x2dad08,!![]);}catch(_0x5ed53d){return BPromise[_0xdc61('0x20')](_0x5ed53d);}return _0x307e6c[_0xdc61('0x21')]();};}function saveUpdates(_0x1f0670,_0x52377f){return function(_0x4864e5){if(_0x4864e5){return _0x4864e5[_0xdc61('0x22')](_0x1f0670)[_0xdc61('0x23')](function(_0x71a740){return _0x71a740;});}return null;};}function removeEntity(_0x4bc1a5,_0x5679a0){return function(_0x2b50ed){if(_0x2b50ed){return _0x2b50ed['destroy']()[_0xdc61('0x23')](function(){_0x4bc1a5[_0xdc61('0x18')](0xcc)[_0xdc61('0x24')]();});}};}function handleEntityNotFound(_0x5f4a34,_0x179778){return function(_0x57534d){if(!_0x57534d){_0x5f4a34[_0xdc61('0x17')](0x194);}return _0x57534d;};}function handleError(_0x4e0077,_0x291850){_0x291850=_0x291850||0x1f4;return function(_0x4f9ec7){logger[_0xdc61('0x25')](_0x4f9ec7[_0xdc61('0x26')]);if(_0x4f9ec7[_0xdc61('0x27')]){delete _0x4f9ec7[_0xdc61('0x27')];}_0x4e0077[_0xdc61('0x18')](_0x291850)[_0xdc61('0x28')](_0x4f9ec7);};}exports['index']=function(_0x49d140,_0x24b2fc){var _0x59cd26={},_0x3901b5={},_0x11abed={'count':0x0,'rows':[]};var _0x40d2fa=_[_0xdc61('0x29')](db[_0xdc61('0x2a')][_0xdc61('0x2b')],function(_0x10115b){return{'name':_0x10115b['fieldName'],'type':_0x10115b[_0xdc61('0x2c')][_0xdc61('0x2d')]};});_0x3901b5[_0xdc61('0x2e')]=_[_0xdc61('0x29')](_0x40d2fa,_0xdc61('0x27'));_0x3901b5[_0xdc61('0x2f')]=_[_0xdc61('0x30')](_0x49d140[_0xdc61('0x2f')]);_0x3901b5['filters']=_[_0xdc61('0x31')](_0x3901b5['model'],_0x3901b5[_0xdc61('0x2f')]);_0x59cd26[_0xdc61('0x32')]=_[_0xdc61('0x31')](_0x3901b5[_0xdc61('0x2e')],qs[_0xdc61('0x33')](_0x49d140[_0xdc61('0x2f')][_0xdc61('0x33')]));_0x59cd26[_0xdc61('0x32')]=_0x59cd26[_0xdc61('0x32')]['length']?_0x59cd26[_0xdc61('0x32')]:_0x3901b5[_0xdc61('0x2e')];if(!_0x49d140['query'][_0xdc61('0x34')](_0xdc61('0x35'))){_0x59cd26['limit']=qs['limit'](_0x49d140[_0xdc61('0x2f')][_0xdc61('0x1b')]);_0x59cd26[_0xdc61('0x19')]=qs[_0xdc61('0x19')](_0x49d140[_0xdc61('0x2f')][_0xdc61('0x19')]);}_0x59cd26[_0xdc61('0x36')]=qs[_0xdc61('0x37')](_0x49d140[_0xdc61('0x2f')][_0xdc61('0x37')]);_0x59cd26[_0xdc61('0x38')]=qs[_0xdc61('0x39')](_[_0xdc61('0x3a')](_0x49d140['query'],_0x3901b5['filters']),_0x40d2fa);if(_0x49d140['query'][_0xdc61('0x3b')]){_0x59cd26['where']=_[_0xdc61('0x3c')](_0x59cd26[_0xdc61('0x38')],{'$or':_[_0xdc61('0x29')](_0x40d2fa,function(_0x1cfc01){if(_0x1cfc01['type']!==_0xdc61('0x3d')){var _0x5a2596={};_0x5a2596[_0x1cfc01['name']]={'$like':'%'+_0x49d140['query'][_0xdc61('0x3b')]+'%'};return _0x5a2596;}})});}_0x59cd26=_[_0xdc61('0x3c')]({},_0x59cd26,_0x49d140['options']);var _0x163e55={'where':_0x59cd26[_0xdc61('0x38')]};return db['VoiceQueuesLog'][_0xdc61('0x1c')](_0x163e55)[_0xdc61('0x23')](function(_0x31ec2a){_0x11abed[_0xdc61('0x1c')]=_0x31ec2a;if(_0x49d140[_0xdc61('0x2f')][_0xdc61('0x3e')]){_0x59cd26['include']=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xdc61('0x3f')](_0x59cd26);})[_0xdc61('0x23')](function(_0x4e08ad){_0x11abed[_0xdc61('0x40')]=_0x4e08ad;return _0x11abed;})[_0xdc61('0x23')](respondWithFilteredResult(_0x24b2fc,_0x59cd26))[_0xdc61('0x41')](handleError(_0x24b2fc,null));};exports['show']=function(_0x31dc62,_0x262d44){var _0x308e36={'raw':!![],'where':{'id':_0x31dc62[_0xdc61('0x42')]['id']}},_0x25c0a2={};_0x25c0a2['model']=_[_0xdc61('0x30')](db[_0xdc61('0x2a')][_0xdc61('0x2b')]);_0x25c0a2['query']=_[_0xdc61('0x30')](_0x31dc62[_0xdc61('0x2f')]);_0x25c0a2[_0xdc61('0x39')]=_[_0xdc61('0x31')](_0x25c0a2[_0xdc61('0x2e')],_0x25c0a2['query']);_0x308e36[_0xdc61('0x32')]=_['intersection'](_0x25c0a2[_0xdc61('0x2e')],qs['fields'](_0x31dc62[_0xdc61('0x2f')][_0xdc61('0x33')]));_0x308e36['attributes']=_0x308e36[_0xdc61('0x32')]['length']?_0x308e36[_0xdc61('0x32')]:_0x25c0a2[_0xdc61('0x2e')];if(_0x31dc62['query'][_0xdc61('0x3e')]){_0x308e36[_0xdc61('0x43')]=[{'all':!![]}];}_0x308e36=_[_0xdc61('0x3c')]({},_0x308e36,_0x31dc62[_0xdc61('0x44')]);return db[_0xdc61('0x2a')][_0xdc61('0x45')](_0x308e36)[_0xdc61('0x23')](handleEntityNotFound(_0x262d44,null))['then'](respondWithResult(_0x262d44,null))['catch'](handleError(_0x262d44,null));};exports[_0xdc61('0x46')]=function(_0x4cf179,_0x2efa7a){return db['VoiceQueuesLog']['create'](_0x4cf179[_0xdc61('0x47')],{})[_0xdc61('0x23')](respondWithResult(_0x2efa7a,0xc9))[_0xdc61('0x41')](handleError(_0x2efa7a,null));};exports['update']=function(_0x508c49,_0x579e3b){if(_0x508c49['body']['id']){delete _0x508c49[_0xdc61('0x47')]['id'];}return db[_0xdc61('0x2a')]['find']({'where':{'id':_0x508c49[_0xdc61('0x42')]['id']}})[_0xdc61('0x23')](handleEntityNotFound(_0x579e3b,null))[_0xdc61('0x23')](saveUpdates(_0x508c49[_0xdc61('0x47')],null))[_0xdc61('0x23')](respondWithResult(_0x579e3b,null))[_0xdc61('0x41')](handleError(_0x579e3b,null));};exports[_0xdc61('0x48')]=function(_0x35cf32,_0x200644){return db[_0xdc61('0x2a')][_0xdc61('0x45')]({'where':{'id':_0x35cf32[_0xdc61('0x42')]['id']}})[_0xdc61('0x23')](handleEntityNotFound(_0x200644,null))[_0xdc61('0x23')](removeEntity(_0x200644,null))[_0xdc61('0x41')](handleError(_0x200644,null));};
\ No newline at end of file
+var _0x6396=['undefined','limit','set','apply','reject','save','update','destroy','end','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','then','catch','params','keys','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x1e4483,_0x12d73e){var _0x2ab5be=function(_0x4cb35c){while(--_0x4cb35c){_0x1e4483['push'](_0x1e4483['shift']());}};_0x2ab5be(++_0x12d73e);}(_0x6396,0xc6));var _0x6639=function(_0x113e32,_0x5339f0){_0x113e32=_0x113e32-0x0;var _0x4ff939=_0x6396[_0x113e32];return _0x4ff939;};'use strict';var emlformat=require(_0x6639('0x0'));var rimraf=require(_0x6639('0x1'));var zipdir=require(_0x6639('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6639('0x3'));var moment=require('moment');var BPromise=require(_0x6639('0x4'));var Mustache=require('mustache');var util=require(_0x6639('0x5'));var path=require(_0x6639('0x6'));var sox=require(_0x6639('0x7'));var csv=require(_0x6639('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6639('0x9'));var squel=require(_0x6639('0xa'));var crypto=require(_0x6639('0xb'));var jsforce=require(_0x6639('0xc'));var deskjs=require(_0x6639('0xd'));var toCsv=require(_0x6639('0x8'));var querystring=require('querystring');var Papa=require(_0x6639('0xe'));var Redis=require(_0x6639('0xf'));var authService=require(_0x6639('0x10'));var qs=require(_0x6639('0x11'));var as=require(_0x6639('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6639('0x13'))(_0x6639('0x14'));var utils=require('../../config/utils');var config=require(_0x6639('0x15'));var licenseUtil=require(_0x6639('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27d61c,_0x1e969e){_0x1e969e=_0x1e969e||0xcc;return function(_0x33a3b4){if(_0x33a3b4){return _0x27d61c[_0x6639('0x17')](_0x1e969e);}return _0x27d61c['status'](_0x1e969e)['end']();};}function respondWithResult(_0x437be1,_0x1e51fd){_0x1e51fd=_0x1e51fd||0xc8;return function(_0x48e635){if(_0x48e635){return _0x437be1[_0x6639('0x18')](_0x1e51fd)[_0x6639('0x19')](_0x48e635);}};}function respondWithFilteredResult(_0x162448,_0x58f48c){return function(_0xafca40){if(_0xafca40){var _0x18a153=typeof _0x58f48c[_0x6639('0x1a')]===_0x6639('0x1b')&&typeof _0x58f48c[_0x6639('0x1c')]===_0x6639('0x1b');var _0x4b213f=_0xafca40['count'];var _0x27cfbd=_0x18a153?0x0:_0x58f48c[_0x6639('0x1a')];var _0x918702=_0x18a153?_0xafca40['count']:_0x58f48c['offset']+_0x58f48c['limit'];var _0x11d3b8;if(_0x918702>=_0x4b213f){_0x918702=_0x4b213f;_0x11d3b8=0xc8;}else{_0x11d3b8=0xce;}_0x162448['status'](_0x11d3b8);return _0x162448[_0x6639('0x1d')]('Content-Range',_0x27cfbd+'-'+_0x918702+'/'+_0x4b213f)[_0x6639('0x19')](_0xafca40);}return null;};}function patchUpdates(_0x28a231){return function(_0x3fdc2b){try{jsonpatch[_0x6639('0x1e')](_0x3fdc2b,_0x28a231,!![]);}catch(_0x582231){return BPromise[_0x6639('0x1f')](_0x582231);}return _0x3fdc2b[_0x6639('0x20')]();};}function saveUpdates(_0x44eb6d,_0x4f898a){return function(_0x14badc){if(_0x14badc){return _0x14badc[_0x6639('0x21')](_0x44eb6d)['then'](function(_0x2fb045){return _0x2fb045;});}return null;};}function removeEntity(_0x5b96ba,_0x49a13a){return function(_0x410586){if(_0x410586){return _0x410586[_0x6639('0x22')]()['then'](function(){_0x5b96ba['status'](0xcc)[_0x6639('0x23')]();});}};}function handleEntityNotFound(_0x3b76f0,_0x379360){return function(_0x5a85c9){if(!_0x5a85c9){_0x3b76f0[_0x6639('0x17')](0x194);}return _0x5a85c9;};}function handleError(_0x412614,_0x7f3ded){_0x7f3ded=_0x7f3ded||0x1f4;return function(_0x3d38d0){logger[_0x6639('0x24')](_0x3d38d0[_0x6639('0x25')]);if(_0x3d38d0[_0x6639('0x26')]){delete _0x3d38d0[_0x6639('0x26')];}_0x412614[_0x6639('0x18')](_0x7f3ded)[_0x6639('0x27')](_0x3d38d0);};}exports[_0x6639('0x28')]=function(_0x36a115,_0x40af67){var _0x2da5b7={},_0x32cc6f={},_0x18c76f={'count':0x0,'rows':[]};var _0x2a4679=_[_0x6639('0x29')](db[_0x6639('0x2a')][_0x6639('0x2b')],function(_0x3a12ed){return{'name':_0x3a12ed[_0x6639('0x2c')],'type':_0x3a12ed[_0x6639('0x2d')][_0x6639('0x2e')]};});_0x32cc6f[_0x6639('0x2f')]=_[_0x6639('0x29')](_0x2a4679,_0x6639('0x26'));_0x32cc6f[_0x6639('0x30')]=_['keys'](_0x36a115[_0x6639('0x30')]);_0x32cc6f[_0x6639('0x31')]=_['intersection'](_0x32cc6f[_0x6639('0x2f')],_0x32cc6f['query']);_0x2da5b7['attributes']=_[_0x6639('0x32')](_0x32cc6f[_0x6639('0x2f')],qs[_0x6639('0x33')](_0x36a115[_0x6639('0x30')][_0x6639('0x33')]));_0x2da5b7[_0x6639('0x34')]=_0x2da5b7[_0x6639('0x34')][_0x6639('0x35')]?_0x2da5b7['attributes']:_0x32cc6f['model'];if(!_0x36a115['query'][_0x6639('0x36')](_0x6639('0x37'))){_0x2da5b7[_0x6639('0x1c')]=qs['limit'](_0x36a115[_0x6639('0x30')][_0x6639('0x1c')]);_0x2da5b7['offset']=qs[_0x6639('0x1a')](_0x36a115[_0x6639('0x30')]['offset']);}_0x2da5b7[_0x6639('0x38')]=qs[_0x6639('0x39')](_0x36a115['query']['sort']);_0x2da5b7[_0x6639('0x3a')]=qs[_0x6639('0x31')](_['pick'](_0x36a115[_0x6639('0x30')],_0x32cc6f[_0x6639('0x31')]),_0x2a4679);if(_0x36a115[_0x6639('0x30')][_0x6639('0x3b')]){_0x2da5b7[_0x6639('0x3a')]=_[_0x6639('0x3c')](_0x2da5b7[_0x6639('0x3a')],{'$or':_[_0x6639('0x29')](_0x2a4679,function(_0x120a89){if(_0x120a89[_0x6639('0x2d')]!==_0x6639('0x3d')){var _0x2c1840={};_0x2c1840[_0x120a89[_0x6639('0x26')]]={'$like':'%'+_0x36a115['query'][_0x6639('0x3b')]+'%'};return _0x2c1840;}})});}_0x2da5b7=_[_0x6639('0x3c')]({},_0x2da5b7,_0x36a115[_0x6639('0x3e')]);var _0x55944d={'where':_0x2da5b7[_0x6639('0x3a')]};return db[_0x6639('0x2a')][_0x6639('0x3f')](_0x55944d)['then'](function(_0x5bea69){_0x18c76f['count']=_0x5bea69;if(_0x36a115[_0x6639('0x30')][_0x6639('0x40')]){_0x2da5b7[_0x6639('0x41')]=[{'all':!![]}];}return db[_0x6639('0x2a')][_0x6639('0x42')](_0x2da5b7);})['then'](function(_0x3a718c){_0x18c76f[_0x6639('0x43')]=_0x3a718c;return _0x18c76f;})[_0x6639('0x44')](respondWithFilteredResult(_0x40af67,_0x2da5b7))[_0x6639('0x45')](handleError(_0x40af67,null));};exports['show']=function(_0x220bb4,_0x545cdc){var _0x259ef9={'raw':!![],'where':{'id':_0x220bb4[_0x6639('0x46')]['id']}},_0x2176cc={};_0x2176cc[_0x6639('0x2f')]=_[_0x6639('0x47')](db[_0x6639('0x2a')][_0x6639('0x2b')]);_0x2176cc[_0x6639('0x30')]=_[_0x6639('0x47')](_0x220bb4['query']);_0x2176cc[_0x6639('0x31')]=_[_0x6639('0x32')](_0x2176cc['model'],_0x2176cc[_0x6639('0x30')]);_0x259ef9[_0x6639('0x34')]=_[_0x6639('0x32')](_0x2176cc[_0x6639('0x2f')],qs['fields'](_0x220bb4['query'][_0x6639('0x33')]));_0x259ef9[_0x6639('0x34')]=_0x259ef9[_0x6639('0x34')][_0x6639('0x35')]?_0x259ef9[_0x6639('0x34')]:_0x2176cc['model'];if(_0x220bb4[_0x6639('0x30')]['includeAll']){_0x259ef9[_0x6639('0x41')]=[{'all':!![]}];}_0x259ef9=_[_0x6639('0x3c')]({},_0x259ef9,_0x220bb4[_0x6639('0x3e')]);return db[_0x6639('0x2a')][_0x6639('0x48')](_0x259ef9)['then'](handleEntityNotFound(_0x545cdc,null))['then'](respondWithResult(_0x545cdc,null))[_0x6639('0x45')](handleError(_0x545cdc,null));};exports['create']=function(_0x257c77,_0x142e64){return db[_0x6639('0x2a')][_0x6639('0x49')](_0x257c77['body'],{})[_0x6639('0x44')](respondWithResult(_0x142e64,0xc9))['catch'](handleError(_0x142e64,null));};exports[_0x6639('0x21')]=function(_0x1bd521,_0x264d8f){if(_0x1bd521[_0x6639('0x4a')]['id']){delete _0x1bd521[_0x6639('0x4a')]['id'];}return db[_0x6639('0x2a')][_0x6639('0x48')]({'where':{'id':_0x1bd521[_0x6639('0x46')]['id']}})['then'](handleEntityNotFound(_0x264d8f,null))['then'](saveUpdates(_0x1bd521[_0x6639('0x4a')],null))[_0x6639('0x44')](respondWithResult(_0x264d8f,null))[_0x6639('0x45')](handleError(_0x264d8f,null));};exports[_0x6639('0x22')]=function(_0x3055a1,_0x2deb47){return db['VoiceQueuesLog'][_0x6639('0x48')]({'where':{'id':_0x3055a1[_0x6639('0x46')]['id']}})[_0x6639('0x44')](handleEntityNotFound(_0x2deb47,null))[_0x6639('0x44')](removeEntity(_0x2deb47,null))[_0x6639('0x45')](handleError(_0x2deb47,null));};
\ No newline at end of file
index 8d0d1dd..fcb3607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f8=['util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./voiceQueuesLog.attributes','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash'];(function(_0x34db30,_0x52a31e){var _0x1e0f76=function(_0xace5e6){while(--_0xace5e6){_0x34db30['push'](_0x34db30['shift']());}};_0x1e0f76(++_0x52a31e);}(_0x44f8,0xfb));var _0x844f=function(_0x12e85f,_0x336492){_0x12e85f=_0x12e85f-0x0;var _0x1df6b0=_0x44f8[_0x12e85f];return _0x1df6b0;};'use strict';var _=require(_0x844f('0x0'));var util=require(_0x844f('0x1'));var logger=require(_0x844f('0x2'))('api');var moment=require(_0x844f('0x3'));var BPromise=require(_0x844f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x844f('0x5'));var config=require(_0x844f('0x6'));var attributes=require(_0x844f('0x7'));module['exports']=function(_0xe18167,_0x1803de){return _0xe18167[_0x844f('0x8')](_0x844f('0x9'),attributes,{'tableName':_0x844f('0xa'),'paranoid':![],'indexes':[{'name':_0x844f('0xb'),'fields':[_0x844f('0xc'),_0x844f('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x09d3=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceQueuesLog','event_dtm','event','dtm'];(function(_0x522a13,_0x4bf8f4){var _0x2d4f5a=function(_0x1ba55c){while(--_0x1ba55c){_0x522a13['push'](_0x522a13['shift']());}};_0x2d4f5a(++_0x4bf8f4);}(_0x09d3,0xa5));var _0x309d=function(_0x211a9f,_0x4aeef4){_0x211a9f=_0x211a9f-0x0;var _0x5ea1a1=_0x09d3[_0x211a9f];return _0x5ea1a1;};'use strict';var _=require(_0x309d('0x0'));var util=require(_0x309d('0x1'));var logger=require(_0x309d('0x2'))(_0x309d('0x3'));var moment=require(_0x309d('0x4'));var BPromise=require(_0x309d('0x5'));var rp=require(_0x309d('0x6'));var fs=require('fs');var path=require(_0x309d('0x7'));var rimraf=require('rimraf');var config=require(_0x309d('0x8'));var attributes=require('./voiceQueuesLog.attributes');module[_0x309d('0x9')]=function(_0x1332e8,_0x4b2653){return _0x1332e8[_0x309d('0xa')](_0x309d('0xb'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x309d('0xc'),'fields':[_0x309d('0xd'),_0x309d('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index dd394f8..b602680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda46=['request\x20sent','debug','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','VoiceQueuesLog,\x20%s,\x20%s'];(function(_0xab73f4,_0x291ad5){var _0x4e8720=function(_0x20fb29){while(--_0x20fb29){_0xab73f4['push'](_0xab73f4['shift']());}};_0x4e8720(++_0x291ad5);}(_0xda46,0x118));var _0x6da4=function(_0x4959c1,_0x2a408e){_0x4959c1=_0x4959c1-0x0;var _0x3aa079=_0xda46[_0x4959c1];return _0x3aa079;};'use strict';var _=require('lodash');var util=require(_0x6da4('0x0'));var moment=require(_0x6da4('0x1'));var BPromise=require(_0x6da4('0x2'));var rs=require(_0x6da4('0x3'));var fs=require('fs');var Redis=require(_0x6da4('0x4'));var db=require(_0x6da4('0x5'))['db'];var utils=require(_0x6da4('0x6'));var logger=require(_0x6da4('0x7'))(_0x6da4('0x8'));var config=require(_0x6da4('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x18d0b3,_0x18e1b1,_0x4f65e1){return new BPromise(function(_0x25db2b,_0x1649c3){return client[_0x6da4('0xa')](_0x18d0b3,_0x4f65e1)[_0x6da4('0xb')](function(_0x36d023){logger[_0x6da4('0xc')](_0x6da4('0xd'),_0x18e1b1,_0x6da4('0xe'));logger[_0x6da4('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x18e1b1,'request\x20sent',JSON[_0x6da4('0x10')](_0x36d023));if(_0x36d023['error']){if(_0x36d023[_0x6da4('0x11')][_0x6da4('0x12')]===0x1f4){logger['error'](_0x6da4('0xd'),_0x18e1b1,_0x36d023[_0x6da4('0x11')]['message']);return _0x1649c3(_0x36d023[_0x6da4('0x11')][_0x6da4('0x13')]);}logger[_0x6da4('0x11')](_0x6da4('0xd'),_0x18e1b1,_0x36d023[_0x6da4('0x11')][_0x6da4('0x13')]);return _0x25db2b(_0x36d023[_0x6da4('0x11')][_0x6da4('0x13')]);}else{logger[_0x6da4('0xc')](_0x6da4('0xd'),_0x18e1b1,_0x6da4('0xe'));_0x25db2b(_0x36d023['result']['message']);}})[_0x6da4('0x14')](function(_0xcf7795){logger[_0x6da4('0x11')](_0x6da4('0xd'),_0x18e1b1,_0xcf7795);_0x1649c3(_0xcf7795);});});}
\ No newline at end of file
+var _0xf958=['then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x3ac156,_0x355f1f){var _0xaf44c5=function(_0x887794){while(--_0x887794){_0x3ac156['push'](_0x3ac156['shift']());}};_0xaf44c5(++_0x355f1f);}(_0xf958,0xe6));var _0x8f95=function(_0x2f61d3,_0x461271){_0x2f61d3=_0x2f61d3-0x0;var _0x52aa7a=_0xf958[_0x2f61d3];return _0x52aa7a;};'use strict';var _=require(_0x8f95('0x0'));var util=require('util');var moment=require(_0x8f95('0x1'));var BPromise=require('bluebird');var rs=require(_0x8f95('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f95('0x3'))['db'];var utils=require(_0x8f95('0x4'));var logger=require(_0x8f95('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8f95('0x6'));var client=jayson[_0x8f95('0x7')][_0x8f95('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c2af8,_0x5cfc04,_0x1ae9c4){return new BPromise(function(_0x109bed,_0x435b5b){return client[_0x8f95('0x9')](_0x5c2af8,_0x1ae9c4)[_0x8f95('0xa')](function(_0x585025){logger[_0x8f95('0xb')](_0x8f95('0xc'),_0x5cfc04,'request\x20sent');logger[_0x8f95('0xd')](_0x8f95('0xe'),_0x5cfc04,_0x8f95('0xf'),JSON['stringify'](_0x585025));if(_0x585025[_0x8f95('0x10')]){if(_0x585025[_0x8f95('0x10')][_0x8f95('0x11')]===0x1f4){logger['error'](_0x8f95('0xc'),_0x5cfc04,_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);return _0x435b5b(_0x585025['error'][_0x8f95('0x12')]);}logger[_0x8f95('0x10')](_0x8f95('0xc'),_0x5cfc04,_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);return _0x109bed(_0x585025[_0x8f95('0x10')][_0x8f95('0x12')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x5cfc04,'request\x20sent');_0x109bed(_0x585025['result']['message']);}})[_0x8f95('0x13')](function(_0x2f01cd){logger[_0x8f95('0x10')](_0x8f95('0xc'),_0x5cfc04,_0x2f01cd);_0x435b5b(_0x2f01cd);});});}
\ No newline at end of file
index 10732eb..3f57fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f5=['./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','/:id/downloads','downloads','downloadTranscribe','post','create','/:id/transcribe','put','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x19c6aa,_0x5518f5){var _0x2ca261=function(_0x5dc7b8){while(--_0x5dc7b8){_0x19c6aa['push'](_0x19c6aa['shift']());}};_0x2ca261(++_0x5518f5);}(_0x45f5,0x18d));var _0x545f=function(_0x32fb8d,_0x567a64){_0x32fb8d=_0x32fb8d-0x0;var _0x37cf13=_0x45f5[_0x32fb8d];return _0x37cf13;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x545f('0x0'));var timeout=require(_0x545f('0x1'));var express=require(_0x545f('0x2'));var router=express[_0x545f('0x3')]();var fs_extra=require(_0x545f('0x4'));var auth=require(_0x545f('0x5'));var interaction=require(_0x545f('0x6'));var config=require(_0x545f('0x7'));var controller=require(_0x545f('0x8'));router[_0x545f('0x9')]('/',auth[_0x545f('0xa')](),controller[_0x545f('0xb')]);router[_0x545f('0x9')](_0x545f('0xc'),auth[_0x545f('0xa')](),controller[_0x545f('0xd')]);router[_0x545f('0x9')](_0x545f('0xe'),auth[_0x545f('0xa')](),controller['show']);router['get'](_0x545f('0xf'),auth[_0x545f('0xa')](),controller[_0x545f('0x10')]);router[_0x545f('0x9')](_0x545f('0x11'),controller[_0x545f('0x12')]);router[_0x545f('0x9')]('/:id/transcribe',auth[_0x545f('0xa')](),controller[_0x545f('0x13')]);router[_0x545f('0x14')]('/',auth[_0x545f('0xa')](),controller[_0x545f('0x15')]);router[_0x545f('0x14')](_0x545f('0x16'),auth[_0x545f('0xa')](),controller['runTranscribe']);router[_0x545f('0x17')](_0x545f('0xe'),auth[_0x545f('0xa')](),controller['update']);router[_0x545f('0x18')](_0x545f('0xe'),auth[_0x545f('0xa')](),controller[_0x545f('0x19')]);module[_0x545f('0x1a')]=router;
\ No newline at end of file
+var _0x13d0=['/:id','show','download','/:id/downloads','downloads','downloadTranscribe','create','post','/:id/transcribe','runTranscribe','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','describe'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x13d0,0x1ed));var _0x013d=function(_0x23584a,_0x7abb50){_0x23584a=_0x23584a-0x0;var _0x5bd540=_0x13d0[_0x23584a];return _0x5bd540;};'use strict';var multer=require(_0x013d('0x0'));var util=require(_0x013d('0x1'));var path=require(_0x013d('0x2'));var timeout=require(_0x013d('0x3'));var express=require(_0x013d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x013d('0x5'));var interaction=require(_0x013d('0x6'));var config=require('../../config/environment');var controller=require(_0x013d('0x7'));router[_0x013d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x013d('0x8')]('/describe',auth[_0x013d('0x9')](),controller[_0x013d('0xa')]);router[_0x013d('0x8')](_0x013d('0xb'),auth[_0x013d('0x9')](),controller[_0x013d('0xc')]);router[_0x013d('0x8')]('/:id/download',auth[_0x013d('0x9')](),controller[_0x013d('0xd')]);router[_0x013d('0x8')](_0x013d('0xe'),controller[_0x013d('0xf')]);router['get']('/:id/transcribe',auth['isAuthenticated'](),controller[_0x013d('0x10')]);router['post']('/',auth[_0x013d('0x9')](),controller[_0x013d('0x11')]);router[_0x013d('0x12')](_0x013d('0x13'),auth[_0x013d('0x9')](),controller[_0x013d('0x14')]);router['put'](_0x013d('0xb'),auth['isAuthenticated'](),controller[_0x013d('0x15')]);router[_0x013d('0x16')](_0x013d('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x013d('0x17')]=router;
\ No newline at end of file
index 2f42219..d3d6d94 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(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 6fd0990..960e252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3f=['Transcript\x20not\x20available','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','error','stack','send','map','VoiceRecording','fieldName','model','differenceBy','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','merge','type','name','filter','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','decryptFile','secrets','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','token','$and','push','recording','VoiceRecording\x20not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','TranscriptionJobName','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','runSentiment','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','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','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_'];(function(_0x461c0c,_0x530573){var _0x3db759=function(_0x387a3d){while(--_0x387a3d){_0x461c0c['push'](_0x461c0c['shift']());}};_0x3db759(++_0x530573);}(_0x0f3f,0x97));var _0xf0f3=function(_0x35e124,_0x1d85e2){_0x35e124=_0x35e124-0x0;var _0x53c482=_0x0f3f[_0x35e124];return _0x53c482;};'use strict';var emlformat=require(_0xf0f3('0x0'));var rimraf=require(_0xf0f3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf0f3('0x2'));var rp=require(_0xf0f3('0x3'));var moment=require(_0xf0f3('0x4'));var BPromise=require(_0xf0f3('0x5'));var Mustache=require('mustache');var util=require(_0xf0f3('0x6'));var path=require(_0xf0f3('0x7'));var sox=require(_0xf0f3('0x8'));var csv=require(_0xf0f3('0x9'));var ejs=require(_0xf0f3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf0f3('0xb'));var squel=require(_0xf0f3('0xc'));var crypto=require(_0xf0f3('0xd'));var jsforce=require(_0xf0f3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf0f3('0x9'));var querystring=require('querystring');var Papa=require(_0xf0f3('0xf'));var AWS=require(_0xf0f3('0x10'));var uuidv4=require(_0xf0f3('0x11'));var Redis=require(_0xf0f3('0x12'));var authService=require(_0xf0f3('0x13'));var qs=require(_0xf0f3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0f3('0x15'));var logger=require('../../config/logger')(_0xf0f3('0x16'));var utils=require(_0xf0f3('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d717a,_0x1a7d17){_0x1a7d17=_0x1a7d17||0xcc;return function(_0x2a21ea){if(_0x2a21ea){return _0x4d717a[_0xf0f3('0x18')](_0x1a7d17);}return _0x4d717a[_0xf0f3('0x19')](_0x1a7d17)[_0xf0f3('0x1a')]();};}function respondWithResult(_0xb2c2e9,_0x16c2f7){_0x16c2f7=_0x16c2f7||0xc8;return function(_0x4d9ee8){if(_0x4d9ee8){return _0xb2c2e9[_0xf0f3('0x19')](_0x16c2f7)[_0xf0f3('0x1b')](_0x4d9ee8);}};}function respondWithFilteredResult(_0x307820,_0x5663f3){return function(_0xe5c890){if(_0xe5c890){var _0x297c37=typeof _0x5663f3[_0xf0f3('0x1c')]==='undefined'&&typeof _0x5663f3[_0xf0f3('0x1d')]===_0xf0f3('0x1e');var _0x2fd8ac=_0xe5c890[_0xf0f3('0x1f')];var _0x7ab52a=_0x297c37?0x0:_0x5663f3[_0xf0f3('0x1c')];var _0x1d37cc=_0x297c37?_0xe5c890[_0xf0f3('0x1f')]:_0x5663f3[_0xf0f3('0x1c')]+_0x5663f3['limit'];var _0x56e4a9;if(_0x1d37cc>=_0x2fd8ac){_0x1d37cc=_0x2fd8ac;_0x56e4a9=0xc8;}else{_0x56e4a9=0xce;}_0x307820['status'](_0x56e4a9);return _0x307820[_0xf0f3('0x20')]('Content-Range',_0x7ab52a+'-'+_0x1d37cc+'/'+_0x2fd8ac)['json'](_0xe5c890);}return null;};}function patchUpdates(_0x317ec6){return function(_0x513afa){try{jsonpatch[_0xf0f3('0x21')](_0x513afa,_0x317ec6,!![]);}catch(_0xdf4738){return BPromise['reject'](_0xdf4738);}return _0x513afa[_0xf0f3('0x22')]();};}function saveUpdates(_0x4c4eb4,_0x3629f5){return function(_0x78a60f){if(_0x78a60f){return _0x78a60f[_0xf0f3('0x23')](_0x4c4eb4)[_0xf0f3('0x24')](function(_0x419198){return _0x419198;});}return null;};}function removeEntity(_0x160331,_0x48956a){return function(_0x41c1a9){if(_0x41c1a9){return _0x41c1a9[_0xf0f3('0x25')]()[_0xf0f3('0x24')](function(){_0x160331['status'](0xcc)[_0xf0f3('0x1a')]();});}};}function handleEntityNotFound(_0x402dda,_0x5c9baa){return function(_0x3a9691){if(!_0x3a9691){_0x402dda[_0xf0f3('0x18')](0x194);}return _0x3a9691;};}function handleError(_0x54d584,_0x3fb180){_0x3fb180=_0x3fb180||0x1f4;return function(_0x4ae63b){logger[_0xf0f3('0x26')](_0x4ae63b[_0xf0f3('0x27')]);if(_0x4ae63b['name']){delete _0x4ae63b['name'];}_0x54d584['status'](_0x3fb180)[_0xf0f3('0x28')](_0x4ae63b);};}exports['index']=function(_0x201dda,_0x4a0f5a){var _0x498c2a={},_0x526c62={},_0x2f28f4={'count':0x0,'rows':[]};var _0x449399=_[_0xf0f3('0x29')](db[_0xf0f3('0x2a')]['rawAttributes'],function(_0x3ac140){return{'name':_0x3ac140[_0xf0f3('0x2b')],'type':_0x3ac140['type']['key']};});_0x526c62[_0xf0f3('0x2c')]=_[_0xf0f3('0x2d')](_[_0xf0f3('0x29')](_0x449399,'name'),['format']);_0x526c62[_0xf0f3('0x2e')]=_[_0xf0f3('0x2f')](_0x201dda[_0xf0f3('0x2e')]);_0x526c62['filters']=_[_0xf0f3('0x30')](_0x526c62['model'],_0x526c62[_0xf0f3('0x2e')]);_0x498c2a[_0xf0f3('0x31')]=_[_0xf0f3('0x30')](_0x526c62['model'],qs[_0xf0f3('0x32')](_0x201dda[_0xf0f3('0x2e')]['fields']));_0x498c2a[_0xf0f3('0x31')]=_0x498c2a[_0xf0f3('0x31')]['length']?_0x498c2a['attributes']:_0x526c62[_0xf0f3('0x2c')];if(!_0x201dda[_0xf0f3('0x2e')][_0xf0f3('0x33')]('nolimit')){_0x498c2a[_0xf0f3('0x1d')]=qs[_0xf0f3('0x1d')](_0x201dda[_0xf0f3('0x2e')][_0xf0f3('0x1d')]);_0x498c2a[_0xf0f3('0x1c')]=qs[_0xf0f3('0x1c')](_0x201dda[_0xf0f3('0x2e')]['offset']);}_0x498c2a[_0xf0f3('0x34')]=qs[_0xf0f3('0x35')](_0x201dda[_0xf0f3('0x2e')]['sort']);_0x498c2a[_0xf0f3('0x36')]=qs[_0xf0f3('0x37')](_['pick'](_0x201dda[_0xf0f3('0x2e')],_0x526c62[_0xf0f3('0x37')]),_0x449399);if(_0x201dda[_0xf0f3('0x2e')]['filter']){_0x498c2a[_0xf0f3('0x36')]=_[_0xf0f3('0x38')](_0x498c2a[_0xf0f3('0x36')],{'$or':_['map'](_0x449399,function(_0xf60b37){if(_0xf60b37[_0xf0f3('0x39')]!=='VIRTUAL'){var _0xe6f475={};_0xe6f475[_0xf60b37[_0xf0f3('0x3a')]]={'$like':'%'+_0x201dda[_0xf0f3('0x2e')][_0xf0f3('0x3b')]+'%'};return _0xe6f475;}})});}_0x498c2a=_['merge']({},_0x498c2a,_0x201dda['options']);var _0x2f09de={'where':_0x498c2a[_0xf0f3('0x36')]};return db[_0xf0f3('0x2a')][_0xf0f3('0x1f')](_0x2f09de)['then'](function(_0x55ee56){_0x2f28f4['count']=_0x55ee56;if(_0x201dda[_0xf0f3('0x2e')][_0xf0f3('0x3c')]){_0x498c2a[_0xf0f3('0x3d')]=[{'all':!![]}];}return db[_0xf0f3('0x2a')][_0xf0f3('0x3e')](_0x498c2a);})[_0xf0f3('0x24')](function(_0x1563c9){_0x2f28f4[_0xf0f3('0x3f')]=_0x1563c9;return _0x2f28f4;})['then'](respondWithFilteredResult(_0x4a0f5a,_0x498c2a))[_0xf0f3('0x40')](handleError(_0x4a0f5a,null));};exports[_0xf0f3('0x41')]=function(_0xb07c09,_0x5305f9){var _0x42787b={'raw':![],'where':{'id':_0xb07c09[_0xf0f3('0x42')]['id']}},_0x126abd={};_0x126abd[_0xf0f3('0x2c')]=_[_0xf0f3('0x2f')](db['VoiceRecording']['rawAttributes']);_0x126abd['query']=_[_0xf0f3('0x2f')](_0xb07c09[_0xf0f3('0x2e')]);_0x126abd[_0xf0f3('0x37')]=_['intersection'](_0x126abd['model'],_0x126abd[_0xf0f3('0x2e')]);_0x42787b[_0xf0f3('0x31')]=_[_0xf0f3('0x30')](_0x126abd[_0xf0f3('0x2c')],qs[_0xf0f3('0x32')](_0xb07c09['query']['fields']));_0x42787b[_0xf0f3('0x31')]=_0x42787b['attributes'][_0xf0f3('0x43')]?_0x42787b[_0xf0f3('0x31')]:_0x126abd[_0xf0f3('0x2c')];if(_0xb07c09[_0xf0f3('0x2e')][_0xf0f3('0x3c')]){_0x42787b[_0xf0f3('0x3d')]=[{'all':!![]}];}_0x42787b=_[_0xf0f3('0x38')]({},_0x42787b,_0xb07c09[_0xf0f3('0x44')]);return db[_0xf0f3('0x2a')][_0xf0f3('0x45')](_0x42787b)[_0xf0f3('0x24')](handleEntityNotFound(_0x5305f9,null))['then'](respondWithResult(_0x5305f9,null))[_0xf0f3('0x40')](handleError(_0x5305f9,null));};exports[_0xf0f3('0x46')]=function(_0x223c7d,_0x3b5e1e){return db[_0xf0f3('0x2a')][_0xf0f3('0x46')](_0x223c7d[_0xf0f3('0x47')],{})[_0xf0f3('0x24')](respondWithResult(_0x3b5e1e,0xc9))[_0xf0f3('0x40')](handleError(_0x3b5e1e,null));};exports[_0xf0f3('0x23')]=function(_0x1db806,_0x23fe23){if(_0x1db806['body']['id']){delete _0x1db806[_0xf0f3('0x47')]['id'];}return db[_0xf0f3('0x2a')][_0xf0f3('0x45')]({'where':{'id':_0x1db806[_0xf0f3('0x42')]['id']}})[_0xf0f3('0x24')](handleEntityNotFound(_0x23fe23,null))[_0xf0f3('0x24')](saveUpdates(_0x1db806['body'],null))[_0xf0f3('0x24')](respondWithResult(_0x23fe23,null))['catch'](handleError(_0x23fe23,null));};exports[_0xf0f3('0x48')]=function(_0x4004e6,_0x25eef3){return db[_0xf0f3('0x2a')][_0xf0f3('0x48')]()[_0xf0f3('0x24')](respondWithResult(_0x25eef3,null))['catch'](handleError(_0x25eef3,null));};exports[_0xf0f3('0x49')]=function(_0x441baa,_0x52fcc0,_0x25ffe3){var _0x2570e0=require(_0xf0f3('0x4a'));var _0x271ef7=![];var _0x9789ac={};if(_0x441baa[_0xf0f3('0x2e')][_0xf0f3('0x39')]&&_0x441baa[_0xf0f3('0x2e')][_0xf0f3('0x39')]===_0xf0f3('0x4b')){_0x9789ac[_0xf0f3('0x4b')]=_0x441baa[_0xf0f3('0x42')]['id'];}else{_0x9789ac['id']=_0x441baa[_0xf0f3('0x42')]['id'];}return db['VoiceRecording']['find']({'where':_0x9789ac,'attributes':['id',_0xf0f3('0x4c')],'raw':!![]})[_0xf0f3('0x24')](handleEntityNotFound(_0x52fcc0,null))[_0xf0f3('0x24')](function(_0xfd36c3){if(_0xfd36c3){var _0x14fcb9=_0xfd36c3[_0xf0f3('0x4c')];var _0x5df7fa=util[_0xf0f3('0x4d')](_0xf0f3('0x4e'),_0x14fcb9);if(fs['existsSync'](_0x5df7fa)){_0x271ef7=!![];return _0x2570e0[_0xf0f3('0x4f')](_0x5df7fa,_0x14fcb9,config[_0xf0f3('0x50')]['recording'])[_0xf0f3('0x24')](function(){return _0xfd36c3;});}return _0xfd36c3;}})[_0xf0f3('0x24')](function(_0x559e98){if(_0x559e98){var _0x2b0271=_0x559e98['value'];if(!fs[_0xf0f3('0x51')](_0x2b0271)){throw new db[(_0xf0f3('0x52'))][(_0xf0f3('0x53'))]('VoiceRecording\x20not\x20found');}if(_0x559e98[_0xf0f3('0x54')]){return _0x52fcc0['download'](_0x2b0271,_0x559e98['filename']+path[_0xf0f3('0x55')](_0x2b0271),function(){if(_0x271ef7){fs[_0xf0f3('0x56')](_0x2b0271);}});}else{return _0x52fcc0['download'](_0x2b0271,function(_0x3d9b7c){if(_0x271ef7){fs[_0xf0f3('0x56')](_0x2b0271);}});}}})[_0xf0f3('0x40')](function(_0x34fedb){if(_0x34fedb[_0xf0f3('0x57')]==='VoiceRecording\x20not\x20found'){_0x52fcc0[_0xf0f3('0x19')](0x194)[_0xf0f3('0x28')](_0xf0f3('0x58'));}else{return handleError(_0x52fcc0,null);}});};exports[_0xf0f3('0x59')]=function(_0x515c54,_0x1e8b21,_0x4de83b){var _0x58ac26=require('../../components/encryptor');var _0x5ad83d=![];var _0x571f4e={'$and':[db[_0xf0f3('0x5a')][_0xf0f3('0x36')](db[_0xf0f3('0x5a')]['fn'](_0xf0f3('0x5b'),db[_0xf0f3('0x5a')]['col'](_0xf0f3('0x4b'))),_0x515c54[_0xf0f3('0x2e')][_0xf0f3('0x5c')])]};if(_0x515c54['query'][_0xf0f3('0x39')]&&_0x515c54[_0xf0f3('0x2e')][_0xf0f3('0x39')]===_0xf0f3('0x4b')){_0x571f4e[_0xf0f3('0x5d')]['push']({'uniqueid':_0x515c54[_0xf0f3('0x42')]['id']});}else{_0x571f4e[_0xf0f3('0x5d')][_0xf0f3('0x5e')]({'id':_0x515c54[_0xf0f3('0x42')]['id']});}return db[_0xf0f3('0x2a')][_0xf0f3('0x45')]({'where':_0x571f4e,'attributes':['id',_0xf0f3('0x4c')],'raw':!![]})[_0xf0f3('0x24')](handleEntityNotFound(_0x1e8b21,null))[_0xf0f3('0x24')](function(_0x295604){if(_0x295604){var _0x2abca7=util['format']('%s.cypher',_0x295604['value']);if(fs['existsSync'](_0x2abca7)){_0x5ad83d=!![];return _0x58ac26['decryptFile'](_0x2abca7,_0x295604[_0xf0f3('0x4c')],config['secrets'][_0xf0f3('0x5f')])['then'](function(){return _0x295604;});}return _0x295604;}})[_0xf0f3('0x24')](function(_0x1b89e7){if(_0x1b89e7){if(!fs[_0xf0f3('0x51')](_0x1b89e7['value'])){throw new db['Sequelize']['ValidationError'](_0xf0f3('0x60'));}if(_0x1b89e7['filename']){return _0x1e8b21[_0xf0f3('0x49')](_0x1b89e7[_0xf0f3('0x4c')],_0x1b89e7['filename']+path[_0xf0f3('0x55')](_0x1b89e7[_0xf0f3('0x4c')]),function(){if(_0x5ad83d){fs[_0xf0f3('0x56')](_0x1b89e7['value']);}});}else{return _0x1e8b21['download'](_0x1b89e7[_0xf0f3('0x4c')],function(_0x16cc80){if(_0x5ad83d){fs[_0xf0f3('0x56')](_0x1b89e7[_0xf0f3('0x4c')]);}});}}})['catch'](handleError(_0x1e8b21,null));};exports[_0xf0f3('0x25')]=function(_0x37f495,_0x59e884){return db[_0xf0f3('0x2a')][_0xf0f3('0x45')]({'where':{'id':_0x37f495['params']['id']}})['then'](function(_0xcc8273){if(_[_0xf0f3('0x61')](_0xcc8273)){throw new ReferenceError(_0xf0f3('0x62'));}return _0xcc8273;})['then'](function(_0x1314e6){var _0x37b87d=_0x1314e6[_0xf0f3('0x4c')];logger[_0xf0f3('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x37b87d);if(!_[_0xf0f3('0x61')](_0x1314e6[_0xf0f3('0x4c')])&&fs[_0xf0f3('0x51')](_0x37b87d)){logger[_0xf0f3('0x63')](_0xf0f3('0x64')+_0x37b87d+_0xf0f3('0x65'));fs[_0xf0f3('0x66')](_0x37b87d);}_0x37b87d=_0x37b87d+_0xf0f3('0x67');if(!_['isNil'](_0x1314e6['value'])&&fs[_0xf0f3('0x51')](_0x37b87d)){logger[_0xf0f3('0x63')](_0xf0f3('0x64')+_0x37b87d+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xf0f3('0x66')](_0x37b87d);}return _0x1314e6;})[_0xf0f3('0x24')](function(_0x1f0ca4){if(!_0x1f0ca4)throw new InternalError();return _0x1f0ca4[_0xf0f3('0x25')]();})[_0xf0f3('0x24')](function(){_0x59e884[_0xf0f3('0x19')](0xcc)[_0xf0f3('0x1a')]();})['catch'](handleError(_0x59e884,null));};function getBucketslist(_0x14c0c0,_0x47ce1c,_0x2bb5ee){return new Promise(function(_0x17924e,_0x3d56dd){var _0x18a000=new AWS['S3']({'accessKeyId':_0x47ce1c,'secretAccessKey':_0x14c0c0,'region':_0x2bb5ee});_0x18a000[_0xf0f3('0x68')]({},function(_0x3054e7,_0x35efdd){if(_0x3054e7){return _0x3d56dd(_0x3054e7);}else{return _0x17924e(_0x35efdd);}});});}function createBucket(_0x46f3d3,_0x2d0f59,_0x2b734c,_0x3994ba){return new Promise(function(_0x42b0ca,_0x24ebd0){var _0x48bccb=new AWS['S3']({'accessKeyId':_0x2d0f59,'secretAccessKey':_0x46f3d3,'region':_0x2b734c});_0x48bccb[_0xf0f3('0x69')]({'Bucket':_0x3994ba},function(_0x35a702,_0x4f5d6b){if(_0x35a702){return _0x24ebd0(_0x35a702);}else{return _0x42b0ca(_0x4f5d6b);}});});}function uploadFile(_0x46edcd,_0x549280,_0xe1570e,_0x58e3d3,_0x57e80a,_0x1ef403){return new Promise(function(_0x3655e3,_0x337d14){var _0x27c715=new AWS['S3']({'accessKeyId':_0x549280,'secretAccessKey':_0x46edcd,'region':_0xe1570e});_0x27c715[_0xf0f3('0x6a')]({'Bucket':_0x58e3d3,'Key':_0x57e80a,'Body':_0x1ef403},function(_0x4daa4f,_0xda3c57){if(_0x4daa4f){return _0x337d14(_0x4daa4f);}else{return _0x3655e3(_0xda3c57);}});});}function startTranscribe(_0x1eca6a,_0x250974,_0xf85e8d,_0x235331,_0x21c0a7,_0x597760){return new Promise(function(_0xfdb30d,_0x10d53d){var _0x4c7656=new AWS['TranscribeService']({'accessKeyId':_0x250974,'secretAccessKey':_0x1eca6a,'region':_0xf85e8d});_0x4c7656[_0xf0f3('0x6b')]({'TranscriptionJobName':_0x235331,'LanguageCode':_0x21c0a7,'Media':{'MediaFileUri':_0x597760}},function(_0x2386ff,_0x5af111){if(_0x2386ff){return _0x10d53d(_0x2386ff);}else{return _0xfdb30d(_0x5af111);}});});}function transcribe(_0x169446,_0x22ae59,_0x20f2a8,_0x45fa42,_0x23ed0e,_0x35143c,_0x5474f0){return new Promise(function(_0x3eb251,_0x4400e5){var _0x56b7fa={};logger[_0xf0f3('0x63')](util[_0xf0f3('0x4d')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x169446,_0x23ed0e));return uploadFile(_0x22ae59,_0x20f2a8,_0x45fa42,_0x23ed0e,path['basename'](_0x35143c),fs['readFileSync'](_0x35143c))[_0xf0f3('0x24')](function(_0x544f7f){logger[_0xf0f3('0x63')](util[_0xf0f3('0x4d')](_0xf0f3('0x6c'),_0x169446,_0x23ed0e,_0x544f7f['Location']));_0x56b7fa[_0xf0f3('0x6d')]=_0x544f7f[_0xf0f3('0x6e')];_0x56b7fa['location']=_0x544f7f[_0xf0f3('0x6f')];logger['info'](util[_0xf0f3('0x4d')](_0xf0f3('0x70'),_0x169446));return startTranscribe(_0x22ae59,_0x20f2a8,_0x45fa42,uuidv4(),_0x5474f0,_0x544f7f['Location']);})[_0xf0f3('0x24')](function(_0x4f3c04){logger[_0xf0f3('0x63')](util[_0xf0f3('0x4d')](_0xf0f3('0x71'),_0x169446,_0x4f3c04[_0xf0f3('0x72')]['TranscriptionJobName']));_0x56b7fa[_0xf0f3('0x73')]=_0x4f3c04[_0xf0f3('0x72')][_0xf0f3('0x74')];_0x56b7fa['transcribeStatus']=_0x4f3c04['TranscriptionJob'][_0xf0f3('0x75')];return _0x3eb251(_0x56b7fa);})[_0xf0f3('0x40')](function(_0x54e7f6){return _0x4400e5(_0x54e7f6);});});}exports[_0xf0f3('0x76')]=function(_0x2b7cfc,_0x179dd6,_0x2e6641){var _0x2bc2ff;var _0x304e9c;var _0x6df92a;var _0x4ba687=require('../../components/encryptor');return db[_0xf0f3('0x2a')][_0xf0f3('0x77')]({'where':{'id':_0x2b7cfc[_0xf0f3('0x42')]['id']}})[_0xf0f3('0x24')](function(_0x12043f){if(_0x12043f){var _0x41b681=util[_0xf0f3('0x4d')](_0xf0f3('0x4e'),_0x12043f[_0xf0f3('0x4c')]);if(fs[_0xf0f3('0x51')](_0x41b681)){cypher=!![];return _0x4ba687['decryptFile'](_0x41b681,_0x12043f[_0xf0f3('0x4c')],config[_0xf0f3('0x50')][_0xf0f3('0x5f')])[_0xf0f3('0x24')](function(){return _0x12043f;});}return _0x12043f;}})[_0xf0f3('0x24')](function(_0x45cafd){if(!_0x45cafd){throw new db[(_0xf0f3('0x52'))][(_0xf0f3('0x53'))](_0xf0f3('0x78'));}_0x304e9c=_0x45cafd;return db[_0xf0f3('0x79')][_0xf0f3('0x77')]({'where':{'id':0x1}});})[_0xf0f3('0x24')](handleEntityNotFound(_0x179dd6,null))[_0xf0f3('0x24')](function(_0x213c6){if(_0x213c6){_0x2bc2ff=_0x213c6;if(!_0x2bc2ff[_0xf0f3('0x7a')]||!_0x2bc2ff[_0xf0f3('0x7b')]||!_0x2bc2ff[_0xf0f3('0x7c')]||!_0x2bc2ff[_0xf0f3('0x7d')]||!_0x2bc2ff[_0xf0f3('0x6d')]){throw new db[(_0xf0f3('0x52'))][(_0xf0f3('0x53'))]('Transcribe\x20not\x20configured');}if(_0x2b7cfc['body'][_0xf0f3('0x7e')]&&(!_0x2bc2ff[_0xf0f3('0x7f')]||!_0x2bc2ff['sentimentAccountId']||!_0x2bc2ff[_0xf0f3('0x80')]||!_0x2bc2ff['language']||!_0x2bc2ff[_0xf0f3('0x6d')])){throw new db[(_0xf0f3('0x52'))][(_0xf0f3('0x53'))](_0xf0f3('0x81'));}return db[_0xf0f3('0x82')][_0xf0f3('0x77')]({'where':{'id':_0x2bc2ff[_0xf0f3('0x7b')]}});}})[_0xf0f3('0x24')](function(_0x46f5ee){if(!_0x46f5ee){throw new db[(_0xf0f3('0x52'))][(_0xf0f3('0x53'))](_0xf0f3('0x83'));}if(!_0x46f5ee[_0xf0f3('0x84')]||!_0x46f5ee[_0xf0f3('0x85')]){throw new db[(_0xf0f3('0x52'))]['ValidationError'](_0xf0f3('0x86'));}_0x6df92a=_0x46f5ee;return getBucketslist(_0x6df92a[_0xf0f3('0x84')],_0x6df92a[_0xf0f3('0x85')],_0x2bc2ff[_0xf0f3('0x7c')]);})[_0xf0f3('0x24')](function(_0x2e9f2e){if(_0x2e9f2e&&_0x2e9f2e['Buckets']){var _0x58faa9=_['find'](_0x2e9f2e[_0xf0f3('0x87')],function(_0x10d6e8){return _0x10d6e8[_0xf0f3('0x88')]===_0x2bc2ff[_0xf0f3('0x6d')];});if(!_0x58faa9){logger[_0xf0f3('0x63')](util[_0xf0f3('0x4d')](_0xf0f3('0x89'),_0x2b7cfc['params']['id'],_0x2bc2ff['bucket']));return createBucket(_0x6df92a[_0xf0f3('0x84')],_0x6df92a[_0xf0f3('0x85')],_0x2bc2ff['transcribeRegion'],_0x2bc2ff['bucket']);}logger[_0xf0f3('0x63')](util[_0xf0f3('0x4d')](_0xf0f3('0x8a'),_0x2b7cfc[_0xf0f3('0x42')]['id'],_0x2bc2ff[_0xf0f3('0x6d')]));return;}})[_0xf0f3('0x24')](function(_0x5477ef){if(_0x304e9c['transcribeStatus']===_0xf0f3('0x8b')){return transcribe(_0x2b7cfc[_0xf0f3('0x42')]['id'],_0x6df92a[_0xf0f3('0x84')],_0x6df92a[_0xf0f3('0x85')],_0x2bc2ff[_0xf0f3('0x7c')],_0x2bc2ff[_0xf0f3('0x6d')],_0x304e9c[_0xf0f3('0x4c')],_0x2bc2ff[_0xf0f3('0x7d')]);}else{logger['info'](util[_0xf0f3('0x4d')](_0xf0f3('0x8c'),_0x2b7cfc['params']['id']));return{'transcribeStatus':_0xf0f3('0x8d')};}})[_0xf0f3('0x24')](function(_0x59f24c){if(_0x59f24c){_0x59f24c[_0xf0f3('0x8e')]=_0x2b7cfc[_0xf0f3('0x47')]['runSentiment'];return _0x304e9c[_0xf0f3('0x8f')](_0x59f24c);}})[_0xf0f3('0x24')](respondWithResult(_0x179dd6,null))[_0xf0f3('0x40')](handleError(_0x179dd6,null));};function writeFile(_0x426dc8,_0x27e8a5){return new Promise(function(_0x12a3c6,_0x11d028){fs[_0xf0f3('0x90')](_0x27e8a5,_0x426dc8,function(_0x4636d9,_0x5eae2e){if(_0x4636d9){return _0x11d028(_0x4636d9);}else{return _0x12a3c6(_0x5eae2e);}});});}exports[_0xf0f3('0x91')]=function(_0x1c62a4,_0x4e7710,_0xec5670){return db[_0xf0f3('0x2a')][_0xf0f3('0x77')]({'where':{'id':_0x1c62a4[_0xf0f3('0x42')]['id']}})[_0xf0f3('0x24')](handleEntityNotFound(_0x4e7710))['then'](function(_0x107d04){if(_0x107d04&&_0x107d04[_0xf0f3('0x92')]){var _0x4a6c6b=_0x107d04[_0xf0f3('0x92')];var _0x1251bf=config[_0xf0f3('0x93')]+_0xf0f3('0x94')+_0x107d04['id']+'.txt';if(fs[_0xf0f3('0x51')](_0x1251bf)){return _0x1251bf;}return writeFile(_0x4a6c6b,_0x1251bf)[_0xf0f3('0x24')](function(){return _0x1251bf;});}else{throw new db['Sequelize'][(_0xf0f3('0x53'))](_0xf0f3('0x95'));}})[_0xf0f3('0x24')](function(_0x19602d){return _0x4e7710[_0xf0f3('0x49')](_0x19602d);})[_0xf0f3('0x40')](handleError(_0x4e7710));};
\ No newline at end of file
+var _0x1eea=['Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','stack','name','index','map','VoiceRecording','rawAttributes','type','key','model','format','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','then','includeAll','include','catch','find','create','body','update','params','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','extname','unlink','send','downloads','sequelize','MD5','col','token','$and','push','filename','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','ValidationError','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured'];(function(_0x4b6507,_0x5518b5){var _0x2001ec=function(_0x330ddf){while(--_0x330ddf){_0x4b6507['push'](_0x4b6507['shift']());}};_0x2001ec(++_0x5518b5);}(_0x1eea,0x13d));var _0xa1ee=function(_0x74cd0,_0x3aeec3){_0x74cd0=_0x74cd0-0x0;var _0x4c2836=_0x1eea[_0x74cd0];return _0x4c2836;};'use strict';var emlformat=require(_0xa1ee('0x0'));var rimraf=require(_0xa1ee('0x1'));var zipdir=require(_0xa1ee('0x2'));var jsonpatch=require(_0xa1ee('0x3'));var rp=require(_0xa1ee('0x4'));var moment=require(_0xa1ee('0x5'));var BPromise=require(_0xa1ee('0x6'));var Mustache=require(_0xa1ee('0x7'));var util=require(_0xa1ee('0x8'));var path=require(_0xa1ee('0x9'));var sox=require(_0xa1ee('0xa'));var csv=require(_0xa1ee('0xb'));var ejs=require(_0xa1ee('0xc'));var fs=require('fs');var fs_extra=require(_0xa1ee('0xd'));var _=require(_0xa1ee('0xe'));var squel=require(_0xa1ee('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa1ee('0xb'));var querystring=require(_0xa1ee('0x10'));var Papa=require(_0xa1ee('0x11'));var AWS=require(_0xa1ee('0x12'));var uuidv4=require(_0xa1ee('0x13'));var Redis=require('ioredis');var authService=require(_0xa1ee('0x14'));var qs=require(_0xa1ee('0x15'));var as=require(_0xa1ee('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa1ee('0x17'));var utils=require(_0xa1ee('0x18'));var config=require(_0xa1ee('0x19'));var licenseUtil=require(_0xa1ee('0x1a'));var db=require(_0xa1ee('0x1b'))['db'];function respondWithStatusCode(_0x4b72fc,_0x36e6df){_0x36e6df=_0x36e6df||0xcc;return function(_0x557b7c){if(_0x557b7c){return _0x4b72fc[_0xa1ee('0x1c')](_0x36e6df);}return _0x4b72fc[_0xa1ee('0x1d')](_0x36e6df)[_0xa1ee('0x1e')]();};}function respondWithResult(_0x3a924d,_0x3974e6){_0x3974e6=_0x3974e6||0xc8;return function(_0x1d68bb){if(_0x1d68bb){return _0x3a924d[_0xa1ee('0x1d')](_0x3974e6)[_0xa1ee('0x1f')](_0x1d68bb);}};}function respondWithFilteredResult(_0x1ceac1,_0x4ed57f){return function(_0x19c066){if(_0x19c066){var _0x577ae7=typeof _0x4ed57f[_0xa1ee('0x20')]===_0xa1ee('0x21')&&typeof _0x4ed57f['limit']===_0xa1ee('0x21');var _0x19bb9b=_0x19c066[_0xa1ee('0x22')];var _0x177d8c=_0x577ae7?0x0:_0x4ed57f[_0xa1ee('0x20')];var _0x42dbfc=_0x577ae7?_0x19c066[_0xa1ee('0x22')]:_0x4ed57f['offset']+_0x4ed57f[_0xa1ee('0x23')];var _0x54ff08;if(_0x42dbfc>=_0x19bb9b){_0x42dbfc=_0x19bb9b;_0x54ff08=0xc8;}else{_0x54ff08=0xce;}_0x1ceac1[_0xa1ee('0x1d')](_0x54ff08);return _0x1ceac1[_0xa1ee('0x24')](_0xa1ee('0x25'),_0x177d8c+'-'+_0x42dbfc+'/'+_0x19bb9b)[_0xa1ee('0x1f')](_0x19c066);}return null;};}function patchUpdates(_0xef5c6d){return function(_0x2ef821){try{jsonpatch[_0xa1ee('0x26')](_0x2ef821,_0xef5c6d,!![]);}catch(_0x233b08){return BPromise[_0xa1ee('0x27')](_0x233b08);}return _0x2ef821[_0xa1ee('0x28')]();};}function saveUpdates(_0x4b07f0,_0x5a533b){return function(_0x1fd144){if(_0x1fd144){return _0x1fd144['update'](_0x4b07f0)['then'](function(_0x4b898c){return _0x4b898c;});}return null;};}function removeEntity(_0x9409c,_0x102475){return function(_0x37e145){if(_0x37e145){return _0x37e145[_0xa1ee('0x29')]()['then'](function(){_0x9409c[_0xa1ee('0x1d')](0xcc)[_0xa1ee('0x1e')]();});}};}function handleEntityNotFound(_0x91e693,_0x5eba63){return function(_0x29a162){if(!_0x29a162){_0x91e693[_0xa1ee('0x1c')](0x194);}return _0x29a162;};}function handleError(_0x485a7a,_0x1ea4f3){_0x1ea4f3=_0x1ea4f3||0x1f4;return function(_0x47f71d){logger['error'](_0x47f71d[_0xa1ee('0x2a')]);if(_0x47f71d[_0xa1ee('0x2b')]){delete _0x47f71d[_0xa1ee('0x2b')];}_0x485a7a[_0xa1ee('0x1d')](_0x1ea4f3)['send'](_0x47f71d);};}exports[_0xa1ee('0x2c')]=function(_0x6fbdd6,_0x54d181){var _0x48ab44={},_0x5afeb6={},_0x4d627f={'count':0x0,'rows':[]};var _0x4d3e65=_[_0xa1ee('0x2d')](db[_0xa1ee('0x2e')][_0xa1ee('0x2f')],function(_0x1e1613){return{'name':_0x1e1613['fieldName'],'type':_0x1e1613[_0xa1ee('0x30')][_0xa1ee('0x31')]};});_0x5afeb6[_0xa1ee('0x32')]=_['differenceBy'](_[_0xa1ee('0x2d')](_0x4d3e65,'name'),[_0xa1ee('0x33')]);_0x5afeb6[_0xa1ee('0x34')]=_[_0xa1ee('0x35')](_0x6fbdd6[_0xa1ee('0x34')]);_0x5afeb6[_0xa1ee('0x36')]=_['intersection'](_0x5afeb6[_0xa1ee('0x32')],_0x5afeb6[_0xa1ee('0x34')]);_0x48ab44[_0xa1ee('0x37')]=_[_0xa1ee('0x38')](_0x5afeb6['model'],qs['fields'](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x39')]));_0x48ab44[_0xa1ee('0x37')]=_0x48ab44[_0xa1ee('0x37')][_0xa1ee('0x3a')]?_0x48ab44[_0xa1ee('0x37')]:_0x5afeb6[_0xa1ee('0x32')];if(!_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x3b')](_0xa1ee('0x3c'))){_0x48ab44[_0xa1ee('0x23')]=qs[_0xa1ee('0x23')](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x23')]);_0x48ab44[_0xa1ee('0x20')]=qs[_0xa1ee('0x20')](_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x20')]);}_0x48ab44[_0xa1ee('0x3d')]=qs['sort'](_0x6fbdd6['query']['sort']);_0x48ab44[_0xa1ee('0x3e')]=qs[_0xa1ee('0x36')](_[_0xa1ee('0x3f')](_0x6fbdd6[_0xa1ee('0x34')],_0x5afeb6[_0xa1ee('0x36')]),_0x4d3e65);if(_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x40')]){_0x48ab44['where']=_[_0xa1ee('0x41')](_0x48ab44[_0xa1ee('0x3e')],{'$or':_[_0xa1ee('0x2d')](_0x4d3e65,function(_0x2abc2f){if(_0x2abc2f[_0xa1ee('0x30')]!=='VIRTUAL'){var _0x21c7de={};_0x21c7de[_0x2abc2f[_0xa1ee('0x2b')]]={'$like':'%'+_0x6fbdd6[_0xa1ee('0x34')][_0xa1ee('0x40')]+'%'};return _0x21c7de;}})});}_0x48ab44=_['merge']({},_0x48ab44,_0x6fbdd6[_0xa1ee('0x42')]);var _0x2b96a2={'where':_0x48ab44[_0xa1ee('0x3e')]};return db[_0xa1ee('0x2e')][_0xa1ee('0x22')](_0x2b96a2)[_0xa1ee('0x43')](function(_0x2178ff){_0x4d627f[_0xa1ee('0x22')]=_0x2178ff;if(_0x6fbdd6['query'][_0xa1ee('0x44')]){_0x48ab44[_0xa1ee('0x45')]=[{'all':!![]}];}return db[_0xa1ee('0x2e')]['findAll'](_0x48ab44);})['then'](function(_0x22cbe0){_0x4d627f['rows']=_0x22cbe0;return _0x4d627f;})[_0xa1ee('0x43')](respondWithFilteredResult(_0x54d181,_0x48ab44))[_0xa1ee('0x46')](handleError(_0x54d181,null));};exports['show']=function(_0xa5cd07,_0x4cf20e){var _0x15b1e6={'raw':![],'where':{'id':_0xa5cd07['params']['id']}},_0x1f14d3={};_0x1f14d3[_0xa1ee('0x32')]=_[_0xa1ee('0x35')](db[_0xa1ee('0x2e')][_0xa1ee('0x2f')]);_0x1f14d3[_0xa1ee('0x34')]=_['keys'](_0xa5cd07[_0xa1ee('0x34')]);_0x1f14d3[_0xa1ee('0x36')]=_['intersection'](_0x1f14d3['model'],_0x1f14d3[_0xa1ee('0x34')]);_0x15b1e6[_0xa1ee('0x37')]=_[_0xa1ee('0x38')](_0x1f14d3[_0xa1ee('0x32')],qs[_0xa1ee('0x39')](_0xa5cd07[_0xa1ee('0x34')][_0xa1ee('0x39')]));_0x15b1e6[_0xa1ee('0x37')]=_0x15b1e6[_0xa1ee('0x37')]['length']?_0x15b1e6['attributes']:_0x1f14d3['model'];if(_0xa5cd07['query'][_0xa1ee('0x44')]){_0x15b1e6['include']=[{'all':!![]}];}_0x15b1e6=_[_0xa1ee('0x41')]({},_0x15b1e6,_0xa5cd07['options']);return db['VoiceRecording'][_0xa1ee('0x47')](_0x15b1e6)[_0xa1ee('0x43')](handleEntityNotFound(_0x4cf20e,null))[_0xa1ee('0x43')](respondWithResult(_0x4cf20e,null))['catch'](handleError(_0x4cf20e,null));};exports[_0xa1ee('0x48')]=function(_0x2a558d,_0x5d4df7){return db[_0xa1ee('0x2e')][_0xa1ee('0x48')](_0x2a558d[_0xa1ee('0x49')],{})[_0xa1ee('0x43')](respondWithResult(_0x5d4df7,0xc9))['catch'](handleError(_0x5d4df7,null));};exports[_0xa1ee('0x4a')]=function(_0x9b11b1,_0x2c38b5){if(_0x9b11b1[_0xa1ee('0x49')]['id']){delete _0x9b11b1['body']['id'];}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':{'id':_0x9b11b1[_0xa1ee('0x4b')]['id']}})[_0xa1ee('0x43')](handleEntityNotFound(_0x2c38b5,null))[_0xa1ee('0x43')](saveUpdates(_0x9b11b1[_0xa1ee('0x49')],null))[_0xa1ee('0x43')](respondWithResult(_0x2c38b5,null))[_0xa1ee('0x46')](handleError(_0x2c38b5,null));};exports[_0xa1ee('0x4c')]=function(_0x1b01e8,_0x46fdc2){return db[_0xa1ee('0x2e')]['describe']()['then'](respondWithResult(_0x46fdc2,null))[_0xa1ee('0x46')](handleError(_0x46fdc2,null));};exports[_0xa1ee('0x4d')]=function(_0x50d56a,_0x206911,_0x102b98){var _0x2afba8=require(_0xa1ee('0x4e'));var _0x1f152f=![];var _0x469d66={};if(_0x50d56a[_0xa1ee('0x34')]['type']&&_0x50d56a[_0xa1ee('0x34')][_0xa1ee('0x30')]===_0xa1ee('0x4f')){_0x469d66[_0xa1ee('0x4f')]=_0x50d56a['params']['id'];}else{_0x469d66['id']=_0x50d56a[_0xa1ee('0x4b')]['id'];}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':_0x469d66,'attributes':['id',_0xa1ee('0x50')],'raw':!![]})[_0xa1ee('0x43')](handleEntityNotFound(_0x206911,null))[_0xa1ee('0x43')](function(_0x1e1792){if(_0x1e1792){var _0x20ccbc=_0x1e1792[_0xa1ee('0x50')];var _0x205e18=util[_0xa1ee('0x33')](_0xa1ee('0x51'),_0x20ccbc);if(fs[_0xa1ee('0x52')](_0x205e18)){_0x1f152f=!![];return _0x2afba8[_0xa1ee('0x53')](_0x205e18,_0x20ccbc,config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x1e1792;});}return _0x1e1792;}})['then'](function(_0xc7dec3){if(_0xc7dec3){var _0x40ca79=_0xc7dec3['value'];if(!fs[_0xa1ee('0x52')](_0x40ca79)){throw new db[(_0xa1ee('0x56'))]['ValidationError'](_0xa1ee('0x57'));}if(_0xc7dec3['filename']){return _0x206911['download'](_0x40ca79,_0xc7dec3['filename']+path[_0xa1ee('0x58')](_0x40ca79),function(){if(_0x1f152f){fs[_0xa1ee('0x59')](_0x40ca79);}});}else{return _0x206911[_0xa1ee('0x4d')](_0x40ca79,function(_0x1533fa){if(_0x1f152f){fs['unlink'](_0x40ca79);}});}}})[_0xa1ee('0x46')](function(_0x490b3a){if(_0x490b3a['message']==='VoiceRecording\x20not\x20found'){_0x206911['status'](0x194)[_0xa1ee('0x5a')]('Not\x20found');}else{return handleError(_0x206911,null);}});};exports[_0xa1ee('0x5b')]=function(_0x7e586f,_0x479ea9,_0x2769a7){var _0xab04cf=require(_0xa1ee('0x4e'));var _0x5cfdbf=![];var _0x5d0ef8={'$and':[db[_0xa1ee('0x5c')][_0xa1ee('0x3e')](db[_0xa1ee('0x5c')]['fn'](_0xa1ee('0x5d'),db[_0xa1ee('0x5c')][_0xa1ee('0x5e')](_0xa1ee('0x4f'))),_0x7e586f['query'][_0xa1ee('0x5f')])]};if(_0x7e586f[_0xa1ee('0x34')][_0xa1ee('0x30')]&&_0x7e586f[_0xa1ee('0x34')][_0xa1ee('0x30')]===_0xa1ee('0x4f')){_0x5d0ef8[_0xa1ee('0x60')]['push']({'uniqueid':_0x7e586f[_0xa1ee('0x4b')]['id']});}else{_0x5d0ef8['$and'][_0xa1ee('0x61')]({'id':_0x7e586f['params']['id']});}return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':_0x5d0ef8,'attributes':['id',_0xa1ee('0x50')],'raw':!![]})[_0xa1ee('0x43')](handleEntityNotFound(_0x479ea9,null))['then'](function(_0x52b49c){if(_0x52b49c){var _0x329714=util['format']('%s.cypher',_0x52b49c[_0xa1ee('0x50')]);if(fs[_0xa1ee('0x52')](_0x329714)){_0x5cfdbf=!![];return _0xab04cf['decryptFile'](_0x329714,_0x52b49c[_0xa1ee('0x50')],config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x52b49c;});}return _0x52b49c;}})['then'](function(_0x1412cf){if(_0x1412cf){if(!fs[_0xa1ee('0x52')](_0x1412cf[_0xa1ee('0x50')])){throw new db[(_0xa1ee('0x56'))]['ValidationError'](_0xa1ee('0x57'));}if(_0x1412cf[_0xa1ee('0x62')]){return _0x479ea9[_0xa1ee('0x4d')](_0x1412cf[_0xa1ee('0x50')],_0x1412cf[_0xa1ee('0x62')]+path['extname'](_0x1412cf[_0xa1ee('0x50')]),function(){if(_0x5cfdbf){fs[_0xa1ee('0x59')](_0x1412cf['value']);}});}else{return _0x479ea9[_0xa1ee('0x4d')](_0x1412cf[_0xa1ee('0x50')],function(_0x1960c0){if(_0x5cfdbf){fs[_0xa1ee('0x59')](_0x1412cf['value']);}});}}})[_0xa1ee('0x46')](handleError(_0x479ea9,null));};exports[_0xa1ee('0x29')]=function(_0x395a70,_0x2e959e){return db[_0xa1ee('0x2e')][_0xa1ee('0x47')]({'where':{'id':_0x395a70['params']['id']}})[_0xa1ee('0x43')](function(_0x2400ad){if(_[_0xa1ee('0x63')](_0x2400ad)){throw new ReferenceError(_0xa1ee('0x64'));}return _0x2400ad;})[_0xa1ee('0x43')](function(_0x31dab5){var _0xec474b=_0x31dab5[_0xa1ee('0x50')];logger[_0xa1ee('0x65')](_0xa1ee('0x66'),_0xec474b);if(!_[_0xa1ee('0x63')](_0x31dab5['value'])&&fs[_0xa1ee('0x52')](_0xec474b)){logger['info'](_0xa1ee('0x67')+_0xec474b+_0xa1ee('0x68'));fs[_0xa1ee('0x69')](_0xec474b);}_0xec474b=_0xec474b+_0xa1ee('0x6a');if(!_[_0xa1ee('0x63')](_0x31dab5['value'])&&fs[_0xa1ee('0x52')](_0xec474b)){logger[_0xa1ee('0x65')](_0xa1ee('0x67')+_0xec474b+_0xa1ee('0x68'));fs[_0xa1ee('0x69')](_0xec474b);}return _0x31dab5;})[_0xa1ee('0x43')](function(_0x4dfcca){if(!_0x4dfcca)throw new InternalError();return _0x4dfcca['destroy']();})[_0xa1ee('0x43')](function(){_0x2e959e[_0xa1ee('0x1d')](0xcc)[_0xa1ee('0x1e')]();})['catch'](handleError(_0x2e959e,null));};function getBucketslist(_0x2b81d9,_0x7905d0,_0xf64797){return new Promise(function(_0x25c4e1,_0x185243){var _0x5f0bb9=new AWS['S3']({'accessKeyId':_0x7905d0,'secretAccessKey':_0x2b81d9,'region':_0xf64797});_0x5f0bb9[_0xa1ee('0x6b')]({},function(_0x2e19ef,_0x38b035){if(_0x2e19ef){return _0x185243(_0x2e19ef);}else{return _0x25c4e1(_0x38b035);}});});}function createBucket(_0x23eb36,_0x50a185,_0x425df5,_0x19d791){return new Promise(function(_0x3f695c,_0x1295fb){var _0x517fed=new AWS['S3']({'accessKeyId':_0x50a185,'secretAccessKey':_0x23eb36,'region':_0x425df5});_0x517fed['createBucket']({'Bucket':_0x19d791},function(_0x1ee6a7,_0x20e5da){if(_0x1ee6a7){return _0x1295fb(_0x1ee6a7);}else{return _0x3f695c(_0x20e5da);}});});}function uploadFile(_0xd807a2,_0x2d753a,_0x9eefcb,_0x334633,_0x3343f1,_0x193ade){return new Promise(function(_0x20e05f,_0x5ed681){var _0x14e196=new AWS['S3']({'accessKeyId':_0x2d753a,'secretAccessKey':_0xd807a2,'region':_0x9eefcb});_0x14e196[_0xa1ee('0x6c')]({'Bucket':_0x334633,'Key':_0x3343f1,'Body':_0x193ade},function(_0x783a86,_0x80dc16){if(_0x783a86){return _0x5ed681(_0x783a86);}else{return _0x20e05f(_0x80dc16);}});});}function startTranscribe(_0x589852,_0x18d389,_0x36b77b,_0x16229c,_0x45ae32,_0x27bc08){return new Promise(function(_0x26e78b,_0x42f639){var _0x41af05=new AWS[(_0xa1ee('0x6d'))]({'accessKeyId':_0x18d389,'secretAccessKey':_0x589852,'region':_0x36b77b});_0x41af05[_0xa1ee('0x6e')]({'TranscriptionJobName':_0x16229c,'LanguageCode':_0x45ae32,'Media':{'MediaFileUri':_0x27bc08}},function(_0x42d62e,_0x3313f3){if(_0x42d62e){return _0x42f639(_0x42d62e);}else{return _0x26e78b(_0x3313f3);}});});}function transcribe(_0x5bf453,_0x36fe97,_0x3f3b7f,_0x16d25b,_0x3377c1,_0x146c58,_0x4541ce){return new Promise(function(_0x4b5c37,_0x131c69){var _0x23b388={};logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x6f'),_0x5bf453,_0x3377c1));return uploadFile(_0x36fe97,_0x3f3b7f,_0x16d25b,_0x3377c1,path[_0xa1ee('0x70')](_0x146c58),fs[_0xa1ee('0x71')](_0x146c58))[_0xa1ee('0x43')](function(_0x240e7a){logger[_0xa1ee('0x65')](util['format'](_0xa1ee('0x72'),_0x5bf453,_0x3377c1,_0x240e7a[_0xa1ee('0x73')]));_0x23b388[_0xa1ee('0x74')]=_0x240e7a['Bucket'];_0x23b388[_0xa1ee('0x75')]=_0x240e7a[_0xa1ee('0x73')];logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x76'),_0x5bf453));return startTranscribe(_0x36fe97,_0x3f3b7f,_0x16d25b,uuidv4(),_0x4541ce,_0x240e7a[_0xa1ee('0x73')]);})[_0xa1ee('0x43')](function(_0x36e0c8){logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x77'),_0x5bf453,_0x36e0c8[_0xa1ee('0x78')][_0xa1ee('0x79')]));_0x23b388[_0xa1ee('0x7a')]=_0x36e0c8['TranscriptionJob'][_0xa1ee('0x79')];_0x23b388[_0xa1ee('0x7b')]=_0x36e0c8[_0xa1ee('0x78')]['TranscriptionJobStatus'];return _0x4b5c37(_0x23b388);})[_0xa1ee('0x46')](function(_0x260aaa){return _0x131c69(_0x260aaa);});});}exports[_0xa1ee('0x7c')]=function(_0x3a8c66,_0xe4c696,_0x57c7b4){var _0x2ff99d;var _0x3b39a0;var _0x4eb47a;var _0x57237b=require(_0xa1ee('0x4e'));return db[_0xa1ee('0x2e')]['findOne']({'where':{'id':_0x3a8c66['params']['id']}})[_0xa1ee('0x43')](function(_0x277319){if(_0x277319){var _0x10d30e=util[_0xa1ee('0x33')]('%s.cypher',_0x277319[_0xa1ee('0x50')]);if(fs[_0xa1ee('0x52')](_0x10d30e)){cypher=!![];return _0x57237b[_0xa1ee('0x53')](_0x10d30e,_0x277319[_0xa1ee('0x50')],config[_0xa1ee('0x54')][_0xa1ee('0x55')])[_0xa1ee('0x43')](function(){return _0x277319;});}return _0x277319;}})['then'](function(_0x5288e6){if(!_0x5288e6){throw new db['Sequelize']['ValidationError'](_0xa1ee('0x7d'));}_0x3b39a0=_0x5288e6;return db[_0xa1ee('0x7e')][_0xa1ee('0x7f')]({'where':{'id':0x1}});})[_0xa1ee('0x43')](handleEntityNotFound(_0xe4c696,null))[_0xa1ee('0x43')](function(_0x16754a){if(_0x16754a){_0x2ff99d=_0x16754a;if(!_0x2ff99d[_0xa1ee('0x80')]||!_0x2ff99d[_0xa1ee('0x81')]||!_0x2ff99d[_0xa1ee('0x82')]||!_0x2ff99d[_0xa1ee('0x83')]||!_0x2ff99d['bucket']){throw new db['Sequelize'][(_0xa1ee('0x84'))](_0xa1ee('0x85'));}if(_0x3a8c66['body'][_0xa1ee('0x86')]&&(!_0x2ff99d[_0xa1ee('0x87')]||!_0x2ff99d[_0xa1ee('0x88')]||!_0x2ff99d[_0xa1ee('0x89')]||!_0x2ff99d['language']||!_0x2ff99d[_0xa1ee('0x74')])){throw new db['Sequelize']['ValidationError'](_0xa1ee('0x8a'));}return db['CloudProvider'][_0xa1ee('0x7f')]({'where':{'id':_0x2ff99d[_0xa1ee('0x81')]}});}})[_0xa1ee('0x43')](function(_0x54f71b){if(!_0x54f71b){throw new db[(_0xa1ee('0x56'))][(_0xa1ee('0x84'))](_0xa1ee('0x8b'));}if(!_0x54f71b['data1']||!_0x54f71b[_0xa1ee('0x8c')]){throw new db[(_0xa1ee('0x56'))][(_0xa1ee('0x84'))](_0xa1ee('0x8d'));}_0x4eb47a=_0x54f71b;return getBucketslist(_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d[_0xa1ee('0x82')]);})['then'](function(_0x4ea24e){if(_0x4ea24e&&_0x4ea24e[_0xa1ee('0x8f')]){var _0x2563eb=_[_0xa1ee('0x47')](_0x4ea24e[_0xa1ee('0x8f')],function(_0x3a0740){return _0x3a0740[_0xa1ee('0x90')]===_0x2ff99d[_0xa1ee('0x74')];});if(!_0x2563eb){logger['info'](util['format'](_0xa1ee('0x91'),_0x3a8c66[_0xa1ee('0x4b')]['id'],_0x2ff99d[_0xa1ee('0x74')]));return createBucket(_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d[_0xa1ee('0x82')],_0x2ff99d['bucket']);}logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')](_0xa1ee('0x92'),_0x3a8c66['params']['id'],_0x2ff99d[_0xa1ee('0x74')]));return;}})[_0xa1ee('0x43')](function(_0x4e15b2){if(_0x3b39a0[_0xa1ee('0x7b')]===_0xa1ee('0x93')){return transcribe(_0x3a8c66[_0xa1ee('0x4b')]['id'],_0x4eb47a[_0xa1ee('0x8e')],_0x4eb47a[_0xa1ee('0x8c')],_0x2ff99d['transcribeRegion'],_0x2ff99d['bucket'],_0x3b39a0[_0xa1ee('0x50')],_0x2ff99d[_0xa1ee('0x83')]);}else{logger[_0xa1ee('0x65')](util[_0xa1ee('0x33')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3a8c66['params']['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0xa1ee('0x43')](function(_0x2f92d2){if(_0x2f92d2){_0x2f92d2['tempSentiment']=_0x3a8c66['body'][_0xa1ee('0x86')];return _0x3b39a0['updateAttributes'](_0x2f92d2);}})[_0xa1ee('0x43')](respondWithResult(_0xe4c696,null))[_0xa1ee('0x46')](handleError(_0xe4c696,null));};function writeFile(_0x3c0250,_0xe0e9f2){return new Promise(function(_0x5b141b,_0x337929){fs['writeFile'](_0xe0e9f2,_0x3c0250,function(_0x5ec447,_0x46daa2){if(_0x5ec447){return _0x337929(_0x5ec447);}else{return _0x5b141b(_0x46daa2);}});});}exports[_0xa1ee('0x94')]=function(_0x5acf0d,_0x43b927,_0x4ef78e){return db[_0xa1ee('0x2e')][_0xa1ee('0x7f')]({'where':{'id':_0x5acf0d[_0xa1ee('0x4b')]['id']}})[_0xa1ee('0x43')](handleEntityNotFound(_0x43b927))[_0xa1ee('0x43')](function(_0x21d8ce){if(_0x21d8ce&&_0x21d8ce[_0xa1ee('0x95')]){var _0x217964=_0x21d8ce[_0xa1ee('0x95')];var _0x4f5fa9=config[_0xa1ee('0x96')]+_0xa1ee('0x97')+_0x21d8ce['id']+'.txt';if(fs[_0xa1ee('0x52')](_0x4f5fa9)){return _0x4f5fa9;}return writeFile(_0x217964,_0x4f5fa9)['then'](function(){return _0x4f5fa9;});}else{throw new db['Sequelize']['ValidationError']('Transcript\x20not\x20available');}})[_0xa1ee('0x43')](function(_0x3a5ecb){return _0x43b927['download'](_0x3a5ecb);})[_0xa1ee('0x46')](handleError(_0x43b927));};
\ No newline at end of file
index db70ff4..f3f27e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ebe=['exports','define','VoiceRecording','voice_recordings','transcribeStatus'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x5ebe,0x69));var _0xe5eb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5ebe[_0x20a584];return _0x4b41a8;};'use strict';var attributes=require('./voiceRecording.attributes');module[_0xe5eb('0x0')]=function(_0x3d71a9,_0x12cbfd){return _0x3d71a9[_0xe5eb('0x1')](_0xe5eb('0x2'),attributes,{'tableName':_0xe5eb('0x3'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']},{'name':_0xe5eb('0x4'),'fields':[_0xe5eb('0x4')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc252=['./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x843465,_0x31002c){var _0x53560b=function(_0x2e7b30){while(--_0x2e7b30){_0x843465['push'](_0x843465['shift']());}};_0x53560b(++_0x31002c);}(_0xc252,0x118));var _0x2c25=function(_0x4998e9,_0x145977){_0x4998e9=_0x4998e9-0x0;var _0x1787bb=_0xc252[_0x4998e9];return _0x1787bb;};'use strict';var attributes=require(_0x2c25('0x0'));module[_0x2c25('0x1')]=function(_0x34155a,_0x2755dd){return _0x34155a[_0x2c25('0x2')](_0x2c25('0x3'),attributes,{'tableName':_0x2c25('0x4'),'paranoid':![],'indexes':[{'name':_0x2c25('0x5'),'fields':['uniqueid']},{'name':'transcribeStatus','fields':[_0x2c25('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
index 74a20a3..56e936a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['VoiceRecording','update','body','options','where','attributes','limit','../../components/encryptor','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateVoiceRecording'];(function(_0x221bdc,_0x355c51){var _0x3493a2=function(_0x299e7c){while(--_0x299e7c){_0x221bdc['push'](_0x221bdc['shift']());}};_0x3493a2(++_0x355c51);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf2e3[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c0864,_0xdf499f,_0x12c6e7){return new BPromise(function(_0x11067d,_0x3636f6){return client[_0x3f2e('0xc')](_0x3c0864,_0x12c6e7)[_0x3f2e('0xd')](function(_0x29a6cc){logger[_0x3f2e('0xe')](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));logger[_0x3f2e('0x11')](_0x3f2e('0x12'),_0xdf499f,_0x3f2e('0x10'),JSON[_0x3f2e('0x13')](_0x29a6cc));if(_0x29a6cc[_0x3f2e('0x14')]){if(_0x29a6cc[_0x3f2e('0x14')]['code']===0x1f4){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x3636f6(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x11067d(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}else{logger['info'](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));_0x11067d(_0x29a6cc[_0x3f2e('0x16')][_0x3f2e('0x15')]);}})[_0x3f2e('0x17')](function(_0x2fef73){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x2fef73);_0x3636f6(_0x2fef73);});});}exports[_0x3f2e('0x18')]=function(_0xc00add){var _0x107876=this;return new Promise(function(_0x5b9989,_0x40e28f){return db[_0x3f2e('0x19')][_0x3f2e('0x1a')](_0xc00add[_0x3f2e('0x1b')],{'raw':_0xc00add[_0x3f2e('0x1c')]?_0xc00add['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc00add[_0x3f2e('0x1c')]?_0xc00add[_0x3f2e('0x1c')][_0x3f2e('0x1d')]||null:null,'attributes':_0xc00add[_0x3f2e('0x1c')]?_0xc00add[_0x3f2e('0x1c')][_0x3f2e('0x1e')]||null:null,'limit':_0xc00add['options']?_0xc00add['options'][_0x3f2e('0x1f')]||null:null})[_0x3f2e('0xd')](function(_0x5a66d6){logger['info'](_0x3f2e('0x18'),_0xc00add);logger['debug'](_0x3f2e('0x18'),_0xc00add,JSON[_0x3f2e('0x13')](_0x5a66d6));_0x5b9989(_0x5a66d6);})['catch'](function(_0x584169){logger['error'](_0x3f2e('0x18'),_0x584169[_0x3f2e('0x15')],_0xc00add);_0x40e28f(_0x107876['error'](0x1f4,_0x584169[_0x3f2e('0x15')]));});});};exports['CreateVoiceRecording']=function(_0x1ad875){var _0x598541=this;return new Promise(function(_0x2806d0,_0x8247fa){var _0x12926e=require(_0x3f2e('0x20'));var _0x11bad1;return db['Setting'][_0x3f2e('0x21')]({'attributes':['id',_0x3f2e('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x528063){_0x11bad1=_0x528063;return db[_0x3f2e('0x19')][_0x3f2e('0x23')](_0x1ad875[_0x3f2e('0x1b')]);})[_0x3f2e('0xd')](function(_0x5452f5){if(_0x11bad1[_0x3f2e('0x22')]&&fs[_0x3f2e('0x24')](_0x5452f5[_0x3f2e('0x25')])){var _0x4d9b8c=util[_0x3f2e('0x26')](_0x3f2e('0x27'),_0x5452f5[_0x3f2e('0x25')]);return _0x12926e['encryptFile'](_0x5452f5[_0x3f2e('0x25')],_0x4d9b8c,config[_0x3f2e('0x28')][_0x3f2e('0x29')])[_0x3f2e('0xd')](function(){fs[_0x3f2e('0x2a')](_0x5452f5[_0x3f2e('0x25')]);logger['info'](_0x3f2e('0x2b'));return _0x5452f5;});}return _0x5452f5;})[_0x3f2e('0xd')](function(_0x3101c4){logger[_0x3f2e('0xe')](_0x3f2e('0x2c'),_0x1ad875);logger[_0x3f2e('0x11')](_0x3f2e('0x2c'),_0x1ad875,JSON['stringify'](_0x3101c4));_0x2806d0(_0x3101c4);})[_0x3f2e('0x17')](function(_0x1e4866){logger[_0x3f2e('0x14')](_0x3f2e('0x2c'),_0x1e4866['message'],_0x1ad875);_0x8247fa(_0x598541['error'](0x1f4,_0x1e4866[_0x3f2e('0x15')]));});});};
\ No newline at end of file
+var _0x1a85=['existsSync','value','format','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create'];(function(_0x2ad975,_0x564307){var _0x10d72a=function(_0x3e5363){while(--_0x3e5363){_0x2ad975['push'](_0x2ad975['shift']());}};_0x10d72a(++_0x564307);}(_0x1a85,0x178));var _0x51a8=function(_0x31ddea,_0x40de6d){_0x31ddea=_0x31ddea-0x0;var _0x12539b=_0x1a85[_0x31ddea];return _0x12539b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5cf430,_0x331117,_0x16a21e){return new BPromise(function(_0x4f3919,_0x228c64){return client['request'](_0x5cf430,_0x16a21e)['then'](function(_0x39e06a){logger[_0x51a8('0x8')](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));logger[_0x51a8('0xb')](_0x51a8('0xc'),_0x331117,_0x51a8('0xa'),JSON[_0x51a8('0xd')](_0x39e06a));if(_0x39e06a[_0x51a8('0xe')]){if(_0x39e06a[_0x51a8('0xe')][_0x51a8('0xf')]===0x1f4){logger[_0x51a8('0xe')](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x228c64(_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);}logger['error'](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x4f3919(_0x39e06a['error'][_0x51a8('0x10')]);}else{logger['info'](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));_0x4f3919(_0x39e06a[_0x51a8('0x11')][_0x51a8('0x10')]);}})[_0x51a8('0x12')](function(_0x3e0603){logger[_0x51a8('0xe')]('VoiceRecording,\x20%s,\x20%s',_0x331117,_0x3e0603);_0x228c64(_0x3e0603);});});}exports[_0x51a8('0x13')]=function(_0x45a433){var _0xd52230=this;return new Promise(function(_0x23539e,_0x3bc1a2){return db[_0x51a8('0x14')]['update'](_0x45a433[_0x51a8('0x15')],{'raw':_0x45a433[_0x51a8('0x16')]?_0x45a433[_0x51a8('0x16')][_0x51a8('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45a433[_0x51a8('0x16')]?_0x45a433[_0x51a8('0x16')][_0x51a8('0x18')]||null:null,'attributes':_0x45a433[_0x51a8('0x16')]?_0x45a433['options'][_0x51a8('0x19')]||null:null,'limit':_0x45a433['options']?_0x45a433[_0x51a8('0x16')][_0x51a8('0x1a')]||null:null})[_0x51a8('0x1b')](function(_0x3759d6){logger['info'](_0x51a8('0x13'),_0x45a433);logger['debug']('UpdateVoiceRecording',_0x45a433,JSON[_0x51a8('0xd')](_0x3759d6));_0x23539e(_0x3759d6);})['catch'](function(_0x384d25){logger[_0x51a8('0xe')](_0x51a8('0x13'),_0x384d25[_0x51a8('0x10')],_0x45a433);_0x3bc1a2(_0xd52230[_0x51a8('0xe')](0x1f4,_0x384d25[_0x51a8('0x10')]));});});};exports[_0x51a8('0x1c')]=function(_0x1326a2){var _0x5b3f49=this;return new Promise(function(_0x273ce2,_0x1b7577){var _0xca5746=require(_0x51a8('0x1d'));var _0x1c150d;return db[_0x51a8('0x1e')][_0x51a8('0x1f')]({'attributes':['id',_0x51a8('0x20')],'where':{'id':0x1},'raw':!![]})[_0x51a8('0x1b')](function(_0x4b5cda){_0x1c150d=_0x4b5cda;return db[_0x51a8('0x14')][_0x51a8('0x21')](_0x1326a2['body']);})[_0x51a8('0x1b')](function(_0x58cba0){if(_0x1c150d[_0x51a8('0x20')]&&fs[_0x51a8('0x22')](_0x58cba0[_0x51a8('0x23')])){var _0x41df56=util[_0x51a8('0x24')]('%s.cypher',_0x58cba0[_0x51a8('0x23')]);return _0xca5746['encryptFile'](_0x58cba0[_0x51a8('0x23')],_0x41df56,config[_0x51a8('0x25')][_0x51a8('0x26')])['then'](function(){fs[_0x51a8('0x27')](_0x58cba0['value']);logger[_0x51a8('0x8')](_0x51a8('0x28'));return _0x58cba0;});}return _0x58cba0;})[_0x51a8('0x1b')](function(_0x224099){logger[_0x51a8('0x8')]('CreateVoiceRecording',_0x1326a2);logger[_0x51a8('0xb')]('CreateVoiceRecording',_0x1326a2,JSON[_0x51a8('0xd')](_0x224099));_0x273ce2(_0x224099);})[_0x51a8('0x12')](function(_0x41561a){logger['error'](_0x51a8('0x1c'),_0x41561a[_0x51a8('0x10')],_0x1326a2);_0x1b7577(_0x5b3f49[_0x51a8('0xe')](0x1f4,_0x41561a[_0x51a8('0x10')]));});});};
\ No newline at end of file
index c9b1113..5137967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b2a=['fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','index','/describe','isAuthenticated','describe','show','create','put','/:id','update','delete','destroy','exports','util','path'];(function(_0x1245cf,_0x44c448){var _0x51500e=function(_0x2c3801){while(--_0x2c3801){_0x1245cf['push'](_0x1245cf['shift']());}};_0x51500e(++_0x44c448);}(_0x1b2a,0x154));var _0xa1b2=function(_0x17ff02,_0xb84fd3){_0x17ff02=_0x17ff02-0x0;var _0x339e9b=_0x1b2a[_0x17ff02];return _0x339e9b;};'use strict';var multer=require('multer');var util=require(_0xa1b2('0x0'));var path=require(_0xa1b2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa1b2('0x2'));var auth=require(_0xa1b2('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xa1b2('0x4'));var controller=require(_0xa1b2('0x5'));router[_0xa1b2('0x6')]('/',auth['isAuthenticated'](),controller[_0xa1b2('0x7')]);router[_0xa1b2('0x6')](_0xa1b2('0x8'),auth[_0xa1b2('0x9')](),controller[_0xa1b2('0xa')]);router[_0xa1b2('0x6')]('/:id',auth[_0xa1b2('0x9')](),controller[_0xa1b2('0xb')]);router['post']('/',auth[_0xa1b2('0x9')](),controller[_0xa1b2('0xc')]);router[_0xa1b2('0xd')](_0xa1b2('0xe'),auth[_0xa1b2('0x9')](),controller[_0xa1b2('0xf')]);router[_0xa1b2('0x10')]('/:id',auth[_0xa1b2('0x9')](),controller[_0xa1b2('0x11')]);module[_0xa1b2('0x12')]=router;
\ No newline at end of file
+var _0x5c4c=['delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update'];(function(_0x35c5e9,_0x30de92){var _0x258216=function(_0x1e5c2){while(--_0x1e5c2){_0x35c5e9['push'](_0x35c5e9['shift']());}};_0x258216(++_0x30de92);}(_0x5c4c,0xa3));var _0xc5c4=function(_0x4f5328,_0x3815af){_0x4f5328=_0x4f5328-0x0;var _0x1f2143=_0x5c4c[_0x4f5328];return _0x1f2143;};'use strict';var multer=require('multer');var util=require(_0xc5c4('0x0'));var path=require(_0xc5c4('0x1'));var timeout=require(_0xc5c4('0x2'));var express=require(_0xc5c4('0x3'));var router=express[_0xc5c4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc5c4('0x5'));var interaction=require(_0xc5c4('0x6'));var config=require('../../config/environment');var controller=require(_0xc5c4('0x7'));router[_0xc5c4('0x8')]('/',auth[_0xc5c4('0x9')](),controller[_0xc5c4('0xa')]);router[_0xc5c4('0x8')](_0xc5c4('0xb'),auth[_0xc5c4('0x9')](),controller[_0xc5c4('0xc')]);router[_0xc5c4('0x8')](_0xc5c4('0xd'),auth[_0xc5c4('0x9')](),controller['show']);router[_0xc5c4('0xe')]('/',auth[_0xc5c4('0x9')](),controller['create']);router[_0xc5c4('0xf')](_0xc5c4('0xd'),auth[_0xc5c4('0x9')](),controller[_0xc5c4('0x10')]);router[_0xc5c4('0x11')](_0xc5c4('0xd'),auth['isAuthenticated'](),controller[_0xc5c4('0x12')]);module[_0xc5c4('0x13')]=router;
\ No newline at end of file
index 3c33b48..62a210a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222c=['Yes','sequelize','moment','blind','attended','STRING','ENUM'];(function(_0x413aac,_0x5e2430){var _0x569b11=function(_0x52e060){while(--_0x52e060){_0x413aac['push'](_0x413aac['shift']());}};_0x569b11(++_0x5e2430);}(_0x222c,0x189));var _0xc222=function(_0x996f4b,_0x2e5fee){_0x996f4b=_0x996f4b-0x0;var _0x3b6074=_0x222c[_0x996f4b];return _0x3b6074;};'use strict';var Sequelize=require(_0xc222('0x0'));var moment=require(_0xc222('0x1'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xc222('0x2'),_0xc222('0x3'))},'result':{'type':Sequelize[_0xc222('0x4')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xc222('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xc222('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0xc222('0x4')]},'transfererexten':{'type':Sequelize[_0xc222('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xc222('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0xc222('0x4')]},'transfereecalleridname':{'type':Sequelize[_0xc222('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xc222('0x4')]},'transfereecontext':{'type':Sequelize[_0xc222('0x4')]},'transfereeexten':{'type':Sequelize[_0xc222('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0xc222('0x5')](_0xc222('0x6'),'No')},'context':{'type':Sequelize[_0xc222('0x4')]},'extension':{'type':Sequelize[_0xc222('0x4')]}};
\ No newline at end of file
+var _0x69d6=['ENUM','Yes','sequelize','moment','exports','blind','attended','STRING'];(function(_0x3a13ad,_0xa03fc4){var _0x442f3e=function(_0x1ef012){while(--_0x1ef012){_0x3a13ad['push'](_0x3a13ad['shift']());}};_0x442f3e(++_0xa03fc4);}(_0x69d6,0x1b2));var _0x669d=function(_0x192e49,_0x20c95a){_0x192e49=_0x192e49-0x0;var _0x4cf1a5=_0x69d6[_0x192e49];return _0x4cf1a5;};'use strict';var Sequelize=require(_0x669d('0x0'));var moment=require(_0x669d('0x1'));module[_0x669d('0x2')]={'type':{'type':Sequelize['ENUM'](_0x669d('0x3'),_0x669d('0x4'))},'result':{'type':Sequelize[_0x669d('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0x669d('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x669d('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x669d('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x669d('0x5')]},'transferercontext':{'type':Sequelize[_0x669d('0x5')]},'transfererexten':{'type':Sequelize[_0x669d('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x669d('0x5')]},'transfereechannel':{'type':Sequelize[_0x669d('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0x669d('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x669d('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x669d('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x669d('0x5')]},'transfereecontext':{'type':Sequelize[_0x669d('0x5')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x669d('0x6')](_0x669d('0x7'),'No')},'context':{'type':Sequelize[_0x669d('0x5')]},'extension':{'type':Sequelize[_0x669d('0x5')]}};
\ No newline at end of file
index b74e0f5..71ad094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6fa=['json','apply','reject','save','destroy','then','end','name','index','map','VoiceTransferReport','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','params','include','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range'];(function(_0x5aba0a,_0x1caa65){var _0x4b54f5=function(_0x1a3df0){while(--_0x1a3df0){_0x5aba0a['push'](_0x5aba0a['shift']());}};_0x4b54f5(++_0x1caa65);}(_0xa6fa,0x1c6));var _0xaa6f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xa6fa[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa6f('0x0'));var zipdir=require(_0xaa6f('0x1'));var jsonpatch=require(_0xaa6f('0x2'));var rp=require(_0xaa6f('0x3'));var moment=require(_0xaa6f('0x4'));var BPromise=require(_0xaa6f('0x5'));var Mustache=require('mustache');var util=require(_0xaa6f('0x6'));var path=require(_0xaa6f('0x7'));var sox=require('sox');var csv=require(_0xaa6f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa6f('0x9'));var _=require(_0xaa6f('0xa'));var squel=require('squel');var crypto=require(_0xaa6f('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xaa6f('0x8'));var querystring=require(_0xaa6f('0xc'));var Papa=require(_0xaa6f('0xd'));var Redis=require(_0xaa6f('0xe'));var authService=require(_0xaa6f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xaa6f('0x10'));var hardwareService=require(_0xaa6f('0x11'));var logger=require('../../config/logger')(_0xaa6f('0x12'));var utils=require(_0xaa6f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xaa6f('0x14'));var db=require(_0xaa6f('0x15'))['db'];function respondWithStatusCode(_0x4bbf0e,_0x5a6fab){_0x5a6fab=_0x5a6fab||0xcc;return function(_0x537191){if(_0x537191){return _0x4bbf0e['sendStatus'](_0x5a6fab);}return _0x4bbf0e[_0xaa6f('0x16')](_0x5a6fab)['end']();};}function respondWithResult(_0x26af94,_0x2b3bf1){_0x2b3bf1=_0x2b3bf1||0xc8;return function(_0x8c2294){if(_0x8c2294){return _0x26af94[_0xaa6f('0x16')](_0x2b3bf1)['json'](_0x8c2294);}};}function respondWithFilteredResult(_0x50c939,_0x140a4e){return function(_0x304901){if(_0x304901){var _0x394e38=typeof _0x140a4e[_0xaa6f('0x17')]===_0xaa6f('0x18')&&typeof _0x140a4e[_0xaa6f('0x19')]==='undefined';var _0x2a39b8=_0x304901[_0xaa6f('0x1a')];var _0x570f85=_0x394e38?0x0:_0x140a4e['offset'];var _0x152dde=_0x394e38?_0x304901[_0xaa6f('0x1a')]:_0x140a4e['offset']+_0x140a4e['limit'];var _0x2444ee;if(_0x152dde>=_0x2a39b8){_0x152dde=_0x2a39b8;_0x2444ee=0xc8;}else{_0x2444ee=0xce;}_0x50c939[_0xaa6f('0x16')](_0x2444ee);return _0x50c939[_0xaa6f('0x1b')](_0xaa6f('0x1c'),_0x570f85+'-'+_0x152dde+'/'+_0x2a39b8)[_0xaa6f('0x1d')](_0x304901);}return null;};}function patchUpdates(_0x5a272c){return function(_0x24627e){try{jsonpatch[_0xaa6f('0x1e')](_0x24627e,_0x5a272c,!![]);}catch(_0x33b86d){return BPromise[_0xaa6f('0x1f')](_0x33b86d);}return _0x24627e[_0xaa6f('0x20')]();};}function saveUpdates(_0x1fbc26,_0x119c42){return function(_0x4106c0){if(_0x4106c0){return _0x4106c0['update'](_0x1fbc26)['then'](function(_0x48b136){return _0x48b136;});}return null;};}function removeEntity(_0x3d1599,_0x53c95b){return function(_0x307a30){if(_0x307a30){return _0x307a30[_0xaa6f('0x21')]()[_0xaa6f('0x22')](function(){_0x3d1599[_0xaa6f('0x16')](0xcc)[_0xaa6f('0x23')]();});}};}function handleEntityNotFound(_0x2eecfe,_0x3a7c38){return function(_0x539ca7){if(!_0x539ca7){_0x2eecfe['sendStatus'](0x194);}return _0x539ca7;};}function handleError(_0x202764,_0x4cd372){_0x4cd372=_0x4cd372||0x1f4;return function(_0x442128){logger['error'](_0x442128['stack']);if(_0x442128[_0xaa6f('0x24')]){delete _0x442128[_0xaa6f('0x24')];}_0x202764['status'](_0x4cd372)['send'](_0x442128);};}exports[_0xaa6f('0x25')]=function(_0x18b640,_0x45abb5){var _0x523135={},_0x2399b2={},_0x45c31b={'count':0x0,'rows':[]};var _0x42ac09=_[_0xaa6f('0x26')](db[_0xaa6f('0x27')][_0xaa6f('0x28')],function(_0x3e940e){return{'name':_0x3e940e['fieldName'],'type':_0x3e940e[_0xaa6f('0x29')][_0xaa6f('0x2a')]};});_0x2399b2['model']=_['map'](_0x42ac09,_0xaa6f('0x24'));_0x2399b2[_0xaa6f('0x2b')]=_[_0xaa6f('0x2c')](_0x18b640[_0xaa6f('0x2b')]);_0x2399b2[_0xaa6f('0x2d')]=_[_0xaa6f('0x2e')](_0x2399b2[_0xaa6f('0x2f')],_0x2399b2[_0xaa6f('0x2b')]);_0x523135[_0xaa6f('0x30')]=_[_0xaa6f('0x2e')](_0x2399b2[_0xaa6f('0x2f')],qs[_0xaa6f('0x31')](_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x31')]));_0x523135[_0xaa6f('0x30')]=_0x523135['attributes'][_0xaa6f('0x32')]?_0x523135[_0xaa6f('0x30')]:_0x2399b2[_0xaa6f('0x2f')];if(!_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x33')](_0xaa6f('0x34'))){_0x523135[_0xaa6f('0x19')]=qs[_0xaa6f('0x19')](_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x19')]);_0x523135['offset']=qs[_0xaa6f('0x17')](_0x18b640['query']['offset']);}_0x523135['order']=qs[_0xaa6f('0x35')](_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x35')]);_0x523135[_0xaa6f('0x36')]=qs[_0xaa6f('0x2d')](_[_0xaa6f('0x37')](_0x18b640[_0xaa6f('0x2b')],_0x2399b2[_0xaa6f('0x2d')]),_0x42ac09);if(_0x18b640[_0xaa6f('0x2b')]['filter']){_0x523135[_0xaa6f('0x36')]=_[_0xaa6f('0x38')](_0x523135[_0xaa6f('0x36')],{'$or':_[_0xaa6f('0x26')](_0x42ac09,function(_0x1ba5ea){if(_0x1ba5ea[_0xaa6f('0x29')]!==_0xaa6f('0x39')){var _0x2ea4a3={};_0x2ea4a3[_0x1ba5ea[_0xaa6f('0x24')]]={'$like':'%'+_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x3a')]+'%'};return _0x2ea4a3;}})});}_0x523135=_['merge']({},_0x523135,_0x18b640[_0xaa6f('0x3b')]);var _0x55c692={'where':_0x523135[_0xaa6f('0x36')]};return db[_0xaa6f('0x27')][_0xaa6f('0x1a')](_0x55c692)[_0xaa6f('0x22')](function(_0x161807){_0x45c31b[_0xaa6f('0x1a')]=_0x161807;if(_0x18b640[_0xaa6f('0x2b')][_0xaa6f('0x3c')]){_0x523135['include']=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x523135);})[_0xaa6f('0x22')](function(_0x1d08e0){_0x45c31b[_0xaa6f('0x3d')]=_0x1d08e0;return _0x45c31b;})['then'](respondWithFilteredResult(_0x45abb5,_0x523135))[_0xaa6f('0x3e')](handleError(_0x45abb5,null));};exports['show']=function(_0x183a39,_0x5070b3){var _0x10e5e7={'raw':!![],'where':{'id':_0x183a39[_0xaa6f('0x3f')]['id']}},_0x25d272={};_0x25d272[_0xaa6f('0x2f')]=_[_0xaa6f('0x2c')](db[_0xaa6f('0x27')][_0xaa6f('0x28')]);_0x25d272[_0xaa6f('0x2b')]=_[_0xaa6f('0x2c')](_0x183a39['query']);_0x25d272[_0xaa6f('0x2d')]=_['intersection'](_0x25d272['model'],_0x25d272['query']);_0x10e5e7[_0xaa6f('0x30')]=_['intersection'](_0x25d272['model'],qs[_0xaa6f('0x31')](_0x183a39[_0xaa6f('0x2b')][_0xaa6f('0x31')]));_0x10e5e7[_0xaa6f('0x30')]=_0x10e5e7['attributes'][_0xaa6f('0x32')]?_0x10e5e7[_0xaa6f('0x30')]:_0x25d272[_0xaa6f('0x2f')];if(_0x183a39[_0xaa6f('0x2b')][_0xaa6f('0x3c')]){_0x10e5e7[_0xaa6f('0x40')]=[{'all':!![]}];}_0x10e5e7=_[_0xaa6f('0x38')]({},_0x10e5e7,_0x183a39['options']);return db[_0xaa6f('0x27')][_0xaa6f('0x41')](_0x10e5e7)[_0xaa6f('0x22')](handleEntityNotFound(_0x5070b3,null))[_0xaa6f('0x22')](respondWithResult(_0x5070b3,null))[_0xaa6f('0x3e')](handleError(_0x5070b3,null));};exports[_0xaa6f('0x42')]=function(_0x2273d4,_0x148a91){return db[_0xaa6f('0x27')][_0xaa6f('0x42')](_0x2273d4[_0xaa6f('0x43')],{})['then'](respondWithResult(_0x148a91,0xc9))[_0xaa6f('0x3e')](handleError(_0x148a91,null));};exports['update']=function(_0x4a75ae,_0x115083){if(_0x4a75ae[_0xaa6f('0x43')]['id']){delete _0x4a75ae[_0xaa6f('0x43')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x4a75ae[_0xaa6f('0x3f')]['id']}})[_0xaa6f('0x22')](handleEntityNotFound(_0x115083,null))['then'](saveUpdates(_0x4a75ae[_0xaa6f('0x43')],null))[_0xaa6f('0x22')](respondWithResult(_0x115083,null))[_0xaa6f('0x3e')](handleError(_0x115083,null));};exports[_0xaa6f('0x21')]=function(_0x17c53b,_0x2e4f7c){return db[_0xaa6f('0x27')][_0xaa6f('0x41')]({'where':{'id':_0x17c53b[_0xaa6f('0x3f')]['id']}})[_0xaa6f('0x22')](handleEntityNotFound(_0x2e4f7c,null))[_0xaa6f('0x22')](removeEntity(_0x2e4f7c,null))[_0xaa6f('0x3e')](handleError(_0x2e4f7c,null));};exports[_0xaa6f('0x44')]=function(_0x20f8cb,_0x2562dd){return db[_0xaa6f('0x27')][_0xaa6f('0x44')]()[_0xaa6f('0x22')](respondWithResult(_0x2562dd,null))[_0xaa6f('0x3e')](handleError(_0x2562dd,null));};
\ No newline at end of file
+var _0x6a6e=['util','to-csv','ejs','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','VoiceTransferReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','create','body','catch','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0xa1656f,_0x22f026){var _0x45a3c9=function(_0x31ffa3){while(--_0x31ffa3){_0xa1656f['push'](_0xa1656f['shift']());}};_0x45a3c9(++_0x22f026);}(_0x6a6e,0x88));var _0xe6a6=function(_0x5da730,_0x27c81c){_0x5da730=_0x5da730-0x0;var _0x459c62=_0x6a6e[_0x5da730];return _0x459c62;};'use strict';var emlformat=require(_0xe6a6('0x0'));var rimraf=require(_0xe6a6('0x1'));var zipdir=require(_0xe6a6('0x2'));var jsonpatch=require(_0xe6a6('0x3'));var rp=require(_0xe6a6('0x4'));var moment=require(_0xe6a6('0x5'));var BPromise=require(_0xe6a6('0x6'));var Mustache=require(_0xe6a6('0x7'));var util=require(_0xe6a6('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xe6a6('0x9'));var ejs=require(_0xe6a6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe6a6('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe6a6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe6a6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe6a6('0xe'));var qs=require(_0xe6a6('0xf'));var as=require(_0xe6a6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe6a6('0x11'))(_0xe6a6('0x12'));var utils=require('../../config/utils');var config=require(_0xe6a6('0x13'));var licenseUtil=require(_0xe6a6('0x14'));var db=require(_0xe6a6('0x15'))['db'];function respondWithStatusCode(_0x2f04c5,_0x233050){_0x233050=_0x233050||0xcc;return function(_0x5e8e87){if(_0x5e8e87){return _0x2f04c5[_0xe6a6('0x16')](_0x233050);}return _0x2f04c5['status'](_0x233050)[_0xe6a6('0x17')]();};}function respondWithResult(_0x4bc0e7,_0x32cebc){_0x32cebc=_0x32cebc||0xc8;return function(_0x57a5f5){if(_0x57a5f5){return _0x4bc0e7['status'](_0x32cebc)[_0xe6a6('0x18')](_0x57a5f5);}};}function respondWithFilteredResult(_0x2082be,_0x2425bd){return function(_0x3573ec){if(_0x3573ec){var _0x1f74c3=typeof _0x2425bd[_0xe6a6('0x19')]===_0xe6a6('0x1a')&&typeof _0x2425bd[_0xe6a6('0x1b')]==='undefined';var _0x6170f6=_0x3573ec['count'];var _0x53883f=_0x1f74c3?0x0:_0x2425bd['offset'];var _0x5f3c78=_0x1f74c3?_0x3573ec[_0xe6a6('0x1c')]:_0x2425bd['offset']+_0x2425bd[_0xe6a6('0x1b')];var _0x56a247;if(_0x5f3c78>=_0x6170f6){_0x5f3c78=_0x6170f6;_0x56a247=0xc8;}else{_0x56a247=0xce;}_0x2082be[_0xe6a6('0x1d')](_0x56a247);return _0x2082be[_0xe6a6('0x1e')](_0xe6a6('0x1f'),_0x53883f+'-'+_0x5f3c78+'/'+_0x6170f6)[_0xe6a6('0x18')](_0x3573ec);}return null;};}function patchUpdates(_0x740896){return function(_0x539dc4){try{jsonpatch[_0xe6a6('0x20')](_0x539dc4,_0x740896,!![]);}catch(_0x292ac7){return BPromise[_0xe6a6('0x21')](_0x292ac7);}return _0x539dc4[_0xe6a6('0x22')]();};}function saveUpdates(_0x32333e,_0x22e3cd){return function(_0x51102e){if(_0x51102e){return _0x51102e[_0xe6a6('0x23')](_0x32333e)[_0xe6a6('0x24')](function(_0x2a3626){return _0x2a3626;});}return null;};}function removeEntity(_0x2518e5,_0x1de973){return function(_0x18f3be){if(_0x18f3be){return _0x18f3be[_0xe6a6('0x25')]()[_0xe6a6('0x24')](function(){_0x2518e5['status'](0xcc)[_0xe6a6('0x17')]();});}};}function handleEntityNotFound(_0x2584f9,_0x2d5e87){return function(_0x2e9b5a){if(!_0x2e9b5a){_0x2584f9[_0xe6a6('0x16')](0x194);}return _0x2e9b5a;};}function handleError(_0x4f4ad2,_0x41f66b){_0x41f66b=_0x41f66b||0x1f4;return function(_0xfffbb8){logger['error'](_0xfffbb8[_0xe6a6('0x26')]);if(_0xfffbb8[_0xe6a6('0x27')]){delete _0xfffbb8[_0xe6a6('0x27')];}_0x4f4ad2[_0xe6a6('0x1d')](_0x41f66b)[_0xe6a6('0x28')](_0xfffbb8);};}exports['index']=function(_0x481c7d,_0x3bca66){var _0x26d3a1={},_0x3f2a17={},_0x1f90e0={'count':0x0,'rows':[]};var _0x199a19=_['map'](db[_0xe6a6('0x29')][_0xe6a6('0x2a')],function(_0x35df0b){return{'name':_0x35df0b['fieldName'],'type':_0x35df0b[_0xe6a6('0x2b')][_0xe6a6('0x2c')]};});_0x3f2a17[_0xe6a6('0x2d')]=_[_0xe6a6('0x2e')](_0x199a19,_0xe6a6('0x27'));_0x3f2a17[_0xe6a6('0x2f')]=_[_0xe6a6('0x30')](_0x481c7d[_0xe6a6('0x2f')]);_0x3f2a17[_0xe6a6('0x31')]=_[_0xe6a6('0x32')](_0x3f2a17['model'],_0x3f2a17[_0xe6a6('0x2f')]);_0x26d3a1['attributes']=_[_0xe6a6('0x32')](_0x3f2a17[_0xe6a6('0x2d')],qs[_0xe6a6('0x33')](_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x33')]));_0x26d3a1['attributes']=_0x26d3a1[_0xe6a6('0x34')][_0xe6a6('0x35')]?_0x26d3a1[_0xe6a6('0x34')]:_0x3f2a17['model'];if(!_0x481c7d[_0xe6a6('0x2f')]['hasOwnProperty'](_0xe6a6('0x36'))){_0x26d3a1[_0xe6a6('0x1b')]=qs[_0xe6a6('0x1b')](_0x481c7d['query']['limit']);_0x26d3a1['offset']=qs['offset'](_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x19')]);}_0x26d3a1[_0xe6a6('0x37')]=qs[_0xe6a6('0x38')](_0x481c7d[_0xe6a6('0x2f')]['sort']);_0x26d3a1[_0xe6a6('0x39')]=qs[_0xe6a6('0x31')](_[_0xe6a6('0x3a')](_0x481c7d['query'],_0x3f2a17[_0xe6a6('0x31')]),_0x199a19);if(_0x481c7d['query'][_0xe6a6('0x3b')]){_0x26d3a1['where']=_[_0xe6a6('0x3c')](_0x26d3a1['where'],{'$or':_['map'](_0x199a19,function(_0x482b2c){if(_0x482b2c[_0xe6a6('0x2b')]!=='VIRTUAL'){var _0x6488b9={};_0x6488b9[_0x482b2c[_0xe6a6('0x27')]]={'$like':'%'+_0x481c7d['query'][_0xe6a6('0x3b')]+'%'};return _0x6488b9;}})});}_0x26d3a1=_['merge']({},_0x26d3a1,_0x481c7d[_0xe6a6('0x3d')]);var _0x4061ec={'where':_0x26d3a1['where']};return db[_0xe6a6('0x29')][_0xe6a6('0x1c')](_0x4061ec)['then'](function(_0x678342){_0x1f90e0[_0xe6a6('0x1c')]=_0x678342;if(_0x481c7d[_0xe6a6('0x2f')][_0xe6a6('0x3e')]){_0x26d3a1[_0xe6a6('0x3f')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x26d3a1);})[_0xe6a6('0x24')](function(_0x595d36){_0x1f90e0[_0xe6a6('0x40')]=_0x595d36;return _0x1f90e0;})[_0xe6a6('0x24')](respondWithFilteredResult(_0x3bca66,_0x26d3a1))['catch'](handleError(_0x3bca66,null));};exports[_0xe6a6('0x41')]=function(_0x3b991b,_0x686cae){var _0xc65e26={'raw':!![],'where':{'id':_0x3b991b[_0xe6a6('0x42')]['id']}},_0x24f395={};_0x24f395['model']=_[_0xe6a6('0x30')](db[_0xe6a6('0x29')][_0xe6a6('0x2a')]);_0x24f395[_0xe6a6('0x2f')]=_['keys'](_0x3b991b[_0xe6a6('0x2f')]);_0x24f395[_0xe6a6('0x31')]=_['intersection'](_0x24f395[_0xe6a6('0x2d')],_0x24f395['query']);_0xc65e26[_0xe6a6('0x34')]=_[_0xe6a6('0x32')](_0x24f395[_0xe6a6('0x2d')],qs[_0xe6a6('0x33')](_0x3b991b['query'][_0xe6a6('0x33')]));_0xc65e26[_0xe6a6('0x34')]=_0xc65e26[_0xe6a6('0x34')]['length']?_0xc65e26[_0xe6a6('0x34')]:_0x24f395[_0xe6a6('0x2d')];if(_0x3b991b[_0xe6a6('0x2f')][_0xe6a6('0x3e')]){_0xc65e26['include']=[{'all':!![]}];}_0xc65e26=_[_0xe6a6('0x3c')]({},_0xc65e26,_0x3b991b['options']);return db['VoiceTransferReport']['find'](_0xc65e26)['then'](handleEntityNotFound(_0x686cae,null))[_0xe6a6('0x24')](respondWithResult(_0x686cae,null))['catch'](handleError(_0x686cae,null));};exports[_0xe6a6('0x43')]=function(_0x4947fc,_0x2d2662){return db[_0xe6a6('0x29')]['create'](_0x4947fc[_0xe6a6('0x44')],{})[_0xe6a6('0x24')](respondWithResult(_0x2d2662,0xc9))[_0xe6a6('0x45')](handleError(_0x2d2662,null));};exports[_0xe6a6('0x23')]=function(_0xd00cd9,_0x49c1d2){if(_0xd00cd9[_0xe6a6('0x44')]['id']){delete _0xd00cd9['body']['id'];}return db[_0xe6a6('0x29')][_0xe6a6('0x46')]({'where':{'id':_0xd00cd9[_0xe6a6('0x42')]['id']}})[_0xe6a6('0x24')](handleEntityNotFound(_0x49c1d2,null))[_0xe6a6('0x24')](saveUpdates(_0xd00cd9[_0xe6a6('0x44')],null))['then'](respondWithResult(_0x49c1d2,null))['catch'](handleError(_0x49c1d2,null));};exports[_0xe6a6('0x25')]=function(_0x231725,_0x378681){return db[_0xe6a6('0x29')][_0xe6a6('0x46')]({'where':{'id':_0x231725[_0xe6a6('0x42')]['id']}})[_0xe6a6('0x24')](handleEntityNotFound(_0x378681,null))[_0xe6a6('0x24')](removeEntity(_0x378681,null))['catch'](handleError(_0x378681,null));};exports[_0xe6a6('0x47')]=function(_0x1102cc,_0x2a71bd){return db[_0xe6a6('0x29')][_0xe6a6('0x47')]()[_0xe6a6('0x24')](respondWithResult(_0x2a71bd,null))[_0xe6a6('0x45')](handleError(_0x2a71bd,null));};
\ No newline at end of file
index f718a45..56348ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2fc=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','lodash'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xc2fc,0xe9));var _0xcc2f=function(_0x58fc2a,_0x335a88){_0x58fc2a=_0x58fc2a-0x0;var _0x10f277=_0xc2fc[_0x58fc2a];return _0x10f277;};'use strict';var _=require(_0xcc2f('0x0'));var util=require(_0xcc2f('0x1'));var logger=require(_0xcc2f('0x2'))(_0xcc2f('0x3'));var moment=require(_0xcc2f('0x4'));var BPromise=require(_0xcc2f('0x5'));var rp=require(_0xcc2f('0x6'));var fs=require('fs');var path=require(_0xcc2f('0x7'));var rimraf=require(_0xcc2f('0x8'));var config=require('../../config/environment');var attributes=require(_0xcc2f('0x9'));module[_0xcc2f('0xa')]=function(_0x1413a0,_0x109545){return _0x1413a0['define'](_0xcc2f('0xb'),attributes,{'tableName':_0xcc2f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x016c=['rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x5352aa,_0x13fbee){var _0x19b8ad=function(_0x482514){while(--_0x482514){_0x5352aa['push'](_0x5352aa['shift']());}};_0x19b8ad(++_0x13fbee);}(_0x016c,0x8b));var _0xc016=function(_0x4599bc,_0x4fdcb5){_0x4599bc=_0x4599bc-0x0;var _0x378745=_0x016c[_0x4599bc];return _0x378745;};'use strict';var _=require('lodash');var util=require(_0xc016('0x0'));var logger=require(_0xc016('0x1'))('api');var moment=require(_0xc016('0x2'));var BPromise=require(_0xc016('0x3'));var rp=require(_0xc016('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc016('0x5'));var config=require(_0xc016('0x6'));var attributes=require(_0xc016('0x7'));module[_0xc016('0x8')]=function(_0x57f730,_0x4a7642){return _0x57f730[_0xc016('0x9')](_0xc016('0xa'),attributes,{'tableName':_0xc016('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8303187..de30ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x311f=['../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceTransferReport','create','options','raw','CreateVoiceTransferReport','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x1899c5,_0x1e931f){var _0x5b1c7a=function(_0x2c27cc){while(--_0x2c27cc){_0x1899c5['push'](_0x1899c5['shift']());}};_0x5b1c7a(++_0x1e931f);}(_0x311f,0x82));var _0xf311=function(_0x338185,_0x3dc72a){_0x338185=_0x338185-0x0;var _0x342d3d=_0x311f[_0x338185];return _0x342d3d;};'use strict';var _=require('lodash');var util=require(_0xf311('0x0'));var moment=require(_0xf311('0x1'));var BPromise=require(_0xf311('0x2'));var rs=require(_0xf311('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf311('0x4'))['db'];var utils=require(_0xf311('0x5'));var logger=require('../../config/logger')(_0xf311('0x6'));var config=require(_0xf311('0x7'));var jayson=require(_0xf311('0x8'));var client=jayson[_0xf311('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2562f3,_0x38acd4,_0x1b1b71){return new BPromise(function(_0x1b6c11,_0x526e62){return client['request'](_0x2562f3,_0x1b1b71)[_0xf311('0xa')](function(_0x32e2dd){logger[_0xf311('0xb')](_0xf311('0xc'),_0x38acd4,_0xf311('0xd'));logger[_0xf311('0xe')](_0xf311('0xf'),_0x38acd4,_0xf311('0xd'),JSON[_0xf311('0x10')](_0x32e2dd));if(_0x32e2dd[_0xf311('0x11')]){if(_0x32e2dd[_0xf311('0x11')][_0xf311('0x12')]===0x1f4){logger['error'](_0xf311('0xc'),_0x38acd4,_0x32e2dd[_0xf311('0x11')][_0xf311('0x13')]);return _0x526e62(_0x32e2dd[_0xf311('0x11')][_0xf311('0x13')]);}logger[_0xf311('0x11')](_0xf311('0xc'),_0x38acd4,_0x32e2dd[_0xf311('0x11')][_0xf311('0x13')]);return _0x1b6c11(_0x32e2dd['error'][_0xf311('0x13')]);}else{logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x38acd4,_0xf311('0xd'));_0x1b6c11(_0x32e2dd[_0xf311('0x14')][_0xf311('0x13')]);}})[_0xf311('0x15')](function(_0x57f323){logger[_0xf311('0x11')](_0xf311('0xc'),_0x38acd4,_0x57f323);_0x526e62(_0x57f323);});});}exports['CreateVoiceTransferReport']=function(_0x48a447){var _0x48e5b8=this;return new Promise(function(_0x1764e2,_0x2cb5be){return db[_0xf311('0x16')][_0xf311('0x17')](_0x48a447['body'],{'raw':_0x48a447[_0xf311('0x18')]?_0x48a447[_0xf311('0x18')][_0xf311('0x19')]===undefined?!![]:![]:!![]})[_0xf311('0xa')](function(_0x9301ee){logger[_0xf311('0xb')](_0xf311('0x1a'),_0x48a447);logger[_0xf311('0xe')](_0xf311('0x1a'),_0x48a447,JSON[_0xf311('0x10')](_0x9301ee));_0x1764e2(_0x9301ee);})[_0xf311('0x15')](function(_0x1cb13f){logger['error'](_0xf311('0x1a'),_0x1cb13f[_0xf311('0x13')],_0x48a447);_0x2cb5be(_0x48e5b8[_0xf311('0x11')](0x1f4,_0x1cb13f['message']));});});};
\ No newline at end of file
+var _0xc150=['VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','VoiceTransferReport','body','options','raw','CreateVoiceTransferReport','debug','stringify','lodash','util','moment','randomstring','ioredis','rpc','jayson/promise','client','request','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x21fca0,_0x5e3b8f){var _0x58c78a=function(_0x249b82){while(--_0x249b82){_0x21fca0['push'](_0x21fca0['shift']());}};_0x58c78a(++_0x5e3b8f);}(_0xc150,0xaa));var _0x0c15=function(_0x2bc462,_0xc4f984){_0x2bc462=_0x2bc462-0x0;var _0x541d74=_0xc150[_0x2bc462];return _0x541d74;};'use strict';var _=require(_0x0c15('0x0'));var util=require(_0x0c15('0x1'));var moment=require(_0x0c15('0x2'));var BPromise=require('bluebird');var rs=require(_0x0c15('0x3'));var fs=require('fs');var Redis=require(_0x0c15('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0c15('0x5'));var config=require('../../config/environment');var jayson=require(_0x0c15('0x6'));var client=jayson[_0x0c15('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1867f1,_0x52d8e1,_0x4b7fd2){return new BPromise(function(_0x19e551,_0x59f586){return client[_0x0c15('0x8')](_0x1867f1,_0x4b7fd2)[_0x0c15('0x9')](function(_0x1b523b){logger['info'](_0x0c15('0xa'),_0x52d8e1,_0x0c15('0xb'));logger['debug'](_0x0c15('0xc'),_0x52d8e1,'request\x20sent',JSON['stringify'](_0x1b523b));if(_0x1b523b['error']){if(_0x1b523b[_0x0c15('0xd')][_0x0c15('0xe')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x52d8e1,_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);return _0x59f586(_0x1b523b[_0x0c15('0xd')]['message']);}logger[_0x0c15('0xd')](_0x0c15('0xa'),_0x52d8e1,_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);return _0x19e551(_0x1b523b[_0x0c15('0xd')][_0x0c15('0xf')]);}else{logger[_0x0c15('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x52d8e1,_0x0c15('0xb'));_0x19e551(_0x1b523b[_0x0c15('0x11')]['message']);}})[_0x0c15('0x12')](function(_0x36f479){logger['error'](_0x0c15('0xa'),_0x52d8e1,_0x36f479);_0x59f586(_0x36f479);});});}exports['CreateVoiceTransferReport']=function(_0x3d5ca0){var _0x37ee2f=this;return new Promise(function(_0x35cc3f,_0x1ee56f){return db[_0x0c15('0x13')]['create'](_0x3d5ca0[_0x0c15('0x14')],{'raw':_0x3d5ca0['options']?_0x3d5ca0[_0x0c15('0x15')][_0x0c15('0x16')]===undefined?!![]:![]:!![]})[_0x0c15('0x9')](function(_0x367a97){logger['info'](_0x0c15('0x17'),_0x3d5ca0);logger[_0x0c15('0x18')]('CreateVoiceTransferReport',_0x3d5ca0,JSON[_0x0c15('0x19')](_0x367a97));_0x35cc3f(_0x367a97);})[_0x0c15('0x12')](function(_0x4c03d6){logger[_0x0c15('0xd')](_0x0c15('0x17'),_0x4c03d6[_0x0c15('0xf')],_0x3d5ca0);_0x1ee56f(_0x37ee2f['error'](0x1f4,_0x4c03d6[_0x0c15('0xf')]));});});};
\ No newline at end of file
index 8a3f56e..86b3544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['/unhold','unhold','/calls','transfer','exports','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','/hangup','isAuthenticated','hangup','hold'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0xcb91[_0x4429e0];return _0x51a5b3;};'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
+var _0xf4eb=['/hangup','isAuthenticated','isWebrtcLicence','hangup','/hold','hold','/unhold','unhold','/calls','calls','transfer','exports','express','/originate','originate','post'];(function(_0x28c245,_0x22d0eb){var _0x4774d2=function(_0x8ddc5b){while(--_0x8ddc5b){_0x28c245['push'](_0x28c245['shift']());}};_0x4774d2(++_0x22d0eb);}(_0xf4eb,0xec));var _0xbf4e=function(_0x209ed4,_0x12abb2){_0x209ed4=_0x209ed4-0x0;var _0x146a02=_0xf4eb[_0x209ed4];return _0x146a02;};'use strict';var express=require(_0xbf4e('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./webbar.controller');router['post'](_0xbf4e('0x1'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0x2')]);router[_0xbf4e('0x3')](_0xbf4e('0x4'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x3')]('/answer',auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller['answer']);router[_0xbf4e('0x3')](_0xbf4e('0x8'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x3')](_0xbf4e('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xb')]);router['post'](_0xbf4e('0xc'),auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xd')]);router['post']('/transfer',auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xe')]);module[_0xbf4e('0xf')]=router;
\ No newline at end of file
index ee13277..84fed2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['agent','VoiceChannels','all','rows','UserId','sessionId','sessionId\x20','originate','info','body','length','json','userId','callerId','format','user:%s','webbar:originate','originate\x20executed!','hangup','entityFound:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','filter','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','http','ioredis','redis','defaults','socket.io-emitter','validate','string','callNumber\x20is\x20required','userId\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','catch','User','findOne'];(function(_0x3da92e,_0xebfa2d){var _0x43d835=function(_0xa59dea){while(--_0xa59dea){_0x3da92e['push'](_0x3da92e['shift']());}};_0x43d835(++_0xebfa2d);}(_0x76dc,0x1f2));var _0xc76d=function(_0x497526,_0x3f08b7){_0x497526=_0x497526-0x0;var _0x1ea8aa=_0x76dc[_0x497526];return _0x1ea8aa;};'use strict';var path=require(_0xc76d('0x0'));var fs=require('fs');var _=require(_0xc76d('0x1'));var db=require(_0xc76d('0x2'))['db'];var config=require(_0xc76d('0x3'));var util=require('util');var BPromise=require(_0xc76d('0x4'));var jayson=require(_0xc76d('0x5'));var amiClient=jayson['client'][_0xc76d('0x6')]({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require(_0xc76d('0x7'));config[_0xc76d('0x8')]=_[_0xc76d('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc76d('0xa'))(new Redis(config[_0xc76d('0x8')]));var Schema=require(_0xc76d('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xc76d('0xc'),'required':[!![],_0xc76d('0xd')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xc76d('0xc')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc76d('0xe')]},'sessionId':{'type':_0xc76d('0xc'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xc76d('0xf'),'required':[!![],_0xc76d('0xe')]},'sessionId':{'type':_0xc76d('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xc76d('0xf'),'required':[!![],_0xc76d('0xe')]},'sessionId':{'type':_0xc76d('0xc'),'required':[!![],_0xc76d('0x10')]},'transferNumber':{'type':_0xc76d('0xc'),'required':[!![],_0xc76d('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xc76d('0xf'),'required':[!![],_0xc76d('0xe')]},'sessionId':{'type':_0xc76d('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc76d('0xe')]},'sessionId':{'type':_0xc76d('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc76d('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0xc76d('0xf'),'required':[!![],_0xc76d('0xe')]}});function emit(_0x6f94e,_0x5c680c,_0x32e0a8){logger['info'](_0x6f94e,_0x5c680c,JSON['stringify'](_0x32e0a8));io['to'](_0x6f94e)[_0xc76d('0x12')](_0x5c680c,_0x32e0a8);}function handleError(_0x31b032){return function(_0x339623){console[_0xc76d('0x13')](_0xc76d('0x14'),_0x339623,_0x339623 instanceof RangeError);logger['error'](_0x339623[_0xc76d('0x15')]);if(_0x339623 instanceof RangeError){if(_0x339623[_0xc76d('0x16')]){delete _0x339623[_0xc76d('0x16')];}_0x31b032[_0xc76d('0x17')](0x194)[_0xc76d('0x18')](_0x339623);}else{if(_0x339623['name']){delete _0x339623[_0xc76d('0x16')];}_0x31b032[_0xc76d('0x17')](0x1f4)['send'](_0x339623);}};}function checkError(){return function(_0x455371){if(!_0x455371){throw new RangeError(_0xc76d('0x19'));}return _0x455371;};}function respondWithRpcPromise(_0x191e97,_0xb89876){return new BPromise(function(_0x18f546,_0x3d357b){var _0x42b89c=amiClient;return _0x42b89c[_0xc76d('0x1a')](_0x191e97,_0xb89876)[_0xc76d('0x1b')](function(_0x20e09c){if(_0x20e09c[_0xc76d('0x1c')]){if(_0x20e09c['error'][_0xc76d('0x1d')]===0x1f4){return _0x3d357b(_0x20e09c[_0xc76d('0x1c')]['message']);}return _0x18f546(_0x20e09c[_0xc76d('0x1c')][_0xc76d('0x1e')]);}else{_0x18f546(_0x20e09c['result']);}})[_0xc76d('0x1f')](function(_0x476aee){_0x3d357b(_0x476aee);});});}function getAgent(_0x2cd06e){return db[_0xc76d('0x20')][_0xc76d('0x21')]({'where':{'id':_0x2cd06e,'role':_0xc76d('0x22')}})[_0xc76d('0x1b')](checkError());}function getAgentCheckSession(_0x59ebd1,_0x59dabf){return new BPromise(function(_0x285430,_0x287ae4){var _0x5069ea=respondWithRpcPromise(_0xc76d('0x23'));var _0x52a79a=getAgent(_0x59ebd1);Promise[_0xc76d('0x24')]([_0x5069ea,_0x52a79a])['then'](function(_0x2039f4){var _0x5cf2e4=_0x2039f4[0x0];var _0x13b468=_0x2039f4[0x1];var _0x18a7fa=_['filter'](_0x5cf2e4[_0xc76d('0x25')],function(_0x1c68f3){return _0x1c68f3[_0xc76d('0x26')]==_0x13b468['id']&&_0x1c68f3[_0xc76d('0x27')]==_0x59dabf;});if(_0x18a7fa['length']==0x1){_0x285430(_0x13b468);}else{_0x287ae4(new RangeError(_0xc76d('0x28')+_0x59dabf+'\x20not\x20found!'));}});});}exports[_0xc76d('0x29')]=function(_0x5e9233,_0x30769f){logger[_0xc76d('0x2a')]('originate\x20fired:',_0x5e9233['body']);var _0x5eca19=originateValidation['validate'](_0x5e9233[_0xc76d('0x2b')]);if(_0x5eca19[_0xc76d('0x2c')]>0x0){return _0x30769f[_0xc76d('0x17')](0x190)[_0xc76d('0x2d')](_0x5eca19);}var _0x1b2ed1=_0x5e9233['body'][_0xc76d('0x2e')];var _0x55e825=_0x5e9233[_0xc76d('0x2b')]['callNumber'];var _0x1bef44=_0x5e9233[_0xc76d('0x2b')][_0xc76d('0x2f')];var _0x20fe33=_0x5e9233[_0xc76d('0x2b')]['callbackUrl'];return getAgent(_0x1b2ed1)[_0xc76d('0x1b')](function(_0x371306){logger[_0xc76d('0x2a')]('entityFound:',_0x371306[_0xc76d('0x16')]);emit(util[_0xc76d('0x30')](_0xc76d('0x31'),_0x371306['name']),_0xc76d('0x32'),{'callNumber':_0x55e825,'callerId':_0x1bef44,'callbackUrl':_0x20fe33});return _0x30769f[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'error':![],'message':_0xc76d('0x33')});})[_0xc76d('0x1f')](handleError(_0x30769f));};exports[_0xc76d('0x34')]=function(_0x579d93,_0x518945){logger[_0xc76d('0x2a')]('hangup\x20fired:',_0x579d93[_0xc76d('0x2b')]);var _0x359f38=hangupValidation[_0xc76d('0xb')](_0x579d93[_0xc76d('0x2b')]);if(_0x359f38['length']>0x0){return _0x518945['status'](0x190)[_0xc76d('0x2d')](_0x359f38);}var _0x20a456=_0x579d93[_0xc76d('0x2b')][_0xc76d('0x2e')];var _0x410029=_0x579d93['body'][_0xc76d('0x27')];return getAgent(_0x20a456)[_0xc76d('0x1b')](function(_0x321989){logger[_0xc76d('0x2a')](_0xc76d('0x35'),_0x321989[_0xc76d('0x16')]);emit(util[_0xc76d('0x30')](_0xc76d('0x31'),_0x321989[_0xc76d('0x16')]),_0xc76d('0x36'),{'sessionId':_0x410029});return _0x518945['status'](0xc8)['json']({'error':![],'message':_0xc76d('0x37')});})[_0xc76d('0x1f')](handleError(_0x518945));};exports[_0xc76d('0x38')]=function(_0x27bdff,_0x4ae994){logger['info'](_0xc76d('0x39'),_0x27bdff[_0xc76d('0x2b')]);var _0x3e471e=answerValidation[_0xc76d('0xb')](_0x27bdff[_0xc76d('0x2b')]);if(_0x3e471e[_0xc76d('0x2c')]>0x0){return _0x4ae994[_0xc76d('0x17')](0x190)[_0xc76d('0x2d')](_0x3e471e);}var _0x50e922=_0x27bdff[_0xc76d('0x2b')][_0xc76d('0x2e')];var _0x1bf8a0=_0x27bdff[_0xc76d('0x2b')]['sessionId'];return getAgent(_0x50e922)['then'](function(_0x4bf591){logger['info']('entityFound:',_0x4bf591['name']);emit(util['format'](_0xc76d('0x31'),_0x4bf591[_0xc76d('0x16')]),_0xc76d('0x3a'),{'sessionId':_0x1bf8a0});return _0x4ae994[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'error':![],'message':_0xc76d('0x3b')});})[_0xc76d('0x1f')](handleError(_0x4ae994));};exports[_0xc76d('0x3c')]=function(_0x555f14,_0x462214){logger[_0xc76d('0x2a')](_0xc76d('0x3d'),_0x555f14[_0xc76d('0x2b')]);var _0xb9cca2=holdValidation[_0xc76d('0xb')](_0x555f14[_0xc76d('0x2b')]);if(_0xb9cca2[_0xc76d('0x2c')]>0x0){return _0x462214[_0xc76d('0x17')](0x190)['json'](_0xb9cca2);}var _0x5b41d3=_0x555f14[_0xc76d('0x2b')][_0xc76d('0x2e')];var _0x2fa905=_0x555f14[_0xc76d('0x2b')][_0xc76d('0x27')];return getAgent(_0x5b41d3)['then'](function(_0x25fc9d){logger[_0xc76d('0x2a')]('entityFound:',_0x25fc9d['name']);emit(util[_0xc76d('0x30')](_0xc76d('0x31'),_0x25fc9d['name']),_0xc76d('0x3e'),{'sessionId':_0x2fa905});return _0x462214[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'error':![],'message':_0xc76d('0x3f')});})[_0xc76d('0x1f')](handleError(_0x462214));};exports[_0xc76d('0x40')]=function(_0x25a549,_0x10b1b0){logger[_0xc76d('0x2a')](_0xc76d('0x41'),_0x25a549['body']);var _0x4efd83=unholdValidation[_0xc76d('0xb')](_0x25a549[_0xc76d('0x2b')]);if(_0x4efd83['length']>0x0){return _0x10b1b0[_0xc76d('0x17')](0x190)[_0xc76d('0x2d')](_0x4efd83);}var _0x506b03=_0x25a549[_0xc76d('0x2b')]['userId'];var _0xe90d83=_0x25a549[_0xc76d('0x2b')][_0xc76d('0x27')];return getAgent(_0x506b03)[_0xc76d('0x1b')](function(_0x14ef42){logger['info']('entityFound:',_0x14ef42['name']);emit(util[_0xc76d('0x30')](_0xc76d('0x31'),_0x14ef42[_0xc76d('0x16')]),_0xc76d('0x42'),{'sessionId':_0xe90d83});return _0x10b1b0[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'error':![],'message':'unhold\x20executed!'});})[_0xc76d('0x1f')](handleError(_0x10b1b0));};exports[_0xc76d('0x43')]=function(_0x5e66d9,_0x1a49d5){logger[_0xc76d('0x2a')]('calls\x20fired:',_0x1a49d5[_0xc76d('0x2b')]);var _0x463cbe=callsValidation[_0xc76d('0xb')](_0x5e66d9[_0xc76d('0x2b')]);if(_0x463cbe[_0xc76d('0x2c')]>0x0){return _0x1a49d5[_0xc76d('0x17')](0x190)['json'](_0x463cbe);}var _0x91b25b=_0x5e66d9[_0xc76d('0x2b')]['userId'];var _0x5f3973=respondWithRpcPromise(_0xc76d('0x23'));var _0x5ddcc6=getAgent(_0x91b25b);return Promise[_0xc76d('0x24')]([_0x5f3973,_0x5ddcc6])[_0xc76d('0x1b')](function(_0x12b287){var _0xfe2be1=_0x12b287[0x0];var _0x254128=_0x12b287[0x1];var _0x4746a5=_[_0xc76d('0x44')](_0xfe2be1[_0xc76d('0x25')],function(_0x3ada89){return _0x3ada89[_0xc76d('0x26')]==_0x254128['id'];});return _0x1a49d5[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'count':_0x4746a5[_0xc76d('0x2c')],'rows':_0x4746a5});})[_0xc76d('0x1f')](handleError(_0x1a49d5));};exports['conference']=function(_0x3054e0,_0xa0aa45){logger[_0xc76d('0x2a')](_0xc76d('0x45'),_0x3054e0[_0xc76d('0x2b')]);var _0x5ce99d=conferenceValidation[_0xc76d('0xb')](_0x3054e0[_0xc76d('0x2b')]);if(_0x5ce99d['length']>0x0){return _0xa0aa45['status'](0x190)['json'](_0x5ce99d);}var _0x382db6=_0x3054e0[_0xc76d('0x2b')][_0xc76d('0x2e')];return getAgent(_0x382db6)[_0xc76d('0x1b')](function(_0x2ba812){logger[_0xc76d('0x2a')](_0xc76d('0x35'),_0x2ba812[_0xc76d('0x16')]);emit(util['format'](_0xc76d('0x31'),_0x2ba812['name']),'webbar:conference');return _0xa0aa45[_0xc76d('0x17')](0xc8)[_0xc76d('0x2d')]({'error':![],'message':_0xc76d('0x46')});})['catch'](handleError(_0xa0aa45));};exports[_0xc76d('0x47')]=function(_0x57068d,_0x48ccf7){logger['info'](_0xc76d('0x48'),_0x57068d[_0xc76d('0x2b')]);var _0x513623=transferValidation[_0xc76d('0xb')](_0x57068d[_0xc76d('0x2b')]);if(_0x513623[_0xc76d('0x2c')]>0x0){return _0x48ccf7[_0xc76d('0x17')](0x190)[_0xc76d('0x2d')](_0x513623);}var _0xa81af6=_0x57068d[_0xc76d('0x2b')]['userId'];var _0x5035fd=_0x57068d['body'][_0xc76d('0x27')];var _0x2e742f=_0x57068d[_0xc76d('0x2b')][_0xc76d('0x49')];return getAgent(_0xa81af6)[_0xc76d('0x1b')](function(_0x49f876){logger[_0xc76d('0x2a')](_0xc76d('0x35'),_0x49f876[_0xc76d('0x16')]);emit(util[_0xc76d('0x30')](_0xc76d('0x31'),_0x49f876[_0xc76d('0x16')]),_0xc76d('0x4a'),{'sessionId':_0x5035fd,'transferNumber':_0x2e742f});return _0x48ccf7[_0xc76d('0x17')](0xc8)['json']({'error':![],'message':_0xc76d('0x4b')});})['catch'](handleError(_0x48ccf7));};
\ No newline at end of file
+var _0x6921=['string','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','handleError:','error','name','status','send','NotFound','request','then','code','result','User','findOne','agent','all','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','info','entityFound:','format','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','filter','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','lodash','../../config/environment','bluebird','jayson/promise','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required'];(function(_0x1e2721,_0x4141ca){var _0x52dddb=function(_0x483455){while(--_0x483455){_0x1e2721['push'](_0x1e2721['shift']());}};_0x52dddb(++_0x4141ca);}(_0x6921,0x1d1));var _0x1692=function(_0x11b04f,_0x129fbd){_0x11b04f=_0x11b04f-0x0;var _0x43ac42=_0x6921[_0x11b04f];return _0x43ac42;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x1692('0x0'));var db=require('../../mysqldb')['db'];var config=require(_0x1692('0x1'));var util=require('util');var BPromise=require(_0x1692('0x2'));var jayson=require(_0x1692('0x3'));var amiClient=jayson['client'][_0x1692('0x4')]({'port':0x232a});var logger=require('../../config/logger')(_0x1692('0x5'));var Redis=require(_0x1692('0x6'));config[_0x1692('0x7')]=_[_0x1692('0x8')](config[_0x1692('0x7')],{'host':_0x1692('0x9'),'port':0x18eb});var io=require(_0x1692('0xa'))(new Redis(config[_0x1692('0x7')]));var Schema=require(_0x1692('0xb'));var originateValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'callNumber':{'type':'string','required':[!![],_0x1692('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x1692('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':[!![],_0x1692('0x10')]},'transferNumber':{'type':_0x1692('0xf'),'required':[!![],_0x1692('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]},'sessionId':{'type':_0x1692('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],_0x1692('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x1692('0xc'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x12989e,_0x4990b1,_0x450509){logger['info'](_0x12989e,_0x4990b1,JSON[_0x1692('0x12')](_0x450509));io['to'](_0x12989e)[_0x1692('0x13')](_0x4990b1,_0x450509);}function handleError(_0x188026){return function(_0x4ea36d){console['log'](_0x1692('0x14'),_0x4ea36d,_0x4ea36d instanceof RangeError);logger[_0x1692('0x15')](_0x4ea36d['stack']);if(_0x4ea36d instanceof RangeError){if(_0x4ea36d[_0x1692('0x16')]){delete _0x4ea36d['name'];}_0x188026[_0x1692('0x17')](0x194)['send'](_0x4ea36d);}else{if(_0x4ea36d['name']){delete _0x4ea36d[_0x1692('0x16')];}_0x188026['status'](0x1f4)[_0x1692('0x18')](_0x4ea36d);}};}function checkError(){return function(_0x3c4d2f){if(!_0x3c4d2f){throw new RangeError(_0x1692('0x19'));}return _0x3c4d2f;};}function respondWithRpcPromise(_0x4c24c1,_0x234073){return new BPromise(function(_0x1d156a,_0x477e9d){var _0x1bc519=amiClient;return _0x1bc519[_0x1692('0x1a')](_0x4c24c1,_0x234073)[_0x1692('0x1b')](function(_0x4146af){if(_0x4146af['error']){if(_0x4146af[_0x1692('0x15')][_0x1692('0x1c')]===0x1f4){return _0x477e9d(_0x4146af['error']['message']);}return _0x1d156a(_0x4146af['error']['message']);}else{_0x1d156a(_0x4146af[_0x1692('0x1d')]);}})['catch'](function(_0x1a6a71){_0x477e9d(_0x1a6a71);});});}function getAgent(_0xf78abe){return db[_0x1692('0x1e')][_0x1692('0x1f')]({'where':{'id':_0xf78abe,'role':_0x1692('0x20')}})[_0x1692('0x1b')](checkError());}function getAgentCheckSession(_0x5a355b,_0x1a6708){return new BPromise(function(_0x1a4e1c,_0x429687){var _0x46fec4=respondWithRpcPromise('VoiceChannels');var _0x5364cd=getAgent(_0x5a355b);Promise[_0x1692('0x21')]([_0x46fec4,_0x5364cd])[_0x1692('0x1b')](function(_0x3d0d78){var _0x32b5c4=_0x3d0d78[0x0];var _0x4a2dba=_0x3d0d78[0x1];var _0x5341c8=_['filter'](_0x32b5c4[_0x1692('0x22')],function(_0x274dba){return _0x274dba[_0x1692('0x23')]==_0x4a2dba['id']&&_0x274dba[_0x1692('0x24')]==_0x1a6708;});if(_0x5341c8[_0x1692('0x25')]==0x1){_0x1a4e1c(_0x4a2dba);}else{_0x429687(new RangeError(_0x1692('0x26')+_0x1a6708+_0x1692('0x27')));}});});}exports[_0x1692('0x28')]=function(_0x5eb05b,_0x170884){logger['info'](_0x1692('0x29'),_0x5eb05b[_0x1692('0x2a')]);var _0x30bd6d=originateValidation[_0x1692('0xb')](_0x5eb05b['body']);if(_0x30bd6d[_0x1692('0x25')]>0x0){return _0x170884[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x30bd6d);}var _0x2cc16f=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2c')];var _0x5d466e=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2d')];var _0x2fef78=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2e')];var _0x1dc18e=_0x5eb05b[_0x1692('0x2a')][_0x1692('0x2f')];return getAgent(_0x2cc16f)[_0x1692('0x1b')](function(_0x3fc4d0){logger[_0x1692('0x30')](_0x1692('0x31'),_0x3fc4d0[_0x1692('0x16')]);emit(util[_0x1692('0x32')]('user:%s',_0x3fc4d0[_0x1692('0x16')]),_0x1692('0x33'),{'callNumber':_0x5d466e,'callerId':_0x2fef78,'callbackUrl':_0x1dc18e});return _0x170884[_0x1692('0x17')](0xc8)['json']({'error':![],'message':_0x1692('0x34')});})[_0x1692('0x35')](handleError(_0x170884));};exports[_0x1692('0x36')]=function(_0x4f0116,_0x5260c6){logger['info'](_0x1692('0x37'),_0x4f0116[_0x1692('0x2a')]);var _0x1c8a42=hangupValidation[_0x1692('0xb')](_0x4f0116[_0x1692('0x2a')]);if(_0x1c8a42[_0x1692('0x25')]>0x0){return _0x5260c6[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x1c8a42);}var _0x168ba7=_0x4f0116[_0x1692('0x2a')][_0x1692('0x2c')];var _0x1f113c=_0x4f0116['body'][_0x1692('0x24')];return getAgent(_0x168ba7)[_0x1692('0x1b')](function(_0xdb4303){logger['info'](_0x1692('0x31'),_0xdb4303[_0x1692('0x16')]);emit(util['format'](_0x1692('0x38'),_0xdb4303[_0x1692('0x16')]),_0x1692('0x39'),{'sessionId':_0x1f113c});return _0x5260c6['status'](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x3a')});})[_0x1692('0x35')](handleError(_0x5260c6));};exports[_0x1692('0x3b')]=function(_0x193b6b,_0x2743c4){logger[_0x1692('0x30')](_0x1692('0x3c'),_0x193b6b[_0x1692('0x2a')]);var _0x45eec0=answerValidation[_0x1692('0xb')](_0x193b6b[_0x1692('0x2a')]);if(_0x45eec0[_0x1692('0x25')]>0x0){return _0x2743c4[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x45eec0);}var _0x17c965=_0x193b6b[_0x1692('0x2a')][_0x1692('0x2c')];var _0x125396=_0x193b6b[_0x1692('0x2a')][_0x1692('0x24')];return getAgent(_0x17c965)[_0x1692('0x1b')](function(_0x3e40b3){logger['info'](_0x1692('0x31'),_0x3e40b3['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x3e40b3[_0x1692('0x16')]),_0x1692('0x3d'),{'sessionId':_0x125396});return _0x2743c4['status'](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x3e')});})[_0x1692('0x35')](handleError(_0x2743c4));};exports[_0x1692('0x3f')]=function(_0x3046f6,_0x41a1b4){logger[_0x1692('0x30')](_0x1692('0x40'),_0x3046f6[_0x1692('0x2a')]);var _0x6224a7=holdValidation['validate'](_0x3046f6['body']);if(_0x6224a7[_0x1692('0x25')]>0x0){return _0x41a1b4[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x6224a7);}var _0x2521c5=_0x3046f6[_0x1692('0x2a')][_0x1692('0x2c')];var _0x4cb62b=_0x3046f6['body']['sessionId'];return getAgent(_0x2521c5)[_0x1692('0x1b')](function(_0xffbb6){logger[_0x1692('0x30')](_0x1692('0x31'),_0xffbb6[_0x1692('0x16')]);emit(util['format']('user:%s',_0xffbb6[_0x1692('0x16')]),'webbar:hold',{'sessionId':_0x4cb62b});return _0x41a1b4[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':'hold\x20executed!'});})[_0x1692('0x35')](handleError(_0x41a1b4));};exports[_0x1692('0x41')]=function(_0x302daa,_0x73e1b5){logger[_0x1692('0x30')](_0x1692('0x42'),_0x302daa[_0x1692('0x2a')]);var _0x243882=unholdValidation[_0x1692('0xb')](_0x302daa[_0x1692('0x2a')]);if(_0x243882[_0x1692('0x25')]>0x0){return _0x73e1b5[_0x1692('0x17')](0x190)['json'](_0x243882);}var _0x2bbddf=_0x302daa[_0x1692('0x2a')][_0x1692('0x2c')];var _0xa81da9=_0x302daa[_0x1692('0x2a')][_0x1692('0x24')];return getAgent(_0x2bbddf)['then'](function(_0x56ac1b){logger[_0x1692('0x30')](_0x1692('0x31'),_0x56ac1b['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x56ac1b['name']),_0x1692('0x43'),{'sessionId':_0xa81da9});return _0x73e1b5[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x44')});})['catch'](handleError(_0x73e1b5));};exports[_0x1692('0x45')]=function(_0xf08614,_0x35771e){logger[_0x1692('0x30')](_0x1692('0x46'),_0x35771e[_0x1692('0x2a')]);var _0x4eec6a=callsValidation[_0x1692('0xb')](_0xf08614[_0x1692('0x2a')]);if(_0x4eec6a['length']>0x0){return _0x35771e[_0x1692('0x17')](0x190)['json'](_0x4eec6a);}var _0x13a73f=_0xf08614[_0x1692('0x2a')][_0x1692('0x2c')];var _0x5cd581=respondWithRpcPromise(_0x1692('0x47'));var _0x332952=getAgent(_0x13a73f);return Promise[_0x1692('0x21')]([_0x5cd581,_0x332952])[_0x1692('0x1b')](function(_0x59a9dd){var _0xae2489=_0x59a9dd[0x0];var _0x4b82db=_0x59a9dd[0x1];var _0xd1e4c1=_[_0x1692('0x48')](_0xae2489['rows'],function(_0x5b3013){return _0x5b3013[_0x1692('0x23')]==_0x4b82db['id'];});return _0x35771e[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'count':_0xd1e4c1['length'],'rows':_0xd1e4c1});})[_0x1692('0x35')](handleError(_0x35771e));};exports[_0x1692('0x49')]=function(_0x5ac42f,_0x21ff8e){logger[_0x1692('0x30')]('conference\x20fired:',_0x5ac42f[_0x1692('0x2a')]);var _0x519c3a=conferenceValidation[_0x1692('0xb')](_0x5ac42f[_0x1692('0x2a')]);if(_0x519c3a[_0x1692('0x25')]>0x0){return _0x21ff8e[_0x1692('0x17')](0x190)[_0x1692('0x2b')](_0x519c3a);}var _0x15d5ee=_0x5ac42f[_0x1692('0x2a')][_0x1692('0x2c')];return getAgent(_0x15d5ee)[_0x1692('0x1b')](function(_0x4976ac){logger['info']('entityFound:',_0x4976ac['name']);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x4976ac[_0x1692('0x16')]),_0x1692('0x4a'));return _0x21ff8e['status'](0xc8)['json']({'error':![],'message':_0x1692('0x4b')});})[_0x1692('0x35')](handleError(_0x21ff8e));};exports[_0x1692('0x4c')]=function(_0x333158,_0x183ad){logger[_0x1692('0x30')](_0x1692('0x4d'),_0x333158['body']);var _0xd5cc0c=transferValidation['validate'](_0x333158[_0x1692('0x2a')]);if(_0xd5cc0c[_0x1692('0x25')]>0x0){return _0x183ad[_0x1692('0x17')](0x190)['json'](_0xd5cc0c);}var _0x4ce7d3=_0x333158['body'][_0x1692('0x2c')];var _0x4603ca=_0x333158[_0x1692('0x2a')]['sessionId'];var _0x3a4b0a=_0x333158[_0x1692('0x2a')][_0x1692('0x4e')];return getAgent(_0x4ce7d3)[_0x1692('0x1b')](function(_0x36dd89){logger[_0x1692('0x30')](_0x1692('0x31'),_0x36dd89[_0x1692('0x16')]);emit(util[_0x1692('0x32')](_0x1692('0x38'),_0x36dd89[_0x1692('0x16')]),'webbar:transfer',{'sessionId':_0x4603ca,'transferNumber':_0x3a4b0a});return _0x183ad[_0x1692('0x17')](0xc8)[_0x1692('0x2b')]({'error':![],'message':_0x1692('0x4f')});})[_0x1692('0x35')](handleError(_0x183ad));};
\ No newline at end of file
index 35fed1d..2caf48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['destroy','delete','removeDispositions','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addDisposition','addApplications','/:id/notify','/:id/send','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9582,0x95));var _0x2958=function(_0x29932f,_0x43efbe){_0x29932f=_0x29932f-0x0;var _0x4320aa=_0x9582[_0x29932f];return _0x4320aa;};'use strict';var multer=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var path=require(_0x2958('0x2'));var timeout=require(_0x2958('0x3'));var express=require(_0x2958('0x4'));var router=express[_0x2958('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2958('0x6'));var interaction=require(_0x2958('0x7'));var config=require(_0x2958('0x8'));var controller=require(_0x2958('0x9'));router[_0x2958('0xa')]('/',auth[_0x2958('0xb')](),controller[_0x2958('0xc')]);router[_0x2958('0xa')](_0x2958('0xd'),auth[_0x2958('0xb')](),controller['describe']);router['get'](_0x2958('0xe'),auth['isAuthenticated'](),controller[_0x2958('0xf')]);router['get'](_0x2958('0x10'),auth['isAuthenticated'](),controller[_0x2958('0x11')]);router[_0x2958('0xa')](_0x2958('0x12'),auth[_0x2958('0xb')](),controller[_0x2958('0x13')]);router['get'](_0x2958('0x14'),auth[_0x2958('0xb')](),controller[_0x2958('0x15')]);router[_0x2958('0xa')](_0x2958('0x16'),auth[_0x2958('0xb')](),controller[_0x2958('0x17')]);router[_0x2958('0x18')]('/',auth['isAuthenticated'](),controller[_0x2958('0x19')]);router[_0x2958('0x18')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x2958('0x1a')]);router[_0x2958('0x18')]('/:id/canned_answers',auth[_0x2958('0xb')](),controller['addAnswer']);router['post'](_0x2958('0x14'),auth[_0x2958('0xb')](),controller['addAgents']);router['post'](_0x2958('0x16'),auth[_0x2958('0xb')](),controller[_0x2958('0x1b')]);router[_0x2958('0x18')](_0x2958('0x1c'),controller['notify']);router[_0x2958('0x18')](_0x2958('0x1d'),auth[_0x2958('0xb')](),controller['send']);router[_0x2958('0x1e')]('/:id',auth[_0x2958('0xb')](),controller['update']);router['delete'](_0x2958('0xe'),auth[_0x2958('0xb')](),controller[_0x2958('0x1f')]);router[_0x2958('0x20')](_0x2958('0x10'),auth[_0x2958('0xb')](),controller[_0x2958('0x21')]);router[_0x2958('0x20')](_0x2958('0x12'),auth[_0x2958('0xb')](),controller[_0x2958('0x22')]);router[_0x2958('0x20')](_0x2958('0x14'),auth[_0x2958('0xb')](),controller[_0x2958('0x23')]);module['exports']=router;
\ No newline at end of file
+var _0x955f=['addApplications','notify','/:id/send','send','update','destroy','delete','removeDispositions','/:id/canned_answers','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getAnswers','getApplications','post','create','addDisposition','/:id/users','addAgents'];(function(_0x3f79a3,_0x39c1cc){var _0x1895a6=function(_0x5ba625){while(--_0x5ba625){_0x3f79a3['push'](_0x3f79a3['shift']());}};_0x1895a6(++_0x39c1cc);}(_0x955f,0x1eb));var _0xf955=function(_0xcd7b5e,_0x1aabe1){_0xcd7b5e=_0xcd7b5e-0x0;var _0x4244be=_0x955f[_0xcd7b5e];return _0x4244be;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./whatsappAccount.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['describe']);router[_0xf955('0x7')](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0x7')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller['getDispositions']);router[_0xf955('0x7')]('/:id/canned_answers',auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router[_0xf955('0x7')]('/:id/users',auth[_0xf955('0x8')](),controller['getAgents']);router[_0xf955('0x7')]('/:id/applications',auth[_0xf955('0x8')](),controller[_0xf955('0xf')]);router[_0xf955('0x10')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x11')]);router[_0xf955('0x10')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller[_0xf955('0x12')]);router[_0xf955('0x10')]('/:id/canned_answers',auth[_0xf955('0x8')](),controller['addAnswer']);router[_0xf955('0x10')](_0xf955('0x13'),auth[_0xf955('0x8')](),controller[_0xf955('0x14')]);router['post']('/:id/applications',auth[_0xf955('0x8')](),controller[_0xf955('0x15')]);router[_0xf955('0x10')]('/:id/notify',controller[_0xf955('0x16')]);router[_0xf955('0x10')](_0xf955('0x17'),auth[_0xf955('0x8')](),controller[_0xf955('0x18')]);router['put'](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0x19')]);router['delete'](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0x1a')]);router[_0xf955('0x1b')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller[_0xf955('0x1c')]);router['delete'](_0xf955('0x1d'),auth[_0xf955('0x8')](),controller[_0xf955('0x1e')]);router[_0xf955('0x1b')](_0xf955('0x13'),auth[_0xf955('0x8')](),controller[_0xf955('0x1f')]);module['exports']=router;
\ No newline at end of file
index 08128b2..5ac3283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf9=['ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name'];(function(_0x304412,_0x5c775c){var _0x3a52fa=function(_0xae402c){while(--_0xae402c){_0x304412['push'](_0x304412['shift']());}};_0x3a52fa(++_0x5c775c);}(_0x3cf9,0xf8));var _0x93cf=function(_0x4c7dda,_0x38d174){_0x4c7dda=_0x4c7dda-0x0;var _0x53dfa3=_0x3cf9[_0x4c7dda];return _0x53dfa3;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x93cf('0x0'));module[_0x93cf('0x1')]={'name':{'type':Sequelize[_0x93cf('0x2')],'unique':_0x93cf('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x93cf('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x93cf('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x93cf('0x2')]},'type':{'type':Sequelize[_0x93cf('0x4')](_0x93cf('0x5'),'sinch')},'accountSid':{'type':Sequelize[_0x93cf('0x2')]},'baseUrl':{'type':Sequelize[_0x93cf('0x2')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x93cf('0x6')],'defaultValue':function(){return _0x93cf('0x7');}},'notificationSound':{'type':Sequelize[_0x93cf('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'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[_0x93cf('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x93cf('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x93cf('0x9')],'comment':_0x93cf('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x93cf('0x8')],'defaultValue':![],'comment':_0x93cf('0xb'),'set':function(_0x391c7a){if(!_0x391c7a){this[_0x93cf('0xc')]('mandatoryDispositionPauseId',null);}this[_0x93cf('0xc')](_0x93cf('0xd'),_0x391c7a);}},'description':{'type':Sequelize[_0x93cf('0x2')]}};
\ No newline at end of file
+var _0xb824=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','name','STRING','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x5a6d21,_0x407cf5){var _0xf8bcd2=function(_0x15c182){while(--_0x15c182){_0x5a6d21['push'](_0x5a6d21['shift']());}};_0xf8bcd2(++_0x407cf5);}(_0xb824,0x1f3));var _0x4b82=function(_0x50b789,_0x3fe82b){_0x50b789=_0x50b789-0x0;var _0x3ec3fe=_0xb824[_0x50b789];return _0x3ec3fe;};'use strict';var Sequelize=require(_0x4b82('0x0'));var rs=require(_0x4b82('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x4b82('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x4b82('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x4b82('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x4b82('0x4')]();}},'phone':{'type':Sequelize[_0x4b82('0x3')]},'type':{'type':Sequelize[_0x4b82('0x5')](_0x4b82('0x6'),_0x4b82('0x7'))},'accountSid':{'type':Sequelize[_0x4b82('0x3')]},'baseUrl':{'type':Sequelize[_0x4b82('0x3')]},'authToken':{'type':Sequelize[_0x4b82('0x3')]},'notificationTemplate':{'type':Sequelize[_0x4b82('0x8')],'defaultValue':function(){return _0x4b82('0x9');}},'notificationSound':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4b82('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4b82('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4b82('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x4b82('0xa')],'defaultValue':![],'comment':_0x4b82('0xc'),'set':function(_0x38ff91){if(!_0x38ff91){this[_0x4b82('0xd')](_0x4b82('0xe'),null);}this[_0x4b82('0xd')](_0x4b82('0xf'),_0x38ff91);}},'description':{'type':Sequelize[_0x4b82('0x3')]}};
\ No newline at end of file
index 075ff0d..8777b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x151a=['lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','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','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','code','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','end','status','offset','undefined','count','set','apply','reject','save','update','get','WhatsappAccounts','UserProfileResource','stack','send','index','mandatoryDispositionPause','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','name','options','WhatsappAccount','include','rows','show','params','Pause','rawAttributes','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','findOne','Disposition','WhatsappAccountId','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','destroy','WhatsappApplication','findAndCountAll','priority','sendStatus','json','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','timestamp','message_id','orderBy','asc','CmContact','Sequelize','ValidationError','difference','updatedAt','CompanyId','mobile','twilio','from','From','messageId','MessageSid','notifications','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','list','contact','WhatsappInteraction','interaction','created','autoclose','applications','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','waitForTheAssignedAgent','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','stringify','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra'];(function(_0x1fee35,_0x493e7d){var _0x505be7=function(_0x5e020d){while(--_0x5e020d){_0x1fee35['push'](_0x1fee35['shift']());}};_0x505be7(++_0x493e7d);}(_0x151a,0xbf));var _0xa151=function(_0x34d533,_0x161449){_0x34d533=_0x34d533-0x0;var _0x4731f5=_0x151a[_0x34d533];return _0x4731f5;};'use strict';var emlformat=require(_0xa151('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa151('0x1'));var jsonpatch=require(_0xa151('0x2'));var rp=require(_0xa151('0x3'));var moment=require('moment');var BPromise=require(_0xa151('0x4'));var Mustache=require(_0xa151('0x5'));var util=require(_0xa151('0x6'));var path=require(_0xa151('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa151('0x8'));var fs=require('fs');var fs_extra=require(_0xa151('0x9'));var _=require(_0xa151('0xa'));var squel=require(_0xa151('0xb'));var crypto=require(_0xa151('0xc'));var jsforce=require(_0xa151('0xd'));var deskjs=require(_0xa151('0xe'));var toCsv=require(_0xa151('0xf'));var querystring=require(_0xa151('0x10'));var Papa=require(_0xa151('0x11'));var Redis=require(_0xa151('0x12'));var authService=require(_0xa151('0x13'));var qs=require(_0xa151('0x14'));var as=require(_0xa151('0x15'));var hardwareService=require(_0xa151('0x16'));var logger=require(_0xa151('0x17'))(_0xa151('0x18'));var utils=require(_0xa151('0x19'));var config=require(_0xa151('0x1a'));var licenseUtil=require(_0xa151('0x1b'));var db=require(_0xa151('0x1c'))['db'];config[_0xa151('0x1d')]=_[_0xa151('0x1e')](config[_0xa151('0x1d')],{'host':_0xa151('0x1f'),'port':0x18eb});var socket=require(_0xa151('0x20'))(new Redis(config['redis']));require(_0xa151('0x21'))[_0xa151('0x22')](socket);var jayson=require(_0xa151('0x23'));var client=jayson[_0xa151('0x24')][_0xa151('0x25')]({'port':0x232c});function respondWithRpcPromise(_0x278163,_0x3500d1,_0x2cb539,_0x628209){return new BPromise(function(_0x1c8337,_0x2d8419){var _0x604d6c=_0x628209||client;return _0x604d6c[_0xa151('0x26')](_0x278163,_0x2cb539)[_0xa151('0x27')](function(_0x19e548){logger[_0xa151('0x28')]('WhatsappAccount,\x20%s,\x20%s',_0x3500d1,_0xa151('0x29'));logger[_0xa151('0x2a')](_0xa151('0x2b'),_0x3500d1,_0xa151('0x29'),JSON['stringify'](_0x19e548));if(_0x19e548['error']){if(_0x19e548['error'][_0xa151('0x2c')]===0x1f4){logger[_0xa151('0x2d')](_0xa151('0x2e'),_0x3500d1,_0x19e548['error']['message']);return _0x2d8419(_0x19e548[_0xa151('0x2d')][_0xa151('0x2f')]);}logger[_0xa151('0x2d')](_0xa151('0x2e'),_0x3500d1,_0x19e548[_0xa151('0x2d')][_0xa151('0x2f')]);return _0x1c8337(_0x19e548[_0xa151('0x2d')]['message']);}else{logger[_0xa151('0x28')](_0xa151('0x2e'),_0x3500d1,'request\x20sent');_0x1c8337(_0x19e548[_0xa151('0x30')][_0xa151('0x2f')]);}})[_0xa151('0x31')](function(_0x59217d){logger['error'](_0xa151('0x2e'),_0x3500d1,_0x59217d);_0x2d8419(_0x59217d);});});}function respondWithStatusCode(_0x5030f6,_0x4bfacb){_0x4bfacb=_0x4bfacb||0xcc;return function(_0x2eeb5b){if(_0x2eeb5b){return _0x5030f6['sendStatus'](_0x4bfacb);}return _0x5030f6['status'](_0x4bfacb)[_0xa151('0x32')]();};}function respondWithResult(_0x58d9c3,_0x5f4f35){_0x5f4f35=_0x5f4f35||0xc8;return function(_0x216f8c){if(_0x216f8c){return _0x58d9c3[_0xa151('0x33')](_0x5f4f35)['json'](_0x216f8c);}};}function respondWithFilteredResult(_0x3d62a4,_0x4848f3){return function(_0x4f91be){if(_0x4f91be){var _0x238c25=typeof _0x4848f3[_0xa151('0x34')]===_0xa151('0x35')&&typeof _0x4848f3['limit']===_0xa151('0x35');var _0x46abbc=_0x4f91be['count'];var _0x9526d9=_0x238c25?0x0:_0x4848f3['offset'];var _0x4178d6=_0x238c25?_0x4f91be[_0xa151('0x36')]:_0x4848f3[_0xa151('0x34')]+_0x4848f3['limit'];var _0x15260e;if(_0x4178d6>=_0x46abbc){_0x4178d6=_0x46abbc;_0x15260e=0xc8;}else{_0x15260e=0xce;}_0x3d62a4[_0xa151('0x33')](_0x15260e);return _0x3d62a4[_0xa151('0x37')]('Content-Range',_0x9526d9+'-'+_0x4178d6+'/'+_0x46abbc)['json'](_0x4f91be);}return null;};}function patchUpdates(_0x4b3e92){return function(_0x3640da){try{jsonpatch[_0xa151('0x38')](_0x3640da,_0x4b3e92,!![]);}catch(_0x2eb610){return BPromise[_0xa151('0x39')](_0x2eb610);}return _0x3640da[_0xa151('0x3a')]();};}function saveUpdates(_0x13328e,_0x454701){return function(_0xfcd471){if(_0xfcd471){return _0xfcd471[_0xa151('0x3b')](_0x13328e)[_0xa151('0x27')](function(_0x32dce7){return _0x32dce7;});}return null;};}function removeEntity(_0x186fe8,_0x5a3858){return function(_0x3fadb1){if(_0x3fadb1){return _0x3fadb1['destroy']()[_0xa151('0x27')](function(){var _0x5a27b6=_0x3fadb1[_0xa151('0x3c')]({'plain':!![]});var _0x5c156c=_0xa151('0x3d');return db[_0xa151('0x3e')]['destroy']({'where':{'type':_0x5c156c,'resourceId':_0x5a27b6['id']}})[_0xa151('0x27')](function(){return _0x3fadb1;});})[_0xa151('0x27')](function(){_0x186fe8[_0xa151('0x33')](0xcc)[_0xa151('0x32')]();});}};}function handleEntityNotFound(_0x54ed23,_0x19700e){return function(_0x3e4fc3){if(!_0x3e4fc3){_0x54ed23['sendStatus'](0x194);}return _0x3e4fc3;};}function handleError(_0x292652,_0x59e6be){_0x59e6be=_0x59e6be||0x1f4;return function(_0x1ab42a){logger[_0xa151('0x2d')](_0x1ab42a[_0xa151('0x3f')]);if(_0x1ab42a['name']){delete _0x1ab42a['name'];}_0x292652[_0xa151('0x33')](_0x59e6be)[_0xa151('0x40')](_0x1ab42a);};}exports[_0xa151('0x41')]=function(_0x3a611d,_0x48d6e7){var _0x2a187b={'include':[{'model':db['Pause'],'as':_0xa151('0x42')}]},_0x2de439={},_0x401d2a={'count':0x0,'rows':[]};var _0xfa5b90=_['map'](db['WhatsappAccount']['rawAttributes'],function(_0x5c0ea8){return{'name':_0x5c0ea8[_0xa151('0x43')],'type':_0x5c0ea8[_0xa151('0x44')][_0xa151('0x45')]};});_0x2de439[_0xa151('0x46')]=_[_0xa151('0x47')](_0xfa5b90,'name');_0x2de439[_0xa151('0x48')]=_[_0xa151('0x49')](_0x3a611d[_0xa151('0x48')]);_0x2de439[_0xa151('0x4a')]=_[_0xa151('0x4b')](_0x2de439[_0xa151('0x46')],_0x2de439['query']);_0x2a187b[_0xa151('0x4c')]=_[_0xa151('0x4b')](_0x2de439[_0xa151('0x46')],qs['fields'](_0x3a611d[_0xa151('0x48')][_0xa151('0x4d')]));_0x2a187b[_0xa151('0x4c')]=_0x2a187b[_0xa151('0x4c')][_0xa151('0x4e')]?_0x2a187b[_0xa151('0x4c')]:_0x2de439[_0xa151('0x46')];if(!_0x3a611d[_0xa151('0x48')][_0xa151('0x4f')](_0xa151('0x50'))){_0x2a187b['limit']=qs[_0xa151('0x51')](_0x3a611d[_0xa151('0x48')][_0xa151('0x51')]);_0x2a187b[_0xa151('0x34')]=qs[_0xa151('0x34')](_0x3a611d[_0xa151('0x48')][_0xa151('0x34')]);}_0x2a187b[_0xa151('0x52')]=qs[_0xa151('0x53')](_0x3a611d['query'][_0xa151('0x53')]);_0x2a187b[_0xa151('0x54')]=qs[_0xa151('0x4a')](_[_0xa151('0x55')](_0x3a611d[_0xa151('0x48')],_0x2de439[_0xa151('0x4a')]),_0xfa5b90);if(_0x3a611d[_0xa151('0x48')][_0xa151('0x56')]){_0x2a187b[_0xa151('0x54')]=_[_0xa151('0x57')](_0x2a187b['where'],{'$or':_[_0xa151('0x47')](_0xfa5b90,function(_0x3f5935){if(_0x3f5935[_0xa151('0x44')]!==_0xa151('0x58')){var _0x12d757={};_0x12d757[_0x3f5935[_0xa151('0x59')]]={'$like':'%'+_0x3a611d[_0xa151('0x48')][_0xa151('0x56')]+'%'};return _0x12d757;}})});}_0x2a187b=_[_0xa151('0x57')]({},_0x2a187b,_0x3a611d[_0xa151('0x5a')]);var _0x2dcc65={'where':_0x2a187b[_0xa151('0x54')]};return db[_0xa151('0x5b')][_0xa151('0x36')](_0x2dcc65)[_0xa151('0x27')](function(_0x5569b2){_0x401d2a[_0xa151('0x36')]=_0x5569b2;if(_0x3a611d[_0xa151('0x48')]['includeAll']){_0x2a187b[_0xa151('0x5c')]=[{'all':!![]}];}return db[_0xa151('0x5b')]['findAll'](_0x2a187b);})[_0xa151('0x27')](function(_0x4cb7e3){_0x401d2a[_0xa151('0x5d')]=_0x4cb7e3;return _0x401d2a;})[_0xa151('0x27')](respondWithFilteredResult(_0x48d6e7,_0x2a187b))[_0xa151('0x31')](handleError(_0x48d6e7,null));};exports[_0xa151('0x5e')]=function(_0x4183ef,_0x4a8c55){var _0x2ae253={'raw':![],'where':{'id':_0x4183ef[_0xa151('0x5f')]['id']},'include':[{'model':db[_0xa151('0x60')],'as':'mandatoryDispositionPause'}]},_0x189255={};_0x189255[_0xa151('0x46')]=_[_0xa151('0x49')](db[_0xa151('0x5b')][_0xa151('0x61')]);_0x189255['query']=_[_0xa151('0x49')](_0x4183ef['query']);_0x189255['filters']=_[_0xa151('0x4b')](_0x189255[_0xa151('0x46')],_0x189255[_0xa151('0x48')]);_0x2ae253['attributes']=_[_0xa151('0x4b')](_0x189255[_0xa151('0x46')],qs[_0xa151('0x4d')](_0x4183ef['query'][_0xa151('0x4d')]));_0x2ae253[_0xa151('0x4c')]=_0x2ae253['attributes'][_0xa151('0x4e')]?_0x2ae253[_0xa151('0x4c')]:_0x189255[_0xa151('0x46')];if(_0x4183ef[_0xa151('0x48')][_0xa151('0x62')]){_0x2ae253[_0xa151('0x5c')]=[{'all':!![]}];}_0x2ae253=_['merge']({},_0x2ae253,_0x4183ef[_0xa151('0x5a')]);return db[_0xa151('0x5b')][_0xa151('0x63')](_0x2ae253)['then'](handleEntityNotFound(_0x4a8c55,null))[_0xa151('0x27')](respondWithResult(_0x4a8c55,null))[_0xa151('0x31')](handleError(_0x4a8c55,null));};exports[_0xa151('0x64')]=function(_0x54bb62,_0x701c30){return db['WhatsappAccount'][_0xa151('0x64')](_0x54bb62[_0xa151('0x65')],{})['then'](function(_0x1deb37){var _0x52fe0a=_0x54bb62[_0xa151('0x66')][_0xa151('0x3c')]({'plain':!![]});if(!_0x52fe0a)throw new Error(_0xa151('0x67'));if(_0x52fe0a['role']==='user'){var _0x30ff5b=_0x1deb37[_0xa151('0x3c')]({'plain':!![]});var _0xa7f1b4='WhatsappAccounts';return db[_0xa151('0x68')][_0xa151('0x63')]({'where':{'name':_0xa7f1b4,'userProfileId':_0x52fe0a[_0xa151('0x69')]},'raw':!![]})['then'](function(_0xa84b45){if(_0xa84b45&&_0xa84b45[_0xa151('0x6a')]===0x0){return db['UserProfileResource'][_0xa151('0x64')]({'name':_0x30ff5b['name'],'resourceId':_0x30ff5b['id'],'type':_0xa84b45[_0xa151('0x59')],'sectionId':_0xa84b45['id']},{})[_0xa151('0x27')](function(){return _0x1deb37;});}else{return _0x1deb37;}})[_0xa151('0x31')](function(_0x424478){logger[_0xa151('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x424478);throw _0x424478;});}return _0x1deb37;})[_0xa151('0x27')](respondWithResult(_0x701c30,0xc9))[_0xa151('0x31')](handleError(_0x701c30,null));};exports[_0xa151('0x3b')]=function(_0x863bd2,_0x4e5c6b){if(_0x863bd2['body']['id']){delete _0x863bd2[_0xa151('0x65')]['id'];}return db[_0xa151('0x5b')][_0xa151('0x63')]({'where':{'id':_0x863bd2[_0xa151('0x5f')]['id']},'include':[{'model':db[_0xa151('0x60')],'as':_0xa151('0x42')}]})[_0xa151('0x27')](handleEntityNotFound(_0x4e5c6b,null))[_0xa151('0x27')](saveUpdates(_0x863bd2[_0xa151('0x65')],null))[_0xa151('0x27')](respondWithResult(_0x4e5c6b,null))['catch'](handleError(_0x4e5c6b,null));};exports['destroy']=function(_0x5d6f36,_0x1e544c){return db['WhatsappAccount'][_0xa151('0x63')]({'where':{'id':_0x5d6f36[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x1e544c,null))[_0xa151('0x27')](removeEntity(_0x1e544c,null))[_0xa151('0x31')](handleError(_0x1e544c,null));};exports[_0xa151('0x6b')]=function(_0x370c8b,_0x415871){return db[_0xa151('0x5b')][_0xa151('0x6b')]()[_0xa151('0x27')](respondWithResult(_0x415871,null))['catch'](handleError(_0x415871,null));};exports[_0xa151('0x6c')]=function(_0x84ca2a,_0x5ac88b,_0x8fb76c){if(_0x84ca2a[_0xa151('0x65')]['id']){delete _0x84ca2a[_0xa151('0x65')]['id'];}return db[_0xa151('0x5b')]['find']({'where':{'id':_0x84ca2a[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x5ac88b,null))[_0xa151('0x27')](function(_0x11faa8){if(_0x11faa8){_0x84ca2a['body']['WhatsappAccountId']=_0x11faa8['id'];return db['Disposition'][_0xa151('0x64')](_0x84ca2a['body']);}})[_0xa151('0x27')](respondWithResult(_0x5ac88b,null))[_0xa151('0x31')](handleError(_0x5ac88b,null));};exports['getDispositions']=function(_0x471b39,_0x5106ad,_0x92789){var _0x15ecb6={'raw':![],'where':{}};var _0x36ad54={};var _0x26678a={'count':0x0,'rows':[]};return db[_0xa151('0x5b')][_0xa151('0x6d')]({'where':{'id':_0x471b39[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x5106ad,null))['then'](function(_0x4cd255){if(_0x4cd255){_0x36ad54[_0xa151('0x46')]=_[_0xa151('0x49')](db[_0xa151('0x6e')][_0xa151('0x61')]);_0x36ad54[_0xa151('0x48')]=_[_0xa151('0x49')](_0x471b39[_0xa151('0x48')]);_0x36ad54[_0xa151('0x4a')]=_[_0xa151('0x4b')](_0x36ad54[_0xa151('0x46')],_0x36ad54['query']);_0x15ecb6['attributes']=_[_0xa151('0x4b')](_0x36ad54['model'],qs[_0xa151('0x4d')](_0x471b39[_0xa151('0x48')]['fields']));_0x15ecb6[_0xa151('0x4c')]=_0x15ecb6[_0xa151('0x4c')]['length']?_0x15ecb6[_0xa151('0x4c')]:_0x36ad54['model'];if(!_0x471b39[_0xa151('0x48')][_0xa151('0x4f')](_0xa151('0x50'))){_0x15ecb6['limit']=qs[_0xa151('0x51')](_0x471b39[_0xa151('0x48')][_0xa151('0x51')]);_0x15ecb6['offset']=qs[_0xa151('0x34')](_0x471b39[_0xa151('0x48')][_0xa151('0x34')]);}_0x15ecb6['order']=qs['sort'](_0x471b39['query']['sort']);_0x15ecb6['where']=qs[_0xa151('0x4a')](_['pick'](_0x471b39[_0xa151('0x48')],_0x36ad54[_0xa151('0x4a')]));_0x15ecb6[_0xa151('0x54')][_0xa151('0x6f')]=_0x4cd255['id'];if(_0x471b39[_0xa151('0x48')][_0xa151('0x56')]){_0x15ecb6[_0xa151('0x54')]=_['merge'](_0x15ecb6['where'],{'$or':_[_0xa151('0x47')](_0x15ecb6['attributes'],function(_0x51c669){var _0xcf62c0={};_0xcf62c0[_0x51c669]={'$like':'%'+_0x471b39[_0xa151('0x48')][_0xa151('0x56')]+'%'};return _0xcf62c0;})});}_0x15ecb6=_[_0xa151('0x57')]({},_0x15ecb6,_0x471b39[_0xa151('0x5a')]);return db[_0xa151('0x6e')][_0xa151('0x36')]({'where':_0x15ecb6['where']})['then'](function(_0x27e751){_0x26678a[_0xa151('0x36')]=_0x27e751;if(_0x471b39[_0xa151('0x48')][_0xa151('0x62')]){_0x15ecb6[_0xa151('0x5c')]=[{'all':!![]}];}return db[_0xa151('0x6e')][_0xa151('0x70')](_0x15ecb6);})['then'](function(_0x1fd562){_0x26678a['rows']=_0x1fd562;return _0x26678a;});}})['then'](respondWithFilteredResult(_0x5106ad,_0x15ecb6))[_0xa151('0x31')](handleError(_0x5106ad,null));};exports[_0xa151('0x71')]=function(_0x3904fd,_0x2d1e8a,_0x54ea91){return db[_0xa151('0x5b')][_0xa151('0x63')]({'where':{'id':_0x3904fd[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x2d1e8a,null))['then'](function(_0x59da72){if(_0x59da72){return _0x59da72[_0xa151('0x71')](_0x3904fd[_0xa151('0x48')][_0xa151('0x72')]);}})[_0xa151('0x27')](respondWithStatusCode(_0x2d1e8a,null))[_0xa151('0x31')](handleError(_0x2d1e8a,null));};exports[_0xa151('0x73')]=function(_0x4977bc,_0x35917e,_0x1b56f3){if(_0x4977bc['body']['id']){delete _0x4977bc[_0xa151('0x65')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x4977bc['params']['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x35917e,null))[_0xa151('0x27')](function(_0x3c3dbf){if(_0x3c3dbf){_0x4977bc[_0xa151('0x65')][_0xa151('0x6f')]=_0x3c3dbf['id'];return db[_0xa151('0x74')]['create'](_0x4977bc[_0xa151('0x65')]);}})[_0xa151('0x27')](respondWithResult(_0x35917e,null))[_0xa151('0x31')](handleError(_0x35917e,null));};exports[_0xa151('0x75')]=function(_0x5b7bbe,_0x1ed1e3,_0x4b8f62){var _0x4f6208={'raw':![],'where':{}};var _0x7ed02={};var _0x2e273b={'count':0x0,'rows':[]};return db[_0xa151('0x5b')]['findOne']({'where':{'id':_0x5b7bbe['params']['id']}})['then'](handleEntityNotFound(_0x1ed1e3,null))['then'](function(_0x2ecdcc){if(_0x2ecdcc){_0x7ed02[_0xa151('0x46')]=_[_0xa151('0x49')](db[_0xa151('0x74')][_0xa151('0x61')]);_0x7ed02[_0xa151('0x48')]=_['keys'](_0x5b7bbe[_0xa151('0x48')]);_0x7ed02[_0xa151('0x4a')]=_[_0xa151('0x4b')](_0x7ed02[_0xa151('0x46')],_0x7ed02[_0xa151('0x48')]);_0x4f6208[_0xa151('0x4c')]=_[_0xa151('0x4b')](_0x7ed02[_0xa151('0x46')],qs[_0xa151('0x4d')](_0x5b7bbe[_0xa151('0x48')][_0xa151('0x4d')]));_0x4f6208['attributes']=_0x4f6208[_0xa151('0x4c')]['length']?_0x4f6208[_0xa151('0x4c')]:_0x7ed02[_0xa151('0x46')];if(!_0x5b7bbe[_0xa151('0x48')][_0xa151('0x4f')](_0xa151('0x50'))){_0x4f6208[_0xa151('0x51')]=qs['limit'](_0x5b7bbe['query']['limit']);_0x4f6208[_0xa151('0x34')]=qs[_0xa151('0x34')](_0x5b7bbe[_0xa151('0x48')][_0xa151('0x34')]);}_0x4f6208[_0xa151('0x52')]=qs['sort'](_0x5b7bbe[_0xa151('0x48')]['sort']);_0x4f6208['where']=qs[_0xa151('0x4a')](_[_0xa151('0x55')](_0x5b7bbe[_0xa151('0x48')],_0x7ed02[_0xa151('0x4a')]));_0x4f6208[_0xa151('0x54')]['WhatsappAccountId']=_0x2ecdcc['id'];if(_0x5b7bbe[_0xa151('0x48')][_0xa151('0x56')]){_0x4f6208[_0xa151('0x54')]=_[_0xa151('0x57')](_0x4f6208[_0xa151('0x54')],{'$or':_[_0xa151('0x47')](_0x4f6208[_0xa151('0x4c')],function(_0xbfb2b8){var _0x4e4407={};_0x4e4407[_0xbfb2b8]={'$like':'%'+_0x5b7bbe[_0xa151('0x48')][_0xa151('0x56')]+'%'};return _0x4e4407;})});}_0x4f6208=_[_0xa151('0x57')]({},_0x4f6208,_0x5b7bbe[_0xa151('0x5a')]);return db[_0xa151('0x74')]['count']({'where':_0x4f6208[_0xa151('0x54')]})[_0xa151('0x27')](function(_0x27a6b7){_0x2e273b['count']=_0x27a6b7;if(_0x5b7bbe[_0xa151('0x48')][_0xa151('0x62')]){_0x4f6208[_0xa151('0x5c')]=[{'all':!![]}];}return db[_0xa151('0x74')][_0xa151('0x70')](_0x4f6208);})[_0xa151('0x27')](function(_0x5bb9c9){_0x2e273b['rows']=_0x5bb9c9;return _0x2e273b;});}})[_0xa151('0x27')](respondWithFilteredResult(_0x1ed1e3,_0x4f6208))[_0xa151('0x31')](handleError(_0x1ed1e3,null));};exports[_0xa151('0x76')]=function(_0x2530e7,_0x197de4,_0x163366){return db[_0xa151('0x5b')][_0xa151('0x63')]({'where':{'id':_0x2530e7[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x197de4,null))[_0xa151('0x27')](function(_0x4cb96f){if(_0x4cb96f){return _0x4cb96f[_0xa151('0x76')](_0x2530e7['query'][_0xa151('0x72')]);}})[_0xa151('0x27')](respondWithStatusCode(_0x197de4,null))['catch'](handleError(_0x197de4,null));};exports[_0xa151('0x77')]=function(_0xbbb59d,_0x3cd6c4,_0x17ae20){return db['WhatsappAccount'][_0xa151('0x63')]({'where':{'id':_0xbbb59d[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x3cd6c4,null))[_0xa151('0x27')](function(_0xccc8d3){if(_0xccc8d3){return _0xccc8d3[_0xa151('0x77')](_0xbbb59d[_0xa151('0x65')][_0xa151('0x72')],_[_0xa151('0x78')](_0xbbb59d[_0xa151('0x65')],['ids','id'])||{})[_0xa151('0x79')](function(_0x5b22fd){for(var _0xa22a0f=0x0;_0xa22a0f<_0xbbb59d[_0xa151('0x65')][_0xa151('0x72')][_0xa151('0x4e')];_0xa22a0f+=0x1){socket[_0xa151('0x7a')](_0xa151('0x7b'),{'UserId':Number(_0xbbb59d['body'][_0xa151('0x72')][_0xa22a0f]),'WhatsappAccountId':Number(_0xbbb59d[_0xa151('0x5f')]['id'])});}return _0x5b22fd;});}})[_0xa151('0x27')](respondWithResult(_0x3cd6c4,null))[_0xa151('0x31')](handleError(_0x3cd6c4,null));};exports[_0xa151('0x7c')]=function(_0x3b0faa,_0x497d79,_0x38a953){return db['WhatsappAccount'][_0xa151('0x63')]({'where':{'id':_0x3b0faa['params']['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x497d79,null))['then'](function(_0x19e951){if(_0x19e951){return _0x19e951[_0xa151('0x7c')](_0x3b0faa['query']['ids'])[_0xa151('0x27')](function(){if(_[_0xa151('0x7d')](_0x3b0faa[_0xa151('0x48')][_0xa151('0x72')])){for(var _0x357ad0=0x0;_0x357ad0<_0x3b0faa[_0xa151('0x48')]['ids']['length'];_0x357ad0+=0x1){socket[_0xa151('0x7a')](_0xa151('0x7e'),{'UserId':Number(_0x3b0faa[_0xa151('0x48')]['ids'][_0x357ad0]),'WhatsappAccountId':Number(_0x3b0faa[_0xa151('0x5f')]['id'])});}}else{socket[_0xa151('0x7a')](_0xa151('0x7e'),{'UserId':Number(_0x3b0faa[_0xa151('0x48')][_0xa151('0x72')]),'WhatsappAccountId':Number(_0x3b0faa['params']['id'])});}});}})[_0xa151('0x27')](respondWithStatusCode(_0x497d79,null))[_0xa151('0x31')](handleError(_0x497d79,null));};exports[_0xa151('0x7f')]=function(_0x3b567e,_0x147b69,_0x4e91d9){var _0x359d53={};var _0x4147ee={};var _0x396ace;var _0x323849;return db['WhatsappAccount'][_0xa151('0x6d')]({'where':{'id':_0x3b567e[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x147b69,null))[_0xa151('0x27')](function(_0x131a5c){if(_0x131a5c){_0x396ace=_0x131a5c;_0x4147ee[_0xa151('0x46')]=_['keys'](db[_0xa151('0x80')]['rawAttributes']);_0x4147ee['query']=_[_0xa151('0x49')](_0x3b567e[_0xa151('0x48')]);_0x4147ee[_0xa151('0x4a')]=_[_0xa151('0x4b')](_0x4147ee[_0xa151('0x46')],_0x4147ee['query']);_0x359d53[_0xa151('0x4c')]=_[_0xa151('0x4b')](_0x4147ee['model'],qs[_0xa151('0x4d')](_0x3b567e[_0xa151('0x48')]['fields']));_0x359d53[_0xa151('0x4c')]=_0x359d53['attributes']['length']?_0x359d53['attributes']:_0x4147ee['model'];_0x359d53['order']=qs[_0xa151('0x53')](_0x3b567e['query']['sort']);_0x359d53['where']=qs[_0xa151('0x4a')](_[_0xa151('0x55')](_0x3b567e['query'],_0x4147ee['filters']));if(_0x3b567e[_0xa151('0x48')][_0xa151('0x56')]){_0x359d53[_0xa151('0x54')]=_[_0xa151('0x57')](_0x359d53[_0xa151('0x54')],{'$or':_[_0xa151('0x47')](_0x359d53['attributes'],function(_0x4e7856){var _0x3de82a={};_0x3de82a[_0x4e7856]={'$like':'%'+_0x3b567e[_0xa151('0x48')][_0xa151('0x56')]+'%'};return _0x3de82a;})});}_0x359d53=_['merge']({},_0x359d53,_0x3b567e[_0xa151('0x5a')]);return _0x396ace['getAgents'](_0x359d53);}})[_0xa151('0x27')](function(_0x53b8ca){if(_0x53b8ca){_0x323849=_0x53b8ca['length'];if(!_0x3b567e[_0xa151('0x48')]['hasOwnProperty']('nolimit')){_0x359d53[_0xa151('0x51')]=qs[_0xa151('0x51')](_0x3b567e[_0xa151('0x48')]['limit']);_0x359d53[_0xa151('0x34')]=qs[_0xa151('0x34')](_0x3b567e[_0xa151('0x48')]['offset']);}return _0x396ace[_0xa151('0x7f')](_0x359d53);}})[_0xa151('0x27')](function(_0x1dfdae){if(_0x1dfdae){return _0x1dfdae?{'count':_0x323849,'rows':_0x1dfdae}:null;}})[_0xa151('0x27')](respondWithResult(_0x147b69,null))[_0xa151('0x31')](handleError(_0x147b69,null));};exports[_0xa151('0x81')]=function(_0x475a33,_0x410a93){var _0x5c94a3=_0x475a33[_0xa151('0x5f')]['id'];var _0x2a7fb1=_0x475a33[_0xa151('0x65')];var _0x1f4774=0xc8;var _0xd02ce5=null;return db[_0xa151('0x82')][_0xa151('0x83')]({'isolationLevel':db['sequelize']['Transaction'][_0xa151('0x84')][_0xa151('0x85')]},function(_0x1dcfdc){return db[_0xa151('0x5b')][_0xa151('0x6d')]({'where':{'id':_0x5c94a3},'transaction':_0x1dcfdc})[_0xa151('0x27')](function(_0x5866a6){if(_0x5866a6){return db['WhatsappApplication'][_0xa151('0x86')]({'where':{'WhatsappAccountId':_0x5c94a3},'transaction':_0x1dcfdc})[_0xa151('0x27')](function(){var _0x355abc=_[_0xa151('0x47')](_0x2a7fb1,function(_0x283a87){_0x283a87[_0xa151('0x6f')]=_0x5c94a3;return _0x283a87;});return db[_0xa151('0x87')]['bulkCreate'](_0x355abc,{'transaction':_0x1dcfdc});});}else{_0x1f4774=0x194;_0xd02ce5=[];}});})[_0xa151('0x27')](function(){if(_0x1f4774!==0x194){return db[_0xa151('0x87')][_0xa151('0x88')]({'where':{'WhatsappAccountId':_0x5c94a3},'order':_0xa151('0x89')})[_0xa151('0x27')](function(_0x3759cf){_0xd02ce5=_0x3759cf;});}})['catch'](function(_0x4d97bb){_0x1f4774=0x1f4;logger['error'](_0x4d97bb[_0xa151('0x3f')]);if(_0x4d97bb['name']){delete _0x4d97bb[_0xa151('0x59')];}_0xd02ce5=_0x4d97bb;})['finally'](function(){if(_0xd02ce5===null){_0x410a93[_0xa151('0x8a')](_0x1f4774);}else{if(_0x1f4774===0x1f4){_0x410a93[_0xa151('0x33')](_0x1f4774)[_0xa151('0x40')](_0xd02ce5);}else{_0x410a93[_0xa151('0x33')](_0x1f4774)[_0xa151('0x8b')](_0xd02ce5);}}});};exports['getApplications']=function(_0x21101a,_0x38e262,_0x5cc7be){var _0x252a0e={};var _0x399c78={};var _0x5a921c;var _0x4320b4;return db[_0xa151('0x5b')][_0xa151('0x6d')]({'where':{'id':_0x21101a[_0xa151('0x5f')]['id']}})[_0xa151('0x27')](handleEntityNotFound(_0x38e262,null))[_0xa151('0x27')](function(_0x3e8199){if(_0x3e8199){_0x5a921c=_0x3e8199;_0x399c78[_0xa151('0x46')]=_['keys'](db['WhatsappApplication']['rawAttributes']);_0x399c78[_0xa151('0x48')]=_[_0xa151('0x49')](_0x21101a[_0xa151('0x48')]);_0x399c78['filters']=_['intersection'](_0x399c78[_0xa151('0x46')],_0x399c78['query']);_0x252a0e[_0xa151('0x4c')]=_[_0xa151('0x4b')](_0x399c78[_0xa151('0x46')],qs[_0xa151('0x4d')](_0x21101a['query'][_0xa151('0x4d')]));_0x252a0e[_0xa151('0x4c')]=_0x252a0e['attributes']['length']?_0x252a0e[_0xa151('0x4c')]:_0x399c78[_0xa151('0x46')];_0x252a0e[_0xa151('0x52')]=qs[_0xa151('0x53')](_0x21101a[_0xa151('0x48')]['sort']);_0x252a0e[_0xa151('0x54')]=qs[_0xa151('0x4a')](_['pick'](_0x21101a[_0xa151('0x48')],_0x399c78['filters']));if(_0x21101a[_0xa151('0x48')][_0xa151('0x56')]){_0x252a0e[_0xa151('0x54')]=_[_0xa151('0x57')](_0x252a0e[_0xa151('0x54')],{'$or':_[_0xa151('0x47')](_0x252a0e[_0xa151('0x4c')],function(_0x1216c9){var _0x229317={};_0x229317[_0x1216c9]={'$like':'%'+_0x21101a[_0xa151('0x48')][_0xa151('0x56')]+'%'};return _0x229317;})});}_0x252a0e=_[_0xa151('0x57')]({},_0x252a0e,_0x21101a[_0xa151('0x5a')]);return _0x5a921c[_0xa151('0x8c')](_0x252a0e);}})[_0xa151('0x27')](function(_0x2fc102){if(_0x2fc102){_0x4320b4=_0x2fc102[_0xa151('0x4e')];if(!_0x21101a[_0xa151('0x48')][_0xa151('0x4f')]('nolimit')){_0x252a0e[_0xa151('0x51')]=qs[_0xa151('0x51')](_0x21101a[_0xa151('0x48')]['limit']);_0x252a0e[_0xa151('0x34')]=qs['offset'](_0x21101a[_0xa151('0x48')][_0xa151('0x34')]);}return _0x5a921c['getApplications'](_0x252a0e);}})[_0xa151('0x27')](function(_0x5cb528){if(_0x5cb528){return _0x5cb528?{'count':_0x4320b4,'rows':_0x5cb528}:null;}})[_0xa151('0x27')](respondWithResult(_0x38e262,null))['catch'](handleError(_0x38e262,null));};exports[_0xa151('0x8d')]=function(_0x32000f,_0x266b05,_0x5d515b){var _0x1e1b9c={'channel':_0xa151('0x8e')};var _0xd7e5a2=[];var _0x38c362=[];var _0x3c8f8f={};return db['WhatsappAccount'][_0xa151('0x63')]({'where':{'id':_0x32000f[_0xa151('0x5f')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0xa151('0x8f')}]})[_0xa151('0x27')](handleEntityNotFound(_0x266b05,null))[_0xa151('0x27')](function(_0x518904){_0x1e1b9c[_0xa151('0x90')]=_0x518904;if(_0x1e1b9c[_0xa151('0x90')]&&_0x1e1b9c[_0xa151('0x90')]['type']===_0xa151('0x91')&&_0x32000f['body'][_0xa151('0x92')]){if(_0x32000f[_0xa151('0x65')][_0xa151('0x92')]['length']===0x0)return;if(_0x32000f[_0xa151('0x65')][_0xa151('0x92')][0x0][_0xa151('0x93')]!=='read')return;return db['WhatsappMessage'][_0xa151('0x3b')]({'read':!![],'readAt':_0x32000f[_0xa151('0x65')][_0xa151('0x92')][0x0][_0xa151('0x94')]},{'where':{'messageId':_0x32000f[_0xa151('0x65')][_0xa151('0x92')][0x0][_0xa151('0x95')]},'individualHooks':!![]})[_0xa151('0x27')](function(_0x17714e){return _0x266b05['status'](0xc8)[_0xa151('0x8b')](_0x17714e);});}_0x1e1b9c['applications']=_[_0xa151('0x96')](_0x518904[_0xa151('0x8f')],['priority'],[_0xa151('0x97')]);if(_0x1e1b9c[_0xa151('0x90')]['Applications']){delete _0x1e1b9c['account'][_0xa151('0x8f')];}return db[_0xa151('0x98')][_0xa151('0x6b')]()['then'](function(_0x5b13be){if(!_0x5b13be){throw new db[(_0xa151('0x99'))][(_0xa151('0x9a'))]('no\x20available\x20attributes');}_0xd7e5a2=_[_0xa151('0x9b')](_[_0xa151('0x49')](_0x5b13be),['createdAt',_0xa151('0x9c')]);_0x38c362=_[_0xa151('0x9b')](_[_0xa151('0x49')](_0x5b13be),['createdAt','updatedAt',_0xa151('0x9d'),'ListId']);_0x1e1b9c['body']={'mapKey':_0xa151('0x9e')};if(_0x1e1b9c['account']&&_0x1e1b9c[_0xa151('0x90')][_0xa151('0x44')]===_0xa151('0x9f')){_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa0')]=_0x32000f[_0xa151('0x65')][_0xa151('0xa1')]['replace']('whatsapp:','');_0x1e1b9c[_0xa151('0x65')][_0xa151('0x65')]=_0x32000f[_0xa151('0x65')]['Body'];_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa2')]=_0x32000f[_0xa151('0x65')][_0xa151('0xa3')];}if(_0x1e1b9c[_0xa151('0x90')]&&_0x1e1b9c[_0xa151('0x90')]['type']===_0xa151('0x91')){_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa0')]=_0x32000f[_0xa151('0x65')][_0xa151('0xa4')][0x0][_0xa151('0xa0')];_0x1e1b9c['body']['body']=_0x32000f[_0xa151('0x65')]['notifications'][0x0][_0xa151('0x2f')]['body'];_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa2')]=_0x32000f[_0xa151('0x65')][_0xa151('0xa4')][0x0][_0xa151('0x95')];}if(_0x1e1b9c[_0xa151('0x65')]['id']){delete _0x1e1b9c[_0xa151('0x65')]['id'];}if(_['isNil'](_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa0')])){throw new db[(_0xa151('0x99'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xa151('0xa5')](_0x1e1b9c['body'][_0xa151('0x65')])||_0x1e1b9c[_0xa151('0x65')][_0xa151('0x65')]===''){throw new db[(_0xa151('0x99'))][(_0xa151('0x9a'))](_0xa151('0xa6'));}if(_['isNil'](_0x1e1b9c['body'][_0xa151('0xa7')])){throw new db['Sequelize'][(_0xa151('0x9a'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x38c362);}if(!_['includes'](_0x38c362,_0x1e1b9c['body'][_0xa151('0xa7')])){throw new db[(_0xa151('0x99'))][(_0xa151('0x9a'))](_0xa151('0xa8')+_0x38c362);}_0x3c8f8f[_0x1e1b9c[_0xa151('0x65')]['mapKey']]=_0x1e1b9c[_0xa151('0x65')]['from'];return db[_0xa151('0xa9')][_0xa151('0x63')]({'where':{'id':_0x1e1b9c[_0xa151('0x90')][_0xa151('0xaa')]},'include':[{'model':db[_0xa151('0x98')],'as':_0xa151('0xab'),'where':_0x3c8f8f,'limit':0x1,'order':[[_0xa151('0x9c'),'DESC']]}]});})[_0xa151('0x27')](handleEntityNotFound(_0x266b05,null))[_0xa151('0x27')](function(_0xdc74ab){if(_0xdc74ab){_0x1e1b9c[_0xa151('0xac')]=_[_0xa151('0x78')](_0xdc74ab,[_0xa151('0xab')]);if(_0xdc74ab['Contacts'][_0xa151('0x4e')]){return _0xdc74ab[_0xa151('0xab')][0x0];}var _0x20f6e8=_[_0xa151('0x1e')](_0x1e1b9c[_0xa151('0x65')],{'firstName':_0x1e1b9c[_0xa151('0x65')]['from'],'ListId':_0xdc74ab['id']});_0x20f6e8[_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa7')]]=_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa0')];return db[_0xa151('0x98')][_0xa151('0x64')](_0x20f6e8,{'fields':_0xd7e5a2,'raw':!![]});}})[_0xa151('0x27')](handleEntityNotFound(_0x266b05,null))[_0xa151('0x27')](function(_0x2a38f7){if(_0x2a38f7){_0x1e1b9c[_0xa151('0xad')]=_0x2a38f7;var _0x2f0a1f={'ContactId':_0x2a38f7['id'],'phone':_0x1e1b9c[_0xa151('0x65')]['from'],'WhatsappAccountId':_0x32000f[_0xa151('0x5f')]['id']};var _0x598ee4={'ContactId':_0x2a38f7['id'],'WhatsappAccountId':_0x32000f[_0xa151('0x5f')]['id'],'closed':![]};return db[_0xa151('0xae')][_0xa151('0x63')]({'where':_0x598ee4})[_0xa151('0x27')](function(_0x131170){if(_0x131170){return[_0x131170,![]];}return db[_0xa151('0xae')]['create'](_0x2f0a1f)[_0xa151('0x27')](function(_0x223bca){return[_0x223bca,!![]];});});}})[_0xa151('0x79')](function(_0x3d7f79,_0x21390f){_0x1e1b9c[_0xa151('0xaf')]=_0x3d7f79[_0xa151('0x3c')]({'plain':!![]});_0x1e1b9c['interaction'][_0xa151('0xb0')]=![];if(_0x21390f){if(_0x1e1b9c[_0xa151('0x90')][_0xa151('0xb1')]){_0x1e1b9c[_0xa151('0xb2')][_0xa151('0xb3')]({'id':0x0,'priority':_0x1e1b9c['applications'][_0xa151('0x4e')]+0x1,'app':_0xa151('0xb4'),'appdata':_0xa151('0xb5'),'interval':_0xa151('0xb6')});}_0x1e1b9c['interaction']['created']=!![];}return db[_0xa151('0xb7')][_0xa151('0x64')]({'phone':_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa0')],'messageId':_0x1e1b9c[_0xa151('0x65')][_0xa151('0xa2')],'body':_0x1e1b9c[_0xa151('0x65')][_0xa151('0x65')],'WhatsappAccountId':_0x32000f[_0xa151('0x5f')]['id'],'WhatsappInteractionId':_0x3d7f79['id'],'direction':'in','ContactId':_0x3d7f79[_0xa151('0xb8')],'AttachmentId':_0x1e1b9c[_0xa151('0x65')][_0xa151('0xb9')]});})['then'](function(_0x440c16){_0x1e1b9c[_0xa151('0x2f')]=_0x440c16;if(_0x1e1b9c['interaction']['UserId']){return db[_0xa151('0x80')][_0xa151('0x63')]({'attributes':['id',_0xa151('0x59')],'where':{'id':_0x1e1b9c[_0xa151('0xaf')][_0xa151('0xba')]}})[_0xa151('0x27')](function(_0x1723b7){if(_0x1723b7){_0x1e1b9c[_0xa151('0xb2')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1723b7[_0xa151('0x59')]+','+(_0x1e1b9c['account'][_0xa151('0xbb')]||0xa),'interval':_0xa151('0xb6')});}return respondWithRpcPromise(_0xa151('0xbc'),_0xa151('0xbd'),_0x1e1b9c);});}return respondWithRpcPromise(_0xa151('0xbc'),_0xa151('0xbd'),_0x1e1b9c);})[_0xa151('0x27')](function(_0x244a8b){if(_0x244a8b){var _0x2f68f8=0xc8;var _0x45ba68=_0xa151('0xbe');logger[_0xa151('0x28')](_0xa151('0x2b'),_0x45ba68,_0x2f68f8,'entity\x20found');logger[_0xa151('0x2a')](_0xa151('0xbf'),_0x45ba68,_0x2f68f8,_0xa151('0xc0'),JSON[_0xa151('0xc1')](_0x244a8b));if(_0x1e1b9c['account'][_0xa151('0x44')]===_0xa151('0x9f')){return _0x266b05[_0xa151('0x33')](_0x2f68f8)[_0xa151('0x37')]('Content-Type',_0xa151('0xc2'))[_0xa151('0x40')](_0xa151('0xc3'));}else{return _0x266b05[_0xa151('0x33')](_0x2f68f8)[_0xa151('0x8b')](_0x244a8b);}}});})['catch'](handleError(_0x266b05,null));};exports['send']=function(_0x3ae21d,_0x8e588f,_0x590d84){var _0x50412,_0x4e4169,_0x171903;if(_[_0xa151('0xa5')](_0x3ae21d['body'][_0xa151('0x65')])||_0x3ae21d[_0xa151('0x65')][_0xa151('0x65')]===''){throw new db['Sequelize'][(_0xa151('0x9a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xa151('0xa5')](_0x3ae21d[_0xa151('0x65')]['to'])){throw new db[(_0xa151('0x99'))][(_0xa151('0x9a'))](_0xa151('0xc4'));}_0x50412=_0x3ae21d['body']['to'];return db[_0xa151('0x5b')]['find']({'where':{'id':_0x3ae21d[_0xa151('0x5f')]['id']},'include':[{'model':db[_0xa151('0xa9')],'as':_0xa151('0xc5'),'include':[{'model':db['CmContact'],'as':_0xa151('0xab'),'where':{'mobile':_0x50412},'limit':0x1,'order':[[_0xa151('0x9c'),'DESC']]}]}]})[_0xa151('0x27')](handleEntityNotFound(_0x8e588f,null))[_0xa151('0x27')](function(_0x1c45c){if(_0x1c45c&&_0x1c45c[_0xa151('0xc5')]){_0x4e4169=_0x1c45c[_0xa151('0x3c')]({'plain':!![]});if(_0x4e4169[_0xa151('0xc5')]&&_0x4e4169['List'][_0xa151('0xab')]['length']){return _0x4e4169[_0xa151('0xc5')][_0xa151('0xab')][0x0];}return db[_0xa151('0x98')]['create'](_[_0xa151('0x1e')](_0x3ae21d['body'],{'firstName':_0x50412,'mobile':_0x50412,'phone':_0x50412,'ListId':_0x4e4169[_0xa151('0xaa')]}));}})['then'](handleEntityNotFound(_0x8e588f,null))[_0xa151('0x27')](function(_0x7eebbd){if(_0x7eebbd){_0x171903=_0x7eebbd;return db['WhatsappInteraction']['find']({'where':{'ContactId':_0x171903['id'],'closed':![],'WhatsappAccountId':_0x4e4169['id']}})[_0xa151('0x27')](function(_0x389204){if(_0x389204){return[_0x389204,![]];}return db[_0xa151('0xae')]['create']({'UserId':_0x3ae21d['user']['id'],'ContactId':_0x171903['id'],'WhatsappAccountId':_0x4e4169['id'],'phone':_0x50412,'firstMsgDirection':_0xa151('0xc6'),'Messages':[_['merge'](_0x3ae21d[_0xa151('0x65')],{'read':![],'body':_0x3ae21d[_0xa151('0x65')][_0xa151('0x65')],'phone':_0x50412,'WhatsappAccountId':_0x4e4169['id'],'UserId':_0x3ae21d[_0xa151('0x66')]['id'],'ContactId':_0x171903['id']})]},{'include':[{'model':db[_0xa151('0xb7')],'as':_0xa151('0xc7')}]})[_0xa151('0x27')](function(_0x10db31){return[_0x10db31,!![]];});});}})[_0xa151('0x79')](function(_0x1ee905,_0x1733a7){if(_0x1733a7){return _0x1ee905;}return db['WhatsappMessage'][_0xa151('0x64')](_['merge'](_0x3ae21d[_0xa151('0x65')],{'read':![],'body':_0x3ae21d['body']['body'],'phone':_0x50412,'WhatsappAccountId':_0x4e4169['id'],'WhatsappInteractionId':_0x1ee905['id'],'UserId':_0x3ae21d[_0xa151('0x66')]['id'],'ContactId':_0x171903['id']}))[_0xa151('0x27')](function(_0x30d1b9){_0x1ee905[_0xa151('0xc8')][_0xa151('0xc7')]=[];_0x1ee905[_0xa151('0xc8')][_0xa151('0xc7')][_0xa151('0xb3')](_0x30d1b9[_0xa151('0xc8')]);return _0x1ee905;});})[_0xa151('0x27')](respondWithResult(_0x8e588f,null))['catch'](handleError(_0x8e588f,null));};
\ No newline at end of file
+var _0xedbd=['redis','defaults','socket.io-emitter','./whatsappAccount.socket','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappAccounts','UserProfileSection','userProfileId','body','addDisposition','Disposition','getDispositions','findOne','nolimit','WhatsappAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','statuses','state','WhatsappMessage','message_id','orderBy','asc','CmContact','describe','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','replace','whatsapp:','Body','messageId','MessageSid','sinch','from','notifications','isNil','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','CmList','Contacts','DESC','list','WhatsappInteraction','interaction','autoclose','applications','push','close','unmanaged','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','List','Messages','dataValues','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xedbd,0x16b));var _0xdedb=function(_0x1294aa,_0x48f904){_0x1294aa=_0x1294aa-0x0;var _0x365d73=_0xedbd[_0x1294aa];return _0x365d73;};'use strict';var emlformat=require(_0xdedb('0x0'));var rimraf=require(_0xdedb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdedb('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdedb('0x3'));var Mustache=require(_0xdedb('0x4'));var util=require(_0xdedb('0x5'));var path=require(_0xdedb('0x6'));var sox=require('sox');var csv=require(_0xdedb('0x7'));var ejs=require(_0xdedb('0x8'));var fs=require('fs');var fs_extra=require(_0xdedb('0x9'));var _=require(_0xdedb('0xa'));var squel=require(_0xdedb('0xb'));var crypto=require(_0xdedb('0xc'));var jsforce=require(_0xdedb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdedb('0x7'));var querystring=require(_0xdedb('0xe'));var Papa=require(_0xdedb('0xf'));var Redis=require(_0xdedb('0x10'));var authService=require(_0xdedb('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdedb('0x12'));var hardwareService=require(_0xdedb('0x13'));var logger=require(_0xdedb('0x14'))('api');var utils=require(_0xdedb('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdedb('0x16'))['db'];config[_0xdedb('0x17')]=_[_0xdedb('0x18')](config[_0xdedb('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xdedb('0x19'))(new Redis(config[_0xdedb('0x17')]));require(_0xdedb('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xdedb('0x1b')]['http']({'port':0x232c});function respondWithRpcPromise(_0x411200,_0x5d763d,_0x1c623e,_0x39a709){return new BPromise(function(_0x5d3352,_0x1699e8){var _0x911939=_0x39a709||client;return _0x911939[_0xdedb('0x1c')](_0x411200,_0x1c623e)[_0xdedb('0x1d')](function(_0x4e0fef){logger[_0xdedb('0x1e')](_0xdedb('0x1f'),_0x5d763d,_0xdedb('0x20'));logger[_0xdedb('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x5d763d,'request\x20sent',JSON[_0xdedb('0x22')](_0x4e0fef));if(_0x4e0fef[_0xdedb('0x23')]){if(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x24')]===0x1f4){logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x4e0fef[_0xdedb('0x23')]['message']);return _0x1699e8(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);}logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);return _0x5d3352(_0x4e0fef[_0xdedb('0x23')][_0xdedb('0x25')]);}else{logger['info'](_0xdedb('0x1f'),_0x5d763d,_0xdedb('0x20'));_0x5d3352(_0x4e0fef[_0xdedb('0x26')][_0xdedb('0x25')]);}})[_0xdedb('0x27')](function(_0x41eec6){logger[_0xdedb('0x23')](_0xdedb('0x1f'),_0x5d763d,_0x41eec6);_0x1699e8(_0x41eec6);});});}function respondWithStatusCode(_0x54f65e,_0x3bad7d){_0x3bad7d=_0x3bad7d||0xcc;return function(_0x4a5867){if(_0x4a5867){return _0x54f65e[_0xdedb('0x28')](_0x3bad7d);}return _0x54f65e['status'](_0x3bad7d)[_0xdedb('0x29')]();};}function respondWithResult(_0xf610a9,_0x16525f){_0x16525f=_0x16525f||0xc8;return function(_0xf15585){if(_0xf15585){return _0xf610a9[_0xdedb('0x2a')](_0x16525f)['json'](_0xf15585);}};}function respondWithFilteredResult(_0xcfcb37,_0x803894){return function(_0x4dcfb0){if(_0x4dcfb0){var _0x2d206a=typeof _0x803894[_0xdedb('0x2b')]===_0xdedb('0x2c')&&typeof _0x803894['limit']==='undefined';var _0xdb6d26=_0x4dcfb0['count'];var _0x3431db=_0x2d206a?0x0:_0x803894[_0xdedb('0x2b')];var _0x2525a5=_0x2d206a?_0x4dcfb0[_0xdedb('0x2d')]:_0x803894[_0xdedb('0x2b')]+_0x803894['limit'];var _0x356763;if(_0x2525a5>=_0xdb6d26){_0x2525a5=_0xdb6d26;_0x356763=0xc8;}else{_0x356763=0xce;}_0xcfcb37[_0xdedb('0x2a')](_0x356763);return _0xcfcb37[_0xdedb('0x2e')](_0xdedb('0x2f'),_0x3431db+'-'+_0x2525a5+'/'+_0xdb6d26)[_0xdedb('0x30')](_0x4dcfb0);}return null;};}function patchUpdates(_0x2838fe){return function(_0x5e0ba2){try{jsonpatch[_0xdedb('0x31')](_0x5e0ba2,_0x2838fe,!![]);}catch(_0x1c0050){return BPromise[_0xdedb('0x32')](_0x1c0050);}return _0x5e0ba2[_0xdedb('0x33')]();};}function saveUpdates(_0x5c73ca,_0x4084e6){return function(_0x310b11){if(_0x310b11){return _0x310b11[_0xdedb('0x34')](_0x5c73ca)['then'](function(_0x5a3631){return _0x5a3631;});}return null;};}function removeEntity(_0x1a83dc,_0x5107a4){return function(_0x11fcde){if(_0x11fcde){return _0x11fcde[_0xdedb('0x35')]()['then'](function(){var _0x1f015b=_0x11fcde[_0xdedb('0x36')]({'plain':!![]});var _0x5fe619='WhatsappAccounts';return db[_0xdedb('0x37')][_0xdedb('0x35')]({'where':{'type':_0x5fe619,'resourceId':_0x1f015b['id']}})['then'](function(){return _0x11fcde;});})[_0xdedb('0x1d')](function(){_0x1a83dc['status'](0xcc)[_0xdedb('0x29')]();});}};}function handleEntityNotFound(_0x327721,_0x1ad784){return function(_0x3fa1c9){if(!_0x3fa1c9){_0x327721[_0xdedb('0x28')](0x194);}return _0x3fa1c9;};}function handleError(_0x5f369f,_0x2479a2){_0x2479a2=_0x2479a2||0x1f4;return function(_0x4745f7){logger['error'](_0x4745f7[_0xdedb('0x38')]);if(_0x4745f7[_0xdedb('0x39')]){delete _0x4745f7[_0xdedb('0x39')];}_0x5f369f['status'](_0x2479a2)[_0xdedb('0x3a')](_0x4745f7);};}exports['index']=function(_0x5b6871,_0x246396){var _0x3cbced={'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]},_0x172841={},_0x383587={'count':0x0,'rows':[]};var _0x27ff3c=_['map'](db[_0xdedb('0x3d')][_0xdedb('0x3e')],function(_0x504c34){return{'name':_0x504c34[_0xdedb('0x3f')],'type':_0x504c34[_0xdedb('0x40')][_0xdedb('0x41')]};});_0x172841[_0xdedb('0x42')]=_[_0xdedb('0x43')](_0x27ff3c,_0xdedb('0x39'));_0x172841[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x5b6871[_0xdedb('0x44')]);_0x172841[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x172841[_0xdedb('0x42')],_0x172841[_0xdedb('0x44')]);_0x3cbced[_0xdedb('0x48')]=_['intersection'](_0x172841[_0xdedb('0x42')],qs['fields'](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x49')]));_0x3cbced[_0xdedb('0x48')]=_0x3cbced[_0xdedb('0x48')]['length']?_0x3cbced[_0xdedb('0x48')]:_0x172841[_0xdedb('0x42')];if(!_0x5b6871[_0xdedb('0x44')][_0xdedb('0x4a')]('nolimit')){_0x3cbced[_0xdedb('0x4b')]=qs[_0xdedb('0x4b')](_0x5b6871['query'][_0xdedb('0x4b')]);_0x3cbced[_0xdedb('0x2b')]=qs['offset'](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x2b')]);}_0x3cbced[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x5b6871[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x3cbced[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x5b6871['query'],_0x172841[_0xdedb('0x46')]),_0x27ff3c);if(_0x5b6871[_0xdedb('0x44')][_0xdedb('0x50')]){_0x3cbced[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x3cbced[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x27ff3c,function(_0x5a08a1){if(_0x5a08a1[_0xdedb('0x40')]!==_0xdedb('0x52')){var _0xa027ee={};_0xa027ee[_0x5a08a1[_0xdedb('0x39')]]={'$like':'%'+_0x5b6871['query'][_0xdedb('0x50')]+'%'};return _0xa027ee;}})});}_0x3cbced=_[_0xdedb('0x51')]({},_0x3cbced,_0x5b6871[_0xdedb('0x53')]);var _0x465be0={'where':_0x3cbced[_0xdedb('0x4e')]};return db[_0xdedb('0x3d')][_0xdedb('0x2d')](_0x465be0)[_0xdedb('0x1d')](function(_0x122382){_0x383587[_0xdedb('0x2d')]=_0x122382;if(_0x5b6871[_0xdedb('0x44')][_0xdedb('0x54')]){_0x3cbced[_0xdedb('0x55')]=[{'all':!![]}];}return db[_0xdedb('0x3d')][_0xdedb('0x56')](_0x3cbced);})[_0xdedb('0x1d')](function(_0x5407fa){_0x383587[_0xdedb('0x57')]=_0x5407fa;return _0x383587;})[_0xdedb('0x1d')](respondWithFilteredResult(_0x246396,_0x3cbced))['catch'](handleError(_0x246396,null));};exports[_0xdedb('0x58')]=function(_0x3709d4,_0x48dd1a){var _0x59e229={'raw':![],'where':{'id':_0x3709d4[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]},_0x406a1b={};_0x406a1b['model']=_[_0xdedb('0x45')](db[_0xdedb('0x3d')]['rawAttributes']);_0x406a1b['query']=_[_0xdedb('0x45')](_0x3709d4[_0xdedb('0x44')]);_0x406a1b[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x406a1b['model'],_0x406a1b[_0xdedb('0x44')]);_0x59e229[_0xdedb('0x48')]=_['intersection'](_0x406a1b['model'],qs[_0xdedb('0x49')](_0x3709d4[_0xdedb('0x44')][_0xdedb('0x49')]));_0x59e229[_0xdedb('0x48')]=_0x59e229['attributes'][_0xdedb('0x5a')]?_0x59e229[_0xdedb('0x48')]:_0x406a1b[_0xdedb('0x42')];if(_0x3709d4['query'][_0xdedb('0x54')]){_0x59e229[_0xdedb('0x55')]=[{'all':!![]}];}_0x59e229=_['merge']({},_0x59e229,_0x3709d4[_0xdedb('0x53')]);return db[_0xdedb('0x3d')][_0xdedb('0x5b')](_0x59e229)[_0xdedb('0x1d')](handleEntityNotFound(_0x48dd1a,null))[_0xdedb('0x1d')](respondWithResult(_0x48dd1a,null))[_0xdedb('0x27')](handleError(_0x48dd1a,null));};exports[_0xdedb('0x5c')]=function(_0x1ba21a,_0x126dc7){return db[_0xdedb('0x3d')]['create'](_0x1ba21a['body'],{})[_0xdedb('0x1d')](function(_0x287f8a){var _0x1336d9=_0x1ba21a[_0xdedb('0x5d')][_0xdedb('0x36')]({'plain':!![]});if(!_0x1336d9)throw new Error(_0xdedb('0x5e'));if(_0x1336d9[_0xdedb('0x5f')]===_0xdedb('0x5d')){var _0x3cb915=_0x287f8a[_0xdedb('0x36')]({'plain':!![]});var _0x3bb454=_0xdedb('0x60');return db[_0xdedb('0x61')][_0xdedb('0x5b')]({'where':{'name':_0x3bb454,'userProfileId':_0x1336d9[_0xdedb('0x62')]},'raw':!![]})[_0xdedb('0x1d')](function(_0x1b3549){if(_0x1b3549&&_0x1b3549['autoAssociation']===0x0){return db[_0xdedb('0x37')][_0xdedb('0x5c')]({'name':_0x3cb915['name'],'resourceId':_0x3cb915['id'],'type':_0x1b3549[_0xdedb('0x39')],'sectionId':_0x1b3549['id']},{})[_0xdedb('0x1d')](function(){return _0x287f8a;});}else{return _0x287f8a;}})[_0xdedb('0x27')](function(_0x5e7ffd){logger[_0xdedb('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e7ffd);throw _0x5e7ffd;});}return _0x287f8a;})[_0xdedb('0x1d')](respondWithResult(_0x126dc7,0xc9))[_0xdedb('0x27')](handleError(_0x126dc7,null));};exports['update']=function(_0x3ec865,_0x5014c7){if(_0x3ec865['body']['id']){delete _0x3ec865['body']['id'];}return db['WhatsappAccount'][_0xdedb('0x5b')]({'where':{'id':_0x3ec865[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x3b')],'as':_0xdedb('0x3c')}]})[_0xdedb('0x1d')](handleEntityNotFound(_0x5014c7,null))[_0xdedb('0x1d')](saveUpdates(_0x3ec865[_0xdedb('0x63')],null))[_0xdedb('0x1d')](respondWithResult(_0x5014c7,null))[_0xdedb('0x27')](handleError(_0x5014c7,null));};exports[_0xdedb('0x35')]=function(_0xbdeea1,_0x32d555){return db['WhatsappAccount']['find']({'where':{'id':_0xbdeea1[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x32d555,null))['then'](removeEntity(_0x32d555,null))[_0xdedb('0x27')](handleError(_0x32d555,null));};exports['describe']=function(_0x457d54,_0x36ef3c){return db[_0xdedb('0x3d')]['describe']()[_0xdedb('0x1d')](respondWithResult(_0x36ef3c,null))[_0xdedb('0x27')](handleError(_0x36ef3c,null));};exports[_0xdedb('0x64')]=function(_0x113860,_0xea275e,_0x286dfc){if(_0x113860['body']['id']){delete _0x113860[_0xdedb('0x63')]['id'];}return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x113860[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0xea275e,null))[_0xdedb('0x1d')](function(_0x116b1d){if(_0x116b1d){_0x113860[_0xdedb('0x63')]['WhatsappAccountId']=_0x116b1d['id'];return db[_0xdedb('0x65')][_0xdedb('0x5c')](_0x113860[_0xdedb('0x63')]);}})[_0xdedb('0x1d')](respondWithResult(_0xea275e,null))[_0xdedb('0x27')](handleError(_0xea275e,null));};exports[_0xdedb('0x66')]=function(_0x9bff5,_0x21a845,_0x299157){var _0x1d8f2a={'raw':![],'where':{}};var _0x5c8332={};var _0x4e12c3={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xdedb('0x67')]({'where':{'id':_0x9bff5[_0xdedb('0x59')]['id']}})['then'](handleEntityNotFound(_0x21a845,null))[_0xdedb('0x1d')](function(_0x4dc029){if(_0x4dc029){_0x5c8332['model']=_[_0xdedb('0x45')](db[_0xdedb('0x65')][_0xdedb('0x3e')]);_0x5c8332[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x9bff5[_0xdedb('0x44')]);_0x5c8332[_0xdedb('0x46')]=_['intersection'](_0x5c8332['model'],_0x5c8332[_0xdedb('0x44')]);_0x1d8f2a[_0xdedb('0x48')]=_[_0xdedb('0x47')](_0x5c8332[_0xdedb('0x42')],qs['fields'](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x49')]));_0x1d8f2a[_0xdedb('0x48')]=_0x1d8f2a[_0xdedb('0x48')][_0xdedb('0x5a')]?_0x1d8f2a[_0xdedb('0x48')]:_0x5c8332[_0xdedb('0x42')];if(!_0x9bff5['query'][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x1d8f2a[_0xdedb('0x4b')]=qs['limit'](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x1d8f2a[_0xdedb('0x2b')]=qs[_0xdedb('0x2b')](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x2b')]);}_0x1d8f2a[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x9bff5[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x1d8f2a[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x9bff5[_0xdedb('0x44')],_0x5c8332['filters']));_0x1d8f2a[_0xdedb('0x4e')][_0xdedb('0x69')]=_0x4dc029['id'];if(_0x9bff5[_0xdedb('0x44')][_0xdedb('0x50')]){_0x1d8f2a[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x1d8f2a['where'],{'$or':_[_0xdedb('0x43')](_0x1d8f2a[_0xdedb('0x48')],function(_0x51b99b){var _0x39db94={};_0x39db94[_0x51b99b]={'$like':'%'+_0x9bff5[_0xdedb('0x44')]['filter']+'%'};return _0x39db94;})});}_0x1d8f2a=_[_0xdedb('0x51')]({},_0x1d8f2a,_0x9bff5[_0xdedb('0x53')]);return db[_0xdedb('0x65')][_0xdedb('0x2d')]({'where':_0x1d8f2a[_0xdedb('0x4e')]})[_0xdedb('0x1d')](function(_0x37c0b5){_0x4e12c3[_0xdedb('0x2d')]=_0x37c0b5;if(_0x9bff5['query'][_0xdedb('0x54')]){_0x1d8f2a[_0xdedb('0x55')]=[{'all':!![]}];}return db[_0xdedb('0x65')][_0xdedb('0x56')](_0x1d8f2a);})['then'](function(_0x368c06){_0x4e12c3['rows']=_0x368c06;return _0x4e12c3;});}})[_0xdedb('0x1d')](respondWithFilteredResult(_0x21a845,_0x1d8f2a))[_0xdedb('0x27')](handleError(_0x21a845,null));};exports[_0xdedb('0x6a')]=function(_0xd21a0b,_0x1d7a9b,_0x3f198b){return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0xd21a0b[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x1d7a9b,null))['then'](function(_0x4e885e){if(_0x4e885e){return _0x4e885e['removeDispositions'](_0xd21a0b[_0xdedb('0x44')][_0xdedb('0x6b')]);}})[_0xdedb('0x1d')](respondWithStatusCode(_0x1d7a9b,null))[_0xdedb('0x27')](handleError(_0x1d7a9b,null));};exports[_0xdedb('0x6c')]=function(_0x18c788,_0x3f11af,_0x41d48a){if(_0x18c788[_0xdedb('0x63')]['id']){delete _0x18c788[_0xdedb('0x63')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x18c788[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x3f11af,null))['then'](function(_0x2f8ca9){if(_0x2f8ca9){_0x18c788[_0xdedb('0x63')][_0xdedb('0x69')]=_0x2f8ca9['id'];return db[_0xdedb('0x6d')][_0xdedb('0x5c')](_0x18c788[_0xdedb('0x63')]);}})[_0xdedb('0x1d')](respondWithResult(_0x3f11af,null))[_0xdedb('0x27')](handleError(_0x3f11af,null));};exports[_0xdedb('0x6e')]=function(_0x9e4ce6,_0xe1b6ae,_0x2087e9){var _0x4a7d65={'raw':![],'where':{}};var _0x4b8208={};var _0x3804ab={'count':0x0,'rows':[]};return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0x9e4ce6[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0xe1b6ae,null))[_0xdedb('0x1d')](function(_0x1b39ac){if(_0x1b39ac){_0x4b8208[_0xdedb('0x42')]=_['keys'](db[_0xdedb('0x6d')]['rawAttributes']);_0x4b8208[_0xdedb('0x44')]=_['keys'](_0x9e4ce6[_0xdedb('0x44')]);_0x4b8208[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x4b8208['model'],_0x4b8208['query']);_0x4a7d65[_0xdedb('0x48')]=_['intersection'](_0x4b8208[_0xdedb('0x42')],qs['fields'](_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x49')]));_0x4a7d65[_0xdedb('0x48')]=_0x4a7d65[_0xdedb('0x48')]['length']?_0x4a7d65[_0xdedb('0x48')]:_0x4b8208['model'];if(!_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x4a7d65[_0xdedb('0x4b')]=qs['limit'](_0x9e4ce6[_0xdedb('0x44')]['limit']);_0x4a7d65['offset']=qs[_0xdedb('0x2b')](_0x9e4ce6[_0xdedb('0x44')]['offset']);}_0x4a7d65[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x9e4ce6[_0xdedb('0x44')]['sort']);_0x4a7d65[_0xdedb('0x4e')]=qs['filters'](_['pick'](_0x9e4ce6[_0xdedb('0x44')],_0x4b8208[_0xdedb('0x46')]));_0x4a7d65['where']['WhatsappAccountId']=_0x1b39ac['id'];if(_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x50')]){_0x4a7d65[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x4a7d65[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x4a7d65['attributes'],function(_0x4f07be){var _0x40c3cc={};_0x40c3cc[_0x4f07be]={'$like':'%'+_0x9e4ce6[_0xdedb('0x44')][_0xdedb('0x50')]+'%'};return _0x40c3cc;})});}_0x4a7d65=_[_0xdedb('0x51')]({},_0x4a7d65,_0x9e4ce6[_0xdedb('0x53')]);return db[_0xdedb('0x6d')][_0xdedb('0x2d')]({'where':_0x4a7d65['where']})[_0xdedb('0x1d')](function(_0x1cdbed){_0x3804ab[_0xdedb('0x2d')]=_0x1cdbed;if(_0x9e4ce6[_0xdedb('0x44')]['includeAll']){_0x4a7d65[_0xdedb('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xdedb('0x56')](_0x4a7d65);})[_0xdedb('0x1d')](function(_0x438bd9){_0x3804ab[_0xdedb('0x57')]=_0x438bd9;return _0x3804ab;});}})[_0xdedb('0x1d')](respondWithFilteredResult(_0xe1b6ae,_0x4a7d65))[_0xdedb('0x27')](handleError(_0xe1b6ae,null));};exports[_0xdedb('0x6f')]=function(_0x428e82,_0x91257f,_0x2fa7c2){return db['WhatsappAccount']['find']({'where':{'id':_0x428e82[_0xdedb('0x59')]['id']}})['then'](handleEntityNotFound(_0x91257f,null))[_0xdedb('0x1d')](function(_0x7e7cff){if(_0x7e7cff){return _0x7e7cff[_0xdedb('0x6f')](_0x428e82[_0xdedb('0x44')][_0xdedb('0x6b')]);}})[_0xdedb('0x1d')](respondWithStatusCode(_0x91257f,null))[_0xdedb('0x27')](handleError(_0x91257f,null));};exports[_0xdedb('0x70')]=function(_0x107c10,_0x42c5ad,_0x47b146){return db[_0xdedb('0x3d')]['find']({'where':{'id':_0x107c10[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x42c5ad,null))[_0xdedb('0x1d')](function(_0x598cd8){if(_0x598cd8){return _0x598cd8[_0xdedb('0x70')](_0x107c10[_0xdedb('0x63')]['ids'],_[_0xdedb('0x71')](_0x107c10[_0xdedb('0x63')],[_0xdedb('0x6b'),'id'])||{})[_0xdedb('0x72')](function(_0x5a85fb){for(var _0x57295a=0x0;_0x57295a<_0x107c10['body'][_0xdedb('0x6b')]['length'];_0x57295a+=0x1){socket[_0xdedb('0x73')]('userWhatsappAccount:save',{'UserId':Number(_0x107c10[_0xdedb('0x63')][_0xdedb('0x6b')][_0x57295a]),'WhatsappAccountId':Number(_0x107c10[_0xdedb('0x59')]['id'])});}return _0x5a85fb;});}})[_0xdedb('0x1d')](respondWithResult(_0x42c5ad,null))[_0xdedb('0x27')](handleError(_0x42c5ad,null));};exports[_0xdedb('0x74')]=function(_0x3934c9,_0x40e774,_0x2e9bd0){return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x3934c9[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x40e774,null))[_0xdedb('0x1d')](function(_0x2af459){if(_0x2af459){return _0x2af459['removeAgents'](_0x3934c9[_0xdedb('0x44')]['ids'])[_0xdedb('0x1d')](function(){if(_['isArray'](_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')])){for(var _0x25fb21=0x0;_0x25fb21<_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')][_0xdedb('0x5a')];_0x25fb21+=0x1){socket[_0xdedb('0x73')](_0xdedb('0x75'),{'UserId':Number(_0x3934c9[_0xdedb('0x44')]['ids'][_0x25fb21]),'WhatsappAccountId':Number(_0x3934c9[_0xdedb('0x59')]['id'])});}}else{socket[_0xdedb('0x73')](_0xdedb('0x75'),{'UserId':Number(_0x3934c9[_0xdedb('0x44')][_0xdedb('0x6b')]),'WhatsappAccountId':Number(_0x3934c9[_0xdedb('0x59')]['id'])});}});}})[_0xdedb('0x1d')](respondWithStatusCode(_0x40e774,null))[_0xdedb('0x27')](handleError(_0x40e774,null));};exports[_0xdedb('0x76')]=function(_0x12e7f9,_0x18bd5f,_0x3ab6c9){var _0x5a31b9={};var _0x465e08={};var _0x1c7a27;var _0x27ce84;return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0x12e7f9[_0xdedb('0x59')]['id']}})[_0xdedb('0x1d')](handleEntityNotFound(_0x18bd5f,null))[_0xdedb('0x1d')](function(_0x366a7b){if(_0x366a7b){_0x1c7a27=_0x366a7b;_0x465e08['model']=_[_0xdedb('0x45')](db[_0xdedb('0x77')][_0xdedb('0x3e')]);_0x465e08[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x12e7f9[_0xdedb('0x44')]);_0x465e08[_0xdedb('0x46')]=_[_0xdedb('0x47')](_0x465e08[_0xdedb('0x42')],_0x465e08[_0xdedb('0x44')]);_0x5a31b9[_0xdedb('0x48')]=_['intersection'](_0x465e08[_0xdedb('0x42')],qs['fields'](_0x12e7f9[_0xdedb('0x44')]['fields']));_0x5a31b9['attributes']=_0x5a31b9[_0xdedb('0x48')][_0xdedb('0x5a')]?_0x5a31b9['attributes']:_0x465e08[_0xdedb('0x42')];_0x5a31b9[_0xdedb('0x4c')]=qs[_0xdedb('0x4d')](_0x12e7f9['query']['sort']);_0x5a31b9[_0xdedb('0x4e')]=qs[_0xdedb('0x46')](_['pick'](_0x12e7f9['query'],_0x465e08['filters']));if(_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x50')]){_0x5a31b9[_0xdedb('0x4e')]=_['merge'](_0x5a31b9['where'],{'$or':_[_0xdedb('0x43')](_0x5a31b9[_0xdedb('0x48')],function(_0x53b021){var _0x41867f={};_0x41867f[_0x53b021]={'$like':'%'+_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x50')]+'%'};return _0x41867f;})});}_0x5a31b9=_[_0xdedb('0x51')]({},_0x5a31b9,_0x12e7f9[_0xdedb('0x53')]);return _0x1c7a27[_0xdedb('0x76')](_0x5a31b9);}})[_0xdedb('0x1d')](function(_0x1d9cac){if(_0x1d9cac){_0x27ce84=_0x1d9cac['length'];if(!_0x12e7f9[_0xdedb('0x44')]['hasOwnProperty'](_0xdedb('0x68'))){_0x5a31b9['limit']=qs['limit'](_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x5a31b9[_0xdedb('0x2b')]=qs[_0xdedb('0x2b')](_0x12e7f9[_0xdedb('0x44')][_0xdedb('0x2b')]);}return _0x1c7a27[_0xdedb('0x76')](_0x5a31b9);}})[_0xdedb('0x1d')](function(_0x35f145){if(_0x35f145){return _0x35f145?{'count':_0x27ce84,'rows':_0x35f145}:null;}})[_0xdedb('0x1d')](respondWithResult(_0x18bd5f,null))[_0xdedb('0x27')](handleError(_0x18bd5f,null));};exports[_0xdedb('0x78')]=function(_0x52cbff,_0x3ba712){var _0xb91579=_0x52cbff[_0xdedb('0x59')]['id'];var _0x3d6062=_0x52cbff[_0xdedb('0x63')];var _0x998b0c=0xc8;var _0x32ed33=null;return db[_0xdedb('0x79')][_0xdedb('0x7a')]({'isolationLevel':db[_0xdedb('0x79')][_0xdedb('0x7b')][_0xdedb('0x7c')][_0xdedb('0x7d')]},function(_0x46cfd0){return db[_0xdedb('0x3d')][_0xdedb('0x67')]({'where':{'id':_0xb91579},'transaction':_0x46cfd0})['then'](function(_0x5e8704){if(_0x5e8704){return db[_0xdedb('0x7e')][_0xdedb('0x35')]({'where':{'WhatsappAccountId':_0xb91579},'transaction':_0x46cfd0})[_0xdedb('0x1d')](function(){var _0x42665e=_[_0xdedb('0x43')](_0x3d6062,function(_0x25ec1a){_0x25ec1a['WhatsappAccountId']=_0xb91579;return _0x25ec1a;});return db[_0xdedb('0x7e')]['bulkCreate'](_0x42665e,{'transaction':_0x46cfd0});});}else{_0x998b0c=0x194;_0x32ed33=[];}});})[_0xdedb('0x1d')](function(){if(_0x998b0c!==0x194){return db[_0xdedb('0x7e')][_0xdedb('0x7f')]({'where':{'WhatsappAccountId':_0xb91579},'order':_0xdedb('0x80')})[_0xdedb('0x1d')](function(_0x298b17){_0x32ed33=_0x298b17;});}})['catch'](function(_0x1b0709){_0x998b0c=0x1f4;logger['error'](_0x1b0709[_0xdedb('0x38')]);if(_0x1b0709[_0xdedb('0x39')]){delete _0x1b0709[_0xdedb('0x39')];}_0x32ed33=_0x1b0709;})['finally'](function(){if(_0x32ed33===null){_0x3ba712[_0xdedb('0x28')](_0x998b0c);}else{if(_0x998b0c===0x1f4){_0x3ba712[_0xdedb('0x2a')](_0x998b0c)[_0xdedb('0x3a')](_0x32ed33);}else{_0x3ba712[_0xdedb('0x2a')](_0x998b0c)[_0xdedb('0x30')](_0x32ed33);}}});};exports[_0xdedb('0x81')]=function(_0x215a84,_0x2e6f37,_0x40c939){var _0x2f9f44={};var _0x16c359={};var _0x12d6ce;var _0x2c9675;return db['WhatsappAccount']['findOne']({'where':{'id':_0x215a84['params']['id']}})['then'](handleEntityNotFound(_0x2e6f37,null))[_0xdedb('0x1d')](function(_0xa8d18e){if(_0xa8d18e){_0x12d6ce=_0xa8d18e;_0x16c359[_0xdedb('0x42')]=_[_0xdedb('0x45')](db[_0xdedb('0x7e')]['rawAttributes']);_0x16c359[_0xdedb('0x44')]=_[_0xdedb('0x45')](_0x215a84[_0xdedb('0x44')]);_0x16c359['filters']=_['intersection'](_0x16c359[_0xdedb('0x42')],_0x16c359[_0xdedb('0x44')]);_0x2f9f44['attributes']=_[_0xdedb('0x47')](_0x16c359[_0xdedb('0x42')],qs[_0xdedb('0x49')](_0x215a84[_0xdedb('0x44')]['fields']));_0x2f9f44['attributes']=_0x2f9f44['attributes']['length']?_0x2f9f44['attributes']:_0x16c359[_0xdedb('0x42')];_0x2f9f44['order']=qs['sort'](_0x215a84[_0xdedb('0x44')][_0xdedb('0x4d')]);_0x2f9f44['where']=qs[_0xdedb('0x46')](_[_0xdedb('0x4f')](_0x215a84['query'],_0x16c359[_0xdedb('0x46')]));if(_0x215a84[_0xdedb('0x44')]['filter']){_0x2f9f44[_0xdedb('0x4e')]=_[_0xdedb('0x51')](_0x2f9f44[_0xdedb('0x4e')],{'$or':_[_0xdedb('0x43')](_0x2f9f44['attributes'],function(_0xe61336){var _0x494814={};_0x494814[_0xe61336]={'$like':'%'+_0x215a84['query']['filter']+'%'};return _0x494814;})});}_0x2f9f44=_[_0xdedb('0x51')]({},_0x2f9f44,_0x215a84[_0xdedb('0x53')]);return _0x12d6ce[_0xdedb('0x81')](_0x2f9f44);}})[_0xdedb('0x1d')](function(_0x5ccd62){if(_0x5ccd62){_0x2c9675=_0x5ccd62[_0xdedb('0x5a')];if(!_0x215a84[_0xdedb('0x44')][_0xdedb('0x4a')](_0xdedb('0x68'))){_0x2f9f44['limit']=qs[_0xdedb('0x4b')](_0x215a84[_0xdedb('0x44')][_0xdedb('0x4b')]);_0x2f9f44[_0xdedb('0x2b')]=qs['offset'](_0x215a84[_0xdedb('0x44')][_0xdedb('0x2b')]);}return _0x12d6ce[_0xdedb('0x81')](_0x2f9f44);}})[_0xdedb('0x1d')](function(_0x338885){if(_0x338885){return _0x338885?{'count':_0x2c9675,'rows':_0x338885}:null;}})[_0xdedb('0x1d')](respondWithResult(_0x2e6f37,null))[_0xdedb('0x27')](handleError(_0x2e6f37,null));};exports[_0xdedb('0x82')]=function(_0x3a1c00,_0x40742c,_0xbf75c){var _0x5b322c={'channel':_0xdedb('0x83')};var _0x1daef0=[];var _0x3d01dc=[];var _0x4958f9={};return db['WhatsappAccount']['find']({'where':{'id':_0x3a1c00[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0x7e')],'as':_0xdedb('0x84')}]})['then'](handleEntityNotFound(_0x40742c,null))[_0xdedb('0x1d')](function(_0x30b713){_0x5b322c[_0xdedb('0x85')]=_0x30b713;if(_0x5b322c[_0xdedb('0x85')]&&_0x5b322c['account'][_0xdedb('0x40')]==='sinch'&&_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')]){if(_0x3a1c00[_0xdedb('0x63')]['statuses'][_0xdedb('0x5a')]===0x0)return;if(_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0][_0xdedb('0x87')]!=='read')return;return db[_0xdedb('0x88')]['update']({'read':!![],'readAt':_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0]['timestamp']},{'where':{'messageId':_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x86')][0x0][_0xdedb('0x89')]},'individualHooks':!![]})[_0xdedb('0x1d')](function(_0x1e8471){return _0x40742c[_0xdedb('0x2a')](0xc8)[_0xdedb('0x30')](_0x1e8471);});}_0x5b322c['applications']=_[_0xdedb('0x8a')](_0x30b713[_0xdedb('0x84')],[_0xdedb('0x80')],[_0xdedb('0x8b')]);if(_0x5b322c['account'][_0xdedb('0x84')]){delete _0x5b322c['account'][_0xdedb('0x84')];}return db[_0xdedb('0x8c')][_0xdedb('0x8d')]()[_0xdedb('0x1d')](function(_0x16bc48){if(!_0x16bc48){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))]('no\x20available\x20attributes');}_0x1daef0=_[_0xdedb('0x90')](_[_0xdedb('0x45')](_0x16bc48),[_0xdedb('0x91'),_0xdedb('0x92')]);_0x3d01dc=_['difference'](_[_0xdedb('0x45')](_0x16bc48),['createdAt',_0xdedb('0x92'),_0xdedb('0x93'),_0xdedb('0x94')]);_0x5b322c[_0xdedb('0x63')]={'mapKey':_0xdedb('0x95')};if(_0x5b322c['account']&&_0x5b322c[_0xdedb('0x85')][_0xdedb('0x40')]==='twilio'){_0x5b322c['body']['from']=_0x3a1c00[_0xdedb('0x63')]['From'][_0xdedb('0x96')](_0xdedb('0x97'),'');_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x98')];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x9a')];}if(_0x5b322c[_0xdedb('0x85')]&&_0x5b322c[_0xdedb('0x85')][_0xdedb('0x40')]===_0xdedb('0x9b')){_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')]=_0x3a1c00['body'][_0xdedb('0x9d')][0x0]['from'];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')]=_0x3a1c00[_0xdedb('0x63')][_0xdedb('0x9d')][0x0]['message'][_0xdedb('0x63')];_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')]=_0x3a1c00['body'][_0xdedb('0x9d')][0x0][_0xdedb('0x89')];}if(_0x5b322c[_0xdedb('0x63')]['id']){delete _0x5b322c[_0xdedb('0x63')]['id'];}if(_[_0xdedb('0x9e')](_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')])){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0x9f'));}if(_[_0xdedb('0x9e')](_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')])||_0x5b322c['body'][_0xdedb('0x63')]===''){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0xa0'));}if(_['isNil'](_0x5b322c[_0xdedb('0x63')]['mapKey'])){throw new db[(_0xdedb('0x8e'))]['ValidationError'](_0xdedb('0xa1')+_0x3d01dc);}if(!_[_0xdedb('0xa2')](_0x3d01dc,_0x5b322c[_0xdedb('0x63')]['mapKey'])){throw new db['Sequelize'][(_0xdedb('0x8f'))](_0xdedb('0xa3')+_0x3d01dc);}_0x4958f9[_0x5b322c[_0xdedb('0x63')][_0xdedb('0xa4')]]=_0x5b322c[_0xdedb('0x63')][_0xdedb('0x9c')];return db[_0xdedb('0xa5')]['find']({'where':{'id':_0x5b322c['account']['ListId']},'include':[{'model':db[_0xdedb('0x8c')],'as':_0xdedb('0xa6'),'where':_0x4958f9,'limit':0x1,'order':[[_0xdedb('0x92'),_0xdedb('0xa7')]]}]});})[_0xdedb('0x1d')](handleEntityNotFound(_0x40742c,null))['then'](function(_0x37087f){if(_0x37087f){_0x5b322c[_0xdedb('0xa8')]=_['omit'](_0x37087f,[_0xdedb('0xa6')]);if(_0x37087f[_0xdedb('0xa6')]['length']){return _0x37087f['Contacts'][0x0];}var _0x447ab3=_['defaults'](_0x5b322c[_0xdedb('0x63')],{'firstName':_0x5b322c['body'][_0xdedb('0x9c')],'ListId':_0x37087f['id']});_0x447ab3[_0x5b322c[_0xdedb('0x63')][_0xdedb('0xa4')]]=_0x5b322c['body'][_0xdedb('0x9c')];return db['CmContact'][_0xdedb('0x5c')](_0x447ab3,{'fields':_0x1daef0,'raw':!![]});}})[_0xdedb('0x1d')](handleEntityNotFound(_0x40742c,null))[_0xdedb('0x1d')](function(_0x267f3b){if(_0x267f3b){_0x5b322c['contact']=_0x267f3b;var _0x26428e={'ContactId':_0x267f3b['id'],'phone':_0x5b322c['body'][_0xdedb('0x9c')],'WhatsappAccountId':_0x3a1c00[_0xdedb('0x59')]['id']};var _0x2ba44e={'ContactId':_0x267f3b['id'],'WhatsappAccountId':_0x3a1c00[_0xdedb('0x59')]['id'],'closed':![]};return db[_0xdedb('0xa9')][_0xdedb('0x5b')]({'where':_0x2ba44e})[_0xdedb('0x1d')](function(_0x1a36ae){if(_0x1a36ae){return[_0x1a36ae,![]];}return db[_0xdedb('0xa9')][_0xdedb('0x5c')](_0x26428e)['then'](function(_0x327142){return[_0x327142,!![]];});});}})[_0xdedb('0x72')](function(_0x2445f8,_0x5eb48d){_0x5b322c[_0xdedb('0xaa')]=_0x2445f8[_0xdedb('0x36')]({'plain':!![]});_0x5b322c[_0xdedb('0xaa')]['created']=![];if(_0x5eb48d){if(_0x5b322c[_0xdedb('0x85')][_0xdedb('0xab')]){_0x5b322c[_0xdedb('0xac')][_0xdedb('0xad')]({'id':0x0,'priority':_0x5b322c['applications'][_0xdedb('0x5a')]+0x1,'app':_0xdedb('0xae'),'appdata':_0xdedb('0xaf'),'interval':'*,*,*,*'});}_0x5b322c[_0xdedb('0xaa')]['created']=!![];}return db['WhatsappMessage'][_0xdedb('0x5c')]({'phone':_0x5b322c[_0xdedb('0x63')]['from'],'messageId':_0x5b322c[_0xdedb('0x63')][_0xdedb('0x99')],'body':_0x5b322c[_0xdedb('0x63')][_0xdedb('0x63')],'WhatsappAccountId':_0x3a1c00['params']['id'],'WhatsappInteractionId':_0x2445f8['id'],'direction':'in','ContactId':_0x2445f8[_0xdedb('0xb0')],'AttachmentId':_0x5b322c[_0xdedb('0x63')][_0xdedb('0xb1')]});})[_0xdedb('0x1d')](function(_0x1029e3){_0x5b322c['message']=_0x1029e3;if(_0x5b322c[_0xdedb('0xaa')][_0xdedb('0xb2')]){return db[_0xdedb('0x77')][_0xdedb('0x5b')]({'attributes':['id',_0xdedb('0x39')],'where':{'id':_0x5b322c[_0xdedb('0xaa')]['UserId']}})['then'](function(_0x87f627){if(_0x87f627){_0x5b322c[_0xdedb('0xac')]['unshift']({'id':0x0,'priority':0x0,'app':_0xdedb('0xb3'),'appdata':_0x87f627[_0xdedb('0x39')]+','+(_0x5b322c[_0xdedb('0x85')][_0xdedb('0xb4')]||0xa),'interval':_0xdedb('0xb5')});}return respondWithRpcPromise(_0xdedb('0xb6'),_0xdedb('0xb7'),_0x5b322c);});}return respondWithRpcPromise(_0xdedb('0xb6'),'startRouting',_0x5b322c);})[_0xdedb('0x1d')](function(_0x156cb7){if(_0x156cb7){var _0x517c2f=0xc8;var _0x3497db=_0xdedb('0xb8');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3497db,_0x517c2f,_0xdedb('0xb9'));logger[_0xdedb('0x21')](_0xdedb('0xba'),_0x3497db,_0x517c2f,_0xdedb('0xb9'),JSON[_0xdedb('0x22')](_0x156cb7));if(_0x5b322c['account'][_0xdedb('0x40')]==='twilio'){return _0x40742c['status'](_0x517c2f)['set'](_0xdedb('0xbb'),_0xdedb('0xbc'))['send'](_0xdedb('0xbd'));}else{return _0x40742c[_0xdedb('0x2a')](_0x517c2f)[_0xdedb('0x30')](_0x156cb7);}}});})[_0xdedb('0x27')](handleError(_0x40742c,null));};exports[_0xdedb('0x3a')]=function(_0x12c75b,_0x2347ad,_0x5dd270){var _0x56e0b6,_0x59f9b1,_0x250b7e;if(_[_0xdedb('0x9e')](_0x12c75b['body'][_0xdedb('0x63')])||_0x12c75b[_0xdedb('0x63')][_0xdedb('0x63')]===''){throw new db[(_0xdedb('0x8e'))][(_0xdedb('0x8f'))](_0xdedb('0xa0'));}if(_['isNil'](_0x12c75b[_0xdedb('0x63')]['to'])){throw new db[(_0xdedb('0x8e'))]['ValidationError']('to\x20is\x20mandatory');}_0x56e0b6=_0x12c75b[_0xdedb('0x63')]['to'];return db[_0xdedb('0x3d')][_0xdedb('0x5b')]({'where':{'id':_0x12c75b[_0xdedb('0x59')]['id']},'include':[{'model':db[_0xdedb('0xa5')],'as':_0xdedb('0xbe'),'include':[{'model':db['CmContact'],'as':_0xdedb('0xa6'),'where':{'mobile':_0x56e0b6},'limit':0x1,'order':[[_0xdedb('0x92'),_0xdedb('0xa7')]]}]}]})[_0xdedb('0x1d')](handleEntityNotFound(_0x2347ad,null))['then'](function(_0x556e4f){if(_0x556e4f&&_0x556e4f[_0xdedb('0xbe')]){_0x59f9b1=_0x556e4f[_0xdedb('0x36')]({'plain':!![]});if(_0x59f9b1[_0xdedb('0xbe')]&&_0x59f9b1[_0xdedb('0xbe')][_0xdedb('0xa6')]['length']){return _0x59f9b1[_0xdedb('0xbe')]['Contacts'][0x0];}return db[_0xdedb('0x8c')][_0xdedb('0x5c')](_[_0xdedb('0x18')](_0x12c75b[_0xdedb('0x63')],{'firstName':_0x56e0b6,'mobile':_0x56e0b6,'phone':_0x56e0b6,'ListId':_0x59f9b1[_0xdedb('0x94')]}));}})[_0xdedb('0x1d')](handleEntityNotFound(_0x2347ad,null))[_0xdedb('0x1d')](function(_0x2498dc){if(_0x2498dc){_0x250b7e=_0x2498dc;return db[_0xdedb('0xa9')][_0xdedb('0x5b')]({'where':{'ContactId':_0x250b7e['id'],'closed':![],'WhatsappAccountId':_0x59f9b1['id']}})[_0xdedb('0x1d')](function(_0x150617){if(_0x150617){return[_0x150617,![]];}return db[_0xdedb('0xa9')][_0xdedb('0x5c')]({'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id'],'WhatsappAccountId':_0x59f9b1['id'],'phone':_0x56e0b6,'firstMsgDirection':'out','Messages':[_['merge'](_0x12c75b[_0xdedb('0x63')],{'read':![],'body':_0x12c75b['body']['body'],'phone':_0x56e0b6,'WhatsappAccountId':_0x59f9b1['id'],'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id']})]},{'include':[{'model':db[_0xdedb('0x88')],'as':_0xdedb('0xbf')}]})[_0xdedb('0x1d')](function(_0x4e0acc){return[_0x4e0acc,!![]];});});}})['spread'](function(_0x1522c9,_0x1cb248){if(_0x1cb248){return _0x1522c9;}return db['WhatsappMessage'][_0xdedb('0x5c')](_[_0xdedb('0x51')](_0x12c75b[_0xdedb('0x63')],{'read':![],'body':_0x12c75b[_0xdedb('0x63')][_0xdedb('0x63')],'phone':_0x56e0b6,'WhatsappAccountId':_0x59f9b1['id'],'WhatsappInteractionId':_0x1522c9['id'],'UserId':_0x12c75b[_0xdedb('0x5d')]['id'],'ContactId':_0x250b7e['id']}))[_0xdedb('0x1d')](function(_0xcb3da5){_0x1522c9[_0xdedb('0xc0')]['Messages']=[];_0x1522c9[_0xdedb('0xc0')]['Messages']['push'](_0xcb3da5[_0xdedb('0xc0')]);return _0x1522c9;});})[_0xdedb('0x1d')](respondWithResult(_0x2347ad,null))[_0xdedb('0x27')](handleError(_0x2347ad,null));};
\ No newline at end of file
index 365bb26..4242b0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ac=['WhatsappAccount','setMaxListeners','save','update','remove','emit','hook','exports','../../mysqldb'];(function(_0x1d480a,_0x5277fe){var _0x51f043=function(_0x524f20){while(--_0x524f20){_0x1d480a['push'](_0x1d480a['shift']());}};_0x51f043(++_0x5277fe);}(_0x02ac,0x13a));var _0xc02a=function(_0x2347f7,_0x124bc2){_0x2347f7=_0x2347f7-0x0;var _0x222c75=_0x02ac[_0x2347f7];return _0x222c75;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0xc02a('0x0'))['db'][_0xc02a('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xc02a('0x2')](0x0);var events={'afterCreate':_0xc02a('0x3'),'afterUpdate':_0xc02a('0x4'),'afterDestroy':_0xc02a('0x5')};function emitEvent(_0x5a8350){return function(_0x24c3e0,_0x59a359,_0x4d191e){WhatsappAccountEvents[_0xc02a('0x6')](_0x5a8350+':'+_0x24c3e0['id'],_0x24c3e0);WhatsappAccountEvents[_0xc02a('0x6')](_0x5a8350,_0x24c3e0);_0x4d191e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0xc02a('0x7')](e,emitEvent(event));}}module[_0xc02a('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x0233=['update','emit','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x4f53a6,_0x582ff5){var _0x30e4b7=function(_0x1aaf04){while(--_0x1aaf04){_0x4f53a6['push'](_0x4f53a6['shift']());}};_0x30e4b7(++_0x582ff5);}(_0x0233,0x15a));var _0x3023=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0x0233[_0x44946b];return _0x249bc4;};'use strict';var EventEmitter=require(_0x3023('0x0'));var WhatsappAccount=require(_0x3023('0x1'))['db'][_0x3023('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x3023('0x3')](0x0);var events={'afterCreate':_0x3023('0x4'),'afterUpdate':_0x3023('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2f64ea){return function(_0x3e96ab,_0x149648,_0x12432d){WhatsappAccountEvents[_0x3023('0x6')](_0x2f64ea+':'+_0x3e96ab['id'],_0x3e96ab);WhatsappAccountEvents['emit'](_0x2f64ea,_0x3e96ab);_0x12432d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x3023('0x7')](e,emitEvent(event));}}module[_0x3023('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
index 501e7e5..a11f3d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d8f=['define','WhatsappAccount','whatsapp_accounts','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports'];(function(_0xcd6c00,_0x50446d){var _0x4bd47a=function(_0x5766b8){while(--_0x5766b8){_0xcd6c00['push'](_0xcd6c00['shift']());}};_0x4bd47a(++_0x50446d);}(_0x0d8f,0x19b));var _0xf0d8=function(_0xee4c5f,_0x1bf72d){_0xee4c5f=_0xee4c5f-0x0;var _0x5accbc=_0x0d8f[_0xee4c5f];return _0x5accbc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf0d8('0x0'))(_0xf0d8('0x1'));var moment=require(_0xf0d8('0x2'));var BPromise=require('bluebird');var rp=require(_0xf0d8('0x3'));var fs=require('fs');var path=require(_0xf0d8('0x4'));var rimraf=require(_0xf0d8('0x5'));var config=require(_0xf0d8('0x6'));var attributes=require(_0xf0d8('0x7'));module[_0xf0d8('0x8')]=function(_0x4ce9f4,_0xa1f90d){return _0x4ce9f4[_0xf0d8('0x9')](_0xf0d8('0xa'),attributes,{'tableName':_0xf0d8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1f0=['whatsapp_accounts','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount'];(function(_0x2d84d1,_0x409a6a){var _0x598435=function(_0x27d3ad){while(--_0x27d3ad){_0x2d84d1['push'](_0x2d84d1['shift']());}};_0x598435(++_0x409a6a);}(_0xe1f0,0x76));var _0x0e1f=function(_0x2ccab4,_0x1fb61d){_0x2ccab4=_0x2ccab4-0x0;var _0x380ae1=_0xe1f0[_0x2ccab4];return _0x380ae1;};'use strict';var _=require('lodash');var util=require(_0x0e1f('0x0'));var logger=require(_0x0e1f('0x1'))(_0x0e1f('0x2'));var moment=require(_0x0e1f('0x3'));var BPromise=require('bluebird');var rp=require(_0x0e1f('0x4'));var fs=require('fs');var path=require(_0x0e1f('0x5'));var rimraf=require(_0x0e1f('0x6'));var config=require(_0x0e1f('0x7'));var attributes=require(_0x0e1f('0x8'));module[_0x0e1f('0x9')]=function(_0x8efd8d,_0x212cf7){return _0x8efd8d[_0x0e1f('0xa')](_0x0e1f('0xb'),attributes,{'tableName':_0x0e1f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e5c101d..87fb982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeba=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','WhatsappAccount','find','options','raw','where','include','map','attributes','model','ShowWhatsappAccount','lodash','util','bluebird'];(function(_0x23e378,_0x2e6c7a){var _0x45777f=function(_0x2edb6f){while(--_0x2edb6f){_0x23e378['push'](_0x23e378['shift']());}};_0x45777f(++_0x2e6c7a);}(_0xfeba,0x6f));var _0xafeb=function(_0x52ccd9,_0x1439be){_0x52ccd9=_0x52ccd9-0x0;var _0x5f5519=_0xfeba[_0x52ccd9];return _0x5f5519;};'use strict';var _=require(_0xafeb('0x0'));var util=require(_0xafeb('0x1'));var moment=require('moment');var BPromise=require(_0xafeb('0x2'));var rs=require(_0xafeb('0x3'));var fs=require('fs');var Redis=require(_0xafeb('0x4'));var db=require(_0xafeb('0x5'))['db'];var utils=require(_0xafeb('0x6'));var logger=require(_0xafeb('0x7'))('rpc');var config=require(_0xafeb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xafeb('0x9')][_0xafeb('0xa')]({'port':0x232a});config[_0xafeb('0xb')]=_[_0xafeb('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xafeb('0xd'))(new Redis(config[_0xafeb('0xb')]));require(_0xafeb('0xe'))[_0xafeb('0xf')](socket);function respondWithRpcPromise(_0x473305,_0x359e03,_0x58276b){return new BPromise(function(_0x2217c3,_0x2c4257){return client[_0xafeb('0x10')](_0x473305,_0x58276b)[_0xafeb('0x11')](function(_0x155e2f){logger['info'](_0xafeb('0x12'),_0x359e03,'request\x20sent');logger[_0xafeb('0x13')](_0xafeb('0x14'),_0x359e03,_0xafeb('0x15'),JSON[_0xafeb('0x16')](_0x155e2f));if(_0x155e2f[_0xafeb('0x17')]){if(_0x155e2f[_0xafeb('0x17')]['code']===0x1f4){logger[_0xafeb('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x359e03,_0x155e2f['error']['message']);return _0x2c4257(_0x155e2f[_0xafeb('0x17')][_0xafeb('0x18')]);}logger[_0xafeb('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x359e03,_0x155e2f[_0xafeb('0x17')][_0xafeb('0x18')]);return _0x2217c3(_0x155e2f['error']['message']);}else{logger[_0xafeb('0x19')](_0xafeb('0x12'),_0x359e03,_0xafeb('0x15'));_0x2217c3(_0x155e2f[_0xafeb('0x1a')][_0xafeb('0x18')]);}})[_0xafeb('0x1b')](function(_0x510663){logger[_0xafeb('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x359e03,_0x510663);_0x2c4257(_0x510663);});});}exports['ShowWhatsappAccount']=function(_0x24d0b2){var _0x34acc6=this;return new Promise(function(_0x51d803,_0x3d5041){return db[_0xafeb('0x1c')][_0xafeb('0x1d')]({'raw':_0x24d0b2[_0xafeb('0x1e')]?_0x24d0b2['options'][_0xafeb('0x1f')]===undefined?!![]:![]:!![],'where':_0x24d0b2[_0xafeb('0x1e')]?_0x24d0b2[_0xafeb('0x1e')][_0xafeb('0x20')]||null:null,'attributes':_0x24d0b2['options']?_0x24d0b2[_0xafeb('0x1e')]['attributes']||null:null,'include':_0x24d0b2[_0xafeb('0x1e')]?_0x24d0b2[_0xafeb('0x1e')][_0xafeb('0x21')]?_[_0xafeb('0x22')](_0x24d0b2[_0xafeb('0x1e')][_0xafeb('0x21')],function(_0x1debf5){return{'model':db[_0x1debf5['model']],'as':_0x1debf5['as'],'attributes':_0x1debf5[_0xafeb('0x23')],'include':_0x1debf5['include']?_[_0xafeb('0x22')](_0x1debf5[_0xafeb('0x21')],function(_0x4fa5be){return{'model':db[_0x4fa5be[_0xafeb('0x24')]],'as':_0x4fa5be['as'],'attributes':_0x4fa5be[_0xafeb('0x23')],'include':_0x4fa5be[_0xafeb('0x21')]?_['map'](_0x4fa5be[_0xafeb('0x21')],function(_0x2ac76c){return{'model':db[_0x2ac76c['model']],'as':_0x2ac76c['as'],'attributes':_0x2ac76c[_0xafeb('0x23')]};}):[]};}):[]};}):[]:[]})[_0xafeb('0x11')](function(_0x2bea3c){logger[_0xafeb('0x19')](_0xafeb('0x25'),_0x24d0b2);logger['debug'](_0xafeb('0x25'),_0x24d0b2,JSON['stringify'](_0x2bea3c));_0x51d803(_0x2bea3c);})[_0xafeb('0x1b')](function(_0x2f7787){logger[_0xafeb('0x17')](_0xafeb('0x25'),_0x2f7787[_0xafeb('0x18')],_0x24d0b2);_0x3d5041(_0x34acc6[_0xafeb('0x17')](0x1f4,_0x2f7787[_0xafeb('0x18')]));});});};
\ No newline at end of file
+var _0xdd5d=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./whatsappAccount.socket','request','info','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','code','message','error','WhatsappAccount,\x20%s,\x20%s','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','model','attributes','map','debug','lodash','util','moment','bluebird','randomstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdd5d,0x87));var _0xddd5=function(_0x31a39f,_0x122fd0){_0x31a39f=_0x31a39f-0x0;var _0x252338=_0xdd5d[_0x31a39f];return _0x252338;};'use strict';var _=require(_0xddd5('0x0'));var util=require(_0xddd5('0x1'));var moment=require(_0xddd5('0x2'));var BPromise=require(_0xddd5('0x3'));var rs=require(_0xddd5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xddd5('0x5'))['db'];var utils=require(_0xddd5('0x6'));var logger=require('../../config/logger')(_0xddd5('0x7'));var config=require(_0xddd5('0x8'));var jayson=require(_0xddd5('0x9'));var client=jayson['client'][_0xddd5('0xa')]({'port':0x232a});config[_0xddd5('0xb')]=_[_0xddd5('0xc')](config[_0xddd5('0xb')],{'host':_0xddd5('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xddd5('0xb')]));require(_0xddd5('0xe'))['register'](socket);function respondWithRpcPromise(_0xcb7ca2,_0x1b4cfb,_0x1f0783){return new BPromise(function(_0x138a47,_0x2eb945){return client[_0xddd5('0xf')](_0xcb7ca2,_0x1f0783)['then'](function(_0x394d66){logger[_0xddd5('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x1b4cfb,_0xddd5('0x11'));logger['debug'](_0xddd5('0x12'),_0x1b4cfb,'request\x20sent',JSON[_0xddd5('0x13')](_0x394d66));if(_0x394d66['error']){if(_0x394d66['error'][_0xddd5('0x14')]===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x1b4cfb,_0x394d66['error'][_0xddd5('0x15')]);return _0x2eb945(_0x394d66[_0xddd5('0x16')][_0xddd5('0x15')]);}logger['error'](_0xddd5('0x17'),_0x1b4cfb,_0x394d66[_0xddd5('0x16')]['message']);return _0x138a47(_0x394d66[_0xddd5('0x16')]['message']);}else{logger['info'](_0xddd5('0x17'),_0x1b4cfb,_0xddd5('0x11'));_0x138a47(_0x394d66['result'][_0xddd5('0x15')]);}})[_0xddd5('0x18')](function(_0x40466d){logger[_0xddd5('0x16')](_0xddd5('0x17'),_0x1b4cfb,_0x40466d);_0x2eb945(_0x40466d);});});}exports[_0xddd5('0x19')]=function(_0x423ae6){var _0x433f7c=this;return new Promise(function(_0x33f5a3,_0x4c4192){return db[_0xddd5('0x1a')][_0xddd5('0x1b')]({'raw':_0x423ae6['options']?_0x423ae6[_0xddd5('0x1c')][_0xddd5('0x1d')]===undefined?!![]:![]:!![],'where':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')][_0xddd5('0x1e')]||null:null,'attributes':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')]['attributes']||null:null,'include':_0x423ae6[_0xddd5('0x1c')]?_0x423ae6[_0xddd5('0x1c')]['include']?_['map'](_0x423ae6[_0xddd5('0x1c')]['include'],function(_0xbda4e9){return{'model':db[_0xbda4e9[_0xddd5('0x1f')]],'as':_0xbda4e9['as'],'attributes':_0xbda4e9['attributes'],'include':_0xbda4e9['include']?_['map'](_0xbda4e9['include'],function(_0x313a0c){return{'model':db[_0x313a0c[_0xddd5('0x1f')]],'as':_0x313a0c['as'],'attributes':_0x313a0c[_0xddd5('0x20')],'include':_0x313a0c['include']?_[_0xddd5('0x21')](_0x313a0c['include'],function(_0x3d0400){return{'model':db[_0x3d0400[_0xddd5('0x1f')]],'as':_0x3d0400['as'],'attributes':_0x3d0400[_0xddd5('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c7189){logger[_0xddd5('0x10')]('ShowWhatsappAccount',_0x423ae6);logger[_0xddd5('0x22')]('ShowWhatsappAccount',_0x423ae6,JSON[_0xddd5('0x13')](_0x5c7189));_0x33f5a3(_0x5c7189);})[_0xddd5('0x18')](function(_0x213599){logger[_0xddd5('0x16')](_0xddd5('0x19'),_0x213599[_0xddd5('0x15')],_0x423ae6);_0x4c4192(_0x433f7c['error'](0x1f4,_0x213599[_0xddd5('0x15')]));});});};
\ No newline at end of file
index 05a761c..005a5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd423=['whatsappAccount:','./whatsappAccount.events','save','remove','removeListener','length'];(function(_0x29dca5,_0x56f215){var _0x5396d3=function(_0x353328){while(--_0x353328){_0x29dca5['push'](_0x29dca5['shift']());}};_0x5396d3(++_0x56f215);}(_0xd423,0x17b));var _0x3d42=function(_0x28e3b0,_0x170714){_0x28e3b0=_0x28e3b0-0x0;var _0x3b290f=_0xd423[_0x28e3b0];return _0x3b290f;};'use strict';var WhatsappAccountEvents=require(_0x3d42('0x0'));var events=[_0x3d42('0x1'),_0x3d42('0x2'),'update'];function createListener(_0x520c1b,_0x896db3){return function(_0x18ccab){_0x896db3['emit'](_0x520c1b,_0x18ccab);};}function removeListener(_0x34681f,_0xba2249){return function(){WhatsappAccountEvents[_0x3d42('0x3')](_0x34681f,_0xba2249);};}exports['register']=function(_0x17776a){for(var _0x349a31=0x0,_0x45ad92=events[_0x3d42('0x4')];_0x349a31<_0x45ad92;_0x349a31++){var _0x203600=events[_0x349a31];var _0x463a54=createListener(_0x3d42('0x5')+_0x203600,_0x17776a);WhatsappAccountEvents['on'](_0x203600,_0x463a54);}};
\ No newline at end of file
+var _0x0001=['./whatsappAccount.events','save','remove','emit','removeListener','length','whatsappAccount:'];(function(_0x189b3b,_0x484de8){var _0x7c4721=function(_0x1ca32b){while(--_0x1ca32b){_0x189b3b['push'](_0x189b3b['shift']());}};_0x7c4721(++_0x484de8);}(_0x0001,0x1c7));var _0x1000=function(_0x44bebc,_0x4ad68b){_0x44bebc=_0x44bebc-0x0;var _0x9cc1c6=_0x0001[_0x44bebc];return _0x9cc1c6;};'use strict';var WhatsappAccountEvents=require(_0x1000('0x0'));var events=[_0x1000('0x1'),_0x1000('0x2'),'update'];function createListener(_0x296d68,_0xf4a36){return function(_0x129436){_0xf4a36[_0x1000('0x3')](_0x296d68,_0x129436);};}function removeListener(_0xfd200,_0x1e18e3){return function(){WhatsappAccountEvents[_0x1000('0x4')](_0xfd200,_0x1e18e3);};}exports['register']=function(_0x247019){for(var _0x307db5=0x0,_0x160609=events[_0x1000('0x5')];_0x307db5<_0x160609;_0x307db5++){var _0x334d8d=events[_0x307db5];var _0x98cd8e=createListener(_0x1000('0x6')+_0x334d8d,_0x247019);WhatsappAccountEvents['on'](_0x334d8d,_0x98cd8e);}};
\ No newline at end of file
index 25ec5e1..4051c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93a=['./whatsappApplication.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x542560,_0xb7c9ec){var _0xf6a904=function(_0x565343){while(--_0x565343){_0x542560['push'](_0x542560['shift']());}};_0xf6a904(++_0xb7c9ec);}(_0xe93a,0xc0));var _0xae93=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xe93a[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0xae93('0x0'));var util=require(_0xae93('0x1'));var path=require(_0xae93('0x2'));var timeout=require(_0xae93('0x3'));var express=require(_0xae93('0x4'));var router=express['Router']();var fs_extra=require(_0xae93('0x5'));var auth=require(_0xae93('0x6'));var interaction=require(_0xae93('0x7'));var config=require('../../config/environment');var controller=require(_0xae93('0x8'));router[_0xae93('0x9')]('/',auth[_0xae93('0xa')](),controller[_0xae93('0xb')]);router[_0xae93('0x9')]('/:id',auth[_0xae93('0xa')](),controller[_0xae93('0xc')]);router[_0xae93('0xd')]('/',auth[_0xae93('0xa')](),controller[_0xae93('0xe')]);router[_0xae93('0xf')](_0xae93('0x10'),auth[_0xae93('0xa')](),controller[_0xae93('0x11')]);router[_0xae93('0x12')]('/:id',auth[_0xae93('0xa')](),controller[_0xae93('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x12e6=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','post','/:id','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x12dcc3,_0x1e9203){var _0x13ec97=function(_0x6b47c4){while(--_0x6b47c4){_0x12dcc3['push'](_0x12dcc3['shift']());}};_0x13ec97(++_0x1e9203);}(_0x12e6,0x16b));var _0x612e=function(_0x590ce1,_0xf5c48e){_0x590ce1=_0x590ce1-0x0;var _0x40f868=_0x12e6[_0x590ce1];return _0x40f868;};'use strict';var multer=require(_0x612e('0x0'));var util=require(_0x612e('0x1'));var path=require(_0x612e('0x2'));var timeout=require(_0x612e('0x3'));var express=require(_0x612e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x612e('0x5'));var interaction=require(_0x612e('0x6'));var config=require(_0x612e('0x7'));var controller=require('./whatsappApplication.controller');router['get']('/',auth[_0x612e('0x8')](),controller['index']);router[_0x612e('0x9')]('/:id',auth[_0x612e('0x8')](),controller[_0x612e('0xa')]);router[_0x612e('0xb')]('/',auth[_0x612e('0x8')](),controller['create']);router['put'](_0x612e('0xc'),auth[_0x612e('0x8')](),controller[_0x612e('0xd')]);router[_0x612e('0xe')](_0x612e('0xc'),auth[_0x612e('0x8')](),controller[_0x612e('0xf')]);module['exports']=router;
\ No newline at end of file
index 1d767f0..b73fb7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0080=['exports','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x3487df,_0x56d6df){var _0x16d104=function(_0x563f5a){while(--_0x563f5a){_0x3487df['push'](_0x3487df['shift']());}};_0x16d104(++_0x56d6df);}(_0x0080,0x1c1));var _0x0008=function(_0x5ebaf0,_0x4c7823){_0x5ebaf0=_0x5ebaf0-0x0;var _0xf4c876=_0x0080[_0x5ebaf0];return _0xf4c876;};'use strict';var Sequelize=require(_0x0008('0x0'));module[_0x0008('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0008('0x2')],'allowNull':![],'defaultValue':_0x0008('0x3')},'appdata':{'type':Sequelize[_0x0008('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0008('0x2')],'defaultValue':_0x0008('0x5')}};
\ No newline at end of file
+var _0xe23a=['STRING','noop','sequelize','exports','INTEGER'];(function(_0x17089b,_0x324c5e){var _0x209ed1=function(_0xbe9656){while(--_0xbe9656){_0x17089b['push'](_0x17089b['shift']());}};_0x209ed1(++_0x324c5e);}(_0xe23a,0x165));var _0xae23=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0xe23a[_0x55ff3e];return _0x2709eb;};'use strict';var Sequelize=require(_0xae23('0x0'));module[_0xae23('0x1')]={'priority':{'type':Sequelize[_0xae23('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xae23('0x3')],'allowNull':![],'defaultValue':_0xae23('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xae23('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index d33dd00..58eb7f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc9=['status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','WhatsappApplication','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','options','includeAll','findAll','show','params','rawAttributes','length','merge','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x2fc9,0xc2));var _0x92fc=function(_0x4d7a70,_0x2d3bfa){_0x4d7a70=_0x4d7a70-0x0;var _0x3aafbb=_0x2fc9[_0x4d7a70];return _0x3aafbb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x92fc('0x0'));var zipdir=require(_0x92fc('0x1'));var jsonpatch=require(_0x92fc('0x2'));var rp=require(_0x92fc('0x3'));var moment=require(_0x92fc('0x4'));var BPromise=require(_0x92fc('0x5'));var Mustache=require(_0x92fc('0x6'));var util=require(_0x92fc('0x7'));var path=require(_0x92fc('0x8'));var sox=require(_0x92fc('0x9'));var csv=require(_0x92fc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x92fc('0xb'));var crypto=require(_0x92fc('0xc'));var jsforce=require(_0x92fc('0xd'));var deskjs=require(_0x92fc('0xe'));var toCsv=require(_0x92fc('0xa'));var querystring=require(_0x92fc('0xf'));var Papa=require(_0x92fc('0x10'));var Redis=require('ioredis');var authService=require(_0x92fc('0x11'));var qs=require(_0x92fc('0x12'));var as=require(_0x92fc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x92fc('0x14'))(_0x92fc('0x15'));var utils=require(_0x92fc('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x92fc('0x17'))['db'];function respondWithStatusCode(_0x2aff0d,_0x5d5d23){_0x5d5d23=_0x5d5d23||0xcc;return function(_0x403b10){if(_0x403b10){return _0x2aff0d[_0x92fc('0x18')](_0x5d5d23);}return _0x2aff0d[_0x92fc('0x19')](_0x5d5d23)[_0x92fc('0x1a')]();};}function respondWithResult(_0xf88abf,_0x5a2ecc){_0x5a2ecc=_0x5a2ecc||0xc8;return function(_0x4007c8){if(_0x4007c8){return _0xf88abf[_0x92fc('0x19')](_0x5a2ecc)[_0x92fc('0x1b')](_0x4007c8);}};}function respondWithFilteredResult(_0x23a9ad,_0x5b3fba){return function(_0x4c45f3){if(_0x4c45f3){var _0x111f42=typeof _0x5b3fba[_0x92fc('0x1c')]==='undefined'&&typeof _0x5b3fba[_0x92fc('0x1d')]===_0x92fc('0x1e');var _0x90f874=_0x4c45f3['count'];var _0x2b0229=_0x111f42?0x0:_0x5b3fba[_0x92fc('0x1c')];var _0x3a1071=_0x111f42?_0x4c45f3[_0x92fc('0x1f')]:_0x5b3fba[_0x92fc('0x1c')]+_0x5b3fba[_0x92fc('0x1d')];var _0x207bde;if(_0x3a1071>=_0x90f874){_0x3a1071=_0x90f874;_0x207bde=0xc8;}else{_0x207bde=0xce;}_0x23a9ad[_0x92fc('0x19')](_0x207bde);return _0x23a9ad['set'](_0x92fc('0x20'),_0x2b0229+'-'+_0x3a1071+'/'+_0x90f874)['json'](_0x4c45f3);}return null;};}function patchUpdates(_0x1e3bb1){return function(_0x2cc51d){try{jsonpatch[_0x92fc('0x21')](_0x2cc51d,_0x1e3bb1,!![]);}catch(_0xb7751c){return BPromise[_0x92fc('0x22')](_0xb7751c);}return _0x2cc51d[_0x92fc('0x23')]();};}function saveUpdates(_0x2848f0,_0x5d5c29){return function(_0x22763f){if(_0x22763f){return _0x22763f[_0x92fc('0x24')](_0x2848f0)[_0x92fc('0x25')](function(_0x4c89eb){return _0x4c89eb;});}return null;};}function removeEntity(_0x29e986,_0x442576){return function(_0x3d06d5){if(_0x3d06d5){return _0x3d06d5['destroy']()[_0x92fc('0x25')](function(){_0x29e986[_0x92fc('0x19')](0xcc)[_0x92fc('0x1a')]();});}};}function handleEntityNotFound(_0x4052d5,_0x131546){return function(_0x366bd4){if(!_0x366bd4){_0x4052d5[_0x92fc('0x18')](0x194);}return _0x366bd4;};}function handleError(_0x27346a,_0x186d35){_0x186d35=_0x186d35||0x1f4;return function(_0x19ff2b){logger[_0x92fc('0x26')](_0x19ff2b[_0x92fc('0x27')]);if(_0x19ff2b[_0x92fc('0x28')]){delete _0x19ff2b['name'];}_0x27346a[_0x92fc('0x19')](_0x186d35)[_0x92fc('0x29')](_0x19ff2b);};}exports[_0x92fc('0x2a')]=function(_0x391c71,_0x7cb643){var _0x32a54b={},_0x129bcf={},_0x4ef34d={'count':0x0,'rows':[]};var _0x72031e=_[_0x92fc('0x2b')](db[_0x92fc('0x2c')]['rawAttributes'],function(_0x620ff){return{'name':_0x620ff[_0x92fc('0x2d')],'type':_0x620ff[_0x92fc('0x2e')][_0x92fc('0x2f')]};});_0x129bcf[_0x92fc('0x30')]=_['map'](_0x72031e,_0x92fc('0x28'));_0x129bcf[_0x92fc('0x31')]=_[_0x92fc('0x32')](_0x391c71['query']);_0x129bcf[_0x92fc('0x33')]=_[_0x92fc('0x34')](_0x129bcf[_0x92fc('0x30')],_0x129bcf[_0x92fc('0x31')]);_0x32a54b[_0x92fc('0x35')]=_['intersection'](_0x129bcf[_0x92fc('0x30')],qs[_0x92fc('0x36')](_0x391c71[_0x92fc('0x31')][_0x92fc('0x36')]));_0x32a54b['attributes']=_0x32a54b[_0x92fc('0x35')]['length']?_0x32a54b['attributes']:_0x129bcf[_0x92fc('0x30')];if(!_0x391c71[_0x92fc('0x31')][_0x92fc('0x37')](_0x92fc('0x38'))){_0x32a54b[_0x92fc('0x1d')]=qs['limit'](_0x391c71[_0x92fc('0x31')][_0x92fc('0x1d')]);_0x32a54b[_0x92fc('0x1c')]=qs[_0x92fc('0x1c')](_0x391c71['query'][_0x92fc('0x1c')]);}_0x32a54b[_0x92fc('0x39')]=qs[_0x92fc('0x3a')](_0x391c71[_0x92fc('0x31')][_0x92fc('0x3a')]);_0x32a54b[_0x92fc('0x3b')]=qs[_0x92fc('0x33')](_['pick'](_0x391c71['query'],_0x129bcf['filters']),_0x72031e);if(_0x391c71[_0x92fc('0x31')][_0x92fc('0x3c')]){_0x32a54b[_0x92fc('0x3b')]=_['merge'](_0x32a54b[_0x92fc('0x3b')],{'$or':_[_0x92fc('0x2b')](_0x72031e,function(_0x20d581){if(_0x20d581[_0x92fc('0x2e')]!=='VIRTUAL'){var _0x459eba={};_0x459eba[_0x20d581[_0x92fc('0x28')]]={'$like':'%'+_0x391c71['query']['filter']+'%'};return _0x459eba;}})});}_0x32a54b=_['merge']({},_0x32a54b,_0x391c71[_0x92fc('0x3d')]);var _0x2e0e82={'where':_0x32a54b[_0x92fc('0x3b')]};return db['WhatsappApplication'][_0x92fc('0x1f')](_0x2e0e82)['then'](function(_0x2636f5){_0x4ef34d[_0x92fc('0x1f')]=_0x2636f5;if(_0x391c71[_0x92fc('0x31')][_0x92fc('0x3e')]){_0x32a54b['include']=[{'all':!![]}];}return db[_0x92fc('0x2c')][_0x92fc('0x3f')](_0x32a54b);})[_0x92fc('0x25')](function(_0x34df09){_0x4ef34d['rows']=_0x34df09;return _0x4ef34d;})[_0x92fc('0x25')](respondWithFilteredResult(_0x7cb643,_0x32a54b))['catch'](handleError(_0x7cb643,null));};exports[_0x92fc('0x40')]=function(_0x197e57,_0x51557c){var _0x21c9a0={'raw':!![],'where':{'id':_0x197e57[_0x92fc('0x41')]['id']}},_0x2d737d={};_0x2d737d[_0x92fc('0x30')]=_[_0x92fc('0x32')](db[_0x92fc('0x2c')][_0x92fc('0x42')]);_0x2d737d[_0x92fc('0x31')]=_['keys'](_0x197e57[_0x92fc('0x31')]);_0x2d737d[_0x92fc('0x33')]=_['intersection'](_0x2d737d[_0x92fc('0x30')],_0x2d737d[_0x92fc('0x31')]);_0x21c9a0[_0x92fc('0x35')]=_[_0x92fc('0x34')](_0x2d737d[_0x92fc('0x30')],qs[_0x92fc('0x36')](_0x197e57['query']['fields']));_0x21c9a0[_0x92fc('0x35')]=_0x21c9a0[_0x92fc('0x35')][_0x92fc('0x43')]?_0x21c9a0[_0x92fc('0x35')]:_0x2d737d[_0x92fc('0x30')];if(_0x197e57[_0x92fc('0x31')][_0x92fc('0x3e')]){_0x21c9a0['include']=[{'all':!![]}];}_0x21c9a0=_[_0x92fc('0x44')]({},_0x21c9a0,_0x197e57[_0x92fc('0x3d')]);return db[_0x92fc('0x2c')][_0x92fc('0x45')](_0x21c9a0)['then'](handleEntityNotFound(_0x51557c,null))[_0x92fc('0x25')](respondWithResult(_0x51557c,null))[_0x92fc('0x46')](handleError(_0x51557c,null));};exports[_0x92fc('0x47')]=function(_0x29e11c,_0x501543){return db['WhatsappApplication'][_0x92fc('0x47')](_0x29e11c['body'],{})[_0x92fc('0x25')](respondWithResult(_0x501543,0xc9))[_0x92fc('0x46')](handleError(_0x501543,null));};exports[_0x92fc('0x24')]=function(_0x1d60ef,_0xd6b09d){if(_0x1d60ef[_0x92fc('0x48')]['id']){delete _0x1d60ef[_0x92fc('0x48')]['id'];}return db['WhatsappApplication'][_0x92fc('0x45')]({'where':{'id':_0x1d60ef[_0x92fc('0x41')]['id']}})['then'](handleEntityNotFound(_0xd6b09d,null))[_0x92fc('0x25')](saveUpdates(_0x1d60ef['body'],null))[_0x92fc('0x25')](respondWithResult(_0xd6b09d,null))[_0x92fc('0x46')](handleError(_0xd6b09d,null));};exports['destroy']=function(_0x59b25b,_0x2cbfc4){return db[_0x92fc('0x2c')][_0x92fc('0x45')]({'where':{'id':_0x59b25b[_0x92fc('0x41')]['id']}})['then'](handleEntityNotFound(_0x2cbfc4,null))[_0x92fc('0x25')](removeEntity(_0x2cbfc4,null))[_0x92fc('0x46')](handleError(_0x2cbfc4,null));};
\ No newline at end of file
+var _0x585e=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','update','then','destroy','error','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','rows','catch','show','params','include','find','create','body'];(function(_0x3f084c,_0x2e4c3f){var _0x2d6b89=function(_0x480b30){while(--_0x480b30){_0x3f084c['push'](_0x3f084c['shift']());}};_0x2d6b89(++_0x2e4c3f);}(_0x585e,0x1c2));var _0xe585=function(_0x3f1967,_0x457f40){_0x3f1967=_0x3f1967-0x0;var _0x208207=_0x585e[_0x3f1967];return _0x208207;};'use strict';var emlformat=require(_0xe585('0x0'));var rimraf=require(_0xe585('0x1'));var zipdir=require(_0xe585('0x2'));var jsonpatch=require(_0xe585('0x3'));var rp=require(_0xe585('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe585('0x5'));var util=require(_0xe585('0x6'));var path=require('path');var sox=require(_0xe585('0x7'));var csv=require(_0xe585('0x8'));var ejs=require(_0xe585('0x9'));var fs=require('fs');var fs_extra=require(_0xe585('0xa'));var _=require(_0xe585('0xb'));var squel=require(_0xe585('0xc'));var crypto=require(_0xe585('0xd'));var jsforce=require(_0xe585('0xe'));var deskjs=require(_0xe585('0xf'));var toCsv=require(_0xe585('0x8'));var querystring=require(_0xe585('0x10'));var Papa=require(_0xe585('0x11'));var Redis=require(_0xe585('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xe585('0x13'));var as=require(_0xe585('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe585('0x15'))('api');var utils=require(_0xe585('0x16'));var config=require(_0xe585('0x17'));var licenseUtil=require(_0xe585('0x18'));var db=require(_0xe585('0x19'))['db'];function respondWithStatusCode(_0x5dda28,_0x1c997b){_0x1c997b=_0x1c997b||0xcc;return function(_0x28659a){if(_0x28659a){return _0x5dda28[_0xe585('0x1a')](_0x1c997b);}return _0x5dda28['status'](_0x1c997b)[_0xe585('0x1b')]();};}function respondWithResult(_0x1fd1e6,_0x293344){_0x293344=_0x293344||0xc8;return function(_0x419c6b){if(_0x419c6b){return _0x1fd1e6[_0xe585('0x1c')](_0x293344)['json'](_0x419c6b);}};}function respondWithFilteredResult(_0x282fec,_0x55f637){return function(_0x4c66e0){if(_0x4c66e0){var _0x2c9830=typeof _0x55f637[_0xe585('0x1d')]==='undefined'&&typeof _0x55f637[_0xe585('0x1e')]===_0xe585('0x1f');var _0x56c57f=_0x4c66e0[_0xe585('0x20')];var _0x119a94=_0x2c9830?0x0:_0x55f637[_0xe585('0x1d')];var _0x3c64b8=_0x2c9830?_0x4c66e0[_0xe585('0x20')]:_0x55f637[_0xe585('0x1d')]+_0x55f637['limit'];var _0x453875;if(_0x3c64b8>=_0x56c57f){_0x3c64b8=_0x56c57f;_0x453875=0xc8;}else{_0x453875=0xce;}_0x282fec[_0xe585('0x1c')](_0x453875);return _0x282fec['set'](_0xe585('0x21'),_0x119a94+'-'+_0x3c64b8+'/'+_0x56c57f)[_0xe585('0x22')](_0x4c66e0);}return null;};}function patchUpdates(_0x1994b9){return function(_0x48ce0a){try{jsonpatch[_0xe585('0x23')](_0x48ce0a,_0x1994b9,!![]);}catch(_0x495990){return BPromise['reject'](_0x495990);}return _0x48ce0a['save']();};}function saveUpdates(_0x469e2c,_0x50f306){return function(_0x455af1){if(_0x455af1){return _0x455af1[_0xe585('0x24')](_0x469e2c)[_0xe585('0x25')](function(_0x16aa43){return _0x16aa43;});}return null;};}function removeEntity(_0x2e54f8,_0x813051){return function(_0x32d91a){if(_0x32d91a){return _0x32d91a[_0xe585('0x26')]()[_0xe585('0x25')](function(){_0x2e54f8[_0xe585('0x1c')](0xcc)[_0xe585('0x1b')]();});}};}function handleEntityNotFound(_0x30dd09,_0x404b6c){return function(_0x556fd5){if(!_0x556fd5){_0x30dd09[_0xe585('0x1a')](0x194);}return _0x556fd5;};}function handleError(_0x228a70,_0x1fb096){_0x1fb096=_0x1fb096||0x1f4;return function(_0x3556c3){logger[_0xe585('0x27')](_0x3556c3['stack']);if(_0x3556c3[_0xe585('0x28')]){delete _0x3556c3[_0xe585('0x28')];}_0x228a70['status'](_0x1fb096)[_0xe585('0x29')](_0x3556c3);};}exports[_0xe585('0x2a')]=function(_0x30862c,_0x49241a){var _0x2fe41a={},_0x194cab={},_0x2a0456={'count':0x0,'rows':[]};var _0x2149d6=_[_0xe585('0x2b')](db[_0xe585('0x2c')][_0xe585('0x2d')],function(_0x4dbb7e){return{'name':_0x4dbb7e[_0xe585('0x2e')],'type':_0x4dbb7e[_0xe585('0x2f')][_0xe585('0x30')]};});_0x194cab[_0xe585('0x31')]=_['map'](_0x2149d6,_0xe585('0x28'));_0x194cab[_0xe585('0x32')]=_[_0xe585('0x33')](_0x30862c[_0xe585('0x32')]);_0x194cab[_0xe585('0x34')]=_[_0xe585('0x35')](_0x194cab['model'],_0x194cab['query']);_0x2fe41a[_0xe585('0x36')]=_['intersection'](_0x194cab[_0xe585('0x31')],qs[_0xe585('0x37')](_0x30862c['query'][_0xe585('0x37')]));_0x2fe41a[_0xe585('0x36')]=_0x2fe41a['attributes'][_0xe585('0x38')]?_0x2fe41a[_0xe585('0x36')]:_0x194cab[_0xe585('0x31')];if(!_0x30862c[_0xe585('0x32')][_0xe585('0x39')](_0xe585('0x3a'))){_0x2fe41a[_0xe585('0x1e')]=qs['limit'](_0x30862c[_0xe585('0x32')][_0xe585('0x1e')]);_0x2fe41a[_0xe585('0x1d')]=qs[_0xe585('0x1d')](_0x30862c[_0xe585('0x32')][_0xe585('0x1d')]);}_0x2fe41a[_0xe585('0x3b')]=qs[_0xe585('0x3c')](_0x30862c[_0xe585('0x32')][_0xe585('0x3c')]);_0x2fe41a['where']=qs[_0xe585('0x34')](_[_0xe585('0x3d')](_0x30862c[_0xe585('0x32')],_0x194cab[_0xe585('0x34')]),_0x2149d6);if(_0x30862c[_0xe585('0x32')][_0xe585('0x3e')]){_0x2fe41a[_0xe585('0x3f')]=_[_0xe585('0x40')](_0x2fe41a[_0xe585('0x3f')],{'$or':_[_0xe585('0x2b')](_0x2149d6,function(_0x139da8){if(_0x139da8['type']!=='VIRTUAL'){var _0x5aaf5b={};_0x5aaf5b[_0x139da8[_0xe585('0x28')]]={'$like':'%'+_0x30862c['query']['filter']+'%'};return _0x5aaf5b;}})});}_0x2fe41a=_['merge']({},_0x2fe41a,_0x30862c[_0xe585('0x41')]);var _0x49c6a9={'where':_0x2fe41a[_0xe585('0x3f')]};return db[_0xe585('0x2c')]['count'](_0x49c6a9)[_0xe585('0x25')](function(_0xc50470){_0x2a0456['count']=_0xc50470;if(_0x30862c[_0xe585('0x32')][_0xe585('0x42')]){_0x2fe41a['include']=[{'all':!![]}];}return db[_0xe585('0x2c')]['findAll'](_0x2fe41a);})[_0xe585('0x25')](function(_0x1008b6){_0x2a0456[_0xe585('0x43')]=_0x1008b6;return _0x2a0456;})[_0xe585('0x25')](respondWithFilteredResult(_0x49241a,_0x2fe41a))[_0xe585('0x44')](handleError(_0x49241a,null));};exports[_0xe585('0x45')]=function(_0x18607f,_0x2918e8){var _0xc3fe16={'raw':!![],'where':{'id':_0x18607f[_0xe585('0x46')]['id']}},_0x1bcc46={};_0x1bcc46[_0xe585('0x31')]=_[_0xe585('0x33')](db[_0xe585('0x2c')]['rawAttributes']);_0x1bcc46[_0xe585('0x32')]=_[_0xe585('0x33')](_0x18607f[_0xe585('0x32')]);_0x1bcc46[_0xe585('0x34')]=_[_0xe585('0x35')](_0x1bcc46[_0xe585('0x31')],_0x1bcc46[_0xe585('0x32')]);_0xc3fe16[_0xe585('0x36')]=_['intersection'](_0x1bcc46[_0xe585('0x31')],qs[_0xe585('0x37')](_0x18607f[_0xe585('0x32')][_0xe585('0x37')]));_0xc3fe16[_0xe585('0x36')]=_0xc3fe16[_0xe585('0x36')]['length']?_0xc3fe16['attributes']:_0x1bcc46[_0xe585('0x31')];if(_0x18607f[_0xe585('0x32')]['includeAll']){_0xc3fe16[_0xe585('0x47')]=[{'all':!![]}];}_0xc3fe16=_[_0xe585('0x40')]({},_0xc3fe16,_0x18607f['options']);return db[_0xe585('0x2c')][_0xe585('0x48')](_0xc3fe16)[_0xe585('0x25')](handleEntityNotFound(_0x2918e8,null))[_0xe585('0x25')](respondWithResult(_0x2918e8,null))[_0xe585('0x44')](handleError(_0x2918e8,null));};exports[_0xe585('0x49')]=function(_0x335cf5,_0x148a61){return db[_0xe585('0x2c')][_0xe585('0x49')](_0x335cf5[_0xe585('0x4a')],{})[_0xe585('0x25')](respondWithResult(_0x148a61,0xc9))[_0xe585('0x44')](handleError(_0x148a61,null));};exports[_0xe585('0x24')]=function(_0x2f5cfb,_0x29f5f1){if(_0x2f5cfb['body']['id']){delete _0x2f5cfb[_0xe585('0x4a')]['id'];}return db['WhatsappApplication']['find']({'where':{'id':_0x2f5cfb[_0xe585('0x46')]['id']}})[_0xe585('0x25')](handleEntityNotFound(_0x29f5f1,null))[_0xe585('0x25')](saveUpdates(_0x2f5cfb[_0xe585('0x4a')],null))[_0xe585('0x25')](respondWithResult(_0x29f5f1,null))[_0xe585('0x44')](handleError(_0x29f5f1,null));};exports[_0xe585('0x26')]=function(_0x503fe8,_0x42e12c){return db[_0xe585('0x2c')]['find']({'where':{'id':_0x503fe8[_0xe585('0x46')]['id']}})[_0xe585('0x25')](handleEntityNotFound(_0x42e12c,null))[_0xe585('0x25')](removeEntity(_0x42e12c,null))['catch'](handleError(_0x42e12c,null));};
\ No newline at end of file
index 99c3ced..90f9520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46fc=['WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x17afd,_0x3bddb1){var _0x3b30ba=function(_0x35f7d9){while(--_0x35f7d9){_0x17afd['push'](_0x17afd['shift']());}};_0x3b30ba(++_0x3bddb1);}(_0x46fc,0x103));var _0xc46f=function(_0x28fd11,_0xb7b5ca){_0x28fd11=_0x28fd11-0x0;var _0x51caa0=_0x46fc[_0x28fd11];return _0x51caa0;};'use strict';var _=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var logger=require(_0xc46f('0x2'))(_0xc46f('0x3'));var moment=require(_0xc46f('0x4'));var BPromise=require(_0xc46f('0x5'));var rp=require(_0xc46f('0x6'));var fs=require('fs');var path=require(_0xc46f('0x7'));var rimraf=require(_0xc46f('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0xc46f('0x9')]=function(_0x176c6f,_0x30ca8d){return _0x176c6f[_0xc46f('0xa')](_0xc46f('0xb'),attributes,{'tableName':_0xc46f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc46f('0xd'),'collate':_0xc46f('0xe')});};
\ No newline at end of file
+var _0x815b=['./whatsappApplication.attributes','exports','define','whatsapp_applications','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment'];(function(_0x1dc62a,_0x5d2186){var _0x3895ae=function(_0x56f99a){while(--_0x56f99a){_0x1dc62a['push'](_0x1dc62a['shift']());}};_0x3895ae(++_0x5d2186);}(_0x815b,0xb4));var _0xb815=function(_0x5cd569,_0x506ebc){_0x5cd569=_0x5cd569-0x0;var _0x2fd3ec=_0x815b[_0x5cd569];return _0x2fd3ec;};'use strict';var _=require(_0xb815('0x0'));var util=require(_0xb815('0x1'));var logger=require(_0xb815('0x2'))(_0xb815('0x3'));var moment=require(_0xb815('0x4'));var BPromise=require('bluebird');var rp=require(_0xb815('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb815('0x6'));var attributes=require(_0xb815('0x7'));module[_0xb815('0x8')]=function(_0x5a5c18,_0x466899){return _0x5a5c18[_0xb815('0x9')]('WhatsappApplication',attributes,{'tableName':_0xb815('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1808ce1..352f7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0xc0d945,_0x5ba6a9){var _0x2dfb80=function(_0x128198){while(--_0x128198){_0xc0d945['push'](_0xc0d945['shift']());}};_0x2dfb80(++_0x5ba6a9);}(_0x0e85,0x7c));var _0x50e8=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x0e85[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var moment=require('moment');var BPromise=require(_0x50e8('0x2'));var rs=require(_0x50e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x50e8('0x4'))('rpc');var config=require(_0x50e8('0x5'));var jayson=require(_0x50e8('0x6'));var client=jayson[_0x50e8('0x7')][_0x50e8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e8b01,_0x3ce904,_0x108edc){return new BPromise(function(_0x42665e,_0x988da0){return client[_0x50e8('0x9')](_0x5e8b01,_0x108edc)[_0x50e8('0xa')](function(_0x5825f5){logger[_0x50e8('0xb')](_0x50e8('0xc'),_0x3ce904,_0x50e8('0xd'));logger[_0x50e8('0xe')](_0x50e8('0xf'),_0x3ce904,_0x50e8('0xd'),JSON[_0x50e8('0x10')](_0x5825f5));if(_0x5825f5[_0x50e8('0x11')]){if(_0x5825f5['error']['code']===0x1f4){logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error']['message']);return _0x988da0(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error'][_0x50e8('0x12')]);return _0x42665e(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x50e8('0xd'));_0x42665e(_0x5825f5[_0x50e8('0x13')][_0x50e8('0x12')]);}})[_0x50e8('0x14')](function(_0x211731){logger[_0x50e8('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x211731);_0x988da0(_0x211731);});});}
\ No newline at end of file
+var _0x425d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x397ce2,_0x516a32){var _0xf4aa13=function(_0x2d9d00){while(--_0x2d9d00){_0x397ce2['push'](_0x397ce2['shift']());}};_0xf4aa13(++_0x516a32);}(_0x425d,0x1e0));var _0xd425=function(_0x33b335,_0x3f422a){_0x33b335=_0x33b335-0x0;var _0x12f19d=_0x425d[_0x33b335];return _0x12f19d;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var moment=require(_0xd425('0x1'));var BPromise=require(_0xd425('0x2'));var rs=require(_0xd425('0x3'));var fs=require('fs');var Redis=require(_0xd425('0x4'));var db=require(_0xd425('0x5'))['db'];var utils=require(_0xd425('0x6'));var logger=require(_0xd425('0x7'))('rpc');var config=require(_0xd425('0x8'));var jayson=require(_0xd425('0x9'));var client=jayson[_0xd425('0xa')][_0xd425('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){return client[_0xd425('0xc')](_0x1d97d9,_0x50b061)[_0xd425('0xd')](function(_0x2db9da){logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));logger[_0xd425('0x11')](_0xd425('0x12'),_0x1d2ed0,_0xd425('0x10'),JSON[_0xd425('0x13')](_0x2db9da));if(_0x2db9da[_0xd425('0x14')]){if(_0x2db9da[_0xd425('0x14')][_0xd425('0x15')]===0x1f4){logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);return _0x374c3d(_0x2db9da[_0xd425('0x14')]['message']);}logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')]['message']);return _0xb6ba8e(_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);}else{logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));_0xb6ba8e(_0x2db9da['result'][_0xd425('0x16')]);}})[_0xd425('0x17')](function(_0x7e267e){logger[_0xd425('0x14')]('WhatsappApplication,\x20%s,\x20%s',_0x1d2ed0,_0x7e267e);_0x374c3d(_0x7e267e);});});}
\ No newline at end of file
index 640d614..baffeca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4b=['/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','whatsappinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','express','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','/:id','show'];(function(_0x2a3256,_0x451b2e){var _0x4009c3=function(_0x1776f8){while(--_0x1776f8){_0x2a3256['push'](_0x2a3256['shift']());}};_0x4009c3(++_0x451b2e);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x5ddda2,_0x5cad3a){_0x5ddda2=_0x5ddda2-0x0;var _0x5e17ae=_0x0e4b[_0x5ddda2];return _0x5e17ae;};'use strict';var multer=require(_0xb0e4('0x0'));var util=require(_0xb0e4('0x1'));var path=require(_0xb0e4('0x2'));var timeout=require('connect-timeout');var express=require(_0xb0e4('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb0e4('0x4'));var controller=require(_0xb0e4('0x5'));router['get']('/',auth[_0xb0e4('0x6')](),controller[_0xb0e4('0x7')]);router[_0xb0e4('0x8')](_0xb0e4('0x9'),auth[_0xb0e4('0x6')](),controller['describe']);router['get'](_0xb0e4('0xa'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xb')]);router[_0xb0e4('0x8')](_0xb0e4('0xc'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xd')]);router[_0xb0e4('0x8')](_0xb0e4('0xe'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xf')]);router[_0xb0e4('0x10')]('/',auth[_0xb0e4('0x6')](),controller[_0xb0e4('0x11')]);router[_0xb0e4('0x10')]('/:id/messages',auth[_0xb0e4('0x6')](),controller[_0xb0e4('0x12')]);router['post'](_0xb0e4('0x13'),auth[_0xb0e4('0x6')](),interaction[_0xb0e4('0x14')](_0xb0e4('0x15'),_0xb0e4('0x16')),controller['addTags']);router['put'](_0xb0e4('0xa'),auth[_0xb0e4('0x6')](),interaction['tracked'](_0xb0e4('0x15'),_0xb0e4('0x17')),controller[_0xb0e4('0x18')]);router[_0xb0e4('0x19')](_0xb0e4('0xa'),auth[_0xb0e4('0x6')](),interaction['tracked']('whatsapp','whatsappinteraction:destroy'),controller[_0xb0e4('0x1a')]);router[_0xb0e4('0x19')](_0xb0e4('0x13'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0x1b')]);module[_0xb0e4('0x1c')]=router;
\ No newline at end of file
+var _0xbd10=['/:id/tags','whatsapp','whatsappinteraction:addtags','addTags','tracked','update','delete','whatsappinteraction:destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage'];(function(_0x190eb4,_0x52875e){var _0x306aeb=function(_0x10795e){while(--_0x10795e){_0x190eb4['push'](_0x190eb4['shift']());}};_0x306aeb(++_0x52875e);}(_0xbd10,0x85));var _0x0bd1=function(_0x23b21d,_0x4f1ff6){_0x23b21d=_0x23b21d-0x0;var _0x395d66=_0xbd10[_0x23b21d];return _0x395d66;};'use strict';var multer=require(_0x0bd1('0x0'));var util=require(_0x0bd1('0x1'));var path=require(_0x0bd1('0x2'));var timeout=require('connect-timeout');var express=require(_0x0bd1('0x3'));var router=express[_0x0bd1('0x4')]();var fs_extra=require(_0x0bd1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0bd1('0x6'));var config=require(_0x0bd1('0x7'));var controller=require(_0x0bd1('0x8'));router[_0x0bd1('0x9')]('/',auth[_0x0bd1('0xa')](),controller[_0x0bd1('0xb')]);router['get'](_0x0bd1('0xc'),auth['isAuthenticated'](),controller[_0x0bd1('0xd')]);router[_0x0bd1('0x9')](_0x0bd1('0xe'),auth[_0x0bd1('0xa')](),controller['show']);router[_0x0bd1('0x9')](_0x0bd1('0xf'),auth[_0x0bd1('0xa')](),controller[_0x0bd1('0x10')]);router[_0x0bd1('0x9')](_0x0bd1('0x11'),auth['isAuthenticated'](),controller[_0x0bd1('0x12')]);router[_0x0bd1('0x13')]('/',auth[_0x0bd1('0xa')](),controller[_0x0bd1('0x14')]);router[_0x0bd1('0x13')](_0x0bd1('0xf'),auth['isAuthenticated'](),controller[_0x0bd1('0x15')]);router[_0x0bd1('0x13')](_0x0bd1('0x16'),auth['isAuthenticated'](),interaction['tracked'](_0x0bd1('0x17'),_0x0bd1('0x18')),controller[_0x0bd1('0x19')]);router['put']('/:id',auth[_0x0bd1('0xa')](),interaction[_0x0bd1('0x1a')](_0x0bd1('0x17'),'whatsappinteraction:update'),controller[_0x0bd1('0x1b')]);router[_0x0bd1('0x1c')](_0x0bd1('0xe'),auth[_0x0bd1('0xa')](),interaction['tracked'](_0x0bd1('0x17'),_0x0bd1('0x1d')),controller['destroy']);router[_0x0bd1('0x1c')](_0x0bd1('0x16'),auth['isAuthenticated'](),controller['removeTags']);module[_0x0bd1('0x1e')]=router;
\ No newline at end of file
index a12022b..bedb65c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['BOOLEAN','DATE','STRING','out','ENUM','sequelize','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6aa7,0x178));var _0x76aa=function(_0x56746a,_0x378f69){_0x56746a=_0x56746a-0x0;var _0x3e9873=_0x6aa7[_0x56746a];return _0x3e9873;};'use strict';var Sequelize=require(_0x76aa('0x0'));var moment=require('moment');module[_0x76aa('0x1')]={'closed':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x76aa('0x3')]},'disposition':{'type':Sequelize[_0x76aa('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x76aa('0x4')]},'note':{'type':Sequelize[_0x76aa('0x4')]},'phone':{'type':Sequelize[_0x76aa('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x76aa('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x76aa('0x6')]('in',_0x76aa('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0967=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x2a7038,_0x5a5f6c){var _0x4b506b=function(_0x2bf3f3){while(--_0x2bf3f3){_0x2a7038['push'](_0x2a7038['shift']());}};_0x4b506b(++_0x5a5f6c);}(_0x0967,0x100));var _0x7096=function(_0x166f2a,_0x30055f){_0x166f2a=_0x166f2a-0x0;var _0x1ee965=_0x0967[_0x166f2a];return _0x1ee965;};'use strict';var Sequelize=require(_0x7096('0x0'));var moment=require('moment');module[_0x7096('0x1')]={'closed':{'type':Sequelize[_0x7096('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7096('0x3')]},'disposition':{'type':Sequelize[_0x7096('0x4')]},'secondDisposition':{'type':Sequelize[_0x7096('0x4')]},'thirdDisposition':{'type':Sequelize[_0x7096('0x4')]},'note':{'type':Sequelize[_0x7096('0x4')]},'phone':{'type':Sequelize[_0x7096('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7096('0x5')]('in',_0x7096('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7096('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x7096('0x5')]('in',_0x7096('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7096('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 822710f..79406a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c77=['offset','undefined','count','limit','set','Content-Range','json','then','destroy','end','error','stack','name','send','index','map','WhatsappInteraction','type','key','getOptions','query','user','catch','show','params','keys','rawAttributes','filters','intersection','model','fields','attributes','length','includeAll','include','merge','options','find','create','update','body','describe','addMessage','omit','ids','WhatsappMessage','hasOwnProperty','nolimit','order','where','pick','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','unix','toString','root','files','join','server','attachments','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','lastName','Messages','direction','secret','read','Account','Owner','get','mkdirSync','Whatsapp','N.A.','createdAt','format','closed','closedAt','disposition','Attachment','basename','existsSync','pipe','createWriteStream','out','System','firstName','value','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','unlinkSync','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','redis','defaults','localhost','sendStatus','status'];(function(_0x33b9d9,_0x3d80a9){var _0x113094=function(_0x3cf68d){while(--_0x3cf68d){_0x33b9d9['push'](_0x33b9d9['shift']());}};_0x113094(++_0x3d80a9);}(_0x1c77,0xed));var _0x71c7=function(_0x31a576,_0x424419){_0x31a576=_0x31a576-0x0;var _0x30b1d3=_0x1c77[_0x31a576];return _0x30b1d3;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x71c7('0x0'));var moment=require(_0x71c7('0x1'));var BPromise=require(_0x71c7('0x2'));var util=require(_0x71c7('0x3'));var path=require(_0x71c7('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x71c7('0x5'));var Redis=require(_0x71c7('0x6'));var interaction=require(_0x71c7('0x7'));var qs=require(_0x71c7('0x8'));var pdf=require(_0x71c7('0x9'));var logger=require(_0x71c7('0xa'))(_0x71c7('0xb'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x71c7('0xc')]=_[_0x71c7('0xd')](config[_0x71c7('0xc')],{'host':_0x71c7('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x71c7('0xc')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithStatusCode(_0x34600f,_0x302f14){_0x302f14=_0x302f14||0xcc;return function(_0x1cba95){if(_0x1cba95){return _0x34600f[_0x71c7('0xf')](_0x302f14);}return _0x34600f[_0x71c7('0x10')](_0x302f14)['end']();};}function respondWithResult(_0x1d10f9,_0x26ec15){_0x26ec15=_0x26ec15||0xc8;return function(_0x389fd0){if(_0x389fd0){return _0x1d10f9[_0x71c7('0x10')](_0x26ec15)['json'](_0x389fd0);}};}function respondWithFilteredResult(_0x2d8110,_0xaaa8ba){return function(_0x608fe){if(_0x608fe){var _0x3d216e=typeof _0xaaa8ba[_0x71c7('0x11')]===_0x71c7('0x12')&&typeof _0xaaa8ba['limit']==='undefined';var _0x5493fc=_0x608fe[_0x71c7('0x13')];var _0xc8b018=_0x3d216e?0x0:_0xaaa8ba[_0x71c7('0x11')];var _0x1e3266=_0x3d216e?_0x608fe[_0x71c7('0x13')]:_0xaaa8ba[_0x71c7('0x11')]+_0xaaa8ba[_0x71c7('0x14')];var _0x5541f9;if(_0x1e3266>=_0x5493fc){_0x1e3266=_0x5493fc;_0x5541f9=0xc8;}else{_0x5541f9=0xce;}_0x2d8110[_0x71c7('0x10')](_0x5541f9);return _0x2d8110[_0x71c7('0x15')](_0x71c7('0x16'),_0xc8b018+'-'+_0x1e3266+'/'+_0x5493fc)[_0x71c7('0x17')](_0x608fe);}return null;};}function saveUpdates(_0x19001c){return function(_0x55f9f9){if(_0x55f9f9){return _0x55f9f9['update'](_0x19001c)[_0x71c7('0x18')](function(_0x1c2fc7){return _0x1c2fc7;});}return null;};}function removeEntity(_0x48e8e5){return function(_0x51253b){if(_0x51253b){return _0x51253b[_0x71c7('0x19')]()[_0x71c7('0x18')](function(){_0x48e8e5[_0x71c7('0x10')](0xcc)[_0x71c7('0x1a')]();});}};}function handleEntityNotFound(_0x1dca92){return function(_0x2f5feb){if(!_0x2f5feb){_0x1dca92[_0x71c7('0xf')](0x194);}return _0x2f5feb;};}function handleError(_0x5344ce,_0x4d785c){_0x4d785c=_0x4d785c||0x1f4;return function(_0x32fe7f){logger[_0x71c7('0x1b')](_0x32fe7f[_0x71c7('0x1c')]);if(_0x32fe7f[_0x71c7('0x1d')]){delete _0x32fe7f[_0x71c7('0x1d')];}_0x5344ce[_0x71c7('0x10')](_0x4d785c)[_0x71c7('0x1e')](_0x32fe7f);};}exports[_0x71c7('0x1f')]=function(_0x33fe96,_0x2a3f50){var _0x2b2f4c={};var _0x475e32=_[_0x71c7('0x20')](db[_0x71c7('0x21')]['rawAttributes'],function(_0x1863cc){return{'name':_0x1863cc['fieldName'],'type':_0x1863cc[_0x71c7('0x22')][_0x71c7('0x23')]};});_0x2b2f4c=qs[_0x71c7('0x24')](_0x475e32,_0x33fe96);return interaction['findAll']('whatsapp',_0x33fe96[_0x71c7('0x25')],_0x33fe96[_0x71c7('0x26')],_0x2b2f4c,_0x475e32)[_0x71c7('0x18')](respondWithFilteredResult(_0x2a3f50,_0x2b2f4c))[_0x71c7('0x27')](handleError(_0x2a3f50,null));};exports[_0x71c7('0x28')]=function(_0x11f3f6,_0x5bd496){var _0x5912f9={'raw':![],'where':{'id':_0x11f3f6[_0x71c7('0x29')]['id']}},_0x1e7e1e={};_0x1e7e1e['model']=_[_0x71c7('0x2a')](db[_0x71c7('0x21')][_0x71c7('0x2b')]);_0x1e7e1e['query']=_[_0x71c7('0x2a')](_0x11f3f6[_0x71c7('0x25')]);_0x1e7e1e[_0x71c7('0x2c')]=_[_0x71c7('0x2d')](_0x1e7e1e[_0x71c7('0x2e')],_0x1e7e1e[_0x71c7('0x25')]);_0x5912f9['attributes']=_[_0x71c7('0x2d')](_0x1e7e1e[_0x71c7('0x2e')],qs[_0x71c7('0x2f')](_0x11f3f6[_0x71c7('0x25')][_0x71c7('0x2f')]));_0x5912f9[_0x71c7('0x30')]=_0x5912f9[_0x71c7('0x30')][_0x71c7('0x31')]?_0x5912f9['attributes']:_0x1e7e1e[_0x71c7('0x2e')];if(_0x11f3f6['query'][_0x71c7('0x32')]){_0x5912f9[_0x71c7('0x33')]=[{'all':!![]}];}_0x5912f9=_[_0x71c7('0x34')]({},_0x5912f9,_0x11f3f6[_0x71c7('0x35')]);return db[_0x71c7('0x21')][_0x71c7('0x36')](_0x5912f9)[_0x71c7('0x18')](handleEntityNotFound(_0x5bd496,null))[_0x71c7('0x18')](respondWithResult(_0x5bd496,null))[_0x71c7('0x27')](handleError(_0x5bd496,null));};exports[_0x71c7('0x37')]=function(_0x54b3fe,_0x34c332){return db['WhatsappInteraction']['create'](_0x54b3fe['body'],{})[_0x71c7('0x18')](respondWithResult(_0x34c332,0xc9))['catch'](handleError(_0x34c332,null));};exports[_0x71c7('0x38')]=function(_0x415a29,_0x4ffe70){if(_0x415a29[_0x71c7('0x39')]['id']){delete _0x415a29[_0x71c7('0x39')]['id'];}return db[_0x71c7('0x21')]['find']({'where':{'id':_0x415a29[_0x71c7('0x29')]['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x4ffe70,null))[_0x71c7('0x18')](saveUpdates(_0x415a29[_0x71c7('0x39')],null))[_0x71c7('0x18')](respondWithResult(_0x4ffe70,null))[_0x71c7('0x27')](handleError(_0x4ffe70,null));};exports[_0x71c7('0x19')]=function(_0x2b09fe,_0x104b18){return db['WhatsappInteraction']['find']({'where':{'id':_0x2b09fe[_0x71c7('0x29')]['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x104b18,null))[_0x71c7('0x18')](removeEntity(_0x104b18,null))['catch'](handleError(_0x104b18,null));};exports[_0x71c7('0x3a')]=function(_0x3f4556,_0x3ad3fd){return db[_0x71c7('0x21')][_0x71c7('0x3a')]()[_0x71c7('0x18')](respondWithResult(_0x3ad3fd,null))['catch'](handleError(_0x3ad3fd,null));};exports[_0x71c7('0x3b')]=function(_0x169236,_0x37f923){return db['WhatsappMessage'][_0x71c7('0x36')]({'where':{'id':_0x169236['params']['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x37f923,null))[_0x71c7('0x18')](function(_0xc4048c){if(_0xc4048c){return _0xc4048c['addMessage'](_0x169236[_0x71c7('0x39')]['ids'],_[_0x71c7('0x3c')](_0x169236['body'],[_0x71c7('0x3d'),'id'])||{});}})[_0x71c7('0x18')](respondWithResult(_0x37f923,null))[_0x71c7('0x27')](handleError(_0x37f923,null));};exports['getMessages']=function(_0x4b7cad,_0x118d37){var _0x19ede4={'raw':![],'where':{}};var _0x18779f={};var _0x5d457a={'count':0x0,'rows':[]};return db[_0x71c7('0x21')]['findOne']({'where':{'id':_0x4b7cad[_0x71c7('0x29')]['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x118d37,null))['then'](function(_0x141771){if(_0x141771){_0x18779f[_0x71c7('0x2e')]=_[_0x71c7('0x2a')](db[_0x71c7('0x3e')][_0x71c7('0x2b')]);_0x18779f['query']=_[_0x71c7('0x2a')](_0x4b7cad[_0x71c7('0x25')]);_0x18779f[_0x71c7('0x2c')]=_['intersection'](_0x18779f[_0x71c7('0x2e')],_0x18779f[_0x71c7('0x25')]);_0x19ede4[_0x71c7('0x30')]=_['intersection'](_0x18779f[_0x71c7('0x2e')],qs['fields'](_0x4b7cad[_0x71c7('0x25')][_0x71c7('0x2f')]));_0x19ede4[_0x71c7('0x30')]=_0x19ede4[_0x71c7('0x30')][_0x71c7('0x31')]?_0x19ede4[_0x71c7('0x30')]:_0x18779f[_0x71c7('0x2e')];if(!_0x4b7cad['query'][_0x71c7('0x3f')](_0x71c7('0x40'))){_0x19ede4['limit']=qs[_0x71c7('0x14')](_0x4b7cad[_0x71c7('0x25')][_0x71c7('0x14')]);_0x19ede4[_0x71c7('0x11')]=qs['offset'](_0x4b7cad['query']['offset']);}_0x19ede4[_0x71c7('0x41')]=qs['sort'](_0x4b7cad[_0x71c7('0x25')]['sort']);_0x19ede4[_0x71c7('0x42')]=qs[_0x71c7('0x2c')](_[_0x71c7('0x43')](_0x4b7cad[_0x71c7('0x25')],_0x18779f['filters']));_0x19ede4['where'][_0x71c7('0x44')]=_0x141771['id'];if(_0x4b7cad[_0x71c7('0x25')][_0x71c7('0x45')]){_0x19ede4[_0x71c7('0x42')]=_[_0x71c7('0x34')](_0x19ede4[_0x71c7('0x42')],{'$or':_[_0x71c7('0x20')](_0x19ede4['attributes'],function(_0x337f93){var _0x951729={};_0x951729[_0x337f93]={'$like':'%'+_0x4b7cad[_0x71c7('0x25')][_0x71c7('0x45')]+'%'};return _0x951729;})});}if(_0x4b7cad['query'][_0x71c7('0x46')]){var _0x1dc3f4=_0x4b7cad[_0x71c7('0x25')]['$gte'][_0x71c7('0x47')](',');var _0x4ea505={};_0x4ea505[_0x1dc3f4[0x0]]={'$gte':moment(_0x1dc3f4[0x1])['format'](_0x71c7('0x48'))};_0x19ede4[_0x71c7('0x42')]=_[_0x71c7('0x34')](_0x19ede4[_0x71c7('0x42')],_0x4ea505);}_0x19ede4=_['merge']({},_0x19ede4,_0x4b7cad[_0x71c7('0x35')]);return db[_0x71c7('0x3e')][_0x71c7('0x13')]({'where':_0x19ede4[_0x71c7('0x42')]})[_0x71c7('0x18')](function(_0x12164f){_0x5d457a['count']=_0x12164f;if(_0x4b7cad[_0x71c7('0x25')][_0x71c7('0x32')]){_0x19ede4[_0x71c7('0x33')]=[{'all':!![]}];}return db[_0x71c7('0x3e')][_0x71c7('0x49')](_0x19ede4);})[_0x71c7('0x18')](function(_0x5eb696){_0x5d457a[_0x71c7('0x4a')]=_0x5eb696;return _0x5d457a;});}})[_0x71c7('0x18')](respondWithFilteredResult(_0x118d37,_0x19ede4))[_0x71c7('0x27')](handleError(_0x118d37,null));};exports[_0x71c7('0x4b')]=function(_0x30c6a7,_0x2ddc8c){return db[_0x71c7('0x21')][_0x71c7('0x36')]({'where':{'id':_0x30c6a7[_0x71c7('0x29')]['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x2ddc8c,null))[_0x71c7('0x18')](function(_0x2a32ce){if(_0x2a32ce){return _0x2a32ce[_0x71c7('0x4c')](_0x30c6a7[_0x71c7('0x39')][_0x71c7('0x3d')],_[_0x71c7('0x3c')](_0x30c6a7['body'],[_0x71c7('0x3d'),'id'])||{})[_0x71c7('0x4d')](function(){return db[_0x71c7('0x4e')][_0x71c7('0x49')]({'attributes':['id','name',_0x71c7('0x4f')],'where':{'id':_0x30c6a7[_0x71c7('0x39')][_0x71c7('0x3d')]}});})[_0x71c7('0x18')](function(_0x38e668){socket[_0x71c7('0x50')](_0x71c7('0x51'),{'id':Number(_0x30c6a7['params']['id']),'tags':_0x38e668||[]});return{'id':Number(_0x30c6a7[_0x71c7('0x29')]['id']),'tags':_0x38e668||[]};});}})['then'](respondWithResult(_0x2ddc8c,null))[_0x71c7('0x27')](handleError(_0x2ddc8c,null));};exports[_0x71c7('0x52')]=function(_0x1ce6b1,_0x102f90){return db[_0x71c7('0x21')][_0x71c7('0x36')]({'where':{'id':_0x1ce6b1[_0x71c7('0x29')]['id']}})[_0x71c7('0x18')](handleEntityNotFound(_0x102f90,null))[_0x71c7('0x18')](function(_0x388a0c){if(_0x388a0c){return _0x388a0c[_0x71c7('0x52')](_0x1ce6b1[_0x71c7('0x25')]['ids']);}})[_0x71c7('0x18')](respondWithStatusCode(_0x102f90,null))[_0x71c7('0x27')](handleError(_0x102f90,null));};exports['download']=function(_0x3b7e43,_0x276e54){var _0x5e2d33=moment()[_0x71c7('0x53')]()[_0x71c7('0x54')]();var _0x1658a6=path['join'](config[_0x71c7('0x55')],'server',_0x71c7('0x56'),'tmp');var _0x22ba0c=path[_0x71c7('0x57')](config['root'],_0x71c7('0x58'),_0x71c7('0x56'),_0x71c7('0x59'));var _0x4880fc=path['join'](_0x1658a6,_0x5e2d33);var _0x448d7a=util['format'](_0x71c7('0x5a'),_0x3b7e43[_0x71c7('0x29')]['id'],_0x5e2d33);var _0x5e9836=path['join'](_0x1658a6,_0x448d7a);var _0x8f5b62=[];_0x8f5b62['push']({'model':db[_0x71c7('0x5b')],'as':'User','attributes':['id',_0x71c7('0x5c')],'raw':!![]});_0x8f5b62[_0x71c7('0x5d')]({'model':db[_0x71c7('0x5e')],'as':_0x71c7('0x5f'),'attributes':['id','firstName',_0x71c7('0x60')],'raw':!![]});if(_0x3b7e43[_0x71c7('0x25')][_0x71c7('0x59')]){_0x8f5b62[_0x71c7('0x5d')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x1fe89d=[{'model':db[_0x71c7('0x3e')],'as':_0x71c7('0x61'),'attributes':['id',_0x71c7('0x39'),'createdAt',_0x71c7('0x62'),_0x71c7('0x63'),_0x71c7('0x64')],'include':_0x8f5b62}];_0x1fe89d[_0x71c7('0x5d')]({'model':db['WhatsappAccount'],'as':_0x71c7('0x65'),'attributes':['id','name']});_0x1fe89d['push']({'model':db[_0x71c7('0x5b')],'as':_0x71c7('0x66'),'attributes':['id',_0x71c7('0x5c')]});return db['WhatsappInteraction'][_0x71c7('0x36')]({'where':{'id':_0x3b7e43[_0x71c7('0x29')]['id']},'include':_0x1fe89d})['then'](handleEntityNotFound(_0x276e54,null))[_0x71c7('0x18')](function(_0x4188e4){if(_0x4188e4){var _0x41d65f=_0x4188e4[_0x71c7('0x67')]({'plain':!![]});fs[_0x71c7('0x68')](_0x4880fc);var _0x17f75f={'channel':_0x71c7('0x69'),'account':_0x41d65f['Account'][_0x71c7('0x1d')],'agent':_0x41d65f[_0x71c7('0x66')]?_0x41d65f[_0x71c7('0x66')][_0x71c7('0x5c')]:_0x71c7('0x6a'),'createdAt':moment(_0x41d65f[_0x71c7('0x6b')])[_0x71c7('0x6c')](_0x71c7('0x48'))[_0x71c7('0x54')](),'closedAt':_0x41d65f[_0x71c7('0x6d')]?moment(_0x41d65f[_0x71c7('0x6e')])[_0x71c7('0x6c')](_0x71c7('0x48'))[_0x71c7('0x54')]():'','disposition':_0x41d65f[_0x71c7('0x6f')],'messages':_(_0x41d65f['Messages'])[_0x71c7('0x45')]({'secret':![]})['map'](function(_0x4e42eb){if(_0x4e42eb['Attachment']){var _0xae421=path['join'](_0x22ba0c,_0x4e42eb[_0x71c7('0x70')][_0x71c7('0x71')]);if(fs[_0x71c7('0x72')](_0xae421)){fs['createReadStream'](_0xae421)[_0x71c7('0x73')](fs[_0x71c7('0x74')](path[_0x71c7('0x57')](_0x4880fc,_0x4e42eb[_0x71c7('0x70')][_0x71c7('0x71')])));}}return{'date':moment(_0x4e42eb['createdAt'])[_0x71c7('0x6c')](_0x71c7('0x48'))[_0x71c7('0x54')](),'sender':_0x4e42eb[_0x71c7('0x62')]===_0x71c7('0x75')?_0x4e42eb[_0x71c7('0x5b')]?_0x4e42eb[_0x71c7('0x5b')]['fullname']:_0x71c7('0x76'):_0x4e42eb['Contact'][_0x71c7('0x77')]+(_0x4e42eb['Contact'][_0x71c7('0x60')]?'\x20'+_0x4e42eb[_0x71c7('0x5f')][_0x71c7('0x60')]:''),'body':_0x4e42eb['Attachment']?_0x4e42eb[_0x71c7('0x70')][_0x71c7('0x71')]:_0x4e42eb['body'],'direction':_0x4e42eb['direction']==='out'?'A':'C','secret':_0x4e42eb[_0x71c7('0x63')],'read':_0x4e42eb[_0x71c7('0x64')],'attachment':_0x4e42eb[_0x71c7('0x70')]};})[_0x71c7('0x78')]()};return ejs['renderFile'](path[_0x71c7('0x57')](config['root'],_0x71c7('0x58'),_0x71c7('0x79'),_0x71c7('0x7a')),{'interaction':_0x17f75f})[_0x71c7('0x18')](function(_0x3583c4){var _0x5865dc=path['join'](_0x4880fc,'transcript-'+_0x41d65f['id']+'-'+_0x5e2d33+_0x71c7('0x7b'));var _0x3a6ef7={'path':_0x5865dc,'channel':_0x71c7('0x69'),'interactionId':_0x41d65f['id']};return pdf[_0x71c7('0x7c')](_0x3583c4,_0x3a6ef7);})[_0x71c7('0x18')](function(){return new BPromise(function(_0x49a24d,_0x3dc38b){zipdir(_0x4880fc,{'saveTo':_0x5e9836},function(_0x375ecf,_0x9a962d){if(_0x375ecf)return _0x3dc38b(_0x375ecf);return _0x49a24d(_0x9a962d);});})[_0x71c7('0x18')](function(){return new BPromise(function(_0x3b22a7,_0x5d43cf){rimraf(_0x4880fc,function(_0x1dda6f){if(_0x1dda6f)_0x5d43cf(_0x1dda6f);return _0x3b22a7();});});})[_0x71c7('0x18')](function(){return _0x276e54[_0x71c7('0x7d')](_0x5e9836,_0x448d7a,function(_0x3f416a){if(_0x3f416a){console['log']('err',_0x3f416a);}else{fs[_0x71c7('0x7e')](_0x5e9836);}});});});}else{return _0x276e54['sendStatus'](0xc8);}})['catch'](handleError(_0x276e54,null));};
\ No newline at end of file
+var _0xe8a1=['keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','create','update','body','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','map','filter','$gte','format','options','rows','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','transcript-%d-%s.zip','User','fullname','CmContact','Contact','firstName','attachments','push','Attachment','Messages','createdAt','direction','secret','read','Account','get','mkdirSync','Owner','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','existsSync','createReadStream','pipe','createWriteStream','basename','out','System','lastName','value','views','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','./whatsappInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','then','catch','params','model','WhatsappInteraction'];(function(_0x118b0a,_0x4318e5){var _0xb9c9b=function(_0x559ecd){while(--_0x559ecd){_0x118b0a['push'](_0x118b0a['shift']());}};_0xb9c9b(++_0x4318e5);}(_0xe8a1,0x1d8));var _0x1e8a=function(_0x127a3c,_0xd22972){_0x127a3c=_0x127a3c-0x0;var _0x5a999b=_0xe8a1[_0x127a3c];return _0x5a999b;};'use strict';var rimraf=require(_0x1e8a('0x0'));var zipdir=require(_0x1e8a('0x1'));var moment=require(_0x1e8a('0x2'));var BPromise=require('bluebird');var util=require(_0x1e8a('0x3'));var path=require(_0x1e8a('0x4'));var ejs=require(_0x1e8a('0x5'));var fs=require('fs');var _=require(_0x1e8a('0x6'));var Redis=require(_0x1e8a('0x7'));var interaction=require(_0x1e8a('0x8'));var qs=require(_0x1e8a('0x9'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x1e8a('0xa'));var config=require(_0x1e8a('0xb'));var db=require(_0x1e8a('0xc'))['db'];config[_0x1e8a('0xd')]=_['defaults'](config['redis'],{'host':_0x1e8a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e8a('0xd')]));require(_0x1e8a('0xf'))['register'](socket);function respondWithStatusCode(_0x5793af,_0x439024){_0x439024=_0x439024||0xcc;return function(_0x170fc4){if(_0x170fc4){return _0x5793af[_0x1e8a('0x10')](_0x439024);}return _0x5793af['status'](_0x439024)[_0x1e8a('0x11')]();};}function respondWithResult(_0x5dc275,_0x104852){_0x104852=_0x104852||0xc8;return function(_0xf5ac1d){if(_0xf5ac1d){return _0x5dc275[_0x1e8a('0x12')](_0x104852)[_0x1e8a('0x13')](_0xf5ac1d);}};}function respondWithFilteredResult(_0x486f09,_0x50a1a8){return function(_0x53dcb3){if(_0x53dcb3){var _0x4a5576=typeof _0x50a1a8[_0x1e8a('0x14')]===_0x1e8a('0x15')&&typeof _0x50a1a8[_0x1e8a('0x16')]==='undefined';var _0x5a70bf=_0x53dcb3[_0x1e8a('0x17')];var _0x34faca=_0x4a5576?0x0:_0x50a1a8['offset'];var _0x1a466a=_0x4a5576?_0x53dcb3[_0x1e8a('0x17')]:_0x50a1a8[_0x1e8a('0x14')]+_0x50a1a8[_0x1e8a('0x16')];var _0x24b50b;if(_0x1a466a>=_0x5a70bf){_0x1a466a=_0x5a70bf;_0x24b50b=0xc8;}else{_0x24b50b=0xce;}_0x486f09['status'](_0x24b50b);return _0x486f09[_0x1e8a('0x18')]('Content-Range',_0x34faca+'-'+_0x1a466a+'/'+_0x5a70bf)[_0x1e8a('0x13')](_0x53dcb3);}return null;};}function saveUpdates(_0x54d6fc){return function(_0x3727ed){if(_0x3727ed){return _0x3727ed['update'](_0x54d6fc)['then'](function(_0x5c6d50){return _0x5c6d50;});}return null;};}function removeEntity(_0x7c85f1){return function(_0x2a9e0e){if(_0x2a9e0e){return _0x2a9e0e[_0x1e8a('0x19')]()['then'](function(){_0x7c85f1[_0x1e8a('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x546f0e){return function(_0x4d7995){if(!_0x4d7995){_0x546f0e['sendStatus'](0x194);}return _0x4d7995;};}function handleError(_0x3fdb89,_0x16e4fc){_0x16e4fc=_0x16e4fc||0x1f4;return function(_0x511359){logger[_0x1e8a('0x1a')](_0x511359[_0x1e8a('0x1b')]);if(_0x511359[_0x1e8a('0x1c')]){delete _0x511359[_0x1e8a('0x1c')];}_0x3fdb89[_0x1e8a('0x12')](_0x16e4fc)[_0x1e8a('0x1d')](_0x511359);};}exports['index']=function(_0x1de545,_0x52985e){var _0xcc7f93={};var _0x4cf1ee=_['map'](db['WhatsappInteraction'][_0x1e8a('0x1e')],function(_0x38865c){return{'name':_0x38865c[_0x1e8a('0x1f')],'type':_0x38865c[_0x1e8a('0x20')][_0x1e8a('0x21')]};});_0xcc7f93=qs[_0x1e8a('0x22')](_0x4cf1ee,_0x1de545);return interaction[_0x1e8a('0x23')](_0x1e8a('0x24'),_0x1de545[_0x1e8a('0x25')],_0x1de545[_0x1e8a('0x26')],_0xcc7f93,_0x4cf1ee)[_0x1e8a('0x27')](respondWithFilteredResult(_0x52985e,_0xcc7f93))[_0x1e8a('0x28')](handleError(_0x52985e,null));};exports['show']=function(_0x3ee751,_0x235427){var _0x37c0c9={'raw':![],'where':{'id':_0x3ee751[_0x1e8a('0x29')]['id']}},_0x1d2d48={};_0x1d2d48[_0x1e8a('0x2a')]=_['keys'](db[_0x1e8a('0x2b')][_0x1e8a('0x1e')]);_0x1d2d48[_0x1e8a('0x25')]=_[_0x1e8a('0x2c')](_0x3ee751[_0x1e8a('0x25')]);_0x1d2d48[_0x1e8a('0x2d')]=_[_0x1e8a('0x2e')](_0x1d2d48[_0x1e8a('0x2a')],_0x1d2d48[_0x1e8a('0x25')]);_0x37c0c9[_0x1e8a('0x2f')]=_[_0x1e8a('0x2e')](_0x1d2d48[_0x1e8a('0x2a')],qs['fields'](_0x3ee751[_0x1e8a('0x25')][_0x1e8a('0x30')]));_0x37c0c9[_0x1e8a('0x2f')]=_0x37c0c9[_0x1e8a('0x2f')][_0x1e8a('0x31')]?_0x37c0c9[_0x1e8a('0x2f')]:_0x1d2d48['model'];if(_0x3ee751[_0x1e8a('0x25')][_0x1e8a('0x32')]){_0x37c0c9[_0x1e8a('0x33')]=[{'all':!![]}];}_0x37c0c9=_[_0x1e8a('0x34')]({},_0x37c0c9,_0x3ee751['options']);return db[_0x1e8a('0x2b')][_0x1e8a('0x35')](_0x37c0c9)[_0x1e8a('0x27')](handleEntityNotFound(_0x235427,null))[_0x1e8a('0x27')](respondWithResult(_0x235427,null))[_0x1e8a('0x28')](handleError(_0x235427,null));};exports[_0x1e8a('0x36')]=function(_0x151a62,_0x5db509){return db[_0x1e8a('0x2b')]['create'](_0x151a62['body'],{})['then'](respondWithResult(_0x5db509,0xc9))['catch'](handleError(_0x5db509,null));};exports[_0x1e8a('0x37')]=function(_0x4840b9,_0x36a0af){if(_0x4840b9[_0x1e8a('0x38')]['id']){delete _0x4840b9[_0x1e8a('0x38')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x4840b9[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x36a0af,null))['then'](saveUpdates(_0x4840b9[_0x1e8a('0x38')],null))[_0x1e8a('0x27')](respondWithResult(_0x36a0af,null))['catch'](handleError(_0x36a0af,null));};exports[_0x1e8a('0x19')]=function(_0x25fd51,_0x4687b9){return db['WhatsappInteraction']['find']({'where':{'id':_0x25fd51[_0x1e8a('0x29')]['id']}})['then'](handleEntityNotFound(_0x4687b9,null))[_0x1e8a('0x27')](removeEntity(_0x4687b9,null))[_0x1e8a('0x28')](handleError(_0x4687b9,null));};exports[_0x1e8a('0x39')]=function(_0x3a8d76,_0x257718){return db[_0x1e8a('0x2b')][_0x1e8a('0x39')]()[_0x1e8a('0x27')](respondWithResult(_0x257718,null))[_0x1e8a('0x28')](handleError(_0x257718,null));};exports[_0x1e8a('0x3a')]=function(_0x583602,_0x2554f0){return db[_0x1e8a('0x3b')][_0x1e8a('0x35')]({'where':{'id':_0x583602[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x2554f0,null))[_0x1e8a('0x27')](function(_0x24176e){if(_0x24176e){return _0x24176e[_0x1e8a('0x3a')](_0x583602[_0x1e8a('0x38')][_0x1e8a('0x3c')],_[_0x1e8a('0x3d')](_0x583602[_0x1e8a('0x38')],[_0x1e8a('0x3c'),'id'])||{});}})[_0x1e8a('0x27')](respondWithResult(_0x2554f0,null))['catch'](handleError(_0x2554f0,null));};exports[_0x1e8a('0x3e')]=function(_0x3ca832,_0x394bd6){var _0x24e8a4={'raw':![],'where':{}};var _0xc1d4be={};var _0x22c709={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x1e8a('0x3f')]({'where':{'id':_0x3ca832[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x394bd6,null))[_0x1e8a('0x27')](function(_0xfa714c){if(_0xfa714c){_0xc1d4be[_0x1e8a('0x2a')]=_[_0x1e8a('0x2c')](db[_0x1e8a('0x3b')][_0x1e8a('0x1e')]);_0xc1d4be[_0x1e8a('0x25')]=_[_0x1e8a('0x2c')](_0x3ca832[_0x1e8a('0x25')]);_0xc1d4be[_0x1e8a('0x2d')]=_[_0x1e8a('0x2e')](_0xc1d4be['model'],_0xc1d4be[_0x1e8a('0x25')]);_0x24e8a4[_0x1e8a('0x2f')]=_['intersection'](_0xc1d4be[_0x1e8a('0x2a')],qs[_0x1e8a('0x30')](_0x3ca832[_0x1e8a('0x25')]['fields']));_0x24e8a4[_0x1e8a('0x2f')]=_0x24e8a4[_0x1e8a('0x2f')][_0x1e8a('0x31')]?_0x24e8a4[_0x1e8a('0x2f')]:_0xc1d4be['model'];if(!_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x40')](_0x1e8a('0x41'))){_0x24e8a4['limit']=qs[_0x1e8a('0x16')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x16')]);_0x24e8a4[_0x1e8a('0x14')]=qs[_0x1e8a('0x14')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x14')]);}_0x24e8a4[_0x1e8a('0x42')]=qs[_0x1e8a('0x43')](_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x43')]);_0x24e8a4[_0x1e8a('0x44')]=qs[_0x1e8a('0x2d')](_[_0x1e8a('0x45')](_0x3ca832[_0x1e8a('0x25')],_0xc1d4be[_0x1e8a('0x2d')]));_0x24e8a4['where']['WhatsappInteractionId']=_0xfa714c['id'];if(_0x3ca832[_0x1e8a('0x25')]['filter']){_0x24e8a4[_0x1e8a('0x44')]=_[_0x1e8a('0x34')](_0x24e8a4['where'],{'$or':_[_0x1e8a('0x46')](_0x24e8a4[_0x1e8a('0x2f')],function(_0xa7b709){var _0x2ece68={};_0x2ece68[_0xa7b709]={'$like':'%'+_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x47')]+'%'};return _0x2ece68;})});}if(_0x3ca832[_0x1e8a('0x25')][_0x1e8a('0x48')]){var _0x576886=_0x3ca832[_0x1e8a('0x25')]['$gte']['split'](',');var _0xf9337f={};_0xf9337f[_0x576886[0x0]]={'$gte':moment(_0x576886[0x1])[_0x1e8a('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0x24e8a4[_0x1e8a('0x44')]=_[_0x1e8a('0x34')](_0x24e8a4[_0x1e8a('0x44')],_0xf9337f);}_0x24e8a4=_[_0x1e8a('0x34')]({},_0x24e8a4,_0x3ca832[_0x1e8a('0x4a')]);return db[_0x1e8a('0x3b')][_0x1e8a('0x17')]({'where':_0x24e8a4['where']})[_0x1e8a('0x27')](function(_0x1ee1d6){_0x22c709[_0x1e8a('0x17')]=_0x1ee1d6;if(_0x3ca832['query'][_0x1e8a('0x32')]){_0x24e8a4[_0x1e8a('0x33')]=[{'all':!![]}];}return db[_0x1e8a('0x3b')][_0x1e8a('0x23')](_0x24e8a4);})['then'](function(_0x1eff36){_0x22c709[_0x1e8a('0x4b')]=_0x1eff36;return _0x22c709;});}})['then'](respondWithFilteredResult(_0x394bd6,_0x24e8a4))['catch'](handleError(_0x394bd6,null));};exports['addTags']=function(_0x532d2a,_0x50620a){return db[_0x1e8a('0x2b')][_0x1e8a('0x35')]({'where':{'id':_0x532d2a['params']['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0x50620a,null))[_0x1e8a('0x27')](function(_0x349d6e){if(_0x349d6e){return _0x349d6e[_0x1e8a('0x4c')](_0x532d2a[_0x1e8a('0x38')][_0x1e8a('0x3c')],_[_0x1e8a('0x3d')](_0x532d2a[_0x1e8a('0x38')],[_0x1e8a('0x3c'),'id'])||{})[_0x1e8a('0x4d')](function(){return db[_0x1e8a('0x4e')]['findAll']({'attributes':['id',_0x1e8a('0x1c'),_0x1e8a('0x4f')],'where':{'id':_0x532d2a['body'][_0x1e8a('0x3c')]}});})[_0x1e8a('0x27')](function(_0x65f6cd){socket[_0x1e8a('0x50')](_0x1e8a('0x51'),{'id':Number(_0x532d2a[_0x1e8a('0x29')]['id']),'tags':_0x65f6cd||[]});return{'id':Number(_0x532d2a[_0x1e8a('0x29')]['id']),'tags':_0x65f6cd||[]};});}})[_0x1e8a('0x27')](respondWithResult(_0x50620a,null))[_0x1e8a('0x28')](handleError(_0x50620a,null));};exports[_0x1e8a('0x52')]=function(_0x58fbf2,_0xd5efc3){return db[_0x1e8a('0x2b')]['find']({'where':{'id':_0x58fbf2[_0x1e8a('0x29')]['id']}})[_0x1e8a('0x27')](handleEntityNotFound(_0xd5efc3,null))[_0x1e8a('0x27')](function(_0x15f2ab){if(_0x15f2ab){return _0x15f2ab['removeTags'](_0x58fbf2[_0x1e8a('0x25')]['ids']);}})[_0x1e8a('0x27')](respondWithStatusCode(_0xd5efc3,null))['catch'](handleError(_0xd5efc3,null));};exports[_0x1e8a('0x53')]=function(_0x304e62,_0x25f2e4){var _0x5431c6=moment()['unix']()[_0x1e8a('0x54')]();var _0x394620=path[_0x1e8a('0x55')](config[_0x1e8a('0x56')],_0x1e8a('0x57'),_0x1e8a('0x58'),_0x1e8a('0x59'));var _0x59d62a=path[_0x1e8a('0x55')](config['root'],_0x1e8a('0x57'),_0x1e8a('0x58'),'attachments');var _0x4a9d8e=path[_0x1e8a('0x55')](_0x394620,_0x5431c6);var _0x598dfa=util[_0x1e8a('0x49')](_0x1e8a('0x5a'),_0x304e62['params']['id'],_0x5431c6);var _0x238014=path[_0x1e8a('0x55')](_0x394620,_0x598dfa);var _0x4b6feb=[];_0x4b6feb['push']({'model':db[_0x1e8a('0x5b')],'as':_0x1e8a('0x5b'),'attributes':['id',_0x1e8a('0x5c')],'raw':!![]});_0x4b6feb['push']({'model':db[_0x1e8a('0x5d')],'as':_0x1e8a('0x5e'),'attributes':['id',_0x1e8a('0x5f'),'lastName'],'raw':!![]});if(_0x304e62[_0x1e8a('0x25')][_0x1e8a('0x60')]){_0x4b6feb[_0x1e8a('0x61')]({'model':db[_0x1e8a('0x62')],'as':_0x1e8a('0x62'),'raw':!![]});}var _0x59fb72=[{'model':db['WhatsappMessage'],'as':_0x1e8a('0x63'),'attributes':['id',_0x1e8a('0x38'),_0x1e8a('0x64'),_0x1e8a('0x65'),_0x1e8a('0x66'),_0x1e8a('0x67')],'include':_0x4b6feb}];_0x59fb72[_0x1e8a('0x61')]({'model':db['WhatsappAccount'],'as':_0x1e8a('0x68'),'attributes':['id','name']});_0x59fb72[_0x1e8a('0x61')]({'model':db[_0x1e8a('0x5b')],'as':'Owner','attributes':['id',_0x1e8a('0x5c')]});return db[_0x1e8a('0x2b')][_0x1e8a('0x35')]({'where':{'id':_0x304e62[_0x1e8a('0x29')]['id']},'include':_0x59fb72})[_0x1e8a('0x27')](handleEntityNotFound(_0x25f2e4,null))[_0x1e8a('0x27')](function(_0x50cc51){if(_0x50cc51){var _0x6ea72a=_0x50cc51[_0x1e8a('0x69')]({'plain':!![]});fs[_0x1e8a('0x6a')](_0x4a9d8e);var _0x247d58={'channel':'Whatsapp','account':_0x6ea72a[_0x1e8a('0x68')]['name'],'agent':_0x6ea72a[_0x1e8a('0x6b')]?_0x6ea72a[_0x1e8a('0x6b')][_0x1e8a('0x5c')]:'N.A.','createdAt':moment(_0x6ea72a[_0x1e8a('0x64')])[_0x1e8a('0x49')](_0x1e8a('0x6c'))[_0x1e8a('0x54')](),'closedAt':_0x6ea72a[_0x1e8a('0x6d')]?moment(_0x6ea72a[_0x1e8a('0x6e')])[_0x1e8a('0x49')](_0x1e8a('0x6c'))[_0x1e8a('0x54')]():'','disposition':_0x6ea72a[_0x1e8a('0x6f')],'messages':_(_0x6ea72a[_0x1e8a('0x63')])['filter']({'secret':![]})[_0x1e8a('0x46')](function(_0x57bc26){if(_0x57bc26[_0x1e8a('0x62')]){var _0xcf3732=path[_0x1e8a('0x55')](_0x59d62a,_0x57bc26['Attachment']['basename']);if(fs[_0x1e8a('0x70')](_0xcf3732)){fs[_0x1e8a('0x71')](_0xcf3732)[_0x1e8a('0x72')](fs[_0x1e8a('0x73')](path['join'](_0x4a9d8e,_0x57bc26[_0x1e8a('0x62')][_0x1e8a('0x74')])));}}return{'date':moment(_0x57bc26[_0x1e8a('0x64')])[_0x1e8a('0x49')]('YYYY-MM-DD\x20HH:mm:ss')[_0x1e8a('0x54')](),'sender':_0x57bc26['direction']===_0x1e8a('0x75')?_0x57bc26[_0x1e8a('0x5b')]?_0x57bc26[_0x1e8a('0x5b')][_0x1e8a('0x5c')]:_0x1e8a('0x76'):_0x57bc26[_0x1e8a('0x5e')][_0x1e8a('0x5f')]+(_0x57bc26['Contact'][_0x1e8a('0x77')]?'\x20'+_0x57bc26[_0x1e8a('0x5e')]['lastName']:''),'body':_0x57bc26[_0x1e8a('0x62')]?_0x57bc26['Attachment'][_0x1e8a('0x74')]:_0x57bc26[_0x1e8a('0x38')],'direction':_0x57bc26[_0x1e8a('0x65')]===_0x1e8a('0x75')?'A':'C','secret':_0x57bc26[_0x1e8a('0x66')],'read':_0x57bc26[_0x1e8a('0x67')],'attachment':_0x57bc26[_0x1e8a('0x62')]};})[_0x1e8a('0x78')]()};return ejs['renderFile'](path['join'](config[_0x1e8a('0x56')],_0x1e8a('0x57'),_0x1e8a('0x79'),_0x1e8a('0x7a')),{'interaction':_0x247d58})[_0x1e8a('0x27')](function(_0x379348){var _0x3e3a25=path[_0x1e8a('0x55')](_0x4a9d8e,_0x1e8a('0x7b')+_0x6ea72a['id']+'-'+_0x5431c6+_0x1e8a('0x7c'));var _0x358510={'path':_0x3e3a25,'channel':_0x1e8a('0x7d'),'interactionId':_0x6ea72a['id']};return pdf[_0x1e8a('0x7e')](_0x379348,_0x358510);})[_0x1e8a('0x27')](function(){return new BPromise(function(_0x562722,_0x5d55ca){zipdir(_0x4a9d8e,{'saveTo':_0x238014},function(_0x23aa63,_0x4d5c7b){if(_0x23aa63)return _0x5d55ca(_0x23aa63);return _0x562722(_0x4d5c7b);});})['then'](function(){return new BPromise(function(_0x4bcf58,_0x3fec7d){rimraf(_0x4a9d8e,function(_0x43111a){if(_0x43111a)_0x3fec7d(_0x43111a);return _0x4bcf58();});});})['then'](function(){return _0x25f2e4[_0x1e8a('0x53')](_0x238014,_0x598dfa,function(_0x4b6f15){if(_0x4b6f15){console['log'](_0x1e8a('0x7f'),_0x4b6f15);}else{fs[_0x1e8a('0x80')](_0x238014);}});});});}else{return _0x25f2e4[_0x1e8a('0x10')](0xc8);}})[_0x1e8a('0x28')](handleError(_0x25f2e4,null));};
\ No newline at end of file
index c8efb57..822cc7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3189=['setDataValue','Users','map','findAll','then','emit','catch','hasOwnProperty','hook','events','../../mysqldb','WhatsappMessage','setMaxListeners','update','getUsers'];(function(_0x15f3c0,_0x165a64){var _0x1adfe0=function(_0x212cfc){while(--_0x212cfc){_0x15f3c0['push'](_0x15f3c0['shift']());}};_0x1adfe0(++_0x165a64);}(_0x3189,0xae));var _0x9318=function(_0x5a831c,_0x23ac4c){_0x5a831c=_0x5a831c-0x0;var _0x561f75=_0x3189[_0x5a831c];return _0x561f75;};'use strict';var EventEmitter=require(_0x9318('0x0'));var WhatsappInteraction=require(_0x9318('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x9318('0x1'))['db'][_0x9318('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x9318('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9318('0x4'),'afterDestroy':'remove'};function emitEvent(_0x53a864){return function(_0x3a559b,_0xc25602,_0x50b157){_0x3a559b[_0x9318('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4dbe95){_0x3a559b[_0x9318('0x6')](_0x9318('0x7'),_0x4dbe95[_0x9318('0x8')](function(_0x56f33b){return{'id':_0x56f33b['id']};}));return WhatsappMessage[_0x9318('0x9')]({'where':{'WhatsappInteractionId':_0x3a559b['id'],'direction':'in','read':![]},'raw':!![]});})[_0x9318('0xa')](function(_0x295972){_0x3a559b[_0x9318('0x6')]('unreadMessages',_0x295972['length']);WhatsappInteractionEvents[_0x9318('0xb')](_0x53a864+':'+_0x3a559b['id'],_0x3a559b);WhatsappInteractionEvents['emit'](_0x53a864,_0x3a559b);_0x50b157(null);})[_0x9318('0xc')](_0x50b157(null));};}for(var e in events){if(events[_0x9318('0xd')](e)){var event=events[e];WhatsappInteraction[_0x9318('0xe')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xa1e8=['unreadMessages','length','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','../../mysqldb','WhatsappMessage','save','remove','getUsers','then','setDataValue','map','findAll'];(function(_0x589f05,_0x1c5a16){var _0x3a11b4=function(_0x1ec7fb){while(--_0x1ec7fb){_0x589f05['push'](_0x589f05['shift']());}};_0x3a11b4(++_0x1c5a16);}(_0xa1e8,0x1af));var _0x8a1e=function(_0x3216d8,_0x4c1efc){_0x3216d8=_0x3216d8-0x0;var _0x5be759=_0xa1e8[_0x3216d8];return _0x5be759;};'use strict';var EventEmitter=require(_0x8a1e('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x8a1e('0x1')];var WhatsappMessage=require(_0x8a1e('0x2'))['db'][_0x8a1e('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8a1e('0x4'),'afterUpdate':'update','afterDestroy':_0x8a1e('0x5')};function emitEvent(_0x4f642b){return function(_0x20fe9d,_0x5b46f1,_0x5730e0){_0x20fe9d[_0x8a1e('0x6')]({'attributes':['id'],'raw':!![]})[_0x8a1e('0x7')](function(_0xeaba17){_0x20fe9d[_0x8a1e('0x8')]('Users',_0xeaba17[_0x8a1e('0x9')](function(_0x365845){return{'id':_0x365845['id']};}));return WhatsappMessage[_0x8a1e('0xa')]({'where':{'WhatsappInteractionId':_0x20fe9d['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x31afa4){_0x20fe9d['setDataValue'](_0x8a1e('0xb'),_0x31afa4[_0x8a1e('0xc')]);WhatsappInteractionEvents['emit'](_0x4f642b+':'+_0x20fe9d['id'],_0x20fe9d);WhatsappInteractionEvents['emit'](_0x4f642b,_0x20fe9d);_0x5730e0(null);})[_0x8a1e('0xd')](_0x5730e0(null));};}for(var e in events){if(events[_0x8a1e('0xe')](e)){var event=events[e];WhatsappInteraction[_0x8a1e('0xf')](e,emitEvent(event));}}module[_0x8a1e('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index 4a35bcd..1aa3cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b0=['exports','define','whatsapp_interactions','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','path','../../config/environment','./whatsappInteraction.attributes'];(function(_0x28202e,_0x5d0604){var _0x126f8b=function(_0x22de23){while(--_0x22de23){_0x28202e['push'](_0x28202e['shift']());}};_0x126f8b(++_0x5d0604);}(_0xf0b0,0x143));var _0x0f0b=function(_0x242837,_0x4703ce){_0x242837=_0x242837-0x0;var _0x182aa8=_0xf0b0[_0x242837];return _0x182aa8;};'use strict';var _=require('lodash');var util=require(_0x0f0b('0x0'));var logger=require(_0x0f0b('0x1'))(_0x0f0b('0x2'));var moment=require('moment');var BPromise=require(_0x0f0b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0f0b('0x4'));var rimraf=require('rimraf');var config=require(_0x0f0b('0x5'));var attributes=require(_0x0f0b('0x6'));module[_0x0f0b('0x7')]=function(_0x56e2db,_0x109705){return _0x56e2db[_0x0f0b('0x8')]('WhatsappInteraction',attributes,{'tableName':_0x0f0b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x449f1b,_0x170d71,_0x42de1b){if(_0x449f1b['changed']('closed')){_0x449f1b['closedAt']=moment()['format'](_0x0f0b('0xa'));}_0x42de1b(null,_0x449f1b);}}});};
\ No newline at end of file
+var _0xdf08=['changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','bluebird','request-promise','../../config/environment','./whatsappInteraction.attributes','exports','define'];(function(_0x17af15,_0x1fba93){var _0x3ec0ae=function(_0x337f36){while(--_0x337f36){_0x17af15['push'](_0x17af15['shift']());}};_0x3ec0ae(++_0x1fba93);}(_0xdf08,0x1f2));var _0x8df0=function(_0x378381,_0x57d229){_0x378381=_0x378381-0x0;var _0x13c1ae=_0xdf08[_0x378381];return _0x13c1ae;};'use strict';var _=require(_0x8df0('0x0'));var util=require(_0x8df0('0x1'));var logger=require(_0x8df0('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8df0('0x3'));var rp=require(_0x8df0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8df0('0x5'));var attributes=require(_0x8df0('0x6'));module[_0x8df0('0x7')]=function(_0x5580e6,_0xb63bcd){return _0x5580e6[_0x8df0('0x8')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x245c72,_0x2dc996,_0x4a9c2d){if(_0x245c72[_0x8df0('0x9')]('closed')){_0x245c72[_0x8df0('0xa')]=moment()[_0x8df0('0xb')](_0x8df0('0xc'));}_0x4a9c2d(null,_0x245c72);}}});};
\ No newline at end of file
index 4a254ef..5819f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be4=['find','where','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','attributes','limit','stringify','AddTagsToWhatsappInteraction'];(function(_0x3418a5,_0x57da54){var _0x1901bb=function(_0x26185e){while(--_0x26185e){_0x3418a5['push'](_0x3418a5['shift']());}};_0x1901bb(++_0x57da54);}(_0x0be4,0x1eb));var _0x40be=function(_0x31d363,_0x30e5b7){_0x31d363=_0x31d363-0x0;var _0x5d7040=_0x0be4[_0x31d363];return _0x5d7040;};'use strict';var _=require(_0x40be('0x0'));var util=require(_0x40be('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x40be('0x2'));var fs=require('fs');var Redis=require(_0x40be('0x3'));var db=require(_0x40be('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x40be('0x5'))(_0x40be('0x6'));var config=require('../../config/environment');var jayson=require(_0x40be('0x7'));var client=jayson[_0x40be('0x8')][_0x40be('0x9')]({'port':0x232a});config[_0x40be('0xa')]=_[_0x40be('0xb')](config[_0x40be('0xa')],{'host':_0x40be('0xc'),'port':0x18eb});var socket=require(_0x40be('0xd'))(new Redis(config[_0x40be('0xa')]));require(_0x40be('0xe'))[_0x40be('0xf')](socket);function respondWithRpcPromise(_0x1bf8f9,_0x2db331,_0x2b7aa5){return new BPromise(function(_0x525799,_0x385944){return client[_0x40be('0x10')](_0x1bf8f9,_0x2b7aa5)[_0x40be('0x11')](function(_0x27f53c){logger[_0x40be('0x12')](_0x40be('0x13'),_0x2db331,_0x40be('0x14'));logger[_0x40be('0x15')](_0x40be('0x16'),_0x2db331,_0x40be('0x14'),JSON['stringify'](_0x27f53c));if(_0x27f53c['error']){if(_0x27f53c[_0x40be('0x17')][_0x40be('0x18')]===0x1f4){logger[_0x40be('0x17')](_0x40be('0x13'),_0x2db331,_0x27f53c[_0x40be('0x17')][_0x40be('0x19')]);return _0x385944(_0x27f53c[_0x40be('0x17')]['message']);}logger[_0x40be('0x17')](_0x40be('0x13'),_0x2db331,_0x27f53c[_0x40be('0x17')]['message']);return _0x525799(_0x27f53c[_0x40be('0x17')]['message']);}else{logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x2db331,_0x40be('0x14'));_0x525799(_0x27f53c[_0x40be('0x1a')]['message']);}})[_0x40be('0x1b')](function(_0x9a8bb1){logger[_0x40be('0x17')](_0x40be('0x13'),_0x2db331,_0x9a8bb1);_0x385944(_0x9a8bb1);});});}exports[_0x40be('0x1c')]=function(_0x5bcbe1){var _0x50fd55=this;return new Promise(function(_0x3edf63,_0x5f297b){return db[_0x40be('0x1d')][_0x40be('0x1e')](_0x5bcbe1[_0x40be('0x1f')],{'raw':_0x5bcbe1[_0x40be('0x20')]?_0x5bcbe1[_0x40be('0x20')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bcbe1[_0x40be('0x20')]?_0x5bcbe1['options']['where']||null:null,'attributes':_0x5bcbe1[_0x40be('0x20')]?_0x5bcbe1[_0x40be('0x20')][_0x40be('0x21')]||null:null,'limit':_0x5bcbe1['options']?_0x5bcbe1[_0x40be('0x20')][_0x40be('0x22')]||null:null})['then'](function(_0x3cc69b){logger['info'](_0x40be('0x1c'),_0x5bcbe1);logger[_0x40be('0x15')]('UpdateWhatsappInteraction',_0x5bcbe1,JSON[_0x40be('0x23')](_0x3cc69b));_0x3edf63(_0x3cc69b);})['catch'](function(_0x1eeaee){logger[_0x40be('0x17')](_0x40be('0x1c'),_0x1eeaee['message'],_0x5bcbe1);_0x5f297b(_0x50fd55['error'](0x1f4,_0x1eeaee['message']));});});};exports[_0x40be('0x24')]=function(_0x25fb77){return new Promise(function(_0x5b1c02,_0x61b77b){return db['WhatsappInteraction'][_0x40be('0x25')]({'where':_0x25fb77['options']?_0x25fb77[_0x40be('0x20')][_0x40be('0x26')]||null:null})['then'](function(_0x27b914){if(_0x27b914){return _0x27b914[_0x40be('0x27')](_0x25fb77[_0x40be('0x1f')][_0x40be('0x28')],_[_0x40be('0x29')](_0x25fb77[_0x40be('0x1f')],[_0x40be('0x28'),'id'])||{});}})[_0x40be('0x2a')](function(_0x1b247b){logger[_0x40be('0x12')](_0x40be('0x2b'),_0x25fb77);logger['debug'](_0x40be('0x2b'),_0x25fb77,JSON[_0x40be('0x23')](_0x1b247b));_0x5b1c02(_0x1b247b);})[_0x40be('0x1b')](function(_0x42f420){logger['error'](_0x40be('0x2b'),_0x42f420['message'],_0x25fb77);_0x61b77b(_this[_0x40be('0x17')](0x1f4,_0x42f420['message']));});});};
\ No newline at end of file
+var _0x8d4e=['AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','AddTags','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','localhost','socket.io-emitter','request','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','UpdateWhatsappInteraction','WhatsappInteraction','options','raw','where','attributes','limit'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x8d4e,0x12f));var _0xe8d4=function(_0x40581a,_0x255aa3){_0x40581a=_0x40581a-0x0;var _0x5e4fb4=_0x8d4e[_0x40581a];return _0x5e4fb4;};'use strict';var _=require('lodash');var util=require(_0xe8d4('0x0'));var moment=require(_0xe8d4('0x1'));var BPromise=require('bluebird');var rs=require(_0xe8d4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe8d4('0x3'))['db'];var utils=require(_0xe8d4('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe8d4('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xe8d4('0x6')][_0xe8d4('0x7')]({'port':0x232a});config[_0xe8d4('0x8')]=_['defaults'](config[_0xe8d4('0x8')],{'host':_0xe8d4('0x9'),'port':0x18eb});var socket=require(_0xe8d4('0xa'))(new Redis(config[_0xe8d4('0x8')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x2b3149,_0x1462bf,_0x3c18c5){return new BPromise(function(_0xc72f21,_0x306907){return client[_0xe8d4('0xb')](_0x2b3149,_0x3c18c5)[_0xe8d4('0xc')](function(_0x5f4059){logger['info'](_0xe8d4('0xd'),_0x1462bf,_0xe8d4('0xe'));logger[_0xe8d4('0xf')](_0xe8d4('0x10'),_0x1462bf,'request\x20sent',JSON[_0xe8d4('0x11')](_0x5f4059));if(_0x5f4059[_0xe8d4('0x12')]){if(_0x5f4059['error'][_0xe8d4('0x13')]===0x1f4){logger[_0xe8d4('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x1462bf,_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);return _0x306907(_0x5f4059[_0xe8d4('0x12')]['message']);}logger[_0xe8d4('0x12')](_0xe8d4('0xd'),_0x1462bf,_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);return _0xc72f21(_0x5f4059[_0xe8d4('0x12')][_0xe8d4('0x14')]);}else{logger[_0xe8d4('0x15')](_0xe8d4('0xd'),_0x1462bf,_0xe8d4('0xe'));_0xc72f21(_0x5f4059['result'][_0xe8d4('0x14')]);}})[_0xe8d4('0x16')](function(_0x13b50a){logger[_0xe8d4('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x1462bf,_0x13b50a);_0x306907(_0x13b50a);});});}exports[_0xe8d4('0x17')]=function(_0x5c8ec7){var _0x5df43c=this;return new Promise(function(_0x4988d9,_0x5ade6c){return db[_0xe8d4('0x18')]['update'](_0x5c8ec7['body'],{'raw':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7[_0xe8d4('0x19')][_0xe8d4('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1b')]||null:null,'attributes':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1c')]||null:null,'limit':_0x5c8ec7[_0xe8d4('0x19')]?_0x5c8ec7['options'][_0xe8d4('0x1d')]||null:null})[_0xe8d4('0xc')](function(_0x275774){logger[_0xe8d4('0x15')](_0xe8d4('0x17'),_0x5c8ec7);logger[_0xe8d4('0xf')]('UpdateWhatsappInteraction',_0x5c8ec7,JSON['stringify'](_0x275774));_0x4988d9(_0x275774);})['catch'](function(_0x4cf8ab){logger['error']('UpdateWhatsappInteraction',_0x4cf8ab[_0xe8d4('0x14')],_0x5c8ec7);_0x5ade6c(_0x5df43c[_0xe8d4('0x12')](0x1f4,_0x4cf8ab[_0xe8d4('0x14')]));});});};exports[_0xe8d4('0x1e')]=function(_0x25c428){return new Promise(function(_0x59e666,_0x3567e6){return db['WhatsappInteraction'][_0xe8d4('0x1f')]({'where':_0x25c428[_0xe8d4('0x19')]?_0x25c428[_0xe8d4('0x19')]['where']||null:null})[_0xe8d4('0xc')](function(_0x27169c){if(_0x27169c){return _0x27169c[_0xe8d4('0x20')](_0x25c428[_0xe8d4('0x21')][_0xe8d4('0x22')],_[_0xe8d4('0x23')](_0x25c428[_0xe8d4('0x21')],[_0xe8d4('0x22'),'id'])||{});}})['spread'](function(_0x28a713){logger[_0xe8d4('0x15')](_0xe8d4('0x24'),_0x25c428);logger[_0xe8d4('0xf')]('AddTags',_0x25c428,JSON['stringify'](_0x28a713));_0x59e666(_0x28a713);})[_0xe8d4('0x16')](function(_0xa38717){logger[_0xe8d4('0x12')](_0xe8d4('0x24'),_0xa38717['message'],_0x25c428);_0x3567e6(_this[_0xe8d4('0x12')](0x1f4,_0xa38717[_0xe8d4('0x14')]));});});};
\ No newline at end of file
index 38427ef..ad7240b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8124=['remove','removeListener','register','length','whatsappInteraction:','./whatsappInteraction.events','save'];(function(_0x55d3fc,_0x47e066){var _0xf389c6=function(_0x3ef839){while(--_0x3ef839){_0x55d3fc['push'](_0x55d3fc['shift']());}};_0xf389c6(++_0x47e066);}(_0x8124,0xd7));var _0x4812=function(_0x4aa662,_0x1cc90c){_0x4aa662=_0x4aa662-0x0;var _0x336478=_0x8124[_0x4aa662];return _0x336478;};'use strict';var WhatsappInteractionEvents=require(_0x4812('0x0'));var events=[_0x4812('0x1'),_0x4812('0x2'),'update'];function createListener(_0x575e0b,_0x305818){return function(_0x79305c){_0x305818['emit'](_0x575e0b,_0x79305c);};}function removeListener(_0x23c8e2,_0x4d7953){return function(){WhatsappInteractionEvents[_0x4812('0x3')](_0x23c8e2,_0x4d7953);};}exports[_0x4812('0x4')]=function(_0x44b109){for(var _0xe05ee7=0x0,_0x2e5f29=events[_0x4812('0x5')];_0xe05ee7<_0x2e5f29;_0xe05ee7++){var _0x4e9dec=events[_0xe05ee7];var _0x34c059=createListener(_0x4812('0x6')+_0x4e9dec,_0x44b109);WhatsappInteractionEvents['on'](_0x4e9dec,_0x34c059);}};
\ No newline at end of file
+var _0x2852=['./whatsappInteraction.events','save','remove','update','register','length','whatsappInteraction:'];(function(_0x1faca9,_0x598962){var _0x5df1af=function(_0xcfb105){while(--_0xcfb105){_0x1faca9['push'](_0x1faca9['shift']());}};_0x5df1af(++_0x598962);}(_0x2852,0x157));var _0x2285=function(_0x24d843,_0x254c58){_0x24d843=_0x24d843-0x0;var _0x3189f5=_0x2852[_0x24d843];return _0x3189f5;};'use strict';var WhatsappInteractionEvents=require(_0x2285('0x0'));var events=[_0x2285('0x1'),_0x2285('0x2'),_0x2285('0x3')];function createListener(_0x27c6f3,_0x3bcddb){return function(_0x56988e){_0x3bcddb['emit'](_0x27c6f3,_0x56988e);};}function removeListener(_0x4ac43b,_0x494099){return function(){WhatsappInteractionEvents['removeListener'](_0x4ac43b,_0x494099);};}exports[_0x2285('0x4')]=function(_0x28fd42){for(var _0x1ae162=0x0,_0x2f39c2=events[_0x2285('0x5')];_0x1ae162<_0x2f39c2;_0x1ae162++){var _0x259541=events[_0x1ae162];var _0x92fe0b=createListener(_0x2285('0x6')+_0x259541,_0x28fd42);WhatsappInteractionEvents['on'](_0x259541,_0x92fe0b);}};
\ No newline at end of file
index ed3c18b..35e98c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fd=['post','tracked','whatsapp','whatsappmessage:create','create','put','update','/:id/accept','accept','reject','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc7fd,0x1f2));var _0xdc7f=function(_0x4d293c,_0x29e84a){_0x4d293c=_0x4d293c-0x0;var _0x199c66=_0xc7fd[_0x4d293c];return _0x199c66;};'use strict';var multer=require('multer');var util=require(_0xdc7f('0x0'));var path=require('path');var timeout=require(_0xdc7f('0x1'));var express=require(_0xdc7f('0x2'));var router=express[_0xdc7f('0x3')]();var fs_extra=require(_0xdc7f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdc7f('0x5'));var config=require(_0xdc7f('0x6'));var controller=require(_0xdc7f('0x7'));router[_0xdc7f('0x8')]('/',auth['isAuthenticated'](),controller[_0xdc7f('0x9')]);router[_0xdc7f('0x8')](_0xdc7f('0xa'),auth[_0xdc7f('0xb')](),controller[_0xdc7f('0xc')]);router[_0xdc7f('0x8')](_0xdc7f('0xd'),auth[_0xdc7f('0xb')](),controller[_0xdc7f('0xe')]);router[_0xdc7f('0xf')]('/',auth['isAuthenticated'](),interaction[_0xdc7f('0x10')](_0xdc7f('0x11'),_0xdc7f('0x12')),controller[_0xdc7f('0x13')]);router[_0xdc7f('0xf')]('/:id/status',controller['status']);router[_0xdc7f('0x14')](_0xdc7f('0xd'),auth[_0xdc7f('0xb')](),controller[_0xdc7f('0x15')]);router[_0xdc7f('0x14')](_0xdc7f('0x16'),auth[_0xdc7f('0xb')](),controller[_0xdc7f('0x17')]);router[_0xdc7f('0x14')]('/:id/reject',auth[_0xdc7f('0xb')](),controller[_0xdc7f('0x18')]);router[_0xdc7f('0x19')](_0xdc7f('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xdc7f('0x1a')]=router;
\ No newline at end of file
+var _0xe137=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','/describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x3f1b6d,_0x5df4c6){var _0x440bc9=function(_0x4b2539){while(--_0x4b2539){_0x3f1b6d['push'](_0x3f1b6d['shift']());}};_0x440bc9(++_0x5df4c6);}(_0xe137,0x108));var _0x7e13=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xe137[_0x1f9f37];return _0x21c080;};'use strict';var multer=require(_0x7e13('0x0'));var util=require(_0x7e13('0x1'));var path=require(_0x7e13('0x2'));var timeout=require(_0x7e13('0x3'));var express=require(_0x7e13('0x4'));var router=express['Router']();var fs_extra=require(_0x7e13('0x5'));var auth=require(_0x7e13('0x6'));var interaction=require(_0x7e13('0x7'));var config=require(_0x7e13('0x8'));var controller=require(_0x7e13('0x9'));router[_0x7e13('0xa')]('/',auth[_0x7e13('0xb')](),controller['index']);router[_0x7e13('0xa')](_0x7e13('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x7e13('0xa')](_0x7e13('0xd'),auth['isAuthenticated'](),controller[_0x7e13('0xe')]);router[_0x7e13('0xf')]('/',auth[_0x7e13('0xb')](),interaction[_0x7e13('0x10')](_0x7e13('0x11'),_0x7e13('0x12')),controller['create']);router['post']('/:id/status',controller['status']);router[_0x7e13('0x13')](_0x7e13('0xd'),auth[_0x7e13('0xb')](),controller[_0x7e13('0x14')]);router[_0x7e13('0x13')](_0x7e13('0x15'),auth[_0x7e13('0xb')](),controller['accept']);router[_0x7e13('0x13')](_0x7e13('0x16'),auth['isAuthenticated'](),controller[_0x7e13('0x17')]);router[_0x7e13('0x18')]('/:id',auth[_0x7e13('0xb')](),controller[_0x7e13('0x19')]);module[_0x7e13('0x1a')]=router;
\ No newline at end of file
index f9c0805..cef0f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c0=['DATE','sequelize','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x10ffe4,_0x58b1c2){var _0x51dc43=function(_0x2ec0c6){while(--_0x2ec0c6){_0x10ffe4['push'](_0x10ffe4['shift']());}};_0x51dc43(++_0x58b1c2);}(_0x98c0,0x1f1));var _0x098c=function(_0x4d8a44,_0x698ce7){_0x4d8a44=_0x4d8a44-0x0;var _0x221171=_0x98c0[_0x4d8a44];return _0x221171;};'use strict';var Sequelize=require(_0x098c('0x0'));module['exports']={'body':{'type':Sequelize[_0x098c('0x1')](_0x098c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x098c('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x098c('0x4')]('in','out'),'defaultValue':_0x098c('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x098c('0x6')](0xbe)},'phone':{'type':Sequelize[_0x098c('0x6')]},'readAt':{'type':Sequelize[_0x098c('0x7')]},'secret':{'type':Sequelize[_0x098c('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x098c('0x6')]},'providerResponse':{'type':Sequelize[_0x098c('0x1')]}};
\ No newline at end of file
+var _0x56e6=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize'];(function(_0x25dbd4,_0x359199){var _0x55ca7e=function(_0x4cafad){while(--_0x4cafad){_0x25dbd4['push'](_0x25dbd4['shift']());}};_0x55ca7e(++_0x359199);}(_0x56e6,0x6b));var _0x656e=function(_0x2f0581,_0x3fe95c){_0x2f0581=_0x2f0581-0x0;var _0x472be8=_0x56e6[_0x2f0581];return _0x472be8;};'use strict';var Sequelize=require(_0x656e('0x0'));module[_0x656e('0x1')]={'body':{'type':Sequelize[_0x656e('0x2')](_0x656e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x656e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x656e('0x5')]('in','out'),'defaultValue':_0x656e('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x656e('0x7')](0xbe)},'phone':{'type':Sequelize[_0x656e('0x7')]},'readAt':{'type':Sequelize[_0x656e('0x8')]},'secret':{'type':Sequelize[_0x656e('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x656e('0x7')]},'providerResponse':{'type':Sequelize[_0x656e('0x2')]}};
\ No newline at end of file
index 7294b91..cb6209b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc080=['register','jayson/promise','client','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','WhatsappMessage','findAll','create','body','find','params','describe','../../config/logger','whatsapp-interactions','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','Sequelize','QueryTypes','contact','User','agent','fullname','email','internal','SIP/%s','channel','event','EventManager','acceptmessage','interaction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','ContactId','sequelize','SELECT','interface','motionChannel','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','MessageStatus','twilio','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter'];(function(_0x56151c,_0x515210){var _0x14fe7d=function(_0x2f8c1e){while(--_0x2f8c1e){_0x56151c['push'](_0x56151c['shift']());}};_0x14fe7d(++_0x515210);}(_0xc080,0x6e));var _0x0c08=function(_0x4d9477,_0x530c68){_0x4d9477=_0x4d9477-0x0;var _0x593897=_0xc080[_0x4d9477];return _0x593897;};'use strict';var emlformat=require(_0x0c08('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0c08('0x1'));var jsonpatch=require(_0x0c08('0x2'));var rp=require(_0x0c08('0x3'));var moment=require(_0x0c08('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0c08('0x5'));var path=require(_0x0c08('0x6'));var sox=require(_0x0c08('0x7'));var csv=require('to-csv');var ejs=require(_0x0c08('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0c08('0x9'));var squel=require(_0x0c08('0xa'));var crypto=require(_0x0c08('0xb'));var jsforce=require(_0x0c08('0xc'));var deskjs=require(_0x0c08('0xd'));var toCsv=require(_0x0c08('0xe'));var querystring=require(_0x0c08('0xf'));var Papa=require(_0x0c08('0x10'));var Redis=require(_0x0c08('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0c08('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0c08('0x13'));var logger=require('../../config/logger')(_0x0c08('0x14'));var utils=require(_0x0c08('0x15'));var config=require(_0x0c08('0x16'));var licenseUtil=require(_0x0c08('0x17'));var db=require(_0x0c08('0x18'))['db'];config['redis']=_[_0x0c08('0x19')](config[_0x0c08('0x1a')],{'host':_0x0c08('0x1b'),'port':0x18eb});var socket=require(_0x0c08('0x1c'))(new Redis(config['redis']));require('./whatsappMessage.socket')[_0x0c08('0x1d')](socket);var jayson=require(_0x0c08('0x1e'));var client=jayson[_0x0c08('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x0c08('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x419a53,_0x347efc,_0x37c926,_0xd32bb3){return new BPromise(function(_0x318ea4,_0x160a27){var _0x4ae5e9=_0xd32bb3||client;return _0x4ae5e9[_0x0c08('0x20')](_0x419a53,_0x37c926)['then'](function(_0x31390c){logger[_0x0c08('0x21')](_0x0c08('0x22'),_0x347efc,_0x0c08('0x23'));logger[_0x0c08('0x24')](_0x0c08('0x25'),_0x347efc,_0x0c08('0x23'),JSON[_0x0c08('0x26')](_0x31390c));if(_0x31390c[_0x0c08('0x27')]){if(_0x31390c[_0x0c08('0x27')][_0x0c08('0x28')]===0x1f4){logger[_0x0c08('0x27')](_0x0c08('0x22'),_0x347efc,_0x31390c[_0x0c08('0x27')][_0x0c08('0x29')]);return _0x160a27(_0x31390c[_0x0c08('0x27')]['message']);}logger[_0x0c08('0x27')](_0x0c08('0x22'),_0x347efc,_0x31390c[_0x0c08('0x27')][_0x0c08('0x29')]);return _0x318ea4(_0x31390c[_0x0c08('0x27')][_0x0c08('0x29')]);}else{logger['info'](_0x0c08('0x22'),_0x347efc,_0x0c08('0x23'));_0x318ea4(_0x31390c[_0x0c08('0x2a')]['message']);}})[_0x0c08('0x2b')](function(_0x30a777){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x347efc,_0x30a777);_0x160a27(_0x30a777);});});}function respondWithStatusCode(_0xf671fd,_0x445b7a){_0x445b7a=_0x445b7a||0xcc;return function(_0x5dc480){if(_0x5dc480){return _0xf671fd[_0x0c08('0x2c')](_0x445b7a);}return _0xf671fd[_0x0c08('0x2d')](_0x445b7a)['end']();};}function respondWithResult(_0xc32640,_0x211ac0){_0x211ac0=_0x211ac0||0xc8;return function(_0x32a833){if(_0x32a833){return _0xc32640[_0x0c08('0x2d')](_0x211ac0)['json'](_0x32a833);}};}function respondWithFilteredResult(_0x2cc17e,_0x424e89){return function(_0x430be1){if(_0x430be1){var _0x1cfb1d=typeof _0x424e89[_0x0c08('0x2e')]===_0x0c08('0x2f')&&typeof _0x424e89[_0x0c08('0x30')]==='undefined';var _0x1d2967=_0x430be1[_0x0c08('0x31')];var _0x18a7e2=_0x1cfb1d?0x0:_0x424e89[_0x0c08('0x2e')];var _0x5b6d50=_0x1cfb1d?_0x430be1[_0x0c08('0x31')]:_0x424e89['offset']+_0x424e89['limit'];var _0x1b177c;if(_0x5b6d50>=_0x1d2967){_0x5b6d50=_0x1d2967;_0x1b177c=0xc8;}else{_0x1b177c=0xce;}_0x2cc17e[_0x0c08('0x2d')](_0x1b177c);return _0x2cc17e[_0x0c08('0x32')](_0x0c08('0x33'),_0x18a7e2+'-'+_0x5b6d50+'/'+_0x1d2967)[_0x0c08('0x34')](_0x430be1);}return null;};}function patchUpdates(_0x37eabc){return function(_0x4fb95f){try{jsonpatch[_0x0c08('0x35')](_0x4fb95f,_0x37eabc,!![]);}catch(_0x1f71a2){return BPromise[_0x0c08('0x36')](_0x1f71a2);}return _0x4fb95f[_0x0c08('0x37')]();};}function saveUpdates(_0x51c74b,_0x1c166a){return function(_0x1a8fc9){if(_0x1a8fc9){return _0x1a8fc9[_0x0c08('0x38')](_0x51c74b)[_0x0c08('0x39')](function(_0x433b72){return _0x433b72;});}return null;};}function removeEntity(_0x103a38,_0x413bf9){return function(_0x24c792){if(_0x24c792){return _0x24c792[_0x0c08('0x3a')]()['then'](function(){_0x103a38['status'](0xcc)[_0x0c08('0x3b')]();});}};}function handleEntityNotFound(_0xa3c341,_0x521cad){return function(_0x35aa1e){if(!_0x35aa1e){_0xa3c341[_0x0c08('0x2c')](0x194);}return _0x35aa1e;};}function handleError(_0x2cd67a,_0x10a451){_0x10a451=_0x10a451||0x1f4;return function(_0x356c5d){logger[_0x0c08('0x27')](_0x356c5d[_0x0c08('0x3c')]);if(_0x356c5d['name']){delete _0x356c5d[_0x0c08('0x3d')];}_0x2cd67a[_0x0c08('0x2d')](_0x10a451)[_0x0c08('0x3e')](_0x356c5d);};}exports[_0x0c08('0x3f')]=function(_0x3afa22,_0xca6c34){var _0x3bf857={},_0x155bf3={},_0x303d5e={'count':0x0,'rows':[]};var _0x13420f=_['map'](db['WhatsappMessage'][_0x0c08('0x40')],function(_0x4d330a){return{'name':_0x4d330a['fieldName'],'type':_0x4d330a[_0x0c08('0x41')][_0x0c08('0x42')]};});_0x155bf3[_0x0c08('0x43')]=_[_0x0c08('0x44')](_0x13420f,_0x0c08('0x3d'));_0x155bf3[_0x0c08('0x45')]=_[_0x0c08('0x46')](_0x3afa22['query']);_0x155bf3[_0x0c08('0x47')]=_['intersection'](_0x155bf3[_0x0c08('0x43')],_0x155bf3[_0x0c08('0x45')]);_0x3bf857[_0x0c08('0x48')]=_[_0x0c08('0x49')](_0x155bf3[_0x0c08('0x43')],qs[_0x0c08('0x4a')](_0x3afa22[_0x0c08('0x45')][_0x0c08('0x4a')]));_0x3bf857['attributes']=_0x3bf857[_0x0c08('0x48')][_0x0c08('0x4b')]?_0x3bf857[_0x0c08('0x48')]:_0x155bf3[_0x0c08('0x43')];if(!_0x3afa22['query'][_0x0c08('0x4c')](_0x0c08('0x4d'))){_0x3bf857[_0x0c08('0x30')]=qs[_0x0c08('0x30')](_0x3afa22[_0x0c08('0x45')][_0x0c08('0x30')]);_0x3bf857[_0x0c08('0x2e')]=qs[_0x0c08('0x2e')](_0x3afa22[_0x0c08('0x45')]['offset']);}_0x3bf857[_0x0c08('0x4e')]=qs[_0x0c08('0x4f')](_0x3afa22[_0x0c08('0x45')][_0x0c08('0x4f')]);_0x3bf857['where']=qs['filters'](_[_0x0c08('0x50')](_0x3afa22[_0x0c08('0x45')],_0x155bf3[_0x0c08('0x47')]),_0x13420f);if(_0x3afa22['query'][_0x0c08('0x51')]){_0x3bf857[_0x0c08('0x52')]=_['merge'](_0x3bf857[_0x0c08('0x52')],{'$or':_[_0x0c08('0x44')](_0x13420f,function(_0x22308e){if(_0x22308e[_0x0c08('0x41')]!==_0x0c08('0x53')){var _0x4c1e00={};_0x4c1e00[_0x22308e[_0x0c08('0x3d')]]={'$like':'%'+_0x3afa22[_0x0c08('0x45')][_0x0c08('0x51')]+'%'};return _0x4c1e00;}})});}_0x3bf857=_[_0x0c08('0x54')]({},_0x3bf857,_0x3afa22[_0x0c08('0x55')]);var _0x5e262d={'where':_0x3bf857[_0x0c08('0x52')]};return db[_0x0c08('0x56')][_0x0c08('0x31')](_0x5e262d)['then'](function(_0x51702a){_0x303d5e[_0x0c08('0x31')]=_0x51702a;if(_0x3afa22[_0x0c08('0x45')]['includeAll']){_0x3bf857['include']=[{'all':!![]}];}return db[_0x0c08('0x56')][_0x0c08('0x57')](_0x3bf857);})['then'](function(_0x12aab9){_0x303d5e['rows']=_0x12aab9;return _0x303d5e;})[_0x0c08('0x39')](respondWithFilteredResult(_0xca6c34,_0x3bf857))[_0x0c08('0x2b')](handleError(_0xca6c34,null));};exports['show']=function(_0x3b642f,_0x4820ab){var _0x9d4bc5={'raw':!![],'where':{'id':_0x3b642f['params']['id']}},_0x4fad22={};_0x4fad22[_0x0c08('0x43')]=_['keys'](db['WhatsappMessage'][_0x0c08('0x40')]);_0x4fad22[_0x0c08('0x45')]=_[_0x0c08('0x46')](_0x3b642f[_0x0c08('0x45')]);_0x4fad22['filters']=_[_0x0c08('0x49')](_0x4fad22[_0x0c08('0x43')],_0x4fad22[_0x0c08('0x45')]);_0x9d4bc5['attributes']=_[_0x0c08('0x49')](_0x4fad22['model'],qs[_0x0c08('0x4a')](_0x3b642f[_0x0c08('0x45')][_0x0c08('0x4a')]));_0x9d4bc5['attributes']=_0x9d4bc5['attributes']['length']?_0x9d4bc5[_0x0c08('0x48')]:_0x4fad22['model'];if(_0x3b642f[_0x0c08('0x45')]['includeAll']){_0x9d4bc5['include']=[{'all':!![]}];}_0x9d4bc5=_[_0x0c08('0x54')]({},_0x9d4bc5,_0x3b642f[_0x0c08('0x55')]);return db[_0x0c08('0x56')]['find'](_0x9d4bc5)[_0x0c08('0x39')](handleEntityNotFound(_0x4820ab,null))[_0x0c08('0x39')](respondWithResult(_0x4820ab,null))[_0x0c08('0x2b')](handleError(_0x4820ab,null));};exports['create']=function(_0x40e837,_0x32e751){return db[_0x0c08('0x56')][_0x0c08('0x58')](_0x40e837[_0x0c08('0x59')],{})['then'](respondWithResult(_0x32e751,0xc9))[_0x0c08('0x2b')](handleError(_0x32e751,null));};exports[_0x0c08('0x38')]=function(_0x434840,_0x1fc113){if(_0x434840[_0x0c08('0x59')]['id']){delete _0x434840['body']['id'];}return db[_0x0c08('0x56')][_0x0c08('0x5a')]({'where':{'id':_0x434840['params']['id']}})['then'](handleEntityNotFound(_0x1fc113,null))[_0x0c08('0x39')](saveUpdates(_0x434840[_0x0c08('0x59')],null))['then'](respondWithResult(_0x1fc113,null))[_0x0c08('0x2b')](handleError(_0x1fc113,null));};exports[_0x0c08('0x3a')]=function(_0x558bf8,_0x5b18ef){return db[_0x0c08('0x56')][_0x0c08('0x5a')]({'where':{'id':_0x558bf8[_0x0c08('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5b18ef,null))['then'](removeEntity(_0x5b18ef,null))[_0x0c08('0x2b')](handleError(_0x5b18ef,null));};exports[_0x0c08('0x5c')]=function(_0x420cc8,_0x219dc4){return db[_0x0c08('0x56')][_0x0c08('0x5c')]()[_0x0c08('0x39')](respondWithResult(_0x219dc4,null))['catch'](handleError(_0x219dc4,null));};var interaction_log=require(_0x0c08('0x5d'))(_0x0c08('0x5e'));exports['accept']=function(_0x315c83,_0x32acd6,_0x4f671b){var _0x4c731d={'agent':{},'channel':_0x0c08('0x5f')};if(_0x315c83[_0x0c08('0x59')]['id']){delete _0x315c83[_0x0c08('0x59')]['id'];}_0x315c83['body'][_0x0c08('0x60')]=!![];_0x315c83['body'][_0x0c08('0x61')]=moment()[_0x0c08('0x62')](_0x0c08('0x63'));_0x315c83[_0x0c08('0x59')][_0x0c08('0x64')]=_0x315c83['body']['UserId']||_0x315c83['user']['id'];_0x4c731d['agent']['id']=_0x315c83[_0x0c08('0x59')]['UserId'];return db['WhatsappMessage'][_0x0c08('0x5a')]({'where':{'id':_0x315c83['params']['id'],'UserId':null}})[_0x0c08('0x39')](handleEntityNotFound(_0x32acd6,null))['then'](saveUpdates(_0x315c83[_0x0c08('0x59')],null))[_0x0c08('0x39')](function(_0x3afe64){if(_0x3afe64){_0x4c731d[_0x0c08('0x29')]=_0x3afe64[_0x0c08('0x65')]({'plain':!![]});return db['WhatsappInteraction'][_0x0c08('0x5a')]({'where':{'id':_0x3afe64['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x32acd6,null))[_0x0c08('0x39')](function(_0x4218ca){if(_0x4218ca){return _0x4218ca[_0x0c08('0x38')]({'UserId':_0x315c83[_0x0c08('0x59')][_0x0c08('0x64')],'read1stAt':_['isNil'](_0x4218ca['read1stAt'])?moment()[_0x0c08('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x1ec5a6){if(_0x1ec5a6){_0x4c731d['interaction']=_0x1ec5a6[_0x0c08('0x65')]({'plain':!![]});interaction_log[_0x0c08('0x21')](_0x0c08('0x66'),_0x315c83['user']['id'],_0x315c83[_0x0c08('0x67')]['name'],_0x315c83['user'][_0x0c08('0x68')],_0x4c731d['interaction']['id'],_0x315c83[_0x0c08('0x59')]?JSON[_0x0c08('0x26')](_0x315c83[_0x0c08('0x59')]):'null');return respondWithRpcPromise(_0x0c08('0x69'),_0x0c08('0x6a'),_0x4c731d);}return null;})[_0x0c08('0x39')](function(_0x52a8f2){var _0x339ee4='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x52a8f2[_0x0c08('0x29')]['ContactId'];return db['sequelize'][_0x0c08('0x45')](_0x339ee4,{'type':db[_0x0c08('0x6b')][_0x0c08('0x6c')]['SELECT'],'raw':!![]})[_0x0c08('0x39')](function(_0x52cf63){return _0x52cf63;});})['then'](function(_0x2e4e3e){if(_0x2e4e3e){_0x4c731d[_0x0c08('0x29')][_0x0c08('0x6d')]=_0x2e4e3e[0x0];if(!_0x315c83[_0x0c08('0x59')][_0x0c08('0x64')])return;return db[_0x0c08('0x6e')][_0x0c08('0x5a')]({'where':{'id':_0x315c83[_0x0c08('0x59')]['UserId'],'role':_0x0c08('0x6f')},'attributes':['id',_0x0c08('0x3d'),_0x0c08('0x70'),_0x0c08('0x71'),_0x0c08('0x72')],'raw':!![]});}return null;})[_0x0c08('0x39')](function(_0x4f0675){if(!_0x4f0675)return null;_0x4c731d['message'][_0x0c08('0x6f')]=_0x4f0675;return _0x4c731d;})[_0x0c08('0x39')](function(_0x119923){if(_0x119923){if(_0x315c83['body']['manual']){_0x4c731d[_0x0c08('0x29')]['interface']=util[_0x0c08('0x62')](_0x0c08('0x73'),_0x315c83[_0x0c08('0x67')][_0x0c08('0x3d')]);_0x4c731d[_0x0c08('0x29')]['channel']=_0x4c731d[_0x0c08('0x74')];_0x4c731d[_0x0c08('0x29')]['motionChannel']=_0x4c731d[_0x0c08('0x74')];_0x4c731d[_0x0c08('0x29')][_0x0c08('0x75')]='accept';return respondWithRpcPromise('EventManager',_0x0c08('0x76'),{'event':_0x0c08('0x77'),'message':_0x4c731d['message']},client9002)[_0x0c08('0x39')](function(){return _0x4c731d;});}return _0x4c731d;}return null;})[_0x0c08('0x39')](respondWithResult(_0x32acd6,null))[_0x0c08('0x2b')](handleError(_0x32acd6,null));};var interaction_log=require(_0x0c08('0x5d'))(_0x0c08('0x5e'));exports['reject']=function(_0x1b4361,_0x32d948,_0x4bcef8){var _0x2c6e78={'agent':{},'channel':_0x0c08('0x5f')};if(_0x1b4361[_0x0c08('0x59')]['id']){delete _0x1b4361[_0x0c08('0x59')]['id'];}_0x1b4361['body'][_0x0c08('0x64')]=_0x1b4361['body']['UserId']||_0x1b4361[_0x0c08('0x67')]['id'];_0x2c6e78[_0x0c08('0x6f')]['id']=_0x1b4361['body'][_0x0c08('0x64')];return db[_0x0c08('0x56')][_0x0c08('0x5a')]({'where':{'id':_0x1b4361[_0x0c08('0x5b')]['id'],'UserId':null}})[_0x0c08('0x39')](handleEntityNotFound(_0x32d948,null))[_0x0c08('0x39')](function(_0x18fcd4){if(_0x18fcd4){_0x2c6e78[_0x0c08('0x29')]=_0x18fcd4[_0x0c08('0x65')]({'plain':!![]});return db['WhatsappInteraction'][_0x0c08('0x5a')]({'where':{'id':_0x18fcd4['WhatsappInteractionId']}});}return null;})[_0x0c08('0x39')](handleEntityNotFound(_0x32d948,null))[_0x0c08('0x39')](function(_0x11e15a){if(_0x11e15a){_0x2c6e78[_0x0c08('0x78')]=_0x11e15a['get']({'plain':!![]});interaction_log['info'](_0x0c08('0x79'),_0x1b4361[_0x0c08('0x67')]['id'],_0x1b4361[_0x0c08('0x67')][_0x0c08('0x3d')],_0x1b4361[_0x0c08('0x67')][_0x0c08('0x68')],_0x2c6e78[_0x0c08('0x78')]['id'],_0x1b4361[_0x0c08('0x59')]?JSON[_0x0c08('0x26')](_0x1b4361[_0x0c08('0x59')]):_0x0c08('0x7a'));return respondWithRpcPromise(_0x0c08('0x7b'),_0x0c08('0x7c'),_0x2c6e78);}return null;})[_0x0c08('0x39')](function(_0x14966c){var _0x16e849='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x14966c[_0x0c08('0x29')][_0x0c08('0x7d')];return db[_0x0c08('0x7e')][_0x0c08('0x45')](_0x16e849,{'type':db[_0x0c08('0x6b')][_0x0c08('0x6c')][_0x0c08('0x7f')],'raw':!![]})[_0x0c08('0x39')](function(_0x1d7cb9){return _0x1d7cb9;});})[_0x0c08('0x39')](function(_0x14aa4b){if(_0x14aa4b){_0x2c6e78['message'][_0x0c08('0x6d')]=_0x14aa4b[0x0];if(!_0x1b4361[_0x0c08('0x59')]['UserId'])return;return db['User'][_0x0c08('0x5a')]({'where':{'id':_0x1b4361[_0x0c08('0x59')][_0x0c08('0x64')],'role':_0x0c08('0x6f')},'attributes':['id',_0x0c08('0x3d'),_0x0c08('0x70'),'email',_0x0c08('0x72')],'raw':!![]});}return null;})[_0x0c08('0x39')](function(_0x7b7c7e){if(!_0x7b7c7e)return null;_0x2c6e78[_0x0c08('0x29')][_0x0c08('0x6f')]=_0x7b7c7e;return _0x2c6e78;})[_0x0c08('0x39')](function(_0x5b5b44){if(_0x5b5b44){_0x5b5b44['message'][_0x0c08('0x80')]=util[_0x0c08('0x62')]('SIP/%s',_0x1b4361[_0x0c08('0x67')]['name']);_0x5b5b44[_0x0c08('0x29')][_0x0c08('0x74')]=_0x2c6e78[_0x0c08('0x74')];_0x5b5b44['message'][_0x0c08('0x81')]=_0x2c6e78['channel'];_0x5b5b44['message']['event']=_0x0c08('0x36');respondWithRpcPromise('EventManager',_0x0c08('0x76'),{'event':_0x0c08('0x82'),'message':_0x5b5b44[_0x0c08('0x29')]},client9002);return _0x2c6e78;}return null;})[_0x0c08('0x39')](respondWithResult(_0x32d948,null))[_0x0c08('0x2b')](handleError(_0x32d948,null));};exports[_0x0c08('0x2d')]=function(_0x1c7a4f,_0x2a5835,_0x3f5942){if(_0x1c7a4f['body']['id']){delete _0x1c7a4f[_0x0c08('0x59')]['id'];}var _0xb17777;return db[_0x0c08('0x56')][_0x0c08('0x5a')]({'where':{'id':_0x1c7a4f[_0x0c08('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2a5835,null))[_0x0c08('0x39')](function(_0x6e5c4c){if(_0x6e5c4c){_0xb17777=_0x6e5c4c;return db[_0x0c08('0x83')]['find']({'where':{'id':_0x6e5c4c[_0x0c08('0x84')]}});}})[_0x0c08('0x39')](handleEntityNotFound(_0x2a5835,null))[_0x0c08('0x39')](function(_0x156726){if(_0x156726){logger['debug'](_0x0c08('0x85'),_0x0c08('0x2d'),_0x0c08('0x86'),_0x156726['type'],util[_0x0c08('0x87')](_0x1c7a4f[_0x0c08('0x59')],{'showHidden':![],'depth':null}));switch(_0x156726[_0x0c08('0x41')]){case'twilio':if(_0x1c7a4f[_0x0c08('0x59')]['MessageSid']&&_0x1c7a4f[_0x0c08('0x59')][_0x0c08('0x88')]===_0xb17777['messageId']&&_0x1c7a4f[_0x0c08('0x59')]['MessageStatus']&&_0x1c7a4f[_0x0c08('0x59')][_0x0c08('0x89')]===_0x0c08('0x60')){return _0xb17777[_0x0c08('0x38')]({'read':!![]});}else{logger[_0x0c08('0x27')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x0c08('0x2d'),_0x0c08('0x8a'),util[_0x0c08('0x87')](_0x1c7a4f[_0x0c08('0x59')],{'showHidden':![],'depth':null}));}break;}return _0xb17777;}})['then'](respondWithResult(_0x2a5835,null))[_0x0c08('0x2b')](handleError(_0x2a5835,null));};
\ No newline at end of file
+var _0xeef1=['isNil','YYYY-MM-DD\x20HH:mm:ss','get','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','../../config/logger','reject','interaction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','rejectmessage','WhatsappAccount','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\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','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','stack','name','send','index','WhatsappMessage','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','nolimit','order','sort','where','merge','filter','options','includeAll','include','findAll','show','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','agent','WhatsappInteraction','WhatsappInteractionId'];(function(_0x54dfbb,_0x55338d){var _0x23ca1a=function(_0x58c862){while(--_0x58c862){_0x54dfbb['push'](_0x54dfbb['shift']());}};_0x23ca1a(++_0x55338d);}(_0xeef1,0x1cc));var _0x1eef=function(_0x3e9503,_0x2deda6){_0x3e9503=_0x3e9503-0x0;var _0x1404ec=_0xeef1[_0x3e9503];return _0x1404ec;};'use strict';var emlformat=require(_0x1eef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1eef('0x1'));var jsonpatch=require(_0x1eef('0x2'));var rp=require(_0x1eef('0x3'));var moment=require(_0x1eef('0x4'));var BPromise=require(_0x1eef('0x5'));var Mustache=require(_0x1eef('0x6'));var util=require(_0x1eef('0x7'));var path=require(_0x1eef('0x8'));var sox=require(_0x1eef('0x9'));var csv=require(_0x1eef('0xa'));var ejs=require(_0x1eef('0xb'));var fs=require('fs');var fs_extra=require(_0x1eef('0xc'));var _=require(_0x1eef('0xd'));var squel=require('squel');var crypto=require(_0x1eef('0xe'));var jsforce=require(_0x1eef('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1eef('0xa'));var querystring=require('querystring');var Papa=require(_0x1eef('0x10'));var Redis=require(_0x1eef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1eef('0x12'));var as=require(_0x1eef('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1eef('0x14'));var utils=require(_0x1eef('0x15'));var config=require(_0x1eef('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1eef('0x17'))['db'];config[_0x1eef('0x18')]=_[_0x1eef('0x19')](config[_0x1eef('0x18')],{'host':_0x1eef('0x1a'),'port':0x18eb});var socket=require(_0x1eef('0x1b'))(new Redis(config[_0x1eef('0x18')]));require(_0x1eef('0x1c'))[_0x1eef('0x1d')](socket);var jayson=require(_0x1eef('0x1e'));var client=jayson[_0x1eef('0x1f')][_0x1eef('0x20')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3b907c,_0x388992,_0x53b3cc,_0xd88da5){return new BPromise(function(_0x4cfc03,_0x1774c3){var _0x2b21fb=_0xd88da5||client;return _0x2b21fb['request'](_0x3b907c,_0x53b3cc)[_0x1eef('0x21')](function(_0x416f98){logger[_0x1eef('0x22')](_0x1eef('0x23'),_0x388992,_0x1eef('0x24'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x388992,_0x1eef('0x24'),JSON[_0x1eef('0x25')](_0x416f98));if(_0x416f98[_0x1eef('0x26')]){if(_0x416f98[_0x1eef('0x26')][_0x1eef('0x27')]===0x1f4){logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x416f98[_0x1eef('0x26')][_0x1eef('0x28')]);return _0x1774c3(_0x416f98[_0x1eef('0x26')]['message']);}logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x416f98[_0x1eef('0x26')][_0x1eef('0x28')]);return _0x4cfc03(_0x416f98['error'][_0x1eef('0x28')]);}else{logger[_0x1eef('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x388992,_0x1eef('0x24'));_0x4cfc03(_0x416f98['result'][_0x1eef('0x28')]);}})[_0x1eef('0x29')](function(_0x309ce9){logger[_0x1eef('0x26')](_0x1eef('0x23'),_0x388992,_0x309ce9);_0x1774c3(_0x309ce9);});});}function respondWithStatusCode(_0x55b30f,_0x251411){_0x251411=_0x251411||0xcc;return function(_0x101c30){if(_0x101c30){return _0x55b30f['sendStatus'](_0x251411);}return _0x55b30f[_0x1eef('0x2a')](_0x251411)[_0x1eef('0x2b')]();};}function respondWithResult(_0x3c4ffe,_0x317660){_0x317660=_0x317660||0xc8;return function(_0x1926ac){if(_0x1926ac){return _0x3c4ffe[_0x1eef('0x2a')](_0x317660)['json'](_0x1926ac);}};}function respondWithFilteredResult(_0x1d511d,_0x325e68){return function(_0x3e7938){if(_0x3e7938){var _0x2ab9e1=typeof _0x325e68[_0x1eef('0x2c')]===_0x1eef('0x2d')&&typeof _0x325e68['limit']==='undefined';var _0x55905b=_0x3e7938[_0x1eef('0x2e')];var _0x4e2de4=_0x2ab9e1?0x0:_0x325e68[_0x1eef('0x2c')];var _0x265d72=_0x2ab9e1?_0x3e7938[_0x1eef('0x2e')]:_0x325e68[_0x1eef('0x2c')]+_0x325e68[_0x1eef('0x2f')];var _0x38cf7a;if(_0x265d72>=_0x55905b){_0x265d72=_0x55905b;_0x38cf7a=0xc8;}else{_0x38cf7a=0xce;}_0x1d511d[_0x1eef('0x2a')](_0x38cf7a);return _0x1d511d[_0x1eef('0x30')](_0x1eef('0x31'),_0x4e2de4+'-'+_0x265d72+'/'+_0x55905b)[_0x1eef('0x32')](_0x3e7938);}return null;};}function patchUpdates(_0x16abe9){return function(_0x2befea){try{jsonpatch[_0x1eef('0x33')](_0x2befea,_0x16abe9,!![]);}catch(_0x4149b1){return BPromise['reject'](_0x4149b1);}return _0x2befea[_0x1eef('0x34')]();};}function saveUpdates(_0x17d102,_0xf0825c){return function(_0x2f91b9){if(_0x2f91b9){return _0x2f91b9[_0x1eef('0x35')](_0x17d102)[_0x1eef('0x21')](function(_0x160846){return _0x160846;});}return null;};}function removeEntity(_0x1b4acf,_0x1e417f){return function(_0x1ea851){if(_0x1ea851){return _0x1ea851[_0x1eef('0x36')]()[_0x1eef('0x21')](function(){_0x1b4acf['status'](0xcc)[_0x1eef('0x2b')]();});}};}function handleEntityNotFound(_0x437402,_0xe02807){return function(_0x1d78bd){if(!_0x1d78bd){_0x437402['sendStatus'](0x194);}return _0x1d78bd;};}function handleError(_0x3bdb05,_0x15ecec){_0x15ecec=_0x15ecec||0x1f4;return function(_0x406c0a){logger[_0x1eef('0x26')](_0x406c0a[_0x1eef('0x37')]);if(_0x406c0a['name']){delete _0x406c0a[_0x1eef('0x38')];}_0x3bdb05[_0x1eef('0x2a')](_0x15ecec)[_0x1eef('0x39')](_0x406c0a);};}exports[_0x1eef('0x3a')]=function(_0x3b7256,_0x48c034){var _0x556f7e={},_0x2e3faa={},_0xe8a468={'count':0x0,'rows':[]};var _0x4dbcb2=_['map'](db[_0x1eef('0x3b')][_0x1eef('0x3c')],function(_0x4e3aca){return{'name':_0x4e3aca[_0x1eef('0x3d')],'type':_0x4e3aca[_0x1eef('0x3e')][_0x1eef('0x3f')]};});_0x2e3faa[_0x1eef('0x40')]=_[_0x1eef('0x41')](_0x4dbcb2,'name');_0x2e3faa['query']=_[_0x1eef('0x42')](_0x3b7256['query']);_0x2e3faa[_0x1eef('0x43')]=_[_0x1eef('0x44')](_0x2e3faa['model'],_0x2e3faa[_0x1eef('0x45')]);_0x556f7e['attributes']=_['intersection'](_0x2e3faa[_0x1eef('0x40')],qs['fields'](_0x3b7256[_0x1eef('0x45')][_0x1eef('0x46')]));_0x556f7e[_0x1eef('0x47')]=_0x556f7e[_0x1eef('0x47')][_0x1eef('0x48')]?_0x556f7e['attributes']:_0x2e3faa[_0x1eef('0x40')];if(!_0x3b7256[_0x1eef('0x45')]['hasOwnProperty'](_0x1eef('0x49'))){_0x556f7e[_0x1eef('0x2f')]=qs[_0x1eef('0x2f')](_0x3b7256[_0x1eef('0x45')][_0x1eef('0x2f')]);_0x556f7e[_0x1eef('0x2c')]=qs[_0x1eef('0x2c')](_0x3b7256['query'][_0x1eef('0x2c')]);}_0x556f7e[_0x1eef('0x4a')]=qs[_0x1eef('0x4b')](_0x3b7256['query'][_0x1eef('0x4b')]);_0x556f7e[_0x1eef('0x4c')]=qs[_0x1eef('0x43')](_['pick'](_0x3b7256[_0x1eef('0x45')],_0x2e3faa[_0x1eef('0x43')]),_0x4dbcb2);if(_0x3b7256[_0x1eef('0x45')]['filter']){_0x556f7e[_0x1eef('0x4c')]=_[_0x1eef('0x4d')](_0x556f7e['where'],{'$or':_[_0x1eef('0x41')](_0x4dbcb2,function(_0x4b5080){if(_0x4b5080['type']!=='VIRTUAL'){var _0x14173f={};_0x14173f[_0x4b5080[_0x1eef('0x38')]]={'$like':'%'+_0x3b7256['query'][_0x1eef('0x4e')]+'%'};return _0x14173f;}})});}_0x556f7e=_[_0x1eef('0x4d')]({},_0x556f7e,_0x3b7256[_0x1eef('0x4f')]);var _0x5a685c={'where':_0x556f7e['where']};return db[_0x1eef('0x3b')][_0x1eef('0x2e')](_0x5a685c)[_0x1eef('0x21')](function(_0x2aae3a){_0xe8a468[_0x1eef('0x2e')]=_0x2aae3a;if(_0x3b7256[_0x1eef('0x45')][_0x1eef('0x50')]){_0x556f7e[_0x1eef('0x51')]=[{'all':!![]}];}return db[_0x1eef('0x3b')][_0x1eef('0x52')](_0x556f7e);})['then'](function(_0x126a3e){_0xe8a468['rows']=_0x126a3e;return _0xe8a468;})[_0x1eef('0x21')](respondWithFilteredResult(_0x48c034,_0x556f7e))[_0x1eef('0x29')](handleError(_0x48c034,null));};exports[_0x1eef('0x53')]=function(_0x146d0e,_0x4964ad){var _0x46409d={'raw':!![],'where':{'id':_0x146d0e[_0x1eef('0x54')]['id']}},_0x17621f={};_0x17621f[_0x1eef('0x40')]=_['keys'](db[_0x1eef('0x3b')][_0x1eef('0x3c')]);_0x17621f[_0x1eef('0x45')]=_[_0x1eef('0x42')](_0x146d0e[_0x1eef('0x45')]);_0x17621f['filters']=_[_0x1eef('0x44')](_0x17621f[_0x1eef('0x40')],_0x17621f[_0x1eef('0x45')]);_0x46409d[_0x1eef('0x47')]=_[_0x1eef('0x44')](_0x17621f[_0x1eef('0x40')],qs['fields'](_0x146d0e[_0x1eef('0x45')]['fields']));_0x46409d[_0x1eef('0x47')]=_0x46409d[_0x1eef('0x47')][_0x1eef('0x48')]?_0x46409d[_0x1eef('0x47')]:_0x17621f[_0x1eef('0x40')];if(_0x146d0e['query']['includeAll']){_0x46409d[_0x1eef('0x51')]=[{'all':!![]}];}_0x46409d=_[_0x1eef('0x4d')]({},_0x46409d,_0x146d0e[_0x1eef('0x4f')]);return db['WhatsappMessage'][_0x1eef('0x55')](_0x46409d)[_0x1eef('0x21')](handleEntityNotFound(_0x4964ad,null))[_0x1eef('0x21')](respondWithResult(_0x4964ad,null))[_0x1eef('0x29')](handleError(_0x4964ad,null));};exports[_0x1eef('0x56')]=function(_0x4dfbfa,_0x277562){return db['WhatsappMessage']['create'](_0x4dfbfa['body'],{})[_0x1eef('0x21')](respondWithResult(_0x277562,0xc9))[_0x1eef('0x29')](handleError(_0x277562,null));};exports[_0x1eef('0x35')]=function(_0x290add,_0x38f510){if(_0x290add['body']['id']){delete _0x290add['body']['id'];}return db['WhatsappMessage']['find']({'where':{'id':_0x290add[_0x1eef('0x54')]['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x38f510,null))['then'](saveUpdates(_0x290add[_0x1eef('0x57')],null))[_0x1eef('0x21')](respondWithResult(_0x38f510,null))[_0x1eef('0x29')](handleError(_0x38f510,null));};exports['destroy']=function(_0x2a9528,_0x2dd72d){return db['WhatsappMessage'][_0x1eef('0x55')]({'where':{'id':_0x2a9528['params']['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x2dd72d,null))[_0x1eef('0x21')](removeEntity(_0x2dd72d,null))[_0x1eef('0x29')](handleError(_0x2dd72d,null));};exports[_0x1eef('0x58')]=function(_0x2eb754,_0x53dff7){return db[_0x1eef('0x3b')][_0x1eef('0x58')]()[_0x1eef('0x21')](respondWithResult(_0x53dff7,null))[_0x1eef('0x29')](handleError(_0x53dff7,null));};var interaction_log=require('../../config/logger')(_0x1eef('0x59'));exports[_0x1eef('0x5a')]=function(_0x53de31,_0x322855,_0x128075){var _0xc6face={'agent':{},'channel':_0x1eef('0x5b')};if(_0x53de31[_0x1eef('0x57')]['id']){delete _0x53de31[_0x1eef('0x57')]['id'];}_0x53de31[_0x1eef('0x57')][_0x1eef('0x5c')]=!![];_0x53de31[_0x1eef('0x57')][_0x1eef('0x5d')]=moment()[_0x1eef('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')]=_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')]||_0x53de31[_0x1eef('0x60')]['id'];_0xc6face[_0x1eef('0x61')]['id']=_0x53de31['body'][_0x1eef('0x5f')];return db[_0x1eef('0x3b')][_0x1eef('0x55')]({'where':{'id':_0x53de31[_0x1eef('0x54')]['id'],'UserId':null}})[_0x1eef('0x21')](handleEntityNotFound(_0x322855,null))[_0x1eef('0x21')](saveUpdates(_0x53de31['body'],null))['then'](function(_0x219f0c){if(_0x219f0c){_0xc6face[_0x1eef('0x28')]=_0x219f0c['get']({'plain':!![]});return db[_0x1eef('0x62')][_0x1eef('0x55')]({'where':{'id':_0x219f0c[_0x1eef('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x322855,null))[_0x1eef('0x21')](function(_0x127600){if(_0x127600){return _0x127600[_0x1eef('0x35')]({'UserId':_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')],'read1stAt':_[_0x1eef('0x64')](_0x127600['read1stAt'])?moment()[_0x1eef('0x5e')](_0x1eef('0x65')):undefined});}return null;})['then'](function(_0x5c1ae2){if(_0x5c1ae2){_0xc6face['interaction']=_0x5c1ae2[_0x1eef('0x66')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53de31[_0x1eef('0x60')]['id'],_0x53de31[_0x1eef('0x60')][_0x1eef('0x38')],_0x53de31['user'][_0x1eef('0x67')],_0xc6face['interaction']['id'],_0x53de31[_0x1eef('0x57')]?JSON[_0x1eef('0x25')](_0x53de31[_0x1eef('0x57')]):_0x1eef('0x68'));return respondWithRpcPromise(_0x1eef('0x69'),_0x1eef('0x6a'),_0xc6face);}return null;})[_0x1eef('0x21')](function(_0x8eb1ca){var _0x1af3ca=_0x1eef('0x6b')+_0x8eb1ca[_0x1eef('0x28')][_0x1eef('0x6c')];return db[_0x1eef('0x6d')][_0x1eef('0x45')](_0x1af3ca,{'type':db[_0x1eef('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1eef('0x21')](function(_0x552438){return _0x552438;});})[_0x1eef('0x21')](function(_0x367073){if(_0x367073){_0xc6face['message'][_0x1eef('0x6f')]=_0x367073[0x0];if(!_0x53de31['body']['UserId'])return;return db[_0x1eef('0x70')][_0x1eef('0x55')]({'where':{'id':_0x53de31[_0x1eef('0x57')][_0x1eef('0x5f')],'role':_0x1eef('0x61')},'attributes':['id',_0x1eef('0x38'),_0x1eef('0x71'),_0x1eef('0x72'),_0x1eef('0x73')],'raw':!![]});}return null;})[_0x1eef('0x21')](function(_0x506022){if(!_0x506022)return null;_0xc6face['message']['agent']=_0x506022;return _0xc6face;})[_0x1eef('0x21')](function(_0x1099ff){if(_0x1099ff){if(_0x53de31[_0x1eef('0x57')][_0x1eef('0x74')]){_0xc6face['message'][_0x1eef('0x75')]=util[_0x1eef('0x5e')](_0x1eef('0x76'),_0x53de31[_0x1eef('0x60')][_0x1eef('0x38')]);_0xc6face[_0x1eef('0x28')]['channel']=_0xc6face[_0x1eef('0x77')];_0xc6face[_0x1eef('0x28')][_0x1eef('0x78')]=_0xc6face['channel'];_0xc6face['message'][_0x1eef('0x79')]='accept';return respondWithRpcPromise('EventManager',_0x1eef('0x7a'),{'event':'acceptmessage','message':_0xc6face['message']},client9002)[_0x1eef('0x21')](function(){return _0xc6face;});}return _0xc6face;}return null;})[_0x1eef('0x21')](respondWithResult(_0x322855,null))[_0x1eef('0x29')](handleError(_0x322855,null));};var interaction_log=require(_0x1eef('0x7b'))('whatsapp-interactions');exports[_0x1eef('0x7c')]=function(_0x1361fe,_0x884520,_0x3e4543){var _0x28a48d={'agent':{},'channel':_0x1eef('0x5b')};if(_0x1361fe[_0x1eef('0x57')]['id']){delete _0x1361fe['body']['id'];}_0x1361fe['body'][_0x1eef('0x5f')]=_0x1361fe['body'][_0x1eef('0x5f')]||_0x1361fe[_0x1eef('0x60')]['id'];_0x28a48d[_0x1eef('0x61')]['id']=_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')];return db[_0x1eef('0x3b')]['find']({'where':{'id':_0x1361fe[_0x1eef('0x54')]['id'],'UserId':null}})[_0x1eef('0x21')](handleEntityNotFound(_0x884520,null))['then'](function(_0x40f60d){if(_0x40f60d){_0x28a48d[_0x1eef('0x28')]=_0x40f60d[_0x1eef('0x66')]({'plain':!![]});return db[_0x1eef('0x62')][_0x1eef('0x55')]({'where':{'id':_0x40f60d['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x884520,null))[_0x1eef('0x21')](function(_0x5db2f4){if(_0x5db2f4){_0x28a48d[_0x1eef('0x7d')]=_0x5db2f4[_0x1eef('0x66')]({'plain':!![]});interaction_log[_0x1eef('0x22')](_0x1eef('0x7e'),_0x1361fe[_0x1eef('0x60')]['id'],_0x1361fe['user']['name'],_0x1361fe[_0x1eef('0x60')][_0x1eef('0x67')],_0x28a48d[_0x1eef('0x7d')]['id'],_0x1361fe[_0x1eef('0x57')]?JSON['stringify'](_0x1361fe[_0x1eef('0x57')]):_0x1eef('0x68'));return respondWithRpcPromise(_0x1eef('0x7f'),_0x1eef('0x80'),_0x28a48d);}return null;})[_0x1eef('0x21')](function(_0x21fc43){var _0x24d152='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x21fc43['message'][_0x1eef('0x6c')];return db['sequelize'][_0x1eef('0x45')](_0x24d152,{'type':db[_0x1eef('0x6e')]['QueryTypes'][_0x1eef('0x81')],'raw':!![]})['then'](function(_0x355b23){return _0x355b23;});})[_0x1eef('0x21')](function(_0x3c9a13){if(_0x3c9a13){_0x28a48d[_0x1eef('0x28')][_0x1eef('0x6f')]=_0x3c9a13[0x0];if(!_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')])return;return db['User']['find']({'where':{'id':_0x1361fe[_0x1eef('0x57')][_0x1eef('0x5f')],'role':_0x1eef('0x61')},'attributes':['id',_0x1eef('0x38'),_0x1eef('0x71'),_0x1eef('0x72'),'internal'],'raw':!![]});}return null;})[_0x1eef('0x21')](function(_0x177f85){if(!_0x177f85)return null;_0x28a48d[_0x1eef('0x28')][_0x1eef('0x61')]=_0x177f85;return _0x28a48d;})[_0x1eef('0x21')](function(_0x4804d1){if(_0x4804d1){_0x4804d1[_0x1eef('0x28')][_0x1eef('0x75')]=util[_0x1eef('0x5e')](_0x1eef('0x76'),_0x1361fe['user'][_0x1eef('0x38')]);_0x4804d1[_0x1eef('0x28')][_0x1eef('0x77')]=_0x28a48d[_0x1eef('0x77')];_0x4804d1[_0x1eef('0x28')][_0x1eef('0x78')]=_0x28a48d[_0x1eef('0x77')];_0x4804d1[_0x1eef('0x28')][_0x1eef('0x79')]=_0x1eef('0x7c');respondWithRpcPromise('EventManager','EventManager',{'event':_0x1eef('0x82'),'message':_0x4804d1['message']},client9002);return _0x28a48d;}return null;})[_0x1eef('0x21')](respondWithResult(_0x884520,null))['catch'](handleError(_0x884520,null));};exports[_0x1eef('0x2a')]=function(_0x139061,_0x2c0a82,_0x20b3d2){if(_0x139061['body']['id']){delete _0x139061[_0x1eef('0x57')]['id'];}var _0x115614;return db[_0x1eef('0x3b')][_0x1eef('0x55')]({'where':{'id':_0x139061[_0x1eef('0x54')]['id']}})[_0x1eef('0x21')](handleEntityNotFound(_0x2c0a82,null))[_0x1eef('0x21')](function(_0x34bfe8){if(_0x34bfe8){_0x115614=_0x34bfe8;return db[_0x1eef('0x83')][_0x1eef('0x55')]({'where':{'id':_0x34bfe8['WhatsappAccountId']}});}})[_0x1eef('0x21')](handleEntityNotFound(_0x2c0a82,null))[_0x1eef('0x21')](function(_0x43af93){if(_0x43af93){logger[_0x1eef('0x84')](_0x1eef('0x85'),_0x1eef('0x2a'),_0x1eef('0x86'),_0x43af93[_0x1eef('0x3e')],util[_0x1eef('0x87')](_0x139061[_0x1eef('0x57')],{'showHidden':![],'depth':null}));switch(_0x43af93[_0x1eef('0x3e')]){case _0x1eef('0x88'):if(_0x139061[_0x1eef('0x57')]['MessageSid']&&_0x139061[_0x1eef('0x57')]['MessageSid']===_0x115614[_0x1eef('0x89')]&&_0x139061[_0x1eef('0x57')][_0x1eef('0x8a')]&&_0x139061[_0x1eef('0x57')][_0x1eef('0x8a')]===_0x1eef('0x5c')){return _0x115614['update']({'read':!![]});}else{logger['error'](_0x1eef('0x8b'),_0x1eef('0x2a'),_0x1eef('0x88'),util['inspect'](_0x139061['body'],{'showHidden':![],'depth':null}));}break;}return _0x115614;}})[_0x1eef('0x21')](respondWithResult(_0x2c0a82,null))[_0x1eef('0x29')](handleError(_0x2c0a82,null));};
\ No newline at end of file
index 144edc1..70ae3f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4227=['exports','events','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x257280,_0x2921df){var _0xc4550e=function(_0x35bcfd){while(--_0x35bcfd){_0x257280['push'](_0x257280['shift']());}};_0xc4550e(++_0x2921df);}(_0x4227,0x89));var _0x7422=function(_0x524863,_0x46e669){_0x524863=_0x524863-0x0;var _0x15d4aa=_0x4227[_0x524863];return _0x15d4aa;};'use strict';var EventEmitter=require(_0x7422('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x7422('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7422('0x2'),'afterDestroy':_0x7422('0x3')};function emitEvent(_0x3e69ca){return function(_0x57e279,_0x2de51f,_0x1cd829){WhatsappMessageEvents[_0x7422('0x4')](_0x3e69ca+':'+_0x57e279['id'],_0x57e279);WhatsappMessageEvents[_0x7422('0x4')](_0x3e69ca,_0x57e279);_0x1cd829(null);};}for(var e in events){if(events[_0x7422('0x5')](e)){var event=events[e];WhatsappMessage[_0x7422('0x6')](e,emitEvent(event));}}module[_0x7422('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x0972=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0xf8f204,_0x4c620f){var _0x532cda=function(_0x571a62){while(--_0x571a62){_0xf8f204['push'](_0xf8f204['shift']());}};_0x532cda(++_0x4c620f);}(_0x0972,0x64));var _0x2097=function(_0x532590,_0x27288b){_0x532590=_0x532590-0x0;var _0x272d7d=_0x0972[_0x532590];return _0x272d7d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x2097('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2097('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2097('0x2'),'afterDestroy':_0x2097('0x3')};function emitEvent(_0x5b16c0){return function(_0x348ad8,_0x431d1c,_0xe6fbae){WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0+':'+_0x348ad8['id'],_0x348ad8);WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0,_0x348ad8);_0xe6fbae(null);};}for(var e in events){if(events[_0x2097('0x5')](e)){var event=events[e];WhatsappMessage[_0x2097('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 2051455..9477c42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd9=['lodash','../../config/logger','api','moment','bluebird','request-promise','node-fetch','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','toLowerCase','direction','out','secret','WhatsappInteraction','findOne','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','phone','create','whatsapp:','remote','/api/whatsapp/messages/','token','then','sid','update','catch','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','message_id','utf8mb4_unicode_ci'];(function(_0x39e02f,_0x2f4a3c){var _0x9cf183=function(_0x5bdd82){while(--_0x5bdd82){_0x39e02f['push'](_0x39e02f['shift']());}};_0x9cf183(++_0x2f4a3c);}(_0x4fd9,0x6c));var _0x94fd=function(_0x52e49a,_0x139908){_0x52e49a=_0x52e49a-0x0;var _0x20e7de=_0x4fd9[_0x52e49a];return _0x20e7de;};'use strict';var _=require(_0x94fd('0x0'));var util=require('util');var logger=require(_0x94fd('0x1'))(_0x94fd('0x2'));var moment=require(_0x94fd('0x3'));var BPromise=require(_0x94fd('0x4'));var rp=require(_0x94fd('0x5'));var fetch=require(_0x94fd('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x94fd('0x7'));var config=require(_0x94fd('0x8'));var attributes=require(_0x94fd('0x9'));module[_0x94fd('0xa')]=function(_0x676339,_0x5e221c){return _0x676339[_0x94fd('0xb')](_0x94fd('0xc'),attributes,{'tableName':_0x94fd('0xd'),'paranoid':![],'indexes':[{'name':_0x94fd('0xe'),'fields':[_0x94fd('0xe')]},{'name':_0x94fd('0xf'),'fields':[_0x94fd('0x10')],'type':_0x94fd('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x22b06c,_0x542bd3,_0x43c407){var _0x2cbf=_0x676339['models'];var _0xc12470=_0x22b06c[_0x94fd('0x12')]({'plain':!![]});if(_0xc12470['direction'][_0x94fd('0x13')]()==='in'||_0xc12470[_0x94fd('0x14')][_0x94fd('0x13')]()===_0x94fd('0x15')&&!_0xc12470[_0x94fd('0x16')]&&!_['isNil'](_0xc12470['UserId'])){_0x2cbf[_0x94fd('0x17')][_0x94fd('0x18')]({'where':{'id':_0xc12470['WhatsappInteractionId']}})['then'](function(_0x3da40f){if(_0x3da40f){_0x3da40f['update']({'lastMsgAt':_0xc12470['createdAt'],'lastMsgDirection':_0xc12470['direction'][_0x94fd('0x13')]()});}})['catch'](function(_0x284666){console[_0x94fd('0x19')](_0x284666);});}if(_0xc12470[_0x94fd('0x14')]===_0x94fd('0x15')&&!_0xc12470[_0x94fd('0x16')]){var _0x60df6c;_0x2cbf[_0x94fd('0x1a')][_0x94fd('0x1b')]({'where':{'id':_0xc12470[_0x94fd('0x1c')]},'raw':!![]})['then'](function(_0x343363){_0x60df6c=_0x343363;if(_0x60df6c&&_0x60df6c[_0x94fd('0x1d')]){switch(_0x60df6c[_0x94fd('0x1d')]){case _0x94fd('0x1e'):var _0x5e71ee=require('twilio');if(_0x60df6c[_0x94fd('0x1f')]&&_0x60df6c['authToken']&&_0x60df6c[_0x94fd('0x20')]){var _0x3c8d6f=new _0x5e71ee(_0x60df6c[_0x94fd('0x1f')],_0x60df6c['authToken']);_0x3c8d6f['messages'][_0x94fd('0x21')]({'body':_0xc12470[_0x94fd('0x10')],'to':'whatsapp:'+_0xc12470[_0x94fd('0x20')],'from':_0x94fd('0x22')+_0x60df6c['phone'],'statusCallback':_0x60df6c[_0x94fd('0x23')]+_0x94fd('0x24')+_0xc12470['id']+'/status?token='+_0x60df6c[_0x94fd('0x25')]})[_0x94fd('0x26')](function(_0x19cf1a){if(_0x19cf1a[_0x94fd('0x27')]){return _0x22b06c[_0x94fd('0x28')]({'messageId':_0x19cf1a[_0x94fd('0x27')]});}})[_0x94fd('0x29')](function(_0x20fba0){logger[_0x94fd('0x19')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x94fd('0x2a'),_0x94fd('0x1e'),util[_0x94fd('0x2b')](_0x20fba0,{'showHidden':![],'depth':null}));});}else{logger[_0x94fd('0x19')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x94fd('0x2a'),'twilio',_0x94fd('0x2c'));}break;case _0x94fd('0x2d'):var _0x11fd38=_0x60df6c[_0x94fd('0x1f')];var _0xb5a932=_0x60df6c['authToken'];var _0x1bc338=_0x60df6c['baseUrl']+_0x94fd('0x2e')+_0x11fd38+_0x94fd('0x2f');var _0x36c624={'to':[_0xc12470[_0x94fd('0x20')]],'message':{'type':'text','text':_0xc12470[_0x94fd('0x10')]}};var _0x1a8e68={'method':_0x94fd('0x30'),'uri':_0x1bc338,'headers':{'Authorization':_0x94fd('0x31')+_0xb5a932,'Content-Type':_0x94fd('0x32')},'body':_0x36c624,'json':!![]};rp(_0x1a8e68)[_0x94fd('0x26')](function(_0x138d3c){if(_0x138d3c[_0x94fd('0x33')][0x0][_0x94fd('0x34')]){return _0x22b06c[_0x94fd('0x28')]({'messageId':_0x138d3c[_0x94fd('0x33')][0x0][_0x94fd('0x34')]});}})[_0x94fd('0x29')](function(_0x178e92){logger['err']('WhatsappMessage,\x20%s',_0x178e92);});break;}}})['finally'](function(){_0x43c407();});}else{_0x43c407();}}},'charset':'utf8mb4','collate':_0x94fd('0x35')});};
\ No newline at end of file
+var _0x6c5c=['POST','application/json','statuses','message_id','err','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','node-fetch','path','rimraf','../../config/environment','define','whatsapp_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','WhatsappInteractionId','update','catch','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text'];(function(_0x10f004,_0x5c561d){var _0xd2a785=function(_0x417c1d){while(--_0x417c1d){_0x10f004['push'](_0x10f004['shift']());}};_0xd2a785(++_0x5c561d);}(_0x6c5c,0x129));var _0xc6c5=function(_0x493499,_0x72e454){_0x493499=_0x493499-0x0;var _0x21766f=_0x6c5c[_0x493499];return _0x21766f;};'use strict';var _=require(_0xc6c5('0x0'));var util=require(_0xc6c5('0x1'));var logger=require(_0xc6c5('0x2'))('api');var moment=require(_0xc6c5('0x3'));var BPromise=require('bluebird');var rp=require(_0xc6c5('0x4'));var fetch=require(_0xc6c5('0x5'));var fs=require('fs');var path=require(_0xc6c5('0x6'));var rimraf=require(_0xc6c5('0x7'));var config=require(_0xc6c5('0x8'));var attributes=require('./whatsappMessage.attributes');module['exports']=function(_0x19d12a,_0x93a458){return _0x19d12a[_0xc6c5('0x9')]('WhatsappMessage',attributes,{'tableName':_0xc6c5('0xa'),'paranoid':![],'indexes':[{'name':_0xc6c5('0xb'),'fields':['messageId']},{'name':'fti_whatsapp_messages','fields':[_0xc6c5('0xc')],'type':_0xc6c5('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d9c48,_0x374ee1,_0x55b366){var _0x119bce=_0x19d12a[_0xc6c5('0xe')];var _0x3e9be8=_0x4d9c48[_0xc6c5('0xf')]({'plain':!![]});if(_0x3e9be8[_0xc6c5('0x10')][_0xc6c5('0x11')]()==='in'||_0x3e9be8[_0xc6c5('0x10')][_0xc6c5('0x11')]()===_0xc6c5('0x12')&&!_0x3e9be8[_0xc6c5('0x13')]&&!_[_0xc6c5('0x14')](_0x3e9be8['UserId'])){_0x119bce[_0xc6c5('0x15')]['findOne']({'where':{'id':_0x3e9be8[_0xc6c5('0x16')]}})['then'](function(_0x2052f3){if(_0x2052f3){_0x2052f3[_0xc6c5('0x17')]({'lastMsgAt':_0x3e9be8['createdAt'],'lastMsgDirection':_0x3e9be8[_0xc6c5('0x10')]['toLowerCase']()});}})[_0xc6c5('0x18')](function(_0x267af8){console['error'](_0x267af8);});}if(_0x3e9be8[_0xc6c5('0x10')]===_0xc6c5('0x12')&&!_0x3e9be8['secret']){var _0x1050f7;_0x119bce[_0xc6c5('0x19')][_0xc6c5('0x1a')]({'where':{'id':_0x3e9be8[_0xc6c5('0x1b')]},'raw':!![]})[_0xc6c5('0x1c')](function(_0x5e7ad2){_0x1050f7=_0x5e7ad2;if(_0x1050f7&&_0x1050f7[_0xc6c5('0x1d')]){switch(_0x1050f7[_0xc6c5('0x1d')]){case _0xc6c5('0x1e'):var _0x5a335a=require(_0xc6c5('0x1e'));if(_0x1050f7[_0xc6c5('0x1f')]&&_0x1050f7[_0xc6c5('0x20')]&&_0x1050f7[_0xc6c5('0x21')]){var _0x6a591=new _0x5a335a(_0x1050f7[_0xc6c5('0x1f')],_0x1050f7[_0xc6c5('0x20')]);_0x6a591[_0xc6c5('0x22')][_0xc6c5('0x23')]({'body':_0x3e9be8['body'],'to':_0xc6c5('0x24')+_0x3e9be8[_0xc6c5('0x21')],'from':'whatsapp:'+_0x1050f7['phone'],'statusCallback':_0x1050f7['remote']+_0xc6c5('0x25')+_0x3e9be8['id']+_0xc6c5('0x26')+_0x1050f7[_0xc6c5('0x27')]})[_0xc6c5('0x1c')](function(_0x22ee93){if(_0x22ee93[_0xc6c5('0x28')]){return _0x4d9c48['update']({'messageId':_0x22ee93[_0xc6c5('0x28')]});}})[_0xc6c5('0x18')](function(_0x1669ee){logger[_0xc6c5('0x29')](_0xc6c5('0x2a'),_0xc6c5('0x2b'),_0xc6c5('0x1e'),util[_0xc6c5('0x2c')](_0x1669ee,{'showHidden':![],'depth':null}));});}else{logger[_0xc6c5('0x29')](_0xc6c5('0x2a'),_0xc6c5('0x2b'),'twilio',_0xc6c5('0x2d'));}break;case _0xc6c5('0x2e'):var _0x20c701=_0x1050f7[_0xc6c5('0x1f')];var _0x30e1a4=_0x1050f7[_0xc6c5('0x20')];var _0x162817=_0x1050f7[_0xc6c5('0x2f')]+_0xc6c5('0x30')+_0x20c701+_0xc6c5('0x31');var _0x54b96f={'to':[_0x3e9be8['phone']],'message':{'type':_0xc6c5('0x32'),'text':_0x3e9be8['body']}};var _0x5d1645={'method':_0xc6c5('0x33'),'uri':_0x162817,'headers':{'Authorization':'Bearer\x20'+_0x30e1a4,'Content-Type':_0xc6c5('0x34')},'body':_0x54b96f,'json':!![]};rp(_0x5d1645)[_0xc6c5('0x1c')](function(_0x154937){if(_0x154937[_0xc6c5('0x35')][0x0][_0xc6c5('0x36')]){return _0x4d9c48[_0xc6c5('0x17')]({'messageId':_0x154937['statuses'][0x0]['message_id']});}})[_0xc6c5('0x18')](function(_0x230a8d){logger[_0xc6c5('0x37')]('WhatsappMessage,\x20%s',_0x230a8d);});break;}}})[_0xc6c5('0x38')](function(){_0x55b366();});}else{_0x55b366();}}},'charset':'utf8mb4','collate':_0xc6c5('0x39')});};
\ No newline at end of file
index 2d2a9e5..0751223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c2e=['register','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','catch','CreateWhatsappMessage','body','options','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket'];(function(_0x5a677f,_0x32c48e){var _0x1d5260=function(_0x340bd6){while(--_0x340bd6){_0x5a677f['push'](_0x5a677f['shift']());}};_0x1d5260(++_0x32c48e);}(_0x2c2e,0xd2));var _0xe2c2=function(_0xd8eaa9,_0x1c3121){_0xd8eaa9=_0xd8eaa9-0x0;var _0x4ab53f=_0x2c2e[_0xd8eaa9];return _0x4ab53f;};'use strict';var _=require(_0xe2c2('0x0'));var util=require('util');var moment=require(_0xe2c2('0x1'));var BPromise=require(_0xe2c2('0x2'));var rs=require(_0xe2c2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe2c2('0x4'))['db'];var utils=require(_0xe2c2('0x5'));var logger=require(_0xe2c2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe2c2('0x7')][_0xe2c2('0x8')]({'port':0x232a});config[_0xe2c2('0x9')]=_[_0xe2c2('0xa')](config['redis'],{'host':_0xe2c2('0xb'),'port':0x18eb});var socket=require(_0xe2c2('0xc'))(new Redis(config[_0xe2c2('0x9')]));require(_0xe2c2('0xd'))[_0xe2c2('0xe')](socket);function respondWithRpcPromise(_0x502883,_0x355321,_0xfda475){return new BPromise(function(_0x11f753,_0x44f194){return client[_0xe2c2('0xf')](_0x502883,_0xfda475)[_0xe2c2('0x10')](function(_0x300b4c){logger[_0xe2c2('0x11')](_0xe2c2('0x12'),_0x355321,'request\x20sent');logger[_0xe2c2('0x13')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x355321,_0xe2c2('0x14'),JSON[_0xe2c2('0x15')](_0x300b4c));if(_0x300b4c['error']){if(_0x300b4c[_0xe2c2('0x16')]['code']===0x1f4){logger[_0xe2c2('0x16')](_0xe2c2('0x12'),_0x355321,_0x300b4c[_0xe2c2('0x16')][_0xe2c2('0x17')]);return _0x44f194(_0x300b4c['error'][_0xe2c2('0x17')]);}logger[_0xe2c2('0x16')](_0xe2c2('0x12'),_0x355321,_0x300b4c[_0xe2c2('0x16')][_0xe2c2('0x17')]);return _0x11f753(_0x300b4c['error'][_0xe2c2('0x17')]);}else{logger[_0xe2c2('0x11')](_0xe2c2('0x12'),_0x355321,_0xe2c2('0x14'));_0x11f753(_0x300b4c['result'][_0xe2c2('0x17')]);}})[_0xe2c2('0x18')](function(_0x2be09d){logger[_0xe2c2('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x355321,_0x2be09d);_0x44f194(_0x2be09d);});});}exports[_0xe2c2('0x19')]=function(_0x2ed6d9){var _0x510ab0=this;return new Promise(function(_0x313dd9,_0x238865){return db['WhatsappMessage']['create'](_0x2ed6d9[_0xe2c2('0x1a')],{'raw':_0x2ed6d9['options']?_0x2ed6d9[_0xe2c2('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xe2c2('0x10')](function(_0x12ce6a){logger[_0xe2c2('0x11')](_0xe2c2('0x19'),_0x2ed6d9);logger[_0xe2c2('0x13')](_0xe2c2('0x19'),_0x2ed6d9,JSON[_0xe2c2('0x15')](_0x12ce6a));_0x313dd9(_0x12ce6a);})[_0xe2c2('0x18')](function(_0xdba331){logger[_0xe2c2('0x16')](_0xe2c2('0x19'),_0xdba331[_0xe2c2('0x17')],_0x2ed6d9);_0x238865(_0x510ab0[_0xe2c2('0x16')](0x1f4,_0xdba331[_0xe2c2('0x17')]));});});};
\ No newline at end of file
+var _0xa004=['request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./whatsappMessage.socket','register','request','WhatsappMessage,\x20%s,\x20%s'];(function(_0x5bb910,_0x172aa8){var _0x1398a4=function(_0x597f6d){while(--_0x597f6d){_0x5bb910['push'](_0x5bb910['shift']());}};_0x1398a4(++_0x172aa8);}(_0xa004,0x1a9));var _0x4a00=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa004[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4a00('0x0'));var util=require(_0x4a00('0x1'));var moment=require('moment');var BPromise=require(_0x4a00('0x2'));var rs=require(_0x4a00('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a00('0x4'))['db'];var utils=require(_0x4a00('0x5'));var logger=require('../../config/logger')(_0x4a00('0x6'));var config=require(_0x4a00('0x7'));var jayson=require(_0x4a00('0x8'));var client=jayson[_0x4a00('0x9')][_0x4a00('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4a00('0xb')],{'host':_0x4a00('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4a00('0xd'))[_0x4a00('0xe')](socket);function respondWithRpcPromise(_0x22d84c,_0x2b7294,_0x6a52e7){return new BPromise(function(_0x220ed3,_0x434289){return client[_0x4a00('0xf')](_0x22d84c,_0x6a52e7)['then'](function(_0x4e7426){logger['info'](_0x4a00('0x10'),_0x2b7294,_0x4a00('0x11'));logger[_0x4a00('0x12')](_0x4a00('0x13'),_0x2b7294,_0x4a00('0x11'),JSON[_0x4a00('0x14')](_0x4e7426));if(_0x4e7426['error']){if(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x16')]===0x1f4){logger[_0x4a00('0x15')](_0x4a00('0x10'),_0x2b7294,_0x4e7426[_0x4a00('0x15')]['message']);return _0x434289(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x17')]);}logger[_0x4a00('0x15')](_0x4a00('0x10'),_0x2b7294,_0x4e7426[_0x4a00('0x15')]['message']);return _0x220ed3(_0x4e7426[_0x4a00('0x15')][_0x4a00('0x17')]);}else{logger[_0x4a00('0x18')](_0x4a00('0x10'),_0x2b7294,_0x4a00('0x11'));_0x220ed3(_0x4e7426[_0x4a00('0x19')][_0x4a00('0x17')]);}})[_0x4a00('0x1a')](function(_0xcd4167){logger[_0x4a00('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x2b7294,_0xcd4167);_0x434289(_0xcd4167);});});}exports[_0x4a00('0x1b')]=function(_0x25ec32){var _0x3fce6e=this;return new Promise(function(_0x57b2ed,_0x1919fb){return db[_0x4a00('0x1c')][_0x4a00('0x1d')](_0x25ec32[_0x4a00('0x1e')],{'raw':_0x25ec32[_0x4a00('0x1f')]?_0x25ec32[_0x4a00('0x1f')][_0x4a00('0x20')]===undefined?!![]:![]:!![]})[_0x4a00('0x21')](function(_0x292061){logger[_0x4a00('0x18')](_0x4a00('0x1b'),_0x25ec32);logger[_0x4a00('0x12')](_0x4a00('0x1b'),_0x25ec32,JSON['stringify'](_0x292061));_0x57b2ed(_0x292061);})[_0x4a00('0x1a')](function(_0x6edf0d){logger[_0x4a00('0x15')](_0x4a00('0x1b'),_0x6edf0d['message'],_0x25ec32);_0x1919fb(_0x3fce6e[_0x4a00('0x15')](0x1f4,_0x6edf0d[_0x4a00('0x17')]));});});};
\ No newline at end of file
index de8d7cc..de28873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bbe=['removeListener','register','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit'];(function(_0x83f529,_0x3d55d7){var _0x4383b8=function(_0x6ceff1){while(--_0x6ceff1){_0x83f529['push'](_0x83f529['shift']());}};_0x4383b8(++_0x3d55d7);}(_0x8bbe,0x123));var _0xe8bb=function(_0x1fa007,_0x5d3503){_0x1fa007=_0x1fa007-0x0;var _0x24a0c2=_0x8bbe[_0x1fa007];return _0x24a0c2;};'use strict';var WhatsappMessageEvents=require(_0xe8bb('0x0'));var events=[_0xe8bb('0x1'),_0xe8bb('0x2'),_0xe8bb('0x3')];function createListener(_0x57ec67,_0x243f88){return function(_0x252b0a){_0x243f88[_0xe8bb('0x4')](_0x57ec67,_0x252b0a);};}function removeListener(_0x1c21de,_0x1b8eec){return function(){WhatsappMessageEvents[_0xe8bb('0x5')](_0x1c21de,_0x1b8eec);};}exports[_0xe8bb('0x6')]=function(_0x4a3f1e){for(var _0x19d1fb=0x0,_0x5b50e9=events['length'];_0x19d1fb<_0x5b50e9;_0x19d1fb++){var _0x2710d6=events[_0x19d1fb];var _0x22601a=createListener(_0xe8bb('0x7')+_0x2710d6,_0x4a3f1e);WhatsappMessageEvents['on'](_0x2710d6,_0x22601a);}};
\ No newline at end of file
+var _0xf3d8=['update','emit','removeListener','register','length','./whatsappMessage.events','remove'];(function(_0x505df9,_0x14138e){var _0x1cc025=function(_0x5d2a1f){while(--_0x5d2a1f){_0x505df9['push'](_0x505df9['shift']());}};_0x1cc025(++_0x14138e);}(_0xf3d8,0x139));var _0x8f3d=function(_0x456032,_0x1a799d){_0x456032=_0x456032-0x0;var _0x1a53cd=_0xf3d8[_0x456032];return _0x1a53cd;};'use strict';var WhatsappMessageEvents=require(_0x8f3d('0x0'));var events=['save',_0x8f3d('0x1'),_0x8f3d('0x2')];function createListener(_0x5a650b,_0x149de2){return function(_0xd25380){_0x149de2[_0x8f3d('0x3')](_0x5a650b,_0xd25380);};}function removeListener(_0x5ee665,_0x14671e){return function(){WhatsappMessageEvents[_0x8f3d('0x4')](_0x5ee665,_0x14671e);};}exports[_0x8f3d('0x5')]=function(_0x321561){for(var _0x4a91bb=0x0,_0x33cd19=events[_0x8f3d('0x6')];_0x4a91bb<_0x33cd19;_0x4a91bb++){var _0x251a99=events[_0x4a91bb];var _0x53fe66=createListener('whatsappMessage:'+_0x251a99,_0x321561);WhatsappMessageEvents['on'](_0x251a99,_0x53fe66);}};
\ No newline at end of file
index b21449f..26e044d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bd9=['/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./whatsappQueue.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x5bab8e,_0x5a9ed6){var _0x3e14ea=function(_0x3d5948){while(--_0x3d5948){_0x5bab8e['push'](_0x5bab8e['shift']());}};_0x3e14ea(++_0x5a9ed6);}(_0x9bd9,0x1a4));var _0x99bd=function(_0xa5fdf4,_0x553bc8){_0xa5fdf4=_0xa5fdf4-0x0;var _0x45a73d=_0x9bd9[_0xa5fdf4];return _0x45a73d;};'use strict';var multer=require(_0x99bd('0x0'));var util=require(_0x99bd('0x1'));var path=require(_0x99bd('0x2'));var timeout=require(_0x99bd('0x3'));var express=require(_0x99bd('0x4'));var router=express[_0x99bd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x99bd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x99bd('0x7'));var controller=require(_0x99bd('0x8'));router['get']('/',auth[_0x99bd('0x9')](),controller[_0x99bd('0xa')]);router[_0x99bd('0xb')](_0x99bd('0xc'),auth[_0x99bd('0x9')](),controller[_0x99bd('0xd')]);router[_0x99bd('0xb')](_0x99bd('0xe'),auth[_0x99bd('0x9')](),controller[_0x99bd('0xf')]);router[_0x99bd('0xb')](_0x99bd('0x10'),auth[_0x99bd('0x9')](),controller[_0x99bd('0x11')]);router['get'](_0x99bd('0x12'),auth['isAuthenticated'](),controller[_0x99bd('0x13')]);router['get'](_0x99bd('0x14'),auth[_0x99bd('0x9')](),controller['getAgents']);router[_0x99bd('0x15')]('/',auth['isAuthenticated'](),controller[_0x99bd('0x16')]);router['post'](_0x99bd('0x12'),auth[_0x99bd('0x9')](),controller[_0x99bd('0x17')]);router['post'](_0x99bd('0x14'),auth[_0x99bd('0x9')](),controller[_0x99bd('0x18')]);router[_0x99bd('0x19')](_0x99bd('0xe'),auth[_0x99bd('0x9')](),controller[_0x99bd('0x1a')]);router[_0x99bd('0x1b')](_0x99bd('0xe'),auth['isAuthenticated'](),controller[_0x99bd('0x1c')]);router[_0x99bd('0x1b')](_0x99bd('0x12'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x99bd('0x1b')](_0x99bd('0x14'),auth[_0x99bd('0x9')](),controller[_0x99bd('0x1d')]);module[_0x99bd('0x1e')]=router;
\ No newline at end of file
+var _0xbd0c=['getAgents','post','addTeams','addAgents','delete','destroy','removeTeams','removeAgents','exports','util','path','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/teams','getTeams','/:id/users'];(function(_0x1ab122,_0x4949bb){var _0x244b56=function(_0x2e0249){while(--_0x2e0249){_0x1ab122['push'](_0x1ab122['shift']());}};_0x244b56(++_0x4949bb);}(_0xbd0c,0x11c));var _0xcbd0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbd0c[_0x6c993a];return _0x27f547;};'use strict';var multer=require('multer');var util=require(_0xcbd0('0x0'));var path=require(_0xcbd0('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xcbd0('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xcbd0('0x3'));var config=require(_0xcbd0('0x4'));var controller=require(_0xcbd0('0x5'));router[_0xcbd0('0x6')]('/',auth['isAuthenticated'](),controller[_0xcbd0('0x7')]);router[_0xcbd0('0x6')](_0xcbd0('0x8'),auth['isAuthenticated'](),controller[_0xcbd0('0x9')]);router[_0xcbd0('0x6')](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0xc')]);router['get']('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xcbd0('0x6')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0xe')]);router[_0xcbd0('0x6')](_0xcbd0('0xf'),auth['isAuthenticated'](),controller[_0xcbd0('0x10')]);router['post']('/',auth[_0xcbd0('0xb')](),controller['create']);router[_0xcbd0('0x11')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x12')]);router[_0xcbd0('0x11')](_0xcbd0('0xf'),auth['isAuthenticated'](),controller[_0xcbd0('0x13')]);router['put'](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller['update']);router[_0xcbd0('0x14')](_0xcbd0('0xa'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x15')]);router[_0xcbd0('0x14')](_0xcbd0('0xd'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x16')]);router[_0xcbd0('0x14')](_0xcbd0('0xf'),auth[_0xcbd0('0xb')](),controller[_0xcbd0('0x17')]);module[_0xcbd0('0x18')]=router;
\ No newline at end of file
index 6b75f62..153d1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a5=['roundrobin','sequelize','exports','STRING','name','ENUM','rrmemory','beepall'];(function(_0x582ec5,_0xb743f8){var _0x23100c=function(_0x5c880e){while(--_0x5c880e){_0x582ec5['push'](_0x582ec5['shift']());}};_0x23100c(++_0xb743f8);}(_0x38a5,0x69));var _0x538a=function(_0x3273f8,_0x671df3){_0x3273f8=_0x3273f8-0x0;var _0x5d066c=_0x38a5[_0x3273f8];return _0x5d066c;};'use strict';var Sequelize=require(_0x538a('0x0'));module[_0x538a('0x1')]={'name':{'type':Sequelize[_0x538a('0x2')],'unique':_0x538a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x538a('0x4')](_0x538a('0x5'),_0x538a('0x6'),_0x538a('0x7'))},'description':{'type':Sequelize[_0x538a('0x2')]}};
\ No newline at end of file
+var _0x82b0=['ENUM','rrmemory','beepall','sequelize','exports','STRING','INTEGER'];(function(_0x3cb465,_0x36d920){var _0x4e197b=function(_0x25fd7d){while(--_0x25fd7d){_0x3cb465['push'](_0x3cb465['shift']());}};_0x4e197b(++_0x36d920);}(_0x82b0,0x81));var _0x082b=function(_0x2badac,_0x4b93fa){_0x2badac=_0x2badac-0x0;var _0x28276c=_0x82b0[_0x2badac];return _0x28276c;};'use strict';var Sequelize=require(_0x082b('0x0'));module[_0x082b('0x1')]={'name':{'type':Sequelize[_0x082b('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x082b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x082b('0x4')](_0x082b('0x5'),_0x082b('0x6'),'roundrobin')},'description':{'type':Sequelize[_0x082b('0x2')]}};
\ No newline at end of file
index fbfac36..32786d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a2=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','get','WhatsappQueues','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappQueue','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','WhatsappQueueId','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','format','SIP','getTeams','ids','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','UserWhatsappQueue','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','Team','User','select','field','from','team_has_whatsapp_queues','join','sequelize','QueryTypes','SELECT','every','includes','all','union','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','rimraf','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x1ded5e,_0x5531ad){var _0x5e2f1c=function(_0x1d5550){while(--_0x1d5550){_0x1ded5e['push'](_0x1ded5e['shift']());}};_0x5e2f1c(++_0x5531ad);}(_0x58a2,0x7b));var _0x258a=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x58a2[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x258a('0x0'));var zipdir=require(_0x258a('0x1'));var jsonpatch=require(_0x258a('0x2'));var rp=require(_0x258a('0x3'));var moment=require(_0x258a('0x4'));var BPromise=require(_0x258a('0x5'));var Mustache=require(_0x258a('0x6'));var util=require(_0x258a('0x7'));var path=require(_0x258a('0x8'));var sox=require(_0x258a('0x9'));var csv=require(_0x258a('0xa'));var ejs=require(_0x258a('0xb'));var fs=require('fs');var fs_extra=require(_0x258a('0xc'));var _=require(_0x258a('0xd'));var squel=require(_0x258a('0xe'));var crypto=require('crypto');var jsforce=require(_0x258a('0xf'));var deskjs=require(_0x258a('0x10'));var toCsv=require(_0x258a('0xa'));var querystring=require(_0x258a('0x11'));var Papa=require(_0x258a('0x12'));var Redis=require('ioredis');var authService=require(_0x258a('0x13'));var qs=require(_0x258a('0x14'));var as=require(_0x258a('0x15'));var hardwareService=require(_0x258a('0x16'));var logger=require(_0x258a('0x17'))(_0x258a('0x18'));var utils=require(_0x258a('0x19'));var config=require(_0x258a('0x1a'));var licenseUtil=require(_0x258a('0x1b'));var db=require(_0x258a('0x1c'))['db'];config[_0x258a('0x1d')]=_[_0x258a('0x1e')](config[_0x258a('0x1d')],{'host':_0x258a('0x1f'),'port':0x18eb});var socket=require(_0x258a('0x20'))(new Redis(config[_0x258a('0x1d')]));require(_0x258a('0x21'))[_0x258a('0x22')](socket);function respondWithStatusCode(_0x140180,_0x460378){_0x460378=_0x460378||0xcc;return function(_0x55be21){if(_0x55be21){return _0x140180['sendStatus'](_0x460378);}return _0x140180[_0x258a('0x23')](_0x460378)[_0x258a('0x24')]();};}function respondWithResult(_0x25a4b7,_0x5e3076){_0x5e3076=_0x5e3076||0xc8;return function(_0x1f492e){if(_0x1f492e){return _0x25a4b7[_0x258a('0x23')](_0x5e3076)[_0x258a('0x25')](_0x1f492e);}};}function respondWithFilteredResult(_0x15129b,_0xa1bb14){return function(_0x36fc36){if(_0x36fc36){var _0x5865c6=typeof _0xa1bb14['offset']===_0x258a('0x26')&&typeof _0xa1bb14[_0x258a('0x27')]===_0x258a('0x26');var _0x57f98e=_0x36fc36[_0x258a('0x28')];var _0x45e1a6=_0x5865c6?0x0:_0xa1bb14[_0x258a('0x29')];var _0x2e217d=_0x5865c6?_0x36fc36[_0x258a('0x28')]:_0xa1bb14['offset']+_0xa1bb14['limit'];var _0x4c84d0;if(_0x2e217d>=_0x57f98e){_0x2e217d=_0x57f98e;_0x4c84d0=0xc8;}else{_0x4c84d0=0xce;}_0x15129b[_0x258a('0x23')](_0x4c84d0);return _0x15129b[_0x258a('0x2a')](_0x258a('0x2b'),_0x45e1a6+'-'+_0x2e217d+'/'+_0x57f98e)[_0x258a('0x25')](_0x36fc36);}return null;};}function patchUpdates(_0x5a85e1){return function(_0x4e6652){try{jsonpatch[_0x258a('0x2c')](_0x4e6652,_0x5a85e1,!![]);}catch(_0x241012){return BPromise[_0x258a('0x2d')](_0x241012);}return _0x4e6652[_0x258a('0x2e')]();};}function saveUpdates(_0x17a2e8,_0x314106){return function(_0x5ec350){if(_0x5ec350){return _0x5ec350['update'](_0x17a2e8)[_0x258a('0x2f')](function(_0x37a181){return _0x37a181;});}return null;};}function removeEntity(_0x62a43f,_0x3dbe18){return function(_0x520280){if(_0x520280){return _0x520280['destroy']()['then'](function(){var _0x3bcb5d=_0x520280[_0x258a('0x30')]({'plain':!![]});var _0x140137=_0x258a('0x31');return db['UserProfileResource'][_0x258a('0x32')]({'where':{'type':_0x140137,'resourceId':_0x3bcb5d['id']}})[_0x258a('0x2f')](function(){return _0x520280;});})[_0x258a('0x2f')](function(){_0x62a43f['status'](0xcc)[_0x258a('0x24')]();});}};}function handleEntityNotFound(_0x31146d,_0x2c6ef4){return function(_0x24f32c){if(!_0x24f32c){_0x31146d[_0x258a('0x33')](0x194);}return _0x24f32c;};}function handleError(_0x4e0da4,_0x4833af){_0x4833af=_0x4833af||0x1f4;return function(_0x1b3baf){logger[_0x258a('0x34')](_0x1b3baf[_0x258a('0x35')]);if(_0x1b3baf[_0x258a('0x36')]){delete _0x1b3baf[_0x258a('0x36')];}_0x4e0da4[_0x258a('0x23')](_0x4833af)[_0x258a('0x37')](_0x1b3baf);};}exports[_0x258a('0x38')]=function(_0x2b505b,_0x3a39a5){var _0x152d4f={},_0x29ca7d={},_0x4822b3={'count':0x0,'rows':[]};var _0x341728=_[_0x258a('0x39')](db['WhatsappQueue'][_0x258a('0x3a')],function(_0xfc2dcf){return{'name':_0xfc2dcf[_0x258a('0x3b')],'type':_0xfc2dcf[_0x258a('0x3c')][_0x258a('0x3d')]};});_0x29ca7d[_0x258a('0x3e')]=_['map'](_0x341728,'name');_0x29ca7d['query']=_[_0x258a('0x3f')](_0x2b505b[_0x258a('0x40')]);_0x29ca7d[_0x258a('0x41')]=_['intersection'](_0x29ca7d['model'],_0x29ca7d['query']);_0x152d4f[_0x258a('0x42')]=_['intersection'](_0x29ca7d['model'],qs[_0x258a('0x43')](_0x2b505b[_0x258a('0x40')][_0x258a('0x43')]));_0x152d4f[_0x258a('0x42')]=_0x152d4f[_0x258a('0x42')][_0x258a('0x44')]?_0x152d4f[_0x258a('0x42')]:_0x29ca7d[_0x258a('0x3e')];if(!_0x2b505b[_0x258a('0x40')][_0x258a('0x45')](_0x258a('0x46'))){_0x152d4f[_0x258a('0x27')]=qs[_0x258a('0x27')](_0x2b505b[_0x258a('0x40')][_0x258a('0x27')]);_0x152d4f['offset']=qs['offset'](_0x2b505b[_0x258a('0x40')][_0x258a('0x29')]);}_0x152d4f[_0x258a('0x47')]=qs[_0x258a('0x48')](_0x2b505b[_0x258a('0x40')][_0x258a('0x48')]);_0x152d4f[_0x258a('0x49')]=qs[_0x258a('0x41')](_[_0x258a('0x4a')](_0x2b505b[_0x258a('0x40')],_0x29ca7d[_0x258a('0x41')]),_0x341728);if(_0x2b505b[_0x258a('0x40')][_0x258a('0x4b')]){_0x152d4f[_0x258a('0x49')]=_[_0x258a('0x4c')](_0x152d4f[_0x258a('0x49')],{'$or':_[_0x258a('0x39')](_0x341728,function(_0x458413){if(_0x458413[_0x258a('0x3c')]!==_0x258a('0x4d')){var _0x1e82fa={};_0x1e82fa[_0x458413[_0x258a('0x36')]]={'$like':'%'+_0x2b505b[_0x258a('0x40')]['filter']+'%'};return _0x1e82fa;}})});}_0x152d4f=_['merge']({},_0x152d4f,_0x2b505b[_0x258a('0x4e')]);var _0x4633fe={'where':_0x152d4f[_0x258a('0x49')]};return db[_0x258a('0x4f')][_0x258a('0x28')](_0x4633fe)['then'](function(_0x1afe2c){_0x4822b3['count']=_0x1afe2c;if(_0x2b505b[_0x258a('0x40')][_0x258a('0x50')]){_0x152d4f[_0x258a('0x51')]=[{'all':!![]}];}return db[_0x258a('0x4f')][_0x258a('0x52')](_0x152d4f);})['then'](function(_0x1fae65){_0x4822b3[_0x258a('0x53')]=_0x1fae65;return _0x4822b3;})[_0x258a('0x2f')](respondWithFilteredResult(_0x3a39a5,_0x152d4f))[_0x258a('0x54')](handleError(_0x3a39a5,null));};exports[_0x258a('0x55')]=function(_0x356067,_0x2216e4){var _0x2c6dd0={'raw':!![],'where':{'id':_0x356067[_0x258a('0x56')]['id']}},_0x3417a7={};_0x3417a7[_0x258a('0x3e')]=_[_0x258a('0x3f')](db[_0x258a('0x4f')][_0x258a('0x3a')]);_0x3417a7[_0x258a('0x40')]=_[_0x258a('0x3f')](_0x356067[_0x258a('0x40')]);_0x3417a7[_0x258a('0x41')]=_[_0x258a('0x57')](_0x3417a7[_0x258a('0x3e')],_0x3417a7[_0x258a('0x40')]);_0x2c6dd0[_0x258a('0x42')]=_[_0x258a('0x57')](_0x3417a7[_0x258a('0x3e')],qs[_0x258a('0x43')](_0x356067[_0x258a('0x40')]['fields']));_0x2c6dd0[_0x258a('0x42')]=_0x2c6dd0[_0x258a('0x42')][_0x258a('0x44')]?_0x2c6dd0[_0x258a('0x42')]:_0x3417a7[_0x258a('0x3e')];if(_0x356067[_0x258a('0x40')]['includeAll']){_0x2c6dd0[_0x258a('0x51')]=[{'all':!![]}];}_0x2c6dd0=_[_0x258a('0x4c')]({},_0x2c6dd0,_0x356067['options']);return db[_0x258a('0x4f')][_0x258a('0x58')](_0x2c6dd0)['then'](handleEntityNotFound(_0x2216e4,null))[_0x258a('0x2f')](respondWithResult(_0x2216e4,null))[_0x258a('0x54')](handleError(_0x2216e4,null));};exports[_0x258a('0x59')]=function(_0x34af1a,_0x2967bf){return db[_0x258a('0x4f')][_0x258a('0x59')](_0x34af1a[_0x258a('0x5a')],{})[_0x258a('0x2f')](function(_0x38241f){var _0x49bb2c=_0x34af1a[_0x258a('0x5b')]['get']({'plain':!![]});if(!_0x49bb2c)throw new Error(_0x258a('0x5c'));if(_0x49bb2c['role']===_0x258a('0x5b')){var _0x19b278=_0x38241f[_0x258a('0x30')]({'plain':!![]});var _0x30f2bc='WhatsappQueues';return db[_0x258a('0x5d')][_0x258a('0x58')]({'where':{'name':_0x30f2bc,'userProfileId':_0x49bb2c['userProfileId']},'raw':!![]})[_0x258a('0x2f')](function(_0xf5de5e){if(_0xf5de5e&&_0xf5de5e[_0x258a('0x5e')]===0x0){return db[_0x258a('0x5f')]['create']({'name':_0x19b278[_0x258a('0x36')],'resourceId':_0x19b278['id'],'type':_0xf5de5e[_0x258a('0x36')],'sectionId':_0xf5de5e['id']},{})['then'](function(){return _0x38241f;});}else{return _0x38241f;}})[_0x258a('0x54')](function(_0x1c3592){logger['error'](_0x258a('0x60'),_0x1c3592);throw _0x1c3592;});}return _0x38241f;})['then'](respondWithResult(_0x2967bf,0xc9))[_0x258a('0x54')](handleError(_0x2967bf,null));};exports['update']=function(_0x481555,_0x4ba527){if(_0x481555['body']['id']){delete _0x481555[_0x258a('0x5a')]['id'];}return db[_0x258a('0x4f')]['find']({'where':{'id':_0x481555['params']['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x4ba527,null))[_0x258a('0x2f')](saveUpdates(_0x481555['body'],null))[_0x258a('0x2f')](respondWithResult(_0x4ba527,null))[_0x258a('0x54')](handleError(_0x4ba527,null));};exports[_0x258a('0x32')]=function(_0x421cc2,_0x342165){return db[_0x258a('0x4f')][_0x258a('0x58')]({'where':{'id':_0x421cc2['params']['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x342165,null))[_0x258a('0x2f')](removeEntity(_0x342165,null))[_0x258a('0x54')](handleError(_0x342165,null));};exports['describe']=function(_0x56cbb5,_0x15e302){return db[_0x258a('0x4f')][_0x258a('0x61')]()[_0x258a('0x2f')](respondWithResult(_0x15e302,null))[_0x258a('0x54')](handleError(_0x15e302,null));};exports[_0x258a('0x62')]=function(_0x126ece,_0x1edb9b,_0x33c88f){var _0x1a37f0={'raw':!![],'where':{}},_0x2c0519={},_0x2522c1;return db[_0x258a('0x4f')][_0x258a('0x63')]({'where':{'id':_0x126ece[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x1edb9b,null))['then'](function(_0x4378ce){if(_0x4378ce){_0x2522c1=_0x4378ce[_0x258a('0x30')]({'plain':!![]});_0x2c0519[_0x258a('0x3e')]=_[_0x258a('0x3f')](db['UserWhatsappQueue'][_0x258a('0x3a')]);_0x2c0519[_0x258a('0x40')]=_['keys'](_0x126ece['query']);_0x2c0519[_0x258a('0x41')]=_['intersection'](_0x2c0519[_0x258a('0x3e')],_0x2c0519['query']);_0x1a37f0[_0x258a('0x42')]=_['intersection'](_0x2c0519[_0x258a('0x3e')],qs['fields'](_0x126ece[_0x258a('0x40')]['fields']));_0x1a37f0[_0x258a('0x42')]=_0x1a37f0[_0x258a('0x42')]['length']?_0x1a37f0[_0x258a('0x42')]:_0x2c0519[_0x258a('0x3e')];if(!_0x126ece[_0x258a('0x40')][_0x258a('0x45')]('nolimit')){_0x1a37f0[_0x258a('0x27')]=qs[_0x258a('0x27')](_0x126ece[_0x258a('0x40')]['limit']);_0x1a37f0['offset']=qs[_0x258a('0x29')](_0x126ece['query'][_0x258a('0x29')]);}_0x1a37f0[_0x258a('0x47')]=qs[_0x258a('0x48')](_0x126ece[_0x258a('0x40')][_0x258a('0x48')]);_0x1a37f0['where']=qs[_0x258a('0x41')](_['pick'](_0x126ece[_0x258a('0x40')],_0x2c0519[_0x258a('0x41')]));_0x1a37f0[_0x258a('0x49')][_0x258a('0x64')]=_0x4378ce['id'];if(_0x126ece[_0x258a('0x40')][_0x258a('0x4b')]){_0x1a37f0[_0x258a('0x49')]=_['merge'](_0x1a37f0[_0x258a('0x49')],{'$or':_[_0x258a('0x39')](_0x1a37f0['attributes'],function(_0x304e61){var _0x3712fc={};_0x3712fc[_0x304e61]={'$like':'%'+_0x126ece[_0x258a('0x40')][_0x258a('0x4b')]+'%'};return _0x3712fc;})});}_0x1a37f0=_['merge']({},_0x1a37f0,_0x126ece[_0x258a('0x4e')]);return db['UserWhatsappQueue'][_0x258a('0x52')](_0x1a37f0);}})['then'](function(_0x5d0b46){if(_0x5d0b46){return db['User'][_0x258a('0x65')]({'where':{'id':_['map'](_0x5d0b46,_0x258a('0x66')),'role':_0x258a('0x67')},'attributes':['id',_0x258a('0x36'),_0x258a('0x68'),_0x258a('0x69'),_0x258a('0x6a')]});}})['then'](function(_0x431053){if(_0x431053){return{'count':_0x431053[_0x258a('0x28')],'rows':_[_0x258a('0x39')](_0x431053[_0x258a('0x53')],function(_0x13f17a){return{'membername':_0x13f17a['name'],'UserId':_0x13f17a['id'],'queue_name':_0x2522c1['name'],'WhatsappQueueId':_0x2522c1['id'],'interface':util[_0x258a('0x6b')]('%s/%s',_0x258a('0x6c'),_0x13f17a[_0x258a('0x36')]),'penalty':0x0,'paused':_0x13f17a[_0x258a('0x68')],'createdAt':_0x13f17a['createdAt'],'updatedAt':_0x13f17a[_0x258a('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x258a('0x2f')](respondWithFilteredResult(_0x1edb9b,_0x1a37f0))[_0x258a('0x54')](handleError(_0x1edb9b,null));};exports['getTeams']=function(_0x35c800,_0x18dcee,_0x2f4934){var _0x4e6906={};var _0x352882={};var _0x365df2;var _0x343117;return db['WhatsappQueue'][_0x258a('0x63')]({'where':{'id':_0x35c800[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x18dcee,null))[_0x258a('0x2f')](function(_0x393165){if(_0x393165){_0x365df2=_0x393165;_0x352882[_0x258a('0x3e')]=_[_0x258a('0x3f')](db['Team'][_0x258a('0x3a')]);_0x352882[_0x258a('0x40')]=_[_0x258a('0x3f')](_0x35c800[_0x258a('0x40')]);_0x352882[_0x258a('0x41')]=_[_0x258a('0x57')](_0x352882[_0x258a('0x3e')],_0x352882[_0x258a('0x40')]);_0x4e6906[_0x258a('0x42')]=_['intersection'](_0x352882[_0x258a('0x3e')],qs['fields'](_0x35c800[_0x258a('0x40')][_0x258a('0x43')]));_0x4e6906['attributes']=_0x4e6906[_0x258a('0x42')][_0x258a('0x44')]?_0x4e6906[_0x258a('0x42')]:_0x352882[_0x258a('0x3e')];_0x4e6906['order']=qs[_0x258a('0x48')](_0x35c800[_0x258a('0x40')][_0x258a('0x48')]);_0x4e6906[_0x258a('0x49')]=qs[_0x258a('0x41')](_['pick'](_0x35c800[_0x258a('0x40')],_0x352882[_0x258a('0x41')]));if(_0x35c800[_0x258a('0x40')][_0x258a('0x4b')]){_0x4e6906[_0x258a('0x49')]=_[_0x258a('0x4c')](_0x4e6906[_0x258a('0x49')],{'$or':_[_0x258a('0x39')](_0x4e6906[_0x258a('0x42')],function(_0xe6a188){var _0x4dc007={};_0x4dc007[_0xe6a188]={'$like':'%'+_0x35c800[_0x258a('0x40')]['filter']+'%'};return _0x4dc007;})});}_0x4e6906=_[_0x258a('0x4c')]({},_0x4e6906,_0x35c800[_0x258a('0x4e')]);return _0x365df2[_0x258a('0x6d')](_0x4e6906);}})[_0x258a('0x2f')](function(_0x47f37b){if(_0x47f37b){_0x343117=_0x47f37b[_0x258a('0x44')];if(!_0x35c800['query'][_0x258a('0x45')](_0x258a('0x46'))){_0x4e6906[_0x258a('0x27')]=qs[_0x258a('0x27')](_0x35c800[_0x258a('0x40')][_0x258a('0x27')]);_0x4e6906[_0x258a('0x29')]=qs[_0x258a('0x29')](_0x35c800[_0x258a('0x40')][_0x258a('0x29')]);}return _0x365df2[_0x258a('0x6d')](_0x4e6906);}})['then'](function(_0x4a2bfb){if(_0x4a2bfb){return _0x4a2bfb?{'count':_0x343117,'rows':_0x4a2bfb}:null;}})[_0x258a('0x2f')](respondWithResult(_0x18dcee,null))[_0x258a('0x54')](handleError(_0x18dcee,null));};exports['addTeams']=function(_0x529e5d,_0x2d9ffe,_0x335a6e){var _0x4dc492=_0x529e5d[_0x258a('0x5a')][_0x258a('0x6e')];return db['Team'][_0x258a('0x52')]({'where':{'id':_0x4dc492},'attributes':['id'],'include':[{'model':db['User'],'as':_0x258a('0x6f'),'attributes':['id','name',_0x258a('0x70'),_0x258a('0x71'),_0x258a('0x72')],'raw':!![]}]})[_0x258a('0x2f')](function(_0x171e4b){if(_0x171e4b){var _0x40a9bf=_[_0x258a('0x73')](_0x171e4b,function(_0x41a39f){var _0xf36eee=_0x41a39f[_0x258a('0x30')]({'plain':!![]});return _0xf36eee[_0x258a('0x6f')];});return db[_0x258a('0x4f')][_0x258a('0x58')]({'where':{'id':_0x529e5d[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](function(_0x7860d6){return db['sequelize'][_0x258a('0x74')](function(_0x3168b5){return _0x7860d6[_0x258a('0x75')](_0x4dc492,{'transaction':_0x3168b5})['then'](function(){return BPromise[_0x258a('0x76')](_0x40a9bf,function(_0xf347e9){return db[_0x258a('0x77')][_0x258a('0x78')]({'where':{'UserId':_0xf347e9['id'],'WhatsappQueueId':_0x529e5d[_0x258a('0x56')]['id']},'transaction':_0x3168b5});});})[_0x258a('0x2f')](function(){_0x40a9bf[_0x258a('0x79')](function(_0x954e14){socket[_0x258a('0x7a')](_0x258a('0x7b'),{'UserId':_0x954e14['id'],'WhatsappQueueId':_0x7860d6['id']});});});});});}})[_0x258a('0x2f')](respondWithStatusCode(_0x2d9ffe,null))['catch'](handleError(_0x2d9ffe,null));};exports[_0x258a('0x7c')]=function(_0x551902,_0x55105a,_0x4174a4){return db[_0x258a('0x7d')][_0x258a('0x52')]({'where':{'id':_0x551902[_0x258a('0x40')][_0x258a('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x258a('0x7e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x258a('0x2f')](handleEntityNotFound(_0x55105a,null))[_0x258a('0x2f')](function(_0x3ded79){var _0x3fa4bb=_['map'](_0x3ded79,'id');var _0x25cc76=[];var _0x3cf225=[];var _0x47b1cf=squel[_0x258a('0x7f')]();_0x47b1cf[_0x258a('0x80')]('tq.TeamId')[_0x258a('0x81')](_0x258a('0x82'),'tq')[_0x258a('0x83')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where']('WhatsappQueueId\x20=\x20?',_0x551902[_0x258a('0x56')]['id']);for(var _0x792636=0x0;_0x792636<_0x3ded79[_0x258a('0x44')];_0x792636+=0x1){let _0x41d5f5=_0x3ded79[_0x792636];for(var _0x23d79f=0x0;_0x23d79f<_0x41d5f5[_0x258a('0x6f')][_0x258a('0x44')];_0x23d79f+=0x1){let _0x182125=_0x41d5f5[_0x258a('0x6f')][_0x23d79f];var _0x1b94f8=_0x47b1cf['clone']();_0x1b94f8[_0x258a('0x49')]('ut.UserId\x20=\x20?',_0x182125['id']);_0x3cf225['push'](db[_0x258a('0x84')]['query'](_0x1b94f8['toString'](),{'type':db[_0x258a('0x84')][_0x258a('0x85')][_0x258a('0x86')]})[_0x258a('0x2f')](function(_0x3ef649){if(_0x3ef649[_0x258a('0x44')]===0x1){return _0x182125['id'];}else{var _0x463bba=_[_0x258a('0x87')](_[_0x258a('0x39')](_0x3ef649,'TeamId'),function(_0x564d80){return _[_0x258a('0x88')](_0x3fa4bb,_0x564d80);});if(_0x463bba){return _0x182125['id'];}}}));}}return BPromise[_0x258a('0x89')](_0x3cf225)[_0x258a('0x2f')](function(_0x2a9974){_0x25cc76=_(_0x25cc76)[_0x258a('0x8a')](_0x2a9974)['compact']()[_0x258a('0x8b')]();return db[_0x258a('0x4f')][_0x258a('0x58')]({'where':{'id':_0x551902[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](function(_0x35ae4d){return db[_0x258a('0x84')]['transaction'](function(_0x50b0ad){return _0x35ae4d[_0x258a('0x7c')](_0x551902[_0x258a('0x40')][_0x258a('0x6e')],{'transaction':_0x50b0ad})['then'](function(){if(!_[_0x258a('0x8c')](_0x25cc76)){return _0x35ae4d[_0x258a('0x8d')](_0x25cc76,{'transaction':_0x50b0ad});}})[_0x258a('0x2f')](function(){_0x25cc76[_0x258a('0x79')](function(_0x421e4a){socket['emit'](_0x258a('0x8e'),{'UserId':_0x421e4a,'WhatsappQueueId':_0x35ae4d['id']});});});});});});})[_0x258a('0x2f')](respondWithStatusCode(_0x55105a,null))['catch'](handleError(_0x55105a,null));};exports['addAgents']=function(_0x2c56a6,_0x43693f,_0x2866dc){return db['WhatsappQueue'][_0x258a('0x58')]({'where':{'id':_0x2c56a6[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x43693f,null))[_0x258a('0x2f')](function(_0x153b06){if(_0x153b06){return _0x153b06[_0x258a('0x8f')](_0x2c56a6['body'][_0x258a('0x6e')],_['omit'](_0x2c56a6[_0x258a('0x5a')],[_0x258a('0x6e'),'id'])||{})[_0x258a('0x90')](function(_0x4e10af){for(var _0x32bbb7=0x0;_0x32bbb7<_0x2c56a6[_0x258a('0x5a')][_0x258a('0x6e')][_0x258a('0x44')];_0x32bbb7+=0x1){socket['emit'](_0x258a('0x7b'),{'UserId':Number(_0x2c56a6['body']['ids'][_0x32bbb7]),'WhatsappQueueId':Number(_0x2c56a6[_0x258a('0x56')]['id'])});}return _0x4e10af;});}})[_0x258a('0x2f')](respondWithResult(_0x43693f,null))[_0x258a('0x54')](handleError(_0x43693f,null));};exports[_0x258a('0x8d')]=function(_0xc14091,_0x35be27,_0x4a0e2e){return db[_0x258a('0x4f')][_0x258a('0x58')]({'where':{'id':_0xc14091[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x35be27,null))[_0x258a('0x2f')](function(_0xdc2825){if(_0xdc2825){return _0xdc2825[_0x258a('0x8d')](_0xc14091[_0x258a('0x40')][_0x258a('0x6e')])[_0x258a('0x2f')](function(){if(_[_0x258a('0x91')](_0xc14091[_0x258a('0x40')][_0x258a('0x6e')])){for(var _0x1a661e=0x0;_0x1a661e<_0xc14091['query'][_0x258a('0x6e')][_0x258a('0x44')];_0x1a661e+=0x1){socket[_0x258a('0x7a')](_0x258a('0x8e'),{'UserId':Number(_0xc14091['query'][_0x258a('0x6e')][_0x1a661e]),'WhatsappQueueId':Number(_0xc14091[_0x258a('0x56')]['id'])});}}else{socket['emit'](_0x258a('0x8e'),{'UserId':Number(_0xc14091['query'][_0x258a('0x6e')]),'WhatsappQueueId':Number(_0xc14091[_0x258a('0x56')]['id'])});}});}})[_0x258a('0x2f')](respondWithStatusCode(_0x35be27,null))[_0x258a('0x54')](handleError(_0x35be27,null));};exports[_0x258a('0x92')]=function(_0x24a9a2,_0x5ed111,_0xf61d6f){var _0xe445c8={};var _0x511e95={};var _0x54d474;var _0x42c345;return db['WhatsappQueue']['findOne']({'where':{'id':_0x24a9a2[_0x258a('0x56')]['id']}})[_0x258a('0x2f')](handleEntityNotFound(_0x5ed111,null))[_0x258a('0x2f')](function(_0x287ec6){if(_0x287ec6){_0x54d474=_0x287ec6;_0x511e95[_0x258a('0x3e')]=_['keys'](db['User'][_0x258a('0x3a')]);_0x511e95[_0x258a('0x40')]=_[_0x258a('0x3f')](_0x24a9a2['query']);_0x511e95[_0x258a('0x41')]=_[_0x258a('0x57')](_0x511e95[_0x258a('0x3e')],_0x511e95[_0x258a('0x40')]);_0xe445c8[_0x258a('0x42')]=_[_0x258a('0x57')](_0x511e95[_0x258a('0x3e')],qs[_0x258a('0x43')](_0x24a9a2[_0x258a('0x40')][_0x258a('0x43')]));_0xe445c8[_0x258a('0x42')]=_0xe445c8[_0x258a('0x42')][_0x258a('0x44')]?_0xe445c8[_0x258a('0x42')]:_0x511e95[_0x258a('0x3e')];_0xe445c8[_0x258a('0x47')]=qs['sort'](_0x24a9a2[_0x258a('0x40')]['sort']);_0xe445c8[_0x258a('0x49')]=qs[_0x258a('0x41')](_[_0x258a('0x4a')](_0x24a9a2['query'],_0x511e95['filters']));if(_0x24a9a2[_0x258a('0x40')][_0x258a('0x4b')]){_0xe445c8[_0x258a('0x49')]=_[_0x258a('0x4c')](_0xe445c8[_0x258a('0x49')],{'$or':_[_0x258a('0x39')](_0xe445c8['attributes'],function(_0x508864){var _0x4ee4a1={};_0x4ee4a1[_0x508864]={'$like':'%'+_0x24a9a2['query'][_0x258a('0x4b')]+'%'};return _0x4ee4a1;})});}_0xe445c8=_[_0x258a('0x4c')]({},_0xe445c8,_0x24a9a2[_0x258a('0x4e')]);return _0x54d474[_0x258a('0x92')](_0xe445c8);}})[_0x258a('0x2f')](function(_0x452587){if(_0x452587){_0x42c345=_0x452587[_0x258a('0x44')];if(!_0x24a9a2[_0x258a('0x40')]['hasOwnProperty']('nolimit')){_0xe445c8['limit']=qs[_0x258a('0x27')](_0x24a9a2[_0x258a('0x40')][_0x258a('0x27')]);_0xe445c8['offset']=qs['offset'](_0x24a9a2[_0x258a('0x40')]['offset']);}return _0x54d474[_0x258a('0x92')](_0xe445c8);}})[_0x258a('0x2f')](function(_0x587a7a){if(_0x587a7a){return _0x587a7a?{'count':_0x42c345,'rows':_0x587a7a}:null;}})[_0x258a('0x2f')](respondWithResult(_0x5ed111,null))['catch'](handleError(_0x5ed111,null));};
\ No newline at end of file
+var _0x0ee6=['nolimit','WhatsappQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','whatsappPause','Team','order','getTeams','addTeams','ids','Agents','interface','flatMap','transaction','each','forEach','emit','userWhatsappQueue:save','removeTeams','field','from','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','sequelize','SELECT','every','TeamId','includes','all','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','getAgents','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','squel','crypto','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','WhatsappQueues','UserProfileResource','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne'];(function(_0x5c082a,_0x19ac27){var _0x3b60ac=function(_0x2f37ef){while(--_0x2f37ef){_0x5c082a['push'](_0x5c082a['shift']());}};_0x3b60ac(++_0x19ac27);}(_0x0ee6,0x133));var _0x60ee=function(_0xf62b5d,_0xae0e68){_0xf62b5d=_0xf62b5d-0x0;var _0x11e986=_0x0ee6[_0xf62b5d];return _0x11e986;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x60ee('0x0'));var zipdir=require(_0x60ee('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x60ee('0x2'));var moment=require('moment');var BPromise=require(_0x60ee('0x3'));var Mustache=require(_0x60ee('0x4'));var util=require(_0x60ee('0x5'));var path=require(_0x60ee('0x6'));var sox=require(_0x60ee('0x7'));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(_0x60ee('0x8'));var crypto=require(_0x60ee('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x60ee('0xa'));var toCsv=require('to-csv');var querystring=require(_0x60ee('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x60ee('0xc'));var hardwareService=require(_0x60ee('0xd'));var logger=require(_0x60ee('0xe'))(_0x60ee('0xf'));var utils=require('../../config/utils');var config=require(_0x60ee('0x10'));var licenseUtil=require(_0x60ee('0x11'));var db=require(_0x60ee('0x12'))['db'];config[_0x60ee('0x13')]=_['defaults'](config[_0x60ee('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0x60ee('0x14'))(new Redis(config[_0x60ee('0x13')]));require('./whatsappQueue.socket')[_0x60ee('0x15')](socket);function respondWithStatusCode(_0x4a60aa,_0x2d0191){_0x2d0191=_0x2d0191||0xcc;return function(_0x315f67){if(_0x315f67){return _0x4a60aa[_0x60ee('0x16')](_0x2d0191);}return _0x4a60aa[_0x60ee('0x17')](_0x2d0191)[_0x60ee('0x18')]();};}function respondWithResult(_0x2c9114,_0x5378de){_0x5378de=_0x5378de||0xc8;return function(_0x485d30){if(_0x485d30){return _0x2c9114[_0x60ee('0x17')](_0x5378de)['json'](_0x485d30);}};}function respondWithFilteredResult(_0x443550,_0x989507){return function(_0x53b0f4){if(_0x53b0f4){var _0x1ddc36=typeof _0x989507[_0x60ee('0x19')]===_0x60ee('0x1a')&&typeof _0x989507[_0x60ee('0x1b')]==='undefined';var _0xa398b1=_0x53b0f4[_0x60ee('0x1c')];var _0x329a9c=_0x1ddc36?0x0:_0x989507[_0x60ee('0x19')];var _0x4bdc37=_0x1ddc36?_0x53b0f4[_0x60ee('0x1c')]:_0x989507['offset']+_0x989507['limit'];var _0x3b3434;if(_0x4bdc37>=_0xa398b1){_0x4bdc37=_0xa398b1;_0x3b3434=0xc8;}else{_0x3b3434=0xce;}_0x443550['status'](_0x3b3434);return _0x443550[_0x60ee('0x1d')](_0x60ee('0x1e'),_0x329a9c+'-'+_0x4bdc37+'/'+_0xa398b1)[_0x60ee('0x1f')](_0x53b0f4);}return null;};}function patchUpdates(_0x216831){return function(_0x1f4717){try{jsonpatch[_0x60ee('0x20')](_0x1f4717,_0x216831,!![]);}catch(_0x5b2051){return BPromise[_0x60ee('0x21')](_0x5b2051);}return _0x1f4717['save']();};}function saveUpdates(_0x3af4c4,_0x40588b){return function(_0x3ba806){if(_0x3ba806){return _0x3ba806[_0x60ee('0x22')](_0x3af4c4)[_0x60ee('0x23')](function(_0x58580c){return _0x58580c;});}return null;};}function removeEntity(_0x1f5145,_0x2c4faf){return function(_0x2c5382){if(_0x2c5382){return _0x2c5382[_0x60ee('0x24')]()['then'](function(){var _0x334e42=_0x2c5382[_0x60ee('0x25')]({'plain':!![]});var _0x5105a0=_0x60ee('0x26');return db[_0x60ee('0x27')]['destroy']({'where':{'type':_0x5105a0,'resourceId':_0x334e42['id']}})['then'](function(){return _0x2c5382;});})['then'](function(){_0x1f5145['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4be012,_0x51fa9c){return function(_0x2984d6){if(!_0x2984d6){_0x4be012['sendStatus'](0x194);}return _0x2984d6;};}function handleError(_0x11a976,_0x1053f2){_0x1053f2=_0x1053f2||0x1f4;return function(_0x390002){logger[_0x60ee('0x28')](_0x390002[_0x60ee('0x29')]);if(_0x390002['name']){delete _0x390002[_0x60ee('0x2a')];}_0x11a976[_0x60ee('0x17')](_0x1053f2)[_0x60ee('0x2b')](_0x390002);};}exports[_0x60ee('0x2c')]=function(_0x3184d6,_0x424eac){var _0x4c02b1={},_0x14cc64={},_0x2b900a={'count':0x0,'rows':[]};var _0x423bb5=_[_0x60ee('0x2d')](db[_0x60ee('0x2e')][_0x60ee('0x2f')],function(_0x3be919){return{'name':_0x3be919[_0x60ee('0x30')],'type':_0x3be919[_0x60ee('0x31')][_0x60ee('0x32')]};});_0x14cc64[_0x60ee('0x33')]=_[_0x60ee('0x2d')](_0x423bb5,_0x60ee('0x2a'));_0x14cc64[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x3184d6[_0x60ee('0x34')]);_0x14cc64[_0x60ee('0x36')]=_[_0x60ee('0x37')](_0x14cc64[_0x60ee('0x33')],_0x14cc64[_0x60ee('0x34')]);_0x4c02b1[_0x60ee('0x38')]=_[_0x60ee('0x37')](_0x14cc64['model'],qs[_0x60ee('0x39')](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x39')]));_0x4c02b1['attributes']=_0x4c02b1['attributes']['length']?_0x4c02b1[_0x60ee('0x38')]:_0x14cc64['model'];if(!_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3a')]('nolimit')){_0x4c02b1[_0x60ee('0x1b')]=qs['limit'](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x4c02b1['offset']=qs[_0x60ee('0x19')](_0x3184d6[_0x60ee('0x34')][_0x60ee('0x19')]);}_0x4c02b1['order']=qs[_0x60ee('0x3b')](_0x3184d6['query'][_0x60ee('0x3b')]);_0x4c02b1[_0x60ee('0x3c')]=qs[_0x60ee('0x36')](_[_0x60ee('0x3d')](_0x3184d6[_0x60ee('0x34')],_0x14cc64[_0x60ee('0x36')]),_0x423bb5);if(_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x4c02b1[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x4c02b1[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x423bb5,function(_0x362493){if(_0x362493[_0x60ee('0x31')]!==_0x60ee('0x40')){var _0x3fa7fa={};_0x3fa7fa[_0x362493[_0x60ee('0x2a')]]={'$like':'%'+_0x3184d6[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x3fa7fa;}})});}_0x4c02b1=_[_0x60ee('0x3f')]({},_0x4c02b1,_0x3184d6[_0x60ee('0x41')]);var _0x1713f2={'where':_0x4c02b1['where']};return db[_0x60ee('0x2e')][_0x60ee('0x1c')](_0x1713f2)['then'](function(_0x51a2cb){_0x2b900a[_0x60ee('0x1c')]=_0x51a2cb;if(_0x3184d6[_0x60ee('0x34')][_0x60ee('0x42')]){_0x4c02b1[_0x60ee('0x43')]=[{'all':!![]}];}return db[_0x60ee('0x2e')][_0x60ee('0x44')](_0x4c02b1);})[_0x60ee('0x23')](function(_0x35749f){_0x2b900a['rows']=_0x35749f;return _0x2b900a;})[_0x60ee('0x23')](respondWithFilteredResult(_0x424eac,_0x4c02b1))[_0x60ee('0x45')](handleError(_0x424eac,null));};exports[_0x60ee('0x46')]=function(_0x2c7f6b,_0x3d2f43){var _0x3a1145={'raw':!![],'where':{'id':_0x2c7f6b[_0x60ee('0x47')]['id']}},_0x564777={};_0x564777['model']=_['keys'](db['WhatsappQueue'][_0x60ee('0x2f')]);_0x564777[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x2c7f6b[_0x60ee('0x34')]);_0x564777[_0x60ee('0x36')]=_['intersection'](_0x564777[_0x60ee('0x33')],_0x564777[_0x60ee('0x34')]);_0x3a1145['attributes']=_[_0x60ee('0x37')](_0x564777[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x2c7f6b['query']['fields']));_0x3a1145[_0x60ee('0x38')]=_0x3a1145[_0x60ee('0x38')][_0x60ee('0x48')]?_0x3a1145[_0x60ee('0x38')]:_0x564777[_0x60ee('0x33')];if(_0x2c7f6b[_0x60ee('0x34')][_0x60ee('0x42')]){_0x3a1145[_0x60ee('0x43')]=[{'all':!![]}];}_0x3a1145=_[_0x60ee('0x3f')]({},_0x3a1145,_0x2c7f6b[_0x60ee('0x41')]);return db[_0x60ee('0x2e')][_0x60ee('0x49')](_0x3a1145)['then'](handleEntityNotFound(_0x3d2f43,null))[_0x60ee('0x23')](respondWithResult(_0x3d2f43,null))[_0x60ee('0x45')](handleError(_0x3d2f43,null));};exports[_0x60ee('0x4a')]=function(_0xee961b,_0x2dd5e3){return db[_0x60ee('0x2e')][_0x60ee('0x4a')](_0xee961b[_0x60ee('0x4b')],{})[_0x60ee('0x23')](function(_0x193c87){var _0xd32fd4=_0xee961b[_0x60ee('0x4c')]['get']({'plain':!![]});if(!_0xd32fd4)throw new Error(_0x60ee('0x4d'));if(_0xd32fd4[_0x60ee('0x4e')]===_0x60ee('0x4c')){var _0x54d6c2=_0x193c87[_0x60ee('0x25')]({'plain':!![]});var _0x3905bf=_0x60ee('0x26');return db[_0x60ee('0x4f')]['find']({'where':{'name':_0x3905bf,'userProfileId':_0xd32fd4['userProfileId']},'raw':!![]})[_0x60ee('0x23')](function(_0x546e07){if(_0x546e07&&_0x546e07['autoAssociation']===0x0){return db[_0x60ee('0x27')][_0x60ee('0x4a')]({'name':_0x54d6c2['name'],'resourceId':_0x54d6c2['id'],'type':_0x546e07[_0x60ee('0x2a')],'sectionId':_0x546e07['id']},{})[_0x60ee('0x23')](function(){return _0x193c87;});}else{return _0x193c87;}})[_0x60ee('0x45')](function(_0x4573aa){logger[_0x60ee('0x28')](_0x60ee('0x50'),_0x4573aa);throw _0x4573aa;});}return _0x193c87;})[_0x60ee('0x23')](respondWithResult(_0x2dd5e3,0xc9))['catch'](handleError(_0x2dd5e3,null));};exports['update']=function(_0x2bd5c0,_0x516f1e){if(_0x2bd5c0['body']['id']){delete _0x2bd5c0['body']['id'];}return db['WhatsappQueue'][_0x60ee('0x49')]({'where':{'id':_0x2bd5c0[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x516f1e,null))[_0x60ee('0x23')](saveUpdates(_0x2bd5c0[_0x60ee('0x4b')],null))['then'](respondWithResult(_0x516f1e,null))[_0x60ee('0x45')](handleError(_0x516f1e,null));};exports['destroy']=function(_0x57b862,_0x40aa72){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x57b862[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x40aa72,null))[_0x60ee('0x23')](removeEntity(_0x40aa72,null))[_0x60ee('0x45')](handleError(_0x40aa72,null));};exports[_0x60ee('0x51')]=function(_0x2dd5e,_0x3b5415){return db['WhatsappQueue']['describe']()[_0x60ee('0x23')](respondWithResult(_0x3b5415,null))[_0x60ee('0x45')](handleError(_0x3b5415,null));};exports['getMembers']=function(_0x2df078,_0x5c10e6,_0x3a055f){var _0x254c57={'raw':!![],'where':{}},_0x248727={},_0x5a98a7;return db[_0x60ee('0x2e')][_0x60ee('0x52')]({'where':{'id':_0x2df078[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x5c10e6,null))['then'](function(_0x303e93){if(_0x303e93){_0x5a98a7=_0x303e93[_0x60ee('0x25')]({'plain':!![]});_0x248727[_0x60ee('0x33')]=_[_0x60ee('0x35')](db['UserWhatsappQueue']['rawAttributes']);_0x248727[_0x60ee('0x34')]=_[_0x60ee('0x35')](_0x2df078[_0x60ee('0x34')]);_0x248727['filters']=_[_0x60ee('0x37')](_0x248727[_0x60ee('0x33')],_0x248727['query']);_0x254c57['attributes']=_[_0x60ee('0x37')](_0x248727[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x2df078[_0x60ee('0x34')]['fields']));_0x254c57[_0x60ee('0x38')]=_0x254c57['attributes']['length']?_0x254c57[_0x60ee('0x38')]:_0x248727['model'];if(!_0x2df078[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x254c57[_0x60ee('0x1b')]=qs[_0x60ee('0x1b')](_0x2df078[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x254c57[_0x60ee('0x19')]=qs['offset'](_0x2df078[_0x60ee('0x34')][_0x60ee('0x19')]);}_0x254c57['order']=qs[_0x60ee('0x3b')](_0x2df078[_0x60ee('0x34')]['sort']);_0x254c57[_0x60ee('0x3c')]=qs['filters'](_[_0x60ee('0x3d')](_0x2df078['query'],_0x248727[_0x60ee('0x36')]));_0x254c57[_0x60ee('0x3c')][_0x60ee('0x54')]=_0x303e93['id'];if(_0x2df078[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x254c57[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x254c57[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x254c57['attributes'],function(_0x6b9d8f){var _0x2dd915={};_0x2dd915[_0x6b9d8f]={'$like':'%'+_0x2df078[_0x60ee('0x34')]['filter']+'%'};return _0x2dd915;})});}_0x254c57=_['merge']({},_0x254c57,_0x2df078['options']);return db['UserWhatsappQueue'][_0x60ee('0x44')](_0x254c57);}})[_0x60ee('0x23')](function(_0x566658){if(_0x566658){return db[_0x60ee('0x55')][_0x60ee('0x56')]({'where':{'id':_[_0x60ee('0x2d')](_0x566658,_0x60ee('0x57')),'role':_0x60ee('0x58')},'attributes':['id',_0x60ee('0x2a'),'whatsappPause',_0x60ee('0x59'),_0x60ee('0x5a')]});}})[_0x60ee('0x23')](function(_0x369324){if(_0x369324){return{'count':_0x369324[_0x60ee('0x1c')],'rows':_[_0x60ee('0x2d')](_0x369324['rows'],function(_0x2991b5){return{'membername':_0x2991b5[_0x60ee('0x2a')],'UserId':_0x2991b5['id'],'queue_name':_0x5a98a7[_0x60ee('0x2a')],'WhatsappQueueId':_0x5a98a7['id'],'interface':util[_0x60ee('0x5b')](_0x60ee('0x5c'),'SIP',_0x2991b5[_0x60ee('0x2a')]),'penalty':0x0,'paused':_0x2991b5[_0x60ee('0x5d')],'createdAt':_0x2991b5[_0x60ee('0x5a')],'updatedAt':_0x2991b5[_0x60ee('0x59')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x60ee('0x23')](respondWithFilteredResult(_0x5c10e6,_0x254c57))[_0x60ee('0x45')](handleError(_0x5c10e6,null));};exports['getTeams']=function(_0x238725,_0x4bd8dd,_0x7b4ec3){var _0x3cc476={};var _0x56e26c={};var _0x49b48e;var _0x558fda;return db[_0x60ee('0x2e')][_0x60ee('0x52')]({'where':{'id':_0x238725[_0x60ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x4bd8dd,null))[_0x60ee('0x23')](function(_0x39a602){if(_0x39a602){_0x49b48e=_0x39a602;_0x56e26c[_0x60ee('0x33')]=_['keys'](db[_0x60ee('0x5e')]['rawAttributes']);_0x56e26c['query']=_[_0x60ee('0x35')](_0x238725['query']);_0x56e26c[_0x60ee('0x36')]=_['intersection'](_0x56e26c[_0x60ee('0x33')],_0x56e26c['query']);_0x3cc476['attributes']=_[_0x60ee('0x37')](_0x56e26c[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x238725[_0x60ee('0x34')]['fields']));_0x3cc476[_0x60ee('0x38')]=_0x3cc476[_0x60ee('0x38')]['length']?_0x3cc476[_0x60ee('0x38')]:_0x56e26c[_0x60ee('0x33')];_0x3cc476[_0x60ee('0x5f')]=qs['sort'](_0x238725[_0x60ee('0x34')][_0x60ee('0x3b')]);_0x3cc476[_0x60ee('0x3c')]=qs[_0x60ee('0x36')](_[_0x60ee('0x3d')](_0x238725['query'],_0x56e26c['filters']));if(_0x238725[_0x60ee('0x34')][_0x60ee('0x3e')]){_0x3cc476[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x3cc476[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x3cc476[_0x60ee('0x38')],function(_0x93c419){var _0x38443e={};_0x38443e[_0x93c419]={'$like':'%'+_0x238725[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x38443e;})});}_0x3cc476=_[_0x60ee('0x3f')]({},_0x3cc476,_0x238725[_0x60ee('0x41')]);return _0x49b48e[_0x60ee('0x60')](_0x3cc476);}})[_0x60ee('0x23')](function(_0x5b03){if(_0x5b03){_0x558fda=_0x5b03[_0x60ee('0x48')];if(!_0x238725[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x3cc476[_0x60ee('0x1b')]=qs['limit'](_0x238725['query']['limit']);_0x3cc476[_0x60ee('0x19')]=qs['offset'](_0x238725['query']['offset']);}return _0x49b48e[_0x60ee('0x60')](_0x3cc476);}})['then'](function(_0x42b167){if(_0x42b167){return _0x42b167?{'count':_0x558fda,'rows':_0x42b167}:null;}})[_0x60ee('0x23')](respondWithResult(_0x4bd8dd,null))[_0x60ee('0x45')](handleError(_0x4bd8dd,null));};exports[_0x60ee('0x61')]=function(_0x21298d,_0x67325,_0x1f0f66){var _0x410b34=_0x21298d[_0x60ee('0x4b')][_0x60ee('0x62')];return db[_0x60ee('0x5e')][_0x60ee('0x44')]({'where':{'id':_0x410b34},'attributes':['id'],'include':[{'model':db[_0x60ee('0x55')],'as':_0x60ee('0x63'),'attributes':['id',_0x60ee('0x2a'),'online','voicePause',_0x60ee('0x64')],'raw':!![]}]})[_0x60ee('0x23')](function(_0x2cb872){if(_0x2cb872){var _0x33cf63=_[_0x60ee('0x65')](_0x2cb872,function(_0x34bbf7){var _0x16213e=_0x34bbf7[_0x60ee('0x25')]({'plain':!![]});return _0x16213e[_0x60ee('0x63')];});return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x21298d[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](function(_0x48b79f){return db['sequelize'][_0x60ee('0x66')](function(_0x5b1af0){return _0x48b79f['addTeams'](_0x410b34,{'transaction':_0x5b1af0})[_0x60ee('0x23')](function(){return BPromise[_0x60ee('0x67')](_0x33cf63,function(_0x547131){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0x547131['id'],'WhatsappQueueId':_0x21298d[_0x60ee('0x47')]['id']},'transaction':_0x5b1af0});});})[_0x60ee('0x23')](function(){_0x33cf63[_0x60ee('0x68')](function(_0x12d4de){socket[_0x60ee('0x69')](_0x60ee('0x6a'),{'UserId':_0x12d4de['id'],'WhatsappQueueId':_0x48b79f['id']});});});});});}})['then'](respondWithStatusCode(_0x67325,null))['catch'](handleError(_0x67325,null));};exports[_0x60ee('0x6b')]=function(_0x581e34,_0x3402e5,_0x5b014d){return db[_0x60ee('0x5e')][_0x60ee('0x44')]({'where':{'id':_0x581e34[_0x60ee('0x34')]['ids']},'attributes':['id'],'include':[{'model':db[_0x60ee('0x55')],'as':_0x60ee('0x63'),'attributes':['id'],'raw':!![]}]})[_0x60ee('0x23')](handleEntityNotFound(_0x3402e5,null))[_0x60ee('0x23')](function(_0xe7b28a){var _0x6b51ce=_[_0x60ee('0x2d')](_0xe7b28a,'id');var _0x3d4811=[];var _0x44a6ab=[];var _0x4fea48=squel['select']();_0x4fea48[_0x60ee('0x6c')]('tq.TeamId')[_0x60ee('0x6d')](_0x60ee('0x6e'),'tq')['join'](_0x60ee('0x6f'),'ut',_0x60ee('0x70'))[_0x60ee('0x3c')](_0x60ee('0x71'),_0x581e34[_0x60ee('0x47')]['id']);for(var _0x548980=0x0;_0x548980<_0xe7b28a[_0x60ee('0x48')];_0x548980+=0x1){let _0xd1628a=_0xe7b28a[_0x548980];for(var _0x592bc0=0x0;_0x592bc0<_0xd1628a[_0x60ee('0x63')]['length'];_0x592bc0+=0x1){let _0x34ef3c=_0xd1628a[_0x60ee('0x63')][_0x592bc0];var _0x296a73=_0x4fea48[_0x60ee('0x72')]();_0x296a73['where']('ut.UserId\x20=\x20?',_0x34ef3c['id']);_0x44a6ab[_0x60ee('0x73')](db['sequelize']['query'](_0x296a73['toString'](),{'type':db[_0x60ee('0x74')]['QueryTypes'][_0x60ee('0x75')]})[_0x60ee('0x23')](function(_0x47f8b3){if(_0x47f8b3[_0x60ee('0x48')]===0x1){return _0x34ef3c['id'];}else{var _0x511129=_[_0x60ee('0x76')](_[_0x60ee('0x2d')](_0x47f8b3,_0x60ee('0x77')),function(_0x8c8dea){return _[_0x60ee('0x78')](_0x6b51ce,_0x8c8dea);});if(_0x511129){return _0x34ef3c['id'];}}}));}}return BPromise[_0x60ee('0x79')](_0x44a6ab)[_0x60ee('0x23')](function(_0x4e1b8d){_0x3d4811=_(_0x3d4811)['union'](_0x4e1b8d)['compact']()[_0x60ee('0x7a')]();return db[_0x60ee('0x2e')]['find']({'where':{'id':_0x581e34[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](function(_0x2a1d1b){return db[_0x60ee('0x74')]['transaction'](function(_0x954977){return _0x2a1d1b[_0x60ee('0x6b')](_0x581e34[_0x60ee('0x34')][_0x60ee('0x62')],{'transaction':_0x954977})[_0x60ee('0x23')](function(){if(!_[_0x60ee('0x7b')](_0x3d4811)){return _0x2a1d1b[_0x60ee('0x7c')](_0x3d4811,{'transaction':_0x954977});}})['then'](function(){_0x3d4811[_0x60ee('0x68')](function(_0xa6aa38){socket[_0x60ee('0x69')](_0x60ee('0x7d'),{'UserId':_0xa6aa38,'WhatsappQueueId':_0x2a1d1b['id']});});});});});});})[_0x60ee('0x23')](respondWithStatusCode(_0x3402e5,null))[_0x60ee('0x45')](handleError(_0x3402e5,null));};exports[_0x60ee('0x7e')]=function(_0x43b846,_0x1a1aaf,_0x1f92aa){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x43b846['params']['id']}})['then'](handleEntityNotFound(_0x1a1aaf,null))[_0x60ee('0x23')](function(_0x2fb97d){if(_0x2fb97d){return _0x2fb97d[_0x60ee('0x7e')](_0x43b846[_0x60ee('0x4b')][_0x60ee('0x62')],_[_0x60ee('0x7f')](_0x43b846[_0x60ee('0x4b')],[_0x60ee('0x62'),'id'])||{})[_0x60ee('0x80')](function(_0x402d0d){for(var _0x68c76d=0x0;_0x68c76d<_0x43b846[_0x60ee('0x4b')][_0x60ee('0x62')][_0x60ee('0x48')];_0x68c76d+=0x1){socket['emit'](_0x60ee('0x6a'),{'UserId':Number(_0x43b846['body'][_0x60ee('0x62')][_0x68c76d]),'WhatsappQueueId':Number(_0x43b846['params']['id'])});}return _0x402d0d;});}})[_0x60ee('0x23')](respondWithResult(_0x1a1aaf,null))[_0x60ee('0x45')](handleError(_0x1a1aaf,null));};exports[_0x60ee('0x7c')]=function(_0x1926ea,_0x5140ab,_0x1e5a04){return db[_0x60ee('0x2e')][_0x60ee('0x49')]({'where':{'id':_0x1926ea[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x5140ab,null))[_0x60ee('0x23')](function(_0x4681bf){if(_0x4681bf){return _0x4681bf[_0x60ee('0x7c')](_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')])[_0x60ee('0x23')](function(){if(_['isArray'](_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')])){for(var _0x10441d=0x0;_0x10441d<_0x1926ea[_0x60ee('0x34')]['ids'][_0x60ee('0x48')];_0x10441d+=0x1){socket[_0x60ee('0x69')]('userWhatsappQueue:remove',{'UserId':Number(_0x1926ea[_0x60ee('0x34')][_0x60ee('0x62')][_0x10441d]),'WhatsappQueueId':Number(_0x1926ea[_0x60ee('0x47')]['id'])});}}else{socket[_0x60ee('0x69')](_0x60ee('0x7d'),{'UserId':Number(_0x1926ea['query'][_0x60ee('0x62')]),'WhatsappQueueId':Number(_0x1926ea[_0x60ee('0x47')]['id'])});}});}})[_0x60ee('0x23')](respondWithStatusCode(_0x5140ab,null))['catch'](handleError(_0x5140ab,null));};exports[_0x60ee('0x81')]=function(_0x586c3f,_0x24d435,_0x2ad724){var _0x540381={};var _0xd9d133={};var _0x472394;var _0x5eb02a;return db['WhatsappQueue']['findOne']({'where':{'id':_0x586c3f[_0x60ee('0x47')]['id']}})[_0x60ee('0x23')](handleEntityNotFound(_0x24d435,null))[_0x60ee('0x23')](function(_0x163367){if(_0x163367){_0x472394=_0x163367;_0xd9d133[_0x60ee('0x33')]=_[_0x60ee('0x35')](db[_0x60ee('0x55')]['rawAttributes']);_0xd9d133['query']=_['keys'](_0x586c3f[_0x60ee('0x34')]);_0xd9d133['filters']=_['intersection'](_0xd9d133[_0x60ee('0x33')],_0xd9d133['query']);_0x540381[_0x60ee('0x38')]=_['intersection'](_0xd9d133[_0x60ee('0x33')],qs[_0x60ee('0x39')](_0x586c3f['query'][_0x60ee('0x39')]));_0x540381[_0x60ee('0x38')]=_0x540381[_0x60ee('0x38')][_0x60ee('0x48')]?_0x540381[_0x60ee('0x38')]:_0xd9d133[_0x60ee('0x33')];_0x540381['order']=qs[_0x60ee('0x3b')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3b')]);_0x540381[_0x60ee('0x3c')]=qs['filters'](_[_0x60ee('0x3d')](_0x586c3f[_0x60ee('0x34')],_0xd9d133[_0x60ee('0x36')]));if(_0x586c3f[_0x60ee('0x34')]['filter']){_0x540381[_0x60ee('0x3c')]=_[_0x60ee('0x3f')](_0x540381[_0x60ee('0x3c')],{'$or':_[_0x60ee('0x2d')](_0x540381[_0x60ee('0x38')],function(_0x56e832){var _0x10c4bc={};_0x10c4bc[_0x56e832]={'$like':'%'+_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3e')]+'%'};return _0x10c4bc;})});}_0x540381=_[_0x60ee('0x3f')]({},_0x540381,_0x586c3f[_0x60ee('0x41')]);return _0x472394['getAgents'](_0x540381);}})['then'](function(_0x2bfac8){if(_0x2bfac8){_0x5eb02a=_0x2bfac8[_0x60ee('0x48')];if(!_0x586c3f[_0x60ee('0x34')][_0x60ee('0x3a')](_0x60ee('0x53'))){_0x540381['limit']=qs[_0x60ee('0x1b')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x1b')]);_0x540381[_0x60ee('0x19')]=qs[_0x60ee('0x19')](_0x586c3f[_0x60ee('0x34')][_0x60ee('0x19')]);}return _0x472394['getAgents'](_0x540381);}})[_0x60ee('0x23')](function(_0x1b48e3){if(_0x1b48e3){return _0x1b48e3?{'count':_0x5eb02a,'rows':_0x1b48e3}:null;}})[_0x60ee('0x23')](respondWithResult(_0x24d435,null))[_0x60ee('0x45')](handleError(_0x24d435,null));};
\ No newline at end of file
index d0a76d0..7149f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3623=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue','save'];(function(_0x19d7e9,_0x359dd7){var _0x3b74db=function(_0x5bb01f){while(--_0x5bb01f){_0x19d7e9['push'](_0x19d7e9['shift']());}};_0x3b74db(++_0x359dd7);}(_0x3623,0x1b4));var _0x3362=function(_0x40ebff,_0x1dd15e){_0x40ebff=_0x40ebff-0x0;var _0x40122a=_0x3623[_0x40ebff];return _0x40122a;};'use strict';var EventEmitter=require(_0x3362('0x0'));var WhatsappQueue=require(_0x3362('0x1'))['db'][_0x3362('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3362('0x3'),'afterUpdate':_0x3362('0x4'),'afterDestroy':_0x3362('0x5')};function emitEvent(_0x287c26){return function(_0x287b8c,_0x1bf506,_0x3142d6){WhatsappQueueEvents[_0x3362('0x6')](_0x287c26+':'+_0x287b8c['id'],_0x287b8c);WhatsappQueueEvents['emit'](_0x287c26,_0x287b8c);_0x3142d6(null);};}for(var e in events){if(events[_0x3362('0x7')](e)){var event=events[e];WhatsappQueue[_0x3362('0x8')](e,emitEvent(event));}}module[_0x3362('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x06d1=['events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x512832,_0x26efd7){var _0x674e7a=function(_0x54b6d0){while(--_0x54b6d0){_0x512832['push'](_0x512832['shift']());}};_0x674e7a(++_0x26efd7);}(_0x06d1,0x197));var _0x106d=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x06d1[_0x53ccf2];return _0x5a2964;};'use strict';var EventEmitter=require(_0x106d('0x0'));var WhatsappQueue=require(_0x106d('0x1'))['db'][_0x106d('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x106d('0x3')](0x0);var events={'afterCreate':_0x106d('0x4'),'afterUpdate':_0x106d('0x5'),'afterDestroy':_0x106d('0x6')};function emitEvent(_0xeb62f0){return function(_0x181714,_0x1195d2,_0x68b646){WhatsappQueueEvents['emit'](_0xeb62f0+':'+_0x181714['id'],_0x181714);WhatsappQueueEvents[_0x106d('0x7')](_0xeb62f0,_0x181714);_0x68b646(null);};}for(var e in events){if(events[_0x106d('0x8')](e)){var event=events[e];WhatsappQueue[_0x106d('0x9')](e,emitEvent(event));}}module[_0x106d('0xa')]=WhatsappQueueEvents;
\ No newline at end of file
index e3c6f0f..c325f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49ab=['whatsapp_queues','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','define','WhatsappQueue'];(function(_0x1b109e,_0x517c1b){var _0x15496a=function(_0x4bbfe9){while(--_0x4bbfe9){_0x1b109e['push'](_0x1b109e['shift']());}};_0x15496a(++_0x517c1b);}(_0x49ab,0xdd));var _0xb49a=function(_0x37cd54,_0x589c46){_0x37cd54=_0x37cd54-0x0;var _0x341b1b=_0x49ab[_0x37cd54];return _0x341b1b;};'use strict';var _=require(_0xb49a('0x0'));var util=require('util');var logger=require(_0xb49a('0x1'))('api');var moment=require(_0xb49a('0x2'));var BPromise=require(_0xb49a('0x3'));var rp=require(_0xb49a('0x4'));var fs=require('fs');var path=require(_0xb49a('0x5'));var rimraf=require(_0xb49a('0x6'));var config=require('../../config/environment');var attributes=require(_0xb49a('0x7'));module['exports']=function(_0x3a48cd,_0x10ad3f){return _0x3a48cd[_0xb49a('0x8')](_0xb49a('0x9'),attributes,{'tableName':_0xb49a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6aa2=['whatsapp_queues','lodash','api','moment','request-promise','path','../../config/environment','./whatsappQueue.attributes','exports'];(function(_0x233289,_0x4a511a){var _0x48ba82=function(_0x687235){while(--_0x687235){_0x233289['push'](_0x233289['shift']());}};_0x48ba82(++_0x4a511a);}(_0x6aa2,0xfd));var _0x26aa=function(_0x171520,_0x1cee8c){_0x171520=_0x171520-0x0;var _0x3cc729=_0x6aa2[_0x171520];return _0x3cc729;};'use strict';var _=require(_0x26aa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x26aa('0x1'));var moment=require(_0x26aa('0x2'));var BPromise=require('bluebird');var rp=require(_0x26aa('0x3'));var fs=require('fs');var path=require(_0x26aa('0x4'));var rimraf=require('rimraf');var config=require(_0x26aa('0x5'));var attributes=require(_0x26aa('0x6'));module[_0x26aa('0x7')]=function(_0x5ad9bf,_0x30bd79){return _0x5ad9bf['define']('WhatsappQueue',attributes,{'tableName':_0x26aa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4fc1714..c5cc1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b3a=['include','map','model','stringify','WhatsappQueue','find','ShowWhatsappQueue','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','then','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','code','error','message','WhatsappQueue,\x20%s,\x20%s','result','catch','GetWhatsappQueue','findAll','options','raw','where','attributes'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x0b3a,0x1e7));var _0xa0b3=function(_0x3e478c,_0x152670){_0x3e478c=_0x3e478c-0x0;var _0x29ef89=_0x0b3a[_0x3e478c];return _0x29ef89;};'use strict';var _=require(_0xa0b3('0x0'));var util=require(_0xa0b3('0x1'));var moment=require(_0xa0b3('0x2'));var BPromise=require(_0xa0b3('0x3'));var rs=require(_0xa0b3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa0b3('0x5'));var logger=require(_0xa0b3('0x6'))('rpc');var config=require(_0xa0b3('0x7'));var jayson=require(_0xa0b3('0x8'));var client=jayson[_0xa0b3('0x9')][_0xa0b3('0xa')]({'port':0x232a});config[_0xa0b3('0xb')]=_['defaults'](config[_0xa0b3('0xb')],{'host':_0xa0b3('0xc'),'port':0x18eb});var socket=require(_0xa0b3('0xd'))(new Redis(config[_0xa0b3('0xb')]));require(_0xa0b3('0xe'))[_0xa0b3('0xf')](socket);function respondWithRpcPromise(_0x737297,_0x29a1aa,_0x5668c8){return new BPromise(function(_0x222484,_0x2da985){return client['request'](_0x737297,_0x5668c8)[_0xa0b3('0x10')](function(_0x51f23d){logger[_0xa0b3('0x11')]('WhatsappQueue,\x20%s,\x20%s',_0x29a1aa,_0xa0b3('0x12'));logger[_0xa0b3('0x13')](_0xa0b3('0x14'),_0x29a1aa,_0xa0b3('0x12'),JSON['stringify'](_0x51f23d));if(_0x51f23d['error']){if(_0x51f23d['error'][_0xa0b3('0x15')]===0x1f4){logger[_0xa0b3('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x29a1aa,_0x51f23d[_0xa0b3('0x16')][_0xa0b3('0x17')]);return _0x2da985(_0x51f23d[_0xa0b3('0x16')][_0xa0b3('0x17')]);}logger['error'](_0xa0b3('0x18'),_0x29a1aa,_0x51f23d['error'][_0xa0b3('0x17')]);return _0x222484(_0x51f23d['error']['message']);}else{logger[_0xa0b3('0x11')](_0xa0b3('0x18'),_0x29a1aa,_0xa0b3('0x12'));_0x222484(_0x51f23d[_0xa0b3('0x19')][_0xa0b3('0x17')]);}})[_0xa0b3('0x1a')](function(_0x4532c9){logger[_0xa0b3('0x16')](_0xa0b3('0x18'),_0x29a1aa,_0x4532c9);_0x2da985(_0x4532c9);});});}exports[_0xa0b3('0x1b')]=function(_0x8527cf){var _0x150c79=this;return new Promise(function(_0x21ca4c,_0x3224a5){return db['WhatsappQueue'][_0xa0b3('0x1c')]({'raw':_0x8527cf[_0xa0b3('0x1d')]?_0x8527cf['options'][_0xa0b3('0x1e')]===undefined?!![]:![]:!![],'where':_0x8527cf[_0xa0b3('0x1d')]?_0x8527cf[_0xa0b3('0x1d')][_0xa0b3('0x1f')]||null:null,'attributes':_0x8527cf[_0xa0b3('0x1d')]?_0x8527cf[_0xa0b3('0x1d')][_0xa0b3('0x20')]||null:null,'limit':_0x8527cf[_0xa0b3('0x1d')]?_0x8527cf[_0xa0b3('0x1d')]['limit']||null:null,'include':_0x8527cf[_0xa0b3('0x1d')]?_0x8527cf[_0xa0b3('0x1d')]['include']?_['map'](_0x8527cf['options'][_0xa0b3('0x21')],function(_0x2ef24c){return{'model':db[_0x2ef24c['model']],'as':_0x2ef24c['as'],'attributes':_0x2ef24c[_0xa0b3('0x20')],'include':_0x2ef24c['include']?_[_0xa0b3('0x22')](_0x2ef24c['include'],function(_0x2ed0be){return{'model':db[_0x2ed0be[_0xa0b3('0x23')]],'as':_0x2ed0be['as'],'attributes':_0x2ed0be[_0xa0b3('0x20')],'include':_0x2ed0be['include']?_[_0xa0b3('0x22')](_0x2ed0be['include'],function(_0x5bd951){return{'model':db[_0x5bd951[_0xa0b3('0x23')]],'as':_0x5bd951['as'],'attributes':_0x5bd951[_0xa0b3('0x20')]};}):[]};}):[]};}):[]:[]})[_0xa0b3('0x10')](function(_0x119d79){logger[_0xa0b3('0x11')](_0xa0b3('0x1b'),_0x8527cf);logger[_0xa0b3('0x13')]('GetWhatsappQueue',_0x8527cf,JSON[_0xa0b3('0x24')](_0x119d79));_0x21ca4c(_0x119d79);})['catch'](function(_0x1d4eb3){logger['error']('GetWhatsappQueue',_0x1d4eb3[_0xa0b3('0x17')],_0x8527cf);_0x3224a5(_0x150c79[_0xa0b3('0x16')](0x1f4,_0x1d4eb3[_0xa0b3('0x17')]));});});};exports['ShowWhatsappQueue']=function(_0x83ef44){var _0x43db=this;return new Promise(function(_0x4d49ff,_0x3cf240){return db[_0xa0b3('0x25')][_0xa0b3('0x26')]({'raw':_0x83ef44[_0xa0b3('0x1d')]?_0x83ef44[_0xa0b3('0x1d')][_0xa0b3('0x1e')]===undefined?!![]:![]:!![],'where':_0x83ef44[_0xa0b3('0x1d')]?_0x83ef44[_0xa0b3('0x1d')][_0xa0b3('0x1f')]||null:null,'attributes':_0x83ef44['options']?_0x83ef44[_0xa0b3('0x1d')][_0xa0b3('0x20')]||null:null,'include':_0x83ef44['options']?_0x83ef44[_0xa0b3('0x1d')]['include']?_[_0xa0b3('0x22')](_0x83ef44['options'][_0xa0b3('0x21')],function(_0x2af517){return{'model':db[_0x2af517[_0xa0b3('0x23')]],'as':_0x2af517['as'],'attributes':_0x2af517[_0xa0b3('0x20')],'include':_0x2af517['include']?_[_0xa0b3('0x22')](_0x2af517['include'],function(_0x5c913d){return{'model':db[_0x5c913d['model']],'as':_0x5c913d['as'],'attributes':_0x5c913d[_0xa0b3('0x20')],'include':_0x5c913d[_0xa0b3('0x21')]?_[_0xa0b3('0x22')](_0x5c913d['include'],function(_0x4ebf5e){return{'model':db[_0x4ebf5e['model']],'as':_0x4ebf5e['as'],'attributes':_0x4ebf5e['attributes']};}):[]};}):[]};}):[]:[]})[_0xa0b3('0x10')](function(_0x1e030c){logger['info'](_0xa0b3('0x27'),_0x83ef44);logger['debug']('ShowWhatsappQueue',_0x83ef44,JSON[_0xa0b3('0x24')](_0x1e030c));_0x4d49ff(_0x1e030c);})[_0xa0b3('0x1a')](function(_0x235c18){logger[_0xa0b3('0x16')]('ShowWhatsappQueue',_0x235c18[_0xa0b3('0x17')],_0x83ef44);_0x3cf240(_0x43db[_0xa0b3('0x16')](0x1f4,_0x235c18[_0xa0b3('0x17')]));});});};
\ No newline at end of file
+var _0xb261=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','./whatsappQueue.socket','register','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','attributes','limit','include','map','model','ShowWhatsappQueue','find','util','moment','randomstring'];(function(_0x127ce4,_0x5b0ba5){var _0x5bbedd=function(_0x402175){while(--_0x402175){_0x127ce4['push'](_0x127ce4['shift']());}};_0x5bbedd(++_0x5b0ba5);}(_0xb261,0x8d));var _0x1b26=function(_0x56ea44,_0x368863){_0x56ea44=_0x56ea44-0x0;var _0xabc9b=_0xb261[_0x56ea44];return _0xabc9b;};'use strict';var _=require('lodash');var util=require(_0x1b26('0x0'));var moment=require(_0x1b26('0x1'));var BPromise=require('bluebird');var rs=require(_0x1b26('0x2'));var fs=require('fs');var Redis=require(_0x1b26('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b26('0x4'));var logger=require(_0x1b26('0x5'))(_0x1b26('0x6'));var config=require(_0x1b26('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1b26('0x8')]({'port':0x232a});config[_0x1b26('0x9')]=_[_0x1b26('0xa')](config[_0x1b26('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b26('0x9')]));require(_0x1b26('0xb'))[_0x1b26('0xc')](socket);function respondWithRpcPromise(_0x2cb0ad,_0x5445e0,_0x8ccbc5){return new BPromise(function(_0x5d6631,_0x9d555){return client['request'](_0x2cb0ad,_0x8ccbc5)[_0x1b26('0xd')](function(_0x78b45){logger[_0x1b26('0xe')](_0x1b26('0xf'),_0x5445e0,_0x1b26('0x10'));logger[_0x1b26('0x11')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5445e0,_0x1b26('0x10'),JSON[_0x1b26('0x12')](_0x78b45));if(_0x78b45[_0x1b26('0x13')]){if(_0x78b45[_0x1b26('0x13')][_0x1b26('0x14')]===0x1f4){logger[_0x1b26('0x13')](_0x1b26('0xf'),_0x5445e0,_0x78b45[_0x1b26('0x13')]['message']);return _0x9d555(_0x78b45[_0x1b26('0x13')][_0x1b26('0x15')]);}logger[_0x1b26('0x13')](_0x1b26('0xf'),_0x5445e0,_0x78b45['error'][_0x1b26('0x15')]);return _0x5d6631(_0x78b45[_0x1b26('0x13')][_0x1b26('0x15')]);}else{logger[_0x1b26('0xe')](_0x1b26('0xf'),_0x5445e0,_0x1b26('0x10'));_0x5d6631(_0x78b45[_0x1b26('0x16')][_0x1b26('0x15')]);}})[_0x1b26('0x17')](function(_0x3dfe59){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x5445e0,_0x3dfe59);_0x9d555(_0x3dfe59);});});}exports[_0x1b26('0x18')]=function(_0x58adb7){var _0x6a9f85=this;return new Promise(function(_0x158dc2,_0x25fb6f){return db[_0x1b26('0x19')][_0x1b26('0x1a')]({'raw':_0x58adb7['options']?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1c')]===undefined?!![]:![]:!![],'where':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')]['where']||null:null,'attributes':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1d')]||null:null,'limit':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1e')]||null:null,'include':_0x58adb7[_0x1b26('0x1b')]?_0x58adb7[_0x1b26('0x1b')][_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x58adb7[_0x1b26('0x1b')]['include'],function(_0x4cf3e2){return{'model':db[_0x4cf3e2[_0x1b26('0x21')]],'as':_0x4cf3e2['as'],'attributes':_0x4cf3e2[_0x1b26('0x1d')],'include':_0x4cf3e2[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x4cf3e2[_0x1b26('0x1f')],function(_0x231629){return{'model':db[_0x231629[_0x1b26('0x21')]],'as':_0x231629['as'],'attributes':_0x231629[_0x1b26('0x1d')],'include':_0x231629[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x231629['include'],function(_0x4fb57a){return{'model':db[_0x4fb57a['model']],'as':_0x4fb57a['as'],'attributes':_0x4fb57a[_0x1b26('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1b26('0xd')](function(_0x2defb3){logger['info'](_0x1b26('0x18'),_0x58adb7);logger[_0x1b26('0x11')](_0x1b26('0x18'),_0x58adb7,JSON[_0x1b26('0x12')](_0x2defb3));_0x158dc2(_0x2defb3);})[_0x1b26('0x17')](function(_0x30528f){logger[_0x1b26('0x13')](_0x1b26('0x18'),_0x30528f[_0x1b26('0x15')],_0x58adb7);_0x25fb6f(_0x6a9f85[_0x1b26('0x13')](0x1f4,_0x30528f['message']));});});};exports[_0x1b26('0x22')]=function(_0xd65d29){var _0x48c1a3=this;return new Promise(function(_0x577689,_0x49f3bf){return db['WhatsappQueue'][_0x1b26('0x23')]({'raw':_0xd65d29[_0x1b26('0x1b')]?_0xd65d29[_0x1b26('0x1b')][_0x1b26('0x1c')]===undefined?!![]:![]:!![],'where':_0xd65d29['options']?_0xd65d29[_0x1b26('0x1b')]['where']||null:null,'attributes':_0xd65d29[_0x1b26('0x1b')]?_0xd65d29['options'][_0x1b26('0x1d')]||null:null,'include':_0xd65d29['options']?_0xd65d29[_0x1b26('0x1b')]['include']?_[_0x1b26('0x20')](_0xd65d29[_0x1b26('0x1b')][_0x1b26('0x1f')],function(_0x43f22a){return{'model':db[_0x43f22a[_0x1b26('0x21')]],'as':_0x43f22a['as'],'attributes':_0x43f22a[_0x1b26('0x1d')],'include':_0x43f22a[_0x1b26('0x1f')]?_[_0x1b26('0x20')](_0x43f22a[_0x1b26('0x1f')],function(_0x4f8e83){return{'model':db[_0x4f8e83[_0x1b26('0x21')]],'as':_0x4f8e83['as'],'attributes':_0x4f8e83['attributes'],'include':_0x4f8e83['include']?_[_0x1b26('0x20')](_0x4f8e83['include'],function(_0x3b6ea3){return{'model':db[_0x3b6ea3[_0x1b26('0x21')]],'as':_0x3b6ea3['as'],'attributes':_0x3b6ea3['attributes']};}):[]};}):[]};}):[]:[]})[_0x1b26('0xd')](function(_0x3ca4f0){logger[_0x1b26('0xe')](_0x1b26('0x22'),_0xd65d29);logger[_0x1b26('0x11')]('ShowWhatsappQueue',_0xd65d29,JSON[_0x1b26('0x12')](_0x3ca4f0));_0x577689(_0x3ca4f0);})[_0x1b26('0x17')](function(_0x14626a){logger[_0x1b26('0x13')](_0x1b26('0x22'),_0x14626a['message'],_0xd65d29);_0x49f3bf(_0x48c1a3['error'](0x1f4,_0x14626a['message']));});});};
\ No newline at end of file
index 817f32e..02e7550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618f=['update','emit','removeListener','register','length','remove'];(function(_0x51b1a5,_0x285a4f){var _0x15c738=function(_0x5c94d7){while(--_0x5c94d7){_0x51b1a5['push'](_0x51b1a5['shift']());}};_0x15c738(++_0x285a4f);}(_0x618f,0x143));var _0xf618=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x618f[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0xf618('0x0'),_0xf618('0x1')];function createListener(_0x22e42b,_0x522a58){return function(_0x44e142){_0x522a58[_0xf618('0x2')](_0x22e42b,_0x44e142);};}function removeListener(_0x166c61,_0x205735){return function(){WhatsappQueueEvents[_0xf618('0x3')](_0x166c61,_0x205735);};}exports[_0xf618('0x4')]=function(_0x205219){for(var _0xdf7346=0x0,_0x473d2d=events[_0xf618('0x5')];_0xdf7346<_0x473d2d;_0xdf7346++){var _0x38ce76=events[_0xdf7346];var _0x48a2db=createListener('whatsappQueue:'+_0x38ce76,_0x205219);WhatsappQueueEvents['on'](_0x38ce76,_0x48a2db);}};
\ No newline at end of file
+var _0x0815=['./whatsappQueue.events','remove','update','emit','length','whatsappQueue:'];(function(_0x3efd37,_0x5dc424){var _0x4e7b11=function(_0xf6d404){while(--_0xf6d404){_0x3efd37['push'](_0x3efd37['shift']());}};_0x4e7b11(++_0x5dc424);}(_0x0815,0x150));var _0x5081=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0815[_0x20a584];return _0x4b41a8;};'use strict';var WhatsappQueueEvents=require(_0x5081('0x0'));var events=['save',_0x5081('0x1'),_0x5081('0x2')];function createListener(_0x4262c6,_0x247bb2){return function(_0x562d8b){_0x247bb2[_0x5081('0x3')](_0x4262c6,_0x562d8b);};}function removeListener(_0xba1901,_0x406bf4){return function(){WhatsappQueueEvents['removeListener'](_0xba1901,_0x406bf4);};}exports['register']=function(_0x248890){for(var _0x51f13d=0x0,_0x38d8ca=events[_0x5081('0x4')];_0x51f13d<_0x38d8ca;_0x51f13d++){var _0x5dfec4=events[_0x51f13d];var _0x41068d=createListener(_0x5081('0x5')+_0x5dfec4,_0x248890);WhatsappQueueEvents['on'](_0x5dfec4,_0x41068d);}};
\ No newline at end of file
index 09d19d8..3d4aa47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89cb=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','/describe','isAuthenticated','describe','post','create','/:id','delete'];(function(_0x1b6c0c,_0x51ef20){var _0x178991=function(_0x3b6f64){while(--_0x3b6f64){_0x1b6c0c['push'](_0x1b6c0c['shift']());}};_0x178991(++_0x51ef20);}(_0x89cb,0x17e));var _0xb89c=function(_0x57bda5,_0x1d6f82){_0x57bda5=_0x57bda5-0x0;var _0x20bdc8=_0x89cb[_0x57bda5];return _0x20bdc8;};'use strict';var multer=require(_0xb89c('0x0'));var util=require(_0xb89c('0x1'));var path=require(_0xb89c('0x2'));var timeout=require(_0xb89c('0x3'));var express=require('express');var router=express[_0xb89c('0x4')]();var fs_extra=require(_0xb89c('0x5'));var auth=require(_0xb89c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb89c('0x7'));var controller=require(_0xb89c('0x8'));router[_0xb89c('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb89c('0x9')](_0xb89c('0xa'),auth[_0xb89c('0xb')](),controller[_0xb89c('0xc')]);router['get']('/:id',auth[_0xb89c('0xb')](),controller['show']);router[_0xb89c('0xd')]('/',auth['isAuthenticated'](),controller[_0xb89c('0xe')]);router['put'](_0xb89c('0xf'),auth[_0xb89c('0xb')](),controller['update']);router[_0xb89c('0x10')](_0xb89c('0xf'),auth[_0xb89c('0xb')](),controller[_0xb89c('0x11')]);module[_0xb89c('0x12')]=router;
\ No newline at end of file
+var _0xfb71=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x46b0ee,_0x4aa2b1){var _0x109fba=function(_0x37a041){while(--_0x37a041){_0x46b0ee['push'](_0x46b0ee['shift']());}};_0x109fba(++_0x4aa2b1);}(_0xfb71,0x178));var _0x1fb7=function(_0xd1bc4e,_0x410f38){_0xd1bc4e=_0xd1bc4e-0x0;var _0x475d6f=_0xfb71[_0xd1bc4e];return _0x475d6f;};'use strict';var multer=require(_0x1fb7('0x0'));var util=require('util');var path=require(_0x1fb7('0x1'));var timeout=require(_0x1fb7('0x2'));var express=require(_0x1fb7('0x3'));var router=express[_0x1fb7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1fb7('0x5'));var config=require(_0x1fb7('0x6'));var controller=require('./whatsappQueueReport.controller');router[_0x1fb7('0x7')]('/',auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x9')]);router[_0x1fb7('0x7')](_0x1fb7('0xa'),auth['isAuthenticated'](),controller[_0x1fb7('0xb')]);router[_0x1fb7('0x7')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0xd')]);router[_0x1fb7('0xe')]('/',auth['isAuthenticated'](),controller[_0x1fb7('0xf')]);router[_0x1fb7('0x10')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x11')]);router[_0x1fb7('0x12')](_0x1fb7('0xc'),auth[_0x1fb7('0x8')](),controller[_0x1fb7('0x13')]);module[_0x1fb7('0x14')]=router;
\ No newline at end of file
index 400ccde..12682c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0xbfc052,_0x2f9c15){var _0x6517e7=function(_0x5a77aa){while(--_0x5a77aa){_0xbfc052['push'](_0xbfc052['shift']());}};_0x6517e7(++_0x2f9c15);}(_0x7a54,0x106));var _0x47a5=function(_0x424e10,_0xf9337c){_0x424e10=_0x424e10-0x0;var _0x318d79=_0x7a54[_0x424e10];return _0x318d79;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x357cb0,_0x5b87e0){var _0x450d01=function(_0xdc36e5){while(--_0xdc36e5){_0x357cb0['push'](_0x357cb0['shift']());}};_0x450d01(++_0x5b87e0);}(_0x7a54,0x106));var _0x47a5=function(_0x2da75e,_0x10ee6c){_0x2da75e=_0x2da75e-0x0;var _0x44e077=_0x7a54[_0x2da75e];return _0x44e077;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index 053c579..a6b3b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','end','sendStatus','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','rawAttributes','length','find','create','body','params','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x3f288e,_0x8cdada){var _0x271e04=function(_0x28621a){while(--_0x28621a){_0x3f288e['push'](_0x3f288e['shift']());}};_0x271e04(++_0x8cdada);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x28bef7,_0x656a61){_0x28bef7=_0x28bef7-0x0;var _0x307b61=_0xf4f4[_0x28bef7];return _0x307b61;};'use strict';var emlformat=require(_0x4f4f('0x0'));var rimraf=require(_0x4f4f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4f4f('0x2'));var rp=require(_0x4f4f('0x3'));var moment=require(_0x4f4f('0x4'));var BPromise=require(_0x4f4f('0x5'));var Mustache=require(_0x4f4f('0x6'));var util=require('util');var path=require(_0x4f4f('0x7'));var sox=require('sox');var csv=require(_0x4f4f('0x8'));var ejs=require(_0x4f4f('0x9'));var fs=require('fs');var fs_extra=require(_0x4f4f('0xa'));var _=require(_0x4f4f('0xb'));var squel=require(_0x4f4f('0xc'));var crypto=require(_0x4f4f('0xd'));var jsforce=require(_0x4f4f('0xe'));var deskjs=require(_0x4f4f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4f4f('0x10'));var Papa=require(_0x4f4f('0x11'));var Redis=require(_0x4f4f('0x12'));var authService=require(_0x4f4f('0x13'));var qs=require(_0x4f4f('0x14'));var as=require(_0x4f4f('0x15'));var hardwareService=require(_0x4f4f('0x16'));var logger=require(_0x4f4f('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x4f4f('0x18'));var licenseUtil=require(_0x4f4f('0x19'));var db=require(_0x4f4f('0x1a'))['db'];function respondWithStatusCode(_0x1b54b0,_0x282031){_0x282031=_0x282031||0xcc;return function(_0x1d7575){if(_0x1d7575){return _0x1b54b0['sendStatus'](_0x282031);}return _0x1b54b0[_0x4f4f('0x1b')](_0x282031)['end']();};}function respondWithResult(_0x216ba8,_0xe7c2d5){_0xe7c2d5=_0xe7c2d5||0xc8;return function(_0x3e16e9){if(_0x3e16e9){return _0x216ba8[_0x4f4f('0x1b')](_0xe7c2d5)['json'](_0x3e16e9);}};}function respondWithFilteredResult(_0x19f2fd,_0x4c68f4){return function(_0x47ab66){if(_0x47ab66){var _0x58de77=typeof _0x4c68f4[_0x4f4f('0x1c')]===_0x4f4f('0x1d')&&typeof _0x4c68f4[_0x4f4f('0x1e')]===_0x4f4f('0x1d');var _0x2d5e5d=_0x47ab66[_0x4f4f('0x1f')];var _0x1245c4=_0x58de77?0x0:_0x4c68f4[_0x4f4f('0x1c')];var _0x929a0b=_0x58de77?_0x47ab66[_0x4f4f('0x1f')]:_0x4c68f4[_0x4f4f('0x1c')]+_0x4c68f4[_0x4f4f('0x1e')];var _0x499277;if(_0x929a0b>=_0x2d5e5d){_0x929a0b=_0x2d5e5d;_0x499277=0xc8;}else{_0x499277=0xce;}_0x19f2fd[_0x4f4f('0x1b')](_0x499277);return _0x19f2fd[_0x4f4f('0x20')](_0x4f4f('0x21'),_0x1245c4+'-'+_0x929a0b+'/'+_0x2d5e5d)[_0x4f4f('0x22')](_0x47ab66);}return null;};}function patchUpdates(_0x302a79){return function(_0x460b4d){try{jsonpatch[_0x4f4f('0x23')](_0x460b4d,_0x302a79,!![]);}catch(_0x3e33d5){return BPromise[_0x4f4f('0x24')](_0x3e33d5);}return _0x460b4d[_0x4f4f('0x25')]();};}function saveUpdates(_0x469a1d,_0x17832f){return function(_0x17984d){if(_0x17984d){return _0x17984d[_0x4f4f('0x26')](_0x469a1d)['then'](function(_0x4f7261){return _0x4f7261;});}return null;};}function removeEntity(_0x525529,_0x272125){return function(_0x43e661){if(_0x43e661){return _0x43e661['destroy']()[_0x4f4f('0x27')](function(){_0x525529[_0x4f4f('0x1b')](0xcc)[_0x4f4f('0x28')]();});}};}function handleEntityNotFound(_0x2ec92a,_0x113ff7){return function(_0x31b30e){if(!_0x31b30e){_0x2ec92a[_0x4f4f('0x29')](0x194);}return _0x31b30e;};}function handleError(_0x50a8ce,_0x39fb9f){_0x39fb9f=_0x39fb9f||0x1f4;return function(_0x237cf9){logger[_0x4f4f('0x2a')](_0x237cf9[_0x4f4f('0x2b')]);if(_0x237cf9[_0x4f4f('0x2c')]){delete _0x237cf9['name'];}_0x50a8ce[_0x4f4f('0x1b')](_0x39fb9f)[_0x4f4f('0x2d')](_0x237cf9);};}exports[_0x4f4f('0x2e')]=function(_0x5deda9,_0x534075){var _0x4c2490={},_0x73b8bb={},_0x5b4f6a={'count':0x0,'rows':[]};var _0x354266=_[_0x4f4f('0x2f')](db[_0x4f4f('0x30')]['rawAttributes'],function(_0x460546){return{'name':_0x460546[_0x4f4f('0x31')],'type':_0x460546['type'][_0x4f4f('0x32')]};});_0x73b8bb[_0x4f4f('0x33')]=_[_0x4f4f('0x2f')](_0x354266,'name');_0x73b8bb[_0x4f4f('0x34')]=_[_0x4f4f('0x35')](_0x5deda9['query']);_0x73b8bb['filters']=_[_0x4f4f('0x36')](_0x73b8bb[_0x4f4f('0x33')],_0x73b8bb[_0x4f4f('0x34')]);_0x4c2490[_0x4f4f('0x37')]=_[_0x4f4f('0x36')](_0x73b8bb[_0x4f4f('0x33')],qs[_0x4f4f('0x38')](_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x38')]));_0x4c2490[_0x4f4f('0x37')]=_0x4c2490['attributes']['length']?_0x4c2490[_0x4f4f('0x37')]:_0x73b8bb['model'];if(!_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x39')](_0x4f4f('0x3a'))){_0x4c2490[_0x4f4f('0x1e')]=qs[_0x4f4f('0x1e')](_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x1e')]);_0x4c2490[_0x4f4f('0x1c')]=qs[_0x4f4f('0x1c')](_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x1c')]);}_0x4c2490[_0x4f4f('0x3b')]=qs['sort'](_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x3c')]);_0x4c2490[_0x4f4f('0x3d')]=qs[_0x4f4f('0x3e')](_[_0x4f4f('0x3f')](_0x5deda9[_0x4f4f('0x34')],_0x73b8bb[_0x4f4f('0x3e')]),_0x354266);if(_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x40')]){_0x4c2490['where']=_[_0x4f4f('0x41')](_0x4c2490[_0x4f4f('0x3d')],{'$or':_[_0x4f4f('0x2f')](_0x354266,function(_0x5eb174){if(_0x5eb174['type']!==_0x4f4f('0x42')){var _0x95a296={};_0x95a296[_0x5eb174[_0x4f4f('0x2c')]]={'$like':'%'+_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x40')]+'%'};return _0x95a296;}})});}_0x4c2490=_[_0x4f4f('0x41')]({},_0x4c2490,_0x5deda9[_0x4f4f('0x43')]);var _0x1ff7f3={'where':_0x4c2490[_0x4f4f('0x3d')]};return db[_0x4f4f('0x30')][_0x4f4f('0x1f')](_0x1ff7f3)[_0x4f4f('0x27')](function(_0x4e352e){_0x5b4f6a[_0x4f4f('0x1f')]=_0x4e352e;if(_0x5deda9[_0x4f4f('0x34')][_0x4f4f('0x44')]){_0x4c2490[_0x4f4f('0x45')]=[{'all':!![]}];}return db[_0x4f4f('0x30')]['findAll'](_0x4c2490);})['then'](function(_0x134710){_0x5b4f6a[_0x4f4f('0x46')]=_0x134710;return _0x5b4f6a;})[_0x4f4f('0x27')](respondWithFilteredResult(_0x534075,_0x4c2490))[_0x4f4f('0x47')](handleError(_0x534075,null));};exports['show']=function(_0x1aaf2c,_0x480919){var _0x10de24={'raw':!![],'where':{'id':_0x1aaf2c['params']['id']}},_0x5a7c94={};_0x5a7c94[_0x4f4f('0x33')]=_['keys'](db[_0x4f4f('0x30')][_0x4f4f('0x48')]);_0x5a7c94['query']=_[_0x4f4f('0x35')](_0x1aaf2c[_0x4f4f('0x34')]);_0x5a7c94['filters']=_[_0x4f4f('0x36')](_0x5a7c94[_0x4f4f('0x33')],_0x5a7c94[_0x4f4f('0x34')]);_0x10de24[_0x4f4f('0x37')]=_[_0x4f4f('0x36')](_0x5a7c94[_0x4f4f('0x33')],qs[_0x4f4f('0x38')](_0x1aaf2c[_0x4f4f('0x34')][_0x4f4f('0x38')]));_0x10de24[_0x4f4f('0x37')]=_0x10de24[_0x4f4f('0x37')][_0x4f4f('0x49')]?_0x10de24[_0x4f4f('0x37')]:_0x5a7c94[_0x4f4f('0x33')];if(_0x1aaf2c[_0x4f4f('0x34')]['includeAll']){_0x10de24[_0x4f4f('0x45')]=[{'all':!![]}];}_0x10de24=_['merge']({},_0x10de24,_0x1aaf2c['options']);return db[_0x4f4f('0x30')][_0x4f4f('0x4a')](_0x10de24)['then'](handleEntityNotFound(_0x480919,null))[_0x4f4f('0x27')](respondWithResult(_0x480919,null))[_0x4f4f('0x47')](handleError(_0x480919,null));};exports[_0x4f4f('0x4b')]=function(_0x2721b5,_0x222511){return db['WhatsappQueueReport'][_0x4f4f('0x4b')](_0x2721b5[_0x4f4f('0x4c')],{})[_0x4f4f('0x27')](respondWithResult(_0x222511,0xc9))[_0x4f4f('0x47')](handleError(_0x222511,null));};exports[_0x4f4f('0x26')]=function(_0x433787,_0x29314b){if(_0x433787[_0x4f4f('0x4c')]['id']){delete _0x433787[_0x4f4f('0x4c')]['id'];}return db['WhatsappQueueReport'][_0x4f4f('0x4a')]({'where':{'id':_0x433787[_0x4f4f('0x4d')]['id']}})['then'](handleEntityNotFound(_0x29314b,null))['then'](saveUpdates(_0x433787['body'],null))[_0x4f4f('0x27')](respondWithResult(_0x29314b,null))[_0x4f4f('0x47')](handleError(_0x29314b,null));};exports[_0x4f4f('0x4e')]=function(_0x5c5077,_0x389ec6){return db['WhatsappQueueReport'][_0x4f4f('0x4a')]({'where':{'id':_0x5c5077[_0x4f4f('0x4d')]['id']}})[_0x4f4f('0x27')](handleEntityNotFound(_0x389ec6,null))[_0x4f4f('0x27')](removeEntity(_0x389ec6,null))[_0x4f4f('0x47')](handleError(_0x389ec6,null));};exports[_0x4f4f('0x4f')]=function(_0x21408b,_0x88054a){return db[_0x4f4f('0x30')]['describe']()['then'](respondWithResult(_0x88054a,null))[_0x4f4f('0x47')](handleError(_0x88054a,null));};
\ No newline at end of file
+var _0xbdb7=['then','findAll','rows','catch','params','rawAttributes','length','include','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','merge'];(function(_0x3a60b8,_0x47caab){var _0x4eb583=function(_0x2251b5){while(--_0x2251b5){_0x3a60b8['push'](_0x3a60b8['shift']());}};_0x4eb583(++_0x47caab);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x44caf2,_0x8ffb16){_0x44caf2=_0x44caf2-0x0;var _0x25978d=_0xbdb7[_0x44caf2];return _0x25978d;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];function respondWithStatusCode(_0x25e3cb,_0x496613){_0x496613=_0x496613||0xcc;return function(_0x8d74ff){if(_0x8d74ff){return _0x25e3cb['sendStatus'](_0x496613);}return _0x25e3cb['status'](_0x496613)[_0x7bdb('0x17')]();};}function respondWithResult(_0x46dd4a,_0x4fd91a){_0x4fd91a=_0x4fd91a||0xc8;return function(_0x50eeca){if(_0x50eeca){return _0x46dd4a['status'](_0x4fd91a)[_0x7bdb('0x18')](_0x50eeca);}};}function respondWithFilteredResult(_0x195b2e,_0xe9919f){return function(_0x25d417){if(_0x25d417){var _0x31c909=typeof _0xe9919f[_0x7bdb('0x19')]===_0x7bdb('0x1a')&&typeof _0xe9919f[_0x7bdb('0x1b')]==='undefined';var _0x1c5750=_0x25d417[_0x7bdb('0x1c')];var _0x5723f4=_0x31c909?0x0:_0xe9919f[_0x7bdb('0x19')];var _0x4ffd4b=_0x31c909?_0x25d417[_0x7bdb('0x1c')]:_0xe9919f[_0x7bdb('0x19')]+_0xe9919f['limit'];var _0x3e5f8e;if(_0x4ffd4b>=_0x1c5750){_0x4ffd4b=_0x1c5750;_0x3e5f8e=0xc8;}else{_0x3e5f8e=0xce;}_0x195b2e[_0x7bdb('0x1d')](_0x3e5f8e);return _0x195b2e[_0x7bdb('0x1e')](_0x7bdb('0x1f'),_0x5723f4+'-'+_0x4ffd4b+'/'+_0x1c5750)[_0x7bdb('0x18')](_0x25d417);}return null;};}function patchUpdates(_0x5bfc35){return function(_0x49f353){try{jsonpatch[_0x7bdb('0x20')](_0x49f353,_0x5bfc35,!![]);}catch(_0xcb25f2){return BPromise['reject'](_0xcb25f2);}return _0x49f353[_0x7bdb('0x21')]();};}function saveUpdates(_0x118ea1,_0x346c72){return function(_0x3f53e7){if(_0x3f53e7){return _0x3f53e7[_0x7bdb('0x22')](_0x118ea1)['then'](function(_0x1d37ac){return _0x1d37ac;});}return null;};}function removeEntity(_0xdad53d,_0x40c447){return function(_0x3a456f){if(_0x3a456f){return _0x3a456f['destroy']()['then'](function(){_0xdad53d[_0x7bdb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47abaf,_0x4a9e02){return function(_0x2abef6){if(!_0x2abef6){_0x47abaf['sendStatus'](0x194);}return _0x2abef6;};}function handleError(_0x2b14bc,_0x72ba69){_0x72ba69=_0x72ba69||0x1f4;return function(_0x3ec129){logger[_0x7bdb('0x23')](_0x3ec129[_0x7bdb('0x24')]);if(_0x3ec129['name']){delete _0x3ec129[_0x7bdb('0x25')];}_0x2b14bc[_0x7bdb('0x1d')](_0x72ba69)[_0x7bdb('0x26')](_0x3ec129);};}exports[_0x7bdb('0x27')]=function(_0x371e8a,_0x2e8e65){var _0x1e9996={},_0xd2d7be={},_0x25a1fe={'count':0x0,'rows':[]};var _0x365c02=_[_0x7bdb('0x28')](db[_0x7bdb('0x29')]['rawAttributes'],function(_0x388a45){return{'name':_0x388a45[_0x7bdb('0x2a')],'type':_0x388a45[_0x7bdb('0x2b')][_0x7bdb('0x2c')]};});_0xd2d7be[_0x7bdb('0x2d')]=_['map'](_0x365c02,_0x7bdb('0x25'));_0xd2d7be[_0x7bdb('0x2e')]=_[_0x7bdb('0x2f')](_0x371e8a[_0x7bdb('0x2e')]);_0xd2d7be['filters']=_['intersection'](_0xd2d7be['model'],_0xd2d7be[_0x7bdb('0x2e')]);_0x1e9996['attributes']=_[_0x7bdb('0x30')](_0xd2d7be['model'],qs[_0x7bdb('0x31')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x31')]));_0x1e9996['attributes']=_0x1e9996[_0x7bdb('0x32')]['length']?_0x1e9996['attributes']:_0xd2d7be[_0x7bdb('0x2d')];if(!_0x371e8a['query'][_0x7bdb('0x33')]('nolimit')){_0x1e9996['limit']=qs[_0x7bdb('0x1b')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x1b')]);_0x1e9996[_0x7bdb('0x19')]=qs[_0x7bdb('0x19')](_0x371e8a[_0x7bdb('0x2e')]['offset']);}_0x1e9996[_0x7bdb('0x34')]=qs[_0x7bdb('0x35')](_0x371e8a[_0x7bdb('0x2e')][_0x7bdb('0x35')]);_0x1e9996[_0x7bdb('0x36')]=qs[_0x7bdb('0x37')](_[_0x7bdb('0x38')](_0x371e8a[_0x7bdb('0x2e')],_0xd2d7be[_0x7bdb('0x37')]),_0x365c02);if(_0x371e8a['query']['filter']){_0x1e9996[_0x7bdb('0x36')]=_[_0x7bdb('0x39')](_0x1e9996[_0x7bdb('0x36')],{'$or':_[_0x7bdb('0x28')](_0x365c02,function(_0x3732b2){if(_0x3732b2['type']!=='VIRTUAL'){var _0x27164f={};_0x27164f[_0x3732b2['name']]={'$like':'%'+_0x371e8a[_0x7bdb('0x2e')]['filter']+'%'};return _0x27164f;}})});}_0x1e9996=_[_0x7bdb('0x39')]({},_0x1e9996,_0x371e8a['options']);var _0x4cf3fa={'where':_0x1e9996[_0x7bdb('0x36')]};return db[_0x7bdb('0x29')][_0x7bdb('0x1c')](_0x4cf3fa)[_0x7bdb('0x3a')](function(_0x43c7d3){_0x25a1fe[_0x7bdb('0x1c')]=_0x43c7d3;if(_0x371e8a[_0x7bdb('0x2e')]['includeAll']){_0x1e9996['include']=[{'all':!![]}];}return db[_0x7bdb('0x29')][_0x7bdb('0x3b')](_0x1e9996);})[_0x7bdb('0x3a')](function(_0x3509e4){_0x25a1fe[_0x7bdb('0x3c')]=_0x3509e4;return _0x25a1fe;})[_0x7bdb('0x3a')](respondWithFilteredResult(_0x2e8e65,_0x1e9996))[_0x7bdb('0x3d')](handleError(_0x2e8e65,null));};exports['show']=function(_0x4a2ebc,_0x1bcbcd){var _0x8e893e={'raw':!![],'where':{'id':_0x4a2ebc[_0x7bdb('0x3e')]['id']}},_0x4636f8={};_0x4636f8['model']=_[_0x7bdb('0x2f')](db['WhatsappQueueReport'][_0x7bdb('0x3f')]);_0x4636f8[_0x7bdb('0x2e')]=_[_0x7bdb('0x2f')](_0x4a2ebc[_0x7bdb('0x2e')]);_0x4636f8[_0x7bdb('0x37')]=_[_0x7bdb('0x30')](_0x4636f8[_0x7bdb('0x2d')],_0x4636f8[_0x7bdb('0x2e')]);_0x8e893e[_0x7bdb('0x32')]=_['intersection'](_0x4636f8[_0x7bdb('0x2d')],qs[_0x7bdb('0x31')](_0x4a2ebc['query'][_0x7bdb('0x31')]));_0x8e893e['attributes']=_0x8e893e[_0x7bdb('0x32')][_0x7bdb('0x40')]?_0x8e893e[_0x7bdb('0x32')]:_0x4636f8[_0x7bdb('0x2d')];if(_0x4a2ebc[_0x7bdb('0x2e')]['includeAll']){_0x8e893e[_0x7bdb('0x41')]=[{'all':!![]}];}_0x8e893e=_[_0x7bdb('0x39')]({},_0x8e893e,_0x4a2ebc[_0x7bdb('0x42')]);return db[_0x7bdb('0x29')][_0x7bdb('0x43')](_0x8e893e)['then'](handleEntityNotFound(_0x1bcbcd,null))[_0x7bdb('0x3a')](respondWithResult(_0x1bcbcd,null))[_0x7bdb('0x3d')](handleError(_0x1bcbcd,null));};exports[_0x7bdb('0x44')]=function(_0xb26a9,_0x259007){return db[_0x7bdb('0x29')][_0x7bdb('0x44')](_0xb26a9[_0x7bdb('0x45')],{})[_0x7bdb('0x3a')](respondWithResult(_0x259007,0xc9))[_0x7bdb('0x3d')](handleError(_0x259007,null));};exports['update']=function(_0x189cf8,_0x58c4bc){if(_0x189cf8['body']['id']){delete _0x189cf8[_0x7bdb('0x45')]['id'];}return db[_0x7bdb('0x29')]['find']({'where':{'id':_0x189cf8[_0x7bdb('0x3e')]['id']}})[_0x7bdb('0x3a')](handleEntityNotFound(_0x58c4bc,null))['then'](saveUpdates(_0x189cf8['body'],null))['then'](respondWithResult(_0x58c4bc,null))[_0x7bdb('0x3d')](handleError(_0x58c4bc,null));};exports[_0x7bdb('0x46')]=function(_0x2fab74,_0x46410c){return db[_0x7bdb('0x29')][_0x7bdb('0x43')]({'where':{'id':_0x2fab74[_0x7bdb('0x3e')]['id']}})[_0x7bdb('0x3a')](handleEntityNotFound(_0x46410c,null))[_0x7bdb('0x3a')](removeEntity(_0x46410c,null))[_0x7bdb('0x3d')](handleError(_0x46410c,null));};exports['describe']=function(_0x299ef0,_0x4806e0){return db[_0x7bdb('0x29')][_0x7bdb('0x47')]()[_0x7bdb('0x3a')](respondWithResult(_0x4806e0,null))[_0x7bdb('0x3d')](handleError(_0x4806e0,null));};
\ No newline at end of file
index 8bf65bd..4d4a4bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ec=['report_whatsapp_queue','uniqueid','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport'];(function(_0x494a42,_0x1f2103){var _0x254792=function(_0x5f1c1d){while(--_0x5f1c1d){_0x494a42['push'](_0x494a42['shift']());}};_0x254792(++_0x1f2103);}(_0x69ec,0x199));var _0xc69e=function(_0x177841,_0x2540e2){_0x177841=_0x177841-0x0;var _0x4613c3=_0x69ec[_0x177841];return _0x4613c3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc69e('0x0'))(_0xc69e('0x1'));var moment=require('moment');var BPromise=require(_0xc69e('0x2'));var rp=require(_0xc69e('0x3'));var fs=require('fs');var path=require(_0xc69e('0x4'));var rimraf=require('rimraf');var config=require(_0xc69e('0x5'));var attributes=require(_0xc69e('0x6'));module['exports']=function(_0x42784f,_0x19d7e9){return _0x42784f[_0xc69e('0x7')](_0xc69e('0x8'),attributes,{'tableName':_0xc69e('0x9'),'paranoid':![],'indexes':[{'name':_0xc69e('0xa'),'fields':[_0xc69e('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb60=['define','report_whatsapp_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports'];(function(_0x528fd5,_0x116c22){var _0x43f1f8=function(_0x4e2af8){while(--_0x4e2af8){_0x528fd5['push'](_0x528fd5['shift']());}};_0x43f1f8(++_0x116c22);}(_0xcb60,0xf1));var _0x0cb6=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xcb60[_0x273c39];return _0x46d6b5;};'use strict';var _=require('lodash');var util=require(_0x0cb6('0x0'));var logger=require(_0x0cb6('0x1'))(_0x0cb6('0x2'));var moment=require(_0x0cb6('0x3'));var BPromise=require(_0x0cb6('0x4'));var rp=require(_0x0cb6('0x5'));var fs=require('fs');var path=require(_0x0cb6('0x6'));var rimraf=require(_0x0cb6('0x7'));var config=require(_0x0cb6('0x8'));var attributes=require(_0x0cb6('0x9'));module[_0x0cb6('0xa')]=function(_0x59f6c7,_0xf2f463){return _0x59f6c7[_0x0cb6('0xb')]('WhatsappQueueReport',attributes,{'tableName':_0x0cb6('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0cb6('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 1cd6be4..4919360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b18=['error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','raw','debug','UpdateWhatsappQueueReport','update','body','options','where','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x138af2,_0x3bf10a){var _0x18bd6f=function(_0x14edaf){while(--_0x14edaf){_0x138af2['push'](_0x138af2['shift']());}};_0x18bd6f(++_0x3bf10a);}(_0x6b18,0x1ee));var _0x86b1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6b18[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x86b1('0x0'));var BPromise=require(_0x86b1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x86b1('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x86b1('0x3'))(_0x86b1('0x4'));var config=require(_0x86b1('0x5'));var jayson=require(_0x86b1('0x6'));var client=jayson[_0x86b1('0x7')][_0x86b1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x250413,_0x3cd498,_0x421d08){return new BPromise(function(_0x2e7aeb,_0x282a56){return client[_0x86b1('0x9')](_0x250413,_0x421d08)[_0x86b1('0xa')](function(_0x313198){logger[_0x86b1('0xb')](_0x86b1('0xc'),_0x3cd498,_0x86b1('0xd'));logger['debug'](_0x86b1('0xe'),_0x3cd498,_0x86b1('0xd'),JSON[_0x86b1('0xf')](_0x313198));if(_0x313198[_0x86b1('0x10')]){if(_0x313198[_0x86b1('0x10')]['code']===0x1f4){logger[_0x86b1('0x10')](_0x86b1('0xc'),_0x3cd498,_0x313198[_0x86b1('0x10')][_0x86b1('0x11')]);return _0x282a56(_0x313198['error']['message']);}logger[_0x86b1('0x10')](_0x86b1('0xc'),_0x3cd498,_0x313198['error'][_0x86b1('0x11')]);return _0x2e7aeb(_0x313198[_0x86b1('0x10')]['message']);}else{logger[_0x86b1('0xb')](_0x86b1('0xc'),_0x3cd498,_0x86b1('0xd'));_0x2e7aeb(_0x313198[_0x86b1('0x12')][_0x86b1('0x11')]);}})[_0x86b1('0x13')](function(_0xc4e245){logger[_0x86b1('0x10')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3cd498,_0xc4e245);_0x282a56(_0xc4e245);});});}exports[_0x86b1('0x14')]=function(_0x1823cc){var _0x56890b=this;return new Promise(function(_0x7321eb,_0x4e1083){return db[_0x86b1('0x15')][_0x86b1('0x16')](_0x1823cc['body'],{'raw':_0x1823cc['options']?_0x1823cc['options'][_0x86b1('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x5f4047){logger[_0x86b1('0xb')](_0x86b1('0x14'),_0x1823cc);logger[_0x86b1('0x18')](_0x86b1('0x14'),_0x1823cc,JSON[_0x86b1('0xf')](_0x5f4047));_0x7321eb(_0x5f4047);})[_0x86b1('0x13')](function(_0x387f84){logger[_0x86b1('0x10')](_0x86b1('0x14'),_0x387f84[_0x86b1('0x11')],_0x1823cc);_0x4e1083(_0x56890b[_0x86b1('0x10')](0x1f4,_0x387f84[_0x86b1('0x11')]));});});};exports[_0x86b1('0x19')]=function(_0x5159b9){var _0x7375bc=this;return new Promise(function(_0x5de2f5,_0x181138){return db[_0x86b1('0x15')][_0x86b1('0x1a')](_0x5159b9[_0x86b1('0x1b')],{'raw':_0x5159b9[_0x86b1('0x1c')]?_0x5159b9[_0x86b1('0x1c')][_0x86b1('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5159b9['options']?_0x5159b9[_0x86b1('0x1c')][_0x86b1('0x1d')]||null:null,'attributes':_0x5159b9[_0x86b1('0x1c')]?_0x5159b9['options']['attributes']||null:null,'limit':_0x5159b9[_0x86b1('0x1c')]?_0x5159b9['options']['limit']||null:null})[_0x86b1('0xa')](function(_0xf4df77){logger[_0x86b1('0xb')]('UpdateWhatsappQueueReport',_0x5159b9);logger[_0x86b1('0x18')]('UpdateWhatsappQueueReport',_0x5159b9,JSON['stringify'](_0xf4df77));_0x5de2f5(_0xf4df77);})[_0x86b1('0x13')](function(_0xfd8769){logger[_0x86b1('0x10')](_0x86b1('0x19'),_0xfd8769[_0x86b1('0x11')],_0x5159b9);_0x181138(_0x7375bc[_0x86b1('0x10')](0x1f4,_0xfd8769[_0x86b1('0x11')]));});});};
\ No newline at end of file
+var _0x2b4a=['code','message','WhatsappQueueReport','create','options','raw','CreateWhatsappQueueReport','debug','catch','UpdateWhatsappQueueReport','update','body','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2b9bcd,_0x503a87){var _0x474bc9=function(_0x43cca1){while(--_0x43cca1){_0x2b9bcd['push'](_0x2b9bcd['shift']());}};_0x474bc9(++_0x503a87);}(_0x2b4a,0x1ae));var _0xa2b4=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x2b4a[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0xa2b4('0x0'));var util=require(_0xa2b4('0x1'));var moment=require(_0xa2b4('0x2'));var BPromise=require(_0xa2b4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa2b4('0x4'));var db=require(_0xa2b4('0x5'))['db'];var utils=require(_0xa2b4('0x6'));var logger=require(_0xa2b4('0x7'))(_0xa2b4('0x8'));var config=require('../../config/environment');var jayson=require(_0xa2b4('0x9'));var client=jayson['client'][_0xa2b4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d073a,_0x2992bf,_0x441ab7){return new BPromise(function(_0x2bada6,_0x208859){return client['request'](_0x4d073a,_0x441ab7)[_0xa2b4('0xb')](function(_0x58ebc2){logger[_0xa2b4('0xc')](_0xa2b4('0xd'),_0x2992bf,'request\x20sent');logger['debug'](_0xa2b4('0xe'),_0x2992bf,_0xa2b4('0xf'),JSON[_0xa2b4('0x10')](_0x58ebc2));if(_0x58ebc2[_0xa2b4('0x11')]){if(_0x58ebc2['error'][_0xa2b4('0x12')]===0x1f4){logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x58ebc2['error'][_0xa2b4('0x13')]);return _0x208859(_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);}logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);return _0x2bada6(_0x58ebc2[_0xa2b4('0x11')][_0xa2b4('0x13')]);}else{logger[_0xa2b4('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2992bf,'request\x20sent');_0x2bada6(_0x58ebc2['result'][_0xa2b4('0x13')]);}})['catch'](function(_0x2dcc9f){logger[_0xa2b4('0x11')](_0xa2b4('0xd'),_0x2992bf,_0x2dcc9f);_0x208859(_0x2dcc9f);});});}exports['CreateWhatsappQueueReport']=function(_0x1ba253){var _0x4c4703=this;return new Promise(function(_0x1fb501,_0x174ee4){return db[_0xa2b4('0x14')][_0xa2b4('0x15')](_0x1ba253['body'],{'raw':_0x1ba253[_0xa2b4('0x16')]?_0x1ba253[_0xa2b4('0x16')][_0xa2b4('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x5b5a7d){logger[_0xa2b4('0xc')](_0xa2b4('0x18'),_0x1ba253);logger[_0xa2b4('0x19')](_0xa2b4('0x18'),_0x1ba253,JSON[_0xa2b4('0x10')](_0x5b5a7d));_0x1fb501(_0x5b5a7d);})[_0xa2b4('0x1a')](function(_0x2dc1af){logger['error'](_0xa2b4('0x18'),_0x2dc1af[_0xa2b4('0x13')],_0x1ba253);_0x174ee4(_0x4c4703[_0xa2b4('0x11')](0x1f4,_0x2dc1af[_0xa2b4('0x13')]));});});};exports[_0xa2b4('0x1b')]=function(_0x23294b){var _0x144bf0=this;return new Promise(function(_0x3545c6,_0x1b3af6){return db[_0xa2b4('0x14')][_0xa2b4('0x1c')](_0x23294b[_0xa2b4('0x1d')],{'raw':_0x23294b['options']?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23294b[_0xa2b4('0x16')]?_0x23294b[_0xa2b4('0x16')]['where']||null:null,'attributes':_0x23294b['options']?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x1e')]||null:null,'limit':_0x23294b[_0xa2b4('0x16')]?_0x23294b[_0xa2b4('0x16')][_0xa2b4('0x1f')]||null:null})[_0xa2b4('0xb')](function(_0x3f52d1){logger[_0xa2b4('0xc')]('UpdateWhatsappQueueReport',_0x23294b);logger[_0xa2b4('0x19')]('UpdateWhatsappQueueReport',_0x23294b,JSON['stringify'](_0x3f52d1));_0x3545c6(_0x3f52d1);})['catch'](function(_0x515389){logger['error'](_0xa2b4('0x1b'),_0x515389['message'],_0x23294b);_0x1b3af6(_0x144bf0[_0xa2b4('0x11')](0x1f4,_0x515389[_0xa2b4('0x13')]));});});};
\ No newline at end of file
index 3bba753..65855f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0998=['path','connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','exports','util'];(function(_0x5cab31,_0x50a846){var _0x1cbf1a=function(_0x1c89c1){while(--_0x1c89c1){_0x5cab31['push'](_0x5cab31['shift']());}};_0x1cbf1a(++_0x50a846);}(_0x0998,0x117));var _0x8099=function(_0x5acba9,_0x3fc28b){_0x5acba9=_0x5acba9-0x0;var _0x20e1d8=_0x0998[_0x5acba9];return _0x20e1d8;};'use strict';var multer=require('multer');var util=require(_0x8099('0x0'));var path=require(_0x8099('0x1'));var timeout=require(_0x8099('0x2'));var express=require(_0x8099('0x3'));var router=express[_0x8099('0x4')]();var fs_extra=require(_0x8099('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8099('0x6'));var controller=require(_0x8099('0x7'));router[_0x8099('0x8')]('/',auth[_0x8099('0x9')](),controller[_0x8099('0xa')]);router[_0x8099('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x8099('0xb')]);router[_0x8099('0x8')](_0x8099('0xc'),auth['isAuthenticated'](),controller[_0x8099('0xd')]);router[_0x8099('0xe')]('/',auth[_0x8099('0x9')](),controller[_0x8099('0xf')]);router[_0x8099('0x10')]('/:id',auth[_0x8099('0x9')](),controller[_0x8099('0x11')]);router[_0x8099('0x12')]('/:id',auth[_0x8099('0x9')](),controller['destroy']);module[_0x8099('0x13')]=router;
\ No newline at end of file
+var _0x1808=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x435b4e,_0x158fe1){var _0x4349b5=function(_0xac48b2){while(--_0xac48b2){_0x435b4e['push'](_0x435b4e['shift']());}};_0x4349b5(++_0x158fe1);}(_0x1808,0xf7));var _0x8180=function(_0xaadc70,_0x2c050d){_0xaadc70=_0xaadc70-0x0;var _0x3ac647=_0x1808[_0xaadc70];return _0x3ac647;};'use strict';var multer=require(_0x8180('0x0'));var util=require('util');var path=require(_0x8180('0x1'));var timeout=require(_0x8180('0x2'));var express=require(_0x8180('0x3'));var router=express[_0x8180('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8180('0x5'));var interaction=require(_0x8180('0x6'));var config=require(_0x8180('0x7'));var controller=require(_0x8180('0x8'));router[_0x8180('0x9')]('/',auth[_0x8180('0xa')](),controller['index']);router[_0x8180('0x9')](_0x8180('0xb'),auth['isAuthenticated'](),controller[_0x8180('0xc')]);router[_0x8180('0x9')]('/:id',auth[_0x8180('0xa')](),controller[_0x8180('0xd')]);router[_0x8180('0xe')]('/',auth[_0x8180('0xa')](),controller[_0x8180('0xf')]);router[_0x8180('0x10')]('/:id',auth[_0x8180('0xa')](),controller['update']);router[_0x8180('0x11')](_0x8180('0x12'),auth[_0x8180('0xa')](),controller[_0x8180('0x13')]);module[_0x8180('0x14')]=router;
\ No newline at end of file
index 7fab727..01521c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7366=['ENUM','account','agent','queue','DATE','sequelize','exports','STRING'];(function(_0x328be0,_0x37518b){var _0x2846bf=function(_0x4e1bda){while(--_0x4e1bda){_0x328be0['push'](_0x328be0['shift']());}};_0x2846bf(++_0x37518b);}(_0x7366,0x9d));var _0x6736=function(_0x3e1829,_0xc8ccda){_0x3e1829=_0x3e1829-0x0;var _0x129345=_0x7366[_0x3e1829];return _0x129345;};'use strict';var Sequelize=require(_0x6736('0x0'));module[_0x6736('0x1')]={'uniqueid':{'type':Sequelize[_0x6736('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x6736('0x3')](_0x6736('0x4'),_0x6736('0x5'),_0x6736('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x6736('0x7')]}};
\ No newline at end of file
+var _0xafcd=['sequelize','exports','STRING','ENUM','account','agent','queue'];(function(_0x45f7c9,_0x192a73){var _0x2c6810=function(_0xddb463){while(--_0xddb463){_0x45f7c9['push'](_0x45f7c9['shift']());}};_0x2c6810(++_0x192a73);}(_0xafcd,0x157));var _0xdafc=function(_0x3c68bb,_0x3ee29d){_0x3c68bb=_0x3c68bb-0x0;var _0x5e1fde=_0xafcd[_0x3c68bb];return _0x5e1fde;};'use strict';var Sequelize=require(_0xdafc('0x0'));module[_0xdafc('0x1')]={'uniqueid':{'type':Sequelize[_0xdafc('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xdafc('0x3')](_0xdafc('0x4'),_0xdafc('0x5'),_0xdafc('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 2bcaff2..db973c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf97=['index','map','WhatsappTransferReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','then','destroy','error','stack','name'];(function(_0x2e197b,_0x9a2429){var _0x437d28=function(_0x5a9ed7){while(--_0x5a9ed7){_0x2e197b['push'](_0x2e197b['shift']());}};_0x437d28(++_0x9a2429);}(_0xdf97,0x1ce));var _0x7df9=function(_0xd36a51,_0x37b0d0){_0xd36a51=_0xd36a51-0x0;var _0x18295d=_0xdf97[_0xd36a51];return _0x18295d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7df9('0x0'));var zipdir=require(_0x7df9('0x1'));var jsonpatch=require(_0x7df9('0x2'));var rp=require('request-promise');var moment=require(_0x7df9('0x3'));var BPromise=require(_0x7df9('0x4'));var Mustache=require(_0x7df9('0x5'));var util=require('util');var path=require(_0x7df9('0x6'));var sox=require('sox');var csv=require(_0x7df9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7df9('0x8'));var _=require(_0x7df9('0x9'));var squel=require(_0x7df9('0xa'));var crypto=require(_0x7df9('0xb'));var jsforce=require(_0x7df9('0xc'));var deskjs=require(_0x7df9('0xd'));var toCsv=require(_0x7df9('0x7'));var querystring=require(_0x7df9('0xe'));var Papa=require(_0x7df9('0xf'));var Redis=require(_0x7df9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7df9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7df9('0x12'))('api');var utils=require(_0x7df9('0x13'));var config=require(_0x7df9('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbb2c1,_0x460a02){_0x460a02=_0x460a02||0xcc;return function(_0x188ac0){if(_0x188ac0){return _0xbb2c1[_0x7df9('0x15')](_0x460a02);}return _0xbb2c1['status'](_0x460a02)['end']();};}function respondWithResult(_0x45344f,_0x2330a4){_0x2330a4=_0x2330a4||0xc8;return function(_0x571c65){if(_0x571c65){return _0x45344f[_0x7df9('0x16')](_0x2330a4)[_0x7df9('0x17')](_0x571c65);}};}function respondWithFilteredResult(_0x53d952,_0x1f3222){return function(_0x25965d){if(_0x25965d){var _0x2a8d93=typeof _0x1f3222[_0x7df9('0x18')]==='undefined'&&typeof _0x1f3222[_0x7df9('0x19')]==='undefined';var _0x29e6ca=_0x25965d[_0x7df9('0x1a')];var _0xddf7eb=_0x2a8d93?0x0:_0x1f3222[_0x7df9('0x18')];var _0x1c2b7b=_0x2a8d93?_0x25965d['count']:_0x1f3222['offset']+_0x1f3222['limit'];var _0x4f8a93;if(_0x1c2b7b>=_0x29e6ca){_0x1c2b7b=_0x29e6ca;_0x4f8a93=0xc8;}else{_0x4f8a93=0xce;}_0x53d952[_0x7df9('0x16')](_0x4f8a93);return _0x53d952['set'](_0x7df9('0x1b'),_0xddf7eb+'-'+_0x1c2b7b+'/'+_0x29e6ca)[_0x7df9('0x17')](_0x25965d);}return null;};}function patchUpdates(_0x3b434a){return function(_0x4e15e6){try{jsonpatch[_0x7df9('0x1c')](_0x4e15e6,_0x3b434a,!![]);}catch(_0x870892){return BPromise[_0x7df9('0x1d')](_0x870892);}return _0x4e15e6['save']();};}function saveUpdates(_0xe961a9,_0x3d4ff1){return function(_0x4a1a83){if(_0x4a1a83){return _0x4a1a83['update'](_0xe961a9)[_0x7df9('0x1e')](function(_0x439c4a){return _0x439c4a;});}return null;};}function removeEntity(_0x141dab,_0x3b1fa3){return function(_0x17a894){if(_0x17a894){return _0x17a894[_0x7df9('0x1f')]()[_0x7df9('0x1e')](function(){_0x141dab[_0x7df9('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4873ca,_0x48b3af){return function(_0x3c23b2){if(!_0x3c23b2){_0x4873ca[_0x7df9('0x15')](0x194);}return _0x3c23b2;};}function handleError(_0x20b5b0,_0x2817c0){_0x2817c0=_0x2817c0||0x1f4;return function(_0x34bb37){logger[_0x7df9('0x20')](_0x34bb37[_0x7df9('0x21')]);if(_0x34bb37[_0x7df9('0x22')]){delete _0x34bb37[_0x7df9('0x22')];}_0x20b5b0['status'](_0x2817c0)['send'](_0x34bb37);};}exports[_0x7df9('0x23')]=function(_0x39777d,_0xc3c069){var _0x2688ce={},_0x53eae4={},_0x28b77e={'count':0x0,'rows':[]};var _0x31c06b=_[_0x7df9('0x24')](db[_0x7df9('0x25')]['rawAttributes'],function(_0x37d086){return{'name':_0x37d086[_0x7df9('0x26')],'type':_0x37d086[_0x7df9('0x27')][_0x7df9('0x28')]};});_0x53eae4[_0x7df9('0x29')]=_[_0x7df9('0x24')](_0x31c06b,_0x7df9('0x22'));_0x53eae4[_0x7df9('0x2a')]=_[_0x7df9('0x2b')](_0x39777d[_0x7df9('0x2a')]);_0x53eae4['filters']=_[_0x7df9('0x2c')](_0x53eae4[_0x7df9('0x29')],_0x53eae4[_0x7df9('0x2a')]);_0x2688ce[_0x7df9('0x2d')]=_['intersection'](_0x53eae4[_0x7df9('0x29')],qs[_0x7df9('0x2e')](_0x39777d[_0x7df9('0x2a')][_0x7df9('0x2e')]));_0x2688ce['attributes']=_0x2688ce[_0x7df9('0x2d')][_0x7df9('0x2f')]?_0x2688ce[_0x7df9('0x2d')]:_0x53eae4[_0x7df9('0x29')];if(!_0x39777d[_0x7df9('0x2a')][_0x7df9('0x30')](_0x7df9('0x31'))){_0x2688ce[_0x7df9('0x19')]=qs[_0x7df9('0x19')](_0x39777d[_0x7df9('0x2a')][_0x7df9('0x19')]);_0x2688ce[_0x7df9('0x18')]=qs[_0x7df9('0x18')](_0x39777d[_0x7df9('0x2a')]['offset']);}_0x2688ce[_0x7df9('0x32')]=qs['sort'](_0x39777d[_0x7df9('0x2a')][_0x7df9('0x33')]);_0x2688ce[_0x7df9('0x34')]=qs[_0x7df9('0x35')](_[_0x7df9('0x36')](_0x39777d[_0x7df9('0x2a')],_0x53eae4[_0x7df9('0x35')]),_0x31c06b);if(_0x39777d['query'][_0x7df9('0x37')]){_0x2688ce[_0x7df9('0x34')]=_[_0x7df9('0x38')](_0x2688ce[_0x7df9('0x34')],{'$or':_[_0x7df9('0x24')](_0x31c06b,function(_0x38882c){if(_0x38882c[_0x7df9('0x27')]!==_0x7df9('0x39')){var _0x191769={};_0x191769[_0x38882c[_0x7df9('0x22')]]={'$like':'%'+_0x39777d['query'][_0x7df9('0x37')]+'%'};return _0x191769;}})});}_0x2688ce=_[_0x7df9('0x38')]({},_0x2688ce,_0x39777d[_0x7df9('0x3a')]);var _0x16bb23={'where':_0x2688ce['where']};return db[_0x7df9('0x25')]['count'](_0x16bb23)[_0x7df9('0x1e')](function(_0x5db7c0){_0x28b77e[_0x7df9('0x1a')]=_0x5db7c0;if(_0x39777d['query'][_0x7df9('0x3b')]){_0x2688ce[_0x7df9('0x3c')]=[{'all':!![]}];}return db[_0x7df9('0x25')][_0x7df9('0x3d')](_0x2688ce);})[_0x7df9('0x1e')](function(_0x28aba6){_0x28b77e[_0x7df9('0x3e')]=_0x28aba6;return _0x28b77e;})[_0x7df9('0x1e')](respondWithFilteredResult(_0xc3c069,_0x2688ce))[_0x7df9('0x3f')](handleError(_0xc3c069,null));};exports[_0x7df9('0x40')]=function(_0x3c216a,_0x438eea){var _0x5f17dc={'raw':!![],'where':{'id':_0x3c216a[_0x7df9('0x41')]['id']}},_0x3e62f2={};_0x3e62f2[_0x7df9('0x29')]=_[_0x7df9('0x2b')](db['WhatsappTransferReport']['rawAttributes']);_0x3e62f2['query']=_[_0x7df9('0x2b')](_0x3c216a[_0x7df9('0x2a')]);_0x3e62f2['filters']=_['intersection'](_0x3e62f2[_0x7df9('0x29')],_0x3e62f2['query']);_0x5f17dc[_0x7df9('0x2d')]=_[_0x7df9('0x2c')](_0x3e62f2[_0x7df9('0x29')],qs[_0x7df9('0x2e')](_0x3c216a['query'][_0x7df9('0x2e')]));_0x5f17dc[_0x7df9('0x2d')]=_0x5f17dc[_0x7df9('0x2d')]['length']?_0x5f17dc['attributes']:_0x3e62f2[_0x7df9('0x29')];if(_0x3c216a[_0x7df9('0x2a')][_0x7df9('0x3b')]){_0x5f17dc[_0x7df9('0x3c')]=[{'all':!![]}];}_0x5f17dc=_[_0x7df9('0x38')]({},_0x5f17dc,_0x3c216a[_0x7df9('0x3a')]);return db[_0x7df9('0x25')][_0x7df9('0x42')](_0x5f17dc)[_0x7df9('0x1e')](handleEntityNotFound(_0x438eea,null))[_0x7df9('0x1e')](respondWithResult(_0x438eea,null))['catch'](handleError(_0x438eea,null));};exports[_0x7df9('0x43')]=function(_0x44f134,_0x4d2a33){return db[_0x7df9('0x25')]['create'](_0x44f134['body'],{})[_0x7df9('0x1e')](respondWithResult(_0x4d2a33,0xc9))[_0x7df9('0x3f')](handleError(_0x4d2a33,null));};exports[_0x7df9('0x44')]=function(_0x1df252,_0x2439c0){if(_0x1df252['body']['id']){delete _0x1df252[_0x7df9('0x45')]['id'];}return db['WhatsappTransferReport']['find']({'where':{'id':_0x1df252[_0x7df9('0x41')]['id']}})['then'](handleEntityNotFound(_0x2439c0,null))[_0x7df9('0x1e')](saveUpdates(_0x1df252['body'],null))['then'](respondWithResult(_0x2439c0,null))[_0x7df9('0x3f')](handleError(_0x2439c0,null));};exports['destroy']=function(_0x1dc00f,_0x5c5127){return db[_0x7df9('0x25')][_0x7df9('0x42')]({'where':{'id':_0x1dc00f[_0x7df9('0x41')]['id']}})['then'](handleEntityNotFound(_0x5c5127,null))[_0x7df9('0x1e')](removeEntity(_0x5c5127,null))['catch'](handleError(_0x5c5127,null));};exports[_0x7df9('0x46')]=function(_0x21119d,_0x4c3d8e){return db['WhatsappTransferReport'][_0x7df9('0x46')]()[_0x7df9('0x1e')](respondWithResult(_0x4c3d8e,null))[_0x7df9('0x3f')](handleError(_0x4c3d8e,null));};
\ No newline at end of file
+var _0x73f5=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','VIRTUAL','options','where','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','undefined','count','apply','reject','save','then','destroy','error','stack','name','index','map','WhatsappTransferReport','fieldName','type'];(function(_0x697114,_0x196d93){var _0x1a9edb=function(_0x46b11e){while(--_0x46b11e){_0x697114['push'](_0x697114['shift']());}};_0x1a9edb(++_0x196d93);}(_0x73f5,0x181));var _0x573f=function(_0x199128,_0x3022af){_0x199128=_0x199128-0x0;var _0x4ca850=_0x73f5[_0x199128];return _0x4ca850;};'use strict';var emlformat=require(_0x573f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x573f('0x1'));var jsonpatch=require(_0x573f('0x2'));var rp=require(_0x573f('0x3'));var moment=require('moment');var BPromise=require(_0x573f('0x4'));var Mustache=require(_0x573f('0x5'));var util=require(_0x573f('0x6'));var path=require(_0x573f('0x7'));var sox=require('sox');var csv=require(_0x573f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x573f('0x9'));var crypto=require(_0x573f('0xa'));var jsforce=require(_0x573f('0xb'));var deskjs=require(_0x573f('0xc'));var toCsv=require(_0x573f('0x8'));var querystring=require('querystring');var Papa=require(_0x573f('0xd'));var Redis=require('ioredis');var authService=require(_0x573f('0xe'));var qs=require(_0x573f('0xf'));var as=require(_0x573f('0x10'));var hardwareService=require(_0x573f('0x11'));var logger=require('../../config/logger')(_0x573f('0x12'));var utils=require(_0x573f('0x13'));var config=require(_0x573f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x573f('0x15'))['db'];function respondWithStatusCode(_0x3b3a71,_0x2889c9){_0x2889c9=_0x2889c9||0xcc;return function(_0x4e2bb9){if(_0x4e2bb9){return _0x3b3a71[_0x573f('0x16')](_0x2889c9);}return _0x3b3a71['status'](_0x2889c9)['end']();};}function respondWithResult(_0x177fac,_0xcb9532){_0xcb9532=_0xcb9532||0xc8;return function(_0x57804b){if(_0x57804b){return _0x177fac[_0x573f('0x17')](_0xcb9532)['json'](_0x57804b);}};}function respondWithFilteredResult(_0x450999,_0x2a2b7d){return function(_0x2505d9){if(_0x2505d9){var _0x486295=typeof _0x2a2b7d[_0x573f('0x18')]==='undefined'&&typeof _0x2a2b7d[_0x573f('0x19')]===_0x573f('0x1a');var _0x53b706=_0x2505d9[_0x573f('0x1b')];var _0x430271=_0x486295?0x0:_0x2a2b7d['offset'];var _0x2e203d=_0x486295?_0x2505d9[_0x573f('0x1b')]:_0x2a2b7d[_0x573f('0x18')]+_0x2a2b7d[_0x573f('0x19')];var _0x5e683b;if(_0x2e203d>=_0x53b706){_0x2e203d=_0x53b706;_0x5e683b=0xc8;}else{_0x5e683b=0xce;}_0x450999[_0x573f('0x17')](_0x5e683b);return _0x450999['set']('Content-Range',_0x430271+'-'+_0x2e203d+'/'+_0x53b706)['json'](_0x2505d9);}return null;};}function patchUpdates(_0x45ef03){return function(_0x113a33){try{jsonpatch[_0x573f('0x1c')](_0x113a33,_0x45ef03,!![]);}catch(_0x5d1710){return BPromise[_0x573f('0x1d')](_0x5d1710);}return _0x113a33[_0x573f('0x1e')]();};}function saveUpdates(_0x59b46a,_0xbab176){return function(_0x5e6776){if(_0x5e6776){return _0x5e6776['update'](_0x59b46a)[_0x573f('0x1f')](function(_0xf03e90){return _0xf03e90;});}return null;};}function removeEntity(_0x59a6a8,_0x41553e){return function(_0xe7cb49){if(_0xe7cb49){return _0xe7cb49[_0x573f('0x20')]()[_0x573f('0x1f')](function(){_0x59a6a8[_0x573f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d0f0b,_0x1f2251){return function(_0x7a1795){if(!_0x7a1795){_0x2d0f0b['sendStatus'](0x194);}return _0x7a1795;};}function handleError(_0x2b1d22,_0x4c0084){_0x4c0084=_0x4c0084||0x1f4;return function(_0x24d6ec){logger[_0x573f('0x21')](_0x24d6ec[_0x573f('0x22')]);if(_0x24d6ec[_0x573f('0x23')]){delete _0x24d6ec[_0x573f('0x23')];}_0x2b1d22[_0x573f('0x17')](_0x4c0084)['send'](_0x24d6ec);};}exports[_0x573f('0x24')]=function(_0xd02182,_0x6a5f1){var _0x14a1a9={},_0x11978b={},_0x36891={'count':0x0,'rows':[]};var _0x29603e=_[_0x573f('0x25')](db[_0x573f('0x26')]['rawAttributes'],function(_0x10ac4){return{'name':_0x10ac4[_0x573f('0x27')],'type':_0x10ac4[_0x573f('0x28')][_0x573f('0x29')]};});_0x11978b[_0x573f('0x2a')]=_[_0x573f('0x25')](_0x29603e,_0x573f('0x23'));_0x11978b['query']=_['keys'](_0xd02182[_0x573f('0x2b')]);_0x11978b[_0x573f('0x2c')]=_[_0x573f('0x2d')](_0x11978b[_0x573f('0x2a')],_0x11978b[_0x573f('0x2b')]);_0x14a1a9[_0x573f('0x2e')]=_[_0x573f('0x2d')](_0x11978b[_0x573f('0x2a')],qs[_0x573f('0x2f')](_0xd02182['query'][_0x573f('0x2f')]));_0x14a1a9[_0x573f('0x2e')]=_0x14a1a9['attributes'][_0x573f('0x30')]?_0x14a1a9[_0x573f('0x2e')]:_0x11978b[_0x573f('0x2a')];if(!_0xd02182[_0x573f('0x2b')][_0x573f('0x31')](_0x573f('0x32'))){_0x14a1a9[_0x573f('0x19')]=qs[_0x573f('0x19')](_0xd02182[_0x573f('0x2b')][_0x573f('0x19')]);_0x14a1a9[_0x573f('0x18')]=qs[_0x573f('0x18')](_0xd02182[_0x573f('0x2b')][_0x573f('0x18')]);}_0x14a1a9[_0x573f('0x33')]=qs['sort'](_0xd02182[_0x573f('0x2b')][_0x573f('0x34')]);_0x14a1a9['where']=qs[_0x573f('0x2c')](_['pick'](_0xd02182[_0x573f('0x2b')],_0x11978b[_0x573f('0x2c')]),_0x29603e);if(_0xd02182[_0x573f('0x2b')][_0x573f('0x35')]){_0x14a1a9['where']=_[_0x573f('0x36')](_0x14a1a9['where'],{'$or':_[_0x573f('0x25')](_0x29603e,function(_0x521ec9){if(_0x521ec9['type']!==_0x573f('0x37')){var _0x5a0747={};_0x5a0747[_0x521ec9['name']]={'$like':'%'+_0xd02182[_0x573f('0x2b')][_0x573f('0x35')]+'%'};return _0x5a0747;}})});}_0x14a1a9=_[_0x573f('0x36')]({},_0x14a1a9,_0xd02182[_0x573f('0x38')]);var _0x3b8615={'where':_0x14a1a9[_0x573f('0x39')]};return db[_0x573f('0x26')][_0x573f('0x1b')](_0x3b8615)[_0x573f('0x1f')](function(_0x58450c){_0x36891[_0x573f('0x1b')]=_0x58450c;if(_0xd02182[_0x573f('0x2b')]['includeAll']){_0x14a1a9['include']=[{'all':!![]}];}return db[_0x573f('0x26')][_0x573f('0x3a')](_0x14a1a9);})[_0x573f('0x1f')](function(_0x3d0566){_0x36891[_0x573f('0x3b')]=_0x3d0566;return _0x36891;})[_0x573f('0x1f')](respondWithFilteredResult(_0x6a5f1,_0x14a1a9))[_0x573f('0x3c')](handleError(_0x6a5f1,null));};exports[_0x573f('0x3d')]=function(_0x14ea37,_0x21aa86){var _0x271c75={'raw':!![],'where':{'id':_0x14ea37[_0x573f('0x3e')]['id']}},_0x46e958={};_0x46e958['model']=_[_0x573f('0x3f')](db[_0x573f('0x26')][_0x573f('0x40')]);_0x46e958[_0x573f('0x2b')]=_['keys'](_0x14ea37[_0x573f('0x2b')]);_0x46e958[_0x573f('0x2c')]=_[_0x573f('0x2d')](_0x46e958[_0x573f('0x2a')],_0x46e958[_0x573f('0x2b')]);_0x271c75['attributes']=_[_0x573f('0x2d')](_0x46e958['model'],qs[_0x573f('0x2f')](_0x14ea37[_0x573f('0x2b')][_0x573f('0x2f')]));_0x271c75[_0x573f('0x2e')]=_0x271c75['attributes'][_0x573f('0x30')]?_0x271c75[_0x573f('0x2e')]:_0x46e958[_0x573f('0x2a')];if(_0x14ea37[_0x573f('0x2b')]['includeAll']){_0x271c75[_0x573f('0x41')]=[{'all':!![]}];}_0x271c75=_['merge']({},_0x271c75,_0x14ea37[_0x573f('0x38')]);return db[_0x573f('0x26')][_0x573f('0x42')](_0x271c75)[_0x573f('0x1f')](handleEntityNotFound(_0x21aa86,null))[_0x573f('0x1f')](respondWithResult(_0x21aa86,null))['catch'](handleError(_0x21aa86,null));};exports[_0x573f('0x43')]=function(_0x89af20,_0x5919f8){return db[_0x573f('0x26')][_0x573f('0x43')](_0x89af20[_0x573f('0x44')],{})[_0x573f('0x1f')](respondWithResult(_0x5919f8,0xc9))[_0x573f('0x3c')](handleError(_0x5919f8,null));};exports[_0x573f('0x45')]=function(_0x55c08e,_0x32a52e){if(_0x55c08e['body']['id']){delete _0x55c08e[_0x573f('0x44')]['id'];}return db['WhatsappTransferReport'][_0x573f('0x42')]({'where':{'id':_0x55c08e[_0x573f('0x3e')]['id']}})['then'](handleEntityNotFound(_0x32a52e,null))[_0x573f('0x1f')](saveUpdates(_0x55c08e[_0x573f('0x44')],null))[_0x573f('0x1f')](respondWithResult(_0x32a52e,null))[_0x573f('0x3c')](handleError(_0x32a52e,null));};exports['destroy']=function(_0x587b38,_0x3f4185){return db[_0x573f('0x26')][_0x573f('0x42')]({'where':{'id':_0x587b38['params']['id']}})[_0x573f('0x1f')](handleEntityNotFound(_0x3f4185,null))['then'](removeEntity(_0x3f4185,null))[_0x573f('0x3c')](handleError(_0x3f4185,null));};exports[_0x573f('0x46')]=function(_0x3d0831,_0x1fdfec){return db['WhatsappTransferReport'][_0x573f('0x46')]()[_0x573f('0x1f')](respondWithResult(_0x1fdfec,null))[_0x573f('0x3c')](handleError(_0x1fdfec,null));};
\ No newline at end of file
index e8a6343..cc5c054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a02=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util'];(function(_0x3e6f68,_0xe07e71){var _0x409b9c=function(_0x19c3e8){while(--_0x19c3e8){_0x3e6f68['push'](_0x3e6f68['shift']());}};_0x409b9c(++_0xe07e71);}(_0x4a02,0x1eb));var _0x24a0=function(_0xa3bce5,_0x507b0e){_0xa3bce5=_0xa3bce5-0x0;var _0x51717e=_0x4a02[_0xa3bce5];return _0x51717e;};'use strict';var _=require('lodash');var util=require(_0x24a0('0x0'));var logger=require(_0x24a0('0x1'))(_0x24a0('0x2'));var moment=require(_0x24a0('0x3'));var BPromise=require(_0x24a0('0x4'));var rp=require(_0x24a0('0x5'));var fs=require('fs');var path=require(_0x24a0('0x6'));var rimraf=require('rimraf');var config=require(_0x24a0('0x7'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x2d25f8,_0x50f0ce){return _0x2d25f8[_0x24a0('0x8')](_0x24a0('0x9'),attributes,{'tableName':_0x24a0('0xa'),'paranoid':![],'indexes':[{'name':_0x24a0('0xb'),'fields':[_0x24a0('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x34b9=['moment','request-promise','../../config/environment','./whatsappTransferReport.attributes','define','uniqueid','util','../../config/logger','api'];(function(_0x9ea8f8,_0x12912f){var _0x1839e9=function(_0x98b293){while(--_0x98b293){_0x9ea8f8['push'](_0x9ea8f8['shift']());}};_0x1839e9(++_0x12912f);}(_0x34b9,0x84));var _0x934b=function(_0x62c954,_0x374355){_0x62c954=_0x62c954-0x0;var _0x47f48c=_0x34b9[_0x62c954];return _0x47f48c;};'use strict';var _=require('lodash');var util=require(_0x934b('0x0'));var logger=require(_0x934b('0x1'))(_0x934b('0x2'));var moment=require(_0x934b('0x3'));var BPromise=require('bluebird');var rp=require(_0x934b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x934b('0x5'));var attributes=require(_0x934b('0x6'));module['exports']=function(_0x1f2833,_0x34317a){return _0x1f2833[_0x934b('0x7')]('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x934b('0x8'),'fields':[_0x934b('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index ae84dbc..e8c2144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff33=['WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xff33,0x1a3));var _0x3ff3=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0xff33[_0x352e09];return _0x1b7094;};'use strict';var _=require(_0x3ff3('0x0'));var util=require(_0x3ff3('0x1'));var moment=require(_0x3ff3('0x2'));var BPromise=require(_0x3ff3('0x3'));var rs=require(_0x3ff3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3ff3('0x5'))['db'];var utils=require(_0x3ff3('0x6'));var logger=require(_0x3ff3('0x7'))(_0x3ff3('0x8'));var config=require(_0x3ff3('0x9'));var jayson=require(_0x3ff3('0xa'));var client=jayson[_0x3ff3('0xb')][_0x3ff3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x521a41,_0x140a97,_0x4a1d97){return new BPromise(function(_0x443ecc,_0x4878c0){return client[_0x3ff3('0xd')](_0x521a41,_0x4a1d97)['then'](function(_0x28312c){logger[_0x3ff3('0xe')](_0x3ff3('0xf'),_0x140a97,_0x3ff3('0x10'));logger[_0x3ff3('0x11')](_0x3ff3('0x12'),_0x140a97,_0x3ff3('0x10'),JSON['stringify'](_0x28312c));if(_0x28312c[_0x3ff3('0x13')]){if(_0x28312c[_0x3ff3('0x13')]['code']===0x1f4){logger[_0x3ff3('0x13')](_0x3ff3('0xf'),_0x140a97,_0x28312c[_0x3ff3('0x13')][_0x3ff3('0x14')]);return _0x4878c0(_0x28312c[_0x3ff3('0x13')][_0x3ff3('0x14')]);}logger['error'](_0x3ff3('0xf'),_0x140a97,_0x28312c[_0x3ff3('0x13')]['message']);return _0x443ecc(_0x28312c[_0x3ff3('0x13')][_0x3ff3('0x14')]);}else{logger[_0x3ff3('0xe')]('WhatsappTransferReport,\x20%s,\x20%s',_0x140a97,_0x3ff3('0x10'));_0x443ecc(_0x28312c[_0x3ff3('0x15')][_0x3ff3('0x14')]);}})[_0x3ff3('0x16')](function(_0x32c948){logger[_0x3ff3('0x13')](_0x3ff3('0xf'),_0x140a97,_0x32c948);_0x4878c0(_0x32c948);});});}
\ No newline at end of file
+var _0x496d=['code','WhatsappTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x427e1c,_0x312041){var _0x377e3f=function(_0x15f411){while(--_0x15f411){_0x427e1c['push'](_0x427e1c['shift']());}};_0x377e3f(++_0x312041);}(_0x496d,0x125));var _0xd496=function(_0x106a7d,_0x2d4d63){_0x106a7d=_0x106a7d-0x0;var _0x4a609a=_0x496d[_0x106a7d];return _0x4a609a;};'use strict';var _=require(_0xd496('0x0'));var util=require(_0xd496('0x1'));var moment=require(_0xd496('0x2'));var BPromise=require('bluebird');var rs=require(_0xd496('0x3'));var fs=require('fs');var Redis=require(_0xd496('0x4'));var db=require(_0xd496('0x5'))['db'];var utils=require(_0xd496('0x6'));var logger=require(_0xd496('0x7'))(_0xd496('0x8'));var config=require(_0xd496('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd496('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1932e0,_0x345928,_0x5ee135){return new BPromise(function(_0x300998,_0x304b78){return client[_0xd496('0xb')](_0x1932e0,_0x5ee135)[_0xd496('0xc')](function(_0xbce809){logger[_0xd496('0xd')]('WhatsappTransferReport,\x20%s,\x20%s',_0x345928,_0xd496('0xe'));logger[_0xd496('0xf')](_0xd496('0x10'),_0x345928,_0xd496('0xe'),JSON[_0xd496('0x11')](_0xbce809));if(_0xbce809[_0xd496('0x12')]){if(_0xbce809[_0xd496('0x12')][_0xd496('0x13')]===0x1f4){logger['error'](_0xd496('0x14'),_0x345928,_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);return _0x304b78(_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);}logger[_0xd496('0x12')](_0xd496('0x14'),_0x345928,_0xbce809['error'][_0xd496('0x15')]);return _0x300998(_0xbce809[_0xd496('0x12')][_0xd496('0x15')]);}else{logger['info'](_0xd496('0x14'),_0x345928,_0xd496('0xe'));_0x300998(_0xbce809[_0xd496('0x16')]['message']);}})[_0xd496('0x17')](function(_0x767457){logger[_0xd496('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x345928,_0x767457);_0x304b78(_0x767457);});});}
\ No newline at end of file
index ddf2500..de97362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa63f=['status','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','default','then','listen','start','info','filter','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','Online\x20apps:','online','join'];(function(_0x432e29,_0x3d39c6){var _0x2457cc=function(_0x15c935){while(--_0x15c935){_0x432e29['push'](_0x432e29['shift']());}};_0x2457cc(++_0x3d39c6);}(_0xa63f,0x1b6));var _0xfa63=function(_0x21481c,_0x1b51ba){_0x21481c=_0x21481c-0x0;var _0x5dd77a=_0xa63f[_0x21481c];return _0x5dd77a;};'use strict';var _=require(_0xfa63('0x0'));var db=require(_0xfa63('0x1'))['db'];var seedDb=require(_0xfa63('0x2'));var checkLicense=require(_0xfa63('0x3'));var rpc=require(_0xfa63('0x4'));var config=require(_0xfa63('0x5'));var logger=require(_0xfa63('0x6'))(_0xfa63('0x7'));var pm2=require(_0xfa63('0x8'));var pm2Config=require(_0xfa63('0x9'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0xfa63('0xa'));var transcribe=require(_0xfa63('0xb'));var provider=require(_0xfa63('0xc'));function main(){return db[_0xfa63('0xd')]['sync']()['then'](function(){if(config['seedDB']){return seedDb[_0xfa63('0xe')]();}})[_0xfa63('0xf')](function(){return checkLicense[_0xfa63('0xe')]();})['then'](function(){return rpc[_0xfa63('0x10')]();})['then'](function(_0xfcb3d1){logger['info'](_0xfcb3d1);return chat[_0xfa63('0x11')]();})[_0xfa63('0xf')](function(){return whatsapp[_0xfa63('0x11')]();})[_0xfa63('0xf')](function(){return schedule[_0xfa63('0x11')]();})[_0xfa63('0xf')](function(){return transcribe[_0xfa63('0x11')]();})[_0xfa63('0xf')](function(){return provider['start']();})['then'](function(_0x3cf87d){logger[_0xfa63('0x12')](_0x3cf87d);return pm2[_0xfa63('0x11')](pm2Config);})['then'](function(_0x146801){var _0x5a0ce1=_0x146801[_0xfa63('0x13')](function(_0x1093da){return typeof _0x1093da['exitCode']===_0xfa63('0x14')&&_0x1093da[_0xfa63('0x15')]>=0x0;});if(_0x5a0ce1[_0xfa63('0x16')]>0x0){throw new Error(_0x5a0ce1[_0xfa63('0x16')]+_0xfa63('0x17')+_[_0xfa63('0x18')](_0x5a0ce1,function(_0x53aec2){return'\x22'+_0x53aec2[_0xfa63('0x19')][_0xfa63('0x1a')]+'\x22';}));}logger[_0xfa63('0x12')](_0xfa63('0x1b'),_['map'](_['filter'](_0x146801,{'status':_0xfa63('0x1c')}),_0xfa63('0x1a'))[_0xfa63('0x1d')]());logger[_0xfa63('0x12')]('Offline\x20apps:',_['map'](_[_0xfa63('0x13')](_0x146801,function(_0x1e8776){return _0x1e8776[_0xfa63('0x1e')]!==_0xfa63('0x1c');}),_0xfa63('0x1a'))[_0xfa63('0x1d')]()||'None');console[_0xfa63('0x1f')](_0xfa63('0x20'));})[_0xfa63('0x21')](function(_0x1697a3){console['log'](_0xfa63('0x22'),_0x1697a3);logger['error'](_0xfa63('0x23'),_0x1697a3);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0xbac8=['catch','log','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','exitCode','number','length','Online\x20apps:','map','filter','online','name','Offline\x20apps:','status','None','App\x20Ready!'];(function(_0x229665,_0xc00fd0){var _0x32b2f1=function(_0x3a99c1){while(--_0x3a99c1){_0x229665['push'](_0x229665['shift']());}};_0x32b2f1(++_0xc00fd0);}(_0xbac8,0x140));var _0x8bac=function(_0x5bbbe0,_0x4e474c){_0x5bbbe0=_0x5bbbe0-0x0;var _0x5d838c=_0xbac8[_0x5bbbe0];return _0x5d838c;};'use strict';var _=require(_0x8bac('0x0'));var db=require(_0x8bac('0x1'))['db'];var seedDb=require('./config/seedDB');var checkLicense=require('./config/license');var rpc=require(_0x8bac('0x2'));var config=require(_0x8bac('0x3'));var logger=require(_0x8bac('0x4'))('app');var pm2=require(_0x8bac('0x5'));var pm2Config=require(_0x8bac('0x6'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x8bac('0x7'));var transcribe=require(_0x8bac('0x8'));var provider=require(_0x8bac('0x9'));function main(){return db[_0x8bac('0xa')][_0x8bac('0xb')]()[_0x8bac('0xc')](function(){if(config[_0x8bac('0xd')]){return seedDb[_0x8bac('0xe')]();}})[_0x8bac('0xc')](function(){return checkLicense['default']();})[_0x8bac('0xc')](function(){return rpc[_0x8bac('0xf')]();})[_0x8bac('0xc')](function(_0x4d1a27){logger[_0x8bac('0x10')](_0x4d1a27);return chat['start']();})[_0x8bac('0xc')](function(){return whatsapp[_0x8bac('0x11')]();})['then'](function(){return schedule[_0x8bac('0x11')]();})[_0x8bac('0xc')](function(){return transcribe[_0x8bac('0x11')]();})[_0x8bac('0xc')](function(){return provider[_0x8bac('0x11')]();})['then'](function(_0x4e571a){logger[_0x8bac('0x10')](_0x4e571a);return pm2[_0x8bac('0x11')](pm2Config);})['then'](function(_0x45170a){var _0x5264ad=_0x45170a['filter'](function(_0x7617a6){return typeof _0x7617a6[_0x8bac('0x12')]===_0x8bac('0x13')&&_0x7617a6[_0x8bac('0x12')]>=0x0;});if(_0x5264ad[_0x8bac('0x14')]>0x0){throw new Error(_0x5264ad[_0x8bac('0x14')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_['map'](_0x5264ad,function(_0x41692b){return'\x22'+_0x41692b['pm2_env']['name']+'\x22';}));}logger[_0x8bac('0x10')](_0x8bac('0x15'),_[_0x8bac('0x16')](_[_0x8bac('0x17')](_0x45170a,{'status':_0x8bac('0x18')}),_0x8bac('0x19'))['join']());logger[_0x8bac('0x10')](_0x8bac('0x1a'),_[_0x8bac('0x16')](_[_0x8bac('0x17')](_0x45170a,function(_0x16b4e6){return _0x16b4e6[_0x8bac('0x1b')]!==_0x8bac('0x18');}),_0x8bac('0x19'))['join']()||_0x8bac('0x1c'));console['log'](_0x8bac('0x1d'));})[_0x8bac('0x1e')](function(_0x2c04c2){console[_0x8bac('0x1f')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x2c04c2);logger[_0x8bac('0x20')](_0x8bac('0x21'),_0x2c04c2);process[_0x8bac('0x22')](0x1);});}main();
\ No newline at end of file
index 55e151c..40a22e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['whatsappAutoanswerDelay','isChatInteractionAuthorized','use','user','ChatInteraction','params','closed','disposition','then','status','unmanaged','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','User','find','authenticate','pass','json','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked','blockedAt','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','send','isNil','generateApiKey','regenerateApiKey','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','join','sign','secret','payload','options','promisify','verify','randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9bde,0xe1));var _0xe9bd=function(_0xdce3fe,_0x5c043a){_0xdce3fe=_0xdce3fe-0x0;var _0x4a52df=_0x9bde[_0xdce3fe];return _0x4a52df;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xe9bd('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xe9bd('0x1'));var encryptor=require('../encryptor');var _=require(_0xe9bd('0x2'));var jwt=require(_0xe9bd('0x3'));var expressJwt=require(_0xe9bd('0x4'));var compose=require(_0xe9bd('0x5'));var basicAuth=require(_0xe9bd('0x6'));var crypto=require(_0xe9bd('0x7'));var BPromise=require(_0xe9bd('0x8'));var util=require('util');var moment=require(_0xe9bd('0x9'));var validateJwt=expressJwt({'secret':config[_0xe9bd('0xa')][_0xe9bd('0xb')]});var userAttributes=['id',_0xe9bd('0xc'),_0xe9bd('0xd'),_0xe9bd('0xe'),_0xe9bd('0xf'),_0xe9bd('0x10'),_0xe9bd('0x11'),_0xe9bd('0x12'),'md5secret','voicePause',_0xe9bd('0x13'),_0xe9bd('0x14'),_0xe9bd('0x15'),'smsPause',_0xe9bd('0x16'),_0xe9bd('0x17'),_0xe9bd('0x18'),_0xe9bd('0x19'),'lastPauseAt',_0xe9bd('0x1a'),'allowmessenger',_0xe9bd('0x1b'),_0xe9bd('0x1c'),_0xe9bd('0x1d'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0xe9bd('0x1e'),_0xe9bd('0x1f'),_0xe9bd('0x20'),_0xe9bd('0x21'),_0xe9bd('0x22'),_0xe9bd('0x23'),_0xe9bd('0x24'),'hotdesk',_0xe9bd('0x25'),_0xe9bd('0x26'),_0xe9bd('0x27'),'settingsEnabled',_0xe9bd('0x28'),_0xe9bd('0x29'),_0xe9bd('0x2a'),_0xe9bd('0x2b'),'ignorePauseForPreviewCalls',_0xe9bd('0x2c'),'chatAutoanswer',_0xe9bd('0x2d'),'emailAutoanswer',_0xe9bd('0x2e'),_0xe9bd('0x2f'),_0xe9bd('0x30'),_0xe9bd('0x31'),_0xe9bd('0x32'),_0xe9bd('0x33'),_0xe9bd('0x34'),'whatsappAutoanswer',_0xe9bd('0x35')];exports[_0xe9bd('0x36')]=function(){return this['isAuthenticated'](!![])[_0xe9bd('0x37')](function(_0x505c23,_0x238ab1,_0x1b9cc9){if(_0x505c23[_0xe9bd('0x38')]){_0x1b9cc9();}else{return db[_0xe9bd('0x39')]['findOne']({'where':{'id':_0x505c23[_0xe9bd('0x3a')]['id']},'attributes':['id',_0xe9bd('0x3b'),_0xe9bd('0x3c')],'raw':!![]})[_0xe9bd('0x3d')](function(_0x2641be){if(_0x2641be&&_0x2641be[_0xe9bd('0x3b')]){return _0x238ab1[_0xe9bd('0x3e')](_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?0x195:0x193)['json']({'message':_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?'Unmanaged.':_0xe9bd('0x40')});}else{_0x1b9cc9();}})[_0xe9bd('0x41')](function(_0x119672){_0x1b9cc9(_0x119672);});}});};exports[_0xe9bd('0x42')]=function isAuthenticated(_0x141b95){return compose()[_0xe9bd('0x37')](function(_0x519f48,_0x5b7f1d,_0x1de54c){var _0x56e409;if(_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')]){if(_[_0xe9bd('0x45')](_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')],'Basic')){var _0x4b7bc2=basicAuth(_0x519f48);db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'name':_0x4b7bc2[_0xe9bd('0xe')]}})[_0xe9bd('0x3d')](function(_0xe2436){if(!_0xe2436||!_0xe2436[_0xe9bd('0x48')](_0x4b7bc2[_0xe9bd('0x49')])){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':'Wrong\x20credentials.'});}_0x519f48[_0xe9bd('0x38')]={'id':_0xe2436['id']};_0x1de54c();})[_0xe9bd('0x41')](function(_0x390a43){_0x1de54c(_0x390a43);});}else if(_['startsWith'](_0x519f48['headers'][_0xe9bd('0x44')],_0xe9bd('0x4b'))){validateJwt(_0x519f48,_0x5b7f1d,_0x1de54c);}else{if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}}}else if(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')]){try{var _0x1c6173={'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};verifyJwt(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')],_0x1c6173)[_0xe9bd('0x3d')](function(_0x199477){return db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'id':_0x199477[_0xe9bd('0x50')]}})[_0xe9bd('0x3d')](function(_0x4c689d){_0x56e409=_0x4c689d;return db[_0xe9bd('0x51')][_0xe9bd('0x52')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xe9bd('0x53')],'raw':!![]});})[_0xe9bd('0x3d')](function(_0x4c7d47){if(!_0x56e409||!_['isEqual'](_0x56e409[_0xe9bd('0x54')],_0x199477[_0xe9bd('0x55')])){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x56')});}if(_0x56e409[_0xe9bd('0x57')]){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x56e409[_0xe9bd('0x58')]){if(_0x4c7d47[_0xe9bd('0x53')]>0x0){if(moment(_0x56e409[_0xe9bd('0x59')])[_0xe9bd('0x5a')](_0x4c7d47['blockDuration'],_0xe9bd('0x5b'))>moment()){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}_0x519f48[_0xe9bd('0x38')]={'id':_0x56e409['id']};_0x1de54c();});})[_0xe9bd('0x41')](function(){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0xcf9a0c){_0x1de54c(_0xcf9a0c);}}else if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d['status'](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}})[_0xe9bd('0x37')](function(_0x480797,_0x1ba613,_0x2923cf){if(_0x480797[_0xe9bd('0x38')]){db['User'][_0xe9bd('0x47')]({'where':{'id':_0x480797[_0xe9bd('0x38')]['id']},'attributes':userAttributes})[_0xe9bd('0x3d')](function(_0x388132){if(!_0x388132){return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5d')});}_0x480797[_0xe9bd('0x38')]=_0x388132;_0x2923cf();})[_0xe9bd('0x41')](function(_0x300e07){_0x2923cf(_0x300e07);});}else if(_0x141b95){_0x2923cf();}else{return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5e')});}});};exports[_0xe9bd('0x5f')]=function canUpdate(){return compose()[_0xe9bd('0x37')](function(_0x5b70d3,_0x5a86fd,_0x283e67){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x58828b){if(_0x58828b['update']){_0x283e67();}else{return _0x5a86fd[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0x39fb61){_0x283e67(_0x39fb61);});});};exports[_0xe9bd('0x62')]=function isWebrtcLicence(){return compose()[_0xe9bd('0x37')](function(_0x512899,_0x1e45fc,_0x4cc146){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x33ba69){if(_0x33ba69[_0xe9bd('0x63')]){_0x4cc146();}else{return _0x1e45fc[_0xe9bd('0x3e')](0x193)['json']({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0xe14fa4){_0x4cc146(_0xe14fa4);});});};exports['isMiddleware']=function(_0xff4e14,_0x476f23,_0x34f787){_0xff4e14['isMiddleware']=!![];return _0x34f787();};exports[_0xe9bd('0x64')]=function signToken(_0x27e7b0){return signJwt(_0x27e7b0);};exports[_0xe9bd('0x65')]=function(_0x10ec29,_0x1ee09c){if(!_0x10ec29['user']){return _0x1ee09c[_0xe9bd('0x3e')](0x194)['json']({'message':_0xe9bd('0x66')});}var _0x239be9={'payload':{'id':_0x10ec29[_0xe9bd('0x38')]['id'],'role':_0x10ec29[_0xe9bd('0x38')][_0xe9bd('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x239be9)['then'](function(_0x15d1d0){_0x1ee09c['cookie'](_0xe9bd('0x67'),_0x15d1d0);_0x1ee09c[_0xe9bd('0x68')]('/dashboards/general');})['catch'](function(_0x1ce539){return _0x1ee09c['status'](0x1f4)[_0xe9bd('0x69')](_0x1ce539);});};exports['retrieveApiKey']=function(_0x26b25a){if(_[_0xe9bd('0x6a')](_0x26b25a['apiKeyNonce'])||_[_0xe9bd('0x6a')](_0x26b25a['apiKeyIat'])){return null;}else{return createJwt(_0x26b25a);}};exports[_0xe9bd('0x6b')]=function(_0x2d9a94){_0x2d9a94[_0xe9bd('0x54')]=generateNonce();_0x2d9a94['apiKeyIat']=generateIssuedAt();return createJwt(_0x2d9a94);};exports[_0xe9bd('0x6c')]=function(_0x1d703f,_0x45b69e){var _0x232a36=_0x1d703f['query']['apikey'];if(_0x232a36){var _0x441f89={'nonce':_0x45b69e['apiKeyNonce'],'iat':_0x45b69e[_0xe9bd('0x6d')],'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};return verifyJwt(_0x232a36,_0x441f89)[_0xe9bd('0x3d')](function(){return generateApiKey(_0x45b69e);});}else{throw{'message':_0xe9bd('0x6e')};}};exports[_0xe9bd('0x6f')]=function(_0x373057){var _0x3381ee=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3381ee[_0xe9bd('0x70')](_0x373057))throw new db[(_0xe9bd('0x71'))][(_0xe9bd('0x72'))](_0xe9bd('0x73'));return;};exports['validatePasswordHistory']=function(_0x596a7d,_0x566dd8,_0x10e685){var _0x5a516e=encryptor[_0xe9bd('0x74')](_0x566dd8)[_0xe9bd('0x75')](',');for(var _0x90db01=0x0;_0x90db01<_0x10e685;_0x90db01++){if(!_0x5a516e[_0x90db01])break;if(_0x596a7d[_0xe9bd('0x76')]()===_0x5a516e[_0x90db01][_0xe9bd('0x76')]()){var _0xaf6ffd=util[_0xe9bd('0x77')](_0xe9bd('0x78'),_0x10e685);if(_0x10e685===0x1){_0xaf6ffd=_0xe9bd('0x79');}throw new db['Sequelize'][(_0xe9bd('0x72'))](_0xaf6ffd);}}return;};exports[_0xe9bd('0x7a')]=function(_0x3d3e74,_0x3f848d){var _0x4d58c1=_0x3f848d?encryptor[_0xe9bd('0x74')](_0x3f848d)[_0xe9bd('0x75')](','):[];if(_0x4d58c1[_0xe9bd('0x7b')]===0x5){_0x4d58c1['splice'](-0x1,0x1);}_0x4d58c1[_0xe9bd('0x7c')](_0x3d3e74);return encryptor[_0xe9bd('0x7d')](_0x4d58c1[_0xe9bd('0x7e')](','));};function signJwt(_0xfe82f7){var _0x4ee26a=BPromise['promisify'](jwt[_0xe9bd('0x7f')],{'context':jwt});var _0x188891=_0xfe82f7[_0xe9bd('0x80')]||config[_0xe9bd('0xa')]['session'];return new BPromise(function(_0x49add9,_0x305efa){_0x4ee26a(_0xfe82f7[_0xe9bd('0x81')],_0x188891,_0xfe82f7[_0xe9bd('0x82')])[_0xe9bd('0x3d')](function(_0x1fd2b5){_0x49add9(_0x1fd2b5);})[_0xe9bd('0x41')](function(_0x4870f8){_0x305efa(_0x4870f8);});});}function verifyJwt(_0x179c8d,_0x5681ab,_0x27e07c){var _0x28dd03=BPromise[_0xe9bd('0x83')](jwt[_0xe9bd('0x84')],{'context':jwt});var _0x5bc1f8=_0x27e07c||config[_0xe9bd('0xa')][_0xe9bd('0xb')];return new BPromise(function(_0x3b0190,_0x4f35c4){_0x28dd03(_0x179c8d,_0x5bc1f8,_0x5681ab)[_0xe9bd('0x3d')](function(_0x1a9d0c){_0x3b0190(_0x1a9d0c);})[_0xe9bd('0x41')](function(_0x3e3e05){_0x4f35c4(_0x3e3e05);});});}function generateNonce(){return crypto[_0xe9bd('0x85')](0x10)[_0xe9bd('0x86')](_0xe9bd('0x87'));}function generateIssuedAt(){return Math[_0xe9bd('0x88')](Date[_0xe9bd('0x89')]()/0x3e8)[_0xe9bd('0x86')]();}function createJwt(_0x14c599){var _0x37d07a={'payload':{'iat':_0x14c599['apiKeyIat'],'nonce':_0x14c599[_0xe9bd('0x54')]},'options':{'algorithm':_0xe9bd('0x8a'),'subject':_0x14c599['id']['toString'](),'issuer':hardwareConf[_0xe9bd('0x4f')](),'audience':hardwareConf[_0xe9bd('0x4f')]()}};return signJwt(_0x37d07a)['then'](function(_0x561165){return{'iat':_0x14c599[_0xe9bd('0x6d')],'nonce':_0x14c599[_0xe9bd('0x54')],'token':_0x561165};});}
\ No newline at end of file
+var _0xf3cd=['role','name','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','authorization','startsWith','Basic','User','authenticate','catch','Bearer','query','apikey','getUuid','find','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blockDuration','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','isMiddleware','cookie','motion.token','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','test','Sequelize','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','ValidationError','updatePasswordsHistory','length','splice','encryptString','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session'];(function(_0x23b3b4,_0x27b281){var _0x4c8df0=function(_0x3bdea9){while(--_0x3bdea9){_0x23b3b4['push'](_0x23b3b4['shift']());}};_0x4c8df0(++_0x27b281);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4c06a3,_0x1e6b6f){_0x4c06a3=_0x4c06a3-0x0;var _0x7ff53c=_0xf3cd[_0x4c06a3];return _0x7ff53c;};'use strict';var db=require(_0xdf3c('0x0'))['db'];var config=require(_0xdf3c('0x1'));var hardwareConf=require(_0xdf3c('0x2'));var licenseUtil=require(_0xdf3c('0x3'));var encryptor=require(_0xdf3c('0x4'));var _=require(_0xdf3c('0x5'));var jwt=require('jsonwebtoken');var expressJwt=require(_0xdf3c('0x6'));var compose=require(_0xdf3c('0x7'));var basicAuth=require(_0xdf3c('0x8'));var crypto=require('crypto');var BPromise=require(_0xdf3c('0x9'));var util=require(_0xdf3c('0xa'));var moment=require(_0xdf3c('0xb'));var validateJwt=expressJwt({'secret':config[_0xdf3c('0xc')][_0xdf3c('0xd')]});var userAttributes=['id',_0xdf3c('0xe'),'fullname',_0xdf3c('0xf'),'internal','email',_0xdf3c('0x10'),_0xdf3c('0x11'),'md5secret',_0xdf3c('0x12'),_0xdf3c('0x13'),_0xdf3c('0x14'),_0xdf3c('0x15'),_0xdf3c('0x16'),_0xdf3c('0x17'),_0xdf3c('0x18'),_0xdf3c('0x19'),'lastLoginAt',_0xdf3c('0x1a'),_0xdf3c('0x1b'),_0xdf3c('0x1c'),_0xdf3c('0x1d'),'alias',_0xdf3c('0x1e'),_0xdf3c('0x1f'),_0xdf3c('0x20'),'phoneBarEnableRecording',_0xdf3c('0x21'),_0xdf3c('0x22'),_0xdf3c('0x23'),_0xdf3c('0x24'),_0xdf3c('0x25'),_0xdf3c('0x26'),_0xdf3c('0x27'),_0xdf3c('0x28'),_0xdf3c('0x29'),_0xdf3c('0x2a'),'settingsEnabled',_0xdf3c('0x2b'),_0xdf3c('0x2c'),_0xdf3c('0x2d'),_0xdf3c('0x2e'),_0xdf3c('0x2f'),_0xdf3c('0x30'),_0xdf3c('0x31'),_0xdf3c('0x32'),_0xdf3c('0x33'),_0xdf3c('0x34'),_0xdf3c('0x35'),_0xdf3c('0x36'),_0xdf3c('0x37'),'openchannelAutoanswerDelay','faxAutoanswer',_0xdf3c('0x38'),'whatsappAutoanswer',_0xdf3c('0x39')];exports[_0xdf3c('0x3a')]=function(){return this[_0xdf3c('0x3b')](!![])[_0xdf3c('0x3c')](function(_0x33652f,_0x36ba1c,_0x50d8ca){if(_0x33652f[_0xdf3c('0x3d')]){_0x50d8ca();}else{return db[_0xdf3c('0x3e')][_0xdf3c('0x3f')]({'where':{'id':_0x33652f[_0xdf3c('0x40')]['id']},'attributes':['id',_0xdf3c('0x41'),_0xdf3c('0x42')],'raw':!![]})[_0xdf3c('0x43')](function(_0x155f54){if(_0x155f54&&_0x155f54[_0xdf3c('0x41')]){return _0x36ba1c[_0xdf3c('0x44')](_0x155f54['disposition']===_0xdf3c('0x45')?0x195:0x193)[_0xdf3c('0x46')]({'message':_0x155f54['disposition']===_0xdf3c('0x45')?'Unmanaged.':'Forbidden.'});}else{_0x50d8ca();}})['catch'](function(_0x14aac9){_0x50d8ca(_0x14aac9);});}});};exports[_0xdf3c('0x3b')]=function isAuthenticated(_0x52b8f6){return compose()['use'](function(_0x37ecfd,_0x1f2ce4,_0xd3cfcb){var _0x1ccdd4;if(_0x37ecfd['headers'][_0xdf3c('0x47')]){if(_[_0xdf3c('0x48')](_0x37ecfd['headers']['authorization'],_0xdf3c('0x49'))){var _0x46f0e3=basicAuth(_0x37ecfd);db[_0xdf3c('0x4a')]['find']({'where':{'name':_0x46f0e3[_0xdf3c('0xf')]}})[_0xdf3c('0x43')](function(_0x21e7b8){if(!_0x21e7b8||!_0x21e7b8[_0xdf3c('0x4b')](_0x46f0e3['pass'])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':'Wrong\x20credentials.'});}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x21e7b8['id']};_0xd3cfcb();})[_0xdf3c('0x4c')](function(_0x217a65){_0xd3cfcb(_0x217a65);});}else if(_[_0xdf3c('0x48')](_0x37ecfd['headers'][_0xdf3c('0x47')],_0xdf3c('0x4d'))){validateJwt(_0x37ecfd,_0x1f2ce4,_0xd3cfcb);}else{if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4[_0xdf3c('0x44')](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x37ecfd[_0xdf3c('0x4e')][_0xdf3c('0x4f')]){try{var _0x5ddd21={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};verifyJwt(_0x37ecfd['query'][_0xdf3c('0x4f')],_0x5ddd21)['then'](function(_0x57faba){return db['User'][_0xdf3c('0x51')]({'where':{'id':_0x57faba[_0xdf3c('0x52')]}})[_0xdf3c('0x43')](function(_0x29b5b7){_0x1ccdd4=_0x29b5b7;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xdf3c('0x53'),'blockDuration'],'raw':!![]});})[_0xdf3c('0x43')](function(_0x17b502){if(!_0x1ccdd4||!_[_0xdf3c('0x54')](_0x1ccdd4[_0xdf3c('0x55')],_0x57faba[_0xdf3c('0x56')])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x57')});}if(_0x1ccdd4[_0xdf3c('0x58')]){return _0x1f2ce4['status'](0x191)[_0xdf3c('0x46')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x1ccdd4['blocked']){if(_0x17b502[_0xdf3c('0x59')]>0x0){if(moment(_0x1ccdd4['blockedAt'])[_0xdf3c('0x5a')](_0x17b502['blockDuration'],_0xdf3c('0x5b'))>moment()){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}else{return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x1ccdd4['id']};_0xd3cfcb();});})[_0xdf3c('0x4c')](function(){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});});}catch(_0x57e0ab){_0xd3cfcb(_0x57e0ab);}}else if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4['status'](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}})[_0xdf3c('0x3c')](function(_0x14d8e1,_0x46194d,_0x328b18){if(_0x14d8e1['user']){db['User'][_0xdf3c('0x51')]({'where':{'id':_0x14d8e1[_0xdf3c('0x3d')]['id']},'attributes':userAttributes})[_0xdf3c('0x43')](function(_0x4c59ef){if(!_0x4c59ef){return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5d')});}_0x14d8e1[_0xdf3c('0x3d')]=_0x4c59ef;_0x328b18();})['catch'](function(_0x127685){_0x328b18(_0x127685);});}else if(_0x52b8f6){_0x328b18();}else{return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5e')});}});};exports[_0xdf3c('0x5f')]=function canUpdate(){return compose()['use'](function(_0x410aaf,_0x286b72,_0x437443){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x344f1e){if(_0x344f1e['update']){_0x437443();}else{return _0x286b72['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})['catch'](function(_0x5c9885){_0x437443(_0x5c9885);});});};exports[_0xdf3c('0x62')]=function isWebrtcLicence(){return compose()[_0xdf3c('0x3c')](function(_0x46b2bd,_0x2aeb29,_0xaae4bc){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x84c5c2){if(_0x84c5c2[_0xdf3c('0x63')]){_0xaae4bc();}else{return _0x2aeb29['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})[_0xdf3c('0x4c')](function(_0xe760dd){_0xaae4bc(_0xe760dd);});});};exports[_0xdf3c('0x64')]=function(_0x385824,_0x28a468,_0x553f70){_0x385824[_0xdf3c('0x64')]=!![];return _0x553f70();};exports['signToken']=function signToken(_0xa4e137){return signJwt(_0xa4e137);};exports['setTokenCookie']=function(_0x41b78c,_0x28144f){if(!_0x41b78c[_0xdf3c('0x3d')]){return _0x28144f[_0xdf3c('0x44')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x4a068a={'payload':{'id':_0x41b78c[_0xdf3c('0x3d')]['id'],'role':_0x41b78c['user'][_0xdf3c('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x4a068a)[_0xdf3c('0x43')](function(_0x446713){_0x28144f[_0xdf3c('0x65')](_0xdf3c('0x66'),_0x446713);_0x28144f['redirect']('/dashboards/general');})[_0xdf3c('0x4c')](function(_0x27a541){return _0x28144f['status'](0x1f4)[_0xdf3c('0x67')](_0x27a541);});};exports[_0xdf3c('0x68')]=function(_0x168eaf){if(_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x55')])||_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x6a')])){return null;}else{return createJwt(_0x168eaf);}};exports['generateApiKey']=function(_0x4c98dc){_0x4c98dc[_0xdf3c('0x55')]=generateNonce();_0x4c98dc[_0xdf3c('0x6a')]=generateIssuedAt();return createJwt(_0x4c98dc);};exports[_0xdf3c('0x6b')]=function(_0x1ad771,_0x22de6c){var _0x39f38f=_0x1ad771[_0xdf3c('0x4e')][_0xdf3c('0x4f')];if(_0x39f38f){var _0x143d01={'nonce':_0x22de6c[_0xdf3c('0x55')],'iat':_0x22de6c[_0xdf3c('0x6a')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};return verifyJwt(_0x39f38f,_0x143d01)['then'](function(){return generateApiKey(_0x22de6c);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x58fcbf){var _0x541c57=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x541c57[_0xdf3c('0x6c')](_0x58fcbf))throw new db[(_0xdf3c('0x6d'))]['ValidationError'](_0xdf3c('0x6e'));return;};exports[_0xdf3c('0x6f')]=function(_0x51f8dd,_0xa8dddb,_0x28f935){var _0x10e9d5=encryptor[_0xdf3c('0x70')](_0xa8dddb)[_0xdf3c('0x71')](',');for(var _0x28f387=0x0;_0x28f387<_0x28f935;_0x28f387++){if(!_0x10e9d5[_0x28f387])break;if(_0x51f8dd[_0xdf3c('0x72')]()===_0x10e9d5[_0x28f387][_0xdf3c('0x72')]()){var _0x42efa2=util[_0xdf3c('0x73')](_0xdf3c('0x74'),_0x28f935);if(_0x28f935===0x1){_0x42efa2='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xdf3c('0x6d'))][(_0xdf3c('0x75'))](_0x42efa2);}}return;};exports[_0xdf3c('0x76')]=function(_0x5a3d63,_0x245c68){var _0x3e327e=_0x245c68?encryptor[_0xdf3c('0x70')](_0x245c68)['split'](','):[];if(_0x3e327e[_0xdf3c('0x77')]===0x5){_0x3e327e[_0xdf3c('0x78')](-0x1,0x1);}_0x3e327e['unshift'](_0x5a3d63);return encryptor[_0xdf3c('0x79')](_0x3e327e['join'](','));};function signJwt(_0x28c296){var _0x1b03e7=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7b')],{'context':jwt});var _0xed2a78=_0x28c296[_0xdf3c('0x7c')]||config[_0xdf3c('0xc')][_0xdf3c('0xd')];return new BPromise(function(_0x2922d8,_0x330730){_0x1b03e7(_0x28c296[_0xdf3c('0x7d')],_0xed2a78,_0x28c296[_0xdf3c('0x7e')])[_0xdf3c('0x43')](function(_0x206a18){_0x2922d8(_0x206a18);})[_0xdf3c('0x4c')](function(_0xe42432){_0x330730(_0xe42432);});});}function verifyJwt(_0xd7fb2d,_0x510538,_0x4dade5){var _0x2e8511=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7f')],{'context':jwt});var _0x596282=_0x4dade5||config[_0xdf3c('0xc')]['session'];return new BPromise(function(_0x574852,_0x184952){_0x2e8511(_0xd7fb2d,_0x596282,_0x510538)[_0xdf3c('0x43')](function(_0x1121b9){_0x574852(_0x1121b9);})[_0xdf3c('0x4c')](function(_0x68f487){_0x184952(_0x68f487);});});}function generateNonce(){return crypto[_0xdf3c('0x80')](0x10)[_0xdf3c('0x81')](_0xdf3c('0x82'));}function generateIssuedAt(){return Math[_0xdf3c('0x83')](Date[_0xdf3c('0x84')]()/0x3e8)[_0xdf3c('0x81')]();}function createJwt(_0x5a2dad){var _0x34000c={'payload':{'iat':_0x5a2dad['apiKeyIat'],'nonce':_0x5a2dad[_0xdf3c('0x55')]},'options':{'algorithm':_0xdf3c('0x85'),'subject':_0x5a2dad['id'][_0xdf3c('0x81')](),'issuer':hardwareConf[_0xdf3c('0x50')](),'audience':hardwareConf[_0xdf3c('0x50')]()}};return signJwt(_0x34000c)['then'](function(_0x18bf4f){return{'iat':_0x5a2dad[_0xdf3c('0x6a')],'nonce':_0x5a2dad[_0xdf3c('0x55')],'token':_0x18bf4f};});}
\ No newline at end of file
index 6ba5f54..02c34bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['parseQueryParameters','where','default','fields','filter','user','clause','skip','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','startsWith','cf_','map','CmCustomField','fieldType','type','keys','lodash','../../mysqldb','skipContactsQuery','getContactsSubquery','resolve','then','search','parseAdvancedSearchFilter'];(function(_0x4ca333,_0x1218a3){var _0x13b2e1=function(_0x1eaf45){while(--_0x1eaf45){_0x4ca333['push'](_0x4ca333['shift']());}};_0x13b2e1(++_0x1218a3);}(_0xb7e7,0x121));var _0x7b7e=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0xb7e7[_0x42f009];return _0x22a1e0;};'use strict';var _=require(_0x7b7e('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0x7b7e('0x1'))['db'];exports['findAll']=function(_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68){var _0x31d0ed={'count':0x0,'rows':[]};var _0x118577=sqlUtils[_0x7b7e('0x2')](_0x54a37f,_0x1b7cc7);if(_0x118577){return Promise['resolve'](_0x31d0ed);}var _0x53ed64=sqlUtils[_0x7b7e('0x3')]();var _0x372bde={};var _0x7f87e0=![];var _0x55ce81=![];return Promise[_0x7b7e('0x4')]()[_0x7b7e('0x5')](function(){if(_0x1b7cc7[_0x7b7e('0x6')]){return sqlUtils[_0x7b7e('0x7')](_0x1b7cc7[_0x7b7e('0x6')],_0x556d68);}else{return sqlUtils[_0x7b7e('0x8')](_0x1b7cc7,_0x556d68);}})[_0x7b7e('0x5')](function(_0x52de3b){_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xa')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xb')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xc')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xd')][_0x7b7e('0xe')]);_0x372bde=_0x52de3b['tags'];_0x55ce81=_0x52de3b[_0x7b7e('0xd')][_0x7b7e('0xf')];return sqlUtils['checkListsRestrictions'](_0x54a37f,_0x1b7cc7,_0x55ce81);})[_0x7b7e('0x5')](function(_0x5976ac){_0x53ed64['where'](_0x5976ac);var _0x2889ed=_0x1b7cc7[_0x7b7e('0x6')]?_0x372bde[_0x7b7e('0x10')]:_0x1b7cc7[_0x7b7e('0x11')];_0x7f87e0=_0x2889ed?!![]:![];return sqlUtils[_0x7b7e('0x12')](_0x53ed64,_0x2889ed);})['then'](function(_0x51baf6){_0x31d0ed[_0x7b7e('0x13')]=_0x51baf6;if(_0x31d0ed[_0x7b7e('0x13')]===0x0){return;}return sqlUtils[_0x7b7e('0x14')](_0x53ed64,_0x1b7cc7[_0x7b7e('0xb')],_0x3f5804,_0x7f87e0,_0x372bde[_0x7b7e('0xe')],_0x55ce81);})[_0x7b7e('0x5')](function(_0x242368){if(!_0x242368){return[];}return sqlUtils[_0x7b7e('0x15')](_0x242368,_0x1b7cc7,_0x3f5804);})[_0x7b7e('0x5')](function(_0x429a0e){_0x31d0ed[_0x7b7e('0x16')]=_0x429a0e;return _0x31d0ed;})[_0x7b7e('0x17')](function(_0x448980){throw _0x448980;});};exports[_0x7b7e('0x18')]=function(){var _0x9776c3={};var _0x864287=[];return db[_0x7b7e('0x19')]['describe']()[_0x7b7e('0x5')](function(_0x43db4f){_0x9776c3=_0x43db4f;var _0x24718c=Object['keys'](_0x9776c3)[_0x7b7e('0xc')](function(_0xbf0cb3){return _[_0x7b7e('0x1a')](_0xbf0cb3,_0x7b7e('0x1b'))?_0xbf0cb3:undefined;});var _0x2b7211=_0x24718c[_0x7b7e('0x1c')](function(_0x28bf43){return db[_0x7b7e('0x1d')]['findOne']({'where':{'id':_0x28bf43['slice'](0x3)},'raw':!![]});});return Promise['all'](_0x2b7211);})[_0x7b7e('0x5')](function(_0x22598e){for(var _0x23bfa3=0x0;_0x23bfa3<_0x22598e['length'];_0x23bfa3++){if(_0x22598e[_0x23bfa3]){var _0x51d3b1='cf_'+_0x22598e[_0x23bfa3]['id'];_0x9776c3[_0x51d3b1][_0x7b7e('0x1e')]=_0x22598e[_0x23bfa3][_0x7b7e('0x1f')];}}_0x864287=_[_0x7b7e('0x1c')](Object[_0x7b7e('0x20')](_0x9776c3),function(_0x3ceaf5){return{'name':_0x3ceaf5,'type':_0x9776c3[_0x3ceaf5]['type']};});return _0x864287;})[_0x7b7e('0x17')](function(_0x21a15){throw _0x21a15;});};
\ No newline at end of file
+var _0xbaf0=['skip','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','CmContact','describe','keys','startsWith','slice','length','cf_','type','map','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','parseAdvancedSearchFilter','search','parseQueryParameters','where','default','fields','filter','clause','tags','user'];(function(_0x488876,_0x6baec9){var _0x58e179=function(_0x4e75b8){while(--_0x4e75b8){_0x488876['push'](_0x488876['shift']());}};_0x58e179(++_0x6baec9);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var sqlUtils=require(_0x0baf('0x0'));var db=require(_0x0baf('0x1'))['db'];exports[_0x0baf('0x2')]=function(_0x263f79,_0x1688bc,_0x4d2e72,_0x5a3e42){var _0x232cc7={'count':0x0,'rows':[]};var _0x1c383e=sqlUtils[_0x0baf('0x3')](_0x1688bc,_0x263f79);if(_0x1c383e){return Promise[_0x0baf('0x4')](_0x232cc7);}var _0xe4c3c4=sqlUtils[_0x0baf('0x5')]();var _0x1a10b1={};var _0x2dcaac=![];var _0x1d0a0d=![];return Promise['resolve']()[_0x0baf('0x6')](function(){if(_0x263f79['search']){return sqlUtils[_0x0baf('0x7')](_0x263f79[_0x0baf('0x8')],_0x5a3e42);}else{return sqlUtils[_0x0baf('0x9')](_0x263f79,_0x5a3e42);}})[_0x0baf('0x6')](function(_0x7f54d4){_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xb')]);_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xc')]);_0xe4c3c4[_0x0baf('0xa')](_0x7f54d4[_0x0baf('0xd')]);_0xe4c3c4['where'](_0x7f54d4['user'][_0x0baf('0xe')]);_0x1a10b1=_0x7f54d4[_0x0baf('0xf')];_0x1d0a0d=_0x7f54d4[_0x0baf('0x10')][_0x0baf('0x11')];return sqlUtils['checkListsRestrictions'](_0x1688bc,_0x263f79,_0x1d0a0d);})[_0x0baf('0x6')](function(_0x49e44b){_0xe4c3c4[_0x0baf('0xa')](_0x49e44b);var _0x1f50c3=_0x263f79[_0x0baf('0x8')]?_0x1a10b1[_0x0baf('0x12')]:_0x263f79[_0x0baf('0x13')];_0x2dcaac=_0x1f50c3?!![]:![];return sqlUtils[_0x0baf('0x14')](_0xe4c3c4,_0x1f50c3);})['then'](function(_0x4cd79d){_0x232cc7[_0x0baf('0x15')]=_0x4cd79d;if(_0x232cc7[_0x0baf('0x15')]===0x0){return;}return sqlUtils[_0x0baf('0x16')](_0xe4c3c4,_0x263f79[_0x0baf('0xc')],_0x4d2e72,_0x2dcaac,_0x1a10b1[_0x0baf('0xe')],_0x1d0a0d);})[_0x0baf('0x6')](function(_0x53c338){if(!_0x53c338){return[];}return sqlUtils[_0x0baf('0x17')](_0x53c338,_0x263f79,_0x4d2e72);})[_0x0baf('0x6')](function(_0x1ef0e5){_0x232cc7[_0x0baf('0x18')]=_0x1ef0e5;return _0x232cc7;})[_0x0baf('0x19')](function(_0x42b7f2){throw _0x42b7f2;});};exports['describe']=function(){var _0x5cff5d={};var _0x1410ec=[];return db[_0x0baf('0x1a')][_0x0baf('0x1b')]()[_0x0baf('0x6')](function(_0x1fa92b){_0x5cff5d=_0x1fa92b;var _0x3e3e20=Object[_0x0baf('0x1c')](_0x5cff5d)[_0x0baf('0xd')](function(_0x2c42e2){return _[_0x0baf('0x1d')](_0x2c42e2,'cf_')?_0x2c42e2:undefined;});var _0x334bd6=_0x3e3e20['map'](function(_0xf6c158){return db['CmCustomField']['findOne']({'where':{'id':_0xf6c158[_0x0baf('0x1e')](0x3)},'raw':!![]});});return Promise['all'](_0x334bd6);})['then'](function(_0x47c4b){for(var _0x27b59c=0x0;_0x27b59c<_0x47c4b[_0x0baf('0x1f')];_0x27b59c++){if(_0x47c4b[_0x27b59c]){var _0x19d9fd=_0x0baf('0x20')+_0x47c4b[_0x27b59c]['id'];_0x5cff5d[_0x19d9fd]['fieldType']=_0x47c4b[_0x27b59c][_0x0baf('0x21')];}}_0x1410ec=_[_0x0baf('0x22')](Object[_0x0baf('0x1c')](_0x5cff5d),function(_0x366e71){return{'name':_0x366e71,'type':_0x5cff5d[_0x366e71][_0x0baf('0x21')]};});return _0x1410ec;})[_0x0baf('0x19')](function(_0x453525){throw _0x453525;});};
\ No newline at end of file
index b2a9e13..272a0df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4993=['isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','dateOfBirth','fieldType','datetime','castTo','buildExpression','text','start','value','end','Tag','tags','clause','ids','user','and','uc.UserId\x20=\x20?','keys','map','some','name','Contact','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','then','fields','tag','filter','resolve','getLists','length','c.ListId\x20IN\x20?','attributes','c.id','limit','offset','group','subqry.id','having','order','DESC','subqry.','findAll','color','keyBy','QueryTypes','SELECT','CmContact','query','toString','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','sequelize','squel','../parsers/advancedSearch','../parsers/qs','../../mysqldb','role','agent','search','ListId','autocomplete','true','select','where','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','t.id\x20=\x20ct.TagId','firstName','lastName','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','forEach','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)','isNumeric','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x4993,0x110));var _0x3499=function(_0x24fd75,_0x937198){_0x24fd75=_0x24fd75-0x0;var _0x591a95=_0x4993[_0x24fd75];return _0x591a95;};'use strict';var _=require('lodash');var squel=require(_0x3499('0x0'));var as=require(_0x3499('0x1'));var qs=require(_0x3499('0x2'));var utils=require('../interaction/utils');var db=require(_0x3499('0x3'))['db'];function skipContactsQuery(_0x48012d,_0x265676){var _0x1b8316=![];if(_0x48012d[_0x3499('0x4')]===_0x3499('0x5')&&!_0x265676[_0x3499('0x6')]&&!_0x265676[_0x3499('0x7')]&&_0x265676[_0x3499('0x8')]!==_0x3499('0x9')){_0x1b8316=!![];}return _0x1b8316;}function getContactsSubquery(){return squel[_0x3499('0xa')]()['from']('cm_contacts','c')[_0x3499('0xb')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x5e1b1c,_0x3af988){var _0x481a75=_0x3af988?'c':_0x3499('0xc');_0x5e1b1c[_0x3499('0xd')](_0x3499('0xe'),'uc',_0x3499('0xf')+_0x481a75+_0x3499('0x10'))['left_join'](_0x3499('0x11'),'ct',_0x3499('0x12')+_0x481a75+'.id')['left_join']('tools_tags','t',_0x3499('0x13'));return _0x5e1b1c;}function addFieldsToQuery(_0x16a284,_0x357635,_0x4f4abd,_0x2c84f1,_0x1c9aa6){var _0x13758e=_0x1c9aa6?'c':_0x3499('0xc');if(!_0x357635){_0x357635=['id',_0x3499('0x14'),_0x3499('0x15'),'phone',_0x3499('0x16'),'fax',_0x3499('0x17'),_0x3499('0x7'),_0x3499('0x18'),_0x3499('0x19'),_0x3499('0x1a'),_0x3499('0x1b'),_0x3499('0x1c')];}else if(!_0x357635[_0x3499('0x1d')]('id')){_0x357635[_0x3499('0x1e')]('id');}var _0x401efe=_0x4f4abd&&_0x1c9aa6||!_0x4f4abd&&!_0x1c9aa6;if(_0x2c84f1){_0x401efe=_0x2c84f1&&_0x1c9aa6||!_0x2c84f1&&!_0x1c9aa6;}_0x357635[_0x3499('0x1f')](function(_0x15f95c){if(_0x15f95c===_0x3499('0x1c')){if(_0x401efe){_0x16a284[_0x3499('0x20')](_0x3499('0x21'),_0x15f95c);}else if(_0x4f4abd||_0x2c84f1){_0x16a284[_0x3499('0x20')](_0x13758e+'.'+_0x15f95c);}}else{_0x16a284[_0x3499('0x20')](_0x13758e+'.'+_0x15f95c);}});return _0x16a284;}function getSqlClauses(){var _0x2d989b={'default':squel[_0x3499('0x22')](),'fields':squel['expr'](),'filter':squel[_0x3499('0x22')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0x3499('0x22')](),'skip':![]}};return _0x2d989b;}function parseTagParameter(_0x279877){var _0x33ebdf=squel[_0x3499('0x22')]();if(_0x279877){var _0x3a70e8=utils[_0x3499('0x23')](_0x279877);_0x3a70e8['forEach'](function(_0x5f196e){_0x33ebdf['or'](_0x3499('0x24'),'%,'+_0x5f196e+',%');});}return _0x33ebdf;}function parseSearchFilter(_0x2fd551){var _0x2fea56=squel['expr']();if(_0x2fd551){var _0x3ae83d=_0x2fd551['replace']('\x5c','\x5c\x5c')[_0x3499('0x25')](/'/g,'\x27\x27');if(_0x3ae83d[_0x3499('0x26')]('\x20')['length']>0x1){_0x2fea56['or'](_0x3499('0x27'),qs['getFullTextValue'](_0x3ae83d),null);}else{if(qs[_0x3499('0x28')](_0x3ae83d)){_0x2fea56['or']('c.id\x20LIKE\x20?',_0x3ae83d+'%');_0x2fea56['or'](_0x3499('0x29'),_0x3ae83d+'%');_0x2fea56['or']('c.mobile\x20LIKE\x20?',_0x3ae83d+'%');_0x2fea56['or'](_0x3499('0x2a'),_0x3ae83d+'%');}else if(qs[_0x3499('0x2b')](_0x3ae83d)){_0x2fea56['or'](_0x3499('0x2c'),_0x3ae83d+'%');}else{_0x2fea56['or'](_0x3499('0x2d'),'%'+_0x3ae83d+'%');_0x2fea56['or'](_0x3499('0x2e'),'%'+_0x3ae83d+'%');_0x2fea56['or'](_0x3499('0x2c'),'%'+_0x3ae83d+'%');}}}return _0x2fea56;}function parseAdvancedSearchFilter(_0x521ec4,_0x4174af){var _0x47f696=getSqlClauses();var _0x41b0f8=as[_0x3499('0x2f')](_0x521ec4);var _0x530cd6=_0x41b0f8[_0x3499('0x30')];for(var _0xd1a616=0x0;_0xd1a616<_0x41b0f8[_0x3499('0x31')]['length'];_0xd1a616++){var _0x4029b2=_0x41b0f8[_0x3499('0x31')][_0xd1a616];var _0x5f278b='c';var _0x1fb886=_['find'](_0x4174af,['name',_0x4029b2['field']]);if(_0x1fb886){if(_0x4029b2[_0x3499('0x20')]===_0x3499('0x32')||_0x1fb886[_0x3499('0x33')]===_0x3499('0x34')){_0x4029b2[_0x3499('0x35')]='DATE';}var _0x17f8e7=as[_0x3499('0x36')](_0x5f278b,_0x1fb886['type'],_0x4029b2);_0x47f696['default'][_0x530cd6](_0x17f8e7[_0x3499('0x37')],_0x17f8e7['value'][_0x3499('0x38')],_0x17f8e7[_0x3499('0x39')][_0x3499('0x3a')]);}else{if(_0x4029b2['field']===_0x3499('0x3b')){var _0x5933ac=_0x4029b2[_0x3499('0x39')][_0x3499('0x26')](',')['map'](function(_0x5ea4a9){return Number(_0x5ea4a9);});var _0x414c80=parseTagParameter(_0x5933ac);_0x47f696[_0x3499('0x3c')][_0x3499('0x3d')]['and'](_0x414c80);_0x47f696['tags'][_0x3499('0x3e')]=_0x5933ac;}else if(_0x4029b2['field']==='User'){_0x47f696[_0x3499('0x3f')]['clause'][_0x3499('0x40')](_0x3499('0x41'),_0x4029b2[_0x3499('0x39')]);_0x47f696[_0x3499('0x3f')]['skip']=!![];}}}return _0x47f696;}function parseModelFields(_0x3f7fa9,_0x40a9a0){var _0xa93b24=squel[_0x3499('0x22')]();var _0x1433fc=_(_0x3f7fa9)[_0x3499('0x42')]()[_0x3499('0x43')](function(_0x449839){return _[_0x3499('0x44')](_0x40a9a0,[_0x3499('0x45'),_0x449839])?_0x449839:undefined;})['compact']()[_0x3499('0x39')]();if(_0x3f7fa9[_0x3499('0x46')]){_0x1433fc['push'](_0x3499('0x46'));}if(_0x1433fc['length']>0x0){_0x1433fc[_0x3499('0x1f')](function(_0x1d98ea){if(_0x1d98ea===_0x3499('0x7')){_0xa93b24['and']('c.ListId\x20IN\x20?',[][_0x3499('0x47')](_0x3f7fa9[_0x1d98ea]));}else if(_0x1d98ea===_0x3499('0x46')){var _0x489ebd='%'+_0x3f7fa9[_0x1d98ea]+'%';_0xa93b24['and'](_0x3499('0x48'),_0x489ebd);}else{_0xa93b24[_0x3499('0x40')]('c.'+_0x1d98ea+'\x20=\x20?',_0x3f7fa9[_0x1d98ea]);}});}return _0xa93b24;}function parseQueryParameters(_0x433325,_0x10a80e){var _0xb01d05=getSqlClauses();return Promise['resolve']()[_0x3499('0x49')](function(){return parseModelFields(_0x433325,_0x10a80e);})['then'](function(_0x172fc7){_0xb01d05[_0x3499('0x4a')][_0x3499('0x40')](_0x172fc7);return parseTagParameter(_0x433325[_0x3499('0x4b')]);})[_0x3499('0x49')](function(_0x35e16c){_0xb01d05[_0x3499('0x3c')]['clause'][_0x3499('0x40')](_0x35e16c);return parseSearchFilter(_0x433325[_0x3499('0x4c')]);})[_0x3499('0x49')](function(_0x2f6a99){_0xb01d05['filter']=_0x2f6a99;return _0xb01d05;});}function checkListsRestrictions(_0x3a9ac4,_0x249ebe,_0x50e4c0){var _0x1880a4=squel[_0x3499('0x22')]();return Promise[_0x3499('0x4d')]()[_0x3499('0x49')](function(){if(_0x249ebe[_0x3499('0x6')]&&_0x3a9ac4[_0x3499('0x4')]==='agent'&&!_0x50e4c0){return _0x3a9ac4[_0x3499('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0x3499('0x49')](function(_0x24b226){if(_0x24b226){if(_0x24b226[_0x3499('0x4f')]===0x0){_0x1880a4['and']('c.ListId\x20IS\x20NULL');}else{_0x1880a4[_0x3499('0x40')](_0x3499('0x50'),_[_0x3499('0x43')](_0x24b226,'id'));}}})[_0x3499('0x49')](function(){return _0x1880a4;});}function buildContactsQuery(_0x384eb0,_0x46875a,_0x5424f7,_0x172f9c,_0x316726,_0x5d859b){if(_0x46875a){_0x46875a=_0x5424f7[_0x3499('0x51')];}_0x384eb0=addFieldsToQuery(_0x384eb0,_0x46875a,_0x172f9c,_0x5d859b,!![]);var _0x355c3f=squel[_0x3499('0xa')]();_0x355c3f=addFieldsToQuery(_0x355c3f,_0x46875a,_0x172f9c,_0x5d859b,![]);if(_0x172f9c||_0x5d859b){_0x384eb0=applyJoinClauses(_0x384eb0,!![]);_0x384eb0['group'](_0x3499('0x52'));if(_0x5424f7[_0x3499('0x53')]){_0x355c3f[_0x3499('0x53')](_0x5424f7[_0x3499('0x53')]);}if(_0x5424f7['offset']){_0x355c3f[_0x3499('0x54')](_0x5424f7[_0x3499('0x54')]);}}else{_0x355c3f=applyJoinClauses(_0x355c3f,![]);_0x355c3f[_0x3499('0x55')](_0x3499('0x56'));if(_0x5424f7[_0x3499('0x53')]){_0x384eb0[_0x3499('0x53')](_0x5424f7[_0x3499('0x53')]);}if(_0x5424f7[_0x3499('0x54')]){_0x384eb0[_0x3499('0x54')](_0x5424f7['offset']);}}_0x355c3f[_0x3499('0x57')](_0x316726);if(_0x5424f7[_0x3499('0x58')]){_0x5424f7[_0x3499('0x58')][_0x3499('0x1f')](function(_0xc56f0e){_0x384eb0[_0x3499('0x58')]('c.'+_0xc56f0e[0x0],_0xc56f0e[0x1]===_0x3499('0x59')?![]:!![]);_0x355c3f[_0x3499('0x58')](_0x3499('0x5a')+_0xc56f0e[0x0],_0xc56f0e[0x1]===_0x3499('0x59')?![]:!![]);});}_0x355c3f['from'](_0x384eb0,_0x3499('0xc'));return _0x355c3f;}function getFilteredContacts(_0x5046da){var _0x20642f=[];return db[_0x3499('0x3b')][_0x3499('0x5b')]({'attributes':['id',_0x3499('0x45'),_0x3499('0x5c')],'raw':!![]})[_0x3499('0x49')](function(_0x4a55f3){_0x20642f=_[_0x3499('0x5d')](_0x4a55f3,'id');var _0x51fe6d={'type':db['Sequelize'][_0x3499('0x5e')][_0x3499('0x5f')],'model':db[_0x3499('0x60')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0x3499('0x61')](_0x5046da[_0x3499('0x62')](),_0x51fe6d);})[_0x3499('0x49')](function(_0x1f5fd0){_0x1f5fd0[_0x3499('0x1f')](function(_0x1f8890){if(_0x1f8890[_0x3499('0x1c')]){_0x1f8890[_0x3499('0x63')]=[];_0x1f8890[_0x3499('0x1c')][_0x3499('0x26')](',')['forEach'](function(_0x3b1f52){_0x1f8890['Tags'][_0x3499('0x1e')](_0x20642f[_0x3b1f52]);});}delete _0x1f8890[_0x3499('0x1c')];});return _0x1f5fd0;});}function countFilteredContacts(_0x3c4bbc,_0x493f34){var _0x1409f7=_0x3c4bbc[_0x3499('0x64')]();_0x1409f7[_0x3499('0x20')](_0x3499('0x65'));_0x1409f7=applyJoinClauses(_0x1409f7,!![]);_0x3c4bbc['group'](_0x3499('0x52'));var _0x33d0ba=utils[_0x3499('0x23')](_0x493f34);if(!_[_0x3499('0x66')](_0x33d0ba)){_0x1409f7[_0x3499('0xb')](_0x3499('0x67'),_0x33d0ba);}var _0x77ea7f={'type':db['Sequelize']['QueryTypes'][_0x3499('0x5f')],'raw':!![]};return db[_0x3499('0x68')][_0x3499('0x61')](_0x1409f7[_0x3499('0x62')](),_0x77ea7f)[_0x3499('0x49')](function(_0x799e32){return _0x799e32[0x0][_0x3499('0x65')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x3e51=['sequelize','query','toString','Tags','clone','isEmpty','COUNT(*)','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','.id','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','includes','push','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','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?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','fieldType','datetime','castTo','buildExpression','type','default','text','value','start','map','tags','clause','User','user','and','uc.UserId\x20=\x20?','skip','compact','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','select','group','c.id','limit','offset','subqry.id','having','order','subqry.','findAll','color','keyBy','Sequelize','QueryTypes','SELECT'];(function(_0x5e0689,_0x212e63){var _0x4b3981=function(_0x4645c){while(--_0x4645c){_0x5e0689['push'](_0x5e0689['shift']());}};_0x4b3981(++_0x212e63);}(_0x3e51,0x74));var _0x13e5=function(_0x5c39ec,_0x324bef){_0x5c39ec=_0x5c39ec-0x0;var _0x1a2a44=_0x3e51[_0x5c39ec];return _0x1a2a44;};'use strict';var _=require(_0x13e5('0x0'));var squel=require(_0x13e5('0x1'));var as=require(_0x13e5('0x2'));var qs=require(_0x13e5('0x3'));var utils=require(_0x13e5('0x4'));var db=require(_0x13e5('0x5'))['db'];function skipContactsQuery(_0x5c77d7,_0x27658e){var _0x3edc3e=![];if(_0x5c77d7[_0x13e5('0x6')]===_0x13e5('0x7')&&!_0x27658e[_0x13e5('0x8')]&&!_0x27658e[_0x13e5('0x9')]&&_0x27658e[_0x13e5('0xa')]!==_0x13e5('0xb')){_0x3edc3e=!![];}return _0x3edc3e;}function getContactsSubquery(){return squel['select']()[_0x13e5('0xc')](_0x13e5('0xd'),'c')[_0x13e5('0xe')](_0x13e5('0xf'));}function applyJoinClauses(_0x27c7fc,_0x59ed31){var _0x3d5bc3=_0x59ed31?'c':_0x13e5('0x10');_0x27c7fc[_0x13e5('0x11')]('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0x3d5bc3+_0x13e5('0x12'))[_0x13e5('0x11')]('cm_contact_has_tags','ct',_0x13e5('0x13')+_0x3d5bc3+_0x13e5('0x12'))[_0x13e5('0x11')](_0x13e5('0x14'),'t',_0x13e5('0x15'));return _0x27c7fc;}function addFieldsToQuery(_0x5b66b9,_0x5a5e2c,_0xdc5658,_0x2d61a7,_0xb1dd18){var _0x287427=_0xb1dd18?'c':_0x13e5('0x10');if(!_0x5a5e2c){_0x5a5e2c=['id',_0x13e5('0x16'),_0x13e5('0x17'),_0x13e5('0x18'),_0x13e5('0x19'),'fax',_0x13e5('0x1a'),_0x13e5('0x9'),_0x13e5('0x1b'),_0x13e5('0x1c'),_0x13e5('0x1d'),_0x13e5('0x1e'),'TagIds'];}else if(!_0x5a5e2c[_0x13e5('0x1f')]('id')){_0x5a5e2c[_0x13e5('0x20')]('id');}var _0x34f067=_0xdc5658&&_0xb1dd18||!_0xdc5658&&!_0xb1dd18;if(_0x2d61a7){_0x34f067=_0x2d61a7&&_0xb1dd18||!_0x2d61a7&&!_0xb1dd18;}_0x5a5e2c[_0x13e5('0x21')](function(_0x4f07cf){if(_0x4f07cf===_0x13e5('0x22')){if(_0x34f067){_0x5b66b9[_0x13e5('0x23')](_0x13e5('0x24'),_0x4f07cf);}else if(_0xdc5658||_0x2d61a7){_0x5b66b9[_0x13e5('0x23')](_0x287427+'.'+_0x4f07cf);}}else{_0x5b66b9[_0x13e5('0x23')](_0x287427+'.'+_0x4f07cf);}});return _0x5b66b9;}function getSqlClauses(){var _0x4c0c65={'default':squel[_0x13e5('0x25')](),'fields':squel[_0x13e5('0x25')](),'filter':squel[_0x13e5('0x25')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0x13e5('0x25')](),'skip':![]}};return _0x4c0c65;}function parseTagParameter(_0x181ecf){var _0x4a90a0=squel['expr']();if(_0x181ecf){var _0x516075=utils[_0x13e5('0x26')](_0x181ecf);_0x516075[_0x13e5('0x21')](function(_0x1df0c5){_0x4a90a0['or'](_0x13e5('0x27'),'%,'+_0x1df0c5+',%');});}return _0x4a90a0;}function parseSearchFilter(_0x121709){var _0x236238=squel['expr']();if(_0x121709){var _0x1f28a5=_0x121709[_0x13e5('0x28')]('\x5c','\x5c\x5c')[_0x13e5('0x28')](/'/g,'\x27\x27');if(_0x1f28a5[_0x13e5('0x29')]('\x20')[_0x13e5('0x2a')]>0x1){_0x236238['or'](_0x13e5('0x2b'),qs[_0x13e5('0x2c')](_0x1f28a5),null);}else{if(qs[_0x13e5('0x2d')](_0x1f28a5)){_0x236238['or']('c.id\x20LIKE\x20?',_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x2e'),_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x2f'),_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x30'),_0x1f28a5+'%');}else if(qs[_0x13e5('0x31')](_0x1f28a5)){_0x236238['or']('c.email\x20LIKE\x20?',_0x1f28a5+'%');}else{_0x236238['or'](_0x13e5('0x32'),'%'+_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x33'),'%'+_0x1f28a5+'%');_0x236238['or'](_0x13e5('0x34'),'%'+_0x1f28a5+'%');}}}return _0x236238;}function parseAdvancedSearchFilter(_0x1f436c,_0x11f3ed){var _0x1512bc=getSqlClauses();var _0x5f0e35=as[_0x13e5('0x35')](_0x1f436c);var _0x49d07d=_0x5f0e35['sqlOperator'];for(var _0x4f8c82=0x0;_0x4f8c82<_0x5f0e35[_0x13e5('0x36')]['length'];_0x4f8c82++){var _0x3bc2f3=_0x5f0e35[_0x13e5('0x36')][_0x4f8c82];var _0x152ae1='c';var _0x15c836=_[_0x13e5('0x37')](_0x11f3ed,[_0x13e5('0x38'),_0x3bc2f3[_0x13e5('0x23')]]);if(_0x15c836){if(_0x3bc2f3['field']===_0x13e5('0x39')||_0x15c836[_0x13e5('0x3a')]===_0x13e5('0x3b')){_0x3bc2f3[_0x13e5('0x3c')]='DATE';}var _0x27fc2=as[_0x13e5('0x3d')](_0x152ae1,_0x15c836[_0x13e5('0x3e')],_0x3bc2f3);_0x1512bc[_0x13e5('0x3f')][_0x49d07d](_0x27fc2[_0x13e5('0x40')],_0x27fc2[_0x13e5('0x41')][_0x13e5('0x42')],_0x27fc2[_0x13e5('0x41')]['end']);}else{if(_0x3bc2f3['field']==='Tag'){var _0x231151=_0x3bc2f3[_0x13e5('0x41')][_0x13e5('0x29')](',')[_0x13e5('0x43')](function(_0x21f87c){return Number(_0x21f87c);});var _0x293cad=parseTagParameter(_0x231151);_0x1512bc[_0x13e5('0x44')][_0x13e5('0x45')]['and'](_0x293cad);_0x1512bc[_0x13e5('0x44')]['ids']=_0x231151;}else if(_0x3bc2f3[_0x13e5('0x23')]===_0x13e5('0x46')){_0x1512bc[_0x13e5('0x47')][_0x13e5('0x45')][_0x13e5('0x48')](_0x13e5('0x49'),_0x3bc2f3[_0x13e5('0x41')]);_0x1512bc[_0x13e5('0x47')][_0x13e5('0x4a')]=!![];}}}return _0x1512bc;}function parseModelFields(_0x58ba32,_0x46a899){var _0x27dbe3=squel['expr']();var _0x2561a6=_(_0x58ba32)['keys']()[_0x13e5('0x43')](function(_0x4c844a){return _['some'](_0x46a899,['name',_0x4c844a])?_0x4c844a:undefined;})[_0x13e5('0x4b')]()['value']();if(_0x58ba32[_0x13e5('0x4c')]){_0x2561a6[_0x13e5('0x20')](_0x13e5('0x4c'));}if(_0x2561a6['length']>0x0){_0x2561a6[_0x13e5('0x21')](function(_0x5ec88d){if(_0x5ec88d===_0x13e5('0x9')){_0x27dbe3[_0x13e5('0x48')](_0x13e5('0x4d'),[][_0x13e5('0x4e')](_0x58ba32[_0x5ec88d]));}else if(_0x5ec88d===_0x13e5('0x4c')){var _0x3b2335='%'+_0x58ba32[_0x5ec88d]+'%';_0x27dbe3['and'](_0x13e5('0x4f'),_0x3b2335);}else{_0x27dbe3[_0x13e5('0x48')]('c.'+_0x5ec88d+'\x20=\x20?',_0x58ba32[_0x5ec88d]);}});}return _0x27dbe3;}function parseQueryParameters(_0x4b3d90,_0x5f32c0){var _0x3df340=getSqlClauses();return Promise[_0x13e5('0x50')]()[_0x13e5('0x51')](function(){return parseModelFields(_0x4b3d90,_0x5f32c0);})[_0x13e5('0x51')](function(_0x463477){_0x3df340[_0x13e5('0x52')][_0x13e5('0x48')](_0x463477);return parseTagParameter(_0x4b3d90[_0x13e5('0x53')]);})[_0x13e5('0x51')](function(_0x5db504){_0x3df340[_0x13e5('0x44')][_0x13e5('0x45')][_0x13e5('0x48')](_0x5db504);return parseSearchFilter(_0x4b3d90['filter']);})[_0x13e5('0x51')](function(_0x48c6a2){_0x3df340[_0x13e5('0x54')]=_0x48c6a2;return _0x3df340;});}function checkListsRestrictions(_0x3a3117,_0x3b8ea1,_0x4662a7){var _0x4b4d8b=squel[_0x13e5('0x25')]();return Promise[_0x13e5('0x50')]()[_0x13e5('0x51')](function(){if(_0x3b8ea1['search']&&_0x3a3117['role']===_0x13e5('0x7')&&!_0x4662a7){return _0x3a3117[_0x13e5('0x55')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x35e672){if(_0x35e672){if(_0x35e672['length']===0x0){_0x4b4d8b[_0x13e5('0x48')](_0x13e5('0x56'));}else{_0x4b4d8b[_0x13e5('0x48')](_0x13e5('0x4d'),_[_0x13e5('0x43')](_0x35e672,'id'));}}})[_0x13e5('0x51')](function(){return _0x4b4d8b;});}function buildContactsQuery(_0x272f87,_0xee689c,_0x4e79fb,_0x4d1d55,_0xef9980,_0x3470f7){if(_0xee689c){_0xee689c=_0x4e79fb['attributes'];}_0x272f87=addFieldsToQuery(_0x272f87,_0xee689c,_0x4d1d55,_0x3470f7,!![]);var _0x8546=squel[_0x13e5('0x57')]();_0x8546=addFieldsToQuery(_0x8546,_0xee689c,_0x4d1d55,_0x3470f7,![]);if(_0x4d1d55||_0x3470f7){_0x272f87=applyJoinClauses(_0x272f87,!![]);_0x272f87[_0x13e5('0x58')](_0x13e5('0x59'));if(_0x4e79fb[_0x13e5('0x5a')]){_0x8546[_0x13e5('0x5a')](_0x4e79fb['limit']);}if(_0x4e79fb[_0x13e5('0x5b')]){_0x8546[_0x13e5('0x5b')](_0x4e79fb[_0x13e5('0x5b')]);}}else{_0x8546=applyJoinClauses(_0x8546,![]);_0x8546[_0x13e5('0x58')](_0x13e5('0x5c'));if(_0x4e79fb[_0x13e5('0x5a')]){_0x272f87[_0x13e5('0x5a')](_0x4e79fb[_0x13e5('0x5a')]);}if(_0x4e79fb['offset']){_0x272f87[_0x13e5('0x5b')](_0x4e79fb[_0x13e5('0x5b')]);}}_0x8546[_0x13e5('0x5d')](_0xef9980);if(_0x4e79fb[_0x13e5('0x5e')]){_0x4e79fb[_0x13e5('0x5e')]['forEach'](function(_0x97b7c6){_0x272f87[_0x13e5('0x5e')]('c.'+_0x97b7c6[0x0],_0x97b7c6[0x1]==='DESC'?![]:!![]);_0x8546[_0x13e5('0x5e')](_0x13e5('0x5f')+_0x97b7c6[0x0],_0x97b7c6[0x1]==='DESC'?![]:!![]);});}_0x8546[_0x13e5('0xc')](_0x272f87,_0x13e5('0x10'));return _0x8546;}function getFilteredContacts(_0x573821){var _0x719068=[];return db['Tag'][_0x13e5('0x60')]({'attributes':['id',_0x13e5('0x38'),_0x13e5('0x61')],'raw':!![]})[_0x13e5('0x51')](function(_0x4bb468){_0x719068=_[_0x13e5('0x62')](_0x4bb468,'id');var _0x362e25={'type':db[_0x13e5('0x63')][_0x13e5('0x64')][_0x13e5('0x65')],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x13e5('0x66')][_0x13e5('0x67')](_0x573821[_0x13e5('0x68')](),_0x362e25);})['then'](function(_0x4e5c12){_0x4e5c12[_0x13e5('0x21')](function(_0x2fc3bb){if(_0x2fc3bb[_0x13e5('0x22')]){_0x2fc3bb[_0x13e5('0x69')]=[];_0x2fc3bb['TagIds'][_0x13e5('0x29')](',')[_0x13e5('0x21')](function(_0x3f1f8e){_0x2fc3bb[_0x13e5('0x69')][_0x13e5('0x20')](_0x719068[_0x3f1f8e]);});}delete _0x2fc3bb[_0x13e5('0x22')];});return _0x4e5c12;});}function countFilteredContacts(_0x2bd29e,_0x230311){var _0xbc1868=_0x2bd29e[_0x13e5('0x6a')]();_0xbc1868[_0x13e5('0x23')]('COUNT(*)');_0xbc1868=applyJoinClauses(_0xbc1868,!![]);_0x2bd29e[_0x13e5('0x58')](_0x13e5('0x59'));var _0x3fb95e=utils[_0x13e5('0x26')](_0x230311);if(!_[_0x13e5('0x6b')](_0x3fb95e)){_0xbc1868[_0x13e5('0xe')]('t.id\x20IN\x20?',_0x3fb95e);}var _0x257bd5={'type':db[_0x13e5('0x63')][_0x13e5('0x64')][_0x13e5('0x65')],'raw':!![]};return db[_0x13e5('0x66')][_0x13e5('0x67')](_0xbc1868[_0x13e5('0x68')](),_0x257bd5)[_0x13e5('0x51')](function(_0x3994d3){return _0x3994d3[0x0][_0x13e5('0x6c')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index e9064a4..78a70c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af7=['app','session','aes-256-ctr','aes192','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','final','unlink','createReadStream','createDecipher','close','encryptString','secret','utf8','base64','decryptString','crypto','bluebird','../../config/environment','../../config/logger'];(function(_0x257b0e,_0x563d7e){var _0x27ac2a=function(_0x3a4bbc){while(--_0x3a4bbc){_0x257b0e['push'](_0x257b0e['shift']());}};_0x27ac2a(++_0x563d7e);}(_0x3af7,0xe3));var _0x73af=function(_0x11cdbc,_0x4ad07e){_0x11cdbc=_0x11cdbc-0x0;var _0x28f8fd=_0x3af7[_0x11cdbc];return _0x28f8fd;};'use strict';var crypto=require(_0x73af('0x0'));var fs=require('fs');var BPromise=require(_0x73af('0x1'));var _=require('lodash');var config=require(_0x73af('0x2'));var logger=require(_0x73af('0x3'))(_0x73af('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x73af('0x5')],'algorithm':_0x73af('0x6')};const fileOptions={'algorithm':_0x73af('0x7')};if(config['encrypt']&&config[_0x73af('0x8')][_0x73af('0x9')]){var isSupported=isAlgorithmSupported(config[_0x73af('0x8')][_0x73af('0x9')]);if(isSupported){fileOptions[_0x73af('0x9')]=config['encrypt'][_0x73af('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x73af('0xa')](config[_0x73af('0x8')][_0x73af('0x9')],_0x73af('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x322ae8){return AES_SUPPORTED_RX['test'](_0x322ae8);}function getSupportedCiphers(){return crypto[_0x73af('0xc')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x3797ab){return getSupportedCiphers()[_0x73af('0xd')](_0x3797ab)>-0x1;}function combineOptions(_0xc0a2d7){var _0x36d4e6={};for(var _0x33a23e in fileOptions){if(fileOptions[_0x73af('0xe')](_0x33a23e)){_0x36d4e6[_0x33a23e]=fileOptions[_0x33a23e];}}if(_0xc0a2d7){for(var _0x333ffe in _0xc0a2d7){if(_0xc0a2d7['hasOwnProperty'](_0x333ffe)){_0x36d4e6[_0x333ffe]=_0xc0a2d7[_0x333ffe];}}}return _0x36d4e6;}exports[_0x73af('0xf')]=function(_0x450871,_0x34e771,_0x1857b,_0x5297f0){return new BPromise(function(_0x1b8945,_0x1b6ee8){_0x5297f0=combineOptions(_0x5297f0);var _0x978ad5=new Buffer(_0x1857b);var _0x4905c9=fs['createReadStream'](_0x450871);var _0x58489e=fs[_0x73af('0x10')](_0x34e771);var _0x514b7c=crypto[_0x73af('0x11')](_0x5297f0[_0x73af('0x9')],_0x978ad5);_0x4905c9['on'](_0x73af('0x12'),function(_0x111a52){var _0x27a362=new Buffer(_0x514b7c[_0x73af('0x13')](_0x111a52),_0x73af('0x14'));_0x58489e[_0x73af('0x15')](_0x27a362);});_0x4905c9['on'](_0x73af('0x16'),function(){try{var _0x2893cd=new Buffer(_0x514b7c[_0x73af('0x17')]('binary'),_0x73af('0x14'));_0x58489e[_0x73af('0x15')](_0x2893cd);_0x58489e['end']();_0x58489e['on']('close',function(){return _0x1b8945(_0x34e771);});}catch(_0x41166e){fs[_0x73af('0x18')](_0x34e771);return _0x1b6ee8(_0x41166e);}});});};exports['decryptFile']=function(_0xf2aeaf,_0x177ed8,_0xbe2d91,_0x290867){return new BPromise(function(_0xd2f674,_0x88e889){_0x290867=combineOptions(_0x290867);var _0x54da82=new Buffer(_0xbe2d91);var _0x919c42=fs[_0x73af('0x19')](_0xf2aeaf);var _0x33806b=fs[_0x73af('0x10')](_0x177ed8);var _0x24aaa3=crypto[_0x73af('0x1a')](_0x290867[_0x73af('0x9')],_0x54da82);_0x919c42['on'](_0x73af('0x12'),function(_0x5b4b81){var _0x59cc56=new Buffer(_0x24aaa3[_0x73af('0x13')](_0x5b4b81),_0x73af('0x14'));_0x33806b[_0x73af('0x15')](_0x59cc56);});_0x919c42['on'](_0x73af('0x16'),function(){try{var _0x388c62=new Buffer(_0x24aaa3[_0x73af('0x17')]('binary'),_0x73af('0x14'));_0x33806b['write'](_0x388c62);_0x33806b['end']();_0x33806b['on'](_0x73af('0x1b'),function(){return _0xd2f674(_0x177ed8);});}catch(_0x13f848){fs[_0x73af('0x18')](_0x177ed8);return _0x88e889(_0x13f848);}});});};exports[_0x73af('0x1c')]=function(_0x4c7caa,_0x297c5c,_0x48ed82){var _0x55a642=_0x48ed82||stringOptions[_0x73af('0x9')];var _0x51d9b9=_0x297c5c||stringOptions[_0x73af('0x1d')];var _0x4ada04=crypto[_0x73af('0x11')](_0x55a642,_0x51d9b9);var _0x246988=_0x4ada04[_0x73af('0x13')](_0x4c7caa,_0x73af('0x1e'),_0x73af('0x1f'));_0x246988+=_0x4ada04[_0x73af('0x17')]('base64');return _0x246988;};exports[_0x73af('0x20')]=function(_0x863528,_0x404ea8,_0x276c15){var _0x19ff24=_0x276c15||stringOptions[_0x73af('0x9')];var _0x30b14d=_0x404ea8||stringOptions[_0x73af('0x1d')];var _0x3c87c3=crypto[_0x73af('0x1a')](_0x19ff24,_0x30b14d);var _0x3b1f4b=_0x3c87c3[_0x73af('0x13')](_0x863528,_0x73af('0x1f'),'utf8');_0x3b1f4b+=_0x3c87c3[_0x73af('0x17')](_0x73af('0x1e'));return _0x3b1f4b;};
\ No newline at end of file
+var _0x032c=['data','update','binary','write','end','unlink','decryptFile','createReadStream','createWriteStream','final','close','utf8','base64','decryptString','secret','createDecipher','crypto','bluebird','../../config/environment','../../config/logger','app','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','indexOf','hasOwnProperty','encryptFile','createCipher'];(function(_0xb8e44,_0x2a6a20){var _0x3dbb16=function(_0x15fca8){while(--_0x15fca8){_0xb8e44['push'](_0xb8e44['shift']());}};_0x3dbb16(++_0x2a6a20);}(_0x032c,0x1de));var _0xc032=function(_0x17d8b7,_0x51310a){_0x17d8b7=_0x17d8b7-0x0;var _0x2184f4=_0x032c[_0x17d8b7];return _0x2184f4;};'use strict';var crypto=require(_0xc032('0x0'));var fs=require('fs');var BPromise=require(_0xc032('0x1'));var _=require('lodash');var config=require(_0xc032('0x2'));var logger=require(_0xc032('0x3'))(_0xc032('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xc032('0x5')][_0xc032('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xc032('0x7')};if(config[_0xc032('0x8')]&&config[_0xc032('0x8')][_0xc032('0x9')]){var isSupported=isAlgorithmSupported(config[_0xc032('0x8')][_0xc032('0x9')]);if(isSupported){fileOptions['algorithm']=config['encrypt'][_0xc032('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xc032('0xa')](',\x20');logger[_0xc032('0xb')](config[_0xc032('0x8')][_0xc032('0x9')],_0xc032('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x164b3e){return AES_SUPPORTED_RX['test'](_0x164b3e);}function getSupportedCiphers(){return crypto['getCiphers']()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x100ef0){return getSupportedCiphers()[_0xc032('0xd')](_0x100ef0)>-0x1;}function combineOptions(_0x213525){var _0x46c182={};for(var _0x12cdee in fileOptions){if(fileOptions[_0xc032('0xe')](_0x12cdee)){_0x46c182[_0x12cdee]=fileOptions[_0x12cdee];}}if(_0x213525){for(var _0x2c14f6 in _0x213525){if(_0x213525[_0xc032('0xe')](_0x2c14f6)){_0x46c182[_0x2c14f6]=_0x213525[_0x2c14f6];}}}return _0x46c182;}exports[_0xc032('0xf')]=function(_0x6616a6,_0x5c72e8,_0xc524ef,_0x36c6d7){return new BPromise(function(_0x3aa1b5,_0x5be46b){_0x36c6d7=combineOptions(_0x36c6d7);var _0x283331=new Buffer(_0xc524ef);var _0x4701f8=fs['createReadStream'](_0x6616a6);var _0x2b8d1c=fs['createWriteStream'](_0x5c72e8);var _0x331f25=crypto[_0xc032('0x10')](_0x36c6d7['algorithm'],_0x283331);_0x4701f8['on'](_0xc032('0x11'),function(_0x40b18f){var _0x175c3c=new Buffer(_0x331f25[_0xc032('0x12')](_0x40b18f),_0xc032('0x13'));_0x2b8d1c[_0xc032('0x14')](_0x175c3c);});_0x4701f8['on'](_0xc032('0x15'),function(){try{var _0x305d99=new Buffer(_0x331f25['final'](_0xc032('0x13')),_0xc032('0x13'));_0x2b8d1c[_0xc032('0x14')](_0x305d99);_0x2b8d1c[_0xc032('0x15')]();_0x2b8d1c['on']('close',function(){return _0x3aa1b5(_0x5c72e8);});}catch(_0xed4fd){fs[_0xc032('0x16')](_0x5c72e8);return _0x5be46b(_0xed4fd);}});});};exports[_0xc032('0x17')]=function(_0x417155,_0x4d6693,_0x298215,_0x1c8a43){return new BPromise(function(_0x2b69a0,_0x529972){_0x1c8a43=combineOptions(_0x1c8a43);var _0x11cc1a=new Buffer(_0x298215);var _0x15c0c1=fs[_0xc032('0x18')](_0x417155);var _0x48ad90=fs[_0xc032('0x19')](_0x4d6693);var _0x529430=crypto['createDecipher'](_0x1c8a43['algorithm'],_0x11cc1a);_0x15c0c1['on'](_0xc032('0x11'),function(_0x5e6f16){var _0x4a06b9=new Buffer(_0x529430[_0xc032('0x12')](_0x5e6f16),'binary');_0x48ad90[_0xc032('0x14')](_0x4a06b9);});_0x15c0c1['on']('end',function(){try{var _0x58922a=new Buffer(_0x529430[_0xc032('0x1a')]('binary'),_0xc032('0x13'));_0x48ad90[_0xc032('0x14')](_0x58922a);_0x48ad90[_0xc032('0x15')]();_0x48ad90['on'](_0xc032('0x1b'),function(){return _0x2b69a0(_0x4d6693);});}catch(_0x340f89){fs['unlink'](_0x4d6693);return _0x529972(_0x340f89);}});});};exports['encryptString']=function(_0x2060c4,_0x37db94,_0x165571){var _0x527708=_0x165571||stringOptions[_0xc032('0x9')];var _0x337634=_0x37db94||stringOptions['secret'];var _0xbc3dfb=crypto[_0xc032('0x10')](_0x527708,_0x337634);var _0x8a73f1=_0xbc3dfb[_0xc032('0x12')](_0x2060c4,_0xc032('0x1c'),_0xc032('0x1d'));_0x8a73f1+=_0xbc3dfb['final']('base64');return _0x8a73f1;};exports[_0xc032('0x1e')]=function(_0x86c431,_0xe2e676,_0x2f1fcf){var _0x4301c5=_0x2f1fcf||stringOptions[_0xc032('0x9')];var _0x84622b=_0xe2e676||stringOptions[_0xc032('0x1f')];var _0x12c58d=crypto[_0xc032('0x20')](_0x4301c5,_0x84622b);var _0x3557c1=_0x12c58d[_0xc032('0x12')](_0x86c431,_0xc032('0x1d'),_0xc032('0x1c'));_0x3557c1+=_0x12c58d[_0xc032('0x1a')]('utf8');return _0x3557c1;};
\ No newline at end of file
index f4da6ba..3d0c806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdea4=['format','QueryTypes','SELECT','num','Empty','split','length','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','dirname','.csv','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','util','lodash','to-csv','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','argv','AnalyticExtractedReport','info','CSV','Setting','find','then','query'];(function(_0x354f41,_0xe7b669){var _0x2e1e3a=function(_0x37d20c){while(--_0x37d20c){_0x354f41['push'](_0x354f41['shift']());}};_0x2e1e3a(++_0xe7b669);}(_0xdea4,0x11d));var _0x4dea=function(_0x5ed40e,_0x5c1773){_0x5ed40e=_0x5ed40e-0x0;var _0x2662ad=_0xdea4[_0x5ed40e];return _0x2662ad;};'use strict';var util=require(_0x4dea('0x0'));var path=require('path');var _=require(_0x4dea('0x1'));var csv=require(_0x4dea('0x2'));var fs=require('fs');var BPromise=require(_0x4dea('0x3'));var zipdir=require(_0x4dea('0x4'));var rimraf=require('rimraf');var db=require(_0x4dea('0x5'))['db'];var dbH=require(_0x4dea('0x5'))[_0x4dea('0x6')];var logger=require(_0x4dea('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x4dea('0x8')][0x2]);var QUERY=process[_0x4dea('0x8')][0x3];var PATH=process[_0x4dea('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5681a3,_0xff678e){var _0x8dbf05={'status':_0x5681a3};var _0x44a729={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xff678e){_0x8dbf05['savename']=_0xff678e;}return db[_0x4dea('0x9')]['update'](_0x8dbf05,_0x44a729);}function main(){var _0x4397ea=0x1388;var _0x25ec9a;logger[_0x4dea('0xa')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x4dea('0xb')));return db[_0x4dea('0xc')][_0x4dea('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeCsv']})['then'](function(_0x33f5a7){if(_0x33f5a7){_0x25ec9a=_0x33f5a7;_0x4397ea=_0x25ec9a['splitSizeCsv']||0x1388;}})[_0x4dea('0xe')](function(){return dbH['sequelize'][_0x4dea('0xf')](util[_0x4dea('0x10')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x4dea('0x11')][_0x4dea('0x12')]});})[_0x4dea('0xe')](function(_0x3e4c29){if(!_0x3e4c29[0x0][_0x4dea('0x13')]){return analyticExtractedReport(_0x4dea('0x14'));}var _0x367468=[];var _0x335eb8=0x0;if(_0x25ec9a[_0x4dea('0x15')]){if(_0x3e4c29&&_0x3e4c29[_0x4dea('0x16')]){var _0x17f4d1=_['range'](_0x3e4c29[0x0]['num']/_0x4397ea);var _0x594c9e=Number['isInteger'](_0x3e4c29[0x0]['num']/_0x4397ea)?_0x3e4c29[0x0][_0x4dea('0x13')]%_0x4397ea:0x0;_0x17f4d1[_0x4dea('0x17')](function(_0x5f22e1){if(_0x5f22e1>0x0){_0x335eb8+=_0x4397ea;}_0x367468[_0x4dea('0x18')](dbH['sequelize'][_0x4dea('0xf')](util[_0x4dea('0x10')](_0x4dea('0x19'),QUERY,_0x4397ea,_0x335eb8),{'type':dbH[_0x4dea('0x1a')][_0x4dea('0x11')][_0x4dea('0x12')]}));});if(_0x594c9e>0x0){_0x335eb8+=_0x4397ea;_0x367468[_0x4dea('0x18')](dbH[_0x4dea('0x1a')][_0x4dea('0xf')](util[_0x4dea('0x10')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x594c9e,_0x335eb8),{'type':dbH[_0x4dea('0x1a')][_0x4dea('0x11')][_0x4dea('0x12')]}));}}}else{_0x367468[_0x4dea('0x18')](dbH[_0x4dea('0x1a')][_0x4dea('0xf')](QUERY,{'type':dbH[_0x4dea('0x1a')][_0x4dea('0x11')][_0x4dea('0x12')]}));}var _0x13aa45=path[_0x4dea('0x1b')](PATH);var _0x17d985=path['basename'](PATH,_0x4dea('0x1c'));var _0x338a20=_0x25ec9a['split']&&_0x367468[_0x4dea('0x16')]>0x1;var _0x403342=[];if(!fs['existsSync'](path[_0x4dea('0x1d')](_0x13aa45,_0x17d985))&&_0x338a20){fs[_0x4dea('0x1e')](path[_0x4dea('0x1d')](_0x13aa45,_0x17d985));}return BPromise[_0x4dea('0x1f')](_0x367468,function(_0x14e16c){_0x403342[_0x4dea('0x18')](_0x14e16c);})[_0x4dea('0xe')](function(){for(var _0x23b7ee=0x0;_0x23b7ee<_0x403342[_0x4dea('0x16')];_0x23b7ee+=0x1){var _0x102331;var _0x1a482c=_0x403342[_0x23b7ee];if(_0x338a20){_0x102331=path[_0x4dea('0x1d')](_0x13aa45,_0x17d985,util[_0x4dea('0x10')](_0x4dea('0x20'),_0x17d985,_0x23b7ee,_0x4dea('0x21')));}else{_0x102331=path[_0x4dea('0x1d')](_0x13aa45,util[_0x4dea('0x10')](_0x4dea('0x22'),_0x17d985,_0x4dea('0x21')));}fs[_0x4dea('0x23')](_0x102331,csv(_0x1a482c));}})['then'](function(){if(_0x338a20){return new Promise(function(_0x4176db){zipdir(path['join'](_0x13aa45,_0x17d985),{'saveTo':path['join'](_0x13aa45,util[_0x4dea('0x10')](_0x4dea('0x22'),_0x17d985,_0x4dea('0x24')))},function(_0x426f80,_0x2a1486){rimraf(path[_0x4dea('0x1d')](_0x13aa45,_0x17d985),function(){});_0x4176db('zip\x20finished');});});}})[_0x4dea('0xe')](function(){logger[_0x4dea('0xa')](util[_0x4dea('0x10')](_0x4dea('0x25'),EXTRACTED_REPORT_ID,_0x4dea('0xb')));return analyticExtractedReport(_0x4dea('0x26'),_0x338a20?util['format'](_0x4dea('0x22'),_0x17d985,_0x338a20?_0x4dea('0x24'):_0x4dea('0x21')):null);});})[_0x4dea('0x27')](function(_0x5c4904){logger[_0x4dea('0xa')](util['format'](_0x4dea('0x28'),EXTRACTED_REPORT_ID,_0x4dea('0xb')),util[_0x4dea('0x29')](_0x5c4904,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x4dea('0x2a')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xd75e=['AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','length','range','isInteger','forEach','push','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','existsSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','../../mysqldb','../../config/logger','analytics','argv','savename'];(function(_0x6637,_0x520cfc){var _0x49ad62=function(_0x378e35){while(--_0x378e35){_0x6637['push'](_0x6637['shift']());}};_0x49ad62(++_0x520cfc);}(_0xd75e,0x135));var _0xed75=function(_0x4513c7,_0x4109d5){_0x4513c7=_0x4513c7-0x0;var _0x26b1e9=_0xd75e[_0x4513c7];return _0x26b1e9;};'use strict';var util=require(_0xed75('0x0'));var path=require('path');var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xed75('0x1'))['dbH'];var logger=require(_0xed75('0x2'))(_0xed75('0x3'));var EXTRACTED_REPORT_ID=Number(process[_0xed75('0x4')][0x2]);var QUERY=process[_0xed75('0x4')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x30f58d,_0x126913){var _0x6e0a15={'status':_0x30f58d};var _0x40ac3c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x126913){_0x6e0a15[_0xed75('0x5')]=_0x126913;}return db[_0xed75('0x6')]['update'](_0x6e0a15,_0x40ac3c);}function main(){var _0x29e82d=0x1388;var _0xec70d8;logger[_0xed75('0x7')](util[_0xed75('0x8')](_0xed75('0x9'),EXTRACTED_REPORT_ID,_0xed75('0xa')));return db[_0xed75('0xb')][_0xed75('0xc')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xed75('0xd'),_0xed75('0xe')]})['then'](function(_0x3d4ff7){if(_0x3d4ff7){_0xec70d8=_0x3d4ff7;_0x29e82d=_0xec70d8[_0xed75('0xe')]||0x1388;}})[_0xed75('0xf')](function(){return dbH[_0xed75('0x10')][_0xed75('0x11')](util[_0xed75('0x8')](_0xed75('0x12'),QUERY),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')]['SELECT']});})[_0xed75('0xf')](function(_0x3734e7){if(!_0x3734e7[0x0][_0xed75('0x14')]){return analyticExtractedReport(_0xed75('0x15'));}var _0xec1049=[];var _0x2ab107=0x0;if(_0xec70d8['split']){if(_0x3734e7&&_0x3734e7[_0xed75('0x16')]){var _0x5f0ff9=_[_0xed75('0x17')](_0x3734e7[0x0][_0xed75('0x14')]/_0x29e82d);var _0x3ac742=Number[_0xed75('0x18')](_0x3734e7[0x0][_0xed75('0x14')]/_0x29e82d)?_0x3734e7[0x0][_0xed75('0x14')]%_0x29e82d:0x0;_0x5f0ff9[_0xed75('0x19')](function(_0x2517f0){if(_0x2517f0>0x0){_0x2ab107+=_0x29e82d;}_0xec1049[_0xed75('0x1a')](dbH[_0xed75('0x10')][_0xed75('0x11')](util[_0xed75('0x8')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x29e82d,_0x2ab107),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));});if(_0x3ac742>0x0){_0x2ab107+=_0x29e82d;_0xec1049[_0xed75('0x1a')](dbH[_0xed75('0x10')]['query'](util[_0xed75('0x8')](_0xed75('0x1c'),QUERY,_0x3ac742,_0x2ab107),{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));}}}else{_0xec1049['push'](dbH[_0xed75('0x10')][_0xed75('0x11')](QUERY,{'type':dbH[_0xed75('0x10')][_0xed75('0x13')][_0xed75('0x1b')]}));}var _0x268461=path[_0xed75('0x1d')](PATH);var _0x35e094=path['basename'](PATH,_0xed75('0x1e'));var _0xae945a=_0xec70d8[_0xed75('0xd')]&&_0xec1049[_0xed75('0x16')]>0x1;var _0x71c1ef=[];if(!fs[_0xed75('0x1f')](path[_0xed75('0x20')](_0x268461,_0x35e094))&&_0xae945a){fs['mkdirSync'](path['join'](_0x268461,_0x35e094));}return BPromise[_0xed75('0x21')](_0xec1049,function(_0x40d21c){_0x71c1ef[_0xed75('0x1a')](_0x40d21c);})[_0xed75('0xf')](function(){for(var _0x112208=0x0;_0x112208<_0x71c1ef[_0xed75('0x16')];_0x112208+=0x1){var _0x570b00;var _0x46a9d2=_0x71c1ef[_0x112208];if(_0xae945a){_0x570b00=path[_0xed75('0x20')](_0x268461,_0x35e094,util['format'](_0xed75('0x22'),_0x35e094,_0x112208,_0xed75('0x23')));}else{_0x570b00=path[_0xed75('0x20')](_0x268461,util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,_0xed75('0x23')));}fs[_0xed75('0x25')](_0x570b00,csv(_0x46a9d2));}})[_0xed75('0xf')](function(){if(_0xae945a){return new Promise(function(_0x5e9029){zipdir(path['join'](_0x268461,_0x35e094),{'saveTo':path[_0xed75('0x20')](_0x268461,util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,'zip'))},function(_0x45068f,_0x5bf8f3){rimraf(path['join'](_0x268461,_0x35e094),function(){});_0x5e9029(_0xed75('0x26'));});});}})[_0xed75('0xf')](function(){logger[_0xed75('0x7')](util[_0xed75('0x8')](_0xed75('0x27'),EXTRACTED_REPORT_ID,_0xed75('0xa')));return analyticExtractedReport('Completed',_0xae945a?util[_0xed75('0x8')](_0xed75('0x24'),_0x35e094,_0xae945a?'zip':_0xed75('0x23')):null);});})['catch'](function(_0x58efcf){logger[_0xed75('0x7')](util['format'](_0xed75('0x28'),EXTRACTED_REPORT_ID,_0xed75('0xa')),util[_0xed75('0x29')](_0x58efcf,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xed75('0x2a'));})[_0xed75('0x2b')](function(){process[_0xed75('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index a863aa4..c272c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c9=['\x20/\x20','footer','Arial','black','right','num','Empty','Setting','splitSizePdf','then','range','forEach','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','join','each','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfFromHTML','path','lodash','util','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','pick','map','value','fill','length','auto','body','push','concat','chunk','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','format','header','pageBreak','before','margin','toString'];(function(_0xedb7a,_0x52993f){var _0x53204f=function(_0x38e9be){while(--_0x38e9be){_0xedb7a['push'](_0xedb7a['shift']());}};_0x53204f(++_0x52993f);}(_0xa1c9,0x132));var _0x9a1c=function(_0x3ab54a,_0xf327f1){_0x3ab54a=_0x3ab54a-0x0;var _0x2b8fcd=_0xa1c9[_0x3ab54a];return _0x2b8fcd;};'use strict';var _=require(_0x9a1c('0x0'));var fs=require('fs');var util=require(_0x9a1c('0x1'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require(_0x9a1c('0x2'));var PdfPrinter=require(_0x9a1c('0x3'));var zipdir=require(_0x9a1c('0x4'));var rimraf=require(_0x9a1c('0x5'));var JSDOM=require(_0x9a1c('0x6'))[_0x9a1c('0x7')];var window=new JSDOM('')[_0x9a1c('0x8')];var BPromise=require('bluebird');var db=require(_0x9a1c('0x9'))['db'];var dbH=require(_0x9a1c('0x9'))['dbH'];var logger=require('../../config/logger')(_0x9a1c('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x9a1c('0xb')][0x2]);var QUERY=process[_0x9a1c('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x388cd7,_0x52061f){var _0xd7ab12={'status':_0x388cd7};var _0x5d7ea7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x52061f){_0xd7ab12[_0x9a1c('0xc')]=_0x52061f;}return db[_0x9a1c('0xd')]['update'](_0xd7ab12,_0x5d7ea7);}function getHeaders(_0x472a71){return _['map'](_0x472a71,function(_0x30a833){return{'text':_0x30a833,'style':'tableHeader'};});}function getRows(_0xf79312,_0x19589d){return _['map'](_0x19589d,function(_0x4eede4){return _(_0x4eede4)[_0x9a1c('0xe')](_0xf79312)[_0x9a1c('0xf')](function(_0x3d7427){return _0x3d7427?_['toString'](_0x3d7427):'';})[_0x9a1c('0x10')]();});}function createTable(_0x3c86d3,_0x50198b){var _0x4b3ae6={'widths':_[_0x9a1c('0x11')](Array(_0x3c86d3[_0x9a1c('0x12')]),0x91),'heights':function(_0x16cfb2){return _0x16cfb2===0x0?_0x9a1c('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1379db=getHeaders(_0x3c86d3);_0x4b3ae6[_0x9a1c('0x14')][_0x9a1c('0x15')](_0x1379db);var _0xe0e79c=getRows(_0x3c86d3,_0x50198b);_0x4b3ae6[_0x9a1c('0x14')]=_0x4b3ae6['body'][_0x9a1c('0x16')](_0xe0e79c);return _0x4b3ae6;}function createTables(_0x3cd5af){var _0x1fddc7=[];var _0x11cc9c=_[_0x9a1c('0x17')](Object[_0x9a1c('0x18')](_0x3cd5af[0x0]),0x5);_0x11cc9c['forEach'](function(_0xd1fdfa){_0x1fddc7['push'](createTable(_0xd1fdfa,_0x3cd5af));});return _0x1fddc7;}function getPDFDocDefinition(_0x4e3248){var _0x486521=util['format'](_0x9a1c('0x19'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x9a1c('0x1a')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x9a1c('0x1b')])[_0x9a1c('0x1c')](FORMAT));var _0x3ca40c=[];for(var _0x1f6f25=0x0;_0x1f6f25<_0x4e3248[_0x9a1c('0x12')];_0x1f6f25++){var _0x332e99=[];if(_0x1f6f25===0x0){_0x332e99[_0x9a1c('0x15')]({'text':_0x486521,'style':_0x9a1c('0x1d')});}var _0x1a3fbd={'table':_0x4e3248[_0x1f6f25]};if(_0x1f6f25>0x0){_0x1a3fbd[_0x9a1c('0x1e')]=_0x9a1c('0x1f');_0x1a3fbd[_0x9a1c('0x20')]=[0x0,0x46,0x0,0x0];}_0x332e99['push'](_0x1a3fbd);_0x3ca40c[_0x9a1c('0x15')](_0x332e99);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x3ca40c,'footer':function(_0x3cffdd,_0x562160){return{'text':_0x3cffdd[_0x9a1c('0x21')]()+_0x9a1c('0x22')+_0x562160,'style':_0x9a1c('0x23')};},'defaultStyle':{'font':_0x9a1c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x9a1c('0x25')},'footer':{'alignment':_0x9a1c('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1b4839){var _0x5106dd=0x1388;var _0x5bab1;if(!_0x1b4839[0x0][_0x9a1c('0x27')]){return analyticExtractedReport(_0x9a1c('0x28'));}return db[_0x9a1c('0x29')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x9a1c('0x2a')]})[_0x9a1c('0x2b')](function(_0x9847a){if(_0x9847a){_0x5bab1=_0x9847a;_0x5106dd=_0x5bab1[_0x9a1c('0x2a')]||0x3e8;}})[_0x9a1c('0x2b')](function(){var _0x5602f5=[];var _0x32c712=0x0;if(_0x5bab1['split']){if(_0x1b4839&&_0x1b4839[_0x9a1c('0x12')]){var _0xa30b57=_[_0x9a1c('0x2c')](_0x1b4839[0x0]['num']/_0x5106dd);var _0x5e01fb=Number['isInteger'](_0x1b4839[0x0][_0x9a1c('0x27')]/_0x5106dd)?_0x1b4839[0x0][_0x9a1c('0x27')]%_0x5106dd:0x0;_0xa30b57[_0x9a1c('0x2d')](function(_0x6021ff){if(_0x6021ff>0x0){_0x32c712+=_0x5106dd;}_0x5602f5[_0x9a1c('0x15')](dbH[_0x9a1c('0x2e')][_0x9a1c('0x2f')](util[_0x9a1c('0x1c')](_0x9a1c('0x30'),QUERY,_0x5106dd,_0x32c712),{'type':dbH[_0x9a1c('0x2e')][_0x9a1c('0x31')][_0x9a1c('0x32')]}));});if(_0x5e01fb>0x0){_0x32c712+=_0x5106dd;_0x5602f5['push'](dbH[_0x9a1c('0x2e')][_0x9a1c('0x2f')](util[_0x9a1c('0x1c')](_0x9a1c('0x30'),QUERY,_0x5e01fb,_0x32c712),{'type':dbH[_0x9a1c('0x2e')][_0x9a1c('0x31')][_0x9a1c('0x32')]}));}}}else{_0x5602f5[_0x9a1c('0x15')](dbH[_0x9a1c('0x2e')][_0x9a1c('0x2f')](QUERY,{'type':dbH['sequelize'][_0x9a1c('0x31')][_0x9a1c('0x32')]}));}var _0x3bf967=path[_0x9a1c('0x33')](PATH);var _0x5f2a89=path[_0x9a1c('0x34')](PATH,'.pdf');var _0x1d26fe=_0x5bab1['split']&&_0x5602f5[_0x9a1c('0x12')]>0x1;var _0x43b7ab=[];if(!fs['existsSync'](path[_0x9a1c('0x35')](_0x3bf967,_0x5f2a89))&&_0x1d26fe){fs['mkdirSync'](path[_0x9a1c('0x35')](_0x3bf967,_0x5f2a89));}return BPromise[_0x9a1c('0x36')](_0x5602f5,function(_0x1eaaed){_0x43b7ab[_0x9a1c('0x15')](_0x1eaaed);})[_0x9a1c('0x2b')](function(){var _0x513dda=[];for(var _0x4a13eb=0x0;_0x4a13eb<_0x43b7ab[_0x9a1c('0x12')];_0x4a13eb+=0x1){var _0xa11fb3=_0x43b7ab[_0x4a13eb];var _0x581577=createTables(_[_0x9a1c('0x37')](_0xa11fb3));var _0x3bb25c;var _0x5f5dd7=getPDFDocDefinition(_0x581577);var _0x34a16b=getPDFPrinter();var _0x1cf1e7=_0x34a16b[_0x9a1c('0x38')](_0x5f5dd7);if(_0x1d26fe){_0x3bb25c=path[_0x9a1c('0x35')](_0x3bf967,_0x5f2a89,util[_0x9a1c('0x1c')]('%s%d.%s',_0x5f2a89,_0x4a13eb,_0x9a1c('0x39')));}else{_0x3bb25c=path[_0x9a1c('0x35')](_0x3bf967,util[_0x9a1c('0x1c')](_0x9a1c('0x3a'),_0x5f2a89,_0x9a1c('0x39')));}_0x513dda[_0x9a1c('0x15')](writePDFDocument(_0x1cf1e7,_0x3bb25c));}return Promise[_0x9a1c('0x3b')](_0x513dda);})[_0x9a1c('0x2b')](function(){if(_0x1d26fe){return new Promise(function(_0xe0a88e){zipdir(path['join'](_0x3bf967,_0x5f2a89),{'saveTo':path[_0x9a1c('0x35')](_0x3bf967,util[_0x9a1c('0x1c')]('%s.%s',_0x5f2a89,_0x9a1c('0x3c')))},function(){rimraf(path[_0x9a1c('0x35')](_0x3bf967,_0x5f2a89),function(){});_0xe0a88e(_0x9a1c('0x3d'));});});}})[_0x9a1c('0x2b')](function(){if(!_0x1d26fe)return;rimraf(path[_0x9a1c('0x35')](_0x3bf967,_0x5f2a89),function(){});})[_0x9a1c('0x2b')](function(){logger['info'](util[_0x9a1c('0x1c')](_0x9a1c('0x3e'),EXTRACTED_REPORT_ID,_0x9a1c('0x3f')));return analyticExtractedReport(_0x9a1c('0x40'),_0x1d26fe?util[_0x9a1c('0x1c')](_0x9a1c('0x3a'),_0x5f2a89,_0x1d26fe?_0x9a1c('0x3c'):_0x9a1c('0x39')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x9a1c('0x1c')](_0x9a1c('0x41'),EXTRACTED_REPORT_ID,_0x9a1c('0x3f')));return db[_0x9a1c('0xd')][_0x9a1c('0x42')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x9a1c('0x2b')](function(_0x16fae6){EXTRACTED_REPORT=_0x16fae6;return dbH[_0x9a1c('0x2e')][_0x9a1c('0x2f')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x9a1c('0x2e')][_0x9a1c('0x31')][_0x9a1c('0x32')]});})[_0x9a1c('0x2b')](extractReport)[_0x9a1c('0x43')](function(_0x33415a){logger[_0x9a1c('0x44')](util[_0x9a1c('0x1c')](_0x9a1c('0x45'),EXTRACTED_REPORT_ID,_0x9a1c('0x3f')),util['inspect'](_0x33415a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x57f7f2=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x9a1c('0x46'),'italics':__dirname+_0x9a1c('0x47'),'bolditalics':__dirname+_0x9a1c('0x48')}});return _0x57f7f2;}function getPDFDocDefinitionFromHTML(_0x250979,_0x31bd0c){var _0x2800a7=util[_0x9a1c('0x1c')](_0x9a1c('0x49'),_0x31bd0c[_0x9a1c('0x4a')],_0x31bd0c[_0x9a1c('0x4b')]);var _0x73dd53=moment()[_0x9a1c('0x1c')](_0x9a1c('0x4c'))['toString']();var _0x4045dd=htmlToPdfmake(_0x250979,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4045dd],'defaultStyle':{'font':_0x9a1c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x9a1c('0x4d'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x9a1c('0x4d'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x9a1c('0x4d')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x152742,_0x3e6cac){return[{'text':util[_0x9a1c('0x1c')](_0x9a1c('0x4e'),_0x2800a7,_0x152742,_0x3e6cac,_0x73dd53),'style':_0x9a1c('0x23')}];}};}function writePDFDocument(_0x504cd7,_0xe16ab6){return new Promise(function(_0x2754ba,_0x5e8ddf){var _0x1426d7=_0x504cd7[_0x9a1c('0x4f')](fs['createWriteStream'](_0xe16ab6));_0x1426d7['on'](_0x9a1c('0x50'),function(){_0x2754ba(_0x9a1c('0x50'));});_0x1426d7['on'](_0x9a1c('0x51'),function(_0x49c1e5){_0x5e8ddf(_0x49c1e5);});_0x504cd7[_0x9a1c('0x52')]();});}exports[_0x9a1c('0x53')]=function(_0x326a2d,_0x1e4da4){var _0x14912e=getPDFPrinter();var _0x533662=getPDFDocDefinitionFromHTML(_0x326a2d,_0x1e4da4);var _0x6734a1=_0x14912e[_0x9a1c('0x38')](_0x533662);return writePDFDocument(_0x6734a1,_0x1e4da4[_0x9a1c('0x54')])[_0x9a1c('0x43')](function(_0x4e108c){throw _0x4e108c;});};
\ No newline at end of file
+var _0xe940=['Completed','%s.%s','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','Arial','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfFromHTML','lodash','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','toString','value','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','before','landscape','\x20/\x20','footer','black','right','num','Empty','splitSizePdf','then','split','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','sequelize','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','zip','info','PDF'];(function(_0x12d82d,_0x40a7ab){var _0x5fde95=function(_0x432761){while(--_0x432761){_0x12d82d['push'](_0x12d82d['shift']());}};_0x5fde95(++_0x40a7ab);}(_0xe940,0x180));var _0x0e94=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe940[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0e94('0x0'));var fs=require('fs');var util=require(_0x0e94('0x1'));var path=require(_0x0e94('0x2'));var moment=require(_0x0e94('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x0e94('0x4'));var zipdir=require(_0x0e94('0x5'));var rimraf=require(_0x0e94('0x6'));var JSDOM=require(_0x0e94('0x7'))[_0x0e94('0x8')];var window=new JSDOM('')['window'];var BPromise=require('bluebird');var db=require(_0x0e94('0x9'))['db'];var dbH=require(_0x0e94('0x9'))[_0x0e94('0xa')];var logger=require(_0x0e94('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x0e94('0xc')][0x3];var PATH=process[_0x0e94('0xc')][0x4];var NAME=process[_0x0e94('0xc')][0x5];var FORMAT=_0x0e94('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x5773a9,_0x1ed7f4){var _0x3c8bca={'status':_0x5773a9};var _0xdfc100={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1ed7f4){_0x3c8bca[_0x0e94('0xe')]=_0x1ed7f4;}return db[_0x0e94('0xf')]['update'](_0x3c8bca,_0xdfc100);}function getHeaders(_0x1f2021){return _[_0x0e94('0x10')](_0x1f2021,function(_0xbe785e){return{'text':_0xbe785e,'style':_0x0e94('0x11')};});}function getRows(_0x120294,_0x5b1d22){return _[_0x0e94('0x10')](_0x5b1d22,function(_0xba9ec){return _(_0xba9ec)['pick'](_0x120294)[_0x0e94('0x10')](function(_0x47fc27){return _0x47fc27?_[_0x0e94('0x12')](_0x47fc27):'';})[_0x0e94('0x13')]();});}function createTable(_0x4ff5ec,_0xade745){var _0x239239={'widths':_[_0x0e94('0x14')](Array(_0x4ff5ec[_0x0e94('0x15')]),0x91),'heights':function(_0x28b011){return _0x28b011===0x0?_0x0e94('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5f4557=getHeaders(_0x4ff5ec);_0x239239[_0x0e94('0x17')][_0x0e94('0x18')](_0x5f4557);var _0x586ed5=getRows(_0x4ff5ec,_0xade745);_0x239239[_0x0e94('0x17')]=_0x239239[_0x0e94('0x17')][_0x0e94('0x19')](_0x586ed5);return _0x239239;}function createTables(_0x5521cf){var _0x34054a=[];var _0x442198=_[_0x0e94('0x1a')](Object[_0x0e94('0x1b')](_0x5521cf[0x0]),0x5);_0x442198[_0x0e94('0x1c')](function(_0x3e5b71){_0x34054a[_0x0e94('0x18')](createTable(_0x3e5b71,_0x5521cf));});return _0x34054a;}function getPDFDocDefinition(_0x57007d){var _0x9806ec=util[_0x0e94('0x1d')](_0x0e94('0x1e'),NAME,EXTRACTED_REPORT[_0x0e94('0x1f')],moment(EXTRACTED_REPORT[_0x0e94('0x20')])[_0x0e94('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x0e94('0x21')])[_0x0e94('0x1d')](FORMAT));var _0x5d9703=[];for(var _0x49fc5f=0x0;_0x49fc5f<_0x57007d[_0x0e94('0x15')];_0x49fc5f++){var _0x57537f=[];if(_0x49fc5f===0x0){_0x57537f[_0x0e94('0x18')]({'text':_0x9806ec,'style':_0x0e94('0x22')});}var _0x8075ee={'table':_0x57007d[_0x49fc5f]};if(_0x49fc5f>0x0){_0x8075ee['pageBreak']=_0x0e94('0x23');_0x8075ee['margin']=[0x0,0x46,0x0,0x0];}_0x57537f[_0x0e94('0x18')](_0x8075ee);_0x5d9703['push'](_0x57537f);}return{'pageSize':'A4','pageOrientation':_0x0e94('0x24'),'content':_0x5d9703,'footer':function(_0x3881e6,_0x398417){return{'text':_0x3881e6['toString']()+_0x0e94('0x25')+_0x398417,'style':_0x0e94('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x0e94('0x27')},'footer':{'alignment':_0x0e94('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x3908b4){var _0x4b4f7e=0x1388;var _0x326555;if(!_0x3908b4[0x0][_0x0e94('0x29')]){return analyticExtractedReport(_0x0e94('0x2a'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x0e94('0x2b')]})['then'](function(_0x326aa3){if(_0x326aa3){_0x326555=_0x326aa3;_0x4b4f7e=_0x326555[_0x0e94('0x2b')]||0x3e8;}})[_0x0e94('0x2c')](function(){var _0x101aea=[];var _0x4518db=0x0;if(_0x326555[_0x0e94('0x2d')]){if(_0x3908b4&&_0x3908b4[_0x0e94('0x15')]){var _0x21f2e6=_[_0x0e94('0x2e')](_0x3908b4[0x0]['num']/_0x4b4f7e);var _0x458d56=Number[_0x0e94('0x2f')](_0x3908b4[0x0]['num']/_0x4b4f7e)?_0x3908b4[0x0]['num']%_0x4b4f7e:0x0;_0x21f2e6[_0x0e94('0x1c')](function(_0x56b43e){if(_0x56b43e>0x0){_0x4518db+=_0x4b4f7e;}_0x101aea[_0x0e94('0x18')](dbH['sequelize'][_0x0e94('0x30')](util[_0x0e94('0x1d')](_0x0e94('0x31'),QUERY,_0x4b4f7e,_0x4518db),{'type':dbH['sequelize']['QueryTypes'][_0x0e94('0x32')]}));});if(_0x458d56>0x0){_0x4518db+=_0x4b4f7e;_0x101aea[_0x0e94('0x18')](dbH[_0x0e94('0x33')]['query'](util[_0x0e94('0x1d')](_0x0e94('0x31'),QUERY,_0x458d56,_0x4518db),{'type':dbH[_0x0e94('0x33')]['QueryTypes'][_0x0e94('0x32')]}));}}}else{_0x101aea[_0x0e94('0x18')](dbH['sequelize'][_0x0e94('0x30')](QUERY,{'type':dbH[_0x0e94('0x33')]['QueryTypes'][_0x0e94('0x32')]}));}var _0x2492f4=path[_0x0e94('0x34')](PATH);var _0x54e489=path[_0x0e94('0x35')](PATH,_0x0e94('0x36'));var _0x19394f=_0x326555[_0x0e94('0x2d')]&&_0x101aea[_0x0e94('0x15')]>0x1;var _0x3fb4e7=[];if(!fs[_0x0e94('0x37')](path[_0x0e94('0x38')](_0x2492f4,_0x54e489))&&_0x19394f){fs[_0x0e94('0x39')](path[_0x0e94('0x38')](_0x2492f4,_0x54e489));}return BPromise[_0x0e94('0x3a')](_0x101aea,function(_0x5f11d7){_0x3fb4e7[_0x0e94('0x18')](_0x5f11d7);})[_0x0e94('0x2c')](function(){var _0x5b8cff=[];for(var _0x59af59=0x0;_0x59af59<_0x3fb4e7[_0x0e94('0x15')];_0x59af59+=0x1){var _0x2431ae=_0x3fb4e7[_0x59af59];var _0x962e36=createTables(_[_0x0e94('0x3b')](_0x2431ae));var _0x363d0f;var _0x4aa140=getPDFDocDefinition(_0x962e36);var _0xb2a211=getPDFPrinter();var _0x3761b4=_0xb2a211['createPdfKitDocument'](_0x4aa140);if(_0x19394f){_0x363d0f=path[_0x0e94('0x38')](_0x2492f4,_0x54e489,util[_0x0e94('0x1d')](_0x0e94('0x3c'),_0x54e489,_0x59af59,_0x0e94('0x3d')));}else{_0x363d0f=path['join'](_0x2492f4,util[_0x0e94('0x1d')]('%s.%s',_0x54e489,_0x0e94('0x3d')));}_0x5b8cff['push'](writePDFDocument(_0x3761b4,_0x363d0f));}return Promise[_0x0e94('0x3e')](_0x5b8cff);})[_0x0e94('0x2c')](function(){if(_0x19394f){return new Promise(function(_0x24559c){zipdir(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),{'saveTo':path[_0x0e94('0x38')](_0x2492f4,util[_0x0e94('0x1d')]('%s.%s',_0x54e489,_0x0e94('0x3f')))},function(){rimraf(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),function(){});_0x24559c('zip\x20finished');});});}})[_0x0e94('0x2c')](function(){if(!_0x19394f)return;rimraf(path[_0x0e94('0x38')](_0x2492f4,_0x54e489),function(){});})[_0x0e94('0x2c')](function(){logger[_0x0e94('0x40')](util[_0x0e94('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x0e94('0x41')));return analyticExtractedReport(_0x0e94('0x42'),_0x19394f?util[_0x0e94('0x1d')](_0x0e94('0x43'),_0x54e489,_0x19394f?'zip':_0x0e94('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x0e94('0x1d')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x0e94('0x41')));return db[_0x0e94('0xf')][_0x0e94('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x0e94('0x2c')](function(_0x3ab319){EXTRACTED_REPORT=_0x3ab319;return dbH[_0x0e94('0x33')]['query'](util['format'](_0x0e94('0x45'),QUERY),{'type':dbH[_0x0e94('0x33')][_0x0e94('0x46')][_0x0e94('0x32')]});})[_0x0e94('0x2c')](extractReport)[_0x0e94('0x47')](function(_0x465a16){logger['info'](util[_0x0e94('0x1d')](_0x0e94('0x48'),EXTRACTED_REPORT_ID,_0x0e94('0x41')),util['inspect'](_0x465a16,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x0e94('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1add62=new PdfPrinter({'Arial':{'normal':__dirname+_0x0e94('0x4a'),'bold':__dirname+_0x0e94('0x4b'),'italics':__dirname+_0x0e94('0x4c'),'bolditalics':__dirname+_0x0e94('0x4d')}});return _0x1add62;}function getPDFDocDefinitionFromHTML(_0x1eb46e,_0x4f3b50){var _0x3c6dda=util[_0x0e94('0x1d')](_0x0e94('0x4e'),_0x4f3b50[_0x0e94('0x4f')],_0x4f3b50[_0x0e94('0x50')]);var _0x11cddf=moment()[_0x0e94('0x1d')](_0x0e94('0x51'))[_0x0e94('0x12')]();var _0x467163=htmlToPdfmake(_0x1eb46e,{'window':window,'tableAutoSize':!![]});return{'content':[_0x467163],'defaultStyle':{'font':_0x0e94('0x52')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x0e94('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x0e94('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x0e94('0x53')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x0e94('0x22')}];},'footer':function(_0x54ddd8,_0x112272){return[{'text':util['format'](_0x0e94('0x54'),_0x3c6dda,_0x54ddd8,_0x112272,_0x11cddf),'style':_0x0e94('0x26')}];}};}function writePDFDocument(_0x4c076c,_0x3d5d18){return new Promise(function(_0x81e719,_0x3971e2){var _0x23613c=_0x4c076c[_0x0e94('0x55')](fs['createWriteStream'](_0x3d5d18));_0x23613c['on']('finish',function(){_0x81e719(_0x0e94('0x56'));});_0x23613c['on'](_0x0e94('0x57'),function(_0x301e0e){_0x3971e2(_0x301e0e);});_0x4c076c[_0x0e94('0x58')]();});}exports[_0x0e94('0x59')]=function(_0x425ad1,_0x7e4463){var _0x16639f=getPDFPrinter();var _0x4dfc55=getPDFDocDefinitionFromHTML(_0x425ad1,_0x7e4463);var _0x44c7a0=_0x16639f['createPdfKitDocument'](_0x4dfc55);return writePDFDocument(_0x44c7a0,_0x7e4463[_0x0e94('0x2')])['catch'](function(_0x3b84ba){throw _0x3b84ba;});};
\ No newline at end of file
index 3bf9523..7790159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb74=['writeFileSync','binary','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','forEach','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','xlsx','%s.%s'];(function(_0x2e4646,_0x32ae67){var _0xe11f40=function(_0x9a7d9d){while(--_0x9a7d9d){_0x2e4646['push'](_0x2e4646['shift']());}};_0xe11f40(++_0x32ae67);}(_0xeb74,0xe3));var _0x4eb7=function(_0x425cb7,_0x13d1b8){_0x425cb7=_0x425cb7-0x0;var _0x56e7ba=_0xeb74[_0x425cb7];return _0x56e7ba;};'use strict';var util=require(_0x4eb7('0x0'));var path=require(_0x4eb7('0x1'));var _=require(_0x4eb7('0x2'));var fs=require('fs');var json2xls=require(_0x4eb7('0x3'));var BPromise=require(_0x4eb7('0x4'));var zipdir=require(_0x4eb7('0x5'));var rimraf=require(_0x4eb7('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4eb7('0x7'))[_0x4eb7('0x8')];var logger=require(_0x4eb7('0x9'))(_0x4eb7('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x4eb7('0xb')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x4eb7('0xb')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x54859c,_0xcac7c5){var _0x2cffe7={'status':_0x54859c};var _0x588a1c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xcac7c5){_0x2cffe7['savename']=_0xcac7c5;}return db[_0x4eb7('0xc')][_0x4eb7('0xd')](_0x2cffe7,_0x588a1c);}function main(){var _0x4b3add=0x1388;var _0xa72e98;logger['info'](util[_0x4eb7('0xe')](_0x4eb7('0xf'),EXTRACTED_REPORT_ID,_0x4eb7('0x10')));return db['Setting'][_0x4eb7('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4eb7('0x12'),_0x4eb7('0x13')]})[_0x4eb7('0x14')](function(_0x35fa89){if(_0x35fa89){_0xa72e98=_0x35fa89;_0x4b3add=_0xa72e98[_0x4eb7('0x13')]||0x1388;}})[_0x4eb7('0x14')](function(){return dbH['sequelize']['query'](util['format'](_0x4eb7('0x15'),QUERY),{'type':dbH['sequelize'][_0x4eb7('0x16')][_0x4eb7('0x17')]});})[_0x4eb7('0x14')](function(_0x1c4a97){if(!_0x1c4a97[0x0][_0x4eb7('0x18')]){return analyticExtractedReport(_0x4eb7('0x19'));}var _0x11674f=[];var _0x76988=0x0;if(_0xa72e98[_0x4eb7('0x12')]){if(_0x1c4a97&&_0x1c4a97[_0x4eb7('0x1a')]){var _0x5f1711=_[_0x4eb7('0x1b')](_0x1c4a97[0x0][_0x4eb7('0x18')]/_0x4b3add);var _0x3b6d41=Number[_0x4eb7('0x1c')](_0x1c4a97[0x0][_0x4eb7('0x18')]/_0x4b3add)?_0x1c4a97[0x0][_0x4eb7('0x18')]%_0x4b3add:0x0;_0x5f1711[_0x4eb7('0x1d')](function(_0x16c024){if(_0x16c024>0x0){_0x76988+=_0x4b3add;}_0x11674f['push'](dbH[_0x4eb7('0x1e')][_0x4eb7('0x1f')](util[_0x4eb7('0xe')](_0x4eb7('0x20'),QUERY,_0x4b3add,_0x76988),{'type':dbH[_0x4eb7('0x1e')][_0x4eb7('0x16')][_0x4eb7('0x17')]}));});if(_0x3b6d41>0x0){_0x76988+=_0x4b3add;_0x11674f['push'](dbH[_0x4eb7('0x1e')][_0x4eb7('0x1f')](util[_0x4eb7('0xe')](_0x4eb7('0x20'),QUERY,_0x3b6d41,_0x76988),{'type':dbH[_0x4eb7('0x1e')][_0x4eb7('0x16')][_0x4eb7('0x17')]}));}}}else{_0x11674f[_0x4eb7('0x21')](dbH[_0x4eb7('0x1e')][_0x4eb7('0x1f')](QUERY,{'type':dbH['sequelize'][_0x4eb7('0x16')][_0x4eb7('0x17')]}));}var _0x2e8de8=path[_0x4eb7('0x22')](PATH);var _0x3e0da2=path[_0x4eb7('0x23')](PATH,_0x4eb7('0x24'));var _0xe9db8=_0xa72e98[_0x4eb7('0x12')]&&_0x11674f[_0x4eb7('0x1a')]>0x1;var _0xf83c11=[];if(!fs[_0x4eb7('0x25')](path[_0x4eb7('0x26')](_0x2e8de8,_0x3e0da2))&&_0xe9db8){fs[_0x4eb7('0x27')](path[_0x4eb7('0x26')](_0x2e8de8,_0x3e0da2));}return BPromise[_0x4eb7('0x28')](_0x11674f,function(_0x2be00c){_0xf83c11[_0x4eb7('0x21')](_0x2be00c);})[_0x4eb7('0x14')](function(){for(var _0x28fda8=0x0;_0x28fda8<_0xf83c11[_0x4eb7('0x1a')];_0x28fda8+=0x1){var _0x17030a;var _0x3ed224=_0xf83c11[_0x28fda8];if(_0xe9db8){_0x17030a=path['join'](_0x2e8de8,_0x3e0da2,util[_0x4eb7('0xe')]('%s%d.%s',_0x3e0da2,_0x28fda8,_0x4eb7('0x29')));}else{_0x17030a=path[_0x4eb7('0x26')](_0x2e8de8,util[_0x4eb7('0xe')](_0x4eb7('0x2a'),_0x3e0da2,_0x4eb7('0x29')));}fs[_0x4eb7('0x2b')](_0x17030a,json2xls(_0x3ed224),_0x4eb7('0x2c'));}})[_0x4eb7('0x14')](function(){if(_0xe9db8){return new Promise(function(_0x264c0b){zipdir(path['join'](_0x2e8de8,_0x3e0da2),{'saveTo':path[_0x4eb7('0x26')](_0x2e8de8,util['format'](_0x4eb7('0x2a'),_0x3e0da2,_0x4eb7('0x2d')))},function(_0x560b56,_0x58a8f0){rimraf(path[_0x4eb7('0x26')](_0x2e8de8,_0x3e0da2),function(){});_0x264c0b(_0x4eb7('0x2e'));});});}})[_0x4eb7('0x14')](function(){logger[_0x4eb7('0x2f')](util['format'](_0x4eb7('0x30'),EXTRACTED_REPORT_ID,_0x4eb7('0x10')));return analyticExtractedReport(_0x4eb7('0x31'),_0xe9db8?util[_0x4eb7('0xe')](_0x4eb7('0x2a'),_0x3e0da2,_0xe9db8?'zip':_0x4eb7('0x29')):null);});})[_0x4eb7('0x32')](function(_0x31cc6d){logger['info'](util[_0x4eb7('0xe')](_0x4eb7('0x33'),EXTRACTED_REPORT_ID,_0x4eb7('0x10')),util['inspect'](_0x31cc6d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4eb7('0x34'));})['finally'](function(){process[_0x4eb7('0x35')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xae9e=['basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','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','finally','exit','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','length','range','isInteger','forEach','push','dirname'];(function(_0x411d6e,_0x3febf6){var _0x1e2887=function(_0x95a6cc){while(--_0x95a6cc){_0x411d6e['push'](_0x411d6e['shift']());}};_0x1e2887(++_0x3febf6);}(_0xae9e,0xbd));var _0xeae9=function(_0x3236b5,_0x3f11e1){_0x3236b5=_0x3236b5-0x0;var _0x528e20=_0xae9e[_0x3236b5];return _0x528e20;};'use strict';var util=require('util');var path=require(_0xeae9('0x0'));var _=require(_0xeae9('0x1'));var fs=require('fs');var json2xls=require(_0xeae9('0x2'));var BPromise=require('bluebird');var zipdir=require(_0xeae9('0x3'));var rimraf=require(_0xeae9('0x4'));var db=require(_0xeae9('0x5'))['db'];var dbH=require(_0xeae9('0x5'))[_0xeae9('0x6')];var logger=require(_0xeae9('0x7'))(_0xeae9('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xeae9('0x9')][0x2]);var QUERY=process[_0xeae9('0x9')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3b027d,_0x5afaf4){var _0x2e6ef0={'status':_0x3b027d};var _0x555d80={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5afaf4){_0x2e6ef0[_0xeae9('0xa')]=_0x5afaf4;}return db[_0xeae9('0xb')][_0xeae9('0xc')](_0x2e6ef0,_0x555d80);}function main(){var _0x19aecc=0x1388;var _0x5bddc9;logger[_0xeae9('0xd')](util['format'](_0xeae9('0xe'),EXTRACTED_REPORT_ID,_0xeae9('0xf')));return db[_0xeae9('0x10')][_0xeae9('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xeae9('0x12')]})[_0xeae9('0x13')](function(_0x2d5478){if(_0x2d5478){_0x5bddc9=_0x2d5478;_0x19aecc=_0x5bddc9['splitSizeXlsx']||0x1388;}})[_0xeae9('0x13')](function(){return dbH[_0xeae9('0x14')][_0xeae9('0x15')](util[_0xeae9('0x16')](_0xeae9('0x17'),QUERY),{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]});})[_0xeae9('0x13')](function(_0x286132){if(!_0x286132[0x0][_0xeae9('0x1a')]){return analyticExtractedReport(_0xeae9('0x1b'));}var _0x3d639b=[];var _0x3cf03d=0x0;if(_0x5bddc9[_0xeae9('0x1c')]){if(_0x286132&&_0x286132[_0xeae9('0x1d')]){var _0x245e6a=_[_0xeae9('0x1e')](_0x286132[0x0][_0xeae9('0x1a')]/_0x19aecc);var _0x10b3db=Number[_0xeae9('0x1f')](_0x286132[0x0][_0xeae9('0x1a')]/_0x19aecc)?_0x286132[0x0]['num']%_0x19aecc:0x0;_0x245e6a[_0xeae9('0x20')](function(_0x15d483){if(_0x15d483>0x0){_0x3cf03d+=_0x19aecc;}_0x3d639b[_0xeae9('0x21')](dbH[_0xeae9('0x14')][_0xeae9('0x15')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x19aecc,_0x3cf03d),{'type':dbH[_0xeae9('0x14')]['QueryTypes']['SELECT']}));});if(_0x10b3db>0x0){_0x3cf03d+=_0x19aecc;_0x3d639b[_0xeae9('0x21')](dbH[_0xeae9('0x14')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x10b3db,_0x3cf03d),{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]}));}}}else{_0x3d639b['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xeae9('0x14')][_0xeae9('0x18')][_0xeae9('0x19')]}));}var _0x108b04=path[_0xeae9('0x22')](PATH);var _0x3a8a7d=path[_0xeae9('0x23')](PATH,_0xeae9('0x24'));var _0x15ef08=_0x5bddc9[_0xeae9('0x1c')]&&_0x3d639b[_0xeae9('0x1d')]>0x1;var _0x2ee6c8=[];if(!fs[_0xeae9('0x25')](path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d))&&_0x15ef08){fs[_0xeae9('0x27')](path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d));}return BPromise[_0xeae9('0x28')](_0x3d639b,function(_0x3d816f){_0x2ee6c8[_0xeae9('0x21')](_0x3d816f);})[_0xeae9('0x13')](function(){for(var _0x543479=0x0;_0x543479<_0x2ee6c8[_0xeae9('0x1d')];_0x543479+=0x1){var _0x1e32b1;var _0x2fcd94=_0x2ee6c8[_0x543479];if(_0x15ef08){_0x1e32b1=path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d,util[_0xeae9('0x16')](_0xeae9('0x29'),_0x3a8a7d,_0x543479,_0xeae9('0x2a')));}else{_0x1e32b1=path[_0xeae9('0x26')](_0x108b04,util['format'](_0xeae9('0x2b'),_0x3a8a7d,_0xeae9('0x2a')));}fs[_0xeae9('0x2c')](_0x1e32b1,json2xls(_0x2fcd94),_0xeae9('0x2d'));}})[_0xeae9('0x13')](function(){if(_0x15ef08){return new Promise(function(_0x548d25){zipdir(path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d),{'saveTo':path[_0xeae9('0x26')](_0x108b04,util['format']('%s.%s',_0x3a8a7d,_0xeae9('0x2e')))},function(_0x3bd249,_0x257d1a){rimraf(path[_0xeae9('0x26')](_0x108b04,_0x3a8a7d),function(){});_0x548d25(_0xeae9('0x2f'));});});}})[_0xeae9('0x13')](function(){logger['info'](util[_0xeae9('0x16')](_0xeae9('0x30'),EXTRACTED_REPORT_ID,_0xeae9('0xf')));return analyticExtractedReport(_0xeae9('0x31'),_0x15ef08?util[_0xeae9('0x16')](_0xeae9('0x2b'),_0x3a8a7d,_0x15ef08?_0xeae9('0x2e'):'xlsx'):null);});})[_0xeae9('0x32')](function(_0xe517c6){logger[_0xeae9('0xd')](util[_0xeae9('0x16')](_0xeae9('0x33'),EXTRACTED_REPORT_ID,_0xeae9('0xf')),util[_0xeae9('0x34')](_0xe517c6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xeae9('0x35'));})[_0xeae9('0x36')](function(){process[_0xeae9('0x37')](EXIT_CODE);});}main();
\ No newline at end of file
index 5981d33..89411cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d9e=['tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','length','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','transaction','destroy','sortBy','catch','error','rewrite','lodash','util','Interval','then','intervals','models','VoiceExtension','findAll','uniq','map','exten','filter','groupBy','queue','playback','hasOwnProperty','extension','find','extensions','Set','format','CDR(type)=%s','type','priority','VoiceExtensionId','push','CDR(routeid)=','context','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','createdAt','updatedAt','interval','*,*,*,*','IntervalId'];(function(_0x2e1285,_0x12ee04){var _0x5d3df2=function(_0x2f75a8){while(--_0x2f75a8){_0x2e1285['push'](_0x2e1285['shift']());}};_0x5d3df2(++_0x12ee04);}(_0x3d9e,0x145));var _0xe3d9=function(_0x32b122,_0x1ad490){_0x32b122=_0x32b122-0x0;var _0x4ad25a=_0x3d9e[_0x32b122];return _0x4ad25a;};'use strict';var _=require(_0xe3d9('0x0'));var util=require(_0xe3d9('0x1'));function rewrite(_0x4c4d07,_0x47a6e4){var _0x544dc9=this;return _0x4c4d07['models'][_0xe3d9('0x2')]['findAll']({'raw':!![]})[_0xe3d9('0x3')](function(_0x34f230){_0x544dc9[_0xe3d9('0x4')]=_0x34f230;return _0x4c4d07[_0xe3d9('0x5')][_0xe3d9('0x6')]['findAll']({'where':{'IntervalId':_0x47a6e4['IntervalId']},'raw':!![]});})[_0xe3d9('0x3')](function(_0x265870){return _0x4c4d07[_0xe3d9('0x5')][_0xe3d9('0x6')][_0xe3d9('0x7')]({'where':{'exten':{'$in':_[_0xe3d9('0x8')](_[_0xe3d9('0x9')](_0x265870,_0xe3d9('0xa')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0xe3d9('0x3')](function(_0x29bca7){var _0x3432e7=_[_0xe3d9('0xb')](_0x29bca7,{'priority':'1'});var _0x100dd7=_[_0xe3d9('0xb')](_0x29bca7,{'isApp':0x1});var _0x4639aa=_[_0xe3d9('0xc')](_0x100dd7,_0xe3d9('0xa'));var _0x1675c7=[_0xe3d9('0xd'),_0xe3d9('0xe')];var _0x2a1aba=[];var _0x4133d3=[];for(var _0x557a7a in _0x4639aa){if(_0x4639aa[_0xe3d9('0xf')](_0x557a7a)){_0x544dc9['priority']=0x2;_0x544dc9['extensions']=[];_0x544dc9[_0xe3d9('0x10')]=_[_0xe3d9('0x11')](_0x3432e7,{'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')]});_0x544dc9[_0xe3d9('0x12')]['push']({'type':_0x4639aa[_0x557a7a][0x0]['type'],'app':_0xe3d9('0x13'),'appdata':util[_0xe3d9('0x14')](_0xe3d9('0x15'),_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')]),'context':_0x4639aa[_0x557a7a][0x0]['context'],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});if(_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')]==='inbound'){_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x1a')+_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')],'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9['priority']++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0]['VoiceExtensionId']});}else if(_0x4639aa[_0x557a7a][0x0]['type']==='outbound'){if(_0x544dc9['extension']){_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':'Set','appdata':_0xe3d9('0x1c')+(_0x544dc9[_0xe3d9('0x10')][_0xe3d9('0x1d')]?_0xe3d9('0x1e')+_0x544dc9[_0xe3d9('0x10')]['cutdigits']+'}':_0xe3d9('0x1f')),'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0]['exten'],'priority':_0x544dc9['priority']++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});}_0x544dc9['extensions'][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0]['type'],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x1a')+_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')],'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0]['exten'],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0]['VoiceExtensionId']});var _0x2e5810=_0x544dc9[_0xe3d9('0x17')]++;_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x20'),'appdata':_0xe3d9('0x21')+(_0x2e5810+0x2)+_0xe3d9('0x22')+(_0x2e5810+0x1)+')','context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x2e5810,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});if(_0x544dc9[_0xe3d9('0x10')]){_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0x544dc9[_0xe3d9('0x10')][_0xe3d9('0x1d')]?_0xe3d9('0x23')+_0x544dc9[_0xe3d9('0x10')][_0xe3d9('0x1d')]+'}':_0xe3d9('0x24'),'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});}_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0]['type'],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x25')+_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')],'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9['priority']++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});if(_0x544dc9[_0xe3d9('0x10')]&&_0x544dc9[_0xe3d9('0x10')][_0xe3d9('0xf')](_0xe3d9('0x26'))&&_0x544dc9['extension'][_0xe3d9('0x26')]!==_0xe3d9('0x27')){_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0]['type'],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x28'),'context':_0x4639aa[_0x557a7a][0x0]['context'],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x29')+_0x544dc9[_0xe3d9('0x10')][_0xe3d9('0x26')]||_0xe3d9('0x2a'),'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9['priority']++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0]['VoiceExtensionId']});}}_0x544dc9['extensions'][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x2b'),'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'exten':_0x4639aa[_0x557a7a][0x0]['exten'],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0]['VoiceExtensionId']});_0x544dc9[_0xe3d9('0x12')][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x2c'),'context':_0x4639aa[_0x557a7a][0x0]['context'],'exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'priority':_0x544dc9[_0xe3d9('0x17')]++,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});for(var _0x10a19a=0x0,_0xbe31d6=0x0;_0x10a19a<_0x4639aa[_0x557a7a]['length'];_0x10a19a+=0x1,_0xbe31d6=0x0){var _0x39fc49=_0x4639aa[_0x557a7a][_0x10a19a];if(_0x39fc49[_0xe3d9('0x16')]){_0x39fc49[_0xe3d9('0x16')]=_0x39fc49[_0xe3d9('0x16')]['toLowerCase']();}var _0x13231f=[];var _0x4eaeb7=[];delete _0x39fc49['id'];delete _0x39fc49[_0xe3d9('0x2d')];delete _0x39fc49[_0xe3d9('0x2e')];var _0x108be3=_0x39fc49[_0xe3d9('0x2f')]!==_0xe3d9('0x30')?[_0x39fc49[_0xe3d9('0x2f')]]:_0x39fc49['IntervalId']?_[_0xe3d9('0x9')](_[_0xe3d9('0xb')](_0x544dc9[_0xe3d9('0x4')],{'IntervalId':_0x39fc49[_0xe3d9('0x31')]}),'interval'):[];if(_0x39fc49[_0xe3d9('0xf')](_0xe3d9('0x32'))){if(_0x39fc49['tag']&&_0x39fc49['tag']!=='--'){_0x13231f[_0xe3d9('0x19')]({'type':_0x39fc49[_0xe3d9('0x16')],'app':'Set','appdata':_0xe3d9('0x33')+_0x39fc49[_0xe3d9('0x32')],'context':_0x39fc49[_0xe3d9('0x1b')],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3['length']+_0x544dc9[_0xe3d9('0x17')]+_0xbe31d6++,'VoiceExtensionId':_0x39fc49['VoiceExtensionId']});}}if(_0x39fc49[_0xe3d9('0x16')]==='outbound'&&_0x39fc49[_0xe3d9('0xf')](_0xe3d9('0x34'))){if(_0x39fc49[_0xe3d9('0x34')]){_0x13231f[_0xe3d9('0x19')]({'type':_0x39fc49['type'],'app':_0xe3d9('0x20'),'appdata':_0xe3d9('0x35')+_0x39fc49['callerID']+')','context':_0x39fc49[_0xe3d9('0x1b')],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3[_0xe3d9('0x36')]+_0x544dc9['priority']+_0xbe31d6++,'VoiceExtensionId':_0x39fc49[_0xe3d9('0x18')]});}else{_0x13231f['push']({'type':_0x39fc49[_0xe3d9('0x16')],'app':'ExecIf','appdata':_0xe3d9('0x37'),'context':_0x39fc49[_0xe3d9('0x1b')],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3[_0xe3d9('0x36')]+_0x544dc9[_0xe3d9('0x17')]+_0xbe31d6++,'VoiceExtensionId':_0x39fc49[_0xe3d9('0x18')]});}}if(_0x39fc49[_0xe3d9('0xf')](_0xe3d9('0x38'))){if(_0x1675c7[_0xe3d9('0x39')](_0x39fc49[_0xe3d9('0x3a')][_0xe3d9('0x3b')]())>=0x0&&_0x39fc49[_0xe3d9('0x3c')]!==_0xe3d9('0x3d')){if(_0x39fc49[_0xe3d9('0x38')]){_0x13231f['push']({'type':_0x39fc49[_0xe3d9('0x16')],'app':_0xe3d9('0x20'),'appdata':_0xe3d9('0x3e'),'context':_0x39fc49['context'],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3[_0xe3d9('0x36')]+_0x544dc9[_0xe3d9('0x17')]+_0xbe31d6++,'VoiceExtensionId':_0x39fc49[_0xe3d9('0x18')]});_0x13231f['push']({'type':_0x39fc49[_0xe3d9('0x16')],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x3f'),'context':_0x39fc49[_0xe3d9('0x1b')],'exten':_0x39fc49['exten'],'priority':_0x108be3['length']+_0x544dc9['priority']+_0xbe31d6++,'VoiceExtensionId':_0x39fc49['VoiceExtensionId']});}else{_0x13231f['push']({'type':_0x39fc49[_0xe3d9('0x16')],'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x39fc49['context'],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3[_0xe3d9('0x36')]+_0x544dc9[_0xe3d9('0x17')]+_0xbe31d6++,'VoiceExtensionId':_0x39fc49[_0xe3d9('0x18')]});_0x13231f[_0xe3d9('0x19')]({'type':_0x39fc49['type'],'app':_0xe3d9('0x13'),'appdata':_0xe3d9('0x40'),'context':_0x39fc49[_0xe3d9('0x1b')],'exten':_0x39fc49[_0xe3d9('0xa')],'priority':_0x108be3[_0xe3d9('0x36')]+_0x544dc9[_0xe3d9('0x17')]+_0xbe31d6++,'VoiceExtensionId':_0x39fc49['VoiceExtensionId']});}}}for(var _0x58bd4e=0x0;_0x58bd4e<_0x108be3[_0xe3d9('0x36')];_0x58bd4e+=0x1){var _0x2f91b5=_0x544dc9[_0xe3d9('0x17')]+_0x108be3[_0xe3d9('0x36')];var _0x1ffc3b=_0x58bd4e===_0x108be3['length']-0x1?_0x544dc9[_0xe3d9('0x17')]+_0x13231f['length']+_0x4eaeb7[_0xe3d9('0x36')]+0x2:_0x544dc9[_0xe3d9('0x17')]+_0x58bd4e+0x1;_0x13231f[_0xe3d9('0x41')](_0x58bd4e,0x0,{'type':_0x39fc49['type'],'app':'GotoIfTime','appdata':_0x108be3[_0x58bd4e]+'?'+_0x39fc49['context']+',${EXTEN},'+_0x2f91b5+':'+_0x39fc49['context']+_0xe3d9('0x42')+_0x1ffc3b,'exten':_0x39fc49[_0xe3d9('0xa')],'context':_0x39fc49[_0xe3d9('0x1b')],'priority':_0x544dc9[_0xe3d9('0x17')]+_0x58bd4e,'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});}_0x39fc49[_0xe3d9('0x17')]=_0x13231f[_0xe3d9('0x36')]?_['last'](_0x13231f)[_0xe3d9('0x17')]+0x1:_0x544dc9[_0xe3d9('0x17')];_0x544dc9['priority']=(_0x4eaeb7[_0xe3d9('0x36')]?_[_0xe3d9('0x43')](_0x4eaeb7)[_0xe3d9('0x17')]:_0x39fc49[_0xe3d9('0x17')])+0x1;_0x544dc9['extensions']=_[_0xe3d9('0x44')](_0x544dc9['extensions'],_0x13231f,[_0x39fc49],_0x4eaeb7);}_0x544dc9['extensions'][_0xe3d9('0x19')]({'type':_0x4639aa[_0x557a7a][0x0]['type'],'app':'Hangup','exten':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0xa')],'context':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x1b')],'priority':_0x544dc9['priority'],'VoiceExtensionId':_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]});_0x2a1aba[_0xe3d9('0x19')](_0x4639aa[_0x557a7a][0x0][_0xe3d9('0x18')]);_0x4133d3=_['concat'](_0x4133d3,_0x544dc9[_0xe3d9('0x12')]);}}return _0x4c4d07[_0xe3d9('0x45')](function(_0x3ec356){return _0x4c4d07[_0xe3d9('0x5')][_0xe3d9('0x6')][_0xe3d9('0x46')]({'where':{'VoiceExtensionId':{'$in':_0x2a1aba}},'transaction':_0x3ec356})[_0xe3d9('0x3')](function(_0x156937){return _0x4c4d07[_0xe3d9('0x5')][_0xe3d9('0x6')]['bulkCreate'](_[_0xe3d9('0x47')](_0x4133d3,'priority'),{'transaction':_0x3ec356});});});})[_0xe3d9('0x48')](function(_0x133693){console[_0xe3d9('0x49')](_0x133693);});}exports[_0xe3d9('0x4a')]=rewrite;
\ No newline at end of file
+var _0xb2ec=['$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','appType','custom','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','destroy','bulkCreate','sortBy','catch','error','lodash','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','exten','queue','playback','hasOwnProperty','priority','extensions','extension','find','type','CDR(type)=%s','context','VoiceExtensionId','inbound','push','Set','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb2ec,0xa2));var _0xcb2e=function(_0x2e0435,_0x560036){_0x2e0435=_0x2e0435-0x0;var _0x500586=_0xb2ec[_0x2e0435];return _0x500586;};'use strict';var _=require(_0xcb2e('0x0'));var util=require('util');function rewrite(_0x5f5830,_0x268d5b){var _0x19982e=this;return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x2')][_0xcb2e('0x3')]({'raw':!![]})[_0xcb2e('0x4')](function(_0x3c5f3a){_0x19982e[_0xcb2e('0x5')]=_0x3c5f3a;return _0x5f5830['models'][_0xcb2e('0x6')][_0xcb2e('0x3')]({'where':{'IntervalId':_0x268d5b[_0xcb2e('0x7')]},'raw':!![]});})[_0xcb2e('0x4')](function(_0x342cb6){return _0x5f5830['models']['VoiceExtension'][_0xcb2e('0x3')]({'where':{'exten':{'$in':_[_0xcb2e('0x8')](_[_0xcb2e('0x9')](_0x342cb6,'exten'))}},'order':[{'raw':_0xcb2e('0xa')}],'raw':!![]});})[_0xcb2e('0x4')](function(_0x38a170){var _0xd3f289=_[_0xcb2e('0xb')](_0x38a170,{'priority':'1'});var _0x260c48=_['filter'](_0x38a170,{'isApp':0x1});var _0x396247=_['groupBy'](_0x260c48,_0xcb2e('0xc'));var _0xb8a229=[_0xcb2e('0xd'),_0xcb2e('0xe')];var _0xca9c26=[];var _0x57939e=[];for(var _0x3ccb42 in _0x396247){if(_0x396247[_0xcb2e('0xf')](_0x3ccb42)){_0x19982e[_0xcb2e('0x10')]=0x2;_0x19982e[_0xcb2e('0x11')]=[];_0x19982e[_0xcb2e('0x12')]=_[_0xcb2e('0x13')](_0xd3f289,{'exten':_0x396247[_0x3ccb42][0x0]['exten']});_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':'Set','appdata':util['format'](_0xcb2e('0x15'),_0x396247[_0x3ccb42][0x0]['type']),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});if(_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')]===_0xcb2e('0x18')){_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x1b')+_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}else if(_0x396247[_0x3ccb42][0x0]['type']===_0xcb2e('0x1c')){if(_0x19982e[_0xcb2e('0x12')]){_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x1d')+(_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]?_0xcb2e('0x1f')+_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]+'}':_0xcb2e('0x20')),'context':_0x396247[_0x3ccb42][0x0]['context'],'exten':_0x396247[_0x3ccb42][0x0]['exten'],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});}_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':'Set','appdata':_0xcb2e('0x1b')+_0x396247[_0x3ccb42][0x0]['VoiceExtensionId'],'context':_0x396247[_0x3ccb42][0x0]['context'],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});var _0x3d76e0=_0x19982e['priority']++;_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x21'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x3d76e0+0x2)+_0xcb2e('0x22')+(_0x3d76e0+0x1)+')','context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x3d76e0,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});if(_0x19982e['extension']){_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]?_0xcb2e('0x23')+_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x1e')]+'}':_0xcb2e('0x24'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0]['exten'],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});}_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x25')+_0x396247[_0x3ccb42][0x0]['VoiceExtensionId'],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});if(_0x19982e[_0xcb2e('0x12')]&&_0x19982e[_0xcb2e('0x12')]['hasOwnProperty'](_0xcb2e('0x26'))&&_0x19982e[_0xcb2e('0x12')][_0xcb2e('0x26')]!=='none'){_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x27'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0]['type'],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x28')+_0x19982e[_0xcb2e('0x12')]['recordingFormat']||_0xcb2e('0x29'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}}_0x19982e[_0xcb2e('0x11')][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x2a'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e['priority']++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0x19982e['extensions'][_0xcb2e('0x19')]({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x2b'),'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'exten':_0x396247[_0x3ccb42][0x0][_0xcb2e('0xc')],'priority':_0x19982e[_0xcb2e('0x10')]++,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0]['VoiceExtensionId']});for(var _0x401b3e=0x0,_0x3b3e33=0x0;_0x401b3e<_0x396247[_0x3ccb42][_0xcb2e('0x2c')];_0x401b3e+=0x1,_0x3b3e33=0x0){var _0x466d63=_0x396247[_0x3ccb42][_0x401b3e];if(_0x466d63['type']){_0x466d63[_0xcb2e('0x14')]=_0x466d63[_0xcb2e('0x14')][_0xcb2e('0x2d')]();}var _0x5a18f5=[];var _0xe4bc2=[];delete _0x466d63['id'];delete _0x466d63[_0xcb2e('0x2e')];delete _0x466d63[_0xcb2e('0x2f')];var _0x73efbe=_0x466d63[_0xcb2e('0x30')]!==_0xcb2e('0x31')?[_0x466d63['interval']]:_0x466d63[_0xcb2e('0x7')]?_[_0xcb2e('0x9')](_[_0xcb2e('0xb')](_0x19982e['intervals'],{'IntervalId':_0x466d63[_0xcb2e('0x7')]}),'interval'):[];if(_0x466d63[_0xcb2e('0xf')](_0xcb2e('0x32'))){if(_0x466d63[_0xcb2e('0x32')]&&_0x466d63[_0xcb2e('0x32')]!=='--'){_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x33')+_0x466d63[_0xcb2e('0x32')],'context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}if(_0x466d63[_0xcb2e('0x14')]===_0xcb2e('0x1c')&&_0x466d63['hasOwnProperty'](_0xcb2e('0x34'))){if(_0x466d63['callerID']){_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x35')+_0x466d63[_0xcb2e('0x34')]+')','context':_0x466d63['context'],'exten':_0x466d63['exten'],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e['priority']+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}else{_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x36'),'context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e['priority']+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}if(_0x466d63[_0xcb2e('0xf')](_0xcb2e('0x37'))){if(_0xb8a229[_0xcb2e('0x38')](_0x466d63['app'][_0xcb2e('0x2d')]())>=0x0&&_0x466d63[_0xcb2e('0x39')]!==_0xcb2e('0x3a')){if(_0x466d63['answer']){_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x466d63['context'],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}else{_0x5a18f5['push']({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x21'),'appdata':_0xcb2e('0x3b'),'context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63[_0xcb2e('0xc')],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});_0x5a18f5[_0xcb2e('0x19')]({'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x1a'),'appdata':_0xcb2e('0x3c'),'context':_0x466d63[_0xcb2e('0x16')],'exten':_0x466d63['exten'],'priority':_0x73efbe[_0xcb2e('0x2c')]+_0x19982e[_0xcb2e('0x10')]+_0x3b3e33++,'VoiceExtensionId':_0x466d63[_0xcb2e('0x17')]});}}}for(var _0x19661f=0x0;_0x19661f<_0x73efbe[_0xcb2e('0x2c')];_0x19661f+=0x1){var _0x4e6529=_0x19982e[_0xcb2e('0x10')]+_0x73efbe[_0xcb2e('0x2c')];var _0x549fa8=_0x19661f===_0x73efbe[_0xcb2e('0x2c')]-0x1?_0x19982e[_0xcb2e('0x10')]+_0x5a18f5['length']+_0xe4bc2['length']+0x2:_0x19982e[_0xcb2e('0x10')]+_0x19661f+0x1;_0x5a18f5[_0xcb2e('0x3d')](_0x19661f,0x0,{'type':_0x466d63[_0xcb2e('0x14')],'app':_0xcb2e('0x3e'),'appdata':_0x73efbe[_0x19661f]+'?'+_0x466d63[_0xcb2e('0x16')]+_0xcb2e('0x3f')+_0x4e6529+':'+_0x466d63[_0xcb2e('0x16')]+_0xcb2e('0x3f')+_0x549fa8,'exten':_0x466d63[_0xcb2e('0xc')],'context':_0x466d63[_0xcb2e('0x16')],'priority':_0x19982e['priority']+_0x19661f,'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});}_0x466d63['priority']=_0x5a18f5[_0xcb2e('0x2c')]?_[_0xcb2e('0x40')](_0x5a18f5)['priority']+0x1:_0x19982e[_0xcb2e('0x10')];_0x19982e[_0xcb2e('0x10')]=(_0xe4bc2[_0xcb2e('0x2c')]?_[_0xcb2e('0x40')](_0xe4bc2)['priority']:_0x466d63[_0xcb2e('0x10')])+0x1;_0x19982e[_0xcb2e('0x11')]=_[_0xcb2e('0x41')](_0x19982e[_0xcb2e('0x11')],_0x5a18f5,[_0x466d63],_0xe4bc2);}_0x19982e[_0xcb2e('0x11')]['push']({'type':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x14')],'app':_0xcb2e('0x42'),'exten':_0x396247[_0x3ccb42][0x0]['exten'],'context':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x16')],'priority':_0x19982e[_0xcb2e('0x10')],'VoiceExtensionId':_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]});_0xca9c26[_0xcb2e('0x19')](_0x396247[_0x3ccb42][0x0][_0xcb2e('0x17')]);_0x57939e=_[_0xcb2e('0x41')](_0x57939e,_0x19982e[_0xcb2e('0x11')]);}}return _0x5f5830['transaction'](function(_0x36ad7f){return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x6')][_0xcb2e('0x43')]({'where':{'VoiceExtensionId':{'$in':_0xca9c26}},'transaction':_0x36ad7f})[_0xcb2e('0x4')](function(_0x2b6cc9){return _0x5f5830[_0xcb2e('0x1')][_0xcb2e('0x6')][_0xcb2e('0x44')](_[_0xcb2e('0x45')](_0x57939e,_0xcb2e('0x10')),{'transaction':_0x36ad7f});});});})[_0xcb2e('0x46')](function(_0x2e6fac){console[_0xcb2e('0x47')](_0x2e6fac);});}exports['rewrite']=rewrite;
\ No newline at end of file
index b0eaf91..0973a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1f1=['split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','test','isNil','errors','length','join','hasOwnProperty','data','firstName','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','CmContact','keys','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','inspect','insert','phone','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','into','cm_hopper','fromQuery','id\x20IN\x20?','calleridnum','cm_hopper_final','cm_hopper_black','str','findAll','CmList','Lists','dialCheckDuplicateType','always','push','sequelize','query','VoiceQueueId','onlyIfOpen','all','VoiceQueue','outbound','get','CampaignId','Campaign','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resolve','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','util','lodash','squel','papaparse','ioredis','../../../config/environment','../../../config/logger','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','Missing\x20filepath\x20parameter!','null','undefined','Missing\x20binding\x20parameters!','zipObject'];(function(_0x4fd7e6,_0x230ab1){var _0x5bb1ea=function(_0x4547c8){while(--_0x4547c8){_0x4fd7e6['push'](_0x4fd7e6['shift']());}};_0x5bb1ea(++_0x230ab1);}(_0xc1f1,0xc6));var _0x1c1f=function(_0x52ca59,_0x279dda){_0x52ca59=_0x52ca59-0x0;var _0x1ab7e5=_0xc1f1[_0x52ca59];return _0x1ab7e5;};'use strict';var BPromise=require(_0x1c1f('0x0'));var util=require(_0x1c1f('0x1'));var _=require(_0x1c1f('0x2'));var fs=require('fs');var squel=require(_0x1c1f('0x3'));var Papa=require(_0x1c1f('0x4'));var Redis=require(_0x1c1f('0x5'));var db=require('../../../mysqldb')['db'];var config=require(_0x1c1f('0x6'));var logger=require(_0x1c1f('0x7'))(_0x1c1f('0x8'));config[_0x1c1f('0x9')]=_['defaults'](config[_0x1c1f('0x9')],{'host':_0x1c1f('0xa'),'port':0x18eb});var socket=require(_0x1c1f('0xb'))(new Redis(config[_0x1c1f('0x9')]));require(_0x1c1f('0xc'))[_0x1c1f('0xd')](socket);try{if(!process[_0x1c1f('0xe')][0x2]||process['argv'][0x2]==='undefined'||process[_0x1c1f('0xe')][0x2]==='null'){throw new Error(_0x1c1f('0xf'));}var FILEPATH=process['argv'][0x2];if(!process[_0x1c1f('0xe')][0x3]||process[_0x1c1f('0xe')][0x3]==='undefined'||process[_0x1c1f('0xe')][0x3]===_0x1c1f('0x10')||!process['argv'][0x4]||process[_0x1c1f('0xe')][0x4]===_0x1c1f('0x11')||process[_0x1c1f('0xe')][0x4]===_0x1c1f('0x10')){throw new Error(_0x1c1f('0x12'));}var FIELDS=_[_0x1c1f('0x13')](process[_0x1c1f('0xe')][0x3]['split'](','),process[_0x1c1f('0xe')][0x4][_0x1c1f('0x14')](','));if(!process[_0x1c1f('0xe')][0x5]||process[_0x1c1f('0xe')][0x5]===_0x1c1f('0x11')||process[_0x1c1f('0xe')][0x5]===_0x1c1f('0x10')){throw new Error(_0x1c1f('0x15'));}var LISTID=process[_0x1c1f('0xe')][0x5];var COMPANYID=process[_0x1c1f('0xe')][0x6]&&process['argv'][0x6]!==_0x1c1f('0x11')&&process[_0x1c1f('0xe')][0x6]!==_0x1c1f('0x10')?process[_0x1c1f('0xe')][0x6]:null;var DUPLICATES=process[_0x1c1f('0xe')][0x7]&&process['argv'][0x7]!==_0x1c1f('0x11')&&process['argv'][0x7]!==_0x1c1f('0x10')?process[_0x1c1f('0xe')][0x7]:null;if(!process['argv'][0x8]||process[_0x1c1f('0xe')][0x8]==='undefined'||process[_0x1c1f('0xe')][0x8]===_0x1c1f('0x10')){throw new Error(_0x1c1f('0x16'));}var SOCKET_TIMESTAMP=process[_0x1c1f('0xe')][0x8];}catch(_0x45945f){logger[_0x1c1f('0x17')](_0x45945f);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(_0x5e43d3,_0x24fe5f,_0x1b35fc,_0x2d98a7){var _0x53c47b={'message':_0x24fe5f};_0x53c47b[_0x5e43d3]=!![];if(_0x1b35fc){_0x53c47b[_0x1c1f('0x18')]=_0x1b35fc;}if(_0x2d98a7){_0x53c47b['index']=_0x2d98a7;}return _0x53c47b;}function isEmail(_0x7901a3){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))*$/[_0x1c1f('0x19')](_0x7901a3);}function checkRow(_0xaaaad2,_0x5971ad,_0x2fa54e){return new BPromise(function(_0x32fd4b,_0x51a1fc){if(_[_0x1c1f('0x1a')](_0xaaaad2)){return _0x51a1fc(handleCheckRowError(_0x1c1f('0x17'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x2fa54e));}if(_0xaaaad2[_0x1c1f('0x1b')]&&_0xaaaad2[_0x1c1f('0x1b')][_0x1c1f('0x1c')]){var _0x31dcf1=_['map'](_0xaaaad2[_0x1c1f('0x1b')],'message')[_0x1c1f('0x1d')](';');return _0x51a1fc(handleCheckRowError(_0x1c1f('0x17'),_0x31dcf1,null,_0x2fa54e));}var _0x27e26f={};for(var _0x2b1a4e in FIELDS){if(FIELDS[_0x1c1f('0x1e')](_0x2b1a4e)&&FIELDS[_0x2b1a4e]){_0x27e26f[_0x2b1a4e]=_0xaaaad2[_0x1c1f('0x1f')][0x0][FIELDS[_0x2b1a4e]]||_0xaaaad2[_0x1c1f('0x1f')][0x0]['\ufeff'+FIELDS[_0x2b1a4e]];}}if(!_0x27e26f[_0x1c1f('0x20')]){return _0x51a1fc(handleCheckRowError(_0x1c1f('0x17'),'firstName\x20not\x20specified!',null,_0x2fa54e));}if(!_0x27e26f['phone']){return _0x51a1fc(handleCheckRowError('error',_0x1c1f('0x21'),null,_0x2fa54e));}if(_0x27e26f[_0x1c1f('0x22')]){var _0x14f114=moment(_0x27e26f[_0x1c1f('0x22')],_0x1c1f('0x23'));if(!_0x14f114[_0x1c1f('0x24')]()){return _0x51a1fc(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x2fa54e));}}if(_0x27e26f['email']){if(!isEmail(_0x27e26f[_0x1c1f('0x25')])){return _0x51a1fc(handleCheckRowError(_0x1c1f('0x17'),_0x1c1f('0x26'),null,_0x2fa54e));}}_0x27e26f[_0x1c1f('0x27')]=LISTID;_0x27e26f[_0x1c1f('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x1c1f('0x1c')]&&_0x5971ad){var _0x267d5d={};for(var _0x108505=0x0,_0x4452b5=DUPLICATES['length'];_0x108505<_0x4452b5;_0x108505+=0x1){_0x267d5d[DUPLICATES[_0x108505]]=_0x27e26f[DUPLICATES[_0x108505]];}var _0x5a1106=_['find'](_0x5971ad,_0x267d5d);if(_0x5a1106){return _0x51a1fc(handleCheckRowError('duplicate','Duplicate\x20Contact',_0x5a1106,_0x2fa54e));}}return db[_0x1c1f('0x29')]['create'](_0x27e26f,{'raw':!![],'hooks':![],'fields':_[_0x1c1f('0x2a')](_0x27e26f)})[_0x1c1f('0x2b')](function(_0x45cc1b){if(DUPLICATES&&DUPLICATES[_0x1c1f('0x1c')]&&_0x5971ad){_0x5971ad['push'](_[_0x1c1f('0x2c')](_0x27e26f,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x45cc1b['id'];return _0x32fd4b();})[_0x1c1f('0x2d')](function(_0x2eb105){return _0x51a1fc(handleCheckRowError(_0x1c1f('0x17'),_0x1c1f('0x2e')+(_0x2eb105[_0x1c1f('0x2f')]||JSON[_0x1c1f('0x30')](_0x2eb105)),null,_0x2fa54e));});});}function checkHopper(){function _0x53b878(){return function(_0x4ff976){logger['error']('cmContact','checkHopper',util[_0x1c1f('0x31')](_0x4ff976,{'showHidden':![],'depth':null}));};}var _0x561ae9=function(_0x37c1a8,_0xaef0cd){var _0x3ee77d=squel[_0x1c1f('0x32')]()['into']('cm_hopper')['fromQuery']([_0x1c1f('0x33'),'scheduledAt',_0x1c1f('0x34'),_0x1c1f('0x27'),_0xaef0cd,_0x1c1f('0x35'),_0x1c1f('0x36')],squel[_0x1c1f('0x37')]()[_0x1c1f('0x38')]('phone',_0x1c1f('0x33'))[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x3a'))[_0x1c1f('0x38')]('id',_0x1c1f('0x34'))[_0x1c1f('0x38')](LISTID['toString'](),_0x1c1f('0x27'))[_0x1c1f('0x38')](_0x37c1a8['id'][_0x1c1f('0x3b')](),_0xaef0cd)[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x35'))['field'](_0x1c1f('0x39'),_0x1c1f('0x36'))[_0x1c1f('0x3c')](_0x1c1f('0x3d'))['where'](_0x1c1f('0x3e'))['where'](_0x1c1f('0x3f'),LISTID['toString']())[_0x1c1f('0x40')](_0x1c1f('0x41'))[_0x1c1f('0x40')](_0x1c1f('0x42'),squel['select']()[_0x1c1f('0x38')](_0x1c1f('0x33'))[_0x1c1f('0x3c')]('cm_hopper')['where'](_0xaef0cd+_0x1c1f('0x43'),_0x37c1a8['id'][_0x1c1f('0x3b')]())))[_0x1c1f('0x3b')]();return _0x3ee77d;};var _0x4f0d7f=function(_0x23311d,_0x348416){var _0x22bcda=squel['insert']()[_0x1c1f('0x44')](_0x1c1f('0x45'))[_0x1c1f('0x46')]([_0x1c1f('0x33'),_0x1c1f('0x3a'),_0x1c1f('0x34'),_0x1c1f('0x27'),_0x348416,_0x1c1f('0x35'),'updatedAt'],squel['select']()[_0x1c1f('0x38')](_0x1c1f('0x33'),'phone')[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x3a'))[_0x1c1f('0x38')]('id','ContactId')[_0x1c1f('0x38')](LISTID[_0x1c1f('0x3b')](),_0x1c1f('0x27'))['field'](_0x23311d['id']['toString'](),_0x348416)[_0x1c1f('0x38')]('NOW()',_0x1c1f('0x35'))[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x36'))[_0x1c1f('0x3c')](_0x1c1f('0x3d'))[_0x1c1f('0x40')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',LISTID[_0x1c1f('0x3b')]())['where'](_0x1c1f('0x47'),squel['str'](hopperContacts))[_0x1c1f('0x40')]('phone\x20IS\x20NOT\x20NULL')[_0x1c1f('0x40')](_0x1c1f('0x42'),squel[_0x1c1f('0x37')]()[_0x1c1f('0x38')](_0x1c1f('0x48'))[_0x1c1f('0x3c')](_0x1c1f('0x49'))[_0x1c1f('0x40')](_0x348416+_0x1c1f('0x43'),_0x23311d['id'][_0x1c1f('0x3b')]()))[_0x1c1f('0x40')](_0x1c1f('0x42'),squel['select']()['field']('phone')[_0x1c1f('0x3c')](_0x1c1f('0x45'))[_0x1c1f('0x40')](_0x348416+'\x20=\x20?',_0x23311d['id']['toString']())))[_0x1c1f('0x3b')]();return _0x22bcda;};function _0x5ed8ca(_0x224e13,_0x437764){var _0x52adb6=squel[_0x1c1f('0x32')]()['into']('cm_hopper')['fromQuery']([_0x1c1f('0x33'),'scheduledAt',_0x1c1f('0x34'),'ListId',_0x437764,_0x1c1f('0x35'),_0x1c1f('0x36')],squel['select']()[_0x1c1f('0x38')](_0x1c1f('0x33'),_0x1c1f('0x33'))[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x3a'))[_0x1c1f('0x38')]('id','ContactId')[_0x1c1f('0x38')](LISTID['toString'](),_0x1c1f('0x27'))['field'](_0x224e13['id'][_0x1c1f('0x3b')](),_0x437764)['field'](_0x1c1f('0x39'),_0x1c1f('0x35'))[_0x1c1f('0x38')](_0x1c1f('0x39'),_0x1c1f('0x36'))['from'](_0x1c1f('0x3d'))[_0x1c1f('0x40')](_0x1c1f('0x3e'))[_0x1c1f('0x40')](_0x1c1f('0x3f'),LISTID['toString']())[_0x1c1f('0x40')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x1c1f('0x40')](_0x1c1f('0x41')))['toString']();return _0x52adb6;}function _0x3eecbe(_0x2bd5b0,_0x50ce26){var _0x370aa8=squel[_0x1c1f('0x32')]()[_0x1c1f('0x44')](_0x1c1f('0x4a'))[_0x1c1f('0x46')](['phone',_0x1c1f('0x34'),_0x1c1f('0x27'),_0x50ce26,_0x1c1f('0x35'),'updatedAt'],squel[_0x1c1f('0x37')]()[_0x1c1f('0x38')](_0x1c1f('0x33'),_0x1c1f('0x33'))['field']('id',_0x1c1f('0x34'))[_0x1c1f('0x38')](LISTID['toString'](),_0x1c1f('0x27'))[_0x1c1f('0x38')](_0x2bd5b0['id']['toString'](),_0x50ce26)[_0x1c1f('0x38')]('NOW()','createdAt')[_0x1c1f('0x38')]('NOW()',_0x1c1f('0x36'))[_0x1c1f('0x3c')](_0x1c1f('0x3d'))[_0x1c1f('0x40')](_0x1c1f('0x3e'))['where'](_0x1c1f('0x3f'),LISTID[_0x1c1f('0x3b')]())['where'](_0x1c1f('0x47'),squel[_0x1c1f('0x4b')](hopperContacts))['where'](_0x1c1f('0x41')))['toString']();return _0x370aa8;}return db['VoiceQueue'][_0x1c1f('0x4c')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x1c1f('0x4d')],'as':_0x1c1f('0x4e'),'where':{'id':LISTID}}]})[_0x1c1f('0x2b')](function(_0x15bdae){var _0x2d3e56=[];if(_0x15bdae){var _0x587f08;for(var _0x19132a=0x0,_0x4e7fe3;_0x19132a<_0x15bdae[_0x1c1f('0x1c')];_0x19132a+=0x1){_0x4e7fe3=_0x15bdae[_0x19132a]['get']({'plain':!![]});switch(_0x4e7fe3[_0x1c1f('0x4f')]){case _0x1c1f('0x50'):_0x2d3e56[_0x1c1f('0x51')](db[_0x1c1f('0x52')][_0x1c1f('0x53')](_0x4f0d7f(_0x4e7fe3,_0x1c1f('0x54')))['then'](function(){})[_0x1c1f('0x2d')](_0x53b878()));break;case _0x1c1f('0x55'):_0x2d3e56[_0x1c1f('0x51')](db[_0x1c1f('0x52')][_0x1c1f('0x53')](_0x561ae9(_0x4e7fe3,_0x1c1f('0x54')))['then'](function(){})[_0x1c1f('0x2d')](_0x53b878()));break;default:_0x2d3e56[_0x1c1f('0x51')](db[_0x1c1f('0x52')]['query'](_0x5ed8ca(_0x4e7fe3,_0x1c1f('0x54')))[_0x1c1f('0x2b')](function(){})[_0x1c1f('0x2d')](_0x53b878()));}}}return _0x2d3e56;})[_0x1c1f('0x56')]()[_0x1c1f('0x2b')](function(){return db[_0x1c1f('0x57')][_0x1c1f('0x4c')]({'where':{'type':_0x1c1f('0x58')},'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x1bcb90){var _0x4e219c=[];if(_0x1bcb90){var _0x6d2e7d;for(var _0x1e1a52=0x0,_0x38d1d8;_0x1e1a52<_0x1bcb90['length'];_0x1e1a52+=0x1){_0x38d1d8=_0x1bcb90[_0x1e1a52][_0x1c1f('0x59')]({'plain':!![]});_0x4e219c[_0x1c1f('0x51')](db['sequelize'][_0x1c1f('0x53')](_0x3eecbe(_0x38d1d8,_0x1c1f('0x54')))[_0x1c1f('0x2b')](function(){})[_0x1c1f('0x2d')](_0x53b878()));}}return _0x4e219c;})[_0x1c1f('0x56')]();})[_0x1c1f('0x2b')](function(){return db['Campaign'][_0x1c1f('0x4c')]({'attributes':['id',_0x1c1f('0x4f')],'include':[{'model':db[_0x1c1f('0x4d')],'as':_0x1c1f('0x4e'),'where':{'id':LISTID}}]})['then'](function(_0x1f106c){var _0x1d685d=[];if(_0x1f106c){for(var _0x509dc1=0x0,_0x2c7f40;_0x509dc1<_0x1f106c[_0x1c1f('0x1c')];_0x509dc1+=0x1){_0x2c7f40=_0x1f106c[_0x509dc1][_0x1c1f('0x59')]({'plain':!![]});switch(_0x2c7f40[_0x1c1f('0x4f')]){case _0x1c1f('0x50'):_0x1d685d[_0x1c1f('0x51')](db[_0x1c1f('0x52')][_0x1c1f('0x53')](_0x4f0d7f(_0x2c7f40,'CampaignId'))[_0x1c1f('0x2b')](function(){})['catch'](_0x53b878()));break;case _0x1c1f('0x55'):_0x1d685d[_0x1c1f('0x51')](db[_0x1c1f('0x52')][_0x1c1f('0x53')](_0x561ae9(_0x2c7f40,_0x1c1f('0x5a')))[_0x1c1f('0x2b')](function(){})[_0x1c1f('0x2d')](_0x53b878()));break;default:_0x1d685d[_0x1c1f('0x51')](db['sequelize']['query'](_0x5ed8ca(_0x2c7f40,_0x1c1f('0x5a')))[_0x1c1f('0x2b')](function(){})[_0x1c1f('0x2d')](_0x53b878()));}}}return _0x1d685d;})[_0x1c1f('0x56')]();})['then'](function(){return db[_0x1c1f('0x5b')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x1c1f('0x4d')],'as':_0x1c1f('0x5c'),'where':{'id':LISTID}}]})[_0x1c1f('0x2b')](function(_0x2501dc){var _0x3dafab=[];if(_0x2501dc){for(var _0x4d3797=0x0,_0x47a7a9;_0x4d3797<_0x2501dc[_0x1c1f('0x1c')];_0x4d3797+=0x1){_0x47a7a9=_0x2501dc[_0x4d3797][_0x1c1f('0x59')]({'plain':!![]});_0x3dafab[_0x1c1f('0x51')](db[_0x1c1f('0x52')][_0x1c1f('0x53')](_0x3eecbe(_0x47a7a9,_0x1c1f('0x5a')))[_0x1c1f('0x2b')](function(){})['catch'](_0x53b878()));}}return _0x3dafab;})[_0x1c1f('0x56')]();})['catch'](function(_0x3ba8ee){logger[_0x1c1f('0x17')](_0x1c1f('0x5d'),_0x1c1f('0x5e'),_0x3ba8ee[_0x1c1f('0x2f')]);});}var processPromises=function(_0x4bcf6f){return BPromise[_0x1c1f('0x56')](promises)[_0x1c1f('0x2b')](function(_0x1d53f4){})[_0x1c1f('0x2d')](function(_0x1d40c4){logger[_0x1c1f('0x17')](_0x1c1f('0x5f'),JSON['stringify'](_0x1d40c4));})['finally'](function(){socket[_0x1c1f('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4bcf6f){return _0x4bcf6f['resume']();}});};var endCsv=function(){return BPromise[_0x1c1f('0x61')]()[_0x1c1f('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x1c1f('0x2b')](function(){socket[_0x1c1f('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x3341ec){logger[_0x1c1f('0x17')](_0x1c1f('0x62'),JSON[_0x1c1f('0x30')](_0x3341ec));}finally{process[_0x1c1f('0x63')](0x0);}});};process['on'](_0x1c1f('0x64'),function(){logger[_0x1c1f('0x65')](_0x1c1f('0x66'));endCsv();});function main(){return BPromise['resolve']()[_0x1c1f('0x2b')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x1c1f('0x29')][_0x1c1f('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x1c1f('0x2b')](function(_0x430ee2){var _0x1666c0=fs[_0x1c1f('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x1c1f('0x68')](_0x1666c0,{'header':!![],'skipEmptyLines':!![],'step':function(_0x17ca12,_0x7e83eb){total+=0x1;var _0x5ce45b=total;promises[_0x1c1f('0x51')](checkRow(_0x17ca12,_0x430ee2,_0x5ce45b)[_0x1c1f('0x2b')](function(){success+=0x1;})[_0x1c1f('0x2d')](function(_0x10b362){if(_0x10b362[_0x1c1f('0x17')]){errors+=0x1;delete _0x10b362[_0x1c1f('0x17')];}else if(_0x10b362[_0x1c1f('0x69')]){duplicates+=0x1;delete _0x10b362[_0x1c1f('0x69')];}rows['push'](_0x10b362);}));if(total%0xc8===0x0){_0x7e83eb[_0x1c1f('0x6a')]();return processPromises(_0x7e83eb);}},'complete':function(){return processPromises()[_0x1c1f('0x2b')](function(){logger[_0x1c1f('0x65')](_0x1c1f('0x6b'));endCsv();});},'error':function(_0x44072b,_0x40e63a){logger[_0x1c1f('0x65')](_0x1c1f('0x6c'),JSON[_0x1c1f('0x30')](_0x44072b));endCsv();}});})[_0x1c1f('0x2d')](function(_0x1115c3){logger[_0x1c1f('0x17')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x1c1f('0x30')](_0x1115c3));});}main();
\ No newline at end of file
+var _0x18ba=['get','onlyIfOpen','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','duplicate','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','register','argv','null','Missing\x20filepath\x20parameter!','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','ListId','find','Duplicate\x20Contact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','into','cm_hopper','fromQuery','phone','createdAt','updatedAt','select','field','ContactId','toString','NOW()','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','insert','scheduledAt','ListId\x20=\x20?','id\x20IN\x20?','calleridnum','\x20=\x20?','str','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','sequelize','VoiceQueueId','query','all','Campaign'];(function(_0x4ae89d,_0x5af74b){var _0x411fd7=function(_0x14079d){while(--_0x14079d){_0x4ae89d['push'](_0x4ae89d['shift']());}};_0x411fd7(++_0x5af74b);}(_0x18ba,0x1cb));var _0xa18b=function(_0x1ad15c,_0x127625){_0x1ad15c=_0x1ad15c-0x0;var _0xe556f6=_0x18ba[_0x1ad15c];return _0xe556f6;};'use strict';var BPromise=require(_0xa18b('0x0'));var util=require(_0xa18b('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0xa18b('0x2'));var Papa=require(_0xa18b('0x3'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xa18b('0x4'));var logger=require(_0xa18b('0x5'))('api');config[_0xa18b('0x6')]=_['defaults'](config[_0xa18b('0x6')],{'host':_0xa18b('0x7'),'port':0x18eb});var socket=require(_0xa18b('0x8'))(new Redis(config[_0xa18b('0x6')]));require('../../../api/cmContact/cmContact.socket')[_0xa18b('0x9')](socket);try{if(!process[_0xa18b('0xa')][0x2]||process[_0xa18b('0xa')][0x2]==='undefined'||process['argv'][0x2]===_0xa18b('0xb')){throw new Error(_0xa18b('0xc'));}var FILEPATH=process[_0xa18b('0xa')][0x2];if(!process[_0xa18b('0xa')][0x3]||process[_0xa18b('0xa')][0x3]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x3]===_0xa18b('0xb')||!process[_0xa18b('0xa')][0x4]||process['argv'][0x4]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x4]===_0xa18b('0xb')){throw new Error(_0xa18b('0xe'));}var FIELDS=_[_0xa18b('0xf')](process[_0xa18b('0xa')][0x3]['split'](','),process['argv'][0x4][_0xa18b('0x10')](','));if(!process[_0xa18b('0xa')][0x5]||process[_0xa18b('0xa')][0x5]===_0xa18b('0xd')||process[_0xa18b('0xa')][0x5]===_0xa18b('0xb')){throw new Error(_0xa18b('0x11'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xa18b('0xa')][0x6]&&process[_0xa18b('0xa')][0x6]!==_0xa18b('0xd')&&process[_0xa18b('0xa')][0x6]!=='null'?process[_0xa18b('0xa')][0x6]:null;var DUPLICATES=process[_0xa18b('0xa')][0x7]&&process[_0xa18b('0xa')][0x7]!==_0xa18b('0xd')&&process[_0xa18b('0xa')][0x7]!==_0xa18b('0xb')?process['argv'][0x7]:null;if(!process[_0xa18b('0xa')][0x8]||process['argv'][0x8]===_0xa18b('0xd')||process['argv'][0x8]===_0xa18b('0xb')){throw new Error(_0xa18b('0x12'));}var SOCKET_TIMESTAMP=process[_0xa18b('0xa')][0x8];}catch(_0x2297b0){logger[_0xa18b('0x13')](_0x2297b0);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(_0x2b694b,_0x43f198,_0x19f499,_0x3f70fe){var _0x5481d7={'message':_0x43f198};_0x5481d7[_0x2b694b]=!![];if(_0x19f499){_0x5481d7[_0xa18b('0x14')]=_0x19f499;}if(_0x3f70fe){_0x5481d7[_0xa18b('0x15')]=_0x3f70fe;}return _0x5481d7;}function isEmail(_0x2d7172){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))*$/[_0xa18b('0x16')](_0x2d7172);}function checkRow(_0x35e1c4,_0x4540d9,_0x448ab8){return new BPromise(function(_0x992e65,_0x56ca8d){if(_[_0xa18b('0x17')](_0x35e1c4)){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x18'),null,_0x448ab8));}if(_0x35e1c4[_0xa18b('0x19')]&&_0x35e1c4[_0xa18b('0x19')][_0xa18b('0x1a')]){var _0x417306=_[_0xa18b('0x1b')](_0x35e1c4[_0xa18b('0x19')],_0xa18b('0x1c'))['join'](';');return _0x56ca8d(handleCheckRowError('error',_0x417306,null,_0x448ab8));}var _0x2756ef={};for(var _0x54d218 in FIELDS){if(FIELDS[_0xa18b('0x1d')](_0x54d218)&&FIELDS[_0x54d218]){_0x2756ef[_0x54d218]=_0x35e1c4[_0xa18b('0x1e')][0x0][FIELDS[_0x54d218]]||_0x35e1c4[_0xa18b('0x1e')][0x0]['\ufeff'+FIELDS[_0x54d218]];}}if(!_0x2756ef[_0xa18b('0x1f')]){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x20'),null,_0x448ab8));}if(!_0x2756ef['phone']){return _0x56ca8d(handleCheckRowError('error',_0xa18b('0x21'),null,_0x448ab8));}if(_0x2756ef[_0xa18b('0x22')]){var _0x149729=moment(_0x2756ef[_0xa18b('0x22')],_0xa18b('0x23'));if(!_0x149729[_0xa18b('0x24')]()){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x448ab8));}}if(_0x2756ef[_0xa18b('0x25')]){if(!isEmail(_0x2756ef[_0xa18b('0x25')])){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x448ab8));}}_0x2756ef[_0xa18b('0x26')]=LISTID;_0x2756ef['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x4540d9){var _0x559c52={};for(var _0x44bc3c=0x0,_0x4e077e=DUPLICATES[_0xa18b('0x1a')];_0x44bc3c<_0x4e077e;_0x44bc3c+=0x1){_0x559c52[DUPLICATES[_0x44bc3c]]=_0x2756ef[DUPLICATES[_0x44bc3c]];}var _0x3518ec=_[_0xa18b('0x27')](_0x4540d9,_0x559c52);if(_0x3518ec){return _0x56ca8d(handleCheckRowError('duplicate',_0xa18b('0x28'),_0x3518ec,_0x448ab8));}}return db['CmContact'][_0xa18b('0x29')](_0x2756ef,{'raw':!![],'hooks':![],'fields':_[_0xa18b('0x2a')](_0x2756ef)})[_0xa18b('0x2b')](function(_0x2f4082){if(DUPLICATES&&DUPLICATES['length']&&_0x4540d9){_0x4540d9[_0xa18b('0x2c')](_['pick'](_0x2756ef,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2f4082['id'];return _0x992e65();})[_0xa18b('0x2d')](function(_0x496a04){return _0x56ca8d(handleCheckRowError(_0xa18b('0x13'),_0xa18b('0x2e')+(_0x496a04[_0xa18b('0x1c')]||JSON['stringify'](_0x496a04)),null,_0x448ab8));});});}function checkHopper(){function _0x14d422(){return function(_0x35bb10){logger[_0xa18b('0x13')](_0xa18b('0x2f'),_0xa18b('0x30'),util[_0xa18b('0x31')](_0x35bb10,{'showHidden':![],'depth':null}));};}var _0x5aba03=function(_0x377e2d,_0x3ab553){var _0x4d9a00=squel['insert']()[_0xa18b('0x32')](_0xa18b('0x33'))[_0xa18b('0x34')]([_0xa18b('0x35'),'scheduledAt','ContactId',_0xa18b('0x26'),_0x3ab553,_0xa18b('0x36'),_0xa18b('0x37')],squel[_0xa18b('0x38')]()[_0xa18b('0x39')](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')]('NOW()','scheduledAt')[_0xa18b('0x39')]('id',_0xa18b('0x3a'))[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')[_0xa18b('0x39')](_0x377e2d['id'][_0xa18b('0x3b')](),_0x3ab553)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))[_0xa18b('0x3d')](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')]('ListId\x20=\x20?',LISTID[_0xa18b('0x3b')]())[_0xa18b('0x3f')](_0xa18b('0x41'))['where'](_0xa18b('0x42'),squel[_0xa18b('0x38')]()[_0xa18b('0x39')]('phone')[_0xa18b('0x3d')](_0xa18b('0x33'))[_0xa18b('0x3f')](_0x3ab553+'\x20=\x20?',_0x377e2d['id'][_0xa18b('0x3b')]())))[_0xa18b('0x3b')]();return _0x4d9a00;};var _0x2259a2=function(_0x109437,_0x4a44fc){var _0x40a473=squel[_0xa18b('0x43')]()[_0xa18b('0x32')](_0xa18b('0x33'))[_0xa18b('0x34')]([_0xa18b('0x35'),_0xa18b('0x44'),_0xa18b('0x3a'),_0xa18b('0x26'),_0x4a44fc,_0xa18b('0x36'),_0xa18b('0x37')],squel[_0xa18b('0x38')]()['field']('phone',_0xa18b('0x35'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x44'))[_0xa18b('0x39')]('id','ContactId')[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')[_0xa18b('0x39')](_0x109437['id'][_0xa18b('0x3b')](),_0x4a44fc)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))['field']('NOW()','updatedAt')['from'](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID[_0xa18b('0x3b')]())[_0xa18b('0x3f')](_0xa18b('0x46'),squel['str'](hopperContacts))[_0xa18b('0x3f')](_0xa18b('0x41'))[_0xa18b('0x3f')](_0xa18b('0x42'),squel['select']()[_0xa18b('0x39')](_0xa18b('0x47'))[_0xa18b('0x3d')]('cm_hopper_final')['where'](_0x4a44fc+'\x20=\x20?',_0x109437['id']['toString']()))['where'](_0xa18b('0x42'),squel[_0xa18b('0x38')]()['field'](_0xa18b('0x35'))[_0xa18b('0x3d')]('cm_hopper')[_0xa18b('0x3f')](_0x4a44fc+_0xa18b('0x48'),_0x109437['id'][_0xa18b('0x3b')]())))[_0xa18b('0x3b')]();return _0x40a473;};function _0x1e08b7(_0x2983d5,_0x29d42f){var _0x3a3960=squel['insert']()[_0xa18b('0x32')](_0xa18b('0x33'))['fromQuery']([_0xa18b('0x35'),'scheduledAt',_0xa18b('0x3a'),_0xa18b('0x26'),_0x29d42f,'createdAt','updatedAt'],squel[_0xa18b('0x38')]()['field'](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')](_0xa18b('0x3c'),'scheduledAt')[_0xa18b('0x39')]('id',_0xa18b('0x3a'))['field'](LISTID[_0xa18b('0x3b')](),_0xa18b('0x26'))['field'](_0x2983d5['id']['toString'](),_0x29d42f)[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))[_0xa18b('0x3d')](_0xa18b('0x3e'))[_0xa18b('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID[_0xa18b('0x3b')]())['where'](_0xa18b('0x46'),squel[_0xa18b('0x49')](hopperContacts))[_0xa18b('0x3f')]('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x3a3960;}function _0x8584e4(_0x51fd11,_0x4bf32b){var _0x5972bc=squel[_0xa18b('0x43')]()[_0xa18b('0x32')]('cm_hopper_black')[_0xa18b('0x34')]([_0xa18b('0x35'),_0xa18b('0x3a'),_0xa18b('0x26'),_0x4bf32b,_0xa18b('0x36'),'updatedAt'],squel[_0xa18b('0x38')]()[_0xa18b('0x39')](_0xa18b('0x35'),_0xa18b('0x35'))[_0xa18b('0x39')]('id','ContactId')[_0xa18b('0x39')](LISTID[_0xa18b('0x3b')](),'ListId')['field'](_0x51fd11['id'][_0xa18b('0x3b')](),_0x4bf32b)[_0xa18b('0x39')]('NOW()',_0xa18b('0x36'))[_0xa18b('0x39')](_0xa18b('0x3c'),_0xa18b('0x37'))['from'](_0xa18b('0x3e'))[_0xa18b('0x3f')](_0xa18b('0x40'))[_0xa18b('0x3f')](_0xa18b('0x45'),LISTID['toString']())[_0xa18b('0x3f')](_0xa18b('0x46'),squel['str'](hopperContacts))[_0xa18b('0x3f')](_0xa18b('0x41')))[_0xa18b('0x3b')]();return _0x5972bc;}return db[_0xa18b('0x4a')][_0xa18b('0x4b')]({'where':{'type':_0xa18b('0x4c')},'attributes':['id',_0xa18b('0x4d')],'include':[{'model':db[_0xa18b('0x4e')],'as':_0xa18b('0x4f'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x18d0ba){var _0x3d1504=[];if(_0x18d0ba){var _0x596377;for(var _0x51889f=0x0,_0x886b;_0x51889f<_0x18d0ba['length'];_0x51889f+=0x1){_0x886b=_0x18d0ba[_0x51889f]['get']({'plain':!![]});switch(_0x886b[_0xa18b('0x4d')]){case _0xa18b('0x50'):_0x3d1504[_0xa18b('0x2c')](db[_0xa18b('0x51')]['query'](_0x2259a2(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;case'onlyIfOpen':_0x3d1504['push'](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x5aba03(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;default:_0x3d1504[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x1e08b7(_0x886b,_0xa18b('0x52')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}}return _0x3d1504;})[_0xa18b('0x54')]()['then'](function(){return db[_0xa18b('0x4a')][_0xa18b('0x4b')]({'where':{'type':_0xa18b('0x4c')},'attributes':['id'],'include':[{'model':db[_0xa18b('0x4e')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x133244){var _0x405a5e=[];if(_0x133244){var _0x4e3e2b;for(var _0x4fcd62=0x0,_0x337b2c;_0x4fcd62<_0x133244[_0xa18b('0x1a')];_0x4fcd62+=0x1){_0x337b2c=_0x133244[_0x4fcd62]['get']({'plain':!![]});_0x405a5e['push'](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x8584e4(_0x337b2c,_0xa18b('0x52')))['then'](function(){})[_0xa18b('0x2d')](_0x14d422()));}}return _0x405a5e;})[_0xa18b('0x54')]();})['then'](function(){return db[_0xa18b('0x55')][_0xa18b('0x4b')]({'attributes':['id',_0xa18b('0x4d')],'include':[{'model':db[_0xa18b('0x4e')],'as':_0xa18b('0x4f'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0x16f704){var _0x2a07dc=[];if(_0x16f704){for(var _0x5d8be0=0x0,_0x1c5fd3;_0x5d8be0<_0x16f704[_0xa18b('0x1a')];_0x5d8be0+=0x1){_0x1c5fd3=_0x16f704[_0x5d8be0][_0xa18b('0x56')]({'plain':!![]});switch(_0x1c5fd3[_0xa18b('0x4d')]){case _0xa18b('0x50'):_0x2a07dc[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x2259a2(_0x1c5fd3,'CampaignId'))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;case _0xa18b('0x57'):_0x2a07dc[_0xa18b('0x2c')](db['sequelize'][_0xa18b('0x53')](_0x5aba03(_0x1c5fd3,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));break;default:_0x2a07dc[_0xa18b('0x2c')](db[_0xa18b('0x51')][_0xa18b('0x53')](_0x1e08b7(_0x1c5fd3,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}}return _0x2a07dc;})[_0xa18b('0x54')]();})[_0xa18b('0x2b')](function(){return db[_0xa18b('0x55')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xa18b('0x59'),'where':{'id':LISTID}}]})[_0xa18b('0x2b')](function(_0xd6b81a){var _0xa750ad=[];if(_0xd6b81a){for(var _0x5a2ff7=0x0,_0x53a8ce;_0x5a2ff7<_0xd6b81a['length'];_0x5a2ff7+=0x1){_0x53a8ce=_0xd6b81a[_0x5a2ff7][_0xa18b('0x56')]({'plain':!![]});_0xa750ad[_0xa18b('0x2c')](db[_0xa18b('0x51')]['query'](_0x8584e4(_0x53a8ce,_0xa18b('0x58')))[_0xa18b('0x2b')](function(){})[_0xa18b('0x2d')](_0x14d422()));}}return _0xa750ad;})[_0xa18b('0x54')]();})['catch'](function(_0x5db45a){logger[_0xa18b('0x13')](_0xa18b('0x5a'),'generalCheckHopper',_0x5db45a[_0xa18b('0x1c')]);});}var processPromises=function(_0x4fe71e){return BPromise[_0xa18b('0x54')](promises)[_0xa18b('0x2b')](function(_0x12ad39){})[_0xa18b('0x2d')](function(_0x77939){logger[_0xa18b('0x13')](_0xa18b('0x5b'),JSON[_0xa18b('0x5c')](_0x77939));})[_0xa18b('0x5d')](function(){socket[_0xa18b('0x5e')](_0xa18b('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4fe71e){return _0x4fe71e[_0xa18b('0x60')]();}});};var endCsv=function(){return BPromise[_0xa18b('0x61')]()[_0xa18b('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0xa18b('0x2b')](function(){socket[_0xa18b('0x5e')](_0xa18b('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa18b('0x62')](FILEPATH);}catch(_0x46957d){logger[_0xa18b('0x13')](_0xa18b('0x63'),JSON['stringify'](_0x46957d));}finally{process['exit'](0x0);}});};process['on'](_0xa18b('0x64'),function(){logger[_0xa18b('0x65')](_0xa18b('0x66'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xa18b('0x67')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa18b('0x2b')](function(_0x108cd7){var _0x35c500=fs[_0xa18b('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa18b('0x69')](_0x35c500,{'header':!![],'skipEmptyLines':!![],'step':function(_0x378201,_0x58c974){total+=0x1;var _0x171653=total;promises[_0xa18b('0x2c')](checkRow(_0x378201,_0x108cd7,_0x171653)[_0xa18b('0x2b')](function(){success+=0x1;})[_0xa18b('0x2d')](function(_0x592400){if(_0x592400['error']){errors+=0x1;delete _0x592400['error'];}else if(_0x592400[_0xa18b('0x6a')]){duplicates+=0x1;delete _0x592400[_0xa18b('0x6a')];}rows[_0xa18b('0x2c')](_0x592400);}));if(total%0xc8===0x0){_0x58c974['pause']();return processPromises(_0x58c974);}},'complete':function(){return processPromises()[_0xa18b('0x2b')](function(){logger[_0xa18b('0x65')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x2b95d4,_0x2870bc){logger[_0xa18b('0x65')](_0xa18b('0x6b'),JSON[_0xa18b('0x5c')](_0x2b95d4));endCsv();}});})[_0xa18b('0x2d')](function(_0x185a59){logger['error'](_0xa18b('0x6c'),JSON['stringify'](_0x185a59));});}main();
\ No newline at end of file
index 548d554..71ec650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca6=['.csv','header','ContactItemType','name','_description','writeFileSync','createReadStream','data','rows','find','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','email','email\x20wrong\x20format','dateOfBirth','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','trim','replace','description','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','CREATE\x20TABLE\x20','each','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','DROP\x20TABLE\x20','contactId','orderBy','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','parse','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../config/environment','../../../config/environment/shared','import','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','findAll','AdditionalPhones','then','length','push','all','split','isNil','CmContactHasItem','findOne','updated','create','PHONE','inserted','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','priority','UserId','recallme','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.phone','cm_contacts.ListId','cm_hopper_black','updatedAt','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','scheduledat','fields','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','group','info','error','exit','errors','code','message','query','catch','campaigns.id','campaigns.dialTimezone','campaigns','sequelize','spread','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','send','start','clone','root','server/files/tmp'];(function(_0x351192,_0x57a827){var _0x20ee3a=function(_0x1ad066){while(--_0x1ad066){_0x351192['push'](_0x351192['shift']());}};_0x20ee3a(++_0x57a827);}(_0x4ca6,0x1a9));var _0x64ca=function(_0x3cb152,_0x57eb54){_0x3cb152=_0x3cb152-0x0;var _0x4f54c3=_0x4ca6[_0x3cb152];return _0x4f54c3;};'use strict';var fs=require('fs');var path=require(_0x64ca('0x0'));var _=require(_0x64ca('0x1'));var Papa=require(_0x64ca('0x2'));var util=require(_0x64ca('0x3'));var BPromise=require(_0x64ca('0x4'));var moment=require(_0x64ca('0x5'));var squel=require('squel');var Redis=require(_0x64ca('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x64ca('0x7'));var shared=require(_0x64ca('0x8'));var logger=require('../../../config/logger')(_0x64ca('0x9'));config['redis']=_[_0x64ca('0xa')](config['redis'],{'host':_0x64ca('0xb'),'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()[_0x64ca('0xc')](_0x64ca('0xd'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x64ca('0xc')](_0x64ca('0xd'));function isEmail(_0x432ddf){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))*$/[_0x64ca('0xe')](_0x432ddf);}function selectNotIn(_0x53e602,_0x5d79c0,_0x14f600,_0x4ed017,_0x284278){return squel[_0x64ca('0xf')]()['field'](_0x64ca('0x10'))[_0x64ca('0x11')](_0x4ed017)[_0x64ca('0x12')](_0x5d79c0,null,_0x5d79c0+'.id\x20=\x20'+_0x4ed017+'.'+_0x14f600)[_0x64ca('0x13')](_0x4ed017+'.'+_0x14f600+_0x64ca('0x14')+_0x53e602+'.'+_0x14f600)[_0x64ca('0x13')](_0x5d79c0+_0x64ca('0x15')+_0x284278['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2d2d8c,_0x4a834e){promisesAdditionalPhones=[];return db[_0x64ca('0x16')][_0x64ca('0x17')]({'raw':!![],'attributes':['id',_0x64ca('0x18')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x64ca('0x19')](function(_0x2d55de){if(_0x2d55de!==null){var _0x4f1aec=[];for(var _0x3eba95=0x0;_0x3eba95<_0x2d55de[_0x64ca('0x1a')];_0x3eba95++){var _0x1c27e5=_0x2d55de[_0x3eba95];_0x4f1aec[_0x64ca('0x1b')](insertAdditionalPhones(_0x1c27e5));}}Promise[_0x64ca('0x1c')](_0x4f1aec)[_0x64ca('0x19')](function(){_0x2d2d8c({'val':0x1});});});});}function insertAdditionalPhones(_0x508a6c){return new Promise(function(_0x3a7438,_0x1416ea){var _0x5e9775=_0x508a6c[_0x64ca('0x18')];var _0x5c054f=_0x5e9775[_0x64ca('0x1d')](';');var _0x461a93=[];orderBy=0x0;for(var _0x440d7e=0x0;_0x440d7e<_0x5c054f[_0x64ca('0x1a')];_0x440d7e++){_0x461a93[_0x64ca('0x1b')](splitAdditionalPhone(_0x508a6c['id'],_0x5c054f[_0x440d7e]));}Promise[_0x64ca('0x1c')](_0x461a93)[_0x64ca('0x19')](function(){_0x3a7438({'val':_0x5c054f[_0x64ca('0x1a')]});});});}function splitAdditionalPhone(_0x3191a6,_0x4d5d87){return new Promise(function(_0x1f8c84,_0x55a3b1){var _0x5da4c3=_0x4d5d87[_0x64ca('0x1d')](':');var _0x2625d1=_0x5da4c3[0x0];var _0x3ec195=_0x5da4c3[0x1];if(!_[_0x64ca('0x1e')](_0x3ec195)){var _0x23df09=_0x3ec195[_0x64ca('0x1d')]('|');var _0x5a79b9=[];for(var _0x1db1cf=0x0;_0x1db1cf<_0x23df09[_0x64ca('0x1a')];_0x1db1cf++){if(_0x23df09[_0x1db1cf]!==''){var _0x1fbd9b=_['filter'](promisesAdditionalPhones,{'contactId':_0x3191a6,'phone':_0x23df09[_0x1db1cf]});if(_0x1fbd9b[_0x64ca('0x1a')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x3191a6,'contactTypeId':_0x2625d1,'phone':_0x23df09[_0x1db1cf],'orderBy':orderBy});}}}_0x1f8c84({'ok':0x1});}else _0x1f8c84({'res':0x0});});}function createAdditionalPhone(_0x46e7e3,_0x567759,_0x4c2f99,_0x34b82d){var _0x4bb4f3='';var _0xc94f93='';var _0x51c975=_0x4c2f99['split']('§');_0x4bb4f3=_0x51c975[0x0];if(_0x51c975[_0x64ca('0x1a')]==0x2)_0xc94f93=_0x51c975[0x1];return new Promise(function(_0x392ea5,_0x302519){return db[_0x64ca('0x1f')][_0x64ca('0x20')]({'where':{'CmContactId':_0x46e7e3,'item':_0x4bb4f3}})[_0x64ca('0x19')](function(_0x18f7f4){if(_0x18f7f4){return db[_0x64ca('0x1f')]['update']({'ItemTypeId':_0x567759,'description':_0xc94f93,'OrderBy':_0x34b82d},{'where':{'CmContactId':_0x46e7e3,'item':_0x4bb4f3}})[_0x64ca('0x19')](function(_0x12ee5a){_0x392ea5({'res':_0x64ca('0x21')});});}else{return db['CmContactHasItem'][_0x64ca('0x22')]({'CmContactId':_0x46e7e3,'item':_0x4bb4f3,'description':_0xc94f93,'ItemTypeId':_0x567759,'OrderBy':_0x34b82d,'ItemClass':_0x64ca('0x23')})[_0x64ca('0x19')](function(_0x29c184){_0x392ea5({'res':_0x64ca('0x24')});});}});});}function insertCmHopper(_0x456eff,_0x3e6ccf,_0x208cd8,_0x597c5d,_0x7227bb){var _0x530a53=['cm_contacts.phone','cm_contacts.scheduledat',_0x64ca('0x25'),'cm_contacts.ListId',_0x3e6ccf+'.'+_0x597c5d,_0x64ca('0x26'),_0x64ca('0x27'),_0x64ca('0x28'),_0x64ca('0x29'),'\x22'+_0x7227bb+'\x22'];return squel[_0x64ca('0x2a')]()[_0x64ca('0x2b')](_0x64ca('0x2c'))[_0x64ca('0x2d')]([_0x64ca('0x10'),'scheduledat',_0x64ca('0x2e'),_0x64ca('0x2f'),_0x597c5d,_0x64ca('0x30'),'updatedAt',_0x64ca('0x31'),_0x64ca('0x32'),_0x64ca('0x33')],squel[_0x64ca('0xf')]()['fields'](_0x530a53)['from'](_0x3e6ccf)[_0x64ca('0x12')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x3e6ccf+'.CmListId')[_0x64ca('0x12')](_0x208cd8,null,_0x208cd8+'.id\x20=\x20'+_0x3e6ccf+'.'+_0x597c5d)[_0x64ca('0x13')](_0x3e6ccf+'.CmListId\x20=\x20?',_0x456eff)[_0x64ca('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x64ca('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x3e6ccf,_0x208cd8,_0x597c5d,'cm_hopper',[_0x64ca('0x34'),_0x64ca('0x35')]))[_0x64ca('0x13')](_0x64ca('0x36'),selectNotIn(_0x3e6ccf,_0x208cd8,_0x597c5d,_0x64ca('0x2c'),[_0x64ca('0x34')])))[_0x64ca('0x37')]();}function insertCmHopperBlack(_0x3bd30f,_0x1321e5,_0x15abaa,_0x42f25f){var _0x188d4a=[_0x64ca('0x38'),_0x64ca('0x25'),_0x64ca('0x39'),_0x1321e5+'.'+_0x42f25f,_0x64ca('0x26'),_0x64ca('0x27')];return squel[_0x64ca('0x2a')]()['into'](_0x64ca('0x3a'))['fromQuery'](['phone',_0x64ca('0x2e'),_0x64ca('0x2f'),_0x42f25f,_0x64ca('0x30'),_0x64ca('0x3b')],squel['select']()['fields'](_0x188d4a)['from'](_0x1321e5)[_0x64ca('0x12')](_0x64ca('0x3c'),null,_0x64ca('0x3d')+_0x1321e5+_0x64ca('0x3e'))[_0x64ca('0x12')](_0x15abaa,null,_0x15abaa+_0x64ca('0x3f')+_0x1321e5+'.'+_0x42f25f)['where'](_0x1321e5+_0x64ca('0x40'),_0x3bd30f)[_0x64ca('0x13')](_0x64ca('0x41'),NOW)[_0x64ca('0x13')](_0x64ca('0x36'),squel['select']()[_0x64ca('0x42')](_0x64ca('0x10'))[_0x64ca('0x11')]('cm_hopper_black')[_0x64ca('0x13')](_0x64ca('0x43'),_0x3bd30f)['where'](_0x42f25f+_0x64ca('0x14')+_0x1321e5+'.'+_0x42f25f)))[_0x64ca('0x37')]();}function insertTzCmHopper(_0x1708a0,_0x2041a0,_0x5c5266,_0x923b5,_0x5c9cba,_0x346455){var _0x1043ab=['cm_contacts.phone',_0x64ca('0x44')+_0x346455+_0x64ca('0x45'),_0x64ca('0x25'),'cm_contacts.ListId',_0x2041a0+'.'+_0x923b5,_0x64ca('0x26'),_0x64ca('0x27'),_0x64ca('0x28'),_0x64ca('0x29'),'\x22'+_0x5c9cba+'\x22'];var _0x578828=squel['insert']()[_0x64ca('0x2b')](_0x64ca('0x2c'))[_0x64ca('0x2d')]([_0x64ca('0x10'),_0x64ca('0x46'),_0x64ca('0x2e'),_0x64ca('0x2f'),_0x923b5,_0x64ca('0x30'),_0x64ca('0x3b'),'priority','UserId',_0x64ca('0x33')],squel['select']()['fields'](_0x1043ab)[_0x64ca('0x11')](_0x2041a0)[_0x64ca('0x12')](_0x64ca('0x3c'),null,_0x64ca('0x3d')+_0x2041a0+_0x64ca('0x3e'))[_0x64ca('0x12')](_0x5c5266,null,_0x5c5266+'.id\x20=\x20'+_0x2041a0+'.'+_0x923b5)[_0x64ca('0x12')](_0x346455,null,_0x346455+'.id\x20=\x20'+_0x2041a0+'.'+_0x923b5)['where'](_0x2041a0+_0x64ca('0x40'),_0x1708a0)[_0x64ca('0x13')](_0x64ca('0x41'),NOW)[_0x64ca('0x13')](_0x64ca('0x36'),selectNotIn(_0x2041a0,_0x5c5266,_0x923b5,_0x64ca('0x2c'),[_0x64ca('0x34'),'\x22onlyIfOpen\x22']))[_0x64ca('0x13')](_0x64ca('0x36'),selectNotIn(_0x2041a0,_0x5c5266,_0x923b5,_0x64ca('0x2c'),[_0x64ca('0x34')])))[_0x64ca('0x37')]();return _0x578828;}function insertTzCmHopperBlack(_0x2479cc,_0x255b07,_0x408d23,_0x166e64){var _0x510864=[_0x64ca('0x38'),_0x64ca('0x25'),_0x64ca('0x39'),_0x255b07+'.'+_0x166e64,_0x64ca('0x26'),'cm_contacts.updatedAt'];return squel[_0x64ca('0x2a')]()[_0x64ca('0x2b')](_0x64ca('0x3a'))[_0x64ca('0x2d')]([_0x64ca('0x10'),'ContactId',_0x64ca('0x2f'),_0x166e64,_0x64ca('0x30'),'updatedAt'],squel[_0x64ca('0xf')]()[_0x64ca('0x47')](_0x510864)[_0x64ca('0x11')](_0x255b07)[_0x64ca('0x12')](_0x64ca('0x3c'),null,_0x64ca('0x3d')+_0x255b07+'.CmListId')['join'](_0x408d23,null,_0x408d23+_0x64ca('0x3f')+_0x255b07+'.'+_0x166e64)[_0x64ca('0x13')](_0x255b07+_0x64ca('0x40'),_0x2479cc)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x64ca('0x13')](_0x64ca('0x36'),squel[_0x64ca('0xf')]()[_0x64ca('0x42')](_0x64ca('0x10'))[_0x64ca('0x11')](_0x64ca('0x3a'))[_0x64ca('0x13')](_0x64ca('0x43'),_0x2479cc)['where'](_0x166e64+_0x64ca('0x14')+_0x255b07+'.'+_0x166e64)))[_0x64ca('0x37')]();}function insertCmHopperAdditionalPhones(_0x3ae2c1){var _0x5ef15b=[_0x64ca('0x48'),'cm_contact_has_items.item',_0x64ca('0x49'),_0x64ca('0x4a'),'cm_contact_has_items.updatedAt'];return squel[_0x64ca('0x2a')]()[_0x64ca('0x2b')]('cm_hopper_additional_phones')['fromQuery']([_0x64ca('0x4b'),_0x64ca('0x10'),_0x64ca('0x4c'),_0x64ca('0x30'),_0x64ca('0x3b')],squel[_0x64ca('0xf')]()[_0x64ca('0x47')](_0x5ef15b)[_0x64ca('0x11')](_0x64ca('0x2c'))[_0x64ca('0x12')](_0x64ca('0x3c'),null,_0x64ca('0x4d'))['join'](_0x64ca('0x4e'),null,_0x64ca('0x4f'))[_0x64ca('0x13')](_0x64ca('0x50'),_0x3ae2c1)['where'](_0x64ca('0x41'),NOW))[_0x64ca('0x37')]();}function insertCmContact(_0x2c6b3f,_0x42da5f,_0x150adc,_0x2684cb){var _0x345c4d=_['concat'](_[_0x64ca('0x51')](_0x2684cb),[_0x64ca('0x2f'),_0x64ca('0x52'),'createdAt',_0x64ca('0x3b')]);return squel[_0x64ca('0x2a')]()[_0x64ca('0x2b')](_0x64ca('0x3c'))[_0x64ca('0x2d')](_0x345c4d,squel[_0x64ca('0xf')]()['fields'](_0x345c4d)[_0x64ca('0x11')](_0x42da5f)[_0x64ca('0x13')]('('+_0x150adc[_0x64ca('0x12')](',')+_0x64ca('0x53'),squel[_0x64ca('0xf')]()[_0x64ca('0x47')](_0x150adc)[_0x64ca('0x11')](_0x64ca('0x3c'))[_0x64ca('0x13')]('ListId\x20=\x20?',_0x2c6b3f)['where'](_0x64ca('0x54')))[_0x64ca('0x13')]('id\x20IN\x20?',squel['select']()[_0x64ca('0x42')]('MIN(id)','min_id')['from'](_0x42da5f)[_0x64ca('0x55')](_0x150adc['join'](','))))[_0x64ca('0x37')]();}function handleStop(){logger[_0x64ca('0x56')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x5e5937){logger[_0x64ca('0x57')](_0x5e5937['message']);process[_0x64ca('0x58')](0x1);}function handleError(_0xdb1e3a,_0x799797){stats[_0x64ca('0x59')][_0x64ca('0x1b')]({'name':_0x799797[_0x64ca('0x5a')],'message':_0x799797[_0x64ca('0x5b')],'row':_0xdb1e3a});}function handleQuery(_0x43fad){logger[_0x64ca('0x56')](_0x43fad);return db['sequelize'][_0x64ca('0x5c')](_0x43fad)['spread'](function(_0x5c2138){results[_0x64ca('0x1b')](_0x5c2138);})[_0x64ca('0x5d')](function(_0x2f3dee){logger[_0x64ca('0x57')](_0x2f3dee[_0x64ca('0x5b')]);});}function updateTzCampaigns(_0x52fa8b){return new Promise(function(_0x4be93b,_0x3597b9){var _0x5f0ebb=squel[_0x64ca('0xf')]()[_0x64ca('0x47')]([_0x64ca('0x5e'),_0x64ca('0x5f')])[_0x64ca('0x11')](_0x64ca('0x60'))[_0x64ca('0x12')]('campaigns_has_cm_lists',null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x64ca('0x13')]('campaigns_has_cm_lists.CmListId='+_0x52fa8b);db[_0x64ca('0x61')][_0x64ca('0x5c')](_0x5f0ebb[_0x64ca('0x37')]())[_0x64ca('0x62')](function(_0x315f84){var _0x4359ce=[];for(var _0x472005=0x0;_0x472005<_0x315f84[_0x64ca('0x1a')];_0x472005++){_0x4359ce[_0x64ca('0x1b')](getTimezoneData(_0x315f84[_0x472005],tmp_campaigns));}BPromise['all'](_0x4359ce)[_0x64ca('0x19')](function(){_0x4be93b({'val':0x1});});})[_0x64ca('0x5d')](function(_0x3717b8){logger[_0x64ca('0x57')](_0x3717b8[_0x64ca('0x5b')]);_0x4be93b({'val':0x0});});});}function updateTzVoiceQueues(_0x57c4d3){return new Promise(function(_0x1ccda9,_0x32bc05){var _0x131e5b=squel[_0x64ca('0xf')]()[_0x64ca('0x47')]([_0x64ca('0x63'),_0x64ca('0x64')])[_0x64ca('0x11')](_0x64ca('0x65'))[_0x64ca('0x12')](_0x64ca('0x66'),null,_0x64ca('0x67'))[_0x64ca('0x13')](_0x64ca('0x68')+_0x57c4d3);db[_0x64ca('0x61')][_0x64ca('0x5c')](_0x131e5b['toString']())['spread'](function(_0x23b13e){var _0x461249=[];for(var _0x4f1dc9=0x0;_0x4f1dc9<_0x23b13e['length'];_0x4f1dc9++){_0x461249['push'](getTimezoneData(_0x23b13e[_0x4f1dc9],tmp_voice_queues));}BPromise[_0x64ca('0x1c')](_0x461249)[_0x64ca('0x19')](function(){_0x1ccda9({'val':0x1});});})[_0x64ca('0x5d')](function(_0x4f58a1){logger[_0x64ca('0x57')](_0x4f58a1[_0x64ca('0x5b')]);_0x1ccda9({'val':0x0});});});}function getTimezoneData(_0x2f397a,_0x57b8c2){return new Promise(function(_0x34631b,_0x44d335){var _0x452857=shared[_0x64ca('0x69')];var _0x4a74a7=_0x452857[_0x2f397a[_0x64ca('0x6a')]];if(_[_0x64ca('0x1e')](_0x4a74a7)){_0x34631b({'ret':0x1});}else{var _0x179356=_0x4a74a7[_0x64ca('0x6b')];var _0x5cd025=squel[_0x64ca('0x2a')]()[_0x64ca('0x2b')](_0x57b8c2)[_0x64ca('0x6c')]('id',_0x2f397a['id'])[_0x64ca('0x6c')]('offset',_0x179356)[_0x64ca('0x6c')](_0x64ca('0x6a'),_0x2f397a[_0x64ca('0x6a')])['toString']();return db[_0x64ca('0x61')][_0x64ca('0x5c')](_0x5cd025)[_0x64ca('0x62')](function(_0x227ede){_0x34631b({'ret':0x1});})[_0x64ca('0x5d')](function(_0x3647ad){logger[_0x64ca('0x57')](_0x3647ad[_0x64ca('0x5b')]);_0x44d335({'ret':0x1});});}});}function handleTZQuery(_0x441a62){logger[_0x64ca('0x56')](_0x441a62);return db[_0x64ca('0x61')][_0x64ca('0x5c')](_0x441a62)[_0x64ca('0x62')](function(_0x39d4bc){})[_0x64ca('0x5d')](function(_0x430ad8){logger[_0x64ca('0x57')](_0x430ad8[_0x64ca('0x5b')]);});}function main(_0x984a6a,_0xdaff8,_0x50ffc4,_0x4f0468){logger[_0x64ca('0x56')](_0x64ca('0x6d'),_0x984a6a,JSON['stringify'](_0xdaff8));process[_0x64ca('0x6e')](_0x64ca('0x6f'));var _0x3bd587=_0xdaff8['binding'];var _0x21994b=_[_0x64ca('0x70')](_0x3bd587);var _0x27a236=_0xdaff8['socket_timestamp'];var _0x77ef71=path[_0x64ca('0x12')](config[_0x64ca('0x71')],_0x64ca('0x72'),_0x27a236+_0x64ca('0x73'));hasTZ=_['keys'](_0x3bd587)['includes']('dialTimezone');var _0x1e9287=_[_0x64ca('0x51')](_0x3bd587)[_0x64ca('0x12')]();logger[_0x64ca('0x56')](_0x64ca('0x74'),_0x1e9287);db[_0x64ca('0x75')][_0x64ca('0x17')]({'raw':!![],'attributes':['id',_0x64ca('0x76')]})['then'](function(_0x4ccf5d){for(var _0x46dc44=0x0;_0x46dc44<_0x4ccf5d[_0x64ca('0x1a')];_0x46dc44++){if(_0x4ccf5d[_0x46dc44][_0x64ca('0x76')]in _0x3bd587){contactItemTypes[_0x64ca('0x1b')](_0x4ccf5d[_0x46dc44]);delete _0x21994b[_0x4ccf5d[_0x46dc44]['name']];hasAdditionalPhones=!![];}for(var _0x30e45c in _0x3bd587){if(_0x4ccf5d[_0x46dc44][_0x64ca('0x76')]+_0x64ca('0x77')===_0x30e45c){phoneDescriptions['push']({'itemTypeId':_0x4ccf5d[_0x46dc44]['id'],'description':_0x30e45c});delete _0x21994b[_0x30e45c];}}}if(hasAdditionalPhones)_0x21994b[_0x64ca('0x18')]='';var _0x440253=_[_0x64ca('0x51')](_0x21994b)[_0x64ca('0x12')]();logger['info'](_0x64ca('0x74'),_0x440253);fs[_0x64ca('0x78')](_0x77ef71,_0x440253+'\x0a');Papa['parse'](fs[_0x64ca('0x79')](_0x984a6a),{'header':!![],'skipEmptyLines':!![],'step':function(_0x14d64d,_0x58c406){try{for(var _0x461292=0x0,_0x150e10=[];_0x461292<_0x14d64d[_0x64ca('0x7a')][_0x64ca('0x1a')];_0x461292++){stats[_0x64ca('0x7b')]+=0x1;if(_0x14d64d['errors'][_0x461292]){handleError(_0x14d64d['data'][_0x461292],_0x14d64d[_0x64ca('0x59')][_0x461292]);}else{var _0x462326=[];var _0x4e9387=[];var _0x17a64e={};for(var _0x338c17 in _0x3bd587){let _0x2eef69=contactItemTypes[_0x64ca('0x7c')](_0x51229a=>_0x51229a['name']===_0x338c17);let _0xf97401=contactItemTypes[_0x64ca('0x7c')](_0x501981=>_0x501981[_0x64ca('0x76')]+'_description'===_0x338c17);if(_[_0x64ca('0x1e')](_0x2eef69)&&_[_0x64ca('0x1e')](_0xf97401)){if(_0x3bd587['hasOwnProperty'](_0x338c17)){if(_0x14d64d[_0x64ca('0x7a')][_0x461292][_0x3bd587[_0x338c17]]){var _0x3c2d46=_['trim'](_0x14d64d['data'][_0x461292][_0x3bd587[_0x338c17]]['replace'](/"/g,'\x27'));switch(_0x338c17){case _0x64ca('0x46'):var _0x292b1b=moment(_0x3c2d46,_0x64ca('0xd'),!![]);if(_0x292b1b['isValid']()){_0x150e10['push']('\x22'+_0x3c2d46+'\x22');}else{_0x462326['push'](_0x64ca('0x7d'));}break;case _0x64ca('0x31'):var _0x1df02d=parseInt(_0x3c2d46);_0x3c2d46=_[_0x64ca('0x7e')](_0x1df02d)||_0x1df02d<0x0||_0x1df02d>0x4?_0x4f0468?0x3:0x2:_0x1df02d;_0x150e10['push']('\x22'+_0x3c2d46+'\x22');break;case'UserId':var _0x143b28=parseInt(_0x3c2d46);if(_[_0x64ca('0x7f')](_0x143b28)&&_[_0x64ca('0x80')](_0x50ffc4,_0x143b28)){_0x150e10[_0x64ca('0x1b')]('\x22'+_0x143b28+'\x22');}else{_0x462326[_0x64ca('0x1b')]('agent\x20not\x20exists');}break;case _0x64ca('0x81'):if(isEmail(_0x3c2d46)){_0x150e10[_0x64ca('0x1b')]('\x22'+_0x3c2d46+'\x22');}else{_0x462326[_0x64ca('0x1b')](_0x64ca('0x82'));}break;case _0x64ca('0x83'):var _0x291eed=moment(_0x3c2d46,'YYYY-MM-DD',!![]);if(_0x291eed[_0x64ca('0x84')]()){_0x150e10[_0x64ca('0x1b')]('\x22'+_0x3c2d46+'\x22');}else{_0x462326[_0x64ca('0x1b')](_0x64ca('0x85'));}break;case _0x64ca('0x6a'):var _0x40f60f=shared['timezones'];var _0x210e48=_0x40f60f[_0x3c2d46];if(!_[_0x64ca('0x1e')](_0x210e48)){var _0x446aad=_0x210e48[_0x64ca('0x6b')];_0x150e10[_0x64ca('0x1b')]('\x22'+_0x3c2d46+'\x22');_0x150e10[_0x64ca('0x1b')]('\x22'+_0x446aad+'\x22');}break;default:_0x150e10[_0x64ca('0x1b')]('\x22'+_0x3c2d46+'\x22');}}else{switch(_0x338c17){case _0x64ca('0x86'):case _0x64ca('0x10'):_0x462326[_0x64ca('0x1b')](_0x338c17+_0x64ca('0x87'));break;default:_0x150e10['push']('\x22\x22');}}}}else{var _0xa9500='';if(!_[_0x64ca('0x1e')](_0x2eef69)){if(!_0x17a64e[_0x64ca('0x88')](_0x2eef69['id'])){if(!_[_0x64ca('0x1e')](_0x14d64d['data'][_0x461292][_0x3bd587[_0x338c17]])){var _0x3c2d46=_[_0x64ca('0x89')](_0x14d64d[_0x64ca('0x7a')][_0x461292][_0x3bd587[_0x338c17]][_0x64ca('0x8a')](/"/g,'\x27'));var _0x38e397=phoneDescriptions[_0x64ca('0x7c')](_0x57af1c=>_0x57af1c['itemTypeId']===_0x2eef69['id']);if(!_[_0x64ca('0x1e')](_0x38e397)){var _0x553c68=_[_0x64ca('0x89')](_0x14d64d[_0x64ca('0x7a')][_0x461292][_0x3bd587[_0x38e397[_0x64ca('0x8b')]]][_0x64ca('0x8a')](/"/g,'\x27'));if(!_[_0x64ca('0x1e')](_0x553c68))_0x3c2d46=_0x3c2d46+'§'+_0x553c68;}if(_0xa9500=='')_0xa9500=_0x3c2d46;else _0xa9500+='|'+_0x3c2d46;}_0x4e9387['push'](_0x2eef69['id']+':'+_0xa9500);_0x17a64e[_0x2eef69['id']]=0x1;}}}}if(hasAdditionalPhones){_0x150e10[_0x64ca('0x1b')]('\x22'+_0x4e9387[_0x64ca('0x12')](';')+'\x22');}if(_0x462326[_0x64ca('0x1a')]){handleError(_0x14d64d[_0x64ca('0x7a')][_0x461292],{'code':'SystemRow','message':_0x462326[_0x64ca('0x12')]()});}else{fs[_0x64ca('0x8c')](_0x77ef71,_0x150e10[_0x64ca('0x12')]()+'\x0a');}_0x150e10=[];}if(!(stats[_0x64ca('0x7b')]%0xc8)){socket[_0x64ca('0x8d')](_0x64ca('0x8e')+_0x27a236,stats);stats[_0x64ca('0x59')]=[];}}if(stopped){logger[_0x64ca('0x56')](_0x64ca('0x8f'));_0x58c406[_0x64ca('0x90')]();}}catch(_0x21b1e0){handleError(_0x14d64d[_0x64ca('0x7a')][_0x461292],{'code':_0x64ca('0x91'),'message':_0x21b1e0[_0x64ca('0x5b')]});logger['error']('step',_0x21b1e0[_0x64ca('0x5b')]);}},'complete':function(){try{var _0x478ae6=[];var _0x1ee712=[];var _0xa4180b=_0x64ca('0x3c');if(_0xdaff8['duplicates']&&_0xdaff8[_0x64ca('0x92')][_0x64ca('0x1a')]){_0xa4180b=_0x64ca('0x93')+_0x27a236;_0x478ae6[_0x64ca('0x1b')]('CREATE\x20TABLE\x20'+_0xa4180b+_0x64ca('0x94'));}tmp_campaigns=_0x64ca('0x95')+_0x27a236;tmp_voice_queues=_0x64ca('0x96')+_0x27a236;_0x1ee712[_0x64ca('0x1b')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0x64ca('0x97'));_0x1ee712[_0x64ca('0x1b')](_0x64ca('0x98')+tmp_voice_queues+_0x64ca('0x97'));BPromise[_0x64ca('0x99')](_0x1ee712,handleTZQuery)[_0x64ca('0x19')](function(_0x5b9347){updateTzCampaigns(_0xdaff8[_0x64ca('0x2f')])[_0x64ca('0x19')](function(_0x3b1b7a){updateTzVoiceQueues(_0xdaff8[_0x64ca('0x2f')])[_0x64ca('0x19')](function(_0x5b4168){if(hasTZ)_0x440253=_0x440253[_0x64ca('0x8a')](_0x64ca('0x6a'),_0x64ca('0x9a'));var _0x5de755=util[_0x64ca('0xc')](_0x64ca('0x9b'),_0x77ef71,_0xa4180b,_0x440253,_0xdaff8[_0x64ca('0x2f')],_0xdaff8['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x3bd587[_0x64ca('0x46')])){_0x5de755+=',\x20scheduledAt\x20=\x20NOW()';}_0x478ae6[_0x64ca('0x1b')](_0x5de755);if(_0xdaff8[_0x64ca('0x92')]&&_0xdaff8[_0x64ca('0x92')][_0x64ca('0x1a')]){_0x478ae6[_0x64ca('0x1b')](insertCmContact(_0xdaff8[_0x64ca('0x2f')],_0xa4180b,_0xdaff8['duplicates'],_0x3bd587));_0x478ae6['push'](_0x64ca('0x9c')+_0xa4180b+';');}BPromise[_0x64ca('0x99')](_0x478ae6,handleQuery)[_0x64ca('0x19')](function(_0x3e7b08){BPromise[_0x64ca('0x1c')]([handleAdditionalPhones()])['then'](function(){_0x478ae6=[];for(var _0x506542=0x0;_0x506542<promisesAdditionalPhones[_0x64ca('0x1a')];_0x506542++){if(promisesAdditionalPhones[_0x506542][_0x64ca('0x10')]!='§'){_0x478ae6[_0x64ca('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x506542][_0x64ca('0x9d')],promisesAdditionalPhones[_0x506542]['contactTypeId'],promisesAdditionalPhones[_0x506542][_0x64ca('0x10')],promisesAdditionalPhones[_0x506542][_0x64ca('0x9e')]));}}BPromise[_0x64ca('0x1c')](_0x478ae6)[_0x64ca('0x19')](function(){_0x478ae6=[];if(hasTZ){_0x478ae6[_0x64ca('0x1b')](insertTzCmHopper(_0xdaff8[_0x64ca('0x2f')],'voice_queues_has_cm_lists',_0x64ca('0x65'),'VoiceQueueId',_0x4f0468,tmp_voice_queues));_0x478ae6[_0x64ca('0x1b')](insertTzCmHopperBlack(_0xdaff8['ListId'],_0x64ca('0x9f'),_0x64ca('0x65'),_0x64ca('0xa0')));_0x478ae6[_0x64ca('0x1b')](insertTzCmHopper(_0xdaff8['ListId'],_0x64ca('0xa1'),'campaigns',_0x64ca('0xa2'),_0x4f0468,tmp_campaigns));_0x478ae6[_0x64ca('0x1b')](insertTzCmHopperBlack(_0xdaff8[_0x64ca('0x2f')],'campaigns_has_cm_blacklists','campaigns','CampaignId'));_0x478ae6[_0x64ca('0x1b')](insertCmHopperAdditionalPhones(_0xdaff8[_0x64ca('0x2f')]));}else{_0x478ae6['push'](insertCmHopper(_0xdaff8[_0x64ca('0x2f')],'voice_queues_has_cm_lists',_0x64ca('0x65'),'VoiceQueueId',_0x4f0468));_0x478ae6[_0x64ca('0x1b')](insertCmHopperBlack(_0xdaff8[_0x64ca('0x2f')],'voice_queues_has_cm_blacklists',_0x64ca('0x65'),_0x64ca('0xa0')));_0x478ae6[_0x64ca('0x1b')](insertCmHopper(_0xdaff8[_0x64ca('0x2f')],'campaigns_has_cm_lists','campaigns',_0x64ca('0xa2'),_0x4f0468));_0x478ae6[_0x64ca('0x1b')](insertCmHopperBlack(_0xdaff8[_0x64ca('0x2f')],_0x64ca('0xa3'),_0x64ca('0x60'),_0x64ca('0xa2')));_0x478ae6[_0x64ca('0x1b')](insertCmHopperAdditionalPhones(_0xdaff8[_0x64ca('0x2f')]));}_0x478ae6['push'](_0x64ca('0x9c')+tmp_campaigns+';');_0x478ae6[_0x64ca('0x1b')](_0x64ca('0x9c')+tmp_voice_queues+';');BPromise[_0x64ca('0x99')](_0x478ae6,handleQuery)[_0x64ca('0x19')](function(_0x45b2e2){stats[_0x64ca('0xa4')]=!![];stats[_0x64ca('0xa5')]=_0xdaff8[_0x64ca('0x92')]&&_0xdaff8['duplicates'][_0x64ca('0x1a')]?results[0x2][_0x64ca('0xa5')]:results[0x0][_0x64ca('0xa5')];socket[_0x64ca('0x8d')](_0x64ca('0x8e')+_0x27a236,stats);fs[_0x64ca('0xa6')](_0x984a6a);fs[_0x64ca('0xa6')](_0x77ef71);process[_0x64ca('0x58')](0x0);})[_0x64ca('0x5d')](function(_0x328e7a){logger[_0x64ca('0x57')](_0x328e7a['message']);process['exit'](0x1);});});});})[_0x64ca('0x5d')](function(_0x290e72){logger['error'](_0x290e72[_0x64ca('0x5b')]);process[_0x64ca('0x58')](0x1);});});});});}catch(_0x3f6575){logger[_0x64ca('0x57')](_0x64ca('0xa7'),_0x3f6575['message']);process[_0x64ca('0x58')](0x1);}},'error':function(_0x2020c9,_0x2bf4f6,_0x2ccf7e,_0x3510d2){throw new Error(_0x3510d2);}});});}function validate(){if(process[_0x64ca('0xa8')]&&process[_0x64ca('0xa8')]['length']<0x4){throw new Error(_0x64ca('0xa9'));}var _0x4e166e=path[_0x64ca('0x12')](config[_0x64ca('0x71')],_0x64ca('0x72'),process[_0x64ca('0xa8')][0x2]);if(!fs['existsSync'](_0x4e166e)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x172f64={};try{_0x172f64=JSON[_0x64ca('0xaa')](process[_0x64ca('0xa8')][0x3]);if(!_0x172f64[_0x64ca('0xab')]){throw new Error(_0x64ca('0xac'));}if(!_0x172f64[_0x64ca('0xab')][_0x64ca('0x10')]){throw new Error(_0x64ca('0xad'));}if(!_0x172f64['binding']['firstName']){throw new Error(_0x64ca('0xae'));}var _0x3937a5=0x0;if(_0x172f64[_0x64ca('0xab')][_0x64ca('0x32')]){_0x3937a5=0x1;}if(!_0x172f64['ListId']){throw new Error(_0x64ca('0xaf'));}}catch(_0x4d3503){throw new Error('body\x20id\x20mandatory');}var _0x466d74=[];try{_0x466d74=_[_0x64ca('0xb0')](JSON[_0x64ca('0xaa')](process[_0x64ca('0xa8')][0x4]),'id');}catch(_0x4acf4d){logger[_0x64ca('0x56')](_0x64ca('0xb1'));}main(_0x4e166e,_0x172f64,_0x466d74,_0x3937a5);}validate();process['on'](_0x64ca('0xb2'),handleStop);process['on'](_0x64ca('0xb3'),handleUncaughtException);
\ No newline at end of file
+var _0xd566=['timezones','dialTimezone','utcOffset','set','offset','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','rows','data','find','hasOwnProperty','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','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','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','scheduledat',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','AdditionalPhones','length','push','all','then','split','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.phone','cm_hopper_black','from','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.ListId\x20=\x20','into','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','keys','CompanyId','deletedAt\x20IS\x20NULL','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','code','info','query','spread','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','sequelize','catch','voice_queues.id','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId='];(function(_0x7d5858,_0x51bff3){var _0x3c8041=function(_0x44af52){while(--_0x44af52){_0x7d5858['push'](_0x7d5858['shift']());}};_0x3c8041(++_0x51bff3);}(_0xd566,0x100));var _0x6d56=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd566[_0xfae23b];return _0x200640;};'use strict';var fs=require('fs');var path=require(_0x6d56('0x0'));var _=require(_0x6d56('0x1'));var Papa=require(_0x6d56('0x2'));var util=require(_0x6d56('0x3'));var BPromise=require(_0x6d56('0x4'));var moment=require(_0x6d56('0x5'));var squel=require('squel');var Redis=require(_0x6d56('0x6'));var db=require(_0x6d56('0x7'))['db'];var config=require(_0x6d56('0x8'));var shared=require(_0x6d56('0x9'));var logger=require('../../../config/logger')('import');config[_0x6d56('0xa')]=_[_0x6d56('0xb')](config['redis'],{'host':_0x6d56('0xc'),'port':0x18eb});var socket=require(_0x6d56('0xd'))(new Redis(config[_0x6d56('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x6d56('0xe')](_0x6d56('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x6d56('0xe')](_0x6d56('0xf'));function isEmail(_0x511a5e){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))*$/[_0x6d56('0x10')](_0x511a5e);}function selectNotIn(_0x19506f,_0x736ff9,_0x3e2809,_0x2b27a0,_0x3cd576){return squel[_0x6d56('0x11')]()[_0x6d56('0x12')](_0x6d56('0x13'))['from'](_0x2b27a0)[_0x6d56('0x14')](_0x736ff9,null,_0x736ff9+_0x6d56('0x15')+_0x2b27a0+'.'+_0x3e2809)[_0x6d56('0x16')](_0x2b27a0+'.'+_0x3e2809+_0x6d56('0x17')+_0x19506f+'.'+_0x3e2809)[_0x6d56('0x16')](_0x736ff9+_0x6d56('0x18')+_0x3cd576[_0x6d56('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x42a7f9,_0x377cdb){promisesAdditionalPhones=[];return db[_0x6d56('0x19')]['findAll']({'raw':!![],'attributes':['id',_0x6d56('0x1a')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0xa0fccd){if(_0xa0fccd!==null){var _0x1416e8=[];for(var _0x47a601=0x0;_0x47a601<_0xa0fccd[_0x6d56('0x1b')];_0x47a601++){var _0x380d3a=_0xa0fccd[_0x47a601];_0x1416e8[_0x6d56('0x1c')](insertAdditionalPhones(_0x380d3a));}}Promise[_0x6d56('0x1d')](_0x1416e8)[_0x6d56('0x1e')](function(){_0x42a7f9({'val':0x1});});});});}function insertAdditionalPhones(_0x1525f9){return new Promise(function(_0x1e428c,_0x229919){var _0x2a22d3=_0x1525f9[_0x6d56('0x1a')];var _0xd39e9=_0x2a22d3[_0x6d56('0x1f')](';');var _0x1987e1=[];orderBy=0x0;for(var _0x57a9e2=0x0;_0x57a9e2<_0xd39e9[_0x6d56('0x1b')];_0x57a9e2++){_0x1987e1[_0x6d56('0x1c')](splitAdditionalPhone(_0x1525f9['id'],_0xd39e9[_0x57a9e2]));}Promise[_0x6d56('0x1d')](_0x1987e1)[_0x6d56('0x1e')](function(){_0x1e428c({'val':_0xd39e9[_0x6d56('0x1b')]});});});}function splitAdditionalPhone(_0x2af517,_0x1a6481){return new Promise(function(_0x53d6cd,_0x420581){var _0x362183=_0x1a6481[_0x6d56('0x1f')](':');var _0x2e2a4f=_0x362183[0x0];var _0x17fa99=_0x362183[0x1];if(!_[_0x6d56('0x20')](_0x17fa99)){var _0x1d588d=_0x17fa99['split']('|');var _0x383fa0=[];for(var _0x231bb3=0x0;_0x231bb3<_0x1d588d[_0x6d56('0x1b')];_0x231bb3++){if(_0x1d588d[_0x231bb3]!==''){var _0x35d57b=_[_0x6d56('0x21')](promisesAdditionalPhones,{'contactId':_0x2af517,'phone':_0x1d588d[_0x231bb3]});if(_0x35d57b[_0x6d56('0x1b')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x2af517,'contactTypeId':_0x2e2a4f,'phone':_0x1d588d[_0x231bb3],'orderBy':orderBy});}}}_0x53d6cd({'ok':0x1});}else _0x53d6cd({'res':0x0});});}function createAdditionalPhone(_0x2820f2,_0x24892c,_0x5ab9f9,_0x1f9be9){var _0x517ee1='';var _0x45088c='';var _0x4751ef=_0x5ab9f9[_0x6d56('0x1f')]('§');_0x517ee1=_0x4751ef[0x0];if(_0x4751ef['length']==0x2)_0x45088c=_0x4751ef[0x1];return new Promise(function(_0x5a79b5,_0x88f2a1){return db[_0x6d56('0x22')][_0x6d56('0x23')]({'where':{'CmContactId':_0x2820f2,'item':_0x517ee1}})['then'](function(_0x125cdd){if(_0x125cdd){return db['CmContactHasItem'][_0x6d56('0x24')]({'ItemTypeId':_0x24892c,'description':_0x45088c,'OrderBy':_0x1f9be9},{'where':{'CmContactId':_0x2820f2,'item':_0x517ee1}})['then'](function(_0x37caa6){_0x5a79b5({'res':_0x6d56('0x25')});});}else{return db[_0x6d56('0x22')][_0x6d56('0x26')]({'CmContactId':_0x2820f2,'item':_0x517ee1,'description':_0x45088c,'ItemTypeId':_0x24892c,'OrderBy':_0x1f9be9,'ItemClass':_0x6d56('0x27')})['then'](function(_0x1a64de){_0x5a79b5({'res':_0x6d56('0x28')});});}});});}function insertCmHopper(_0xa9e0a2,_0x476915,_0x269fc3,_0x34cbe7,_0x25ab00){var _0x3848f1=['cm_contacts.phone',_0x6d56('0x29'),_0x6d56('0x2a'),_0x6d56('0x2b'),_0x476915+'.'+_0x34cbe7,_0x6d56('0x2c'),_0x6d56('0x2d'),'cm_contacts.priority',_0x6d56('0x2e'),'\x22'+_0x25ab00+'\x22'];return squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x30'))[_0x6d56('0x31')]([_0x6d56('0x13'),'scheduledat',_0x6d56('0x32'),_0x6d56('0x33'),_0x34cbe7,_0x6d56('0x34'),_0x6d56('0x35'),_0x6d56('0x36'),_0x6d56('0x37'),_0x6d56('0x38')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x3848f1)['from'](_0x476915)[_0x6d56('0x14')](_0x6d56('0x3a'),null,'cm_contacts.ListId\x20=\x20'+_0x476915+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x269fc3,null,_0x269fc3+'.id\x20=\x20'+_0x476915+'.'+_0x34cbe7)[_0x6d56('0x16')](_0x476915+_0x6d56('0x3c'),_0xa9e0a2)[_0x6d56('0x16')](_0x6d56('0x3d'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x476915,_0x269fc3,_0x34cbe7,_0x6d56('0x30'),[_0x6d56('0x3e'),_0x6d56('0x3f')]))[_0x6d56('0x16')](_0x6d56('0x40'),selectNotIn(_0x476915,_0x269fc3,_0x34cbe7,_0x6d56('0x30'),['\x22always\x22'])))[_0x6d56('0x41')]();}function insertCmHopperBlack(_0x1b9184,_0x3cd511,_0x35e992,_0x3c828a){var _0xd25302=[_0x6d56('0x42'),_0x6d56('0x2a'),'cm_contacts.ListId',_0x3cd511+'.'+_0x3c828a,_0x6d56('0x2c'),'cm_contacts.updatedAt'];return squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x43'))[_0x6d56('0x31')]([_0x6d56('0x13'),'ContactId',_0x6d56('0x33'),_0x3c828a,_0x6d56('0x34'),'updatedAt'],squel[_0x6d56('0x11')]()['fields'](_0xd25302)[_0x6d56('0x44')](_0x3cd511)[_0x6d56('0x14')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x3cd511+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x35e992,null,_0x35e992+_0x6d56('0x15')+_0x3cd511+'.'+_0x3c828a)[_0x6d56('0x16')](_0x3cd511+'.CmListId\x20=\x20?',_0x1b9184)['where'](_0x6d56('0x3d'),NOW)['where'](_0x6d56('0x40'),squel['select']()[_0x6d56('0x12')](_0x6d56('0x13'))[_0x6d56('0x44')](_0x6d56('0x43'))[_0x6d56('0x16')](_0x6d56('0x45'),_0x1b9184)[_0x6d56('0x16')](_0x3c828a+_0x6d56('0x17')+_0x3cd511+'.'+_0x3c828a)))[_0x6d56('0x41')]();}function insertTzCmHopper(_0x3b2467,_0x36b80d,_0x17b1cc,_0x4fc39d,_0x16bd5c,_0x1dc87d){var _0x2e8734=['cm_contacts.phone',_0x6d56('0x46')+_0x1dc87d+_0x6d56('0x47'),_0x6d56('0x2a'),_0x6d56('0x2b'),_0x36b80d+'.'+_0x4fc39d,_0x6d56('0x2c'),_0x6d56('0x2d'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x16bd5c+'\x22'];var _0x209e9e=squel[_0x6d56('0x2f')]()['into'](_0x6d56('0x30'))[_0x6d56('0x31')]([_0x6d56('0x13'),'scheduledat','ContactId',_0x6d56('0x33'),_0x4fc39d,_0x6d56('0x34'),_0x6d56('0x35'),_0x6d56('0x36'),_0x6d56('0x37'),'recallme'],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x2e8734)[_0x6d56('0x44')](_0x36b80d)[_0x6d56('0x14')](_0x6d56('0x3a'),null,_0x6d56('0x48')+_0x36b80d+_0x6d56('0x3b'))[_0x6d56('0x14')](_0x17b1cc,null,_0x17b1cc+_0x6d56('0x15')+_0x36b80d+'.'+_0x4fc39d)[_0x6d56('0x14')](_0x1dc87d,null,_0x1dc87d+_0x6d56('0x15')+_0x36b80d+'.'+_0x4fc39d)['where'](_0x36b80d+_0x6d56('0x3c'),_0x3b2467)['where'](_0x6d56('0x3d'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x36b80d,_0x17b1cc,_0x4fc39d,_0x6d56('0x30'),[_0x6d56('0x3e'),'\x22onlyIfOpen\x22']))[_0x6d56('0x16')](_0x6d56('0x40'),selectNotIn(_0x36b80d,_0x17b1cc,_0x4fc39d,_0x6d56('0x30'),[_0x6d56('0x3e')])))[_0x6d56('0x41')]();return _0x209e9e;}function insertTzCmHopperBlack(_0x53626f,_0x14ef36,_0x395cd5,_0x2fffdd){var _0x4a1d9a=[_0x6d56('0x42'),_0x6d56('0x2a'),'cm_contacts.ListId',_0x14ef36+'.'+_0x2fffdd,_0x6d56('0x2c'),_0x6d56('0x2d')];return squel['insert']()[_0x6d56('0x49')](_0x6d56('0x43'))['fromQuery']([_0x6d56('0x13'),'ContactId',_0x6d56('0x33'),_0x2fffdd,_0x6d56('0x34'),_0x6d56('0x35')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x4a1d9a)['from'](_0x14ef36)['join'](_0x6d56('0x3a'),null,_0x6d56('0x48')+_0x14ef36+_0x6d56('0x3b'))['join'](_0x395cd5,null,_0x395cd5+_0x6d56('0x15')+_0x14ef36+'.'+_0x2fffdd)[_0x6d56('0x16')](_0x14ef36+_0x6d56('0x3c'),_0x53626f)[_0x6d56('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x6d56('0x16')](_0x6d56('0x40'),squel[_0x6d56('0x11')]()['field'](_0x6d56('0x13'))[_0x6d56('0x44')](_0x6d56('0x43'))[_0x6d56('0x16')](_0x6d56('0x45'),_0x53626f)[_0x6d56('0x16')](_0x2fffdd+_0x6d56('0x17')+_0x14ef36+'.'+_0x2fffdd)))[_0x6d56('0x41')]();}function insertCmHopperAdditionalPhones(_0x349ffe){var _0x867393=[_0x6d56('0x4a'),_0x6d56('0x4b'),_0x6d56('0x4c'),_0x6d56('0x4d'),_0x6d56('0x4e')];return squel[_0x6d56('0x2f')]()[_0x6d56('0x49')](_0x6d56('0x4f'))[_0x6d56('0x31')](['CmHopperId',_0x6d56('0x13'),_0x6d56('0x50'),_0x6d56('0x34'),_0x6d56('0x35')],squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0x867393)['from'](_0x6d56('0x30'))['join']('cm_contacts',null,_0x6d56('0x51'))[_0x6d56('0x14')](_0x6d56('0x52'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x6d56('0x16')]('cm_hopper.ListId\x20=\x20?',_0x349ffe)[_0x6d56('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x6d56('0x41')]();}function insertCmContact(_0x4e7205,_0x290001,_0x569819,_0x5dc8d8){var _0xc033b1=_['concat'](_[_0x6d56('0x53')](_0x5dc8d8),['ListId',_0x6d56('0x54'),_0x6d56('0x34'),_0x6d56('0x35')]);return squel['insert']()[_0x6d56('0x49')](_0x6d56('0x3a'))[_0x6d56('0x31')](_0xc033b1,squel[_0x6d56('0x11')]()[_0x6d56('0x39')](_0xc033b1)['from'](_0x290001)['where']('('+_0x569819[_0x6d56('0x14')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0x6d56('0x39')](_0x569819)['from'](_0x6d56('0x3a'))['where'](_0x6d56('0x45'),_0x4e7205)['where'](_0x6d56('0x55')))[_0x6d56('0x16')]('id\x20IN\x20?',squel[_0x6d56('0x11')]()['field'](_0x6d56('0x56'),_0x6d56('0x57'))['from'](_0x290001)[_0x6d56('0x58')](_0x569819[_0x6d56('0x14')](','))))[_0x6d56('0x41')]();}function handleStop(){logger['info'](_0x6d56('0x59'));stopped=!![];}function handleUncaughtException(_0x27461f){logger[_0x6d56('0x5a')](_0x27461f[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);}function handleError(_0x5ad17c,_0x3b50c1){stats[_0x6d56('0x5d')]['push']({'name':_0x3b50c1[_0x6d56('0x5e')],'message':_0x3b50c1[_0x6d56('0x5b')],'row':_0x5ad17c});}function handleQuery(_0x513b2a){logger[_0x6d56('0x5f')](_0x513b2a);return db['sequelize'][_0x6d56('0x60')](_0x513b2a)[_0x6d56('0x61')](function(_0x285fb1){results[_0x6d56('0x1c')](_0x285fb1);})['catch'](function(_0x5dab91){logger[_0x6d56('0x5a')](_0x5dab91[_0x6d56('0x5b')]);});}function updateTzCampaigns(_0x51951f){return new Promise(function(_0x3ddfef,_0x39e1c7){var _0x595df1=squel[_0x6d56('0x11')]()[_0x6d56('0x39')]([_0x6d56('0x62'),_0x6d56('0x63')])[_0x6d56('0x44')](_0x6d56('0x64'))[_0x6d56('0x14')](_0x6d56('0x65'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x6d56('0x16')](_0x6d56('0x66')+_0x51951f);db[_0x6d56('0x67')][_0x6d56('0x60')](_0x595df1['toString']())[_0x6d56('0x61')](function(_0x5a5b26){var _0x24ed6b=[];for(var _0x29bbe0=0x0;_0x29bbe0<_0x5a5b26[_0x6d56('0x1b')];_0x29bbe0++){_0x24ed6b['push'](getTimezoneData(_0x5a5b26[_0x29bbe0],tmp_campaigns));}BPromise[_0x6d56('0x1d')](_0x24ed6b)[_0x6d56('0x1e')](function(){_0x3ddfef({'val':0x1});});})[_0x6d56('0x68')](function(_0x16042c){logger[_0x6d56('0x5a')](_0x16042c[_0x6d56('0x5b')]);_0x3ddfef({'val':0x0});});});}function updateTzVoiceQueues(_0x73405a){return new Promise(function(_0x49679f,_0x355ab2){var _0x3a7d49=squel[_0x6d56('0x11')]()[_0x6d56('0x39')]([_0x6d56('0x69'),'voice_queues.dialTimezone'])[_0x6d56('0x44')](_0x6d56('0x6a'))[_0x6d56('0x14')](_0x6d56('0x6b'),null,_0x6d56('0x6c'))[_0x6d56('0x16')](_0x6d56('0x6d')+_0x73405a);db[_0x6d56('0x67')][_0x6d56('0x60')](_0x3a7d49[_0x6d56('0x41')]())['spread'](function(_0x49d32b){var _0x35cf68=[];for(var _0x1e843a=0x0;_0x1e843a<_0x49d32b['length'];_0x1e843a++){_0x35cf68[_0x6d56('0x1c')](getTimezoneData(_0x49d32b[_0x1e843a],tmp_voice_queues));}BPromise['all'](_0x35cf68)[_0x6d56('0x1e')](function(){_0x49679f({'val':0x1});});})[_0x6d56('0x68')](function(_0x12e99c){logger[_0x6d56('0x5a')](_0x12e99c[_0x6d56('0x5b')]);_0x49679f({'val':0x0});});});}function getTimezoneData(_0x4115d4,_0x225181){return new Promise(function(_0x37d2e2,_0x13f84e){var _0x38dd75=shared[_0x6d56('0x6e')];var _0x4abc3e=_0x38dd75[_0x4115d4[_0x6d56('0x6f')]];if(_['isNil'](_0x4abc3e)){_0x37d2e2({'ret':0x1});}else{var _0x491b6a=_0x4abc3e[_0x6d56('0x70')];var _0x1f3485=squel['insert']()[_0x6d56('0x49')](_0x225181)['set']('id',_0x4115d4['id'])[_0x6d56('0x71')](_0x6d56('0x72'),_0x491b6a)[_0x6d56('0x71')]('dialTimezone',_0x4115d4['dialTimezone'])[_0x6d56('0x41')]();return db['sequelize'][_0x6d56('0x60')](_0x1f3485)[_0x6d56('0x61')](function(_0x4ec4c4){_0x37d2e2({'ret':0x1});})['catch'](function(_0x2b3e22){logger['error'](_0x2b3e22[_0x6d56('0x5b')]);_0x13f84e({'ret':0x1});});}});}function handleTZQuery(_0x43b2b2){logger[_0x6d56('0x5f')](_0x43b2b2);return db[_0x6d56('0x67')]['query'](_0x43b2b2)['spread'](function(_0x3bc8e4){})['catch'](function(_0x452f7f){logger[_0x6d56('0x5a')](_0x452f7f['message']);});}function main(_0x34dd67,_0x2f1792,_0x21b8cf,_0x6f423f){logger[_0x6d56('0x5f')](_0x6d56('0x73'),_0x34dd67,JSON[_0x6d56('0x74')](_0x2f1792));process[_0x6d56('0x75')](_0x6d56('0x76'));var _0x117c67=_0x2f1792[_0x6d56('0x77')];var _0x3d4a7d=_['clone'](_0x117c67);var _0x20f403=_0x2f1792[_0x6d56('0x78')];var _0x296d2f=path[_0x6d56('0x14')](config['root'],_0x6d56('0x79'),_0x20f403+_0x6d56('0x7a'));hasTZ=_[_0x6d56('0x53')](_0x117c67)[_0x6d56('0x7b')](_0x6d56('0x6f'));var _0x1047fb=_[_0x6d56('0x53')](_0x117c67)[_0x6d56('0x14')]();logger['info'](_0x6d56('0x7c'),_0x1047fb);db[_0x6d56('0x7d')][_0x6d56('0x7e')]({'raw':!![],'attributes':['id',_0x6d56('0x7f')]})[_0x6d56('0x1e')](function(_0x199d66){for(var _0x32823b=0x0;_0x32823b<_0x199d66[_0x6d56('0x1b')];_0x32823b++){if(_0x199d66[_0x32823b][_0x6d56('0x7f')]in _0x117c67){contactItemTypes[_0x6d56('0x1c')](_0x199d66[_0x32823b]);delete _0x3d4a7d[_0x199d66[_0x32823b][_0x6d56('0x7f')]];hasAdditionalPhones=!![];}for(var _0x4dff41 in _0x117c67){if(_0x199d66[_0x32823b][_0x6d56('0x7f')]+_0x6d56('0x80')===_0x4dff41){phoneDescriptions['push']({'itemTypeId':_0x199d66[_0x32823b]['id'],'description':_0x4dff41});delete _0x3d4a7d[_0x4dff41];}}}if(hasAdditionalPhones)_0x3d4a7d[_0x6d56('0x1a')]='';var _0x5db039=_[_0x6d56('0x53')](_0x3d4a7d)['join']();logger[_0x6d56('0x5f')](_0x6d56('0x7c'),_0x5db039);fs[_0x6d56('0x81')](_0x296d2f,_0x5db039+'\x0a');Papa[_0x6d56('0x82')](fs['createReadStream'](_0x34dd67),{'header':!![],'skipEmptyLines':!![],'step':function(_0x321773,_0x18dc26){try{for(var _0x4367e1=0x0,_0x140936=[];_0x4367e1<_0x321773['data'][_0x6d56('0x1b')];_0x4367e1++){stats[_0x6d56('0x83')]+=0x1;if(_0x321773['errors'][_0x4367e1]){handleError(_0x321773[_0x6d56('0x84')][_0x4367e1],_0x321773[_0x6d56('0x5d')][_0x4367e1]);}else{var _0x2bd335=[];var _0x178f16=[];var _0x2587f8={};for(var _0x1747c7 in _0x117c67){let _0x2b0746=contactItemTypes['find'](_0x2b7a3f=>_0x2b7a3f[_0x6d56('0x7f')]===_0x1747c7);let _0x5f09c5=contactItemTypes[_0x6d56('0x85')](_0x393cbb=>_0x393cbb['name']+_0x6d56('0x80')===_0x1747c7);if(_[_0x6d56('0x20')](_0x2b0746)&&_['isNil'](_0x5f09c5)){if(_0x117c67[_0x6d56('0x86')](_0x1747c7)){if(_0x321773['data'][_0x4367e1][_0x117c67[_0x1747c7]]){var _0x440db3=_['trim'](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]]['replace'](/"/g,'\x27'));switch(_0x1747c7){case'scheduledat':var _0x5422a1=moment(_0x440db3,_0x6d56('0xf'),!![]);if(_0x5422a1[_0x6d56('0x87')]()){_0x140936['push']('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x88'));}break;case _0x6d56('0x36'):var _0xf3b45b=parseInt(_0x440db3);_0x440db3=_['isNaN'](_0xf3b45b)||_0xf3b45b<0x0||_0xf3b45b>0x4?_0x6f423f?0x3:0x2:_0xf3b45b;_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');break;case _0x6d56('0x37'):var _0x309bca=parseInt(_0x440db3);if(_[_0x6d56('0x89')](_0x309bca)&&_[_0x6d56('0x7b')](_0x21b8cf,_0x309bca)){_0x140936[_0x6d56('0x1c')]('\x22'+_0x309bca+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x8a'));}break;case _0x6d56('0x8b'):if(isEmail(_0x440db3)){_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')]('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x274ca4=moment(_0x440db3,_0x6d56('0x8c'),!![]);if(_0x274ca4['isValid']()){_0x140936['push']('\x22'+_0x440db3+'\x22');}else{_0x2bd335[_0x6d56('0x1c')](_0x6d56('0x8d'));}break;case _0x6d56('0x6f'):var _0xb0f974=shared['timezones'];var _0x164b65=_0xb0f974[_0x440db3];if(!_[_0x6d56('0x20')](_0x164b65)){var _0x1ce5ea=_0x164b65[_0x6d56('0x70')];_0x140936[_0x6d56('0x1c')]('\x22'+_0x440db3+'\x22');_0x140936[_0x6d56('0x1c')]('\x22'+_0x1ce5ea+'\x22');}break;default:_0x140936['push']('\x22'+_0x440db3+'\x22');}}else{switch(_0x1747c7){case'firstName':case'phone':_0x2bd335[_0x6d56('0x1c')](_0x1747c7+_0x6d56('0x8e'));break;default:_0x140936[_0x6d56('0x1c')]('\x22\x22');}}}}else{var _0x5c284a='';if(!_[_0x6d56('0x20')](_0x2b0746)){if(!_0x2587f8[_0x6d56('0x86')](_0x2b0746['id'])){if(!_[_0x6d56('0x20')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]])){var _0x440db3=_[_0x6d56('0x8f')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x1747c7]][_0x6d56('0x90')](/"/g,'\x27'));var _0x21aa7b=phoneDescriptions['find'](_0x45045a=>_0x45045a[_0x6d56('0x91')]===_0x2b0746['id']);if(!_[_0x6d56('0x20')](_0x21aa7b)){var _0x44e265=_[_0x6d56('0x8f')](_0x321773[_0x6d56('0x84')][_0x4367e1][_0x117c67[_0x21aa7b[_0x6d56('0x92')]]][_0x6d56('0x90')](/"/g,'\x27'));if(!_[_0x6d56('0x20')](_0x44e265))_0x440db3=_0x440db3+'§'+_0x44e265;}if(_0x5c284a=='')_0x5c284a=_0x440db3;else _0x5c284a+='|'+_0x440db3;}_0x178f16[_0x6d56('0x1c')](_0x2b0746['id']+':'+_0x5c284a);_0x2587f8[_0x2b0746['id']]=0x1;}}}}if(hasAdditionalPhones){_0x140936[_0x6d56('0x1c')]('\x22'+_0x178f16[_0x6d56('0x14')](';')+'\x22');}if(_0x2bd335['length']){handleError(_0x321773[_0x6d56('0x84')][_0x4367e1],{'code':_0x6d56('0x93'),'message':_0x2bd335[_0x6d56('0x14')]()});}else{fs[_0x6d56('0x94')](_0x296d2f,_0x140936[_0x6d56('0x14')]()+'\x0a');}_0x140936=[];}if(!(stats[_0x6d56('0x83')]%0xc8)){socket[_0x6d56('0x95')](_0x6d56('0x96')+_0x20f403,stats);stats[_0x6d56('0x5d')]=[];}}if(stopped){logger[_0x6d56('0x5f')](_0x6d56('0x97'));_0x18dc26[_0x6d56('0x98')]();}}catch(_0x55a781){handleError(_0x321773['data'][_0x4367e1],{'code':_0x6d56('0x99'),'message':_0x55a781['message']});logger[_0x6d56('0x5a')]('step',_0x55a781[_0x6d56('0x5b')]);}},'complete':function(){try{var _0xddf178=[];var _0x120ec6=[];var _0x276cd9=_0x6d56('0x3a');if(_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792[_0x6d56('0x9a')][_0x6d56('0x1b')]){_0x276cd9=_0x6d56('0x9b')+_0x20f403;_0xddf178[_0x6d56('0x1c')]('CREATE\x20TABLE\x20'+_0x276cd9+_0x6d56('0x9c'));}tmp_campaigns=_0x6d56('0x9d')+_0x20f403;tmp_voice_queues=_0x6d56('0x9e')+_0x20f403;_0x120ec6[_0x6d56('0x1c')](_0x6d56('0x9f')+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x120ec6['push']('CREATE\x20TABLE\x20'+tmp_voice_queues+_0x6d56('0xa0'));BPromise[_0x6d56('0xa1')](_0x120ec6,handleTZQuery)[_0x6d56('0x1e')](function(_0x466596){updateTzCampaigns(_0x2f1792['ListId'])[_0x6d56('0x1e')](function(_0x404875){updateTzVoiceQueues(_0x2f1792[_0x6d56('0x33')])[_0x6d56('0x1e')](function(_0x471ff2){if(hasTZ)_0x5db039=_0x5db039[_0x6d56('0x90')](_0x6d56('0x6f'),_0x6d56('0xa2'));var _0x8b2c54=util[_0x6d56('0xe')](_0x6d56('0xa3'),_0x296d2f,_0x276cd9,_0x5db039,_0x2f1792['ListId'],_0x2f1792[_0x6d56('0x54')]||null,NOW,NOW);if(_['isNil'](_0x117c67[_0x6d56('0xa4')])){_0x8b2c54+=_0x6d56('0xa5');}_0xddf178[_0x6d56('0x1c')](_0x8b2c54);if(_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792['duplicates'][_0x6d56('0x1b')]){_0xddf178[_0x6d56('0x1c')](insertCmContact(_0x2f1792[_0x6d56('0x33')],_0x276cd9,_0x2f1792[_0x6d56('0x9a')],_0x117c67));_0xddf178['push'](_0x6d56('0xa6')+_0x276cd9+';');}BPromise[_0x6d56('0xa1')](_0xddf178,handleQuery)[_0x6d56('0x1e')](function(_0xf82928){BPromise[_0x6d56('0x1d')]([handleAdditionalPhones()])[_0x6d56('0x1e')](function(){_0xddf178=[];for(var _0x5d54c5=0x0;_0x5d54c5<promisesAdditionalPhones[_0x6d56('0x1b')];_0x5d54c5++){if(promisesAdditionalPhones[_0x5d54c5][_0x6d56('0x13')]!='§'){_0xddf178[_0x6d56('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x5d54c5][_0x6d56('0xa7')],promisesAdditionalPhones[_0x5d54c5]['contactTypeId'],promisesAdditionalPhones[_0x5d54c5][_0x6d56('0x13')],promisesAdditionalPhones[_0x5d54c5]['orderBy']));}}BPromise['all'](_0xddf178)[_0x6d56('0x1e')](function(){_0xddf178=[];if(hasTZ){_0xddf178[_0x6d56('0x1c')](insertTzCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x6b'),'voice_queues',_0x6d56('0xa8'),_0x6f423f,tmp_voice_queues));_0xddf178[_0x6d56('0x1c')](insertTzCmHopperBlack(_0x2f1792[_0x6d56('0x33')],'voice_queues_has_cm_blacklists',_0x6d56('0x6a'),_0x6d56('0xa8')));_0xddf178[_0x6d56('0x1c')](insertTzCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x65'),'campaigns',_0x6d56('0xa9'),_0x6f423f,tmp_campaigns));_0xddf178[_0x6d56('0x1c')](insertTzCmHopperBlack(_0x2f1792[_0x6d56('0x33')],_0x6d56('0xaa'),_0x6d56('0x64'),_0x6d56('0xa9')));_0xddf178[_0x6d56('0x1c')](insertCmHopperAdditionalPhones(_0x2f1792[_0x6d56('0x33')]));}else{_0xddf178[_0x6d56('0x1c')](insertCmHopper(_0x2f1792['ListId'],_0x6d56('0x6b'),'voice_queues',_0x6d56('0xa8'),_0x6f423f));_0xddf178[_0x6d56('0x1c')](insertCmHopperBlack(_0x2f1792[_0x6d56('0x33')],'voice_queues_has_cm_blacklists','voice_queues',_0x6d56('0xa8')));_0xddf178[_0x6d56('0x1c')](insertCmHopper(_0x2f1792[_0x6d56('0x33')],_0x6d56('0x65'),_0x6d56('0x64'),'CampaignId',_0x6f423f));_0xddf178['push'](insertCmHopperBlack(_0x2f1792[_0x6d56('0x33')],_0x6d56('0xaa'),_0x6d56('0x64'),'CampaignId'));_0xddf178[_0x6d56('0x1c')](insertCmHopperAdditionalPhones(_0x2f1792[_0x6d56('0x33')]));}_0xddf178[_0x6d56('0x1c')](_0x6d56('0xa6')+tmp_campaigns+';');_0xddf178[_0x6d56('0x1c')](_0x6d56('0xa6')+tmp_voice_queues+';');BPromise[_0x6d56('0xa1')](_0xddf178,handleQuery)[_0x6d56('0x1e')](function(_0x47b3c7){stats[_0x6d56('0xab')]=!![];stats[_0x6d56('0xac')]=_0x2f1792[_0x6d56('0x9a')]&&_0x2f1792[_0x6d56('0x9a')]['length']?results[0x2][_0x6d56('0xac')]:results[0x0][_0x6d56('0xac')];socket[_0x6d56('0x95')](_0x6d56('0x96')+_0x20f403,stats);fs[_0x6d56('0xad')](_0x34dd67);fs[_0x6d56('0xad')](_0x296d2f);process[_0x6d56('0x5c')](0x0);})[_0x6d56('0x68')](function(_0x45cacc){logger[_0x6d56('0x5a')](_0x45cacc[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);});});});})[_0x6d56('0x68')](function(_0x1dcb7e){logger[_0x6d56('0x5a')](_0x1dcb7e[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);});});});});}catch(_0x543e0c){logger['error'](_0x6d56('0xae'),_0x543e0c[_0x6d56('0x5b')]);process[_0x6d56('0x5c')](0x1);}},'error':function(_0x3b8749,_0x38fa2f,_0x4d3888,_0x5e7945){throw new Error(_0x5e7945);}});});}function validate(){if(process[_0x6d56('0xaf')]&&process[_0x6d56('0xaf')]['length']<0x4){throw new Error(_0x6d56('0xb0'));}var _0x389643=path[_0x6d56('0x14')](config[_0x6d56('0xb1')],_0x6d56('0x79'),process[_0x6d56('0xaf')][0x2]);if(!fs['existsSync'](_0x389643)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x5bbfd8={};try{_0x5bbfd8=JSON[_0x6d56('0x82')](process['argv'][0x3]);if(!_0x5bbfd8['binding']){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5bbfd8[_0x6d56('0x77')][_0x6d56('0x13')]){throw new Error(_0x6d56('0xb2'));}if(!_0x5bbfd8['binding']['firstName']){throw new Error(_0x6d56('0xb3'));}var _0x46d3a4=0x0;if(_0x5bbfd8[_0x6d56('0x77')][_0x6d56('0x37')]){_0x46d3a4=0x1;}if(!_0x5bbfd8[_0x6d56('0x33')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x1d6c2d){throw new Error('body\x20id\x20mandatory');}var _0xa7166=[];try{_0xa7166=_[_0x6d56('0xb4')](JSON[_0x6d56('0x82')](process[_0x6d56('0xaf')][0x4]),'id');}catch(_0x44f912){logger[_0x6d56('0x5f')]('No\x20agent\x20available');}main(_0x389643,_0x5bbfd8,_0xa7166,_0x46d3a4);}validate();process['on'](_0x6d56('0xb5'),handleStop);process['on'](_0x6d56('0xb6'),handleUncaughtException);
\ No newline at end of file
index c100798..5a1d722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c3=['body','ContactItemType','name','_description','header','writeFileSync','parse','createReadStream','data','errors','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contactId','contactTypeId','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','papaparse','bluebird','squel','ioredis','../../../config/environment','../../../config/logger','import','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','YYYYMMDDHHmmss','test','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','catch','error','message','split','then','CmContactHasItem','findOne','updated','PHONE','CmContact','update','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','cm_hopper','fromQuery','scheduledat','ContactId','updatedAt','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','toString','cm_contacts.createdAt','into','cm_hopper_black','ListId','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','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','info','Received\x20SIGINT','exit','main','stringify','start','binding','clone','socket_timestamp','root','server/files/tmp'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa3c3,0xcc));var _0x3a3c=function(_0x49cd9a,_0x21c94e){_0x49cd9a=_0x49cd9a-0x0;var _0x37ad5f=_0xa3c3[_0x49cd9a];return _0x37ad5f;};'use strict';var fs=require('fs');var path=require(_0x3a3c('0x0'));var _=require('lodash');var Papa=require(_0x3a3c('0x1'));var util=require('util');var BPromise=require(_0x3a3c('0x2'));var moment=require('moment');var squel=require(_0x3a3c('0x3'));var Redis=require(_0x3a3c('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0x3a3c('0x5'));var logger=require(_0x3a3c('0x6'))(_0x3a3c('0x7'));config[_0x3a3c('0x8')]=_['defaults'](config['redis'],{'host':_0x3a3c('0x9'),'port':0x18eb});var socket=require(_0x3a3c('0xa'))(new Redis(config[_0x3a3c('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x3a3c('0xb')](_0x3a3c('0xc'));var tempTableName='cm_contacts_temp_'+moment()[_0x3a3c('0xb')](_0x3a3c('0xd'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x367223){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))*$/[_0x3a3c('0xe')](_0x367223);}function selectNotIn(_0x544fc3,_0x2eed5b,_0x19eacf,_0x1ade08,_0x2e2232){return squel['select']()[_0x3a3c('0xf')](_0x3a3c('0x10'))[_0x3a3c('0x11')](_0x1ade08)[_0x3a3c('0x12')](_0x2eed5b,null,_0x2eed5b+_0x3a3c('0x13')+_0x1ade08+'.'+_0x19eacf)[_0x3a3c('0x14')](_0x1ade08+'.'+_0x19eacf+_0x3a3c('0x15')+_0x544fc3+'.'+_0x19eacf)[_0x3a3c('0x14')](_0x2eed5b+_0x3a3c('0x16')+_0x2e2232[_0x3a3c('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x479a40,_0x56f2c8){promisesAdditionalPhones=[];promisesContact=[];return db[_0x3a3c('0x17')]['query'](_0x3a3c('0x18')+tempTableName)[_0x3a3c('0x19')](function(_0x2dc0d9){if(_0x2dc0d9!==null){var _0x2e34b0=[];for(var _0x3969e8=0x0;_0x3969e8<_0x2dc0d9[_0x3a3c('0x1a')];_0x3969e8++){var _0x37bf5b=_0x2dc0d9[_0x3969e8];if(!_[_0x3a3c('0x1b')](_0x37bf5b[_0x3a3c('0x10')])){if(!_[_0x3a3c('0x1b')](_0x37bf5b[_0x3a3c('0x1c')]))_0x2e34b0[_0x3a3c('0x1d')](insertAdditionalPhones(_0x37bf5b));promisesContact[_0x3a3c('0x1d')]({'contact':_0x37bf5b});}}}Promise[_0x3a3c('0x1e')](_0x2e34b0)['then'](function(){_0x479a40({'val':0x1});});})[_0x3a3c('0x1f')](function(_0x5e419d){logger[_0x3a3c('0x20')](_0x5e419d[_0x3a3c('0x21')]);});});}function insertAdditionalPhones(_0x369047){return new Promise(function(_0x56079e,_0x24af26){var _0x2e924f=_0x369047[_0x3a3c('0x1c')];if(_[_0x3a3c('0x1b')](_0x2e924f))_0x24af26({'val':0x0});else{var _0x24fd7e=_0x2e924f[_0x3a3c('0x22')](';');var _0x17a04c=[];orderBy=0x0;for(var _0x97e5c8=0x0;_0x97e5c8<_0x24fd7e[_0x3a3c('0x1a')];_0x97e5c8++){_0x17a04c[_0x3a3c('0x1d')](splitAdditionalPhone(_0x369047['id'],_0x24fd7e[_0x97e5c8]));}Promise[_0x3a3c('0x1e')](_0x17a04c)[_0x3a3c('0x23')](function(){_0x56079e({'val':_0x24fd7e[_0x3a3c('0x1a')]});});}});}function splitAdditionalPhone(_0x49df72,_0x2681e0){return new Promise(function(_0x44613b,_0x48f474){var _0x59ca21=_0x2681e0[_0x3a3c('0x22')](':');var _0x269605=_0x59ca21[0x0];var _0x55e925=_0x59ca21[0x1];if(_0x55e925!==''){var _0x1de6ea=_0x55e925[_0x3a3c('0x22')]('|');var _0x5a69bf=[];for(var _0xa08e7a=0x0;_0xa08e7a<_0x1de6ea[_0x3a3c('0x1a')];_0xa08e7a++){if(_0x1de6ea[_0xa08e7a]!==''){var _0x42ffb8=_['filter'](promisesAdditionalPhones,{'contactId':_0x49df72,'phone':_0x1de6ea[_0xa08e7a]});if(_0x42ffb8[_0x3a3c('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0x3a3c('0x1d')]({'contactId':_0x49df72,'contactTypeId':_0x269605,'phone':_0x1de6ea[_0xa08e7a],'orderBy':orderBy});}}}_0x44613b({'ok':0x1});}else _0x44613b({'res':0x0});});}function createAdditionalPhone(_0x9b4ef,_0x22c16f,_0x28a0c7,_0xb921ec){var _0x2d5f8c='';var _0x5a9abd='';var _0x169bac=_0x28a0c7[_0x3a3c('0x22')]('§');_0x2d5f8c=_0x169bac[0x0];if(_0x169bac[_0x3a3c('0x1a')]==0x2)_0x5a9abd=_0x169bac[0x1];return new Promise(function(_0xf739b2,_0x1f5595){return db[_0x3a3c('0x24')][_0x3a3c('0x25')]({'where':{'CmContactId':_0x9b4ef,'item':_0x2d5f8c}})['then'](function(_0x8e167d){if(_0x8e167d){return db[_0x3a3c('0x24')]['update']({'ItemTypeId':_0x22c16f,'description':_0x5a9abd,'OrderBy':_0xb921ec},{'where':{'CmContactId':_0x9b4ef,'item':_0x2d5f8c}})[_0x3a3c('0x23')](function(_0x16ff43){_0xf739b2({'res':_0x3a3c('0x26')});});}else{return db['CmContactHasItem']['create']({'CmContactId':_0x9b4ef,'item':_0x2d5f8c,'ItemTypeId':_0x22c16f,'description':_0x5a9abd,'OrderBy':_0xb921ec,'ItemClass':_0x3a3c('0x27')})['then'](function(_0x2b1df1){_0xf739b2({'res':'inserted'});});}});});}function updateContact(_0x3d5313){return new Promise(function(_0x5f5a5b,_0x136c30){var _0x1ec2a3=_0x3d5313['id'];delete _0x3d5313['id'];return db[_0x3a3c('0x28')][_0x3a3c('0x29')](_0x3d5313,{'where':{'id':_0x1ec2a3}})['then'](function(_0x8ad0a3){updatedRows+=0x1;return db['CmHopper']['update']({'phone':_0x3d5313['phone']},{'where':{'ContactId':_0x1ec2a3}})[_0x3a3c('0x23')](function(_0x384374){_0x5f5a5b({'ret':'OK'});});});});}function insertCmHopper(_0x12720e,_0x185b83,_0x5aa41e,_0x52f51d,_0x1913ec){var _0x449a16=[_0x3a3c('0x2a'),_0x3a3c('0x2b'),_0x3a3c('0x2c'),_0x3a3c('0x2d'),_0x185b83+'.'+_0x52f51d,'cm_contacts.createdAt',_0x3a3c('0x2e'),_0x3a3c('0x2f'),'cm_contacts.UserId','\x22'+_0x1913ec+'\x22'];return squel[_0x3a3c('0x30')]()['into'](_0x3a3c('0x31'))[_0x3a3c('0x32')](['phone',_0x3a3c('0x33'),_0x3a3c('0x34'),'ListId',_0x52f51d,'createdAt',_0x3a3c('0x35'),'priority',_0x3a3c('0x36'),_0x3a3c('0x37')],squel[_0x3a3c('0x38')]()[_0x3a3c('0x39')](_0x449a16)[_0x3a3c('0x11')](_0x185b83)[_0x3a3c('0x12')](_0x3a3c('0x3a'),null,_0x3a3c('0x3b')+_0x185b83+_0x3a3c('0x3c'))[_0x3a3c('0x12')](_0x5aa41e,null,_0x5aa41e+_0x3a3c('0x13')+_0x185b83+'.'+_0x52f51d)['where'](_0x185b83+_0x3a3c('0x3d'),_0x12720e)[_0x3a3c('0x14')](_0x3a3c('0x3e'),NOW)[_0x3a3c('0x14')](_0x3a3c('0x3f'),selectNotIn(_0x185b83,_0x5aa41e,_0x52f51d,_0x3a3c('0x31'),['\x22always\x22',_0x3a3c('0x40')]))[_0x3a3c('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x185b83,_0x5aa41e,_0x52f51d,_0x3a3c('0x31'),['\x22always\x22'])))[_0x3a3c('0x41')]();}function insertCmHopperBlack(_0xfc13b1,_0x279aa3,_0x3b866b,_0x48204b){var _0x185e39=[_0x3a3c('0x2a'),'cm_contacts.id',_0x3a3c('0x2d'),_0x279aa3+'.'+_0x48204b,_0x3a3c('0x42'),_0x3a3c('0x2e')];return squel[_0x3a3c('0x30')]()[_0x3a3c('0x43')](_0x3a3c('0x44'))['fromQuery'](['phone',_0x3a3c('0x34'),_0x3a3c('0x45'),_0x48204b,_0x3a3c('0x46'),'updatedAt'],squel[_0x3a3c('0x38')]()['fields'](_0x185e39)[_0x3a3c('0x11')](_0x279aa3)['join'](_0x3a3c('0x3a'),null,_0x3a3c('0x3b')+_0x279aa3+_0x3a3c('0x3c'))[_0x3a3c('0x12')](_0x3b866b,null,_0x3b866b+_0x3a3c('0x13')+_0x279aa3+'.'+_0x48204b)[_0x3a3c('0x14')](_0x279aa3+_0x3a3c('0x3d'),_0xfc13b1)[_0x3a3c('0x14')](_0x3a3c('0x3e'),NOW)[_0x3a3c('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x3a3c('0x38')]()[_0x3a3c('0xf')](_0x3a3c('0x10'))['from']('cm_hopper_black')[_0x3a3c('0x14')](_0x3a3c('0x47'),_0xfc13b1)[_0x3a3c('0x14')](_0x48204b+'\x20=\x20?',_0x279aa3+'.'+_0x48204b)))[_0x3a3c('0x41')]();}function insertCmHopperAdditionalPhones(_0x1d63a0){var _0x29641d=[_0x3a3c('0x48'),_0x3a3c('0x49'),_0x3a3c('0x4a'),_0x3a3c('0x4b'),_0x3a3c('0x4c')];return squel[_0x3a3c('0x30')]()[_0x3a3c('0x43')]('cm_hopper_additional_phones')[_0x3a3c('0x32')]([_0x3a3c('0x4d'),_0x3a3c('0x10'),_0x3a3c('0x4e'),_0x3a3c('0x46'),_0x3a3c('0x35')],squel[_0x3a3c('0x38')]()[_0x3a3c('0x39')](_0x29641d)[_0x3a3c('0x11')](_0x3a3c('0x31'))['join']('cm_contacts',null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x3a3c('0x12')](_0x3a3c('0x4f'),null,_0x3a3c('0x50'))['where'](_0x3a3c('0x51'),_0x1d63a0)[_0x3a3c('0x14')](_0x3a3c('0x3e'),NOW))[_0x3a3c('0x41')]();}function insertCmContact(_0x283cc8,_0x51d1cc,_0x145abd,_0x42fffa){var _0x4811c5=_[_0x3a3c('0x52')](_[_0x3a3c('0x53')](_0x42fffa),[_0x3a3c('0x45'),_0x3a3c('0x54'),_0x3a3c('0x46'),'updatedAt']);return squel[_0x3a3c('0x30')]()['into'](_0x3a3c('0x3a'))[_0x3a3c('0x32')](_0x4811c5,squel[_0x3a3c('0x38')]()[_0x3a3c('0x39')](_0x4811c5)[_0x3a3c('0x11')](_0x51d1cc)[_0x3a3c('0x14')]('('+_0x145abd['join'](',')+_0x3a3c('0x55'),squel[_0x3a3c('0x38')]()['fields'](_0x145abd)[_0x3a3c('0x11')](_0x3a3c('0x3a'))[_0x3a3c('0x14')](_0x3a3c('0x47'),_0x283cc8))[_0x3a3c('0x14')](_0x3a3c('0x56'),squel['select']()[_0x3a3c('0xf')](_0x3a3c('0x57'),_0x3a3c('0x58'))[_0x3a3c('0x11')](_0x51d1cc)['group'](_0x145abd['join'](','))))[_0x3a3c('0x41')]();}function handleStop(){logger[_0x3a3c('0x59')](_0x3a3c('0x5a'));stopped=!![];}function handleUncaughtException(_0x42fe36){logger[_0x3a3c('0x20')](_0x42fe36['message']);process[_0x3a3c('0x5b')](0x1);}function handleError(_0x3e0d38,_0x3db273){stats['errors'][_0x3a3c('0x1d')]({'name':_0x3db273['code'],'message':_0x3db273[_0x3a3c('0x21')],'row':_0x3e0d38});}function handleQuery(_0x1300ca){logger[_0x3a3c('0x59')](_0x1300ca);return db['sequelize']['query'](_0x1300ca)[_0x3a3c('0x19')](function(_0x5d5c76){results[_0x3a3c('0x1d')](_0x5d5c76);})[_0x3a3c('0x1f')](function(_0x28ade8){logger['error'](_0x28ade8[_0x3a3c('0x21')]);});}function main(_0xbf031b,_0x2819b6,_0xde93dd,_0x17f700){logger[_0x3a3c('0x59')](_0x3a3c('0x5c'),_0xbf031b,JSON[_0x3a3c('0x5d')](_0x2819b6));process['send'](_0x3a3c('0x5e'));var _0x532c32=_0x2819b6[_0x3a3c('0x5f')];var _0x53c778=_[_0x3a3c('0x60')](_0x532c32);var _0x4110cb=_0x2819b6[_0x3a3c('0x61')];var _0xebb7bf=path['join'](config[_0x3a3c('0x62')],_0x3a3c('0x63'),_0x4110cb+'.csv');logger['info'](_0x3a3c('0x64'),_0x2819b6);db[_0x3a3c('0x65')]['findAll']({'raw':!![],'attributes':['id',_0x3a3c('0x66')]})[_0x3a3c('0x23')](function(_0x4c4c4f){for(var _0x574b11=0x0;_0x574b11<_0x4c4c4f['length'];_0x574b11++){if(_0x4c4c4f[_0x574b11][_0x3a3c('0x66')]in _0x532c32){contactItemTypes[_0x3a3c('0x1d')](_0x4c4c4f[_0x574b11]);delete _0x53c778[_0x4c4c4f[_0x574b11]['name']];hasAdditionalPhones=!![];}for(var _0x11042b in _0x532c32){if(_0x4c4c4f[_0x574b11]['name']+_0x3a3c('0x67')===_0x11042b){phoneDescriptions[_0x3a3c('0x1d')]({'itemTypeId':_0x4c4c4f[_0x574b11]['id'],'description':_0x11042b});delete _0x53c778[_0x11042b];}}}if(hasAdditionalPhones)_0x53c778['AdditionalPhones']='';var _0x30b285=_[_0x3a3c('0x53')](_0x53c778)['join']();logger['info'](_0x3a3c('0x68'),_0x30b285);fs[_0x3a3c('0x69')](_0xebb7bf,_0x30b285+'\x0a');Papa[_0x3a3c('0x6a')](fs[_0x3a3c('0x6b')](_0xbf031b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x38dc67,_0xd42228){try{for(var _0x2c9895=0x0,_0x1c9646=[];_0x2c9895<_0x38dc67[_0x3a3c('0x6c')]['length'];_0x2c9895++){stats['rows']+=0x1;if(_0x38dc67[_0x3a3c('0x6d')][_0x2c9895]){handleError(_0x38dc67[_0x3a3c('0x6c')][_0x2c9895],_0x38dc67['errors'][_0x2c9895]);}else{var _0x4f39ec=[];var _0x30dea7=[];var _0x54d7f9={};for(var _0x1b2d9f in _0x532c32){let _0xfa9514=contactItemTypes[_0x3a3c('0x6e')](_0x1d8cdb=>_0x1d8cdb['name']===_0x1b2d9f);let _0x5dcca3=contactItemTypes[_0x3a3c('0x6e')](_0x3c5f59=>_0x3c5f59[_0x3a3c('0x66')]+_0x3a3c('0x67')===_0x1b2d9f);if(_[_0x3a3c('0x1b')](_0xfa9514)&&_[_0x3a3c('0x1b')](_0x5dcca3)){if(_0x532c32[_0x3a3c('0x6f')](_0x1b2d9f)){if(_0x38dc67[_0x3a3c('0x6c')][_0x2c9895][_0x532c32[_0x1b2d9f]]){var _0x3a24b0=_[_0x3a3c('0x70')](_0x38dc67[_0x3a3c('0x6c')][_0x2c9895][_0x532c32[_0x1b2d9f]][_0x3a3c('0x71')](/"/g,'\x27'));switch(_0x1b2d9f){case _0x3a3c('0x33'):var _0x45e9d9=moment(_0x3a24b0,_0x3a3c('0xc'),!![]);if(_0x45e9d9[_0x3a3c('0x72')]()){_0x1c9646[_0x3a3c('0x1d')]('\x22'+_0x3a24b0+'\x22');}else{_0x4f39ec[_0x3a3c('0x1d')](_0x3a3c('0x73'));}break;case _0x3a3c('0x74'):var _0x78a918=parseInt(_0x3a24b0);_0x3a24b0=_[_0x3a3c('0x75')](_0x78a918)||_0x78a918<0x0||_0x78a918>0x4?_0x17f700?0x3:0x2:_0x78a918;_0x1c9646[_0x3a3c('0x1d')]('\x22'+_0x3a24b0+'\x22');break;case _0x3a3c('0x36'):var _0x34eaac=parseInt(_0x3a24b0);if(_[_0x3a3c('0x76')](_0x34eaac)&&_[_0x3a3c('0x77')](_0xde93dd,_0x34eaac)){_0x1c9646['push']('\x22'+_0x34eaac+'\x22');}else{_0x4f39ec[_0x3a3c('0x1d')](_0x3a3c('0x78'));}break;case _0x3a3c('0x79'):if(isEmail(_0x3a24b0)){_0x1c9646[_0x3a3c('0x1d')]('\x22'+_0x3a24b0+'\x22');}else{_0x4f39ec[_0x3a3c('0x1d')]('email\x20wrong\x20format');}break;case _0x3a3c('0x7a'):var _0x1a0f98=moment(_0x3a24b0,'YYYY-MM-DD',!![]);if(_0x1a0f98[_0x3a3c('0x72')]()){_0x1c9646[_0x3a3c('0x1d')]('\x22'+_0x3a24b0+'\x22');}else{_0x4f39ec[_0x3a3c('0x1d')](_0x3a3c('0x7b'));}break;default:_0x1c9646['push']('\x22'+_0x3a24b0+'\x22');}}else{switch(_0x1b2d9f){case'firstName':case'phone':_0x4f39ec[_0x3a3c('0x1d')](_0x1b2d9f+_0x3a3c('0x7c'));break;default:_0x1c9646['push']('\x22\x22');}}}}else{var _0x40e845='';if(!_[_0x3a3c('0x1b')](_0xfa9514)){if(!_0x54d7f9[_0x3a3c('0x6f')](_0xfa9514['id'])){for(var _0x286724=0x0;_0x286724<_0x532c32[_0x1b2d9f][_0x3a3c('0x1a')];_0x286724++){var _0x3a24b0=_['trim'](_0x38dc67[_0x3a3c('0x6c')][_0x2c9895][_0x532c32[_0x1b2d9f][_0x286724]][_0x3a3c('0x71')](/"/g,'\x27'));var _0x694088=phoneDescriptions['find'](_0x4b3108=>_0x4b3108[_0x3a3c('0x7d')]===_0xfa9514['id']);if(!_['isNil'](_0x694088)){var _0x1c812b=_[_0x3a3c('0x70')](_0x38dc67[_0x3a3c('0x6c')][_0x2c9895][_0x532c32[_0x694088[_0x3a3c('0x7e')]][0x0]][_0x3a3c('0x71')](/"/g,'\x27'));if(!_['isNil'](_0x1c812b))_0x3a24b0=_0x3a24b0+'§'+_0x1c812b;}if(_0x40e845=='')_0x40e845=_0x3a24b0;else _0x40e845+='|'+_0x3a24b0;}_0x30dea7[_0x3a3c('0x1d')](_0xfa9514['id']+':'+_0x40e845);_0x54d7f9[_0xfa9514['id']]=0x1;}}}}if(hasAdditionalPhones){_0x1c9646[_0x3a3c('0x1d')]('\x22'+_0x30dea7[_0x3a3c('0x12')](';')+'\x22');}if(_0x4f39ec[_0x3a3c('0x1a')]){handleError(_0x38dc67[_0x3a3c('0x6c')][_0x2c9895],{'code':_0x3a3c('0x7f'),'message':_0x4f39ec[_0x3a3c('0x12')]()});}else{fs[_0x3a3c('0x80')](_0xebb7bf,_0x1c9646[_0x3a3c('0x12')]()+'\x0a');}_0x1c9646=[];}if(!(stats['rows']%0xc8)){socket[_0x3a3c('0x81')](_0x3a3c('0x82')+_0x4110cb,stats);stats[_0x3a3c('0x6d')]=[];}}if(stopped){logger['info'](_0x3a3c('0x83'));_0xd42228['abort']();}}catch(_0x3c8a03){handleError(_0x38dc67[_0x3a3c('0x6c')][_0x2c9895],{'code':_0x3a3c('0x84'),'message':_0x3c8a03[_0x3a3c('0x21')]});logger[_0x3a3c('0x20')](_0x3a3c('0x85'),_0x3c8a03['message']);}},'complete':function(){try{var _0x1af4cb=[];var _0x5cf25f=tempTableName;_0x1af4cb['push'](_0x3a3c('0x86')+_0x5cf25f+_0x3a3c('0x87'));logger[_0x3a3c('0x59')](_0x3a3c('0x88'),contactItemTypes[_0x3a3c('0x1a')]);var _0x9e82de=util[_0x3a3c('0xb')](_0x3a3c('0x89'),_0xebb7bf,_0x5cf25f,_0x30b285,_0x2819b6['ListId'],_0x2819b6['CompanyId']||null,NOW,NOW);if(_[_0x3a3c('0x1b')](_0x532c32[_0x3a3c('0x33')])){_0x9e82de+=_0x3a3c('0x8a');}_0x1af4cb[_0x3a3c('0x1d')](_0x9e82de);BPromise[_0x3a3c('0x8b')](_0x1af4cb,handleQuery)[_0x3a3c('0x23')](function(_0x51e594){BPromise[_0x3a3c('0x1e')]([handleAdditionalPhones()])[_0x3a3c('0x23')](function(){_0x1af4cb=[];for(var _0x3a50a0=0x0;_0x3a50a0<promisesContact[_0x3a3c('0x1a')];_0x3a50a0++){_0x1af4cb[_0x3a3c('0x1d')](updateContact(promisesContact[_0x3a50a0]['contact']));}BPromise[_0x3a3c('0x1e')](_0x1af4cb)[_0x3a3c('0x23')](function(){_0x1af4cb=[];for(var _0x53d228=0x0;_0x53d228<promisesAdditionalPhones['length'];_0x53d228++){_0x1af4cb[_0x3a3c('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x53d228][_0x3a3c('0x8c')],promisesAdditionalPhones[_0x53d228][_0x3a3c('0x8d')],promisesAdditionalPhones[_0x53d228][_0x3a3c('0x10')],promisesAdditionalPhones[_0x53d228]['orderBy']));}BPromise['all'](_0x1af4cb)[_0x3a3c('0x23')](function(){_0x1af4cb=[];_0x1af4cb[_0x3a3c('0x1d')](insertCmHopperAdditionalPhones(_0x2819b6['ListId']));_0x1af4cb[_0x3a3c('0x1d')]('DROP\x20TABLE\x20'+_0x5cf25f+';');BPromise[_0x3a3c('0x8b')](_0x1af4cb,handleQuery)[_0x3a3c('0x23')](function(_0x6fc1f6){stats['finish']=!![];stats['affectedRows']=updatedRows;socket[_0x3a3c('0x81')](_0x3a3c('0x82')+_0x4110cb,stats);fs[_0x3a3c('0x8e')](_0xbf031b);fs[_0x3a3c('0x8e')](_0xebb7bf);process[_0x3a3c('0x5b')](0x0);})['catch'](function(_0x15027a){logger[_0x3a3c('0x20')](_0x15027a[_0x3a3c('0x21')]);process[_0x3a3c('0x5b')](0x1);});});});});})[_0x3a3c('0x1f')](function(_0x59765c){logger[_0x3a3c('0x20')](_0x59765c[_0x3a3c('0x21')]);process[_0x3a3c('0x5b')](0x1);});}catch(_0x285857){logger[_0x3a3c('0x20')]('complete',_0x285857[_0x3a3c('0x21')]);process[_0x3a3c('0x5b')](0x1);}},'error':function(_0x58845b,_0x2d5930,_0x484d16,_0x294668){throw new Error(_0x294668);}});});}function validate(){if(process['argv']&&process[_0x3a3c('0x8f')][_0x3a3c('0x1a')]<0x4){throw new Error(_0x3a3c('0x90'));}var _0x562cd5=path[_0x3a3c('0x12')](config['root'],_0x3a3c('0x63'),process[_0x3a3c('0x8f')][0x2]);if(!fs[_0x3a3c('0x91')](_0x562cd5)){throw new Error(_0x3a3c('0x92'));}var _0x2db12b={};try{_0x2db12b=JSON[_0x3a3c('0x6a')](process[_0x3a3c('0x8f')][0x3]);if(!_0x2db12b['binding']){throw new Error(_0x3a3c('0x93'));}var _0x439daa=0x0;if(_0x2db12b['binding'][_0x3a3c('0x36')]){_0x439daa=0x1;}if(!_0x2db12b[_0x3a3c('0x45')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x4c67bd){throw new Error(_0x3a3c('0x94'));}var _0x21c284=[];try{_0x21c284=_[_0x3a3c('0x95')](JSON['parse'](process[_0x3a3c('0x8f')][0x4]),'id');}catch(_0x574537){logger[_0x3a3c('0x59')](_0x3a3c('0x96'));}main(_0x562cd5,_0x2db12b,_0x21c284,_0x439daa);}validate();process['on'](_0x3a3c('0x97'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x505d=['socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','YYYYMMDDHHmmss','test','phone','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','message','split','filter','CmContactHasItem','findOne','update','create','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','priority','UserId','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(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_contacts.createdAt','insert','cm_hopper_black','select','\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','updatedAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys','CompanyId','ListId\x20=\x20?','id\x20IN\x20?','field','MIN(id)','group','info','exit','errors','code','error','main','send','start','clone','socket_timestamp','root','server/files/tmp','body','ContactItemType','findAll','name','header','writeFileSync','parse','createReadStream','data','rows','find','_description','trim','isValid','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','replace','itemTypeId','SystemRow','appendFileSync','emit','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','DROP\x20TABLE\x20','finish','affectedRows','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','localhost'];(function(_0x540e2c,_0x44b443){var _0x4c15e8=function(_0x864b01){while(--_0x864b01){_0x540e2c['push'](_0x540e2c['shift']());}};_0x4c15e8(++_0x44b443);}(_0x505d,0x93));var _0xd505=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x505d[_0x220dbb];return _0x2b77de;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0xd505('0x0'));var util=require(_0xd505('0x1'));var BPromise=require(_0xd505('0x2'));var moment=require(_0xd505('0x3'));var squel=require(_0xd505('0x4'));var Redis=require('ioredis');var db=require(_0xd505('0x5'))['db'];var config=require(_0xd505('0x6'));var logger=require(_0xd505('0x7'))(_0xd505('0x8'));config['redis']=_[_0xd505('0x9')](config['redis'],{'host':_0xd505('0xa'),'port':0x18eb});var socket=require(_0xd505('0xb'))(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()[_0xd505('0xc')](_0xd505('0xd'));var tempTableName='cm_contacts_temp_'+moment()['format'](_0xd505('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x47e587){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))*$/[_0xd505('0xf')](_0x47e587);}function selectNotIn(_0x5d0112,_0xbe2b81,_0x57e18c,_0x2bb3d8,_0x524bb5){return squel['select']()['field'](_0xd505('0x10'))['from'](_0x2bb3d8)[_0xd505('0x11')](_0xbe2b81,null,_0xbe2b81+_0xd505('0x12')+_0x2bb3d8+'.'+_0x57e18c)['where'](_0x2bb3d8+'.'+_0x57e18c+'\x20=\x20'+_0x5d0112+'.'+_0x57e18c)[_0xd505('0x13')](_0xbe2b81+_0xd505('0x14')+_0x524bb5[_0xd505('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x29d0ad,_0x1fe089){promisesAdditionalPhones=[];promisesContact=[];return db[_0xd505('0x15')][_0xd505('0x16')](_0xd505('0x17')+tempTableName)[_0xd505('0x18')](function(_0x50e8d2){if(_0x50e8d2!==null){var _0x2b8094=[];for(var _0xf71091=0x0;_0xf71091<_0x50e8d2[_0xd505('0x19')];_0xf71091++){var _0x5b69cf=_0x50e8d2[_0xf71091];if(!_[_0xd505('0x1a')](_0x5b69cf['phone'])){if(!_[_0xd505('0x1a')](_0x5b69cf[_0xd505('0x1b')]))_0x2b8094['push'](insertAdditionalPhones(_0x5b69cf));promisesContact[_0xd505('0x1c')]({'contact':_0x5b69cf});}}}Promise[_0xd505('0x1d')](_0x2b8094)[_0xd505('0x1e')](function(){_0x29d0ad({'val':0x1});});})[_0xd505('0x1f')](function(_0x405471){logger['error'](_0x405471[_0xd505('0x20')]);});});}function insertAdditionalPhones(_0x17e5dc){return new Promise(function(_0x5229d2,_0x5ccf7e){var _0x48cf99=_0x17e5dc[_0xd505('0x1b')];if(_[_0xd505('0x1a')](_0x48cf99))_0x5ccf7e({'val':0x0});else{var _0x5f1eea=_0x48cf99[_0xd505('0x21')](';');var _0x570d6a=[];orderBy=0x0;for(var _0x5bdd88=0x0;_0x5bdd88<_0x5f1eea[_0xd505('0x19')];_0x5bdd88++){_0x570d6a[_0xd505('0x1c')](splitAdditionalPhone(_0x17e5dc['id'],_0x5f1eea[_0x5bdd88]));}Promise['all'](_0x570d6a)[_0xd505('0x1e')](function(){_0x5229d2({'val':_0x5f1eea[_0xd505('0x19')]});});}});}function splitAdditionalPhone(_0x4e885b,_0xfd478e){return new Promise(function(_0x2a0465,_0xe42477){var _0x55b70b=_0xfd478e[_0xd505('0x21')](':');var _0x404784=_0x55b70b[0x0];var _0x5e4317=_0x55b70b[0x1];if(_0x5e4317!==''){var _0x5daa3a=_0x5e4317[_0xd505('0x21')]('|');var _0x16be66=[];for(var _0xeb2af1=0x0;_0xeb2af1<_0x5daa3a[_0xd505('0x19')];_0xeb2af1++){if(_0x5daa3a[_0xeb2af1]!==''){var _0x217a4e=_[_0xd505('0x22')](promisesAdditionalPhones,{'contactId':_0x4e885b,'phone':_0x5daa3a[_0xeb2af1]});if(_0x217a4e[_0xd505('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x4e885b,'contactTypeId':_0x404784,'phone':_0x5daa3a[_0xeb2af1],'orderBy':orderBy});}}}_0x2a0465({'ok':0x1});}else _0x2a0465({'res':0x0});});}function createAdditionalPhone(_0x3d360a,_0x2eec0c,_0x311533,_0x3a58d4){var _0x5894b2='';var _0x2d8d67='';var _0x38867e=_0x311533['split']('§');_0x5894b2=_0x38867e[0x0];if(_0x38867e['length']==0x2)_0x2d8d67=_0x38867e[0x1];return new Promise(function(_0x4c33ea,_0x2c010c){return db[_0xd505('0x23')][_0xd505('0x24')]({'where':{'CmContactId':_0x3d360a,'item':_0x5894b2}})['then'](function(_0x548934){if(_0x548934){return db['CmContactHasItem'][_0xd505('0x25')]({'ItemTypeId':_0x2eec0c,'description':_0x2d8d67,'OrderBy':_0x3a58d4},{'where':{'CmContactId':_0x3d360a,'item':_0x5894b2}})[_0xd505('0x1e')](function(_0x17b4a3){_0x4c33ea({'res':'updated'});});}else{return db[_0xd505('0x23')][_0xd505('0x26')]({'CmContactId':_0x3d360a,'item':_0x5894b2,'ItemTypeId':_0x2eec0c,'description':_0x2d8d67,'OrderBy':_0x3a58d4,'ItemClass':'PHONE'})[_0xd505('0x1e')](function(_0x2ff2ca){_0x4c33ea({'res':_0xd505('0x27')});});}});});}function updateContact(_0x42900b){return new Promise(function(_0x54e975,_0x596b04){var _0x45a6d1=_0x42900b['id'];delete _0x42900b['id'];return db[_0xd505('0x28')][_0xd505('0x25')](_0x42900b,{'where':{'id':_0x45a6d1}})[_0xd505('0x1e')](function(_0x2d8abd){updatedRows+=0x1;return db[_0xd505('0x29')]['update']({'phone':_0x42900b[_0xd505('0x10')]},{'where':{'ContactId':_0x45a6d1}})['then'](function(_0xbd015f){_0x54e975({'ret':'OK'});});});});}function insertCmHopper(_0x592898,_0xd98aa3,_0x103af1,_0x311b95,_0x227473){var _0x3f6cae=[_0xd505('0x2a'),_0xd505('0x2b'),_0xd505('0x2c'),'cm_contacts.ListId',_0xd98aa3+'.'+_0x311b95,'cm_contacts.createdAt',_0xd505('0x2d'),_0xd505('0x2e'),_0xd505('0x2f'),'\x22'+_0x227473+'\x22'];return squel['insert']()[_0xd505('0x30')](_0xd505('0x31'))[_0xd505('0x32')]([_0xd505('0x10'),_0xd505('0x33'),_0xd505('0x34'),_0xd505('0x35'),_0x311b95,_0xd505('0x36'),'updatedAt',_0xd505('0x37'),_0xd505('0x38'),_0xd505('0x39')],squel['select']()[_0xd505('0x3a')](_0x3f6cae)[_0xd505('0x3b')](_0xd98aa3)['join'](_0xd505('0x3c'),null,_0xd505('0x3d')+_0xd98aa3+_0xd505('0x3e'))['join'](_0x103af1,null,_0x103af1+_0xd505('0x12')+_0xd98aa3+'.'+_0x311b95)[_0xd505('0x13')](_0xd98aa3+_0xd505('0x3f'),_0x592898)[_0xd505('0x13')](_0xd505('0x40'),NOW)[_0xd505('0x13')](_0xd505('0x41'),selectNotIn(_0xd98aa3,_0x103af1,_0x311b95,'cm_hopper',[_0xd505('0x42'),_0xd505('0x43')]))['where'](_0xd505('0x41'),selectNotIn(_0xd98aa3,_0x103af1,_0x311b95,_0xd505('0x31'),[_0xd505('0x42')])))[_0xd505('0x44')]();}function insertCmHopperBlack(_0x96ee7,_0x32849d,_0x55d9ef,_0x530113){var _0xaa3331=[_0xd505('0x2a'),'cm_contacts.id',_0xd505('0x45'),_0x32849d+'.'+_0x530113,_0xd505('0x46'),'cm_contacts.updatedAt'];return squel[_0xd505('0x47')]()[_0xd505('0x30')](_0xd505('0x48'))[_0xd505('0x32')]([_0xd505('0x10'),_0xd505('0x34'),_0xd505('0x35'),_0x530113,_0xd505('0x36'),'updatedAt'],squel[_0xd505('0x49')]()[_0xd505('0x3a')](_0xaa3331)[_0xd505('0x3b')](_0x32849d)[_0xd505('0x11')](_0xd505('0x3c'),null,_0xd505('0x3d')+_0x32849d+'.CmListId')['join'](_0x55d9ef,null,_0x55d9ef+'.id\x20=\x20'+_0x32849d+'.'+_0x530113)['where'](_0x32849d+_0xd505('0x3f'),_0x96ee7)[_0xd505('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xd505('0x13')](_0xd505('0x41'),squel[_0xd505('0x49')]()['field']('phone')[_0xd505('0x3b')](_0xd505('0x48'))['where']('ListId\x20=\x20?',_0x96ee7)['where'](_0x530113+_0xd505('0x4a'),_0x32849d+'.'+_0x530113)))['toString']();}function insertCmHopperAdditionalPhones(_0x4f19ac){var _0x318ce8=[_0xd505('0x4b'),_0xd505('0x4c'),_0xd505('0x4d'),_0xd505('0x4e'),_0xd505('0x4f')];return squel['insert']()[_0xd505('0x30')](_0xd505('0x50'))[_0xd505('0x32')](['CmHopperId',_0xd505('0x10'),'OrderBy',_0xd505('0x36'),_0xd505('0x51')],squel[_0xd505('0x49')]()['fields'](_0x318ce8)[_0xd505('0x3b')]('cm_hopper')[_0xd505('0x11')](_0xd505('0x3c'),null,_0xd505('0x52'))[_0xd505('0x11')](_0xd505('0x53'),null,_0xd505('0x54'))['where'](_0xd505('0x55'),_0x4f19ac)[_0xd505('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0xd505('0x44')]();}function insertCmContact(_0x489f66,_0x416d58,_0x410e35,_0x3486fd){var _0x39c05f=_['concat'](_[_0xd505('0x56')](_0x3486fd),['ListId',_0xd505('0x57'),'createdAt',_0xd505('0x51')]);return squel[_0xd505('0x47')]()[_0xd505('0x30')](_0xd505('0x3c'))[_0xd505('0x32')](_0x39c05f,squel['select']()['fields'](_0x39c05f)[_0xd505('0x3b')](_0x416d58)[_0xd505('0x13')]('('+_0x410e35[_0xd505('0x11')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0xd505('0x3a')](_0x410e35)[_0xd505('0x3b')](_0xd505('0x3c'))[_0xd505('0x13')](_0xd505('0x58'),_0x489f66))['where'](_0xd505('0x59'),squel[_0xd505('0x49')]()[_0xd505('0x5a')](_0xd505('0x5b'),'min_id')[_0xd505('0x3b')](_0x416d58)[_0xd505('0x5c')](_0x410e35['join'](','))))[_0xd505('0x44')]();}function handleStop(){logger[_0xd505('0x5d')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x337c4c){logger['error'](_0x337c4c['message']);process[_0xd505('0x5e')](0x1);}function handleError(_0x10e652,_0xab3413){stats[_0xd505('0x5f')][_0xd505('0x1c')]({'name':_0xab3413[_0xd505('0x60')],'message':_0xab3413[_0xd505('0x20')],'row':_0x10e652});}function handleQuery(_0x39b1fa){logger[_0xd505('0x5d')](_0x39b1fa);return db[_0xd505('0x15')][_0xd505('0x16')](_0x39b1fa)[_0xd505('0x18')](function(_0x261229){results[_0xd505('0x1c')](_0x261229);})[_0xd505('0x1f')](function(_0x15f77e){logger[_0xd505('0x61')](_0x15f77e[_0xd505('0x20')]);});}function main(_0x1bca5f,_0x171b73,_0x58dcc8,_0x2c9646){logger[_0xd505('0x5d')](_0xd505('0x62'),_0x1bca5f,JSON['stringify'](_0x171b73));process[_0xd505('0x63')](_0xd505('0x64'));var _0x52b11b=_0x171b73['binding'];var _0x2fabfc=_[_0xd505('0x65')](_0x52b11b);var _0x3a71e6=_0x171b73[_0xd505('0x66')];var _0x4b679f=path[_0xd505('0x11')](config[_0xd505('0x67')],_0xd505('0x68'),_0x3a71e6+'.csv');logger[_0xd505('0x5d')](_0xd505('0x69'),_0x171b73);db[_0xd505('0x6a')][_0xd505('0x6b')]({'raw':!![],'attributes':['id',_0xd505('0x6c')]})['then'](function(_0x29373d){for(var _0x255208=0x0;_0x255208<_0x29373d['length'];_0x255208++){if(_0x29373d[_0x255208]['name']in _0x52b11b){contactItemTypes[_0xd505('0x1c')](_0x29373d[_0x255208]);delete _0x2fabfc[_0x29373d[_0x255208][_0xd505('0x6c')]];hasAdditionalPhones=!![];}for(var _0x37a29f in _0x52b11b){if(_0x29373d[_0x255208]['name']+'_description'===_0x37a29f){phoneDescriptions[_0xd505('0x1c')]({'itemTypeId':_0x29373d[_0x255208]['id'],'description':_0x37a29f});delete _0x2fabfc[_0x37a29f];}}}if(hasAdditionalPhones)_0x2fabfc[_0xd505('0x1b')]='';var _0x48296b=_['keys'](_0x2fabfc)[_0xd505('0x11')]();logger[_0xd505('0x5d')](_0xd505('0x6d'),_0x48296b);fs[_0xd505('0x6e')](_0x4b679f,_0x48296b+'\x0a');Papa[_0xd505('0x6f')](fs[_0xd505('0x70')](_0x1bca5f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x23d38f,_0x42554c){try{for(var _0x39df0e=0x0,_0x4a0f02=[];_0x39df0e<_0x23d38f[_0xd505('0x71')][_0xd505('0x19')];_0x39df0e++){stats[_0xd505('0x72')]+=0x1;if(_0x23d38f[_0xd505('0x5f')][_0x39df0e]){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],_0x23d38f[_0xd505('0x5f')][_0x39df0e]);}else{var _0x4a0318=[];var _0x48281f=[];var _0x35b1d9={};for(var _0x26fe3c in _0x52b11b){let _0x84cfb6=contactItemTypes['find'](_0x974798=>_0x974798[_0xd505('0x6c')]===_0x26fe3c);let _0xc23a6=contactItemTypes[_0xd505('0x73')](_0x4563b0=>_0x4563b0['name']+_0xd505('0x74')===_0x26fe3c);if(_[_0xd505('0x1a')](_0x84cfb6)&&_['isNil'](_0xc23a6)){if(_0x52b11b['hasOwnProperty'](_0x26fe3c)){if(_0x23d38f['data'][_0x39df0e][_0x52b11b[_0x26fe3c]]){var _0xc5f2b7=_[_0xd505('0x75')](_0x23d38f[_0xd505('0x71')][_0x39df0e][_0x52b11b[_0x26fe3c]]['replace'](/"/g,'\x27'));switch(_0x26fe3c){case _0xd505('0x33'):var _0x584b52=moment(_0xc5f2b7,_0xd505('0xd'),!![]);if(_0x584b52[_0xd505('0x76')]()){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x516f35=parseInt(_0xc5f2b7);_0xc5f2b7=_['isNaN'](_0x516f35)||_0x516f35<0x0||_0x516f35>0x4?_0x2c9646?0x3:0x2:_0x516f35;_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');break;case'UserId':var _0x2472e4=parseInt(_0xc5f2b7);if(_['isNumber'](_0x2472e4)&&_[_0xd505('0x77')](_0x58dcc8,_0x2472e4)){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0x2472e4+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x78'));}break;case'email':if(isEmail(_0xc5f2b7)){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x79'));}break;case _0xd505('0x7a'):var _0x40a359=moment(_0xc5f2b7,_0xd505('0x7b'),!![]);if(_0x40a359[_0xd505('0x76')]()){_0x4a0f02['push']('\x22'+_0xc5f2b7+'\x22');}else{_0x4a0318[_0xd505('0x1c')](_0xd505('0x7c'));}break;default:_0x4a0f02[_0xd505('0x1c')]('\x22'+_0xc5f2b7+'\x22');}}else{switch(_0x26fe3c){case'firstName':case _0xd505('0x10'):_0x4a0318[_0xd505('0x1c')](_0x26fe3c+_0xd505('0x7d'));break;default:_0x4a0f02[_0xd505('0x1c')]('\x22\x22');}}}}else{var _0x543d74='';if(!_[_0xd505('0x1a')](_0x84cfb6)){if(!_0x35b1d9[_0xd505('0x7e')](_0x84cfb6['id'])){for(var _0x51dee7=0x0;_0x51dee7<_0x52b11b[_0x26fe3c][_0xd505('0x19')];_0x51dee7++){var _0xc5f2b7=_[_0xd505('0x75')](_0x23d38f['data'][_0x39df0e][_0x52b11b[_0x26fe3c][_0x51dee7]][_0xd505('0x7f')](/"/g,'\x27'));var _0x59c4d4=phoneDescriptions['find'](_0x3b772d=>_0x3b772d[_0xd505('0x80')]===_0x84cfb6['id']);if(!_[_0xd505('0x1a')](_0x59c4d4)){var _0x1770a2=_[_0xd505('0x75')](_0x23d38f[_0xd505('0x71')][_0x39df0e][_0x52b11b[_0x59c4d4['description']][0x0]][_0xd505('0x7f')](/"/g,'\x27'));if(!_['isNil'](_0x1770a2))_0xc5f2b7=_0xc5f2b7+'§'+_0x1770a2;}if(_0x543d74=='')_0x543d74=_0xc5f2b7;else _0x543d74+='|'+_0xc5f2b7;}_0x48281f['push'](_0x84cfb6['id']+':'+_0x543d74);_0x35b1d9[_0x84cfb6['id']]=0x1;}}}}if(hasAdditionalPhones){_0x4a0f02[_0xd505('0x1c')]('\x22'+_0x48281f[_0xd505('0x11')](';')+'\x22');}if(_0x4a0318[_0xd505('0x19')]){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],{'code':_0xd505('0x81'),'message':_0x4a0318[_0xd505('0x11')]()});}else{fs[_0xd505('0x82')](_0x4b679f,_0x4a0f02['join']()+'\x0a');}_0x4a0f02=[];}if(!(stats[_0xd505('0x72')]%0xc8)){socket[_0xd505('0x83')]('contact:import:'+_0x3a71e6,stats);stats[_0xd505('0x5f')]=[];}}if(stopped){logger['info']('Abort\x20parser');_0x42554c['abort']();}}catch(_0xc5c9a8){handleError(_0x23d38f[_0xd505('0x71')][_0x39df0e],{'code':_0xd505('0x84'),'message':_0xc5c9a8[_0xd505('0x20')]});logger[_0xd505('0x61')](_0xd505('0x85'),_0xc5c9a8[_0xd505('0x20')]);}},'complete':function(){try{var _0x2e8a65=[];var _0x114899=tempTableName;_0x2e8a65[_0xd505('0x1c')](_0xd505('0x86')+_0x114899+_0xd505('0x87'));logger[_0xd505('0x5d')]('CIS\x20len',contactItemTypes[_0xd505('0x19')]);var _0x5b3d6a=util[_0xd505('0xc')](_0xd505('0x88'),_0x4b679f,_0x114899,_0x48296b,_0x171b73[_0xd505('0x35')],_0x171b73[_0xd505('0x57')]||null,NOW,NOW);if(_[_0xd505('0x1a')](_0x52b11b[_0xd505('0x33')])){_0x5b3d6a+=_0xd505('0x89');}_0x2e8a65[_0xd505('0x1c')](_0x5b3d6a);BPromise[_0xd505('0x8a')](_0x2e8a65,handleQuery)[_0xd505('0x1e')](function(_0xef3a78){BPromise[_0xd505('0x1d')]([handleAdditionalPhones()])[_0xd505('0x1e')](function(){_0x2e8a65=[];for(var _0x51aadc=0x0;_0x51aadc<promisesContact[_0xd505('0x19')];_0x51aadc++){_0x2e8a65['push'](updateContact(promisesContact[_0x51aadc][_0xd505('0x8b')]));}BPromise[_0xd505('0x1d')](_0x2e8a65)[_0xd505('0x1e')](function(){_0x2e8a65=[];for(var _0x1962ec=0x0;_0x1962ec<promisesAdditionalPhones[_0xd505('0x19')];_0x1962ec++){_0x2e8a65[_0xd505('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x1962ec][_0xd505('0x8c')],promisesAdditionalPhones[_0x1962ec][_0xd505('0x8d')],promisesAdditionalPhones[_0x1962ec]['phone'],promisesAdditionalPhones[_0x1962ec][_0xd505('0x8e')]));}BPromise['all'](_0x2e8a65)[_0xd505('0x1e')](function(){_0x2e8a65=[];_0x2e8a65[_0xd505('0x1c')](insertCmHopperAdditionalPhones(_0x171b73['ListId']));_0x2e8a65[_0xd505('0x1c')](_0xd505('0x8f')+_0x114899+';');BPromise[_0xd505('0x8a')](_0x2e8a65,handleQuery)[_0xd505('0x1e')](function(_0x113be8){stats[_0xd505('0x90')]=!![];stats[_0xd505('0x91')]=updatedRows;socket[_0xd505('0x83')](_0xd505('0x92')+_0x3a71e6,stats);fs[_0xd505('0x93')](_0x1bca5f);fs['unlink'](_0x4b679f);process[_0xd505('0x5e')](0x0);})[_0xd505('0x1f')](function(_0x2ef255){logger[_0xd505('0x61')](_0x2ef255[_0xd505('0x20')]);process[_0xd505('0x5e')](0x1);});});});});})['catch'](function(_0x374456){logger[_0xd505('0x61')](_0x374456[_0xd505('0x20')]);process[_0xd505('0x5e')](0x1);});}catch(_0x10470e){logger[_0xd505('0x61')](_0xd505('0x94'),_0x10470e['message']);process[_0xd505('0x5e')](0x1);}},'error':function(_0x4d1562,_0x3b553d,_0xf71b94,_0x2a68a5){throw new Error(_0x2a68a5);}});});}function validate(){if(process[_0xd505('0x95')]&&process[_0xd505('0x95')][_0xd505('0x19')]<0x4){throw new Error(_0xd505('0x96'));}var _0x169cf5=path[_0xd505('0x11')](config[_0xd505('0x67')],_0xd505('0x68'),process['argv'][0x2]);if(!fs['existsSync'](_0x169cf5)){throw new Error(_0xd505('0x97'));}var _0x403e1d={};try{_0x403e1d=JSON['parse'](process['argv'][0x3]);if(!_0x403e1d[_0xd505('0x98')]){throw new Error(_0xd505('0x99'));}var _0x332c5d=0x0;if(_0x403e1d[_0xd505('0x98')]['UserId']){_0x332c5d=0x1;}if(!_0x403e1d['ListId']){throw new Error(_0xd505('0x9a'));}}catch(_0x5d9fcc){throw new Error(_0xd505('0x9b'));}var _0xb0b52d=[];try{_0xb0b52d=_[_0xd505('0x9c')](JSON['parse'](process[_0xd505('0x95')][0x4]),'id');}catch(_0x4e7927){logger[_0xd505('0x5d')]('No\x20agent\x20available');}main(_0x169cf5,_0x403e1d,_0xb0b52d,_0x332c5d);}validate();process['on'](_0xd505('0x9d'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 53f2299..5ca5e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8561=['Queue','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','Called\x20Number','Member\x20Name','uniqueid','answertime','Complete\x20Time','endtime','Duration','duration','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','outbound','Outbound\x20Call','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten'];(function(_0x6aaa69,_0x4457b5){var _0x25359f=function(_0x1ab0be){while(--_0x1ab0be){_0x6aaa69['push'](_0x6aaa69['shift']());}};_0x25359f(++_0x4457b5);}(_0x8561,0x146));var _0x1856=function(_0x4f96b4,_0x22cc57){_0x4f96b4=_0x4f96b4-0x0;var _0x67821b=_0x8561[_0x4f96b4];return _0x67821b;};'use strict';exports[_0x1856('0x0')]=function(_0xe3e756,_0x273514){var _0x2b272b=[{'type':_0x1856('0x1'),'content':_0x1856('0x2'),'variableName':null}];switch(_0xe3e756['toLowerCase']()){case'voice':switch(_0x273514[_0x1856('0x3')]()){case _0x1856('0x4'):_0x2b272b[_0x1856('0x5')]({'type':_0x1856('0x6'),'content':'','variableName':_0x1856('0x7')});_0x2b272b[_0x1856('0x5')]({'type':'variable','content':'','variableName':'calleridnum'});break;case _0x1856('0x8'):_0x2b272b[_0x1856('0x5')]({'type':_0x1856('0x1'),'content':_0x1856('0x9'),'variableName':null});_0x2b272b[_0x1856('0x5')]({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x2b272b;};exports[_0x1856('0xa')]=function(_0x36fac2,_0x66d51c){var _0x2a1f33=[];switch(_0x36fac2[_0x1856('0x3')]()){case'voice':switch(_0x66d51c[_0x1856('0x3')]()){case _0x1856('0x4'):_0x2a1f33=[{'type':_0x1856('0x1'),'content':_0x1856('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0xd'),'keyType':_0x1856('0x6'),'variableName':'calleridnum'},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0xe'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0xf')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x10'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x11')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x12'),'keyType':_0x1856('0x6'),'variableName':'queue'},{'type':'keyValue','content':'','key':_0x1856('0x13'),'keyType':'variable','variableName':'uniqueid'},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x14'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x15')},{'type':_0x1856('0x1'),'content':_0x1856('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x17'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x18')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x19'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x1a')},{'type':_0x1856('0x1'),'content':_0x1856('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0x1856('0xc'),'content':'','key':'Agent\x20Ring','keyType':'variable','variableName':_0x1856('0x15')},{'type':'keyValue','content':'','key':_0x1856('0x1c'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x1d')},{'type':'keyValue','content':'','key':_0x1856('0x1e'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x1f')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x20'),'keyType':_0x1856('0x6'),'variableName':_0x1856('0x21')},{'type':_0x1856('0xc'),'content':'','key':'Talk\x20Time','keyType':_0x1856('0x6'),'variableName':_0x1856('0x22')}];break;case _0x1856('0x8'):_0x2a1f33=[{'type':_0x1856('0x1'),'content':_0x1856('0xb'),'variableName':null},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x23'),'keyType':_0x1856('0x6'),'keyContent':'','variableName':_0x1856('0x1a')},{'type':'keyValue','content':'','key':_0x1856('0x24'),'keyType':'variable','keyContent':'','variableName':'membername'},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x13'),'keyType':_0x1856('0x6'),'keyContent':'','variableName':_0x1856('0x25')},{'type':'keyValue','content':'','key':_0x1856('0x14'),'keyType':_0x1856('0x6'),'keyContent':'','variableName':'starttime'},{'type':_0x1856('0x1'),'content':_0x1856('0x1b')},{'type':'keyValue','content':'','key':'Answer\x20Time','keyType':_0x1856('0x6'),'keyContent':'','variableName':_0x1856('0x26')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x27'),'keyType':_0x1856('0x6'),'keyContent':'','variableName':_0x1856('0x28')},{'type':_0x1856('0xc'),'content':'','key':_0x1856('0x29'),'keyType':'variable','keyContent':'','variableName':_0x1856('0x2a')},{'type':_0x1856('0xc'),'content':'','key':'Billable\x20Time','keyType':_0x1856('0x6'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x2a1f33;};
\ No newline at end of file
+var _0x3742=['variable','queue','outbound','string','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','calleridnum','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','starttime','Answer\x20Time','answertime','endtime','Duration','Billable\x20Time','billableseconds','[xCALLY\x20Ticket]','voice','toLowerCase','inbound','push'];(function(_0x36f96f,_0x4139cb){var _0x1b27a8=function(_0xe2e33a){while(--_0xe2e33a){_0x36f96f['push'](_0x36f96f['shift']());}};_0x1b27a8(++_0x4139cb);}(_0x3742,0x175));var _0x2374=function(_0x20a8e4,_0x41ce9d){_0x20a8e4=_0x20a8e4-0x0;var _0x50d35d=_0x3742[_0x20a8e4];return _0x50d35d;};'use strict';exports['getSubjects']=function(_0x36b72f,_0x7fa3a2){var _0x5a7248=[{'type':'string','content':_0x2374('0x0'),'variableName':null}];switch(_0x36b72f['toLowerCase']()){case _0x2374('0x1'):switch(_0x7fa3a2[_0x2374('0x2')]()){case _0x2374('0x3'):_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x5'),'content':'','variableName':_0x2374('0x6')});_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x5'),'content':'','variableName':'calleridnum'});break;case _0x2374('0x7'):_0x5a7248[_0x2374('0x4')]({'type':_0x2374('0x8'),'content':'Outbound\x20Call','variableName':null});_0x5a7248['push']({'type':_0x2374('0x5'),'content':'','variableName':_0x2374('0x9')});break;}}return _0x5a7248;};exports['getDescriptions']=function(_0x30df34,_0x238d4b){var _0xa9d137=[];switch(_0x30df34[_0x2374('0x2')]()){case _0x2374('0x1'):switch(_0x238d4b[_0x2374('0x2')]()){case _0x2374('0x3'):_0xa9d137=[{'type':_0x2374('0x8'),'content':_0x2374('0xa'),'key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':'Caller\x20Number','keyType':_0x2374('0x5'),'variableName':_0x2374('0xc')},{'type':_0x2374('0xb'),'content':'','key':'Caller\x20Name','keyType':_0x2374('0x5'),'variableName':_0x2374('0xd')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0xe'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0xf')},{'type':'keyValue','content':'','key':_0x2374('0x10'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x6')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x11'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x12')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x13'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x14')},{'type':_0x2374('0x8'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x15'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x16')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x17'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x9')},{'type':_0x2374('0x8'),'content':_0x2374('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x19'),'keyType':'variable','variableName':_0x2374('0x14')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x1a'),'keyType':'variable','variableName':_0x2374('0x1b')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x1c'),'keyType':_0x2374('0x5'),'variableName':_0x2374('0x1d')},{'type':'keyValue','content':'','key':_0x2374('0x1e'),'keyType':'variable','variableName':_0x2374('0x1f')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x20'),'keyType':_0x2374('0x5'),'variableName':'talktime'}];break;case _0x2374('0x7'):_0xa9d137=[{'type':'string','content':_0x2374('0xa'),'variableName':null},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x21'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x9')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x22'),'keyType':'variable','keyContent':'','variableName':'membername'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x11'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x12')},{'type':'keyValue','content':'','key':_0x2374('0x13'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x23')},{'type':_0x2374('0x8'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x24'),'keyType':'variable','keyContent':'','variableName':_0x2374('0x25')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0x2374('0x26')},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x27'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':'duration'},{'type':_0x2374('0xb'),'content':'','key':_0x2374('0x28'),'keyType':_0x2374('0x5'),'keyContent':'','variableName':_0x2374('0x29')}];break;}}return _0xa9d137;};
\ No newline at end of file
index 8fa6c01..b604c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5d8=['clone','omit','html','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','where','body','contact','default','fields','filter','user','having','read','checkAccountsRestrictions','group','i.id','ids','tag','countFilteredInteractions','length','count','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','query'];(function(_0x1bf7df,_0x45131f){var _0x4d511e=function(_0x4a1f61){while(--_0x4a1f61){_0x1bf7df['push'](_0x1bf7df['shift']());}};_0x4d511e(++_0x45131f);}(_0xc5d8,0xbb));var _0x8c5d=function(_0x2cbfe5,_0x1fb99b){_0x2cbfe5=_0x2cbfe5-0x0;var _0x3f69ad=_0xc5d8[_0x2cbfe5];return _0x3f69ad;};'use strict';var _=require(_0x8c5d('0x0'));var sqlUtils=require(_0x8c5d('0x1'));var utils=require(_0x8c5d('0x2'));exports[_0x8c5d('0x3')]=function(_0x171a20,_0x3746cc,_0x4b0354,_0x56a3cf,_0x3ccc18){var _0x7468eb={'count':0x0,'rows':[]};var _0x9cf66f=sqlUtils[_0x8c5d('0x4')](_0x171a20,_0x4b0354,_0x3746cc);if(_0x9cf66f){return Promise['resolve'](_0x7468eb);}var _0x2e643f=sqlUtils['getInteractionsQuery'](_0x171a20);var _0x4592ff={};return Promise[_0x8c5d('0x5')]()[_0x8c5d('0x6')](function(){if(_0x3746cc[_0x8c5d('0x7')]){return sqlUtils[_0x8c5d('0x8')](_0x3746cc['search'],_0x3ccc18);}else{return sqlUtils['parseQueryParameters'](_0x171a20,_0x3746cc,_0x3ccc18);}})[_0x8c5d('0x6')](function(_0x35558f){_0x2e643f[_0x8c5d('0x9')](_0x35558f[_0x8c5d('0xa')]);_0x2e643f[_0x8c5d('0x9')](_0x35558f[_0x8c5d('0xb')]);_0x2e643f[_0x8c5d('0x9')](_0x35558f[_0x8c5d('0xc')]);_0x2e643f[_0x8c5d('0x9')](_0x35558f[_0x8c5d('0xd')]);_0x2e643f['where'](_0x35558f[_0x8c5d('0xe')]);_0x2e643f[_0x8c5d('0x9')](_0x35558f[_0x8c5d('0xf')]);_0x2e643f[_0x8c5d('0x10')](_0x35558f[_0x8c5d('0x11')]);_0x4592ff=_0x35558f['tags'];return sqlUtils[_0x8c5d('0x12')](_0x171a20,_0x4b0354,_0x3746cc);})['then'](function(_0x1dd934){_0x2e643f[_0x8c5d('0x9')](_0x1dd934);_0x2e643f[_0x8c5d('0x13')](_0x8c5d('0x14'));var _0x4c25fd=_0x3746cc[_0x8c5d('0x7')]?_0x4592ff[_0x8c5d('0x15')]:_0x3746cc[_0x8c5d('0x16')];return sqlUtils[_0x8c5d('0x17')](_0x2e643f,_0x4c25fd);})[_0x8c5d('0x6')](function(_0x22f3b3){_0x7468eb['count']=_0x22f3b3[_0x8c5d('0x18')];if(_0x7468eb[_0x8c5d('0x19')]===0x0){return[];}_0x2e643f[_0x8c5d('0x10')](_0x4592ff[_0x8c5d('0x1a')]);if(_0x56a3cf[_0x8c5d('0x1b')]){_0x56a3cf[_0x8c5d('0x1b')][_0x8c5d('0x1c')](function(_0x5d0ad9){var _0x6234cd=_0x5d0ad9[0x0]===_0x8c5d('0x1d')?_0x5d0ad9[0x0]:'i.'+_0x5d0ad9[0x0];_0x2e643f['order'](_0x6234cd,_0x5d0ad9[0x1]===_0x8c5d('0x1e')?![]:!![]);if(_0x5d0ad9[0x0]===_0x8c5d('0x1f')){var _0x342dda=sqlUtils[_0x8c5d('0x20')](_0x171a20,_0x3746cc);_0x2e643f['order'](_0x342dda,_0x5d0ad9[0x1]===_0x8c5d('0x1e')?![]:!![]);}});}return sqlUtils[_0x8c5d('0x21')](_0x171a20,_0x2e643f,_0x3746cc,_0x56a3cf);})['then'](function(_0x27aa22){_0x7468eb[_0x8c5d('0x22')]=_0x27aa22;return _0x7468eb;})[_0x8c5d('0x23')](function(_0x58bacf){throw _0x58bacf;});};exports[_0x8c5d('0x24')]=function(_0x27e221,_0x3f2477){return function(_0x393050,_0x4fee9e,_0xf70d26){var _0x15bc9f=_0x393050[_0x8c5d('0xf')];var _0x61a902={};var _0x360837=_0x393050[_0x8c5d('0x25')];if(_0x61a902){_0x61a902=_[_0x8c5d('0x26')](_0x393050[_0x8c5d('0xa')]);_0x61a902=_[_0x8c5d('0x27')](_0x61a902,['body',_0x8c5d('0x28'),_0x8c5d('0x29'),_0x8c5d('0x2a'),_0x8c5d('0x2b')]);}utils[_0x8c5d('0x2c')](_0x15bc9f,_0x61a902,_0x360837,_0x27e221,_0x3f2477);_0xf70d26(null);};};
\ No newline at end of file
+var _0x1b15=['count','length','clause','order','contactName','DESC','closed','getClosedOrderClause','rows','catch','clone','omit','html','phone','fax','mobile','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','body','where','fields','user','having','checkAccountsRestrictions','i.id','ids','tag','countFilteredInteractions'];(function(_0x506eb5,_0x67de5c){var _0x1d0804=function(_0x3b712a){while(--_0x3b712a){_0x506eb5['push'](_0x506eb5['shift']());}};_0x1d0804(++_0x67de5c);}(_0x1b15,0xbf));var _0x51b1=function(_0x3680ba,_0x40f805){_0x3680ba=_0x3680ba-0x0;var _0x4ac079=_0x1b15[_0x3680ba];return _0x4ac079;};'use strict';var _=require('lodash');var sqlUtils=require(_0x51b1('0x0'));var utils=require(_0x51b1('0x1'));exports[_0x51b1('0x2')]=function(_0x280897,_0x365429,_0x198db7,_0x129feb,_0x28b4a3){var _0x23bfbb={'count':0x0,'rows':[]};var _0x19757d=sqlUtils[_0x51b1('0x3')](_0x280897,_0x198db7,_0x365429);if(_0x19757d){return Promise[_0x51b1('0x4')](_0x23bfbb);}var _0x2fa80b=sqlUtils['getInteractionsQuery'](_0x280897);var _0x3b2327={};return Promise['resolve']()[_0x51b1('0x5')](function(){if(_0x365429[_0x51b1('0x6')]){return sqlUtils[_0x51b1('0x7')](_0x365429['search'],_0x28b4a3);}else{return sqlUtils[_0x51b1('0x8')](_0x280897,_0x365429,_0x28b4a3);}})[_0x51b1('0x5')](function(_0x560648){_0x2fa80b['where'](_0x560648[_0x51b1('0x9')]);_0x2fa80b[_0x51b1('0xa')](_0x560648['contact']);_0x2fa80b[_0x51b1('0xa')](_0x560648['default']);_0x2fa80b['where'](_0x560648[_0x51b1('0xb')]);_0x2fa80b[_0x51b1('0xa')](_0x560648['filter']);_0x2fa80b['where'](_0x560648[_0x51b1('0xc')]);_0x2fa80b[_0x51b1('0xd')](_0x560648['read']);_0x3b2327=_0x560648['tags'];return sqlUtils[_0x51b1('0xe')](_0x280897,_0x198db7,_0x365429);})[_0x51b1('0x5')](function(_0x58027d){_0x2fa80b[_0x51b1('0xa')](_0x58027d);_0x2fa80b['group'](_0x51b1('0xf'));var _0x2bb1d7=_0x365429[_0x51b1('0x6')]?_0x3b2327[_0x51b1('0x10')]:_0x365429[_0x51b1('0x11')];return sqlUtils[_0x51b1('0x12')](_0x2fa80b,_0x2bb1d7);})[_0x51b1('0x5')](function(_0x398dec){_0x23bfbb[_0x51b1('0x13')]=_0x398dec[_0x51b1('0x14')];if(_0x23bfbb[_0x51b1('0x13')]===0x0){return[];}_0x2fa80b[_0x51b1('0xd')](_0x3b2327[_0x51b1('0x15')]);if(_0x129feb[_0x51b1('0x16')]){_0x129feb[_0x51b1('0x16')]['forEach'](function(_0x42152e){var _0x1e1b4a=_0x42152e[0x0]===_0x51b1('0x17')?_0x42152e[0x0]:'i.'+_0x42152e[0x0];_0x2fa80b[_0x51b1('0x16')](_0x1e1b4a,_0x42152e[0x1]===_0x51b1('0x18')?![]:!![]);if(_0x42152e[0x0]===_0x51b1('0x19')){var _0x29b80f=sqlUtils[_0x51b1('0x1a')](_0x280897,_0x365429);_0x2fa80b[_0x51b1('0x16')](_0x29b80f,_0x42152e[0x1]===_0x51b1('0x18')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x280897,_0x2fa80b,_0x365429,_0x129feb);})[_0x51b1('0x5')](function(_0x1a37c8){_0x23bfbb[_0x51b1('0x1b')]=_0x1a37c8;return _0x23bfbb;})[_0x51b1('0x1c')](function(_0x2ae939){throw _0x2ae939;});};exports['tracked']=function(_0x2d14cb,_0x725756){return function(_0x90e7cb,_0x27a069,_0x291cf4){var _0x39c647=_0x90e7cb[_0x51b1('0xc')];var _0x433392={};var _0xea40bf=_0x90e7cb['query'];if(_0x433392){_0x433392=_[_0x51b1('0x1d')](_0x90e7cb[_0x51b1('0x9')]);_0x433392=_[_0x51b1('0x1e')](_0x433392,[_0x51b1('0x9'),_0x51b1('0x1f'),_0x51b1('0x20'),_0x51b1('0x21'),_0x51b1('0x22')]);}utils['updateUser'](_0x39c647,_0x433392,_0xea40bf,_0x2d14cb,_0x725756);_0x291cf4(null);};};
\ No newline at end of file
index 0958913..c0e47c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['text','value','start','end','read','and','Contact','operator','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','Tag','tags','ids','$substring','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','plainBody','some','compact','forEach','concat','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','resolve','then','fields','tag','clause','filter','get','Websites','Accounts','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','QueryTypes','SELECT','query','toString','keyBy','merge','attributes','unreadMessages','a.key','a.mandatoryDisposition','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.id','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','i.ContactId','i.MailAccountId','i.UserId','openchannel','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','TagIds','limit','offset','sequelize','groupBy','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','isEmpty','t.id\x20IN\x20?','exports','lodash','squel','./update-interaction','updateInteraction','./utils','../../mysqldb','role','agent','search','select','field','name','from','tools_tags','getInteractionFK','_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','o.id\x20=\x20i.UserId','accounts','messages','me.','\x20=\x20i.id','interactionsTags','t.id\x20=\x20it.TagId','expr','getSelectedTags','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','fax','i.from\x20LIKE\x20?','isEmail','c.email\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)','parseSearch','sqlOperator','conditions','find','buildExpression','type'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0xda55,0x6d));var _0x5da5=function(_0x2a568e,_0x4788b1){_0x2a568e=_0x2a568e-0x0;var _0xe1df87=_0xda55[_0x2a568e];return _0xe1df87;};'use strict';var _=require(_0x5da5('0x0'));var squel=require(_0x5da5('0x1'));var as=require('../parsers/advancedSearch');var qs=require('../parsers/qs');var updateInteraction=require(_0x5da5('0x2'))[_0x5da5('0x3')];var utils=require(_0x5da5('0x4'));var db=require(_0x5da5('0x5'))['db'];function skipInteractionsQuery(_0x1c3afd,_0x5da254,_0x3400e9){var _0x4b4010=![];var _0x356a37=utils['getAccountFK'](_0x1c3afd);if(_0x5da254[_0x5da5('0x6')]===_0x5da5('0x7')&&!_0x3400e9[_0x5da5('0x8')]&&!_0x3400e9[_0x356a37]){_0x4b4010=!![];}return _0x4b4010;}function getTagsQuery(){return squel[_0x5da5('0x9')]()[_0x5da5('0xa')]('id')[_0x5da5('0xa')](_0x5da5('0xb'))[_0x5da5('0xa')]('color')[_0x5da5('0xc')](_0x5da5('0xd'));}function getUsersQuery(_0x2731a3,_0x26fbe3){var _0x1a047e=utils[_0x5da5('0xe')](_0x2731a3);var _0x33313e='user_has_'+_0x2731a3+_0x5da5('0xf');var _0x3b5ff9=squel['select']()[_0x5da5('0xa')](_0x5da5('0x10'))[_0x5da5('0xa')](_0x5da5('0x11'))[_0x5da5('0xa')](_0x5da5('0x12')+_0x1a047e)['from'](_0x33313e,'ui')['left_join']('users','u',_0x5da5('0x13'));if(_0x26fbe3[_0x5da5('0x14')]>0x0){_0x3b5ff9[_0x5da5('0x15')](_0x5da5('0x12')+_0x1a047e+_0x5da5('0x16'),_[_0x5da5('0x17')](_0x26fbe3,'id'));}return _0x3b5ff9;}function getInteractionsQuery(_0x3aff51){var _0x4a952a=utils[_0x5da5('0x18')](_0x3aff51);var _0x290136=utils[_0x5da5('0x19')](_0x3aff51);var _0x16b11f=utils[_0x5da5('0xe')](_0x3aff51);return squel[_0x5da5('0x9')]()['from'](_0x4a952a[_0x5da5('0x1a')],'i')[_0x5da5('0x1b')](_0x5da5('0x1c'),'c',_0x5da5('0x1d'))[_0x5da5('0x1b')]('users','o',_0x5da5('0x1e'))[_0x5da5('0x1b')](_0x4a952a[_0x5da5('0x1f')],'a','a.id\x20=\x20i.'+_0x290136)[_0x5da5('0x1b')](_0x4a952a[_0x5da5('0x20')],'me',_0x5da5('0x21')+_0x16b11f+_0x5da5('0x22'))[_0x5da5('0x1b')](_0x4a952a[_0x5da5('0x23')],'it','it.'+_0x16b11f+_0x5da5('0x22'))['left_join'](_0x5da5('0xd'),'t',_0x5da5('0x24'));}function getSqlClauses(){var _0x2dd138={'body':squel['expr'](),'contact':squel[_0x5da5('0x25')](),'default':squel[_0x5da5('0x25')](),'fields':squel[_0x5da5('0x25')](),'filter':squel[_0x5da5('0x25')](),'read':squel['expr'](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel['expr']()};return _0x2dd138;}function parseTagParameter(_0x3526cf){var _0x56d509=squel['expr']();if(_0x3526cf){var _0x1f75f3=utils[_0x5da5('0x26')](_0x3526cf);_0x1f75f3['forEach'](function(_0x1798ae){_0x56d509['or'](_0x5da5('0x27'),'%,'+_0x1798ae+',%');});}return _0x56d509;}function parseReadParameter(_0x558b12){var _0x3b815e='';if(_0x558b12){_0x3b815e=_0x5da5('0x28');if(_0x558b12==='1'){_0x3b815e=_0x3b815e[_0x5da5('0x29')](_0x5da5('0x2a'),'=');}else{_0x3b815e=_0x3b815e[_0x5da5('0x29')]('{OPERATOR}','>');}}return _0x3b815e;}function parseSearchFilter(_0x3ae664,_0x2e3c5d){var _0x31cb5f=squel[_0x5da5('0x25')]();if(_0x2e3c5d){var _0x55e2bf=_0x2e3c5d['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x5da5('0x2b')](_0x55e2bf)){_0x31cb5f['or'](_0x5da5('0x2c'),_0x55e2bf+'%');if([_0x5da5('0x2d'),_0x5da5('0x2e')]['includes'](_0x3ae664)){_0x31cb5f['or']('i.phone\x20LIKE\x20?',_0x55e2bf+'%');}else if(_0x3ae664===_0x5da5('0x2f')){_0x31cb5f['or']('i.fax\x20LIKE\x20?',_0x55e2bf+'%');}else if(_0x3ae664==='openchannel'){_0x31cb5f['or'](_0x5da5('0x30'),_0x55e2bf+'%');}}else if(_0x3ae664==='mail'&&qs[_0x5da5('0x31')](_0x55e2bf)){_0x31cb5f['or'](_0x5da5('0x32'),_0x55e2bf+'%');}else{if(_0x3ae664===_0x5da5('0x33')){_0x31cb5f['or'](_0x5da5('0x34'),qs[_0x5da5('0x35')](_0x55e2bf))['or'](_0x5da5('0x36'),qs[_0x5da5('0x35')](_0x55e2bf));}else{if(_0x3ae664!==_0x5da5('0x2f')){_0x31cb5f['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x5da5('0x35')](_0x55e2bf));}_0x31cb5f['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x55e2bf+'%');}}}return _0x31cb5f;}function parseAdvancedSearchFilter(_0x203f47,_0xadfcb9){var _0x28c5eb=getSqlClauses();var _0x464623=as[_0x5da5('0x37')](_0x203f47);var _0x9aba42=_0x464623[_0x5da5('0x38')];for(var _0x117610=0x0;_0x117610<_0x464623[_0x5da5('0x39')][_0x5da5('0x14')];_0x117610++){var _0x44f35d=_0x464623[_0x5da5('0x39')][_0x117610];var _0x3ba804='i';var _0x4f05d7=_[_0x5da5('0x3a')](_0xadfcb9,['name',_0x44f35d[_0x5da5('0xa')]]);if(_0x4f05d7){var _0x40f6c6=as[_0x5da5('0x3b')](_0x3ba804,_0x4f05d7[_0x5da5('0x3c')],_0x44f35d);_0x28c5eb['default'][_0x9aba42](_0x40f6c6[_0x5da5('0x3d')],_0x40f6c6[_0x5da5('0x3e')][_0x5da5('0x3f')],_0x40f6c6['value'][_0x5da5('0x40')]);}else{switch(_0x44f35d[_0x5da5('0xa')]){case'unreadMessages':var _0x18d00b=parseReadParameter(_0x44f35d[_0x5da5('0x3e')]);_0x28c5eb[_0x5da5('0x41')][_0x5da5('0x42')](_0x18d00b);break;case _0x5da5('0x43'):if(_0x44f35d[_0x5da5('0x44')]==='$substring'){if(_0x44f35d[_0x5da5('0x3e')][_0x5da5('0x45')]('\x20')[_0x5da5('0x14')]>0x1){_0x28c5eb[_0x5da5('0x46')][_0x9aba42](_0x5da5('0x47'),qs['getFullTextValue'](_0x44f35d[_0x5da5('0x3e')]),null);}else{var _0x21ffa1='%'+_0x44f35d['value']+'%';_0x28c5eb[_0x5da5('0x46')][_0x9aba42]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x21ffa1,_0x21ffa1,_0x21ffa1);}}else{_0x4f05d7=_['find'](_0xadfcb9,[_0x5da5('0xb'),_0x5da5('0x48')]);_0x44f35d[_0x5da5('0xa')]=_0x5da5('0x48');_0x40f6c6=as[_0x5da5('0x3b')](_0x3ba804,_0x4f05d7[_0x5da5('0x3c')],_0x44f35d);_0x28c5eb[_0x5da5('0x46')][_0x9aba42](_0x40f6c6[_0x5da5('0x3d')],_0x40f6c6[_0x5da5('0x3e')][_0x5da5('0x3f')],_0x40f6c6[_0x5da5('0x3e')][_0x5da5('0x40')]);}break;case _0x5da5('0x49'):var _0xc6d127=_0x44f35d[_0x5da5('0x3e')][_0x5da5('0x45')](',')[_0x5da5('0x17')](function(_0x4464a7){return Number(_0x4464a7);});var _0x62183f=parseTagParameter(_0xc6d127);_0x28c5eb[_0x5da5('0x4a')]['clause']['and'](_0x62183f);_0x28c5eb[_0x5da5('0x4a')][_0x5da5('0x4b')]=_0xc6d127;break;case'User':if(_0x44f35d[_0x5da5('0x44')]===_0x5da5('0x4c')){_0x28c5eb[_0x5da5('0x4d')][_0x9aba42](_0x5da5('0x4e'),'%'+_0x44f35d[_0x5da5('0x3e')]+'%',null);}else{_0x4f05d7=_[_0x5da5('0x3a')](_0xadfcb9,[_0x5da5('0xb'),_0x5da5('0x4f')]);_0x44f35d[_0x5da5('0xa')]=_0x5da5('0x4f');_0x40f6c6=as['buildExpression'](_0x3ba804,_0x4f05d7[_0x5da5('0x3c')],_0x44f35d);_0x28c5eb['user'][_0x9aba42](_0x40f6c6['text'],_0x40f6c6[_0x5da5('0x3e')][_0x5da5('0x3f')],_0x40f6c6[_0x5da5('0x3e')][_0x5da5('0x40')]);}break;case _0x5da5('0x50'):case _0x5da5('0x51'):_0x40f6c6=as['buildExpression']('me',null,_0x44f35d);_0x28c5eb[_0x5da5('0x50')][_0x9aba42](_0x40f6c6['text'],_0x40f6c6['value'][_0x5da5('0x3f')],_0x40f6c6[_0x5da5('0x3e')]['end']);break;}}}return _0x28c5eb;}function parseModelFields(_0x419d74,_0x322b08,_0x783735){var _0x3ededf=utils[_0x5da5('0x19')](_0x419d74);var _0x4870b9=squel[_0x5da5('0x25')]();var _0x5277bc=_(_0x322b08)['keys']()[_0x5da5('0x17')](function(_0x57eca7){return _[_0x5da5('0x52')](_0x783735,[_0x5da5('0xb'),_0x57eca7])?_0x57eca7:undefined;})[_0x5da5('0x53')]()[_0x5da5('0x3e')]();if(_0x5277bc[_0x5da5('0x14')]>0x0){_0x5277bc[_0x5da5('0x54')](function(_0x560d99){if(_0x560d99===_0x3ededf){_0x4870b9['and']('i.'+_0x3ededf+_0x5da5('0x16'),[][_0x5da5('0x55')](_0x322b08[_0x560d99]));}else if(_0x560d99==='createdAt'){var _0x4fca4c=JSON[_0x5da5('0x56')](_0x322b08[_0x560d99])['$gte'];var _0x3228b5=JSON['parse'](_0x322b08[_0x560d99])['$lte'];_0x4870b9[_0x5da5('0x42')](_0x5da5('0x57'),_0x4fca4c,_0x3228b5);}else{if(_0x322b08[_0x560d99]===_0x5da5('0x58')){_0x4870b9[_0x5da5('0x42')]('i.'+_0x560d99+'\x20IS\x20NULL');}else{_0x4870b9[_0x5da5('0x42')]('i.'+_0x560d99+_0x5da5('0x59'),_0x322b08[_0x560d99]);}}});}return _0x4870b9;}function parseQueryParameters(_0xa1d591,_0x56523b,_0x2c316e){var _0x370178=getSqlClauses();return Promise[_0x5da5('0x5a')]()[_0x5da5('0x5b')](function(){return parseModelFields(_0xa1d591,_0x56523b,_0x2c316e);})[_0x5da5('0x5b')](function(_0x2e6460){_0x370178[_0x5da5('0x5c')][_0x5da5('0x42')](_0x2e6460);return parseReadParameter(_0x56523b[_0x5da5('0x41')]);})[_0x5da5('0x5b')](function(_0x17d1a0){_0x370178[_0x5da5('0x41')][_0x5da5('0x42')](_0x17d1a0);return parseTagParameter(_0x56523b[_0x5da5('0x5d')]);})[_0x5da5('0x5b')](function(_0x26f6fb){_0x370178[_0x5da5('0x4a')][_0x5da5('0x5e')][_0x5da5('0x42')](_0x26f6fb);return parseSearchFilter(_0xa1d591,_0x56523b[_0x5da5('0x5f')]);})[_0x5da5('0x5b')](function(_0x4cc539){_0x370178[_0x5da5('0x5f')]=_0x4cc539;return _0x370178;});}function checkAccountsRestrictions(_0x35939b,_0x5f06d6,_0x4afd64){var _0x509c9e=utils[_0x5da5('0x19')](_0x35939b);var _0x469907=_0x5da5('0x60')+_['capitalize'](_0x35939b)+(_0x35939b==='chat'?_0x5da5('0x61'):_0x5da5('0x62'));var _0x2b085b=squel[_0x5da5('0x25')]();return Promise['resolve']()[_0x5da5('0x5b')](function(){if(_0x4afd64[_0x5da5('0x8')]&&_0x5f06d6[_0x5da5('0x6')]==='agent'){return _0x5f06d6[_0x469907]({'attributes':['id'],'raw':!![]});}})[_0x5da5('0x5b')](function(_0x5913b3){if(_0x5913b3){if(_0x5913b3[_0x5da5('0x14')]===0x0){_0x2b085b[_0x5da5('0x42')]('i.'+_0x509c9e+_0x5da5('0x63'));}else{_0x2b085b[_0x5da5('0x42')]('i.'+_0x509c9e+_0x5da5('0x16'),_[_0x5da5('0x17')](_0x5913b3,'id'));}}else if(!_0x4afd64[_0x509c9e]){_0x2b085b[_0x5da5('0x42')]('i.'+_0x509c9e+_0x5da5('0x64'));}})[_0x5da5('0x5b')](function(){return _0x2b085b;});}function getClosedOrderClause(_0x1d6937,_0x2f9f72){var _0xe3fc79='';var _0x34697a=[_0x5da5('0x65'),_0x5da5('0x66'),_0x5da5('0x67')];if(_0x1d6937===_0x5da5('0x33')){_0x34697a[_0x5da5('0x68')](_0x5da5('0x69'));}if(_0x2f9f72[_0x5da5('0x6a')]==='0'&&_0x1d6937===_0x5da5('0x33')){_0xe3fc79='i.substatus';}else{if(_0x2f9f72['closed']==='1'){_0x34697a[_0x5da5('0x6b')]();}_0xe3fc79=_0x5da5('0x6c')+_0x34697a[_0x5da5('0x6d')](',\x20')+')';}return _0xe3fc79;}function getFilteredInteractions(_0x55ece8,_0x2ca7b9,_0x4520ea,_0x43b55e){var _0x23af39=utils['getInteractionFK'](_0x55ece8);var _0x2c6689=_['capitalize'](_0x55ece8)+_0x5da5('0x6e');var _0x5f862f=[];var _0x3155e4=getTagsQuery();var _0x53cb6a={'type':db[_0x5da5('0x6f')][_0x5da5('0x70')][_0x5da5('0x71')],'raw':!![]};var _0x512f01=[];var _0x5a6990=[];return db['sequelize'][_0x5da5('0x72')](_0x3155e4[_0x5da5('0x73')](),_0x53cb6a)[_0x5da5('0x5b')](function(_0x152b61){_0x5f862f=_[_0x5da5('0x74')](_0x152b61,'id');_0x53cb6a=_[_0x5da5('0x75')](_0x53cb6a,{'model':db[_0x2c6689],'mapToModel':!![],'nest':!![]});if(_0x4520ea[_0x5da5('0x5c')]){_0x43b55e[_0x5da5('0x76')]['forEach'](function(_0x7101b2){_0x2ca7b9[_0x5da5('0xa')]('i.'+_0x7101b2);});}else{_0x2ca7b9['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x5da5('0x77'));_0x2ca7b9['field'](_0x5da5('0x78'),'Account.key');_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x79'),_0x5da5('0x7a'));if(_0x55ece8===_0x5da5('0x33')){_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x7b'),_0x5da5('0x7c'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x7d'),_0x5da5('0x7e'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x7f'));_0x2ca7b9['field']('i.createdAt');_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x80'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x81'));_0x2ca7b9['field']('i.closedAt');_0x2ca7b9['field'](_0x5da5('0x82'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x83'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x84'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x85'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x67'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x66'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x65'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x69'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x86'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x87'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x88'));_0x2ca7b9['field'](_0x5da5('0x89'));}else if(_0x55ece8===_0x5da5('0x8a')){_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x8b'),'contactName');}else{_0x2ca7b9['field'](_0x5da5('0x8c'),'contactName');}if(_0x55ece8!==_0x5da5('0x33')){_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x8d'));}_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x8e'),_0x5da5('0x8f'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x90'),_0x5da5('0x91'));_0x2ca7b9['field'](_0x5da5('0x92'),'Contact.email');_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x93'),'Contact.phone');_0x2ca7b9[_0x5da5('0xa')]('c.mobile',_0x5da5('0x94'));_0x2ca7b9['field'](_0x5da5('0x95'),_0x5da5('0x96'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x97'),_0x5da5('0x98'));_0x2ca7b9[_0x5da5('0xa')](_0x5da5('0x99'),_0x5da5('0x9a'));_0x2ca7b9[_0x5da5('0xa')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x5da5('0x9b'));}if(_0x43b55e[_0x5da5('0x9c')]){_0x2ca7b9['limit'](_0x43b55e['limit']);}if(_0x43b55e[_0x5da5('0x9d')]){_0x2ca7b9[_0x5da5('0x9d')](_0x43b55e[_0x5da5('0x9d')]);}return db[_0x5da5('0x9e')]['query'](_0x2ca7b9[_0x5da5('0x73')](),_0x53cb6a);})['then'](function(_0x26aa9f){_0x512f01=_0x26aa9f;var _0x5ee791=getUsersQuery(_0x55ece8,_0x512f01);return db['sequelize'][_0x5da5('0x72')](_0x5ee791['toString'](),_0x53cb6a);})['then'](function(_0x156e7f){_0x5a6990=_[_0x5da5('0x9f')](_0x156e7f,_0x23af39);if(_0x55ece8===_0x5da5('0x33')){return db[_0x5da5('0xa0')][_0x5da5('0xa1')]({'attributes':[_0x5da5('0xa2')],'raw':!![]});}})[_0x5da5('0x5b')](function(_0x2bdcc1){var _0x58d80b=_0x2bdcc1?_0x2bdcc1[_0x5da5('0xa2')]:undefined;var _0x308e64=_0x512f01[_0x5da5('0x17')](function(_0x363622){return updateInteraction(_0x363622,_0x5f862f,_0x5a6990,_0x58d80b);});return Promise[_0x5da5('0xa3')](_0x308e64);});}function countFilteredInteractions(_0x301d5f,_0x378922){var _0x85827f=_0x301d5f[_0x5da5('0xa4')]();_0x85827f[_0x5da5('0xa')](_0x5da5('0xa5'));_0x85827f[_0x5da5('0xa')](_0x5da5('0xa6'),_0x5da5('0x77'));var _0x300b3a=utils[_0x5da5('0x26')](_0x378922);if(!_[_0x5da5('0xa7')](_0x300b3a)){_0x85827f[_0x5da5('0x15')](_0x5da5('0xa8'),_0x300b3a);}var _0x781ece={'type':db[_0x5da5('0x6f')][_0x5da5('0x70')][_0x5da5('0x71')],'raw':!![]};return db[_0x5da5('0x9e')]['query'](_0x85827f[_0x5da5('0x73')](),_0x781ece);}module[_0x5da5('0xa9')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x131e=['offset','sequelize','query','groupBy','Setting','findOne','enableEmailPreview','clone','COUNT(*)','isEmpty','Sequelize','exports','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','field','name','color','tools_tags','getInteractionFK','user_has_','u.id','u.fullname','ui.','from','left_join','users','u.id\x20=\x20ui.UserId','getInteractionsTables','select','interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','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','sms','whatsapp','includes','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','fax','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','type','text','start','value','end','unreadMessages','and','operator','$substring','length','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','contact','split','tags','ids','User','user','UserId','buildExpression','plainBody','body','keys','map','some','compact','concat','createdAt','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','resolve','then','fields','read','clause','filter','get','capitalize','search','agent','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','closed','shift','join','Interaction','QueryTypes','SELECT','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','a.email','Account.email','contactName','i.id','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','TagIds','limit'];(function(_0x223c42,_0x9b0446){var _0x105e48=function(_0x3ac3f3){while(--_0x3ac3f3){_0x223c42['push'](_0x223c42['shift']());}};_0x105e48(++_0x9b0446);}(_0x131e,0x1ec));var _0xe131=function(_0xf9954e,_0x47a35a){_0xf9954e=_0xf9954e-0x0;var _0x58038e=_0x131e[_0xf9954e];return _0x58038e;};'use strict';var _=require('lodash');var squel=require('squel');var as=require('../parsers/advancedSearch');var qs=require(_0xe131('0x0'));var updateInteraction=require(_0xe131('0x1'))[_0xe131('0x2')];var utils=require(_0xe131('0x3'));var db=require(_0xe131('0x4'))['db'];function skipInteractionsQuery(_0x761c,_0x4ff7f7,_0x2fc440){var _0x344903=![];var _0x2de969=utils[_0xe131('0x5')](_0x761c);if(_0x4ff7f7[_0xe131('0x6')]==='agent'&&!_0x2fc440['search']&&!_0x2fc440[_0x2de969]){_0x344903=!![];}return _0x344903;}function getTagsQuery(){return squel['select']()['field']('id')[_0xe131('0x7')](_0xe131('0x8'))['field'](_0xe131('0x9'))['from'](_0xe131('0xa'));}function getUsersQuery(_0x18f749,_0x5ae4c1){var _0x28e9e1=utils[_0xe131('0xb')](_0x18f749);var _0x2438af=_0xe131('0xc')+_0x18f749+'_interactions';var _0x55768a=squel['select']()['field'](_0xe131('0xd'))[_0xe131('0x7')](_0xe131('0xe'))[_0xe131('0x7')](_0xe131('0xf')+_0x28e9e1)[_0xe131('0x10')](_0x2438af,'ui')[_0xe131('0x11')](_0xe131('0x12'),'u',_0xe131('0x13'));if(_0x5ae4c1['length']>0x0){_0x55768a['where']('ui.'+_0x28e9e1+'\x20IN\x20?',_['map'](_0x5ae4c1,'id'));}return _0x55768a;}function getInteractionsQuery(_0x2628e7){var _0x32091b=utils[_0xe131('0x14')](_0x2628e7);var _0x5a02b6=utils['getAccountFK'](_0x2628e7);var _0x400f6b=utils[_0xe131('0xb')](_0x2628e7);return squel[_0xe131('0x15')]()[_0xe131('0x10')](_0x32091b[_0xe131('0x16')],'i')[_0xe131('0x11')]('cm_contacts','c',_0xe131('0x17'))[_0xe131('0x11')](_0xe131('0x12'),'o',_0xe131('0x18'))[_0xe131('0x11')](_0x32091b['accounts'],'a','a.id\x20=\x20i.'+_0x5a02b6)[_0xe131('0x11')](_0x32091b[_0xe131('0x19')],'me','me.'+_0x400f6b+_0xe131('0x1a'))['left_join'](_0x32091b['interactionsTags'],'it',_0xe131('0x1b')+_0x400f6b+_0xe131('0x1a'))[_0xe131('0x11')](_0xe131('0xa'),'t',_0xe131('0x1c'));}function getSqlClauses(){var _0x225278={'body':squel[_0xe131('0x1d')](),'contact':squel['expr'](),'default':squel[_0xe131('0x1d')](),'fields':squel[_0xe131('0x1d')](),'filter':squel['expr'](),'read':squel['expr'](),'tags':{'clause':squel[_0xe131('0x1d')](),'ids':null},'user':squel['expr']()};return _0x225278;}function parseTagParameter(_0x41c386){var _0x3b95bf=squel['expr']();if(_0x41c386){var _0x44935b=utils[_0xe131('0x1e')](_0x41c386);_0x44935b[_0xe131('0x1f')](function(_0x499ca8){_0x3b95bf['or'](_0xe131('0x20'),'%,'+_0x499ca8+',%');});}return _0x3b95bf;}function parseReadParameter(_0x442279){var _0x219fe1='';if(_0x442279){_0x219fe1=_0xe131('0x21');if(_0x442279==='1'){_0x219fe1=_0x219fe1[_0xe131('0x22')](_0xe131('0x23'),'=');}else{_0x219fe1=_0x219fe1[_0xe131('0x22')](_0xe131('0x23'),'>');}}return _0x219fe1;}function parseSearchFilter(_0x9f8c66,_0x341294){var _0x58e75a=squel[_0xe131('0x1d')]();if(_0x341294){var _0x554b62=_0x341294[_0xe131('0x22')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xe131('0x24')](_0x554b62)){_0x58e75a['or']('i.id\x20LIKE\x20?',_0x554b62+'%');if([_0xe131('0x25'),_0xe131('0x26')][_0xe131('0x27')](_0x9f8c66)){_0x58e75a['or']('i.phone\x20LIKE\x20?',_0x554b62+'%');}else if(_0x9f8c66==='fax'){_0x58e75a['or'](_0xe131('0x28'),_0x554b62+'%');}else if(_0x9f8c66===_0xe131('0x29')){_0x58e75a['or'](_0xe131('0x2a'),_0x554b62+'%');}}else if(_0x9f8c66===_0xe131('0x2b')&&qs[_0xe131('0x2c')](_0x554b62)){_0x58e75a['or'](_0xe131('0x2d'),_0x554b62+'%');}else{if(_0x9f8c66===_0xe131('0x2b')){_0x58e75a['or'](_0xe131('0x2e'),qs['getFullTextValue'](_0x554b62))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe131('0x2f')](_0x554b62));}else{if(_0x9f8c66!==_0xe131('0x30')){_0x58e75a['or'](_0xe131('0x31'),qs[_0xe131('0x2f')](_0x554b62));}_0x58e75a['or'](_0xe131('0x32'),_0x554b62+'%');}}}return _0x58e75a;}function parseAdvancedSearchFilter(_0x44cc9f,_0x12168a){var _0x4d2327=getSqlClauses();var _0x54d331=as[_0xe131('0x33')](_0x44cc9f);var _0x53f7bd=_0x54d331[_0xe131('0x34')];for(var _0x584cc9=0x0;_0x584cc9<_0x54d331[_0xe131('0x35')]['length'];_0x584cc9++){var _0x39735c=_0x54d331['conditions'][_0x584cc9];var _0x28bb6a='i';var _0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0x39735c[_0xe131('0x7')]]);if(_0x3e2a0d){var _0x17016b=as['buildExpression'](_0x28bb6a,_0x3e2a0d[_0xe131('0x37')],_0x39735c);_0x4d2327['default'][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b['value'][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}else{switch(_0x39735c[_0xe131('0x7')]){case _0xe131('0x3c'):var _0xe76882=parseReadParameter(_0x39735c[_0xe131('0x3a')]);_0x4d2327['read'][_0xe131('0x3d')](_0xe76882);break;case'Contact':if(_0x39735c[_0xe131('0x3e')]===_0xe131('0x3f')){if(_0x39735c['value']['split']('\x20')[_0xe131('0x40')]>0x1){_0x4d2327['contact'][_0x53f7bd]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe131('0x2f')](_0x39735c['value']),null);}else{var _0x17a3c5='%'+_0x39735c[_0xe131('0x3a')]+'%';_0x4d2327['contact'][_0x53f7bd](_0xe131('0x41'),_0x17a3c5,_0x17a3c5,_0x17a3c5);}}else{_0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0xe131('0x42')]);_0x39735c[_0xe131('0x7')]='ContactId';_0x17016b=as['buildExpression'](_0x28bb6a,_0x3e2a0d[_0xe131('0x37')],_0x39735c);_0x4d2327[_0xe131('0x43')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b['value'][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}break;case'Tag':var _0x149c8c=_0x39735c[_0xe131('0x3a')][_0xe131('0x44')](',')['map'](function(_0x1da932){return Number(_0x1da932);});var _0xffa6bc=parseTagParameter(_0x149c8c);_0x4d2327[_0xe131('0x45')]['clause'][_0xe131('0x3d')](_0xffa6bc);_0x4d2327[_0xe131('0x45')][_0xe131('0x46')]=_0x149c8c;break;case _0xe131('0x47'):if(_0x39735c[_0xe131('0x3e')]===_0xe131('0x3f')){_0x4d2327[_0xe131('0x48')][_0x53f7bd]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x39735c['value']+'%',null);}else{_0x3e2a0d=_[_0xe131('0x36')](_0x12168a,[_0xe131('0x8'),_0xe131('0x49')]);_0x39735c[_0xe131('0x7')]=_0xe131('0x49');_0x17016b=as[_0xe131('0x4a')](_0x28bb6a,_0x3e2a0d['type'],_0x39735c);_0x4d2327[_0xe131('0x48')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b[_0xe131('0x3a')][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);}break;case'body':case _0xe131('0x4b'):_0x17016b=as[_0xe131('0x4a')]('me',null,_0x39735c);_0x4d2327[_0xe131('0x4c')][_0x53f7bd](_0x17016b[_0xe131('0x38')],_0x17016b[_0xe131('0x3a')][_0xe131('0x39')],_0x17016b[_0xe131('0x3a')][_0xe131('0x3b')]);break;}}}return _0x4d2327;}function parseModelFields(_0x3d7ae8,_0x320699,_0x442f06){var _0x4a06c8=utils[_0xe131('0x5')](_0x3d7ae8);var _0x5b03ab=squel['expr']();var _0x2c8f44=_(_0x320699)[_0xe131('0x4d')]()[_0xe131('0x4e')](function(_0x3860b2){return _[_0xe131('0x4f')](_0x442f06,[_0xe131('0x8'),_0x3860b2])?_0x3860b2:undefined;})[_0xe131('0x50')]()[_0xe131('0x3a')]();if(_0x2c8f44[_0xe131('0x40')]>0x0){_0x2c8f44[_0xe131('0x1f')](function(_0x32c687){if(_0x32c687===_0x4a06c8){_0x5b03ab['and']('i.'+_0x4a06c8+'\x20IN\x20?',[][_0xe131('0x51')](_0x320699[_0x32c687]));}else if(_0x32c687===_0xe131('0x52')){var _0x513f94=JSON['parse'](_0x320699[_0x32c687])[_0xe131('0x53')];var _0x564a29=JSON['parse'](_0x320699[_0x32c687])[_0xe131('0x54')];_0x5b03ab[_0xe131('0x3d')](_0xe131('0x55'),_0x513f94,_0x564a29);}else{if(_0x320699[_0x32c687]===_0xe131('0x56')){_0x5b03ab[_0xe131('0x3d')]('i.'+_0x32c687+_0xe131('0x57'));}else{_0x5b03ab['and']('i.'+_0x32c687+'\x20=\x20?',_0x320699[_0x32c687]);}}});}return _0x5b03ab;}function parseQueryParameters(_0x40d0cb,_0xc3867d,_0x4837de){var _0x19692b=getSqlClauses();return Promise[_0xe131('0x58')]()[_0xe131('0x59')](function(){return parseModelFields(_0x40d0cb,_0xc3867d,_0x4837de);})[_0xe131('0x59')](function(_0x1aa623){_0x19692b[_0xe131('0x5a')]['and'](_0x1aa623);return parseReadParameter(_0xc3867d[_0xe131('0x5b')]);})['then'](function(_0x5b1712){_0x19692b[_0xe131('0x5b')][_0xe131('0x3d')](_0x5b1712);return parseTagParameter(_0xc3867d['tag']);})['then'](function(_0xbcd75e){_0x19692b[_0xe131('0x45')][_0xe131('0x5c')]['and'](_0xbcd75e);return parseSearchFilter(_0x40d0cb,_0xc3867d[_0xe131('0x5d')]);})[_0xe131('0x59')](function(_0x45d00d){_0x19692b[_0xe131('0x5d')]=_0x45d00d;return _0x19692b;});}function checkAccountsRestrictions(_0x2a65fd,_0x5e61c5,_0x25eec7){var _0x5185dd=utils[_0xe131('0x5')](_0x2a65fd);var _0x45ac9c=_0xe131('0x5e')+_[_0xe131('0x5f')](_0x2a65fd)+(_0x2a65fd==='chat'?'Websites':'Accounts');var _0x44552d=squel['expr']();return Promise[_0xe131('0x58')]()[_0xe131('0x59')](function(){if(_0x25eec7[_0xe131('0x60')]&&_0x5e61c5[_0xe131('0x6')]===_0xe131('0x61')){return _0x5e61c5[_0x45ac9c]({'attributes':['id'],'raw':!![]});}})[_0xe131('0x59')](function(_0x126bb4){if(_0x126bb4){if(_0x126bb4[_0xe131('0x40')]===0x0){_0x44552d[_0xe131('0x3d')]('i.'+_0x5185dd+_0xe131('0x57'));}else{_0x44552d['and']('i.'+_0x5185dd+'\x20IN\x20?',_['map'](_0x126bb4,'id'));}}else if(!_0x25eec7[_0x5185dd]){_0x44552d[_0xe131('0x3d')]('i.'+_0x5185dd+_0xe131('0x62'));}})[_0xe131('0x59')](function(){return _0x44552d;});}function getClosedOrderClause(_0x2d64cf,_0x4bf1be){var _0x11e2c9='';var _0x2fb950=[_0xe131('0x63'),_0xe131('0x64'),_0xe131('0x65')];if(_0x2d64cf===_0xe131('0x2b')){_0x2fb950['unshift']('i.substatus');}if(_0x4bf1be[_0xe131('0x66')]==='0'&&_0x2d64cf==='mail'){_0x11e2c9='i.substatus';}else{if(_0x4bf1be['closed']==='1'){_0x2fb950[_0xe131('0x67')]();}_0x11e2c9='CONCAT_WS(\x27\x27,\x20'+_0x2fb950[_0xe131('0x68')](',\x20')+')';}return _0x11e2c9;}function getFilteredInteractions(_0x564e65,_0x4bf040,_0x2357f2,_0x2b6cdc){var _0x6fb417=utils['getInteractionFK'](_0x564e65);var _0x32abb6=_[_0xe131('0x5f')](_0x564e65)+_0xe131('0x69');var _0x3c1fe4=[];var _0x167195=getTagsQuery();var _0x185f89={'type':db['Sequelize'][_0xe131('0x6a')][_0xe131('0x6b')],'raw':!![]};var _0x4f3b0d=[];var _0x3eaf12=[];return db['sequelize']['query'](_0x167195[_0xe131('0x6c')](),_0x185f89)['then'](function(_0x45b291){_0x3c1fe4=_[_0xe131('0x6d')](_0x45b291,'id');_0x185f89=_[_0xe131('0x6e')](_0x185f89,{'model':db[_0x32abb6],'mapToModel':!![],'nest':!![]});if(_0x2357f2['fields']){_0x2b6cdc[_0xe131('0x6f')][_0xe131('0x1f')](function(_0x240c33){_0x4bf040[_0xe131('0x7')]('i.'+_0x240c33);});}else{_0x4bf040[_0xe131('0x7')](_0xe131('0x70'),'unreadMessages');_0x4bf040['field'](_0xe131('0x71'),'Account.key');_0x4bf040[_0xe131('0x7')]('a.mandatoryDisposition',_0xe131('0x72'));if(_0x564e65===_0xe131('0x2b')){_0x4bf040[_0xe131('0x7')](_0xe131('0x73'),_0xe131('0x74'));_0x4bf040[_0xe131('0x7')]('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',_0xe131('0x75'));_0x4bf040[_0xe131('0x7')](_0xe131('0x76'));_0x4bf040[_0xe131('0x7')](_0xe131('0x77'));_0x4bf040[_0xe131('0x7')](_0xe131('0x78'));_0x4bf040[_0xe131('0x7')](_0xe131('0x79'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7a'));_0x4bf040[_0xe131('0x7')]('i.attach');_0x4bf040[_0xe131('0x7')](_0xe131('0x7b'));_0x4bf040['field'](_0xe131('0x7c'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7d'));_0x4bf040['field'](_0xe131('0x65'));_0x4bf040[_0xe131('0x7')](_0xe131('0x64'));_0x4bf040[_0xe131('0x7')](_0xe131('0x63'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7e'));_0x4bf040[_0xe131('0x7')](_0xe131('0x7f'));_0x4bf040[_0xe131('0x7')](_0xe131('0x80'));_0x4bf040[_0xe131('0x7')](_0xe131('0x81'));_0x4bf040[_0xe131('0x7')](_0xe131('0x82'));}else if(_0x564e65==='openchannel'){_0x4bf040['field'](_0xe131('0x83'),'contactName');}else{_0x4bf040[_0xe131('0x7')](_0xe131('0x84'),_0xe131('0x75'));}if(_0x564e65!==_0xe131('0x2b')){_0x4bf040[_0xe131('0x7')]('i.*');}_0x4bf040[_0xe131('0x7')]('c.firstName',_0xe131('0x85'));_0x4bf040[_0xe131('0x7')](_0xe131('0x86'),_0xe131('0x87'));_0x4bf040['field'](_0xe131('0x88'),_0xe131('0x89'));_0x4bf040[_0xe131('0x7')](_0xe131('0x8a'),_0xe131('0x8b'));_0x4bf040['field']('c.mobile',_0xe131('0x8c'));_0x4bf040[_0xe131('0x7')](_0xe131('0x8d'),'Contact.fax');_0x4bf040['field'](_0xe131('0x8e'),_0xe131('0x8f'));_0x4bf040[_0xe131('0x7')](_0xe131('0x90'),_0xe131('0x91'));_0x4bf040[_0xe131('0x7')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xe131('0x92'));}if(_0x2b6cdc[_0xe131('0x93')]){_0x4bf040[_0xe131('0x93')](_0x2b6cdc[_0xe131('0x93')]);}if(_0x2b6cdc['offset']){_0x4bf040[_0xe131('0x94')](_0x2b6cdc['offset']);}return db[_0xe131('0x95')][_0xe131('0x96')](_0x4bf040[_0xe131('0x6c')](),_0x185f89);})['then'](function(_0x4ba4d4){_0x4f3b0d=_0x4ba4d4;var _0xffd447=getUsersQuery(_0x564e65,_0x4f3b0d);return db[_0xe131('0x95')][_0xe131('0x96')](_0xffd447[_0xe131('0x6c')](),_0x185f89);})[_0xe131('0x59')](function(_0x3a50ae){_0x3eaf12=_[_0xe131('0x97')](_0x3a50ae,_0x6fb417);if(_0x564e65===_0xe131('0x2b')){return db[_0xe131('0x98')][_0xe131('0x99')]({'attributes':[_0xe131('0x9a')],'raw':!![]});}})[_0xe131('0x59')](function(_0x7a1b0){var _0x5538ec=_0x7a1b0?_0x7a1b0[_0xe131('0x9a')]:undefined;var _0x14f031=_0x4f3b0d[_0xe131('0x4e')](function(_0x330b33){return updateInteraction(_0x330b33,_0x3c1fe4,_0x3eaf12,_0x5538ec);});return Promise['all'](_0x14f031);});}function countFilteredInteractions(_0x3a9777,_0xd65773){var _0x26a413=_0x3a9777[_0xe131('0x9b')]();_0x26a413['field'](_0xe131('0x9c'));_0x26a413[_0xe131('0x7')](_0xe131('0x70'),'unreadMessages');var _0x3a1bac=utils['getSelectedTags'](_0xd65773);if(!_[_0xe131('0x9d')](_0x3a1bac)){_0x26a413['where']('t.id\x20IN\x20?',_0x3a1bac);}var _0x3304f6={'type':db[_0xe131('0x9e')]['QueryTypes'][_0xe131('0x6b')],'raw':!![]};return db[_0xe131('0x95')]['query'](_0x26a413[_0xe131('0x6c')](),_0x3304f6);}module[_0xe131('0x9f')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 934a9be..5731be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5673=['talking','answered','unmanaged','abandoned','closed','UserId','total','MailMessage','findOne','-id','then','lastMsgText','trimStart','catch','Users','TagIds','../../mysqldb','split','forEach','push','waiting'];(function(_0x2da0af,_0x5459a6){var _0x1aa901=function(_0x285d10){while(--_0x285d10){_0x2da0af['push'](_0x2da0af['shift']());}};_0x1aa901(++_0x5459a6);}(_0x5673,0x8e));var _0x3567=function(_0xfd183f,_0x21bbde){_0xfd183f=_0xfd183f-0x0;var _0x40b42e=_0x5673[_0xfd183f];return _0x40b42e;};'use strict';var _=require('lodash');var db=require(_0x3567('0x0'))['db'];function getInteractionUsers(_0xe9f67,_0x2e7adc){return new Promise(function(_0x55b2aa,_0x4c666d){try{var _0x951b91=[];if(_0x2e7adc[_0xe9f67]){_0x951b91=_0x2e7adc[_0xe9f67]['map'](function(_0x177ea8){return{'id':_0x177ea8['id'],'fullname':_0x177ea8['fullname']};});}return _0x55b2aa(_0x951b91);}catch(_0x3a7cbe){_0x4c666d(_0x3a7cbe);}});}function getInteractionTags(_0x12287d,_0x1b248c){var _0x57a7f4=[];if(_0x12287d){_0x12287d[_0x3567('0x1')](',')[_0x3567('0x2')](function(_0x1a1408){_0x57a7f4[_0x3567('0x3')](_0x1b248c[_0x1a1408]);});}return _0x57a7f4;}function updateWaitingCounter(_0x1f5719){if(_0x1f5719['waiting']){_0x1f5719[_0x3567('0x4')]-=0x1;}}function updateInteractionCounters(_0x3098bb){_0x3098bb['waiting']=0x0;_0x3098bb[_0x3567('0x5')]=0x0;_0x3098bb[_0x3567('0x6')]=0x0;_0x3098bb[_0x3567('0x7')]=0x0;_0x3098bb[_0x3567('0x8')]=0x0;_0x3098bb['total']=0x0;if(_0x3098bb[_0x3567('0x9')]){if(_0x3098bb['disposition']==='abandoned'){_0x3098bb['abandoned']+=0x1;updateWaitingCounter(_0x3098bb);}if(_0x3098bb[_0x3567('0xa')]){_0x3098bb['answered']+=0x1;if(_0x3098bb[_0x3567('0x5')]){_0x3098bb[_0x3567('0x5')]-=0x1;}}else{if(_0x3098bb['disposition']){_0x3098bb[_0x3567('0x7')]+=0x1;updateWaitingCounter(_0x3098bb);}}}else{if(!_0x3098bb['UserId']){_0x3098bb[_0x3567('0x4')]+=0x1;}if(_0x3098bb[_0x3567('0xa')]){_0x3098bb[_0x3567('0x5')]+=0x1;updateWaitingCounter(_0x3098bb);}}_0x3098bb[_0x3567('0xb')]+=0x1;return _0x3098bb;}function getLastMessageText(_0x3763bb){return db[_0x3567('0xc')][_0x3567('0xd')]({'where':{'$and':[{'MailInteractionId':_0x3763bb['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x3567('0xe'),'raw':!![]})[_0x3567('0xf')](function(_0x31fc6a){if(_0x31fc6a&&_0x31fc6a['plainBody']){_0x3763bb[_0x3567('0x10')]=_[_0x3567('0x11')](_0x31fc6a['plainBody']);}return _0x3763bb;})[_0x3567('0x12')](function(_0x487a10){throw _0x487a10;});}exports['updateInteraction']=function(_0x5b1b24,_0x377f78,_0x222267,_0x3dc5eb){return new Promise(function(_0x316a28,_0x12ea90){return getInteractionUsers(_0x5b1b24['id'],_0x222267)[_0x3567('0xf')](function(_0x1fbdbe){_0x5b1b24[_0x3567('0x13')]=_0x1fbdbe;return getInteractionTags(_0x5b1b24['TagIds'],_0x377f78);})['then'](function(_0x2f7f3b){_0x5b1b24['Tags']=_0x2f7f3b;delete _0x5b1b24[_0x3567('0x14')];return updateInteractionCounters(_0x5b1b24);})[_0x3567('0xf')](function(_0x3de0f4){if(_0x3dc5eb){return getLastMessageText(_0x3de0f4);}else{return _0x3de0f4;}})[_0x3567('0xf')](function(_0x4f6358){_0x316a28(_0x4f6358);})[_0x3567('0x12')](function(_0x121658){_0x12ea90(_0x121658);});});};
\ No newline at end of file
+var _0x92d4=['../../mysqldb','map','fullname','split','forEach','push','waiting','unmanaged','total','closed','disposition','abandoned','UserId','talking','MailMessage','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','lodash'];(function(_0xd5aeb,_0x3cbde2){var _0x2e1d20=function(_0x216fb5){while(--_0x216fb5){_0xd5aeb['push'](_0xd5aeb['shift']());}};_0x2e1d20(++_0x3cbde2);}(_0x92d4,0x194));var _0x492d=function(_0x1f9075,_0x5e1e11){_0x1f9075=_0x1f9075-0x0;var _0x59b741=_0x92d4[_0x1f9075];return _0x59b741;};'use strict';var _=require(_0x492d('0x0'));var db=require(_0x492d('0x1'))['db'];function getInteractionUsers(_0x335f7b,_0xf41c89){return new Promise(function(_0x290c20,_0x9961e8){try{var _0x3c5942=[];if(_0xf41c89[_0x335f7b]){_0x3c5942=_0xf41c89[_0x335f7b][_0x492d('0x2')](function(_0x2e4139){return{'id':_0x2e4139['id'],'fullname':_0x2e4139[_0x492d('0x3')]};});}return _0x290c20(_0x3c5942);}catch(_0xde1ead){_0x9961e8(_0xde1ead);}});}function getInteractionTags(_0x4b7d0a,_0x3b7462){var _0x40464e=[];if(_0x4b7d0a){_0x4b7d0a[_0x492d('0x4')](',')[_0x492d('0x5')](function(_0x1ee1b0){_0x40464e[_0x492d('0x6')](_0x3b7462[_0x1ee1b0]);});}return _0x40464e;}function updateWaitingCounter(_0x17b7e3){if(_0x17b7e3[_0x492d('0x7')]){_0x17b7e3[_0x492d('0x7')]-=0x1;}}function updateInteractionCounters(_0x41a3b2){_0x41a3b2[_0x492d('0x7')]=0x0;_0x41a3b2['talking']=0x0;_0x41a3b2['answered']=0x0;_0x41a3b2[_0x492d('0x8')]=0x0;_0x41a3b2['abandoned']=0x0;_0x41a3b2[_0x492d('0x9')]=0x0;if(_0x41a3b2[_0x492d('0xa')]){if(_0x41a3b2[_0x492d('0xb')]===_0x492d('0xc')){_0x41a3b2[_0x492d('0xc')]+=0x1;updateWaitingCounter(_0x41a3b2);}if(_0x41a3b2[_0x492d('0xd')]){_0x41a3b2['answered']+=0x1;if(_0x41a3b2[_0x492d('0xe')]){_0x41a3b2[_0x492d('0xe')]-=0x1;}}else{if(_0x41a3b2[_0x492d('0xb')]){_0x41a3b2[_0x492d('0x8')]+=0x1;updateWaitingCounter(_0x41a3b2);}}}else{if(!_0x41a3b2[_0x492d('0xd')]){_0x41a3b2['waiting']+=0x1;}if(_0x41a3b2['UserId']){_0x41a3b2[_0x492d('0xe')]+=0x1;updateWaitingCounter(_0x41a3b2);}}_0x41a3b2[_0x492d('0x9')]+=0x1;return _0x41a3b2;}function getLastMessageText(_0x4fd112){return db[_0x492d('0xf')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x4fd112['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x492d('0x10')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x492d('0x11')],'order':_0x492d('0x12'),'raw':!![]})[_0x492d('0x13')](function(_0x1224a4){if(_0x1224a4&&_0x1224a4[_0x492d('0x11')]){_0x4fd112[_0x492d('0x14')]=_[_0x492d('0x15')](_0x1224a4[_0x492d('0x11')]);}return _0x4fd112;})[_0x492d('0x16')](function(_0x1df93c){throw _0x1df93c;});}exports[_0x492d('0x17')]=function(_0x367bd4,_0x40432c,_0x949e42,_0x39a69d){return new Promise(function(_0x580c72,_0x2f767f){return getInteractionUsers(_0x367bd4['id'],_0x949e42)[_0x492d('0x13')](function(_0x262415){_0x367bd4[_0x492d('0x18')]=_0x262415;return getInteractionTags(_0x367bd4[_0x492d('0x19')],_0x40432c);})[_0x492d('0x13')](function(_0x4ae203){_0x367bd4[_0x492d('0x1a')]=_0x4ae203;delete _0x367bd4['TagIds'];return updateInteractionCounters(_0x367bd4);})[_0x492d('0x13')](function(_0x5ad6a3){if(_0x39a69d){return getLastMessageText(_0x5ad6a3);}else{return _0x5ad6a3;}})['then'](function(_0x141ac5){_0x580c72(_0x141ac5);})[_0x492d('0x16')](function(_0x1fc33b){_0x2f767f(_0x1fc33b);});});};
\ No newline at end of file
index 1aff75a..a461ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869a=['_interaction_has_tags','_messages','user_has_','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','stringify','null','Interaction','update','then','info','catch','error','exports','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions','capitalize','upperFirst','InteractionId','unknown','chat','websites','accounts','_interactions'];(function(_0x2aba17,_0x128a30){var _0x5a9599=function(_0x1bc43c){while(--_0x1bc43c){_0x2aba17['push'](_0x2aba17['shift']());}};_0x5a9599(++_0x128a30);}(_0x869a,0x177));var _0xa869=function(_0x47280d,_0x481a08){_0x47280d=_0x47280d-0x0;var _0x3a25d7=_0x869a[_0x47280d];return _0x3a25d7;};'use strict';var _=require(_0xa869('0x0'));var db=require(_0xa869('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')('openchannel-interactions'),'mail':require(_0xa869('0x2'))(_0xa869('0x3')),'fax':require(_0xa869('0x2'))(_0xa869('0x4')),'sms':require('../../config/logger')(_0xa869('0x5')),'chat':require(_0xa869('0x2'))(_0xa869('0x6')),'whatsapp':require(_0xa869('0x2'))('whatsapp-interactions')};function getAccountFK(_0x592a3e){return _[_0xa869('0x7')](_0x592a3e)+(_0x592a3e==='chat'?'Website':'Account')+'Id';}function getInteractionFK(_0x21d1af){return _['capitalize'](_0x21d1af)+'InteractionId';}function getInteractionId(_0xa7c60a,_0x33ac1b,_0x2d3a71){if(_0xa7c60a&&_0xa7c60a[_[_0xa869('0x8')](_0x2d3a71)+_0xa869('0x9')]){return _0xa7c60a[_['upperFirst'](_0x2d3a71)+_0xa869('0x9')];}else if(_0xa7c60a&&_0xa7c60a['id']){return _0xa7c60a['id'];}else if(_0x33ac1b&&_0x33ac1b['id']){return _0x33ac1b['id'];}else{return _0xa869('0xa');}}function getInteractionsTables(_0x5b35d7){return{'accounts':_0x5b35d7+'_'+(_0x5b35d7===_0xa869('0xb')?_0xa869('0xc'):_0xa869('0xd')),'interactions':_0x5b35d7+_0xa869('0xe'),'interactionsTags':_0x5b35d7+_0xa869('0xf'),'messages':_0x5b35d7+_0xa869('0x10'),'userInteractions':_0xa869('0x11')+_0x5b35d7+_0xa869('0xe')};}function getSelectedTags(_0x1b721b){var _0x5708ce=[];if(_0x1b721b){_0x5708ce=Array['isArray'](_0x1b721b)?_0x1b721b:[_0x1b721b];}return _0x5708ce;}function log(_0x10a160,_0x41a741,_0x5e59c9,_0xf6f2e0,_0x4d0d43,_0x3b64c2){loggers[_0x4d0d43[_0xa869('0x12')]()][_0x10a160](_0xa869('0x13'),_0x3b64c2[_0xa869('0x14')](),_0x41a741?_0x41a741['id']:null,_0x41a741?_0x41a741['name']:null,_0x41a741?_0x41a741['role']:null,getInteractionId(_0x5e59c9,_0xf6f2e0,_0x4d0d43),_0x5e59c9?JSON[_0xa869('0x15')](_0x5e59c9):_0xa869('0x16'));}function updateUser(_0x1d1fa0,_0x1a33d0,_0x48c0b2,_0x43afe1,_0x5f607e){db[_[_0xa869('0x8')](_0x43afe1)+_0xa869('0x17')]['findOne']({'where':{'id':getInteractionId(_0x1a33d0,_0x48c0b2,_0x43afe1)}})['then'](function(_0x3121c5){if(_0x3121c5){return _0x3121c5[_0xa869('0x18')]({'UserId':_0x1d1fa0?_0x1d1fa0['id']:null});}})[_0xa869('0x19')](function(_0x4a5857){if(_0x4a5857){log(_0xa869('0x1a'),_0x1d1fa0,_0x1a33d0,_0x48c0b2,_0x43afe1,_0x5f607e);}})[_0xa869('0x1b')](function(){log(_0xa869('0x1c'),_0x1d1fa0,_0x1a33d0,_0x48c0b2,_0x43afe1,_0x5f607e);});}module[_0xa869('0x1d')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x3145=['sms-interactions','chat-interactions','chat','Website','capitalize','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_interaction_has_tags','_messages','user_has_','toLowerCase','toUpperCase','role','stringify','null','findOne','update','then','info','catch','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions'];(function(_0x28c972,_0x19f399){var _0x425ed3=function(_0x25cb24){while(--_0x25cb24){_0x28c972['push'](_0x28c972['shift']());}};_0x425ed3(++_0x19f399);}(_0x3145,0x162));var _0x5314=function(_0x5d474d,_0x94abd6){_0x5d474d=_0x5d474d-0x0;var _0x3425b1=_0x3145[_0x5d474d];return _0x3425b1;};'use strict';var _=require(_0x5314('0x0'));var db=require(_0x5314('0x1'))['db'];var loggers={'openchannel':require(_0x5314('0x2'))(_0x5314('0x3')),'mail':require(_0x5314('0x2'))(_0x5314('0x4')),'fax':require('../../config/logger')(_0x5314('0x5')),'sms':require('../../config/logger')(_0x5314('0x6')),'chat':require('../../config/logger')(_0x5314('0x7')),'whatsapp':require(_0x5314('0x2'))('whatsapp-interactions')};function getAccountFK(_0x1b2f9d){return _['capitalize'](_0x1b2f9d)+(_0x1b2f9d===_0x5314('0x8')?_0x5314('0x9'):'Account')+'Id';}function getInteractionFK(_0x27f083){return _[_0x5314('0xa')](_0x27f083)+_0x5314('0xb');}function getInteractionId(_0x1e30bb,_0x12231b,_0x2a7d08){if(_0x1e30bb&&_0x1e30bb[_[_0x5314('0xc')](_0x2a7d08)+_0x5314('0xb')]){return _0x1e30bb[_[_0x5314('0xc')](_0x2a7d08)+_0x5314('0xb')];}else if(_0x1e30bb&&_0x1e30bb['id']){return _0x1e30bb['id'];}else if(_0x12231b&&_0x12231b['id']){return _0x12231b['id'];}else{return _0x5314('0xd');}}function getInteractionsTables(_0x3ffde3){return{'accounts':_0x3ffde3+'_'+(_0x3ffde3===_0x5314('0x8')?_0x5314('0xe'):_0x5314('0xf')),'interactions':_0x3ffde3+_0x5314('0x10'),'interactionsTags':_0x3ffde3+_0x5314('0x11'),'messages':_0x3ffde3+_0x5314('0x12'),'userInteractions':_0x5314('0x13')+_0x3ffde3+_0x5314('0x10')};}function getSelectedTags(_0xc98906){var _0x357416=[];if(_0xc98906){_0x357416=Array['isArray'](_0xc98906)?_0xc98906:[_0xc98906];}return _0x357416;}function log(_0x527fa5,_0x55f8d3,_0x350da2,_0xd0f091,_0x45333a,_0x53a974){loggers[_0x45333a[_0x5314('0x14')]()][_0x527fa5]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53a974[_0x5314('0x15')](),_0x55f8d3?_0x55f8d3['id']:null,_0x55f8d3?_0x55f8d3['name']:null,_0x55f8d3?_0x55f8d3[_0x5314('0x16')]:null,getInteractionId(_0x350da2,_0xd0f091,_0x45333a),_0x350da2?JSON[_0x5314('0x17')](_0x350da2):_0x5314('0x18'));}function updateUser(_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193){db[_['upperFirst'](_0x21ce8b)+'Interaction'][_0x5314('0x19')]({'where':{'id':getInteractionId(_0x589de0,_0x253a54,_0x21ce8b)}})['then'](function(_0x26ba3b){if(_0x26ba3b){return _0x26ba3b[_0x5314('0x1a')]({'UserId':_0x2d9a90?_0x2d9a90['id']:null});}})[_0x5314('0x1b')](function(_0xb6451b){if(_0xb6451b){log(_0x5314('0x1c'),_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193);}})[_0x5314('0x1d')](function(){log('error',_0x2d9a90,_0x589de0,_0x253a54,_0x21ce8b,_0x41d193);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index d8162e0..7b81185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a5c=['findOne','then','count','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','User','user','crypto','composable-middleware','../../config/environment','data1','split','createDecipher','format','base64','final','parse','hasOwnProperty','use','License'];(function(_0x3b493a,_0x3d76fd){var _0x267499=function(_0x3f2cf4){while(--_0x3f2cf4){_0x3b493a['push'](_0x3b493a['shift']());}};_0x267499(++_0x3d76fd);}(_0x2a5c,0x16f));var _0xc2a5=function(_0x30ef62,_0x4c411f){_0x30ef62=_0x30ef62-0x0;var _0x4b8e49=_0x2a5c[_0x30ef62];return _0x4b8e49;};'use strict';var crypto=require(_0xc2a5('0x0'));var util=require('util');var compose=require(_0xc2a5('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xc2a5('0x2'));function getValueFromLicense(_0x4916e3,_0x162c2f){if(_0x4916e3&&_0x162c2f){if(_0x162c2f[_0xc2a5('0x3')]&&_0x162c2f['license']){var _0x461e0d=_0x162c2f[_0xc2a5('0x3')];var _0x52eabf=_0x162c2f['license'];var _0x483479=_0x461e0d[_0xc2a5('0x4')]('-')[0x4];var _0x456c95=_0x461e0d[_0xc2a5('0x4')]('-')[0x0];var _0x152b4c=crypto[_0xc2a5('0x5')]('aes-256-ctr',util[_0xc2a5('0x6')]('%s:%s:%s',_0x483479,_0x461e0d,_0x456c95));var _0x2172f8=_0x152b4c['update'](_0x52eabf,_0xc2a5('0x7'),'utf8');_0x2172f8+=_0x152b4c[_0xc2a5('0x8')]('utf8');var _0x203bba=JSON[_0xc2a5('0x9')](_0x2172f8);return _0x203bba[_0xc2a5('0xa')](_0x4916e3)?_0x203bba[_0x4916e3]:null;}}return null;}function isLimit(_0x3128a8,_0x204cd6,_0x38f5f6,_0x3a5a22){var _0x1d7c6d=_0x204cd6;return compose()[_0xc2a5('0xb')](function(_0x198988,_0x15f589,_0x1c0b49){return db[_0xc2a5('0xc')][_0xc2a5('0xd')]({'where':{'id':0x1},'raw':!![]})[_0xc2a5('0xe')](function(_0x1a7a14){var _0x3cb6c6=getValueFromLicense(_0x3128a8,_0x1a7a14);return _0x3cb6c6?_0x3cb6c6:_0x1d7c6d;})['then'](function(_0x37cf8f){_0x1d7c6d=_0x37cf8f;return _0x38f5f6[_0xc2a5('0xf')](_0x3a5a22);})[_0xc2a5('0xe')](function(_0x94184c){if(_0x94184c>=_0x1d7c6d){return _0x15f589[_0xc2a5('0x10')](0x193)['json']({'message':util[_0xc2a5('0x6')](_0xc2a5('0x11'),_0x3128a8)});}_0x1c0b49();})['catch'](function(_0x396452){_0x1c0b49(_0x396452);});});}function isUserLimit(){return isLimit('users',0x1,db[_0xc2a5('0x12')],{'where':{'$or':[{'role':'admin'},{'role':_0xc2a5('0x13')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x4f5c=['parse','use','findOne','then','status','json','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','base64','utf8','final'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x4f5c,0x10f));var _0xc4f5=function(_0x271ade,_0x378273){_0x271ade=_0x271ade-0x0;var _0x49bf1a=_0x4f5c[_0x271ade];return _0x49bf1a;};'use strict';var crypto=require(_0xc4f5('0x0'));var util=require(_0xc4f5('0x1'));var compose=require(_0xc4f5('0x2'));var db=require(_0xc4f5('0x3'))['db'];var config=require(_0xc4f5('0x4'));function getValueFromLicense(_0x41a7e9,_0x29272e){if(_0x41a7e9&&_0x29272e){if(_0x29272e[_0xc4f5('0x5')]&&_0x29272e['license']){var _0xacbda2=_0x29272e['data1'];var _0xdd80e2=_0x29272e[_0xc4f5('0x6')];var _0x1c9520=_0xacbda2[_0xc4f5('0x7')]('-')[0x4];var _0x326836=_0xacbda2[_0xc4f5('0x7')]('-')[0x0];var _0x3f052e=crypto[_0xc4f5('0x8')](_0xc4f5('0x9'),util[_0xc4f5('0xa')](_0xc4f5('0xb'),_0x1c9520,_0xacbda2,_0x326836));var _0x2cee23=_0x3f052e['update'](_0xdd80e2,_0xc4f5('0xc'),_0xc4f5('0xd'));_0x2cee23+=_0x3f052e[_0xc4f5('0xe')](_0xc4f5('0xd'));var _0x2aa39f=JSON[_0xc4f5('0xf')](_0x2cee23);return _0x2aa39f['hasOwnProperty'](_0x41a7e9)?_0x2aa39f[_0x41a7e9]:null;}}return null;}function isLimit(_0x2b2eb3,_0x458ed7,_0x1808d5,_0x29d8f8){var _0x3f7ae6=_0x458ed7;return compose()[_0xc4f5('0x10')](function(_0x2864f3,_0x15245c,_0x5d726f){return db['License'][_0xc4f5('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xc4f5('0x12')](function(_0x5a8bc2){var _0xeb9210=getValueFromLicense(_0x2b2eb3,_0x5a8bc2);return _0xeb9210?_0xeb9210:_0x3f7ae6;})['then'](function(_0x3d3ff3){_0x3f7ae6=_0x3d3ff3;return _0x1808d5['count'](_0x29d8f8);})[_0xc4f5('0x12')](function(_0x520eb5){if(_0x520eb5>=_0x3f7ae6){return _0x15245c[_0xc4f5('0x13')](0x193)[_0xc4f5('0x14')]({'message':util[_0xc4f5('0xa')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x2b2eb3)});}_0x5d726f();})['catch'](function(_0x1bc9d6){_0x5d726f(_0x1bc9d6);});});}function isUserLimit(){return isLimit(_0xc4f5('0x15'),0x1,db[_0xc4f5('0x16')],{'where':{'$or':[{'role':_0xc4f5('0x17')},{'role':_0xc4f5('0x18')}]}});}exports[_0xc4f5('0x19')]=isUserLimit;
\ No newline at end of file
index 86ba26c..1bfb32e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62c=['sqlOperator','startsWith','and','replace','[$and]','[$or]','split','forEach','match','filter','indexOf','map','conditions','push','DATE','operator','value','includes','$lte','add','days','format','YYYY-MM-DD','castTo','field','text','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$eq','=\x20?','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','$gt','<=\x20?','$between','$substring','start','shift','pop','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd62c,0x141));var _0xcd62=function(_0xe687bd,_0x19a84f){_0xe687bd=_0xe687bd-0x0;var _0x3ef385=_0xd62c[_0xe687bd];return _0x3ef385;};'use strict';var _=require(_0xcd62('0x0'));var moment=require(_0xcd62('0x1'));exports[_0xcd62('0x2')]=function(_0x3111f5){var _0x2d949c={'conditions':[]};_0x2d949c[_0xcd62('0x3')]=_[_0xcd62('0x4')](_0x3111f5,'[$or]')?'or':_0xcd62('0x5');var _0x18f7cf=_0x3111f5[_0xcd62('0x6')](_0xcd62('0x7'),'')[_0xcd62('0x6')](_0xcd62('0x8'),'')[_0xcd62('0x9')]('||');for(var _0x1d1065=0x0;_0x1d1065<_0x18f7cf['length'];_0x1d1065++){var _0x339931=_0x18f7cf[_0x1d1065][_0xcd62('0x9')](':=');var _0x511a84=_0x339931[0x0];var _0x4b653e=_0x339931['slice'](0x1);_0x4b653e[_0xcd62('0xa')](function(_0x59daab){var _0x48e28b=_0x59daab[_0xcd62('0x9')]('[')['shift']();var _0x516de3=_0x59daab[_0xcd62('0xb')](/\[(.*?)\]/g);_0x516de3[_0xcd62('0xa')](function(_0x20ae6a){var _0x2df729=_0x20ae6a['split']('[')[_0xcd62('0xc')](function(_0x22030c){return _0x22030c[_0xcd62('0xd')](']')>-0x1;})[_0xcd62('0xe')](function(_0x402cfe){return _0x402cfe[_0xcd62('0x9')](']')[0x0];})[0x0];_0x2d949c[_0xcd62('0xf')][_0xcd62('0x10')]({'field':_0x511a84,'operator':_0x48e28b,'value':_0x2df729});});});}return _0x2d949c;};exports['buildExpression']=function(_0x287dbb,_0x28382d,_0x5f5704){var _0x4ba929={};if(_0x28382d===_0xcd62('0x11')){if(_0x5f5704[_0xcd62('0x12')]==='$eq'){_0x5f5704['operator']='$between';_0x5f5704['value']+=','+_0x5f5704[_0xcd62('0x13')];}else if(_[_0xcd62('0x14')](['$gt',_0xcd62('0x15')],_0x5f5704[_0xcd62('0x12')])){_0x5f5704[_0xcd62('0x13')]=moment(_0x5f5704[_0xcd62('0x13')])[_0xcd62('0x16')](0x1,_0xcd62('0x17'))[_0xcd62('0x18')](_0xcd62('0x19'));}}if(_0x5f5704[_0xcd62('0x1a')]){_0x28382d=_0x5f5704[_0xcd62('0x1a')];_0x4ba929['text']='CAST('+_0x287dbb+'.'+_0x5f5704[_0xcd62('0x1b')]+'\x20AS\x20'+_0x5f5704[_0xcd62('0x1a')]+')\x20'+parseOperator(_0x5f5704[_0xcd62('0x12')]);}else{_0x4ba929[_0xcd62('0x1c')]=_0x287dbb+'.'+_0x5f5704[_0xcd62('0x1b')]+'\x20'+parseOperator(_0x5f5704['operator']);}if(_[_0xcd62('0x14')]([_0xcd62('0x1d'),_0xcd62('0x1e')],_0x5f5704[_0xcd62('0x12')]))_0x4ba929[_0xcd62('0x1c')]='('+_0x4ba929[_0xcd62('0x1c')]+_0xcd62('0x1f')+_0x287dbb+'.'+_0x5f5704[_0xcd62('0x1b')]+_0xcd62('0x20');_0x4ba929[_0xcd62('0x13')]=parseValue(_0x28382d,_0x5f5704[_0xcd62('0x12')],_0x5f5704[_0xcd62('0x13')]);return _0x4ba929;};function parseOperator(_0x343464){var _0x570904;switch(_0x343464){case _0xcd62('0x21'):_0x570904=_0xcd62('0x22');break;case _0xcd62('0x1e'):_0x570904=_0xcd62('0x23');break;case _0xcd62('0x24'):_0x570904=_0xcd62('0x25');break;case _0xcd62('0x1d'):_0x570904='<>\x20?';break;case'$substring':case _0xcd62('0x26'):case _0xcd62('0x27'):_0x570904=_0xcd62('0x28');break;case _0xcd62('0x29'):_0x570904=_0xcd62('0x2a');break;case _0xcd62('0x2b'):_0x570904='>\x20?';break;case _0xcd62('0x15'):_0x570904=_0xcd62('0x2c');break;case'$gte':_0x570904='>=\x20?';break;case _0xcd62('0x2d'):_0x570904='BETWEEN\x20?\x20AND\x20?';break;}return _0x570904;}function parseValue(_0x326302,_0x21ed90,_0x2cc882){var _0xe2b394={'start':undefined,'end':undefined};switch(_0x21ed90){case _0xcd62('0x21'):case _0xcd62('0x1e'):_0xe2b394['start']=_0x2cc882[_0xcd62('0x9')](',');break;case _0xcd62('0x2e'):_0xe2b394[_0xcd62('0x2f')]='%'+_0x2cc882+'%';break;case _0xcd62('0x26'):_0xe2b394[_0xcd62('0x2f')]=_0x2cc882+'%';break;case _0xcd62('0x27'):_0xe2b394['start']='%'+_0x2cc882;break;case _0xcd62('0x2d'):var _0x3fa180=_0x2cc882[_0xcd62('0x9')](',');var _0x2cc882=_0x3fa180[_0xcd62('0x30')]();var _0x4d7f26=_0x3fa180[_0xcd62('0x31')]();if(_0x326302===_0xcd62('0x11')){_0x2cc882=moment(_0x2cc882)[_0xcd62('0x32')](0x0,!![])[_0xcd62('0x18')]();_0x4d7f26=moment(_0x4d7f26)[_0xcd62('0x32')](0x0,!![])['add'](0x17,_0xcd62('0x33'))[_0xcd62('0x16')](0x3b,_0xcd62('0x34'))[_0xcd62('0x16')](0x3b,_0xcd62('0x35'))[_0xcd62('0x18')]();}_0xe2b394={'start':_0x2cc882,'end':_0x4d7f26};break;default:_0xe2b394[_0xcd62('0x2f')]=_0x2cc882;break;}return _0xe2b394;}
\ No newline at end of file
+var _0x5638=['filter','indexOf','map','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','add','format','castTo','text','CAST(','field','\x20AS\x20','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$lte','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','hours','minutes','seconds','parseSearch','startsWith','[$or]','and','replace','length','split','forEach','shift'];(function(_0x2aa492,_0x5ce9bb){var _0x528316=function(_0x2f0e6f){while(--_0x2f0e6f){_0x2aa492['push'](_0x2aa492['shift']());}};_0x528316(++_0x5ce9bb);}(_0x5638,0x96));var _0x8563=function(_0xd8825,_0x40f5eb){_0xd8825=_0xd8825-0x0;var _0x782b17=_0x5638[_0xd8825];return _0x782b17;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0x8563('0x0')]=function(_0x4191a5){var _0x22e75b={'conditions':[]};_0x22e75b['sqlOperator']=_[_0x8563('0x1')](_0x4191a5,_0x8563('0x2'))?'or':_0x8563('0x3');var _0x39813a=_0x4191a5[_0x8563('0x4')]('[$and]','')[_0x8563('0x4')](_0x8563('0x2'),'')['split']('||');for(var _0x32b403=0x0;_0x32b403<_0x39813a[_0x8563('0x5')];_0x32b403++){var _0x1a4e91=_0x39813a[_0x32b403][_0x8563('0x6')](':=');var _0x374b6c=_0x1a4e91[0x0];var _0x39b17b=_0x1a4e91['slice'](0x1);_0x39b17b[_0x8563('0x7')](function(_0x37549c){var _0x4cb222=_0x37549c[_0x8563('0x6')]('[')[_0x8563('0x8')]();var _0x4b2606=_0x37549c['match'](/\[(.*?)\]/g);_0x4b2606[_0x8563('0x7')](function(_0x37f240){var _0x39ee86=_0x37f240[_0x8563('0x6')]('[')[_0x8563('0x9')](function(_0x164078){return _0x164078[_0x8563('0xa')](']')>-0x1;})[_0x8563('0xb')](function(_0x5a1d38){return _0x5a1d38[_0x8563('0x6')](']')[0x0];})[0x0];_0x22e75b['conditions'][_0x8563('0xc')]({'field':_0x374b6c,'operator':_0x4cb222,'value':_0x39ee86});});});}return _0x22e75b;};exports[_0x8563('0xd')]=function(_0x26bba1,_0x3d2e7b,_0x2ffda6){var _0x377d5e={};if(_0x3d2e7b===_0x8563('0xe')){if(_0x2ffda6[_0x8563('0xf')]===_0x8563('0x10')){_0x2ffda6[_0x8563('0xf')]=_0x8563('0x11');_0x2ffda6[_0x8563('0x12')]+=','+_0x2ffda6['value'];}else if(_[_0x8563('0x13')]([_0x8563('0x14'),'$lte'],_0x2ffda6[_0x8563('0xf')])){_0x2ffda6[_0x8563('0x12')]=moment(_0x2ffda6['value'])[_0x8563('0x15')](0x1,'days')[_0x8563('0x16')]('YYYY-MM-DD');}}if(_0x2ffda6[_0x8563('0x17')]){_0x3d2e7b=_0x2ffda6[_0x8563('0x17')];_0x377d5e[_0x8563('0x18')]=_0x8563('0x19')+_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+_0x8563('0x1b')+_0x2ffda6['castTo']+')\x20'+parseOperator(_0x2ffda6[_0x8563('0xf')]);}else{_0x377d5e[_0x8563('0x18')]=_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+'\x20'+parseOperator(_0x2ffda6[_0x8563('0xf')]);}if(_['includes']([_0x8563('0x1c'),'$notIn'],_0x2ffda6[_0x8563('0xf')]))_0x377d5e[_0x8563('0x18')]='('+_0x377d5e[_0x8563('0x18')]+_0x8563('0x1d')+_0x26bba1+'.'+_0x2ffda6[_0x8563('0x1a')]+_0x8563('0x1e');_0x377d5e[_0x8563('0x12')]=parseValue(_0x3d2e7b,_0x2ffda6['operator'],_0x2ffda6['value']);return _0x377d5e;};function parseOperator(_0x1cffca){var _0x2f9d6e;switch(_0x1cffca){case _0x8563('0x1f'):_0x2f9d6e=_0x8563('0x20');break;case _0x8563('0x21'):_0x2f9d6e='NOT\x20IN\x20?';break;case _0x8563('0x10'):_0x2f9d6e=_0x8563('0x22');break;case _0x8563('0x1c'):_0x2f9d6e=_0x8563('0x23');break;case _0x8563('0x24'):case _0x8563('0x25'):case _0x8563('0x26'):_0x2f9d6e=_0x8563('0x27');break;case _0x8563('0x28'):_0x2f9d6e=_0x8563('0x29');break;case _0x8563('0x14'):_0x2f9d6e=_0x8563('0x2a');break;case _0x8563('0x2b'):_0x2f9d6e=_0x8563('0x2c');break;case'$gte':_0x2f9d6e=_0x8563('0x2d');break;case _0x8563('0x11'):_0x2f9d6e=_0x8563('0x2e');break;}return _0x2f9d6e;}function parseValue(_0x48cb36,_0x27552d,_0x227ff5){var _0x321e4b={'start':undefined,'end':undefined};switch(_0x27552d){case'$in':case'$notIn':_0x321e4b[_0x8563('0x2f')]=_0x227ff5[_0x8563('0x6')](',');break;case _0x8563('0x24'):_0x321e4b[_0x8563('0x2f')]='%'+_0x227ff5+'%';break;case _0x8563('0x25'):_0x321e4b[_0x8563('0x2f')]=_0x227ff5+'%';break;case _0x8563('0x26'):_0x321e4b[_0x8563('0x2f')]='%'+_0x227ff5;break;case'$between':var _0x56f42b=_0x227ff5[_0x8563('0x6')](',');var _0x227ff5=_0x56f42b['shift']();var _0x5760c7=_0x56f42b[_0x8563('0x30')]();if(_0x48cb36===_0x8563('0xe')){_0x227ff5=moment(_0x227ff5)['utcOffset'](0x0,!![])['format']();_0x5760c7=moment(_0x5760c7)[_0x8563('0x31')](0x0,!![])[_0x8563('0x15')](0x17,_0x8563('0x32'))[_0x8563('0x15')](0x3b,_0x8563('0x33'))[_0x8563('0x15')](0x3b,_0x8563('0x34'))[_0x8563('0x16')]();}_0x321e4b={'start':_0x227ff5,'end':_0x5760c7};break;default:_0x321e4b['start']=_0x227ff5;break;}return _0x321e4b;}
\ No newline at end of file
index 02c8b93..237e6f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b5=['split','filters','isEmpty','forOwn','find','type','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','name','uniqueid','isArray','limit','offset','sort','map','indexOf','col','priority','substr','cast','ASC','omit','isObject','isString','length','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','model','intersection','attributes','where','pick','filter','object','columns','value','merge','lower','options','moment','parse','keys','includes','fields'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x1b04d3,_0x4974cd){_0x1b04d3=_0x1b04d3-0x0;var _0xc1e1c6=_0xc3b5[_0x1b04d3];return _0xc1e1c6;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0x5c3b('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x3c588d){var _0xbe95d4=['ne'];try{var _0x3acf12=JSON[_0x5c3b('0x1')](_0x3c588d);var _0x34be81=Object[_0x5c3b('0x2')](_0x3acf12)[0x0];return _0xbe95d4[_0x5c3b('0x3')](_0x34be81);}catch(_0x587055){return![];}}function getOperatorValue(_0x181e5b){var _0x6b8a1e=JSON['parse'](_0x181e5b);var _0x568a28=Object[_0x5c3b('0x2')](_0x6b8a1e)[0x0];var _0x420839=_0x6b8a1e[_0x568a28];return{['$'+_0x568a28]:_0x420839};}exports[_0x5c3b('0x4')]=function(_0x5be9ee){var _0x1c68a5=null;if(_0x5be9ee){_0x1c68a5=_0x5be9ee[_0x5c3b('0x5')](',');}return _0x1c68a5;};exports[_0x5c3b('0x6')]=function(_0x20e71,_0x4ddddd){var _0x20dd86={};if(!_[_0x5c3b('0x7')](_0x20e71)){_[_0x5c3b('0x8')](_0x20e71,function(_0x2e894a,_0x363c3d){try{if(_0x4ddddd){var _0x5b9f7e=_[_0x5c3b('0x9')](_0x4ddddd,{'name':_0x363c3d})||{};if(hasSequelizeOperator(_0x2e894a)){_0x20dd86[_0x363c3d]=getOperatorValue(_0x2e894a);}else if(_0x5b9f7e[_0x5c3b('0xa')]==='DATE'&&_[_0x5c3b('0xb')](_0x2e894a)){var _0x3b953d=JSON['parse'](_0x2e894a);var _0x24b9d0={'$gte':moment(moment(_0x3b953d[_0x5c3b('0xc')])[_0x5c3b('0xd')](_0x5c3b('0xe')))[_0x5c3b('0xf')]()[_0x5c3b('0xd')](),'$lte':moment(moment(_0x3b953d[_0x5c3b('0x10')])['format'](_0x5c3b('0xe')))['utc']()['subtract'](0x1,'s')[_0x5c3b('0xd')]()};_0x20dd86[_0x363c3d]=_0x24b9d0;}else if(_0x5b9f7e[_0x5c3b('0x11')]===_0x5c3b('0x12')){_0x20dd86[_0x363c3d]=_0x2e894a;}else{_0x20dd86[_0x363c3d]=_['isArray'](_0x2e894a)?_0x2e894a:JSON[_0x5c3b('0x1')](_0x2e894a);}}else{_0x20dd86[_0x363c3d]=_[_0x5c3b('0x13')](_0x2e894a)?_0x2e894a:JSON[_0x5c3b('0x1')](_0x2e894a);}}catch(_0x59f71b){_0x20dd86[_0x363c3d]=_0x2e894a[_0x5c3b('0x5')](',');}});}return _0x20dd86;};exports[_0x5c3b('0x14')]=function(_0x48d662){_0x48d662=parseInt(_0x48d662,0xa);if(!_0x48d662||_0x48d662<0x0){_0x48d662=LIMIT_VALUE;}return _0x48d662;};exports[_0x5c3b('0x15')]=function(_0x4658ce){_0x4658ce=parseInt(_0x4658ce,0xa);if(!_0x4658ce||_0x4658ce<0x0){_0x4658ce=0x0;}return _0x4658ce;};exports[_0x5c3b('0x16')]=function(_0x681ac1){var _0x103943,_0x3e6d67=null;if(_0x681ac1){_0x103943=_0x681ac1[_0x5c3b('0x5')](',');_0x3e6d67=_[_0x5c3b('0x17')](_0x103943,function(_0xc63307){if(_0xc63307[_0x5c3b('0x18')]('-')===0x0){return[_0xc63307==='priority'?sequelize['cast'](sequelize[_0x5c3b('0x19')](_0x5c3b('0x1a')),'unsigned'):_0xc63307[_0x5c3b('0x1b')](0x1),'DESC'];}else{return[_0xc63307===_0x5c3b('0x1a')?sequelize[_0x5c3b('0x1c')](sequelize[_0x5c3b('0x19')](_0x5c3b('0x1a')),'unsigned'):_0xc63307,_0x5c3b('0x1d')];}});}return _0x3e6d67;};exports[_0x5c3b('0x1e')]=function(_0x54ab06,_0x17f86d){if(_[_0x5c3b('0x7')](_0x54ab06)){return _0x54ab06;}if(_[_0x5c3b('0x13')](_0x54ab06)){for(var _0x3c3991=0x0;_0x3c3991<_0x54ab06['length'];_0x3c3991+=0x1){_0x54ab06[_0x3c3991]=this[_0x5c3b('0x1e')](_0x54ab06[_0x3c3991],_0x17f86d);}return _0x54ab06;}if(!_[_0x5c3b('0x1f')](_0x54ab06)){return _0x54ab06;}if(_[_0x5c3b('0x20')](_0x17f86d)){_0x17f86d=[_0x17f86d];}if(!_[_0x5c3b('0x13')](_0x17f86d)){return _0x54ab06;}for(var _0x28dfbc=0x0;_0x28dfbc<_0x17f86d[_0x5c3b('0x21')];_0x28dfbc+=0x1){_['unset'](_0x54ab06,_0x17f86d[_0x28dfbc]);}for(var _0x51fa32 in _0x54ab06){if(_0x54ab06['hasOwnProperty'](_0x51fa32)){_0x54ab06[_0x51fa32]=this[_0x5c3b('0x1e')](_0x54ab06[_0x51fa32],_0x17f86d);}}return _0x54ab06;};exports[_0x5c3b('0x22')]=function(_0x59b640){return _0x59b640[_0x5c3b('0x23')](RegExp(_0x5c3b('0x24')))?!![]:![];};exports[_0x5c3b('0x25')]=function(_0x2a26df){return _0x2a26df[_0x5c3b('0x23')](/^\S+@\S+$/)?!![]:![];};exports[_0x5c3b('0x26')]=function(_0x356f46){var _0x292266=[];_0x356f46[_0x5c3b('0x5')](/[ ,]+/)[_0x5c3b('0x27')](function(_0x4765b3){_0x4765b3=_0x4765b3[_0x5c3b('0x28')](/([^:]")"+/g,'$1');_0x4765b3='+'+_0x4765b3+'*';var _0x5a5d9e=/[ `!@#$%^&*()_\-?~]/;if(_0x4765b3[_0x5c3b('0x23')](_0x5a5d9e))_0x4765b3='\x22'+_0x4765b3+'\x22';_0x292266[_0x5c3b('0x29')](_0x4765b3);});return _0x292266[_0x5c3b('0x2a')]('\x20');};exports[_0x5c3b('0x2b')]=function(_0x23e55f,_0x11230d,_0x3e58e4){var _0x2e2b9c={},_0x33d104={};if(_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x2d')]){_0x11230d[_0x5c3b('0x2c')]['id']=_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x2d')];delete _0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x2d')];}_0x2e2b9c[_0x5c3b('0x2e')]=_['map'](_0x23e55f,_0x5c3b('0x11'));_0x2e2b9c[_0x5c3b('0x2c')]=_[_0x5c3b('0x2')](_0x11230d[_0x5c3b('0x2c')]);_0x2e2b9c['filters']=_[_0x5c3b('0x2f')](_0x2e2b9c[_0x5c3b('0x2e')],_0x2e2b9c['query']);_0x33d104[_0x5c3b('0x30')]=_[_0x5c3b('0x2f')](_0x2e2b9c[_0x5c3b('0x2e')],this[_0x5c3b('0x4')](_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x4')]));_0x33d104[_0x5c3b('0x30')]=_0x33d104[_0x5c3b('0x30')][_0x5c3b('0x21')]?_0x33d104['attributes']:_0x2e2b9c[_0x5c3b('0x2e')];if(!_0x11230d[_0x5c3b('0x2c')]['hasOwnProperty']('nolimit')){_0x33d104[_0x5c3b('0x14')]=this[_0x5c3b('0x14')](_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x14')]);_0x33d104[_0x5c3b('0x15')]=this[_0x5c3b('0x15')](_0x11230d[_0x5c3b('0x2c')]['offset']);}_0x33d104['order']=this[_0x5c3b('0x16')](_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x16')]);_0x33d104[_0x5c3b('0x31')]=this['filters'](_[_0x5c3b('0x32')](_0x11230d['query'],_0x2e2b9c[_0x5c3b('0x6')]),_0x23e55f);if(_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x33')]){var _0xea3ae1=_0x23e55f;var _0x2caa63=_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x33')];if(typeof _0x2caa63===_0x5c3b('0x34')){_0xea3ae1=_[_0x5c3b('0x33')](_0x23e55f,function(_0x546827){return _['includes'](_0x2caa63[_0x5c3b('0x35')],_0x546827[_0x5c3b('0x11')]);});_0x2caa63=_0x2caa63[_0x5c3b('0x36')];}_0x33d104[_0x5c3b('0x31')]=_[_0x5c3b('0x37')](_0x33d104[_0x5c3b('0x31')],{'$or':_[_0x5c3b('0x17')](_0xea3ae1,function(_0x1d9427){if(_0x1d9427[_0x5c3b('0xa')]!=='VIRTUAL'){if(_0x3e58e4){return sequelize[_0x5c3b('0x31')](sequelize['fn'](_0x5c3b('0x38'),sequelize[_0x5c3b('0x19')](_0x1d9427['name'])),{'$like':sequelize['fn'](_0x5c3b('0x38'),'%'+_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x33')]+'%')});}else{var _0x5addf6={};_0x5addf6[_0x1d9427[_0x5c3b('0x11')]]={'$like':'%'+_0x11230d[_0x5c3b('0x2c')][_0x5c3b('0x33')]+'%'};return _0x5addf6;}}})});}_0x33d104=_[_0x5c3b('0x37')]({},_0x33d104,_0x11230d[_0x5c3b('0x39')]);return _0x33d104;};
\ No newline at end of file
+var _0x7dfd=['col','unsigned','length','omit','isObject','isString','unset','hasOwnProperty','isNumeric','getFullTextValue','replace','match','push','join','getOptions','query','$id','model','intersection','fields','attributes','offset','order','where','object','filter','VIRTUAL','lower','merge','options','lodash','sequelize','moment','parse','keys','includes','split','filters','isEmpty','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','sort','map','indexOf','priority','cast','substr','DESC'];(function(_0x8cd82b,_0x2bb9a9){var _0x3e30d6=function(_0x255201){while(--_0x255201){_0x8cd82b['push'](_0x8cd82b['shift']());}};_0x3e30d6(++_0x2bb9a9);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd7df('0x0'));var sequelize=require(_0xd7df('0x1'));var moment=require(_0xd7df('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2d48e6){var _0x346f5f=['ne'];try{var _0x28c3c9=JSON[_0xd7df('0x3')](_0x2d48e6);var _0x38eee7=Object[_0xd7df('0x4')](_0x28c3c9)[0x0];return _0x346f5f[_0xd7df('0x5')](_0x38eee7);}catch(_0x65a0b6){return![];}}function getOperatorValue(_0x3304f9){var _0x36cf0f=JSON[_0xd7df('0x3')](_0x3304f9);var _0x354ea7=Object[_0xd7df('0x4')](_0x36cf0f)[0x0];var _0x2c48a4=_0x36cf0f[_0x354ea7];return{['$'+_0x354ea7]:_0x2c48a4};}exports['fields']=function(_0xab6742){var _0xb3557a=null;if(_0xab6742){_0xb3557a=_0xab6742[_0xd7df('0x6')](',');}return _0xb3557a;};exports[_0xd7df('0x7')]=function(_0x5e59c3,_0x32c5b5){var _0x532c14={};if(!_[_0xd7df('0x8')](_0x5e59c3)){_['forOwn'](_0x5e59c3,function(_0x394d32,_0x82f1c0){try{if(_0x32c5b5){var _0x28d358=_[_0xd7df('0x9')](_0x32c5b5,{'name':_0x82f1c0})||{};if(hasSequelizeOperator(_0x394d32)){_0x532c14[_0x82f1c0]=getOperatorValue(_0x394d32);}else if(_0x28d358[_0xd7df('0xa')]===_0xd7df('0xb')&&_[_0xd7df('0xc')](_0x394d32)){var _0x3da618=JSON[_0xd7df('0x3')](_0x394d32);var _0x4d6f17={'$gte':moment(moment(_0x3da618[_0xd7df('0xd')])[_0xd7df('0xe')](_0xd7df('0xf')))[_0xd7df('0x10')]()[_0xd7df('0xe')](),'$lte':moment(moment(_0x3da618[_0xd7df('0x11')])[_0xd7df('0xe')]('YYYY-MM-DD'))[_0xd7df('0x10')]()[_0xd7df('0x12')](0x1,'s')['format']()};_0x532c14[_0x82f1c0]=_0x4d6f17;}else if(_0x28d358[_0xd7df('0x13')]===_0xd7df('0x14')){_0x532c14[_0x82f1c0]=_0x394d32;}else{_0x532c14[_0x82f1c0]=_['isArray'](_0x394d32)?_0x394d32:JSON[_0xd7df('0x3')](_0x394d32);}}else{_0x532c14[_0x82f1c0]=_[_0xd7df('0x15')](_0x394d32)?_0x394d32:JSON[_0xd7df('0x3')](_0x394d32);}}catch(_0x5210e5){_0x532c14[_0x82f1c0]=_0x394d32[_0xd7df('0x6')](',');}});}return _0x532c14;};exports[_0xd7df('0x16')]=function(_0x3cea3){_0x3cea3=parseInt(_0x3cea3,0xa);if(!_0x3cea3||_0x3cea3<0x0){_0x3cea3=LIMIT_VALUE;}return _0x3cea3;};exports['offset']=function(_0x96d86e){_0x96d86e=parseInt(_0x96d86e,0xa);if(!_0x96d86e||_0x96d86e<0x0){_0x96d86e=0x0;}return _0x96d86e;};exports[_0xd7df('0x17')]=function(_0x4e1985){var _0x5acb0a,_0x4188af=null;if(_0x4e1985){_0x5acb0a=_0x4e1985['split'](',');_0x4188af=_[_0xd7df('0x18')](_0x5acb0a,function(_0x5ab737){if(_0x5ab737[_0xd7df('0x19')]('-')===0x0){return[_0x5ab737===_0xd7df('0x1a')?sequelize[_0xd7df('0x1b')](sequelize['col'](_0xd7df('0x1a')),'unsigned'):_0x5ab737[_0xd7df('0x1c')](0x1),_0xd7df('0x1d')];}else{return[_0x5ab737===_0xd7df('0x1a')?sequelize[_0xd7df('0x1b')](sequelize[_0xd7df('0x1e')](_0xd7df('0x1a')),_0xd7df('0x1f')):_0x5ab737,'ASC'];}});}return _0x4188af;};exports['omit']=function(_0x36f2bd,_0x38db14){if(_[_0xd7df('0x8')](_0x36f2bd)){return _0x36f2bd;}if(_[_0xd7df('0x15')](_0x36f2bd)){for(var _0x13f190=0x0;_0x13f190<_0x36f2bd[_0xd7df('0x20')];_0x13f190+=0x1){_0x36f2bd[_0x13f190]=this[_0xd7df('0x21')](_0x36f2bd[_0x13f190],_0x38db14);}return _0x36f2bd;}if(!_[_0xd7df('0x22')](_0x36f2bd)){return _0x36f2bd;}if(_[_0xd7df('0x23')](_0x38db14)){_0x38db14=[_0x38db14];}if(!_['isArray'](_0x38db14)){return _0x36f2bd;}for(var _0xe53f53=0x0;_0xe53f53<_0x38db14[_0xd7df('0x20')];_0xe53f53+=0x1){_[_0xd7df('0x24')](_0x36f2bd,_0x38db14[_0xe53f53]);}for(var _0x29f0e8 in _0x36f2bd){if(_0x36f2bd[_0xd7df('0x25')](_0x29f0e8)){_0x36f2bd[_0x29f0e8]=this[_0xd7df('0x21')](_0x36f2bd[_0x29f0e8],_0x38db14);}}return _0x36f2bd;};exports[_0xd7df('0x26')]=function(_0x36de76){return _0x36de76['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x58584d){return _0x58584d['match'](/^\S+@\S+$/)?!![]:![];};exports[_0xd7df('0x27')]=function(_0x4e87cd){var _0xd366b=[];_0x4e87cd[_0xd7df('0x6')](/[ ,]+/)['forEach'](function(_0x3ef553){_0x3ef553=_0x3ef553[_0xd7df('0x28')](/([^:]")"+/g,'$1');_0x3ef553='+'+_0x3ef553+'*';var _0x4fe918=/[ `!@#$%^&*()_\-?~]/;if(_0x3ef553[_0xd7df('0x29')](_0x4fe918))_0x3ef553='\x22'+_0x3ef553+'\x22';_0xd366b[_0xd7df('0x2a')](_0x3ef553);});return _0xd366b[_0xd7df('0x2b')]('\x20');};exports[_0xd7df('0x2c')]=function(_0x40f965,_0x3304c4,_0x5a658f){var _0x428b4b={},_0x149813={};if(_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')]){_0x3304c4[_0xd7df('0x2d')]['id']=_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')];delete _0x3304c4[_0xd7df('0x2d')][_0xd7df('0x2e')];}_0x428b4b[_0xd7df('0x2f')]=_[_0xd7df('0x18')](_0x40f965,'name');_0x428b4b['query']=_[_0xd7df('0x4')](_0x3304c4['query']);_0x428b4b[_0xd7df('0x7')]=_[_0xd7df('0x30')](_0x428b4b[_0xd7df('0x2f')],_0x428b4b[_0xd7df('0x2d')]);_0x149813['attributes']=_['intersection'](_0x428b4b['model'],this[_0xd7df('0x31')](_0x3304c4[_0xd7df('0x2d')]['fields']));_0x149813[_0xd7df('0x32')]=_0x149813[_0xd7df('0x32')][_0xd7df('0x20')]?_0x149813[_0xd7df('0x32')]:_0x428b4b['model'];if(!_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x25')]('nolimit')){_0x149813[_0xd7df('0x16')]=this['limit'](_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x16')]);_0x149813[_0xd7df('0x33')]=this['offset'](_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x33')]);}_0x149813[_0xd7df('0x34')]=this[_0xd7df('0x17')](_0x3304c4['query'][_0xd7df('0x17')]);_0x149813[_0xd7df('0x35')]=this[_0xd7df('0x7')](_['pick'](_0x3304c4[_0xd7df('0x2d')],_0x428b4b[_0xd7df('0x7')]),_0x40f965);if(_0x3304c4[_0xd7df('0x2d')]['filter']){var _0x80019d=_0x40f965;var _0x445467=_0x3304c4['query']['filter'];if(typeof _0x445467===_0xd7df('0x36')){_0x80019d=_[_0xd7df('0x37')](_0x40f965,function(_0x6a024a){return _['includes'](_0x445467['columns'],_0x6a024a[_0xd7df('0x13')]);});_0x445467=_0x445467['value'];}_0x149813[_0xd7df('0x35')]=_['merge'](_0x149813['where'],{'$or':_[_0xd7df('0x18')](_0x80019d,function(_0x579d0f){if(_0x579d0f[_0xd7df('0xa')]!==_0xd7df('0x38')){if(_0x5a658f){return sequelize[_0xd7df('0x35')](sequelize['fn'](_0xd7df('0x39'),sequelize[_0xd7df('0x1e')](_0x579d0f[_0xd7df('0x13')])),{'$like':sequelize['fn'](_0xd7df('0x39'),'%'+_0x3304c4[_0xd7df('0x2d')][_0xd7df('0x37')]+'%')});}else{var _0x5b3179={};_0x5b3179[_0x579d0f[_0xd7df('0x13')]]={'$like':'%'+_0x3304c4['query'][_0xd7df('0x37')]+'%'};return _0x5b3179;}}})});}_0x149813=_[_0xd7df('0x3a')]({},_0x149813,_0x3304c4[_0xd7df('0x3b')]);return _0x149813;};
\ No newline at end of file
index a9e69fc..149b274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4315=['omit','pick','filterAgentAttributes','jayson/promise','../../mysqldb','http','client','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','unknown','isNil','voiceStatus','pause','chatStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','*pause','idle','busy','getAgentStatus','isArray','startCase','findOne','getAgents','all','map','value','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','find','getSortedAgentsIdsByStatus','split','globalStatus','order','DESC','ASC','getUpdatedSortOptions','internal','substring','indexOf','validateSortParameter','sort','pauseType','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','address','chatCapacity','mailCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxStatus','chatStatusTime','openchannelStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','phoneBarEnableAutomaticScreenRecording','routealias'];(function(_0x5afaf0,_0x222d69){var _0x2093b8=function(_0x1472ec){while(--_0x1472ec){_0x5afaf0['push'](_0x5afaf0['shift']());}};_0x2093b8(++_0x222d69);}(_0x4315,0x16f));var _0x5431=function(_0x21343f,_0x360b84){_0x21343f=_0x21343f-0x0;var _0x191d29=_0x4315[_0x21343f];return _0x191d29;};'use strict';var _=require('lodash');var jayson=require(_0x5431('0x0'));var db=require(_0x5431('0x1'))['db'];var amiClient=jayson['client'][_0x5431('0x2')]({'port':0x232a});var routingClient=jayson[_0x5431('0x3')]['http']({'port':0x232c});function isAgentPaused(_0x2bb931,_0x2d3ae4){var _0x3d312b=[_0x2bb931[_0x5431('0x4')],_0x2bb931[_0x5431('0x5')],_0x2bb931[_0x5431('0x6')],_0x2bb931[_0x5431('0x7')],_0x2bb931[_0x5431('0x8')],_0x2bb931[_0x5431('0x9')],_0x2bb931[_0x5431('0xa')]];if(!_0x2d3ae4)return _[_0x5431('0xb')](_0x3d312b);var _0x10f27a=_[_0x5431('0xc')](_0x3d312b);return _0x10f27a[_0x5431('0xd')]>0x0&&_0x10f27a[_0x5431('0xd')]<_0x3d312b['length']?!![]:![];}function isIdle(_0x41ffb7){return _0x41ffb7==='idle'||_0x41ffb7===_0x5431('0xe')||_0x41ffb7==='unavailable'||_0x41ffb7==='ringing'||_[_0x5431('0xf')](_0x41ffb7);}function isAgentIdle(_0x4af7b2){if(_0x4af7b2[_0x5431('0x10')]!=='idle'&&_0x4af7b2[_0x5431('0x9')]){_0x4af7b2[_0x5431('0x10')]=_0x5431('0x11');return![];}return _[_0x5431('0xb')]([_0x4af7b2[_0x5431('0x12')],_0x4af7b2['faxStatus'],_0x4af7b2[_0x5431('0x13')],_0x4af7b2[_0x5431('0x14')],_0x4af7b2[_0x5431('0x15')],_0x4af7b2[_0x5431('0x10')],_0x4af7b2[_0x5431('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x5431('0x17')](_0x5431('0x18'),{})[_0x5431('0x19')](function(_0x39cf68){if(_0x39cf68['error']){throw new Error(_0x5431('0x1a'));}var _0x1ebdf9=_0x39cf68[_0x5431('0x1b')];return routingClient['request']('Agents',{})[_0x5431('0x19')](function(_0x558a1f){if(_0x558a1f['error']){throw new Error(_0x5431('0x1c'));}var _0x22f0fe=_0x558a1f[_0x5431('0x1b')];return _[_0x5431('0x1d')]({},_0x1ebdf9,_0x22f0fe);});})[_0x5431('0x1e')](function(_0x5efe95){throw _0x5efe95;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x3dffe4){var _0x246de7=_0x5431('0xe');if(isAgentPaused(_0x3dffe4))_0x246de7=_0x5431('0x11');else if(isAgentPaused(_0x3dffe4,!![]))_0x246de7=_0x5431('0x1f');else if(isAgentIdle(_0x3dffe4))_0x246de7=_0x5431('0x20');else _0x246de7=_0x5431('0x21');return _0x246de7;}exports[_0x5431('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x2443f2,_0x3817cd){var _0x3a4c39=_[_0x5431('0x23')](_0x2443f2)?_0x2443f2:[_0x2443f2];var _0x1d1589=_[_0x5431('0x24')](_0x3817cd)+'Queue';var _0x1a8a8b=_['map'](_0x3a4c39,function(_0x39f508){return db[_0x1d1589][_0x5431('0x25')]({'where':{'id':_0x39f508}})[_0x5431('0x19')](function(_0x531d0b){if(!_0x531d0b)return[];return _0x531d0b[_0x5431('0x26')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x5431('0x27')](_0x1a8a8b)[_0x5431('0x19')](function(_0x4db4ca){var _0x158223=_(_0x4db4ca)['flatten']()[_0x5431('0x28')]('id')['uniq']()[_0x5431('0x29')]();return _0x158223;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0xe1eac9,_0x435de0,_0x46b09e){try{if(_0x435de0[_0x5431('0xd')]>0x0){_0xe1eac9=_0xe1eac9[_0x5431('0xc')](function(_0x21a8c8){return _0x435de0[_0x5431('0x2a')](_0x21a8c8['id']);});}var _0x1b43a1=_0xe1eac9[_0x5431('0xc')](function(_0x94b4dd){var _0x40ce37=_0x5431('0x21');if(isAgentIdle(_0x94b4dd)){_0x40ce37=_0x5431('0x20');}return _0x40ce37===_0x46b09e;});return _[_0x5431('0x28')](_0x1b43a1,'id');}catch(_0x20eaa8){throw _0x20eaa8;}}exports[_0x5431('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x5104d9,_0x2b2a95,_0x5402cb){return Promise[_0x5431('0x2c')]()[_0x5431('0x19')](function(){if(_0x2b2a95['length']>0x0){_0x5104d9=_0x5104d9[_0x5431('0xc')](function(_0xfd563a){return _0x2b2a95[_0x5431('0x2a')](_0xfd563a['id']);});}return _0x5104d9;})[_0x5431('0x19')](function(){return db[_0x5431('0x2d')][_0x5431('0x2e')]({'attributes':['id',_0x5431('0x2f'),_0x5431('0x30'),'chatPause',_0x5431('0x5'),_0x5431('0x6'),_0x5431('0x7'),_0x5431('0x8'),_0x5431('0x9'),_0x5431('0xa'),'pauseType'],'where':{'id':{'$in':_[_0x5431('0x28')](_0x5104d9,'id')}},'raw':!![]});})[_0x5431('0x19')](function(_0x53176f){return _0x53176f['map'](function(_0x34241f){var _0x5ca3f5=_[_0x5431('0x31')](_0x5104d9,['id',_0x34241f['id']]);var _0x360441=filterAgentAttributes(_0x5ca3f5);_['merge'](_0x34241f,_0x360441);_0x34241f['globalStatus']=getAgentStatus(_0x34241f);return _0x34241f;});})[_0x5431('0x19')](function(_0x307d67){var _0x227a5f=sortAgentsByStatus(_0x307d67,_0x5402cb);return _['map'](_0x227a5f,'id');})[_0x5431('0x1e')](function(_0x32dbfe){throw _0x32dbfe;});}exports[_0x5431('0x32')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x19aadb){var _0x51171c={'fields':[],'order':null};var _0x2c36d9=_0x19aadb[_0x5431('0x33')](',');_0x51171c['fields']=_['filter'](_0x2c36d9,function(_0xf7d2f5){if(!_0xf7d2f5[_0x5431('0x2a')](_0x5431('0x34'))){return!![];}_0x51171c[_0x5431('0x35')]=_['startsWith'](_0xf7d2f5,'-')?_0x5431('0x36'):_0x5431('0x37');return![];});return _0x51171c;}exports[_0x5431('0x38')]=getUpdatedSortOptions;function validateSortParameter(_0x11776b){if(_0x11776b[_0x5431('0x2a')](_0x5431('0x30'))&&!_0x11776b[_0x5431('0x2a')](_0x5431('0x39'))){var _0x29ff80=_0x11776b[_0x5431('0x3a')](0x0,_0x11776b[_0x5431('0x3b')](_0x5431('0x30')));_0x11776b+=','+_0x29ff80+_0x5431('0x39');}return _0x11776b;}exports[_0x5431('0x3c')]=validateSortParameter;function sortAgentsByStatus(_0x2dd2d3,_0x4cfa50){var _0x300a30=_0x2dd2d3[_0x5431('0x3d')](function(_0x88261f,_0x58d265){if(_0x88261f[_0x5431('0x34')]===_0x58d265['globalStatus']){if(_0x88261f[_0x5431('0x34')]===_0x5431('0x11')){if(_0x4cfa50===_0x5431('0x36')){return(_0x88261f[_0x5431('0x3e')]||'')<(_0x58d265['pauseType']||'')||_0x88261f['fullname'][_0x5431('0x3f')]()>_0x58d265[_0x5431('0x30')][_0x5431('0x3f')]()?0x1:-0x1;}else{return(_0x88261f['pauseType']||'')<(_0x58d265['pauseType']||'')||_0x88261f[_0x5431('0x30')][_0x5431('0x3f')]()>_0x58d265[_0x5431('0x30')][_0x5431('0x3f')]()?-0x1:0x1;}}else{if(_0x4cfa50==='DESC'){return _0x88261f[_0x5431('0x30')][_0x5431('0x3f')]()<_0x58d265[_0x5431('0x30')]['toLowerCase']()?0x1:-0x1;}else{return _0x88261f[_0x5431('0x30')][_0x5431('0x3f')]()<_0x58d265['fullname'][_0x5431('0x3f')]()?-0x1:0x1;}}}else{if(_0x4cfa50==='DESC'){return _0x88261f[_0x5431('0x34')]<_0x58d265[_0x5431('0x34')]?0x1:-0x1;}else{return _0x88261f[_0x5431('0x34')]<_0x58d265[_0x5431('0x34')]?-0x1:0x1;}}});return _0x300a30;}exports[_0x5431('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x229900){var _0x47adc0=['userpic',_0x5431('0x41'),_0x5431('0x42'),_0x5431('0x43'),_0x5431('0x3e'),_0x5431('0x43'),'internal',_0x5431('0x44'),'chatPause',_0x5431('0x7'),'mailPause','smsPause','whatsappPause',_0x5431('0x5'),'voicePause',_0x5431('0x45'),'openchannelCapacity',_0x5431('0x46'),'smsCapacity',_0x5431('0x47'),'faxCapacity',_0x5431('0x48'),_0x5431('0x49'),_0x5431('0x4a'),_0x5431('0x4b'),_0x5431('0x4c'),'faxCurrentCapacity',_0x5431('0x12'),'openchannelStatus',_0x5431('0x13'),_0x5431('0x15'),'whatsappStatus',_0x5431('0x4d'),_0x5431('0x10'),_0x5431('0x4e'),_0x5431('0x4f'),'mailStatusTime',_0x5431('0x50'),_0x5431('0x51'),_0x5431('0x52'),_0x5431('0x53'),_0x5431('0x54'),_0x5431('0x55'),'screenrecording','phoneBarEnableScreenRecordingByAgent',_0x5431('0x56'),_0x5431('0x57')];var _0x9d3fdb=[_0x5431('0x4'),_0x5431('0x7'),'mailPause',_0x5431('0x8'),_0x5431('0xa'),_0x5431('0x5'),_0x5431('0x9'),_0x5431('0x41')];var _0x286257=_(_0x229900)[_0x5431('0x58')](_0x9d3fdb)[_0x5431('0x59')](_0x47adc0)['value']();return _0x286257;}exports[_0x5431('0x5a')]=filterAgentAttributes;
\ No newline at end of file
+var _0x6fbd=['result','merge','getRealtimeAgents','*pause','isArray','startCase','Queue','map','findOne','all','flatten','uniq','value','getAgentIdsByQueues','filter','includes','busy','getAgentIdsByStatus','resolve','User','name','fullname','chatPause','whatsappPause','pauseType','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','order','startsWith','ASC','internal','substring','indexOf','validateSortParameter','pause','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','faxStatus','voiceStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','lodash','jayson/promise','../../mysqldb','http','client','faxPause','mailPause','openchannelPause','smsPause','voicePause','length','idle','unknown','unavailable','ringing','isNil','every','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','error'];(function(_0x2d0d28,_0x3bb917){var _0x22c9eb=function(_0x465bce){while(--_0x465bce){_0x2d0d28['push'](_0x2d0d28['shift']());}};_0x22c9eb(++_0x3bb917);}(_0x6fbd,0x1d5));var _0xd6fb=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x6fbd[_0x9c2427];return _0x51984f;};'use strict';var _=require(_0xd6fb('0x0'));var jayson=require(_0xd6fb('0x1'));var db=require(_0xd6fb('0x2'))['db'];var amiClient=jayson['client'][_0xd6fb('0x3')]({'port':0x232a});var routingClient=jayson[_0xd6fb('0x4')][_0xd6fb('0x3')]({'port':0x232c});function isAgentPaused(_0x1abbf9,_0x5d55b9){var _0x121056=[_0x1abbf9['chatPause'],_0x1abbf9[_0xd6fb('0x5')],_0x1abbf9[_0xd6fb('0x6')],_0x1abbf9[_0xd6fb('0x7')],_0x1abbf9[_0xd6fb('0x8')],_0x1abbf9[_0xd6fb('0x9')],_0x1abbf9['whatsappPause']];if(!_0x5d55b9)return _['every'](_0x121056);var _0x33a689=_['filter'](_0x121056);return _0x33a689[_0xd6fb('0xa')]>0x0&&_0x33a689[_0xd6fb('0xa')]<_0x121056['length']?!![]:![];}function isIdle(_0x55ed6c){return _0x55ed6c===_0xd6fb('0xb')||_0x55ed6c===_0xd6fb('0xc')||_0x55ed6c===_0xd6fb('0xd')||_0x55ed6c===_0xd6fb('0xe')||_[_0xd6fb('0xf')](_0x55ed6c);}function isAgentIdle(_0x2c814d){if(_0x2c814d['voiceStatus']!==_0xd6fb('0xb')&&_0x2c814d[_0xd6fb('0x9')]){_0x2c814d['voiceStatus']='pause';return![];}return _[_0xd6fb('0x10')]([_0x2c814d['chatStatus'],_0x2c814d['faxStatus'],_0x2c814d[_0xd6fb('0x11')],_0x2c814d[_0xd6fb('0x12')],_0x2c814d[_0xd6fb('0x13')],_0x2c814d['voiceStatus'],_0x2c814d[_0xd6fb('0x14')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xd6fb('0x15')](_0xd6fb('0x16'),{})[_0xd6fb('0x17')](function(_0x1c03a2){if(_0x1c03a2['error']){throw new Error(_0xd6fb('0x18'));}var _0x6ba4f7=_0x1c03a2['result'];return routingClient['request'](_0xd6fb('0x16'),{})[_0xd6fb('0x17')](function(_0x153b9a){if(_0x153b9a[_0xd6fb('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x1b68c9=_0x153b9a[_0xd6fb('0x1a')];return _[_0xd6fb('0x1b')]({},_0x6ba4f7,_0x1b68c9);});})['catch'](function(_0x26c2c9){throw _0x26c2c9;});}exports[_0xd6fb('0x1c')]=getRealtimeAgents;function getAgentStatus(_0x5442bd){var _0x2f8f0b=_0xd6fb('0xc');if(isAgentPaused(_0x5442bd))_0x2f8f0b='pause';else if(isAgentPaused(_0x5442bd,!![]))_0x2f8f0b=_0xd6fb('0x1d');else if(isAgentIdle(_0x5442bd))_0x2f8f0b=_0xd6fb('0xb');else _0x2f8f0b='busy';return _0x2f8f0b;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x4f8120,_0x288cfa){var _0x1e03bf=_[_0xd6fb('0x1e')](_0x4f8120)?_0x4f8120:[_0x4f8120];var _0x244198=_[_0xd6fb('0x1f')](_0x288cfa)+_0xd6fb('0x20');var _0x103bfd=_[_0xd6fb('0x21')](_0x1e03bf,function(_0x32dc2e){return db[_0x244198][_0xd6fb('0x22')]({'where':{'id':_0x32dc2e}})[_0xd6fb('0x17')](function(_0x594fa9){if(!_0x594fa9)return[];return _0x594fa9['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xd6fb('0x23')](_0x103bfd)[_0xd6fb('0x17')](function(_0x2255e0){var _0x1ee9c5=_(_0x2255e0)[_0xd6fb('0x24')]()[_0xd6fb('0x21')]('id')[_0xd6fb('0x25')]()[_0xd6fb('0x26')]();return _0x1ee9c5;});}exports[_0xd6fb('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x20a39a,_0x319021,_0x35ac19){try{if(_0x319021[_0xd6fb('0xa')]>0x0){_0x20a39a=_0x20a39a[_0xd6fb('0x28')](function(_0x534688){return _0x319021[_0xd6fb('0x29')](_0x534688['id']);});}var _0x9770d1=_0x20a39a[_0xd6fb('0x28')](function(_0x566974){var _0x240a02=_0xd6fb('0x2a');if(isAgentIdle(_0x566974)){_0x240a02=_0xd6fb('0xb');}return _0x240a02===_0x35ac19;});return _['map'](_0x9770d1,'id');}catch(_0x1cfcfe){throw _0x1cfcfe;}}exports[_0xd6fb('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2cd444,_0x2992e1,_0x2b692e){return Promise[_0xd6fb('0x2c')]()['then'](function(){if(_0x2992e1[_0xd6fb('0xa')]>0x0){_0x2cd444=_0x2cd444['filter'](function(_0x42e818){return _0x2992e1['includes'](_0x42e818['id']);});}return _0x2cd444;})[_0xd6fb('0x17')](function(){return db[_0xd6fb('0x2d')]['findAll']({'attributes':['id',_0xd6fb('0x2e'),_0xd6fb('0x2f'),_0xd6fb('0x30'),_0xd6fb('0x5'),'mailPause',_0xd6fb('0x7'),'smsPause',_0xd6fb('0x9'),_0xd6fb('0x31'),_0xd6fb('0x32')],'where':{'id':{'$in':_['map'](_0x2cd444,'id')}},'raw':!![]});})[_0xd6fb('0x17')](function(_0x2c2e71){return _0x2c2e71['map'](function(_0x4e010d){var _0x3dd45f=_[_0xd6fb('0x33')](_0x2cd444,['id',_0x4e010d['id']]);var _0x712b8=filterAgentAttributes(_0x3dd45f);_[_0xd6fb('0x1b')](_0x4e010d,_0x712b8);_0x4e010d[_0xd6fb('0x34')]=getAgentStatus(_0x4e010d);return _0x4e010d;});})[_0xd6fb('0x17')](function(_0x41162b){var _0x125c28=sortAgentsByStatus(_0x41162b,_0x2b692e);return _[_0xd6fb('0x21')](_0x125c28,'id');})[_0xd6fb('0x35')](function(_0x537627){throw _0x537627;});}exports[_0xd6fb('0x36')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x590355){var _0x5a0fe0={'fields':[],'order':null};var _0x57e0bf=_0x590355[_0xd6fb('0x37')](',');_0x5a0fe0[_0xd6fb('0x38')]=_['filter'](_0x57e0bf,function(_0x5d029c){if(!_0x5d029c[_0xd6fb('0x29')](_0xd6fb('0x34'))){return!![];}_0x5a0fe0[_0xd6fb('0x39')]=_[_0xd6fb('0x3a')](_0x5d029c,'-')?'DESC':_0xd6fb('0x3b');return![];});return _0x5a0fe0;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x32a671){if(_0x32a671[_0xd6fb('0x29')](_0xd6fb('0x2f'))&&!_0x32a671[_0xd6fb('0x29')](_0xd6fb('0x3c'))){var _0x3ae057=_0x32a671[_0xd6fb('0x3d')](0x0,_0x32a671[_0xd6fb('0x3e')](_0xd6fb('0x2f')));_0x32a671+=','+_0x3ae057+'internal';}return _0x32a671;}exports[_0xd6fb('0x3f')]=validateSortParameter;function sortAgentsByStatus(_0x5980ca,_0x89041){var _0xcf3c9b=_0x5980ca['sort'](function(_0x1cfaf9,_0x43e507){if(_0x1cfaf9['globalStatus']===_0x43e507[_0xd6fb('0x34')]){if(_0x1cfaf9['globalStatus']===_0xd6fb('0x40')){if(_0x89041===_0xd6fb('0x41')){return(_0x1cfaf9[_0xd6fb('0x32')]||'')<(_0x43e507[_0xd6fb('0x32')]||'')||_0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()>_0x43e507[_0xd6fb('0x2f')][_0xd6fb('0x42')]()?0x1:-0x1;}else{return(_0x1cfaf9[_0xd6fb('0x32')]||'')<(_0x43e507[_0xd6fb('0x32')]||'')||_0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()>_0x43e507['fullname'][_0xd6fb('0x42')]()?-0x1:0x1;}}else{if(_0x89041==='DESC'){return _0x1cfaf9['fullname'][_0xd6fb('0x42')]()<_0x43e507[_0xd6fb('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x1cfaf9[_0xd6fb('0x2f')][_0xd6fb('0x42')]()<_0x43e507[_0xd6fb('0x2f')][_0xd6fb('0x42')]()?-0x1:0x1;}}}else{if(_0x89041===_0xd6fb('0x41')){return _0x1cfaf9[_0xd6fb('0x34')]<_0x43e507[_0xd6fb('0x34')]?0x1:-0x1;}else{return _0x1cfaf9['globalStatus']<_0x43e507[_0xd6fb('0x34')]?-0x1:0x1;}}});return _0xcf3c9b;}exports[_0xd6fb('0x43')]=sortAgentsByStatus;function filterAgentAttributes(_0x262e38){var _0x480d82=[_0xd6fb('0x44'),_0xd6fb('0x45'),_0xd6fb('0x46'),_0xd6fb('0x47'),'pauseType',_0xd6fb('0x47'),_0xd6fb('0x3c'),_0xd6fb('0x48'),_0xd6fb('0x30'),_0xd6fb('0x7'),_0xd6fb('0x6'),_0xd6fb('0x8'),_0xd6fb('0x31'),'faxPause',_0xd6fb('0x9'),_0xd6fb('0x49'),_0xd6fb('0x4a'),_0xd6fb('0x4b'),'smsCapacity',_0xd6fb('0x4c'),_0xd6fb('0x4d'),_0xd6fb('0x4e'),_0xd6fb('0x4f'),_0xd6fb('0x50'),_0xd6fb('0x51'),_0xd6fb('0x52'),_0xd6fb('0x53'),'chatStatus',_0xd6fb('0x12'),_0xd6fb('0x11'),_0xd6fb('0x13'),_0xd6fb('0x14'),_0xd6fb('0x54'),_0xd6fb('0x55'),_0xd6fb('0x56'),_0xd6fb('0x57'),_0xd6fb('0x58'),_0xd6fb('0x59'),_0xd6fb('0x5a'),_0xd6fb('0x5b'),_0xd6fb('0x5c'),'queue','destconnectedlinenum',_0xd6fb('0x5d'),_0xd6fb('0x5e'),_0xd6fb('0x5f'),_0xd6fb('0x60')];var _0x14db9f=[_0xd6fb('0x30'),_0xd6fb('0x7'),_0xd6fb('0x6'),'smsPause',_0xd6fb('0x31'),'faxPause',_0xd6fb('0x9'),'online'];var _0x4da936=_(_0x262e38)[_0xd6fb('0x61')](_0x14db9f)[_0xd6fb('0x62')](_0x480d82)[_0xd6fb('0x26')]();return _0x4da936;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
index 95324ed..f65cef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x22342c,_0x218835){var _0xd3b434=function(_0x45b259){while(--_0x45b259){_0x22342c['push'](_0x22342c['shift']());}};_0xd3b434(++_0x218835);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
+var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x2aefb6,_0x1bd384){var _0x202772=function(_0x507d3f){while(--_0x507d3f){_0x2aefb6['push'](_0x2aefb6['shift']());}};_0x202772(++_0x1bd384);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
index 0b86be1..17d5a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd441=['hostname','macAddress','ipAddress','substring','lodash','crypto','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','IPv4','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','utf8','replace'];(function(_0x84a97e,_0x59f2f2){var _0x3f980b=function(_0x78a15f){while(--_0x78a15f){_0x84a97e['push'](_0x84a97e['shift']());}};_0x3f980b(++_0x59f2f2);}(_0xd441,0x1a8));var _0x1d44=function(_0x370aa8,_0x5af63e){_0x370aa8=_0x370aa8-0x0;var _0x5034bf=_0xd441[_0x370aa8];return _0x5034bf;};'use strict';var _=require(_0x1d44('0x0'));var os=require('os');var crypto=require(_0x1d44('0x1'));var machine=require('bimedia-machine-uuid');var exec=require(_0x1d44('0x2'))[_0x1d44('0x3')];var config=require(_0x1d44('0x4'));function getInterfaces(){var _0x5c6d36=[];var _0x46bff1=os[_0x1d44('0x5')]();var _0x5e1e62=_[_0x1d44('0x6')](_[_0x1d44('0x7')](_0x46bff1));for(var _0x1b1b25=0x0;_0x1b1b25<_0x5e1e62[_0x1d44('0x8')];_0x1b1b25++){var _0x273a81=_0x46bff1[_0x5e1e62[_0x1b1b25]][_0x1d44('0x9')](function(_0x3cef2a){return _0x3cef2a['family']===_0x1d44('0xa')&&_0x3cef2a['internal']===![];});_0x5c6d36=_0x5c6d36['concat'](_0x273a81);}return _0x5c6d36;}function getFirstInterface(){var _0x45cee5=_['head'](getInterfaces());return{'macAddress':_0x45cee5&&_0x45cee5['mac']?_0x45cee5[_0x1d44('0xb')]:_0x1d44('0xc'),'ipAddress':_0x45cee5&&_0x45cee5['address']?_0x45cee5[_0x1d44('0xd')]:_0x1d44('0xe')};}exports[_0x1d44('0xf')]=getFirstInterface;function getCPUhash(){var _0x3ba8ef=_[_0x1d44('0x6')](os[_0x1d44('0x10')]()[_0x1d44('0x11')](function(_0x34acca){return _0x34acca[_0x1d44('0x12')];}))[_0x1d44('0x13')](':');return crypto[_0x1d44('0x14')](_0x1d44('0x15'))[_0x1d44('0x16')](_0x3ba8ef)[_0x1d44('0x17')](_0x1d44('0x18'));}exports[_0x1d44('0x19')]=function(){var _0x1bed7c=os[_0x1d44('0x1a')]();var _0x418719=/[0-9a-f-]{36}/;if(config[_0x1d44('0x1b')]&&_0x418719['test'](config[_0x1d44('0x1b')])){return config[_0x1d44('0x1b')];}else if(_0x1bed7c===_0x1d44('0x1c')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x1d44('0x1d')})[_0x1d44('0x1e')]('\x0d\x0a','');}else{var _0x16a7e8=getFirstInterface();var _0xc442d4=getCPUhash();var _0x5fba45=_0xc442d4+'|'+os[_0x1d44('0x1f')]()+'|'+_0x16a7e8[_0x1d44('0x20')]+'|'+_0x16a7e8[_0x1d44('0x21')];var _0x308dac=crypto['createHash']('md5')['update'](_0x5fba45)['digest'](_0x1d44('0x18'));return _0x308dac[_0x1d44('0x22')](0x0,0x8)+'-'+_0x308dac['substring'](0x8,0xc)+'-'+_0x308dac[_0x1d44('0x22')](0xc,0x10)+'-'+_0x308dac['substring'](0x10,0x14)+'-'+_0x308dac['substring'](0x14);}};
\ No newline at end of file
+var _0xbb74=['test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','createHash','substring','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','map','model','update','digest','hex','getUuid','licenseToken'];(function(_0x50c082,_0x527861){var _0x5d231c=function(_0x5bb47a){while(--_0x5bb47a){_0x50c082['push'](_0x50c082['shift']());}};_0x5d231c(++_0x527861);}(_0xbb74,0x149));var _0x4bb7=function(_0x488262,_0x3521e9){_0x488262=_0x488262-0x0;var _0x47ea76=_0xbb74[_0x488262];return _0x47ea76;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x4bb7('0x0'));var exec=require('child_process')[_0x4bb7('0x1')];var config=require(_0x4bb7('0x2'));function getInterfaces(){var _0x12aff6=[];var _0x3bb2a2=os[_0x4bb7('0x3')]();var _0x3f5fa7=_[_0x4bb7('0x4')](_[_0x4bb7('0x5')](_0x3bb2a2));for(var _0x4a6647=0x0;_0x4a6647<_0x3f5fa7['length'];_0x4a6647++){var _0x295f05=_0x3bb2a2[_0x3f5fa7[_0x4a6647]][_0x4bb7('0x6')](function(_0x81c8f0){return _0x81c8f0[_0x4bb7('0x7')]===_0x4bb7('0x8')&&_0x81c8f0[_0x4bb7('0x9')]===![];});_0x12aff6=_0x12aff6[_0x4bb7('0xa')](_0x295f05);}return _0x12aff6;}function getFirstInterface(){var _0x1e370f=_[_0x4bb7('0xb')](getInterfaces());return{'macAddress':_0x1e370f&&_0x1e370f[_0x4bb7('0xc')]?_0x1e370f[_0x4bb7('0xc')]:_0x4bb7('0xd'),'ipAddress':_0x1e370f&&_0x1e370f[_0x4bb7('0xe')]?_0x1e370f['address']:_0x4bb7('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x1b0824=_[_0x4bb7('0x4')](os['cpus']()[_0x4bb7('0x10')](function(_0x1f654e){return _0x1f654e[_0x4bb7('0x11')];}))['join'](':');return crypto['createHash']('md5')[_0x4bb7('0x12')](_0x1b0824)[_0x4bb7('0x13')](_0x4bb7('0x14'));}exports[_0x4bb7('0x15')]=function(){var _0x43a799=os['platform']();var _0x411617=/[0-9a-f-]{36}/;if(config[_0x4bb7('0x16')]&&_0x411617[_0x4bb7('0x17')](config[_0x4bb7('0x16')])){return config['licenseToken'];}else if(_0x43a799==='win32'){return exec(_0x4bb7('0x18'),{'encoding':_0x4bb7('0x19')})[_0x4bb7('0x1a')]('\x0d\x0a','');}else{var _0x253a04=getFirstInterface();var _0x29cc8d=getCPUhash();var _0x37c861=_0x29cc8d+'|'+os[_0x4bb7('0x1b')]()+'|'+_0x253a04[_0x4bb7('0x1c')]+'|'+_0x253a04[_0x4bb7('0x1d')];var _0x4c79c3=crypto[_0x4bb7('0x1e')]('md5')[_0x4bb7('0x12')](_0x37c861)['digest']('hex');return _0x4c79c3[_0x4bb7('0x1f')](0x0,0x8)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x8,0xc)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0xc,0x10)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x10,0x14)+'-'+_0x4c79c3[_0x4bb7('0x1f')](0x14);}};
\ No newline at end of file
index 2ec688d..bdd7a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd8=['%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','get','data1','data2','then','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','catch','error','message','finally','getUuid','License','default','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','license','format'];(function(_0x4027d3,_0x11b29b){var _0xbd59e6=function(_0x59b484){while(--_0x59b484){_0x4027d3['push'](_0x4027d3['shift']());}};_0xbd59e6(++_0x11b29b);}(_0x1bd8,0xb1));var _0x81bd=function(_0x1ab8b7,_0x435b6f){_0x1ab8b7=_0x1ab8b7-0x0;var _0x33af8d=_0x1bd8[_0x1ab8b7];return _0x33af8d;};'use strict';var util=require('util');var moment=require('moment');var rp=require('request-promise');var BPromise=require(_0x81bd('0x0'));var pkginfo=require(_0x81bd('0x1'))(module,_0x81bd('0x2'));var db=require(_0x81bd('0x3'))['db'];var encryptor=require(_0x81bd('0x4'));var hardware=require('./hardware');var logger=require(_0x81bd('0x5'))(_0x81bd('0x6'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x4a9eba){return new BPromise(function(_0x52881d,_0x2be732){var _0x2fa4da=util[_0x81bd('0x7')](_0x81bd('0x8'),HOST,_0x4a9eba,module[_0x81bd('0x9')][_0x81bd('0x2')]);if(oldToken){_0x2fa4da=util[_0x81bd('0x7')](_0x81bd('0xa'),HOST,_0x4a9eba,module['exports'][_0x81bd('0x2')],oldToken);}var _0x5cd075={'uri':_0x2fa4da,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x5cd075)['then'](function(_0x43ad69){_0x52881d(_0x43ad69);})['catch'](function(_0x1a61ba){_0x2be732(_0x1a61ba);});});}function manageLicense(_0x340495,_0x34b716){var _0x4a86d3=_0x34b716[_0x81bd('0xb')]({'plain':!![]});if(!isOldTokenSent&&_0x4a86d3[_0x81bd('0xc')]!==_0x340495&&!_0x4a86d3[_0x81bd('0xd')]){oldToken=_0x4a86d3['data1'];}httpRequest(_0x340495)[_0x81bd('0xe')](function(_0x5d9c23){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5d9c23['active']){isOldTokenSent=![];if(!_0x4a86d3[_0x81bd('0x6')]&&_0x4a86d3[_0x81bd('0x6')]!=_0x5d9c23['license']||_0x4a86d3[_0x81bd('0x6')]&&_0x4a86d3[_0x81bd('0xd')]){logger[_0x81bd('0xf')](_0x81bd('0x10'));}if(_0x4a86d3[_0x81bd('0x6')]&&!_0x4a86d3[_0x81bd('0xd')]&&_0x4a86d3[_0x81bd('0x6')]!=_0x5d9c23['license']){logger[_0x81bd('0xf')](_0x81bd('0x11'));}if(_0x4a86d3[_0x81bd('0x6')]&&!_0x4a86d3[_0x81bd('0xd')]&&_0x4a86d3[_0x81bd('0x6')]==_0x5d9c23['license']){return _0x34b716;}return _0x34b716[_0x81bd('0x12')]({'data1':_0x340495,'data2':null,'license':_0x5d9c23[_0x81bd('0x6')]});}else{if(_0x5d9c23[_0x81bd('0x6')]||_0x4a86d3[_0x81bd('0x6')]){if(!_0x4a86d3[_0x81bd('0xd')]){if(_0x4a86d3[_0x81bd('0xc')]==_0x340495){GRAY_PERIOD_REASON=_0x81bd('0x13');logger[_0x81bd('0xf')](_0x81bd('0x14'));}else{GRAY_PERIOD_REASON=_0x81bd('0x15');logger[_0x81bd('0xf')](_0x81bd('0x16'),_0x4a86d3[_0x81bd('0xc')],_0x340495);}logger[_0x81bd('0xf')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x81bd('0x17')](),moment()['format'](_0x81bd('0x18')));return _0x34b716[_0x81bd('0x12')]({'data2':encryptor[_0x81bd('0x19')](moment()[_0x81bd('0x7')](_0x81bd('0x18')))});}else{if(moment()[_0x81bd('0x1a')](encryptor[_0x81bd('0x1b')](_0x4a86d3[_0x81bd('0xd')]),_0x81bd('0x1c'))>DAYS){logger['info'](_0x81bd('0x1d'),moment()[_0x81bd('0x7')](_0x81bd('0x18')));isOldTokenSent=![];return _0x34b716[_0x81bd('0x12')]({'data1':_0x340495,'data2':null,'license':null});}}}else{if(_0x4a86d3[_0x81bd('0xc')]!=_0x340495){logger[_0x81bd('0xf')](_0x81bd('0x16'),_0x4a86d3['data1'],_0x340495);return _0x34b716[_0x81bd('0x12')]({'data1':_0x340495,'data2':null,'license':null});}}}return _0x34b716;})[_0x81bd('0xe')](function(_0x24a49){_0x34b716=_0x24a49;})[_0x81bd('0x1e')](function(_0x1ad3d6){logger[_0x81bd('0x1f')](_0x1ad3d6[_0x81bd('0x20')]);})[_0x81bd('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x81bd('0x22')](),_0x34b716);},TIME);});}function defaultLicense(){var _0x4aee2d=hardware[_0x81bd('0x22')]();if(_0x4aee2d){return db[_0x81bd('0x23')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x4aee2d}})['spread'](function(_0x54a447,_0x422d13){logger[_0x81bd('0xf')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x4aee2d);manageLicense(_0x4aee2d,_0x54a447);})[_0x81bd('0x1e')](function(_0xc75e4b){logger['error'](_0xc75e4b[_0x81bd('0x20')]);});}}exports[_0x81bd('0x24')]=defaultLicense;
\ No newline at end of file
+var _0x5214=['Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','then','catch','get','data1','active','info','data2','update'];(function(_0x57c048,_0x3c8971){var _0x17a265=function(_0x58c951){while(--_0x58c951){_0x57c048['push'](_0x57c048['shift']());}};_0x17a265(++_0x3c8971);}(_0x5214,0x68));var _0x4521=function(_0x27c248,_0x384dff){_0x27c248=_0x27c248-0x0;var _0x1b2fc2=_0x5214[_0x27c248];return _0x1b2fc2;};'use strict';var util=require(_0x4521('0x0'));var moment=require(_0x4521('0x1'));var rp=require(_0x4521('0x2'));var BPromise=require('bluebird');var pkginfo=require(_0x4521('0x3'))(module,_0x4521('0x4'));var db=require(_0x4521('0x5'))['db'];var encryptor=require(_0x4521('0x6'));var hardware=require(_0x4521('0x7'));var logger=require(_0x4521('0x8'))(_0x4521('0x9'));var HOST=_0x4521('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x13dd10){return new BPromise(function(_0x2e0110,_0x5074e0){var _0x425bb7=util[_0x4521('0xb')](_0x4521('0xc'),HOST,_0x13dd10,module[_0x4521('0xd')][_0x4521('0x4')]);if(oldToken){_0x425bb7=util[_0x4521('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x13dd10,module['exports'][_0x4521('0x4')],oldToken);}var _0x238a14={'uri':_0x425bb7,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x238a14)[_0x4521('0xe')](function(_0x47a5a7){_0x2e0110(_0x47a5a7);})[_0x4521('0xf')](function(_0x139a78){_0x5074e0(_0x139a78);});});}function manageLicense(_0x53cc3a,_0x57d3de){var _0x3017a3=_0x57d3de[_0x4521('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x3017a3[_0x4521('0x11')]!==_0x53cc3a&&!_0x3017a3['data2']){oldToken=_0x3017a3['data1'];}httpRequest(_0x53cc3a)[_0x4521('0xe')](function(_0x22a142){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x22a142[_0x4521('0x12')]){isOldTokenSent=![];if(!_0x3017a3[_0x4521('0x9')]&&_0x3017a3[_0x4521('0x9')]!=_0x22a142[_0x4521('0x9')]||_0x3017a3[_0x4521('0x9')]&&_0x3017a3['data2']){logger[_0x4521('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x3017a3[_0x4521('0x9')]&&!_0x3017a3[_0x4521('0x14')]&&_0x3017a3[_0x4521('0x9')]!=_0x22a142[_0x4521('0x9')]){logger[_0x4521('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x3017a3[_0x4521('0x9')]&&!_0x3017a3[_0x4521('0x14')]&&_0x3017a3[_0x4521('0x9')]==_0x22a142[_0x4521('0x9')]){return _0x57d3de;}return _0x57d3de[_0x4521('0x15')]({'data1':_0x53cc3a,'data2':null,'license':_0x22a142[_0x4521('0x9')]});}else{if(_0x22a142[_0x4521('0x9')]||_0x3017a3[_0x4521('0x9')]){if(!_0x3017a3[_0x4521('0x14')]){if(_0x3017a3['data1']==_0x53cc3a){GRAY_PERIOD_REASON=_0x4521('0x16');logger[_0x4521('0x13')](_0x4521('0x17'));}else{GRAY_PERIOD_REASON=_0x4521('0x18');logger[_0x4521('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x3017a3[_0x4521('0x11')],_0x53cc3a);}logger[_0x4521('0x13')](_0x4521('0x19'),GRAY_PERIOD_REASON[_0x4521('0x1a')](),moment()['format'](_0x4521('0x1b')));return _0x57d3de[_0x4521('0x15')]({'data2':encryptor[_0x4521('0x1c')](moment()[_0x4521('0xb')](_0x4521('0x1b')))});}else{if(moment()[_0x4521('0x1d')](encryptor[_0x4521('0x1e')](_0x3017a3[_0x4521('0x14')]),_0x4521('0x1f'))>DAYS){logger[_0x4521('0x13')]('DEMO\x20START\x20AT\x20%s',moment()[_0x4521('0xb')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x57d3de['update']({'data1':_0x53cc3a,'data2':null,'license':null});}}}else{if(_0x3017a3[_0x4521('0x11')]!=_0x53cc3a){logger[_0x4521('0x13')](_0x4521('0x20'),_0x3017a3[_0x4521('0x11')],_0x53cc3a);return _0x57d3de[_0x4521('0x15')]({'data1':_0x53cc3a,'data2':null,'license':null});}}}return _0x57d3de;})['then'](function(_0x495c4a){_0x57d3de=_0x495c4a;})['catch'](function(_0x2fae75){logger[_0x4521('0x21')](_0x2fae75[_0x4521('0x22')]);})[_0x4521('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x4521('0x24')](),_0x57d3de);},TIME);});}function defaultLicense(){var _0x24751d=hardware[_0x4521('0x24')]();if(_0x24751d){return db[_0x4521('0x25')][_0x4521('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x24751d}})[_0x4521('0x27')](function(_0x53ab21,_0x8622ac){logger[_0x4521('0x13')](_0x4521('0x28'),_0x24751d);manageLicense(_0x24751d,_0x53ab21);})['catch'](function(_0x2b3c32){logger[_0x4521('0x21')](_0x2b3c32['message']);});}}exports[_0x4521('0x29')]=defaultLicense;
\ No newline at end of file
index 463dc11..2c93919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c47=['then','catch','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','demo','uuid','gray','deadline','grayReason','machineUuid','disabled','message','User','findAll','role','sequelize','COUNT','col','count','admin','user','telephone','telephones','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','License','find'];(function(_0x2278a9,_0x85a164){var _0xe3be74=function(_0x404e64){while(--_0x404e64){_0x2278a9['push'](_0x2278a9['shift']());}};_0xe3be74(++_0x85a164);}(_0x0c47,0x15c));var _0x70c4=function(_0x457b64,_0x49a219){_0x457b64=_0x457b64-0x0;var _0x437111=_0x0c47[_0x457b64];return _0x437111;};'use strict';var util=require(_0x70c4('0x0'));var _=require(_0x70c4('0x1'));var moment=require(_0x70c4('0x2'));var BPromise=require(_0x70c4('0x3'));var hardware=require(_0x70c4('0x4'));var encryptor=require(_0x70c4('0x5'));var db=require(_0x70c4('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x70c4('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x70c4('0x8'),'machineUuid':hardware[_0x70c4('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x70c4('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x70c4('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2ada7a){return new BPromise(function(_0x2022c4,_0x2a72d4){return db[_0x70c4('0xa')][_0x70c4('0xb')](_['defaults'](_0x2ada7a,{'raw':!![],'where':{'id':0x1}}))[_0x70c4('0xc')](function(_0x3cc632){return checkLicense(_0x3cc632,null);})[_0x70c4('0xc')](function(_0x7111ea){_0x2022c4(_0x7111ea);return;})[_0x70c4('0xd')](function(_0x2f5b85){_0x2a72d4(_0x2f5b85);});});}function checkLicense(_0x1791b1,_0x19d276){if(!_0x1791b1){demoLicense['uuid']=_0x1791b1[_0x70c4('0xe')];return demoLicense;}try{var _0x218756=_0x19d276||_0x1791b1[_0x70c4('0xf')];if(_[_0x70c4('0x10')](_0x218756)){throw new Error(_0x70c4('0x11'));}var _0x590408=_0x1791b1[_0x70c4('0xe')];var _0x58ece2=_0x1791b1['data2'];var _0x3a66bc=_0x590408['split']('-')[0x4];var _0x1c9d73=_0x590408[_0x70c4('0x12')]('-')[0x0];var _0x285486=encryptor[_0x70c4('0x13')](_0x218756,util[_0x70c4('0x14')](_0x70c4('0x15'),_0x3a66bc,_0x590408,_0x1c9d73));var _0x10258c=JSON[_0x70c4('0x16')](_0x285486);_0x10258c[_0x70c4('0x17')]=![];_0x10258c[_0x70c4('0x18')]=_0x590408;_0x10258c['machineUuid']=hardware[_0x70c4('0x9')]();if(_0x58ece2){var _0x733fe2=encryptor[_0x70c4('0x13')](_0x58ece2);_0x10258c[_0x70c4('0x19')]=_0x733fe2;_0x10258c[_0x70c4('0x1a')]=moment(_0x733fe2)['add'](0x7,'days')['format']();_0x10258c[_0x70c4('0x1b')]=_0x10258c[_0x70c4('0x18')]!=_0x10258c[_0x70c4('0x1c')]?'changed':_0x70c4('0x1d');}return _0x10258c;}catch(_0x4515b0){breakingLicense[_0x70c4('0x18')]=_0x1791b1[_0x70c4('0xe')];breakingLicense[_0x70c4('0x1e')]=_0x4515b0[_0x70c4('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x313b73,_0x3f099f){getLicense()[_0x70c4('0xc')](function(_0x87f35d){return db[_0x70c4('0x1f')][_0x70c4('0x20')]({'attributes':[_0x70c4('0x21'),[db[_0x70c4('0x22')]['fn'](_0x70c4('0x23'),db[_0x70c4('0x22')][_0x70c4('0x24')](_0x70c4('0x21'))),_0x70c4('0x25')]],'group':_0x70c4('0x21'),'where':{'role':{'$or':[_0x70c4('0x26'),_0x70c4('0x27'),_0x70c4('0x28')]}},'raw':!![]})[_0x70c4('0xc')](function(_0x53cbd2){var _0x32da70={'user':_0x87f35d['users']||0x0,'telephone':_0x87f35d[_0x70c4('0x29')]||0x0};_0x53cbd2['forEach'](function(_0x5a0d22){var _0x46aee8=_0x5a0d22[_0x70c4('0x21')]===_0x70c4('0x26')?_0x70c4('0x27'):_0x5a0d22[_0x70c4('0x21')];_0x32da70[_0x46aee8]-=_0x5a0d22[_0x70c4('0x25')];if(_0x32da70[_0x46aee8]<0x0)_0x32da70[_0x46aee8]=0x0;});_0x313b73(_0x32da70);return;});})[_0x70c4('0xd')](function(_0x45085f){_0x3f099f(_0x45085f);});});}function checkUserLimits(_0x91e46b){return new BPromise(function(_0x51a6a2,_0x595aca){getLimits()[_0x70c4('0xc')](function(_0x510484){var _0xa19fa0=_[_0x70c4('0x2a')](_[_0x70c4('0x2b')](_0x91e46b,_0x70c4('0x21')),['admin','user',_0x70c4('0x28')]);var _0x35411c=(_0xa19fa0[_0x70c4('0x26')]||0x0)+(_0xa19fa0['user']||0x0);var _0x510bd4=_0xa19fa0[_0x70c4('0x28')]||0x0;if(_0x35411c>_0x510484[_0x70c4('0x27')])return _0x595aca('License\x20limit\x20reached\x20for\x20users');if(_0x510bd4>_0x510484[_0x70c4('0x28')])return _0x595aca(_0x70c4('0x2c'));return _0x51a6a2();})[_0x70c4('0xd')](function(_0x36a9ba){_0x595aca(_0x36a9ba);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x99fd=['./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','isEmpty','data1','decryptString','format','%s:%s:%s','parse','uuid','machineUuid','gray','deadline','add','days','changed','message','User','findAll','sequelize','COUNT','col','count','admin','user','telephone','users','telephones','forEach','role','pick','countBy','util','lodash'];(function(_0xca82a4,_0x407eb4){var _0x5eed21=function(_0x5d553e){while(--_0x5d553e){_0xca82a4['push'](_0xca82a4['shift']());}};_0x5eed21(++_0x407eb4);}(_0x99fd,0x7c));var _0xd99f=function(_0x1e293e,_0x51a403){_0x1e293e=_0x1e293e-0x0;var _0x223db9=_0x99fd[_0x1e293e];return _0x223db9;};'use strict';var util=require(_0xd99f('0x0'));var _=require(_0xd99f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require(_0xd99f('0x2'));var encryptor=require(_0xd99f('0x3'));var db=require(_0xd99f('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd99f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xd99f('0x6'),'machineUuid':hardware[_0xd99f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd99f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xd99f('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2599a4){return new BPromise(function(_0x3fd6f3,_0x1a0c92){return db[_0xd99f('0x9')][_0xd99f('0xa')](_[_0xd99f('0xb')](_0x2599a4,{'raw':!![],'where':{'id':0x1}}))[_0xd99f('0xc')](function(_0x47c09a){return checkLicense(_0x47c09a,null);})['then'](function(_0x53d4b3){_0x3fd6f3(_0x53d4b3);return;})['catch'](function(_0xf4f258){_0x1a0c92(_0xf4f258);});});}function checkLicense(_0x3e36a6,_0x5a3a5f){if(!_0x3e36a6){demoLicense['uuid']=_0x3e36a6['data1'];return demoLicense;}try{var _0x3ca284=_0x5a3a5f||_0x3e36a6['license'];if(_[_0xd99f('0xd')](_0x3ca284)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x43a277=_0x3e36a6[_0xd99f('0xe')];var _0x50b399=_0x3e36a6['data2'];var _0x4cde35=_0x43a277['split']('-')[0x4];var _0x38a74f=_0x43a277['split']('-')[0x0];var _0xb6514c=encryptor[_0xd99f('0xf')](_0x3ca284,util[_0xd99f('0x10')](_0xd99f('0x11'),_0x4cde35,_0x43a277,_0x38a74f));var _0xb05533=JSON[_0xd99f('0x12')](_0xb6514c);_0xb05533['demo']=![];_0xb05533[_0xd99f('0x13')]=_0x43a277;_0xb05533[_0xd99f('0x14')]=hardware['getUuid']();if(_0x50b399){var _0x1b14ef=encryptor[_0xd99f('0xf')](_0x50b399);_0xb05533[_0xd99f('0x15')]=_0x1b14ef;_0xb05533[_0xd99f('0x16')]=moment(_0x1b14ef)[_0xd99f('0x17')](0x7,_0xd99f('0x18'))[_0xd99f('0x10')]();_0xb05533['grayReason']=_0xb05533['uuid']!=_0xb05533[_0xd99f('0x14')]?_0xd99f('0x19'):'disabled';}return _0xb05533;}catch(_0x47733f){breakingLicense['uuid']=_0x3e36a6['data1'];breakingLicense[_0xd99f('0x1a')]=_0x47733f[_0xd99f('0x1a')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x45d89d,_0x2e347b){getLicense()['then'](function(_0x32aa3e){return db[_0xd99f('0x1b')][_0xd99f('0x1c')]({'attributes':['role',[db[_0xd99f('0x1d')]['fn'](_0xd99f('0x1e'),db[_0xd99f('0x1d')][_0xd99f('0x1f')]('role')),_0xd99f('0x20')]],'group':'role','where':{'role':{'$or':[_0xd99f('0x21'),_0xd99f('0x22'),_0xd99f('0x23')]}},'raw':!![]})['then'](function(_0x2e4cdd){var _0x208403={'user':_0x32aa3e[_0xd99f('0x24')]||0x0,'telephone':_0x32aa3e[_0xd99f('0x25')]||0x0};_0x2e4cdd[_0xd99f('0x26')](function(_0x462162){var _0x4e81de=_0x462162[_0xd99f('0x27')]===_0xd99f('0x21')?_0xd99f('0x22'):_0x462162[_0xd99f('0x27')];_0x208403[_0x4e81de]-=_0x462162[_0xd99f('0x20')];if(_0x208403[_0x4e81de]<0x0)_0x208403[_0x4e81de]=0x0;});_0x45d89d(_0x208403);return;});})['catch'](function(_0xf1bc8){_0x2e347b(_0xf1bc8);});});}function checkUserLimits(_0x1a968f){return new BPromise(function(_0x4c4348,_0x41fae6){getLimits()[_0xd99f('0xc')](function(_0x22598a){var _0x373dfa=_[_0xd99f('0x28')](_[_0xd99f('0x29')](_0x1a968f,_0xd99f('0x27')),[_0xd99f('0x21'),_0xd99f('0x22'),_0xd99f('0x23')]);var _0x41f14c=(_0x373dfa['admin']||0x0)+(_0x373dfa['user']||0x0);var _0x11faf2=_0x373dfa[_0xd99f('0x23')]||0x0;if(_0x41f14c>_0x22598a['user'])return _0x41fae6('License\x20limit\x20reached\x20for\x20users');if(_0x11faf2>_0x22598a['telephone'])return _0x41fae6('License\x20limit\x20reached\x20for\x20telephones');return _0x4c4348();})['catch'](function(_0x3a4a6d){_0x41fae6(_0x3a4a6d);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index e50c036..6c6d913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['app-id','secret','http://localhost:9000','myappanuglar-secret'];(function(_0x1609ff,_0x39cba8){var _0x30c687=function(_0x1130b8){while(--_0x1130b8){_0x1609ff['push'](_0x1609ff['shift']());}};_0x30c687(++_0x39cba8);}(_0xda2d,0x102));var _0xdda2=function(_0x268060,_0x574e91){_0x268060=_0x268060-0x0;var _0xc6c951=_0xda2d[_0x268060];return _0xc6c951;};'use strict';module['exports']={'DOMAIN':_0xdda2('0x0'),'SESSION_SECRET':_0xdda2('0x1'),'GOOGLE_ID':_0xdda2('0x2'),'GOOGLE_SECRET':_0xdda2('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x1a85=['secret','myappanuglar-secret','app-id'];(function(_0x5c1662,_0x382d5e){var _0x52037e=function(_0x3c58bf){while(--_0x3c58bf){_0x5c1662['push'](_0x5c1662['shift']());}};_0x52037e(++_0x382d5e);}(_0x1a85,0x178));var _0x51a8=function(_0x45d56b,_0x3b99e4){_0x45d56b=_0x45d56b-0x0;var _0xd62e37=_0x1a85[_0x45d56b];return _0xd62e37;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x51a8('0x0'),'GOOGLE_ID':_0x51a8('0x1'),'GOOGLE_SECRET':_0x51a8('0x2'),'DEBUG':''};
\ No newline at end of file
index f5e61d2..726022c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x626b=['fileLogger','../utils/loggers'];(function(_0xbc1a4b,_0x4dfbe4){var _0x108b87=function(_0x409062){while(--_0x409062){_0xbc1a4b['push'](_0xbc1a4b['shift']());}};_0x108b87(++_0x4dfbe4);}(_0x626b,0x123));var _0xb626=function(_0x28780b,_0xfdb968){_0x28780b=_0x28780b-0x0;var _0xc3a6e2=_0x626b[_0x28780b];return _0xc3a6e2;};'use strict';var fileLogger=require(_0xb626('0x0'))[_0xb626('0x1')];module['exports']=fileLogger;
\ No newline at end of file
+var _0x949a=['exports','../utils/loggers'];(function(_0x2264d5,_0x39037a){var _0x3de3af=function(_0x554dec){while(--_0x554dec){_0x2264d5['push'](_0x2264d5['shift']());}};_0x3de3af(++_0x39037a);}(_0x949a,0x191));var _0xa949=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x949a[_0x321bb2];return _0x9c12ed;};'use strict';var fileLogger=require(_0xa949('0x0'))['fileLogger'];module[_0xa949('0x1')]=fileLogger;
\ No newline at end of file
index d797e39..012c1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f79=['path','express','join','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x3f79,0x84));var _0x93f7=function(_0x265898,_0x479771){_0x265898=_0x265898-0x0;var _0x3304d6=_0x3f79[_0x265898];return _0x3304d6;};'use strict';var path=require(_0x93f7('0x0'));var os=require('os');var config={'apps':[{'name':_0x93f7('0x1'),'script':path[_0x93f7('0x2')](__dirname,'../../services/express/index.js')},{'name':'ami','script':path[_0x93f7('0x2')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path['join'](__dirname,_0x93f7('0x3'))},{'name':_0x93f7('0x4'),'script':path[_0x93f7('0x2')](__dirname,_0x93f7('0x5'))},{'name':_0x93f7('0x6'),'script':path[_0x93f7('0x2')](__dirname,_0x93f7('0x7'))},{'name':_0x93f7('0x8'),'script':path[_0x93f7('0x2')](__dirname,_0x93f7('0x9'))}]};module[_0x93f7('0xa')]=config;
\ No newline at end of file
+var _0x188f=['xdr','../../services/xdr/index.js','path','join','../../services/express/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js'];(function(_0x115d5b,_0x26aff2){var _0x6cfc50=function(_0x39a786){while(--_0x39a786){_0x115d5b['push'](_0x115d5b['shift']());}};_0x6cfc50(++_0x26aff2);}(_0x188f,0x134));var _0xf188=function(_0x1a0621,_0x1817a7){_0x1a0621=_0x1a0621-0x0;var _0xc5806f=_0x188f[_0x1a0621];return _0xc5806f;};'use strict';var path=require(_0xf188('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0xf188('0x1')](__dirname,_0xf188('0x2'))},{'name':'ami','script':path[_0xf188('0x1')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0xf188('0x1')](__dirname,'../../services/agi/index.js')},{'name':_0xf188('0x3'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x4'))},{'name':_0xf188('0x5'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x6'))},{'name':_0xf188('0x7'),'script':path[_0xf188('0x1')](__dirname,_0xf188('0x8'))}]};module['exports']=config;
\ No newline at end of file
index d165e95..c5a3848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5dd=['describe','delete','dump','pm2','./config','connect','connected','start','then','disconnect','stop','restart','list'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0xd5dd,0x1f1));var _0xdd5d=function(_0x38b74a,_0x217abb){_0x38b74a=_0x38b74a-0x0;var _0x38ecfd=_0xd5dd[_0x38b74a];return _0x38ecfd;};'use strict';var pm2=require(_0xdd5d('0x0'));var BPromise=require('bluebird');var config=require(_0xdd5d('0x1'));function connect(){return new BPromise(function(_0x2de2e4,_0x34ade1){return pm2[_0xdd5d('0x2')](function(_0x52d0e4){if(_0x52d0e4){return _0x34ade1(_0x52d0e4);}return _0x2de2e4(_0xdd5d('0x3'));});});};exports[_0xdd5d('0x4')]=function(_0x5828fd){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x256c76,_0x17e4a8){return pm2[_0xdd5d('0x4')](_0x5828fd,function(_0x1526e8,_0x5364d6){if(_0x1526e8){return _0x17e4a8(_0x1526e8);}pm2[_0xdd5d('0x6')]();return _0x256c76(_0x5364d6);});});});};exports[_0xdd5d('0x7')]=function(_0x2b688c){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x3f6ab9,_0x1ddbbf){return pm2[_0xdd5d('0x7')](_0x2b688c,function(_0xbf1d9,_0x4fe3c6){if(_0xbf1d9){return _0x1ddbbf(_0xbf1d9);}pm2['disconnect']();return _0x3f6ab9(_0x4fe3c6);});});});};exports[_0xdd5d('0x8')]=function(_0x508246){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x2803fe,_0x1594d8){return pm2[_0xdd5d('0x8')](_0x508246,function(_0x1d0c2b,_0x38a191){if(_0x1d0c2b){return _0x1594d8(_0x1d0c2b);}pm2['disconnect']();return _0x2803fe(_0x38a191);});});});};exports[_0xdd5d('0x9')]=function(){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x519769,_0x55cd66){return pm2['list'](function(_0x236543,_0x1efd96){if(_0x236543){return _0x55cd66(_0x236543);}pm2[_0xdd5d('0x6')]();return _0x519769(_0x1efd96);});});});};exports['describe']=function(_0x1f61b4){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x2215dc,_0x6f91b6){return pm2[_0xdd5d('0xa')](_0x1f61b4,function(_0x254989,_0x434e86){if(_0x254989){return _0x6f91b6(_0x254989);}pm2[_0xdd5d('0x6')]();return _0x2215dc(_0x434e86);});});});};exports[_0xdd5d('0xb')]=function(_0x3c91fe){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x4d8705,_0x47ea42){return pm2[_0xdd5d('0xb')](_0x3c91fe,function(_0x17497d,_0x23c6bd){if(_0x17497d){return _0x47ea42(_0x17497d);}pm2['disconnect']();return _0x4d8705(_0x23c6bd);});});});};exports[_0xdd5d('0xc')]=function(){return connect()[_0xdd5d('0x5')](function(){return new BPromise(function(_0x21c35a,_0x2fb604){return pm2[_0xdd5d('0xc')](function(_0x35bdfe){if(_0x35bdfe){return _0x2fb604(_0x35bdfe);}return _0x21c35a('saved');});});});};
\ No newline at end of file
+var _0x8e52=['describe','delete','dump','saved','pm2','./config','connected','then','start','disconnect','stop','restart','list'];(function(_0xbf56c6,_0x1289b3){var _0x4d56c0=function(_0x3039a0){while(--_0x3039a0){_0xbf56c6['push'](_0xbf56c6['shift']());}};_0x4d56c0(++_0x1289b3);}(_0x8e52,0x170));var _0x28e5=function(_0x38af48,_0x400460){_0x38af48=_0x38af48-0x0;var _0x445384=_0x8e52[_0x38af48];return _0x445384;};'use strict';var pm2=require(_0x28e5('0x0'));var BPromise=require('bluebird');var config=require(_0x28e5('0x1'));function connect(){return new BPromise(function(_0x5afa35,_0x3c39b1){return pm2['connect'](function(_0x5c95eb){if(_0x5c95eb){return _0x3c39b1(_0x5c95eb);}return _0x5afa35(_0x28e5('0x2'));});});};exports['start']=function(_0xcdeab2){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x17f071,_0x1ad1c2){return pm2[_0x28e5('0x4')](_0xcdeab2,function(_0x4eafcf,_0x4f244c){if(_0x4eafcf){return _0x1ad1c2(_0x4eafcf);}pm2[_0x28e5('0x5')]();return _0x17f071(_0x4f244c);});});});};exports['stop']=function(_0x28b4e4){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x2ed524,_0x5b5c91){return pm2[_0x28e5('0x6')](_0x28b4e4,function(_0x15a54e,_0x163da0){if(_0x15a54e){return _0x5b5c91(_0x15a54e);}pm2[_0x28e5('0x5')]();return _0x2ed524(_0x163da0);});});});};exports['restart']=function(_0x3d7299){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x1f9aa3,_0x180f74){return pm2[_0x28e5('0x7')](_0x3d7299,function(_0x40e02a,_0x81f8bb){if(_0x40e02a){return _0x180f74(_0x40e02a);}pm2[_0x28e5('0x5')]();return _0x1f9aa3(_0x81f8bb);});});});};exports[_0x28e5('0x8')]=function(){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x2d02db,_0x550f9f){return pm2[_0x28e5('0x8')](function(_0x546511,_0x3978b8){if(_0x546511){return _0x550f9f(_0x546511);}pm2[_0x28e5('0x5')]();return _0x2d02db(_0x3978b8);});});});};exports[_0x28e5('0x9')]=function(_0x1eef37){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x255bca,_0x2408bb){return pm2[_0x28e5('0x9')](_0x1eef37,function(_0x11c681,_0x16619c){if(_0x11c681){return _0x2408bb(_0x11c681);}pm2['disconnect']();return _0x255bca(_0x16619c);});});});};exports[_0x28e5('0xa')]=function(_0x48d79c){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x1c1291,_0x462719){return pm2['delete'](_0x48d79c,function(_0x57b41,_0x5cea57){if(_0x57b41){return _0x462719(_0x57b41);}pm2[_0x28e5('0x5')]();return _0x1c1291(_0x5cea57);});});});};exports[_0x28e5('0xb')]=function(){return connect()[_0x28e5('0x3')](function(){return new BPromise(function(_0x437aea,_0x3629bf){return pm2[_0x28e5('0xb')](function(_0x4b5d5a){if(_0x4b5d5a){return _0x3629bf(_0x4b5d5a);}return _0x437aea(_0x28e5('0xc'));});});});};
\ No newline at end of file
index cc08e69..eb0b679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209a=['join','ChatInteraction','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','socket.io-emitter','Setting','chatTimeout','findAll','lastMsgAt','subtract','minutes','then','map','info','[CHAT]\x20Interactions\x20to\x20close:'];(function(_0x48a15,_0x40dec1){var _0x60c52d=function(_0x5ab4cc){while(--_0x5ab4cc){_0x48a15['push'](_0x48a15['shift']());}};_0x60c52d(++_0x40dec1);}(_0x209a,0x18c));var _0xa209=function(_0x1a2b89,_0x58ffce){_0x1a2b89=_0x1a2b89-0x0;var _0x2ff4ec=_0x209a[_0x1a2b89];return _0x2ff4ec;};'use strict';var _=require(_0xa209('0x0'));var moment=require(_0xa209('0x1'));var Redis=require(_0xa209('0x2'));var util=require(_0xa209('0x3'));var config=require(_0xa209('0x4'));var db=require(_0xa209('0x5'))['db'];var logger=require(_0xa209('0x6'))(_0xa209('0x7'));config[_0xa209('0x8')]=_['defaults'](config[_0xa209('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xa209('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x2a4f38=0x0;var _0x32fd21=[];return db[_0xa209('0xa')]['find']({'raw':!![],'attributes':['id',_0xa209('0xb')],'where':{'id':0x1}})['then'](function(_0x46338c){_0x2a4f38=_0x46338c[_0xa209('0xb')];if(_0x2a4f38){return db['ChatInteraction'][_0xa209('0xc')]({'raw':!![],'attributes':['id',_0xa209('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xa209('0xe')](_0x46338c['chatTimeout'],_0xa209('0xf'))}}});}else{return[];}})[_0xa209('0x10')](function(_0x295af9){if(_0x295af9&&_0x295af9['length']){_0x32fd21=_[_0xa209('0x11')](_0x295af9||[],'id');logger[_0xa209('0x12')](_0xa209('0x13'),_0x32fd21[_0xa209('0x14')]());return db[_0xa209('0x15')]['update']({'closeReason':_0xa209('0x16'),'disposition':_0xa209('0x17'),'closed':!![],'closedAt':moment()[_0xa209('0x18')](_0xa209('0x19'))},{'where':{'id':_0x32fd21}});}})['then'](function(){if(_0x32fd21&&_0x32fd21[_0xa209('0x1a')]){logger[_0xa209('0x12')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x32fd21[_0xa209('0x14')]());for(var _0x5788c0=0x0;_0x5788c0<_0x32fd21[_0xa209('0x1a')];_0x5788c0++){io['emit'](_0xa209('0x1b'),{'id':_0x32fd21[_0x5788c0],'closed':!![]});}}})[_0xa209('0x1c')](function(_0x4f68ec){logger['error'](_0xa209('0x1d'),_0x4f68ec?util[_0xa209('0x1e')](_0x4f68ec,{'showHidden':![],'depth':null}):'');});}exports[_0xa209('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x869d=['map','info','join','ChatInteraction','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','ioredis','util','../../mysqldb','redis','defaults','socket.io-emitter','Setting','chatTimeout','then','findAll','lastMsgAt','subtract','minutes','length'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x869d,0x142));var _0xd869=function(_0x393ebf,_0x449e5a){_0x393ebf=_0x393ebf-0x0;var _0x5808c2=_0x869d[_0x393ebf];return _0x5808c2;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0xd869('0x0'));var util=require(_0xd869('0x1'));var config=require('../../config/environment');var db=require(_0xd869('0x2'))['db'];var logger=require('../logger')('schedule');config[_0xd869('0x3')]=_[_0xd869('0x4')](config[_0xd869('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xd869('0x5'))(new Redis(config['redis']));function closeInteractions(){var _0x368505=0x0;var _0x301fa4=[];return db[_0xd869('0x6')]['find']({'raw':!![],'attributes':['id',_0xd869('0x7')],'where':{'id':0x1}})[_0xd869('0x8')](function(_0x3a8fc9){_0x368505=_0x3a8fc9[_0xd869('0x7')];if(_0x368505){return db['ChatInteraction'][_0xd869('0x9')]({'raw':!![],'attributes':['id',_0xd869('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xd869('0xb')](_0x3a8fc9[_0xd869('0x7')],_0xd869('0xc'))}}});}else{return[];}})[_0xd869('0x8')](function(_0x3364b7){if(_0x3364b7&&_0x3364b7[_0xd869('0xd')]){_0x301fa4=_[_0xd869('0xe')](_0x3364b7||[],'id');logger[_0xd869('0xf')]('[CHAT]\x20Interactions\x20to\x20close:',_0x301fa4[_0xd869('0x10')]());return db[_0xd869('0x11')][_0xd869('0x12')]({'closeReason':'system','disposition':_0xd869('0x13'),'closed':!![],'closedAt':moment()[_0xd869('0x14')](_0xd869('0x15'))},{'where':{'id':_0x301fa4}});}})[_0xd869('0x8')](function(){if(_0x301fa4&&_0x301fa4[_0xd869('0xd')]){logger[_0xd869('0xf')](_0xd869('0x16'),_0x301fa4[_0xd869('0x10')]());for(var _0x545aec=0x0;_0x545aec<_0x301fa4[_0xd869('0xd')];_0x545aec++){io['emit'](_0xd869('0x17'),{'id':_0x301fa4[_0x545aec],'closed':!![]});}}})[_0xd869('0x18')](function(_0x355992){logger['error'](_0xd869('0x19'),_0x355992?util[_0xd869('0x1a')](_0x355992,{'showHidden':![],'depth':null}):'');});}exports[_0xd869('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index db00344..912eff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddab=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x1f03c1,_0x52ce4d){var _0x58d2dd=function(_0x5867bf){while(--_0x5867bf){_0x1f03c1['push'](_0x1f03c1['shift']());}};_0x58d2dd(++_0x52ce4d);}(_0xddab,0x1e6));var _0xbdda=function(_0x2f3659,_0x436545){_0x2f3659=_0x2f3659-0x0;var _0x2959a4=_0xddab[_0x2f3659];return _0x2959a4;};'use strict';function start(){var _0x12eb99=require(_0xbdda('0x0'));return _0x12eb99[_0xbdda('0x1')]();}module[_0xbdda('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x57de=['startAllRefreshIntervals','exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x2a9dc6,_0x577bd6){var _0x4283d3=function(_0x399824){while(--_0x399824){_0x2a9dc6['push'](_0x2a9dc6['shift']());}};_0x4283d3(++_0x577bd6);}(_0x57de,0x1d9));var _0xe57d=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x57de[_0x1573ea];return _0x51c0e2;};'use strict';function start(){var _0x2499e3=require(_0xe57d('0x0'));return _0x2499e3[_0xe57d('0x1')]();}module[_0xe57d('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 116f6fa..099d122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbf0=['output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','intersection','length','exists','stop','deleteJob','index','my\x20id','cron','active','startAt','endAt','add','start','add\x20cron','stop\x20cron','isBetween','update','update\x20cron','util','path','lodash','moment','cron-job-manager','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','email','MailAccount','format','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','subtractUnit','join','savename','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','email\x20sent','catch','stringify','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2a4301,_0x126f8e){var _0x4c069f=function(_0x2837cb){while(--_0x2837cb){_0x2a4301['push'](_0x2a4301['shift']());}};_0x4c069f(++_0x126f8e);}(_0xcbf0,0x1c1));var _0x0cbf=function(_0x40329d,_0x414985){_0x40329d=_0x40329d-0x0;var _0x1f5603=_0xcbf0[_0x40329d];return _0x1f5603;};'use strict';var fs=require('fs');var util=require(_0x0cbf('0x0'));var path=require(_0x0cbf('0x1'));var _=require(_0x0cbf('0x2'));var moment=require(_0x0cbf('0x3'));var CronJobManager=require(_0x0cbf('0x4'));var jayson=require('jayson/promise');var BPromise=require(_0x0cbf('0x5'));var logger=require(_0x0cbf('0x6'))('schedule');var db=require(_0x0cbf('0x7'))['db'];var analyticCustomReportController=require(_0x0cbf('0x8'));var analyticDefaultReportController=require(_0x0cbf('0x9'));var client=jayson[_0x0cbf('0xa')][_0x0cbf('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x51c4c7,_0x246337){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x51c4c7[_0x0cbf('0xc')]);var _0x3ac5c9=!![];var _0xb497d4=_0x51c4c7[_0x0cbf('0xd')]['getSmtpOptions']();var _0x22fae9={'account':_0xb497d4,'message':{'from':util[_0x0cbf('0xe')]('\x22%s\x22\x20<%s>',_0x51c4c7[_0x0cbf('0xd')]['name'],_0x51c4c7[_0x0cbf('0xd')][_0x0cbf('0xc')]||_0x51c4c7['MailAccount'][_0x0cbf('0xf')][_0x0cbf('0x10')]),'to':_0x51c4c7['email'],'cc':_0x51c4c7['cc'],'bcc':_0x51c4c7[_0x0cbf('0x11')],'subject':util['format'](_0x0cbf('0x12'),_0x246337[_0x0cbf('0x13')],_0x51c4c7[_0x0cbf('0x14')],_0x51c4c7[_0x0cbf('0x15')])}};var _0x181f47=path[_0x0cbf('0x16')](__dirname,'../../files/reports');var _0x21c3b9=_0x246337[_0x0cbf('0x17')];var _0x5cdc56=util['format']('%s.%s',path['basename'](_0x246337[_0x0cbf('0x17')],path['extname'](_0x246337[_0x0cbf('0x17')])),_0x0cbf('0x18'));var _0x2252ef=path[_0x0cbf('0x16')](_0x181f47,_0x21c3b9);var _0x280418=path['join'](_0x181f47,_0x5cdc56);if(fs[_0x0cbf('0x19')](_0x2252ef)){_0x246337[_0x0cbf('0x1a')]=_0x0cbf('0x1b');_0x22fae9[_0x0cbf('0x1c')][_0x0cbf('0x1d')]=[{'filename':_0x21c3b9,'path':_0x2252ef}];_0x22fae9['message'][_0x0cbf('0x1e')]=util['format'](_0x0cbf('0x1f'),JSON['stringify'](_0x246337,null,0x2));}else if(fs[_0x0cbf('0x19')](_0x280418)){_0x246337[_0x0cbf('0x1a')]=_0x0cbf('0x1b');_0x22fae9['message'][_0x0cbf('0x1d')]=[{'filename':_0x5cdc56,'path':_0x280418}];}else{_0x22fae9[_0x0cbf('0x1c')][_0x0cbf('0x1e')]=_0x0cbf('0x20');if(!_0x51c4c7[_0x0cbf('0x21')]){_0x3ac5c9=![];logger[_0x0cbf('0x22')](_0x0cbf('0x23'));}}if(_0x3ac5c9){return client[_0x0cbf('0x24')](_0x0cbf('0x25'),_0x22fae9)[_0x0cbf('0x26')](function(_0x3cf03a){if(_0x3cf03a[_0x0cbf('0x27')]){return logger[_0x0cbf('0x27')](_0x0cbf('0x28'),JSON['stringify'](_0x3cf03a));}return logger[_0x0cbf('0x22')](_0x0cbf('0x29'));})[_0x0cbf('0x2a')](function(_0x5cf8ec){return logger[_0x0cbf('0x27')](_0x0cbf('0x28'),JSON[_0x0cbf('0x2b')](_0x5cf8ec));});}};}function handleError(){return function(_0x521afc){return logger[_0x0cbf('0x27')](JSON[_0x0cbf('0x2b')](_0x521afc));};}function handleResult(_0x1a771d){return function(_0x15825d){logger[_0x0cbf('0x22')]('data',JSON['stringify'](_0x15825d));if(_0x1a771d[_0x0cbf('0xd')]&&_0x1a771d[_0x0cbf('0xd')]['Smtp']&&!_['isNil'](_0x1a771d['email'])){setTimeout(handleSendEmail(_0x1a771d,_0x15825d),0x3c*0x3e8);}};}function handleJob(_0x431b27){return function(){try{if(_[_0x0cbf('0x2c')](_0x431b27[_0x0cbf('0x14')])){return logger[_0x0cbf('0x22')](_0x0cbf('0x2d'));}if(_[_0x0cbf('0x2c')](_0x431b27[_0x0cbf('0x15')])){return logger[_0x0cbf('0x22')](_0x0cbf('0x2e'));}var _0x55241f={'startDate':moment()[_0x0cbf('0x2f')](_0x431b27[_0x0cbf('0x14')],_0x431b27['subtractUnit'])[_0x0cbf('0xe')](_0x0cbf('0x30')),'endDate':moment()[_0x0cbf('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x431b27[_0x0cbf('0x31')],'name':_0x431b27[_0x0cbf('0x13')]};if(!_[_0x0cbf('0x2c')](_0x431b27[_0x0cbf('0x32')])){logger[_0x0cbf('0x22')](_0x0cbf('0x33'),_0x431b27[_0x0cbf('0x32')]);return analyticDefaultReportController[_0x0cbf('0x34')]({'id':_0x431b27[_0x0cbf('0x32')]},_0x55241f)[_0x0cbf('0x26')](handleResult(_0x431b27))['catch'](handleError());}if(!_[_0x0cbf('0x2c')](_0x431b27[_0x0cbf('0x35')])){logger[_0x0cbf('0x22')](_0x0cbf('0x36'),_0x431b27[_0x0cbf('0x35')]);return analyticCustomReportController[_0x0cbf('0x34')]({'id':_0x431b27[_0x0cbf('0x35')]},_0x55241f)[_0x0cbf('0x26')](handleResult(_0x431b27))['catch'](handleError());}}catch(_0x567c6f){logger[_0x0cbf('0x27')](JSON[_0x0cbf('0x2b')](_0x567c6f));}return logger[_0x0cbf('0x22')](_0x0cbf('0x37'));};}function getJobs(_0x25f809){var _0x5dd615={};if(_0x25f809){_0x5dd615['id']=_0x25f809;}return db[_0x0cbf('0x38')][_0x0cbf('0x39')]({'where':_0x5dd615,'include':[{'model':db[_0x0cbf('0xd')],'attributes':['id','name',_0x0cbf('0xc')],'include':[{'model':db[_0x0cbf('0x3a')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0x0cbf('0x3b')}]}]}]})[_0x0cbf('0x26')](function(_0x277ed7){var _0x387df1=_[_0x0cbf('0x3c')](manager[_0x0cbf('0x3d')]);var _0x59493e=_[_0x0cbf('0x3e')](_0x277ed7,function(_0x41a584){return _0x41a584['id'][_0x0cbf('0x3f')]();});var _0x2dcffb=_[_0x0cbf('0x40')](_0x277ed7,function(_0x220880){return _0x220880['id'][_0x0cbf('0x3f')]();});var _0x3c3d68=_0x25f809?_0x59493e:_['difference'](_0x59493e,_0x387df1);var _0x52d147=_[_0x0cbf('0x41')](_0x59493e,_0x387df1);var _0x391375=_['difference'](_0x387df1,_0x59493e);var _0xfaf25c;var _0x6f790e;for(_0xfaf25c=0x0;_0xfaf25c<_0x391375[_0x0cbf('0x42')]&&!_0x25f809;_0xfaf25c+=0x1){_0x6f790e=_0x391375[_0xfaf25c][_0x0cbf('0x3f')]();if(manager[_0x0cbf('0x43')](_0x6f790e)){manager[_0x0cbf('0x44')](_0x6f790e);manager[_0x0cbf('0x45')](_0x6f790e);logger[_0x0cbf('0x22')]('delete\x20cron',_0x6f790e);}}logger['info']('toRun',JSON[_0x0cbf('0x2b')](_0x3c3d68));for(_0xfaf25c=0x0;_0xfaf25c<_0x3c3d68[_0x0cbf('0x42')];_0xfaf25c+=0x1){_0x6f790e=_0x3c3d68[_0xfaf25c][_0x0cbf('0x3f')]();logger[_0x0cbf('0x22')](_0x0cbf('0x46'),_0x6f790e);if(_0x25f809){logger['info'](_0x0cbf('0x47'),_0x25f809);logger[_0x0cbf('0x22')](JSON['stringify'](_0x2dcffb[_0x6f790e]));BPromise['resolve']()[_0x0cbf('0x26')](handleJob(_0x2dcffb[_0x6f790e]));logger[_0x0cbf('0x22')]('run\x20job',_0x2dcffb[_0x6f790e]['name'],_0x2dcffb[_0x6f790e][_0x0cbf('0x48')]);}else if(_0x2dcffb[_0x6f790e][_0x0cbf('0x48')]&&_0x2dcffb[_0x6f790e][_0x0cbf('0x49')]&&moment()['isBetween'](_0x2dcffb[_0x6f790e][_0x0cbf('0x4a')],_0x2dcffb[_0x6f790e][_0x0cbf('0x4b')])){manager[_0x0cbf('0x4c')](_0x6f790e,_0x2dcffb[_0x6f790e]['cron'],handleJob(_0x2dcffb[_0x6f790e]));manager[_0x0cbf('0x4d')](_0x6f790e);logger[_0x0cbf('0x22')](_0x0cbf('0x4e'),_0x2dcffb[_0x6f790e][_0x0cbf('0x13')],_0x2dcffb[_0x6f790e]['cron']);}else if(manager[_0x0cbf('0x43')](_0x6f790e)){manager['stop'](_0x6f790e);manager[_0x0cbf('0x45')](_0x6f790e);logger[_0x0cbf('0x22')](_0x0cbf('0x4f'),_0x2dcffb[_0x6f790e][_0x0cbf('0x13')],_0x2dcffb[_0x6f790e][_0x0cbf('0x48')]);}}for(_0xfaf25c=0x0,_0x6f790e;_0xfaf25c<_0x52d147[_0x0cbf('0x42')]&&!_0x25f809;_0xfaf25c+=0x1){_0x6f790e=_0x52d147[_0xfaf25c]['toString']();if(manager[_0x0cbf('0x43')](_0x6f790e)){if(_0x2dcffb[_0x6f790e]['cron']&&_0x2dcffb[_0x6f790e][_0x0cbf('0x49')]&&moment()[_0x0cbf('0x50')](_0x2dcffb[_0x6f790e]['startAt'],_0x2dcffb[_0x6f790e]['endAt'])){manager[_0x0cbf('0x51')](_0x6f790e,_0x2dcffb[_0x6f790e][_0x0cbf('0x48')],handleJob(_0x2dcffb[_0x6f790e]));logger[_0x0cbf('0x22')](_0x0cbf('0x52'),_0x2dcffb[_0x6f790e][_0x0cbf('0x13')],_0x2dcffb[_0x6f790e][_0x0cbf('0x48')]);}else{manager['stop'](_0x6f790e);manager[_0x0cbf('0x45')](_0x6f790e);logger[_0x0cbf('0x22')](_0x0cbf('0x4f'),_0x2dcffb[_0x6f790e]['name'],_0x2dcffb[_0x6f790e][_0x0cbf('0x48')]);}}}})[_0x0cbf('0x2a')](function(_0x150b34){logger[_0x0cbf('0x27')](JSON[_0x0cbf('0x2b')](_0x150b34));});}exports['run']=function(_0x5239e6){return getJobs(_0x5239e6);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x770e=['no\x20report\x20id','Schedule','findAll','CloudProvider','keys','map','toString','keyBy','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','add\x20cron','stop','stop\x20cron','update','update\x20cron','run','start','util','path','lodash','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','MailAccount','getSmtpOptions','format','Smtp','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','basename','extname','zip','status','Sent','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','name','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s'];(function(_0x5c80a1,_0x4f5771){var _0x259625=function(_0xd27c44){while(--_0xd27c44){_0x5c80a1['push'](_0x5c80a1['shift']());}};_0x259625(++_0x4f5771);}(_0x770e,0xc9));var _0xe770=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x770e[_0x5e3b04];return _0x1fc44d;};'use strict';var fs=require('fs');var util=require(_0xe770('0x0'));var path=require(_0xe770('0x1'));var _=require(_0xe770('0x2'));var moment=require('moment');var CronJobManager=require(_0xe770('0x3'));var jayson=require(_0xe770('0x4'));var BPromise=require(_0xe770('0x5'));var logger=require(_0xe770('0x6'))(_0xe770('0x7'));var db=require(_0xe770('0x8'))['db'];var analyticCustomReportController=require(_0xe770('0x9'));var analyticDefaultReportController=require(_0xe770('0xa'));var client=jayson[_0xe770('0xb')][_0xe770('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4d0015,_0x2ef3dd){return function(){logger['info'](_0xe770('0xd'),_0x4d0015[_0xe770('0xe')]);var _0x59efe2=!![];var _0xf761dd=_0x4d0015[_0xe770('0xf')][_0xe770('0x10')]();var _0x25c6f5={'account':_0xf761dd,'message':{'from':util[_0xe770('0x11')]('\x22%s\x22\x20<%s>',_0x4d0015[_0xe770('0xf')]['name'],_0x4d0015[_0xe770('0xf')]['email']||_0x4d0015[_0xe770('0xf')][_0xe770('0x12')]['user']),'to':_0x4d0015[_0xe770('0xe')],'cc':_0x4d0015['cc'],'bcc':_0x4d0015['bcc'],'subject':util[_0xe770('0x11')](_0xe770('0x13'),_0x2ef3dd['name'],_0x4d0015['subtractNumber'],_0x4d0015[_0xe770('0x14')])}};var _0x29b919=path[_0xe770('0x15')](__dirname,'../../files/reports');var _0x294edf=_0x2ef3dd[_0xe770('0x16')];var _0x348196=util['format']('%s.%s',path[_0xe770('0x17')](_0x2ef3dd[_0xe770('0x16')],path[_0xe770('0x18')](_0x2ef3dd[_0xe770('0x16')])),_0xe770('0x19'));var _0x47732f=path[_0xe770('0x15')](_0x29b919,_0x294edf);var _0x16aab5=path[_0xe770('0x15')](_0x29b919,_0x348196);if(fs['existsSync'](_0x47732f)){_0x2ef3dd[_0xe770('0x1a')]=_0xe770('0x1b');_0x25c6f5[_0xe770('0x1c')][_0xe770('0x1d')]=[{'filename':_0x294edf,'path':_0x47732f}];_0x25c6f5[_0xe770('0x1c')]['text']=util[_0xe770('0x11')](_0xe770('0x1e'),JSON[_0xe770('0x1f')](_0x2ef3dd,null,0x2));}else if(fs[_0xe770('0x20')](_0x16aab5)){_0x2ef3dd[_0xe770('0x1a')]=_0xe770('0x1b');_0x25c6f5[_0xe770('0x1c')][_0xe770('0x1d')]=[{'filename':_0x348196,'path':_0x16aab5}];}else{_0x25c6f5[_0xe770('0x1c')][_0xe770('0x21')]=_0xe770('0x22');if(!_0x4d0015['sendIfEmpty']){_0x59efe2=![];logger[_0xe770('0x23')](_0xe770('0x24'));}}if(_0x59efe2){return client['request'](_0xe770('0x25'),_0x25c6f5)[_0xe770('0x26')](function(_0x1a9378){if(_0x1a9378[_0xe770('0x27')]){return logger[_0xe770('0x27')]('error\x20mail',JSON['stringify'](_0x1a9378));}return logger['info']('email\x20sent');})[_0xe770('0x28')](function(_0x56f1f3){return logger[_0xe770('0x27')]('error\x20mail',JSON['stringify'](_0x56f1f3));});}};}function handleError(){return function(_0x469aaa){return logger[_0xe770('0x27')](JSON[_0xe770('0x1f')](_0x469aaa));};}function handleResult(_0x352421){return function(_0x2bbd45){logger['info'](_0xe770('0x29'),JSON[_0xe770('0x1f')](_0x2bbd45));if(_0x352421[_0xe770('0xf')]&&_0x352421[_0xe770('0xf')][_0xe770('0x12')]&&!_['isNil'](_0x352421[_0xe770('0xe')])){setTimeout(handleSendEmail(_0x352421,_0x2bbd45),0x3c*0x3e8);}};}function handleJob(_0x173648){return function(){try{if(_[_0xe770('0x2a')](_0x173648[_0xe770('0x2b')])){return logger[_0xe770('0x23')](_0xe770('0x2c'));}if(_[_0xe770('0x2a')](_0x173648[_0xe770('0x14')])){return logger[_0xe770('0x23')]('subtractUnit\x20null\x20or\x20undefined');}var _0x5dd2ff={'startDate':moment()[_0xe770('0x2d')](_0x173648[_0xe770('0x2b')],_0x173648[_0xe770('0x14')])[_0xe770('0x11')](_0xe770('0x2e')),'endDate':moment()[_0xe770('0x11')](_0xe770('0x2e')),'type':_0xe770('0x2f'),'output':_0x173648['output'],'name':_0x173648[_0xe770('0x30')]};if(!_['isNil'](_0x173648[_0xe770('0x31')])){logger[_0xe770('0x23')](_0xe770('0x32'),_0x173648['DefaultReportId']);return analyticDefaultReportController[_0xe770('0x33')]({'id':_0x173648[_0xe770('0x31')]},_0x5dd2ff)[_0xe770('0x26')](handleResult(_0x173648))['catch'](handleError());}if(!_[_0xe770('0x2a')](_0x173648[_0xe770('0x34')])){logger['info'](_0xe770('0x35'),_0x173648[_0xe770('0x34')]);return analyticCustomReportController[_0xe770('0x33')]({'id':_0x173648[_0xe770('0x34')]},_0x5dd2ff)[_0xe770('0x26')](handleResult(_0x173648))[_0xe770('0x28')](handleError());}}catch(_0x20b6e5){logger[_0xe770('0x27')](JSON[_0xe770('0x1f')](_0x20b6e5));}return logger[_0xe770('0x23')](_0xe770('0x36'));};}function getJobs(_0x3b848f){var _0x151f00={};if(_0x3b848f){_0x151f00['id']=_0x3b848f;}return db[_0xe770('0x37')][_0xe770('0x38')]({'where':_0x151f00,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0xe770('0xe')],'include':[{'model':db['MailServerOut'],'as':_0xe770('0x12'),'include':[{'model':db[_0xe770('0x39')],'as':_0xe770('0x39')}]}]}]})[_0xe770('0x26')](function(_0x3c87fb){var _0x4c7598=_[_0xe770('0x3a')](manager['jobs']);var _0x369d94=_[_0xe770('0x3b')](_0x3c87fb,function(_0x64508b){return _0x64508b['id'][_0xe770('0x3c')]();});var _0x257c37=_[_0xe770('0x3d')](_0x3c87fb,function(_0x2a6320){return _0x2a6320['id']['toString']();});var _0x4edc39=_0x3b848f?_0x369d94:_[_0xe770('0x3e')](_0x369d94,_0x4c7598);var _0x19eff6=_[_0xe770('0x3f')](_0x369d94,_0x4c7598);var _0x4afb5f=_[_0xe770('0x3e')](_0x4c7598,_0x369d94);var _0x119ebf;var _0x5bdfde;for(_0x119ebf=0x0;_0x119ebf<_0x4afb5f[_0xe770('0x40')]&&!_0x3b848f;_0x119ebf+=0x1){_0x5bdfde=_0x4afb5f[_0x119ebf]['toString']();if(manager[_0xe770('0x41')](_0x5bdfde)){manager['stop'](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x43'),_0x5bdfde);}}logger[_0xe770('0x23')](_0xe770('0x44'),JSON[_0xe770('0x1f')](_0x4edc39));for(_0x119ebf=0x0;_0x119ebf<_0x4edc39[_0xe770('0x40')];_0x119ebf+=0x1){_0x5bdfde=_0x4edc39[_0x119ebf][_0xe770('0x3c')]();logger[_0xe770('0x23')](_0xe770('0x45'),_0x5bdfde);if(_0x3b848f){logger[_0xe770('0x23')](_0xe770('0x46'),_0x3b848f);logger[_0xe770('0x23')](JSON[_0xe770('0x1f')](_0x257c37[_0x5bdfde]));BPromise[_0xe770('0x47')]()['then'](handleJob(_0x257c37[_0x5bdfde]));logger[_0xe770('0x23')](_0xe770('0x48'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde]['cron']);}else if(_0x257c37[_0x5bdfde][_0xe770('0x49')]&&_0x257c37[_0x5bdfde][_0xe770('0x4a')]&&moment()[_0xe770('0x4b')](_0x257c37[_0x5bdfde]['startAt'],_0x257c37[_0x5bdfde][_0xe770('0x4c')])){manager[_0xe770('0x4d')](_0x5bdfde,_0x257c37[_0x5bdfde]['cron'],handleJob(_0x257c37[_0x5bdfde]));manager['start'](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x4e'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde][_0xe770('0x49')]);}else if(manager[_0xe770('0x41')](_0x5bdfde)){manager[_0xe770('0x4f')](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x50'),_0x257c37[_0x5bdfde]['name'],_0x257c37[_0x5bdfde]['cron']);}}for(_0x119ebf=0x0,_0x5bdfde;_0x119ebf<_0x19eff6[_0xe770('0x40')]&&!_0x3b848f;_0x119ebf+=0x1){_0x5bdfde=_0x19eff6[_0x119ebf]['toString']();if(manager['exists'](_0x5bdfde)){if(_0x257c37[_0x5bdfde][_0xe770('0x49')]&&_0x257c37[_0x5bdfde][_0xe770('0x4a')]&&moment()[_0xe770('0x4b')](_0x257c37[_0x5bdfde]['startAt'],_0x257c37[_0x5bdfde][_0xe770('0x4c')])){manager[_0xe770('0x51')](_0x5bdfde,_0x257c37[_0x5bdfde][_0xe770('0x49')],handleJob(_0x257c37[_0x5bdfde]));logger[_0xe770('0x23')](_0xe770('0x52'),_0x257c37[_0x5bdfde]['name'],_0x257c37[_0x5bdfde][_0xe770('0x49')]);}else{manager['stop'](_0x5bdfde);manager[_0xe770('0x42')](_0x5bdfde);logger[_0xe770('0x23')](_0xe770('0x50'),_0x257c37[_0x5bdfde][_0xe770('0x30')],_0x257c37[_0x5bdfde]['cron']);}}}})[_0xe770('0x28')](function(_0x390084){logger['error'](JSON[_0xe770('0x1f')](_0x390084));});}exports[_0xe770('0x53')]=function(_0x1acfc6){return getJobs(_0x1acfc6);};exports[_0xe770('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index a4a91b8..4c79226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13eb=['[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Positive','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Negative','Mixed','Neutral','COMPLETED','catch','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','name','start','lodash','aws-sdk','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x13eb,0x8f));var _0xb13e=function(_0x5504fc,_0x2e161c){_0x5504fc=_0x5504fc-0x0;var _0xbad34c=_0x13eb[_0x5504fc];return _0xbad34c;};var _=require(_0xb13e('0x0'));var AWS=require(_0xb13e('0x1'));var rp=require('request-promise');var util=require(_0xb13e('0x2'));var BPromise=require(_0xb13e('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xb13e('0x4'))(_0xb13e('0x5'));function getTranscriptionJob(_0x1090bc,_0x4b3215,_0x4eb55b,_0x366188){return new Promise(function(_0xaadc20,_0x382048){var _0x1722ad=new AWS[(_0xb13e('0x6'))]({'accessKeyId':_0x4b3215,'secretAccessKey':_0x1090bc,'region':_0x4eb55b});_0x1722ad[_0xb13e('0x7')]({'TranscriptionJobName':_0x366188},function(_0x4c2374,_0x3390be){if(_0x4c2374){return _0x382048(_0x4c2374);}else{return _0xaadc20(_0x3390be);}});});}function sentiment(_0x3bda6e,_0x4bea59,_0x44e6b4,_0x314a68,_0x3e3f7e){return new Promise(function(_0x338268,_0x1ccadd){var _0x2f0e32=new AWS[(_0xb13e('0x8'))]({'accessKeyId':_0x4bea59,'secretAccessKey':_0x3bda6e,'region':_0x44e6b4});_0x2f0e32[_0xb13e('0x9')]({'Text':_0x314a68,'LanguageCode':_0x3e3f7e[_0xb13e('0xa')](0x0,0x2)},function(_0xa3e850,_0x4a11af){if(_0xa3e850){return _0x1ccadd(_0xa3e850);}else{return _0x338268(_0x4a11af);}});});}function checkTranscribeJob(_0x2a2115,_0x21566f,_0x41b1a6){var _0x273863;return new BPromise(function(_0x491e08,_0x3690fb){logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0xd'),_0x2a2115['id'],_0x2a2115[_0xb13e('0xe')]));return getTranscriptionJob(_0x41b1a6[_0xb13e('0xf')],_0x41b1a6[_0xb13e('0x10')],_0x21566f[_0xb13e('0x11')],_0x2a2115[_0xb13e('0xe')])[_0xb13e('0x12')](function(_0x4561e4){logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x13'),_0x2a2115['id'],_0x2a2115[_0xb13e('0xe')],_0x4561e4[_0xb13e('0x14')][_0xb13e('0x15')]));if(!_0x2a2115['fileText']){switch(_0x4561e4[_0xb13e('0x14')][_0xb13e('0x15')]){case'COMPLETED':var _0x477359={'transcribeStatus':_0x4561e4[_0xb13e('0x14')]['TranscriptionJobStatus'],'fileUri':_0x4561e4[_0xb13e('0x14')][_0xb13e('0x16')][_0xb13e('0x17')]};logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x18'),_0x2a2115['id']));return rp({'uri':_0x4561e4[_0xb13e('0x14')][_0xb13e('0x16')][_0xb13e('0x17')],'json':!![]})[_0xb13e('0x12')](function(_0x23ce33){logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x19'),_0x2a2115['id']));if(_0x23ce33&&_0x23ce33[_0xb13e('0x1a')]&&_0x23ce33[_0xb13e('0x1a')][_0xb13e('0x1b')]&&_0x23ce33[_0xb13e('0x1a')][_0xb13e('0x1b')][_0xb13e('0x1c')]){_0x477359[_0xb13e('0x1d')]='';for(var _0x520232=0x0;_0x520232<_0x23ce33[_0xb13e('0x1a')][_0xb13e('0x1b')][_0xb13e('0x1c')];_0x520232++){_0x477359['fileText']+=_0x23ce33[_0xb13e('0x1a')][_0xb13e('0x1b')][_0x520232][_0xb13e('0x1e')]+'';}}return _0x2a2115['update'](_0x477359);})[_0xb13e('0x12')](function(){logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x1f'),_0x2a2115['id']));if(!_0x2a2115['tempSentiment']){throw new db[(_0xb13e('0x20'))][(_0xb13e('0x21'))](_0xb13e('0x22'));}if(!_0x21566f[_0xb13e('0x23')]||!_0x21566f['sentimentAccountId']||!_0x21566f[_0xb13e('0x24')]||!_0x21566f[_0xb13e('0x25')]||!_0x21566f[_0xb13e('0x26')]){throw new db[(_0xb13e('0x20'))][(_0xb13e('0x21'))](_0xb13e('0x27'));}if(!_0x477359[_0xb13e('0x1d')]){throw new Error(_0xb13e('0x28'));}if(_0x21566f[_0xb13e('0x29')]===_0x41b1a6['id']){return _0x41b1a6;}else{return db[_0xb13e('0x2a')][_0xb13e('0x2b')]({'where':{'id':_settings[_0xb13e('0x29')]}});}})[_0xb13e('0x12')](function(_0x15d5be){if(!_0x15d5be){throw new db['Sequelize'][(_0xb13e('0x21'))](_0xb13e('0x2c'));}if(!_0x15d5be['data1']||!_0x15d5be['data2']){throw new db[(_0xb13e('0x20'))][(_0xb13e('0x21'))](_0xb13e('0x2d'));}_0x273863=_0x15d5be;logger[_0xb13e('0xb')](util['format'](_0xb13e('0x2e'),_0x2a2115['id']));return sentiment(_0x273863[_0xb13e('0xf')],_0x273863['data2'],_0x21566f[_0xb13e('0x24')],_0x477359[_0xb13e('0x1d')],_0x21566f[_0xb13e('0x25')]);})[_0xb13e('0x12')](function(_0x42729b){logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x2f'),_0x2a2115['id']));return _0x2a2115[_0xb13e('0x30')]({'sentiment':_0x42729b[_0xb13e('0x31')],'sPositive':_0x42729b[_0xb13e('0x32')][_0xb13e('0x33')],'sNegative':_0x42729b['SentimentScore']['Negative'],'sMixed':_0x42729b[_0xb13e('0x32')]['Mixed'],'sNeutral':_0x42729b[_0xb13e('0x32')]['Neutral']});})[_0xb13e('0x12')](function(){logger[_0xb13e('0xb')](util[_0xb13e('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2a2115['id']));_0x491e08();});case _0xb13e('0x34'):return _0x2a2115[_0xb13e('0x30')]({'transcribeStatus':'FAILED','failureReason':_0x4561e4['TranscriptionJob'][_0xb13e('0x35')]})[_0xb13e('0x12')](function(){logger['info'](util[_0xb13e('0xc')](_0xb13e('0x1f'),_0x2a2115['id']));_0x491e08();});default:logger['info'](util[_0xb13e('0xc')](_0xb13e('0x36'),_0x2a2115['id']));break;}}else{return BPromise[_0xb13e('0x37')]()[_0xb13e('0x12')](function(){if(!_0x2a2115[_0xb13e('0x38')]){throw new db[(_0xb13e('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x21566f[_0xb13e('0x23')]||!_0x21566f[_0xb13e('0x29')]||!_0x21566f[_0xb13e('0x24')]||!_0x21566f[_0xb13e('0x25')]||!_0x21566f[_0xb13e('0x26')]){throw new db['Sequelize']['ValidationError'](_0xb13e('0x27'));}if(!_0x2a2115[_0xb13e('0x1d')]){throw new Error(_0xb13e('0x28'));}if(_0x21566f[_0xb13e('0x29')]===_0x41b1a6['id']){return _0x41b1a6;}else{return db[_0xb13e('0x2a')][_0xb13e('0x2b')]({'where':{'id':_settings[_0xb13e('0x29')]}});}})[_0xb13e('0x12')](function(_0x24a686){if(!_0x24a686){throw new db[(_0xb13e('0x20'))][(_0xb13e('0x21'))](_0xb13e('0x2c'));}if(!_0x24a686['data1']||!_0x24a686[_0xb13e('0x10')]){throw new db[(_0xb13e('0x20'))]['ValidationError'](_0xb13e('0x2d'));}_0x273863=_0x24a686;logger[_0xb13e('0xb')](util[_0xb13e('0xc')](_0xb13e('0x2e'),_0x2a2115['id']));return sentiment(_0x273863[_0xb13e('0xf')],_0x273863[_0xb13e('0x10')],_0x21566f[_0xb13e('0x24')],_0x2a2115[_0xb13e('0x1d')],_0x21566f[_0xb13e('0x25')]);})[_0xb13e('0x12')](function(_0x852c71){logger[_0xb13e('0xb')](util[_0xb13e('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x2a2115['id']));return _0x2a2115[_0xb13e('0x30')]({'sentiment':_0x852c71[_0xb13e('0x31')],'sPositive':_0x852c71[_0xb13e('0x32')][_0xb13e('0x33')],'sNegative':_0x852c71[_0xb13e('0x32')][_0xb13e('0x39')],'sMixed':_0x852c71[_0xb13e('0x32')][_0xb13e('0x3a')],'sNeutral':_0x852c71['SentimentScore'][_0xb13e('0x3b')],'transcribeStatus':_0xb13e('0x3c')});})[_0xb13e('0x12')](function(){logger['info'](util[_0xb13e('0xc')](_0xb13e('0x1f'),_0x2a2115['id']));_0x491e08();});}})[_0xb13e('0x3d')](function(_0x53c2d7){if(_0x53c2d7){if(!_0x53c2d7['name']||_0x53c2d7['name']!==_0xb13e('0x3e')){logger[_0xb13e('0x3f')](util['format'](_0xb13e('0x40'),_0x2a2115['id']),util[_0xb13e('0x41')](_0x53c2d7,{'showHidden':![],'depth':null}));}}_0x491e08();});});}function checkTranscribe(){var _0x10a5ae;var _0x292773;var _0x58c0f7;return db[_0xb13e('0x42')][_0xb13e('0x43')]({'where':{'transcribeStatus':_0xb13e('0x44')}})[_0xb13e('0x12')](function(_0x373700){if(!_0x373700||!_0x373700[_0xb13e('0x1c')]){throw new db[(_0xb13e('0x20'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x10a5ae=_0x373700;return db[_0xb13e('0x45')][_0xb13e('0x2b')]({'where':{'id':0x1}});})[_0xb13e('0x12')](function(_0x156cee){if(!_0x156cee){throw new db['Sequelize']['ValidationError'](_0xb13e('0x46'));}_0x292773=_0x156cee;if(!_0x292773[_0xb13e('0x5')]||!_0x292773[_0xb13e('0x47')]||!_0x292773[_0xb13e('0x11')]||!_0x292773['language']||!_0x292773[_0xb13e('0x26')]){throw new db[(_0xb13e('0x20'))]['ValidationError'](_0xb13e('0x48'));}return db[_0xb13e('0x2a')][_0xb13e('0x2b')]({'where':{'id':_0x292773[_0xb13e('0x47')]}});})[_0xb13e('0x12')](function(_0x3d16f9){if(!_0x3d16f9){throw new db[(_0xb13e('0x20'))]['ValidationError'](_0xb13e('0x2c'));}if(!_0x3d16f9[_0xb13e('0xf')]||!_0x3d16f9[_0xb13e('0x10')]){throw new db['Sequelize'][(_0xb13e('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x58c0f7=_0x3d16f9;var _0x2cbc65=[];_0x10a5ae[_0xb13e('0x49')](function(_0x2ae3f3){_0x2cbc65[_0xb13e('0x4a')](checkTranscribeJob(_0x2ae3f3,_0x292773,_0x58c0f7));});return BPromise[_0xb13e('0x4b')](_0x2cbc65);})[_0xb13e('0x3d')](function(_0x1630f8){if(_0x1630f8){if(!_0x1630f8[_0xb13e('0x4c')]||_0x1630f8[_0xb13e('0x4c')]!==_0xb13e('0x3e')){logger[_0xb13e('0x3f')](util[_0xb13e('0x41')](_0x1630f8,{'showHidden':![],'depth':null}));}}});}exports[_0xb13e('0x4d')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x8efc=['transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','resolve','tempSentiment','sentiment','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','bucket','transcribeAccountId','push','all','inspect','aws-sdk','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0x1254d8,_0x2433d0){var _0x5e8976=function(_0x26c8ca){while(--_0x26c8ca){_0x1254d8['push'](_0x1254d8['shift']());}};_0x5e8976(++_0x2433d0);}(_0x8efc,0xb3));var _0xc8ef=function(_0x59943d,_0x2e751b){_0x59943d=_0x59943d-0x0;var _0x46ace9=_0x8efc[_0x59943d];return _0x46ace9;};var _=require('lodash');var AWS=require(_0xc8ef('0x0'));var rp=require(_0xc8ef('0x1'));var util=require(_0xc8ef('0x2'));var BPromise=require(_0xc8ef('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xc8ef('0x4'))(_0xc8ef('0x5'));function getTranscriptionJob(_0x33b9c9,_0x50d1f6,_0x2910b5,_0x3c6189){return new Promise(function(_0x1cd466,_0x13b433){var _0x576ff9=new AWS[(_0xc8ef('0x6'))]({'accessKeyId':_0x50d1f6,'secretAccessKey':_0x33b9c9,'region':_0x2910b5});_0x576ff9[_0xc8ef('0x7')]({'TranscriptionJobName':_0x3c6189},function(_0x1c8931,_0x489778){if(_0x1c8931){return _0x13b433(_0x1c8931);}else{return _0x1cd466(_0x489778);}});});}function sentiment(_0x11f3ba,_0x443ee3,_0x1a9a5f,_0xcc3c21,_0x56cfb1){return new Promise(function(_0x315d93,_0x574588){var _0x45dbd3=new AWS[(_0xc8ef('0x8'))]({'accessKeyId':_0x443ee3,'secretAccessKey':_0x11f3ba,'region':_0x1a9a5f});_0x45dbd3[_0xc8ef('0x9')]({'Text':_0xcc3c21,'LanguageCode':_0x56cfb1[_0xc8ef('0xa')](0x0,0x2)},function(_0xa76b59,_0x44d7da){if(_0xa76b59){return _0x574588(_0xa76b59);}else{return _0x315d93(_0x44d7da);}});});}function checkTranscribeJob(_0x18213f,_0x1c6744,_0xb90ed0){var _0x15669b;return new BPromise(function(_0x3e7c04,_0x1207d8){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0xd'),_0x18213f['id'],_0x18213f[_0xc8ef('0xe')]));return getTranscriptionJob(_0xb90ed0[_0xc8ef('0xf')],_0xb90ed0[_0xc8ef('0x10')],_0x1c6744[_0xc8ef('0x11')],_0x18213f[_0xc8ef('0xe')])[_0xc8ef('0x12')](function(_0x45eb4b){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x13'),_0x18213f['id'],_0x18213f[_0xc8ef('0xe')],_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x15')]));if(!_0x18213f[_0xc8ef('0x16')]){switch(_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x15')]){case _0xc8ef('0x17'):var _0x3591c={'transcribeStatus':_0x45eb4b['TranscriptionJob'][_0xc8ef('0x15')],'fileUri':_0x45eb4b['TranscriptionJob'][_0xc8ef('0x18')]['TranscriptFileUri']};logger[_0xc8ef('0xb')](util['format'](_0xc8ef('0x19'),_0x18213f['id']));return rp({'uri':_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x18')][_0xc8ef('0x1a')],'json':!![]})[_0xc8ef('0x12')](function(_0x4c57e3){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0x1b'),_0x18213f['id']));if(_0x4c57e3&&_0x4c57e3['results']&&_0x4c57e3[_0xc8ef('0x1c')]['transcripts']&&_0x4c57e3['results']['transcripts']['length']){_0x3591c[_0xc8ef('0x16')]='';for(var _0x128556=0x0;_0x128556<_0x4c57e3[_0xc8ef('0x1c')][_0xc8ef('0x1d')][_0xc8ef('0x1e')];_0x128556++){_0x3591c[_0xc8ef('0x16')]+=_0x4c57e3[_0xc8ef('0x1c')][_0xc8ef('0x1d')][_0x128556][_0xc8ef('0x1f')]+'';}}return _0x18213f[_0xc8ef('0x20')](_0x3591c);})[_0xc8ef('0x12')](function(){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')](_0xc8ef('0x21'),_0x18213f['id']));if(!_0x18213f['tempSentiment']){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1c6744['sentiment']||!_0x1c6744[_0xc8ef('0x24')]||!_0x1c6744['sentimentRegion']||!_0x1c6744[_0xc8ef('0x25')]||!_0x1c6744['bucket']){throw new db[(_0xc8ef('0x22'))]['ValidationError'](_0xc8ef('0x26'));}if(!_0x3591c[_0xc8ef('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x1c6744['sentimentAccountId']===_0xb90ed0['id']){return _0xb90ed0;}else{return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xc8ef('0x12')](function(_0x3bde31){if(!_0x3bde31){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x29'));}if(!_0x3bde31[_0xc8ef('0xf')]||!_0x3bde31[_0xc8ef('0x10')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x2a'));}_0x15669b=_0x3bde31;logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x18213f['id']));return sentiment(_0x15669b[_0xc8ef('0xf')],_0x15669b[_0xc8ef('0x10')],_0x1c6744[_0xc8ef('0x2b')],_0x3591c[_0xc8ef('0x16')],_0x1c6744['language']);})[_0xc8ef('0x12')](function(_0x1890de){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x2c'),_0x18213f['id']));return _0x18213f['update']({'sentiment':_0x1890de['Sentiment'],'sPositive':_0x1890de[_0xc8ef('0x2d')][_0xc8ef('0x2e')],'sNegative':_0x1890de[_0xc8ef('0x2d')]['Negative'],'sMixed':_0x1890de['SentimentScore'][_0xc8ef('0x2f')],'sNeutral':_0x1890de[_0xc8ef('0x2d')][_0xc8ef('0x30')]});})[_0xc8ef('0x12')](function(){logger[_0xc8ef('0xb')](util['format'](_0xc8ef('0x21'),_0x18213f['id']));_0x3e7c04();});case _0xc8ef('0x31'):return _0x18213f[_0xc8ef('0x20')]({'transcribeStatus':_0xc8ef('0x31'),'failureReason':_0x45eb4b[_0xc8ef('0x14')][_0xc8ef('0x32')]})['then'](function(){logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x18213f['id']));_0x3e7c04();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x18213f['id']));break;}}else{return BPromise[_0xc8ef('0x33')]()['then'](function(){if(!_0x18213f[_0xc8ef('0x34')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1c6744[_0xc8ef('0x35')]||!_0x1c6744[_0xc8ef('0x24')]||!_0x1c6744[_0xc8ef('0x2b')]||!_0x1c6744[_0xc8ef('0x25')]||!_0x1c6744['bucket']){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))](_0xc8ef('0x26'));}if(!_0x18213f[_0xc8ef('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x1c6744['sentimentAccountId']===_0xb90ed0['id']){return _0xb90ed0;}else{return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_settings[_0xc8ef('0x24')]}});}})[_0xc8ef('0x12')](function(_0x351109){if(!_0x351109){throw new db['Sequelize']['ValidationError'](_0xc8ef('0x29'));}if(!_0x351109['data1']||!_0x351109[_0xc8ef('0x10')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Cloud\x20Provider\x20not\x20configured');}_0x15669b=_0x351109;logger[_0xc8ef('0xb')](util[_0xc8ef('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x18213f['id']));return sentiment(_0x15669b[_0xc8ef('0xf')],_0x15669b['data2'],_0x1c6744[_0xc8ef('0x2b')],_0x18213f[_0xc8ef('0x16')],_0x1c6744[_0xc8ef('0x25')]);})['then'](function(_0x5b1ef1){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x2c'),_0x18213f['id']));return _0x18213f[_0xc8ef('0x20')]({'sentiment':_0x5b1ef1[_0xc8ef('0x36')],'sPositive':_0x5b1ef1[_0xc8ef('0x2d')][_0xc8ef('0x2e')],'sNegative':_0x5b1ef1[_0xc8ef('0x2d')]['Negative'],'sMixed':_0x5b1ef1['SentimentScore'][_0xc8ef('0x2f')],'sNeutral':_0x5b1ef1[_0xc8ef('0x2d')][_0xc8ef('0x30')],'transcribeStatus':_0xc8ef('0x17')});})[_0xc8ef('0x12')](function(){logger['info'](util[_0xc8ef('0xc')](_0xc8ef('0x21'),_0x18213f['id']));_0x3e7c04();});}})[_0xc8ef('0x37')](function(_0xc932df){if(_0xc932df){if(!_0xc932df['name']||_0xc932df[_0xc8ef('0x38')]!==_0xc8ef('0x39')){logger[_0xc8ef('0x3a')](util['format'](_0xc8ef('0x3b'),_0x18213f['id']),util['inspect'](_0xc932df,{'showHidden':![],'depth':null}));}}_0x3e7c04();});});}function checkTranscribe(){var _0x7e5c5a;var _0x52eac7;var _0x3dbb7a;return db[_0xc8ef('0x3c')][_0xc8ef('0x3d')]({'where':{'transcribeStatus':_0xc8ef('0x3e')}})[_0xc8ef('0x12')](function(_0x3e0398){if(!_0x3e0398||!_0x3e0398[_0xc8ef('0x1e')]){throw new db[(_0xc8ef('0x22'))]['ValidationError'](_0xc8ef('0x3f'));}_0x7e5c5a=_0x3e0398;return db[_0xc8ef('0x40')]['findOne']({'where':{'id':0x1}});})['then'](function(_0xe997a){if(!_0xe997a){throw new db['Sequelize'][(_0xc8ef('0x23'))]('Settings\x20not\x20available');}_0x52eac7=_0xe997a;if(!_0x52eac7[_0xc8ef('0x5')]||!_0x52eac7['transcribeAccountId']||!_0x52eac7[_0xc8ef('0x11')]||!_0x52eac7[_0xc8ef('0x25')]||!_0x52eac7[_0xc8ef('0x41')]){throw new db[(_0xc8ef('0x22'))][(_0xc8ef('0x23'))]('Transcribe\x20not\x20configured');}return db[_0xc8ef('0x27')][_0xc8ef('0x28')]({'where':{'id':_0x52eac7[_0xc8ef('0x42')]}});})[_0xc8ef('0x12')](function(_0x1b460a){if(!_0x1b460a){throw new db[(_0xc8ef('0x22'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x1b460a[_0xc8ef('0xf')]||!_0x1b460a[_0xc8ef('0x10')]){throw new db['Sequelize']['ValidationError'](_0xc8ef('0x2a'));}_0x3dbb7a=_0x1b460a;var _0x1cfab1=[];_0x7e5c5a['forEach'](function(_0x479742){_0x1cfab1[_0xc8ef('0x43')](checkTranscribeJob(_0x479742,_0x52eac7,_0x3dbb7a));});return BPromise[_0xc8ef('0x44')](_0x1cfab1);})[_0xc8ef('0x37')](function(_0xb58103){if(_0xb58103){if(!_0xb58103[_0xc8ef('0x38')]||_0xb58103['name']!==_0xc8ef('0x39')){logger[_0xc8ef('0x3a')](util[_0xc8ef('0x45')](_0xb58103,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 55595e7..1d6688e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1418=['format','YYYY-MM-DD\x20HH:mm:ss','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','map','info','join','timeout'];(function(_0x39079d,_0x2c0855){var _0x5589a7=function(_0x375d70){while(--_0x375d70){_0x39079d['push'](_0x39079d['shift']());}};_0x5589a7(++_0x2c0855);}(_0x1418,0x86));var _0x8141=function(_0x31df3a,_0x3150b3){_0x31df3a=_0x31df3a-0x0;var _0x32d450=_0x1418[_0x31df3a];return _0x32d450;};'use strict';var _=require(_0x8141('0x0'));var moment=require(_0x8141('0x1'));var Redis=require(_0x8141('0x2'));var util=require(_0x8141('0x3'));var config=require(_0x8141('0x4'));var db=require(_0x8141('0x5'))['db'];var logger=require(_0x8141('0x6'))(_0x8141('0x7'));config[_0x8141('0x8')]=_['defaults'](config[_0x8141('0x8')],{'host':_0x8141('0x9'),'port':0x18eb});var io=require(_0x8141('0xa'))(new Redis(config[_0x8141('0x8')]));function closeInteractions(){var _0x31dadb=[];return db[_0x8141('0xb')][_0x8141('0xc')]({'raw':!![],'attributes':['id',_0x8141('0xd')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x8141('0xe')](0x18,_0x8141('0xf'))}}})[_0x8141('0x10')](function(_0x54ca2c){if(_0x54ca2c&&_0x54ca2c['length']){_0x31dadb=_[_0x8141('0x11')](_0x54ca2c||[],'id');logger[_0x8141('0x12')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x31dadb[_0x8141('0x13')]());return db[_0x8141('0xb')]['update']({'closeReason':'system','disposition':_0x8141('0x14'),'closed':!![],'closedAt':moment()[_0x8141('0x15')](_0x8141('0x16'))},{'where':{'id':_0x31dadb}});}})['then'](function(){if(_0x31dadb&&_0x31dadb[_0x8141('0x17')]){logger['info'](_0x8141('0x18'),_0x31dadb[_0x8141('0x13')]());for(var _0x52a7c5=0x0;_0x52a7c5<_0x31dadb[_0x8141('0x17')];_0x52a7c5++){io[_0x8141('0x19')]('whatsappInteraction:update',{'id':_0x31dadb[_0x52a7c5],'closed':!![]});}}})[_0x8141('0x1a')](function(_0x662b8a){logger[_0x8141('0x1b')](_0x8141('0x1c'),_0x662b8a?util[_0x8141('0x1d')](_0x662b8a,{'showHidden':![],'depth':null}):'');});}exports[_0x8141('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x4405=['ioredis','util','../../config/environment','defaults','redis','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','WhatsappInteraction','system','timeout','YYYY-MM-DD\x20HH:mm:ss','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x4405,0xce));var _0x5440=function(_0x5cde8c,_0x1993af){_0x5cde8c=_0x5cde8c-0x0;var _0x44970c=_0x4405[_0x5cde8c];return _0x44970c;};'use strict';var _=require(_0x5440('0x0'));var moment=require(_0x5440('0x1'));var Redis=require(_0x5440('0x2'));var util=require(_0x5440('0x3'));var config=require(_0x5440('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config['redis']=_[_0x5440('0x5')](config[_0x5440('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x52f863=[];return db['WhatsappInteraction'][_0x5440('0x7')]({'raw':!![],'attributes':['id',_0x5440('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x5440('0x9'))}}})[_0x5440('0xa')](function(_0x3510b7){if(_0x3510b7&&_0x3510b7[_0x5440('0xb')]){_0x52f863=_[_0x5440('0xc')](_0x3510b7||[],'id');logger[_0x5440('0xd')](_0x5440('0xe'),_0x52f863[_0x5440('0xf')]());return db[_0x5440('0x10')]['update']({'closeReason':_0x5440('0x11'),'disposition':_0x5440('0x12'),'closed':!![],'closedAt':moment()['format'](_0x5440('0x13'))},{'where':{'id':_0x52f863}});}})[_0x5440('0xa')](function(){if(_0x52f863&&_0x52f863[_0x5440('0xb')]){logger[_0x5440('0xd')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x52f863[_0x5440('0xf')]());for(var _0x1697a6=0x0;_0x1697a6<_0x52f863[_0x5440('0xb')];_0x1697a6++){io[_0x5440('0x14')](_0x5440('0x15'),{'id':_0x52f863[_0x1697a6],'closed':!![]});}}})['catch'](function(_0xd279cf){logger[_0x5440('0x16')](_0x5440('0x17'),_0xd279cf?util[_0x5440('0x18')](_0xd279cf,{'showHidden':![],'depth':null}):'');});}exports[_0x5440('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index bd7768f..c83db95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b05=['innocenzo.biondo','@xcally.com','now','push','CmContact','then','bulkCreate','log','finished\x20populating','contacts1','destroy','CmHopper','hopper2','catch','util','../mysqldb','Innocenzo'];(function(_0x15548f,_0x4d6bdb){var _0x5cf84e=function(_0x31f67b){while(--_0x31f67b){_0x15548f['push'](_0x15548f['shift']());}};_0x5cf84e(++_0x4d6bdb);}(_0x8b05,0x1b7));var _0x58b0=function(_0x4e681e,_0x3242b5){_0x4e681e=_0x4e681e-0x0;var _0x15709a=_0x8b05[_0x4e681e];return _0x15709a;};'use strict';var util=require(_0x58b0('0x0'));var db=require(_0x58b0('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x58b0('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x58b0('0x3')+i+_0x58b0('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x58b0('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x58b0('0x5')](),'updatedAt':Date[_0x58b0('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x58b0('0x6')]({'id':i,'firstName':_0x58b0('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x58b0('0x3')+i+_0x58b0('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x58b0('0x6')]({'id':i,'active':![],'scheduledat':Date[_0x58b0('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x58b0('0x5')]()});}db[_0x58b0('0x7')]['destroy']({'where':{}})[_0x58b0('0x8')](function(){return db['CmContact'][_0x58b0('0x9')](contacts);})[_0x58b0('0x8')](function(){console[_0x58b0('0xa')](_0x58b0('0xb'),_0x58b0('0xc'));return db['CmHopper'][_0x58b0('0xd')]({'where':{}});})['then'](function(){return db[_0x58b0('0xe')][_0x58b0('0x9')](hopper);})[_0x58b0('0x8')](function(){console['log'](_0x58b0('0xb'),'hopper1');return db[_0x58b0('0x7')][_0x58b0('0x9')](contacts2);})[_0x58b0('0x8')](function(){console['log'](_0x58b0('0xb'),'contacts2');return db[_0x58b0('0xe')][_0x58b0('0x9')](hopper2);})[_0x58b0('0x8')](function(){console['log'](_0x58b0('0xb'),_0x58b0('0xf'));})[_0x58b0('0x10')](function(_0x23eeb6){console['log'](_0x23eeb6);});
\ No newline at end of file
+var _0xa249=['CmContact','destroy','then','bulkCreate','log','CmHopper','finished\x20populating','hopper1','catch','util','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now'];(function(_0x4e490c,_0x465e22){var _0xd46d71=function(_0x26ca96){while(--_0x26ca96){_0x4e490c['push'](_0x4e490c['shift']());}};_0xd46d71(++_0x465e22);}(_0xa249,0x149));var _0x9a24=function(_0x1b9dc8,_0x55f61f){_0x1b9dc8=_0x1b9dc8-0x0;var _0x5901b2=_0xa249[_0x1b9dc8];return _0x5901b2;};'use strict';var util=require(_0x9a24('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x9a24('0x1')]({'id':i,'firstName':_0x9a24('0x2')+i,'lastName':_0x9a24('0x3')+i,'phone':0xf879fb460+i,'email':_0x9a24('0x4')+i+_0x9a24('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x9a24('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x9a24('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x9a24('0x6')](),'updatedAt':Date[_0x9a24('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x9a24('0x1')]({'id':i,'firstName':_0x9a24('0x2')+i,'lastName':_0x9a24('0x3')+i,'phone':0xf879fb460+i,'email':_0x9a24('0x4')+i+_0x9a24('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x9a24('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x9a24('0x6')]()});}db[_0x9a24('0x7')][_0x9a24('0x8')]({'where':{}})[_0x9a24('0x9')](function(){return db[_0x9a24('0x7')][_0x9a24('0xa')](contacts);})[_0x9a24('0x9')](function(){console[_0x9a24('0xb')]('finished\x20populating','contacts1');return db[_0x9a24('0xc')][_0x9a24('0x8')]({'where':{}});})[_0x9a24('0x9')](function(){return db[_0x9a24('0xc')]['bulkCreate'](hopper);})[_0x9a24('0x9')](function(){console['log'](_0x9a24('0xd'),_0x9a24('0xe'));return db['CmContact'][_0x9a24('0xa')](contacts2);})['then'](function(){console[_0x9a24('0xb')](_0x9a24('0xd'),'contacts2');return db[_0x9a24('0xc')][_0x9a24('0xa')](hopper2);})[_0x9a24('0x9')](function(){console[_0x9a24('0xb')](_0x9a24('0xd'),'hopper2');})[_0x9a24('0xf')](function(_0x46971b){console[_0x9a24('0xb')](_0x46971b);});
\ No newline at end of file
index 5d8a558..fa7ecbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f47=['wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','../mysqldb','push','agent','format','%s%s','%s%s@xcally.com','password','friend','udp'];(function(_0x30a761,_0x2e6e9c){var _0x9971e4=function(_0x3e4b27){while(--_0x3e4b27){_0x30a761['push'](_0x30a761['shift']());}};_0x9971e4(++_0x2e6e9c);}(_0x4f47,0x1af));var _0x74f4=function(_0x373436,_0x39d99c){_0x373436=_0x373436-0x0;var _0x5bba01=_0x4f47[_0x373436];return _0x5bba01;};'use strict';var util=require('util');var db=require(_0x74f4('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x74f4('0x1')]({'name':util['format']('%s%s',_0x74f4('0x2'),i),'fullname':util[_0x74f4('0x3')](_0x74f4('0x4'),_0x74f4('0x2'),i),'email':util['format'](_0x74f4('0x5'),_0x74f4('0x2'),i),'role':_0x74f4('0x2'),'password':_0x74f4('0x6'),'internal':0xfa0+i,'type':_0x74f4('0x7'),'transport':[_0x74f4('0x8'),'ws',_0x74f4('0x9')],'disallow':[_0x74f4('0xa')],'allow':[_0x74f4('0xb')],'defaultuser':util[_0x74f4('0x3')](_0x74f4('0x4'),_0x74f4('0x2'),i),'encryption':_0x74f4('0xc'),'avpf':_0x74f4('0xc'),'force_avp':_0x74f4('0xc'),'icesupport':_0x74f4('0xc'),'dtlsenable':_0x74f4('0xc'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x74f4('0xd'),'dtlssetup':_0x74f4('0xe'),'callerid':util[_0x74f4('0x3')](_0x74f4('0xf'),util[_0x74f4('0x3')]('%s%s',_0x74f4('0x2'),i),0xfa0+i)});}db[_0x74f4('0x10')][_0x74f4('0x11')](users)[_0x74f4('0x12')](function(){console[_0x74f4('0x13')](_0x74f4('0x14'));})[_0x74f4('0x15')](function(_0x451281){console['log'](_0x451281);});
\ No newline at end of file
+var _0xced8=['then','log','util','push','format','%s%s','agent','%s%s@xcally.com','password','friend','wss','all','ulaw','yes','actpass','\x22%s\x22\x20<%s>'];(function(_0x4519dc,_0x3e1611){var _0x3d8eba=function(_0x5388b9){while(--_0x5388b9){_0x4519dc['push'](_0x4519dc['shift']());}};_0x3d8eba(++_0x3e1611);}(_0xced8,0x132));var _0x8ced=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xced8[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x8ced('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x8ced('0x1')]({'name':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'fullname':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'email':util['format'](_0x8ced('0x5'),_0x8ced('0x4'),i),'role':_0x8ced('0x4'),'password':_0x8ced('0x6'),'internal':0xfa0+i,'type':_0x8ced('0x7'),'transport':['udp','ws',_0x8ced('0x8')],'disallow':[_0x8ced('0x9')],'allow':[_0x8ced('0xa')],'defaultuser':util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),'encryption':'yes','avpf':_0x8ced('0xb'),'force_avp':_0x8ced('0xb'),'icesupport':_0x8ced('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x8ced('0xc'),'callerid':util[_0x8ced('0x2')](_0x8ced('0xd'),util[_0x8ced('0x2')](_0x8ced('0x3'),_0x8ced('0x4'),i),0xfa0+i)});}db['User']['bulkCreate'](users)[_0x8ced('0xe')](function(){console[_0x8ced('0xf')]('add\x20user');})['catch'](function(_0x28c9de){console['log'](_0x28c9de);});
\ No newline at end of file
index 4d240d9..e2f62e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc247=['OpenchannelInteraction','OpenchannelInteractions','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','VoiceQueue','Trunks','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','map','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','./environment','name','role','agent','telephone','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','User','where','Campaign','type','%s:queue:%s','Agents','length','format','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions'];(function(_0x35ace7,_0xbd1eaa){var _0x203523=function(_0x455ff){while(--_0x455ff){_0x35ace7['push'](_0x35ace7['shift']());}};_0x203523(++_0xbd1eaa);}(_0xc247,0xfe));var _0x7c24=function(_0x4e0a03,_0x5eb6b0){_0x4e0a03=_0x4e0a03-0x0;var _0x2478fc=_0xc247[_0x4e0a03];return _0x2478fc;};'use strict';var _=require(_0x7c24('0x0'));var util=require(_0x7c24('0x1'));var BPromise=require(_0x7c24('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x7c24('0x3'));var queryQueues={'attributes':['id',_0x7c24('0x4')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0x7c24('0x4'),_0x7c24('0x5')],'raw':!![],'where':{'role':_0x7c24('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7c24('0x4')],'where':{'role':_0x7c24('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x7c24('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x7c24('0x4')],'where':{'role':_0x7c24('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7c24('0x4'),'type'],'where':{'type':_0x7c24('0x8')}};function getAssociatedResources(_0x517f4c,_0x5e72bc,_0x2a4474){return db[_0x7c24('0x9')][_0x7c24('0xa')]({'where':{'name':_0x517f4c,'userProfileId':_0x5e72bc},'raw':!![]})[_0x7c24('0xb')](function(_0x53e203){if(_0x53e203){if(_0x53e203[_0x7c24('0xc')]){switch(_0x517f4c){case'VoiceQueues':case _0x7c24('0xd'):case _0x7c24('0xe'):case _0x7c24('0xf'):case'MailQueues':case _0x7c24('0x10'):case _0x7c24('0x11'):return db[_0x2a4474][_0x7c24('0x12')](queryQueues);case _0x7c24('0x13'):return db[_0x2a4474]['findAll'](queryTelephones);case'Trunks':return db[_0x2a4474][_0x7c24('0x12')](queryTrunks);case _0x7c24('0x14'):return db[_0x2a4474][_0x7c24('0x12')](queryCampaigns);}}else{return db[_0x7c24('0x15')][_0x7c24('0x12')]({'attributes':['resourceId'],'where':{'sectionId':_0x53e203['id']},'raw':!![]})['then'](function(_0x1fbd5a){if(_0x1fbd5a){var _0x188656={'where':{'id':_['map'](_0x1fbd5a,_0x7c24('0x16'))},'raw':!![]};switch(_0x2a4474){case _0x7c24('0x17'):_0x188656[_0x7c24('0x18')][_0x7c24('0x5')]='telephone';break;case _0x7c24('0x19'):_0x188656[_0x7c24('0x18')][_0x7c24('0x1a')]=_0x7c24('0x8');break;}return db[_0x2a4474][_0x7c24('0x12')](_0x188656);}else{return[];}});}}else{return[];}})['then'](function(_0x477f06){return _0x477f06;});}function joinOrLeaveQueues(_0x53e577,_0x26f5aa,_0x22e23a,_0x58272a){_0x53e577[_0x26f5aa](util['format'](_0x7c24('0x1b'),_0x22e23a,_0x58272a[_0x7c24('0x4')]));if(_0x58272a[_0x7c24('0x1c')]){for(var _0x2a0b98=0x0;_0x2a0b98<_0x58272a['Agents'][_0x7c24('0x1d')];_0x2a0b98+=0x1){_0x53e577[_0x26f5aa](util[_0x7c24('0x1e')](_0x7c24('0x1f'),_0x58272a[_0x7c24('0x1c')][_0x2a0b98][_0x7c24('0x4')]));}}}function joinOrLeave(_0x76a231,_0x569897,_0x2f4a2f){var _0x216909;if(_0x76a231[_0x7c24('0x20')][_0x7c24('0x21')]['id']){db[_0x7c24('0x17')][_0x7c24('0x22')]({'attributes':['id',_0x7c24('0x4'),_0x7c24('0x5'),_0x7c24('0x23')],'where':{'id':_0x76a231[_0x7c24('0x20')][_0x7c24('0x21')]['id']},'include':[{'model':db[_0x7c24('0x24')],'as':_0x7c24('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c24('0x26')],'as':_0x7c24('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c24('0x28')],'as':_0x7c24('0x29'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x7c24('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c24('0x2b')],'as':_0x7c24('0x2c'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x7c24('0xb')](function(_0x465b56){if(_0x465b56){_0x216909=_0x465b56;_0x76a231[_0x569897](util[_0x7c24('0x1e')]('user:%s',_0x465b56['name']));var _0x1f1717=[];switch(_0x465b56[_0x7c24('0x5')]){case'admin':_0x76a231[_0x569897]('voice:inbound');_0x76a231[_0x569897](_0x7c24('0x2d'));if(queryQueues[_0x7c24('0x2e')]('include')){delete queryQueues[_0x7c24('0x2f')];}_0x1f1717[_0x7c24('0x30')](db['VoiceQueue']['findAll'](queryQueues));_0x1f1717['push'](db[_0x7c24('0x31')][_0x7c24('0x12')](queryQueues));_0x1f1717[_0x7c24('0x30')](db[_0x7c24('0x32')][_0x7c24('0x12')](queryQueues));_0x1f1717[_0x7c24('0x30')](db[_0x7c24('0x33')]['findAll'](queryQueues));_0x1f1717['push'](db[_0x7c24('0x34')][_0x7c24('0x12')](queryQueues));_0x1f1717['push'](db[_0x7c24('0x35')][_0x7c24('0x12')](queryQueues));_0x1f1717[_0x7c24('0x30')](db[_0x7c24('0x36')]['findAll'](queryQueues));_0x1f1717[_0x7c24('0x30')](db['User'][_0x7c24('0x12')](queryTelephones));_0x1f1717[_0x7c24('0x30')](db[_0x7c24('0x37')][_0x7c24('0x12')](queryTrunks));_0x1f1717[_0x7c24('0x30')](db[_0x7c24('0x19')][_0x7c24('0x12')](queryCampaigns));_0x1f1717['push'](db[_0x7c24('0x17')][_0x7c24('0x12')](queryAgents));break;case _0x7c24('0x38'):_0x76a231[_0x569897](_0x7c24('0x39'));_0x76a231[_0x569897](_0x7c24('0x2d'));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('VoiceQueues',_0x465b56[_0x7c24('0x23')],_0x7c24('0x3a')));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('ChatQueues',_0x465b56[_0x7c24('0x23')],_0x7c24('0x31')));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('FaxQueues',_0x465b56['userProfileId'],_0x7c24('0x32')));_0x1f1717[_0x7c24('0x30')](getAssociatedResources(_0x7c24('0xf'),_0x465b56['userProfileId'],_0x7c24('0x33')));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('MailQueues',_0x465b56[_0x7c24('0x23')],_0x7c24('0x34')));_0x1f1717['push'](getAssociatedResources(_0x7c24('0x10'),_0x465b56[_0x7c24('0x23')],'OpenchannelQueue'));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('WhatsappQueues',_0x465b56['userProfileId'],'WhatsappQueue'));_0x1f1717[_0x7c24('0x30')](getAssociatedResources(_0x7c24('0x13'),_0x465b56[_0x7c24('0x23')],'User'));_0x1f1717[_0x7c24('0x30')](getAssociatedResources(_0x7c24('0x3b'),_0x465b56[_0x7c24('0x23')],_0x7c24('0x37')));_0x1f1717[_0x7c24('0x30')](getAssociatedResources('IvrCampaigns',_0x465b56[_0x7c24('0x23')],_0x7c24('0x19')));_0x1f1717[_0x7c24('0x30')](db['User']['findAll'](queryAgents));break;case _0x7c24('0x6'):_0x76a231[_0x569897](_0x7c24('0x39'));_0x76a231[_0x569897](_0x7c24('0x2d'));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x3c')]({'attributes':['id',_0x7c24('0x4')]}));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x3d')]({'attributes':['id',_0x7c24('0x4')]}));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x3e')]({'attributes':['id',_0x7c24('0x4')]}));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x3f')]({'attributes':['id','name']}));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x40')]({'attributes':['id',_0x7c24('0x4')]}));_0x1f1717['push'](_0x465b56['getOpenchannelQueues']({'attributes':['id',_0x7c24('0x4')]}));_0x1f1717[_0x7c24('0x30')](_0x465b56[_0x7c24('0x41')]({'attributes':['id',_0x7c24('0x4')]}));break;}return BPromise['all'](_0x1f1717);}})[_0x7c24('0xb')](function(_0x20f995){if(_0x20f995&&_0x20f995[_0x7c24('0x1d')]){for(var _0x311d56=0x0;_0x311d56<_0x20f995[_0x7c24('0x1d')];_0x311d56+=0x1){for(var _0x11d1db=0x0;_0x11d1db<_0x20f995[_0x311d56][_0x7c24('0x1d')];_0x11d1db+=0x1){switch(_0x311d56){case 0x0:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x42'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x1:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x43'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x2:joinOrLeaveQueues(_0x76a231,_0x569897,'fax',_0x20f995[_0x311d56][_0x11d1db]);break;case 0x3:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x44'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x4:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x45'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x5:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x46'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x6:joinOrLeaveQueues(_0x76a231,_0x569897,_0x7c24('0x47'),_0x20f995[_0x311d56][_0x11d1db]);break;case 0x7:if(_0x216909[_0x7c24('0x5')]!==_0x7c24('0x6'))_0x76a231[_0x569897](util[_0x7c24('0x1e')](_0x7c24('0x48'),_0x20f995[_0x311d56][_0x11d1db][_0x7c24('0x4')]));break;case 0x8:if(_0x216909['role']!==_0x7c24('0x6'))_0x76a231[_0x569897](util[_0x7c24('0x1e')](_0x7c24('0x49'),_0x20f995[_0x311d56][_0x11d1db]['name']));break;case 0x9:if(_0x216909['role']!=='agent')_0x76a231[_0x569897](util[_0x7c24('0x1e')]('campaign:%s:%s',_0x20f995[_0x311d56][_0x11d1db][_0x7c24('0x1a')],_0x20f995[_0x311d56][_0x11d1db][_0x7c24('0x4')]));break;case 0xa:_0x76a231[_0x569897](util[_0x7c24('0x1e')]('user:%s',_0x20f995[_0x311d56][_0x11d1db][_0x7c24('0x4')]));break;}}}}})[_0x7c24('0xb')](function(){if(_0x569897===_0x7c24('0x4a')){var _0x2ad091=_[_0x7c24('0x4b')](_0x216909[_0x7c24('0x25')],'id');return _0x216909['removeChatInteractions'](_0x2ad091)[_0x7c24('0xb')](function(){for(var _0x44b6b0=0x0;_0x44b6b0<_0x2ad091[_0x7c24('0x1d')];_0x44b6b0+=0x1){_0x2f4a2f['emit'](_0x7c24('0x4c'),{'ChatInteractionId':Number(_0x2ad091[_0x44b6b0]),'UserId':Number(_0x216909['id'])});}});}})['then'](function(){if(_0x569897===_0x7c24('0x4a')){var _0x9f6619=_['map'](_0x216909[_0x7c24('0x27')],'id');return _0x216909[_0x7c24('0x4d')](_0x9f6619)[_0x7c24('0xb')](function(){for(var _0x12e938=0x0;_0x12e938<_0x9f6619[_0x7c24('0x1d')];_0x12e938+=0x1){_0x2f4a2f[_0x7c24('0x4e')](_0x7c24('0x4f'),{'MailInteractionId':Number(_0x9f6619[_0x12e938]),'UserId':Number(_0x216909['id'])});}});}})[_0x7c24('0xb')](function(){if(_0x569897===_0x7c24('0x4a')){var _0x1cb43e=_[_0x7c24('0x4b')](_0x216909[_0x7c24('0x29')],'id');return _0x216909[_0x7c24('0x50')](_0x1cb43e)[_0x7c24('0xb')](function(){for(var _0x35c1d2=0x0;_0x35c1d2<_0x1cb43e[_0x7c24('0x1d')];_0x35c1d2+=0x1){_0x2f4a2f['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1cb43e[_0x35c1d2]),'UserId':Number(_0x216909['id'])});}});}})[_0x7c24('0xb')](function(){if(_0x569897==='leave'){var _0x4fb9fc=_['map'](_0x216909['SmsInteractions'],'id');return _0x216909['removeSmsInteractions'](_0x4fb9fc)['then'](function(){for(var _0x243eeb=0x0;_0x243eeb<_0x4fb9fc['length'];_0x243eeb+=0x1){_0x2f4a2f[_0x7c24('0x4e')](_0x7c24('0x51'),{'SmsInteractionId':Number(_0x4fb9fc[_0x243eeb]),'UserId':Number(_0x216909['id'])});}});}})['then'](function(){if(_0x569897===_0x7c24('0x4a')){var _0xaa4fa1=_[_0x7c24('0x4b')](_0x216909['OpenchannelInteractions'],'id');return _0x216909[_0x7c24('0x52')](_0xaa4fa1)[_0x7c24('0xb')](function(){for(var _0x3b71de=0x0;_0x3b71de<_0xaa4fa1[_0x7c24('0x1d')];_0x3b71de+=0x1){_0x2f4a2f['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xaa4fa1[_0x3b71de]),'UserId':Number(_0x216909['id'])});}});}})[_0x7c24('0xb')](function(){if(_0x569897===_0x7c24('0x4a')){var _0x43a2b9=_['map'](_0x216909[_0x7c24('0x53')],'id');return _0x216909[_0x7c24('0x54')](_0x43a2b9)[_0x7c24('0xb')](function(){for(var _0x43baf3=0x0;_0x43baf3<_0x43a2b9[_0x7c24('0x1d')];_0x43baf3+=0x1){_0x2f4a2f[_0x7c24('0x4e')](_0x7c24('0x55'),{'WhatsappInteractionId':Number(_0x43a2b9[_0x43baf3]),'UserId':Number(_0x216909['id'])});}});}})['catch'](function(_0x258910){_0x76a231[_0x7c24('0x56')](_0x258910);});}}function onDisconnect(_0x598ca6,_0x4183ff){joinOrLeave(_0x598ca6,_0x7c24('0x4a'),_0x4183ff);}function onConnect(_0x229e5e){joinOrLeave(_0x229e5e,_0x7c24('0x57'));}exports[_0x7c24('0x58')]=function(_0x4495ab){_0x4495ab['on'](_0x7c24('0x59'),function(_0x3e0341){_0x3e0341['setMaxListeners'](0x0);_0x3e0341[_0x7c24('0x5a')]=_0x3e0341[_0x7c24('0x5b')][_0x7c24('0x59')][_0x7c24('0x5c')]+':'+_0x3e0341[_0x7c24('0x5b')][_0x7c24('0x59')][_0x7c24('0x5d')];_0x3e0341[_0x7c24('0x5e')]=new Date();_0x3e0341[_0x7c24('0x56')]=function(_0x5e42fb){console['log'](_0x7c24('0x5f')+_0x3e0341[_0x7c24('0x60')][_0x7c24('0x4')]+'['+_0x3e0341[_0x7c24('0x5a')]+']',_0x5e42fb);};_0x3e0341['on'](_0x7c24('0x61'),function(){onDisconnect(_0x3e0341,_0x4495ab);_0x3e0341['log']('DISCONNECTED');});onConnect(_0x3e0341);_0x3e0341[_0x7c24('0x56')](_0x7c24('0x62'));});};
\ No newline at end of file
+var _0xbaf7=['emit','user_has_chat_interactions:remove','leave','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','log','join','connection','setMaxListeners','address','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','role','agent','telephone','type','ivr','findOne','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','then','format','%s:queue:%s','length','user:%s','handshake','query','find','ChatInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','user','userProfileId','ChatQueue','FaxQueues','FaxQueue','WhatsappQueue','Trunk','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','whatsapp','telephone:%s','campaign:%s:%s','ChatInteractions','removeChatInteractions'];(function(_0x4e0d05,_0x1252ef){var _0x568b50=function(_0x5f3071){while(--_0x5f3071){_0x4e0d05['push'](_0x4e0d05['shift']());}};_0x568b50(++_0x1252ef);}(_0xbaf7,0x137));var _0x7baf=function(_0x5a57c5,_0x485517){_0x5a57c5=_0x5a57c5-0x0;var _0xc29694=_0xbaf7[_0x5a57c5];return _0xc29694;};'use strict';var _=require(_0x7baf('0x0'));var util=require(_0x7baf('0x1'));var BPromise=require(_0x7baf('0x2'));var db=require(_0x7baf('0x3'))['db'];var config=require(_0x7baf('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x7baf('0x5'),'model':db[_0x7baf('0x6')],'attributes':['id',_0x7baf('0x7'),_0x7baf('0x8')],'raw':!![],'where':{'role':_0x7baf('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7baf('0x7')],'where':{'role':_0x7baf('0xa')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x7baf('0x7')],'where':{'role':_0x7baf('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7baf('0x7'),_0x7baf('0xb')],'where':{'type':_0x7baf('0xc')}};function getAssociatedResources(_0x59ef84,_0x56997e,_0x38a8bf){return db['UserProfileSection'][_0x7baf('0xd')]({'where':{'name':_0x59ef84,'userProfileId':_0x56997e},'raw':!![]})['then'](function(_0x59303b){if(_0x59303b){if(_0x59303b[_0x7baf('0xe')]){switch(_0x59ef84){case _0x7baf('0xf'):case _0x7baf('0x10'):case'FaxQueues':case _0x7baf('0x11'):case _0x7baf('0x12'):case _0x7baf('0x13'):case _0x7baf('0x14'):return db[_0x38a8bf][_0x7baf('0x15')](queryQueues);case _0x7baf('0x16'):return db[_0x38a8bf][_0x7baf('0x15')](queryTelephones);case _0x7baf('0x17'):return db[_0x38a8bf]['findAll'](queryTrunks);case _0x7baf('0x18'):return db[_0x38a8bf]['findAll'](queryCampaigns);}}else{return db[_0x7baf('0x19')][_0x7baf('0x15')]({'attributes':[_0x7baf('0x1a')],'where':{'sectionId':_0x59303b['id']},'raw':!![]})['then'](function(_0x2ed6ac){if(_0x2ed6ac){var _0x264265={'where':{'id':_[_0x7baf('0x1b')](_0x2ed6ac,_0x7baf('0x1a'))},'raw':!![]};switch(_0x38a8bf){case _0x7baf('0x6'):_0x264265[_0x7baf('0x1c')][_0x7baf('0x8')]=_0x7baf('0xa');break;case _0x7baf('0x1d'):_0x264265[_0x7baf('0x1c')][_0x7baf('0xb')]=_0x7baf('0xc');break;}return db[_0x38a8bf][_0x7baf('0x15')](_0x264265);}else{return[];}});}}else{return[];}})[_0x7baf('0x1e')](function(_0x9932f4){return _0x9932f4;});}function joinOrLeaveQueues(_0x2890e1,_0x33c58e,_0x3211e8,_0x59b38d){_0x2890e1[_0x33c58e](util[_0x7baf('0x1f')](_0x7baf('0x20'),_0x3211e8,_0x59b38d['name']));if(_0x59b38d[_0x7baf('0x5')]){for(var _0xa7ee39=0x0;_0xa7ee39<_0x59b38d[_0x7baf('0x5')][_0x7baf('0x21')];_0xa7ee39+=0x1){_0x2890e1[_0x33c58e](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x59b38d[_0x7baf('0x5')][_0xa7ee39][_0x7baf('0x7')]));}}}function joinOrLeave(_0x420ad4,_0x56aa53,_0x549a1c){var _0xabf63e;if(_0x420ad4[_0x7baf('0x23')][_0x7baf('0x24')]['id']){db[_0x7baf('0x6')][_0x7baf('0x25')]({'attributes':['id','name',_0x7baf('0x8'),'userProfileId'],'where':{'id':_0x420ad4[_0x7baf('0x23')]['query']['id']},'include':[{'model':db[_0x7baf('0x26')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x7baf('0x27'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x7baf('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x29')],'as':_0x7baf('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x2b')],'as':_0x7baf('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x7baf('0x2d')],'as':_0x7baf('0x2e'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x267809){if(_0x267809){_0xabf63e=_0x267809;_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x267809[_0x7baf('0x7')]));var _0x16f8fb=[];switch(_0x267809[_0x7baf('0x8')]){case _0x7baf('0x2f'):_0x420ad4[_0x56aa53](_0x7baf('0x30'));_0x420ad4[_0x56aa53](_0x7baf('0x31'));if(queryQueues['hasOwnProperty'](_0x7baf('0x32'))){delete queryQueues[_0x7baf('0x32')];}_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x34')][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['ChatQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['FaxQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x35')][_0x7baf('0x15')](queryQueues));_0x16f8fb['push'](db[_0x7baf('0x36')][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x37')]['findAll'](queryQueues));_0x16f8fb[_0x7baf('0x33')](db['WhatsappQueue'][_0x7baf('0x15')](queryQueues));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x6')]['findAll'](queryTelephones));_0x16f8fb[_0x7baf('0x33')](db['Trunk'][_0x7baf('0x15')](queryTrunks));_0x16f8fb['push'](db[_0x7baf('0x1d')][_0x7baf('0x15')](queryCampaigns));_0x16f8fb[_0x7baf('0x33')](db[_0x7baf('0x6')][_0x7baf('0x15')](queryAgents));break;case _0x7baf('0x38'):_0x420ad4[_0x56aa53](_0x7baf('0x30'));_0x420ad4[_0x56aa53]('voice:outbound');_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('VoiceQueues',_0x267809[_0x7baf('0x39')],'VoiceQueue'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x10'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3a')));_0x16f8fb['push'](getAssociatedResources(_0x7baf('0x3b'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3c')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x11'),_0x267809['userProfileId'],_0x7baf('0x35')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x12'),_0x267809[_0x7baf('0x39')],_0x7baf('0x36')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('OpenchannelQueues',_0x267809['userProfileId'],'OpenchannelQueue'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x14'),_0x267809[_0x7baf('0x39')],_0x7baf('0x3d')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources(_0x7baf('0x16'),_0x267809[_0x7baf('0x39')],'User'));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('Trunks',_0x267809[_0x7baf('0x39')],_0x7baf('0x3e')));_0x16f8fb[_0x7baf('0x33')](getAssociatedResources('IvrCampaigns',_0x267809['userProfileId'],_0x7baf('0x1d')));_0x16f8fb[_0x7baf('0x33')](db['User']['findAll'](queryAgents));break;case'agent':_0x420ad4[_0x56aa53]('voice:inbound');_0x420ad4[_0x56aa53](_0x7baf('0x31'));_0x16f8fb[_0x7baf('0x33')](_0x267809['getVoiceQueues']({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb[_0x7baf('0x33')](_0x267809['getChatQueues']({'attributes':['id','name']}));_0x16f8fb['push'](_0x267809[_0x7baf('0x3f')]({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb[_0x7baf('0x33')](_0x267809['getSmsQueues']({'attributes':['id',_0x7baf('0x7')]}));_0x16f8fb['push'](_0x267809[_0x7baf('0x40')]({'attributes':['id','name']}));_0x16f8fb[_0x7baf('0x33')](_0x267809[_0x7baf('0x41')]({'attributes':['id','name']}));_0x16f8fb[_0x7baf('0x33')](_0x267809[_0x7baf('0x42')]({'attributes':['id',_0x7baf('0x7')]}));break;}return BPromise[_0x7baf('0x43')](_0x16f8fb);}})[_0x7baf('0x1e')](function(_0x5be518){if(_0x5be518&&_0x5be518['length']){for(var _0x2d5eb0=0x0;_0x2d5eb0<_0x5be518['length'];_0x2d5eb0+=0x1){for(var _0x1a0839=0x0;_0x1a0839<_0x5be518[_0x2d5eb0][_0x7baf('0x21')];_0x1a0839+=0x1){switch(_0x2d5eb0){case 0x0:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x44'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x1:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x45'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x2:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x46'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x3:joinOrLeaveQueues(_0x420ad4,_0x56aa53,'sms',_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x4:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x47'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x5:joinOrLeaveQueues(_0x420ad4,_0x56aa53,'openchannel',_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x6:joinOrLeaveQueues(_0x420ad4,_0x56aa53,_0x7baf('0x48'),_0x5be518[_0x2d5eb0][_0x1a0839]);break;case 0x7:if(_0xabf63e[_0x7baf('0x8')]!==_0x7baf('0x9'))_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x49'),_0x5be518[_0x2d5eb0][_0x1a0839]['name']));break;case 0x8:if(_0xabf63e[_0x7baf('0x8')]!==_0x7baf('0x9'))_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')]('trunk:%s',_0x5be518[_0x2d5eb0][_0x1a0839][_0x7baf('0x7')]));break;case 0x9:if(_0xabf63e[_0x7baf('0x8')]!=='agent')_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x4a'),_0x5be518[_0x2d5eb0][_0x1a0839]['type'],_0x5be518[_0x2d5eb0][_0x1a0839]['name']));break;case 0xa:_0x420ad4[_0x56aa53](util[_0x7baf('0x1f')](_0x7baf('0x22'),_0x5be518[_0x2d5eb0][_0x1a0839][_0x7baf('0x7')]));break;}}}}})[_0x7baf('0x1e')](function(){if(_0x56aa53==='leave'){var _0x523067=_['map'](_0xabf63e[_0x7baf('0x4b')],'id');return _0xabf63e[_0x7baf('0x4c')](_0x523067)[_0x7baf('0x1e')](function(){for(var _0x440af5=0x0;_0x440af5<_0x523067[_0x7baf('0x21')];_0x440af5+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x4e'),{'ChatInteractionId':Number(_0x523067[_0x440af5]),'UserId':Number(_0xabf63e['id'])});}});}})[_0x7baf('0x1e')](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x788c5d=_[_0x7baf('0x1b')](_0xabf63e[_0x7baf('0x27')],'id');return _0xabf63e[_0x7baf('0x50')](_0x788c5d)[_0x7baf('0x1e')](function(){for(var _0x260a5d=0x0;_0x260a5d<_0x788c5d[_0x7baf('0x21')];_0x260a5d+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x788c5d[_0x260a5d]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x3a14f4=_['map'](_0xabf63e['FaxInteractions'],'id');return _0xabf63e[_0x7baf('0x51')](_0x3a14f4)[_0x7baf('0x1e')](function(){for(var _0x50a63a=0x0;_0x50a63a<_0x3a14f4['length'];_0x50a63a+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x52'),{'FaxInteractionId':Number(_0x3a14f4[_0x50a63a]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53==='leave'){var _0x54e4d0=_['map'](_0xabf63e[_0x7baf('0x2a')],'id');return _0xabf63e['removeSmsInteractions'](_0x54e4d0)[_0x7baf('0x1e')](function(){for(var _0x1f4451=0x0;_0x1f4451<_0x54e4d0[_0x7baf('0x21')];_0x1f4451+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x54e4d0[_0x1f4451]),'UserId':Number(_0xabf63e['id'])});}});}})[_0x7baf('0x1e')](function(){if(_0x56aa53==='leave'){var _0x106158=_[_0x7baf('0x1b')](_0xabf63e['OpenchannelInteractions'],'id');return _0xabf63e[_0x7baf('0x53')](_0x106158)['then'](function(){for(var _0xc59f46=0x0;_0xc59f46<_0x106158['length'];_0xc59f46+=0x1){_0x549a1c[_0x7baf('0x4d')](_0x7baf('0x54'),{'OpenchannelInteractionId':Number(_0x106158[_0xc59f46]),'UserId':Number(_0xabf63e['id'])});}});}})['then'](function(){if(_0x56aa53===_0x7baf('0x4f')){var _0x43fd75=_[_0x7baf('0x1b')](_0xabf63e[_0x7baf('0x2e')],'id');return _0xabf63e['removeWhatsappInteractions'](_0x43fd75)['then'](function(){for(var _0x596347=0x0;_0x596347<_0x43fd75[_0x7baf('0x21')];_0x596347+=0x1){_0x549a1c[_0x7baf('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x43fd75[_0x596347]),'UserId':Number(_0xabf63e['id'])});}});}})['catch'](function(_0x5dc42d){_0x420ad4[_0x7baf('0x55')](_0x5dc42d);});}}function onDisconnect(_0x2fd049,_0x39bee7){joinOrLeave(_0x2fd049,_0x7baf('0x4f'),_0x39bee7);}function onConnect(_0x331781){joinOrLeave(_0x331781,_0x7baf('0x56'));}exports['default']=function(_0xb70067){_0xb70067['on'](_0x7baf('0x57'),function(_0x51fd91){_0x51fd91[_0x7baf('0x58')](0x0);_0x51fd91[_0x7baf('0x59')]=_0x51fd91[_0x7baf('0x5a')][_0x7baf('0x57')]['remoteAddress']+':'+_0x51fd91[_0x7baf('0x5a')]['connection'][_0x7baf('0x5b')];_0x51fd91[_0x7baf('0x5c')]=new Date();_0x51fd91[_0x7baf('0x55')]=function(_0x80bf0c){console[_0x7baf('0x55')](_0x7baf('0x5d')+_0x51fd91[_0x7baf('0x5e')][_0x7baf('0x7')]+'['+_0x51fd91[_0x7baf('0x59')]+']',_0x80bf0c);};_0x51fd91['on'](_0x7baf('0x5f'),function(){onDisconnect(_0x51fd91,_0xb70067);_0x51fd91[_0x7baf('0x55')]('DISCONNECTED');});onConnect(_0x51fd91);_0x51fd91[_0x7baf('0x55')](_0x7baf('0x60'));});};
\ No newline at end of file
index 99f1658..46f832d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5f=['hasOwnProperty','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','ChatInteraction','newinteraction','Chat','afterUpdate','closedinteraction','ChatMessage','afterCreate','ChatOfflineMessage','SmsInteraction','Sms','newmessage','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','code','motionChannel','resolve','undefined','ContactId','Sequelize','contact','UserId','interface','format','name','agent','channel','outgoingmessage','AfterCreateMessage','event','get','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','SIP/%s','catch','AfterCreate','changed','closed','substatus','QueryTypes','AfterUpdate','find','fullname','email','internal','default','length'];(function(_0x459ad5,_0x278b15){var _0x2e097d=function(_0x367c7e){while(--_0x367c7e){_0x459ad5['push'](_0x459ad5['shift']());}};_0x2e097d(++_0x278b15);}(_0x7d5f,0x172));var _0xf7d5=function(_0x355792,_0x1d5022){_0x355792=_0x355792-0x0;var _0x430c8f=_0x7d5f[_0x355792];return _0x430c8f;};'use strict';var util=require(_0xf7d5('0x0'));var db=require(_0xf7d5('0x1'))['db'];var jayson=require(_0xf7d5('0x2'));var logger=require(_0xf7d5('0x3'))(_0xf7d5('0x4'));var client=jayson[_0xf7d5('0x5')]['http']({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xf7d5('0x6'),'event':'afterCreate','condition':_0xf7d5('0x7'),'callback':afterCreate},{'channel':_0xf7d5('0x8'),'model':_0xf7d5('0x6'),'event':_0xf7d5('0x9'),'condition':_0xf7d5('0xa'),'callback':afterUpdate},{'channel':_0xf7d5('0x8'),'model':_0xf7d5('0xb'),'event':_0xf7d5('0xc'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf7d5('0x8'),'model':_0xf7d5('0xd'),'event':_0xf7d5('0xc'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0xf7d5('0xe'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0xf7d5('0xf'),'model':_0xf7d5('0xe'),'event':'afterUpdate','condition':_0xf7d5('0xa'),'callback':afterUpdate},{'channel':'Sms','model':'SmsMessage','event':'afterCreate','condition':_0xf7d5('0x10'),'callback':afterCreateMessage},{'channel':_0xf7d5('0x11'),'model':'WhatsappInteraction','event':_0xf7d5('0xc'),'condition':'newinteraction','callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0xf7d5('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xf7d5('0x11'),'model':_0xf7d5('0x12'),'event':'afterCreate','condition':_0xf7d5('0x10'),'callback':afterCreateMessage},{'channel':_0xf7d5('0x13'),'model':_0xf7d5('0x14'),'event':_0xf7d5('0xc'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xf7d5('0x13'),'model':_0xf7d5('0x14'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0xf7d5('0x15'),'event':_0xf7d5('0xc'),'condition':_0xf7d5('0x10'),'callback':afterCreateMessage},{'channel':_0xf7d5('0x16'),'model':_0xf7d5('0x17'),'event':_0xf7d5('0xc'),'condition':_0xf7d5('0x7'),'callback':afterCreate},{'channel':_0xf7d5('0x16'),'model':'MailInteraction','event':_0xf7d5('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':_0xf7d5('0x18'),'event':_0xf7d5('0xc'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf7d5('0x19'),'model':'OpenchannelInteraction','event':_0xf7d5('0xc'),'condition':_0xf7d5('0x7'),'callback':afterCreate},{'channel':'Openchannel','model':_0xf7d5('0x1a'),'event':_0xf7d5('0x9'),'condition':_0xf7d5('0xa'),'callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':_0xf7d5('0xc'),'condition':_0xf7d5('0x10'),'callback':afterCreateMessage}];function request(_0x2c2a45){return client[_0xf7d5('0x1b')](_0xf7d5('0x1c'),_0x2c2a45)[_0xf7d5('0x1d')](function(_0x59865e){logger[_0xf7d5('0x1e')](_0xf7d5('0x1f'),_0xf7d5('0x1c'),_0x59865e);if(_0x59865e[_0xf7d5('0x20')]){if(_0x59865e[_0xf7d5('0x20')][_0xf7d5('0x21')]===0x1f4){logger[_0xf7d5('0x20')](_0xf7d5('0x1f'),_0xf7d5('0x1c'),_0x59865e[_0xf7d5('0x20')]);}}})['catch'](function(_0x54116c){logger['error']('Trigger,\x20%s','EventManager',_0x54116c);});}function afterCreateMessage(_0x3dbc92){return function(_0x2e103c){_0x2e103c=_0x2e103c['get']({'plain':!![]});_0x2e103c['channel']=_0x3dbc92;_0x2e103c[_0xf7d5('0x22')]=_0x3dbc92;_0x2e103c['event']=_0x2e103c['direction'];Promise[_0xf7d5('0x23')]()[_0xf7d5('0x1d')](function(){if(typeof _0x2e103c['ContactId']===_0xf7d5('0x24'))return null;var _0x5d101a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2e103c[_0xf7d5('0x25')];return db['sequelize']['query'](_0x5d101a,{'type':db[_0xf7d5('0x26')]['QueryTypes']['SELECT'],'raw':!![]});})[_0xf7d5('0x1d')](function(_0x3793f6){if(_0x3793f6){_0x2e103c[_0xf7d5('0x27')]=_0x3793f6[0x0];}if(typeof _0x2e103c[_0xf7d5('0x28')]===_0xf7d5('0x24'))return;return getAgent(_0x2e103c['UserId']);})['then'](function(_0x2db148){if(_0x2db148){_0x2e103c[_0xf7d5('0x29')]=util[_0xf7d5('0x2a')]('SIP/%s',_0x2db148[_0xf7d5('0x2b')]);_0x2e103c[_0xf7d5('0x2c')]=_0x2db148;_0x2e103c[_0xf7d5('0x2d')]=_0x3dbc92;return request({'event':'incomingmessage','message':_0x2e103c});}else{return request({'event':_0xf7d5('0x2e'),'message':_0x2e103c});}})['catch'](function(_0x1386f7){logger[_0xf7d5('0x20')]('Trigger,\x20%s',_0xf7d5('0x2f'),_0x1386f7);});};}function afterCreateOfflineMessage(_0x4cffa3){return function(_0x4e0367){_0x4e0367=_0x4e0367['get']({'plain':!![]});_0x4e0367[_0xf7d5('0x2d')]=_0x4cffa3;_0x4e0367[_0xf7d5('0x22')]=_0x4cffa3;_0x4e0367[_0xf7d5('0x30')]='offlineMessage';return request({'event':_0x4e0367[_0xf7d5('0x30')],'message':_0x4e0367});};}function afterCreate(_0xf33a49,_0x365b2a){return function(_0x3c80df){_0x3c80df=_0x3c80df[_0xf7d5('0x31')]({'plain':!![]});_0x3c80df[_0xf7d5('0x2d')]=_0xf33a49;_0x3c80df['motionChannel']=_0xf33a49;_0x3c80df[_0xf7d5('0x30')]=_0xf7d5('0x32');Promise[_0xf7d5('0x23')]()[_0xf7d5('0x1d')](function(){var _0x4c02e8=_0xf7d5('0x33')+_0x3c80df[_0xf7d5('0x25')];return db[_0xf7d5('0x34')][_0xf7d5('0x35')](_0x4c02e8,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]});})[_0xf7d5('0x1d')](function(_0x5c5a8d){if(_0x5c5a8d){_0x3c80df['contact']=_0x5c5a8d[0x0];}if(typeof _0x3c80df[_0xf7d5('0x28')]===_0xf7d5('0x24'))return;return getAgent(_0x3c80df[_0xf7d5('0x28')]);})[_0xf7d5('0x1d')](function(_0x2df539){if(_0x2df539){_0x3c80df[_0xf7d5('0x29')]=util['format'](_0xf7d5('0x36'),_0x2df539[_0xf7d5('0x2b')]);_0x3c80df['agent']=_0x2df539;}return request({'event':_0x365b2a,'message':_0x3c80df});})[_0xf7d5('0x37')](function(_0x25fcb8){logger[_0xf7d5('0x20')](_0xf7d5('0x1f'),_0xf7d5('0x38'),_0x25fcb8);});};}function afterUpdate(_0x1e0305){return function(_0x571303){var _0x2f1441=_0x571303[_0xf7d5('0x39')](_0xf7d5('0x3a'))&&_0x571303['closed'];var _0x12c6af=_0x571303[_0xf7d5('0x39')](_0xf7d5('0x3b'));if(_0x2f1441||_0x12c6af){var _0x11291c=_0x2f1441?_0xf7d5('0xa'):'substatus';var _0x197355=_0x571303[_0xf7d5('0x31')]({'plain':!![]});_0x197355[_0xf7d5('0x2d')]=_0x1e0305;_0x197355['motionChannel']=_0x1e0305;_0x197355[_0xf7d5('0x30')]=_0x2f1441?_0xf7d5('0x3a'):_0xf7d5('0x3b');var _0x51940d=_0xf7d5('0x33')+_0x197355['ContactId'];return db[_0xf7d5('0x34')][_0xf7d5('0x35')](_0x51940d,{'type':db[_0xf7d5('0x26')][_0xf7d5('0x3c')]['SELECT'],'raw':!![]})[_0xf7d5('0x1d')](function(_0x34690e){if(_0x34690e){_0x197355[_0xf7d5('0x27')]=_0x34690e[0x0];}if(typeof _0x197355[_0xf7d5('0x28')]===_0xf7d5('0x24'))return;return getAgent(_0x197355[_0xf7d5('0x28')]);})[_0xf7d5('0x1d')](function(_0x15bcef){if(_0x15bcef){_0x197355[_0xf7d5('0x29')]=util['format'](_0xf7d5('0x36'),_0x15bcef[_0xf7d5('0x2b')]);_0x197355[_0xf7d5('0x2c')]=_0x15bcef;}return request({'event':_0x11291c,'message':_0x197355});})['catch'](function(_0x517a9b){logger['error'](_0xf7d5('0x1f'),_0xf7d5('0x3d'),_0x517a9b);});}};}function getAgent(_0x458a19){return db['User'][_0xf7d5('0x3e')]({'where':{'id':_0x458a19},'attributes':['id',_0xf7d5('0x2b'),_0xf7d5('0x3f'),_0xf7d5('0x40'),_0xf7d5('0x41')],'raw':!![]})['then'](function(_0x21e271){return _0x21e271;});}exports[_0xf7d5('0x42')]=function(){for(var _0x12da5e=0x0;_0x12da5e<triggers[_0xf7d5('0x43')];_0x12da5e+=0x1){if(db[_0xf7d5('0x44')](triggers[_0x12da5e][_0xf7d5('0x45')])){db[triggers[_0x12da5e][_0xf7d5('0x45')]]['hook'](triggers[_0x12da5e]['event'],triggers[_0x12da5e][_0xf7d5('0x46')](triggers[_0x12da5e]['channel'][_0xf7d5('0x47')](),triggers[_0x12da5e][_0xf7d5('0x48')]));}}};
\ No newline at end of file
+var _0xc17d=['resolve','then','ContactId','undefined','sequelize','Sequelize','QueryTypes','SELECT','contact','UserId','format','SIP/%s','name','agent','channel','incomingmessage','outgoingmessage','catch','AfterCreateMessage','offlineMessage','opened','query','interface','closed','changed','substatus','AfterUpdate','User','find','fullname','email','default','length','hasOwnProperty','model','hook','callback','toLowerCase','util','jayson/promise','../logger','client','http','ChatInteraction','newinteraction','afterUpdate','closedinteraction','Chat','ChatMessage','afterCreate','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','newmessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','get','motionChannel','event','direction'];(function(_0x534b49,_0x464ea8){var _0x107e16=function(_0x5ab612){while(--_0x5ab612){_0x534b49['push'](_0x534b49['shift']());}};_0x107e16(++_0x464ea8);}(_0xc17d,0x1a2));var _0xdc17=function(_0x34abf3,_0x3f3e6d){_0x34abf3=_0x34abf3-0x0;var _0x25987e=_0xc17d[_0x34abf3];return _0x25987e;};'use strict';var util=require(_0xdc17('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0xdc17('0x1'));var logger=require(_0xdc17('0x2'))('triggers');var client=jayson[_0xdc17('0x3')][_0xdc17('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xdc17('0x5'),'event':'afterCreate','condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':'Chat','model':_0xdc17('0x5'),'event':_0xdc17('0x7'),'condition':_0xdc17('0x8'),'callback':afterUpdate},{'channel':_0xdc17('0x9'),'model':_0xdc17('0xa'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xdc17('0x9'),'model':_0xdc17('0xc'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xdc17('0xd'),'model':'SmsInteraction','event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0xd'),'model':_0xdc17('0xe'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':_0xdc17('0xf'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xdc17('0x11'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x12'),'model':_0xdc17('0x13'),'event':'afterCreate','condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':_0xdc17('0x14'),'model':_0xdc17('0x15'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x14'),'model':'FaxInteraction','event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x14'),'model':_0xdc17('0x16'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Mail','model':_0xdc17('0x17'),'event':'afterCreate','condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x18'),'model':_0xdc17('0x17'),'event':_0xdc17('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc17('0x18'),'model':_0xdc17('0x19'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x10'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0xdc17('0x1a'),'event':_0xdc17('0xb'),'condition':_0xdc17('0x6'),'callback':afterCreate},{'channel':_0xdc17('0x1b'),'model':_0xdc17('0x1a'),'event':_0xdc17('0x7'),'condition':_0xdc17('0x8'),'callback':afterUpdate},{'channel':_0xdc17('0x1b'),'model':_0xdc17('0x1c'),'event':_0xdc17('0xb'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x4e9659){return client[_0xdc17('0x1d')](_0xdc17('0x1e'),_0x4e9659)['then'](function(_0x177dba){logger[_0xdc17('0x1f')](_0xdc17('0x20'),_0xdc17('0x1e'),_0x177dba);if(_0x177dba['error']){if(_0x177dba[_0xdc17('0x21')]['code']===0x1f4){logger[_0xdc17('0x21')](_0xdc17('0x20'),'EventManager',_0x177dba[_0xdc17('0x21')]);}}})['catch'](function(_0x4ac950){logger['error']('Trigger,\x20%s',_0xdc17('0x1e'),_0x4ac950);});}function afterCreateMessage(_0x41117b){return function(_0xc2612a){_0xc2612a=_0xc2612a[_0xdc17('0x22')]({'plain':!![]});_0xc2612a['channel']=_0x41117b;_0xc2612a[_0xdc17('0x23')]=_0x41117b;_0xc2612a[_0xdc17('0x24')]=_0xc2612a[_0xdc17('0x25')];Promise[_0xdc17('0x26')]()[_0xdc17('0x27')](function(){if(typeof _0xc2612a[_0xdc17('0x28')]===_0xdc17('0x29'))return null;var _0x477c10='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xc2612a[_0xdc17('0x28')];return db[_0xdc17('0x2a')]['query'](_0x477c10,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]});})[_0xdc17('0x27')](function(_0x4ccfac){if(_0x4ccfac){_0xc2612a[_0xdc17('0x2e')]=_0x4ccfac[0x0];}if(typeof _0xc2612a[_0xdc17('0x2f')]==='undefined')return;return getAgent(_0xc2612a['UserId']);})['then'](function(_0x15d4a2){if(_0x15d4a2){_0xc2612a['interface']=util[_0xdc17('0x30')](_0xdc17('0x31'),_0x15d4a2[_0xdc17('0x32')]);_0xc2612a[_0xdc17('0x33')]=_0x15d4a2;_0xc2612a[_0xdc17('0x34')]=_0x41117b;return request({'event':_0xdc17('0x35'),'message':_0xc2612a});}else{return request({'event':_0xdc17('0x36'),'message':_0xc2612a});}})[_0xdc17('0x37')](function(_0x1cbbf9){logger[_0xdc17('0x21')](_0xdc17('0x20'),_0xdc17('0x38'),_0x1cbbf9);});};}function afterCreateOfflineMessage(_0x585441){return function(_0x27145a){_0x27145a=_0x27145a['get']({'plain':!![]});_0x27145a['channel']=_0x585441;_0x27145a[_0xdc17('0x23')]=_0x585441;_0x27145a[_0xdc17('0x24')]=_0xdc17('0x39');return request({'event':_0x27145a['event'],'message':_0x27145a});};}function afterCreate(_0x55786e,_0x11d309){return function(_0x3a213f){_0x3a213f=_0x3a213f[_0xdc17('0x22')]({'plain':!![]});_0x3a213f['channel']=_0x55786e;_0x3a213f[_0xdc17('0x23')]=_0x55786e;_0x3a213f[_0xdc17('0x24')]=_0xdc17('0x3a');Promise[_0xdc17('0x26')]()[_0xdc17('0x27')](function(){var _0x58715a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a213f['ContactId'];return db['sequelize'][_0xdc17('0x3b')](_0x58715a,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]});})[_0xdc17('0x27')](function(_0x55f6ec){if(_0x55f6ec){_0x3a213f[_0xdc17('0x2e')]=_0x55f6ec[0x0];}if(typeof _0x3a213f['UserId']===_0xdc17('0x29'))return;return getAgent(_0x3a213f[_0xdc17('0x2f')]);})['then'](function(_0x5182a6){if(_0x5182a6){_0x3a213f[_0xdc17('0x3c')]=util['format']('SIP/%s',_0x5182a6[_0xdc17('0x32')]);_0x3a213f['agent']=_0x5182a6;}return request({'event':_0x11d309,'message':_0x3a213f});})['catch'](function(_0x50ace7){logger[_0xdc17('0x21')](_0xdc17('0x20'),'AfterCreate',_0x50ace7);});};}function afterUpdate(_0xdf5ec4){return function(_0x3d4318){var _0x2b939d=_0x3d4318['changed'](_0xdc17('0x3d'))&&_0x3d4318['closed'];var _0x484774=_0x3d4318[_0xdc17('0x3e')]('substatus');if(_0x2b939d||_0x484774){var _0x203e78=_0x2b939d?_0xdc17('0x8'):_0xdc17('0x3f');var _0x4ce633=_0x3d4318[_0xdc17('0x22')]({'plain':!![]});_0x4ce633[_0xdc17('0x34')]=_0xdf5ec4;_0x4ce633[_0xdc17('0x23')]=_0xdf5ec4;_0x4ce633[_0xdc17('0x24')]=_0x2b939d?_0xdc17('0x3d'):_0xdc17('0x3f');var _0x37b55a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4ce633['ContactId'];return db[_0xdc17('0x2a')][_0xdc17('0x3b')](_0x37b55a,{'type':db[_0xdc17('0x2b')][_0xdc17('0x2c')][_0xdc17('0x2d')],'raw':!![]})['then'](function(_0x376a52){if(_0x376a52){_0x4ce633['contact']=_0x376a52[0x0];}if(typeof _0x4ce633[_0xdc17('0x2f')]===_0xdc17('0x29'))return;return getAgent(_0x4ce633['UserId']);})['then'](function(_0xafff48){if(_0xafff48){_0x4ce633[_0xdc17('0x3c')]=util[_0xdc17('0x30')](_0xdc17('0x31'),_0xafff48[_0xdc17('0x32')]);_0x4ce633[_0xdc17('0x33')]=_0xafff48;}return request({'event':_0x203e78,'message':_0x4ce633});})['catch'](function(_0x496f07){logger[_0xdc17('0x21')](_0xdc17('0x20'),_0xdc17('0x40'),_0x496f07);});}};}function getAgent(_0x32df73){return db[_0xdc17('0x41')][_0xdc17('0x42')]({'where':{'id':_0x32df73},'attributes':['id','name',_0xdc17('0x43'),_0xdc17('0x44'),'internal'],'raw':!![]})[_0xdc17('0x27')](function(_0x4478c3){return _0x4478c3;});}exports[_0xdc17('0x45')]=function(){for(var _0x4ea86d=0x0;_0x4ea86d<triggers[_0xdc17('0x46')];_0x4ea86d+=0x1){if(db[_0xdc17('0x47')](triggers[_0x4ea86d]['model'])){db[triggers[_0x4ea86d][_0xdc17('0x48')]][_0xdc17('0x49')](triggers[_0x4ea86d][_0xdc17('0x24')],triggers[_0x4ea86d][_0xdc17('0x4a')](triggers[_0x4ea86d][_0xdc17('0x34')][_0xdc17('0x4b')](),triggers[_0x4ea86d]['condition']));}}};
\ No newline at end of file
index 4092e35..752ec6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x457f=['getLicense','role','count','agent','then','agents','catch','lodash','bluebird','../mysqldb','chat','fax','sms','whatsapp','isValidChannel','clearBlockUser','isUndefined','blockedAt','updateAttributes'];(function(_0x2930f1,_0x33a7a2){var _0x12be73=function(_0x1ccbb7){while(--_0x1ccbb7){_0x2930f1['push'](_0x2930f1['shift']());}};_0x12be73(++_0x33a7a2);}(_0x457f,0xeb));var _0xf457=function(_0x29fcef,_0x559e15){_0x29fcef=_0x29fcef-0x0;var _0x217cf6=_0x457f[_0x29fcef];return _0x217cf6;};'use strict';var _=require(_0xf457('0x0'));var BPromise=require(_0xf457('0x1'));var db=require(_0xf457('0x2'))['db'];var util=require('./license/util');var channels=['voice','mail',_0xf457('0x3'),_0xf457('0x4'),_0xf457('0x5'),_0xf457('0x6'),'openchannel'];exports['getChannels']=function(){return channels;};exports[_0xf457('0x7')]=function(_0xf51a01){_0xf51a01=_0xf51a01['toLowerCase']();return _['includes'](channels,_0xf51a01);};exports[_0xf457('0x8')]=function(_0x513a1b,_0x24e53d,_0x33e2e9,_0x3c92b3){var _0x2f0b50={'loginAttempts':_0x24e53d,'blocked':_0x33e2e9};if(!_[_0xf457('0x9')](_0x3c92b3)){_0x2f0b50[_0xf457('0xa')]=_0x3c92b3;}return _0x513a1b[_0xf457('0xb')](_0x2f0b50);};exports[_0xf457('0xc')]=function(_0x2bf749){return new BPromise(function(_0x5b6580,_0x24eb54){var _0x515b7a=0x0;if(_0x2bf749[_0xf457('0xd')]!=='agent'){_0x5b6580(_0x2bf749);}db['User'][_0xf457('0xe')]({'where':{'role':_0xf457('0xf'),'online':!![],'id':{'$ne':_0x2bf749['id']}}})['then'](function(_0x5d01ee){_0x515b7a=_0x5d01ee;return util['getLicense']();})[_0xf457('0x10')](function(_0x413281){if(_0x413281&&_0x413281[_0xf457('0x11')]&&_0x515b7a>=_0x413281[_0xf457('0x11')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x5b6580(_0x2bf749);})[_0xf457('0x12')](function(_0x2020b9){_0x24eb54(_0x2020b9);});});};
\ No newline at end of file
+var _0x7c2c=['role','agent','User','getLicense','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','updateAttributes'];(function(_0x4b64a4,_0x1bdc50){var _0xd19b0e=function(_0x4dfbe0){while(--_0x4dfbe0){_0x4b64a4['push'](_0x4b64a4['shift']());}};_0xd19b0e(++_0x1bdc50);}(_0x7c2c,0x1c0));var _0xc7c2=function(_0x2d6db8,_0x488dd7){_0x2d6db8=_0x2d6db8-0x0;var _0x5b08b3=_0x7c2c[_0x2d6db8];return _0x5b08b3;};'use strict';var _=require(_0xc7c2('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require('./license/util');var channels=['voice',_0xc7c2('0x1'),_0xc7c2('0x2'),_0xc7c2('0x3'),_0xc7c2('0x4'),_0xc7c2('0x5'),_0xc7c2('0x6')];exports[_0xc7c2('0x7')]=function(){return channels;};exports[_0xc7c2('0x8')]=function(_0x2312db){_0x2312db=_0x2312db[_0xc7c2('0x9')]();return _[_0xc7c2('0xa')](channels,_0x2312db);};exports[_0xc7c2('0xb')]=function(_0x4be88c,_0x1bab31,_0x3db795,_0x2f03af){var _0xe7dbe3={'loginAttempts':_0x1bab31,'blocked':_0x3db795};if(!_[_0xc7c2('0xc')](_0x2f03af)){_0xe7dbe3['blockedAt']=_0x2f03af;}return _0x4be88c[_0xc7c2('0xd')](_0xe7dbe3);};exports['getLicense']=function(_0x59faa5){return new BPromise(function(_0x388700,_0x4177a8){var _0x36a9b1=0x0;if(_0x59faa5[_0xc7c2('0xe')]!==_0xc7c2('0xf')){_0x388700(_0x59faa5);}db[_0xc7c2('0x10')]['count']({'where':{'role':_0xc7c2('0xf'),'online':!![],'id':{'$ne':_0x59faa5['id']}}})['then'](function(_0xa07c2f){_0x36a9b1=_0xa07c2f;return util[_0xc7c2('0x11')]();})[_0xc7c2('0x12')](function(_0x489718){if(_0x489718&&_0x489718[_0xc7c2('0x13')]&&_0x36a9b1>=_0x489718['agents']){throw Error(_0xc7c2('0x14'));}_0x388700(_0x59faa5);})[_0xc7c2('0x15')](function(_0x2c4740){_0x4177a8(_0x2c4740);});});};
\ No newline at end of file
index 865cd61..bf099ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['status','exports','../config/logger','api','message','Error','inherits','name','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','Forbidden','OutOfInterval','error','stack'];(function(_0x5198c8,_0x2ae1ec){var _0x4847bb=function(_0x4f4d1b){while(--_0x4f4d1b){_0x5198c8['push'](_0x5198c8['shift']());}};_0x4847bb(++_0x2ae1ec);}(_0xb821,0xa7));var _0x1b82=function(_0x5f082d,_0x3af403){_0x5f082d=_0x5f082d-0x0;var _0x1cd50b=_0xb821[_0x5f082d];return _0x1cd50b;};'use strict';var util=require('util');var logger=require(_0x1b82('0x0'))(_0x1b82('0x1'));var APIError=function(_0x5924c6,_0x4a4f81){this[_0x1b82('0x2')]=_0x5924c6||'Internal\x20Server\x20Error';this['name']=_0x4a4f81||_0x1b82('0x3');util[_0x1b82('0x4')](APIError,Error);};var APIBadRequestError=function(_0x3fadf0){this[_0x1b82('0x2')]=_0x3fadf0||'Bad\x20Request';this[_0x1b82('0x5')]=_0x1b82('0x6');util[_0x1b82('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x3632dd){this[_0x1b82('0x2')]=_0x3632dd||_0x1b82('0x7');this[_0x1b82('0x5')]=_0x1b82('0x8');util[_0x1b82('0x4')](APINotFoundError,APIError);};function getStatusCode(_0x4955b5){switch(_0x4955b5){case _0x1b82('0x6'):return 0x190;case _0x1b82('0x9'),_0x1b82('0xa'):return 0x193;case _0x1b82('0x8'):return 0x194;default:return 0x1f4;}}function handleError(_0xcffb87){return function(_0x17a96b){logger[_0x1b82('0xb')](_0x17a96b[_0x1b82('0xc')]);var _0x5f521f=getStatusCode(_0x17a96b[_0x1b82('0x5')]);if(_0x17a96b[_0x1b82('0x5')])delete _0x17a96b[_0x1b82('0x5')];return _0xcffb87[_0x1b82('0xd')](_0x5f521f)['send'](_0x17a96b);};}module[_0x1b82('0xe')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x4483=['stack','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','Bad\x20Request','inherits','Not\x20Found','Forbidden','OutOfInterval','error'];(function(_0xd39959,_0x302d09){var _0x1ff69c=function(_0x17c97f){while(--_0x17c97f){_0xd39959['push'](_0xd39959['shift']());}};_0x1ff69c(++_0x302d09);}(_0x4483,0x1a3));var _0x3448=function(_0x46a802,_0x15772e){_0x46a802=_0x46a802-0x0;var _0x26ecf2=_0x4483[_0x46a802];return _0x26ecf2;};'use strict';var util=require(_0x3448('0x0'));var logger=require(_0x3448('0x1'))(_0x3448('0x2'));var APIError=function(_0x481d0c,_0x202d3d){this[_0x3448('0x3')]=_0x481d0c||_0x3448('0x4');this[_0x3448('0x5')]=_0x202d3d||_0x3448('0x6');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0xeb5b8){this[_0x3448('0x3')]=_0xeb5b8||_0x3448('0x7');this[_0x3448('0x5')]=_0x3448('0x7');util[_0x3448('0x8')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x3cc81d){this[_0x3448('0x3')]=_0x3cc81d||'Entity\x20not\x20found';this['name']=_0x3448('0x9');util[_0x3448('0x8')](APINotFoundError,APIError);};function getStatusCode(_0xc36409){switch(_0xc36409){case _0x3448('0x7'):return 0x190;case _0x3448('0xa'),_0x3448('0xb'):return 0x193;case _0x3448('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x32cd61){return function(_0x39bd9e){logger[_0x3448('0xc')](_0x39bd9e[_0x3448('0xd')]);var _0x481a6f=getStatusCode(_0x39bd9e['name']);if(_0x39bd9e[_0x3448('0x5')])delete _0x39bd9e[_0x3448('0x5')];return _0x32cd61['status'](_0x481a6f)[_0x3448('0xe')](_0x39bd9e);};}module[_0x3448('0xf')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 1253c9c..45156b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe36=['status','render','send','exports','404'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0xfe36,0x1b6));var _0x6fe3=function(_0x1dc836,_0x45a1db){_0x1dc836=_0x1dc836-0x0;var _0x55f9d0=_0xfe36[_0x1dc836];return _0x55f9d0;};'use strict';module[_0x6fe3('0x0')][0x194]=function pageNotFound(_0x3f6690,_0x5c82fa){var _0x142f77=_0x6fe3('0x1');var _0x428ec0=0x194;var _0x4b866e={'status':_0x428ec0};_0x5c82fa[_0x6fe3('0x2')](_0x4b866e[_0x6fe3('0x2')]);_0x5c82fa[_0x6fe3('0x3')](_0x142f77,{},function(_0x19bc69,_0x2c2024){if(_0x19bc69){return _0x5c82fa[_0x6fe3('0x2')](_0x4b866e['status'])['json'](_0x4b866e);}_0x5c82fa[_0x6fe3('0x4')](_0x2c2024);});};
\ No newline at end of file
+var _0x0c3b=['exports','404','status','render','send'];(function(_0x58ceb9,_0x5601df){var _0x3d0ff5=function(_0x3a79d0){while(--_0x3a79d0){_0x58ceb9['push'](_0x58ceb9['shift']());}};_0x3d0ff5(++_0x5601df);}(_0x0c3b,0x1a9));var _0xb0c3=function(_0x2eaacb,_0x5c68c9){_0x2eaacb=_0x2eaacb-0x0;var _0x3a84dd=_0x0c3b[_0x2eaacb];return _0x3a84dd;};'use strict';module[_0xb0c3('0x0')][0x194]=function pageNotFound(_0x5d31fc,_0x3870d3){var _0x2e3937=_0xb0c3('0x1');var _0x29a17b=0x194;var _0x3da228={'status':_0x29a17b};_0x3870d3[_0xb0c3('0x2')](_0x3da228[_0xb0c3('0x2')]);_0x3870d3[_0xb0c3('0x3')](_0x2e3937,{},function(_0x467e52,_0x1942e6){if(_0x467e52){return _0x3870d3['status'](_0x3da228['status'])['json'](_0x3da228);}_0x3870d3[_0xb0c3('0x4')](_0x1942e6);});};
\ No newline at end of file
index 99df35a..5de3775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0760=['mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','VoiceMailMessage','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','CloudProviderId','restrict','MailServerOut','Smtp','Dispositions','MailAccountId','Answers','Interactions','Applications','List','ListId','TemplateId','user_has_mail_accounts','team_has_mail_queues','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','Account','ChatWebsiteId','TagId','Items','FaxAccountId','Exntensions','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccount','SmsAccountId','SmsMessage','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','OpenchannelQueueReport','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatOfflineMessageId','team_has_chat_queues','CompanyId','CmContactHasItem','Phones','CmContactId','CmHopper','ChatInteractions','Company','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','AutomationAllId','Any','OneAny','Actions','AutomationId','Intervals','ChatApplications','FaxApplications','CustomReportId','Mohs','whatsapp_interaction_has_tags','ItemType','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','AnalyticFieldReport','Fields','DefaultReportId','MetricId','Configurations','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','AccountId','Description','Field','VariableId','Subject','int_desk_configuration_has_tags','ZohoAccount','ZendeskConfiguration','ZendeskField','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','ServicenowConfiguration','FreshsalesField','FromId','ToId','SessionId','JscriptyProject','ProjectId','VoiceQueues','SmsQueues','team_has_whatsapp_queues','TrunkBackup','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ToUserId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','HopperHistory','Queues','UserProfileSections','UserProfileSection','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','WhatsappQueueId','Imap','exports','../config/environment','sequelize','lodash','jstz','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','username','options','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','VoiceMail','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','UserMailQueue','../api/userMailQueue/userMailQueue.model','../api/userFaxQueue/userFaxQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.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','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfileSection/userProfileSection.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','User','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','ReportAgentPreview','OpenchannelInteractions','SmsInteractions','FaxInteraction','MailInteractions','WhatsappInteraction','WhatsappInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','CmList','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_whatsapp_interactions','VoicePrefixes','MailQueues','FaxQueues','UserFaxQueue','UserSmsQueue','OpenchannelQueue','OpenchannelQueues','WhatsappQueue','WhatsappQueues','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','ChanSpyId','Sound','moh_has_sounds','Members','Hoppers','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPause'];(function(_0x1d44ec,_0x232aab){var _0x9b0732=function(_0x17eedc){while(--_0x17eedc){_0x1d44ec['push'](_0x1d44ec['shift']());}};_0x9b0732(++_0x232aab);}(_0x0760,0xaa));var _0x0076=function(_0x1619c1,_0x21b9fd){_0x1619c1=_0x1619c1-0x0;var _0x424d3f=_0x0760[_0x1619c1];return _0x424d3f;};'use strict';var config=require(_0x0076('0x0'));var Sequelize=require(_0x0076('0x1'));var _=require(_0x0076('0x2'));var jstz=require(_0x0076('0x3'));var timezone=jstz['determine']();config[_0x0076('0x1')]=_[_0x0076('0x4')](config[_0x0076('0x1')],{'database':'motion2','username':_0x0076('0x5'),'password':_0x0076('0x6'),'options':{'host':_0x0076('0x7'),'port':0xcea,'dialect':_0x0076('0x8'),'dialectOptions':{'charset':_0x0076('0x9')},'logging':![],'timezone':timezone[_0x0076('0xa')](),'define':{'charset':_0x0076('0xb'),'collate':_0x0076('0xc')}}});config[_0x0076('0xd')]=_[_0x0076('0x4')](config[_0x0076('0xd')],{'database':'motion2','username':_0x0076('0x5'),'password':_0x0076('0x6'),'options':{'host':_0x0076('0x7'),'port':0xcea,'dialect':_0x0076('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x0076('0xa')](),'define':{'charset':_0x0076('0xb'),'collate':_0x0076('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x0076('0x1')][_0x0076('0xe')],config[_0x0076('0x1')][_0x0076('0xf')],config[_0x0076('0x1')]['password'],config[_0x0076('0x1')][_0x0076('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x0076('0xd')][_0x0076('0xe')],config[_0x0076('0xd')][_0x0076('0xf')],config[_0x0076('0xd')]['password'],config[_0x0076('0xd')][_0x0076('0x10')])};db['User']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x12'));db['VoiceChanSpy']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x13'));db[_0x0076('0x14')]=db[_0x0076('0x1')]['import'](_0x0076('0x15'));db[_0x0076('0x16')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/voiceExtension/voiceExtension.model');db[_0x0076('0x17')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x18'));db[_0x0076('0x19')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x1a'));db[_0x0076('0x1b')]=db[_0x0076('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0076('0x1c')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/screenRecording/screenRecording.model');db[_0x0076('0x1d')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/voiceMail/voiceMail.model');db['VoiceMailMessage']=db['sequelize'][_0x0076('0x11')](_0x0076('0x1e'));db[_0x0076('0x1f')]=db[_0x0076('0x1')]['import'](_0x0076('0x20'));db[_0x0076('0x21')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x22'));db[_0x0076('0x23')]=db['sequelize']['import'](_0x0076('0x24'));db[_0x0076('0x25')]=db[_0x0076('0x1')]['import'](_0x0076('0x26'));db['MemberReport']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/memberReport/memberReport.model');db[_0x0076('0x27')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x28'));db[_0x0076('0x29')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x0076('0x2a')]=db['sequelize'][_0x0076('0x11')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x0076('0x2b')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x2c'));db[_0x0076('0x2d')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/userChatQueue/userChatQueue.model');db[_0x0076('0x2e')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x2f'));db['UserFaxQueue']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x30'));db['UserSmsQueue']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0076('0x31')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x0076('0x32')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x33'));db[_0x0076('0x34')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db['sequelize'][_0x0076('0x11')]('../api/mailServerOut/mailServerOut.model');db['MailAccount']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x35'));db[_0x0076('0x36')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x37'));db[_0x0076('0x38')]=db[_0x0076('0x1')]['import'](_0x0076('0x39'));db[_0x0076('0x3a')]=db['sequelize']['import']('../api/mailInteraction/mailInteraction.model');db[_0x0076('0x3b')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x3c'));db[_0x0076('0x3d')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x3e'));db[_0x0076('0x3f')]=db[_0x0076('0x1')]['import'](_0x0076('0x40'));db[_0x0076('0x41')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x42'));db['DashboardItem']=db['sequelize']['import'](_0x0076('0x43'));db[_0x0076('0x44')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x45'));db[_0x0076('0x46')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x47'));db['FaxInteraction']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x48'));db[_0x0076('0x49')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x4a'));db[_0x0076('0x4b')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/faxQueue/faxQueue.model');db[_0x0076('0x4c')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x4d'));db['SmsAccount']=db['sequelize']['import'](_0x0076('0x4e'));db[_0x0076('0x4f')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x50'));db[_0x0076('0x51')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x52'));db['SmsMessage']=db['sequelize'][_0x0076('0x11')](_0x0076('0x53'));db[_0x0076('0x54')]=db['sequelize'][_0x0076('0x11')]('../api/smsQueue/smsQueue.model');db[_0x0076('0x55')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x56'));db[_0x0076('0x57')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/openchannelApplication/openchannelApplication.model');db[_0x0076('0x58')]=db[_0x0076('0x1')]['import'](_0x0076('0x59'));db[_0x0076('0x5a')]=db[_0x0076('0x1')]['import'](_0x0076('0x5b'));db['OpenchannelQueue']=db['sequelize'][_0x0076('0x11')](_0x0076('0x5c'));db[_0x0076('0x5d')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x5e'));db['OpenchannelQueueReport']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x5f'));db[_0x0076('0x60')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x61'));db[_0x0076('0x62')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x63'));db[_0x0076('0x64')]=db[_0x0076('0x1')]['import'](_0x0076('0x65'));db[_0x0076('0x66')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x67'));db[_0x0076('0x68')]=db['sequelize'][_0x0076('0x11')]('../api/chatQueue/chatQueue.model');db[_0x0076('0x69')]=db[_0x0076('0x1')]['import'](_0x0076('0x6a'));db[_0x0076('0x6b')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x6c'));db[_0x0076('0x6d')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x6e'));db[_0x0076('0x6f')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x70'));db['CmHopper']=db[_0x0076('0x1')]['import'](_0x0076('0x71'));db[_0x0076('0x72')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x73'));db[_0x0076('0x74')]=db[_0x0076('0x1')]['import'](_0x0076('0x75'));db['CmHopperHistory']=db[_0x0076('0x1')]['import']('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x76'));db[_0x0076('0x77')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x78'));db[_0x0076('0x79')]=db['sequelize']['import'](_0x0076('0x7a'));db[_0x0076('0x7b')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x7c'));db[_0x0076('0x7d')]=db['sequelize']['import'](_0x0076('0x7e'));db[_0x0076('0x7f')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x80'));db[_0x0076('0x81')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/condition/condition.model');db[_0x0076('0x82')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x83'));db[_0x0076('0x84')]=db['sequelize'][_0x0076('0x11')]('../api/pause/pause.model');db['Cdr']=db[_0x0076('0x1')]['import'](_0x0076('0x85'));db['VoiceQueuesLog']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x86'));db[_0x0076('0x87')]=db['sequelize']['import'](_0x0076('0x88'));db['Sound']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x89'));db[_0x0076('0x8a')]=db[_0x0076('0x1')]['import'](_0x0076('0x8b'));db[_0x0076('0x8c')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x8d'));db['CmContactHasItem']=db['sequelize'][_0x0076('0x11')](_0x0076('0x8e'));db[_0x0076('0x8f')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x90'));db[_0x0076('0x91')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x92'));db[_0x0076('0x93')]=db[_0x0076('0x1')]['import'](_0x0076('0x94'));db[_0x0076('0x95')]=db['sequelize'][_0x0076('0x11')](_0x0076('0x96'));db[_0x0076('0x97')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/integration/integration.model');db[_0x0076('0x98')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x99'));db[_0x0076('0x9a')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x9b'));db[_0x0076('0x9c')]=db['sequelize']['import'](_0x0076('0x9d'));db[_0x0076('0x9e')]=db[_0x0076('0x1')]['import'](_0x0076('0x9f'));db[_0x0076('0xa0')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xa1'));db['AnalyticFieldReport']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xa2'));db['AnalyticTreeReport']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xa3'));db[_0x0076('0xa4')]=db['sequelize']['import'](_0x0076('0xa5'));db[_0x0076('0xa6')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xa7'));db[_0x0076('0xa8')]=db[_0x0076('0x1')]['import'](_0x0076('0xa9'));db[_0x0076('0xaa')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0076('0xab')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x0076('0xac')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xad'));db[_0x0076('0xae')]=db[_0x0076('0x1')]['import'](_0x0076('0xaf'));db[_0x0076('0xb0')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x0076('0xb1')]=db[_0x0076('0x1')]['import']('../api/intDeskField/intDeskField.model');db['ZohoAccount']=db[_0x0076('0x1')]['import'](_0x0076('0xb2'));db[_0x0076('0xb3')]=db['sequelize']['import'](_0x0076('0xb4'));db[_0x0076('0xb5')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intZohoField/intZohoField.model');db[_0x0076('0xb6')]=db['sequelize']['import'](_0x0076('0xb7'));db['ZendeskConfiguration']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xb8'));db['ZendeskField']=db[_0x0076('0x1')]['import'](_0x0076('0xb9'));db[_0x0076('0xba')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xbb'));db[_0x0076('0xbc')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xbd'));db[_0x0076('0xbe')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xbf'));db[_0x0076('0xc0')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0x0076('0xc1')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xc2'));db[_0x0076('0xc3')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xc4'));db[_0x0076('0xc5')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db['sequelize']['import'](_0x0076('0xc6'));db[_0x0076('0xc7')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xc8'));db[_0x0076('0xc9')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xca'));db[_0x0076('0xcb')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xcc'));db[_0x0076('0xcd')]=db[_0x0076('0x1')]['import'](_0x0076('0xce'));db[_0x0076('0xcf')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xd0'));db[_0x0076('0xd1')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xd2'));db['FreshsalesField']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x0076('0x97')]=db['sequelize'][_0x0076('0x11')]('../api/integration/integration.model');db[_0x0076('0xd3')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xd4'));db[_0x0076('0xd5')]=db[_0x0076('0x1')]['import'](_0x0076('0xd6'));db[_0x0076('0xd7')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xd8'));db[_0x0076('0xd9')]=db['sequelize']['import'](_0x0076('0xda'));db[_0x0076('0xdb')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xdc'));db['JscriptySessionReport']=db[_0x0076('0x1')]['import'](_0x0076('0xdd'));db[_0x0076('0xde')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xdf'));db[_0x0076('0xe0')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/squareReport/squareReport.model');db[_0x0076('0xe1')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xe2'));db['JscriptyProject']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xe3'));db['Setting']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/setting/setting.model');db['SquareOdbc']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xe4'));db[_0x0076('0xe5')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xe6'));db[_0x0076('0xe7')]=db['sequelize']['import'](_0x0076('0xe8'));db['SquareMessage']=db['sequelize'][_0x0076('0x11')](_0x0076('0xe9'));db[_0x0076('0xea')]=db['sequelize']['import'](_0x0076('0xeb'));db[_0x0076('0xec')]=db[_0x0076('0x1')]['import'](_0x0076('0xed'));db['Campaign']=db['sequelize'][_0x0076('0x11')](_0x0076('0xee'));db[_0x0076('0xef')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xf0'));db[_0x0076('0xf1')]=db[_0x0076('0x1')]['import'](_0x0076('0xf2'));db[_0x0076('0xf3')]=db['sequelize']['import'](_0x0076('0xf4'));db[_0x0076('0xf5')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0076('0xf6')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/chatTransferReport/chatTransferReport.model');db[_0x0076('0xf7')]=db[_0x0076('0x1')]['import'](_0x0076('0xf8'));db[_0x0076('0xf9')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0xfa'));db[_0x0076('0xfb')]=db[_0x0076('0x1')]['import']('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/cmList/cmList.model');db[_0x0076('0xfc')]=db['sequelize'][_0x0076('0x11')](_0x0076('0xfd'));db[_0x0076('0xfe')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/userProfile/userProfile.model');db['UserProfileSection']=db[_0x0076('0x1')]['import'](_0x0076('0xff'));db['UserProfileResource']=db[_0x0076('0x1')][_0x0076('0x11')]('../api/userProfileResource/userProfileResource.model');db[_0x0076('0x100')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x101'));db[_0x0076('0x102')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/whatsappAccount/whatsappAccount.model');db[_0x0076('0x103')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x104'));db['WhatsappInteraction']=db[_0x0076('0x1')]['import']('../api/whatsappInteraction/whatsappInteraction.model');db['WhatsappMessage']=db[_0x0076('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0076('0x105')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x106'));db[_0x0076('0x107')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x108'));db['WhatsappQueue']=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x109'));db[_0x0076('0x10a')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x10b'));db[_0x0076('0x10c')]=db[_0x0076('0x1')][_0x0076('0x11')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x0076('0x10d')]=db[_0x0076('0x1')]['import'](_0x0076('0x10e'));db[_0x0076('0x10f')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x110'));db[_0x0076('0x111')]=db[_0x0076('0x1')][_0x0076('0x11')](_0x0076('0x112'));db['User'][_0x0076('0x113')](db[_0x0076('0x1d')],{'as':_0x0076('0x1d'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')][_0x0076('0x113')](db[_0x0076('0x111')],{'as':_0x0076('0x117'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x1b')],{'as':_0x0076('0x119'),'foreignKey':'UserId'});db[_0x0076('0x116')]['hasMany'](db[_0x0076('0x2a')],{'as':_0x0076('0x11a'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')]['hasMany'](db[_0x0076('0x16')],{'as':_0x0076('0x11b'),'onDelete':'cascade','hooks':!![]});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x74')],{'as':_0x0076('0x11c'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x11d')],{'as':'HopperHistory','foreignKey':_0x0076('0x115')});db[_0x0076('0x116')]['hasMany'](db[_0x0076('0x11e')],{'as':_0x0076('0x11e'),'foreignKey':'UserId'});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x58')],{'as':_0x0076('0x11f'),'foreignKey':_0x0076('0x115')});db['User'][_0x0076('0x118')](db[_0x0076('0x62')],{'as':'ChatInteractions','foreignKey':'UserId'});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x51')],{'as':_0x0076('0x120'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')][_0x0076('0x118')](db[_0x0076('0x121')],{'as':'FaxInteractions','foreignKey':_0x0076('0x115')});db[_0x0076('0x116')]['hasMany'](db['MailInteraction'],{'as':_0x0076('0x122'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x116')]['hasMany'](db[_0x0076('0x123')],{'as':_0x0076('0x124'),'foreignKey':'UserId'});db[_0x0076('0x116')][_0x0076('0x118')](db['UserNotification'],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0x0076('0x116')][_0x0076('0x125')](db[_0x0076('0xfe')],{'as':_0x0076('0xfe'),'foreignKey':_0x0076('0x126')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x69')],{'as':_0x0076('0x128'),'through':_0x0076('0x129')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x6f')],{'as':_0x0076('0x12a'),'through':'cm_user_has_contacts'});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x12b')],{'as':_0x0076('0x12c'),'through':_0x0076('0x12d')});db['User'][_0x0076('0x127')](db[_0x0076('0xea')],{'through':_0x0076('0x12e')});db['User']['belongsToMany'](db[_0x0076('0x3a')],{'as':'MailInteractions','through':_0x0076('0x12f')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x62')],{'as':'ChatInteractions','through':_0x0076('0x130')});db['User'][_0x0076('0x127')](db[_0x0076('0x121')],{'as':_0x0076('0x131'),'through':_0x0076('0x132')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x51')],{'as':'SmsInteractions','through':_0x0076('0x133')});db['User']['belongsToMany'](db['OpenchannelInteraction'],{'as':_0x0076('0x11f'),'through':'user_has_openchannel_interactions'});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x123')],{'as':_0x0076('0x124'),'through':_0x0076('0x134')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x19')],{'as':'VoiceQueues','through':'UserVoiceQueue','required':![]});db[_0x0076('0x116')][_0x0076('0x127')](db['VoicePrefix'],{'as':_0x0076('0x135'),'through':_0x0076('0x10f'),'required':![]});db[_0x0076('0x116')]['belongsToMany'](db['MailQueue'],{'as':_0x0076('0x136'),'through':'UserMailQueue','required':![]});db[_0x0076('0x116')]['belongsToMany'](db['ChatQueue'],{'as':'ChatQueues','through':_0x0076('0x2d'),'required':![],'hooks':!![]});db[_0x0076('0x116')]['belongsToMany'](db[_0x0076('0x4b')],{'as':_0x0076('0x137'),'through':_0x0076('0x138'),'required':![]});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x54')],{'as':'SmsQueues','through':_0x0076('0x139'),'required':![]});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x13a')],{'as':_0x0076('0x13b'),'through':'UserOpenchannelQueue','required':![]});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x13c')],{'as':_0x0076('0x13d'),'through':_0x0076('0x32'),'required':![]});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x12b')],{'through':_0x0076('0x12d')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x5d')],{'as':_0x0076('0x13e'),'through':_0x0076('0x13f')});db['User'][_0x0076('0x127')](db[_0x0076('0x44')],{'as':_0x0076('0x140'),'through':_0x0076('0x141')});db[_0x0076('0x116')][_0x0076('0x127')](db[_0x0076('0x142')],{'as':_0x0076('0x143'),'through':'user_has_mail_accounts'});db[_0x0076('0x116')][_0x0076('0x127')](db['OpenchannelAccount'],{'as':_0x0076('0x144'),'through':_0x0076('0x145')});db['User'][_0x0076('0x127')](db['SmsAccount'],{'as':_0x0076('0x146'),'through':_0x0076('0x147')});db[_0x0076('0x116')][_0x0076('0x127')](db['WhatsappAccount'],{'as':_0x0076('0x148'),'through':_0x0076('0x149')});db[_0x0076('0x14a')][_0x0076('0x118')](db[_0x0076('0x16')],{'as':_0x0076('0x14b'),'onDelete':'cascade','foreignKey':_0x0076('0x14c')});db['VoiceContext']['hasMany'](db[_0x0076('0x16')],{'onDelete':_0x0076('0x114')});db[_0x0076('0x16')][_0x0076('0x118')](db[_0x0076('0x16')],{'as':'Applications','onDelete':'cascade'});db['VoiceMusicOnHold']['belongsToMany'](db[_0x0076('0x14d')],{'as':'Sounds','through':_0x0076('0x14e')});db[_0x0076('0x19')][_0x0076('0x118')](db['UserVoiceQueueRt'],{'as':_0x0076('0x14f'),'foreignKey':'VoiceQueueId'});db[_0x0076('0x19')]['hasMany'](db['CmHopper'],{'as':_0x0076('0x150'),'foreignKey':_0x0076('0x151')});db['VoiceQueue']['hasMany'](db[_0x0076('0x74')],{'as':_0x0076('0x11c'),'foreignKey':'VoiceQueueId'});db[_0x0076('0x19')][_0x0076('0x118')](db[_0x0076('0x11d')],{'as':_0x0076('0x152'),'foreignKey':_0x0076('0x151')});db[_0x0076('0x19')]['hasMany'](db['ReportAgentPreview'],{'as':_0x0076('0x11e'),'foreignKey':_0x0076('0x151')});db[_0x0076('0x19')][_0x0076('0x118')](db[_0x0076('0x72')],{'as':_0x0076('0x153'),'foreignKey':_0x0076('0x151')});db[_0x0076('0x19')][_0x0076('0x118')](db[_0x0076('0x154')],{'as':_0x0076('0x155'),'foreignKey':_0x0076('0x151')});db[_0x0076('0x19')]['belongsTo'](db[_0x0076('0x27')],{'as':_0x0076('0x27'),'foreignKey':_0x0076('0x156')});db[_0x0076('0x19')][_0x0076('0x125')](db[_0x0076('0x27')],{'as':'TrunkBackup','foreignKey':_0x0076('0x157')});db[_0x0076('0x19')][_0x0076('0x125')](db[_0x0076('0x82')],{'as':_0x0076('0x82'),'foreignKey':_0x0076('0x158')});db[_0x0076('0x19')][_0x0076('0x125')](db[_0x0076('0x84')],{'as':_0x0076('0x159'),'foreignKey':_0x0076('0x15a')});db['VoiceQueue']['belongsToMany'](db['CmList'],{'as':_0x0076('0x12c'),'through':_0x0076('0x15b')});db[_0x0076('0x19')][_0x0076('0x127')](db['User'],{'as':_0x0076('0x15c'),'through':_0x0076('0x2b')});db[_0x0076('0x19')][_0x0076('0x127')](db[_0x0076('0xea')],{'as':_0x0076('0x15d'),'through':_0x0076('0x10c')});db[_0x0076('0x19')][_0x0076('0x127')](db[_0x0076('0x12b')],{'as':_0x0076('0x15e'),'through':'voice_queues_has_cm_blacklists'});db[_0x0076('0x1b')][_0x0076('0x125')](db[_0x0076('0x116')],{'as':_0x0076('0x116'),'foreignKey':'UserId'});db['ScreenRecording'][_0x0076('0x125')](db[_0x0076('0x116')],{'as':'User','foreignKey':_0x0076('0x115')});db[_0x0076('0x1d')][_0x0076('0x118')](db[_0x0076('0x15f')],{'as':_0x0076('0x160'),'onDelete':'cascade','foreignKey':_0x0076('0x161'),'sourceKey':_0x0076('0x162')});db['VoiceMailMessage'][_0x0076('0x125')](db['VoiceMail'],{'foreignKey':_0x0076('0x161'),'targetKey':'mailbox'});db[_0x0076('0x1f')][_0x0076('0x118')](db['VoiceQueueReport'],{'as':_0x0076('0x163'),'foreignKey':_0x0076('0x164'),'constraints':![]});db['VoiceCallReport'][_0x0076('0x118')](db['VoiceAgentReport'],{'as':_0x0076('0x165'),'foreignKey':'uniqueid','constraints':![]});db[_0x0076('0x1f')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x0076('0x115')});db[_0x0076('0x1f')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x34')]['belongsTo'](db[_0x0076('0x142')],{'as':_0x0076('0x142'),'foreignKey':'MailAccountId'});db[_0x0076('0x34')][_0x0076('0x125')](db[_0x0076('0x10a')],{'as':_0x0076('0x10a'),'foreignKey':_0x0076('0x168'),'onDelete':_0x0076('0x169')});db[_0x0076('0x16a')][_0x0076('0x125')](db[_0x0076('0x142')],{'as':_0x0076('0x142'),'foreignKey':'MailAccountId'});db['MailServerOut'][_0x0076('0x125')](db[_0x0076('0x10a')],{'as':'CloudProvider','foreignKey':_0x0076('0x168'),'onDelete':_0x0076('0x169')});db[_0x0076('0x142')][_0x0076('0x113')](db[_0x0076('0x34')],{'as':'Imap','onDelete':_0x0076('0x114')});db[_0x0076('0x142')][_0x0076('0x113')](db['MailServerOut'],{'as':_0x0076('0x16b'),'onDelete':_0x0076('0x114')});db[_0x0076('0x142')]['hasMany'](db['Disposition'],{'as':_0x0076('0x16c'),'foreignKey':_0x0076('0x16d'),'onDelete':'cascade'});db[_0x0076('0x142')][_0x0076('0x118')](db[_0x0076('0x7d')],{'as':_0x0076('0x16e'),'foreignKey':_0x0076('0x16d')});db[_0x0076('0x142')][_0x0076('0x118')](db['MailMessage'],{'as':_0x0076('0x160'),'foreignKey':_0x0076('0x16d')});db[_0x0076('0x142')][_0x0076('0x118')](db['MailInteraction'],{'as':_0x0076('0x16f')});db[_0x0076('0x142')][_0x0076('0x118')](db['MailApplication'],{'as':_0x0076('0x170')});db[_0x0076('0x142')]['belongsTo'](db[_0x0076('0x12b')],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db[_0x0076('0x142')][_0x0076('0x125')](db[_0x0076('0x91')],{'as':_0x0076('0x91'),'foreignKey':_0x0076('0x173')});db[_0x0076('0x142')][_0x0076('0x125')](db[_0x0076('0x84')],{'as':_0x0076('0x159'),'foreignKey':_0x0076('0x15a')});db[_0x0076('0x142')][_0x0076('0x127')](db['User'],{'as':'Agents','through':_0x0076('0x174')});db[_0x0076('0x36')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':'Agents','through':_0x0076('0x2e')});db['MailQueue'][_0x0076('0x127')](db[_0x0076('0xea')],{'through':_0x0076('0x175'),'as':_0x0076('0x15d')});db[_0x0076('0x3a')][_0x0076('0x118')](db[_0x0076('0x3b')],{'as':_0x0076('0x160'),'onDelete':_0x0076('0x114'),'foreignKey':'MailInteractionId'});db[_0x0076('0x3a')][_0x0076('0x125')](db['MailAccount'],{'as':'Account','foreignKey':_0x0076('0x16d')});db['MailInteraction'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db['MailInteraction']['belongsTo'](db['User'],{'as':_0x0076('0x176'),'foreignKey':'UserId'});db['MailInteraction']['belongsToMany'](db[_0x0076('0x8a')],{'through':_0x0076('0x177'),'as':_0x0076('0x178')});db['MailInteraction'][_0x0076('0x127')](db['Tag'],{'through':_0x0076('0x177'),'as':_0x0076('0x179')});db[_0x0076('0x3a')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x17a'),'through':_0x0076('0x12f'),'foreignKey':_0x0076('0x17b')});db[_0x0076('0x3b')][_0x0076('0x118')](db[_0x0076('0xf1')],{'as':_0x0076('0x17c'),'onDelete':_0x0076('0x114')});db[_0x0076('0x3b')]['belongsTo'](db['User'],{'as':_0x0076('0x116')});db['MailMessage'][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x166')});db[_0x0076('0x3b')]['belongsTo'](db['MailInteraction'],{'as':_0x0076('0x17d'),'foreignKey':'MailInteractionId'});db[_0x0076('0x3b')][_0x0076('0x125')](db[_0x0076('0x142')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x16d')});db[_0x0076('0x3b')][_0x0076('0x125')](db[_0x0076('0x5d')],{'as':'ChatWebsite','foreignKey':_0x0076('0x17f')});db[_0x0076('0x3b')][_0x0076('0x125')](db[_0x0076('0x66')],{'as':_0x0076('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0076('0x3d')]['belongsTo'](db[_0x0076('0x116')],{'onDelete':_0x0076('0x169')});db['MailApplication'][_0x0076('0x125')](db['MailQueue'],{'onDelete':_0x0076('0x169')});db[_0x0076('0x3d')][_0x0076('0x125')](db[_0x0076('0x142')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x3d')][_0x0076('0x125')](db[_0x0076('0x82')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x158')});db['MailApplication'][_0x0076('0x125')](db['Tag'],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x180')});db[_0x0076('0x3f')][_0x0076('0x125')](db['MailAccount'],{});db[_0x0076('0x3f')][_0x0076('0x125')](db['CmList'],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db['MailQueueReport'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x3f')]['belongsTo'](db[_0x0076('0x3a')],{});db[_0x0076('0x3f')][_0x0076('0x125')](db[_0x0076('0x3b')],{});db[_0x0076('0x3f')][_0x0076('0x125')](db['User'],{});db[_0x0076('0x3f')]['belongsTo'](db['MailQueue'],{});db[_0x0076('0x41')][_0x0076('0x118')](db['DashboardItem'],{'as':_0x0076('0x181'),'onDelete':_0x0076('0x114')});db['FaxAccount']['hasMany'](db[_0x0076('0x7f')],{'as':_0x0076('0x16c'),'foreignKey':'FaxAccountId','onDelete':_0x0076('0x114')});db['FaxAccount']['hasMany'](db[_0x0076('0x7d')],{'as':'Answers','foreignKey':_0x0076('0x182')});db['FaxAccount'][_0x0076('0x118')](db[_0x0076('0x121')],{'as':_0x0076('0x16f')});db[_0x0076('0x44')][_0x0076('0x118')](db['FaxApplication'],{'as':'Applications'});db[_0x0076('0x44')][_0x0076('0x118')](db[_0x0076('0x16')],{'as':_0x0076('0x183'),'onDelete':'cascade'});db['FaxAccount'][_0x0076('0x118')](db[_0x0076('0x49')],{'as':_0x0076('0x160')});db[_0x0076('0x44')][_0x0076('0x125')](db[_0x0076('0x27')],{'as':_0x0076('0x27')});db[_0x0076('0x44')]['belongsTo'](db[_0x0076('0x12b')],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db['FaxAccount'][_0x0076('0x125')](db[_0x0076('0x84')],{'as':_0x0076('0x159'),'foreignKey':_0x0076('0x15a')});db[_0x0076('0x44')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x141')});db['FaxApplication'][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x46')][_0x0076('0x125')](db[_0x0076('0x4b')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x46')][_0x0076('0x125')](db[_0x0076('0x44')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x46')][_0x0076('0x125')](db[_0x0076('0x8a')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x180')});db[_0x0076('0x121')][_0x0076('0x118')](db[_0x0076('0x49')],{'as':_0x0076('0x160'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x184')});db[_0x0076('0x121')][_0x0076('0x125')](db[_0x0076('0x44')],{'as':_0x0076('0x17e'),'foreignKey':'FaxAccountId'});db[_0x0076('0x121')]['belongsTo'](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x121')][_0x0076('0x125')](db[_0x0076('0x116')],{'as':_0x0076('0x176'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x121')]['belongsToMany'](db[_0x0076('0x8a')],{'through':_0x0076('0x185'),'as':_0x0076('0x178')});db[_0x0076('0x121')]['belongsToMany'](db[_0x0076('0x8a')],{'through':'fax_interaction_has_tags','as':_0x0076('0x179')});db[_0x0076('0x121')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x17a'),'through':_0x0076('0x132'),'foreignKey':_0x0076('0x184')});db[_0x0076('0x49')][_0x0076('0x125')](db['User'],{'onDelete':_0x0076('0x114'),'as':'User'});db[_0x0076('0x49')][_0x0076('0x125')](db['FaxInteraction'],{'as':'Interaction','foreignKey':_0x0076('0x184')});db['FaxMessage'][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':'cascade','as':_0x0076('0x166')});db['FaxMessage']['belongsTo'](db[_0x0076('0xf1')],{'as':_0x0076('0xf1'),'foreignKey':_0x0076('0x186')});db[_0x0076('0x49')][_0x0076('0x125')](db[_0x0076('0x44')],{'as':_0x0076('0x17e'),'foreignKey':'FaxAccountId'});db[_0x0076('0x4b')][_0x0076('0x127')](db['User'],{'as':'Agents','through':_0x0076('0x138')});db['FaxQueue'][_0x0076('0x127')](db['Team'],{'through':_0x0076('0x187'),'as':_0x0076('0x15d')});db['FaxQueueReport'][_0x0076('0x125')](db[_0x0076('0x44')],{});db[_0x0076('0x4c')][_0x0076('0x125')](db['CmList'],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db['FaxQueueReport'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':'Contact','foreignKey':'ContactId'});db[_0x0076('0x4c')][_0x0076('0x125')](db[_0x0076('0x121')],{});db[_0x0076('0x4c')][_0x0076('0x125')](db['FaxMessage'],{});db[_0x0076('0x4c')][_0x0076('0x125')](db['User'],{});db['FaxQueueReport'][_0x0076('0x125')](db[_0x0076('0x4b')],{});db[_0x0076('0x188')][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':_0x0076('0x16c'),'foreignKey':_0x0076('0x189'),'onDelete':_0x0076('0x114')});db[_0x0076('0x188')][_0x0076('0x118')](db['CannedAnswer'],{'as':_0x0076('0x16e'),'foreignKey':_0x0076('0x189')});db['SmsAccount'][_0x0076('0x118')](db['SmsMessage'],{'as':'Messages','foreignKey':'SmsAccountId'});db[_0x0076('0x188')][_0x0076('0x118')](db['SmsInteraction'],{'as':_0x0076('0x16f')});db[_0x0076('0x188')]['hasMany'](db[_0x0076('0x4f')],{'as':_0x0076('0x170')});db['SmsAccount'][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':'List','foreignKey':_0x0076('0x172')});db[_0x0076('0x188')]['belongsTo'](db[_0x0076('0x84')],{'as':'mandatoryDispositionPause','foreignKey':_0x0076('0x15a')});db[_0x0076('0x188')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x147')});db[_0x0076('0x4f')][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':'restrict'});db[_0x0076('0x4f')][_0x0076('0x125')](db[_0x0076('0x54')],{'onDelete':_0x0076('0x169')});db['SmsApplication'][_0x0076('0x125')](db[_0x0076('0x188')],{'onDelete':_0x0076('0x169')});db['SmsApplication'][_0x0076('0x125')](db[_0x0076('0x82')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x158')});db['SmsApplication']['belongsTo'](db[_0x0076('0x8a')],{'onDelete':'restrict','foreignKey':_0x0076('0x180')});db[_0x0076('0x51')][_0x0076('0x118')](db[_0x0076('0x18a')],{'as':_0x0076('0x160'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x18b')});db['SmsInteraction'][_0x0076('0x125')](db[_0x0076('0x188')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x189')});db[_0x0076('0x51')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':'ContactId'});db['SmsInteraction'][_0x0076('0x125')](db[_0x0076('0x116')],{'as':'Owner','foreignKey':_0x0076('0x115')});db[_0x0076('0x51')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':'sms_interaction_has_tags','as':_0x0076('0x178')});db[_0x0076('0x51')][_0x0076('0x127')](db['Tag'],{'through':_0x0076('0x18c'),'as':_0x0076('0x179')});db[_0x0076('0x51')]['belongsToMany'](db[_0x0076('0x116')],{'as':'Users','through':_0x0076('0x133'),'foreignKey':'SmsInteractionId'});db[_0x0076('0x18a')]['belongsTo'](db[_0x0076('0x116')],{'as':_0x0076('0x116')});db[_0x0076('0x18a')][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':'cascade','as':'Contact'});db['SmsMessage'][_0x0076('0x125')](db[_0x0076('0x51')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x17d'),'foreignKey':'SmsInteractionId'});db[_0x0076('0x18a')][_0x0076('0x125')](db[_0x0076('0x188')],{'as':_0x0076('0x17e'),'foreignKey':'SmsAccountId'});db[_0x0076('0x54')]['belongsToMany'](db['User'],{'as':_0x0076('0x15c'),'through':_0x0076('0x139'),'foreignKey':_0x0076('0x18d')});db['SmsQueue']['belongsToMany'](db['Team'],{'through':_0x0076('0x18e'),'as':_0x0076('0x15d')});db[_0x0076('0x55')][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':'Dispositions','foreignKey':_0x0076('0x18f'),'onDelete':'cascade'});db[_0x0076('0x55')][_0x0076('0x118')](db[_0x0076('0x7d')],{'as':'Answers','foreignKey':_0x0076('0x18f')});db['OpenchannelAccount'][_0x0076('0x118')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0x0076('0x55')][_0x0076('0x118')](db[_0x0076('0x5a')],{'as':_0x0076('0x160'),'foreignKey':_0x0076('0x18f')});db['OpenchannelAccount'][_0x0076('0x118')](db[_0x0076('0x57')],{'as':_0x0076('0x170'),'foreignKey':_0x0076('0x18f')});db[_0x0076('0x55')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db[_0x0076('0x55')][_0x0076('0x125')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0076('0x15a')});db['OpenchannelAccount'][_0x0076('0x127')](db['User'],{'as':_0x0076('0x15c'),'through':_0x0076('0x145')});db[_0x0076('0x57')][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x57')][_0x0076('0x125')](db[_0x0076('0x13a')],{'onDelete':'restrict','foreignKey':_0x0076('0x190')});db[_0x0076('0x57')][_0x0076('0x125')](db['OpenchannelAccount'],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x18f')});db[_0x0076('0x57')][_0x0076('0x125')](db[_0x0076('0x82')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['OpenchannelApplication'][_0x0076('0x125')](db[_0x0076('0x8a')],{'onDelete':_0x0076('0x169'),'foreignKey':'TagId'});db[_0x0076('0x58')]['hasMany'](db[_0x0076('0x5a')],{'as':_0x0076('0x160'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x191')});db[_0x0076('0x58')][_0x0076('0x125')](db['OpenchannelAccount'],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x18f')});db['OpenchannelInteraction'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db['OpenchannelInteraction'][_0x0076('0x125')](db['User'],{'as':_0x0076('0x176'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x58')]['belongsToMany'](db[_0x0076('0x8a')],{'through':'openchannel_interaction_has_tags','as':_0x0076('0x178')});db['OpenchannelInteraction'][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':_0x0076('0x192'),'as':_0x0076('0x179')});db[_0x0076('0x58')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x17a'),'through':_0x0076('0x193'),'foreignKey':_0x0076('0x191')});db[_0x0076('0x5a')][_0x0076('0x125')](db['User'],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x116')});db['OpenchannelMessage'][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x166')});db[_0x0076('0x5a')][_0x0076('0x125')](db['OpenchannelInteraction'],{'onDelete':_0x0076('0x114'),'as':'Interaction','foreignKey':_0x0076('0x191')});db['OpenchannelMessage'][_0x0076('0x125')](db[_0x0076('0xf1')],{'as':_0x0076('0xf1'),'foreignKey':_0x0076('0x186')});db[_0x0076('0x5a')]['belongsTo'](db[_0x0076('0x55')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x18f')});db[_0x0076('0x13a')][_0x0076('0x127')](db['User'],{'as':_0x0076('0x15c'),'through':'UserOpenchannelQueue','foreignKey':_0x0076('0x190')});db[_0x0076('0x13a')][_0x0076('0x127')](db['Team'],{'through':_0x0076('0x194'),'as':_0x0076('0x15d')});db[_0x0076('0x5d')][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':_0x0076('0x16c'),'foreignKey':_0x0076('0x17f'),'onDelete':_0x0076('0x114')});db['ChatWebsite'][_0x0076('0x118')](db['CannedAnswer'],{'as':_0x0076('0x16e'),'foreignKey':_0x0076('0x17f')});db[_0x0076('0x5d')][_0x0076('0x118')](db['ChatProactiveAction'],{'as':'ProactiveActions'});db[_0x0076('0x5d')]['hasMany'](db['ChatInteraction'],{'as':_0x0076('0x16f')});db['ChatWebsite'][_0x0076('0x118')](db['ChatApplication'],{'as':_0x0076('0x170')});db[_0x0076('0x5d')][_0x0076('0x118')](db['ChatMessage'],{'as':'Messages'});db[_0x0076('0x5d')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':'List','foreignKey':'ListId'});db[_0x0076('0x5d')][_0x0076('0x125')](db[_0x0076('0x82')],{'as':'Interval','foreignKey':_0x0076('0x158')});db['ChatWebsite']['belongsTo'](db[_0x0076('0x142')],{'as':_0x0076('0x142'),'foreignKey':'MailAccountId'});db[_0x0076('0x5d')]['belongsTo'](db[_0x0076('0x84')],{'as':'mandatoryDispositionPause','foreignKey':_0x0076('0x15a')});db[_0x0076('0x5d')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x13f')});db[_0x0076('0x195')][_0x0076('0x125')](db[_0x0076('0x55')],{});db['OpenchannelQueueReport'][_0x0076('0x125')](db['CmList'],{'as':_0x0076('0x171'),'foreignKey':'ListId'});db[_0x0076('0x195')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x195')][_0x0076('0x125')](db[_0x0076('0x58')],{});db[_0x0076('0x195')][_0x0076('0x125')](db[_0x0076('0x5a')],{});db[_0x0076('0x195')][_0x0076('0x125')](db[_0x0076('0x116')],{});db[_0x0076('0x195')][_0x0076('0x125')](db['OpenchannelQueue'],{});db[_0x0076('0x60')][_0x0076('0x125')](db[_0x0076('0x116')],{'as':_0x0076('0x196'),'foreignKey':_0x0076('0x115'),'onDelete':_0x0076('0x169')});db[_0x0076('0x60')][_0x0076('0x125')](db[_0x0076('0x68')],{'as':_0x0076('0x197'),'foreignKey':_0x0076('0x198'),'onDelete':_0x0076('0x169')});db[_0x0076('0x60')][_0x0076('0x125')](db[_0x0076('0x5d')],{'as':_0x0076('0x199'),'foreignKey':_0x0076('0x17f'),'onDelete':_0x0076('0x169')});db[_0x0076('0x60')][_0x0076('0x125')](db[_0x0076('0x8a')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x180')});db[_0x0076('0x62')][_0x0076('0x118')](db[_0x0076('0x64')],{'as':_0x0076('0x160'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x19a')});db[_0x0076('0x62')][_0x0076('0x125')](db['ChatWebsite'],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x17f')});db[_0x0076('0x62')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x62')]['belongsTo'](db['User'],{'as':_0x0076('0x176'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x62')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':'chat_interaction_has_tags','as':'Tags'});db[_0x0076('0x62')]['belongsToMany'](db[_0x0076('0x8a')],{'through':_0x0076('0x19b'),'as':_0x0076('0x179')});db[_0x0076('0x62')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x17a'),'through':_0x0076('0x130'),'foreignKey':'ChatInteractionId'});db[_0x0076('0x64')][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x116')});db[_0x0076('0x64')][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':'cascade','as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x64')][_0x0076('0x125')](db[_0x0076('0x62')],{'onDelete':_0x0076('0x114'),'as':'Interaction','foreignKey':_0x0076('0x19a')});db[_0x0076('0x64')][_0x0076('0x125')](db['Attachment'],{'as':_0x0076('0xf1'),'foreignKey':_0x0076('0x186')});db['ChatMessage'][_0x0076('0x125')](db[_0x0076('0x5d')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x17f')});db['ChatOfflineMessage'][_0x0076('0x118')](db['Attachment'],{'as':'Attachments','foreignKey':_0x0076('0x19c'),'onDelete':'cascade','hooks':!![]});db[_0x0076('0x66')][_0x0076('0x125')](db[_0x0076('0x6f')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db['ChatOfflineMessage']['belongsTo'](db[_0x0076('0x5d')],{'as':_0x0076('0x17e'),'foreignKey':'ChatWebsiteId'});db['ChatQueue'][_0x0076('0x127')](db[_0x0076('0x116')],{'as':'Agents','through':'UserChatQueue','hooks':!![]});db[_0x0076('0x68')][_0x0076('0x127')](db[_0x0076('0xea')],{'through':_0x0076('0x19d'),'as':'Teams'});db[_0x0076('0x69')]['hasMany'](db[_0x0076('0xd7')],{'as':_0x0076('0x160'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db[_0x0076('0x69')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':'Members','through':_0x0076('0x129')});db['ChatProactiveAction']['belongsTo'](db[_0x0076('0x5d')],{'as':'Website','foreignKey':'ChatWebsiteId'});db[_0x0076('0x6d')][_0x0076('0x118')](db[_0x0076('0x6f')],{'as':_0x0076('0x12a'),'foreignKey':_0x0076('0x19e')});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x19f')],{'as':_0x0076('0x1a0'),'foreignKey':_0x0076('0x1a1')});db['CmContact']['hasMany'](db[_0x0076('0x1a2')],{'as':_0x0076('0x150'),'foreignKey':'ContactId'});db[_0x0076('0x6f')]['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'ContactId'});db[_0x0076('0x6f')]['hasMany'](db[_0x0076('0x11d')],{'as':'HopperHistories','foreignKey':_0x0076('0x167')});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x11e')],{'as':_0x0076('0x11e'),'foreignKey':_0x0076('0x167')});db['CmContact']['hasMany'](db[_0x0076('0x154')],{'as':_0x0076('0x155'),'foreignKey':'ContactId'});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x58')],{'as':_0x0076('0x11f'),'foreignKey':_0x0076('0x167'),'onDelete':_0x0076('0x169')});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x62')],{'as':_0x0076('0x1a3'),'foreignKey':_0x0076('0x167'),'onDelete':_0x0076('0x169')});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x51')],{'as':_0x0076('0x120'),'foreignKey':_0x0076('0x167'),'onDelete':'restrict'});db[_0x0076('0x6f')]['hasMany'](db[_0x0076('0x121')],{'as':_0x0076('0x131'),'foreignKey':_0x0076('0x167'),'onDelete':_0x0076('0x169')});db[_0x0076('0x6f')][_0x0076('0x118')](db[_0x0076('0x3a')],{'as':_0x0076('0x122'),'foreignKey':'ContactId','onDelete':_0x0076('0x169')});db[_0x0076('0x6f')]['belongsTo'](db[_0x0076('0x6d')],{'as':_0x0076('0x1a4'),'foreignKey':'CompanyId'});db[_0x0076('0x6f')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':'List','foreignKey':_0x0076('0x172'),'onDelete':_0x0076('0x114')});db[_0x0076('0x6f')][_0x0076('0x127')](db['User'],{'as':_0x0076('0x17a'),'through':_0x0076('0x1a5')});db[_0x0076('0x6f')][_0x0076('0x127')](db[_0x0076('0x8a')],{'as':_0x0076('0x178'),'through':_0x0076('0x1a6')});db[_0x0076('0x6f')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':_0x0076('0x1a6'),'as':_0x0076('0x179')});db[_0x0076('0x1a2')][_0x0076('0x118')](db[_0x0076('0x8f')],{'as':_0x0076('0x1a7'),'foreignKey':_0x0076('0x1a8')});db['CmHopper'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x0076('0x114')});db[_0x0076('0x1a2')]['belongsTo'](db['CmList'],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172'),'onDelete':_0x0076('0x114')});db[_0x0076('0x1a2')][_0x0076('0x125')](db['User'],{'as':_0x0076('0x196'),'foreignKey':'UserId'});db['CmHopper'][_0x0076('0x125')](db[_0x0076('0x19')],{'as':_0x0076('0x197'),'foreignKey':_0x0076('0x151'),'onDelete':_0x0076('0x114')});db['CmHopper'][_0x0076('0x125')](db[_0x0076('0x1a9')],{'as':_0x0076('0x1a9'),'foreignKey':'CampaignId','onDelete':_0x0076('0x114')});db['CmHopper'][_0x0076('0x125')](db['User'],{'as':'Owner','foreignKey':_0x0076('0x1aa')});db['CmHopperBlack'][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':'Contact','foreignKey':_0x0076('0x167'),'onDelete':'cascade'});db[_0x0076('0x72')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172'),'onDelete':_0x0076('0x114')});db[_0x0076('0x72')][_0x0076('0x125')](db[_0x0076('0x19')],{'as':'Queue','foreignKey':_0x0076('0x151'),'onDelete':_0x0076('0x114')});db['CmHopperBlack'][_0x0076('0x125')](db[_0x0076('0x1a9')],{'as':_0x0076('0x1a9'),'foreignKey':_0x0076('0x1ab'),'onDelete':_0x0076('0x114')});db[_0x0076('0x7b')][_0x0076('0x118')](db[_0x0076('0x81')],{'as':{'plural':_0x0076('0x1ac'),'singular':'OneAll'},'foreignKey':_0x0076('0x1ad'),'onDelete':_0x0076('0x114'),'hooks':!![]});db[_0x0076('0x7b')][_0x0076('0x118')](db[_0x0076('0x81')],{'as':{'plural':_0x0076('0x1ae'),'singular':_0x0076('0x1af')},'foreignKey':'AutomationAnyId','onDelete':_0x0076('0x114'),'hooks':!![]});db['Automation'][_0x0076('0x118')](db[_0x0076('0x79')],{'as':_0x0076('0x1b0'),'foreignKey':_0x0076('0x1b1'),'onDelete':_0x0076('0x114'),'hooks':!![]});db['Disposition'][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':_0x0076('0x16c'),'foreignKey':'ParentId','onDelete':'cascade'});db['Interval'][_0x0076('0x118')](db['Interval'],{'as':_0x0076('0x1b2'),'foreignKey':_0x0076('0x158'),'onDelete':'cascade','hooks':!![],'required':![]});db['Interval']['hasMany'](db['VoiceExtension'],{'as':_0x0076('0x11b'),'foreignKey':'IntervalId','onDelete':'restrict'});db[_0x0076('0x82')][_0x0076('0x118')](db[_0x0076('0x3d')],{'as':'MailApplications','foreignKey':_0x0076('0x158')});db[_0x0076('0x82')][_0x0076('0x118')](db['ChatApplication'],{'as':_0x0076('0x1b3'),'foreignKey':_0x0076('0x158')});db[_0x0076('0x82')][_0x0076('0x118')](db[_0x0076('0x46')],{'as':_0x0076('0x1b4'),'foreignKey':'IntervalId'});db['Interval'][_0x0076('0x118')](db[_0x0076('0x4f')],{'as':'SmsApplications','foreignKey':'IntervalId'});db['Schedule']['belongsTo'](db['MailAccount'],{});db[_0x0076('0x87')]['belongsTo'](db[_0x0076('0x9c')],{'foreignKey':'DefaultReportId'});db[_0x0076('0x87')][_0x0076('0x125')](db[_0x0076('0x9a')],{'foreignKey':_0x0076('0x1b5')});db[_0x0076('0x14d')][_0x0076('0x127')](db[_0x0076('0x17')],{'as':_0x0076('0x1b6'),'through':_0x0076('0x14e'),'onDelete':'restrict'});db[_0x0076('0x8a')]['belongsToMany'](db[_0x0076('0x6f')],{'through':_0x0076('0x1a6')});db['Tag'][_0x0076('0x127')](db[_0x0076('0x62')],{'through':_0x0076('0x19b')});db['Tag'][_0x0076('0x127')](db[_0x0076('0x3a')],{'through':_0x0076('0x177')});db[_0x0076('0x8a')]['belongsToMany'](db[_0x0076('0x51')],{'through':'sms_interaction_has_tags'});db['Tag'][_0x0076('0x127')](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db[_0x0076('0x8a')]['belongsToMany'](db[_0x0076('0x58')],{'through':_0x0076('0x192')});db['Tag']['belongsToMany'](db[_0x0076('0x123')],{'through':_0x0076('0x1b7')});db[_0x0076('0x19f')]['belongsTo'](db['ContactItemType'],{'as':_0x0076('0x1b8'),'foreignKey':'ItemTypeId'});db['CmHopperAdditionalPhone'][_0x0076('0x125')](db[_0x0076('0x1a2')],{'as':'Hopper','foreignKey':_0x0076('0x1a8')});db[_0x0076('0x19f')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':'Contact','foreignKey':_0x0076('0x1a1')});db['Trigger'][_0x0076('0x118')](db[_0x0076('0x81')],{'as':{'plural':'AllConditions','singular':_0x0076('0x1b9')},'foreignKey':_0x0076('0x1ba'),'onDelete':_0x0076('0x114'),'hooks':!![]});db[_0x0076('0x93')][_0x0076('0x118')](db[_0x0076('0x81')],{'as':{'plural':_0x0076('0x1bb'),'singular':_0x0076('0x1bc')},'foreignKey':_0x0076('0x1bd'),'onDelete':_0x0076('0x114'),'hooks':!![]});db['Trigger'][_0x0076('0x118')](db[_0x0076('0x79')],{'as':_0x0076('0x1b0'),'foreignKey':_0x0076('0x1be'),'onDelete':_0x0076('0x114'),'hooks':!![]});db[_0x0076('0x9a')]['hasMany'](db[_0x0076('0x1bf')],{'as':_0x0076('0x1c0'),'onDelete':'cascade','foreignKey':_0x0076('0x1b5'),'hooks':!![]});db['AnalyticDefaultReport'][_0x0076('0x118')](db[_0x0076('0x1bf')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x0076('0x1c1')});db[_0x0076('0xa0')][_0x0076('0x118')](db[_0x0076('0x1bf')],{'as':'Fields','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c2')});db[_0x0076('0x1bf')][_0x0076('0x125')](db[_0x0076('0xa0')],{'foreignKey':_0x0076('0x1c2')});db[_0x0076('0xa4')][_0x0076('0x118')](db[_0x0076('0xa6')],{'as':_0x0076('0x1c3'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x0076('0xa6')][_0x0076('0x118')](db[_0x0076('0xa8')],{'as':_0x0076('0x1c4'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xa6')][_0x0076('0x118')](db['SalesforceField'],{'as':_0x0076('0x1c6'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xa6')][_0x0076('0x118')](db[_0x0076('0xa8')],{'as':'Fields','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xa6')][_0x0076('0x125')](db[_0x0076('0xa4')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1c9')});db['SalesforceField'][_0x0076('0x118')](db['SalesforceField'],{'as':'Subject','foreignKey':_0x0076('0x1c5')});db[_0x0076('0xa8')][_0x0076('0x118')](db['SalesforceField'],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xa8')][_0x0076('0x118')](db[_0x0076('0xa8')],{'as':_0x0076('0x1cb'),'foreignKey':'FieldId'});db[_0x0076('0xa8')][_0x0076('0x125')](db[_0x0076('0x95')],{'as':'Variable','foreignKey':_0x0076('0x1cc')});db[_0x0076('0xaa')][_0x0076('0x118')](db['SugarcrmConfiguration'],{'as':_0x0076('0x1c3'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xab')]['hasMany'](db['SugarcrmField'],{'as':_0x0076('0x1c4'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c5')});db['SugarcrmConfiguration'][_0x0076('0x118')](db['SugarcrmField'],{'as':_0x0076('0x1c6'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x0076('0xab')][_0x0076('0x118')](db[_0x0076('0xac')],{'as':_0x0076('0x1c0'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xab')][_0x0076('0x125')](db['SugarcrmAccount'],{'as':_0x0076('0x17e'),'foreignKey':'AccountId'});db[_0x0076('0xac')][_0x0076('0x118')](db[_0x0076('0xac')],{'as':_0x0076('0x1cd'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xac')][_0x0076('0x118')](db[_0x0076('0xac')],{'as':'Description','foreignKey':_0x0076('0x1c7')});db[_0x0076('0xac')][_0x0076('0x118')](db['SugarcrmField'],{'as':'Field','foreignKey':_0x0076('0x1c8')});db[_0x0076('0xac')][_0x0076('0x125')](db['Variable'],{'as':_0x0076('0x95'),'foreignKey':_0x0076('0x1cc')});db[_0x0076('0xae')]['hasMany'](db[_0x0076('0xb0')],{'as':_0x0076('0x1c3'),'onDelete':'cascade','foreignKey':_0x0076('0x1c9')});db[_0x0076('0xb0')][_0x0076('0x118')](db[_0x0076('0xb1')],{'as':'Subjects','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xb0')][_0x0076('0x118')](db[_0x0076('0xb1')],{'as':_0x0076('0x1c6'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xb0')]['hasMany'](db['DeskField'],{'as':_0x0076('0x1c0'),'onDelete':'cascade','foreignKey':_0x0076('0x1c8')});db[_0x0076('0xb0')][_0x0076('0x125')](db[_0x0076('0xae')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xb0')][_0x0076('0x127')](db['Tag'],{'through':_0x0076('0x1ce')});db[_0x0076('0xb1')][_0x0076('0x118')](db[_0x0076('0xb1')],{'as':_0x0076('0x1cd'),'foreignKey':'SubjectId'});db['DeskField'][_0x0076('0x118')](db[_0x0076('0xb1')],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db['DeskField'][_0x0076('0x118')](db['DeskField'],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xb1')][_0x0076('0x125')](db[_0x0076('0x95')],{'as':_0x0076('0x95'),'foreignKey':_0x0076('0x1cc')});db[_0x0076('0x1cf')][_0x0076('0x118')](db[_0x0076('0xb3')],{'as':_0x0076('0x1c3'),'onDelete':_0x0076('0x114'),'foreignKey':'AccountId'});db[_0x0076('0xb3')][_0x0076('0x118')](db[_0x0076('0xb5')],{'as':_0x0076('0x1c4'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c5')});db['ZohoConfiguration'][_0x0076('0x118')](db['ZohoField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x0076('0x1c7')});db['ZohoConfiguration'][_0x0076('0x118')](db[_0x0076('0xb5')],{'as':_0x0076('0x1c0'),'onDelete':'cascade','foreignKey':_0x0076('0x1c8')});db['ZohoConfiguration'][_0x0076('0x125')](db[_0x0076('0x1cf')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xb5')]['hasMany'](db['ZohoField'],{'as':'Subject','foreignKey':_0x0076('0x1c5')});db['ZohoField']['hasMany'](db[_0x0076('0xb5')],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xb5')][_0x0076('0x118')](db[_0x0076('0xb5')],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xb5')][_0x0076('0x125')](db[_0x0076('0x95')],{'as':_0x0076('0x95'),'foreignKey':'VariableId'});db[_0x0076('0xb6')][_0x0076('0x118')](db[_0x0076('0x1d0')],{'as':_0x0076('0x1c3'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0x1d0')][_0x0076('0x118')](db['ZendeskField'],{'as':_0x0076('0x1c4'),'foreignKey':'SubjectId'});db[_0x0076('0x1d0')]['hasMany'](db[_0x0076('0x1d1')],{'as':_0x0076('0x1c6'),'foreignKey':_0x0076('0x1c7')});db['ZendeskConfiguration'][_0x0076('0x118')](db[_0x0076('0x1d1')],{'as':_0x0076('0x1c0'),'foreignKey':_0x0076('0x1c8')});db['ZendeskConfiguration'][_0x0076('0x125')](db[_0x0076('0xb6')],{'as':_0x0076('0x17e'),'foreignKey':'AccountId'});db['ZendeskConfiguration']['belongsToMany'](db[_0x0076('0x8a')],{'through':_0x0076('0x1d2')});db['ZendeskField'][_0x0076('0x118')](db['ZendeskField'],{'as':'Subject','foreignKey':_0x0076('0x1c5')});db['ZendeskField']['hasMany'](db[_0x0076('0x1d1')],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0x1d1')][_0x0076('0x118')](db[_0x0076('0x1d1')],{'as':'Field','foreignKey':_0x0076('0x1c8')});db[_0x0076('0x1d1')][_0x0076('0x125')](db[_0x0076('0x95')],{'as':_0x0076('0x95'),'foreignKey':'VariableId'});db[_0x0076('0xba')][_0x0076('0x118')](db['FreshdeskConfiguration'],{'as':_0x0076('0x1c3'),'onDelete':_0x0076('0x114'),'foreignKey':'AccountId'});db[_0x0076('0xbc')][_0x0076('0x118')](db[_0x0076('0xbe')],{'as':'Subjects','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xbc')][_0x0076('0x118')](db['FreshdeskField'],{'as':_0x0076('0x1c6'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xbc')]['hasMany'](db['FreshdeskField'],{'as':_0x0076('0x1c0'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xbc')][_0x0076('0x125')](db[_0x0076('0xba')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xbc')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':_0x0076('0x1d3')});db['FreshdeskField'][_0x0076('0x118')](db['FreshdeskField'],{'as':_0x0076('0x1cd'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xbe')][_0x0076('0x118')](db[_0x0076('0xbe')],{'as':_0x0076('0x1ca'),'foreignKey':'DescriptionId'});db[_0x0076('0xbe')][_0x0076('0x118')](db['FreshdeskField'],{'as':_0x0076('0x1cb'),'foreignKey':'FieldId'});db['FreshdeskField'][_0x0076('0x125')](db[_0x0076('0x95')],{'as':'Variable','foreignKey':_0x0076('0x1cc')});db[_0x0076('0xc0')]['hasMany'](db['VtigerConfiguration'],{'as':'Configurations','onDelete':_0x0076('0x114'),'foreignKey':'AccountId'});db[_0x0076('0xc1')][_0x0076('0x118')](db['VtigerField'],{'as':_0x0076('0x1c4'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xc1')][_0x0076('0x118')](db[_0x0076('0xc3')],{'as':_0x0076('0x1c6'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xc1')][_0x0076('0x118')](db[_0x0076('0xc3')],{'as':_0x0076('0x1c0'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xc1')][_0x0076('0x125')](db[_0x0076('0xc0')],{'as':_0x0076('0x17e'),'foreignKey':'AccountId'});db[_0x0076('0xc3')][_0x0076('0x118')](db[_0x0076('0xc3')],{'as':_0x0076('0x1cd'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xc3')][_0x0076('0x118')](db[_0x0076('0xc3')],{'as':'Description','foreignKey':_0x0076('0x1c7')});db['VtigerField'][_0x0076('0x118')](db[_0x0076('0xc3')],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xc3')][_0x0076('0x125')](db[_0x0076('0x95')],{'as':'Variable','foreignKey':_0x0076('0x1cc')});db[_0x0076('0xc5')][_0x0076('0x118')](db['ServicenowConfiguration'],{'as':_0x0076('0x1c3'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0x1d4')][_0x0076('0x118')](db['ServicenowField'],{'as':'Subjects','foreignKey':_0x0076('0x1c5')});db[_0x0076('0x1d4')][_0x0076('0x118')](db[_0x0076('0xc7')],{'as':'Descriptions','foreignKey':_0x0076('0x1c7')});db[_0x0076('0x1d4')][_0x0076('0x118')](db[_0x0076('0xc7')],{'as':_0x0076('0x1c0'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0x1d4')][_0x0076('0x125')](db[_0x0076('0xc5')],{'as':'Account','foreignKey':'AccountId'});db['ServicenowField']['hasMany'](db[_0x0076('0xc7')],{'as':'Subject','foreignKey':_0x0076('0x1c5')});db[_0x0076('0xc7')][_0x0076('0x118')](db[_0x0076('0xc7')],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xc7')]['hasMany'](db[_0x0076('0xc7')],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db['ServicenowField'][_0x0076('0x125')](db['Variable'],{'as':_0x0076('0x95'),'foreignKey':_0x0076('0x1cc')});db['Dynamics365Account'][_0x0076('0x118')](db[_0x0076('0xcb')],{'as':'Configurations','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xc9')][_0x0076('0x125')](db[_0x0076('0x10a')],{'as':'CloudProvider','foreignKey':'CloudProviderId'});db['Dynamics365Configuration'][_0x0076('0x118')](db[_0x0076('0xcd')],{'as':_0x0076('0x1c4'),'onDelete':'cascade','foreignKey':_0x0076('0x1c5')});db[_0x0076('0xcb')][_0x0076('0x118')](db[_0x0076('0xcd')],{'as':_0x0076('0x1c6'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xcb')][_0x0076('0x118')](db[_0x0076('0xcd')],{'as':_0x0076('0x1c0'),'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xcb')][_0x0076('0x125')](db['Dynamics365Account'],{'as':'Account','foreignKey':_0x0076('0x1c9')});db[_0x0076('0xcd')][_0x0076('0x118')](db['Dynamics365Field'],{'as':_0x0076('0x1cd'),'foreignKey':_0x0076('0x1c5')});db[_0x0076('0xcd')][_0x0076('0x118')](db[_0x0076('0xcd')],{'as':_0x0076('0x1ca'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xcd')][_0x0076('0x118')](db['Dynamics365Field'],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db[_0x0076('0xcd')][_0x0076('0x125')](db['Variable'],{'as':_0x0076('0x95'),'foreignKey':_0x0076('0x1cc')});db[_0x0076('0xcf')][_0x0076('0x118')](db['FreshsalesConfiguration'],{'as':'Configurations','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0xd1')][_0x0076('0x118')](db['FreshsalesField'],{'as':_0x0076('0x1c4'),'foreignKey':_0x0076('0x1c5')});db['FreshsalesConfiguration'][_0x0076('0x118')](db[_0x0076('0x1d5')],{'as':_0x0076('0x1c6'),'foreignKey':_0x0076('0x1c7')});db[_0x0076('0xd1')]['hasMany'](db['FreshsalesField'],{'as':_0x0076('0x1c0'),'foreignKey':'FieldId'});db[_0x0076('0xd1')][_0x0076('0x125')](db[_0x0076('0xcf')],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1c9')});db[_0x0076('0x1d5')][_0x0076('0x118')](db['FreshsalesField'],{'as':_0x0076('0x1cd'),'foreignKey':_0x0076('0x1c5')});db['FreshsalesField']['hasMany'](db[_0x0076('0x1d5')],{'as':_0x0076('0x1ca'),'foreignKey':'DescriptionId'});db[_0x0076('0x1d5')][_0x0076('0x118')](db['FreshsalesField'],{'as':_0x0076('0x1cb'),'foreignKey':_0x0076('0x1c8')});db['FreshsalesField'][_0x0076('0x125')](db[_0x0076('0x95')],{'as':_0x0076('0x95'),'foreignKey':_0x0076('0x1cc')});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x5d')],{});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':'List','foreignKey':_0x0076('0x172')});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x62')],{});db[_0x0076('0xd5')]['belongsTo'](db[_0x0076('0x64')],{});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x116')],{});db[_0x0076('0xd5')][_0x0076('0x125')](db[_0x0076('0x68')],{});db[_0x0076('0xd7')]['belongsTo'](db[_0x0076('0x116')],{'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1d6')});db[_0x0076('0xd7')][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1d7')});db[_0x0076('0x154')][_0x0076('0x118')](db[_0x0076('0xdb')],{'foreignKey':_0x0076('0x1d8'),'onDelete':'cascade'});db['JscriptySessionReport'][_0x0076('0x118')](db[_0x0076('0xd9')],{'foreignKey':_0x0076('0x1d8'),'onDelete':_0x0076('0x114')});db['SmsQueueReport'][_0x0076('0x125')](db[_0x0076('0x188')],{});db[_0x0076('0xde')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':_0x0076('0x171'),'foreignKey':_0x0076('0x172')});db[_0x0076('0xde')][_0x0076('0x125')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x0076('0xde')][_0x0076('0x125')](db[_0x0076('0x51')],{});db[_0x0076('0xde')]['belongsTo'](db[_0x0076('0x18a')],{});db[_0x0076('0xde')][_0x0076('0x125')](db[_0x0076('0x116')],{});db[_0x0076('0xde')][_0x0076('0x125')](db[_0x0076('0x54')],{});db[_0x0076('0x1d9')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x0076('0x118')](db[_0x0076('0xdb')],{'foreignKey':_0x0076('0x1da')});db['JscriptyProject'][_0x0076('0x118')](db['JscriptyAnswerReport'],{'foreignKey':_0x0076('0x1da')});db['Team'][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x12e')});db[_0x0076('0xea')][_0x0076('0x127')](db[_0x0076('0x19')],{'through':'TeamVoiceQueue','as':_0x0076('0x1db')});db['Team'][_0x0076('0x127')](db[_0x0076('0x36')],{'through':'team_has_mail_queues','as':_0x0076('0x136')});db[_0x0076('0xea')]['belongsToMany'](db['ChatQueue'],{'through':_0x0076('0x19d'),'as':'ChatQueues'});db['Team'][_0x0076('0x127')](db[_0x0076('0x4b')],{'through':'team_has_fax_queues','as':_0x0076('0x137')});db[_0x0076('0xea')][_0x0076('0x127')](db[_0x0076('0x54')],{'through':_0x0076('0x18e'),'as':_0x0076('0x1dc')});db[_0x0076('0xea')][_0x0076('0x127')](db[_0x0076('0x13a')],{'through':_0x0076('0x194'),'as':'OpenchannelQueues'});db['Team'][_0x0076('0x127')](db['WhatsappQueue'],{'through':_0x0076('0x1dd'),'as':_0x0076('0x13d')});db[_0x0076('0xea')][_0x0076('0x127')](db['VoicePrefix'],{'through':_0x0076('0x10d'),'as':'VoicePrefixes'});db[_0x0076('0x1a9')][_0x0076('0x118')](db[_0x0076('0x1a2')],{'as':_0x0076('0x150'),'foreignKey':_0x0076('0x1ab')});db[_0x0076('0x1a9')][_0x0076('0x118')](db['CmHopperFinal'],{'as':_0x0076('0x11c'),'foreignKey':'CampaignId'});db['Campaign']['hasMany'](db[_0x0076('0x11d')],{'as':_0x0076('0x152'),'foreignKey':'CampaignId'});db[_0x0076('0x1a9')][_0x0076('0x118')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0076('0x1a9')][_0x0076('0x125')](db['Trunk'],{'as':_0x0076('0x27'),'foreignKey':_0x0076('0x156')});db[_0x0076('0x1a9')]['belongsTo'](db[_0x0076('0x27')],{'as':_0x0076('0x1de'),'foreignKey':'TrunkBackupId'});db[_0x0076('0x1a9')]['belongsTo'](db[_0x0076('0x82')],{'as':'Interval','foreignKey':_0x0076('0x158')});db[_0x0076('0x1a9')][_0x0076('0x125')](db[_0x0076('0xe5')],{'as':_0x0076('0xe5'),'foreignKey':_0x0076('0x1df')});db[_0x0076('0x1a9')][_0x0076('0x127')](db[_0x0076('0x12b')],{'as':_0x0076('0x12c'),'through':_0x0076('0x1e0')});db[_0x0076('0x1a9')][_0x0076('0x127')](db[_0x0076('0x12b')],{'as':_0x0076('0x15e'),'through':_0x0076('0x1e1')});db['Attachment'][_0x0076('0x125')](db[_0x0076('0x66')],{'as':_0x0076('0x66'),'foreignKey':_0x0076('0x19c')});db[_0x0076('0xf5')][_0x0076('0x125')](db[_0x0076('0x3b')],{});db['MailTransferReport'][_0x0076('0x125')](db[_0x0076('0x3a')],{});db['MailTransferReport'][_0x0076('0x125')](db[_0x0076('0x142')],{'foreignKey':_0x0076('0x1e2'),'as':_0x0076('0x1e3')});db[_0x0076('0xf5')]['belongsTo'](db['User'],{'foreignKey':_0x0076('0x1e4'),'as':_0x0076('0x1e5')});db['MailTransferReport'][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':'ToUserId','as':_0x0076('0x1e6')});db[_0x0076('0xf5')][_0x0076('0x125')](db['MailQueue'],{'foreignKey':_0x0076('0x1e7'),'as':_0x0076('0x1e8')});db[_0x0076('0xf5')][_0x0076('0x125')](db[_0x0076('0x142')],{'foreignKey':_0x0076('0x1e9'),'as':_0x0076('0x1ea')});db[_0x0076('0xf6')]['belongsTo'](db[_0x0076('0x64')],{});db[_0x0076('0xf6')][_0x0076('0x125')](db[_0x0076('0x62')],{});db[_0x0076('0xf6')][_0x0076('0x125')](db[_0x0076('0x5d')],{'foreignKey':'FromChatWebsiteId','as':_0x0076('0x1e3')});db[_0x0076('0xf6')][_0x0076('0x125')](db['User'],{'foreignKey':_0x0076('0x1e4'),'as':'FromAgent'});db[_0x0076('0xf6')][_0x0076('0x125')](db['User'],{'foreignKey':_0x0076('0x1eb'),'as':_0x0076('0x1e6')});db[_0x0076('0xf6')][_0x0076('0x125')](db[_0x0076('0x68')],{'foreignKey':'ToChatQueueId','as':_0x0076('0x1e8')});db[_0x0076('0xf6')][_0x0076('0x125')](db[_0x0076('0x5d')],{'foreignKey':_0x0076('0x1ec'),'as':_0x0076('0x1ea')});db[_0x0076('0xf7')][_0x0076('0x125')](db[_0x0076('0x49')],{});db[_0x0076('0xf7')][_0x0076('0x125')](db[_0x0076('0x121')],{});db[_0x0076('0xf7')][_0x0076('0x125')](db['FaxAccount'],{'foreignKey':_0x0076('0x1ed'),'as':_0x0076('0x1e3')});db[_0x0076('0xf7')][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':_0x0076('0x1e4'),'as':_0x0076('0x1e5')});db['FaxTransferReport'][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':_0x0076('0x1eb'),'as':_0x0076('0x1e6')});db[_0x0076('0xf7')]['belongsTo'](db[_0x0076('0x4b')],{'foreignKey':_0x0076('0x1ee'),'as':_0x0076('0x1e8')});db[_0x0076('0xf7')][_0x0076('0x125')](db[_0x0076('0x44')],{'foreignKey':_0x0076('0x1ef'),'as':_0x0076('0x1ea')});db[_0x0076('0xf9')][_0x0076('0x125')](db[_0x0076('0x5a')],{});db[_0x0076('0xf9')][_0x0076('0x125')](db[_0x0076('0x58')],{});db['OpenchannelTransferReport'][_0x0076('0x125')](db[_0x0076('0x55')],{'foreignKey':'FromOpenchannelAccountId','as':_0x0076('0x1e3')});db[_0x0076('0xf9')]['belongsTo'](db['User'],{'foreignKey':_0x0076('0x1e4'),'as':_0x0076('0x1e5')});db[_0x0076('0xf9')][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':'ToUserId','as':_0x0076('0x1e6')});db['OpenchannelTransferReport'][_0x0076('0x125')](db[_0x0076('0x13a')],{'foreignKey':_0x0076('0x1f0'),'as':_0x0076('0x1e8')});db['OpenchannelTransferReport']['belongsTo'](db[_0x0076('0x55')],{'foreignKey':_0x0076('0x1f1'),'as':_0x0076('0x1ea')});db['SmsTransferReport'][_0x0076('0x125')](db[_0x0076('0x18a')],{});db[_0x0076('0xfb')]['belongsTo'](db[_0x0076('0x51')],{});db[_0x0076('0xfb')][_0x0076('0x125')](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0x0076('0x1e3')});db['SmsTransferReport'][_0x0076('0x125')](db['User'],{'foreignKey':'FromUserId','as':_0x0076('0x1e5')});db['SmsTransferReport'][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':_0x0076('0x1eb'),'as':_0x0076('0x1e6')});db[_0x0076('0xfb')][_0x0076('0x125')](db[_0x0076('0x54')],{'foreignKey':_0x0076('0x1f2'),'as':'ToQueue'});db['SmsTransferReport'][_0x0076('0x125')](db[_0x0076('0x188')],{'foreignKey':_0x0076('0x1f3'),'as':_0x0076('0x1ea')});db[_0x0076('0x12b')][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':_0x0076('0x16c'),'foreignKey':_0x0076('0x172'),'onDelete':'cascade'});db['CmList'][_0x0076('0x118')](db[_0x0076('0x77')],{'as':_0x0076('0x1f4'),'foreignKey':_0x0076('0x172')});db[_0x0076('0x12b')]['hasMany'](db[_0x0076('0x6f')],{'as':'Contacts','onDelete':_0x0076('0x114'),'foreignKey':'ListId'});db[_0x0076('0x12b')]['hasMany'](db[_0x0076('0x74')],{'as':_0x0076('0x11c'),'foreignKey':_0x0076('0x172')});db[_0x0076('0x12b')][_0x0076('0x118')](db[_0x0076('0x11d')],{'as':_0x0076('0x1f5'),'foreignKey':_0x0076('0x172')});db[_0x0076('0x12b')][_0x0076('0x118')](db[_0x0076('0x11e')],{'as':'ReportAgentPreview','foreignKey':_0x0076('0x172')});db[_0x0076('0x12b')][_0x0076('0x127')](db['VoiceQueue'],{'as':_0x0076('0x1f6'),'through':_0x0076('0x15b')});db[_0x0076('0x12b')]['belongsToMany'](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x12d')});db[_0x0076('0xfc')][_0x0076('0x118')](db[_0x0076('0x16')],{'as':_0x0076('0x11b'),'onDelete':_0x0076('0x114')});db[_0x0076('0xfc')]['belongsToMany'](db['User'],{'as':'Agents','through':'UserVoicePrefix'});db['VoicePrefix'][_0x0076('0x127')](db[_0x0076('0xea')],{'through':_0x0076('0x10d'),'as':_0x0076('0x15d')});db[_0x0076('0xfe')]['hasMany'](db['User'],{'as':'Users','foreignKey':'userProfileId'});db[_0x0076('0xfe')][_0x0076('0x118')](db['UserProfileSection'],{'as':_0x0076('0x1f7'),'foreignKey':_0x0076('0x126'),'onDelete':_0x0076('0x114')});db[_0x0076('0x1f8')][_0x0076('0x118')](db[_0x0076('0x1f9')],{'as':_0x0076('0x1fa'),'foreignKey':_0x0076('0x1fb'),'onDelete':_0x0076('0x114')});db[_0x0076('0x102')][_0x0076('0x118')](db[_0x0076('0x7f')],{'as':'Dispositions','foreignKey':'WhatsappAccountId','onDelete':_0x0076('0x114')});db[_0x0076('0x102')][_0x0076('0x118')](db[_0x0076('0x7d')],{'as':_0x0076('0x16e'),'foreignKey':_0x0076('0x1fc')});db['WhatsappAccount'][_0x0076('0x118')](db[_0x0076('0x1fd')],{'as':_0x0076('0x160'),'foreignKey':_0x0076('0x1fc')});db[_0x0076('0x102')][_0x0076('0x118')](db['WhatsappInteraction'],{'as':_0x0076('0x16f')});db['WhatsappAccount']['hasMany'](db[_0x0076('0x103')],{'as':_0x0076('0x170')});db[_0x0076('0x102')][_0x0076('0x125')](db[_0x0076('0x12b')],{'as':'List','foreignKey':'ListId'});db[_0x0076('0x102')][_0x0076('0x125')](db[_0x0076('0x84')],{'as':'mandatoryDispositionPause','foreignKey':_0x0076('0x15a')});db[_0x0076('0x102')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x15c'),'through':_0x0076('0x149')});db[_0x0076('0x103')][_0x0076('0x125')](db[_0x0076('0x116')],{'onDelete':'restrict'});db[_0x0076('0x103')][_0x0076('0x125')](db[_0x0076('0x13c')],{'onDelete':_0x0076('0x169')});db[_0x0076('0x103')][_0x0076('0x125')](db['WhatsappAccount'],{'onDelete':'restrict'});db[_0x0076('0x103')]['belongsTo'](db[_0x0076('0x82')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x158')});db['WhatsappApplication'][_0x0076('0x125')](db[_0x0076('0x8a')],{'onDelete':_0x0076('0x169'),'foreignKey':_0x0076('0x180')});db[_0x0076('0x123')][_0x0076('0x118')](db[_0x0076('0x1fd')],{'as':'Messages','onDelete':_0x0076('0x114'),'foreignKey':_0x0076('0x1fe')});db[_0x0076('0x123')][_0x0076('0x125')](db['WhatsappAccount'],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1fc')});db[_0x0076('0x123')][_0x0076('0x125')](db[_0x0076('0x6f')],{'as':_0x0076('0x166'),'foreignKey':'ContactId'});db[_0x0076('0x123')][_0x0076('0x125')](db[_0x0076('0x116')],{'as':_0x0076('0x176'),'foreignKey':_0x0076('0x115')});db[_0x0076('0x123')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':_0x0076('0x1b7'),'as':_0x0076('0x178')});db[_0x0076('0x123')][_0x0076('0x127')](db[_0x0076('0x8a')],{'through':_0x0076('0x1b7'),'as':_0x0076('0x179')});db[_0x0076('0x123')][_0x0076('0x127')](db[_0x0076('0x116')],{'as':_0x0076('0x17a'),'through':'user_has_whatsapp_interactions','foreignKey':_0x0076('0x1fe')});db[_0x0076('0x1fd')][_0x0076('0x125')](db[_0x0076('0x116')],{'as':_0x0076('0x116')});db[_0x0076('0x1fd')]['belongsTo'](db[_0x0076('0x6f')],{'onDelete':_0x0076('0x114'),'as':_0x0076('0x166')});db['WhatsappMessage'][_0x0076('0x125')](db[_0x0076('0x123')],{'onDelete':'cascade','as':_0x0076('0x17d'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db['WhatsappAccount'],{'as':_0x0076('0x17e'),'foreignKey':_0x0076('0x1fc')});db['WhatsappQueueReport'][_0x0076('0x125')](db['WhatsappAccount'],{});db[_0x0076('0x105')][_0x0076('0x125')](db['CmList'],{'as':'List','foreignKey':_0x0076('0x172')});db[_0x0076('0x105')]['belongsTo'](db['CmContact'],{'as':_0x0076('0x166'),'foreignKey':_0x0076('0x167')});db[_0x0076('0x105')][_0x0076('0x125')](db['WhatsappInteraction'],{});db[_0x0076('0x105')][_0x0076('0x125')](db[_0x0076('0x13c')],{});db[_0x0076('0x105')][_0x0076('0x125')](db['WhatsappMessage'],{});db[_0x0076('0x105')][_0x0076('0x125')](db['User'],{});db['WhatsappTransferReport'][_0x0076('0x125')](db['WhatsappMessage'],{});db[_0x0076('0x107')][_0x0076('0x125')](db[_0x0076('0x123')],{});db[_0x0076('0x107')]['belongsTo'](db[_0x0076('0x102')],{'foreignKey':_0x0076('0x1ff'),'as':_0x0076('0x1e3')});db[_0x0076('0x107')]['belongsTo'](db[_0x0076('0x102')],{'foreignKey':_0x0076('0x200'),'as':_0x0076('0x1ea')});db[_0x0076('0x107')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':'ToQueueId','as':_0x0076('0x1e8')});db[_0x0076('0x107')][_0x0076('0x125')](db['User'],{'foreignKey':_0x0076('0x1e4'),'as':'FromAgent'});db['WhatsappTransferReport'][_0x0076('0x125')](db[_0x0076('0x116')],{'foreignKey':_0x0076('0x1eb'),'as':_0x0076('0x1e6')});db['WhatsappQueue'][_0x0076('0x127')](db[_0x0076('0x116')],{'as':'Agents','through':_0x0076('0x32'),'foreignKey':_0x0076('0x201')});db[_0x0076('0x13c')][_0x0076('0x127')](db[_0x0076('0xea')],{'through':_0x0076('0x1dd'),'as':'Teams'});db['UserSetting'][_0x0076('0x125')](db['User'],{'as':'user','foreignKey':_0x0076('0x115'),'onDelete':'cascade','hooks':!![]});db['CloudProvider'][_0x0076('0x113')](db[_0x0076('0xc9')],{'as':_0x0076('0xc9'),'onDelete':_0x0076('0x169')});db[_0x0076('0x10a')][_0x0076('0x113')](db[_0x0076('0x34')],{'as':_0x0076('0x202'),'onDelete':_0x0076('0x169')});db[_0x0076('0x10a')][_0x0076('0x113')](db[_0x0076('0x16a')],{'as':_0x0076('0x16b'),'onDelete':_0x0076('0x169')});module[_0x0076('0x203')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xbcd2=['chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatGroupId','Phones','CmContactId','CmHopper','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','OwnerId','CampaignId','OneAll','AutomationAllId','Condition','Any','OneAny','Actions','AutomationId','ParentId','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','AnalyticDefaultReport','DefaultReportId','CustomReportId','ItemType','CmHopperAdditionalPhone','Hopper','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','AnalyticCustomReport','Fields','MetricId','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','VariableId','SugarcrmAccount','ZohoConfiguration','ZohoField','ZendeskAccount','FreshdeskAccount','int_freshdesk_configuration_has_tags','ToId','SessionId','ProjectId','team_has_sms_queues','TeamVoicePrefix','TrunkId','TrunkBackup','SquareProject','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromAgent','ToFaxQueueId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','UserProfileSection','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','UserSetting','user','exports','sequelize','lodash','jstz','determine','defaultsDeep','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','sequelizeHistory','motion2','xcall','utf8_general_ci','password','database','username','options','User','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailInteraction','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','../api/faxMessage/faxMessage.model','../api/faxQueueReport/faxQueueReport.model','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','Action','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','Cdr','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/tag/tag.model','ContactItemType','CmContactHasItem','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoField/intZohoField.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','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','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','../api/team/team.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','../api/user-setting/user-setting.model','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','CmHopperHistory','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteraction','FaxInteractions','WhatsappInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','Lists','cm_user_has_lists','Team','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','OpenchannelInteractions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','MailQueues','ChatQueue','ChatQueues','FaxQueues','SmsQueues','UserSmsQueue','OpenchannelQueues','WhatsappQueues','user_has_chat_websites','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','JscriptySessions','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailServerIn','MailAccountId','CloudProvider','CloudProviderId','restrict','hasOne','Imap','Smtp','Disposition','Answers','MailMessage','Applications','List','ListId','TemplateId','Pause','Agents','UserMailQueue','team_has_mail_queues','MailInteractionId','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','IntervalId','ContactId','Items','FaxAccountId','FaxApplication','FaxMessage','user_has_fax_accounts','FaxQueue','TagId','FaxInteractionId','Owner','fax_interaction_has_tags','team_has_fax_queues','FaxQueueReport','SmsAccount','Dispositions','SmsAccountId','Interactions','sms_interaction_has_tags','user_has_sms_interactions','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','AttachmentId','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','Queue','ChatQueueId','Website'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xbcd2,0x6f));var _0x2bcd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbcd2[_0x3dd15e];return _0x231fd0;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x2bcd('0x0'));var _=require(_0x2bcd('0x1'));var jstz=require(_0x2bcd('0x2'));var timezone=jstz[_0x2bcd('0x3')]();config[_0x2bcd('0x0')]=_[_0x2bcd('0x4')](config[_0x2bcd('0x0')],{'database':'motion2','username':'xcall','password':_0x2bcd('0x5'),'options':{'host':_0x2bcd('0x6'),'port':0xcea,'dialect':_0x2bcd('0x7'),'dialectOptions':{'charset':_0x2bcd('0x8')},'logging':![],'timezone':timezone[_0x2bcd('0x9')](),'define':{'charset':_0x2bcd('0xa'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_['defaultsDeep'](config[_0x2bcd('0xb')],{'database':_0x2bcd('0xc'),'username':_0x2bcd('0xd'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x2bcd('0x7'),'dialectOptions':{'charset':_0x2bcd('0x8')},'logging':![],'timezone':timezone[_0x2bcd('0x9')](),'define':{'charset':_0x2bcd('0xa'),'collate':_0x2bcd('0xe')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x2bcd('0x0')]['username'],config['sequelize'][_0x2bcd('0xf')],config[_0x2bcd('0x0')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x2bcd('0xb')][_0x2bcd('0x10')],config[_0x2bcd('0xb')][_0x2bcd('0x11')],config[_0x2bcd('0xb')]['password'],config[_0x2bcd('0xb')][_0x2bcd('0x12')])};db[_0x2bcd('0x13')]=db[_0x2bcd('0x0')]['import']('../api/user/user.model');db[_0x2bcd('0x14')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x16'));db[_0x2bcd('0x17')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x18'));db[_0x2bcd('0x19')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x1a'));db[_0x2bcd('0x1b')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x1c'));db['VoiceQueue']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x1d'));db[_0x2bcd('0x1e')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/voiceRecording/voiceRecording.model');db[_0x2bcd('0x1f')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x20'));db[_0x2bcd('0x21')]=db['sequelize'][_0x2bcd('0x15')]('../api/voiceMail/voiceMail.model');db[_0x2bcd('0x22')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x23'));db[_0x2bcd('0x24')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x25'));db[_0x2bcd('0x26')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x27'));db['VoiceAgentReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x28'));db[_0x2bcd('0x29')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0x2bcd('0x2a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x2b'));db[_0x2bcd('0x2c')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x2d'));db['VoiceTransferReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x2e'));db[_0x2bcd('0x2f')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x30'));db[_0x2bcd('0x31')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x32'));db[_0x2bcd('0x33')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x34'));db['UserMailQueue']=db['sequelize']['import'](_0x2bcd('0x35'));db[_0x2bcd('0x36')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x37'));db['UserSmsQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x38'));db[_0x2bcd('0x39')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x2bcd('0x3a')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x3b'));db['MailServerIn']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x3c'));db[_0x2bcd('0x3d')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x3e'));db[_0x2bcd('0x3f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x40'));db[_0x2bcd('0x41')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x42'));db['MailSubstatus']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailSubstatus/mailSubstatus.model');db[_0x2bcd('0x43')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x44'));db[_0x2bcd('0x45')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x46'));db[_0x2bcd('0x47')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x48'));db[_0x2bcd('0x49')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x4a'));db[_0x2bcd('0x4b')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x4c'));db[_0x2bcd('0x4d')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x4e'));db['FaxApplication']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x4f'));db['FaxInteraction']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/faxInteraction/faxInteraction.model');db['FaxMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x50'));db['FaxQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/faxQueue/faxQueue.model');db['FaxQueueReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x51'));db['SmsAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/smsAccount/smsAccount.model');db[_0x2bcd('0x52')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x53'));db['SmsInteraction']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x54'));db[_0x2bcd('0x55')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x56'));db[_0x2bcd('0x57')]=db['sequelize']['import'](_0x2bcd('0x58'));db['OpenchannelAccount']=db[_0x2bcd('0x0')]['import']('../api/openchannelAccount/openchannelAccount.model');db['OpenchannelApplication']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x59'));db[_0x2bcd('0x5a')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x5b'));db['OpenchannelMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x5c'));db[_0x2bcd('0x5d')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x5e'));db[_0x2bcd('0x5f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x60'));db[_0x2bcd('0x61')]=db['sequelize'][_0x2bcd('0x15')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x2bcd('0x62')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/chatApplication/chatApplication.model');db[_0x2bcd('0x63')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x64'));db['ChatMessage']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x65'));db[_0x2bcd('0x66')]=db['sequelize'][_0x2bcd('0x15')]('../api/chatOfflineMessage/chatOfflineMessage.model');db['ChatQueue']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/chatQueue/chatQueue.model');db[_0x2bcd('0x67')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x68'));db[_0x2bcd('0x69')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x6a'));db[_0x2bcd('0x6b')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x6c'));db[_0x2bcd('0x6d')]=db['sequelize']['import'](_0x2bcd('0x6e'));db['CmHopper']=db['sequelize']['import']('../api/cmHopper/cmHopper.model');db[_0x2bcd('0x6f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x2bcd('0x70')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x71'));db['CmHopperHistory']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x72'));db[_0x2bcd('0x73')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x74'));db['CmCustomField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmCustomField/cmCustomField.model');db[_0x2bcd('0x75')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/action/action.model');db[_0x2bcd('0x76')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x77'));db[_0x2bcd('0x78')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x79'));db['Disposition']=db['sequelize']['import'](_0x2bcd('0x7a'));db['Condition']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x7b'));db[_0x2bcd('0x7c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x7d'));db['Pause']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/pause/pause.model');db[_0x2bcd('0x7e')]=db['sequelize'][_0x2bcd('0x15')]('../api/cdr/cdr.model');db[_0x2bcd('0x7f')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x80'));db['Schedule']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x81'));db[_0x2bcd('0x82')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x83'));db['Tag']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x84'));db[_0x2bcd('0x85')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/contactItemType/contactItemType.model');db[_0x2bcd('0x86')]=db[_0x2bcd('0x0')]['import']('../api/cmContactHasItem/cmContactHasItem.model');db['CmHopperAdditionalPhone']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x2bcd('0x87')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x88'));db['Trigger']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0x89'));db[_0x2bcd('0x8a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x8b'));db['Integration']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/integration/integration.model');db[_0x2bcd('0x8c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x8d'));db['AnalyticCustomReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x8e'));db['AnalyticDefaultReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x8f'));db['AnalyticExtractedReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x90'));db[_0x2bcd('0x91')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/analyticMetric/analyticMetric.model');db[_0x2bcd('0x92')]=db['sequelize'][_0x2bcd('0x15')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x2bcd('0x93')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x94'));db[_0x2bcd('0x95')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x96'));db[_0x2bcd('0x97')]=db[_0x2bcd('0x0')]['import']('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x98'));db['SugarcrmAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x99'));db[_0x2bcd('0x9a')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9b'));db[_0x2bcd('0x9c')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9d'));db[_0x2bcd('0x9e')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x9f'));db[_0x2bcd('0xa0')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xa1'));db[_0x2bcd('0xa2')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xa3'));db[_0x2bcd('0xa4')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa5'));db['ZohoConfiguration']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intZohoConfiguration/intZohoConfiguration.model');db['ZohoField']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa6'));db['ZendeskAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x2bcd('0xa7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xa8'));db[_0x2bcd('0xa9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xaa'));db['FreshdeskAccount']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xab'));db[_0x2bcd('0xac')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xad'));db[_0x2bcd('0xae')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xaf'));db[_0x2bcd('0xb0')]=db[_0x2bcd('0x0')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x2bcd('0xb1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x2bcd('0xb2')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xb3'));db[_0x2bcd('0xb4')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xb5'));db[_0x2bcd('0xb6')]=db['sequelize']['import'](_0x2bcd('0xb7'));db[_0x2bcd('0xb8')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xb9'));db[_0x2bcd('0xba')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x2bcd('0xbb')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xbc'));db[_0x2bcd('0xbd')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xbe'));db[_0x2bcd('0xbf')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc0'));db[_0x2bcd('0xc1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc2'));db[_0x2bcd('0xc3')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc4'));db[_0x2bcd('0xc5')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xc6'));db[_0x2bcd('0xc7')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xc8'));db[_0x2bcd('0xc9')]=db['sequelize'][_0x2bcd('0x15')]('../api/chatQueueReport/chatQueueReport.model');db[_0x2bcd('0xca')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xcb'));db[_0x2bcd('0xcc')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xcd'));db[_0x2bcd('0xce')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xcf'));db[_0x2bcd('0xd0')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd1'));db[_0x2bcd('0xd2')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd3'));db[_0x2bcd('0xd4')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xd5'));db[_0x2bcd('0xd6')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/squareReportDetail/squareReportDetail.model');db[_0x2bcd('0xd7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xd8'));db[_0x2bcd('0xd9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xda'));db[_0x2bcd('0xdb')]=db['sequelize']['import'](_0x2bcd('0xdc'));db['SquareProject']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xdd'));db[_0x2bcd('0xde')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xdf'));db['SquareMessage']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe0'));db['Team']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe1'));db['License']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/license/license.model');db[_0x2bcd('0xe2')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xe3'));db[_0x2bcd('0xe4')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xe5'));db[_0x2bcd('0xe6')]=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xe7'));db[_0x2bcd('0xe8')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xe9'));db['MailTransferReport']=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/mailTransferReport/mailTransferReport.model');db[_0x2bcd('0xea')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xeb'));db['FaxTransferReport']=db[_0x2bcd('0x0')]['import'](_0x2bcd('0xec'));db['OpenchannelTransferReport']=db[_0x2bcd('0x0')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x2bcd('0xed')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xee'));db[_0x2bcd('0xef')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xf0'));db[_0x2bcd('0xf1')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf2'));db[_0x2bcd('0xf3')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')]('../api/userProfile/userProfile.model');db['UserProfileSection']=db['sequelize'][_0x2bcd('0x15')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf4'));db[_0x2bcd('0xf5')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf6'));db[_0x2bcd('0xf7')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xf8'));db[_0x2bcd('0xf9')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xfa'));db[_0x2bcd('0xfb')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0xfc'));db[_0x2bcd('0xfd')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xfe'));db['WhatsappQueueReport']=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0xff'));db[_0x2bcd('0x100')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x101'));db[_0x2bcd('0x102')]=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x103'));db['CloudProvider']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x104'));db[_0x2bcd('0x105')]=db['sequelize'][_0x2bcd('0x15')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x106'));db[_0x2bcd('0x107')]=db['sequelize'][_0x2bcd('0x15')](_0x2bcd('0x108'));db['UserSetting']=db[_0x2bcd('0x0')][_0x2bcd('0x15')](_0x2bcd('0x109'));db[_0x2bcd('0x13')]['hasOne'](db[_0x2bcd('0x21')],{'as':'VoiceMail','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')]['hasOne'](db['UserSetting'],{'as':_0x2bcd('0x10c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x10b')});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x1e')],{'as':_0x2bcd('0x10e'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x2f')],{'as':_0x2bcd('0x10f'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':_0x2bcd('0x110'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':'HopperFinals','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':'HopperHistory','foreignKey':'UserId'});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x73')],{'as':_0x2bcd('0x73'),'foreignKey':'UserId'});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':'OpenchannelInteractions','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x112'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0x113')],{'as':_0x2bcd('0x114'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')]['hasMany'](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'foreignKey':'UserId'});db['User'][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':'MailInteractions','foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x117'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x13')][_0x2bcd('0x10d')](db[_0x2bcd('0xf5')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0x2bcd('0x13')][_0x2bcd('0x118')](db['UserProfile'],{'as':_0x2bcd('0xf3'),'foreignKey':_0x2bcd('0x119')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x67')],{'as':_0x2bcd('0x11b'),'through':_0x2bcd('0x11c')});db[_0x2bcd('0x13')]['belongsToMany'](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x11d'),'through':'cm_user_has_contacts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x11e'),'through':_0x2bcd('0x11f')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x121')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x122'),'through':_0x2bcd('0x123')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x112'),'through':_0x2bcd('0x124')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'through':_0x2bcd('0x125')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x113')],{'as':_0x2bcd('0x114'),'through':'user_has_sms_interactions'});db[_0x2bcd('0x13')]['belongsToMany'](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x126'),'through':'user_has_openchannel_interactions'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x117'),'through':_0x2bcd('0x127')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x129'),'through':_0x2bcd('0x31'),'required':![]});db['User'][_0x2bcd('0x11a')](db[_0x2bcd('0xf1')],{'as':_0x2bcd('0x12a'),'through':_0x2bcd('0x107'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['MailQueue'],{'as':_0x2bcd('0x12b'),'through':'UserMailQueue','required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x12c')],{'as':_0x2bcd('0x12d'),'through':_0x2bcd('0x33'),'required':![],'hooks':!![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['FaxQueue'],{'as':_0x2bcd('0x12e'),'through':'UserFaxQueue','required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x57')],{'as':_0x2bcd('0x12f'),'through':_0x2bcd('0x130'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x5d')],{'as':_0x2bcd('0x131'),'through':_0x2bcd('0x39'),'required':![]});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['WhatsappQueue'],{'as':_0x2bcd('0x132'),'through':_0x2bcd('0x3a'),'required':![]});db[_0x2bcd('0x13')]['belongsToMany'](db['CmList'],{'through':_0x2bcd('0x11f')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x2bcd('0x133')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x4d')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x134'),'through':_0x2bcd('0x135')});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0x136')],{'as':_0x2bcd('0x137'),'through':_0x2bcd('0x138')});db['User'][_0x2bcd('0x11a')](db['SmsAccount'],{'as':_0x2bcd('0x139'),'through':'user_has_sms_accounts'});db[_0x2bcd('0x13')][_0x2bcd('0x11a')](db[_0x2bcd('0xf7')],{'as':_0x2bcd('0x13a'),'through':_0x2bcd('0x13b')});db[_0x2bcd('0x14')][_0x2bcd('0x10d')](db['VoiceExtension'],{'as':_0x2bcd('0x13c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x13d')});db[_0x2bcd('0x17')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':'Applications','onDelete':'cascade'});db[_0x2bcd('0x1b')][_0x2bcd('0x11a')](db[_0x2bcd('0x82')],{'as':_0x2bcd('0x13e'),'through':_0x2bcd('0x13f')});db[_0x2bcd('0x128')]['hasMany'](db[_0x2bcd('0x2f')],{'as':_0x2bcd('0x140'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db['CmHopper'],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')]['hasMany'](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':_0x2bcd('0x144'),'foreignKey':'VoiceQueueId'});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db['ReportAgentPreview'],{'as':_0x2bcd('0x73'),'foreignKey':_0x2bcd('0x141')});db['VoiceQueue']['hasMany'](db[_0x2bcd('0x6f')],{'as':'HopperBlacks','foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x10d')](db[_0x2bcd('0xd0')],{'as':_0x2bcd('0x145'),'foreignKey':_0x2bcd('0x141')});db[_0x2bcd('0x128')][_0x2bcd('0x118')](db[_0x2bcd('0x2c')],{'as':'Trunk','foreignKey':'TrunkId'});db['VoiceQueue'][_0x2bcd('0x118')](db[_0x2bcd('0x2c')],{'as':'TrunkBackup','foreignKey':_0x2bcd('0x146')});db[_0x2bcd('0x128')]['belongsTo'](db[_0x2bcd('0x7c')],{'as':_0x2bcd('0x7c'),'foreignKey':'IntervalId'});db[_0x2bcd('0x128')][_0x2bcd('0x118')](db['Pause'],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db['VoiceQueue'][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':'Lists','through':_0x2bcd('0x149')});db['VoiceQueue']['belongsToMany'](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x31')});db[_0x2bcd('0x128')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'as':_0x2bcd('0x14a'),'through':_0x2bcd('0x105')});db[_0x2bcd('0x128')][_0x2bcd('0x11a')](db[_0x2bcd('0xef')],{'as':'BlackLists','through':_0x2bcd('0x14b')});db[_0x2bcd('0x1e')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':'UserId'});db[_0x2bcd('0x1f')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':'UserId'});db[_0x2bcd('0x21')][_0x2bcd('0x10d')](db[_0x2bcd('0x22')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x14d'),'sourceKey':_0x2bcd('0x14e')});db[_0x2bcd('0x22')][_0x2bcd('0x118')](db['VoiceMail'],{'foreignKey':_0x2bcd('0x14d'),'targetKey':_0x2bcd('0x14e')});db[_0x2bcd('0x24')]['hasMany'](db[_0x2bcd('0x29')],{'as':_0x2bcd('0x14f'),'foreignKey':_0x2bcd('0x150'),'constraints':![]});db[_0x2bcd('0x24')][_0x2bcd('0x10d')](db[_0x2bcd('0x151')],{'as':_0x2bcd('0x152'),'foreignKey':_0x2bcd('0x150'),'constraints':![]});db[_0x2bcd('0x24')]['belongsTo'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x24')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':'ContactId'});db[_0x2bcd('0x154')][_0x2bcd('0x118')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x2bcd('0x155')});db['MailServerIn']['belongsTo'](db[_0x2bcd('0x156')],{'as':'CloudProvider','foreignKey':_0x2bcd('0x157'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x3d')]['belongsTo'](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x3f'),'foreignKey':'MailAccountId'});db[_0x2bcd('0x3d')]['belongsTo'](db[_0x2bcd('0x156')],{'as':_0x2bcd('0x156'),'foreignKey':_0x2bcd('0x157'),'onDelete':'restrict'});db['MailAccount'][_0x2bcd('0x159')](db[_0x2bcd('0x154')],{'as':_0x2bcd('0x15a'),'onDelete':_0x2bcd('0x10a')});db['MailAccount'][_0x2bcd('0x159')](db[_0x2bcd('0x3d')],{'as':_0x2bcd('0x15b'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':'Dispositions','foreignKey':_0x2bcd('0x155'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x155')});db['MailAccount']['hasMany'](db[_0x2bcd('0x15e')],{'as':'Messages','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':'Interactions'});db[_0x2bcd('0x3f')][_0x2bcd('0x10d')](db[_0x2bcd('0x45')],{'as':_0x2bcd('0x15f')});db['MailAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x3f')][_0x2bcd('0x118')](db[_0x2bcd('0x87')],{'as':_0x2bcd('0x87'),'foreignKey':_0x2bcd('0x162')});db[_0x2bcd('0x3f')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':'mandatoryDispositionPause','foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x3f')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':'user_has_mail_accounts'});db[_0x2bcd('0x41')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x165')});db['MailQueue']['belongsToMany'](db['Team'],{'through':_0x2bcd('0x166'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x43')][_0x2bcd('0x10d')](db[_0x2bcd('0x15e')],{'as':_0x2bcd('0x14c'),'onDelete':'cascade','foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x43')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'as':'Account','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x43')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':'ContactId'});db['MailInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':_0x2bcd('0x10b')});db['MailInteraction'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x169'),'as':_0x2bcd('0x16a')});db[_0x2bcd('0x43')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x169'),'as':_0x2bcd('0x16b')});db['MailInteraction'][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x123'),'foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x15e')][_0x2bcd('0x10d')](db['Attachment'],{'as':_0x2bcd('0x16d'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13')});db['MailMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':'cascade','as':_0x2bcd('0x153')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x167')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x155')});db['MailMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x5f'),'foreignKey':_0x2bcd('0x170')});db[_0x2bcd('0x15e')][_0x2bcd('0x118')](db['ChatOfflineMessage'],{'as':_0x2bcd('0x66'),'foreignKey':_0x2bcd('0x171')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db['User'],{'onDelete':'restrict'});db[_0x2bcd('0x45')]['belongsTo'](db['MailQueue'],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x7c')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x45')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{});db[_0x2bcd('0x47')][_0x2bcd('0x118')](db['MailMessage'],{});db['MailQueueReport'][_0x2bcd('0x118')](db['User'],{});db['MailQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x41')],{});db[_0x2bcd('0x49')]['hasMany'](db[_0x2bcd('0x4b')],{'as':_0x2bcd('0x174'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':'Dispositions','foreignKey':_0x2bcd('0x175'),'onDelete':_0x2bcd('0x10a')});db['FaxAccount']['hasMany'](db[_0x2bcd('0x78')],{'as':_0x2bcd('0x15d'),'foreignKey':'FaxAccountId'});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x115')],{'as':'Interactions'});db[_0x2bcd('0x4d')]['hasMany'](db[_0x2bcd('0x176')],{'as':_0x2bcd('0x15f')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x19')],{'as':'Exntensions','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x4d')][_0x2bcd('0x10d')](db[_0x2bcd('0x177')],{'as':_0x2bcd('0x14c')});db[_0x2bcd('0x4d')]['belongsTo'](db['Trunk'],{'as':_0x2bcd('0x2c')});db[_0x2bcd('0x4d')][_0x2bcd('0x118')](db['CmList'],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x4d')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':'mandatoryDispositionPause','foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x4d')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x178')});db[_0x2bcd('0x176')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x158')});db['FaxApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x179')],{'onDelete':_0x2bcd('0x158')});db['FaxApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'onDelete':'restrict'});db[_0x2bcd('0x176')]['belongsTo'](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db[_0x2bcd('0x115')]['hasMany'](db[_0x2bcd('0x177')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x17b')});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x175')});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x115')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db[_0x2bcd('0x115')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'fax_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0x115')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x17d'),'as':'ThroughTags'});db[_0x2bcd('0x115')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x125'),'foreignKey':_0x2bcd('0x17b')});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x13')});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x16e'),'foreignKey':'FaxInteractionId'});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db['CmContact'],{'onDelete':'cascade','as':'Contact'});db[_0x2bcd('0x177')][_0x2bcd('0x118')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0xe6'),'foreignKey':'AttachmentId'});db[_0x2bcd('0x177')]['belongsTo'](db['FaxAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x175')});db[_0x2bcd('0x179')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x36')});db[_0x2bcd('0x179')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x17e'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db['CmList'],{'as':'List','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x115')],{});db['FaxQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x177')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0x17f')][_0x2bcd('0x118')](db['FaxQueue'],{});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':'SmsAccountId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x180')][_0x2bcd('0x10d')](db[_0x2bcd('0x55')],{'as':_0x2bcd('0x14c'),'foreignKey':'SmsAccountId'});db[_0x2bcd('0x180')]['hasMany'](db['SmsInteraction'],{'as':_0x2bcd('0x183')});db[_0x2bcd('0x180')]['hasMany'](db[_0x2bcd('0x52')],{'as':_0x2bcd('0x15f')});db['SmsAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x180')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x180')][_0x2bcd('0x11a')](db['User'],{'as':'Agents','through':'user_has_sms_accounts'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db['User'],{'onDelete':_0x2bcd('0x158')});db['SmsApplication']['belongsTo'](db[_0x2bcd('0x57')],{'onDelete':_0x2bcd('0x158')});db['SmsApplication'][_0x2bcd('0x118')](db['SmsAccount'],{'onDelete':'restrict'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db['Interval'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'IntervalId'});db[_0x2bcd('0x52')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':_0x2bcd('0x158'),'foreignKey':'TagId'});db[_0x2bcd('0x113')][_0x2bcd('0x10d')](db[_0x2bcd('0x55')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SmsInteractionId'});db[_0x2bcd('0x113')]['belongsTo'](db[_0x2bcd('0x180')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x113')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x113')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db['SmsInteraction'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'sms_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0x113')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x184'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x113')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x185'),'foreignKey':_0x2bcd('0x186')});db[_0x2bcd('0x55')][_0x2bcd('0x118')](db['User'],{'as':'User'});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153')});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x113')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x186')});db[_0x2bcd('0x55')]['belongsTo'](db[_0x2bcd('0x180')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x182')});db[_0x2bcd('0x57')]['belongsToMany'](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x130'),'foreignKey':_0x2bcd('0x187')});db[_0x2bcd('0x57')]['belongsToMany'](db[_0x2bcd('0x120')],{'through':'team_has_sms_queues','as':_0x2bcd('0x14a')});db['OpenchannelAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x188'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x78')],{'as':_0x2bcd('0x15d'),'foreignKey':_0x2bcd('0x188')});db['OpenchannelAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x183'),'foreignKey':'OpenchannelAccountId'});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x189')],{'as':_0x2bcd('0x14c'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x136')][_0x2bcd('0x10d')](db[_0x2bcd('0x18a')],{'as':_0x2bcd('0x15f'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x136')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x136')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0x136')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x138')});db['OpenchannelApplication'][_0x2bcd('0x118')](db['User'],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x18a')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x18b')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x18a')][_0x2bcd('0x118')](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'TagId'});db[_0x2bcd('0x5a')][_0x2bcd('0x10d')](db['OpenchannelMessage'],{'as':_0x2bcd('0x14c'),'onDelete':'cascade','foreignKey':_0x2bcd('0x18c')});db[_0x2bcd('0x5a')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x188')});db[_0x2bcd('0x5a')]['belongsTo'](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x5a')]['belongsTo'](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':_0x2bcd('0x10b')});db['OpenchannelInteraction']['belongsToMany'](db['Tag'],{'through':'openchannel_interaction_has_tags','as':'Tags'});db[_0x2bcd('0x5a')][_0x2bcd('0x11a')](db['Tag'],{'through':_0x2bcd('0x18d'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x5a')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x18e'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage']['belongsTo'](db[_0x2bcd('0x13')],{'onDelete':'cascade','as':_0x2bcd('0x13')});db['OpenchannelMessage'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153')});db[_0x2bcd('0x189')]['belongsTo'](db[_0x2bcd('0x5a')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x18c')});db[_0x2bcd('0x189')][_0x2bcd('0x118')](db['Attachment'],{'as':_0x2bcd('0xe6'),'foreignKey':_0x2bcd('0x18f')});db['OpenchannelMessage'][_0x2bcd('0x118')](db['OpenchannelAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue']['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x39'),'foreignKey':_0x2bcd('0x18b')});db['OpenchannelQueue'][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x190'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x2bcd('0x170'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x78')],{'as':'Answers','foreignKey':_0x2bcd('0x170')});db['ChatWebsite'][_0x2bcd('0x10d')](db[_0x2bcd('0x69')],{'as':_0x2bcd('0x191')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x63')],{'as':_0x2bcd('0x183')});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db['ChatApplication'],{'as':'Applications'});db[_0x2bcd('0x5f')][_0x2bcd('0x10d')](db[_0x2bcd('0x192')],{'as':_0x2bcd('0x14c')});db[_0x2bcd('0x5f')]['belongsTo'](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId'});db[_0x2bcd('0x5f')][_0x2bcd('0x118')](db[_0x2bcd('0x7c')],{'as':_0x2bcd('0x7c'),'foreignKey':'IntervalId'});db[_0x2bcd('0x5f')]['belongsTo'](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x2bcd('0x155')});db[_0x2bcd('0x5f')][_0x2bcd('0x118')](db['Pause'],{'as':_0x2bcd('0x147'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x2bcd('0x5f')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x133')});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{});db[_0x2bcd('0x61')]['belongsTo'](db[_0x2bcd('0xef')],{'as':'List','foreignKey':'ListId'});db['OpenchannelQueueReport']['belongsTo'](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x5a')],{});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelMessage'],{});db[_0x2bcd('0x61')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db['OpenchannelQueueReport'][_0x2bcd('0x118')](db['OpenchannelQueue'],{});db['ChatApplication'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x193'),'foreignKey':_0x2bcd('0x10b'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db[_0x2bcd('0x12c')],{'as':_0x2bcd('0x194'),'foreignKey':_0x2bcd('0x195'),'onDelete':'restrict'});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db['ChatWebsite'],{'as':_0x2bcd('0x196'),'foreignKey':_0x2bcd('0x170'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x62')][_0x2bcd('0x118')](db[_0x2bcd('0x168')],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db[_0x2bcd('0x63')][_0x2bcd('0x10d')](db['ChatMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':'ChatInteractionId'});db[_0x2bcd('0x63')][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db['ChatInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db['ChatInteraction'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x10b')});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0x2bcd('0x197'),'as':_0x2bcd('0x16a')});db[_0x2bcd('0x63')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x197'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x63')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Users','through':_0x2bcd('0x124'),'foreignKey':'ChatInteractionId'});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':'cascade','as':_0x2bcd('0x13')});db[_0x2bcd('0x192')]['belongsTo'](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{'onDelete':'cascade','as':_0x2bcd('0x16e'),'foreignKey':_0x2bcd('0x198')});db[_0x2bcd('0x192')][_0x2bcd('0x118')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0xe6'),'foreignKey':'AttachmentId'});db[_0x2bcd('0x192')]['belongsTo'](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db[_0x2bcd('0x66')][_0x2bcd('0x10d')](db[_0x2bcd('0xe6')],{'as':_0x2bcd('0x16d'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x2bcd('0x66')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':_0x2bcd('0x10a'),'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x66')][_0x2bcd('0x118')](db['ChatWebsite'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x170')});db['ChatQueue'][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x33'),'hooks':!![]});db[_0x2bcd('0x12c')][_0x2bcd('0x11a')](db[_0x2bcd('0x120')],{'through':_0x2bcd('0x199'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x67')][_0x2bcd('0x10d')](db[_0x2bcd('0xca')],{'as':_0x2bcd('0x14c'),'foreignKey':_0x2bcd('0x19a'),'onDelete':'cascade'});db[_0x2bcd('0x67')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x140'),'through':_0x2bcd('0x11c')});db['ChatProactiveAction']['belongsTo'](db[_0x2bcd('0x5f')],{'as':_0x2bcd('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x2bcd('0x10d')](db['CmContact'],{'as':_0x2bcd('0x11d'),'foreignKey':'CompanyId'});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x86')],{'as':_0x2bcd('0x19b'),'foreignKey':_0x2bcd('0x19c')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x19d')],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x173')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':'ContactId'});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':_0x2bcd('0x144'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db['JscriptySessionReport'],{'as':_0x2bcd('0x145'),'foreignKey':_0x2bcd('0x173')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x5a')],{'as':_0x2bcd('0x126'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')]['hasMany'](db[_0x2bcd('0x63')],{'as':'ChatInteractions','foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db['CmContact']['hasMany'](db[_0x2bcd('0x113')],{'as':'SmsInteractions','foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db['CmContact'][_0x2bcd('0x10d')](db[_0x2bcd('0x115')],{'as':_0x2bcd('0x116'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')][_0x2bcd('0x10d')](db[_0x2bcd('0x43')],{'as':_0x2bcd('0x122'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x6d')][_0x2bcd('0x118')](db[_0x2bcd('0x6b')],{'as':'Company','foreignKey':'CompanyId'});db[_0x2bcd('0x6d')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161'),'onDelete':_0x2bcd('0x10a')});db['CmContact']['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'through':_0x2bcd('0x19e')});db[_0x2bcd('0x6d')][_0x2bcd('0x11a')](db['Tag'],{'as':_0x2bcd('0x16a'),'through':_0x2bcd('0x19f')});db[_0x2bcd('0x6d')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x19f'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0x19d')][_0x2bcd('0x10d')](db['CmHopperAdditionalPhone'],{'as':_0x2bcd('0x1a0'),'foreignKey':_0x2bcd('0x1a1')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['User'],{'as':_0x2bcd('0x193'),'foreignKey':'UserId'});db['CmHopper'][_0x2bcd('0x118')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x2bcd('0x141'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db['Campaign'],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x19d')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x17c'),'foreignKey':_0x2bcd('0x1a2')});db[_0x2bcd('0x6f')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173'),'onDelete':'cascade'});db[_0x2bcd('0x6f')]['belongsTo'](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':'ListId','onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x6f')]['belongsTo'](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x194'),'foreignKey':_0x2bcd('0x141'),'onDelete':'cascade'});db['CmHopperBlack'][_0x2bcd('0x118')](db[_0x2bcd('0xe2')],{'as':_0x2bcd('0xe2'),'foreignKey':_0x2bcd('0x1a3'),'onDelete':'cascade'});db[_0x2bcd('0x76')][_0x2bcd('0x10d')](db['Condition'],{'as':{'plural':'All','singular':_0x2bcd('0x1a4')},'foreignKey':_0x2bcd('0x1a5'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db['Automation'][_0x2bcd('0x10d')](db[_0x2bcd('0x1a6')],{'as':{'plural':_0x2bcd('0x1a7'),'singular':_0x2bcd('0x1a8')},'foreignKey':'AutomationAnyId','onDelete':'cascade','hooks':!![]});db[_0x2bcd('0x76')]['hasMany'](db[_0x2bcd('0x75')],{'as':_0x2bcd('0x1a9'),'foreignKey':_0x2bcd('0x1aa'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x15c')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x1ab'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db['Interval'],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x2bcd('0x10a'),'hooks':!![],'required':![]});db['Interval'][_0x2bcd('0x10d')](db['VoiceExtension'],{'as':_0x2bcd('0x110'),'foreignKey':_0x2bcd('0x172'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db[_0x2bcd('0x45')],{'as':_0x2bcd('0x1ac'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')]['hasMany'](db[_0x2bcd('0x62')],{'as':_0x2bcd('0x1ad'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')][_0x2bcd('0x10d')](db[_0x2bcd('0x176')],{'as':_0x2bcd('0x1ae'),'foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0x7c')]['hasMany'](db[_0x2bcd('0x52')],{'as':_0x2bcd('0x1af'),'foreignKey':_0x2bcd('0x172')});db['Schedule'][_0x2bcd('0x118')](db[_0x2bcd('0x3f')],{});db[_0x2bcd('0x1b0')][_0x2bcd('0x118')](db[_0x2bcd('0x1b1')],{'foreignKey':_0x2bcd('0x1b2')});db[_0x2bcd('0x1b0')][_0x2bcd('0x118')](db['AnalyticCustomReport'],{'foreignKey':_0x2bcd('0x1b3')});db['Sound']['belongsToMany'](db[_0x2bcd('0x1b')],{'as':'Mohs','through':_0x2bcd('0x13f'),'onDelete':_0x2bcd('0x158')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x6d')],{'through':'cm_contact_has_tags'});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x63')],{'through':_0x2bcd('0x197')});db[_0x2bcd('0x168')][_0x2bcd('0x11a')](db[_0x2bcd('0x43')],{'through':_0x2bcd('0x169')});db[_0x2bcd('0x168')]['belongsToMany'](db[_0x2bcd('0x113')],{'through':_0x2bcd('0x184')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0x115')],{'through':_0x2bcd('0x17d')});db[_0x2bcd('0x168')][_0x2bcd('0x11a')](db[_0x2bcd('0x5a')],{'through':_0x2bcd('0x18d')});db['Tag'][_0x2bcd('0x11a')](db[_0x2bcd('0xfb')],{'through':'whatsapp_interaction_has_tags'});db[_0x2bcd('0x86')][_0x2bcd('0x118')](db['ContactItemType'],{'as':_0x2bcd('0x1b4'),'foreignKey':'ItemTypeId'});db[_0x2bcd('0x1b5')][_0x2bcd('0x118')](db['CmHopper'],{'as':_0x2bcd('0x1b6'),'foreignKey':'CmHopperId'});db[_0x2bcd('0x86')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x19c')});db[_0x2bcd('0x1b7')][_0x2bcd('0x10d')](db[_0x2bcd('0x1a6')],{'as':{'plural':_0x2bcd('0x1b8'),'singular':_0x2bcd('0x1b9')},'foreignKey':_0x2bcd('0x1ba'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db['Trigger'][_0x2bcd('0x10d')](db['Condition'],{'as':{'plural':_0x2bcd('0x1bb'),'singular':_0x2bcd('0x1bc')},'foreignKey':'TriggerAnyId','onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x1b7')]['hasMany'](db[_0x2bcd('0x75')],{'as':_0x2bcd('0x1a9'),'foreignKey':'TriggerId','onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x1bd')][_0x2bcd('0x10d')](db['AnalyticFieldReport'],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'CustomReportId','hooks':!![]});db[_0x2bcd('0x1b1')][_0x2bcd('0x10d')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x2bcd('0x91')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x2bcd('0x1be'),'onDelete':'cascade','foreignKey':'MetricId'});db[_0x2bcd('0x92')][_0x2bcd('0x118')](db[_0x2bcd('0x91')],{'foreignKey':_0x2bcd('0x1bf')});db[_0x2bcd('0x95')][_0x2bcd('0x10d')](db['SalesforceConfiguration'],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c3'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0x97')][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':'Fields','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x97')][_0x2bcd('0x118')](db[_0x2bcd('0x95')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x1c2')][_0x2bcd('0x10d')](db['SalesforceField'],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x1c2')]['hasMany'](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['SalesforceField'][_0x2bcd('0x10d')](db[_0x2bcd('0x1c2')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x1c2')]['belongsTo'](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0x1cc')][_0x2bcd('0x10d')](db[_0x2bcd('0x9a')],{'as':_0x2bcd('0x1c0'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x9a')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':'Subjects','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0x9a')][_0x2bcd('0x10d')](db['SugarcrmField'],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db['SugarcrmConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db['SugarcrmConfiguration'][_0x2bcd('0x118')](db[_0x2bcd('0x1cc')],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x2bcd('0x10d')](db['SugarcrmField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x2bcd('0x9c')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1c9'),'foreignKey':'DescriptionId'});db[_0x2bcd('0x9c')][_0x2bcd('0x10d')](db[_0x2bcd('0x9c')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x9c')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db['DeskAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xa0')],{'as':_0x2bcd('0x1c0'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa0')]['hasMany'](db['DeskField'],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SubjectId'});db[_0x2bcd('0xa0')][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c5'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x2bcd('0xa0')][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1be'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x2bcd('0xa0')][_0x2bcd('0x118')](db['DeskAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa0')]['belongsToMany'](db[_0x2bcd('0x168')],{'through':'int_desk_configuration_has_tags'});db[_0x2bcd('0xa2')]['hasMany'](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db['DeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['DeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa2')],{'as':'Field','foreignKey':'FieldId'});db['DeskField'][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xa4')][_0x2bcd('0x10d')](db[_0x2bcd('0x1cd')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0x1cd')][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'SubjectId'});db[_0x2bcd('0x1cd')][_0x2bcd('0x10d')](db['ZohoField'],{'as':_0x2bcd('0x1c5'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'DescriptionId'});db['ZohoConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0x1cd')][_0x2bcd('0x118')](db[_0x2bcd('0xa4')],{'as':'Account','foreignKey':'AccountId'});db[_0x2bcd('0x1ce')][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1c8'),'foreignKey':'SubjectId'});db['ZohoField'][_0x2bcd('0x10d')](db['ZohoField'],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['ZohoField'][_0x2bcd('0x10d')](db[_0x2bcd('0x1ce')],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0x1ce')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0x1cf')][_0x2bcd('0x10d')](db[_0x2bcd('0xa7')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db['ZendeskConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c3'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xa7')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':'Descriptions','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xa7')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xa7')][_0x2bcd('0x118')](db[_0x2bcd('0x1cf')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xa7')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':'int_zendesk_configuration_has_tags'});db[_0x2bcd('0xa9')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c8'),'foreignKey':'SubjectId'});db[_0x2bcd('0xa9')][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['ZendeskField'][_0x2bcd('0x10d')](db[_0x2bcd('0xa9')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xa9')]['belongsTo'](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xac')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'AccountId'});db['FreshdeskConfiguration']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1c3'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xac')][_0x2bcd('0x10d')](db[_0x2bcd('0xae')],{'as':'Descriptions','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c6')});db['FreshdeskConfiguration']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1be'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xac')]['belongsTo'](db[_0x2bcd('0x1d0')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db['FreshdeskConfiguration'][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x1d1')});db[_0x2bcd('0xae')]['hasMany'](db['FreshdeskField'],{'as':'Subject','foreignKey':'SubjectId'});db['FreshdeskField']['hasMany'](db['FreshdeskField'],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db['FreshdeskField']['hasMany'](db[_0x2bcd('0xae')],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xae')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xb0')][_0x2bcd('0x10d')](db[_0x2bcd('0xb1')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':'AccountId'});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':'Subjects','foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c5'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xb1')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb1')][_0x2bcd('0x118')](db[_0x2bcd('0xb0')],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db[_0x2bcd('0xb2')][_0x2bcd('0x10d')](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb2')]['hasMany'](db[_0x2bcd('0xb2')],{'as':_0x2bcd('0x1c9'),'foreignKey':'DescriptionId'});db[_0x2bcd('0xb2')]['hasMany'](db['VtigerField'],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0xb2')][_0x2bcd('0x118')](db['Variable'],{'as':_0x2bcd('0x8a'),'foreignKey':'VariableId'});db[_0x2bcd('0xb4')][_0x2bcd('0x10d')](db[_0x2bcd('0xb6')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2bcd('0x1c1')});db['ServicenowConfiguration'][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1c3'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb6')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x2bcd('0xb6')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1be'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb6')][_0x2bcd('0x118')](db[_0x2bcd('0xb4')],{'as':_0x2bcd('0x16f'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db[_0x2bcd('0xb8')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db['ServicenowField'],{'as':'Description','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xb8')][_0x2bcd('0x10d')](db['ServicenowField'],{'as':_0x2bcd('0x1ca'),'foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xb8')][_0x2bcd('0x118')](db[_0x2bcd('0x8a')],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xba')][_0x2bcd('0x10d')](db[_0x2bcd('0xbb')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db['Dynamics365Account'][_0x2bcd('0x118')](db[_0x2bcd('0x156')],{'as':_0x2bcd('0x156'),'foreignKey':'CloudProviderId'});db[_0x2bcd('0xbb')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':'Subjects','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xbb')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':_0x2bcd('0x1c5'),'onDelete':'cascade','foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xbb')]['hasMany'](db[_0x2bcd('0xbd')],{'as':'Fields','onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c7')});db['Dynamics365Configuration'][_0x2bcd('0x118')](db[_0x2bcd('0xba')],{'as':'Account','foreignKey':'AccountId'});db['Dynamics365Field'][_0x2bcd('0x10d')](db['Dynamics365Field'],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db['Dynamics365Field']['hasMany'](db[_0x2bcd('0xbd')],{'as':_0x2bcd('0x1c9'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xbd')][_0x2bcd('0x10d')](db[_0x2bcd('0xbd')],{'as':'Field','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xbd')]['belongsTo'](db['Variable'],{'as':_0x2bcd('0x8a'),'foreignKey':_0x2bcd('0x1cb')});db['FreshsalesAccount'][_0x2bcd('0x10d')](db[_0x2bcd('0xc1')],{'as':_0x2bcd('0x1c0'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1c1')});db[_0x2bcd('0xc1')]['hasMany'](db['FreshsalesField'],{'as':_0x2bcd('0x1c3'),'foreignKey':'SubjectId'});db[_0x2bcd('0xc1')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1c5'),'foreignKey':_0x2bcd('0x1c6')});db[_0x2bcd('0xc1')][_0x2bcd('0x10d')](db['FreshsalesField'],{'as':'Fields','foreignKey':_0x2bcd('0x1c7')});db[_0x2bcd('0xc1')][_0x2bcd('0x118')](db['FreshsalesAccount'],{'as':_0x2bcd('0x16f'),'foreignKey':'AccountId'});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1c8'),'foreignKey':_0x2bcd('0x1c4')});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db['FreshsalesField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x2bcd('0xc3')][_0x2bcd('0x10d')](db[_0x2bcd('0xc3')],{'as':_0x2bcd('0x1ca'),'foreignKey':'FieldId'});db[_0x2bcd('0xc3')][_0x2bcd('0x118')](db['Variable'],{'as':'Variable','foreignKey':_0x2bcd('0x1cb')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x5f')],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{});db[_0x2bcd('0xc9')]['belongsTo'](db['ChatMessage'],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0xc9')][_0x2bcd('0x118')](db[_0x2bcd('0x12c')],{});db[_0x2bcd('0xca')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'foreignKey':'FromId'});db[_0x2bcd('0xca')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1d2')});db[_0x2bcd('0xd0')][_0x2bcd('0x10d')](db[_0x2bcd('0xce')],{'foreignKey':_0x2bcd('0x1d3'),'onDelete':'cascade'});db['JscriptySessionReport'][_0x2bcd('0x10d')](db[_0x2bcd('0xcc')],{'foreignKey':_0x2bcd('0x1d3'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x180')],{});db[_0x2bcd('0xd2')]['belongsTo'](db['CmList'],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db['SmsQueueReport'][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':'Contact','foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x113')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x55')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{});db[_0x2bcd('0xd2')][_0x2bcd('0x118')](db[_0x2bcd('0x57')],{});db[_0x2bcd('0xd7')][_0x2bcd('0x10d')](db[_0x2bcd('0xd0')],{'foreignKey':_0x2bcd('0x1d4')});db['JscriptyProject'][_0x2bcd('0x10d')](db[_0x2bcd('0xce')],{'foreignKey':'ProjectId'});db[_0x2bcd('0xd7')]['hasMany'](db[_0x2bcd('0xcc')],{'foreignKey':'ProjectId'});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':'Agents','through':_0x2bcd('0x121')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x128')],{'through':_0x2bcd('0x105'),'as':'VoiceQueues'});db[_0x2bcd('0x120')]['belongsToMany'](db[_0x2bcd('0x41')],{'through':_0x2bcd('0x166'),'as':_0x2bcd('0x12b')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x12c')],{'through':_0x2bcd('0x199'),'as':'ChatQueues'});db['Team'][_0x2bcd('0x11a')](db['FaxQueue'],{'through':_0x2bcd('0x17e'),'as':'FaxQueues'});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x57')],{'through':_0x2bcd('0x1d5'),'as':_0x2bcd('0x12f')});db[_0x2bcd('0x120')][_0x2bcd('0x11a')](db[_0x2bcd('0x5d')],{'through':'team_has_openchannel_queues','as':_0x2bcd('0x131')});db['Team'][_0x2bcd('0x11a')](db[_0x2bcd('0x102')],{'through':'team_has_whatsapp_queues','as':_0x2bcd('0x132')});db['Team'][_0x2bcd('0x11a')](db['VoicePrefix'],{'through':_0x2bcd('0x1d6'),'as':_0x2bcd('0x12a')});db['Campaign'][_0x2bcd('0x10d')](db[_0x2bcd('0x19d')],{'as':_0x2bcd('0x142'),'foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')][_0x2bcd('0x10d')](db['CmHopperFinal'],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')][_0x2bcd('0x10d')](db[_0x2bcd('0x111')],{'as':'HopperHistories','foreignKey':_0x2bcd('0x1a3')});db[_0x2bcd('0xe2')]['hasMany'](db[_0x2bcd('0x6f')],{'as':'HopperBlacks','foreignKey':_0x2bcd('0x1a3')});db['Campaign']['belongsTo'](db['Trunk'],{'as':_0x2bcd('0x2c'),'foreignKey':_0x2bcd('0x1d7')});db['Campaign'][_0x2bcd('0x118')](db['Trunk'],{'as':_0x2bcd('0x1d8'),'foreignKey':_0x2bcd('0x146')});db[_0x2bcd('0xe2')]['belongsTo'](db['Interval'],{'as':'Interval','foreignKey':_0x2bcd('0x172')});db[_0x2bcd('0xe2')]['belongsTo'](db[_0x2bcd('0x1d9')],{'as':'SquareProject','foreignKey':_0x2bcd('0x1da')});db[_0x2bcd('0xe2')]['belongsToMany'](db[_0x2bcd('0xef')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0x2bcd('0xe2')]['belongsToMany'](db['CmList'],{'as':'BlackLists','through':_0x2bcd('0x1db')});db[_0x2bcd('0xe6')][_0x2bcd('0x118')](db['ChatOfflineMessage'],{'as':_0x2bcd('0x66'),'foreignKey':_0x2bcd('0x171')});db[_0x2bcd('0x1dc')]['belongsTo'](db['MailMessage'],{});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db[_0x2bcd('0x43')],{});db['MailTransferReport']['belongsTo'](db[_0x2bcd('0x3f')],{'foreignKey':_0x2bcd('0x1dd'),'as':_0x2bcd('0x1de')});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1df'),'as':'FromAgent'});db['MailTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x1dc')][_0x2bcd('0x118')](db[_0x2bcd('0x41')],{'foreignKey':_0x2bcd('0x1e2'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0x1dc')]['belongsTo'](db['MailAccount'],{'foreignKey':_0x2bcd('0x1e4'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db['ChatMessage'],{});db['ChatTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x63')],{});db[_0x2bcd('0xea')]['belongsTo'](db[_0x2bcd('0x5f')],{'foreignKey':_0x2bcd('0x1e6'),'as':'FromAccount'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':'FromAgent'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x2bcd('0xea')][_0x2bcd('0x118')](db['ChatQueue'],{'foreignKey':_0x2bcd('0x1e7'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0xea')]['belongsTo'](db[_0x2bcd('0x5f')],{'foreignKey':_0x2bcd('0x1e8'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0x1e9')]['belongsTo'](db[_0x2bcd('0x177')],{});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db['FaxInteraction'],{});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'foreignKey':'FromFaxAccountId','as':_0x2bcd('0x1de')});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db['FaxTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':'ToAgent'});db[_0x2bcd('0x1e9')][_0x2bcd('0x118')](db[_0x2bcd('0x179')],{'foreignKey':_0x2bcd('0x1eb'),'as':_0x2bcd('0x1e3')});db['FaxTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x4d')],{'foreignKey':_0x2bcd('0x1ec'),'as':_0x2bcd('0x1e5')});db['OpenchannelTransferReport'][_0x2bcd('0x118')](db['OpenchannelMessage'],{});db[_0x2bcd('0x1ed')]['belongsTo'](db[_0x2bcd('0x5a')],{});db[_0x2bcd('0x1ed')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'foreignKey':_0x2bcd('0x1ee'),'as':'FromAccount'});db['OpenchannelTransferReport']['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db['OpenchannelTransferReport'][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x1ed')]['belongsTo'](db[_0x2bcd('0x5d')],{'foreignKey':_0x2bcd('0x1ef'),'as':'ToQueue'});db[_0x2bcd('0x1ed')][_0x2bcd('0x118')](db[_0x2bcd('0x136')],{'foreignKey':_0x2bcd('0x1f0'),'as':'ToAccount'});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x55')],{});db['SmsTransferReport'][_0x2bcd('0x118')](db['SmsInteraction'],{});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x180')],{'foreignKey':'FromSmsAccountId','as':_0x2bcd('0x1de')});db[_0x2bcd('0xed')][_0x2bcd('0x118')](db['User'],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db[_0x2bcd('0xed')]['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db['SmsTransferReport'][_0x2bcd('0x118')](db[_0x2bcd('0x57')],{'foreignKey':_0x2bcd('0x1f1'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0xed')][_0x2bcd('0x118')](db['SmsAccount'],{'foreignKey':_0x2bcd('0x1f2'),'as':_0x2bcd('0x1e5')});db['CmList'][_0x2bcd('0x10d')](db['Disposition'],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x161'),'onDelete':'cascade'});db[_0x2bcd('0xef')][_0x2bcd('0x10d')](db['CmCustomField'],{'as':_0x2bcd('0x1f3'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')]['hasMany'](db[_0x2bcd('0x6d')],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x2bcd('0x161')});db['CmList'][_0x2bcd('0x10d')](db[_0x2bcd('0x70')],{'as':_0x2bcd('0x143'),'foreignKey':_0x2bcd('0x161')});db['CmList']['hasMany'](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')][_0x2bcd('0x10d')](db[_0x2bcd('0x73')],{'as':_0x2bcd('0x73'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xef')]['belongsToMany'](db[_0x2bcd('0x128')],{'as':_0x2bcd('0x1f4'),'through':_0x2bcd('0x149')});db[_0x2bcd('0xef')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x11f')});db[_0x2bcd('0xf1')]['hasMany'](db['VoiceExtension'],{'as':'Extensions','onDelete':'cascade'});db['VoicePrefix'][_0x2bcd('0x11a')](db['User'],{'as':'Agents','through':_0x2bcd('0x107')});db[_0x2bcd('0xf1')]['belongsToMany'](db[_0x2bcd('0x120')],{'through':'TeamVoicePrefix','as':'Teams'});db[_0x2bcd('0xf3')][_0x2bcd('0x10d')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x16c'),'foreignKey':'userProfileId'});db[_0x2bcd('0xf3')]['hasMany'](db[_0x2bcd('0x1f5')],{'as':_0x2bcd('0x1f6'),'foreignKey':_0x2bcd('0x119'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0x1f5')][_0x2bcd('0x10d')](db[_0x2bcd('0x1f7')],{'as':_0x2bcd('0x1f8'),'foreignKey':_0x2bcd('0x1f9'),'onDelete':_0x2bcd('0x10a')});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db[_0x2bcd('0x15c')],{'as':_0x2bcd('0x181'),'foreignKey':_0x2bcd('0x1fa'),'onDelete':'cascade'});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db['CannedAnswer'],{'as':_0x2bcd('0x15d'),'foreignKey':'WhatsappAccountId'});db[_0x2bcd('0xf7')][_0x2bcd('0x10d')](db[_0x2bcd('0xfd')],{'as':_0x2bcd('0x14c'),'foreignKey':'WhatsappAccountId'});db['WhatsappAccount']['hasMany'](db[_0x2bcd('0xfb')],{'as':_0x2bcd('0x183')});db['WhatsappAccount']['hasMany'](db[_0x2bcd('0xf9')],{'as':_0x2bcd('0x15f')});db['WhatsappAccount'][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':_0x2bcd('0x160'),'foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0xf7')][_0x2bcd('0x118')](db[_0x2bcd('0x163')],{'as':_0x2bcd('0x147'),'foreignKey':_0x2bcd('0x148')});db[_0x2bcd('0xf7')]['belongsToMany'](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x13b')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0x102')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db[_0x2bcd('0xf7')],{'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db['Interval'],{'onDelete':_0x2bcd('0x158'),'foreignKey':'IntervalId'});db[_0x2bcd('0xf9')][_0x2bcd('0x118')](db['Tag'],{'onDelete':_0x2bcd('0x158'),'foreignKey':_0x2bcd('0x17a')});db['WhatsappInteraction'][_0x2bcd('0x10d')](db[_0x2bcd('0xfd')],{'as':_0x2bcd('0x14c'),'onDelete':_0x2bcd('0x10a'),'foreignKey':_0x2bcd('0x1fb')});db['WhatsappInteraction']['belongsTo'](db[_0x2bcd('0xf7')],{'as':_0x2bcd('0x16f'),'foreignKey':'WhatsappAccountId'});db[_0x2bcd('0xfb')][_0x2bcd('0x118')](db['CmContact'],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0xfb')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':'Owner','foreignKey':'UserId'});db[_0x2bcd('0xfb')]['belongsToMany'](db[_0x2bcd('0x168')],{'through':'whatsapp_interaction_has_tags','as':_0x2bcd('0x16a')});db[_0x2bcd('0xfb')][_0x2bcd('0x11a')](db[_0x2bcd('0x168')],{'through':_0x2bcd('0x1fc'),'as':_0x2bcd('0x16b')});db[_0x2bcd('0xfb')][_0x2bcd('0x11a')](db['User'],{'as':_0x2bcd('0x16c'),'through':'user_has_whatsapp_interactions','foreignKey':_0x2bcd('0x1fb')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x13')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'onDelete':'cascade','as':'Contact'});db[_0x2bcd('0xfd')]['belongsTo'](db[_0x2bcd('0xfb')],{'onDelete':_0x2bcd('0x10a'),'as':'Interaction','foreignKey':_0x2bcd('0x1fb')});db[_0x2bcd('0xfd')][_0x2bcd('0x118')](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0x2bcd('0x1fd')]['belongsTo'](db['WhatsappAccount'],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xef')],{'as':'List','foreignKey':_0x2bcd('0x161')});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0x6d')],{'as':_0x2bcd('0x153'),'foreignKey':_0x2bcd('0x173')});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xfb')],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0x102')],{});db[_0x2bcd('0x1fd')][_0x2bcd('0x118')](db[_0x2bcd('0xfd')],{});db[_0x2bcd('0x1fd')]['belongsTo'](db['User'],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db['WhatsappMessage'],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0xfb')],{});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db['WhatsappAccount'],{'foreignKey':_0x2bcd('0x1fe'),'as':'FromAccount'});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0xf7')],{'foreignKey':_0x2bcd('0x1ff'),'as':_0x2bcd('0x1e5')});db[_0x2bcd('0x100')]['belongsTo'](db[_0x2bcd('0x102')],{'foreignKey':_0x2bcd('0x200'),'as':_0x2bcd('0x1e3')});db[_0x2bcd('0x100')]['belongsTo'](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1df'),'as':_0x2bcd('0x1ea')});db[_0x2bcd('0x100')][_0x2bcd('0x118')](db[_0x2bcd('0x13')],{'foreignKey':_0x2bcd('0x1e0'),'as':_0x2bcd('0x1e1')});db[_0x2bcd('0x102')][_0x2bcd('0x11a')](db[_0x2bcd('0x13')],{'as':_0x2bcd('0x164'),'through':_0x2bcd('0x3a'),'foreignKey':_0x2bcd('0x201')});db[_0x2bcd('0x102')][_0x2bcd('0x11a')](db['Team'],{'through':_0x2bcd('0x202'),'as':_0x2bcd('0x14a')});db[_0x2bcd('0x203')][_0x2bcd('0x118')](db['User'],{'as':_0x2bcd('0x204'),'foreignKey':_0x2bcd('0x10b'),'onDelete':_0x2bcd('0x10a'),'hooks':!![]});db[_0x2bcd('0x156')][_0x2bcd('0x159')](db[_0x2bcd('0xba')],{'as':'Dynamics365Account','onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x156')][_0x2bcd('0x159')](db[_0x2bcd('0x154')],{'as':_0x2bcd('0x15a'),'onDelete':_0x2bcd('0x158')});db[_0x2bcd('0x156')]['hasOne'](db[_0x2bcd('0x3d')],{'as':_0x2bcd('0x15b'),'onDelete':_0x2bcd('0x158')});module[_0x2bcd('0x205')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 5e16452..b3a943c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36eb=['/www','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','get','route','appPath','/index.html','express','./config/environment','setupLoggers','./api/client-side-logs','default','then','use','/api/users','./api/user','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceRecording','/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/voiceDialReport','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','./api/dashboard','/api/dashboards/items','./api/faxAccount','/api/fax/applications','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','./api/chatQueue','/api/chat/groups','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmCustomField','/api/actions','/api/automations','./api/automation','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','/api/cm_hopper_additional_phones','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','./api/mailTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root'];(function(_0x2652ef,_0x234230){var _0x2db578=function(_0x56b137){while(--_0x56b137){_0x2652ef['push'](_0x2652ef['shift']());}};_0x2db578(++_0x234230);}(_0x36eb,0x119));var _0xb36e=function(_0x66c5c7,_0xd17b08){_0x66c5c7=_0x66c5c7-0x0;var _0x37ac24=_0x36eb[_0x66c5c7];return _0x37ac24;};'use strict';var path=require('path');var express=require(_0xb36e('0x0'));var errors=require('./errors');var config=require(_0xb36e('0x1'));var setupLoggers=require('./utils/client-side-logger')[_0xb36e('0x2')];var clientSideLogs=require(_0xb36e('0x3'));exports[_0xb36e('0x4')]=function(_0xef9ee7){return setupLoggers(_0xef9ee7)[_0xb36e('0x5')](function(){_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x7'),require(_0xb36e('0x8')));_0xef9ee7['use']('/api/voice/chanspy',require('./api/voiceChanSpy'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x9'),require(_0xb36e('0xa')));_0xef9ee7[_0xb36e('0x6')]('/api/voice/extensions',require(_0xb36e('0xb')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xc'),require(_0xb36e('0xd')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xe'),require('./api/voiceQueue'));_0xef9ee7[_0xb36e('0x6')]('/api/voice/recordings',require(_0xb36e('0xf')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x10'),require('./api/screenRecording'));_0xef9ee7['use'](_0xb36e('0x11'),require(_0xb36e('0x12')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x13'),require(_0xb36e('0x14')));_0xef9ee7['use'](_0xb36e('0x15'),require(_0xb36e('0x16')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x17'),require(_0xb36e('0x18')));_0xef9ee7['use']('/api/voice/agents/reports',require(_0xb36e('0x19')));_0xef9ee7[_0xb36e('0x6')]('/api/voice/queues/reports',require(_0xb36e('0x1a')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x1b'),require('./api/memberReport'));_0xef9ee7['use']('/api/trunks',require('./api/trunk'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x1c'),require(_0xb36e('0x1d')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x1e'),require(_0xb36e('0x1f')));_0xef9ee7['use']('/api/mail/accounts',require('./api/mailAccount'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x20'),require(_0xb36e('0x21')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x22'),require(_0xb36e('0x23')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x24'),require('./api/mailInteraction'));_0xef9ee7[_0xb36e('0x6')]('/api/mail/messages',require(_0xb36e('0x25')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x26'),require(_0xb36e('0x27')));_0xef9ee7[_0xb36e('0x6')]('/api/mail/reports/queue',require(_0xb36e('0x28')));_0xef9ee7[_0xb36e('0x6')]('/api/dashboards',require(_0xb36e('0x29')));_0xef9ee7['use'](_0xb36e('0x2a'),require('./api/dashboardItem'));_0xef9ee7[_0xb36e('0x6')]('/api/fax/accounts',require(_0xb36e('0x2b')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x2c'),require('./api/faxApplication'));_0xef9ee7[_0xb36e('0x6')]('/api/fax/interactions',require('./api/faxInteraction'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x2d'),require(_0xb36e('0x2e')));_0xef9ee7['use'](_0xb36e('0x2f'),require(_0xb36e('0x30')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x31'),require(_0xb36e('0x32')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x33'),require(_0xb36e('0x34')));_0xef9ee7['use'](_0xb36e('0x35'),require(_0xb36e('0x36')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x37'),require('./api/smsInteraction'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x38'),require(_0xb36e('0x39')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x3a'),require('./api/smsQueue'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x3b'),require('./api/openchannelAccount'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x3c'),require(_0xb36e('0x3d')));_0xef9ee7['use']('/api/openchannel/interactions',require(_0xb36e('0x3e')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x3f'),require('./api/openchannelMessage'));_0xef9ee7['use'](_0xb36e('0x40'),require(_0xb36e('0x41')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x42'),require(_0xb36e('0x43')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x44'),require('./api/openchannelQueueReport'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x45'),require(_0xb36e('0x46')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x47'),require(_0xb36e('0x48')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x49'),require(_0xb36e('0x4a')));_0xef9ee7[_0xb36e('0x6')]('/api/chat/offline_messages',require(_0xb36e('0x4b')));_0xef9ee7[_0xb36e('0x6')]('/api/chat/queues',require(_0xb36e('0x4c')));_0xef9ee7['use'](_0xb36e('0x4d'),require(_0xb36e('0x4e')));_0xef9ee7[_0xb36e('0x6')]('/api/chat/proactive_actions',require(_0xb36e('0x4f')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x50'),require('./api/cmCompany'));_0xef9ee7['use']('/api/cm/contacts',require(_0xb36e('0x51')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x52'),require(_0xb36e('0x53')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x54'),require(_0xb36e('0x55')));_0xef9ee7['use'](_0xb36e('0x56'),require(_0xb36e('0x57')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x58'),require('./api/cmHopperHistory'));_0xef9ee7[_0xb36e('0x6')]('/api/cm/custom_fields',require(_0xb36e('0x59')));_0xef9ee7['use'](_0xb36e('0x5a'),require('./api/action'));_0xef9ee7['use'](_0xb36e('0x5b'),require(_0xb36e('0x5c')));_0xef9ee7[_0xb36e('0x6')]('/api/canned_answers',require('./api/cannedAnswer'));_0xef9ee7['use'](_0xb36e('0x5d'),require(_0xb36e('0x5e')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x5f'),require(_0xb36e('0x60')));_0xef9ee7['use'](_0xb36e('0x61'),require(_0xb36e('0x62')));_0xef9ee7['use'](_0xb36e('0x63'),require('./api/pause'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x64'),require(_0xb36e('0x65')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x66'),require(_0xb36e('0x67')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x68'),require(_0xb36e('0x69')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x6a'),require('./api/sound'));_0xef9ee7['use'](_0xb36e('0x6b'),require(_0xb36e('0x6c')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x6d'),require(_0xb36e('0x6e')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x6f'),require('./api/cmContactHasItem'));_0xef9ee7['use'](_0xb36e('0x70'),require('./api/cmHopperAdditionalPhone'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x71'),require(_0xb36e('0x72')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x73'),require(_0xb36e('0x74')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x75'),require(_0xb36e('0x76')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x77'),require(_0xb36e('0x78')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x79'),require(_0xb36e('0x7a')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x7b'),require(_0xb36e('0x7c')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x7d'),require(_0xb36e('0x7e')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x7f'),require(_0xb36e('0x80')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x81'),require('./api/analyticMetric'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x82'),require(_0xb36e('0x83')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x84'),require(_0xb36e('0x85')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x86'),require(_0xb36e('0x87')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x88'),require('./api/intSalesforceConfiguration'));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/salesforce/fields',require(_0xb36e('0x89')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x8a'),require(_0xb36e('0x8b')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x8c'),require(_0xb36e('0x8d')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x8e'),require(_0xb36e('0x8f')));_0xef9ee7['use'](_0xb36e('0x90'),require(_0xb36e('0x91')));_0xef9ee7['use']('/api/integrations/desk/configurations',require(_0xb36e('0x92')));_0xef9ee7['use'](_0xb36e('0x93'),require(_0xb36e('0x94')));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/zoho/accounts',require(_0xb36e('0x95')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x96'),require(_0xb36e('0x97')));_0xef9ee7['use']('/api/integrations/zoho/fields',require(_0xb36e('0x98')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x99'),require(_0xb36e('0x9a')));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/zendesk/configurations',require(_0xb36e('0x9b')));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/zendesk/fields',require(_0xb36e('0x9c')));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/freshdesk/accounts',require(_0xb36e('0x9d')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x9e'),require(_0xb36e('0x9f')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xa0'),require('./api/intFreshdeskField'));_0xef9ee7[_0xb36e('0x6')]('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xa1'),require(_0xb36e('0xa2')));_0xef9ee7['use'](_0xb36e('0xa3'),require(_0xb36e('0xa4')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xa5'),require('./api/intServicenowAccount'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xa6'),require(_0xb36e('0xa7')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xa8'),require(_0xb36e('0xa9')));_0xef9ee7['use'](_0xb36e('0xaa'),require(_0xb36e('0xab')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xac'),require('./api/intDynamics365Configuration'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xad'),require(_0xb36e('0xae')));_0xef9ee7['use'](_0xb36e('0xaf'),require('./api/intFreshsalesAccount'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xb0'),require(_0xb36e('0xb1')));_0xef9ee7['use'](_0xb36e('0xb2'),require(_0xb36e('0xb3')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xb4'),require(_0xb36e('0xb5')));_0xef9ee7[_0xb36e('0x6')]('/api/chat/reports/queue',require(_0xb36e('0xb6')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xb7'),require(_0xb36e('0xb8')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xb9'),require(_0xb36e('0xba')));_0xef9ee7['use']('/api/jscripty/questions/reports',require('./api/jscriptyQuestionReport'));_0xef9ee7[_0xb36e('0x6')]('/api/jscripty/sessions/reports',require('./api/jscriptySessionReport'));_0xef9ee7[_0xb36e('0x6')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0xef9ee7[_0xb36e('0x6')]('/api/square/reports',require(_0xb36e('0xbb')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xbc'),require(_0xb36e('0xbd')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xbe'),require(_0xb36e('0xbf')));_0xef9ee7['use']('/api/settings',require('./api/setting'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xc0'),require('./api/squareOdbc'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xc1'),require(_0xb36e('0xc2')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xc3'),require(_0xb36e('0xc4')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xc5'),require(_0xb36e('0xc6')));_0xef9ee7['use'](_0xb36e('0xc7'),require(_0xb36e('0xc8')));_0xef9ee7['use'](_0xb36e('0xc9'),require(_0xb36e('0xca')));_0xef9ee7['use'](_0xb36e('0xcb'),require('./api/campaign'));_0xef9ee7['use']('/api/migrations',require(_0xb36e('0xcc')));_0xef9ee7['use'](_0xb36e('0xcd'),require(_0xb36e('0xce')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xcf'),require(_0xb36e('0xd0')));_0xef9ee7[_0xb36e('0x6')]('/api/mail/reports/transfer',require(_0xb36e('0xd1')));_0xef9ee7[_0xb36e('0x6')]('/api/chat/reports/transfer',require('./api/chatTransferReport'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xd2'),require(_0xb36e('0xd3')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xd4'),require(_0xb36e('0xd5')));_0xef9ee7[_0xb36e('0x6')]('/api/sms/reports/transfer',require(_0xb36e('0xd6')));_0xef9ee7[_0xb36e('0x6')]('/api/cm/lists',require(_0xb36e('0xd7')));_0xef9ee7['use'](_0xb36e('0xd8'),require(_0xb36e('0xd9')));_0xef9ee7['use'](_0xb36e('0xda'),require(_0xb36e('0xdb')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xdc'),require(_0xb36e('0xdd')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xde'),require(_0xb36e('0xdf')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xe0'),require(_0xb36e('0xe1')));_0xef9ee7['use'](_0xb36e('0xe2'),require(_0xb36e('0xe3')));_0xef9ee7['use'](_0xb36e('0xe4'),require(_0xb36e('0xe5')));_0xef9ee7['use'](_0xb36e('0xe6'),require(_0xb36e('0xe7')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xe8'),require('./api/whatsappMessage'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xe9'),require('./api/whatsappQueueReport'));_0xef9ee7[_0xb36e('0x6')]('/api/whatsapp/reports/transfer',require(_0xb36e('0xea')));_0xef9ee7['use'](_0xb36e('0xeb'),require(_0xb36e('0xec')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xed'),require(_0xb36e('0xee')));_0xef9ee7[_0xb36e('0x6')]('/api/realtime',require(_0xb36e('0xef')));_0xef9ee7[_0xb36e('0x6')]('/api/user-settings',require(_0xb36e('0xf0')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xf1'),require(_0xb36e('0xf2')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xf3'),require('./api/authGoogle'));_0xef9ee7['use'](_0xb36e('0xf4'),require(_0xb36e('0xf5')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xf6'),require(_0xb36e('0xf7')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xf8'),require('./api/rpc'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xf9'),require(_0xb36e('0xfa')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xfb'),require('./api/system'));_0xef9ee7[_0xb36e('0x6')]('/api/pm2',require('./api/pm2'));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xfc'),require(_0xb36e('0xfd')));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xfe'),clientSideLogs);_0xef9ee7[_0xb36e('0x6')](_0xb36e('0xff'),express[_0xb36e('0x100')](path[_0xb36e('0x101')](config[_0xb36e('0x102')],_0xb36e('0xff'))));_0xef9ee7[_0xb36e('0x6')]('/www',express['static'](path[_0xb36e('0x101')](config[_0xb36e('0x102')],_0xb36e('0x103'))));_0xef9ee7[_0xb36e('0x6')]('/demo',express[_0xb36e('0x100')](path[_0xb36e('0x101')](config[_0xb36e('0x102')],_0xb36e('0x104'))));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x105'),express['static'](path[_0xb36e('0x101')](config['root'],_0xb36e('0x106'),_0xb36e('0x107'))));_0xef9ee7[_0xb36e('0x6')](_0xb36e('0x108'),express[_0xb36e('0x100')](path[_0xb36e('0x101')](config[_0xb36e('0x102')],_0xb36e('0x109'))));_0xef9ee7['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0xb36e('0x10a')](errors[0x194]);_0xef9ee7[_0xb36e('0x10b')]('/*')[_0xb36e('0x10a')](function(_0x76c8e4,_0x222a13){_0x222a13['sendFile'](path['resolve'](_0xef9ee7['get'](_0xb36e('0x10c'))+_0xb36e('0x10d')));});return _0xef9ee7;});};
\ No newline at end of file
+var _0x550b=['./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','./api/cmList','/api/userProfiles','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/activedirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/logs','root','/www','join','/demo','static','/snippet','snippet','/plugins','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','path','./errors','setupLoggers','./api/client-side-logs','default','then','use','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./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/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/sounds','./api/sound','/api/tags','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/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/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./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/intDynamics365Field','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments'];(function(_0x437767,_0x3e7b25){var _0x341ab1=function(_0x5c625f){while(--_0x5c625f){_0x437767['push'](_0x437767['shift']());}};_0x341ab1(++_0x3e7b25);}(_0x550b,0x14a));var _0xb550=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x550b[_0x133277];return _0x5b4a22;};'use strict';var path=require(_0xb550('0x0'));var express=require('express');var errors=require(_0xb550('0x1'));var config=require('./config/environment');var setupLoggers=require('./utils/client-side-logger')[_0xb550('0x2')];var clientSideLogs=require(_0xb550('0x3'));exports[_0xb550('0x4')]=function(_0x17f6ac){return setupLoggers(_0x17f6ac)[_0xb550('0x5')](function(){_0x17f6ac[_0xb550('0x6')]('/api/users',require(_0xb550('0x7')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8'),require(_0xb550('0x9')));_0x17f6ac['use']('/api/voice/contexts',require('./api/voiceContext'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa'),require(_0xb550('0xb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc'),require(_0xb550('0xd')));_0x17f6ac[_0xb550('0x6')]('/api/voice/queues',require(_0xb550('0xe')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf'),require(_0xb550('0x10')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x11'),require(_0xb550('0x12')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x13'),require(_0xb550('0x14')));_0x17f6ac[_0xb550('0x6')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x15'),require(_0xb550('0x16')));_0x17f6ac[_0xb550('0x6')]('/api/voice/dials/reports',require(_0xb550('0x17')));_0x17f6ac[_0xb550('0x6')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x18'),require(_0xb550('0x19')));_0x17f6ac[_0xb550('0x6')]('/api/members/reports',require('./api/memberReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1a'),require(_0xb550('0x1b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1c'),require(_0xb550('0x1d')));_0x17f6ac[_0xb550('0x6')]('/api/mail/out_servers',require(_0xb550('0x1e')));_0x17f6ac[_0xb550('0x6')]('/api/mail/accounts',require('./api/mailAccount'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x1f'),require('./api/mailQueue'));_0x17f6ac['use'](_0xb550('0x20'),require(_0xb550('0x21')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x22'),require(_0xb550('0x23')));_0x17f6ac['use']('/api/mail/messages',require(_0xb550('0x24')));_0x17f6ac['use']('/api/mail/applications',require(_0xb550('0x25')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x26'),require(_0xb550('0x27')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x28'),require('./api/dashboard'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x29'),require('./api/dashboardItem'));_0x17f6ac[_0xb550('0x6')]('/api/fax/accounts',require(_0xb550('0x2a')));_0x17f6ac[_0xb550('0x6')]('/api/fax/applications',require(_0xb550('0x2b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x2c'),require(_0xb550('0x2d')));_0x17f6ac['use'](_0xb550('0x2e'),require(_0xb550('0x2f')));_0x17f6ac['use'](_0xb550('0x30'),require('./api/faxQueue'));_0x17f6ac['use']('/api/fax/reports/queue',require(_0xb550('0x31')));_0x17f6ac[_0xb550('0x6')]('/api/sms/accounts',require(_0xb550('0x32')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x33'),require('./api/smsApplication'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x34'),require(_0xb550('0x35')));_0x17f6ac['use'](_0xb550('0x36'),require(_0xb550('0x37')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x38'),require(_0xb550('0x39')));_0x17f6ac['use'](_0xb550('0x3a'),require('./api/openchannelAccount'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3b'),require(_0xb550('0x3c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3d'),require(_0xb550('0x3e')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x3f'),require(_0xb550('0x40')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x41'),require(_0xb550('0x42')));_0x17f6ac[_0xb550('0x6')]('/api/chat/websites',require(_0xb550('0x43')));_0x17f6ac['use'](_0xb550('0x44'),require(_0xb550('0x45')));_0x17f6ac[_0xb550('0x6')]('/api/chat/applications',require(_0xb550('0x46')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x47'),require(_0xb550('0x48')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x49'),require('./api/chatMessage'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4a'),require(_0xb550('0x4b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4c'),require('./api/chatQueue'));_0x17f6ac['use'](_0xb550('0x4d'),require('./api/chatGroup'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x4e'),require('./api/chatProactiveAction'));_0x17f6ac['use'](_0xb550('0x4f'),require(_0xb550('0x50')));_0x17f6ac[_0xb550('0x6')]('/api/cm/contacts',require(_0xb550('0x51')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x52'),require(_0xb550('0x53')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x54'),require('./api/cmHopperBlack'));_0x17f6ac['use'](_0xb550('0x55'),require(_0xb550('0x56')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x57'),require(_0xb550('0x58')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x59'),require('./api/cmCustomField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5a'),require(_0xb550('0x5b')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5c'),require('./api/automation'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x5d'),require(_0xb550('0x5e')));_0x17f6ac['use']('/api/dispositions',require(_0xb550('0x5f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x60'),require(_0xb550('0x61')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x62'),require('./api/interval'));_0x17f6ac[_0xb550('0x6')]('/api/pauses',require(_0xb550('0x63')));_0x17f6ac[_0xb550('0x6')]('/api/cdr',require(_0xb550('0x64')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x65'),require(_0xb550('0x66')));_0x17f6ac['use']('/api/schedules',require('./api/schedule'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x67'),require(_0xb550('0x68')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x69'),require('./api/tag'));_0x17f6ac[_0xb550('0x6')]('/api/contact_item_types',require(_0xb550('0x6a')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6b'),require(_0xb550('0x6c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6d'),require('./api/cmHopperAdditionalPhone'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x6e'),require(_0xb550('0x6f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x70'),require(_0xb550('0x71')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x72'),require(_0xb550('0x73')));_0x17f6ac[_0xb550('0x6')]('/api/integrations',require(_0xb550('0x74')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x75'),require('./api/integrationReport'));_0x17f6ac['use']('/api/analytics/custom_reports',require('./api/analyticCustomReport'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x76'),require(_0xb550('0x77')));_0x17f6ac[_0xb550('0x6')]('/api/analytics/extracted_reports',require(_0xb550('0x78')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x79'),require(_0xb550('0x7a')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x7b'),require(_0xb550('0x7c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x7d'),require(_0xb550('0x7e')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/salesforce/accounts',require(_0xb550('0x7f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x80'),require(_0xb550('0x81')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x82'),require('./api/intSalesforceField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x83'),require(_0xb550('0x84')));_0x17f6ac['use'](_0xb550('0x85'),require(_0xb550('0x86')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x87'),require('./api/intSugarcrmField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x88'),require(_0xb550('0x89')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8a'),require(_0xb550('0x8b')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/desk/fields',require(_0xb550('0x8c')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8d'),require(_0xb550('0x8e')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x8f'),require(_0xb550('0x90')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x91'),require(_0xb550('0x92')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x93'),require(_0xb550('0x94')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x95'),require(_0xb550('0x96')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/zendesk/fields',require('./api/intZendeskField'));_0x17f6ac[_0xb550('0x6')]('/api/integrations/freshdesk/accounts',require(_0xb550('0x97')));_0x17f6ac['use'](_0xb550('0x98'),require(_0xb550('0x99')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9a'),require('./api/intFreshdeskField'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9b'),require(_0xb550('0x9c')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x17f6ac[_0xb550('0x6')](_0xb550('0x9d'),require(_0xb550('0x9e')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/servicenow/accounts',require(_0xb550('0x9f')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa0'),require(_0xb550('0xa1')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa2'),require(_0xb550('0xa3')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa4'),require(_0xb550('0xa5')));_0x17f6ac['use']('/api/integrations/dynamics365/configurations',require(_0xb550('0xa6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa7'),require(_0xb550('0xa8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xa9'),require('./api/intFreshsalesAccount'));_0x17f6ac['use'](_0xb550('0xaa'),require(_0xb550('0xab')));_0x17f6ac[_0xb550('0x6')]('/api/integrations/freshsales/fields',require('./api/intFreshsalesField'));_0x17f6ac[_0xb550('0x6')]('/api/networks',require(_0xb550('0xac')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xad'),require(_0xb550('0xae')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xaf'),require(_0xb550('0xb0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb1'),require(_0xb550('0xb2')));_0x17f6ac['use']('/api/jscripty/questions/reports',require(_0xb550('0xb3')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb4'),require(_0xb550('0xb5')));_0x17f6ac[_0xb550('0x6')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x17f6ac[_0xb550('0x6')]('/api/square/reports',require(_0xb550('0xb6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb7'),require(_0xb550('0xb8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xb9'),require('./api/jscriptyProject'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xba'),require(_0xb550('0xbb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xbc'),require(_0xb550('0xbd')));_0x17f6ac[_0xb550('0x6')]('/api/square/projects',require(_0xb550('0xbe')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xbf'),require(_0xb550('0xc0')));_0x17f6ac['use'](_0xb550('0xc1'),require(_0xb550('0xc2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc3'),require(_0xb550('0xc4')));_0x17f6ac[_0xb550('0x6')]('/api/license',require(_0xb550('0xc5')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc6'),require('./api/campaign'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc7'),require(_0xb550('0xc8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xc9'),require(_0xb550('0xca')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcb'),require(_0xb550('0xcc')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcd'),require(_0xb550('0xce')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xcf'),require(_0xb550('0xd0')));_0x17f6ac[_0xb550('0x6')]('/api/fax/reports/transfer',require(_0xb550('0xd1')));_0x17f6ac['use'](_0xb550('0xd2'),require(_0xb550('0xd3')));_0x17f6ac['use'](_0xb550('0xd4'),require('./api/smsTransferReport'));_0x17f6ac['use'](_0xb550('0xd5'),require(_0xb550('0xd6')));_0x17f6ac[_0xb550('0x6')]('/api/voice/prefixes',require('./api/voicePrefix'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xd7'),require('./api/userProfile'));_0x17f6ac[_0xb550('0x6')]('/api/userProfile/sections',require(_0xb550('0xd8')));_0x17f6ac[_0xb550('0x6')]('/api/userProfile/resources',require(_0xb550('0xd9')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xda'),require(_0xb550('0xdb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xdc'),require(_0xb550('0xdd')));_0x17f6ac['use'](_0xb550('0xde'),require('./api/whatsappApplication'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xdf'),require(_0xb550('0xe0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe1'),require(_0xb550('0xe2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe3'),require(_0xb550('0xe4')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe5'),require(_0xb550('0xe6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe7'),require('./api/whatsappQueue'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xe8'),require(_0xb550('0xe9')));_0x17f6ac['use'](_0xb550('0xea'),require(_0xb550('0xeb')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xec'),require(_0xb550('0xed')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xee'),require(_0xb550('0xef')));_0x17f6ac[_0xb550('0x6')]('/api/auth/google',require('./api/authGoogle'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf0'),require('./api/authActiveDirectory'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf1'),require(_0xb550('0xf2')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf3'),require(_0xb550('0xf4')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf5'),require(_0xb550('0xf6')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf7'),require(_0xb550('0xf8')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xf9'),require(_0xb550('0xfa')));_0x17f6ac[_0xb550('0x6')]('/api/webbar',require('./api/webbar'));_0x17f6ac[_0xb550('0x6')](_0xb550('0xfb'),clientSideLogs);_0x17f6ac[_0xb550('0x6')]('/apidoc',express['static'](path['join'](config[_0xb550('0xfc')],'/apidoc')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xfd'),express['static'](path[_0xb550('0xfe')](config[_0xb550('0xfc')],'/www')));_0x17f6ac[_0xb550('0x6')](_0xb550('0xff'),express[_0xb550('0x100')](path[_0xb550('0xfe')](config[_0xb550('0xfc')],_0xb550('0xff'))));_0x17f6ac[_0xb550('0x6')](_0xb550('0x101'),express['static'](path[_0xb550('0xfe')](config['root'],_0xb550('0x102'),'3.0.0')));_0x17f6ac[_0xb550('0x6')](_0xb550('0x103'),express['static'](path[_0xb550('0xfe')](config[_0xb550('0xfc')],_0xb550('0x104'))));_0x17f6ac['route'](_0xb550('0x105'))[_0xb550('0x106')](errors[0x194]);_0x17f6ac['route']('/*')[_0xb550('0x106')](function(_0xec3a8f,_0x42b209){_0x42b209[_0xb550('0x107')](path[_0xb550('0x108')](_0x17f6ac['get']('appPath')+_0xb550('0x109')));});return _0x17f6ac;});};
\ No newline at end of file
index 9424205..2612d83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df7=['../api/voiceExtension/voiceExtension.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/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','../config/environment','listen','merge'];(function(_0x59ee70,_0x456a9e){var _0x21a29a=function(_0x1d83e2){while(--_0x1d83e2){_0x59ee70['push'](_0x59ee70['shift']());}};_0x21a29a(++_0x456a9e);}(_0x2df7,0x1f4));var _0x72df=function(_0x25d21b,_0x2cd597){_0x25d21b=_0x25d21b-0x0;var _0xf3d118=_0x2df7[_0x25d21b];return _0xf3d118;};'use strict';var jayson=require(_0x72df('0x0'));var _=require('lodash');var config=require(_0x72df('0x1'));exports[_0x72df('0x2')]=function(){return new Promise(function(_0x2517af,_0x21a130){var _0x6cebd5={};_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/user/user.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x4')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/voiceQueue/voiceQueue.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x5')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x6')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x7')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x8')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x9')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xa')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xb')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xc')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/mailAccount/mailAccount.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xd')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/mailInteraction/mailInteraction.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xe')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/mailApplication/mailApplication.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0xf')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x10')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x11')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x12')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x13')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x14')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x15')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x16')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x17')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x18')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x19')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x1a')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x1b')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x1c')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x1d')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x1e')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x1f')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x20')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x21')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x22')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x23')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x24')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x25')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x26')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x27')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/sound/sound.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x28')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x29')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2a')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2b')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2c')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2d')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2e')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x2f')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x30')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x31')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x32')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x33')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x34')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/squareOdbc/squareOdbc.rpc'));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x35')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x36')));_0x6cebd5=_['merge'](_0x6cebd5,require('../api/squareMessage/squareMessage.rpc'));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x37')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x38')));_0x6cebd5=_['merge'](_0x6cebd5,require(_0x72df('0x39')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x3a')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x3b')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x3c')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x3d')));_0x6cebd5=_[_0x72df('0x3')](_0x6cebd5,require(_0x72df('0x3e')));var _0x3bdab6=jayson[_0x72df('0x3f')](_0x6cebd5)[_0x72df('0x40')]();var _0xacf4c8=config[_0x72df('0x41')]['port']||config[_0x72df('0x42')]+0x1;var _0x67641d=config[_0x72df('0x41')]['ip']||'localhost';_0x3bdab6['on'](_0x72df('0x43'),function(_0xbb4bc8){return _0x21a130(_0xbb4bc8);});_0x3bdab6[_0x72df('0x2')](_0xacf4c8,_0x67641d,function(){console[_0x72df('0x44')](_0x72df('0x45'),_0x67641d,_0xacf4c8);require(_0x72df('0x46'))['default']();return _0x2517af(_0x72df('0x47')+_0x67641d+':'+_0xacf4c8);});});};
\ No newline at end of file
+var _0xc5dc=['../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','error','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/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/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc5dc,0x128));var _0xcc5d=function(_0x30dec8,_0x54f8cb){_0x30dec8=_0x30dec8-0x0;var _0x6c966c=_0xc5dc[_0x30dec8];return _0x6c966c;};'use strict';var jayson=require(_0xcc5d('0x0'));var _=require(_0xcc5d('0x1'));var config=require(_0xcc5d('0x2'));exports[_0xcc5d('0x3')]=function(){return new Promise(function(_0x363cad,_0x468c7f){var _0x2dcbbf={};_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x5')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x6')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x7')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x8')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x9')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xa')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xb')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xc')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/trunk/trunk.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0xd')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0xe')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailServerIn/mailServerIn.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/mailAccount/mailAccount.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0xf')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailInteraction/mailInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x10')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/mailApplication/mailApplication.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x11')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x12')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x13')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/faxInteraction/faxInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/faxMessage/faxMessage.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x14')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x15')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x16')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x17')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x18')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/smsQueue/smsQueue.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x19')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x1a')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/chatInteraction/chatInteraction.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1d')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1e')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x1f')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x20')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x21')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x22')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x23')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x24')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x25')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x26')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x27')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x28')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x29')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2a')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x2d')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x2e')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x2f')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x30')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x31')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x32')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x33')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x34')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x35')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x36')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require('../api/squareRecording/squareRecording.rpc'));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x37')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x38')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x39')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3a')));_0x2dcbbf=_['merge'](_0x2dcbbf,require(_0xcc5d('0x3b')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3c')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3d')));_0x2dcbbf=_[_0xcc5d('0x4')](_0x2dcbbf,require(_0xcc5d('0x3e')));_0x2dcbbf=_['merge'](_0x2dcbbf,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x4d92d9=jayson[_0xcc5d('0x3f')](_0x2dcbbf)[_0xcc5d('0x40')]();var _0x4250a9=config[_0xcc5d('0x41')][_0xcc5d('0x42')]||config[_0xcc5d('0x42')]+0x1;var _0x5dc72e=config['rpc']['ip']||'localhost';_0x4d92d9['on'](_0xcc5d('0x43'),function(_0xa8d8e){return _0x468c7f(_0xa8d8e);});_0x4d92d9[_0xcc5d('0x3')](_0x4250a9,_0x5dc72e,function(){console['log']('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x5dc72e,_0x4250a9);require(_0xcc5d('0x44'))['default']();return _0x363cad(_0xcc5d('0x45')+_0x5dc72e+':'+_0x4250a9);});});};
\ No newline at end of file
index d7a20b9..d66ef2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0599=['setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','AGI','wait','WAIT','label','EventEmitter','./reply','./error','call','setEncoding','setTimeout','headers','toLowerCase','hangup','emit','function','substring','replace','indexOf','length','match','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','write','inherits','prototype','sendRequest','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','exec','isArray','EXEC\x20%s\x20%s','join'];(function(_0x4bc428,_0xf56dd9){var _0x3ca37f=function(_0x39db20){while(--_0x39db20){_0x4bc428['push'](_0x4bc428['shift']());}};_0x3ca37f(++_0xf56dd9);}(_0x0599,0x120));var _0x9059=function(_0x446d79,_0x484d56){_0x446d79=_0x446d79-0x0;var _0x5726d0=_0x0599[_0x446d79];return _0x5726d0;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require('events')[_0x9059('0x0')];var AGIReply=require(_0x9059('0x1'));var AGIError=require(_0x9059('0x2'));function AGIChannel(_0x5710b6){var _0x2c6bfe=this,_0x1ed49b=new AGIReply(),_0x57b523=![],_0x5bc678={};EventEmitter[_0x9059('0x3')](_0x2c6bfe);_0x5710b6[_0x9059('0x4')]('utf8');_0x5710b6[_0x9059('0x5')](0x8*0x3c*0x3c*0x3e8);_0x1ed49b['setEncoding']('utf8');_0x1ed49b['on'](_0x9059('0x6'),function(_0x78c874){for(var _0x3322ef in _0x78c874){_0x2c6bfe[_0x3322ef]=_0x78c874[_0x3322ef];}_0x2c6bfe['emit']('ready');});_0x1ed49b['on']('line',function(_0x2f8814){if(_0x2f8814[_0x9059('0x7')]()==_0x9059('0x8')){_0x2c6bfe[_0x9059('0x9')](_0x9059('0x8'));return;}if(_0x2f8814['substring'](0x0,0xb)=='520-Invalid'){_0x57b523=!![];}if(_0x57b523){_0x5bc678['rx']+=_0x2f8814+'\x0a';if(_0x2f8814['search']('520\x20End\x20of\x20proper')!=-0x1){_0x57b523=![];}}else{_0x5bc678['rx']=_0x2f8814;}if(_0x57b523){return;}if(typeof _0x5bc678['cb']==_0x9059('0xa')){var _0x1abcd7=_0x5bc678['rx'][_0x9059('0xb')](0x0,0x3),_0x7056d6=null,_0x5dacbb=null;_0x1abcd7=parseInt(_0x1abcd7);if(isNaN(_0x1abcd7)){_0x5bc678['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x1abcd7!=0xc8){_0x5bc678['cb'](null,{'code':_0x1abcd7,'result':-0x1,'extra':'KO'});return;}_0x7056d6=_0x5bc678['rx'][_0x9059('0xb')](0x4)[_0x9059('0xc')]('result=','');if(_0x7056d6[_0x9059('0xd')]('\x20')!=-0x1){_0x7056d6=_0x7056d6['substr'](0x0,_0x7056d6[_0x9059('0xd')]('\x20'));}if(_['startsWith'](_0x7056d6,'-1')){_0x7056d6=parseInt(_0x7056d6);}_0x5dacbb=_0x5bc678['rx']['split']('\x20');if(_0x5dacbb['length']==0x3){_0x5dacbb=_0x5dacbb[0x2][_0x9059('0xb')](0x1,_0x5dacbb[0x2][_0x9059('0xe')]-0x1);}else if(_0x5dacbb[_0x9059('0xe')]>0x3){var _0x8cef72=/\((.+)\)/;var _0x2acc8e=_0x5bc678['rx'][_0x9059('0xf')](_0x8cef72);if(_0x2acc8e){_0x5dacbb=_0x2acc8e[0x1];}else{_0x5dacbb=null;}}else{_0x5dacbb=null;}_0x5bc678['cb'](null,{'code':_0x1abcd7,'result':_0x7056d6,'extra':_0x5dacbb});}});_0x5710b6['on'](_0x9059('0x10'),function(_0x5e5f3f){_0x2c6bfe['emit'](_0x9059('0x10'),new AGIError('E_AGI_SOCKET_ERROR',_0x5e5f3f[_0x9059('0x11')]));});_0x5710b6['on'](_0x9059('0x12'),function(){_0x2c6bfe[_0x9059('0x9')](_0x9059('0x12'),new AGIError(_0x9059('0x13')));});_0x5710b6['on']('timeout',function(){_0x2c6bfe[_0x9059('0x9')](_0x9059('0x14'),new AGIError(_0x9059('0x15')));_0x5710b6[_0x9059('0x16')]();});_0x5710b6['pipe'](_0x1ed49b);this[_0x9059('0x17')]=function(_0x286ac4,_0x582779){var _0x286ac4=_0x286ac4||'',_0x582779=typeof _0x582779=='function'?_0x582779:new Function();_0x5bc678={'tx':_0x286ac4,'rx':'','cb':_0x582779};_0x5710b6[_0x9059('0x18')](_0x286ac4+'\x0a');},this[_0x9059('0x12')]=function(){_0x5710b6[_0x9059('0x16')]();};}util[_0x9059('0x19')](AGIChannel,EventEmitter);AGIChannel[_0x9059('0x1a')][_0x9059('0x1b')]=function(_0x44e101){return this[_0x9059('0x17')]['sync'](this,_0x44e101);};AGIChannel[_0x9059('0x1a')]['answer']=function(){return this[_0x9059('0x1b')]('ANSWER');};AGIChannel[_0x9059('0x1a')]['getData']=function(_0x4e893b,_0x3f962c,_0x215ece){_0x4e893b=_0x4e893b===undefined?_0x9059('0x1c'):_0x4e893b;_0x3f962c=_0x3f962c===undefined?'5':_0x3f962c;_0x215ece=_0x215ece===undefined?'1':_0x215ece;return this[_0x9059('0x1b')](util['format'](_0x9059('0x1d'),_0x4e893b,_0x3f962c*0x3e8,_0x215ece));};AGIChannel[_0x9059('0x1a')][_0x9059('0x1e')]=function(_0x4051b1){_0x4051b1=_0x4051b1||_0x9059('0x1f');return this['sendRequest'](util[_0x9059('0x20')]('VERBOSE\x20\x22%s\x22',_0x4051b1));};AGIChannel[_0x9059('0x1a')][_0x9059('0x21')]=function(_0x298cd4,_0x22deea){if(_[_0x9059('0x22')](_0x22deea)){return this[_0x9059('0x1b')](util[_0x9059('0x20')](_0x9059('0x23'),_0x298cd4,_0x22deea[_0x9059('0x24')](',')));}return this[_0x9059('0x1b')](util[_0x9059('0x20')](_0x9059('0x23'),_0x298cd4,_0x22deea));};AGIChannel[_0x9059('0x1a')][_0x9059('0x25')]=function(_0x191422){return this[_0x9059('0x1b')](util['format'](_0x9059('0x26'),_0x191422));};AGIChannel[_0x9059('0x1a')][_0x9059('0x27')]=function(_0x23c7bb){return this[_0x9059('0x1b')](util['format']('SET\x20EXTENSION\x20%s',_0x23c7bb));};AGIChannel['prototype'][_0x9059('0x28')]=function(_0x179246){return this['sendRequest'](util[_0x9059('0x20')](_0x9059('0x29'),_0x179246));};AGIChannel[_0x9059('0x1a')]['hangup']=function(){return this['sendRequest']('HANGUP');};AGIChannel[_0x9059('0x1a')]['setVariable']=function(_0x46910a,_0x4510bd){var _0x2e484b=_[_0x9059('0x2a')](_0x4510bd)||_[_0x9059('0x2b')](_0x4510bd)?_0x4510bd[_0x9059('0x2c')]():_0x4510bd;return this['sendRequest'](util['format'](_0x9059('0x2d'),_0x46910a,_0x2e484b?_0x2e484b[_0x9059('0x2c')]()[_0x9059('0xc')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x9059('0x1a')][_0x9059('0x2e')]=function(_0x26355b,_0x5bced4){return this[_0x9059('0x1b')](util[_0x9059('0x20')](_0x9059('0x2f'),_0x26355b,_0x5bced4));};AGIChannel['prototype']['sayDigits']=function(_0x30a508,_0x172610){return this['sendRequest'](util['format'](_0x9059('0x30'),_0x30a508,_0x172610));};AGIChannel[_0x9059('0x1a')][_0x9059('0x31')]=function(_0x5b555b,_0x2f354a){return this[_0x9059('0x1b')](util['format'](_0x9059('0x32'),_0x5b555b,_0x2f354a));};AGIChannel[_0x9059('0x1a')][_0x9059('0x33')]=function(_0x200cae,_0x2bdf27,_0x5fa0c1){_0x2bdf27=_0x2bdf27||this[_0x9059('0x34')];_0x5fa0c1=_0x5fa0c1||0x1;this['setContext'](_0x200cae);this[_0x9059('0x27')](_0x2bdf27);this['setPriority'](_0x5fa0c1);return this[_0x9059('0x1e')](util[_0x9059('0x20')](_0x9059('0x35'),_0x200cae,_0x2bdf27,_0x5fa0c1));};AGIChannel[_0x9059('0x1a')]['getVariable']=function(_0x2e990b){return this['sendRequest'](util['format'](_0x9059('0x36'),_0x2e990b));};AGIChannel[_0x9059('0x1a')][_0x9059('0x37')]=function(_0x34c916,_0x2c4e4c,_0xf1ccd5,_0x12b3b6,_0x269534,_0x24fe75){_0x2c4e4c=_0x2c4e4c||_0x9059('0x38');_0xf1ccd5=_0xf1ccd5||'';_0x12b3b6=_0x12b3b6===undefined?-0x1:_0x12b3b6==='-1'?-0x1:_0x12b3b6*0x3e8;_0x269534=_0x269534===undefined?'':'s='+_0x269534;_0x24fe75=_0x24fe75?_0x9059('0x39'):'';return this[_0x9059('0x1b')](util[_0x9059('0x20')](_0x9059('0x3a'),_0x34c916,_0x2c4e4c,_0xf1ccd5,_0x12b3b6,_0x24fe75,_0x269534));};AGIChannel[_0x9059('0x1a')][_0x9059('0x3b')]=function(_0x1c1c75,_0x159856){_0x159856=_0x159856||'';return this[_0x9059('0x1b')](util[_0x9059('0x20')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x1c1c75,_0x159856));};AGIChannel[_0x9059('0x1a')][_0x9059('0x3c')]=function(_0x175054){return this[_0x9059('0x21')](_0x9059('0x3d'),_0x175054);};AGIChannel[_0x9059('0x1a')][_0x9059('0x3e')]=function(_0x47b9d3){return this[_0x9059('0x21')](_0x9059('0x3f'),_0x47b9d3);};AGIChannel['prototype'][_0x9059('0x10')]=function(_0x49a078,_0x34623c){this['noop'](util[_0x9059('0x20')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x49a078['id'],_0x49a078[_0x9059('0x40')],_0x34623c));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xbd4a=['exec','isArray','EXEC\x20%s\x20%s','setContext','setExtension','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','BEEP','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','call','utf8','setTimeout','setEncoding','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','length','match','error','E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','VERBOSE\x20\x22%s\x22'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0xbd4a,0xbf));var _0xabd4=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xbd4a[_0x4565bf];return _0x5610ba;};'use strict';var util=require(_0xabd4('0x0'));var _=require(_0xabd4('0x1'));var EventEmitter=require('events')[_0xabd4('0x2')];var AGIReply=require(_0xabd4('0x3'));var AGIError=require(_0xabd4('0x4'));function AGIChannel(_0x378a03){var _0x10289f=this,_0x5624b0=new AGIReply(),_0xb4b882=![],_0x2096e1={};EventEmitter[_0xabd4('0x5')](_0x10289f);_0x378a03['setEncoding'](_0xabd4('0x6'));_0x378a03[_0xabd4('0x7')](0x8*0x3c*0x3c*0x3e8);_0x5624b0[_0xabd4('0x8')](_0xabd4('0x6'));_0x5624b0['on'](_0xabd4('0x9'),function(_0x2ce16f){for(var _0x26bb37 in _0x2ce16f){_0x10289f[_0x26bb37]=_0x2ce16f[_0x26bb37];}_0x10289f[_0xabd4('0xa')](_0xabd4('0xb'));});_0x5624b0['on'](_0xabd4('0xc'),function(_0x60a203){if(_0x60a203[_0xabd4('0xd')]()==_0xabd4('0xe')){_0x10289f[_0xabd4('0xa')](_0xabd4('0xe'));return;}if(_0x60a203[_0xabd4('0xf')](0x0,0xb)==_0xabd4('0x10')){_0xb4b882=!![];}if(_0xb4b882){_0x2096e1['rx']+=_0x60a203+'\x0a';if(_0x60a203['search'](_0xabd4('0x11'))!=-0x1){_0xb4b882=![];}}else{_0x2096e1['rx']=_0x60a203;}if(_0xb4b882){return;}if(typeof _0x2096e1['cb']==_0xabd4('0x12')){var _0x3dd549=_0x2096e1['rx'][_0xabd4('0xf')](0x0,0x3),_0x47af64=null,_0x54937b=null;_0x3dd549=parseInt(_0x3dd549);if(isNaN(_0x3dd549)){_0x2096e1['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xabd4('0x13')});return;}if(_0x3dd549!=0xc8){_0x2096e1['cb'](null,{'code':_0x3dd549,'result':-0x1,'extra':'KO'});return;}_0x47af64=_0x2096e1['rx'][_0xabd4('0xf')](0x4)[_0xabd4('0x14')](_0xabd4('0x15'),'');if(_0x47af64['indexOf']('\x20')!=-0x1){_0x47af64=_0x47af64[_0xabd4('0x16')](0x0,_0x47af64[_0xabd4('0x17')]('\x20'));}if(_[_0xabd4('0x18')](_0x47af64,'-1')){_0x47af64=parseInt(_0x47af64);}_0x54937b=_0x2096e1['rx']['split']('\x20');if(_0x54937b[_0xabd4('0x19')]==0x3){_0x54937b=_0x54937b[0x2][_0xabd4('0xf')](0x1,_0x54937b[0x2][_0xabd4('0x19')]-0x1);}else if(_0x54937b[_0xabd4('0x19')]>0x3){var _0x293ee8=/\((.+)\)/;var _0x1e7041=_0x2096e1['rx'][_0xabd4('0x1a')](_0x293ee8);if(_0x1e7041){_0x54937b=_0x1e7041[0x1];}else{_0x54937b=null;}}else{_0x54937b=null;}_0x2096e1['cb'](null,{'code':_0x3dd549,'result':_0x47af64,'extra':_0x54937b});}});_0x378a03['on'](_0xabd4('0x1b'),function(_0x436d81){_0x10289f[_0xabd4('0xa')]('error',new AGIError(_0xabd4('0x1c'),_0x436d81['code']));});_0x378a03['on'](_0xabd4('0x1d'),function(){_0x10289f[_0xabd4('0xa')](_0xabd4('0x1d'),new AGIError(_0xabd4('0x1e')));});_0x378a03['on']('timeout',function(){_0x10289f['emit'](_0xabd4('0x1f'),new AGIError(_0xabd4('0x20')));_0x378a03[_0xabd4('0x21')]();});_0x378a03[_0xabd4('0x22')](_0x5624b0);this[_0xabd4('0x23')]=function(_0x31b506,_0x38a5c0){var _0x31b506=_0x31b506||'',_0x38a5c0=typeof _0x38a5c0==_0xabd4('0x12')?_0x38a5c0:new Function();_0x2096e1={'tx':_0x31b506,'rx':'','cb':_0x38a5c0};_0x378a03['write'](_0x31b506+'\x0a');},this['close']=function(){_0x378a03[_0xabd4('0x21')]();};}util[_0xabd4('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xabd4('0x25')][_0xabd4('0x26')]=function(_0x5f08cb){return this['command'][_0xabd4('0x27')](this,_0x5f08cb);};AGIChannel[_0xabd4('0x25')][_0xabd4('0x28')]=function(){return this[_0xabd4('0x26')](_0xabd4('0x29'));};AGIChannel['prototype'][_0xabd4('0x2a')]=function(_0x4280c8,_0x13242f,_0x38fbd9){_0x4280c8=_0x4280c8===undefined?'beep':_0x4280c8;_0x13242f=_0x13242f===undefined?'5':_0x13242f;_0x38fbd9=_0x38fbd9===undefined?'1':_0x38fbd9;return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x2c'),_0x4280c8,_0x13242f*0x3e8,_0x38fbd9));};AGIChannel[_0xabd4('0x25')]['noop']=function(_0x4e1200){_0x4e1200=_0x4e1200||'NO\x20MESSAGE';return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x2d'),_0x4e1200));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x2e')]=function(_0x270919,_0x3338eb){if(_[_0xabd4('0x2f')](_0x3338eb)){return this[_0xabd4('0x26')](util['format'](_0xabd4('0x30'),_0x270919,_0x3338eb['join'](',')));}return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x30'),_0x270919,_0x3338eb));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x31')]=function(_0x126623){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')]('SET\x20CONTEXT\x20%s',_0x126623));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x32')]=function(_0x1f9d91){return this[_0xabd4('0x26')](util['format']('SET\x20EXTENSION\x20%s',_0x1f9d91));};AGIChannel[_0xabd4('0x25')]['setPriority']=function(_0x1b456d){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x33'),_0x1b456d));};AGIChannel[_0xabd4('0x25')][_0xabd4('0xe')]=function(){return this[_0xabd4('0x26')](_0xabd4('0x34'));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x35')]=function(_0x57674b,_0x579b93){var _0x24e469=_[_0xabd4('0x36')](_0x579b93)||_[_0xabd4('0x37')](_0x579b93)?_0x579b93['toString']():_0x579b93;return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x38'),_0x57674b,_0x24e469?_0x24e469[_0xabd4('0x39')]()[_0xabd4('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xabd4('0x3a')]=function(_0x510b66,_0x463862){return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x3b'),_0x510b66,_0x463862));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x3c')]=function(_0x574e62,_0x1d8a7b){return this['sendRequest'](util[_0xabd4('0x2b')](_0xabd4('0x3d'),_0x574e62,_0x1d8a7b));};AGIChannel['prototype'][_0xabd4('0x3e')]=function(_0x4d49ce,_0x113995){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')](_0xabd4('0x3f'),_0x4d49ce,_0x113995));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x40')]=function(_0x28ccfe,_0x3cf2f1,_0x2dde39){_0x3cf2f1=_0x3cf2f1||this[_0xabd4('0x41')];_0x2dde39=_0x2dde39||0x1;this[_0xabd4('0x31')](_0x28ccfe);this[_0xabd4('0x32')](_0x3cf2f1);this['setPriority'](_0x2dde39);return this[_0xabd4('0x42')](util[_0xabd4('0x2b')](_0xabd4('0x43'),_0x28ccfe,_0x3cf2f1,_0x2dde39));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x44')]=function(_0x14177c){return this[_0xabd4('0x26')](util[_0xabd4('0x2b')]('GET\x20VARIABLE\x20\x22%s\x22',_0x14177c));};AGIChannel[_0xabd4('0x25')][_0xabd4('0x45')]=function(_0x3f7511,_0x1db495,_0x3f7bac,_0x4c94ea,_0xe08349,_0x3c42e0){_0x1db495=_0x1db495||_0xabd4('0x46');_0x3f7bac=_0x3f7bac||'';_0x4c94ea=_0x4c94ea===undefined?-0x1:_0x4c94ea==='-1'?-0x1:_0x4c94ea*0x3e8;_0xe08349=_0xe08349===undefined?'':'s='+_0xe08349;_0x3c42e0=_0x3c42e0?_0xabd4('0x47'):'';return this['sendRequest'](util[_0xabd4('0x2b')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x3f7511,_0x1db495,_0x3f7bac,_0x4c94ea,_0x3c42e0,_0xe08349));};AGIChannel['prototype']['streamFile']=function(_0xf06d0b,_0xf56936){_0xf56936=_0xf56936||'';return this[_0xabd4('0x26')](util['format'](_0xabd4('0x48'),_0xf06d0b,_0xf56936));};AGIChannel['prototype'][_0xabd4('0x49')]=function(_0x35792d){return this[_0xabd4('0x2e')](_0xabd4('0x4a'),_0x35792d);};AGIChannel[_0xabd4('0x25')][_0xabd4('0x4b')]=function(_0x30cb23){return this['exec']('WAIT',_0x30cb23);};AGIChannel['prototype'][_0xabd4('0x1b')]=function(_0x40e6b0,_0x3c989e){this[_0xabd4('0x42')](util['format'](_0xabd4('0x4c'),_0x40e6b0['id'],_0x40e6b0[_0xabd4('0x4d')],_0x3c989e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xabd4('0x4e')]=AGIChannel;
\ No newline at end of file
index 1c33feb..f41ecca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8d=['Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','exports','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.'];(function(_0x450bf9,_0x1895de){var _0x268350=function(_0xebafa7){while(--_0xebafa7){_0x450bf9['push'](_0x450bf9['shift']());}};_0x268350(++_0x1895de);}(_0x9c8d,0x1d3));var _0xd9c8=function(_0x17fcc8,_0x359700){_0x17fcc8=_0x17fcc8-0x0;var _0x39ee33=_0x9c8d[_0x17fcc8];return _0x39ee33;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xd9c8('0x0'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xd9c8('0x1'),'E_AGI_SERVER_CLOSE':_0xd9c8('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xd9c8('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xd9c8('0x4'),'E_AGI_SOCKET_CLOSE':_0xd9c8('0x5'),'E_AGI_SOCKET_TIMEOUT':_0xd9c8('0x6'),'E_AGI_COMMAND_EMPTY':_0xd9c8('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xd9c8('0x8'),'E_AGI_IVR_ENTRY':_0xd9c8('0x9')};function AGIError(_0x5486eb){var _0x5486eb=_0x5486eb||null,_0x5016d8=_0x5016d8||[],_0x37ce55=0x1,_0x15b370='';if(!error[_0x5486eb]){_0x5486eb=_0xd9c8('0xa');}_0x5016d8[_0xd9c8('0xb')](error[_0x5486eb]);while(arguments[_0x37ce55]){_0x5016d8[_0xd9c8('0xb')](arguments[_0x37ce55]);_0x37ce55++;}_0x15b370=util[_0xd9c8('0xc')]['apply'](util,_0x5016d8);this['message']=_0x15b370;this['name']=_0x5486eb;}module[_0xd9c8('0xd')]=AGIError;
\ No newline at end of file
+var _0xc70d=['Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','util','Undefined\x20error.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc70d,0x119));var _0xdc70=function(_0xda8b61,_0x3ed3a4){_0xda8b61=_0xda8b61-0x0;var _0x113d5d=_0xc70d[_0xda8b61];return _0x113d5d;};'use strict';var util=require(_0xdc70('0x0'));var error={'E_AGI_UNDEFINED':_0xdc70('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xdc70('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xdc70('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xdc70('0x4'),'E_AGI_SOCKET_CLOSE':_0xdc70('0x5'),'E_AGI_SOCKET_TIMEOUT':_0xdc70('0x6'),'E_AGI_COMMAND_EMPTY':_0xdc70('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xdc70('0x8'),'E_AGI_IVR_ENTRY':_0xdc70('0x9')};function AGIError(_0x3d93b7){var _0x3d93b7=_0x3d93b7||null,_0x348475=_0x348475||[],_0x4293a6=0x1,_0xe497f4='';if(!error[_0x3d93b7]){_0x3d93b7=_0xdc70('0xa');}_0x348475[_0xdc70('0xb')](error[_0x3d93b7]);while(arguments[_0x4293a6]){_0x348475[_0xdc70('0xb')](arguments[_0x4293a6]);_0x4293a6++;}_0xe497f4=util[_0xdc70('0xc')][_0xdc70('0xd')](util,_0x348475);this[_0xdc70('0xe')]=_0xe497f4;this['name']=_0x3d93b7;}module['exports']=AGIError;
\ No newline at end of file
index b17adab..0346f51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ec3=['E_AGI_SERVER_ERROR','error','exports','events','EventEmitter','./error','../../config/environment','redis','defaults','localhost','subscribe','agi'];(function(_0x30b6af,_0x3df5cc){var _0x3b05b6=function(_0x14ac81){while(--_0x14ac81){_0x30b6af['push'](_0x30b6af['shift']());}};_0x3b05b6(++_0x3df5cc);}(_0x5ec3,0xdb));var _0x35ec=function(_0x6e997,_0x2b1d49){_0x6e997=_0x6e997-0x0;var _0x16432d=_0x5ec3[_0x6e997];return _0x16432d;};'use strict';var _=require('lodash');var EventEmitter=require(_0x35ec('0x0'))[_0x35ec('0x1')];var Redis=require('ioredis');var AGIError=require(_0x35ec('0x2'));var config=require(_0x35ec('0x3'));config[_0x35ec('0x4')]=_[_0x35ec('0x5')](config['redis'],{'host':_0x35ec('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x35ec('0x4')]);sub[_0x35ec('0x7')](_0x35ec('0x8'),function(_0xd2adb){if(_0xd2adb)return eventEmitter['emit']('error',new AGIError(_0x35ec('0x9'),_0xd2adb));});sub['on']('message',function(_0x14ee07,_0x3d5756){if(_0x14ee07!==_0x35ec('0x8'))return;try{var _0x550894=JSON['parse'](_0x3d5756);eventEmitter['emit']('projectUpdate',_0x550894);}catch(_0x5bcead){eventEmitter['emit'](_0x35ec('0xa'),new AGIError(_0x35ec('0x9'),_0x5bcead));}});module[_0x35ec('0xb')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x2d61=['defaults','localhost','subscribe','error','E_AGI_SERVER_ERROR','agi','parse','emit','exports','lodash','EventEmitter','./error','redis'];(function(_0xc13eb3,_0x233d02){var _0x4e052e=function(_0x83ea7b){while(--_0x83ea7b){_0xc13eb3['push'](_0xc13eb3['shift']());}};_0x4e052e(++_0x233d02);}(_0x2d61,0x1b6));var _0x12d6=function(_0x3e769e,_0x3c22d0){_0x3e769e=_0x3e769e-0x0;var _0x4afba7=_0x2d61[_0x3e769e];return _0x4afba7;};'use strict';var _=require(_0x12d6('0x0'));var EventEmitter=require('events')[_0x12d6('0x1')];var Redis=require('ioredis');var AGIError=require(_0x12d6('0x2'));var config=require('../../config/environment');config[_0x12d6('0x3')]=_[_0x12d6('0x4')](config[_0x12d6('0x3')],{'host':_0x12d6('0x5'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x12d6('0x6')]('agi',function(_0x404e52){if(_0x404e52)return eventEmitter['emit'](_0x12d6('0x7'),new AGIError(_0x12d6('0x8'),_0x404e52));});sub['on']('message',function(_0x339eac,_0x230764){if(_0x339eac!==_0x12d6('0x9'))return;try{var _0x4003da=JSON[_0x12d6('0xa')](_0x230764);eventEmitter['emit']('projectUpdate',_0x4003da);}catch(_0x5162fc){eventEmitter[_0x12d6('0xb')](_0x12d6('0x7'),new AGIError(_0x12d6('0x8'),_0x5162fc));}});module[_0x12d6('0xc')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index f4b5aa3..9cff0ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ab=['no\x20edge/s\x20available','condition','split','agicommand','target','default','invalid','max\x20retry\x20reach','exports','lodash','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','addVertex','prototype','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length'];(function(_0x1b8967,_0x9ca437){var _0x38a994=function(_0x11e441){while(--_0x11e441){_0x1b8967['push'](_0x1b8967['shift']());}};_0x38a994(++_0x9ca437);}(_0x09ab,0x182));var _0xb09a=function(_0x33747e,_0x219a50){_0x33747e=_0x33747e-0x0;var _0x4a61c1=_0x09ab[_0x33747e];return _0x4a61c1;};'use strict';var _=require(_0xb09a('0x0'));var logger=require('../../../config/logger')(_0xb09a('0x1'));var verticesWithRetry=[_0xb09a('0x2'),_0xb09a('0x3'),_0xb09a('0x4')];var Graph=function(){this[_0xb09a('0x5')]={};this[_0xb09a('0x6')]={};this[_0xb09a('0x7')]=0x0;};Graph['prototype'][_0xb09a('0x8')]=function(_0x34bab5){this[_0xb09a('0x5')][_0x34bab5['id']]=_0x34bab5;this[_0xb09a('0x6')][_0x34bab5['id']]=[];};Graph[_0xb09a('0x9')][_0xb09a('0xa')]=function(_0xf1cb4e,_0x4f42f8,_0xd100eb){this[_0xb09a('0x6')][_0xf1cb4e][_0xb09a('0xb')]({'target':_0x4f42f8,'condition':_0xd100eb});this[_0xb09a('0x7')]+=0x1;};Graph[_0xb09a('0x9')][_0xb09a('0xc')]=function(){return _[_0xb09a('0xc')](this[_0xb09a('0x5')]);};Graph[_0xb09a('0x9')][_0xb09a('0xd')]=function(){return this[_0xb09a('0x7')];};Graph[_0xb09a('0x9')][_0xb09a('0xe')]=function(_0x584701){return this['vertices'][_0x584701];};Graph[_0xb09a('0x9')][_0xb09a('0xf')]=function(_0xf9cce1,_0x2fdcde){if(!this['vertices'][_0xf9cce1]){return logger[_0xb09a('0x10')](_0xb09a('0x11'));}var _0x5f0fdc=_0x2fdcde(this[_0xb09a('0x5')][_0xf9cce1]);if(!_0x5f0fdc){return logger[_0xb09a('0x10')](_0xb09a('0x12'));}if(this[_0xb09a('0x6')][_0xf9cce1][_0xb09a('0x13')]===0x0){return logger['info'](_0xb09a('0x14'));}for(var _0x441e61=0x0,_0xd12139=[],_0xd19a2a=![];_0x441e61<this[_0xb09a('0x6')][_0xf9cce1][_0xb09a('0x13')];_0x441e61+=0x1){if(this[_0xb09a('0x6')][_0xf9cce1][_0x441e61][_0xb09a('0x15')]){_0xd12139=this[_0xb09a('0x6')][_0xf9cce1][_0x441e61]['condition'][_0xb09a('0x16')](',');for(var _0x37b544=0x0;_0x37b544<_0xd12139[_0xb09a('0x13')];_0x37b544+=0x1){if(this[_0xb09a('0x5')][_0xf9cce1][_0xb09a('0x17')]==='vswitch'&&_0xd12139[_0x37b544]==='-'){_0xd19a2a=this[_0xb09a('0x6')][_0xf9cce1][_0x441e61][_0xb09a('0x18')];logger[_0xb09a('0x10')](_0xb09a('0x19'),_0xd12139[_0x37b544],this['edges'][_0xf9cce1][_0x441e61][_0xb09a('0x18')]);}else if(this[_0xb09a('0x5')][_0xf9cce1][_0xb09a('0x17')]===_0xb09a('0x2')&&_0xd12139[_0x37b544]==='i'){_0xd19a2a=this[_0xb09a('0x6')][_0xf9cce1][_0x441e61][_0xb09a('0x18')];logger['info'](_0xb09a('0x1a'),_0xd12139[_0x37b544],this['edges'][_0xf9cce1][_0x441e61][_0xb09a('0x18')]);}if(_0xd12139[_0x37b544]===_0x5f0fdc){return this[_0xb09a('0xf')](this[_0xb09a('0x6')][_0xf9cce1][_0x441e61][_0xb09a('0x18')],_0x2fdcde);}}}else{return this[_0xb09a('0xf')](this['edges'][_0xf9cce1][_0x441e61]['target'],_0x2fdcde);}}if(_0xd12139[_0xb09a('0x13')]){if(this[_0xb09a('0x5')][_0xf9cce1][_0xb09a('0x17')]==='vswitch'){if(_0xd19a2a){return this[_0xb09a('0xf')](_0xd19a2a,_0x2fdcde);}return logger[_0xb09a('0x10')]('default\x20on\x20switch\x20not\x20found');}else if(_['includes'](verticesWithRetry,this['vertices'][_0xf9cce1][_0xb09a('0x17')])){if(_0x5f0fdc==='-'){return logger[_0xb09a('0x10')](_0xb09a('0x1b'));}if(_0xd19a2a&&_0x5f0fdc!=='t'){return this[_0xb09a('0xf')](_0xd19a2a,_0x2fdcde);}return this[_0xb09a('0xf')](_0xf9cce1,_0x2fdcde);}return logger['info']('condition\x20not\x20found');}};module[_0xb09a('0x1c')]=Graph;
\ No newline at end of file
+var _0xb23f=['vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','getdigits','getsecretdigits','vertices','edges','prototype','addVertex','addEdge','push','numberOfEdges','size','getVertex','info','length','no\x20edge/s\x20available','condition','split','agicommand','target','menu','traverseBFS'];(function(_0x1e3671,_0x9ae4fc){var _0x48d5f5=function(_0xfab713){while(--_0xfab713){_0x1e3671['push'](_0x1e3671['shift']());}};_0x48d5f5(++_0x9ae4fc);}(_0xb23f,0xad));var _0xfb23=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb23f[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xfb23('0x0'));var logger=require(_0xfb23('0x1'))(_0xfb23('0x2'));var verticesWithRetry=['menu',_0xfb23('0x3'),_0xfb23('0x4')];var Graph=function(){this[_0xfb23('0x5')]={};this[_0xfb23('0x6')]={};this['numberOfEdges']=0x0;};Graph[_0xfb23('0x7')][_0xfb23('0x8')]=function(_0x49db7e){this['vertices'][_0x49db7e['id']]=_0x49db7e;this[_0xfb23('0x6')][_0x49db7e['id']]=[];};Graph['prototype'][_0xfb23('0x9')]=function(_0x4f570f,_0xf23b8e,_0x54928e){this[_0xfb23('0x6')][_0x4f570f][_0xfb23('0xa')]({'target':_0xf23b8e,'condition':_0x54928e});this[_0xfb23('0xb')]+=0x1;};Graph[_0xfb23('0x7')][_0xfb23('0xc')]=function(){return _['size'](this[_0xfb23('0x5')]);};Graph['prototype']['relations']=function(){return this['numberOfEdges'];};Graph[_0xfb23('0x7')][_0xfb23('0xd')]=function(_0x3b9716){return this[_0xfb23('0x5')][_0x3b9716];};Graph[_0xfb23('0x7')]['traverseBFS']=function(_0x45d9d0,_0xb19979){if(!this[_0xfb23('0x5')][_0x45d9d0]){return logger[_0xfb23('0xe')]('no\x20vertex\x20found');}var _0x490423=_0xb19979(this['vertices'][_0x45d9d0]);if(!_0x490423){return logger['info']('stop\x20traverse');}if(this[_0xfb23('0x6')][_0x45d9d0][_0xfb23('0xf')]===0x0){return logger[_0xfb23('0xe')](_0xfb23('0x10'));}for(var _0x1cd3c6=0x0,_0x3de47e=[],_0x28b893=![];_0x1cd3c6<this[_0xfb23('0x6')][_0x45d9d0][_0xfb23('0xf')];_0x1cd3c6+=0x1){if(this['edges'][_0x45d9d0][_0x1cd3c6]['condition']){_0x3de47e=this['edges'][_0x45d9d0][_0x1cd3c6][_0xfb23('0x11')][_0xfb23('0x12')](',');for(var _0xe2d9f3=0x0;_0xe2d9f3<_0x3de47e[_0xfb23('0xf')];_0xe2d9f3+=0x1){if(this[_0xfb23('0x5')][_0x45d9d0][_0xfb23('0x13')]==='vswitch'&&_0x3de47e[_0xe2d9f3]==='-'){_0x28b893=this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6]['target'];logger['info']('default',_0x3de47e[_0xe2d9f3],this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')]);}else if(this[_0xfb23('0x5')][_0x45d9d0][_0xfb23('0x13')]===_0xfb23('0x15')&&_0x3de47e[_0xe2d9f3]==='i'){_0x28b893=this['edges'][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')];logger[_0xfb23('0xe')]('invalid',_0x3de47e[_0xe2d9f3],this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')]);}if(_0x3de47e[_0xe2d9f3]===_0x490423){return this[_0xfb23('0x16')](this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')],_0xb19979);}}}else{return this[_0xfb23('0x16')](this[_0xfb23('0x6')][_0x45d9d0][_0x1cd3c6][_0xfb23('0x14')],_0xb19979);}}if(_0x3de47e[_0xfb23('0xf')]){if(this['vertices'][_0x45d9d0]['agicommand']===_0xfb23('0x17')){if(_0x28b893){return this[_0xfb23('0x16')](_0x28b893,_0xb19979);}return logger[_0xfb23('0xe')](_0xfb23('0x18'));}else if(_[_0xfb23('0x19')](verticesWithRetry,this[_0xfb23('0x5')][_0x45d9d0]['agicommand'])){if(_0x490423==='-'){return logger[_0xfb23('0xe')](_0xfb23('0x1a'));}if(_0x28b893&&_0x490423!=='t'){return this['traverseBFS'](_0x28b893,_0xb19979);}return this[_0xfb23('0x16')](_0x45d9d0,_0xb19979);}return logger[_0xfb23('0xe')](_0xfb23('0x1b'));}};module['exports']=Graph;
\ No newline at end of file
index 3f26b80..034583d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9045=['arg_1','calleridname','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','evtHangup','createSquareReport','then','hasOwnProperty','indexOf','agi_','substring','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','find','handleNotFound','production','handleUnpublished','initialize','voice','callysquare','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','catch','[LICENSE]','finally','./server','listening','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./project','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','error','stack','deleted','splice','push','log','info','name','message','format'];(function(_0x5ea797,_0x2d39dd){var _0x500783=function(_0x4923f2){while(--_0x4923f2){_0x5ea797['push'](_0x5ea797['shift']());}};_0x500783(++_0x2d39dd);}(_0x9045,0xfc));var _0x5904=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9045[_0x618414];return _0x21c19a;};'use strict';var _=require('lodash');var syncho=require(_0x5904('0x0'));var util=require(_0x5904('0x1'));var config=require(_0x5904('0x2'));var logger=require(_0x5904('0x3'))(_0x5904('0x4'));var utilLicense=require(_0x5904('0x5'));var rpc=require(_0x5904('0x6'));var Project=require(_0x5904('0x7'));var AGIEmitter=require('./events')[_0x5904('0x8')];var projects=[];config[_0x5904('0x4')]=_[_0x5904('0x9')](config[_0x5904('0x4')],{'ip':_0x5904('0xa'),'port':0x11dd});AGIEmitter['on'](_0x5904('0xb'),projectUpdateHandler);function connectionHandler(_0x550dd9){process[_0x5904('0xc')](function(){syncho(function(){try{setChannelVariables(_0x550dd9);agiHandler(_0x550dd9);}catch(_0x4a668b){logger[_0x5904('0xd')](_0x4a668b[_0x5904('0xe')]);}});});}function projectUpdateHandler(_0x54e54c){try{var _0x10f511=_['findIndex'](projects,['id',_0x54e54c['id']]);if(_0x10f511>-0x1){if(_0x54e54c[_0x5904('0xf')]===!![]){projects[_0x5904('0x10')](_0x10f511,0x1);}else{projects[_0x10f511]=_0x54e54c;}}else{projects[_0x5904('0x11')](_0x54e54c);}}catch(_0x4a0c3e){logger[_0x5904('0xd')](_0x4a0c3e[_0x5904('0xe')]);}}function listeningHandler(){console[_0x5904('0x12')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger[_0x5904('0x13')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x5904('0x4')]['ip'],config[_0x5904('0x4')]['port']));}function errorHandler(_0x1e3364){if(_0x1e3364&&_0x1e3364[_0x5904('0x14')]&&_0x1e3364[_0x5904('0x15')]){logger[_0x5904('0xd')](util[_0x5904('0x16')]('[%s]\x20%s',_0x1e3364[_0x5904('0x14')],_0x1e3364[_0x5904('0x15')]));}else{logger['error'](util[_0x5904('0x16')]('[ERROR]\x20%s',_0x1e3364[_0x5904('0xe')]));}}function closeHandler(){logger[_0x5904('0x13')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x5904('0x17')],this[_0x5904('0x18')],this['callerid'],this[_0x5904('0x19')],this[_0x5904('0x1a')]));try{createSquareReport(this);}catch(_0x265e16){logger['error'](_0x265e16[_0x5904('0xe')]);}}function timeoutHandler(){logger[_0x5904('0x13')](util[_0x5904('0x16')](_0x5904('0x1b'),this['arg_1'],this[_0x5904('0x18')],this['callerid'],this[_0x5904('0x19')],this[_0x5904('0x1a')]));}function hangupHandler(){logger[_0x5904('0x13')](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x5904('0x17')],this[_0x5904('0x18')],this[_0x5904('0x1c')],this[_0x5904('0x19')],this[_0x5904('0x1a')]));this[_0x5904('0x1d')]=!![];}function createSquareReport(_0x5ae369,_0x2f452d){rpc[_0x5904('0x1e')](_0x5ae369)[_0x5904('0x1f')](function(_0x53ac0a){if(_0x2f452d){_0x2f452d(null,_0x53ac0a);}})['catch'](function(_0x2d8786){if(_0x2f452d){_0x2f452d(null,_0x2d8786);}});}function setChannelVariables(_0x3ff619){for(var _0x256d86 in _0x3ff619){if(_0x3ff619[_0x5904('0x20')](_0x256d86)){if(_0x256d86[_0x5904('0x21')](_0x5904('0x22'))===0x0){_0x3ff619[_0x256d86[_0x5904('0x23')](0x4)]=_0x3ff619[_0x256d86];delete _0x3ff619[_0x256d86];}}}}function agiHandler(_0xcfd21e){logger['debug'](_0x5904('0x24'),JSON[_0x5904('0x25')](_0xcfd21e,null,0x2));logger[_0x5904('0x13')](util[_0x5904('0x16')](_0x5904('0x26'),_0xcfd21e['arg_1'],_0xcfd21e['calleridname'],_0xcfd21e[_0x5904('0x1c')],_0xcfd21e[_0x5904('0x19')],_0xcfd21e[_0x5904('0x1a')]));_0xcfd21e['on']('error',errorHandler);_0xcfd21e['on'](_0x5904('0x27'),closeHandler);_0xcfd21e['on']('timeout',timeoutHandler);_0xcfd21e[_0x5904('0x1d')]=![];_0xcfd21e['on'](_0x5904('0x28'),hangupHandler);var _0x54d35d=_[_0x5904('0x29')](projects,[_0x5904('0x14'),_0xcfd21e['arg_1']]);if(!_0x54d35d)return Project[_0x5904('0x2a')](_0xcfd21e);if(!_0x54d35d[_0x5904('0x2b')])return Project[_0x5904('0x2c')](_0xcfd21e);return Project[_0x5904('0x2d')](_0x54d35d,_0xcfd21e);}function main(){var _0x25b5d2;return utilLicense['getLicense']()[_0x5904('0x1f')](function(_0x598889){if(!_0x598889)return;if(_0x598889[_0x5904('0x2e')]){if(_0x598889[_0x5904('0x2f')]&&_0x598889[_0x5904('0x2f')]>0x0){logger['info'](util[_0x5904('0x16')]('[LICENSE]\x20CHANNELS:\x20%s',_0x598889[_0x5904('0x2f')]));_0x25b5d2=_0x598889[_0x5904('0x2f')];}else{logger[_0x5904('0x13')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger['info'](_0x5904('0x30'));_0x25b5d2=-0x1;}})['then'](function(){return Project[_0x5904('0x31')]();})[_0x5904('0x1f')](function(_0x220cc0){projects=_0x220cc0;return;})[_0x5904('0x32')](function(_0xfaa534){logger[_0x5904('0xd')](_0x5904('0x33'),_0xfaa534[_0x5904('0xe')]);})[_0x5904('0x34')](function(){var _0x110751=require(_0x5904('0x35'))(config[_0x5904('0x4')]['port'],config[_0x5904('0x4')]['ip'],_0x25b5d2);_0x110751['on'](_0x5904('0xd'),errorHandler);_0x110751['on'](_0x5904('0x36'),listeningHandler);_0x110751['on']('connection',connectionHandler);_0x110751['on'](_0x5904('0x27'),closeHandler);});}main();
\ No newline at end of file
+var _0x5bf0=['[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','format','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[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','arg_1','createSquareReport','then','catch','indexOf','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','find','handleNotFound','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','lodash','util','../../config/environment','../../config/license/util','./rpc','./project','./events','EventEmitter','agi','127.0.0.1','projectUpdate','nextTick','stack','deleted','error','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info'];(function(_0x25ea25,_0x570998){var _0x1d453c=function(_0x2a5c09){while(--_0x2a5c09){_0x25ea25['push'](_0x25ea25['shift']());}};_0x1d453c(++_0x570998);}(_0x5bf0,0x145));var _0x05bf=function(_0x1ecc90,_0x33333f){_0x1ecc90=_0x1ecc90-0x0;var _0x446317=_0x5bf0[_0x1ecc90];return _0x446317;};'use strict';var _=require(_0x05bf('0x0'));var syncho=require('syncho');var util=require(_0x05bf('0x1'));var config=require(_0x05bf('0x2'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x05bf('0x3'));var rpc=require(_0x05bf('0x4'));var Project=require(_0x05bf('0x5'));var AGIEmitter=require(_0x05bf('0x6'))[_0x05bf('0x7')];var projects=[];config[_0x05bf('0x8')]=_['defaults'](config[_0x05bf('0x8')],{'ip':_0x05bf('0x9'),'port':0x11dd});AGIEmitter['on'](_0x05bf('0xa'),projectUpdateHandler);function connectionHandler(_0x2699e7){process[_0x05bf('0xb')](function(){syncho(function(){try{setChannelVariables(_0x2699e7);agiHandler(_0x2699e7);}catch(_0x4871a5){logger['error'](_0x4871a5[_0x05bf('0xc')]);}});});}function projectUpdateHandler(_0x3a4f9c){try{var _0x34fffd=_['findIndex'](projects,['id',_0x3a4f9c['id']]);if(_0x34fffd>-0x1){if(_0x3a4f9c[_0x05bf('0xd')]===!![]){projects['splice'](_0x34fffd,0x1);}else{projects[_0x34fffd]=_0x3a4f9c;}}else{projects['push'](_0x3a4f9c);}}catch(_0x2f36ff){logger[_0x05bf('0xe')](_0x2f36ff[_0x05bf('0xc')]);}}function listeningHandler(){console['log'](_0x05bf('0xf'),config[_0x05bf('0x8')]['port']);logger[_0x05bf('0x10')](util['format'](_0x05bf('0x11'),config[_0x05bf('0x8')]['ip'],config['agi'][_0x05bf('0x12')]));}function errorHandler(_0x9821ba){if(_0x9821ba&&_0x9821ba[_0x05bf('0x13')]&&_0x9821ba[_0x05bf('0x14')]){logger[_0x05bf('0xe')](util[_0x05bf('0x15')]('[%s]\x20%s',_0x9821ba['name'],_0x9821ba['message']));}else{logger['error'](util[_0x05bf('0x15')](_0x05bf('0x16'),_0x9821ba['stack']));}}function closeHandler(){logger[_0x05bf('0x10')](util['format'](_0x05bf('0x17'),this['arg_1'],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this[_0x05bf('0x1b')]));try{createSquareReport(this);}catch(_0x37ac8a){logger['error'](_0x37ac8a[_0x05bf('0xc')]);}}function timeoutHandler(){logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x1c'),this['arg_1'],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this[_0x05bf('0x1b')]));}function hangupHandler(){logger['info'](util['format'](_0x05bf('0x1d'),this[_0x05bf('0x1e')],this[_0x05bf('0x18')],this[_0x05bf('0x19')],this[_0x05bf('0x1a')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x3779b8,_0x52ce26){rpc[_0x05bf('0x1f')](_0x3779b8)[_0x05bf('0x20')](function(_0x396f43){if(_0x52ce26){_0x52ce26(null,_0x396f43);}})[_0x05bf('0x21')](function(_0xa5bce0){if(_0x52ce26){_0x52ce26(null,_0xa5bce0);}});}function setChannelVariables(_0x33508a){for(var _0x3f33d5 in _0x33508a){if(_0x33508a['hasOwnProperty'](_0x3f33d5)){if(_0x3f33d5[_0x05bf('0x22')]('agi_')===0x0){_0x33508a[_0x3f33d5['substring'](0x4)]=_0x33508a[_0x3f33d5];delete _0x33508a[_0x3f33d5];}}}}function agiHandler(_0xbeb1bd){logger['debug'](_0x05bf('0x23'),JSON[_0x05bf('0x24')](_0xbeb1bd,null,0x2));logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x25'),_0xbeb1bd['arg_1'],_0xbeb1bd[_0x05bf('0x18')],_0xbeb1bd[_0x05bf('0x19')],_0xbeb1bd[_0x05bf('0x1a')],_0xbeb1bd[_0x05bf('0x1b')]));_0xbeb1bd['on']('error',errorHandler);_0xbeb1bd['on'](_0x05bf('0x26'),closeHandler);_0xbeb1bd['on'](_0x05bf('0x27'),timeoutHandler);_0xbeb1bd[_0x05bf('0x28')]=![];_0xbeb1bd['on']('hangup',hangupHandler);var _0x4c84e8=_[_0x05bf('0x29')](projects,[_0x05bf('0x13'),_0xbeb1bd[_0x05bf('0x1e')]]);if(!_0x4c84e8)return Project[_0x05bf('0x2a')](_0xbeb1bd);if(!_0x4c84e8['production'])return Project[_0x05bf('0x2b')](_0xbeb1bd);return Project[_0x05bf('0x2c')](_0x4c84e8,_0xbeb1bd);}function main(){var _0x19a777;return utilLicense[_0x05bf('0x2d')]()[_0x05bf('0x20')](function(_0x1dad3e){if(!_0x1dad3e)return;if(_0x1dad3e[_0x05bf('0x2e')]){if(_0x1dad3e[_0x05bf('0x2f')]&&_0x1dad3e[_0x05bf('0x2f')]>0x0){logger[_0x05bf('0x10')](util[_0x05bf('0x15')](_0x05bf('0x30'),_0x1dad3e[_0x05bf('0x2f')]));_0x19a777=_0x1dad3e[_0x05bf('0x2f')];}else{logger[_0x05bf('0x10')](_0x05bf('0x31'));}}else{logger['info'](_0x05bf('0x32'));_0x19a777=-0x1;}})[_0x05bf('0x20')](function(){return Project[_0x05bf('0x33')]();})[_0x05bf('0x20')](function(_0x39860f){projects=_0x39860f;return;})[_0x05bf('0x21')](function(_0x3f43df){logger[_0x05bf('0xe')](_0x05bf('0x34'),_0x3f43df[_0x05bf('0xc')]);})[_0x05bf('0x35')](function(){var _0x4670b1=require(_0x05bf('0x36'))(config[_0x05bf('0x8')][_0x05bf('0x12')],config[_0x05bf('0x8')]['ip'],_0x19a777);_0x4670b1['on']('error',errorHandler);_0x4670b1['on'](_0x05bf('0x37'),listeningHandler);_0x4670b1['on'](_0x05bf('0x38'),connectionHandler);_0x4670b1['on'](_0x05bf('0x26'),closeHandler);});}main();
\ No newline at end of file
index a5c9158..7d51e29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf22=['message','catch','sendMailMessage','bluebird','client','http','request','then','error'];(function(_0x5cc7cc,_0x26301a){var _0x4c98a0=function(_0x15eb54){while(--_0x15eb54){_0x5cc7cc['push'](_0x5cc7cc['shift']());}};_0x4c98a0(++_0x26301a);}(_0xcf22,0x135));var _0x2cf2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcf22[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x2cf2('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x2cf2('0x1')][_0x2cf2('0x2')]({'port':0x232b});function request(_0x3b6aa0,_0x16e907){return new BPromise(function(_0x3ec5ab,_0x15ed73){return client[_0x2cf2('0x3')](_0x3b6aa0,_0x16e907)[_0x2cf2('0x4')](function(_0x5c281f){if(_0x5c281f[_0x2cf2('0x5')]){return _0x15ed73(_0x5c281f['error'][_0x2cf2('0x6')]);}else{return _0x3ec5ab(_0x5c281f['result']);}})[_0x2cf2('0x7')](function(_0x3992f7){return _0x15ed73(_0x3992f7);});});}exports[_0x2cf2('0x8')]=function(_0x74df13,_0xdbee1a){return request('SendMail',{'account':_0x74df13,'message':_0xdbee1a});};
\ No newline at end of file
+var _0xc22f=['request','error','message','sendMailMessage','SendMail','bluebird','client'];(function(_0x55d893,_0x325ebe){var _0x52d152=function(_0x5e6314){while(--_0x5e6314){_0x55d893['push'](_0x55d893['shift']());}};_0x52d152(++_0x325ebe);}(_0xc22f,0x178));var _0xfc22=function(_0x491282,_0x532f38){_0x491282=_0x491282-0x0;var _0x52f9e3=_0xc22f[_0x491282];return _0x52f9e3;};'use strict';var BPromise=require(_0xfc22('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xfc22('0x1')]['http']({'port':0x232b});function request(_0x469403,_0x5754b6){return new BPromise(function(_0x18b42b,_0x406cd6){return client[_0xfc22('0x2')](_0x469403,_0x5754b6)['then'](function(_0x80aaa){if(_0x80aaa[_0xfc22('0x3')]){return _0x406cd6(_0x80aaa[_0xfc22('0x3')][_0xfc22('0x4')]);}else{return _0x18b42b(_0x80aaa['result']);}})['catch'](function(_0x316579){return _0x406cd6(_0x316579);});});}exports[_0xfc22('0x5')]=function(_0x29420a,_0x5a732d){return request(_0xfc22('0x6'),{'account':_0x29420a,'message':_0x5a732d});};
\ No newline at end of file
index 3619af6..df5212a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3161=['inspect','production','start','debug','stringify','joinAt','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','dnid','uniqueid','traverseBFS','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','isUndefined','agicommand\x20not\x20found','stack','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','format','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','close','continueAt','moment','xml2json','util','agi','./rpc','./graph','getSquareProjects','catch','error','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','length','target','addEdge','source','value','toJson','mxGraphModel','root'];(function(_0x439d54,_0x56f27e){var _0x241a1f=function(_0x2af49a){while(--_0x2af49a){_0x439d54['push'](_0x439d54['shift']());}};_0x241a1f(++_0x56f27e);}(_0x3161,0xdb));var _0x1316=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3161[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var moment=require(_0x1316('0x0'));var parser=require(_0x1316('0x1'));var util=require(_0x1316('0x2'));var logger=require('../../config/logger')(_0x1316('0x3'));var rpc=require(_0x1316('0x4'));var mailRpc=require('./mailRpc');var Graph=require(_0x1316('0x5'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x1316('0x6')]()[_0x1316('0x7')](function(_0x52a612){logger[_0x1316('0x8')]('Unable\x20to\x20download\x20CallySquare\x20projects',_0x52a612['stack']);return[];});}function addVertex(_0x460fc6,_0x59ecc8,_0x5edbc4){_0x59ecc8[_0x1316('0x9')]=_0x5edbc4;if(_0x59ecc8[_0x1316('0xa')]('retry')){_0x59ecc8[_0x1316('0xb')]=parseInt(_0x59ecc8[_0x1316('0xc')],0xa);}_0x460fc6[_0x1316('0xd')](_[_0x1316('0xe')](_0x59ecc8,_0x1316('0xf')));}function initGraph(_0x1ab7fd,_0x11167e){var _0x1b1c51=new Graph();for(var _0x53e270 in _0x1ab7fd){if(_0x1ab7fd[_0x1316('0xa')](_0x53e270)){if(_[_0x1316('0x10')](_0x1ab7fd[_0x53e270])){for(var _0xe213e5=0x0;_0xe213e5<_0x1ab7fd[_0x53e270]['length'];_0xe213e5+=0x1){addVertex(_0x1b1c51,_0x1ab7fd[_0x53e270][_0xe213e5],_0x53e270);}}else{addVertex(_0x1b1c51,_0x1ab7fd[_0x53e270],_0x53e270);}}}for(var _0x155998=0x0;_0x155998<_0x11167e[_0x1316('0x11')];_0x155998+=0x1){if(_0x11167e[_0x155998]['source']&&_0x11167e[_0x155998][_0x1316('0x12')]){_0x1b1c51[_0x1316('0x13')](_0x11167e[_0x155998][_0x1316('0x14')],_0x11167e[_0x155998][_0x1316('0x12')],_0x11167e[_0x155998][_0x1316('0x15')]);}}return _0x1b1c51;}function getRoot(_0x50ec17){return parser[_0x1316('0x16')](_0x50ec17,{'object':!![]})[_0x1316('0x17')][_0x1316('0x18')];}function inspect(_0x5643e4){return util[_0x1316('0x19')](_0x5643e4,{'showHidden':![],'depth':null});}function initialize(_0x4c95f5,_0xbe638a){var _0x20eff0=getRoot(_0x4c95f5[_0x1316('0x1a')]);if(!_0x20eff0||!_0x20eff0[_0x1316('0x1b')])return;var _0x4eae83,_0x5e57b1,_0x3527f7;logger[_0x1316('0x1c')](_0x1316('0x18'),JSON[_0x1316('0x1d')](_0x20eff0,null,0x2));_0xbe638a[_0x1316('0x1e')]=moment()['format'](_0x1316('0x1f'));_0x4eae83=initGraph(_[_0x1316('0xe')](_0x20eff0,_0x1316('0xf')),_0x20eff0[_0x1316('0xf')]);_0x5e57b1=new Vertices(_0xbe638a,rpc,mailRpc);logger[_0x1316('0x20')](util['format'](_0x1316('0x21'),_0xbe638a[_0x1316('0x22')],_0xbe638a[_0x1316('0x23')],_0xbe638a[_0x1316('0x24')],_0xbe638a[_0x1316('0x25')],_0xbe638a[_0x1316('0x26')]));_0x4eae83[_0x1316('0x27')](_0x20eff0[_0x1316('0x1b')]['id'],function(_0x4b0218){try{_0x4b0218=_0x5e57b1[_0x1316('0x28')](_0x4b0218);logger['debug']('vertex',JSON[_0x1316('0x1d')](_0x4b0218,null,0x2));if(_0x4b0218['agicommand']===_0x1316('0x29')){logger['info'](_0x1316('0x2a'));_0xbe638a[_0x1316('0x2b')]=_0x4b0218[_0x1316('0x2b')]||_0xbe638a[_0x1316('0x2b')];_0xbe638a[_0x1316('0x2c')]=_0x4b0218['extension'];_0xbe638a[_0x1316('0x2d')]=_0x4b0218[_0x1316('0x2d')]?_0x4b0218[_0x1316('0x2d')]-0x1:0x1;return null;}else if(_0x4b0218&&_0x5e57b1[_0x4b0218[_0x1316('0x9')]]){_0x3527f7=_0x5e57b1[_0x4b0218[_0x1316('0x9')]](_0x4b0218);logger[_0x1316('0x20')](_0x1316('0x2e'),JSON['stringify'](_0x3527f7,null,0x2));if(_0x3527f7&&_0x3527f7[_0x1316('0x2f')]===AGI_CODE_SUCCESS&&_0x3527f7[_0x1316('0x30')]!==AGI_RESULT_ERROR&&!_0xbe638a[_0x1316('0x31')]){logger[_0x1316('0x1c')](_0x1316('0x2e'),inspect(_0x3527f7));return _[_0x1316('0x32')](_0x3527f7['result'])?null:_0x3527f7[_0x1316('0x30')]['toString']();}else{logger['error'](_0x1316('0x2e'),inspect(_0x3527f7));return null;}}else{logger[_0x1316('0x8')](_0x1316('0x33'));return null;}}catch(_0x1b4641){logger[_0x1316('0x8')](_0x1b4641[_0x1316('0x34')]);return null;}});if(_0x20eff0['finally']){logger[_0x1316('0x20')](util['format'](_0x1316('0x35'),_0xbe638a[_0x1316('0x22')],_0xbe638a[_0x1316('0x23')],_0xbe638a['callerid'],_0xbe638a[_0x1316('0x25')],_0xbe638a[_0x1316('0x26')]));_0x4eae83[_0x1316('0x27')](_0x20eff0['finally']['id'],function(_0x3b73cb){try{_0x3b73cb=_0x5e57b1[_0x1316('0x28')](_0x3b73cb);logger[_0x1316('0x1c')](_0x1316('0x36'),JSON[_0x1316('0x1d')](_0x3b73cb,null,0x2));if(_0x3b73cb&&_0x5e57b1[_0x3b73cb[_0x1316('0x9')]]){_0x3527f7=_0x5e57b1[_0x3b73cb['agicommand']](_0x3b73cb);if(_0x3527f7){logger[_0x1316('0x1c')](_0x1316('0x2e'),inspect(_0x3527f7));return _[_0x1316('0x32')](_0x3527f7[_0x1316('0x30')])?null:_0x3527f7[_0x1316('0x30')][_0x1316('0x37')]();}else{logger['error'](_0x1316('0x2e'),inspect(_0x3527f7));return null;}}else{logger[_0x1316('0x8')](_0x1316('0x33'));return null;}}catch(_0x1caf91){logger['error'](_0x1caf91['stack']);return null;}});}logger[_0x1316('0x20')](util['format'](_0x1316('0x38'),_0xbe638a[_0x1316('0x22')],_0xbe638a[_0x1316('0x23')],_0xbe638a['callerid'],_0xbe638a['dnid'],_0xbe638a[_0x1316('0x26')]));logger[_0x1316('0x20')](util[_0x1316('0x39')](_0x1316('0x3a'),_0xbe638a['context'],_0xbe638a['extension'],parseInt(_0xbe638a[_0x1316('0x2d')],0xa)+0x1));_0xbe638a['continueAt'](_0xbe638a[_0x1316('0x2b')],_0xbe638a[_0x1316('0x2c')],parseInt(_0xbe638a['priority'],0xa)+0x1);_0xbe638a[_0x1316('0x3b')]();}function handleNotFound(_0x125b89){logger['error'](util[_0x1316('0x39')]('Project\x20%s\x20not\x20found',_0x125b89[_0x1316('0x22')]));_0x125b89[_0x1316('0x3c')](_0x125b89[_0x1316('0x2b')],_0x125b89['extension'],parseInt(_0x125b89[_0x1316('0x2d')],0xa)+0x1);_0x125b89[_0x1316('0x3b')]();}function handleUnpublished(_0x401e2e){logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x401e2e[_0x1316('0x22')]));_0x401e2e[_0x1316('0x3c')](_0x401e2e['context'],_0x401e2e['extension'],parseInt(_0x401e2e[_0x1316('0x2d')],0xa)+0x1);_0x401e2e[_0x1316('0x3b')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0xc7b8=['inspect','production','start','debug','joinAt','format','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','stringify','evtHangup','result','toString','finally','info','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','agicommand\x20not\x20found','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','continueAt','exports','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','maxRetry','retry','addVertex','mxCell','isArray','source','target','addEdge','value','root'];(function(_0x3d72aa,_0x4c1597){var _0x309a93=function(_0x10685){while(--_0x10685){_0x3d72aa['push'](_0x3d72aa['shift']());}};_0x309a93(++_0x4c1597);}(_0xc7b8,0x150));var _0x8c7b=function(_0x432996,_0x1703cc){_0x432996=_0x432996-0x0;var _0x231c54=_0xc7b8[_0x432996];return _0x231c54;};'use strict';var _=require(_0x8c7b('0x0'));var moment=require(_0x8c7b('0x1'));var parser=require(_0x8c7b('0x2'));var util=require(_0x8c7b('0x3'));var logger=require(_0x8c7b('0x4'))(_0x8c7b('0x5'));var rpc=require(_0x8c7b('0x6'));var mailRpc=require(_0x8c7b('0x7'));var Graph=require(_0x8c7b('0x8'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x8c7b('0x9')]()[_0x8c7b('0xa')](function(_0x355c3b){logger[_0x8c7b('0xb')](_0x8c7b('0xc'),_0x355c3b[_0x8c7b('0xd')]);return[];});}function addVertex(_0x414ec2,_0x1c15c8,_0x39219d){_0x1c15c8['agicommand']=_0x39219d;if(_0x1c15c8['hasOwnProperty']('retry')){_0x1c15c8[_0x8c7b('0xe')]=parseInt(_0x1c15c8[_0x8c7b('0xf')],0xa);}_0x414ec2[_0x8c7b('0x10')](_['omit'](_0x1c15c8,_0x8c7b('0x11')));}function initGraph(_0x2344b9,_0x3caec5){var _0x494c70=new Graph();for(var _0x23a145 in _0x2344b9){if(_0x2344b9['hasOwnProperty'](_0x23a145)){if(_[_0x8c7b('0x12')](_0x2344b9[_0x23a145])){for(var _0x52c492=0x0;_0x52c492<_0x2344b9[_0x23a145]['length'];_0x52c492+=0x1){addVertex(_0x494c70,_0x2344b9[_0x23a145][_0x52c492],_0x23a145);}}else{addVertex(_0x494c70,_0x2344b9[_0x23a145],_0x23a145);}}}for(var _0xc1e2e0=0x0;_0xc1e2e0<_0x3caec5['length'];_0xc1e2e0+=0x1){if(_0x3caec5[_0xc1e2e0][_0x8c7b('0x13')]&&_0x3caec5[_0xc1e2e0][_0x8c7b('0x14')]){_0x494c70[_0x8c7b('0x15')](_0x3caec5[_0xc1e2e0][_0x8c7b('0x13')],_0x3caec5[_0xc1e2e0][_0x8c7b('0x14')],_0x3caec5[_0xc1e2e0][_0x8c7b('0x16')]);}}return _0x494c70;}function getRoot(_0x5412d8){return parser['toJson'](_0x5412d8,{'object':!![]})['mxGraphModel'][_0x8c7b('0x17')];}function inspect(_0x90445){return util[_0x8c7b('0x18')](_0x90445,{'showHidden':![],'depth':null});}function initialize(_0x519546,_0x2ff0ba){var _0x22701a=getRoot(_0x519546[_0x8c7b('0x19')]);if(!_0x22701a||!_0x22701a[_0x8c7b('0x1a')])return;var _0x5df332,_0x46a225,_0x3843f4;logger[_0x8c7b('0x1b')]('root',JSON['stringify'](_0x22701a,null,0x2));_0x2ff0ba[_0x8c7b('0x1c')]=moment()[_0x8c7b('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');_0x5df332=initGraph(_[_0x8c7b('0x1e')](_0x22701a,_0x8c7b('0x11')),_0x22701a[_0x8c7b('0x11')]);_0x46a225=new Vertices(_0x2ff0ba,rpc,mailRpc);logger['info'](util[_0x8c7b('0x1d')](_0x8c7b('0x1f'),_0x2ff0ba[_0x8c7b('0x20')],_0x2ff0ba[_0x8c7b('0x21')],_0x2ff0ba['callerid'],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));_0x5df332[_0x8c7b('0x24')](_0x22701a[_0x8c7b('0x1a')]['id'],function(_0x41382a){try{_0x41382a=_0x46a225[_0x8c7b('0x25')](_0x41382a);logger[_0x8c7b('0x1b')](_0x8c7b('0x26'),JSON['stringify'](_0x41382a,null,0x2));if(_0x41382a[_0x8c7b('0x27')]===_0x8c7b('0x28')){logger['info'](_0x8c7b('0x29'));_0x2ff0ba[_0x8c7b('0x2a')]=_0x41382a[_0x8c7b('0x2a')]||_0x2ff0ba[_0x8c7b('0x2a')];_0x2ff0ba['extension']=_0x41382a[_0x8c7b('0x2b')];_0x2ff0ba[_0x8c7b('0x2c')]=_0x41382a[_0x8c7b('0x2c')]?_0x41382a[_0x8c7b('0x2c')]-0x1:0x1;return null;}else if(_0x41382a&&_0x46a225[_0x41382a['agicommand']]){_0x3843f4=_0x46a225[_0x41382a[_0x8c7b('0x27')]](_0x41382a);logger['info'](_0x8c7b('0x2d'),JSON[_0x8c7b('0x2e')](_0x3843f4,null,0x2));if(_0x3843f4&&_0x3843f4['code']===AGI_CODE_SUCCESS&&_0x3843f4['result']!==AGI_RESULT_ERROR&&!_0x2ff0ba[_0x8c7b('0x2f')]){logger['debug']('response',inspect(_0x3843f4));return _['isUndefined'](_0x3843f4['result'])?null:_0x3843f4[_0x8c7b('0x30')][_0x8c7b('0x31')]();}else{logger['error'](_0x8c7b('0x2d'),inspect(_0x3843f4));return null;}}else{logger[_0x8c7b('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x562563){logger[_0x8c7b('0xb')](_0x562563[_0x8c7b('0xd')]);return null;}});if(_0x22701a[_0x8c7b('0x32')]){logger[_0x8c7b('0x33')](util[_0x8c7b('0x1d')](_0x8c7b('0x34'),_0x2ff0ba['arg_1'],_0x2ff0ba[_0x8c7b('0x21')],_0x2ff0ba[_0x8c7b('0x35')],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));_0x5df332[_0x8c7b('0x24')](_0x22701a[_0x8c7b('0x32')]['id'],function(_0x1e276b){try{_0x1e276b=_0x46a225[_0x8c7b('0x25')](_0x1e276b);logger['debug'](_0x8c7b('0x26'),JSON[_0x8c7b('0x2e')](_0x1e276b,null,0x2));if(_0x1e276b&&_0x46a225[_0x1e276b['agicommand']]){_0x3843f4=_0x46a225[_0x1e276b['agicommand']](_0x1e276b);if(_0x3843f4){logger[_0x8c7b('0x1b')](_0x8c7b('0x2d'),inspect(_0x3843f4));return _['isUndefined'](_0x3843f4[_0x8c7b('0x30')])?null:_0x3843f4[_0x8c7b('0x30')][_0x8c7b('0x31')]();}else{logger[_0x8c7b('0xb')]('response',inspect(_0x3843f4));return null;}}else{logger[_0x8c7b('0xb')](_0x8c7b('0x36'));return null;}}catch(_0x476173){logger[_0x8c7b('0xb')](_0x476173[_0x8c7b('0xd')]);return null;}});}logger[_0x8c7b('0x33')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2ff0ba[_0x8c7b('0x20')],_0x2ff0ba['calleridname'],_0x2ff0ba['callerid'],_0x2ff0ba[_0x8c7b('0x22')],_0x2ff0ba[_0x8c7b('0x23')]));logger[_0x8c7b('0x33')](util[_0x8c7b('0x1d')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x2ff0ba['context'],_0x2ff0ba[_0x8c7b('0x2b')],parseInt(_0x2ff0ba[_0x8c7b('0x2c')],0xa)+0x1));_0x2ff0ba['continueAt'](_0x2ff0ba['context'],_0x2ff0ba[_0x8c7b('0x2b')],parseInt(_0x2ff0ba[_0x8c7b('0x2c')],0xa)+0x1);_0x2ff0ba[_0x8c7b('0x37')]();}function handleNotFound(_0x277a7d){logger['error'](util[_0x8c7b('0x1d')](_0x8c7b('0x38'),_0x277a7d[_0x8c7b('0x20')]));_0x277a7d['continueAt'](_0x277a7d[_0x8c7b('0x2a')],_0x277a7d[_0x8c7b('0x2b')],parseInt(_0x277a7d['priority'],0xa)+0x1);_0x277a7d[_0x8c7b('0x37')]();}function handleUnpublished(_0x1fca6a){logger[_0x8c7b('0xb')](util[_0x8c7b('0x1d')](_0x8c7b('0x39'),_0x1fca6a[_0x8c7b('0x20')]));_0x1fca6a[_0x8c7b('0x3a')](_0x1fca6a['context'],_0x1fca6a[_0x8c7b('0x2b')],parseInt(_0x1fca6a[_0x8c7b('0x2c')],0xa)+0x1);_0x1fca6a[_0x8c7b('0x37')]();}module[_0x8c7b('0x3b')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 7918e74..2623834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31a0=['toString','indexOf','substring','length','slice','trim','emit','line','exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x31a0,0x68));var _0x031a=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x31a0[_0x36ed48];return _0x51c63a;};'use strict';var util=require(_0x031a('0x0'));var Transform=require(_0x031a('0x1'))[_0x031a('0x2')];function AGIReply(_0xb4166c){Transform[_0x031a('0x3')](this,_0xb4166c);this[_0x031a('0x4')]='';this[_0x031a('0x5')]=![];}util[_0x031a('0x6')](AGIReply,Transform);AGIReply[_0x031a('0x7')][_0x031a('0x8')]=function(_0x22e77a,_0x3561ea,_0x2c71c1){var _0x300a02='\x0a',_0x131bc9=['\x0a\x0a',_0x031a('0x9')],_0x3d4c83=-0x1,_0x146720=-0x1,_0x2f0502='',_0x392f66=0x0,_0x28b961='',_0x1f6c7d='';this[_0x031a('0x4')]+=_0x22e77a[_0x031a('0xa')]();_0x28b961=this[_0x031a('0x4')];if(!this[_0x031a('0x5')]){_0x392f66=0x0;while(_0x131bc9[_0x392f66]){while((_0x146720=_0x28b961[_0x031a('0xb')](_0x131bc9[_0x392f66]))!=-0x1){_0x2f0502=_0x131bc9[_0x392f66];_0x1f6c7d=_0x28b961[_0x031a('0xc')](0x0,_0x146720);_0x28b961=_0x28b961['substring'](_0x146720+_0x2f0502[_0x031a('0xd')]);var _0x51834b=_0x1f6c7d['split'](_0x300a02),_0x1d535e=0x0,_0x4d3ce5={},_0x2c0ff3='',_0x471041='',_0x5a9483=-0x1;while(_0x51834b[_0x1d535e]){_0x5a9483=_0x51834b[_0x1d535e][_0x031a('0xb')](':');if(_0x5a9483!=-0x1){_0x2c0ff3=_0x51834b[_0x1d535e][_0x031a('0xe')](0x0,_0x5a9483)[_0x031a('0xf')]();_0x471041=_0x51834b[_0x1d535e][_0x031a('0xe')](_0x5a9483+0x1)[_0x031a('0xf')]();if(_0x2c0ff3[_0x031a('0xd')]>0x0){_0x4d3ce5[_0x2c0ff3]=_0x471041;}}else{}_0x1d535e++;}this[_0x031a('0x10')]('headers',_0x4d3ce5);this[_0x031a('0x5')]=!![];}_0x392f66++;}this[_0x031a('0x4')]=_0x28b961;}else{while((_0x3d4c83=_0x28b961['indexOf'](_0x300a02))!=-0x1){_0x1f6c7d=_0x28b961[_0x031a('0xc')](0x0,_0x3d4c83);this['emit'](_0x031a('0x11'),_0x1f6c7d);_0x28b961=_0x28b961[_0x031a('0xc')](_0x3d4c83+_0x300a02[_0x031a('0xd')]);}this[_0x031a('0x4')]=_0x28b961;}_0x2c71c1();};module[_0x031a('0x12')]=AGIReply;
\ No newline at end of file
+var _0x7d26=['\x0d\x0a\x0d\x0a','substring','length','split','indexOf','slice','trim','emit','headers','exports','stream','call','_localBuffer','_inBody','inherits','prototype','_transform'];(function(_0x2dd576,_0x5bbb24){var _0x100c77=function(_0x55b9a0){while(--_0x55b9a0){_0x2dd576['push'](_0x2dd576['shift']());}};_0x100c77(++_0x5bbb24);}(_0x7d26,0x16f));var _0x67d2=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7d26[_0x167cc1];return _0x10bc4b;};'use strict';var util=require('util');var Transform=require(_0x67d2('0x0'))['Transform'];function AGIReply(_0x373afc){Transform[_0x67d2('0x1')](this,_0x373afc);this[_0x67d2('0x2')]='';this[_0x67d2('0x3')]=![];}util[_0x67d2('0x4')](AGIReply,Transform);AGIReply[_0x67d2('0x5')][_0x67d2('0x6')]=function(_0x46c36d,_0x194525,_0x3e31dc){var _0x47d53e='\x0a',_0x2479fa=['\x0a\x0a',_0x67d2('0x7')],_0x46683f=-0x1,_0x1b3cfe=-0x1,_0x158c03='',_0xbd653e=0x0,_0x242e38='',_0x404c9b='';this[_0x67d2('0x2')]+=_0x46c36d['toString']();_0x242e38=this[_0x67d2('0x2')];if(!this[_0x67d2('0x3')]){_0xbd653e=0x0;while(_0x2479fa[_0xbd653e]){while((_0x1b3cfe=_0x242e38['indexOf'](_0x2479fa[_0xbd653e]))!=-0x1){_0x158c03=_0x2479fa[_0xbd653e];_0x404c9b=_0x242e38['substring'](0x0,_0x1b3cfe);_0x242e38=_0x242e38[_0x67d2('0x8')](_0x1b3cfe+_0x158c03[_0x67d2('0x9')]);var _0x2d9807=_0x404c9b[_0x67d2('0xa')](_0x47d53e),_0x54470c=0x0,_0xadf097={},_0x2a97fd='',_0x313374='',_0x155553=-0x1;while(_0x2d9807[_0x54470c]){_0x155553=_0x2d9807[_0x54470c][_0x67d2('0xb')](':');if(_0x155553!=-0x1){_0x2a97fd=_0x2d9807[_0x54470c][_0x67d2('0xc')](0x0,_0x155553)[_0x67d2('0xd')]();_0x313374=_0x2d9807[_0x54470c][_0x67d2('0xc')](_0x155553+0x1)['trim']();if(_0x2a97fd[_0x67d2('0x9')]>0x0){_0xadf097[_0x2a97fd]=_0x313374;}}else{}_0x54470c++;}this[_0x67d2('0xe')](_0x67d2('0xf'),_0xadf097);this[_0x67d2('0x3')]=!![];}_0xbd653e++;}this[_0x67d2('0x2')]=_0x242e38;}else{while((_0x46683f=_0x242e38[_0x67d2('0xb')](_0x47d53e))!=-0x1){_0x404c9b=_0x242e38['substring'](0x0,_0x46683f);this[_0x67d2('0xe')]('line',_0x404c9b);_0x242e38=_0x242e38['substring'](_0x46683f+_0x47d53e[_0x67d2('0x9')]);}this[_0x67d2('0x2')]=_0x242e38;}_0x3e31dc();};module[_0x67d2('0x10')]=AGIReply;
\ No newline at end of file
index 90780b7..5835ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291c=['GetContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','Interval','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','createSquareRecording','CreateSquareRecording','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','getPauseById','ShowPause','LoginUser','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','http','request','then','error','result','catch','getSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','CloudProvider','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','ShowSquareOdbc','getUserById','getContactByPhone'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x291c,0x137));var _0xc291=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x291c[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xc291('0x0'));var moment=require(_0xc291('0x1'));var jayson=require(_0xc291('0x2'));var client=jayson[_0xc291('0x3')][_0xc291('0x4')]({'port':0x2329});function request(_0x253ebb,_0xc32916){return new Promise(function(_0x7b34d6,_0xafdfee){return client[_0xc291('0x5')](_0x253ebb,_0xc32916)[_0xc291('0x6')](function(_0x5e7cbd){if(_0x5e7cbd[_0xc291('0x7')]){return _0xafdfee(_0x5e7cbd['error']['message']);}else{return _0x7b34d6(_0x5e7cbd[_0xc291('0x8')]);}})[_0xc291('0x9')](function(_0x42a6ac){return _0xafdfee(_0x42a6ac);});});}exports[_0xc291('0xa')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id',_0xc291('0xb'),_0xc291('0xc')]}});};exports[_0xc291('0xd')]=function(_0x173e88){return request(_0xc291('0xe'),{'options':{'raw':![],'where':{'name':_0x173e88},'attributes':[_0xc291('0xc')]}});};exports[_0xc291('0xf')]=function(_0x219331){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x219331},'include':[{'model':'MailServerOut','as':'Smtp','include':[{'model':_0xc291('0x10'),'as':_0xc291('0x10')}]}],'attributes':['id',_0xc291('0xb'),'email'],'smtp':!![]}});};exports[_0xc291('0x11')]=function(_0x4ea590){return request(_0xc291('0xe'),{'options':{'where':{'id':_0x4ea590},'attributes':[_0xc291('0xb')]}});};exports[_0xc291('0x12')]=function(_0x31f272){return request(_0xc291('0x13'),{'options':{'where':{'id':_0x31f272},'attributes':[_0xc291('0xb')]}});};exports[_0xc291('0x14')]=function(_0x409efe){return request(_0xc291('0x15'),{'options':{'where':{'id':_0x409efe},'attributes':[_0xc291('0xb')]}});};exports['getSquareOdbcById']=function(_0x305ecc){return request(_0xc291('0x16'),{'options':{'where':{'id':_0x305ecc},'attributes':['dsn']}});};exports[_0xc291('0x17')]=function(_0x54105c){return request('ShowUser',{'options':{'where':{'id':_0x54105c},'attributes':['name']}});};exports[_0xc291('0x18')]=function(_0x32baae){return request(_0xc291('0x19'),{'options':{'where':{'phone':_0x32baae[_0xc291('0x1a')]},'attributes':['id']}});};exports[_0xc291('0x1b')]=function(_0x38cd5e){return request(_0xc291('0x1c'),{'options':{'where':{'id':_0x38cd5e},'attributes':[_0xc291('0xb')]}});};exports[_0xc291('0x1d')]=function(_0x27a66a){return request('ShowSound',{'options':{'where':{'id':_0x27a66a},'attributes':[_0xc291('0x1e')]}});};exports[_0xc291('0x1f')]=function(_0x1c4daf){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x1c4daf},'include':[{'model':_0xc291('0x20'),'as':'Intervals'}]}});};exports[_0xc291('0x21')]=function(_0xd4e0cf){return request('ShowSmsAccount',{'options':{'where':{'id':_0xd4e0cf},'attributes':['id','name']}});};exports[_0xc291('0x22')]=function(_0x1cec23){return request(_0xc291('0x23'),{'body':_0x1cec23});};exports['createSquareDetailsReport']=function(_0x35f36f){return request('CreateSquareDetailsReport',{'body':_0x35f36f});};exports[_0xc291('0x24')]=function(_0x297030){return request(_0xc291('0x25'),{'body':_[_0xc291('0x26')](_0x297030,{'project_name':_0x297030[_0xc291('0x27')],'prev_project_name':_0x297030[_0xc291('0x28')]||'','is_subproject':_0x297030[_0xc291('0x28')]?!![]:![],'leaveAt':moment()[_0xc291('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xc291('0x2a')]=function(_0x273c0a){return request(_0xc291('0x2b'),{'body':_0x273c0a});};exports['createSquareMessage']=function(_0x3223f9){return request(_0xc291('0x2c'),{'body':_0x3223f9});};exports[_0xc291('0x2d')]=function(_0xd38395){return request(_0xc291('0x2e'),{'options':{'raw':![],'where':{'phone':_0xd38395['phone'],'ListId':_0xd38395[_0xc291('0x2f')]}}})[_0xc291('0x6')](function(_0x98d30e){if(_0x98d30e){return _0x98d30e;}return request('CreateCmContact',{'body':_0xd38395});});};exports[_0xc291('0x30')]=function(_0x389abe){return request(_0xc291('0x31'),{'options':{'where':{'id':_0x389abe},'attributes':[_0xc291('0xb')]}});};exports['agentLogin']=function(_0x532796,_0x4917e9){return request(_0xc291('0x32'),{'body':{'interface':_0x4917e9},'options':{'where':_0x532796}});};exports['agentPause']=function(_0x5a0587,_0x439633,_0x35fe84){return request(_0xc291('0x33'),{'body':{'type':_0x439633,'uniqueid':_0x35fe84},'options':{'where':_0x5a0587}});};exports[_0xc291('0x34')]=function(_0x1fcace){return request(_0xc291('0x35'),{'body':{},'options':{'where':_0x1fcace}});};exports[_0xc291('0x36')]=function(_0x16ea89){return request(_0xc291('0x37'),{'body':{},'options':{'where':_0x16ea89}});};
\ No newline at end of file
+var _0xe5d5=['getSquareProjectById','ShowSquareProject','ShowVoiceQueue','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','getTrunkById','ShowTrunk','getSoundById','save_name','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','format','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','agentUnpause','UnpauseUser','agentLogout','LogoutUser','jayson/promise','http','request','then','error','message','result','catch','getSquareProjects','GetSquareProjects','name','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0xe5d5,0x156));var _0x5e5d=function(_0x52d931,_0x3a135b){_0x52d931=_0x52d931-0x0;var _0x4437cf=_0xe5d5[_0x52d931];return _0x4437cf;};'use strict';var _=require('lodash');var moment=require('moment');var jayson=require(_0x5e5d('0x0'));var client=jayson['client'][_0x5e5d('0x1')]({'port':0x2329});function request(_0x4b8ae9,_0x50afd3){return new Promise(function(_0x5127ee,_0x3e2410){return client[_0x5e5d('0x2')](_0x4b8ae9,_0x50afd3)[_0x5e5d('0x3')](function(_0x3d014f){if(_0x3d014f[_0x5e5d('0x4')]){return _0x3e2410(_0x3d014f[_0x5e5d('0x4')][_0x5e5d('0x5')]);}else{return _0x5127ee(_0x3d014f[_0x5e5d('0x6')]);}})[_0x5e5d('0x7')](function(_0x131a59){return _0x3e2410(_0x131a59);});});}exports[_0x5e5d('0x8')]=function(){return request(_0x5e5d('0x9'),{'options':{'raw':![],'attributes':['id',_0x5e5d('0xa'),_0x5e5d('0xb')]}});};exports['getSquareProject']=function(_0x32d041){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x32d041},'attributes':[_0x5e5d('0xb')]}});};exports[_0x5e5d('0xc')]=function(_0x55c119){return request(_0x5e5d('0xd'),{'options':{'raw':![],'where':{'id':_0x55c119},'include':[{'model':_0x5e5d('0xe'),'as':_0x5e5d('0xf'),'include':[{'model':_0x5e5d('0x10'),'as':'CloudProvider'}]}],'attributes':['id','name',_0x5e5d('0x11')],'smtp':!![]}});};exports[_0x5e5d('0x12')]=function(_0x51018d){return request(_0x5e5d('0x13'),{'options':{'where':{'id':_0x51018d},'attributes':[_0x5e5d('0xa')]}});};exports['getVoiceQueueById']=function(_0x42f1f8){return request(_0x5e5d('0x14'),{'options':{'where':{'id':_0x42f1f8},'attributes':['name']}});};exports['getVariableById']=function(_0x5bf617){return request(_0x5e5d('0x15'),{'options':{'where':{'id':_0x5bf617},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x16')]=function(_0x1e2d44){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x1e2d44},'attributes':[_0x5e5d('0x17')]}});};exports[_0x5e5d('0x18')]=function(_0x39964a){return request(_0x5e5d('0x19'),{'options':{'where':{'id':_0x39964a},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x1a')]=function(_0x3b655b){return request(_0x5e5d('0x1b'),{'options':{'where':{'phone':_0x3b655b['phone']},'attributes':['id']}});};exports[_0x5e5d('0x1c')]=function(_0x1ceea7){return request(_0x5e5d('0x1d'),{'options':{'where':{'id':_0x1ceea7},'attributes':[_0x5e5d('0xa')]}});};exports[_0x5e5d('0x1e')]=function(_0xf8fe10){return request('ShowSound',{'options':{'where':{'id':_0xf8fe10},'attributes':[_0x5e5d('0x1f')]}});};exports['getIntervalById']=function(_0x968d4b){return request(_0x5e5d('0x20'),{'options':{'raw':![],'where':{'id':_0x968d4b},'include':[{'model':_0x5e5d('0x21'),'as':'Intervals'}]}});};exports[_0x5e5d('0x22')]=function(_0x488a49){return request(_0x5e5d('0x23'),{'options':{'where':{'id':_0x488a49},'attributes':['id',_0x5e5d('0xa')]}});};exports[_0x5e5d('0x24')]=function(_0x49a558){return request('CreateSmsMessage',{'body':_0x49a558});};exports[_0x5e5d('0x25')]=function(_0x1d5078){return request('CreateSquareDetailsReport',{'body':_0x1d5078});};exports['createSquareReport']=function(_0x28620d){return request(_0x5e5d('0x26'),{'body':_[_0x5e5d('0x27')](_0x28620d,{'project_name':_0x28620d['arg_1'],'prev_project_name':_0x28620d[_0x5e5d('0x28')]||'','is_subproject':_0x28620d['arg_2']?!![]:![],'leaveAt':moment()[_0x5e5d('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x5e5d('0x2a')]=function(_0x20ba59){return request(_0x5e5d('0x2b'),{'body':_0x20ba59});};exports[_0x5e5d('0x2c')]=function(_0x425b5c){return request(_0x5e5d('0x2d'),{'body':_0x425b5c});};exports[_0x5e5d('0x2e')]=function(_0x56b166){return request(_0x5e5d('0x2f'),{'options':{'raw':![],'where':{'phone':_0x56b166[_0x5e5d('0x30')],'ListId':_0x56b166[_0x5e5d('0x31')]}}})[_0x5e5d('0x3')](function(_0x1f8484){if(_0x1f8484){return _0x1f8484;}return request(_0x5e5d('0x32'),{'body':_0x56b166});});};exports[_0x5e5d('0x33')]=function(_0x402caf){return request(_0x5e5d('0x34'),{'options':{'where':{'id':_0x402caf},'attributes':['name']}});};exports[_0x5e5d('0x35')]=function(_0x4ddd70,_0x568987){return request(_0x5e5d('0x36'),{'body':{'interface':_0x568987},'options':{'where':_0x4ddd70}});};exports[_0x5e5d('0x37')]=function(_0x38a8ed,_0x2e788f,_0x45f424){return request('PauseUser',{'body':{'type':_0x2e788f,'uniqueid':_0x45f424},'options':{'where':_0x38a8ed}});};exports[_0x5e5d('0x38')]=function(_0x13068e){return request(_0x5e5d('0x39'),{'body':{},'options':{'where':_0x13068e}});};exports[_0x5e5d('0x3a')]=function(_0x230198){return request(_0x5e5d('0x3b'),{'body':{},'options':{'where':_0x230198}});};
\ No newline at end of file
index 9ff2233..d1d8fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf25=['./polly','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbf25,0x15e));var _0x5bf2=function(_0x2f1237,_0x3992fe){_0x2f1237=_0x2f1237-0x0;var _0x593ac8=_0xbf25[_0x2f1237];return _0x593ac8;};var polly=require(_0x5bf2('0x0'));var lex=require('./lex');module[_0x5bf2('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xa46e=['./polly','./lex'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa46e,0x8a));var _0xea46=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xa46e[_0x4d613c];return _0x301fe3;};var polly=require(_0xea46('0x0'));var lex=require(_0xea46('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index 32a24a8..323237f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['exports','./lib/api'];(function(_0x2dfec5,_0x228130){var _0x2d01ab=function(_0x302f55){while(--_0x302f55){_0x2dfec5['push'](_0x2dfec5['shift']());}};_0x2d01ab(++_0x228130);}(_0xaa88,0x137));var _0x8aa8=function(_0x3825a8,_0x2ce1a2){_0x3825a8=_0x3825a8-0x0;var _0xabc9bc=_0xaa88[_0x3825a8];return _0xabc9bc;};'use strict';var lex=require(_0x8aa8('0x0'));module[_0x8aa8('0x1')]=function(_0x1643a6,_0x51c79b,_0x4aee38,_0x4ba9dd,_0x3a5b12,_0x43f7e4){return lex(_0x1643a6,_0x51c79b,_0x4aee38,_0x4ba9dd,_0x3a5b12,_0x43f7e4);};
\ No newline at end of file
+var _0x6f7a=['./lib/api','exports'];(function(_0x2a353c,_0x1c2dc4){var _0x3e4945=function(_0x1e0ec5){while(--_0x1e0ec5){_0x2a353c['push'](_0x2a353c['shift']());}};_0x3e4945(++_0x1c2dc4);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x12eb74,_0x562ba7){_0x12eb74=_0x12eb74-0x0;var _0x576266=_0x6f7a[_0x12eb74];return _0x576266;};'use strict';var lex=require(_0xa6f7('0x0'));module[_0xa6f7('0x1')]=function(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8){return lex(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8);};
\ No newline at end of file
index 77e1a7e..6c8029c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x6307b1,_0x6451ad){var _0x2a43fb=function(_0x574b87){while(--_0x574b87){_0x6307b1['push'](_0x6307b1['shift']());}};_0x2a43fb(++_0x6451ad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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(_0x37388b,_0x4ccac5){var _0x9ca091=function(_0x487031){while(--_0x487031){_0x37388b['push'](_0x37388b['shift']());}};_0x9ca091(++_0x4ccac5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 0ac2f52..6c4f91e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68c2=['exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x68c2,0xb8));var _0x268c=function(_0x330a51,_0x42c33b){_0x330a51=_0x330a51-0x0;var _0x55aa63=_0x68c2[_0x330a51];return _0x55aa63;};'use strict';var polly=require('./lib/api');module[_0x268c('0x0')]=function(_0x251084,_0xaac925,_0x5f4a41,_0x51d759,_0x376808,_0x1f05f7,_0x15cd61){return polly(_0x251084,_0xaac925,_0x5f4a41,_0x51d759,_0x376808,_0x1f05f7,_0x15cd61);};
\ No newline at end of file
+var _0x60a2=['exports','./lib/api'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0x60a2,0x14f));var _0x260a=function(_0x432a52,_0xc30fa0){_0x432a52=_0x432a52-0x0;var _0x3d1acf=_0x60a2[_0x432a52];return _0x3d1acf;};'use strict';var polly=require(_0x260a('0x0'));module[_0x260a('0x1')]=function(_0x5b9c97,_0x5b4ea,_0x16fddd,_0x5cce86,_0x4ce1ce,_0x2c6b74,_0x289604){return polly(_0x5b9c97,_0x5b4ea,_0x16fddd,_0x5cce86,_0x4ce1ce,_0x2c6b74,_0x289604);};
\ No newline at end of file
index da4ffd8..e4854f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a63=['aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','text','path','randomstring'];(function(_0x144c0c,_0x113cfe){var _0x436221=function(_0x231dd7){while(--_0x231dd7){_0x144c0c['push'](_0x144c0c['shift']());}};_0x436221(++_0x113cfe);}(_0x8a63,0xfa));var _0x38a6=function(_0x19a17b,_0x5ae2cf){_0x19a17b=_0x19a17b-0x0;var _0x3ab04e=_0x8a63[_0x19a17b];return _0x3ab04e;};'use strict';var fs=require('fs');var path=require(_0x38a6('0x0'));var BPromise=require('bluebird');var rs=require(_0x38a6('0x1'));var AWS=require(_0x38a6('0x2'));function pollyResult(_0x2d0a44,_0x46ab49,_0x22ca03){return new BPromise(function(_0x127fdf,_0xdc414b){_0x2d0a44[_0x38a6('0x3')](_0x46ab49,function(_0x19f6f3,_0x3a6a60){if(_0x19f6f3){_0xdc414b(_0x19f6f3);}else if(_0x3a6a60){if(_0x3a6a60[_0x38a6('0x4')]instanceof Buffer){fs[_0x38a6('0x5')](_0x22ca03,_0x3a6a60[_0x38a6('0x4')],function(_0x33c30d){if(_0x33c30d){_0xdc414b(_0x33c30d);}else{_0x127fdf();}});}else{_0xdc414b(new Error(_0x38a6('0x6')));}}else{_0xdc414b(new Error(_0x38a6('0x7')));}});});}module['exports']=function(_0x595b44,_0x27031b,_0x19cde0,_0x47236e,_0x288fb7,_0xfbe638,_0x3eba0b){var _0x51ad0e=new AWS['Polly']({'accessKeyId':_0x595b44,'secretAccessKey':_0x27031b,'region':_0x19cde0});var _0x582a01={'Text':_0x288fb7,'TextType':_0xfbe638||_0x38a6('0x8'),'OutputFormat':'mp3','VoiceId':_0x47236e};return pollyResult(_0x51ad0e,_0x582a01,_0x3eba0b);};
\ No newline at end of file
+var _0x6e1c=['writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','path','bluebird','randomstring','aws-sdk','AudioStream'];(function(_0x3a9df9,_0x57ca23){var _0x32cbf7=function(_0x24e3f5){while(--_0x24e3f5){_0x3a9df9['push'](_0x3a9df9['shift']());}};_0x32cbf7(++_0x57ca23);}(_0x6e1c,0x13b));var _0xc6e1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e1c[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require(_0xc6e1('0x0'));var BPromise=require(_0xc6e1('0x1'));var rs=require(_0xc6e1('0x2'));var AWS=require(_0xc6e1('0x3'));function pollyResult(_0x53a08d,_0x3c0332,_0x180cec){return new BPromise(function(_0x43799b,_0x393c33){_0x53a08d['synthesizeSpeech'](_0x3c0332,function(_0x11de0f,_0x7e6a22){if(_0x11de0f){_0x393c33(_0x11de0f);}else if(_0x7e6a22){if(_0x7e6a22[_0xc6e1('0x4')]instanceof Buffer){fs[_0xc6e1('0x5')](_0x180cec,_0x7e6a22[_0xc6e1('0x4')],function(_0x3036f6){if(_0x3036f6){_0x393c33(_0x3036f6);}else{_0x43799b();}});}else{_0x393c33(new Error(_0xc6e1('0x6')));}}else{_0x393c33(new Error(_0xc6e1('0x7')));}});});}module['exports']=function(_0x589f42,_0x5bcea8,_0x1817b9,_0x20671e,_0x5e4d24,_0xf395fd,_0x1e5e9a){var _0x425b9c=new AWS[(_0xc6e1('0x8'))]({'accessKeyId':_0x589f42,'secretAccessKey':_0x5bcea8,'region':_0x1817b9});var _0x23df23={'Text':_0x5e4d24,'TextType':_0xf395fd||_0xc6e1('0x9'),'OutputFormat':'mp3','VoiceId':_0x20671e};return pollyResult(_0x425b9c,_0x23df23,_0x1e5e9a);};
\ No newline at end of file
index 19433d7..0862886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ca2=['exports'];(function(_0x16fc81,_0x256044){var _0x4d7fce=function(_0x45dc21){while(--_0x45dc21){_0x16fc81['push'](_0x16fc81['shift']());}};_0x4d7fce(++_0x256044);}(_0x0ca2,0x185));var _0x20ca=function(_0x33f6a9,_0x5e195c){_0x33f6a9=_0x33f6a9-0x0;var _0x36df01=_0x0ca2[_0x33f6a9];return _0x36df01;};'use strict';var asr=require('./lib/api');module[_0x20ca('0x0')]=function(_0x577a26,_0x29d9d8,_0x30b114,_0x276134){return asr(_0x577a26,_0x29d9d8,_0x30b114);};
\ No newline at end of file
+var _0x62b4=['exports'];(function(_0x2c91a5,_0x891053){var _0x51180f=function(_0x42fcea){while(--_0x42fcea){_0x2c91a5['push'](_0x2c91a5['shift']());}};_0x51180f(++_0x891053);}(_0x62b4,0x1e5));var _0x462b=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x62b4[_0x3ce3c];return _0x55a2c9;};'use strict';var asr=require('./lib/api');module[_0x462b('0x0')]=function(_0x913582,_0x170dca,_0x268348,_0x28c702){return asr(_0x913582,_0x170dca,_0x268348);};
\ No newline at end of file
index 1a21968..f47ff30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fc=['string','length','filepath\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','8000','url','bluebird','https://speech.googleapis.com'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x68fc,0xa5));var _0xc68f=function(_0x5d4729,_0x3a579a){_0x5d4729=_0x5d4729-0x0;var _0x470c20=_0x68fc[_0x5d4729];return _0x470c20;};'use strict';var url=require(_0xc68f('0x0'));var BPromise=require(_0xc68f('0x1'));var fs=require('fs');var host=_0xc68f('0x2');module['exports']=function(_0x49aa95,_0x26513f,_0x506fb5){return new BPromise(function(_0xe70787,_0x593648){var _0x5899ea;if(typeof _0x49aa95!==_0xc68f('0x3')||_0x49aa95[_0xc68f('0x4')]===0x0){return _0x593648(_0xc68f('0x5'));}if(typeof _0x26513f!==_0xc68f('0x3')||_0x26513f['length']===0x0){return _0x593648('key\x20should\x20be\x20a\x20string');}if(typeof _0x506fb5!==_0xc68f('0x6')&&(typeof _0x506fb5!==_0xc68f('0x3')||_0x506fb5[_0xc68f('0x4')]===0x0)){return _0x593648(_0xc68f('0x7'));}try{_0x5899ea=fs[_0xc68f('0x8')](_0x49aa95)[_0xc68f('0x9')](_0xc68f('0xa'));}catch(_0x3bd373){return _0x593648(_0x3bd373);}return _0xe70787({'method':_0xc68f('0xb'),'uri':host+_0xc68f('0xc')+_0x26513f,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0xc68f('0xd'),'languageCode':_0x506fb5},'audio':{'content':_0x5899ea}},'json':!![]});});};
\ No newline at end of file
+var _0x6f0d=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','undefined','readFileSync','toString','base64','POST','LINEAR16','8000'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x22d4b8,_0x12a78c){_0x22d4b8=_0x22d4b8-0x0;var _0x2d4848=_0x6f0d[_0x22d4b8];return _0x2d4848;};'use strict';var url=require('url');var BPromise=require(_0xd6f0('0x0'));var fs=require('fs');var host=_0xd6f0('0x1');module[_0xd6f0('0x2')]=function(_0x107a8c,_0x573473,_0x275230){return new BPromise(function(_0x135a93,_0x2f78fb){var _0x25344b;if(typeof _0x107a8c!==_0xd6f0('0x3')||_0x107a8c['length']===0x0){return _0x2f78fb(_0xd6f0('0x4'));}if(typeof _0x573473!=='string'||_0x573473[_0xd6f0('0x5')]===0x0){return _0x2f78fb(_0xd6f0('0x6'));}if(typeof _0x275230!==_0xd6f0('0x7')&&(typeof _0x275230!==_0xd6f0('0x3')||_0x275230['length']===0x0)){return _0x2f78fb('lang\x20should\x20be\x20a\x20string');}try{_0x25344b=fs[_0xd6f0('0x8')](_0x107a8c)[_0xd6f0('0x9')](_0xd6f0('0xa'));}catch(_0x382a2e){return _0x2f78fb(_0x382a2e);}return _0x135a93({'method':_0xd6f0('0xb'),'uri':host+'/v1/speech:recognize?key='+_0x573473,'body':{'config':{'encoding':_0xd6f0('0xc'),'sampleRateHertz':_0xd6f0('0xd'),'languageCode':_0x275230},'audio':{'content':_0x25344b}},'json':!![]});});};
\ No newline at end of file
index cab1ed9..595508b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71b7=['./asr','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x71b7,0x106));var _0x771b=function(_0x25a0b9,_0x86e28f){_0x25a0b9=_0x25a0b9-0x0;var _0x30b9ab=_0x71b7[_0x25a0b9];return _0x30b9ab;};var asr=require(_0x771b('0x0'));module[_0x771b('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xa812=['exports','./asr'];(function(_0x17f891,_0x34c577){var _0x5bf2d4=function(_0x208a07){while(--_0x208a07){_0x17f891['push'](_0x17f891['shift']());}};_0x5bf2d4(++_0x34c577);}(_0xa812,0x1cb));var _0x2a81=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa812[_0x46698a];return _0x356db0;};var asr=require(_0x2a81('0x0'));module[_0x2a81('0x1')]={'asr':asr};
\ No newline at end of file
index 5d5bfcd..4bee957 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd5=['detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','ispeechTTS','%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','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','agi','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','info','finish\x20download\x20file','close','error','unlink','download\x20error','pipe','statusMessage','end','wav','finish\x20to\x20convert','start','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','base64','https://texttospeech.googleapis.com/v1/','?key=','voice','audioConfig','text:synthesize','POST','resolve','tmp','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','data','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','name','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','status','code','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdcd5,0xac));var _0x5dcd=function(_0x277fa3,_0x3b2dde){_0x277fa3=_0x277fa3-0x0;var _0x2e4520=_0xdcd5[_0x277fa3];return _0x2e4520;};'use strict';var apiai=require(_0x5dcd('0x0'));var BPromise=require(_0x5dcd('0x1'));var dialogflow=require(_0x5dcd('0x2'));var fs=require('fs');var http=require(_0x5dcd('0x3'));var https=require(_0x5dcd('0x4'));var md5=require(_0x5dcd('0x5'));var path=require(_0x5dcd('0x6'));var querystring=require(_0x5dcd('0x7'));var rp=require(_0x5dcd('0x8'));var rs=require(_0x5dcd('0x9'));var sox=require(_0x5dcd('0xa'));var tts=require(_0x5dcd('0xb'));var urlParse=require(_0x5dcd('0xc'))[_0x5dcd('0xd')];var util=require(_0x5dcd('0xe'));var aws=require(_0x5dcd('0xf'));var google=require(_0x5dcd('0x10'));var sestek=require(_0x5dcd('0x11'));var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x5dcd('0x12'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x288814,_0x483c22){return new BPromise(function(_0x3007f8,_0x3303b3){var _0x1db69a=urlParse(_0x288814);var _0xed9f4d=_0x1db69a[_0x5dcd('0x13')]===_0x5dcd('0x14')?https:http;var _0xb7072c={'host':_0x1db69a[_0x5dcd('0x15')],'path':_0x1db69a[_0x5dcd('0x6')],'headers':{'user-agent':_0x5dcd('0x16')}};_0xed9f4d[_0x5dcd('0x17')](_0xb7072c,function(_0x17f053){if(_0x17f053[_0x5dcd('0x18')]!==0xc8){logger['error'](_0x5dcd('0x19')+_0x288814+_0x5dcd('0x1a')+_0x17f053['statusCode']+'\x20('+_0x17f053['statusMessage']+')');_0x3303b3(new Error('request\x20to\x20'+_0x288814+'\x20failed,\x20status\x20code\x20=\x20'+_0x17f053[_0x5dcd('0x18')]+'\x20('+_0x17f053['statusMessage']+')'));return;}var _0x13e51d=fs['createWriteStream'](_0x483c22);_0x13e51d['on']('finish',function(){logger[_0x5dcd('0x1b')](_0x5dcd('0x1c'));_0x13e51d[_0x5dcd('0x1d')](_0x3007f8);});_0x13e51d['on'](_0x5dcd('0x1e'),function(_0x53fd3a){fs[_0x5dcd('0x1f')](_0x483c22);logger[_0x5dcd('0x1e')](_0x5dcd('0x20'),_0x53fd3a);_0x3303b3(_0x53fd3a);});_0x17f053[_0x5dcd('0x21')](_0x13e51d);})['on']('error',function(_0x4b3e41){logger[_0x5dcd('0x1e')](_0x4b3e41);_0x3303b3(_0x4b3e41);})['end']();});}function uploadFile(_0x154964){return new BPromise(function(_0x29a122,_0x38121e){var _0x1e6c4b=urlParse(_0x154964);var _0x1eb8f7=_0x1e6c4b[_0x5dcd('0x13')]===_0x5dcd('0x14')?https:http;var _0x33bce8={'host':_0x1e6c4b[_0x5dcd('0x15')],'path':_0x1e6c4b['path'],'headers':{'user-agent':_0x5dcd('0x16')}};_0x1eb8f7[_0x5dcd('0x17')](_0x33bce8,function(_0xce5a53){if(_0xce5a53[_0x5dcd('0x18')]!==0xc8){_0x38121e(new Error('request\x20to\x20'+_0x154964+_0x5dcd('0x1a')+_0xce5a53['statusCode']+'\x20('+_0xce5a53[_0x5dcd('0x22')]+')'));return;}var _0x3d2ddc='';_0xce5a53['on']('data',function(_0x243260){_0x3d2ddc+=_0x243260;});_0xce5a53['on'](_0x5dcd('0x23'),function(){_0x29a122(_0x3d2ddc);});})['on'](_0x5dcd('0x1e'),function(_0x29150f){_0x38121e(_0x29150f);})[_0x5dcd('0x23')]();});}function convertFile(_0x2213f1,_0x576d25){return new BPromise(function(_0x35ebf4,_0x343e4a){var _0x33d6f6=sox['transcode'](_0x2213f1,_0x576d25,{'sampleRate':0x1f40,'format':_0x5dcd('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x33d6f6['on']('error',function(_0x550e62){logger[_0x5dcd('0x1e')]('error\x20convert',_0x550e62);_0x343e4a(_0x550e62);});_0x33d6f6['on'](_0x5dcd('0x23'),function(){logger[_0x5dcd('0x1b')](_0x5dcd('0x25'));_0x35ebf4();});_0x33d6f6[_0x5dcd('0x26')]();});}function base64Decode(_0x20c191,_0x1272b1){var _0x4ed739=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x5dcd('0x27'));fs[_0x5dcd('0x28')](_0x4ed739,_0x20c191,'base64');return convertFile(_0x4ed739,_0x1272b1)[_0x5dcd('0x29')](function(){try{fs[_0x5dcd('0x1f')](_0x4ed739);fs[_0x5dcd('0x2a')](_0x1272b1,_0x5dcd('0x2b'));}catch(_0x529c4e){logger[_0x5dcd('0x1e')](_0x529c4e);}return _0x1272b1[_0x5dcd('0x2c')]('.')[0x0];});}function base64Encode(_0x11348d){var _0x597ccb=fs[_0x5dcd('0x2d')](_0x11348d);return new Buffer(_0x597ccb)['toString'](_0x5dcd('0x2e'));}exports['googleCloudTTS']=function(_0x2d7137,_0x1494d8,_0x287b18,_0x4f9750,_0x52dfa3,_0x3fde73){var _0x27b67a,_0x48c2e0;var _0x261b04=_0x5dcd('0x2f');var _0x18b060=_0x5dcd('0x30')+_0x2d7137;var _0x34c232={};if(_0x1494d8==='ssml'){_0x34c232['input']={'ssml':_0x287b18};}else{_0x34c232['input']={'text':_0x287b18};};_0x34c232[_0x5dcd('0x31')]={'languageCode':_0x4f9750,'ssmlGender':_0x52dfa3};_0x34c232[_0x5dcd('0x32')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x24655c={'url':_0x261b04+_0x5dcd('0x33')+_0x18b060,'method':_0x5dcd('0x34'),'json':!![],'body':_0x34c232};return rp(_0x24655c)[_0x5dcd('0x29')](function(_0x97d050){return new BPromise(function(_0x457528,_0x2c0cdd){_0x27b67a=path[_0x5dcd('0x35')](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x38'));var _0x3bb254=Buffer[_0x5dcd('0x39')](_0x97d050[_0x5dcd('0x3a')],_0x5dcd('0x2e'));return fs[_0x5dcd('0x3b')](_0x27b67a,_0x3bb254,function(_0xa14e52){_0x2c0cdd(_0xa14e52);},function(_0x5a6622){fs[_0x5dcd('0x2a')](_0x27b67a,_0x5dcd('0x2b'));_0x457528(_0x5a6622);});});})[_0x5dcd('0x29')](function(_0x502d34){_0x48c2e0=path[_0x5dcd('0x35')](__dirname,'tmp',rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x27'));return convertFile(_0x27b67a,_0x48c2e0);})[_0x5dcd('0x29')](function(){try{fs['unlink'](_0x27b67a);fs[_0x5dcd('0x2a')](_0x48c2e0,'777');}catch(_0x38c9d8){logger[_0x5dcd('0x1e')](_0x38c9d8);}logger['info'](_0x5dcd('0x3c'),_0x48c2e0[_0x5dcd('0x2c')]('.')[0x0]);return _0x48c2e0[_0x5dcd('0x2c')]('.')[0x0];});};exports[_0x5dcd('0x3d')]=function(_0x34db06,_0x394170){var _0x4035b9=_0x5dcd('0x3e');var _0x1c6e07,_0x51b44f;var _0xe5a496;var _0x6ad71f={'encoding':_0x5dcd('0x3f'),'method':_0x5dcd('0x34'),'timeout':0x2710,'url':_0x4035b9,'headers':{'Content-Type':_0x5dcd('0x40')},'body':'f.req='+encodeURIComponent(JSON[_0x5dcd('0x41')]([[[_0x5dcd('0x42'),JSON[_0x5dcd('0x41')]([_0x34db06,_0x394170||'en',![],_0x5dcd('0x43')]),null,_0x5dcd('0x44')]]]))};return rp(_0x6ad71f)['then'](function(_0x47c8e){try{_0xe5a496=eval(_0x47c8e['slice'](0x5))[0x0][0x2];}catch(_0x1e9bc1){throw new Error(_0x5dcd('0x45')+_0x47c8e[_0x5dcd('0x46')]);}if(!_0xe5a496){if(_0x34db06['length']>0xc8){throw new Error(_0x5dcd('0x47'));}else{throw new Error(_0x5dcd('0x48')+_0x394170+_0x5dcd('0x49'));}}try{_0xe5a496=eval(_0xe5a496)[0x0];}catch(_0xe19901){throw new Error(_0x5dcd('0x45')+res[_0x5dcd('0x46')]);}const _0x374d57=_0xe5a496;_0x1c6e07=path['resolve'](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x38'));fs[_0x5dcd('0x28')](_0x1c6e07,_0xe5a496,{'encoding':_0x5dcd('0x2e')});_0x51b44f=path[_0x5dcd('0x35')](__dirname,'tmp',rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x27'));return convertFile(_0x1c6e07,_0x51b44f);})[_0x5dcd('0x29')](function(){try{fs[_0x5dcd('0x1f')](_0x1c6e07);fs[_0x5dcd('0x2a')](_0x51b44f,_0x5dcd('0x2b'));}catch(_0x38d50a){logger[_0x5dcd('0x1e')](_0x38d50a);}logger[_0x5dcd('0x1b')](_0x5dcd('0x4a'),_0x51b44f[_0x5dcd('0x2c')]('.')[0x0]);return _0x51b44f[_0x5dcd('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x22532a,_0x4f8d54,_0x297dc5){return google['asr'](_0x22532a,_0x4f8d54,_0x297dc5)[_0x5dcd('0x29')](function(_0x1d6c5d){logger[_0x5dcd('0x1b')](_0x1d6c5d[_0x5dcd('0x4b')]);return rp(_0x1d6c5d);})['then'](function(_0x39ce16){var _0x152927='';var _0x619962=0x0;try{fs['unlink'](_0x22532a);}catch(_0x5dbf9f){logger[_0x5dcd('0x1e')](_0x5dbf9f);}if(_0x39ce16&&_0x39ce16[_0x5dcd('0x4c')]){_0x152927=_0x39ce16[_0x5dcd('0x4c')][_0x5dcd('0x4d')](function(_0x30de09){return _0x30de09&&_0x30de09[_0x5dcd('0x4e')][0x0]&&_0x30de09[_0x5dcd('0x4e')][0x0][_0x5dcd('0x4f')]?_0x30de09[_0x5dcd('0x4e')][0x0][_0x5dcd('0x4f')]:'';})[_0x5dcd('0x50')]('\x0a');_0x619962=_0x39ce16[_0x5dcd('0x4c')][_0x5dcd('0x4d')](function(_0x467f2b){return _0x467f2b&&_0x467f2b[_0x5dcd('0x4e')][0x0]&&_0x467f2b[_0x5dcd('0x4e')][0x0]['confidence']?_0x467f2b['alternatives'][0x0][_0x5dcd('0x51')]:0x0;})[_0x5dcd('0x50')]('\x0a');}logger[_0x5dcd('0x1b')](_0x5dcd('0x52'),_0x152927);logger[_0x5dcd('0x1b')](_0x5dcd('0x53'),_0x619962);return{'transcript':_0x152927,'confidence':_0x619962};})['catch'](function(_0x3c9493){logger[_0x5dcd('0x1e')]('[%s]\x20%s:%s',_0x3c9493['statusCode'],_0x3c9493[_0x5dcd('0x54')],_0x3c9493[_0x5dcd('0x55')]);});};exports[_0x5dcd('0x56')]=function(_0x30667b,_0x1784c4,_0x8e97b8,_0x24b3dd){var _0x4608f9=apiai(_0x1784c4,{'language':_0x24b3dd||'en'});return _0x4608f9[_0x5dcd('0x57')](_0x8e97b8,{'sessionId':md5(_0x30667b)})[_0x5dcd('0x29')](function(_0xe696e){logger['info'](JSON[_0x5dcd('0x41')](_0xe696e));return{'source':_0xe696e[_0x5dcd('0x58')]['source'],'resolvedQuery':_0xe696e[_0x5dcd('0x58')]['resolvedQuery'],'action':_0xe696e[_0x5dcd('0x58')][_0x5dcd('0x59')],'actionIncomplete':_0xe696e[_0x5dcd('0x58')][_0x5dcd('0x5a')],'speech':_0xe696e['result'][_0x5dcd('0x5b')]['speech'],'score':_0xe696e[_0x5dcd('0x58')]['score'],'statusCode':_0xe696e[_0x5dcd('0x5c')][_0x5dcd('0x5d')],'endConversation':_0xe696e[_0x5dcd('0x58')]['metadata'][_0x5dcd('0x5e')]||![],'isFallbackIntent':_0xe696e[_0x5dcd('0x58')]['metadata'][_0x5dcd('0x5f')]};});};exports[_0x5dcd('0x60')]=function(_0x12698f,_0x5ca32f,_0x2880d2,_0x48a193,_0x1eb983,_0x160552){var _0x12602a=_0x48a193[_0x5dcd('0x61')](/\\n/g,'\x0a');var _0x485216={'credentials':{'private_key':_0x12602a,'client_email':_0x2880d2}};var _0x3f40ca=new dialogflow[(_0x5dcd('0x62'))](_0x485216);var _0x274eed=_0x3f40ca[_0x5dcd('0x63')](_0x5ca32f,md5(_0x12698f));var _0x29e458={'session':_0x274eed,'queryInput':{'text':{'text':_0x1eb983,'languageCode':_0x160552}}};return _0x3f40ca[_0x5dcd('0x64')](_0x29e458)[_0x5dcd('0x29')](function(_0x4ab98e){if(_0x4ab98e&&_0x4ab98e[_0x5dcd('0x65')]){logger[_0x5dcd('0x1b')](_0x5dcd('0x66'),JSON[_0x5dcd('0x41')](_0x4ab98e));var _0x79dae=_0x4ab98e[0x0];if(_0x79dae){var _0x3501fd={'action':_0x79dae['queryResult']['action'],'allRequiredParamsPresent':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x68')],'endConversation':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x69')]&&_0x79dae[_0x5dcd('0x67')]['diagnosticInfo'][_0x5dcd('0x6a')]?_0x79dae['queryResult'][_0x5dcd('0x69')][_0x5dcd('0x6a')]['end_conversation'][_0x5dcd('0x6b')]:![],'fulfillmentText':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x6c')],'intentName':_0x79dae['queryResult'][_0x5dcd('0x6d')][_0x5dcd('0x54')],'intentDisplayName':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x6d')]['displayName'],'isFallbackIntent':_0x79dae['queryResult'][_0x5dcd('0x6d')][_0x5dcd('0x6e')],'languageCode':_0x79dae['queryResult'][_0x5dcd('0x6f')],'queryText':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x70')],'responseId':_0x79dae[_0x5dcd('0x71')],'score':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x72')],'speech':_0x79dae[_0x5dcd('0x67')][_0x5dcd('0x6c')],'providerResponse':JSON[_0x5dcd('0x41')](_0x4ab98e)};return _0x3501fd;}}});};exports['tildeASR']=function(_0x467336,_0x241f0f,_0xac9450,_0x4f20e0){return tilde[_0x5dcd('0x73')](_0x467336,_0x241f0f,_0xac9450,_0x4f20e0)[_0x5dcd('0x29')](function(_0x43a674){try{fs[_0x5dcd('0x1f')](_0x467336);}catch(_0x246565){logger['error'](_0x246565);}logger['info'](_0x5dcd('0x74'),_0x43a674[_0x5dcd('0x4f')]);logger['info'](_0x5dcd('0x75'),_0x43a674[_0x5dcd('0x51')]);return _0x43a674;});};exports[_0x5dcd('0x76')]=function(_0x41697b,_0x24e468,_0x3c61d6,_0x338b7c,_0x15002b,_0x5aedbb){var _0x4749ee=path[_0x5dcd('0x35')](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x38'));var _0x5eb536;return aws[_0x5dcd('0x77')](_0x41697b,_0x24e468,_0x3c61d6,_0x338b7c,_0x15002b,_0x5aedbb,_0x4749ee)['then'](function(){_0x5eb536=path[_0x5dcd('0x35')](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x27'));return convertFile(_0x4749ee,_0x5eb536);})[_0x5dcd('0x29')](function(){try{fs[_0x5dcd('0x1f')](_0x4749ee);fs[_0x5dcd('0x2a')](_0x5eb536,_0x5dcd('0x2b'));}catch(_0x4e3342){logger[_0x5dcd('0x1e')](_0x4e3342);}return _0x5eb536[_0x5dcd('0x2c')]('.')[0x0];});};exports['awsLex']=function(_0x35922d,_0x213239,_0x4cf57c,_0x3f9b43,_0x10c138,_0x405441){return aws['lex'](_0x35922d,_0x213239,_0x4cf57c,_0x3f9b43,_0x10c138,_0x405441)['then'](function(_0x204d05){logger[_0x5dcd('0x1b')](JSON[_0x5dcd('0x41')](_0x204d05));return _0x204d05;});};exports[_0x5dcd('0x78')]=function(_0x293410,_0xe24aeb,_0x2bb9e2,_0x3ae831){var _0x2cba6a=util['format'](_0x5dcd('0x79'),ISPEECH_API,_0x293410,encodeURIComponent(_0xe24aeb),_0x2bb9e2,_0x3ae831);var _0x56a6e1=path[_0x5dcd('0x35')](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x38'));var _0x2835e6;return downloadFile(_0x2cba6a,_0x56a6e1)[_0x5dcd('0x29')](function(){_0x2835e6=path[_0x5dcd('0x35')](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x27'));return convertFile(_0x56a6e1,_0x2835e6);})[_0x5dcd('0x29')](function(){try{fs['unlink'](_0x56a6e1);fs[_0x5dcd('0x2a')](_0x2835e6,_0x5dcd('0x2b'));}catch(_0x4d39a5){logger['error'](_0x4d39a5);}return _0x2835e6[_0x5dcd('0x2c')]('.')[0x0];});};exports[_0x5dcd('0x7a')]=function(_0x53c0df,_0x29b299,_0x2eced4,_0x29a4de){var _0x1a0f42=util['format'](_0x5dcd('0x7b'),ISPEECH_API,_0x29b299,_0x2eced4,base64Encode(_0x53c0df),_0x29a4de?util[_0x5dcd('0x7c')](_0x5dcd('0x7d'),encodeURIComponent(_0x29a4de)):_0x5dcd('0x7e'));return uploadFile(_0x1a0f42)[_0x5dcd('0x29')](function(_0x3b2288){return querystring[_0x5dcd('0xd')](_0x3b2288);});};exports[_0x5dcd('0x7f')]=function(_0x53a18c,_0x1b86b3){return sestek[_0x5dcd('0x80')](_0x53a18c,_0x1b86b3)['then'](function(_0x3d1bc2){logger['info'](JSON[_0x5dcd('0x41')](_0x3d1bc2));var _0x380e08={'speech':_0x3d1bc2[_0x5dcd('0x81')],'action':_0x3d1bc2['channelData']?_0x3d1bc2[_0x5dcd('0x82')][_0x5dcd('0x83')]:undefined,'actiondata':_0x3d1bc2[_0x5dcd('0x82')]?_0x3d1bc2['channelData']['CustomActionData']:undefined};if(_0x3d1bc2[_0x5dcd('0x82')]&&_0x3d1bc2['channelData']['AudioFromTts']){return base64Decode(_0x3d1bc2[_0x5dcd('0x82')][_0x5dcd('0x84')][_0x5dcd('0x85')],path['resolve'](__dirname,_0x5dcd('0x36'),rs[_0x5dcd('0x37')](0x4)+_0x5dcd('0x27')))[_0x5dcd('0x29')](function(_0x403803){_0x380e08[_0x5dcd('0x86')]=_0x403803;return _0x380e08;});}return _0x380e08;});};exports[_0x5dcd('0x87')]=function(){return __dirname;};
\ No newline at end of file
+var _0x3f17=['googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','MP3','text:synthesize','resolve','.mp3','from','writeFile','777','.wav','unlink','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','apiai-promise','bluebird','dialogflow','http','https','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','get','request\x20to\x20','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','info','close','error','download\x20error','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','tmp','generate','writeFileSync','base64','then','chmodSync','split'];(function(_0x3348ea,_0x18648b){var _0x54b807=function(_0x1f7a7e){while(--_0x1f7a7e){_0x3348ea['push'](_0x3348ea['shift']());}};_0x54b807(++_0x18648b);}(_0x3f17,0x1e1));var _0x73f1=function(_0xafc7bc,_0x40eff4){_0xafc7bc=_0xafc7bc-0x0;var _0x59c18e=_0x3f17[_0xafc7bc];return _0x59c18e;};'use strict';var apiai=require(_0x73f1('0x0'));var BPromise=require(_0x73f1('0x1'));var dialogflow=require(_0x73f1('0x2'));var fs=require('fs');var http=require(_0x73f1('0x3'));var https=require(_0x73f1('0x4'));var md5=require('md5');var path=require('path');var querystring=require(_0x73f1('0x5'));var rp=require(_0x73f1('0x6'));var rs=require(_0x73f1('0x7'));var sox=require('sox');var tts=require(_0x73f1('0x8'));var urlParse=require(_0x73f1('0x9'))[_0x73f1('0xa')];var util=require(_0x73f1('0xb'));var aws=require(_0x73f1('0xc'));var google=require(_0x73f1('0xd'));var sestek=require(_0x73f1('0xe'));var tilde=require(_0x73f1('0xf'));var logger=require(_0x73f1('0x10'))(_0x73f1('0x11'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x5370d7,_0x5883a7){return new BPromise(function(_0x32780a,_0x8da94b){var _0x59d40b=urlParse(_0x5370d7);var _0x3902cb=_0x59d40b[_0x73f1('0x12')]===_0x73f1('0x13')?https:http;var _0x2b1333={'host':_0x59d40b[_0x73f1('0x14')],'path':_0x59d40b[_0x73f1('0x15')],'headers':{'user-agent':_0x73f1('0x16')}};_0x3902cb[_0x73f1('0x17')](_0x2b1333,function(_0x3203a5){if(_0x3203a5['statusCode']!==0xc8){logger['error'](_0x73f1('0x18')+_0x5370d7+'\x20failed,\x20status\x20code\x20=\x20'+_0x3203a5[_0x73f1('0x19')]+'\x20('+_0x3203a5[_0x73f1('0x1a')]+')');_0x8da94b(new Error(_0x73f1('0x18')+_0x5370d7+_0x73f1('0x1b')+_0x3203a5[_0x73f1('0x19')]+'\x20('+_0x3203a5[_0x73f1('0x1a')]+')'));return;}var _0x2502bb=fs[_0x73f1('0x1c')](_0x5883a7);_0x2502bb['on']('finish',function(){logger[_0x73f1('0x1d')]('finish\x20download\x20file');_0x2502bb[_0x73f1('0x1e')](_0x32780a);});_0x2502bb['on'](_0x73f1('0x1f'),function(_0x242a7a){fs['unlink'](_0x5883a7);logger['error'](_0x73f1('0x20'),_0x242a7a);_0x8da94b(_0x242a7a);});_0x3203a5['pipe'](_0x2502bb);})['on'](_0x73f1('0x1f'),function(_0x417bc8){logger['error'](_0x417bc8);_0x8da94b(_0x417bc8);})['end']();});}function uploadFile(_0x562405){return new BPromise(function(_0x3603a3,_0x196b36){var _0x409444=urlParse(_0x562405);var _0x3a7789=_0x409444[_0x73f1('0x12')]===_0x73f1('0x13')?https:http;var _0x212d1b={'host':_0x409444[_0x73f1('0x14')],'path':_0x409444['path'],'headers':{'user-agent':_0x73f1('0x16')}};_0x3a7789[_0x73f1('0x17')](_0x212d1b,function(_0x1aa9df){if(_0x1aa9df[_0x73f1('0x19')]!==0xc8){_0x196b36(new Error(_0x73f1('0x18')+_0x562405+_0x73f1('0x1b')+_0x1aa9df[_0x73f1('0x19')]+'\x20('+_0x1aa9df[_0x73f1('0x1a')]+')'));return;}var _0x55b3db='';_0x1aa9df['on'](_0x73f1('0x21'),function(_0x406659){_0x55b3db+=_0x406659;});_0x1aa9df['on'](_0x73f1('0x22'),function(){_0x3603a3(_0x55b3db);});})['on'](_0x73f1('0x1f'),function(_0x3b9d07){_0x196b36(_0x3b9d07);})[_0x73f1('0x22')]();});}function convertFile(_0x41aa0a,_0x1dc385){return new BPromise(function(_0x60a2e2,_0x44f286){var _0x394737=sox[_0x73f1('0x23')](_0x41aa0a,_0x1dc385,{'sampleRate':0x1f40,'format':_0x73f1('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x394737['on'](_0x73f1('0x1f'),function(_0x220071){logger[_0x73f1('0x1f')](_0x73f1('0x25'),_0x220071);_0x44f286(_0x220071);});_0x394737['on'](_0x73f1('0x22'),function(){logger['info'](_0x73f1('0x26'));_0x60a2e2();});_0x394737[_0x73f1('0x27')]();});}function base64Decode(_0x14206c,_0x27dd31){var _0x44668b=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+'.wav');fs[_0x73f1('0x2a')](_0x44668b,_0x14206c,_0x73f1('0x2b'));return convertFile(_0x44668b,_0x27dd31)[_0x73f1('0x2c')](function(){try{fs['unlink'](_0x44668b);fs[_0x73f1('0x2d')](_0x27dd31,'777');}catch(_0x125b08){logger[_0x73f1('0x1f')](_0x125b08);}return _0x27dd31[_0x73f1('0x2e')]('.')[0x0];});}function base64Encode(_0x4bbccc){var _0x3ee24c=fs['readFileSync'](_0x4bbccc);return new Buffer(_0x3ee24c)['toString']('base64');}exports[_0x73f1('0x2f')]=function(_0x4ca835,_0x20b392,_0x4d26ea,_0x5496a7,_0x5832b1,_0xaf39c7){var _0xd57595,_0x5b30a5;var _0x59e30d=_0x73f1('0x30');var _0xa5f55='?key='+_0x4ca835;var _0xa5c3e6={};if(_0x20b392===_0x73f1('0x31')){_0xa5c3e6[_0x73f1('0x32')]={'ssml':_0x4d26ea};}else{_0xa5c3e6[_0x73f1('0x32')]={'text':_0x4d26ea};};_0xa5c3e6[_0x73f1('0x33')]={'languageCode':_0x5496a7,'ssmlGender':_0x5832b1};_0xa5c3e6['audioConfig']={'audioEncoding':_0x73f1('0x34'),'sampleRateHertz':0x1f40};var _0x5547f1={'url':_0x59e30d+_0x73f1('0x35')+_0xa5f55,'method':'POST','json':!![],'body':_0xa5c3e6};return rp(_0x5547f1)[_0x73f1('0x2c')](function(_0x5da5fb){return new BPromise(function(_0x1e80ba,_0x50c4cd){_0xd57595=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x8702d7=Buffer[_0x73f1('0x38')](_0x5da5fb['audioContent'],_0x73f1('0x2b'));return fs[_0x73f1('0x39')](_0xd57595,_0x8702d7,function(_0x559915){_0x50c4cd(_0x559915);},function(_0x542a95){fs['chmodSync'](_0xd57595,_0x73f1('0x3a'));_0x1e80ba(_0x542a95);});});})['then'](function(_0x32524b){_0x5b30a5=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0xd57595,_0x5b30a5);})[_0x73f1('0x2c')](function(){try{fs[_0x73f1('0x3c')](_0xd57595);fs[_0x73f1('0x2d')](_0x5b30a5,_0x73f1('0x3a'));}catch(_0x253d84){logger[_0x73f1('0x1f')](_0x253d84);}logger[_0x73f1('0x1d')](_0x73f1('0x3d'),_0x5b30a5[_0x73f1('0x2e')]('.')[0x0]);return _0x5b30a5[_0x73f1('0x2e')]('.')[0x0];});};exports[_0x73f1('0x3e')]=function(_0x3ec9e8,_0x5a3282){var _0x433c6c=_0x73f1('0x3f');var _0x4f4fff,_0x2372f0;var _0x56bd94;var _0x50c2dd={'encoding':'utf8','method':_0x73f1('0x40'),'timeout':0x2710,'url':_0x433c6c,'headers':{'Content-Type':_0x73f1('0x41')},'body':_0x73f1('0x42')+encodeURIComponent(JSON[_0x73f1('0x43')]([[[_0x73f1('0x44'),JSON[_0x73f1('0x43')]([_0x3ec9e8,_0x5a3282||'en',![],'null']),null,_0x73f1('0x45')]]]))};return rp(_0x50c2dd)['then'](function(_0x51e20a){try{_0x56bd94=eval(_0x51e20a[_0x73f1('0x46')](0x5))[0x0][0x2];}catch(_0x45f1c1){throw new Error(_0x73f1('0x47')+_0x51e20a[_0x73f1('0x21')]);}if(!_0x56bd94){if(_0x3ec9e8[_0x73f1('0x48')]>0xc8){throw new Error(_0x73f1('0x49'));}else{throw new Error(_0x73f1('0x4a')+_0x5a3282+_0x73f1('0x4b'));}}try{_0x56bd94=eval(_0x56bd94)[0x0];}catch(_0x27a5e8){throw new Error(_0x73f1('0x47')+res[_0x73f1('0x21')]);}const _0x4bf68b=_0x56bd94;_0x4f4fff=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));fs['writeFileSync'](_0x4f4fff,_0x56bd94,{'encoding':_0x73f1('0x2b')});_0x2372f0=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4f4fff,_0x2372f0);})[_0x73f1('0x2c')](function(){try{fs['unlink'](_0x4f4fff);fs['chmodSync'](_0x2372f0,_0x73f1('0x3a'));}catch(_0x2f98ce){logger[_0x73f1('0x1f')](_0x2f98ce);}logger[_0x73f1('0x1d')]('goggleTTS\x20path',_0x2372f0[_0x73f1('0x2e')]('.')[0x0]);return _0x2372f0[_0x73f1('0x2e')]('.')[0x0];});};exports['googleASR']=function(_0x58d42f,_0x42d593,_0x4d3475){return google[_0x73f1('0x4c')](_0x58d42f,_0x42d593,_0x4d3475)[_0x73f1('0x2c')](function(_0x59c10d){logger[_0x73f1('0x1d')](_0x59c10d[_0x73f1('0x4d')]);return rp(_0x59c10d);})['then'](function(_0x53ec3e){var _0x13feec='';var _0x3b45ed=0x0;try{fs['unlink'](_0x58d42f);}catch(_0x4fbf0d){logger[_0x73f1('0x1f')](_0x4fbf0d);}if(_0x53ec3e&&_0x53ec3e[_0x73f1('0x4e')]){_0x13feec=_0x53ec3e[_0x73f1('0x4e')][_0x73f1('0x4f')](function(_0x13b0e1){return _0x13b0e1&&_0x13b0e1[_0x73f1('0x50')][0x0]&&_0x13b0e1[_0x73f1('0x50')][0x0][_0x73f1('0x51')]?_0x13b0e1[_0x73f1('0x50')][0x0][_0x73f1('0x51')]:'';})[_0x73f1('0x52')]('\x0a');_0x3b45ed=_0x53ec3e['results']['map'](function(_0x397f8a){return _0x397f8a&&_0x397f8a['alternatives'][0x0]&&_0x397f8a[_0x73f1('0x50')][0x0][_0x73f1('0x53')]?_0x397f8a['alternatives'][0x0][_0x73f1('0x53')]:0x0;})['join']('\x0a');}logger[_0x73f1('0x1d')](_0x73f1('0x54'),_0x13feec);logger[_0x73f1('0x1d')](_0x73f1('0x55'),_0x3b45ed);return{'transcript':_0x13feec,'confidence':_0x3b45ed};})[_0x73f1('0x56')](function(_0x2c3497){logger[_0x73f1('0x1f')](_0x73f1('0x57'),_0x2c3497[_0x73f1('0x19')],_0x2c3497['name'],_0x2c3497[_0x73f1('0x58')]);});};exports[_0x73f1('0x59')]=function(_0xf1ad0d,_0x127e8f,_0x47560d,_0x3f3d71){var _0x294a7e=apiai(_0x127e8f,{'language':_0x3f3d71||'en'});return _0x294a7e[_0x73f1('0x5a')](_0x47560d,{'sessionId':md5(_0xf1ad0d)})['then'](function(_0x52669f){logger[_0x73f1('0x1d')](JSON[_0x73f1('0x43')](_0x52669f));return{'source':_0x52669f[_0x73f1('0x5b')]['source'],'resolvedQuery':_0x52669f[_0x73f1('0x5b')]['resolvedQuery'],'action':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5c')],'actionIncomplete':_0x52669f['result'][_0x73f1('0x5d')],'speech':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5e')]['speech'],'score':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x5f')],'statusCode':_0x52669f[_0x73f1('0x60')]['code'],'endConversation':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x61')][_0x73f1('0x62')]||![],'isFallbackIntent':_0x52669f[_0x73f1('0x5b')][_0x73f1('0x61')][_0x73f1('0x63')]};});};exports['googleDialogflowV2']=function(_0x1ee8c8,_0x100c45,_0x3fa04c,_0x5dc904,_0x1110e5,_0x543f4c){var _0x280701=_0x5dc904[_0x73f1('0x64')](/\\n/g,'\x0a');var _0x538a6b={'credentials':{'private_key':_0x280701,'client_email':_0x3fa04c}};var _0x165263=new dialogflow[(_0x73f1('0x65'))](_0x538a6b);var _0x58d616=_0x165263[_0x73f1('0x66')](_0x100c45,md5(_0x1ee8c8));var _0x3e7bb6={'session':_0x58d616,'queryInput':{'text':{'text':_0x1110e5,'languageCode':_0x543f4c}}};return _0x165263[_0x73f1('0x67')](_0x3e7bb6)[_0x73f1('0x2c')](function(_0x177627){if(_0x177627&&_0x177627['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x73f1('0x43')](_0x177627));var _0x13ae6f=_0x177627[0x0];if(_0x13ae6f){var _0x5e92b2={'action':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x5c')],'allRequiredParamsPresent':_0x13ae6f['queryResult'][_0x73f1('0x69')],'endConversation':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')]&&_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')]['fields']?_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6a')][_0x73f1('0x6b')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x13ae6f[_0x73f1('0x68')]['fulfillmentText'],'intentName':_0x13ae6f['queryResult'][_0x73f1('0x6c')]['name'],'intentDisplayName':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6c')][_0x73f1('0x6d')],'isFallbackIntent':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x6c')][_0x73f1('0x6e')],'languageCode':_0x13ae6f['queryResult'][_0x73f1('0x6f')],'queryText':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x70')],'responseId':_0x13ae6f[_0x73f1('0x71')],'score':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x72')],'speech':_0x13ae6f[_0x73f1('0x68')][_0x73f1('0x73')],'providerResponse':JSON[_0x73f1('0x43')](_0x177627)};return _0x5e92b2;}}});};exports['tildeASR']=function(_0x5506f7,_0x4f37ba,_0x2ee9c0,_0x2806dc){return tilde[_0x73f1('0x4c')](_0x5506f7,_0x4f37ba,_0x2ee9c0,_0x2806dc)[_0x73f1('0x2c')](function(_0x16c8b1){try{fs[_0x73f1('0x3c')](_0x5506f7);}catch(_0xc54452){logger[_0x73f1('0x1f')](_0xc54452);}logger[_0x73f1('0x1d')](_0x73f1('0x74'),_0x16c8b1[_0x73f1('0x51')]);logger['info'](_0x73f1('0x75'),_0x16c8b1[_0x73f1('0x53')]);return _0x16c8b1;});};exports[_0x73f1('0x76')]=function(_0xb0461c,_0x31ca32,_0xa73999,_0xd915cd,_0x8b8268,_0x50e060){var _0x4c2a94=path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x5ae913;return aws['polly'](_0xb0461c,_0x31ca32,_0xa73999,_0xd915cd,_0x8b8268,_0x50e060,_0x4c2a94)[_0x73f1('0x2c')](function(){_0x5ae913=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4c2a94,_0x5ae913);})[_0x73f1('0x2c')](function(){try{fs[_0x73f1('0x3c')](_0x4c2a94);fs[_0x73f1('0x2d')](_0x5ae913,_0x73f1('0x3a'));}catch(_0x1941de){logger[_0x73f1('0x1f')](_0x1941de);}return _0x5ae913['split']('.')[0x0];});};exports[_0x73f1('0x77')]=function(_0x5f08d1,_0x42cd88,_0x17d774,_0x5d606c,_0x581780,_0x408e41){return aws[_0x73f1('0x78')](_0x5f08d1,_0x42cd88,_0x17d774,_0x5d606c,_0x581780,_0x408e41)[_0x73f1('0x2c')](function(_0x46e841){logger[_0x73f1('0x1d')](JSON[_0x73f1('0x43')](_0x46e841));return _0x46e841;});};exports[_0x73f1('0x79')]=function(_0x34b6e1,_0x29b5cc,_0x3a44dd,_0x5c8fe9){var _0x452454=util[_0x73f1('0x7a')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x34b6e1,encodeURIComponent(_0x29b5cc),_0x3a44dd,_0x5c8fe9);var _0x4dedfd=path[_0x73f1('0x36')](__dirname,'tmp',rs[_0x73f1('0x29')](0x4)+_0x73f1('0x37'));var _0x1bf026;return downloadFile(_0x452454,_0x4dedfd)[_0x73f1('0x2c')](function(){_0x1bf026=path['resolve'](__dirname,_0x73f1('0x28'),rs[_0x73f1('0x29')](0x4)+_0x73f1('0x3b'));return convertFile(_0x4dedfd,_0x1bf026);})['then'](function(){try{fs[_0x73f1('0x3c')](_0x4dedfd);fs[_0x73f1('0x2d')](_0x1bf026,_0x73f1('0x3a'));}catch(_0x1293b5){logger[_0x73f1('0x1f')](_0x1293b5);}return _0x1bf026[_0x73f1('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x2371d3,_0x45685b,_0x43ca74,_0x1f5ff9){var _0x526546=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x45685b,_0x43ca74,base64Encode(_0x2371d3),_0x1f5ff9?util[_0x73f1('0x7a')](_0x73f1('0x7b'),encodeURIComponent(_0x1f5ff9)):_0x73f1('0x7c'));return uploadFile(_0x526546)[_0x73f1('0x2c')](function(_0x16a5e4){return querystring[_0x73f1('0xa')](_0x16a5e4);});};exports[_0x73f1('0x7d')]=function(_0x2eba89,_0x1d3649){return sestek[_0x73f1('0x7e')](_0x2eba89,_0x1d3649)[_0x73f1('0x2c')](function(_0x2fd6a6){logger[_0x73f1('0x1d')](JSON['stringify'](_0x2fd6a6));var _0x3c6949={'speech':_0x2fd6a6[_0x73f1('0x7f')],'action':_0x2fd6a6[_0x73f1('0x80')]?_0x2fd6a6[_0x73f1('0x80')]['CustomAction']:undefined,'actiondata':_0x2fd6a6[_0x73f1('0x80')]?_0x2fd6a6['channelData'][_0x73f1('0x81')]:undefined};if(_0x2fd6a6[_0x73f1('0x80')]&&_0x2fd6a6[_0x73f1('0x80')]['AudioFromTts']){return base64Decode(_0x2fd6a6[_0x73f1('0x80')][_0x73f1('0x82')][_0x73f1('0x83')],path[_0x73f1('0x36')](__dirname,_0x73f1('0x28'),rs['generate'](0x4)+_0x73f1('0x3b')))[_0x73f1('0x2c')](function(_0x45a0b3){_0x3c6949['audiofile']=_0x45a0b3;return _0x3c6949;});}return _0x3c6949;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index ff6c22f..445855a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb544=['exports','./nda'];(function(_0x4a7cbb,_0xa05639){var _0x410e6f=function(_0x19d2e5){while(--_0x19d2e5){_0x4a7cbb['push'](_0x4a7cbb['shift']());}};_0x410e6f(++_0xa05639);}(_0xb544,0x187));var _0x4b54=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xb544[_0x16b9ed];return _0x66b1f8;};var nda=require(_0x4b54('0x0'));module[_0x4b54('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x8ade=['./nda'];(function(_0xc9fe79,_0x10f71d){var _0x378a47=function(_0x4d9fa1){while(--_0x4d9fa1){_0xc9fe79['push'](_0xc9fe79['shift']());}};_0x378a47(++_0x10f71d);}(_0x8ade,0x144));var _0xe8ad=function(_0x2bf821,_0x3fe521){_0x2bf821=_0x2bf821-0x0;var _0xc06066=_0x8ade[_0x2bf821];return _0xc06066;};var nda=require(_0xe8ad('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index d9c9f19..ddc72f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d13=['custom_action','custom_action_data','CustomActionData','info','url','agi','POST','resolve','/token','password','username','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','uniqueid','callerid','dnid','extension','text','Bearer\x20','access_token','project','body','channelData','ndagenerate_audio','AudioOutputSettings'];(function(_0x3bcf36,_0x17ae9b){var _0x1e78b1=function(_0x3dd38a){while(--_0x3dd38a){_0x3bcf36['push'](_0x3bcf36['shift']());}};_0x1e78b1(++_0x17ae9b);}(_0x7d13,0x6c));var _0x37d1=function(_0x383493,_0x173752){_0x383493=_0x383493-0x0;var _0x38aebc=_0x7d13[_0x383493];return _0x38aebc;};'use strict';var rp=require('request-promise');var url=require(_0x37d1('0x0'));var logger=require('../../../../../config/logger')(_0x37d1('0x1'));module['exports']=function(_0x17fd0b,_0x317366){var _0x37d712={'method':_0x37d1('0x2'),'uri':url[_0x37d1('0x3')](_0x317366['ndauth_url'],_0x37d1('0x4')),'form':{'grant_type':_0x37d1('0x5'),'username':_0x317366[_0x37d1('0x6')],'password':_0x317366[_0x37d1('0x5')]},'json':!![]};return rp(_0x37d712)['then'](function(_0x9302bd){var _0x41dfaa={'method':_0x37d1('0x2'),'uri':url[_0x37d1('0x3')](_0x317366[_0x37d1('0x7')],_0x37d1('0x8')),'body':{'type':_0x317366[_0x37d1('0x9')]||'message','channelId':'Nda','conversation':{'id':_0x17fd0b[_0x37d1('0xa')]},'from':{'id':_0x17fd0b[_0x37d1('0xb')],'name':_0x17fd0b['calleridname']},'recipient':{'id':_0x17fd0b[_0x37d1('0xc')],'name':_0x17fd0b[_0x37d1('0xd')]},'text':_0x317366[_0x37d1('0xe')],'channelData':{}},'headers':{'Authorization':_0x37d1('0xf')+_0x9302bd[_0x37d1('0x10')]},'json':!![]};if(_0x317366[_0x37d1('0x11')]){_0x41dfaa[_0x37d1('0x12')][_0x37d1('0x13')]['ProjectName']=_0x317366[_0x37d1('0x11')];}if(_0x317366[_0x37d1('0x14')]=='1'){_0x41dfaa['body'][_0x37d1('0x13')][_0x37d1('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x317366[_0x37d1('0x16')]){_0x41dfaa[_0x37d1('0x12')]['channelData']['CustomAction']=_0x317366[_0x37d1('0x16')];if(_0x317366[_0x37d1('0x17')]){_0x41dfaa[_0x37d1('0x12')]['channelData'][_0x37d1('0x18')]=_0x317366[_0x37d1('0x17')];}}logger[_0x37d1('0x19')](JSON['stringify'](_0x41dfaa));return rp(_0x41dfaa);});};
\ No newline at end of file
+var _0xb377=['ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password'];(function(_0x3e5595,_0xbe4275){var _0x3fd3a6=function(_0x43874c){while(--_0x43874c){_0x3e5595['push'](_0x3e5595['shift']());}};_0x3fd3a6(++_0xbe4275);}(_0xb377,0x1b6));var _0x7b37=function(_0x371b91,_0x3522ad){_0x371b91=_0x371b91-0x0;var _0x3c9204=_0xb377[_0x371b91];return _0x3c9204;};'use strict';var rp=require(_0x7b37('0x0'));var url=require(_0x7b37('0x1'));var logger=require(_0x7b37('0x2'))(_0x7b37('0x3'));module[_0x7b37('0x4')]=function(_0x36868b,_0x15bc68){var _0x3c4851={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0x7')],_0x7b37('0x8')),'form':{'grant_type':'password','username':_0x15bc68['username'],'password':_0x15bc68[_0x7b37('0x9')]},'json':!![]};return rp(_0x3c4851)['then'](function(_0x5afdb8){var _0x3de992={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0xa')],_0x7b37('0xb')),'body':{'type':_0x15bc68[_0x7b37('0xc')]||_0x7b37('0xd'),'channelId':_0x7b37('0xe'),'conversation':{'id':_0x36868b['uniqueid']},'from':{'id':_0x36868b[_0x7b37('0xf')],'name':_0x36868b[_0x7b37('0x10')]},'recipient':{'id':_0x36868b['dnid'],'name':_0x36868b['extension']},'text':_0x15bc68[_0x7b37('0x11')],'channelData':{}},'headers':{'Authorization':_0x7b37('0x12')+_0x5afdb8[_0x7b37('0x13')]},'json':!![]};if(_0x15bc68[_0x7b37('0x14')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x17')]=_0x15bc68[_0x7b37('0x14')];}if(_0x15bc68[_0x7b37('0x18')]=='1'){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7b37('0x1a')};}if(_0x15bc68[_0x7b37('0x1b')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x1c')]=_0x15bc68['custom_action'];if(_0x15bc68['custom_action_data']){_0x3de992[_0x7b37('0x15')]['channelData']['CustomActionData']=_0x15bc68[_0x7b37('0x1d')];}}logger[_0x7b37('0x1e')](JSON[_0x7b37('0x1f')](_0x3de992));return rp(_0x3de992);});};
\ No newline at end of file
index 9045c41..c88faf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var asr=require('./lib/api');module['exports']=function(_0x41a133,_0x455d97,_0x4308eb,_0x508215){return asr(_0x41a133,_0x455d97,_0x4308eb,_0x508215);};
\ No newline at end of file
+var _0x77ed=['exports'];(function(_0x3acf51,_0x2b5f2a){var _0x2df595=function(_0x9c377){while(--_0x9c377){_0x3acf51['push'](_0x3acf51['shift']());}};_0x2df595(++_0x2b5f2a);}(_0x77ed,0xe2));var _0xd77e=function(_0x4ee70e,_0x342786){_0x4ee70e=_0x4ee70e-0x0;var _0xd08a64=_0x77ed[_0x4ee70e];return _0xd08a64;};'use strict';var asr=require('./lib/api');module[_0xd77e('0x0')]=function(_0x473769,_0x45efca,_0x4449e9,_0x3115e7){return asr(_0x473769,_0x45efca,_0x4449e9,_0x3115e7);};
\ No newline at end of file
index f04c1bc..92a9991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f28=['hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Tilde\x20ASR\x20parse\x20error','terminate','Close\x20Tilde\x20ASR\x20socket','isNil','open','close','lodash','crypto','agi','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','EOS','error','Tilde\x20ASR\x20send\x20error','parse','status','result','Tilde\x20ASR\x20hypoteses'];(function(_0x3674bd,_0x250245){var _0x2d86b7=function(_0x500733){while(--_0x500733){_0x3674bd['push'](_0x3674bd['shift']());}};_0x2d86b7(++_0x250245);}(_0x5f28,0x148));var _0x85f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f28[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var _=require(_0x85f2('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0x85f2('0x1'));var logger=require('../../../../../../config/logger')(_0x85f2('0x2'));module[_0x85f2('0x3')]=function(_0x3b1539,_0x517175,_0x34260f,_0x413575){return new BPromise(function(_0x2cd83d,_0x2e889a){logger['info'](_0x85f2('0x4'),_0x413575||_0x85f2('0x5'));var _0x5edcd1=new WebSocket(_0x413575||_0x85f2('0x5'),{'perMessageDeflate':![]});var _0x33cbc1='';var _0x3f6ee1='0';var _0x18ae79='1';var _0x3c830b=_0x85f2('0x6');function _0x46f199(_0x5ad2cc){var _0x14d859=crypto[_0x85f2('0x7')](_0x85f2('0x8'));_0x14d859['update'](_0x5ad2cc);return _0x14d859['digest'](_0x85f2('0x9'));}function _0x3c207c(){try{logger[_0x85f2('0xa')](_0x85f2('0xb'));var _0x151b6d=moment()[_0x85f2('0xc')]();var _0xebf508=_0x46f199(_0x151b6d+_0x517175+_0x34260f);_0x5edcd1[_0x85f2('0xd')](JSON[_0x85f2('0xe')]({'appID':_0x517175,'timestamp':_0x151b6d,'appKey':_0xebf508}));var _0x271361=fs['createReadStream'](_0x3b1539);_0x271361['on']('data',function(_0x2ddca8){_0x5edcd1[_0x85f2('0xd')](_0x2ddca8);});_0x271361['on']('close',function(){_0x5edcd1[_0x85f2('0xd')](_0x85f2('0xf'));});}catch(_0x5dd463){logger[_0x85f2('0x10')](_0x85f2('0x11'),JSON['stringify'](_0x5dd463));_0x5edcd1['terminate']();}}function _0x1c3049(_0x316f31){try{if(_0x316f31){var _0x2d4817=JSON[_0x85f2('0x12')](_0x316f31);switch(_0x2d4817[_0x85f2('0x13')]){case 0x0:if(_0x2d4817['result']){if(_0x2d4817[_0x85f2('0x14')]['final']){logger[_0x85f2('0xa')](_0x85f2('0x15'),JSON['stringify'](_0x2d4817[_0x85f2('0x14')][_0x85f2('0x16')]));_0x33cbc1=_0x2d4817[_0x85f2('0x14')]['hypotheses'][0x0][_0x85f2('0x17')];_0x3f6ee1=_0x2d4817[_0x85f2('0x14')][_0x85f2('0x16')][0x0][_0x85f2('0x18')];_0x18ae79='0';_0x3c830b=_0x85f2('0x19');_0x5edcd1['terminate']();}}break;case 0x1:logger[_0x85f2('0xa')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x18ae79='1';_0x3c830b=_0x85f2('0x6');break;case 0x2:logger[_0x85f2('0xa')](_0x85f2('0x1a'));_0x18ae79='2';_0x3c830b='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x85f2('0xa')](_0x85f2('0x1b'));_0x18ae79='9';_0x3c830b=_0x85f2('0x1b');break;case 0xa:logger[_0x85f2('0xa')](_0x85f2('0x1c'));_0x18ae79='10';_0x3c830b='Authentication\x20failed.';break;case 0xb:logger[_0x85f2('0xa')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x18ae79='11';_0x3c830b='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x35db46){logger[_0x85f2('0x10')](_0x85f2('0x1d'),JSON[_0x85f2('0xe')](_0x35db46));_0x5edcd1[_0x85f2('0x1e')]();}}function _0x104b87(){logger[_0x85f2('0xa')](_0x85f2('0x1f'));_0x2cd83d({'transcript':_0x33cbc1,'confidence':_0x3f6ee1,'status':_0x18ae79,'status_message':_0x3c830b});}function _0x23441d(_0x5bac07){logger[_0x85f2('0x10')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x85f2('0x20')](_0x5bac07)){logger['error'](_['isObject'](_0x5bac07)?JSON[_0x85f2('0xe')](_0x5bac07):_0x5bac07);}}_0x5edcd1['on'](_0x85f2('0x21'),_0x3c207c);_0x5edcd1['on']('message',_0x1c3049);_0x5edcd1['on'](_0x85f2('0x22'),_0x104b87);_0x5edcd1['on']('error',_0x23441d);});};
\ No newline at end of file
+var _0x10cb=['exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','close','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','lodash','moment','agi'];(function(_0x3bdde6,_0x3ecba2){var _0x4fa146=function(_0x3f9202){while(--_0x3f9202){_0x3bdde6['push'](_0x3bdde6['shift']());}};_0x4fa146(++_0x3ecba2);}(_0x10cb,0x66));var _0xb10c=function(_0x1d0946,_0x3732fc){_0x1d0946=_0x1d0946-0x0;var _0x205df=_0x10cb[_0x1d0946];return _0x205df;};'use strict';var BPromise=require('bluebird');var _=require(_0xb10c('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xb10c('0x1'));var crypto=require('crypto');var logger=require('../../../../../../config/logger')(_0xb10c('0x2'));module[_0xb10c('0x3')]=function(_0x134aa8,_0x3bebce,_0x6e854,_0xb561e1){return new BPromise(function(_0x5a17a0,_0x34d61b){logger[_0xb10c('0x4')](_0xb10c('0x5'),_0xb561e1||_0xb10c('0x6'));var _0x58f0d4=new WebSocket(_0xb561e1||_0xb10c('0x6'),{'perMessageDeflate':![]});var _0x6460e6='';var _0xdca2e5='0';var _0x4d67af='1';var _0x6a9f60=_0xb10c('0x7');function _0x11aa06(_0x4672d4){var _0xdefb9c=crypto[_0xb10c('0x8')]('sha1');_0xdefb9c[_0xb10c('0x9')](_0x4672d4);return _0xdefb9c[_0xb10c('0xa')](_0xb10c('0xb'));}function _0x12822e(){try{logger['info'](_0xb10c('0xc'));var _0x57a66a=moment()[_0xb10c('0xd')]();var _0xb67b2a=_0x11aa06(_0x57a66a+_0x3bebce+_0x6e854);_0x58f0d4[_0xb10c('0xe')](JSON[_0xb10c('0xf')]({'appID':_0x3bebce,'timestamp':_0x57a66a,'appKey':_0xb67b2a}));var _0x2d2458=fs[_0xb10c('0x10')](_0x134aa8);_0x2d2458['on']('data',function(_0x188a29){_0x58f0d4['send'](_0x188a29);});_0x2d2458['on'](_0xb10c('0x11'),function(){_0x58f0d4['send']('EOS');});}catch(_0x24f632){logger[_0xb10c('0x12')](_0xb10c('0x13'),JSON['stringify'](_0x24f632));_0x58f0d4[_0xb10c('0x14')]();}}function _0x2d4d40(_0x5da03c){try{if(_0x5da03c){var _0x4ddd55=JSON['parse'](_0x5da03c);switch(_0x4ddd55[_0xb10c('0x15')]){case 0x0:if(_0x4ddd55[_0xb10c('0x16')]){if(_0x4ddd55[_0xb10c('0x16')]['final']){logger['info'](_0xb10c('0x17'),JSON[_0xb10c('0xf')](_0x4ddd55[_0xb10c('0x16')][_0xb10c('0x18')]));_0x6460e6=_0x4ddd55['result'][_0xb10c('0x18')][0x0]['transcript'];_0xdca2e5=_0x4ddd55[_0xb10c('0x16')][_0xb10c('0x18')][0x0][_0xb10c('0x19')];_0x4d67af='0';_0x6a9f60=_0xb10c('0x1a');_0x58f0d4[_0xb10c('0x14')]();}}break;case 0x1:logger[_0xb10c('0x4')](_0xb10c('0x7'));_0x4d67af='1';_0x6a9f60=_0xb10c('0x7');break;case 0x2:logger[_0xb10c('0x4')](_0xb10c('0x1b'));_0x4d67af='2';_0x6a9f60=_0xb10c('0x1b');break;case 0x9:logger[_0xb10c('0x4')](_0xb10c('0x1c'));_0x4d67af='9';_0x6a9f60=_0xb10c('0x1c');break;case 0xa:logger[_0xb10c('0x4')](_0xb10c('0x1d'));_0x4d67af='10';_0x6a9f60='Authentication\x20failed.';break;case 0xb:logger[_0xb10c('0x4')](_0xb10c('0x1e'));_0x4d67af='11';_0x6a9f60=_0xb10c('0x1e');}}}catch(_0x310234){logger[_0xb10c('0x12')](_0xb10c('0x1f'),JSON[_0xb10c('0xf')](_0x310234));_0x58f0d4[_0xb10c('0x14')]();}}function _0x2cc814(){logger['info'](_0xb10c('0x20'));_0x5a17a0({'transcript':_0x6460e6,'confidence':_0xdca2e5,'status':_0x4d67af,'status_message':_0x6a9f60});}function _0x83cf07(_0x1f0ab1){logger[_0xb10c('0x12')](_0xb10c('0x21'));if(!_[_0xb10c('0x22')](_0x1f0ab1)){logger[_0xb10c('0x12')](_['isObject'](_0x1f0ab1)?JSON[_0xb10c('0xf')](_0x1f0ab1):_0x1f0ab1);}}_0x58f0d4['on']('open',_0x12822e);_0x58f0d4['on']('message',_0x2d4d40);_0x58f0d4['on'](_0xb10c('0x11'),_0x2cc814);_0x58f0d4['on'](_0xb10c('0x12'),_0x83cf07);});};
\ No newline at end of file
index 880d9c5..0aa45aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdcc=['exports','./asr'];(function(_0x8dec24,_0x903de0){var _0x381de1=function(_0x1aceb4){while(--_0x1aceb4){_0x8dec24['push'](_0x8dec24['shift']());}};_0x381de1(++_0x903de0);}(_0xfdcc,0x1bf));var _0xcfdc=function(_0x8b8564,_0x162976){_0x8b8564=_0x8b8564-0x0;var _0x360c61=_0xfdcc[_0x8b8564];return _0x360c61;};var asr=require(_0xcfdc('0x0'));module[_0xcfdc('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xf00c=['exports','./asr'];(function(_0x1f266f,_0x256ade){var _0x20d410=function(_0x2e928f){while(--_0x2e928f){_0x1f266f['push'](_0x1f266f['shift']());}};_0x20d410(++_0x256ade);}(_0xf00c,0x19b));var _0xcf00=function(_0x7788b6,_0x571beb){_0x7788b6=_0x7788b6-0x0;var _0x13e697=_0xf00c[_0x7788b6];return _0x13e697;};var asr=require(_0xcf00('0x0'));module[_0xcf00('0x1')]={'asr':asr};
\ No newline at end of file
index c3fbbbd..b85c784 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(_0x4772e2,_0x28a646){var _0x3c5923=function(_0x7d6cc6){while(--_0x7d6cc6){_0x4772e2['push'](_0x4772e2['shift']());}};_0x3c5923(++_0x28a646);}(_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 _0x9c44=['./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','events','EventEmitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require(_0x49c4('0x0'))[_0x49c4('0x1')];var AGIError=require(_0x49c4('0x2'));var AGIChannel=require(_0x49c4('0x3'));var AGIServer=function(_0x455700,_0x2ad237,_0x4e0313){var _0x4941f1=this;var _0x41a183=null;var _0x57effd=0x0;if(!_0x455700)_0x455700=0x11dd;if(!_0x2ad237)_0x2ad237=_0x49c4('0x4');EventEmitter[_0x49c4('0x5')](_0x4941f1);function _0x69bc41(){if(!_0x455700){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x41a183=net[_0x49c4('0x8')]();_0x41a183[_0x49c4('0x9')](_0x455700,_0x2ad237);_0x41a183['on'](_0x49c4('0xa'),function(){_0x4941f1[_0x49c4('0x6')]('listening');});_0x41a183['on']('connection',function(_0x451ea6){_0x41a183[_0x49c4('0xb')](function(_0x58cad7,_0xb611a1){if(_0x58cad7){_0x4941f1[_0x49c4('0x6')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x58cad7));}else if(_0x4e0313&&_0x4e0313<0x0){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x451ea6[_0x49c4('0xc')]();}else if(_0x4e0313&&_0x4e0313>0x0&&_0x4e0313<_0xb611a1){_0x57effd+=0x1;_0x4941f1[_0x49c4('0x6')]('error',new AGIError(_0x49c4('0xd'),_0x57effd));_0x451ea6[_0x49c4('0xc')]();}else{var _0x21f15a=new AGIChannel(_0x451ea6);_0x21f15a['on'](_0x49c4('0xe'),function(){_0x4941f1[_0x49c4('0x6')](_0x49c4('0xf'),_0x21f15a);});}});});_0x41a183['on'](_0x49c4('0x7'),function(_0x3de397){_0x4941f1['emit'](_0x49c4('0x7'),new AGIError(_0x49c4('0x10'),_0x3de397[_0x49c4('0x11')]));});_0x41a183['on'](_0x49c4('0x12'),function(){_0x4941f1[_0x49c4('0x6')]('close',new AGIError(_0x49c4('0x13')));});}process[_0x49c4('0x14')](function(){_0x69bc41();});};util['inherits'](AGIServer,EventEmitter);module['exports']=function(_0x3c782d,_0x2f82d5,_0x3addb2){return new AGIServer(_0x3c782d,_0x2f82d5,_0x3addb2);};
\ No newline at end of file
index f86a0cc..31bb18f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9147=['IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','IspeechASR\x20Result\x20%s','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','no\x20variable\x20found','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','queue_id','no\x20queue\x20selected','getVoiceQueue','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','gosub','QUEUE','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','subject','template_id','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','getSmsAccount','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','createSmsMessage','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','lodash','odbc','moment','mustache','../../config/logger','agi','../../config/environment','./scripts','rawHeaders','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','name','catch','then','getSquareProject','getSquareOdbc','getSquareOdbcById','getUser','getTrunkById','getSound','getSoundById','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','query','getSmsAccountById','createSquareDetailsReport','agicommand','arg_1','callerid','createSquareRecording','uniqueid','accountcode','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','format','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','PUT','body','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','client_email','dialogflowV2_language','ispeechTTS','ispeech_tts_language','speed','ispeechASR','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','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','%s.%s','isArray','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','label','Wait\x20%s\x20seconds\x20before\x20answer','no\x20list\x20selected','scheduledAt','delay','add','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','no\x20user\x20selected','sip_id','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','toUpperCase','out','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','sestekNDA','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','.wav','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','no\x20trunk\x20selected','trunk_id','getTrunk','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','streamFile','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9147,0x7b));var _0x7914=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9147[_0x2dafbe];return _0x58a45a;};'use strict';var fs=require('fs');var util=require(_0x7914('0x0'));var _=require(_0x7914('0x1'));var sh=require('shelljs');var odbc=require(_0x7914('0x2'))();var rs=require('randomstring');var moment=require(_0x7914('0x3'));var Mustache=require(_0x7914('0x4'));var rp=require('request-promise');var logger=require(_0x7914('0x5'))(_0x7914('0x6'));var config=require(_0x7914('0x7'));var shared=require('../../config/environment/shared');var scripts=require(_0x7914('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x7914('0x9'),'rawBody'];var verticesWithRetry=[_0x7914('0xa'),_0x7914('0xb'),_0x7914('0xc')];var AGIVertices=function(_0x463e7f,_0x29fdf8,_0x23df4f){this[_0x7914('0xd')]=_0x463e7f;this[_0x7914('0xe')]=_0x29fdf8;this[_0x7914('0xf')]=_0x23df4f;};AGIVertices[_0x7914('0x10')][_0x7914('0x11')]=function(_0x1b03b6,_0x14ab3e){this[_0x7914('0xe')][_0x7914('0x12')](_0x1b03b6)['then'](function(_0x290117){_0x14ab3e(null,_0x290117?_0x290117[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x1e6768){_0x14ab3e(_0x1e6768);});};AGIVertices[_0x7914('0x10')]['getVoiceQueue']=function(_0x1eaf65,_0x30d365){this[_0x7914('0xe')]['getVoiceQueueById'](_0x1eaf65)[_0x7914('0x15')](function(_0x5ec22e){_0x30d365(null,_0x5ec22e?_0x5ec22e[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x57e5b1){_0x30d365(_0x57e5b1);});};AGIVertices[_0x7914('0x10')][_0x7914('0x16')]=function(_0xa225a9,_0x3a28eb){this[_0x7914('0xe')]['getSquareProjectById'](_0xa225a9)[_0x7914('0x15')](function(_0x438a91){_0x3a28eb(null,_0x438a91?_0x438a91[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x52c759){_0x3a28eb(_0x52c759);});};AGIVertices['prototype'][_0x7914('0x17')]=function(_0x5098c3,_0x2b31ed){this[_0x7914('0xe')][_0x7914('0x18')](_0x5098c3)[_0x7914('0x15')](function(_0xfe14de){_0x2b31ed(null,_0xfe14de?_0xfe14de['dsn']:![]);})[_0x7914('0x14')](function(_0xca996f){_0x2b31ed(_0xca996f);});};AGIVertices[_0x7914('0x10')][_0x7914('0x19')]=function(_0x552d24,_0x46da43){this[_0x7914('0xe')]['getUserById'](_0x552d24)[_0x7914('0x15')](function(_0x7777f9){_0x46da43(null,_0x7777f9?_0x7777f9[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x5ce556){_0x46da43(_0x5ce556);});};AGIVertices['prototype']['getTrunk']=function(_0x4409c3,_0x11f6e6){this[_0x7914('0xe')][_0x7914('0x1a')](_0x4409c3)['then'](function(_0x1cebc6){_0x11f6e6(null,_0x1cebc6?_0x1cebc6[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x1bcd29){_0x11f6e6(_0x1bcd29);});};AGIVertices[_0x7914('0x10')][_0x7914('0x1b')]=function(_0x361a32,_0x3dc5e6){var _0x530a56=this;this[_0x7914('0xe')][_0x7914('0x1c')](_0x361a32)[_0x7914('0x15')](function(_0x2dfcf7){_0x3dc5e6(null,_0x2dfcf7?_0x530a56['getSoundPath'](_0x2dfcf7[_0x7914('0x1d')]):![]);})[_0x7914('0x14')](function(_0x473125){_0x3dc5e6(_0x473125);});};AGIVertices['prototype'][_0x7914('0x1e')]=function(_0x20c11a,_0xf19936){this[_0x7914('0xe')][_0x7914('0x1f')](_0x20c11a)[_0x7914('0x15')](function(_0x4df760){_0xf19936(null,_0x4df760?_0x4df760:![]);})[_0x7914('0x14')](function(_0x4c944f){_0xf19936(_0x4c944f);});};AGIVertices['prototype'][_0x7914('0x20')]=function(_0x3461b6,_0x2e6502,_0x36307c){this[_0x7914('0xf')]['sendMailMessage'](_0x3461b6,_0x2e6502)[_0x7914('0x15')](function(){_0x36307c(null);})[_0x7914('0x14')](function(_0x137711){_0x36307c(_0x137711);});};AGIVertices['prototype'][_0x7914('0x21')]=function(_0xf46e0f,_0x12ad3a){this[_0x7914('0xe')][_0x7914('0x22')](_0xf46e0f)[_0x7914('0x15')](function(_0x130a28){if(_0x130a28){if(_0x130a28['IntervalId']){_0x12ad3a(null,[_0x130a28[_0x7914('0x23')]]);}else{_0x12ad3a(null,_[_0x7914('0x24')](_0x130a28[_0x7914('0x25')],_0x7914('0x23')));}}else{_0x12ad3a(null,![]);}})[_0x7914('0x14')](function(_0x3d63e5){_0x12ad3a(_0x3d63e5);});};AGIVertices[_0x7914('0x10')]['getSoundPath']=function(_0x11d086){return util['format'](_0x7914('0x26'),FILES_PATH,_0x11d086);};AGIVertices[_0x7914('0x10')][_0x7914('0x27')]=function(_0x31af8a,_0x10e069,_0x50eb11){odbc[_0x7914('0x28')](_0x31af8a,function(_0x123d79){if(_0x123d79){logger[_0x7914('0x29')](_0x7914('0x2a'),_0x123d79);_0x50eb11(_0x123d79);}else{logger[_0x7914('0x2b')]('ODBC\x20connection\x20successfully');odbc[_0x7914('0x2c')](_0x10e069,function(_0x1b2fc0,_0xc8d841){if(_0x1b2fc0){logger[_0x7914('0x2b')]('Error\x20executing\x20query\x20%s',_0x10e069);_0x50eb11(_0x1b2fc0);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x10e069);odbc['close'](function(_0x4f91eb){if(_0x4f91eb){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x4f91eb);}_0x50eb11(null,_0xc8d841);});}});}});};AGIVertices[_0x7914('0x10')]['getSmsAccount']=function(_0x277c9b,_0x217213){this[_0x7914('0xe')][_0x7914('0x2d')](_0x277c9b)[_0x7914('0x15')](function(_0x27099f){_0x217213(null,_0x27099f?_0x27099f:![]);})[_0x7914('0x14')](function(_0x44a467){_0x217213(_0x44a467);});};AGIVertices[_0x7914('0x10')]['createSmsMessage']=function(_0x2eeba4,_0x5dcbd8){this[_0x7914('0xe')]['createSmsMessage'](_0x2eeba4)[_0x7914('0x15')](function(_0x2dc4f6){_0x5dcbd8(null,_0x2dc4f6);})['catch'](function(_0x32406a){_0x5dcbd8(_0x32406a);});};AGIVertices[_0x7914('0x10')][_0x7914('0x2e')]=function(_0x44c650,_0x1be449,_0x414534){this[_0x7914('0xe')][_0x7914('0x2e')]({'uniqueid':this[_0x7914('0xd')]['uniqueid'],'node':_0x44c650['label'],'application':_0x44c650[_0x7914('0x2f')],'data':_0x1be449||null,'project_name':this['channel'][_0x7914('0x30')],'callerid':this['channel'][_0x7914('0x31')]})['then'](function(_0x4095ba){if(_0x414534){_0x414534(null,_0x4095ba);}})[_0x7914('0x14')](function(_0x39f023){if(_0x414534){_0x414534(_0x39f023);}});};AGIVertices[_0x7914('0x10')][_0x7914('0x32')]=function(_0x1af456,_0x501b1b,_0x221047,_0x3eb5d8){this[_0x7914('0xe')]['createSquareRecording']({'uniqueid':this[_0x7914('0xd')][_0x7914('0x33')],'callerid':this['channel'][_0x7914('0x31')],'calleridname':this[_0x7914('0xd')]['calleridname'],'context':this[_0x7914('0xd')]['context'],'extension':this[_0x7914('0xd')]['extension'],'priority':this[_0x7914('0xd')]['priority'],'accountcode':this['channel'][_0x7914('0x34')],'dnid':this[_0x7914('0xd')]['dnid'],'projectName':this[_0x7914('0xd')]['arg_1'],'saveName':_0x501b1b,'filename':_0x1af456['file']||_0x501b1b,'savePath':_0x221047})[_0x7914('0x15')](function(_0x2ff763){_0x3eb5d8(null,_0x2ff763);})['catch'](function(_0xecbe16){_0x3eb5d8(_0xecbe16);});};AGIVertices[_0x7914('0x10')]['createSquareMessage']=function(_0x2adf57,_0x232b0f,_0x21d645,_0x43cbf4,_0x5937d0){this[_0x7914('0xe')][_0x7914('0x35')]({'uniqueid':this[_0x7914('0xd')][_0x7914('0x33')],'body':_0x2adf57,'direction':_0x232b0f,'providerName':_0x21d645,'providerResponse':_0x43cbf4})[_0x7914('0x15')](function(_0x4d77a9){if(_0x5937d0){_0x5937d0(null,_0x4d77a9);}})[_0x7914('0x14')](function(_0x560d96){if(_0x5937d0){_0x5937d0(_0x560d96);}});};AGIVertices['prototype'][_0x7914('0x36')]=function(_0x2fc471,_0x3a0393){this[_0x7914('0xe')][_0x7914('0x36')]({'firstName':_[_0x7914('0x37')](_0x2fc471[_0x7914('0x13')])||_[_0x7914('0x38')](_0x2fc471[_0x7914('0x13')])?_0x7914('0x39')+Math[_0x7914('0x3a')]():_0x2fc471['name'],'lastName':_[_0x7914('0x37')](_0x2fc471[_0x7914('0x3b')])||_['isNil'](_0x2fc471[_0x7914('0x3b')])?null:_0x2fc471[_0x7914('0x3b')],'phone':_0x2fc471[_0x7914('0x3c')],'ListId':_0x2fc471[_0x7914('0x3d')],'scheduledat':_0x2fc471['scheduledAt'],'callbackUniqueid':this[_0x7914('0xd')][_0x7914('0x33')],'tags':_0x7914('0x3e'),'description':_0x7914('0x3f')+_0x2fc471['scheduledAt'][_0x7914('0x40')](),'priority':_0x2fc471[_0x7914('0x41')]})['then'](function(_0x121392){_0x3a0393(null,_0x121392);})[_0x7914('0x14')](function(_0x1f01d6){_0x3a0393(_0x1f01d6);});};AGIVertices[_0x7914('0x10')][_0x7914('0x42')]=function(_0x1717fb,_0x1072e5){this[_0x7914('0xe')][_0x7914('0x43')](_0x1717fb)[_0x7914('0x15')](function(_0x82f97e){_0x1072e5(null,_0x82f97e?_0x82f97e[_0x7914('0x13')]:![]);})[_0x7914('0x14')](function(_0x6d4201){_0x1072e5(_0x6d4201);});};AGIVertices[_0x7914('0x10')][_0x7914('0x44')]=function(_0x53df0f,_0x544790,_0x34168f){var _0x47eda0={'role':_0x7914('0x45')};_0x47eda0[_0x53df0f]=this[_0x7914('0xd')][_0x7914('0x31')];this['rpc'][_0x7914('0x44')](_0x47eda0,_0x544790,this[_0x7914('0xd')]['uniqueid'])[_0x7914('0x15')](function(_0x522fd2){_0x34168f(null,_[_0x7914('0x38')](_0x522fd2)?![]:!![]);})['catch'](function(_0x5e6090){logger[_0x7914('0x29')](_0x5e6090);_0x34168f(null,![]);});};AGIVertices['prototype'][_0x7914('0x46')]=function(_0x3c5397,_0x4ce6b0){var _0x9b1a99={'role':'agent'};_0x9b1a99[_0x3c5397]=this['channel'][_0x7914('0x31')];this[_0x7914('0xe')]['agentUnpause'](_0x9b1a99)[_0x7914('0x15')](function(_0x4e51d3){_0x4ce6b0(null,_['isNil'](_0x4e51d3)?![]:!![]);})[_0x7914('0x14')](function(_0x3ab1bb){logger[_0x7914('0x29')](_0x3ab1bb);_0x4ce6b0(null,![]);});};AGIVertices[_0x7914('0x10')][_0x7914('0x47')]=function(_0x241ac9,_0x46919a){var _0x23a5f3={'role':_0x7914('0x45')};_0x23a5f3[_0x241ac9]=this['channel'][_0x7914('0x31')];this[_0x7914('0xe')][_0x7914('0x47')](_0x23a5f3)[_0x7914('0x15')](function(_0x1b42cc){_0x46919a(null,_[_0x7914('0x38')](_0x1b42cc)?![]:!![]);})[_0x7914('0x14')](function(_0x5bf433){logger['error'](_0x5bf433);_0x46919a(null,![]);});};AGIVertices[_0x7914('0x10')][_0x7914('0x48')]=function(_0x3aa623,_0x29672c){var _0x3f87aa={'role':_0x7914('0x45')};_0x3f87aa[_0x3aa623]=this[_0x7914('0xd')]['callerid'];var _0x34ae17=_0x3aa623!=_0x7914('0x49')?util[_0x7914('0x4a')](_0x7914('0x4b'),_0x7914('0x4c'),this[_0x7914('0xd')][_0x7914('0x31')]):undefined;this[_0x7914('0xe')][_0x7914('0x48')](_0x3f87aa,_0x34ae17)[_0x7914('0x15')](function(_0x42d471){_0x29672c(null,_[_0x7914('0x38')](_0x42d471)?![]:!![]);})['catch'](function(_0x159df6){logger[_0x7914('0x29')](_0x159df6);_0x29672c(null,![]);});};AGIVertices[_0x7914('0x10')][_0x7914('0x4d')]=function(_0x24f772,_0x24c253){sh[_0x7914('0x4e')](_[_0x7914('0x4f')](_0x24f772),function(_0x21f957,_0x157aab){var _0x588e39=_0x157aab[_0x7914('0x50')](/(\r\n|\n|\r)/gm,'');_0x24c253(null,_0x588e39);});};AGIVertices['prototype'][_0x7914('0x51')]=function(_0x1ea0ca,_0x7305e4){scripts[_0x7914('0x51')](_0x1ea0ca[_0x7914('0x52')],_0x1ea0ca[_0x7914('0x53')]||_0x7914('0x54'),_0x1ea0ca[_0x7914('0x54')],_0x1ea0ca[_0x7914('0x55')]||_0x7914('0x56'),_0x1ea0ca[_0x7914('0x57')]||_0x7914('0x58'),_0x1ea0ca[_0x7914('0x59')]||_0x7914('0x5a'))[_0x7914('0x15')](function(_0x3a5751){_0x7305e4(null,_0x3a5751);})[_0x7914('0x14')](function(_0x3ade16){_0x7305e4(_0x3ade16);});};AGIVertices[_0x7914('0x10')][_0x7914('0x5b')]=function(_0x3d6d5a,_0x12d626){scripts[_0x7914('0x5b')](_0x3d6d5a[_0x7914('0x54')],_0x3d6d5a[_0x7914('0x5c')]||'en',0x1)[_0x7914('0x15')](function(_0x29a5fc){_0x12d626(null,_0x29a5fc);})['catch'](function(_0x240d1e){_0x12d626(_0x240d1e);});};AGIVertices[_0x7914('0x10')][_0x7914('0x5d')]=function(_0x709d0d,_0x28376c){var _0x1bbb6a={'uri':_0x709d0d[_0x7914('0x5e')],'method':_0x709d0d[_0x7914('0x5f')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x709d0d[_0x7914('0x60')])===_0x7914('0x61')&&parseInt(_0x709d0d[_0x7914('0x60')])>=0x1?parseInt(_0x709d0d[_0x7914('0x60')])*0x3e8:0x5*0x3e8};if(_[_0x7914('0x62')](['POST',_0x7914('0x63')],_0x1bbb6a['method']['toUpperCase']())){try{_0x1bbb6a[_0x7914('0x64')]=_0x709d0d[_0x7914('0x65')]?JSON['parse'](_0x709d0d['rawBody']):{};}catch(_0x3ffd52){logger[_0x7914('0x29')](_0x7914('0x66'),_0x3ffd52);}}try{_0x1bbb6a[_0x7914('0x67')]=_0x709d0d[_0x7914('0x9')]?JSON[_0x7914('0x68')](_0x709d0d['rawHeaders']):{};}catch(_0x2ce8aa){logger['error'](_0x7914('0x69'),_0x2ce8aa);}if(_0x709d0d[_0x7914('0x6a')]){try{var _0x2ccc98=require(_0x709d0d[_0x7914('0x6a')])[_0x7914('0x6b')](this,_0x1bbb6a);_0x1bbb6a[_0x7914('0x6c')]=Mustache[_0x7914('0x6d')](_0x709d0d[_0x7914('0x5e')],_0x2ccc98,{},['$$','$$']);if(_0x1bbb6a[_0x7914('0x67')]){_0x1bbb6a['headers']=JSON[_0x7914('0x68')](Mustache['render'](JSON[_0x7914('0x6e')](_0x1bbb6a[_0x7914('0x67')]),_0x2ccc98,{},['$$','$$']));}if(_0x1bbb6a['body']){_0x1bbb6a[_0x7914('0x64')]=JSON[_0x7914('0x68')](Mustache[_0x7914('0x6d')](JSON[_0x7914('0x6e')](_0x1bbb6a[_0x7914('0x64')]),_0x2ccc98,{},['$$','$$']));}}catch(_0x5d7e6a){logger[_0x7914('0x29')](_0x7914('0x6f'),_0x5d7e6a);}}rp(_0x1bbb6a)['then'](function(_0x2243db){var _0x26ea4a={'statusCode':_0x2243db[_0x7914('0x70')]||0xc8,'statusMessage':_0x2243db[_0x7914('0x71')]||'OK','headers':_0x2243db['headers']||{},'body':_0x2243db[_0x7914('0x64')]||{}};_0x28376c(null,_0x26ea4a);})[_0x7914('0x14')](function(_0x33e303){var _0x147aa4={'statusCode':_0x33e303[_0x7914('0x70')]||0x1f4,'statusMessage':_0x33e303[_0x7914('0x72')]||_0x7914('0x73'),'headers':_0x33e303[_0x7914('0x74')][_0x7914('0x67')]||{},'body':_0x33e303['options'][_0x7914('0x64')]||{}};_0x28376c(null,_0x147aa4);});};AGIVertices[_0x7914('0x10')][_0x7914('0x75')]=function(_0x430fae,_0x4930fc){scripts[_0x7914('0x75')](this[_0x7914('0xd')][_0x7914('0x33')],_0x430fae[_0x7914('0x76')],_0x430fae[_0x7914('0x54')],_0x430fae[_0x7914('0x77')]||'en')['then'](function(_0x2819d8){_0x4930fc(null,_0x2819d8);})[_0x7914('0x14')](function(_0x34afbd){_0x4930fc(_0x34afbd);});};AGIVertices['prototype'][_0x7914('0x78')]=function(_0x447f7a,_0xcbe67){scripts[_0x7914('0x78')](this['channel'][_0x7914('0x33')],_0x447f7a['dialogflowV2_project_id'],_0x447f7a[_0x7914('0x79')],_0x447f7a['private_key'],_0x447f7a[_0x7914('0x54')],_0x447f7a[_0x7914('0x7a')]||'en')[_0x7914('0x15')](function(_0x217ce){_0xcbe67(null,_0x217ce);})[_0x7914('0x14')](function(_0x332832){_0xcbe67(_0x332832);});};AGIVertices[_0x7914('0x10')]['sestekNDA']=function(_0x26e89c,_0x167fcb){scripts['sestekNDA'](this[_0x7914('0xd')],_0x26e89c)[_0x7914('0x15')](function(_0x1488e8){_0x167fcb(null,_0x1488e8);})[_0x7914('0x14')](function(_0x3ba2c0){_0x167fcb(_0x3ba2c0);});};AGIVertices['prototype'][_0x7914('0x7b')]=function(_0x1fff54,_0x39d3be){scripts[_0x7914('0x7b')](_0x1fff54['key'],_0x1fff54['text'],_0x1fff54[_0x7914('0x7c')]||_0x7914('0x56'),_0x1fff54[_0x7914('0x7d')])[_0x7914('0x15')](function(_0x2dfcdc){_0x39d3be(null,_0x2dfcdc);})[_0x7914('0x14')](function(_0x250fb9){_0x39d3be(_0x250fb9);});};AGIVertices[_0x7914('0x10')][_0x7914('0x7e')]=function(_0x369da1,_0x47780b,_0xd6282e){scripts[_0x7914('0x7e')](_0x47780b,_0x369da1['key'],_0x369da1['ispeech_asr_language']||_0x7914('0x56'),this[_0x7914('0x7f')](_0x369da1['model'])?_0x369da1[_0x7914('0x80')]:undefined)[_0x7914('0x15')](function(_0x14feb6){_0xd6282e(null,_0x14feb6);})[_0x7914('0x14')](function(_0x1e942d){_0xd6282e(_0x1e942d);});};AGIVertices[_0x7914('0x10')][_0x7914('0x81')]=function(_0x186200,_0x8fba5){scripts[_0x7914('0x81')](_0x186200[_0x7914('0x82')],_0x186200[_0x7914('0x83')],_0x186200[_0x7914('0x84')],_0x186200[_0x7914('0x85')]||_0x7914('0x86'),_0x186200['text'],_0x186200[_0x7914('0x87')]||_0x7914('0x54'))['then'](function(_0xd6ad9f){_0x8fba5(null,_0xd6ad9f);})[_0x7914('0x14')](function(_0x42a8c9){_0x8fba5(_0x42a8c9);});};AGIVertices[_0x7914('0x10')][_0x7914('0x88')]=function(_0x4f9392,_0x47065b){scripts[_0x7914('0x88')](this[_0x7914('0xd')]['uniqueid'],_0x4f9392[_0x7914('0x82')],_0x4f9392[_0x7914('0x83')],_0x4f9392[_0x7914('0x89')],_0x4f9392[_0x7914('0x54')],_0x4f9392[_0x7914('0x8a')])[_0x7914('0x15')](function(_0x5ae9ec){_0x47065b(null,_0x5ae9ec);})[_0x7914('0x14')](function(_0x3d1d78){_0x47065b(_0x3d1d78);});};AGIVertices[_0x7914('0x10')]['googleASR']=function(_0x5f3dea,_0x1ced98,_0xd7cf46){scripts[_0x7914('0x8b')](_0x1ced98,_0x5f3dea['key'],_0x5f3dea['google_asr_language']||_0x7914('0x56'))[_0x7914('0x15')](function(_0x410322){_0xd7cf46(null,_0x410322);})[_0x7914('0x14')](function(_0x1ee394){_0xd7cf46(_0x1ee394);});};AGIVertices['prototype'][_0x7914('0x8c')]=function(_0xfcb66a,_0x509ac5,_0x3a2a32){scripts[_0x7914('0x8c')](_0x509ac5,_0xfcb66a['appid'],_0xfcb66a[_0x7914('0x8d')],_0xfcb66a[_0x7914('0x6c')])[_0x7914('0x15')](function(_0x8a6782){_0x3a2a32(null,_0x8a6782);})['catch'](function(_0x549b49){_0x3a2a32(_0x549b49);});};AGIVertices[_0x7914('0x10')]['clear']=function(_0x12d7ba){var _0x33cec5=_[_0x7914('0x62')](verticesWithRetry,_0x12d7ba[_0x7914('0x2f')])?_0x12d7ba:_[_0x7914('0x8e')](_0x12d7ba);for(var _0x359b6d in _0x33cec5){if(_0x33cec5[_0x7914('0x8f')](_0x359b6d)){if(_0x33cec5[_0x359b6d]&&_[_0x7914('0x90')](_0x33cec5[_0x359b6d])){if(_[_0x7914('0x62')](recursiveMapAttributes,_0x359b6d)){_0x33cec5[_0x359b6d]=this[_0x7914('0x91')](_0x33cec5[_0x359b6d]);}else{_0x33cec5[_0x359b6d]=this[_0x7914('0x92')](_0x33cec5[_0x359b6d]);}}}}return _0x33cec5;};AGIVertices[_0x7914('0x10')][_0x7914('0x93')]=function(_0x1649d5){for(var _0x3a3355 in _0x1649d5){if(_0x1649d5[_0x7914('0x8f')](_0x3a3355)){if(_[_0x7914('0x94')](_0x1649d5[_0x3a3355])){this[_0x7914('0x93')](_0x1649d5[_0x3a3355]);}else if(_['isArray'](_0x1649d5[_0x3a3355])){for(var _0x3fd4ff=0x0;_0x3fd4ff<_0x1649d5[_0x3a3355][_0x7914('0x95')];_0x3fd4ff++){this[_0x7914('0x93')](_0x1649d5[_0x3a3355][_0x3fd4ff]);}}else if(_[_0x7914('0x90')](_0x1649d5[_0x3a3355])){_0x1649d5[_0x3a3355]=this[_0x7914('0x92')](_0x1649d5[_0x3a3355]);}}}};AGIVertices[_0x7914('0x10')][_0x7914('0x96')]=function(_0x5344a0,_0x5aa671){for(var _0x4987a8 in _0x5344a0){if(_0x5344a0[_0x7914('0x8f')](_0x4987a8)){if(_['isPlainObject'](_0x5344a0[_0x4987a8])){if(!_[_0x7914('0x37')](_0x5344a0[_0x4987a8])){this[_0x7914('0x96')](_0x5344a0[_0x4987a8],util['format'](_0x7914('0x97'),_0x5aa671,_0x4987a8));}}else if(_[_0x7914('0x98')](_0x5344a0[_0x4987a8])){for(var _0x1bd562=0x0;_0x1bd562<_0x5344a0[_0x4987a8][_0x7914('0x95')];_0x1bd562++){this[_0x7914('0x96')](_0x5344a0[_0x4987a8][_0x1bd562],util[_0x7914('0x4a')](_0x7914('0x97'),_0x5aa671,_0x4987a8+'['+_0x1bd562+']'));}}else{if(!_['isNil'](_0x5344a0[_0x4987a8])){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0x97'),_0x5aa671,_0x4987a8),_0x5344a0[_0x4987a8]);}}}}};AGIVertices[_0x7914('0x10')][_0x7914('0x91')]=function(_0x2b01ad){try{var _0x4d47ef=JSON['parse'](_0x2b01ad);this['recursiveNodeIndex'](_0x4d47ef);return JSON[_0x7914('0x6e')](_0x4d47ef);}catch(_0x3b7dcc){return this[_0x7914('0x92')](_0x2b01ad);}};AGIVertices[_0x7914('0x10')][_0x7914('0x92')]=function(_0x22df6f){var _0x9eacc9=_0x22df6f[_0x7914('0x9a')]('{');for(var _0x25685d=0x1;_0x25685d<_0x9eacc9[_0x7914('0x95')];_0x25685d+=0x1){var _0xad5a2f=_0x9eacc9[_0x25685d][_0x7914('0x9a')]('}');if(_0xad5a2f[_0x7914('0x95')]>0x1){_0x22df6f=_0x22df6f[_0x7914('0x9b')]('{'+_0xad5a2f[0x0]+'}',this[_0x7914('0xd')][_0x7914('0x11')](_0xad5a2f[0x0])[_0x7914('0x9c')]||_0xad5a2f[0x0]);}}if(_0x9eacc9[_0x7914('0x95')]===0x1){return _0x22df6f['toString']();}return this[_0x7914('0x92')](_0x22df6f);};AGIVertices['prototype'][_0x7914('0x9d')]=function(_0x21ae99,_0x32717b){var _0x3b175b=this[_0x7914('0xd')]['getVariable'](_0x21ae99);if(_0x3b175b[_0x7914('0x9e')]===-0x1){return _0x3b175b;}logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x9f'),_0x32717b,_0x3b175b[_0x7914('0x9c')]));return this['channel'][_0x7914('0x99')](_0x32717b,_0x3b175b['extra']);};AGIVertices[_0x7914('0x10')]['isConfigured']=function(_0x4db5bb){return _0x4db5bb&&_0x4db5bb!=='0'&&_0x4db5bb!=='-1'&&_0x4db5bb!=='';};AGIVertices[_0x7914('0x10')][_0x7914('0xa0')]=function(_0x4bb5fd){this[_0x7914('0x2e')]['sync'](this,_0x4bb5fd,'-');_0x4bb5fd[_0x7914('0xa1')]=_0x4bb5fd[_0x7914('0xa0')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x7914('0xa2')]=function(_0x237559){logger['info'](util[_0x7914('0x4a')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x237559['label']));if(!this[_0x7914('0x7f')](_0x237559['text'])){return this['channel'][_0x7914('0xa3')](_0x7914('0xa4'));}var _0x4fa6fe='\x22'+_0x237559[_0x7914('0x54')]+'\x22';if(this[_0x7914('0x7f')](_0x237559[_0x7914('0x74')])){_0x4fa6fe+=','+_0x237559[_0x7914('0x74')];}var _0x217004=this[_0x7914('0xd')][_0x7914('0x4e')](_0x7914('0xa5'),_0x4fa6fe);if(_0x217004[_0x7914('0x9e')]===-0x1){return _0x217004;}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xa6'),_0x4fa6fe));};AGIVertices[_0x7914('0x10')][_0x7914('0xa7')]=function(_0x59245e){logger['info'](util[_0x7914('0x4a')](_0x7914('0xa8'),_0x59245e['label']));if(!this[_0x7914('0x7f')](_0x59245e[_0x7914('0xa9')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xaa'));}var _0x57a037=_0x59245e[_0x7914('0xa9')];if(this[_0x7914('0x7f')](_0x59245e[_0x7914('0x74')])){_0x57a037+=','+_0x59245e[_0x7914('0x74')];}var _0x233fcb=this[_0x7914('0xd')]['exec'](_0x7914('0xab'),_0x57a037);if(_0x233fcb[_0x7914('0x9e')]===-0x1){return _0x233fcb;}var _0x2c7d16=this['getAndSetVariable'](_0x7914('0xac'),_0x7914('0xad'));if(_0x2c7d16['result']===-0x1){return _0x2c7d16;}var _0x330636=this['getAndSetVariable']('RECOG_INPUT()',_0x7914('0xae'));if(_0x330636['result']===-0x1){return _0x330636;}var _0x56769e=this[_0x7914('0x9d')](_0x7914('0xaf'),_0x7914('0xb0'));if(_0x56769e[_0x7914('0x9e')]===-0x1){return _0x56769e;}return this[_0x7914('0xd')][_0x7914('0xa3')](util['format'](_0x7914('0xb1'),_0x57a037));};AGIVertices['prototype'][_0x7914('0x6')]=function(_0x325ca8){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xb2'),_0x325ca8['label']));return this[_0x7914('0xd')]['agi']([_0x325ca8[_0x7914('0xb3')],_0x325ca8['args']]);};AGIVertices[_0x7914('0x10')][_0x7914('0xb4')]=function(_0xf6f3ce){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xb5'),_0xf6f3ce[_0x7914('0xb6')]));if(this[_0x7914('0x7f')](_0xf6f3ce[_0x7914('0x60')])){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xb7'),_0xf6f3ce['timeout']));var _0x4f5658=this['channel']['wait'](_0xf6f3ce[_0x7914('0x60')]);if(_0x4f5658[_0x7914('0x9e')]===-0x1){return _0x4f5658;}}return this['channel'][_0x7914('0xb4')]();};AGIVertices[_0x7914('0x10')][_0x7914('0x3e')]=function(_0x21b101){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x21b101[_0x7914('0xb6')]));if(!this['isConfigured'](_0x21b101['list_id'])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x21b101,_0x7914('0xb8'));}_0x21b101[_0x7914('0xb9')]=moment();if(this[_0x7914('0x7f')](_0x21b101[_0x7914('0xba')])){_0x21b101[_0x7914('0xb9')]=moment()[_0x7914('0xbb')](_0x21b101[_0x7914('0xba')],'minutes');}if(!this[_0x7914('0x7f')](_0x21b101[_0x7914('0x41')])){_0x21b101[_0x7914('0x41')]=0x2;}this[_0x7914('0x36')][_0x7914('0x6b')](this,_0x21b101);return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x21b101[_0x7914('0x3c')],_0x21b101[_0x7914('0x3d')],_0x21b101[_0x7914('0xb9')]));};AGIVertices['prototype'][_0x7914('0xbc')]=function(_0x329bb0){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xbd'),_0x329bb0[_0x7914('0xb6')]));var _0x2ab4b6=this['channel'][_0x7914('0x4e')](_0x329bb0['application'],_0x329bb0[_0x7914('0x74')]);if(_0x2ab4b6[_0x7914('0x9e')]===-0x1){return _0x2ab4b6;}return this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')]('Executed\x20command\x20%s\x20%s',_0x329bb0[_0x7914('0xbe')],_0x329bb0[_0x7914('0x74')]));};AGIVertices[_0x7914('0x10')][_0x7914('0xbf')]=function(_0x39df81){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xc0'),_0x39df81['label']));if(!this[_0x7914('0x7f')](_0x39df81['text'])){return this['channel']['noop']('no\x20text\x20configured');}var _0x587f53='\x22'+_0x39df81[_0x7914('0x54')]+'\x22';if(this['isConfigured'](_0x39df81[_0x7914('0x74')])){_0x587f53+=','+_0x39df81['options'];}var _0x487044=this['channel'][_0x7914('0x4e')](_0x7914('0xa5'),_0x587f53);if(_0x487044[_0x7914('0x9e')]===-0x1){return _0x487044;}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('Executed\x20command\x20MRCPSynth\x20%s',_0x587f53));};AGIVertices[_0x7914('0x10')][_0x7914('0xc1')]=function(_0x517902){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xc2'),_0x517902['label']));if(!this[_0x7914('0x7f')](_0x517902[_0x7914('0x54')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xa4'));}var _0x5d5336='\x22'+_0x517902[_0x7914('0x54')]+'\x22';if(this[_0x7914('0x7f')](_0x517902[_0x7914('0x74')])){_0x5d5336+=','+_0x517902[_0x7914('0x74')];}var _0x1ceaf2=this[_0x7914('0xd')][_0x7914('0x4e')](_0x7914('0xa5'),_0x5d5336);if(_0x1ceaf2[_0x7914('0x9e')]===-0x1){return _0x1ceaf2;}return this[_0x7914('0xd')][_0x7914('0xa3')](util['format'](_0x7914('0xa6'),_0x5d5336));};AGIVertices['prototype']['lumenvoxasr']=function(_0x4ca313){logger[_0x7914('0x2b')](util['format'](_0x7914('0xc3'),_0x4ca313[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x4ca313['grammar'])){return this[_0x7914('0xd')]['noop']('no\x20grammar\x20configured');}var _0x18afa9=_0x4ca313[_0x7914('0xa9')];if(this['isConfigured'](_0x4ca313[_0x7914('0x74')])){_0x18afa9+=','+_0x4ca313[_0x7914('0x74')];}var _0x3a5760=this[_0x7914('0xd')][_0x7914('0x4e')](_0x7914('0xab'),_0x18afa9);if(_0x3a5760[_0x7914('0x9e')]===-0x1){return _0x3a5760;}var _0x1274df=this[_0x7914('0x9d')]('RECOG_CONFIDENCE()',_0x7914('0xc4'));if(_0x1274df[_0x7914('0x9e')]===-0x1){return _0x1274df;}var _0x1ce06c=this[_0x7914('0x9d')](_0x7914('0xc5'),_0x7914('0xc6'));if(_0x1ce06c[_0x7914('0x9e')]===-0x1){return _0x1ce06c;}var _0x478b32=this[_0x7914('0x9d')](_0x7914('0xaf'),_0x7914('0xc7'));if(_0x478b32[_0x7914('0x9e')]===-0x1){return _0x478b32;}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('Executed\x20command\x20MRCPRecog\x20%s',_0x18afa9));};AGIVertices[_0x7914('0x10')]['sestekasr']=function(_0x1ea71d){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xc8'),_0x1ea71d[_0x7914('0xb6')]));if(!this['isConfigured'](_0x1ea71d['grammar'])){return this['channel'][_0x7914('0xa3')](_0x7914('0xaa'));}var _0x13e5e5=_0x1ea71d['grammar'];if(this['isConfigured'](_0x1ea71d[_0x7914('0x74')])){_0x13e5e5+=','+_0x1ea71d[_0x7914('0x74')];}var _0x272cc3=this[_0x7914('0xd')][_0x7914('0x4e')]('MRCPRecog',_0x13e5e5);if(_0x272cc3[_0x7914('0x9e')]===-0x1){return _0x272cc3;}var _0x45dd40=this['getAndSetVariable'](_0x7914('0xac'),_0x7914('0xc9'));if(_0x45dd40[_0x7914('0x9e')]===-0x1){return _0x45dd40;}var _0x5e4434=this[_0x7914('0x9d')](_0x7914('0xc5'),_0x7914('0xca'));if(_0x5e4434['result']===-0x1){return _0x5e4434;}var _0x4486a=this[_0x7914('0x9d')]('RECOG_INSTANCE()',_0x7914('0xcb'));if(_0x4486a[_0x7914('0x9e')]===-0x1){return _0x4486a;}return this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0xb1'),_0x13e5e5));};AGIVertices[_0x7914('0x10')][_0x7914('0xcc')]=function(_0xe9fc06){logger[_0x7914('0x2b')](util['format'](_0x7914('0xcd'),_0xe9fc06[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0xe9fc06['odbc_id'])){return this[_0x7914('0xd')][_0x7914('0x29')](_0xe9fc06,_0x7914('0xce'));}var _0x5789e5=this[_0x7914('0x17')][_0x7914('0x6b')](this,_0xe9fc06[_0x7914('0xcf')]);if(!_0x5789e5){return this[_0x7914('0xd')][_0x7914('0x29')](_0xe9fc06,_0x7914('0xd0'));}if(!this[_0x7914('0x7f')](_0xe9fc06['query'])){return this['channel'][_0x7914('0x29')](_0xe9fc06,'no\x20query\x20configured');}var _0x24fc20=_0xe9fc06['query'][_0x7914('0x50')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xd1'),_0x24fc20));var _0x203b1c=this[_0x7914('0x27')][_0x7914('0x6b')](this,_0x5789e5,_0x24fc20);this['createSquareDetailsReport'][_0x7914('0x6b')](this,_0xe9fc06,_0x24fc20);if(!this[_0x7914('0x7f')](_0xe9fc06[_0x7914('0xd2')])){return this[_0x7914('0xd')]['noop'](_0x7914('0xd3'));}var _0x2075d2=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0xe9fc06[_0x7914('0xd2')]);if(!_0x2075d2){return this[_0x7914('0xd')][_0x7914('0x29')](_0xe9fc06,'no\x20variable\x20found');}var _0x1d8080=this;_0x203b1c[_0x7914('0xd4')](function(_0x5061a9,_0x5048c3){Object[_0x7914('0xd5')](_0x5061a9)['forEach'](function(_0x2028a2){_0x1d8080['channel'][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0xd6'),_0x2075d2,_0x5048c3,_0x2028a2),_0x5061a9[_0x2028a2]);});});this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0xd7'),_0x2075d2),_0x203b1c[_0x7914('0x95')]);return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xd8'),_0x2075d2));};AGIVertices[_0x7914('0x10')][_0x7914('0xd9')]=function(_0xe27b6d){logger[_0x7914('0xda')](util[_0x7914('0x4a')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0xe27b6d[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0xe27b6d['sip_id'])){return this[_0x7914('0xd')][_0x7914('0x29')](_0xe27b6d,_0x7914('0xdb'));}var _0x1e619c=this['getUser'][_0x7914('0x6b')](this,_0xe27b6d[_0x7914('0xdc')]);if(!_0x1e619c){return this[_0x7914('0xd')][_0x7914('0x29')](_0xe27b6d,'no\x20user\x20found');}var _0x14ff40=this[_0x7914('0xd')][_0x7914('0x4e')]('DIAL',[util['format'](_0x7914('0xdd'),_0x1e619c),_0xe27b6d['timeout'],_0xe27b6d[_0x7914('0xde')],_0xe27b6d[_0x7914('0x5e')]]);if(_0x14ff40[_0x7914('0x9e')]===-0x1){return _0x14ff40;}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xdf'),_0x7914('0xe0')));};AGIVertices[_0x7914('0x10')][_0x7914('0xe1')]=function(_0x3985bc){logger[_0x7914('0x2b')](util['format'](_0x7914('0xe2'),_0x3985bc[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x3985bc[_0x7914('0x76')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xe3'));}if(!this[_0x7914('0x7f')](_0x3985bc[_0x7914('0x54')])){return this['channel'][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')]['bot']=!![];this['createSquareDetailsReport'](_0x3985bc);this[_0x7914('0x35')](_0x3985bc['text'],'in','','');this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xe4'),_0x3985bc['text']));var _0x1614fa=this[_0x7914('0x75')]['sync'](this,_0x3985bc);if(_0x1614fa){for(var _0x195e8e in _0x1614fa){if(_0x1614fa[_0x7914('0x8f')](_0x195e8e)){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0xe5'),_0x195e8e['toUpperCase']()),_0x1614fa[_0x195e8e]);}}this['createSquareMessage'](_0x1614fa[_0x7914('0xe6')],'out',_0x7914('0xe1'),'');return this[_0x7914('0xd')][_0x7914('0xa3')](util['format'](_0x7914('0xe7'),_0x1614fa[_0x7914('0xe6')]));}return this[_0x7914('0xd')][_0x7914('0x29')](_0x3985bc,_0x7914('0xe8'));};AGIVertices[_0x7914('0x10')][_0x7914('0xe9')]=function(_0x1dbfc4){logger['info'](util[_0x7914('0x4a')](_0x7914('0xea'),_0x1dbfc4[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x1dbfc4[_0x7914('0xeb')])){return this['channel'][_0x7914('0xa3')]('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x1dbfc4[_0x7914('0x79')])){return this[_0x7914('0xd')][_0x7914('0xa3')]('no\x20client_email\x20configured');}if(!this[_0x7914('0x7f')](_0x1dbfc4[_0x7914('0xec')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xed'));}if(!this['isConfigured'](_0x1dbfc4['dialogflowV2_language'])){return this[_0x7914('0xd')]['noop'](_0x7914('0xee'));}if(!this[_0x7914('0x7f')](_0x1dbfc4['text'])){return this['channel'][_0x7914('0xa3')]('no\x20text\x20configured');}this['channel'][_0x7914('0xef')]=!![];this[_0x7914('0x2e')](_0x1dbfc4);this[_0x7914('0x35')](_0x1dbfc4[_0x7914('0x54')],'in','','');this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xf0'),_0x1dbfc4['text']));var _0x361e8c=this[_0x7914('0x78')][_0x7914('0x6b')](this,_0x1dbfc4);if(_0x361e8c){for(var _0x9d7e57 in _0x361e8c){if(_0x361e8c['hasOwnProperty'](_0x9d7e57)){if(_0x9d7e57!==_0x7914('0xf1')){this[_0x7914('0xd')]['setVariable'](util['format'](_0x7914('0xe5'),_0x9d7e57[_0x7914('0xf2')]()),_0x361e8c[_0x9d7e57]);}}}this[_0x7914('0x35')](_0x361e8c[_0x7914('0xe6')],_0x7914('0xf3'),_0x7914('0xe9'),_0x361e8c[_0x7914('0xf1')]);return this[_0x7914('0xd')]['noop'](util['format'](_0x7914('0xf4'),_0x361e8c[_0x7914('0xe6')]));}return this['channel']['error'](_0x1dbfc4,'DialogflowV2\x20is\x20unreachable');};AGIVertices['prototype'][_0x7914('0xf5')]=function(_0x593ca1){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0xf6'),_0x593ca1['label']));if(!this['isConfigured'](_0x593ca1[_0x7914('0xf7')])){return this['channel'][_0x7914('0xa3')](_0x7914('0xf8'));}if(!this['isConfigured'](_0x593ca1['username'])){return this[_0x7914('0xd')]['noop'](_0x7914('0xf9'));}if(!this['isConfigured'](_0x593ca1[_0x7914('0xfa')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xfb'));}if(!this['isConfigured'](_0x593ca1[_0x7914('0xfc')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')]['bot']=!![];this['createSquareDetailsReport'](_0x593ca1);this[_0x7914('0x35')](_0x593ca1[_0x7914('0x54')],'in','','');this[_0x7914('0xd')][_0x7914('0xa3')](util['format']('Trying\x20SestekNDA:\x20%s',_0x593ca1[_0x7914('0x54')]));var _0x2ea023=this[_0x7914('0xfd')][_0x7914('0x6b')](this,_0x593ca1);if(_0x2ea023){for(var _0x20d92c in _0x2ea023){if(_0x2ea023[_0x7914('0x8f')](_0x20d92c)){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0xfe'),_0x20d92c['toUpperCase']()),_0x2ea023[_0x20d92c]);}}this[_0x7914('0x35')](_0x2ea023[_0x7914('0xe6')],_0x7914('0xf3'),_0x7914('0xf5'),'');if(_0x2ea023[_0x7914('0xff')]){this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x100'),_0x2ea023['audiofile']));var _0x4ad444=this[_0x7914('0xd')]['streamFile'](_0x2ea023['audiofile']);try{fs[_0x7914('0x101')](_0x2ea023['audiofile']+_0x7914('0x102'));}catch(_0x241d3c){logger['error'](_0x241d3c);}return _0x4ad444;}else{return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('SestekNDA\x20Result\x20%s',_0x2ea023[_0x7914('0xe6')]));}}return this[_0x7914('0xd')][_0x7914('0x29')](_0x593ca1,_0x7914('0x103'));};AGIVertices[_0x7914('0x10')][_0x7914('0x104')]=function(_0x4c9da9){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x105'),_0x4c9da9[_0x7914('0xb6')]));return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0x104'));};AGIVertices[_0x7914('0x10')][_0x7914('0x106')]=function(_0xd9154e){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x107'),_0xd9154e[_0x7914('0xb6')]));var _0x29194b='';if(_0xd9154e['trunk_id']){if(!this[_0x7914('0x7f')](_0xd9154e['trunk_id'])){return this[_0x7914('0xd')][_0x7914('0x29')](_0xd9154e,_0x7914('0x108'));}else{var _0x48051f=parseInt(_0xd9154e['trunk_id'],0xa);if(isNaN(_0x48051f)){_0x29194b=_0xd9154e[_0x7914('0x109')];}else{_0x29194b=this[_0x7914('0x10a')][_0x7914('0x6b')](this,_0xd9154e[_0x7914('0x109')]);if(!_0x29194b){return this[_0x7914('0xd')][_0x7914('0x29')](_0xd9154e,'no\x20trunk\x20found');}}}}else if(_0xd9154e[_0x7914('0x10b')]){_0x29194b=_0xd9154e[_0x7914('0x10b')];}else{return this[_0x7914('0xd')][_0x7914('0x29')](_0xd9154e,_0x7914('0x108'));}var _0x31849d=this[_0x7914('0xd')][_0x7914('0x4e')]('DIAL',[util[_0x7914('0x4a')](_0x7914('0x10c'),_0x29194b,_0xd9154e[_0x7914('0x3c')]),_0xd9154e['timeout'],_0xd9154e[_0x7914('0xde')],_0xd9154e[_0x7914('0x5e')]]);if(_0x31849d[_0x7914('0x9e')]===-0x1){return _0x31849d;}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('Executed\x20command\x20%s',_0x7914('0xe0')));};AGIVertices[_0x7914('0x10')]['finally']=function(_0x38e71f){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x38e71f[_0x7914('0xb6')]));return this[_0x7914('0xd')]['noop'](_0x7914('0x10d'));};AGIVertices[_0x7914('0x10')][_0x7914('0xb')]=function(_0x227ba6){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x10e'),_0x227ba6[_0x7914('0xb6')]));if(_0x227ba6[_0x7914('0xa1')]===0x0){return this['maxRetry'](_0x227ba6);}_0x227ba6[_0x7914('0xa1')]-=0x1;if(!this[_0x7914('0x7f')](_0x227ba6[_0x7914('0x10f')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x227ba6,_0x7914('0x110'));}var _0x54ed99=this[_0x7914('0x1b')][_0x7914('0x6b')](this,_0x227ba6['file_id']);if(!_0x54ed99){return this[_0x7914('0xd')][_0x7914('0x29')](_0x227ba6,_0x7914('0x111'));}if(!this[_0x7914('0x7f')](_0x227ba6[_0x7914('0xd2')])){return this['channel'][_0x7914('0x29')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x57fe81=this[_0x7914('0xd')][_0x7914('0x112')](_0x54ed99,_0x227ba6[_0x7914('0x113')],_0x227ba6[_0x7914('0x114')]);var _0x131d85=_0x57fe81[_0x7914('0x9e')]?_0x57fe81['result'][_0x7914('0x40')]():'';logger['info'](_0x7914('0x115'),JSON['stringify'](_0x57fe81));if(_0x57fe81[_0x7914('0x9e')]===-0x1){this[_0x7914('0x2e')]['sync'](this,_0x227ba6,_0x131d85);return _0x57fe81;}else if(_0x57fe81['extra']==='timeout'){_0x57fe81['result']=_0x131d85[_0x7914('0x95')]>=parseInt(_0x227ba6[_0x7914('0x116')])?'x':'i';}else{_0x57fe81[_0x7914('0x9e')]=_0x131d85['length']>=parseInt(_0x227ba6[_0x7914('0x116')])&&_0x131d85[_0x7914('0x95')]<=parseInt(_0x227ba6['maxdigit'])?'x':'i';}var _0x361a29=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0x227ba6[_0x7914('0xd2')]);if(!_0x361a29){return this[_0x7914('0xd')]['error'](_0x227ba6,'no\x20variable\x20found');}this['channel']['setVariable'](_0x361a29,_0x131d85);if(this[_0x7914('0x7f')](_0x227ba6['hiddendigitsnum'])){var _0x5d958c=parseInt(_0x227ba6[_0x7914('0x117')],0xa);var _0x54533a=rs[_0x7914('0x118')]({'charset':'*','length':_0x5d958c});var _0x5d6caf=_0x131d85[_0x7914('0x95')];if(_0x5d6caf>0x0){if(_0x5d6caf>_0x5d958c){this[_0x7914('0x2e')]['sync'](this,_0x227ba6,_0x227ba6[_0x7914('0x119')]===_0x7914('0x11a')?_0x54533a+_0x131d85[_0x7914('0x11b')](_0x5d958c):_0x131d85['substr'](0x0,_0x5d6caf-_0x5d958c)+_0x54533a);}else{this[_0x7914('0x2e')]['sync'](this,_0x227ba6,rs['generate']({'charset':'*','length':_0x5d6caf}));}}else{this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x227ba6,'');}}else{this['createSquareDetailsReport'][_0x7914('0x6b')](this,_0x227ba6,_0x131d85);}return _0x57fe81;};AGIVertices['prototype'][_0x7914('0xc')]=function(_0x27b1fa){logger['info'](util[_0x7914('0x4a')](_0x7914('0x11c'),_0x27b1fa[_0x7914('0xb6')]));return this[_0x7914('0xb')](_0x27b1fa);};AGIVertices['prototype'][_0x7914('0x11d')]=function(_0x34d851){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x34d851[_0x7914('0xb6')]));this[_0x7914('0x2e')]['sync'](this,_0x34d851,_0x34d851[_0x7914('0x11e')]);return this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')]('GOAL\x20%s',_0x34d851[_0x7914('0x11e')]));};AGIVertices[_0x7914('0x10')][_0x7914('0x11f')]=function(_0x4fec5c){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x120'),_0x4fec5c['label']));if(!this[_0x7914('0x7f')](_0x4fec5c[_0x7914('0x82')])||!this['isConfigured'](_0x4fec5c[_0x7914('0x83')])){return this[_0x7914('0xd')][_0x7914('0xa3')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x7914('0x7f')](_0x4fec5c['text'])){return this['channel'][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x121'),_0x4fec5c[_0x7914('0x54')]));var _0x54f7fa=this[_0x7914('0x81')][_0x7914('0x6b')](this,_0x4fec5c);if(_0x54f7fa){this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')]('aws\x20Polly\x20%s\x20file\x20created',_0x54f7fa));var _0x41b27f=this[_0x7914('0xd')][_0x7914('0x122')](_0x54f7fa);try{fs[_0x7914('0x101')](_0x54f7fa+_0x7914('0x102'));}catch(_0x108a63){logger[_0x7914('0x29')](_0x108a63);}return _0x41b27f;}return this[_0x7914('0xd')][_0x7914('0x29')](_0x4fec5c,_0x7914('0x123'));};AGIVertices[_0x7914('0x10')][_0x7914('0x124')]=function(_0x4e52a5){logger[_0x7914('0x2b')](util['format'](_0x7914('0x125'),_0x4e52a5['label']));if(!this[_0x7914('0x7f')](_0x4e52a5[_0x7914('0x82')])||!this[_0x7914('0x7f')](_0x4e52a5[_0x7914('0x83')])){return this[_0x7914('0xd')]['noop'](_0x7914('0x126'));}if(!this[_0x7914('0x7f')](_0x4e52a5[_0x7914('0x8a')])){return this['channel']['noop'](_0x7914('0x127'));}if(!this[_0x7914('0x7f')](_0x4e52a5[_0x7914('0x54')])){return this[_0x7914('0xd')][_0x7914('0xa3')]('no\x20text\x20configured');}this[_0x7914('0xd')][_0x7914('0xef')]=!![];this['createSquareDetailsReport'](_0x4e52a5);this[_0x7914('0x35')](_0x4e52a5[_0x7914('0x54')],'in','','');this[_0x7914('0xd')]['noop'](util['format']('Trying\x20Amazon\x20Lex:\x20%s',_0x4e52a5['text']));var _0x1ebeb5=this[_0x7914('0x88')][_0x7914('0x6b')](this,_0x4e52a5);if(_0x1ebeb5){for(var _0x361e7d in _0x1ebeb5){if(_0x1ebeb5['hasOwnProperty'](_0x361e7d)&&_[_0x7914('0x90')](_0x1ebeb5[_0x361e7d])){this['channel'][_0x7914('0x99')](util[_0x7914('0x4a')]('AWS_LEX_%s',_0x361e7d['toUpperCase']()),_0x1ebeb5[_0x361e7d]);}}if(_[_0x7914('0x38')](_0x1ebeb5[_0x7914('0x72')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0x128'));}else{this['createSquareMessage'](_0x1ebeb5[_0x7914('0x72')],'out',_0x7914('0x129'),'');return this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x12a'),_0x1ebeb5[_0x7914('0x72')]));}}return this[_0x7914('0xd')]['error'](_0x4e52a5,_0x7914('0x12b'));};AGIVertices[_0x7914('0x10')][_0x7914('0x12c')]=function(_0x2931f0){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x12d'),_0x2931f0[_0x7914('0xb6')],_0x2931f0[_0x7914('0x60')]));if(!this['isConfigured'](_0x2931f0[_0x7914('0x76')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xe3'));}var _0x443940=_0x7914('0x12e');var _0xde3f7d=util[_0x7914('0x4a')](_0x7914('0x12f'),FILES_PATH,rs['generate'](0x4));var _0xa0f653=util['format'](_0x7914('0x97'),_0xde3f7d,_0x443940);var _0x201340=!![];if(_0x2931f0[_0x7914('0x130')]===_0x7914('0x131')){_0x201340=![];}var _0xcbeeb1=this[_0x7914('0xd')][_0x7914('0x132')](_0xde3f7d,_0x443940,_0x2931f0[_0x7914('0x133')],_0x2931f0[_0x7914('0x60')],undefined,_0x201340);if(_0xcbeeb1[_0x7914('0x9e')]!==-0x1){this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x134'),_0xa0f653));var _0x2fe4f6=this[_0x7914('0x8b')][_0x7914('0x6b')](this,_0x2931f0,_0xa0f653);if(_0x2fe4f6){for(var _0x2e459c in _0x2fe4f6){if(_0x2fe4f6[_0x7914('0x8f')](_0x2e459c)){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')]('GOOGLE_ASR_%s',_0x2e459c[_0x7914('0xf2')]()),_0x2fe4f6[_0x2e459c]);}}return this[_0x7914('0xd')]['noop'](util['format'](_0x7914('0x135'),JSON[_0x7914('0x6e')](_0x2fe4f6)));}}return _0xcbeeb1;};AGIVertices['prototype']['tildeasr']=function(_0x4ad436){logger['info'](util['format'](_0x7914('0x136'),_0x4ad436['label']));if(!this[_0x7914('0x7f')](_0x4ad436['appid'])){return this['channel']['noop'](_0x7914('0x137'));}if(!this['isConfigured'](_0x4ad436[_0x7914('0x8d')])){return this['channel'][_0x7914('0xa3')](_0x7914('0x138'));}var _0x5cc0b5=_0x7914('0x12e');var _0x4d710e=util[_0x7914('0x4a')](_0x7914('0x12f'),FILES_PATH,rs[_0x7914('0x118')](0x4));var _0x21c2f2=util['format']('%s.%s',_0x4d710e,_0x5cc0b5);var _0x55f5a5=!![];if(_0x4ad436['beep']==='NOBEEP'){_0x55f5a5=![];}var _0x4b3682=this[_0x7914('0xd')]['recordFile'](_0x4d710e,_0x5cc0b5,_0x4ad436[_0x7914('0x133')],_0x4ad436[_0x7914('0x60')],undefined,_0x55f5a5);if(_0x4b3682[_0x7914('0x9e')]!==-0x1){this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x139'),_0x21c2f2));var _0x1df60e=this['tildeASR'][_0x7914('0x6b')](this,_0x4ad436,_0x21c2f2);if(_0x1df60e){for(var _0x5a4bc5 in _0x1df60e){if(_0x1df60e['hasOwnProperty'](_0x5a4bc5)){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0x13a'),_0x5a4bc5[_0x7914('0xf2')]()),_0x1df60e[_0x5a4bc5]);}}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x13b'),JSON[_0x7914('0x6e')](_0x1df60e)));}}return _0x4b3682;};AGIVertices['prototype'][_0x7914('0x13c')]=function(_0x4c21da){logger[_0x7914('0x2b')](util['format'](_0x7914('0x13d'),_0x4c21da[_0x7914('0xb6')]));return this[_0x7914('0xd')]['continueAt'](_0x4c21da[_0x7914('0x13e')],_0x4c21da['extension'],_0x4c21da['priority']);};AGIVertices[_0x7914('0x10')][_0x7914('0x13f')]=function(_0xd0526b){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x140'),_0xd0526b[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0xd0526b[_0x7914('0x141')])){return this[_0x7914('0xd')]['error'](_0xd0526b,'no\x20condition\x20configured');}try{var _0x211ea7=eval(_0xd0526b[_0x7914('0x141')])?_0x7914('0x142'):_0x7914('0x143');this[_0x7914('0xd')][_0x7914('0xa3')](util['format'](_0x7914('0x144'),_0xd0526b['condition'],_0x211ea7));return{'code':0xc8,'result':_0x211ea7};}catch(_0x26a6ac){return{'code':0xc8,'result':_0x7914('0x143')};}};AGIVertices[_0x7914('0x10')][_0x7914('0x145')]=function(_0xd12a72){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x146'),_0xd12a72['label']));if(!this[_0x7914('0x7f')](_0xd12a72[_0x7914('0x147')])){return this[_0x7914('0xd')]['error'](_0xd12a72,_0x7914('0x148'));}var _0x438f9c=this[_0x7914('0x21')][_0x7914('0x6b')](this,_0xd12a72[_0x7914('0x147')]);if(!_0x438f9c){return this['channel']['error'](_0xd12a72,_0x7914('0x149'));}for(var _0x2b4ab3=0x0;_0x2b4ab3<_0x438f9c['length'];_0x2b4ab3+=0x1){var _0x1f26a5=this['channel'][_0x7914('0x11')](util['format'](_0x7914('0x14a'),_0x438f9c[_0x2b4ab3]));if(_0x1f26a5[_0x7914('0x9e')]===-0x1){return _0x1f26a5;}logger['info'](util[_0x7914('0x4a')](_0x7914('0x14b'),_0x438f9c[_0x2b4ab3],_0x1f26a5[_0x7914('0x9c')]));if(_0x1f26a5['extra']==='true'){logger[_0x7914('0x2b')](util['format'](_0x7914('0x14b'),_0x438f9c[_0x2b4ab3],_0x7914('0x142')));this['channel']['noop'](util[_0x7914('0x4a')](_0x7914('0x14b'),_0x438f9c[_0x2b4ab3],'true'));return{'code':0xc8,'result':_0x7914('0x142')};}else{logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x14b'),_0x438f9c[_0x2b4ab3],_0x7914('0x143')));this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')]('IFTIME\x20%s\x20%s',_0x438f9c[_0x2b4ab3],'false'));}}return{'code':0xc8,'result':_0x7914('0x143')};};AGIVertices[_0x7914('0x10')][_0x7914('0x14c')]=function(_0x28ba72){logger['info'](util[_0x7914('0x4a')](_0x7914('0x14d'),_0x28ba72[_0x7914('0xb6')]));return this[_0x7914('0xd')][_0x7914('0x14c')]();};AGIVertices['prototype'][_0x7914('0x14e')]=function(_0x426562){logger['info'](util['format'](_0x7914('0x14f'),_0x426562['label']));if(!this[_0x7914('0x7f')](_0x426562['key'])){return this['channel'][_0x7914('0xa3')](_0x7914('0xe3'));}var _0x1f6490=_0x7914('0x12e');var _0x386fb3=util[_0x7914('0x4a')](_0x7914('0x12f'),FILES_PATH,rs[_0x7914('0x118')](0x4));var _0x4a7782=util[_0x7914('0x4a')](_0x7914('0x97'),_0x386fb3,_0x1f6490);var _0x577b40=!![];if(_0x426562['beep']===_0x7914('0x131')){_0x577b40=![];}var _0x487560=this['channel'][_0x7914('0x132')](_0x386fb3,_0x1f6490,_0x426562[_0x7914('0x133')],_0x426562['timeout'],undefined,_0x577b40);if(_0x487560['result']!==-0x1){this[_0x7914('0xd')][_0x7914('0xa3')](util['format']('ispeech\x20%s\x20file\x20created',_0x4a7782));var _0x162ef0=this[_0x7914('0x7e')]['sync'](this,_0x426562,_0x4a7782);if(_0x162ef0){for(var _0x2c3b09 in _0x162ef0){if(_0x162ef0[_0x7914('0x8f')](_0x2c3b09)){this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')]('ISPEECH_ASR_%s',_0x2c3b09[_0x7914('0xf2')]()),_0x162ef0[_0x2c3b09]);}}return this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x150'),JSON[_0x7914('0x6e')](_0x162ef0)));}}return _0x487560;};AGIVertices['prototype']['ispeechtts']=function(_0x599587){logger[_0x7914('0x2b')](util['format']('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x599587['label']));if(!this['isConfigured'](_0x599587[_0x7914('0x76')])){return this[_0x7914('0xd')][_0x7914('0xa3')]('no\x20key\x20configured');}if(!this['isConfigured'](_0x599587[_0x7914('0x54')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x151'),_0x599587[_0x7914('0x54')]));var _0x2a61e8=this[_0x7914('0x7b')]['sync'](this,_0x599587);if(_0x2a61e8){this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x152'),_0x2a61e8));var _0xc98dd6=this[_0x7914('0xd')][_0x7914('0x122')](_0x2a61e8,_0x599587[_0x7914('0x133')]);try{fs[_0x7914('0x101')](_0x2a61e8+'.wav');}catch(_0x1701c1){logger[_0x7914('0x29')](_0x1701c1);}return _0xc98dd6;}return this[_0x7914('0xd')][_0x7914('0x29')](_0x599587,_0x7914('0x153'));};AGIVertices[_0x7914('0x10')]['login']=function(_0x542527){logger[_0x7914('0x2b')](util['format'](_0x7914('0x154'),_0x542527[_0x7914('0xb6')]));if(!this['isConfigured'](_0x542527[_0x7914('0x155')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x542527,'no\x20find\x20by\x20configured');}logger['info'](util[_0x7914('0x4a')](_0x7914('0x156'),this[_0x7914('0xd')]['callerid'],_0x542527[_0x7914('0x155')]));var _0x3029ba=this[_0x7914('0x48')]['sync'](this,_0x542527[_0x7914('0x155')]);if(_0x3029ba){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x157'),this[_0x7914('0xd')][_0x7914('0x31')],_0x542527[_0x7914('0x155')]));this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x7914('0xd')][_0x7914('0x31')],_0x542527[_0x7914('0x155')]));return{'code':0xc8,'result':_0x7914('0x158')};}else{logger[_0x7914('0x2b')](util['format'](_0x7914('0x159'),this[_0x7914('0xd')][_0x7914('0x31')],_0x542527['findBy']));this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x159'),this[_0x7914('0xd')]['callerid'],_0x542527[_0x7914('0x155')]));return{'code':0xc8,'result':_0x7914('0x15a')};}};AGIVertices[_0x7914('0x10')][_0x7914('0x15b')]=function(_0x427cf9){logger['info'](util['format'](_0x7914('0x15c'),_0x427cf9[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x427cf9[_0x7914('0x155')])){return this[_0x7914('0xd')]['error'](_0x427cf9,_0x7914('0x15d'));}logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x156'),this[_0x7914('0xd')][_0x7914('0x31')],_0x427cf9['findBy']));var _0x16716b=this[_0x7914('0x47')][_0x7914('0x6b')](this,_0x427cf9['findBy']);if(_0x16716b){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x157'),this['channel'][_0x7914('0x31')],_0x427cf9[_0x7914('0x155')]));this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x7914('0xd')]['callerid'],_0x427cf9['findBy']));return{'code':0xc8,'result':_0x7914('0x158')};}else{logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x159'),this['channel'][_0x7914('0x31')],_0x427cf9['findBy']));this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x159'),this[_0x7914('0xd')][_0x7914('0x31')],_0x427cf9[_0x7914('0x155')]));return{'code':0xc8,'result':_0x7914('0x15a')};}};AGIVertices[_0x7914('0x10')][_0x7914('0x15e')]=function(_0xf4f683){logger['info'](util[_0x7914('0x4a')](_0x7914('0x15f'),_0xf4f683[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0xf4f683[_0x7914('0x160')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0xf4f683,_0x7914('0x161'));}this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x162'),_0xf4f683['operation']));var _0x44ed32=eval(_0xf4f683[_0x7914('0x160')]);if(!this[_0x7914('0x7f')](_0xf4f683[_0x7914('0xd2')])){return this[_0x7914('0xd')][_0x7914('0xa3')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x48a561=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0xf4f683[_0x7914('0xd2')]);if(!_0x48a561){return this[_0x7914('0xd')]['error'](_0xf4f683,'no\x20variable\x20found');}if(_[_0x7914('0x98')](_0x44ed32)){var _0x56770c=this;_0x44ed32[_0x7914('0xd4')](function(_0x22a213,_0x9a37c1){_0x56770c[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0x163'),_0x48a561,_0x9a37c1),_0x22a213);});return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x164'),_0x48a561));}else{return this['channel'][_0x7914('0x99')](_0x48a561,_0x44ed32);}};AGIVertices[_0x7914('0x10')]['menu']=function(_0x1b71e1){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x165'),_0x1b71e1['label']));if(_0x1b71e1['retry']===0x0){return this['maxRetry'](_0x1b71e1);}_0x1b71e1['retry']-=0x1;if(!this[_0x7914('0x7f')](_0x1b71e1['file_id'])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x1b71e1,_0x7914('0x110'));}var _0xde2770=this[_0x7914('0x1b')][_0x7914('0x6b')](this,_0x1b71e1['file_id']);if(!_0xde2770){return this['channel']['error'](_0x1b71e1,_0x7914('0x111'));}var _0x4f5d4a=this[_0x7914('0xd')]['getData'](_0xde2770,_0x1b71e1[_0x7914('0x113')],_0x1b71e1[_0x7914('0x166')]);var _0x346c77=_0x4f5d4a[_0x7914('0x9e')];if(_0x4f5d4a[_0x7914('0x9e')]===-0x1){this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x1b71e1,'-1');return _0x4f5d4a;}else if(_0x4f5d4a[_0x7914('0x9c')]==='timeout'){_0x4f5d4a[_0x7914('0x9e')]=_0x4f5d4a[_0x7914('0x9e')]['length']>0x0?_0x4f5d4a['result']:'t';}else if(_[_0x7914('0x37')](_0x4f5d4a['result'])){_0x4f5d4a['result']='#';_0x346c77='#';}if(!this[_0x7914('0x7f')](_0x1b71e1[_0x7914('0xd2')])){this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xd3'));}else{var _0x354c42=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0x1b71e1[_0x7914('0xd2')]);if(!_0x354c42){return this[_0x7914('0xd')]['error'](_0x1b71e1,_0x7914('0x167'));}this['channel'][_0x7914('0x99')](_0x354c42,_0x346c77);}this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x1b71e1,_0x346c77);return _0x4f5d4a;};AGIVertices[_0x7914('0x10')][_0x7914('0xa3')]=function(_0xda0f37){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0xda0f37[_0x7914('0xb6')]));return this[_0x7914('0xd')]['noop'](_0xda0f37[_0x7914('0x168')]||_0xda0f37[_0x7914('0xb6')]);};AGIVertices[_0x7914('0x10')][_0x7914('0x169')]=function(_0x319dfb){logger[_0x7914('0x2b')](util['format'](_0x7914('0x16a'),_0x319dfb['label']));if(!this[_0x7914('0x7f')](_0x319dfb[_0x7914('0x155')])){return this['channel'][_0x7914('0x29')](_0x319dfb,_0x7914('0x15d'));}logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x156'),this[_0x7914('0xd')][_0x7914('0x31')],_0x319dfb[_0x7914('0x155')]));var _0x36aba1=this[_0x7914('0x42')][_0x7914('0x6b')](this,_0x319dfb[_0x7914('0x16b')]);var _0x296dcf=this[_0x7914('0x44')][_0x7914('0x6b')](this,_0x319dfb[_0x7914('0x155')],_0x36aba1);if(_0x296dcf){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x157'),this['channel']['callerid'],_0x319dfb[_0x7914('0x155')]));this[_0x7914('0xd')][_0x7914('0xa3')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x319dfb[_0x7914('0x155')]));return{'code':0xc8,'result':_0x7914('0x158')};}else{logger[_0x7914('0x2b')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x7914('0xd')][_0x7914('0x31')],_0x319dfb[_0x7914('0x155')]));this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x157'),this['channel'][_0x7914('0x31')],_0x319dfb['findBy']));return{'code':0xc8,'result':_0x7914('0x15a')};}};AGIVertices[_0x7914('0x10')][_0x7914('0x16c')]=function(_0xfef2ce){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x16d'),_0xfef2ce[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0xfef2ce[_0x7914('0x10f')])){return this[_0x7914('0xd')]['error'](_0xfef2ce,_0x7914('0x110'));}var _0x1f810e=this[_0x7914('0x1b')][_0x7914('0x6b')](this,_0xfef2ce['file_id']);if(!_0x1f810e){return this[_0x7914('0xd')][_0x7914('0x29')](_0xfef2ce,'no\x20file\x20audio\x20found');}var _0x169f1f=this['channel']['exec'](_0x7914('0x16e'),[_0x1f810e,_0xfef2ce['opts']]);if(_0x169f1f['result']===-0x1){return _0x169f1f;}return this['channel']['noop'](util['format'](_0x7914('0x16f'),_0x7914('0x16e'),_0x1f810e));};AGIVertices[_0x7914('0x10')][_0x7914('0x170')]=function(_0x19328b){logger[_0x7914('0x2b')](util['format']('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x19328b['label']));if(!this[_0x7914('0x7f')](_0x19328b[_0x7914('0x171')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x19328b,_0x7914('0x172'));}var _0x28a6e3='';var _0x4f94ef=parseInt(_0x19328b[_0x7914('0x171')],0xa);if(isNaN(_0x4f94ef)){_0x28a6e3=_0x19328b[_0x7914('0x171')];}else{_0x28a6e3=this[_0x7914('0x173')][_0x7914('0x6b')](this,_0x19328b['queue_id']);if(!_0x28a6e3){return this[_0x7914('0xd')][_0x7914('0x29')](_0x19328b,_0x7914('0x174'));}}var _0x308631='';if(this[_0x7914('0x7f')](_0x19328b[_0x7914('0x10f')])){var _0x59c0ef=this['getSound'][_0x7914('0x6b')](this,_0x19328b['file_id']);if(_0x59c0ef){_0x308631=_0x59c0ef;}}this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x19328b,_0x28a6e3);if(_0x19328b[_0x7914('0xde')][_0x7914('0x175')]('x')<0x0){_0x19328b[_0x7914('0xde')]+='x';}if(_0x19328b[_0x7914('0xde')][_0x7914('0x175')]('X')<0x0){_0x19328b[_0x7914('0xde')]+='X';}this[_0x7914('0xd')][_0x7914('0x99')](_0x7914('0x176'),_0x28a6e3?_0x28a6e3[_0x7914('0x177')]():'');var _0x1ee896=this['channel']['exec']('QUEUE',[_0x28a6e3,_0x19328b[_0x7914('0xde')],_0x19328b[_0x7914('0x5e')],_0x308631,_0x19328b[_0x7914('0x60')],_0x19328b[_0x7914('0x6')],_0x19328b['macro'],_0x19328b[_0x7914('0x178')],'',_0x19328b['position']]);if(_0x1ee896[_0x7914('0x9e')]===-0x1){return _0x1ee896;}return this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x16f'),_0x7914('0x179'),_0x28a6e3));};AGIVertices[_0x7914('0x10')]['record']=function(_0x2535aa){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x17a'),_0x2535aa[_0x7914('0xb6')]));var _0x455c13=_0x2535aa['recordingFormat']||_0x7914('0x12e');var _0x968f3e=util['format'](_0x7914('0x17b'),this[_0x7914('0xd')]['uniqueid'],rs[_0x7914('0x118')](0x5));var _0x423f86=util[_0x7914('0x4a')](_0x7914('0x17c'),FILES_PATH,_0x968f3e,_0x455c13);var _0x4bc359=util[_0x7914('0x4a')](_0x7914('0x12f'),FILES_PATH,_0x968f3e);this[_0x7914('0x32')][_0x7914('0x6b')](this,_0x2535aa,_0x968f3e,_0x423f86);this['channel']['setVariable']('RECORDING_SAVENAME',_0x968f3e);logger[_0x7914('0x2b')](_0x7914('0x17d'),_0x4bc359,_0x455c13,_0x2535aa['escape_digits'],_0x2535aa[_0x7914('0x60')]);return this[_0x7914('0xd')][_0x7914('0x132')](_0x4bc359,_0x455c13,_0x2535aa[_0x7914('0x17e')],_0x2535aa[_0x7914('0x60')],undefined,!![]);};AGIVertices[_0x7914('0x10')][_0x7914('0x17f')]=function(_0x2339a2){logger['info'](util[_0x7914('0x4a')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x2339a2['label']));if(!this[_0x7914('0x7f')](_0x2339a2[_0x7914('0x5e')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0x180'));}var _0x47bc75=this[_0x7914('0x5d')][_0x7914('0x6b')](this,_0x2339a2);logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x181'),util['inspect'](_0x47bc75,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x2339a2[_0x7914('0xd2')])){return this[_0x7914('0xd')]['noop']('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x66e788=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0x2339a2[_0x7914('0xd2')]);if(!_0x66e788){return this[_0x7914('0xd')][_0x7914('0x29')](_0x2339a2,_0x7914('0x167'));}this[_0x7914('0xd')][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0x182'),_0x66e788),_0x47bc75[_0x7914('0x70')]?_0x47bc75[_0x7914('0x70')]:_0x7914('0x183'));this['channel'][_0x7914('0x99')](util[_0x7914('0x4a')](_0x7914('0x184'),_0x66e788),_0x47bc75[_0x7914('0x71')]?_0x47bc75[_0x7914('0x71')]:'OK');if(_0x47bc75[_0x7914('0x64')]){try{this[_0x7914('0x96')](_0x47bc75[_0x7914('0x64')],_0x66e788);}catch(_0x1ed357){logger[_0x7914('0x29')](util[_0x7914('0x4a')](_0x7914('0x185'),_0x66e788));}}return this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0xd8'),_0x66e788));};AGIVertices[_0x7914('0x10')][_0x7914('0x186')]=function(_0x2d4245){logger['info'](util[_0x7914('0x4a')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x2d4245['label']));return this[_0x7914('0xd')][_0x7914('0x187')](_0x2d4245[_0x7914('0x188')]['replace'](/\s+/g,''),_0x2d4245[_0x7914('0x17e')]);};AGIVertices[_0x7914('0x10')]['saynumber']=function(_0xe40415){logger['info'](util[_0x7914('0x4a')](_0x7914('0x189'),_0xe40415[_0x7914('0xb6')]));return this[_0x7914('0xd')]['sayNumber'](_0xe40415[_0x7914('0x61')][_0x7914('0x50')](/\s+/g,''),_0xe40415[_0x7914('0x17e')]);};AGIVertices[_0x7914('0x10')]['sayphonetic']=function(_0x381b7a){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x18a'),_0x381b7a[_0x7914('0xb6')]));return this[_0x7914('0xd')][_0x7914('0x18b')](_0x381b7a[_0x7914('0x54')],_0x381b7a[_0x7914('0x17e')]);};AGIVertices[_0x7914('0x10')][_0x7914('0x18c')]=function(_0x3abe67){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x18d'),_0x3abe67['label']));if(!this[_0x7914('0x7f')](_0x3abe67[_0x7914('0x18e')])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0x18f'));}var _0x15f5db=this['getMailAccount'][_0x7914('0x6b')](this,_0x3abe67[_0x7914('0x18e')]);if(!_0x15f5db||!_0x15f5db[_0x7914('0x190')]){return this[_0x7914('0xd')][_0x7914('0x29')](_0x3abe67,_0x7914('0x191'));}var _0x3856f0={'from':util[_0x7914('0x4a')](_0x7914('0x192'),_0x15f5db[_0x7914('0x13')],_0x15f5db['email']||_0x15f5db[_0x7914('0x190')][_0x7914('0x193')]),'to':_0x3abe67['to']||'','cc':_0x3abe67['cc']||'','bcc':_0x3abe67[_0x7914('0x194')]||'','subject':_0x3abe67[_0x7914('0x195')],'html':_0x3abe67[_0x7914('0x54')],'text':_0x3abe67[_0x7914('0x54')]};if(this[_0x7914('0x7f')](_0x3abe67[_0x7914('0x196')])){}logger['debug']('sendMail\x20message',JSON[_0x7914('0x6e')](_0x3856f0));this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x3abe67,_0x3abe67[_0x7914('0x18e')]);this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x15f5db[_0x7914('0x13')]));this[_0x7914('0x20')][_0x7914('0x6b')](this,_0x15f5db['smtpOptions'],_0x3856f0);return this['channel'][_0x7914('0xa3')](_0x7914('0x197'));};AGIVertices[_0x7914('0x10')][_0x7914('0x198')]=function(_0xe81a09){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x199'),_0xe81a09[_0x7914('0xb6')]));return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0x19a'));};AGIVertices[_0x7914('0x10')][_0x7914('0x19b')]=function(_0x4a07cf){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x19c'),_0x4a07cf[_0x7914('0xb6')]));if(!this['isConfigured'](_0x4a07cf['sms_account_id'])){return this['channel']['noop'](_0x7914('0x19d'));}var _0x1d0b6f=this[_0x7914('0x19e')][_0x7914('0x6b')](this,_0x4a07cf[_0x7914('0x19f')]);if(!_0x1d0b6f){return this[_0x7914('0xd')][_0x7914('0x29')](_0x4a07cf,_0x7914('0x1a0'));}var _0x14d17a={'body':_0x4a07cf[_0x7914('0x1a1')],'phone':_0x4a07cf['to']||'','SmsAccountId':_0x1d0b6f['id']};logger['debug'](_0x7914('0x1a2'),JSON[_0x7914('0x6e')](_0x14d17a));this['createSquareDetailsReport'][_0x7914('0x6b')](this,_0x4a07cf,_0x4a07cf[_0x7914('0x19f')]);this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x1a3'),_0x1d0b6f['name']));this[_0x7914('0x1a4')][_0x7914('0x6b')](this,_0x14d17a);return this['channel'][_0x7914('0xa3')](_0x7914('0x1a5'));};AGIVertices[_0x7914('0x10')][_0x7914('0x1a6')]=function(_0x16bb0a){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x16bb0a['label']));if(!this[_0x7914('0x7f')](_0x16bb0a[_0x7914('0xd2')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x16bb0a,_0x7914('0x1a7'));}var _0xc895a5=this['getVariable']['sync'](this,_0x16bb0a['variable_id']);if(!_0xc895a5){return this[_0x7914('0xd')][_0x7914('0x29')](_0x16bb0a,'no\x20variable\x20found');}return this[_0x7914('0xd')][_0x7914('0x99')](_0xc895a5,_0x16bb0a['variable_value']);};AGIVertices[_0x7914('0x10')][_0x7914('0x1a8')]=function(_0x2d5db1){logger['info'](util[_0x7914('0x4a')](_0x7914('0x1a9'),_0x2d5db1['label']));this['channel'][_0x7914('0xa3')](_0x7914('0x1aa'));if(_0x2d5db1[_0x7914('0xb4')]===_0x7914('0x1ab')){this['channel'][_0x7914('0xa3')](_0x7914('0x1ac'));return this[_0x7914('0xd')][_0x7914('0xb4')]();}return this['channel'][_0x7914('0xa3')]('Skipped\x20Answer');};AGIVertices[_0x7914('0x10')]['subproject']=function(_0x2f92c2){logger['info'](util['format'](_0x7914('0x1ad'),_0x2f92c2[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x2f92c2[_0x7914('0x1ae')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x2f92c2,_0x7914('0x1af'));}var _0x1bd261=this[_0x7914('0x16')]['sync'](this,_0x2f92c2['project_id']);if(!this[_0x7914('0x7f')](_0x1bd261)){return this['channel'][_0x7914('0x29')](_0x2f92c2,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x2f92c2[_0x7914('0x1ae')]));}if(_0x1bd261===this[_0x7914('0xd')]['arg_1']){return this[_0x7914('0xd')]['error'](_0x2f92c2,_0x7914('0x1b0'));}this['createSquareDetailsReport']['sync'](this,_0x2f92c2,_0x1bd261);var _0x4726c1=this[_0x7914('0xd')][_0x7914('0x4e')](_0x7914('0x1b1'),util[_0x7914('0x4a')](_0x7914('0x1b2'),config[_0x7914('0x6')][_0x7914('0x1b3')]||'127.0.0.1',_0x1bd261,this[_0x7914('0xd')][_0x7914('0x30')]));if(_0x4726c1['result']===-0x1){return _0x4726c1;}return this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x16f'),_0x7914('0x1b1'),_0x1bd261));};AGIVertices['prototype'][_0x7914('0x1b4')]=function(_0x40ba84){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x1b5'),_0x40ba84['label']));var _0x2f3f72=this['shellCommand'][_0x7914('0x6b')](this,_0x40ba84[_0x7914('0xb3')]);this[_0x7914('0x2e')][_0x7914('0x6b')](this,_0x40ba84,_0x40ba84[_0x7914('0xb3')]);if(this[_0x7914('0x7f')](_0x40ba84[_0x7914('0xd2')])){var _0x5b3096=this[_0x7914('0x11')]['sync'](this,_0x40ba84[_0x7914('0xd2')]);if(_0x5b3096){this[_0x7914('0xd')][_0x7914('0x99')](_0x5b3096,_0x2f3f72);return this[_0x7914('0xd')]['noop'](util['format'](_0x7914('0x1b6'),_0x40ba84['command'],_0x5b3096));}}return this[_0x7914('0xd')]['noop'](util['format'](_0x7914('0x1b7'),_0x40ba84['command']));};AGIVertices[_0x7914('0x10')][_0x7914('0x1b8')]=function(_0x171435){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x1b9'),_0x171435[_0x7914('0xb6')]));_0x171435[_0x7914('0x54')]=_0x171435['text'][_0x7914('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7914('0x7f')](_0x171435[_0x7914('0x52')])){return this['channel'][_0x7914('0xa3')](_0x7914('0x1ba'));}if(!this['isConfigured'](_0x171435[_0x7914('0x54')])){return this['channel'][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x171435[_0x7914('0x54')]));var _0x4365b5=this[_0x7914('0x51')][_0x7914('0x6b')](this,_0x171435);if(_0x4365b5){this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')](_0x7914('0x1bb'),_0x4365b5));var _0x101e86=this[_0x7914('0xd')][_0x7914('0x122')](_0x4365b5);try{fs[_0x7914('0x101')](_0x4365b5+_0x7914('0x102'));}catch(_0x1a2de3){logger[_0x7914('0x29')](_0x1a2de3);}return _0x101e86;}return this['channel'][_0x7914('0x29')](_0x171435,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x7914('0x10')]['tts']=function(_0x420a63){logger[_0x7914('0x2b')](util[_0x7914('0x4a')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x420a63[_0x7914('0xb6')]));_0x420a63[_0x7914('0x54')]=_0x420a63[_0x7914('0x54')][_0x7914('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7914('0x7f')](_0x420a63['text'])){return this[_0x7914('0xd')][_0x7914('0xa3')](_0x7914('0xa4'));}this[_0x7914('0xd')]['noop'](util[_0x7914('0x4a')]('Trying\x20Google\x20TTS\x20%s',_0x420a63['text']));var _0x531d5e=this[_0x7914('0x5b')][_0x7914('0x6b')](this,_0x420a63);if(_0x531d5e){this[_0x7914('0xd')][_0x7914('0xa3')](util['format'](_0x7914('0x1bc'),_0x531d5e));var _0x363b32=this['channel'][_0x7914('0x122')](_0x531d5e);try{fs[_0x7914('0x101')](_0x531d5e+_0x7914('0x102'));}catch(_0x114d27){logger[_0x7914('0x29')](_0x114d27);}return _0x363b32;}return this[_0x7914('0xd')]['error'](_0x420a63,_0x7914('0x1bd'));};AGIVertices[_0x7914('0x10')][_0x7914('0x1be')]=function(_0x5d50d3){logger[_0x7914('0x2b')](util['format']('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x5d50d3[_0x7914('0xb6')]));if(!this[_0x7914('0x7f')](_0x5d50d3['findBy'])){return this[_0x7914('0xd')]['error'](_0x5d50d3,'no\x20find\x20by\x20configured');}logger['info'](util[_0x7914('0x4a')](_0x7914('0x156'),this[_0x7914('0xd')][_0x7914('0x31')],_0x5d50d3[_0x7914('0x155')]));var _0x4f39c8=this[_0x7914('0x46')][_0x7914('0x6b')](this,_0x5d50d3['findBy']);if(_0x4f39c8){logger[_0x7914('0x2b')](util['format'](_0x7914('0x157'),this[_0x7914('0xd')]['callerid'],_0x5d50d3[_0x7914('0x155')]));this[_0x7914('0xd')][_0x7914('0xa3')](util[_0x7914('0x4a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x7914('0xd')][_0x7914('0x31')],_0x5d50d3['findBy']));return{'code':0xc8,'result':_0x7914('0x158')};}else{logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x159'),this['channel'][_0x7914('0x31')],_0x5d50d3['findBy']));this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x159'),this[_0x7914('0xd')][_0x7914('0x31')],_0x5d50d3['findBy']));return{'code':0xc8,'result':_0x7914('0x15a')};}};AGIVertices[_0x7914('0x10')]['voicemail']=function(_0x3addfe){logger[_0x7914('0x2b')](util[_0x7914('0x4a')](_0x7914('0x1bf'),_0x3addfe[_0x7914('0xb6')]));var _0x3535bf=this[_0x7914('0xd')]['exec'](_0x7914('0x1c0'),[_0x3addfe[_0x7914('0x1c1')],_0x3addfe[_0x7914('0x74')]]);if(_0x3535bf[_0x7914('0x9e')]===-0x1){return _0x3535bf;}return this['channel'][_0x7914('0xa3')](util[_0x7914('0x4a')](_0x7914('0x16f'),'VOICEMAIL',_0x3addfe[_0x7914('0x1c1')]));};AGIVertices[_0x7914('0x10')]['vswitch']=function(_0x32f9b6){logger[_0x7914('0x2b')](util['format'](_0x7914('0x1c2'),_0x32f9b6['label']));if(!this[_0x7914('0x7f')](_0x32f9b6[_0x7914('0xd2')])){return this[_0x7914('0xd')][_0x7914('0x29')](_0x32f9b6,_0x7914('0x1a7'));}var _0x4de5c1=this[_0x7914('0x11')][_0x7914('0x6b')](this,_0x32f9b6['variable_id']);if(!_0x4de5c1){return this[_0x7914('0xd')]['error'](_0x32f9b6,'no\x20variable\x20found');}var _0x3a239b=this[_0x7914('0xd')][_0x7914('0x11')](_0x4de5c1);return{'code':0xc8,'result':_0x3a239b[_0x7914('0x9c')]?_0x3a239b['extra']:'-'};};String[_0x7914('0x10')]['replaceAll']=function(_0x2e852f,_0x5405f1){return this['split'](_0x2e852f)[_0x7914('0x1c3')](_0x5405f1);};module[_0x7914('0x1c4')]=AGIVertices;
\ No newline at end of file
+var _0xed3c=['getSound','getSoundById','getSoundPath','save_name','getMailAccount','sendMailMessage','getIntervals','getIntervalById','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','info','query','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','arg_1','createSquareRecording','uniqueid','callerid','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','isEmpty','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','agent','error','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','exec','trim','replace','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','message','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','ispeech_tts_language','ispeechASR','isConfigured','model','awsPolly','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','clear','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','recursiveNodeIndex','isArray','length','replaceAllVariables','saveRestApiResult','isPlainObject','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','getVariable','result','maxRetry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','no\x20text\x20configured','MRCPSynth','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','sestekasr','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','no\x20user\x20selected','sip_id','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','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','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','response','test','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','streamFile','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','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','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','agentPause','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','statusCode','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','template_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','util','lodash','shelljs','odbc','moment','mustache','request-promise','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','getdigits','channel','rpc','mailRpc','prototype','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk'];(function(_0x53a85b,_0x43dbc8){var _0x50b2fd=function(_0x190124){while(--_0x190124){_0x53a85b['push'](_0x53a85b['shift']());}};_0x50b2fd(++_0x43dbc8);}(_0xed3c,0x1a6));var _0xced3=function(_0x180fc6,_0x5f3c92){_0x180fc6=_0x180fc6-0x0;var _0x4dbf08=_0xed3c[_0x180fc6];return _0x4dbf08;};'use strict';var fs=require('fs');var util=require(_0xced3('0x0'));var _=require(_0xced3('0x1'));var sh=require(_0xced3('0x2'));var odbc=require(_0xced3('0x3'))();var rs=require('randomstring');var moment=require(_0xced3('0x4'));var Mustache=require(_0xced3('0x5'));var rp=require(_0xced3('0x6'));var logger=require('../../config/logger')('agi');var config=require(_0xced3('0x7'));var shared=require(_0xced3('0x8'));var scripts=require(_0xced3('0x9'));var FILES_PATH=_0xced3('0xa');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=['menu',_0xced3('0xb'),'getsecretdigits'];var AGIVertices=function(_0x5bc7a7,_0x4be020,_0x19a727){this[_0xced3('0xc')]=_0x5bc7a7;this[_0xced3('0xd')]=_0x4be020;this[_0xced3('0xe')]=_0x19a727;};AGIVertices[_0xced3('0xf')]['getVariable']=function(_0x36ea7f,_0x32a95d){this[_0xced3('0xd')]['getVariableById'](_0x36ea7f)[_0xced3('0x10')](function(_0x19b8c2){_0x32a95d(null,_0x19b8c2?_0x19b8c2[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x457caf){_0x32a95d(_0x457caf);});};AGIVertices[_0xced3('0xf')][_0xced3('0x13')]=function(_0x5aadb6,_0x65bb58){this['rpc'][_0xced3('0x14')](_0x5aadb6)[_0xced3('0x10')](function(_0x20d099){_0x65bb58(null,_0x20d099?_0x20d099[_0xced3('0x11')]:![]);})['catch'](function(_0x146a21){_0x65bb58(_0x146a21);});};AGIVertices[_0xced3('0xf')]['getSquareProject']=function(_0x3b5962,_0x37e2d5){this[_0xced3('0xd')][_0xced3('0x15')](_0x3b5962)['then'](function(_0x4569af){_0x37e2d5(null,_0x4569af?_0x4569af['name']:![]);})[_0xced3('0x12')](function(_0x4480a6){_0x37e2d5(_0x4480a6);});};AGIVertices[_0xced3('0xf')][_0xced3('0x16')]=function(_0x44143f,_0x688c97){this[_0xced3('0xd')][_0xced3('0x17')](_0x44143f)[_0xced3('0x10')](function(_0x17c011){_0x688c97(null,_0x17c011?_0x17c011[_0xced3('0x18')]:![]);})['catch'](function(_0x5b8b1f){_0x688c97(_0x5b8b1f);});};AGIVertices['prototype'][_0xced3('0x19')]=function(_0x342b9e,_0x21e074){this['rpc'][_0xced3('0x1a')](_0x342b9e)[_0xced3('0x10')](function(_0x526854){_0x21e074(null,_0x526854?_0x526854['name']:![]);})[_0xced3('0x12')](function(_0x101708){_0x21e074(_0x101708);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1b')]=function(_0x50f7c1,_0x1905a3){this[_0xced3('0xd')]['getTrunkById'](_0x50f7c1)[_0xced3('0x10')](function(_0x4da7ce){_0x1905a3(null,_0x4da7ce?_0x4da7ce[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x3b728d){_0x1905a3(_0x3b728d);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1c')]=function(_0x502cf1,_0x5454c0){var _0x36b1fe=this;this['rpc'][_0xced3('0x1d')](_0x502cf1)[_0xced3('0x10')](function(_0x4a8e85){_0x5454c0(null,_0x4a8e85?_0x36b1fe[_0xced3('0x1e')](_0x4a8e85[_0xced3('0x1f')]):![]);})[_0xced3('0x12')](function(_0x1032d6){_0x5454c0(_0x1032d6);});};AGIVertices[_0xced3('0xf')][_0xced3('0x20')]=function(_0x895a32,_0x41d003){this[_0xced3('0xd')]['getMailAccountById'](_0x895a32)[_0xced3('0x10')](function(_0x1b8baa){_0x41d003(null,_0x1b8baa?_0x1b8baa:![]);})[_0xced3('0x12')](function(_0x5867af){_0x41d003(_0x5867af);});};AGIVertices[_0xced3('0xf')][_0xced3('0x21')]=function(_0x41ce44,_0x4f2439,_0xc8e557){this[_0xced3('0xe')][_0xced3('0x21')](_0x41ce44,_0x4f2439)[_0xced3('0x10')](function(){_0xc8e557(null);})[_0xced3('0x12')](function(_0x407a24){_0xc8e557(_0x407a24);});};AGIVertices[_0xced3('0xf')][_0xced3('0x22')]=function(_0x45897d,_0x25a408){this[_0xced3('0xd')][_0xced3('0x23')](_0x45897d)[_0xced3('0x10')](function(_0x565e70){if(_0x565e70){if(_0x565e70[_0xced3('0x24')]){_0x25a408(null,[_0x565e70['interval']]);}else{_0x25a408(null,_[_0xced3('0x25')](_0x565e70[_0xced3('0x26')],_0xced3('0x27')));}}else{_0x25a408(null,![]);}})[_0xced3('0x12')](function(_0x29f375){_0x25a408(_0x29f375);});};AGIVertices[_0xced3('0xf')][_0xced3('0x1e')]=function(_0x340be1){return util[_0xced3('0x28')](_0xced3('0x29'),FILES_PATH,_0x340be1);};AGIVertices['prototype'][_0xced3('0x2a')]=function(_0x26a435,_0x53e401,_0x468c21){odbc[_0xced3('0x2b')](_0x26a435,function(_0x1b5956){if(_0x1b5956){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x1b5956);_0x468c21(_0x1b5956);}else{logger[_0xced3('0x2c')]('ODBC\x20connection\x20successfully');odbc[_0xced3('0x2d')](_0x53e401,function(_0x413da3,_0x5f0ab8){if(_0x413da3){logger[_0xced3('0x2c')](_0xced3('0x2e'),_0x53e401);_0x468c21(_0x413da3);}else{logger[_0xced3('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x53e401);odbc[_0xced3('0x2f')](function(_0x499b77){if(_0x499b77){logger['error'](_0xced3('0x30'),_0x499b77);}_0x468c21(null,_0x5f0ab8);});}});}});};AGIVertices[_0xced3('0xf')][_0xced3('0x31')]=function(_0x4e6926,_0xb2cf20){this[_0xced3('0xd')][_0xced3('0x32')](_0x4e6926)[_0xced3('0x10')](function(_0x28506e){_0xb2cf20(null,_0x28506e?_0x28506e:![]);})[_0xced3('0x12')](function(_0x30e890){_0xb2cf20(_0x30e890);});};AGIVertices[_0xced3('0xf')][_0xced3('0x33')]=function(_0x3eca11,_0x2b4a18){this[_0xced3('0xd')][_0xced3('0x33')](_0x3eca11)[_0xced3('0x10')](function(_0x1ced3a){_0x2b4a18(null,_0x1ced3a);})['catch'](function(_0x4279a3){_0x2b4a18(_0x4279a3);});};AGIVertices[_0xced3('0xf')][_0xced3('0x34')]=function(_0x1a6c1f,_0x1de086,_0x446f34){this[_0xced3('0xd')][_0xced3('0x34')]({'uniqueid':this[_0xced3('0xc')]['uniqueid'],'node':_0x1a6c1f[_0xced3('0x35')],'application':_0x1a6c1f['agicommand'],'data':_0x1de086||null,'project_name':this[_0xced3('0xc')][_0xced3('0x36')],'callerid':this[_0xced3('0xc')]['callerid']})[_0xced3('0x10')](function(_0x34f24a){if(_0x446f34){_0x446f34(null,_0x34f24a);}})[_0xced3('0x12')](function(_0x26b8ac){if(_0x446f34){_0x446f34(_0x26b8ac);}});};AGIVertices['prototype'][_0xced3('0x37')]=function(_0x133b47,_0xbf8cbc,_0x26d16c,_0x198aad){this['rpc'][_0xced3('0x37')]({'uniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'callerid':this[_0xced3('0xc')][_0xced3('0x39')],'calleridname':this[_0xced3('0xc')][_0xced3('0x3a')],'context':this['channel'][_0xced3('0x3b')],'extension':this[_0xced3('0xc')]['extension'],'priority':this['channel'][_0xced3('0x3c')],'accountcode':this['channel'][_0xced3('0x3d')],'dnid':this[_0xced3('0xc')][_0xced3('0x3e')],'projectName':this[_0xced3('0xc')][_0xced3('0x36')],'saveName':_0xbf8cbc,'filename':_0x133b47[_0xced3('0x3f')]||_0xbf8cbc,'savePath':_0x26d16c})[_0xced3('0x10')](function(_0x10cc6c){_0x198aad(null,_0x10cc6c);})[_0xced3('0x12')](function(_0x5b3529){_0x198aad(_0x5b3529);});};AGIVertices[_0xced3('0xf')][_0xced3('0x40')]=function(_0x2aa876,_0x469b6,_0x24ee62,_0xe43a54,_0x4bfb2c){this[_0xced3('0xd')][_0xced3('0x40')]({'uniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'body':_0x2aa876,'direction':_0x469b6,'providerName':_0x24ee62,'providerResponse':_0xe43a54})[_0xced3('0x10')](function(_0x14dbfe){if(_0x4bfb2c){_0x4bfb2c(null,_0x14dbfe);}})[_0xced3('0x12')](function(_0x120439){if(_0x4bfb2c){_0x4bfb2c(_0x120439);}});};AGIVertices[_0xced3('0xf')][_0xced3('0x41')]=function(_0x257ff0,_0x3e2a19){this['rpc'][_0xced3('0x41')]({'firstName':_['isEmpty'](_0x257ff0[_0xced3('0x11')])||_[_0xced3('0x42')](_0x257ff0[_0xced3('0x11')])?'callback_'+Math['random']():_0x257ff0[_0xced3('0x11')],'lastName':_[_0xced3('0x43')](_0x257ff0['lastName'])||_[_0xced3('0x42')](_0x257ff0['lastName'])?null:_0x257ff0[_0xced3('0x44')],'phone':_0x257ff0[_0xced3('0x45')],'ListId':_0x257ff0['list_id'],'scheduledat':_0x257ff0[_0xced3('0x46')],'callbackUniqueid':this[_0xced3('0xc')][_0xced3('0x38')],'tags':'callback','description':_0xced3('0x47')+_0x257ff0['scheduledAt'][_0xced3('0x48')](),'priority':_0x257ff0[_0xced3('0x49')]})[_0xced3('0x10')](function(_0x168c36){_0x3e2a19(null,_0x168c36);})[_0xced3('0x12')](function(_0xd3c7b9){_0x3e2a19(_0xd3c7b9);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4a')]=function(_0x1b2592,_0x24ca7d){this[_0xced3('0xd')]['getPauseById'](_0x1b2592)[_0xced3('0x10')](function(_0x3de35d){_0x24ca7d(null,_0x3de35d?_0x3de35d[_0xced3('0x11')]:![]);})[_0xced3('0x12')](function(_0x21a22d){_0x24ca7d(_0x21a22d);});};AGIVertices[_0xced3('0xf')]['agentPause']=function(_0x9db425,_0x171081,_0x21ea6a){var _0x440a0f={'role':_0xced3('0x4b')};_0x440a0f[_0x9db425]=this[_0xced3('0xc')]['callerid'];this[_0xced3('0xd')]['agentPause'](_0x440a0f,_0x171081,this[_0xced3('0xc')]['uniqueid'])[_0xced3('0x10')](function(_0x12a961){_0x21ea6a(null,_['isNil'](_0x12a961)?![]:!![]);})[_0xced3('0x12')](function(_0xce41d9){logger[_0xced3('0x4c')](_0xce41d9);_0x21ea6a(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4d')]=function(_0x21eeec,_0x2318a0){var _0x206dd3={'role':_0xced3('0x4b')};_0x206dd3[_0x21eeec]=this[_0xced3('0xc')][_0xced3('0x39')];this[_0xced3('0xd')][_0xced3('0x4d')](_0x206dd3)['then'](function(_0x996530){_0x2318a0(null,_[_0xced3('0x42')](_0x996530)?![]:!![]);})[_0xced3('0x12')](function(_0x353a8e){logger['error'](_0x353a8e);_0x2318a0(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4e')]=function(_0x404241,_0x373f31){var _0x2a62f5={'role':_0xced3('0x4b')};_0x2a62f5[_0x404241]=this[_0xced3('0xc')]['callerid'];this[_0xced3('0xd')][_0xced3('0x4e')](_0x2a62f5)['then'](function(_0x1630d7){_0x373f31(null,_[_0xced3('0x42')](_0x1630d7)?![]:!![]);})[_0xced3('0x12')](function(_0x2ac060){logger['error'](_0x2ac060);_0x373f31(null,![]);});};AGIVertices[_0xced3('0xf')][_0xced3('0x4f')]=function(_0x19ae45,_0x3eb9dd){var _0x3992d2={'role':_0xced3('0x4b')};_0x3992d2[_0x19ae45]=this[_0xced3('0xc')][_0xced3('0x39')];var _0x3f3e55=_0x19ae45!=_0xced3('0x50')?util['format'](_0xced3('0x51'),_0xced3('0x52'),this['channel']['callerid']):undefined;this[_0xced3('0xd')]['agentLogin'](_0x3992d2,_0x3f3e55)[_0xced3('0x10')](function(_0x256216){_0x3eb9dd(null,_['isNil'](_0x256216)?![]:!![]);})[_0xced3('0x12')](function(_0x40c376){logger['error'](_0x40c376);_0x3eb9dd(null,![]);});};AGIVertices[_0xced3('0xf')]['shellCommand']=function(_0x39eead,_0x58b66b){sh[_0xced3('0x53')](_[_0xced3('0x54')](_0x39eead),function(_0x11f393,_0x4f2035){var _0x189da2=_0x4f2035[_0xced3('0x55')](/(\r\n|\n|\r)/gm,'');_0x58b66b(null,_0x189da2);});};AGIVertices[_0xced3('0xf')]['googleCloudTTS']=function(_0x3f8d6f,_0x1abe1a){scripts[_0xced3('0x56')](_0x3f8d6f[_0xced3('0x57')],_0x3f8d6f['google_cloud_tts_text_type']||'text',_0x3f8d6f[_0xced3('0x58')],_0x3f8d6f[_0xced3('0x59')]||_0xced3('0x5a'),_0x3f8d6f[_0xced3('0x5b')]||_0xced3('0x5c'),_0x3f8d6f[_0xced3('0x5d')]||'MP3')[_0xced3('0x10')](function(_0x5c7f04){_0x1abe1a(null,_0x5c7f04);})[_0xced3('0x12')](function(_0x28bcfa){_0x1abe1a(_0x28bcfa);});};AGIVertices[_0xced3('0xf')][_0xced3('0x5e')]=function(_0x569055,_0x24d0ad){scripts[_0xced3('0x5e')](_0x569055['text'],_0x569055['google_tts_language']||'en',0x1)[_0xced3('0x10')](function(_0x14818f){_0x24d0ad(null,_0x14818f);})[_0xced3('0x12')](function(_0x138e25){_0x24d0ad(_0x138e25);});};AGIVertices[_0xced3('0xf')]['restAPI']=function(_0x9acc9f,_0x1bde2f){var _0x34d8f5={'uri':_0x9acc9f[_0xced3('0x5f')],'method':_0x9acc9f['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x9acc9f[_0xced3('0x60')])===_0xced3('0x61')&&parseInt(_0x9acc9f[_0xced3('0x60')])>=0x1?parseInt(_0x9acc9f[_0xced3('0x60')])*0x3e8:0x5*0x3e8};if(_[_0xced3('0x62')]([_0xced3('0x63'),_0xced3('0x64')],_0x34d8f5[_0xced3('0x65')][_0xced3('0x66')]())){try{_0x34d8f5[_0xced3('0x67')]=_0x9acc9f['rawBody']?JSON[_0xced3('0x68')](_0x9acc9f[_0xced3('0x69')]):{};}catch(_0x498ea9){logger[_0xced3('0x4c')](_0xced3('0x6a'),_0x498ea9);}}try{_0x34d8f5[_0xced3('0x6b')]=_0x9acc9f[_0xced3('0x6c')]?JSON[_0xced3('0x68')](_0x9acc9f['rawHeaders']):{};}catch(_0x165271){logger[_0xced3('0x4c')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x165271);}if(_0x9acc9f[_0xced3('0x6d')]){try{var _0xab85c0=require(_0x9acc9f[_0xced3('0x6d')])[_0xced3('0x6e')](this,_0x34d8f5);_0x34d8f5[_0xced3('0x6f')]=Mustache[_0xced3('0x70')](_0x9acc9f['url'],_0xab85c0,{},['$$','$$']);if(_0x34d8f5[_0xced3('0x6b')]){_0x34d8f5[_0xced3('0x6b')]=JSON[_0xced3('0x68')](Mustache[_0xced3('0x70')](JSON[_0xced3('0x71')](_0x34d8f5[_0xced3('0x6b')]),_0xab85c0,{},['$$','$$']));}if(_0x34d8f5['body']){_0x34d8f5['body']=JSON[_0xced3('0x68')](Mustache[_0xced3('0x70')](JSON[_0xced3('0x71')](_0x34d8f5[_0xced3('0x67')]),_0xab85c0,{},['$$','$$']));}}catch(_0x86551){logger[_0xced3('0x4c')](_0xced3('0x72'),_0x86551);}}rp(_0x34d8f5)['then'](function(_0x3d64ec){var _0x290ca3={'statusCode':_0x3d64ec['statusCode']||0xc8,'statusMessage':_0x3d64ec['statusMessage']||'OK','headers':_0x3d64ec[_0xced3('0x6b')]||{},'body':_0x3d64ec[_0xced3('0x67')]||{}};_0x1bde2f(null,_0x290ca3);})[_0xced3('0x12')](function(_0x333041){var _0x2e7c1c={'statusCode':_0x333041['statusCode']||0x1f4,'statusMessage':_0x333041[_0xced3('0x73')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x333041[_0xced3('0x74')][_0xced3('0x6b')]||{},'body':_0x333041[_0xced3('0x74')][_0xced3('0x67')]||{}};_0x1bde2f(null,_0x2e7c1c);});};AGIVertices[_0xced3('0xf')]['googleDialogflow']=function(_0x1d819c,_0x8b2477){scripts[_0xced3('0x75')](this[_0xced3('0xc')]['uniqueid'],_0x1d819c['key'],_0x1d819c[_0xced3('0x58')],_0x1d819c[_0xced3('0x76')]||'en')[_0xced3('0x10')](function(_0x7adbf6){_0x8b2477(null,_0x7adbf6);})[_0xced3('0x12')](function(_0x2f4a5b){_0x8b2477(_0x2f4a5b);});};AGIVertices[_0xced3('0xf')][_0xced3('0x77')]=function(_0x5a8763,_0x4e5874){scripts[_0xced3('0x77')](this[_0xced3('0xc')][_0xced3('0x38')],_0x5a8763[_0xced3('0x78')],_0x5a8763[_0xced3('0x79')],_0x5a8763[_0xced3('0x7a')],_0x5a8763[_0xced3('0x58')],_0x5a8763[_0xced3('0x7b')]||'en')[_0xced3('0x10')](function(_0x3b8160){_0x4e5874(null,_0x3b8160);})[_0xced3('0x12')](function(_0x4da239){_0x4e5874(_0x4da239);});};AGIVertices[_0xced3('0xf')]['sestekNDA']=function(_0x325a37,_0x278ecc){scripts[_0xced3('0x7c')](this[_0xced3('0xc')],_0x325a37)[_0xced3('0x10')](function(_0x39fdf4){_0x278ecc(null,_0x39fdf4);})[_0xced3('0x12')](function(_0x47480a){_0x278ecc(_0x47480a);});};AGIVertices[_0xced3('0xf')][_0xced3('0x7d')]=function(_0xb1c2c0,_0x3869f3){scripts[_0xced3('0x7d')](_0xb1c2c0[_0xced3('0x7e')],_0xb1c2c0[_0xced3('0x58')],_0xb1c2c0[_0xced3('0x7f')]||_0xced3('0x5a'),_0xb1c2c0['speed'])['then'](function(_0x4e3bcf){_0x3869f3(null,_0x4e3bcf);})[_0xced3('0x12')](function(_0x32d287){_0x3869f3(_0x32d287);});};AGIVertices[_0xced3('0xf')][_0xced3('0x80')]=function(_0x35133c,_0x1f9e9c,_0x587891){scripts[_0xced3('0x80')](_0x1f9e9c,_0x35133c[_0xced3('0x7e')],_0x35133c['ispeech_asr_language']||'en-US',this[_0xced3('0x81')](_0x35133c[_0xced3('0x82')])?_0x35133c[_0xced3('0x82')]:undefined)[_0xced3('0x10')](function(_0x3e5f7f){_0x587891(null,_0x3e5f7f);})[_0xced3('0x12')](function(_0x4f6515){_0x587891(_0x4f6515);});};AGIVertices[_0xced3('0xf')]['awsPolly']=function(_0x1633e1,_0x3d9158){scripts[_0xced3('0x83')](_0x1633e1['aws_access_key_id'],_0x1633e1['aws_secret_access_key'],_0x1633e1['aws_polly_region'],_0x1633e1[_0xced3('0x84')]||_0xced3('0x85'),_0x1633e1['text'],_0x1633e1[_0xced3('0x86')]||_0xced3('0x58'))['then'](function(_0x11a1b9){_0x3d9158(null,_0x11a1b9);})[_0xced3('0x12')](function(_0x16d946){_0x3d9158(_0x16d946);});};AGIVertices[_0xced3('0xf')][_0xced3('0x87')]=function(_0x434bbc,_0x442dbf){scripts[_0xced3('0x87')](this['channel'][_0xced3('0x38')],_0x434bbc[_0xced3('0x88')],_0x434bbc[_0xced3('0x89')],_0x434bbc[_0xced3('0x8a')],_0x434bbc[_0xced3('0x58')],_0x434bbc[_0xced3('0x8b')])[_0xced3('0x10')](function(_0x27c429){_0x442dbf(null,_0x27c429);})[_0xced3('0x12')](function(_0x36e738){_0x442dbf(_0x36e738);});};AGIVertices[_0xced3('0xf')][_0xced3('0x8c')]=function(_0x425057,_0xfe27a5,_0x46f536){scripts['googleASR'](_0xfe27a5,_0x425057[_0xced3('0x7e')],_0x425057[_0xced3('0x8d')]||_0xced3('0x5a'))[_0xced3('0x10')](function(_0x2c59f5){_0x46f536(null,_0x2c59f5);})['catch'](function(_0x4d5fc7){_0x46f536(_0x4d5fc7);});};AGIVertices[_0xced3('0xf')][_0xced3('0x8e')]=function(_0x2796fd,_0xbc64b,_0x81b3bc){scripts[_0xced3('0x8e')](_0xbc64b,_0x2796fd[_0xced3('0x8f')],_0x2796fd['appsecret'],_0x2796fd['uri'])[_0xced3('0x10')](function(_0x4a720b){_0x81b3bc(null,_0x4a720b);})[_0xced3('0x12')](function(_0x229cba){_0x81b3bc(_0x229cba);});};AGIVertices[_0xced3('0xf')][_0xced3('0x90')]=function(_0x2d0b41){var _0xca87c4=_[_0xced3('0x62')](verticesWithRetry,_0x2d0b41[_0xced3('0x91')])?_0x2d0b41:_[_0xced3('0x92')](_0x2d0b41);for(var _0x2b688c in _0xca87c4){if(_0xca87c4[_0xced3('0x93')](_0x2b688c)){if(_0xca87c4[_0x2b688c]&&_[_0xced3('0x94')](_0xca87c4[_0x2b688c])){if(_[_0xced3('0x62')](recursiveMapAttributes,_0x2b688c)){_0xca87c4[_0x2b688c]=this[_0xced3('0x95')](_0xca87c4[_0x2b688c]);}else{_0xca87c4[_0x2b688c]=this['replaceAllVariables'](_0xca87c4[_0x2b688c]);}}}}return _0xca87c4;};AGIVertices['prototype'][_0xced3('0x96')]=function(_0x5dca1c){for(var _0x3daacf in _0x5dca1c){if(_0x5dca1c['hasOwnProperty'](_0x3daacf)){if(_['isPlainObject'](_0x5dca1c[_0x3daacf])){this[_0xced3('0x96')](_0x5dca1c[_0x3daacf]);}else if(_[_0xced3('0x97')](_0x5dca1c[_0x3daacf])){for(var _0x3357a4=0x0;_0x3357a4<_0x5dca1c[_0x3daacf][_0xced3('0x98')];_0x3357a4++){this['recursiveNodeIndex'](_0x5dca1c[_0x3daacf][_0x3357a4]);}}else if(_['isString'](_0x5dca1c[_0x3daacf])){_0x5dca1c[_0x3daacf]=this[_0xced3('0x99')](_0x5dca1c[_0x3daacf]);}}}};AGIVertices[_0xced3('0xf')][_0xced3('0x9a')]=function(_0x5448d5,_0x3de2c6){for(var _0x50cc83 in _0x5448d5){if(_0x5448d5['hasOwnProperty'](_0x50cc83)){if(_[_0xced3('0x9b')](_0x5448d5[_0x50cc83])){if(!_[_0xced3('0x43')](_0x5448d5[_0x50cc83])){this[_0xced3('0x9a')](_0x5448d5[_0x50cc83],util[_0xced3('0x28')](_0xced3('0x9c'),_0x3de2c6,_0x50cc83));}}else if(_[_0xced3('0x97')](_0x5448d5[_0x50cc83])){for(var _0x420c12=0x0;_0x420c12<_0x5448d5[_0x50cc83][_0xced3('0x98')];_0x420c12++){this['saveRestApiResult'](_0x5448d5[_0x50cc83][_0x420c12],util['format'](_0xced3('0x9c'),_0x3de2c6,_0x50cc83+'['+_0x420c12+']'));}}else{if(!_['isNil'](_0x5448d5[_0x50cc83])){this[_0xced3('0xc')][_0xced3('0x9d')](util['format'](_0xced3('0x9c'),_0x3de2c6,_0x50cc83),_0x5448d5[_0x50cc83]);}}}}};AGIVertices[_0xced3('0xf')][_0xced3('0x95')]=function(_0x40e5a8){try{var _0x7fb3c7=JSON[_0xced3('0x68')](_0x40e5a8);this['recursiveNodeIndex'](_0x7fb3c7);return JSON[_0xced3('0x71')](_0x7fb3c7);}catch(_0x3e265){return this[_0xced3('0x99')](_0x40e5a8);}};AGIVertices[_0xced3('0xf')][_0xced3('0x99')]=function(_0x3a1b54){var _0x5afbec=_0x3a1b54['split']('{');for(var _0x51b895=0x1;_0x51b895<_0x5afbec[_0xced3('0x98')];_0x51b895+=0x1){var _0x2e2303=_0x5afbec[_0x51b895][_0xced3('0x9e')]('}');if(_0x2e2303[_0xced3('0x98')]>0x1){_0x3a1b54=_0x3a1b54[_0xced3('0x9f')]('{'+_0x2e2303[0x0]+'}',this['channel']['getVariable'](_0x2e2303[0x0])[_0xced3('0xa0')]||_0x2e2303[0x0]);}}if(_0x5afbec[_0xced3('0x98')]===0x1){return _0x3a1b54['toString']();}return this['replaceAllVariables'](_0x3a1b54);};AGIVertices[_0xced3('0xf')][_0xced3('0xa1')]=function(_0x28190,_0xbeffe6){var _0x2211ed=this[_0xced3('0xc')][_0xced3('0xa2')](_0x28190);if(_0x2211ed[_0xced3('0xa3')]===-0x1){return _0x2211ed;}logger[_0xced3('0x2c')](util[_0xced3('0x28')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0xbeffe6,_0x2211ed[_0xced3('0xa0')]));return this[_0xced3('0xc')]['setVariable'](_0xbeffe6,_0x2211ed[_0xced3('0xa0')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x81')]=function(_0x268c72){return _0x268c72&&_0x268c72!=='0'&&_0x268c72!=='-1'&&_0x268c72!=='';};AGIVertices[_0xced3('0xf')][_0xced3('0xa4')]=function(_0x1ab60d){this[_0xced3('0x34')]['sync'](this,_0x1ab60d,'-');_0x1ab60d['retry']=_0x1ab60d[_0xced3('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xced3('0xf')]['mrcpsynth']=function(_0x3a39e9){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xa5'),_0x3a39e9[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x3a39e9['text'])){return this[_0xced3('0xc')]['noop']('no\x20text\x20configured');}var _0x2ed48f='\x22'+_0x3a39e9[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x3a39e9[_0xced3('0x74')])){_0x2ed48f+=','+_0x3a39e9['options'];}var _0x177715=this[_0xced3('0xc')]['exec']('MRCPSynth',_0x2ed48f);if(_0x177715['result']===-0x1){return _0x177715;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xa7'),_0x2ed48f));};AGIVertices[_0xced3('0xf')][_0xced3('0xa8')]=function(_0x45ee35){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xa9'),_0x45ee35['label']));if(!this['isConfigured'](_0x45ee35[_0xced3('0xaa')])){return this[_0xced3('0xc')]['noop']('no\x20grammar\x20configured');}var _0x41b53e=_0x45ee35[_0xced3('0xaa')];if(this[_0xced3('0x81')](_0x45ee35['options'])){_0x41b53e+=','+_0x45ee35[_0xced3('0x74')];}var _0x57e8ce=this[_0xced3('0xc')]['exec'](_0xced3('0xab'),_0x41b53e);if(_0x57e8ce['result']===-0x1){return _0x57e8ce;}var _0x19d0f8=this[_0xced3('0xa1')](_0xced3('0xac'),'MRCP_RECOG_CONFIDENCE');if(_0x19d0f8['result']===-0x1){return _0x19d0f8;}var _0x30f48c=this[_0xced3('0xa1')](_0xced3('0xad'),_0xced3('0xae'));if(_0x30f48c['result']===-0x1){return _0x30f48c;}var _0x2d5df8=this[_0xced3('0xa1')](_0xced3('0xaf'),_0xced3('0xb0'));if(_0x2d5df8['result']===-0x1){return _0x2d5df8;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xb1'),_0x41b53e));};AGIVertices[_0xced3('0xf')][_0xced3('0xb2')]=function(_0x1bc88c){logger[_0xced3('0x2c')](util['format'](_0xced3('0xb3'),_0x1bc88c[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xb2')]([_0x1bc88c[_0xced3('0xb4')],_0x1bc88c['args']]);};AGIVertices['prototype'][_0xced3('0xb5')]=function(_0x117861){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x117861[_0xced3('0x35')]));if(this['isConfigured'](_0x117861['timeout'])){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x117861[_0xced3('0x60')]));var _0x554dd3=this[_0xced3('0xc')]['wait'](_0x117861[_0xced3('0x60')]);if(_0x554dd3[_0xced3('0xa3')]===-0x1){return _0x554dd3;}}return this[_0xced3('0xc')][_0xced3('0xb5')]();};AGIVertices[_0xced3('0xf')][_0xced3('0xb6')]=function(_0xd6e93c){logger[_0xced3('0x2c')](util['format'](_0xced3('0xb7'),_0xd6e93c[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0xd6e93c[_0xced3('0xb8')])){return this[_0xced3('0xc')]['error'](_0xd6e93c,_0xced3('0xb9'));}_0xd6e93c[_0xced3('0x46')]=moment();if(this[_0xced3('0x81')](_0xd6e93c[_0xced3('0xba')])){_0xd6e93c[_0xced3('0x46')]=moment()[_0xced3('0xbb')](_0xd6e93c[_0xced3('0xba')],_0xced3('0xbc'));}if(!this['isConfigured'](_0xd6e93c[_0xced3('0x49')])){_0xd6e93c['callback_priority']=0x2;}this[_0xced3('0x41')][_0xced3('0x6e')](this,_0xd6e93c);return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0xd6e93c[_0xced3('0x45')],_0xd6e93c['list_id'],_0xd6e93c[_0xced3('0x46')]));};AGIVertices[_0xced3('0xf')][_0xced3('0xbd')]=function(_0x29db96){logger['info'](util[_0xced3('0x28')](_0xced3('0xbe'),_0x29db96[_0xced3('0x35')]));var _0x583a9d=this[_0xced3('0xc')]['exec'](_0x29db96[_0xced3('0xbf')],_0x29db96['options']);if(_0x583a9d[_0xced3('0xa3')]===-0x1){return _0x583a9d;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xc0'),_0x29db96['application'],_0x29db96[_0xced3('0x74')]));};AGIVertices['prototype'][_0xced3('0xc1')]=function(_0x10884a){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x10884a[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x10884a['text'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}var _0x3c7f0a='\x22'+_0x10884a[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x10884a[_0xced3('0x74')])){_0x3c7f0a+=','+_0x10884a[_0xced3('0x74')];}var _0x4d3a09=this['channel']['exec'](_0xced3('0xc3'),_0x3c7f0a);if(_0x4d3a09['result']===-0x1){return _0x4d3a09;}return this['channel'][_0xced3('0xa6')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x3c7f0a));};AGIVertices[_0xced3('0xf')]['sestektts']=function(_0x5e80b9){logger[_0xced3('0x2c')](util['format'](_0xced3('0xc4'),_0x5e80b9['label']));if(!this[_0xced3('0x81')](_0x5e80b9[_0xced3('0x58')])){return this[_0xced3('0xc')]['noop']('no\x20text\x20configured');}var _0xc6298e='\x22'+_0x5e80b9[_0xced3('0x58')]+'\x22';if(this[_0xced3('0x81')](_0x5e80b9[_0xced3('0x74')])){_0xc6298e+=','+_0x5e80b9[_0xced3('0x74')];}var _0x2962e4=this['channel'][_0xced3('0x53')](_0xced3('0xc3'),_0xc6298e);if(_0x2962e4[_0xced3('0xa3')]===-0x1){return _0x2962e4;}return this[_0xced3('0xc')]['noop'](util['format'](_0xced3('0xa7'),_0xc6298e));};AGIVertices[_0xced3('0xf')][_0xced3('0xc5')]=function(_0x549d42){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xc6'),_0x549d42[_0xced3('0x35')]));if(!this['isConfigured'](_0x549d42[_0xced3('0xaa')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc7'));}var _0x119881=_0x549d42['grammar'];if(this['isConfigured'](_0x549d42[_0xced3('0x74')])){_0x119881+=','+_0x549d42[_0xced3('0x74')];}var _0x3a705d=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xab'),_0x119881);if(_0x3a705d[_0xced3('0xa3')]===-0x1){return _0x3a705d;}var _0x22c067=this[_0xced3('0xa1')]('RECOG_CONFIDENCE()',_0xced3('0xc8'));if(_0x22c067[_0xced3('0xa3')]===-0x1){return _0x22c067;}var _0x3a71d0=this[_0xced3('0xa1')](_0xced3('0xad'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x3a71d0['result']===-0x1){return _0x3a71d0;}var _0x3dc69a=this[_0xced3('0xa1')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x3dc69a[_0xced3('0xa3')]===-0x1){return _0x3dc69a;}return this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0xb1'),_0x119881));};AGIVertices[_0xced3('0xf')][_0xced3('0xc9')]=function(_0x70019b){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x70019b[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x70019b[_0xced3('0xaa')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc7'));}var _0x455e36=_0x70019b[_0xced3('0xaa')];if(this[_0xced3('0x81')](_0x70019b[_0xced3('0x74')])){_0x455e36+=','+_0x70019b[_0xced3('0x74')];}var _0x525bfe=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xab'),_0x455e36);if(_0x525bfe[_0xced3('0xa3')]===-0x1){return _0x525bfe;}var _0x530e42=this[_0xced3('0xa1')](_0xced3('0xac'),'SESTEK_ASR_CONFIDENCE');if(_0x530e42[_0xced3('0xa3')]===-0x1){return _0x530e42;}var _0x4f0cf1=this[_0xced3('0xa1')](_0xced3('0xad'),_0xced3('0xca'));if(_0x4f0cf1[_0xced3('0xa3')]===-0x1){return _0x4f0cf1;}var _0x193f50=this['getAndSetVariable'](_0xced3('0xaf'),_0xced3('0xcb'));if(_0x193f50[_0xced3('0xa3')]===-0x1){return _0x193f50;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xb1'),_0x455e36));};AGIVertices[_0xced3('0xf')][_0xced3('0xcc')]=function(_0xa7edc0){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xcd'),_0xa7edc0[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0xa7edc0[_0xced3('0xce')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xcf'));}var _0x463514=this[_0xced3('0x16')]['sync'](this,_0xa7edc0[_0xced3('0xce')]);if(!_0x463514){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xd0'));}if(!this[_0xced3('0x81')](_0xa7edc0['query'])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xa7edc0,_0xced3('0xd1'));}var _0x36aee5=_0xa7edc0[_0xced3('0x2d')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xd2'),_0x36aee5));var _0x440713=this[_0xced3('0x2a')][_0xced3('0x6e')](this,_0x463514,_0x36aee5);this[_0xced3('0x34')]['sync'](this,_0xa7edc0,_0x36aee5);if(!this[_0xced3('0x81')](_0xa7edc0[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xd4'));}var _0x2fdf88=this['getVariable']['sync'](this,_0xa7edc0[_0xced3('0xd3')]);if(!_0x2fdf88){return this[_0xced3('0xc')]['error'](_0xa7edc0,'no\x20variable\x20found');}var _0x45a4cc=this;_0x440713[_0xced3('0xd5')](function(_0x41f4bb,_0x1ef827){Object[_0xced3('0xd6')](_0x41f4bb)[_0xced3('0xd5')](function(_0x37fe55){_0x45a4cc['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xd7'),_0x2fdf88,_0x1ef827,_0x37fe55),_0x41f4bb[_0x37fe55]);});});this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xd8'),_0x2fdf88),_0x440713['length']);return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xd9'),_0x2fdf88));};AGIVertices[_0xced3('0xf')]['dial']=function(_0x45a8b7){logger[_0xced3('0xda')](util[_0xced3('0x28')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x45a8b7['label']));if(!this['isConfigured'](_0x45a8b7['sip_id'])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x45a8b7,_0xced3('0xdb'));}var _0x2f33b7=this['getUser']['sync'](this,_0x45a8b7[_0xced3('0xdc')]);if(!_0x2f33b7){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x45a8b7,'no\x20user\x20found');}var _0xb7a8da=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0xdd'),[util[_0xced3('0x28')](_0xced3('0xde'),_0x2f33b7),_0x45a8b7[_0xced3('0x60')],_0x45a8b7[_0xced3('0xdf')],_0x45a8b7[_0xced3('0x5f')]]);if(_0xb7a8da[_0xced3('0xa3')]===-0x1){return _0xb7a8da;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe0'),_0xced3('0xdd')));};AGIVertices['prototype'][_0xced3('0xe1')]=function(_0x512e84){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x512e84['label']));if(!this[_0xced3('0x81')](_0x512e84[_0xced3('0x7e')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xe2'));}if(!this[_0xced3('0x81')](_0x512e84[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this['channel']['bot']=!![];this[_0xced3('0x34')](_0x512e84);this[_0xced3('0x40')](_0x512e84[_0xced3('0x58')],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe3'),_0x512e84[_0xced3('0x58')]));var _0x4d08e8=this[_0xced3('0x75')][_0xced3('0x6e')](this,_0x512e84);if(_0x4d08e8){for(var _0x15b07e in _0x4d08e8){if(_0x4d08e8[_0xced3('0x93')](_0x15b07e)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xe4'),_0x15b07e[_0xced3('0x66')]()),_0x4d08e8[_0x15b07e]);}}this[_0xced3('0x40')](_0x4d08e8[_0xced3('0xe5')],_0xced3('0xe6'),_0xced3('0xe1'),'');return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe7'),_0x4d08e8[_0xced3('0xe5')]));}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x512e84,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0xced3('0xf')][_0xced3('0xe8')]=function(_0xa8ab9f){logger['info'](util[_0xced3('0x28')](_0xced3('0xe9'),_0xa8ab9f['label']));if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x78')])){return this[_0xced3('0xc')]['noop']('no\x20project_id\x20configured');}if(!this[_0xced3('0x81')](_0xa8ab9f[_0xced3('0x79')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xea'));}if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x7a')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xeb'));}if(!this[_0xced3('0x81')](_0xa8ab9f[_0xced3('0x7b')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xec'));}if(!this['isConfigured'](_0xa8ab9f[_0xced3('0x58')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0xa8ab9f);this['createSquareMessage'](_0xa8ab9f['text'],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xee'),_0xa8ab9f[_0xced3('0x58')]));var _0x48bfa8=this[_0xced3('0x77')][_0xced3('0x6e')](this,_0xa8ab9f);if(_0x48bfa8){for(var _0x499b46 in _0x48bfa8){if(_0x48bfa8['hasOwnProperty'](_0x499b46)){if(_0x499b46!==_0xced3('0xef')){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xe4'),_0x499b46[_0xced3('0x66')]()),_0x48bfa8[_0x499b46]);}}}this[_0xced3('0x40')](_0x48bfa8[_0xced3('0xe5')],_0xced3('0xe6'),_0xced3('0xe8'),_0x48bfa8[_0xced3('0xef')]);return this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0xf0'),_0x48bfa8['speech']));}return this[_0xced3('0xc')]['error'](_0xa8ab9f,_0xced3('0xf1'));};AGIVertices['prototype'][_0xced3('0xf2')]=function(_0x355776){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0xf3'),_0x355776[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x355776['ndauth_url'])){return this[_0xced3('0xc')]['noop'](_0xced3('0xf4'));}if(!this[_0xced3('0x81')](_0x355776[_0xced3('0xf5')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xf6'));}if(!this['isConfigured'](_0x355776[_0xced3('0xf7')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20password\x20configured');}if(!this[_0xced3('0x81')](_0x355776['ndassistant_url'])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20text\x20configured');}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0x355776);this['createSquareMessage'](_0x355776['text'],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20SestekNDA:\x20%s',_0x355776['text']));var _0x30ce84=this[_0xced3('0x7c')]['sync'](this,_0x355776);if(_0x30ce84){for(var _0x33c350 in _0x30ce84){if(_0x30ce84[_0xced3('0x93')](_0x33c350)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0xf8'),_0x33c350[_0xced3('0x66')]()),_0x30ce84[_0x33c350]);}}this[_0xced3('0x40')](_0x30ce84[_0xced3('0xe5')],'out',_0xced3('0xf2'),'');if(_0x30ce84[_0xced3('0xf9')]){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0xfa'),_0x30ce84[_0xced3('0xf9')]));var _0x43c1ef=this[_0xced3('0xc')]['streamFile'](_0x30ce84[_0xced3('0xf9')]);try{fs[_0xced3('0xfb')](_0x30ce84[_0xced3('0xf9')]+'.wav');}catch(_0x1f746e){logger['error'](_0x1f746e);}return _0x43c1ef;}else{return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xfc'),_0x30ce84['speech']));}}return this['channel']['error'](_0x355776,_0xced3('0xfd'));};AGIVertices[_0xced3('0xf')]['end']=function(_0xe0a4a8){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20END\x20(%s)\x20block',_0xe0a4a8[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xfe'));};AGIVertices[_0xced3('0xf')][_0xced3('0xff')]=function(_0x38c833){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x100'),_0x38c833['label']));var _0xa7973c='';if(_0x38c833[_0xced3('0x101')]){if(!this[_0xced3('0x81')](_0x38c833['trunk_id'])){return this[_0xced3('0xc')]['error'](_0x38c833,_0xced3('0x102'));}else{var _0x4b5355=parseInt(_0x38c833[_0xced3('0x101')],0xa);if(isNaN(_0x4b5355)){_0xa7973c=_0x38c833[_0xced3('0x101')];}else{_0xa7973c=this[_0xced3('0x1b')][_0xced3('0x6e')](this,_0x38c833[_0xced3('0x101')]);if(!_0xa7973c){return this['channel']['error'](_0x38c833,_0xced3('0x103'));}}}}else if(_0x38c833['trunk_name']){_0xa7973c=_0x38c833[_0xced3('0x104')];}else{return this[_0xced3('0xc')][_0xced3('0x4c')](_0x38c833,_0xced3('0x102'));}var _0xcea3bf=this['channel'][_0xced3('0x53')](_0xced3('0xdd'),[util[_0xced3('0x28')](_0xced3('0x105'),_0xa7973c,_0x38c833[_0xced3('0x45')]),_0x38c833[_0xced3('0x60')],_0x38c833[_0xced3('0xdf')],_0x38c833[_0xced3('0x5f')]]);if(_0xcea3bf['result']===-0x1){return _0xcea3bf;}return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xe0'),_0xced3('0xdd')));};AGIVertices[_0xced3('0xf')]['finally']=function(_0x2a4266){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x106'),_0x2a4266[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')]('finally');};AGIVertices[_0xced3('0xf')]['getdigits']=function(_0x1f1042){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x107'),_0x1f1042['label']));if(_0x1f1042[_0xced3('0x108')]===0x0){return this[_0xced3('0xa4')](_0x1f1042);}_0x1f1042['retry']-=0x1;if(!this[_0xced3('0x81')](_0x1f1042[_0xced3('0x109')])){return this['channel']['error'](_0x1f1042,'no\x20file\x20audio\x20selected');}var _0x39c5fa=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x1f1042[_0xced3('0x109')]);if(!_0x39c5fa){return this[_0xced3('0xc')]['error'](_0x1f1042,_0xced3('0x10a'));}if(!this['isConfigured'](_0x1f1042[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0xced3('0xd4'));}var _0x56a01f=this['channel']['getData'](_0x39c5fa,_0x1f1042[_0xced3('0x10b')],_0x1f1042['maxdigit']);var _0x25960f=_0x56a01f['result']?_0x56a01f[_0xced3('0xa3')][_0xced3('0x48')]():'';logger['info'](_0xced3('0x10c'),JSON[_0xced3('0x71')](_0x56a01f));if(_0x56a01f['result']===-0x1){this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x1f1042,_0x25960f);return _0x56a01f;}else if(_0x56a01f[_0xced3('0xa0')]===_0xced3('0x60')){_0x56a01f[_0xced3('0xa3')]=_0x25960f[_0xced3('0x98')]>=parseInt(_0x1f1042['mindigit'])?'x':'i';}else{_0x56a01f[_0xced3('0xa3')]=_0x25960f[_0xced3('0x98')]>=parseInt(_0x1f1042['mindigit'])&&_0x25960f[_0xced3('0x98')]<=parseInt(_0x1f1042['maxdigit'])?'x':'i';}var _0x3a0e0f=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x1f1042[_0xced3('0xd3')]);if(!_0x3a0e0f){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x1f1042,_0xced3('0x10d'));}this[_0xced3('0xc')][_0xced3('0x9d')](_0x3a0e0f,_0x25960f);if(this[_0xced3('0x81')](_0x1f1042[_0xced3('0x10e')])){var _0x3dff75=parseInt(_0x1f1042[_0xced3('0x10e')],0xa);var _0x609df4=rs[_0xced3('0x10f')]({'charset':'*','length':_0x3dff75});var _0x2a2bc1=_0x25960f[_0xced3('0x98')];if(_0x2a2bc1>0x0){if(_0x2a2bc1>_0x3dff75){this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x1f1042,_0x1f1042[_0xced3('0x110')]===_0xced3('0x111')?_0x609df4+_0x25960f[_0xced3('0x112')](_0x3dff75):_0x25960f[_0xced3('0x112')](0x0,_0x2a2bc1-_0x3dff75)+_0x609df4);}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,rs[_0xced3('0x10f')]({'charset':'*','length':_0x2a2bc1}));}}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,'');}}else{this[_0xced3('0x34')]['sync'](this,_0x1f1042,_0x25960f);}return _0x56a01f;};AGIVertices[_0xced3('0xf')][_0xced3('0x113')]=function(_0xa2cfe0){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x114'),_0xa2cfe0[_0xced3('0x35')]));return this[_0xced3('0xb')](_0xa2cfe0);};AGIVertices[_0xced3('0xf')][_0xced3('0x115')]=function(_0x321a4){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x116'),_0x321a4[_0xced3('0x35')]));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x321a4,_0x321a4['goalname']);return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')]('GOAL\x20%s',_0x321a4['goalname']));};AGIVertices[_0xced3('0xf')]['awspolly']=function(_0x551fa7){logger['info'](util[_0xced3('0x28')](_0xced3('0x117'),_0x551fa7['label']));if(!this[_0xced3('0x81')](_0x551fa7[_0xced3('0x88')])||!this[_0xced3('0x81')](_0x551fa7['aws_secret_access_key'])){return this['channel']['noop'](_0xced3('0x118'));}if(!this[_0xced3('0x81')](_0x551fa7[_0xced3('0x58')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20aws\x20Polly\x20%s',_0x551fa7[_0xced3('0x58')]));var _0x18f38c=this[_0xced3('0x83')][_0xced3('0x6e')](this,_0x551fa7);if(_0x18f38c){this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x119'),_0x18f38c));var _0x278882=this['channel'][_0xced3('0x11a')](_0x18f38c);try{fs['unlink'](_0x18f38c+_0xced3('0x11b'));}catch(_0x5c6cf4){logger['error'](_0x5c6cf4);}return _0x278882;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x551fa7,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0xced3('0xf')][_0xced3('0x11c')]=function(_0x457882){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x11d'),_0x457882[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x457882['aws_access_key_id'])||!this[_0xced3('0x81')](_0x457882[_0xced3('0x89')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x118'));}if(!this[_0xced3('0x81')](_0x457882[_0xced3('0x8b')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x11e'));}if(!this[_0xced3('0x81')](_0x457882[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')][_0xced3('0xed')]=!![];this[_0xced3('0x34')](_0x457882);this[_0xced3('0x40')](_0x457882[_0xced3('0x58')],'in','','');this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x11f'),_0x457882['text']));var _0x2c6e4d=this[_0xced3('0x87')][_0xced3('0x6e')](this,_0x457882);if(_0x2c6e4d){for(var _0x5d9122 in _0x2c6e4d){if(_0x2c6e4d[_0xced3('0x93')](_0x5d9122)&&_['isString'](_0x2c6e4d[_0x5d9122])){this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x120'),_0x5d9122[_0xced3('0x66')]()),_0x2c6e4d[_0x5d9122]);}}if(_[_0xced3('0x42')](_0x2c6e4d['message'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x121'));}else{this[_0xced3('0x40')](_0x2c6e4d[_0xced3('0x73')],_0xced3('0xe6'),_0xced3('0x122'),'');return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x123'),_0x2c6e4d[_0xced3('0x73')]));}}return this['channel'][_0xced3('0x4c')](_0x457882,_0xced3('0x124'));};AGIVertices[_0xced3('0xf')]['googleasr']=function(_0x449d02){logger['info'](util['format'](_0xced3('0x125'),_0x449d02[_0xced3('0x35')],_0x449d02[_0xced3('0x60')]));if(!this[_0xced3('0x81')](_0x449d02[_0xced3('0x7e')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xe2'));}var _0x40fc9c=_0xced3('0x126');var _0x26ad44=util[_0xced3('0x28')](_0xced3('0x127'),FILES_PATH,rs['generate'](0x4));var _0x565b0b=util[_0xced3('0x28')](_0xced3('0x9c'),_0x26ad44,_0x40fc9c);var _0x1cc564=!![];if(_0x449d02[_0xced3('0x128')]===_0xced3('0x129')){_0x1cc564=![];}var _0x1b77fb=this['channel'][_0xced3('0x12a')](_0x26ad44,_0x40fc9c,_0x449d02['intKey'],_0x449d02[_0xced3('0x60')],undefined,_0x1cc564);if(_0x1b77fb[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x12b'),_0x565b0b));var _0x53d10b=this[_0xced3('0x8c')][_0xced3('0x6e')](this,_0x449d02,_0x565b0b);if(_0x53d10b){for(var _0x3355c3 in _0x53d10b){if(_0x53d10b[_0xced3('0x93')](_0x3355c3)){this[_0xced3('0xc')][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x12c'),_0x3355c3[_0xced3('0x66')]()),_0x53d10b[_0x3355c3]);}}return this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0x12d'),JSON[_0xced3('0x71')](_0x53d10b)));}}return _0x1b77fb;};AGIVertices[_0xced3('0xf')]['tildeasr']=function(_0x465eeb){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x12e'),_0x465eeb[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x465eeb[_0xced3('0x8f')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20appid\x20configured');}if(!this['isConfigured'](_0x465eeb['appsecret'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x12f'));}var _0x5e08c7=_0xced3('0x126');var _0x47d4d5=util['format']('%s/recordings/%s',FILES_PATH,rs[_0xced3('0x10f')](0x4));var _0x26fc28=util[_0xced3('0x28')](_0xced3('0x9c'),_0x47d4d5,_0x5e08c7);var _0x7944a8=!![];if(_0x465eeb[_0xced3('0x128')]===_0xced3('0x129')){_0x7944a8=![];}var _0x396541=this['channel'][_0xced3('0x12a')](_0x47d4d5,_0x5e08c7,_0x465eeb[_0xced3('0x130')],_0x465eeb[_0xced3('0x60')],undefined,_0x7944a8);if(_0x396541[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x131'),_0x26fc28));var _0x4d49da=this[_0xced3('0x8e')][_0xced3('0x6e')](this,_0x465eeb,_0x26fc28);if(_0x4d49da){for(var _0x12cf69 in _0x4d49da){if(_0x4d49da['hasOwnProperty'](_0x12cf69)){this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x132'),_0x12cf69[_0xced3('0x66')]()),_0x4d49da[_0x12cf69]);}}return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x133'),JSON[_0xced3('0x71')](_0x4d49da)));}}return _0x396541;};AGIVertices['prototype'][_0xced3('0x134')]=function(_0x28ead4){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x135'),_0x28ead4['label']));return this[_0xced3('0xc')][_0xced3('0x136')](_0x28ead4[_0xced3('0x3b')],_0x28ead4[_0xced3('0x137')],_0x28ead4[_0xced3('0x3c')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x138')]=function(_0x238f2d){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x139'),_0x238f2d['label']));if(!this[_0xced3('0x81')](_0x238f2d[_0xced3('0x13a')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x238f2d,'no\x20condition\x20configured');}try{var _0x4f1cdd=eval(_0x238f2d[_0xced3('0x13a')])?_0xced3('0x13b'):'false';this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x13c'),_0x238f2d[_0xced3('0x13a')],_0x4f1cdd));return{'code':0xc8,'result':_0x4f1cdd};}catch(_0x21fd10){return{'code':0xc8,'result':_0xced3('0x13d')};}};AGIVertices[_0xced3('0xf')][_0xced3('0x13e')]=function(_0x4a22af){logger['info'](util['format'](_0xced3('0x13f'),_0x4a22af['label']));if(!this[_0xced3('0x81')](_0x4a22af[_0xced3('0x140')])){return this[_0xced3('0xc')]['error'](_0x4a22af,_0xced3('0x141'));}var _0x1c682b=this[_0xced3('0x22')][_0xced3('0x6e')](this,_0x4a22af[_0xced3('0x140')]);if(!_0x1c682b){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x4a22af,_0xced3('0x142'));}for(var _0x9033=0x0;_0x9033<_0x1c682b[_0xced3('0x98')];_0x9033+=0x1){var _0x520863=this[_0xced3('0xc')][_0xced3('0xa2')](util[_0xced3('0x28')](_0xced3('0x143'),_0x1c682b[_0x9033]));if(_0x520863[_0xced3('0xa3')]===-0x1){return _0x520863;}logger['info'](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0x520863[_0xced3('0xa0')]));if(_0x520863[_0xced3('0xa0')]==='true'){logger['info'](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13b')));this[_0xced3('0xc')]['noop'](util['format'](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13b')));return{'code':0xc8,'result':_0xced3('0x13b')};}else{logger[_0xced3('0x2c')](util[_0xced3('0x28')]('IFTIME\x20%s\x20%s',_0x1c682b[_0x9033],_0xced3('0x13d')));this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x144'),_0x1c682b[_0x9033],_0xced3('0x13d')));}}return{'code':0xc8,'result':_0xced3('0x13d')};};AGIVertices['prototype'][_0xced3('0x145')]=function(_0x39b6b6){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x146'),_0x39b6b6[_0xced3('0x35')]));return this[_0xced3('0xc')]['hangup']();};AGIVertices['prototype'][_0xced3('0x147')]=function(_0x23c441){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x148'),_0x23c441[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x23c441[_0xced3('0x7e')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xe2'));}var _0x45e11b=_0xced3('0x126');var _0x50a4fc=util['format'](_0xced3('0x127'),FILES_PATH,rs[_0xced3('0x10f')](0x4));var _0x5273ae=util[_0xced3('0x28')](_0xced3('0x9c'),_0x50a4fc,_0x45e11b);var _0x2c006d=!![];if(_0x23c441[_0xced3('0x128')]===_0xced3('0x129')){_0x2c006d=![];}var _0x11b117=this[_0xced3('0xc')]['recordFile'](_0x50a4fc,_0x45e11b,_0x23c441[_0xced3('0x130')],_0x23c441[_0xced3('0x60')],undefined,_0x2c006d);if(_0x11b117[_0xced3('0xa3')]!==-0x1){this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x149'),_0x5273ae));var _0x569957=this[_0xced3('0x80')][_0xced3('0x6e')](this,_0x23c441,_0x5273ae);if(_0x569957){for(var _0x2fd95f in _0x569957){if(_0x569957[_0xced3('0x93')](_0x2fd95f)){this[_0xced3('0xc')]['setVariable'](util[_0xced3('0x28')]('ISPEECH_ASR_%s',_0x2fd95f[_0xced3('0x66')]()),_0x569957[_0x2fd95f]);}}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x14a'),JSON[_0xced3('0x71')](_0x569957)));}}return _0x11b117;};AGIVertices['prototype'][_0xced3('0x14b')]=function(_0x22934d){logger[_0xced3('0x2c')](util['format'](_0xced3('0x14c'),_0x22934d[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x22934d[_0xced3('0x7e')])){return this[_0xced3('0xc')]['noop'](_0xced3('0xe2'));}if(!this[_0xced3('0x81')](_0x22934d[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')]('no\x20text\x20configured');}this['channel']['noop'](util[_0xced3('0x28')](_0xced3('0x14d'),_0x22934d[_0xced3('0x58')]));var _0x435e42=this[_0xced3('0x7d')][_0xced3('0x6e')](this,_0x22934d);if(_0x435e42){this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('ispeech\x20%s\x20file\x20created',_0x435e42));var _0x5534ca=this[_0xced3('0xc')]['streamFile'](_0x435e42,_0x22934d['intKey']);try{fs[_0xced3('0xfb')](_0x435e42+_0xced3('0x11b'));}catch(_0x1af1fe){logger[_0xced3('0x4c')](_0x1af1fe);}return _0x5534ca;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x22934d,_0xced3('0x14e'));};AGIVertices[_0xced3('0xf')][_0xced3('0x14f')]=function(_0x3ce284){logger['info'](util[_0xced3('0x28')](_0xced3('0x150'),_0x3ce284['label']));if(!this[_0xced3('0x81')](_0x3ce284[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3ce284,'no\x20find\x20by\x20configured');}logger[_0xced3('0x2c')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));var _0x565d44=this[_0xced3('0x4f')]['sync'](this,_0x3ce284['findBy']);if(_0x565d44){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x3ce284['findBy']));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger[_0xced3('0x2c')](util['format'](_0xced3('0x154'),this['channel'][_0xced3('0x39')],_0x3ce284[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x154'),this['channel'][_0xced3('0x39')],_0x3ce284['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['logout']=function(_0x19b531){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x155'),_0x19b531[_0xced3('0x35')]));if(!this['isConfigured'](_0x19b531[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x19b531,_0xced3('0x156'));}logger['info'](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')]['callerid'],_0x19b531['findBy']));var _0xcd4259=this[_0xced3('0x4e')]['sync'](this,_0x19b531['findBy']);if(_0xcd4259){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger['info'](util['format'](_0xced3('0x154'),this[_0xced3('0xc')][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xced3('0x39')],_0x19b531[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x158')};}};AGIVertices[_0xced3('0xf')][_0xced3('0x159')]=function(_0x18eb5c){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x15a'),_0x18eb5c['label']));if(!this['isConfigured'](_0x18eb5c[_0xced3('0x15b')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x18eb5c,'no\x20operation\x20configured');}this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x15c'),_0x18eb5c[_0xced3('0x15b')]));var _0xcd0d=eval(_0x18eb5c[_0xced3('0x15b')]);if(!this[_0xced3('0x81')](_0x18eb5c[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0xa6')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x6a84a=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x18eb5c[_0xced3('0xd3')]);if(!_0x6a84a){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x18eb5c,_0xced3('0x10d'));}if(_[_0xced3('0x97')](_0xcd0d)){var _0x2ac077=this;_0xcd0d[_0xced3('0xd5')](function(_0x98af84,_0x273e8f){_0x2ac077['channel']['setVariable'](util[_0xced3('0x28')](_0xced3('0x15d'),_0x6a84a,_0x273e8f),_0x98af84);});return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x15e'),_0x6a84a));}else{return this['channel']['setVariable'](_0x6a84a,_0xcd0d);}};AGIVertices['prototype'][_0xced3('0x15f')]=function(_0x157013){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x157013['label']));if(_0x157013['retry']===0x0){return this[_0xced3('0xa4')](_0x157013);}_0x157013[_0xced3('0x108')]-=0x1;if(!this[_0xced3('0x81')](_0x157013[_0xced3('0x109')])){return this['channel'][_0xced3('0x4c')](_0x157013,_0xced3('0x160'));}var _0x23f074=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x157013[_0xced3('0x109')]);if(!_0x23f074){return this['channel'][_0xced3('0x4c')](_0x157013,_0xced3('0x10a'));}var _0x2e8dc3=this[_0xced3('0xc')]['getData'](_0x23f074,_0x157013[_0xced3('0x10b')],_0x157013[_0xced3('0x161')]);var _0x3e46bc=_0x2e8dc3[_0xced3('0xa3')];if(_0x2e8dc3[_0xced3('0xa3')]===-0x1){this[_0xced3('0x34')]['sync'](this,_0x157013,'-1');return _0x2e8dc3;}else if(_0x2e8dc3[_0xced3('0xa0')]==='timeout'){_0x2e8dc3[_0xced3('0xa3')]=_0x2e8dc3[_0xced3('0xa3')][_0xced3('0x98')]>0x0?_0x2e8dc3['result']:'t';}else if(_['isEmpty'](_0x2e8dc3[_0xced3('0xa3')])){_0x2e8dc3[_0xced3('0xa3')]='#';_0x3e46bc='#';}if(!this[_0xced3('0x81')](_0x157013[_0xced3('0xd3')])){this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xd4'));}else{var _0x5c99b5=this[_0xced3('0xa2')]['sync'](this,_0x157013[_0xced3('0xd3')]);if(!_0x5c99b5){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x157013,_0xced3('0x10d'));}this[_0xced3('0xc')][_0xced3('0x9d')](_0x5c99b5,_0x3e46bc);}this['createSquareDetailsReport'][_0xced3('0x6e')](this,_0x157013,_0x3e46bc);return _0x2e8dc3;};AGIVertices['prototype'][_0xced3('0xa6')]=function(_0x6ac8d1){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x162'),_0x6ac8d1[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0x6ac8d1[_0xced3('0x163')]||_0x6ac8d1[_0xced3('0x35')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x164')]=function(_0x1382ef){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1382ef[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x1382ef[_0xced3('0x151')])){return this['channel'][_0xced3('0x4c')](_0x1382ef,'no\x20find\x20by\x20configured');}logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));var _0x1ef618=this['getPause']['sync'](this,_0x1382ef[_0xced3('0x165')]);var _0x355956=this[_0xced3('0x166')][_0xced3('0x6e')](this,_0x1382ef['findBy'],_0x1ef618);if(_0x355956){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xced3('0xc')][_0xced3('0x39')],_0x1382ef['findBy']));this['channel']['noop'](util[_0xced3('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xced3('0x39')],_0x1382ef[_0xced3('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['playback']=function(_0x48e24b){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x48e24b[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x48e24b[_0xced3('0x109')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x48e24b,_0xced3('0x160'));}var _0x12e2ae=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x48e24b[_0xced3('0x109')]);if(!_0x12e2ae){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x48e24b,'no\x20file\x20audio\x20found');}var _0x2677d6=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0x167'),[_0x12e2ae,_0x48e24b[_0xced3('0xdf')]]);if(_0x2677d6['result']===-0x1){return _0x2677d6;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0xc0'),_0xced3('0x167'),_0x12e2ae));};AGIVertices[_0xced3('0xf')][_0xced3('0x168')]=function(_0x2795e4){logger[_0xced3('0x2c')](util['format'](_0xced3('0x169'),_0x2795e4[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x2795e4[_0xced3('0x16a')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x2795e4,_0xced3('0x16b'));}var _0x1044fa='';var _0x2503f2=parseInt(_0x2795e4['queue_id'],0xa);if(isNaN(_0x2503f2)){_0x1044fa=_0x2795e4[_0xced3('0x16a')];}else{_0x1044fa=this['getVoiceQueue'][_0xced3('0x6e')](this,_0x2795e4[_0xced3('0x16a')]);if(!_0x1044fa){return this['channel'][_0xced3('0x4c')](_0x2795e4,'no\x20queue\x20found');}}var _0x53c03a='';if(this['isConfigured'](_0x2795e4[_0xced3('0x109')])){var _0x1dd828=this[_0xced3('0x1c')][_0xced3('0x6e')](this,_0x2795e4[_0xced3('0x109')]);if(_0x1dd828){_0x53c03a=_0x1dd828;}}this[_0xced3('0x34')]['sync'](this,_0x2795e4,_0x1044fa);if(_0x2795e4[_0xced3('0xdf')][_0xced3('0x16c')]('x')<0x0){_0x2795e4[_0xced3('0xdf')]+='x';}if(_0x2795e4[_0xced3('0xdf')][_0xced3('0x16c')]('X')<0x0){_0x2795e4['opts']+='X';}this[_0xced3('0xc')]['setVariable'](_0xced3('0x16d'),_0x1044fa?_0x1044fa['toLowerCase']():'');var _0x15129f=this[_0xced3('0xc')][_0xced3('0x53')]('QUEUE',[_0x1044fa,_0x2795e4['opts'],_0x2795e4['url'],_0x53c03a,_0x2795e4[_0xced3('0x60')],_0x2795e4['agi'],_0x2795e4[_0xced3('0x16e')],_0x2795e4[_0xced3('0x16f')],'',_0x2795e4[_0xced3('0x170')]]);if(_0x15129f[_0xced3('0xa3')]===-0x1){return _0x15129f;}return this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('Executed\x20command\x20%s\x20%s','QUEUE',_0x1044fa));};AGIVertices[_0xced3('0xf')]['record']=function(_0x73ee28){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x171'),_0x73ee28[_0xced3('0x35')]));var _0x1ce17d=_0x73ee28[_0xced3('0x172')]||_0xced3('0x126');var _0xdbdd15=util[_0xced3('0x28')]('%s_%s',this[_0xced3('0xc')][_0xced3('0x38')],rs[_0xced3('0x10f')](0x5));var _0x5e568f=util['format']('%s/recordings/%s.%s',FILES_PATH,_0xdbdd15,_0x1ce17d);var _0x4289ad=util[_0xced3('0x28')](_0xced3('0x127'),FILES_PATH,_0xdbdd15);this['createSquareRecording']['sync'](this,_0x73ee28,_0xdbdd15,_0x5e568f);this[_0xced3('0xc')][_0xced3('0x9d')](_0xced3('0x173'),_0xdbdd15);logger['info'](_0xced3('0x174'),_0x4289ad,_0x1ce17d,_0x73ee28[_0xced3('0x175')],_0x73ee28[_0xced3('0x60')]);return this[_0xced3('0xc')]['recordFile'](_0x4289ad,_0x1ce17d,_0x73ee28[_0xced3('0x175')],_0x73ee28[_0xced3('0x60')],undefined,!![]);};AGIVertices[_0xced3('0xf')][_0xced3('0x176')]=function(_0x26e463){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x177'),_0x26e463['label']));if(!this[_0xced3('0x81')](_0x26e463[_0xced3('0x5f')])){return this[_0xced3('0xc')]['noop'](_0xced3('0x178'));}var _0x3875ce=this[_0xced3('0x179')]['sync'](this,_0x26e463);logger[_0xced3('0x2c')](util['format'](_0xced3('0x17a'),util['inspect'](_0x3875ce,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x26e463[_0xced3('0xd3')])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x310cf9=this['getVariable'][_0xced3('0x6e')](this,_0x26e463[_0xced3('0xd3')]);if(!_0x310cf9){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x26e463,_0xced3('0x10d'));}this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')]('%s_STATUS_CODE',_0x310cf9),_0x3875ce[_0xced3('0x17b')]?_0x3875ce[_0xced3('0x17b')]:_0xced3('0x17c'));this['channel'][_0xced3('0x9d')](util[_0xced3('0x28')](_0xced3('0x17d'),_0x310cf9),_0x3875ce[_0xced3('0x17e')]?_0x3875ce[_0xced3('0x17e')]:'OK');if(_0x3875ce[_0xced3('0x67')]){try{this['saveRestApiResult'](_0x3875ce['body'],_0x310cf9);}catch(_0x58e83c){logger['error'](util[_0xced3('0x28')](_0xced3('0x17f'),_0x310cf9));}}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('variable\x20%s\x20set',_0x310cf9));};AGIVertices[_0xced3('0xf')]['saydigits']=function(_0x4291d4){logger[_0xced3('0x2c')](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x4291d4[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x180')](_0x4291d4[_0xced3('0x181')][_0xced3('0x55')](/\s+/g,''),_0x4291d4[_0xced3('0x175')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x182')]=function(_0x5698c9){logger[_0xced3('0x2c')](util['format'](_0xced3('0x183'),_0x5698c9[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x184')](_0x5698c9[_0xced3('0x61')]['replace'](/\s+/g,''),_0x5698c9[_0xced3('0x175')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x185')]=function(_0xb07a10){logger[_0xced3('0x2c')](util[_0xced3('0x28')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0xb07a10[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0x186')](_0xb07a10[_0xced3('0x58')],_0xb07a10['escape_digits']);};AGIVertices[_0xced3('0xf')][_0xced3('0x187')]=function(_0x2dbca8){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x188'),_0x2dbca8[_0xced3('0x35')]));if(!this['isConfigured'](_0x2dbca8[_0xced3('0x189')])){return this['channel'][_0xced3('0xa6')](_0xced3('0x18a'));}var _0x469dbe=this[_0xced3('0x20')][_0xced3('0x6e')](this,_0x2dbca8[_0xced3('0x189')]);if(!_0x469dbe||!_0x469dbe[_0xced3('0x18b')]){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x2dbca8,_0xced3('0x18c'));}var _0x1e1ccb={'from':util[_0xced3('0x28')](_0xced3('0x18d'),_0x469dbe[_0xced3('0x11')],_0x469dbe[_0xced3('0x18e')]||_0x469dbe[_0xced3('0x18b')]['user']),'to':_0x2dbca8['to']||'','cc':_0x2dbca8['cc']||'','bcc':_0x2dbca8[_0xced3('0x18f')]||'','subject':_0x2dbca8[_0xced3('0x190')],'html':_0x2dbca8['text'],'text':_0x2dbca8[_0xced3('0x58')]};if(this[_0xced3('0x81')](_0x2dbca8[_0xced3('0x191')])){}logger[_0xced3('0xda')]('sendMail\x20message',JSON[_0xced3('0x71')](_0x1e1ccb));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x2dbca8,_0x2dbca8[_0xced3('0x189')]);this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x192'),_0x469dbe[_0xced3('0x11')]));this[_0xced3('0x21')][_0xced3('0x6e')](this,_0x469dbe[_0xced3('0x193')],_0x1e1ccb);return this[_0xced3('0xc')][_0xced3('0xa6')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xced3('0xf')][_0xced3('0x194')]=function(_0x4d2e1f){logger[_0xced3('0x2c')](util['format'](_0xced3('0x195'),_0x4d2e1f[_0xced3('0x35')]));return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x196'));};AGIVertices[_0xced3('0xf')][_0xced3('0x197')]=function(_0x56d54f){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x198'),_0x56d54f[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x56d54f['sms_account_id'])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x199'));}var _0x41269f=this['getSmsAccount']['sync'](this,_0x56d54f[_0xced3('0x19a')]);if(!_0x41269f){return this[_0xced3('0xc')]['error'](_0x56d54f,'no\x20sms\x20account\x20found');}var _0x17447d={'body':_0x56d54f[_0xced3('0x19b')],'phone':_0x56d54f['to']||'','SmsAccountId':_0x41269f['id']};logger[_0xced3('0xda')](_0xced3('0x19c'),JSON[_0xced3('0x71')](_0x17447d));this[_0xced3('0x34')][_0xced3('0x6e')](this,_0x56d54f,_0x56d54f['sms_account_id']);this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x19d'),_0x41269f['name']));this['createSmsMessage'][_0xced3('0x6e')](this,_0x17447d);return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x19e'));};AGIVertices[_0xced3('0xf')]['set']=function(_0x29a9bd){logger[_0xced3('0x2c')](util['format'](_0xced3('0x19f'),_0x29a9bd[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x29a9bd['variable_id'])){return this[_0xced3('0xc')]['error'](_0x29a9bd,_0xced3('0x1a0'));}var _0x49ffbf=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x29a9bd[_0xced3('0xd3')]);if(!_0x49ffbf){return this[_0xced3('0xc')]['error'](_0x29a9bd,'no\x20variable\x20found');}return this[_0xced3('0xc')][_0xced3('0x9d')](_0x49ffbf,_0x29a9bd[_0xced3('0x1a1')]);};AGIVertices[_0xced3('0xf')][_0xced3('0x1a2')]=function(_0x18e1f6){logger['info'](util[_0xced3('0x28')]('Enter\x20in\x20START\x20(%s)\x20block',_0x18e1f6['label']));this[_0xced3('0xc')][_0xced3('0xa6')]('START\x20CALLY\x20SQUARE');if(_0x18e1f6[_0xced3('0xb5')]==='yes'){this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x1a3'));return this[_0xced3('0xc')][_0xced3('0xb5')]();}return this['channel']['noop']('Skipped\x20Answer');};AGIVertices['prototype'][_0xced3('0x1a4')]=function(_0x1a573d){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x1a5'),_0x1a573d[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x1a573d[_0xced3('0x1a6')])){return this[_0xced3('0xc')]['error'](_0x1a573d,_0xced3('0x1a7'));}var _0x1a842b=this[_0xced3('0x1a8')][_0xced3('0x6e')](this,_0x1a573d[_0xced3('0x1a6')]);if(!this[_0xced3('0x81')](_0x1a842b)){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x1a573d,util[_0xced3('0x28')](_0xced3('0x1a9'),_0x1a573d[_0xced3('0x1a6')]));}if(_0x1a842b===this[_0xced3('0xc')][_0xced3('0x36')]){return this[_0xced3('0xc')]['error'](_0x1a573d,_0xced3('0x1aa'));}this[_0xced3('0x34')]['sync'](this,_0x1a573d,_0x1a842b);var _0x3b7d4f=this['channel'][_0xced3('0x53')]('AGI',util[_0xced3('0x28')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xced3('0xb2')][_0xced3('0x1ab')]||'127.0.0.1',_0x1a842b,this['channel'][_0xced3('0x36')]));if(_0x3b7d4f[_0xced3('0xa3')]===-0x1){return _0x3b7d4f;}return this['channel'][_0xced3('0xa6')](util['format']('Executed\x20command\x20%s\x20%s','AGI',_0x1a842b));};AGIVertices[_0xced3('0xf')][_0xced3('0x1ac')]=function(_0x474f26){logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x1ad'),_0x474f26[_0xced3('0x35')]));var _0x5d5dfd=this[_0xced3('0x1ae')][_0xced3('0x6e')](this,_0x474f26[_0xced3('0xb4')]);this['createSquareDetailsReport'][_0xced3('0x6e')](this,_0x474f26,_0x474f26['command']);if(this[_0xced3('0x81')](_0x474f26['variable_id'])){var _0x40552d=this['getVariable'][_0xced3('0x6e')](this,_0x474f26['variable_id']);if(_0x40552d){this[_0xced3('0xc')][_0xced3('0x9d')](_0x40552d,_0x5d5dfd);return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1af'),_0x474f26['command'],_0x40552d));}}return this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b0'),_0x474f26[_0xced3('0xb4')]));};AGIVertices[_0xced3('0xf')][_0xced3('0x1b1')]=function(_0x3a2c00){logger[_0xced3('0x2c')](util['format'](_0xced3('0x1b2'),_0x3a2c00['label']));_0x3a2c00[_0xced3('0x58')]=_0x3a2c00['text'][_0xced3('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x3a2c00[_0xced3('0x57')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0x1b3'));}if(!this[_0xced3('0x81')](_0x3a2c00[_0xced3('0x58')])){return this[_0xced3('0xc')][_0xced3('0xa6')](_0xced3('0xc2'));}this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b4'),_0x3a2c00[_0xced3('0x58')]));var _0x256b23=this['googleCloudTTS']['sync'](this,_0x3a2c00);if(_0x256b23){this[_0xced3('0xc')][_0xced3('0xa6')](util['format'](_0xced3('0x1b5'),_0x256b23));var _0x15f469=this[_0xced3('0xc')]['streamFile'](_0x256b23);try{fs[_0xced3('0xfb')](_0x256b23+_0xced3('0x11b'));}catch(_0x131353){logger[_0xced3('0x4c')](_0x131353);}return _0x15f469;}return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3a2c00,_0xced3('0x1b6'));};AGIVertices[_0xced3('0xf')][_0xced3('0x1b7')]=function(_0x1d9bf5){logger[_0xced3('0x2c')](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x1d9bf5['label']));_0x1d9bf5[_0xced3('0x58')]=_0x1d9bf5[_0xced3('0x58')][_0xced3('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xced3('0x81')](_0x1d9bf5[_0xced3('0x58')])){return this['channel'][_0xced3('0xa6')](_0xced3('0xc2'));}this['channel'][_0xced3('0xa6')](util[_0xced3('0x28')]('Trying\x20Google\x20TTS\x20%s',_0x1d9bf5['text']));var _0x1d950c=this[_0xced3('0x5e')]['sync'](this,_0x1d9bf5);if(_0x1d950c){this[_0xced3('0xc')]['noop'](util[_0xced3('0x28')](_0xced3('0x1b8'),_0x1d950c));var _0x38cd87=this['channel'][_0xced3('0x11a')](_0x1d950c);try{fs[_0xced3('0xfb')](_0x1d950c+_0xced3('0x11b'));}catch(_0x4bdd05){logger[_0xced3('0x4c')](_0x4bdd05);}return _0x38cd87;}return this['channel'][_0xced3('0x4c')](_0x1d9bf5,_0xced3('0x1b9'));};AGIVertices[_0xced3('0xf')][_0xced3('0x1ba')]=function(_0x3064b5){logger['info'](util[_0xced3('0x28')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x3064b5['label']));if(!this[_0xced3('0x81')](_0x3064b5[_0xced3('0x151')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x3064b5,_0xced3('0x156'));}logger[_0xced3('0x2c')](util[_0xced3('0x28')](_0xced3('0x157'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5['findBy']));var _0x39ca93=this['agentUnpause'][_0xced3('0x6e')](this,_0x3064b5['findBy']);if(_0x39ca93){logger['info'](util['format'](_0xced3('0x152'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x152'),this[_0xced3('0xc')]['callerid'],_0x3064b5[_0xced3('0x151')]));return{'code':0xc8,'result':_0xced3('0x153')};}else{logger['info'](util[_0xced3('0x28')](_0xced3('0x154'),this[_0xced3('0xc')]['callerid'],_0x3064b5[_0xced3('0x151')]));this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')](_0xced3('0x154'),this[_0xced3('0xc')][_0xced3('0x39')],_0x3064b5[_0xced3('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xced3('0xf')][_0xced3('0x1bb')]=function(_0x3a52cb){logger['info'](util[_0xced3('0x28')](_0xced3('0x1bc'),_0x3a52cb['label']));var _0x4377e4=this[_0xced3('0xc')][_0xced3('0x53')](_0xced3('0x1bd'),[_0x3a52cb['mailbox'],_0x3a52cb['options']]);if(_0x4377e4[_0xced3('0xa3')]===-0x1){return _0x4377e4;}return this[_0xced3('0xc')][_0xced3('0xa6')](util[_0xced3('0x28')]('Executed\x20command\x20%s\x20%s',_0xced3('0x1bd'),_0x3a52cb[_0xced3('0x1be')]));};AGIVertices[_0xced3('0xf')][_0xced3('0x1bf')]=function(_0x158ba5){logger[_0xced3('0x2c')](util['format'](_0xced3('0x1c0'),_0x158ba5[_0xced3('0x35')]));if(!this[_0xced3('0x81')](_0x158ba5[_0xced3('0xd3')])){return this[_0xced3('0xc')][_0xced3('0x4c')](_0x158ba5,'no\x20variable\x20selected');}var _0x149ed9=this[_0xced3('0xa2')][_0xced3('0x6e')](this,_0x158ba5[_0xced3('0xd3')]);if(!_0x149ed9){return this['channel'][_0xced3('0x4c')](_0x158ba5,_0xced3('0x10d'));}var _0x5557e5=this[_0xced3('0xc')][_0xced3('0xa2')](_0x149ed9);return{'code':0xc8,'result':_0x5557e5[_0xced3('0xa0')]?_0x5557e5[_0xced3('0xa0')]:'-'};};String['prototype']['replaceAll']=function(_0x4e248b,_0x29787d){return this[_0xced3('0x9e')](_0x4e248b)['join'](_0x29787d);};module[_0xced3('0x1c1')]=AGIVertices;
\ No newline at end of file
index ce80730..c6b7bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142e=['startAcw','interface','queue','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','info','acwTimeout','timer','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','updateAcw','update','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','acw','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','syncHangupRequest','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','agentringnoanswer','attendedtransfer','blindtransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype'];(function(_0xfb89d1,_0x17f94e){var _0x58bf9b=function(_0x36d6b4){while(--_0x36d6b4){_0xfb89d1['push'](_0xfb89d1['shift']());}};_0x58bf9b(++_0x17f94e);}(_0x142e,0x91));var _0xe142=function(_0xda2e54,_0x42d4a6){_0xda2e54=_0xda2e54-0x0;var _0x5df4bf=_0x142e[_0xda2e54];return _0x5df4bf;};'use strict';var util=require('util');var _=require(_0xe142('0x0'));var moment=require(_0xe142('0x1'));var ami=require(_0xe142('0x2'));var logger=require(_0xe142('0x3'))('acw');var RpcUser=require(_0xe142('0x4'));var RpcVoiceAgentReport=require(_0xe142('0x5'));function Acw(_0x2c19f2){this['voiceQueues']=_0x2c19f2[_0xe142('0x6')];this['agents']=_0x2c19f2[_0xe142('0x7')];this['timers']=_0x2c19f2[_0xe142('0x8')];this[_0xe142('0x9')]={};ami['on'](_0xe142('0xa'),this['syncAgentConnect'][_0xe142('0xb')](this));ami['on'](_0xe142('0xc'),this['syncHangupRequest']['bind'](this));ami['on']('hangup',this['syncHangup'][_0xe142('0xb')](this));ami['on'](_0xe142('0xd'),this['syncAgentRingNoAnswer'][_0xe142('0xb')](this));ami['on'](_0xe142('0xe'),this['syncAttendedTransfer'][_0xe142('0xb')](this));ami['on'](_0xe142('0xf'),this['syncBlindTransfer']['bind'](this));ami['on'](_0xe142('0x10'),this['syncAgentConnectPreview'][_0xe142('0xb')](this));}function getDiff(_0x33e89b){var _0xaf2fb1=moment()[_0xe142('0x11')](0x0);var _0x4684f6=moment(_0x33e89b)[_0xe142('0x11')](0x0);return _0xaf2fb1[_0xe142('0x12')](_0x4684f6,_0xe142('0x13'));}Acw[_0xe142('0x14')][_0xe142('0x15')]=function(_0xc89399){try{var _0x182963=this;var _0x413a40=this[_0xe142('0x9')][_0xc89399][_0xe142('0x16')];var _0x3c6848=this[_0xe142('0x9')][_0xc89399][_0xe142('0x17')];var _0x475623=this[_0xe142('0x6')][_0x3c6848];var _0x519f63=![];var _0xdc1373='ACW';if(_0x475623[_0xe142('0x18')]){if(_0x475623['mandatoryDispositionPause'][_0xe142('0x19')]){_0x519f63=!![];_0xdc1373=_0x475623[_0xe142('0x1a')][_0xe142('0x19')];}}ami[_0xe142('0x1b')]({'action':_0xe142('0x1c'),'interface':_0x413a40,'paused':!![],'reason':_0xdc1373})[_0xe142('0x1d')](function(_0x297842){if(_0x182963['agents'][_0x413a40]){return RpcUser[_0xe142('0x1e')](_0x182963[_0xe142('0x7')][_0x413a40]['id'])['then'](function(_0x1abd61){if(_0x1abd61&&!_0x1abd61[_0xe142('0x1f')]){logger['info'](_0xe142('0x20'),_0xc89399,_0x413a40,_0x3c6848);var _0x127b37=_0x182963[_0xe142('0x9')][_0xc89399]['attended']&&_0x182963['channels'][_0xc89399][_0xe142('0x21')]?_0x182963['channels'][_0xc89399][_0xe142('0x21')]:_0xc89399;return RpcUser[_0xe142('0x22')](_0x182963['agents'][_0x413a40],_0xdc1373,_0x127b37)[_0xe142('0x1d')](function(_0x57153b){if(!_0x519f63){_0x182963[_0xe142('0x8')][_0x413a40]={};logger[_0xe142('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xc89399,_0x182963[_0xe142('0x6')][_0x3c6848][_0xe142('0x24')],_0x413a40,_0x3c6848);_0x182963['timers'][_0x413a40][_0xe142('0x25')]=setTimeout(_0x182963['stopAcw']['bind'](_0x182963,_0x413a40),_0x182963['voiceQueues'][_0x3c6848][_0xe142('0x24')]*0x3e8);_0x182963[_0xe142('0x8')][_0x413a40][_0xe142('0x26')]=moment()['format'](_0xe142('0x27'));_0x182963[_0xe142('0x8')][_0x413a40]['uniqueid']=_0xc89399;_0x182963[_0xe142('0x8')][_0x413a40]['queue']=_0x3c6848;_0x182963[_0xe142('0x8')][_0x413a40][_0xe142('0x28')]=function(){var _0x1178d6=getDiff(_0x182963[_0xe142('0x8')][_0x413a40][_0xe142('0x26')]);clearTimeout(_0x182963['timers'][_0x413a40][_0xe142('0x25')]);_0x182963[_0xe142('0x8')][_0x413a40]['timer']=![];RpcVoiceAgentReport[_0xe142('0x29')]({'acwtime':_0x1178d6},_0x182963[_0xe142('0x8')][_0x413a40][_0xe142('0x2a')],_0x413a40)[_0xe142('0x1d')](function(_0x5d6fae){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0xc89399,_0x1178d6,_0x5d6fae);})[_0xe142('0x2b')](function(_0x34b549){logger['error'](_0xe142('0x2c'),_0xc89399,_0x34b549);});delete _0x182963[_0xe142('0x8')][_0x413a40];};}});}else{logger[_0xe142('0x23')](_0xe142('0x2d'),_0xc89399,_0x413a40,_0x3c6848);}});}})[_0xe142('0x2b')](function(_0x5f3b0b){logger[_0xe142('0x2e')](_0xe142('0x2f'),_0xc89399,_0x182963['voiceQueues'][_0x3c6848][_0xe142('0x24')],_0x413a40,_0x3c6848);})['finally'](function(){delete _0x182963['channels'][_0xc89399];});}catch(_0x4124d3){logger[_0xe142('0x2e')]('[ACW][START]\x20%s',_0x4124d3[_0xe142('0x30')]);}};Acw[_0xe142('0x14')]['stopAcw']=function(_0x47a930){try{var _0x471acb=this;if(_0x471acb['timers'][_0x47a930]){_0x471acb['timers'][_0x47a930]['timer']=![];var _0x36b09c=_0x471acb[_0xe142('0x8')][_0x47a930]['uniqueid'];var _0x51850d=_0x471acb['timers'][_0x47a930][_0xe142('0x17')];var _0x571a3b=_0x471acb[_0xe142('0x6')][_0x51850d]['acwTimeout'];logger[_0xe142('0x23')](_0xe142('0x31'),_0x36b09c,_0x47a930);RpcUser[_0xe142('0x32')](this['agents'][_0x47a930]);RpcVoiceAgentReport[_0xe142('0x29')]({'acwtime':_0x571a3b,'agentacw':!![]},_0x36b09c,_0x47a930)[_0xe142('0x1d')](function(_0x3be71f){logger['info'](_0xe142('0x33'),_0x36b09c,_0x571a3b,_0x3be71f);})[_0xe142('0x2b')](function(_0x5b3fad){logger[_0xe142('0x2e')](_0xe142('0x2c'),_0x36b09c,_0x5b3fad);});}else{logger['error'](_0xe142('0x34'),_0x47a930);if(_0x471acb['timers']){logger[_0xe142('0x23')]('[ACW][TIMERS]',JSON[_0xe142('0x35')](_0x471acb['timers']));}}}catch(_0x26e1ed){logger[_0xe142('0x2e')](_0xe142('0x36'),_0x26e1ed[_0xe142('0x30')]);}};Acw[_0xe142('0x14')]['syncAgentConnect']=function(_0xde1ef8){try{if(this['voiceQueues'][_0xde1ef8[_0xe142('0x17')]]&&(this[_0xe142('0x6')][_0xde1ef8[_0xe142('0x17')]][_0xe142('0x37')]||this['voiceQueues'][_0xde1ef8[_0xe142('0x17')]][_0xe142('0x18')])){if(this[_0xe142('0x7')][_0xde1ef8['interface']]){this[_0xe142('0x9')][_0xde1ef8[_0xe142('0x2a')]]={'queue':_0xde1ef8['queue'],'interface':_0xde1ef8[_0xe142('0x16')],'destlinkedid':_0xde1ef8[_0xe142('0x21')]};}}}catch(_0x49ea26){logger[_0xe142('0x2e')](_0xe142('0x38'),_0x49ea26[_0xe142('0x30')]);}};Acw[_0xe142('0x14')][_0xe142('0x39')]=function(_0x1f88a5){try{if(this[_0xe142('0x6')][_0x1f88a5['queue']]&&(this[_0xe142('0x6')][_0x1f88a5[_0xe142('0x17')]][_0xe142('0x37')]||this['voiceQueues'][_0x1f88a5['queue']]['mandatoryDisposition'])){if(this[_0xe142('0x7')][_0x1f88a5[_0xe142('0x16')]]){this['channels'][_0x1f88a5['uniqueid']]={'queue':_0x1f88a5['queue'],'interface':_0x1f88a5[_0xe142('0x16')]};}}}catch(_0x29c452){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x29c452[_0xe142('0x30')]);}};Acw[_0xe142('0x14')][_0xe142('0x3a')]=function(_0x5d552e){try{if(this[_0xe142('0x9')][_0x5d552e[_0xe142('0x2a')]]&&_[_0xe142('0x3b')](this[_0xe142('0x9')][_0x5d552e['uniqueid']][_0xe142('0x3c')])){logger[_0xe142('0x23')](_0xe142('0x3d'),_0x5d552e['uniqueid']);this['startAcw'](_0x5d552e[_0xe142('0x2a')]);}else if(this[_0xe142('0x9')][_0x5d552e[_0xe142('0x3e')]]&&_[_0xe142('0x3b')](this['channels'][_0x5d552e[_0xe142('0x3e')]][_0xe142('0x3c')])){logger[_0xe142('0x23')](_0xe142('0x3f'),_0x5d552e[_0xe142('0x3e')]);this[_0xe142('0x15')](_0x5d552e[_0xe142('0x3e')]);}}catch(_0x4d8353){logger[_0xe142('0x2e')](_0xe142('0x40'),_0x4d8353[_0xe142('0x30')]);}};Acw[_0xe142('0x14')][_0xe142('0x41')]=function(_0x34c5bb){try{if(this[_0xe142('0x9')][_0x34c5bb['uniqueid']]&&this['channels'][_0x34c5bb[_0xe142('0x2a')]][_0xe142('0x3c')]){logger[_0xe142('0x23')](_0xe142('0x42'),_0x34c5bb['uniqueid']);this[_0xe142('0x15')](_0x34c5bb[_0xe142('0x2a')]);}else if(this[_0xe142('0x9')][_0x34c5bb[_0xe142('0x3e')]]&&this[_0xe142('0x9')][_0x34c5bb[_0xe142('0x3e')]][_0xe142('0x3c')]){logger[_0xe142('0x23')](_0xe142('0x43'),_0x34c5bb[_0xe142('0x3e')]);this[_0xe142('0x15')](_0x34c5bb['linkedid']);}}catch(_0x449996){logger[_0xe142('0x2e')]('[ACW][syncHangup]\x20%s',_0x449996[_0xe142('0x30')]);}};Acw[_0xe142('0x14')]['syncAttendedTransfer']=function(_0xca2adb){try{if(!_['isNil'](this[_0xe142('0x9')][_0xca2adb[_0xe142('0x44')]])){this['startAcw'](_0xca2adb['transfereeuniqueid']);if(this[_0xe142('0x9')][_0xca2adb[_0xe142('0x45')]]){this['channels'][_0xca2adb[_0xe142('0x45')]][_0xe142('0x3c')]=!![];this['channels'][_0xca2adb[_0xe142('0x46')]]=this[_0xe142('0x9')][_0xca2adb[_0xe142('0x45')]];delete this[_0xe142('0x9')][_0xca2adb['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0xe142('0x9')][_0xca2adb['transfertargetuniqueid']])){this[_0xe142('0x15')](_0xca2adb[_0xe142('0x46')]);if(this[_0xe142('0x9')][_0xca2adb['origtransfereruniqueid']]){this['channels'][_0xca2adb[_0xe142('0x47')]][_0xe142('0x3c')]=!![];this[_0xe142('0x9')][_0xca2adb[_0xe142('0x44')]]=this['channels'][_0xca2adb[_0xe142('0x47')]];delete this[_0xe142('0x9')][_0xca2adb['origtransfereruniqueid']];}}}catch(_0x5c0577){logger[_0xe142('0x2e')](_0xe142('0x48'),_0x5c0577[_0xe142('0x30')]);}};Acw['prototype'][_0xe142('0x49')]=function(_0x3d7802){try{if(this[_0xe142('0x9')][_0x3d7802[_0xe142('0x4a')]]){logger['info'](_0xe142('0x4b'),JSON['stringify'](_0x3d7802['transfereruniqueid']));this['startAcw'](_0x3d7802[_0xe142('0x4a')]);}else if(this[_0xe142('0x9')][_0x3d7802[_0xe142('0x4c')]]){logger[_0xe142('0x23')](_0xe142('0x4d'),JSON[_0xe142('0x35')](_0x3d7802[_0xe142('0x4c')]));this[_0xe142('0x15')](_0x3d7802[_0xe142('0x4c')]);}}catch(_0x41a509){logger[_0xe142('0x2e')](_0xe142('0x4e'),_0x41a509[_0xe142('0x30')]);}};Acw[_0xe142('0x14')][_0xe142('0x4f')]=function(_0x353f3c){try{if(this[_0xe142('0x6')][_0x353f3c[_0xe142('0x17')]]&&this[_0xe142('0x6')][_0x353f3c[_0xe142('0x17')]]['autopause']===_0xe142('0x50')){if(this[_0xe142('0x7')][_0x353f3c[_0xe142('0x16')]]){logger[_0xe142('0x23')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x353f3c['uniqueid'],_0x353f3c[_0xe142('0x16')],_0x353f3c[_0xe142('0x17')]);return RpcUser[_0xe142('0x22')](this[_0xe142('0x7')][_0x353f3c[_0xe142('0x16')]],_0xe142('0x51'),_0x353f3c[_0xe142('0x2a')]);}}}catch(_0x4e684e){logger[_0xe142('0x2e')](_0xe142('0x52'),_0x4e684e[_0xe142('0x30')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xe7a5=['stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','prototype','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','message','attended','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer'];(function(_0xeedb87,_0x5ae6d5){var _0x25b961=function(_0x3bd67e){while(--_0x3bd67e){_0xeedb87['push'](_0xeedb87['shift']());}};_0x25b961(++_0x5ae6d5);}(_0xe7a5,0x18a));var _0x5e7a=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0xe7a5[_0x1e381c];return _0x9b5ea9;};'use strict';var util=require('util');var _=require(_0x5e7a('0x0'));var moment=require(_0x5e7a('0x1'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x5e7a('0x2'));var RpcUser=require(_0x5e7a('0x3'));var RpcVoiceAgentReport=require(_0x5e7a('0x4'));function Acw(_0x2f4fd5){this[_0x5e7a('0x5')]=_0x2f4fd5['voiceQueues'];this[_0x5e7a('0x6')]=_0x2f4fd5['agents'];this[_0x5e7a('0x7')]=_0x2f4fd5[_0x5e7a('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x5e7a('0x8')][_0x5e7a('0x9')](this));ami['on'](_0x5e7a('0xa'),this[_0x5e7a('0xb')]['bind'](this));ami['on'](_0x5e7a('0xc'),this[_0x5e7a('0xd')][_0x5e7a('0x9')](this));ami['on']('agentringnoanswer',this[_0x5e7a('0xe')][_0x5e7a('0x9')](this));ami['on']('attendedtransfer',this[_0x5e7a('0xf')][_0x5e7a('0x9')](this));ami['on'](_0x5e7a('0x10'),this[_0x5e7a('0x11')]['bind'](this));ami['on'](_0x5e7a('0x12'),this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x522835){var _0x9a79ed=moment()[_0x5e7a('0x13')](0x0);var _0x164d52=moment(_0x522835)[_0x5e7a('0x13')](0x0);return _0x9a79ed[_0x5e7a('0x14')](_0x164d52,_0x5e7a('0x15'));}Acw['prototype'][_0x5e7a('0x16')]=function(_0x11efba){try{var _0x4a92f5=this;var _0xc2095d=this[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x18')];var _0x182965=this['channels'][_0x11efba][_0x5e7a('0x19')];var _0x198312=this['voiceQueues'][_0x182965];var _0x4d4286=![];var _0x42c2e5=_0x5e7a('0x1a');if(_0x198312[_0x5e7a('0x1b')]){if(_0x198312[_0x5e7a('0x1c')][_0x5e7a('0x1d')]){_0x4d4286=!![];_0x42c2e5=_0x198312[_0x5e7a('0x1c')][_0x5e7a('0x1d')];}}ami[_0x5e7a('0x1e')]({'action':_0x5e7a('0x1f'),'interface':_0xc2095d,'paused':!![],'reason':_0x42c2e5})[_0x5e7a('0x20')](function(_0x2d12c8){if(_0x4a92f5['agents'][_0xc2095d]){return RpcUser['getAgent'](_0x4a92f5[_0x5e7a('0x6')][_0xc2095d]['id'])[_0x5e7a('0x20')](function(_0x42fd8b){if(_0x42fd8b&&!_0x42fd8b[_0x5e7a('0x21')]){logger[_0x5e7a('0x22')](_0x5e7a('0x23'),_0x11efba,_0xc2095d,_0x182965);var _0x46edf5=_0x4a92f5[_0x5e7a('0x17')][_0x11efba]['attended']&&_0x4a92f5[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x24')]?_0x4a92f5[_0x5e7a('0x17')][_0x11efba][_0x5e7a('0x24')]:_0x11efba;return RpcUser[_0x5e7a('0x25')](_0x4a92f5[_0x5e7a('0x6')][_0xc2095d],_0x42c2e5,_0x46edf5)[_0x5e7a('0x20')](function(_0x55d4f3){if(!_0x4d4286){_0x4a92f5['timers'][_0xc2095d]={};logger[_0x5e7a('0x22')](_0x5e7a('0x26'),_0x11efba,_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')],_0xc2095d,_0x182965);_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x28')]=setTimeout(_0x4a92f5[_0x5e7a('0x29')][_0x5e7a('0x9')](_0x4a92f5,_0xc2095d),_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')]*0x3e8);_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2a')]=moment()[_0x5e7a('0x2b')](_0x5e7a('0x2c'));_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2d')]=_0x11efba;_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x19')]=_0x182965;_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2e')]=function(){var _0x24d33f=getDiff(_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2a')]);clearTimeout(_0x4a92f5['timers'][_0xc2095d][_0x5e7a('0x28')]);_0x4a92f5['timers'][_0xc2095d]['timer']=![];RpcVoiceAgentReport[_0x5e7a('0x2f')]({'acwtime':_0x24d33f},_0x4a92f5[_0x5e7a('0x7')][_0xc2095d][_0x5e7a('0x2d')],_0xc2095d)['then'](function(_0x3aa305){logger[_0x5e7a('0x22')](_0x5e7a('0x30'),_0x11efba,_0x24d33f,_0x3aa305);})[_0x5e7a('0x31')](function(_0x569c7a){logger[_0x5e7a('0x32')](_0x5e7a('0x33'),_0x11efba,_0x569c7a);});delete _0x4a92f5[_0x5e7a('0x7')][_0xc2095d];};}});}else{logger['info'](_0x5e7a('0x34'),_0x11efba,_0xc2095d,_0x182965);}});}})[_0x5e7a('0x31')](function(_0x5a1e91){logger[_0x5e7a('0x32')](_0x5e7a('0x26'),_0x11efba,_0x4a92f5[_0x5e7a('0x5')][_0x182965][_0x5e7a('0x27')],_0xc2095d,_0x182965);})[_0x5e7a('0x35')](function(){delete _0x4a92f5[_0x5e7a('0x17')][_0x11efba];});}catch(_0x2c1528){logger[_0x5e7a('0x32')](_0x5e7a('0x36'),_0x2c1528['message']);}};Acw['prototype']['stopAcw']=function(_0x23b3ef){try{var _0x427aa9=this;if(_0x427aa9[_0x5e7a('0x7')][_0x23b3ef]){_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x28')]=![];var _0x580dfb=_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x2d')];var _0x4413da=_0x427aa9[_0x5e7a('0x7')][_0x23b3ef][_0x5e7a('0x19')];var _0x35f125=_0x427aa9[_0x5e7a('0x5')][_0x4413da]['acwTimeout'];logger['info'](_0x5e7a('0x37'),_0x580dfb,_0x23b3ef);RpcUser[_0x5e7a('0x38')](this['agents'][_0x23b3ef]);RpcVoiceAgentReport[_0x5e7a('0x2f')]({'acwtime':_0x35f125,'agentacw':!![]},_0x580dfb,_0x23b3ef)[_0x5e7a('0x20')](function(_0x3cb999){logger[_0x5e7a('0x22')](_0x5e7a('0x30'),_0x580dfb,_0x35f125,_0x3cb999);})[_0x5e7a('0x31')](function(_0x21f047){logger[_0x5e7a('0x32')](_0x5e7a('0x33'),_0x580dfb,_0x21f047);});}else{logger[_0x5e7a('0x32')](_0x5e7a('0x39'),_0x23b3ef);if(_0x427aa9[_0x5e7a('0x7')]){logger[_0x5e7a('0x22')](_0x5e7a('0x3a'),JSON[_0x5e7a('0x3b')](_0x427aa9['timers']));}}}catch(_0x142816){logger[_0x5e7a('0x32')]('[ACW][STOP]\x20%s',_0x142816['message']);}};Acw[_0x5e7a('0x3c')]['syncAgentConnect']=function(_0x5a7ea7){try{if(this[_0x5e7a('0x5')][_0x5a7ea7[_0x5e7a('0x19')]]&&(this[_0x5e7a('0x5')][_0x5a7ea7[_0x5e7a('0x19')]]['acw']||this['voiceQueues'][_0x5a7ea7[_0x5e7a('0x19')]][_0x5e7a('0x1b')])){if(this[_0x5e7a('0x6')][_0x5a7ea7['interface']]){this['channels'][_0x5a7ea7[_0x5e7a('0x2d')]]={'queue':_0x5a7ea7[_0x5e7a('0x19')],'interface':_0x5a7ea7[_0x5e7a('0x18')],'destlinkedid':_0x5a7ea7[_0x5e7a('0x24')]};}}}catch(_0x32bda9){logger['error'](_0x5e7a('0x3d'),_0x32bda9['message']);}};Acw['prototype'][_0x5e7a('0x3e')]=function(_0x539d6b){try{if(this[_0x5e7a('0x5')][_0x539d6b['queue']]&&(this[_0x5e7a('0x5')][_0x539d6b[_0x5e7a('0x19')]][_0x5e7a('0x2')]||this[_0x5e7a('0x5')][_0x539d6b[_0x5e7a('0x19')]][_0x5e7a('0x1b')])){if(this[_0x5e7a('0x6')][_0x539d6b[_0x5e7a('0x18')]]){this[_0x5e7a('0x17')][_0x539d6b[_0x5e7a('0x2d')]]={'queue':_0x539d6b[_0x5e7a('0x19')],'interface':_0x539d6b[_0x5e7a('0x18')]};}}}catch(_0x5cbe7c){logger[_0x5e7a('0x32')](_0x5e7a('0x3f'),_0x5cbe7c[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xb')]=function(_0xe8b91a){try{if(this[_0x5e7a('0x17')][_0xe8b91a['uniqueid']]&&_['isUndefined'](this[_0x5e7a('0x17')][_0xe8b91a['uniqueid']][_0x5e7a('0x41')])){logger[_0x5e7a('0x22')](_0x5e7a('0x42'),_0xe8b91a[_0x5e7a('0x2d')]);this[_0x5e7a('0x16')](_0xe8b91a[_0x5e7a('0x2d')]);}else if(this[_0x5e7a('0x17')][_0xe8b91a[_0x5e7a('0x43')]]&&_[_0x5e7a('0x44')](this['channels'][_0xe8b91a[_0x5e7a('0x43')]][_0x5e7a('0x41')])){logger[_0x5e7a('0x22')](_0x5e7a('0x45'),_0xe8b91a['linkedid']);this[_0x5e7a('0x16')](_0xe8b91a['linkedid']);}}catch(_0x49bb23){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x49bb23['message']);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xd')]=function(_0x297dd8){try{if(this['channels'][_0x297dd8[_0x5e7a('0x2d')]]&&this[_0x5e7a('0x17')][_0x297dd8[_0x5e7a('0x2d')]][_0x5e7a('0x41')]){logger[_0x5e7a('0x22')](_0x5e7a('0x46'),_0x297dd8[_0x5e7a('0x2d')]);this[_0x5e7a('0x16')](_0x297dd8['uniqueid']);}else if(this['channels'][_0x297dd8[_0x5e7a('0x43')]]&&this[_0x5e7a('0x17')][_0x297dd8[_0x5e7a('0x43')]][_0x5e7a('0x41')]){logger[_0x5e7a('0x22')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x297dd8[_0x5e7a('0x43')]);this['startAcw'](_0x297dd8[_0x5e7a('0x43')]);}}catch(_0xd7634a){logger['error'](_0x5e7a('0x47'),_0xd7634a[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')][_0x5e7a('0xf')]=function(_0x4af70d){try{if(!_[_0x5e7a('0x48')](this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x49')]])){this[_0x5e7a('0x16')](_0x4af70d[_0x5e7a('0x49')]);if(this['channels'][_0x4af70d[_0x5e7a('0x4a')]]){this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]]['attended']=!![];this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4b')]]=this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]];delete this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4a')]];}}else if(!_[_0x5e7a('0x48')](this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4b')]])){this['startAcw'](_0x4af70d['transfertargetuniqueid']);if(this['channels'][_0x4af70d[_0x5e7a('0x4c')]]){this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4c')]][_0x5e7a('0x41')]=!![];this[_0x5e7a('0x17')][_0x4af70d['transfereeuniqueid']]=this[_0x5e7a('0x17')][_0x4af70d[_0x5e7a('0x4c')]];delete this[_0x5e7a('0x17')][_0x4af70d['origtransfereruniqueid']];}}}catch(_0x7ea0e2){logger[_0x5e7a('0x32')](_0x5e7a('0x4d'),_0x7ea0e2[_0x5e7a('0x40')]);}};Acw[_0x5e7a('0x3c')]['syncBlindTransfer']=function(_0x4afa24){try{if(this[_0x5e7a('0x17')][_0x4afa24[_0x5e7a('0x4e')]]){logger['info'](_0x5e7a('0x4f'),JSON[_0x5e7a('0x3b')](_0x4afa24[_0x5e7a('0x4e')]));this[_0x5e7a('0x16')](_0x4afa24[_0x5e7a('0x4e')]);}else if(this[_0x5e7a('0x17')][_0x4afa24[_0x5e7a('0x50')]]){logger[_0x5e7a('0x22')](_0x5e7a('0x51'),JSON[_0x5e7a('0x3b')](_0x4afa24[_0x5e7a('0x50')]));this[_0x5e7a('0x16')](_0x4afa24['transfererlinkedid']);}}catch(_0x3176de){logger[_0x5e7a('0x32')]('[ACW][syncBlindTransfer]\x20%s',_0x3176de['message']);}};Acw['prototype'][_0x5e7a('0xe')]=function(_0x261d66){try{if(this[_0x5e7a('0x5')][_0x261d66['queue']]&&this[_0x5e7a('0x5')][_0x261d66['queue']][_0x5e7a('0x52')]===_0x5e7a('0x53')){if(this['agents'][_0x261d66[_0x5e7a('0x18')]]){logger[_0x5e7a('0x22')](_0x5e7a('0x54'),_0x261d66['uniqueid'],_0x261d66['interface'],_0x261d66[_0x5e7a('0x19')]);return RpcUser['savePause'](this['agents'][_0x261d66[_0x5e7a('0x18')]],'Auto-Pause',_0x261d66['uniqueid']);}}}catch(_0x1059a6){logger['error'](_0x5e7a('0x55'),_0x1059a6[_0x5e7a('0x40')]);}};module[_0x5e7a('0x56')]=Acw;
\ No newline at end of file
index 0fa845e..d2102ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0x4b45ee,_0x49f83c){var _0x2016d0=function(_0x530d89){while(--_0x530d89){_0x4b45ee['push'](_0x4b45ee['shift']());}};_0x2016d0(++_0x49f83c);}(_0x757a,0xde));var _0xa757=function(_0x743832,_0x4a2f0d){_0x743832=_0x743832-0x0;var _0x490e54=_0x757a[_0x743832];return _0x490e54;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
+var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0x5a2a48,_0x1cef93){var _0x150b2b=function(_0x1b2c09){while(--_0x1b2c09){_0x5a2a48['push'](_0x5a2a48['shift']());}};_0x150b2b(++_0x1cef93);}(_0x757a,0xde));var _0xa757=function(_0x467a2a,_0x5d1656){_0x467a2a=_0x467a2a-0x0;var _0x2e4afa=_0x757a[_0x467a2a];return _0x2e4afa;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
index 1bdbd45..4f37f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['message','result','catch','exports','jayson/promise','bluebird','http','Request','then','debug','memberReport','error','rpc'];(function(_0x1695a9,_0x4af4a3){var _0x1a6acc=function(_0xf83593){while(--_0xf83593){_0x1695a9['push'](_0x1695a9['shift']());}};_0x1a6acc(++_0x4af4a3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var jayson=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('ami');var client=jayson['client'][_0x0d8b('0x2')]({'port':0x2329});client[_0x0d8b('0x3')]=function(_0x43bca1,_0x364286){return new BPromise(function(_0x8196ed,_0x577834){return client['request'](_0x43bca1,_0x364286)[_0x0d8b('0x4')](function(_0x227c63){logger[_0x0d8b('0x5')]('rpc',_0x0d8b('0x6'),_0x43bca1,_0x364286,_0x227c63);if(_0x227c63[_0x0d8b('0x7')]){logger['error'](_0x0d8b('0x8'),_0x0d8b('0x6'),_0x43bca1,_0x227c63[_0x0d8b('0x7')][_0x0d8b('0x9')],_0x364286);return _0x577834(_0x227c63[_0x0d8b('0x7')][_0x0d8b('0x9')]);}else{return _0x8196ed(_0x227c63[_0x0d8b('0xa')]);}})[_0x0d8b('0xb')](function(_0x48fa16){logger[_0x0d8b('0x7')]('rpc',_0x0d8b('0x6'),_0x43bca1,_0x48fa16,_0x364286);return _0x577834(_0x48fa16);});});};module[_0x0d8b('0xc')]=client;
\ No newline at end of file
+var _0xaa88=['bluebird','../../config/logger','ami','http','Request','rpc','memberReport','error','message','result','catch','jayson/promise'];(function(_0x197f7a,_0x39567e){var _0x5210ae=function(_0x40ffc2){while(--_0x40ffc2){_0x197f7a['push'](_0x197f7a['shift']());}};_0x5210ae(++_0x39567e);}(_0xaa88,0x137));var _0x8aa8=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0xaa88[_0x385eb1];return _0x5d40eb;};'use strict';var jayson=require(_0x8aa8('0x0'));var BPromise=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var client=jayson['client'][_0x8aa8('0x4')]({'port':0x2329});client[_0x8aa8('0x5')]=function(_0x43f7e4,_0x3b2c88){return new BPromise(function(_0x3e3b70,_0x350e8b){return client['request'](_0x43f7e4,_0x3b2c88)['then'](function(_0x460042){logger['debug'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x3b2c88,_0x460042);if(_0x460042[_0x8aa8('0x8')]){logger[_0x8aa8('0x8')]('rpc',_0x8aa8('0x7'),_0x43f7e4,_0x460042[_0x8aa8('0x8')][_0x8aa8('0x9')],_0x3b2c88);return _0x350e8b(_0x460042['error'][_0x8aa8('0x9')]);}else{return _0x3e3b70(_0x460042[_0x8aa8('0xa')]);}})[_0x8aa8('0xb')](function(_0x33cc5c){logger['error'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x33cc5c,_0x3b2c88);return _0x350e8b(_0x33cc5c);});});};module['exports']=client;
\ No newline at end of file
index 56f5f15..9c9d234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0287=['countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','getQueue','exports','util','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x0287,0xc4));var _0x7028=function(_0x25e708,_0x465bcf){_0x25e708=_0x25e708-0x0;var _0x5d9d76=_0x0287[_0x25e708];return _0x5d9d76;};'use strict';var util=require(_0x7028('0x0'));var _=require('lodash');var moment=require(_0x7028('0x1'));function checkNameSurname(_0x2abcaa,_0x2c3da7,_0x465bee){var _0x55f948='';if(!_[_0x7028('0x2')](_0x2c3da7)&&_0x7028('0x3')===typeof _0x2c3da7){_0x55f948+=_0x2c3da7;}if(!_[_0x7028('0x2')](_0x465bee)&&_0x7028('0x3')===typeof _0x465bee){_0x55f948+='\x20'+_0x465bee;}if(_0x55f948!==''){return _0x55f948;}return _0x2abcaa;}function Action(_0x1f7714,_0x1a8e41,_0x18aa7a){this[_0x7028('0x4')]=_0x1f7714;this[_0x7028('0x5')]=_0x18aa7a||undefined;this[_0x7028('0x6')]=checkNameSurname(_0x1a8e41[_0x7028('0x7')][_0x7028('0x8')],_0x1a8e41['Contact'][_0x7028('0x9')],_0x1a8e41['Contact'][_0x7028('0xa')]);this[_0x7028('0xb')]=_0x1a8e41[_0x7028('0x8')];this[_0x7028('0xc')]=_0x1f7714[_0x7028('0x6')];this[_0x7028('0xd')]=_0x1a8e41[_0x7028('0xd')]||![];this[_0x7028('0xe')]=_0x1f7714[_0x7028('0xe')];this['dialQueueTimeout']=_0x1f7714['dialQueueTimeout']||0x3;this[_0x7028('0xf')]=_0x1a8e41[_0x7028('0xf')];this[_0x7028('0x10')]=_0x1a8e41['countbusyretry'];this[_0x7028('0x11')]=_0x1a8e41['countcongestionretry'];this[_0x7028('0x12')]=_0x1a8e41['countnoanswerretry'];this['countnosuchnumberretry']=_0x1a8e41[_0x7028('0x13')];this[_0x7028('0x14')]=_0x1a8e41[_0x7028('0x14')];this['countabandonedretry']=_0x1a8e41[_0x7028('0x15')];this[_0x7028('0x16')]=_0x1a8e41[_0x7028('0x16')];this[_0x7028('0x17')]=_0x1a8e41['countagentrejectretry'];this[_0x7028('0x18')]=_0x1a8e41[_0x7028('0x18')];this[_0x7028('0x19')]=_0x1a8e41['ListId'];this['UserId']=_0x1a8e41['UserId'];this[_0x7028('0x1a')]=_0x1a8e41[_0x7028('0x1a')];this[_0x7028('0x1b')]=_0x1a8e41[_0x7028('0x1b')];this[_0x7028('0x1c')]=_0x1a8e41['id'];this[_0x7028('0x1d')]=_0x1a8e41[_0x7028('0x7')]['firstName']||'';this[_0x7028('0x1e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x7028('0x1f')]=_0x1a8e41['callback'];this['callbackuniqueid']=_0x1a8e41['callbackuniqueid'];this[_0x7028('0x20')]=_0x1a8e41[_0x7028('0x20')];this[_0x7028('0x21')]=_0x1a8e41[_0x7028('0x21')];this[_0x7028('0x22')]='';this[_0x7028('0x23')]='';}Action[_0x7028('0x24')][_0x7028('0x25')]=function(){return util[_0x7028('0x26')](_0x7028('0x27'),this[_0x7028('0x6')],this[_0x7028('0x4')][_0x7028('0x28')]>0x0?this[_0x7028('0xb')]['substring'](this[_0x7028('0x4')][_0x7028('0x28')]):this[_0x7028('0xb')]);};Action['prototype'][_0x7028('0x29')]=function(){return this['queue'];};module[_0x7028('0x2a')]=Action;
\ No newline at end of file
+var _0xf35e=['prototype','getCaller','\x22%s\x22\x20<%s>','substring','getQueue','util','lodash','moment','isNil','string','voiceQueue','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname'];(function(_0x1716cd,_0x5df480){var _0x405c05=function(_0x5de65b){while(--_0x5de65b){_0x1716cd['push'](_0x1716cd['shift']());}};_0x405c05(++_0x5df480);}(_0xf35e,0x80));var _0xef35=function(_0x5f3398,_0x458840){_0x5f3398=_0x5f3398-0x0;var _0x36cc71=_0xf35e[_0x5f3398];return _0x36cc71;};'use strict';var util=require(_0xef35('0x0'));var _=require(_0xef35('0x1'));var moment=require(_0xef35('0x2'));function checkNameSurname(_0x20899d,_0x1e1990,_0x2e077a){var _0x4bc0b1='';if(!_[_0xef35('0x3')](_0x1e1990)&&_0xef35('0x4')===typeof _0x1e1990){_0x4bc0b1+=_0x1e1990;}if(!_['isNil'](_0x2e077a)&&_0xef35('0x4')===typeof _0x2e077a){_0x4bc0b1+='\x20'+_0x2e077a;}if(_0x4bc0b1!==''){return _0x4bc0b1;}return _0x20899d;}function Action(_0x134b05,_0xccf0e8,_0x2d329f){this[_0xef35('0x5')]=_0x134b05;this['uniqueid']=_0x2d329f||undefined;this[_0xef35('0x6')]=checkNameSurname(_0xccf0e8[_0xef35('0x7')]['phone'],_0xccf0e8[_0xef35('0x7')][_0xef35('0x8')],_0xccf0e8[_0xef35('0x7')][_0xef35('0x9')]);this[_0xef35('0xa')]=_0xccf0e8[_0xef35('0xb')];this[_0xef35('0xc')]=_0x134b05[_0xef35('0x6')];this['active']=_0xccf0e8[_0xef35('0xd')]||![];this[_0xef35('0xe')]=_0x134b05[_0xef35('0xe')];this['dialQueueTimeout']=_0x134b05[_0xef35('0xf')]||0x3;this['scheduledat']=_0xccf0e8['scheduledat'];this[_0xef35('0x10')]=_0xccf0e8[_0xef35('0x10')];this[_0xef35('0x11')]=_0xccf0e8[_0xef35('0x11')];this[_0xef35('0x12')]=_0xccf0e8[_0xef35('0x12')];this['countnosuchnumberretry']=_0xccf0e8[_0xef35('0x13')];this[_0xef35('0x14')]=_0xccf0e8['countdropretry'];this[_0xef35('0x15')]=_0xccf0e8[_0xef35('0x15')];this[_0xef35('0x16')]=_0xccf0e8[_0xef35('0x16')];this[_0xef35('0x17')]=_0xccf0e8['countagentrejectretry'];this[_0xef35('0x18')]=_0xccf0e8['ContactId'];this[_0xef35('0x19')]=_0xccf0e8[_0xef35('0x19')];this['UserId']=_0xccf0e8['UserId'];this[_0xef35('0x1a')]=_0xccf0e8[_0xef35('0x1a')];this[_0xef35('0x1b')]=_0xccf0e8[_0xef35('0x1b')];this['idHopper']=_0xccf0e8['id'];this['ContactFirstName']=_0xccf0e8[_0xef35('0x7')]['firstName']||'';this['starttime']=moment()[_0xef35('0x1c')](_0xef35('0x1d'));this[_0xef35('0x1e')]=_0xccf0e8[_0xef35('0x1e')];this[_0xef35('0x1f')]=_0xccf0e8['callbackuniqueid'];this[_0xef35('0x20')]=_0xccf0e8[_0xef35('0x20')];this[_0xef35('0x21')]=_0xccf0e8[_0xef35('0x21')];this[_0xef35('0x22')]='';this[_0xef35('0x23')]='';}Action[_0xef35('0x24')][_0xef35('0x25')]=function(){return util['format'](_0xef35('0x26'),this[_0xef35('0x6')],this[_0xef35('0x5')]['dialCutDigit']>0x0?this[_0xef35('0xa')][_0xef35('0x27')](this['voiceQueue']['dialCutDigit']):this['number']);};Action[_0xef35('0x24')][_0xef35('0x28')]=function(){return this[_0xef35('0xc')];};module['exports']=Action;
\ No newline at end of file
index edef6d3..0ef3dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc737=['originatecalleridname','util','lodash','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','calleridnum','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum'];(function(_0xcea259,_0xc773be){var _0x58f439=function(_0x337509){while(--_0x337509){_0xcea259['push'](_0xcea259['shift']());}};_0x58f439(++_0xc773be);}(_0xc737,0x8b));var _0x7c73=function(_0x15c3b7,_0x3d75ab){_0x15c3b7=_0x15c3b7-0x0;var _0x5da7de=_0xc737[_0x15c3b7];return _0x5da7de;};'use strict';var util=require(_0x7c73('0x0'));var _=require(_0x7c73('0x1'));var moment=require(_0x7c73('0x2'));function getSeconds(_0x10562f,_0x45a07a){var _0x1418f3=moment(_0x10562f)['milliseconds'](0x0);var _0x2183a0=moment(_0x45a07a)[_0x7c73('0x3')](0x0);return _0x1418f3[_0x7c73('0x4')](_0x2183a0,'seconds');}function AgentComplete(_0x47e012,_0x109ce8){this[_0x7c73('0x5')]=0x4;this[_0x7c73('0x6')]=_0x7c73('0x7');this[_0x7c73('0x8')]=_0x47e012[_0x7c73('0x8')];this[_0x7c73('0x9')]=_0x47e012['type'];this[_0x7c73('0xa')]=_0x47e012[_0x7c73('0x9')]===_0x7c73('0xb')?_0x7c73('0xc'):_0x47e012['type'];this[_0x7c73('0xd')]=_0x47e012[_0x7c73('0xd')];this[_0x7c73('0xe')]=_0x47e012[_0x7c73('0xe')];this[_0x7c73('0xf')]=_0x47e012[_0x7c73('0xf')];this[_0x7c73('0x10')]=_0x47e012[_0x7c73('0xd')]+_0x47e012[_0x7c73('0xe')]+_0x47e012['countnoanswerretry']+_0x47e012[_0x7c73('0x11')]+_0x47e012[_0x7c73('0x12')]+_0x47e012['countabandonedretry']+_0x47e012[_0x7c73('0x13')]+_0x47e012[_0x7c73('0x14')];this['countnosuchnumberretry']=_0x47e012[_0x7c73('0x11')];this[_0x7c73('0x12')]=_0x47e012[_0x7c73('0x12')];this['countabandonedretry']=_0x47e012[_0x7c73('0x15')];this[_0x7c73('0x13')]=_0x47e012['countmachineretry'];this[_0x7c73('0x14')]=_0x47e012[_0x7c73('0x14')];this[_0x7c73('0x16')]=_0x109ce8[_0x7c73('0x16')];this['calleridname']=_0x47e012[_0x7c73('0x17')];this[_0x7c73('0x18')]=_0x47e012['number'];this[_0x7c73('0x19')]=_0x47e012[_0x7c73('0x19')];this[_0x7c73('0x1a')]=_0x47e012['responsetime'];this['answertime']=_0x47e012[_0x7c73('0x1b')];this[_0x7c73('0x1c')]=moment()[_0x7c73('0x1d')](_0x7c73('0x1e'));this['ringtime']=getSeconds(_0x47e012[_0x7c73('0x1a')],_0x47e012[_0x7c73('0x19')]);this[_0x7c73('0x1f')]=getSeconds(_0x47e012[_0x7c73('0x1b')],_0x47e012[_0x7c73('0x1a')]);this[_0x7c73('0x20')]=getSeconds(this[_0x7c73('0x1c')],_0x47e012[_0x7c73('0x1b')]);this[_0x7c73('0xc')]=_0x109ce8[_0x7c73('0xc')];this[_0x7c73('0x21')]=_0x109ce8[_0x7c73('0x21')];this[_0x7c73('0x22')]=_0x109ce8[_0x7c73('0x22')];this[_0x7c73('0x23')]=_0x47e012[_0x7c73('0x23')];this[_0x7c73('0x24')]=_0x47e012[_0x7c73('0x24')];this['callbackat']=_0x47e012[_0x7c73('0x25')];this[_0x7c73('0x26')]=_0x47e012['recallme'];this[_0x7c73('0x27')]=_0x47e012[_0x7c73('0x27')];this[_0x7c73('0x28')]=_0x47e012[_0x7c73('0x28')];this['UserId']=_0x47e012[_0x7c73('0x29')];this[_0x7c73('0x2a')]=_0x47e012['VoiceQueueId'];this[_0x7c73('0x2b')]=_0x47e012[_0x7c73('0x2b')];this[_0x7c73('0x2c')]=_0x47e012[_0x7c73('0x2c')]||'';this[_0x7c73('0x2d')]=_0x47e012[_0x7c73('0x2d')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x8ade=['callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','reason','callback','callbackuniqueid'];(function(_0x282ccc,_0x5d66a1){var _0x27c2dd=function(_0x58431a){while(--_0x58431a){_0x282ccc['push'](_0x282ccc['shift']());}};_0x27c2dd(++_0x5d66a1);}(_0x8ade,0xbd));var _0xe8ad=function(_0x4a3e5e,_0xccd252){_0x4a3e5e=_0x4a3e5e-0x0;var _0x498d31=_0x8ade[_0x4a3e5e];return _0x498d31;};'use strict';var util=require('util');var _=require(_0xe8ad('0x0'));var moment=require('moment');function getSeconds(_0x5f33f9,_0x730f73){var _0x45e30d=moment(_0x5f33f9)[_0xe8ad('0x1')](0x0);var _0xf041ca=moment(_0x730f73)[_0xe8ad('0x1')](0x0);return _0x45e30d[_0xe8ad('0x2')](_0xf041ca,_0xe8ad('0x3'));}function AgentComplete(_0x8f0389,_0x4f205c){this[_0xe8ad('0x4')]=0x4;this[_0xe8ad('0x5')]='Answer';this['scheduledat']=_0x8f0389[_0xe8ad('0x6')];this[_0xe8ad('0x7')]=_0x8f0389['type'];this[_0xe8ad('0x8')]=_0x8f0389[_0xe8ad('0x7')]===_0xe8ad('0x9')?_0xe8ad('0xa'):_0x8f0389[_0xe8ad('0x7')];this[_0xe8ad('0xb')]=_0x8f0389[_0xe8ad('0xb')];this[_0xe8ad('0xc')]=_0x8f0389[_0xe8ad('0xc')];this['countnoanswerretry']=_0x8f0389['countnoanswerretry'];this[_0xe8ad('0xd')]=_0x8f0389['countbusyretry']+_0x8f0389[_0xe8ad('0xc')]+_0x8f0389[_0xe8ad('0xe')]+_0x8f0389['countnosuchnumberretry']+_0x8f0389[_0xe8ad('0xf')]+_0x8f0389['countabandonedretry']+_0x8f0389[_0xe8ad('0x10')]+_0x8f0389['countagentrejectretry'];this[_0xe8ad('0x11')]=_0x8f0389[_0xe8ad('0x11')];this[_0xe8ad('0xf')]=_0x8f0389[_0xe8ad('0xf')];this['countabandonedretry']=_0x8f0389[_0xe8ad('0x12')];this[_0xe8ad('0x10')]=_0x8f0389[_0xe8ad('0x10')];this[_0xe8ad('0x13')]=_0x8f0389[_0xe8ad('0x13')];this[_0xe8ad('0x14')]=_0x4f205c[_0xe8ad('0x14')];this[_0xe8ad('0x15')]=_0x8f0389[_0xe8ad('0x16')];this['calleridnum']=_0x8f0389[_0xe8ad('0x17')];this[_0xe8ad('0x18')]=_0x8f0389[_0xe8ad('0x18')];this[_0xe8ad('0x19')]=_0x8f0389[_0xe8ad('0x19')];this[_0xe8ad('0x1a')]=_0x8f0389[_0xe8ad('0x1a')];this[_0xe8ad('0x1b')]=moment()[_0xe8ad('0x1c')](_0xe8ad('0x1d'));this['ringtime']=getSeconds(_0x8f0389[_0xe8ad('0x19')],_0x8f0389[_0xe8ad('0x18')]);this[_0xe8ad('0x1e')]=getSeconds(_0x8f0389[_0xe8ad('0x1a')],_0x8f0389[_0xe8ad('0x19')]);this[_0xe8ad('0x1f')]=getSeconds(this[_0xe8ad('0x1b')],_0x8f0389[_0xe8ad('0x1a')]);this[_0xe8ad('0xa')]=_0x4f205c[_0xe8ad('0xa')];this[_0xe8ad('0x20')]=_0x4f205c[_0xe8ad('0x20')];this[_0xe8ad('0x21')]=_0x4f205c['reason'];this[_0xe8ad('0x22')]=_0x8f0389[_0xe8ad('0x22')];this['callbackuniqueid']=_0x8f0389[_0xe8ad('0x23')];this['callbackat']=_0x8f0389[_0xe8ad('0x24')];this['recallme']=_0x8f0389[_0xe8ad('0x25')];this[_0xe8ad('0x26')]=_0x8f0389['ContactId'];this['ListId']=_0x8f0389['ListId'];this['UserId']=_0x8f0389[_0xe8ad('0x27')];this[_0xe8ad('0x28')]=_0x8f0389[_0xe8ad('0x28')];this['CampaignId']=_0x8f0389[_0xe8ad('0x29')];this[_0xe8ad('0x2a')]=_0x8f0389['originatecalleridnum']||'';this['originatecalleridname']=_0x8f0389[_0xe8ad('0x2b')]||'';}module[_0xe8ad('0x2c')]=AgentComplete;
\ No newline at end of file
index dd49091..baff2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bae=['callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','exports','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','calleridnum','responsetime','endtime','ringtime','holdtime','talktime'];(function(_0x2fbc0e,_0x4f7d32){var _0x307cbf=function(_0x53b249){while(--_0x53b249){_0x2fbc0e['push'](_0x2fbc0e['shift']());}};_0x307cbf(++_0x4f7d32);}(_0x7bae,0x13b));var _0xe7ba=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x7bae[_0x257642];return _0x3d813b;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xe7ba('0x0'));function getSeconds(_0x1e05c4,_0x503803){var _0x3963c7=moment(_0x1e05c4)['milliseconds'](0x0);var _0x120efa=moment(_0x503803)[_0xe7ba('0x1')](0x0);return _0x3963c7[_0xe7ba('0x2')](_0x120efa,_0xe7ba('0x3'));}function Final(_0x398a6a){this[_0xe7ba('0x4')]=_0x398a6a[_0xe7ba('0x4')];this[_0xe7ba('0x5')]=_0x398a6a[_0xe7ba('0x5')];this[_0xe7ba('0x6')]=_0x398a6a[_0xe7ba('0x6')];this[_0xe7ba('0x7')]=_0x398a6a[_0xe7ba('0x6')]===_0xe7ba('0x8')?'queue':_0x398a6a[_0xe7ba('0x6')];this[_0xe7ba('0x9')]=_0x398a6a[_0xe7ba('0x9')];this[_0xe7ba('0xa')]=_0x398a6a[_0xe7ba('0xa')];this[_0xe7ba('0xb')]=_0x398a6a[_0xe7ba('0xb')];this[_0xe7ba('0xc')]=_0x398a6a[_0xe7ba('0x9')]+_0x398a6a['countcongestionretry']+_0x398a6a[_0xe7ba('0xb')]+_0x398a6a['countnosuchnumberretry']+_0x398a6a[_0xe7ba('0xd')]+_0x398a6a[_0xe7ba('0xe')]+_0x398a6a[_0xe7ba('0xf')]+_0x398a6a[_0xe7ba('0x10')];this[_0xe7ba('0x11')]=_0x398a6a[_0xe7ba('0x11')];this['countdropretry']=_0x398a6a['countdropretry'];this[_0xe7ba('0xe')]=_0x398a6a[_0xe7ba('0xe')];this[_0xe7ba('0xf')]=_0x398a6a['countmachineretry'];this[_0xe7ba('0x10')]=_0x398a6a['countagentrejectretry'];this['queue']=_0x398a6a['queue'];this[_0xe7ba('0x12')]=_0x398a6a['calleridname'];this[_0xe7ba('0x13')]=_0x398a6a['calleridnum'];this['starttime']=_0x398a6a['starttime'];this[_0xe7ba('0x14')]=_0x398a6a[_0xe7ba('0x14')];this[_0xe7ba('0x15')]=_0x398a6a[_0xe7ba('0x14')];this[_0xe7ba('0x16')]=_0x398a6a['ringtime']||0x0;this[_0xe7ba('0x17')]=_0x398a6a[_0xe7ba('0x17')]||0x0;this[_0xe7ba('0x18')]=_0x398a6a[_0xe7ba('0x18')]||0x0;this['callback']=_0x398a6a[_0xe7ba('0x19')];this[_0xe7ba('0x1a')]=_0x398a6a['callbackuniqueid'];this[_0xe7ba('0x1b')]=_0x398a6a[_0xe7ba('0x1b')];this[_0xe7ba('0x1c')]=_0x398a6a[_0xe7ba('0x1c')];this[_0xe7ba('0x1d')]=_0x398a6a[_0xe7ba('0x1d')];this[_0xe7ba('0x1e')]=_0x398a6a[_0xe7ba('0x1e')];this[_0xe7ba('0x1f')]=_0x398a6a[_0xe7ba('0x1f')];this['VoiceQueueId']=_0x398a6a['VoiceQueueId'];this['CampaignId']=_0x398a6a['CampaignId'];this[_0xe7ba('0x20')]=_0x398a6a['originatecalleridnum']||'';this['originatecalleridname']=_0x398a6a['originatecalleridname']||'';}module[_0xe7ba('0x21')]=Final;
\ No newline at end of file
+var _0x31af=['uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','diff','seconds'];(function(_0x384a78,_0x5ba914){var _0xf4933b=function(_0x550e1c){while(--_0x550e1c){_0x384a78['push'](_0x384a78['shift']());}};_0xf4933b(++_0x5ba914);}(_0x31af,0xde));var _0xf31a=function(_0x20cea6,_0x3a0611){_0x20cea6=_0x20cea6-0x0;var _0x29f2ae=_0x31af[_0x20cea6];return _0x29f2ae;};'use strict';var util=require(_0xf31a('0x0'));var _=require(_0xf31a('0x1'));var moment=require(_0xf31a('0x2'));function getSeconds(_0x4d5e50,_0x5f5639){var _0x4596f6=moment(_0x4d5e50)['milliseconds'](0x0);var _0x3b7976=moment(_0x5f5639)[_0xf31a('0x3')](0x0);return _0x4596f6[_0xf31a('0x4')](_0x3b7976,_0xf31a('0x5'));}function Final(_0x5ad096){this[_0xf31a('0x6')]=_0x5ad096[_0xf31a('0x6')];this[_0xf31a('0x7')]=_0x5ad096[_0xf31a('0x7')];this['type']=_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0x9')]=_0x5ad096[_0xf31a('0x8')]===_0xf31a('0xa')?'queue':_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0xb')]=_0x5ad096[_0xf31a('0xb')];this[_0xf31a('0xc')]=_0x5ad096[_0xf31a('0xc')];this['countnoanswerretry']=_0x5ad096[_0xf31a('0xd')];this[_0xf31a('0xe')]=_0x5ad096[_0xf31a('0xb')]+_0x5ad096[_0xf31a('0xc')]+_0x5ad096['countnoanswerretry']+_0x5ad096[_0xf31a('0xf')]+_0x5ad096[_0xf31a('0x10')]+_0x5ad096['countabandonedretry']+_0x5ad096[_0xf31a('0x11')]+_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0xf')]=_0x5ad096[_0xf31a('0xf')];this[_0xf31a('0x10')]=_0x5ad096[_0xf31a('0x10')];this[_0xf31a('0x13')]=_0x5ad096[_0xf31a('0x13')];this[_0xf31a('0x11')]=_0x5ad096[_0xf31a('0x11')];this[_0xf31a('0x12')]=_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0x14')]=_0x5ad096[_0xf31a('0x14')];this[_0xf31a('0x15')]=_0x5ad096['calleridname'];this[_0xf31a('0x16')]=_0x5ad096[_0xf31a('0x16')];this[_0xf31a('0x17')]=_0x5ad096[_0xf31a('0x17')];this['responsetime']=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x19')]=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x1a')]=_0x5ad096[_0xf31a('0x1a')]||0x0;this['holdtime']=_0x5ad096[_0xf31a('0x1b')]||0x0;this[_0xf31a('0x1c')]=_0x5ad096['talktime']||0x0;this[_0xf31a('0x1d')]=_0x5ad096[_0xf31a('0x1d')];this['callbackuniqueid']=_0x5ad096[_0xf31a('0x1e')];this[_0xf31a('0x1f')]=_0x5ad096['callbackat'];this['recallme']=_0x5ad096['recallme'];this[_0xf31a('0x20')]=_0x5ad096[_0xf31a('0x20')];this['ListId']=_0x5ad096[_0xf31a('0x21')];this[_0xf31a('0x22')]=_0x5ad096[_0xf31a('0x22')];this[_0xf31a('0x23')]=_0x5ad096['VoiceQueueId'];this['CampaignId']=_0x5ad096[_0xf31a('0x24')];this[_0xf31a('0x25')]=_0x5ad096['originatecalleridnum']||'';this['originatecalleridname']=_0x5ad096['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
index bf7b6ee..c069ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de9=['ringtime','holdtime','talktime','queue','membername','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','seconds','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','name','number','starttime','responsetime','endtime','format'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x6de9,0x1df));var _0x96de=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6de9[_0x3bf83f];return _0x22c4a9;};'use strict';var util=require(_0x96de('0x0'));var _=require(_0x96de('0x1'));var moment=require(_0x96de('0x2'));function getSeconds(_0x29b7c6,_0x5aca44){var _0xdffc7c=moment(_0x29b7c6)['milliseconds'](0x0);var _0x11f94a=moment(_0x5aca44)[_0x96de('0x3')](0x0);return _0xdffc7c['diff'](_0x11f94a,_0x96de('0x4'));}function Hangup(_0x51658b,_0x22b436){this['state']=0x4;this['statedesc']='Answer';this[_0x96de('0x5')]=_0x51658b[_0x96de('0x5')];this['type']=_0x51658b[_0x96de('0x6')];this['campaigntype']=_0x51658b[_0x96de('0x6')]===_0x96de('0x7')?'queue':_0x51658b[_0x96de('0x6')];this[_0x96de('0x8')]=_0x51658b[_0x96de('0x8')];this[_0x96de('0x9')]=_0x51658b['countcongestionretry'];this[_0x96de('0xa')]=_0x51658b[_0x96de('0xa')];this[_0x96de('0xb')]=_0x51658b[_0x96de('0x8')]+_0x51658b[_0x96de('0x9')]+_0x51658b[_0x96de('0xa')]+_0x51658b[_0x96de('0xc')]+_0x51658b[_0x96de('0xd')]+_0x51658b[_0x96de('0xe')]+_0x51658b['countmachineretry']+_0x51658b[_0x96de('0xf')];this['countnosuchnumberretry']=_0x51658b[_0x96de('0xc')];this['countdropretry']=_0x51658b[_0x96de('0xd')];this[_0x96de('0xe')]=_0x51658b[_0x96de('0xe')];this[_0x96de('0x10')]=_0x51658b[_0x96de('0x10')];this['countagentrejectretry']=_0x51658b['countagentrejectretry'];this[_0x96de('0x11')]=_0x22b436[_0x96de('0x11')];this[_0x96de('0x12')]=_0x51658b[_0x96de('0x13')];this['calleridnum']=_0x51658b[_0x96de('0x14')];this[_0x96de('0x15')]=_0x51658b[_0x96de('0x15')];this[_0x96de('0x16')]=_0x51658b[_0x96de('0x16')];this[_0x96de('0x17')]=moment()[_0x96de('0x18')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x96de('0x19')]=getSeconds(_0x51658b['responsetime'],_0x51658b['starttime']);this[_0x96de('0x1a')]=0x0;this[_0x96de('0x1b')]=getSeconds(this[_0x96de('0x17')],_0x51658b[_0x96de('0x16')]);this['queue']=_0x51658b[_0x96de('0x1c')];this[_0x96de('0x1d')]=_0x96de('0x1e');this[_0x96de('0x1f')]=_0x22b436['cause-txt'];this[_0x96de('0x20')]=_0x51658b[_0x96de('0x20')];this['callbackuniqueid']=_0x51658b[_0x96de('0x21')];this[_0x96de('0x22')]=_0x51658b['callbackat'];this['recallme']=_0x51658b[_0x96de('0x23')];this['ContactId']=_0x51658b[_0x96de('0x24')];this[_0x96de('0x25')]=_0x51658b[_0x96de('0x25')];this['UserId']=_0x51658b[_0x96de('0x26')];this[_0x96de('0x27')]=_0x51658b[_0x96de('0x27')];this[_0x96de('0x28')]=_0x51658b['CampaignId'];}module[_0x96de('0x29')]=Hangup;
\ No newline at end of file
+var _0xc892=['countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','endtime','ringtime','responsetime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry'];(function(_0xef3d1d,_0x3ca3cb){var _0x4eb1e5=function(_0x42d4a1){while(--_0x42d4a1){_0xef3d1d['push'](_0xef3d1d['shift']());}};_0x4eb1e5(++_0x3ca3cb);}(_0xc892,0xc7));var _0x2c89=function(_0x3efc35,_0x6189a0){_0x3efc35=_0x3efc35-0x0;var _0x539917=_0xc892[_0x3efc35];return _0x539917;};'use strict';var util=require(_0x2c89('0x0'));var _=require(_0x2c89('0x1'));var moment=require('moment');function getSeconds(_0x133b6b,_0x207132){var _0x4dcb49=moment(_0x133b6b)[_0x2c89('0x2')](0x0);var _0x49f4e8=moment(_0x207132)[_0x2c89('0x2')](0x0);return _0x4dcb49['diff'](_0x49f4e8,_0x2c89('0x3'));}function Hangup(_0x541867,_0x219de4){this[_0x2c89('0x4')]=0x4;this[_0x2c89('0x5')]=_0x2c89('0x6');this[_0x2c89('0x7')]=_0x541867[_0x2c89('0x7')];this[_0x2c89('0x8')]=_0x541867['type'];this[_0x2c89('0x9')]=_0x541867[_0x2c89('0x8')]===_0x2c89('0xa')?_0x2c89('0xb'):_0x541867[_0x2c89('0x8')];this[_0x2c89('0xc')]=_0x541867['countbusyretry'];this['countcongestionretry']=_0x541867['countcongestionretry'];this[_0x2c89('0xd')]=_0x541867[_0x2c89('0xd')];this[_0x2c89('0xe')]=_0x541867['countbusyretry']+_0x541867[_0x2c89('0xf')]+_0x541867[_0x2c89('0xd')]+_0x541867[_0x2c89('0x10')]+_0x541867[_0x2c89('0x11')]+_0x541867['countabandonedretry']+_0x541867[_0x2c89('0x12')]+_0x541867[_0x2c89('0x13')];this[_0x2c89('0x10')]=_0x541867['countnosuchnumberretry'];this[_0x2c89('0x11')]=_0x541867['countdropretry'];this[_0x2c89('0x14')]=_0x541867[_0x2c89('0x14')];this[_0x2c89('0x12')]=_0x541867[_0x2c89('0x12')];this['countagentrejectretry']=_0x541867['countagentrejectretry'];this[_0x2c89('0x15')]=_0x219de4[_0x2c89('0x15')];this[_0x2c89('0x16')]=_0x541867[_0x2c89('0x17')];this[_0x2c89('0x18')]=_0x541867['number'];this[_0x2c89('0x19')]=_0x541867[_0x2c89('0x19')];this['responsetime']=_0x541867['responsetime'];this[_0x2c89('0x1a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x2c89('0x1b')]=getSeconds(_0x541867[_0x2c89('0x1c')],_0x541867[_0x2c89('0x19')]);this[_0x2c89('0x1d')]=0x0;this[_0x2c89('0x1e')]=getSeconds(this[_0x2c89('0x1a')],_0x541867[_0x2c89('0x1c')]);this[_0x2c89('0xb')]=_0x541867[_0x2c89('0xb')];this[_0x2c89('0x1f')]='IVR';this[_0x2c89('0x20')]=_0x219de4['cause-txt'];this[_0x2c89('0x21')]=_0x541867[_0x2c89('0x21')];this[_0x2c89('0x22')]=_0x541867[_0x2c89('0x22')];this['callbackat']=_0x541867[_0x2c89('0x23')];this['recallme']=_0x541867[_0x2c89('0x24')];this[_0x2c89('0x25')]=_0x541867[_0x2c89('0x25')];this[_0x2c89('0x26')]=_0x541867[_0x2c89('0x26')];this['UserId']=_0x541867[_0x2c89('0x27')];this[_0x2c89('0x28')]=_0x541867[_0x2c89('0x28')];this[_0x2c89('0x29')]=_0x541867[_0x2c89('0x29')];}module[_0x2c89('0x2a')]=Hangup;
\ No newline at end of file
index 11a5f6a..c3ad86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eaf=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','ringtime','holdtime','callbackuniqueid'];(function(_0x181d27,_0x7109b8){var _0x256ad4=function(_0x3ea7c4){while(--_0x3ea7c4){_0x181d27['push'](_0x181d27['shift']());}};_0x256ad4(++_0x7109b8);}(_0x6eaf,0xa6));var _0xf6ea=function(_0x193998,_0x3d133e){_0x193998=_0x193998-0x0;var _0x1460c1=_0x6eaf[_0x193998];return _0x1460c1;};'use strict';var util=require(_0xf6ea('0x0'));var _=require(_0xf6ea('0x1'));var moment=require(_0xf6ea('0x2'));function getSeconds(_0x55bc30,_0x1f6f5b){var _0x10e290=moment(_0x55bc30)[_0xf6ea('0x3')](0x0);var _0x587cb1=moment(_0x1f6f5b)[_0xf6ea('0x3')](0x0);return _0x10e290[_0xf6ea('0x4')](_0x587cb1,_0xf6ea('0x5'));}function History(_0x27f967){this['uniqueid']=_0x27f967[_0xf6ea('0x6')];this[_0xf6ea('0x7')]=_0x27f967[_0xf6ea('0x7')]||undefined;this[_0xf6ea('0x8')]=_0x27f967[_0xf6ea('0x8')];this[_0xf6ea('0x9')]=_0x27f967[_0xf6ea('0x8')]===_0xf6ea('0xa')?_0xf6ea('0xb'):_0x27f967[_0xf6ea('0x8')];this['countbusyretry']=_0x27f967[_0xf6ea('0xc')];this[_0xf6ea('0xd')]=_0x27f967[_0xf6ea('0xd')];this[_0xf6ea('0xe')]=_0x27f967['countnoanswerretry'];this['countglobal']=_0x27f967['countbusyretry']+_0x27f967[_0xf6ea('0xd')]+_0x27f967[_0xf6ea('0xe')]+_0x27f967[_0xf6ea('0xf')]+_0x27f967[_0xf6ea('0x10')]+_0x27f967[_0xf6ea('0x11')]+_0x27f967[_0xf6ea('0x12')]+_0x27f967[_0xf6ea('0x13')];this[_0xf6ea('0xf')]=_0x27f967[_0xf6ea('0xf')];this[_0xf6ea('0x10')]=_0x27f967[_0xf6ea('0x10')];this[_0xf6ea('0x11')]=_0x27f967[_0xf6ea('0x11')];this[_0xf6ea('0x12')]=_0x27f967['countmachineretry'];this[_0xf6ea('0x13')]=_0x27f967[_0xf6ea('0x13')];this[_0xf6ea('0xb')]=_0x27f967[_0xf6ea('0xb')];this[_0xf6ea('0x14')]=_0x27f967[_0xf6ea('0x15')];this[_0xf6ea('0x16')]=_0x27f967[_0xf6ea('0x17')];this[_0xf6ea('0x18')]=_0x27f967[_0xf6ea('0x18')];this[_0xf6ea('0x19')]=_0x27f967[_0xf6ea('0x19')];this['endtime']=_0x27f967[_0xf6ea('0x19')];this[_0xf6ea('0x1a')]=getSeconds(_0x27f967[_0xf6ea('0x19')],_0x27f967[_0xf6ea('0x18')]);this[_0xf6ea('0x1b')]=0x0;this['talktime']=0x0;this['callback']=_0x27f967['callback'];this[_0xf6ea('0x1c')]=_0x27f967[_0xf6ea('0x1c')];this['callbackat']=_0x27f967[_0xf6ea('0x1d')];this[_0xf6ea('0x1e')]=_0x27f967[_0xf6ea('0x1e')];this['ContactId']=_0x27f967[_0xf6ea('0x1f')];this[_0xf6ea('0x20')]=_0x27f967[_0xf6ea('0x20')];this[_0xf6ea('0x21')]=_0x27f967[_0xf6ea('0x21')];this[_0xf6ea('0x22')]=_0x27f967['VoiceQueueId'];this[_0xf6ea('0x23')]=_0x27f967[_0xf6ea('0x23')];this[_0xf6ea('0x24')]=_0x27f967[_0xf6ea('0x24')]||'';this[_0xf6ea('0x25')]=_0x27f967[_0xf6ea('0x25')]||'';}module[_0xf6ea('0x26')]=History;
\ No newline at end of file
+var _0x8266=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','countmachineretry','name','calleridnum','number','starttime','responsetime','endtime','ringtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x2cb742,_0x16184d){var _0x4e9847=function(_0x16ce9d){while(--_0x16ce9d){_0x2cb742['push'](_0x2cb742['shift']());}};_0x4e9847(++_0x16184d);}(_0x8266,0x9c));var _0x6826=function(_0x1685e7,_0x3143ed){_0x1685e7=_0x1685e7-0x0;var _0x1832ab=_0x8266[_0x1685e7];return _0x1832ab;};'use strict';var util=require(_0x6826('0x0'));var _=require('lodash');var moment=require(_0x6826('0x1'));function getSeconds(_0xe8656f,_0x49eb6c){var _0xf003fa=moment(_0xe8656f)['milliseconds'](0x0);var _0x50f900=moment(_0x49eb6c)[_0x6826('0x2')](0x0);return _0xf003fa['diff'](_0x50f900,_0x6826('0x3'));}function History(_0x40bf27){this[_0x6826('0x4')]=_0x40bf27['uniqueid'];this[_0x6826('0x5')]=_0x40bf27[_0x6826('0x5')]||undefined;this['type']=_0x40bf27[_0x6826('0x6')];this[_0x6826('0x7')]=_0x40bf27['type']===_0x6826('0x8')?_0x6826('0x9'):_0x40bf27[_0x6826('0x6')];this[_0x6826('0xa')]=_0x40bf27[_0x6826('0xa')];this[_0x6826('0xb')]=_0x40bf27[_0x6826('0xb')];this[_0x6826('0xc')]=_0x40bf27[_0x6826('0xc')];this[_0x6826('0xd')]=_0x40bf27['countbusyretry']+_0x40bf27[_0x6826('0xb')]+_0x40bf27[_0x6826('0xc')]+_0x40bf27[_0x6826('0xe')]+_0x40bf27['countdropretry']+_0x40bf27['countabandonedretry']+_0x40bf27['countmachineretry']+_0x40bf27[_0x6826('0xf')];this[_0x6826('0xe')]=_0x40bf27['countnosuchnumberretry'];this[_0x6826('0x10')]=_0x40bf27[_0x6826('0x10')];this['countabandonedretry']=_0x40bf27[_0x6826('0x11')];this[_0x6826('0x12')]=_0x40bf27[_0x6826('0x12')];this[_0x6826('0xf')]=_0x40bf27['countagentrejectretry'];this['queue']=_0x40bf27[_0x6826('0x9')];this['calleridname']=_0x40bf27[_0x6826('0x13')];this[_0x6826('0x14')]=_0x40bf27[_0x6826('0x15')];this['starttime']=_0x40bf27[_0x6826('0x16')];this['responsetime']=_0x40bf27[_0x6826('0x17')];this[_0x6826('0x18')]=_0x40bf27[_0x6826('0x17')];this[_0x6826('0x19')]=getSeconds(_0x40bf27[_0x6826('0x17')],_0x40bf27['starttime']);this['holdtime']=0x0;this['talktime']=0x0;this[_0x6826('0x1a')]=_0x40bf27[_0x6826('0x1a')];this[_0x6826('0x1b')]=_0x40bf27[_0x6826('0x1b')];this['callbackat']=_0x40bf27[_0x6826('0x1c')];this[_0x6826('0x1d')]=_0x40bf27[_0x6826('0x1d')];this['ContactId']=_0x40bf27[_0x6826('0x1e')];this['ListId']=_0x40bf27[_0x6826('0x1f')];this[_0x6826('0x20')]=_0x40bf27[_0x6826('0x20')];this[_0x6826('0x21')]=_0x40bf27[_0x6826('0x21')];this['CampaignId']=_0x40bf27[_0x6826('0x22')];this[_0x6826('0x23')]=_0x40bf27['originatecalleridnum']||'';this[_0x6826('0x24')]=_0x40bf27[_0x6826('0x24')]||'';}module[_0x6826('0x25')]=History;
\ No newline at end of file
index 12d2787..65fb990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6952=['campaign:save','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','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','talking','pTalking','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','endtime','starttime','clearZombieChannels','[actions]','enqueue','isNil','status','channel','catch','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','checkIsBlackList','resolve','verifyAdditionalPhones','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','avgHandleTime','rescheduleContact','unlockContact','[unlockContact]\x20','temp','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','syncVarSet','uniqueid','variable','exten','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','Machine','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countglobal','countdropretry','countabandonedretry','reason19\x20machine....','add','dialMachineRetryFrequency','[syncHangupIvr]','AnswerAGI','AGI','[syncHangupIvr][createHistory]','dialQueueProject','cause-txt','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','dialDropRetryFrequency','callAdditionalPhoneAfterMin','additional','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','voiceQueue','dialAbandonedMaxRetry','[syncAgentComplete][createHistory][11]','actionid','strategy','locked','stateinterface','push','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','idHopper','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','finally','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','resetActiveCalls','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','timezones','TIMEZONE_UNKNOW','isArray','Action','command','iftime\x20%s,%s','interval','indexOf','true','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','booked','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:%s','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','loggedIn','dialTimezone','[syncQueueSummary]','dialPreviewRecallmeReminder','filter','online','map','syncCampaigns','checkIfTime','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','dialQueueTimeout','getCaller','ACTIVE','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','Contact','createdAt','updatedAt','XMD-','callerid','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','variables','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','[originate][error]','Error','originate\x20action\x20Error','getQueue','response','callProgressDetecting','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','countbusyretry','dialBusyRetryFrequency','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','dialAgentRejectRetryFrequency','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','averageHandleTime','getDataPredictive','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','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','startMethodPredictive','floor','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','run','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','[countReScheduled]\x20','tryOriginatePredictive','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','Ts\x20=\x20','interval\x20=\x20','exports','util','uuid','moment','md5','ioredis','../../../config/logger','dialer','predictive','predictiveCalls','syncQueueSummary','../ami','defaults','redis','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','rrmemory','roundrobin','prototype','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','queuecallerabandon','syncQueueCallerAbandon','syncOriginateResponse','syncAgentComplete','bind','custom:queuesummary','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','varset','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','message','name','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','stringify','milliseconds','diff','emit','type','outbound','answered','available','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','active','format','voice:queue:%s','voice_queue:save','ivr'];(function(_0x44a64f,_0x38475c){var _0x52024b=function(_0x2cd055){while(--_0x2cd055){_0x44a64f['push'](_0x44a64f['shift']());}};_0x52024b(++_0x38475c);}(_0x6952,0x1a6));var _0x2695=function(_0x274294,_0x4c6622){_0x274294=_0x274294-0x0;var _0x93139e=_0x6952[_0x274294];return _0x93139e;};'use strict';var util=require(_0x2695('0x0'));var _=require('lodash');var uuid=require(_0x2695('0x1'));var moment=require(_0x2695('0x2'));var rr=require('rr');var md5=require(_0x2695('0x3'));var Redis=require(_0x2695('0x4'));var ut=require('../preview/util/util');var config=require('../../../config/environment/');var logger=require(_0x2695('0x5'))(_0x2695('0x6'));var loggerBooked=require('../../../config/logger')('booked');var loggerPredictive=require(_0x2695('0x5'))(_0x2695('0x7'));var loggerPredictiveCalls=require(_0x2695('0x5'))(_0x2695('0x8'));var loggerSyncQueueSummary=require(_0x2695('0x5'))(_0x2695('0x9'));var ami=require(_0x2695('0xa'));config['redis']=_[_0x2695('0xb')](config[_0x2695('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0x2695('0xd'))(new Redis(config[_0x2695('0xc')]));var cmHopper=require(_0x2695('0xe'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperAdditionalPhone=require(_0x2695('0xf'));var cmHopperBlack=require(_0x2695('0x10'));var voiceQueueRt=require(_0x2695('0x11'));var RpcSetting=require(_0x2695('0x12'));var Action=require('./action');var History=require(_0x2695('0x13'));var Final=require(_0x2695('0x14'));var AgentComplete=require(_0x2695('0x15'));var QueueCallerAbandon=require(_0x2695('0x16'));var Hangup=require(_0x2695('0x17'));var ipAgi=process[_0x2695('0x18')][_0x2695('0x19')]||'127.0.0.1';var strategy={'rrmemory':_0x2695('0x1a'),'roundrobin':_0x2695('0x1b')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x2695('0x1c')]['enqueue']=function(_0x5d88ae){this[_0x2695('0x1d')]=this[_0x2695('0x1d')]?this[_0x2695('0x1d')]['finally'](_0x5d88ae):_0x5d88ae();};function Dialer(_0x168968,_0x2b8622){this[_0x2695('0x1e')]=new Sequence();this[_0x2695('0x1f')]=_0x2b8622;this['voiceQueues']=_0x168968[_0x2695('0x20')];this[_0x2695('0x21')]=_0x168968[_0x2695('0x21')];this[_0x2695('0x22')]=_0x168968[_0x2695('0x22')];this[_0x2695('0x23')]=_0x168968[_0x2695('0x23')];this[_0x2695('0x24')]=config[_0x2695('0x24')]||0x2;this['channels']={};this[_0x2695('0x25')]={};this[_0x2695('0x26')]={};this[_0x2695('0x27')]={};this[_0x2695('0x28')]={};this[_0x2695('0x29')]={};this['startProgressive']={};this[_0x2695('0x2a')]={};this[_0x2695('0x2b')]={};this[_0x2695('0x2c')]={};ami['on'](_0x2695('0x2d'),this['syncAgentConnect']['bind'](this));ami['on'](_0x2695('0x2e'),this[_0x2695('0x2f')]['bind'](this));ami['on']('originateresponse',this[_0x2695('0x30')]['bind'](this));ami['on']('agentcomplete',this[_0x2695('0x31')][_0x2695('0x32')](this));ami['on'](_0x2695('0x33'),this[_0x2695('0x9')][_0x2695('0x32')](this));ami['on']('custom:queuesummarycomplete',this[_0x2695('0x34')][_0x2695('0x32')](this));ami['on'](_0x2695('0x35'),this[_0x2695('0x36')][_0x2695('0x32')](this));ami['on'](_0x2695('0x37'),this[_0x2695('0x38')][_0x2695('0x32')](this));ami['on'](_0x2695('0x39'),this['syncVarSet'][_0x2695('0x32')](this));ami['on'](_0x2695('0x3a'),this[_0x2695('0x3b')][_0x2695('0x32')](this));ami['on'](_0x2695('0x3c'),this[_0x2695('0x3d')][_0x2695('0x32')](this));this['loopCampaigns']();this[_0x2695('0x3e')]();RpcSetting[_0x2695('0x3f')]()[_0x2695('0x40')](function(_0x3864e2){previewRecallmeReminderInterval=_0x3864e2[_0x2695('0x41')];});}function isNotNull(_0x8acae7){return _0x8acae7!==null&&!_['isUndefined'](_0x8acae7);}function checkIsLoggedIn(_0x352a3e,_0x3320af){return function(){if(_0x3320af<=0x0){_0x352a3e[_0x2695('0x42')]='AGENTS_NOT_LOGGED';throw _0x352a3e[_0x2695('0x43')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x31761c){return _0x31761c;}function checkIsActive(_0x520ba0,_0x6e592c){return function(){if(!isActive(_0x6e592c)){_0x520ba0['message']=_0x2695('0x44');throw _0x520ba0[_0x2695('0x43')]+_0x2695('0x45');}};}function checkInterval(_0x32bd5f){return function(){if(!isNotNull(_0x32bd5f[_0x2695('0x46')])){_0x32bd5f[_0x2695('0x42')]=_0x2695('0x47');throw _0x32bd5f[_0x2695('0x43')]+_0x2695('0x48');}if(!isNotNull(_0x32bd5f['Interval'][_0x2695('0x49')])){_0x32bd5f[_0x2695('0x42')]='INTERVAL_IS_NULL';throw _0x32bd5f[_0x2695('0x43')]+_0x2695('0x48');}if(!isNotNull(_[_0x2695('0x4a')](_0x32bd5f[_0x2695('0x46')][_0x2695('0x49')]))){_0x32bd5f[_0x2695('0x42')]=_0x2695('0x47');throw _0x32bd5f[_0x2695('0x43')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x1dc6b1,_0x128e7a,_0x5acc5f){return{'action':_0x1dc6b1,'response':_0x128e7a,'message':_0x5acc5f,'stack':_0x5acc5f};}function myreject(_0x2fa2a6){return function(_0x2e652c){return _0x2fa2a6(msgResponse(_0x2695('0x4b'),'Error',JSON[_0x2695('0x4c')](_0x2e652c)));};}function getSeconds(_0x1b3207,_0x103977){var _0x4d053b=moment(_0x1b3207)[_0x2695('0x4d')](0x0);var _0x361b1f=moment(_0x103977)[_0x2695('0x4d')](0x0);return _0x4d053b[_0x2695('0x4e')](_0x361b1f,'seconds');}function emit(_0x4afe1a,_0x26d1f5,_0x27c58a){io['to'](_0x4afe1a)[_0x2695('0x4f')](_0x26d1f5,_0x27c58a);}function emitVoiceQueueSummary(_0xef0481){if(_0xef0481[_0x2695('0x50')]===_0x2695('0x51')){var _0x5c2977={'id':_0xef0481['id'],'name':_0xef0481[_0x2695('0x43')],'strategy':_0xef0481['strategy'],'answered':_0xef0481[_0x2695('0x52')],'available':_0xef0481[_0x2695('0x53')],'loggedIn':_0xef0481['loggedIn'],'pTalking':_0xef0481['pTalking'],'sumBillable':_0xef0481[_0x2695('0x54')],'sumDuration':_0xef0481[_0x2695('0x55')],'sumHoldTime':_0xef0481[_0x2695('0x56')]||0x0,'talking':_0xef0481['talking'],'total':_0xef0481[_0x2695('0x57')],'type':_0xef0481[_0x2695('0x50')],'unmanaged':_0xef0481[_0x2695('0x58')],'abandoned':_0xef0481[_0x2695('0x59')],'waiting':_0xef0481[_0x2695('0x5a')],'loggedInDb':_0xef0481['loggedInDb'],'dialActive':_0xef0481[_0x2695('0x5b')],'dialMethod':_0xef0481[_0x2695('0x5c')],'dialOriginateCallerIdName':_0xef0481[_0x2695('0x5d')],'dialOriginateCallerIdNumber':_0xef0481['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0xef0481[_0x2695('0x5e')],'dialPrefix':_0xef0481[_0x2695('0x5f')],'outboundAnswerAgiCallsDay':_0xef0481[_0x2695('0x60')],'outboundAnswerCallsDay':_0xef0481[_0x2695('0x61')],'outboundBlacklistCallsDay':_0xef0481[_0x2695('0x62')],'outboundBusyCallsDay':_0xef0481['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0xef0481['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0xef0481[_0x2695('0x63')],'outboundDropCallsDayCallersExit':_0xef0481[_0x2695('0x64')],'outboundDropCallsDayTimeout':_0xef0481[_0x2695('0x65')],'outboundNoAnswerCallsDay':_0xef0481['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0xef0481[_0x2695('0x66')],'outboundOriginateFailureCallsDay':_0xef0481[_0x2695('0x67')],'outboundReCallsDay':_0xef0481[_0x2695('0x68')],'outboundRejectCallsDay':_0xef0481[_0x2695('0x69')],'outboundUnknownCallsDay':_0xef0481[_0x2695('0x6a')],'predictiveIntervalAnsweredCalls':_0xef0481['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0xef0481['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0xef0481[_0x2695('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0xef0481['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0xef0481[_0x2695('0x6c')],'predictiveIntervalErlangCalls':_0xef0481[_0x2695('0x6d')],'predictiveIntervalErlangCallsDroppedCalls':_0xef0481[_0x2695('0x6e')],'predictiveIntervalHitRate':_0xef0481['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0xef0481[_0x2695('0x6f')],'predictiveIntervalPauses':_0xef0481[_0x2695('0x70')],'predictiveIntervalAvailable':_0xef0481['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0xef0481[_0x2695('0x71')],'message':_0xef0481[_0x2695('0x42')],'originated':_0xef0481[_0x2695('0x72')],'erlangCalls':_0xef0481[_0x2695('0x73')],'erlangCallToSecond':_0xef0481[_0x2695('0x74')],'erlangAbandonmentRate':_0xef0481[_0x2695('0x75')],'erlangBusyFactor':_0xef0481['erlangBusyFactor'],'startPredictive':_0xef0481[_0x2695('0x29')],'startProgressive':_0xef0481[_0x2695('0x76')]};if(_0xef0481[_0x2695('0x77')]){_0x5c2977[_0x2695('0x77')]={'id':_0xef0481['Trunk']['id'],'name':_0xef0481['Trunk']['name'],'active':_0xef0481['Trunk'][_0x2695('0x78')],'callerid':_0xef0481[_0x2695('0x77')]['callerid']};}if(_0xef0481[_0x2695('0x46')]){_0x5c2977[_0x2695('0x46')]={'id':_0xef0481[_0x2695('0x46')]['id'],'name':_0xef0481[_0x2695('0x46')][_0x2695('0x43')]};}var _0x26eec5=md5(JSON[_0x2695('0x4c')](_0x5c2977));if(_0xef0481['md5']!==_0x26eec5){_0xef0481[_0x2695('0x3')]=_0x26eec5;emit(util[_0x2695('0x79')](_0x2695('0x7a'),_0x5c2977[_0x2695('0x43')]),_0x2695('0x7b'),_0x5c2977);}}}function emitCampaignSummary(_0x5a346b){if(_0x5a346b['type']===_0x2695('0x7c')){emit(util[_0x2695('0x79')]('campaign:ivr:%s',_0x5a346b[_0x2695('0x43')]),_0x2695('0x7d'),_0x5a346b);}}function checkGetDataPredictive(_0x134298){if(isNotNull(_0x134298)&&!_['isEmpty'](_0x134298)){loggerPredictive[_0x2695('0x7e')](_0x2695('0x7f'));loggerPredictive[_0x2695('0x7e')](_0x2695('0x80'),_0x134298[_0x2695('0x71')]);loggerPredictive['info'](_0x2695('0x81'),_0x134298[_0x2695('0x82')]);loggerPredictive[_0x2695('0x7e')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x134298[_0x2695('0x6c')]);loggerPredictive['info']('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x134298[_0x2695('0x83')]);loggerPredictive['info'](_0x2695('0x84'),_0x134298[_0x2695('0x85')]);loggerPredictive['info'](_0x2695('0x86'),_0x134298[_0x2695('0x6b')]);loggerPredictive['info'](_0x2695('0x87'));if(_0x134298['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0x134298['predictiveIntervalAvgTalktime'])&&_0x134298[_0x2695('0x6b')]>0x0){return!![];}loggerPredictive[_0x2695('0x7e')](_0x2695('0x88'));if(!_[_0x2695('0x89')](_0x134298['predictiveIntervalAvgHoldtime'])&&_0x134298[_0x2695('0x85')]>0x0){return!![];}loggerPredictive[_0x2695('0x7e')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x2695('0x7e')](_0x2695('0x8a'));}}else{loggerPredictive[_0x2695('0x7e')](_0x2695('0x8b'));}return![];}function mergeDataErlangB(_0x3506d3){return function(_0x3474b5){loggerPredictive[_0x2695('0x7e')]('---------\x20ErlangB\x20---------');loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3474b5[_0x2695('0x73')]);loggerPredictive['info'](_0x2695('0x8c'),_0x3474b5[_0x2695('0x74')]);loggerPredictive[_0x2695('0x7e')](_0x2695('0x8d'),_0x3474b5['erlangAbandonmentRate']);loggerPredictive['info'](_0x2695('0x8e'),_0x3474b5['erlangBusyFactor']);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3474b5['erlangAbandonmentRate']);loggerPredictive[_0x2695('0x7e')](_0x2695('0x87'));_[_0x2695('0x8f')](_0x3506d3,_0x3474b5);};}function getDiff(_0x56e73f){var _0x31e7f6=moment()['milliseconds'](0x0);var _0x3b4415=moment(_0x56e73f)['milliseconds'](0x0);return _0x31e7f6[_0x2695('0x4e')](_0x3b4415,_0x2695('0x90'));}function ifInterval(_0x1c0669,_0x30acb2){if(_['isUndefined'](_0x30acb2)){return![];}return getDiff(_0x30acb2)<_0x1c0669*0x3c;}function freeVariablesPredictive(_0x4f1bdb){if(isNotNull(_0x4f1bdb)){if(!_['isUndefined'](_0x4f1bdb[_0x2695('0x76')])){_0x4f1bdb['startProgressive']=undefined;loggerPredictive[_0x2695('0x7e')](_0x4f1bdb[_0x2695('0x43')],_0x2695('0x91'));}if(!_[_0x2695('0x89')](_0x4f1bdb[_0x2695('0x29')])){_0x4f1bdb['startPredictive']=undefined;loggerPredictive['info'](_0x4f1bdb[_0x2695('0x43')],_0x2695('0x92'));}if(!_[_0x2695('0x89')](_0x4f1bdb[_0x2695('0x93')])){clearInterval(_0x4f1bdb[_0x2695('0x93')]);_0x4f1bdb[_0x2695('0x93')]=undefined;loggerPredictive[_0x2695('0x7e')](_0x4f1bdb[_0x2695('0x43')],_0x2695('0x94'));}}}function erlangb(_0x4f9b1d,_0x57feb5){if(_0x57feb5===0x0){return 0x0;}var _0x44096f=0x1;for(var _0x46b0cd=0x1;_0x46b0cd<=_0x57feb5;_0x46b0cd+=0x1){_0x44096f=0x1+_0x44096f*_0x46b0cd/_0x4f9b1d;}return 0x1/_0x44096f;}function isVoiceQueueOutbound(_0x225380){return _0x225380===_0x2695('0x51');}function isNotPreview(_0x455ce5){return _0x455ce5!=='preview';}function isCampaignIvr(_0x1a86c5){return _0x1a86c5==='ivr';}function getCallerId(_0x380317,_0x2dd419,_0x517009){if(!_[_0x2695('0x89')](_0x517009)&&typeof _0x517009===_0x2695('0x95')&&!_[_0x2695('0x4a')](_0x517009)){if(!_[_0x2695('0x89')](_0x2dd419)&&typeof _0x2dd419===_0x2695('0x95')&&!_[_0x2695('0x4a')](_0x2dd419)){return util[_0x2695('0x79')](_0x2695('0x96'),_0x2dd419,_0x517009);}return util['format'](_0x2695('0x96'),_0x517009,_0x517009);}if(!_['isUndefined'](_0x380317)&&typeof _0x380317===_0x2695('0x95')&&!_[_0x2695('0x4a')](_0x380317)){return _0x380317;}return _0x2695('0x97');}function loggerCatchQueueSummary(_0x486735,_0x56a993){return function(_0x16d7df){freeVariablesPredictive(_0x56a993);emitVoiceQueueSummary(_0x56a993);emitCampaignSummary(_0x56a993);loggerSyncQueueSummary[_0x2695('0x98')](_0x486735,util[_0x2695('0x99')](_0x16d7df,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x10e8d4,_0x9e5d0){return function(_0x48e388){loggerPredictive[_0x2695('0x9a')](_0x9e5d0['name'],_0x10e8d4);loggerPredictive[_0x2695('0x9a')](_0x48e388['stack']);freeVariablesPredictive(_0x9e5d0);};}function loggerCatch(_0x35f973){return function(_0x210cdc){logger['error'](_0x35f973,util[_0x2695('0x99')](_0x210cdc,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xf712e4){return _0xf712e4&&!_[_0x2695('0x89')](_0xf712e4)&&_0xf712e4[_0x2695('0x9b')]>0x0;}function decremetOriginate(_0x307875){if(!_[_0x2695('0x89')](_0x307875)&&_0x307875!==null){if(typeof _0x307875[_0x2695('0x72')]!==_0x2695('0x9c')){if(_0x307875[_0x2695('0x72')]>0x0){_0x307875[_0x2695('0x72')]-=0x1;}else{logger['error'](_0x2695('0x9d'));}}}else{logger['error'](_0x2695('0x9e'));}}function checkContactLowerLimitOriginate(_0x2687aa,_0x29c93c,_0x2a4641){if(_0x29c93c>_0x2a4641){for(var _0x2d48f8=0x0;_0x2d48f8<_0x29c93c-_0x2a4641;_0x2d48f8+=0x1){decremetOriginate(_0x2687aa);}}}function loggerGetContactDialer(_0x3e3351,_0x53e5b1,_0x1018be){return function(_0xa073e4){checkContactLowerLimitOriginate(_0x53e5b1,_0x1018be,0x0);logger[_0x2695('0x9a')](_0x3e3351,util['inspect'](_0xa073e4,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x42f8e4){return function(_0x5f44aa){if(isNotNull(_0x5f44aa)&&isNotNull(_0x5f44aa[0x0])){if(_0x5f44aa[0x0][_0x2695('0x9f')]>0x0){_0x42f8e4[_0x2695('0x42')]='RESCHEDULED_CONTACTS';logger[_0x2695('0x7e')](_0x2695('0xa0')+_0x42f8e4[_0x2695('0x43')],_0x5f44aa[0x0][_0x2695('0x9f')],_0x2695('0xa1'));}else{_0x42f8e4[_0x2695('0x42')]=_0x2695('0xa2');logger['info'](_0x2695('0xa3')+_0x42f8e4[_0x2695('0x43')]);}}};}function notSendMessagesQueue(_0x30ffe9){if(_0x30ffe9[_0x2695('0xa4')]){freeVariablesPredictive(_0x30ffe9);if(_0x30ffe9[_0x2695('0x72')]===0x0&&_0x30ffe9[_0x2695('0xa5')]===0x0&&_0x30ffe9[_0x2695('0x5a')]===0x0&&(_0x30ffe9[_0x2695('0xa6')]||0x0)===0x0){_0x30ffe9[_0x2695('0xa4')]=![];_0x30ffe9['available']=0x0;_0x30ffe9[_0x2695('0x42')]=_0x2695('0x44');loggerSyncQueueSummary[_0x2695('0x98')](_0x2695('0xa7'),_0x30ffe9[_0x2695('0x43')],_0x2695('0xa8'));}else{_0x30ffe9['message']=_0x2695('0xa9');loggerSyncQueueSummary['debug'](_0x2695('0xa7'),_0x30ffe9[_0x2695('0x43')],'is\x20disactive');}emitVoiceQueueSummary(_0x30ffe9);}}function notSendMessagesCampaign(_0x467567){if(_0x467567[_0x2695('0xa4')]){if(_0x467567[_0x2695('0x72')]===0x0){_0x467567[_0x2695('0xa4')]=![];_0x467567[_0x2695('0x42')]=_0x2695('0x44');loggerSyncQueueSummary['debug'](_0x2695('0xaa'),_0x467567[_0x2695('0x43')],'is\x20not\x20active');}else{_0x467567[_0x2695('0x42')]=_0x2695('0xa9');loggerSyncQueueSummary[_0x2695('0x98')](_0x2695('0xaa'),_0x467567[_0x2695('0x43')],_0x2695('0xab'));}emitCampaignSummary(_0x467567);}}function createObjHistory(_0x526e14,_0x4c982b,_0x29e232,_0x3ecbb3,_0x22c263){_0x526e14[_0x2695('0x42')]=_0x29e232;var _0x4ac9c4=new Action(_0x526e14,_0x4c982b);var _0x26301d=new History(_0x4ac9c4);_0x26301d[_0x2695('0xac')]=_0x3ecbb3;_0x26301d[_0x2695('0xad')]=_0x22c263;_0x26301d[_0x2695('0xae')]=_0x4ac9c4[_0x2695('0xaf')];return _0x26301d;}Dialer[_0x2695('0x1c')][_0x2695('0x3e')]=function(){var _0x529aee=this;setInterval(function(){_0x529aee[_0x2695('0xb0')](_0x529aee['uniqueId'],'[uniqueid]');_0x529aee[_0x2695('0xb0')](_0x529aee['actions'],_0x2695('0xb1'));},0x32c8);};Dialer[_0x2695('0x1c')][_0x2695('0xb0')]=function(_0x1222b1,_0x1b49d6){var _0x46be39=this;for(var _0x4f7caf in _0x1222b1){if(typeof _0x1222b1[_0x4f7caf]!=='undefined'){this[_0x2695('0x1e')][_0x2695('0xb2')](function(){if(!_[_0x2695('0xb3')](_0x1222b1[_0x4f7caf])){return ami['Action']({'action':_0x2695('0xb4'),'channel':_0x1222b1[_0x4f7caf][_0x2695('0xb5')]})[_0x2695('0xb6')](function(_0x503a40){if(_0x503a40[_0x2695('0x42')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x1222b1[_0x4f7caf]&&_0x1222b1[_0x4f7caf][_0x2695('0x50')]!=='ivr'){_0x46be39[_0x2695('0xb7')](_0x46be39[_0x2695('0x20')][_0x1222b1[_0x4f7caf][_0x2695('0xb8')]]);logger['error'](_0x2695('0xb9'),_0x1b49d6,_0x4f7caf,_0x1222b1[_0x4f7caf][_0x2695('0xb8')]);delete _0x1222b1[_0x4f7caf];}if(_0x1222b1[_0x4f7caf]&&_0x1222b1[_0x4f7caf]['type']===_0x2695('0x7c')){_0x46be39['updateOriginated'](_0x46be39[_0x2695('0x21')][_0x1222b1[_0x4f7caf][_0x2695('0xb8')]]);logger['error'](_0x2695('0xba'),_0x1b49d6,_0x4f7caf,_0x1222b1[_0x4f7caf][_0x2695('0xb8')]);delete _0x1222b1[_0x4f7caf];}},0x2328);}});}});}}};Dialer[_0x2695('0x1c')][_0x2695('0xbb')]=function(_0x164289){return Promise['resolve']()[_0x2695('0x40')](cmHopper[_0x2695('0xbb')](_0x164289))['catch'](loggerCatch('[countReScheduled]\x20'));};Dialer[_0x2695('0x1c')][_0x2695('0xbc')]=function(_0xf484e6){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopperBlack[_0x2695('0xbc')](_0xf484e6))[_0x2695('0xb6')](loggerCatch('[checkIsBlackList]\x20'));};Dialer['prototype']['verifyAdditionalPhones']=function(_0x42e825,_0x5b2996,_0x3dbe56){return Promise['resolve']()[_0x2695('0x40')](cmHopperAdditionalPhone[_0x2695('0xbe')](_0x42e825,_0x5b2996,_0x3dbe56))['catch'](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer[_0x2695('0x1c')][_0x2695('0xbf')]=function(_0x4d0f33,_0x452232,_0x42a910){return Promise[_0x2695('0xbd')]()['then'](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x4d0f33,_0x452232,_0x42a910))[_0x2695('0xb6')](loggerCatch(_0x2695('0xc0')));};Dialer[_0x2695('0x1c')][_0x2695('0xc1')]=function(_0x563ff1){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopperBlack[_0x2695('0xc1')](_0x563ff1))['catch'](loggerCatch(_0x2695('0xc2')));};Dialer[_0x2695('0x1c')]['averageHandleTime']=function(_0x357db1){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopperHistory[_0x2695('0xc3')](_0x357db1))['catch'](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x2695('0x1c')][_0x2695('0xc4')]=function(_0x1e14c4){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopper[_0x2695('0xc4')](_0x1e14c4))[_0x2695('0xb6')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x2695('0x1c')][_0x2695('0xc5')]=function(_0x56623c,_0x414b53,_0x32bec3){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopper[_0x2695('0xc5')](_0x56623c,_0x414b53,_0x32bec3))[_0x2695('0xb6')](loggerCatch(_0x2695('0xc6')));};Dialer[_0x2695('0x1c')]['getContactDialer']=function(_0x1cd62d,_0xd4b4e4,_0x553fd5,_0x47b901,_0xba3c13){return Promise['resolve']()['then'](cmHopper['getContactDialer'](_0x1cd62d,_0xd4b4e4,_0x553fd5,_0x47b901))[_0x2695('0xb6')](function(_0x2769d1){_0xba3c13[_0x2695('0xc7')]-=_0x553fd5;_0xba3c13[_0x2695('0xc7')]=_0xba3c13[_0x2695('0xc7')]>0x0?_0xba3c13[_0x2695('0xc7')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x2769d1);});};Dialer[_0x2695('0x1c')][_0x2695('0xc8')]=function(_0x54e055,_0x23778a,_0x56e425,_0x17deb7){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopper['getContactDialerIvr'](_0x54e055,_0x23778a,_0x56e425))[_0x2695('0xb6')](function(_0x13e532){_0x17deb7['temp']-=_0x23778a;_0x17deb7[_0x2695('0xc7')]=_0x17deb7['temp']>0x0?_0x17deb7[_0x2695('0xc7')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x13e532);});};Dialer['prototype']['getVoiceQueueRtPauses']=function(_0x46a885){return Promise[_0x2695('0xbd')]()['then'](voiceQueueRt[_0x2695('0xc9')](_0x46a885))[_0x2695('0xb6')](loggerCatch(_0x2695('0xca')));};Dialer[_0x2695('0x1c')]['moveContactManagedDialer']=function(_0x1c47f4){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopper[_0x2695('0xcb')](_0x1c47f4))[_0x2695('0xb6')](loggerCatch(_0x2695('0xcc')));};Dialer['prototype'][_0x2695('0xcd')]=function(_0x4d0ec2){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopperHistory[_0x2695('0xcd')](_0x4d0ec2))[_0x2695('0xb6')](loggerCatch(_0x2695('0xce')));};Dialer[_0x2695('0x1c')][_0x2695('0xb7')]=function(_0x2b74b0){if(!_[_0x2695('0x89')](_0x2b74b0)&&_0x2b74b0!==null){if(typeof _0x2b74b0[_0x2695('0x72')]!=='undefined'){if(_0x2b74b0[_0x2695('0x72')]>0x0){_0x2b74b0[_0x2695('0x72')]-=0x1;}else{logger[_0x2695('0x9a')](_0x2695('0xcf'));}}}else{logger['error'](_0x2695('0xd0'));}};Dialer[_0x2695('0x1c')][_0x2695('0xd1')]=function(_0x1dd4de,_0x198080){var _0x505ac0=this;return function(_0x59e2bc){_0x505ac0[_0x2695('0xb7')](_0x198080);logger[_0x2695('0x9a')](_0x1dd4de,util[_0x2695('0x99')](_0x59e2bc,{'showHidden':![],'depth':null}));};};Dialer[_0x2695('0x1c')][_0x2695('0xd2')]=function(_0x57c212,_0x19f620,_0x20305e){var _0x229198={'state':0x19,'statedesc':_0x2695('0xd3')};this[_0x2695('0xb7')](_0x19f620);this[_0x2695('0xd4')](_[_0x2695('0x8f')](_0x229198,_[_0x2695('0xd5')](_0x20305e,[_0x2695('0xd6'),'ListId','UserId',_0x2695('0xd7'),_0x2695('0xd8')])),_0x2695('0xd9'),_0x2695('0xda'));logger['error'](_0x57c212);};Dialer[_0x2695('0x1c')][_0x2695('0xdb')]=function(_0x3dea3f){return _0x3dea3f===_0x2695('0xdc');};Dialer[_0x2695('0x1c')][_0x2695('0xdd')]=function(_0x219f22){return!_[_0x2695('0x89')](_0x219f22)&&_0x219f22&&!_[_0x2695('0x89')](_0x219f22[_0x2695('0x43')])&&!_[_0x2695('0x89')](_0x219f22[_0x2695('0x78')])&&_0x219f22[_0x2695('0x78')]&&(this['trunks'][util[_0x2695('0x79')](_0x2695('0xde'),_0x219f22['name'])][_0x2695('0xb4')]===_0x2695('0xdf')||this[_0x2695('0x23')][util[_0x2695('0x79')](_0x2695('0xde'),_0x219f22[_0x2695('0x43')])][_0x2695('0xb4')]==='unmonitored');};Dialer[_0x2695('0x1c')]['saveInDb']=function(_0x2f386f,_0x339405,_0x295b78){this[_0x2695('0xcd')](_0x2f386f)[_0x2695('0xb6')](loggerCatch(_0x339405));this['moveContactManagedDialer'](_0x2f386f)['catch'](loggerCatch(_0x295b78));};Dialer[_0x2695('0x1c')][_0x2695('0xe0')]=function(_0x4833ff){var _0x53a0de=this;var _0x1d4ba5=this[_0x2695('0x27')][_0x4833ff[_0x2695('0xe1')]];var _0xd939f;if(!_[_0x2695('0xb3')](_0x4833ff)&&!_[_0x2695('0xb3')](_0x4833ff[_0x2695('0xe2')])&&!_['isNil'](_0x4833ff[_0x2695('0xe2')]['amdstatus'])&&_0x4833ff[_0x2695('0xe3')]==='xcally-motion-dialer'&&_0x1d4ba5){if(_0x1d4ba5[_0x2695('0x50')]!=='ivr'&&this['voiceQueues'][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0xe4')]&&_0x4833ff[_0x2695('0xe5')]===_0x2695('0xe6')){delete this['uniqueId'][_0x4833ff[_0x2695('0xe1')]];this[_0x2695('0xb7')](this[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]]);this[_0x2695('0x20')][_0x1d4ba5['queue']][_0x2695('0x61')]+=0x1;this[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0x60')]+=0x1;_0xd939f=new Hangup(_0x1d4ba5,_0x4833ff);_0xd939f[_0x2695('0xac')]=0x12;_0xd939f['statedesc']=_0x2695('0xe7');_0xd939f[_0x2695('0xe8')]=_0x2695('0xe9');ami[_0x2695('0x4f')](_0x2695('0xea'),ut[_0x2695('0xeb')](_0xd939f,_0x2695('0xec')));this[_0x2695('0xd4')](_0xd939f,_0x2695('0xed'),_0x2695('0xee'));}if(_0x1d4ba5[_0x2695('0x50')]!==_0x2695('0x7c')&&this[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0xe4')]&&_0x4833ff[_0x2695('0xe5')]==='MACHINE'){return new Promise(function(_0x22ef43,_0x2d7131){delete _0x53a0de[_0x2695('0x27')][_0x4833ff['uniqueid']];_0x53a0de[_0x2695('0xb7')](_0x53a0de['voiceQueues'][_0x1d4ba5[_0x2695('0xb8')]]);_0x53a0de[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]]['outboundAnswerCallsDay']+=0x1;_0x53a0de[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0x60')]+=0x1;var _0x5735ad=_0x53a0de[_0x2695('0x20')][_0x1d4ba5[_0x2695('0xb8')]];var _0x3b87b2=new Hangup(_0x1d4ba5,_0x4833ff);_0x3b87b2[_0x2695('0xac')]=0x13;_0x3b87b2['statedesc']=_0x2695('0xef');_0x3b87b2[_0x2695('0xe8')]=_0x2695('0xe9');_0x3b87b2['countmachineretry']+=0x1;_0x3b87b2['countglobal']+=0x1;_0x3b87b2['amd']=!![];ami['emit'](_0x2695('0xea'),ut[_0x2695('0xeb')](_0x3b87b2,_0x2695('0xec')));_0x53a0de[_0x2695('0xcd')](_0x3b87b2)[_0x2695('0xb6')](loggerCatch(_0x2695('0xf0')));if(_0x3b87b2['countbusyretry']+_0x3b87b2[_0x2695('0xf1')]+_0x3b87b2[_0x2695('0xf2')]+_0x3b87b2[_0x2695('0xf3')]+_0x3b87b2['countdropretry']+_0x3b87b2['countabandonedretry']+_0x3b87b2[_0x2695('0xf4')]+_0x3b87b2[_0x2695('0xf5')]>=_0x5735ad[_0x2695('0xf6')]){_0x53a0de[_0x2695('0xf7')](_0x3b87b2,_0x22ef43,_0x2d7131,'reason19\x20machine....');}else{if(_0x3b87b2[_0x2695('0xf4')]>=_0x5735ad[_0x2695('0xf8')]){_0x53a0de[_0x2695('0xf9')](_0x3b87b2,_0x22ef43,_0x2d7131,_0x2695('0xfa'));}else{_0x53a0de[_0x2695('0xc4')]({'active':![],'countmachineretry':_0x3b87b2[_0x2695('0xf4')],'scheduledat':moment()['add'](_0x5735ad['dialMachineRetryFrequency'],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x3b87b2['ContactId'],'ListId':_0x3b87b2[_0x2695('0xfd')],'VoiceQueueId':_0x3b87b2[_0x2695('0xd7')]||undefined,'CampaignId':_0x3b87b2[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0xfe')));_0x22ef43({'reschedule':0x1});}}});}if(_0x1d4ba5[_0x2695('0x50')]===_0x2695('0x7c')&&this[_0x2695('0x21')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0xe4')]&&_0x4833ff[_0x2695('0xe5')]===_0x2695('0xe6')){delete this[_0x2695('0x27')][_0x4833ff['uniqueid']];this[_0x2695('0xb7')](this['campaigns'][_0x1d4ba5[_0x2695('0xb8')]]);_0xd939f=new Hangup(_0x1d4ba5,_0x4833ff);_0xd939f['state']=0x12;_0xd939f[_0x2695('0xad')]='HangupInAMD';_0xd939f[_0x2695('0xe8')]=_0x2695('0xe9');ami[_0x2695('0x4f')]('custom:amd',ut[_0x2695('0xeb')](_0xd939f,_0x2695('0xec')));this[_0x2695('0xd4')](_0xd939f,_0x2695('0xff'),_0x2695('0x100'));}if(_0x1d4ba5[_0x2695('0x50')]==='ivr'&&this[_0x2695('0x21')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0xe4')]&&_0x4833ff[_0x2695('0xe5')]===_0x2695('0x101')){return new Promise(function(_0x33d208,_0x451852){delete _0x53a0de[_0x2695('0x27')][_0x4833ff[_0x2695('0xe1')]];_0x53a0de[_0x2695('0xb7')](_0x53a0de[_0x2695('0x21')][_0x1d4ba5['queue']]);_0x53a0de[_0x2695('0x21')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0x61')]+=0x1;_0x53a0de[_0x2695('0x21')][_0x1d4ba5[_0x2695('0xb8')]][_0x2695('0x60')]+=0x1;var _0x311d62=_0x53a0de[_0x2695('0x21')][_0x1d4ba5[_0x2695('0xb8')]];var _0x401cd4=new Hangup(_0x1d4ba5,_0x4833ff);_0x401cd4[_0x2695('0xac')]=0x13;_0x401cd4[_0x2695('0xad')]=_0x2695('0xef');_0x401cd4[_0x2695('0xe8')]='AMD';_0x401cd4[_0x2695('0xf4')]+=0x1;_0x401cd4[_0x2695('0x102')]+=0x1;_0x401cd4['amd']=!![];ami[_0x2695('0x4f')](_0x2695('0xea'),ut[_0x2695('0xeb')](_0x401cd4,'amd'));_0x53a0de[_0x2695('0xcd')](_0x401cd4)[_0x2695('0xb6')](loggerCatch(_0x2695('0xf0')));if(_0x401cd4['countbusyretry']+_0x401cd4[_0x2695('0xf1')]+_0x401cd4[_0x2695('0xf2')]+_0x401cd4['countnosuchnumberretry']+_0x401cd4[_0x2695('0x103')]+_0x401cd4[_0x2695('0x104')]+_0x401cd4['countmachineretry']+_0x401cd4[_0x2695('0xf5')]>=_0x311d62['dialGlobalMaxRetry']){_0x53a0de[_0x2695('0xf7')](_0x401cd4,_0x33d208,_0x451852,_0x2695('0x105'));}else{if(_0x401cd4['countmachineretry']>=_0x311d62[_0x2695('0xf8')]){_0x53a0de[_0x2695('0xf9')](_0x401cd4,_0x33d208,_0x451852,_0x2695('0xfa'));}else{_0x53a0de[_0x2695('0xc4')]({'active':![],'countmachineretry':_0x401cd4[_0x2695('0xf4')],'scheduledat':moment()[_0x2695('0x106')](_0x311d62[_0x2695('0x107')],_0x2695('0xfb'))['format'](_0x2695('0xfc')),'ContactId':_0x401cd4[_0x2695('0xd6')],'ListId':_0x401cd4['ListId'],'VoiceQueueId':_0x401cd4['VoiceQueueId']||undefined,'CampaignId':_0x401cd4['CampaignId']||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0xfe')));_0x33d208({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x2695('0x36')]=function(_0x1af59a){var _0x24bdee=this[_0x2695('0x27')][_0x1af59a[_0x2695('0xe1')]];var _0x1997b1;if(_0x24bdee&&_0x24bdee[_0x2695('0x50')]===_0x2695('0x7c')){delete this[_0x2695('0x27')][_0x1af59a[_0x2695('0xe1')]];this['updateOriginated'](this[_0x2695('0x21')][_0x24bdee[_0x2695('0xb8')]]);this[_0x2695('0x21')][_0x24bdee[_0x2695('0xb8')]]['ivrAnswerCallsDay']+=0x1;_0x1997b1=new Hangup(_0x24bdee,_0x1af59a);this[_0x2695('0xcd')](_0x1997b1)[_0x2695('0xb6')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x1997b1)[_0x2695('0xb6')](loggerCatch(_0x2695('0x108')));}if(_0x24bdee&&_0x24bdee[_0x2695('0x50')]!==_0x2695('0x7c')&&isNotNull(this[_0x2695('0x20')][_0x24bdee[_0x2695('0xb8')]]['dialQueueProject'])){delete this['uniqueId'][_0x1af59a['uniqueid']];this['updateOriginated'](this[_0x2695('0x20')][_0x24bdee['queue']]);this[_0x2695('0x20')][_0x24bdee['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x2695('0x20')][_0x24bdee[_0x2695('0xb8')]][_0x2695('0x60')]+=0x1;_0x1997b1=new Hangup(_0x24bdee,_0x1af59a);_0x1997b1['state']=0x10;_0x1997b1[_0x2695('0xad')]=_0x2695('0x109');_0x1997b1[_0x2695('0xe8')]=_0x2695('0x10a');this[_0x2695('0xcd')](_0x1997b1)[_0x2695('0xb6')](loggerCatch(_0x2695('0x10b')));this['moveContactManagedDialer'](_0x1997b1)[_0x2695('0xb6')](loggerCatch('[syncHangupIvr]'));}if(_0x24bdee&&_0x24bdee[_0x2695('0x50')]!=='ivr'&&!isNotNull(this[_0x2695('0x20')][_0x24bdee[_0x2695('0xb8')]][_0x2695('0x10c')])){delete this[_0x2695('0x27')][_0x1af59a['uniqueid']];this[_0x2695('0xb7')](this[_0x2695('0x20')][_0x24bdee[_0x2695('0xb8')]]);this[_0x2695('0x20')][_0x24bdee[_0x2695('0xb8')]][_0x2695('0x6a')]+=0x1;_0x1997b1=new Hangup(_0x24bdee,_0x1af59a);_0x1997b1[_0x2695('0xac')]=0xc;_0x1997b1[_0x2695('0xad')]=_0x1af59a[_0x2695('0x10d')];_0x1997b1[_0x2695('0xe8')]='Unknow';this[_0x2695('0xcd')](_0x1997b1)['catch'](loggerCatch(_0x2695('0x10b')));this['moveContactManagedDialer'](_0x1997b1)[_0x2695('0xb6')](loggerCatch(_0x2695('0x108')));}};Dialer['prototype'][_0x2695('0x31')]=function(_0x49ffd3){var _0x22e58a=this[_0x2695('0x27')][_0x49ffd3[_0x2695('0xe1')]];if(this[_0x2695('0x20')][_0x49ffd3['queue']]){if(_0x22e58a&&_0x22e58a[_0x2695('0x50')]!==_0x2695('0x7c')){delete this[_0x2695('0x27')][_0x49ffd3[_0x2695('0xe1')]];this[_0x2695('0x20')][_0x49ffd3['queue']][_0x2695('0x61')]+=0x1;var _0x5713db=new AgentComplete(_0x22e58a,_0x49ffd3);if(_0x49ffd3[_0x2695('0x10e')]===_0x2695('0x10f')){_0x5713db[_0x2695('0x110')]=this['voiceQueues'][_0x49ffd3['queue']][_0x2695('0x111')]&&this[_0x2695('0x20')][_0x49ffd3['queue']][_0x2695('0x112')]?moment()[_0x2695('0x79')](_0x2695('0xfc')):undefined;}this['createHistory'](_0x5713db)[_0x2695('0xb6')](loggerCatch(_0x2695('0x113')));this[_0x2695('0xcb')](_0x5713db)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x2695('0x1c')]['syncAgentConnect']=function(_0x41abd5){if(this[_0x2695('0x20')][_0x41abd5[_0x2695('0xb8')]]){if(this['uniqueId'][_0x41abd5['uniqueid']]&&this[_0x2695('0x27')][_0x41abd5[_0x2695('0xe1')]][_0x2695('0x50')]!==_0x2695('0x7c')){this[_0x2695('0xb7')](this[_0x2695('0x20')][_0x41abd5[_0x2695('0xb8')]]);this[_0x2695('0x27')][_0x41abd5[_0x2695('0xe1')]][_0x2695('0x114')]=moment()[_0x2695('0x79')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x2695('0x1c')][_0x2695('0x115')]=function(_0x428cca,_0x52d46e){this[_0x2695('0xcd')](_0x428cca)[_0x2695('0xb6')](loggerCatch(_0x2695('0x113')));if(_0x52d46e==0x0){this[_0x2695('0xcb')](_0x428cca)[_0x2695('0xb6')](loggerCatch(_0x2695('0x116')));}};Dialer['prototype'][_0x2695('0x2f')]=function(_0x47aa76){var _0x4eaf4d=this[_0x2695('0x27')][_0x47aa76[_0x2695('0xe1')]];var _0x329f84=this;var _0xc9559f=![];var _0x544f12;var _0x1eb4c9;if(this[_0x2695('0x20')][_0x47aa76['queue']]){if(_0x4eaf4d&&_0x4eaf4d[_0x2695('0x50')]!==_0x2695('0x7c')){delete this[_0x2695('0x27')][_0x47aa76['uniqueid']];this[_0x2695('0xb7')](this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]]);_0x4eaf4d[_0x2695('0x117')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));var _0x263d52=new QueueCallerAbandon(_0x4eaf4d,_0x47aa76);if(getSeconds(_0x4eaf4d[_0x2695('0x117')],_0x4eaf4d[_0x2695('0x118')])>=_0x4eaf4d['dialQueueTimeout']){this[_0x2695('0x20')][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x6c')]+=0x1;this[_0x2695('0x20')][_0x47aa76['queue']][_0x2695('0x65')]+=0x1;this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x6e')]+=0x1;_0x263d52[_0x2695('0xac')]=0xa;_0x263d52[_0x2695('0xad')]=_0x2695('0x119');_0x263d52[_0x2695('0x11a')]='TIMEOUT';_0x263d52['agiafterat']=this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x111')]?moment()[_0x2695('0x79')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x263d52[_0x2695('0x103')]+=0x1;_0x263d52[_0x2695('0x102')]+=0x1;_0x544f12=this[_0x2695('0x20')][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x11b')];_0x1eb4c9=this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x11c')];_0x329f84['verifyAdditionalPhones'](_0x263d52,_0x263d52[_0x2695('0xac')],_0x4eaf4d['voiceQueue'])['then'](function(_0x5823a3){_0xc9559f=_0x5823a3[_0x2695('0x11d')]==0x1;if(_0x263d52[_0x2695('0x103')]>=_0x329f84[_0x2695('0x20')][_0x47aa76[_0x2695('0xb8')]]['dialDropMaxRetry']){_0x329f84[_0x2695('0x115')](_0x263d52,_0x5823a3['additional']);}else{_0x329f84[_0x2695('0xc4')]({'active':![],'countdropretry':_0x263d52[_0x2695('0x103')],'scheduledat':moment()[_0x2695('0x106')](_0x329f84[_0x2695('0x20')][_0x47aa76['queue']][_0x2695('0x11b')],_0x2695('0xfb'))[_0x2695('0x79')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4eaf4d['ContactId'],'ListId':_0x4eaf4d[_0x2695('0xfd')],'VoiceQueueId':_0x4eaf4d[_0x2695('0xd7')]||undefined,'CampaignId':_0x4eaf4d[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x11e')));var _0x585156=new History(_0x263d52);_0x585156[_0x2695('0xac')]=0xa;_0x585156[_0x2695('0xad')]=_0x2695('0x119');_0x585156[_0x2695('0xaf')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));_0x585156['endtime']=_0x585156['starttime'];_0x585156[_0x2695('0x11f')]=_0x263d52[_0x2695('0x11f')];_0x585156[_0x2695('0x120')]=_0x263d52[_0x2695('0x120')];_0x329f84[_0x2695('0xcd')](_0x585156)['catch'](loggerCatch(_0x2695('0x121')));}})[_0x2695('0x40')](function(){if(_0xc9559f)_0x329f84[_0x2695('0xbf')](_0x263d52,_0x544f12,_0x1eb4c9)['then'](function(){return 0x1;});});}else{this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x2695('0x20')][_0x47aa76[_0x2695('0xb8')]]['outboundDropCallsDayCallersExit']+=0x1;_0x263d52[_0x2695('0xac')]=0xb;_0x263d52[_0x2695('0xad')]=_0x2695('0x122');_0x263d52['dropreason']=_0x2695('0x123');_0x263d52[_0x2695('0x104')]+=0x1;_0x263d52[_0x2695('0x102')]+=0x1;_0x544f12=this['voiceQueues'][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x124')];_0x1eb4c9=this[_0x2695('0x20')][_0x47aa76['queue']]['callAdditionalPhoneAfterMin'];_0x329f84[_0x2695('0xbe')](_0x263d52,_0x263d52[_0x2695('0xac')],_0x4eaf4d[_0x2695('0x125')])[_0x2695('0x40')](function(_0x5a3a47){if(_0x263d52['countabandonedretry']>=_0x329f84[_0x2695('0x20')][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x126')]){_0x329f84[_0x2695('0x115')](_0x263d52,_0x5a3a47[_0x2695('0x11d')]);}else{_0x329f84['rescheduleContact']({'active':![],'countabandonedretry':_0x263d52['countabandonedretry'],'scheduledat':moment()[_0x2695('0x106')](_0x329f84['voiceQueues'][_0x47aa76[_0x2695('0xb8')]][_0x2695('0x124')],_0x2695('0xfb'))['format'](_0x2695('0xfc')),'ContactId':_0x4eaf4d[_0x2695('0xd6')],'ListId':_0x4eaf4d[_0x2695('0xfd')],'VoiceQueueId':_0x4eaf4d[_0x2695('0xd7')]||undefined,'CampaignId':_0x4eaf4d[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x295108=new History(_0x263d52);_0x295108['state']=0xb;_0x295108['statedesc']=_0x2695('0x122');_0x295108[_0x2695('0xaf')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));_0x295108[_0x2695('0xae')]=_0x295108['starttime'];_0x295108[_0x2695('0x11f')]=_0x263d52[_0x2695('0x11f')];_0x295108['calleridnum']=_0x263d52[_0x2695('0x120')];_0x329f84[_0x2695('0xcd')](_0x295108)[_0x2695('0xb6')](loggerCatch(_0x2695('0x127')));}})['then'](function(){if(_0xc9559f)_0x329f84['swapAdditionalPhones'](_0x263d52,_0x544f12,_0x1eb4c9)['then'](function(){return 0x1;});});}}}};Dialer[_0x2695('0x1c')][_0x2695('0x38')]=function(_0x422d6d){if(this['actions'][_0x422d6d[_0x2695('0xe1')]]){this[_0x2695('0x25')][_0x422d6d['uniqueid']][_0x2695('0xb5')]=_0x422d6d[_0x2695('0xb5')];}if(this['uniqueId'][_0x422d6d[_0x2695('0xe1')]]){this['uniqueId'][_0x422d6d['uniqueid']]['channel']=_0x422d6d[_0x2695('0xb5')];}};Dialer[_0x2695('0x1c')][_0x2695('0x3b')]=function(_0x22e184){if(strategy[this['voiceQueues'][this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]]['queue']][_0x2695('0x129')]]===_0x2695('0x1b')){if(this[_0x2695('0x25')][_0x22e184['actionid']]&&_['isNil'](this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]][_0x2695('0x12a')])&&_0x22e184[_0x2695('0xb4')]==='1'&&_0x22e184['paused']==='0'){if(this[_0x2695('0x22')][_0x22e184['stateinterface']]){if(!this['agents'][_0x22e184[_0x2695('0x12b')]][_0x2695('0x12a')]){this[_0x2695('0x22')][_0x22e184[_0x2695('0x12b')]][_0x2695('0x12a')]=!![];this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]]['locked']=!![];this['actions'][_0x22e184[_0x2695('0x128')]]['stateinterface']=_0x22e184[_0x2695('0x12b')];}}}}else if((strategy[this[_0x2695('0x20')][this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]][_0x2695('0xb8')]][_0x2695('0x129')]]||_0x2695('0x1a'))===_0x2695('0x1a')){if(this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]]){if(this[_0x2695('0x22')][_0x22e184[_0x2695('0x12b')]]){this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]][_0x2695('0x12b')]=_0x22e184[_0x2695('0x12b')];if(_[_0x2695('0xb3')](this[_0x2695('0x2b')][this['actions'][_0x22e184[_0x2695('0x128')]][_0x2695('0xb8')]])){this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]][_0x2695('0xb8')]]=[];}this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x22e184[_0x2695('0x128')]][_0x2695('0xb8')]][_0x2695('0x12c')](_['merge'](_[_0x2695('0xd5')](this[_0x2695('0x25')][_0x22e184['actionid']],['idHopper',_0x2695('0x12b')]),{'status':_0x22e184[_0x2695('0xb4')],'paused':_0x22e184[_0x2695('0x12d')]}));}}}};function unlockQueueStatus(_0x34a959,_0x2649ee){setTimeout(function(){if(_[_0x2695('0x89')](_0x34a959[_0x2695('0x12e')])){loggerBooked[_0x2695('0x9a')](_0x2695('0x12f'),_0x2649ee);}_0x34a959[_0x2695('0x12e')]=!![];loggerBooked[_0x2695('0x7e')](_0x2695('0x130'),_0x2649ee,JSON[_0x2695('0x4c')](_[_0x2695('0xd5')](_0x34a959,['name',_0x2695('0x12e')])));},0x1f3);}Dialer[_0x2695('0x1c')]['syncQueueStatusComplete']=function(_0x2e46b9){var _0x4a1e41=this;var _0x478a90=_0x4a1e41[_0x2695('0x20')][_0x4a1e41[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]];if(strategy[this[_0x2695('0x20')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['queue']][_0x2695('0x129')]]===_0x2695('0x1b')){if(this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]&&this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['stateinterface']){this[_0x2695('0x1f')]['run'](this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0x131')],this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0x12b')])[_0x2695('0xb6')](function(_0x4b6685){logger[_0x2695('0x9a')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x2695('0x99')](_0x4b6685,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4a1e41[_0x2695('0xb7')](_0x4a1e41[_0x2695('0x20')][_0x4a1e41['actions'][_0x2e46b9['actionid']]['queue']]);_0x4a1e41['agents'][_0x4a1e41[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0x12b')]]['locked']=![];delete _0x4a1e41['actions'][_0x2e46b9[_0x2695('0x128')]];unlockQueueStatus(_0x478a90);});}else{this[_0x2695('0xb7')](this['voiceQueues'][this[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0xb8')]]);this[_0x2695('0xc4')]({'active':![],'ContactId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd6')],'ListId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['ListId'],'VoiceQueueId':this[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0xd7')]||undefined,'CampaignId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x132')));delete this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]];unlockQueueStatus(_0x478a90);}}else if((strategy[this[_0x2695('0x20')][this['actions'][_0x2e46b9['actionid']][_0x2695('0xb8')]][_0x2695('0x129')]]||_0x2695('0x1a'))===_0x2695('0x1a')){var _0x1a3d03;if(this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]&&!_[_0x2695('0x4a')](this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]])){if(this['queueBookedRR'][_0x4a1e41['actions'][_0x2e46b9['actionid']][_0x2695('0xb8')]]){this[_0x2695('0x2c')][_0x4a1e41[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]=this[_0x2695('0x2c')][this['actions'][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]?this[_0x2695('0x2c')][this[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0xb8')]]:this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]?this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['queue']][_0x2695('0x133')]||0x0:0x0;}this['queueBooked'][this['actions'][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]['_rr']=this['queueBookedRR'][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]];for(var _0x219564=0x0;_0x219564<this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]['length'];_0x219564+=0x1){_0x1a3d03=rr(this[_0x2695('0x2b')][this['actions'][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]);this[_0x2695('0x2c')][_0x4a1e41[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]=this[_0x2695('0x2b')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]][_0x2695('0x133')];if(_0x1a3d03[_0x2695('0xb4')]==='1'&&_0x1a3d03['paused']==='0'){break;}}if(!_[_0x2695('0xb3')](_0x1a3d03)){this[_0x2695('0x22')][_0x1a3d03['stateinterface']][_0x2695('0x134')]=_['isUndefined'](this[_0x2695('0x22')][_0x1a3d03[_0x2695('0x12b')]][_0x2695('0x134')])?!![]:this[_0x2695('0x22')][_0x1a3d03[_0x2695('0x12b')]][_0x2695('0x134')];}loggerBooked[_0x2695('0x7e')](_0x2695('0x135'),_0x2e46b9[_0x2695('0x128')],_0x2695('0x136'),JSON[_0x2695('0x4c')](_[_0x2695('0xd5')](this[_0x2695('0x22')][_0x1a3d03['stateinterface']],['name','unlockRR'])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x1a3d03[_0x2695('0x131')]));if(!_[_0x2695('0xb3')](_0x1a3d03)&&_0x1a3d03['status']==='1'&&_0x1a3d03[_0x2695('0x12d')]==='0'&&this[_0x2695('0x22')][_0x1a3d03[_0x2695('0x12b')]][_0x2695('0x134')]){this[_0x2695('0x22')][_0x1a3d03[_0x2695('0x12b')]]['unlockRR']=![];this[_0x2695('0x2b')][_0x4a1e41['actions'][_0x2e46b9['actionid']]['queue']]=[];this[_0x2695('0x1f')]['run'](_0x1a3d03[_0x2695('0x131')],_0x1a3d03[_0x2695('0x12b')])['catch'](function(_0x4f48ee){logger[_0x2695('0x9a')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x4f48ee,{'showHidden':![],'depth':null}));})[_0x2695('0x137')](function(){_0x4a1e41[_0x2695('0xb7')](_0x4a1e41[_0x2695('0x20')][_0x4a1e41[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['queue']]);setTimeout(function(){_0x4a1e41['agents'][_0x1a3d03[_0x2695('0x12b')]][_0x2695('0x134')]=!![];loggerBooked[_0x2695('0x7e')](_0x2695('0x138'),_0x2e46b9[_0x2695('0x128')],_0x2695('0x136'),JSON['stringify'](_[_0x2695('0xd5')](_0x4a1e41[_0x2695('0x22')][_0x1a3d03[_0x2695('0x12b')]],[_0x2695('0x43'),_0x2695('0x134')])),_0x2695('0x139'),JSON['stringify'](_0x1a3d03['idHopper']));},0xc7);delete _0x4a1e41[_0x2695('0x25')][_0x2e46b9['actionid']];unlockQueueStatus(_0x478a90,_0x2e46b9[_0x2695('0x128')]);});}else{loggerBooked[_0x2695('0x7e')]('[booked][unlock]');this[_0x2695('0xb7')](this[_0x2695('0x20')][this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xb8')]]);this[_0x2695('0xc4')]({'active':![],'ContactId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd6')],'ListId':this['actions'][_0x2e46b9[_0x2695('0x128')]]['ListId'],'VoiceQueueId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd7')]||undefined,'CampaignId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd8')]||undefined})['catch'](loggerCatch(_0x2695('0x132')));delete this[_0x2695('0x25')][_0x2e46b9['actionid']];unlockQueueStatus(_0x478a90);}}else{loggerBooked[_0x2695('0x7e')](_0x2695('0x13a'));this['updateOriginated'](this[_0x2695('0x20')][this[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0xb8')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd6')],'ListId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xfd')],'VoiceQueueId':this['actions'][_0x2e46b9['actionid']][_0x2695('0xd7')]||undefined,'CampaignId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]][_0x2695('0xd8')]||undefined})['catch'](loggerCatch(_0x2695('0x13b')));delete this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]];unlockQueueStatus(_0x478a90);}}else{loggerBooked['info'](_0x2695('0x13c'));this[_0x2695('0xb7')](this[_0x2695('0x20')][this['actions'][_0x2e46b9[_0x2695('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['ContactId'],'ListId':this['actions'][_0x2e46b9[_0x2695('0x128')]]['ListId'],'VoiceQueueId':this[_0x2695('0x25')][_0x2e46b9[_0x2695('0x128')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x2695('0x25')][_0x2e46b9['actionid']][_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x13d')));delete this['actions'][_0x2e46b9['actionid']];unlockQueueStatus(_0x478a90);}};Dialer[_0x2695('0x1c')][_0x2695('0x13e')]=function(){var _0x333937=this;return cmHopper[_0x2695('0x13f')]({'active':![]},{'where':{'active':!![]}})[_0x2695('0x40')](function(){setInterval(function(){_0x333937['syncCampaigns']();},0x3e8);});};Dialer[_0x2695('0x1c')][_0x2695('0x140')]=function(_0x7b7979){var _0xd8a813=this;return function(){if(!_0xd8a813['isTrunkReachable'](_0x7b7979[_0x2695('0x77')])){if(!_0xd8a813['isTrunkReachable'](_0x7b7979[_0x2695('0x141')])){_0x7b7979[_0x2695('0x42')]=_0x2695('0x142');throw _0x7b7979['name']+_0x2695('0x143');}}};};Dialer[_0x2695('0x1c')]['checkIfTime']=function(_0x47310e,_0x1bca87,_0x5e4cbd,_0x2ac286){var _0x3f4876=this;return function(){var _0x2451c5=!![];return _0x3f4876[_0x2695('0x144')](_0x47310e,_0x1bca87,_0x5e4cbd,_0x2ac286,_0x2451c5);};};Dialer['prototype'][_0x2695('0x145')]=function(_0x25888d,_0xb41cec,_0x26c67e,_0xea3a11){var _0x1502aa=this;return function(){var _0x2f5a99=![];return _0x1502aa[_0x2695('0x144')](_0x25888d[_0x2695('0x49')],_0xb41cec,_0x26c67e,_0xea3a11,_0x2f5a99);};};Dialer['prototype']['ifTime']=function(_0x57d116,_0x30bf0e,_0x4e1353,_0x1a3bbc,_0x24a865){var _0x3b2c7e=[];return new Promise(function(_0x2a074a,_0x135d40){if(!isNotNull(_0x57d116)){_0x1a3bbc[_0x2695('0x42')]='INTERVAL_IS_NULL';return _0x135d40(msgResponse('ifTime',_0x2695('0x146'),_0x4e1353+_0x2695('0x147')));}if(_[_0x2695('0x4a')](_0x57d116)){_0x1a3bbc['message']=_0x2695('0x148');return _0x135d40(msgResponse(_0x2695('0x144'),'Failure',_0x4e1353+'\x20Intervals\x20is\x20empty\x20'));}if(_0x30bf0e&&_[_0x2695('0x89')](config[_0x2695('0x149')][_0x30bf0e])){_0x1a3bbc[_0x2695('0x42')]=_0x2695('0x14a');return _0x135d40(msgResponse('ifTime',_0x2695('0x146'),_0x4e1353+'\x20Timezone\x20unknow\x20'+_0x30bf0e));}if(_[_0x2695('0x14b')](_0x57d116)){for(var _0x3ebd3f=0x0;_0x3ebd3f<_0x57d116['length'];_0x3ebd3f+=0x1){_0x3b2c7e['push'](ami[_0x2695('0x14c')]({'action':_0x2695('0x14d'),'command':util[_0x2695('0x79')](_0x2695('0x14e'),_0x57d116[_0x3ebd3f][_0x2695('0x14f')],!_[_0x2695('0x89')](config[_0x2695('0x149')][_0x30bf0e])?_0x30bf0e:'')})[_0x2695('0x40')](function(_0x262ece){return _0x262ece['content'][_0x2695('0x150')](_0x2695('0x151'))>=0x0;})['catch'](myreject(_0x135d40)));}}else{_0x3b2c7e[_0x2695('0x12c')](ami[_0x2695('0x14c')]({'action':_0x2695('0x14d'),'command':util[_0x2695('0x79')]('iftime\x20%s,%s',_0x57d116,!_[_0x2695('0x89')](config[_0x2695('0x149')][_0x30bf0e])?_0x30bf0e:'')})['then'](function(_0x33e5e1){return _0x33e5e1[_0x2695('0x152')][_0x2695('0x150')](_0x2695('0x151'))>=0x0;})[_0x2695('0xb6')](myreject(_0x135d40)));}Promise[_0x2695('0x153')](_0x3b2c7e)['then'](function(_0x4c70c2){var _0xdc74b1=_[_0x2695('0x154')](_0x4c70c2);if(_0xdc74b1){return _0x2a074a(_0xdc74b1);}else{_0x1a3bbc['message']=_0x24a865?_0x2695('0x155'):_0x2695('0x156');return _0x135d40(msgResponse(_0x2695('0x157'),_0x2695('0x146'),_0x2695('0x158')+_0x24a865+'\x20'+_0x4e1353+_0x2695('0x159')+util[_0x2695('0x99')](_0x57d116,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x30bf0e));}})[_0x2695('0xb6')](function(_0x129112){return _0x135d40(msgResponse('ifTime',_0x2695('0x146'),JSON[_0x2695('0x4c')](_0x129112)));});});};Dialer[_0x2695('0x1c')][_0x2695('0x15a')]=function(_0x2aca93){var _0x3ecc76=this;return function(){switch(_0x2aca93['dialMethod']){case _0x2695('0x15b'):freeVariablesPredictive(_0x2aca93);_0x3ecc76[_0x2695('0x15c')](_0x2aca93,0x1);break;case'power':freeVariablesPredictive(_0x2aca93);_0x3ecc76['handlePower'](_0x2aca93,_0x2aca93[_0x2695('0x15d')]);break;case _0x2695('0x7'):_0x3ecc76[_0x2695('0x7')](_0x2aca93);break;case _0x2695('0x15e'):freeVariablesPredictive(_0x2aca93);_0x3ecc76[_0x2695('0x15c')](_0x2aca93,0x1);break;default:freeVariablesPredictive(_0x2aca93);logger[_0x2695('0x9a')](_0x2695('0x15f'),_0x2aca93[_0x2695('0x43')],_0x2695('0x160'));}};};Dialer['prototype'][_0x2695('0x161')]=function(_0x425267){return Promise['resolve']()['then'](cmHopper[_0x2695('0x162')](_0x425267['id'],previewRecallmeReminderInterval))['then'](function(_0x12159e){for(var _0xe12b43=0x0;_0xe12b43<_0x12159e['length'];_0xe12b43++){var _0x27c2cc=_0x12159e[_0xe12b43][_0x2695('0x163')][_0x2695('0x43')];if(_0x27c2cc)io['to'](util[_0x2695('0x79')](_0x2695('0x164'),_0x27c2cc))[_0x2695('0x4f')](_0x2695('0x165'),{'hopper':_0x12159e[_0xe12b43]});}})[_0x2695('0xb6')](function(){});};Dialer[_0x2695('0x1c')][_0x2695('0x166')]=function(_0x3ed151){var _0x5cbc0e=this;return function(){_0x5cbc0e[_0x2695('0x167')](_0x3ed151);};};Dialer[_0x2695('0x1c')][_0x2695('0x9')]=function(_0x3abfb1){var _0x54e3ab=this;if(isNotPreview(_0x3abfb1[_0x2695('0x5c')])){if(isVoiceQueueOutbound(_0x3abfb1[_0x2695('0x50')])&&isActive(_0x3abfb1[_0x2695('0x5b')])){_0x3abfb1[_0x2695('0xa4')]=!![];Promise['resolve']()['then'](checkIsLoggedIn(_0x3abfb1,_0x3abfb1[_0x2695('0x168')]))[_0x2695('0x40')](checkIsActive(_0x3abfb1,_0x3abfb1[_0x2695('0x5b')]))['then'](checkInterval(_0x3abfb1))[_0x2695('0x40')](_0x54e3ab['checkIsTrunkReachable'](_0x3abfb1))['then'](_0x54e3ab['checkIfTime'](_0x3abfb1['dialGlobalInterval'],_0x3abfb1[_0x2695('0x169')],_0x3abfb1[_0x2695('0x43')],_0x3abfb1))[_0x2695('0x40')](_0x54e3ab[_0x2695('0x145')](_0x3abfb1[_0x2695('0x46')],_0x3abfb1[_0x2695('0x169')],_0x3abfb1[_0x2695('0x43')],_0x3abfb1))['then'](_0x54e3ab['checkDialMethod'](_0x3abfb1))['catch'](loggerCatchQueueSummary(_0x2695('0x16a'),_0x3abfb1));}else{notSendMessagesQueue(_0x3abfb1);}}else{freeVariablesPredictive(_0x3abfb1);}};Dialer[_0x2695('0x1c')][_0x2695('0x34')]=_['throttle'](function(){var _0x5c67fc=_['filter'](this[_0x2695('0x20')],function(_0x67dce9){return _0x67dce9[_0x2695('0x16b')];});var _0x11c4fb=_[_0x2695('0x16c')](this[_0x2695('0x22')],function(_0x356b1b){return _0x356b1b[_0x2695('0x16d')]&&_0x356b1b[_0x2695('0xb4')]==='reachable';});if(_0x5c67fc[_0x2695('0x9b')]>0x0&&_0x11c4fb[_0x2695('0x9b')]>0x0){return Promise[_0x2695('0xbd')]()[_0x2695('0x40')](cmHopper['handlePreviewRecallNotifications'](_[_0x2695('0x16e')](_0x5c67fc,'id'),previewRecallmeReminderInterval,_['map'](_0x11c4fb,'id')))[_0x2695('0x40')](function(_0x23141d){for(var _0x217954=0x0;_0x217954<_0x23141d[_0x2695('0x9b')];_0x217954++){var _0x4b57f1=_0x23141d[_0x217954][_0x2695('0x163')][_0x2695('0x43')];if(_0x4b57f1)io['to'](util[_0x2695('0x79')](_0x2695('0x164'),_0x4b57f1))['emit'](_0x2695('0x165'),{'hopper':_0x23141d[_0x217954]});}})[_0x2695('0xb6')](function(_0x104428){logger[_0x2695('0x9a')](_0x2695('0x161'),_0x104428);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x2695('0x1c')][_0x2695('0x16f')]=function(){var _0x355e10=this;var _0x5105dd;for(var _0x15384b in this['campaigns']){if(typeof this[_0x2695('0x21')][_0x15384b]!=='undefined'){_0x5105dd=this[_0x2695('0x21')][_0x15384b];if(isCampaignIvr(_0x5105dd[_0x2695('0x50')])&&isActive(_0x5105dd['active'])){_0x5105dd[_0x2695('0xa4')]=!![];Promise[_0x2695('0xbd')]()['then'](checkIsActive(_0x5105dd,_0x5105dd['active']))['then'](checkInterval(_0x5105dd))['then'](_0x355e10[_0x2695('0x140')](_0x5105dd))[_0x2695('0x40')](_0x355e10[_0x2695('0x170')](_0x5105dd[_0x2695('0x171')],_0x5105dd['dialTimezone'],_0x5105dd[_0x2695('0x43')],_0x5105dd))[_0x2695('0x40')](_0x355e10['checkIfTimeIntervals'](_0x5105dd[_0x2695('0x46')],_0x5105dd[_0x2695('0x169')],_0x5105dd[_0x2695('0x43')],_0x5105dd))[_0x2695('0x40')](_0x355e10[_0x2695('0x166')](_0x5105dd))['catch'](loggerCatchQueueSummary(_0x2695('0x172'),_0x5105dd));}else{notSendMessagesCampaign(_0x5105dd);}}}};function getCallerIdRandom(_0xf163a2,_0x3ade2c){var _0x5c8a85;var _0x55cd88;var _0x57bab7;if(_0x3ade2c<=0x0){_0x3ade2c=0x1;}_0x5c8a85=new RegExp(_0x2695('0x173')+_0x3ade2c+'}$');_0x55cd88=Math[_0x2695('0x174')](0xa,_0x3ade2c-0x1);_0x57bab7=Math[_0x2695('0x174')](0xa,_0x3ade2c)-0x1;return util['format']('%s',_['replace'](_0xf163a2,_0x5c8a85,_[_0x2695('0x175')](_0x55cd88,_0x57bab7)));}function extractCalleridName(_0x48c01b){var _0xa2a58d=_0x48c01b[_0x2695('0x176')](/"(.*?)"/);return _0xa2a58d?_0xa2a58d[0x1]:_0x48c01b;}Dialer['prototype'][_0x2695('0x177')]=function(_0x1ee005,_0x4b95bd){var _0x190955=this;var _0x1efb34=uuid['v4']();this['actions'][_0x1efb34]=new Action(_0x1ee005,_0x4b95bd,_0x1efb34);return new Promise(function(_0x4ee21d,_0x411aa8){if(_[_0x2695('0x89')](_0x1ee005)&&typeof _0x1ee005!==_0x2695('0x178')){return _0x411aa8(msgResponse(_0x2695('0x179'),_0x2695('0x146'),_0x2695('0x17a')));}if(_[_0x2695('0x89')](_0x4b95bd[_0x2695('0x17b')])||_0x4b95bd['phone']===null){return _0x411aa8(msgResponse('originate',_0x2695('0x146'),'contact\x20is\x20undefine'));}var _0x196d74={'XMD-CALLERID':_0x190955[_0x2695('0x25')][_0x1efb34]['getCaller'](),'XMD-AGI':_0x1ee005['dialQueueProject']?util['format'](_0x2695('0x17c'),ipAgi,_0x1ee005[_0x2695('0x10c')]):_0x2695('0x17d'),'XMD-AGIAFTER':_0x1ee005[_0x2695('0x111')]?util[_0x2695('0x79')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1ee005[_0x2695('0x111')]):_0x2695('0x17d'),'XMD-QUEUE':_0x1ee005[_0x2695('0x50')]===_0x2695('0x51')?util[_0x2695('0x79')]('\x22%s,%s%s,,,%s\x22',_0x1ee005[_0x2695('0x43')],_0x1ee005[_0x2695('0x17e')]||'',_0x1ee005['dialAgiAfterHangupAgent']?'c':'',_0x1ee005[_0x2695('0x17f')]||0x3):'NONE','XMD-CONTACTID':_0x4b95bd[_0x2695('0xd6')],'XMD-CDRTYPE':_0x2695('0x6'),'CALLERID(all)':_0x190955[_0x2695('0x25')][_0x1efb34][_0x2695('0x180')](),'XMD-AMD':_0x1ee005['dialAMDActive']?_0x2695('0x181'):_0x2695('0x17d'),'XMD-DESTINATION':_0x2695('0x182')};if(_0x1ee005[_0x2695('0xe4')]){_0x196d74[_0x2695('0x183')]=_0x1ee005[_0x2695('0x184')]||0x9c4;_0x196d74[_0x2695('0x185')]=_0x1ee005[_0x2695('0x186')]||0x5dc;_0x196d74[_0x2695('0x187')]=_0x1ee005[_0x2695('0x188')]||0x320;_0x196d74[_0x2695('0x189')]=_0x1ee005['dialAMDTotalAnalysisTime']||0x1388;_0x196d74['XMD-AMDMINWORDLENGTH']=_0x1ee005['dialAMDMinWordLength']||0x64;_0x196d74[_0x2695('0x18a')]=_0x1ee005[_0x2695('0x18b')]||0x32;_0x196d74['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x1ee005[_0x2695('0x18c')]||0x3;_0x196d74['XMD-AMDSILENCETHRESHOLD']=_0x1ee005['dialAMDSilenceThreshold']||0x100;_0x196d74[_0x2695('0x18d')]=_0x1ee005[_0x2695('0x18e')]||0x1388;}if(_0x1ee005[_0x2695('0x50')]===_0x2695('0x51')){_0x196d74[_0x2695('0x18f')]=_0x4b95bd[_0x2695('0xd7')];}else{_0x196d74['XMD-CAMPAIGNID']=_0x4b95bd['CampaignId'];}for(var _0x3d775a in _0x4b95bd[_0x2695('0x190')]){if(typeof _0x4b95bd[_0x2695('0x190')][_0x3d775a]!==_0x2695('0x9c')){if(isNotNull(_0x4b95bd['Contact'][_0x3d775a])&&_0x3d775a!=='id'&&_0x3d775a!=='tags'&&_0x3d775a!==_0x2695('0x191')&&_0x3d775a!==_0x2695('0x192')){_0x196d74[util[_0x2695('0x79')]('%s%s',_0x2695('0x193'),_['toUpper'](_0x3d775a))]=_0x4b95bd['Contact'][_0x3d775a];}}}var _0x4bdf59=_0x190955[_0x2695('0xdd')](_0x1ee005[_0x2695('0x77')])?getCallerId(_0x1ee005[_0x2695('0x77')][_0x2695('0x194')],_0x1ee005[_0x2695('0x5d')],_0x1ee005['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x1ee005[_0x2695('0x195')],_0x1ee005[_0x2695('0x196')]):_0x1ee005[_0x2695('0x195')]):getCallerId(_[_0x2695('0xb3')](_0x1ee005['TrunkBackup'])?_0x1ee005['Trunk'][_0x2695('0x194')]:_0x1ee005['TrunkBackup'][_0x2695('0x194')],_0x1ee005[_0x2695('0x5d')],_0x1ee005[_0x2695('0x196')]>0x0?getCallerIdRandom(_0x1ee005[_0x2695('0x195')],_0x1ee005['dialRandomLastDigitCallerIdNumber']):_0x1ee005[_0x2695('0x195')]);if(_0x4bdf59){_0x196d74[_0x2695('0x197')]=_0x190955[_0x2695('0x25')][_0x1efb34][_0x2695('0x198')]=extractCalleridName(_0x4bdf59);_0x196d74['XMD-ORIGINATECALLERIDNUM']=_0x4b95bd[_0x2695('0x17b')];}_0x1ee005[_0x2695('0x199')]=_0x196d74;return ami[_0x2695('0x14c')]({'actionid':_0x1efb34,'action':'originate','channel':_0x190955['isTrunkReachable'](_0x1ee005[_0x2695('0x77')])?util[_0x2695('0x79')](_0x2695('0x19a'),_0x1ee005[_0x2695('0x77')][_0x2695('0x43')],isNotNull(_0x1ee005[_0x2695('0x5f')])?_0x1ee005[_0x2695('0x5f')][_0x2695('0x19b')]()||'':'',_0x1ee005[_0x2695('0x19c')]>0x0?_0x4b95bd[_0x2695('0x17b')][_0x2695('0x19d')](_0x1ee005[_0x2695('0x19c')]):_0x4b95bd['phone']):util[_0x2695('0x79')](_0x2695('0x19a'),_[_0x2695('0xb3')](_0x1ee005['TrunkBackup'])?_0x1ee005[_0x2695('0x77')][_0x2695('0x43')]:_0x1ee005[_0x2695('0x141')][_0x2695('0x43')],isNotNull(_0x1ee005[_0x2695('0x5f')])?_0x1ee005[_0x2695('0x5f')][_0x2695('0x19b')]()||'':'',_0x1ee005[_0x2695('0x19c')]>0x0?_0x4b95bd['phone'][_0x2695('0x19d')](_0x1ee005[_0x2695('0x19c')]):_0x4b95bd['phone']),'callerid':_0x4bdf59,'Exten':_0x2695('0x182'),'Context':_0x2695('0x19e'),'Priority':'1','variable':_0x196d74,'timeout':(_0x1ee005[_0x2695('0x5e')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1efb34})['then'](function(_0x4010fa){return _0x4ee21d(_0x4010fa);})['catch'](function(_0x4a39d0){_0x1ee005[_0x2695('0x67')]+=0x1;var _0x4bb29f=new History(_0x190955[_0x2695('0x25')][_0x1efb34]);logger[_0x2695('0x9a')](util['format'](_0x2695('0x19f'),JSON[_0x2695('0x4c')](_0x4a39d0)));_0x4bb29f[_0x2695('0xac')]=0xe;_0x4bb29f[_0x2695('0xad')]='OriginateError';_0x4bb29f[_0x2695('0xaf')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));_0x4bb29f[_0x2695('0xae')]=_0x4bb29f['starttime'];_0x190955[_0x2695('0xcd')](_0x4bb29f)[_0x2695('0xb6')](loggerCatch('[originate][error]'));_0x190955[_0x2695('0xcb')](_0x4bb29f)['catch'](loggerCatch(_0x2695('0x1a0')))['finally'](function(){delete _0x190955[_0x2695('0x25')][_0x1efb34];return _0x411aa8(msgResponse('originate',_0x2695('0x1a1'),_0x2695('0x1a2')));});});});};Dialer['prototype'][_0x2695('0x30')]=function(_0xae7231){var _0x4425a7=this[_0x2695('0x25')][_0xae7231['actionid']];if(_0x4425a7){delete this[_0x2695('0x25')][_0xae7231['actionid']];_0x4425a7[_0x2695('0x118')]=moment()['format'](_0x2695('0xfc'));var _0x167acb=_0x4425a7[_0x2695('0x50')]===_0x2695('0x7c')?this['campaigns'][_0x4425a7[_0x2695('0xb8')]]:this[_0x2695('0x20')][_0x4425a7[_0x2695('0x1a3')]()];if(!this[_0x2695('0xdb')](_0xae7231[_0x2695('0x1a4')])){this[_0x2695('0xb7')](_0x167acb);return this[_0x2695('0x1a5')](_0x4425a7,_0x167acb,_0xae7231)[_0x2695('0xb6')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x2695('0x27')][_0xae7231[_0x2695('0xe1')]]=_0x4425a7;}};Dialer[_0x2695('0x1c')][_0x2695('0x1a6')]=function(_0x3c2665,_0x26d05b,_0x2f2e31){var _0x5b63c2=new History(_0x26d05b);if(_0x5b63c2['countbusyretry']+_0x5b63c2['countcongestionretry']+_0x5b63c2['countnoanswerretry']+_0x5b63c2[_0x2695('0xf3')]+_0x5b63c2[_0x2695('0x103')]+_0x5b63c2[_0x2695('0x104')]+_0x5b63c2[_0x2695('0xf4')]+_0x5b63c2[_0x2695('0xf5')]>=_0x2f2e31[_0x2695('0xf6')]-0x1){return!![];}switch(_0x3c2665){case 0x3:if(_0x5b63c2[_0x2695('0xf2')]>=_0x2f2e31[_0x2695('0x1a7')]-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countnoanswerretry':_0x5b63c2['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31[_0x2695('0x1a8')],'minutes')[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2['ContactId'],'ListId':_0x5b63c2['ListId'],'VoiceQueueId':_0x5b63c2['VoiceQueueId']||undefined,'CampaignId':_0x5b63c2[_0x2695('0xd8')]||undefined})['catch'](loggerCatch(_0x2695('0x1a9')));break;case 0x5:if(_0x5b63c2['countbusyretry']>=_0x2f2e31[_0x2695('0x1aa')]-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countbusyretry':_0x5b63c2[_0x2695('0x1ab')]+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31[_0x2695('0x1ac')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2['CampaignId']||undefined})[_0x2695('0xb6')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x5b63c2[_0x2695('0xf1')]>=_0x2f2e31['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x5b63c2[_0x2695('0xf1')]+=0x1,'scheduledat':moment()['add'](_0x2f2e31[_0x2695('0x1ad')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2['VoiceQueueId']||undefined,'CampaignId':_0x5b63c2['CampaignId']||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1ae')));break;case 0x0:if(_0x5b63c2[_0x2695('0xf3')]>=_0x2f2e31[_0x2695('0x1af')]-0x1){return!![];}else{this[_0x2695('0xc4')]({'active':![],'countnosuchnumberretry':_0x5b63c2[_0x2695('0xf3')]+=0x1,'scheduledat':moment()['add'](_0x2f2e31[_0x2695('0x1b0')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2['CampaignId']||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1b1')));}break;case 0xa:if(_0x5b63c2[_0x2695('0x103')]>=_0x2f2e31[_0x2695('0x1b2')]-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countdropretry':_0x5b63c2['countdropretry']+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31[_0x2695('0x11b')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2[_0x2695('0xd8')]||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x5b63c2['countabandonedretry']>=_0x2f2e31['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countabandonedretry':_0x5b63c2['countabandonedretry']+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31[_0x2695('0x124')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2['CampaignId']||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1b3')));break;case 0x13:if(_0x5b63c2[_0x2695('0xf4')]>=_0x2f2e31['dialMachineMaxRetry']-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countmachineretry':_0x5b63c2[_0x2695('0xf4')]+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31[_0x2695('0x107')],_0x2695('0xfb'))[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2[_0x2695('0xd6')],'ListId':_0x5b63c2['ListId'],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x5b63c2[_0x2695('0xf5')]>=_0x2f2e31[_0x2695('0x1b4')]-0x1){return!![];}this[_0x2695('0xc4')]({'active':![],'countagentrejectretry':_0x5b63c2[_0x2695('0xf5')]+=0x1,'scheduledat':moment()[_0x2695('0x106')](_0x2f2e31['dialAgentRejectRetryFrequency'],'minutes')[_0x2695('0x79')](_0x2695('0xfc')),'ContactId':_0x5b63c2['ContactId'],'ListId':_0x5b63c2[_0x2695('0xfd')],'VoiceQueueId':_0x5b63c2[_0x2695('0xd7')]||undefined,'CampaignId':_0x5b63c2[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1b5')));break;default:return!![];}};Dialer[_0x2695('0x1c')][_0x2695('0x1a5')]=function(_0x884fe3,_0x1d88d0,_0x59aa52){var _0x39d297=this;var _0x4b518e=new History(_0x884fe3);var _0x417ed9=![];var _0x552faa;var _0x4a27bf;return new Promise(function(_0x346ecd,_0x37c712){if(_[_0x2695('0x89')](_0x1d88d0)&&typeof _0x1d88d0!==_0x2695('0x178')){return _0x37c712(msgResponse(_0x2695('0x1b6'),'Failure',_0x2695('0x1b7')));}if(_[_0x2695('0x89')](_0x59aa52)&&typeof _0x59aa52!==_0x2695('0x178')){return _0x37c712(msgResponse(_0x2695('0x1b6'),_0x2695('0x146'),_0x2695('0x1b8')));}_0x39d297[_0x2695('0xbe')](_0x4b518e,_0x59aa52[_0x2695('0x10e')],_0x1d88d0)[_0x2695('0x40')](function(_0x3c487d){if(_0x3c487d[_0x2695('0x11d')]==0x1)_0x417ed9=!![];switch(_0x59aa52['reason']){case'0':_0x1d88d0[_0x2695('0x66')]+=0x1;_0x4b518e['state']=0x0;_0x4b518e[_0x2695('0xad')]='NoSuchNumber';_0x4b518e[_0x2695('0xf3')]+=0x1;_0x4b518e['countglobal']+=0x1;ami['emit'](_0x2695('0x1b9'),ut[_0x2695('0xeb')](_0x884fe3,_0x2695('0x1ba')));_0x552faa=_0x1d88d0[_0x2695('0x1b0')];_0x4a27bf=_0x1d88d0[_0x2695('0x11c')];_0x39d297[_0x2695('0xcd')](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0xf0')));if(_0x39d297['checkRetriveMax'](0x0,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0xf3')]>=_0x1d88d0['dialNoSuchNumberMaxRetry']){_0x39d297['createStateFinal'](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1bb'));}else{_0x39d297['stateGlobal'](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1bb'));}}break;case'3':_0x1d88d0[_0x2695('0x1bc')]+=0x1;_0x4b518e['state']=0x3;_0x4b518e['statedesc']='NoAnswer';_0x4b518e[_0x2695('0xf2')]+=0x1;_0x4b518e[_0x2695('0x102')]+=0x1;var _0x517b4d=ut['buildNoAnswerEventPayload'](_0x884fe3,_0x1d88d0);ami[_0x2695('0x4f')]('custom:agentnoanswer',_0x517b4d);_0x552faa=_0x1d88d0[_0x2695('0x1a8')];_0x4a27bf=_0x1d88d0[_0x2695('0x11c')];_0x39d297[_0x2695('0xcd')](_0x4b518e)[_0x2695('0xb6')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x39d297[_0x2695('0x1a6')](0x3,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0xf2')]>=_0x1d88d0['dialNoAnswerMaxRetry']){_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1bd'));}else{_0x39d297[_0x2695('0xf7')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1bd'));}}break;case'5':_0x1d88d0[_0x2695('0x1be')]+=0x1;_0x4b518e[_0x2695('0xac')]=0x5;_0x4b518e[_0x2695('0xad')]=_0x2695('0x1bf');_0x4b518e['countbusyretry']+=0x1;_0x4b518e['countglobal']+=0x1;ami[_0x2695('0x4f')](_0x2695('0x1c0'),ut[_0x2695('0xeb')](_0x884fe3,'busy'));_0x552faa=_0x1d88d0['dialBusyRetryFrequency'];_0x4a27bf=_0x1d88d0['callAdditionalPhoneAfterMin'];_0x39d297['createHistory'](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0x1c1')));if(_0x39d297[_0x2695('0x1a6')](0x5,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0x1ab')]>=_0x1d88d0[_0x2695('0x1aa')]){_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1c2'));}else{_0x39d297[_0x2695('0xf7')](_0x4b518e,_0x346ecd,_0x37c712,'reason\x205\x20busy');}}break;case'8':_0x1d88d0[_0x2695('0x1c3')]+=0x1;_0x4b518e[_0x2695('0xac')]=0x8;_0x4b518e[_0x2695('0xad')]=_0x2695('0x1c4');_0x4b518e[_0x2695('0xf1')]+=0x1;_0x4b518e[_0x2695('0x102')]+=0x1;_0x552faa=_0x1d88d0['dialCongestionRetryFrequency'];_0x4a27bf=_0x1d88d0[_0x2695('0x11c')];ami[_0x2695('0x4f')](_0x2695('0x1c5'),ut[_0x2695('0xeb')](_0x884fe3,_0x2695('0x1c6')));_0x39d297[_0x2695('0xcd')](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0x1c7')));if(_0x39d297[_0x2695('0x1a6')](0x8,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0xf1')]>=_0x1d88d0[_0x2695('0x1c8')]){_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1c9'));}else{_0x39d297[_0x2695('0xf7')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1c9'));}}break;case'11':_0x1d88d0[_0x2695('0x1ca')]+=0x1;_0x4b518e[_0x2695('0xac')]=0xb;_0x4b518e[_0x2695('0xad')]=_0x2695('0x122');_0x4b518e[_0x2695('0x104')]+=0x1;_0x4b518e[_0x2695('0x102')]+=0x1;_0x552faa=_0x1d88d0[_0x2695('0x124')];_0x4a27bf=_0x1d88d0[_0x2695('0x11c')];_0x39d297[_0x2695('0xcd')](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0x127')));if(_0x39d297[_0x2695('0x1a6')](0xb,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0x104')]>=_0x1d88d0[_0x2695('0x126')]){_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1cb'));}else{_0x39d297['stateGlobal'](_0x4b518e,_0x346ecd,_0x37c712,'reason\x2011\x20abandoned');}}break;case'20':_0x1d88d0[_0x2695('0x69')]+=0x1;_0x4b518e['state']=0x14;_0x4b518e[_0x2695('0xad')]='AgentReject';_0x4b518e[_0x2695('0xf5')]+=0x1;_0x4b518e['countglobal']+=0x1;_0x552faa=_0x1d88d0[_0x2695('0x1cc')];_0x4a27bf=_0x1d88d0['callAdditionalPhoneAfterMin'];ami[_0x2695('0x4f')]('custom:agentreject',ut['buildObj'](_0x884fe3,_0x2695('0x1cd')));_0x39d297['createHistory'](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0x1ce')));if(_0x39d297[_0x2695('0x1a6')](0x14,_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0xf5')]>=_0x1d88d0[_0x2695('0x1b4')]){_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1cf'));}else{_0x39d297['stateGlobal'](_0x4b518e,_0x346ecd,_0x37c712,_0x2695('0x1cf'));}}break;default:_0x1d88d0[_0x2695('0x6a')]+=0x1;_0x4b518e[_0x2695('0xac')]=0xc;_0x4b518e[_0x2695('0xad')]=_0x59aa52[_0x2695('0x10e')];_0x552faa=_0x1d88d0[_0x2695('0x1cc')];_0x4a27bf=_0x1d88d0['callAdditionalPhoneAfterMin'];_0x39d297['createHistory'](_0x4b518e)[_0x2695('0xb6')](loggerCatch(_0x2695('0x1d0')));if(_0x39d297[_0x2695('0x1a6')](_0x59aa52[_0x2695('0x10e')],_0x884fe3,_0x1d88d0)&&!_0x417ed9){if(_0x4b518e[_0x2695('0x1ab')]+_0x4b518e[_0x2695('0xf1')]+_0x4b518e[_0x2695('0xf2')]+_0x4b518e[_0x2695('0xf3')]+_0x4b518e[_0x2695('0x103')]+_0x4b518e['countabandonedretry']+_0x4b518e[_0x2695('0xf4')]+_0x4b518e['countagentrejectretry']>=_0x1d88d0[_0x2695('0xf6')]){_0x39d297['stateGlobal'](_0x4b518e,_0x346ecd,_0x37c712,_0x59aa52[_0x2695('0x10e')]);}else{_0x39d297[_0x2695('0xf9')](_0x4b518e,_0x346ecd,_0x37c712,_0x59aa52['reason']);}}}})[_0x2695('0x40')](function(){if(_0x417ed9){_0x39d297[_0x2695('0xbf')](_0x4b518e,_0x552faa,_0x4a27bf)[_0x2695('0x40')](function(){return _0x346ecd(0x1);});}});});};Dialer[_0x2695('0x1c')][_0x2695('0xf7')]=function(_0x2121df,_0x509bcc,_0x214196,_0x5a7070){var _0x43a608=new Final(_0x2121df);_0x43a608[_0x2695('0xac')]=0xf;_0x43a608[_0x2695('0xad')]='Global';this[_0x2695('0xf9')](_0x43a608,_0x509bcc,_0x214196,_0x5a7070);};Dialer[_0x2695('0x1c')]['createStateFinal']=function(_0x5eb14d,_0x2d2b47,_0x316626,_0x48a15d){this['moveContactManagedDialer'](_0x5eb14d)[_0x2695('0x40')](function(){return _0x2d2b47(msgResponse(_0x2695('0x1b6'),'Success',_0x48a15d));})[_0x2695('0xb6')](function(){return _0x316626(msgResponse(_0x2695('0x1d1'),_0x2695('0x146'),_0x2695('0x1d2')));});};Dialer[_0x2695('0x1c')]['predictive']=function(_0x11ec7e){var _0x7ad8e1=_0x11ec7e[_0x2695('0x1d3')]/0x64;var _0x18c415=_0x11ec7e[_0x2695('0x65')]/(_0x11ec7e['outboundDropCallsDayTimeout']+_0x11ec7e[_0x2695('0x61')]);var _0xce9b35=Math[_0x2695('0x1d4')](_0x11ec7e[_0x2695('0x1d5')]*(_0x11ec7e[_0x2695('0x1d6')]/0x64));var _0x23c7a0=Math['round'](_0x11ec7e[_0x2695('0x1d5')]*(_0x11ec7e[_0x2695('0x1d7')]/0x64));var _0x43a976=_0x11ec7e[_0x2695('0x53')]+_0x11ec7e[_0x2695('0xa5')];var _0x4c153c=Math['floor'](_0x11ec7e[_0x2695('0x73')]*_0x11ec7e[_0x2695('0x75')]*_0x11ec7e[_0x2695('0x1d8')]*_0x11ec7e[_0x2695('0x6f')]);if(_['isUndefined'](_0x11ec7e[_0x2695('0x76')])){if(!_[_0x2695('0x89')](_0x11ec7e[_0x2695('0x29')])){_0x11ec7e[_0x2695('0x29')]=undefined;loggerPredictive['error'](_0x2695('0x1d9'),_0x2695('0x1da'));}if(!_[_0x2695('0x89')](_0x11ec7e[_0x2695('0x93')])){loggerPredictive[_0x2695('0x9a')](_0x2695('0x1d9'),_0x2695('0x1db'));clearInterval(_0x11ec7e['handlePredictive']);_0x11ec7e[_0x2695('0x93')]=undefined;}_0x11ec7e[_0x2695('0x76')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));loggerPredictive[_0x2695('0x7e')](_0x11ec7e[_0x2695('0x43')],'collection\x20data\x20in\x20progressive\x20at',_0x11ec7e[_0x2695('0x76')]);this['handlePower'](_0x11ec7e,0x1);}else if(ifInterval(_0x11ec7e[_0x2695('0x1dc')],_0x11ec7e[_0x2695('0x76')])){this[_0x2695('0x15c')](_0x11ec7e,0x1);loggerPredictiveCalls[_0x2695('0x7e')](_0x2695('0x1dd'),_0x11ec7e[_0x2695('0x76')],_0x11ec7e[_0x2695('0x43')]);_0x11ec7e[_0x2695('0x73')]=0x0;_0x11ec7e[_0x2695('0x6e')]=0x0;}else if(_0x7ad8e1<_0x18c415&&_0x11ec7e[_0x2695('0x1de')]==='dropRate'){freeVariablesPredictive(_0x11ec7e);loggerPredictive[_0x2695('0x7e')](_0x2695('0x1df'),_0x2695('0x1e0'),_0x18c415,'startProgressive',_0x11ec7e[_0x2695('0x43')]);}else if(_0x4c153c<_0x11ec7e['predictiveIntervalErlangCallsDroppedCalls']&&_0x11ec7e[_0x2695('0x1de')]==='dropRate'){freeVariablesPredictive(_0x11ec7e);loggerPredictive['info'](_0x2695('0x1e1'),'Max\x20Drop\x20',_0x4c153c,_0x2695('0x1e2'),_0x11ec7e[_0x2695('0x6e')],_0x2695('0x76'),_0x11ec7e[_0x2695('0x43')]);}else if(!ifInterval(_0x11ec7e[_0x2695('0x1dc')],_0x11ec7e[_0x2695('0x76')])&&_['isUndefined'](_0x11ec7e['startPredictive'])&&!_[_0x2695('0x89')](_0x11ec7e[_0x2695('0x76')])){_0x11ec7e['startPredictive']=moment()[_0x2695('0x79')](_0x2695('0xfc'));loggerPredictive['info'](_0x11ec7e[_0x2695('0x43')],_0x2695('0x1e3'),_0x11ec7e[_0x2695('0x29')]);this[_0x2695('0x1e4')](_0x11ec7e[_0x2695('0x1dc')])[_0x2695('0x40')](this[_0x2695('0x1e5')](_0x11ec7e))[_0x2695('0x40')](mergeDataErlangB(_0x11ec7e))[_0x2695('0x40')](this['startMethodPredictive'](_0x11ec7e))['catch'](loggerCatchPredictive(_0x2695('0x1e6'),_0x11ec7e));}else if(!ifInterval(_0x11ec7e['dialPredictiveInterval'],_0x11ec7e[_0x2695('0x29')])){_0x11ec7e[_0x2695('0x6e')]=0x0;_0x11ec7e[_0x2695('0x29')]=moment()[_0x2695('0x79')](_0x2695('0xfc'));loggerPredictive[_0x2695('0x7e')](_0x11ec7e[_0x2695('0x43')],_0x2695('0x1e7'),_0x11ec7e['startPredictive']);clearInterval(_0x11ec7e[_0x2695('0x93')]);_0x11ec7e['handlePredictive']=undefined;this['averageHandleTime'](_0x11ec7e[_0x2695('0x1dc')])[_0x2695('0x40')](this[_0x2695('0x1e5')](_0x11ec7e))['then'](mergeDataErlangB(_0x11ec7e))[_0x2695('0x40')](this['startMethodPredictive'](_0x11ec7e))['catch'](loggerCatchPredictive(_0x2695('0x1e8'),_0x11ec7e));}else if(_0x11ec7e[_0x2695('0x1d5')]&&_0x43a976<_0x11ec7e[_0x2695('0x1d5')]-_0x23c7a0){freeVariablesPredictive(_0x11ec7e);loggerPredictive['info'](_0x11ec7e[_0x2695('0x43')],_0x2695('0x1e9'),_0x43a976,_0x2695('0x1ea'),_0x11ec7e[_0x2695('0x1d5')],'-',_0x23c7a0,'=',_0x11ec7e['predictiveIntervalAvailable']-_0x23c7a0,')');}else if(_0x11ec7e['predictiveIntervalAvailable']&&_0x43a976>_0x11ec7e[_0x2695('0x1d5')]+_0xce9b35){freeVariablesPredictive(_0x11ec7e);loggerPredictive[_0x2695('0x7e')](_0x11ec7e['name'],_0x2695('0x1e9'),_0x43a976,_0x2695('0x1eb'),_0x11ec7e[_0x2695('0x1d5')],'+',_0xce9b35,'=',_0x11ec7e[_0x2695('0x1d5')]+_0xce9b35,')');}};Dialer['prototype']['getDataPredictive']=function(_0x2a0eb7){var _0x4ecc46=this;return function(_0x56da0d){return new Promise(function(_0x2e2a89,_0x15e84a){_[_0x2695('0x8f')](_0x2a0eb7,_0x56da0d[0x0]);if(checkGetDataPredictive(_0x56da0d[0x0])){var _0x33e61e=_0x2a0eb7[_0x2695('0x1d5')]=_0x2a0eb7['talking']+_0x2a0eb7[_0x2695('0x53')];var _0x535e3d=_0x2a0eb7[_0x2695('0x1dc')]*0x3c;var _0x4c1d65=_0x56da0d[0x0][_0x2695('0x6b')]+_0x56da0d[0x0][_0x2695('0x85')];var _0x524f11=(_0x56da0d[0x0][_0x2695('0x82')]+_0x56da0d[0x0][_0x2695('0x6c')]+_0x56da0d[0x0][_0x2695('0x83')])/_0x56da0d[0x0][_0x2695('0x71')];_0x2a0eb7['predictiveIntervalHitRate']=_0x524f11>0x0?_0x524f11:0x1;switch(_0x2a0eb7[_0x2695('0x1de')]){case'dropRate':var _0x317a67=_0x2a0eb7[_0x2695('0x1d3')]/0x64;return _0x4ecc46[_0x2695('0x1ec')](_0x33e61e,_0x535e3d,_0x4c1d65,_0x524f11,_0x317a67)['then'](function(_0x1a6b6f){return _0x2e2a89(_0x1a6b6f);});case _0x2695('0x1ed'):var _0xdff88=_0x2a0eb7[_0x2695('0x1d3')]/0x64;return _0x4ecc46[_0x2695('0x1ee')](_0x33e61e,_0x535e3d,_0x4c1d65,_0x524f11,_0xdff88)[_0x2695('0x40')](function(_0x424907){return _0x2e2a89(_0x424907);});default:return _0x15e84a(msgResponse(_0x2695('0x1ef'),_0x2695('0x146'),_0x2695('0x1f0')));}}else{return _0x15e84a(msgResponse('[getDataPredictive]',_0x2695('0x146'),'check\x20failure'));}});};};Dialer[_0x2695('0x1c')][_0x2695('0x1f1')]=function(_0x3f7066){var _0x3a96a3=this;return function(_0x27b8e8){return new Promise(function(_0x3f30aa,_0x17dbd5){_[_0x2695('0x8f')](_0x3f7066,_0x27b8e8[0x0]);if(checkGetDataPredictive(_0x27b8e8[0x0])){loggerPredictive['info'](JSON[_0x2695('0x4c')](_0x27b8e8[0x0]));if(_0x3f7066[_0x2695('0x1de')]==='dropRate'){return _0x3a96a3[_0x2695('0xc9')](_0x3f7066['id'])[_0x2695('0x40')](function(_0x79990c){var _0x5c6056=_0x3f7066[_0x2695('0x168')]-_0x79990c[0x0]['outboundQueuePauses'];var _0x2ad76d=_0x3f7066['dialPredictiveInterval']*0x3c;var _0x3b07dd=_0x27b8e8[0x0][_0x2695('0x6b')]+_0x27b8e8[0x0]['predictiveIntervalAvgHoldtime'];var _0x11878b=(_0x27b8e8[0x0][_0x2695('0x82')]+_0x27b8e8[0x0][_0x2695('0x6c')]+_0x27b8e8[0x0][_0x2695('0x83')])/_0x27b8e8[0x0][_0x2695('0x71')];var _0x30d382=_0x3f7066[_0x2695('0x1d3')]/0x64;_0x3f7066[_0x2695('0x70')]=_0x79990c[0x0][_0x2695('0x1f2')]||0x0;_0x3f7066['predictiveIntervalHitRate']=_0x11878b>0x0?_0x11878b:0x1;return _0x3a96a3['abandonmentRate'](_0x5c6056,_0x2ad76d,_0x3b07dd,_0x11878b,_0x30d382);})[_0x2695('0x40')](function(_0x4b17d4){return _0x3f30aa(_0x4b17d4);})[_0x2695('0xb6')](function(_0xd9ac1e){return _0x17dbd5(msgResponse(_0x2695('0x1f3'),'Failure',JSON[_0x2695('0x4c')](_0xd9ac1e)));});}if(_0x3f7066[_0x2695('0x1de')]===_0x2695('0x1ed')){return _0x3a96a3[_0x2695('0xc9')](_0x3f7066['id'])[_0x2695('0x40')](function(_0x263ebb){var _0x4cc263=_0x3f7066[_0x2695('0x168')]-_0x263ebb[0x0][_0x2695('0x1f2')];var _0x3e40ba=_0x3f7066[_0x2695('0x1dc')]*0x3c;var _0x35dcca=_0x27b8e8[0x0][_0x2695('0x6b')]+_0x27b8e8[0x0][_0x2695('0x85')];var _0x3a93b6=(_0x27b8e8[0x0][_0x2695('0x82')]+_0x27b8e8[0x0][_0x2695('0x6c')]+_0x27b8e8[0x0][_0x2695('0x83')])/_0x27b8e8[0x0][_0x2695('0x71')];var _0x3cd75d=_0x3f7066[_0x2695('0x1d3')]/0x64;_0x3f7066[_0x2695('0x70')]=_0x263ebb[0x0][_0x2695('0x1f2')]||0x0;_0x3f7066[_0x2695('0x1d8')]=_0x3a93b6>0x0?_0x3a93b6:0x1;return _0x3a96a3[_0x2695('0x1ee')](_0x4cc263,_0x3e40ba,_0x35dcca,_0x3a93b6,_0x3cd75d);})[_0x2695('0x40')](function(_0x1dff79){return _0x3f30aa(_0x1dff79);})[_0x2695('0xb6')](function(_0x3f7b8f){return _0x17dbd5(msgResponse(_0x2695('0x1f3'),'Failure',JSON[_0x2695('0x4c')](_0x3f7b8f)));});}}else{return _0x17dbd5(msgResponse(_0x2695('0x1ef'),'Failure','check\x20failure'));}});};};Dialer[_0x2695('0x1c')][_0x2695('0x1f4')]=function(_0x3c3faf){var _0x7dbc6a=this;return function(){var _0x474181=0x0;var _0x232a6d=Math[_0x2695('0x1f5')](_0x3c3faf[_0x2695('0x74')]*0x3e8);if(_0x232a6d>0x0){_0x232a6d=_0x232a6d<0x64?0x64:_0x232a6d;loggerPredictive[_0x2695('0x7e')](_0x3c3faf[_0x2695('0x43')],'one\x20call\x20every:',_0x232a6d,'milliseconds');_0x3c3faf[_0x2695('0x93')]=setInterval(function(){_0x7dbc6a[_0x2695('0x93')](_0x3c3faf);loggerPredictiveCalls[_0x2695('0x7e')](_0x2695('0x1f6'),_0x474181+=0x1);},_0x232a6d);}else{loggerPredictive[_0x2695('0x7e')](_0x3c3faf[_0x2695('0x43')],_0x2695('0x1f7'));}};};Dialer[_0x2695('0x1c')][_0x2695('0x1f8')]=function(_0x395e37,_0x508360){var _0x39df6f=this;return function(_0x3b5b19){if(_[_0x2695('0x4a')](_0x3b5b19)){if(_[_0x2695('0xb3')](_0x508360['UserId'])||!_0x508360['recallme']){if(_0x395e37[_0x2695('0x5c')]==='booked'){_0x395e37['queueStatusComplete']=_[_0x2695('0x89')](_0x395e37[_0x2695('0x12e')])?!![]:_0x395e37[_0x2695('0x12e')];var _0x5ace6e=uuid['v4']();_0x39df6f[_0x2695('0x25')][_0x5ace6e]=new Action(_0x395e37,_0x508360,_0x5ace6e);loggerBooked[_0x2695('0x7e')](_0x2695('0x1f9'),_0x5ace6e,_0x2695('0x1fa'),JSON[_0x2695('0x4c')](_0x395e37[_0x2695('0x12e')]),_0x2695('0x1fb'),_0x395e37['name']);if(_0x395e37[_0x2695('0x12e')]){_0x395e37[_0x2695('0x12e')]=![];_0x39df6f[_0x2695('0x2b')][_0x39df6f['actions'][_0x5ace6e]['queue']]=[];ami['Action']({'actionid':_0x5ace6e,'action':_0x2695('0x1fc'),'queue':_0x395e37[_0x2695('0x43')]})[_0x2695('0xb6')](function(){_0x39df6f[_0x2695('0xb7')](_0x395e37);_0x39df6f[_0x2695('0xc4')]({'active':![],'ContactId':_0x39df6f[_0x2695('0x25')][_0x5ace6e][_0x2695('0xd6')],'ListId':_0x39df6f[_0x2695('0x25')][_0x5ace6e][_0x2695('0xfd')],'VoiceQueueId':_0x39df6f[_0x2695('0x25')][_0x5ace6e]['VoiceQueueId']||undefined,'CampaignId':_0x39df6f[_0x2695('0x25')][_0x5ace6e][_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1fd')));delete _0x39df6f[_0x2695('0x25')][_0x5ace6e];});}else{loggerBooked[_0x2695('0x7e')](_0x2695('0x1fe'),JSON['stringify'](_0x395e37[_0x2695('0x12e')]),_0x2695('0x1fb'),_0x395e37[_0x2695('0x43')]);_0x39df6f[_0x2695('0xb7')](_0x395e37);_0x39df6f[_0x2695('0xc4')]({'active':![],'ContactId':_0x39df6f[_0x2695('0x25')][_0x5ace6e][_0x2695('0xd6')],'ListId':_0x39df6f[_0x2695('0x25')][_0x5ace6e]['ListId'],'VoiceQueueId':_0x39df6f[_0x2695('0x25')][_0x5ace6e][_0x2695('0xd7')]||undefined,'CampaignId':_0x39df6f['actions'][_0x5ace6e][_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch(_0x2695('0x1fd')));delete _0x39df6f['actions'][_0x5ace6e];}}else{return _0x39df6f[_0x2695('0x177')](_0x395e37,_0x508360);}}else{if(getDiff(_0x508360[_0x2695('0x1ff')])<_0x395e37[_0x2695('0x200')]*0x3c){if(_0x508360['Agent']&&!_0x508360['Agent']['voicePause']){_0x39df6f[_0x2695('0x1f')][_0x2695('0x201')](_0x508360['id'])[_0x2695('0x137')](function(){_0x39df6f[_0x2695('0xb7')](_0x395e37);});}else{_0x39df6f[_0x2695('0xc5')]({'active':![]},_0x508360['id'],0x1)['finally'](function(){_0x39df6f[_0x2695('0xb7')](_0x395e37);});}}else{_0x395e37[_0x2695('0x68')]+=0x1;_0x39df6f[_0x2695('0xb7')](_0x395e37);if(_0x395e37[_0x2695('0x202')]){_0x39df6f[_0x2695('0xc4')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x508360[_0x2695('0xd6')],'ListId':_0x508360[_0x2695('0xfd')],'VoiceQueueId':_0x508360['VoiceQueueId']||undefined,'CampaignId':_0x508360[_0x2695('0xd8')]||undefined})[_0x2695('0xb6')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x39df6f['createHistory'](createObjHistory(_0x395e37,_0x508360,_0x2695('0x203'),0x17,_0x2695('0x204')))[_0x2695('0xb6')](loggerCatch(_0x2695('0x205')));}else{_0x39df6f[_0x2695('0xd4')](createObjHistory(_0x395e37,_0x508360,_0x2695('0x206'),0x16,_0x2695('0x207')),'[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]');}}}}else{_0x395e37[_0x2695('0x62')]+=0x1;_0x39df6f[_0x2695('0xd4')](createObjHistory(_0x395e37,_0x508360,'BLACKLIST',0xd,'Blacklist'),_0x2695('0x208'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer['prototype'][_0x2695('0x167')]=function(_0x4d903f){var _0x34a3c1=this;var _0x3d1017=_0x4d903f[_0x2695('0x209')]-_0x4d903f[_0x2695('0x72')]-_0x4d903f['temp'];emitCampaignSummary(_0x4d903f);if(_0x3d1017>0x0){if(_0x3d1017>this['maxNumberOriginate']){_0x3d1017=this[_0x2695('0x24')];}_0x4d903f[_0x2695('0xc7')]+=_0x3d1017;this[_0x2695('0xc8')](_0x4d903f['id'],_0x3d1017,_0x4d903f[_0x2695('0x20a')],_0x4d903f)[_0x2695('0x40')](function(_0x2e5d49){_0x4d903f['temp']-=_0x3d1017;_0x4d903f[_0x2695('0xc7')]=_0x4d903f['temp']>0x0?_0x4d903f[_0x2695('0xc7')]:0x0;if(!checkContactEmpty(_0x2e5d49)){_0x4d903f['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0x2695('0x7e')]('[getContactCampaign2][Empty]'+_0x4d903f['name']);}else{_0x4d903f['originated']+=_0x2e5d49['length'];_0x4d903f[_0x2695('0x42')]=_0x2695('0x20b');for(var _0x4a3b10=0x0;_0x4a3b10<_0x2e5d49[_0x2695('0x9b')];_0x4a3b10+=0x1){_0x4d903f[_0x2695('0x20c')]+=0x1;if(_[_0x2695('0xb3')](_0x2e5d49[_0x4a3b10])||_[_0x2695('0xb3')](_0x2e5d49[_0x4a3b10][_0x2695('0x190')])||_[_0x2695('0xb3')](_0x2e5d49[_0x4a3b10]['phone'])){_0x34a3c1[_0x2695('0xd2')](_0x2695('0x20d'),_0x4d903f,_0x2e5d49[_0x4a3b10]);}else{_0x34a3c1[_0x2695('0xc1')](_['pick'](_0x2e5d49[_0x4a3b10],['CampaignId','phone']))['then'](_0x34a3c1[_0x2695('0x1f8')](_0x4d903f,_0x2e5d49[_0x4a3b10]))['catch'](_0x34a3c1[_0x2695('0xd1')]('[actionOriginateIvr]\x20',_0x4d903f));}}}})[_0x2695('0xb6')](loggerGetContactDialer(_0x2695('0x20e'),_0x4d903f,_0x3d1017));}};Dialer[_0x2695('0x1c')][_0x2695('0x15c')]=function(_0x213085,_0x447de4){var _0x4f8c36=this;var _0x3c3ad7=[];var _0x3f70a1=_0x447de4>=0x1?_0x447de4:0x1;if(_0x213085[_0x2695('0x5c')]===_0x2695('0x15e')){_0x3f70a1=0x1;}var _0x28270c=Math['floor'](_0x213085[_0x2695('0x53')]*_0x3f70a1)-_0x213085['originated']-_0x213085[_0x2695('0xc7')];emitVoiceQueueSummary(_0x213085);if(_0x213085[_0x2695('0x20f')]>0x0){var _0x47ce68=_0x213085[_0x2695('0x20f')]-_0x213085[_0x2695('0x72')]-_0x213085[_0x2695('0xa5')]-_0x213085['temp']-_0x213085[_0x2695('0xa6')];if(_0x28270c>_0x47ce68){_0x28270c=_0x47ce68;}}if(_0x28270c>0x0){if(_0x213085[_0x2695('0x5c')]===_0x2695('0x15e')){_0x28270c=0x1;}if(_0x28270c>this['maxNumberOriginate']){_0x28270c=this[_0x2695('0x24')];}_0x213085[_0x2695('0xc7')]+=_0x28270c;for(var _0x1661ea in this['agents']){if(typeof this['agents'][_0x1661ea]!=='undefined'){if(this[_0x2695('0x22')][_0x1661ea][_0x2695('0xac')]===_0x2695('0x210')&&this[_0x2695('0x22')][_0x1661ea][_0x2695('0xb4')]==='reachable'){_0x3c3ad7[_0x2695('0x12c')](this[_0x2695('0x22')][_0x1661ea]['id']);}}}this[_0x2695('0x211')](_0x213085['id'],_0x3c3ad7,_0x28270c,_0x213085[_0x2695('0x20a')],_0x213085)[_0x2695('0x40')](function(_0x4b6340){_0x213085[_0x2695('0xc7')]-=_0x28270c;_0x213085[_0x2695('0xc7')]=_0x213085[_0x2695('0xc7')]>0x0?_0x213085[_0x2695('0xc7')]:0x0;if(!checkContactEmpty(_0x4b6340)){_0x4f8c36[_0x2695('0xbb')](_0x213085)[_0x2695('0x40')](sendMessageReschedule(_0x213085))['catch'](loggerCatch(_0x2695('0x212')));}else{_0x213085[_0x2695('0x72')]+=_0x4b6340[_0x2695('0x9b')];_0x213085[_0x2695('0x42')]=_0x213085['dialMethod']==='booked'?_0x2695('0x181'):_0x2695('0x20b');for(var _0x31d69f=0x0;_0x31d69f<_0x4b6340[_0x2695('0x9b')];_0x31d69f+=0x1){if(_[_0x2695('0xb3')](_0x4b6340[_0x31d69f])||_[_0x2695('0xb3')](_0x4b6340[_0x31d69f][_0x2695('0x190')])||_[_0x2695('0xb3')](_0x4b6340[_0x31d69f][_0x2695('0x17b')])){_0x4f8c36[_0x2695('0xd2')](_0x2695('0x20d'),_0x213085,_0x4b6340[_0x31d69f]);}else{_0x4f8c36['checkIsBlackList'](_[_0x2695('0xd5')](_0x4b6340[_0x31d69f],[_0x2695('0xd7'),_0x2695('0x17b')]))[_0x2695('0x40')](_0x4f8c36[_0x2695('0x1f8')](_0x213085,_0x4b6340[_0x31d69f]))[_0x2695('0xb6')](_0x4f8c36[_0x2695('0xd1')]('[actionOriginate]\x20',_0x213085));}}}})[_0x2695('0xb6')](loggerGetContactDialer('[getContactDialer2]',_0x213085,_0x28270c));}};Dialer[_0x2695('0x1c')]['handlePredictive']=function(_0x5f4138){if(_0x5f4138[_0x2695('0x20f')]>0x0){var _0x5abcee=_0x5f4138[_0x2695('0x20f')]-_0x5f4138[_0x2695('0x72')]-_0x5f4138[_0x2695('0xa5')];if(_0x5abcee>0x0){this[_0x2695('0x213')](_0x5f4138);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0x2695('0x213')](_0x5f4138);}};Dialer[_0x2695('0x1c')]['tryOriginatePredictive']=function(_0x1e1945){var _0x4e24d1=this;var _0x1646ab=[];_0x1e1945[_0x2695('0x72')]+=0x1;for(var _0x42299c in this[_0x2695('0x22')]){if(typeof this[_0x2695('0x22')][_0x42299c]!==_0x2695('0x9c')){if(this[_0x2695('0x22')][_0x42299c][_0x2695('0xac')]===_0x2695('0x210')&&this[_0x2695('0x22')][_0x42299c][_0x2695('0xb4')]===_0x2695('0xdf')){_0x1646ab[_0x2695('0x12c')](this['agents'][_0x42299c]['id']);}}}this[_0x2695('0x211')](_0x1e1945['id'],_0x1646ab,0x1,_0x1e1945[_0x2695('0x20a')],_0x1e1945)[_0x2695('0x40')](function(_0x1c457b){if(!checkContactEmpty(_0x1c457b)){checkContactLowerLimitOriginate(_0x1e1945,0x1,0x0);_0x4e24d1['countReScheduled'](_0x1e1945)[_0x2695('0x40')](sendMessageReschedule(_0x1e1945))[_0x2695('0xb6')](loggerCatch(_0x2695('0x212')));}else{_0x1e1945[_0x2695('0x42')]=_0x2695('0x20b');if(_[_0x2695('0xb3')](_0x1c457b[0x0])||_['isNil'](_0x1c457b[0x0][_0x2695('0x190')])||_[_0x2695('0xb3')](_0x1c457b[0x0][_0x2695('0x17b')])){_0x4e24d1[_0x2695('0xd2')](_0x2695('0x20d'),_0x1e1945,_0x1c457b[0x0]);}else{_0x4e24d1[_0x2695('0xbc')](_[_0x2695('0xd5')](_0x1c457b[0x0],[_0x2695('0xd7'),_0x2695('0x17b')]))[_0x2695('0x40')](_0x4e24d1['checkContactBlack'](_0x1e1945,_0x1c457b[0x0]))[_0x2695('0xb6')](_0x4e24d1[_0x2695('0xd1')](_0x2695('0x214'),_0x1e1945));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x1e1945,0x1));emitVoiceQueueSummary(_0x1e1945);};Dialer[_0x2695('0x1c')]['abandonmentRate']=function(_0x4932fe,_0x4b5a2e,_0xdb714,_0x521ff7,_0x548dde,_0xbaa4a9){loggerPredictive[_0x2695('0x7e')](_0x2695('0x215'));loggerPredictive[_0x2695('0x7e')](_0x2695('0x216'),_0x4932fe);loggerPredictive[_0x2695('0x7e')](_0x2695('0x217'),_0x4b5a2e);loggerPredictive[_0x2695('0x7e')](_0x2695('0x218'),_0xdb714);loggerPredictive['info'](_0x2695('0x219'),_0x521ff7);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x548dde);loggerPredictive[_0x2695('0x7e')](_0x2695('0x87'));return new Promise(function(_0x47f15e,_0x413c74){if(_0x4932fe<=0x0||isNaN(_0x4932fe)){return _0x413c74(msgResponse(_0x2695('0x21a'),_0x2695('0x1a1'),_0x2695('0x21b')+_0x4932fe));}if(_0xdb714<=0x0||isNaN(_0xdb714)){return _0x413c74(msgResponse(_0x2695('0x21a'),_0x2695('0x1a1'),'Ts\x20=\x20'+_0xdb714));}if(_0x521ff7<=0x0||isNaN(_0x521ff7)){return _0x413c74(msgResponse(_0x2695('0x21a'),'Error',_0x2695('0x21c')+_0x521ff7));}if(_0x4b5a2e<=0x0||isNaN(_0x4b5a2e)){return _0x413c74(msgResponse(_0x2695('0x21a'),_0x2695('0x1a1'),'interval\x20=\x20'+_0x4b5a2e));}if(_0x548dde<=0x0||isNaN(_0x548dde)){return _0x413c74(msgResponse(_0x2695('0x21a'),_0x2695('0x1a1'),_0x2695('0x21d')+_0x548dde));}_0xbaa4a9=_0xbaa4a9||0x0;var _0x1f0641=0x1/_0xdb714;var _0xfbe40d=0x0;var _0x4e2cfe=0x0;var _0x82f643=0x0;var _0x2ab597=0x0;for(var _0x5be6f0=0x0;_0x82f643<_0x548dde;_0x5be6f0+=0x1){_0x4e2cfe=_0x5be6f0/_0x4b5a2e;_0xfbe40d=(_0x521ff7*_0x4e2cfe+_0xbaa4a9)/_0x1f0641;_0x82f643=erlangb(_0xfbe40d,_0x4932fe);_0x2ab597=_0xfbe40d/_0x4932fe*(0x1-erlangb(_0xfbe40d,_0x4932fe));}return _0x47f15e({'erlangCalls':_0x5be6f0,'erlangCallToSecond':_0x4b5a2e/_0x5be6f0,'erlangAbandonmentRate':_0x82f643,'erlangBusyFactor':_0x2ab597});});};Dialer[_0x2695('0x1c')][_0x2695('0x1ee')]=function(_0x38610f,_0x57197c,_0x4af722,_0x1b3898,_0x39f391,_0x5c6d91){loggerPredictive[_0x2695('0x7e')](_0x2695('0x21e'));loggerPredictive['info']('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x38610f);loggerPredictive['info'](_0x2695('0x217'),_0x57197c);loggerPredictive[_0x2695('0x7e')](_0x2695('0x218'),_0x4af722);loggerPredictive[_0x2695('0x7e')](_0x2695('0x219'),_0x1b3898);loggerPredictive[_0x2695('0x7e')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x39f391);loggerPredictive['info'](_0x2695('0x87'));return new Promise(function(_0x551180,_0x320474){if(_0x38610f<=0x0||isNaN(_0x38610f)){return _0x320474(msgResponse(_0x2695('0x21f'),_0x2695('0x1a1'),_0x2695('0x21b')+_0x38610f));}if(_0x4af722<=0x0||isNaN(_0x4af722)){return _0x320474(msgResponse(_0x2695('0x21f'),_0x2695('0x1a1'),_0x2695('0x220')+_0x4af722));}if(_0x1b3898<=0x0||isNaN(_0x1b3898)){return _0x320474(msgResponse(_0x2695('0x21f'),_0x2695('0x1a1'),_0x2695('0x21c')+_0x1b3898));}if(_0x57197c<=0x0||isNaN(_0x57197c)){return _0x320474(msgResponse(_0x2695('0x21f'),'Error',_0x2695('0x221')+_0x57197c));}if(_0x39f391<=0x0||isNaN(_0x39f391)){return _0x320474(msgResponse(_0x2695('0x21f'),'Error','Umin\x20=\x20'+_0x39f391));}_0x5c6d91=_0x5c6d91||0x0;var _0x3fc666=0x1/_0x4af722;var _0x1f2fef=0x0;var _0x526912=0x0;var _0x2264cd=0x0;var _0x122edc=0x0;for(var _0x15ff60=0x0;_0x122edc<_0x39f391;_0x15ff60+=0x1){_0x526912=_0x15ff60/_0x57197c;_0x1f2fef=(_0x1b3898*_0x526912+_0x5c6d91)/_0x3fc666;_0x2264cd=erlangb(_0x1f2fef,_0x38610f);_0x122edc=_0x1f2fef/_0x38610f*(0x1-erlangb(_0x1f2fef,_0x38610f));}return _0x551180({'erlangCalls':_0x15ff60,'erlangCallToSecond':_0x57197c/_0x15ff60,'erlangAbandonmentRate':_0x2264cd,'erlangBusyFactor':_0x122edc});});};module[_0x2695('0x222')]=Dialer;
\ No newline at end of file
+var _0x65c8=['outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','md5','format','ivr','campaign:ivr:%s','campaign:save','-----\x20Stats\x20Predictive\x20---','info','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','predictiveIntervalDroppedCallsCallersExit','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','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','\x22%s\x22\x20<%s>','string','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','debug','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','clearZombieChannels','[uniqueid]','[actions]','undefined','sequence','enqueue','isNil','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','UserId','VoiceQueueId','CampaignId','[emptyContact]','isTrunkReachable','SIP/%s','status','unmonitored','moveContactManagedDialer','uniqueid','variable','amdstatus','exten','HANGUP','statedesc','membername','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','value','Machine','AMD','countmachineretry','buildObj','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countglobal','countbusyretry','countdropretry','ivrAnswerCallsDay','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','[syncHangupIvr]','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','Drop','TIMEOUT','dialQueueProject2','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','add','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','dropreason','CALLEREXIT','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','Abandoned','[syncAgentComplete][createHistory][11]','actionid','locked','stateinterface','queueBooked','push','idHopper','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','run','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','Action','command','interval','content','indexOf','true','iftime\x20%s,%s','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','filter','online','map','user:%s','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','NONE','\x22%s,%s%s,,,%s\x22','dialer','ACTIVE','xcally-motion-dialer','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','createdAt','updatedAt','XMD-','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','object','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[callProgressDetecting]','Success','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','startPredictive','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','abandonmentRate','agentBusyFactor','dialPredictiveOptimizationPercentage','busyFactor','[getDataPredictive]','Unknown\x20Predictive','outboundQueuePauses','[CatchErlangB]','check\x20failure','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','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','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','agentconnect','syncAgentConnect','bind','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','syncVarSet','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','name','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix'];(function(_0x59585d,_0x2638c4){var _0x186e4c=function(_0x190e67){while(--_0x190e67){_0x59585d['push'](_0x59585d['shift']());}};_0x186e4c(++_0x2638c4);}(_0x65c8,0x1ce));var _0x865c=function(_0x5d26bd,_0x49c324){_0x5d26bd=_0x5d26bd-0x0;var _0x4399b5=_0x65c8[_0x5d26bd];return _0x4399b5;};'use strict';var util=require('util');var _=require(_0x865c('0x0'));var uuid=require(_0x865c('0x1'));var moment=require(_0x865c('0x2'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x865c('0x3'));var ut=require(_0x865c('0x4'));var config=require(_0x865c('0x5'));var logger=require(_0x865c('0x6'))('dialer');var loggerBooked=require('../../../config/logger')(_0x865c('0x7'));var loggerPredictive=require(_0x865c('0x6'))('predictive');var loggerPredictiveCalls=require(_0x865c('0x6'))(_0x865c('0x8'));var loggerSyncQueueSummary=require(_0x865c('0x6'))(_0x865c('0x9'));var ami=require(_0x865c('0xa'));config[_0x865c('0xb')]=_[_0x865c('0xc')](config[_0x865c('0xb')],{'host':_0x865c('0xd'),'port':0x18eb});var io=require(_0x865c('0xe'))(new Redis(config[_0x865c('0xb')]));var cmHopper=require(_0x865c('0xf'));var cmHopperHistory=require(_0x865c('0x10'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x865c('0x11'));var voiceQueueRt=require(_0x865c('0x12'));var RpcSetting=require('../rpc/setting');var Action=require(_0x865c('0x13'));var History=require(_0x865c('0x14'));var Final=require(_0x865c('0x15'));var AgentComplete=require(_0x865c('0x16'));var QueueCallerAbandon=require(_0x865c('0x17'));var Hangup=require(_0x865c('0x18'));var ipAgi=process[_0x865c('0x19')][_0x865c('0x1a')]||_0x865c('0x1b');var strategy={'rrmemory':_0x865c('0x1c'),'roundrobin':_0x865c('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x865c('0x1e')]['enqueue']=function(_0x144e6f){this[_0x865c('0x1f')]=this[_0x865c('0x1f')]?this[_0x865c('0x1f')][_0x865c('0x20')](_0x144e6f):_0x144e6f();};function Dialer(_0x161156,_0x4d282d){this['sequence']=new Sequence();this[_0x865c('0x21')]=_0x4d282d;this[_0x865c('0x22')]=_0x161156[_0x865c('0x22')];this['campaigns']=_0x161156[_0x865c('0x23')];this[_0x865c('0x24')]=_0x161156['agents'];this[_0x865c('0x25')]=_0x161156[_0x865c('0x25')];this['maxNumberOriginate']=config[_0x865c('0x26')]||0x2;this[_0x865c('0x27')]={};this[_0x865c('0x28')]={};this[_0x865c('0x29')]={};this[_0x865c('0x2a')]={};this[_0x865c('0x2b')]={};this['startPredictive']={};this[_0x865c('0x2c')]={};this[_0x865c('0x2d')]={};this['queueBooked']={};this['queueBookedRR']={};ami['on'](_0x865c('0x2e'),this[_0x865c('0x2f')][_0x865c('0x30')](this));ami['on']('queuecallerabandon',this[_0x865c('0x31')][_0x865c('0x30')](this));ami['on'](_0x865c('0x32'),this[_0x865c('0x33')][_0x865c('0x30')](this));ami['on'](_0x865c('0x34'),this[_0x865c('0x35')][_0x865c('0x30')](this));ami['on'](_0x865c('0x36'),this['syncQueueSummary'][_0x865c('0x30')](this));ami['on'](_0x865c('0x37'),this[_0x865c('0x38')][_0x865c('0x30')](this));ami['on'](_0x865c('0x39'),this[_0x865c('0x3a')][_0x865c('0x30')](this));ami['on'](_0x865c('0x3b'),this[_0x865c('0x3c')][_0x865c('0x30')](this));ami['on']('varset',this[_0x865c('0x3d')][_0x865c('0x30')](this));ami['on']('queuemember',this[_0x865c('0x3e')][_0x865c('0x30')](this));ami['on'](_0x865c('0x3f'),this[_0x865c('0x40')]['bind'](this));this[_0x865c('0x41')]();this[_0x865c('0x42')]();RpcSetting[_0x865c('0x43')]()['then'](function(_0x68df73){previewRecallmeReminderInterval=_0x68df73[_0x865c('0x44')];});}function isNotNull(_0x5d915a){return _0x5d915a!==null&&!_[_0x865c('0x45')](_0x5d915a);}function checkIsLoggedIn(_0x503030,_0x5f1a89){return function(){if(_0x5f1a89<=0x0){_0x503030['message']=_0x865c('0x46');throw _0x503030['name']+_0x865c('0x47');}};}function isActive(_0x52544a){return _0x52544a;}function checkIsActive(_0x33f168,_0x2f564f){return function(){if(!isActive(_0x2f564f)){_0x33f168[_0x865c('0x48')]=_0x865c('0x49');throw _0x33f168[_0x865c('0x4a')]+_0x865c('0x4b');}};}function checkInterval(_0x3b53ba){return function(){if(!isNotNull(_0x3b53ba[_0x865c('0x4c')])){_0x3b53ba['message']=_0x865c('0x4d');throw _0x3b53ba[_0x865c('0x4a')]+_0x865c('0x4e');}if(!isNotNull(_0x3b53ba['Interval'][_0x865c('0x4f')])){_0x3b53ba[_0x865c('0x48')]='INTERVAL_IS_NULL';throw _0x3b53ba['name']+_0x865c('0x4e');}if(!isNotNull(_[_0x865c('0x50')](_0x3b53ba[_0x865c('0x4c')]['Intervals']))){_0x3b53ba[_0x865c('0x48')]=_0x865c('0x4d');throw _0x3b53ba[_0x865c('0x4a')]+_0x865c('0x4e');}};}function msgResponse(_0x8e08db,_0x539b7c,_0x518ced){return{'action':_0x8e08db,'response':_0x539b7c,'message':_0x518ced,'stack':_0x518ced};}function myreject(_0x5646ac){return function(_0x3f9119){return _0x5646ac(msgResponse(_0x865c('0x51'),_0x865c('0x52'),JSON[_0x865c('0x53')](_0x3f9119)));};}function getSeconds(_0xd516a2,_0x26a116){var _0x3a616d=moment(_0xd516a2)[_0x865c('0x54')](0x0);var _0xfdec0e=moment(_0x26a116)['milliseconds'](0x0);return _0x3a616d[_0x865c('0x55')](_0xfdec0e,_0x865c('0x56'));}function emit(_0x1decab,_0x4f46a1,_0x2a6ba5){io['to'](_0x1decab)[_0x865c('0x57')](_0x4f46a1,_0x2a6ba5);}function emitVoiceQueueSummary(_0x1ab95a){if(_0x1ab95a[_0x865c('0x58')]===_0x865c('0x59')){var _0x1c8347={'id':_0x1ab95a['id'],'name':_0x1ab95a['name'],'strategy':_0x1ab95a[_0x865c('0x5a')],'answered':_0x1ab95a['answered'],'available':_0x1ab95a[_0x865c('0x5b')],'loggedIn':_0x1ab95a[_0x865c('0x5c')],'pTalking':_0x1ab95a[_0x865c('0x5d')],'sumBillable':_0x1ab95a[_0x865c('0x5e')],'sumDuration':_0x1ab95a[_0x865c('0x5f')],'sumHoldTime':_0x1ab95a['sumHoldTime']||0x0,'talking':_0x1ab95a[_0x865c('0x60')],'total':_0x1ab95a['total'],'type':_0x1ab95a[_0x865c('0x58')],'unmanaged':_0x1ab95a[_0x865c('0x61')],'abandoned':_0x1ab95a['abandoned'],'waiting':_0x1ab95a['waiting'],'loggedInDb':_0x1ab95a[_0x865c('0x62')],'dialActive':_0x1ab95a[_0x865c('0x63')],'dialMethod':_0x1ab95a[_0x865c('0x64')],'dialOriginateCallerIdName':_0x1ab95a[_0x865c('0x65')],'dialOriginateCallerIdNumber':_0x1ab95a['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1ab95a[_0x865c('0x66')],'dialPrefix':_0x1ab95a[_0x865c('0x67')],'outboundAnswerAgiCallsDay':_0x1ab95a[_0x865c('0x68')],'outboundAnswerCallsDay':_0x1ab95a[_0x865c('0x69')],'outboundBlacklistCallsDay':_0x1ab95a['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1ab95a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1ab95a[_0x865c('0x6a')],'outboundDropCallsDayACS':_0x1ab95a[_0x865c('0x6b')],'outboundDropCallsDayCallersExit':_0x1ab95a[_0x865c('0x6c')],'outboundDropCallsDayTimeout':_0x1ab95a['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1ab95a[_0x865c('0x6d')],'outboundNoSuchCallsDay':_0x1ab95a[_0x865c('0x6e')],'outboundOriginateFailureCallsDay':_0x1ab95a[_0x865c('0x6f')],'outboundReCallsDay':_0x1ab95a[_0x865c('0x70')],'outboundRejectCallsDay':_0x1ab95a[_0x865c('0x71')],'outboundUnknownCallsDay':_0x1ab95a[_0x865c('0x72')],'predictiveIntervalAnsweredCalls':_0x1ab95a[_0x865c('0x73')],'predictiveIntervalAvgHoldtime':_0x1ab95a[_0x865c('0x74')],'predictiveIntervalAvgTalktime':_0x1ab95a[_0x865c('0x75')],'predictiveIntervalDroppedCallsCallersExit':_0x1ab95a['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1ab95a[_0x865c('0x76')],'predictiveIntervalErlangCalls':_0x1ab95a[_0x865c('0x77')],'predictiveIntervalErlangCallsDroppedCalls':_0x1ab95a[_0x865c('0x78')],'predictiveIntervalHitRate':_0x1ab95a[_0x865c('0x79')],'predictiveIntervalMultiplicativeFactor':_0x1ab95a[_0x865c('0x7a')],'predictiveIntervalPauses':_0x1ab95a[_0x865c('0x7b')],'predictiveIntervalAvailable':_0x1ab95a['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x1ab95a[_0x865c('0x7c')],'message':_0x1ab95a[_0x865c('0x48')],'originated':_0x1ab95a[_0x865c('0x7d')],'erlangCalls':_0x1ab95a[_0x865c('0x7e')],'erlangCallToSecond':_0x1ab95a[_0x865c('0x7f')],'erlangAbandonmentRate':_0x1ab95a[_0x865c('0x80')],'erlangBusyFactor':_0x1ab95a[_0x865c('0x81')],'startPredictive':_0x1ab95a['startPredictive'],'startProgressive':_0x1ab95a['startProgressive']};if(_0x1ab95a[_0x865c('0x82')]){_0x1c8347[_0x865c('0x82')]={'id':_0x1ab95a[_0x865c('0x82')]['id'],'name':_0x1ab95a[_0x865c('0x82')][_0x865c('0x4a')],'active':_0x1ab95a[_0x865c('0x82')][_0x865c('0x83')],'callerid':_0x1ab95a[_0x865c('0x82')]['callerid']};}if(_0x1ab95a[_0x865c('0x4c')]){_0x1c8347[_0x865c('0x4c')]={'id':_0x1ab95a[_0x865c('0x4c')]['id'],'name':_0x1ab95a[_0x865c('0x4c')][_0x865c('0x4a')]};}var _0xc22b7a=md5(JSON[_0x865c('0x53')](_0x1c8347));if(_0x1ab95a[_0x865c('0x84')]!==_0xc22b7a){_0x1ab95a[_0x865c('0x84')]=_0xc22b7a;emit(util[_0x865c('0x85')]('voice:queue:%s',_0x1c8347[_0x865c('0x4a')]),'voice_queue:save',_0x1c8347);}}}function emitCampaignSummary(_0x146f60){if(_0x146f60[_0x865c('0x58')]===_0x865c('0x86')){emit(util[_0x865c('0x85')](_0x865c('0x87'),_0x146f60[_0x865c('0x4a')]),_0x865c('0x88'),_0x146f60);}}function checkGetDataPredictive(_0x322d3a){if(isNotNull(_0x322d3a)&&!_[_0x865c('0x50')](_0x322d3a)){loggerPredictive['info'](_0x865c('0x89'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x8b'),_0x322d3a[_0x865c('0x7c')]);loggerPredictive['info'](_0x865c('0x8c'),_0x322d3a[_0x865c('0x73')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x8d'),_0x322d3a[_0x865c('0x76')]);loggerPredictive['info'](_0x865c('0x8e'),_0x322d3a[_0x865c('0x8f')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x90'),_0x322d3a[_0x865c('0x74')]);loggerPredictive['info'](_0x865c('0x91'),_0x322d3a['predictiveIntervalAvgTalktime']);loggerPredictive['info']('---------------------------');if(_0x322d3a['predictiveIntervalTotalCalls']>0x0){if(!_[_0x865c('0x45')](_0x322d3a[_0x865c('0x75')])&&_0x322d3a[_0x865c('0x75')]>0x0){return!![];}loggerPredictive['info'](_0x865c('0x92'));if(!_[_0x865c('0x45')](_0x322d3a['predictiveIntervalAvgHoldtime'])&&_0x322d3a[_0x865c('0x74')]>0x0){return!![];}loggerPredictive[_0x865c('0x8a')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x865c('0x8a')](_0x865c('0x93'));}return![];}function mergeDataErlangB(_0x5ecf25){return function(_0x12ef13){loggerPredictive['info'](_0x865c('0x94'));loggerPredictive[_0x865c('0x8a')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x12ef13[_0x865c('0x7e')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x95'),_0x12ef13[_0x865c('0x7f')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x96'),_0x12ef13[_0x865c('0x80')]);loggerPredictive[_0x865c('0x8a')](_0x865c('0x97'),_0x12ef13['erlangBusyFactor']);loggerPredictive[_0x865c('0x8a')](_0x865c('0x96'),_0x12ef13[_0x865c('0x80')]);loggerPredictive[_0x865c('0x8a')]('---------------------------');_['merge'](_0x5ecf25,_0x12ef13);};}function getDiff(_0x3db005){var _0x588e3d=moment()[_0x865c('0x54')](0x0);var _0xd54dcd=moment(_0x3db005)[_0x865c('0x54')](0x0);return _0x588e3d[_0x865c('0x55')](_0xd54dcd,'seconds');}function ifInterval(_0x500b8c,_0x110b2a){if(_['isUndefined'](_0x110b2a)){return![];}return getDiff(_0x110b2a)<_0x500b8c*0x3c;}function freeVariablesPredictive(_0x1c9f19){if(isNotNull(_0x1c9f19)){if(!_[_0x865c('0x45')](_0x1c9f19[_0x865c('0x2c')])){_0x1c9f19[_0x865c('0x2c')]=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19['name'],_0x865c('0x98'));}if(!_['isUndefined'](_0x1c9f19['startPredictive'])){_0x1c9f19['startPredictive']=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19['name'],_0x865c('0x99'));}if(!_[_0x865c('0x45')](_0x1c9f19[_0x865c('0x9a')])){clearInterval(_0x1c9f19[_0x865c('0x9a')]);_0x1c9f19[_0x865c('0x9a')]=undefined;loggerPredictive[_0x865c('0x8a')](_0x1c9f19[_0x865c('0x4a')],_0x865c('0x9b'));}}}function erlangb(_0x3e6eb3,_0x4cdbf8){if(_0x4cdbf8===0x0){return 0x0;}var _0x139ebd=0x1;for(var _0x5aed27=0x1;_0x5aed27<=_0x4cdbf8;_0x5aed27+=0x1){_0x139ebd=0x1+_0x139ebd*_0x5aed27/_0x3e6eb3;}return 0x1/_0x139ebd;}function isVoiceQueueOutbound(_0x2bfb2f){return _0x2bfb2f===_0x865c('0x59');}function isNotPreview(_0x156fc1){return _0x156fc1!==_0x865c('0x21');}function isCampaignIvr(_0x10bd6f){return _0x10bd6f===_0x865c('0x86');}function getCallerId(_0x48a9ae,_0x4a467e,_0x5b0b21){if(!_[_0x865c('0x45')](_0x5b0b21)&&typeof _0x5b0b21==='string'&&!_[_0x865c('0x50')](_0x5b0b21)){if(!_[_0x865c('0x45')](_0x4a467e)&&typeof _0x4a467e==='string'&&!_[_0x865c('0x50')](_0x4a467e)){return util['format'](_0x865c('0x9c'),_0x4a467e,_0x5b0b21);}return util[_0x865c('0x85')](_0x865c('0x9c'),_0x5b0b21,_0x5b0b21);}if(!_[_0x865c('0x45')](_0x48a9ae)&&typeof _0x48a9ae===_0x865c('0x9d')&&!_['isEmpty'](_0x48a9ae)){return _0x48a9ae;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x1db934,_0x4dc47d){return function(_0x25bf1c){freeVariablesPredictive(_0x4dc47d);emitVoiceQueueSummary(_0x4dc47d);emitCampaignSummary(_0x4dc47d);loggerSyncQueueSummary['debug'](_0x1db934,util[_0x865c('0x9e')](_0x25bf1c,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x126d77,_0x3eb02e){return function(_0x2ba568){loggerPredictive[_0x865c('0x9f')](_0x3eb02e[_0x865c('0x4a')],_0x126d77);loggerPredictive['error'](_0x2ba568[_0x865c('0xa0')]);freeVariablesPredictive(_0x3eb02e);};}function loggerCatch(_0x23fbbf){return function(_0xf84895){logger[_0x865c('0x9f')](_0x23fbbf,util[_0x865c('0x9e')](_0xf84895,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x49deee){return _0x49deee&&!_[_0x865c('0x45')](_0x49deee)&&_0x49deee[_0x865c('0xa1')]>0x0;}function decremetOriginate(_0x5c2513){if(!_[_0x865c('0x45')](_0x5c2513)&&_0x5c2513!==null){if(typeof _0x5c2513[_0x865c('0x7d')]!=='undefined'){if(_0x5c2513[_0x865c('0x7d')]>0x0){_0x5c2513[_0x865c('0x7d')]-=0x1;}else{logger['error'](_0x865c('0xa2'));}}}else{logger[_0x865c('0x9f')](_0x865c('0xa3'));}}function checkContactLowerLimitOriginate(_0x48c8b9,_0x2a8a78,_0x35db91){if(_0x2a8a78>_0x35db91){for(var _0x9e802=0x0;_0x9e802<_0x2a8a78-_0x35db91;_0x9e802+=0x1){decremetOriginate(_0x48c8b9);}}}function loggerGetContactDialer(_0x2f06bb,_0x2d2ea5,_0x1db112){return function(_0x341714){checkContactLowerLimitOriginate(_0x2d2ea5,_0x1db112,0x0);logger[_0x865c('0x9f')](_0x2f06bb,util['inspect'](_0x341714,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3d86a5){return function(_0x5cf3d6){if(isNotNull(_0x5cf3d6)&&isNotNull(_0x5cf3d6[0x0])){if(_0x5cf3d6[0x0]['contactsRescheduled']>0x0){_0x3d86a5[_0x865c('0x48')]=_0x865c('0xa4');logger[_0x865c('0x8a')](_0x865c('0xa5')+_0x3d86a5[_0x865c('0x4a')],_0x5cf3d6[0x0][_0x865c('0xa6')],_0x865c('0xa7'));}else{_0x3d86a5[_0x865c('0x48')]=_0x865c('0xa8');logger[_0x865c('0x8a')]('[getContactDialer2][Empty]'+_0x3d86a5['name']);}}};}function notSendMessagesQueue(_0x1bb3c2){if(_0x1bb3c2[_0x865c('0xa9')]){freeVariablesPredictive(_0x1bb3c2);if(_0x1bb3c2[_0x865c('0x7d')]===0x0&&_0x1bb3c2['talking']===0x0&&_0x1bb3c2['waiting']===0x0&&(_0x1bb3c2[_0x865c('0x5d')]||0x0)===0x0){_0x1bb3c2['sendMessageOneNotActive']=![];_0x1bb3c2[_0x865c('0x5b')]=0x0;_0x1bb3c2[_0x865c('0x48')]=_0x865c('0x49');loggerSyncQueueSummary[_0x865c('0xaa')](_0x865c('0xab'),_0x1bb3c2['name'],_0x865c('0xac'));}else{_0x1bb3c2[_0x865c('0x48')]=_0x865c('0xad');loggerSyncQueueSummary[_0x865c('0xaa')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1bb3c2['name'],_0x865c('0xae'));}emitVoiceQueueSummary(_0x1bb3c2);}}function notSendMessagesCampaign(_0x3660ff){if(_0x3660ff[_0x865c('0xa9')]){if(_0x3660ff[_0x865c('0x7d')]===0x0){_0x3660ff[_0x865c('0xa9')]=![];_0x3660ff['message']='NOT_ACTIVE';loggerSyncQueueSummary['debug'](_0x865c('0xaf'),_0x3660ff[_0x865c('0x4a')],_0x865c('0xac'));}else{_0x3660ff[_0x865c('0x48')]=_0x865c('0xad');loggerSyncQueueSummary[_0x865c('0xaa')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3660ff[_0x865c('0x4a')],_0x865c('0xae'));}emitCampaignSummary(_0x3660ff);}}function createObjHistory(_0x187881,_0x2016d7,_0xef71fc,_0x39213e,_0x213427){_0x187881['message']=_0xef71fc;var _0x539856=new Action(_0x187881,_0x2016d7);var _0x702c8f=new History(_0x539856);_0x702c8f[_0x865c('0xb0')]=_0x39213e;_0x702c8f['statedesc']=_0x213427;_0x702c8f[_0x865c('0xb1')]=_0x539856['starttime'];return _0x702c8f;}Dialer['prototype'][_0x865c('0x42')]=function(){var _0xc1c99b=this;setInterval(function(){_0xc1c99b[_0x865c('0xb2')](_0xc1c99b['uniqueId'],_0x865c('0xb3'));_0xc1c99b[_0x865c('0xb2')](_0xc1c99b[_0x865c('0x28')],_0x865c('0xb4'));},0x32c8);};Dialer['prototype'][_0x865c('0xb2')]=function(_0x433123,_0x4dafef){var _0x4b5e60=this;for(var _0x1b4112 in _0x433123){if(typeof _0x433123[_0x1b4112]!==_0x865c('0xb5')){this[_0x865c('0xb6')][_0x865c('0xb7')](function(){if(!_[_0x865c('0xb8')](_0x433123[_0x1b4112])){return ami['Action']({'action':'status','channel':_0x433123[_0x1b4112][_0x865c('0xb9')]})[_0x865c('0xba')](function(_0x34c91c){if(_0x34c91c[_0x865c('0x48')]===_0x865c('0xbb')){setTimeout(function(){if(_0x433123[_0x1b4112]&&_0x433123[_0x1b4112][_0x865c('0x58')]!==_0x865c('0x86')){_0x4b5e60[_0x865c('0xbc')](_0x4b5e60[_0x865c('0x22')][_0x433123[_0x1b4112][_0x865c('0xbd')]]);logger['error'](_0x865c('0xbe'),_0x4dafef,_0x1b4112,_0x433123[_0x1b4112]['queue']);delete _0x433123[_0x1b4112];}if(_0x433123[_0x1b4112]&&_0x433123[_0x1b4112][_0x865c('0x58')]==='ivr'){_0x4b5e60[_0x865c('0xbc')](_0x4b5e60[_0x865c('0x23')][_0x433123[_0x1b4112][_0x865c('0xbd')]]);logger[_0x865c('0x9f')](_0x865c('0xbf'),_0x4dafef,_0x1b4112,_0x433123[_0x1b4112]['queue']);delete _0x433123[_0x1b4112];}},0x2328);}});}});}}};Dialer[_0x865c('0x1e')][_0x865c('0xc0')]=function(_0xa14ea7){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xc0')](_0xa14ea7))[_0x865c('0xba')](loggerCatch(_0x865c('0xc3')));};Dialer[_0x865c('0x1e')][_0x865c('0xc4')]=function(_0x4e9272){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperBlack[_0x865c('0xc4')](_0x4e9272))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xc5')]=function(_0xec4454,_0x4d80f3,_0x219111){return Promise[_0x865c('0xc1')]()['then'](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0xec4454,_0x4d80f3,_0x219111))[_0x865c('0xba')](loggerCatch(_0x865c('0xc6')));};Dialer[_0x865c('0x1e')][_0x865c('0xc7')]=function(_0x41f370,_0x5054ee,_0x4da369){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x41f370,_0x5054ee,_0x4da369))[_0x865c('0xba')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer['prototype'][_0x865c('0xc8')]=function(_0x13c807){return Promise[_0x865c('0xc1')]()['then'](cmHopperBlack[_0x865c('0xc8')](_0x13c807))[_0x865c('0xba')](loggerCatch(_0x865c('0xc9')));};Dialer['prototype'][_0x865c('0xca')]=function(_0x2ab68b){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperHistory[_0x865c('0xcb')](_0x2ab68b))['catch'](loggerCatch(_0x865c('0xcc')));};Dialer[_0x865c('0x1e')][_0x865c('0xcd')]=function(_0x507c1f){return Promise['resolve']()[_0x865c('0xc2')](cmHopper[_0x865c('0xcd')](_0x507c1f))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xce')]=function(_0x133dad,_0x1b4162,_0x4a64d6){return Promise['resolve']()[_0x865c('0xc2')](cmHopper[_0x865c('0xce')](_0x133dad,_0x1b4162,_0x4a64d6))[_0x865c('0xba')](loggerCatch(_0x865c('0xcf')));};Dialer[_0x865c('0x1e')][_0x865c('0xd0')]=function(_0x34f5a6,_0x55cf7c,_0x4a6e3c,_0x4e5d88,_0x44aef5){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xd0')](_0x34f5a6,_0x55cf7c,_0x4a6e3c,_0x4e5d88))['catch'](function(_0x2fd6a6){_0x44aef5[_0x865c('0xd1')]-=_0x4a6e3c;_0x44aef5[_0x865c('0xd1')]=_0x44aef5['temp']>0x0?_0x44aef5[_0x865c('0xd1')]:0x0;loggerCatch(_0x865c('0xd2'))(_0x2fd6a6);});};Dialer['prototype'][_0x865c('0xd3')]=function(_0x2a3e5d,_0xfeeb98,_0x4e1515,_0xd3f557){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopper[_0x865c('0xd3')](_0x2a3e5d,_0xfeeb98,_0x4e1515))[_0x865c('0xba')](function(_0x1949d5){_0xd3f557[_0x865c('0xd1')]-=_0xfeeb98;_0xd3f557['temp']=_0xd3f557['temp']>0x0?_0xd3f557[_0x865c('0xd1')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x1949d5);});};Dialer[_0x865c('0x1e')][_0x865c('0xd4')]=function(_0x1c6388){return Promise[_0x865c('0xc1')]()['then'](voiceQueueRt[_0x865c('0xd4')](_0x1c6388))['catch'](loggerCatch(_0x865c('0xd5')));};Dialer['prototype']['moveContactManagedDialer']=function(_0xb78afc){return Promise['resolve']()[_0x865c('0xc2')](cmHopper['moveContactManagedDialer'](_0xb78afc))[_0x865c('0xba')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xd6')]=function(_0x1aee6c){return Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](cmHopperHistory['createHistory'](_0x1aee6c))[_0x865c('0xba')](loggerCatch('[createHistory]\x20'));};Dialer[_0x865c('0x1e')][_0x865c('0xbc')]=function(_0x23399d){if(!_[_0x865c('0x45')](_0x23399d)&&_0x23399d!==null){if(typeof _0x23399d[_0x865c('0x7d')]!==_0x865c('0xb5')){if(_0x23399d[_0x865c('0x7d')]>0x0){_0x23399d[_0x865c('0x7d')]-=0x1;}else{logger['error'](_0x865c('0xd7'));}}}else{logger[_0x865c('0x9f')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x865c('0x1e')][_0x865c('0xd8')]=function(_0x11f10b,_0x8749e8){var _0x2e4090=this;return function(_0x25bc5b){_0x2e4090[_0x865c('0xbc')](_0x8749e8);logger[_0x865c('0x9f')](_0x11f10b,util['inspect'](_0x25bc5b,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x865c('0xd9')]=function(_0x1d7e20,_0x1aec23,_0x217d97){var _0x2a00a9={'state':0x19,'statedesc':_0x865c('0xda')};this[_0x865c('0xbc')](_0x1aec23);this[_0x865c('0xdb')](_[_0x865c('0xdc')](_0x2a00a9,_[_0x865c('0xdd')](_0x217d97,['ContactId','ListId',_0x865c('0xde'),_0x865c('0xdf'),_0x865c('0xe0')])),'[emptyContact][createHistory]',_0x865c('0xe1'));logger[_0x865c('0x9f')](_0x1d7e20);};Dialer[_0x865c('0x1e')]['isSuccess']=function(_0x6b8b61){return _0x6b8b61==='Success';};Dialer[_0x865c('0x1e')][_0x865c('0xe2')]=function(_0x4b4dd7){return!_['isUndefined'](_0x4b4dd7)&&_0x4b4dd7&&!_['isUndefined'](_0x4b4dd7['name'])&&!_[_0x865c('0x45')](_0x4b4dd7['active'])&&_0x4b4dd7[_0x865c('0x83')]&&(this[_0x865c('0x25')][util[_0x865c('0x85')](_0x865c('0xe3'),_0x4b4dd7[_0x865c('0x4a')])][_0x865c('0xe4')]==='reachable'||this[_0x865c('0x25')][util[_0x865c('0x85')](_0x865c('0xe3'),_0x4b4dd7['name'])][_0x865c('0xe4')]===_0x865c('0xe5'));};Dialer[_0x865c('0x1e')]['saveInDb']=function(_0x1ad14a,_0x558f86,_0x500577){this['createHistory'](_0x1ad14a)[_0x865c('0xba')](loggerCatch(_0x558f86));this[_0x865c('0xe6')](_0x1ad14a)[_0x865c('0xba')](loggerCatch(_0x500577));};Dialer[_0x865c('0x1e')][_0x865c('0x3d')]=function(_0x2adf55){var _0x5a6419=this;var _0x1c89c6=this['uniqueId'][_0x2adf55[_0x865c('0xe7')]];var _0x1df412;if(!_[_0x865c('0xb8')](_0x2adf55)&&!_['isNil'](_0x2adf55[_0x865c('0xe8')])&&!_[_0x865c('0xb8')](_0x2adf55[_0x865c('0xe8')][_0x865c('0xe9')])&&_0x2adf55[_0x865c('0xea')]==='xcally-motion-dialer'&&_0x1c89c6){if(_0x1c89c6['type']!=='ivr'&&this[_0x865c('0x22')][_0x1c89c6['queue']]['dialAMDActive']&&_0x2adf55['value']===_0x865c('0xeb')){delete this[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]]);this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x69')]+=0x1;this[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x68')]+=0x1;_0x1df412=new Hangup(_0x1c89c6,_0x2adf55);_0x1df412[_0x865c('0xb0')]=0x12;_0x1df412[_0x865c('0xec')]='HangupInAMD';_0x1df412[_0x865c('0xed')]='AMD';ami['emit'](_0x865c('0xee'),ut['buildObj'](_0x1df412,_0x865c('0xef')));this[_0x865c('0xdb')](_0x1df412,_0x865c('0xf0'),_0x865c('0xf1'));}if(_0x1c89c6['type']!==_0x865c('0x86')&&this['voiceQueues'][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0xf2')]&&_0x2adf55[_0x865c('0xf3')]==='MACHINE'){return new Promise(function(_0x21bdcc,_0x4a2412){delete _0x5a6419[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];_0x5a6419[_0x865c('0xbc')](_0x5a6419[_0x865c('0x22')][_0x1c89c6[_0x865c('0xbd')]]);_0x5a6419[_0x865c('0x22')][_0x1c89c6['queue']]['outboundAnswerCallsDay']+=0x1;_0x5a6419['voiceQueues'][_0x1c89c6['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x38e853=_0x5a6419[_0x865c('0x22')][_0x1c89c6['queue']];var _0xed1434=new Hangup(_0x1c89c6,_0x2adf55);_0xed1434[_0x865c('0xb0')]=0x13;_0xed1434[_0x865c('0xec')]=_0x865c('0xf4');_0xed1434[_0x865c('0xed')]=_0x865c('0xf5');_0xed1434[_0x865c('0xf6')]+=0x1;_0xed1434['countglobal']+=0x1;_0xed1434[_0x865c('0xef')]=!![];ami[_0x865c('0x57')](_0x865c('0xee'),ut[_0x865c('0xf7')](_0xed1434,_0x865c('0xef')));_0x5a6419['createHistory'](_0xed1434)[_0x865c('0xba')](loggerCatch(_0x865c('0xf8')));if(_0xed1434['countbusyretry']+_0xed1434[_0x865c('0xf9')]+_0xed1434[_0x865c('0xfa')]+_0xed1434[_0x865c('0xfb')]+_0xed1434['countdropretry']+_0xed1434[_0x865c('0xfc')]+_0xed1434[_0x865c('0xf6')]+_0xed1434[_0x865c('0xfd')]>=_0x38e853[_0x865c('0xfe')]){_0x5a6419[_0x865c('0xff')](_0xed1434,_0x21bdcc,_0x4a2412,_0x865c('0x100'));}else{if(_0xed1434[_0x865c('0xf6')]>=_0x38e853[_0x865c('0x101')]){_0x5a6419[_0x865c('0x102')](_0xed1434,_0x21bdcc,_0x4a2412,_0x865c('0x103'));}else{_0x5a6419[_0x865c('0xcd')]({'active':![],'countmachineretry':_0xed1434['countmachineretry'],'scheduledat':moment()['add'](_0x38e853[_0x865c('0x104')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0xed1434[_0x865c('0x107')],'ListId':_0xed1434[_0x865c('0x108')],'VoiceQueueId':_0xed1434[_0x865c('0xdf')]||undefined,'CampaignId':_0xed1434['CampaignId']||undefined})['catch'](loggerCatch(_0x865c('0x109')));_0x21bdcc({'reschedule':0x1});}}});}if(_0x1c89c6[_0x865c('0x58')]==='ivr'&&this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]['dialAMDActive']&&_0x2adf55[_0x865c('0xf3')]===_0x865c('0xeb')){delete this[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]);_0x1df412=new Hangup(_0x1c89c6,_0x2adf55);_0x1df412[_0x865c('0xb0')]=0x12;_0x1df412[_0x865c('0xec')]=_0x865c('0x10a');_0x1df412[_0x865c('0xed')]=_0x865c('0xf5');ami[_0x865c('0x57')](_0x865c('0xee'),ut[_0x865c('0xf7')](_0x1df412,_0x865c('0xef')));this['saveInDb'](_0x1df412,_0x865c('0x10b'),_0x865c('0x10c'));}if(_0x1c89c6[_0x865c('0x58')]===_0x865c('0x86')&&this[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]]['dialAMDActive']&&_0x2adf55[_0x865c('0xf3')]===_0x865c('0x10d')){return new Promise(function(_0x1b0ade,_0x235168){delete _0x5a6419[_0x865c('0x2a')][_0x2adf55[_0x865c('0xe7')]];_0x5a6419['updateOriginated'](_0x5a6419['campaigns'][_0x1c89c6[_0x865c('0xbd')]]);_0x5a6419[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]][_0x865c('0x69')]+=0x1;_0x5a6419[_0x865c('0x23')][_0x1c89c6['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x20b918=_0x5a6419[_0x865c('0x23')][_0x1c89c6[_0x865c('0xbd')]];var _0x505e68=new Hangup(_0x1c89c6,_0x2adf55);_0x505e68[_0x865c('0xb0')]=0x13;_0x505e68['statedesc']=_0x865c('0xf4');_0x505e68[_0x865c('0xed')]='AMD';_0x505e68['countmachineretry']+=0x1;_0x505e68[_0x865c('0x10e')]+=0x1;_0x505e68[_0x865c('0xef')]=!![];ami[_0x865c('0x57')](_0x865c('0xee'),ut['buildObj'](_0x505e68,_0x865c('0xef')));_0x5a6419[_0x865c('0xd6')](_0x505e68)[_0x865c('0xba')](loggerCatch(_0x865c('0xf8')));if(_0x505e68[_0x865c('0x10f')]+_0x505e68[_0x865c('0xf9')]+_0x505e68[_0x865c('0xfa')]+_0x505e68[_0x865c('0xfb')]+_0x505e68[_0x865c('0x110')]+_0x505e68['countabandonedretry']+_0x505e68[_0x865c('0xf6')]+_0x505e68[_0x865c('0xfd')]>=_0x20b918[_0x865c('0xfe')]){_0x5a6419[_0x865c('0xff')](_0x505e68,_0x1b0ade,_0x235168,_0x865c('0x100'));}else{if(_0x505e68[_0x865c('0xf6')]>=_0x20b918[_0x865c('0x101')]){_0x5a6419[_0x865c('0x102')](_0x505e68,_0x1b0ade,_0x235168,_0x865c('0x103'));}else{_0x5a6419[_0x865c('0xcd')]({'active':![],'countmachineretry':_0x505e68[_0x865c('0xf6')],'scheduledat':moment()['add'](_0x20b918[_0x865c('0x104')],_0x865c('0x105'))['format'](_0x865c('0x106')),'ContactId':_0x505e68[_0x865c('0x107')],'ListId':_0x505e68[_0x865c('0x108')],'VoiceQueueId':_0x505e68[_0x865c('0xdf')]||undefined,'CampaignId':_0x505e68['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x109')));_0x1b0ade({'reschedule':0x1});}}});}}};Dialer[_0x865c('0x1e')][_0x865c('0x3a')]=function(_0x35710b){var _0x489902=this[_0x865c('0x2a')][_0x35710b['uniqueid']];var _0x362cdf;if(_0x489902&&_0x489902[_0x865c('0x58')]===_0x865c('0x86')){delete this[_0x865c('0x2a')][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this['campaigns'][_0x489902[_0x865c('0xbd')]]);this[_0x865c('0x23')][_0x489902['queue']][_0x865c('0x111')]+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);this[_0x865c('0xd6')](_0x362cdf)[_0x865c('0xba')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x865c('0xe6')](_0x362cdf)['catch'](loggerCatch('[syncHangupIvr]'));}if(_0x489902&&_0x489902[_0x865c('0x58')]!==_0x865c('0x86')&&isNotNull(this['voiceQueues'][_0x489902['queue']][_0x865c('0x112')])){delete this['uniqueId'][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this['voiceQueues'][_0x489902['queue']]);this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]]['outboundAnswerCallsDay']+=0x1;this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]]['outboundAnswerAgiCallsDay']+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);_0x362cdf[_0x865c('0xb0')]=0x10;_0x362cdf[_0x865c('0xec')]=_0x865c('0x113');_0x362cdf[_0x865c('0xed')]=_0x865c('0x114');this['createHistory'](_0x362cdf)[_0x865c('0xba')](loggerCatch(_0x865c('0x115')));this[_0x865c('0xe6')](_0x362cdf)[_0x865c('0xba')](loggerCatch(_0x865c('0x116')));}if(_0x489902&&_0x489902['type']!=='ivr'&&!isNotNull(this[_0x865c('0x22')][_0x489902[_0x865c('0xbd')]][_0x865c('0x112')])){delete this['uniqueId'][_0x35710b[_0x865c('0xe7')]];this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x489902['queue']]);this[_0x865c('0x22')][_0x489902['queue']]['outboundUnknownCallsDay']+=0x1;_0x362cdf=new Hangup(_0x489902,_0x35710b);_0x362cdf['state']=0xc;_0x362cdf[_0x865c('0xec')]=_0x35710b[_0x865c('0x117')];_0x362cdf[_0x865c('0xed')]=_0x865c('0x118');this[_0x865c('0xd6')](_0x362cdf)['catch'](loggerCatch(_0x865c('0x115')));this[_0x865c('0xe6')](_0x362cdf)[_0x865c('0xba')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x865c('0x1e')]['syncAgentComplete']=function(_0x9ecb9f){var _0x143109=this['uniqueId'][_0x9ecb9f[_0x865c('0xe7')]];if(this[_0x865c('0x22')][_0x9ecb9f['queue']]){if(_0x143109&&_0x143109[_0x865c('0x58')]!=='ivr'){delete this[_0x865c('0x2a')][_0x9ecb9f[_0x865c('0xe7')]];this['voiceQueues'][_0x9ecb9f['queue']][_0x865c('0x69')]+=0x1;var _0x29e109=new AgentComplete(_0x143109,_0x9ecb9f);if(_0x9ecb9f[_0x865c('0x119')]===_0x865c('0x11a')){_0x29e109[_0x865c('0x11b')]=this['voiceQueues'][_0x9ecb9f[_0x865c('0xbd')]]['dialQueueProject2']&&this[_0x865c('0x22')][_0x9ecb9f['queue']][_0x865c('0x11c')]?moment()[_0x865c('0x85')](_0x865c('0x106')):undefined;}this['createHistory'](_0x29e109)[_0x865c('0xba')](loggerCatch(_0x865c('0x11d')));this[_0x865c('0xe6')](_0x29e109)[_0x865c('0xba')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x865c('0x1e')][_0x865c('0x2f')]=function(_0x211f9f){if(this[_0x865c('0x22')][_0x211f9f[_0x865c('0xbd')]]){if(this['uniqueId'][_0x211f9f[_0x865c('0xe7')]]&&this['uniqueId'][_0x211f9f[_0x865c('0xe7')]][_0x865c('0x58')]!=='ivr'){this[_0x865c('0xbc')](this[_0x865c('0x22')][_0x211f9f['queue']]);this[_0x865c('0x2a')][_0x211f9f[_0x865c('0xe7')]][_0x865c('0x11e')]=moment()['format'](_0x865c('0x106'));}}};Dialer[_0x865c('0x1e')][_0x865c('0x11f')]=function(_0x52e8c4,_0x129770){this[_0x865c('0xd6')](_0x52e8c4)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x129770==0x0){this['moveContactManagedDialer'](_0x52e8c4)[_0x865c('0xba')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer['prototype'][_0x865c('0x31')]=function(_0x1235ce){var _0x4b4975=this[_0x865c('0x2a')][_0x1235ce[_0x865c('0xe7')]];var _0x28ea1a=this;var _0x4182f4=![];var _0x20b307;var _0xa78483;if(this[_0x865c('0x22')][_0x1235ce['queue']]){if(_0x4b4975&&_0x4b4975[_0x865c('0x58')]!==_0x865c('0x86')){delete this[_0x865c('0x2a')][_0x1235ce['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]]);_0x4b4975[_0x865c('0x120')]=moment()[_0x865c('0x85')](_0x865c('0x106'));var _0x1a4e62=new QueueCallerAbandon(_0x4b4975,_0x1235ce);if(getSeconds(_0x4b4975['droptime'],_0x4b4975[_0x865c('0x121')])>=_0x4b4975[_0x865c('0x122')]){this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x76')]+=0x1;this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x123')]+=0x1;this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x1a4e62[_0x865c('0xb0')]=0xa;_0x1a4e62[_0x865c('0xec')]=_0x865c('0x124');_0x1a4e62['dropreason']=_0x865c('0x125');_0x1a4e62[_0x865c('0x11b')]=this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x126')]?moment()['format'](_0x865c('0x106')):undefined;_0x1a4e62[_0x865c('0x110')]+=0x1;_0x1a4e62['countglobal']+=0x1;_0x20b307=this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x127')];_0xa78483=this[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x128')];_0x28ea1a[_0x865c('0xc5')](_0x1a4e62,_0x1a4e62[_0x865c('0xb0')],_0x4b4975[_0x865c('0x129')])[_0x865c('0xc2')](function(_0x87e07){_0x4182f4=_0x87e07[_0x865c('0x12a')]==0x1;if(_0x1a4e62[_0x865c('0x110')]>=_0x28ea1a[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x12b')]){_0x28ea1a[_0x865c('0x11f')](_0x1a4e62,_0x87e07['additional']);}else{_0x28ea1a[_0x865c('0xcd')]({'active':![],'countdropretry':_0x1a4e62[_0x865c('0x110')],'scheduledat':moment()[_0x865c('0x12c')](_0x28ea1a[_0x865c('0x22')][_0x1235ce['queue']]['dialDropRetryFrequency'],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x4b4975['ContactId'],'ListId':_0x4b4975['ListId'],'VoiceQueueId':_0x4b4975[_0x865c('0xdf')]||undefined,'CampaignId':_0x4b4975['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x12d')));var _0x5326de=new History(_0x1a4e62);_0x5326de[_0x865c('0xb0')]=0xa;_0x5326de[_0x865c('0xec')]=_0x865c('0x124');_0x5326de['starttime']=moment()[_0x865c('0x85')](_0x865c('0x106'));_0x5326de[_0x865c('0xb1')]=_0x5326de[_0x865c('0x12e')];_0x5326de['calleridname']=_0x1a4e62[_0x865c('0x12f')];_0x5326de[_0x865c('0x130')]=_0x1a4e62[_0x865c('0x130')];_0x28ea1a[_0x865c('0xd6')](_0x5326de)['catch'](loggerCatch(_0x865c('0x131')));}})[_0x865c('0xc2')](function(){if(_0x4182f4)_0x28ea1a[_0x865c('0xc7')](_0x1a4e62,_0x20b307,_0xa78483)[_0x865c('0xc2')](function(){return 0x1;});});}else{this['voiceQueues'][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x8f')]+=0x1;this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]][_0x865c('0x6c')]+=0x1;_0x1a4e62['state']=0xb;_0x1a4e62[_0x865c('0xec')]='Abandoned';_0x1a4e62[_0x865c('0x132')]=_0x865c('0x133');_0x1a4e62[_0x865c('0xfc')]+=0x1;_0x1a4e62[_0x865c('0x10e')]+=0x1;_0x20b307=this[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['dialAbandonedRetryFrequency'];_0xa78483=this[_0x865c('0x22')][_0x1235ce['queue']]['callAdditionalPhoneAfterMin'];_0x28ea1a[_0x865c('0xc5')](_0x1a4e62,_0x1a4e62[_0x865c('0xb0')],_0x4b4975[_0x865c('0x129')])[_0x865c('0xc2')](function(_0x81b5cf){if(_0x1a4e62[_0x865c('0xfc')]>=_0x28ea1a[_0x865c('0x22')][_0x1235ce['queue']][_0x865c('0x134')]){_0x28ea1a[_0x865c('0x11f')](_0x1a4e62,_0x81b5cf[_0x865c('0x12a')]);}else{_0x28ea1a[_0x865c('0xcd')]({'active':![],'countabandonedretry':_0x1a4e62[_0x865c('0xfc')],'scheduledat':moment()[_0x865c('0x12c')](_0x28ea1a[_0x865c('0x22')][_0x1235ce[_0x865c('0xbd')]]['dialAbandonedRetryFrequency'],_0x865c('0x105'))['format'](_0x865c('0x106')),'ContactId':_0x4b4975['ContactId'],'ListId':_0x4b4975['ListId'],'VoiceQueueId':_0x4b4975[_0x865c('0xdf')]||undefined,'CampaignId':_0x4b4975[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x135')));var _0x402816=new History(_0x1a4e62);_0x402816['state']=0xb;_0x402816[_0x865c('0xec')]=_0x865c('0x136');_0x402816['starttime']=moment()['format'](_0x865c('0x106'));_0x402816[_0x865c('0xb1')]=_0x402816[_0x865c('0x12e')];_0x402816[_0x865c('0x12f')]=_0x1a4e62[_0x865c('0x12f')];_0x402816['calleridnum']=_0x1a4e62[_0x865c('0x130')];_0x28ea1a[_0x865c('0xd6')](_0x402816)[_0x865c('0xba')](loggerCatch(_0x865c('0x137')));}})[_0x865c('0xc2')](function(){if(_0x4182f4)_0x28ea1a[_0x865c('0xc7')](_0x1a4e62,_0x20b307,_0xa78483)[_0x865c('0xc2')](function(){return 0x1;});});}}}};Dialer['prototype'][_0x865c('0x3c')]=function(_0x39fdf5){if(this[_0x865c('0x28')][_0x39fdf5[_0x865c('0xe7')]]){this[_0x865c('0x28')][_0x39fdf5[_0x865c('0xe7')]][_0x865c('0xb9')]=_0x39fdf5['channel'];}if(this[_0x865c('0x2a')][_0x39fdf5[_0x865c('0xe7')]]){this[_0x865c('0x2a')][_0x39fdf5[_0x865c('0xe7')]]['channel']=_0x39fdf5[_0x865c('0xb9')];}};Dialer['prototype']['syncQueueMember']=function(_0x5a760d){if(strategy[this['voiceQueues'][this['actions'][_0x5a760d['actionid']][_0x865c('0xbd')]][_0x865c('0x5a')]]===_0x865c('0x1d')){if(this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]&&_['isNil'](this['actions'][_0x5a760d[_0x865c('0x138')]][_0x865c('0x139')])&&_0x5a760d['status']==='1'&&_0x5a760d['paused']==='0'){if(this[_0x865c('0x24')][_0x5a760d[_0x865c('0x13a')]]){if(!this[_0x865c('0x24')][_0x5a760d['stateinterface']][_0x865c('0x139')]){this[_0x865c('0x24')][_0x5a760d['stateinterface']][_0x865c('0x139')]=!![];this[_0x865c('0x28')][_0x5a760d['actionid']][_0x865c('0x139')]=!![];this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0x13a')]=_0x5a760d[_0x865c('0x13a')];}}}}else if((strategy[this[_0x865c('0x22')][this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0xbd')]]['strategy']]||_0x865c('0x1c'))===_0x865c('0x1c')){if(this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]){if(this[_0x865c('0x24')][_0x5a760d[_0x865c('0x13a')]]){this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]][_0x865c('0x13a')]=_0x5a760d['stateinterface'];if(_[_0x865c('0xb8')](this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x5a760d['actionid']][_0x865c('0xbd')]])){this[_0x865c('0x13b')][this['actions'][_0x5a760d[_0x865c('0x138')]][_0x865c('0xbd')]]=[];}this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x5a760d[_0x865c('0x138')]]['queue']][_0x865c('0x13c')](_[_0x865c('0xdc')](_[_0x865c('0xdd')](this[_0x865c('0x28')][_0x5a760d['actionid']],[_0x865c('0x13d'),'stateinterface']),{'status':_0x5a760d[_0x865c('0xe4')],'paused':_0x5a760d[_0x865c('0x13e')]}));}}}};function unlockQueueStatus(_0x588493,_0x29477f){setTimeout(function(){if(_[_0x865c('0x45')](_0x588493[_0x865c('0x13f')])){loggerBooked['error'](_0x865c('0x140'),_0x29477f);}_0x588493[_0x865c('0x13f')]=!![];loggerBooked[_0x865c('0x8a')]('[booked][unlockQueueStatus]',_0x29477f,JSON[_0x865c('0x53')](_[_0x865c('0xdd')](_0x588493,[_0x865c('0x4a'),_0x865c('0x13f')])));},0x1f3);}Dialer[_0x865c('0x1e')]['syncQueueStatusComplete']=function(_0x3e8c67){var _0x548dad=this;var _0x1a8e9f=_0x548dad[_0x865c('0x22')][_0x548dad['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]];if(strategy[this[_0x865c('0x22')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']][_0x865c('0x5a')]]===_0x865c('0x1d')){if(this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]&&this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x13a')]){this['preview']['run'](this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['idHopper'],this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['stateinterface'])[_0x865c('0xba')](function(_0xc09560){logger[_0x865c('0x9f')](_0x865c('0x141'),util[_0x865c('0x9e')](_0xc09560,{'showHidden':![],'depth':null}));})[_0x865c('0x20')](function(){_0x548dad[_0x865c('0xbc')](_0x548dad[_0x865c('0x22')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']]);_0x548dad['agents'][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x13a')]][_0x865c('0x139')]=![];delete _0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);});}else{this[_0x865c('0xbc')](this[_0x865c('0x22')][this['actions'][_0x3e8c67['actionid']]['queue']]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x107')],'ListId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x108')],'VoiceQueueId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this['actions'][_0x3e8c67['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x865c('0x142')));delete this[_0x865c('0x28')][_0x3e8c67['actionid']];unlockQueueStatus(_0x1a8e9f);}}else if((strategy[this['voiceQueues'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x5a')]]||_0x865c('0x1c'))===_0x865c('0x1c')){var _0x3beba5;if(this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]&&!_[_0x865c('0x50')](this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]])){if(this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]){this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0xbd')]]=this[_0x865c('0x143')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]?this[_0x865c('0x143')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]:this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]?this['queueBooked'][this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0xbd')]]['_rr']||0x0:0x0;}this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x144')]=this[_0x865c('0x143')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]];for(var _0x4f9946=0x0;_0x4f9946<this[_0x865c('0x13b')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['queue']]['length'];_0x4f9946+=0x1){_0x3beba5=rr(this[_0x865c('0x13b')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0x143')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]=this['queueBooked'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]][_0x865c('0x144')];if(_0x3beba5[_0x865c('0xe4')]==='1'&&_0x3beba5[_0x865c('0x13e')]==='0'){break;}}if(!_[_0x865c('0xb8')](_0x3beba5)){this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]]['unlockRR']=_[_0x865c('0x45')](this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]][_0x865c('0x145')])?!![]:this['agents'][_0x3beba5[_0x865c('0x13a')]][_0x865c('0x145')];}loggerBooked[_0x865c('0x8a')](_0x865c('0x146'),_0x3e8c67['actionid'],_0x865c('0x147'),JSON[_0x865c('0x53')](_[_0x865c('0xdd')](this[_0x865c('0x24')][_0x3beba5['stateinterface']],[_0x865c('0x4a'),_0x865c('0x145')])),_0x865c('0x148'),JSON[_0x865c('0x53')](_0x3beba5['idHopper']));if(!_[_0x865c('0xb8')](_0x3beba5)&&_0x3beba5[_0x865c('0xe4')]==='1'&&_0x3beba5['paused']==='0'&&this[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]]['unlockRR']){this['agents'][_0x3beba5['stateinterface']][_0x865c('0x145')]=![];this[_0x865c('0x13b')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]=[];this[_0x865c('0x21')][_0x865c('0x149')](_0x3beba5[_0x865c('0x13d')],_0x3beba5['stateinterface'])[_0x865c('0xba')](function(_0x35be36){logger[_0x865c('0x9f')](_0x865c('0x141'),util[_0x865c('0x9e')](_0x35be36,{'showHidden':![],'depth':null}));})[_0x865c('0x20')](function(){_0x548dad[_0x865c('0xbc')](_0x548dad[_0x865c('0x22')][_0x548dad[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);setTimeout(function(){_0x548dad[_0x865c('0x24')][_0x3beba5['stateinterface']][_0x865c('0x145')]=!![];loggerBooked[_0x865c('0x8a')]('[booked][RR][finaly]',_0x3e8c67[_0x865c('0x138')],_0x865c('0x147'),JSON[_0x865c('0x53')](_[_0x865c('0xdd')](_0x548dad[_0x865c('0x24')][_0x3beba5[_0x865c('0x13a')]],[_0x865c('0x4a'),_0x865c('0x145')])),_0x865c('0x148'),JSON['stringify'](_0x3beba5[_0x865c('0x13d')]));},0xc7);delete _0x548dad['actions'][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f,_0x3e8c67[_0x865c('0x138')]);});}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14a'));this[_0x865c('0xbc')](this[_0x865c('0x22')][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x107')],'ListId':this[_0x865c('0x28')][_0x3e8c67['actionid']][_0x865c('0x108')],'VoiceQueueId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x142')));delete this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14b'));this[_0x865c('0xbc')](this['voiceQueues'][this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this['actions'][_0x3e8c67['actionid']][_0x865c('0x107')],'ListId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['ListId'],'VoiceQueueId':this['actions'][_0x3e8c67['actionid']][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this['actions'][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}}else{loggerBooked[_0x865c('0x8a')](_0x865c('0x14c'));this[_0x865c('0xbc')](this[_0x865c('0x22')][this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xbd')]]);this[_0x865c('0xcd')]({'active':![],'ContactId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]]['ContactId'],'ListId':this['actions'][_0x3e8c67[_0x865c('0x138')]][_0x865c('0x108')],'VoiceQueueId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xdf')]||undefined,'CampaignId':this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x14d')));delete this[_0x865c('0x28')][_0x3e8c67[_0x865c('0x138')]];unlockQueueStatus(_0x1a8e9f);}};Dialer['prototype'][_0x865c('0x41')]=function(){var _0x3ba080=this;return cmHopper[_0x865c('0x14e')]({'active':![]},{'where':{'active':!![]}})[_0x865c('0xc2')](function(){setInterval(function(){_0x3ba080[_0x865c('0x14f')]();},0x3e8);});};Dialer['prototype'][_0x865c('0x150')]=function(_0xc9fb53){var _0x219223=this;return function(){if(!_0x219223[_0x865c('0xe2')](_0xc9fb53[_0x865c('0x82')])){if(!_0x219223[_0x865c('0xe2')](_0xc9fb53['TrunkBackup'])){_0xc9fb53[_0x865c('0x48')]=_0x865c('0x151');throw _0xc9fb53[_0x865c('0x4a')]+_0x865c('0x152');}}};};Dialer[_0x865c('0x1e')][_0x865c('0x153')]=function(_0x3a5888,_0x47bb11,_0x337a2d,_0x2db26b){var _0xacf5a7=this;return function(){var _0x3f88e3=!![];return _0xacf5a7[_0x865c('0x154')](_0x3a5888,_0x47bb11,_0x337a2d,_0x2db26b,_0x3f88e3);};};Dialer['prototype'][_0x865c('0x155')]=function(_0xba72d6,_0x4f1142,_0x3fe8fd,_0x461e2d){var _0x2a908a=this;return function(){var _0x16c0f6=![];return _0x2a908a['ifTime'](_0xba72d6[_0x865c('0x4f')],_0x4f1142,_0x3fe8fd,_0x461e2d,_0x16c0f6);};};Dialer['prototype']['ifTime']=function(_0x3a0ddf,_0x148907,_0xf8e2db,_0x2638e4,_0x51d8e5){var _0x54cb5d=[];return new Promise(function(_0x580d31,_0x53ed80){if(!isNotNull(_0x3a0ddf)){_0x2638e4[_0x865c('0x48')]='INTERVAL_IS_NULL';return _0x53ed80(msgResponse('ifTime',_0x865c('0x156'),_0xf8e2db+_0x865c('0x157')));}if(_[_0x865c('0x50')](_0x3a0ddf)){_0x2638e4[_0x865c('0x48')]='INTERVAL_IS_EMPTY';return _0x53ed80(msgResponse(_0x865c('0x154'),'Failure',_0xf8e2db+'\x20Intervals\x20is\x20empty\x20'));}if(_0x148907&&_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])){_0x2638e4[_0x865c('0x48')]=_0x865c('0x159');return _0x53ed80(msgResponse(_0x865c('0x154'),_0x865c('0x156'),_0xf8e2db+_0x865c('0x15a')+_0x148907));}if(_[_0x865c('0x15b')](_0x3a0ddf)){for(var _0x26c929=0x0;_0x26c929<_0x3a0ddf[_0x865c('0xa1')];_0x26c929+=0x1){_0x54cb5d['push'](ami[_0x865c('0x15c')]({'action':_0x865c('0x15d'),'command':util[_0x865c('0x85')]('iftime\x20%s,%s',_0x3a0ddf[_0x26c929][_0x865c('0x15e')],!_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])?_0x148907:'')})[_0x865c('0xc2')](function(_0x1d38e7){return _0x1d38e7[_0x865c('0x15f')][_0x865c('0x160')](_0x865c('0x161'))>=0x0;})[_0x865c('0xba')](myreject(_0x53ed80)));}}else{_0x54cb5d[_0x865c('0x13c')](ami['Action']({'action':_0x865c('0x15d'),'command':util[_0x865c('0x85')](_0x865c('0x162'),_0x3a0ddf,!_[_0x865c('0x45')](config[_0x865c('0x158')][_0x148907])?_0x148907:'')})[_0x865c('0xc2')](function(_0xf2970a){return _0xf2970a[_0x865c('0x15f')][_0x865c('0x160')](_0x865c('0x161'))>=0x0;})[_0x865c('0xba')](myreject(_0x53ed80)));}Promise['all'](_0x54cb5d)[_0x865c('0xc2')](function(_0x128e45){var _0x5ecadc=_['some'](_0x128e45);if(_0x5ecadc){return _0x580d31(_0x5ecadc);}else{_0x2638e4[_0x865c('0x48')]=_0x51d8e5?_0x865c('0x163'):_0x865c('0x164');return _0x53ed80(msgResponse(_0x865c('0x165'),'Failure',_0x865c('0x166')+_0x51d8e5+'\x20'+_0xf8e2db+_0x865c('0x167')+util['inspect'](_0x3a0ddf,{'showHidden':![],'depth':null})+_0x865c('0x168')+_0x148907));}})[_0x865c('0xba')](function(_0x25d489){return _0x53ed80(msgResponse(_0x865c('0x154'),_0x865c('0x156'),JSON[_0x865c('0x53')](_0x25d489)));});});};Dialer[_0x865c('0x1e')][_0x865c('0x169')]=function(_0x4d95f9){var _0x386d13=this;return function(){switch(_0x4d95f9[_0x865c('0x64')]){case _0x865c('0x16a'):freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,0x1);break;case _0x865c('0x16c'):freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,_0x4d95f9[_0x865c('0x16d')]);break;case'predictive':_0x386d13[_0x865c('0x16e')](_0x4d95f9);break;case'booked':freeVariablesPredictive(_0x4d95f9);_0x386d13[_0x865c('0x16b')](_0x4d95f9,0x1);break;default:freeVariablesPredictive(_0x4d95f9);logger[_0x865c('0x9f')](_0x865c('0x16f'),_0x4d95f9[_0x865c('0x4a')],_0x865c('0x170'));}};};Dialer['prototype'][_0x865c('0x171')]=function(_0x3df66e){return Promise[_0x865c('0xc1')]()['then'](cmHopper[_0x865c('0x172')](_0x3df66e['id'],previewRecallmeReminderInterval))[_0x865c('0xc2')](function(_0x1e4002){for(var _0x199fb7=0x0;_0x199fb7<_0x1e4002[_0x865c('0xa1')];_0x199fb7++){var _0x3c8399=_0x1e4002[_0x199fb7][_0x865c('0x173')][_0x865c('0x4a')];if(_0x3c8399)io['to'](util[_0x865c('0x85')]('user:%s',_0x3c8399))[_0x865c('0x57')](_0x865c('0x174'),{'hopper':_0x1e4002[_0x199fb7]});}})[_0x865c('0xba')](function(){});};Dialer[_0x865c('0x1e')][_0x865c('0x175')]=function(_0x3614e8){var _0x2ff0bd=this;return function(){_0x2ff0bd[_0x865c('0x176')](_0x3614e8);};};Dialer[_0x865c('0x1e')][_0x865c('0x9')]=function(_0x15534d){var _0x59bccd=this;if(isNotPreview(_0x15534d['dialMethod'])){if(isVoiceQueueOutbound(_0x15534d[_0x865c('0x58')])&&isActive(_0x15534d[_0x865c('0x63')])){_0x15534d['sendMessageOneNotActive']=!![];Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](checkIsLoggedIn(_0x15534d,_0x15534d[_0x865c('0x5c')]))[_0x865c('0xc2')](checkIsActive(_0x15534d,_0x15534d[_0x865c('0x63')]))[_0x865c('0xc2')](checkInterval(_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x150')](_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x153')](_0x15534d[_0x865c('0x177')],_0x15534d['dialTimezone'],_0x15534d['name'],_0x15534d))['then'](_0x59bccd[_0x865c('0x155')](_0x15534d[_0x865c('0x4c')],_0x15534d[_0x865c('0x178')],_0x15534d[_0x865c('0x4a')],_0x15534d))[_0x865c('0xc2')](_0x59bccd[_0x865c('0x169')](_0x15534d))[_0x865c('0xba')](loggerCatchQueueSummary(_0x865c('0x179'),_0x15534d));}else{notSendMessagesQueue(_0x15534d);}}else{freeVariablesPredictive(_0x15534d);}};Dialer[_0x865c('0x1e')][_0x865c('0x38')]=_[_0x865c('0x17a')](function(){var _0x24d33f=_[_0x865c('0x17b')](this['voiceQueues'],function(_0x5a6840){return _0x5a6840['dialPreviewRecallmeReminder'];});var _0x4c4f28=_[_0x865c('0x17b')](this['agents'],function(_0x31ace3){return _0x31ace3[_0x865c('0x17c')]&&_0x31ace3[_0x865c('0xe4')]==='reachable';});if(_0x24d33f['length']>0x0&&_0x4c4f28['length']>0x0){return Promise[_0x865c('0xc1')]()['then'](cmHopper[_0x865c('0x172')](_[_0x865c('0x17d')](_0x24d33f,'id'),previewRecallmeReminderInterval,_['map'](_0x4c4f28,'id')))['then'](function(_0x31ea7c){for(var _0x26c8e3=0x0;_0x26c8e3<_0x31ea7c[_0x865c('0xa1')];_0x26c8e3++){var _0x167f38=_0x31ea7c[_0x26c8e3]['Agent'][_0x865c('0x4a')];if(_0x167f38)io['to'](util['format'](_0x865c('0x17e'),_0x167f38))[_0x865c('0x57')](_0x865c('0x174'),{'hopper':_0x31ea7c[_0x26c8e3]});}})['catch'](function(_0x13318e){logger[_0x865c('0x9f')](_0x865c('0x171'),_0x13318e);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x865c('0x1e')]['syncCampaigns']=function(){var _0x32b6b9=this;var _0x5c0087;for(var _0x37a848 in this['campaigns']){if(typeof this['campaigns'][_0x37a848]!==_0x865c('0xb5')){_0x5c0087=this[_0x865c('0x23')][_0x37a848];if(isCampaignIvr(_0x5c0087[_0x865c('0x58')])&&isActive(_0x5c0087[_0x865c('0x83')])){_0x5c0087[_0x865c('0xa9')]=!![];Promise[_0x865c('0xc1')]()[_0x865c('0xc2')](checkIsActive(_0x5c0087,_0x5c0087[_0x865c('0x83')]))[_0x865c('0xc2')](checkInterval(_0x5c0087))[_0x865c('0xc2')](_0x32b6b9['checkIsTrunkReachable'](_0x5c0087))['then'](_0x32b6b9[_0x865c('0x153')](_0x5c0087['dialGlobalInterval'],_0x5c0087[_0x865c('0x178')],_0x5c0087[_0x865c('0x4a')],_0x5c0087))[_0x865c('0xc2')](_0x32b6b9[_0x865c('0x155')](_0x5c0087[_0x865c('0x4c')],_0x5c0087[_0x865c('0x178')],_0x5c0087['name'],_0x5c0087))[_0x865c('0xc2')](_0x32b6b9[_0x865c('0x175')](_0x5c0087))['catch'](loggerCatchQueueSummary(_0x865c('0x17f'),_0x5c0087));}else{notSendMessagesCampaign(_0x5c0087);}}}};function getCallerIdRandom(_0x942466,_0x3fc83f){var _0x5badbc;var _0xc24ae0;var _0x41dd85;if(_0x3fc83f<=0x0){_0x3fc83f=0x1;}_0x5badbc=new RegExp(_0x865c('0x180')+_0x3fc83f+'}$');_0xc24ae0=Math[_0x865c('0x181')](0xa,_0x3fc83f-0x1);_0x41dd85=Math[_0x865c('0x181')](0xa,_0x3fc83f)-0x1;return util[_0x865c('0x85')]('%s',_[_0x865c('0x182')](_0x942466,_0x5badbc,_[_0x865c('0x183')](_0xc24ae0,_0x41dd85)));}function extractCalleridName(_0x550eaa){var _0x2df3a9=_0x550eaa[_0x865c('0x184')](/"(.*?)"/);return _0x2df3a9?_0x2df3a9[0x1]:_0x550eaa;}Dialer['prototype'][_0x865c('0x185')]=function(_0x27140b,_0x3a1ec6){var _0x5f58e1=this;var _0xb1f36a=uuid['v4']();this[_0x865c('0x28')][_0xb1f36a]=new Action(_0x27140b,_0x3a1ec6,_0xb1f36a);return new Promise(function(_0x36cdf2,_0x20c24d){if(_[_0x865c('0x45')](_0x27140b)&&typeof _0x27140b!=='object'){return _0x20c24d(msgResponse(_0x865c('0x186'),_0x865c('0x156'),_0x865c('0x187')));}if(_['isUndefined'](_0x3a1ec6[_0x865c('0x188')])||_0x3a1ec6['phone']===null){return _0x20c24d(msgResponse(_0x865c('0x186'),'Failure',_0x865c('0x189')));}var _0x2ac555={'XMD-CALLERID':_0x5f58e1['actions'][_0xb1f36a]['getCaller'](),'XMD-AGI':_0x27140b[_0x865c('0x112')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x27140b[_0x865c('0x112')]):_0x865c('0x18a'),'XMD-AGIAFTER':_0x27140b[_0x865c('0x126')]?util[_0x865c('0x85')]('\x22agi://%s/square,%s\x22',ipAgi,_0x27140b['dialQueueProject2']):'NONE','XMD-QUEUE':_0x27140b[_0x865c('0x58')]===_0x865c('0x59')?util[_0x865c('0x85')](_0x865c('0x18b'),_0x27140b[_0x865c('0x4a')],_0x27140b['dialQueueOptions']||'',_0x27140b['dialAgiAfterHangupAgent']?'c':'',_0x27140b['dialQueueTimeout']||0x3):_0x865c('0x18a'),'XMD-CONTACTID':_0x3a1ec6['ContactId'],'XMD-CDRTYPE':_0x865c('0x18c'),'CALLERID(all)':_0x5f58e1['actions'][_0xb1f36a]['getCaller'](),'XMD-AMD':_0x27140b[_0x865c('0xf2')]?_0x865c('0x18d'):'NONE','XMD-DESTINATION':_0x865c('0x18e')};if(_0x27140b['dialAMDActive']){_0x2ac555['XMD-AMDINITIALSILENCE']=_0x27140b['dialAMDInitialSilence']||0x9c4;_0x2ac555[_0x865c('0x18f')]=_0x27140b[_0x865c('0x190')]||0x5dc;_0x2ac555[_0x865c('0x191')]=_0x27140b[_0x865c('0x192')]||0x320;_0x2ac555[_0x865c('0x193')]=_0x27140b['dialAMDTotalAnalysisTime']||0x1388;_0x2ac555['XMD-AMDMINWORDLENGTH']=_0x27140b['dialAMDMinWordLength']||0x64;_0x2ac555[_0x865c('0x194')]=_0x27140b[_0x865c('0x195')]||0x32;_0x2ac555[_0x865c('0x196')]=_0x27140b[_0x865c('0x197')]||0x3;_0x2ac555['XMD-AMDSILENCETHRESHOLD']=_0x27140b[_0x865c('0x198')]||0x100;_0x2ac555['XMD-AMDMAXIMUMWORDLENGTH']=_0x27140b[_0x865c('0x199')]||0x1388;}if(_0x27140b[_0x865c('0x58')]===_0x865c('0x59')){_0x2ac555[_0x865c('0x19a')]=_0x3a1ec6['VoiceQueueId'];}else{_0x2ac555[_0x865c('0x19b')]=_0x3a1ec6[_0x865c('0xe0')];}for(var _0x2822da in _0x3a1ec6[_0x865c('0x19c')]){if(typeof _0x3a1ec6[_0x865c('0x19c')][_0x2822da]!==_0x865c('0xb5')){if(isNotNull(_0x3a1ec6[_0x865c('0x19c')][_0x2822da])&&_0x2822da!=='id'&&_0x2822da!=='tags'&&_0x2822da!==_0x865c('0x19d')&&_0x2822da!==_0x865c('0x19e')){_0x2ac555[util[_0x865c('0x85')]('%s%s',_0x865c('0x19f'),_['toUpper'](_0x2822da))]=_0x3a1ec6[_0x865c('0x19c')][_0x2822da];}}}var _0x1da84c=_0x5f58e1[_0x865c('0xe2')](_0x27140b[_0x865c('0x82')])?getCallerId(_0x27140b['Trunk'][_0x865c('0x1a0')],_0x27140b[_0x865c('0x65')],_0x27140b[_0x865c('0x1a1')]>0x0?getCallerIdRandom(_0x27140b[_0x865c('0x1a2')],_0x27140b[_0x865c('0x1a1')]):_0x27140b[_0x865c('0x1a2')]):getCallerId(_[_0x865c('0xb8')](_0x27140b[_0x865c('0x1a3')])?_0x27140b[_0x865c('0x82')][_0x865c('0x1a0')]:_0x27140b[_0x865c('0x1a3')]['callerid'],_0x27140b['dialOriginateCallerIdName'],_0x27140b['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x27140b[_0x865c('0x1a2')],_0x27140b['dialRandomLastDigitCallerIdNumber']):_0x27140b[_0x865c('0x1a2')]);if(_0x1da84c){_0x2ac555[_0x865c('0x1a4')]=_0x5f58e1[_0x865c('0x28')][_0xb1f36a][_0x865c('0x1a5')]=extractCalleridName(_0x1da84c);_0x2ac555[_0x865c('0x1a6')]=_0x3a1ec6['phone'];}_0x27140b[_0x865c('0x1a7')]=_0x2ac555;return ami[_0x865c('0x15c')]({'actionid':_0xb1f36a,'action':_0x865c('0x186'),'channel':_0x5f58e1[_0x865c('0xe2')](_0x27140b['Trunk'])?util[_0x865c('0x85')](_0x865c('0x1a8'),_0x27140b[_0x865c('0x82')][_0x865c('0x4a')],isNotNull(_0x27140b['dialPrefix'])?_0x27140b[_0x865c('0x67')][_0x865c('0x1a9')]()||'':'',_0x27140b['dialCutDigit']>0x0?_0x3a1ec6[_0x865c('0x188')][_0x865c('0x1aa')](_0x27140b[_0x865c('0x1ab')]):_0x3a1ec6['phone']):util[_0x865c('0x85')](_0x865c('0x1a8'),_['isNil'](_0x27140b['TrunkBackup'])?_0x27140b[_0x865c('0x82')]['name']:_0x27140b['TrunkBackup'][_0x865c('0x4a')],isNotNull(_0x27140b[_0x865c('0x67')])?_0x27140b['dialPrefix'][_0x865c('0x1a9')]()||'':'',_0x27140b[_0x865c('0x1ab')]>0x0?_0x3a1ec6[_0x865c('0x188')]['substring'](_0x27140b['dialCutDigit']):_0x3a1ec6['phone']),'callerid':_0x1da84c,'Exten':'xcally-motion-dialer','Context':_0x865c('0x1ac'),'Priority':'1','variable':_0x2ac555,'timeout':(_0x27140b['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0xb1f36a})[_0x865c('0xc2')](function(_0x4a6f8a){return _0x36cdf2(_0x4a6f8a);})['catch'](function(_0x4a334f){_0x27140b[_0x865c('0x6f')]+=0x1;var _0x43b81b=new History(_0x5f58e1[_0x865c('0x28')][_0xb1f36a]);logger[_0x865c('0x9f')](util[_0x865c('0x85')](_0x865c('0x1ad'),JSON[_0x865c('0x53')](_0x4a334f)));_0x43b81b['state']=0xe;_0x43b81b[_0x865c('0xec')]=_0x865c('0x1ae');_0x43b81b['starttime']=moment()[_0x865c('0x85')](_0x865c('0x106'));_0x43b81b[_0x865c('0xb1')]=_0x43b81b[_0x865c('0x12e')];_0x5f58e1['createHistory'](_0x43b81b)['catch'](loggerCatch(_0x865c('0x1af')));_0x5f58e1[_0x865c('0xe6')](_0x43b81b)[_0x865c('0xba')](loggerCatch('[originate][error]'))[_0x865c('0x20')](function(){delete _0x5f58e1[_0x865c('0x28')][_0xb1f36a];return _0x20c24d(msgResponse(_0x865c('0x186'),_0x865c('0x52'),_0x865c('0x1b0')));});});});};Dialer['prototype'][_0x865c('0x33')]=function(_0x334c9e){var _0x1dbf2f=this[_0x865c('0x28')][_0x334c9e[_0x865c('0x138')]];if(_0x1dbf2f){delete this[_0x865c('0x28')][_0x334c9e['actionid']];_0x1dbf2f[_0x865c('0x121')]=moment()[_0x865c('0x85')](_0x865c('0x106'));var _0x3cddc3=_0x1dbf2f[_0x865c('0x58')]===_0x865c('0x86')?this[_0x865c('0x23')][_0x1dbf2f['queue']]:this['voiceQueues'][_0x1dbf2f[_0x865c('0x1b1')]()];if(!this[_0x865c('0x1b2')](_0x334c9e[_0x865c('0x1b3')])){this[_0x865c('0xbc')](_0x3cddc3);return this[_0x865c('0x1b4')](_0x1dbf2f,_0x3cddc3,_0x334c9e)[_0x865c('0xba')](loggerCatch(_0x865c('0x1b5')));}this[_0x865c('0x2a')][_0x334c9e[_0x865c('0xe7')]]=_0x1dbf2f;}};Dialer[_0x865c('0x1e')][_0x865c('0x1b6')]=function(_0x14e714,_0x6a0044,_0x48d3ff){var _0x56a34e=new History(_0x6a0044);if(_0x56a34e[_0x865c('0x10f')]+_0x56a34e[_0x865c('0xf9')]+_0x56a34e[_0x865c('0xfa')]+_0x56a34e[_0x865c('0xfb')]+_0x56a34e[_0x865c('0x110')]+_0x56a34e[_0x865c('0xfc')]+_0x56a34e[_0x865c('0xf6')]+_0x56a34e['countagentrejectretry']>=_0x48d3ff['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x14e714){case 0x3:if(_0x56a34e[_0x865c('0xfa')]>=_0x48d3ff['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countnoanswerretry':_0x56a34e[_0x865c('0xfa')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1b7')],'minutes')['format'](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1b8')));break;case 0x5:if(_0x56a34e[_0x865c('0x10f')]>=_0x48d3ff[_0x865c('0x1b9')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countbusyretry':_0x56a34e[_0x865c('0x10f')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1ba')],_0x865c('0x105'))[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1bb')));break;case 0x8:if(_0x56a34e[_0x865c('0xf9')]>=_0x48d3ff[_0x865c('0x1bc')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countcongestionretry':_0x56a34e[_0x865c('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x48d3ff[_0x865c('0x1bd')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e['ContactId'],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x1be')));break;case 0x0:if(_0x56a34e[_0x865c('0xfb')]>=_0x48d3ff[_0x865c('0x1bf')]-0x1){return!![];}else{this[_0x865c('0xcd')]({'active':![],'countnosuchnumberretry':_0x56a34e[_0x865c('0xfb')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c0')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e['VoiceQueueId']||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})['catch'](loggerCatch(_0x865c('0x1c1')));}break;case 0xa:if(_0x56a34e[_0x865c('0x110')]>=_0x48d3ff[_0x865c('0x12b')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countdropretry':_0x56a34e['countdropretry']+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x127')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e['ListId'],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x12d')));break;case 0xb:if(_0x56a34e['countabandonedretry']>=_0x48d3ff['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countabandonedretry':_0x56a34e[_0x865c('0xfc')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c2')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e['ListId'],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x56a34e[_0x865c('0xf6')]>=_0x48d3ff[_0x865c('0x101')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countmachineretry':_0x56a34e[_0x865c('0xf6')]+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff['dialMachineRetryFrequency'],_0x865c('0x105'))[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x56a34e['ContactId'],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e[_0x865c('0xdf')]||undefined,'CampaignId':_0x56a34e[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x109')));break;case 0x14:if(_0x56a34e[_0x865c('0xfd')]>=_0x48d3ff[_0x865c('0x1c3')]-0x1){return!![];}this[_0x865c('0xcd')]({'active':![],'countagentrejectretry':_0x56a34e['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x865c('0x12c')](_0x48d3ff[_0x865c('0x1c4')],_0x865c('0x105'))[_0x865c('0x85')](_0x865c('0x106')),'ContactId':_0x56a34e[_0x865c('0x107')],'ListId':_0x56a34e[_0x865c('0x108')],'VoiceQueueId':_0x56a34e['VoiceQueueId']||undefined,'CampaignId':_0x56a34e['CampaignId']||undefined})[_0x865c('0xba')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x865c('0x1e')]['callProgressDetecting']=function(_0x59d710,_0x3b7be5,_0x136ea3){var _0x19c58e=this;var _0x2ba0df=new History(_0x59d710);var _0x5416ab=![];var _0x5ec421;var _0x31e3f4;return new Promise(function(_0x4a2a99,_0x5b069b){if(_[_0x865c('0x45')](_0x3b7be5)&&typeof _0x3b7be5!==_0x865c('0x1c5')){return _0x5b069b(msgResponse('[callProgressDetecting]',_0x865c('0x156'),_0x865c('0x1c6')));}if(_['isUndefined'](_0x136ea3)&&typeof _0x136ea3!==_0x865c('0x1c5')){return _0x5b069b(msgResponse('[callProgressDetecting]',_0x865c('0x156'),_0x865c('0x1c7')));}_0x19c58e['verifyAdditionalPhones'](_0x2ba0df,_0x136ea3[_0x865c('0x119')],_0x3b7be5)[_0x865c('0xc2')](function(_0x3c7462){if(_0x3c7462[_0x865c('0x12a')]==0x1)_0x5416ab=!![];switch(_0x136ea3[_0x865c('0x119')]){case'0':_0x3b7be5[_0x865c('0x6e')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x0;_0x2ba0df['statedesc']=_0x865c('0x1c8');_0x2ba0df[_0x865c('0xfb')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;ami['emit'](_0x865c('0x1c9'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1ca')));_0x5ec421=_0x3b7be5[_0x865c('0x1c0')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e['createHistory'](_0x2ba0df)['catch'](loggerCatch(_0x865c('0xf8')));if(_0x19c58e[_0x865c('0x1b6')](0x0,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfb')]>=_0x3b7be5[_0x865c('0x1bf')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x200\x20no\x20such\x20number....');}else{_0x19c58e['stateGlobal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1cb'));}}break;case'3':_0x3b7be5['outboundNoAnswerCallsDay']+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x3;_0x2ba0df[_0x865c('0xec')]='NoAnswer';_0x2ba0df[_0x865c('0xfa')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;var _0x4fa6a6=ut[_0x865c('0x1cc')](_0x59d710,_0x3b7be5);ami[_0x865c('0x57')](_0x865c('0x1cd'),_0x4fa6a6);_0x5ec421=_0x3b7be5[_0x865c('0x1b7')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x19c58e[_0x865c('0x1b6')](0x3,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df['countnoanswerretry']>=_0x3b7be5[_0x865c('0x1ce')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1cf'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x3b7be5[_0x865c('0x1d0')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x5;_0x2ba0df[_0x865c('0xec')]='Busy';_0x2ba0df['countbusyretry']+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;ami[_0x865c('0x57')]('custom:agentbusy',ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1d1')));_0x5ec421=_0x3b7be5[_0x865c('0x1ba')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x1d2')));if(_0x19c58e[_0x865c('0x1b6')](0x5,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0x10f')]>=_0x3b7be5[_0x865c('0x1b9')]){_0x19c58e['createStateFinal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d3'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d3'));}}break;case'8':_0x3b7be5[_0x865c('0x6a')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0x8;_0x2ba0df[_0x865c('0xec')]=_0x865c('0x1d4');_0x2ba0df[_0x865c('0xf9')]+=0x1;_0x2ba0df['countglobal']+=0x1;_0x5ec421=_0x3b7be5[_0x865c('0x1bd')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];ami[_0x865c('0x57')](_0x865c('0x1d5'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1d6')));_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x1d7')));if(_0x19c58e['checkRetriveMax'](0x8,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xf9')]>=_0x3b7be5[_0x865c('0x1bc')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d8'));}else{_0x19c58e['stateGlobal'](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1d8'));}}break;case'11':_0x3b7be5[_0x865c('0x1d9')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0xb;_0x2ba0df[_0x865c('0xec')]='Abandoned';_0x2ba0df[_0x865c('0xfc')]+=0x1;_0x2ba0df['countglobal']+=0x1;_0x5ec421=_0x3b7be5[_0x865c('0x1c2')];_0x31e3f4=_0x3b7be5['callAdditionalPhoneAfterMin'];_0x19c58e[_0x865c('0xd6')](_0x2ba0df)[_0x865c('0xba')](loggerCatch(_0x865c('0x137')));if(_0x19c58e[_0x865c('0x1b6')](0xb,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfc')]>=_0x3b7be5['dialAbandonedMaxRetry']){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x2011\x20abandoned');}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1da'));}}break;case'20':_0x3b7be5['outboundRejectCallsDay']+=0x1;_0x2ba0df['state']=0x14;_0x2ba0df['statedesc']=_0x865c('0x1db');_0x2ba0df[_0x865c('0xfd')]+=0x1;_0x2ba0df[_0x865c('0x10e')]+=0x1;_0x5ec421=_0x3b7be5['dialAgentRejectRetryFrequency'];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];ami[_0x865c('0x57')](_0x865c('0x1dc'),ut[_0x865c('0xf7')](_0x59d710,_0x865c('0x1dd')));_0x19c58e['createHistory'](_0x2ba0df)[_0x865c('0xba')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x19c58e[_0x865c('0x1b6')](0x14,_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df[_0x865c('0xfd')]>=_0x3b7be5[_0x865c('0x1c3')]){_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x865c('0x1de'));}else{_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,'reason\x2020\x20agentreject');}}break;default:_0x3b7be5[_0x865c('0x72')]+=0x1;_0x2ba0df[_0x865c('0xb0')]=0xc;_0x2ba0df[_0x865c('0xec')]=_0x136ea3[_0x865c('0x119')];_0x5ec421=_0x3b7be5[_0x865c('0x1c4')];_0x31e3f4=_0x3b7be5[_0x865c('0x128')];_0x19c58e['createHistory'](_0x2ba0df)['catch'](loggerCatch(_0x865c('0x1df')));if(_0x19c58e[_0x865c('0x1b6')](_0x136ea3[_0x865c('0x119')],_0x59d710,_0x3b7be5)&&!_0x5416ab){if(_0x2ba0df['countbusyretry']+_0x2ba0df[_0x865c('0xf9')]+_0x2ba0df[_0x865c('0xfa')]+_0x2ba0df[_0x865c('0xfb')]+_0x2ba0df[_0x865c('0x110')]+_0x2ba0df['countabandonedretry']+_0x2ba0df[_0x865c('0xf6')]+_0x2ba0df[_0x865c('0xfd')]>=_0x3b7be5['dialGlobalMaxRetry']){_0x19c58e[_0x865c('0xff')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x136ea3[_0x865c('0x119')]);}else{_0x19c58e[_0x865c('0x102')](_0x2ba0df,_0x4a2a99,_0x5b069b,_0x136ea3[_0x865c('0x119')]);}}}})[_0x865c('0xc2')](function(){if(_0x5416ab){_0x19c58e['swapAdditionalPhones'](_0x2ba0df,_0x5ec421,_0x31e3f4)[_0x865c('0xc2')](function(){return _0x4a2a99(0x1);});}});});};Dialer[_0x865c('0x1e')][_0x865c('0xff')]=function(_0x2231ff,_0x1b9e20,_0x43f308,_0x3b4368){var _0x30c0fb=new Final(_0x2231ff);_0x30c0fb[_0x865c('0xb0')]=0xf;_0x30c0fb[_0x865c('0xec')]=_0x865c('0x1e0');this['createStateFinal'](_0x30c0fb,_0x1b9e20,_0x43f308,_0x3b4368);};Dialer[_0x865c('0x1e')][_0x865c('0x102')]=function(_0x7b8eb0,_0xeb5355,_0x2b3dd1,_0x2b7883){this[_0x865c('0xe6')](_0x7b8eb0)[_0x865c('0xc2')](function(){return _0xeb5355(msgResponse(_0x865c('0x1e1'),_0x865c('0x1e2'),_0x2b7883));})[_0x865c('0xba')](function(){return _0x2b3dd1(msgResponse('[moveContactManagedDialer][0]',_0x865c('0x156'),_0x865c('0x1e3')));});};Dialer['prototype']['predictive']=function(_0x36e9a3){var _0x6b77e6=_0x36e9a3['dialPredictiveOptimizationPercentage']/0x64;var _0x51309a=_0x36e9a3[_0x865c('0x123')]/(_0x36e9a3[_0x865c('0x123')]+_0x36e9a3[_0x865c('0x69')]);var _0x5402ae=Math[_0x865c('0x1e4')](_0x36e9a3[_0x865c('0x1e5')]*(_0x36e9a3[_0x865c('0x1e6')]/0x64));var _0xbfc1f4=Math[_0x865c('0x1e4')](_0x36e9a3['predictiveIntervalAvailable']*(_0x36e9a3[_0x865c('0x1e7')]/0x64));var _0x476d4d=_0x36e9a3[_0x865c('0x5b')]+_0x36e9a3[_0x865c('0x60')];var _0x2848cf=Math[_0x865c('0x1e8')](_0x36e9a3[_0x865c('0x7e')]*_0x36e9a3[_0x865c('0x80')]*_0x36e9a3['predictiveIntervalHitRate']*_0x36e9a3[_0x865c('0x7a')]);if(_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x2c')])){if(!_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x1e9')])){_0x36e9a3[_0x865c('0x1e9')]=undefined;loggerPredictive['error'](_0x865c('0x1ea'),_0x865c('0x1eb'));}if(!_['isUndefined'](_0x36e9a3[_0x865c('0x9a')])){loggerPredictive['error'](_0x865c('0x1ea'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x36e9a3[_0x865c('0x9a')]);_0x36e9a3['handlePredictive']=undefined;}_0x36e9a3['startProgressive']=moment()[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1ec'),_0x36e9a3['startProgressive']);this[_0x865c('0x16b')](_0x36e9a3,0x1);}else if(ifInterval(_0x36e9a3['dialPredictiveInterval'],_0x36e9a3['startProgressive'])){this[_0x865c('0x16b')](_0x36e9a3,0x1);loggerPredictiveCalls[_0x865c('0x8a')]('[startMethodPredictive][StartProgressive][Loop]',_0x36e9a3[_0x865c('0x2c')],_0x36e9a3[_0x865c('0x4a')]);_0x36e9a3[_0x865c('0x7e')]=0x0;_0x36e9a3[_0x865c('0x78')]=0x0;}else if(_0x6b77e6<_0x51309a&&_0x36e9a3[_0x865c('0x1ed')]===_0x865c('0x1ee')){freeVariablesPredictive(_0x36e9a3);loggerPredictive[_0x865c('0x8a')](_0x865c('0x1ef'),_0x865c('0x1f0'),_0x51309a,_0x865c('0x2c'),_0x36e9a3[_0x865c('0x4a')]);}else if(_0x2848cf<_0x36e9a3['predictiveIntervalErlangCallsDroppedCalls']&&_0x36e9a3[_0x865c('0x1ed')]===_0x865c('0x1ee')){freeVariablesPredictive(_0x36e9a3);loggerPredictive['info'](_0x865c('0x1f1'),_0x865c('0x1f2'),_0x2848cf,_0x865c('0x1f3'),_0x36e9a3[_0x865c('0x78')],_0x865c('0x2c'),_0x36e9a3[_0x865c('0x4a')]);}else if(!ifInterval(_0x36e9a3[_0x865c('0x1f4')],_0x36e9a3['startProgressive'])&&_[_0x865c('0x45')](_0x36e9a3['startPredictive'])&&!_[_0x865c('0x45')](_0x36e9a3[_0x865c('0x2c')])){_0x36e9a3[_0x865c('0x1e9')]=moment()[_0x865c('0x85')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x865c('0x8a')](_0x36e9a3['name'],'started\x20in\x20predictive\x20at',_0x36e9a3[_0x865c('0x1e9')]);this[_0x865c('0xca')](_0x36e9a3['dialPredictiveInterval'])[_0x865c('0xc2')](this[_0x865c('0x1f5')](_0x36e9a3))[_0x865c('0xc2')](mergeDataErlangB(_0x36e9a3))[_0x865c('0xc2')](this[_0x865c('0x1f6')](_0x36e9a3))[_0x865c('0xba')](loggerCatchPredictive(_0x865c('0x1f7'),_0x36e9a3));}else if(!ifInterval(_0x36e9a3[_0x865c('0x1f4')],_0x36e9a3[_0x865c('0x1e9')])){_0x36e9a3['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x36e9a3[_0x865c('0x1e9')]=moment()[_0x865c('0x85')](_0x865c('0x106'));loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1f8'),_0x36e9a3[_0x865c('0x1e9')]);clearInterval(_0x36e9a3['handlePredictive']);_0x36e9a3[_0x865c('0x9a')]=undefined;this[_0x865c('0xca')](_0x36e9a3[_0x865c('0x1f4')])[_0x865c('0xc2')](this[_0x865c('0x1f5')](_0x36e9a3))['then'](mergeDataErlangB(_0x36e9a3))[_0x865c('0xc2')](this['startMethodPredictive'](_0x36e9a3))['catch'](loggerCatchPredictive(_0x865c('0x1f9'),_0x36e9a3));}else if(_0x36e9a3[_0x865c('0x1e5')]&&_0x476d4d<_0x36e9a3[_0x865c('0x1e5')]-_0xbfc1f4){freeVariablesPredictive(_0x36e9a3);loggerPredictive[_0x865c('0x8a')](_0x36e9a3[_0x865c('0x4a')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x476d4d,_0x865c('0x1fa'),_0x36e9a3['predictiveIntervalAvailable'],'-',_0xbfc1f4,'=',_0x36e9a3['predictiveIntervalAvailable']-_0xbfc1f4,')');}else if(_0x36e9a3['predictiveIntervalAvailable']&&_0x476d4d>_0x36e9a3[_0x865c('0x1e5')]+_0x5402ae){freeVariablesPredictive(_0x36e9a3);loggerPredictive['info'](_0x36e9a3[_0x865c('0x4a')],_0x865c('0x1fb'),_0x476d4d,')\x20are\x20more\x20than\x20threshold\x20(',_0x36e9a3[_0x865c('0x1e5')],'+',_0x5402ae,'=',_0x36e9a3[_0x865c('0x1e5')]+_0x5402ae,')');}};Dialer[_0x865c('0x1e')]['getDataPredictive']=function(_0x39f6f1){var _0x18bc42=this;return function(_0x15caaf){return new Promise(function(_0x49759d,_0x29bb5a){_[_0x865c('0xdc')](_0x39f6f1,_0x15caaf[0x0]);if(checkGetDataPredictive(_0x15caaf[0x0])){var _0x1ff6ac=_0x39f6f1['predictiveIntervalAvailable']=_0x39f6f1[_0x865c('0x60')]+_0x39f6f1[_0x865c('0x5b')];var _0xee92fb=_0x39f6f1[_0x865c('0x1f4')]*0x3c;var _0x5e5fdd=_0x15caaf[0x0][_0x865c('0x75')]+_0x15caaf[0x0][_0x865c('0x74')];var _0x445798=(_0x15caaf[0x0]['predictiveIntervalAnsweredCalls']+_0x15caaf[0x0][_0x865c('0x76')]+_0x15caaf[0x0][_0x865c('0x8f')])/_0x15caaf[0x0]['predictiveIntervalTotalCalls'];_0x39f6f1[_0x865c('0x79')]=_0x445798>0x0?_0x445798:0x1;switch(_0x39f6f1[_0x865c('0x1ed')]){case _0x865c('0x1ee'):var _0x510168=_0x39f6f1['dialPredictiveOptimizationPercentage']/0x64;return _0x18bc42[_0x865c('0x1fc')](_0x1ff6ac,_0xee92fb,_0x5e5fdd,_0x445798,_0x510168)[_0x865c('0xc2')](function(_0x149ebc){return _0x49759d(_0x149ebc);});case _0x865c('0x1fd'):var _0x4b5d7c=_0x39f6f1[_0x865c('0x1fe')]/0x64;return _0x18bc42[_0x865c('0x1ff')](_0x1ff6ac,_0xee92fb,_0x5e5fdd,_0x445798,_0x4b5d7c)[_0x865c('0xc2')](function(_0x7002be){return _0x49759d(_0x7002be);});default:return _0x29bb5a(msgResponse(_0x865c('0x200'),_0x865c('0x156'),_0x865c('0x201')));}}else{return _0x29bb5a(msgResponse(_0x865c('0x200'),_0x865c('0x156'),'check\x20failure'));}});};};Dialer[_0x865c('0x1e')]['getDataPredictiveOld']=function(_0xe8a029){var _0xc4c1d4=this;return function(_0x450884){return new Promise(function(_0x423ee0,_0x303563){_[_0x865c('0xdc')](_0xe8a029,_0x450884[0x0]);if(checkGetDataPredictive(_0x450884[0x0])){loggerPredictive[_0x865c('0x8a')](JSON[_0x865c('0x53')](_0x450884[0x0]));if(_0xe8a029['dialPredictiveOptimization']===_0x865c('0x1ee')){return _0xc4c1d4[_0x865c('0xd4')](_0xe8a029['id'])['then'](function(_0x4481c7){var _0x107ec3=_0xe8a029[_0x865c('0x5c')]-_0x4481c7[0x0][_0x865c('0x202')];var _0x6402a0=_0xe8a029[_0x865c('0x1f4')]*0x3c;var _0x4716d6=_0x450884[0x0][_0x865c('0x75')]+_0x450884[0x0][_0x865c('0x74')];var _0x5aa213=(_0x450884[0x0][_0x865c('0x73')]+_0x450884[0x0][_0x865c('0x76')]+_0x450884[0x0][_0x865c('0x8f')])/_0x450884[0x0]['predictiveIntervalTotalCalls'];var _0x2b9880=_0xe8a029[_0x865c('0x1fe')]/0x64;_0xe8a029['predictiveIntervalPauses']=_0x4481c7[0x0]['outboundQueuePauses']||0x0;_0xe8a029[_0x865c('0x79')]=_0x5aa213>0x0?_0x5aa213:0x1;return _0xc4c1d4['abandonmentRate'](_0x107ec3,_0x6402a0,_0x4716d6,_0x5aa213,_0x2b9880);})[_0x865c('0xc2')](function(_0x229af1){return _0x423ee0(_0x229af1);})[_0x865c('0xba')](function(_0x19a33e){return _0x303563(msgResponse('[CatchErlangB]',_0x865c('0x156'),JSON[_0x865c('0x53')](_0x19a33e)));});}if(_0xe8a029[_0x865c('0x1ed')]===_0x865c('0x1fd')){return _0xc4c1d4[_0x865c('0xd4')](_0xe8a029['id'])[_0x865c('0xc2')](function(_0x2e2eca){var _0x18d083=_0xe8a029['loggedIn']-_0x2e2eca[0x0][_0x865c('0x202')];var _0x11c739=_0xe8a029[_0x865c('0x1f4')]*0x3c;var _0x43d69c=_0x450884[0x0][_0x865c('0x75')]+_0x450884[0x0][_0x865c('0x74')];var _0x360627=(_0x450884[0x0][_0x865c('0x73')]+_0x450884[0x0][_0x865c('0x76')]+_0x450884[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x450884[0x0][_0x865c('0x7c')];var _0x879a50=_0xe8a029[_0x865c('0x1fe')]/0x64;_0xe8a029['predictiveIntervalPauses']=_0x2e2eca[0x0]['outboundQueuePauses']||0x0;_0xe8a029['predictiveIntervalHitRate']=_0x360627>0x0?_0x360627:0x1;return _0xc4c1d4[_0x865c('0x1ff')](_0x18d083,_0x11c739,_0x43d69c,_0x360627,_0x879a50);})[_0x865c('0xc2')](function(_0x50bb31){return _0x423ee0(_0x50bb31);})[_0x865c('0xba')](function(_0x18878f){return _0x303563(msgResponse(_0x865c('0x203'),_0x865c('0x156'),JSON[_0x865c('0x53')](_0x18878f)));});}}else{return _0x303563(msgResponse('[getDataPredictive]','Failure',_0x865c('0x204')));}});};};Dialer['prototype'][_0x865c('0x1f6')]=function(_0xd5976b){var _0x3354c4=this;return function(){var _0x2e72a5=0x0;var _0x195719=Math['floor'](_0xd5976b[_0x865c('0x7f')]*0x3e8);if(_0x195719>0x0){_0x195719=_0x195719<0x64?0x64:_0x195719;loggerPredictive[_0x865c('0x8a')](_0xd5976b['name'],_0x865c('0x205'),_0x195719,_0x865c('0x54'));_0xd5976b[_0x865c('0x9a')]=setInterval(function(){_0x3354c4[_0x865c('0x9a')](_0xd5976b);loggerPredictiveCalls[_0x865c('0x8a')](_0x865c('0x206'),_0x2e72a5+=0x1);},_0x195719);}else{loggerPredictive[_0x865c('0x8a')](_0xd5976b[_0x865c('0x4a')],_0x865c('0x207'));}};};Dialer['prototype'][_0x865c('0x208')]=function(_0x265cec,_0x3be2ec){var _0x37b2e5=this;return function(_0x2cd387){if(_[_0x865c('0x50')](_0x2cd387)){if(_[_0x865c('0xb8')](_0x3be2ec[_0x865c('0xde')])||!_0x3be2ec['recallme']){if(_0x265cec['dialMethod']===_0x865c('0x7')){_0x265cec['queueStatusComplete']=_[_0x865c('0x45')](_0x265cec[_0x865c('0x13f')])?!![]:_0x265cec[_0x865c('0x13f')];var _0x3224e0=uuid['v4']();_0x37b2e5[_0x865c('0x28')][_0x3224e0]=new Action(_0x265cec,_0x3be2ec,_0x3224e0);loggerBooked[_0x865c('0x8a')](_0x865c('0x209'),_0x3224e0,_0x865c('0x20a'),JSON[_0x865c('0x53')](_0x265cec[_0x865c('0x13f')]),_0x865c('0x20b'),_0x265cec['name']);if(_0x265cec[_0x865c('0x13f')]){_0x265cec[_0x865c('0x13f')]=![];_0x37b2e5[_0x865c('0x13b')][_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xbd')]]=[];ami[_0x865c('0x15c')]({'actionid':_0x3224e0,'action':_0x865c('0x20c'),'queue':_0x265cec[_0x865c('0x4a')]})[_0x865c('0xba')](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);_0x37b2e5[_0x865c('0xcd')]({'active':![],'ContactId':_0x37b2e5[_0x865c('0x28')][_0x3224e0]['ContactId'],'ListId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0x108')],'VoiceQueueId':_0x37b2e5['actions'][_0x3224e0]['VoiceQueueId']||undefined,'CampaignId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xe0')]||undefined})['catch'](loggerCatch(_0x865c('0x20d')));delete _0x37b2e5[_0x865c('0x28')][_0x3224e0];});}else{loggerBooked[_0x865c('0x8a')]('[booked][checkContactBlack][else]',JSON[_0x865c('0x53')](_0x265cec[_0x865c('0x13f')]),_0x865c('0x20b'),_0x265cec['name']);_0x37b2e5[_0x865c('0xbc')](_0x265cec);_0x37b2e5['rescheduleContact']({'active':![],'ContactId':_0x37b2e5['actions'][_0x3224e0][_0x865c('0x107')],'ListId':_0x37b2e5['actions'][_0x3224e0][_0x865c('0x108')],'VoiceQueueId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xdf')]||undefined,'CampaignId':_0x37b2e5[_0x865c('0x28')][_0x3224e0][_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x20d')));delete _0x37b2e5['actions'][_0x3224e0];}}else{return _0x37b2e5[_0x865c('0x185')](_0x265cec,_0x3be2ec);}}else{if(getDiff(_0x3be2ec['scheduledat'])<_0x265cec['dialRecallMeTimeout']*0x3c){if(_0x3be2ec[_0x865c('0x173')]&&!_0x3be2ec['Agent'][_0x865c('0x20e')]){_0x37b2e5[_0x865c('0x21')][_0x865c('0x149')](_0x3be2ec['id'])['finally'](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);});}else{_0x37b2e5[_0x865c('0xce')]({'active':![]},_0x3be2ec['id'],0x1)['finally'](function(){_0x37b2e5[_0x865c('0xbc')](_0x265cec);});}}else{_0x265cec['outboundReCallsDay']+=0x1;_0x37b2e5[_0x865c('0xbc')](_0x265cec);if(_0x265cec['dialRecallInQueue']){_0x37b2e5[_0x865c('0xcd')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3be2ec[_0x865c('0x107')],'ListId':_0x3be2ec[_0x865c('0x108')],'VoiceQueueId':_0x3be2ec[_0x865c('0xdf')]||undefined,'CampaignId':_0x3be2ec[_0x865c('0xe0')]||undefined})[_0x865c('0xba')](loggerCatch(_0x865c('0x20f')));_0x37b2e5[_0x865c('0xd6')](createObjHistory(_0x265cec,_0x3be2ec,_0x865c('0x210'),0x17,_0x865c('0x211')))[_0x865c('0xba')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x37b2e5[_0x865c('0xdb')](createObjHistory(_0x265cec,_0x3be2ec,'RECALLFAILEDTIMEOUT',0x16,_0x865c('0x212')),_0x865c('0x213'),_0x865c('0x214'));}}}}else{_0x265cec[_0x865c('0x215')]+=0x1;_0x37b2e5[_0x865c('0xdb')](createObjHistory(_0x265cec,_0x3be2ec,'BLACKLIST',0xd,_0x865c('0x216')),_0x865c('0x217'),_0x865c('0x218'));throw _0x865c('0x219');}};};Dialer[_0x865c('0x1e')][_0x865c('0x176')]=function(_0x2158b5){var _0x1da03e=this;var _0x2fe24c=_0x2158b5['limitCalls']-_0x2158b5[_0x865c('0x7d')]-_0x2158b5[_0x865c('0xd1')];emitCampaignSummary(_0x2158b5);if(_0x2fe24c>0x0){if(_0x2fe24c>this[_0x865c('0x26')]){_0x2fe24c=this[_0x865c('0x26')];}_0x2158b5[_0x865c('0xd1')]+=_0x2fe24c;this[_0x865c('0xd3')](_0x2158b5['id'],_0x2fe24c,_0x2158b5[_0x865c('0x21a')],_0x2158b5)['then'](function(_0x584b2){_0x2158b5[_0x865c('0xd1')]-=_0x2fe24c;_0x2158b5[_0x865c('0xd1')]=_0x2158b5[_0x865c('0xd1')]>0x0?_0x2158b5[_0x865c('0xd1')]:0x0;if(!checkContactEmpty(_0x584b2)){_0x2158b5[_0x865c('0x48')]=_0x865c('0xa8');logger['info']('[getContactCampaign2][Empty]'+_0x2158b5[_0x865c('0x4a')]);}else{_0x2158b5[_0x865c('0x7d')]+=_0x584b2[_0x865c('0xa1')];_0x2158b5['message']=_0x865c('0x21b');for(var _0x10c970=0x0;_0x10c970<_0x584b2[_0x865c('0xa1')];_0x10c970+=0x1){_0x2158b5[_0x865c('0x21c')]+=0x1;if(_['isNil'](_0x584b2[_0x10c970])||_[_0x865c('0xb8')](_0x584b2[_0x10c970]['Contact'])||_[_0x865c('0xb8')](_0x584b2[_0x10c970][_0x865c('0x188')])){_0x1da03e['emptyContact'](_0x865c('0x21d'),_0x2158b5,_0x584b2[_0x10c970]);}else{_0x1da03e['checkIsBlackListIvr'](_['pick'](_0x584b2[_0x10c970],[_0x865c('0xe0'),'phone']))[_0x865c('0xc2')](_0x1da03e['checkContactBlack'](_0x2158b5,_0x584b2[_0x10c970]))[_0x865c('0xba')](_0x1da03e[_0x865c('0xd8')](_0x865c('0x21e'),_0x2158b5));}}}})[_0x865c('0xba')](loggerGetContactDialer(_0x865c('0x21f'),_0x2158b5,_0x2fe24c));}};Dialer['prototype']['handlePower']=function(_0xad9f19,_0x175e76){var _0x408bb0=this;var _0x275126=[];var _0x2451d0=_0x175e76>=0x1?_0x175e76:0x1;if(_0xad9f19['dialMethod']===_0x865c('0x7')){_0x2451d0=0x1;}var _0x38e9b3=Math['floor'](_0xad9f19[_0x865c('0x5b')]*_0x2451d0)-_0xad9f19['originated']-_0xad9f19['temp'];emitVoiceQueueSummary(_0xad9f19);if(_0xad9f19['dialLimitQueue']>0x0){var _0x3760c2=_0xad9f19[_0x865c('0x220')]-_0xad9f19[_0x865c('0x7d')]-_0xad9f19[_0x865c('0x60')]-_0xad9f19[_0x865c('0xd1')]-_0xad9f19[_0x865c('0x5d')];if(_0x38e9b3>_0x3760c2){_0x38e9b3=_0x3760c2;}}if(_0x38e9b3>0x0){if(_0xad9f19[_0x865c('0x64')]===_0x865c('0x7')){_0x38e9b3=0x1;}if(_0x38e9b3>this[_0x865c('0x26')]){_0x38e9b3=this[_0x865c('0x26')];}_0xad9f19['temp']+=_0x38e9b3;for(var _0x361184 in this['agents']){if(typeof this[_0x865c('0x24')][_0x361184]!=='undefined'){if(this[_0x865c('0x24')][_0x361184][_0x865c('0xb0')]===_0x865c('0x221')&&this['agents'][_0x361184][_0x865c('0xe4')]===_0x865c('0x222')){_0x275126['push'](this[_0x865c('0x24')][_0x361184]['id']);}}}this[_0x865c('0xd0')](_0xad9f19['id'],_0x275126,_0x38e9b3,_0xad9f19['dialOrderByScheduledAt'],_0xad9f19)[_0x865c('0xc2')](function(_0x188090){_0xad9f19[_0x865c('0xd1')]-=_0x38e9b3;_0xad9f19['temp']=_0xad9f19['temp']>0x0?_0xad9f19[_0x865c('0xd1')]:0x0;if(!checkContactEmpty(_0x188090)){_0x408bb0['countReScheduled'](_0xad9f19)['then'](sendMessageReschedule(_0xad9f19))[_0x865c('0xba')](loggerCatch('[countReScheduled]\x20'));}else{_0xad9f19['originated']+=_0x188090['length'];_0xad9f19[_0x865c('0x48')]=_0xad9f19[_0x865c('0x64')]===_0x865c('0x7')?_0x865c('0x18d'):'RUNNING';for(var _0x195ebd=0x0;_0x195ebd<_0x188090['length'];_0x195ebd+=0x1){if(_[_0x865c('0xb8')](_0x188090[_0x195ebd])||_['isNil'](_0x188090[_0x195ebd]['Contact'])||_[_0x865c('0xb8')](_0x188090[_0x195ebd]['phone'])){_0x408bb0[_0x865c('0xd9')]('[actionOriginate]\x20',_0xad9f19,_0x188090[_0x195ebd]);}else{_0x408bb0['checkIsBlackList'](_[_0x865c('0xdd')](_0x188090[_0x195ebd],[_0x865c('0xdf'),_0x865c('0x188')]))[_0x865c('0xc2')](_0x408bb0['checkContactBlack'](_0xad9f19,_0x188090[_0x195ebd]))[_0x865c('0xba')](_0x408bb0['loggerHandler']('[actionOriginate]\x20',_0xad9f19));}}}})[_0x865c('0xba')](loggerGetContactDialer('[getContactDialer2]',_0xad9f19,_0x38e9b3));}};Dialer['prototype'][_0x865c('0x9a')]=function(_0x1c2e5f){if(_0x1c2e5f['dialLimitQueue']>0x0){var _0x57cec3=_0x1c2e5f[_0x865c('0x220')]-_0x1c2e5f[_0x865c('0x7d')]-_0x1c2e5f[_0x865c('0x60')];if(_0x57cec3>0x0){this[_0x865c('0x223')](_0x1c2e5f);}else{loggerPredictiveCalls[_0x865c('0x8a')](_0x865c('0x224'));}}else{this['tryOriginatePredictive'](_0x1c2e5f);}};Dialer[_0x865c('0x1e')]['tryOriginatePredictive']=function(_0x2f5478){var _0x2f5616=this;var _0x32bf34=[];_0x2f5478[_0x865c('0x7d')]+=0x1;for(var _0x591301 in this[_0x865c('0x24')]){if(typeof this['agents'][_0x591301]!==_0x865c('0xb5')){if(this['agents'][_0x591301][_0x865c('0xb0')]===_0x865c('0x221')&&this[_0x865c('0x24')][_0x591301][_0x865c('0xe4')]===_0x865c('0x222')){_0x32bf34['push'](this[_0x865c('0x24')][_0x591301]['id']);}}}this[_0x865c('0xd0')](_0x2f5478['id'],_0x32bf34,0x1,_0x2f5478['dialOrderByScheduledAt'],_0x2f5478)[_0x865c('0xc2')](function(_0x226613){if(!checkContactEmpty(_0x226613)){checkContactLowerLimitOriginate(_0x2f5478,0x1,0x0);_0x2f5616['countReScheduled'](_0x2f5478)[_0x865c('0xc2')](sendMessageReschedule(_0x2f5478))[_0x865c('0xba')](loggerCatch(_0x865c('0xc3')));}else{_0x2f5478[_0x865c('0x48')]=_0x865c('0x21b');if(_[_0x865c('0xb8')](_0x226613[0x0])||_[_0x865c('0xb8')](_0x226613[0x0][_0x865c('0x19c')])||_[_0x865c('0xb8')](_0x226613[0x0][_0x865c('0x188')])){_0x2f5616[_0x865c('0xd9')](_0x865c('0x21d'),_0x2f5478,_0x226613[0x0]);}else{_0x2f5616[_0x865c('0xc4')](_[_0x865c('0xdd')](_0x226613[0x0],['VoiceQueueId',_0x865c('0x188')]))[_0x865c('0xc2')](_0x2f5616['checkContactBlack'](_0x2f5478,_0x226613[0x0]))[_0x865c('0xba')](_0x2f5616[_0x865c('0xd8')](_0x865c('0x225'),_0x2f5478));}}})[_0x865c('0xba')](loggerGetContactDialer(_0x865c('0x226'),_0x2f5478,0x1));emitVoiceQueueSummary(_0x2f5478);};Dialer[_0x865c('0x1e')][_0x865c('0x1fc')]=function(_0x26ed01,_0x2aee13,_0x3e805b,_0x3d28cd,_0x232e4c,_0x2596e8){loggerPredictive[_0x865c('0x8a')](_0x865c('0x227'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x228'),_0x26ed01);loggerPredictive[_0x865c('0x8a')](_0x865c('0x229'),_0x2aee13);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22a'),_0x3e805b);loggerPredictive[_0x865c('0x8a')]('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',_0x3d28cd);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22b'),_0x232e4c);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22c'));return new Promise(function(_0x40e39e,_0x538349){if(_0x26ed01<=0x0||isNaN(_0x26ed01)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),_0x865c('0x22e')+_0x26ed01));}if(_0x3e805b<=0x0||isNaN(_0x3e805b)){return _0x538349(msgResponse('[abandonmentRate]','Error',_0x865c('0x22f')+_0x3e805b));}if(_0x3d28cd<=0x0||isNaN(_0x3d28cd)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),_0x865c('0x230')+_0x3d28cd));}if(_0x2aee13<=0x0||isNaN(_0x2aee13)){return _0x538349(msgResponse('[abandonmentRate]',_0x865c('0x52'),_0x865c('0x231')+_0x2aee13));}if(_0x232e4c<=0x0||isNaN(_0x232e4c)){return _0x538349(msgResponse(_0x865c('0x22d'),_0x865c('0x52'),'Amax\x20=\x20'+_0x232e4c));}_0x2596e8=_0x2596e8||0x0;var _0x483e78=0x1/_0x3e805b;var _0x1af2a2=0x0;var _0x4513ba=0x0;var _0xc64d18=0x0;var _0x371a07=0x0;for(var _0x51f393=0x0;_0xc64d18<_0x232e4c;_0x51f393+=0x1){_0x4513ba=_0x51f393/_0x2aee13;_0x1af2a2=(_0x3d28cd*_0x4513ba+_0x2596e8)/_0x483e78;_0xc64d18=erlangb(_0x1af2a2,_0x26ed01);_0x371a07=_0x1af2a2/_0x26ed01*(0x1-erlangb(_0x1af2a2,_0x26ed01));}return _0x40e39e({'erlangCalls':_0x51f393,'erlangCallToSecond':_0x2aee13/_0x51f393,'erlangAbandonmentRate':_0xc64d18,'erlangBusyFactor':_0x371a07});});};Dialer[_0x865c('0x1e')][_0x865c('0x1ff')]=function(_0x516361,_0x29e95c,_0x442c6f,_0x10bc5c,_0x22d8b1,_0x198221){loggerPredictive['info'](_0x865c('0x232'));loggerPredictive[_0x865c('0x8a')](_0x865c('0x228'),_0x516361);loggerPredictive[_0x865c('0x8a')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29e95c);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22a'),_0x442c6f);loggerPredictive[_0x865c('0x8a')](_0x865c('0x233'),_0x10bc5c);loggerPredictive['info'](_0x865c('0x234'),_0x22d8b1);loggerPredictive[_0x865c('0x8a')](_0x865c('0x22c'));return new Promise(function(_0x208299,_0x39c1ed){if(_0x516361<=0x0||isNaN(_0x516361)){return _0x39c1ed(msgResponse(_0x865c('0x235'),_0x865c('0x52'),_0x865c('0x22e')+_0x516361));}if(_0x442c6f<=0x0||isNaN(_0x442c6f)){return _0x39c1ed(msgResponse('[busyFactor]',_0x865c('0x52'),_0x865c('0x22f')+_0x442c6f));}if(_0x10bc5c<=0x0||isNaN(_0x10bc5c)){return _0x39c1ed(msgResponse(_0x865c('0x235'),'Error',_0x865c('0x230')+_0x10bc5c));}if(_0x29e95c<=0x0||isNaN(_0x29e95c)){return _0x39c1ed(msgResponse('[busyFactor]',_0x865c('0x52'),_0x865c('0x231')+_0x29e95c));}if(_0x22d8b1<=0x0||isNaN(_0x22d8b1)){return _0x39c1ed(msgResponse(_0x865c('0x235'),'Error','Umin\x20=\x20'+_0x22d8b1));}_0x198221=_0x198221||0x0;var _0x408a2a=0x1/_0x442c6f;var _0x47627f=0x0;var _0x358efa=0x0;var _0x5d7c6c=0x0;var _0x448665=0x0;for(var _0x2785dc=0x0;_0x448665<_0x22d8b1;_0x2785dc+=0x1){_0x358efa=_0x2785dc/_0x29e95c;_0x47627f=(_0x10bc5c*_0x358efa+_0x198221)/_0x408a2a;_0x5d7c6c=erlangb(_0x47627f,_0x516361);_0x448665=_0x47627f/_0x516361*(0x1-erlangb(_0x47627f,_0x516361));}return _0x208299({'erlangCalls':_0x2785dc,'erlangCallToSecond':_0x29e95c/_0x2785dc,'erlangAbandonmentRate':_0x5d7c6c,'erlangBusyFactor':_0x448665});});};module['exports']=Dialer;
\ No newline at end of file
index 9c16119..d2e4e05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa973=['moment','diff','seconds','scheduledat','campaigntype','outbound','queue','type','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','calleridname','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','talktime','connectedlinename','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash'];(function(_0x4fa489,_0x4cba6b){var _0x41d2ce=function(_0x364060){while(--_0x364060){_0x4fa489['push'](_0x4fa489['shift']());}};_0x41d2ce(++_0x4cba6b);}(_0xa973,0x73));var _0x3a97=function(_0x849e7c,_0x34014e){_0x849e7c=_0x849e7c-0x0;var _0x11722f=_0xa973[_0x849e7c];return _0x11722f;};'use strict';var util=require(_0x3a97('0x0'));var _=require(_0x3a97('0x1'));var moment=require(_0x3a97('0x2'));function getSeconds(_0x2a5a53,_0x5b6171){var _0x599882=moment(_0x2a5a53)['milliseconds'](0x0);var _0x354052=moment(_0x5b6171)['milliseconds'](0x0);return _0x599882[_0x3a97('0x3')](_0x354052,_0x3a97('0x4'));}function QueueCallerAbandon(_0x1a5d37,_0x4a1f55){this['scheduledat']=_0x1a5d37[_0x3a97('0x5')];this['type']=_0x1a5d37['type'];this[_0x3a97('0x6')]=_0x1a5d37['type']===_0x3a97('0x7')?_0x3a97('0x8'):_0x1a5d37[_0x3a97('0x9')];this[_0x3a97('0xa')]=_0x1a5d37['countbusyretry'];this[_0x3a97('0xb')]=_0x1a5d37['countcongestionretry'];this[_0x3a97('0xc')]=_0x1a5d37[_0x3a97('0xc')];this['countglobal']=_0x1a5d37[_0x3a97('0xa')]+_0x1a5d37[_0x3a97('0xb')]+_0x1a5d37['countnoanswerretry']+_0x1a5d37[_0x3a97('0xd')]+_0x1a5d37[_0x3a97('0xe')]+_0x1a5d37[_0x3a97('0xf')]+_0x1a5d37[_0x3a97('0x10')]+_0x1a5d37['countagentrejectretry'];this[_0x3a97('0xd')]=_0x1a5d37[_0x3a97('0xd')];this[_0x3a97('0xe')]=_0x1a5d37[_0x3a97('0xe')];this[_0x3a97('0xf')]=_0x1a5d37[_0x3a97('0xf')];this[_0x3a97('0x10')]=_0x1a5d37[_0x3a97('0x10')];this['countagentrejectretry']=_0x1a5d37['countagentrejectretry'];this['uniqueid']=_0x4a1f55['uniqueid'];this[_0x3a97('0x11')]=_0x1a5d37['name'];this[_0x3a97('0x12')]=_0x1a5d37[_0x3a97('0x13')];this[_0x3a97('0x14')]=_0x1a5d37['starttime'];this[_0x3a97('0x15')]=_0x1a5d37['responsetime'];this[_0x3a97('0x16')]=_0x1a5d37[_0x3a97('0x16')];this[_0x3a97('0x17')]=this[_0x3a97('0x16')];this[_0x3a97('0x18')]=getSeconds(_0x1a5d37[_0x3a97('0x15')],_0x1a5d37['starttime']);this['holdtime']=getSeconds(this[_0x3a97('0x16')],_0x1a5d37[_0x3a97('0x15')]);this[_0x3a97('0x19')]=0x0;this['queue']=_0x4a1f55[_0x3a97('0x8')];this['membername']=_0x4a1f55[_0x3a97('0x1a')];this[_0x3a97('0x1b')]=_0x4a1f55['reason'];this['callback']=_0x1a5d37['callback'];this[_0x3a97('0x1c')]=_0x1a5d37['callbackuniqueid'];this[_0x3a97('0x1d')]=_0x1a5d37[_0x3a97('0x1d')];this[_0x3a97('0x1e')]=_0x1a5d37[_0x3a97('0x1e')];this[_0x3a97('0x1f')]=_0x1a5d37[_0x3a97('0x1f')];this[_0x3a97('0x20')]=_0x1a5d37[_0x3a97('0x20')];this['UserId']=_0x1a5d37[_0x3a97('0x21')];this['VoiceQueueId']=_0x1a5d37[_0x3a97('0x22')];this[_0x3a97('0x23')]=_0x1a5d37[_0x3a97('0x23')];this[_0x3a97('0x24')]=_0x1a5d37[_0x3a97('0x24')]||'';this[_0x3a97('0x25')]=_0x1a5d37['originatecalleridname']||'';}module[_0x3a97('0x26')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x26e6=['milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','responsetime','droptime','endtime','starttime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash'];(function(_0x121886,_0x8cd8e5){var _0x20ca01=function(_0x15e144){while(--_0x15e144){_0x121886['push'](_0x121886['shift']());}};_0x20ca01(++_0x8cd8e5);}(_0x26e6,0x184));var _0x626e=function(_0x16cfae,_0x3c3596){_0x16cfae=_0x16cfae-0x0;var _0x5a04cf=_0x26e6[_0x16cfae];return _0x5a04cf;};'use strict';var util=require(_0x626e('0x0'));var _=require(_0x626e('0x1'));var moment=require('moment');function getSeconds(_0x20db7e,_0xed2237){var _0x368f1a=moment(_0x20db7e)[_0x626e('0x2')](0x0);var _0x2d5568=moment(_0xed2237)[_0x626e('0x2')](0x0);return _0x368f1a[_0x626e('0x3')](_0x2d5568,_0x626e('0x4'));}function QueueCallerAbandon(_0x31c9bc,_0x618714){this[_0x626e('0x5')]=_0x31c9bc[_0x626e('0x5')];this[_0x626e('0x6')]=_0x31c9bc[_0x626e('0x6')];this[_0x626e('0x7')]=_0x31c9bc['type']===_0x626e('0x8')?_0x626e('0x9'):_0x31c9bc['type'];this[_0x626e('0xa')]=_0x31c9bc[_0x626e('0xa')];this['countcongestionretry']=_0x31c9bc['countcongestionretry'];this[_0x626e('0xb')]=_0x31c9bc['countnoanswerretry'];this['countglobal']=_0x31c9bc[_0x626e('0xa')]+_0x31c9bc['countcongestionretry']+_0x31c9bc[_0x626e('0xb')]+_0x31c9bc[_0x626e('0xc')]+_0x31c9bc[_0x626e('0xd')]+_0x31c9bc[_0x626e('0xe')]+_0x31c9bc[_0x626e('0xf')]+_0x31c9bc[_0x626e('0x10')];this['countnosuchnumberretry']=_0x31c9bc[_0x626e('0xc')];this[_0x626e('0xd')]=_0x31c9bc['countdropretry'];this[_0x626e('0xe')]=_0x31c9bc['countabandonedretry'];this[_0x626e('0xf')]=_0x31c9bc[_0x626e('0xf')];this['countagentrejectretry']=_0x31c9bc[_0x626e('0x10')];this[_0x626e('0x11')]=_0x618714[_0x626e('0x11')];this[_0x626e('0x12')]=_0x31c9bc['name'];this[_0x626e('0x13')]=_0x31c9bc[_0x626e('0x14')];this['starttime']=_0x31c9bc['starttime'];this[_0x626e('0x15')]=_0x31c9bc['responsetime'];this[_0x626e('0x16')]=_0x31c9bc[_0x626e('0x16')];this[_0x626e('0x17')]=this[_0x626e('0x16')];this['ringtime']=getSeconds(_0x31c9bc[_0x626e('0x15')],_0x31c9bc[_0x626e('0x18')]);this[_0x626e('0x19')]=getSeconds(this[_0x626e('0x16')],_0x31c9bc[_0x626e('0x15')]);this[_0x626e('0x1a')]=0x0;this[_0x626e('0x9')]=_0x618714[_0x626e('0x9')];this[_0x626e('0x1b')]=_0x618714[_0x626e('0x1c')];this[_0x626e('0x1d')]=_0x618714[_0x626e('0x1d')];this[_0x626e('0x1e')]=_0x31c9bc[_0x626e('0x1e')];this[_0x626e('0x1f')]=_0x31c9bc[_0x626e('0x1f')];this[_0x626e('0x20')]=_0x31c9bc[_0x626e('0x20')];this['recallme']=_0x31c9bc['recallme'];this['ContactId']=_0x31c9bc[_0x626e('0x21')];this['ListId']=_0x31c9bc['ListId'];this[_0x626e('0x22')]=_0x31c9bc[_0x626e('0x22')];this[_0x626e('0x23')]=_0x31c9bc[_0x626e('0x23')];this[_0x626e('0x24')]=_0x31c9bc[_0x626e('0x24')];this['originatecalleridnum']=_0x31c9bc[_0x626e('0x25')]||'';this[_0x626e('0x26')]=_0x31c9bc[_0x626e('0x26')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 4c5a2b5..15ca328 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(_0x25670d,_0x552fc5){var _0x2903ad=function(_0x39a57d){while(--_0x39a57d){_0x25670d['push'](_0x25670d['shift']());}};_0x2903ad(++_0x552fc5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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(_0x5da248,_0x10bf67){var _0x7f731c=function(_0x45b212){while(--_0x45b212){_0x5da248['push'](_0x5da248['shift']());}};_0x7f731c(++_0x10bf67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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 f4c93b8..a479360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf62=['Action','variablesAction','addVariables','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','./rpcDb','./channel','./util/util','./action','channels','faxAccounts','trunks','actions','syncNewchannel','bind','varset','syncVarSet','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','info','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','application/pdf','then','notify','fax','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','reason','update','AttachmentId','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','syncHangup','\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','Trunk\x20Reachable','path','execute','format','dir','Convert\x20pdf\x20to\x20tif'];(function(_0x2b5d31,_0x4b2613){var _0x5b4ff8=function(_0x3dcad8){while(--_0x3dcad8){_0x2b5d31['push'](_0x2b5d31['shift']());}};_0x5b4ff8(++_0x4b2613);}(_0xaf62,0x88));var _0x2af6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaf62[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x2af6('0x0'));var _=require('lodash');var BPromise=require(_0x2af6('0x1'));var uuid=require(_0x2af6('0x2'));var moment=require(_0x2af6('0x3'));var path=require('path');var tiff2pdf=require(_0x2af6('0x4'));var gs=require(_0x2af6('0x5'));var logger=require(_0x2af6('0x6'))('fax');var ami=require('../ami');var rpcDb=require(_0x2af6('0x7'));var Channel=require(_0x2af6('0x8'));var ut=require(_0x2af6('0x9'));var Action=require(_0x2af6('0xa'));var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require('../rpc/faxMessage');function Fax(_0x2612cb){this[_0x2af6('0xb')]={};this[_0x2af6('0xc')]=_0x2612cb[_0x2af6('0xc')];this[_0x2af6('0xd')]=_0x2612cb[_0x2af6('0xd')];this[_0x2af6('0xe')]={};ami['on']('newchannel',this[_0x2af6('0xf')][_0x2af6('0x10')](this));ami['on'](_0x2af6('0x11'),this[_0x2af6('0x12')][_0x2af6('0x10')](this));ami['on']('newstate',this[_0x2af6('0x13')][_0x2af6('0x10')](this));ami['on'](_0x2af6('0x14'),this[_0x2af6('0x15')][_0x2af6('0x10')](this));ami['on'](_0x2af6('0x16'),this[_0x2af6('0x17')][_0x2af6('0x10')](this));ami['on'](_0x2af6('0x18'),this[_0x2af6('0x19')][_0x2af6('0x10')](this));ami['on'](_0x2af6('0x1a'),this['syncHangup']['bind'](this));ami['on'](_0x2af6('0x1b'),this[_0x2af6('0x1c')]['bind'](this));}Fax[_0x2af6('0x1d')][_0x2af6('0xf')]=function(_0x87c15){if(_0x87c15[_0x2af6('0x1e')]===_0x2af6('0x1f')){for(var _0x4692b1 in this[_0x2af6('0xc')]){if(this['faxAccounts'][_0x2af6('0x20')](_0x4692b1)){if(_0x87c15[_0x2af6('0x21')]===this[_0x2af6('0xc')][_0x4692b1][_0x2af6('0x22')]){this[_0x2af6('0xb')][_0x87c15[_0x2af6('0x23')]]={};this[_0x2af6('0xb')][_0x87c15['uniqueid']][_0x2af6('0x24')]=_0x87c15[_0x2af6('0x24')];this['channels'][_0x87c15[_0x2af6('0x23')]]['id']=this[_0x2af6('0xc')][_0x4692b1]['id'];this[_0x2af6('0xb')][_0x87c15[_0x2af6('0x23')]][_0x2af6('0x25')]=this['faxAccounts'][_0x4692b1][_0x2af6('0x25')];logger['info'](_0x87c15['uniqueid'],_0x2af6('0x26'));}}}}if(this[_0x2af6('0xe')][_0x87c15['uniqueid']]){this[_0x2af6('0xb')][_0x87c15[_0x2af6('0x23')]]={};this['channels'][_0x87c15[_0x2af6('0x23')]][_0x2af6('0x24')]=_0x87c15[_0x2af6('0x24')];logger[_0x2af6('0x27')](_0x87c15['uniqueid'],_0x2af6('0x26'));}};Fax[_0x2af6('0x1d')]['syncVarSet']=function(_0xa9dd4b){if(this[_0x2af6('0xb')][_0xa9dd4b[_0x2af6('0x23')]]){for(var _0x1d3dc9 in _0xa9dd4b['variable']){if(_0xa9dd4b[_0x2af6('0x28')][_0x2af6('0x20')](_0x1d3dc9)){this['channels'][_0xa9dd4b[_0x2af6('0x23')]][_0x1d3dc9]=_0xa9dd4b[_0x2af6('0x29')];}}}};Fax[_0x2af6('0x1d')][_0x2af6('0x13')]=function(_0x2f2636){if(this['channels'][_0x2f2636[_0x2af6('0x23')]]){this['channels'][_0x2f2636[_0x2af6('0x23')]]['channelstate']=_0x2f2636[_0x2af6('0x2a')];this['channels'][_0x2f2636[_0x2af6('0x23')]][_0x2af6('0x2b')]=_0x2f2636[_0x2af6('0x2b')];}};Fax[_0x2af6('0x1d')][_0x2af6('0x15')]=function(_0xe3d65b){if(this[_0x2af6('0xb')][_0xe3d65b[_0x2af6('0x23')]]){for(var _0x34e175 in _0xe3d65b['variable']){if(_0xe3d65b[_0x2af6('0x28')]['hasOwnProperty'](_0x34e175)){this[_0x2af6('0xb')][_0xe3d65b[_0x2af6('0x23')]][_0x34e175]=_0xe3d65b[_0x2af6('0x29')];}}}};Fax[_0x2af6('0x1d')][_0x2af6('0x17')]=function(_0x55e947){if(this[_0x2af6('0xb')][_0x55e947[_0x2af6('0x23')]]){this['channels'][_0x55e947[_0x2af6('0x23')]][_0x2af6('0x2c')]=_0x55e947[_0x2af6('0x2c')];this[_0x2af6('0xb')][_0x55e947[_0x2af6('0x23')]][_0x2af6('0x2d')]=_0x55e947[_0x2af6('0x2d')];this['channels'][_0x55e947[_0x2af6('0x23')]][_0x2af6('0x22')]=_0x55e947[_0x2af6('0x22')];this[_0x2af6('0xb')][_0x55e947[_0x2af6('0x23')]][_0x2af6('0x2e')]=_0x55e947['filename'];logger[_0x2af6('0x27')](_0x55e947['uniqueid'],_0x2af6('0x2f'));}};Fax[_0x2af6('0x1d')][_0x2af6('0x19')]=function(_0x37d04b){var _0x4a8a55=this;if(this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]]){var _0x2a2b96=this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]]['id'];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]][_0x2af6('0x30')]=_0x37d04b['remotestationid'];this['channels'][_0x37d04b[_0x2af6('0x23')]][_0x2af6('0x31')]=_0x37d04b['pagestransferred'];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]][_0x2af6('0x22')]=_0x37d04b['localstationid'];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]]['resolution']=_0x37d04b[_0x2af6('0x32')];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]][_0x2af6('0x33')]=_0x37d04b[_0x2af6('0x33')];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]]['filename']=_0x37d04b[_0x2af6('0x2e')];this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]][_0x2af6('0x34')]=_0x37d04b['calleridnum'];if(this[_0x2af6('0xb')][_0x37d04b[_0x2af6('0x23')]]['pagestransferred']>0x0){tiff2pdf(_0x37d04b[_0x2af6('0x2e')],_0x2af6('0x35'),function(_0x4a5154){logger[_0x2af6('0x27')](_0x37d04b['uniqueid'],_0x2af6('0x36'),_0x4a5154[_0x2af6('0x37')]);attachment['create']({'name':path[_0x2af6('0x38')](_0x37d04b[_0x2af6('0x2e')])['name'],'basename':path[_0x2af6('0x38')](_0x37d04b[_0x2af6('0x2e')])[_0x2af6('0x25')]+_0x2af6('0x39'),'type':_0x2af6('0x3a')})[_0x2af6('0x3b')](function(_0x1d1d9a){faxAccount[_0x2af6('0x3c')](_0x2a2b96,{'from':_0x37d04b[_0x2af6('0x34')],'mapKey':_0x2af6('0x3d'),'body':path[_0x2af6('0x38')](_0x37d04b['filename'])[_0x2af6('0x25')]+_0x2af6('0x39'),'AttachmentId':_0x1d1d9a['id']})[_0x2af6('0x3e')](function(_0x42b9b5){logger[_0x2af6('0x3f')](_0x37d04b[_0x2af6('0x23')],_0x2af6('0x40'),JSON['stringify'](_0x42b9b5));});})[_0x2af6('0x3e')](function(_0x3101f5){logger['error'](_0x37d04b[_0x2af6('0x23')],_0x2af6('0x41'),JSON[_0x2af6('0x42')](_0x3101f5));});});}logger[_0x2af6('0x27')](_0x37d04b[_0x2af6('0x23')],'\x20receiveFax\x20');}};Fax[_0x2af6('0x1d')]['syncOriginateResponse']=function(_0x196110){if(this['actions'][_0x196110[_0x2af6('0x23')]]){_[_0x2af6('0x43')](this['channels'][_0x196110[_0x2af6('0x23')]],_['pick'](_0x196110,['response',_0x2af6('0x44')]));}};function updateStatus(_0x2fa342){if(_0x2fa342['AttachmentId']){faxMessage[_0x2af6('0x45')](_0x2fa342[_0x2af6('0x46')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x2af6('0x3b')](function(_0x21ea7d){ut[_0x2af6('0x47')]('[Fax][Message][Error][Updated]',_0x21ea7d);})['catch'](function(_0x493ac0){ut[_0x2af6('0x47')](_0x2af6('0x48'),_0x493ac0);});}else{ut['logger'](_0x2af6('0x49'));}}Fax[_0x2af6('0x1d')]['updateStatus']=function(_0x2560f1,_0x21587a,_0x2efa5f){var _0x520032=this;var _0x4949b6={};if(_0x21587a){_0x4949b6={'read':_0x21587a};}else{_0x4949b6={'failMessage':_0x2efa5f};}if(this[_0x2af6('0xe')][_0x2560f1][_0x2af6('0x46')]){faxMessage['update'](this[_0x2af6('0xe')][_0x2560f1]['AttachmentId'],_0x4949b6)[_0x2af6('0x3b')](function(_0x29b666){ut[_0x2af6('0x47')](_0x2af6('0x4a'),_0x29b666);})[_0x2af6('0x3e')](function(_0x21e4b0){ut[_0x2af6('0x47')](_0x2af6('0x4b'),_0x21e4b0);})['finally'](function(){delete _0x520032[_0x2af6('0xb')][_0x2560f1];delete _0x520032[_0x2af6('0xe')][_0x2560f1];});}else{ut[_0x2af6('0x47')](_0x2af6('0x4c'));delete this[_0x2af6('0xb')][_0x2560f1];delete this[_0x2af6('0xe')][_0x2560f1];}};Fax['prototype'][_0x2af6('0x4d')]=function(_0x167066){var _0x411fe0=this;if(this[_0x2af6('0xb')][_0x167066['uniqueid']]){if(this[_0x2af6('0xe')][_0x167066['uniqueid']]){this['channels'][_0x167066['uniqueid']]['id']=this[_0x2af6('0xe')][_0x167066[_0x2af6('0x23')]]['id'];this[_0x2af6('0xb')][_0x167066[_0x2af6('0x23')]][_0x2af6('0x25')]=this[_0x2af6('0xe')][_0x167066[_0x2af6('0x23')]]['name'];}logger['info'](_0x167066[_0x2af6('0x23')],this[_0x2af6('0xe')][_0x167066[_0x2af6('0x23')]]?_0x2af6('0x4e'):_0x2af6('0x4f'),JSON[_0x2af6('0x42')](this[_0x2af6('0xb')][_0x167066[_0x2af6('0x23')]]));if(this['actions'][_0x167066[_0x2af6('0x23')]]){if(this[_0x2af6('0xb')][_0x167066[_0x2af6('0x23')]][_0x2af6('0x50')]>0x0&&this['channels'][_0x167066[_0x2af6('0x23')]][_0x2af6('0x16')]===_0x2af6('0x51')){this[_0x2af6('0x52')](_0x167066[_0x2af6('0x23')],!![]);}else{this[_0x2af6('0x52')](_0x167066[_0x2af6('0x23')],![],this[_0x2af6('0xb')][_0x167066[_0x2af6('0x23')]][_0x2af6('0x53')]?_0x2af6('0x54')+this[_0x2af6('0xb')][_0x167066[_0x2af6('0x23')]][_0x2af6('0x53')]:_0x2af6('0x55'));}}}};Fax[_0x2af6('0x1d')][_0x2af6('0x56')]=function(_0x38da82){var _0x28971e=this;return new BPromise(function(_0x3fa319,_0x4f3cc2){_0x28971e[_0x2af6('0x57')](_0x38da82,_0x28971e[_0x2af6('0xc')][_0x38da82[_0x2af6('0x58')]])[_0x2af6('0x3b')](function(_0x16ce64){ut['logger'](_0x2af6('0x59'),_0x16ce64);_0x3fa319(ut[_0x2af6('0x37')](_0x2af6('0x5a')));})[_0x2af6('0x3e')](function(_0x353e44){ut[_0x2af6('0x47')](_0x2af6('0x5b'),_0x353e44);updateStatus(_0x38da82);_0x4f3cc2(ut[_0x2af6('0x37')](_0x2af6('0x5c')));});});};Fax[_0x2af6('0x1d')][_0x2af6('0x5d')]=function(_0x3984c1){var _0x4a75cc=this;return new BPromise(function(_0xaed760,_0x5705f7){var _0x55d647=_0x4a75cc[_0x2af6('0x5e')](_0x4a75cc[_0x2af6('0xc')][_0x3984c1['FaxAccountId']][_0x2af6('0x5f')],_0x3984c1);if(_0x55d647['isValid']){_0xaed760(ut[_0x2af6('0x37')](_0x2af6('0x60')));}else{_0x5705f7(ut[_0x2af6('0x37')](_0x55d647[_0x2af6('0x37')]));}});};function originate(_0x186a45,_0x2c154b,_0x46a088){return new BPromise(function(_0xc5e0c7,_0x43b50f){if(_0x46a088){var _0x36f764=util['format']('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path['parse'](_0x186a45[_0x2af6('0x61')])[_0x2af6('0x25')],_0x186a45[_0x2af6('0x61')]);gs[_0x2af6('0x62')](_0x36f764)[_0x2af6('0x3b')](function(){_0x186a45[_0x2af6('0x61')]=util[_0x2af6('0x63')]('%s/%s.tif',path[_0x2af6('0x38')](_0x186a45[_0x2af6('0x61')])[_0x2af6('0x64')],path[_0x2af6('0x38')](_0x186a45[_0x2af6('0x61')])['name']);_0x2c154b['XMF-PATH']=_0x186a45[_0x2af6('0x61')];ut['logger'](_0x2af6('0x65'),'');ami[_0x2af6('0x66')](ut['variablesAction'](_0x186a45,_0x2c154b))[_0x2af6('0x3b')](function(_0x46dfdd){_0xc5e0c7(_0x46dfdd);})[_0x2af6('0x3e')](function(_0x25dd2d){_0x43b50f(_0x25dd2d);});})[_0x2af6('0x3e')](function(_0x504e9c){_0x43b50f(_0x504e9c);});}else{ami[_0x2af6('0x66')](ut[_0x2af6('0x67')](_0x186a45,_0x2c154b))['then'](function(_0x4101bf){_0xc5e0c7(_0x4101bf);})['catch'](function(_0x2d7cb9){_0x43b50f(_0x2d7cb9);});}});}Fax['prototype']['execOriginate']=function(_0x4d8d61,_0x228c1c){var _0x43d2bc=this;return new BPromise(function(_0x58e106,_0x22871b){var _0x64cb32=uuid['v4']();var _0x599123=ut[_0x2af6('0x68')](_0x4d8d61,_0x228c1c);_0x43d2bc[_0x2af6('0xe')][_0x64cb32]=new Action(_0x64cb32,_0x228c1c,_0x4d8d61);var _0x192348=_0x43d2bc[_0x2af6('0xe')][_0x64cb32];if(path[_0x2af6('0x38')](_0x4d8d61['path'])['ext']==='.pdf'){originate(_0x192348,_0x599123,!![])[_0x2af6('0x3b')](function(_0x134d4f){_0x58e106(_0x134d4f);})['catch'](function(_0x570344){_0x22871b(_0x570344);});}else{originate(_0x192348,_0x599123,![])[_0x2af6('0x3b')](function(_0xcd5fca){_0x58e106(_0xcd5fca);})[_0x2af6('0x3e')](function(_0x3f02a5){_0x22871b(_0x3f02a5);});}});};Fax[_0x2af6('0x1d')][_0x2af6('0x69')]=function(_0x1130c9){return!_[_0x2af6('0x6a')](_0x1130c9)&&!_[_0x2af6('0x6a')](_0x1130c9['name'])&&!_[_0x2af6('0x6a')](_0x1130c9[_0x2af6('0x6b')])&&_0x1130c9[_0x2af6('0x6b')]&&!_[_0x2af6('0x6a')](this[_0x2af6('0xd')][util['format']('SIP/%s',_0x1130c9[_0x2af6('0x25')])])&&!_[_0x2af6('0x6a')](this['trunks'][util[_0x2af6('0x63')](_0x2af6('0x6c'),_0x1130c9[_0x2af6('0x25')])]['status'])&&(this[_0x2af6('0xd')][util[_0x2af6('0x63')](_0x2af6('0x6c'),_0x1130c9[_0x2af6('0x25')])]['status']===_0x2af6('0x6d')||this[_0x2af6('0xd')][util[_0x2af6('0x63')](_0x2af6('0x6c'),_0x1130c9[_0x2af6('0x25')])][_0x2af6('0x2d')]===_0x2af6('0x6e'));};Fax[_0x2af6('0x1d')]['checkTrunk']=function(_0x3a5873,_0x242c19){if(!this['isTrunkReachable'](_0x3a5873)){ut['logger'](_0x2af6('0x6f'),_[_0x2af6('0x6a')](_0x3a5873)?'':_0x3a5873[_0x2af6('0x25')]+_0x2af6('0x70'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0x2af6('0x6a')](_0x242c19['fax'])){ut[_0x2af6('0x47')](_0x2af6('0x71'),JSON[_0x2af6('0x42')](_0x242c19));return{'isValid':![],'message':_0x2af6('0x72')};}if(_[_0x2af6('0x6a')](_0x242c19['path'])){ut['logger'](_0x2af6('0x73'),JSON[_0x2af6('0x42')](_0x242c19));return{'isValid':![],'message':_0x2af6('0x74')};}return{'isValid':!![],'message':_0x2af6('0x75')};};module[_0x2af6('0x76')]=Fax;
\ No newline at end of file
+var _0x74ba=['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','dir','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','faxAccounts','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newexten','syncNewExten','faxstatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x74ba,0x114));var _0xa74b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x74ba[_0x2641f9];return _0x585741;};'use strict';var util=require('util');var _=require(_0xa74b('0x0'));var BPromise=require(_0xa74b('0x1'));var uuid=require(_0xa74b('0x2'));var moment=require(_0xa74b('0x3'));var path=require(_0xa74b('0x4'));var tiff2pdf=require(_0xa74b('0x5'));var gs=require(_0xa74b('0x6'));var logger=require(_0xa74b('0x7'))(_0xa74b('0x8'));var ami=require(_0xa74b('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0xa74b('0xa'));var ut=require('./util/util');var Action=require(_0xa74b('0xb'));var faxAccount=require(_0xa74b('0xc'));var attachment=require(_0xa74b('0xd'));var faxMessage=require(_0xa74b('0xe'));function Fax(_0x33a7ca){this['channels']={};this[_0xa74b('0xf')]=_0x33a7ca['faxAccounts'];this['trunks']=_0x33a7ca['trunks'];this[_0xa74b('0x10')]={};ami['on'](_0xa74b('0x11'),this[_0xa74b('0x12')][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x14'),this[_0xa74b('0x15')][_0xa74b('0x13')](this));ami['on']('newstate',this['syncNewState'][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x16'),this[_0xa74b('0x17')]['bind'](this));ami['on'](_0xa74b('0x18'),this['syncFaxStatus'][_0xa74b('0x13')](this));ami['on'](_0xa74b('0x19'),this[_0xa74b('0x1a')]['bind'](this));ami['on'](_0xa74b('0x1b'),this[_0xa74b('0x1c')]['bind'](this));ami['on'](_0xa74b('0x1d'),this[_0xa74b('0x1e')]['bind'](this));}Fax[_0xa74b('0x1f')][_0xa74b('0x12')]=function(_0x3a2f85){if(_0x3a2f85[_0xa74b('0x20')]==='from-voip-provider'){for(var _0x443dda in this[_0xa74b('0xf')]){if(this[_0xa74b('0xf')][_0xa74b('0x21')](_0x443dda)){if(_0x3a2f85[_0xa74b('0x22')]===this['faxAccounts'][_0x443dda][_0xa74b('0x23')]){this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]={};this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x26')]=_0x3a2f85['channel'];this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]['id']=this[_0xa74b('0xf')][_0x443dda]['id'];this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x27')]=this[_0xa74b('0xf')][_0x443dda][_0xa74b('0x27')];logger['info'](_0x3a2f85['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0xa74b('0x10')][_0x3a2f85[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]]={};this[_0xa74b('0x24')][_0x3a2f85[_0xa74b('0x25')]][_0xa74b('0x26')]=_0x3a2f85[_0xa74b('0x26')];logger[_0xa74b('0x28')](_0x3a2f85[_0xa74b('0x25')],_0xa74b('0x29'));}};Fax[_0xa74b('0x1f')][_0xa74b('0x15')]=function(_0x516459){if(this[_0xa74b('0x24')][_0x516459[_0xa74b('0x25')]]){for(var _0x531daa in _0x516459[_0xa74b('0x2a')]){if(_0x516459[_0xa74b('0x2a')]['hasOwnProperty'](_0x531daa)){this[_0xa74b('0x24')][_0x516459[_0xa74b('0x25')]][_0x531daa]=_0x516459[_0xa74b('0x2b')];}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x2c')]=function(_0x29e29b){if(this[_0xa74b('0x24')][_0x29e29b[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x29e29b['uniqueid']][_0xa74b('0x2d')]=_0x29e29b['channelstate'];this[_0xa74b('0x24')][_0x29e29b[_0xa74b('0x25')]][_0xa74b('0x2e')]=_0x29e29b[_0xa74b('0x2e')];}};Fax[_0xa74b('0x1f')]['syncNewExten']=function(_0x50504d){if(this['channels'][_0x50504d[_0xa74b('0x25')]]){for(var _0x5289e4 in _0x50504d['variable']){if(_0x50504d[_0xa74b('0x2a')][_0xa74b('0x21')](_0x5289e4)){this[_0xa74b('0x24')][_0x50504d['uniqueid']][_0x5289e4]=_0x50504d[_0xa74b('0x2b')];}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x2f')]=function(_0x5e5291){if(this['channels'][_0x5e5291[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x5e5291['uniqueid']][_0xa74b('0x30')]=_0x5e5291[_0xa74b('0x30')];this['channels'][_0x5e5291['uniqueid']][_0xa74b('0x31')]=_0x5e5291[_0xa74b('0x31')];this['channels'][_0x5e5291[_0xa74b('0x25')]][_0xa74b('0x23')]=_0x5e5291['localstationid'];this[_0xa74b('0x24')][_0x5e5291[_0xa74b('0x25')]][_0xa74b('0x32')]=_0x5e5291[_0xa74b('0x32')];logger[_0xa74b('0x28')](_0x5e5291[_0xa74b('0x25')],_0xa74b('0x33'));}};Fax['prototype']['syncReceiveFax']=function(_0x4c90b7){var _0xce095a=this;if(this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]){var _0xf93bc=this['channels'][_0x4c90b7[_0xa74b('0x25')]]['id'];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]['remotestationid']=_0x4c90b7['remotestationid'];this['channels'][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x34')]=_0x4c90b7[_0xa74b('0x34')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]]['localstationid']=_0x4c90b7[_0xa74b('0x23')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x35')]=_0x4c90b7['resolution'];this[_0xa74b('0x24')][_0x4c90b7['uniqueid']][_0xa74b('0x36')]=_0x4c90b7[_0xa74b('0x36')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x32')]=_0x4c90b7[_0xa74b('0x32')];this[_0xa74b('0x24')][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x37')]=_0x4c90b7[_0xa74b('0x37')];if(this['channels'][_0x4c90b7[_0xa74b('0x25')]][_0xa74b('0x34')]>0x0){tiff2pdf(_0x4c90b7[_0xa74b('0x32')],'/var/opt/motion2/server/files/attachments/',function(_0x4b5d20){logger[_0xa74b('0x28')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x38'),_0x4b5d20['message']);attachment[_0xa74b('0x39')]({'name':path['parse'](_0x4c90b7['filename'])[_0xa74b('0x27')],'basename':path[_0xa74b('0x3a')](_0x4c90b7[_0xa74b('0x32')])[_0xa74b('0x27')]+_0xa74b('0x3b'),'type':_0xa74b('0x3c')})[_0xa74b('0x3d')](function(_0x93a5e){faxAccount[_0xa74b('0x3e')](_0xf93bc,{'from':_0x4c90b7[_0xa74b('0x37')],'mapKey':'fax','body':path[_0xa74b('0x3a')](_0x4c90b7[_0xa74b('0x32')])[_0xa74b('0x27')]+_0xa74b('0x3b'),'AttachmentId':_0x93a5e['id']})[_0xa74b('0x3f')](function(_0x2f500e){logger[_0xa74b('0x40')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x41'),JSON[_0xa74b('0x42')](_0x2f500e));});})[_0xa74b('0x3f')](function(_0xe5ff10){logger[_0xa74b('0x40')](_0x4c90b7[_0xa74b('0x25')],_0xa74b('0x43'),JSON[_0xa74b('0x42')](_0xe5ff10));});});}logger[_0xa74b('0x28')](_0x4c90b7['uniqueid'],'\x20receiveFax\x20');}};Fax[_0xa74b('0x1f')][_0xa74b('0x1e')]=function(_0x586e08){if(this['actions'][_0x586e08[_0xa74b('0x25')]]){_[_0xa74b('0x44')](this['channels'][_0x586e08[_0xa74b('0x25')]],_[_0xa74b('0x45')](_0x586e08,[_0xa74b('0x46'),_0xa74b('0x47')]));}};function updateStatus(_0x5a732d){if(_0x5a732d[_0xa74b('0x48')]){faxMessage[_0xa74b('0x49')](_0x5a732d[_0xa74b('0x48')],{'failMessage':'SENDING\x20FAILED\x20'})['then'](function(_0x1d6c14){ut[_0xa74b('0x4a')](_0xa74b('0x4b'),_0x1d6c14);})['catch'](function(_0x221ded){ut[_0xa74b('0x4a')](_0xa74b('0x4c'),_0x221ded);});}else{ut[_0xa74b('0x4a')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xa74b('0x1f')][_0xa74b('0x4d')]=function(_0x1a4f34,_0x377fff,_0x440c9b){var _0x93ee9e=this;var _0x1def6a={};if(_0x377fff){_0x1def6a={'read':_0x377fff};}else{_0x1def6a={'failMessage':_0x440c9b};}if(this[_0xa74b('0x10')][_0x1a4f34]['AttachmentId']){faxMessage[_0xa74b('0x49')](this['actions'][_0x1a4f34][_0xa74b('0x48')],_0x1def6a)['then'](function(_0x5d59bd){ut[_0xa74b('0x4a')](_0xa74b('0x4e'),_0x5d59bd);})[_0xa74b('0x3f')](function(_0x1ae4c9){ut[_0xa74b('0x4a')](_0xa74b('0x4f'),_0x1ae4c9);})[_0xa74b('0x50')](function(){delete _0x93ee9e[_0xa74b('0x24')][_0x1a4f34];delete _0x93ee9e[_0xa74b('0x10')][_0x1a4f34];});}else{ut['logger'](_0xa74b('0x51'));delete this['channels'][_0x1a4f34];delete this[_0xa74b('0x10')][_0x1a4f34];}};Fax[_0xa74b('0x1f')][_0xa74b('0x1c')]=function(_0x5100b2){var _0x5c7b39=this;if(this['channels'][_0x5100b2[_0xa74b('0x25')]]){if(this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]]){this[_0xa74b('0x24')][_0x5100b2['uniqueid']]['id']=this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]]['id'];this['channels'][_0x5100b2['uniqueid']]['name']=this[_0xa74b('0x10')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x27')];}logger[_0xa74b('0x28')](_0x5100b2[_0xa74b('0x25')],this[_0xa74b('0x10')][_0x5100b2['uniqueid']]?_0xa74b('0x52'):'\x20hangup\x20faxRiceive\x20',JSON[_0xa74b('0x42')](this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]]));if(this['actions'][_0x5100b2[_0xa74b('0x25')]]){if(this['channels'][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x53')]>0x0&&this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x18')]===_0xa74b('0x54')){this['updateStatus'](_0x5100b2[_0xa74b('0x25')],!![]);}else{this[_0xa74b('0x4d')](_0x5100b2[_0xa74b('0x25')],![],this[_0xa74b('0x24')][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x55')]?_0xa74b('0x56')+this['channels'][_0x5100b2[_0xa74b('0x25')]][_0xa74b('0x55')]:'SENDING\x20FAILED');}}}};Fax[_0xa74b('0x1f')][_0xa74b('0x57')]=function(_0x17b06b){var _0x57aabe=this;return new BPromise(function(_0x5764a0,_0x2ecc6e){_0x57aabe[_0xa74b('0x58')](_0x17b06b,_0x57aabe[_0xa74b('0xf')][_0x17b06b[_0xa74b('0x59')]])[_0xa74b('0x3d')](function(_0x21abe7){ut[_0xa74b('0x4a')](_0xa74b('0x5a'),_0x21abe7);_0x5764a0(ut['message'](_0xa74b('0x5b')));})[_0xa74b('0x3f')](function(_0x3cd97d){ut[_0xa74b('0x4a')]('[Fax][execOriginate][failure]',_0x3cd97d);updateStatus(_0x17b06b);_0x2ecc6e(ut[_0xa74b('0x5c')](_0xa74b('0x5d')));});});};Fax['prototype'][_0xa74b('0x5e')]=function(_0x51f854){var _0x35ebc9=this;return new BPromise(function(_0x5c551d,_0x14dbed){var _0x156982=_0x35ebc9[_0xa74b('0x5f')](_0x35ebc9[_0xa74b('0xf')][_0x51f854[_0xa74b('0x59')]][_0xa74b('0x60')],_0x51f854);if(_0x156982[_0xa74b('0x61')]){_0x5c551d(ut[_0xa74b('0x5c')](_0xa74b('0x62')));}else{_0x14dbed(ut['message'](_0x156982[_0xa74b('0x5c')]));}});};function originate(_0x4b17bc,_0xaaae18,_0x1797b2){return new BPromise(function(_0x23bf95,_0x59a4d9){if(_0x1797b2){var _0x327617=util['format'](_0xa74b('0x63'),path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])['name'],_0x4b17bc['path']);gs[_0xa74b('0x64')](_0x327617)['then'](function(){_0x4b17bc['path']=util[_0xa74b('0x65')]('%s/%s.tif',path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])[_0xa74b('0x66')],path[_0xa74b('0x3a')](_0x4b17bc[_0xa74b('0x4')])[_0xa74b('0x27')]);_0xaaae18[_0xa74b('0x67')]=_0x4b17bc[_0xa74b('0x4')];ut[_0xa74b('0x4a')]('Convert\x20pdf\x20to\x20tif','');ami[_0xa74b('0x68')](ut[_0xa74b('0x69')](_0x4b17bc,_0xaaae18))[_0xa74b('0x3d')](function(_0x27a53b){_0x23bf95(_0x27a53b);})[_0xa74b('0x3f')](function(_0x30e850){_0x59a4d9(_0x30e850);});})['catch'](function(_0x1c27f2){_0x59a4d9(_0x1c27f2);});}else{ami[_0xa74b('0x68')](ut['variablesAction'](_0x4b17bc,_0xaaae18))[_0xa74b('0x3d')](function(_0x44a853){_0x23bf95(_0x44a853);})['catch'](function(_0x20d074){_0x59a4d9(_0x20d074);});}});}Fax['prototype'][_0xa74b('0x58')]=function(_0x49467f,_0x3f9aa5){var _0x54e2b7=this;return new BPromise(function(_0x1f0abd,_0x31ff57){var _0x2b8625=uuid['v4']();var _0x2750ef=ut[_0xa74b('0x6a')](_0x49467f,_0x3f9aa5);_0x54e2b7[_0xa74b('0x10')][_0x2b8625]=new Action(_0x2b8625,_0x3f9aa5,_0x49467f);var _0x81de4c=_0x54e2b7[_0xa74b('0x10')][_0x2b8625];if(path[_0xa74b('0x3a')](_0x49467f[_0xa74b('0x4')])[_0xa74b('0x6b')]===_0xa74b('0x3b')){originate(_0x81de4c,_0x2750ef,!![])[_0xa74b('0x3d')](function(_0x790762){_0x1f0abd(_0x790762);})['catch'](function(_0x3c7e2f){_0x31ff57(_0x3c7e2f);});}else{originate(_0x81de4c,_0x2750ef,![])[_0xa74b('0x3d')](function(_0x2a5d8e){_0x1f0abd(_0x2a5d8e);})[_0xa74b('0x3f')](function(_0x1dd1f5){_0x31ff57(_0x1dd1f5);});}});};Fax['prototype'][_0xa74b('0x6c')]=function(_0x2bea65){return!_[_0xa74b('0x6d')](_0x2bea65)&&!_[_0xa74b('0x6d')](_0x2bea65['name'])&&!_[_0xa74b('0x6d')](_0x2bea65[_0xa74b('0x6e')])&&_0x2bea65['active']&&!_[_0xa74b('0x6d')](this[_0xa74b('0x6f')][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65['name'])])&&!_[_0xa74b('0x6d')](this[_0xa74b('0x6f')][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65[_0xa74b('0x27')])]['status'])&&(this[_0xa74b('0x6f')][util['format']('SIP/%s',_0x2bea65[_0xa74b('0x27')])][_0xa74b('0x31')]===_0xa74b('0x71')||this['trunks'][util[_0xa74b('0x65')](_0xa74b('0x70'),_0x2bea65['name'])][_0xa74b('0x31')]===_0xa74b('0x72'));};Fax[_0xa74b('0x1f')][_0xa74b('0x5f')]=function(_0xcf49bc,_0x1c6faa){if(!this[_0xa74b('0x6c')](_0xcf49bc)){ut[_0xa74b('0x4a')](_0xa74b('0x73'),_[_0xa74b('0x6d')](_0xcf49bc)?'':_0xcf49bc[_0xa74b('0x27')]+_0xa74b('0x74'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0xa74b('0x6d')](_0x1c6faa['fax'])){ut[_0xa74b('0x4a')](_0xa74b('0x75'),JSON[_0xa74b('0x42')](_0x1c6faa));return{'isValid':![],'message':_0xa74b('0x76')};}if(_[_0xa74b('0x6d')](_0x1c6faa[_0xa74b('0x4')])){ut[_0xa74b('0x4a')](_0xa74b('0x77'),JSON[_0xa74b('0x42')](_0x1c6faa));return{'isValid':![],'message':_0xa74b('0x78')};}return{'isValid':!![],'message':_0xa74b('0x79')};};module[_0xa74b('0x7a')]=Fax;
\ No newline at end of file
index e1c7ba7..6673cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa1e=['then','notify','catch','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','resolve'];(function(_0x561d93,_0x1e8cee){var _0x122951=function(_0x395b56){while(--_0x395b56){_0x561d93['push'](_0x561d93['shift']());}};_0x122951(++_0x1e8cee);}(_0xaa1e,0x163));var _0xeaa1=function(_0x124609,_0x2f0025){_0x124609=_0x124609-0x0;var _0x6d1fd6=_0xaa1e[_0x124609];return _0x6d1fd6;};'use strict';var util=require(_0xeaa1('0x0'));var BPromise=require(_0xeaa1('0x1'));var logger=require(_0xeaa1('0x2'))(_0xeaa1('0x3'));var _=require(_0xeaa1('0x4'));var faxAccount=require(_0xeaa1('0x5'));function loggerCatch(_0xa17e6d){return function(_0x3eb250){logger[_0xeaa1('0x6')](_0xa17e6d,util['inspect'](_0x3eb250,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x153dde,_0x367ab3){return BPromise[_0xeaa1('0x7')]()[_0xeaa1('0x8')](faxAccount[_0xeaa1('0x9')](_0x153dde,_0x367ab3))[_0xeaa1('0xa')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0x38a5=['util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','catch'];(function(_0x377841,_0x122e1a){var _0x2b098f=function(_0x503d15){while(--_0x503d15){_0x377841['push'](_0x377841['shift']());}};_0x2b098f(++_0x122e1a);}(_0x38a5,0xc0));var _0x538a=function(_0x3036ec,_0x546d4d){_0x3036ec=_0x3036ec-0x0;var _0x53241c=_0x38a5[_0x3036ec];return _0x53241c;};'use strict';var util=require(_0x538a('0x0'));var BPromise=require(_0x538a('0x1'));var logger=require(_0x538a('0x2'))(_0x538a('0x3'));var _=require(_0x538a('0x4'));var faxAccount=require(_0x538a('0x5'));function loggerCatch(_0x42f0f1){return function(_0x321a32){logger[_0x538a('0x6')](_0x42f0f1,util[_0x538a('0x7')](_0x321a32,{'showHidden':![],'depth':null}));};}exports[_0x538a('0x8')]=function(_0x5750e9,_0x5321f9){return BPromise[_0x538a('0x9')]()[_0x538a('0xa')](faxAccount[_0x538a('0x8')](_0x5750e9,_0x5321f9))[_0x538a('0xb')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 679cfd5..462b4fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7963=['../../../../config/logger','fax','execute','Exec\x20gs','info','\x20Error\x20:','inspect','util'];(function(_0xc74264,_0x5a41e9){var _0x238107=function(_0x49ad5c){while(--_0x49ad5c){_0xc74264['push'](_0xc74264['shift']());}};_0x238107(++_0x5a41e9);}(_0x7963,0x1af));var _0x3796=function(_0x392be3,_0xf1d603){_0x392be3=_0x392be3-0x0;var _0x1453b2=_0x7963[_0x392be3];return _0x1453b2;};'use strict';var util=require(_0x3796('0x0'));var logger=require(_0x3796('0x1'))(_0x3796('0x2'));var BPromise=require('bluebird');var exec=require('child_process')['exec'];exports[_0x3796('0x3')]=function(_0x485802){return new BPromise(function(_0x48ed6d,_0x43fe20){exec(_0x485802,function(_0x9ad85e,_0x3fdbf5,_0x3ffdbb){logger['info'](_0x3796('0x4'),_0x3fdbf5);if(_0x9ad85e){logger[_0x3796('0x5')]('Exec\x20gs',_0x3796('0x6'),util[_0x3796('0x7')](_0x9ad85e,{'showHidden':![],'depth':null}),_0x3fdbf5,_0x3ffdbb);_0x43fe20(_0x9ad85e);}_0x48ed6d(_0x3fdbf5);});});};
\ No newline at end of file
+var _0x9a51=['fax','exec','execute','Exec\x20gs','info','inspect','util','../../../../config/logger'];(function(_0x3280db,_0x149997){var _0x19fbf9=function(_0x4e1143){while(--_0x4e1143){_0x3280db['push'](_0x3280db['shift']());}};_0x19fbf9(++_0x149997);}(_0x9a51,0xd6));var _0x19a5=function(_0x1aba9c,_0x465976){_0x1aba9c=_0x1aba9c-0x0;var _0x414891=_0x9a51[_0x1aba9c];return _0x414891;};'use strict';var util=require(_0x19a5('0x0'));var logger=require(_0x19a5('0x1'))(_0x19a5('0x2'));var BPromise=require('bluebird');var exec=require('child_process')[_0x19a5('0x3')];exports[_0x19a5('0x4')]=function(_0xd716fa){return new BPromise(function(_0x545edc,_0x2b6b5b){exec(_0xd716fa,function(_0x452ac9,_0x44659d,_0x3381e8){logger['info'](_0x19a5('0x5'),_0x44659d);if(_0x452ac9){logger[_0x19a5('0x6')]('Exec\x20gs','\x20Error\x20:',util[_0x19a5('0x7')](_0x452ac9,{'showHidden':![],'depth':null}),_0x44659d,_0x3381e8);_0x2b6b5b(_0x452ac9);}_0x545edc(_0x44659d);});});};
\ No newline at end of file
index f5e3728..efb5678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf35e=['localstationid','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','lodash','../../../../config/logger','fax','message','logger','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','faxdetect','t38timeout'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xf35e,0x69));var _0xef35=function(_0x385b49,_0x2ef99){_0x385b49=_0x385b49-0x0;var _0x430e37=_0xf35e[_0x385b49];return _0x430e37;};'use strict';var util=require('util');var _=require(_0xef35('0x0'));var moment=require('moment');var logger=require(_0xef35('0x1'))(_0xef35('0x2'));exports[_0xef35('0x3')]=function(_0x4abac2){return{'message':_0x4abac2};};exports[_0xef35('0x4')]=function(_0x62bc02,_0x20c3fd){logger['info'](_0x62bc02,util[_0xef35('0x5')](_0x20c3fd,{'showHidden':![],'depth':null}));};exports[_0xef35('0x6')]=function(_0x8a6054,_0x4caa5d){var _0x277425={'XMF-ECM':_0x4caa5d[_0xef35('0x7')],'XMF-HEADERINFO':_0x4caa5d[_0xef35('0x8')],'XMF-MINRATE':_0x4caa5d[_0xef35('0x9')],'XMF-MAXRATE':_0x4caa5d[_0xef35('0xa')],'XMF-MODEM':util[_0xef35('0xb')](_0xef35('0xc'),_0x4caa5d['modem']),'XMF-GATEWAY':_0x4caa5d['gateway'],'XMF-FAXDETECT':_0x4caa5d[_0xef35('0xd')],'XMF-T38TIMEOUT':_0x4caa5d[_0xef35('0xe')],'XMF-LOCALSTATIONID':_0x4caa5d[_0xef35('0xf')],'XMF-PATH':_0x8a6054[_0xef35('0x10')]};return _0x277425;};exports[_0xef35('0x11')]=function(_0x3f4b43,_0x5eb548){return{'actionid':_0x3f4b43[_0xef35('0x12')],'action':_0xef35('0x13'),'channel':_0x3f4b43[_0xef35('0x14')],'Exten':_0xef35('0x15'),'Context':_0xef35('0x16'),'Priority':'1','callerid':util[_0xef35('0xb')](_0xef35('0x17'),_0x3f4b43[_0xef35('0x8')]?_0x3f4b43[_0xef35('0x8')]:'',_0x3f4b43[_0xef35('0xf')]),'variable':_0x5eb548,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3f4b43['uniqueid']};};
\ No newline at end of file
+var _0x1cfd=['from-sip','\x22%s\x22\x20<%s>','localstationid','lodash','../../../../config/logger','fax','logger','inspect','addVariables','ecm','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax'];(function(_0x339d42,_0x66d7f4){var _0x12d1bf=function(_0x329262){while(--_0x329262){_0x339d42['push'](_0x339d42['shift']());}};_0x12d1bf(++_0x66d7f4);}(_0x1cfd,0x18f));var _0xd1cf=function(_0x4ee515,_0x1a214d){_0x4ee515=_0x4ee515-0x0;var _0x32e387=_0x1cfd[_0x4ee515];return _0x32e387;};'use strict';var util=require('util');var _=require(_0xd1cf('0x0'));var moment=require('moment');var logger=require(_0xd1cf('0x1'))(_0xd1cf('0x2'));exports['message']=function(_0x53684e){return{'message':_0x53684e};};exports[_0xd1cf('0x3')]=function(_0x52e161,_0x5caf4e){logger['info'](_0x52e161,util[_0xd1cf('0x4')](_0x5caf4e,{'showHidden':![],'depth':null}));};exports[_0xd1cf('0x5')]=function(_0x1f9574,_0x211aa3){var _0x477d0d={'XMF-ECM':_0x211aa3[_0xd1cf('0x6')],'XMF-HEADERINFO':_0x211aa3['headerinfo'],'XMF-MINRATE':_0x211aa3['minrate'],'XMF-MAXRATE':_0x211aa3['maxrate'],'XMF-MODEM':util[_0xd1cf('0x7')](_0xd1cf('0x8'),_0x211aa3[_0xd1cf('0x9')]),'XMF-GATEWAY':_0x211aa3[_0xd1cf('0xa')],'XMF-FAXDETECT':_0x211aa3[_0xd1cf('0xb')],'XMF-T38TIMEOUT':_0x211aa3[_0xd1cf('0xc')],'XMF-LOCALSTATIONID':_0x211aa3['localstationid'],'XMF-PATH':_0x1f9574[_0xd1cf('0xd')]};return _0x477d0d;};exports[_0xd1cf('0xe')]=function(_0x30d1b5,_0x55a211){return{'actionid':_0x30d1b5[_0xd1cf('0xf')],'action':_0xd1cf('0x10'),'channel':_0x30d1b5[_0xd1cf('0x11')],'Exten':_0xd1cf('0x12'),'Context':_0xd1cf('0x13'),'Priority':'1','callerid':util[_0xd1cf('0x7')](_0xd1cf('0x14'),_0x30d1b5['headerinfo']?_0x30d1b5['headerinfo']:'',_0x30d1b5[_0xd1cf('0x15')]),'variable':_0x55a211,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x30d1b5['uniqueid']};};
\ No newline at end of file
index 5eac585..c319b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a3=['ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','sync','bluebird','util','moment','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger'];(function(_0x33545a,_0x1e1822){var _0x32d09f=function(_0x50d028){while(--_0x50d028){_0x33545a['push'](_0x33545a['shift']());}};_0x32d09f(++_0x1e1822);}(_0x87a3,0x18e));var _0x387a=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x87a3[_0x5317b5];return _0x3b7ce2;};'use strict';var BPromise=require(_0x387a('0x0'));var util=require(_0x387a('0x1'));var moment=require(_0x387a('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require('./report');var Acw=require('./acw');var Trigger=require('./trigger');var Dialer=require(_0x387a('0x3'));var Preview=require(_0x387a('0x4'));var Fax=require(_0x387a('0x5'));var user=require('./rpc/user');var voiceQueue=require(_0x387a('0x6'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x387a('0x7'));var trunk=require(_0x387a('0x8'));var trigger=require(_0x387a('0x9'));var template=require(_0x387a('0xa'));var cmHopperHistory=require(_0x387a('0xb'));var campaign=require(_0x387a('0xc'));var voiceExtension=require(_0x387a('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x387a('0xe'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x387a('0xf'));var freshdesk=require(_0x387a('0x10'));var desk=require(_0x387a('0x11'));var zoho=require('./rpc/integrations/zoho');var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x387a('0x12'));var servicenow=require(_0x387a('0x13'));var dynamics365=require(_0x387a('0x14'));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(_0x387a('0x15'))(_0x387a('0x16'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x387a('0x17')](_0x387a('0x18'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x387a('0x17')](_0x387a('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x387a('0x19')]()[_0x387a('0x1a')](user[_0x387a('0x1b')]())[_0x387a('0x1a')](realtime[_0x387a('0x1c')]())[_0x387a('0x1a')](user[_0x387a('0x1d')]())[_0x387a('0x1a')](realtime['initTelephones']())[_0x387a('0x1a')](trunk['getTrunks']())[_0x387a('0x1a')](realtime[_0x387a('0x1e')]())[_0x387a('0x1a')](voiceQueue['getVoiceQueues']())['then'](realtime[_0x387a('0x1f')]())[_0x387a('0x1a')](trigger[_0x387a('0x20')]())[_0x387a('0x1a')](realtime[_0x387a('0x21')]())[_0x387a('0x1a')](template[_0x387a('0x22')]())[_0x387a('0x1a')](realtime['initTemplates']())['then'](zendesk[_0x387a('0x23')]())['then'](realtime[_0x387a('0x24')]())[_0x387a('0x1a')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x387a('0x25')]())[_0x387a('0x1a')](sugarcrm[_0x387a('0x26')]())['then'](realtime[_0x387a('0x27')]())[_0x387a('0x1a')](freshdesk[_0x387a('0x28')]())[_0x387a('0x1a')](realtime[_0x387a('0x29')]())[_0x387a('0x1a')](desk['getDeskAccounts']())['then'](realtime[_0x387a('0x2a')]())[_0x387a('0x1a')](zoho[_0x387a('0x2b')]())['then'](realtime[_0x387a('0x2c')]())[_0x387a('0x1a')](vtiger['getVtigerAccounts']())['then'](realtime[_0x387a('0x2d')]())[_0x387a('0x1a')](freshsales[_0x387a('0x2e')]())['then'](realtime[_0x387a('0x2f')]())[_0x387a('0x1a')](servicenow[_0x387a('0x30')]())['then'](realtime[_0x387a('0x31')]())[_0x387a('0x1a')](dynamics365[_0x387a('0x32')]())[_0x387a('0x1a')](realtime['initDynamics365Accounts']())[_0x387a('0x1a')](campaign[_0x387a('0x33')]())[_0x387a('0x1a')](realtime[_0x387a('0x34')]())[_0x387a('0x1a')](voiceExtension[_0x387a('0x35')]())[_0x387a('0x1a')](realtime[_0x387a('0x36')]())[_0x387a('0x1a')](faxAccount[_0x387a('0x37')]())[_0x387a('0x1a')](realtime[_0x387a('0x38')]())[_0x387a('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0x387a('0x19')]()['then'](voiceQueueReport[_0x387a('0x39')]())[_0x387a('0x1a')](realtime[_0x387a('0x3a')]())[_0x387a('0x1a')](cmHopperHistory[_0x387a('0x3b')]())[_0x387a('0x1a')](realtime[_0x387a('0x3c')]())[_0x387a('0x1a')](cmHopperHistory[_0x387a('0x3d')]())[_0x387a('0x1a')](realtime[_0x387a('0x3e')]())[_0x387a('0x1a')](voiceCallReport['getVoiceCallReports']())['then'](realtime[_0x387a('0x3f')]())[_0x387a('0x40')](function(_0x4612b3){logger[_0x387a('0x41')](_0x387a('0x42'),util[_0x387a('0x43')](_0x4612b3,{'showHidden':![],'depth':null}));});}function main(){return server[_0x387a('0x44')](realtime,preview,fax)[_0x387a('0x1a')](function(_0x5214b3){return initRealtime();})[_0x387a('0x1a')](function(){return initParams();})[_0x387a('0x1a')](function(){report[_0x387a('0x45')]();setInterval(initRealtime,0x1388);})[_0x387a('0x40')](function(_0x2d6004){logger['error']('[index.js][main]',util[_0x387a('0x43')](_0x2d6004,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xbbc1=['./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','../../config/logger','hour','get','resolve','then','getAgents','initAgents','getTelephones','initTelephones','initTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','error','[index.js][initParams]','inspect','listen','sync','catch','bluebird','util','moment','./report','./acw','./trigger','./dialer','./rpc/user','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger'];(function(_0x3582ee,_0x4e05a7){var _0x54cbdd=function(_0x2ac806){while(--_0x2ac806){_0x3582ee['push'](_0x3582ee['shift']());}};_0x54cbdd(++_0x4e05a7);}(_0xbbc1,0x158));var _0x1bbc=function(_0x3905a0,_0x3364e3){_0x3905a0=_0x3905a0-0x0;var _0x55e2bd=_0xbbc1[_0x3905a0];return _0x55e2bd;};'use strict';var BPromise=require(_0x1bbc('0x0'));var util=require(_0x1bbc('0x1'));var moment=require(_0x1bbc('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0x1bbc('0x3'));var Acw=require(_0x1bbc('0x4'));var Trigger=require(_0x1bbc('0x5'));var Dialer=require(_0x1bbc('0x6'));var Preview=require('./preview');var Fax=require('./fax');var user=require(_0x1bbc('0x7'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x1bbc('0x8'));var trunk=require(_0x1bbc('0x9'));var trigger=require(_0x1bbc('0xa'));var template=require(_0x1bbc('0xb'));var cmHopperHistory=require(_0x1bbc('0xc'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x1bbc('0xd'));var faxAccount=require(_0x1bbc('0xe'));var zendesk=require(_0x1bbc('0xf'));var salesforce=require(_0x1bbc('0x10'));var sugarcrm=require(_0x1bbc('0x11'));var freshdesk=require(_0x1bbc('0x12'));var desk=require(_0x1bbc('0x13'));var zoho=require(_0x1bbc('0x14'));var vtiger=require(_0x1bbc('0x15'));var freshsales=require(_0x1bbc('0x16'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x1bbc('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x1bbc('0x18'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0x1bbc('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x1bbc('0x1a')](_0x1bbc('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x1bbc('0x1b')]()[_0x1bbc('0x1c')](user[_0x1bbc('0x1d')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x1e')]())[_0x1bbc('0x1c')](user[_0x1bbc('0x1f')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x20')]())['then'](trunk['getTrunks']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x21')]())['then'](voiceQueue['getVoiceQueues']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x22')]())[_0x1bbc('0x1c')](trigger[_0x1bbc('0x23')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x24')]())[_0x1bbc('0x1c')](template[_0x1bbc('0x25')]())['then'](realtime['initTemplates']())[_0x1bbc('0x1c')](zendesk['getZendeskAccounts']())['then'](realtime[_0x1bbc('0x26')]())['then'](salesforce[_0x1bbc('0x27')]())['then'](realtime[_0x1bbc('0x28')]())['then'](sugarcrm['getSugarcrmAccounts']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x29')]())[_0x1bbc('0x1c')](freshdesk[_0x1bbc('0x2a')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x2b')]())[_0x1bbc('0x1c')](desk[_0x1bbc('0x2c')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x2d')]())[_0x1bbc('0x1c')](zoho[_0x1bbc('0x2e')]())['then'](realtime[_0x1bbc('0x2f')]())[_0x1bbc('0x1c')](vtiger[_0x1bbc('0x30')]())[_0x1bbc('0x1c')](realtime['initVtigerAccounts']())[_0x1bbc('0x1c')](freshsales[_0x1bbc('0x31')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x32')]())[_0x1bbc('0x1c')](servicenow[_0x1bbc('0x33')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x34')]())[_0x1bbc('0x1c')](dynamics365['getDynamics365Accounts']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x35')]())[_0x1bbc('0x1c')](campaign[_0x1bbc('0x36')]())['then'](realtime[_0x1bbc('0x37')]())[_0x1bbc('0x1c')](voiceExtension[_0x1bbc('0x38')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x39')]())['then'](faxAccount['getFaxAccounts']())['then'](realtime[_0x1bbc('0x3a')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x1bbc('0x1b')]()[_0x1bbc('0x1c')](voiceQueueReport['getVoiceQueueReports']())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x3b')]())['then'](cmHopperHistory[_0x1bbc('0x3c')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x3d')]())[_0x1bbc('0x1c')](cmHopperHistory[_0x1bbc('0x3e')]())[_0x1bbc('0x1c')](realtime['initCampaignHopperHistory']())['then'](voiceCallReport[_0x1bbc('0x3f')]())[_0x1bbc('0x1c')](realtime[_0x1bbc('0x40')]())['catch'](function(_0xeb962a){logger[_0x1bbc('0x41')](_0x1bbc('0x42'),util[_0x1bbc('0x43')](_0xeb962a,{'showHidden':![],'depth':null}));});}function main(){return server[_0x1bbc('0x44')](realtime,preview,fax)['then'](function(_0x44f495){return initRealtime();})[_0x1bbc('0x1c')](function(){return initParams();})['then'](function(){report[_0x1bbc('0x45')]();setInterval(initRealtime,0x1388);})[_0x1bbc('0x46')](function(_0x3b2e04){logger[_0x1bbc('0x41')]('[index.js][main]',util['inspect'](_0x3b2e04,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index fc4a2ee..d6ae8cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x37a902,_0x50579a){var _0x566d4f=function(_0x44a02e){while(--_0x44a02e){_0x37a902['push'](_0x37a902['shift']());}};_0x566d4f(++_0x50579a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
+var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xedd9,0xfc));var _0x9edd=function(_0xecd5e5,_0x452bf0){_0xecd5e5=_0xecd5e5-0x0;var _0x779d67=_0xedd9[_0xecd5e5];return _0x779d67;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
index 2051d06..4c58f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf162=['ivrAnswerCallsDay','ivrTotalCallsDays','message','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp'];(function(_0x488183,_0x5f37ed){var _0x24c1b9=function(_0x50a8fb){while(--_0x50a8fb){_0x488183['push'](_0x488183['shift']());}};_0x24c1b9(++_0x5f37ed);}(_0xf162,0x1bd));var _0x2f16=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf162[_0x122ef9];return _0x42fba0;};'use strict';function Campaign(_0x3b8688){this['id']=_0x3b8688['id']||0x0;this['name']=_0x3b8688[_0x2f16('0x0')]||'';this['type']=_0x3b8688[_0x2f16('0x1')]||_0x2f16('0x2');this[_0x2f16('0x3')]=0x0;this[_0x2f16('0x4')]=0x0;this[_0x2f16('0x5')]=0x0;this[_0x2f16('0x6')]=0x0;this[_0x2f16('0x7')]='';this['sendMessageOneNotActive']=!![];this['active']=_0x3b8688['active'];this[_0x2f16('0x8')]=_0x3b8688[_0x2f16('0x8')];this[_0x2f16('0x9')]=_0x3b8688[_0x2f16('0x9')]||null;this[_0x2f16('0xa')]=_0x3b8688['dialGlobalInterval']?_0x3b8688['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x3b8688[_0x2f16('0xb')];this[_0x2f16('0xc')]=_0x3b8688['dialOriginateCallerIdNumber'];this[_0x2f16('0xd')]=_0x3b8688[_0x2f16('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x3b8688[_0x2f16('0xe')];this[_0x2f16('0xf')]=_0x3b8688[_0x2f16('0xf')];this[_0x2f16('0x10')]=_0x3b8688['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x3b8688[_0x2f16('0x11')];this['dialNoAnswerMaxRetry']=_0x3b8688[_0x2f16('0x12')];this[_0x2f16('0x13')]=_0x3b8688[_0x2f16('0x13')];this[_0x2f16('0x14')]=_0x3b8688['dialGlobalMaxRetry'];this[_0x2f16('0x15')]=_0x3b8688[_0x2f16('0x15')]||0x3;this[_0x2f16('0x16')]=_0x3b8688[_0x2f16('0x16')]||0x96;this['dialDropMaxRetry']=_0x3b8688[_0x2f16('0x17')]||0x3;this[_0x2f16('0x18')]=_0x3b8688[_0x2f16('0x18')]||0x96;this[_0x2f16('0x19')]=_0x3b8688[_0x2f16('0x19')]||0x3;this[_0x2f16('0x1a')]=_0x3b8688['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x3b8688[_0x2f16('0x1b')]||0x3;this[_0x2f16('0x1c')]=_0x3b8688['dialMachineRetryFrequency']||0x96;this[_0x2f16('0x1d')]=_0x3b8688[_0x2f16('0x1d')]||0x3;this[_0x2f16('0x1e')]=_0x3b8688[_0x2f16('0x1e')]||0x96;this[_0x2f16('0x1f')]=_0x3b8688['dialOrderByScheduledAt']||'DESC';this[_0x2f16('0x20')]=_0x3b8688['dialPrefix']||undefined;this[_0x2f16('0x21')]=_0x3b8688['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x2f16('0x22')]=_0x3b8688[_0x2f16('0x22')]||undefined;this[_0x2f16('0x23')]=_0x3b8688[_0x2f16('0x23')]?_0x3b8688['TrunkBackup']:undefined;this['Trunk']=_0x3b8688[_0x2f16('0x24')]?_0x3b8688[_0x2f16('0x24')]:undefined;this['Interval']=_0x3b8688[_0x2f16('0x25')]?_0x3b8688['Interval']:undefined;this['SquareProject']=_0x3b8688['SquareProject']?_0x3b8688[_0x2f16('0x26')]:undefined;this[_0x2f16('0x27')]=_0x3b8688[_0x2f16('0x26')]?_0x3b8688['SquareProject'][_0x2f16('0x0')]:undefined;this[_0x2f16('0x28')]=_0x3b8688[_0x2f16('0x28')]||![];this['dialAMDInitialSilence']=_0x3b8688['dialAMDInitialSilence'];this[_0x2f16('0x29')]=_0x3b8688[_0x2f16('0x29')];this[_0x2f16('0x2a')]=_0x3b8688[_0x2f16('0x2a')];this[_0x2f16('0x2b')]=_0x3b8688[_0x2f16('0x2b')];this[_0x2f16('0x2c')]=_0x3b8688[_0x2f16('0x2c')];this['dialAMDBetweenWordsSilence']=_0x3b8688[_0x2f16('0x2d')];this[_0x2f16('0x2e')]=_0x3b8688['dialAMDMaximumNumberOfWords'];this[_0x2f16('0x2f')]=_0x3b8688[_0x2f16('0x2f')];this[_0x2f16('0x30')]=_0x3b8688[_0x2f16('0x30')];}module[_0x2f16('0x31')]=Campaign;
\ No newline at end of file
+var _0x41a4=['dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x41a4,0x142));var _0x441a=function(_0xf10796,_0x50a708){_0xf10796=_0xf10796-0x0;var _0x5c4138=_0x41a4[_0xf10796];return _0x5c4138;};'use strict';function Campaign(_0x36d552){this['id']=_0x36d552['id']||0x0;this[_0x441a('0x0')]=_0x36d552[_0x441a('0x0')]||'';this[_0x441a('0x1')]=_0x36d552[_0x441a('0x1')]||_0x441a('0x2');this['originated']=0x0;this[_0x441a('0x3')]=0x0;this[_0x441a('0x4')]=0x0;this[_0x441a('0x5')]=0x0;this[_0x441a('0x6')]='';this['sendMessageOneNotActive']=!![];this[_0x441a('0x7')]=_0x36d552['active'];this['limitCalls']=_0x36d552['limitCalls'];this[_0x441a('0x8')]=_0x36d552[_0x441a('0x8')]||null;this[_0x441a('0x9')]=_0x36d552[_0x441a('0x9')]?_0x36d552[_0x441a('0x9')]:null;this['dialOriginateCallerIdName']=_0x36d552[_0x441a('0xa')];this[_0x441a('0xb')]=_0x36d552[_0x441a('0xb')];this['dialOriginateTimeout']=_0x36d552[_0x441a('0xc')]||0x1e;this[_0x441a('0xd')]=_0x36d552[_0x441a('0xd')];this[_0x441a('0xe')]=_0x36d552['dialCongestionRetryFrequency'];this[_0x441a('0xf')]=_0x36d552['dialBusyMaxRetry'];this[_0x441a('0x10')]=_0x36d552[_0x441a('0x10')];this[_0x441a('0x11')]=_0x36d552[_0x441a('0x11')];this[_0x441a('0x12')]=_0x36d552['dialNoAnswerRetryFrequency'];this[_0x441a('0x13')]=_0x36d552[_0x441a('0x13')];this[_0x441a('0x14')]=_0x36d552['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x36d552['dialNoSuchNumberRetryFrequency']||0x96;this[_0x441a('0x15')]=_0x36d552[_0x441a('0x15')]||0x3;this[_0x441a('0x16')]=_0x36d552[_0x441a('0x16')]||0x96;this[_0x441a('0x17')]=_0x36d552[_0x441a('0x17')]||0x3;this[_0x441a('0x18')]=_0x36d552[_0x441a('0x18')]||0x96;this[_0x441a('0x19')]=_0x36d552['dialMachineMaxRetry']||0x3;this[_0x441a('0x1a')]=_0x36d552[_0x441a('0x1a')]||0x96;this[_0x441a('0x1b')]=_0x36d552[_0x441a('0x1b')]||0x3;this[_0x441a('0x1c')]=_0x36d552[_0x441a('0x1c')]||0x96;this[_0x441a('0x1d')]=_0x36d552['dialOrderByScheduledAt']||_0x441a('0x1e');this['dialPrefix']=_0x36d552['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x36d552[_0x441a('0x1f')]||undefined;this[_0x441a('0x20')]=_0x36d552[_0x441a('0x20')]||undefined;this[_0x441a('0x21')]=_0x36d552[_0x441a('0x21')]?_0x36d552[_0x441a('0x21')]:undefined;this[_0x441a('0x22')]=_0x36d552[_0x441a('0x22')]?_0x36d552[_0x441a('0x22')]:undefined;this[_0x441a('0x23')]=_0x36d552[_0x441a('0x23')]?_0x36d552[_0x441a('0x23')]:undefined;this[_0x441a('0x24')]=_0x36d552[_0x441a('0x24')]?_0x36d552[_0x441a('0x24')]:undefined;this[_0x441a('0x25')]=_0x36d552[_0x441a('0x24')]?_0x36d552['SquareProject'][_0x441a('0x0')]:undefined;this[_0x441a('0x26')]=_0x36d552[_0x441a('0x26')]||![];this[_0x441a('0x27')]=_0x36d552[_0x441a('0x27')];this['dialAMDGreeting']=_0x36d552[_0x441a('0x28')];this[_0x441a('0x29')]=_0x36d552[_0x441a('0x29')];this['dialAMDTotalAnalysisTime']=_0x36d552[_0x441a('0x2a')];this[_0x441a('0x2b')]=_0x36d552[_0x441a('0x2b')];this['dialAMDBetweenWordsSilence']=_0x36d552['dialAMDBetweenWordsSilence'];this[_0x441a('0x2c')]=_0x36d552['dialAMDMaximumNumberOfWords'];this[_0x441a('0x2d')]=_0x36d552['dialAMDSilenceThreshold'];this[_0x441a('0x2e')]=_0x36d552[_0x441a('0x2e')];}module[_0x441a('0x2f')]=Campaign;
\ No newline at end of file
index 0205500..a771372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078f=['lastapplication','lastdata','billableseconds','type','tag','disposition','monitor','queue','transfercalleridnum','transferconnectedlinenum','transferType','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned'];(function(_0x4b6645,_0x1968d5){var _0x3af6eb=function(_0x4cff17){while(--_0x4cff17){_0x4b6645['push'](_0x4b6645['shift']());}};_0x3af6eb(++_0x1968d5);}(_0x078f,0x1b4));var _0xf078=function(_0x13fa04,_0x55ce80){_0x13fa04=_0x13fa04-0x0;var _0xda203e=_0x078f[_0x13fa04];return _0xda203e;};'use strict';function Channel(){this['starttime']=null;this[_0xf078('0x0')]='';this[_0xf078('0x1')]='';this['calleridnum']=0x0;this[_0xf078('0x2')]='';this[_0xf078('0x3')]=undefined;this[_0xf078('0x4')]=undefined;this[_0xf078('0x5')]=0x0;this['context']='';this[_0xf078('0x6')]=0x0;this[_0xf078('0x7')]=0x0;this[_0xf078('0x8')]=0x0;this[_0xf078('0x9')]=![];this[_0xf078('0xa')]=null;this[_0xf078('0xb')]=null;this[_0xf078('0xc')]=![];this[_0xf078('0xd')]=![];this[_0xf078('0xe')]='';this[_0xf078('0xf')]='';this['duration']=0x0;this[_0xf078('0x10')]=0x0;this['holdtime']=0x0;this[_0xf078('0x11')]=null;this[_0xf078('0x12')]=null;this[_0xf078('0x13')]=null;this[_0xf078('0x14')]=![];this['monitorFilename']=null;this[_0xf078('0x15')]=null;this['monitors']=[];this[_0xf078('0x16')]=undefined;this[_0xf078('0x17')]=undefined;this[_0xf078('0x18')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x1a85=['unmanaged','abandoned','lastdata','holdtime','type','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','destinationchannel','calleridnum','calleridname','accountcode','context','uniqueid','exten','answertime'];(function(_0x1d5352,_0x4f7974){var _0x3395c2=function(_0x1f062a){while(--_0x1f062a){_0x1d5352['push'](_0x1d5352['shift']());}};_0x3395c2(++_0x4f7974);}(_0x1a85,0x178));var _0x51a8=function(_0x1ef2e3,_0x380ec2){_0x1ef2e3=_0x1ef2e3-0x0;var _0x173e11=_0x1a85[_0x1ef2e3];return _0x173e11;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0x51a8('0x0')]='';this[_0x51a8('0x1')]=0x0;this[_0x51a8('0x2')]='';this['connectedlinenum']=undefined;this['connectedlinename']=undefined;this[_0x51a8('0x3')]=0x0;this[_0x51a8('0x4')]='';this[_0x51a8('0x5')]=0x0;this['linkedid']=0x0;this[_0x51a8('0x6')]=0x0;this['answered']=![];this[_0x51a8('0x7')]=null;this['endtime']=null;this[_0x51a8('0x8')]=![];this[_0x51a8('0x9')]=![];this['lastapplication']='';this[_0x51a8('0xa')]='';this['duration']=0x0;this['billableseconds']=0x0;this[_0x51a8('0xb')]=0x0;this[_0x51a8('0xc')]=null;this[_0x51a8('0xd')]=null;this[_0x51a8('0xe')]=null;this[_0x51a8('0xf')]=![];this[_0x51a8('0x10')]=null;this[_0x51a8('0x11')]=null;this[_0x51a8('0x12')]=[];this[_0x51a8('0x13')]=undefined;this[_0x51a8('0x14')]=undefined;this[_0x51a8('0x15')]=undefined;this[_0x51a8('0x16')]=0x0;}module[_0x51a8('0x17')]=Channel;
\ No newline at end of file
index 75d904e..c29121f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c4=['Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x23e11c,_0x27924e){var _0x1d68f9=function(_0x57e173){while(--_0x57e173){_0x23e11c['push'](_0x23e11c['shift']());}};_0x1d68f9(++_0x27924e);}(_0x15c4,0xdf));var _0x415c=function(_0x562487,_0x5d5e5f){_0x562487=_0x562487-0x0;var _0x303ae5=_0x15c4[_0x562487];return _0x303ae5;};'use strict';function DeskAccount(_0xf7ebd7){this['id']=_0xf7ebd7['id']||0x0;this[_0x415c('0x0')]=_0xf7ebd7[_0x415c('0x0')]||'';this[_0x415c('0x1')]=_0xf7ebd7[_0x415c('0x1')]||'';this['remoteUri']=_0xf7ebd7[_0x415c('0x2')]||'';this[_0x415c('0x3')]=_0xf7ebd7[_0x415c('0x3')]||'';this[_0x415c('0x4')]=_0xf7ebd7['password']||'';this[_0x415c('0x5')]=_0xf7ebd7[_0x415c('0x5')]||'';this['consumerSecret']=_0xf7ebd7[_0x415c('0x6')]||'';this[_0x415c('0x7')]=_0xf7ebd7['token']||'';this[_0x415c('0x8')]=_0xf7ebd7[_0x415c('0x8')]||'';this[_0x415c('0x9')]=_0xf7ebd7['type']||'';this['serverUrl']=_0xf7ebd7[_0x415c('0xa')]||'';this[_0x415c('0xb')]=_0xf7ebd7['Configurations']||{};}module[_0x415c('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x0dff=['type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret'];(function(_0x4340f3,_0x1ccd94){var _0x40e9f1=function(_0x290b4d){while(--_0x290b4d){_0x4340f3['push'](_0x4340f3['shift']());}};_0x40e9f1(++_0x1ccd94);}(_0x0dff,0x1f0));var _0xf0df=function(_0x564b09,_0x3536a6){_0x564b09=_0x564b09-0x0;var _0x470b28=_0x0dff[_0x564b09];return _0x470b28;};'use strict';function DeskAccount(_0x24fae2){this['id']=_0x24fae2['id']||0x0;this[_0xf0df('0x0')]=_0x24fae2['name']||'';this['username']=_0x24fae2[_0xf0df('0x1')]||'';this['remoteUri']=_0x24fae2[_0xf0df('0x2')]||'';this['authType']=_0x24fae2[_0xf0df('0x3')]||'';this[_0xf0df('0x4')]=_0x24fae2[_0xf0df('0x4')]||'';this[_0xf0df('0x5')]=_0x24fae2[_0xf0df('0x5')]||'';this[_0xf0df('0x6')]=_0x24fae2['consumerSecret']||'';this['token']=_0x24fae2['token']||'';this[_0xf0df('0x7')]=_0x24fae2[_0xf0df('0x7')]||'';this[_0xf0df('0x8')]=_0x24fae2[_0xf0df('0x8')]||'';this['serverUrl']=_0x24fae2[_0xf0df('0x9')]||'';this[_0xf0df('0xa')]=_0x24fae2[_0xf0df('0xa')]||{};}module[_0xf0df('0xb')]=DeskAccount;
\ No newline at end of file
index 41b405a..961f8cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b5f=['remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username','password'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x0b5f,0x1e9));var _0xf0b5=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x0b5f[_0x167cc1];return _0x10bc4b;};'use strict';function Dynamics365Account(_0xfff2c9){this['id']=_0xfff2c9['id']||0x0;this['name']=_0xfff2c9[_0xf0b5('0x0')]||'';this[_0xf0b5('0x1')]=_0xfff2c9[_0xf0b5('0x1')]||'';this[_0xf0b5('0x2')]=_0xfff2c9[_0xf0b5('0x2')]||'';this[_0xf0b5('0x3')]=_0xfff2c9[_0xf0b5('0x3')]||'';this[_0xf0b5('0x4')]=_0xfff2c9[_0xf0b5('0x4')]||'';this[_0xf0b5('0x5')]=_0xfff2c9['clientId']||'';this[_0xf0b5('0x6')]=_0xfff2c9['clientSecret']||{};this[_0xf0b5('0x7')]=_0xfff2c9[_0xf0b5('0x7')]||'';this[_0xf0b5('0x8')]=_0xfff2c9[_0xf0b5('0x8')]||![];this['Configurations']=_0xfff2c9[_0xf0b5('0x9')]||{};this[_0xf0b5('0xa')]=_0xfff2c9['CloudProvider']||{};}module[_0xf0b5('0xb')]=Dynamics365Account;
\ No newline at end of file
+var _0x14f5=['name','username','password','remoteUri','tenantId','clientId','serverUrl','modernAuthentication','Configurations','CloudProvider','exports'];(function(_0x546d13,_0x118195){var _0x377164=function(_0x214ee3){while(--_0x214ee3){_0x546d13['push'](_0x546d13['shift']());}};_0x377164(++_0x118195);}(_0x14f5,0x16b));var _0x514f=function(_0x302ebe,_0x4f4943){_0x302ebe=_0x302ebe-0x0;var _0x3c7926=_0x14f5[_0x302ebe];return _0x3c7926;};'use strict';function Dynamics365Account(_0x285037){this['id']=_0x285037['id']||0x0;this['name']=_0x285037[_0x514f('0x0')]||'';this[_0x514f('0x1')]=_0x285037['username']||'';this[_0x514f('0x2')]=_0x285037[_0x514f('0x2')]||'';this[_0x514f('0x3')]=_0x285037[_0x514f('0x3')]||'';this[_0x514f('0x4')]=_0x285037[_0x514f('0x4')]||'';this[_0x514f('0x5')]=_0x285037[_0x514f('0x5')]||'';this['clientSecret']=_0x285037['clientSecret']||{};this[_0x514f('0x6')]=_0x285037['serverUrl']||'';this['modernAuthentication']=_0x285037[_0x514f('0x7')]||![];this[_0x514f('0x8')]=_0x285037[_0x514f('0x8')]||{};this[_0x514f('0x9')]=_0x285037[_0x514f('0x9')]||{};}module[_0x514f('0xa')]=Dynamics365Account;
\ No newline at end of file
index c4f7f1a..bbbb496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e74=['faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','minrate','maxrate','modem','gateway'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7e74,0x1a8));var _0x47e7=function(_0x58ae29,_0xf6780){_0x58ae29=_0x58ae29-0x0;var _0x2fa9b8=_0x7e74[_0x58ae29];return _0x2fa9b8;};'use strict';function FaxAccount(_0x26a88d){this['id']=_0x26a88d['id']||0x0;this[_0x47e7('0x0')]=_0x26a88d[_0x47e7('0x0')]||'';this[_0x47e7('0x1')]=_0x26a88d[_0x47e7('0x1')];this[_0x47e7('0x2')]=_0x26a88d['ecm'];this[_0x47e7('0x3')]=_0x26a88d[_0x47e7('0x3')];this['localstationid']=_0x26a88d['localstationid'];this[_0x47e7('0x4')]=_0x26a88d['minrate']||0x960;this[_0x47e7('0x5')]=_0x26a88d[_0x47e7('0x5')]||0x3840;this[_0x47e7('0x6')]=_0x26a88d['modem']||'v17,v27,v29';this[_0x47e7('0x7')]=_0x26a88d[_0x47e7('0x7')]||'no';this['faxdetect']=_0x26a88d[_0x47e7('0x8')]||'no';this[_0x47e7('0x9')]=_0x26a88d[_0x47e7('0x9')]||0x1388;this['tech']=_0x26a88d[_0x47e7('0xa')]||_0x47e7('0xb');this[_0x47e7('0xc')]=_0x26a88d[_0x47e7('0xc')]?_0x26a88d[_0x47e7('0xc')]:undefined;this[_0x47e7('0xd')]=_0x26a88d[_0x47e7('0xd')];this[_0x47e7('0xe')]=_0x26a88d[_0x47e7('0xe')];}module[_0x47e7('0xf')]=FaxAccount;
\ No newline at end of file
+var _0x589b=['key','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x27a0a9,_0x1e7dd1){var _0x11cb3b=function(_0x5a9aa3){while(--_0x5a9aa3){_0x27a0a9['push'](_0x27a0a9['shift']());}};_0x11cb3b(++_0x1e7dd1);}(_0x589b,0x97));var _0xb589=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x589b[_0x3dd15e];return _0x231fd0;};'use strict';function FaxAccount(_0x580733){this['id']=_0x580733['id']||0x0;this['name']=_0x580733['name']||'';this[_0xb589('0x0')]=_0x580733[_0xb589('0x0')];this[_0xb589('0x1')]=_0x580733[_0xb589('0x1')];this['headerinfo']=_0x580733[_0xb589('0x2')];this['localstationid']=_0x580733[_0xb589('0x3')];this[_0xb589('0x4')]=_0x580733[_0xb589('0x4')]||0x960;this['maxrate']=_0x580733[_0xb589('0x5')]||0x3840;this[_0xb589('0x6')]=_0x580733[_0xb589('0x6')]||_0xb589('0x7');this[_0xb589('0x8')]=_0x580733[_0xb589('0x8')]||'no';this[_0xb589('0x9')]=_0x580733[_0xb589('0x9')]||'no';this[_0xb589('0xa')]=_0x580733[_0xb589('0xa')]||0x1388;this[_0xb589('0xb')]=_0x580733['tech']||_0xb589('0xc');this[_0xb589('0xd')]=_0x580733['Trunk']?_0x580733[_0xb589('0xd')]:undefined;this['ListId']=_0x580733['ListId'];this[_0xb589('0xe')]=_0x580733[_0xb589('0xe')];}module['exports']=FaxAccount;
\ No newline at end of file
index 2b7cd3e..f9f5870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x137f=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x4fd401,_0x621dc){var _0x2607a5=function(_0x5c5932){while(--_0x5c5932){_0x4fd401['push'](_0x4fd401['shift']());}};_0x2607a5(++_0x621dc);}(_0x137f,0x64));var _0xf137=function(_0x22e3a9,_0x466a7b){_0x22e3a9=_0x22e3a9-0x0;var _0x1afa08=_0x137f[_0x22e3a9];return _0x1afa08;};'use strict';function FreshdeskAccount(_0x1a66f4){this['id']=_0x1a66f4['id']||0x0;this[_0xf137('0x0')]=_0x1a66f4[_0xf137('0x0')]||'';this['username']=_0x1a66f4[_0xf137('0x1')]||'';this[_0xf137('0x2')]=_0x1a66f4[_0xf137('0x3')]||'';this[_0xf137('0x4')]=_0x1a66f4['remoteUri']||'';this[_0xf137('0x5')]=_0x1a66f4[_0xf137('0x5')]||'';this[_0xf137('0x6')]=_0x1a66f4[_0xf137('0x6')]||{};}module[_0xf137('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xa76b=['username','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x34ae12,_0x306ef6){var _0x29ed66=function(_0x5e5d17){while(--_0x5e5d17){_0x34ae12['push'](_0x34ae12['shift']());}};_0x29ed66(++_0x306ef6);}(_0xa76b,0x7d));var _0xba76=function(_0x33519a,_0x4f7d3a){_0x33519a=_0x33519a-0x0;var _0x551e54=_0xa76b[_0x33519a];return _0x551e54;};'use strict';function FreshdeskAccount(_0x1373e4){this['id']=_0x1373e4['id']||0x0;this[_0xba76('0x0')]=_0x1373e4[_0xba76('0x0')]||'';this[_0xba76('0x1')]=_0x1373e4[_0xba76('0x1')]||'';this['apiKey']=_0x1373e4[_0xba76('0x2')]||'';this[_0xba76('0x3')]=_0x1373e4[_0xba76('0x3')]||'';this[_0xba76('0x4')]=_0x1373e4['serverUrl']||'';this[_0xba76('0x5')]=_0x1373e4['Configurations']||{};}module[_0xba76('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 5c3556a..e8b2439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92e0=['token','remoteUri','serverUrl','Configurations','name','username','apiKey'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x92e0,0x154));var _0x092e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x92e0[_0x3dd15e];return _0x231fd0;};'use strict';function FreshsalesAccount(_0x52e305){this['id']=_0x52e305['id']||0x0;this['name']=_0x52e305[_0x092e('0x0')]||'';this[_0x092e('0x1')]=_0x52e305[_0x092e('0x1')]||'';this[_0x092e('0x2')]=_0x52e305[_0x092e('0x3')]||'';this[_0x092e('0x4')]=_0x52e305[_0x092e('0x4')]||'';this[_0x092e('0x5')]=_0x52e305[_0x092e('0x5')]||'';this[_0x092e('0x6')]=_0x52e305['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x4af9=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x5c4cda,_0x2771b7){var _0x697b5c=function(_0x26a1a5){while(--_0x26a1a5){_0x5c4cda['push'](_0x5c4cda['shift']());}};_0x697b5c(++_0x2771b7);}(_0x4af9,0x12c));var _0x94af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4af9[_0x3dd15e];return _0x231fd0;};'use strict';function FreshsalesAccount(_0x1c0e9e){this['id']=_0x1c0e9e['id']||0x0;this[_0x94af('0x0')]=_0x1c0e9e['name']||'';this['username']=_0x1c0e9e[_0x94af('0x1')]||'';this[_0x94af('0x2')]=_0x1c0e9e[_0x94af('0x3')]||'';this[_0x94af('0x4')]=_0x1c0e9e[_0x94af('0x4')]||'';this[_0x94af('0x5')]=_0x1c0e9e[_0x94af('0x5')]||'';this['Configurations']=_0x1c0e9e[_0x94af('0x6')]||{};}module[_0x94af('0x7')]=FreshsalesAccount;
\ No newline at end of file
index b1534cf..d213079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb37f=['queue','count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','connectedlinenum','connectedlinename','accountcode','context','exten','priority','holdtime','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','inbound','calleridnum','calleridname'];(function(_0x3c2c15,_0x3ad97c){var _0xa5a511=function(_0x3d19f5){while(--_0x3d19f5){_0x3c2c15['push'](_0x3c2c15['shift']());}};_0xa5a511(++_0x3ad97c);}(_0xb37f,0x195));var _0xfb37=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xb37f[_0x599f41];return _0x2e4d58;};'use strict';function QueueReport(){this['type']=_0xfb37('0x0');this['uniqueid']='';this[_0xfb37('0x1')]='';this[_0xfb37('0x2')]='';this[_0xfb37('0x3')]='';this['queuecallerjoinAt']=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0xfb37('0x4')]=0x1;this[_0xfb37('0x5')]=![];this['queuecallerabandonAt']=null;this[_0xfb37('0x6')]=![];this[_0xfb37('0x7')]=null;this[_0xfb37('0x8')]=![];this[_0xfb37('0x9')]=null;this[_0xfb37('0xa')]=0x1;this['channel']='';this[_0xfb37('0xb')]='';this[_0xfb37('0xc')]='';this[_0xfb37('0xd')]='';this[_0xfb37('0xe')]='';this[_0xfb37('0xf')]='';this[_0xfb37('0x10')]='';this[_0xfb37('0x11')]=0x0;this['assigned']=![];this[_0xfb37('0x12')]='';this[_0xfb37('0x13')]=_0xfb37('0x14');this[_0xfb37('0x15')]=0x0;this[_0xfb37('0x16')]={};}module[_0xfb37('0x17')]=QueueReport;
\ No newline at end of file
+var _0x2de3=['voice','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','accountcode','context','exten','holdtime','assigned','motionChannel'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2de3,0x162));var _0x32de=function(_0x553252,_0x23b4d2){_0x553252=_0x553252-0x0;var _0x48a5c6=_0x2de3[_0x553252];return _0x48a5c6;};'use strict';function QueueReport(){this[_0x32de('0x0')]=_0x32de('0x1');this[_0x32de('0x2')]='';this[_0x32de('0x3')]='';this['calleridname']='';this['queue']='';this['queuecallerjoinAt']=null;this[_0x32de('0x4')]=null;this['position']=0x1;this[_0x32de('0x5')]=0x1;this[_0x32de('0x6')]=![];this[_0x32de('0x7')]=null;this[_0x32de('0x8')]=![];this[_0x32de('0x9')]=null;this[_0x32de('0xa')]=![];this[_0x32de('0xb')]=null;this[_0x32de('0xc')]=0x1;this[_0x32de('0xd')]='';this[_0x32de('0xe')]='';this['connectedlinename']='';this[_0x32de('0xf')]='';this[_0x32de('0x10')]='';this[_0x32de('0x11')]='';this['priority']='';this[_0x32de('0x12')]=0x0;this[_0x32de('0x13')]=![];this['lastAssignedTo']='';this[_0x32de('0x14')]=_0x32de('0x15');this[_0x32de('0x16')]=0x0;this[_0x32de('0x17')]={};}module[_0x32de('0x18')]=QueueReport;
\ No newline at end of file
index a28ffb0..aa67208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74a2=['clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','remoteUri','password','clientId'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0x74a2,0x1bf));var _0x274a=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0x74a2[_0x29e35f];return _0x266b74;};'use strict';function SalesforceAccount(_0xbfbe00){this['id']=_0xbfbe00['id']||0x0;this[_0x274a('0x0')]=_0xbfbe00[_0x274a('0x0')]||'';this['username']=_0xbfbe00['username']||'';this[_0x274a('0x1')]=_0xbfbe00[_0x274a('0x1')]||'';this[_0x274a('0x2')]=_0xbfbe00[_0x274a('0x2')]||'';this[_0x274a('0x3')]=_0xbfbe00[_0x274a('0x3')]||'';this[_0x274a('0x4')]=_0xbfbe00[_0x274a('0x4')]||'';this[_0x274a('0x5')]=_0xbfbe00[_0x274a('0x5')]||'';this[_0x274a('0x6')]=_0xbfbe00[_0x274a('0x6')]||_0x274a('0x7');this[_0x274a('0x8')]=_0xbfbe00[_0x274a('0x8')]||'';this['Configurations']=_0xbfbe00[_0x274a('0x9')]||{};}module[_0x274a('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x8597=['password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x1630df,_0x3af18a){var _0x392cda=function(_0x2bd83d){while(--_0x2bd83d){_0x1630df['push'](_0x1630df['shift']());}};_0x392cda(++_0x3af18a);}(_0x8597,0xe1));var _0x7859=function(_0x503cd5,_0x57774a){_0x503cd5=_0x503cd5-0x0;var _0x1fdf1e=_0x8597[_0x503cd5];return _0x1fdf1e;};'use strict';function SalesforceAccount(_0x505052){this['id']=_0x505052['id']||0x0;this['name']=_0x505052[_0x7859('0x0')]||'';this[_0x7859('0x1')]=_0x505052[_0x7859('0x1')]||'';this[_0x7859('0x2')]=_0x505052['remoteUri']||'';this[_0x7859('0x3')]=_0x505052[_0x7859('0x3')]||'';this[_0x7859('0x4')]=_0x505052[_0x7859('0x4')]||'';this[_0x7859('0x5')]=_0x505052['clientSecret']||'';this[_0x7859('0x6')]=_0x505052['securityToken']||'';this['type']=_0x505052[_0x7859('0x7')]||_0x7859('0x8');this[_0x7859('0x9')]=_0x505052[_0x7859('0x9')]||'';this[_0x7859('0xa')]=_0x505052[_0x7859('0xa')]||{};}module[_0x7859('0xb')]=SalesforceAccount;
\ No newline at end of file
index b020123..3e3bff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead9=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0xfc9697,_0xfabc31){var _0x40ef21=function(_0x3d0d65){while(--_0x3d0d65){_0xfc9697['push'](_0xfc9697['shift']());}};_0x40ef21(++_0xfabc31);}(_0xead9,0x1aa));var _0x9ead=function(_0x4a28c4,_0x574ce3){_0x4a28c4=_0x4a28c4-0x0;var _0x3959dd=_0xead9[_0x4a28c4];return _0x3959dd;};'use strict';function ServicenowAccount(_0x3ae6a4){this['id']=_0x3ae6a4['id']||0x0;this[_0x9ead('0x0')]=_0x3ae6a4[_0x9ead('0x0')]||'';this[_0x9ead('0x1')]=_0x3ae6a4['username']||'';this[_0x9ead('0x2')]=_0x3ae6a4[_0x9ead('0x2')]||'';this[_0x9ead('0x3')]=_0x3ae6a4['remoteUri']||'';this[_0x9ead('0x4')]=_0x3ae6a4['serverUrl']||'';this[_0x9ead('0x5')]=_0x3ae6a4[_0x9ead('0x5')]||{};}module[_0x9ead('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0xda7e=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x3c6def,_0x65d818){var _0x5ccca9=function(_0x579fa1){while(--_0x579fa1){_0x3c6def['push'](_0x3c6def['shift']());}};_0x5ccca9(++_0x65d818);}(_0xda7e,0x1d2));var _0xeda7=function(_0x5465e6,_0x2a8809){_0x5465e6=_0x5465e6-0x0;var _0x10044e=_0xda7e[_0x5465e6];return _0x10044e;};'use strict';function ServicenowAccount(_0x5dece8){this['id']=_0x5dece8['id']||0x0;this[_0xeda7('0x0')]=_0x5dece8[_0xeda7('0x0')]||'';this[_0xeda7('0x1')]=_0x5dece8[_0xeda7('0x1')]||'';this[_0xeda7('0x2')]=_0x5dece8['password']||'';this[_0xeda7('0x3')]=_0x5dece8[_0xeda7('0x3')]||'';this[_0xeda7('0x4')]=_0x5dece8['serverUrl']||'';this[_0xeda7('0x5')]=_0x5dece8[_0xeda7('0x5')]||{};}module[_0xeda7('0x6')]=ServicenowAccount;
\ No newline at end of file
index 284bfda..a79d7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd913=['remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x3f2a90,_0x50baf1){var _0xb46279=function(_0x5e47b5){while(--_0x5e47b5){_0x3f2a90['push'](_0x3f2a90['shift']());}};_0xb46279(++_0x50baf1);}(_0xd913,0xee));var _0x3d91=function(_0x32a4ed,_0x1ed117){_0x32a4ed=_0x32a4ed-0x0;var _0x5b4ea0=_0xd913[_0x32a4ed];return _0x5b4ea0;};'use strict';function SugarcrmAccount(_0x1fc9ee){this['id']=_0x1fc9ee['id']||0x0;this[_0x3d91('0x0')]=_0x1fc9ee[_0x3d91('0x0')]||'';this[_0x3d91('0x1')]=_0x1fc9ee[_0x3d91('0x1')]||'';this['password']=_0x1fc9ee['password']||'';this[_0x3d91('0x2')]=_0x1fc9ee[_0x3d91('0x2')]||'';this[_0x3d91('0x3')]=_0x1fc9ee[_0x3d91('0x3')]||'';this[_0x3d91('0x4')]=_0x1fc9ee[_0x3d91('0x4')]||{};}module[_0x3d91('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0x6093=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x23cd45,_0x1d05d7){var _0x30ff15=function(_0x557466){while(--_0x557466){_0x23cd45['push'](_0x23cd45['shift']());}};_0x30ff15(++_0x1d05d7);}(_0x6093,0xf2));var _0x3609=function(_0x282bbd,_0x260d29){_0x282bbd=_0x282bbd-0x0;var _0x2ac13b=_0x6093[_0x282bbd];return _0x2ac13b;};'use strict';function SugarcrmAccount(_0x170237){this['id']=_0x170237['id']||0x0;this[_0x3609('0x0')]=_0x170237['name']||'';this['username']=_0x170237[_0x3609('0x1')]||'';this[_0x3609('0x2')]=_0x170237[_0x3609('0x2')]||'';this[_0x3609('0x3')]=_0x170237[_0x3609('0x3')]||'';this[_0x3609('0x4')]=_0x170237['serverUrl']||'';this[_0x3609('0x5')]=_0x170237[_0x3609('0x5')]||{};}module[_0x3609('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 8439b78..ee035fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ee=['unknown','status','address','exports','name','accountcode','state'];(function(_0x19325c,_0x3ef5ed){var _0x4c06f7=function(_0x565f24){while(--_0x565f24){_0x19325c['push'](_0x19325c['shift']());}};_0x4c06f7(++_0x3ef5ed);}(_0x71ee,0x1cb));var _0xe71e=function(_0x48c8ab,_0x5af680){_0x48c8ab=_0x48c8ab-0x0;var _0x246963=_0x71ee[_0x48c8ab];return _0x246963;};'use strict';function Telephone(_0x19d0ec){this['id']=_0x19d0ec['id']||0x0;this['name']=_0x19d0ec[_0xe71e('0x0')]||'';this['accountcode']=_0x19d0ec[_0xe71e('0x1')]||'';this[_0xe71e('0x2')]=_0xe71e('0x3');this['stateTime']=0x0;this[_0xe71e('0x4')]=_0xe71e('0x3');this[_0xe71e('0x5')]='';}module[_0xe71e('0x6')]=Telephone;
\ No newline at end of file
+var _0x354b=['name','accountcode','state','unknown','stateTime','status','exports'];(function(_0x181ba8,_0x53c329){var _0x589cff=function(_0x1681dd){while(--_0x1681dd){_0x181ba8['push'](_0x181ba8['shift']());}};_0x589cff(++_0x53c329);}(_0x354b,0x85));var _0xb354=function(_0x4dd42e,_0x4f109b){_0x4dd42e=_0x4dd42e-0x0;var _0x4d78b0=_0x354b[_0x4dd42e];return _0x4d78b0;};'use strict';function Telephone(_0x4fde5b){this['id']=_0x4fde5b['id']||0x0;this[_0xb354('0x0')]=_0x4fde5b[_0xb354('0x0')]||'';this[_0xb354('0x1')]=_0x4fde5b[_0xb354('0x1')]||'';this[_0xb354('0x2')]=_0xb354('0x3');this[_0xb354('0x4')]=0x0;this[_0xb354('0x5')]=_0xb354('0x3');this['address']='';}module[_0xb354('0x6')]=Telephone;
\ No newline at end of file
index e3605fa..d89caf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x41d3c6,_0x5091d9){var _0x2fb3fa=function(_0x80cebe){while(--_0x80cebe){_0x41d3c6['push'](_0x41d3c6['shift']());}};_0x2fb3fa(++_0x5091d9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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(_0x1eba28,_0x505f3d){var _0x59ac67=function(_0x36b9a1){while(--_0x36b9a1){_0x1eba28['push'](_0x1eba28['shift']());}};_0x59ac67(++_0x505f3d);}(_0xb10b,0x12a));var _0xbb10=function(_0x33ac6b,_0x1ed895){_0x33ac6b=_0x33ac6b-0x0;var _0x34cffe=_0xb10b[_0x33ac6b];return _0x34cffe;};'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 298dbcd..1adf9e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x4a20aa,_0x1dcc51){var _0x2f6f3c=function(_0xd3e351){while(--_0xd3e351){_0x4a20aa['push'](_0x4a20aa['shift']());}};_0x2f6f3c(++_0x1dcc51);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x36a8e2,_0x49a101){_0x36a8e2=_0x36a8e2-0x0;var _0x531c6c=_0x9ffd[_0x36a8e2];return _0x531c6c;};'use strict';function Trigger(_0x4c26a1){this['id']=_0x4c26a1['id']||0x0;this[_0xd9ff('0x0')]=_0x4c26a1[_0xd9ff('0x0')]||'';this['channel']=_0x4c26a1[_0xd9ff('0x1')]||_0xd9ff('0x2');this[_0xd9ff('0x3')]=_0x4c26a1[_0xd9ff('0x3')]||![];this['AllConditions']=_0x4c26a1[_0xd9ff('0x4')]||[];this[_0xd9ff('0x5')]=_0x4c26a1['AnyConditions']||[];this[_0xd9ff('0x6')]=_0x4c26a1[_0xd9ff('0x6')]||[];}module[_0xd9ff('0x7')]=Trigger;
\ No newline at end of file
+var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x51639a,_0x35f006){var _0x3abae4=function(_0x89b35e){while(--_0x89b35e){_0x51639a['push'](_0x51639a['shift']());}};_0x3abae4(++_0x35f006);}(_0x5eb8,0xb0));var _0x85eb=function(_0x478414,_0xcf142d){_0x478414=_0x478414-0x0;var _0x5eb6b9=_0x5eb8[_0x478414];return _0x5eb6b9;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index ecdab10..fa9f848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75c=['stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','unknown','stateTime','status','registry','indexOf','split','port','domain','domainport','refresh'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xa75c,0xcb));var _0xca75=function(_0xbc4659,_0x578fba){_0xbc4659=_0xbc4659-0x0;var _0x5831f9=_0xa75c[_0xbc4659];return _0x5831f9;};'use strict';function Trunk(_0x5eea0b){this['id']=_0x5eea0b['id']||0x0;this[_0xca75('0x0')]=_0x5eea0b[_0xca75('0x0')]||![];this[_0xca75('0x1')]=_0x5eea0b['name']||'';this[_0xca75('0x2')]=_0xca75('0x3');this[_0xca75('0x4')]=0x0;this[_0xca75('0x5')]=_0xca75('0x3');this[_0xca75('0x6')]=_0x5eea0b['registry']&&_0x5eea0b[_0xca75('0x6')][_0xca75('0x7')](':')?_0x5eea0b[_0xca75('0x6')][_0xca75('0x8')](':')[0x0]:'';this['host']='';this[_0xca75('0x9')]='';this[_0xca75('0xa')]='';this[_0xca75('0xb')]='';this[_0xca75('0xc')]='';this[_0xca75('0xd')]=_0xca75('0x3');this[_0xca75('0xe')]='';this[_0xca75('0xf')]='';this[_0xca75('0x10')]=_0x5eea0b[_0xca75('0x10')]||'';}module[_0xca75('0x11')]=Trunk;
\ No newline at end of file
+var _0x2dba=['domainport','refresh','registrationtime','defaultuser','exports','active','name','state','unknown','stateTime','registry','indexOf','split','port'];(function(_0x1c83fc,_0x39a5fb){var _0x28602f=function(_0x39e1ef){while(--_0x39e1ef){_0x1c83fc['push'](_0x1c83fc['shift']());}};_0x28602f(++_0x39a5fb);}(_0x2dba,0xf3));var _0xa2db=function(_0x30b6b4,_0x5af717){_0x30b6b4=_0x30b6b4-0x0;var _0x5a1076=_0x2dba[_0x30b6b4];return _0x5a1076;};'use strict';function Trunk(_0x597501){this['id']=_0x597501['id']||0x0;this[_0xa2db('0x0')]=_0x597501['active']||![];this[_0xa2db('0x1')]=_0x597501[_0xa2db('0x1')]||'';this[_0xa2db('0x2')]=_0xa2db('0x3');this[_0xa2db('0x4')]=0x0;this['status']='unknown';this[_0xa2db('0x5')]=_0x597501[_0xa2db('0x5')]&&_0x597501['registry'][_0xa2db('0x6')](':')?_0x597501[_0xa2db('0x5')][_0xa2db('0x7')](':')[0x0]:'';this['host']='';this[_0xa2db('0x8')]='';this['domain']='';this[_0xa2db('0x9')]='';this[_0xa2db('0xa')]='';this['stateRegistry']=_0xa2db('0x3');this[_0xa2db('0xb')]='';this['address']='';this[_0xa2db('0xc')]=_0x597501['defaultuser']||'';}module[_0xa2db('0xd')]=Trunk;
\ No newline at end of file
index 3a21ac0..a278928 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b2=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x18d5d7,_0x19074b){var _0x30a9ea=function(_0x514f3f){while(--_0x514f3f){_0x18d5d7['push'](_0x18d5d7['shift']());}};_0x30a9ea(++_0x19074b);}(_0x12b2,0x154));var _0x212b=function(_0xad7e06,_0x4cf9a6){_0xad7e06=_0xad7e06-0x0;var _0x5d577c=_0x12b2[_0xad7e06];return _0x5d577c;};'use strict';function voiceExtension(_0x70fbd9){this['id']=_0x70fbd9['id']||0x0;this[_0x212b('0x0')]=_0x70fbd9[_0x212b('0x0')]||'';this[_0x212b('0x1')]=_0x70fbd9['recordingFormat']||_0x212b('0x2');this[_0x212b('0x3')]=_0x70fbd9[_0x212b('0x3')]||![];}module[_0x212b('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x005e=['recordingFormat','none','mandatoryDisposition','exports'];(function(_0x40d5cc,_0xf9d2c7){var _0x6950af=function(_0x295221){while(--_0x295221){_0x40d5cc['push'](_0x40d5cc['shift']());}};_0x6950af(++_0xf9d2c7);}(_0x005e,0x1b8));var _0xe005=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0x005e[_0x3e2fcf];return _0x497db7;};'use strict';function voiceExtension(_0x4c39b8){this['id']=_0x4c39b8['id']||0x0;this['exten']=_0x4c39b8['exten']||'';this[_0xe005('0x0')]=_0x4c39b8['recordingFormat']||_0xe005('0x1');this[_0xe005('0x2')]=_0x4c39b8['mandatoryDisposition']||![];}module[_0xe005('0x3')]=voiceExtension;
\ No newline at end of file
index caa67e7..95b05d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41cc=['dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','monitor_format','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','unavailable','ringinuse','wav','wav49','gsm','name','inbound','waiting','talking','total','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x41cc,0x1cf));var _0xc41c=function(_0x156c57,_0x349673){_0x156c57=_0x156c57-0x0;var _0x45956e=_0x41cc[_0x156c57];return _0x45956e;};'use strict';var statusDesc=[_0xc41c('0x0'),_0xc41c('0x1'),_0xc41c('0x2'),'busy',_0xc41c('0x3'),_0xc41c('0x4'),'ringing',_0xc41c('0x5'),'onhold'];var monitorFormat={'wav':_0xc41c('0x6'),'wav49':_0xc41c('0x7'),'gsm':_0xc41c('0x8')};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0xf4af26){this['id']=_0xf4af26['id']||0x0;this[_0xc41c('0x9')]=_0xf4af26['name']||'';this['monitor_format']=_0xf4af26['monitor_format']||'';this['type']=_0xf4af26['type']||_0xc41c('0xa');this[_0xc41c('0xb')]=0x0;this[_0xc41c('0xc')]=0x0;this[_0xc41c('0xd')]=0x0;this['answered']=0x0;this[_0xc41c('0xe')]=0x0;this[_0xc41c('0xf')]=0x0;this[_0xc41c('0x10')]=0x0;this[_0xc41c('0x11')]=0x0;this[_0xc41c('0x12')]=0x0;this[_0xc41c('0x13')]=0x0;this[_0xc41c('0x14')]=0x0;this[_0xc41c('0x15')]=_0xf4af26[_0xc41c('0x15')]||![];this[_0xc41c('0x16')]=_0xf4af26[_0xc41c('0x16')]||0xa;this[_0xc41c('0x17')]=_0xf4af26[_0xc41c('0x17')]||'no';this['sendMessageOneNotActive']=!![];this[_0xc41c('0x18')]='';this[_0xc41c('0x19')]=0x0;this[_0xc41c('0x1a')]=0x0;this[_0xc41c('0x1b')]=_0xf4af26['dialTimezone']||null;this[_0xc41c('0x1c')]=_0xf4af26[_0xc41c('0x1c')]?_0xf4af26['dialGlobalInterval']:null;this['dialActive']=_0xf4af26[_0xc41c('0x1d')];this[_0xc41c('0x1e')]=_0xf4af26[_0xc41c('0x1e')]||'progressive';this[_0xc41c('0x1f')]=_0xf4af26[_0xc41c('0x1f')]||0x0;this[_0xc41c('0x20')]=_0xf4af26[_0xc41c('0x20')]||0x0;this['dialPowerLevel']=_0xf4af26[_0xc41c('0x21')]||0x1;this[_0xc41c('0x22')]=_0xf4af26[_0xc41c('0x22')]||_0xc41c('0x23');this[_0xc41c('0x24')]=_0xf4af26[_0xc41c('0x24')]||0.03;this['dialPredictiveInterval']=_0xf4af26[_0xc41c('0x25')]||0x258;this['dialOriginateCallerIdName']=_0xf4af26[_0xc41c('0x26')]||_0xc41c('0x27');this[_0xc41c('0x28')]=_0xf4af26[_0xc41c('0x28')]||_0xc41c('0x27');this[_0xc41c('0x29')]=_0xf4af26[_0xc41c('0x29')]||0x1e;this[_0xc41c('0x2a')]=_0xf4af26[_0xc41c('0x2a')]||_0xc41c('0x2b');this[_0xc41c('0x2c')]=_0xf4af26[_0xc41c('0x2c')]||0x3;this[_0xc41c('0x2d')]=_0xf4af26[_0xc41c('0x2d')]||undefined;this['dialCongestionMaxRetry']=_0xf4af26[_0xc41c('0x2e')]||0x3;this['dialCongestionRetryFrequency']=_0xf4af26[_0xc41c('0x2f')]||0x96;this[_0xc41c('0x30')]=_0xf4af26[_0xc41c('0x30')]||0x3;this[_0xc41c('0x31')]=_0xf4af26['dialBusyRetryFrequency']||0x96;this[_0xc41c('0x32')]=_0xf4af26[_0xc41c('0x32')]||0x3;this[_0xc41c('0x33')]=_0xf4af26[_0xc41c('0x33')]||0x96;this[_0xc41c('0x34')]=_0xf4af26['dialNoSuchNumberMaxRetry']||0x3;this[_0xc41c('0x35')]=_0xf4af26[_0xc41c('0x35')]||0x96;this['dialDropMaxRetry']=_0xf4af26[_0xc41c('0x36')]||0x3;this[_0xc41c('0x37')]=_0xf4af26[_0xc41c('0x37')]||0x96;this[_0xc41c('0x38')]=_0xf4af26[_0xc41c('0x38')]||0x3;this[_0xc41c('0x39')]=_0xf4af26[_0xc41c('0x39')]||0x96;this['dialMachineMaxRetry']=_0xf4af26[_0xc41c('0x3a')]||0x3;this[_0xc41c('0x3b')]=_0xf4af26[_0xc41c('0x3b')]||0x96;this[_0xc41c('0x3c')]=_0xf4af26[_0xc41c('0x3c')]||0x3;this[_0xc41c('0x3d')]=_0xf4af26[_0xc41c('0x3d')]||0x96;this[_0xc41c('0x3e')]=_0xf4af26['callAdditionalPhoneAfterMin']||0x3;this[_0xc41c('0x3f')]=_0xf4af26[_0xc41c('0x3f')]||0x4;this[_0xc41c('0x40')]=_0xf4af26[_0xc41c('0x40')]?_0xf4af26['Trunk']:undefined;this[_0xc41c('0x41')]=_0xf4af26['TrunkBackup']?_0xf4af26[_0xc41c('0x41')]:undefined;this['dialPrefix']=_0xf4af26[_0xc41c('0x42')]||undefined;this[_0xc41c('0x43')]=_0xf4af26[_0xc41c('0x43')]?_0xf4af26[_0xc41c('0x43')]:undefined;this[_0xc41c('0x44')]=_0xf4af26[_0xc41c('0x44')]||_0xc41c('0x45');this[_0xc41c('0x46')]=_0xf4af26[_0xc41c('0x46')]||undefined;this[_0xc41c('0x47')]=_0xf4af26['dialCutDigit']||undefined;this[_0xc41c('0x48')]=strategy[_0xf4af26[_0xc41c('0x48')]]||_0xc41c('0x49');this['queueStatusComplete']=!![];this[_0xc41c('0x4a')]=_0xf4af26[_0xc41c('0x4a')]||![];this[_0xc41c('0x4b')]=_0xf4af26[_0xc41c('0x4b')];this[_0xc41c('0x4c')]=_0xf4af26[_0xc41c('0x4c')];this[_0xc41c('0x4d')]=_0xf4af26[_0xc41c('0x4d')];this[_0xc41c('0x4e')]=_0xf4af26[_0xc41c('0x4e')];this[_0xc41c('0x4f')]=_0xf4af26['dialAMDMinWordLength'];this[_0xc41c('0x50')]=_0xf4af26['dialAMDBetweenWordsSilence'];this[_0xc41c('0x51')]=_0xf4af26[_0xc41c('0x51')];this[_0xc41c('0x52')]=_0xf4af26[_0xc41c('0x52')];this[_0xc41c('0x53')]=_0xf4af26[_0xc41c('0x53')];this['outboundRejectCallsDay']=0x0;this[_0xc41c('0x54')]=0x0;this['timeout']=_0xf4af26[_0xc41c('0x55')];this[_0xc41c('0x56')]=0x0;this[_0xc41c('0x57')]=0x0;this[_0xc41c('0x58')]=0x0;this[_0xc41c('0x59')]=0x0;this[_0xc41c('0x5a')]=0x0;this[_0xc41c('0x5b')]=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0xc41c('0x5c')]=0x0;this[_0xc41c('0x5d')]=0x0;this[_0xc41c('0x5e')]=0x0;this[_0xc41c('0x5f')]=0x0;this[_0xc41c('0x60')]=0x0;this['startProgressive']=undefined;this[_0xc41c('0x61')]=undefined;this['handlePredictive']=undefined;this[_0xc41c('0x62')]=1.05;this[_0xc41c('0x63')]=0x0;this[_0xc41c('0x64')]=0x0;this[_0xc41c('0x65')]=0x0;this[_0xc41c('0x66')]=0x0;this[_0xc41c('0x67')]=0x0;this[_0xc41c('0x68')]=0x0;this[_0xc41c('0x69')]=0x0;this[_0xc41c('0x6a')]=0x0;this['predictiveIntervalMaxThreshold']=_0xf4af26[_0xc41c('0x6b')]||0x14;this[_0xc41c('0x6c')]=_0xf4af26[_0xc41c('0x6b')]||0xa;this[_0xc41c('0x6d')]=0x0;this[_0xc41c('0x6e')]=0x0;this[_0xc41c('0x6f')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this[_0xc41c('0x70')]=0x0;this[_0xc41c('0x71')]=0x0;this[_0xc41c('0x72')]=_0xf4af26[_0xc41c('0x72')]||0x1e;this[_0xc41c('0x73')]=_0xf4af26[_0xc41c('0x73')]||![];this['dialPreviewAutoRecallMe']=!!_0xf4af26[_0xc41c('0x74')]||![];this[_0xc41c('0x75')]=!!_0xf4af26[_0xc41c('0x75')]||![];this[_0xc41c('0x76')]=_0xf4af26[_0xc41c('0x76')]||undefined;this[_0xc41c('0x77')]=_0xf4af26[_0xc41c('0x77')]||![];this[_0xc41c('0x78')]=_0xf4af26[_0xc41c('0x78')]||![];this[_0xc41c('0x79')]=monitorFormat[_0xf4af26[_0xc41c('0x79')]]?monitorFormat[_0xf4af26['monitor_format']]:undefined;this['mandatoryDisposition']=_0xf4af26[_0xc41c('0x7a')]||![];this[_0xc41c('0x7b')]=_0xf4af26[_0xc41c('0x7b')]?_0xf4af26['mandatoryDispositionPause']:undefined;}module[_0xc41c('0x7c')]=VoiceQueue;
\ No newline at end of file
+var _0xca1e=['outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','sumDuration','sumHoldTime','sumBillable','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerAgiCallsDay'];(function(_0xdde359,_0x5cf9d6){var _0x3bc8f4=function(_0x2dd202){while(--_0x2dd202){_0xdde359['push'](_0xdde359['shift']());}};_0x3bc8f4(++_0x5cf9d6);}(_0xca1e,0xa7));var _0xeca1=function(_0x3eabb6,_0x375f18){_0x3eabb6=_0x3eabb6-0x0;var _0x207d88=_0xca1e[_0x3eabb6];return _0x207d88;};'use strict';var statusDesc=[_0xeca1('0x0'),_0xeca1('0x1'),_0xeca1('0x2'),_0xeca1('0x3'),_0xeca1('0x4'),_0xeca1('0x5'),_0xeca1('0x6'),_0xeca1('0x7'),_0xeca1('0x8')];var monitorFormat={'wav':_0xeca1('0x9'),'wav49':_0xeca1('0xa'),'gsm':_0xeca1('0xb')};var strategy={'rrmemory':_0xeca1('0xc'),'roundrobin':_0xeca1('0xd')};function VoiceQueue(_0x2bf611){this['id']=_0x2bf611['id']||0x0;this[_0xeca1('0xe')]=_0x2bf611[_0xeca1('0xe')]||'';this[_0xeca1('0xf')]=_0x2bf611[_0xeca1('0xf')]||'';this[_0xeca1('0x10')]=_0x2bf611['type']||'inbound';this[_0xeca1('0x11')]=0x0;this[_0xeca1('0x12')]=0x0;this[_0xeca1('0x13')]=0x0;this['answered']=0x0;this[_0xeca1('0x14')]=0x0;this[_0xeca1('0x15')]=0x0;this[_0xeca1('0x16')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0xeca1('0x17')]=0x0;this[_0xeca1('0x18')]=0x0;this[_0xeca1('0x19')]=_0x2bf611[_0xeca1('0x19')]||![];this[_0xeca1('0x1a')]=_0x2bf611['acwTimeout']||0xa;this['autopause']=_0x2bf611[_0xeca1('0x1b')]||'no';this[_0xeca1('0x1c')]=!![];this[_0xeca1('0x1d')]='';this['originated']=0x0;this['temp']=0x0;this['dialTimezone']=_0x2bf611[_0xeca1('0x1e')]||null;this[_0xeca1('0x1f')]=_0x2bf611[_0xeca1('0x1f')]?_0x2bf611[_0xeca1('0x1f')]:null;this[_0xeca1('0x20')]=_0x2bf611[_0xeca1('0x20')];this[_0xeca1('0x21')]=_0x2bf611[_0xeca1('0x21')]||_0xeca1('0x22');this[_0xeca1('0x23')]=_0x2bf611[_0xeca1('0x23')]||0x0;this[_0xeca1('0x24')]=_0x2bf611[_0xeca1('0x24')]||0x0;this[_0xeca1('0x25')]=_0x2bf611['dialPowerLevel']||0x1;this[_0xeca1('0x26')]=_0x2bf611[_0xeca1('0x26')]||_0xeca1('0x27');this[_0xeca1('0x28')]=_0x2bf611[_0xeca1('0x28')]||0.03;this[_0xeca1('0x29')]=_0x2bf611['dialPredictiveInterval']||0x258;this[_0xeca1('0x2a')]=_0x2bf611[_0xeca1('0x2a')]||_0xeca1('0x2b');this['dialOriginateCallerIdNumber']=_0x2bf611[_0xeca1('0x2c')]||'anonymous';this[_0xeca1('0x2d')]=_0x2bf611['dialOriginateTimeout']||0x1e;this[_0xeca1('0x2e')]=_0x2bf611['dialQueueOptions']||'tTxX';this[_0xeca1('0x2f')]=_0x2bf611['dialQueueTimeout']||0x3;this[_0xeca1('0x30')]=_0x2bf611[_0xeca1('0x30')]||undefined;this['dialCongestionMaxRetry']=_0x2bf611[_0xeca1('0x31')]||0x3;this[_0xeca1('0x32')]=_0x2bf611[_0xeca1('0x32')]||0x96;this[_0xeca1('0x33')]=_0x2bf611['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x2bf611[_0xeca1('0x34')]||0x96;this[_0xeca1('0x35')]=_0x2bf611[_0xeca1('0x35')]||0x3;this[_0xeca1('0x36')]=_0x2bf611[_0xeca1('0x36')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x2bf611[_0xeca1('0x37')]||0x3;this[_0xeca1('0x38')]=_0x2bf611[_0xeca1('0x38')]||0x96;this[_0xeca1('0x39')]=_0x2bf611['dialDropMaxRetry']||0x3;this[_0xeca1('0x3a')]=_0x2bf611[_0xeca1('0x3a')]||0x96;this[_0xeca1('0x3b')]=_0x2bf611[_0xeca1('0x3b')]||0x3;this[_0xeca1('0x3c')]=_0x2bf611[_0xeca1('0x3c')]||0x96;this[_0xeca1('0x3d')]=_0x2bf611[_0xeca1('0x3d')]||0x3;this[_0xeca1('0x3e')]=_0x2bf611[_0xeca1('0x3e')]||0x96;this[_0xeca1('0x3f')]=_0x2bf611[_0xeca1('0x3f')]||0x3;this[_0xeca1('0x40')]=_0x2bf611[_0xeca1('0x40')]||0x96;this[_0xeca1('0x41')]=_0x2bf611[_0xeca1('0x41')]||0x3;this[_0xeca1('0x42')]=_0x2bf611[_0xeca1('0x42')]||0x4;this[_0xeca1('0x43')]=_0x2bf611[_0xeca1('0x43')]?_0x2bf611['Trunk']:undefined;this['TrunkBackup']=_0x2bf611[_0xeca1('0x44')]?_0x2bf611[_0xeca1('0x44')]:undefined;this['dialPrefix']=_0x2bf611[_0xeca1('0x45')]||undefined;this[_0xeca1('0x46')]=_0x2bf611[_0xeca1('0x46')]?_0x2bf611[_0xeca1('0x46')]:undefined;this[_0xeca1('0x47')]=_0x2bf611[_0xeca1('0x47')]||_0xeca1('0x48');this['dialRandomLastDigitCallerIdNumber']=_0x2bf611[_0xeca1('0x49')]||undefined;this[_0xeca1('0x4a')]=_0x2bf611[_0xeca1('0x4a')]||undefined;this[_0xeca1('0x4b')]=strategy[_0x2bf611[_0xeca1('0x4b')]]||'rrmemory';this[_0xeca1('0x4c')]=!![];this[_0xeca1('0x4d')]=_0x2bf611[_0xeca1('0x4d')]||![];this[_0xeca1('0x4e')]=_0x2bf611['dialAMDInitialSilence'];this[_0xeca1('0x4f')]=_0x2bf611[_0xeca1('0x4f')];this[_0xeca1('0x50')]=_0x2bf611[_0xeca1('0x50')];this['dialAMDTotalAnalysisTime']=_0x2bf611[_0xeca1('0x51')];this['dialAMDMinWordLength']=_0x2bf611[_0xeca1('0x52')];this[_0xeca1('0x53')]=_0x2bf611['dialAMDBetweenWordsSilence'];this[_0xeca1('0x54')]=_0x2bf611[_0xeca1('0x54')];this[_0xeca1('0x55')]=_0x2bf611[_0xeca1('0x55')];this['dialAMDMaximumWordLength']=_0x2bf611[_0xeca1('0x56')];this[_0xeca1('0x57')]=0x0;this[_0xeca1('0x58')]=0x0;this[_0xeca1('0x59')]=_0x2bf611[_0xeca1('0x59')];this['outboundAnswerCallsDay']=0x0;this[_0xeca1('0x5a')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0xeca1('0x5b')]=0x0;this[_0xeca1('0x5c')]=0x0;this[_0xeca1('0x5d')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xeca1('0x5e')]=0x0;this[_0xeca1('0x5f')]=0x0;this[_0xeca1('0x60')]=0x0;this[_0xeca1('0x61')]=0x0;this[_0xeca1('0x62')]=0x0;this[_0xeca1('0x63')]=0x0;this[_0xeca1('0x64')]=0x0;this['startProgressive']=undefined;this[_0xeca1('0x65')]=undefined;this[_0xeca1('0x66')]=undefined;this[_0xeca1('0x67')]=1.05;this[_0xeca1('0x68')]=0x0;this[_0xeca1('0x69')]=0x0;this[_0xeca1('0x6a')]=0x0;this[_0xeca1('0x6b')]=0x0;this[_0xeca1('0x6c')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xeca1('0x6d')]=0x0;this[_0xeca1('0x6e')]=0x0;this[_0xeca1('0x6f')]=_0x2bf611[_0xeca1('0x70')]||0x14;this[_0xeca1('0x71')]=_0x2bf611[_0xeca1('0x70')]||0xa;this[_0xeca1('0x72')]=0x0;this[_0xeca1('0x73')]=0x0;this[_0xeca1('0x74')]=0x1;this['erlangCalls']=0x0;this[_0xeca1('0x75')]=0x0;this[_0xeca1('0x76')]=0x0;this['erlangBusyFactor']=0x0;this[_0xeca1('0x77')]=_0x2bf611[_0xeca1('0x77')]||0x1e;this[_0xeca1('0x78')]=_0x2bf611[_0xeca1('0x78')]||![];this[_0xeca1('0x79')]=!!_0x2bf611['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x2bf611[_0xeca1('0x7a')]||![];this[_0xeca1('0x7b')]=_0x2bf611[_0xeca1('0x7b')]||undefined;this[_0xeca1('0x7c')]=_0x2bf611[_0xeca1('0x7c')]||![];this['dialAgiAfterHangupAgent']=_0x2bf611[_0xeca1('0x7d')]||![];this[_0xeca1('0xf')]=monitorFormat[_0x2bf611[_0xeca1('0xf')]]?monitorFormat[_0x2bf611[_0xeca1('0xf')]]:undefined;this[_0xeca1('0x7e')]=_0x2bf611[_0xeca1('0x7e')]||![];this[_0xeca1('0x7f')]=_0x2bf611['mandatoryDispositionPause']?_0x2bf611[_0xeca1('0x7f')]:undefined;}module[_0xeca1('0x80')]=VoiceQueue;
\ No newline at end of file
index 4d1c3c7..5caea04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b4=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xc2b4,0xc5));var _0x4c2b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc2b4[_0x3dd15e];return _0x231fd0;};'use strict';function VtigerAccount(_0x1c3aa3){this['id']=_0x1c3aa3['id']||0x0;this[_0x4c2b('0x0')]=_0x1c3aa3[_0x4c2b('0x0')]||'';this[_0x4c2b('0x1')]=_0x1c3aa3['username']||'';this['accessKey']=_0x1c3aa3[_0x4c2b('0x2')]||'';this[_0x4c2b('0x3')]=_0x1c3aa3[_0x4c2b('0x3')]||'';this['serverUrl']=_0x1c3aa3[_0x4c2b('0x4')]||'';this[_0x4c2b('0x5')]=_0x1c3aa3['Configurations']||{};}module[_0x4c2b('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x5c65=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5c65,0xd3));var _0x55c6=function(_0x2ddb52,_0x47fd6c){_0x2ddb52=_0x2ddb52-0x0;var _0x5507cc=_0x5c65[_0x2ddb52];return _0x5507cc;};'use strict';function VtigerAccount(_0x496e5e){this['id']=_0x496e5e['id']||0x0;this['name']=_0x496e5e[_0x55c6('0x0')]||'';this[_0x55c6('0x1')]=_0x496e5e[_0x55c6('0x1')]||'';this[_0x55c6('0x2')]=_0x496e5e[_0x55c6('0x2')]||'';this[_0x55c6('0x3')]=_0x496e5e[_0x55c6('0x3')]||'';this[_0x55c6('0x4')]=_0x496e5e[_0x55c6('0x4')]||'';this[_0x55c6('0x5')]=_0x496e5e[_0x55c6('0x5')]||{};}module[_0x55c6('0x6')]=VtigerAccount;
\ No newline at end of file
index 748a90b..b77a221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8513=['token','remoteUri','authType','type','serverUrl','Configurations','exports','name','username','password'];(function(_0x25c4ee,_0x2629f3){var _0x12a19b=function(_0x2275ec){while(--_0x2275ec){_0x25c4ee['push'](_0x25c4ee['shift']());}};_0x12a19b(++_0x2629f3);}(_0x8513,0x18d));var _0x3851=function(_0x26340b,_0x85ca92){_0x26340b=_0x26340b-0x0;var _0x3d256b=_0x8513[_0x26340b];return _0x3d256b;};'use strict';function ZendeskAccount(_0x4e2755){this['id']=_0x4e2755['id']||0x0;this['name']=_0x4e2755[_0x3851('0x0')]||'';this[_0x3851('0x1')]=_0x4e2755[_0x3851('0x1')]||'';this[_0x3851('0x2')]=_0x4e2755[_0x3851('0x2')]||'';this[_0x3851('0x3')]=_0x4e2755[_0x3851('0x3')]||'';this[_0x3851('0x4')]=_0x4e2755[_0x3851('0x4')]||'';this[_0x3851('0x5')]=_0x4e2755['authType']||'';this[_0x3851('0x6')]=_0x4e2755[_0x3851('0x6')]||'integrationTab';this[_0x3851('0x7')]=_0x4e2755[_0x3851('0x7')]||'';this[_0x3851('0x8')]=_0x4e2755[_0x3851('0x8')]||{};}module[_0x3851('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x9b91=['token','remoteUri','type','serverUrl','Configurations','name','password'];(function(_0x1c593a,_0x59af80){var _0x209462=function(_0x48f74a){while(--_0x48f74a){_0x1c593a['push'](_0x1c593a['shift']());}};_0x209462(++_0x59af80);}(_0x9b91,0x147));var _0x19b9=function(_0x3c49b2,_0x285e48){_0x3c49b2=_0x3c49b2-0x0;var _0x2d9203=_0x9b91[_0x3c49b2];return _0x2d9203;};'use strict';function ZendeskAccount(_0xcbd23a){this['id']=_0xcbd23a['id']||0x0;this['name']=_0xcbd23a[_0x19b9('0x0')]||'';this['username']=_0xcbd23a['username']||'';this[_0x19b9('0x1')]=_0xcbd23a[_0x19b9('0x1')]||'';this[_0x19b9('0x2')]=_0xcbd23a[_0x19b9('0x2')]||'';this[_0x19b9('0x3')]=_0xcbd23a[_0x19b9('0x3')]||'';this['authType']=_0xcbd23a['authType']||'';this[_0x19b9('0x4')]=_0xcbd23a[_0x19b9('0x4')]||'integrationTab';this[_0x19b9('0x5')]=_0xcbd23a['serverUrl']||'';this[_0x19b9('0x6')]=_0xcbd23a[_0x19b9('0x6')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index ea0dbbd..f96044e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x581e=['zone','clientId','clientSecret','code','refreshToken','Configurations','exports','name','description','host'];(function(_0x6f9942,_0x3e9ee6){var _0x164e45=function(_0x29d080){while(--_0x29d080){_0x6f9942['push'](_0x6f9942['shift']());}};_0x164e45(++_0x3e9ee6);}(_0x581e,0x89));var _0xe581=function(_0x182c68,_0x29efce){_0x182c68=_0x182c68-0x0;var _0xcf183c=_0x581e[_0x182c68];return _0xcf183c;};'use strict';function ZohoAccount(_0x176478){this['id']=_0x176478['id']||0x0;this['name']=_0x176478[_0xe581('0x0')]||'';this['description']=_0x176478[_0xe581('0x1')]||'';this[_0xe581('0x2')]=_0x176478['host']||'';this['zone']=_0x176478[_0xe581('0x3')]||'';this[_0xe581('0x4')]=_0x176478[_0xe581('0x4')]||'';this['clientSecret']=_0x176478[_0xe581('0x5')]||'';this['serverUrl']=_0x176478['serverUrl']||'';this[_0xe581('0x6')]=_0x176478[_0xe581('0x6')]||'';this[_0xe581('0x7')]=_0x176478['refreshToken']||'';this[_0xe581('0x8')]=_0x176478[_0xe581('0x8')]||{};}module[_0xe581('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0xb496=['refreshToken','Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code'];(function(_0x1bd122,_0x61ec77){var _0x513b8a=function(_0x4a0cb8){while(--_0x4a0cb8){_0x1bd122['push'](_0x1bd122['shift']());}};_0x513b8a(++_0x61ec77);}(_0xb496,0xca));var _0x6b49=function(_0x22c613,_0x7cda22){_0x22c613=_0x22c613-0x0;var _0x16004a=_0xb496[_0x22c613];return _0x16004a;};'use strict';function ZohoAccount(_0x2e2010){this['id']=_0x2e2010['id']||0x0;this[_0x6b49('0x0')]=_0x2e2010['name']||'';this[_0x6b49('0x1')]=_0x2e2010[_0x6b49('0x1')]||'';this['host']=_0x2e2010[_0x6b49('0x2')]||'';this[_0x6b49('0x3')]=_0x2e2010[_0x6b49('0x3')]||'';this['clientId']=_0x2e2010[_0x6b49('0x4')]||'';this[_0x6b49('0x5')]=_0x2e2010['clientSecret']||'';this[_0x6b49('0x6')]=_0x2e2010[_0x6b49('0x6')]||'';this[_0x6b49('0x7')]=_0x2e2010[_0x6b49('0x7')]||'';this[_0x6b49('0x8')]=_0x2e2010[_0x6b49('0x8')]||'';this[_0x6b49('0x9')]=_0x2e2010['Configurations']||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index fef394f..2b098fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['name','type','dialAnswer','isNil','Agent','channelAgent','membername','format','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','number','util','lodash','moment','string','uniqueid','idContact','queue'];(function(_0x4e5798,_0x29bb8e){var _0x11efdc=function(_0x5db2ae){while(--_0x5db2ae){_0x4e5798['push'](_0x4e5798['shift']());}};_0x11efdc(++_0x29bb8e);}(_0x4213,0x77));var _0x3421=function(_0x2b35e0,_0x235bc8){_0x2b35e0=_0x2b35e0-0x0;var _0x4b02c1=_0x4213[_0x2b35e0];return _0x4b02c1;};'use strict';var util=require(_0x3421('0x0'));var _=require(_0x3421('0x1'));var moment=require(_0x3421('0x2'));function checkNameSurname(_0x7870a4,_0x2613b6,_0x153f3a){var _0x1bab18='';if(!_['isNil'](_0x2613b6)&&_0x3421('0x3')===typeof _0x2613b6){_0x1bab18+=_0x2613b6;}if(!_['isNil'](_0x153f3a)&&_0x3421('0x3')===typeof _0x153f3a){_0x1bab18+='\x20'+_0x153f3a;}if(_0x1bab18!==''){return _0x1bab18;}return _0x7870a4;}function Action(_0xfe969c,_0x2155f8,_0x2a04e0,_0x5469d8,_0x50e464){this[_0x3421('0x4')]=_0x2a04e0||undefined;this[_0x3421('0x5')]=_0xfe969c['id'];this[_0x3421('0x6')]=_0x2155f8[_0x3421('0x7')];this['type']=_0x2155f8[_0x3421('0x8')];this['campaigntype']='queue';this[_0x3421('0x9')]=![];this['membername']=_[_0x3421('0xa')](_0xfe969c[_0x3421('0xb')])?undefined:_0xfe969c[_0x3421('0xb')][_0x3421('0x7')];this[_0x3421('0xc')]=this[_0x3421('0xd')]?util[_0x3421('0xe')]('SIP/%s',this[_0x3421('0xd')]):_0x5469d8||undefined;this[_0x3421('0xf')]=checkNameSurname(_0xfe969c[_0x3421('0x10')][_0x3421('0x11')],_0xfe969c[_0x3421('0x10')][_0x3421('0x12')],_0xfe969c[_0x3421('0x10')]['lastName']);this[_0x3421('0x13')]=_0xfe969c['active']||![];this[_0x3421('0x14')]=_0xfe969c[_0x3421('0x11')];this['scheduledat']=_0xfe969c[_0x3421('0x15')];this['countbusyretry']=_0xfe969c[_0x3421('0x16')]||0x0;this[_0x3421('0x17')]=_0xfe969c['countcongestionretry']||0x0;this[_0x3421('0x18')]=_0xfe969c[_0x3421('0x18')]||0x0;this[_0x3421('0x19')]=(_0xfe969c[_0x3421('0x16')]||0x0)+(_0xfe969c[_0x3421('0x17')]||0x0)+(_0xfe969c[_0x3421('0x18')]||0x0)+(_0xfe969c[_0x3421('0x1a')]||0x0)+(_0xfe969c[_0x3421('0x1b')]||0x0)+(_0xfe969c[_0x3421('0x1c')]||0x0)+(_0xfe969c[_0x3421('0x1d')]||0x0)+(_0xfe969c[_0x3421('0x1e')]||0x0);this['countnosuchnumberretry']=_0xfe969c[_0x3421('0x1a')]||0x0;this['countdropretry']=_0xfe969c['countdropretry']||0x0;this['countabandonedretry']=_0xfe969c[_0x3421('0x1c')]||0x0;this[_0x3421('0x1d')]=_0xfe969c[_0x3421('0x1d')]||0x0;this[_0x3421('0x1e')]=_0xfe969c[_0x3421('0x1e')]||0x0;this[_0x3421('0x1f')]=_0xfe969c[_0x3421('0x1f')];this[_0x3421('0x20')]=_0xfe969c[_0x3421('0x20')];this[_0x3421('0x21')]=_0xfe969c['callbackat'];this['recallme']=_0xfe969c['recallme'];this[_0x3421('0x22')]=_0xfe969c[_0x3421('0x22')];this[_0x3421('0x23')]=_0xfe969c['ListId'];this['UserId']=_[_0x3421('0xa')](_0xfe969c['Agent'])?_0xfe969c[_0x3421('0x24')]:_0xfe969c['Agent']['id'];this[_0x3421('0x25')]=_0xfe969c[_0x3421('0x25')];this[_0x3421('0x26')]='';this[_0x3421('0x27')]='';}Action[_0x3421('0x28')]['getCaller']=function(){return util[_0x3421('0xe')]('\x22%s\x22\x20<%s>',this['calleridname'],this[_0x3421('0x29')]);};module['exports']=Action;
\ No newline at end of file
+var _0xfef3=['format','calleridname','Contact','lastName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','originatecalleridname','getCaller','number','exports','util','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent'];(function(_0x1ca047,_0x1e5ada){var _0x256a03=function(_0x495085){while(--_0x495085){_0x1ca047['push'](_0x1ca047['shift']());}};_0x256a03(++_0x1e5ada);}(_0xfef3,0x118));var _0x3fef=function(_0x3bf4f0,_0x316456){_0x3bf4f0=_0x3bf4f0-0x0;var _0x2c6a5c=_0xfef3[_0x3bf4f0];return _0x2c6a5c;};'use strict';var util=require(_0x3fef('0x0'));var _=require('lodash');var moment=require(_0x3fef('0x1'));function checkNameSurname(_0x494ae6,_0x740ff,_0xf26e2d){var _0x523833='';if(!_[_0x3fef('0x2')](_0x740ff)&&_0x3fef('0x3')===typeof _0x740ff){_0x523833+=_0x740ff;}if(!_['isNil'](_0xf26e2d)&&_0x3fef('0x3')===typeof _0xf26e2d){_0x523833+='\x20'+_0xf26e2d;}if(_0x523833!==''){return _0x523833;}return _0x494ae6;}function Action(_0x1351b1,_0x5dd9fb,_0x319a2a,_0x5f5b72,_0x800850){this[_0x3fef('0x4')]=_0x319a2a||undefined;this[_0x3fef('0x5')]=_0x1351b1['id'];this[_0x3fef('0x6')]=_0x5dd9fb[_0x3fef('0x7')];this[_0x3fef('0x8')]=_0x5dd9fb[_0x3fef('0x8')];this[_0x3fef('0x9')]=_0x3fef('0x6');this[_0x3fef('0xa')]=![];this[_0x3fef('0xb')]=_[_0x3fef('0x2')](_0x1351b1['Agent'])?undefined:_0x1351b1[_0x3fef('0xc')][_0x3fef('0x7')];this[_0x3fef('0xd')]=this['membername']?util[_0x3fef('0xe')]('SIP/%s',this[_0x3fef('0xb')]):_0x5f5b72||undefined;this[_0x3fef('0xf')]=checkNameSurname(_0x1351b1[_0x3fef('0x10')]['phone'],_0x1351b1[_0x3fef('0x10')]['firstName'],_0x1351b1[_0x3fef('0x10')][_0x3fef('0x11')]);this['active']=_0x1351b1[_0x3fef('0x12')]||![];this[_0x3fef('0x13')]=_0x1351b1[_0x3fef('0x14')];this[_0x3fef('0x15')]=_0x1351b1[_0x3fef('0x15')];this[_0x3fef('0x16')]=_0x1351b1['countbusyretry']||0x0;this[_0x3fef('0x17')]=_0x1351b1[_0x3fef('0x17')]||0x0;this[_0x3fef('0x18')]=_0x1351b1[_0x3fef('0x18')]||0x0;this[_0x3fef('0x19')]=(_0x1351b1[_0x3fef('0x16')]||0x0)+(_0x1351b1['countcongestionretry']||0x0)+(_0x1351b1[_0x3fef('0x18')]||0x0)+(_0x1351b1[_0x3fef('0x1a')]||0x0)+(_0x1351b1['countdropretry']||0x0)+(_0x1351b1[_0x3fef('0x1b')]||0x0)+(_0x1351b1[_0x3fef('0x1c')]||0x0)+(_0x1351b1[_0x3fef('0x1d')]||0x0);this[_0x3fef('0x1a')]=_0x1351b1[_0x3fef('0x1a')]||0x0;this[_0x3fef('0x1e')]=_0x1351b1[_0x3fef('0x1e')]||0x0;this[_0x3fef('0x1b')]=_0x1351b1[_0x3fef('0x1b')]||0x0;this[_0x3fef('0x1c')]=_0x1351b1[_0x3fef('0x1c')]||0x0;this[_0x3fef('0x1d')]=_0x1351b1[_0x3fef('0x1d')]||0x0;this[_0x3fef('0x1f')]=_0x1351b1[_0x3fef('0x1f')];this['callbackuniqueid']=_0x1351b1['callbackuniqueid'];this['callbackat']=_0x1351b1[_0x3fef('0x20')];this[_0x3fef('0x21')]=_0x1351b1[_0x3fef('0x21')];this['ContactId']=_0x1351b1[_0x3fef('0x22')];this['ListId']=_0x1351b1[_0x3fef('0x23')];this[_0x3fef('0x24')]=_[_0x3fef('0x2')](_0x1351b1[_0x3fef('0xc')])?_0x1351b1[_0x3fef('0x24')]:_0x1351b1['Agent']['id'];this['VoiceQueueId']=_0x1351b1['VoiceQueueId'];this[_0x3fef('0x25')]='';this[_0x3fef('0x26')]='';}Action['prototype'][_0x3fef('0x27')]=function(){return util[_0x3fef('0xe')]('\x22%s\x22\x20<%s>',this[_0x3fef('0xf')],this[_0x3fef('0x28')]);};module[_0x3fef('0x29')]=Action;
\ No newline at end of file
index 220ced5..355bb0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3eb=['CONGESTION','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','ANSWER','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','called','Calling','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','run','unlock','disableContact','execRun','getContactPreview','recallme','isValid','checkIsBlackList','[Preview][getContactPreview]','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','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','getCallerId','originatecalleridname','originatecalleridnum','extractCalleridNumber','merge','toLowerVariables','variables','variablesAction','channel','clone','isFailure','custom:agentringnoanswer','rejected','callProgressDetectingAgent','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','unlockContact','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','filterKey','keys','variable','value','error','inspect','transfererlinkedid','util','lodash','uuid','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','hanguprequest','syncHangupRequest','bind','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','type','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','sendMessageOneNotActive','available','NOT_ACTIVE','logger','\x20is\x20not\x20active','message','DEACTIVATED','[CampaignPreview]\x20Campaign\x20Queue:\x20','name','\x20is\x20deactivated','syncCampaigns','booked','clearZombieChannels','hasOwnProperty','outbound','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','enqueue','isNil','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','dialAnswer','pick','UserId','VoiceQueueId','ListId','Action','status','catch','[clearZombieChannel]','decrementTalkink','loggerError','[action]','size','getContactRecallMe','agentReadyId','agents','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','setMessage','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','idContact','incrementPreviewCounters','swapAdditionalPhones','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','complete','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','BUSY','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','busy','[callProgressDetectingCustomer][logBusy]','additional','cloneAction','Global','[callProgressDetectingCustomer][logBusyGlobal]','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry'];(function(_0x2f4c7d,_0x4cb1a9){var _0x41914e=function(_0x1c7211){while(--_0x1c7211){_0x2f4c7d['push'](_0x2f4c7d['shift']());}};_0x41914e(++_0x4cb1a9);}(_0xa3eb,0x1ed));var _0xba3e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa3eb[_0x6131cd];return _0x47e916;};'use strict';var util=require(_0xba3e('0x0'));var _=require(_0xba3e('0x1'));var uuid=require(_0xba3e('0x2'));var moment=require('moment');var md5=require(_0xba3e('0x3'));var Redis=require(_0xba3e('0x4'));var config=require(_0xba3e('0x5'));var logger=require(_0xba3e('0x6'))(_0xba3e('0x7'));var loggerAction=require(_0xba3e('0x6'))(_0xba3e('0x8'));var ami=require(_0xba3e('0x9'));var rpcDb=require(_0xba3e('0xa'));var cmHopperAdditionalPhone=require(_0xba3e('0xb'));var Action=require(_0xba3e('0xc'));var ut=require(_0xba3e('0xd'));config[_0xba3e('0xe')]=_[_0xba3e('0xf')](config[_0xba3e('0xe')],{'host':_0xba3e('0x10'),'port':0x18eb});var io=require(_0xba3e('0x11'))(new Redis(config[_0xba3e('0xe')]));var Sequence=function(){};Sequence[_0xba3e('0x12')]['enqueue']=function(_0xbf982b){this[_0xba3e('0x13')]=this[_0xba3e('0x13')]?this['tail'][_0xba3e('0x14')](_0xbf982b):_0xbf982b();};function Preview(_0x1dd004){this[_0xba3e('0x15')]=new Sequence();this[_0xba3e('0x16')]=_0x1dd004[_0xba3e('0x17')];this[_0xba3e('0x18')]=_0x1dd004[_0xba3e('0x18')];this[_0xba3e('0x19')]={};this['agents']=_0x1dd004['agents'];this[_0xba3e('0x1a')]=0x0;ami['on'](_0xba3e('0x1b'),this[_0xba3e('0x1c')]['bind'](this));ami['on'](_0xba3e('0x1d'),this[_0xba3e('0x1e')]['bind'](this));ami['on'](_0xba3e('0x1f'),this[_0xba3e('0x20')][_0xba3e('0x21')](this));ami['on']('dialend',this['syncDialEnd'][_0xba3e('0x21')](this));ami['on']('newexten',this[_0xba3e('0x22')][_0xba3e('0x21')](this));ami['on'](_0xba3e('0x23'),this[_0xba3e('0x24')][_0xba3e('0x21')](this));ami['on'](_0xba3e('0x25'),this[_0xba3e('0x26')][_0xba3e('0x21')](this));ami['on']('blindtransfer',this[_0xba3e('0x27')][_0xba3e('0x21')](this));this[_0xba3e('0x28')](this[_0xba3e('0x16')]);}function emit(_0x342c25,_0x3e7e8c,_0x426835){io['to'](_0x342c25)['emit'](_0x3e7e8c,_0x426835);}function emitCampaignPreview(_0x146223){if(_0x146223[_0xba3e('0x29')]==='outbound'){var _0x5ed12e={'id':_0x146223['id'],'name':_0x146223['name'],'strategy':_0x146223[_0xba3e('0x2a')],'answered':_0x146223[_0xba3e('0x2b')],'available':_0x146223['available'],'loggedIn':_0x146223[_0xba3e('0x2c')],'pTalking':_0x146223[_0xba3e('0x2d')],'sumBillable':_0x146223[_0xba3e('0x2e')],'sumDuration':_0x146223[_0xba3e('0x2f')],'sumHoldTime':_0x146223[_0xba3e('0x30')]||0x0,'talking':_0x146223[_0xba3e('0x31')],'total':_0x146223[_0xba3e('0x32')],'type':_0x146223[_0xba3e('0x29')],'unmanaged':_0x146223[_0xba3e('0x33')],'abandoned':_0x146223[_0xba3e('0x34')],'waiting':_0x146223[_0xba3e('0x35')],'loggedInDb':_0x146223[_0xba3e('0x36')],'dialActive':_0x146223[_0xba3e('0x37')],'dialMethod':_0x146223[_0xba3e('0x38')],'dialOriginateCallerIdName':_0x146223['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x146223[_0xba3e('0x39')],'dialOriginateTimeout':_0x146223[_0xba3e('0x3a')],'dialPrefix':_0x146223[_0xba3e('0x3b')],'outboundAnswerAgiCallsDay':_0x146223['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x146223[_0xba3e('0x3c')],'outboundBlacklistCallsDay':_0x146223['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x146223['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x146223[_0xba3e('0x3d')],'outboundDropCallsDayACS':_0x146223[_0xba3e('0x3e')],'outboundDropCallsDayCallersExit':_0x146223[_0xba3e('0x3f')],'outboundDropCallsDayTimeout':_0x146223['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x146223[_0xba3e('0x40')],'outboundNoSuchCallsDay':_0x146223[_0xba3e('0x41')],'outboundOriginateFailureCallsDay':_0x146223[_0xba3e('0x42')],'outboundReCallsDay':_0x146223[_0xba3e('0x43')],'outboundRejectCallsDay':_0x146223[_0xba3e('0x44')],'outboundUnknownCallsDay':_0x146223[_0xba3e('0x45')],'outboundAbandonedCallsDay':_0x146223[_0xba3e('0x46')],'predictiveIntervalAnsweredCalls':_0x146223[_0xba3e('0x47')],'predictiveIntervalAvgHoldtime':_0x146223[_0xba3e('0x48')],'predictiveIntervalAvgTalktime':_0x146223[_0xba3e('0x49')],'predictiveIntervalDroppedCallsCallersExit':_0x146223[_0xba3e('0x4a')],'predictiveIntervalDroppedCallsTimeout':_0x146223[_0xba3e('0x4b')],'predictiveIntervalErlangCalls':_0x146223[_0xba3e('0x4c')],'predictiveIntervalErlangCallsDroppedCalls':_0x146223['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x146223[_0xba3e('0x4d')],'predictiveIntervalMultiplicativeFactor':_0x146223[_0xba3e('0x4e')],'predictiveIntervalPauses':_0x146223[_0xba3e('0x4f')],'predictiveIntervalAvailable':_0x146223['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x146223[_0xba3e('0x50')],'message':_0x146223['message'],'originated':_0x146223[_0xba3e('0x51')],'erlangCalls':_0x146223[_0xba3e('0x52')],'erlangCallToSecond':_0x146223['erlangCallToSecond'],'erlangAbandonmentRate':_0x146223[_0xba3e('0x53')],'erlangBusyFactor':_0x146223[_0xba3e('0x54')],'startPredictive':_0x146223[_0xba3e('0x55')],'startProgressive':_0x146223[_0xba3e('0x56')]};if(_0x146223['Trunk']){_0x5ed12e[_0xba3e('0x57')]={'id':_0x146223['Trunk']['id'],'name':_0x146223['Trunk']['name'],'active':_0x146223[_0xba3e('0x57')]['active'],'callerid':_0x146223[_0xba3e('0x57')]['callerid']};}if(_0x146223['Interval']){_0x5ed12e['Interval']={'id':_0x146223[_0xba3e('0x58')]['id'],'name':_0x146223['Interval']['name']};}var _0xc61022=md5(JSON[_0xba3e('0x59')](_0x5ed12e));if(_0x146223[_0xba3e('0x3')]!==_0xc61022){_0x146223['md5']=_0xc61022;emit(util[_0xba3e('0x5a')](_0xba3e('0x5b'),_0x5ed12e['name']),_0xba3e('0x5c'),_0x5ed12e);}}}function emitVoiceQueueChannelRemove(_0x32c49a){logger[_0xba3e('0x5d')](_0xba3e('0x5e'),JSON[_0xba3e('0x59')](_0x32c49a));emit(util[_0xba3e('0x5a')](_0xba3e('0x5b'),_0x32c49a['name']),_0xba3e('0x5f'),_0x32c49a);io[_0xba3e('0x60')]('voice_queue_presence:remove',_0x32c49a);}function notSendMessagesQueue(_0x598436){if(_0x598436[_0xba3e('0x61')]){if(_0x598436[_0xba3e('0x51')]===0x0&&_0x598436[_0xba3e('0x2d')]===0x0){_0x598436[_0xba3e('0x61')]=![];_0x598436[_0xba3e('0x62')]=0x0;_0x598436['paused']=0x0;_0x598436['message']=_0xba3e('0x63');ut[_0xba3e('0x64')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x598436['name']+_0xba3e('0x65'));}else{_0x598436[_0xba3e('0x66')]=_0xba3e('0x67');ut['logger'](_0xba3e('0x68'),_0x598436[_0xba3e('0x69')]+_0xba3e('0x6a'));}emitCampaignPreview(_0x598436);}}Preview['prototype'][_0xba3e('0x28')]=function(){var _0x542f1b=this;setInterval(function(){_0x542f1b[_0xba3e('0x6b')]();},0x7cf);};Preview[_0xba3e('0x12')]['syncCampaigns']=function(){var _0x2ef22f=this[_0xba3e('0x16')];this[_0xba3e('0x1a')]+=0x1;for(var _0x28f89e in _0x2ef22f){if(_0x2ef22f['hasOwnProperty'](_0x28f89e)&&(_0x2ef22f[_0x28f89e][_0xba3e('0x38')]==='preview'||_0x2ef22f[_0x28f89e]['dialMethod']===_0xba3e('0x6c'))&&_0x2ef22f[_0x28f89e][_0xba3e('0x29')]==='outbound'){if(this[_0xba3e('0x1a')]>0x7){this['clockClearZombieChannels']=0x0;this[_0xba3e('0x6d')]();}}if(_0x2ef22f[_0xba3e('0x6e')](_0x28f89e)&&_0x2ef22f[_0x28f89e]['dialMethod']===_0xba3e('0x7')&&_0x2ef22f[_0x28f89e][_0xba3e('0x29')]===_0xba3e('0x6f')){if(_0x2ef22f[_0x28f89e][_0xba3e('0x37')]){this['setMessage'](_0x2ef22f[_0x28f89e]);if(_0x2ef22f[_0x28f89e][_0xba3e('0x70')])this[_0xba3e('0x71')](_0x2ef22f[_0x28f89e]);}else{notSendMessagesQueue(_0x2ef22f[_0x28f89e]);}}}};Preview[_0xba3e('0x12')][_0xba3e('0x72')]=function(_0x21ad9d){var _0x5107b1=this;this[_0xba3e('0x15')][_0xba3e('0x73')](function(){if(!_[_0xba3e('0x74')](_0x5107b1[_0xba3e('0x19')][_0x21ad9d])){loggerAction['info'](_0xba3e('0x75'),_0x21ad9d,_0xba3e('0x76'),_0x5107b1[_0xba3e('0x19')][_0x21ad9d]['queue'],'originated:\x20',JSON[_0xba3e('0x59')](_0x5107b1['campaignsPreview'][_0x5107b1['actions'][_0x21ad9d][_0xba3e('0x77')]][_0xba3e('0x51')]),_0xba3e('0x78'),JSON[_0xba3e('0x59')](_0x5107b1[_0xba3e('0x16')][_0x5107b1['actions'][_0x21ad9d][_0xba3e('0x77')]]['pTalking']),JSON['stringify'](_0x5107b1[_0xba3e('0x19')][_0x21ad9d][_0xba3e('0x79')]),JSON[_0xba3e('0x59')](_[_0xba3e('0x7a')](_0x5107b1[_0xba3e('0x19')][_0x21ad9d],['contactId',_0xba3e('0x7b'),_0xba3e('0x7c'),_0xba3e('0x7d')])));return ami[_0xba3e('0x7e')]({'action':_0xba3e('0x7f'),'channel':_0x5107b1[_0xba3e('0x19')][_0x21ad9d]['channel']})[_0xba3e('0x80')](function(_0x17d153){if(_0x17d153[_0xba3e('0x66')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x5107b1['actions'][_0x21ad9d]){ut['updateOriginated'](_0x5107b1[_0xba3e('0x16')][_0x5107b1[_0xba3e('0x19')][_0x21ad9d][_0xba3e('0x77')]],_0xba3e('0x81'));if(_0x5107b1[_0xba3e('0x19')][_0x21ad9d][_0xba3e('0x79')]===!![]){ut[_0xba3e('0x82')](_0x5107b1[_0xba3e('0x16')][_0x5107b1[_0xba3e('0x19')][_0x21ad9d]['queue']],'[clearZombieChannel]');ut[_0xba3e('0x83')]('[Dialer][checkChannel][pTalking][Preview]'+_0x21ad9d,_0x5107b1[_0xba3e('0x19')][_0x21ad9d][_0xba3e('0x77')]);}ut[_0xba3e('0x83')]('[Dialer][checkChannel][Preview]'+_0x21ad9d,_0x5107b1[_0xba3e('0x19')][_0x21ad9d][_0xba3e('0x77')]);delete _0x5107b1[_0xba3e('0x19')][_0x21ad9d];}},0x2328);}});}});};Preview[_0xba3e('0x12')][_0xba3e('0x6d')]=function(){var _0x4d8558=this;loggerAction[_0xba3e('0x5d')](_0xba3e('0x84'),_[_0xba3e('0x85')](this['actions']));for(var _0x14116d in this['actions']){if(_0x4d8558['actions'][_0xba3e('0x6e')](_0x14116d)){_0x4d8558['clearZombieChannel'](_0x14116d);}}};Preview[_0xba3e('0x12')][_0xba3e('0x71')]=function(_0x588b15){var _0x480a08=this;rpcDb[_0xba3e('0x86')](_0x588b15['id'],ut[_0xba3e('0x87')](this[_0xba3e('0x88')]))[_0xba3e('0x89')](function(_0x3846da){if(!_[_0xba3e('0x74')](_0x3846da)){for(var _0x296903=0x0;_0x296903<_0x3846da[_0xba3e('0x8a')];_0x296903+=0x1){if(ut[_0xba3e('0x8b')](_0x3846da[_0x296903][_0xba3e('0x8c')])<_0x588b15[_0xba3e('0x8d')]*0x3c){if(_0x3846da[_0x296903][_0xba3e('0x8e')]&&!_0x3846da[_0x296903][_0xba3e('0x8e')]['voicePause']){_0x480a08['run'](_0x3846da[_0x296903]['id'])[_0xba3e('0x89')](ut[_0xba3e('0x8f')]('[RecallMe]'))[_0xba3e('0x80')](ut[_0xba3e('0x8f')](_0xba3e('0x90')));}else{rpcDb['disableContact'](_0x3846da[_0x296903]['id']);}}else{var _0x128909=new Action(_0x3846da[_0x296903],_0x588b15);_0x128909[_0xba3e('0x91')]=moment()[_0xba3e('0x5a')](_0xba3e('0x92'));_0x588b15['outboundReCallsDay']+=0x1;ut[_0xba3e('0x93')](_0x128909,0x17,_0xba3e('0x94'));if(_0x588b15['dialRecallInQueue']){rpcDb[_0xba3e('0x95')](ut[_0xba3e('0x96')](_0x3846da[_0x296903]));rpcDb[_0xba3e('0x97')](_0x128909,_0xba3e('0x98'));}else{ut['logCustomer'](_0x128909,0x16,_0xba3e('0x99'));rpcDb['createCustomerHistory'](_0x128909,'[HistoryRecallClose]');rpcDb[_0xba3e('0x9a')](_0x128909,_0xba3e('0x9b'));}}}}})[_0xba3e('0x80')](ut[_0xba3e('0x8f')](_0xba3e('0x9c')));};Preview[_0xba3e('0x12')][_0xba3e('0x9d')]=function(_0x288846){_0x288846[_0xba3e('0x61')]=!![];if(ut[_0xba3e('0x9e')](_0x288846[_0xba3e('0x2c')])){_0x288846[_0xba3e('0x66')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xba3e('0x9f')](_0x288846[_0xba3e('0x37')])){_0x288846[_0xba3e('0x66')]=_0xba3e('0x63');}else if(!this[_0xba3e('0xa0')](_0x288846[_0xba3e('0x57')])){if(!this[_0xba3e('0xa0')](_0x288846[_0xba3e('0xa1')])){_0x288846[_0xba3e('0x66')]=_0xba3e('0xa2');}else{_0x288846[_0xba3e('0x66')]='ACTIVE';}}else{_0x288846[_0xba3e('0x66')]='ACTIVE';}emitCampaignPreview(_0x288846);};Preview[_0xba3e('0x12')][_0xba3e('0xa3')]=function(_0x52611e,_0x41ff15,_0x142f1c){var _0x1a39e2=this;var _0x2b259a=this[_0xba3e('0x19')][_0x41ff15];var _0x586a40=this['campaignsPreview'][_0x2b259a['queue']];var _0x4f05be;var _0x218bb1=![];var _0x20e767=0x2;var _0xf20719=0x3;if(_0x586a40){switch(_0x142f1c){case'1':_0x586a40[_0xba3e('0x41')]+=0x1;_0x2b259a[_0xba3e('0xa4')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x0,_0xba3e('0xa7'));ami['emit']('custom:agentnosuchnumber',ut[_0xba3e('0xa8')](_0x2b259a,'nosuchnumber'));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xa9'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'0',_0x586a40)[_0xba3e('0x89')](function(_0x4a82df){_0x218bb1=_0x4a82df['additional']==0x1;_0x20e767=_0x586a40[_0xba3e('0xab')];_0xf20719=_0x586a40[_0xba3e('0xac')];if(!_0x218bb1){if(ut['totalGlobal'](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut['cloneAction'](_0x2b259a,0xf,'Global');rpcDb['createCustomerFinal'](_0x4f05be,_0xba3e('0xae'));}else{if(_0x2b259a[_0xba3e('0xa4')]>=_0x586a40[_0xba3e('0xaf')]){rpcDb['createCustomerFinal'](_0x2b259a,_0xba3e('0xae'));}else{rpcDb[_0xba3e('0xb0')](ut[_0xba3e('0xb1')](_0x2b259a,'countnosuchnumberretry',_0x586a40['dialNoSuchNumberRetryFrequency']),_0x2b259a[_0xba3e('0xb2')],_0x2b259a[_0xba3e('0xb3')]);}}delete this[_0xba3e('0x19')][_0x52611e['linkedid']];}else{_0x2b259a[_0xba3e('0xa4')]++;logger[_0xba3e('0x5d')]('actioncountonusuch',_0x2b259a[_0xba3e('0xa4')]);logger[_0xba3e('0x5d')]('id',_0x2b259a[_0xba3e('0xb4')]);_0x1a39e2[_0xba3e('0xb5')]({'id':_0x2b259a['idContact'],'field':{'countnosuchnumberretry':_0x2b259a[_0xba3e('0xa4')]}})[_0xba3e('0x89')](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)['then'](function(){});});}});break;case'ANSWER':var _0x295568=moment()[_0xba3e('0x5a')](_0xba3e('0x92'));_0x2b259a[_0xba3e('0xb7')]=_0x295568;_0x2b259a[_0xba3e('0xb8')]=_0x295568;_0x2b259a['dialAnswer']=!![];_0x586a40[_0xba3e('0x2d')]+=0x1;logger[_0xba3e('0x5d')](_0xba3e('0xb9'),_0x2b259a[_0xba3e('0xba')],_0xba3e('0xbb'),_0x586a40[_0xba3e('0x69')],'pTalking:\x20',_0x586a40[_0xba3e('0x2d')]);ami[_0xba3e('0x60')](_0xba3e('0xbc'),ut[_0xba3e('0xa8')](_0x2b259a,'connect',this[_0xba3e('0x16')][_0x2b259a[_0xba3e('0x77')]]));if(_0x586a40[_0xba3e('0xbd')]){ami[_0xba3e('0x60')](_0xba3e('0xbe'),ut[_0xba3e('0xbf')](_0x2b259a));}break;case'16':ami[_0xba3e('0x60')]('custom:agentcomplete',ut[_0xba3e('0xa8')](_0x2b259a,_0xba3e('0xc0'),this[_0xba3e('0x16')][_0x2b259a[_0xba3e('0x77')]]));emitVoiceQueueChannelRemove(ut[_0xba3e('0xa8')](_0x2b259a,'complete'));_0x586a40['outboundAnswerCallsDay']+=0x1;_0x586a40[_0xba3e('0x32')]+=0x1;_0x586a40[_0xba3e('0x2b')]+=0x1;ut[_0xba3e('0x82')](_0x586a40,'[16]');_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x4,_0xba3e('0xc1'));rpcDb[_0xba3e('0x97')](_0x2b259a,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xba3e('0x9a')](_0x2b259a,_0xba3e('0xc2'));rpcDb[_0xba3e('0xc3')](_0x2b259a);_0x586a40[_0xba3e('0x2f')]+=_0x2b259a[_0xba3e('0xc4')];_0x586a40['sumBillable']+=_0x2b259a['talktime'];logger[_0xba3e('0x5d')](_0xba3e('0xc5'),_0x2b259a[_0xba3e('0xba')],'\x20Queue',_0x586a40[_0xba3e('0x69')],_0xba3e('0x78'),_0x586a40['pTalking']);delete this[_0xba3e('0x19')][_0x52611e[_0xba3e('0xc6')]];break;case _0xba3e('0xc7'):_0x586a40[_0xba3e('0xc8')]+=0x1;_0x2b259a[_0xba3e('0xc9')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x5,_0xba3e('0xca'));_0x20e767=_0x586a40[_0xba3e('0xcb')];_0xf20719=_0x586a40[_0xba3e('0xac')];ami[_0xba3e('0x60')]('custom:agentbusy',ut[_0xba3e('0xa8')](_0x2b259a,_0xba3e('0xcc')));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xcd'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'5',_0x586a40)['then'](function(_0x1f612f){_0x218bb1=_0x1f612f[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut['totalGlobal'](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb['createCustomerFinal'](_0x4f05be,_0xba3e('0xd1'));}else{if(_0x2b259a[_0xba3e('0xc9')]>=_0x586a40['dialBusyMaxRetry']){rpcDb[_0xba3e('0x9a')](_0x2b259a,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb['rescheduleContact'](ut[_0xba3e('0xb1')](_0x2b259a,'countbusyretry',_0x586a40[_0xba3e('0xcb')]),_0x2b259a['unlockAgent'],_0x2b259a['activeContact']);}}}else{_0x2b259a[_0xba3e('0xc9')]++;_0x1a39e2[_0xba3e('0xb5')]({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countbusyretry':_0x2b259a[_0xba3e('0xc9')]}})['then'](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)['then'](function(){});});}});break;case'NOANSWER':_0x586a40[_0xba3e('0x40')]+=0x1;_0x2b259a[_0xba3e('0xd2')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut['logCustomer'](_0x2b259a,0x3,_0xba3e('0xd3'));_0x20e767=_0x586a40[_0xba3e('0xd4')];_0xf20719=_0x586a40[_0xba3e('0xac')];var _0x1d7731=ut['buildNoAnswerEventPayload'](_0x2b259a,_0x586a40);ami['emit'](_0xba3e('0xd5'),_0x1d7731);rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xd6'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'3',_0x586a40)[_0xba3e('0x89')](function(_0x458568){_0x218bb1=_0x458568[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut['totalGlobal'](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb[_0xba3e('0x9a')](_0x4f05be,_0xba3e('0xd7'));}else{if(_0x2b259a[_0xba3e('0xd2')]>=_0x586a40[_0xba3e('0xd8')]){rpcDb['createCustomerFinal'](_0x2b259a,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb['rescheduleContact'](ut[_0xba3e('0xb1')](_0x2b259a,_0xba3e('0xd2'),_0x586a40[_0xba3e('0xd4')]),_0x2b259a[_0xba3e('0xb2')],_0x2b259a['activeContact']);}}}else{_0x2b259a['countnoanswerretry']++;_0x1a39e2[_0xba3e('0xb5')]({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countnoanswerretry':_0x2b259a[_0xba3e('0xd2')]}})[_0xba3e('0x89')](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});break;case _0xba3e('0xd9'):_0x586a40[_0xba3e('0x3d')]+=0x1;_0x2b259a[_0xba3e('0xda')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x8,_0xba3e('0xdb'));_0x20e767=_0x586a40[_0xba3e('0xdc')];_0xf20719=_0x586a40[_0xba3e('0xac')];ami[_0xba3e('0x60')](_0xba3e('0xdd'),ut['buildObj'](_0x2b259a,_0xba3e('0xde')));rpcDb['createCustomerHistory'](_0x2b259a,'[callProgressDetectingCustomer][logCongestion]');_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'8',_0x586a40)[_0xba3e('0x89')](function(_0x34103c){_0x218bb1=_0x34103c[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut[_0xba3e('0xa6')](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb['createCustomerFinal'](_0x4f05be,_0xba3e('0xdf'));}else{if(_0x2b259a[_0xba3e('0xda')]>=_0x586a40[_0xba3e('0xe0')]){rpcDb['createCustomerFinal'](_0x2b259a,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xba3e('0xb0')](ut[_0xba3e('0xb1')](_0x2b259a,_0xba3e('0xda'),_0x586a40['dialBusyRetryFrequency']),_0x2b259a['unlockAgent'],_0x2b259a[_0xba3e('0xb3')]);}}}else{_0x2b259a[_0xba3e('0xda')]++;_0x1a39e2['incrementPreviewCounters']({'id':_0x2b259a['idContact'],'field':{'countcongestionretry':_0x2b259a['countcongestionretry']}})[_0xba3e('0x89')](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});break;case _0xba3e('0xe1'):_0x586a40[_0xba3e('0x44')]+=0x1;_0x2b259a[_0xba3e('0xe2')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x14,_0xba3e('0xe3'));_0x20e767=_0x586a40[_0xba3e('0xe4')];_0xf20719=_0x586a40[_0xba3e('0xac')];ami['emit'](_0xba3e('0xe5'),ut[_0xba3e('0xa8')](_0x2b259a,_0xba3e('0xe6')));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xe7'));_0x1a39e2['verifyAdditionalPhones'](_0x2b259a,'20',_0x586a40)[_0xba3e('0x89')](function(_0x399516){_0x218bb1=_0x399516[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut[_0xba3e('0xa6')](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut['cloneAction'](_0x2b259a,0x14,_0xba3e('0xe3'));rpcDb['createCustomerFinal'](_0x4f05be,_0xba3e('0xe8'));}else{if(_0x2b259a[_0xba3e('0xe2')]>=_0x586a40[_0xba3e('0xe9')]){rpcDb[_0xba3e('0x9a')](_0x2b259a,_0xba3e('0xe8'));}else{rpcDb[_0xba3e('0xb0')](ut[_0xba3e('0xb1')](_0x2b259a,'countagentrejectretry',_0x586a40[_0xba3e('0xe4')]),_0x2b259a[_0xba3e('0xb2')],_0x2b259a[_0xba3e('0xb3')]);}}}else{_0x2b259a[_0xba3e('0xd2')]++;_0x1a39e2['incrementPreviewCounters']({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countnoanswerretry':_0x2b259a[_0xba3e('0xd2')]}})['then'](function(){_0x1a39e2['swapAdditionalPhones'](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});break;case _0xba3e('0xea'):_0x586a40['outboundAbandonedCallsDay']+=0x1;_0x2b259a[_0xba3e('0xeb')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut['logCustomer'](_0x2b259a,0xb,_0xba3e('0xec'));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xed'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'11',_0x586a40)[_0xba3e('0x89')](function(_0x20083b){_0x218bb1=_0x20083b[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut[_0xba3e('0xa6')](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb[_0xba3e('0x9a')](_0x4f05be,_0xba3e('0xed'));}else{if(_0x2b259a[_0xba3e('0xee')]>=_0x586a40[_0xba3e('0xef')]){rpcDb[_0xba3e('0x9a')](_0x2b259a,_0xba3e('0xed'));}else{rpcDb[_0xba3e('0xb0')](ut[_0xba3e('0xb1')](_0x2b259a,_0xba3e('0xeb'),_0x586a40[_0xba3e('0xf0')]),_0x2b259a[_0xba3e('0xb2')],_0x2b259a[_0xba3e('0xb3')]);}}}else{_0x2b259a['countnoanswerretry']++;_0x1a39e2['incrementPreviewCounters']({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countnoanswerretry':_0x2b259a['countnoanswerretry']}})['then'](function(){_0x1a39e2['swapAdditionalPhones'](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});break;case'18':_0x586a40[_0xba3e('0x45')]+=0x1;_0x2b259a[_0xba3e('0xf1')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x12,_0x52611e[_0xba3e('0xf2')]||_0x52611e[_0xba3e('0xf3')]);ami[_0xba3e('0x60')](_0xba3e('0xf4'),ut[_0xba3e('0xa8')](_0x2b259a,_0xba3e('0xf5')));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xf6'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'18',_0x586a40)['then'](function(_0x1380ec){_0x218bb1=_0x1380ec[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut['totalGlobal'](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0x12,_0xba3e('0xd0'));rpcDb[_0xba3e('0x9a')](_0x4f05be,_0xba3e('0xf6'));}else{rpcDb[_0xba3e('0x9a')](_0x2b259a,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x2b259a[_0xba3e('0xd2')]++;_0x1a39e2[_0xba3e('0xb5')]({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countnoanswerretry':_0x2b259a['countnoanswerretry']}})[_0xba3e('0x89')](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});delete this['actions'][_0x52611e[_0xba3e('0xc6')]];break;case'19':_0x586a40[_0xba3e('0x45')]+=0x1;_0x2b259a[_0xba3e('0xa5')]=ut[_0xba3e('0xa6')](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0x13,_0x52611e['cause-txt']||_0x52611e['dialstatus']);ami['emit'](_0xba3e('0xf4'),ut[_0xba3e('0xa8')](_0x2b259a,'amd'));rpcDb[_0xba3e('0x97')](_0x2b259a,_0xba3e('0xf7'));_0x1a39e2['verifyAdditionalPhones'](_0x2b259a,'18',_0x586a40)[_0xba3e('0x89')](function(_0xed04eb){_0x218bb1=_0xed04eb[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut[_0xba3e('0xa6')](_0x2b259a)>=_0x586a40['dialGlobalMaxRetry']){_0x4f05be=ut[_0xba3e('0xcf')](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb[_0xba3e('0x9a')](_0x4f05be,_0xba3e('0xf7'));}else{rpcDb['createCustomerFinal'](_0x2b259a,'[callProgressDetectingCustomer][machine]');}}else{_0x2b259a['countnoanswerretry']++;_0x1a39e2[_0xba3e('0xb5')]({'id':_0x2b259a[_0xba3e('0xb4')],'field':{'countnoanswerretry':_0x2b259a['countnoanswerretry']}})[_0xba3e('0x89')](function(){_0x1a39e2[_0xba3e('0xb6')](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});});}});delete this[_0xba3e('0x19')][_0x52611e[_0xba3e('0xc6')]];break;default:if(_0x2b259a[_0xba3e('0x79')]){ut[_0xba3e('0x82')](_0x586a40,_0xba3e('0xf8'));ut[_0xba3e('0x83')](_0xba3e('0xf9')+_0x586a40[_0xba3e('0x69')],_0x52611e);}_0x586a40[_0xba3e('0x45')]+=0x1;_0x2b259a['countglobal']=ut['totalGlobal'](_0x2b259a);ut[_0xba3e('0x93')](_0x2b259a,0xc,_0x52611e[_0xba3e('0xf2')]||_0x52611e['dialstatus']);_0x20e767=_0x586a40[_0xba3e('0xe4')];_0xf20719=_0x586a40[_0xba3e('0xac')];rpcDb['createCustomerHistory'](_0x2b259a,_0xba3e('0xfa'));_0x1a39e2[_0xba3e('0xaa')](_0x2b259a,'20',_0x586a40)[_0xba3e('0x89')](function(_0x5bb569){_0x218bb1=_0x5bb569[_0xba3e('0xce')]==0x1;if(!_0x218bb1){if(ut[_0xba3e('0xa6')](_0x2b259a)>=_0x586a40[_0xba3e('0xad')]){_0x4f05be=ut['cloneAction'](_0x2b259a,0xf,_0xba3e('0xd0'));rpcDb[_0xba3e('0x9a')](_0x4f05be,_0xba3e('0xfb'));}else{rpcDb[_0xba3e('0x9a')](_0x2b259a,_0xba3e('0xfb'));}delete this[_0xba3e('0x19')][_0x52611e[_0xba3e('0xc6')]];}else{_0x1a39e2['swapAdditionalPhones'](_0x2b259a,_0x20e767,_0xf20719)[_0xba3e('0x89')](function(){});}});}if(!(_0x2b259a[_0xba3e('0x79')]&&_0x142f1c==='16')){ut[_0xba3e('0xfc')](_0x586a40,_0xba3e('0xfd'));logger[_0xba3e('0x5d')](_0xba3e('0xfe'),_0x2b259a[_0xba3e('0xba')],_0xba3e('0xbb'),_0x586a40[_0xba3e('0x69')],_0xba3e('0xff'),_0x586a40[_0xba3e('0x51')]);}if(_0x142f1c!==_0xba3e('0x100')){delete this[_0xba3e('0x19')][_0x52611e[_0xba3e('0xc6')]];delete this[_0xba3e('0x19')][_0x52611e['destlinkedid']];}}};Preview['prototype']['callProgressDetectingAgent']=function(_0x439588,_0x243026,_0x3696bd){if(_[_0xba3e('0x101')](_0x243026)&&_0xba3e('0x102')!==typeof _0x243026){return;}if(_[_0xba3e('0x101')](_0x3696bd)&&'object'!==typeof _0x3696bd){return;}switch(_0x3696bd[_0xba3e('0x103')]){case'0':ut[_0xba3e('0x104')](_0x439588,0x0,_0xba3e('0xa7'));rpcDb[_0xba3e('0x105')](_0x439588,_0xba3e('0x106'));break;case'3':ut[_0xba3e('0x104')](_0x439588,0x3,'NoAnswer');rpcDb[_0xba3e('0x105')](_0x439588,_0xba3e('0x107'));break;case'5':ut['logAgent'](_0x439588,0x5,_0xba3e('0xca'));rpcDb[_0xba3e('0x105')](_0x439588,_0xba3e('0x108'));break;case'8':ut['logAgent'](_0x439588,0x8,_0xba3e('0xdb'));rpcDb['createAgentHistory'](_0x439588,_0xba3e('0x109'));break;case'22':ut[_0xba3e('0x104')](_0x439588,0x16,_0xba3e('0x10a'));rpcDb[_0xba3e('0x105')](_0x439588,_0xba3e('0x10b'));break;default:ut['logAgent'](_0x439588,0xc,_0x3696bd[_0xba3e('0x103')]);rpcDb[_0xba3e('0x105')](_0x439588,'[callProgressDetectingAgent][logCongestion]');}ut[_0xba3e('0xfc')](_0x243026,_0xba3e('0x10c'));logger[_0xba3e('0x5d')](_0xba3e('0x10d'),_0x439588['uniqueid'],_0xba3e('0xbb'),_0x243026['name'],_0xba3e('0xff'),_0x243026[_0xba3e('0x51')]);delete this[_0xba3e('0x19')][_0x439588[_0xba3e('0xba')]];};Preview[_0xba3e('0x12')][_0xba3e('0xaa')]=function(_0x286c56,_0x31583e,_0x3990ce){return Promise[_0xba3e('0x10e')]()['then'](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x286c56,_0x31583e,_0x3990ce))['catch'](logger[_0xba3e('0x5d')](_0xba3e('0x10f')));};Preview[_0xba3e('0x12')][_0xba3e('0xb6')]=function(_0x38b49e,_0x57398b,_0x56e88c){return Promise['resolve']()[_0xba3e('0x89')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x38b49e,_0x57398b,_0x56e88c))[_0xba3e('0x80')](logger['info'](_0xba3e('0x110')));};Preview['prototype'][_0xba3e('0xb5')]=function(_0x5c0507){return Promise[_0xba3e('0x10e')]()['then'](cmHopperAdditionalPhone[_0xba3e('0xb5')](_0x5c0507))[_0xba3e('0x80')](logger[_0xba3e('0x5d')](_0xba3e('0x111')));};Preview[_0xba3e('0x12')]['checkInBlack']=function(_0x49cca6,_0x5311aa,_0x57bd98,_0x484f35,_0x29e7f2){var _0x102eb1=this;return new Promise(function(_0x40121f,_0x64f7d4){if(_[_0xba3e('0x74')](_0x5311aa)||_['isNil'](_0x5311aa[_0xba3e('0x112')])||_[_0xba3e('0x74')](_0x5311aa[_0xba3e('0x113')])||_[_0xba3e('0x74')](_0x5311aa[_0xba3e('0x7c')])){_0x64f7d4(ut['message'](_0xba3e('0x114'),_0x484f35,_0x29e7f2));return;}var _0x24fe4b=uuid['v4']();var _0x49def8=_0x102eb1[_0xba3e('0x16')][_0x5311aa[_0xba3e('0x76')][_0xba3e('0x69')]];var _0x5ef0f6=_0x57bd98?_0x102eb1[_0xba3e('0x88')][_0x57bd98]['id']:undefined;_0x102eb1['actions'][_0x24fe4b]=new Action(_0x5311aa,_0x49def8,_0x24fe4b,_0x57bd98,_0x5ef0f6);var _0x5cba34=_0x102eb1[_0xba3e('0x19')][_0x24fe4b];_0x5cba34[_0xba3e('0xb2')]=_0x484f35;_0x5cba34[_0xba3e('0xb3')]=_0x29e7f2;_0x5cba34[_0xba3e('0x115')]=_0x57bd98;if(_[_0xba3e('0x116')](_0x49cca6)){_0x102eb1[_0xba3e('0x117')](_0x5cba34,_0x49def8,_0x5311aa,_0x57bd98)['then'](function(_0x2d3a43){logger[_0xba3e('0x5d')](_0xba3e('0x118'),'Queue:\x20'+_0x5cba34['queue']+_0xba3e('0x119')+_0x5cba34[_0xba3e('0xb4')],JSON[_0xba3e('0x59')](_0x2d3a43));ami['emit']('custom:agentcalled',ut[_0xba3e('0xa8')](_0x5cba34,_0xba3e('0x11a'),_0x102eb1['campaignsPreview'][_0x5cba34[_0xba3e('0x77')]]));_0x40121f(ut['message'](_0xba3e('0x11b')));})[_0xba3e('0x80')](function(_0x10adae){ut['logger']('[Preview][execCall][failure]',_0x10adae);_0x64f7d4(ut[_0xba3e('0x66')](_0xba3e('0x11c'),_0x484f35,_0x29e7f2));});}else{_0x49def8[_0xba3e('0x11d')]+=0x1;ut[_0xba3e('0x11e')](_0x5cba34);rpcDb[_0xba3e('0x11f')](_0x5cba34,_0xba3e('0x120'));delete _0x102eb1[_0xba3e('0x19')][_0x24fe4b];_0x64f7d4(ut[_0xba3e('0x66')](_0xba3e('0x121'),_0x484f35,_0x29e7f2));}});};Preview[_0xba3e('0x12')][_0xba3e('0xa0')]=function(_0x4ba5ff){return!_[_0xba3e('0x74')](_0x4ba5ff)&&!_[_0xba3e('0x74')](_0x4ba5ff[_0xba3e('0x69')])&&!_[_0xba3e('0x74')](_0x4ba5ff[_0xba3e('0x122')])&&_0x4ba5ff[_0xba3e('0x122')]&&!_[_0xba3e('0x74')](this[_0xba3e('0x18')][util[_0xba3e('0x5a')](_0xba3e('0x123'),_0x4ba5ff['name'])])&&!_[_0xba3e('0x74')](this['trunks'][util['format'](_0xba3e('0x123'),_0x4ba5ff[_0xba3e('0x69')])][_0xba3e('0x7f')])&&(this['trunks'][util[_0xba3e('0x5a')]('SIP/%s',_0x4ba5ff[_0xba3e('0x69')])]['status']===_0xba3e('0x124')||this[_0xba3e('0x18')][util[_0xba3e('0x5a')](_0xba3e('0x123'),_0x4ba5ff[_0xba3e('0x69')])][_0xba3e('0x7f')]===_0xba3e('0x125'));};Preview[_0xba3e('0x12')][_0xba3e('0x126')]=function(_0x49e264,_0x431386){return this['execRun'](_0x49e264,_0x431386)['then'](function(_0x5d6fd5){return _[_0xba3e('0x7a')](_0x5d6fd5,[_0xba3e('0x66')]);})[_0xba3e('0x80')](function(_0x4b56d2){if(_0x4b56d2[_0xba3e('0x127')]){rpcDb['unlockContact'](_0x49e264);}if(_0x4b56d2['active']){rpcDb[_0xba3e('0x128')](_0x49e264);}throw _[_0xba3e('0x7a')](_0x4b56d2,[_0xba3e('0x66')]);});};Preview[_0xba3e('0x12')][_0xba3e('0x129')]=function(_0x223b80,_0x5142f8){var _0x286ed4=this;var _0x2b9a46,_0x2588f1;return rpcDb[_0xba3e('0x12a')](_0x223b80)[_0xba3e('0x89')](function(_0x590800){if(!_['isNil'](_0x590800[0x0])){_0x2588f1=_0x590800[0x0][_0xba3e('0x12b')]?![]:!![];_0x2b9a46=_0x590800[0x0][_0xba3e('0x12b')]?!![]:![];_0x2b9a46=_0x5142f8?!![]:_0x2b9a46;}var _0x5249de=_0x286ed4['validateContact'](_0x590800);if(_0x5249de[_0xba3e('0x12c')]){rpcDb[_0xba3e('0x12d')](_[_0xba3e('0x7a')](_0x590800[0x0],['VoiceQueueId',_0xba3e('0x113')]))[_0xba3e('0x89')](function(_0x4950f4){_0x286ed4['checkInBlack'](_0x4950f4,_0x590800[0x0],_0x5142f8,_0x2588f1,_0x2b9a46)[_0xba3e('0x89')](function(_0x382dfa){return _0x382dfa;})[_0xba3e('0x80')](function(_0x16f9e1){throw _0x16f9e1;});})[_0xba3e('0x80')](function(_0x12148f){ut['logger']('[Preview][checkIsBlackList]',_0x12148f);throw ut[_0xba3e('0x66')]('Call\x20unsuccessful',_0x2588f1,_0x2b9a46);});}else{throw ut[_0xba3e('0x66')](_0x5249de['message'],_0x2588f1,_0x2b9a46);}})[_0xba3e('0x80')](function(_0x170321){ut[_0xba3e('0x64')](_0xba3e('0x12e'),_0x170321);throw ut[_0xba3e('0x66')](_0xba3e('0x12f'),![],!![]);});};Preview[_0xba3e('0x12')][_0xba3e('0x130')]=function(_0x3530b0){if(_[_0xba3e('0x74')](_0x3530b0)||_[_0xba3e('0x116')](_0x3530b0)||!_[_0xba3e('0x74')](_0x3530b0[0x0][_0xba3e('0x8e')])&&_['isNil'](_0x3530b0[0x0][_0xba3e('0x8e')][_0xba3e('0x69')])){ut[_0xba3e('0x64')](_0xba3e('0x131'),_0x3530b0);return{'isValid':![],'message':_0xba3e('0x132')};}var _0x48fb67=this[_0xba3e('0x16')][_0x3530b0[0x0][_0xba3e('0x76')][_0xba3e('0x69')]];_0x48fb67[_0xba3e('0x66')]='ACTIVE';if(_['isNil'](_0x48fb67)){ut[_0xba3e('0x64')](_0xba3e('0x133'),_0x48fb67);return{'isValid':![],'message':_0xba3e('0x134')};}if(!this[_0xba3e('0xa0')](_0x48fb67[_0xba3e('0x57')])){ut['logger'](_0xba3e('0x135'),_0xba3e('0x136')+_0x48fb67[_0xba3e('0x69')]+_0xba3e('0x137'));if(!this['isTrunkReachable'](_0x48fb67['TrunkBackup'])){ut[_0xba3e('0x64')](_0xba3e('0x135'),_0x48fb67[_0xba3e('0x69')]+_0xba3e('0x138'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0xba3e('0x9f')](_0x48fb67['dialActive'])){ut['logger'](_0xba3e('0x139'),_0x48fb67[_0xba3e('0x69')]+_0xba3e('0x13a'));return{'isValid':![],'message':_0xba3e('0x136')+_0x48fb67[_0xba3e('0x69')]+_0xba3e('0x13a')};}return{'isValid':!![],'message':_0xba3e('0x13b')};};Preview[_0xba3e('0x12')][_0xba3e('0x117')]=function(_0x4a9551,_0x3a88c8,_0x2e94eb,_0x58f552){var _0x5e544f=this;return new Promise(function(_0x166a79,_0xdabbdd){var _0x33419c=_0x4a9551[_0xba3e('0xba')];var _0x5a64f0=_0x5e544f[_0xba3e('0xa0')](_0x3a88c8[_0xba3e('0x57')])?util[_0xba3e('0x5a')](_0xba3e('0x13c'),_0x3a88c8[_0xba3e('0x57')][_0xba3e('0x69')],_[_0xba3e('0x74')](_0x3a88c8[_0xba3e('0x3b')])?'':_0x3a88c8['dialPrefix'][_0xba3e('0x13d')]()||'',_0x3a88c8['dialCutDigit']>0x0?_0x2e94eb[_0xba3e('0x113')]['substring'](_0x3a88c8[_0xba3e('0x13e')]):_0x2e94eb[_0xba3e('0x113')]):util[_0xba3e('0x5a')](_0xba3e('0x13c'),_[_0xba3e('0x74')](_0x3a88c8[_0xba3e('0xa1')])?_0x3a88c8[_0xba3e('0x57')][_0xba3e('0x69')]:_0x3a88c8['TrunkBackup'][_0xba3e('0x69')],_[_0xba3e('0x74')](_0x3a88c8[_0xba3e('0x3b')])?'':_0x3a88c8[_0xba3e('0x3b')][_0xba3e('0x13d')]()||'',_0x3a88c8['dialCutDigit']>0x0?_0x2e94eb[_0xba3e('0x113')][_0xba3e('0x13f')](_0x3a88c8[_0xba3e('0x13e')]):_0x2e94eb['phone']);var _0x567165=_0x5e544f[_0xba3e('0xa0')](_0x3a88c8[_0xba3e('0x57')])?ut['getCallerId'](_0x3a88c8[_0xba3e('0x57')][_0xba3e('0x140')],_0x3a88c8['dialOriginateCallerIdName'],_0x3a88c8[_0xba3e('0x141')]>0x0?ut[_0xba3e('0x142')](_0x3a88c8[_0xba3e('0x39')],_0x3a88c8['dialRandomLastDigitCallerIdNumber']):_0x3a88c8[_0xba3e('0x39')]):ut[_0xba3e('0x143')](_[_0xba3e('0x74')](_0x3a88c8['TrunkBackup'])?_0x3a88c8[_0xba3e('0x57')][_0xba3e('0x140')]:_0x3a88c8[_0xba3e('0xa1')][_0xba3e('0x140')],_0x3a88c8['dialOriginateCallerIdName'],_0x3a88c8[_0xba3e('0x141')]>0x0?ut[_0xba3e('0x142')](_0x3a88c8[_0xba3e('0x39')],_0x3a88c8[_0xba3e('0x141')]):_0x3a88c8[_0xba3e('0x39')]);if(_0x567165){_0x4a9551[_0xba3e('0x144')]=ut['extractCalleridName'](_0x567165);_0x4a9551[_0xba3e('0x145')]=ut[_0xba3e('0x146')](_0x567165);}var _0x26c51d=ut['addVariables'](_0x3a88c8,_0x2e94eb,_0x5a64f0,_0x567165,_0x33419c,_0x4a9551);_[_0xba3e('0x147')](_0x4a9551,ut[_0xba3e('0x148')](_0x26c51d));_0x4a9551[_0xba3e('0x91')]=moment()[_0xba3e('0x5a')](_0xba3e('0x92'));_0x3a88c8[_0xba3e('0x149')]=_0x26c51d;ami[_0xba3e('0x7e')](ut[_0xba3e('0x14a')](_0x4a9551,_0x3a88c8,_0x26c51d,_0x4a9551[_0xba3e('0xb3')],_0x58f552))[_0xba3e('0x89')](function(_0x57a1b3){_0x3a88c8[_0xba3e('0x51')]+=0x1;logger['info']('[originated][increment]',_0x33419c,_0xba3e('0xbb'),_0x3a88c8[_0xba3e('0x69')],_0xba3e('0xff'),_0x3a88c8['originated']);_0x166a79(_0x57a1b3);})[_0xba3e('0x80')](function(_0x31b545){ut[_0xba3e('0x104')](_0x4a9551,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x4a9551,'[originateFailure][logOriginateFailure]');_0xdabbdd(_0x31b545);});});};Preview[_0xba3e('0x12')][_0xba3e('0x22')]=function(_0x5d92b7){if(this[_0xba3e('0x19')][_0x5d92b7[_0xba3e('0xc6')]]){this[_0xba3e('0x19')][_0x5d92b7[_0xba3e('0xc6')]][_0xba3e('0x14b')]=_0x5d92b7[_0xba3e('0x14b')];}};Preview[_0xba3e('0x12')][_0xba3e('0x1c')]=function(_0x3b8bf0){var _0x2d35f5=this;var _0x273427=this['actions'][_0x3b8bf0['actionid']];if(_0x273427){if(_0x273427[_0xba3e('0x115')]&&this['agents'][_0x273427[_0xba3e('0x115')]]){ut['logLookAgent'](_0x273427,this['agents'][_0x273427['lookAgent']][_0xba3e('0x69')],this[_0xba3e('0x88')][_0x273427['lookAgent']]['id']);}var _0xe83a50=_[_0xba3e('0x14c')](_0x273427);_0xe83a50[_0xba3e('0xb7')]=moment()[_0xba3e('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');var _0x25b093=_0x2d35f5[_0xba3e('0x16')][_0x273427['queue']];if(ut[_0xba3e('0x14d')](_0x3b8bf0['response'])){if(_0x273427[_0xba3e('0xb2')]){rpcDb['unlockContact'](_0x273427['idContact']);}if(_0x273427[_0xba3e('0xb3')]){rpcDb[_0xba3e('0x128')](_0x273427[_0xba3e('0xb4')]);}ami['emit'](_0xba3e('0x14e'),ut[_0xba3e('0xa8')](_0x273427,_0xba3e('0x14f'),this[_0xba3e('0x16')][_0x273427['queue']]));this[_0xba3e('0x150')](_0xe83a50,_0x25b093,_0x3b8bf0);}else{_0x273427[_0xba3e('0x91')]=moment()[_0xba3e('0x5a')](_0xba3e('0x92'));ut[_0xba3e('0x104')](_0xe83a50,0x4,_0xba3e('0xc1'));rpcDb['createAgentHistory'](_0xe83a50,_0xba3e('0x151'));}}};Preview['prototype'][_0xba3e('0x1e')]=function(_0x378086){var _0x2339d3=this['actions'][_0x378086[_0xba3e('0xc6')]];var _0x4747c2;if(_0x2339d3){_0x4747c2=this[_0xba3e('0x16')][_0x2339d3[_0xba3e('0x77')]];logger[_0xba3e('0x5d')]('[syncHangup][talking]',_0x378086[_0xba3e('0xc6')],'\x20Queue',_0x4747c2['name'],_0xba3e('0x78'),_0x4747c2[_0xba3e('0x2d')]);}if(this['actions'][_0x378086[_0xba3e('0xc6')]]&&_0x378086['linkedid']!==_0x378086[_0xba3e('0xba')]){if(_0x378086[_0xba3e('0x152')]==='16'&&this[_0xba3e('0x19')][_0x378086[_0xba3e('0xc6')]][_0xba3e('0x79')]){this[_0xba3e('0xa3')](_0x378086,_0x378086['linkedid'],_0x378086[_0xba3e('0x152')]);}else if(this['actions'][_0x378086[_0xba3e('0xc6')]][_0xba3e('0x79')]){logger[_0xba3e('0x5d')](_0xba3e('0x153'),_0x378086[_0xba3e('0xc6')],_0x378086[_0xba3e('0x152')],_0xba3e('0xbb'),_0x4747c2[_0xba3e('0x69')],_0xba3e('0x78'),_0x4747c2[_0xba3e('0x2d')]);this[_0xba3e('0xa3')](_0x378086,_0x378086[_0xba3e('0xc6')],_0x378086[_0xba3e('0x152')]);}}else if(_0x2339d3&&_[_0xba3e('0x74')](_0x2339d3['statedesc'])&&_0x4747c2[_0xba3e('0x154')]&&_0x378086['linkedid']===_0x378086[_0xba3e('0xba')]&&_[_0xba3e('0x74')](_0x378086[_0xba3e('0x103')])&&_0x378086[_0xba3e('0x152')]==='16'&&_0x378086[_0xba3e('0x155')]==='6'&&_['isUndefined'](_0x2339d3[_0xba3e('0x156')])){if(_0x2339d3[_0xba3e('0xb2')]){rpcDb[_0xba3e('0x157')](_0x2339d3[_0xba3e('0xb4')]);}if(_0x2339d3['activeContact']){rpcDb[_0xba3e('0x128')](_0x2339d3[_0xba3e('0xb4')]);}_0x378086['reason']='22';this['callProgressDetectingAgent'](_0x2339d3,_0x4747c2,_0x378086);}else if(_0x2339d3&&_0x2339d3['transfer']){if(_0x378086[_0xba3e('0x152')]==='16'&&this[_0xba3e('0x19')][_0x378086['linkedid']][_0xba3e('0x79')]){logger[_0xba3e('0x5d')](_0xba3e('0x158'),_0x378086['linkedid'],_0x378086[_0xba3e('0x152')],'\x20Queue',_0x4747c2[_0xba3e('0x69')],_0xba3e('0x78'),_0x4747c2[_0xba3e('0x2d')]);this[_0xba3e('0xa3')](_0x378086,_0x378086['linkedid'],_0x378086[_0xba3e('0x152')]);}else if(this[_0xba3e('0x19')][_0x378086['linkedid']][_0xba3e('0x79')]){logger[_0xba3e('0x5d')](_0xba3e('0x153'),_0x378086[_0xba3e('0xc6')],_0x378086['cause'],'\x20Queue',_0x4747c2[_0xba3e('0x69')],_0xba3e('0x78'),_0x4747c2['pTalking']);this[_0xba3e('0xa3')](_0x378086,_0x378086[_0xba3e('0xc6')],_0x378086['cause']);}}};Preview[_0xba3e('0x12')]['syncDialEnd']=function(_0x125af5){if(this[_0xba3e('0x19')][_0x125af5[_0xba3e('0x159')]]&&_0x125af5[_0xba3e('0x159')]!==_0x125af5[_0xba3e('0x15a')]){this['callProgressDetectingCustomer'](_0x125af5,_0x125af5[_0xba3e('0x159')],_0x125af5['dialstatus']);}};Preview['prototype'][_0xba3e('0x20')]=function(_0x315d31){if(this['actions'][_0x315d31[_0xba3e('0xc6')]]&&_0x315d31[_0xba3e('0xc6')]!==_0x315d31[_0xba3e('0xba')]&&!this[_0xba3e('0x19')][_0x315d31[_0xba3e('0xc6')]][_0xba3e('0x79')]){if(_0x315d31[_0xba3e('0x152')]==='1'){this[_0xba3e('0xa3')](_0x315d31,_0x315d31['linkedid'],_0x315d31[_0xba3e('0x152')]);}}};Preview[_0xba3e('0x12')][_0xba3e('0x15b')]=function(_0x1c01ef,_0x5bfdb9,_0xa83c31){if(this[_0xba3e('0x19')][_0x1c01ef]){if(_[_0xba3e('0x74')](this[_0xba3e('0x19')][_0x1c01ef]['variables'])){this['actions'][_0x1c01ef][_0xba3e('0x149')]={};}this[_0xba3e('0x19')][_0x1c01ef][_0xba3e('0x149')][_0x5bfdb9]=_0xa83c31;}};Preview[_0xba3e('0x12')]['syncVarSet']=function(_0x3d6857){try{if(!_['isNil'](_0x3d6857)){if(ut[_0xba3e('0x15c')](_[_0xba3e('0x15d')](_0x3d6857[_0xba3e('0x15e')])[0x0])){this[_0xba3e('0x15b')](_0x3d6857['uniqueid'],_[_0xba3e('0x15d')](_0x3d6857['variable'])[0x0],_0x3d6857[_0xba3e('0x15f')]);}}}catch(_0x4d30fe){logger[_0xba3e('0x160')]('[syncVarSet][Preview]',util[_0xba3e('0x161')](_0x4d30fe,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x5391b5){if(_0x5391b5){if(this[_0xba3e('0x19')][_0x5391b5['transfertargetlinkedid']]){this[_0xba3e('0x19')][_0x5391b5['transfertargetlinkedid']][_0xba3e('0x156')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x1ac59a){if(_0x1ac59a){if(this[_0xba3e('0x19')][_0x1ac59a[_0xba3e('0x162')]]){this['actions'][_0x1ac59a[_0xba3e('0x162')]][_0xba3e('0x156')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0xf69c=['enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncHangup','hanguprequest','syncHangupRequest','bind','dialend','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','unmanaged','abandoned','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','Interval','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','preview','dialMethod','booked','hasOwnProperty','dialPreviewAutoRecallMe','recallMe','sequence','isNil','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','channel','catch','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','size','clearZombieChannel','getContactRecallMe','agentReadyId','getDiff','scheduledat','Agent','voicePause','run','then','logger2','[RecallMe]','disableContact','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','ACTIVE','countnosuchnumberretry','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','totalGlobal','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','custom:agentConnectPreview','complete','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','rescheduleContact','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','Global','dialNoAnswerMaxRetry','scheduledAt','CONGESTION','outboundCongestionCallsDay','countcongestionretry','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','loggerError','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','checkIsBlackList','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','starttime','variables','variablesAction','[originated][increment]','syncNewExten','syncOriginateResponse','actionid','lookAgent','logLookAgent','clone','responsetime','isFailure','rejected','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','dialQueueProject','channelstate','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfer','transfererlinkedid','exports','util','uuid','moment','ioredis','../../../config/logger','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','defaults','redis','localhost','socket.io-emitter','prototype'];(function(_0x13b571,_0x14bbb9){var _0x414fed=function(_0x5f09b1){while(--_0x5f09b1){_0x13b571['push'](_0x13b571['shift']());}};_0x414fed(++_0x14bbb9);}(_0xf69c,0x151));var _0xcf69=function(_0x911aa,_0x5cb8b5){_0x911aa=_0x911aa-0x0;var _0x327202=_0xf69c[_0x911aa];return _0x327202;};'use strict';var util=require(_0xcf69('0x0'));var _=require('lodash');var uuid=require(_0xcf69('0x1'));var moment=require(_0xcf69('0x2'));var md5=require('md5');var Redis=require(_0xcf69('0x3'));var config=require('../../../config/environment');var logger=require(_0xcf69('0x4'))('preview');var loggerAction=require(_0xcf69('0x4'))('actionPreview');var ami=require(_0xcf69('0x5'));var rpcDb=require(_0xcf69('0x6'));var cmHopperAdditionalPhone=require(_0xcf69('0x7'));var Action=require(_0xcf69('0x8'));var ut=require(_0xcf69('0x9'));config['redis']=_[_0xcf69('0xa')](config[_0xcf69('0xb')],{'host':_0xcf69('0xc'),'port':0x18eb});var io=require(_0xcf69('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xcf69('0xe')][_0xcf69('0xf')]=function(_0x914e95){this[_0xcf69('0x10')]=this[_0xcf69('0x10')]?this[_0xcf69('0x10')]['finally'](_0x914e95):_0x914e95();};function Preview(_0x1e4e74){this['sequence']=new Sequence();this[_0xcf69('0x11')]=_0x1e4e74[_0xcf69('0x12')];this[_0xcf69('0x13')]=_0x1e4e74[_0xcf69('0x13')];this[_0xcf69('0x14')]={};this[_0xcf69('0x15')]=_0x1e4e74[_0xcf69('0x15')];this[_0xcf69('0x16')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));ami['on']('hangup',this[_0xcf69('0x17')]['bind'](this));ami['on'](_0xcf69('0x18'),this[_0xcf69('0x19')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1b'),this['syncDialEnd'][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1c'),this['syncNewExten']['bind'](this));ami['on'](_0xcf69('0x1d'),this[_0xcf69('0x1e')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x1f'),this[_0xcf69('0x20')][_0xcf69('0x1a')](this));ami['on'](_0xcf69('0x21'),this[_0xcf69('0x22')]['bind'](this));this[_0xcf69('0x23')](this['campaignsPreview']);}function emit(_0xbe9cd5,_0x5d2019,_0x3f3703){io['to'](_0xbe9cd5)[_0xcf69('0x24')](_0x5d2019,_0x3f3703);}function emitCampaignPreview(_0x2af301){if(_0x2af301[_0xcf69('0x25')]===_0xcf69('0x26')){var _0xdc66a={'id':_0x2af301['id'],'name':_0x2af301[_0xcf69('0x27')],'strategy':_0x2af301[_0xcf69('0x28')],'answered':_0x2af301[_0xcf69('0x29')],'available':_0x2af301[_0xcf69('0x2a')],'loggedIn':_0x2af301[_0xcf69('0x2b')],'pTalking':_0x2af301[_0xcf69('0x2c')],'sumBillable':_0x2af301[_0xcf69('0x2d')],'sumDuration':_0x2af301['sumDuration'],'sumHoldTime':_0x2af301[_0xcf69('0x2e')]||0x0,'talking':_0x2af301[_0xcf69('0x2f')],'total':_0x2af301[_0xcf69('0x30')],'type':_0x2af301[_0xcf69('0x25')],'unmanaged':_0x2af301[_0xcf69('0x31')],'abandoned':_0x2af301[_0xcf69('0x32')],'waiting':_0x2af301['waiting'],'loggedInDb':_0x2af301['loggedInDb'],'dialActive':_0x2af301[_0xcf69('0x33')],'dialMethod':_0x2af301['dialMethod'],'dialOriginateCallerIdName':_0x2af301[_0xcf69('0x34')],'dialOriginateCallerIdNumber':_0x2af301[_0xcf69('0x35')],'dialOriginateTimeout':_0x2af301[_0xcf69('0x36')],'dialPrefix':_0x2af301[_0xcf69('0x37')],'outboundAnswerAgiCallsDay':_0x2af301[_0xcf69('0x38')],'outboundAnswerCallsDay':_0x2af301[_0xcf69('0x39')],'outboundBlacklistCallsDay':_0x2af301[_0xcf69('0x3a')],'outboundBusyCallsDay':_0x2af301[_0xcf69('0x3b')],'outboundCongestionCallsDay':_0x2af301['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x2af301['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x2af301[_0xcf69('0x3c')],'outboundDropCallsDayTimeout':_0x2af301[_0xcf69('0x3d')],'outboundNoAnswerCallsDay':_0x2af301[_0xcf69('0x3e')],'outboundNoSuchCallsDay':_0x2af301[_0xcf69('0x3f')],'outboundOriginateFailureCallsDay':_0x2af301['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x2af301[_0xcf69('0x40')],'outboundRejectCallsDay':_0x2af301[_0xcf69('0x41')],'outboundUnknownCallsDay':_0x2af301[_0xcf69('0x42')],'outboundAbandonedCallsDay':_0x2af301[_0xcf69('0x43')],'predictiveIntervalAnsweredCalls':_0x2af301[_0xcf69('0x44')],'predictiveIntervalAvgHoldtime':_0x2af301[_0xcf69('0x45')],'predictiveIntervalAvgTalktime':_0x2af301[_0xcf69('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x2af301[_0xcf69('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x2af301[_0xcf69('0x48')],'predictiveIntervalErlangCalls':_0x2af301[_0xcf69('0x49')],'predictiveIntervalErlangCallsDroppedCalls':_0x2af301['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x2af301[_0xcf69('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x2af301['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x2af301[_0xcf69('0x4b')],'predictiveIntervalAvailable':_0x2af301[_0xcf69('0x4c')],'predictiveIntervalTotalCalls':_0x2af301[_0xcf69('0x4d')],'message':_0x2af301[_0xcf69('0x4e')],'originated':_0x2af301[_0xcf69('0x4f')],'erlangCalls':_0x2af301[_0xcf69('0x50')],'erlangCallToSecond':_0x2af301[_0xcf69('0x51')],'erlangAbandonmentRate':_0x2af301[_0xcf69('0x52')],'erlangBusyFactor':_0x2af301[_0xcf69('0x53')],'startPredictive':_0x2af301[_0xcf69('0x54')],'startProgressive':_0x2af301['startProgressive']};if(_0x2af301[_0xcf69('0x55')]){_0xdc66a[_0xcf69('0x55')]={'id':_0x2af301['Trunk']['id'],'name':_0x2af301[_0xcf69('0x55')]['name'],'active':_0x2af301[_0xcf69('0x55')]['active'],'callerid':_0x2af301['Trunk'][_0xcf69('0x56')]};}if(_0x2af301[_0xcf69('0x57')]){_0xdc66a[_0xcf69('0x57')]={'id':_0x2af301[_0xcf69('0x57')]['id'],'name':_0x2af301[_0xcf69('0x57')][_0xcf69('0x27')]};}var _0x5aa1e0=md5(JSON['stringify'](_0xdc66a));if(_0x2af301[_0xcf69('0x58')]!==_0x5aa1e0){_0x2af301[_0xcf69('0x58')]=_0x5aa1e0;emit(util[_0xcf69('0x59')](_0xcf69('0x5a'),_0xdc66a[_0xcf69('0x27')]),_0xcf69('0x5b'),_0xdc66a);}}}function emitVoiceQueueChannelRemove(_0x474009){logger[_0xcf69('0x5c')](_0xcf69('0x5d'),JSON[_0xcf69('0x5e')](_0x474009));emit(util[_0xcf69('0x59')](_0xcf69('0x5a'),_0x474009[_0xcf69('0x27')]),_0xcf69('0x5f'),_0x474009);io[_0xcf69('0x24')](_0xcf69('0x60'),_0x474009);}function notSendMessagesQueue(_0x3858e5){if(_0x3858e5[_0xcf69('0x61')]){if(_0x3858e5[_0xcf69('0x4f')]===0x0&&_0x3858e5[_0xcf69('0x2c')]===0x0){_0x3858e5[_0xcf69('0x61')]=![];_0x3858e5['available']=0x0;_0x3858e5['paused']=0x0;_0x3858e5[_0xcf69('0x4e')]=_0xcf69('0x62');ut[_0xcf69('0x63')](_0xcf69('0x64'),_0x3858e5['name']+_0xcf69('0x65'));}else{_0x3858e5[_0xcf69('0x4e')]=_0xcf69('0x66');ut[_0xcf69('0x63')](_0xcf69('0x64'),_0x3858e5['name']+_0xcf69('0x67'));}emitCampaignPreview(_0x3858e5);}}Preview[_0xcf69('0xe')]['loopCampaigns']=function(){var _0x2196c1=this;setInterval(function(){_0x2196c1[_0xcf69('0x68')]();},0x7cf);};Preview[_0xcf69('0xe')]['syncCampaigns']=function(){var _0xfdd4ed=this['campaignsPreview'];this[_0xcf69('0x16')]+=0x1;for(var _0x3b32bd in _0xfdd4ed){if(_0xfdd4ed['hasOwnProperty'](_0x3b32bd)&&(_0xfdd4ed[_0x3b32bd]['dialMethod']===_0xcf69('0x69')||_0xfdd4ed[_0x3b32bd][_0xcf69('0x6a')]===_0xcf69('0x6b'))&&_0xfdd4ed[_0x3b32bd]['type']==='outbound'){if(this[_0xcf69('0x16')]>0x7){this[_0xcf69('0x16')]=0x0;this['clearZombieChannels']();}}if(_0xfdd4ed[_0xcf69('0x6c')](_0x3b32bd)&&_0xfdd4ed[_0x3b32bd][_0xcf69('0x6a')]===_0xcf69('0x69')&&_0xfdd4ed[_0x3b32bd][_0xcf69('0x25')]===_0xcf69('0x26')){if(_0xfdd4ed[_0x3b32bd][_0xcf69('0x33')]){this['setMessage'](_0xfdd4ed[_0x3b32bd]);if(_0xfdd4ed[_0x3b32bd][_0xcf69('0x6d')])this[_0xcf69('0x6e')](_0xfdd4ed[_0x3b32bd]);}else{notSendMessagesQueue(_0xfdd4ed[_0x3b32bd]);}}}};Preview[_0xcf69('0xe')]['clearZombieChannel']=function(_0x1a1270){var _0x49aa77=this;this[_0xcf69('0x6f')][_0xcf69('0xf')](function(){if(!_[_0xcf69('0x70')](_0x49aa77[_0xcf69('0x14')][_0x1a1270])){loggerAction[_0xcf69('0x5c')]('[clearZombieChannels][talking]',_0x1a1270,'Queue',_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')],_0xcf69('0x72'),JSON['stringify'](_0x49aa77['campaignsPreview'][_0x49aa77['actions'][_0x1a1270][_0xcf69('0x71')]][_0xcf69('0x4f')]),_0xcf69('0x73'),JSON['stringify'](_0x49aa77[_0xcf69('0x11')][_0x49aa77['actions'][_0x1a1270][_0xcf69('0x71')]]['pTalking']),JSON[_0xcf69('0x5e')](_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x74')]),JSON[_0xcf69('0x5e')](_[_0xcf69('0x75')](_0x49aa77[_0xcf69('0x14')][_0x1a1270],[_0xcf69('0x76'),_0xcf69('0x77'),_0xcf69('0x78'),_0xcf69('0x79')])));return ami[_0xcf69('0x7a')]({'action':'status','channel':_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x7b')]})[_0xcf69('0x7c')](function(_0x5391ad){if(_0x5391ad[_0xcf69('0x4e')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x49aa77[_0xcf69('0x14')][_0x1a1270]){ut[_0xcf69('0x7d')](_0x49aa77[_0xcf69('0x11')][_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]],_0xcf69('0x7e'));if(_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x74')]===!![]){ut[_0xcf69('0x7f')](_0x49aa77[_0xcf69('0x11')][_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]],_0xcf69('0x7e'));ut['loggerError'](_0xcf69('0x80')+_0x1a1270,_0x49aa77[_0xcf69('0x14')][_0x1a1270][_0xcf69('0x71')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x1a1270,_0x49aa77[_0xcf69('0x14')][_0x1a1270]['queue']);delete _0x49aa77[_0xcf69('0x14')][_0x1a1270];}},0x2328);}});}});};Preview[_0xcf69('0xe')]['clearZombieChannels']=function(){var _0x3d9387=this;loggerAction['info']('[action]',_[_0xcf69('0x81')](this[_0xcf69('0x14')]));for(var _0x27225f in this[_0xcf69('0x14')]){if(_0x3d9387['actions'][_0xcf69('0x6c')](_0x27225f)){_0x3d9387[_0xcf69('0x82')](_0x27225f);}}};Preview[_0xcf69('0xe')]['recallMe']=function(_0x5ce3b4){var _0x31d4fe=this;rpcDb[_0xcf69('0x83')](_0x5ce3b4['id'],ut[_0xcf69('0x84')](this['agents']))['then'](function(_0x53d3a3){if(!_['isNil'](_0x53d3a3)){for(var _0x5d036b=0x0;_0x5d036b<_0x53d3a3['length'];_0x5d036b+=0x1){if(ut[_0xcf69('0x85')](_0x53d3a3[_0x5d036b][_0xcf69('0x86')])<_0x5ce3b4['dialRecallMeTimeout']*0x3c){if(_0x53d3a3[_0x5d036b][_0xcf69('0x87')]&&!_0x53d3a3[_0x5d036b][_0xcf69('0x87')][_0xcf69('0x88')]){_0x31d4fe[_0xcf69('0x89')](_0x53d3a3[_0x5d036b]['id'])[_0xcf69('0x8a')](ut[_0xcf69('0x8b')]('[RecallMe]'))['catch'](ut[_0xcf69('0x8b')](_0xcf69('0x8c')));}else{rpcDb[_0xcf69('0x8d')](_0x53d3a3[_0x5d036b]['id']);}}else{var _0x3c6746=new Action(_0x53d3a3[_0x5d036b],_0x5ce3b4);_0x3c6746['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5ce3b4['outboundReCallsDay']+=0x1;ut[_0xcf69('0x8e')](_0x3c6746,0x17,_0xcf69('0x8f'));if(_0x5ce3b4[_0xcf69('0x90')]){rpcDb[_0xcf69('0x91')](ut[_0xcf69('0x92')](_0x53d3a3[_0x5d036b]));rpcDb[_0xcf69('0x93')](_0x3c6746,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xcf69('0x8e')](_0x3c6746,0x16,_0xcf69('0x94'));rpcDb[_0xcf69('0x93')](_0x3c6746,_0xcf69('0x95'));rpcDb[_0xcf69('0x96')](_0x3c6746,_0xcf69('0x95'));}}}}})[_0xcf69('0x7c')](ut[_0xcf69('0x8b')](_0xcf69('0x97')));};Preview[_0xcf69('0xe')][_0xcf69('0x98')]=function(_0x570b2a){_0x570b2a[_0xcf69('0x61')]=!![];if(ut[_0xcf69('0x99')](_0x570b2a[_0xcf69('0x2b')])){_0x570b2a['message']=_0xcf69('0x9a');}else if(!ut['isActive'](_0x570b2a[_0xcf69('0x33')])){_0x570b2a['message']='NOT_ACTIVE';}else if(!this[_0xcf69('0x9b')](_0x570b2a[_0xcf69('0x55')])){if(!this[_0xcf69('0x9b')](_0x570b2a[_0xcf69('0x9c')])){_0x570b2a[_0xcf69('0x4e')]='TRUNK_IS_NOT_REACHABLE';}else{_0x570b2a[_0xcf69('0x4e')]=_0xcf69('0x9d');}}else{_0x570b2a[_0xcf69('0x4e')]='ACTIVE';}emitCampaignPreview(_0x570b2a);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x39db20,_0x27d946,_0x49513e){var _0x26829e=this;var _0x4de575=this[_0xcf69('0x14')][_0x27d946];var _0x3b76ce=this[_0xcf69('0x11')][_0x4de575[_0xcf69('0x71')]];var _0x34feec;var _0x4c97ec=![];var _0x59b652=0x2;var _0x277996=0x3;if(_0x3b76ce){switch(_0x49513e){case'1':_0x3b76ce['outboundNoSuchCallsDay']+=0x1;_0x4de575[_0xcf69('0x9e')]+=0x1;_0x4de575['countglobal']=ut['totalGlobal'](_0x4de575);ut['logCustomer'](_0x4de575,0x0,_0xcf69('0x9f'));ami[_0xcf69('0x24')](_0xcf69('0xa0'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xa2')));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][logNoSuch]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'0',_0x3b76ce)['then'](function(_0x3fede7){_0x4c97ec=_0x3fede7[_0xcf69('0xa4')]==0x1;_0x59b652=_0x3b76ce['dialNoSuchNumberRetryFrequency'];_0x277996=_0x3b76ce[_0xcf69('0xa5')];if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xa8'));}else{if(_0x4de575['countnosuchnumberretry']>=_0x3b76ce[_0xcf69('0xa9')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xa8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x4de575,_0xcf69('0x9e'),_0x3b76ce['dialNoSuchNumberRetryFrequency']),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}delete this['actions'][_0x39db20[_0xcf69('0xac')]];}else{_0x4de575[_0xcf69('0x9e')]++;logger['info'](_0xcf69('0xad'),_0x4de575['countnosuchnumberretry']);logger[_0xcf69('0x5c')]('id',_0x4de575[_0xcf69('0xae')]);_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnosuchnumberretry':_0x4de575[_0xcf69('0x9e')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case _0xcf69('0xb1'):var _0x2ff889=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));_0x4de575['responsetime']=_0x2ff889;_0x4de575['answertime']=_0x2ff889;_0x4de575[_0xcf69('0x74')]=!![];_0x3b76ce[_0xcf69('0x2c')]+=0x1;logger[_0xcf69('0x5c')](_0xcf69('0xb3'),_0x4de575[_0xcf69('0xb4')],_0xcf69('0xb5'),_0x3b76ce['name'],_0xcf69('0x73'),_0x3b76ce[_0xcf69('0x2c')]);ami[_0xcf69('0x24')](_0xcf69('0xb6'),ut[_0xcf69('0xa1')](_0x4de575,'connect',this[_0xcf69('0x11')][_0x4de575['queue']]));if(_0x3b76ce['acw']){ami[_0xcf69('0x24')](_0xcf69('0xb7'),ut['buildAcw'](_0x4de575));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xb8'),this[_0xcf69('0x11')][_0x4de575[_0xcf69('0x71')]]));emitVoiceQueueChannelRemove(ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xb8')));_0x3b76ce['outboundAnswerCallsDay']+=0x1;_0x3b76ce[_0xcf69('0x30')]+=0x1;_0x3b76ce[_0xcf69('0x29')]+=0x1;ut['decrementTalkink'](_0x3b76ce,_0xcf69('0xb9'));_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x4,_0xcf69('0xbb'));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xbc'));rpcDb[_0xcf69('0xbd')](_0x4de575);_0x3b76ce[_0xcf69('0xbe')]+=_0x4de575['talktime'];_0x3b76ce[_0xcf69('0x2d')]+=_0x4de575[_0xcf69('0xbf')];logger[_0xcf69('0x5c')](_0xcf69('0xc0'),_0x4de575['uniqueid'],_0xcf69('0xb5'),_0x3b76ce['name'],_0xcf69('0x73'),_0x3b76ce[_0xcf69('0x2c')]);delete this['actions'][_0x39db20['linkedid']];break;case'BUSY':_0x3b76ce[_0xcf69('0x3b')]+=0x1;_0x4de575[_0xcf69('0xc1')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x5,_0xcf69('0xc2'));_0x59b652=_0x3b76ce[_0xcf69('0xc3')];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xc4'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xc5')));rpcDb['createCustomerHistory'](_0x4de575,_0xcf69('0xc6'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'5',_0x3b76ce)[_0xcf69('0x8a')](function(_0x538755){_0x4c97ec=_0x538755['additional']==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xc7'));}else{if(_0x4de575[_0xcf69('0xc1')]>=_0x3b76ce[_0xcf69('0xc8')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xc6'));}else{rpcDb[_0xcf69('0xc9')](ut['scheduledAt'](_0x4de575,_0xcf69('0xc1'),_0x3b76ce[_0xcf69('0xc3')]),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575['countbusyretry']++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countbusyretry':_0x4de575[_0xcf69('0xc1')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case'NOANSWER':_0x3b76ce[_0xcf69('0x3e')]+=0x1;_0x4de575[_0xcf69('0xca')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x3,'NoAnswer');_0x59b652=_0x3b76ce[_0xcf69('0xcb')];_0x277996=_0x3b76ce['callAdditionalPhoneAfterMin'];var _0x9bea83=ut[_0xcf69('0xcc')](_0x4de575,_0x3b76ce);ami[_0xcf69('0x24')](_0xcf69('0xcd'),_0x9bea83);rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xce'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'3',_0x3b76ce)[_0xcf69('0x8a')](function(_0x3748b5){_0x4c97ec=_0x3748b5[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb['createCustomerFinal'](_0x34feec,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x4de575[_0xcf69('0xca')]>=_0x3b76ce[_0xcf69('0xd1')]){rpcDb[_0xcf69('0x96')](_0x4de575,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb['rescheduleContact'](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xca'),_0x3b76ce[_0xcf69('0xcb')]),_0x4de575['unlockAgent'],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575['idContact'],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});break;case _0xcf69('0xd3'):_0x3b76ce[_0xcf69('0xd4')]+=0x1;_0x4de575[_0xcf69('0xd5')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x8,'Congestion');_0x59b652=_0x3b76ce[_0xcf69('0xd6')];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xd7'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xd8')));rpcDb['createCustomerHistory'](_0x4de575,_0xcf69('0xd9'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'8',_0x3b76ce)[_0xcf69('0x8a')](function(_0x1c4364){_0x4c97ec=_0x1c4364[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xda'));}else{if(_0x4de575[_0xcf69('0xd5')]>=_0x3b76ce[_0xcf69('0xdb')]){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xd9'));}else{rpcDb['rescheduleContact'](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xd5'),_0x3b76ce[_0xcf69('0xc3')]),_0x4de575['unlockAgent'],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xd5')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countcongestionretry':_0x4de575[_0xcf69('0xd5')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case _0xcf69('0xdc'):_0x3b76ce[_0xcf69('0x41')]+=0x1;_0x4de575[_0xcf69('0xdd')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x14,'AgentReject');_0x59b652=_0x3b76ce['dialAgentRejectRetryFrequency'];_0x277996=_0x3b76ce[_0xcf69('0xa5')];ami[_0xcf69('0x24')](_0xcf69('0xde'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xdf')));rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xe0'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'20',_0x3b76ce)[_0xcf69('0x8a')](function(_0x101450){_0x4c97ec=_0x101450[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0x14,_0xcf69('0xe1'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xe2'));}else{if(_0x4de575[_0xcf69('0xdd')]>=_0x3b76ce['dialAgentRejectMaxRetry']){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xe2'));}else{rpcDb[_0xcf69('0xc9')](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xdd'),_0x3b76ce['dialAgentRejectRetryFrequency']),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575['countnoanswerretry']}})['then'](function(){_0x26829e['swapAdditionalPhones'](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});break;case _0xcf69('0xe3'):_0x3b76ce[_0xcf69('0x43')]+=0x1;_0x4de575[_0xcf69('0xe4')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut['totalGlobal'](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0xb,_0xcf69('0xe5'));rpcDb['createCustomerHistory'](_0x4de575,'[callProgressDetectingCustomer][logAbandoned]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'11',_0x3b76ce)[_0xcf69('0x8a')](function(_0x2d929b){_0x4c97ec=_0x2d929b[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut['totalGlobal'](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xe6'));}else{if(_0x4de575[_0xcf69('0xe7')]>=_0x3b76ce['dialAbandonedMaxRety']){rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xe6'));}else{rpcDb[_0xcf69('0xc9')](ut[_0xcf69('0xd2')](_0x4de575,_0xcf69('0xe4'),_0x3b76ce[_0xcf69('0xe8')]),_0x4de575[_0xcf69('0xaa')],_0x4de575[_0xcf69('0xab')]);}}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575['countnoanswerretry']}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)['then'](function(){});});}});break;case'18':_0x3b76ce[_0xcf69('0x42')]+=0x1;_0x4de575[_0xcf69('0xe9')]+=0x1;_0x4de575['countglobal']=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x12,_0x39db20[_0xcf69('0xea')]||_0x39db20[_0xcf69('0xeb')]);ami['emit'](_0xcf69('0xec'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xed')));rpcDb[_0xcf69('0x93')](_0x4de575,'[callProgressDetectingCustomer][hangupInAMD]');_0x26829e[_0xcf69('0xa3')](_0x4de575,'18',_0x3b76ce)[_0xcf69('0x8a')](function(_0x5f410a){_0x4c97ec=_0x5f410a[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce[_0xcf69('0xa7')]){_0x34feec=ut['cloneAction'](_0x4de575,0x12,_0xcf69('0xd0'));rpcDb[_0xcf69('0x96')](_0x34feec,_0xcf69('0xee'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xee'));}}else{_0x4de575['countnoanswerretry']++;_0x26829e[_0xcf69('0xaf')]({'id':_0x4de575['idContact'],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});delete this['actions'][_0x39db20[_0xcf69('0xac')]];break;case'19':_0x3b76ce[_0xcf69('0x42')]+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0x13,_0x39db20['cause-txt']||_0x39db20['dialstatus']);ami[_0xcf69('0x24')](_0xcf69('0xec'),ut[_0xcf69('0xa1')](_0x4de575,_0xcf69('0xed')));rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xef'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'18',_0x3b76ce)[_0xcf69('0x8a')](function(_0x54984a){_0x4c97ec=_0x54984a['additional']==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut[_0xcf69('0xcf')](_0x4de575,0xf,_0xcf69('0xd0'));rpcDb['createCustomerFinal'](_0x34feec,_0xcf69('0xef'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,_0xcf69('0xef'));}}else{_0x4de575[_0xcf69('0xca')]++;_0x26829e['incrementPreviewCounters']({'id':_0x4de575[_0xcf69('0xae')],'field':{'countnoanswerretry':_0x4de575[_0xcf69('0xca')]}})[_0xcf69('0x8a')](function(){_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});});}});delete this[_0xcf69('0x14')][_0x39db20[_0xcf69('0xac')]];break;default:if(_0x4de575['dialAnswer']){ut[_0xcf69('0x7f')](_0x3b76ce,_0xcf69('0xf0'));ut[_0xcf69('0xf1')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x3b76ce[_0xcf69('0x27')],_0x39db20);}_0x3b76ce['outboundUnknownCallsDay']+=0x1;_0x4de575[_0xcf69('0xba')]=ut[_0xcf69('0xa6')](_0x4de575);ut[_0xcf69('0x8e')](_0x4de575,0xc,_0x39db20[_0xcf69('0xea')]||_0x39db20[_0xcf69('0xeb')]);_0x59b652=_0x3b76ce['dialAgentRejectRetryFrequency'];_0x277996=_0x3b76ce['callAdditionalPhoneAfterMin'];rpcDb[_0xcf69('0x93')](_0x4de575,_0xcf69('0xf2'));_0x26829e[_0xcf69('0xa3')](_0x4de575,'20',_0x3b76ce)[_0xcf69('0x8a')](function(_0x583821){_0x4c97ec=_0x583821[_0xcf69('0xa4')]==0x1;if(!_0x4c97ec){if(ut[_0xcf69('0xa6')](_0x4de575)>=_0x3b76ce['dialGlobalMaxRetry']){_0x34feec=ut['cloneAction'](_0x4de575,0xf,'Global');rpcDb['createCustomerFinal'](_0x34feec,_0xcf69('0xf3'));}else{rpcDb[_0xcf69('0x96')](_0x4de575,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xcf69('0x14')][_0x39db20['linkedid']];}else{_0x26829e[_0xcf69('0xb0')](_0x4de575,_0x59b652,_0x277996)[_0xcf69('0x8a')](function(){});}});}if(!(_0x4de575[_0xcf69('0x74')]&&_0x49513e==='16')){ut['updateOriginated'](_0x3b76ce,'[callProgressDetectingCustomer]');logger[_0xcf69('0x5c')](_0xcf69('0xf4'),_0x4de575[_0xcf69('0xb4')],'\x20Queue',_0x3b76ce[_0xcf69('0x27')],_0xcf69('0x72'),_0x3b76ce['originated']);}if(_0x49513e!==_0xcf69('0xb1')){delete this[_0xcf69('0x14')][_0x39db20['linkedid']];delete this[_0xcf69('0x14')][_0x39db20['destlinkedid']];}}};Preview[_0xcf69('0xe')][_0xcf69('0xf5')]=function(_0x24fcbd,_0x3a263e,_0x2a38c5){if(_[_0xcf69('0xf6')](_0x3a263e)&&'object'!==typeof _0x3a263e){return;}if(_[_0xcf69('0xf6')](_0x2a38c5)&&_0xcf69('0xf7')!==typeof _0x2a38c5){return;}switch(_0x2a38c5[_0xcf69('0xf8')]){case'0':ut[_0xcf69('0xf9')](_0x24fcbd,0x0,'NoSuchNumber');rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfa'));break;case'3':ut[_0xcf69('0xf9')](_0x24fcbd,0x3,'NoAnswer');rpcDb[_0xcf69('0xfb')](_0x24fcbd,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xcf69('0xf9')](_0x24fcbd,0x5,_0xcf69('0xc2'));rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfc'));break;case'8':ut['logAgent'](_0x24fcbd,0x8,_0xcf69('0xfd'));rpcDb['createAgentHistory'](_0x24fcbd,_0xcf69('0xfe'));break;case'22':ut[_0xcf69('0xf9')](_0x24fcbd,0x16,_0xcf69('0xff'));rpcDb[_0xcf69('0xfb')](_0x24fcbd,_0xcf69('0x100'));break;default:ut['logAgent'](_0x24fcbd,0xc,_0x2a38c5['reason']);rpcDb[_0xcf69('0xfb')](_0x24fcbd,_0xcf69('0xfe'));}ut[_0xcf69('0x7d')](_0x3a263e,'[callProgressDetectingAgent]');logger[_0xcf69('0x5c')](_0xcf69('0x101'),_0x24fcbd[_0xcf69('0xb4')],_0xcf69('0xb5'),_0x3a263e[_0xcf69('0x27')],_0xcf69('0x72'),_0x3a263e['originated']);delete this[_0xcf69('0x14')][_0x24fcbd[_0xcf69('0xb4')]];};Preview['prototype'][_0xcf69('0xa3')]=function(_0xc862a3,_0x42cdf4,_0x1fca30){return Promise['resolve']()[_0xcf69('0x8a')](cmHopperAdditionalPhone[_0xcf69('0xa3')](_0xc862a3,_0x42cdf4,_0x1fca30))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')]('[verifyAdditionalPhone]\x20'));};Preview['prototype'][_0xcf69('0xb0')]=function(_0x1f1fd3,_0x226271,_0x5cfba7){return Promise[_0xcf69('0x102')]()[_0xcf69('0x8a')](cmHopperAdditionalPhone[_0xcf69('0xb0')](_0x1f1fd3,_0x226271,_0x5cfba7))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')](_0xcf69('0x103')));};Preview[_0xcf69('0xe')][_0xcf69('0xaf')]=function(_0x4ea0d9){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0xcf69('0xaf')](_0x4ea0d9))[_0xcf69('0x7c')](logger[_0xcf69('0x5c')](_0xcf69('0x104')));};Preview[_0xcf69('0xe')]['checkInBlack']=function(_0x73f616,_0x1c07ae,_0x5e0014,_0x58379e,_0x2aee8f){var _0xbf8f03=this;return new Promise(function(_0x2d9164,_0x298937){if(_[_0xcf69('0x70')](_0x1c07ae)||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x105')])||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x106')])||_[_0xcf69('0x70')](_0x1c07ae[_0xcf69('0x78')])){_0x298937(ut[_0xcf69('0x4e')](_0xcf69('0x107'),_0x58379e,_0x2aee8f));return;}var _0x448da4=uuid['v4']();var _0x149120=_0xbf8f03['campaignsPreview'][_0x1c07ae[_0xcf69('0x108')][_0xcf69('0x27')]];var _0x5b4fdb=_0x5e0014?_0xbf8f03[_0xcf69('0x15')][_0x5e0014]['id']:undefined;_0xbf8f03[_0xcf69('0x14')][_0x448da4]=new Action(_0x1c07ae,_0x149120,_0x448da4,_0x5e0014,_0x5b4fdb);var _0x5047d4=_0xbf8f03['actions'][_0x448da4];_0x5047d4[_0xcf69('0xaa')]=_0x58379e;_0x5047d4[_0xcf69('0xab')]=_0x2aee8f;_0x5047d4['lookAgent']=_0x5e0014;if(_[_0xcf69('0x109')](_0x73f616)){_0xbf8f03[_0xcf69('0x10a')](_0x5047d4,_0x149120,_0x1c07ae,_0x5e0014)['then'](function(_0x58c12b){logger[_0xcf69('0x5c')]('[Preview][execCall][success]',_0xcf69('0x10b')+_0x5047d4[_0xcf69('0x71')]+_0xcf69('0x10c')+_0x5047d4[_0xcf69('0xae')],JSON[_0xcf69('0x5e')](_0x58c12b));ami['emit'](_0xcf69('0x10d'),ut['buildObj'](_0x5047d4,_0xcf69('0x10e'),_0xbf8f03[_0xcf69('0x11')][_0x5047d4['queue']]));_0x2d9164(ut[_0xcf69('0x4e')](_0xcf69('0x10f')));})['catch'](function(_0x5c435d){ut[_0xcf69('0x63')](_0xcf69('0x110'),_0x5c435d);_0x298937(ut['message'](_0xcf69('0x111'),_0x58379e,_0x2aee8f));});}else{_0x149120[_0xcf69('0x3a')]+=0x1;ut[_0xcf69('0x112')](_0x5047d4);rpcDb[_0xcf69('0x113')](_0x5047d4,_0xcf69('0x114'));delete _0xbf8f03[_0xcf69('0x14')][_0x448da4];_0x298937(ut['message'](_0xcf69('0x115'),_0x58379e,_0x2aee8f));}});};Preview[_0xcf69('0xe')]['isTrunkReachable']=function(_0x8cb383){return!_['isNil'](_0x8cb383)&&!_[_0xcf69('0x70')](_0x8cb383[_0xcf69('0x27')])&&!_['isNil'](_0x8cb383[_0xcf69('0x116')])&&_0x8cb383[_0xcf69('0x116')]&&!_[_0xcf69('0x70')](this[_0xcf69('0x13')][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383[_0xcf69('0x27')])])&&!_[_0xcf69('0x70')](this[_0xcf69('0x13')][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383[_0xcf69('0x27')])]['status'])&&(this[_0xcf69('0x13')][util[_0xcf69('0x59')]('SIP/%s',_0x8cb383['name'])][_0xcf69('0x118')]==='reachable'||this['trunks'][util[_0xcf69('0x59')](_0xcf69('0x117'),_0x8cb383['name'])][_0xcf69('0x118')]===_0xcf69('0x119'));};Preview[_0xcf69('0xe')][_0xcf69('0x89')]=function(_0x4382ff,_0x412f67){return this[_0xcf69('0x11a')](_0x4382ff,_0x412f67)[_0xcf69('0x8a')](function(_0x3778a7){return _[_0xcf69('0x75')](_0x3778a7,[_0xcf69('0x4e')]);})[_0xcf69('0x7c')](function(_0x19b6e8){if(_0x19b6e8[_0xcf69('0x11b')]){rpcDb[_0xcf69('0x11c')](_0x4382ff);}if(_0x19b6e8[_0xcf69('0x116')]){rpcDb[_0xcf69('0x8d')](_0x4382ff);}throw _[_0xcf69('0x75')](_0x19b6e8,['message']);});};Preview['prototype'][_0xcf69('0x11a')]=function(_0x31193b,_0x51961f){var _0x4c4756=this;var _0x18ee29,_0x153094;return rpcDb['getContactPreview'](_0x31193b)[_0xcf69('0x8a')](function(_0x36f78a){if(!_[_0xcf69('0x70')](_0x36f78a[0x0])){_0x153094=_0x36f78a[0x0][_0xcf69('0x11d')]?![]:!![];_0x18ee29=_0x36f78a[0x0]['recallme']?!![]:![];_0x18ee29=_0x51961f?!![]:_0x18ee29;}var _0x33d6af=_0x4c4756[_0xcf69('0x11e')](_0x36f78a);if(_0x33d6af[_0xcf69('0x11f')]){rpcDb[_0xcf69('0x120')](_[_0xcf69('0x75')](_0x36f78a[0x0],[_0xcf69('0x78'),_0xcf69('0x106')]))['then'](function(_0x293c17){_0x4c4756[_0xcf69('0x121')](_0x293c17,_0x36f78a[0x0],_0x51961f,_0x153094,_0x18ee29)[_0xcf69('0x8a')](function(_0x23d5cb){return _0x23d5cb;})[_0xcf69('0x7c')](function(_0x4d5aa2){throw _0x4d5aa2;});})[_0xcf69('0x7c')](function(_0x555261){ut[_0xcf69('0x63')](_0xcf69('0x122'),_0x555261);throw ut[_0xcf69('0x4e')]('Call\x20unsuccessful',_0x153094,_0x18ee29);});}else{throw ut['message'](_0x33d6af[_0xcf69('0x4e')],_0x153094,_0x18ee29);}})[_0xcf69('0x7c')](function(_0x3f6d7b){ut[_0xcf69('0x63')](_0xcf69('0x123'),_0x3f6d7b);throw ut['message'](_0xcf69('0x124'),![],!![]);});};Preview[_0xcf69('0xe')][_0xcf69('0x11e')]=function(_0x4a61dc){if(_[_0xcf69('0x70')](_0x4a61dc)||_['isEmpty'](_0x4a61dc)||!_[_0xcf69('0x70')](_0x4a61dc[0x0][_0xcf69('0x87')])&&_[_0xcf69('0x70')](_0x4a61dc[0x0]['Agent']['name'])){ut[_0xcf69('0x63')](_0xcf69('0x125'),_0x4a61dc);return{'isValid':![],'message':_0xcf69('0x126')};}var _0x20852b=this[_0xcf69('0x11')][_0x4a61dc[0x0][_0xcf69('0x108')][_0xcf69('0x27')]];_0x20852b[_0xcf69('0x4e')]=_0xcf69('0x9d');if(_['isNil'](_0x20852b)){ut[_0xcf69('0x63')]('[Preview][validateContact][Empty\x20Campaign]',_0x20852b);return{'isValid':![],'message':_0xcf69('0x127')};}if(!this[_0xcf69('0x9b')](_0x20852b[_0xcf69('0x55')])){ut[_0xcf69('0x63')](_0xcf69('0x128'),_0xcf69('0x129')+_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12a'));if(!this[_0xcf69('0x9b')](_0x20852b['TrunkBackup'])){ut[_0xcf69('0x63')](_0xcf69('0x128'),_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12b'));return{'isValid':![],'message':_0xcf69('0x12c')};}}if(!ut[_0xcf69('0x12d')](_0x20852b['dialActive'])){ut['logger'](_0xcf69('0x12e'),_0x20852b[_0xcf69('0x27')]+_0xcf69('0x12f'));return{'isValid':![],'message':_0xcf69('0x129')+_0x20852b[_0xcf69('0x27')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xcf69('0x130')};};Preview['prototype'][_0xcf69('0x10a')]=function(_0x3133f5,_0x560391,_0xb84f92,_0x44361c){var _0x1d2265=this;return new Promise(function(_0x10eb7e,_0x4d4741){var _0x28e505=_0x3133f5['uniqueid'];var _0x2f64fb=_0x1d2265[_0xcf69('0x9b')](_0x560391['Trunk'])?util['format'](_0xcf69('0x131'),_0x560391[_0xcf69('0x55')][_0xcf69('0x27')],_[_0xcf69('0x70')](_0x560391[_0xcf69('0x37')])?'':_0x560391['dialPrefix'][_0xcf69('0x132')]()||'',_0x560391[_0xcf69('0x133')]>0x0?_0xb84f92[_0xcf69('0x106')][_0xcf69('0x134')](_0x560391[_0xcf69('0x133')]):_0xb84f92[_0xcf69('0x106')]):util['format'](_0xcf69('0x131'),_['isNil'](_0x560391[_0xcf69('0x9c')])?_0x560391[_0xcf69('0x55')]['name']:_0x560391[_0xcf69('0x9c')][_0xcf69('0x27')],_[_0xcf69('0x70')](_0x560391['dialPrefix'])?'':_0x560391[_0xcf69('0x37')]['trim']()||'',_0x560391[_0xcf69('0x133')]>0x0?_0xb84f92[_0xcf69('0x106')][_0xcf69('0x134')](_0x560391[_0xcf69('0x133')]):_0xb84f92[_0xcf69('0x106')]);var _0x50d05f=_0x1d2265[_0xcf69('0x9b')](_0x560391[_0xcf69('0x55')])?ut[_0xcf69('0x135')](_0x560391[_0xcf69('0x55')][_0xcf69('0x56')],_0x560391['dialOriginateCallerIdName'],_0x560391[_0xcf69('0x136')]>0x0?ut[_0xcf69('0x137')](_0x560391['dialOriginateCallerIdNumber'],_0x560391[_0xcf69('0x136')]):_0x560391['dialOriginateCallerIdNumber']):ut[_0xcf69('0x135')](_[_0xcf69('0x70')](_0x560391[_0xcf69('0x9c')])?_0x560391[_0xcf69('0x55')]['callerid']:_0x560391[_0xcf69('0x9c')][_0xcf69('0x56')],_0x560391[_0xcf69('0x34')],_0x560391[_0xcf69('0x136')]>0x0?ut['getCallerIdRandom'](_0x560391[_0xcf69('0x35')],_0x560391[_0xcf69('0x136')]):_0x560391[_0xcf69('0x35')]);if(_0x50d05f){_0x3133f5[_0xcf69('0x138')]=ut[_0xcf69('0x139')](_0x50d05f);_0x3133f5[_0xcf69('0x13a')]=ut[_0xcf69('0x13b')](_0x50d05f);}var _0x34c2fb=ut[_0xcf69('0x13c')](_0x560391,_0xb84f92,_0x2f64fb,_0x50d05f,_0x28e505,_0x3133f5);_[_0xcf69('0x13d')](_0x3133f5,ut[_0xcf69('0x13e')](_0x34c2fb));_0x3133f5[_0xcf69('0x13f')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));_0x560391[_0xcf69('0x140')]=_0x34c2fb;ami[_0xcf69('0x7a')](ut[_0xcf69('0x141')](_0x3133f5,_0x560391,_0x34c2fb,_0x3133f5[_0xcf69('0xab')],_0x44361c))['then'](function(_0xd69e52){_0x560391[_0xcf69('0x4f')]+=0x1;logger[_0xcf69('0x5c')](_0xcf69('0x142'),_0x28e505,_0xcf69('0xb5'),_0x560391[_0xcf69('0x27')],'originated:\x20',_0x560391[_0xcf69('0x4f')]);_0x10eb7e(_0xd69e52);})[_0xcf69('0x7c')](function(_0xdc9e6d){ut[_0xcf69('0xf9')](_0x3133f5,0xe,'OriginateError');rpcDb[_0xcf69('0xfb')](_0x3133f5,'[originateFailure][logOriginateFailure]');_0x4d4741(_0xdc9e6d);});});};Preview['prototype'][_0xcf69('0x143')]=function(_0x5634ea){if(this[_0xcf69('0x14')][_0x5634ea[_0xcf69('0xac')]]){this['actions'][_0x5634ea[_0xcf69('0xac')]][_0xcf69('0x7b')]=_0x5634ea['channel'];}};Preview[_0xcf69('0xe')][_0xcf69('0x144')]=function(_0x37fe4b){var _0x10a6e4=this;var _0xbc12f1=this[_0xcf69('0x14')][_0x37fe4b[_0xcf69('0x145')]];if(_0xbc12f1){if(_0xbc12f1[_0xcf69('0x146')]&&this[_0xcf69('0x15')][_0xbc12f1[_0xcf69('0x146')]]){ut[_0xcf69('0x147')](_0xbc12f1,this[_0xcf69('0x15')][_0xbc12f1['lookAgent']][_0xcf69('0x27')],this[_0xcf69('0x15')][_0xbc12f1['lookAgent']]['id']);}var _0xb41039=_[_0xcf69('0x148')](_0xbc12f1);_0xb41039[_0xcf69('0x149')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));var _0x25cdea=_0x10a6e4[_0xcf69('0x11')][_0xbc12f1['queue']];if(ut[_0xcf69('0x14a')](_0x37fe4b['response'])){if(_0xbc12f1[_0xcf69('0xaa')]){rpcDb[_0xcf69('0x11c')](_0xbc12f1[_0xcf69('0xae')]);}if(_0xbc12f1['activeContact']){rpcDb[_0xcf69('0x8d')](_0xbc12f1['idContact']);}ami[_0xcf69('0x24')]('custom:agentringnoanswer',ut[_0xcf69('0xa1')](_0xbc12f1,_0xcf69('0x14b'),this[_0xcf69('0x11')][_0xbc12f1['queue']]));this[_0xcf69('0xf5')](_0xb41039,_0x25cdea,_0x37fe4b);}else{_0xbc12f1[_0xcf69('0x13f')]=moment()[_0xcf69('0x59')](_0xcf69('0xb2'));ut[_0xcf69('0xf9')](_0xb41039,0x4,'Answer');rpcDb[_0xcf69('0xfb')](_0xb41039,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xcf69('0xe')]['syncHangup']=function(_0x6c8589){var _0x141c2c=this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]];var _0x898385;if(_0x141c2c){_0x898385=this[_0xcf69('0x11')][_0x141c2c[_0xcf69('0x71')]];logger[_0xcf69('0x5c')]('[syncHangup][talking]',_0x6c8589[_0xcf69('0xac')],'\x20Queue',_0x898385[_0xcf69('0x27')],_0xcf69('0x73'),_0x898385[_0xcf69('0x2c')]);}if(this[_0xcf69('0x14')][_0x6c8589['linkedid']]&&_0x6c8589[_0xcf69('0xac')]!==_0x6c8589['uniqueid']){if(_0x6c8589[_0xcf69('0x14c')]==='16'&&this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){this[_0xcf69('0x14d')](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')]);}else if(this['actions'][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger['info'](_0xcf69('0x14e'),_0x6c8589['linkedid'],_0x6c8589['cause'],'\x20Queue',_0x898385[_0xcf69('0x27')],_0xcf69('0x73'),_0x898385['pTalking']);this['callProgressDetectingCustomer'](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')]);}}else if(_0x141c2c&&_[_0xcf69('0x70')](_0x141c2c['statedesc'])&&_0x898385[_0xcf69('0x14f')]&&_0x6c8589[_0xcf69('0xac')]===_0x6c8589['uniqueid']&&_[_0xcf69('0x70')](_0x6c8589['reason'])&&_0x6c8589[_0xcf69('0x14c')]==='16'&&_0x6c8589[_0xcf69('0x150')]==='6'&&_[_0xcf69('0xf6')](_0x141c2c['transfer'])){if(_0x141c2c[_0xcf69('0xaa')]){rpcDb[_0xcf69('0x11c')](_0x141c2c[_0xcf69('0xae')]);}if(_0x141c2c['activeContact']){rpcDb[_0xcf69('0x8d')](_0x141c2c[_0xcf69('0xae')]);}_0x6c8589[_0xcf69('0xf8')]='22';this[_0xcf69('0xf5')](_0x141c2c,_0x898385,_0x6c8589);}else if(_0x141c2c&&_0x141c2c['transfer']){if(_0x6c8589[_0xcf69('0x14c')]==='16'&&this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger[_0xcf69('0x5c')](_0xcf69('0x151'),_0x6c8589[_0xcf69('0xac')],_0x6c8589[_0xcf69('0x14c')],'\x20Queue',_0x898385[_0xcf69('0x27')],'pTalking:\x20',_0x898385[_0xcf69('0x2c')]);this['callProgressDetectingCustomer'](_0x6c8589,_0x6c8589['linkedid'],_0x6c8589['cause']);}else if(this[_0xcf69('0x14')][_0x6c8589[_0xcf69('0xac')]][_0xcf69('0x74')]){logger['info'](_0xcf69('0x14e'),_0x6c8589['linkedid'],_0x6c8589[_0xcf69('0x14c')],_0xcf69('0xb5'),_0x898385['name'],_0xcf69('0x73'),_0x898385[_0xcf69('0x2c')]);this[_0xcf69('0x14d')](_0x6c8589,_0x6c8589[_0xcf69('0xac')],_0x6c8589['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x4f3c16){if(this[_0xcf69('0x14')][_0x4f3c16[_0xcf69('0x152')]]&&_0x4f3c16[_0xcf69('0x152')]!==_0x4f3c16[_0xcf69('0x153')]){this[_0xcf69('0x14d')](_0x4f3c16,_0x4f3c16[_0xcf69('0x152')],_0x4f3c16['dialstatus']);}};Preview['prototype'][_0xcf69('0x19')]=function(_0x5cbc98){if(this[_0xcf69('0x14')][_0x5cbc98[_0xcf69('0xac')]]&&_0x5cbc98[_0xcf69('0xac')]!==_0x5cbc98[_0xcf69('0xb4')]&&!this[_0xcf69('0x14')][_0x5cbc98[_0xcf69('0xac')]][_0xcf69('0x74')]){if(_0x5cbc98[_0xcf69('0x14c')]==='1'){this[_0xcf69('0x14d')](_0x5cbc98,_0x5cbc98[_0xcf69('0xac')],_0x5cbc98['cause']);}}};Preview['prototype'][_0xcf69('0x154')]=function(_0x499f41,_0x138ec9,_0x255fa8){if(this[_0xcf69('0x14')][_0x499f41]){if(_[_0xcf69('0x70')](this['actions'][_0x499f41][_0xcf69('0x140')])){this[_0xcf69('0x14')][_0x499f41][_0xcf69('0x140')]={};}this[_0xcf69('0x14')][_0x499f41][_0xcf69('0x140')][_0x138ec9]=_0x255fa8;}};Preview['prototype'][_0xcf69('0x1e')]=function(_0xe46b41){try{if(!_[_0xcf69('0x70')](_0xe46b41)){if(ut[_0xcf69('0x155')](_[_0xcf69('0x156')](_0xe46b41['variable'])[0x0])){this['addVariable'](_0xe46b41[_0xcf69('0xb4')],_[_0xcf69('0x156')](_0xe46b41[_0xcf69('0x157')])[0x0],_0xe46b41[_0xcf69('0x158')]);}}}catch(_0x3487e9){logger[_0xcf69('0x159')](_0xcf69('0x15a'),util[_0xcf69('0x15b')](_0x3487e9,{'showHidden':![],'depth':null}));}};Preview[_0xcf69('0xe')][_0xcf69('0x20')]=function(_0x110fe8){if(_0x110fe8){if(this[_0xcf69('0x14')][_0x110fe8['transfertargetlinkedid']]){this['actions'][_0x110fe8[_0xcf69('0x15c')]][_0xcf69('0x15d')]=!![];}}};Preview[_0xcf69('0xe')][_0xcf69('0x22')]=function(_0x244fad){if(_0x244fad){if(this['actions'][_0x244fad[_0xcf69('0x15e')]]){this[_0xcf69('0x14')][_0x244fad['transfererlinkedid']][_0xcf69('0x15d')]=!![];}}};module[_0xcf69('0x15f')]=Preview;
\ No newline at end of file
index bf6b722..9a30fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ded=['resolve','createHistory','catch','[createHistory]\x20','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','endtime','connectedlinename','membername','context','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopperFinal','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','inspect'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0x6ded,0xf6));var _0xd6de=function(_0x23f3fe,_0x187552){_0x23f3fe=_0x23f3fe-0x0;var _0x309949=_0x6ded[_0x23f3fe];return _0x309949;};'use strict';var util=require(_0xd6de('0x0'));var BPromise=require(_0xd6de('0x1'));var logger=require(_0xd6de('0x2'))(_0xd6de('0x3'));var _=require('lodash');var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0xd6de('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xd6de('0x5'));var agentReportPreview=require(_0xd6de('0x6'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x43e891){return function(_0x345abc){logger[_0xd6de('0x7')](_0x43e891,util[_0xd6de('0x8')](_0x345abc,{'showHidden':![],'depth':null}));};}function create(_0x6afe41){return BPromise[_0xd6de('0x9')]()['then'](cmHopperHistory[_0xd6de('0xa')](_0x6afe41))[_0xd6de('0xb')](loggerCatch(_0xd6de('0xc')));}function createAgent(_0x1ad18a){return BPromise['resolve']()['then'](agentReportPreview[_0xd6de('0xa')](_0x1ad18a))[_0xd6de('0xb')](loggerCatch(_0xd6de('0xc')));}function moveContact(_0x4782d3){return BPromise[_0xd6de('0x9')]()[_0xd6de('0xd')](cmHopper[_0xd6de('0xe')](_0x4782d3,!![]))[_0xd6de('0xb')](loggerCatch(_0xd6de('0xf')));}exports['checkIsBlackList']=function(_0x312c48){return BPromise['resolve']()[_0xd6de('0xd')](cmHopperBlack['checkIsBlackList'](_0x312c48))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x10')));};exports[_0xd6de('0x11')]=function(_0x42a7f0){return BPromise[_0xd6de('0x9')]()[_0xd6de('0xd')](cmHopper['getContactPreview'](_0x42a7f0))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x12')));};exports['createHistory']=function(_0x29f12d,_0x187fdc){create(_0x29f12d)['catch'](loggerCatch(_0x187fdc));moveContact(_0x29f12d)[_0xd6de('0xb')](loggerCatch(_0x187fdc));};exports['createAgentHistory']=function(_0x7a8ae2,_0x5adeba){createAgent(_0x7a8ae2)[_0xd6de('0xb')](loggerCatch(_0x5adeba));};exports['createCustomerHistory']=function(_0x3b4c7a,_0x4cbb72){create(_0x3b4c7a)[_0xd6de('0xb')](loggerCatch(_0x4cbb72));};exports['createCustomerFinal']=function(_0x567c1d,_0x2dc96e){moveContact(_0x567c1d)[_0xd6de('0xb')](loggerCatch(_0x2dc96e));};exports[_0xd6de('0x13')]=function(_0x5a22d9,_0x11435f,_0x51c3f7){if(_0x11435f){_0x5a22d9[_0xd6de('0x14')]=null;}if(_0x51c3f7){_0x5a22d9[_0xd6de('0x15')]=![];}return BPromise[_0xd6de('0x9')]()[_0xd6de('0xd')](cmHopper[_0xd6de('0x13')](_0x5a22d9))[_0xd6de('0xb')](loggerCatch('[rescheduleContact]\x20'));};exports[_0xd6de('0x16')]=function(_0x3a34f1){return BPromise[_0xd6de('0x9')]()['then'](cmHopper[_0xd6de('0x16')](_0x3a34f1))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x17')));};exports[_0xd6de('0x18')]=function(_0x4b4411){return BPromise['resolve']()[_0xd6de('0xd')](cmHopper['unlockContact']({'UserId':null},_0x4b4411,0x1))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x19')));};exports['disableContact']=function(_0x3fdf81){return BPromise['resolve']()[_0xd6de('0xd')](cmHopper['unlockContact']({'active':![]},_0x3fdf81,0x1))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x1a')));};exports[_0xd6de('0x1b')]=function(_0x41241c){var _0x2c664f={};_0x2c664f[_0xd6de('0x1c')]=_0x41241c[_0xd6de('0x1c')];_0x2c664f[_0xd6de('0x1d')]=_0x41241c[_0xd6de('0x1d')];_0x2c664f[_0xd6de('0x1e')]=_0x41241c[_0xd6de('0x1e')];_0x2c664f[_0xd6de('0x1f')]=_0x41241c[_0xd6de('0x1f')];_0x2c664f[_0xd6de('0x20')]=_0x41241c['queue'];_0x2c664f[_0xd6de('0x21')]=_0x41241c['answertime'];_0x2c664f[_0xd6de('0x22')]=_0x41241c['answertime'];_0x2c664f[_0xd6de('0x23')]=0x1;_0x2c664f['queuecallercompleteAt']=_0x41241c[_0xd6de('0x24')];_0x2c664f[_0xd6de('0x25')]=_0x41241c[_0xd6de('0x26')];_0x2c664f[_0xd6de('0x27')]='from-sip';_0x2c664f['exten']='xcally-motion-preview';_0x2c664f[_0xd6de('0x28')]=0x0;_0x2c664f[_0xd6de('0x29')]=0x1;_0x2c664f[_0xd6de('0x2a')]=_0x41241c[_0xd6de('0x26')];_0x2c664f[_0xd6de('0x2b')]=_0xd6de('0x2c');return BPromise[_0xd6de('0x9')]()[_0xd6de('0xd')](voiceQueueReport[_0xd6de('0x2d')](_0x2c664f))['catch'](loggerCatch(_0xd6de('0x2e')));};exports[_0xd6de('0x2f')]=function(_0x47eb4a,_0x56e0af){return BPromise[_0xd6de('0x9')]()[_0xd6de('0xd')](cmHopper[_0xd6de('0x2f')](_0x47eb4a,_0x56e0af))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x30')));};exports[_0xd6de('0x31')]=function(_0x5f77e2){return BPromise[_0xd6de('0x9')]()['then'](cmHopper[_0xd6de('0x13')](_0x5f77e2,!![],!![]))[_0xd6de('0xb')](loggerCatch(_0xd6de('0x32')));};
\ No newline at end of file
+var _0x6ef2=['util','bluebird','preview','lodash','../rpc/cmHopperFinal','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','catch','[createHistory]\x20','createHistory','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','holdtime','assigned','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x6ef2,0x181));var _0x26ef=function(_0x359e6a,_0x438c6c){_0x359e6a=_0x359e6a-0x0;var _0x420c6b=_0x6ef2[_0x359e6a];return _0x420c6b;};'use strict';var util=require(_0x26ef('0x0'));var BPromise=require(_0x26ef('0x1'));var logger=require('../../../config/logger')(_0x26ef('0x2'));var _=require(_0x26ef('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x26ef('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x26ef('0x5'));var agentReportPreview=require(_0x26ef('0x6'));var voiceQueueReport=require(_0x26ef('0x7'));function loggerCatch(_0x2095a4){return function(_0x3c7dea){logger[_0x26ef('0x8')](_0x2095a4,util[_0x26ef('0x9')](_0x3c7dea,{'showHidden':![],'depth':null}));};}function create(_0x33cf1e){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopperHistory['createHistory'](_0x33cf1e))[_0x26ef('0xc')](loggerCatch(_0x26ef('0xd')));}function createAgent(_0x5bab95){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](agentReportPreview[_0x26ef('0xe')](_0x5bab95))[_0x26ef('0xc')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x3b8a8a){return BPromise[_0x26ef('0xa')]()['then'](cmHopper['moveContactManagedDialer'](_0x3b8a8a,!![]))[_0x26ef('0xc')](loggerCatch(_0x26ef('0xf')));}exports['checkIsBlackList']=function(_0x1a53aa){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopperBlack['checkIsBlackList'](_0x1a53aa))['catch'](loggerCatch(_0x26ef('0x10')));};exports[_0x26ef('0x11')]=function(_0x5e1d3e){return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopper[_0x26ef('0x11')](_0x5e1d3e))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x12')));};exports[_0x26ef('0xe')]=function(_0x316002,_0x659f3){create(_0x316002)['catch'](loggerCatch(_0x659f3));moveContact(_0x316002)['catch'](loggerCatch(_0x659f3));};exports[_0x26ef('0x13')]=function(_0x3b6619,_0x4c9e55){createAgent(_0x3b6619)[_0x26ef('0xc')](loggerCatch(_0x4c9e55));};exports[_0x26ef('0x14')]=function(_0x24bae6,_0x3270dc){create(_0x24bae6)[_0x26ef('0xc')](loggerCatch(_0x3270dc));};exports['createCustomerFinal']=function(_0x57ca40,_0x21f150){moveContact(_0x57ca40)['catch'](loggerCatch(_0x21f150));};exports[_0x26ef('0x15')]=function(_0x1769b0,_0x9011c5,_0x370505){if(_0x9011c5){_0x1769b0[_0x26ef('0x16')]=null;}if(_0x370505){_0x1769b0[_0x26ef('0x17')]=![];}return BPromise[_0x26ef('0xa')]()[_0x26ef('0xb')](cmHopper[_0x26ef('0x15')](_0x1769b0))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x18')));};exports[_0x26ef('0x19')]=function(_0x49cd87){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper[_0x26ef('0x19')](_0x49cd87))['catch'](loggerCatch(_0x26ef('0x1a')));};exports[_0x26ef('0x1b')]=function(_0x1ae9b8){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper['unlockContact']({'UserId':null},_0x1ae9b8,0x1))['catch'](loggerCatch(_0x26ef('0x1c')));};exports[_0x26ef('0x1d')]=function(_0x1d7a23){return BPromise[_0x26ef('0xa')]()['then'](cmHopper[_0x26ef('0x1b')]({'active':![]},_0x1d7a23,0x1))[_0x26ef('0xc')](loggerCatch('[activeContact]\x20'));};exports[_0x26ef('0x1e')]=function(_0x134205){var _0x5a4df5={};_0x5a4df5['type']=_0x134205['type'];_0x5a4df5['uniqueid']=_0x134205[_0x26ef('0x1f')];_0x5a4df5['calleridnum']=_0x134205[_0x26ef('0x20')];_0x5a4df5[_0x26ef('0x21')]=_0x134205['calleridname'];_0x5a4df5[_0x26ef('0x22')]=_0x134205[_0x26ef('0x22')];_0x5a4df5[_0x26ef('0x23')]=_0x134205['answertime'];_0x5a4df5[_0x26ef('0x24')]=_0x134205[_0x26ef('0x25')];_0x5a4df5['queuecallercomplete']=0x1;_0x5a4df5[_0x26ef('0x26')]=_0x134205[_0x26ef('0x27')];_0x5a4df5[_0x26ef('0x28')]=_0x134205[_0x26ef('0x29')];_0x5a4df5[_0x26ef('0x2a')]=_0x26ef('0x2b');_0x5a4df5[_0x26ef('0x2c')]='xcally-motion-preview';_0x5a4df5[_0x26ef('0x2d')]=0x0;_0x5a4df5[_0x26ef('0x2e')]=0x1;_0x5a4df5['lastAssignedTo']=_0x134205[_0x26ef('0x29')];_0x5a4df5[_0x26ef('0x2f')]=_0x26ef('0x30');return BPromise['resolve']()[_0x26ef('0xb')](voiceQueueReport[_0x26ef('0x31')](_0x5a4df5))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x32')));};exports['getContactRecallMe']=function(_0x5af928,_0x4c834d){return BPromise[_0x26ef('0xa')]()['then'](cmHopper[_0x26ef('0x33')](_0x5af928,_0x4c834d))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x34')));};exports[_0x26ef('0x35')]=function(_0x508997){return BPromise['resolve']()[_0x26ef('0xb')](cmHopper[_0x26ef('0x15')](_0x508997,!![],!![]))[_0x26ef('0xc')](loggerCatch(_0x26ef('0x36')));};
\ No newline at end of file
index 9675ff9..0ee3ae1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2034=['\x5cw{0,','pow','replace','extractCalleridName','match','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','inspect','info','loggerError','error','getCallerId','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','dialer','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','responsetime','endtime','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','Failure','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','Global','scheduledAt','scheduledat','add','minutes','ContactId','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','lastevent','queue','motionChannel','mandatoryDisposition','buildObj','buildAcw','interface','agentReadyId','not_inuse','status','reachable','push','createBody','idContact','campaigntype','dialAnswer','active','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-queue','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqoslossbridged','bridgepvtcallid','getCallerIdRandom'];(function(_0x59403c,_0x4ca64c){var _0x361ebe=function(_0x1f7825){while(--_0x1f7825){_0x59403c['push'](_0x59403c['shift']());}};_0x361ebe(++_0x4ca64c);}(_0x2034,0x9a));var _0x4203=function(_0x22ed7d,_0x50804f){_0x22ed7d=_0x22ed7d-0x0;var _0x3b8004=_0x2034[_0x22ed7d];return _0x3b8004;};'use strict';var util=require(_0x4203('0x0'));var _=require('lodash');var moment=require(_0x4203('0x1'));var logger=require(_0x4203('0x2'))('preview');var ipAgi=process[_0x4203('0x3')][_0x4203('0x4')]||_0x4203('0x5');function getSeconds(_0x467496,_0x58812d){var _0xf5fba3=moment(_0x467496)[_0x4203('0x6')](0x0);var _0x3c1b66=moment(_0x58812d)['milliseconds'](0x0);return _0xf5fba3[_0x4203('0x7')](_0x3c1b66,_0x4203('0x8'));}exports[_0x4203('0x9')]=function(_0x3c83c5){return function(_0x1a351f){logger['error'](_0x3c83c5,util[_0x4203('0xa')](_0x1a351f,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x4b7625,_0x199bfa){logger[_0x4203('0xb')](_0x4b7625,util['inspect'](_0x199bfa,{'showHidden':![],'depth':null}));};exports[_0x4203('0xc')]=function(_0x329dc4,_0x41401f){logger[_0x4203('0xd')](_0x329dc4,util['inspect'](_0x41401f,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x3b6bdd){return function(_0x2f9764){logger[_0x4203('0xb')](_0x3b6bdd,util[_0x4203('0xa')](_0x2f9764,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1caab6,_0xa584cf,_0x30a1e7){return{'message':_0x1caab6,'unlock':_0xa584cf,'active':_0x30a1e7};};exports[_0x4203('0xe')]=function(_0x474562,_0x3a4c07,_0x3b0dbe){if(!_['isUndefined'](_0x3b0dbe)&&_0x4203('0xf')===typeof _0x3b0dbe&&!_[_0x4203('0x10')](_0x3b0dbe)){if(!_[_0x4203('0x11')](_0x3a4c07)&&_0x4203('0xf')===typeof _0x3a4c07&&!_['isEmpty'](_0x3a4c07)){return util[_0x4203('0x12')](_0x4203('0x13'),_0x3a4c07,_0x3b0dbe);}return util['format'](_0x4203('0x13'),_0x3b0dbe,_0x3b0dbe);}if(!_[_0x4203('0x11')](_0x474562)&&_0x4203('0xf')===typeof _0x474562&&!_['isEmpty'](_0x474562)){return _0x474562;}return _0x4203('0x14');};exports[_0x4203('0x15')]=function(_0x5131aa){if(_[_0x4203('0x16')](_0x5131aa)){return![];}return _0x5131aa;};exports[_0x4203('0x17')]=function(_0x19381b,_0x4ed5b3,_0x28ac94,_0x53a41a,_0x4686aa,_0x38ef9d){var _0x1d2047={'XMD-QUEUE':_0x4ed5b3[_0x4203('0x18')]?_0x4ed5b3[_0x4203('0x18')][_0x4203('0x19')]:'','XMD-CALLERID':_0x53a41a,'XMD-CALLERID-PREVIEW':_0x38ef9d?util[_0x4203('0x12')](_0x4203('0x13'),_0x38ef9d[_0x4203('0x1a')],_0x38ef9d[_0x4203('0x1b')]):_0x53a41a,'XMD-DIALID':_0x4686aa,'XMD-CONTACTID':_0x4ed5b3['ContactId'],'XMD-CDRTYPE':_0x4203('0x1c'),'CALLERID(all)':_0x53a41a,'XMD-VOICEQUEUEID':_0x4ed5b3['VoiceQueueId'],'XMD-DIALCHANNEL':_0x28ac94,'XMD-DIALTIMEOUT':_0x19381b[_0x4203('0x1d')]||0x1e,'XMD-DIALOPTIONS':util[_0x4203('0x12')](_0x4203('0x1e'),_0x19381b['dialQueueProject2']?'g':'',_[_0x4203('0x10')](_0x19381b['monitor_format'])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x19381b[_0x4203('0x1f')]||'','XMD-AGI':_0x19381b[_0x4203('0x20')]?util[_0x4203('0x12')](_0x4203('0x21'),ipAgi,_0x19381b[_0x4203('0x20')]):'NONE','XMD-AGIAFTER':_0x19381b['dialQueueProject2']?util['format'](_0x4203('0x21'),ipAgi,_0x19381b['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x38ef9d?_0x38ef9d[_0x4203('0x22')]:'','XMD-ORIGINATECALLERIDNAME':_0x38ef9d?_0x38ef9d[_0x4203('0x23')]:'','XMD-DESTINATION':_0x4203('0x24'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_['isEmpty'](_0x19381b['monitor_format'])){_0x1d2047[util['format']('%s',_0x4203('0x25'))]=_0x19381b['monitor_format'];_0x1d2047[util[_0x4203('0x12')]('%s',_0x4203('0x26'))]=_0x4686aa;}if(_0x4ed5b3&&_0x4ed5b3['Contact']){for(var _0x12b921 in _0x4ed5b3[_0x4203('0x27')]){if(_0x4ed5b3[_0x4203('0x27')][_0x4203('0x28')](_0x12b921)){if(!_['isNil'](_0x4ed5b3[_0x4203('0x27')][_0x12b921])&&_0x12b921!=='id'&&_0x12b921!=='tags'&&_0x12b921!==_0x4203('0x29')&&_0x12b921!==_0x4203('0x2a')){_0x1d2047[util[_0x4203('0x12')](_0x4203('0x2b'),_0x4203('0x2c'),_[_0x4203('0x2d')](_0x12b921))]=_0x4ed5b3[_0x4203('0x27')][_0x12b921];}}}}return _0x1d2047;};exports[_0x4203('0x2e')]=function(_0x5c4893){var _0xe381be={};for(var _0x5e24aa in _0x5c4893){if(_0x5c4893[_0x4203('0x28')](_0x5e24aa)){_0xe381be[util[_0x4203('0x12')]('%s',_[_0x4203('0x2f')](_0x5e24aa))]=_0x5c4893[_0x5e24aa];}}return{'variables':_0xe381be};};exports[_0x4203('0x30')]=function(_0x364053,_0x321883){if(!_[_0x4203('0x16')](_0x364053)){if(_0x364053[_0x4203('0x28')](_0x4203('0x31'))){if(_0x364053[_0x4203('0x31')]>0x0){_0x364053['originated']-=0x1;}else{logger['error'](_0x4203('0x32'),_0x321883);}}}else{logger[_0x4203('0xd')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x321883);}};exports['logBlacklist']=function(_0x20f59d){var _0x125db7=moment()['format'](_0x4203('0x33'));_0x20f59d[_0x4203('0x34')]=0xd;_0x20f59d[_0x4203('0x35')]='Blacklist';_0x20f59d[_0x4203('0x36')]=_0x125db7;_0x20f59d[_0x4203('0x37')]=_0x125db7;_0x20f59d[_0x4203('0x38')]=_0x125db7;};exports['logAgent']=function(_0x5b4bee,_0xd74a2b,_0x5e89dc){var _0x41fe95=moment()[_0x4203('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x5b4bee[_0x4203('0x34')]=_0xd74a2b;_0x5b4bee['statedesc']=_0x5e89dc;_0x5b4bee[_0x4203('0x37')]=_0x41fe95;_0x5b4bee[_0x4203('0x39')]=getSeconds(_0x5b4bee['responsetime'],_0x5b4bee[_0x4203('0x36')]);};exports[_0x4203('0x3a')]=function(_0x18e839,_0x3173ed,_0x1a222d){_0x18e839[_0x4203('0x3b')]=_0x3173ed;_0x18e839[_0x4203('0x3c')]=_0x1a222d;};exports[_0x4203('0x3d')]=function(_0x441f6f,_0x41e81e,_0x117fb9){var _0x51a205=moment()['format'](_0x4203('0x33'));_0x441f6f[_0x4203('0x34')]=_0x41e81e;_0x441f6f['statedesc']=_0x117fb9;_0x441f6f[_0x4203('0x37')]=_0x441f6f['responsetime']?_0x441f6f[_0x4203('0x37')]:_0x51a205;_0x441f6f[_0x4203('0x38')]=_0x441f6f['endtime']?_0x441f6f['endtime']:_0x51a205;_0x441f6f[_0x4203('0x39')]=getSeconds(_0x441f6f[_0x4203('0x37')]||0x0,_0x441f6f[_0x4203('0x36')]||0x0);_0x441f6f[_0x4203('0x3e')]=_0x441f6f[_0x4203('0x3f')]?getSeconds(_0x441f6f[_0x4203('0x38')],_0x441f6f[_0x4203('0x3f')]):0x0;};exports['isFailure']=function(_0x366999){return _0x366999===_0x4203('0x40');};exports['variablesAction']=function(_0x2120d0,_0x28745a,_0x1be4cc,_0x9fa270,_0x367bf8){var _0x58dcc7=_0x9fa270?_0x4203('0x41'):_0x2120d0['calleridname'];_0x58dcc7=_0x367bf8?_0x4203('0x42'):_0x58dcc7;return{'actionid':_0x2120d0[_0x4203('0x43')],'action':_0x4203('0x44'),'channel':_0x2120d0[_0x4203('0x45')],'callerid':util[_0x4203('0x12')](_0x4203('0x13'),_0x58dcc7,_0x2120d0['calleridnum']),'Exten':_0x4203('0x24'),'Context':_0x4203('0x46'),'Priority':'1','variable':_0x1be4cc,'timeout':(_0x28745a[_0x4203('0x47')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2120d0[_0x4203('0x43')]};};exports[_0x4203('0x48')]=function(_0x56db22){return _0x56db22[_0x4203('0x49')]+_0x56db22[_0x4203('0x4a')]+_0x56db22[_0x4203('0x4b')]+_0x56db22[_0x4203('0x4c')]+_0x56db22['countnosuchnumberretry'];};exports[_0x4203('0x4d')]=function(_0x251650){var _0xd8a905=_['clone'](_0x251650);_0xd8a905['state']=0xf;_0xd8a905[_0x4203('0x35')]=_0x4203('0x4e');return _0xd8a905;};exports[_0x4203('0x4f')]=function(_0x5d9bdc,_0x3d3f69,_0x3e7a67){var _0x1fd1f8={};_0x1fd1f8[_0x3d3f69]=_0x5d9bdc[_0x3d3f69];_0x1fd1f8['active']=![];_0x1fd1f8[_0x4203('0x50')]=moment()[_0x4203('0x51')](_0x3e7a67,_0x4203('0x52'))[_0x4203('0x12')](_0x4203('0x33'));_0x1fd1f8[_0x4203('0x53')]=_0x5d9bdc['ContactId'];_0x1fd1f8['ListId']=_0x5d9bdc[_0x4203('0x54')];_0x1fd1f8['VoiceQueueId']=_0x5d9bdc[_0x4203('0x55')]||undefined;return _0x1fd1f8;};exports[_0x4203('0x56')]=function(_0x137616,_0x24de6f){if(!_[_0x4203('0x16')](_0x137616)){if(_0x137616[_0x4203('0x57')]>0x0){_0x137616[_0x4203('0x57')]-=0x1;}else{logger[_0x4203('0xd')](_0x24de6f,_0x4203('0x58'));}}else{logger[_0x4203('0xd')](_0x24de6f,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x4203('0x59')]=function(_0x5051ba){if(_0x5051ba<=0x0){return!![];}return![];};function buildObj(_0x30b18f,_0xf62c49,_0x160338){_0x30b18f[_0x4203('0x5a')]=_0xf62c49;_0x30b18f['name']=_0x30b18f[_0x4203('0x5b')];_0x30b18f['interface']=_0x30b18f[_0x4203('0x45')];_0x30b18f[_0x4203('0x5c')]='voice';if(_0x160338){_0x30b18f[_0x4203('0x5d')]=_0x160338[_0x4203('0x5d')];}return _0x30b18f;}exports[_0x4203('0x5e')]=buildObj;exports[_0x4203('0x5f')]=function(_0x4e01ed){var _0x23a4e6={};_0x23a4e6[_0x4203('0x5b')]=_0x4e01ed['queue'];_0x23a4e6[_0x4203('0x60')]=_0x4e01ed['channelAgent'];_0x23a4e6[_0x4203('0x43')]=_0x4e01ed[_0x4203('0x43')];return _0x23a4e6;};exports[_0x4203('0x61')]=function(_0x2000de){var _0x5f14d5=[];for(var _0x1a4fbb in _0x2000de){if(_0x2000de['hasOwnProperty'](_0x1a4fbb)){if(!_[_0x4203('0x16')](_0x2000de[_0x1a4fbb])&&_0x2000de[_0x1a4fbb]['state']===_0x4203('0x62')&&_0x2000de[_0x1a4fbb][_0x4203('0x63')]===_0x4203('0x64')){_0x5f14d5[_0x4203('0x65')](_0x2000de[_0x1a4fbb]['id']);}}}return _0x5f14d5;};exports['getDiff']=function(_0x37f3ac){var _0x5e09e3=moment()[_0x4203('0x6')](0x0);var _0x136cf1=moment(_0x37f3ac)[_0x4203('0x6')](0x0);return _0x5e09e3[_0x4203('0x7')](_0x136cf1,_0x4203('0x8'));};exports[_0x4203('0x66')]=function(_0x5baee0){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5baee0[_0x4203('0x53')],'ListId':_0x5baee0[_0x4203('0x54')],'VoiceQueueId':_0x5baee0[_0x4203('0x55')]||undefined,'CampaignId':_0x5baee0['CampaignId']||undefined};};exports['filterKey']=function(_0xabbc94){if(_0xabbc94===_0x4203('0x43')||_0xabbc94===_0x4203('0x67')||_0xabbc94==='queue'||_0xabbc94==='type'||_0xabbc94===_0x4203('0x68')||_0xabbc94===_0x4203('0x69')||_0xabbc94==='membername'||_0xabbc94==='channelAgent'||_0xabbc94==='calleridname'||_0xabbc94===_0x4203('0x6a')||_0xabbc94==='calleridnum'||_0xabbc94===_0x4203('0x50')||_0xabbc94===_0x4203('0x49')||_0xabbc94==='countcongestionretry'||_0xabbc94===_0x4203('0x4b')||_0xabbc94===_0x4203('0x6b')||_0xabbc94===_0x4203('0x6c')||_0xabbc94===_0x4203('0x6d')||_0xabbc94===_0x4203('0x6e')||_0xabbc94===_0x4203('0x6f')||_0xabbc94===_0x4203('0x53')||_0xabbc94==='ListId'||_0xabbc94==='UserId'||_0xabbc94===_0x4203('0x55')||_0xabbc94==='sipcallid'||_0xabbc94==='xmd-voicequeueid'||_0xabbc94===_0x4203('0x70')||_0xabbc94==='xmd-phone'||_0xabbc94==='xmd-listid'||_0xabbc94===_0x4203('0x71')||_0xabbc94===_0x4203('0x72')||_0xabbc94===_0x4203('0x73')||_0xabbc94===_0x4203('0x74')||_0xabbc94===_0x4203('0x75')||_0xabbc94===_0x4203('0x76')||_0xabbc94===_0x4203('0x77')||_0xabbc94===_0x4203('0x78')||_0xabbc94==='xmd-agiafter'||_0xabbc94===_0x4203('0x79')||_0xabbc94===_0x4203('0x7a')||_0xabbc94===_0x4203('0x7b')||_0xabbc94===_0x4203('0x7c')||_0xabbc94===_0x4203('0x7d')||_0xabbc94===_0x4203('0x7e')||_0xabbc94==='rtpaudioqoslossbridged'||_0xabbc94===_0x4203('0x7f')||_0xabbc94===_0x4203('0x80')||_0xabbc94==='rtpaudioqos'||_0xabbc94===_0x4203('0x7b')||_0xabbc94===_0x4203('0x7c')||_0xabbc94===_0x4203('0x7d')||_0xabbc94==='rtpaudioqosloss'||_0xabbc94===_0x4203('0x81')||_0xabbc94===_0x4203('0x7f')||_0xabbc94==='rtpaudioqosrttbridged'||_0xabbc94==='bridgepeer'||_0xabbc94===_0x4203('0x82')||_0xabbc94==='state'||_0xabbc94===_0x4203('0x35')){return![];}return!![];};exports[_0x4203('0x83')]=function(_0x328527,_0x12470e){var _0x342a88,_0xb3d0b,_0xf8415b;if(_0x12470e<=0x0){_0x12470e=0x1;}_0x342a88=new RegExp(_0x4203('0x84')+_0x12470e+'}$');_0xb3d0b=Math[_0x4203('0x85')](0xa,_0x12470e-0x1);_0xf8415b=Math[_0x4203('0x85')](0xa,_0x12470e)-0x1;return util[_0x4203('0x12')]('%s',_[_0x4203('0x86')](_0x328527,_0x342a88,_['random'](_0xb3d0b,_0xf8415b)));};exports[_0x4203('0x87')]=function(_0x54cdb5){var _0xfd292f=_0x54cdb5['match'](/"(.*?)"/);return _0xfd292f?_0xfd292f[0x1]:_0x54cdb5;};exports['extractCalleridNumber']=function(_0x5b4a22){var _0x3dec03=_0x5b4a22[_0x4203('0x88')](/<(.*?)>/);return _0x3dec03?_0x3dec03[0x1]:_0x5b4a22;};function buildNoAnswerEventPayload(_0x12ec65,_0x152c38){var _0x5182e6=buildObj(_0x12ec65,_0x4203('0x89'));if(!_[_0x4203('0x10')](_0x152c38[_0x4203('0x8a')])){Object[_0x4203('0x8b')](_0x152c38[_0x4203('0x8a')])[_0x4203('0x8c')](function(_0x24147c){_0x5182e6[_0x24147c[_0x4203('0x8d')]()]=_0x152c38[_0x4203('0x8a')][_0x24147c];});}return _0x5182e6;}exports[_0x4203('0x8e')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x02b2=['IsNotLoggedIn','name','queue','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','interface','agentReadyId','not_inuse','status','push','createBody','CampaignId','type','campaigntype','dialAnswer','calleridname','countbusyretry','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','random','match','extractCalleridNumber','noanswer','variables','keys','forEach','toLowerCase','util','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','inspect','loggerError','logger2','info','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','\x22\x22\x20<>','isActive','addVariables','Queue','calleridnum','dialer','VoiceQueueId','dialQueueProject2','monitor_format','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','createdAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','isNil','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','responsetime','logAgent','ringtime','logLookAgent','membername','UserId','endtime','answertime','isFailure','RECALL','BOOKED','uniqueid','originate','channelAgent','timeout','totalGlobal','clone','Global','scheduledAt','active','scheduledat','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x02b2,0xbf));var _0x202b=function(_0x58015e,_0x42dc09){_0x58015e=_0x58015e-0x0;var _0x53b4bd=_0x02b2[_0x58015e];return _0x53b4bd;};'use strict';var util=require(_0x202b('0x0'));var _=require('lodash');var moment=require(_0x202b('0x1'));var logger=require(_0x202b('0x2'))('preview');var ipAgi=process[_0x202b('0x3')][_0x202b('0x4')]||_0x202b('0x5');function getSeconds(_0x43458e,_0x3a530c){var _0x511d46=moment(_0x43458e)['milliseconds'](0x0);var _0x3e06cd=moment(_0x3a530c)[_0x202b('0x6')](0x0);return _0x511d46[_0x202b('0x7')](_0x3e06cd,_0x202b('0x8'));}exports['loggerCatch']=function(_0x2ee266){return function(_0x4f5a7b){logger[_0x202b('0x9')](_0x2ee266,util[_0x202b('0xa')](_0x4f5a7b,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x5a42c3,_0x379987){logger['info'](_0x5a42c3,util['inspect'](_0x379987,{'showHidden':![],'depth':null}));};exports[_0x202b('0xb')]=function(_0x3b6d45,_0x3f8c86){logger[_0x202b('0x9')](_0x3b6d45,util[_0x202b('0xa')](_0x3f8c86,{'showHidden':![],'depth':null}));};exports[_0x202b('0xc')]=function(_0x5dff6f){return function(_0x4fd2c1){logger[_0x202b('0xd')](_0x5dff6f,util[_0x202b('0xa')](_0x4fd2c1,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x44b71b,_0x1cb58f,_0x146f86){return{'message':_0x44b71b,'unlock':_0x1cb58f,'active':_0x146f86};};exports[_0x202b('0xe')]=function(_0x5a7198,_0x4fdfba,_0x2b0184){if(!_['isUndefined'](_0x2b0184)&&_0x202b('0xf')===typeof _0x2b0184&&!_['isEmpty'](_0x2b0184)){if(!_['isUndefined'](_0x4fdfba)&&_0x202b('0xf')===typeof _0x4fdfba&&!_[_0x202b('0x10')](_0x4fdfba)){return util[_0x202b('0x11')](_0x202b('0x12'),_0x4fdfba,_0x2b0184);}return util[_0x202b('0x11')](_0x202b('0x12'),_0x2b0184,_0x2b0184);}if(!_[_0x202b('0x13')](_0x5a7198)&&'string'===typeof _0x5a7198&&!_['isEmpty'](_0x5a7198)){return _0x5a7198;}return _0x202b('0x14');};exports[_0x202b('0x15')]=function(_0x17738f){if(_['isNil'](_0x17738f)){return![];}return _0x17738f;};exports[_0x202b('0x16')]=function(_0x47418b,_0x2cbe68,_0x179a90,_0x242f21,_0x90d092,_0x59d082){var _0x4e8c3b={'XMD-QUEUE':_0x2cbe68[_0x202b('0x17')]?_0x2cbe68[_0x202b('0x17')]['name']:'','XMD-CALLERID':_0x242f21,'XMD-CALLERID-PREVIEW':_0x59d082?util[_0x202b('0x11')](_0x202b('0x12'),_0x59d082['calleridname'],_0x59d082[_0x202b('0x18')]):_0x242f21,'XMD-DIALID':_0x90d092,'XMD-CONTACTID':_0x2cbe68['ContactId'],'XMD-CDRTYPE':_0x202b('0x19'),'CALLERID(all)':_0x242f21,'XMD-VOICEQUEUEID':_0x2cbe68[_0x202b('0x1a')],'XMD-DIALCHANNEL':_0x179a90,'XMD-DIALTIMEOUT':_0x47418b['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util['format']('\x22rtTxX%s%s\x22',_0x47418b[_0x202b('0x1b')]?'g':'',_[_0x202b('0x10')](_0x47418b[_0x202b('0x1c')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x47418b[_0x202b('0x1d')]||'','XMD-AGI':_0x47418b[_0x202b('0x1e')]?util[_0x202b('0x11')](_0x202b('0x1f'),ipAgi,_0x47418b[_0x202b('0x1e')]):_0x202b('0x20'),'XMD-AGIAFTER':_0x47418b[_0x202b('0x1b')]?util[_0x202b('0x11')](_0x202b('0x1f'),ipAgi,_0x47418b['dialQueueProject2']):_0x202b('0x20'),'XMD-ORIGINATECALLERIDNUM':_0x59d082?_0x59d082[_0x202b('0x21')]:'','XMD-ORIGINATECALLERIDNAME':_0x59d082?_0x59d082['originatecalleridname']:'','XMD-DESTINATION':_0x202b('0x22'),'SIPADDHEADER':_0x202b('0x23')};if(!_[_0x202b('0x10')](_0x47418b[_0x202b('0x1c')])){_0x4e8c3b[util[_0x202b('0x11')]('%s',_0x202b('0x24'))]=_0x47418b[_0x202b('0x1c')];_0x4e8c3b[util[_0x202b('0x11')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x90d092;}if(_0x2cbe68&&_0x2cbe68[_0x202b('0x25')]){for(var _0xa4ec97 in _0x2cbe68[_0x202b('0x25')]){if(_0x2cbe68['Contact']['hasOwnProperty'](_0xa4ec97)){if(!_['isNil'](_0x2cbe68[_0x202b('0x25')][_0xa4ec97])&&_0xa4ec97!=='id'&&_0xa4ec97!=='tags'&&_0xa4ec97!==_0x202b('0x26')&&_0xa4ec97!=='updatedAt'){_0x4e8c3b[util['format'](_0x202b('0x27'),_0x202b('0x28'),_[_0x202b('0x29')](_0xa4ec97))]=_0x2cbe68[_0x202b('0x25')][_0xa4ec97];}}}}return _0x4e8c3b;};exports[_0x202b('0x2a')]=function(_0xb14428){var _0x4340ee={};for(var _0x416329 in _0xb14428){if(_0xb14428[_0x202b('0x2b')](_0x416329)){_0x4340ee[util[_0x202b('0x11')]('%s',_['toLower'](_0x416329))]=_0xb14428[_0x416329];}}return{'variables':_0x4340ee};};exports['updateOriginated']=function(_0x81827e,_0x3a8c9e){if(!_[_0x202b('0x2c')](_0x81827e)){if(_0x81827e['hasOwnProperty'](_0x202b('0x2d'))){if(_0x81827e[_0x202b('0x2d')]>0x0){_0x81827e[_0x202b('0x2d')]-=0x1;}else{logger['error'](_0x202b('0x2e'),_0x3a8c9e);}}}else{logger[_0x202b('0x9')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x3a8c9e);}};exports[_0x202b('0x2f')]=function(_0x2d3600){var _0xe52a06=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x2d3600[_0x202b('0x31')]=0xd;_0x2d3600[_0x202b('0x32')]='Blacklist';_0x2d3600[_0x202b('0x33')]=_0xe52a06;_0x2d3600[_0x202b('0x34')]=_0xe52a06;_0x2d3600['endtime']=_0xe52a06;};exports[_0x202b('0x35')]=function(_0x522e98,_0x84e569,_0x12abdc){var _0x4926a2=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x522e98[_0x202b('0x31')]=_0x84e569;_0x522e98[_0x202b('0x32')]=_0x12abdc;_0x522e98[_0x202b('0x34')]=_0x4926a2;_0x522e98[_0x202b('0x36')]=getSeconds(_0x522e98[_0x202b('0x34')],_0x522e98[_0x202b('0x33')]);};exports[_0x202b('0x37')]=function(_0x60a240,_0x1a5b45,_0x3f4967){_0x60a240[_0x202b('0x38')]=_0x1a5b45;_0x60a240[_0x202b('0x39')]=_0x3f4967;};exports['logCustomer']=function(_0x1a29ae,_0x24c091,_0x1de76a){var _0x11b6dd=moment()[_0x202b('0x11')](_0x202b('0x30'));_0x1a29ae[_0x202b('0x31')]=_0x24c091;_0x1a29ae[_0x202b('0x32')]=_0x1de76a;_0x1a29ae['responsetime']=_0x1a29ae[_0x202b('0x34')]?_0x1a29ae['responsetime']:_0x11b6dd;_0x1a29ae[_0x202b('0x3a')]=_0x1a29ae[_0x202b('0x3a')]?_0x1a29ae['endtime']:_0x11b6dd;_0x1a29ae['ringtime']=getSeconds(_0x1a29ae[_0x202b('0x34')]||0x0,_0x1a29ae[_0x202b('0x33')]||0x0);_0x1a29ae['talktime']=_0x1a29ae[_0x202b('0x3b')]?getSeconds(_0x1a29ae['endtime'],_0x1a29ae[_0x202b('0x3b')]):0x0;};exports[_0x202b('0x3c')]=function(_0x3f8b0b){return _0x3f8b0b==='Failure';};exports['variablesAction']=function(_0x4c17bb,_0x3ee30a,_0x1b3ff4,_0x291ae2,_0x19a5ad){var _0xa24ce3=_0x291ae2?_0x202b('0x3d'):_0x4c17bb['calleridname'];_0xa24ce3=_0x19a5ad?_0x202b('0x3e'):_0xa24ce3;return{'actionid':_0x4c17bb[_0x202b('0x3f')],'action':_0x202b('0x40'),'channel':_0x4c17bb[_0x202b('0x41')],'callerid':util[_0x202b('0x11')]('\x22%s\x22\x20<%s>',_0xa24ce3,_0x4c17bb[_0x202b('0x18')]),'Exten':_0x202b('0x22'),'Context':'from-sip','Priority':'1','variable':_0x1b3ff4,'timeout':(_0x3ee30a[_0x202b('0x42')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4c17bb[_0x202b('0x3f')]};};exports[_0x202b('0x43')]=function(_0x3af85d){return _0x3af85d['countbusyretry']+_0x3af85d['countcongestionretry']+_0x3af85d['countnoanswerretry']+_0x3af85d['countagentrejectretry']+_0x3af85d['countnosuchnumberretry'];};exports['cloneAction']=function(_0x59dd3e){var _0x3a7d2c=_[_0x202b('0x44')](_0x59dd3e);_0x3a7d2c[_0x202b('0x31')]=0xf;_0x3a7d2c[_0x202b('0x32')]=_0x202b('0x45');return _0x3a7d2c;};exports[_0x202b('0x46')]=function(_0x7471c8,_0x47ae18,_0x4b33c5){var _0xf0030={};_0xf0030[_0x47ae18]=_0x7471c8[_0x47ae18];_0xf0030[_0x202b('0x47')]=![];_0xf0030[_0x202b('0x48')]=moment()['add'](_0x4b33c5,_0x202b('0x49'))[_0x202b('0x11')](_0x202b('0x30'));_0xf0030[_0x202b('0x4a')]=_0x7471c8[_0x202b('0x4a')];_0xf0030[_0x202b('0x4b')]=_0x7471c8['ListId'];_0xf0030['VoiceQueueId']=_0x7471c8[_0x202b('0x1a')]||undefined;return _0xf0030;};exports[_0x202b('0x4c')]=function(_0xf373b6,_0x7412ef){if(!_[_0x202b('0x2c')](_0xf373b6)){if(_0xf373b6[_0x202b('0x4d')]>0x0){_0xf373b6['pTalking']-=0x1;}else{logger[_0x202b('0x9')](_0x7412ef,_0x202b('0x4e'));}}else{logger[_0x202b('0x9')](_0x7412ef,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x202b('0x4f')]=function(_0x2b4db8){if(_0x2b4db8<=0x0){return!![];}return![];};function buildObj(_0x4985d0,_0x4d69d3,_0x5abf11){_0x4985d0['lastevent']=_0x4d69d3;_0x4985d0[_0x202b('0x50')]=_0x4985d0[_0x202b('0x51')];_0x4985d0['interface']=_0x4985d0['channelAgent'];_0x4985d0[_0x202b('0x52')]=_0x202b('0x53');if(_0x5abf11){_0x4985d0[_0x202b('0x54')]=_0x5abf11[_0x202b('0x54')];}return _0x4985d0;}exports[_0x202b('0x55')]=buildObj;exports[_0x202b('0x56')]=function(_0x144289){var _0x38894b={};_0x38894b[_0x202b('0x51')]=_0x144289[_0x202b('0x51')];_0x38894b[_0x202b('0x57')]=_0x144289[_0x202b('0x41')];_0x38894b[_0x202b('0x3f')]=_0x144289[_0x202b('0x3f')];return _0x38894b;};exports[_0x202b('0x58')]=function(_0x31fae4){var _0x46445e=[];for(var _0x34d4bb in _0x31fae4){if(_0x31fae4[_0x202b('0x2b')](_0x34d4bb)){if(!_[_0x202b('0x2c')](_0x31fae4[_0x34d4bb])&&_0x31fae4[_0x34d4bb][_0x202b('0x31')]===_0x202b('0x59')&&_0x31fae4[_0x34d4bb][_0x202b('0x5a')]==='reachable'){_0x46445e[_0x202b('0x5b')](_0x31fae4[_0x34d4bb]['id']);}}}return _0x46445e;};exports['getDiff']=function(_0x115b5b){var _0xfaaee1=moment()[_0x202b('0x6')](0x0);var _0x3ec9d4=moment(_0x115b5b)[_0x202b('0x6')](0x0);return _0xfaaee1[_0x202b('0x7')](_0x3ec9d4,'seconds');};exports[_0x202b('0x5c')]=function(_0x5eb572){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5eb572[_0x202b('0x4a')],'ListId':_0x5eb572[_0x202b('0x4b')],'VoiceQueueId':_0x5eb572[_0x202b('0x1a')]||undefined,'CampaignId':_0x5eb572[_0x202b('0x5d')]||undefined};};exports['filterKey']=function(_0xd80efc){if(_0xd80efc===_0x202b('0x3f')||_0xd80efc==='idContact'||_0xd80efc===_0x202b('0x51')||_0xd80efc===_0x202b('0x5e')||_0xd80efc===_0x202b('0x5f')||_0xd80efc===_0x202b('0x60')||_0xd80efc==='membername'||_0xd80efc===_0x202b('0x41')||_0xd80efc===_0x202b('0x61')||_0xd80efc==='active'||_0xd80efc===_0x202b('0x18')||_0xd80efc==='scheduledat'||_0xd80efc===_0x202b('0x62')||_0xd80efc==='countcongestionretry'||_0xd80efc===_0x202b('0x63')||_0xd80efc===_0x202b('0x64')||_0xd80efc===_0x202b('0x65')||_0xd80efc===_0x202b('0x66')||_0xd80efc===_0x202b('0x67')||_0xd80efc===_0x202b('0x68')||_0xd80efc===_0x202b('0x4a')||_0xd80efc===_0x202b('0x4b')||_0xd80efc===_0x202b('0x39')||_0xd80efc===_0x202b('0x1a')||_0xd80efc==='sipcallid'||_0xd80efc===_0x202b('0x69')||_0xd80efc===_0x202b('0x6a')||_0xd80efc===_0x202b('0x6b')||_0xd80efc==='xmd-listid'||_0xd80efc===_0x202b('0x6c')||_0xd80efc===_0x202b('0x6d')||_0xd80efc===_0x202b('0x6e')||_0xd80efc==='xmd-dialid'||_0xd80efc==='xmd-dialchannel'||_0xd80efc===_0x202b('0x6f')||_0xd80efc===_0x202b('0x70')||_0xd80efc===_0x202b('0x71')||_0xd80efc==='xmd-agiafter'||_0xd80efc===_0x202b('0x72')||_0xd80efc===_0x202b('0x73')||_0xd80efc===_0x202b('0x74')||_0xd80efc===_0x202b('0x75')||_0xd80efc===_0x202b('0x76')||_0xd80efc===_0x202b('0x77')||_0xd80efc===_0x202b('0x78')||_0xd80efc==='rtpaudioqosrtt'||_0xd80efc===_0x202b('0x79')||_0xd80efc==='rtpaudioqos'||_0xd80efc===_0x202b('0x74')||_0xd80efc===_0x202b('0x75')||_0xd80efc==='rtpaudioqosjitterbridged'||_0xd80efc===_0x202b('0x77')||_0xd80efc===_0x202b('0x78')||_0xd80efc===_0x202b('0x7a')||_0xd80efc===_0x202b('0x79')||_0xd80efc===_0x202b('0x7b')||_0xd80efc===_0x202b('0x7c')||_0xd80efc===_0x202b('0x31')||_0xd80efc===_0x202b('0x32')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x4f6864,_0x45c057){var _0x3a0f64,_0x4d169c,_0x159ae8;if(_0x45c057<=0x0){_0x45c057=0x1;}_0x3a0f64=new RegExp(_0x202b('0x7d')+_0x45c057+'}$');_0x4d169c=Math[_0x202b('0x7e')](0xa,_0x45c057-0x1);_0x159ae8=Math[_0x202b('0x7e')](0xa,_0x45c057)-0x1;return util[_0x202b('0x11')]('%s',_['replace'](_0x4f6864,_0x3a0f64,_[_0x202b('0x7f')](_0x4d169c,_0x159ae8)));};exports['extractCalleridName']=function(_0x1d155c){var _0x4b40ea=_0x1d155c[_0x202b('0x80')](/"(.*?)"/);return _0x4b40ea?_0x4b40ea[0x1]:_0x1d155c;};exports[_0x202b('0x81')]=function(_0x3513f2){var _0x314755=_0x3513f2['match'](/<(.*?)>/);return _0x314755?_0x314755[0x1]:_0x3513f2;};function buildNoAnswerEventPayload(_0x4b822b,_0x4b2b49){var _0x1088a7=buildObj(_0x4b822b,_0x202b('0x82'));if(!_[_0x202b('0x10')](_0x4b2b49[_0x202b('0x83')])){Object[_0x202b('0x84')](_0x4b2b49[_0x202b('0x83')])[_0x202b('0x85')](function(_0x5d7f20){_0x1088a7[_0x5d7f20[_0x202b('0x86')]()]=_0x4b2b49[_0x202b('0x83')][_0x5d7f20];});}return _0x1088a7;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index b8fba54..7c5dbee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba6a=['reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','queuepause','boolean'];(function(_0x3bf6c9,_0x1de0a2){var _0x1fbae8=function(_0x16b748){while(--_0x16b748){_0x3bf6c9['push'](_0x3bf6c9['shift']());}};_0x1fbae8(++_0x1de0a2);}(_0xba6a,0x163));var _0xaba6=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xba6a[_0x4ff09b];return _0x3f5c2e;};'use strict';exports[_0xaba6('0x0')]={'queue':{'type':_0xaba6('0x1'),'required':!![]},'interface':{'type':_0xaba6('0x1'),'required':!![]},'membername':{'type':_0xaba6('0x1'),'required':!![]},'penalty':{'type':_0xaba6('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0xaba6('0x1'),'required':!![]}};exports[_0xaba6('0x3')]={'interface':{'type':_0xaba6('0x1'),'required':!![]},'paused':{'type':_0xaba6('0x4')},'reason':{'type':_0xaba6('0x1'),'required':![]}};exports[_0xaba6('0x5')]={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xaba6('0x1'),'required':!![]}};exports[_0xaba6('0x6')]={'uniqueid':{'type':_0xaba6('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xaba6('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xaba6('0x7')]={'uniqueid':{'type':_0xaba6('0x1'),'required':!![]}};exports[_0xaba6('0x8')]={'uniqueid':{'type':_0xaba6('0x1'),'required':!![]},'exten':{'type':_0xaba6('0x1'),'required':!![]},'context':{'type':_0xaba6('0x1')}};
\ No newline at end of file
+var _0x4ec5=['string','number','boolean','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','queueadd'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x4ec5,0x9f));var _0x54ec=function(_0x5c6ac1,_0x1e8842){_0x5c6ac1=_0x5c6ac1-0x0;var _0x553d12=_0x4ec5[_0x5c6ac1];return _0x553d12;};'use strict';exports[_0x54ec('0x0')]={'queue':{'type':_0x54ec('0x1'),'required':!![]},'interface':{'type':_0x54ec('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x54ec('0x2'),'required':![]},'paused':{'type':_0x54ec('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0x54ec('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports['queuepause']={'interface':{'type':_0x54ec('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x54ec('0x1'),'required':![]}};exports[_0x54ec('0x4')]={'module':{'type':'string','required':![]}};exports[_0x54ec('0x5')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]}};exports[_0x54ec('0x6')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x54ec('0x1')},'mixmonitorid':{'type':_0x54ec('0x1')}};exports[_0x54ec('0x7')]={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0x54ec('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 2c77431..9629928 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7795=['initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','lodash','../model/telephone','../model/trunk','../model/template','../model/campaign','../model/zendeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','queueChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','hasOwnProperty','mapKeys','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','isUndefined','telephones','length','initTrunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initServicenowAccounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','diff','queuecallerjoinAt','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','duration','ANSWERED','billableseconds','initCampaigns','SquareProject'];(function(_0x21fbc8,_0x3b02e1){var _0x120987=function(_0x13f0d5){while(--_0x13f0d5){_0x21fbc8['push'](_0x21fbc8['shift']());}};_0x120987(++_0x3b02e1);}(_0x7795,0x1a4));var _0x5779=function(_0x189728,_0x2a760b){_0x189728=_0x189728-0x0;var _0x3960c6=_0x7795[_0x189728];return _0x3960c6;};'use strict';var util=require('util');var _=require(_0x5779('0x0'));var moment=require('moment');var Agent=require('../model/agent');var Telephone=require(_0x5779('0x1'));var Trunk=require(_0x5779('0x2'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require(_0x5779('0x3'));var Campaign=require(_0x5779('0x4'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x5779('0x5'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x5779('0x6'));var ZohoAccount=require(_0x5779('0x7'));var DeskAccount=require(_0x5779('0x8'));var VtigerAccount=require(_0x5779('0x9'));var ServicenowAccount=require(_0x5779('0xa'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x5779('0xb'));var FaxAccount=require(_0x5779('0xc'));var Realtime=function(){this['agents']={};this['telephones']={};this[_0x5779('0xd')]={};this[_0x5779('0xe')]={};this[_0x5779('0xf')]={};this[_0x5779('0x10')]={};this[_0x5779('0x11')]={};this[_0x5779('0x12')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x5779('0x13')]={};this['channels']={};this[_0x5779('0x14')]={};this['outboundChannels']={};this[_0x5779('0x15')]={};this['settings']={};this[_0x5779('0x16')]={};this[_0x5779('0x17')]={};this[_0x5779('0x18')]={};this['freshdeskAccounts']={};this[_0x5779('0x19')]={};this['deskAccounts']={};this[_0x5779('0x1a')]={};this[_0x5779('0x1b')]={};this[_0x5779('0x1c')]={};this['freshsalesAccounts']={};this[_0x5779('0x1d')]={};};function freeIsNotKey(_0x10392f,_0x5ea4b6,_0x306e1a){var _0x2d8d88=_['mapKeys'](_0x10392f,function(_0x5a40e9,_0x5efed4){return _0x5a40e9[_0x306e1a];});for(var _0x10ad06 in _0x5ea4b6){if(_0x5ea4b6[_0x5779('0x1e')](_0x10ad06)){if(!_0x2d8d88[_0x10ad06]){delete _0x5ea4b6[_0x10ad06];}}}}function freeIsNotKeySip(_0x4d549c,_0x14ab5c){var _0x3c4de9=_[_0x5779('0x1f')](_0x4d549c,function(_0x27211c,_0x43713e){return util[_0x5779('0x20')](_0x5779('0x21'),_0x27211c[_0x5779('0x22')]);});for(var _0xff3269 in _0x14ab5c){if(_0x14ab5c['hasOwnProperty'](_0xff3269)){if(!_0x3c4de9[_0xff3269]){delete _0x14ab5c[_0xff3269];}}}}function freeIsNotKeyAgent(_0x52649b,_0x449de8){var _0x49cbd9=_[_0x5779('0x1f')](_0x52649b,function(_0x17bf33,_0x2568e1){var _0x43dead=_[_0x5779('0x23')](_0x17bf33[_0x5779('0x24')])?util[_0x5779('0x20')](_0x5779('0x21'),_0x17bf33['name']):_0x17bf33[_0x5779('0x24')];return _0x43dead;});for(var _0x19576f in _0x449de8){if(_0x449de8[_0x5779('0x1e')](_0x19576f)){if(!_0x49cbd9[_0x19576f]){delete _0x449de8[_0x19576f];}}}}function clearVoiceCallReports(_0x9a711f){_0x9a711f[_0x5779('0x25')]=0x0;_0x9a711f[_0x5779('0x26')]=0x0;_0x9a711f[_0x5779('0x27')]=0x0;_0x9a711f[_0x5779('0x28')]=0x0;_0x9a711f[_0x5779('0x29')]=0x0;}function clearCampaigns(_0x56d880){if(!_[_0x5779('0x2a')](_0x56d880)){for(var _0x31be9f in _0x56d880){if(_0x56d880[_0x5779('0x1e')](_0x31be9f)){_0x56d880[_0x31be9f]['ivrTotalCallsDays']=0x0;_0x56d880[_0x31be9f]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x54ac89){if(!_['isEmpty'](_0x54ac89)){for(var _0xab04b7 in _0x54ac89){if(_0x54ac89['hasOwnProperty'](_0xab04b7)){_0x54ac89[_0xab04b7][_0x5779('0x25')]=0x0;_0x54ac89[_0xab04b7]['answered']=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2b')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2c')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x27')]=0x0;_0x54ac89[_0xab04b7]['sumDuration']=0x0;_0x54ac89[_0xab04b7][_0x5779('0x29')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2d')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2e')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2f')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x30')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x31')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x32')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x33')]=0x0;_0x54ac89[_0xab04b7]['outboundDropCallsDayCallersExit']=0x0;_0x54ac89[_0xab04b7][_0x5779('0x34')]=0x0;_0x54ac89[_0xab04b7]['outboundOriginateFailureCallsDay']=0x0;_0x54ac89[_0xab04b7][_0x5779('0x35')]=0x0;_0x54ac89[_0xab04b7]['outboundReCallsDay']=0x0;_0x54ac89[_0xab04b7][_0x5779('0x2d')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x36')]=0x0;_0x54ac89[_0xab04b7][_0x5779('0x37')]=!![];}}}}Realtime[_0x5779('0x38')][_0x5779('0x39')]=function(_0x1a3b53,_0x447ebf){for(var _0x2b9630 in _0x447ebf){if(_0x1a3b53[_0x5779('0x1e')](_0x2b9630)){_0x1a3b53[_0x2b9630]=_0x447ebf[_0x2b9630];}}};Realtime[_0x5779('0x38')][_0x5779('0x3a')]=function(){var _0x295f07=this;return function(_0x1de71e){if(_0x1de71e){freeIsNotKeyAgent(_0x1de71e,_0x295f07[_0x5779('0x3b')]);for(var _0x210312=0x0,_0x35115a={},_0x3f4c00={};_0x210312<_0x1de71e['length'];_0x210312+=0x1){_0x35115a=_0x1de71e[_0x210312];var _0x401ac5=_['isNil'](_0x35115a[_0x5779('0x24')])?util['format'](_0x5779('0x21'),_0x35115a['name']):_0x35115a[_0x5779('0x24')];if(_[_0x5779('0x3c')](_0x295f07[_0x5779('0x3b')][_0x401ac5])){_0x295f07['agents'][_0x401ac5]=new Agent(_0x35115a);}else{_0x295f07['mergeFromDatabase'](_0x295f07['agents'][_0x401ac5],_0x35115a);}}}return _0x295f07[_0x5779('0x3b')];};};Realtime[_0x5779('0x38')]['initTelephones']=function(){var _0x28e5fa=this;return function(_0xbe2997){if(_0xbe2997){freeIsNotKeySip(_0xbe2997,_0x28e5fa[_0x5779('0x3d')]);for(var _0x5a6620=0x0,_0x5a18c3={},_0x398486={};_0x5a6620<_0xbe2997[_0x5779('0x3e')];_0x5a6620+=0x1){_0x5a18c3=_0xbe2997[_0x5a6620];if(_['isUndefined'](_0x28e5fa[_0x5779('0x3d')][util['format']('SIP/%s',_0x5a18c3['name'])])){_0x28e5fa['telephones'][util[_0x5779('0x20')](_0x5779('0x21'),_0x5a18c3[_0x5779('0x22')])]=new Telephone(_0x5a18c3);}else{_0x28e5fa[_0x5779('0x39')](_0x28e5fa['telephones'][util[_0x5779('0x20')](_0x5779('0x21'),_0x5a18c3['name'])],_0x5a18c3);}}}return _0x28e5fa[_0x5779('0x3d')];};};Realtime[_0x5779('0x38')][_0x5779('0x3f')]=function(){var _0x249365=this;return function(_0x10f588){if(_0x10f588){freeIsNotKeySip(_0x10f588,_0x249365['trunks']);for(var _0x345e87=0x0,_0x29fab6={},_0x3f643d={};_0x345e87<_0x10f588[_0x5779('0x3e')];_0x345e87+=0x1){_0x29fab6=_0x10f588[_0x345e87];if(_[_0x5779('0x3c')](_0x249365[_0x5779('0xd')][util[_0x5779('0x20')](_0x5779('0x21'),_0x29fab6[_0x5779('0x22')])])){_0x249365[_0x5779('0xd')][util[_0x5779('0x20')](_0x5779('0x21'),_0x29fab6['name'])]=new Trunk(_0x29fab6);}else{_0x249365[_0x5779('0x39')](_0x249365[_0x5779('0xd')][util[_0x5779('0x20')]('SIP/%s',_0x29fab6[_0x5779('0x22')])],_0x29fab6);}}}return _0x249365[_0x5779('0xd')];};};Realtime['prototype'][_0x5779('0x40')]=function(){var _0x56e161=this;return function(_0x367337){if(_0x367337){freeIsNotKey(_0x367337,_0x56e161['voiceQueues'],_0x5779('0x22'));for(var _0x47e575=0x0,_0x23c509={},_0x472410={};_0x47e575<_0x367337[_0x5779('0x3e')];_0x47e575+=0x1){_0x23c509=_0x367337[_0x47e575];if(_[_0x5779('0x3c')](_0x56e161[_0x5779('0xe')][_0x23c509[_0x5779('0x22')]])){_0x56e161[_0x5779('0xe')][_0x23c509[_0x5779('0x22')]]=new VoiceQueue(_0x23c509);}else{_0x56e161[_0x5779('0x39')](_0x56e161[_0x5779('0xe')][_0x23c509[_0x5779('0x22')]],_0x23c509);}}}return _0x56e161['voiceQueues'];};};Realtime['prototype'][_0x5779('0x41')]=function(){var _0x4ffd88=this;return function(_0x49b023){if(_0x49b023){freeIsNotKey(_0x49b023,_0x4ffd88['triggers'],'id');for(var _0x4f4cec=0x0,_0xd55314={},_0x57930e={};_0x4f4cec<_0x49b023[_0x5779('0x3e')];_0x4f4cec+=0x1){_0xd55314=_0x49b023[_0x4f4cec];if(_[_0x5779('0x3c')](_0x4ffd88['triggers'][_0xd55314['id']])){_0x4ffd88['triggers'][_0xd55314['id']]=new Trigger(_0xd55314);}else{_0x4ffd88[_0x5779('0x39')](_0x4ffd88[_0x5779('0xf')][_0xd55314['id']],_0xd55314);}}}return _0x4ffd88['triggers'];};};Realtime[_0x5779('0x38')][_0x5779('0x42')]=function(){var _0x3f7f0e=this;return function(_0x19aa44){if(_0x19aa44){freeIsNotKey(_0x19aa44,_0x3f7f0e['templates'],'id');for(var _0x452672=0x0,_0x4edbdd={},_0x17bd2d={};_0x452672<_0x19aa44[_0x5779('0x3e')];_0x452672+=0x1){_0x4edbdd=_0x19aa44[_0x452672];if(_[_0x5779('0x3c')](_0x3f7f0e[_0x5779('0x11')][_0x4edbdd['id']])){_0x3f7f0e[_0x5779('0x11')][_0x4edbdd['id']]=new Template(_0x4edbdd);}else{_0x3f7f0e[_0x5779('0x39')](_0x3f7f0e['templates'][_0x4edbdd['id']],_0x4edbdd);}}}return _0x3f7f0e[_0x5779('0x11')];};};Realtime[_0x5779('0x38')][_0x5779('0x43')]=function(){var _0x559a78=this;return function(_0x4f4d88){if(_0x4f4d88){freeIsNotKey(_0x4f4d88,_0x559a78['zendeskAccounts'],'id');for(var _0xd6df87=0x0,_0x23094b={},_0x315f67={};_0xd6df87<_0x4f4d88[_0x5779('0x3e')];_0xd6df87+=0x1){_0x23094b=_0x4f4d88[_0xd6df87];if(_['isUndefined'](_0x559a78[_0x5779('0x16')][_0x23094b['id']])){_0x559a78[_0x5779('0x16')][_0x23094b['id']]=new ZendeskAccount(_0x23094b);}else{_0x559a78[_0x5779('0x39')](_0x559a78['zendeskAccounts'][_0x23094b['id']],_0x23094b);}}}return _0x559a78[_0x5779('0x16')];};};Realtime[_0x5779('0x38')][_0x5779('0x44')]=function(){var _0x258e4b=this;return function(_0x526154){if(_0x526154){freeIsNotKey(_0x526154,_0x258e4b[_0x5779('0x17')],'id');for(var _0x1e982c=0x0,_0x550b3f={},_0x1f67fd={};_0x1e982c<_0x526154[_0x5779('0x3e')];_0x1e982c+=0x1){_0x550b3f=_0x526154[_0x1e982c];if(_[_0x5779('0x3c')](_0x258e4b[_0x5779('0x17')][_0x550b3f['id']])){_0x258e4b[_0x5779('0x17')][_0x550b3f['id']]=new SalesforceAccount(_0x550b3f);}else{_0x258e4b[_0x5779('0x39')](_0x258e4b['salesforceAccounts'][_0x550b3f['id']],_0x550b3f);}}}return _0x258e4b[_0x5779('0x17')];};};Realtime[_0x5779('0x38')][_0x5779('0x45')]=function(){var _0x332461=this;return function(_0x219c57){if(_0x219c57){freeIsNotKey(_0x219c57,_0x332461[_0x5779('0x46')],'id');for(var _0x1f60cf=0x0,_0x145389={},_0xc86e39={};_0x1f60cf<_0x219c57[_0x5779('0x3e')];_0x1f60cf+=0x1){_0x145389=_0x219c57[_0x1f60cf];if(_[_0x5779('0x3c')](_0x332461[_0x5779('0x46')][_0x145389['id']])){_0x332461['freshdeskAccounts'][_0x145389['id']]=new FreshdeskAccount(_0x145389);}else{_0x332461[_0x5779('0x39')](_0x332461[_0x5779('0x46')][_0x145389['id']],_0x145389);}}}return _0x332461[_0x5779('0x46')];};};Realtime[_0x5779('0x38')][_0x5779('0x47')]=function(){var _0x478656=this;return function(_0x57d59c){if(_0x57d59c){freeIsNotKey(_0x57d59c,_0x478656['zohoAccounts'],'id');for(var _0x5e9642=0x0,_0x549ad1={},_0x1fc303={};_0x5e9642<_0x57d59c[_0x5779('0x3e')];_0x5e9642+=0x1){_0x549ad1=_0x57d59c[_0x5e9642];if(_['isUndefined'](_0x478656['zohoAccounts'][_0x549ad1['id']])){_0x478656[_0x5779('0x19')][_0x549ad1['id']]=new ZohoAccount(_0x549ad1);}else{_0x478656[_0x5779('0x39')](_0x478656[_0x5779('0x19')][_0x549ad1['id']],_0x549ad1);}}}return _0x478656[_0x5779('0x19')];};};Realtime[_0x5779('0x38')][_0x5779('0x48')]=function(){var _0x289e04=this;return function(_0x5c2863){if(_0x5c2863){freeIsNotKey(_0x5c2863,_0x289e04['deskAccounts'],'id');for(var _0x1d1e73=0x0,_0x466553={},_0x2db4f7={};_0x1d1e73<_0x5c2863[_0x5779('0x3e')];_0x1d1e73+=0x1){_0x466553=_0x5c2863[_0x1d1e73];if(_['isUndefined'](_0x289e04[_0x5779('0x49')][_0x466553['id']])){_0x289e04[_0x5779('0x49')][_0x466553['id']]=new DeskAccount(_0x466553);}else{_0x289e04[_0x5779('0x39')](_0x289e04[_0x5779('0x49')][_0x466553['id']],_0x466553);}}}return _0x289e04[_0x5779('0x49')];};};Realtime['prototype'][_0x5779('0x4a')]=function(){var _0x3a4fd1=this;return function(_0x132a3b){if(_0x132a3b){freeIsNotKey(_0x132a3b,_0x3a4fd1['sugarcrmAccounts'],'id');for(var _0x588550=0x0,_0x581726={},_0x58a0e3={};_0x588550<_0x132a3b[_0x5779('0x3e')];_0x588550+=0x1){_0x581726=_0x132a3b[_0x588550];if(_[_0x5779('0x3c')](_0x3a4fd1[_0x5779('0x18')][_0x581726['id']])){_0x3a4fd1['sugarcrmAccounts'][_0x581726['id']]=new SugarcrmAccount(_0x581726);}else{_0x3a4fd1[_0x5779('0x39')](_0x3a4fd1[_0x5779('0x18')][_0x581726['id']],_0x581726);}}}return _0x3a4fd1[_0x5779('0x18')];};};Realtime[_0x5779('0x38')]['initVtigerAccounts']=function(){var _0x288276=this;return function(_0x5d0178){if(_0x5d0178){freeIsNotKey(_0x5d0178,_0x288276[_0x5779('0x1a')],'id');for(var _0x15b24b=0x0,_0x2e7978={},_0x4e49a8={};_0x15b24b<_0x5d0178['length'];_0x15b24b+=0x1){_0x2e7978=_0x5d0178[_0x15b24b];if(_['isUndefined'](_0x288276[_0x5779('0x1a')][_0x2e7978['id']])){_0x288276[_0x5779('0x1a')][_0x2e7978['id']]=new VtigerAccount(_0x2e7978);}else{_0x288276['mergeFromDatabase'](_0x288276[_0x5779('0x1a')][_0x2e7978['id']],_0x2e7978);}}}return _0x288276[_0x5779('0x1a')];};};Realtime[_0x5779('0x38')][_0x5779('0x4b')]=function(){var _0xd0e273=this;return function(_0x3ce260){if(_0x3ce260){freeIsNotKey(_0x3ce260,_0xd0e273[_0x5779('0x1b')],'id');for(var _0x24d12c=0x0,_0x375909={},_0x1fab7e={};_0x24d12c<_0x3ce260['length'];_0x24d12c+=0x1){_0x375909=_0x3ce260[_0x24d12c];if(_[_0x5779('0x3c')](_0xd0e273[_0x5779('0x1b')][_0x375909['id']])){_0xd0e273['servicenowAccounts'][_0x375909['id']]=new ServicenowAccount(_0x375909);}else{_0xd0e273[_0x5779('0x39')](_0xd0e273[_0x5779('0x1b')][_0x375909['id']],_0x375909);}}}return _0xd0e273['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x4b9ebf=this;return function(_0x232b1b){if(_0x232b1b){freeIsNotKey(_0x232b1b,_0x4b9ebf['dynamics365Accounts'],'id');for(var _0x2bdcd9=0x0,_0x35acdd={},_0x2b1215={};_0x2bdcd9<_0x232b1b[_0x5779('0x3e')];_0x2bdcd9+=0x1){_0x35acdd=_0x232b1b[_0x2bdcd9];if(_[_0x5779('0x3c')](_0x4b9ebf[_0x5779('0x1c')][_0x35acdd['id']])){_0x4b9ebf[_0x5779('0x1c')][_0x35acdd['id']]=new Dynamics365Account(_0x35acdd);}else{_0x4b9ebf[_0x5779('0x39')](_0x4b9ebf['dynamics365Accounts'][_0x35acdd['id']],_0x35acdd);}}}return _0x4b9ebf[_0x5779('0x1c')];};};Realtime[_0x5779('0x38')][_0x5779('0x4c')]=function(){var _0x21edbf=this;return function(_0x570f17){if(_0x570f17){freeIsNotKey(_0x570f17,_0x21edbf[_0x5779('0x4d')],'id');for(var _0x17b52b=0x0,_0xead30a={},_0x55a230={};_0x17b52b<_0x570f17['length'];_0x17b52b+=0x1){_0xead30a=_0x570f17[_0x17b52b];if(_[_0x5779('0x3c')](_0x21edbf['freshsalesAccounts'][_0xead30a['id']])){_0x21edbf[_0x5779('0x4d')][_0xead30a['id']]=new FreshsalesAccount(_0xead30a);}else{_0x21edbf['mergeFromDatabase'](_0x21edbf[_0x5779('0x4d')][_0xead30a['id']],_0xead30a);}}}return _0x21edbf['freshsalesAccounts'];};};Realtime[_0x5779('0x38')][_0x5779('0x4e')]=function(){var _0x53b096=this;return function(_0x18e6db){for(var _0xec37c9=0x0;_0xec37c9<_0x18e6db[_0x5779('0x3e')];_0xec37c9+=0x1){_[_0x5779('0x4f')](_0x53b096[_0x5779('0xe')][_0x18e6db[_0xec37c9][_0x5779('0x22')]],_0x18e6db[_0xec37c9]);}return _0x53b096['voiceQueues'];};};Realtime[_0x5779('0x38')][_0x5779('0x50')]=function(){var _0x18e388=this;return function(_0x141cab){clearVoiceQueues(_0x18e388[_0x5779('0xe')]);if(_0x141cab){_0x141cab=_[_0x5779('0x51')](_0x141cab,_0x5779('0x52'));for(var _0xfd5c90 in _0x141cab){if(_0x141cab['hasOwnProperty'](_0xfd5c90)){var _0x196d7b={};for(var _0x5e45e7=0x0;_0x5e45e7<_0x141cab[_0xfd5c90]['length'];_0x5e45e7+=0x1){var _0x289342=_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x53')];if(_0x18e388[_0x5779('0xe')][_0x289342]){if(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x54')]){_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x2b')]+=0x1;}if(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x55')]){_0x18e388['voiceQueues'][_0x289342]['abandoned']+=0x1;}_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x27')]+=moment(_0x141cab[_0xfd5c90][_0x5e45e7]['queuecallerleaveAt'])['diff'](moment(_0x141cab[_0xfd5c90][_0x5e45e7]['queuecallerjoinAt']),_0x5779('0x56'))||0x0;if(_0x5e45e7===_0x141cab[_0xfd5c90]['length']-0x1){_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x28')]+=moment(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x57')]||_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x58')]||_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x59')])[_0x5779('0x5a')](moment(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x5b')]),_0x5779('0x56'))||0x0;_0x18e388['voiceQueues'][_0x289342]['total']+=0x1;if(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x5c')]){_0x18e388['voiceQueues'][_0x289342][_0x5779('0x26')]+=0x1;_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x29')]+=moment(_0x141cab[_0xfd5c90][_0x5e45e7]['queuecallercompleteAt'])['diff'](moment(_0x141cab[_0xfd5c90][_0x5e45e7][_0x5779('0x5d')]),'seconds')||0x0;}}else{_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x28')]+=_0x18e388[_0x5779('0xe')][_0x289342][_0x5779('0x27')]||0x0;}}}}}}return _0x18e388['voiceQueues'];};};Realtime[_0x5779('0x38')][_0x5779('0x5e')]=function(){var _0xedc8df=this;return function(_0x95b1e){clearVoiceCallReports(_0xedc8df['outbound']);if(_0x95b1e){for(var _0x47cd22=0x0;_0x47cd22<_0x95b1e['length'];_0x47cd22+=0x1){_0xedc8df['outbound'][_0x5779('0x25')]+=0x1;_0xedc8df[_0x5779('0x12')][_0x5779('0x28')]+=_0x95b1e[_0x47cd22][_0x5779('0x5f')];if(_0x95b1e[_0x47cd22]['disposition']===_0x5779('0x60')){_0xedc8df[_0x5779('0x12')][_0x5779('0x26')]+=0x1;_0xedc8df['outbound']['sumHoldTime']+=_0x95b1e[_0x47cd22][_0x5779('0x5f')]-_0x95b1e[_0x47cd22]['billableseconds']||0x0;_0xedc8df[_0x5779('0x12')]['sumBillable']+=_0x95b1e[_0x47cd22][_0x5779('0x61')];}}}return _0xedc8df['outbound'];};};Realtime[_0x5779('0x38')][_0x5779('0x62')]=function(){var _0x32b28e=this;return function(_0x305dd3){if(_0x305dd3){freeIsNotKey(_0x305dd3,_0x32b28e[_0x5779('0x10')],_0x5779('0x22'));for(var _0x436d30=0x0,_0x11b670={};_0x436d30<_0x305dd3[_0x5779('0x3e')];_0x436d30+=0x1){_0x11b670=_0x305dd3[_0x436d30];if(_[_0x5779('0x3c')](_0x32b28e[_0x5779('0x10')][_0x11b670[_0x5779('0x22')]])){_0x32b28e[_0x5779('0x10')][_0x11b670[_0x5779('0x22')]]=new Campaign(_0x11b670);}else{_0x32b28e[_0x5779('0x39')](_0x32b28e[_0x5779('0x10')][_0x11b670[_0x5779('0x22')]],_0x11b670);_0x32b28e[_0x5779('0x10')][_0x11b670[_0x5779('0x22')]]['dialQueueProject']=_0x11b670[_0x5779('0x63')]?_0x11b670[_0x5779('0x63')][_0x5779('0x22')]:undefined;}}}return _0x32b28e[_0x5779('0x10')];};};Realtime['prototype'][_0x5779('0x64')]=function(){var _0x47cd68=this;return function(_0x263c5b){if(_0x263c5b){freeIsNotKey(_0x263c5b,_0x47cd68[_0x5779('0x13')],'id');for(var _0x3e514b=0x0,_0x27d598={};_0x3e514b<_0x263c5b[_0x5779('0x3e')];_0x3e514b+=0x1){_0x27d598=_0x263c5b[_0x3e514b];if(_['isUndefined'](_0x47cd68['voiceExtensions'][_0x27d598['id']])){_0x47cd68[_0x5779('0x13')][_0x27d598['id']]=new VoiceExtension(_0x27d598);}else{_0x47cd68[_0x5779('0x39')](_0x47cd68[_0x5779('0x13')][_0x27d598['id']],_0x27d598);}}}return _0x47cd68[_0x5779('0x13')];};};Realtime[_0x5779('0x38')][_0x5779('0x65')]=function(){var _0x84f9f9=this;return function(_0xd4002d){clearCampaigns(_0x84f9f9[_0x5779('0x10')]);for(var _0x296872=0x0;_0x296872<_0xd4002d[_0x5779('0x3e')];_0x296872+=0x1){_[_0x5779('0x4f')](_0x84f9f9[_0x5779('0x10')][_0xd4002d[_0x296872]['name']],_0xd4002d[_0x296872]);}return _0x84f9f9[_0x5779('0x10')];};};Realtime[_0x5779('0x38')][_0x5779('0x66')]=function(){var _0x1fc471=this;return function(_0x2aa903){if(_0x2aa903){freeIsNotKey(_0x2aa903,_0x1fc471[_0x5779('0x1d')],'id');for(var _0x5c62db=0x0,_0x4f66a7={},_0x5c73a0={};_0x5c62db<_0x2aa903[_0x5779('0x3e')];_0x5c62db+=0x1){_0x4f66a7=_0x2aa903[_0x5c62db];if(_[_0x5779('0x3c')](_0x1fc471[_0x5779('0x1d')][_0x4f66a7['id']])){_0x1fc471[_0x5779('0x1d')][_0x4f66a7['id']]=new FaxAccount(_0x4f66a7);}else{_0x1fc471['mergeFromDatabase'](_0x1fc471['faxAccounts'][_0x4f66a7['id']],_0x4f66a7);}}}return _0x1fc471[_0x5779('0x1d')];};};module[_0x5779('0x67')]=Realtime;
\ No newline at end of file
+var _0xea21=['initVoiceQueueReports','uniqueid','queue','queuecallerexit','abandoned','diff','queuecallerjoinAt','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','answered','queuecallercompleteAt','initVoiceCallReports','duration','disposition','ANSWERED','initCampaigns','campaigns','dialQueueProject','initVoiceExtensions','initFaxAccounts','exports','util','moment','../model/agent','../model/telephone','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','format','SIP/%s','name','hasOwnProperty','mapKeys','isNil','interface','total','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isUndefined','initTelephones','initTrunks','initVoiceQueues','initTriggers','initTemplates','templates','initZendeskAccounts','zendeskAccounts','initFreshdeskAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge'];(function(_0x3c60fc,_0x593ef5){var _0x495fd2=function(_0x33e7ea){while(--_0x33e7ea){_0x3c60fc['push'](_0x3c60fc['shift']());}};_0x495fd2(++_0x593ef5);}(_0xea21,0x80));var _0x1ea2=function(_0x16f359,_0x26c957){_0x16f359=_0x16f359-0x0;var _0x29683d=_0xea21[_0x16f359];return _0x29683d;};'use strict';var util=require(_0x1ea2('0x0'));var _=require('lodash');var moment=require(_0x1ea2('0x1'));var Agent=require(_0x1ea2('0x2'));var Telephone=require(_0x1ea2('0x3'));var Trunk=require('../model/trunk');var VoiceQueue=require(_0x1ea2('0x4'));var Trigger=require('../model/trigger');var Template=require(_0x1ea2('0x5'));var Campaign=require(_0x1ea2('0x6'));var VoiceExtension=require(_0x1ea2('0x7'));var ZendeskAccount=require(_0x1ea2('0x8'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x1ea2('0x9'));var SugarcrmAccount=require(_0x1ea2('0xa'));var ZohoAccount=require(_0x1ea2('0xb'));var DeskAccount=require(_0x1ea2('0xc'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x1ea2('0xd'));var Dynamics365Account=require(_0x1ea2('0xe'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x1ea2('0xf'));var Realtime=function(){this[_0x1ea2('0x10')]={};this[_0x1ea2('0x11')]={};this[_0x1ea2('0x12')]={};this[_0x1ea2('0x13')]={};this[_0x1ea2('0x14')]={};this['campaigns']={};this['templates']={};this[_0x1ea2('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x1ea2('0x16')]={};this[_0x1ea2('0x17')]={};this[_0x1ea2('0x18')]={};this[_0x1ea2('0x19')]={};this[_0x1ea2('0x1a')]={};this[_0x1ea2('0x1b')]={};this['zendeskAccounts']={};this[_0x1ea2('0x1c')]={};this[_0x1ea2('0x1d')]={};this[_0x1ea2('0x1e')]={};this['zohoAccounts']={};this[_0x1ea2('0x1f')]={};this[_0x1ea2('0x20')]={};this[_0x1ea2('0x21')]={};this[_0x1ea2('0x22')]={};this['freshsalesAccounts']={};this[_0x1ea2('0x23')]={};};function freeIsNotKey(_0x372dc5,_0x27bb84,_0x14b984){var _0x28040b=_['mapKeys'](_0x372dc5,function(_0x1d006b,_0x1890cc){return _0x1d006b[_0x14b984];});for(var _0x1819b2 in _0x27bb84){if(_0x27bb84['hasOwnProperty'](_0x1819b2)){if(!_0x28040b[_0x1819b2]){delete _0x27bb84[_0x1819b2];}}}}function freeIsNotKeySip(_0x2c43cf,_0x4255ed){var _0x873c48=_['mapKeys'](_0x2c43cf,function(_0x39142c,_0x9a01d7){return util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x39142c[_0x1ea2('0x26')]);});for(var _0x5c1329 in _0x4255ed){if(_0x4255ed[_0x1ea2('0x27')](_0x5c1329)){if(!_0x873c48[_0x5c1329]){delete _0x4255ed[_0x5c1329];}}}}function freeIsNotKeyAgent(_0x1f470a,_0x176680){var _0x3477e2=_[_0x1ea2('0x28')](_0x1f470a,function(_0x35a87f,_0x1b1420){var _0x3c4c95=_[_0x1ea2('0x29')](_0x35a87f['interface'])?util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x35a87f[_0x1ea2('0x26')]):_0x35a87f[_0x1ea2('0x2a')];return _0x3c4c95;});for(var _0x5560cc in _0x176680){if(_0x176680['hasOwnProperty'](_0x5560cc)){if(!_0x3477e2[_0x5560cc]){delete _0x176680[_0x5560cc];}}}}function clearVoiceCallReports(_0x1a7e89){_0x1a7e89[_0x1ea2('0x2b')]=0x0;_0x1a7e89['answered']=0x0;_0x1a7e89[_0x1ea2('0x2c')]=0x0;_0x1a7e89[_0x1ea2('0x2d')]=0x0;_0x1a7e89[_0x1ea2('0x2e')]=0x0;}function clearCampaigns(_0x232d0e){if(!_[_0x1ea2('0x2f')](_0x232d0e)){for(var _0xfd52b2 in _0x232d0e){if(_0x232d0e['hasOwnProperty'](_0xfd52b2)){_0x232d0e[_0xfd52b2]['ivrTotalCallsDays']=0x0;_0x232d0e[_0xfd52b2][_0x1ea2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x22ad41){if(!_[_0x1ea2('0x2f')](_0x22ad41)){for(var _0x2df7ef in _0x22ad41){if(_0x22ad41[_0x1ea2('0x27')](_0x2df7ef)){_0x22ad41[_0x2df7ef][_0x1ea2('0x2b')]=0x0;_0x22ad41[_0x2df7ef]['answered']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x31')]=0x0;_0x22ad41[_0x2df7ef]['abandoned']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2c')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2d')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x2e')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x32')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x33')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x34')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x35')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x36')]=0x0;_0x22ad41[_0x2df7ef]['outboundUnknownCallsDay']=0x0;_0x22ad41[_0x2df7ef]['outboundDropCallsDayTimeout']=0x0;_0x22ad41[_0x2df7ef]['outboundDropCallsDayCallersExit']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x37')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x38')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x39')]=0x0;_0x22ad41[_0x2df7ef]['outboundReCallsDay']=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x32')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x3a')]=0x0;_0x22ad41[_0x2df7ef][_0x1ea2('0x3b')]=!![];}}}}Realtime[_0x1ea2('0x3c')][_0x1ea2('0x3d')]=function(_0x152e2b,_0x7c2290){for(var _0x567bb6 in _0x7c2290){if(_0x152e2b[_0x1ea2('0x27')](_0x567bb6)){_0x152e2b[_0x567bb6]=_0x7c2290[_0x567bb6];}}};Realtime[_0x1ea2('0x3c')]['initAgents']=function(){var _0x2b14b6=this;return function(_0x259c1e){if(_0x259c1e){freeIsNotKeyAgent(_0x259c1e,_0x2b14b6[_0x1ea2('0x10')]);for(var _0x3266a7=0x0,_0x3716ac={},_0x4b78bb={};_0x3266a7<_0x259c1e[_0x1ea2('0x3e')];_0x3266a7+=0x1){_0x3716ac=_0x259c1e[_0x3266a7];var _0x4d3912=_[_0x1ea2('0x29')](_0x3716ac[_0x1ea2('0x2a')])?util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x3716ac[_0x1ea2('0x26')]):_0x3716ac[_0x1ea2('0x2a')];if(_[_0x1ea2('0x3f')](_0x2b14b6[_0x1ea2('0x10')][_0x4d3912])){_0x2b14b6[_0x1ea2('0x10')][_0x4d3912]=new Agent(_0x3716ac);}else{_0x2b14b6[_0x1ea2('0x3d')](_0x2b14b6[_0x1ea2('0x10')][_0x4d3912],_0x3716ac);}}}return _0x2b14b6[_0x1ea2('0x10')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x40')]=function(){var _0x45d48b=this;return function(_0x5f2966){if(_0x5f2966){freeIsNotKeySip(_0x5f2966,_0x45d48b['telephones']);for(var _0x411766=0x0,_0x7acab0={},_0x3d241c={};_0x411766<_0x5f2966[_0x1ea2('0x3e')];_0x411766+=0x1){_0x7acab0=_0x5f2966[_0x411766];if(_['isUndefined'](_0x45d48b[_0x1ea2('0x11')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x7acab0['name'])])){_0x45d48b[_0x1ea2('0x11')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x7acab0[_0x1ea2('0x26')])]=new Telephone(_0x7acab0);}else{_0x45d48b['mergeFromDatabase'](_0x45d48b['telephones'][util['format'](_0x1ea2('0x25'),_0x7acab0[_0x1ea2('0x26')])],_0x7acab0);}}}return _0x45d48b[_0x1ea2('0x11')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x41')]=function(){var _0x2153c4=this;return function(_0x182032){if(_0x182032){freeIsNotKeySip(_0x182032,_0x2153c4[_0x1ea2('0x12')]);for(var _0x1b8dcf=0x0,_0x1cd2fe={},_0x4a8fc2={};_0x1b8dcf<_0x182032[_0x1ea2('0x3e')];_0x1b8dcf+=0x1){_0x1cd2fe=_0x182032[_0x1b8dcf];if(_['isUndefined'](_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x1cd2fe[_0x1ea2('0x26')])])){_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')]('SIP/%s',_0x1cd2fe[_0x1ea2('0x26')])]=new Trunk(_0x1cd2fe);}else{_0x2153c4['mergeFromDatabase'](_0x2153c4[_0x1ea2('0x12')][util[_0x1ea2('0x24')](_0x1ea2('0x25'),_0x1cd2fe['name'])],_0x1cd2fe);}}}return _0x2153c4['trunks'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x42')]=function(){var _0x199a80=this;return function(_0x29d239){if(_0x29d239){freeIsNotKey(_0x29d239,_0x199a80['voiceQueues'],'name');for(var _0x4f0f7b=0x0,_0x291338={},_0x52fb1f={};_0x4f0f7b<_0x29d239[_0x1ea2('0x3e')];_0x4f0f7b+=0x1){_0x291338=_0x29d239[_0x4f0f7b];if(_[_0x1ea2('0x3f')](_0x199a80[_0x1ea2('0x13')][_0x291338['name']])){_0x199a80['voiceQueues'][_0x291338[_0x1ea2('0x26')]]=new VoiceQueue(_0x291338);}else{_0x199a80['mergeFromDatabase'](_0x199a80['voiceQueues'][_0x291338[_0x1ea2('0x26')]],_0x291338);}}}return _0x199a80[_0x1ea2('0x13')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x43')]=function(){var _0x2e3491=this;return function(_0x3dc54b){if(_0x3dc54b){freeIsNotKey(_0x3dc54b,_0x2e3491['triggers'],'id');for(var _0x567394=0x0,_0x4e1a0e={},_0x57c106={};_0x567394<_0x3dc54b['length'];_0x567394+=0x1){_0x4e1a0e=_0x3dc54b[_0x567394];if(_[_0x1ea2('0x3f')](_0x2e3491['triggers'][_0x4e1a0e['id']])){_0x2e3491[_0x1ea2('0x14')][_0x4e1a0e['id']]=new Trigger(_0x4e1a0e);}else{_0x2e3491[_0x1ea2('0x3d')](_0x2e3491[_0x1ea2('0x14')][_0x4e1a0e['id']],_0x4e1a0e);}}}return _0x2e3491[_0x1ea2('0x14')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x44')]=function(){var _0x5ebcc0=this;return function(_0x1cbf3a){if(_0x1cbf3a){freeIsNotKey(_0x1cbf3a,_0x5ebcc0[_0x1ea2('0x45')],'id');for(var _0x4e6dbc=0x0,_0x2876cb={},_0x18dc66={};_0x4e6dbc<_0x1cbf3a[_0x1ea2('0x3e')];_0x4e6dbc+=0x1){_0x2876cb=_0x1cbf3a[_0x4e6dbc];if(_[_0x1ea2('0x3f')](_0x5ebcc0[_0x1ea2('0x45')][_0x2876cb['id']])){_0x5ebcc0['templates'][_0x2876cb['id']]=new Template(_0x2876cb);}else{_0x5ebcc0['mergeFromDatabase'](_0x5ebcc0[_0x1ea2('0x45')][_0x2876cb['id']],_0x2876cb);}}}return _0x5ebcc0[_0x1ea2('0x45')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x46')]=function(){var _0x479a7b=this;return function(_0x56c59e){if(_0x56c59e){freeIsNotKey(_0x56c59e,_0x479a7b['zendeskAccounts'],'id');for(var _0x334eb8=0x0,_0x497e7c={},_0xd10e1={};_0x334eb8<_0x56c59e['length'];_0x334eb8+=0x1){_0x497e7c=_0x56c59e[_0x334eb8];if(_['isUndefined'](_0x479a7b[_0x1ea2('0x47')][_0x497e7c['id']])){_0x479a7b['zendeskAccounts'][_0x497e7c['id']]=new ZendeskAccount(_0x497e7c);}else{_0x479a7b[_0x1ea2('0x3d')](_0x479a7b['zendeskAccounts'][_0x497e7c['id']],_0x497e7c);}}}return _0x479a7b[_0x1ea2('0x47')];};};Realtime[_0x1ea2('0x3c')]['initSalesforceAccounts']=function(){var _0x48d2c0=this;return function(_0x3fd9e0){if(_0x3fd9e0){freeIsNotKey(_0x3fd9e0,_0x48d2c0[_0x1ea2('0x1c')],'id');for(var _0x363929=0x0,_0x440741={},_0x180d67={};_0x363929<_0x3fd9e0[_0x1ea2('0x3e')];_0x363929+=0x1){_0x440741=_0x3fd9e0[_0x363929];if(_['isUndefined'](_0x48d2c0['salesforceAccounts'][_0x440741['id']])){_0x48d2c0[_0x1ea2('0x1c')][_0x440741['id']]=new SalesforceAccount(_0x440741);}else{_0x48d2c0[_0x1ea2('0x3d')](_0x48d2c0['salesforceAccounts'][_0x440741['id']],_0x440741);}}}return _0x48d2c0[_0x1ea2('0x1c')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x48')]=function(){var _0x39daca=this;return function(_0xf300e4){if(_0xf300e4){freeIsNotKey(_0xf300e4,_0x39daca['freshdeskAccounts'],'id');for(var _0x44e5e9=0x0,_0x493b23={},_0x3eedd2={};_0x44e5e9<_0xf300e4[_0x1ea2('0x3e')];_0x44e5e9+=0x1){_0x493b23=_0xf300e4[_0x44e5e9];if(_[_0x1ea2('0x3f')](_0x39daca[_0x1ea2('0x1e')][_0x493b23['id']])){_0x39daca['freshdeskAccounts'][_0x493b23['id']]=new FreshdeskAccount(_0x493b23);}else{_0x39daca[_0x1ea2('0x3d')](_0x39daca['freshdeskAccounts'][_0x493b23['id']],_0x493b23);}}}return _0x39daca['freshdeskAccounts'];};};Realtime['prototype']['initZohoAccounts']=function(){var _0x212391=this;return function(_0x9e0f){if(_0x9e0f){freeIsNotKey(_0x9e0f,_0x212391[_0x1ea2('0x49')],'id');for(var _0x5abef2=0x0,_0x3a93eb={},_0x403156={};_0x5abef2<_0x9e0f[_0x1ea2('0x3e')];_0x5abef2+=0x1){_0x3a93eb=_0x9e0f[_0x5abef2];if(_[_0x1ea2('0x3f')](_0x212391['zohoAccounts'][_0x3a93eb['id']])){_0x212391[_0x1ea2('0x49')][_0x3a93eb['id']]=new ZohoAccount(_0x3a93eb);}else{_0x212391['mergeFromDatabase'](_0x212391[_0x1ea2('0x49')][_0x3a93eb['id']],_0x3a93eb);}}}return _0x212391['zohoAccounts'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4a')]=function(){var _0x3e55cf=this;return function(_0xee03ef){if(_0xee03ef){freeIsNotKey(_0xee03ef,_0x3e55cf[_0x1ea2('0x1f')],'id');for(var _0x25f51b=0x0,_0x12682={},_0x231c73={};_0x25f51b<_0xee03ef['length'];_0x25f51b+=0x1){_0x12682=_0xee03ef[_0x25f51b];if(_[_0x1ea2('0x3f')](_0x3e55cf['deskAccounts'][_0x12682['id']])){_0x3e55cf[_0x1ea2('0x1f')][_0x12682['id']]=new DeskAccount(_0x12682);}else{_0x3e55cf[_0x1ea2('0x3d')](_0x3e55cf['deskAccounts'][_0x12682['id']],_0x12682);}}}return _0x3e55cf[_0x1ea2('0x1f')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4b')]=function(){var _0x487912=this;return function(_0x2974c2){if(_0x2974c2){freeIsNotKey(_0x2974c2,_0x487912[_0x1ea2('0x1d')],'id');for(var _0x45bb19=0x0,_0x271404={},_0x4274d2={};_0x45bb19<_0x2974c2[_0x1ea2('0x3e')];_0x45bb19+=0x1){_0x271404=_0x2974c2[_0x45bb19];if(_[_0x1ea2('0x3f')](_0x487912[_0x1ea2('0x1d')][_0x271404['id']])){_0x487912[_0x1ea2('0x1d')][_0x271404['id']]=new SugarcrmAccount(_0x271404);}else{_0x487912[_0x1ea2('0x3d')](_0x487912[_0x1ea2('0x1d')][_0x271404['id']],_0x271404);}}}return _0x487912[_0x1ea2('0x1d')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4c')]=function(){var _0x101687=this;return function(_0x53349e){if(_0x53349e){freeIsNotKey(_0x53349e,_0x101687[_0x1ea2('0x20')],'id');for(var _0x431ecc=0x0,_0x2e646b={},_0x2eb1d8={};_0x431ecc<_0x53349e[_0x1ea2('0x3e')];_0x431ecc+=0x1){_0x2e646b=_0x53349e[_0x431ecc];if(_[_0x1ea2('0x3f')](_0x101687[_0x1ea2('0x20')][_0x2e646b['id']])){_0x101687['vtigerAccounts'][_0x2e646b['id']]=new VtigerAccount(_0x2e646b);}else{_0x101687[_0x1ea2('0x3d')](_0x101687[_0x1ea2('0x20')][_0x2e646b['id']],_0x2e646b);}}}return _0x101687[_0x1ea2('0x20')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x4d')]=function(){var _0x4fd0f4=this;return function(_0x44eb20){if(_0x44eb20){freeIsNotKey(_0x44eb20,_0x4fd0f4[_0x1ea2('0x21')],'id');for(var _0x40c198=0x0,_0x2d0535={},_0x18bd90={};_0x40c198<_0x44eb20[_0x1ea2('0x3e')];_0x40c198+=0x1){_0x2d0535=_0x44eb20[_0x40c198];if(_[_0x1ea2('0x3f')](_0x4fd0f4[_0x1ea2('0x21')][_0x2d0535['id']])){_0x4fd0f4[_0x1ea2('0x21')][_0x2d0535['id']]=new ServicenowAccount(_0x2d0535);}else{_0x4fd0f4[_0x1ea2('0x3d')](_0x4fd0f4['servicenowAccounts'][_0x2d0535['id']],_0x2d0535);}}}return _0x4fd0f4[_0x1ea2('0x21')];};};Realtime['prototype'][_0x1ea2('0x4e')]=function(){var _0x1f60e4=this;return function(_0xfd8b97){if(_0xfd8b97){freeIsNotKey(_0xfd8b97,_0x1f60e4['dynamics365Accounts'],'id');for(var _0x24a4ec=0x0,_0xa0a51f={},_0x108b9f={};_0x24a4ec<_0xfd8b97[_0x1ea2('0x3e')];_0x24a4ec+=0x1){_0xa0a51f=_0xfd8b97[_0x24a4ec];if(_['isUndefined'](_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']])){_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']]=new Dynamics365Account(_0xa0a51f);}else{_0x1f60e4[_0x1ea2('0x3d')](_0x1f60e4[_0x1ea2('0x22')][_0xa0a51f['id']],_0xa0a51f);}}}return _0x1f60e4[_0x1ea2('0x22')];};};Realtime['prototype']['initFreshsalesAccounts']=function(){var _0x4e2a9c=this;return function(_0x86978a){if(_0x86978a){freeIsNotKey(_0x86978a,_0x4e2a9c[_0x1ea2('0x4f')],'id');for(var _0x524d82=0x0,_0x31c7a0={},_0xaac058={};_0x524d82<_0x86978a[_0x1ea2('0x3e')];_0x524d82+=0x1){_0x31c7a0=_0x86978a[_0x524d82];if(_[_0x1ea2('0x3f')](_0x4e2a9c[_0x1ea2('0x4f')][_0x31c7a0['id']])){_0x4e2a9c[_0x1ea2('0x4f')][_0x31c7a0['id']]=new FreshsalesAccount(_0x31c7a0);}else{_0x4e2a9c[_0x1ea2('0x3d')](_0x4e2a9c['freshsalesAccounts'][_0x31c7a0['id']],_0x31c7a0);}}}return _0x4e2a9c['freshsalesAccounts'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x50')]=function(){var _0x5dc262=this;return function(_0x27139d){for(var _0x938c90=0x0;_0x938c90<_0x27139d['length'];_0x938c90+=0x1){_[_0x1ea2('0x51')](_0x5dc262[_0x1ea2('0x13')][_0x27139d[_0x938c90]['name']],_0x27139d[_0x938c90]);}return _0x5dc262[_0x1ea2('0x13')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x52')]=function(){var _0x547a65=this;return function(_0x51f484){clearVoiceQueues(_0x547a65[_0x1ea2('0x13')]);if(_0x51f484){_0x51f484=_['groupBy'](_0x51f484,_0x1ea2('0x53'));for(var _0x516ba6 in _0x51f484){if(_0x51f484['hasOwnProperty'](_0x516ba6)){var _0x5cc4b2={};for(var _0x3eea9b=0x0;_0x3eea9b<_0x51f484[_0x516ba6]['length'];_0x3eea9b+=0x1){var _0x60e147=_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x54')];if(_0x547a65[_0x1ea2('0x13')][_0x60e147]){if(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x55')]){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x31')]+=0x1;}if(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerabandon']){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x56')]+=0x1;}_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2c')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerleaveAt'])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x58')]),_0x1ea2('0x59'))||0x0;if(_0x3eea9b===_0x51f484[_0x516ba6][_0x1ea2('0x3e')]-0x1){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2d')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallercompleteAt']||_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5a')]||_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5b')])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x58')]),'seconds')||0x0;_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2b')]+=0x1;if(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5c')]){_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x5d')]+=0x1;_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2e')]+=moment(_0x51f484[_0x516ba6][_0x3eea9b][_0x1ea2('0x5e')])[_0x1ea2('0x57')](moment(_0x51f484[_0x516ba6][_0x3eea9b]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2d')]+=_0x547a65[_0x1ea2('0x13')][_0x60e147][_0x1ea2('0x2c')]||0x0;}}}}}}return _0x547a65['voiceQueues'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x5f')]=function(){var _0x10dc58=this;return function(_0x12bbeb){clearVoiceCallReports(_0x10dc58['outbound']);if(_0x12bbeb){for(var _0x269c64=0x0;_0x269c64<_0x12bbeb['length'];_0x269c64+=0x1){_0x10dc58[_0x1ea2('0x15')][_0x1ea2('0x2b')]+=0x1;_0x10dc58['outbound']['sumDuration']+=_0x12bbeb[_0x269c64][_0x1ea2('0x60')];if(_0x12bbeb[_0x269c64][_0x1ea2('0x61')]===_0x1ea2('0x62')){_0x10dc58[_0x1ea2('0x15')]['answered']+=0x1;_0x10dc58['outbound']['sumHoldTime']+=_0x12bbeb[_0x269c64]['duration']-_0x12bbeb[_0x269c64]['billableseconds']||0x0;_0x10dc58[_0x1ea2('0x15')]['sumBillable']+=_0x12bbeb[_0x269c64]['billableseconds'];}}}return _0x10dc58[_0x1ea2('0x15')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x63')]=function(){var _0x35f581=this;return function(_0xf39f41){if(_0xf39f41){freeIsNotKey(_0xf39f41,_0x35f581['campaigns'],'name');for(var _0x4261c1=0x0,_0x31736f={};_0x4261c1<_0xf39f41['length'];_0x4261c1+=0x1){_0x31736f=_0xf39f41[_0x4261c1];if(_[_0x1ea2('0x3f')](_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]])){_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]]=new Campaign(_0x31736f);}else{_0x35f581[_0x1ea2('0x3d')](_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]],_0x31736f);_0x35f581[_0x1ea2('0x64')][_0x31736f[_0x1ea2('0x26')]][_0x1ea2('0x65')]=_0x31736f['SquareProject']?_0x31736f['SquareProject']['name']:undefined;}}}return _0x35f581['campaigns'];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x66')]=function(){var _0x9b2dd4=this;return function(_0x2b1e42){if(_0x2b1e42){freeIsNotKey(_0x2b1e42,_0x9b2dd4['voiceExtensions'],'id');for(var _0xa1797c=0x0,_0x13e16e={};_0xa1797c<_0x2b1e42[_0x1ea2('0x3e')];_0xa1797c+=0x1){_0x13e16e=_0x2b1e42[_0xa1797c];if(_[_0x1ea2('0x3f')](_0x9b2dd4[_0x1ea2('0x16')][_0x13e16e['id']])){_0x9b2dd4[_0x1ea2('0x16')][_0x13e16e['id']]=new VoiceExtension(_0x13e16e);}else{_0x9b2dd4['mergeFromDatabase'](_0x9b2dd4['voiceExtensions'][_0x13e16e['id']],_0x13e16e);}}}return _0x9b2dd4['voiceExtensions'];};};Realtime[_0x1ea2('0x3c')]['initCampaignHopperHistory']=function(){var _0xb6a47b=this;return function(_0x385ec4){clearCampaigns(_0xb6a47b[_0x1ea2('0x64')]);for(var _0x378870=0x0;_0x378870<_0x385ec4['length'];_0x378870+=0x1){_[_0x1ea2('0x51')](_0xb6a47b[_0x1ea2('0x64')][_0x385ec4[_0x378870][_0x1ea2('0x26')]],_0x385ec4[_0x378870]);}return _0xb6a47b[_0x1ea2('0x64')];};};Realtime[_0x1ea2('0x3c')][_0x1ea2('0x67')]=function(){var _0xedff6c=this;return function(_0x17e37b){if(_0x17e37b){freeIsNotKey(_0x17e37b,_0xedff6c[_0x1ea2('0x23')],'id');for(var _0x4362f1=0x0,_0x1d88ad={},_0x1d0d80={};_0x4362f1<_0x17e37b[_0x1ea2('0x3e')];_0x4362f1+=0x1){_0x1d88ad=_0x17e37b[_0x4362f1];if(_[_0x1ea2('0x3f')](_0xedff6c[_0x1ea2('0x23')][_0x1d88ad['id']])){_0xedff6c['faxAccounts'][_0x1d88ad['id']]=new FaxAccount(_0x1d88ad);}else{_0xedff6c[_0x1ea2('0x3d')](_0xedff6c['faxAccounts'][_0x1d88ad['id']],_0x1d88ad);}}}return _0xedff6c['faxAccounts'];};};module[_0x1ea2('0x68')]=Realtime;
\ No newline at end of file
index ae96a6b..3b8f0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c1d=['./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','xdr','disabled','custom:voiceQueueReport','custom:voiceCallReport','voiceCallReport','voiceAgentReport','bind','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','name','isNil','find','accountcode','format','SIP/%s','length','assigned','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','voiceQueueReport','create','match','keys','getCallType','channel','getAgentByInternal','calleridnum','outbound','internal','destination','type','lastapplication','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','split','membername','monitor','monitors','filename','createdAt','exten','connectedlinename','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','transfererlinkedid','exports','lodash','util','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport'];(function(_0x1d7cc3,_0x5dfffe){var _0x4468ae=function(_0x4c765f){while(--_0x4c765f){_0x1d7cc3['push'](_0x1d7cc3['shift']());}};_0x4468ae(++_0x5dfffe);}(_0x9c1d,0x16e));var _0xd9c1=function(_0xb1cf04,_0x1027c6){_0xb1cf04=_0xb1cf04-0x0;var _0x2ae76a=_0x9c1d[_0xb1cf04];return _0x2ae76a;};'use strict';var _=require(_0xd9c1('0x0'));var moment=require('moment');var util=require(_0xd9c1('0x1'));var config=require(_0xd9c1('0x2'));var ami=require(_0xd9c1('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0xd9c1('0x4'));var RpcVoiceDialReport=require(_0xd9c1('0x5'));var RpcMemberReport=require(_0xd9c1('0x6'));var RpcVoiceQueueReport=require(_0xd9c1('0x7'));var RpcVoiceRecording=require(_0xd9c1('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xd9c1('0x9'));var VoiceCallReport=require(_0xd9c1('0xa'));var VoiceAgentReport=require(_0xd9c1('0xb'));var VoiceDialReport=require(_0xd9c1('0xc'));var UserReport=require(_0xd9c1('0xd'));function Report(_0x3ba0d7){this[_0xd9c1('0xe')]=_0x3ba0d7;this[_0xd9c1('0xf')]=_0x3ba0d7[_0xd9c1('0xf')];this[_0xd9c1('0x10')]=_0x3ba0d7[_0xd9c1('0x10')];}Report[_0xd9c1('0x11')]['sync']=function(_0x2bc224){var _0x2f0199=new VoiceQueueReport(this['realtime']);var _0x1983bb=new VoiceAgentReport(this[_0xd9c1('0xe')]);var _0x2bcd4a=new VoiceDialReport(this[_0xd9c1('0xe')]);var _0xee9591=new VoiceCallReport(this['realtime']);var _0x4cca4a=new UserReport(this[_0xd9c1('0xe')]);if(config[_0xd9c1('0x12')]&&config[_0xd9c1('0x12')][_0xd9c1('0x13')]){ami['on'](_0xd9c1('0x14'),this['voiceQueueReport']['bind'](this));ami['on'](_0xd9c1('0x15'),this[_0xd9c1('0x16')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0xd9c1('0x17')][_0xd9c1('0x18')](this));ami['on'](_0xd9c1('0x19'),this[_0xd9c1('0x1a')][_0xd9c1('0x18')](this));ami['on'](_0xd9c1('0x1b'),this[_0xd9c1('0x1c')]['bind'](this));ami['on'](_0xd9c1('0x1d'),this[_0xd9c1('0x1e')][_0xd9c1('0x18')](this));}};Report['prototype'][_0xd9c1('0x1f')]=function(_0x591e48){var _0x9c51dc;_0x9c51dc=_['find'](this['agents'],function(_0x363dbc){return _0x363dbc['accountcode']==_0x591e48||_0x363dbc[_0xd9c1('0x20')]==_0x591e48;});if(_[_0xd9c1('0x21')](_0x9c51dc)){var _0x5dcb38=_[_0xd9c1('0x22')](this['telephones'],function(_0x42b468){return _0x42b468[_0xd9c1('0x23')]==_0x591e48||_0x42b468[_0xd9c1('0x20')]==_0x591e48;});if(_0x5dcb38){_0x9c51dc=_[_0xd9c1('0x22')](this['agents'],function(_0x1c0d02){return _0x1c0d02['interface']==util[_0xd9c1('0x24')](_0xd9c1('0x25'),_0x5dcb38[_0xd9c1('0x20')]);});}}return _0x9c51dc;};Report[_0xd9c1('0x11')]['voiceQueueReport']=function(_0x21caaa){for(var _0x3f60da=0x0;_0x3f60da<_0x21caaa[_0xd9c1('0x26')];_0x3f60da+=0x1){var _0x238c65=this[_0xd9c1('0x1f')](_0x21caaa[_0x3f60da]['connectedlinenum']);if(_0x238c65){_0x21caaa[_0x3f60da][_0xd9c1('0x23')]=_0x238c65['accountcode'];_0x21caaa[_0x3f60da][_0xd9c1('0x27')]=!![];_0x21caaa[_0x3f60da][_0xd9c1('0x28')]=_0x238c65[_0xd9c1('0x20')];_0x21caaa[_0x3f60da][_0xd9c1('0x29')]=_[_0xd9c1('0x21')](_0x238c65['interface'])?util['format'](_0xd9c1('0x25'),_0x238c65[_0xd9c1('0x20')]):_0x238c65['interface'];if(_0x21caaa[_0x3f60da][_0xd9c1('0x2a')]){_0x21caaa[_0x3f60da][_0xd9c1('0x2b')]=moment()[_0xd9c1('0x24')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x21caaa[_0x3f60da][_0xd9c1('0x2c')]){_0x21caaa[_0x3f60da][_0xd9c1('0x2d')]=moment()['format'](_0xd9c1('0x2e'));}RpcMemberReport[_0xd9c1('0x2f')](_0x21caaa[_0x3f60da]);}RpcVoiceQueueReport[_0xd9c1('0x30')](_0x21caaa[_0x3f60da]);}};function extractCalleridNumber(_0xb0a5ea){var _0x1e7fef=_0xb0a5ea[_0xd9c1('0x31')](/<(.*?)>/);return _0x1e7fef?_0x1e7fef[0x1]:_0xb0a5ea;}Report['prototype']['getAgentByInternal']=function(_0x146285){for(var _0x26c3e0=0x0;_0x26c3e0<Object[_0xd9c1('0x32')](this[_0xd9c1('0xf')])[_0xd9c1('0x26')];_0x26c3e0++){var _0x2f5912=Object[_0xd9c1('0x32')](this[_0xd9c1('0xf')])[_0x26c3e0];var _0x2239c5=this[_0xd9c1('0xf')][_0x2f5912];if(_0x2239c5[_0xd9c1('0x23')]===Number(_0x146285))return _0x2239c5;}return null;};Report[_0xd9c1('0x11')][_0xd9c1('0x33')]=function(_0x58ed1c){var _0x2552ad=_0x58ed1c[_0xd9c1('0x34')]['split']('-')[0x0];var _0x4949ab=this['agents'][_0x2552ad];if(!_0x4949ab)_0x4949ab=this[_0xd9c1('0x35')](_0x58ed1c[_0xd9c1('0x36')]);return!_0x4949ab?_0xd9c1('0x37'):_0xd9c1('0x38');};Report[_0xd9c1('0x11')]['voiceCallReport']=function(_0x3739de){_0x3739de['destination']=_0x3739de[_0xd9c1('0x39')]||_0x3739de['exten'];if(_0x3739de[_0xd9c1('0x3a')]=='dialer'){_0x3739de[_0xd9c1('0x3b')]='queue';_0x3739de[_0xd9c1('0x3c')]=_0x3739de['queue'];if(_0x3739de[_0xd9c1('0x3d')]==_0xd9c1('0x3e')){_0x3739de[_0xd9c1('0x23')]='';_0x3739de['destination']=extractCalleridNumber(_0x3739de[_0xd9c1('0x3f')]);}else if(_0x3739de[_0xd9c1('0x3d')]==_0xd9c1('0x40')){if(_0x3739de[_0xd9c1('0x39')]==_0xd9c1('0x41')){_0x3739de['destination']=extractCalleridNumber(_0x3739de[_0xd9c1('0x42')]);_0x3739de[_0xd9c1('0x36')]=_0x3739de[_0xd9c1('0x43')];_0x3739de['destinationchannel']=[_0x3739de[_0xd9c1('0x34')],_0x3739de[_0xd9c1('0x34')]=_0x3739de['destinationchannel']][0x0];_0x3739de[_0xd9c1('0x3f')]=_0x3739de[_0xd9c1('0x42')];}else{_0x3739de[_0xd9c1('0x39')]=_0x3739de[_0xd9c1('0x36')];_0x3739de['calleridnum']=_0x3739de[_0xd9c1('0x43')];if(_0x3739de['disposition']==_0xd9c1('0x44')){_0x3739de[_0xd9c1('0x23')]=_0x3739de[_0xd9c1('0x45')];}else{_0x3739de['accountcode']='';}}}}else{_0x3739de[_0xd9c1('0x3f')]=util[_0xd9c1('0x24')](_0xd9c1('0x46'),_0x3739de[_0xd9c1('0x47')],_0x3739de[_0xd9c1('0x36')]);}if(RpcVoiceTransferReport[_0xd9c1('0x48')][_0x3739de['linkedid']]){var _0x486d8d=RpcVoiceTransferReport[_0xd9c1('0x48')][_0x3739de[_0xd9c1('0x49')]];_0x486d8d[_0xd9c1('0x4a')]=_0x3739de['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x486d8d);delete RpcVoiceTransferReport['transfers'][_0x3739de['linkedid']];}if(_[_0xd9c1('0x21')](_0x3739de[_0xd9c1('0x3a')])){_0x3739de['type']=this['getCallType'](_0x3739de);}if(_[_0xd9c1('0x21')](_0x3739de[_0xd9c1('0x4b')])){var _0x5a225e=_0x3739de[_0xd9c1('0x34')][_0xd9c1('0x4c')]('-')[0x0];var _0x4d98f=this[_0xd9c1('0xf')][_0x5a225e];if(!_0x4d98f)_0x4d98f=this[_0xd9c1('0x35')](_0x3739de['accountcode']);if(_0x4d98f){_0x3739de[_0xd9c1('0x4b')]=_0x4d98f['id'];_0x3739de[_0xd9c1('0x4d')]=_0x4d98f['name'];}}RpcVoiceCallReport[_0xd9c1('0x30')](_0x3739de);if(_0x3739de[_0xd9c1('0x4e')]){for(var _0x5b95c9=0x0;_0x5b95c9<_0x3739de[_0xd9c1('0x4f')][_0xd9c1('0x26')];_0x5b95c9+=0x1){_0x3739de['monitorFilename']=_0x3739de[_0xd9c1('0x4f')][_0x5b95c9][_0xd9c1('0x50')];_0x3739de[_0xd9c1('0x51')]=_0x3739de[_0xd9c1('0x4f')][_0x5b95c9][_0xd9c1('0x51')];if(_0x3739de[_0xd9c1('0x52')]==_0xd9c1('0x41')){_0x3739de[_0xd9c1('0x36')]=_0x3739de['connectedlinenum'];_0x3739de[_0xd9c1('0x47')]=_0x3739de[_0xd9c1('0x53')];_0x3739de[_0xd9c1('0x45')]=_0x3739de[_0xd9c1('0x23')];_0x3739de[_0xd9c1('0x53')]=_0x3739de[_0xd9c1('0x4d')];_0x3739de[_0xd9c1('0x52')]=_0x3739de[_0xd9c1('0x43')];}else if(_0x3739de['exten']=='xcally-motion-dialer'){_0x3739de[_0xd9c1('0x36')]=_0x3739de[_0xd9c1('0x39')];_0x3739de[_0xd9c1('0x52')]=_0x3739de['originatecalleridnum'];}RpcVoiceRecording[_0xd9c1('0x30')](_0x3739de);}}};Report['prototype'][_0xd9c1('0x17')]=function(_0x20b0f4){if(_[_0xd9c1('0x54')](_0x20b0f4)){_0x20b0f4[_0xd9c1('0x55')](function(_0x572e3a){RpcVoiceAgentReport['create'](_0x572e3a);});}else{RpcVoiceAgentReport[_0xd9c1('0x30')](_0x20b0f4);}};Report[_0xd9c1('0x11')][_0xd9c1('0x1a')]=function(_0x3ce5c6){RpcVoiceDialReport[_0xd9c1('0x30')](_0x3ce5c6);var _0x51ba67;var _0x52f265;var _0x149ae1=_0x3ce5c6['channel'];if(_[_0xd9c1('0x56')](_0x149ae1,_0xd9c1('0x57'))){_0x52f265=_0x149ae1[_0xd9c1('0x58')](_0x149ae1['indexOf']('/')+0x1,_0x149ae1[_0xd9c1('0x59')]('@'));_0x51ba67=_[_0xd9c1('0x22')](this[_0xd9c1('0xf')],function(_0x4ecd62){return _0x4ecd62[_0xd9c1('0x5a')]==_0x52f265||_0x4ecd62[_0xd9c1('0x5b')]==_0x52f265||_0x4ecd62[_0xd9c1('0x23')]==_0x52f265;});}else{_0x52f265=_0x149ae1[_0xd9c1('0x58')](_0x149ae1[_0xd9c1('0x59')]('/')+0x1,_0x149ae1['lastIndexOf']('-'));_0x51ba67=this[_0xd9c1('0x1f')](_0x52f265);}if(_0x51ba67){_0x3ce5c6[_0xd9c1('0x29')]=_[_0xd9c1('0x21')](_0x51ba67[_0xd9c1('0x29')])?util[_0xd9c1('0x24')](_0xd9c1('0x25'),_0x51ba67[_0xd9c1('0x20')]):_0x51ba67['interface'];_0x3ce5c6[_0xd9c1('0x4d')]=_0x51ba67[_0xd9c1('0x20')];_0x3ce5c6[_0xd9c1('0x23')]=_0x51ba67[_0xd9c1('0x23')];RpcMemberReport[_0xd9c1('0x1a')](_0x3ce5c6);}};Report[_0xd9c1('0x11')][_0xd9c1('0x1c')]=function(_0x3e8a22){RpcVoiceTransferReport[_0xd9c1('0x48')][_0x3e8a22[_0xd9c1('0x5c')]]=_0x3e8a22;};Report[_0xd9c1('0x11')]['attendedTransfer']=function(_0x4550cd){RpcVoiceTransferReport[_0xd9c1('0x1e')](_0x4550cd);};module[_0xd9c1('0x5d')]=Report;
\ No newline at end of file
+var _0x9639=['./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','name','isNil','find','accountcode','interface','length','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','channel','outbound','internal','destination','exten','type','lastapplication','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','calleridnum','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','split','membername','monitors','filename','createdAt','connectedlinename','originatecalleridnum','xcally-motion-dialer','forEach','substring','mobile','phone','indexOf','lastIndexOf','SIP/%s','transfererlinkedid','exports','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceTransferReport','./voiceQueueReport'];(function(_0x326c48,_0x31eee6){var _0xf71bc5=function(_0x391b95){while(--_0x391b95){_0x326c48['push'](_0x326c48['shift']());}};_0xf71bc5(++_0x31eee6);}(_0x9639,0x107));var _0x9963=function(_0x4ea09e,_0x2b032f){_0x4ea09e=_0x4ea09e-0x0;var _0x195774=_0x9639[_0x4ea09e];return _0x195774;};'use strict';var _=require(_0x9963('0x0'));var moment=require('moment');var util=require(_0x9963('0x1'));var config=require(_0x9963('0x2'));var ami=require(_0x9963('0x3'));var RpcVoiceAgentReport=require(_0x9963('0x4'));var RpcVoiceCallReport=require(_0x9963('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x9963('0x6'));var RpcVoiceQueueReport=require(_0x9963('0x7'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0x9963('0x8'));var VoiceQueueReport=require(_0x9963('0x9'));var VoiceCallReport=require(_0x9963('0xa'));var VoiceAgentReport=require(_0x9963('0xb'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x9963('0xc'));function Report(_0x17250e){this[_0x9963('0xd')]=_0x17250e;this[_0x9963('0xe')]=_0x17250e['agents'];this['telephones']=_0x17250e[_0x9963('0xf')];}Report[_0x9963('0x10')][_0x9963('0x11')]=function(_0x54aedd){var _0x3a9686=new VoiceQueueReport(this[_0x9963('0xd')]);var _0x110d2f=new VoiceAgentReport(this[_0x9963('0xd')]);var _0x37bc2d=new VoiceDialReport(this[_0x9963('0xd')]);var _0x6278ef=new VoiceCallReport(this[_0x9963('0xd')]);var _0x9b1dd3=new UserReport(this['realtime']);if(config['xdr']&&config[_0x9963('0x12')]['disabled']){ami['on'](_0x9963('0x13'),this[_0x9963('0x14')][_0x9963('0x15')](this));ami['on']('custom:voiceCallReport',this[_0x9963('0x16')][_0x9963('0x15')](this));ami['on'](_0x9963('0x17'),this[_0x9963('0x18')]['bind'](this));ami['on'](_0x9963('0x19'),this[_0x9963('0x1a')][_0x9963('0x15')](this));ami['on'](_0x9963('0x1b'),this[_0x9963('0x1c')][_0x9963('0x15')](this));ami['on'](_0x9963('0x1d'),this[_0x9963('0x1e')][_0x9963('0x15')](this));}};Report[_0x9963('0x10')][_0x9963('0x1f')]=function(_0x34740f){var _0x456482;_0x456482=_['find'](this['agents'],function(_0x1c6697){return _0x1c6697['accountcode']==_0x34740f||_0x1c6697[_0x9963('0x20')]==_0x34740f;});if(_[_0x9963('0x21')](_0x456482)){var _0x40340a=_[_0x9963('0x22')](this[_0x9963('0xf')],function(_0x544edd){return _0x544edd[_0x9963('0x23')]==_0x34740f||_0x544edd[_0x9963('0x20')]==_0x34740f;});if(_0x40340a){_0x456482=_[_0x9963('0x22')](this[_0x9963('0xe')],function(_0x1b999d){return _0x1b999d[_0x9963('0x24')]==util['format']('SIP/%s',_0x40340a[_0x9963('0x20')]);});}}return _0x456482;};Report[_0x9963('0x10')][_0x9963('0x14')]=function(_0x5c9d34){for(var _0xbf32d=0x0;_0xbf32d<_0x5c9d34[_0x9963('0x25')];_0xbf32d+=0x1){var _0x23c906=this[_0x9963('0x1f')](_0x5c9d34[_0xbf32d][_0x9963('0x26')]);if(_0x23c906){_0x5c9d34[_0xbf32d][_0x9963('0x23')]=_0x23c906['accountcode'];_0x5c9d34[_0xbf32d]['assigned']=!![];_0x5c9d34[_0xbf32d][_0x9963('0x27')]=_0x23c906[_0x9963('0x20')];_0x5c9d34[_0xbf32d]['interface']=_['isNil'](_0x23c906[_0x9963('0x24')])?util['format']('SIP/%s',_0x23c906[_0x9963('0x20')]):_0x23c906['interface'];if(_0x5c9d34[_0xbf32d][_0x9963('0x28')]){_0x5c9d34[_0xbf32d][_0x9963('0x29')]=moment()[_0x9963('0x2a')](_0x9963('0x2b'));}if(_0x5c9d34[_0xbf32d]['queuecallerexit']){_0x5c9d34[_0xbf32d][_0x9963('0x2c')]=moment()[_0x9963('0x2a')](_0x9963('0x2b'));}RpcMemberReport[_0x9963('0x14')](_0x5c9d34[_0xbf32d]);}RpcVoiceQueueReport[_0x9963('0x2d')](_0x5c9d34[_0xbf32d]);}};function extractCalleridNumber(_0x1e9a82){var _0x56ae55=_0x1e9a82[_0x9963('0x2e')](/<(.*?)>/);return _0x56ae55?_0x56ae55[0x1]:_0x1e9a82;}Report[_0x9963('0x10')][_0x9963('0x2f')]=function(_0x1f0a01){for(var _0x4a4d33=0x0;_0x4a4d33<Object[_0x9963('0x30')](this[_0x9963('0xe')])[_0x9963('0x25')];_0x4a4d33++){var _0xf5013e=Object[_0x9963('0x30')](this[_0x9963('0xe')])[_0x4a4d33];var _0x5c799b=this[_0x9963('0xe')][_0xf5013e];if(_0x5c799b['accountcode']===Number(_0x1f0a01))return _0x5c799b;}return null;};Report[_0x9963('0x10')][_0x9963('0x31')]=function(_0x47312d){var _0x1757cf=_0x47312d[_0x9963('0x32')]['split']('-')[0x0];var _0x4ca879=this[_0x9963('0xe')][_0x1757cf];if(!_0x4ca879)_0x4ca879=this[_0x9963('0x2f')](_0x47312d['calleridnum']);return!_0x4ca879?_0x9963('0x33'):_0x9963('0x34');};Report['prototype'][_0x9963('0x16')]=function(_0x24cdba){_0x24cdba[_0x9963('0x35')]=_0x24cdba['destination']||_0x24cdba[_0x9963('0x36')];if(_0x24cdba[_0x9963('0x37')]=='dialer'){_0x24cdba[_0x9963('0x38')]='queue';_0x24cdba[_0x9963('0x39')]=_0x24cdba[_0x9963('0x3a')];if(_0x24cdba[_0x9963('0x3b')]==_0x9963('0x3c')){_0x24cdba[_0x9963('0x23')]='';_0x24cdba[_0x9963('0x35')]=extractCalleridNumber(_0x24cdba[_0x9963('0x3d')]);}else if(_0x24cdba[_0x9963('0x3b')]==_0x9963('0x3e')){if(_0x24cdba['destination']==_0x9963('0x3f')){_0x24cdba[_0x9963('0x35')]=extractCalleridNumber(_0x24cdba[_0x9963('0x40')]);_0x24cdba['calleridnum']=_0x24cdba['originatecalleridnum'];_0x24cdba[_0x9963('0x41')]=[_0x24cdba['channel'],_0x24cdba[_0x9963('0x32')]=_0x24cdba[_0x9963('0x41')]][0x0];_0x24cdba[_0x9963('0x3d')]=_0x24cdba['calleridpreview'];}else{_0x24cdba[_0x9963('0x35')]=_0x24cdba[_0x9963('0x42')];_0x24cdba[_0x9963('0x42')]=_0x24cdba['originatecalleridnum'];if(_0x24cdba['disposition']==_0x9963('0x43')){_0x24cdba[_0x9963('0x23')]=_0x24cdba[_0x9963('0x26')];}else{_0x24cdba[_0x9963('0x23')]='';}}}}else{_0x24cdba['callerid']=util[_0x9963('0x2a')](_0x9963('0x44'),_0x24cdba[_0x9963('0x45')],_0x24cdba[_0x9963('0x42')]);}if(RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba[_0x9963('0x47')]]){var _0x44ee14=RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba['linkedid']];_0x44ee14[_0x9963('0x48')]=_0x24cdba['uniqueid'];RpcVoiceTransferReport[_0x9963('0x1c')](_0x44ee14);delete RpcVoiceTransferReport[_0x9963('0x46')][_0x24cdba['linkedid']];}if(_[_0x9963('0x21')](_0x24cdba['type'])){_0x24cdba[_0x9963('0x37')]=this['getCallType'](_0x24cdba);}if(_['isNil'](_0x24cdba[_0x9963('0x49')])){var _0xd79c3d=_0x24cdba[_0x9963('0x32')][_0x9963('0x4a')]('-')[0x0];var _0x3d52c4=this[_0x9963('0xe')][_0xd79c3d];if(!_0x3d52c4)_0x3d52c4=this[_0x9963('0x2f')](_0x24cdba[_0x9963('0x23')]);if(_0x3d52c4){_0x24cdba[_0x9963('0x49')]=_0x3d52c4['id'];_0x24cdba[_0x9963('0x4b')]=_0x3d52c4[_0x9963('0x20')];}}RpcVoiceCallReport[_0x9963('0x2d')](_0x24cdba);if(_0x24cdba['monitor']){for(var _0x31b8dc=0x0;_0x31b8dc<_0x24cdba[_0x9963('0x4c')][_0x9963('0x25')];_0x31b8dc+=0x1){_0x24cdba['monitorFilename']=_0x24cdba[_0x9963('0x4c')][_0x31b8dc][_0x9963('0x4d')];_0x24cdba[_0x9963('0x4e')]=_0x24cdba[_0x9963('0x4c')][_0x31b8dc][_0x9963('0x4e')];if(_0x24cdba['exten']==_0x9963('0x3f')){_0x24cdba['calleridnum']=_0x24cdba[_0x9963('0x26')];_0x24cdba[_0x9963('0x45')]=_0x24cdba['connectedlinename'];_0x24cdba[_0x9963('0x26')]=_0x24cdba[_0x9963('0x23')];_0x24cdba[_0x9963('0x4f')]=_0x24cdba[_0x9963('0x4b')];_0x24cdba[_0x9963('0x36')]=_0x24cdba[_0x9963('0x50')];}else if(_0x24cdba[_0x9963('0x36')]==_0x9963('0x51')){_0x24cdba[_0x9963('0x42')]=_0x24cdba[_0x9963('0x35')];_0x24cdba['exten']=_0x24cdba[_0x9963('0x50')];}RpcVoiceRecording[_0x9963('0x2d')](_0x24cdba);}}};Report[_0x9963('0x10')][_0x9963('0x18')]=function(_0x51247d){if(_['isArray'](_0x51247d)){_0x51247d[_0x9963('0x52')](function(_0xc3efbd){RpcVoiceAgentReport[_0x9963('0x2d')](_0xc3efbd);});}else{RpcVoiceAgentReport[_0x9963('0x2d')](_0x51247d);}};Report[_0x9963('0x10')]['voiceDialReport']=function(_0x3b5274){RpcVoiceDialReport[_0x9963('0x2d')](_0x3b5274);var _0x483526;var _0x19587f;var _0x2fffb6=_0x3b5274[_0x9963('0x32')];if(_['startsWith'](_0x2fffb6,'Local')){_0x19587f=_0x2fffb6[_0x9963('0x53')](_0x2fffb6['indexOf']('/')+0x1,_0x2fffb6['indexOf']('@'));_0x483526=_['find'](this['agents'],function(_0x25b245){return _0x25b245[_0x9963('0x54')]==_0x19587f||_0x25b245[_0x9963('0x55')]==_0x19587f||_0x25b245[_0x9963('0x23')]==_0x19587f;});}else{_0x19587f=_0x2fffb6['substring'](_0x2fffb6[_0x9963('0x56')]('/')+0x1,_0x2fffb6[_0x9963('0x57')]('-'));_0x483526=this[_0x9963('0x1f')](_0x19587f);}if(_0x483526){_0x3b5274[_0x9963('0x24')]=_['isNil'](_0x483526[_0x9963('0x24')])?util[_0x9963('0x2a')](_0x9963('0x58'),_0x483526[_0x9963('0x20')]):_0x483526['interface'];_0x3b5274['membername']=_0x483526[_0x9963('0x20')];_0x3b5274[_0x9963('0x23')]=_0x483526[_0x9963('0x23')];RpcMemberReport[_0x9963('0x1a')](_0x3b5274);}};Report[_0x9963('0x10')]['blindTransfer']=function(_0x342dee){RpcVoiceTransferReport[_0x9963('0x46')][_0x342dee[_0x9963('0x59')]]=_0x342dee;};Report[_0x9963('0x10')][_0x9963('0x1e')]=function(_0x3bc24b){RpcVoiceTransferReport[_0x9963('0x1e')](_0x3bc24b);};module[_0x9963('0x5a')]=Report;
\ No newline at end of file
index 7dc83e9..6f3d44b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5107=['accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','agents','telephones','registryentry','registry','devicestatechange','syncDeviceState','bind','syncPeerStatus','then','actionSipShowRegistry','error','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','syncRealtimeShow','prototype','isNotNull','emit','syncRegistry','info','username','state','[userReport][registry]','trunks','stateRegistry','omit','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','inuse','toLowerCase','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','Local','substring','phone'];(function(_0x594e11,_0x28f652){var _0x5418ad=function(_0x5dcfa7){while(--_0x5dcfa7){_0x594e11['push'](_0x594e11['shift']());}};_0x5418ad(++_0x28f652);}(_0x5107,0x1c1));var _0x7510=function(_0x486e90,_0x39d0ab){_0x486e90=_0x486e90-0x0;var _0x24ac9a=_0x5107[_0x486e90];return _0x24ac9a;};'use strict';var _=require(_0x7510('0x0'));var moment=require(_0x7510('0x1'));var util=require(_0x7510('0x2'));var Redis=require('ioredis');var BPromise=require(_0x7510('0x3'));var config=require('../../../config/environment');var logger=require(_0x7510('0x4'))(_0x7510('0x5'));var ami=require(_0x7510('0x6'));config[_0x7510('0x7')]=_[_0x7510('0x8')](config[_0x7510('0x7')],{'host':_0x7510('0x9'),'port':0x18eb});var io=require(_0x7510('0xa'))(new Redis(config[_0x7510('0x7')]));function UserReport(_0x5103d6){this['trunks']=_0x5103d6['trunks'];this[_0x7510('0xb')]=_0x5103d6['agents'];this[_0x7510('0xc')]=_0x5103d6[_0x7510('0xc')];ami['on'](_0x7510('0xd'),this['syncRegistry']['bind'](this));ami['on'](_0x7510('0xe'),this['syncRegistry']['bind'](this));ami['on'](_0x7510('0xf'),this[_0x7510('0x10')][_0x7510('0x11')](this));ami['on']('peerstatus',this[_0x7510('0x12')]['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()[_0x7510('0x13')](ami[_0x7510('0x14')]())['catch'](function(_0x25ffb3){logger[_0x7510('0x15')]('[userReport][sipshowregistry]',util[_0x7510('0x16')](_0x25ffb3,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x7510('0x13')](ami[_0x7510('0x17')]())[_0x7510('0x18')](function(_0x46bc06){logger[_0x7510('0x15')](_0x7510('0x19'),util[_0x7510('0x16')](_0x46bc06,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x7510('0x13')](ami[_0x7510('0x1a')]())[_0x7510('0x18')](function(_0x5d37a1){logger[_0x7510('0x15')]('[userReport][sippeerstatus]',util['inspect'](_0x5d37a1,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x7510('0x1b')]=function(){setInterval(function(){BPromise['resolve']()[_0x7510('0x13')](showSipRegistrations())[_0x7510('0x13')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x7510('0x1c')][_0x7510('0x1d')]=function(_0x3c96bc){return _0x3c96bc!==null&&!_['isUndefined'](_0x3c96bc);};UserReport['prototype']['emit']=function(_0x5344a3,_0x1d54c7,_0x1969dd){io['to'](_0x5344a3)[_0x7510('0x1e')](_0x1d54c7,_0x1969dd);};UserReport['prototype'][_0x7510('0x1f')]=function(_0x50436a){try{if(this[_0x7510('0x1d')](_0x50436a)){logger[_0x7510('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x50436a[_0x7510('0x21')],_0x50436a[_0x7510('0x22')]);logger['debug'](_0x7510('0x23'),util['inspect'](_0x50436a,{'showHidden':![],'depth':null}));var _0x1aedb0=_['find'](this[_0x7510('0x24')],{'defaultuser':_0x50436a[_0x7510('0x21')]});if(_0x1aedb0){_0x50436a[_0x7510('0x25')]=_0x50436a[_0x7510('0x22')];_['merge'](_0x1aedb0,_[_0x7510('0x26')](_0x50436a,[_0x7510('0x27'),_0x7510('0x28'),_0x7510('0x21'),_0x7510('0x22')]));logger[_0x7510('0x29')](_0x7510('0x2a'),util[_0x7510('0x16')](_0x1aedb0,{'showHidden':![],'depth':null}));this[_0x7510('0x1e')](util[_0x7510('0x2b')](_0x7510('0x2c'),_0x1aedb0[_0x7510('0x2d')]),_0x7510('0x2e'),_0x1aedb0);}}}catch(_0x29bd5e){logger[_0x7510('0x15')]('[userReport][registry]',util[_0x7510('0x16')](_0x29bd5e,{'showHidden':![],'depth':null}));}};UserReport[_0x7510('0x1c')][_0x7510('0x10')]=function(_0x3b8e12){try{if(this['isNotNull'](_0x3b8e12)){logger[_0x7510('0x20')](_0x7510('0x2f'),_0x3b8e12[_0x7510('0x30')],_0x3b8e12['state']);logger['debug'](_0x7510('0x31'),util[_0x7510('0x16')](_0x3b8e12,{'showHidden':![],'depth':null}));if(this[_0x7510('0xb')][_0x3b8e12['device']]){if(!this[_0x7510('0xb')][_0x3b8e12['device']][_0x7510('0x32')]||_0x3b8e12[_0x7510('0x22')]['toLowerCase']()==_0x7510('0x33')){this[_0x7510('0xb')][_0x3b8e12[_0x7510('0x30')]]['local']=![];if(this[_0x7510('0xb')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x22')]!==_0x3b8e12[_0x7510('0x22')][_0x7510('0x34')]()){this[_0x7510('0xb')][_0x3b8e12['device']]['stateTime']=_[_0x7510('0x35')](moment()[_0x7510('0x2b')]('x'));}this[_0x7510('0xb')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x22')]=_0x3b8e12[_0x7510('0x22')][_0x7510('0x34')]();this[_0x7510('0xb')][_0x3b8e12['device']][_0x7510('0x36')](_0x3b8e12);}}else if(this[_0x7510('0xc')][_0x3b8e12[_0x7510('0x30')]]){if(this[_0x7510('0xc')][_0x3b8e12['device']][_0x7510('0x22')]!==_0x3b8e12['state'][_0x7510('0x34')]()){this[_0x7510('0xc')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x37')]=_[_0x7510('0x35')](moment()[_0x7510('0x2b')]('x'));}this[_0x7510('0xc')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x22')]=_0x3b8e12[_0x7510('0x22')][_0x7510('0x34')]();logger['debug'](_0x7510('0x38'),util[_0x7510('0x16')](this['telephones'][_0x3b8e12[_0x7510('0x30')]],{'showHidden':![],'depth':null}));this[_0x7510('0x1e')](util[_0x7510('0x2b')](_0x7510('0x39'),this[_0x7510('0xc')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x2d')]),_0x7510('0x3a'),this[_0x7510('0xc')][_0x3b8e12['device']]);}else if(this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]]){if(this['trunks'][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x22')]!==_0x3b8e12['state'][_0x7510('0x34')]()){this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]]['stateTime']=_[_0x7510('0x35')](moment()['format']('x'));}this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]][_0x7510('0x22')]=_0x3b8e12['state'][_0x7510('0x34')]();logger[_0x7510('0x29')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x7510('0x16')](this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]],{'showHidden':![],'depth':null}));this[_0x7510('0x1e')](util['format'](_0x7510('0x2c'),this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]]['name']),_0x7510('0x2e'),this[_0x7510('0x24')][_0x3b8e12[_0x7510('0x30')]]);}else if(_['startsWith'](_0x3b8e12[_0x7510('0x30')],_0x7510('0x3b'))){var _0x67b386=_0x3b8e12[_0x7510('0x30')];var _0x8e13be=_0x67b386[_0x7510('0x3c')](_0x67b386['indexOf']('/')+0x1,_0x67b386['indexOf']('@'));var _0x46f8d7=_['find'](this[_0x7510('0xb')],function(_0x3d5436){return _0x3d5436['mobile']==_0x8e13be||_0x3d5436[_0x7510('0x3d')]==_0x8e13be||_0x3d5436[_0x7510('0x3e')]==_0x8e13be;});if(_0x46f8d7){if(_0x46f8d7[_0x7510('0x22')]!==_0x3b8e12[_0x7510('0x22')][_0x7510('0x34')]()){_0x46f8d7[_0x7510('0x37')]=_[_0x7510('0x35')](moment()[_0x7510('0x2b')]('x'));}_0x46f8d7[_0x7510('0x22')]=_0x3b8e12[_0x7510('0x22')][_0x7510('0x34')]();_0x46f8d7[_0x7510('0x32')]=!![];_0x46f8d7[_0x7510('0x36')](_0x3b8e12);}}}}catch(_0x2e252b){logger['error'](_0x7510('0x31'),util[_0x7510('0x16')](_0x2e252b,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x2f4f17){try{if(this[_0x7510('0x1d')](_0x2f4f17)&&this[_0x7510('0x1d')](_0x2f4f17[_0x7510('0x3f')])){logger[_0x7510('0x20')](_0x7510('0x40'),_0x2f4f17[_0x7510('0x41')],_0x2f4f17['address'],_0x2f4f17[_0x7510('0x3f')]);logger[_0x7510('0x29')](_0x7510('0x42'),util['inspect'](_0x2f4f17,{'showHidden':![],'depth':null}));if(this[_0x7510('0xb')][_0x2f4f17[_0x7510('0x41')]]){if(!this['agents'][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x32')]||_0x2f4f17[_0x7510('0x3f')][_0x7510('0x34')]()==_0x7510('0x43')){this['agents'][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x32')]=![];this[_0x7510('0xb')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x44')]=_0x2f4f17[_0x7510('0x3f')][_0x7510('0x34')]();this[_0x7510('0xb')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x45')]=_0x2f4f17[_0x7510('0x45')];this[_0x7510('0xb')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x36')](_0x2f4f17);}}else if(this['telephones'][_0x2f4f17['peer']]){this[_0x7510('0xc')][_0x2f4f17[_0x7510('0x41')]]['status']=_0x2f4f17['peerstatus']['toLowerCase']();this[_0x7510('0xc')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x45')]=_0x2f4f17['address'];logger[_0x7510('0x29')](_0x7510('0x46'),util['inspect'](this['telephones'][_0x2f4f17[_0x7510('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x7510('0x2b')](_0x7510('0x39'),this[_0x7510('0xc')][_0x2f4f17['peer']][_0x7510('0x2d')]),_0x7510('0x3a'),this[_0x7510('0xc')][_0x2f4f17[_0x7510('0x41')]]);}else if(this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]]){this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]]['status']=_0x2f4f17['peerstatus']['toLowerCase']();this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x45')]=_0x2f4f17['address'];logger[_0x7510('0x29')](_0x7510('0x47'),util[_0x7510('0x16')](this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x7510('0x2b')](_0x7510('0x2c'),this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]][_0x7510('0x2d')]),_0x7510('0x2e'),this[_0x7510('0x24')][_0x2f4f17[_0x7510('0x41')]]);}}}catch(_0x357476){logger[_0x7510('0x15')](_0x7510('0x42'),util[_0x7510('0x16')](_0x357476,{'showHidden':![],'depth':null}));}};module[_0x7510('0x48')]=UserReport;
\ No newline at end of file
+var _0x4d5d=['[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/logger','ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','bind','syncRegistry','devicestatechange','syncDeviceState','peerstatus','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList'];(function(_0xdc1d80,_0x51cadc){var _0x279ac3=function(_0x357595){while(--_0x357595){_0xdc1d80['push'](_0xdc1d80['shift']());}};_0x279ac3(++_0x51cadc);}(_0x4d5d,0x111));var _0xd4d5=function(_0x97385e,_0x17e853){_0x97385e=_0x97385e-0x0;var _0x5d337e=_0x4d5d[_0x97385e];return _0x5d337e;};'use strict';var _=require(_0xd4d5('0x0'));var moment=require(_0xd4d5('0x1'));var util=require(_0xd4d5('0x2'));var Redis=require(_0xd4d5('0x3'));var BPromise=require(_0xd4d5('0x4'));var config=require('../../../config/environment');var logger=require(_0xd4d5('0x5'))(_0xd4d5('0x6'));var ami=require('../ami');config['redis']=_[_0xd4d5('0x7')](config[_0xd4d5('0x8')],{'host':_0xd4d5('0x9'),'port':0x18eb});var io=require(_0xd4d5('0xa'))(new Redis(config[_0xd4d5('0x8')]));function UserReport(_0x53dd6e){this['trunks']=_0x53dd6e[_0xd4d5('0xb')];this[_0xd4d5('0xc')]=_0x53dd6e['agents'];this[_0xd4d5('0xd')]=_0x53dd6e[_0xd4d5('0xd')];ami['on']('registryentry',this['syncRegistry'][_0xd4d5('0xe')](this));ami['on']('registry',this[_0xd4d5('0xf')][_0xd4d5('0xe')](this));ami['on'](_0xd4d5('0x10'),this[_0xd4d5('0x11')][_0xd4d5('0xe')](this));ami['on'](_0xd4d5('0x12'),this['syncPeerStatus'][_0xd4d5('0xe')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xd4d5('0x13')]()['then'](ami[_0xd4d5('0x14')]())[_0xd4d5('0x15')](function(_0x1f2b83){logger[_0xd4d5('0x16')](_0xd4d5('0x17'),util[_0xd4d5('0x18')](_0x1f2b83,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xd4d5('0x19')](ami[_0xd4d5('0x1a')]())[_0xd4d5('0x15')](function(_0x38d917){logger[_0xd4d5('0x16')](_0xd4d5('0x1b'),util['inspect'](_0x38d917,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xd4d5('0x13')]()[_0xd4d5('0x19')](ami[_0xd4d5('0x1c')]())['catch'](function(_0x17a12){logger['error'](_0xd4d5('0x1d'),util[_0xd4d5('0x18')](_0x17a12,{'showHidden':![],'depth':null}));});}UserReport[_0xd4d5('0x1e')][_0xd4d5('0x1f')]=function(){setInterval(function(){BPromise[_0xd4d5('0x13')]()[_0xd4d5('0x19')](showSipRegistrations())[_0xd4d5('0x19')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xd4d5('0x20')]=function(_0x16cb9a){return _0x16cb9a!==null&&!_[_0xd4d5('0x21')](_0x16cb9a);};UserReport[_0xd4d5('0x1e')]['emit']=function(_0x13210c,_0xa7d24e,_0x1d0277){io['to'](_0x13210c)[_0xd4d5('0x22')](_0xa7d24e,_0x1d0277);};UserReport[_0xd4d5('0x1e')][_0xd4d5('0xf')]=function(_0xa97c0c){try{if(this[_0xd4d5('0x20')](_0xa97c0c)){logger[_0xd4d5('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0xa97c0c['username'],_0xa97c0c[_0xd4d5('0x24')]);logger[_0xd4d5('0x25')](_0xd4d5('0x26'),util['inspect'](_0xa97c0c,{'showHidden':![],'depth':null}));var _0x12e4e8=_[_0xd4d5('0x27')](this[_0xd4d5('0xb')],{'defaultuser':_0xa97c0c['username']});if(_0x12e4e8){_0xa97c0c[_0xd4d5('0x28')]=_0xa97c0c[_0xd4d5('0x24')];_[_0xd4d5('0x29')](_0x12e4e8,_[_0xd4d5('0x2a')](_0xa97c0c,['event',_0xd4d5('0x2b'),'username','state']));logger['debug'](_0xd4d5('0x2c'),util[_0xd4d5('0x18')](_0x12e4e8,{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),_0x12e4e8[_0xd4d5('0x2f')]),_0xd4d5('0x30'),_0x12e4e8);}}}catch(_0x210252){logger[_0xd4d5('0x16')]('[userReport][registry]',util[_0xd4d5('0x18')](_0x210252,{'showHidden':![],'depth':null}));}};UserReport[_0xd4d5('0x1e')][_0xd4d5('0x11')]=function(_0xf13b6){try{if(this['isNotNull'](_0xf13b6)){logger[_0xd4d5('0x23')](_0xd4d5('0x31'),_0xf13b6[_0xd4d5('0x32')],_0xf13b6['state']);logger[_0xd4d5('0x25')](_0xd4d5('0x33'),util['inspect'](_0xf13b6,{'showHidden':![],'depth':null}));if(this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]]){if(!this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x34')]||_0xf13b6['state'][_0xd4d5('0x35')]()==_0xd4d5('0x36')){this[_0xd4d5('0xc')][_0xf13b6['device']][_0xd4d5('0x34')]=![];if(this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]()){this[_0xd4d5('0xc')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x37')]=_['toNumber'](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xc')][_0xf13b6['device']]['state']=_0xf13b6['state'][_0xd4d5('0x35')]();this[_0xd4d5('0xc')][_0xf13b6['device']][_0xd4d5('0x38')](_0xf13b6);}}else if(this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]]){if(this['telephones'][_0xf13b6[_0xd4d5('0x32')]]['state']!==_0xf13b6['state']['toLowerCase']()){this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x37')]=_[_0xd4d5('0x39')](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xd')][_0xf13b6['device']]['state']=_0xf13b6['state'][_0xd4d5('0x35')]();logger[_0xd4d5('0x25')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xd4d5('0x18')](this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]],{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x3a'),this['telephones'][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x2f')]),'telephone:save',this[_0xd4d5('0xd')][_0xf13b6[_0xd4d5('0x32')]]);}else if(this['trunks'][_0xf13b6[_0xd4d5('0x32')]]){if(this[_0xd4d5('0xb')][_0xf13b6[_0xd4d5('0x32')]][_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]()){this[_0xd4d5('0xb')][_0xf13b6['device']][_0xd4d5('0x37')]=_['toNumber'](moment()[_0xd4d5('0x2d')]('x'));}this[_0xd4d5('0xb')][_0xf13b6['device']][_0xd4d5('0x24')]=_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]();logger[_0xd4d5('0x25')](_0xd4d5('0x3b'),util[_0xd4d5('0x18')](this[_0xd4d5('0xb')][_0xf13b6[_0xd4d5('0x32')]],{'showHidden':![],'depth':null}));this[_0xd4d5('0x22')](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),this['trunks'][_0xf13b6[_0xd4d5('0x32')]]['name']),_0xd4d5('0x30'),this[_0xd4d5('0xb')][_0xf13b6['device']]);}else if(_[_0xd4d5('0x3c')](_0xf13b6['device'],_0xd4d5('0x3d'))){var _0xc5584=_0xf13b6['device'];var _0x5e6205=_0xc5584[_0xd4d5('0x3e')](_0xc5584[_0xd4d5('0x3f')]('/')+0x1,_0xc5584[_0xd4d5('0x3f')]('@'));var _0x25962d=_[_0xd4d5('0x27')](this['agents'],function(_0x4b0752){return _0x4b0752['mobile']==_0x5e6205||_0x4b0752[_0xd4d5('0x40')]==_0x5e6205||_0x4b0752[_0xd4d5('0x41')]==_0x5e6205;});if(_0x25962d){if(_0x25962d[_0xd4d5('0x24')]!==_0xf13b6[_0xd4d5('0x24')]['toLowerCase']()){_0x25962d['stateTime']=_[_0xd4d5('0x39')](moment()['format']('x'));}_0x25962d[_0xd4d5('0x24')]=_0xf13b6[_0xd4d5('0x24')][_0xd4d5('0x35')]();_0x25962d[_0xd4d5('0x34')]=!![];_0x25962d['updateStatusRealtime'](_0xf13b6);}}}}catch(_0x34ec7b){logger[_0xd4d5('0x16')]('[userReport][devicestatechange]',util[_0xd4d5('0x18')](_0x34ec7b,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x58f56e){try{if(this[_0xd4d5('0x20')](_0x58f56e)&&this['isNotNull'](_0x58f56e[_0xd4d5('0x12')])){logger[_0xd4d5('0x23')](_0xd4d5('0x42'),_0x58f56e[_0xd4d5('0x43')],_0x58f56e['address'],_0x58f56e['peerstatus']);logger[_0xd4d5('0x25')](_0xd4d5('0x44'),util[_0xd4d5('0x18')](_0x58f56e,{'showHidden':![],'depth':null}));if(this[_0xd4d5('0xc')][_0x58f56e['peer']]){if(!this[_0xd4d5('0xc')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x34')]||_0x58f56e[_0xd4d5('0x12')]['toLowerCase']()=='registered'){this['agents'][_0x58f56e['peer']][_0xd4d5('0x34')]=![];this['agents'][_0x58f56e[_0xd4d5('0x43')]]['status']=_0x58f56e[_0xd4d5('0x12')]['toLowerCase']();this[_0xd4d5('0xc')][_0x58f56e[_0xd4d5('0x43')]]['address']=_0x58f56e[_0xd4d5('0x45')];this[_0xd4d5('0xc')][_0x58f56e['peer']][_0xd4d5('0x38')](_0x58f56e);}}else if(this[_0xd4d5('0xd')][_0x58f56e['peer']]){this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x46')]=_0x58f56e[_0xd4d5('0x12')][_0xd4d5('0x35')]();this[_0xd4d5('0xd')][_0x58f56e['peer']][_0xd4d5('0x45')]=_0x58f56e[_0xd4d5('0x45')];logger[_0xd4d5('0x25')](_0xd4d5('0x47'),util[_0xd4d5('0x18')](this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4d5('0x2d')](_0xd4d5('0x3a'),this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x2f')]),_0xd4d5('0x48'),this[_0xd4d5('0xd')][_0x58f56e[_0xd4d5('0x43')]]);}else if(this[_0xd4d5('0xb')][_0x58f56e[_0xd4d5('0x43')]]){this['trunks'][_0x58f56e[_0xd4d5('0x43')]][_0xd4d5('0x46')]=_0x58f56e[_0xd4d5('0x12')]['toLowerCase']();this['trunks'][_0x58f56e['peer']]['address']=_0x58f56e[_0xd4d5('0x45')];logger[_0xd4d5('0x25')](_0xd4d5('0x49'),util[_0xd4d5('0x18')](this[_0xd4d5('0xb')][_0x58f56e[_0xd4d5('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4d5('0x2d')](_0xd4d5('0x2e'),this[_0xd4d5('0xb')][_0x58f56e['peer']][_0xd4d5('0x2f')]),_0xd4d5('0x30'),this['trunks'][_0x58f56e['peer']]);}}}catch(_0x41cde1){logger['error'](_0xd4d5('0x44'),util['inspect'](_0x41cde1,{'showHidden':![],'depth':null}));}};module[_0xd4d5('0x4a')]=UserReport;
\ No newline at end of file
index 30368e4..d350c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c9b=['voice','merge','omit','event','privilege','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','variables','user:called','error','[%s][voiceAgentReport][agentcalled]','inspect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','connect','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','rejected','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acwTimeout','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','custom:voiceAgentReport','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','defaults','socket.io-emitter','voiceChannels','voiceQueues','agents','agentcalled','syncAgentCalled','bind','syncAgentConnect','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20event:','channels','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','type','inbound'];(function(_0x110a31,_0x473e4c){var _0x5922e2=function(_0x316931){while(--_0x316931){_0x110a31['push'](_0x110a31['shift']());}};_0x5922e2(++_0x473e4c);}(_0x6c9b,0x1a4));var _0xb6c9=function(_0x31c798,_0x2f1872){_0x31c798=_0x31c798-0x0;var _0x5e508d=_0x6c9b[_0x31c798];return _0x5e508d;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0xb6c9('0x0'));var Redis=require(_0xb6c9('0x1'));var config=require(_0xb6c9('0x2'));var logger=require(_0xb6c9('0x3'))(_0xb6c9('0x4'));var ami=require('../ami');config[_0xb6c9('0x5')]=_[_0xb6c9('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb6c9('0x7'))(new Redis(config[_0xb6c9('0x5')]));function VoiceAgentReport(_0x3c2361){this['channels']={};this[_0xb6c9('0x8')]=_0x3c2361['channels'];this[_0xb6c9('0x9')]=_0x3c2361[_0xb6c9('0x9')];this[_0xb6c9('0xa')]=_0x3c2361[_0xb6c9('0xa')];this['variables']={};ami['on'](_0xb6c9('0xb'),this[_0xb6c9('0xc')][_0xb6c9('0xd')](this));ami['on']('agentconnect',this[_0xb6c9('0xe')][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0xf'),this['syncAgentRingNoAnswer'][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0x10'),this[_0xb6c9('0x11')][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0x12'),this[_0xb6c9('0x13')][_0xb6c9('0xd')](this));ami['on']('varset',this[_0xb6c9('0x14')]['bind'](this));ami['on'](_0xb6c9('0x15'),this[_0xb6c9('0x16')]['bind'](this));ami['on'](_0xb6c9('0x17'),this[_0xb6c9('0x18')][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0x19'),this['syncMusicOnHoldStop'][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0x1a'),this[_0xb6c9('0x1b')][_0xb6c9('0xd')](this));ami['on'](_0xb6c9('0x1c'),this[_0xb6c9('0x1d')][_0xb6c9('0xd')](this));}VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0x1f')]=function(_0x427ead,_0x342fb2,_0x2e09f7){io['to'](_0x427ead)[_0xb6c9('0x1f')](_0x342fb2,_0x2e09f7);};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0x20')]=function(_0x4291a7){return _0x4291a7!==null&&!_[_0xb6c9('0x21')](_0x4291a7);};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0xc')]=function(_0xd9b923){try{if(this['isNotNull'](_0xd9b923)){logger[_0xb6c9('0x22')](_0xb6c9('0x23'),_0xd9b923[_0xb6c9('0x24')],_0xd9b923[_0xb6c9('0x25')],_0xd9b923[_0xb6c9('0x26')]);logger['debug'](_0xb6c9('0x27'),_0xd9b923[_0xb6c9('0x24')],util['inspect'](_0xd9b923,{'showHidden':![],'depth':null}));if(_[_0xb6c9('0x21')](this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]])){this['channels'][_0xd9b923[_0xb6c9('0x24')]]={};}if(_[_0xb6c9('0x21')](this[_0xb6c9('0x28')][_0xd9b923['uniqueid']][_0xd9b923['destuniqueid']])){this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923[_0xb6c9('0x26')]]={'agentcalledAt':moment()[_0xb6c9('0x29')](_0xb6c9('0x2a')),'lastevent':_0xb6c9('0x2b'),'mandatoryDisposition':this['voiceQueues'][_0xd9b923[_0xb6c9('0x2c')]]?this[_0xb6c9('0x9')][_0xd9b923[_0xb6c9('0x2c')]][_0xb6c9('0x2d')]||![]:![],'type':this['voiceQueues'][_0xd9b923[_0xb6c9('0x2c')]]?this[_0xb6c9('0x9')][_0xd9b923['queue']][_0xb6c9('0x2e')]||_0xb6c9('0x2f'):'inbound','variables':this['variables'][_0xd9b923[_0xb6c9('0x24')]],'motionChannel':_0xb6c9('0x30')};}_[_0xb6c9('0x31')](this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923[_0xb6c9('0x26')]],_[_0xb6c9('0x32')](_0xd9b923,[_0xb6c9('0x33'),_0xb6c9('0x34')]));logger[_0xb6c9('0x35')](_0xb6c9('0x36'),_0xd9b923[_0xb6c9('0x24')],util['inspect'](this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923[_0xb6c9('0x26')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb6c9('0x37'),this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923[_0xb6c9('0x26')]]);var _0x20d045={'id':this['agents'][_0xd9b923['interface']]['id'],'calleridnum':this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923['destuniqueid']]['calleridnum'],'queue':this['channels'][_0xd9b923['uniqueid']][_0xd9b923[_0xb6c9('0x26')]]['queue'],'variables':this[_0xb6c9('0x28')][_0xd9b923[_0xb6c9('0x24')]][_0xd9b923[_0xb6c9('0x26')]][_0xb6c9('0x38')]};logger[_0xb6c9('0x35')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0xd9b923[_0xb6c9('0x24')],util['inspect'](_0x20d045,{'showHidden':![],'depth':null}));this[_0xb6c9('0x1f')](util['format']('user:%s',_0xd9b923[_0xb6c9('0x25')]),_0xb6c9('0x39'),_0x20d045);}}catch(_0x3e05b6){logger[_0xb6c9('0x3a')](_0xb6c9('0x3b'),_0xd9b923[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x3e05b6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0xe')]=function(_0x386eb5){try{if(this[_0xb6c9('0x20')](_0x386eb5)){if(this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]]){logger['debug'](_0xb6c9('0x3d'),_0x386eb5[_0xb6c9('0x24')],util['inspect'](_0x386eb5,{'showHidden':![],'depth':null}));for(var _0x1e040b in this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]]){if(this[_0xb6c9('0x28')][_0x386eb5['uniqueid']]['hasOwnProperty'](_0x1e040b)){if(_0x386eb5['destuniqueid']===_0x1e040b){logger[_0xb6c9('0x22')](_0xb6c9('0x3e'),_0x386eb5['uniqueid'],_0x386eb5[_0xb6c9('0x25')],_0x386eb5[_0xb6c9('0x26')]);this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x3f')]=moment()[_0xb6c9('0x29')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x40')]=_0x386eb5[_0xb6c9('0x40')];this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x41')]=_0x386eb5[_0xb6c9('0x41')];this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x42')]=_0x386eb5[_0xb6c9('0x42')];this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x43')]=_0x386eb5[_0xb6c9('0x43')];this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b]['holdtime']=_0x386eb5['holdtime'];this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b]['lastevent']=_0xb6c9('0x44');if(this[_0xb6c9('0x8')][this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b]['uniqueid']]){var _0x7c0dce=this[_0xb6c9('0x8')][this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b]['uniqueid']][_0xb6c9('0x45')];this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b]['routealias']=_0x7c0dce;_0x386eb5[_0xb6c9('0x45')]=_0x7c0dce;}_[_0xb6c9('0x31')](this[_0xb6c9('0xa')][_0x386eb5[_0xb6c9('0x46')]],_[_0xb6c9('0x47')](_0x386eb5,[_0xb6c9('0x2c'),_0xb6c9('0x48'),_0xb6c9('0x45')]));logger['debug']('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x386eb5[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x386eb5[_0xb6c9('0x26')]],{'showHidden':![],'depth':null}));ami[_0xb6c9('0x1f')]('custom:agentconnect',this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x386eb5['destuniqueid']]);logger[_0xb6c9('0x35')](_0xb6c9('0x49'),_0x386eb5['uniqueid'],util[_0xb6c9('0x3c')](this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x386eb5[_0xb6c9('0x26')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xb6c9('0x29')](_0xb6c9('0x4a'),_0x386eb5[_0xb6c9('0x25')]),_0xb6c9('0x4b'),this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x386eb5[_0xb6c9('0x26')]]);}else if(!this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b][_0xb6c9('0xf')]&&!this['channels'][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x12')]){logger[_0xb6c9('0x22')](_0xb6c9('0x4c'),_0x386eb5[_0xb6c9('0x24')],this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x25')],_0x1e040b);this[_0xb6c9('0x28')][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0xf')]=!![];this['channels'][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x4d')]=moment()[_0xb6c9('0x29')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b][_0xb6c9('0x4e')]=_0x386eb5[_0xb6c9('0x26')];this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b][_0xb6c9('0x4f')]=_0x386eb5[_0xb6c9('0x25')];this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b][_0xb6c9('0x50')]=_0xb6c9('0x51');this['channels'][_0x386eb5[_0xb6c9('0x24')]][_0x1e040b]['reason']=_0xb6c9('0x51');logger['debug'](_0xb6c9('0x52'),_0x386eb5['uniqueid'],util['inspect'](this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b],{'showHidden':![],'depth':null}));ami[_0xb6c9('0x1f')](_0xb6c9('0x53'),this[_0xb6c9('0x28')][_0x386eb5['uniqueid']][_0x1e040b]);}}}}}}catch(_0x5711c1){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x386eb5[_0xb6c9('0x24')],util['inspect'](_0x5711c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0x54')]=function(_0x23363e){try{if(this[_0xb6c9('0x20')](_0x23363e)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x23363e['uniqueid'],util[_0xb6c9('0x3c')](_0x23363e,{'showHidden':![],'depth':null}));if(this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]]&&this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]][_0x23363e[_0xb6c9('0x26')]]){logger[_0xb6c9('0x22')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x23363e['uniqueid'],_0x23363e[_0xb6c9('0x25')],_0x23363e['destuniqueid']);this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]][_0x23363e[_0xb6c9('0x26')]][_0xb6c9('0xf')]=!![];this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]][_0x23363e['destuniqueid']][_0xb6c9('0x4d')]=moment()[_0xb6c9('0x29')](_0xb6c9('0x2a'));this['channels'][_0x23363e[_0xb6c9('0x24')]][_0x23363e[_0xb6c9('0x26')]][_0xb6c9('0x50')]=_0xb6c9('0x55');this['channels'][_0x23363e[_0xb6c9('0x24')]][_0x23363e['destuniqueid']][_0xb6c9('0x56')]='rejected';logger['debug'](_0xb6c9('0x57'),_0x23363e[_0xb6c9('0x24')],util['inspect'](this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]][_0x23363e[_0xb6c9('0x26')]],{'showHidden':![],'depth':null}));ami[_0xb6c9('0x1f')](_0xb6c9('0x58'),this[_0xb6c9('0x28')][_0x23363e[_0xb6c9('0x24')]][_0x23363e['destuniqueid']]);}}}catch(_0x33e268){logger[_0xb6c9('0x3a')](_0xb6c9('0x59'),_0x23363e[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x33e268,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0x11')]=function(_0x16c55f){try{if(this[_0xb6c9('0x20')](_0x16c55f)){logger['debug'](_0xb6c9('0x5a'),_0x16c55f[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x16c55f,{'showHidden':![],'depth':null}));if(this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]]){for(var _0x4c3838 in this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]]){if(this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0xb6c9('0x5b')](_0x4c3838)&&!this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838][_0xb6c9('0xf')]&&!this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838][_0xb6c9('0x12')]){logger[_0xb6c9('0x22')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x16c55f[_0xb6c9('0x24')],this[_0xb6c9('0x28')][_0x16c55f['uniqueid']][_0x4c3838][_0xb6c9('0x25')],_0x4c3838);this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838][_0xb6c9('0xf')]=!![];this['channels'][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838][_0xb6c9('0x4d')]=moment()[_0xb6c9('0x29')](_0xb6c9('0x2a'));this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838][_0xb6c9('0x50')]='abandoned';this['channels'][_0x16c55f['uniqueid']][_0x4c3838][_0xb6c9('0x56')]=_0xb6c9('0x5c');logger['debug'](_0xb6c9('0x5d'),_0x16c55f[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838],{'showHidden':![],'depth':null}));ami['emit'](_0xb6c9('0x5e'),this[_0xb6c9('0x28')][_0x16c55f[_0xb6c9('0x24')]][_0x4c3838]);}}}}}catch(_0x150383){logger[_0xb6c9('0x3a')](_0xb6c9('0x5f'),_0x16c55f[_0xb6c9('0x24')],util['inspect'](_0x150383,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x4510dd){try{if(this[_0xb6c9('0x20')](_0x4510dd)){logger['debug'](_0xb6c9('0x60'),_0x4510dd['uniqueid'],util['inspect'](_0x4510dd,{'showHidden':![],'depth':null}));if(this[_0xb6c9('0x28')][_0x4510dd['uniqueid']]){for(var _0x55d224 in this[_0xb6c9('0x28')][_0x4510dd['uniqueid']]){if(this[_0xb6c9('0x28')][_0x4510dd[_0xb6c9('0x24')]][_0xb6c9('0x5b')](_0x55d224)){if(this[_0xb6c9('0x28')][_0x4510dd['uniqueid']][_0x55d224][_0xb6c9('0x3f')]&&!this[_0xb6c9('0x28')][_0x4510dd['uniqueid']][_0x55d224][_0xb6c9('0x12')]){logger[_0xb6c9('0x22')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x4510dd[_0xb6c9('0x24')],this[_0xb6c9('0x28')][_0x4510dd['uniqueid']][_0x55d224][_0xb6c9('0x25')],_0x55d224);this[_0xb6c9('0x28')][_0x4510dd[_0xb6c9('0x24')]][_0x55d224][_0xb6c9('0x12')]=!![];this[_0xb6c9('0x28')][_0x4510dd['uniqueid']][_0x55d224][_0xb6c9('0x61')]=moment()['format'](_0xb6c9('0x2a'));this[_0xb6c9('0x28')][_0x4510dd[_0xb6c9('0x24')]][_0x55d224]['lastevent']=_0xb6c9('0x62');this[_0xb6c9('0x28')][_0x4510dd[_0xb6c9('0x24')]][_0x55d224][_0xb6c9('0x56')]=_0x4510dd[_0xb6c9('0x56')]=='transfer'?_0xb6c9('0x63'):_0x4510dd[_0xb6c9('0x56')];this['channels'][_0x4510dd[_0xb6c9('0x24')]][_0x55d224][_0xb6c9('0x64')]=_0x4510dd[_0xb6c9('0x64')];if(this[_0xb6c9('0x9')][_0x4510dd[_0xb6c9('0x2c')]]&&this[_0xb6c9('0x9')][_0x4510dd['queue']]['acw']){this['channels'][_0x4510dd[_0xb6c9('0x24')]][_0x55d224]['acwtime']=this[_0xb6c9('0x9')][_0x4510dd[_0xb6c9('0x2c')]][_0xb6c9('0x65')];this['channels'][_0x4510dd['uniqueid']][_0x55d224]['agentacw']=!![];}this[_0xb6c9('0xa')][_0x4510dd[_0xb6c9('0x46')]]=_[_0xb6c9('0x32')](this[_0xb6c9('0xa')][_0x4510dd[_0xb6c9('0x46')]],['queue',_0xb6c9('0x48')]);logger[_0xb6c9('0x35')](_0xb6c9('0x66'),_0x4510dd[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](this[_0xb6c9('0x28')][_0x4510dd[_0xb6c9('0x24')]][_0x55d224],{'showHidden':![],'depth':null}));ami[_0xb6c9('0x1f')](_0xb6c9('0x67'),this['channels'][_0x4510dd['uniqueid']][_0x55d224]);logger[_0xb6c9('0x35')](_0xb6c9('0x68'),_0x4510dd['uniqueid'],util[_0xb6c9('0x3c')]({'id':this['agents'][_0x4510dd['interface']]['id'],'destaccountcode':_0x4510dd[_0xb6c9('0x69')]},{'showHidden':![],'depth':null}));this[_0xb6c9('0x1f')](util[_0xb6c9('0x29')](_0xb6c9('0x4a'),_0x4510dd[_0xb6c9('0x25')]),_0xb6c9('0x6a'),{'id':this[_0xb6c9('0xa')][_0x4510dd[_0xb6c9('0x46')]]['id'],'destaccountcode':_0x4510dd[_0xb6c9('0x69')]});}}}}}}catch(_0x5792d5){logger['error']('[%s][voiceAgentReport][agentcomplete]',_0x4510dd[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x5792d5,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xb6c9('0x14')]=function(_0x4ca91a){try{if(this[_0xb6c9('0x20')](_0x4ca91a)){logger[_0xb6c9('0x35')](_0xb6c9('0x6b'),_0x4ca91a['uniqueid'],util[_0xb6c9('0x3c')](_0x4ca91a,{'showHidden':![],'depth':null}));this['addVariable'](_0x4ca91a['uniqueid'],_[_0xb6c9('0x6c')](_0x4ca91a[_0xb6c9('0x6d')])[0x0],_0x4ca91a[_0xb6c9('0x6e')]);if(this['channels'][_0x4ca91a[_0xb6c9('0x24')]]){for(var _0x239ae0 in this['channels'][_0x4ca91a[_0xb6c9('0x24')]]){if(this[_0xb6c9('0x28')][_0x4ca91a[_0xb6c9('0x24')]][_0xb6c9('0x5b')](_0x239ae0)){logger[_0xb6c9('0x22')](_0xb6c9('0x6f'),_0x4ca91a['uniqueid'],_0x239ae0,_[_0xb6c9('0x6c')](_0x4ca91a[_0xb6c9('0x6d')])[0x0],_0x4ca91a[_0xb6c9('0x6e')]);if(_[_0xb6c9('0x21')](this[_0xb6c9('0x28')][_0x4ca91a['uniqueid']][_0x239ae0][_0xb6c9('0x38')])){this[_0xb6c9('0x28')][_0x4ca91a['uniqueid']][_0x239ae0]['variables']={};}this[_0xb6c9('0x28')][_0x4ca91a[_0xb6c9('0x24')]][_0x239ae0][_0xb6c9('0x38')]=this[_0xb6c9('0x38')][_0x4ca91a[_0xb6c9('0x24')]];}}}}}catch(_0x30bf08){logger[_0xb6c9('0x3a')]('[%s][voiceAgentReport][varset]',_0x4ca91a[_0xb6c9('0x24')],util['inspect'](_0x30bf08,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb6c9('0x1e')][_0xb6c9('0x70')]=function(_0x5aa6cc,_0x2d1aa8,_0x2cc9dd){var _0x48f6c6=[_0xb6c9('0x71'),_0xb6c9('0x72'),'rtpaudioqosjitter',_0xb6c9('0x73'),_0xb6c9('0x74'),_0xb6c9('0x75'),_0xb6c9('0x76'),_0xb6c9('0x77'),_0xb6c9('0x78'),'sipuri',_0xb6c9('0x79'),'bridgepvtcallid',_0xb6c9('0x7a'),_0xb6c9('0x7b'),_0xb6c9('0x7c'),_0xb6c9('0x7d'),_0xb6c9('0x25'),'memberpenalty',_0xb6c9('0x7e')];if(!_[_0xb6c9('0x7f')](_0x2d1aa8)&&!_['includes'](_0x48f6c6,_0x2d1aa8)){if(_['isUndefined'](this[_0xb6c9('0x38')][_0x5aa6cc])){this[_0xb6c9('0x38')][_0x5aa6cc]={};}this['variables'][_0x5aa6cc][_0x2d1aa8]=_0x2cc9dd;}};VoiceAgentReport[_0xb6c9('0x1e')]['syncHangup']=function(_0x25ea37){try{if(this['isNotNull'](_0x25ea37)){logger[_0xb6c9('0x35')]('[%s][voiceAgentReport][hangup]\x20event:',_0x25ea37['uniqueid'],util[_0xb6c9('0x3c')](_0x25ea37,{'showHidden':![],'depth':null}));if(this[_0xb6c9('0x28')][_0x25ea37[_0xb6c9('0x24')]]){for(var _0xc361e in this[_0xb6c9('0x28')][_0x25ea37[_0xb6c9('0x24')]]){if(this[_0xb6c9('0x28')][_0x25ea37[_0xb6c9('0x24')]][_0xb6c9('0x5b')](_0xc361e)){if(this[_0xb6c9('0x28')][_0x25ea37['uniqueid']][_0xc361e][_0xb6c9('0x56')]==_0xb6c9('0x80')&&this[_0xb6c9('0x28')][_0x25ea37['uniqueid']][_0xc361e][_0xb6c9('0x12')]){logger['info'](_0xb6c9('0x81'),_0x25ea37['uniqueid'],_0xc361e);this['channels'][_0x25ea37[_0xb6c9('0x24')]][_0xc361e][_0xb6c9('0x61')]=moment()[_0xb6c9('0x29')](_0xb6c9('0x2a'));}}}logger[_0xb6c9('0x35')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x25ea37[_0xb6c9('0x24')],util['inspect'](_['values'](this[_0xb6c9('0x28')][_0x25ea37[_0xb6c9('0x24')]]),{'showHidden':![],'depth':null}));ami[_0xb6c9('0x1f')](_0xb6c9('0x82'),_[_0xb6c9('0x83')](this[_0xb6c9('0x28')][_0x25ea37['uniqueid']]));delete this['channels'][_0x25ea37[_0xb6c9('0x24')]];}if(this[_0xb6c9('0x38')][_0x25ea37[_0xb6c9('0x24')]]){delete this[_0xb6c9('0x38')][_0x25ea37[_0xb6c9('0x24')]];}}}catch(_0x3928da){logger[_0xb6c9('0x3a')](_0xb6c9('0x84'),_0x25ea37['uniqueid'],util[_0xb6c9('0x3c')](_0x3928da,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAttendedTransfer']=function(_0x52a2ba){try{if(this[_0xb6c9('0x20')](_0x52a2ba)){logger['debug'](_0xb6c9('0x85'),_0x52a2ba[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x52a2ba,{'showHidden':![],'depth':null}));if(this['channels'][_0x52a2ba[_0xb6c9('0x86')]]){for(var _0x416788 in this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]]){if(this['channels'][_0x52a2ba['transfereeuniqueid']][_0xb6c9('0x5b')](_0x416788)){if(_0x52a2ba[_0xb6c9('0x87')]===_0x416788){logger[_0xb6c9('0x22')](_0xb6c9('0x88'),_0x52a2ba[_0xb6c9('0x24')],this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]][_0x416788][_0xb6c9('0x25')],_0x416788);var _0x4e6428=moment();this[_0xb6c9('0x28')][_0x52a2ba['transfereeuniqueid']][_0x416788][_0xb6c9('0x12')]=!![];this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]][_0x416788][_0xb6c9('0x61')]=moment()[_0xb6c9('0x29')](_0xb6c9('0x2a'));this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]][_0x416788][_0xb6c9('0x50')]=_0xb6c9('0x62');this[_0xb6c9('0x28')][_0x52a2ba['transfereeuniqueid']][_0x416788][_0xb6c9('0x56')]=_0xb6c9('0x80');this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]][_0x416788]['talktime']=_0x4e6428[_0xb6c9('0x89')](this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x86')]][_0x416788]['agentconnectAt'],_0xb6c9('0x8a'));}}}}if(this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x8b')]]){var _0x18ad75=this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x8b')]];this[_0xb6c9('0x28')][_0x52a2ba[_0xb6c9('0x8b')]]=this[_0xb6c9('0x28')][_0x52a2ba['transfereeuniqueid']];this[_0xb6c9('0x28')][_0x52a2ba['transfereeuniqueid']]=_0x18ad75;}}}catch(_0x449dab){logger[_0xb6c9('0x3a')](_0xb6c9('0x8c'),_0x52a2ba[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x449dab,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xb6c9('0x1d')]=function(_0x40811e){try{if(this[_0xb6c9('0x20')](_0x40811e)){logger[_0xb6c9('0x35')](_0xb6c9('0x8d'),_0x40811e[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x40811e,{'showHidden':![],'depth':null}));if(this['channels'][_0x40811e[_0xb6c9('0x86')]]){for(var _0x257a1b in this[_0xb6c9('0x28')][_0x40811e[_0xb6c9('0x86')]]){if(this[_0xb6c9('0x28')][_0x40811e[_0xb6c9('0x86')]][_0xb6c9('0x5b')](_0x257a1b)){if(_0x40811e[_0xb6c9('0x8e')]===_0x257a1b){logger['info'](_0xb6c9('0x8f'),_0x40811e[_0xb6c9('0x24')],this['channels'][_0x40811e[_0xb6c9('0x86')]][_0x257a1b]['membername'],_0x257a1b);var _0x42e022=moment();this['channels'][_0x40811e[_0xb6c9('0x86')]][_0x257a1b][_0xb6c9('0x12')]=!![];this['channels'][_0x40811e[_0xb6c9('0x86')]][_0x257a1b][_0xb6c9('0x61')]=_0x42e022;this[_0xb6c9('0x28')][_0x40811e[_0xb6c9('0x86')]][_0x257a1b]['lastevent']=_0xb6c9('0x62');this[_0xb6c9('0x28')][_0x40811e[_0xb6c9('0x86')]][_0x257a1b]['reason']=_0xb6c9('0x80');this[_0xb6c9('0x28')][_0x40811e['transfereeuniqueid']][_0x257a1b][_0xb6c9('0x64')]=_0x42e022[_0xb6c9('0x89')](this['channels'][_0x40811e['transfereeuniqueid']][_0x257a1b][_0xb6c9('0x3f')],_0xb6c9('0x8a'));}}}}}}catch(_0x3050e3){logger[_0xb6c9('0x3a')](_0xb6c9('0x90'),_0x40811e[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x3050e3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb6c9('0x1e')]['syncMusicOnHoldStart']=function(_0x21f13e){var _0x328069='';try{if(this[_0xb6c9('0x20')](_0x21f13e)){logger[_0xb6c9('0x35')](_0xb6c9('0x91'),_0x21f13e[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x21f13e,{'showHidden':![],'depth':null}));if(_0x21f13e[_0xb6c9('0x92')]){_0x328069=_0x21f13e[_0xb6c9('0x92')]['substring'](0x0,_0x21f13e[_0xb6c9('0x92')]['lastIndexOf']('-'));if(this['agents'][_0x328069]){logger['info'](_0xb6c9('0x93'),_0x21f13e[_0xb6c9('0x24')],_0x328069);this[_0xb6c9('0xa')][_0x328069][_0xb6c9('0x94')]=!![];}}}}catch(_0x467ce7){logger[_0xb6c9('0x3a')](_0xb6c9('0x95'),_0x21f13e[_0xb6c9('0x24')],util['inspect'](_0x467ce7,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xb6c9('0x96')]=function(_0x556161){var _0x10f220='';try{if(this[_0xb6c9('0x20')](_0x556161)){logger[_0xb6c9('0x35')](_0xb6c9('0x97'),_0x556161['uniqueid'],util[_0xb6c9('0x3c')](_0x556161,{'showHidden':![],'depth':null}));if(_0x556161['channel']){_0x10f220=_0x556161['channel'][_0xb6c9('0x98')](0x0,_0x556161[_0xb6c9('0x92')]['lastIndexOf']('-'));if(this[_0xb6c9('0xa')][_0x10f220]){logger[_0xb6c9('0x22')](_0xb6c9('0x99'),_0x556161[_0xb6c9('0x24')],_0x10f220);this[_0xb6c9('0xa')][_0x10f220][_0xb6c9('0x94')]=![];}}}}catch(_0x8ad9d8){logger[_0xb6c9('0x3a')](_0xb6c9('0x9a'),_0x556161[_0xb6c9('0x24')],util[_0xb6c9('0x3c')](_0x8ad9d8,{'showHidden':![],'depth':null}));}};module[_0xb6c9('0x9b')]=VoiceAgentReport;
\ No newline at end of file
+var _0x5110=['inspect','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','queue','inbound','variables','voice','merge','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','format','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','reason','transfer','agent','talktime','acw','acwtime','acwTimeout','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','syncVarSet','syncHangup','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5110,0x111));var _0x0511=function(_0x437787,_0x36e9f6){_0x437787=_0x437787-0x0;var _0x567656=_0x5110[_0x437787];return _0x567656;};'use strict';var _=require(_0x0511('0x0'));var moment=require(_0x0511('0x1'));var util=require(_0x0511('0x2'));var Redis=require(_0x0511('0x3'));var config=require(_0x0511('0x4'));var logger=require('../../../config/logger')(_0x0511('0x5'));var ami=require(_0x0511('0x6'));config[_0x0511('0x7')]=_[_0x0511('0x8')](config[_0x0511('0x7')],{'host':_0x0511('0x9'),'port':0x18eb});var io=require(_0x0511('0xa'))(new Redis(config[_0x0511('0x7')]));function VoiceAgentReport(_0x27e8b1){this[_0x0511('0xb')]={};this[_0x0511('0xc')]=_0x27e8b1['channels'];this[_0x0511('0xd')]=_0x27e8b1[_0x0511('0xd')];this[_0x0511('0xe')]=_0x27e8b1['agents'];this['variables']={};ami['on']('agentcalled',this[_0x0511('0xf')][_0x0511('0x10')](this));ami['on'](_0x0511('0x11'),this[_0x0511('0x12')][_0x0511('0x10')](this));ami['on'](_0x0511('0x13'),this['syncAgentRingNoAnswer'][_0x0511('0x10')](this));ami['on'](_0x0511('0x14'),this[_0x0511('0x15')][_0x0511('0x10')](this));ami['on']('agentcomplete',this[_0x0511('0x16')][_0x0511('0x10')](this));ami['on'](_0x0511('0x17'),this[_0x0511('0x18')][_0x0511('0x10')](this));ami['on']('hangup',this[_0x0511('0x19')][_0x0511('0x10')](this));ami['on'](_0x0511('0x1a'),this['syncMusicOnHoldStart'][_0x0511('0x10')](this));ami['on'](_0x0511('0x1b'),this[_0x0511('0x1c')][_0x0511('0x10')](this));ami['on']('attendedtransfer',this[_0x0511('0x1d')]['bind'](this));ami['on'](_0x0511('0x1e'),this[_0x0511('0x1f')][_0x0511('0x10')](this));}VoiceAgentReport[_0x0511('0x20')]['emit']=function(_0x552719,_0x1f9e24,_0x543ebf){io['to'](_0x552719)[_0x0511('0x21')](_0x1f9e24,_0x543ebf);};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x22')]=function(_0x4db987){return _0x4db987!==null&&!_[_0x0511('0x23')](_0x4db987);};VoiceAgentReport['prototype'][_0x0511('0xf')]=function(_0x185cbf){try{if(this[_0x0511('0x22')](_0x185cbf)){logger[_0x0511('0x24')](_0x0511('0x25'),_0x185cbf[_0x0511('0x26')],_0x185cbf[_0x0511('0x27')],_0x185cbf[_0x0511('0x28')]);logger[_0x0511('0x29')](_0x0511('0x2a'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x185cbf,{'showHidden':![],'depth':null}));if(_[_0x0511('0x23')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]])){this[_0x0511('0xb')][_0x185cbf['uniqueid']]={};}if(_[_0x0511('0x23')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]])){this['channels'][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]={'agentcalledAt':moment()['format'](_0x0511('0x2c')),'lastevent':_0x0511('0x2d'),'mandatoryDisposition':this['voiceQueues'][_0x185cbf['queue']]?this[_0x0511('0xd')][_0x185cbf['queue']][_0x0511('0x2e')]||![]:![],'type':this[_0x0511('0xd')][_0x185cbf[_0x0511('0x2f')]]?this[_0x0511('0xd')][_0x185cbf[_0x0511('0x2f')]]['type']||'inbound':_0x0511('0x30'),'variables':this[_0x0511('0x31')][_0x185cbf[_0x0511('0x26')]],'motionChannel':_0x0511('0x32')};}_[_0x0511('0x33')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]],_['omit'](_0x185cbf,[_0x0511('0x34'),'privilege']));logger[_0x0511('0x29')](_0x0511('0x35'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x36'),this[_0x0511('0xb')][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]);var _0x44c809={'id':this[_0x0511('0xe')][_0x185cbf[_0x0511('0x37')]]['id'],'calleridnum':this[_0x0511('0xb')][_0x185cbf['uniqueid']][_0x185cbf[_0x0511('0x28')]][_0x0511('0x38')],'queue':this[_0x0511('0xb')][_0x185cbf['uniqueid']][_0x185cbf['destuniqueid']]['queue'],'variables':this['channels'][_0x185cbf[_0x0511('0x26')]][_0x185cbf[_0x0511('0x28')]]['variables']};logger[_0x0511('0x29')](_0x0511('0x39'),_0x185cbf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x44c809,{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util['format'](_0x0511('0x3a'),_0x185cbf[_0x0511('0x27')]),_0x0511('0x3b'),_0x44c809);}}catch(_0x41498e){logger[_0x0511('0x3c')](_0x0511('0x3d'),_0x185cbf['uniqueid'],util['inspect'](_0x41498e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x12')]=function(_0x787170){try{if(this['isNotNull'](_0x787170)){if(this['channels'][_0x787170[_0x0511('0x26')]]){logger[_0x0511('0x29')](_0x0511('0x3e'),_0x787170['uniqueid'],util[_0x0511('0x2b')](_0x787170,{'showHidden':![],'depth':null}));for(var _0x15f800 in this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]]){if(this['channels'][_0x787170[_0x0511('0x26')]][_0x0511('0x3f')](_0x15f800)){if(_0x787170[_0x0511('0x28')]===_0x15f800){logger[_0x0511('0x24')](_0x0511('0x40'),_0x787170['uniqueid'],_0x787170['membername'],_0x787170[_0x0511('0x28')]);this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x41')]=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x43')]=_0x787170[_0x0511('0x43')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['connectedlinenum']=_0x787170[_0x0511('0x44')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x45')]=_0x787170[_0x0511('0x45')];this[_0x0511('0xb')][_0x787170['uniqueid']][_0x15f800]['destchannelstatedesc']=_0x787170[_0x0511('0x46')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x47')]=_0x787170['holdtime'];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x48')]=_0x0511('0x49');if(this[_0x0511('0xc')][this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['uniqueid']]){var _0x19de7c=this[_0x0511('0xc')][this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x26')]][_0x0511('0x4a')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['routealias']=_0x19de7c;_0x787170[_0x0511('0x4a')]=_0x19de7c;}_['merge'](this[_0x0511('0xe')][_0x787170['interface']],_[_0x0511('0x4b')](_0x787170,[_0x0511('0x2f'),_0x0511('0x4c'),_0x0511('0x4a')]));logger[_0x0511('0x29')](_0x0511('0x4d'),_0x787170[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0511('0x4e'),this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]]);logger[_0x0511('0x29')](_0x0511('0x4f'),_0x787170[_0x0511('0x26')],util['inspect'](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x787170[_0x0511('0x28')]],{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util[_0x0511('0x42')](_0x0511('0x3a'),_0x787170['membername']),_0x0511('0x50'),this[_0x0511('0xb')][_0x787170['uniqueid']][_0x787170[_0x0511('0x28')]]);}else if(!this['channels'][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x13')]&&!this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x51')]){logger[_0x0511('0x24')](_0x0511('0x52'),_0x787170['uniqueid'],this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]['membername'],_0x15f800);this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x13')]=!![];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x53')]=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x54')]=_0x787170[_0x0511('0x28')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x55')]=_0x787170[_0x0511('0x27')];this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800][_0x0511('0x48')]=_0x0511('0x56');this['channels'][_0x787170['uniqueid']][_0x15f800]['reason']=_0x0511('0x56');logger[_0x0511('0x29')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x787170[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x57'),this[_0x0511('0xb')][_0x787170[_0x0511('0x26')]][_0x15f800]);}}}}}}catch(_0x39950d){logger[_0x0511('0x3c')](_0x0511('0x58'),_0x787170['uniqueid'],util[_0x0511('0x2b')](_0x39950d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncAgentRingNoAnswer']=function(_0x20d709){try{if(this[_0x0511('0x22')](_0x20d709)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x20d709['uniqueid'],util[_0x0511('0x2b')](_0x20d709,{'showHidden':![],'depth':null}));if(this['channels'][_0x20d709[_0x0511('0x26')]]&&this['channels'][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]){logger['info']('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x20d709[_0x0511('0x26')],_0x20d709[_0x0511('0x27')],_0x20d709[_0x0511('0x28')]);this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]['agentringnoanswer']=!![];this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]][_0x0511('0x53')]=moment()[_0x0511('0x42')](_0x0511('0x2c'));this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']][_0x0511('0x48')]=_0x0511('0x59');this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709['destuniqueid']]['reason']=_0x0511('0x59');logger[_0x0511('0x29')](_0x0511('0x5a'),_0x20d709[_0x0511('0x26')],util['inspect'](this['channels'][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')](_0x0511('0x5b'),this[_0x0511('0xb')][_0x20d709[_0x0511('0x26')]][_0x20d709[_0x0511('0x28')]]);}}}catch(_0x553b7c){logger[_0x0511('0x3c')]('[%s][voiceAgentReport][agentringnoanswer]',_0x20d709[_0x0511('0x26')],util['inspect'](_0x553b7c,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x15')]=function(_0x5968e7){try{if(this[_0x0511('0x22')](_0x5968e7)){logger['debug'](_0x0511('0x5c'),_0x5968e7[_0x0511('0x26')],util[_0x0511('0x2b')](_0x5968e7,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]]){for(var _0x216856 in this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x0511('0x3f')](_0x216856)&&!this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856][_0x0511('0x13')]&&!this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856]['agentcomplete']){logger[_0x0511('0x24')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x5968e7['uniqueid'],this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x27')],_0x216856);this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]['agentringnoanswer']=!![];this[_0x0511('0xb')][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x53')]=moment()['format'](_0x0511('0x2c'));this['channels'][_0x5968e7[_0x0511('0x26')]][_0x216856][_0x0511('0x48')]=_0x0511('0x5d');this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]['reason']=_0x0511('0x5d');logger[_0x0511('0x29')](_0x0511('0x5e'),_0x5968e7[_0x0511('0x26')],util[_0x0511('0x2b')](this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856],{'showHidden':![],'depth':null}));ami[_0x0511('0x21')]('custom:agentqueuecallerabandon',this[_0x0511('0xb')][_0x5968e7['uniqueid']][_0x216856]);}}}}}catch(_0x3540fc){logger[_0x0511('0x3c')](_0x0511('0x5f'),_0x5968e7['uniqueid'],util[_0x0511('0x2b')](_0x3540fc,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x446bcf){try{if(this[_0x0511('0x22')](_0x446bcf)){logger[_0x0511('0x29')](_0x0511('0x60'),_0x446bcf['uniqueid'],util[_0x0511('0x2b')](_0x446bcf,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]]){for(var _0xa0466e in this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0x0511('0x3f')](_0xa0466e)){if(this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x41')]&&!this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e]['agentcomplete']){logger[_0x0511('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x446bcf[_0x0511('0x26')],this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x27')],_0xa0466e);this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x51')]=!![];this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e][_0x0511('0x61')]=moment()[_0x0511('0x42')](_0x0511('0x2c'));this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e]['lastevent']=_0x0511('0x62');this[_0x0511('0xb')][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x63')]=_0x446bcf['reason']==_0x0511('0x64')?_0x0511('0x65'):_0x446bcf[_0x0511('0x63')];this[_0x0511('0xb')][_0x446bcf[_0x0511('0x26')]][_0xa0466e]['talktime']=_0x446bcf[_0x0511('0x66')];if(this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]]&&this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]][_0x0511('0x67')]){this['channels'][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x68')]=this[_0x0511('0xd')][_0x446bcf[_0x0511('0x2f')]][_0x0511('0x69')];this['channels'][_0x446bcf['uniqueid']][_0xa0466e][_0x0511('0x6a')]=!![];}this['agents'][_0x446bcf[_0x0511('0x37')]]=_[_0x0511('0x6b')](this['agents'][_0x446bcf['interface']],[_0x0511('0x2f'),_0x0511('0x4c')]);logger[_0x0511('0x29')](_0x0511('0x6c'),_0x446bcf[_0x0511('0x26')],util['inspect'](this['channels'][_0x446bcf[_0x0511('0x26')]][_0xa0466e],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this['channels'][_0x446bcf[_0x0511('0x26')]][_0xa0466e]);logger[_0x0511('0x29')](_0x0511('0x6d'),_0x446bcf[_0x0511('0x26')],util[_0x0511('0x2b')]({'id':this['agents'][_0x446bcf['interface']]['id'],'destaccountcode':_0x446bcf['destaccountcode']},{'showHidden':![],'depth':null}));this[_0x0511('0x21')](util['format'](_0x0511('0x3a'),_0x446bcf['membername']),'user:agentcomplete',{'id':this[_0x0511('0xe')][_0x446bcf[_0x0511('0x37')]]['id'],'destaccountcode':_0x446bcf[_0x0511('0x6e')]});}}}}}}catch(_0x4de349){logger['error'](_0x0511('0x6f'),_0x446bcf[_0x0511('0x26')],util[_0x0511('0x2b')](_0x4de349,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x18')]=function(_0x33bdf8){try{if(this[_0x0511('0x22')](_0x33bdf8)){logger[_0x0511('0x29')](_0x0511('0x70'),_0x33bdf8[_0x0511('0x26')],util[_0x0511('0x2b')](_0x33bdf8,{'showHidden':![],'depth':null}));this[_0x0511('0x71')](_0x33bdf8['uniqueid'],_[_0x0511('0x72')](_0x33bdf8[_0x0511('0x73')])[0x0],_0x33bdf8['value']);if(this[_0x0511('0xb')][_0x33bdf8['uniqueid']]){for(var _0x431e0f in this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]][_0x0511('0x3f')](_0x431e0f)){logger['info'](_0x0511('0x74'),_0x33bdf8[_0x0511('0x26')],_0x431e0f,_[_0x0511('0x72')](_0x33bdf8[_0x0511('0x73')])[0x0],_0x33bdf8[_0x0511('0x75')]);if(_[_0x0511('0x23')](this['channels'][_0x33bdf8['uniqueid']][_0x431e0f][_0x0511('0x31')])){this['channels'][_0x33bdf8[_0x0511('0x26')]][_0x431e0f][_0x0511('0x31')]={};}this[_0x0511('0xb')][_0x33bdf8[_0x0511('0x26')]][_0x431e0f]['variables']=this[_0x0511('0x31')][_0x33bdf8['uniqueid']];}}}}}catch(_0x3f3cc8){logger['error']('[%s][voiceAgentReport][varset]',_0x33bdf8[_0x0511('0x26')],util['inspect'](_0x3f3cc8,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x71')]=function(_0x5f0926,_0xf85307,_0x28407c){var _0x24f774=[_0x0511('0x76'),_0x0511('0x77'),_0x0511('0x78'),'rtpaudioqosjitterbridged',_0x0511('0x79'),_0x0511('0x7a'),_0x0511('0x7b'),'rtpaudioqosrttbridged',_0x0511('0x7c'),_0x0511('0x7d'),_0x0511('0x7e'),_0x0511('0x7f'),_0x0511('0x80'),_0x0511('0x81'),_0x0511('0x82'),_0x0511('0x83'),_0x0511('0x27'),_0x0511('0x84'),'memberrealtime'];if(!_[_0x0511('0x85')](_0xf85307)&&!_[_0x0511('0x86')](_0x24f774,_0xf85307)){if(_[_0x0511('0x23')](this[_0x0511('0x31')][_0x5f0926])){this['variables'][_0x5f0926]={};}this[_0x0511('0x31')][_0x5f0926][_0xf85307]=_0x28407c;}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x19')]=function(_0x22fa27){try{if(this[_0x0511('0x22')](_0x22fa27)){logger[_0x0511('0x29')](_0x0511('0x87'),_0x22fa27[_0x0511('0x26')],util['inspect'](_0x22fa27,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]){for(var _0x28a540 in this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]){if(this[_0x0511('0xb')][_0x22fa27['uniqueid']]['hasOwnProperty'](_0x28a540)){if(this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]][_0x28a540][_0x0511('0x63')]==_0x0511('0x64')&&this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]][_0x28a540][_0x0511('0x51')]){logger[_0x0511('0x24')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x22fa27[_0x0511('0x26')],_0x28a540);this[_0x0511('0xb')][_0x22fa27['uniqueid']][_0x28a540]['agentcompleteAt']=moment()[_0x0511('0x42')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0511('0x29')](_0x0511('0x88'),_0x22fa27[_0x0511('0x26')],util[_0x0511('0x2b')](_[_0x0511('0x89')](this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x0511('0x8a'),_[_0x0511('0x89')](this[_0x0511('0xb')][_0x22fa27[_0x0511('0x26')]]));delete this[_0x0511('0xb')][_0x22fa27['uniqueid']];}if(this[_0x0511('0x31')][_0x22fa27[_0x0511('0x26')]]){delete this['variables'][_0x22fa27['uniqueid']];}}}catch(_0x34f044){logger[_0x0511('0x3c')]('[%s][voiceAgentReport][hangup]',_0x22fa27[_0x0511('0x26')],util['inspect'](_0x34f044,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')][_0x0511('0x1d')]=function(_0x367193){try{if(this[_0x0511('0x22')](_0x367193)){logger[_0x0511('0x29')](_0x0511('0x8b'),_0x367193[_0x0511('0x26')],util['inspect'](_0x367193,{'showHidden':![],'depth':null}));if(this['channels'][_0x367193['transfereeuniqueid']]){for(var _0x3ca3a0 in this[_0x0511('0xb')][_0x367193['transfereeuniqueid']]){if(this['channels'][_0x367193['transfereeuniqueid']][_0x0511('0x3f')](_0x3ca3a0)){if(_0x367193['origtransfereruniqueid']===_0x3ca3a0){logger['info']('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x367193[_0x0511('0x26')],this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x27')],_0x3ca3a0);var _0x357795=moment();this[_0x0511('0xb')][_0x367193['transfereeuniqueid']][_0x3ca3a0][_0x0511('0x51')]=!![];this[_0x0511('0xb')][_0x367193['transfereeuniqueid']][_0x3ca3a0]['agentcompleteAt']=moment()[_0x0511('0x42')](_0x0511('0x2c'));this['channels'][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x48')]='complete';this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x63')]='transfer';this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x66')]=_0x357795[_0x0511('0x8d')](this['channels'][_0x367193[_0x0511('0x8c')]][_0x3ca3a0][_0x0511('0x41')],_0x0511('0x8e'));}}}}if(this[_0x0511('0xb')][_0x367193[_0x0511('0x8f')]]){var _0xf411cc=this[_0x0511('0xb')][_0x367193[_0x0511('0x8f')]];this[_0x0511('0xb')][_0x367193['secondtransfereruniqueid']]=this[_0x0511('0xb')][_0x367193[_0x0511('0x8c')]];this[_0x0511('0xb')][_0x367193['transfereeuniqueid']]=_0xf411cc;}}}catch(_0x398c21){logger[_0x0511('0x3c')](_0x0511('0x90'),_0x367193[_0x0511('0x26')],util[_0x0511('0x2b')](_0x398c21,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncBlindTransfer']=function(_0x1bd992){try{if(this[_0x0511('0x22')](_0x1bd992)){logger[_0x0511('0x29')](_0x0511('0x91'),_0x1bd992[_0x0511('0x26')],util[_0x0511('0x2b')](_0x1bd992,{'showHidden':![],'depth':null}));if(this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']]){for(var _0xe7fb22 in this['channels'][_0x1bd992['transfereeuniqueid']]){if(this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0x0511('0x3f')](_0xe7fb22)){if(_0x1bd992[_0x0511('0x92')]===_0xe7fb22){logger[_0x0511('0x24')](_0x0511('0x93'),_0x1bd992[_0x0511('0x26')],this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x27')],_0xe7fb22);var _0x3f6531=moment();this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']][_0xe7fb22][_0x0511('0x51')]=!![];this['channels'][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x61')]=_0x3f6531;this[_0x0511('0xb')][_0x1bd992['transfereeuniqueid']][_0xe7fb22][_0x0511('0x48')]=_0x0511('0x62');this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x63')]='transfer';this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x66')]=_0x3f6531[_0x0511('0x8d')](this[_0x0511('0xb')][_0x1bd992[_0x0511('0x8c')]][_0xe7fb22][_0x0511('0x41')],'seconds');}}}}}}catch(_0x4b871a){logger[_0x0511('0x3c')](_0x0511('0x94'),_0x1bd992[_0x0511('0x26')],util[_0x0511('0x2b')](_0x4b871a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0511('0x95')]=function(_0x13cfca){var _0x7a34a1='';try{if(this[_0x0511('0x22')](_0x13cfca)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x13cfca[_0x0511('0x26')],util['inspect'](_0x13cfca,{'showHidden':![],'depth':null}));if(_0x13cfca[_0x0511('0x96')]){_0x7a34a1=_0x13cfca[_0x0511('0x96')][_0x0511('0x97')](0x0,_0x13cfca[_0x0511('0x96')][_0x0511('0x98')]('-'));if(this[_0x0511('0xe')][_0x7a34a1]){logger[_0x0511('0x24')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x13cfca[_0x0511('0x26')],_0x7a34a1);this['agents'][_0x7a34a1][_0x0511('0x99')]=!![];}}}}catch(_0x23133a){logger[_0x0511('0x3c')](_0x0511('0x9a'),_0x13cfca['uniqueid'],util['inspect'](_0x23133a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0511('0x20')]['syncMusicOnHoldStop']=function(_0x35a59c){var _0x5443a2='';try{if(this[_0x0511('0x22')](_0x35a59c)){logger[_0x0511('0x29')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x35a59c[_0x0511('0x26')],util[_0x0511('0x2b')](_0x35a59c,{'showHidden':![],'depth':null}));if(_0x35a59c[_0x0511('0x96')]){_0x5443a2=_0x35a59c[_0x0511('0x96')][_0x0511('0x97')](0x0,_0x35a59c['channel'][_0x0511('0x98')]('-'));if(this['agents'][_0x5443a2]){logger['info'](_0x0511('0x9b'),_0x35a59c[_0x0511('0x26')],_0x5443a2);this['agents'][_0x5443a2][_0x0511('0x99')]=![];}}}}catch(_0x51eae4){logger[_0x0511('0x3c')](_0x0511('0x9c'),_0x35a59c['uniqueid'],util[_0x0511('0x2b')](_0x51eae4,{'showHidden':![],'depth':null}));}};module[_0x0511('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index 0951874..e95c3ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5cf=['startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','lastapplication','lastdata','cdr(','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','connectedlinename','UserId','holdtime','diff','destinationchannel','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][varset]\x20event:','variable','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','user:agentcomplete','length','transferType','resolve','undefined','getSettings','then','stopRecordingOnTransfer','Action','catch','StopMixMonitor','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','transfereruniqueid','transfererchannel','BLIND','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','mohtime','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','set','queue','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','channels','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewState','varset','syncVarSet','hangup','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','pick','context','from-sip','channel','split','exten','xcally-motion-preview','connectedlinenum','format','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','blindTransfers','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','keys','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceCallReport][newchannel]','application','toLowerCase','applicationdata','appdata'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa5cf,0x6c));var _0xfa5c=function(_0x148dd5,_0x4c9ce2){_0x148dd5=_0x148dd5-0x0;var _0x22cc3c=_0xa5cf[_0x148dd5];return _0x22cc3c;};'use strict';var _=require(_0xfa5c('0x0'));var moment=require('moment');var util=require(_0xfa5c('0x1'));var path=require('path');var Redis=require(_0xfa5c('0x2'));var config=require(_0xfa5c('0x3'));var logger=require(_0xfa5c('0x4'))(_0xfa5c('0x5'));var ami=require(_0xfa5c('0x6'));var Channel=require(_0xfa5c('0x7'));var RpcSetting=require(_0xfa5c('0x8'));var applications=[_0xfa5c('0x9'),_0xfa5c('0xa'),_0xfa5c('0xb'),_0xfa5c('0xc'),_0xfa5c('0xd'),'voicemail'];var dispositions=[_0xfa5c('0xe'),_0xfa5c('0xf'),_0xfa5c('0xf'),_0xfa5c('0xe'),_0xfa5c('0xe'),_0xfa5c('0xe'),_0xfa5c('0x10'),_0xfa5c('0x11'),_0xfa5c('0xf'),'FAILED',_0xfa5c('0xf')];config[_0xfa5c('0x12')]=_[_0xfa5c('0x13')](config[_0xfa5c('0x12')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xfa5c('0x12')]));function VoiceCallReport(_0x363b9e){this[_0xfa5c('0x14')]=_0x363b9e['channels'];this[_0xfa5c('0x15')]=_0x363b9e['agents'];this['blindTransfers']={};ami['on'](_0xfa5c('0x16'),this[_0xfa5c('0x17')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x19'),this[_0xfa5c('0x17')]['bind'](this));ami['on'](_0xfa5c('0x1a'),this['syncNewChannel']['bind'](this));ami['on']('newstate',this[_0xfa5c('0x1b')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x1c'),this[_0xfa5c('0x1d')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x1e'),this['syncHangup'][_0xfa5c('0x18')](this));ami['on']('newcallerid',this[_0xfa5c('0x1f')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x20'),this[_0xfa5c('0x21')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x22'),this[_0xfa5c('0x23')][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x24'),this['syncMusicOnHoldStart'][_0xfa5c('0x18')](this));ami['on'](_0xfa5c('0x25'),this[_0xfa5c('0x26')][_0xfa5c('0x18')](this));try{logger[_0xfa5c('0x27')](_0xfa5c('0x28'));ami[_0xfa5c('0x29')]();}catch(_0x276029){logger[_0xfa5c('0x2a')](_0xfa5c('0x2b'),util[_0xfa5c('0x2c')](_0x276029,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x2e')]=function(_0x36c8e9){return _0x36c8e9!==null&&!_[_0xfa5c('0x2f')](_0x36c8e9);};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x30')]=function(_0x56fe93,_0x11edff,_0x38995f){io['to'](_0x56fe93)[_0xfa5c('0x30')](_0x11edff,_0x38995f);};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x1f')]=function(_0x5189d6){try{if(this['isNotNull'](_0x5189d6)){logger['info']('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x5189d6[_0xfa5c('0x31')],_0x5189d6[_0xfa5c('0x32')],_0x5189d6[_0xfa5c('0x33')]);logger['debug'](_0xfa5c('0x34'),_0x5189d6[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x5189d6,{'showHidden':![],'depth':null}));if(_0x5189d6['uniqueid']===_0x5189d6['linkedid']){if(!_[_0xfa5c('0x2f')](this[_0xfa5c('0x14')][_0x5189d6[_0xfa5c('0x31')]])){_['merge'](this[_0xfa5c('0x14')][_0x5189d6['uniqueid']],_[_0xfa5c('0x35')](_0x5189d6,_['keys'](this['channels'][_0x5189d6[_0xfa5c('0x31')]])));}}if(_0x5189d6[_0xfa5c('0x36')]===_0xfa5c('0x37')){if(this[_0xfa5c('0x15')][_0x5189d6[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]){if(_0x5189d6[_0xfa5c('0x3a')]==_0xfa5c('0x3b')){this[_0xfa5c('0x15')][_0x5189d6[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]['destconnectedlinenum']=_0x5189d6[_0xfa5c('0x3c')];this[_0xfa5c('0x30')](util[_0xfa5c('0x3d')]('user:%s',this['agents'][_0x5189d6[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x3e')]),_0xfa5c('0x3f'),{'destaccountcode':this['agents'][_0x5189d6[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')],'destconnectedlinenum':_0x5189d6[_0xfa5c('0x3c')]});}}}}}catch(_0x54319c){logger[_0xfa5c('0x2a')](_0xfa5c('0x41'),_0x5189d6['uniqueid'],util[_0xfa5c('0x2c')](_0x54319c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x42')]=function(_0x911127){try{if(this[_0xfa5c('0x2e')](_0x911127)){logger[_0xfa5c('0x43')](_0xfa5c('0x44'),_0x911127['uniqueid'],util[_0xfa5c('0x2c')](_0x911127,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x14')][_0x911127['uniqueid']])return;if(_0x911127[_0xfa5c('0x38')]===_0xfa5c('0x45'))return;if(_0x911127[_0xfa5c('0x31')]!==_0x911127[_0xfa5c('0x46')]&&!this[_0xfa5c('0x47')][_0x911127[_0xfa5c('0x46')]])return;logger[_0xfa5c('0x27')](_0xfa5c('0x48'),_0x911127[_0xfa5c('0x31')],_0x911127[_0xfa5c('0x36')],_0x911127[_0xfa5c('0x3a')]);this[_0xfa5c('0x14')][_0x911127[_0xfa5c('0x31')]]=new Channel();this[_0xfa5c('0x14')][_0x911127[_0xfa5c('0x31')]][_0xfa5c('0x49')]=moment()[_0xfa5c('0x3d')](_0xfa5c('0x4a'));this[_0xfa5c('0x14')][_0x911127['uniqueid']][_0xfa5c('0x4b')]=dispositions[_[_0xfa5c('0x4c')](_0x911127[_0xfa5c('0x4d')])];_[_0xfa5c('0x4e')](this[_0xfa5c('0x14')][_0x911127[_0xfa5c('0x31')]],_[_0xfa5c('0x35')](_0x911127,_[_0xfa5c('0x4f')](this['channels'][_0x911127[_0xfa5c('0x31')]])));if(_0x911127['context']==='from-sip'){if(this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')]['split']('-')[0x0]]){if(_['isUndefined'](this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')]['split']('-')[0x0]]['destconnectedlinenum'])){this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')]['split']('-')[0x0]][_0xfa5c('0x50')]=_0x911127[_0xfa5c('0x3a')];logger[_0xfa5c('0x43')](_0xfa5c('0x51'),_0x911127['uniqueid'],util[_0xfa5c('0x2c')]({'id':this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x911127[_0xfa5c('0x3a')]},{'showHidden':![],'depth':null}));this[_0xfa5c('0x30')](util['format'](_0xfa5c('0x52'),this['agents'][_0x911127[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]['name']),_0xfa5c('0x3f'),{'id':this[_0xfa5c('0x15')][_0x911127['channel'][_0xfa5c('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xfa5c('0x15')][_0x911127[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')],'destconnectedlinenum':_0x911127[_0xfa5c('0x3a')]});}}}}}catch(_0x2c6db3){logger[_0xfa5c('0x2a')](_0xfa5c('0x53'),_0x911127[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x2c6db3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')]['syncNewExten']=function(_0x1a5ee4){try{if(this[_0xfa5c('0x2e')](_0x1a5ee4)){logger[_0xfa5c('0x43')]('[%s][voiceCallReport][newexten]\x20event:',_0x1a5ee4['uniqueid'],util['inspect'](_0x1a5ee4,{'showHidden':![],'depth':null}));if(_0x1a5ee4['channel']===_0xfa5c('0x45')||_0x1a5ee4[_0xfa5c('0x3a')]==='h')return;if(_0x1a5ee4['uniqueid']===_0x1a5ee4[_0xfa5c('0x46')]||this[_0xfa5c('0x47')][_0x1a5ee4[_0xfa5c('0x46')]]){_0x1a5ee4[_0xfa5c('0x54')]=_0x1a5ee4['application'][_0xfa5c('0x55')]();_0x1a5ee4[_0xfa5c('0x56')]=_0x1a5ee4[_0xfa5c('0x57')]||_0x1a5ee4[_0xfa5c('0x56')];if(_0x1a5ee4[_0xfa5c('0x57')]&&!_0x1a5ee4['appdata'][_0xfa5c('0x58')](_0xfa5c('0x59'))&&_0x1a5ee4[_0xfa5c('0x54')]!==_0xfa5c('0xa')){_0x1a5ee4[_0xfa5c('0x56')]=_0x1a5ee4[_0xfa5c('0x56')]['toLowerCase']();}logger[_0xfa5c('0x27')](_0xfa5c('0x5a'),_0x1a5ee4[_0xfa5c('0x31')],_0x1a5ee4[_0xfa5c('0x54')],_0x1a5ee4[_0xfa5c('0x56')]);if(_[_0xfa5c('0x2f')](this['channels'][_0x1a5ee4[_0xfa5c('0x31')]])){this[_0xfa5c('0x14')][_0x1a5ee4[_0xfa5c('0x31')]]=new Channel();this['channels'][_0x1a5ee4[_0xfa5c('0x31')]]['starttime']=_0x1a5ee4[_0xfa5c('0x5b')]?moment()[_0xfa5c('0x5c')](moment[_0xfa5c('0x5b')](_0x1a5ee4[_0xfa5c('0x5b')])[_0xfa5c('0x5d')](),'seconds')['format']('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xfa5c('0x3d')](_0xfa5c('0x4a'));this[_0xfa5c('0x14')][_0x1a5ee4[_0xfa5c('0x31')]]['disposition']=_0xfa5c('0xe');}_[_0xfa5c('0x4e')](this[_0xfa5c('0x14')][_0x1a5ee4['uniqueid']],_[_0xfa5c('0x35')](_0x1a5ee4,_[_0xfa5c('0x4f')](this[_0xfa5c('0x14')][_0x1a5ee4[_0xfa5c('0x31')]])));if(_['includes'](applications,_0x1a5ee4['application'])){this['channels'][_0x1a5ee4[_0xfa5c('0x31')]][_0xfa5c('0x5e')]=_0x1a5ee4[_0xfa5c('0x54')];this[_0xfa5c('0x14')][_0x1a5ee4[_0xfa5c('0x31')]][_0xfa5c('0x5f')]=_0x1a5ee4[_0xfa5c('0x56')];if(_0x1a5ee4[_0xfa5c('0x54')]===_0xfa5c('0x9')&&_[_0xfa5c('0x58')](_0x1a5ee4[_0xfa5c('0x56')][_0xfa5c('0x55')](),_0xfa5c('0x60'))){var _0x14aaaa=_0x1a5ee4[_0xfa5c('0x56')][_0xfa5c('0x39')]('=');var _0xbc94ba=_0x14aaaa[0x0]['toLowerCase']()[_0xfa5c('0x61')](/cdr\((.*)\)/);if(_0xbc94ba){if(_0xbc94ba[0x1]===_0xfa5c('0x62')&&!_['isNil'](this[_0xfa5c('0x14')][_0x1a5ee4[_0xfa5c('0x31')]][_0xbc94ba[0x1]]))return;this[_0xfa5c('0x14')][_0x1a5ee4['uniqueid']][_0xbc94ba[0x1]]=_0x14aaaa[0x1];}}else if(_0x1a5ee4[_0xfa5c('0x54')]===_0xfa5c('0xa')){this['channels'][_0x1a5ee4[_0xfa5c('0x31')]]['queue']=_0x1a5ee4['applicationdata'][_0xfa5c('0x39')](',')[0x0];}}}}}catch(_0x3fdc03){logger[_0xfa5c('0x2a')](_0xfa5c('0x63'),_0x1a5ee4['uniqueid'],util[_0xfa5c('0x2c')](_0x3fdc03,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x1b')]=function(_0x2b5db7){try{if(this[_0xfa5c('0x2e')](_0x2b5db7)){logger[_0xfa5c('0x27')](_0xfa5c('0x64'),_0x2b5db7[_0xfa5c('0x31')],_0x2b5db7[_0xfa5c('0x46')],_0x2b5db7['calleridname'],_0x2b5db7[_0xfa5c('0x33')]);logger[_0xfa5c('0x43')](_0xfa5c('0x65'),_0x2b5db7['uniqueid'],util[_0xfa5c('0x2c')](_0x2b5db7,{'showHidden':![],'depth':null}));if(_0x2b5db7['channelstate']!=='6')return;if(_0x2b5db7['uniqueid']!==_0x2b5db7['linkedid']){var _0x3fde60=moment();if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]]){if(!this[_0xfa5c('0x14')][_0x2b5db7['linkedid']][_0xfa5c('0x66')]){this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0x66')]=!![];this['channels'][_0x2b5db7['linkedid']][_0xfa5c('0x67')]=_0x3fde60['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0x49')]){this[_0xfa5c('0x14')][_0x2b5db7['linkedid']]['holdtime']=_0x3fde60['diff'](this['channels'][_0x2b5db7['linkedid']]['starttime'],_0xfa5c('0x5d'));}}this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]]['linkedid']=_0x2b5db7[_0xfa5c('0x31')];if(_0x2b5db7['calleridnum']!=='xcally-motion-preview'){this[_0xfa5c('0x14')][_0x2b5db7['linkedid']][_0xfa5c('0x3c')]=_0x2b5db7[_0xfa5c('0x33')];}this['channels'][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0x68')]=_0x2b5db7[_0xfa5c('0x32')];this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]]['destinationchannel']=_0x2b5db7[_0xfa5c('0x38')];this[_0xfa5c('0x14')][_0x2b5db7['linkedid']][_0xfa5c('0x4b')]=dispositions[_[_0xfa5c('0x4c')](_0x2b5db7['channelstate'])];if(this[_0xfa5c('0x15')][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]){this['channels'][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0x69')]=this[_0xfa5c('0x15')][_0x2b5db7[_0xfa5c('0x38')]['split']('-')[0x0]]['id'];this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]]['membername']=this[_0xfa5c('0x15')][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x3e')];}}if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]]){if(!this['channels'][_0x2b5db7['uniqueid']]['answered']){this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x66')]=!![];this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x67')]=_0x3fde60[_0xfa5c('0x3d')](_0xfa5c('0x4a'));if(this['channels'][_0x2b5db7[_0xfa5c('0x31')]]['starttime']){this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x6a')]=_0x3fde60[_0xfa5c('0x6b')](this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x49')],_0xfa5c('0x5d'));}}if(_0x2b5db7[_0xfa5c('0x33')]!=='xcally-motion-preview'){this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]]['connectedlinenum']=_0x2b5db7[_0xfa5c('0x33')];}this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x68')]=_0x2b5db7['calleridname'];this['channels'][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x6c')]=_0x2b5db7['channel'];this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x4b')]=dispositions[_[_0xfa5c('0x4c')](_0x2b5db7['channelstate'])];}}else{if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]]){if(this['agents'][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]){this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x69')]=this[_0xfa5c('0x15')][_0x2b5db7['channel']['split']('-')[0x0]]['id'];this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x6d')]=this['agents'][_0x2b5db7[_0xfa5c('0x38')]['split']('-')[0x0]][_0xfa5c('0x3e')];}}}if(_0x2b5db7['context']===_0xfa5c('0x37')){if(this['agents'][_0x2b5db7[_0xfa5c('0x38')]['split']('-')[0x0]]){this['agents'][_0x2b5db7['channel'][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x50')]=_0x2b5db7[_0xfa5c('0x3a')];var _0x2cd66f,_0x4f33f1;if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]]){_0x2cd66f=this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]][_0xfa5c('0x6e')];_0x4f33f1=this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x31')]]['queue'];}else if(this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]]){_0x2cd66f=this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0x6e')];_0x4f33f1=this[_0xfa5c('0x14')][_0x2b5db7[_0xfa5c('0x46')]][_0xfa5c('0xa')];}this['agents'][_0x2b5db7[_0xfa5c('0x38')]['split']('-')[0x0]][_0xfa5c('0xa')]=_0x4f33f1;this['agents'][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x6e')]=_0x2cd66f;logger[_0xfa5c('0x43')](_0xfa5c('0x6f'),_0x2b5db7['uniqueid'],util[_0xfa5c('0x2c')]({'id':this[_0xfa5c('0x15')][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')],'destconnectedlinenum':_0x2b5db7['exten'],'routealias':_0x2cd66f,'queue':_0x4f33f1||undefined},{'showHidden':![],'depth':null}));this[_0xfa5c('0x30')](util[_0xfa5c('0x3d')]('user:%s',this[_0xfa5c('0x15')][_0x2b5db7['channel'][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x3e')]),_0xfa5c('0x3f'),{'id':this[_0xfa5c('0x15')][_0x2b5db7['channel'][_0xfa5c('0x39')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xfa5c('0x15')][_0x2b5db7[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')],'destconnectedlinenum':_0x2b5db7[_0xfa5c('0x3a')],'routealias':_0x2cd66f,'queue':_0x4f33f1||undefined});}}}}catch(_0x3a167b){logger['error']('[%s][voiceCallReport][newstate]',_0x2b5db7[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x3a167b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x70')]=function(_0x1e38ec,_0x23aa42){try{if(this['channels'][_0x1e38ec]){logger[_0xfa5c('0x27')](_0xfa5c('0x71'),_0x1e38ec,_0x23aa42);this[_0xfa5c('0x14')][_0x1e38ec][_0xfa5c('0x72')]=!![];if(_[_0xfa5c('0x73')](_0x23aa42,_0xfa5c('0x74'))){_0x23aa42=_0x23aa42[_0xfa5c('0x75')](_0xfa5c('0x74'),'.WAV');}this['channels'][_0x1e38ec][_0xfa5c('0x76')]=_0x23aa42;var _0xa1d5a=_[_0xfa5c('0x77')](this[_0xfa5c('0x14')][_0x1e38ec][_0xfa5c('0x78')],{'filename':_0x23aa42});if(_[_0xfa5c('0x79')](_0xa1d5a)){this[_0xfa5c('0x14')][_0x1e38ec][_0xfa5c('0x78')][_0xfa5c('0x7a')]({'filename':_0x23aa42,'createdAt':moment()[_0xfa5c('0x3d')](_0xfa5c('0x4a')),'mixmonitorid':'','status':_0xfa5c('0x7b')});}}}catch(_0x50c95e){logger[_0xfa5c('0x2a')]('[%s][voiceCallReport][mixMonitorFilename]',_0x1e38ec,util[_0xfa5c('0x2c')](_0x50c95e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x1d')]=function(_0x416d11){try{if(this[_0xfa5c('0x2e')](_0x416d11)){logger[_0xfa5c('0x43')](_0xfa5c('0x7c'),_0x416d11[_0xfa5c('0x31')],util['inspect'](_0x416d11,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]]&&_0x416d11[_0xfa5c('0x38')]!=_0xfa5c('0x45')){if(this[_0xfa5c('0x2e')](_0x416d11[_0xfa5c('0x7d')])){if(this['isNotNull'](_0x416d11['variable']['mixmonitor_filename'])){logger[_0xfa5c('0x27')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x416d11[_0xfa5c('0x31')],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x70')](_0x416d11[_0xfa5c('0x31')],_0x416d11['value']);}else if(this[_0xfa5c('0x2e')](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x7f')])){logger['info'](_0xfa5c('0x80'),_0x416d11[_0xfa5c('0x31')],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0x33')]=_0x416d11[_0xfa5c('0x7e')];}else if(this['isNotNull'](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x81')])){logger[_0xfa5c('0x27')](_0xfa5c('0x82'),_0x416d11[_0xfa5c('0x31')],_0x416d11['value']);this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]]['callerid']=_0x416d11[_0xfa5c('0x7e')];}else if(this['isNotNull'](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x83')])){logger[_0xfa5c('0x27')](_0xfa5c('0x84'),_0x416d11[_0xfa5c('0x31')],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0x62')]=_0x416d11[_0xfa5c('0x7e')];}else if(this[_0xfa5c('0x2e')](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x85')])){logger[_0xfa5c('0x27')](_0xfa5c('0x86'),_0x416d11['uniqueid'],_0x416d11[_0xfa5c('0x7e')][_0xfa5c('0x39')](',')[0x0]);this['channels'][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0xa')]=_0x416d11[_0xfa5c('0x7e')]['split'](',')[0x0];}else if(this['isNotNull'](_0x416d11['variable']['xmd-originatecalleridnum'])){logger['info'](_0xfa5c('0x87'),_0x416d11['uniqueid'],_0x416d11[_0xfa5c('0x7e')]);this['channels'][_0x416d11[_0xfa5c('0x31')]]['originatecalleridnum']=_0x416d11[_0xfa5c('0x7e')];}else if(this['isNotNull'](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x88')])){logger['info'](_0xfa5c('0x89'),_0x416d11['uniqueid'],_0x416d11[_0xfa5c('0x7e')]);this['channels'][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0x8a')]=_0x416d11[_0xfa5c('0x7e')];}else if(this[_0xfa5c('0x2e')](_0x416d11['variable']['xmd-callerid-preview'])){logger['info'](_0xfa5c('0x8b'),_0x416d11[_0xfa5c('0x31')],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0x8c')]=_0x416d11[_0xfa5c('0x7e')];}else if(this[_0xfa5c('0x2e')](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x8d')])){logger['info'](_0xfa5c('0x8e'),_0x416d11[_0xfa5c('0x31')],_0x416d11['value']);this[_0xfa5c('0x14')][_0x416d11['uniqueid']][_0xfa5c('0xa')]=_0x416d11[_0xfa5c('0x7e')];}else if(this['isNotNull'](_0x416d11[_0xfa5c('0x7d')][_0xfa5c('0x8f')])){logger[_0xfa5c('0x27')](_0xfa5c('0x90'),_0x416d11['uniqueid'],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x14')][_0x416d11[_0xfa5c('0x31')]][_0xfa5c('0x91')]=_0x416d11[_0xfa5c('0x7e')];}}}else if(this[_0xfa5c('0x2e')](_0x416d11['variable'][_0xfa5c('0x92')])){if(_0x416d11[_0xfa5c('0x7e')]){var _0x37e773=path[_0xfa5c('0x93')](_0x416d11[_0xfa5c('0x7e')])[_0xfa5c('0x3e')];logger[_0xfa5c('0x27')](_0xfa5c('0x94'),_0x37e773,_0x416d11[_0xfa5c('0x7e')]);this['syncMixMonitorFilename'](_0x37e773,_0x416d11[_0xfa5c('0x7e')]);}}else if(this['channels'][_0x416d11[_0xfa5c('0x46')]]){if(this['isNotNull'](_0x416d11['variable'])){if(this[_0xfa5c('0x2e')](_0x416d11[_0xfa5c('0x7d')]['sipcallid'])){logger[_0xfa5c('0x27')](_0xfa5c('0x90'),_0x416d11['linkedid'],_0x416d11[_0xfa5c('0x7e')]);this[_0xfa5c('0x14')][_0x416d11['linkedid']][_0xfa5c('0x95')]=_0x416d11[_0xfa5c('0x7e')];}}}}}catch(_0x5dc80d){logger['error']('[%s][voiceCallReport][varset]',_0x416d11[_0xfa5c('0x31')],util['inspect'](_0x5dc80d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x96')]=function(_0x4b7a72){try{if(this[_0xfa5c('0x2e')](_0x4b7a72)){logger[_0xfa5c('0x43')](_0xfa5c('0x97'),_0x4b7a72['uniqueid'],util[_0xfa5c('0x2c')](_0x4b7a72,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]]){if(this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]]){this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]][_0xfa5c('0x31')]=_0x4b7a72['uniqueid'];this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]]['linkedid']][_0xfa5c('0x66')]=this[_0xfa5c('0x14')][_0x4b7a72['uniqueid']][_0xfa5c('0x66')];this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]][_0xfa5c('0x67')]=this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x67')];this['channels'][this['blindTransfers'][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]][_0xfa5c('0x6c')]=this['channels'][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]][_0xfa5c('0x38')];this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]]['linkedid']][_0xfa5c('0x4b')]=this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]]['disposition'];this['channels'][_0x4b7a72[_0xfa5c('0x31')]]=this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]];delete this['channels'][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x46')]];}else if(this['channels'][this['blindTransfers'][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x31')]]){this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72['linkedid']][_0xfa5c('0x31')]][_0xfa5c('0x31')]=[this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]]['uniqueid']][_0xfa5c('0x46')],this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x31')]][_0xfa5c('0x46')]=this[_0xfa5c('0x14')][this['blindTransfers'][_0x4b7a72[_0xfa5c('0x46')]]['uniqueid']][_0xfa5c('0x31')]][0x0];this['channels'][this[_0xfa5c('0x47')][_0x4b7a72['linkedid']]['uniqueid']]['answered']=this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x66')];this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72['linkedid']][_0xfa5c('0x31')]][_0xfa5c('0x67')]=this['channels'][_0x4b7a72[_0xfa5c('0x31')]]['answertime'];this['channels'][this['blindTransfers'][_0x4b7a72['linkedid']]['uniqueid']][_0xfa5c('0x6c')]=this['channels'][this[_0xfa5c('0x47')][_0x4b7a72['linkedid']][_0xfa5c('0x31')]][_0xfa5c('0x38')];this['channels'][this['blindTransfers'][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x31')]]['disposition']=this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x4b')];this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]]=this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x46')]][_0xfa5c('0x31')]];delete this[_0xfa5c('0x14')][this[_0xfa5c('0x47')][_0x4b7a72['linkedid']][_0xfa5c('0x31')]];}}if(this['channels'][_0x4b7a72[_0xfa5c('0x31')]]){logger[_0xfa5c('0x27')](_0xfa5c('0x98'),_0x4b7a72[_0xfa5c('0x31')],_0x4b7a72[_0xfa5c('0x99')]);var _0x5369a8=moment();this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]]['endtime']=_0x5369a8[_0xfa5c('0x3d')](_0xfa5c('0x4a'));this['channels'][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x5b')]=_0x5369a8[_0xfa5c('0x6b')](this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x49')],_0xfa5c('0x5d'));if(this[_0xfa5c('0x14')][_0x4b7a72['uniqueid']]['answered']){this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]]['billableseconds']=_0x5369a8[_0xfa5c('0x6b')](this[_0xfa5c('0x14')][_0x4b7a72['uniqueid']][_0xfa5c('0x67')],_0xfa5c('0x5d'));this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x6a')]=this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]]['duration']-this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x9a')];}if(_0x4b7a72[_0xfa5c('0x36')]===_0xfa5c('0x37')){if(this[_0xfa5c('0x15')][_0x4b7a72['channel'][_0xfa5c('0x39')]('-')[0x0]]){this['agents'][_0x4b7a72[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]]=_[_0xfa5c('0x9b')](this['agents'][_0x4b7a72[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]],[_0xfa5c('0x50')]);logger[_0xfa5c('0x43')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x4b7a72[_0xfa5c('0x31')],util[_0xfa5c('0x2c')]({'id':this[_0xfa5c('0x15')][_0x4b7a72['channel'][_0xfa5c('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xfa5c('0x15')][_0x4b7a72[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')]},{'showHidden':![],'depth':null}));this[_0xfa5c('0x30')](util[_0xfa5c('0x3d')](_0xfa5c('0x52'),this[_0xfa5c('0x15')][_0x4b7a72['channel'][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x3e')]),_0xfa5c('0x9c'),{'id':this[_0xfa5c('0x15')][_0x4b7a72[_0xfa5c('0x38')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xfa5c('0x15')][_0x4b7a72[_0xfa5c('0x38')][_0xfa5c('0x39')]('-')[0x0]][_0xfa5c('0x40')]});for(var _0x2e16e0=0x0;_0x2e16e0<Object[_0xfa5c('0x4f')](this[_0xfa5c('0x15')])[_0xfa5c('0x9d')];_0x2e16e0++){var _0x445f98=Object['keys'](this[_0xfa5c('0x15')])[_0x2e16e0];var _0x45bc0a=this['agents'][_0x445f98];if(_0x45bc0a[_0xfa5c('0x40')]===Number(_0x4b7a72['connectedlinenum'])){this[_0xfa5c('0x30')](util['format']('user:%s',_0x45bc0a['name']),_0xfa5c('0x9c'),{'id':_0x45bc0a['id'],'destaccountcode':_0x45bc0a[_0xfa5c('0x40')],'transfer':this[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x9e')]});break;}}}}var _0x12daf2=this;Promise[_0xfa5c('0x9f')]()['then'](function(){var _0x449bcb=_0x12daf2[_0xfa5c('0x14')][_0x4b7a72['uniqueid']];if(typeof _0x449bcb[_0xfa5c('0x9e')]===_0xfa5c('0xa0'))return;if(_['isEmpty'](_0x449bcb['monitors']))return;return RpcSetting[_0xfa5c('0xa1')]()[_0xfa5c('0xa2')](function(_0x546640){if(!_0x546640[_0xfa5c('0xa3')])return;return Promise[_0xfa5c('0x9f')]()[_0xfa5c('0xa2')](function(){return ami[_0xfa5c('0xa4')]({'action':'StopMixMonitor','channel':_0x449bcb[_0xfa5c('0x38')]})[_0xfa5c('0xa5')](function(){});})[_0xfa5c('0xa2')](function(){return ami[_0xfa5c('0xa4')]({'action':_0xfa5c('0xa6'),'channel':_0x449bcb[_0xfa5c('0x6c')]})['catch'](function(){})['finally'](function(){var _0x2ce4b4=_0x12daf2['agents'][_0x449bcb[_0xfa5c('0x6c')]['split']('-')[0x0]];if(!_0x2ce4b4)return;io[_0xfa5c('0x30')](_0xfa5c('0xa7'),{'agentId':_0x2ce4b4['id'],'uniqueid':_0x449bcb[_0xfa5c('0x31')]});});});});})['then'](function(){if(_0x4b7a72[_0xfa5c('0xa8')]===_0xfa5c('0xa9')){_0x12daf2[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x31')]]=_0x4b7a72;}else{if(_0x12daf2[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x62')]===_0xfa5c('0xaa')&&_0x12daf2['blindTransfers'][_0x4b7a72[_0xfa5c('0x31')]]){_0x12daf2[_0xfa5c('0x14')][_0x4b7a72['uniqueid']][_0xfa5c('0x31')]=[_0x12daf2['channels'][_0x4b7a72[_0xfa5c('0x31')]]['linkedid'],_0x12daf2[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]][_0xfa5c('0x46')]=_0x12daf2[_0xfa5c('0x14')][_0x4b7a72['uniqueid']][_0xfa5c('0x31')]][0x0];delete _0x12daf2[_0xfa5c('0x47')][_0x4b7a72[_0xfa5c('0x31')]];}}logger['debug'](_0xfa5c('0xab'),_0x4b7a72[_0xfa5c('0x31')],util['inspect'](_0x12daf2[_0xfa5c('0x14')][_0x4b7a72[_0xfa5c('0x31')]],{'showHidden':![],'depth':null}));ami[_0xfa5c('0x30')]('custom:voiceCallReport',_0x12daf2['channels'][_0x4b7a72[_0xfa5c('0x31')]]);delete _0x12daf2[_0xfa5c('0x14')][_0x4b7a72['uniqueid']];});}}}catch(_0x300224){logger[_0xfa5c('0x2a')](_0xfa5c('0xac'),_0x4b7a72[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x300224,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xfa5c('0x21')]=function(_0x37cdbb){try{if(this[_0xfa5c('0x2e')](_0x37cdbb)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x37cdbb['uniqueid'],_0x37cdbb[_0xfa5c('0xad')],_0x37cdbb[_0xfa5c('0xae')]);logger[_0xfa5c('0x43')](_0xfa5c('0xaf'),_0x37cdbb[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x37cdbb,{'showHidden':![],'depth':null}));var _0x4c18a2;if(this[_0xfa5c('0x14')][_0x37cdbb['transfereeuniqueid']]){this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb0')]][_0xfa5c('0xb1')]=_0x37cdbb[_0xfa5c('0xad')];this['channels'][_0x37cdbb[_0xfa5c('0xb0')]][_0xfa5c('0xb2')]=_0x37cdbb['transfertargetcalleridnum'];if(this[_0xfa5c('0x14')][_0x37cdbb['secondtransfereruniqueid']]){_0x4c18a2=this['channels'][_0x37cdbb[_0xfa5c('0xb3')]];this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb3')]]=this['channels'][_0x37cdbb[_0xfa5c('0xb0')]];this[_0xfa5c('0x14')][_0x37cdbb['transfereeuniqueid']]=_0x4c18a2;}this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb3')]][_0xfa5c('0x9e')]=_0xfa5c('0xb4');}else if(this[_0xfa5c('0x14')][_0x37cdbb['transfertargetuniqueid']]){this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb5')]][_0xfa5c('0xb1')]=_0x37cdbb[_0xfa5c('0xad')];this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb5')]][_0xfa5c('0xb2')]=_0x37cdbb[_0xfa5c('0xae')];if(this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb6')]]){_0x4c18a2=this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb6')]];this[_0xfa5c('0x14')][_0x37cdbb['origtransfereruniqueid']]=this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb5')]];this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb5')]]=_0x4c18a2;}this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb5')]][_0xfa5c('0x9e')]='ATTENDED';}if((this[_0xfa5c('0x14')][_0x37cdbb['origtransfereruniqueid']]||this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb7')]])&&this['channels'][_0x37cdbb[_0xfa5c('0xb3')]]){var _0x3da7e9=_['some']([this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb6')]],this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb7')]],this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb3')]]],function(_0xf1b164){return _0xf1b164&&_0xf1b164[_0xfa5c('0x62')]===_0xfa5c('0xaa')&&_0xf1b164[_0xfa5c('0xb8')];});if(_0x3da7e9){if(this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb6')]])this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb6')]]['transferType']=_0xfa5c('0xb4');if(this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb7')]])this[_0xfa5c('0x14')][_0x37cdbb[_0xfa5c('0xb7')]][_0xfa5c('0x9e')]='ATTENDED';this['channels'][_0x37cdbb[_0xfa5c('0xb3')]]['transferType']=_0xfa5c('0xb4');}}}}catch(_0x5a3bb0){logger[_0xfa5c('0x2a')]('[%s][voiceCallReport][attendedtransfer]',_0x37cdbb['uniqueid'],util[_0xfa5c('0x2c')](_0x5a3bb0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x23')]=function(_0x4c678c){try{if(this[_0xfa5c('0x2e')](_0x4c678c)){logger[_0xfa5c('0x27')](_0xfa5c('0xb9'),_0x4c678c['uniqueid'],_0x4c678c[_0xfa5c('0xba')],_0x4c678c[_0xfa5c('0xbb')]);logger[_0xfa5c('0x43')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x4c678c[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x4c678c,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x14')][_0x4c678c['transfereeuniqueid']]){this[_0xfa5c('0x14')][_0x4c678c[_0xfa5c('0xb0')]][_0xfa5c('0xb1')]=_0x4c678c[_0xfa5c('0xba')];this[_0xfa5c('0x14')][_0x4c678c[_0xfa5c('0xb0')]][_0xfa5c('0xb2')]=_0x4c678c['extension'];this['channels'][_0x4c678c[_0xfa5c('0xb0')]]['transferType']='BLIND';this[_0xfa5c('0x96')]({'event':_0xfa5c('0xa9'),'uniqueid':_0x4c678c['transfereeuniqueid'],'linkedid':_0x4c678c[_0xfa5c('0xbc')],'context':_0x4c678c[_0xfa5c('0x36')],'channel':_0x4c678c[_0xfa5c('0xbd')]});}else{this['channels'][_0x4c678c[_0xfa5c('0xbc')]]['transferType']=_0xfa5c('0xbe');this[_0xfa5c('0x96')]({'event':_0xfa5c('0xa9'),'uniqueid':_0x4c678c['transfereruniqueid'],'linkedid':_0x4c678c['transfereeuniqueid'],'context':_0x4c678c[_0xfa5c('0x36')],'channel':_0x4c678c[_0xfa5c('0xbd')]});}}}catch(_0x2427c6){logger[_0xfa5c('0x2a')]('[%s][voiceCallReport][blindtransfer]',_0x4c678c[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x2427c6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0xbf')]=function(_0x2c4680){try{if(this[_0xfa5c('0x2e')](_0x2c4680)){logger[_0xfa5c('0x43')](_0xfa5c('0xc0'),_0x2c4680[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x2c4680,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x14')][_0x2c4680[_0xfa5c('0x31')]]){if(!_['isNil'](this[_0xfa5c('0x14')][_0x2c4680['uniqueid']][_0xfa5c('0x67')])){this['channels'][_0x2c4680[_0xfa5c('0x31')]][_0xfa5c('0xc1')]=moment()[_0xfa5c('0x3d')](_0xfa5c('0x4a'));logger[_0xfa5c('0x27')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x2c4680[_0xfa5c('0x31')],this[_0xfa5c('0x14')][_0x2c4680['uniqueid']][_0xfa5c('0xc1')]);}}}}catch(_0x2bf19e){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x2c4680[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x2bf19e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfa5c('0x2d')][_0xfa5c('0x26')]=function(_0x5f1782){try{if(this[_0xfa5c('0x2e')](_0x5f1782)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x5f1782[_0xfa5c('0x31')],util[_0xfa5c('0x2c')](_0x5f1782,{'showHidden':![],'depth':null}));if(this[_0xfa5c('0x14')][_0x5f1782[_0xfa5c('0x31')]]){if(!_[_0xfa5c('0x79')](this[_0xfa5c('0x14')][_0x5f1782[_0xfa5c('0x31')]][_0xfa5c('0xc1')])){this[_0xfa5c('0x14')][_0x5f1782['uniqueid']][_0xfa5c('0xc2')]+=moment()['milliseconds'](0x0)[_0xfa5c('0x6b')](this['channels'][_0x5f1782[_0xfa5c('0x31')]][_0xfa5c('0xc1')],'seconds');logger[_0xfa5c('0x27')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x5f1782[_0xfa5c('0x31')],this[_0xfa5c('0x14')][_0x5f1782[_0xfa5c('0x31')]]['mohtime']);delete this[_0xfa5c('0x14')][_0x5f1782['uniqueid']][_0xfa5c('0xc1')];}}}}catch(_0x438b71){logger[_0xfa5c('0x2a')]('[%s][voiceCallReport][musiconholdstop]',_0x5f1782[_0xfa5c('0x31')],util['inspect'](_0x438b71,{'showHidden':![],'depth':null}));}};module[_0xfa5c('0xc3')]=VoiceCallReport;
\ No newline at end of file
+var _0x6044=['blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','inspect','prototype','emit','isNotNull','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','isUndefined','merge','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','user:%s','user:agentconnect','accountcode','connectedlinenum','error','[%s][voiceCallReport][newchannel]\x20event:','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','context','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','format','startsWith','cdr(','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','destinationchannel','UserId','holdtime','diff','connectedlinename','membername','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.WAV','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','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','mixmonitor_filename','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','undefined','isEmpty','getSettings','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transferType','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','some','routeid','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','path','ami','../ami','../rpc/setting','set','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','syncNewChannel','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer'];(function(_0x3b0b4a,_0x333e63){var _0x134109=function(_0x3efaf7){while(--_0x3efaf7){_0x3b0b4a['push'](_0x3b0b4a['shift']());}};_0x134109(++_0x333e63);}(_0x6044,0x162));var _0x4604=function(_0x43c629,_0x5a7499){_0x43c629=_0x43c629-0x0;var _0x211a65=_0x6044[_0x43c629];return _0x211a65;};'use strict';var _=require(_0x4604('0x0'));var moment=require(_0x4604('0x1'));var util=require('util');var path=require(_0x4604('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x4604('0x3'));var ami=require(_0x4604('0x4'));var Channel=require('../model/channel');var RpcSetting=require(_0x4604('0x5'));var applications=[_0x4604('0x6'),_0x4604('0x7'),_0x4604('0x8'),_0x4604('0x9'),'playback',_0x4604('0xa')];var dispositions=[_0x4604('0xb'),_0x4604('0xc'),_0x4604('0xc'),_0x4604('0xb'),_0x4604('0xb'),'NO\x20ANSWER','ANSWERED',_0x4604('0xd'),'FAILED',_0x4604('0xc'),_0x4604('0xc')];config[_0x4604('0xe')]=_[_0x4604('0xf')](config[_0x4604('0xe')],{'host':_0x4604('0x10'),'port':0x18eb});var io=require(_0x4604('0x11'))(new Redis(config[_0x4604('0xe')]));function VoiceCallReport(_0x37108e){this[_0x4604('0x12')]=_0x37108e[_0x4604('0x12')];this[_0x4604('0x13')]=_0x37108e[_0x4604('0x13')];this[_0x4604('0x14')]={};ami['on'](_0x4604('0x15'),this['syncNewExten'][_0x4604('0x16')](this));ami['on'](_0x4604('0x17'),this[_0x4604('0x18')][_0x4604('0x16')](this));ami['on'](_0x4604('0x19'),this[_0x4604('0x1a')][_0x4604('0x16')](this));ami['on']('newstate',this['syncNewState'][_0x4604('0x16')](this));ami['on'](_0x4604('0x1b'),this[_0x4604('0x1c')][_0x4604('0x16')](this));ami['on']('hangup',this[_0x4604('0x1d')][_0x4604('0x16')](this));ami['on'](_0x4604('0x1e'),this[_0x4604('0x1f')][_0x4604('0x16')](this));ami['on'](_0x4604('0x20'),this[_0x4604('0x21')][_0x4604('0x16')](this));ami['on'](_0x4604('0x22'),this[_0x4604('0x23')][_0x4604('0x16')](this));ami['on'](_0x4604('0x24'),this[_0x4604('0x25')][_0x4604('0x16')](this));ami['on'](_0x4604('0x26'),this[_0x4604('0x27')][_0x4604('0x16')](this));try{logger[_0x4604('0x28')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x4604('0x29')]();}catch(_0x26c6e1){logger['error'](_0x4604('0x2a'),util[_0x4604('0x2b')](_0x26c6e1,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x4604('0x2c')]['isNotNull']=function(_0x8e60){return _0x8e60!==null&&!_['isUndefined'](_0x8e60);};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x2d')]=function(_0x1b4d9a,_0xbc2067,_0x11e5a0){io['to'](_0x1b4d9a)[_0x4604('0x2d')](_0xbc2067,_0x11e5a0);};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x1f')]=function(_0x4dc1dc){try{if(this[_0x4604('0x2e')](_0x4dc1dc)){logger[_0x4604('0x28')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x4dc1dc[_0x4604('0x2f')],_0x4dc1dc[_0x4604('0x30')],_0x4dc1dc[_0x4604('0x31')]);logger[_0x4604('0x32')](_0x4604('0x33'),_0x4dc1dc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x4dc1dc,{'showHidden':![],'depth':null}));if(_0x4dc1dc[_0x4604('0x2f')]===_0x4dc1dc['linkedid']){if(!_[_0x4604('0x34')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]])){_[_0x4604('0x35')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]],_[_0x4604('0x36')](_0x4dc1dc,_[_0x4604('0x37')](this[_0x4604('0x12')][_0x4dc1dc[_0x4604('0x2f')]])));}}if(_0x4dc1dc['context']===_0x4604('0x38')){if(this['agents'][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){if(_0x4dc1dc[_0x4604('0x3b')]==_0x4604('0x3c')){this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x3d')]=_0x4dc1dc['connectedlinenum'];this[_0x4604('0x2d')](util['format'](_0x4604('0x3e'),this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['name']),_0x4604('0x3f'),{'destaccountcode':this[_0x4604('0x13')][_0x4dc1dc[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0x4dc1dc[_0x4604('0x41')]});}}}}}catch(_0x27246e){logger[_0x4604('0x42')]('[%s][voiceCallReport][newcallerid]',_0x4dc1dc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x27246e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewChannel']=function(_0x23374d){try{if(this[_0x4604('0x2e')](_0x23374d)){logger[_0x4604('0x32')](_0x4604('0x43'),_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x23374d,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x23374d['uniqueid']])return;if(_0x23374d[_0x4604('0x39')]==='OutgoingSpoolFailed')return;if(_0x23374d[_0x4604('0x2f')]!==_0x23374d['linkedid']&&!this[_0x4604('0x14')][_0x23374d[_0x4604('0x44')]])return;logger[_0x4604('0x28')](_0x4604('0x45'),_0x23374d[_0x4604('0x2f')],_0x23374d['context'],_0x23374d['exten']);this['channels'][_0x23374d[_0x4604('0x2f')]]=new Channel();this[_0x4604('0x12')][_0x23374d['uniqueid']][_0x4604('0x46')]=moment()['format'](_0x4604('0x47'));this['channels'][_0x23374d['uniqueid']][_0x4604('0x48')]=dispositions[_[_0x4604('0x49')](_0x23374d[_0x4604('0x4a')])];_[_0x4604('0x35')](this[_0x4604('0x12')][_0x23374d[_0x4604('0x2f')]],_['pick'](_0x23374d,_[_0x4604('0x37')](this['channels'][_0x23374d[_0x4604('0x2f')]])));if(_0x23374d[_0x4604('0x4b')]===_0x4604('0x38')){if(this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){if(_[_0x4604('0x34')](this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x3d')])){this[_0x4604('0x13')][_0x23374d['channel'][_0x4604('0x3a')]('-')[0x0]]['destconnectedlinenum']=_0x23374d[_0x4604('0x3b')];logger[_0x4604('0x32')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0x23374d['exten']},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x4604('0x3e'),this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x3f'),{'id':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0x23374d[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x23374d['exten']});}}}}}catch(_0x1df1a6){logger[_0x4604('0x42')](_0x4604('0x4d'),_0x23374d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x1df1a6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x18')]=function(_0x41cf9a){try{if(this[_0x4604('0x2e')](_0x41cf9a)){logger[_0x4604('0x32')](_0x4604('0x4e'),_0x41cf9a['uniqueid'],util[_0x4604('0x2b')](_0x41cf9a,{'showHidden':![],'depth':null}));if(_0x41cf9a[_0x4604('0x39')]===_0x4604('0x4f')||_0x41cf9a[_0x4604('0x3b')]==='h')return;if(_0x41cf9a[_0x4604('0x2f')]===_0x41cf9a[_0x4604('0x44')]||this[_0x4604('0x14')][_0x41cf9a[_0x4604('0x44')]]){_0x41cf9a[_0x4604('0x50')]=_0x41cf9a['application'][_0x4604('0x51')]();_0x41cf9a[_0x4604('0x52')]=_0x41cf9a[_0x4604('0x53')]||_0x41cf9a[_0x4604('0x52')];if(_0x41cf9a[_0x4604('0x53')]&&!_0x41cf9a[_0x4604('0x53')]['startsWith'](_0x4604('0x54'))&&_0x41cf9a[_0x4604('0x50')]!==_0x4604('0x7')){_0x41cf9a['applicationdata']=_0x41cf9a[_0x4604('0x52')][_0x4604('0x51')]();}logger[_0x4604('0x28')](_0x4604('0x55'),_0x41cf9a[_0x4604('0x2f')],_0x41cf9a[_0x4604('0x50')],_0x41cf9a[_0x4604('0x52')]);if(_[_0x4604('0x34')](this['channels'][_0x41cf9a[_0x4604('0x2f')]])){this['channels'][_0x41cf9a[_0x4604('0x2f')]]=new Channel();this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x4604('0x46')]=_0x41cf9a[_0x4604('0x56')]?moment()[_0x4604('0x57')](moment[_0x4604('0x56')](_0x41cf9a[_0x4604('0x56')])[_0x4604('0x58')](),'seconds')[_0x4604('0x59')](_0x4604('0x47')):moment()[_0x4604('0x59')](_0x4604('0x47'));this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]]['disposition']=_0x4604('0xb');}_[_0x4604('0x35')](this[_0x4604('0x12')][_0x41cf9a['uniqueid']],_[_0x4604('0x36')](_0x41cf9a,_['keys'](this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]])));if(_['includes'](applications,_0x41cf9a['application'])){this[_0x4604('0x12')][_0x41cf9a['uniqueid']]['lastapplication']=_0x41cf9a[_0x4604('0x50')];this['channels'][_0x41cf9a['uniqueid']]['lastdata']=_0x41cf9a[_0x4604('0x52')];if(_0x41cf9a[_0x4604('0x50')]===_0x4604('0x6')&&_[_0x4604('0x5a')](_0x41cf9a[_0x4604('0x52')][_0x4604('0x51')](),_0x4604('0x5b'))){var _0x25a176=_0x41cf9a[_0x4604('0x52')][_0x4604('0x3a')]('=');var _0x195540=_0x25a176[0x0][_0x4604('0x51')]()[_0x4604('0x5c')](/cdr\((.*)\)/);if(_0x195540){if(_0x195540[0x1]===_0x4604('0x5d')&&!_['isNil'](this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x195540[0x1]]))return;this[_0x4604('0x12')][_0x41cf9a[_0x4604('0x2f')]][_0x195540[0x1]]=_0x25a176[0x1];}}else if(_0x41cf9a[_0x4604('0x50')]===_0x4604('0x7')){this['channels'][_0x41cf9a[_0x4604('0x2f')]]['queue']=_0x41cf9a['applicationdata'][_0x4604('0x3a')](',')[0x0];}}}}}catch(_0x54f0f5){logger['error'](_0x4604('0x5e'),_0x41cf9a['uniqueid'],util[_0x4604('0x2b')](_0x54f0f5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncNewState']=function(_0xaa5298){try{if(this[_0x4604('0x2e')](_0xaa5298)){logger[_0x4604('0x28')](_0x4604('0x5f'),_0xaa5298[_0x4604('0x2f')],_0xaa5298[_0x4604('0x44')],_0xaa5298[_0x4604('0x30')],_0xaa5298[_0x4604('0x31')]);logger[_0x4604('0x32')](_0x4604('0x60'),_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xaa5298,{'showHidden':![],'depth':null}));if(_0xaa5298[_0x4604('0x4a')]!=='6')return;if(_0xaa5298[_0x4604('0x2f')]!==_0xaa5298[_0x4604('0x44')]){var _0x1f0448=moment();if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]){if(!this['channels'][_0xaa5298['linkedid']][_0x4604('0x61')]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['answered']=!![];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x62')]=_0x1f0448[_0x4604('0x59')](_0x4604('0x47'));if(this['channels'][_0xaa5298[_0x4604('0x44')]][_0x4604('0x46')]){this[_0x4604('0x12')][_0xaa5298['linkedid']]['holdtime']=_0x1f0448['diff'](this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['starttime'],_0x4604('0x58'));}}this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x44')]=_0xaa5298[_0x4604('0x2f')];if(_0xaa5298[_0x4604('0x31')]!=='xcally-motion-preview'){this[_0x4604('0x12')][_0xaa5298['linkedid']][_0x4604('0x41')]=_0xaa5298[_0x4604('0x31')];}this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]]['connectedlinename']=_0xaa5298[_0x4604('0x30')];this[_0x4604('0x12')][_0xaa5298['linkedid']][_0x4604('0x63')]=_0xaa5298[_0x4604('0x39')];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x48')]=dispositions[_[_0x4604('0x49')](_0xaa5298['channelstate'])];if(this['agents'][_0xaa5298['channel'][_0x4604('0x3a')]('-')[0x0]]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x64')]=this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'];this['channels'][_0xaa5298[_0x4604('0x44')]]['membername']=this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')];}}if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){if(!this['channels'][_0xaa5298[_0x4604('0x2f')]]['answered']){this['channels'][_0xaa5298['uniqueid']][_0x4604('0x61')]=!![];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]['answertime']=_0x1f0448[_0x4604('0x59')](_0x4604('0x47'));if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x46')]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x65')]=_0x1f0448[_0x4604('0x66')](this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x46')],_0x4604('0x58'));}}if(_0xaa5298['calleridnum']!==_0x4604('0x3c')){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x41')]=_0xaa5298[_0x4604('0x31')];}this[_0x4604('0x12')][_0xaa5298['uniqueid']][_0x4604('0x67')]=_0xaa5298[_0x4604('0x30')];this[_0x4604('0x12')][_0xaa5298['uniqueid']]['destinationchannel']=_0xaa5298[_0x4604('0x39')];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x48')]=dispositions[_['toNumber'](_0xaa5298[_0x4604('0x4a')])];}}else{if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){if(this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x64')]=this['agents'][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'];this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x68')]=this[_0x4604('0x13')][_0xaa5298['channel']['split']('-')[0x0]][_0x4604('0x4c')];}}}if(_0xaa5298['context']===_0x4604('0x38')){if(this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this['agents'][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x3d')]=_0xaa5298['exten'];var _0x24a94e,_0x46cd9e;if(this[_0x4604('0x12')][_0xaa5298[_0x4604('0x2f')]]){_0x24a94e=this['channels'][_0xaa5298[_0x4604('0x2f')]][_0x4604('0x69')];_0x46cd9e=this['channels'][_0xaa5298[_0x4604('0x2f')]]['queue'];}else if(this['channels'][_0xaa5298['linkedid']]){_0x24a94e=this['channels'][_0xaa5298[_0x4604('0x44')]][_0x4604('0x69')];_0x46cd9e=this[_0x4604('0x12')][_0xaa5298[_0x4604('0x44')]][_0x4604('0x7')];}this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x7')]=_0x46cd9e;this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x69')]=_0x24a94e;logger['debug']('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xaa5298[_0x4604('0x3b')],'routealias':_0x24a94e,'queue':_0x46cd9e||undefined},{'showHidden':![],'depth':null}));this[_0x4604('0x2d')](util['format']('user:%s',this[_0x4604('0x13')][_0xaa5298['channel'][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x3f'),{'id':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x4604('0x13')][_0xaa5298[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x40')],'destconnectedlinenum':_0xaa5298[_0x4604('0x3b')],'routealias':_0x24a94e,'queue':_0x46cd9e||undefined});}}}}catch(_0x4bc7b4){logger[_0x4604('0x42')](_0x4604('0x6a'),_0xaa5298[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x4bc7b4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x6b')]=function(_0x1fbfbc,_0xd8e995){try{if(this[_0x4604('0x12')][_0x1fbfbc]){logger[_0x4604('0x28')](_0x4604('0x6c'),_0x1fbfbc,_0xd8e995);this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x6d')]=!![];if(_[_0x4604('0x6e')](_0xd8e995,'.wav49')){_0xd8e995=_0xd8e995['replace']('.wav49',_0x4604('0x6f'));}this['channels'][_0x1fbfbc]['monitorFilename']=_0xd8e995;var _0x4d4533=_[_0x4604('0x70')](this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x71')],{'filename':_0xd8e995});if(_[_0x4604('0x72')](_0x4d4533)){this[_0x4604('0x12')][_0x1fbfbc][_0x4604('0x71')][_0x4604('0x73')]({'filename':_0xd8e995,'createdAt':moment()[_0x4604('0x59')](_0x4604('0x47')),'mixmonitorid':'','status':_0x4604('0x74')});}}}catch(_0x19390f){logger[_0x4604('0x42')](_0x4604('0x75'),_0x1fbfbc,util['inspect'](_0x19390f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncVarSet']=function(_0x711ef5){try{if(this['isNotNull'](_0x711ef5)){logger['debug'](_0x4604('0x76'),_0x711ef5[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x711ef5,{'showHidden':![],'depth':null}));if(this['channels'][_0x711ef5['uniqueid']]&&_0x711ef5[_0x4604('0x39')]!='OutgoingSpoolFailed'){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')])){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['mixmonitor_filename'])){logger[_0x4604('0x28')](_0x4604('0x78'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this['syncMixMonitorFilename'](_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x7a')])){logger[_0x4604('0x28')](_0x4604('0x7b'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x31')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['xmd-callerid'])){logger[_0x4604('0x28')](_0x4604('0x7c'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x7d')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x7e')])){logger[_0x4604('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['uniqueid']][_0x4604('0x5d')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x7f')])){logger['info'](_0x4604('0x80'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')][_0x4604('0x3a')](',')[0x0]);this['channels'][_0x711ef5['uniqueid']]['queue']=_0x711ef5[_0x4604('0x79')]['split'](',')[0x0];}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x81')])){logger[_0x4604('0x28')](_0x4604('0x82'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x83')]=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x84')])){logger[_0x4604('0x28')](_0x4604('0x85'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x86')]=_0x711ef5['value'];}else if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')]['xmd-callerid-preview'])){logger['info'](_0x4604('0x87'),_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['uniqueid']]['calleridpreview']=_0x711ef5[_0x4604('0x79')];}else if(this[_0x4604('0x2e')](_0x711ef5['variable'][_0x4604('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x711ef5[_0x4604('0x2f')],_0x711ef5[_0x4604('0x79')]);this['channels'][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x7')]=_0x711ef5[_0x4604('0x79')];}else if(this['isNotNull'](_0x711ef5[_0x4604('0x77')][_0x4604('0x89')])){logger[_0x4604('0x28')](_0x4604('0x8a'),_0x711ef5[_0x4604('0x2f')],_0x711ef5['value']);this[_0x4604('0x12')][_0x711ef5[_0x4604('0x2f')]][_0x4604('0x8b')]=_0x711ef5[_0x4604('0x79')];}}}else if(this[_0x4604('0x2e')](_0x711ef5['variable'][_0x4604('0x8c')])){if(_0x711ef5['value']){var _0x31b445=path[_0x4604('0x8d')](_0x711ef5['value'])[_0x4604('0x4c')];logger[_0x4604('0x28')](_0x4604('0x78'),_0x31b445,_0x711ef5[_0x4604('0x79')]);this['syncMixMonitorFilename'](_0x31b445,_0x711ef5[_0x4604('0x79')]);}}else if(this[_0x4604('0x12')][_0x711ef5[_0x4604('0x44')]]){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')])){if(this[_0x4604('0x2e')](_0x711ef5[_0x4604('0x77')][_0x4604('0x89')])){logger[_0x4604('0x28')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x711ef5[_0x4604('0x44')],_0x711ef5[_0x4604('0x79')]);this[_0x4604('0x12')][_0x711ef5['linkedid']][_0x4604('0x8e')]=_0x711ef5[_0x4604('0x79')];}}}}}catch(_0x25a47f){logger['error'](_0x4604('0x8f'),_0x711ef5[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x25a47f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x1d')]=function(_0xe85777){try{if(this[_0x4604('0x2e')](_0xe85777)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xe85777,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0xe85777[_0x4604('0x44')]]){if(this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777['linkedid']][_0x4604('0x44')]]){this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x2f')]=_0xe85777['uniqueid'];this['channels'][this['blindTransfers'][_0xe85777['linkedid']][_0x4604('0x44')]][_0x4604('0x61')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x61')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x62')]=this[_0x4604('0x12')][_0xe85777['uniqueid']][_0x4604('0x62')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]][_0x4604('0x63')]=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['linkedid']][_0x4604('0x39')];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]]['disposition']=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['disposition'];this['channels'][_0xe85777[_0x4604('0x2f')]]=this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]];delete this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x44')]];}else if(this['channels'][this[_0x4604('0x14')][_0xe85777['linkedid']]['uniqueid']]){this['channels'][this[_0x4604('0x14')][_0xe85777['linkedid']][_0x4604('0x2f')]][_0x4604('0x2f')]=[this[_0x4604('0x12')][this['blindTransfers'][_0xe85777['linkedid']][_0x4604('0x2f')]][_0x4604('0x44')],this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['linkedid']=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['uniqueid']]['uniqueid']][0x0];this['channels'][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]]['uniqueid']][_0x4604('0x61')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x61')];this['channels'][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]][_0x4604('0x62')]=this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x62')];this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['destinationchannel']=this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]]['channel'];this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]][_0x4604('0x48')]=this[_0x4604('0x12')][_0xe85777['uniqueid']]['disposition'];this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]=this[_0x4604('0x12')][this['blindTransfers'][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]];delete this[_0x4604('0x12')][this[_0x4604('0x14')][_0xe85777[_0x4604('0x44')]][_0x4604('0x2f')]];}}if(this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]){logger['info'](_0x4604('0x90'),_0xe85777[_0x4604('0x2f')],_0xe85777[_0x4604('0x91')]);var _0x2ae659=moment();this[_0x4604('0x12')][_0xe85777['uniqueid']]['endtime']=_0x2ae659[_0x4604('0x59')](_0x4604('0x47'));this['channels'][_0xe85777['uniqueid']][_0x4604('0x56')]=_0x2ae659[_0x4604('0x66')](this['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x46')],_0x4604('0x58'));if(this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['answered']){this['channels'][_0xe85777['uniqueid']][_0x4604('0x92')]=_0x2ae659[_0x4604('0x66')](this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x62')],_0x4604('0x58'));this['channels'][_0xe85777[_0x4604('0x2f')]]['holdtime']=this['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x56')]-this[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x92')];}if(_0xe85777[_0x4604('0x4b')]===_0x4604('0x38')){if(this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]){this['agents'][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]=_[_0x4604('0x93')](this[_0x4604('0x13')][_0xe85777['channel'][_0x4604('0x3a')]('-')[0x0]],['destconnectedlinenum']);logger[_0x4604('0x32')](_0x4604('0x94'),_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')]({'id':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x4604('0x2d')](util[_0x4604('0x59')](_0x4604('0x3e'),this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')]['split']('-')[0x0]][_0x4604('0x4c')]),_0x4604('0x95'),{'id':this[_0x4604('0x13')][_0xe85777[_0x4604('0x39')][_0x4604('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x4604('0x13')][_0xe85777['channel'][_0x4604('0x3a')]('-')[0x0]][_0x4604('0x40')]});for(var _0x168b99=0x0;_0x168b99<Object['keys'](this[_0x4604('0x13')])[_0x4604('0x96')];_0x168b99++){var _0x5b51b9=Object[_0x4604('0x37')](this[_0x4604('0x13')])[_0x168b99];var _0x328a05=this[_0x4604('0x13')][_0x5b51b9];if(_0x328a05[_0x4604('0x40')]===Number(_0xe85777['connectedlinenum'])){this['emit'](util[_0x4604('0x59')](_0x4604('0x3e'),_0x328a05['name']),_0x4604('0x95'),{'id':_0x328a05['id'],'destaccountcode':_0x328a05[_0x4604('0x40')],'transfer':this['channels'][_0xe85777[_0x4604('0x2f')]]['transferType']});break;}}}}var _0x3cb4a4=this;Promise[_0x4604('0x97')]()[_0x4604('0x98')](function(){var _0x29203f=_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]];if(typeof _0x29203f['transferType']===_0x4604('0x99'))return;if(_[_0x4604('0x9a')](_0x29203f[_0x4604('0x71')]))return;return RpcSetting[_0x4604('0x9b')]()[_0x4604('0x98')](function(_0x3b4a7b){if(!_0x3b4a7b['stopRecordingOnTransfer'])return;return Promise[_0x4604('0x97')]()[_0x4604('0x98')](function(){return ami[_0x4604('0x9c')]({'action':_0x4604('0x9d'),'channel':_0x29203f['channel']})[_0x4604('0x9e')](function(){});})[_0x4604('0x98')](function(){return ami[_0x4604('0x9c')]({'action':_0x4604('0x9d'),'channel':_0x29203f[_0x4604('0x63')]})[_0x4604('0x9e')](function(){})[_0x4604('0x9f')](function(){var _0x38451c=_0x3cb4a4[_0x4604('0x13')][_0x29203f[_0x4604('0x63')][_0x4604('0x3a')]('-')[0x0]];if(!_0x38451c)return;io['emit'](_0x4604('0xa0'),{'agentId':_0x38451c['id'],'uniqueid':_0x29203f[_0x4604('0x2f')]});});});});})['then'](function(){if(_0xe85777[_0x4604('0xa1')]===_0x4604('0xa2')){_0x3cb4a4[_0x4604('0x14')][_0xe85777[_0x4604('0x2f')]]=_0xe85777;}else{if(_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x5d')]===_0x4604('0xa3')&&_0x3cb4a4[_0x4604('0x14')][_0xe85777[_0x4604('0x2f')]]){_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['uniqueid']=[_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]][_0x4604('0x44')],_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]['linkedid']=_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]][_0x4604('0x2f')]][0x0];delete _0x3cb4a4['blindTransfers'][_0xe85777['uniqueid']];}}logger[_0x4604('0x32')](_0x4604('0xa4'),_0xe85777[_0x4604('0x2f')],util['inspect'](_0x3cb4a4['channels'][_0xe85777[_0x4604('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x4604('0x2d')](_0x4604('0xa5'),_0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]]);delete _0x3cb4a4[_0x4604('0x12')][_0xe85777[_0x4604('0x2f')]];});}}}catch(_0x45e58a){logger['error']('[%s][voiceCallReport][hangup]',_0xe85777[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x45e58a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')]['syncAttendedTransfer']=function(_0x59774d){try{if(this[_0x4604('0x2e')](_0x59774d)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x59774d[_0x4604('0x2f')],_0x59774d[_0x4604('0xa6')],_0x59774d[_0x4604('0xa7')]);logger['debug'](_0x4604('0xa8'),_0x59774d['uniqueid'],util[_0x4604('0x2b')](_0x59774d,{'showHidden':![],'depth':null}));var _0x388eb0;if(this['channels'][_0x59774d['transfereeuniqueid']]){this['channels'][_0x59774d[_0x4604('0xa9')]][_0x4604('0xaa')]=_0x59774d[_0x4604('0xa6')];this['channels'][_0x59774d['transfereeuniqueid']][_0x4604('0xab')]=_0x59774d[_0x4604('0xa7')];if(this[_0x4604('0x12')][_0x59774d['secondtransfereruniqueid']]){_0x388eb0=this['channels'][_0x59774d['secondtransfereruniqueid']];this['channels'][_0x59774d[_0x4604('0xac')]]=this[_0x4604('0x12')][_0x59774d[_0x4604('0xa9')]];this[_0x4604('0x12')][_0x59774d[_0x4604('0xa9')]]=_0x388eb0;}this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]][_0x4604('0xad')]=_0x4604('0xae');}else if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]]){this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]][_0x4604('0xaa')]=_0x59774d[_0x4604('0xa6')];this['channels'][_0x59774d['transfertargetuniqueid']][_0x4604('0xab')]=_0x59774d['transfertargetcalleridnum'];if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]]){_0x388eb0=this['channels'][_0x59774d[_0x4604('0xb0')]];this[_0x4604('0x12')][_0x59774d['origtransfereruniqueid']]=this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]];this[_0x4604('0x12')][_0x59774d['transfertargetuniqueid']]=_0x388eb0;}this[_0x4604('0x12')][_0x59774d[_0x4604('0xaf')]][_0x4604('0xad')]=_0x4604('0xae');}if((this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]]||this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']])&&this[_0x4604('0x12')][_0x59774d['secondtransfereruniqueid']]){var _0x3eb037=_[_0x4604('0xb1')]([this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]],this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']],this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]]],function(_0x43f785){return _0x43f785&&_0x43f785['type']===_0x4604('0xa3')&&_0x43f785[_0x4604('0xb2')];});if(_0x3eb037){if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb0')]])this[_0x4604('0x12')][_0x59774d['origtransfereruniqueid']][_0x4604('0xad')]='ATTENDED';if(this[_0x4604('0x12')][_0x59774d[_0x4604('0xb3')]])this[_0x4604('0x12')][_0x59774d['origtransfererlinkedid']][_0x4604('0xad')]=_0x4604('0xae');this[_0x4604('0x12')][_0x59774d[_0x4604('0xac')]][_0x4604('0xad')]=_0x4604('0xae');}}}}catch(_0xb74a10){logger[_0x4604('0x42')](_0x4604('0xb4'),_0x59774d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xb74a10,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x23')]=function(_0xafc6cc){try{if(this[_0x4604('0x2e')](_0xafc6cc)){logger[_0x4604('0x28')](_0x4604('0xb5'),_0xafc6cc[_0x4604('0x2f')],_0xafc6cc['transfereecalleridnum'],_0xafc6cc[_0x4604('0xb6')]);logger[_0x4604('0x32')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0xafc6cc[_0x4604('0x2f')],util[_0x4604('0x2b')](_0xafc6cc,{'showHidden':![],'depth':null}));if(this['channels'][_0xafc6cc[_0x4604('0xa9')]]){this[_0x4604('0x12')][_0xafc6cc['transfereeuniqueid']][_0x4604('0xaa')]=_0xafc6cc['transfereecalleridnum'];this[_0x4604('0x12')][_0xafc6cc[_0x4604('0xa9')]][_0x4604('0xab')]=_0xafc6cc['extension'];this[_0x4604('0x12')][_0xafc6cc[_0x4604('0xa9')]][_0x4604('0xad')]=_0x4604('0xb7');this[_0x4604('0x1d')]({'event':_0x4604('0xa2'),'uniqueid':_0xafc6cc[_0x4604('0xa9')],'linkedid':_0xafc6cc['transfereruniqueid'],'context':_0xafc6cc['context'],'channel':_0xafc6cc[_0x4604('0xb8')]});}else{this[_0x4604('0x12')][_0xafc6cc['transfereruniqueid']][_0x4604('0xad')]=_0x4604('0xb7');this[_0x4604('0x1d')]({'event':_0x4604('0xa2'),'uniqueid':_0xafc6cc[_0x4604('0xb9')],'linkedid':_0xafc6cc[_0x4604('0xa9')],'context':_0xafc6cc[_0x4604('0x4b')],'channel':_0xafc6cc[_0x4604('0xb8')]});}}}catch(_0x599c6e){logger['error'](_0x4604('0xba'),_0xafc6cc['uniqueid'],util[_0x4604('0x2b')](_0x599c6e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4604('0x2c')][_0x4604('0x25')]=function(_0x80a58){try{if(this[_0x4604('0x2e')](_0x80a58)){logger[_0x4604('0x32')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x80a58[_0x4604('0x2f')],util['inspect'](_0x80a58,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]]){if(!_[_0x4604('0x72')](this[_0x4604('0x12')][_0x80a58['uniqueid']][_0x4604('0x62')])){this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]][_0x4604('0xbb')]=moment()[_0x4604('0x59')](_0x4604('0x47'));logger[_0x4604('0x28')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x80a58[_0x4604('0x2f')],this[_0x4604('0x12')][_0x80a58[_0x4604('0x2f')]][_0x4604('0xbb')]);}}}}catch(_0x36c399){logger['error'](_0x4604('0xbc'),_0x80a58['uniqueid'],util['inspect'](_0x36c399,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4604('0x27')]=function(_0x53e44d){try{if(this[_0x4604('0x2e')](_0x53e44d)){logger[_0x4604('0x32')](_0x4604('0xbd'),_0x53e44d[_0x4604('0x2f')],util[_0x4604('0x2b')](_0x53e44d,{'showHidden':![],'depth':null}));if(this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]]){if(!_[_0x4604('0x72')](this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbb')])){this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbe')]+=moment()[_0x4604('0xbf')](0x0)[_0x4604('0x66')](this['channels'][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbb')],_0x4604('0x58'));logger['info'](_0x4604('0xc0'),_0x53e44d['uniqueid'],this[_0x4604('0x12')][_0x53e44d[_0x4604('0x2f')]][_0x4604('0xbe')]);delete this[_0x4604('0x12')][_0x53e44d['uniqueid']]['mohstarttime'];}}}}catch(_0x36346e){logger[_0x4604('0x42')]('[%s][voiceCallReport][musiconholdstop]',_0x53e44d[_0x4604('0x2f')],util['inspect'](_0x36346e,{'showHidden':![],'depth':null}));}};module[_0x4604('0xc1')]=VoiceCallReport;
\ No newline at end of file
index ca9ad1c..71f32ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','lastIndexOf','channel','omit','event','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','applications','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','variables','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','complete','holdtime','billableseconds','sumHoldTime','sumBillable','sumDuration','duration','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','toLowerCase','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','lodash','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncHangup','prototype'];(function(_0x22b160,_0x5cf92e){var _0xebda05=function(_0x332be5){while(--_0x332be5){_0x22b160['push'](_0x22b160['shift']());}};_0xebda05(++_0x5cf92e);}(_0x326f,0xd1));var _0xf326=function(_0x2580aa,_0x20f9f0){_0x2580aa=_0x2580aa-0x0;var _0x1b7f58=_0x326f[_0x2580aa];return _0x1b7f58;};'use strict';var _=require(_0xf326('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));var logger=require(_0xf326('0x3'))(_0xf326('0x4'));var ami=require(_0xf326('0x5'));config[_0xf326('0x6')]=_[_0xf326('0x7')](config[_0xf326('0x6')],{'host':_0xf326('0x8'),'port':0x18eb});var io=require(_0xf326('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x3c254d){this[_0xf326('0xa')]=_0x3c254d[_0xf326('0xb')];this[_0xf326('0xc')]=_0x3c254d['outbound'];this['applications']={};this['variables']={};ami['on'](_0xf326('0xd'),this[_0xf326('0xe')][_0xf326('0xf')](this));ami['on'](_0xf326('0x10'),this[_0xf326('0x11')]['bind'](this));ami['on'](_0xf326('0x12'),this['syncVarSet'][_0xf326('0xf')](this));ami['on']('hangup',this[_0xf326('0x13')]['bind'](this));}VoiceDialReport[_0xf326('0x14')][_0xf326('0x15')]=function(_0x4b3966){return _0x4b3966!==null&&!_[_0xf326('0x16')](_0x4b3966);};VoiceDialReport[_0xf326('0x14')][_0xf326('0x17')]=function(_0x17a098,_0x5c8483,_0x45c1b6){io['to'](_0x17a098)['emit'](_0x5c8483,_0x45c1b6);};VoiceDialReport['prototype'][_0xf326('0xe')]=function(_0x11f6d2){try{if(this[_0xf326('0x15')](_0x11f6d2)){logger[_0xf326('0x18')](_0xf326('0x19'),_0x11f6d2[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x11f6d2,{'showHidden':![],'depth':null}));if(this[_0xf326('0xa')][_0x11f6d2['uniqueid']]){_[_0xf326('0x1c')](this[_0xf326('0xa')][_0x11f6d2[_0xf326('0x1a')]],{'starttime':moment()[_0xf326('0x1d')](_0xf326('0x1e')),'lastevent':_0xf326('0x1f'),'interface':_0x11f6d2['channel']['substring'](0x0,_0x11f6d2['channel'][_0xf326('0x20')]('-')),'membername':_0x11f6d2[_0xf326('0x21')]['substring'](_0x11f6d2['channel'][_0xf326('0x20')]('/')+0x1,_0x11f6d2['channel']['lastIndexOf']('-'))},_[_0xf326('0x22')](_0x11f6d2,[_0xf326('0x23'),'privilege']));logger['info'](_0xf326('0x24'),_0x11f6d2[_0xf326('0x1a')],this['channels'][_0x11f6d2[_0xf326('0x1a')]][_0xf326('0x25')],this[_0xf326('0xa')][_0x11f6d2[_0xf326('0x1a')]][_0xf326('0x26')]);logger[_0xf326('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x11f6d2['uniqueid'],util['inspect'](this[_0xf326('0xa')][_0x11f6d2[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0xf326('0x27')][_0x11f6d2[_0xf326('0x1a')]])_[_0xf326('0x1c')](this[_0xf326('0xa')][_0x11f6d2['uniqueid']],this[_0xf326('0x27')][_0x11f6d2[_0xf326('0x1a')]]);this[_0xf326('0x17')]('voice:outbound',_0xf326('0x28'),this['channels'][_0x11f6d2['uniqueid']]);logger[_0xf326('0x18')](_0xf326('0x29'),_0x11f6d2[_0xf326('0x1a')],util['inspect'](this[_0xf326('0xa')][_0x11f6d2[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0xf326('0x2a'),this[_0xf326('0xa')][_0x11f6d2[_0xf326('0x1a')]]);}}}catch(_0x18d110){logger[_0xf326('0x2b')](_0xf326('0x2c'),_0x11f6d2[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x18d110,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf326('0x14')][_0xf326('0x11')]=function(_0x4b52f2){try{if(this[_0xf326('0x15')](_0x4b52f2)){logger[_0xf326('0x18')](_0xf326('0x2d'),_0x4b52f2['uniqueid'],util[_0xf326('0x1b')](_0x4b52f2,{'showHidden':![],'depth':null}));if(this[_0xf326('0xa')][_0x4b52f2[_0xf326('0x1a')]]){this['channels'][_0x4b52f2['uniqueid']][_0xf326('0x2e')]=_0x4b52f2[_0xf326('0x2e')];if(_0x4b52f2[_0xf326('0x2e')]===_0xf326('0x2f')){this[_0xf326('0xa')][_0x4b52f2[_0xf326('0x1a')]][_0xf326('0x30')]=_0x4b52f2[_0xf326('0x30')];this['channels'][_0x4b52f2[_0xf326('0x1a')]][_0xf326('0x31')]=_0x4b52f2['connectedlinename'];this[_0xf326('0xa')][_0x4b52f2['uniqueid']][_0xf326('0x32')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xf326('0xa')][_0x4b52f2['uniqueid']][_0xf326('0x33')]='connect';logger[_0xf326('0x34')](_0xf326('0x35'),_0x4b52f2[_0xf326('0x1a')],_0x4b52f2['channel'][_0xf326('0x36')](_0x4b52f2[_0xf326('0x21')]['lastIndexOf']('/')+0x1,_0x4b52f2[_0xf326('0x21')][_0xf326('0x20')]('-')));logger[_0xf326('0x18')](_0xf326('0x37'),_0x4b52f2['uniqueid'],util[_0xf326('0x1b')](this[_0xf326('0xa')][_0x4b52f2[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xf326('0x17')](_0xf326('0x38'),this['channels'][_0x4b52f2[_0xf326('0x1a')]]);}logger[_0xf326('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4b52f2['uniqueid'],util[_0xf326('0x1b')](this['channels'][_0x4b52f2['uniqueid']],{'showHidden':![],'depth':null}));this[_0xf326('0x17')]('voice:outbound',_0xf326('0x28'),this[_0xf326('0xa')][_0x4b52f2[_0xf326('0x1a')]]);}}}catch(_0x39611e){logger['error'](_0xf326('0x39'),_0x4b52f2[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x39611e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf326('0x14')][_0xf326('0x3a')]=function(_0x28f857){try{if(this[_0xf326('0x15')](_0x28f857)){logger[_0xf326('0x18')](_0xf326('0x3b'),_0x28f857[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x28f857,{'showHidden':![],'depth':null}));this[_0xf326('0x3c')](_0x28f857['uniqueid'],_[_0xf326('0x3d')](_0x28f857[_0xf326('0x3e')])[0x0],_0x28f857[_0xf326('0x3f')]);if(this[_0xf326('0x15')](_0x28f857[_0xf326('0x3e')])&&this[_0xf326('0x15')](_0x28f857['variable'][_0xf326('0x40')])){if(_[_0xf326('0x16')](this['channels'][_0x28f857[_0xf326('0x1a')]])){this[_0xf326('0xa')][_0x28f857[_0xf326('0x1a')]]={'routeId':_0x28f857[_0xf326('0x3f')],'variables':this[_0xf326('0x41')][_0x28f857['uniqueid']],'motionChannel':'voice'};logger[_0xf326('0x34')](_0xf326('0x42'),_0x28f857['uniqueid'],_0x28f857['variable'][_0xf326('0x40')],_[_0xf326('0x3d')](_0x28f857[_0xf326('0x3e')])[0x0],_0x28f857['value']);logger[_0xf326('0x18')](_0xf326('0x43'),_0x28f857[_0xf326('0x1a')],util[_0xf326('0x1b')](this[_0xf326('0xa')][_0x28f857[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));this[_0xf326('0x17')](_0xf326('0x44'),_0xf326('0x28'),this[_0xf326('0xa')][_0x28f857[_0xf326('0x1a')]]);}}}}catch(_0xa1ba7a){logger[_0xf326('0x2b')](_0xf326('0x45'),_0x28f857[_0xf326('0x1a')],util['inspect'](_0xa1ba7a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf326('0x14')][_0xf326('0x3c')]=function(_0x6c55a0,_0x28dde6,_0x5f1829){var _0x10f437=[_0xf326('0x46'),_0xf326('0x47'),_0xf326('0x48'),'rtpaudioqosjitterbridged',_0xf326('0x49'),_0xf326('0x4a'),_0xf326('0x4b'),_0xf326('0x4c'),_0xf326('0x4d'),'sipuri','bridgepeer',_0xf326('0x4e'),_0xf326('0x4f'),_0xf326('0x50'),'memberinterface',_0xf326('0x51'),_0xf326('0x25'),_0xf326('0x52'),'memberrealtime'];if(!_['isNil'](_0x28dde6)&&!_[_0xf326('0x53')](_0x10f437,_0x28dde6)){if(_['isUndefined'](this[_0xf326('0x41')][_0x6c55a0])){this['variables'][_0x6c55a0]={};}this[_0xf326('0x41')][_0x6c55a0][_0x28dde6]=_0x5f1829;}};VoiceDialReport[_0xf326('0x14')][_0xf326('0x13')]=function(_0x25e091){try{if(this[_0xf326('0x15')](_0x25e091)){logger[_0xf326('0x18')](_0xf326('0x54'),_0x25e091['uniqueid'],util[_0xf326('0x1b')](_0x25e091,{'showHidden':![],'depth':null}));if(this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]){logger['info'](_0xf326('0x55'),_0x25e091[_0xf326('0x1a')],_0x25e091[_0xf326('0x56')]);this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]['endtime']=moment()[_0xf326('0x1d')](_0xf326('0x1e'));this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]['duration']=moment(this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x57')])[_0xf326('0x58')](this['channels'][_0x25e091['uniqueid']][_0xf326('0x59')],_0xf326('0x5a'));this['channels'][_0x25e091[_0xf326('0x1a')]][_0xf326('0x33')]=_0xf326('0x5b');this[_0xf326('0xc')]['total']+=0x1;if(this[_0xf326('0xa')][_0x25e091['uniqueid']]['answertime']){this[_0xf326('0xc')]['answered']+=0x1;this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x5c')]=moment(this['channels'][_0x25e091['uniqueid']][_0xf326('0x32')])[_0xf326('0x58')](this[_0xf326('0xa')][_0x25e091['uniqueid']][_0xf326('0x59')],'seconds');this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x5d')]=moment(this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x57')])[_0xf326('0x58')](this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x32')],_0xf326('0x5a'));this[_0xf326('0xc')][_0xf326('0x5e')]+=this['channels'][_0x25e091[_0xf326('0x1a')]]['holdtime']||0x0;this[_0xf326('0xc')][_0xf326('0x5f')]+=this['channels'][_0x25e091[_0xf326('0x1a')]]['billableseconds'];}this[_0xf326('0xc')][_0xf326('0x60')]+=this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]][_0xf326('0x61')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x25e091[_0xf326('0x1a')],util[_0xf326('0x1b')](this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xf326('0x17')]('custom:voiceDialReport',this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x25e091['uniqueid'],util[_0xf326('0x1b')](this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xf326('0x17')](_0xf326('0x62'),this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]);logger['debug'](_0xf326('0x63'),_0x25e091[_0xf326('0x1a')],util[_0xf326('0x1b')](this[_0xf326('0xa')][_0x25e091['uniqueid']],{'showHidden':![],'depth':null}));this[_0xf326('0x17')]('voice:outbound','voice_outbound:save',this[_0xf326('0xc')]);logger['info'](_0xf326('0x64'),JSON[_0xf326('0x65')](this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]]));logger[_0xf326('0x18')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x25e091['uniqueid'],util['inspect'](this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]],{'showHidden':![],'depth':null}));this[_0xf326('0x17')](_0xf326('0x44'),_0xf326('0x66'),this['channels'][_0x25e091[_0xf326('0x1a')]]);delete this[_0xf326('0xa')][_0x25e091[_0xf326('0x1a')]];}else if(this['channels'][_0x25e091['linkedid']]){this[_0xf326('0xa')][_0x25e091[_0xf326('0x67')]]['uniqueid']=this['channels'][_0x25e091[_0xf326('0x67')]]['destuniqueid'];}if(this[_0xf326('0x41')][_0x25e091['uniqueid']]){delete this['variables'][_0x25e091['uniqueid']];}}}catch(_0x1bb63e){logger[_0xf326('0x2b')](_0xf326('0x68'),_0x25e091['uniqueid'],util[_0xf326('0x1b')](_0x1bb63e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf326('0x14')][_0xf326('0x69')]=function(_0x457f3d){try{if(this[_0xf326('0x15')](_0x457f3d)){logger[_0xf326('0x18')](_0xf326('0x6a'),_0x457f3d[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x457f3d,{'showHidden':![],'depth':null}));if(_0x457f3d['application'][_0xf326('0x6b')]()==='set'){_0x457f3d[_0xf326('0x6c')]=(_0x457f3d[_0xf326('0x6d')]||_0x457f3d[_0xf326('0x6c')])['toLowerCase']();if(_[_0xf326('0x6e')](_0x457f3d[_0xf326('0x6c')],_0xf326('0x6f'))){if(_['isUndefined'](this[_0xf326('0x27')][_0x457f3d[_0xf326('0x1a')]]))this[_0xf326('0x27')][_0x457f3d[_0xf326('0x1a')]]={};logger['info'](_0xf326('0x70'),_0x457f3d['uniqueid'],_0x457f3d['application'],_0x457f3d[_0xf326('0x6c')]);var _0x2c36d3=_0x457f3d['applicationdata']['split']('=');var _0x4b8f8d=_0x2c36d3[0x0][_0xf326('0x71')](/cdr\((.*)\)/);if(_0x4b8f8d)this['applications'][_0x457f3d[_0xf326('0x1a')]][_0x4b8f8d[0x1]]=_0x2c36d3[0x1];}}}}catch(_0x37a564){logger[_0xf326('0x2b')](_0xf326('0x72'),_0x457f3d[_0xf326('0x1a')],util[_0xf326('0x1b')](_0x37a564,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
+var _0x1261=['outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','lastIndexOf','channel','omit','event','privilege','info','channels','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','value','variable','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answertime','holdtime','sumHoldTime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%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','[%s][voiceDialReport][hangup]','syncNewExten','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x1769e5,_0x449f13){var _0x153de8=function(_0x4ca2c2){while(--_0x4ca2c2){_0x1769e5['push'](_0x1769e5['shift']());}};_0x153de8(++_0x449f13);}(_0x1261,0x144));var _0x1126=function(_0x2b47ad,_0x55c7cc){_0x2b47ad=_0x2b47ad-0x0;var _0x1a2426=_0x1261[_0x2b47ad];return _0x1a2426;};'use strict';var _=require('lodash');var moment=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));var logger=require(_0x1126('0x4'))(_0x1126('0x5'));var ami=require(_0x1126('0x6'));config[_0x1126('0x7')]=_[_0x1126('0x8')](config[_0x1126('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1126('0x7')]));function VoiceDialReport(_0x907180){this['channels']=_0x907180[_0x1126('0x9')];this[_0x1126('0xa')]=_0x907180[_0x1126('0xa')];this[_0x1126('0xb')]={};this[_0x1126('0xc')]={};ami['on']('dialbegin',this[_0x1126('0xd')][_0x1126('0xe')](this));ami['on'](_0x1126('0xf'),this['syncDialEnd'][_0x1126('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x1126('0xe')](this));ami['on']('hangup',this[_0x1126('0x10')][_0x1126('0xe')](this));}VoiceDialReport[_0x1126('0x11')][_0x1126('0x12')]=function(_0xca0355){return _0xca0355!==null&&!_[_0x1126('0x13')](_0xca0355);};VoiceDialReport[_0x1126('0x11')][_0x1126('0x14')]=function(_0x43850b,_0x53a8f0,_0x5de9a7){io['to'](_0x43850b)[_0x1126('0x14')](_0x53a8f0,_0x5de9a7);};VoiceDialReport[_0x1126('0x11')][_0x1126('0xd')]=function(_0x4be0c6){try{if(this[_0x1126('0x12')](_0x4be0c6)){logger['debug'](_0x1126('0x15'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x4be0c6,{'showHidden':![],'depth':null}));if(this['channels'][_0x4be0c6[_0x1126('0x16')]]){_[_0x1126('0x18')](this['channels'][_0x4be0c6['uniqueid']],{'starttime':moment()[_0x1126('0x19')](_0x1126('0x1a')),'lastevent':'called','interface':_0x4be0c6['channel'][_0x1126('0x1b')](0x0,_0x4be0c6['channel'][_0x1126('0x1c')]('-')),'membername':_0x4be0c6[_0x1126('0x1d')][_0x1126('0x1b')](_0x4be0c6['channel'][_0x1126('0x1c')]('/')+0x1,_0x4be0c6['channel']['lastIndexOf']('-'))},_[_0x1126('0x1e')](_0x4be0c6,[_0x1126('0x1f'),_0x1126('0x20')]));logger[_0x1126('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x4be0c6[_0x1126('0x16')],this[_0x1126('0x22')][_0x4be0c6['uniqueid']][_0x1126('0x23')],this['channels'][_0x4be0c6['uniqueid']]['interface']);logger[_0x1126('0x24')](_0x1126('0x25'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x1126('0xb')][_0x4be0c6[_0x1126('0x16')]])_['merge'](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],this[_0x1126('0xb')][_0x4be0c6['uniqueid']]);this['emit'](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x4be0c6[_0x1126('0x16')]]);logger[_0x1126('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4be0c6[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x4be0c6['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialbegin',this[_0x1126('0x22')][_0x4be0c6['uniqueid']]);}}}catch(_0x5252e0){logger['error'](_0x1126('0x28'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x5252e0,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x1126('0x29')]=function(_0x226afb){try{if(this['isNotNull'](_0x226afb)){logger[_0x1126('0x24')](_0x1126('0x2a'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x226afb,{'showHidden':![],'depth':null}));if(this['channels'][_0x226afb['uniqueid']]){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2b')]=_0x226afb[_0x1126('0x2b')];if(_0x226afb['dialstatus']===_0x1126('0x2c')){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2d')]=_0x226afb[_0x1126('0x2d')];this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2e')]=_0x226afb[_0x1126('0x2e')];this[_0x1126('0x22')][_0x226afb['uniqueid']]['answertime']=moment()[_0x1126('0x19')](_0x1126('0x1a'));this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2f')]=_0x1126('0x30');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x226afb[_0x1126('0x16')],_0x226afb[_0x1126('0x1d')][_0x1126('0x1b')](_0x226afb[_0x1126('0x1d')]['lastIndexOf']('/')+0x1,_0x226afb[_0x1126('0x1d')]['lastIndexOf']('-')));logger[_0x1126('0x24')](_0x1126('0x31'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x226afb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x32'),this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]]);}logger[_0x1126('0x24')](_0x1126('0x33'),_0x226afb[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x226afb['uniqueid']]);}}}catch(_0x1c4f06){logger[_0x1126('0x34')](_0x1126('0x35'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x1c4f06,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['syncVarSet']=function(_0x497576){try{if(this['isNotNull'](_0x497576)){logger[_0x1126('0x24')]('[%s][voiceDialReport][varset]\x20event:',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x497576,{'showHidden':![],'depth':null}));this[_0x1126('0x36')](_0x497576[_0x1126('0x16')],_['keys'](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);if(this[_0x1126('0x12')](_0x497576[_0x1126('0x38')])&&this['isNotNull'](_0x497576[_0x1126('0x38')]['outboundrouteid'])){if(_[_0x1126('0x13')](this['channels'][_0x497576[_0x1126('0x16')]])){this[_0x1126('0x22')][_0x497576[_0x1126('0x16')]]={'routeId':_0x497576['value'],'variables':this[_0x1126('0xc')][_0x497576[_0x1126('0x16')]],'motionChannel':_0x1126('0x39')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x497576['uniqueid'],_0x497576[_0x1126('0x38')]['outboundrouteid'],_[_0x1126('0x3a')](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);logger[_0x1126('0x24')](_0x1126('0x3b'),_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](this['channels'][_0x497576[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x27'),this[_0x1126('0x22')][_0x497576['uniqueid']]);}}}}catch(_0x5f6d73){logger[_0x1126('0x34')]('[%s][voiceDialReport][varset]',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x5f6d73,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['addVariable']=function(_0x3fe7c1,_0x1c405c,_0x411c89){var _0x5878bb=[_0x1126('0x3c'),_0x1126('0x3d'),_0x1126('0x3e'),_0x1126('0x3f'),'rtpaudioqosloss',_0x1126('0x40'),'rtpaudioqosrtt',_0x1126('0x41'),_0x1126('0x42'),'sipuri','bridgepeer',_0x1126('0x43'),_0x1126('0x44'),_0x1126('0x45'),'memberinterface',_0x1126('0x46'),_0x1126('0x23'),_0x1126('0x47'),_0x1126('0x48')];if(!_['isNil'](_0x1c405c)&&!_[_0x1126('0x49')](_0x5878bb,_0x1c405c)){if(_[_0x1126('0x13')](this['variables'][_0x3fe7c1])){this['variables'][_0x3fe7c1]={};}this['variables'][_0x3fe7c1][_0x1c405c]=_0x411c89;}};VoiceDialReport['prototype'][_0x1126('0x10')]=function(_0x3bf090){try{if(this['isNotNull'](_0x3bf090)){logger[_0x1126('0x24')](_0x1126('0x4a'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x3bf090,{'showHidden':![],'depth':null}));if(this[_0x1126('0x22')][_0x3bf090['uniqueid']]){logger[_0x1126('0x21')](_0x1126('0x4b'),_0x3bf090['uniqueid'],_0x3bf090[_0x1126('0x4c')]);this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')]=moment()[_0x1126('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x4e')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['endtime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],_0x1126('0x51'));this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x2f')]=_0x1126('0x52');this[_0x1126('0xa')][_0x1126('0x53')]+=0x1;if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x54')]){this[_0x1126('0xa')]['answered']+=0x1;this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['answertime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],'seconds');this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['billableseconds']=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')])['diff'](this[_0x1126('0x22')][_0x3bf090['uniqueid']]['answertime'],_0x1126('0x51'));this[_0x1126('0xa')][_0x1126('0x56')]+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]||0x0;this[_0x1126('0xa')]['sumBillable']+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x57')];}this[_0x1126('0xa')][_0x1126('0x58')]+=this[_0x1126('0x22')][_0x3bf090['uniqueid']]['duration'];logger[_0x1126('0x24')](_0x1126('0x59'),_0x3bf090['uniqueid'],util['inspect'](this['channels'][_0x3bf090['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x5a'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);logger[_0x1126('0x24')](_0x1126('0x5b'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialend',this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]);logger[_0x1126('0x24')](_0x1126('0x5c'),_0x3bf090[_0x1126('0x16')],util['inspect'](this['channels'][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x5d'),this[_0x1126('0xa')]);logger[_0x1126('0x21')](_0x1126('0x5e'),JSON[_0x1126('0x5f')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]));logger[_0x1126('0x24')](_0x1126('0x60'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0x1126('0x26'),_0x1126('0x61'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);delete this['channels'][_0x3bf090[_0x1126('0x16')]];}else if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x62')]]){this[_0x1126('0x22')][_0x3bf090['linkedid']]['uniqueid']=this['channels'][_0x3bf090[_0x1126('0x62')]][_0x1126('0x63')];}if(this[_0x1126('0xc')][_0x3bf090[_0x1126('0x16')]]){delete this['variables'][_0x3bf090[_0x1126('0x16')]];}}}catch(_0x5d7014){logger[_0x1126('0x34')](_0x1126('0x64'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x5d7014,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')][_0x1126('0x65')]=function(_0x9a61b1){try{if(this['isNotNull'](_0x9a61b1)){logger[_0x1126('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x9a61b1[_0x1126('0x16')],util[_0x1126('0x17')](_0x9a61b1,{'showHidden':![],'depth':null}));if(_0x9a61b1['application'][_0x1126('0x66')]()===_0x1126('0x67')){_0x9a61b1['applicationdata']=(_0x9a61b1[_0x1126('0x68')]||_0x9a61b1[_0x1126('0x69')])['toLowerCase']();if(_['startsWith'](_0x9a61b1[_0x1126('0x69')],_0x1126('0x6a'))){if(_[_0x1126('0x13')](this['applications'][_0x9a61b1['uniqueid']]))this['applications'][_0x9a61b1[_0x1126('0x16')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x9a61b1[_0x1126('0x16')],_0x9a61b1['application'],_0x9a61b1[_0x1126('0x69')]);var _0x288a0c=_0x9a61b1['applicationdata'][_0x1126('0x6b')]('=');var _0x375728=_0x288a0c[0x0][_0x1126('0x6c')](/cdr\((.*)\)/);if(_0x375728)this[_0x1126('0xb')][_0x9a61b1[_0x1126('0x16')]][_0x375728[0x1]]=_0x288a0c[0x1];}}}}catch(_0x5e9872){logger[_0x1126('0x34')](_0x1126('0x6d'),_0x9a61b1['uniqueid'],util[_0x1126('0x17')](_0x5e9872,{'showHidden':![],'depth':null}));}};module[_0x1126('0x6e')]=VoiceDialReport;
\ No newline at end of file
index 013faae..612b715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f5d=['milliseconds','lastevent','[%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','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','syncHangup','BlindTransfer','transfererchannel','[%s][voiceQueueReport][blindtransfer]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','prototype','tail','finally','queueReports','agents','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','hangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','originated','hasOwnProperty','queueStatusComplete','unlockRR','clearZombieChannels','channels','switch','sequence','enqueue','isNil','Action','status','channel','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','name','voice_queue_channel:remove','voice_queue_presence:remove','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','Trunk','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','catch','[voiceQueueReport][queues]','queuesummary','then','[voiceQueueReport][queuesummary]','queue','info','callers','waiting','toNumber','loggedin','available','talking','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','isUndefined','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','ABANDONED','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','assigned','lastAssignedTo','queuecallerexit','queuecallerexitAt','transfer','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','keys','variable','value','queuestatus','CONTINUE','TIMEOUT','timeout','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','includes','handleHangup','length','abandoned','diff','seconds'];(function(_0xb1937e,_0x330b2f){var _0x44474f=function(_0x4336e0){while(--_0x4336e0){_0xb1937e['push'](_0xb1937e['shift']());}};_0x44474f(++_0x330b2f);}(_0x8f5d,0x118));var _0xd8f5=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x8f5d[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require(_0xd8f5('0x0'));var moment=require(_0xd8f5('0x1'));var util=require(_0xd8f5('0x2'));var md5=require(_0xd8f5('0x3'));var Redis=require('ioredis');var config=require(_0xd8f5('0x4'));var logger=require(_0xd8f5('0x5'))('ami');var ami=require('../ami');var QueueReport=require('../model/queueReport');config[_0xd8f5('0x6')]=_['defaults'](config[_0xd8f5('0x6')],{'host':_0xd8f5('0x7'),'port':0x18eb});var io=require(_0xd8f5('0x8'))(new Redis(config[_0xd8f5('0x6')]));var Sequence=function(){};Sequence[_0xd8f5('0x9')]['enqueue']=function(_0x58d20c){this[_0xd8f5('0xa')]=this['tail']?this[_0xd8f5('0xa')][_0xd8f5('0xb')](_0x58d20c):_0x58d20c();};function VoiceQueueReport(_0x36debc){this['sequence']=new Sequence();this[_0xd8f5('0xc')]={};this[_0xd8f5('0xd')]=_0x36debc[_0xd8f5('0xd')];this['channels']=_0x36debc['queueChannels'];this[_0xd8f5('0xe')]=_0x36debc[_0xd8f5('0xe')];this[_0xd8f5('0xf')]=!![];this[_0xd8f5('0x10')]=_0x36debc[_0xd8f5('0x10')];this[_0xd8f5('0x11')]={};ami['on']('queuesummary',this[_0xd8f5('0x12')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x14'),this['syncQueueSummaryComplete'][_0xd8f5('0x13')](this));ami['on']('queuecallerjoin',this[_0xd8f5('0x15')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x16'),this[_0xd8f5('0x17')][_0xd8f5('0x13')](this));ami['on']('queuecallerleave',this[_0xd8f5('0x18')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x19'),this[_0xd8f5('0x1a')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x1b'),this[_0xd8f5('0x1c')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x1d'),this['syncVarSet'][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x1e'),this['syncHangup'][_0xd8f5('0x13')](this));ami['on']('fullybooted',this['syncFullyBooted'][_0xd8f5('0x13')](this));ami['on']('musiconholdstart',this[_0xd8f5('0x1f')]['bind'](this));ami['on'](_0xd8f5('0x20'),this[_0xd8f5('0x21')]['bind'](this));ami['on']('attendedtransfer',this[_0xd8f5('0x22')][_0xd8f5('0x13')](this));ami['on'](_0xd8f5('0x23'),this[_0xd8f5('0x24')][_0xd8f5('0x13')](this));this[_0xd8f5('0x25')]();this[_0xd8f5('0x26')]();}function clearChannels(_0x27f6a9){if(!_[_0xd8f5('0x27')](_0x27f6a9)){for(var _0x674fcd in _0x27f6a9){if(_0x27f6a9['hasOwnProperty'](_0x674fcd)){delete _0x27f6a9[_0x674fcd];}}}}function clearCampaigns(_0x35b9e6){if(!_[_0xd8f5('0x27')](_0x35b9e6)){for(var _0x34e059 in _0x35b9e6){if(_0x35b9e6['hasOwnProperty'](_0x34e059)){_0x35b9e6[_0x34e059][_0xd8f5('0x28')]=0x0;}}}}function clearVoiceQueues(_0x139746){if(!_['isEmpty'](_0x139746)){for(var _0x445b3c in _0x139746){if(_0x139746[_0xd8f5('0x29')](_0x445b3c)){_0x139746[_0x445b3c]['originated']=0x0;_0x139746[_0x445b3c]['talking']=0x0;_0x139746[_0x445b3c]['pTalking']=0x0;_0x139746[_0x445b3c]['waiting']=0x0;_0x139746[_0x445b3c][_0xd8f5('0x2a')]=!![];}}}}function clearAgentBooked(_0x175fbc){if(!_['isEmpty'](_0x175fbc)){for(var _0x46a4f9 in _0x175fbc){if(_0x175fbc[_0xd8f5('0x29')](_0x46a4f9)){_0x175fbc[_0x46a4f9][_0xd8f5('0x2b')]=!![];}}}}VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x2c')]=function(){var _0x2f40ed=this;for(var _0x409d79 in this[_0xd8f5('0x2d')]){if(this[_0xd8f5('0x2d')][_0xd8f5('0x29')](_0x409d79)&&!this[_0xd8f5('0x2d')][_0x409d79][_0xd8f5('0x2e')]){this[_0xd8f5('0x2f')][_0xd8f5('0x30')](function(){if(!_[_0xd8f5('0x31')](_0x2f40ed[_0xd8f5('0x2d')][_0x409d79])){return ami[_0xd8f5('0x32')]({'action':_0xd8f5('0x33'),'channel':_0x2f40ed[_0xd8f5('0x2d')][_0x409d79][_0xd8f5('0x34')]})['catch'](function(_0x2286ab){if(_0x2286ab[_0xd8f5('0x35')]===_0xd8f5('0x36')){setTimeout(function(){if(_0x2f40ed['channels'][_0x409d79]){delete _0x2f40ed[_0xd8f5('0x2d')][_0x409d79];logger[_0xd8f5('0x37')](_0xd8f5('0x38'),_0x409d79,util[_0xd8f5('0x39')](_0x2286ab,{'showHidden':![],'depth':null}));}if(_0x2f40ed[_0xd8f5('0xc')][_0x409d79]){delete _0x2f40ed[_0xd8f5('0xc')][_0x409d79];logger[_0xd8f5('0x37')](_0xd8f5('0x3a'),_0x409d79,util[_0xd8f5('0x39')](_0x2286ab,{'showHidden':![],'depth':null}));}if(_0x2f40ed[_0xd8f5('0x11')][_0x409d79]){delete _0x2f40ed[_0xd8f5('0x11')][_0x409d79];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x409d79,util['inspect'](_0x2286ab,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x3b')]=function(){logger['error'](_0xd8f5('0x3c'));clearChannels(this[_0xd8f5('0x2d')]);this[_0xd8f5('0x3d')](this['queueReports']);clearAgentBooked(this[_0xd8f5('0xd')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xd8f5('0x10')]);};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x3d')]=function(_0x773661){var _0x51d0c7=this;if(!_[_0xd8f5('0x27')](_0x773661)){for(var _0x2071cc in _0x773661){if(_0x773661[_0xd8f5('0x29')](_0x2071cc)){_0x51d0c7[_0xd8f5('0x3e')](_0x773661[_0x2071cc],_0xd8f5('0x3f'));delete _0x773661[_0x2071cc];}}}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x40')]=function(_0x305a35,_0x1063cd,_0x3b2064){io['to'](_0x305a35)['emit'](_0x1063cd,_0x3b2064);};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x41')]=function(_0x568e13,_0x18a57d){logger[_0xd8f5('0x42')](_0xd8f5('0x43')+_0x18a57d+_0xd8f5('0x44'),_0x568e13[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x568e13,{'showHidden':![],'depth':null}));this[_0xd8f5('0x40')](util[_0xd8f5('0x46')](_0xd8f5('0x47'),_0x568e13['name']),_0xd8f5('0x48'),_0x568e13);io[_0xd8f5('0x40')](_0xd8f5('0x49'),_0x568e13);};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x3e')]=function(_0x579847,_0x2d8530){logger[_0xd8f5('0x42')](_0xd8f5('0x43')+_0x2d8530+_0xd8f5('0x4a'),_0x579847[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x579847,{'showHidden':![],'depth':null}));if(_0x579847[_0xd8f5('0x4b')]===_0xd8f5('0x4c'))return;this['emit'](util[_0xd8f5('0x46')](_0xd8f5('0x47'),_0x579847[_0xd8f5('0x4d')]),_0xd8f5('0x4e'),_0x579847);io[_0xd8f5('0x40')](_0xd8f5('0x4f'),_0x579847);};VoiceQueueReport[_0xd8f5('0x9')]['emitVoiceQueueSummary']=function(_0x617ef8,_0x28fbff){if(_0x617ef8['type']==='inbound'){var _0x36d761={'id':_0x617ef8['id'],'name':_0x617ef8[_0xd8f5('0x4d')],'strategy':_0x617ef8['strategy'],'answered':_0x617ef8[_0xd8f5('0x50')],'available':_0x617ef8['available'],'loggedIn':_0x617ef8[_0xd8f5('0x51')],'pTalking':_0x617ef8[_0xd8f5('0x52')],'sumBillable':_0x617ef8[_0xd8f5('0x53')],'sumDuration':_0x617ef8[_0xd8f5('0x54')],'sumHoldTime':_0x617ef8[_0xd8f5('0x55')]||0x0,'talking':_0x617ef8['talking'],'total':_0x617ef8[_0xd8f5('0x56')],'type':_0x617ef8[_0xd8f5('0x57')],'unmanaged':_0x617ef8[_0xd8f5('0x58')],'abandoned':_0x617ef8['abandoned'],'waiting':_0x617ef8['waiting']};if(_0x617ef8[_0xd8f5('0x59')]){_0x36d761[_0xd8f5('0x59')]={'id':_0x617ef8[_0xd8f5('0x59')]['id'],'name':_0x617ef8['Trunk']['name'],'active':_0x617ef8[_0xd8f5('0x59')]['active'],'callerid':_0x617ef8[_0xd8f5('0x59')][_0xd8f5('0x5a')]};}if(_0x617ef8['Interval']){_0x36d761[_0xd8f5('0x5b')]={'id':_0x617ef8[_0xd8f5('0x5b')]['id'],'name':_0x617ef8[_0xd8f5('0x5b')]['name']};}var _0xe492da=md5(JSON[_0xd8f5('0x5c')](_0x36d761));if(_0x617ef8[_0xd8f5('0x3')]!==_0xe492da){_0x617ef8['md5']=_0xe492da;logger[_0xd8f5('0x42')](_0xd8f5('0x5d')+_0x28fbff+_0xd8f5('0x5e'),util[_0xd8f5('0x39')](_0x36d761,{'showHidden':![],'depth':null}));this['emit'](util['format']('voice:queue:%s',_0x36d761[_0xd8f5('0x4d')]),_0xd8f5('0x5f'),_0x36d761);}}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x60')]=function(_0x15163a){return _0x15163a!==null&&!_['isUndefined'](_0x15163a);};VoiceQueueReport[_0xd8f5('0x9')]['loopQueueShow']=function(){var _0xbcbb02=this;setInterval(function(){_0xbcbb02[_0xd8f5('0x2c')]();ami[_0xd8f5('0x32')]({'action':'queues'})[_0xd8f5('0x61')](function(_0xf3633c){logger['error'](_0xd8f5('0x62'),util[_0xd8f5('0x39')](_0xf3633c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xd8f5('0x9')]['loopQueueSummary']=function(){var _0x31d7ef=this;setInterval(function(){if(_0x31d7ef[_0xd8f5('0xf')]){return ami[_0xd8f5('0x32')]({'action':_0xd8f5('0x63')})[_0xd8f5('0x64')](function(){_0x31d7ef['flagQueueSummary']=![];})[_0xd8f5('0x61')](function(_0x408d32){logger[_0xd8f5('0x37')](_0xd8f5('0x65'),util[_0xd8f5('0x39')](_0x408d32,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x12')]=function(_0x3628dc){try{if(this[_0xd8f5('0x60')](_0x3628dc)&&this[_0xd8f5('0x60')](_0x3628dc[_0xd8f5('0x66')])){logger[_0xd8f5('0x42')]('[voiceQueueReport][queuesummary]\x20event:',util[_0xd8f5('0x39')](_0x3628dc,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x3628dc[_0xd8f5('0x66')]]){logger[_0xd8f5('0x67')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x3628dc[_0xd8f5('0x66')]);var _0x2d825d=_['countBy'](this['channels'],_0xd8f5('0x66'))[_0x3628dc[_0xd8f5('0x66')]]||0x0;var _0x5e39cf=_0x2d825d-_0x3628dc[_0xd8f5('0x68')];if(this[_0xd8f5('0xe')][_0x3628dc['queue']][_0xd8f5('0x69')]!==_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x68')])||this['voiceQueues'][_0x3628dc['queue']][_0xd8f5('0x51')]!==_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x6b')])||this[_0xd8f5('0xe')][_0x3628dc['queue']]['available']!==_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x6c')])||this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6d')]!==_0x5e39cf){this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]]['waiting']=_[_0xd8f5('0x6a')](_0x3628dc['callers']);this[_0xd8f5('0xe')][_0x3628dc['queue']][_0xd8f5('0x51')]=_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x6b')]);this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6c')]=_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x6c')]);this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6d')]=_0x5e39cf>0x0?_0x5e39cf:0x0;this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6d')]=this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6d')]>_['toNumber'](_0x3628dc[_0xd8f5('0x6b')])?_[_0xd8f5('0x6a')](_0x3628dc[_0xd8f5('0x6b')]):this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]][_0xd8f5('0x6d')];this[_0xd8f5('0x6e')](this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]],_0xd8f5('0x63'));}logger['debug'](_0xd8f5('0x6f'),util[_0xd8f5('0x39')](this['voiceQueues'][_0x3628dc[_0xd8f5('0x66')]],{'showHidden':![],'depth':null}));ami[_0xd8f5('0x40')]('custom:queuesummary',this[_0xd8f5('0xe')][_0x3628dc[_0xd8f5('0x66')]]);}}}catch(_0x1e3f25){logger[_0xd8f5('0x37')]('[voiceQueueReport][queuesummary]',util[_0xd8f5('0x39')](_0x1e3f25,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x70')]=function(_0x3b85ce){logger[_0xd8f5('0x42')](_0xd8f5('0x71'),util['inspect'](_0x3b85ce,{'showHidden':![],'depth':null}));ami[_0xd8f5('0x40')](_0xd8f5('0x72'),{});this[_0xd8f5('0xf')]=!![];};VoiceQueueReport[_0xd8f5('0x9')]['syncQueueCallerJoin']=function(_0x56cbce){try{if(this[_0xd8f5('0x60')](_0x56cbce)){logger[_0xd8f5('0x42')]('[%s][voiceQueueReport][queuecallerjoin]',_0x56cbce[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x56cbce,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xd8f5('0xc')][_0x56cbce[_0xd8f5('0x45')]]))this[_0xd8f5('0xc')][_0x56cbce[_0xd8f5('0x45')]]=[];if(_[_0xd8f5('0x73')](this[_0xd8f5('0x2d')][_0x56cbce['uniqueid']]))this[_0xd8f5('0x2d')][_0x56cbce[_0xd8f5('0x45')]]={};var _0x2bed97=new QueueReport();_0x2bed97[_0xd8f5('0x4d')]=_0x56cbce[_0xd8f5('0x66')];_0x2bed97[_0xd8f5('0x57')]=this['voiceQueues'][_0x2bed97[_0xd8f5('0x4d')]]&&this[_0xd8f5('0xe')][_0x2bed97[_0xd8f5('0x4d')]][_0xd8f5('0x57')]?this[_0xd8f5('0xe')][_0x2bed97[_0xd8f5('0x4d')]][_0xd8f5('0x57')]||'inbound':_0xd8f5('0x74');_0x2bed97['queue']=_0x56cbce[_0xd8f5('0x66')];_0x2bed97[_0xd8f5('0x75')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x2bed97[_0xd8f5('0x77')]=_0x56cbce['position'];_0x2bed97[_0xd8f5('0x78')]=_0x56cbce[_0xd8f5('0x78')];_0x2bed97[_0xd8f5('0x45')]=_0x56cbce['uniqueid'];_0x2bed97[_0xd8f5('0x79')]=this['channels'][_0x56cbce[_0xd8f5('0x45')]][_0xd8f5('0x79')];logger['info'](_0xd8f5('0x7a'),_0x2bed97[_0xd8f5('0x4d')],_0x2bed97[_0xd8f5('0x57')]);_[_0xd8f5('0x7b')](_0x2bed97,_['pick'](_0x56cbce,_['keys'](_0x2bed97)));this['queueReports'][_0x56cbce['uniqueid']]['push'](_0x2bed97);this[_0xd8f5('0x2d')][_0x56cbce[_0xd8f5('0x45')]]=_0x2bed97;this[_0xd8f5('0x41')](_0x2bed97,_0xd8f5('0x7c'));}}catch(_0x5b0709){logger[_0xd8f5('0x37')]('[%s][voiceQueueReport][queuecallerjoin]',_0x56cbce['uniqueid'],util[_0xd8f5('0x39')](_0x5b0709,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x17')]=function(_0x3f28ad){try{if(this[_0xd8f5('0x60')](_0x3f28ad)){logger[_0xd8f5('0x42')](_0xd8f5('0x7d'),_0x3f28ad[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x3f28ad,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3f28ad[_0xd8f5('0x45')]]){var _0x264cbd=_[_0xd8f5('0x7e')](this[_0xd8f5('0xc')][_0x3f28ad[_0xd8f5('0x45')]]);_0x264cbd['queuecallercomplete']=![];_0x264cbd[_0xd8f5('0x7f')]=null;_0x264cbd[_0xd8f5('0x80')]=_0x3f28ad[_0xd8f5('0x80')];_0x264cbd[_0xd8f5('0x81')]=_0x3f28ad[_0xd8f5('0x81')];_0x264cbd[_0xd8f5('0x16')]=!![];_0x264cbd['queuecallerabandonAt']=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x264cbd[_0xd8f5('0x4b')]=_0xd8f5('0x82');_0x264cbd['lastAssignedTo']=null;logger[_0xd8f5('0x67')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x264cbd['name'],_0x264cbd[_0xd8f5('0x57')]);this[_0xd8f5('0x2d')][_0x3f28ad['uniqueid']]=_0x264cbd;this[_0xd8f5('0x3e')](_0x264cbd,'queuecallerabandon');}}}catch(_0x4c02ec){logger[_0xd8f5('0x37')](_0xd8f5('0x7d'),_0x3f28ad[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x4c02ec,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncQueueCallerLeave']=function(_0x2dc193){try{if(this[_0xd8f5('0x60')](_0x2dc193)){logger[_0xd8f5('0x42')]('[%s][voiceQueueReport][queuecallerleave]',_0x2dc193[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x2dc193,{'showHidden':![],'depth':null}));if(this[_0xd8f5('0xc')][_0x2dc193['uniqueid']]){var _0x4110de=_['last'](this[_0xd8f5('0xc')][_0x2dc193[_0xd8f5('0x45')]]);_0x4110de[_0xd8f5('0x83')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x4110de[_0xd8f5('0x84')]=_0x2dc193[_0xd8f5('0x84')];_0x4110de[_0xd8f5('0x85')]=_0x2dc193[_0xd8f5('0x85')];logger[_0xd8f5('0x67')](_0xd8f5('0x86'),_0x4110de[_0xd8f5('0x4d')],_0x4110de[_0xd8f5('0x57')],_0x2dc193[_0xd8f5('0x84')],_0x2dc193['connectedlinename']);this[_0xd8f5('0x2d')][_0x2dc193['uniqueid']]=_0x4110de;this[_0xd8f5('0x41')](_0x4110de,_0xd8f5('0x87'));}}}catch(_0x4d9fb1){logger[_0xd8f5('0x37')](_0xd8f5('0x88'),_0x2dc193['uniqueid'],util['inspect'](_0x4d9fb1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncAgentConnect']=function(_0x5dd683){try{if(this[_0xd8f5('0x60')](_0x5dd683)){logger[_0xd8f5('0x42')](_0xd8f5('0x89'),_0x5dd683[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x5dd683,{'showHidden':![],'depth':null}));if(this[_0xd8f5('0xc')][_0x5dd683['uniqueid']]){var _0x2fe70d=_[_0xd8f5('0x7e')](this[_0xd8f5('0xc')][_0x5dd683[_0xd8f5('0x45')]]);_0x2fe70d[_0xd8f5('0x8a')]=!![];_0x2fe70d[_0xd8f5('0x4b')]=_0xd8f5('0x8b');logger['info'](_0xd8f5('0x8c'),_0x2fe70d['name'],_0x2fe70d[_0xd8f5('0x57')]);}}}catch(_0x39fbf7){logger[_0xd8f5('0x37')](_0xd8f5('0x89'),_0x5dd683[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x39fbf7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0x1a')]=function(_0x57968b){try{if(this[_0xd8f5('0x60')](_0x57968b)){logger['debug'](_0xd8f5('0x8d'),_0x57968b[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x57968b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x57968b['uniqueid']]){var _0x13e169=_['last'](this[_0xd8f5('0xc')][_0x57968b[_0xd8f5('0x45')]]);_0x13e169['queuecallerabandon']=![];_0x13e169[_0xd8f5('0x8e')]=null;_0x13e169[_0xd8f5('0x8f')]=!![];_0x13e169[_0xd8f5('0x90')]=_0x57968b['membername'];_0x13e169[_0xd8f5('0x80')]=_0x57968b[_0xd8f5('0x80')];_0x13e169[_0xd8f5('0x8a')]=!![];_0x13e169[_0xd8f5('0x91')]=![];_0x13e169[_0xd8f5('0x92')]=null;if(!_0x13e169[_0xd8f5('0x93')]){if(_0x57968b['reason']==_0xd8f5('0x93')){_0x13e169[_0xd8f5('0x4b')]='COMPLETED';logger[_0xd8f5('0x67')](_0xd8f5('0x94'),_0x13e169[_0xd8f5('0x4d')],_0x13e169['type']);}else{if(_[_0xd8f5('0x95')](_0x57968b[_0xd8f5('0x34')][_0xd8f5('0x96')](),_0xd8f5('0x97'))){if(this['queueReports'][_0x57968b[_0xd8f5('0x98')]]){var _0x5761d4=_['last'](this['queueReports'][_0x57968b['linkedid']]);_0x5761d4['queuecallercomplete']=![];_0x5761d4['queuecallerexit']=!![];_0x5761d4[_0xd8f5('0x92')]=moment(_0x13e169[_0xd8f5('0x75')])[_0xd8f5('0x99')](_0x57968b[_0xd8f5('0x80')],'seconds')[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x5761d4[_0xd8f5('0x4b')]='FORWARDTRANSFER';_0x5761d4['transfer']=!![];_0x5761d4[_0xd8f5('0x9a')]=_0xd8f5('0x9b');_0x5761d4[_0xd8f5('0x9c')]=_0x57968b[_0xd8f5('0x9d')];_0x5761d4[_0xd8f5('0x9e')]=_0x57968b['uniqueid'];logger[_0xd8f5('0x67')](_0xd8f5('0x9f'),_0x5761d4[_0xd8f5('0x4d')],_0x5761d4[_0xd8f5('0x57')]);var _0x557ac7=this[_0xd8f5('0xc')][_0x57968b['linkedid']];this[_0xd8f5('0xc')][_0x57968b[_0xd8f5('0x98')]]=this['queueReports'][_0x57968b['uniqueid']];this[_0xd8f5('0xc')][_0x57968b[_0xd8f5('0x45')]]=_0x557ac7;}}else{_0x13e169[_0xd8f5('0x4b')]='COMPLETEDBY'+_0x57968b[_0xd8f5('0xa0')][_0xd8f5('0xa1')]();logger[_0xd8f5('0x67')](_0xd8f5('0xa2'),_0x13e169['name'],_0x13e169[_0xd8f5('0x57')],_0x13e169[_0xd8f5('0x4b')]);}}}this['channels'][_0x57968b[_0xd8f5('0x45')]]=_0x13e169;}}}catch(_0x39bdb4){logger[_0xd8f5('0x37')]('[%s][voiceQueueReport][agentcomplete]',_0x57968b['uniqueid'],util[_0xd8f5('0x39')](_0x39bdb4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncVarSet']=function(_0x4491ee){try{if(this['isNotNull'](_0x4491ee)){logger[_0xd8f5('0x42')]('[%s][voiceQueueReport][varset]',_0x4491ee['uniqueid'],util[_0xd8f5('0x39')](_0x4491ee,{'showHidden':![],'depth':null}));this[_0xd8f5('0xa3')](_0x4491ee['uniqueid'],_[_0xd8f5('0xa4')](_0x4491ee[_0xd8f5('0xa5')])[0x0],_0x4491ee[_0xd8f5('0xa6')]);if(this['queueReports'][_0x4491ee[_0xd8f5('0x45')]]){var _0x68953f=_['last'](this['queueReports'][_0x4491ee[_0xd8f5('0x45')]]);if(_0x68953f){if(this['isNotNull'](_0x4491ee['variable'])&&this[_0xd8f5('0x60')](_0x4491ee['variable'][_0xd8f5('0xa7')])){switch(_0x4491ee['value']){case _0xd8f5('0xa8'):_0x68953f[_0xd8f5('0x91')]=![];_0x68953f[_0xd8f5('0x92')]=null;break;case _0xd8f5('0xa9'):_0x68953f['lastevent']=_0xd8f5('0xaa');_0x68953f['queuecallerexit']=!![];_0x68953f[_0xd8f5('0x92')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x68953f[_0xd8f5('0x83')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));logger['debug']('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x4491ee[_0xd8f5('0x45')],util['inspect'](_0x68953f,{'showHidden':![],'depth':null}));ami[_0xd8f5('0x40')](_0xd8f5('0xab'),_0x68953f);break;default:_0x68953f[_0xd8f5('0x91')]=!![];_0x68953f[_0xd8f5('0x92')]=moment()[_0xd8f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x68953f[_0xd8f5('0x83')]=moment()['format'](_0xd8f5('0x76'));}_0x68953f['queuecallerabandon']=![];_0x68953f[_0xd8f5('0x8e')]=null;_0x68953f[_0xd8f5('0x4b')]=_0x4491ee[_0xd8f5('0xa6')];this['channels'][_0x4491ee['uniqueid']]=_0x68953f;this[_0xd8f5('0x3e')](_0x68953f,_0xd8f5('0x1d'));}else if(this['isNotNull'](_0x4491ee[_0xd8f5('0xa5')])&&this['isNotNull'](_0x4491ee[_0xd8f5('0xa5')][_0xd8f5('0xac')])){if(!_0x68953f['queuecallerabandon']){_0x68953f[_0xd8f5('0x91')]=!![];_0x68953f[_0xd8f5('0x92')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));_0x68953f[_0xd8f5('0x4b')]=_0xd8f5('0xad');_0x68953f[_0xd8f5('0x83')]=moment()[_0xd8f5('0x46')](_0xd8f5('0x76'));this[_0xd8f5('0x2d')][_0x4491ee[_0xd8f5('0x45')]]=_0x68953f;}}logger[_0xd8f5('0x67')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x4491ee[_0xd8f5('0x45')],_0x68953f[_0xd8f5('0x4d')],_0x68953f[_0xd8f5('0x57')],_['keys'](_0x4491ee[_0xd8f5('0xa5')])[0x0],_0x4491ee[_0xd8f5('0xa6')]);_0x68953f[_0xd8f5('0x11')]=this[_0xd8f5('0x11')][_0x4491ee[_0xd8f5('0x45')]];}}}}catch(_0xa6af7d){logger[_0xd8f5('0x37')](_0xd8f5('0xae'),_0x4491ee[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0xa6af7d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0xa3')]=function(_0x369ea0,_0xcdddba,_0x417afd){var _0x3984f1=[_0xd8f5('0xaf'),_0xd8f5('0xb0'),'rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss',_0xd8f5('0xb1'),'rtpaudioqosrtt',_0xd8f5('0xb2'),_0xd8f5('0xb3'),_0xd8f5('0xb4'),_0xd8f5('0xb5'),_0xd8f5('0xb6'),'membercalls',_0xd8f5('0xb7'),_0xd8f5('0xb8'),_0xd8f5('0xb9'),_0xd8f5('0xba'),_0xd8f5('0xbb'),'memberrealtime'];if(!_[_0xd8f5('0x31')](_0xcdddba)&&!_[_0xd8f5('0xbc')](_0x3984f1,_0xcdddba)){if(_['isUndefined'](this['variables'][_0x369ea0])){this[_0xd8f5('0x11')][_0x369ea0]={};}this['variables'][_0x369ea0][_0xcdddba]=_0x417afd;}};VoiceQueueReport[_0xd8f5('0x9')][_0xd8f5('0xbd')]=function(_0x15b7cd,_0x4abbce,_0x2ee642){var _0x48e8a0={};for(var _0x3423bc=0x0;_0x3423bc<this['queueReports'][_0x15b7cd][_0xd8f5('0xbe')];_0x3423bc+=0x1){_0x48e8a0=this[_0xd8f5('0xc')][_0x15b7cd][_0x3423bc];if(this[_0xd8f5('0xe')][_0x48e8a0[_0xd8f5('0x66')]]){if(_0x48e8a0[_0xd8f5('0x91')]&&_0x48e8a0[_0xd8f5('0x93')]!=!![]){this[_0xd8f5('0xe')][_0x48e8a0[_0xd8f5('0x66')]]['unmanaged']+=0x1;}if(_0x48e8a0[_0xd8f5('0x16')]){this[_0xd8f5('0xe')][_0x48e8a0[_0xd8f5('0x66')]][_0xd8f5('0xbf')]+=0x1;}this[_0xd8f5('0xe')][_0x48e8a0['queue']]['sumHoldTime']+=moment(_0x48e8a0[_0xd8f5('0x83')])[_0xd8f5('0xc0')](_0x48e8a0[_0xd8f5('0x75')],_0xd8f5('0xc1'))||0x0;if(_0x3423bc===this['queueReports'][_0x15b7cd][_0xd8f5('0xbe')]-0x1){this['voiceQueues'][_0x48e8a0[_0xd8f5('0x66')]]['sumDuration']+=moment()[_0xd8f5('0xc2')](0x0)['diff'](_0x48e8a0[_0xd8f5('0x75')],_0xd8f5('0xc1'));this['voiceQueues'][_0x48e8a0['queue']][_0xd8f5('0x56')]+=0x1;if(_0x48e8a0[_0xd8f5('0x8a')]){this['voiceQueues'][_0x48e8a0['queue']]['answered']+=0x1;this[_0xd8f5('0xe')][_0x48e8a0['queue']][_0xd8f5('0x53')]+=moment()[_0xd8f5('0xc2')](0x0)[_0xd8f5('0xc0')](_0x48e8a0[_0xd8f5('0x83')],_0xd8f5('0xc1'));_0x48e8a0[_0xd8f5('0x7f')]=moment()['format'](_0xd8f5('0x76'));_0x48e8a0[_0xd8f5('0x91')]=![];_0x48e8a0['queuecallerexitAt']=null;}if(_0x48e8a0['queuecallerexit']&&_0x48e8a0[_0xd8f5('0x93')]!=!![]){_0x48e8a0[_0xd8f5('0xc3')]='unmanaged';logger['debug'](_0xd8f5('0xc4'),_0x15b7cd,util[_0xd8f5('0x39')](_0x48e8a0,{'showHidden':![],'depth':null}));ami[_0xd8f5('0x40')](_0xd8f5('0xc5'),_0x48e8a0);}if(_0x48e8a0[_0xd8f5('0x16')]){_0x48e8a0[_0xd8f5('0xc3')]='abandoned';logger[_0xd8f5('0x42')](_0xd8f5('0xc6'),_0x15b7cd,util[_0xd8f5('0x39')](_0x48e8a0,{'showHidden':![],'depth':null}));ami[_0xd8f5('0x40')](_0xd8f5('0xc7'),_0x48e8a0);}}else{this[_0xd8f5('0xe')][_0x48e8a0[_0xd8f5('0x66')]][_0xd8f5('0x54')]+=this['voiceQueues'][_0x48e8a0[_0xd8f5('0x66')]]['sumHoldTime'];}logger[_0xd8f5('0x67')](_0xd8f5('0xc8'),_0x15b7cd,_0x48e8a0[_0xd8f5('0x4d')],_0x48e8a0[_0xd8f5('0x57')],_0x4abbce);if(_0x2ee642&&_0x48e8a0[_0xd8f5('0x4b')]===_0xd8f5('0x4c')){_0x48e8a0[_0xd8f5('0x4b')]=_0xd8f5('0x8b');}this[_0xd8f5('0x2d')][_0x15b7cd]=_0x48e8a0;if(_0x48e8a0[_0xd8f5('0x83')]){this[_0xd8f5('0x3e')](_0x48e8a0,_0xd8f5('0x1e'));}this[_0xd8f5('0x6e')](this[_0xd8f5('0xe')][_0x48e8a0[_0xd8f5('0x66')]],_0xd8f5('0x1e'));}}logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x15b7cd,util[_0xd8f5('0x39')](this[_0xd8f5('0xc')][_0x15b7cd],{'showHidden':![],'depth':null}));ami['emit'](_0xd8f5('0xc9'),this[_0xd8f5('0xc')][_0x15b7cd]);if(_0x48e8a0[_0xd8f5('0x4b')]===_0xd8f5('0x4c')||_0x48e8a0['queuecallerleaveAt']===null){return;}delete this['queueReports'][_0x15b7cd];delete this['channels'][_0x15b7cd];if(this[_0xd8f5('0x11')][_0x15b7cd]){delete this[_0xd8f5('0x11')][_0x15b7cd];}};VoiceQueueReport[_0xd8f5('0x9')]['syncHangup']=function(_0x33ddc9){try{if(this['isNotNull'](_0x33ddc9)){logger[_0xd8f5('0x42')](_0xd8f5('0xca'),_0x33ddc9[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x33ddc9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x33ddc9[_0xd8f5('0x45')]]){return this['handleHangup'](_0x33ddc9[_0xd8f5('0x45')],_0x33ddc9[_0xd8f5('0xcb')]);}if(this[_0xd8f5('0xc')][_0x33ddc9[_0xd8f5('0x98')]]){if(_0x33ddc9[_0xd8f5('0xcc')]==='21'){return;}return this[_0xd8f5('0xbd')](_0x33ddc9[_0xd8f5('0x98')],_0x33ddc9[_0xd8f5('0xcb')],!![]);}var _0x1622b1=Object[_0xd8f5('0xa4')](this[_0xd8f5('0xc')]);for(var _0x9cc399=0x0;_0x9cc399<_0x1622b1[_0xd8f5('0xbe')];_0x9cc399++){var _0x592983=_[_0xd8f5('0x7e')](this['queueReports'][_0x1622b1[_0x9cc399]]);if(_0x592983&&_0x592983[_0xd8f5('0xcd')]===_0x33ddc9[_0xd8f5('0x45')]){return this[_0xd8f5('0xbd')](_0x592983[_0xd8f5('0x45')],_0x33ddc9[_0xd8f5('0xcb')],!![]);}}}}catch(_0x3330b9){logger[_0xd8f5('0x37')]('[%s][voiceQueueReport][hangup]',_0x33ddc9[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x3330b9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncAttendedTransfer']=function(_0x1afbb1){try{if(this[_0xd8f5('0x60')](_0x1afbb1)){logger[_0xd8f5('0x42')](_0xd8f5('0xce'),_0x1afbb1[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x1afbb1,{'showHidden':![],'depth':null}));var _0x22839d;var _0x21dad9;var _0x567b9e;if(this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xcf')]]){_0x22839d=_[_0xd8f5('0x7e')](this['queueReports'][_0x1afbb1[_0xd8f5('0xcf')]]);_0x22839d[_0xd8f5('0x9c')]=_0x1afbb1[_0xd8f5('0xd0')];_0x22839d[_0xd8f5('0x9e')]=_0x1afbb1[_0xd8f5('0xd1')];_0x22839d[_0xd8f5('0x4b')]=_0xd8f5('0x4c');_0x22839d[_0xd8f5('0x93')]=!![];_0x22839d[_0xd8f5('0x9a')]=_0xd8f5('0xd2');if(this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd1')]]){_0x567b9e=this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd1')]];this[_0xd8f5('0xc')][_0x1afbb1['secondtransfereruniqueid']]=this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xcf')]];this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xcf')]]=_0x567b9e;_0x21dad9=_['last'](this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xcf')]]);_0x21dad9[_0xd8f5('0x2e')]=!![];}logger[_0xd8f5('0x67')](_0xd8f5('0xd3'),_0x1afbb1[_0xd8f5('0x45')],_0x22839d[_0xd8f5('0x4d')],_0x22839d[_0xd8f5('0x57')],_0x22839d[_0xd8f5('0x9c')],_0x22839d['transferuniqueid']);}else if(this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd4')]]){_0x22839d=_[_0xd8f5('0x7e')](this['queueReports'][_0x1afbb1[_0xd8f5('0xd4')]]);_0x22839d[_0xd8f5('0x9c')]=_0x1afbb1[_0xd8f5('0xd5')];_0x22839d[_0xd8f5('0x9e')]=_0x1afbb1['origtransfereruniqueid'];_0x22839d[_0xd8f5('0x4b')]=_0xd8f5('0x4c');_0x22839d[_0xd8f5('0x93')]=!![];_0x22839d[_0xd8f5('0x9a')]='ATTENDED';if(this[_0xd8f5('0xc')][_0x1afbb1['origtransfereruniqueid']]){_0x567b9e=this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd6')]];this['queueReports'][_0x1afbb1[_0xd8f5('0xd6')]]=this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd4')]];this[_0xd8f5('0xc')][_0x1afbb1['transfertargetuniqueid']]=_0x567b9e;_0x21dad9=_['last'](this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd4')]]);_0x21dad9[_0xd8f5('0x2e')]=!![];}logger['info'](_0xd8f5('0xd3'),_0x1afbb1[_0xd8f5('0x45')],_0x22839d[_0xd8f5('0x4d')],_0x22839d[_0xd8f5('0x57')],_0x22839d[_0xd8f5('0x9c')],_0x22839d['transferuniqueid']);}else if(this[_0xd8f5('0xc')][_0x1afbb1['origtransfereruniqueid']]){_0x22839d=_[_0xd8f5('0x7e')](this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd6')]]);_0x22839d[_0xd8f5('0x9c')]=_0x1afbb1[_0xd8f5('0xd5')];_0x22839d[_0xd8f5('0x9e')]=_0x1afbb1[_0xd8f5('0xd6')];_0x22839d[_0xd8f5('0x4b')]=_0xd8f5('0x4c');_0x22839d[_0xd8f5('0x93')]=!![];_0x22839d[_0xd8f5('0x9a')]=_0xd8f5('0xd2');_0x22839d[_0xd8f5('0x2e')]=!![];_0x22839d[_0xd8f5('0xcd')]=_0x1afbb1[_0xd8f5('0xcf')];}else if(this[_0xd8f5('0xc')][_0x1afbb1[_0xd8f5('0xd1')]]){_0x22839d=_[_0xd8f5('0x7e')](this['queueReports'][_0x1afbb1[_0xd8f5('0xd1')]]);_0x22839d[_0xd8f5('0x9c')]=_0x1afbb1[_0xd8f5('0xd0')];_0x22839d['transferuniqueid']=_0x1afbb1[_0xd8f5('0xd1')];_0x22839d[_0xd8f5('0x4b')]=_0xd8f5('0x4c');_0x22839d['transfer']=!![];_0x22839d['transfertype']=_0xd8f5('0xd2');_0x22839d[_0xd8f5('0x2e')]=!![];_0x22839d[_0xd8f5('0xcd')]=_0x1afbb1['transfertargetuniqueid'];}}}catch(_0x5cc910){logger[_0xd8f5('0x37')](_0xd8f5('0xce'),_0x1afbb1[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x5cc910,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncBlindTransfer']=function(_0x348e6a){try{if(this[_0xd8f5('0x60')](_0x348e6a)){logger[_0xd8f5('0x42')]('[%s][voiceQueueReport][blindtransfer]',_0x348e6a[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x348e6a,{'showHidden':![],'depth':null}));if(this[_0xd8f5('0xc')][_0x348e6a[_0xd8f5('0xcf')]]){var _0x26ef0b=_['last'](this['queueReports'][_0x348e6a[_0xd8f5('0xcf')]]);_0x26ef0b[_0xd8f5('0x4b')]=_0xd8f5('0xd7');_0x26ef0b[_0xd8f5('0x93')]=!![];_0x26ef0b[_0xd8f5('0x9a')]='BLIND';_0x26ef0b['transferexten']=_0x348e6a[_0xd8f5('0xd8')];_0x26ef0b[_0xd8f5('0x9e')]=_0x348e6a[_0xd8f5('0xcf')];logger[_0xd8f5('0x67')](_0xd8f5('0xd9'),_0x348e6a[_0xd8f5('0x45')],_0x26ef0b[_0xd8f5('0x4d')],_0x26ef0b['type'],_0x26ef0b[_0xd8f5('0x9c')],_0x26ef0b[_0xd8f5('0x9e')]);this[_0xd8f5('0xda')]({'event':_0xd8f5('0xdb'),'uniqueid':_0x348e6a['transfereeuniqueid'],'context':_0x348e6a['context'],'channel':_0x348e6a[_0xd8f5('0xdc')]});}}}catch(_0x189417){logger[_0xd8f5('0x37')](_0xd8f5('0xdd'),_0x348e6a[_0xd8f5('0x45')],util['inspect'](_0x189417,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd8f5('0x9')]['syncMusicOnHoldStart']=function(_0x5e9499){try{if(this[_0xd8f5('0x60')](_0x5e9499)){logger['debug']('[%s][voiceQueueReport][musiconholdstart]',_0x5e9499[_0xd8f5('0x45')],util['inspect'](_0x5e9499,{'showHidden':![],'depth':null}));if(this[_0xd8f5('0xc')][_0x5e9499[_0xd8f5('0x45')]]){var _0x3dbaae=_[_0xd8f5('0x7e')](this[_0xd8f5('0xc')][_0x5e9499['uniqueid']]);if(!_[_0xd8f5('0x31')](_0x3dbaae[_0xd8f5('0x83')])){_0x3dbaae[_0xd8f5('0xde')]=moment()[_0xd8f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xd8f5('0x67')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x5e9499[_0xd8f5('0x45')],_0x3dbaae[_0xd8f5('0xde')]);}}}}catch(_0x125c3a){logger[_0xd8f5('0x37')](_0xd8f5('0xdf'),_0x5e9499[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x125c3a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x3dc4c2){try{if(this[_0xd8f5('0x60')](_0x3dc4c2)){logger['debug'](_0xd8f5('0xe0'),_0x3dc4c2[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x3dc4c2,{'showHidden':![],'depth':null}));if(this[_0xd8f5('0xc')][_0x3dc4c2['uniqueid']]){var _0x13d668=_[_0xd8f5('0x7e')](this['queueReports'][_0x3dc4c2[_0xd8f5('0x45')]]);if(!_[_0xd8f5('0x31')](_0x13d668[_0xd8f5('0xde')])){_0x13d668[_0xd8f5('0xe1')]+=moment()['milliseconds'](0x0)['diff'](_0x13d668[_0xd8f5('0xde')],_0xd8f5('0xc1'));logger[_0xd8f5('0x67')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x3dc4c2[_0xd8f5('0x45')],_0x13d668[_0xd8f5('0xe1')]);delete _0x13d668['mohstarttime'];}}}}catch(_0x44c5a9){logger[_0xd8f5('0x37')]('[%s][voiceQueueReport][musiconholdstop]',_0x3dc4c2[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x44c5a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd8f5('0xe2')]=function(_0x51184e){try{if(this['isNotNull'](_0x51184e)){logger[_0xd8f5('0x42')](_0xd8f5('0xe3'),_0x51184e[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x51184e,{'showHidden':![],'depth':null}));if(_0x51184e[_0xd8f5('0xe4')]['toLowerCase']()==='set'){_0x51184e[_0xd8f5('0xe5')]=_0x51184e[_0xd8f5('0xe6')]&&_0x51184e[_0xd8f5('0xe6')][_0xd8f5('0x95')](_0xd8f5('0xe7'))?_0x51184e['appdata']:(_0x51184e[_0xd8f5('0xe6')]||_0x51184e[_0xd8f5('0xe5')])[_0xd8f5('0x96')]();if(_[_0xd8f5('0x95')](_0x51184e[_0xd8f5('0xe5')][_0xd8f5('0x96')](),_0xd8f5('0xe8'))){logger[_0xd8f5('0x67')](_0xd8f5('0xe9'),_0x51184e[_0xd8f5('0x45')],_0x51184e[_0xd8f5('0xe4')],_0x51184e[_0xd8f5('0xe5')]);if(_['isUndefined'](this['channels'][_0x51184e['uniqueid']]))this[_0xd8f5('0x2d')][_0x51184e[_0xd8f5('0x45')]]={};var _0x55fb79=_0x51184e['applicationdata']['split']('=');var _0x346830=_0x55fb79[0x0][_0xd8f5('0x96')]()[_0xd8f5('0xea')](/cdr\((.*)\)/);if(_0x346830)this['channels'][_0x51184e[_0xd8f5('0x45')]][_0x346830[0x1]]=_0x55fb79[0x1];}}}}catch(_0x50762a){logger[_0xd8f5('0x37')](_0xd8f5('0xeb'),_0x51184e[_0xd8f5('0x45')],util[_0xd8f5('0x39')](_0x50762a,{'showHidden':![],'depth':null}));}};module[_0xd8f5('0xec')]=VoiceQueueReport;
\ No newline at end of file
+var _0x57d1=['transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','toLowerCase','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','md5','../../../config/environment','../../../config/logger','ami','defaults','redis','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','switch','isNil','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','strategy','available','loggedIn','sumDuration','sumHoldTime','total','type','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','Action','queues','[voiceQueueReport][queues]','loopQueueSummary','queuesummary','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexit','queuecallerexitAt','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','seconds','FORWARD','transferexten','destexten','transferuniqueid','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','handleHangup','length','unmanaged','diff','answered','sumBillable','milliseconds','queuecallercompleteAt','transfer','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','ATTENDEDTRANSFER','hangup','syncHangup','cause-txt','transferid','[%s][voiceQueueReport][hangup]','transfereeuniqueid','secondtransfererexten','transfertype','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context'];(function(_0x59f5ea,_0x26ac13){var _0x5644c6=function(_0x5a4445){while(--_0x5a4445){_0x59f5ea['push'](_0x59f5ea['shift']());}};_0x5644c6(++_0x26ac13);}(_0x57d1,0x1ee));var _0x157d=function(_0x2704e5,_0x43c4e5){_0x2704e5=_0x2704e5-0x0;var _0x26adc9=_0x57d1[_0x2704e5];return _0x26adc9;};'use strict';var _=require(_0x157d('0x0'));var moment=require(_0x157d('0x1'));var util=require('util');var md5=require(_0x157d('0x2'));var Redis=require('ioredis');var config=require(_0x157d('0x3'));var logger=require(_0x157d('0x4'))(_0x157d('0x5'));var ami=require('../ami');var QueueReport=require('../model/queueReport');config['redis']=_[_0x157d('0x6')](config[_0x157d('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x157d('0x8'))(new Redis(config[_0x157d('0x7')]));var Sequence=function(){};Sequence[_0x157d('0x9')][_0x157d('0xa')]=function(_0x1e8fb8){this['tail']=this[_0x157d('0xb')]?this['tail'][_0x157d('0xc')](_0x1e8fb8):_0x1e8fb8();};function VoiceQueueReport(_0x478638){this[_0x157d('0xd')]=new Sequence();this[_0x157d('0xe')]={};this[_0x157d('0xf')]=_0x478638['agents'];this[_0x157d('0x10')]=_0x478638[_0x157d('0x11')];this['voiceQueues']=_0x478638[_0x157d('0x12')];this[_0x157d('0x13')]=!![];this[_0x157d('0x14')]=_0x478638[_0x157d('0x14')];this[_0x157d('0x15')]={};ami['on']('queuesummary',this[_0x157d('0x16')][_0x157d('0x17')](this));ami['on'](_0x157d('0x18'),this['syncQueueSummaryComplete'][_0x157d('0x17')](this));ami['on'](_0x157d('0x19'),this[_0x157d('0x1a')][_0x157d('0x17')](this));ami['on']('queuecallerabandon',this[_0x157d('0x1b')][_0x157d('0x17')](this));ami['on']('queuecallerleave',this[_0x157d('0x1c')][_0x157d('0x17')](this));ami['on'](_0x157d('0x1d'),this['syncAgentComplete'][_0x157d('0x17')](this));ami['on'](_0x157d('0x1e'),this[_0x157d('0x1f')][_0x157d('0x17')](this));ami['on'](_0x157d('0x20'),this['syncVarSet'][_0x157d('0x17')](this));ami['on']('hangup',this['syncHangup'][_0x157d('0x17')](this));ami['on'](_0x157d('0x21'),this['syncFullyBooted'][_0x157d('0x17')](this));ami['on'](_0x157d('0x22'),this[_0x157d('0x23')][_0x157d('0x17')](this));ami['on'](_0x157d('0x24'),this['syncMusicOnHoldStop'][_0x157d('0x17')](this));ami['on'](_0x157d('0x25'),this[_0x157d('0x26')][_0x157d('0x17')](this));ami['on'](_0x157d('0x27'),this[_0x157d('0x28')][_0x157d('0x17')](this));this['loopQueueSummary']();this[_0x157d('0x29')]();}function clearChannels(_0x8eb69d){if(!_[_0x157d('0x2a')](_0x8eb69d)){for(var _0xe4395b in _0x8eb69d){if(_0x8eb69d[_0x157d('0x2b')](_0xe4395b)){delete _0x8eb69d[_0xe4395b];}}}}function clearCampaigns(_0x472cdc){if(!_[_0x157d('0x2a')](_0x472cdc)){for(var _0x48ef32 in _0x472cdc){if(_0x472cdc[_0x157d('0x2b')](_0x48ef32)){_0x472cdc[_0x48ef32][_0x157d('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x519821){if(!_['isEmpty'](_0x519821)){for(var _0x215403 in _0x519821){if(_0x519821[_0x157d('0x2b')](_0x215403)){_0x519821[_0x215403]['originated']=0x0;_0x519821[_0x215403][_0x157d('0x2d')]=0x0;_0x519821[_0x215403][_0x157d('0x2e')]=0x0;_0x519821[_0x215403][_0x157d('0x2f')]=0x0;_0x519821[_0x215403]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x3ef649){if(!_[_0x157d('0x2a')](_0x3ef649)){for(var _0x45cb7e in _0x3ef649){if(_0x3ef649[_0x157d('0x2b')](_0x45cb7e)){_0x3ef649[_0x45cb7e][_0x157d('0x30')]=!![];}}}}VoiceQueueReport[_0x157d('0x9')][_0x157d('0x31')]=function(){var _0x5ed7be=this;for(var _0x2b1a7b in this['channels']){if(this[_0x157d('0x10')][_0x157d('0x2b')](_0x2b1a7b)&&!this[_0x157d('0x10')][_0x2b1a7b][_0x157d('0x32')]){this[_0x157d('0xd')][_0x157d('0xa')](function(){if(!_[_0x157d('0x33')](_0x5ed7be[_0x157d('0x10')][_0x2b1a7b])){return ami['Action']({'action':'status','channel':_0x5ed7be['channels'][_0x2b1a7b][_0x157d('0x34')]})[_0x157d('0x35')](function(_0xf21716){if(_0xf21716[_0x157d('0x36')]===_0x157d('0x37')){setTimeout(function(){if(_0x5ed7be[_0x157d('0x10')][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0x10')][_0x2b1a7b];logger[_0x157d('0x38')]('[%s][voiceQueueReport][checkChannel]',_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}if(_0x5ed7be['queueReports'][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0xe')][_0x2b1a7b];logger[_0x157d('0x38')]('[%s][voiceQueueReport][checkQueueReport]',_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}if(_0x5ed7be['variables'][_0x2b1a7b]){delete _0x5ed7be[_0x157d('0x15')][_0x2b1a7b];logger[_0x157d('0x38')](_0x157d('0x3a'),_0x2b1a7b,util[_0x157d('0x39')](_0xf21716,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x157d('0x3b')]=function(){logger[_0x157d('0x38')](_0x157d('0x3c'));clearChannels(this[_0x157d('0x10')]);this[_0x157d('0x3d')](this['queueReports']);clearAgentBooked(this[_0x157d('0xf')]);clearVoiceQueues(this[_0x157d('0x12')]);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x3d')]=function(_0xda4806){var _0x18c6b3=this;if(!_[_0x157d('0x2a')](_0xda4806)){for(var _0x203292 in _0xda4806){if(_0xda4806[_0x157d('0x2b')](_0x203292)){_0x18c6b3[_0x157d('0x3e')](_0xda4806[_0x203292],_0x157d('0x3f'));delete _0xda4806[_0x203292];}}}};VoiceQueueReport[_0x157d('0x9')]['emit']=function(_0x58738f,_0x23aa28,_0x50a714){io['to'](_0x58738f)[_0x157d('0x40')](_0x23aa28,_0x50a714);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x41')]=function(_0x460863,_0x193631){logger[_0x157d('0x42')](_0x157d('0x43')+_0x193631+_0x157d('0x44'),_0x460863[_0x157d('0x45')],util[_0x157d('0x39')](_0x460863,{'showHidden':![],'depth':null}));this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x460863[_0x157d('0x48')]),_0x157d('0x49'),_0x460863);io['emit'](_0x157d('0x4a'),_0x460863);};VoiceQueueReport['prototype'][_0x157d('0x3e')]=function(_0x2e9d4b,_0x259460){logger[_0x157d('0x42')](_0x157d('0x43')+_0x259460+_0x157d('0x4b'),_0x2e9d4b['uniqueid'],util['inspect'](_0x2e9d4b,{'showHidden':![],'depth':null}));if(_0x2e9d4b['queuecallerexitreason']==='ATTENDEDTRANSFER')return;this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x2e9d4b['name']),'voice_queue_channel:remove',_0x2e9d4b);io['emit'](_0x157d('0x4c'),_0x2e9d4b);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x4d')]=function(_0x2a7897,_0x1291c2){if(_0x2a7897['type']===_0x157d('0x4e')){var _0x6c13aa={'id':_0x2a7897['id'],'name':_0x2a7897[_0x157d('0x48')],'strategy':_0x2a7897[_0x157d('0x4f')],'answered':_0x2a7897['answered'],'available':_0x2a7897[_0x157d('0x50')],'loggedIn':_0x2a7897[_0x157d('0x51')],'pTalking':_0x2a7897[_0x157d('0x2e')],'sumBillable':_0x2a7897['sumBillable'],'sumDuration':_0x2a7897[_0x157d('0x52')],'sumHoldTime':_0x2a7897[_0x157d('0x53')]||0x0,'talking':_0x2a7897[_0x157d('0x2d')],'total':_0x2a7897[_0x157d('0x54')],'type':_0x2a7897[_0x157d('0x55')],'unmanaged':_0x2a7897['unmanaged'],'abandoned':_0x2a7897[_0x157d('0x56')],'waiting':_0x2a7897['waiting']};if(_0x2a7897[_0x157d('0x57')]){_0x6c13aa[_0x157d('0x57')]={'id':_0x2a7897[_0x157d('0x57')]['id'],'name':_0x2a7897[_0x157d('0x57')][_0x157d('0x48')],'active':_0x2a7897[_0x157d('0x57')][_0x157d('0x58')],'callerid':_0x2a7897[_0x157d('0x57')][_0x157d('0x59')]};}if(_0x2a7897[_0x157d('0x5a')]){_0x6c13aa['Interval']={'id':_0x2a7897[_0x157d('0x5a')]['id'],'name':_0x2a7897[_0x157d('0x5a')][_0x157d('0x48')]};}var _0xe65597=md5(JSON[_0x157d('0x5b')](_0x6c13aa));if(_0x2a7897['md5']!==_0xe65597){_0x2a7897[_0x157d('0x2')]=_0xe65597;logger['debug'](_0x157d('0x5c')+_0x1291c2+']\x20sending\x20voice_queue:save\x20event:',util[_0x157d('0x39')](_0x6c13aa,{'showHidden':![],'depth':null}));this[_0x157d('0x40')](util[_0x157d('0x46')](_0x157d('0x47'),_0x6c13aa['name']),_0x157d('0x5d'),_0x6c13aa);}}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x5e')]=function(_0x58085c){return _0x58085c!==null&&!_[_0x157d('0x5f')](_0x58085c);};VoiceQueueReport['prototype'][_0x157d('0x29')]=function(){var _0xbc7ee6=this;setInterval(function(){_0xbc7ee6[_0x157d('0x31')]();ami[_0x157d('0x60')]({'action':_0x157d('0x61')})[_0x157d('0x35')](function(_0x28940d){logger['error'](_0x157d('0x62'),util[_0x157d('0x39')](_0x28940d,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x157d('0x63')]=function(){var _0x2a7c4c=this;setInterval(function(){if(_0x2a7c4c[_0x157d('0x13')]){return ami[_0x157d('0x60')]({'action':_0x157d('0x64')})[_0x157d('0x65')](function(){_0x2a7c4c[_0x157d('0x13')]=![];})[_0x157d('0x35')](function(_0x4e9054){logger[_0x157d('0x38')](_0x157d('0x66'),util[_0x157d('0x39')](_0x4e9054,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x16')]=function(_0x2f1857){try{if(this['isNotNull'](_0x2f1857)&&this[_0x157d('0x5e')](_0x2f1857[_0x157d('0x67')])){logger['debug'](_0x157d('0x68'),util[_0x157d('0x39')](_0x2f1857,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]){logger[_0x157d('0x69')](_0x157d('0x6a'),_0x2f1857[_0x157d('0x67')]);var _0x3183df=_[_0x157d('0x6b')](this[_0x157d('0x10')],_0x157d('0x67'))[_0x2f1857[_0x157d('0x67')]]||0x0;var _0xdfd5ac=_0x3183df-_0x2f1857[_0x157d('0x6c')];if(this['voiceQueues'][_0x2f1857[_0x157d('0x67')]][_0x157d('0x2f')]!==_['toNumber'](_0x2f1857[_0x157d('0x6c')])||this['voiceQueues'][_0x2f1857['queue']][_0x157d('0x51')]!==_[_0x157d('0x6d')](_0x2f1857['loggedin'])||this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x50')]!==_[_0x157d('0x6d')](_0x2f1857['available'])||this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]['talking']!==_0xdfd5ac){this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x2f')]=_[_0x157d('0x6d')](_0x2f1857[_0x157d('0x6c')]);this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x51')]=_[_0x157d('0x6d')](_0x2f1857['loggedin']);this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]][_0x157d('0x50')]=_[_0x157d('0x6d')](_0x2f1857[_0x157d('0x50')]);this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')]=_0xdfd5ac>0x0?_0xdfd5ac:0x0;this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]['talking']=this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')]>_[_0x157d('0x6d')](_0x2f1857['loggedin'])?_[_0x157d('0x6d')](_0x2f1857['loggedin']):this[_0x157d('0x12')][_0x2f1857['queue']][_0x157d('0x2d')];this['emitVoiceQueueSummary'](this[_0x157d('0x12')][_0x2f1857[_0x157d('0x67')]],'queuesummary');}logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util['inspect'](this[_0x157d('0x12')][_0x2f1857['queue']],{'showHidden':![],'depth':null}));ami['emit'](_0x157d('0x6e'),this['voiceQueues'][_0x2f1857[_0x157d('0x67')]]);}}}catch(_0xce1269){logger[_0x157d('0x38')](_0x157d('0x66'),util[_0x157d('0x39')](_0xce1269,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x6f')]=function(_0x36881e){logger[_0x157d('0x42')](_0x157d('0x70'),util[_0x157d('0x39')](_0x36881e,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:queuesummarycomplete',{});this[_0x157d('0x13')]=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x518a6b){try{if(this['isNotNull'](_0x518a6b)){logger[_0x157d('0x42')](_0x157d('0x71'),_0x518a6b[_0x157d('0x45')],util[_0x157d('0x39')](_0x518a6b,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x518a6b[_0x157d('0x45')]]))this[_0x157d('0xe')][_0x518a6b['uniqueid']]=[];if(_['isUndefined'](this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]]))this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]]={};var _0x9a9a3b=new QueueReport();_0x9a9a3b[_0x157d('0x48')]=_0x518a6b['queue'];_0x9a9a3b[_0x157d('0x55')]=this[_0x157d('0x12')][_0x9a9a3b[_0x157d('0x48')]]&&this['voiceQueues'][_0x9a9a3b[_0x157d('0x48')]][_0x157d('0x55')]?this['voiceQueues'][_0x9a9a3b['name']][_0x157d('0x55')]||'inbound':_0x157d('0x4e');_0x9a9a3b[_0x157d('0x67')]=_0x518a6b['queue'];_0x9a9a3b[_0x157d('0x72')]=moment()[_0x157d('0x46')](_0x157d('0x73'));_0x9a9a3b[_0x157d('0x74')]=_0x518a6b['position'];_0x9a9a3b[_0x157d('0x75')]=_0x518a6b[_0x157d('0x75')];_0x9a9a3b['uniqueid']=_0x518a6b[_0x157d('0x45')];_0x9a9a3b[_0x157d('0x76')]=this[_0x157d('0x10')][_0x518a6b[_0x157d('0x45')]][_0x157d('0x76')];logger[_0x157d('0x69')](_0x157d('0x77'),_0x9a9a3b[_0x157d('0x48')],_0x9a9a3b['type']);_[_0x157d('0x78')](_0x9a9a3b,_['pick'](_0x518a6b,_[_0x157d('0x79')](_0x9a9a3b)));this[_0x157d('0xe')][_0x518a6b[_0x157d('0x45')]][_0x157d('0x7a')](_0x9a9a3b);this['channels'][_0x518a6b[_0x157d('0x45')]]=_0x9a9a3b;this[_0x157d('0x41')](_0x9a9a3b,_0x157d('0x19'));}}catch(_0x1749ea){logger['error'](_0x157d('0x71'),_0x518a6b['uniqueid'],util[_0x157d('0x39')](_0x1749ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x1b')]=function(_0x174340){try{if(this['isNotNull'](_0x174340)){logger[_0x157d('0x42')](_0x157d('0x7b'),_0x174340[_0x157d('0x45')],util[_0x157d('0x39')](_0x174340,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x174340[_0x157d('0x45')]]){var _0x32d1b2=_[_0x157d('0x7c')](this['queueReports'][_0x174340[_0x157d('0x45')]]);_0x32d1b2['queuecallercomplete']=![];_0x32d1b2['queuecallercompleteAt']=null;_0x32d1b2[_0x157d('0x7d')]=_0x174340['holdtime'];_0x32d1b2['originalposition']=_0x174340['originalposition'];_0x32d1b2[_0x157d('0x7e')]=!![];_0x32d1b2[_0x157d('0x7f')]=moment()['format'](_0x157d('0x73'));_0x32d1b2[_0x157d('0x80')]=_0x157d('0x81');_0x32d1b2[_0x157d('0x82')]=null;logger['info'](_0x157d('0x83'),_0x32d1b2[_0x157d('0x48')],_0x32d1b2[_0x157d('0x55')]);this['channels'][_0x174340['uniqueid']]=_0x32d1b2;this['emitVoiceQueueChannelRemove'](_0x32d1b2,_0x157d('0x7e'));}}}catch(_0x2e6816){logger[_0x157d('0x38')]('[%s][voiceQueueReport][queuecallerabandon]',_0x174340[_0x157d('0x45')],util[_0x157d('0x39')](_0x2e6816,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x1c')]=function(_0x3405f2){try{if(this[_0x157d('0x5e')](_0x3405f2)){logger[_0x157d('0x42')](_0x157d('0x84'),_0x3405f2['uniqueid'],util[_0x157d('0x39')](_0x3405f2,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3405f2[_0x157d('0x45')]]){var _0x2fb58b=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x3405f2['uniqueid']]);_0x2fb58b[_0x157d('0x85')]=moment()['format'](_0x157d('0x73'));_0x2fb58b['connectedlinenum']=_0x3405f2[_0x157d('0x86')];_0x2fb58b[_0x157d('0x87')]=_0x3405f2[_0x157d('0x87')];logger[_0x157d('0x69')](_0x157d('0x88'),_0x2fb58b['name'],_0x2fb58b['type'],_0x3405f2['connectedlinenum'],_0x3405f2[_0x157d('0x87')]);this[_0x157d('0x10')][_0x3405f2[_0x157d('0x45')]]=_0x2fb58b;this[_0x157d('0x41')](_0x2fb58b,'queuecallerleave');}}}catch(_0x1945f8){logger[_0x157d('0x38')](_0x157d('0x84'),_0x3405f2[_0x157d('0x45')],util[_0x157d('0x39')](_0x1945f8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x1f')]=function(_0x2fae5a){try{if(this['isNotNull'](_0x2fae5a)){logger[_0x157d('0x42')](_0x157d('0x89'),_0x2fae5a[_0x157d('0x45')],util[_0x157d('0x39')](_0x2fae5a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2fae5a[_0x157d('0x45')]]){var _0x45b441=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x2fae5a[_0x157d('0x45')]]);_0x45b441[_0x157d('0x8a')]=!![];_0x45b441[_0x157d('0x80')]=_0x157d('0x8b');logger[_0x157d('0x69')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x45b441[_0x157d('0x48')],_0x45b441['type']);}}}catch(_0x1d5af5){logger[_0x157d('0x38')](_0x157d('0x89'),_0x2fae5a[_0x157d('0x45')],util[_0x157d('0x39')](_0x1d5af5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x8c')]=function(_0x23c03d){try{if(this[_0x157d('0x5e')](_0x23c03d)){logger['debug'](_0x157d('0x8d'),_0x23c03d[_0x157d('0x45')],util['inspect'](_0x23c03d,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x23c03d['uniqueid']]){var _0x45cb53=_['last'](this['queueReports'][_0x23c03d[_0x157d('0x45')]]);_0x45cb53[_0x157d('0x7e')]=![];_0x45cb53[_0x157d('0x7f')]=null;_0x45cb53['assigned']=!![];_0x45cb53[_0x157d('0x82')]=_0x23c03d[_0x157d('0x8e')];_0x45cb53[_0x157d('0x7d')]=_0x23c03d['holdtime'];_0x45cb53['queuecallercomplete']=!![];_0x45cb53[_0x157d('0x8f')]=![];_0x45cb53[_0x157d('0x90')]=null;if(!_0x45cb53['transfer']){if(_0x23c03d['reason']=='transfer'){_0x45cb53[_0x157d('0x80')]=_0x157d('0x91');logger[_0x157d('0x69')](_0x157d('0x92'),_0x45cb53['name'],_0x45cb53[_0x157d('0x55')]);}else{if(_[_0x157d('0x93')](_0x23c03d[_0x157d('0x34')]['toLowerCase'](),_0x157d('0x94'))){if(this[_0x157d('0xe')][_0x23c03d[_0x157d('0x95')]]){var _0x120a82=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x23c03d['linkedid']]);_0x120a82['queuecallercomplete']=![];_0x120a82[_0x157d('0x8f')]=!![];_0x120a82[_0x157d('0x90')]=moment(_0x45cb53[_0x157d('0x72')])['add'](_0x23c03d[_0x157d('0x7d')],_0x157d('0x96'))[_0x157d('0x46')](_0x157d('0x73'));_0x120a82[_0x157d('0x80')]='FORWARDTRANSFER';_0x120a82['transfer']=!![];_0x120a82['transfertype']=_0x157d('0x97');_0x120a82[_0x157d('0x98')]=_0x23c03d[_0x157d('0x99')];_0x120a82[_0x157d('0x9a')]=_0x23c03d[_0x157d('0x45')];logger[_0x157d('0x69')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x120a82[_0x157d('0x48')],_0x120a82['type']);var _0x18ec4d=this['queueReports'][_0x23c03d['linkedid']];this[_0x157d('0xe')][_0x23c03d['linkedid']]=this['queueReports'][_0x23c03d[_0x157d('0x45')]];this[_0x157d('0xe')][_0x23c03d[_0x157d('0x45')]]=_0x18ec4d;}}else{_0x45cb53[_0x157d('0x80')]='COMPLETEDBY'+_0x23c03d['reason'][_0x157d('0x9b')]();logger['info'](_0x157d('0x9c'),_0x45cb53[_0x157d('0x48')],_0x45cb53[_0x157d('0x55')],_0x45cb53[_0x157d('0x80')]);}}}this[_0x157d('0x10')][_0x23c03d[_0x157d('0x45')]]=_0x45cb53;this[_0x157d('0x3e')](_0x45cb53,_0x157d('0x1d'));}}}catch(_0x5240bf){logger[_0x157d('0x38')]('[%s][voiceQueueReport][agentcomplete]',_0x23c03d[_0x157d('0x45')],util['inspect'](_0x5240bf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x9d')]=function(_0x5d65c7){try{if(this[_0x157d('0x5e')](_0x5d65c7)){logger['debug']('[%s][voiceQueueReport][varset]',_0x5d65c7[_0x157d('0x45')],util[_0x157d('0x39')](_0x5d65c7,{'showHidden':![],'depth':null}));this[_0x157d('0x9e')](_0x5d65c7[_0x157d('0x45')],_['keys'](_0x5d65c7[_0x157d('0x9f')])[0x0],_0x5d65c7[_0x157d('0xa0')]);if(this[_0x157d('0xe')][_0x5d65c7[_0x157d('0x45')]]){var _0x177259=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x5d65c7['uniqueid']]);if(_0x177259){if(this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')])&&this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')][_0x157d('0xa1')])){switch(_0x5d65c7[_0x157d('0xa0')]){case _0x157d('0xa2'):_0x177259['queuecallerexit']=![];_0x177259['queuecallerexitAt']=null;break;case _0x157d('0xa3'):_0x177259[_0x157d('0xa4')]=_0x157d('0xa5');_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()[_0x157d('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x177259[_0x157d('0x85')]=moment()[_0x157d('0x46')](_0x157d('0x73'));logger[_0x157d('0x42')](_0x157d('0xa6'),_0x5d65c7[_0x157d('0x45')],util[_0x157d('0x39')](_0x177259,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:timeout',_0x177259);break;default:_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()['format'](_0x157d('0x73'));_0x177259['queuecallerleaveAt']=moment()[_0x157d('0x46')](_0x157d('0x73'));}_0x177259['queuecallerabandon']=![];_0x177259[_0x157d('0x7f')]=null;_0x177259[_0x157d('0x80')]=_0x5d65c7['value'];this[_0x157d('0x10')][_0x5d65c7[_0x157d('0x45')]]=_0x177259;this[_0x157d('0x3e')](_0x177259,_0x157d('0x20'));}else if(this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')])&&this[_0x157d('0x5e')](_0x5d65c7[_0x157d('0x9f')]['queueposition'])){if(!_0x177259[_0x157d('0x7e')]){_0x177259[_0x157d('0x8f')]=!![];_0x177259[_0x157d('0x90')]=moment()[_0x157d('0x46')](_0x157d('0x73'));_0x177259[_0x157d('0x80')]=_0x157d('0xa7');_0x177259[_0x157d('0x85')]=moment()[_0x157d('0x46')](_0x157d('0x73'));this[_0x157d('0x10')][_0x5d65c7['uniqueid']]=_0x177259;}}logger[_0x157d('0x69')](_0x157d('0xa8'),_0x5d65c7['uniqueid'],_0x177259[_0x157d('0x48')],_0x177259[_0x157d('0x55')],_[_0x157d('0x79')](_0x5d65c7[_0x157d('0x9f')])[0x0],_0x5d65c7['value']);_0x177259[_0x157d('0x15')]=this[_0x157d('0x15')][_0x5d65c7['uniqueid']];}}}}catch(_0x1a7ce3){logger[_0x157d('0x38')](_0x157d('0xa9'),_0x5d65c7['uniqueid'],util[_0x157d('0x39')](_0x1a7ce3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x9e')]=function(_0x5bce35,_0x304dcb,_0x38cee2){var _0x2a699c=['rtpaudioqos',_0x157d('0xaa'),'rtpaudioqosjitter',_0x157d('0xab'),_0x157d('0xac'),_0x157d('0xad'),_0x157d('0xae'),_0x157d('0xaf'),'sipcallid',_0x157d('0xb0'),_0x157d('0xb1'),'bridgepvtcallid',_0x157d('0xb2'),_0x157d('0xb3'),'memberinterface',_0x157d('0xb4'),_0x157d('0x8e'),_0x157d('0xb5'),_0x157d('0xb6')];if(!_[_0x157d('0x33')](_0x304dcb)&&!_[_0x157d('0xb7')](_0x2a699c,_0x304dcb)){if(_[_0x157d('0x5f')](this['variables'][_0x5bce35])){this['variables'][_0x5bce35]={};}this['variables'][_0x5bce35][_0x304dcb]=_0x38cee2;}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xb8')]=function(_0x1a694d,_0x579efc,_0x44b9c5){var _0x24a26a={};for(var _0xc9b715=0x0;_0xc9b715<this['queueReports'][_0x1a694d][_0x157d('0xb9')];_0xc9b715+=0x1){_0x24a26a=this['queueReports'][_0x1a694d][_0xc9b715];if(this['voiceQueues'][_0x24a26a[_0x157d('0x67')]]){if(_0x24a26a[_0x157d('0x8f')]&&_0x24a26a['transfer']!=!![]){this['voiceQueues'][_0x24a26a[_0x157d('0x67')]][_0x157d('0xba')]+=0x1;}if(_0x24a26a[_0x157d('0x7e')]){this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]]['abandoned']+=0x1;}this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0x53')]+=moment(_0x24a26a[_0x157d('0x85')])[_0x157d('0xbb')](_0x24a26a[_0x157d('0x72')],_0x157d('0x96'))||0x0;if(_0xc9b715===this['queueReports'][_0x1a694d][_0x157d('0xb9')]-0x1){this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0x52')]+=moment()['milliseconds'](0x0)[_0x157d('0xbb')](_0x24a26a['queuecallerjoinAt'],_0x157d('0x96'));this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0x54')]+=0x1;if(_0x24a26a[_0x157d('0x8a')]){this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0xbc')]+=0x1;this[_0x157d('0x12')][_0x24a26a[_0x157d('0x67')]][_0x157d('0xbd')]+=moment()[_0x157d('0xbe')](0x0)[_0x157d('0xbb')](_0x24a26a[_0x157d('0x85')],'seconds');_0x24a26a[_0x157d('0xbf')]=moment()[_0x157d('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x24a26a[_0x157d('0x8f')]=![];_0x24a26a['queuecallerexitAt']=null;}if(_0x24a26a[_0x157d('0x8f')]&&_0x24a26a[_0x157d('0xc0')]!=!![]){_0x24a26a[_0x157d('0xa4')]=_0x157d('0xba');logger[_0x157d('0x42')](_0x157d('0xc1'),_0x1a694d,util[_0x157d('0x39')](_0x24a26a,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')](_0x157d('0xc2'),_0x24a26a);}if(_0x24a26a['queuecallerabandon']){_0x24a26a[_0x157d('0xa4')]=_0x157d('0x56');logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x1a694d,util['inspect'](_0x24a26a,{'showHidden':![],'depth':null}));ami[_0x157d('0x40')](_0x157d('0xc3'),_0x24a26a);}}else{this['voiceQueues'][_0x24a26a[_0x157d('0x67')]][_0x157d('0x52')]+=this[_0x157d('0x12')][_0x24a26a['queue']][_0x157d('0x53')];}logger[_0x157d('0x69')](_0x157d('0xc4'),_0x1a694d,_0x24a26a[_0x157d('0x48')],_0x24a26a[_0x157d('0x55')],_0x579efc);if(_0x44b9c5&&_0x24a26a[_0x157d('0x80')]===_0x157d('0xc5')){_0x24a26a[_0x157d('0x80')]='COMPLETEDBYAGENT';}this[_0x157d('0x10')][_0x1a694d]=_0x24a26a;this[_0x157d('0x3e')](_0x24a26a,_0x157d('0xc6'));this[_0x157d('0x4d')](this['voiceQueues'][_0x24a26a[_0x157d('0x67')]],_0x157d('0xc6'));}}logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x1a694d,util[_0x157d('0x39')](this['queueReports'][_0x1a694d],{'showHidden':![],'depth':null}));ami[_0x157d('0x40')]('custom:voiceQueueReport',this[_0x157d('0xe')][_0x1a694d]);if(_0x24a26a[_0x157d('0x80')]===_0x157d('0xc5'))return;delete this[_0x157d('0xe')][_0x1a694d];delete this[_0x157d('0x10')][_0x1a694d];if(this['variables'][_0x1a694d]){delete this[_0x157d('0x15')][_0x1a694d];}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xc7')]=function(_0x5af738){try{if(this['isNotNull'](_0x5af738)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][hangup]',_0x5af738[_0x157d('0x45')],util['inspect'](_0x5af738,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x5af738[_0x157d('0x45')]]){return this['handleHangup'](_0x5af738[_0x157d('0x45')],_0x5af738[_0x157d('0xc8')]);}if(this[_0x157d('0xe')][_0x5af738[_0x157d('0x95')]]){if(_0x5af738['cause']==='21'){return;}return this['handleHangup'](_0x5af738[_0x157d('0x95')],_0x5af738[_0x157d('0xc8')],!![]);}var _0x11acc4=Object[_0x157d('0x79')](this['queueReports']);for(var _0x324606=0x0;_0x324606<_0x11acc4[_0x157d('0xb9')];_0x324606++){var _0x8bbcaa=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x11acc4[_0x324606]]);if(_0x8bbcaa&&_0x8bbcaa[_0x157d('0xc9')]===_0x5af738[_0x157d('0x45')]){return this['handleHangup'](_0x8bbcaa[_0x157d('0x45')],_0x5af738['cause-txt'],!![]);}}}}catch(_0x2feeb4){logger[_0x157d('0x38')](_0x157d('0xca'),_0x5af738['uniqueid'],util[_0x157d('0x39')](_0x2feeb4,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x157d('0x26')]=function(_0x21d822){try{if(this[_0x157d('0x5e')](_0x21d822)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][attendedtransfer]',_0x21d822[_0x157d('0x45')],util[_0x157d('0x39')](_0x21d822,{'showHidden':![],'depth':null}));var _0x1bee73;var _0x33c544;var _0xd6340a;if(this[_0x157d('0xe')][_0x21d822['transfereeuniqueid']]){_0x1bee73=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xcb')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xcc')];_0x1bee73[_0x157d('0x9a')]=_0x21d822['secondtransfereruniqueid'];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');if(this['queueReports'][_0x21d822[_0x157d('0xcf')]]){_0xd6340a=this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]]=this['queueReports'][_0x21d822[_0x157d('0xcb')]];this[_0x157d('0xe')][_0x21d822['transfereeuniqueid']]=_0xd6340a;_0x33c544=_['last'](this[_0x157d('0xe')][_0x21d822[_0x157d('0xcb')]]);_0x33c544[_0x157d('0x32')]=!![];}logger['info'](_0x157d('0xd0'),_0x21d822[_0x157d('0x45')],_0x1bee73[_0x157d('0x48')],_0x1bee73[_0x157d('0x55')],_0x1bee73[_0x157d('0x98')],_0x1bee73[_0x157d('0x9a')]);}else if(this['queueReports'][_0x21d822['transfertargetuniqueid']]){_0x1bee73=_['last'](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xd2')];_0x1bee73[_0x157d('0x9a')]=_0x21d822['origtransfereruniqueid'];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73['transfertype']=_0x157d('0xce');if(this[_0x157d('0xe')][_0x21d822['origtransfereruniqueid']]){_0xd6340a=this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]=this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]];this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]=_0xd6340a;_0x33c544=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd1')]]);_0x33c544['switch']=!![];}logger['info'](_0x157d('0xd0'),_0x21d822[_0x157d('0x45')],_0x1bee73['name'],_0x1bee73[_0x157d('0x55')],_0x1bee73[_0x157d('0x98')],_0x1bee73[_0x157d('0x9a')]);}else if(this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]){_0x1bee73=_[_0x157d('0x7c')](this[_0x157d('0xe')][_0x21d822[_0x157d('0xd3')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xd2')];_0x1bee73[_0x157d('0x9a')]=_0x21d822[_0x157d('0xd3')];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73['transfer']=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');_0x1bee73[_0x157d('0x32')]=!![];_0x1bee73[_0x157d('0xc9')]=_0x21d822['transfereeuniqueid'];}else if(this[_0x157d('0xe')][_0x21d822[_0x157d('0xcf')]]){_0x1bee73=_[_0x157d('0x7c')](this['queueReports'][_0x21d822[_0x157d('0xcf')]]);_0x1bee73[_0x157d('0x98')]=_0x21d822[_0x157d('0xcc')];_0x1bee73[_0x157d('0x9a')]=_0x21d822[_0x157d('0xcf')];_0x1bee73[_0x157d('0x80')]=_0x157d('0xc5');_0x1bee73[_0x157d('0xc0')]=!![];_0x1bee73[_0x157d('0xcd')]=_0x157d('0xce');_0x1bee73[_0x157d('0x32')]=!![];_0x1bee73['transferid']=_0x21d822[_0x157d('0xd1')];}}}catch(_0x5f0ae0){logger[_0x157d('0x38')]('[%s][voiceQueueReport][attendedtransfer]',_0x21d822['uniqueid'],util['inspect'](_0x5f0ae0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0x28')]=function(_0x799e13){try{if(this[_0x157d('0x5e')](_0x799e13)){logger[_0x157d('0x42')]('[%s][voiceQueueReport][blindtransfer]',_0x799e13[_0x157d('0x45')],util['inspect'](_0x799e13,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x799e13['transfereeuniqueid']]){var _0x4321f2=_[_0x157d('0x7c')](this['queueReports'][_0x799e13['transfereeuniqueid']]);_0x4321f2['queuecallerexitreason']='BLINDTRANSFER';_0x4321f2[_0x157d('0xc0')]=!![];_0x4321f2[_0x157d('0xcd')]=_0x157d('0xd4');_0x4321f2['transferexten']=_0x799e13[_0x157d('0xd5')];_0x4321f2[_0x157d('0x9a')]=_0x799e13['transfereeuniqueid'];logger[_0x157d('0x69')](_0x157d('0xd6'),_0x799e13[_0x157d('0x45')],_0x4321f2[_0x157d('0x48')],_0x4321f2[_0x157d('0x55')],_0x4321f2[_0x157d('0x98')],_0x4321f2[_0x157d('0x9a')]);this[_0x157d('0xc7')]({'event':_0x157d('0xd7'),'uniqueid':_0x799e13['transfereeuniqueid'],'context':_0x799e13[_0x157d('0xd8')],'channel':_0x799e13[_0x157d('0xd9')]});}}}catch(_0x19255f){logger[_0x157d('0x38')](_0x157d('0xda'),_0x799e13[_0x157d('0x45')],util[_0x157d('0x39')](_0x19255f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x20ea3d){try{if(this[_0x157d('0x5e')](_0x20ea3d)){logger[_0x157d('0x42')](_0x157d('0xdb'),_0x20ea3d['uniqueid'],util[_0x157d('0x39')](_0x20ea3d,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x20ea3d[_0x157d('0x45')]]){var _0x3b8e37=_[_0x157d('0x7c')](this['queueReports'][_0x20ea3d[_0x157d('0x45')]]);if(!_[_0x157d('0x33')](_0x3b8e37[_0x157d('0x85')])){_0x3b8e37['mohstarttime']=moment()[_0x157d('0x46')](_0x157d('0x73'));logger[_0x157d('0x69')](_0x157d('0xdc'),_0x20ea3d[_0x157d('0x45')],_0x3b8e37[_0x157d('0xdd')]);}}}}catch(_0x2a4446){logger['error']('[%s][voiceQueueReport][musiconholdstart]',_0x20ea3d[_0x157d('0x45')],util[_0x157d('0x39')](_0x2a4446,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xde')]=function(_0x1681a9){try{if(this[_0x157d('0x5e')](_0x1681a9)){logger['debug'](_0x157d('0xdf'),_0x1681a9[_0x157d('0x45')],util[_0x157d('0x39')](_0x1681a9,{'showHidden':![],'depth':null}));if(this[_0x157d('0xe')][_0x1681a9[_0x157d('0x45')]]){var _0x510995=_['last'](this[_0x157d('0xe')][_0x1681a9['uniqueid']]);if(!_[_0x157d('0x33')](_0x510995[_0x157d('0xdd')])){_0x510995['mohtime']+=moment()[_0x157d('0xbe')](0x0)['diff'](_0x510995[_0x157d('0xdd')],'seconds');logger[_0x157d('0x69')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x1681a9[_0x157d('0x45')],_0x510995[_0x157d('0xe0')]);delete _0x510995[_0x157d('0xdd')];}}}}catch(_0x8c5150){logger['error'](_0x157d('0xdf'),_0x1681a9['uniqueid'],util[_0x157d('0x39')](_0x8c5150,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x157d('0x9')][_0x157d('0xe1')]=function(_0x535547){try{if(this['isNotNull'](_0x535547)){logger['debug'](_0x157d('0xe2'),_0x535547[_0x157d('0x45')],util[_0x157d('0x39')](_0x535547,{'showHidden':![],'depth':null}));if(_0x535547['application'][_0x157d('0xe3')]()==='set'){_0x535547[_0x157d('0xe4')]=_0x535547['appdata']&&_0x535547[_0x157d('0xe5')][_0x157d('0x93')](_0x157d('0xe6'))?_0x535547[_0x157d('0xe5')]:(_0x535547['appdata']||_0x535547[_0x157d('0xe4')])['toLowerCase']();if(_[_0x157d('0x93')](_0x535547[_0x157d('0xe4')][_0x157d('0xe3')](),_0x157d('0xe7'))){logger[_0x157d('0x69')](_0x157d('0xe8'),_0x535547[_0x157d('0x45')],_0x535547[_0x157d('0xe9')],_0x535547[_0x157d('0xe4')]);if(_['isUndefined'](this[_0x157d('0x10')][_0x535547[_0x157d('0x45')]]))this[_0x157d('0x10')][_0x535547['uniqueid']]={};var _0x3ff4fe=_0x535547[_0x157d('0xe4')]['split']('=');var _0x3a1756=_0x3ff4fe[0x0][_0x157d('0xe3')]()[_0x157d('0xea')](/cdr\((.*)\)/);if(_0x3a1756)this[_0x157d('0x10')][_0x535547[_0x157d('0x45')]][_0x3a1756[0x1]]=_0x3ff4fe[0x1];}}}}catch(_0x197e51){logger[_0x157d('0x38')](_0x157d('0xeb'),_0x535547['uniqueid'],util[_0x157d('0x39')](_0x197e51,{'showHidden':![],'depth':null}));}};module[_0x157d('0xec')]=VoiceQueueReport;
\ No newline at end of file
index 6a2f4b5..77bf35b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22d8=['queue','Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x517811,_0x35c694){var _0x5a7dd1=function(_0x2c82c2){while(--_0x2c82c2){_0x517811['push'](_0x517811['shift']());}};_0x5a7dd1(++_0x35c694);}(_0x22d8,0x1b3));var _0x822d=function(_0x2f46c3,_0x12ce74){_0x2f46c3=_0x2f46c3-0x0;var _0x48ea13=_0x22d8[_0x2f46c3];return _0x48ea13;};'use strict';var client=require(_0x822d('0x0'));exports[_0x822d('0x1')]=function(_0x21c338){return function(){_0x21c338[_0x822d('0x2')]=_0x21c338[_0x822d('0x3')];return client[_0x822d('0x4')]('CreateReportAgentPreview',{'body':_0x21c338,'log':_0x822d('0x5')});};};
\ No newline at end of file
+var _0x8dee=['CreateReportAgentPreview','../client','createHistory','queue','Request'];(function(_0x1f6a93,_0x572adf){var _0x2386e2=function(_0x3e1b96){while(--_0x3e1b96){_0x1f6a93['push'](_0x1f6a93['shift']());}};_0x2386e2(++_0x572adf);}(_0x8dee,0xce));var _0xe8de=function(_0x40c433,_0x55c694){_0x40c433=_0x40c433-0x0;var _0x39139e=_0x8dee[_0x40c433];return _0x39139e;};'use strict';var client=require(_0xe8de('0x0'));exports[_0xe8de('0x1')]=function(_0x5f3578){return function(){_0x5f3578['campaign']=_0x5f3578[_0xe8de('0x2')];return client[_0xe8de('0x3')](_0xe8de('0x4'),{'body':_0x5f3578,'log':_0xe8de('0x4')});};};
\ No newline at end of file
index 1447145..ecaa83e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb3a=['CreateAttachment','../client','Request'];(function(_0x4f47f3,_0x18e43d){var _0x5562ca=function(_0x2fe518){while(--_0x2fe518){_0x4f47f3['push'](_0x4f47f3['shift']());}};_0x5562ca(++_0x18e43d);}(_0xdb3a,0x163));var _0xadb3=function(_0x31ce32,_0x3870a8){_0x31ce32=_0x31ce32-0x0;var _0x40958b=_0xdb3a[_0x31ce32];return _0x40958b;};'use strict';var client=require(_0xadb3('0x0'));exports['create']=function(_0x44e504){return client[_0xadb3('0x1')](_0xadb3('0x2'),{'body':_0x44e504,'log':_0xadb3('0x2')});};
\ No newline at end of file
+var _0xe900=['CreateAttachment','../client','create','Request'];(function(_0xb5fc3e,_0x234703){var _0x2efc3c=function(_0x4e4e44){while(--_0x4e4e44){_0xb5fc3e['push'](_0xb5fc3e['shift']());}};_0x2efc3c(++_0x234703);}(_0xe900,0xfd));var _0x0e90=function(_0x528fa2,_0x3753af){_0x528fa2=_0x528fa2-0x0;var _0x282683=_0xe900[_0x528fa2];return _0x282683;};'use strict';var client=require(_0x0e90('0x0'));exports[_0x0e90('0x1')]=function(_0x5e7088){return client[_0x0e90('0x2')](_0x0e90('0x3'),{'body':_0x5e7088,'log':_0x0e90('0x3')});};
\ No newline at end of file
index 1346a61..eed51b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x1ea787,_0x526372){var _0x518e3a=function(_0x38edcb){while(--_0x38edcb){_0x1ea787['push'](_0x1ea787['shift']());}};_0x518e3a(++_0x526372);}(_0x7a54,0x106));var _0x47a5=function(_0x2c3055,_0x4b156e){_0x2c3055=_0x2c3055-0x0;var _0x5d1486=_0x7a54[_0x2c3055];return _0x5d1486;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x34f545,_0x2bd2ee){var _0x1ff6b8=function(_0x582e3b){while(--_0x582e3b){_0x34f545['push'](_0x34f545['shift']());}};_0x1ff6b8(++_0x2bd2ee);}(_0x2ef3,0xba));var _0x32ef=function(_0x49e6d6,_0x1635d1){_0x49e6d6=_0x49e6d6-0x0;var _0x52259d=_0x2ef3[_0x49e6d6];return _0x52259d;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
index 4dda8a5..b568286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05bc=['getContacts','Request','GetCmContact','../client','createContact','CreateCmContact'];(function(_0x190310,_0x1f9915){var _0x25b214=function(_0x345666){while(--_0x345666){_0x190310['push'](_0x190310['shift']());}};_0x25b214(++_0x1f9915);}(_0x05bc,0x147));var _0xc05b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x05bc[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc05b('0x0'));exports[_0xc05b('0x1')]=function(_0x4730f5){return function(){return client['Request'](_0xc05b('0x2'),{'body':_0x4730f5,'log':_0xc05b('0x2')});};};exports[_0xc05b('0x3')]=function(_0x4f771e){return function(){return client[_0xc05b('0x4')](_0xc05b('0x5'),{'options':_0x4f771e,'log':_0xc05b('0x5')});};};
\ No newline at end of file
+var _0xe0f4=['getContacts','Request','GetCmContact','../client','createContact','CreateCmContact'];(function(_0x537b0e,_0x2c6c74){var _0x4ffc55=function(_0x35259b){while(--_0x35259b){_0x537b0e['push'](_0x537b0e['shift']());}};_0x4ffc55(++_0x2c6c74);}(_0xe0f4,0xa5));var _0x4e0f=function(_0x1494c4,_0x2e438d){_0x1494c4=_0x1494c4-0x0;var _0x2cceff=_0xe0f4[_0x1494c4];return _0x2cceff;};'use strict';var client=require(_0x4e0f('0x0'));exports[_0x4e0f('0x1')]=function(_0x234817){return function(){return client['Request'](_0x4e0f('0x2'),{'body':_0x234817,'log':'CreateCmContact'});};};exports[_0x4e0f('0x3')]=function(_0x56a8c9){return function(){return client[_0x4e0f('0x4')](_0x4e0f('0x5'),{'options':_0x56a8c9,'log':_0x4e0f('0x5')});};};
\ No newline at end of file
index f252d23..1c87f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a4=['priority','DESC','ASC','getContactDialerIvr','GetContactDialerIvr','campaign','queue','CampaignId','countReScheduled','getContactPreview','User','Agent','name','VoiceQueue','getCmHopper','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','handlePreviewRecallNotifications','Request','GetCmHopper','CmContact','Contact','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer'];(function(_0x203b5c,_0x2384f1){var _0x20a057=function(_0x511230){while(--_0x511230){_0x203b5c['push'](_0x203b5c['shift']());}};_0x20a057(++_0x2384f1);}(_0x27a4,0x13e));var _0x427a=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x27a4[_0x46e363];return _0x3fb059;};'use strict';var client=require('../client');var moment=require('moment');exports['getContacts']=function(_0x2f6168,_0x4ac4e7){return function(){return client[_0x427a('0x0')](_0x427a('0x1'),{'options':{'where':{'VoiceQueueId':_0x2f6168},'include':[{'model':_0x427a('0x2'),'as':_0x427a('0x3')}],'limit':_0x4ac4e7,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x483444,_0xa44877,_0xfc6fda){return function(){return client[_0x427a('0x0')](_0x427a('0x4'),{'body':_0x483444,'options':{'where':{'VoiceQueueId':_0xa44877,'scheduledat':{'$lte':moment()[_0x427a('0x5')](_0x427a('0x6'))}},'limit':_0xfc6fda},'log':_0x427a('0x4')});};};exports[_0x427a('0x7')]=function(_0x385e4c){return function(){return client['Request'](_0x427a('0x4'),{'body':_0x385e4c,'options':{'where':{'ContactId':_0x385e4c[_0x427a('0x8')],'ListId':_0x385e4c[_0x427a('0x9')],'VoiceQueueId':_0x385e4c[_0x427a('0xa')],'CampaignId':_0x385e4c['CampaignId']}},'log':'rescheduleContact'});};};exports[_0x427a('0xb')]=function(_0x3373b0,_0x405f19,_0x3b7190){return function(){return client['Request'](_0x427a('0xc'),{'options':{'where':{'VoiceQueueId':_0x3373b0,'ListId':_0x405f19,'ContactId':_0x3b7190}},'log':_0x427a('0xc')});};};exports[_0x427a('0xd')]=function(_0x577ebc,_0x531e81,_0x2c6e8e,_0x524354){return function(){return client[_0x427a('0x0')](_0x427a('0xe'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x577ebc,'active':![],'scheduledat':{'$lte':moment()[_0x427a('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x531e81}}]},'order':[[_0x427a('0xf'),_0x427a('0x10')],['scheduledat',_0x524354],['id',_0x427a('0x11')]],'raw':!![],'limit':_0x2c6e8e},'log':_0x427a('0xe')});};};exports[_0x427a('0x12')]=function(_0xcf24b6,_0x203736,_0x3681eb){return function(){return client[_0x427a('0x0')](_0x427a('0xe'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xcf24b6,'active':![],'scheduledat':{'$lte':moment()[_0x427a('0x5')](_0x427a('0x6'))}},'include':[{'model':_0x427a('0x2'),'as':_0x427a('0x3')}],'order':[[_0x427a('0xf'),'DESC'],['scheduledat',_0x3681eb],['id','ASC']],'raw':!![],'limit':_0x203736},'log':_0x427a('0x13')});};};exports['moveContactManagedDialer']=function(_0x55a3a2,_0x3ecc34){return function(){_0x55a3a2[_0x427a('0x14')]=_0x55a3a2[_0x427a('0x15')];return client['Request']('MoveContactManagedDialer',{'body':_0x55a3a2,'options':{'where':{'ContactId':_0x55a3a2['ContactId'],'ListId':_0x55a3a2[_0x427a('0x9')],'VoiceQueueId':_0x55a3a2['VoiceQueueId'],'CampaignId':_0x55a3a2[_0x427a('0x16')],'active':_0x3ecc34?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x427a('0x17')]=function(_0x4fd57e){return function(){return client[_0x427a('0x0')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x4fd57e['id']?_0x4fd57e['id']||null:null}},'log':_0x427a('0x17')});};};exports[_0x427a('0x18')]=function(_0x4e8690){return function(){return client['Request']('GetCmHopperPreview',{'options':{'where':{'id':_0x4e8690},'include':[{'model':_0x427a('0x2'),'as':'Contact'},{'model':_0x427a('0x19'),'as':_0x427a('0x1a'),'attributes':['id',_0x427a('0x1b')]},{'model':_0x427a('0x1c'),'as':'Queue','attributes':['id',_0x427a('0x1b')]}],'raw':!![]},'log':_0x427a('0x1d')});};};exports[_0x427a('0x1e')]=function(_0x14f3f9,_0x4d1d51,_0x2a3699){return function(){return client['Request'](_0x427a('0x4'),{'body':_0x14f3f9,'options':{'where':{'id':_0x4d1d51},'limit':_0x2a3699},'log':_0x427a('0x4')});};};exports[_0x427a('0x1f')]=function(_0x45c257,_0x475d4d){return function(){return client[_0x427a('0x0')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x45c257,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x427a('0x5')](_0x427a('0x6'))},'UserId':{'$in':_0x475d4d}},'order':[[_0x427a('0xf'),_0x427a('0x10')],['scheduledat',_0x427a('0x10')],['id',_0x427a('0x11')]],'include':[{'model':'CmContact','as':_0x427a('0x3')},{'model':_0x427a('0x19'),'as':_0x427a('0x1a'),'attributes':['id',_0x427a('0x1b'),_0x427a('0x20')]}],'group':_0x427a('0x21'),'raw':!![]},'log':'GetContactDialer'});};};exports['resetActiveCalls']=function(_0x556555,_0x565d93){return client['Request'](_0x427a('0x22'),{'body':_0x556555,'options':_0x565d93||{},'log':_0x427a('0x22')});};exports['handlePreviewRecallNotifications']=function(_0x4d49a2,_0x355600,_0x51603c){return function(){return client[_0x427a('0x0')](_0x427a('0x23'),{'body':{'where':{'voiceQueueIds':_0x4d49a2,'interval':_0x355600,'availableAgentsIds':_0x51603c}},'log':_0x427a('0x24')});};};
\ No newline at end of file
+var _0x6420=['CampaignId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','name','VoiceQueue','GetContactRecallMe','User','Agent','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','queue','MoveContactManagedDialer','ContactId','ListId'];(function(_0x5e1959,_0x5d6892){var _0x45c553=function(_0x24f2fd){while(--_0x24f2fd){_0x5e1959['push'](_0x5e1959['shift']());}};_0x45c553(++_0x5d6892);}(_0x6420,0x1c7));var _0x0642=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x6420[_0x710815];return _0x5b3b89;};'use strict';var client=require(_0x0642('0x0'));var moment=require(_0x0642('0x1'));exports['getContacts']=function(_0x42d175,_0x52ac97){return function(){return client[_0x0642('0x2')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x42d175},'include':[{'model':'CmContact','as':_0x0642('0x3')}],'limit':_0x52ac97,'raw':![]},'log':_0x0642('0x4')});};};exports[_0x0642('0x5')]=function(_0x15f6c6,_0x709325,_0x17f939){return function(){return client[_0x0642('0x2')](_0x0642('0x6'),{'body':_0x15f6c6,'options':{'where':{'VoiceQueueId':_0x709325,'scheduledat':{'$lte':moment()['format'](_0x0642('0x7'))}},'limit':_0x17f939},'log':'UpdateCmHopper'});};};exports[_0x0642('0x8')]=function(_0xf8818c){return function(){return client['Request'](_0x0642('0x6'),{'body':_0xf8818c,'options':{'where':{'ContactId':_0xf8818c['ContactId'],'ListId':_0xf8818c['ListId'],'VoiceQueueId':_0xf8818c[_0x0642('0x9')],'CampaignId':_0xf8818c['CampaignId']}},'log':'rescheduleContact'});};};exports['destroyContact']=function(_0x41b0e8,_0x4f42cf,_0x4be3ef){return function(){return client['Request'](_0x0642('0xa'),{'options':{'where':{'VoiceQueueId':_0x41b0e8,'ListId':_0x4f42cf,'ContactId':_0x4be3ef}},'log':_0x0642('0xa')});};};exports[_0x0642('0xb')]=function(_0x3395ea,_0x471686,_0x3ceff1,_0x2bba98){return function(){return client[_0x0642('0x2')](_0x0642('0xc'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3395ea,'active':![],'scheduledat':{'$lte':moment()[_0x0642('0xd')](_0x0642('0x7'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x471686}}]},'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),_0x2bba98],['id',_0x0642('0x11')]],'raw':!![],'limit':_0x3ceff1},'log':'GetContactDialer'});};};exports[_0x0642('0x12')]=function(_0x360da8,_0xde06b5,_0x34c641){return function(){return client[_0x0642('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x360da8,'active':![],'scheduledat':{'$lte':moment()[_0x0642('0xd')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x0642('0x13'),'as':'Contact'}],'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),_0x34c641],['id',_0x0642('0x11')]],'raw':!![],'limit':_0xde06b5},'log':_0x0642('0x14')});};};exports['moveContactManagedDialer']=function(_0x2e36fa,_0xd7c7fb){return function(){_0x2e36fa['campaign']=_0x2e36fa[_0x0642('0x15')];return client[_0x0642('0x2')](_0x0642('0x16'),{'body':_0x2e36fa,'options':{'where':{'ContactId':_0x2e36fa[_0x0642('0x17')],'ListId':_0x2e36fa[_0x0642('0x18')],'VoiceQueueId':_0x2e36fa[_0x0642('0x9')],'CampaignId':_0x2e36fa[_0x0642('0x19')],'active':_0xd7c7fb?undefined:!![]}},'log':_0x0642('0x16')});};};exports[_0x0642('0x1a')]=function(_0x4bffa3){return function(){return client[_0x0642('0x2')](_0x0642('0x1b'),{'options':{'where':{'VoiceQueueId':_0x4bffa3['id']?_0x4bffa3['id']||null:null}},'log':_0x0642('0x1a')});};};exports[_0x0642('0x1c')]=function(_0x3d025d){return function(){return client[_0x0642('0x2')](_0x0642('0x1d'),{'options':{'where':{'id':_0x3d025d},'include':[{'model':_0x0642('0x13'),'as':_0x0642('0x3')},{'model':'User','as':'Agent','attributes':['id',_0x0642('0x1e')]},{'model':_0x0642('0x1f'),'as':'Queue','attributes':['id',_0x0642('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x40096f,_0x3c383c,_0x5129d1){return function(){return client[_0x0642('0x2')](_0x0642('0x6'),{'body':_0x40096f,'options':{'where':{'id':_0x3c383c},'limit':_0x5129d1},'log':_0x0642('0x6')});};};exports['getContactRecallMe']=function(_0x1dd014,_0x451e57){return function(){return client[_0x0642('0x2')](_0x0642('0x20'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1dd014,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x0642('0xd')](_0x0642('0x7'))},'UserId':{'$in':_0x451e57}},'order':[[_0x0642('0xe'),_0x0642('0xf')],[_0x0642('0x10'),'DESC'],['id',_0x0642('0x11')]],'include':[{'model':_0x0642('0x13'),'as':_0x0642('0x3')},{'model':_0x0642('0x21'),'as':_0x0642('0x22'),'attributes':['id',_0x0642('0x1e'),_0x0642('0x23')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':'GetContactDialer'});};};exports[_0x0642('0x24')]=function(_0x2a9cdd,_0x43f689){return client['Request'](_0x0642('0x25'),{'body':_0x2a9cdd,'options':_0x43f689||{},'log':'ResetActiveCalls'});};exports[_0x0642('0x26')]=function(_0x3dbac7,_0x4d9e23,_0x129dad){return function(){return client[_0x0642('0x2')](_0x0642('0x27'),{'body':{'where':{'voiceQueueIds':_0x3dbac7,'interval':_0x4d9e23,'availableAgentsIds':_0x129dad}},'log':_0x0642('0x26')});};};
\ No newline at end of file
index 3bbf0bb..00809e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad25=['Request','VerifyAdditionalPhones','SwapAdditionalPhones','IncrementPreviewCounters','../client','verifyAdditionalPhones'];(function(_0x2bd593,_0x247202){var _0x5b2f63=function(_0x325dd0){while(--_0x325dd0){_0x2bd593['push'](_0x2bd593['shift']());}};_0x5b2f63(++_0x247202);}(_0xad25,0x118));var _0x5ad2=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xad25[_0x1cc8fe];return _0x230054;};'use strict';var client=require(_0x5ad2('0x0'));var moment=require('moment');exports[_0x5ad2('0x1')]=function(_0x20c483,_0x483b1d,_0x36d4bc){return function(){return client[_0x5ad2('0x2')](_0x5ad2('0x3'),{'body':_0x20c483,'reason':_0x483b1d,'entity':_0x36d4bc,'log':_0x5ad2('0x3')});};};exports['swapAdditionalPhones']=function(_0x49cc36,_0xd28f73,_0x280c43){return function(){return client[_0x5ad2('0x2')](_0x5ad2('0x4'),{'body':_0x49cc36,'duration':_0xd28f73,'waitTime':_0x280c43,'log':_0x5ad2('0x4')});};};exports['incrementPreviewCounters']=function(_0x54a50a){return function(){return client[_0x5ad2('0x2')](_0x5ad2('0x5'),{'body':_0x54a50a,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
+var _0x8de7=['moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client'];(function(_0x263f9d,_0x3d854e){var _0x4c4efa=function(_0x48d506){while(--_0x48d506){_0x263f9d['push'](_0x263f9d['shift']());}};_0x4c4efa(++_0x3d854e);}(_0x8de7,0x1e7));var _0x78de=function(_0xe601a5,_0x2fb41e){_0xe601a5=_0xe601a5-0x0;var _0xbacb3b=_0x8de7[_0xe601a5];return _0xbacb3b;};'use strict';var client=require(_0x78de('0x0'));var moment=require(_0x78de('0x1'));exports[_0x78de('0x2')]=function(_0x512996,_0x104707,_0x49844e){return function(){return client[_0x78de('0x3')](_0x78de('0x4'),{'body':_0x512996,'reason':_0x104707,'entity':_0x49844e,'log':_0x78de('0x4')});};};exports['swapAdditionalPhones']=function(_0x4fae48,_0x387415,_0x20689a){return function(){return client[_0x78de('0x3')](_0x78de('0x5'),{'body':_0x4fae48,'duration':_0x387415,'waitTime':_0x20689a,'log':_0x78de('0x5')});};};exports[_0x78de('0x6')]=function(_0x4a101b){return function(){return client[_0x78de('0x3')](_0x78de('0x7'),{'body':_0x4a101b,'log':_0x78de('0x7')});};};
\ No newline at end of file
index 0c5a376..75ab35b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbbb=['GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xfbbb,0x81));var _0xbfbb=function(_0x47a398,_0x24e2a7){_0x47a398=_0x47a398-0x0;var _0x5e689c=_0xfbbb[_0x47a398];return _0x5e689c;};'use strict';var client=require(_0xbfbb('0x0'));exports[_0xbfbb('0x1')]=function(_0x146a28){return function(){return client[_0xbfbb('0x2')](_0xbfbb('0x3'),{'options':{'where':{'VoiceQueueId':_0x146a28[_0xbfbb('0x4')],'phone':_0x146a28[_0xbfbb('0x5')]},'raw':![]},'log':_0xbfbb('0x3')});};};exports[_0xbfbb('0x6')]=function(_0x56b9a9){return function(){return client[_0xbfbb('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x56b9a9['CampaignId'],'phone':_0x56b9a9[_0xbfbb('0x5')]},'raw':![]},'log':_0xbfbb('0x7')});};};
\ No newline at end of file
+var _0xcbaa=['Request','GetCmHopperBlack','checkIsBlackListIvr','CampaignId','phone','../client','checkIsBlackList'];(function(_0x45649d,_0x5d9ab7){var _0x589a32=function(_0x3646aa){while(--_0x3646aa){_0x45649d['push'](_0x45649d['shift']());}};_0x589a32(++_0x5d9ab7);}(_0xcbaa,0x171));var _0xacba=function(_0x4f5108,_0x46a54b){_0x4f5108=_0x4f5108-0x0;var _0x2d56ca=_0xcbaa[_0x4f5108];return _0x2d56ca;};'use strict';var client=require(_0xacba('0x0'));exports[_0xacba('0x1')]=function(_0x2c997c){return function(){return client[_0xacba('0x2')](_0xacba('0x3'),{'options':{'where':{'VoiceQueueId':_0x2c997c['VoiceQueueId'],'phone':_0x2c997c['phone']},'raw':![]},'log':_0xacba('0x3')});};};exports[_0xacba('0x4')]=function(_0x29a11c){return function(){return client[_0xacba('0x2')](_0xacba('0x3'),{'options':{'where':{'CampaignId':_0x29a11c[_0xacba('0x5')],'phone':_0x29a11c[_0xacba('0x6')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 237bf89..a6a049c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b02=['Request','CreateCmHopperFinal','../client','createContact','campaign'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6b02,0x183));var _0x26b0=function(_0x52444e,_0x535cd7){_0x52444e=_0x52444e-0x0;var _0x45a935=_0x6b02[_0x52444e];return _0x45a935;};'use strict';var client=require(_0x26b0('0x0'));exports[_0x26b0('0x1')]=function(_0x115bcf){return function(){_0x115bcf[_0x26b0('0x2')]=_0x115bcf['queue'];return client[_0x26b0('0x3')](_0x26b0('0x4'),{'body':_0x115bcf,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x871f=['queue','createContact','campaign'];(function(_0x26b4a0,_0x10475c){var _0x32cace=function(_0x17e407){while(--_0x17e407){_0x26b4a0['push'](_0x26b4a0['shift']());}};_0x32cace(++_0x10475c);}(_0x871f,0x100));var _0xf871=function(_0x155260,_0xec5e1b){_0x155260=_0x155260-0x0;var _0x3bea8c=_0x871f[_0x155260];return _0x3bea8c;};'use strict';var client=require('../client');exports[_0xf871('0x0')]=function(_0x5e5707){return function(){_0x5e5707[_0xf871('0x1')]=_0x5e5707[_0xf871('0x2')];return client['Request']('CreateCmHopperFinal',{'body':_0x5e5707,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 9af3253..f94f97c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc504=['GetCampaignHopperHistory','ivr','moment','createHistory','campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','getCampaignHopperHistory'];(function(_0x1c80bd,_0x356976){var _0x15b7fc=function(_0x1ad2a){while(--_0x1ad2a){_0x1c80bd['push'](_0x1c80bd['shift']());}};_0x15b7fc(++_0x356976);}(_0xc504,0x9a));var _0x4c50=function(_0x41c9d9,_0x128353){_0x41c9d9=_0x41c9d9-0x0;var _0x26630f=_0xc504[_0x41c9d9];return _0x26630f;};'use strict';var client=require('../client');var moment=require(_0x4c50('0x0'));exports[_0x4c50('0x1')]=function(_0x2656b3){return function(){_0x2656b3[_0x4c50('0x2')]=_0x2656b3[_0x4c50('0x3')];return client['Request']('CreateCmHopperHistory',{'body':_0x2656b3,'log':_0x4c50('0x4')});};};exports[_0x4c50('0x5')]=function(_0xf16d39){return function(){return client[_0x4c50('0x6')](_0x4c50('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0xf16d39,_0x4c50('0x8'))[_0x4c50('0x9')](_0x4c50('0xa')),moment()['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x4c50('0xb')});};};exports[_0x4c50('0xc')]=function(_0x45bdbe){return function(){return client[_0x4c50('0x6')](_0x4c50('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x4c50('0xe'))[_0x4c50('0x9')](_0x4c50('0xa')),moment()[_0x4c50('0xf')](_0x4c50('0xe'))[_0x4c50('0x9')](_0x4c50('0xa'))]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x4c50('0x10')]=function(_0x4b86b0){return function(){return client['Request'](_0x4c50('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')[_0x4c50('0x9')](_0x4c50('0xa')),moment()[_0x4c50('0xf')](_0x4c50('0xe'))[_0x4c50('0x9')](_0x4c50('0xa'))]},'campaigntype':_0x4c50('0x12')},'raw':![]},'log':_0x4c50('0x11')});};};
\ No newline at end of file
+var _0xb6f5=['endOf','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivr','moment','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb6f5,0x1ea));var _0x5b6f=function(_0x8bca3f,_0x158cf8){_0x8bca3f=_0x8bca3f-0x0;var _0x448ab5=_0xb6f5[_0x8bca3f];return _0x448ab5;};'use strict';var client=require('../client');var moment=require(_0x5b6f('0x0'));exports['createHistory']=function(_0x97529d){return function(){_0x97529d[_0x5b6f('0x1')]=_0x97529d[_0x5b6f('0x2')];return client[_0x5b6f('0x3')](_0x5b6f('0x4'),{'body':_0x97529d,'log':'CreateCmHopperHistory'});};};exports[_0x5b6f('0x5')]=function(_0x3d8d5b){return function(){return client[_0x5b6f('0x3')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x5b6f('0x6')](_0x3d8d5b,_0x5b6f('0x7'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x5b6f('0x8')](_0x5b6f('0x9'))]}},'raw':![]},'log':_0x5b6f('0xa')});};};exports[_0x5b6f('0xb')]=function(_0x5bdca9){return function(){return client[_0x5b6f('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x5b6f('0xc')](_0x5b6f('0xd'))['format'](_0x5b6f('0x9')),moment()[_0x5b6f('0xe')](_0x5b6f('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x5b6f('0x2')},'raw':![]},'log':_0x5b6f('0xf')});};};exports['getCampaignHopperHistory']=function(_0x3441bf){return function(){return client[_0x5b6f('0x3')](_0x5b6f('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x5b6f('0xc')](_0x5b6f('0xd'))[_0x5b6f('0x8')](_0x5b6f('0x9')),moment()[_0x5b6f('0xe')](_0x5b6f('0xd'))[_0x5b6f('0x8')](_0x5b6f('0x9'))]},'campaigntype':_0x5b6f('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index d8df3cf..3256166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e22=['key','Trunk','callerid','getFaxAccount','notify','Request','getFaxAccounts','GetFaxAccount','name','description','ecm','minrate','maxrate','gateway','faxdetect','t38timeout','tech','TrunkId'];(function(_0x4a7088,_0x503233){var _0x3a24b0=function(_0x5575c2){while(--_0x5575c2){_0x4a7088['push'](_0x4a7088['shift']());}};_0x3a24b0(++_0x503233);}(_0x3e22,0xa8));var _0x23e2=function(_0x314bb5,_0x476e6a){_0x314bb5=_0x314bb5-0x0;var _0x32c85e=_0x3e22[_0x314bb5];return _0x32c85e;};'use strict';var client=require('../client');exports[_0x23e2('0x0')]=function(){return function(){return client['Request'](_0x23e2('0x1'),{'options':{'raw':![],'attributes':['id',_0x23e2('0x2'),_0x23e2('0x3'),_0x23e2('0x4'),'headerinfo','localstationid',_0x23e2('0x5'),_0x23e2('0x6'),'modem',_0x23e2('0x7'),_0x23e2('0x8'),_0x23e2('0x9'),_0x23e2('0xa'),_0x23e2('0xb'),'ListId',_0x23e2('0xc')],'include':[{'model':_0x23e2('0xd'),'as':_0x23e2('0xd'),'attributes':['id',_0x23e2('0x2'),_0x23e2('0xe'),'active']}]},'log':_0x23e2('0xf')});};};exports[_0x23e2('0x10')]=function(_0x1691c5,_0x254c10){return client[_0x23e2('0x11')]('NotifyFaxAccount',{'account':{'id':_0x1691c5},'body':_0x254c10,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xdef9=['modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate'];(function(_0x48718f,_0x16c984){var _0x32a486=function(_0x3422e5){while(--_0x3422e5){_0x48718f['push'](_0x48718f['shift']());}};_0x32a486(++_0x16c984);}(_0xdef9,0x1ed));var _0x9def=function(_0x14476b,_0xd1a7a4){_0x14476b=_0x14476b-0x0;var _0x24e2e8=_0xdef9[_0x14476b];return _0x24e2e8;};'use strict';var client=require(_0x9def('0x0'));exports[_0x9def('0x1')]=function(){return function(){return client[_0x9def('0x2')](_0x9def('0x3'),{'options':{'raw':![],'attributes':['id',_0x9def('0x4'),_0x9def('0x5'),_0x9def('0x6'),_0x9def('0x7'),_0x9def('0x8'),_0x9def('0x9'),_0x9def('0xa'),_0x9def('0xb'),_0x9def('0xc'),_0x9def('0xd'),_0x9def('0xe'),_0x9def('0xf'),_0x9def('0x10'),_0x9def('0x11'),_0x9def('0x12')],'include':[{'model':'Trunk','as':_0x9def('0x13'),'attributes':['id','name','callerid',_0x9def('0x14')]}]},'log':_0x9def('0x15')});};};exports[_0x9def('0x16')]=function(_0x640dcf,_0x5432fb){return client[_0x9def('0x2')](_0x9def('0x17'),{'account':{'id':_0x640dcf},'body':_0x5432fb,'log':_0x9def('0x17')});};
\ No newline at end of file
index b64114f..fe94b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9adf=['../client','update','Request','UpdateFaxMessage'];(function(_0x257495,_0x18269b){var _0x3849aa=function(_0x1ca94e){while(--_0x1ca94e){_0x257495['push'](_0x257495['shift']());}};_0x3849aa(++_0x18269b);}(_0x9adf,0xe0));var _0xf9ad=function(_0x133493,_0x5e44db){_0x133493=_0x133493-0x0;var _0x54d5c3=_0x9adf[_0x133493];return _0x54d5c3;};'use strict';var client=require(_0xf9ad('0x0'));exports[_0xf9ad('0x1')]=function(_0x29be61,_0x251b86){return client[_0xf9ad('0x2')](_0xf9ad('0x3'),{'body':_0x251b86,'options':{'where':{'AttachmentId':_0x29be61}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x7a0c=['UpdateFaxMessage','../client','update','Request'];(function(_0x3ff3cc,_0x19e197){var _0x52c95a=function(_0x4264bf){while(--_0x4264bf){_0x3ff3cc['push'](_0x3ff3cc['shift']());}};_0x52c95a(++_0x19e197);}(_0x7a0c,0x161));var _0xc7a0=function(_0x1ecb6d,_0x2265a3){_0x1ecb6d=_0x1ecb6d-0x0;var _0x2fc789=_0x7a0c[_0x1ecb6d];return _0x2fc789;};'use strict';var client=require(_0xc7a0('0x0'));exports[_0xc7a0('0x1')]=function(_0x4e69a7,_0x1a4c84){return client[_0xc7a0('0x2')](_0xc7a0('0x3'),{'body':_0x1a4c84,'options':{'where':{'AttachmentId':_0x4e69a7}},'log':_0xc7a0('0x3')});};
\ No newline at end of file
index 6c2329f..491b138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23e6=['remoteUri','authType','DeskConfiguration','name','DeskField','type','content','variableName','Variable','Descriptions','key','keyContent','idField','nameField','customField','Tags','getDeskAccounts','Request','GetDeskAccount','description','username','password'];(function(_0x469df7,_0x4f73dc){var _0x1f932c=function(_0x195a15){while(--_0x195a15){_0x469df7['push'](_0x469df7['shift']());}};_0x1f932c(++_0x4f73dc);}(_0x23e6,0x19c));var _0x623e=function(_0x549e70,_0x8a5460){_0x549e70=_0x549e70-0x0;var _0x9a9d8c=_0x23e6[_0x549e70];return _0x9a9d8c;};'use strict';var client=require('../../client');exports[_0x623e('0x0')]=function(){return function(_0x181155){return client[_0x623e('0x1')](_0x623e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x623e('0x3'),_0x623e('0x4'),_0x623e('0x5'),_0x623e('0x6'),_0x623e('0x7'),'type','serverUrl'],'include':[{'model':_0x623e('0x8'),'as':'Configurations','attributes':['id',_0x623e('0x9')],'include':[{'model':_0x623e('0xa'),'as':'Subjects','attributes':['id',_0x623e('0xb'),_0x623e('0xc'),_0x623e('0xd')],'include':[{'model':_0x623e('0xe'),'as':'Variable','attributes':['id','name']}]},{'model':'DeskField','as':_0x623e('0xf'),'attributes':['id',_0x623e('0xb'),'content',_0x623e('0x10'),'keyType',_0x623e('0x11'),_0x623e('0xd')],'include':[{'model':_0x623e('0xe'),'as':_0x623e('0xe'),'attributes':['id','name']}]},{'model':'DeskField','as':'Fields','attributes':['id','type','content',_0x623e('0x12'),_0x623e('0x13'),_0x623e('0x14'),'variableName'],'include':[{'model':_0x623e('0xe'),'as':_0x623e('0xe'),'attributes':['id',_0x623e('0x9')]}]},{'model':'Tag','as':_0x623e('0x15'),'attributes':['id',_0x623e('0x9')]}]}]},'log':_0x623e('0x2')});};};
\ No newline at end of file
+var _0xefc3=['Tags','GetDeskAccount','getDeskAccounts','Request','username','password','remoteUri','authType','type','Configurations','name','Subjects','variableName','Variable','DeskField','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','customField','Tag'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xefc3,0xb1));var _0x3efc=function(_0x1a9d78,_0x1b9552){_0x1a9d78=_0x1a9d78-0x0;var _0x3a8706=_0xefc3[_0x1a9d78];return _0x3a8706;};'use strict';var client=require('../../client');exports[_0x3efc('0x0')]=function(){return function(_0x2e8171){return client[_0x3efc('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name','description',_0x3efc('0x2'),_0x3efc('0x3'),_0x3efc('0x4'),_0x3efc('0x5'),_0x3efc('0x6'),'serverUrl'],'include':[{'model':'DeskConfiguration','as':_0x3efc('0x7'),'attributes':['id',_0x3efc('0x8')],'include':[{'model':'DeskField','as':_0x3efc('0x9'),'attributes':['id',_0x3efc('0x6'),'content',_0x3efc('0xa')],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id',_0x3efc('0x8')]}]},{'model':_0x3efc('0xc'),'as':_0x3efc('0xd'),'attributes':['id','type',_0x3efc('0xe'),_0x3efc('0xf'),_0x3efc('0x10'),_0x3efc('0x11'),_0x3efc('0xa')],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id',_0x3efc('0x8')]}]},{'model':_0x3efc('0xc'),'as':_0x3efc('0x12'),'attributes':['id',_0x3efc('0x6'),_0x3efc('0xe'),_0x3efc('0x13'),_0x3efc('0x14'),_0x3efc('0x15'),'variableName'],'include':[{'model':_0x3efc('0xb'),'as':'Variable','attributes':['id','name']}]},{'model':_0x3efc('0x16'),'as':_0x3efc('0x17'),'attributes':['id',_0x3efc('0x8')]}]}]},'log':_0x3efc('0x18')});};};
\ No newline at end of file
index b22439f..2840164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d05=['tenantId','clientId','serverUrl','description','Dynamics365Configuration','name','ticketType','moduleCreate','additionalSearchContact','openNewTab','Subjects','type','variableName','Variable','Dynamics365Field','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','password','remoteUri'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x8d05,0xe8));var _0x58d0=function(_0x10e5ad,_0x54f2f0){_0x10e5ad=_0x10e5ad-0x0;var _0x3627c1=_0x8d05[_0x10e5ad];return _0x3627c1;};'use strict';var client=require(_0x58d0('0x0'));exports[_0x58d0('0x1')]=function(){return function(_0x163911){return client[_0x58d0('0x2')](_0x58d0('0x3'),{'options':{'raw':![],'attributes':['id','name','username',_0x58d0('0x4'),_0x58d0('0x5'),_0x58d0('0x6'),_0x58d0('0x7'),'clientSecret',_0x58d0('0x8'),_0x58d0('0x9'),'modernAuthentication'],'include':[{'model':_0x58d0('0xa'),'as':'Configurations','attributes':['id',_0x58d0('0xb'),_0x58d0('0xc'),_0x58d0('0xd'),_0x58d0('0xe'),_0x58d0('0xf')],'include':[{'model':'Dynamics365Field','as':_0x58d0('0x10'),'attributes':['id',_0x58d0('0x11'),'content',_0x58d0('0x12')],'include':[{'model':_0x58d0('0x13'),'as':'Variable','attributes':['id','name']}]},{'model':_0x58d0('0x14'),'as':_0x58d0('0x15'),'attributes':['id',_0x58d0('0x11'),_0x58d0('0x16'),_0x58d0('0x17'),_0x58d0('0x18'),_0x58d0('0x19'),_0x58d0('0x12')],'include':[{'model':_0x58d0('0x13'),'as':_0x58d0('0x13'),'attributes':['id',_0x58d0('0xb')]}]},{'model':_0x58d0('0x14'),'as':_0x58d0('0x1a'),'attributes':['id',_0x58d0('0x11'),_0x58d0('0x16'),_0x58d0('0x1b'),_0x58d0('0x1c'),_0x58d0('0x1d'),_0x58d0('0x12')],'include':[{'model':'Variable','as':_0x58d0('0x13'),'attributes':['id',_0x58d0('0xb')]}]}]},{'model':_0x58d0('0x1e'),'as':_0x58d0('0x1e'),'attributes':['id',_0x58d0('0x1f'),_0x58d0('0x20'),_0x58d0('0x21')]}]},'log':_0x58d0('0x3')});};};
\ No newline at end of file
+var _0xb574=['data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','description','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','Variable','name','key','keyType','keyContent','variableName','idField','customField','CloudProvider','data2'];(function(_0x56d78c,_0x2b65d6){var _0x9a8155=function(_0x3cb3ad){while(--_0x3cb3ad){_0x56d78c['push'](_0x56d78c['shift']());}};_0x9a8155(++_0x2b65d6);}(_0xb574,0x106));var _0x4b57=function(_0x5e160c,_0x59edf1){_0x5e160c=_0x5e160c-0x0;var _0x2329ec=_0xb574[_0x5e160c];return _0x2329ec;};'use strict';var client=require(_0x4b57('0x0'));exports[_0x4b57('0x1')]=function(){return function(_0x4c29a6){return client[_0x4b57('0x2')](_0x4b57('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x4b57('0x4'),_0x4b57('0x5'),_0x4b57('0x6'),_0x4b57('0x7'),_0x4b57('0x8'),'clientSecret','serverUrl',_0x4b57('0x9'),'modernAuthentication'],'include':[{'model':'Dynamics365Configuration','as':'Configurations','attributes':['id','name',_0x4b57('0xa'),_0x4b57('0xb'),_0x4b57('0xc'),_0x4b57('0xd')],'include':[{'model':_0x4b57('0xe'),'as':_0x4b57('0xf'),'attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),'variableName'],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),_0x4b57('0x14'),_0x4b57('0x15'),_0x4b57('0x16'),_0x4b57('0x17')],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]},{'model':'Dynamics365Field','as':'Fields','attributes':['id',_0x4b57('0x10'),_0x4b57('0x11'),_0x4b57('0x18'),'nameField',_0x4b57('0x19'),'variableName'],'include':[{'model':_0x4b57('0x12'),'as':_0x4b57('0x12'),'attributes':['id',_0x4b57('0x13')]}]}]},{'model':_0x4b57('0x1a'),'as':_0x4b57('0x1a'),'attributes':['id',_0x4b57('0x1b'),'data5',_0x4b57('0x1c')]}]},'log':_0x4b57('0x3')});};};
\ No newline at end of file
index 11b1d2d..76c8fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7269=['nameField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','content','Variable','Descriptions','type','keyType','keyContent','variableName','Fields','idField'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7269,0x76));var _0x9726=function(_0x144ebf,_0x4793e2){_0x144ebf=_0x144ebf-0x0;var _0x320639=_0x7269[_0x144ebf];return _0x320639;};'use strict';var client=require(_0x9726('0x0'));exports[_0x9726('0x1')]=function(){return function(_0x28ac74){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x9726('0x2'),_0x9726('0x3'),'apiKey',_0x9726('0x4'),_0x9726('0x5')],'include':[{'model':_0x9726('0x6'),'as':_0x9726('0x7'),'attributes':['id',_0x9726('0x2')],'include':[{'model':_0x9726('0x8'),'attributes':['id',_0x9726('0x2')]},{'model':_0x9726('0x9'),'as':_0x9726('0xa'),'attributes':['id','type',_0x9726('0xb'),'variableName'],'include':[{'model':_0x9726('0xc'),'as':_0x9726('0xc'),'attributes':['id',_0x9726('0x2')]}]},{'model':'FreshdeskField','as':_0x9726('0xd'),'attributes':['id',_0x9726('0xe'),_0x9726('0xb'),'key',_0x9726('0xf'),_0x9726('0x10'),_0x9726('0x11')],'include':[{'model':_0x9726('0xc'),'as':_0x9726('0xc'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':_0x9726('0x12'),'attributes':['id',_0x9726('0xe'),'content',_0x9726('0x13'),_0x9726('0x14'),_0x9726('0x15'),_0x9726('0x11')],'include':[{'model':'Variable','as':_0x9726('0xc'),'attributes':['id',_0x9726('0x2')]}]}]}]},'log':_0x9726('0x16')});};};
\ No newline at end of file
+var _0x2cae=['Fields','nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent'];(function(_0x290fc9,_0x3069fe){var _0x31c8bd=function(_0x4bec21){while(--_0x4bec21){_0x290fc9['push'](_0x290fc9['shift']());}};_0x31c8bd(++_0x3069fe);}(_0x2cae,0x16b));var _0xe2ca=function(_0x1a595a,_0x263824){_0x1a595a=_0x1a595a-0x0;var _0x33f008=_0x2cae[_0x1a595a];return _0x33f008;};'use strict';var client=require(_0xe2ca('0x0'));exports[_0xe2ca('0x1')]=function(){return function(_0x5d4b71){return client['Request'](_0xe2ca('0x2'),{'options':{'raw':![],'attributes':['id',_0xe2ca('0x3'),'username',_0xe2ca('0x4'),_0xe2ca('0x5'),_0xe2ca('0x6')],'include':[{'model':_0xe2ca('0x7'),'as':'Configurations','attributes':['id',_0xe2ca('0x3')],'include':[{'model':_0xe2ca('0x8'),'attributes':['id','name']},{'model':_0xe2ca('0x9'),'as':'Subjects','attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),_0xe2ca('0xe'),_0xe2ca('0xf'),_0xe2ca('0x10'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':'Variable','attributes':['id',_0xe2ca('0x3')]}]},{'model':_0xe2ca('0x9'),'as':_0xe2ca('0x11'),'attributes':['id',_0xe2ca('0xa'),_0xe2ca('0xb'),'idField',_0xe2ca('0x12'),_0xe2ca('0x13'),_0xe2ca('0xc')],'include':[{'model':_0xe2ca('0xd'),'as':_0xe2ca('0xd'),'attributes':['id',_0xe2ca('0x3')]}]}]}]},'log':_0xe2ca('0x2')});};};
\ No newline at end of file
index 8f1f887..b6de742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['remoteUri','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField','Subjects','type','content','variableName','key','keyType','keyContent','Variable','GetFreshsalesccount','getFreshsalesAccounts','GetFreshsalesAccount','username'];(function(_0xcbdf51,_0x1f5a9f){var _0x53809b=function(_0x56bcff){while(--_0x56bcff){_0xcbdf51['push'](_0xcbdf51['shift']());}};_0x53809b(++_0x1f5a9f);}(_0xda19,0xd5));var _0x9da1=function(_0x35f578,_0x19eb81){_0x35f578=_0x35f578-0x0;var _0x2a458e=_0xda19[_0x35f578];return _0x2a458e;};'use strict';var client=require('../../client');exports[_0x9da1('0x0')]=function(){return function(_0x430d39){return client['Request'](_0x9da1('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9da1('0x2'),'apiKey',_0x9da1('0x3'),_0x9da1('0x4')],'include':[{'model':_0x9da1('0x5'),'as':_0x9da1('0x6'),'attributes':['id',_0x9da1('0x7')],'include':[{'model':_0x9da1('0x8'),'as':_0x9da1('0x9'),'attributes':['id',_0x9da1('0xa'),_0x9da1('0xb'),_0x9da1('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x9da1('0x8'),'as':'Descriptions','attributes':['id',_0x9da1('0xa'),_0x9da1('0xb'),_0x9da1('0xd'),_0x9da1('0xe'),_0x9da1('0xf'),_0x9da1('0xc')],'include':[{'model':_0x9da1('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x9da1('0x11')});};};
\ No newline at end of file
+var _0x7409=['FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','content','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','serverUrl'];(function(_0x44ea58,_0x5020fc){var _0x276d2a=function(_0x563ef8){while(--_0x563ef8){_0x44ea58['push'](_0x44ea58['shift']());}};_0x276d2a(++_0x5020fc);}(_0x7409,0x6e));var _0x9740=function(_0xce2d7e,_0x56dac4){_0xce2d7e=_0xce2d7e-0x0;var _0x3143d9=_0x7409[_0xce2d7e];return _0x3143d9;};'use strict';var client=require(_0x9740('0x0'));exports[_0x9740('0x1')]=function(){return function(_0x5e55ff){return client[_0x9740('0x2')](_0x9740('0x3'),{'options':{'raw':![],'attributes':['id',_0x9740('0x4'),_0x9740('0x5'),_0x9740('0x6'),_0x9740('0x7'),_0x9740('0x8')],'include':[{'model':_0x9740('0x9'),'as':_0x9740('0xa'),'attributes':['id','name'],'include':[{'model':_0x9740('0xb'),'as':_0x9740('0xc'),'attributes':['id',_0x9740('0xd'),'content',_0x9740('0xe')],'include':[{'model':_0x9740('0xf'),'as':_0x9740('0xf'),'attributes':['id','name']}]},{'model':_0x9740('0xb'),'as':'Descriptions','attributes':['id',_0x9740('0xd'),_0x9740('0x10'),'key','keyType','keyContent',_0x9740('0xe')],'include':[{'model':_0x9740('0xf'),'as':_0x9740('0xf'),'attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 08b645e..e61ead2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3445=['GetSalesforceAccount','name','username','clientId','clientSecret','securityToken','serverUrl','moduleSearch','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField','Subjects','Variable','../../client','getSalesforceAccounts','Request'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x3445,0x1b7));var _0x5344=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3445[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x5344('0x0'));exports[_0x5344('0x1')]=function(){return function(_0x20f9cf){return client[_0x5344('0x2')](_0x5344('0x3'),{'options':{'raw':![],'attributes':['id',_0x5344('0x4'),_0x5344('0x5'),'password','remoteUri',_0x5344('0x6'),_0x5344('0x7'),_0x5344('0x8'),_0x5344('0x9'),'type'],'include':[{'model':'SalesforceConfiguration','as':'Configurations','attributes':['id','name',_0x5344('0xa'),'moduleCreate','ticketType',_0x5344('0xb'),_0x5344('0xc'),_0x5344('0xd'),'additionalSearchLead'],'include':[{'model':_0x5344('0xe'),'as':_0x5344('0xf'),'include':[{'model':_0x5344('0x10'),'as':_0x5344('0x10'),'attributes':['id',_0x5344('0x4')]}]},{'model':_0x5344('0xe'),'as':'Descriptions','include':[{'model':_0x5344('0x10'),'as':_0x5344('0x10'),'attributes':['id','name']}]},{'model':_0x5344('0xe'),'as':'Fields','include':[{'model':_0x5344('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x36e1=['password','remoteUri','securityToken','serverUrl','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username'];(function(_0x16f81,_0x29438f){var _0x1bb73e=function(_0x487c58){while(--_0x487c58){_0x16f81['push'](_0x16f81['shift']());}};_0x1bb73e(++_0x29438f);}(_0x36e1,0x187));var _0x136e=function(_0x2e986d,_0x4b6b63){_0x2e986d=_0x2e986d-0x0;var _0x351c79=_0x36e1[_0x2e986d];return _0x351c79;};'use strict';var client=require(_0x136e('0x0'));exports[_0x136e('0x1')]=function(){return function(_0x1518b9){return client['Request'](_0x136e('0x2'),{'options':{'raw':![],'attributes':['id',_0x136e('0x3'),_0x136e('0x4'),_0x136e('0x5'),_0x136e('0x6'),'clientId','clientSecret',_0x136e('0x7'),_0x136e('0x8'),'type'],'include':[{'model':_0x136e('0x9'),'as':_0x136e('0xa'),'attributes':['id',_0x136e('0x3'),_0x136e('0xb'),_0x136e('0xc'),_0x136e('0xd'),_0x136e('0xe'),'additionalSearchAccount',_0x136e('0xf'),_0x136e('0x10')],'include':[{'model':'SalesforceField','as':_0x136e('0x11'),'include':[{'model':_0x136e('0x12'),'as':'Variable','attributes':['id',_0x136e('0x3')]}]},{'model':_0x136e('0x13'),'as':_0x136e('0x14'),'include':[{'model':'Variable','as':_0x136e('0x12'),'attributes':['id',_0x136e('0x3')]}]},{'model':_0x136e('0x13'),'as':_0x136e('0x15'),'include':[{'model':_0x136e('0x12'),'as':_0x136e('0x12'),'attributes':['id',_0x136e('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index c87fea0..f95488c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['password','email','ServicenowConfiguration','name','Subjects','type','content','Variable','ServicenowField','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','../../client','getServicenowAccounts','Request','GetServicenowAccount','username'];(function(_0x5401f9,_0x42e05c){var _0x1fb875=function(_0x584c1d){while(--_0x584c1d){_0x5401f9['push'](_0x5401f9['shift']());}};_0x1fb875(++_0x42e05c);}(_0xabce,0x103));var _0xeabc=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xabce[_0x134c2e];return _0x2825db;};'use strict';var client=require(_0xeabc('0x0'));exports[_0xeabc('0x1')]=function(){return function(_0x357cda){return client[_0xeabc('0x2')](_0xeabc('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xeabc('0x4'),_0xeabc('0x5'),_0xeabc('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xeabc('0x7'),'as':'Configurations','attributes':['id',_0xeabc('0x8')],'include':[{'model':'ServicenowField','as':_0xeabc('0x9'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),'variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0xe'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),_0xeabc('0xf'),_0xeabc('0x10'),_0xeabc('0x11'),_0xeabc('0x12')],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0x13'),'attributes':['id','type',_0xeabc('0xb'),_0xeabc('0x14'),_0xeabc('0x15'),'customField','variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x2675=['ServicenowField','type','content','Variable','Descriptions','keyType','variableName','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations'];(function(_0x4a7680,_0x50232b){var _0x303e45=function(_0xaa62c9){while(--_0xaa62c9){_0x4a7680['push'](_0x4a7680['shift']());}};_0x303e45(++_0x50232b);}(_0x2675,0x75));var _0x5267=function(_0x3d7823,_0x36d72a){_0x3d7823=_0x3d7823-0x0;var _0x2d797f=_0x2675[_0x3d7823];return _0x2d797f;};'use strict';var client=require(_0x5267('0x0'));exports['getServicenowAccounts']=function(){return function(_0x53e71f){return client['Request'](_0x5267('0x1'),{'options':{'raw':![],'attributes':['id',_0x5267('0x2'),'description',_0x5267('0x3'),_0x5267('0x4'),'email',_0x5267('0x5'),_0x5267('0x6')],'include':[{'model':_0x5267('0x7'),'as':_0x5267('0x8'),'attributes':['id',_0x5267('0x2')],'include':[{'model':_0x5267('0x9'),'as':'Subjects','attributes':['id',_0x5267('0xa'),_0x5267('0xb'),'variableName'],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0xd'),'attributes':['id','type',_0x5267('0xb'),'key',_0x5267('0xe'),'keyContent',_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':_0x5267('0xc'),'attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0x10'),'attributes':['id',_0x5267('0xa'),_0x5267('0xb'),_0x5267('0x11'),_0x5267('0x12'),_0x5267('0x13'),_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x5267('0x14')});};};
\ No newline at end of file
index 21b233c..ff002d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','serverUrl','Configurations','type','content','variableName','Variable','key','keyType','Fields','idField'];(function(_0xc6d5a3,_0x2830ab){var _0x52014c=function(_0x2c6c07){while(--_0x2c6c07){_0xc6d5a3['push'](_0xc6d5a3['shift']());}};_0x52014c(++_0x2830ab);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'use strict';var client=require('../../client');exports[_0x65f6('0x0')]=function(){return function(_0x4a3887){return client[_0x65f6('0x1')](_0x65f6('0x2'),{'options':{'raw':![],'attributes':['id',_0x65f6('0x3'),_0x65f6('0x4'),_0x65f6('0x5'),'remoteUri',_0x65f6('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x65f6('0x7'),'attributes':['id',_0x65f6('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xc'),_0x65f6('0xd'),'keyContent',_0x65f6('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':_0x65f6('0xe'),'attributes':['id','type',_0x65f6('0x9'),_0x65f6('0xf'),_0x65f6('0x10'),_0x65f6('0x11'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]}]}]},'log':_0x65f6('0x2')});};};
\ No newline at end of file
+var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x1ce16d,_0x1def2c){var _0x2249b8=function(_0x3e9999){while(--_0x3e9999){_0x1ce16d['push'](_0x1ce16d['shift']());}};_0x2249b8(++_0x1def2c);}(_0x66fa,0x117));var _0xa66f=function(_0x1a1b2a,_0x57f611){_0x1a1b2a=_0x1a1b2a-0x0;var _0x19401f=_0x66fa[_0x1a1b2a];return _0x19401f;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
index 32e4e46..9950ce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f0e=['Request','GetVtigerAccount','description','username','remoteUri','Configurations','name','VtigerField','type','content','variableName','Variable','Descriptions','key','keyType','Fields','idField','nameField','customField','../../client','getVtigerAccounts'];(function(_0x40d586,_0x4bfce1){var _0x110509=function(_0x15ba2f){while(--_0x15ba2f){_0x40d586['push'](_0x40d586['shift']());}};_0x110509(++_0x4bfce1);}(_0x1f0e,0x163));var _0xe1f0=function(_0x5d30f5,_0x2fe71e){_0x5d30f5=_0x5d30f5-0x0;var _0x8dab8a=_0x1f0e[_0x5d30f5];return _0x8dab8a;};'use strict';var client=require(_0xe1f0('0x0'));exports[_0xe1f0('0x1')]=function(){return function(_0x3bf04a){return client[_0xe1f0('0x2')](_0xe1f0('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xe1f0('0x4'),_0xe1f0('0x5'),'accessKey',_0xe1f0('0x6'),'serverUrl'],'include':[{'model':'VtigerConfiguration','as':_0xe1f0('0x7'),'attributes':['id',_0xe1f0('0x8')],'include':[{'model':_0xe1f0('0x9'),'as':'Subjects','attributes':['id',_0xe1f0('0xa'),_0xe1f0('0xb'),_0xe1f0('0xc')],'include':[{'model':_0xe1f0('0xd'),'as':_0xe1f0('0xd'),'attributes':['id',_0xe1f0('0x8')]}]},{'model':_0xe1f0('0x9'),'as':_0xe1f0('0xe'),'attributes':['id',_0xe1f0('0xa'),_0xe1f0('0xb'),_0xe1f0('0xf'),_0xe1f0('0x10'),'keyContent',_0xe1f0('0xc')],'include':[{'model':_0xe1f0('0xd'),'as':_0xe1f0('0xd'),'attributes':['id','name']}]},{'model':_0xe1f0('0x9'),'as':_0xe1f0('0x11'),'attributes':['id',_0xe1f0('0xa'),_0xe1f0('0xb'),_0xe1f0('0x12'),_0xe1f0('0x13'),_0xe1f0('0x14'),_0xe1f0('0xc')],'include':[{'model':_0xe1f0('0xd'),'as':_0xe1f0('0xd'),'attributes':['id',_0xe1f0('0x8')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0x01b4=['name','VtigerField','type','content','variableName','Variable','keyType','keyContent','Fields','nameField','customField','getVtigerAccounts','Request','GetVtigerAccount','description','username','accessKey','serverUrl'];(function(_0xa143f6,_0x3740bf){var _0x12442e=function(_0x14e4a7){while(--_0x14e4a7){_0xa143f6['push'](_0xa143f6['shift']());}};_0x12442e(++_0x3740bf);}(_0x01b4,0xbf));var _0x401b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x01b4[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../../client');exports[_0x401b('0x0')]=function(){return function(_0x31da98){return client[_0x401b('0x1')](_0x401b('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x401b('0x3'),_0x401b('0x4'),_0x401b('0x5'),'remoteUri',_0x401b('0x6')],'include':[{'model':'VtigerConfiguration','as':'Configurations','attributes':['id',_0x401b('0x7')],'include':[{'model':_0x401b('0x8'),'as':'Subjects','attributes':['id',_0x401b('0x9'),_0x401b('0xa'),_0x401b('0xb')],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id','name']}]},{'model':_0x401b('0x8'),'as':'Descriptions','attributes':['id',_0x401b('0x9'),_0x401b('0xa'),'key',_0x401b('0xd'),_0x401b('0xe'),_0x401b('0xb')],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id',_0x401b('0x7')]}]},{'model':_0x401b('0x8'),'as':_0x401b('0xf'),'attributes':['id','type',_0x401b('0xa'),'idField',_0x401b('0x10'),_0x401b('0x11'),'variableName'],'include':[{'model':_0x401b('0xc'),'as':_0x401b('0xc'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index dad6e39..f0e77c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0db=['Fields','idField','nameField','customField','GetZendeskAccount','../../client','getZendeskAccounts','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','keyType'];(function(_0x3551bc,_0x189f32){var _0x594869=function(_0x2bf9c4){while(--_0x2bf9c4){_0x3551bc['push'](_0x3551bc['shift']());}};_0x594869(++_0x189f32);}(_0xc0db,0x1c7));var _0xbc0d=function(_0x7358b1,_0x2bf5e1){_0x7358b1=_0x7358b1-0x0;var _0xfb1794=_0xc0db[_0x7358b1];return _0xfb1794;};'use strict';var client=require(_0xbc0d('0x0'));exports[_0xbc0d('0x1')]=function(){return function(_0x23241d){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xbc0d('0x2'),_0xbc0d('0x3'),_0xbc0d('0x4'),_0xbc0d('0x5'),_0xbc0d('0x6'),_0xbc0d('0x7'),_0xbc0d('0x8'),_0xbc0d('0x9')],'include':[{'model':_0xbc0d('0xa'),'as':_0xbc0d('0xb'),'attributes':['id',_0xbc0d('0x2')],'include':[{'model':_0xbc0d('0xc'),'attributes':['id',_0xbc0d('0x2')]},{'model':_0xbc0d('0xd'),'as':_0xbc0d('0xe'),'attributes':['id',_0xbc0d('0x9'),_0xbc0d('0xf'),_0xbc0d('0x10')],'include':[{'model':_0xbc0d('0x11'),'as':_0xbc0d('0x11'),'attributes':['id',_0xbc0d('0x2')]}]},{'model':'ZendeskField','as':_0xbc0d('0x12'),'attributes':['id',_0xbc0d('0x9'),_0xbc0d('0xf'),'key',_0xbc0d('0x13'),'keyContent',_0xbc0d('0x10')],'include':[{'model':_0xbc0d('0x11'),'as':_0xbc0d('0x11'),'attributes':['id',_0xbc0d('0x2')]}]},{'model':_0xbc0d('0xd'),'as':_0xbc0d('0x14'),'attributes':['id','type',_0xbc0d('0xf'),_0xbc0d('0x15'),_0xbc0d('0x16'),_0xbc0d('0x17'),_0xbc0d('0x10')],'include':[{'model':_0xbc0d('0x11'),'as':'Variable','attributes':['id',_0xbc0d('0x2')]}]}]}]},'log':_0xbc0d('0x18')});};};
\ No newline at end of file
+var _0x11ea=['ZendeskConfiguration','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent','idField','nameField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type'];(function(_0x2d4271,_0x3b9f48){var _0x484611=function(_0x33ab5e){while(--_0x33ab5e){_0x2d4271['push'](_0x2d4271['shift']());}};_0x484611(++_0x3b9f48);}(_0x11ea,0x17c));var _0xa11e=function(_0x2a5b82,_0x3132d2){_0x2a5b82=_0x2a5b82-0x0;var _0x188cce=_0x11ea[_0x2a5b82];return _0x188cce;};'use strict';var client=require(_0xa11e('0x0'));exports[_0xa11e('0x1')]=function(){return function(_0x3fd90b){return client[_0xa11e('0x2')](_0xa11e('0x3'),{'options':{'raw':![],'attributes':['id',_0xa11e('0x4'),_0xa11e('0x5'),_0xa11e('0x6'),'token',_0xa11e('0x7'),_0xa11e('0x8'),_0xa11e('0x9'),_0xa11e('0xa')],'include':[{'model':_0xa11e('0xb'),'as':'Configurations','attributes':['id',_0xa11e('0x4')],'include':[{'model':_0xa11e('0xc'),'attributes':['id',_0xa11e('0x4')]},{'model':_0xa11e('0xd'),'as':_0xa11e('0xe'),'attributes':['id',_0xa11e('0xa'),_0xa11e('0xf'),_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':'Variable','attributes':['id',_0xa11e('0x4')]}]},{'model':_0xa11e('0xd'),'as':_0xa11e('0x12'),'attributes':['id',_0xa11e('0xa'),'content',_0xa11e('0x13'),'keyType',_0xa11e('0x14'),_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':_0xa11e('0x11'),'attributes':['id','name']}]},{'model':_0xa11e('0xd'),'as':'Fields','attributes':['id',_0xa11e('0xa'),'content',_0xa11e('0x15'),_0xa11e('0x16'),'customField',_0xa11e('0x10')],'include':[{'model':_0xa11e('0x11'),'as':_0xa11e('0x11'),'attributes':['id',_0xa11e('0x4')]}]}]}]},'log':_0xa11e('0x3')});};};
\ No newline at end of file
index 2479490..1b085fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d21=['key','keyType','keyContent','idField','../../client','Request','GetZohoAccount','description','host','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x38eb22,_0x458a8c){var _0x49553e=function(_0x2879fd){while(--_0x2879fd){_0x38eb22['push'](_0x38eb22['shift']());}};_0x49553e(++_0x458a8c);}(_0x7d21,0xd4));var _0x17d2=function(_0x2868f7,_0x4be051){_0x2868f7=_0x2868f7-0x0;var _0x1ca176=_0x7d21[_0x2868f7];return _0x1ca176;};'use strict';var client=require(_0x17d2('0x0'));exports['getZohoAccounts']=function(){return function(_0x3d054f){return client[_0x17d2('0x1')](_0x17d2('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x17d2('0x3'),_0x17d2('0x4'),'zone',_0x17d2('0x5'),_0x17d2('0x6'),_0x17d2('0x7'),_0x17d2('0x8'),_0x17d2('0x9')],'include':[{'model':_0x17d2('0xa'),'as':_0x17d2('0xb'),'attributes':['id',_0x17d2('0xc'),_0x17d2('0xd'),_0x17d2('0xe'),_0x17d2('0x3')],'include':[{'model':_0x17d2('0xf'),'as':_0x17d2('0x10'),'attributes':['id',_0x17d2('0x11'),_0x17d2('0x12'),_0x17d2('0x13')],'include':[{'model':_0x17d2('0x14'),'as':'Variable','attributes':['id',_0x17d2('0xc')]}]},{'model':_0x17d2('0xf'),'as':_0x17d2('0x15'),'attributes':['id',_0x17d2('0x11'),_0x17d2('0x12'),_0x17d2('0x16'),_0x17d2('0x17'),_0x17d2('0x18'),_0x17d2('0x13')],'include':[{'model':'Variable','as':_0x17d2('0x14'),'attributes':['id',_0x17d2('0xc')]}]},{'model':_0x17d2('0xf'),'as':'Fields','attributes':['id','type','content',_0x17d2('0x19'),'nameField','customField','variableName'],'include':[{'model':'Variable','as':_0x17d2('0x14'),'attributes':['id',_0x17d2('0xc')]}]}]}]},'log':_0x17d2('0x2')});};};
\ No newline at end of file
+var _0xf7e0=['../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type','content','Descriptions','key','keyType','keyContent','Variable','ZohoField','idField','customField'];(function(_0xc2364e,_0x2808d8){var _0x1815db=function(_0x50c7fd){while(--_0x50c7fd){_0xc2364e['push'](_0xc2364e['shift']());}};_0x1815db(++_0x2808d8);}(_0xf7e0,0xd8));var _0x0f7e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xf7e0[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0x0f7e('0x0'));exports[_0x0f7e('0x1')]=function(){return function(_0x1cb6a6){return client[_0x0f7e('0x2')](_0x0f7e('0x3'),{'options':{'raw':![],'attributes':['id',_0x0f7e('0x4'),_0x0f7e('0x5'),'host',_0x0f7e('0x6'),_0x0f7e('0x7'),_0x0f7e('0x8'),_0x0f7e('0x9'),_0x0f7e('0xa'),_0x0f7e('0xb')],'include':[{'model':_0x0f7e('0xc'),'as':_0x0f7e('0xd'),'attributes':['id',_0x0f7e('0x4'),_0x0f7e('0xe'),_0x0f7e('0xf'),_0x0f7e('0x5')],'include':[{'model':'ZohoField','as':_0x0f7e('0x10'),'attributes':['id',_0x0f7e('0x11'),_0x0f7e('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'ZohoField','as':_0x0f7e('0x13'),'attributes':['id',_0x0f7e('0x11'),_0x0f7e('0x12'),_0x0f7e('0x14'),_0x0f7e('0x15'),_0x0f7e('0x16'),'variableName'],'include':[{'model':_0x0f7e('0x17'),'as':_0x0f7e('0x17'),'attributes':['id',_0x0f7e('0x4')]}]},{'model':_0x0f7e('0x18'),'as':'Fields','attributes':['id',_0x0f7e('0x11'),'content',_0x0f7e('0x19'),'nameField',_0x0f7e('0x1a'),'variableName'],'include':[{'model':'Variable','as':_0x0f7e('0x17'),'attributes':['id','name']}]}]}]},'log':_0x0f7e('0x3')});};};
\ No newline at end of file
index 672567f..5bc6929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ffe=['voice','lastAssignedTo','isNil','format','SIP/%s','interface','diff','queuecallerleaveAt','seconds','inbound','exten','agent','accountcode','toNumber','uniqueid','voiceDialReport','TALKING','starttime','endtime','outbound','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport'];(function(_0x7cdaf1,_0x40e620){var _0xf58e9a=function(_0xc05694){while(--_0xc05694){_0x7cdaf1['push'](_0x7cdaf1['shift']());}};_0xf58e9a(++_0x40e620);}(_0x4ffe,0x110));var _0xe4ff=function(_0x10ed52,_0x4dcad2){_0x10ed52=_0x10ed52-0x0;var _0x2f4623=_0x4ffe[_0x10ed52];return _0x2f4623;};'use strict';var moment=require('moment');var _=require(_0xe4ff('0x0'));var util=require(_0xe4ff('0x1'));var client=require(_0xe4ff('0x2'));exports[_0xe4ff('0x3')]=function(_0x42f9fb){var _0x52a2f5=_0x42f9fb[_0xe4ff('0x4')]||_0x42f9fb[_0xe4ff('0x5')];return client[_0xe4ff('0x6')](_0xe4ff('0x7'),{'body':{'channel':_0xe4ff('0x8'),'membername':_0x42f9fb[_0xe4ff('0x9')],'interface':_[_0xe4ff('0xa')](_0x42f9fb['interface'])?util[_0xe4ff('0xb')](_0xe4ff('0xc'),_0x42f9fb['lastAssignedTo']):_0x42f9fb[_0xe4ff('0xd')],'type':'TALKING','enterAt':_0x42f9fb['queuecallerleaveAt'],'exitAt':_0x52a2f5,'duration':moment(_0x52a2f5)[_0xe4ff('0xe')](_0x42f9fb[_0xe4ff('0xf')],_0xe4ff('0x10')),'data1':_0xe4ff('0x11'),'data2':_0x42f9fb['calleridnum'],'data3':_0x42f9fb[_0xe4ff('0x12')],'data4':null,'data5':_0x42f9fb['queue'],'role':_0xe4ff('0x13'),'internal':_0x42f9fb[_0xe4ff('0x14')]?_[_0xe4ff('0x15')](_0x42f9fb['accountcode']):undefined,'uniqueid':_0x42f9fb[_0xe4ff('0x16')]},'log':_0xe4ff('0x7')});};exports[_0xe4ff('0x17')]=function(_0x2186a4){return client['Request'](_0xe4ff('0x7'),{'body':{'channel':_0xe4ff('0x8'),'membername':_0x2186a4['membername'],'interface':_0x2186a4['interface'],'type':_0xe4ff('0x18'),'enterAt':_0x2186a4[_0xe4ff('0x19')],'exitAt':_0x2186a4['endtime'],'duration':moment(_0x2186a4['endtime'])[_0xe4ff('0xe')](_0x2186a4[_0xe4ff('0x19')],_0xe4ff('0x10'))>=0x0?moment(_0x2186a4[_0xe4ff('0x1a')])[_0xe4ff('0xe')](_0x2186a4[_0xe4ff('0x19')],_0xe4ff('0x10')):null,'data1':_0xe4ff('0x1b'),'data2':_0x2186a4[_0xe4ff('0x14')],'data3':_0x2186a4[_0xe4ff('0x12')],'data4':_0x2186a4['dialstring']||null,'role':'agent','internal':_0x2186a4[_0xe4ff('0x14')]?_[_0xe4ff('0x15')](_0x2186a4[_0xe4ff('0x14')]):undefined,'uniqueid':_0x2186a4['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x4e0c=['queuecallerexitAt','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','inbound','calleridnum','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','Request','membername','starttime','endtime','diff','seconds','outbound','exten','dialstring','moment','lodash','queuecallercompleteAt'];(function(_0x236c89,_0xd76ba9){var _0x3b2a15=function(_0x89e4f9){while(--_0x89e4f9){_0x236c89['push'](_0x236c89['shift']());}};_0x3b2a15(++_0xd76ba9);}(_0x4e0c,0x1a1));var _0xc4e0=function(_0x568cf0,_0x1a44cb){_0x568cf0=_0x568cf0-0x0;var _0x360f81=_0x4e0c[_0x568cf0];return _0x360f81;};'use strict';var moment=require(_0xc4e0('0x0'));var _=require(_0xc4e0('0x1'));var util=require('util');var client=require('../client');exports['voiceQueueReport']=function(_0x3e2361){var _0x1a8fd1=_0x3e2361[_0xc4e0('0x2')]||_0x3e2361[_0xc4e0('0x3')];return client['Request'](_0xc4e0('0x4'),{'body':{'channel':_0xc4e0('0x5'),'membername':_0x3e2361[_0xc4e0('0x6')],'interface':_[_0xc4e0('0x7')](_0x3e2361[_0xc4e0('0x8')])?util[_0xc4e0('0x9')](_0xc4e0('0xa'),_0x3e2361[_0xc4e0('0x6')]):_0x3e2361['interface'],'type':_0xc4e0('0xb'),'enterAt':_0x3e2361[_0xc4e0('0xc')],'exitAt':_0x1a8fd1,'duration':moment(_0x1a8fd1)['diff'](_0x3e2361['queuecallerleaveAt'],'seconds'),'data1':_0xc4e0('0xd'),'data2':_0x3e2361[_0xc4e0('0xe')],'data3':_0x3e2361['exten'],'data4':null,'data5':_0x3e2361[_0xc4e0('0xf')],'role':_0xc4e0('0x10'),'internal':_0x3e2361[_0xc4e0('0x11')]?_[_0xc4e0('0x12')](_0x3e2361[_0xc4e0('0x11')]):undefined,'uniqueid':_0x3e2361[_0xc4e0('0x13')]},'log':'CreateMemberReport'});};exports[_0xc4e0('0x14')]=function(_0x3cb848){return client[_0xc4e0('0x15')](_0xc4e0('0x4'),{'body':{'channel':'voice','membername':_0x3cb848[_0xc4e0('0x16')],'interface':_0x3cb848['interface'],'type':_0xc4e0('0xb'),'enterAt':_0x3cb848[_0xc4e0('0x17')],'exitAt':_0x3cb848[_0xc4e0('0x18')],'duration':moment(_0x3cb848[_0xc4e0('0x18')])[_0xc4e0('0x19')](_0x3cb848[_0xc4e0('0x17')],_0xc4e0('0x1a'))>=0x0?moment(_0x3cb848[_0xc4e0('0x18')])[_0xc4e0('0x19')](_0x3cb848[_0xc4e0('0x17')],_0xc4e0('0x1a')):null,'data1':_0xc4e0('0x1b'),'data2':_0x3cb848[_0xc4e0('0x11')],'data3':_0x3cb848[_0xc4e0('0x1c')],'data4':_0x3cb848[_0xc4e0('0x1d')]||null,'role':_0xc4e0('0x10'),'internal':_0x3cb848[_0xc4e0('0x11')]?_[_0xc4e0('0x12')](_0x3cb848[_0xc4e0('0x11')]):undefined,'uniqueid':_0x3cb848[_0xc4e0('0x13')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 6171a72..d0888f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','../client'];(function(_0x3b4be0,_0x52e5f0){var _0x1a0ba4=function(_0x333efc){while(--_0x333efc){_0x3b4be0['push'](_0x3b4be0['shift']());}};_0x1a0ba4(++_0x52e5f0);}(_0xd61e,0x13d));var _0xed61=function(_0x401b54,_0xeb000b){_0x401b54=_0x401b54-0x0;var _0x5dc842=_0xd61e[_0x401b54];return _0x5dc842;};'use strict';var client=require(_0xed61('0x0'));exports[_0xed61('0x1')]=function(){return client[_0xed61('0x2')](_0xed61('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xed61('0x4'),_0xed61('0x5')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x1c7c=['previewRecallmeReminderInterval','../client','getSettings','Request','ShowSetting'];(function(_0x5c0fea,_0x3b3f4a){var _0x51fe6c=function(_0x16414a){while(--_0x16414a){_0x5c0fea['push'](_0x5c0fea['shift']());}};_0x51fe6c(++_0x3b3f4a);}(_0x1c7c,0x164));var _0xc1c7=function(_0x279400,_0x4b97e4){_0x279400=_0x279400-0x0;var _0x4a9520=_0x1c7c[_0x279400];return _0x4a9520;};'use strict';var client=require(_0xc1c7('0x0'));exports[_0xc1c7('0x1')]=function(){return client[_0xc1c7('0x2')](_0xc1c7('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0xc1c7('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
index 29defdf..a8872de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb377=['name','getTemplates','GetTemplate'];(function(_0x46690c,_0x1d5a9e){var _0xee619a=function(_0x19b08e){while(--_0x19b08e){_0x46690c['push'](_0x46690c['shift']());}};_0xee619a(++_0x1d5a9e);}(_0xb377,0xf7));var _0x7b37=function(_0x28a581,_0x32ae59){_0x28a581=_0x28a581-0x0;var _0x4a80d3=_0xb377[_0x28a581];return _0x4a80d3;};'use strict';var client=require('../client');exports[_0x7b37('0x0')]=function(_0x5e235c){return function(_0x298cde){return client['Request'](_0x7b37('0x1'),{'options':{'raw':!![],'attributes':['id',_0x7b37('0x2'),'html']},'log':_0x7b37('0x1')});};};
\ No newline at end of file
+var _0x2426=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x752005,_0x14dc74){var _0x40629c=function(_0x189e3d){while(--_0x189e3d){_0x752005['push'](_0x752005['shift']());}};_0x40629c(++_0x14dc74);}(_0x2426,0x155));var _0x6242=function(_0x568d2e,_0x2054a6){_0x568d2e=_0x568d2e-0x0;var _0x4666f4=_0x2426[_0x568d2e];return _0x4666f4;};'use strict';var client=require(_0x6242('0x0'));exports[_0x6242('0x1')]=function(_0xa09a37){return function(_0x4179a3){return client[_0x6242('0x2')](_0x6242('0x3'),{'options':{'raw':!![],'attributes':['id',_0x6242('0x4'),'html']},'log':_0x6242('0x3')});};};
\ No newline at end of file
index 467bd57..0791ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa694=['AllConditions','operator','value','AnyConditions','Action','action','data1','data3','data4','data6','data7','Request','GetTrigger','name','status','Condition'];(function(_0x442a1f,_0x505d78){var _0x569409=function(_0x82b60f){while(--_0x82b60f){_0x442a1f['push'](_0x442a1f['shift']());}};_0x569409(++_0x505d78);}(_0xa694,0x1bb));var _0x4a69=function(_0x2cd389,_0xc59f6){_0x2cd389=_0x2cd389-0x0;var _0x25ac66=_0xa694[_0x2cd389];return _0x25ac66;};'use strict';var client=require('../client');exports['getTriggers']=function(_0x338f2a){return function(_0x1e1fe9){return client[_0x4a69('0x0')](_0x4a69('0x1'),{'options':{'raw':![],'attributes':['id',_0x4a69('0x2'),'channel',_0x4a69('0x3')],'include':[{'model':_0x4a69('0x4'),'as':_0x4a69('0x5'),'attributes':['id','field',_0x4a69('0x6'),_0x4a69('0x7')]},{'model':'Condition','as':_0x4a69('0x8'),'attributes':['id','field',_0x4a69('0x6'),_0x4a69('0x7')]},{'model':_0x4a69('0x9'),'as':'Actions','attributes':['id',_0x4a69('0xa'),_0x4a69('0xb'),'data2',_0x4a69('0xc'),_0x4a69('0xd'),'data5',_0x4a69('0xe'),_0x4a69('0xf')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0xfa85=['Action','Actions','action','data3','data4','data5','data6','../client','Request','GetTrigger','name','channel','status','Condition','field','operator','value'];(function(_0x563323,_0x57feb5){var _0x3f5447=function(_0x37531b){while(--_0x37531b){_0x563323['push'](_0x563323['shift']());}};_0x3f5447(++_0x57feb5);}(_0xfa85,0xc2));var _0x5fa8=function(_0x1013b4,_0x178dac){_0x1013b4=_0x1013b4-0x0;var _0x5eecd6=_0xfa85[_0x1013b4];return _0x5eecd6;};'use strict';var client=require(_0x5fa8('0x0'));exports['getTriggers']=function(_0xb9db2b){return function(_0x2d0a94){return client[_0x5fa8('0x1')](_0x5fa8('0x2'),{'options':{'raw':![],'attributes':['id',_0x5fa8('0x3'),_0x5fa8('0x4'),_0x5fa8('0x5')],'include':[{'model':_0x5fa8('0x6'),'as':'AllConditions','attributes':['id',_0x5fa8('0x7'),_0x5fa8('0x8'),'value']},{'model':_0x5fa8('0x6'),'as':'AnyConditions','attributes':['id',_0x5fa8('0x7'),'operator',_0x5fa8('0x9')]},{'model':_0x5fa8('0xa'),'as':_0x5fa8('0xb'),'attributes':['id',_0x5fa8('0xc'),'data1','data2',_0x5fa8('0xd'),_0x5fa8('0xe'),_0x5fa8('0xf'),_0x5fa8('0x10'),'data7']}]},'log':_0x5fa8('0x2')});};};
\ No newline at end of file
index f48172e..0d95ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50d6=['registry','defaultuser','../client','GetTrunk','name'];(function(_0x9c23c4,_0x57952e){var _0x10aa8c=function(_0x331a33){while(--_0x331a33){_0x9c23c4['push'](_0x9c23c4['shift']());}};_0x10aa8c(++_0x57952e);}(_0x50d6,0xc5));var _0x650d=function(_0x5a401e,_0x2de782){_0x5a401e=_0x5a401e-0x0;var _0x2aa2cc=_0x50d6[_0x5a401e];return _0x2aa2cc;};'use strict';var client=require(_0x650d('0x0'));exports['getTrunks']=function(_0x2f94ba){return function(_0x4abfaa){return client['Request'](_0x650d('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x650d('0x2'),_0x650d('0x3'),_0x650d('0x4')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0x07b5=['defaultuser','../client','getTrunks','GetTrunk','name','registry'];(function(_0x24f07e,_0x3e9bc8){var _0x56a89e=function(_0x4da3aa){while(--_0x4da3aa){_0x24f07e['push'](_0x24f07e['shift']());}};_0x56a89e(++_0x3e9bc8);}(_0x07b5,0x10f));var _0x507b=function(_0x24618a,_0x2cd0f4){_0x24618a=_0x24618a-0x0;var _0x2e3d64=_0x07b5[_0x24618a];return _0x2e3d64;};'use strict';var client=require(_0x507b('0x0'));exports[_0x507b('0x1')]=function(_0x3c5d86){return function(_0x5a16a9){return client['Request'](_0x507b('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x507b('0x3'),_0x507b('0x4'),_0x507b('0x5')]},'log':_0x507b('0x2')});};};
\ No newline at end of file
index 4dbca68..dfab513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe706,0xa3));var _0x6e70=function(_0x531e48,_0x4bb96b){_0x531e48=_0x531e48-0x0;var _0x202971=_0xe706[_0x531e48];return _0x202971;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x97f518,_0xe7cedb){var _0x33529a=function(_0x17cfa3){while(--_0x17cfa3){_0x97f518['push'](_0x97f518['shift']());}};_0x33529a(++_0xe7cedb);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x22663b,_0xc8c6e3){_0x22663b=_0x22663b-0x0;var _0x310d0a=_0xcb91[_0x22663b];return _0x310d0a;};'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 62c321b..38978e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x739a=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport','../client','create'];(function(_0x4aabfd,_0x1f88a4){var _0x37ec68=function(_0x2d3b0a){while(--_0x2d3b0a){_0x4aabfd['push'](_0x4aabfd['shift']());}};_0x37ec68(++_0x1f88a4);}(_0x739a,0x15c));var _0xa739=function(_0x3bd139,_0x52a505){_0x3bd139=_0x3bd139-0x0;var _0xa9342a=_0x739a[_0x3bd139];return _0xa9342a;};'use strict';var client=require(_0xa739('0x0'));exports[_0xa739('0x1')]=function(_0x38bc42){return client[_0xa739('0x2')](_0xa739('0x3'),{'body':_0x38bc42,'log':_0xa739('0x3')});};exports['update']=function(_0x445665,_0x881077,_0x361f62){return client[_0xa739('0x2')](_0xa739('0x4'),{'body':_0x445665,'options':{'where':{'uniqueid':_0x881077,'interface':_0x361f62,'agentcomplete':!![]}},'log':_0xa739('0x4')});};
\ No newline at end of file
+var _0xfa4f=['CreateVoiceAgentReport','UpdateVoiceAgentReport','Request'];(function(_0x45ba28,_0x384cca){var _0x24a1b2=function(_0x37f5fe){while(--_0x37f5fe){_0x45ba28['push'](_0x45ba28['shift']());}};_0x24a1b2(++_0x384cca);}(_0xfa4f,0x1cd));var _0xffa4=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xfa4f[_0xa148b7];return _0x51efd3;};'use strict';var client=require('../client');exports['create']=function(_0x4f9ff5){return client[_0xffa4('0x0')](_0xffa4('0x1'),{'body':_0x4f9ff5,'log':_0xffa4('0x1')});};exports['update']=function(_0x449d24,_0x182d15,_0x37c4a5){return client[_0xffa4('0x0')](_0xffa4('0x2'),{'body':_0x449d24,'options':{'where':{'uniqueid':_0x182d15,'interface':_0x37c4a5,'agentcomplete':!![]}},'log':_0xffa4('0x2')});};
\ No newline at end of file
index 8dbc975..6c1a994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda53=['context','callerid','GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','lodash','../client','create','Request','CreateVoiceCallReport','calleridnum'];(function(_0x8f8f88,_0x5cc4cd){var _0x34e6dd=function(_0x5eea44){while(--_0x5eea44){_0x8f8f88['push'](_0x8f8f88['shift']());}};_0x34e6dd(++_0x5cc4cd);}(_0xda53,0x10a));var _0x3da5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xda53[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var util=require('util');var _=require(_0x3da5('0x0'));var client=require(_0x3da5('0x1'));exports[_0x3da5('0x2')]=function(_0x39949b){return client[_0x3da5('0x3')](_0x3da5('0x4'),{'body':_['merge'](_0x39949b,{'source':_0x39949b[_0x3da5('0x5')],'destinationcontext':_0x39949b[_0x3da5('0x6')],'callerid':_0x39949b[_0x3da5('0x7')],'amaflags':'DOCUMENTATION'}),'log':_0x3da5('0x4')});};exports['getVoiceCallReports']=function(){return function(){return client['Request'](_0x3da5('0x8'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x3da5('0x9')](_0x3da5('0xa'))['format'](_0x3da5('0xb')),moment()[_0x3da5('0xc')](_0x3da5('0xa'))['format'](_0x3da5('0xb'))]}},'attributes':[_0x3da5('0xd'),_0x3da5('0xe'),_0x3da5('0xf'),_0x3da5('0x10')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0x51fc=['format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport','merge','context','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','day'];(function(_0x13c737,_0xc1ab62){var _0x34e425=function(_0x3e2ae3){while(--_0x3e2ae3){_0x13c737['push'](_0x13c737['shift']());}};_0x34e425(++_0xc1ab62);}(_0x51fc,0x16c));var _0xc51f=function(_0x32b9c9,_0x5881e6){_0x32b9c9=_0x32b9c9-0x0;var _0x1a837f=_0x51fc[_0x32b9c9];return _0x1a837f;};'use strict';var moment=require(_0xc51f('0x0'));var util=require(_0xc51f('0x1'));var _=require(_0xc51f('0x2'));var client=require(_0xc51f('0x3'));exports[_0xc51f('0x4')]=function(_0x46eed8){return client[_0xc51f('0x5')](_0xc51f('0x6'),{'body':_[_0xc51f('0x7')](_0x46eed8,{'source':_0x46eed8['calleridnum'],'destinationcontext':_0x46eed8[_0xc51f('0x8')],'callerid':_0x46eed8['callerid'],'amaflags':_0xc51f('0x9')}),'log':_0xc51f('0x6')});};exports[_0xc51f('0xa')]=function(){return function(){return client[_0xc51f('0x5')](_0xc51f('0xb'),{'options':{'where':{'type':[_0xc51f('0xc')],'createdAt':{'$between':[moment()['startOf'](_0xc51f('0xd'))[_0xc51f('0xe')](_0xc51f('0xf')),moment()[_0xc51f('0x10')](_0xc51f('0xd'))[_0xc51f('0xe')](_0xc51f('0xf'))]}},'attributes':[_0xc51f('0x11'),'disposition',_0xc51f('0x12'),_0xc51f('0x13')]},'log':_0xc51f('0x14')});};};
\ No newline at end of file
index 28b885e..cb58016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffab=['CreateVoiceDialReport','create','Request'];(function(_0x29b6a4,_0x279d5f){var _0x1a6129=function(_0xdd7753){while(--_0xdd7753){_0x29b6a4['push'](_0x29b6a4['shift']());}};_0x1a6129(++_0x279d5f);}(_0xffab,0x11b));var _0xbffa=function(_0x2715f0,_0x35ae1d){_0x2715f0=_0x2715f0-0x0;var _0x21f73f=_0xffab[_0x2715f0];return _0x21f73f;};'use strict';var client=require('../client');exports[_0xbffa('0x0')]=function(_0x36387f){return client[_0xbffa('0x1')]('CreateVoiceDialReport',{'body':_0x36387f,'log':_0xbffa('0x2')});};
\ No newline at end of file
+var _0x08c5=['CreateVoiceDialReport','../client','create'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x08c5,0xc1));var _0x508c=function(_0x4b3331,_0x21e8f5){_0x4b3331=_0x4b3331-0x0;var _0x4c56c8=_0x08c5[_0x4b3331];return _0x4c56c8;};'use strict';var client=require(_0x508c('0x0'));exports[_0x508c('0x1')]=function(_0x2ed9fb){return client['Request'](_0x508c('0x2'),{'body':_0x2ed9fb,'log':_0x508c('0x2')});};
\ No newline at end of file
index 41c5e09..c765481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['getVoiceExtensions','Request','exten','recordingFormat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x705f,0x75));var _0xf705=function(_0x3c6516,_0x35f01b){_0x3c6516=_0x3c6516-0x0;var _0x1bb36d=_0x705f[_0x3c6516];return _0x1bb36d;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client[_0xf705('0x0')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xf705('0x1'),_0xf705('0x2')],'where':{'VoiceExtensionId':null}},'log':_0xf705('0x3')});};};
\ No newline at end of file
+var _0x22fb=['recordingFormat','getVoiceExtensions','Request','exten'];(function(_0x19bf7a,_0x19c529){var _0x326db3=function(_0x1ee683){while(--_0x1ee683){_0x19bf7a['push'](_0x19bf7a['shift']());}};_0x326db3(++_0x19c529);}(_0x22fb,0x192));var _0xb22f=function(_0x57e83b,_0x1f1139){_0x57e83b=_0x57e83b-0x0;var _0x253525=_0x22fb[_0x57e83b];return _0x253525;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client[_0xb22f('0x0')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xb22f('0x1'),_0xb22f('0x2')],'where':{'VoiceExtensionId':null}},'log':_0xb22f('0x3')});};};
\ No newline at end of file
index a132ea3..8035e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x031b=['callAdditionalPhoneAfterMin','Trunk','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','acwTimeout','autopause','dialMethod','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0x031b,0x1d1));var _0xb031=function(_0x133f87,_0x506336){_0x133f87=_0x133f87-0x0;var _0x2075f9=_0x031b[_0x133f87];return _0x2075f9;};'use strict';var client=require(_0xb031('0x0'));exports[_0xb031('0x1')]=function(){return function(){return client[_0xb031('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0xb031('0x3'),_0xb031('0x4'),_0xb031('0x5'),_0xb031('0x6'),'monitor_format','type','dialActive',_0xb031('0x7'),'dialLimitChannel',_0xb031('0x8'),_0xb031('0x9'),_0xb031('0xa'),_0xb031('0xb'),'dialPredictiveInterval',_0xb031('0xc'),_0xb031('0xd'),'dialOriginateTimeout',_0xb031('0xe'),_0xb031('0xf'),'dialQueueProject','dialCongestionMaxRetry',_0xb031('0x10'),_0xb031('0x11'),_0xb031('0x12'),_0xb031('0x13'),'dialNoAnswerRetryFrequency',_0xb031('0x14'),_0xb031('0x15'),_0xb031('0x16'),_0xb031('0x17'),'dialCheckDuplicateType',_0xb031('0x18'),_0xb031('0x19'),'dialAMDGreeting',_0xb031('0x1a'),_0xb031('0x1b'),_0xb031('0x1c'),'dialAMDBetweenWordsSilence',_0xb031('0x1d'),'dialAMDSilenceThreshold',_0xb031('0x1e'),_0xb031('0x1f'),_0xb031('0x20'),'dialRecallInQueue',_0xb031('0x21'),_0xb031('0x22'),'dialAgiAfterHangupClient',_0xb031('0x23'),'monitor_format','strategy',_0xb031('0x24'),_0xb031('0x25'),_0xb031('0x26'),_0xb031('0x27'),_0xb031('0x28'),'dialDropRetryFrequency',_0xb031('0x29'),'dialAbandonedRetryFrequency','dialMachineMaxRetry',_0xb031('0x2a'),_0xb031('0x2b'),_0xb031('0x2c'),_0xb031('0x2d'),'dialPredictiveIntervalMaxThreshold',_0xb031('0x2e'),'dialPreviewAutoRecallMe',_0xb031('0x2f'),_0xb031('0x30')],'include':[{'model':_0xb031('0x31'),'as':_0xb031('0x31'),'attributes':['id','name','callerid',_0xb031('0x32')]},{'model':_0xb031('0x33'),'as':_0xb031('0x34'),'attributes':['id','name']},{'model':_0xb031('0x31'),'as':_0xb031('0x35'),'attributes':['id',_0xb031('0x3'),'callerid',_0xb031('0x32')]},{'model':_0xb031('0x36'),'as':_0xb031('0x36'),'attributes':['id',_0xb031('0x3')],'include':[{'model':_0xb031('0x36'),'as':_0xb031('0x37'),'attributes':['id',_0xb031('0x3'),_0xb031('0x38')]}]}]},'log':_0xb031('0x1')});};};
\ No newline at end of file
+var _0x142b=['dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','timeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','autopause','monitor_format','type','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialGlobalInterval'];(function(_0x5d43b5,_0x3d1c74){var _0x2c5fba=function(_0x3532a8){while(--_0x3532a8){_0x5d43b5['push'](_0x5d43b5['shift']());}};_0x2c5fba(++_0x3d1c74);}(_0x142b,0x10e));var _0xb142=function(_0x3b7079,_0x1ec65a){_0x3b7079=_0x3b7079-0x0;var _0x377789=_0x142b[_0x3b7079];return _0x377789;};'use strict';var client=require(_0xb142('0x0'));exports[_0xb142('0x1')]=function(){return function(){return client[_0xb142('0x2')](_0xb142('0x3'),{'options':{'raw':![],'attributes':['id',_0xb142('0x4'),'acw',_0xb142('0x5'),_0xb142('0x6'),_0xb142('0x7'),_0xb142('0x8'),'dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization',_0xb142('0x9'),_0xb142('0xa'),'dialOriginateCallerIdName',_0xb142('0xb'),'dialOriginateTimeout','dialQueueOptions',_0xb142('0xc'),_0xb142('0xd'),_0xb142('0xe'),'dialCongestionRetryFrequency',_0xb142('0xf'),_0xb142('0x10'),_0xb142('0x11'),'dialNoAnswerRetryFrequency',_0xb142('0x12'),'dialTimezone',_0xb142('0x13'),_0xb142('0x14'),_0xb142('0x15'),_0xb142('0x16'),_0xb142('0x17'),_0xb142('0x18'),_0xb142('0x19'),'dialAMDTotalAnalysisTime',_0xb142('0x1a'),_0xb142('0x1b'),_0xb142('0x1c'),'dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0xb142('0x1d'),'dialRecallMeTimeout','dialRecallInQueue',_0xb142('0x1e'),_0xb142('0x1f'),_0xb142('0x20'),_0xb142('0x21'),'monitor_format',_0xb142('0x22'),_0xb142('0x23'),_0xb142('0x24'),'dialNoSuchNumberMaxRetry',_0xb142('0x25'),_0xb142('0x26'),_0xb142('0x27'),_0xb142('0x28'),_0xb142('0x29'),_0xb142('0x2a'),_0xb142('0x2b'),_0xb142('0x2c'),'dialAgentRejectRetryFrequency',_0xb142('0x2d'),_0xb142('0x2e'),_0xb142('0x2f'),'dialPreviewAutoRecallMe',_0xb142('0x30'),_0xb142('0x31')],'include':[{'model':_0xb142('0x32'),'as':'Trunk','attributes':['id',_0xb142('0x4'),_0xb142('0x33'),_0xb142('0x34')]},{'model':_0xb142('0x35'),'as':_0xb142('0x36'),'attributes':['id','name']},{'model':_0xb142('0x32'),'as':_0xb142('0x37'),'attributes':['id',_0xb142('0x4'),_0xb142('0x33'),'active']},{'model':_0xb142('0x38'),'as':_0xb142('0x38'),'attributes':['id',_0xb142('0x4')],'include':[{'model':_0xb142('0x38'),'as':_0xb142('0x39'),'attributes':['id',_0xb142('0x4'),'interval']}]}]},'log':_0xb142('0x1')});};};
\ No newline at end of file
index 958a68f..330ed53 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(_0x171de7,_0x16f1b9){var _0x5d9867=function(_0x22d3a2){while(--_0x22d3a2){_0x171de7['push'](_0x171de7['shift']());}};_0x5d9867(++_0x16f1b9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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(_0x3a1a85,_0x1aecbc){var _0xb1e7ab=function(_0x4c9f82){while(--_0x4c9f82){_0x3a1a85['push'](_0x3a1a85['shift']());}};_0xb1e7ab(++_0x1aecbc);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 957dd53..a37b132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed55=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x5ae701,_0x58fd5c){var _0x51455c=function(_0x34cb39){while(--_0x34cb39){_0x5ae701['push'](_0x5ae701['shift']());}};_0x51455c(++_0x58fd5c);}(_0xed55,0x13e));var _0x5ed5=function(_0x1c0991,_0x4f22d2){_0x1c0991=_0x1c0991-0x0;var _0x5034de=_0xed55[_0x1c0991];return _0x5034de;};'use strict';var client=require(_0x5ed5('0x0'));exports[_0x5ed5('0x1')]=function(_0x325b03){return function(){return client[_0x5ed5('0x2')](_0x5ed5('0x3'),{'options':{'where':{'VoiceQueueId':_0x325b03,'paused':!![]},'raw':!![]},'log':_0x5ed5('0x1')});};};
\ No newline at end of file
+var _0xf3f7=['getVoiceQueueRtPauses','Request','../client'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xf3f7,0x1c1));var _0x7f3f=function(_0x4f4c08,_0x5bad23){_0x4f4c08=_0x4f4c08-0x0;var _0xc4dcc6=_0xf3f7[_0x4f4c08];return _0xc4dcc6;};'use strict';var client=require(_0x7f3f('0x0'));exports[_0x7f3f('0x1')]=function(_0x46df0c){return function(){return client[_0x7f3f('0x2')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x46df0c,'paused':!![]},'raw':!![]},'log':_0x7f3f('0x1')});};};
\ No newline at end of file
index 03aded8..5c0103d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x57b2d9,_0x1cdd53){var _0x5b7768=function(_0x1e7b7e){while(--_0x1e7b7e){_0x57b2d9['push'](_0x57b2d9['shift']());}};_0x5b7768(++_0x1cdd53);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x51fca6,_0xf24989){var _0x5af925=function(_0x3497a9){while(--_0x3497a9){_0x51fca6['push'](_0x51fca6['shift']());}};_0x5af925(++_0xf24989);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 9ae57be..a90e986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c00=['transfers','CreateVoiceTransferReport','result','transferercalleridnum','transferercalleridname','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','isexternal','context','extension','blind','Request','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client'];(function(_0x162780,_0x47f2e2){var _0x1ea2dc=function(_0x123898){while(--_0x123898){_0x162780['push'](_0x162780['shift']());}};_0x1ea2dc(++_0x47f2e2);}(_0x4c00,0x74));var _0x04c0=function(_0x1a31e8,_0x5387bc){_0x1a31e8=_0x1a31e8-0x0;var _0x3adc72=_0x4c00[_0x1a31e8];return _0x3adc72;};'use strict';var client=require(_0x04c0('0x0'));exports[_0x04c0('0x1')]={};exports['blindTransfer']=function(_0x625691){return client['Request'](_0x04c0('0x2'),{'body':{'result':_0x625691[_0x04c0('0x3')],'transfererchannel':_0x625691['transfererchannel'],'transferercalleridnum':_0x625691[_0x04c0('0x4')],'transferercalleridname':_0x625691[_0x04c0('0x5')],'transfererconnectedlinenum':_0x625691['transfererconnectedlinenum'],'transfererconnectedlinename':_0x625691['transfererconnectedlinename'],'transfereraccountcode':_0x625691[_0x04c0('0x6')],'transferercontext':_0x625691[_0x04c0('0x7')],'transfererexten':_0x625691[_0x04c0('0x8')],'transfererlinkedid':_0x625691[_0x04c0('0x9')],'transfereechannel':_0x625691[_0x04c0('0xa')],'transfereecalleridnum':_0x625691['transfereecalleridnum'],'transfereecalleridname':_0x625691[_0x04c0('0xb')],'transfereeconnectedlinenum':_0x625691[_0x04c0('0xc')],'transfereeconnectedlinename':_0x625691[_0x04c0('0xd')],'transfereeaccountcode':_0x625691[_0x04c0('0xe')],'transfereecontext':_0x625691[_0x04c0('0xf')],'transfereeexten':_0x625691[_0x04c0('0x10')],'transfereelinkedid':_0x625691['transfereelinkedid'],'isexternal':_0x625691[_0x04c0('0x11')],'context':_0x625691[_0x04c0('0x12')],'extension':_0x625691[_0x04c0('0x13')],'type':_0x04c0('0x14')},'log':_0x04c0('0x2')});};exports['attendedTransfer']=function(_0x52dcf6){return client[_0x04c0('0x15')](_0x04c0('0x2'),{'body':{'result':_0x52dcf6[_0x04c0('0x3')],'transfererchannel':_0x52dcf6[_0x04c0('0x16')],'transferercalleridnum':_0x52dcf6[_0x04c0('0x17')],'transferercalleridname':_0x52dcf6['origtransferercalleridname'],'transfererconnectedlinenum':_0x52dcf6[_0x04c0('0x18')],'transfererconnectedlinename':_0x52dcf6[_0x04c0('0x19')],'transfereraccountcode':_0x52dcf6[_0x04c0('0x1a')],'transferercontext':_0x52dcf6[_0x04c0('0x1b')],'transfererexten':_0x52dcf6[_0x04c0('0x1c')],'transfererlinkedid':_0x52dcf6[_0x04c0('0x1d')],'transfereechannel':_0x52dcf6['transfertargetchannel'],'transfereecalleridnum':_0x52dcf6[_0x04c0('0x1e')],'transfereecalleridname':_0x52dcf6[_0x04c0('0x1f')],'transfereeconnectedlinenum':_0x52dcf6['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x52dcf6[_0x04c0('0x20')],'transfereeaccountcode':_0x52dcf6[_0x04c0('0x21')],'transfereecontext':_0x52dcf6[_0x04c0('0x22')],'transfereeexten':_0x52dcf6[_0x04c0('0x23')],'transfereelinkedid':_0x52dcf6[_0x04c0('0x24')],'isexternal':_0x52dcf6[_0x04c0('0x11')],'context':_0x52dcf6[_0x04c0('0x25')],'extension':_0x52dcf6['origtransfererexten'],'type':_0x04c0('0x26')},'log':_0x04c0('0x2')});};
\ No newline at end of file
+var _0xd7be=['result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereelinkedid','isexternal','context','extension','CreateVoiceTransferReport','attendedTransfer','Request','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransfererexten','attended','../client','transfers','blindTransfer'];(function(_0x5c56d8,_0x2c6245){var _0x38c39c=function(_0x1d8ad7){while(--_0x1d8ad7){_0x5c56d8['push'](_0x5c56d8['shift']());}};_0x38c39c(++_0x2c6245);}(_0xd7be,0x13d));var _0xed7b=function(_0xf5ba9d,_0x131a99){_0xf5ba9d=_0xf5ba9d-0x0;var _0x1828cb=_0xd7be[_0xf5ba9d];return _0x1828cb;};'use strict';var client=require(_0xed7b('0x0'));exports[_0xed7b('0x1')]={};exports[_0xed7b('0x2')]=function(_0x58f520){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x58f520[_0xed7b('0x3')],'transfererchannel':_0x58f520[_0xed7b('0x4')],'transferercalleridnum':_0x58f520[_0xed7b('0x5')],'transferercalleridname':_0x58f520[_0xed7b('0x6')],'transfererconnectedlinenum':_0x58f520[_0xed7b('0x7')],'transfererconnectedlinename':_0x58f520[_0xed7b('0x8')],'transfereraccountcode':_0x58f520[_0xed7b('0x9')],'transferercontext':_0x58f520[_0xed7b('0xa')],'transfererexten':_0x58f520[_0xed7b('0xb')],'transfererlinkedid':_0x58f520[_0xed7b('0xc')],'transfereechannel':_0x58f520[_0xed7b('0xd')],'transfereecalleridnum':_0x58f520[_0xed7b('0xe')],'transfereecalleridname':_0x58f520[_0xed7b('0xf')],'transfereeconnectedlinenum':_0x58f520[_0xed7b('0x10')],'transfereeconnectedlinename':_0x58f520['transfereeconnectedlinename'],'transfereeaccountcode':_0x58f520['transfereeaccountcode'],'transfereecontext':_0x58f520['transfereecontext'],'transfereeexten':_0x58f520['transfereeexten'],'transfereelinkedid':_0x58f520[_0xed7b('0x11')],'isexternal':_0x58f520[_0xed7b('0x12')],'context':_0x58f520[_0xed7b('0x13')],'extension':_0x58f520[_0xed7b('0x14')],'type':'blind'},'log':_0xed7b('0x15')});};exports[_0xed7b('0x16')]=function(_0x803310){return client[_0xed7b('0x17')](_0xed7b('0x15'),{'body':{'result':_0x803310[_0xed7b('0x3')],'transfererchannel':_0x803310['origtransfererchannel'],'transferercalleridnum':_0x803310[_0xed7b('0x18')],'transferercalleridname':_0x803310[_0xed7b('0x19')],'transfererconnectedlinenum':_0x803310[_0xed7b('0x1a')],'transfererconnectedlinename':_0x803310[_0xed7b('0x1b')],'transfereraccountcode':_0x803310[_0xed7b('0x1c')],'transferercontext':_0x803310[_0xed7b('0x1d')],'transfererexten':_0x803310['secondtransfererexten'],'transfererlinkedid':_0x803310[_0xed7b('0x1e')],'transfereechannel':_0x803310['transfertargetchannel'],'transfereecalleridnum':_0x803310[_0xed7b('0x1f')],'transfereecalleridname':_0x803310[_0xed7b('0x20')],'transfereeconnectedlinenum':_0x803310[_0xed7b('0x21')],'transfereeconnectedlinename':_0x803310['transfertargetconnectedlinename'],'transfereeaccountcode':_0x803310[_0xed7b('0x22')],'transfereecontext':_0x803310[_0xed7b('0x23')],'transfereeexten':_0x803310[_0xed7b('0x24')],'transfereelinkedid':_0x803310[_0xed7b('0x25')],'isexternal':_0x803310['isexternal'],'context':_0x803310['origtransferercontext'],'extension':_0x803310[_0xed7b('0x26')],'type':_0xed7b('0x27')},'log':_0xed7b('0x15')});};
\ No newline at end of file
index 168eb4a..c5c1e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a0=['outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','uniqueid','format','%s.%s','filename','wav','MixMonitor','channel','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','checkAfterSend','server','http','127.0.0.1','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','validate','../../../config/environment','../properties','../ami','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','error','username','join','pick','keys','module','Reload','Action','message','catch','isConnected','asterisk','ami\x20disconnected','command','Command','then','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','total','type','unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay'];(function(_0x243ecd,_0x5d27ee){var _0x5e33df=function(_0x222ccb){while(--_0x222ccb){_0x243ecd['push'](_0x243ecd['shift']());}};_0x5e33df(++_0x5d27ee);}(_0xd7a0,0x163));var _0x0d7a=function(_0x1065df,_0x103ff1){_0x1065df=_0x1065df-0x0;var _0x5069b3=_0xd7a0[_0x1065df];return _0x5069b3;};'use strict';var _=require(_0x0d7a('0x0'));var util=require(_0x0d7a('0x1'));var jayson=require('jayson/promise');var schema=require(_0x0d7a('0x2'));var moment=require('moment');var config=require(_0x0d7a('0x3'));var properties=require(_0x0d7a('0x4'));var ami=require(_0x0d7a('0x5'));exports[_0x0d7a('0x6')]=function(_0x208f50,_0x564935,_0x34f0f8){return new Promise(function(_0x37c000,_0x321114){var _0x16461e={'QueuePause':function(_0x22b404){return new Promise(function(_0x371b7d){var _0x1514ae=util['format'](_0x0d7a('0x7'),_0x0d7a('0x8'),_0x22b404[_0x0d7a('0x9')]);if(_0x208f50[_0x0d7a('0xa')]&&_0x208f50['timers'][_0x1514ae]&&_0x208f50[_0x0d7a('0xa')][_0x1514ae][_0x0d7a('0xb')]){_0x208f50['timers'][_0x1514ae][_0x0d7a('0xc')]();}if(_0x208f50[_0x0d7a('0xd')][_0x1514ae]){_0x208f50[_0x0d7a('0xd')][_0x1514ae][_0x0d7a('0xe')]({'statePause':_0x22b404[_0x0d7a('0xf')]?!![]:![]});}_0x371b7d({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x5432bb){var _0x30b43e=this;return new Promise(function(_0x19f808,_0x17cf41){if(ami['isConnected']()==![]){return _0x17cf41(_0x30b43e[_0x0d7a('0x10')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x0d7a('0x11')],'ami\x20disconnected'][_0x0d7a('0x12')]('\x20')));}_0x5432bb=_[_0x0d7a('0x13')](_0x5432bb,_[_0x0d7a('0x14')](properties[_0x0d7a('0x15')]));_0x5432bb['action']=_0x0d7a('0x16');return ami[_0x0d7a('0x17')](_0x5432bb)['then'](function(_0x2e61e9){_0x19f808({'code':0xc8,'message':_0x2e61e9[_0x0d7a('0x18')]});})[_0x0d7a('0x19')](function(_0x406b0c){_0x17cf41(_0x30b43e['error'](0x1f5,_0x406b0c[_0x0d7a('0x18')]));});});},'Command':function(_0x4cfcdc){var _0x569285=this;return new Promise(function(_0x4e7ec4,_0x4809b9){if(ami[_0x0d7a('0x1a')]()==![]){return _0x4809b9(_0x569285['error'](0x1f4,[config[_0x0d7a('0x1b')]['ip'],config[_0x0d7a('0x1b')]['username'],_0x0d7a('0x1c')][_0x0d7a('0x12')]('\x20')));}_0x4cfcdc=_[_0x0d7a('0x13')](_0x4cfcdc,_0x0d7a('0x1d'));_0x4cfcdc['action']=_0x0d7a('0x1e');return ami[_0x0d7a('0x17')](_0x4cfcdc)[_0x0d7a('0x1f')](function(_0x4ff76b){_0x4e7ec4({'code':0xc8,'message':_0x4ff76b['content']});})[_0x0d7a('0x19')](function(_0xbd4e67){_0x4809b9(_0x569285[_0x0d7a('0x10')](0x1f5,_0xbd4e67[_0x0d7a('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0x9c73d4){var _0x551171=[];for(var _0x14670c in _0x208f50[_0x0d7a('0x20')]){if(_0x208f50[_0x0d7a('0x20')][_0x0d7a('0x21')](_0x14670c)){var _0x53fe77=_0x208f50['voiceQueues'][_0x14670c];var _0x39b301={'id':_0x53fe77['id'],'name':_0x53fe77[_0x0d7a('0x9')],'strategy':_0x53fe77[_0x0d7a('0x22')],'answered':_0x53fe77[_0x0d7a('0x23')],'available':_0x53fe77[_0x0d7a('0x24')],'loggedIn':_0x53fe77[_0x0d7a('0x25')],'pTalking':_0x53fe77[_0x0d7a('0x26')],'sumBillable':_0x53fe77[_0x0d7a('0x27')],'sumDuration':_0x53fe77['sumDuration'],'sumHoldTime':_0x53fe77[_0x0d7a('0x28')]||0x0,'talking':_0x53fe77['talking'],'total':_0x53fe77[_0x0d7a('0x29')],'type':_0x53fe77[_0x0d7a('0x2a')],'unmanaged':_0x53fe77[_0x0d7a('0x2b')],'abandoned':_0x53fe77[_0x0d7a('0x2c')],'waiting':_0x53fe77[_0x0d7a('0x2d')],'loggedInDb':_0x53fe77['loggedInDb']};if(_0x53fe77[_0x0d7a('0x2a')]===_0x0d7a('0x2e')){_0x39b301[_0x0d7a('0x2f')]=_0x53fe77['dialActive'];_0x39b301[_0x0d7a('0x30')]=_0x53fe77[_0x0d7a('0x30')];_0x39b301['dialOriginateCallerIdName']=_0x53fe77[_0x0d7a('0x31')];_0x39b301[_0x0d7a('0x32')]=_0x53fe77[_0x0d7a('0x32')];_0x39b301['dialOriginateTimeout']=_0x53fe77[_0x0d7a('0x33')];_0x39b301['dialPrefix']=_0x53fe77[_0x0d7a('0x34')];_0x39b301[_0x0d7a('0x35')]=_0x53fe77['temp'];_0x39b301[_0x0d7a('0x36')]=_0x53fe77[_0x0d7a('0x36')];_0x39b301[_0x0d7a('0x37')]=_0x53fe77[_0x0d7a('0x37')];_0x39b301[_0x0d7a('0x38')]=_0x53fe77[_0x0d7a('0x38')];_0x39b301[_0x0d7a('0x39')]=_0x53fe77['outboundBusyCallsDay'];_0x39b301[_0x0d7a('0x3a')]=_0x53fe77[_0x0d7a('0x3a')];_0x39b301['outboundDropCallsDayACS']=_0x53fe77[_0x0d7a('0x3b')];_0x39b301['outboundDropCallsDayCallersExit']=_0x53fe77['outboundDropCallsDayCallersExit'];_0x39b301[_0x0d7a('0x3c')]=_0x53fe77[_0x0d7a('0x3c')];_0x39b301[_0x0d7a('0x3d')]=_0x53fe77['outboundNoAnswerCallsDay'];_0x39b301[_0x0d7a('0x3e')]=_0x53fe77[_0x0d7a('0x3e')];_0x39b301[_0x0d7a('0x3f')]=_0x53fe77[_0x0d7a('0x3f')];_0x39b301[_0x0d7a('0x40')]=_0x53fe77[_0x0d7a('0x40')];_0x39b301[_0x0d7a('0x41')]=_0x53fe77[_0x0d7a('0x41')];_0x39b301[_0x0d7a('0x42')]=_0x53fe77[_0x0d7a('0x42')];_0x39b301[_0x0d7a('0x43')]=_0x53fe77[_0x0d7a('0x43')];_0x39b301[_0x0d7a('0x44')]=_0x53fe77['predictiveIntervalAvgHoldtime'];_0x39b301['predictiveIntervalAvgTalktime']=_0x53fe77[_0x0d7a('0x45')];_0x39b301[_0x0d7a('0x46')]=_0x53fe77['predictiveIntervalDroppedCallsCallersExit'];_0x39b301[_0x0d7a('0x47')]=_0x53fe77[_0x0d7a('0x47')];_0x39b301['predictiveIntervalErlangCalls']=_0x53fe77[_0x0d7a('0x48')];_0x39b301[_0x0d7a('0x49')]=_0x53fe77['predictiveIntervalErlangCallsDroppedCalls'];_0x39b301[_0x0d7a('0x4a')]=_0x53fe77['predictiveIntervalHitRate'];_0x39b301[_0x0d7a('0x4b')]=_0x53fe77['predictiveIntervalMultiplicativeFactor'];_0x39b301['predictiveIntervalPauses']=_0x53fe77[_0x0d7a('0x4c')];_0x39b301['predictiveIntervalAvailable']=_0x53fe77['predictiveIntervalAvailable'];_0x39b301[_0x0d7a('0x4d')]=_0x53fe77[_0x0d7a('0x4d')];_0x39b301[_0x0d7a('0x18')]=_0x53fe77['message'];_0x39b301[_0x0d7a('0x4e')]=_0x53fe77[_0x0d7a('0x4e')];_0x39b301[_0x0d7a('0x4f')]=_0x53fe77['erlangCalls'];_0x39b301[_0x0d7a('0x50')]=_0x53fe77[_0x0d7a('0x50')];_0x39b301['erlangAbandonmentRate']=_0x53fe77['erlangAbandonmentRate'];_0x39b301[_0x0d7a('0x51')]=_0x53fe77[_0x0d7a('0x51')];_0x39b301['startPredictive']=_0x53fe77[_0x0d7a('0x52')];_0x39b301[_0x0d7a('0x53')]=_0x53fe77[_0x0d7a('0x53')];}if(_0x53fe77[_0x0d7a('0x54')]){_0x39b301[_0x0d7a('0x54')]={'id':_0x53fe77[_0x0d7a('0x54')]['id'],'name':_0x53fe77[_0x0d7a('0x54')][_0x0d7a('0x9')],'active':_0x53fe77[_0x0d7a('0x54')][_0x0d7a('0x55')],'callerid':_0x53fe77[_0x0d7a('0x54')][_0x0d7a('0x56')]};}if(_0x53fe77[_0x0d7a('0x57')]){_0x39b301[_0x0d7a('0x57')]={'id':_0x53fe77[_0x0d7a('0x57')]['id'],'name':_0x53fe77[_0x0d7a('0x57')]['name']};}_0x551171[_0x0d7a('0x58')](_0x39b301);}}_0x9c73d4({'count':_0x551171[_0x0d7a('0x59')],'rows':_0x551171});});},'UpdateVoiceQueue':function(_0x592ee3){return new Promise(function(_0x515fc3,_0x4c83d4){var _0x29ce9c=_[_0x0d7a('0x5a')](_0x208f50[_0x0d7a('0x20')],{'id':parseInt(_0x592ee3['id'])});var _0x577f09=_[_0x0d7a('0x5b')](_0x592ee3,['id']);if(_0x29ce9c){for(var _0x3d4aae in _0x577f09){if(typeof _0x577f09[_0x3d4aae]!==_0x0d7a('0x5c')&&typeof _0x29ce9c[_0x3d4aae]!=='undefined'){_0x29ce9c[_0x3d4aae]=_0x577f09[_0x3d4aae];}}_0x515fc3(_0x29ce9c);}else{_0x4c83d4();}});},'VoiceChannels':function(){return new Promise(function(_0x3df15d){var _0x360802=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0x5e')]);_0x3df15d({'count':_0x360802[_0x0d7a('0x59')],'rows':_0x360802});});},'VoiceChannelMixMonitor':function(_0x87de06){var _0x5ce4b0=this;return new Promise(function(_0x378366,_0x4ec6d0){if(ami['isConnected']()==![]){return _0x4ec6d0(_0x5ce4b0[_0x0d7a('0x10')](0x1f4,[config[_0x0d7a('0x1b')]['ip'],config[_0x0d7a('0x1b')][_0x0d7a('0x11')],_0x0d7a('0x1c')]['join']('\x20')));}var _0x1746bf=schema(properties[_0x0d7a('0x5f')])[_0x0d7a('0x2')](_0x87de06);if(_0x1746bf[_0x0d7a('0x59')]>0x0){return _0x4ec6d0(_0x5ce4b0['error'](0x1f4,_[_0x0d7a('0x60')](_0x1746bf,_0x0d7a('0x18'))[_0x0d7a('0x12')](',\x20')));}var _0x1b82de=_[_0x0d7a('0x5a')](_0x208f50[_0x0d7a('0x5e')],{'uniqueid':_0x87de06[_0x0d7a('0x61')]});if(_0x1b82de&&_0x1b82de['channel']){var _0x13637d=util[_0x0d7a('0x62')](_0x0d7a('0x63'),_0x87de06[_0x0d7a('0x64')]||_0x87de06['uniqueid'],_0x87de06[_0x0d7a('0x62')]||_0x0d7a('0x65'));return ami[_0x0d7a('0x17')]({'action':_0x0d7a('0x66'),'channel':_0x1b82de[_0x0d7a('0x67')],'file':_0x13637d,'options':_0x0d7a('0x68')})[_0x0d7a('0x1f')](function(_0x14ef0a){var _0x3664d2=_['find'](_0x1b82de[_0x0d7a('0x69')],{'filename':_0x0d7a('0x6a')+_0x13637d[_0x0d7a('0x6b')]()});if(_['isNil'](_0x3664d2)){_0x1b82de[_0x0d7a('0x69')][_0x0d7a('0x58')]({'filename':_0x0d7a('0x6a')+_0x13637d[_0x0d7a('0x6b')](),'createdAt':moment()[_0x0d7a('0x62')](_0x0d7a('0x6c')),'mixmonitorid':_0x14ef0a[_0x0d7a('0x6d')],'status':_0x0d7a('0x6e')});}else{_0x3664d2[_0x0d7a('0x6d')]=_0x14ef0a['mixmonitorid'];_0x3664d2[_0x0d7a('0x6f')]=_0x0d7a('0x6e');}_0x378366({'code':0xc8,'message':[_0x87de06['uniqueid'],'MixMonitor\x20Success',_0x14ef0a[_0x0d7a('0x6d')]][_0x0d7a('0x12')]('\x20'),'mixmonitorid':_0x14ef0a['mixmonitorid']});})[_0x0d7a('0x19')](function(_0x9b3a91){_0x4ec6d0(_0x5ce4b0[_0x0d7a('0x10')](0x1f5,[_0x87de06['uniqueid'],_0x9b3a91['message'][_0x0d7a('0x6b')]()][_0x0d7a('0x12')]('\x20')));});}else{return _0x4ec6d0(_0x5ce4b0[_0x0d7a('0x10')](0x1f5,_0x0d7a('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x21a497){var _0x5e82a1=this;return new Promise(function(_0x568ca5,_0x321640){if(ami[_0x0d7a('0x1a')]()==![]){return _0x321640(_0x5e82a1[_0x0d7a('0x10')](0x1f4,[config[_0x0d7a('0x1b')]['ip'],config[_0x0d7a('0x1b')][_0x0d7a('0x11')],'ami\x20disconnected']['join']('\x20')));}var _0x344b9c=schema(properties[_0x0d7a('0x5f')])[_0x0d7a('0x2')](_0x21a497);if(_0x344b9c[_0x0d7a('0x59')]>0x0){return _0x321640(_0x5e82a1[_0x0d7a('0x10')](0x1f4,_[_0x0d7a('0x60')](_0x344b9c,'message')[_0x0d7a('0x12')](',\x20')));}var _0x2b6282=_['find'](_0x208f50[_0x0d7a('0x5e')],{'uniqueid':_0x21a497[_0x0d7a('0x61')]});if(_0x2b6282){return Promise[_0x0d7a('0x71')]()[_0x0d7a('0x1f')](function(){if(_0x2b6282[_0x0d7a('0x67')]){return ami[_0x0d7a('0x17')]({'action':_0x0d7a('0x72'),'channel':_0x2b6282['channel'],'mixmonitorid':_0x21a497[_0x0d7a('0x6d')]})[_0x0d7a('0x19')](function(){});}})[_0x0d7a('0x1f')](function(){if(_0x2b6282[_0x0d7a('0x73')]){return ami['Action']({'action':_0x0d7a('0x72'),'channel':_0x2b6282[_0x0d7a('0x73')],'mixmonitorid':_0x21a497[_0x0d7a('0x6d')]})['catch'](function(){});}})[_0x0d7a('0x1f')](function(){var _0x38edb7=_['find'](_0x2b6282[_0x0d7a('0x69')],{'mixmonitorid':_0x21a497[_0x0d7a('0x6d')]});if(_0x38edb7){_0x38edb7[_0x0d7a('0x6f')]=_0x0d7a('0x74');}})[_0x0d7a('0x1f')](function(){var _0x3e3799=util[_0x0d7a('0x62')]('%s.%s',_0x21a497[_0x0d7a('0x64')]||_0x21a497[_0x0d7a('0x61')],_0x21a497[_0x0d7a('0x62')]||_0x0d7a('0x65'));var _0xb16305=_[_0x0d7a('0x5a')](_0x2b6282[_0x0d7a('0x69')],{'filename':_0x0d7a('0x6a')+_0x3e3799[_0x0d7a('0x6b')]()});if(_0xb16305){_0xb16305[_0x0d7a('0x6f')]=_0x0d7a('0x74');}})[_0x0d7a('0x1f')](function(){_0x568ca5({'code':0xc8,'message':[_0x21a497[_0x0d7a('0x61')],_0x0d7a('0x75')][_0x0d7a('0x12')]('\x20')});})[_0x0d7a('0x19')](function(_0x2cb3c4){_0x321640(_0x5e82a1[_0x0d7a('0x10')](0x1f5,[_0x21a497[_0x0d7a('0x61')],_0x2cb3c4['message'][_0x0d7a('0x6b')]()][_0x0d7a('0x12')]('\x20')));});}else{return _0x321640(_0x5e82a1[_0x0d7a('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x32022a){var _0x122880=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0x76')]);_0x32022a({'count':_0x122880[_0x0d7a('0x59')],'rows':_0x122880});});},'VoiceQueuesChannel':function(_0x4d20a8){var _0x5c37be=this;return new Promise(function(_0x44a171,_0x545044){var _0x9a37c2=schema(properties[_0x0d7a('0x77')])[_0x0d7a('0x2')](_0x4d20a8);if(_0x9a37c2['length']>0x0){return _0x545044(_0x5c37be[_0x0d7a('0x10')](0x1f4,_['map'](_0x9a37c2,'message')['join'](',\x20')));}var _0xd6bf62=_[_0x0d7a('0x5a')](_0x208f50[_0x0d7a('0x76')],{'uniqueid':_0x4d20a8[_0x0d7a('0x61')]});if(_0xd6bf62){_0x44a171(_0xd6bf62);}else{return _0x545044(_0x5c37be[_0x0d7a('0x10')](0x1f5,_0x0d7a('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x16069c){var _0x439947=this;return new Promise(function(_0x92a36a,_0x4a698c){if(ami[_0x0d7a('0x1a')]()==![]){return _0x4a698c(_0x439947[_0x0d7a('0x10')](0x1f4,[config[_0x0d7a('0x1b')]['ip'],config[_0x0d7a('0x1b')]['username'],'ami\x20disconnected'][_0x0d7a('0x12')]('\x20')));}var _0x49173d=schema(properties[_0x0d7a('0x78')])[_0x0d7a('0x2')](_0x16069c);if(_0x49173d[_0x0d7a('0x59')]>0x0){return _0x4a698c(_0x439947[_0x0d7a('0x10')](0x1f4,_[_0x0d7a('0x60')](_0x49173d,_0x0d7a('0x18'))['join'](',\x20')));}var _0x184368=_[_0x0d7a('0x5a')](_0x208f50[_0x0d7a('0x76')],{'uniqueid':_0x16069c['uniqueid']});if(_0x184368&&_0x184368[_0x0d7a('0x67')]){return ami[_0x0d7a('0x17')]({'action':_0x0d7a('0x79'),'channel':_0x184368[_0x0d7a('0x67')]})['then'](function(_0x3781b2){_0x92a36a({'code':0xc8,'message':[_0x16069c['uniqueid'],_0x3781b2['message']['toLowerCase']()]['join']('\x20')});})['catch'](function(_0x5e2a50){_0x4a698c(_0x439947[_0x0d7a('0x10')](0x1f5,[_0x16069c[_0x0d7a('0x61')],_0x5e2a50['message'][_0x0d7a('0x6b')]()][_0x0d7a('0x12')]('\x20')));});}else{return _0x4a698c(_0x439947['error'](0x1f5,_0x0d7a('0x70')));}});},'VoiceQueuesChannelRedirect':function(_0x2181cf){var _0x10ae32=this;return new Promise(function(_0x4e97f2,_0x516a60){if(ami['isConnected']()==![]){return _0x516a60(_0x10ae32[_0x0d7a('0x10')](0x1f4,[config[_0x0d7a('0x1b')]['ip'],config['asterisk']['username'],_0x0d7a('0x1c')][_0x0d7a('0x12')]('\x20')));}var _0x2ad7a3=schema(properties['voicequeuechannelredirect'])[_0x0d7a('0x2')](_0x2181cf);if(_0x2ad7a3[_0x0d7a('0x59')]>0x0){return _0x516a60(_0x10ae32[_0x0d7a('0x10')](0x1f4,_[_0x0d7a('0x60')](_0x2ad7a3,'message')['join'](',\x20')));}var _0xf347dc=_[_0x0d7a('0x5a')](_0x208f50['queueChannels'],{'uniqueid':_0x2181cf[_0x0d7a('0x61')]});if(_0xf347dc&&_0xf347dc[_0x0d7a('0x67')]){return ami[_0x0d7a('0x17')]({'action':_0x0d7a('0x7a'),'channel':_0xf347dc[_0x0d7a('0x67')],'exten':_0x2181cf[_0x0d7a('0x7b')],'context':_0x2181cf[_0x0d7a('0x7c')]||_0xf347dc['context'],'priority':0x1})[_0x0d7a('0x1f')](function(_0x346565){_0x4e97f2({'code':0xc8,'message':[_0x2181cf[_0x0d7a('0x61')],_0x346565['message'][_0x0d7a('0x6b')]()][_0x0d7a('0x12')]('\x20')});})[_0x0d7a('0x19')](function(_0x25e9a3){_0x516a60(_0x10ae32[_0x0d7a('0x10')](0x1f5,[_0x2181cf[_0x0d7a('0x61')],_0x25e9a3['message'][_0x0d7a('0x6b')]()][_0x0d7a('0x12')]('\x20')));});}else{return _0x516a60(_0x10ae32[_0x0d7a('0x10')](0x1f5,_0x0d7a('0x70')));}});},'Agents':function(_0x19fe17){return new Promise(function(_0x4e293b){var _0xb86a6e=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0xd')]);if(_0x19fe17&&_0x19fe17['id']){var _0xd4d066=_[_0x0d7a('0x5a')](_0xb86a6e,function(_0x189855){return _0x189855['id']===_0x19fe17['id'];});_0x4e293b(_0xd4d066);}else{_0x4e293b({'count':_0xb86a6e['length'],'rows':_0xb86a6e});}});},'Telephones':function(){return new Promise(function(_0x2772ab){var _0x33d980=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0x7d')]);_0x2772ab({'count':_0x33d980[_0x0d7a('0x59')],'rows':_0x33d980});});},'Trunks':function(){return new Promise(function(_0x25fce8){var _0x2c80fa=_[_0x0d7a('0x5d')](_0x208f50['trunks']);_0x25fce8({'count':_0x2c80fa[_0x0d7a('0x59')],'rows':_0x2c80fa});});},'OutboundChannels':function(){return new Promise(function(_0x9f22d){var _0x496c5f=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0x7e')]);_0x9f22d({'count':_0x496c5f[_0x0d7a('0x59')],'rows':_0x496c5f});});},'Outbound':function(){return new Promise(function(_0x39a8ba){_0x39a8ba(_0x208f50[_0x0d7a('0x2e')]);});},'Campaigns':function(){return new Promise(function(_0x126f54){var _0xf7987d=_[_0x0d7a('0x5d')](_0x208f50[_0x0d7a('0x7f')]);_0x126f54({'count':_0xf7987d[_0x0d7a('0x59')],'rows':_0xf7987d});});},'VoiceQueuesPreview':function(_0x59a4b8){var _0x3d1026=this;return new Promise(function(_0x5aacd8,_0x1a3ba2){_0x564935[_0x0d7a('0x80')](_0x59a4b8['id'])[_0x0d7a('0x1f')](function(_0x5a8f9){_0x5aacd8({'code':0xc8,'message':_0x5a8f9[_0x0d7a('0x18')]});})['catch'](function(_0x4824fe){_0x1a3ba2(_0x3d1026['error'](0x1f4,_0x4824fe[_0x0d7a('0x18')]));});});},'EventManager':function(_0x3c25d0){var _0x5cd4ba=this;return new Promise(function(_0x2e0219,_0x2454f9){if(!_0x3c25d0[_0x0d7a('0x81')]){return _0x2454f9(_0x5cd4ba[_0x0d7a('0x10')](0x1f4,_0x0d7a('0x82')));}ami['emit'](_0x0d7a('0x83')+_0x3c25d0[_0x0d7a('0x81')],_0x3c25d0[_0x0d7a('0x18')]);_0x2e0219({'code':0xc8,'message':_0x3c25d0});});},'FaxAccounts':function(){return new Promise(function(_0x59c7d3){var _0x50e574=_[_0x0d7a('0x5d')](_0x208f50['faxAccounts']);_0x59c7d3({'count':_0x50e574[_0x0d7a('0x59')],'rows':_0x50e574});});},'SendFax':function(_0x19309b){var _0x144b01=this;return new Promise(function(_0x19ac41,_0x731ee8){_0x34f0f8['send'](_0x19309b)['then'](function(_0x3d9218){_0x19ac41({'code':0xc8,'message':_0x3d9218[_0x0d7a('0x18')]});})[_0x0d7a('0x19')](function(_0x3e551d){_0x731ee8(_0x144b01[_0x0d7a('0x10')](0x1f4,_0x3e551d[_0x0d7a('0x18')]));});});},'CheckAfterSend':function(_0x5e30ae){var _0x5a87a2=this;return new Promise(function(_0x407f76,_0x3637b7){_0x34f0f8[_0x0d7a('0x84')](_0x5e30ae)[_0x0d7a('0x1f')](function(_0x2787c5){_0x407f76({'code':0xc8,'message':_0x2787c5[_0x0d7a('0x18')]});})[_0x0d7a('0x19')](function(_0x47d2a1){_0x3637b7(_0x5a87a2[_0x0d7a('0x10')](0x1f4,_0x47d2a1[_0x0d7a('0x18')]));});});}};var _0x5ebe5c=jayson[_0x0d7a('0x85')](_0x16461e)[_0x0d7a('0x86')]();_0x5ebe5c['on'](_0x0d7a('0x10'),function(_0x3e138e){return _0x321114(_0x3e138e);});_0x5ebe5c[_0x0d7a('0x6')](0x232a,_0x0d7a('0x87'),function(){console['log'](_0x0d7a('0x88'),0x232a);return _0x37c000(_0x0d7a('0x89')+0x232a);});});};
\ No newline at end of file
+var _0xd757=['predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','channels','ami\x20disconnected','voicechannel','length','map','uniqueid','channel','%s.%s','wav','MixMonitor','monitors','toLowerCase','isNil','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','status','stop','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','../properties','../ami','format','%s/%s','SIP','name','timers','timer','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','join','pick','keys','module','action','Reload','then','message','catch','command','Command','Action','content','voiceQueues','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout'];(function(_0x589f3d,_0x82a40c){var _0x1f94cc=function(_0x781485){while(--_0x781485){_0x589f3d['push'](_0x589f3d['shift']());}};_0x1f94cc(++_0x82a40c);}(_0xd757,0x1e5));var _0x7d75=function(_0x56db0f,_0x2e9025){_0x56db0f=_0x56db0f-0x0;var _0x3be3db=_0xd757[_0x56db0f];return _0x3be3db;};'use strict';var _=require(_0x7d75('0x0'));var util=require(_0x7d75('0x1'));var jayson=require(_0x7d75('0x2'));var schema=require(_0x7d75('0x3'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x7d75('0x4'));var ami=require(_0x7d75('0x5'));exports['listen']=function(_0xa7df66,_0x10d11a,_0x42c15a){return new Promise(function(_0x52bb43,_0x5d6128){var _0x108c0d={'QueuePause':function(_0x3fde33){return new Promise(function(_0x1cf272){var _0x276fb0=util[_0x7d75('0x6')](_0x7d75('0x7'),_0x7d75('0x8'),_0x3fde33[_0x7d75('0x9')]);if(_0xa7df66[_0x7d75('0xa')]&&_0xa7df66[_0x7d75('0xa')][_0x276fb0]&&_0xa7df66[_0x7d75('0xa')][_0x276fb0][_0x7d75('0xb')]){_0xa7df66[_0x7d75('0xa')][_0x276fb0]['updateAcw']();}if(_0xa7df66['agents'][_0x276fb0]){_0xa7df66[_0x7d75('0xc')][_0x276fb0][_0x7d75('0xd')]({'statePause':_0x3fde33[_0x7d75('0xe')]?!![]:![]});}_0x1cf272({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x3e7b97){var _0x3a5ca5=this;return new Promise(function(_0x5c9fcf,_0x452c45){if(ami[_0x7d75('0xf')]()==![]){return _0x452c45(_0x3a5ca5[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],'ami\x20disconnected'][_0x7d75('0x13')]('\x20')));}_0x3e7b97=_[_0x7d75('0x14')](_0x3e7b97,_[_0x7d75('0x15')](properties[_0x7d75('0x16')]));_0x3e7b97[_0x7d75('0x17')]=_0x7d75('0x18');return ami['Action'](_0x3e7b97)[_0x7d75('0x19')](function(_0x5c203f){_0x5c9fcf({'code':0xc8,'message':_0x5c203f[_0x7d75('0x1a')]});})[_0x7d75('0x1b')](function(_0x40edfc){_0x452c45(_0x3a5ca5[_0x7d75('0x10')](0x1f5,_0x40edfc[_0x7d75('0x1a')]));});});},'Command':function(_0x12295a){var _0x17a61c=this;return new Promise(function(_0x250c7b,_0x55b89d){if(ami['isConnected']()==![]){return _0x55b89d(_0x17a61c[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],'ami\x20disconnected'][_0x7d75('0x13')]('\x20')));}_0x12295a=_[_0x7d75('0x14')](_0x12295a,_0x7d75('0x1c'));_0x12295a[_0x7d75('0x17')]=_0x7d75('0x1d');return ami[_0x7d75('0x1e')](_0x12295a)[_0x7d75('0x19')](function(_0x3490d4){_0x250c7b({'code':0xc8,'message':_0x3490d4[_0x7d75('0x1f')]});})[_0x7d75('0x1b')](function(_0x3be591){_0x55b89d(_0x17a61c[_0x7d75('0x10')](0x1f5,_0x3be591[_0x7d75('0x1a')]));});});},'VoiceQueues':function(){return new Promise(function(_0x9a831b){var _0x1e32d6=[];for(var _0x338e26 in _0xa7df66[_0x7d75('0x20')]){if(_0xa7df66[_0x7d75('0x20')]['hasOwnProperty'](_0x338e26)){var _0xec279d=_0xa7df66[_0x7d75('0x20')][_0x338e26];var _0x4f67e6={'id':_0xec279d['id'],'name':_0xec279d[_0x7d75('0x9')],'strategy':_0xec279d['strategy'],'answered':_0xec279d[_0x7d75('0x21')],'available':_0xec279d[_0x7d75('0x22')],'loggedIn':_0xec279d[_0x7d75('0x23')],'pTalking':_0xec279d[_0x7d75('0x24')],'sumBillable':_0xec279d[_0x7d75('0x25')],'sumDuration':_0xec279d['sumDuration'],'sumHoldTime':_0xec279d[_0x7d75('0x26')]||0x0,'talking':_0xec279d[_0x7d75('0x27')],'total':_0xec279d[_0x7d75('0x28')],'type':_0xec279d[_0x7d75('0x29')],'unmanaged':_0xec279d[_0x7d75('0x2a')],'abandoned':_0xec279d[_0x7d75('0x2b')],'waiting':_0xec279d['waiting'],'loggedInDb':_0xec279d[_0x7d75('0x2c')]};if(_0xec279d[_0x7d75('0x29')]===_0x7d75('0x2d')){_0x4f67e6[_0x7d75('0x2e')]=_0xec279d[_0x7d75('0x2e')];_0x4f67e6[_0x7d75('0x2f')]=_0xec279d[_0x7d75('0x2f')];_0x4f67e6['dialOriginateCallerIdName']=_0xec279d['dialOriginateCallerIdName'];_0x4f67e6['dialOriginateCallerIdNumber']=_0xec279d[_0x7d75('0x30')];_0x4f67e6['dialOriginateTimeout']=_0xec279d[_0x7d75('0x31')];_0x4f67e6[_0x7d75('0x32')]=_0xec279d[_0x7d75('0x32')];_0x4f67e6[_0x7d75('0x33')]=_0xec279d[_0x7d75('0x33')];_0x4f67e6['outboundAnswerAgiCallsDay']=_0xec279d[_0x7d75('0x34')];_0x4f67e6[_0x7d75('0x35')]=_0xec279d[_0x7d75('0x35')];_0x4f67e6[_0x7d75('0x36')]=_0xec279d[_0x7d75('0x36')];_0x4f67e6[_0x7d75('0x37')]=_0xec279d[_0x7d75('0x37')];_0x4f67e6[_0x7d75('0x38')]=_0xec279d[_0x7d75('0x38')];_0x4f67e6[_0x7d75('0x39')]=_0xec279d['outboundDropCallsDayACS'];_0x4f67e6[_0x7d75('0x3a')]=_0xec279d[_0x7d75('0x3a')];_0x4f67e6[_0x7d75('0x3b')]=_0xec279d[_0x7d75('0x3b')];_0x4f67e6[_0x7d75('0x3c')]=_0xec279d[_0x7d75('0x3c')];_0x4f67e6['outboundNoSuchCallsDay']=_0xec279d[_0x7d75('0x3d')];_0x4f67e6[_0x7d75('0x3e')]=_0xec279d['outboundOriginateFailureCallsDay'];_0x4f67e6['outboundReCallsDay']=_0xec279d[_0x7d75('0x3f')];_0x4f67e6[_0x7d75('0x40')]=_0xec279d[_0x7d75('0x40')];_0x4f67e6[_0x7d75('0x41')]=_0xec279d[_0x7d75('0x41')];_0x4f67e6[_0x7d75('0x42')]=_0xec279d['predictiveIntervalAnsweredCalls'];_0x4f67e6[_0x7d75('0x43')]=_0xec279d[_0x7d75('0x43')];_0x4f67e6['predictiveIntervalAvgTalktime']=_0xec279d[_0x7d75('0x44')];_0x4f67e6[_0x7d75('0x45')]=_0xec279d[_0x7d75('0x45')];_0x4f67e6[_0x7d75('0x46')]=_0xec279d[_0x7d75('0x46')];_0x4f67e6[_0x7d75('0x47')]=_0xec279d[_0x7d75('0x47')];_0x4f67e6[_0x7d75('0x48')]=_0xec279d[_0x7d75('0x48')];_0x4f67e6[_0x7d75('0x49')]=_0xec279d[_0x7d75('0x49')];_0x4f67e6[_0x7d75('0x4a')]=_0xec279d[_0x7d75('0x4a')];_0x4f67e6[_0x7d75('0x4b')]=_0xec279d[_0x7d75('0x4b')];_0x4f67e6[_0x7d75('0x4c')]=_0xec279d[_0x7d75('0x4c')];_0x4f67e6[_0x7d75('0x4d')]=_0xec279d[_0x7d75('0x4d')];_0x4f67e6[_0x7d75('0x1a')]=_0xec279d['message'];_0x4f67e6['originated']=_0xec279d[_0x7d75('0x4e')];_0x4f67e6[_0x7d75('0x4f')]=_0xec279d[_0x7d75('0x4f')];_0x4f67e6[_0x7d75('0x50')]=_0xec279d[_0x7d75('0x50')];_0x4f67e6[_0x7d75('0x51')]=_0xec279d[_0x7d75('0x51')];_0x4f67e6['erlangBusyFactor']=_0xec279d[_0x7d75('0x52')];_0x4f67e6[_0x7d75('0x53')]=_0xec279d[_0x7d75('0x53')];_0x4f67e6['startProgressive']=_0xec279d[_0x7d75('0x54')];}if(_0xec279d[_0x7d75('0x55')]){_0x4f67e6[_0x7d75('0x55')]={'id':_0xec279d[_0x7d75('0x55')]['id'],'name':_0xec279d[_0x7d75('0x55')][_0x7d75('0x9')],'active':_0xec279d[_0x7d75('0x55')][_0x7d75('0x56')],'callerid':_0xec279d[_0x7d75('0x55')][_0x7d75('0x57')]};}if(_0xec279d[_0x7d75('0x58')]){_0x4f67e6['Interval']={'id':_0xec279d[_0x7d75('0x58')]['id'],'name':_0xec279d['Interval']['name']};}_0x1e32d6[_0x7d75('0x59')](_0x4f67e6);}}_0x9a831b({'count':_0x1e32d6['length'],'rows':_0x1e32d6});});},'UpdateVoiceQueue':function(_0x1882ff){return new Promise(function(_0x32ee99,_0x4dfa00){var _0x264aeb=_[_0x7d75('0x5a')](_0xa7df66[_0x7d75('0x20')],{'id':parseInt(_0x1882ff['id'])});var _0x1db74e=_[_0x7d75('0x5b')](_0x1882ff,['id']);if(_0x264aeb){for(var _0x3982f8 in _0x1db74e){if(typeof _0x1db74e[_0x3982f8]!==_0x7d75('0x5c')&&typeof _0x264aeb[_0x3982f8]!==_0x7d75('0x5c')){_0x264aeb[_0x3982f8]=_0x1db74e[_0x3982f8];}}_0x32ee99(_0x264aeb);}else{_0x4dfa00();}});},'VoiceChannels':function(){return new Promise(function(_0x5a8a87){var _0x2b314d=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x5e')]);_0x5a8a87({'count':_0x2b314d['length'],'rows':_0x2b314d});});},'VoiceChannelMixMonitor':function(_0x1a0048){var _0x388850=this;return new Promise(function(_0x34ff66,_0x277788){if(ami[_0x7d75('0xf')]()==![]){return _0x277788(_0x388850[_0x7d75('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],_0x7d75('0x5f')][_0x7d75('0x13')]('\x20')));}var _0x4cb900=schema(properties[_0x7d75('0x60')])['validate'](_0x1a0048);if(_0x4cb900[_0x7d75('0x61')]>0x0){return _0x277788(_0x388850[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x4cb900,'message')[_0x7d75('0x13')](',\x20')));}var _0x5542e4=_[_0x7d75('0x5a')](_0xa7df66['channels'],{'uniqueid':_0x1a0048[_0x7d75('0x63')]});if(_0x5542e4&&_0x5542e4[_0x7d75('0x64')]){var _0x1009eb=util['format'](_0x7d75('0x65'),_0x1a0048['filename']||_0x1a0048[_0x7d75('0x63')],_0x1a0048[_0x7d75('0x6')]||_0x7d75('0x66'));return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x67'),'channel':_0x5542e4['channel'],'file':_0x1009eb,'options':'ai(mixmonitorid)'})[_0x7d75('0x19')](function(_0x59774a){var _0x227eed=_[_0x7d75('0x5a')](_0x5542e4[_0x7d75('0x68')],{'filename':'/var/spool/asterisk/monitor/'+_0x1009eb[_0x7d75('0x69')]()});if(_[_0x7d75('0x6a')](_0x227eed)){_0x5542e4[_0x7d75('0x68')][_0x7d75('0x59')]({'filename':_0x7d75('0x6b')+_0x1009eb['toLowerCase'](),'createdAt':moment()[_0x7d75('0x6')](_0x7d75('0x6c')),'mixmonitorid':_0x59774a[_0x7d75('0x6d')],'status':'rec'});}else{_0x227eed['mixmonitorid']=_0x59774a[_0x7d75('0x6d')];_0x227eed['status']='rec';}_0x34ff66({'code':0xc8,'message':[_0x1a0048[_0x7d75('0x63')],_0x7d75('0x6e'),_0x59774a['mixmonitorid']][_0x7d75('0x13')]('\x20'),'mixmonitorid':_0x59774a[_0x7d75('0x6d')]});})['catch'](function(_0x41792c){_0x277788(_0x388850[_0x7d75('0x10')](0x1f5,[_0x1a0048['uniqueid'],_0x41792c[_0x7d75('0x1a')][_0x7d75('0x69')]()][_0x7d75('0x13')]('\x20')));});}else{return _0x277788(_0x388850[_0x7d75('0x10')](0x1f5,_0x7d75('0x6f')));}});},'VoiceChannelStopMixMonitor':function(_0x93cec5){var _0x18a6bf=this;return new Promise(function(_0x2c2286,_0x3139bc){if(ami[_0x7d75('0xf')]()==![]){return _0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x7d75('0x11')]['username'],_0x7d75('0x5f')]['join']('\x20')));}var _0x276e9b=schema(properties['voicechannel'])[_0x7d75('0x3')](_0x93cec5);if(_0x276e9b[_0x7d75('0x61')]>0x0){return _0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f4,_['map'](_0x276e9b,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x119a2b=_['find'](_0xa7df66[_0x7d75('0x5e')],{'uniqueid':_0x93cec5['uniqueid']});if(_0x119a2b){return Promise[_0x7d75('0x70')]()['then'](function(){if(_0x119a2b[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x71'),'channel':_0x119a2b['channel'],'mixmonitorid':_0x93cec5['mixmonitorid']})[_0x7d75('0x1b')](function(){});}})[_0x7d75('0x19')](function(){if(_0x119a2b['destinationchannel']){return ami['Action']({'action':_0x7d75('0x71'),'channel':_0x119a2b['destinationchannel'],'mixmonitorid':_0x93cec5[_0x7d75('0x6d')]})[_0x7d75('0x1b')](function(){});}})[_0x7d75('0x19')](function(){var _0x49301a=_[_0x7d75('0x5a')](_0x119a2b[_0x7d75('0x68')],{'mixmonitorid':_0x93cec5['mixmonitorid']});if(_0x49301a){_0x49301a[_0x7d75('0x72')]='stop';}})[_0x7d75('0x19')](function(){var _0x2c7381=util[_0x7d75('0x6')](_0x7d75('0x65'),_0x93cec5['filename']||_0x93cec5[_0x7d75('0x63')],_0x93cec5[_0x7d75('0x6')]||_0x7d75('0x66'));var _0x112e74=_[_0x7d75('0x5a')](_0x119a2b[_0x7d75('0x68')],{'filename':_0x7d75('0x6b')+_0x2c7381[_0x7d75('0x69')]()});if(_0x112e74){_0x112e74[_0x7d75('0x72')]=_0x7d75('0x73');}})[_0x7d75('0x19')](function(){_0x2c2286({'code':0xc8,'message':[_0x93cec5[_0x7d75('0x63')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x7d75('0x1b')](function(_0x5d763c){_0x3139bc(_0x18a6bf[_0x7d75('0x10')](0x1f5,[_0x93cec5[_0x7d75('0x63')],_0x5d763c[_0x7d75('0x1a')][_0x7d75('0x69')]()][_0x7d75('0x13')]('\x20')));});}else{return _0x3139bc(_0x18a6bf['error'](0x1f5,_0x7d75('0x6f')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x162e33){var _0x540b54=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x74')]);_0x162e33({'count':_0x540b54[_0x7d75('0x61')],'rows':_0x540b54});});},'VoiceQueuesChannel':function(_0x4390f4){var _0x475a8d=this;return new Promise(function(_0x33b9ec,_0x3b210b){var _0x34ff8c=schema(properties[_0x7d75('0x75')])[_0x7d75('0x3')](_0x4390f4);if(_0x34ff8c['length']>0x0){return _0x3b210b(_0x475a8d[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x34ff8c,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x3102df=_['find'](_0xa7df66[_0x7d75('0x74')],{'uniqueid':_0x4390f4[_0x7d75('0x63')]});if(_0x3102df){_0x33b9ec(_0x3102df);}else{return _0x3b210b(_0x475a8d[_0x7d75('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x5c5ecb){var _0x1f5ae6=this;return new Promise(function(_0x1b3e13,_0x1b0466){if(ami[_0x7d75('0xf')]()==![]){return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')][_0x7d75('0x12')],_0x7d75('0x5f')]['join']('\x20')));}var _0x3b0220=schema(properties[_0x7d75('0x76')])['validate'](_0x5c5ecb);if(_0x3b0220[_0x7d75('0x61')]>0x0){return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f4,_[_0x7d75('0x62')](_0x3b0220,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x28652c=_[_0x7d75('0x5a')](_0xa7df66[_0x7d75('0x74')],{'uniqueid':_0x5c5ecb[_0x7d75('0x63')]});if(_0x28652c&&_0x28652c[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x77'),'channel':_0x28652c[_0x7d75('0x64')]})['then'](function(_0x43dd3d){_0x1b3e13({'code':0xc8,'message':[_0x5c5ecb[_0x7d75('0x63')],_0x43dd3d[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')});})[_0x7d75('0x1b')](function(_0x1d251c){_0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f5,[_0x5c5ecb[_0x7d75('0x63')],_0x1d251c[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')));});}else{return _0x1b0466(_0x1f5ae6[_0x7d75('0x10')](0x1f5,_0x7d75('0x6f')));}});},'VoiceQueuesChannelRedirect':function(_0x25026a){var _0x404427=this;return new Promise(function(_0x4932ef,_0x3ba1c1){if(ami[_0x7d75('0xf')]()==![]){return _0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f4,[config[_0x7d75('0x11')]['ip'],config[_0x7d75('0x11')]['username'],_0x7d75('0x5f')][_0x7d75('0x13')]('\x20')));}var _0x50ca10=schema(properties['voicequeuechannelredirect'])[_0x7d75('0x3')](_0x25026a);if(_0x50ca10[_0x7d75('0x61')]>0x0){return _0x3ba1c1(_0x404427['error'](0x1f4,_[_0x7d75('0x62')](_0x50ca10,_0x7d75('0x1a'))[_0x7d75('0x13')](',\x20')));}var _0x54c813=_['find'](_0xa7df66['queueChannels'],{'uniqueid':_0x25026a['uniqueid']});if(_0x54c813&&_0x54c813[_0x7d75('0x64')]){return ami[_0x7d75('0x1e')]({'action':_0x7d75('0x78'),'channel':_0x54c813[_0x7d75('0x64')],'exten':_0x25026a[_0x7d75('0x79')],'context':_0x25026a[_0x7d75('0x7a')]||_0x54c813['context'],'priority':0x1})[_0x7d75('0x19')](function(_0x5ab958){_0x4932ef({'code':0xc8,'message':[_0x25026a[_0x7d75('0x63')],_0x5ab958['message']['toLowerCase']()][_0x7d75('0x13')]('\x20')});})[_0x7d75('0x1b')](function(_0x4ba429){_0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f5,[_0x25026a[_0x7d75('0x63')],_0x4ba429[_0x7d75('0x1a')][_0x7d75('0x69')]()]['join']('\x20')));});}else{return _0x3ba1c1(_0x404427[_0x7d75('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x4ced55){return new Promise(function(_0x50d481){var _0x20f07c=_[_0x7d75('0x5d')](_0xa7df66['agents']);if(_0x4ced55&&_0x4ced55['id']){var _0x18b03e=_[_0x7d75('0x5a')](_0x20f07c,function(_0x65a03e){return _0x65a03e['id']===_0x4ced55['id'];});_0x50d481(_0x18b03e);}else{_0x50d481({'count':_0x20f07c['length'],'rows':_0x20f07c});}});},'Telephones':function(){return new Promise(function(_0xda12f2){var _0xb8e3c6=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x7b')]);_0xda12f2({'count':_0xb8e3c6['length'],'rows':_0xb8e3c6});});},'Trunks':function(){return new Promise(function(_0x298110){var _0x49d18e=_['values'](_0xa7df66[_0x7d75('0x7c')]);_0x298110({'count':_0x49d18e[_0x7d75('0x61')],'rows':_0x49d18e});});},'OutboundChannels':function(){return new Promise(function(_0xa41c48){var _0xa0fe46=_['values'](_0xa7df66[_0x7d75('0x7d')]);_0xa41c48({'count':_0xa0fe46[_0x7d75('0x61')],'rows':_0xa0fe46});});},'Outbound':function(){return new Promise(function(_0x85c1ab){_0x85c1ab(_0xa7df66[_0x7d75('0x2d')]);});},'Campaigns':function(){return new Promise(function(_0x2da156){var _0x19ab8f=_['values'](_0xa7df66[_0x7d75('0x7e')]);_0x2da156({'count':_0x19ab8f[_0x7d75('0x61')],'rows':_0x19ab8f});});},'VoiceQueuesPreview':function(_0x4ad58b){var _0x37d4f4=this;return new Promise(function(_0x44bac0,_0x32a541){_0x10d11a[_0x7d75('0x7f')](_0x4ad58b['id'])[_0x7d75('0x19')](function(_0x36ee1a){_0x44bac0({'code':0xc8,'message':_0x36ee1a[_0x7d75('0x1a')]});})['catch'](function(_0x1cf32d){_0x32a541(_0x37d4f4[_0x7d75('0x10')](0x1f4,_0x1cf32d[_0x7d75('0x1a')]));});});},'EventManager':function(_0x112055){var _0xf2c160=this;return new Promise(function(_0x1595db,_0x73a194){if(!_0x112055[_0x7d75('0x80')]){return _0x73a194(_0xf2c160[_0x7d75('0x10')](0x1f4,_0x7d75('0x81')));}ami['emit'](_0x7d75('0x82')+_0x112055[_0x7d75('0x80')],_0x112055[_0x7d75('0x1a')]);_0x1595db({'code':0xc8,'message':_0x112055});});},'FaxAccounts':function(){return new Promise(function(_0x1cbdd5){var _0x1a9dd6=_[_0x7d75('0x5d')](_0xa7df66[_0x7d75('0x83')]);_0x1cbdd5({'count':_0x1a9dd6[_0x7d75('0x61')],'rows':_0x1a9dd6});});},'SendFax':function(_0xbb43dc){var _0x451b1f=this;return new Promise(function(_0x34e5e3,_0x1bcc5b){_0x42c15a[_0x7d75('0x84')](_0xbb43dc)[_0x7d75('0x19')](function(_0x47be37){_0x34e5e3({'code':0xc8,'message':_0x47be37['message']});})[_0x7d75('0x1b')](function(_0x3afb49){_0x1bcc5b(_0x451b1f[_0x7d75('0x10')](0x1f4,_0x3afb49[_0x7d75('0x1a')]));});});},'CheckAfterSend':function(_0x346be2){var _0x3eaf02=this;return new Promise(function(_0x445fa0,_0x552bce){_0x42c15a['checkAfterSend'](_0x346be2)[_0x7d75('0x19')](function(_0x214024){_0x445fa0({'code':0xc8,'message':_0x214024[_0x7d75('0x1a')]});})[_0x7d75('0x1b')](function(_0x3eb5b0){_0x552bce(_0x3eaf02[_0x7d75('0x10')](0x1f4,_0x3eb5b0['message']));});});}};var _0x4f11f0=jayson[_0x7d75('0x85')](_0x108c0d)[_0x7d75('0x86')]();_0x4f11f0['on'](_0x7d75('0x10'),function(_0x281cf1){return _0x5d6128(_0x281cf1);});_0x4f11f0[_0x7d75('0x87')](0x232a,_0x7d75('0x88'),function(){console[_0x7d75('0x89')](_0x7d75('0x8a'),0x232a);return _0x52bb43('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index f33cc1c..a05d52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc96c=['data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','info','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','uniqueid','firstName','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','name','format','trigger:%s','action','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','[CM][%s][%s]','stringify','emit','exec','data1'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xc96c,0x1e9));var _0xcc96=function(_0x5474b4,_0x5027aa){_0x5474b4=_0x5474b4-0x0;var _0x33a0b5=_0xc96c[_0x5474b4];return _0x33a0b5;};'use strict';var _=require('lodash');var BPromise=require(_0xcc96('0x0'));var Redis=require(_0xcc96('0x1'));var util=require(_0xcc96('0x2'));var config=require(_0xcc96('0x3'));var logger=require(_0xcc96('0x4'))(_0xcc96('0x5'));var cmContactRpc=require(_0xcc96('0x6'));config[_0xcc96('0x7')]=_[_0xcc96('0x8')](config[_0xcc96('0x7')],{'host':_0xcc96('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcc96('0x7')]));function emit(_0x12a448,_0x2b7057,_0x583180,_0x4b645d,_0x51d3ca){logger['info'](_0xcc96('0xa'),_0x12a448,_0x2b7057['id'],_0x583180,_0x4b645d,JSON[_0xcc96('0xb')](_0x51d3ca));io['to'](_0x583180)[_0xcc96('0xc')](_0x4b645d,_0x51d3ca);}exports[_0xcc96('0xd')]=function(_0x327e1e,_0x1bc03f,_0x3730ab,_0x132b92){var _0x2be7bc,_0x1513f2;var _0x4a2ff4={};var _0x9b0422;var _0x5db7f6=Number(_0x3730ab[_0xcc96('0xe')]);var _0x35b6f1=_0x3730ab[_0xcc96('0xf')]?Boolean(Number(_0x3730ab['data2'])):![];var _0x1ab0fb;var _0x1f289c=![];if(!_[_0xcc96('0x10')](_0x3730ab[_0xcc96('0x11')])){if(_0x3730ab[_0xcc96('0x11')]=='1')_0x1f289c=!![];}if(!_0x1f289c){if(_0x132b92[_0xcc96('0x12')]){_0x4a2ff4['id']=_0x132b92[_0xcc96('0x12')];}}if(!_0x4a2ff4['id']){_0x4a2ff4[_0xcc96('0x13')]=_0x5db7f6;_0x1ab0fb=_0x3730ab['data3']&&_0x3730ab[_0xcc96('0x14')]!=='0'?_0x3730ab[_0xcc96('0x14')]['split'](','):[_0xcc96('0x15')];_0x4a2ff4[_0xcc96('0x16')]=_[_0xcc96('0x17')](_0x1ab0fb,function(_0x3042e1){var _0x19f006={};_0x19f006[_0x3042e1]=_0x132b92[_0xcc96('0x18')]?_0x132b92[_0xcc96('0x19')]:_0x132b92[_0xcc96('0x1a')];return _0x19f006;});_0x9b0422=_0x132b92[_0xcc96('0x18')]?_0x132b92[_0xcc96('0x19')]:_0x132b92['calleridnum'];}var _0x36acde=['id','firstName','lastName',_0xcc96('0x15'),'mobile',_0xcc96('0x1b'),_0xcc96('0x13'),_0xcc96('0x1c'),_0xcc96('0x1d'),_0xcc96('0x1e')];var _0x1c82e6=_[_0xcc96('0x1f')](_0x36acde,_0x1ab0fb);BPromise[_0xcc96('0x20')]()[_0xcc96('0x21')](cmContactRpc['getContacts']({'attributes':_0x1c82e6,'where':_0x4a2ff4,'phone':_0x9b0422}))[_0xcc96('0x21')](function(_0x408eec){_0x1513f2=_0x408eec;if(!_[_0xcc96('0x22')](_0x1513f2)){if(_0x1513f2[_0xcc96('0x23')]===0x1){_0x2be7bc=_0x1513f2[0x0];logger[_0xcc96('0x24')](_0xcc96('0x25'),_0x132b92['uniqueid'],_0x1bc03f['id'],_0x2be7bc['id']);}else{logger[_0xcc96('0x24')](_0xcc96('0x26'),_0x132b92['uniqueid'],_0x1bc03f['id'],_['map'](_0x1513f2,'id')[_0xcc96('0x27')](','));}return;}else{logger[_0xcc96('0x24')](_0xcc96('0x28'),_0x132b92['uniqueid'],_0x1bc03f['id']);var _0x5cc2f4={'ListId':_0x5db7f6};var _0x2b8687=_0x3730ab[_0xcc96('0x29')]&&_0x3730ab['data4']!=='0'?_0x3730ab[_0xcc96('0x29')]:_0xcc96('0x15');if(_0x35b6f1){logger['info'](_0xcc96('0x2a'),_0x132b92[_0xcc96('0x2b')],_0x1bc03f['id']);_0x5cc2f4[_0x2b8687]=_[_0xcc96('0x10')](_0x132b92[_0xcc96('0x18')])?_0x132b92[_0xcc96('0x1a')]:_0x132b92[_0xcc96('0x19')];if(_[_0xcc96('0x10')](_0x132b92['routeId'])){_0x5cc2f4[_0xcc96('0x2c')]=_0x132b92['calleridname']&&_0x132b92[_0xcc96('0x2d')]!==_0xcc96('0x2e')?_0x132b92[_0xcc96('0x2d')]:'Unknown';}else{_0x5cc2f4[_0xcc96('0x2c')]=_0x132b92[_0xcc96('0x2f')]&&_0x132b92[_0xcc96('0x2f')]!==_0xcc96('0x2e')?_0x132b92[_0xcc96('0x2f')]:_0xcc96('0x30');}return BPromise['resolve']()[_0xcc96('0x21')](cmContactRpc[_0xcc96('0x31')](_0x5cc2f4))[_0xcc96('0x21')](function(_0x141ad9){_0x2be7bc=_0x141ad9;_0x1513f2[_0xcc96('0x32')](_0x141ad9);if(_0x2be7bc){logger['info'](_0xcc96('0x33'),_0x132b92[_0xcc96('0x2b')],_0x1bc03f['id'],_0x2be7bc['id']);}return;});}else{logger[_0xcc96('0x24')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x132b92[_0xcc96('0x2b')],_0x1bc03f['id']);_0x5cc2f4[_0x2b8687]=_[_0xcc96('0x10')](_0x132b92[_0xcc96('0x18')])?_0x132b92[_0xcc96('0x1a')]:_0x132b92[_0xcc96('0x19')];if(_[_0xcc96('0x10')](_0x132b92['routeId'])){_0x5cc2f4[_0xcc96('0x2c')]=_0x132b92[_0xcc96('0x2d')]&&_0x132b92['calleridname']!==_0xcc96('0x2e')?_0x132b92[_0xcc96('0x2d')]:_0xcc96('0x30');}else{_0x5cc2f4[_0xcc96('0x2c')]=_0x132b92[_0xcc96('0x2f')]&&_0x132b92[_0xcc96('0x2f')]!==_0xcc96('0x2e')?_0x132b92[_0xcc96('0x2f')]:_0xcc96('0x30');}_0x2be7bc=_0x5cc2f4;_0x1513f2[_0xcc96('0x32')](_0x5cc2f4);return;}}})['then'](function(){if(_0x327e1e){emit(_0x132b92[_0xcc96('0x2b')],_0x1bc03f,util['format']('user:%s',_0x327e1e[_0xcc96('0x34')]),util[_0xcc96('0x35')](_0xcc96('0x36'),_0x3730ab[_0xcc96('0x37')]['toLowerCase']()),{'evt':_['merge'](_0x132b92,{'autoCreate':_0x35b6f1}),'contact':_0x2be7bc===undefined?{}:_0x2be7bc,'contacts':_0x1513f2[_0xcc96('0x23')]===0x0?undefined:_0x1513f2});}});};
\ No newline at end of file
+var _0x2cf5=['bluebird','util','../../../../config/logger','trigger','defaults','redis','localhost','socket.io-emitter','info','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','map','routeId','destcalleridnum','calleridnum','firstName','fax','createdAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','name','trigger:%s','action','toLowerCase','lodash'];(function(_0x4be8ae,_0x25981d){var _0x1411e1=function(_0x1af6f4){while(--_0x1af6f4){_0x4be8ae['push'](_0x4be8ae['shift']());}};_0x1411e1(++_0x25981d);}(_0x2cf5,0x19f));var _0x52cf=function(_0x237a83,_0x5b0009){_0x237a83=_0x237a83-0x0;var _0x29628f=_0x2cf5[_0x237a83];return _0x29628f;};'use strict';var _=require(_0x52cf('0x0'));var BPromise=require(_0x52cf('0x1'));var Redis=require('ioredis');var util=require(_0x52cf('0x2'));var config=require('../../../../config/environment');var logger=require(_0x52cf('0x3'))(_0x52cf('0x4'));var cmContactRpc=require('../../rpc/cmContact');config['redis']=_[_0x52cf('0x5')](config[_0x52cf('0x6')],{'host':_0x52cf('0x7'),'port':0x18eb});var io=require(_0x52cf('0x8'))(new Redis(config[_0x52cf('0x6')]));function emit(_0x13d2fe,_0x1ab7cd,_0x390162,_0x41d874,_0x23b2ab){logger[_0x52cf('0x9')]('[CM][%s][%s]',_0x13d2fe,_0x1ab7cd['id'],_0x390162,_0x41d874,JSON[_0x52cf('0xa')](_0x23b2ab));io['to'](_0x390162)[_0x52cf('0xb')](_0x41d874,_0x23b2ab);}exports[_0x52cf('0xc')]=function(_0x120dab,_0x4e5b19,_0xadb2a6,_0x154197){var _0x211bb1,_0x54806d;var _0x18167b={};var _0x41b1e1;var _0x3b663c=Number(_0xadb2a6[_0x52cf('0xd')]);var _0x17eefd=_0xadb2a6[_0x52cf('0xe')]?Boolean(Number(_0xadb2a6['data2'])):![];var _0x4a5547;var _0x2bff22=![];if(!_[_0x52cf('0xf')](_0xadb2a6[_0x52cf('0x10')])){if(_0xadb2a6[_0x52cf('0x10')]=='1')_0x2bff22=!![];}if(!_0x2bff22){if(_0x154197[_0x52cf('0x11')]){_0x18167b['id']=_0x154197[_0x52cf('0x11')];}}if(!_0x18167b['id']){_0x18167b[_0x52cf('0x12')]=_0x3b663c;_0x4a5547=_0xadb2a6[_0x52cf('0x13')]&&_0xadb2a6['data3']!=='0'?_0xadb2a6[_0x52cf('0x13')][_0x52cf('0x14')](','):[_0x52cf('0x15')];_0x18167b['$or']=_[_0x52cf('0x16')](_0x4a5547,function(_0x49e43c){var _0x3d082e={};_0x3d082e[_0x49e43c]=_0x154197[_0x52cf('0x17')]?_0x154197[_0x52cf('0x18')]:_0x154197[_0x52cf('0x19')];return _0x3d082e;});_0x41b1e1=_0x154197['routeId']?_0x154197[_0x52cf('0x18')]:_0x154197[_0x52cf('0x19')];}var _0x25a48a=['id',_0x52cf('0x1a'),'lastName',_0x52cf('0x15'),'mobile',_0x52cf('0x1b'),_0x52cf('0x12'),_0x52cf('0x1c'),'scheduledAt','updatedAt'];var _0x60f3bd=_[_0x52cf('0x1d')](_0x25a48a,_0x4a5547);BPromise[_0x52cf('0x1e')]()[_0x52cf('0x1f')](cmContactRpc[_0x52cf('0x20')]({'attributes':_0x60f3bd,'where':_0x18167b,'phone':_0x41b1e1}))[_0x52cf('0x1f')](function(_0x375c57){_0x54806d=_0x375c57;if(!_[_0x52cf('0x21')](_0x54806d)){if(_0x54806d[_0x52cf('0x22')]===0x1){_0x211bb1=_0x54806d[0x0];logger[_0x52cf('0x9')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x154197['uniqueid'],_0x4e5b19['id'],_0x211bb1['id']);}else{logger[_0x52cf('0x9')](_0x52cf('0x23'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id'],_[_0x52cf('0x16')](_0x54806d,'id')['join'](','));}return;}else{logger['info'](_0x52cf('0x25'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id']);var _0x37e41f={'ListId':_0x3b663c};var _0x28c7b6=_0xadb2a6[_0x52cf('0x26')]&&_0xadb2a6[_0x52cf('0x26')]!=='0'?_0xadb2a6[_0x52cf('0x26')]:_0x52cf('0x15');if(_0x17eefd){logger[_0x52cf('0x9')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x154197['uniqueid'],_0x4e5b19['id']);_0x37e41f[_0x28c7b6]=_[_0x52cf('0xf')](_0x154197[_0x52cf('0x17')])?_0x154197[_0x52cf('0x19')]:_0x154197[_0x52cf('0x18')];if(_['isNil'](_0x154197[_0x52cf('0x17')])){_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x27')]&&_0x154197[_0x52cf('0x27')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x27')]:'Unknown';}else{_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x29')]&&_0x154197[_0x52cf('0x29')]!==_0x52cf('0x28')?_0x154197['destcalleridname']:_0x52cf('0x2a');}return BPromise[_0x52cf('0x1e')]()[_0x52cf('0x1f')](cmContactRpc[_0x52cf('0x2b')](_0x37e41f))[_0x52cf('0x1f')](function(_0x3c8299){_0x211bb1=_0x3c8299;_0x54806d[_0x52cf('0x2c')](_0x3c8299);if(_0x211bb1){logger[_0x52cf('0x9')](_0x52cf('0x2d'),_0x154197[_0x52cf('0x24')],_0x4e5b19['id'],_0x211bb1['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0x154197[_0x52cf('0x24')],_0x4e5b19['id']);_0x37e41f[_0x28c7b6]=_[_0x52cf('0xf')](_0x154197[_0x52cf('0x17')])?_0x154197[_0x52cf('0x19')]:_0x154197['destcalleridnum'];if(_['isNil'](_0x154197[_0x52cf('0x17')])){_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x27')]&&_0x154197[_0x52cf('0x27')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x27')]:_0x52cf('0x2a');}else{_0x37e41f[_0x52cf('0x1a')]=_0x154197[_0x52cf('0x29')]&&_0x154197[_0x52cf('0x29')]!==_0x52cf('0x28')?_0x154197[_0x52cf('0x29')]:_0x52cf('0x2a');}_0x211bb1=_0x37e41f;_0x54806d[_0x52cf('0x2c')](_0x37e41f);return;}}})[_0x52cf('0x1f')](function(){if(_0x120dab){emit(_0x154197['uniqueid'],_0x4e5b19,util[_0x52cf('0x2e')](_0x52cf('0x2f'),_0x120dab[_0x52cf('0x30')]),util[_0x52cf('0x2e')](_0x52cf('0x31'),_0xadb2a6[_0x52cf('0x32')][_0x52cf('0x33')]()),{'evt':_['merge'](_0x154197,{'autoCreate':_0x17eefd}),'contact':_0x211bb1===undefined?{}:_0x211bb1,'contacts':_0x54806d[_0x52cf('0x22')]===0x0?undefined:_0x54806d});}});};
\ No newline at end of file
index 42caca6..65024c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74c=['freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','clone','motionChannel','undefined','voice','checkTriggers','hasOwnProperty','status','merge','variables','Actions','interface','action','toLowerCase','contactmanager','motionbar','browser','TemplateId','data2','html','templates','template\x20not\x20found','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','windowHeight','data6','600','render','winArguments','format','user:%s','name','jscripty','trigger:%s','data1','exec','integration','queue','routeId','script','parse','query','search','replace','checkTrigger','AllConditions','length','every','checkConditions','channel','AnyConditions','some','field','account','ChatWebsiteId','operator','value','AccountId','upperFirst','message','event','agent','membername','lastevent','null','substatus','offlineMessage','created','equals','util','lodash','ioredis','./urlforward','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','socket.io-emitter','popup','url','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts'];(function(_0x4eb2ac,_0x37a1df){var _0x3f95e7=function(_0x250a95){while(--_0x250a95){_0x4eb2ac['push'](_0x4eb2ac['shift']());}};_0x3f95e7(++_0x37a1df);}(_0xc74c,0x163));var _0xcc74=function(_0x2d398b,_0x5e98f8){_0x2d398b=_0x2d398b-0x0;var _0x5d8b9d=_0xc74c[_0x2d398b];return _0x5d8b9d;};'use strict';var util=require(_0xcc74('0x0'));var _=require(_0xcc74('0x1'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0xcc74('0x2'));var urlforward=require(_0xcc74('0x3'));var integration=require('./integration');var cmContact=require(_0xcc74('0x4'));var script=require(_0xcc74('0x5'));var config=require(_0xcc74('0x6'));var logger=require(_0xcc74('0x7'))(_0xcc74('0x8'));var ami=require(_0xcc74('0x9'));config[_0xcc74('0xa')]=_['defaults'](config[_0xcc74('0xa')],{'host':_0xcc74('0xb'),'port':0x18eb});var io=require(_0xcc74('0xc'))(new Redis(config[_0xcc74('0xa')]));var operators={'equals':function(_0xa311c4,_0x560297){return _0xa311c4==_0x560297;},'not_equals':function(_0x4b4534,_0xad246b){return _0x4b4534!=_0xad246b;}};var barAndWebActions=[_0xcc74('0xd'),_0xcc74('0xe'),'winapp'];function Trigger(_0x228f6e){this[_0xcc74('0xf')]=_0x228f6e[_0xcc74('0xf')];this['agents']=_0x228f6e[_0xcc74('0x10')];this['voiceQueues']=_0x228f6e[_0xcc74('0x11')];this['templates']=_0x228f6e['templates'];this['voiceExtensions']=_0x228f6e[_0xcc74('0x12')];this[_0xcc74('0x13')]=_0x228f6e[_0xcc74('0x13')];this[_0xcc74('0x14')]=_0x228f6e[_0xcc74('0x14')];this['salesforceAccounts']=_0x228f6e[_0xcc74('0x15')];this[_0xcc74('0x16')]=_0x228f6e[_0xcc74('0x16')];this[_0xcc74('0x17')]=_0x228f6e[_0xcc74('0x17')];this['deskAccounts']=_0x228f6e[_0xcc74('0x18')];this[_0xcc74('0x19')]=_0x228f6e[_0xcc74('0x19')];this[_0xcc74('0x1a')]=_0x228f6e[_0xcc74('0x1a')];this[_0xcc74('0x1b')]=_0x228f6e[_0xcc74('0x1b')];this[_0xcc74('0x1c')]=_0x228f6e[_0xcc74('0x1c')];this['accounts']={'zendesk':this[_0xcc74('0x13')],'salesforce':this[_0xcc74('0x15')],'freshdesk':this[_0xcc74('0x14')],'sugarcrm':this[_0xcc74('0x16')],'zoho':this[_0xcc74('0x17')],'desk':this[_0xcc74('0x18')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0xcc74('0x1b')],'freshsales':this[_0xcc74('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0xcc74('0x1d'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on']('custom:agentconnect',this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x20'),this[_0xcc74('0x1e')]['bind'](this));ami['on'](_0xcc74('0x21'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on']('custom:agentnosuchnumber',this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x22'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentbusy',this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x23'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x24'),this['syncCustomEvent'][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x25'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on']('custom:queuecallerabandon',this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x26'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x27'),this['syncAgentDial'][_0xcc74('0x1f')](this));ami['on']('custom:dialconnect',this[_0xcc74('0x28')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x29'),this[_0xcc74('0x28')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x2a'),this['syncCustomEvent']['bind'](this));ami['on'](_0xcc74('0x2b'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on']('custom:substatus',this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x2c'),this['syncCustomEvent'][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x2d'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));ami['on'](_0xcc74('0x2e'),this[_0xcc74('0x1e')]['bind'](this));ami['on'](_0xcc74('0x2f'),this[_0xcc74('0x1e')][_0xcc74('0x1f')](this));}Trigger[_0xcc74('0x30')][_0xcc74('0x31')]=function(_0xd04ad5,_0x64b31b,_0x5a361f){logger[_0xcc74('0x32')](_0xd04ad5,_0x64b31b,JSON['stringify'](_0x5a361f));io['to'](_0xd04ad5)[_0xcc74('0x31')](_0x64b31b,_0x5a361f);};Trigger[_0xcc74('0x30')][_0xcc74('0x1e')]=function(_0x18ff34){var _0x155e0a=_[_0xcc74('0x33')](_0x18ff34);if(typeof _0x155e0a[_0xcc74('0x34')]===_0xcc74('0x35')){_0x155e0a[_0xcc74('0x34')]=_0xcc74('0x36');}this[_0xcc74('0x37')](_0x155e0a);};Trigger[_0xcc74('0x30')]['syncAgentDial']=function(_0x2a6c55){if(this[_0xcc74('0x10')][_0x2a6c55['interface']]){this[_0xcc74('0x1e')](_0x2a6c55);}};Trigger[_0xcc74('0x30')][_0xcc74('0x37')]=function(_0x2478fc){var _0x3173ce;for(var _0x54b8e1 in this[_0xcc74('0xf')]){if(this['triggers'][_0xcc74('0x38')](_0x54b8e1)){if(this[_0xcc74('0xf')][_0x54b8e1][_0xcc74('0x39')]){_0x3173ce=this['checkTrigger'](this[_0xcc74('0xf')][_0x54b8e1],_0x2478fc);if(_0x3173ce){_[_0xcc74('0x3a')](_0x2478fc,_0x2478fc[_0xcc74('0x3b')]);for(var _0x2c5cb1=0x0,_0x5557b6,_0x13d436,_0xdfcc3b;_0x2c5cb1<this[_0xcc74('0xf')][_0x54b8e1][_0xcc74('0x3c')]['length'];_0x2c5cb1+=0x1){_0x5557b6=this[_0xcc74('0xf')][_0x54b8e1][_0xcc74('0x3c')][_0x2c5cb1];if(this[_0xcc74('0x10')][_0x2478fc[_0xcc74('0x3d')]]){switch(_0x5557b6[_0xcc74('0x3e')][_0xcc74('0x3f')]()){case _0xcc74('0x40'):break;case _0xcc74('0x41'):case _0xcc74('0x42'):var _0x17a3ff={};switch(barAndWebActions[_0x5557b6['data1']]){case _0xcc74('0xd'):_0x17a3ff[_0xcc74('0x43')]=_0x5557b6[_0xcc74('0x44')];_0x17a3ff[_0xcc74('0x45')]=this[_0xcc74('0x46')][_0x5557b6[_0xcc74('0x44')]]?Mustache['render'](this[_0xcc74('0x46')][_0x5557b6[_0xcc74('0x44')]][_0xcc74('0x45')],_0x2478fc):_0xcc74('0x47');break;case'url':_0x17a3ff['uri']=this[_0xcc74('0x48')](_0x5557b6[_0xcc74('0x44')],_0x2478fc,_[_0xcc74('0x49')](_0x5557b6[_0xcc74('0x4a')])?!![]:parseInt(_0x5557b6[_0xcc74('0x4a')],0xa));if(_[_0xcc74('0x49')](_0x5557b6['data4'])){_0x17a3ff[_0xcc74('0x4b')]='0';}else{_0x17a3ff[_0xcc74('0x4c')]=_0x5557b6[_0xcc74('0x4d')];_0x17a3ff[_0xcc74('0x4e')]=_[_0xcc74('0x49')](_0x5557b6['data5'])?'800':_0x5557b6[_0xcc74('0x4f')];_0x17a3ff[_0xcc74('0x50')]=_[_0xcc74('0x49')](_0x5557b6[_0xcc74('0x51')])?_0xcc74('0x52'):_0x5557b6[_0xcc74('0x51')];}break;case'winapp':_0x17a3ff['winApplication']=_0x5557b6['data2']?Mustache[_0xcc74('0x53')](_0x5557b6['data2'],_0x2478fc):'';_0x17a3ff[_0xcc74('0x54')]=_0x5557b6[_0xcc74('0x4a')]?Mustache[_0xcc74('0x53')](_0x5557b6['data3'],_0x2478fc):'';break;}this[_0xcc74('0x31')](util[_0xcc74('0x55')](_0xcc74('0x56'),this[_0xcc74('0x10')][_0x2478fc[_0xcc74('0x3d')]][_0xcc74('0x57')]),util['format']('trigger:%s:%s',_0x5557b6['action'][_0xcc74('0x3f')](),barAndWebActions[_0x5557b6['data1']]),_[_0xcc74('0x3a')](_0x17a3ff,_0x2478fc));break;case _0xcc74('0x58'):this[_0xcc74('0x31')](util[_0xcc74('0x55')](_0xcc74('0x56'),this[_0xcc74('0x10')][_0x2478fc[_0xcc74('0x3d')]][_0xcc74('0x57')]),util[_0xcc74('0x55')](_0xcc74('0x59'),_0x5557b6[_0xcc74('0x3e')][_0xcc74('0x3f')]()),_[_0xcc74('0x3a')]({'ProjectId':parseInt(_0x5557b6[_0xcc74('0x5a')],0xa)},_0x2478fc));break;default:this[_0xcc74('0x31')](util[_0xcc74('0x55')](_0xcc74('0x56'),this[_0xcc74('0x10')][_0x2478fc[_0xcc74('0x3d')]][_0xcc74('0x57')]),util[_0xcc74('0x55')](_0xcc74('0x59'),_0x5557b6['action'][_0xcc74('0x3f')]()),_['merge']({},_0x5557b6,_0x2478fc));}}switch(_0x5557b6['action']['toLowerCase']()){case _0xcc74('0x40'):cmContact[_0xcc74('0x5b')](this[_0xcc74('0x10')][_0x2478fc[_0xcc74('0x3d')]],this[_0xcc74('0xf')][_0x54b8e1],_0x5557b6,_0x2478fc);break;case _0xcc74('0x5c'):integration['exec'](_0x5557b6,_0x2478fc,this['accounts'],this['agents'][_0x2478fc['interface']],this[_0xcc74('0x11')][_0x2478fc[_0xcc74('0x5d')]],this[_0xcc74('0x12')][_0x2478fc[_0xcc74('0x5e')]]);break;case'urlforward':urlforward[_0xcc74('0x5b')](_0x5557b6,_0x2478fc);break;case _0xcc74('0x5f'):script[_0xcc74('0x5b')](_0x5557b6,_0x2478fc);break;}}}}}}};Trigger[_0xcc74('0x30')]['buildUri']=function(_0x59309f,_0x3aeda3,_0x148aca){var _0xd75fe7=url[_0xcc74('0x60')](Mustache[_0xcc74('0x53')](_0x59309f,_0x3aeda3),!![]);if(_0x148aca){_[_0xcc74('0x3a')](_0xd75fe7[_0xcc74('0x61')],_0x3aeda3);}delete _0xd75fe7[_0xcc74('0x62')];var _0x2a717d=url[_0xcc74('0x55')](_0xd75fe7);_0x2a717d=_0x2a717d[_0xcc74('0x63')](/\/\?/g,'?');return _0x2a717d;};Trigger[_0xcc74('0x30')][_0xcc74('0x64')]=function(_0xf191c8,_0x549543){var _0x3c1f44=!![];var _0x538bb4=!![];var _0x3622d2=![];if(_0xf191c8['channel']===_0x549543['motionChannel']){_0x3622d2=!![];}if(_0xf191c8[_0xcc74('0x65')][_0xcc74('0x66')]){_0x3c1f44=_[_0xcc74('0x67')](_0xf191c8['AllConditions'],this[_0xcc74('0x68')](_0x549543,_0xf191c8[_0xcc74('0x69')]));}if(_0xf191c8[_0xcc74('0x6a')][_0xcc74('0x66')]){_0x538bb4=_[_0xcc74('0x6b')](_0xf191c8[_0xcc74('0x6a')],this[_0xcc74('0x68')](_0x549543,_0xf191c8[_0xcc74('0x69')]));}return _0x3622d2&&_0x3c1f44&&_0x538bb4;};Trigger['prototype'][_0xcc74('0x68')]=function(_0x428c92,_0x3e9089){return function(_0x35ca75){switch(_0x35ca75[_0xcc74('0x6c')]){case _0xcc74('0x6d'):if(_0x428c92[_0xcc74('0x69')]===_0x3e9089){if(_0x3e9089==='chat'){return _0x428c92[_0xcc74('0x6e')]?operators[_0x35ca75[_0xcc74('0x6f')]](Number(_0x35ca75[_0xcc74('0x70')]),_0x428c92[_0xcc74('0x6e')]):![];}else{return _0x428c92[_['upperFirst'](_0x3e9089)+_0xcc74('0x71')]?operators[_0x35ca75[_0xcc74('0x6f')]](Number(_0x35ca75['value']),_0x428c92[_[_0xcc74('0x72')](_0x3e9089)+_0xcc74('0x71')]):![];}}break;case'interaction':case _0xcc74('0x73'):if(_0x428c92['channel']===_0x3e9089){return _0x428c92[_0xcc74('0x74')]?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92['event']):![];}break;case _0xcc74('0x5d'):return _0x428c92[_0xcc74('0x5d')]?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92[_0xcc74('0x5d')]):![];case _0xcc74('0x75'):return _0x428c92[_0xcc74('0x76')]?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92[_0xcc74('0x76')]):![];case _0xcc74('0x77'):return _0x428c92['lastevent']?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92[_0xcc74('0x77')]):![];case _0xcc74('0x5e'):return _0x428c92[_0xcc74('0x5e')]?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92[_0xcc74('0x5e')]):![];case'mailSubstatus':if(_0x35ca75[_0xcc74('0x70')]===_0xcc74('0x78'))_0x35ca75[_0xcc74('0x70')]=null;return typeof _0x428c92[_0xcc74('0x79')]!==_0xcc74('0x35')?operators[_0x35ca75[_0xcc74('0x6f')]](_0x35ca75[_0xcc74('0x70')],_0x428c92['substatus']):![];case _0xcc74('0x7a'):if(_0x428c92[_0xcc74('0x69')]===_0x3e9089){return _0x35ca75[_0xcc74('0x70')]===_0xcc74('0x7b')&&_0x35ca75[_0xcc74('0x6f')]===_0xcc74('0x7c')?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0x870d=['dynamics365Accounts','freshsalesAccounts','accounts','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialconnect','custom:substatus','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','stringify','emit','clone','motionChannel','undefined','voice','checkTriggers','syncAgentDial','interface','hasOwnProperty','merge','variables','length','Actions','toLowerCase','browser','data1','TemplateId','html','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','data5','800','windowHeight','data6','600','winApplication','winArguments','user:%s','name','format','trigger:%s:%s','action','trigger:%s','contactmanager','integration','exec','queue','routeId','script','parse','query','replace','checkTrigger','channel','AllConditions','every','checkConditions','AnyConditions','field','account','chat','ChatWebsiteId','upperFirst','AccountId','operator','interaction','event','value','agent','lastevent','mailSubstatus','null','substatus','offlineMessage','equals','exports','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','../../../config/logger','trigger','../ami','defaults','redis','localhost','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts'];(function(_0x3995dd,_0x24f96f){var _0x410f8a=function(_0xe2c273){while(--_0xe2c273){_0x3995dd['push'](_0x3995dd['shift']());}};_0x410f8a(++_0x24f96f);}(_0x870d,0xde));var _0xd870=function(_0x48e63f,_0x21cf5a){_0x48e63f=_0x48e63f-0x0;var _0x3c594c=_0x870d[_0x48e63f];return _0x3c594c;};'use strict';var util=require('util');var _=require(_0xd870('0x0'));var url=require(_0xd870('0x1'));var Mustache=require(_0xd870('0x2'));var Redis=require(_0xd870('0x3'));var urlforward=require(_0xd870('0x4'));var integration=require(_0xd870('0x5'));var cmContact=require('./cmContact');var script=require(_0xd870('0x6'));var config=require(_0xd870('0x7'));var logger=require(_0xd870('0x8'))(_0xd870('0x9'));var ami=require(_0xd870('0xa'));config['redis']=_[_0xd870('0xb')](config[_0xd870('0xc')],{'host':_0xd870('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var operators={'equals':function(_0x1eb035,_0x3cee02){return _0x1eb035==_0x3cee02;},'not_equals':function(_0x16e059,_0x5aaee8){return _0x16e059!=_0x5aaee8;}};var barAndWebActions=[_0xd870('0xe'),_0xd870('0x1'),'winapp'];function Trigger(_0x4f1952){this[_0xd870('0xf')]=_0x4f1952[_0xd870('0xf')];this[_0xd870('0x10')]=_0x4f1952['agents'];this[_0xd870('0x11')]=_0x4f1952[_0xd870('0x11')];this['templates']=_0x4f1952[_0xd870('0x12')];this[_0xd870('0x13')]=_0x4f1952['voiceExtensions'];this[_0xd870('0x14')]=_0x4f1952['zendeskAccounts'];this[_0xd870('0x15')]=_0x4f1952[_0xd870('0x15')];this[_0xd870('0x16')]=_0x4f1952[_0xd870('0x16')];this['sugarcrmAccounts']=_0x4f1952[_0xd870('0x17')];this[_0xd870('0x18')]=_0x4f1952['zohoAccounts'];this[_0xd870('0x19')]=_0x4f1952[_0xd870('0x19')];this[_0xd870('0x1a')]=_0x4f1952['vtigerAccounts'];this[_0xd870('0x1b')]=_0x4f1952[_0xd870('0x1b')];this['dynamics365Accounts']=_0x4f1952[_0xd870('0x1c')];this[_0xd870('0x1d')]=_0x4f1952['freshsalesAccounts'];this[_0xd870('0x1e')]={'zendesk':this[_0xd870('0x14')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xd870('0x15')],'sugarcrm':this[_0xd870('0x17')],'zoho':this[_0xd870('0x18')],'desk':this[_0xd870('0x19')],'vtiger':this['vtigerAccounts'],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xd870('0x1d')],'servicenow':this[_0xd870('0x1b')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x20'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x22'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on']('custom:agentcomplete',this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x23'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x24'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x25'),this['syncCustomEvent']['bind'](this));ami['on'](_0xd870('0x26'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x27'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x28'),this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x29'),this['syncCustomEvent'][_0xd870('0x1f')](this));ami['on']('custom:timeout',this[_0xd870('0x21')]['bind'](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0xd870('0x1f')](this));ami['on'](_0xd870('0x2a'),this['syncAgentDial']['bind'](this));ami['on']('custom:dialend',this['syncAgentDial'][_0xd870('0x1f')](this));ami['on']('custom:newinteraction',this[_0xd870('0x21')]['bind'](this));ami['on']('custom:closedinteraction',this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2b'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on']('custom:incomingmessage',this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2c'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2d'),this[_0xd870('0x21')][_0xd870('0x1f')](this));ami['on'](_0xd870('0x2e'),this[_0xd870('0x21')]['bind'](this));ami['on'](_0xd870('0x2f'),this['syncCustomEvent'][_0xd870('0x1f')](this));}Trigger[_0xd870('0x30')]['emit']=function(_0x14a102,_0x50217a,_0xe8586a){logger[_0xd870('0x31')](_0x14a102,_0x50217a,JSON[_0xd870('0x32')](_0xe8586a));io['to'](_0x14a102)[_0xd870('0x33')](_0x50217a,_0xe8586a);};Trigger[_0xd870('0x30')][_0xd870('0x21')]=function(_0x2d8b2d){var _0x5b6b62=_[_0xd870('0x34')](_0x2d8b2d);if(typeof _0x5b6b62[_0xd870('0x35')]===_0xd870('0x36')){_0x5b6b62['motionChannel']=_0xd870('0x37');}this[_0xd870('0x38')](_0x5b6b62);};Trigger[_0xd870('0x30')][_0xd870('0x39')]=function(_0x5609c1){if(this['agents'][_0x5609c1[_0xd870('0x3a')]]){this[_0xd870('0x21')](_0x5609c1);}};Trigger[_0xd870('0x30')][_0xd870('0x38')]=function(_0x2918f4){var _0x50fac6;for(var _0x386c57 in this['triggers']){if(this[_0xd870('0xf')][_0xd870('0x3b')](_0x386c57)){if(this[_0xd870('0xf')][_0x386c57]['status']){_0x50fac6=this['checkTrigger'](this['triggers'][_0x386c57],_0x2918f4);if(_0x50fac6){_[_0xd870('0x3c')](_0x2918f4,_0x2918f4[_0xd870('0x3d')]);for(var _0x2cb2e8=0x0,_0x543d2e,_0x2a52f3,_0x3d1f48;_0x2cb2e8<this[_0xd870('0xf')][_0x386c57]['Actions'][_0xd870('0x3e')];_0x2cb2e8+=0x1){_0x543d2e=this['triggers'][_0x386c57][_0xd870('0x3f')][_0x2cb2e8];if(this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]]){switch(_0x543d2e['action'][_0xd870('0x40')]()){case'contactmanager':break;case'motionbar':case _0xd870('0x41'):var _0x3fba3f={};switch(barAndWebActions[_0x543d2e[_0xd870('0x42')]]){case _0xd870('0xe'):_0x3fba3f[_0xd870('0x43')]=_0x543d2e['data2'];_0x3fba3f[_0xd870('0x44')]=this['templates'][_0x543d2e[_0xd870('0x45')]]?Mustache[_0xd870('0x46')](this[_0xd870('0x12')][_0x543d2e[_0xd870('0x45')]][_0xd870('0x44')],_0x2918f4):_0xd870('0x47');break;case _0xd870('0x1'):_0x3fba3f[_0xd870('0x48')]=this[_0xd870('0x49')](_0x543d2e[_0xd870('0x45')],_0x2918f4,_[_0xd870('0x4a')](_0x543d2e[_0xd870('0x4b')])?!![]:parseInt(_0x543d2e[_0xd870('0x4b')],0xa));if(_[_0xd870('0x4a')](_0x543d2e[_0xd870('0x4c')])){_0x3fba3f[_0xd870('0x4d')]='0';}else{_0x3fba3f[_0xd870('0x4e')]=_0x543d2e[_0xd870('0x4c')];_0x3fba3f['windowWidth']=_['isNil'](_0x543d2e[_0xd870('0x4f')])?_0xd870('0x50'):_0x543d2e['data5'];_0x3fba3f[_0xd870('0x51')]=_['isNil'](_0x543d2e[_0xd870('0x52')])?_0xd870('0x53'):_0x543d2e['data6'];}break;case'winapp':_0x3fba3f[_0xd870('0x54')]=_0x543d2e['data2']?Mustache[_0xd870('0x46')](_0x543d2e[_0xd870('0x45')],_0x2918f4):'';_0x3fba3f[_0xd870('0x55')]=_0x543d2e[_0xd870('0x4b')]?Mustache[_0xd870('0x46')](_0x543d2e[_0xd870('0x4b')],_0x2918f4):'';break;}this[_0xd870('0x33')](util['format'](_0xd870('0x56'),this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')](_0xd870('0x59'),_0x543d2e[_0xd870('0x5a')]['toLowerCase'](),barAndWebActions[_0x543d2e['data1']]),_[_0xd870('0x3c')](_0x3fba3f,_0x2918f4));break;case'jscripty':this[_0xd870('0x33')](util[_0xd870('0x58')](_0xd870('0x56'),this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')]('trigger:%s',_0x543d2e[_0xd870('0x5a')][_0xd870('0x40')]()),_[_0xd870('0x3c')]({'ProjectId':parseInt(_0x543d2e[_0xd870('0x42')],0xa)},_0x2918f4));break;default:this[_0xd870('0x33')](util[_0xd870('0x58')]('user:%s',this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]][_0xd870('0x57')]),util[_0xd870('0x58')](_0xd870('0x5b'),_0x543d2e['action'][_0xd870('0x40')]()),_[_0xd870('0x3c')]({},_0x543d2e,_0x2918f4));}}switch(_0x543d2e['action'][_0xd870('0x40')]()){case _0xd870('0x5c'):cmContact['exec'](this[_0xd870('0x10')][_0x2918f4[_0xd870('0x3a')]],this[_0xd870('0xf')][_0x386c57],_0x543d2e,_0x2918f4);break;case _0xd870('0x5d'):integration[_0xd870('0x5e')](_0x543d2e,_0x2918f4,this[_0xd870('0x1e')],this['agents'][_0x2918f4[_0xd870('0x3a')]],this[_0xd870('0x11')][_0x2918f4[_0xd870('0x5f')]],this[_0xd870('0x13')][_0x2918f4[_0xd870('0x60')]]);break;case'urlforward':urlforward[_0xd870('0x5e')](_0x543d2e,_0x2918f4);break;case _0xd870('0x61'):script[_0xd870('0x5e')](_0x543d2e,_0x2918f4);break;}}}}}}};Trigger[_0xd870('0x30')][_0xd870('0x49')]=function(_0x5a3b38,_0x353c7f,_0xcff881){var _0x4a542d=url[_0xd870('0x62')](Mustache[_0xd870('0x46')](_0x5a3b38,_0x353c7f),!![]);if(_0xcff881){_[_0xd870('0x3c')](_0x4a542d[_0xd870('0x63')],_0x353c7f);}delete _0x4a542d['search'];var _0x16e845=url['format'](_0x4a542d);_0x16e845=_0x16e845[_0xd870('0x64')](/\/\?/g,'?');return _0x16e845;};Trigger[_0xd870('0x30')][_0xd870('0x65')]=function(_0x47abe9,_0x12a991){var _0xc34f5e=!![];var _0x4d0aaf=!![];var _0x4bdff7=![];if(_0x47abe9[_0xd870('0x66')]===_0x12a991['motionChannel']){_0x4bdff7=!![];}if(_0x47abe9[_0xd870('0x67')][_0xd870('0x3e')]){_0xc34f5e=_[_0xd870('0x68')](_0x47abe9['AllConditions'],this[_0xd870('0x69')](_0x12a991,_0x47abe9[_0xd870('0x66')]));}if(_0x47abe9[_0xd870('0x6a')]['length']){_0x4d0aaf=_['some'](_0x47abe9[_0xd870('0x6a')],this[_0xd870('0x69')](_0x12a991,_0x47abe9['channel']));}return _0x4bdff7&&_0xc34f5e&&_0x4d0aaf;};Trigger[_0xd870('0x30')][_0xd870('0x69')]=function(_0x9c365,_0x13a6a0){return function(_0x4c47c9){switch(_0x4c47c9[_0xd870('0x6b')]){case _0xd870('0x6c'):if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){if(_0x13a6a0===_0xd870('0x6d')){return _0x9c365[_0xd870('0x6e')]?operators[_0x4c47c9['operator']](Number(_0x4c47c9['value']),_0x9c365[_0xd870('0x6e')]):![];}else{return _0x9c365[_[_0xd870('0x6f')](_0x13a6a0)+_0xd870('0x70')]?operators[_0x4c47c9[_0xd870('0x71')]](Number(_0x4c47c9['value']),_0x9c365[_[_0xd870('0x6f')](_0x13a6a0)+_0xd870('0x70')]):![];}}break;case _0xd870('0x72'):case'message':if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){return _0x9c365[_0xd870('0x73')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x73')]):![];}break;case _0xd870('0x5f'):return _0x9c365[_0xd870('0x5f')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x5f')]):![];case _0xd870('0x75'):return _0x9c365['membername']?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365['membername']):![];case'lastevent':return _0x9c365[_0xd870('0x76')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9['value'],_0x9c365['lastevent']):![];case _0xd870('0x60'):return _0x9c365[_0xd870('0x60')]?operators[_0x4c47c9[_0xd870('0x71')]](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x60')]):![];case _0xd870('0x77'):if(_0x4c47c9['value']===_0xd870('0x78'))_0x4c47c9[_0xd870('0x74')]=null;return typeof _0x9c365['substatus']!=='undefined'?operators[_0x4c47c9['operator']](_0x4c47c9[_0xd870('0x74')],_0x9c365[_0xd870('0x79')]):![];case _0xd870('0x7a'):if(_0x9c365[_0xd870('0x66')]===_0x13a6a0){return _0x4c47c9[_0xd870('0x74')]==='created'&&_0x4c47c9[_0xd870('0x71')]===_0xd870('0x7b')?!![]:![];}break;}return![];};};module[_0xd870('0x7c')]=Trigger;
\ No newline at end of file
index 00f3d65..6527e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x292f63,_0x18c4ab){var _0x47b7f2=function(_0x35f4c4){while(--_0x35f4c4){_0x292f63['push'](_0x292f63['shift']());}};_0x47b7f2(++_0x18c4ab);}(_0x3e74,0x175));var _0x43e7=function(_0x5a49d4,_0x24a56f){_0x5a49d4=_0x5a49d4-0x0;var _0x2fbe39=_0x3e74[_0x5a49d4];return _0x2fbe39;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x2527ea,_0x576c8){var _0x24a904=function(_0x2a1e95){while(--_0x2a1e95){_0x2527ea['push'](_0x2527ea['shift']());}};_0x24a904(++_0x576c8);}(_0x3e74,0x175));var _0x43e7=function(_0x3a3fe5,_0x205ce3){_0x3a3fe5=_0x3a3fe5-0x0;var _0x4a2913=_0x3e74[_0x3a3fe5];return _0x4a2913;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index 1a8aae2..64155a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e04=['odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','CloudProvider','data2','POST','clientId','username','password','clientSecret','access_token','catch','error',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','isdisabled','info','toUpperCase','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','substring','lastIndexOf','enduserId','outbound','telephone1','contacts?$select=','&$filter=','replace','%2b','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','phonecall','queue','callDirection','phonecalls'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0e04,0x173));var _0x40e0=function(_0x5de3c7,_0x896c72){_0x5de3c7=_0x5de3c7-0x0;var _0x11df60=_0x0e04[_0x5de3c7];return _0x11df60;};'use strict';var _=require(_0x40e0('0x0'));var rp=require(_0x40e0('0x1'));var util=require(_0x40e0('0x2'));var intUtil=require(_0x40e0('0x3'));var md5=require(_0x40e0('0x4'));var Redis=require('ioredis');var logger=require(_0x40e0('0x5'))(_0x40e0('0x6'));var config=require(_0x40e0('0x7'));config[_0x40e0('0x8')]=_[_0x40e0('0x9')](config[_0x40e0('0x8')],{'host':_0x40e0('0xa'),'port':0x18eb});var io=require(_0x40e0('0xb'))(new Redis(config[_0x40e0('0x8')]));function getAuthToken(_0x1c1e20,_0x29ff45,_0x2c9805){if(_0x1c1e20[_0x40e0('0xc')]){_0x1c1e20[_0x40e0('0xd')]=_0x1c1e20['CloudProvider'][_0x40e0('0xe')];_0x1c1e20[_0x40e0('0xf')]=_0x1c1e20[_0x40e0('0x10')][_0x40e0('0x11')];return Promise['resolve'](_0x1c1e20[_0x40e0('0x10')]['data5']);}var _0x251987={'method':_0x40e0('0x12'),'uri':_0x29ff45,'form':{'client_id':_0x1c1e20[_0x40e0('0x13')],'resource':_0x1c1e20[_0x40e0('0xd')],'username':_0x1c1e20[_0x40e0('0x14')],'password':_0x1c1e20[_0x40e0('0x15')],'grant_type':_0x40e0('0x15'),'client_secret':_0x1c1e20[_0x40e0('0x16')]},'json':!![]};return rp(_0x251987)['then'](function(_0x5b3c66){return _0x5b3c66[_0x40e0('0x17')];})[_0x40e0('0x18')](function(_0x48ad33){logger[_0x40e0('0x19')]('['+[_0x2c9805['toUpperCase']()]+_0x40e0('0x1a'));return _0x48ad33[_0x40e0('0x1b')];});}function getUser(_0x38f505,_0x11c2f1,_0x2ed48e,_0x51fb5a,_0x4cbf7f,_0x53f271){return new Promise(function(_0x50d757,_0x5ea035){return getAuthToken(_0x11c2f1,_0x51fb5a,_0x53f271)[_0x40e0('0x1c')](function(_0x1fecc3){var _0x225d1b={'method':_0x40e0('0x1d'),'uri':_0x4cbf7f+_0x40e0('0x1e'),'headers':{'Authorization':_0x40e0('0x1f')+_0x1fecc3,'OData-Version':_0x40e0('0x20')},'json':!![]};return rp(_0x225d1b);})[_0x40e0('0x1c')](function(_0x40cd37){var _0x54d57c=_0x40cd37[_0x40e0('0x21')];var _0x15888a=![];var _0x90ed6f=null;if(!_[_0x40e0('0x22')](_0x2ed48e)){if(intUtil[_0x40e0('0x23')](_0x2ed48e[_0x40e0('0x24')])){_0x38f505[_0x40e0('0x25')]=_0x2ed48e['email'];for(_0x90ed6f=0x0;_0x90ed6f<_0x54d57c[_0x40e0('0x26')];_0x90ed6f++){if(_0x54d57c[_0x90ed6f]['internalemailaddress']===_0x2ed48e[_0x40e0('0x24')]&&!_0x54d57c[_0x90ed6f][_0x40e0('0x27')]){_0x15888a=!![];logger[_0x40e0('0x28')]('['+[_0x53f271[_0x40e0('0x29')]()]+']\x20Agent\x20found\x20'+_0x54d57c[_0x90ed6f][_0x40e0('0x2a')]+'!');_0x38f505['userId']=_0x54d57c[_0x90ed6f][_0x40e0('0x2a')];}}}}if(!_0x15888a){logger[_0x40e0('0x28')]('['+[_0x53f271[_0x40e0('0x29')]()]+_0x40e0('0x2b'));_0x38f505[_0x40e0('0x25')]=_0x11c2f1['username'];for(_0x90ed6f=0x0;_0x90ed6f<_0x54d57c['length'];_0x90ed6f++){if(_0x54d57c[_0x90ed6f]['internalemailaddress']===_0x11c2f1[_0x40e0('0x14')]){_0x38f505[_0x40e0('0x2c')]=_0x54d57c[_0x90ed6f][_0x40e0('0x2a')];}}}_0x50d757(_0x38f505);})['catch'](function(_0x2fa806){_0x5ea035(_0x2fa806[_0x40e0('0x1b')]);});});}function createEndUser(_0x1a78cf,_0x28d5a0,_0x5df013,_0x193390,_0x57c8a7,_0x39b1cb,_0x1dde8a){return new Promise(function(_0x2854c9,_0x11ca57){return getAuthToken(_0x28d5a0,_0x5df013,_0x39b1cb)['then'](function(_0x4ac548){var _0x132ebf=_0x39b1cb[_0x40e0('0x2d')]()==='outbound'?_0x57c8a7[_0x40e0('0x2e')]:_0x57c8a7[_0x40e0('0x2f')];var _0x4f37c8={'method':_0x40e0('0x12'),'uri':_0x193390+_0x40e0('0x30'),'body':{'fullname':_0x132ebf,'firstname':_0x132ebf,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x40e0('0x31')+_0x1a78cf[_0x40e0('0x2c')]+')'},'headers':{'Authorization':_0x40e0('0x1f')+_0x4ac548,'OData-Version':_0x40e0('0x20')},'json':!![],'resolveWithFullResponse':!![]};_0x4f37c8[_0x40e0('0x32')][_0x1dde8a]=_0x132ebf;return rp(_0x4f37c8);})['then'](function(_0x10d186){var _0x115172=_0x10d186[_0x40e0('0x33')]['odata-entityid'];var _0x26006c=_0x115172[_0x40e0('0x34')](_0x115172[_0x40e0('0x35')]('(')+0x1,_0x115172[_0x40e0('0x35')](')'));_0x1a78cf[_0x40e0('0x36')]=_0x26006c;_0x2854c9(_0x1a78cf);})[_0x40e0('0x18')](function(_0xfeedcb){_0x11ca57(_0xfeedcb[_0x40e0('0x1b')]);});});}function getEndUser(_0x303eb5,_0x2d5e17,_0x3eb2f8,_0x3caa0d,_0x41cba4,_0x3f4135,_0x1f579d,_0x54efa2){var _0x4c1046=_0x3f4135[_0x40e0('0x2d')]()===_0x40e0('0x37')?_0x41cba4[_0x40e0('0x2e')]:_0x41cba4[_0x40e0('0x2f')];return getAuthToken(_0x2d5e17,_0x3eb2f8,_0x3f4135)[_0x40e0('0x1c')](function(_0x49f5f1){_0x54efa2=_0x54efa2?_0x54efa2:_0x40e0('0x38');var _0x3a4a5c={'method':'GET','uri':_0x3caa0d+_0x40e0('0x39')+_0x54efa2+_0x40e0('0x3a')+_0x54efa2+'\x20eq\x20\x27'+_0x4c1046[_0x40e0('0x3b')]('+',_0x40e0('0x3c'))+'\x27','headers':{'Authorization':_0x40e0('0x1f')+_0x49f5f1,'If-None-Match':null,'OData-Version':_0x40e0('0x20')},'json':!![]};return rp(_0x3a4a5c);})[_0x40e0('0x1c')](function(_0x5b1408){var _0x27a436=![];if(!_0x5b1408)return _0x27a436;var _0x22db86=_0x5b1408[_0x40e0('0x21')];for(var _0x1338d9=0x0;_0x1338d9<_0x22db86[_0x40e0('0x26')];_0x1338d9++){if(_0x22db86[_0x1338d9][_0x54efa2]===_0x4c1046){_0x27a436=!![];_0x303eb5['enduserId']=_0x22db86[_0x1338d9]['contactid'];}}return _0x27a436;})['then'](function(_0x3c25db){if(_0x3c25db)return _0x303eb5;if(_0x1f579d===_0x40e0('0x3d')){logger[_0x40e0('0x28')]('['+[_0x3f4135[_0x40e0('0x29')]()]+_0x40e0('0x3e'));return _0x303eb5;}return createEndUser(_0x303eb5,_0x2d5e17,_0x3eb2f8,_0x3caa0d,_0x41cba4,_0x3f4135,_0x54efa2)['then'](function(_0x27eff4){logger[_0x40e0('0x28')]('['+[_0x3f4135[_0x40e0('0x29')]()]+_0x40e0('0x3f'),_0x27eff4['enduserId']);return _0x27eff4;});});}function getCustomFields(_0x41f027,_0x15fd76,_0x4a7d84){var _0x493659={};if(_0x41f027[_0x40e0('0x26')]>0x0){_[_0x40e0('0x40')](_0x41f027,function(_0x446d6d){if(_[_0x40e0('0x41')]([_0x40e0('0x42'),'picklist'],_0x446d6d[_0x40e0('0x43')])&&_0x446d6d[_0x40e0('0x44')]&&!_0x446d6d[_0x40e0('0x45')]){var _0x2940a0=_0x446d6d[_0x40e0('0x46')][_0x40e0('0x2d')]();var _0xbe12a5=_0x2940a0[_0x40e0('0x34')](0x0,_0x2940a0[_0x40e0('0x47')]('_'));var _0x24696c=_0x2940a0[_0x40e0('0x34')](_0x2940a0[_0x40e0('0x47')]('_')+0x1);if(_0xbe12a5===_0x4a7d84){_0x493659[_0x24696c]=_0x446d6d[_0x40e0('0x48')];}}});}return _0x493659;}function getTicket(_0x2c586d,_0x2f9011,_0x304887,_0x51add0,_0x45dd23,_0x24b4b0,_0x98600e){return new Promise(function(_0x940472,_0x2634f3){var _0x28f623;return getAuthToken(_0x2f9011,_0x304887,_0x98600e)[_0x40e0('0x1c')](function(_0x4bd070){if(_0x24b4b0[_0x40e0('0x49')]===_0x40e0('0x4a')){_0x28f623={'method':_0x40e0('0x12'),'uri':_0x51add0+_0x40e0('0x4b'),'body':Object[_0x40e0('0x4c')]({},{'title':intUtil[_0x40e0('0x4d')](_0x24b4b0[_0x40e0('0x4e')],_0x45dd23,'\x20'),'description':intUtil[_0x40e0('0x4d')](_0x24b4b0[_0x40e0('0x4f')],_0x45dd23,'\x0a'),'customerid_contact@odata.bind':_0x2c586d[_0x40e0('0x36')]?_0x40e0('0x50')+_0x2c586d['enduserId']+')':undefined,'ownerid@odata.bind':_0x40e0('0x31')+_0x2c586d[_0x40e0('0x2c')]+')','caseorigincode':'1'},getCustomFields(_0x24b4b0['Fields'],_0x45dd23,_0x24b4b0[_0x40e0('0x49')])),'headers':{'Authorization':_0x40e0('0x1f')+_0x4bd070,'OData-Version':_0x40e0('0x20')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x24b4b0[_0x40e0('0x49')]===_0x40e0('0x51')){var _0x2bdc78=_0x2c586d[_0x40e0('0x36')]?[{'partyid_systemuser@odata.bind':_0x40e0('0x31')+_0x2c586d['userId']+')','participationtypemask':_0x2c586d['callDirection']===_0x40e0('0x52')?0x2:0x1},{'partyid_contact@odata.bind':_0x40e0('0x50')+_0x2c586d[_0x40e0('0x36')]+')','participationtypemask':_0x2c586d[_0x40e0('0x53')]===_0x40e0('0x52')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x40e0('0x31')+_0x2c586d[_0x40e0('0x2c')]+')','participationtypemask':_0x2c586d[_0x40e0('0x53')]==='queue'?0x2:0x1}];_0x28f623={'method':_0x40e0('0x12'),'uri':_0x51add0+_0x40e0('0x54'),'body':Object[_0x40e0('0x4c')]({},{'subject':intUtil['getString'](_0x24b4b0[_0x40e0('0x4e')],_0x45dd23,'\x20'),'phonenumber':String(_0x45dd23[_0x40e0('0x2f')]),'description':intUtil[_0x40e0('0x4d')](_0x24b4b0['Descriptions'],_0x45dd23,'\x0a'),'regardingobjectid_contact@odata.bind':_0x2c586d['enduserId']?'/contacts('+_0x2c586d[_0x40e0('0x36')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x2c586d[_0x40e0('0x2c')]+')','directioncode':_0x2c586d[_0x40e0('0x53')]==='queue'?![]:!![],'phonecall_activity_parties':_0x2bdc78},getCustomFields(_0x24b4b0['Fields'],_0x45dd23,_0x24b4b0[_0x40e0('0x49')])),'headers':{'Authorization':_0x40e0('0x1f')+_0x4bd070,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x28f623);})[_0x40e0('0x1c')](function(_0x11e018){var _0x337f04=_0x11e018['headers'][_0x40e0('0x55')];var _0x11dbfa=_0x337f04[_0x40e0('0x34')](_0x337f04['lastIndexOf']('(')+0x1,_0x337f04[_0x40e0('0x35')](')'));_0x2c586d[_0x40e0('0x56')]=_0x11dbfa;_0x940472(_0x2c586d);})[_0x40e0('0x18')](function(_0x31f2e1){_0x2634f3(_0x31f2e1[_0x40e0('0x1b')]);});});}function emit(_0x3844bc,_0x1a0e3d,_0x187ab0,_0x36565c){var _0x39373f={'uri':util[_0x40e0('0x57')](_0x40e0('0x58'),_0x3844bc,_0x187ab0,_0x36565c)};io['to'](util[_0x40e0('0x57')](_0x40e0('0x59'),_0x1a0e3d))[_0x40e0('0x5a')](_0x40e0('0x5b'),_0x39373f);}exports['cs']=function(_0x5b6c09,_0x5e0fb8,_0xaa4945,_0x3d33c1,_0x1c9dc2,_0x1091b9,_0x2c89b5,_0x5124df){var _0x305ca1={};_0x1091b9[_0x40e0('0xd')]=_0x1091b9[_0x40e0('0xc')]?intUtil[_0x40e0('0x5c')](_0x1091b9[_0x40e0('0x10')][_0x40e0('0xe')]):intUtil[_0x40e0('0x5c')](_0x1091b9['remoteUri']);_0x1091b9['serverUrl']=intUtil[_0x40e0('0x5c')](_0x1091b9[_0x40e0('0x5d')]);_0x305ca1[_0x40e0('0x53')]=_0x5124df===_0x40e0('0x52')||_0x5124df===_0x40e0('0x5e')?_0x40e0('0x52'):_0x40e0('0x37');var _0x25e34d=_0x1091b9[_0x40e0('0xc')]?util['format']('%s/api/data/v9.0/',_0x1091b9[_0x40e0('0x10')]['data7']):util[_0x40e0('0x57')](_0x40e0('0x5f'),_0x1091b9[_0x40e0('0xd')]);var _0x18dd15=util[_0x40e0('0x57')]('https://login.microsoftonline.com/%s/oauth2/token',_0x1091b9[_0x40e0('0xf')]);var _0xc79887=util[_0x40e0('0x57')](_0x40e0('0x60'),_0x1091b9[_0x40e0('0x5d')],_0x5e0fb8[_0x40e0('0x61')],md5(_0x5e0fb8['uniqueid']));if(_0x1c9dc2&&_0x1c9dc2[_0x40e0('0x62')]){logger[_0x40e0('0x28')]('[QUEUE]',_0x40e0('0x63'));_0x5e0fb8[_0x40e0('0x64')]=_0xc79887;}else if(_0x2c89b5&&_0x2c89b5[_0x40e0('0x65')]&&_0x2c89b5[_0x40e0('0x65')]!=='none'){logger[_0x40e0('0x28')]('[OUTBOUND]',_0x40e0('0x63'));_0x5e0fb8[_0x40e0('0x64')]=_0xc79887;}else{_0x5e0fb8[_0x40e0('0x64')]='';}return getUser(_0x305ca1,_0x1091b9,_0x3d33c1,_0x18dd15,_0x25e34d,_0x5124df)[_0x40e0('0x1c')](function(_0x4c748b){logger[_0x40e0('0x28')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x66'),_0x4c748b[_0x40e0('0x2c')]);logger[_0x40e0('0x28')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x67'),_0x4c748b[_0x40e0('0x25')]);return getEndUser(_0x4c748b,_0x1091b9,_0x18dd15,_0x25e34d,_0x5e0fb8,_0x5124df,_0xaa4945[_0x40e0('0x68')],_0xaa4945[_0x40e0('0x69')]);})['then'](function(_0x2cd8d1){logger[_0x40e0('0x28')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x6a'),_0x2cd8d1['enduserId']);logger[_0x40e0('0x28')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x6b'),_0x5e0fb8[_0x40e0('0x2f')]);return getTicket(_0x2cd8d1,_0x1091b9,_0x18dd15,_0x25e34d,_0x5e0fb8,_0xaa4945,_0x5124df);})['then'](function(_0x44d065){logger[_0x40e0('0x28')](util[_0x40e0('0x57')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x6c'),_0xaa4945['ticketType'],_0x44d065[_0x40e0('0x56')]));logger[_0x40e0('0x28')](util['format']('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x6d'),_0x5124df));if(_0x5124df!=='unmanaged'&&_0xaa4945[_0x40e0('0x6e')]){logger[_0x40e0('0x28')]('['+_0x5124df[_0x40e0('0x29')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x1091b9[_0x40e0('0xd')],_0x3d33c1[_0x40e0('0x6f')],_0xaa4945[_0x40e0('0x49')],_0x44d065[_0x40e0('0x56')]);}})[_0x40e0('0x18')](function(_0x42c45e){logger[_0x40e0('0x19')]('['+_0x5124df[_0x40e0('0x29')]()+_0x40e0('0x70'),_0x42c45e[_0x40e0('0x1b')]);console[_0x40e0('0x19')](_0x40e0('0x71'),_0x42c45e);});};
\ No newline at end of file
+var _0x416f=['contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','customField','idField','indexOf','ticketType','Subjects','getString','queue','/contacts(','callDirection','assign','Descriptions','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','remoteUri','serverUrl','unmanaged','%s/api/data/v9.0/','data7','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','modernAuthentication','tenantId','CloudProvider','data2','resolve','clientId','username','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','then','value','isNil','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','userId','toLowerCase','destcalleridnum','POST','contacts','/systemusers(','4.0','body','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','calleridnum','telephone1','&$filter=','replace','%2b'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x416f,0x17a));var _0xf416=function(_0x2bd549,_0x5e8c84){_0x2bd549=_0x2bd549-0x0;var _0x7dc68=_0x416f[_0x2bd549];return _0x7dc68;};'use strict';var _=require('lodash');var rp=require(_0xf416('0x0'));var util=require('util');var intUtil=require(_0xf416('0x1'));var md5=require(_0xf416('0x2'));var Redis=require(_0xf416('0x3'));var logger=require(_0xf416('0x4'))(_0xf416('0x5'));var config=require(_0xf416('0x6'));config[_0xf416('0x7')]=_[_0xf416('0x8')](config[_0xf416('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xf416('0x9'))(new Redis(config[_0xf416('0x7')]));function getAuthToken(_0x44331b,_0x37d8bf,_0x10993d){if(_0x44331b[_0xf416('0xa')]){_0x44331b['remoteUri']=_0x44331b['CloudProvider']['data7'];_0x44331b[_0xf416('0xb')]=_0x44331b[_0xf416('0xc')][_0xf416('0xd')];return Promise[_0xf416('0xe')](_0x44331b[_0xf416('0xc')]['data5']);}var _0x155b3a={'method':'POST','uri':_0x37d8bf,'form':{'client_id':_0x44331b[_0xf416('0xf')],'resource':_0x44331b['remoteUri'],'username':_0x44331b[_0xf416('0x10')],'password':_0x44331b[_0xf416('0x11')],'grant_type':_0xf416('0x11'),'client_secret':_0x44331b[_0xf416('0x12')]},'json':!![]};return rp(_0x155b3a)['then'](function(_0x196101){return _0x196101[_0xf416('0x13')];})[_0xf416('0x14')](function(_0x25c62c){logger[_0xf416('0x15')]('['+[_0x10993d[_0xf416('0x16')]()]+_0xf416('0x17'));return _0x25c62c[_0xf416('0x18')];});}function getUser(_0x3f1e0e,_0x2ec8bb,_0x5298b9,_0x377c76,_0x1f2db9,_0x37a6f6){return new Promise(function(_0x20586d,_0x27e035){return getAuthToken(_0x2ec8bb,_0x377c76,_0x37a6f6)['then'](function(_0x9354f4){var _0x22e53a={'method':_0xf416('0x19'),'uri':_0x1f2db9+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xf416('0x1a')+_0x9354f4,'OData-Version':'4.0'},'json':!![]};return rp(_0x22e53a);})[_0xf416('0x1b')](function(_0x2041f9){var _0xee91a=_0x2041f9[_0xf416('0x1c')];var _0x211949=![];var _0x348a57=null;if(!_[_0xf416('0x1d')](_0x5298b9)){if(intUtil['validateEmail'](_0x5298b9[_0xf416('0x1e')])){_0x3f1e0e[_0xf416('0x1f')]=_0x5298b9['email'];for(_0x348a57=0x0;_0x348a57<_0xee91a['length'];_0x348a57++){if(_0xee91a[_0x348a57][_0xf416('0x20')]===_0x5298b9[_0xf416('0x1e')]&&!_0xee91a[_0x348a57][_0xf416('0x21')]){_0x211949=!![];logger[_0xf416('0x22')]('['+[_0x37a6f6['toUpperCase']()]+_0xf416('0x23')+_0xee91a[_0x348a57][_0xf416('0x24')]+'!');_0x3f1e0e['userId']=_0xee91a[_0x348a57][_0xf416('0x24')];}}}}if(!_0x211949){logger[_0xf416('0x22')]('['+[_0x37a6f6[_0xf416('0x16')]()]+_0xf416('0x25'));_0x3f1e0e[_0xf416('0x1f')]=_0x2ec8bb[_0xf416('0x10')];for(_0x348a57=0x0;_0x348a57<_0xee91a[_0xf416('0x26')];_0x348a57++){if(_0xee91a[_0x348a57][_0xf416('0x20')]===_0x2ec8bb['username']){_0x3f1e0e[_0xf416('0x27')]=_0xee91a[_0x348a57][_0xf416('0x24')];}}}_0x20586d(_0x3f1e0e);})[_0xf416('0x14')](function(_0x53dcc4){_0x27e035(_0x53dcc4[_0xf416('0x18')]);});});}function createEndUser(_0x252d32,_0x2a55d1,_0xfb1ca0,_0x5913a1,_0x16776d,_0x2bb4e5,_0x2e6f27){return new Promise(function(_0x24cbaa,_0x12adf0){return getAuthToken(_0x2a55d1,_0xfb1ca0,_0x2bb4e5)[_0xf416('0x1b')](function(_0x1d87d8){var _0x44d681=_0x2bb4e5[_0xf416('0x28')]()==='outbound'?_0x16776d[_0xf416('0x29')]:_0x16776d['calleridnum'];var _0x14e306={'method':_0xf416('0x2a'),'uri':_0x5913a1+_0xf416('0x2b'),'body':{'fullname':_0x44d681,'firstname':_0x44d681,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf416('0x2c')+_0x252d32[_0xf416('0x27')]+')'},'headers':{'Authorization':_0xf416('0x1a')+_0x1d87d8,'OData-Version':_0xf416('0x2d')},'json':!![],'resolveWithFullResponse':!![]};_0x14e306[_0xf416('0x2e')][_0x2e6f27]=_0x44d681;return rp(_0x14e306);})[_0xf416('0x1b')](function(_0x18f133){var _0x4edec5=_0x18f133[_0xf416('0x2f')][_0xf416('0x30')];var _0x401179=_0x4edec5[_0xf416('0x31')](_0x4edec5[_0xf416('0x32')]('(')+0x1,_0x4edec5[_0xf416('0x32')](')'));_0x252d32[_0xf416('0x33')]=_0x401179;_0x24cbaa(_0x252d32);})['catch'](function(_0xbc432f){_0x12adf0(_0xbc432f[_0xf416('0x18')]);});});}function getEndUser(_0x406325,_0x1d316d,_0x4b10ba,_0x2f7a14,_0x6bc870,_0x1d42c5,_0x545437,_0x23d847){var _0x9f8644=_0x1d42c5[_0xf416('0x28')]()===_0xf416('0x34')?_0x6bc870['destcalleridnum']:_0x6bc870[_0xf416('0x35')];return getAuthToken(_0x1d316d,_0x4b10ba,_0x1d42c5)[_0xf416('0x1b')](function(_0x5b4491){_0x23d847=_0x23d847?_0x23d847:_0xf416('0x36');var _0x1d059a={'method':'GET','uri':_0x2f7a14+'contacts?$select='+_0x23d847+_0xf416('0x37')+_0x23d847+'\x20eq\x20\x27'+_0x9f8644[_0xf416('0x38')]('+',_0xf416('0x39'))+'\x27','headers':{'Authorization':_0xf416('0x1a')+_0x5b4491,'If-None-Match':null,'OData-Version':_0xf416('0x2d')},'json':!![]};return rp(_0x1d059a);})[_0xf416('0x1b')](function(_0x463e35){var _0x14215c=![];if(!_0x463e35)return _0x14215c;var _0x287b53=_0x463e35[_0xf416('0x1c')];for(var _0x4c2f4a=0x0;_0x4c2f4a<_0x287b53[_0xf416('0x26')];_0x4c2f4a++){if(_0x287b53[_0x4c2f4a][_0x23d847]===_0x9f8644){_0x14215c=!![];_0x406325[_0xf416('0x33')]=_0x287b53[_0x4c2f4a][_0xf416('0x3a')];}}return _0x14215c;})['then'](function(_0x210c7e){if(_0x210c7e)return _0x406325;if(_0x545437==='nothing'){logger[_0xf416('0x22')]('['+[_0x1d42c5[_0xf416('0x16')]()]+_0xf416('0x3b'));return _0x406325;}return createEndUser(_0x406325,_0x1d316d,_0x4b10ba,_0x2f7a14,_0x6bc870,_0x1d42c5,_0x23d847)[_0xf416('0x1b')](function(_0x4490bb){logger[_0xf416('0x22')]('['+[_0x1d42c5[_0xf416('0x16')]()]+_0xf416('0x3c'),_0x4490bb[_0xf416('0x33')]);return _0x4490bb;});});}function getCustomFields(_0x1f4610,_0x160663,_0x4ef258){var _0xdd2d1a={};if(_0x1f4610[_0xf416('0x26')]>0x0){_[_0xf416('0x3d')](_0x1f4610,function(_0x35f426){if(_['includes']([_0xf416('0x3e'),_0xf416('0x3f')],_0x35f426[_0xf416('0x40')])&&_0x35f426[_0xf416('0x41')]&&!_0x35f426[_0xf416('0x42')]){var _0x2e5d90=_0x35f426[_0xf416('0x43')]['toLowerCase']();var _0x2dc41e=_0x2e5d90[_0xf416('0x31')](0x0,_0x2e5d90[_0xf416('0x44')]('_'));var _0x177b72=_0x2e5d90['substring'](_0x2e5d90[_0xf416('0x44')]('_')+0x1);if(_0x2dc41e===_0x4ef258){_0xdd2d1a[_0x177b72]=_0x35f426['content'];}}});}return _0xdd2d1a;}function getTicket(_0x21f077,_0x1e79ab,_0x45503b,_0x39fff5,_0x5b09c0,_0x52f121,_0x6f9dbd){return new Promise(function(_0x2b70ef,_0x2a645a){var _0x5b5d23;return getAuthToken(_0x1e79ab,_0x45503b,_0x6f9dbd)[_0xf416('0x1b')](function(_0x34d540){if(_0x52f121[_0xf416('0x45')]==='incident'){_0x5b5d23={'method':'POST','uri':_0x39fff5+'incidents','body':Object['assign']({},{'title':intUtil['getString'](_0x52f121[_0xf416('0x46')],_0x5b09c0,'\x20'),'description':intUtil[_0xf416('0x47')](_0x52f121['Descriptions'],_0x5b09c0,'\x0a'),'customerid_contact@odata.bind':_0x21f077[_0xf416('0x33')]?'/contacts('+_0x21f077[_0xf416('0x33')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x21f077[_0xf416('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x52f121['Fields'],_0x5b09c0,_0x52f121['ticketType'])),'headers':{'Authorization':_0xf416('0x1a')+_0x34d540,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x52f121['ticketType']==='phonecall'){var _0xe75c7b=_0x21f077['enduserId']?[{'partyid_systemuser@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','participationtypemask':_0x21f077['callDirection']===_0xf416('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0xf416('0x49')+_0x21f077[_0xf416('0x33')]+')','participationtypemask':_0x21f077['callDirection']===_0xf416('0x48')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','participationtypemask':_0x21f077[_0xf416('0x4a')]===_0xf416('0x48')?0x2:0x1}];_0x5b5d23={'method':'POST','uri':_0x39fff5+'phonecalls','body':Object[_0xf416('0x4b')]({},{'subject':intUtil[_0xf416('0x47')](_0x52f121[_0xf416('0x46')],_0x5b09c0,'\x20'),'phonenumber':String(_0x5b09c0[_0xf416('0x35')]),'description':intUtil[_0xf416('0x47')](_0x52f121[_0xf416('0x4c')],_0x5b09c0,'\x0a'),'regardingobjectid_contact@odata.bind':_0x21f077[_0xf416('0x33')]?'/contacts('+_0x21f077['enduserId']+')':undefined,'ownerid@odata.bind':_0xf416('0x2c')+_0x21f077[_0xf416('0x27')]+')','directioncode':_0x21f077[_0xf416('0x4a')]===_0xf416('0x48')?![]:!![],'phonecall_activity_parties':_0xe75c7b},getCustomFields(_0x52f121[_0xf416('0x4d')],_0x5b09c0,_0x52f121[_0xf416('0x45')])),'headers':{'Authorization':_0xf416('0x1a')+_0x34d540,'OData-Version':_0xf416('0x2d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5b5d23);})[_0xf416('0x1b')](function(_0x2c95d1){var _0x18962f=_0x2c95d1['headers'][_0xf416('0x30')];var _0x36960a=_0x18962f[_0xf416('0x31')](_0x18962f[_0xf416('0x32')]('(')+0x1,_0x18962f[_0xf416('0x32')](')'));_0x21f077[_0xf416('0x4e')]=_0x36960a;_0x2b70ef(_0x21f077);})[_0xf416('0x14')](function(_0x31c431){_0x2a645a(_0x31c431['message']);});});}function emit(_0x2ff6aa,_0x169662,_0x6c3864,_0x446361){var _0x4ba0ac={'uri':util['format'](_0xf416('0x4f'),_0x2ff6aa,_0x6c3864,_0x446361)};io['to'](util[_0xf416('0x50')](_0xf416('0x51'),_0x169662))[_0xf416('0x52')](_0xf416('0x53'),_0x4ba0ac);}exports['cs']=function(_0x25e924,_0x25ccbb,_0x738774,_0x5c70d,_0x15fbb2,_0xcd0aa9,_0x2af60c,_0x1a2415){var _0x52696e={};_0xcd0aa9['remoteUri']=_0xcd0aa9[_0xf416('0xa')]?intUtil[_0xf416('0x54')](_0xcd0aa9[_0xf416('0xc')]['data7']):intUtil[_0xf416('0x54')](_0xcd0aa9[_0xf416('0x55')]);_0xcd0aa9[_0xf416('0x56')]=intUtil[_0xf416('0x54')](_0xcd0aa9['serverUrl']);_0x52696e[_0xf416('0x4a')]=_0x1a2415===_0xf416('0x48')||_0x1a2415===_0xf416('0x57')?_0xf416('0x48'):_0xf416('0x34');var _0x5ebe57=_0xcd0aa9[_0xf416('0xa')]?util[_0xf416('0x50')](_0xf416('0x58'),_0xcd0aa9[_0xf416('0xc')][_0xf416('0x59')]):util[_0xf416('0x50')](_0xf416('0x58'),_0xcd0aa9[_0xf416('0x55')]);var _0x461d0d=util[_0xf416('0x50')](_0xf416('0x5a'),_0xcd0aa9[_0xf416('0xb')]);var _0x5ec0de=util[_0xf416('0x50')](_0xf416('0x5b'),_0xcd0aa9[_0xf416('0x56')],_0x25ccbb[_0xf416('0x5c')],md5(_0x25ccbb[_0xf416('0x5c')]));if(_0x15fbb2&&_0x15fbb2[_0xf416('0x5d')]){logger[_0xf416('0x22')](_0xf416('0x5e'),_0xf416('0x5f'));_0x25ccbb[_0xf416('0x60')]=_0x5ec0de;}else if(_0x2af60c&&_0x2af60c['recordingFormat']&&_0x2af60c[_0xf416('0x61')]!==_0xf416('0x62')){logger['info'](_0xf416('0x63'),_0xf416('0x5f'));_0x25ccbb[_0xf416('0x60')]=_0x5ec0de;}else{_0x25ccbb[_0xf416('0x60')]='';}return getUser(_0x52696e,_0xcd0aa9,_0x5c70d,_0x461d0d,_0x5ebe57,_0x1a2415)['then'](function(_0xabdd6){logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']\x20The\x20User\x20ID\x20is:',_0xabdd6[_0xf416('0x27')]);logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']\x20The\x20User\x20email\x20is:',_0xabdd6[_0xf416('0x1f')]);return getEndUser(_0xabdd6,_0xcd0aa9,_0x461d0d,_0x5ebe57,_0x25ccbb,_0x1a2415,_0x738774[_0xf416('0x64')],_0x738774[_0xf416('0x65')]);})[_0xf416('0x1b')](function(_0x4b0237){logger[_0xf416('0x22')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x66'),_0x4b0237[_0xf416('0x33')]);logger['info']('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x67'),_0x25ccbb[_0xf416('0x35')]);return getTicket(_0x4b0237,_0xcd0aa9,_0x461d0d,_0x5ebe57,_0x25ccbb,_0x738774,_0x1a2415);})['then'](function(_0x53547c){logger[_0xf416('0x22')](util[_0xf416('0x50')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x68'),_0x738774['ticketType'],_0x53547c[_0xf416('0x4e')]));logger['info'](util[_0xf416('0x50')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x69'),_0x1a2415));if(_0x1a2415!=='unmanaged'&&_0x738774['openNewTab']){logger['info']('['+_0x1a2415[_0xf416('0x16')]()+']',_0xf416('0x6a'));emit(_0xcd0aa9[_0xf416('0x55')],_0x5c70d[_0xf416('0x6b')],_0x738774[_0xf416('0x45')],_0x53547c[_0xf416('0x4e')]);}})['catch'](function(_0x1af977){logger[_0xf416('0x15')]('['+_0x1a2415[_0xf416('0x16')]()+_0xf416('0x6c'),_0x1af977[_0xf416('0x18')]);console[_0xf416('0x15')]('Error\x20running\x20Dynamics365\x20integration',_0x1af977);});};
\ No newline at end of file
index c8447bb..d127519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88a=['customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','lastevent','toUpperCase','request-promise','md5','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','GET','map','forEach','string','type','nameField','customField','content','includes','picklist','idField','push','variable','variableName'];(function(_0x197594,_0xe2feaf){var _0x2058a7=function(_0x1df952){while(--_0x1df952){_0x197594['push'](_0x197594['shift']());}};_0x2058a7(++_0xe2feaf);}(_0xa88a,0x138));var _0xaa88=function(_0x469aa6,_0x35da45){_0x469aa6=_0x469aa6-0x0;var _0x5e58e7=_0xa88a[_0x469aa6];return _0x5e58e7;};'use strict';var _=require('lodash');var rp=require(_0xaa88('0x0'));var md5=require(_0xaa88('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xaa88('0x2'));var config=require('../../../../config/environment');var logger=require(_0xaa88('0x3'))(_0xaa88('0x4'));config[_0xaa88('0x5')]=_[_0xaa88('0x6')](config[_0xaa88('0x5')],{'host':_0xaa88('0x7'),'port':0x18eb});var io=require(_0xaa88('0x8'))(new Redis(config[_0xaa88('0x5')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x38a7ea,_0x32c010,_0x4abe8b){io['to'](_0x38a7ea)[_0xaa88('0x9')](_0x32c010,_0x4abe8b);}function getTicket(_0xf75e1c,_0x58637f,_0x151fae,_0x4d82d0,_0x151201){logger[_0xaa88('0xa')](_0xaa88('0xb'));var _0x4395e0=_[_0xaa88('0xc')]({'responder_id':_0x58637f['id'],'requester_id':_0x151fae['id'],'name':util[_0xaa88('0xd')]('Caller\x20-\x20%s',_0x151201[_0xaa88('0xe')]),'phone':_0x151201[_0xaa88('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xaa88('0x10')](_0x4d82d0[_0xaa88('0x11')],_0x151201,'\x20'),'description':intUtil[_0xaa88('0x10')](_0x4d82d0[_0xaa88('0x12')],_0x151201,_0xaa88('0x13')),'tags':getTags(_0x4d82d0[_0xaa88('0x14')],_0xaa88('0x15'))},getCustomFields(_0x4d82d0[_0xaa88('0x16')],_0x151201));_0x4395e0[_0xaa88('0x17')]=_[_0xaa88('0x18')](_[_0xaa88('0x19')](_0x4395e0[_0xaa88('0x17')],'id'),_0xaa88('0x1a'));return request({'uri':util[_0xaa88('0xd')](_0xaa88('0x1b'),_0xf75e1c[_0xaa88('0x1c')]),'method':_0xaa88('0x1d'),'body':_0x4395e0})[_0xaa88('0x1e')](function(_0x29ae32){logger[_0xaa88('0xa')](_0xaa88('0x1f'));return _0x29ae32;});}function getUser(_0x1d1604,_0x4243cc){if(intUtil[_0xaa88('0x20')](_0x4243cc)){return request({'uri':util['format'](_0xaa88('0x21'),_0x1d1604[_0xaa88('0x1c')]),'qs':{'email':_0x4243cc}})[_0xaa88('0x1e')](function(_0x3a53bf){if(_0x3a53bf[_0xaa88('0x22')]){logger[_0xaa88('0xa')]('Agent\x20found!');return _[_0xaa88('0x23')](_0x3a53bf,function(_0x39aa5f){return _0x39aa5f[_0xaa88('0x24')]['email']===_0x4243cc;});}else{logger[_0xaa88('0xa')](_0xaa88('0x25'));return request({'uri':util[_0xaa88('0xd')]('%s/api/v2/agents/me',_0x1d1604[_0xaa88('0x1c')])})['then'](function(_0x17403c){logger['info'](_0xaa88('0x26'));return _0x17403c;});}});}else{logger['info'](_0xaa88('0x27'));return request({'uri':util[_0xaa88('0xd')](_0xaa88('0x28'),_0x1d1604[_0xaa88('0x1c')])})[_0xaa88('0x1e')](function(_0x5abfa2){logger[_0xaa88('0xa')]('Admin\x20account\x20selected.');return _0x5abfa2;});}}function getEndUser(_0x4ab291,_0x1d8cb5,_0x20ed03){logger[_0xaa88('0xa')]('Searching\x20enduser\x20with\x20phone',_0x20ed03);return request({'uri':util[_0xaa88('0xd')]('%s/api/v2/contacts',_0x4ab291['remoteUri']),'qs':{'phone':_0x20ed03}})['then'](function(_0x3d79e5){if(_0x3d79e5[_0xaa88('0x22')]){logger[_0xaa88('0xa')](_0xaa88('0x29'));return _[_0xaa88('0x23')](_0x3d79e5,{'phone':_0x20ed03});}else{logger[_0xaa88('0xa')](_0xaa88('0x2a'));return request({'uri':util[_0xaa88('0xd')](_0xaa88('0x2b'),_0x4ab291[_0xaa88('0x1c')]),'method':_0xaa88('0x1d'),'body':{'name':_0x1d8cb5,'phone':_0x20ed03}})['then'](function(_0x2654b1){logger[_0xaa88('0xa')](_0xaa88('0x2c'));return _0x2654b1;});}});}function getAuth(_0x79eed0){return util[_0xaa88('0xd')](_0xaa88('0x2d'),new Buffer(_0x79eed0[_0xaa88('0x2e')]+':X')[_0xaa88('0x2f')]('base64'));}function request(_0x2aaf94){logger[_0xaa88('0x30')](_0xaa88('0x31'),JSON['stringify'](_0x2aaf94));return rp(_['defaults'](_0x2aaf94,{'method':_0xaa88('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x4266ee,_0x431792){var _0x13ceea=[];if(_0x4266ee&&_0x4266ee['length']>0x0){_0x13ceea=_[_0xaa88('0x33')](_0x4266ee,_0x431792);}return _0x13ceea;}function getCustomFields(_0x4aa5c8,_0x589c5f){var _0x11a3d5=[];var _0x1ffc05={'custom_fields':[]};if(_0x4aa5c8['length']>0x0){_[_0xaa88('0x34')](_0x4aa5c8,function(_0x32c4f4){if(_['includes']([_0xaa88('0x35'),'picklist'],_0x32c4f4[_0xaa88('0x36')])&&_0x32c4f4[_0xaa88('0x37')]&&!_0x32c4f4[_0xaa88('0x38')]){_0x1ffc05[_0x32c4f4[_0xaa88('0x37')]['toLowerCase']()]=_0x32c4f4[_0xaa88('0x39')][_0xaa88('0x2f')]();}else if(_[_0xaa88('0x3a')](['string',_0xaa88('0x3b')],_0x32c4f4['type'])&&_0x32c4f4[_0xaa88('0x3c')]&&_0x32c4f4[_0xaa88('0x38')]){_0x1ffc05[_0xaa88('0x17')][_0xaa88('0x3d')]({'id':_0x32c4f4['idField'],'value':_0x32c4f4[_0xaa88('0x39')][_0xaa88('0x2f')]()});}else if(_0x32c4f4['type']===_0xaa88('0x3e')&&_0x32c4f4[_0xaa88('0x3f')]&&_0x32c4f4[_0xaa88('0x3c')]&&_0x32c4f4['customField']){_0x589c5f[_0x32c4f4['variableName']]&&_0x1ffc05[_0xaa88('0x17')][_0xaa88('0x3d')]({'id':_0x32c4f4[_0xaa88('0x3c')],'value':_0x589c5f[_0x32c4f4[_0xaa88('0x3f')]][_0xaa88('0x2f')]()});}else if(_0x32c4f4[_0xaa88('0x36')]===_0xaa88('0x40')&&_0x32c4f4[_0xaa88('0x41')]&&_0x32c4f4['Variable']['name']&&_0x32c4f4[_0xaa88('0x3c')]&&_0x32c4f4[_0xaa88('0x38')]){_0x589c5f[_0x32c4f4[_0xaa88('0x41')][_0xaa88('0x15')][_0xaa88('0x42')]()]&&_0x1ffc05[_0xaa88('0x17')][_0xaa88('0x3d')]({'id':_0x32c4f4[_0xaa88('0x3c')],'value':_0x589c5f[_0x32c4f4[_0xaa88('0x41')][_0xaa88('0x15')][_0xaa88('0x42')]()][_0xaa88('0x2f')]()});}});}return _0x1ffc05;}exports[_0xaa88('0x43')]=function(_0x415a9a,_0x10368f,_0x49f062,_0x52030f,_0x3ea4ea,_0xc5ad19){var _0x409dec,_0x5c720d;_0xc5ad19['remoteUri']=intUtil[_0xaa88('0x44')](_0xc5ad19[_0xaa88('0x1c')]);_0xc5ad19[_0xaa88('0x45')]=intUtil[_0xaa88('0x44')](_0xc5ad19['serverUrl']);if(_0x3ea4ea&&_0x3ea4ea['monitor_format']){logger[_0xaa88('0xa')]('[QUEUE]','Recording\x20is\x20enabled!');_0x10368f[_0xaa88('0x46')]=util[_0xaa88('0xd')](_0xaa88('0x47'),_0xc5ad19[_0xaa88('0x45')],_0x10368f[_0xaa88('0x48')],md5(_0x10368f['uniqueid']));}else{_0x10368f['recordingURL']='';}headers[_0xaa88('0x49')]=getAuth(_0xc5ad19);return getUser(_0xc5ad19,_0x52030f[_0xaa88('0x4a')])['then'](function(_0x2e7068){_0x409dec=_0x2e7068;logger[_0xaa88('0xa')]('The\x20User\x20ID\x20is:',_0x409dec['id']);return getEndUser(_0xc5ad19,_0x10368f['calleridname'],_0x10368f[_0xaa88('0xf')]);})[_0xaa88('0x1e')](function(_0x2d45a0){_0x5c720d=_0x2d45a0;logger[_0xaa88('0xa')](_0xaa88('0x4b'),_0x5c720d['id']);return getTicket(_0xc5ad19,_0x409dec,_0x5c720d,_0x49f062,_0x10368f);})[_0xaa88('0x1e')](function(_0x2318c7){if(_0x2318c7&&_0x2318c7['id']){logger[_0xaa88('0xa')](_0xaa88('0x1f'));logger['info'](_0xaa88('0x4c'),_0x2318c7['id']);logger[_0xaa88('0xa')](_0xaa88('0x4d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xaa88('0xd')](_0xaa88('0x4e'),_0x52030f[_0xaa88('0x15')]),_0xaa88('0x4f'),{'uri':util['format'](_0xaa88('0x50'),_0xc5ad19[_0xaa88('0x1c')],_0x2318c7['id'])});}})[_0xaa88('0x51')](function(_0x296913){logger[_0xaa88('0x52')](_0xaa88('0x4d'),JSON['stringify'](_0x296913));});};exports['outbound']=function(_0x58cf0c,_0x3a5d83,_0x453b16,_0x1ded3e,_0x568fe9,_0x1275d6,_0x4bdf40){var _0x326161,_0x1b77a0;_0x1275d6[_0xaa88('0x1c')]=intUtil['stripTrailingSlash'](_0x1275d6[_0xaa88('0x1c')]);_0x1275d6[_0xaa88('0x45')]=intUtil[_0xaa88('0x44')](_0x1275d6[_0xaa88('0x45')]);if(_0x4bdf40&&_0x4bdf40[_0xaa88('0x53')]&&_0x4bdf40[_0xaa88('0x53')]!==_0xaa88('0x54')){logger[_0xaa88('0xa')](_0xaa88('0x55'),_0xaa88('0x56'));_0x3a5d83['recordingURL']=util['format'](_0xaa88('0x47'),_0x1275d6[_0xaa88('0x45')],_0x3a5d83[_0xaa88('0x48')],md5(_0x3a5d83[_0xaa88('0x48')]));}headers[_0xaa88('0x49')]=getAuth(_0x1275d6);return getUser(_0x1275d6,_0x1ded3e[_0xaa88('0x4a')])[_0xaa88('0x1e')](function(_0x2e9ca1){_0x326161=_0x2e9ca1;logger[_0xaa88('0xa')](_0xaa88('0x57'),_0x326161['id']);return getEndUser(_0x1275d6,_0x3a5d83['destcalleridname'],_0x3a5d83[_0xaa88('0x58')]);})[_0xaa88('0x1e')](function(_0x52161c){_0x1b77a0=_0x52161c;logger['info'](_0xaa88('0x4b'),_0x1b77a0['id']);return getTicket(_0x1275d6,_0x326161,_0x1b77a0,_0x453b16,_0x3a5d83);})[_0xaa88('0x1e')](function(_0x37e53d){if(_0x37e53d&&_0x37e53d['id']){logger[_0xaa88('0xa')]('Ticket\x20created!');logger[_0xaa88('0xa')](_0xaa88('0x4c'),_0x37e53d['id']);logger[_0xaa88('0xa')](_0xaa88('0x55'),_0xaa88('0x59'));emit(util[_0xaa88('0xd')](_0xaa88('0x4e'),_0x1ded3e[_0xaa88('0x15')]),_0xaa88('0x4f'),{'uri':util[_0xaa88('0xd')]('%s/helpdesk/tickets/%d',_0x1275d6[_0xaa88('0x1c')],_0x37e53d['id'])});}})[_0xaa88('0x51')](function(_0x5c6aa7){logger[_0xaa88('0x52')](_0xaa88('0x55'),JSON['stringify'](_0x5c6aa7));});};exports[_0xaa88('0x5a')]=function(_0x4e6e8a,_0x1fcb6a,_0x108116,_0x1bd136,_0x4a10e2,_0x2ecb86){var _0x5493d5,_0x262dd1;_0x2ecb86[_0xaa88('0x1c')]=intUtil['stripTrailingSlash'](_0x2ecb86['remoteUri']);_0x2ecb86[_0xaa88('0x45')]=intUtil[_0xaa88('0x44')](_0x2ecb86[_0xaa88('0x45')]);if(_0x4a10e2&&_0x4a10e2[_0xaa88('0x5b')]){logger[_0xaa88('0xa')]('['+_0x1fcb6a[_0xaa88('0x5c')][_0xaa88('0x5d')]()+']',_0xaa88('0x56'));_0x1fcb6a[_0xaa88('0x46')]=util[_0xaa88('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2ecb86['serverUrl'],_0x1fcb6a[_0xaa88('0x48')],md5(_0x1fcb6a['uniqueid']));}else{_0x1fcb6a[_0xaa88('0x46')]='';}headers['Authorization']=getAuth(_0x2ecb86);return getUser(_0x2ecb86,'')[_0xaa88('0x1e')](function(_0x1dd151){_0x5493d5=_0x1dd151;logger[_0xaa88('0xa')](_0xaa88('0x57'),_0x5493d5['id']);return getEndUser(_0x2ecb86,_0x1fcb6a[_0xaa88('0xe')],_0x1fcb6a[_0xaa88('0xf')]);})[_0xaa88('0x1e')](function(_0x2111a4){_0x262dd1=_0x2111a4;logger[_0xaa88('0xa')](_0xaa88('0x4b'),_0x262dd1['id']);return getTicket(_0x2ecb86,_0x5493d5,_0x262dd1,_0x108116,_0x1fcb6a);})[_0xaa88('0x1e')](function(_0x47feef){if(_0x47feef){logger[_0xaa88('0xa')]('Ticket\x20created!');logger[_0xaa88('0xa')](_0xaa88('0x4c'),_0x47feef['id']);}})[_0xaa88('0x51')](function(_0x38c224){logger[_0xaa88('0x52')]('['+_0x1fcb6a['lastevent'][_0xaa88('0x5d')]()+']',JSON['stringify'](_0x38c224));});};
\ No newline at end of file
+var _0xcd75=['type','nameField','customField','toLowerCase','content','toString','idField','push','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','Recording\x20is\x20enabled!','Authorization','The\x20User\x20ID\x20is:','destcalleridname','[OUTBOUND]','lastevent','toUpperCase','lodash','request-promise','md5','util','./util','freshdesk','defaults','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','Descriptions','name','custom_fields','mapValues','keyBy','value','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','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\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist'];(function(_0x308213,_0x224541){var _0x2e1619=function(_0x972b51){while(--_0x972b51){_0x308213['push'](_0x308213['shift']());}};_0x2e1619(++_0x224541);}(_0xcd75,0x186));var _0x5cd7=function(_0x5ba025,_0x46900d){_0x5ba025=_0x5ba025-0x0;var _0x15b932=_0xcd75[_0x5ba025];return _0x15b932;};'use strict';var _=require(_0x5cd7('0x0'));var rp=require(_0x5cd7('0x1'));var md5=require(_0x5cd7('0x2'));var util=require(_0x5cd7('0x3'));var Redis=require('ioredis');var intUtil=require(_0x5cd7('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x5cd7('0x5'));config['redis']=_[_0x5cd7('0x6')](config['redis'],{'host':_0x5cd7('0x7'),'port':0x18eb});var io=require(_0x5cd7('0x8'))(new Redis(config['redis']));var headers={'Content-Type':_0x5cd7('0x9'),'Accept':'application/json'};function emit(_0x31d516,_0x3e6132,_0x2c4452){io['to'](_0x31d516)[_0x5cd7('0xa')](_0x3e6132,_0x2c4452);}function getTicket(_0x5b2545,_0x4e91c2,_0x22b995,_0x2f6210,_0x102f4b){logger[_0x5cd7('0xb')]('Creating\x20new\x20ticket...');var _0x108330=_[_0x5cd7('0xc')]({'responder_id':_0x4e91c2['id'],'requester_id':_0x22b995['id'],'name':util[_0x5cd7('0xd')](_0x5cd7('0xe'),_0x102f4b[_0x5cd7('0xf')]),'phone':_0x102f4b[_0x5cd7('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2f6210[_0x5cd7('0x11')],_0x102f4b,'\x20'),'description':intUtil['getString'](_0x2f6210[_0x5cd7('0x12')],_0x102f4b,'<br>'),'tags':getTags(_0x2f6210['Tags'],_0x5cd7('0x13'))},getCustomFields(_0x2f6210['Fields'],_0x102f4b));_0x108330[_0x5cd7('0x14')]=_[_0x5cd7('0x15')](_[_0x5cd7('0x16')](_0x108330['custom_fields'],'id'),_0x5cd7('0x17'));return request({'uri':util[_0x5cd7('0xd')]('%s/api/v2/tickets',_0x5b2545[_0x5cd7('0x18')]),'method':_0x5cd7('0x19'),'body':_0x108330})[_0x5cd7('0x1a')](function(_0xfe0f77){logger[_0x5cd7('0xb')](_0x5cd7('0x1b'));return _0xfe0f77;});}function getUser(_0x102c37,_0x56d56e){if(intUtil['validateEmail'](_0x56d56e)){return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1c'),_0x102c37[_0x5cd7('0x18')]),'qs':{'email':_0x56d56e}})[_0x5cd7('0x1a')](function(_0x44b3f4){if(_0x44b3f4[_0x5cd7('0x1d')]){logger['info']('Agent\x20found!');return _['find'](_0x44b3f4,function(_0x3681de){return _0x3681de['contact']['email']===_0x56d56e;});}else{logger['info'](_0x5cd7('0x1e'));return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1f'),_0x102c37[_0x5cd7('0x18')])})['then'](function(_0x19c95f){logger[_0x5cd7('0xb')](_0x5cd7('0x20'));return _0x19c95f;});}});}else{logger[_0x5cd7('0xb')](_0x5cd7('0x21'));return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x1f'),_0x102c37[_0x5cd7('0x18')])})['then'](function(_0x1d9d4f){logger[_0x5cd7('0xb')]('Admin\x20account\x20selected.');return _0x1d9d4f;});}}function getEndUser(_0x4d29e7,_0x5d40f5,_0x8ee14e){logger['info'](_0x5cd7('0x22'),_0x8ee14e);return request({'uri':util[_0x5cd7('0xd')](_0x5cd7('0x23'),_0x4d29e7[_0x5cd7('0x18')]),'qs':{'phone':_0x8ee14e}})[_0x5cd7('0x1a')](function(_0x3faeee){if(_0x3faeee['length']){logger[_0x5cd7('0xb')](_0x5cd7('0x24'));return _['find'](_0x3faeee,{'phone':_0x8ee14e});}else{logger['info'](_0x5cd7('0x25'));return request({'uri':util['format'](_0x5cd7('0x23'),_0x4d29e7['remoteUri']),'method':_0x5cd7('0x19'),'body':{'name':_0x5d40f5,'phone':_0x8ee14e}})[_0x5cd7('0x1a')](function(_0x1f3b38){logger[_0x5cd7('0xb')](_0x5cd7('0x26'));return _0x1f3b38;});}});}function getAuth(_0x51f3e4){return util[_0x5cd7('0xd')](_0x5cd7('0x27'),new Buffer(_0x51f3e4['apiKey']+':X')['toString'](_0x5cd7('0x28')));}function request(_0x5ac0c1){logger[_0x5cd7('0x29')](_0x5cd7('0x2a'),JSON[_0x5cd7('0x2b')](_0x5ac0c1));return rp(_[_0x5cd7('0x6')](_0x5ac0c1,{'method':_0x5cd7('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x51d897,_0x4d3ab2){var _0x2505b0=[];if(_0x51d897&&_0x51d897[_0x5cd7('0x1d')]>0x0){_0x2505b0=_[_0x5cd7('0x2d')](_0x51d897,_0x4d3ab2);}return _0x2505b0;}function getCustomFields(_0x352fb3,_0x3c4b9a){var _0x34c919=[];var _0x13a066={'custom_fields':[]};if(_0x352fb3[_0x5cd7('0x1d')]>0x0){_[_0x5cd7('0x2e')](_0x352fb3,function(_0x34a8b8){if(_[_0x5cd7('0x2f')]([_0x5cd7('0x30'),_0x5cd7('0x31')],_0x34a8b8[_0x5cd7('0x32')])&&_0x34a8b8[_0x5cd7('0x33')]&&!_0x34a8b8[_0x5cd7('0x34')]){_0x13a066[_0x34a8b8['nameField'][_0x5cd7('0x35')]()]=_0x34a8b8[_0x5cd7('0x36')][_0x5cd7('0x37')]();}else if(_['includes']([_0x5cd7('0x30'),_0x5cd7('0x31')],_0x34a8b8[_0x5cd7('0x32')])&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8[_0x5cd7('0x38')],'value':_0x34a8b8[_0x5cd7('0x36')][_0x5cd7('0x37')]()});}else if(_0x34a8b8[_0x5cd7('0x32')]===_0x5cd7('0x3a')&&_0x34a8b8['variableName']&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3b')]]&&_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8[_0x5cd7('0x38')],'value':_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3b')]]['toString']()});}else if(_0x34a8b8['type']===_0x5cd7('0x3c')&&_0x34a8b8[_0x5cd7('0x3d')]&&_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')]&&_0x34a8b8[_0x5cd7('0x38')]&&_0x34a8b8[_0x5cd7('0x34')]){_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')][_0x5cd7('0x35')]()]&&_0x13a066[_0x5cd7('0x14')][_0x5cd7('0x39')]({'id':_0x34a8b8['idField'],'value':_0x3c4b9a[_0x34a8b8[_0x5cd7('0x3d')][_0x5cd7('0x13')]['toLowerCase']()][_0x5cd7('0x37')]()});}});}return _0x13a066;}exports['queue']=function(_0x126afc,_0x2c0105,_0x2bcae4,_0x512202,_0x599884,_0x366f3d){var _0x35c6f2,_0x9813f9;_0x366f3d[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x366f3d[_0x5cd7('0x18')]);_0x366f3d[_0x5cd7('0x3f')]=intUtil[_0x5cd7('0x3e')](_0x366f3d['serverUrl']);if(_0x599884&&_0x599884[_0x5cd7('0x40')]){logger[_0x5cd7('0xb')](_0x5cd7('0x41'),'Recording\x20is\x20enabled!');_0x2c0105[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x366f3d[_0x5cd7('0x3f')],_0x2c0105[_0x5cd7('0x44')],md5(_0x2c0105[_0x5cd7('0x44')]));}else{_0x2c0105['recordingURL']='';}headers['Authorization']=getAuth(_0x366f3d);return getUser(_0x366f3d,_0x512202[_0x5cd7('0x45')])[_0x5cd7('0x1a')](function(_0x2ff641){_0x35c6f2=_0x2ff641;logger['info']('The\x20User\x20ID\x20is:',_0x35c6f2['id']);return getEndUser(_0x366f3d,_0x2c0105[_0x5cd7('0xf')],_0x2c0105[_0x5cd7('0x10')]);})['then'](function(_0x11e097){_0x9813f9=_0x11e097;logger['info'](_0x5cd7('0x46'),_0x9813f9['id']);return getTicket(_0x366f3d,_0x35c6f2,_0x9813f9,_0x2bcae4,_0x2c0105);})[_0x5cd7('0x1a')](function(_0x3f9eb8){if(_0x3f9eb8&&_0x3f9eb8['id']){logger['info'](_0x5cd7('0x1b'));logger[_0x5cd7('0xb')](_0x5cd7('0x47'),_0x3f9eb8['id']);logger[_0x5cd7('0xb')]('[QUEUE]',_0x5cd7('0x48'));emit(util[_0x5cd7('0xd')](_0x5cd7('0x49'),_0x512202['name']),_0x5cd7('0x4a'),{'uri':util[_0x5cd7('0xd')](_0x5cd7('0x4b'),_0x366f3d[_0x5cd7('0x18')],_0x3f9eb8['id'])});}})[_0x5cd7('0x4c')](function(_0x10789a){logger[_0x5cd7('0x4d')](_0x5cd7('0x41'),JSON[_0x5cd7('0x2b')](_0x10789a));});};exports[_0x5cd7('0x4e')]=function(_0x50c57a,_0x541a9c,_0x1b5e4a,_0x236845,_0x279e65,_0x409d10,_0x525733){var _0x252873,_0xb855b0;_0x409d10[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x409d10[_0x5cd7('0x18')]);_0x409d10['serverUrl']=intUtil[_0x5cd7('0x3e')](_0x409d10[_0x5cd7('0x3f')]);if(_0x525733&&_0x525733['recordingFormat']&&_0x525733[_0x5cd7('0x4f')]!==_0x5cd7('0x50')){logger[_0x5cd7('0xb')]('[OUTBOUND]',_0x5cd7('0x51'));_0x541a9c[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x409d10[_0x5cd7('0x3f')],_0x541a9c[_0x5cd7('0x44')],md5(_0x541a9c[_0x5cd7('0x44')]));}headers[_0x5cd7('0x52')]=getAuth(_0x409d10);return getUser(_0x409d10,_0x236845['email'])[_0x5cd7('0x1a')](function(_0x4af342){_0x252873=_0x4af342;logger[_0x5cd7('0xb')](_0x5cd7('0x53'),_0x252873['id']);return getEndUser(_0x409d10,_0x541a9c[_0x5cd7('0x54')],_0x541a9c['destcalleridnum']);})[_0x5cd7('0x1a')](function(_0x56a1d9){_0xb855b0=_0x56a1d9;logger[_0x5cd7('0xb')](_0x5cd7('0x46'),_0xb855b0['id']);return getTicket(_0x409d10,_0x252873,_0xb855b0,_0x1b5e4a,_0x541a9c);})[_0x5cd7('0x1a')](function(_0x31a508){if(_0x31a508&&_0x31a508['id']){logger['info']('Ticket\x20created!');logger[_0x5cd7('0xb')](_0x5cd7('0x47'),_0x31a508['id']);logger[_0x5cd7('0xb')](_0x5cd7('0x55'),_0x5cd7('0x48'));emit(util[_0x5cd7('0xd')](_0x5cd7('0x49'),_0x236845[_0x5cd7('0x13')]),_0x5cd7('0x4a'),{'uri':util['format'](_0x5cd7('0x4b'),_0x409d10[_0x5cd7('0x18')],_0x31a508['id'])});}})[_0x5cd7('0x4c')](function(_0x5d12fb){logger[_0x5cd7('0x4d')](_0x5cd7('0x55'),JSON[_0x5cd7('0x2b')](_0x5d12fb));});};exports['unmanaged']=function(_0x4ba8bb,_0x30957d,_0x493792,_0x14a9e1,_0x1c6705,_0x283e66){var _0xda045e,_0x206fd8;_0x283e66[_0x5cd7('0x18')]=intUtil[_0x5cd7('0x3e')](_0x283e66[_0x5cd7('0x18')]);_0x283e66[_0x5cd7('0x3f')]=intUtil[_0x5cd7('0x3e')](_0x283e66[_0x5cd7('0x3f')]);if(_0x1c6705&&_0x1c6705[_0x5cd7('0x40')]){logger[_0x5cd7('0xb')]('['+_0x30957d[_0x5cd7('0x56')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x30957d[_0x5cd7('0x42')]=util[_0x5cd7('0xd')](_0x5cd7('0x43'),_0x283e66[_0x5cd7('0x3f')],_0x30957d[_0x5cd7('0x44')],md5(_0x30957d['uniqueid']));}else{_0x30957d['recordingURL']='';}headers[_0x5cd7('0x52')]=getAuth(_0x283e66);return getUser(_0x283e66,'')[_0x5cd7('0x1a')](function(_0x229097){_0xda045e=_0x229097;logger[_0x5cd7('0xb')]('The\x20User\x20ID\x20is:',_0xda045e['id']);return getEndUser(_0x283e66,_0x30957d[_0x5cd7('0xf')],_0x30957d[_0x5cd7('0x10')]);})[_0x5cd7('0x1a')](function(_0x6f52da){_0x206fd8=_0x6f52da;logger[_0x5cd7('0xb')](_0x5cd7('0x46'),_0x206fd8['id']);return getTicket(_0x283e66,_0xda045e,_0x206fd8,_0x493792,_0x30957d);})[_0x5cd7('0x1a')](function(_0x498161){if(_0x498161){logger['info'](_0x5cd7('0x1b'));logger['info'](_0x5cd7('0x47'),_0x498161['id']);}})['catch'](function(_0x920ffe){logger[_0x5cd7('0x4d')]('['+_0x30957d[_0x5cd7('0x56')][_0x5cd7('0x57')]()+']',JSON['stringify'](_0x920ffe));});};
\ No newline at end of file
index e185f1a..b392f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef7=['agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','adminEmail','error','contacts','catch','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','POST','/api/tasks','Subjects','getString','Descriptions','Contact','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','message','Getting\x20user\x20list'];(function(_0x20b13b,_0x5f0e97){var _0x104731=function(_0x2b6902){while(--_0x2b6902){_0x20b13b['push'](_0x20b13b['shift']());}};_0x104731(++_0x5f0e97);}(_0x5ef7,0x89));var _0x75ef=function(_0x505c4f,_0x23aad2){_0x505c4f=_0x505c4f-0x0;var _0x2f9e18=_0x5ef7[_0x505c4f];return _0x2f9e18;};'use strict';var _=require('lodash');var rp=require(_0x75ef('0x0'));var md5=require(_0x75ef('0x1'));var util=require(_0x75ef('0x2'));var moment=require(_0x75ef('0x3'));var Promise=require(_0x75ef('0x4'));var Redis=require(_0x75ef('0x5'));var intUtil=require(_0x75ef('0x6'));var config=require('../../../../config/environment');var logger=require(_0x75ef('0x7'))('freshsales');config['redis']=_[_0x75ef('0x8')](config[_0x75ef('0x9')],{'host':_0x75ef('0xa'),'port':0x18eb});var io=require(_0x75ef('0xb'))(new Redis(config['redis']));function getAdminId(_0x2cec68,_0x38f4bd,_0x2ef8da,_0x245c93){return new Promise(function(_0x35b702,_0x5267fe){var _0xfc0ff7=![];var _0x252047={'method':_0x75ef('0xc'),'uri':_0x245c93+_0x75ef('0xd'),'json':!![]};_0x252047[_0x75ef('0xe')]=_0x2ef8da;logger[_0x75ef('0xf')](_0x75ef('0x10'));return rp(_0x252047)[_0x75ef('0x11')](function(_0x4a2954){if(_0x4a2954){var _0x165764=_0x4a2954[_0x75ef('0x12')];var _0x3aad43=null;for(_0x3aad43=0x0;_0x3aad43<_0x165764[_0x75ef('0x13')];_0x3aad43++){if(_0x165764[_0x3aad43][_0x75ef('0x14')]===_0x2cec68['adminEmail']){_0x2cec68[_0x75ef('0x15')]=_0x165764[_0x3aad43]['id'];_0xfc0ff7=!![];}}if(_0xfc0ff7){logger['info'](_0x75ef('0x16'),_0x2cec68[_0x75ef('0x15')]);_0x35b702(_0x2cec68);}else{_0x5267fe({'statusCode':0x194,'message':_0x75ef('0x17')});}}else{_0x5267fe({'statusCode':0x194,'message':_0x75ef('0x17')});}})['catch'](function(_0x2849ad){logger['error']('['+[_0x38f4bd[_0x75ef('0x18')]()]+']',_0x2849ad[_0x75ef('0x19')]);_0x5267fe(_0x2849ad);});});}function getUser(_0x1c3f53,_0x305c7a,_0x33458c){return function(_0x5a1b7e){return new Promise(function(_0xdad9d,_0x91c147){var _0x14ed15={'method':_0x75ef('0xc'),'uri':_0x33458c+'/api/selector/owners','json':!![]};_0x14ed15['headers']=_0x305c7a;logger['info'](_0x75ef('0x1a'));return rp(_0x14ed15)[_0x75ef('0x11')](function(_0xa36ebd){if(_0xa36ebd){var _0x29edc1=_0xa36ebd[_0x75ef('0x12')];var _0xa60394=![];var _0x50f786=null;if(_0x5a1b7e[_0x75ef('0x1b')]!==null){logger[_0x75ef('0xf')](_0x75ef('0x1c'),_0x5a1b7e[_0x75ef('0x1b')]);_0x5a1b7e[_0x75ef('0x1d')]=_0x5a1b7e[_0x75ef('0x1b')];for(_0x50f786=0x0;_0x50f786<_0x29edc1[_0x75ef('0x13')];_0x50f786++){if(_0x29edc1[_0x50f786][_0x75ef('0x14')]===_0x5a1b7e[_0x75ef('0x1b')]){_0xa60394=!![];_0x5a1b7e[_0x75ef('0x1e')]=_0x29edc1[_0x50f786]['id'];logger[_0x75ef('0xf')](_0x75ef('0x1f'),_0x5a1b7e[_0x75ef('0x1e')]);}}}if(!_0xa60394){logger['info']('Admin\x20selected');_0x5a1b7e[_0x75ef('0x1d')]=_0x5a1b7e[_0x75ef('0x20')];_0x5a1b7e['userId']=_0x5a1b7e['adminId'];_0xa60394=!![];}if(_0xa60394){_0xdad9d(_0x5a1b7e);}else{_0x91c147({'statusCode':0x194,'message':_0x75ef('0x17')});}}else{_0x91c147({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x12546f){logger[_0x75ef('0x21')]('['+[_0x1c3f53[_0x75ef('0x18')]()]+']',_0x12546f[_0x75ef('0x19')]);_0x91c147(_0x12546f);});});};}function searchContact(_0x360bd1,_0x97c725,_0xfb73fb,_0x487c3a){return new Promise(function(_0x194c12,_0x8108c0){var _0x2cec88={'method':_0x75ef('0xc'),'headers':_0x97c725,'uri':_0x360bd1+'/api/lookup?q='+_0x487c3a+'&f='+_0xfb73fb+'&entities=contact','json':!![]};rp(_0x2cec88)[_0x75ef('0x11')](function(_0x3b829d){var _0x195a3c=_['find'](_0x3b829d[_0x75ef('0x22')]['contacts'],[_0xfb73fb,_0x487c3a]);_0x194c12(_0x195a3c);})[_0x75ef('0x23')](function(_0x2dcb7b){_0x8108c0(_0x2dcb7b);});});}function getEndUser(_0x3cf52c,_0x36bdb0,_0x2aaa04){return function(_0xa56a54){return new Promise(function(_0x221d41,_0xc2e08d){logger[_0x75ef('0xf')](util[_0x75ef('0x24')]('Searching\x20contact\x20with\x20phone\x20%s',_0xa56a54[_0x75ef('0x25')]));searchContact(_0x2aaa04,_0x36bdb0,_0x75ef('0x26'),_0xa56a54['contactNumber'])[_0x75ef('0x11')](function(_0x462ee8){if(_0x462ee8){_0xa56a54[_0x75ef('0x27')]=_0x462ee8['id'];logger[_0x75ef('0xf')](_0x75ef('0x28'),_0xa56a54['endUserId']);return _0x221d41(_0xa56a54);}searchContact(_0x2aaa04,_0x36bdb0,_0x75ef('0x29'),_0xa56a54['contactNumber'])['then'](function(_0x382318){if(_0x382318){_0xa56a54[_0x75ef('0x27')]=_0x382318['id'];logger[_0x75ef('0xf')]('Contact\x20found\x20work_number:',_0xa56a54['endUserId']);return _0x221d41(_0xa56a54);}createEndUser(_0xa56a54,_0x3cf52c,_0x36bdb0,_0x2aaa04)['then'](function(_0x332010){logger[_0x75ef('0xf')](_0x75ef('0x2a'),_0x332010[_0x75ef('0x27')]);return _0x221d41(_0x332010);});});})[_0x75ef('0x23')](function(_0x32d8fd){_0xc2e08d(_0x32d8fd);});});};}function createEndUser(_0x4e2058,_0xc04385,_0x505f89,_0x619859){return new Promise(function(_0x31a744,_0x55981c){var _0x804378=moment();var _0x3f37e8={'method':'POST','uri':_0x619859+_0x75ef('0x2b'),'body':{'contact':{'last_name':_0x4e2058[_0x75ef('0x25')],'work_number':_0x4e2058['contactNumber'],'mobile_number':_0x4e2058[_0x75ef('0x25')],'owner_id':_0x4e2058[_0x75ef('0x1e')],'created_at':_0x804378[_0x75ef('0x24')](_0x75ef('0x2c'))}},'json':!![]};_0x3f37e8[_0x75ef('0xe')]=_0x505f89;logger[_0x75ef('0xf')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x3f37e8)['then'](function(_0x4b9373){_0x4e2058[_0x75ef('0x27')]=_0x4b9373[_0x75ef('0x2d')]['id'];_0x31a744(_0x4e2058);})[_0x75ef('0x23')](function(_0x3b2f2a){logger[_0x75ef('0x21')]('['+[_0xc04385[_0x75ef('0x18')]()]+']',_0x3b2f2a[_0x75ef('0x19')]);_0x55981c(_0x3b2f2a['message']);});});}function getTicket(_0x8ac228,_0x1d3370,_0x1bf306,_0x3f0cb3,_0x2ad435){return function(_0x167cab){logger[_0x75ef('0xf')](_0x75ef('0x2e'));return new Promise(function(_0xe192c6,_0x47e2d8){var _0x265298=moment();var _0x5a14da={'method':_0x75ef('0x2f'),'uri':_0x1bf306+_0x75ef('0x30'),'body':{'title':intUtil['getString'](_0x3f0cb3[_0x75ef('0x31')],_0x2ad435,'\x20'),'description':intUtil[_0x75ef('0x32')](_0x3f0cb3[_0x75ef('0x33')],_0x2ad435,'\x0a'),'owner_id':_0x167cab[_0x75ef('0x1e')],'creater_id':_0x167cab[_0x75ef('0x15')],'targetable_id':_0x167cab['endUserId'],'targetable_type':_0x75ef('0x34'),'created_at':_0x265298[_0x75ef('0x24')](_0x75ef('0x2c')),'due_date':_0x265298['add'](0x1e,'m')[_0x75ef('0x24')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x5a14da[_0x75ef('0xe')]=_0x1d3370;return rp(_0x5a14da)[_0x75ef('0x11')](function(_0x136556){_0x167cab[_0x75ef('0x35')]=_0x136556[_0x75ef('0x36')]['id'];logger[_0x75ef('0xf')](_0x75ef('0x37'),_0x167cab[_0x75ef('0x35')]);_0xe192c6(_0x167cab);})[_0x75ef('0x23')](function(_0x487abc){logger['error']('['+[_0x8ac228[_0x75ef('0x18')]()]+']',_0x487abc[_0x75ef('0x19')]);_0x47e2d8(_0x487abc[_0x75ef('0x19')]);});});};}function emit(_0x24d349,_0x4f06da,_0x531b97){var _0x244c7e={'uri':_0x24d349+_0x75ef('0x38')+_0x531b97};io['to'](util[_0x75ef('0x24')](_0x75ef('0x39'),_0x4f06da))[_0x75ef('0x3a')](_0x75ef('0x3b'),_0x244c7e);}exports['cs']=function(_0x5abfd7,_0x14f6c6,_0x123c90,_0x58227a,_0x4b947c,_0x318cba,_0x241c41,_0x2418d7){var _0x530c14={};var _0x52bef4={'Authorization':_0x75ef('0x3c')+_0x318cba[_0x75ef('0x3d')]};_0x318cba[_0x75ef('0x3e')]=intUtil[_0x75ef('0x3f')](_0x318cba[_0x75ef('0x3e')]);_0x318cba[_0x75ef('0x40')]=intUtil['stripTrailingSlash'](_0x318cba[_0x75ef('0x40')]);var _0x354b31=_0x318cba[_0x75ef('0x3e')];_0x530c14[_0x75ef('0x20')]=_0x318cba[_0x75ef('0x41')];_0x530c14['contactNumber']=_0x2418d7[_0x75ef('0x42')]()===_0x75ef('0x43')?_0x14f6c6[_0x75ef('0x44')]:_0x14f6c6[_0x75ef('0x45')];_0x530c14[_0x75ef('0x46')]=_0x2418d7==='queue'||_0x2418d7===_0x75ef('0x47')?'queue':_0x75ef('0x43');if(_0x58227a){_0x530c14[_0x75ef('0x1b')]=_0x58227a[_0x75ef('0x14')];}var _0x33ff7c=util[_0x75ef('0x24')](_0x75ef('0x48'),_0x318cba[_0x75ef('0x40')],_0x14f6c6['uniqueid'],md5(_0x14f6c6['uniqueid']));if(_0x4b947c&&_0x4b947c[_0x75ef('0x49')]){logger['info']('[QUEUE]',_0x75ef('0x4a'));_0x14f6c6[_0x75ef('0x4b')]=_0x33ff7c;}else if(_0x241c41&&_0x241c41[_0x75ef('0x4c')]&&_0x241c41[_0x75ef('0x4c')]!==_0x75ef('0x4d')){logger[_0x75ef('0xf')](_0x75ef('0x4e'),_0x75ef('0x4a'));_0x14f6c6['recordingURL']=_0x33ff7c;}else{_0x14f6c6['recordingURL']='';}return getAdminId(_0x530c14,_0x2418d7,_0x52bef4,_0x354b31)[_0x75ef('0x11')](getUser(_0x2418d7,_0x52bef4,_0x354b31))[_0x75ef('0x11')](getEndUser(_0x2418d7,_0x52bef4,_0x354b31))[_0x75ef('0x11')](getTicket(_0x2418d7,_0x52bef4,_0x354b31,_0x123c90,_0x14f6c6))[_0x75ef('0x11')](function(_0x254914){logger[_0x75ef('0xf')](util['format'](_0x75ef('0x4f'),_0x254914[_0x75ef('0x35')]));if(_0x2418d7!==_0x75ef('0x47')){logger[_0x75ef('0xf')]('['+[_0x2418d7[_0x75ef('0x18')]()]+']',_0x75ef('0x50'));emit(_0x354b31,_0x58227a['name'],_0x254914[_0x75ef('0x27')]);}})[_0x75ef('0x23')](function(_0x46457c){logger[_0x75ef('0x21')]('['+[_0x2418d7[_0x75ef('0x18')]()]+_0x75ef('0x51'),util['inspect'](_0x46457c,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb7da=['bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','GET','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','catch','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Requested\x20Resource\x20not\x20Found','error','/api/lookup?q=','&f=','&entities=contact','find','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Contact','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','util'];(function(_0xaf3a39,_0x24b7bd){var _0x100a02=function(_0x39087c){while(--_0x39087c){_0xaf3a39['push'](_0xaf3a39['shift']());}};_0x100a02(++_0x24b7bd);}(_0xb7da,0x151));var _0xab7d=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0xb7da[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0xab7d('0x0'));var rp=require('request-promise');var md5=require(_0xab7d('0x1'));var util=require(_0xab7d('0x2'));var moment=require('moment');var Promise=require(_0xab7d('0x3'));var Redis=require(_0xab7d('0x4'));var intUtil=require(_0xab7d('0x5'));var config=require(_0xab7d('0x6'));var logger=require(_0xab7d('0x7'))('freshsales');config[_0xab7d('0x8')]=_[_0xab7d('0x9')](config[_0xab7d('0x8')],{'host':_0xab7d('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x48963b,_0x22992c,_0xf5a0d0,_0x4fe1e5){return new Promise(function(_0x15b265,_0x4faf34){var _0x2d281b=![];var _0x5de91e={'method':_0xab7d('0xb'),'uri':_0x4fe1e5+'/api/selector/owners','json':!![]};_0x5de91e['headers']=_0xf5a0d0;logger['info'](_0xab7d('0xc'));return rp(_0x5de91e)[_0xab7d('0xd')](function(_0x541588){if(_0x541588){var _0x9c4260=_0x541588[_0xab7d('0xe')];var _0x1ed230=null;for(_0x1ed230=0x0;_0x1ed230<_0x9c4260[_0xab7d('0xf')];_0x1ed230++){if(_0x9c4260[_0x1ed230][_0xab7d('0x10')]===_0x48963b[_0xab7d('0x11')]){_0x48963b['adminId']=_0x9c4260[_0x1ed230]['id'];_0x2d281b=!![];}}if(_0x2d281b){logger[_0xab7d('0x12')](_0xab7d('0x13'),_0x48963b[_0xab7d('0x14')]);_0x15b265(_0x48963b);}else{_0x4faf34({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x4faf34({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xab7d('0x15')](function(_0x460386){logger['error']('['+[_0x22992c[_0xab7d('0x16')]()]+']',_0x460386[_0xab7d('0x17')]);_0x4faf34(_0x460386);});});}function getUser(_0x25a410,_0x536d22,_0x4e905d){return function(_0x533ff6){return new Promise(function(_0x2ec28a,_0x3ec735){var _0x5e18ed={'method':_0xab7d('0xb'),'uri':_0x4e905d+_0xab7d('0x18'),'json':!![]};_0x5e18ed[_0xab7d('0x19')]=_0x536d22;logger[_0xab7d('0x12')](_0xab7d('0x1a'));return rp(_0x5e18ed)['then'](function(_0x5261d5){if(_0x5261d5){var _0x3a8d4b=_0x5261d5[_0xab7d('0xe')];var _0x25c883=![];var _0x4703e9=null;if(_0x533ff6[_0xab7d('0x1b')]!==null){logger['info'](_0xab7d('0x1c'),_0x533ff6[_0xab7d('0x1b')]);_0x533ff6[_0xab7d('0x1d')]=_0x533ff6[_0xab7d('0x1b')];for(_0x4703e9=0x0;_0x4703e9<_0x3a8d4b[_0xab7d('0xf')];_0x4703e9++){if(_0x3a8d4b[_0x4703e9][_0xab7d('0x10')]===_0x533ff6[_0xab7d('0x1b')]){_0x25c883=!![];_0x533ff6[_0xab7d('0x1e')]=_0x3a8d4b[_0x4703e9]['id'];logger['info'](_0xab7d('0x1f'),_0x533ff6[_0xab7d('0x1e')]);}}}if(!_0x25c883){logger['info']('Admin\x20selected');_0x533ff6[_0xab7d('0x1d')]=_0x533ff6[_0xab7d('0x11')];_0x533ff6[_0xab7d('0x1e')]=_0x533ff6[_0xab7d('0x14')];_0x25c883=!![];}if(_0x25c883){_0x2ec28a(_0x533ff6);}else{_0x3ec735({'statusCode':0x194,'message':_0xab7d('0x20')});}}else{_0x3ec735({'statusCode':0x194,'message':_0xab7d('0x20')});}})[_0xab7d('0x15')](function(_0x20b707){logger[_0xab7d('0x21')]('['+[_0x25a410[_0xab7d('0x16')]()]+']',_0x20b707['message']);_0x3ec735(_0x20b707);});});};}function searchContact(_0x1e624c,_0x28843c,_0x120469,_0x4bd2a2){return new Promise(function(_0x4f2274,_0x2456be){var _0x3fa2fd={'method':_0xab7d('0xb'),'headers':_0x28843c,'uri':_0x1e624c+_0xab7d('0x22')+_0x4bd2a2+_0xab7d('0x23')+_0x120469+_0xab7d('0x24'),'json':!![]};rp(_0x3fa2fd)[_0xab7d('0xd')](function(_0x50298a){var _0x3de4b8=_[_0xab7d('0x25')](_0x50298a['contacts']['contacts'],[_0x120469,_0x4bd2a2]);_0x4f2274(_0x3de4b8);})['catch'](function(_0x5a1b97){_0x2456be(_0x5a1b97);});});}function getEndUser(_0xe9a3d2,_0x57de4f,_0xd39f24){return function(_0x160262){return new Promise(function(_0x22f693,_0xfe0da0){logger[_0xab7d('0x12')](util[_0xab7d('0x26')](_0xab7d('0x27'),_0x160262['contactNumber']));searchContact(_0xd39f24,_0x57de4f,_0xab7d('0x28'),_0x160262[_0xab7d('0x29')])[_0xab7d('0xd')](function(_0x7fd6ba){if(_0x7fd6ba){_0x160262[_0xab7d('0x2a')]=_0x7fd6ba['id'];logger[_0xab7d('0x12')](_0xab7d('0x2b'),_0x160262['endUserId']);return _0x22f693(_0x160262);}searchContact(_0xd39f24,_0x57de4f,'work_number',_0x160262['contactNumber'])[_0xab7d('0xd')](function(_0x4a0c8b){if(_0x4a0c8b){_0x160262[_0xab7d('0x2a')]=_0x4a0c8b['id'];logger[_0xab7d('0x12')](_0xab7d('0x2c'),_0x160262[_0xab7d('0x2a')]);return _0x22f693(_0x160262);}createEndUser(_0x160262,_0xe9a3d2,_0x57de4f,_0xd39f24)[_0xab7d('0xd')](function(_0x1daedc){logger[_0xab7d('0x12')]('Contact\x20created:',_0x1daedc[_0xab7d('0x2a')]);return _0x22f693(_0x1daedc);});});})[_0xab7d('0x15')](function(_0x5b4657){_0xfe0da0(_0x5b4657);});});};}function createEndUser(_0x402ccd,_0x3eaa8b,_0x152dfc,_0x3e8bc2){return new Promise(function(_0x1d4b04,_0x27a04b){var _0x297e23=moment();var _0x52f3ff={'method':_0xab7d('0x2d'),'uri':_0x3e8bc2+_0xab7d('0x2e'),'body':{'contact':{'last_name':_0x402ccd[_0xab7d('0x29')],'work_number':_0x402ccd[_0xab7d('0x29')],'mobile_number':_0x402ccd[_0xab7d('0x29')],'owner_id':_0x402ccd[_0xab7d('0x1e')],'created_at':_0x297e23[_0xab7d('0x26')](_0xab7d('0x2f'))}},'json':!![]};_0x52f3ff[_0xab7d('0x19')]=_0x152dfc;logger['info'](_0xab7d('0x30'));return rp(_0x52f3ff)[_0xab7d('0xd')](function(_0x19653e){_0x402ccd['endUserId']=_0x19653e[_0xab7d('0x31')]['id'];_0x1d4b04(_0x402ccd);})[_0xab7d('0x15')](function(_0x184136){logger[_0xab7d('0x21')]('['+[_0x3eaa8b[_0xab7d('0x16')]()]+']',_0x184136[_0xab7d('0x17')]);_0x27a04b(_0x184136[_0xab7d('0x17')]);});});}function getTicket(_0x4a9335,_0x2c4a62,_0x5dddfb,_0x288c55,_0x67dac){return function(_0x424e10){logger[_0xab7d('0x12')]('Creating\x20new\x20task');return new Promise(function(_0xd255d4,_0x3588ef){var _0x26721c=moment();var _0x2b8d4d={'method':_0xab7d('0x2d'),'uri':_0x5dddfb+_0xab7d('0x32'),'body':{'title':intUtil[_0xab7d('0x33')](_0x288c55[_0xab7d('0x34')],_0x67dac,'\x20'),'description':intUtil['getString'](_0x288c55['Descriptions'],_0x67dac,'\x0a'),'owner_id':_0x424e10[_0xab7d('0x1e')],'creater_id':_0x424e10[_0xab7d('0x14')],'targetable_id':_0x424e10['endUserId'],'targetable_type':_0xab7d('0x35'),'created_at':_0x26721c[_0xab7d('0x26')](_0xab7d('0x2f')),'due_date':_0x26721c[_0xab7d('0x36')](0x1e,'m')[_0xab7d('0x26')](_0xab7d('0x2f'))},'json':!![]};_0x2b8d4d['headers']=_0x2c4a62;return rp(_0x2b8d4d)[_0xab7d('0xd')](function(_0x315893){_0x424e10[_0xab7d('0x37')]=_0x315893['task']['id'];logger[_0xab7d('0x12')](_0xab7d('0x38'),_0x424e10['ticketId']);_0xd255d4(_0x424e10);})['catch'](function(_0xb86ba4){logger['error']('['+[_0x4a9335[_0xab7d('0x16')]()]+']',_0xb86ba4[_0xab7d('0x17')]);_0x3588ef(_0xb86ba4[_0xab7d('0x17')]);});});};}function emit(_0x56601c,_0x39de68,_0x42a9f6){var _0x5e4fcd={'uri':_0x56601c+_0xab7d('0x39')+_0x42a9f6};io['to'](util[_0xab7d('0x26')](_0xab7d('0x3a'),_0x39de68))[_0xab7d('0x3b')](_0xab7d('0x3c'),_0x5e4fcd);}exports['cs']=function(_0x2b525e,_0x3a9342,_0x4bcf0d,_0x2747c5,_0x115146,_0x31167a,_0x27493c,_0x3725db){var _0x2fc7a2={};var _0xf4432a={'Authorization':_0xab7d('0x3d')+_0x31167a[_0xab7d('0x3e')]};_0x31167a[_0xab7d('0x3f')]=intUtil[_0xab7d('0x40')](_0x31167a[_0xab7d('0x3f')]);_0x31167a[_0xab7d('0x41')]=intUtil[_0xab7d('0x40')](_0x31167a[_0xab7d('0x41')]);var _0x28ed5e=_0x31167a[_0xab7d('0x3f')];_0x2fc7a2['adminEmail']=_0x31167a['username'];_0x2fc7a2[_0xab7d('0x29')]=_0x3725db[_0xab7d('0x42')]()==='outbound'?_0x3a9342[_0xab7d('0x43')]:_0x3a9342[_0xab7d('0x44')];_0x2fc7a2[_0xab7d('0x45')]=_0x3725db==='queue'||_0x3725db==='unmanaged'?_0xab7d('0x46'):_0xab7d('0x47');if(_0x2747c5){_0x2fc7a2['agentEmail']=_0x2747c5[_0xab7d('0x10')];}var _0x51313e=util[_0xab7d('0x26')](_0xab7d('0x48'),_0x31167a[_0xab7d('0x41')],_0x3a9342[_0xab7d('0x49')],md5(_0x3a9342['uniqueid']));if(_0x115146&&_0x115146[_0xab7d('0x4a')]){logger['info'](_0xab7d('0x4b'),_0xab7d('0x4c'));_0x3a9342['recordingURL']=_0x51313e;}else if(_0x27493c&&_0x27493c[_0xab7d('0x4d')]&&_0x27493c[_0xab7d('0x4d')]!==_0xab7d('0x4e')){logger['info']('[OUTBOUND]',_0xab7d('0x4c'));_0x3a9342[_0xab7d('0x4f')]=_0x51313e;}else{_0x3a9342[_0xab7d('0x4f')]='';}return getAdminId(_0x2fc7a2,_0x3725db,_0xf4432a,_0x28ed5e)[_0xab7d('0xd')](getUser(_0x3725db,_0xf4432a,_0x28ed5e))['then'](getEndUser(_0x3725db,_0xf4432a,_0x28ed5e))[_0xab7d('0xd')](getTicket(_0x3725db,_0xf4432a,_0x28ed5e,_0x4bcf0d,_0x3a9342))[_0xab7d('0xd')](function(_0x39c2f2){logger[_0xab7d('0x12')](util[_0xab7d('0x26')](_0xab7d('0x50'),_0x39c2f2['ticketId']));if(_0x3725db!==_0xab7d('0x51')){logger['info']('['+[_0x3725db[_0xab7d('0x16')]()]+']',_0xab7d('0x52'));emit(_0x28ed5e,_0x2747c5[_0xab7d('0x53')],_0x39c2f2[_0xab7d('0x2a')]);}})[_0xab7d('0x15')](function(_0x226634){logger['error']('['+[_0x3725db[_0xab7d('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xab7d('0x54')](_0x226634,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 38eccac..31adde5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01a9=['lodash','util','./zendesk','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','freshdesk','desk','vtiger','dynamics365','freshsales','servicenow','exec','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format'];(function(_0x3005d5,_0xf588c7){var _0x547c7e=function(_0x4514dc){while(--_0x4514dc){_0x3005d5['push'](_0x3005d5['shift']());}};_0x547c7e(++_0xf588c7);}(_0x01a9,0x94));var _0x901a=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x01a9[_0x4ae6ef];return _0x3cbb4e;};'use strict';var _=require(_0x901a('0x0'));var util=require(_0x901a('0x1'));var zendesk=require(_0x901a('0x2'));var salesforce=require('./salesforce');var sugarcrm=require(_0x901a('0x3'));var freshdesk=require(_0x901a('0x4'));var zoho=require(_0x901a('0x5'));var desk=require(_0x901a('0x6'));var vtiger=require(_0x901a('0x7'));var servicenow=require(_0x901a('0x8'));var dynamics365=require(_0x901a('0x9'));var freshsales=require(_0x901a('0xa'));var integrations=[_0x901a('0xb'),_0x901a('0xc'),'sugarcrm',_0x901a('0xd'),'zoho',_0x901a('0xe'),_0x901a('0xf'),_0x901a('0x10'),_0x901a('0x11'),_0x901a('0x12')];exports[_0x901a('0x13')]=function(_0x3a19b1,_0x1ec200,_0x36c2ea,_0x156efa,_0x4d7084,_0x4b7e67){if(_0x36c2ea){if(_['includes'](integrations,_0x3a19b1['data1']['toLowerCase']())){try{var _0x5c55f2=null;var _0x1c2dd8='';var _0x4da4fa=_0x36c2ea[_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')]()];if(_0x4da4fa){var _0x3e267e=_0x4da4fa[_0x3a19b1[_0x901a('0x16')]];if(_0x3e267e){var _0x3e4c4d=_[_0x901a('0x17')](_0x3e267e[_0x901a('0x18')],{'id':parseInt(_0x3a19b1[_0x901a('0x19')],0xa)});if(_0x3e4c4d){if(_0x156efa){if(_0x4d7084&&_0x1ec200[_0x901a('0x1a')]){_0x1c2dd8=_0x901a('0x1a');}else if(_0x1ec200[_0x901a('0x1b')]){_0x1c2dd8=_0x901a('0x1c');}else{console[_0x901a('0x1d')](_0x901a('0x1e'),_0x1ec200);}}else{_0x1c2dd8=_0x901a('0x1f');}switch(_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')]()){case _0x901a('0xb'):zendesk[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case'salesforce':salesforce[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case'sugarcrm':sugarcrm[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case'freshdesk':freshdesk[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case'zoho':zoho[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case _0x901a('0xe'):desk[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case _0x901a('0xf'):vtiger[_0x1c2dd8](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67);break;case _0x901a('0x11'):freshsales['cs'](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67,_0x1c2dd8);break;case _0x901a('0x12'):servicenow['cs'](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67,_0x1c2dd8);break;case _0x901a('0x10'):dynamics365['cs'](_0x3a19b1,_0x1ec200,_0x3e4c4d,_0x156efa,_0x4d7084,_0x3e267e,_0x4b7e67,_0x1c2dd8);break;default:console[_0x901a('0x1d')](_0x901a('0x20'));}}else{_0x5c55f2=require(_0x901a('0x21'))(_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')]());_0x5c55f2[_0x901a('0x22')]('[EXEC]',util['format']('%s\x20configuration\x20#%s\x20not\x20found',_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')](),_0x3a19b1['data3']));}}else{_0x5c55f2=require('../../../../config/logger')(_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')]());_0x5c55f2[_0x901a('0x22')](_0x901a('0x23'),util[_0x901a('0x24')]('%s\x20account\x20#%s\x20not\x20found',_0x3a19b1[_0x901a('0x14')][_0x901a('0x15')](),_0x3a19b1[_0x901a('0x16')]));}}else{}}catch(_0x362c4c){console['error'](_0x362c4c);}}}};
\ No newline at end of file
+var _0x5b3a=['zoho','vtiger','dynamics365','servicenow','exec','data1','toLowerCase','Configurations','data3','queue','routeId','outbound','log','unmanaged','desk','unknown\x20integration','error','[EXEC]','format','../../../../config/logger','data2','lodash','util','./zendesk','./freshdesk','./zoho','./desk','./servicenow','zendesk','salesforce','sugarcrm','freshdesk'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x5b3a,0x195));var _0xa5b3=function(_0xa80005,_0x11f5e9){_0xa80005=_0xa80005-0x0;var _0x721687=_0x5b3a[_0xa80005];return _0x721687;};'use strict';var _=require(_0xa5b3('0x0'));var util=require(_0xa5b3('0x1'));var zendesk=require(_0xa5b3('0x2'));var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xa5b3('0x3'));var zoho=require(_0xa5b3('0x4'));var desk=require(_0xa5b3('0x5'));var vtiger=require('./vtiger');var servicenow=require(_0xa5b3('0x6'));var dynamics365=require('./dynamics365');var freshsales=require('./freshsales');var integrations=[_0xa5b3('0x7'),_0xa5b3('0x8'),_0xa5b3('0x9'),_0xa5b3('0xa'),_0xa5b3('0xb'),'desk',_0xa5b3('0xc'),_0xa5b3('0xd'),'freshsales',_0xa5b3('0xe')];exports[_0xa5b3('0xf')]=function(_0x36bbf7,_0x2f6cba,_0xe37f05,_0x46f01f,_0x12091c,_0x5a865e){if(_0xe37f05){if(_['includes'](integrations,_0x36bbf7[_0xa5b3('0x10')]['toLowerCase']())){try{var _0x5a1b62=null;var _0x3425ce='';var _0x5b279d=_0xe37f05[_0x36bbf7['data1'][_0xa5b3('0x11')]()];if(_0x5b279d){var _0x108a8d=_0x5b279d[_0x36bbf7['data2']];if(_0x108a8d){var _0x2dc1f7=_['find'](_0x108a8d[_0xa5b3('0x12')],{'id':parseInt(_0x36bbf7[_0xa5b3('0x13')],0xa)});if(_0x2dc1f7){if(_0x46f01f){if(_0x12091c&&_0x2f6cba['queue']){_0x3425ce=_0xa5b3('0x14');}else if(_0x2f6cba[_0xa5b3('0x15')]){_0x3425ce=_0xa5b3('0x16');}else{console[_0xa5b3('0x17')]('EVENT\x20UNKNOWN',_0x2f6cba);}}else{_0x3425ce=_0xa5b3('0x18');}switch(_0x36bbf7[_0xa5b3('0x10')]['toLowerCase']()){case _0xa5b3('0x7'):zendesk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x8'):salesforce[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x9'):sugarcrm[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'freshdesk':freshdesk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'zoho':zoho[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0x19'):desk[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case _0xa5b3('0xc'):vtiger[_0x3425ce](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e);break;case'freshsales':freshsales['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;case _0xa5b3('0xe'):servicenow['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;case _0xa5b3('0xd'):dynamics365['cs'](_0x36bbf7,_0x2f6cba,_0x2dc1f7,_0x46f01f,_0x12091c,_0x108a8d,_0x5a865e,_0x3425ce);break;default:console[_0xa5b3('0x17')](_0xa5b3('0x1a'));}}else{_0x5a1b62=require('../../../../config/logger')(_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')]());_0x5a1b62[_0xa5b3('0x1b')](_0xa5b3('0x1c'),util[_0xa5b3('0x1d')]('%s\x20configuration\x20#%s\x20not\x20found',_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')](),_0x36bbf7[_0xa5b3('0x13')]));}}else{_0x5a1b62=require(_0xa5b3('0x1e'))(_0x36bbf7[_0xa5b3('0x10')][_0xa5b3('0x11')]());_0x5a1b62['error'](_0xa5b3('0x1c'),util[_0xa5b3('0x1d')]('%s\x20account\x20#%s\x20not\x20found',_0x36bbf7[_0xa5b3('0x10')]['toLowerCase'](),_0x36bbf7[_0xa5b3('0x1f')]));}}else{}}catch(_0x338984){console[_0xa5b3('0x1b')](_0x338984);}}}};
\ No newline at end of file
index 49f1c17..c92ef83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde2=['serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','error','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','%s/%s/e','instanceUrl','catch','unmanaged','monitor_format','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.','lodash','request-promise','md5','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','defaults','redis','localhost','socket.io-emitter','assign','Subjects','Descriptions','ticketType','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','WhatId','Case','ContactId','account','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','execute','length','find','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','then','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','cloneDeep','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','type','toLowerCase','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','lead','Caller\x20-\x20%s','No\x20Company','upperFirst','forEach','includes','string','picklist','idField','content','toString','variableName','customVariable','Variable','name','password','concat','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue'];(function(_0x1ab28a,_0x35385d){var _0x4cbec2=function(_0x3219b1){while(--_0x3219b1){_0x1ab28a['push'](_0x1ab28a['shift']());}};_0x4cbec2(++_0x35385d);}(_0xbde2,0x122));var _0x2bde=function(_0x47cd0,_0x31e889){_0x47cd0=_0x47cd0-0x0;var _0x628c34=_0xbde2[_0x47cd0];return _0x628c34;};'use strict';var _=require(_0x2bde('0x0'));var rp=require(_0x2bde('0x1'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0x2bde('0x2'));var jsforce=require(_0x2bde('0x3'));var util=require(_0x2bde('0x4'));var Redis=require(_0x2bde('0x5'));var intUtil=require(_0x2bde('0x6'));var config=require(_0x2bde('0x7'));var logger=require('../../../../config/logger')(_0x2bde('0x8'));config['redis']=_[_0x2bde('0x9')](config[_0x2bde('0xa')],{'host':_0x2bde('0xb'),'port':0x18eb});var io=require(_0x2bde('0xc'))(new Redis(config['redis']));function emit(_0x5c2703,_0x26387e,_0x21aaf6){io['to'](_0x5c2703)['emit'](_0x26387e,_0x21aaf6);}function getTicket(_0x376750,_0x57ee29,_0x4df2ef,_0x261fd7,_0x9dfb18,_0x3c80c8,_0x1aa06a,_0x5c923e){var _0x5105ff=Object[_0x2bde('0xd')]({},{'OwnerId':_0x57ee29['id'],'Subject':intUtil['getString'](_0x261fd7[_0x2bde('0xe')],_0x9dfb18,'\x20'),'Description':intUtil['getString'](_0x261fd7[_0x2bde('0xf')],_0x9dfb18,'\x0a')},getCustomFields(_0x3c80c8,_0x9dfb18));if(_0x4df2ef){if(_0x261fd7[_0x2bde('0x10')]==='Task'){_0x5105ff[_0x2bde('0x11')]=moment[_0x2bde('0x12')]();_0x5105ff[_0x2bde('0x13')]=![];_0x5105ff[_0x2bde('0x14')]=![];if(_0x4df2ef[_0x2bde('0x15')]===_0x2bde('0x16')||_0x4df2ef[_0x2bde('0x15')]==='lead'){_0x5105ff['WhoId']=_0x4df2ef['id'];}else if(_0x4df2ef['endUserType']==='account'){_0x5105ff[_0x2bde('0x17')]=_0x4df2ef['id'];}}else if(_0x261fd7['ticketType']===_0x2bde('0x18')){if(_0x4df2ef[_0x2bde('0x15')]===_0x2bde('0x16')){_0x5105ff[_0x2bde('0x19')]=_0x4df2ef['id'];}else if(_0x4df2ef[_0x2bde('0x15')]===_0x2bde('0x1a')){_0x5105ff[_0x2bde('0x1b')]=_0x4df2ef['id'];}else if(_0x4df2ef[_0x2bde('0x15')]==='lead'&&_0x261fd7['leadId']){_0x5105ff[_0x261fd7[_0x2bde('0x1c')]]=_0x4df2ef['id'];}else{logger[_0x2bde('0x1d')](_0x2bde('0x1e'));}}}return _0x1aa06a[_0x2bde('0x1f')](_0x261fd7[_0x2bde('0x10')])[_0x2bde('0x20')](_0x5105ff);}function getUser(_0x3c5c0b,_0x157082,_0x33f739){if(!_[_0x2bde('0x21')](_0x157082)&&intUtil[_0x2bde('0x22')](_0x157082)){var _0x29d5b9={'Email':_0x157082};var _0x3a8bb2={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x33f739[_0x2bde('0x1f')](_0x2bde('0x23'))['find'](_0x29d5b9,_0x3a8bb2)[_0x2bde('0x24')]()['then'](function(_0x1e6153){if(_0x1e6153[_0x2bde('0x25')]){var _0x5d5b3d=_[_0x2bde('0x26')](_0x1e6153,function(_0x1649fd){return _0x1649fd[_0x2bde('0x27')]===_0x157082;});if(_0x5d5b3d){logger[_0x2bde('0x1d')](_0x2bde('0x28'),_0x157082);return BPromise[_0x2bde('0x29')]({'id':_0x5d5b3d['Id'],'name':_0x5d5b3d[_0x2bde('0x2a')]});}}else{logger[_0x2bde('0x1d')](_0x2bde('0x2b'),_0x157082);return _0x33f739['identity']()[_0x2bde('0x2c')](function(_0x4ae1a8){return BPromise['resolve']({'id':_0x4ae1a8[_0x2bde('0x2d')],'name':_0x4ae1a8[_0x2bde('0x2e')]});});}});}else{logger[_0x2bde('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x157082);return _0x33f739['identity']()[_0x2bde('0x2c')](function(_0x18373f){return BPromise[_0x2bde('0x29')]({'id':_0x18373f[_0x2bde('0x2d')],'name':_0x18373f[_0x2bde('0x2e')]});});}}function getEndUser(_0xa0e8e8,_0x2b8f06,_0x2f5d34,_0x357164,_0x19c3e8){var _0x553da2={'$or':{'Phone':_0x357164}};var _0x11e381={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x2bde('0x29')]()['then'](function(){logger[_0x2bde('0x1d')](_0x2bde('0x2f'),_0x357164,_0x2b8f06[_0x2bde('0x30')]);switch(_0x2b8f06['moduleSearch']){case _0x2bde('0x31'):var _0x238d2b=_['cloneDeep'](_0x553da2);if(_0x2b8f06[_0x2bde('0x32')]){var _0x3b043c={};_0x3b043c[_0x2b8f06[_0x2bde('0x32')]]=_0x357164;_[_0x2bde('0x33')](_0x238d2b[_0x2bde('0x34')],_0x3b043c);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x35'))['find'](_0x238d2b,_0x11e381)['execute']()[_0x2bde('0x2c')](function(_0x270670){if(_0x270670&&_0x270670[_0x2bde('0x25')]){return _0x270670;}else{var _0x137b91=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06[_0x2bde('0x37')]){var _0xa1b3f4={};_0xa1b3f4[_0x2b8f06[_0x2bde('0x37')]]=_0x357164;_[_0x2bde('0x33')](_0x137b91[_0x2bde('0x34')],_0xa1b3f4);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x38'))['find'](_0x137b91,_0x11e381);}});case _0x2bde('0x39'):var _0x12d5b7=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06['additionalSearchAccount']){var _0x3b043c={};_0x3b043c[_0x2b8f06[_0x2bde('0x3a')]]=_0x357164;_[_0x2bde('0x33')](_0x12d5b7['$or'],_0x3b043c);}return _0x19c3e8[_0x2bde('0x1f')]('Account')[_0x2bde('0x26')](_0x12d5b7,_0x11e381)[_0x2bde('0x24')]()['then'](function(_0x1ff5c5){if(_0x1ff5c5&&_0x1ff5c5[_0x2bde('0x25')]){return _0x1ff5c5;}else{var _0x2b6b9a=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06[_0x2bde('0x32')]){var _0x10b24a={};_0x10b24a[_0x2b8f06[_0x2bde('0x32')]]=_0x357164;_['merge'](_0x2b6b9a['$or'],_0x10b24a);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x35'))[_0x2bde('0x26')](_0x2b6b9a,_0x11e381)['then'](function(_0x13e129){if(_0x13e129&&_0x13e129[_0x2bde('0x25')]){return _0x13e129;}else{var _0x17c83b=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06[_0x2bde('0x37')]){var _0x3a1d97={};_0x3a1d97[_0x2b8f06['additionalSearchLead']]=_0x357164;_[_0x2bde('0x33')](_0x17c83b[_0x2bde('0x34')],_0x3a1d97);}return _0x19c3e8[_0x2bde('0x1f')]('Lead')[_0x2bde('0x26')](_0x17c83b,_0x11e381);}});}});case'contact':var _0x238d2b=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06[_0x2bde('0x32')]){var _0x3b043c={};_0x3b043c[_0x2b8f06[_0x2bde('0x32')]]=_0x357164;_[_0x2bde('0x33')](_0x238d2b['$or'],_0x3b043c);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x35'))['find'](_0x238d2b,_0x11e381)[_0x2bde('0x24')]();case'lead':var _0x6bd0e5=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06[_0x2bde('0x37')]){var _0x3b043c={};_0x3b043c[_0x2b8f06['additionalSearchLead']]=_0x357164;_[_0x2bde('0x33')](_0x6bd0e5[_0x2bde('0x34')],_0x3b043c);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x38'))[_0x2bde('0x26')](_0x6bd0e5,_0x11e381);case'account':var _0x12d5b7=_[_0x2bde('0x36')](_0x553da2);if(_0x2b8f06['additionalSearchAccount']){var _0x3b043c={};_0x3b043c[_0x2b8f06[_0x2bde('0x3a')]]=_0x357164;_[_0x2bde('0x33')](_0x12d5b7[_0x2bde('0x34')],_0x3b043c);}return _0x19c3e8[_0x2bde('0x1f')](_0x2bde('0x3b'))[_0x2bde('0x26')](_0x12d5b7,_0x11e381);default:return null;}})[_0x2bde('0x2c')](function(_0x557964){if(_0x557964&&_0x557964[_0x2bde('0x25')]){var _0x5820a6=_['first'](_0x557964);if(_0x5820a6){return BPromise[_0x2bde('0x29')]({'id':_0x5820a6['Id'],'name':_0x5820a6['Name'],'phone':_0x5820a6[_0x2bde('0x3c')],'endUserType':_0x5820a6['attributes'][_0x2bde('0x3d')][_0x2bde('0x3e')]()});}}})[_0x2bde('0x2c')](function(_0x1df295){if(_0x1df295){logger['info']('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x1df295['endUserType'],_0x357164);return BPromise[_0x2bde('0x29')](_0x1df295);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x357164);var _0xf26367={'Phone':_0x357164};if(_0x2b8f06[_0x2bde('0x3f')]){if(_0x2b8f06[_0x2bde('0x3f')]===_0x2bde('0x16')){logger[_0x2bde('0x1d')](_0x2bde('0x40'),_0x357164,_0x2b8f06[_0x2bde('0x3f')]);_0xf26367[_0x2bde('0x41')]=_0x2f5d34!==_0x2bde('0x42')?_0x2f5d34:util[_0x2bde('0x43')]('Caller\x20-\x20%s',_0x357164);}else if(_0x2b8f06['moduleCreate']===_0x2bde('0x44')){logger[_0x2bde('0x1d')](_0x2bde('0x40'),_0x357164,_0x2b8f06['moduleCreate']);_0xf26367['LastName']=_0x2f5d34!==_0x2bde('0x42')?_0x2f5d34:util['format'](_0x2bde('0x45'),_0x357164);_0xf26367['Company']=_0x2bde('0x46');}else if(_0x2b8f06[_0x2bde('0x3f')]===_0x2bde('0x1a')){logger[_0x2bde('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x357164,_0x2b8f06[_0x2bde('0x3f')]);_0xf26367['Name']=_0x2f5d34!=='<unknown>'?_0x2f5d34:util['format'](_0x2bde('0x45'),_0x357164);}else{return null;}}return _0x19c3e8['sobject'](_[_0x2bde('0x47')](_0x2b8f06[_0x2bde('0x3f')]))[_0x2bde('0x20')](_0xf26367)[_0x2bde('0x2c')](function(_0x39d75e){return BPromise[_0x2bde('0x29')]({'id':_0x39d75e['id'],'endUserType':_0x2b8f06['moduleCreate']});});}});}function getCustomFields(_0x513c7f,_0x1ed512){var _0x569a5b={};if(_0x513c7f[_0x2bde('0x25')]>0x0){_[_0x2bde('0x48')](_0x513c7f,function(_0x42f55b){if(_[_0x2bde('0x49')]([_0x2bde('0x4a'),_0x2bde('0x4b')],_0x42f55b[_0x2bde('0x3d')])&&_0x42f55b[_0x2bde('0x4c')]){_0x569a5b[_0x42f55b[_0x2bde('0x4c')]]=_0x42f55b[_0x2bde('0x4d')][_0x2bde('0x4e')]();}else if(_0x42f55b[_0x2bde('0x3d')]==='variable'&&_0x42f55b['variableName']&&_0x42f55b[_0x2bde('0x4c')]){_0x1ed512[_0x42f55b[_0x2bde('0x4f')]]&&(_0x569a5b[_0x42f55b[_0x2bde('0x4c')]]=_0x1ed512[_0x42f55b[_0x2bde('0x4f')]][_0x2bde('0x4e')]());}else if(_0x42f55b[_0x2bde('0x3d')]===_0x2bde('0x50')&&_0x42f55b[_0x2bde('0x51')]&&_0x42f55b['Variable'][_0x2bde('0x52')]&&_0x42f55b[_0x2bde('0x4c')]){_0x1ed512[_0x42f55b[_0x2bde('0x51')]['name'][_0x2bde('0x3e')]()]&&(_0x569a5b[_0x42f55b['idField']]=_0x1ed512[_0x42f55b['Variable'][_0x2bde('0x52')]['toLowerCase']()][_0x2bde('0x4e')]());}});}return _0x569a5b;}function getConnection(_0x4bb151){var _0x16f063=_0x4bb151[_0x2bde('0x53')][_0x2bde('0x54')](_0x4bb151[_0x2bde('0x55')]);var _0x31340a=new jsforce['Connection']({'oauth2':{'loginUrl':_0x4bb151[_0x2bde('0x56')]||_0x2bde('0x57'),'clientId':_0x4bb151[_0x2bde('0x58')],'clientSecret':_0x4bb151[_0x2bde('0x59')]}});return _0x31340a[_0x2bde('0x5a')](_0x4bb151[_0x2bde('0x5b')],_0x16f063)[_0x2bde('0x2c')](function(){logger[_0x2bde('0x1d')](_0x2bde('0x5c'));return _0x31340a;});}exports[_0x2bde('0x5d')]=function(_0x4b8825,_0x3cec97,_0x49a8d0,_0x2b102d,_0x2e0dc3,_0x804c67){var _0x34954b,_0x3be2b7,_0xf87088,_0x2da5ae;_0x804c67['serverUrl']=intUtil['stripTrailingSlash'](_0x804c67[_0x2bde('0x5e')]);_0x804c67['remoteUri']=intUtil[_0x2bde('0x5f')](_0x804c67[_0x2bde('0x56')]);if(_0x2e0dc3&&_0x2e0dc3['monitor_format']){logger[_0x2bde('0x1d')](_0x2bde('0x60'),_0x2bde('0x61'));_0x3cec97[_0x2bde('0x62')]=util[_0x2bde('0x43')](_0x2bde('0x63'),_0x804c67['serverUrl'],_0x3cec97['uniqueid'],md5(_0x3cec97[_0x2bde('0x64')]));}else{_0x3cec97[_0x2bde('0x62')]='';}return getConnection(_0x804c67)[_0x2bde('0x2c')](function(_0x1560f5){_0x2da5ae=_0x1560f5;return getUser(_0x804c67,_0x2b102d[_0x2bde('0x65')],_0x2da5ae);})[_0x2bde('0x2c')](function(_0x1a5d38){_0x34954b=_0x1a5d38;return getEndUser(_0x804c67,_0x49a8d0,_0x3cec97[_0x2bde('0x66')],_0x3cec97[_0x2bde('0x67')],_0x2da5ae);})[_0x2bde('0x2c')](function(_0x1977d0){_0x3be2b7=_0x1977d0;return getTicket(_0x804c67,_0x34954b,_0x3be2b7,_0x49a8d0,_0x3cec97,_0x49a8d0[_0x2bde('0x68')],_0x2da5ae,_0x2bde('0x5d'));})[_0x2bde('0x2c')](function(_0x2803dc){_0xf87088=_0x2803dc;logger[_0x2bde('0x1d')](_0x2bde('0x69'),_0xf87088['id']);logger[_0x2bde('0x1d')](_0x2bde('0x6a'),_0xf87088['id'],_0x2b102d['name'],_0x804c67[_0x2bde('0x3d')]);switch(_0x804c67['type']){case'integrationTab':emit(util[_0x2bde('0x43')](_0x2bde('0x6b'),_0x2b102d[_0x2bde('0x52')]),_0x2bde('0x6c'),{'recordId':_0xf87088['id']});break;case _0x2bde('0x6d'):emit(util['format'](_0x2bde('0x6b'),_0x2b102d[_0x2bde('0x52')]),_0x2bde('0x6e'),{'uri':util[_0x2bde('0x43')]('%s/%s/e',_0x2da5ae['instanceUrl'],_0xf87088['id'])});break;default:logger[_0x2bde('0x6f')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x1bce14){logger[_0x2bde('0x6f')](_0x2bde('0x60'),_0x1bce14);});};exports['outbound']=function(_0x1e147b,_0x591c69,_0x30d260,_0x401492,_0x4e6db7,_0x428805,_0x35f8ea){var _0x400079,_0x565684,_0x3c136e,_0x51df9a;_0x428805[_0x2bde('0x5e')]=intUtil[_0x2bde('0x5f')](_0x428805['serverUrl']);_0x428805[_0x2bde('0x56')]=intUtil[_0x2bde('0x5f')](_0x428805[_0x2bde('0x56')]);if(_0x35f8ea&&_0x35f8ea[_0x2bde('0x70')]&&_0x35f8ea[_0x2bde('0x70')]!==_0x2bde('0x71')){logger['info'](_0x2bde('0x72'),'Recording\x20is\x20enabled!');_0x591c69[_0x2bde('0x62')]=util[_0x2bde('0x43')](_0x2bde('0x63'),_0x428805[_0x2bde('0x5e')],_0x591c69[_0x2bde('0x64')],md5(_0x591c69[_0x2bde('0x64')]));}return getConnection(_0x428805)[_0x2bde('0x2c')](function(_0x1d7f89){_0x51df9a=_0x1d7f89;return getUser(_0x428805,_0x401492[_0x2bde('0x65')],_0x51df9a);})[_0x2bde('0x2c')](function(_0x5db32c){_0x400079=_0x5db32c;return getEndUser(_0x428805,_0x30d260,_0x591c69[_0x2bde('0x73')],_0x591c69[_0x2bde('0x74')],_0x51df9a);})[_0x2bde('0x2c')](function(_0x4e1038){_0x565684=_0x4e1038;return getTicket(_0x428805,_0x400079,_0x565684,_0x30d260,_0x591c69,_0x30d260[_0x2bde('0x68')],_0x51df9a,_0x2bde('0x75'));})[_0x2bde('0x2c')](function(_0x75760e){_0x3c136e=_0x75760e;logger[_0x2bde('0x1d')](_0x2bde('0x76'),_0x3c136e['id']);logger[_0x2bde('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x3c136e['id'],_0x401492['name'],_0x428805[_0x2bde('0x3d')]);switch(_0x428805[_0x2bde('0x3d')]){case _0x2bde('0x77'):emit(util[_0x2bde('0x43')](_0x2bde('0x6b'),_0x401492[_0x2bde('0x52')]),_0x2bde('0x6c'),{'recordId':_0x3c136e['id']});break;case'newTab':emit(util['format'](_0x2bde('0x6b'),_0x401492['name']),'trigger:browser:url',{'uri':util[_0x2bde('0x43')](_0x2bde('0x78'),_0x51df9a[_0x2bde('0x79')],_0x3c136e['id'])});break;default:logger[_0x2bde('0x6f')](_0x2bde('0x72'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x2bde('0x7a')](function(_0x4667de){logger[_0x2bde('0x6f')](_0x2bde('0x72'),_0x4667de);});};exports[_0x2bde('0x7b')]=function(_0x38f647,_0x9c9b37,_0x2e56f8,_0x216b2b,_0x111009,_0x5a4969){var _0x531424,_0x103b3c,_0xdb3bdc,_0x55fce8;_0x5a4969[_0x2bde('0x5e')]=intUtil[_0x2bde('0x5f')](_0x5a4969[_0x2bde('0x5e')]);_0x5a4969[_0x2bde('0x56')]=intUtil[_0x2bde('0x5f')](_0x5a4969['remoteUri']);if(_0x111009&&_0x111009[_0x2bde('0x7c')]){logger[_0x2bde('0x1d')]('['+_0x9c9b37[_0x2bde('0x7d')][_0x2bde('0x7e')]()+']',_0x2bde('0x61'));_0x9c9b37[_0x2bde('0x62')]=util[_0x2bde('0x43')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5a4969[_0x2bde('0x5e')],_0x9c9b37[_0x2bde('0x64')],md5(_0x9c9b37[_0x2bde('0x64')]));}else{_0x9c9b37[_0x2bde('0x62')]='';}return getConnection(_0x5a4969)[_0x2bde('0x2c')](function(_0x177938){_0x55fce8=_0x177938;if(!_[_0x2bde('0x21')](_0x216b2b)){return getUser(_0x5a4969,_0x216b2b[_0x2bde('0x52')],_0x55fce8);}else{return getUser(_0x5a4969,null,_0x55fce8);}})['then'](function(_0x535cbc){_0x531424=_0x535cbc;return getEndUser(_0x5a4969,_0x2e56f8,_0x9c9b37[_0x2bde('0x66')],_0x9c9b37[_0x2bde('0x67')],_0x55fce8);})[_0x2bde('0x2c')](function(_0x33a0fd){_0x103b3c=_0x33a0fd;return getTicket(_0x5a4969,_0x531424,_0x103b3c,_0x2e56f8,_0x9c9b37,_0x2e56f8['Fields'],_0x55fce8);})[_0x2bde('0x2c')](function(_0x577a74){_0xdb3bdc=_0x577a74;logger[_0x2bde('0x1d')]('['+_0x9c9b37[_0x2bde('0x7d')][_0x2bde('0x7e')]()+_0x2bde('0x7f'),_0xdb3bdc['id']);logger[_0x2bde('0x1d')]('['+_0x9c9b37[_0x2bde('0x7d')][_0x2bde('0x7e')]()+']\x20Integration\x20account\x20type\x20%s.',_0x5a4969[_0x2bde('0x3d')]);})[_0x2bde('0x7a')](function(_0x1817e5){logger[_0x2bde('0x6f')]('['+_0x9c9b37[_0x2bde('0x7d')][_0x2bde('0x7e')]()+']',_0x1817e5);});};
\ No newline at end of file
+var _0x8144=['Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','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','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','monitor_format','toUpperCase','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','getString','Subjects','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','execute','then','length','find','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Phone','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','Company','No\x20Company','format','upperFirst','forEach','includes','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','securityToken'];(function(_0x908a41,_0x4d6219){var _0xf053cd=function(_0x293d97){while(--_0x293d97){_0x908a41['push'](_0x908a41['shift']());}};_0xf053cd(++_0x4d6219);}(_0x8144,0xb4));var _0x4814=function(_0x5390a5,_0x5dd1a0){_0x5390a5=_0x5390a5-0x0;var _0x52a8a5=_0x8144[_0x5390a5];return _0x52a8a5;};'use strict';var _=require(_0x4814('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4814('0x1'));var md5=require(_0x4814('0x2'));var jsforce=require(_0x4814('0x3'));var util=require(_0x4814('0x4'));var Redis=require(_0x4814('0x5'));var intUtil=require(_0x4814('0x6'));var config=require(_0x4814('0x7'));var logger=require(_0x4814('0x8'))('salesforce');config[_0x4814('0x9')]=_[_0x4814('0xa')](config[_0x4814('0x9')],{'host':_0x4814('0xb'),'port':0x18eb});var io=require(_0x4814('0xc'))(new Redis(config[_0x4814('0x9')]));function emit(_0x4bee44,_0xd4a24c,_0x2151a5){io['to'](_0x4bee44)['emit'](_0xd4a24c,_0x2151a5);}function getTicket(_0xd96e90,_0x417b98,_0x4f6335,_0x53f980,_0x12a241,_0xaa18,_0x6fec68,_0x56be4c){var _0x226a84=Object['assign']({},{'OwnerId':_0x417b98['id'],'Subject':intUtil[_0x4814('0xd')](_0x53f980[_0x4814('0xe')],_0x12a241,'\x20'),'Description':intUtil[_0x4814('0xd')](_0x53f980['Descriptions'],_0x12a241,'\x0a')},getCustomFields(_0xaa18,_0x12a241));if(_0x4f6335){if(_0x53f980[_0x4814('0xf')]===_0x4814('0x10')){_0x226a84[_0x4814('0x11')]=moment[_0x4814('0x12')]();_0x226a84['IsReminderSet']=![];_0x226a84[_0x4814('0x13')]=![];if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x15')||_0x4f6335[_0x4814('0x14')]===_0x4814('0x16')){_0x226a84[_0x4814('0x17')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x18')){_0x226a84[_0x4814('0x19')]=_0x4f6335['id'];}}else if(_0x53f980[_0x4814('0xf')]===_0x4814('0x1a')){if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x15')){_0x226a84[_0x4814('0x1b')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x18')){_0x226a84[_0x4814('0x1c')]=_0x4f6335['id'];}else if(_0x4f6335[_0x4814('0x14')]===_0x4814('0x16')&&_0x53f980[_0x4814('0x1d')]){_0x226a84[_0x53f980[_0x4814('0x1d')]]=_0x4f6335['id'];}else{logger[_0x4814('0x1e')](_0x4814('0x1f'));}}}return _0x6fec68[_0x4814('0x20')](_0x53f980[_0x4814('0xf')])[_0x4814('0x21')](_0x226a84);}function getUser(_0x1ef9fa,_0x384999,_0x2744fa){if(!_[_0x4814('0x22')](_0x384999)&&intUtil[_0x4814('0x23')](_0x384999)){var _0x13e8f2={'Email':_0x384999};var _0x5757dd={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2744fa[_0x4814('0x20')](_0x4814('0x24'))['find'](_0x13e8f2,_0x5757dd)[_0x4814('0x25')]()[_0x4814('0x26')](function(_0x5cabb4){if(_0x5cabb4[_0x4814('0x27')]){var _0x517c9a=_[_0x4814('0x28')](_0x5cabb4,function(_0x454d38){return _0x454d38['Email']===_0x384999;});if(_0x517c9a){logger[_0x4814('0x1e')](_0x4814('0x29'),_0x384999);return BPromise[_0x4814('0x2a')]({'id':_0x517c9a['Id'],'name':_0x517c9a[_0x4814('0x2b')]});}}else{logger['info'](_0x4814('0x2c'),_0x384999);return _0x2744fa['identity']()[_0x4814('0x26')](function(_0x201ac1){return BPromise[_0x4814('0x2a')]({'id':_0x201ac1[_0x4814('0x2d')],'name':_0x201ac1[_0x4814('0x2e')]});});}});}else{logger[_0x4814('0x1e')](_0x4814('0x2c'),_0x384999);return _0x2744fa[_0x4814('0x2f')]()[_0x4814('0x26')](function(_0x3f7784){return BPromise[_0x4814('0x2a')]({'id':_0x3f7784[_0x4814('0x2d')],'name':_0x3f7784[_0x4814('0x2e')]});});}}function getEndUser(_0x55985d,_0x285a42,_0x33786e,_0x29be58,_0x54ec3e){var _0x39b43b={'$or':{'Phone':_0x29be58}};var _0x93e510={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x4814('0x2a')]()[_0x4814('0x26')](function(){logger[_0x4814('0x1e')](_0x4814('0x30'),_0x29be58,_0x285a42[_0x4814('0x31')]);switch(_0x285a42[_0x4814('0x31')]){case _0x4814('0x32'):var _0x25cd60=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42['additionalSearchContact']){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x34')]]=_0x29be58;_['merge'](_0x25cd60[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')]('Contact')[_0x4814('0x28')](_0x25cd60,_0x93e510)['execute']()[_0x4814('0x26')](function(_0xad43f3){if(_0xad43f3&&_0xad43f3[_0x4814('0x27')]){return _0xad43f3;}else{var _0x6d2944=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x43bf77={};_0x43bf77[_0x285a42[_0x4814('0x36')]]=_0x29be58;_[_0x4814('0x37')](_0x6d2944[_0x4814('0x35')],_0x43bf77);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x38'))['find'](_0x6d2944,_0x93e510);}});case _0x4814('0x39'):var _0x19ee47=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x3a')]){var _0x590248={};_0x590248[_0x285a42['additionalSearchAccount']]=_0x29be58;_[_0x4814('0x37')](_0x19ee47[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3b'))[_0x4814('0x28')](_0x19ee47,_0x93e510)[_0x4814('0x25')]()['then'](function(_0x50d769){if(_0x50d769&&_0x50d769[_0x4814('0x27')]){return _0x50d769;}else{var _0x4f1072=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x34')]){var _0x194fee={};_0x194fee[_0x285a42[_0x4814('0x34')]]=_0x29be58;_[_0x4814('0x37')](_0x4f1072[_0x4814('0x35')],_0x194fee);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3c'))['find'](_0x4f1072,_0x93e510)[_0x4814('0x26')](function(_0x23463e){if(_0x23463e&&_0x23463e[_0x4814('0x27')]){return _0x23463e;}else{var _0x667e2b=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x14444b={};_0x14444b[_0x285a42[_0x4814('0x36')]]=_0x29be58;_[_0x4814('0x37')](_0x667e2b[_0x4814('0x35')],_0x14444b);}return _0x54ec3e[_0x4814('0x20')]('Lead')[_0x4814('0x28')](_0x667e2b,_0x93e510);}});}});case _0x4814('0x15'):var _0x25cd60=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x34')]){var _0x590248={};_0x590248[_0x285a42['additionalSearchContact']]=_0x29be58;_[_0x4814('0x37')](_0x25cd60[_0x4814('0x35')],_0x590248);}return _0x54ec3e[_0x4814('0x20')](_0x4814('0x3c'))[_0x4814('0x28')](_0x25cd60,_0x93e510)[_0x4814('0x25')]();case _0x4814('0x16'):var _0x267c9b=_[_0x4814('0x33')](_0x39b43b);if(_0x285a42[_0x4814('0x36')]){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x36')]]=_0x29be58;_['merge'](_0x267c9b[_0x4814('0x35')],_0x590248);}return _0x54ec3e['sobject'](_0x4814('0x38'))[_0x4814('0x28')](_0x267c9b,_0x93e510);case _0x4814('0x18'):var _0x19ee47=_['cloneDeep'](_0x39b43b);if(_0x285a42[_0x4814('0x3a')]){var _0x590248={};_0x590248[_0x285a42[_0x4814('0x3a')]]=_0x29be58;_[_0x4814('0x37')](_0x19ee47['$or'],_0x590248);}return _0x54ec3e['sobject'](_0x4814('0x3b'))['find'](_0x19ee47,_0x93e510);default:return null;}})[_0x4814('0x26')](function(_0x4d25ea){if(_0x4d25ea&&_0x4d25ea[_0x4814('0x27')]){var _0x19b9a2=_[_0x4814('0x3d')](_0x4d25ea);if(_0x19b9a2){return BPromise[_0x4814('0x2a')]({'id':_0x19b9a2['Id'],'name':_0x19b9a2[_0x4814('0x2b')],'phone':_0x19b9a2[_0x4814('0x3e')],'endUserType':_0x19b9a2[_0x4814('0x3f')][_0x4814('0x40')]['toLowerCase']()});}}})['then'](function(_0x140fb1){if(_0x140fb1){logger[_0x4814('0x1e')](_0x4814('0x41'),_0x140fb1[_0x4814('0x14')],_0x29be58);return BPromise[_0x4814('0x2a')](_0x140fb1);}else{logger[_0x4814('0x1e')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x29be58);var _0x356d28={'Phone':_0x29be58};if(_0x285a42[_0x4814('0x42')]){if(_0x285a42['moduleCreate']===_0x4814('0x15')){logger[_0x4814('0x1e')](_0x4814('0x43'),_0x29be58,_0x285a42[_0x4814('0x42')]);_0x356d28[_0x4814('0x44')]=_0x33786e!==_0x4814('0x45')?_0x33786e:util['format'](_0x4814('0x46'),_0x29be58);}else if(_0x285a42[_0x4814('0x42')]===_0x4814('0x16')){logger[_0x4814('0x1e')](_0x4814('0x43'),_0x29be58,_0x285a42['moduleCreate']);_0x356d28['LastName']=_0x33786e!=='<unknown>'?_0x33786e:util['format']('Caller\x20-\x20%s',_0x29be58);_0x356d28[_0x4814('0x47')]=_0x4814('0x48');}else if(_0x285a42[_0x4814('0x42')]===_0x4814('0x18')){logger['info'](_0x4814('0x43'),_0x29be58,_0x285a42[_0x4814('0x42')]);_0x356d28[_0x4814('0x2b')]=_0x33786e!==_0x4814('0x45')?_0x33786e:util[_0x4814('0x49')](_0x4814('0x46'),_0x29be58);}else{return null;}}return _0x54ec3e[_0x4814('0x20')](_[_0x4814('0x4a')](_0x285a42[_0x4814('0x42')]))[_0x4814('0x21')](_0x356d28)['then'](function(_0xffccf7){return BPromise[_0x4814('0x2a')]({'id':_0xffccf7['id'],'endUserType':_0x285a42['moduleCreate']});});}});}function getCustomFields(_0x1632ab,_0x5a3b38){var _0x48c6ad={};if(_0x1632ab['length']>0x0){_[_0x4814('0x4b')](_0x1632ab,function(_0x1146c1){if(_[_0x4814('0x4c')](['string',_0x4814('0x4d')],_0x1146c1['type'])&&_0x1146c1[_0x4814('0x4e')]){_0x48c6ad[_0x1146c1['idField']]=_0x1146c1[_0x4814('0x4f')][_0x4814('0x50')]();}else if(_0x1146c1[_0x4814('0x40')]===_0x4814('0x51')&&_0x1146c1['variableName']&&_0x1146c1['idField']){_0x5a3b38[_0x1146c1[_0x4814('0x52')]]&&(_0x48c6ad[_0x1146c1[_0x4814('0x4e')]]=_0x5a3b38[_0x1146c1['variableName']]['toString']());}else if(_0x1146c1[_0x4814('0x40')]===_0x4814('0x53')&&_0x1146c1['Variable']&&_0x1146c1[_0x4814('0x54')][_0x4814('0x55')]&&_0x1146c1[_0x4814('0x4e')]){_0x5a3b38[_0x1146c1['Variable'][_0x4814('0x55')]['toLowerCase']()]&&(_0x48c6ad[_0x1146c1[_0x4814('0x4e')]]=_0x5a3b38[_0x1146c1[_0x4814('0x54')][_0x4814('0x55')]['toLowerCase']()]['toString']());}});}return _0x48c6ad;}function getConnection(_0x4a8137){var _0x3862d7=_0x4a8137[_0x4814('0x56')]['concat'](_0x4a8137[_0x4814('0x57')]);var _0x8cdfd4=new jsforce[(_0x4814('0x58'))]({'oauth2':{'loginUrl':_0x4a8137[_0x4814('0x59')]||_0x4814('0x5a'),'clientId':_0x4a8137[_0x4814('0x5b')],'clientSecret':_0x4a8137[_0x4814('0x5c')]}});return _0x8cdfd4[_0x4814('0x5d')](_0x4a8137[_0x4814('0x5e')],_0x3862d7)['then'](function(){logger['info'](_0x4814('0x5f'));return _0x8cdfd4;});}exports[_0x4814('0x60')]=function(_0x3660e8,_0x582e9f,_0x2d4041,_0x3f3d37,_0x5b58e9,_0x264ef2){var _0x12c8f5,_0x4e6eff,_0x2485ed,_0x2dae9f;_0x264ef2[_0x4814('0x61')]=intUtil[_0x4814('0x62')](_0x264ef2[_0x4814('0x61')]);_0x264ef2[_0x4814('0x59')]=intUtil['stripTrailingSlash'](_0x264ef2[_0x4814('0x59')]);if(_0x5b58e9&&_0x5b58e9['monitor_format']){logger[_0x4814('0x1e')](_0x4814('0x63'),_0x4814('0x64'));_0x582e9f['recordingURL']=util['format'](_0x4814('0x65'),_0x264ef2[_0x4814('0x61')],_0x582e9f[_0x4814('0x66')],md5(_0x582e9f[_0x4814('0x66')]));}else{_0x582e9f[_0x4814('0x67')]='';}return getConnection(_0x264ef2)[_0x4814('0x26')](function(_0x56d15c){_0x2dae9f=_0x56d15c;return getUser(_0x264ef2,_0x3f3d37[_0x4814('0x68')],_0x2dae9f);})[_0x4814('0x26')](function(_0x5e1b59){_0x12c8f5=_0x5e1b59;return getEndUser(_0x264ef2,_0x2d4041,_0x582e9f[_0x4814('0x69')],_0x582e9f[_0x4814('0x6a')],_0x2dae9f);})['then'](function(_0xc6aa64){_0x4e6eff=_0xc6aa64;return getTicket(_0x264ef2,_0x12c8f5,_0x4e6eff,_0x2d4041,_0x582e9f,_0x2d4041[_0x4814('0x6b')],_0x2dae9f,'queue');})[_0x4814('0x26')](function(_0x83ea02){_0x2485ed=_0x83ea02;logger[_0x4814('0x1e')](_0x4814('0x6c'),_0x2485ed['id']);logger[_0x4814('0x1e')](_0x4814('0x6d'),_0x2485ed['id'],_0x3f3d37[_0x4814('0x55')],_0x264ef2[_0x4814('0x40')]);switch(_0x264ef2['type']){case _0x4814('0x6e'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x3f3d37['name']),_0x4814('0x70'),{'recordId':_0x2485ed['id']});break;case _0x4814('0x71'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x3f3d37[_0x4814('0x55')]),_0x4814('0x72'),{'uri':util[_0x4814('0x49')](_0x4814('0x73'),_0x2dae9f[_0x4814('0x74')],_0x2485ed['id'])});break;default:logger[_0x4814('0x75')](_0x4814('0x76'));}})[_0x4814('0x77')](function(_0xf7290e){logger[_0x4814('0x75')](_0x4814('0x63'),_0xf7290e);});};exports[_0x4814('0x78')]=function(_0x2d88f0,_0x2093ff,_0x15b9ef,_0x53c058,_0xe73ea2,_0x86226b,_0x4eae10){var _0x34d8f4,_0x29b1a8,_0x4ad545,_0x547be3;_0x86226b[_0x4814('0x61')]=intUtil['stripTrailingSlash'](_0x86226b[_0x4814('0x61')]);_0x86226b[_0x4814('0x59')]=intUtil['stripTrailingSlash'](_0x86226b[_0x4814('0x59')]);if(_0x4eae10&&_0x4eae10[_0x4814('0x79')]&&_0x4eae10[_0x4814('0x79')]!==_0x4814('0x7a')){logger['info'](_0x4814('0x7b'),'Recording\x20is\x20enabled!');_0x2093ff[_0x4814('0x67')]=util[_0x4814('0x49')](_0x4814('0x65'),_0x86226b[_0x4814('0x61')],_0x2093ff['uniqueid'],md5(_0x2093ff['uniqueid']));}return getConnection(_0x86226b)[_0x4814('0x26')](function(_0x4e00b2){_0x547be3=_0x4e00b2;return getUser(_0x86226b,_0x53c058[_0x4814('0x68')],_0x547be3);})[_0x4814('0x26')](function(_0x4440be){_0x34d8f4=_0x4440be;return getEndUser(_0x86226b,_0x15b9ef,_0x2093ff[_0x4814('0x7c')],_0x2093ff[_0x4814('0x7d')],_0x547be3);})[_0x4814('0x26')](function(_0x45d62a){_0x29b1a8=_0x45d62a;return getTicket(_0x86226b,_0x34d8f4,_0x29b1a8,_0x15b9ef,_0x2093ff,_0x15b9ef['Fields'],_0x547be3,_0x4814('0x78'));})[_0x4814('0x26')](function(_0x4b516a){_0x4ad545=_0x4b516a;logger[_0x4814('0x1e')](_0x4814('0x7e'),_0x4ad545['id']);logger[_0x4814('0x1e')](_0x4814('0x7f'),_0x4ad545['id'],_0x53c058[_0x4814('0x55')],_0x86226b[_0x4814('0x40')]);switch(_0x86226b[_0x4814('0x40')]){case'integrationTab':emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x53c058[_0x4814('0x55')]),_0x4814('0x70'),{'recordId':_0x4ad545['id']});break;case _0x4814('0x71'):emit(util[_0x4814('0x49')](_0x4814('0x6f'),_0x53c058[_0x4814('0x55')]),'trigger:browser:url',{'uri':util[_0x4814('0x49')](_0x4814('0x73'),_0x547be3[_0x4814('0x74')],_0x4ad545['id'])});break;default:logger['error']('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x4814('0x77')](function(_0x18ca75){logger[_0x4814('0x75')]('[OUTBOUND]',_0x18ca75);});};exports[_0x4814('0x80')]=function(_0x365bbd,_0x4cd7ab,_0x1c29ae,_0x562182,_0x4df13f,_0x972086){var _0x712617,_0x43a482,_0x3356e8,_0x1cd888;_0x972086['serverUrl']=intUtil[_0x4814('0x62')](_0x972086['serverUrl']);_0x972086['remoteUri']=intUtil[_0x4814('0x62')](_0x972086['remoteUri']);if(_0x4df13f&&_0x4df13f[_0x4814('0x81')]){logger[_0x4814('0x1e')]('['+_0x4cd7ab['lastevent'][_0x4814('0x82')]()+']',_0x4814('0x64'));_0x4cd7ab['recordingURL']=util[_0x4814('0x49')](_0x4814('0x65'),_0x972086[_0x4814('0x61')],_0x4cd7ab[_0x4814('0x66')],md5(_0x4cd7ab[_0x4814('0x66')]));}else{_0x4cd7ab[_0x4814('0x67')]='';}return getConnection(_0x972086)['then'](function(_0xdeddf2){_0x1cd888=_0xdeddf2;if(!_['isNil'](_0x562182)){return getUser(_0x972086,_0x562182[_0x4814('0x55')],_0x1cd888);}else{return getUser(_0x972086,null,_0x1cd888);}})[_0x4814('0x26')](function(_0x1bdca2){_0x712617=_0x1bdca2;return getEndUser(_0x972086,_0x1c29ae,_0x4cd7ab[_0x4814('0x69')],_0x4cd7ab['calleridnum'],_0x1cd888);})[_0x4814('0x26')](function(_0x4d34f4){_0x43a482=_0x4d34f4;return getTicket(_0x972086,_0x712617,_0x43a482,_0x1c29ae,_0x4cd7ab,_0x1c29ae[_0x4814('0x6b')],_0x1cd888);})['then'](function(_0x2f98e3){_0x3356e8=_0x2f98e3;logger[_0x4814('0x1e')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+_0x4814('0x84'),_0x3356e8['id']);logger[_0x4814('0x1e')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+_0x4814('0x85'),_0x972086['type']);})[_0x4814('0x77')](function(_0x390a9a){logger[_0x4814('0x75')]('['+_0x4cd7ab[_0x4814('0x83')][_0x4814('0x82')]()+']',_0x390a9a);});};
\ No newline at end of file
index 8d5c0ee..363998b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df4=['The\x20ticket\x20ID\x20is:\x20%s','ticketId','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','userEmail','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','length','true','userId','adminEmail','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','string','picklist','type','nameField','customField','content','toString','includes','idField','variable','variableName','toLowerCase','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','forEach','map','%26sysparm_record_target%3Dincident','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!'];(function(_0x4f245b,_0x4dc858){var _0x4a8851=function(_0xac825c){while(--_0xac825c){_0x4f245b['push'](_0x4f245b['shift']());}};_0x4a8851(++_0x4dc858);}(_0x1df4,0x77));var _0x41df=function(_0xba130d,_0x272c9e){_0xba130d=_0xba130d-0x0;var _0x948b33=_0x1df4[_0xba130d];return _0x948b33;};'use strict';var _=require(_0x41df('0x0'));var Promise=require(_0x41df('0x1'));var rp=require(_0x41df('0x2'));var util=require('util');var md5=require(_0x41df('0x3'));var Redis=require(_0x41df('0x4'));var intUtil=require('./util');var config=require(_0x41df('0x5'));var logger=require(_0x41df('0x6'))(_0x41df('0x7'));config[_0x41df('0x8')]=_[_0x41df('0x9')](config[_0x41df('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x41df('0xa'))(new Redis(config[_0x41df('0x8')]));function getAdminUser(_0xa24faf,_0x21e787,_0x1ed0ef,_0x5dfbc9,_0x5e6309,_0x434bcc){return new Promise(function(_0x1f23b7,_0x2dc848){var _0x3aca94={'method':_0x41df('0xb'),'uri':_0x5dfbc9+_0x41df('0xc')+'&'+_0x5e6309+'&'+_0x434bcc,'auth':_0x21e787,'json':!![]};return rp(_0x3aca94)['then'](function(_0x361852){if(_0x361852['result']['length']>0x0){_0x1ed0ef[_0x41df('0xd')]=_0x361852[_0x41df('0xe')][0x0][_0x41df('0xf')];}logger[_0x41df('0x10')]('['+[_0xa24faf[_0x41df('0x11')]()]+_0x41df('0x12'),_0x1ed0ef);_0x1f23b7(_0x1ed0ef);})['catch'](function(_0x38fd4){logger[_0x41df('0x13')]('['+[_0xa24faf[_0x41df('0x11')]()]+']',_0x38fd4[_0x41df('0x14')]);_0x2dc848(_0x38fd4[_0x41df('0x14')]);});});}function getUser(_0x4a7ee,_0x37d04b,_0x3b73a6,_0x5d579b,_0x74aa9c){return function(_0x4be469){logger[_0x41df('0x10')]('['+[_0x4a7ee['toUpperCase']()]+_0x41df('0x15'),_0x4be469);return new Promise(function(_0x2a7cae,_0x41c921){if(intUtil['validateEmail'](_0x4be469[_0x41df('0x16')])){var _0x27ed72={'method':_0x41df('0xb'),'uri':_0x3b73a6+'sys_user?sysparm_query=email%3D'+_0x4be469[_0x41df('0x16')]+'&'+_0x5d579b+'&'+_0x74aa9c,'auth':_0x37d04b,'json':!![]};logger[_0x41df('0x10')]('['+[_0x4a7ee['toUpperCase']()]+_0x41df('0x17'),_0x27ed72);return rp(_0x27ed72)[_0x41df('0x18')](function(_0x1c503d){logger['info']('['+[_0x4a7ee[_0x41df('0x11')]()]+_0x41df('0x19'),_0x1c503d);if(_0x1c503d[_0x41df('0xe')][_0x41df('0x1a')]>0x0&&String(_0x1c503d[_0x41df('0xe')][0x0]['active'])===_0x41df('0x1b')){_0x4be469['userId']=_0x1c503d[_0x41df('0xe')][0x0][_0x41df('0xf')];}else{_0x4be469[_0x41df('0x1c')]=_0x4be469['adminId'];_0x4be469['userEmail']=_0x4be469[_0x41df('0x1d')];}logger[_0x41df('0x10')]('['+[_0x4a7ee[_0x41df('0x11')]()]+_0x41df('0x1e'),_0x4be469);_0x2a7cae(_0x4be469);})[_0x41df('0x1f')](function(_0x907a0a){logger[_0x41df('0x13')]('['+[_0x4a7ee[_0x41df('0x11')]()]+']',_0x907a0a[_0x41df('0x14')]);_0x41c921(_0x907a0a[_0x41df('0x14')]);});}else{logger['info']('['+[_0x4a7ee['toUpperCase']()]+_0x41df('0x20'));_0x4be469['userId']=_0x4be469[_0x41df('0xd')];_0x4be469[_0x41df('0x16')]=_0x4be469[_0x41df('0x1d')];_0x2a7cae(_0x4be469);}});};}function createEndUser(_0x54d933,_0x130ae4,_0x233c5a,_0x1fc50d,_0x13c14c){logger['info']('['+[_0x54d933[_0x41df('0x11')]()]+_0x41df('0x21'),_0x233c5a);return new Promise(function(_0x3f9c7b,_0x1909c1){var _0x53e5f0={'method':_0x41df('0x22'),'uri':_0x1fc50d+_0x41df('0x23')+_0x13c14c,'body':{'user_name':_0x233c5a[_0x41df('0x24')],'roles':'user','first_name':_0x233c5a[_0x41df('0x24')],'active':_0x41df('0x1b'),'date_format':_0x41df('0x25'),'phone':_0x233c5a[_0x41df('0x24')]},'auth':_0x130ae4,'json':!![]};return rp(_0x53e5f0)[_0x41df('0x18')](function(_0x16f310){logger[_0x41df('0x10')]('['+[_0x54d933[_0x41df('0x11')]()]+_0x41df('0x26'),_0x16f310['result']);_0x233c5a[_0x41df('0x27')]=_0x16f310[_0x41df('0xe')]['sys_id'];_0x3f9c7b(_0x233c5a);})['catch'](function(_0x1c6c57){logger[_0x41df('0x13')]('['+[_0x54d933['toUpperCase']()]+']',_0x1c6c57['message']);_0x1909c1(_0x1c6c57[_0x41df('0x14')]);});});}function getEndUser(_0x3d2a7e,_0xebdb68,_0x128f98,_0x6d982a,_0xd21939){return function(_0x3945f1){logger[_0x41df('0x10')]('['+[_0x3d2a7e[_0x41df('0x11')]()]+_0x41df('0x28'),_0x3945f1);return new Promise(function(_0x3295bc,_0x1c1594){var _0x144da3={'method':_0x41df('0xb'),'uri':_0x128f98+_0x41df('0x29')+_0x3945f1['endUserNumber']+'&'+_0x6d982a+'&'+_0xd21939,'auth':_0xebdb68,'json':!![]};return rp(_0x144da3)[_0x41df('0x18')](function(_0x4da9ba){if(_0x4da9ba[_0x41df('0xe')][_0x41df('0x1a')]>0x0){_0x3945f1['endUserId']=_0x4da9ba[_0x41df('0xe')][0x0][_0x41df('0xf')];logger[_0x41df('0x10')]('['+[_0x3d2a7e[_0x41df('0x11')]()]+_0x41df('0x2a'),_0x3945f1);_0x3295bc(_0x3945f1);}else{return createEndUser(_0x3d2a7e,_0xebdb68,_0x3945f1,_0x128f98,_0x6d982a)[_0x41df('0x18')](function(_0x3a07e5){logger[_0x41df('0x10')]('['+[_0x3d2a7e[_0x41df('0x11')]()]+_0x41df('0x2b'),_0x3a07e5);_0x3295bc(_0x3a07e5);});}})[_0x41df('0x1f')](function(_0x692b8){logger['error']('['+[_0x3d2a7e[_0x41df('0x11')]()]+']',_0x692b8[_0x41df('0x14')]);_0x1c1594(_0x692b8[_0x41df('0x14')]);});});};}function getCustomFields(_0x45f307,_0x5c0413){var _0x5a02f0={};if(_0x45f307[_0x41df('0x1a')]>0x0){_['forEach'](_0x45f307,function(_0x556878){if(_['includes']([_0x41df('0x2c'),_0x41df('0x2d')],_0x556878[_0x41df('0x2e')])&&_0x556878[_0x41df('0x2f')]&&!_0x556878[_0x41df('0x30')]){_0x5a02f0[_0x556878[_0x41df('0x2f')]['toLowerCase']()]=_0x556878[_0x41df('0x31')][_0x41df('0x32')]();}else if(_[_0x41df('0x33')](['string',_0x41df('0x2d')],_0x556878[_0x41df('0x2e')])&&_0x556878['idField']&&_0x556878[_0x41df('0x30')]){_0x5a02f0[_0x556878[_0x41df('0x34')]['toLowerCase']()]=_0x556878[_0x41df('0x31')][_0x41df('0x32')]();}else if(_0x556878[_0x41df('0x2e')]===_0x41df('0x35')&&_0x556878[_0x41df('0x36')]&&_0x556878[_0x41df('0x34')]&&_0x556878[_0x41df('0x30')]){_0x5a02f0[_0x556878[_0x41df('0x34')][_0x41df('0x37')]()]=_0x5c0413[_0x556878[_0x41df('0x36')]]['toString']();}else if(_0x556878[_0x41df('0x2e')]===_0x41df('0x38')&&_0x556878[_0x41df('0x39')]&&_0x556878[_0x41df('0x39')][_0x41df('0x3a')]&&_0x556878[_0x41df('0x34')]&&_0x556878[_0x41df('0x30')]){_0x5a02f0[_0x556878[_0x41df('0x34')][_0x41df('0x37')]()]=_0x5c0413[_0x556878[_0x41df('0x39')]['name']['toLowerCase']()][_0x41df('0x32')]();}});}return _0x5a02f0;}function getTicket(_0x3c8ba1,_0x4ab973,_0x371193,_0x13aff0,_0x5cf2bb,_0x4159f3){return function(_0x27e4ec){logger[_0x41df('0x10')]('['+[_0x3c8ba1[_0x41df('0x11')]()]+_0x41df('0x3b'),_0x27e4ec);return new Promise(function(_0x5a7398,_0x3e1a9b){var _0x6d90e6=_0x3c8ba1['toLowerCase']()===_0x41df('0x3c')?_0x27e4ec[_0x41df('0x1c')]:_0x27e4ec[_0x41df('0x27')];var _0x54132f={'method':'POST','uri':_0x371193+'incident'+'?'+_0x4159f3,'body':Object['assign']({},{'active':_0x41df('0x1b'),'caller_id':_0x6d90e6,'assigned_to':_0x27e4ec[_0x41df('0x1c')],'short_description':intUtil[_0x41df('0x3d')](_0x13aff0[_0x41df('0x3e')],_0x5cf2bb,'\x20'),'description':intUtil['getString'](_0x13aff0[_0x41df('0x3f')],_0x5cf2bb,'\x0a')},getCustomFields(_0x13aff0[_0x41df('0x40')],_0x5cf2bb)),'auth':_0x4ab973,'json':!![]};return rp(_0x54132f)['then'](function(_0x20a5c3){logger[_0x41df('0x10')]('['+[_0x3c8ba1[_0x41df('0x11')]()]+_0x41df('0x41'),_0x20a5c3[_0x41df('0xe')]);_0x27e4ec['ticketId']=_0x20a5c3['result'][_0x41df('0xf')];_0x27e4ec[_0x41df('0x42')]=_0x20a5c3[_0x41df('0xe')][_0x41df('0x43')];logger[_0x41df('0x10')]('['+[_0x3c8ba1[_0x41df('0x11')]()]+']\x20getTicket\x20crm',_0x27e4ec);_0x5a7398(_0x27e4ec);})[_0x41df('0x1f')](function(_0x2b3e03){logger[_0x41df('0x13')]('['+[_0x3c8ba1[_0x41df('0x11')]()]+']',_0x2b3e03[_0x41df('0x14')]);_0x3e1a9b(_0x2b3e03[_0x41df('0x14')]);});});};}function createRemoteTag(_0x108013,_0x581cd6,_0x269b5c,_0x2b86c7){return new Promise(function(_0xf813f1,_0x2b0ede){var _0x59d3f7={'method':'POST','uri':_0x269b5c+_0x41df('0x44')+'?'+_0x2b86c7,'body':{'short_description':_0x108013,'global':!![],'active':!![],'name':_0x108013},'auth':_0x581cd6,'json':!![]};return rp(_0x59d3f7)['then'](function(_0x2ba97e){var _0xf9b528=_0x2ba97e[_0x41df('0xe')][_0x41df('0xf')];_0xf813f1(_0xf9b528);});});}function getRemoteTag(_0x15c659,_0x5ed628,_0x2997ec,_0x7b3cd0,_0x1cad75){return new Promise(function(_0x3e2aef,_0x31c1c3){var _0x156fde={'method':_0x41df('0xb'),'uri':_0x2997ec+_0x41df('0x44')+_0x41df('0x45')+_0x15c659+'&'+_0x7b3cd0,'auth':_0x5ed628,'json':!![]};return rp(_0x156fde)[_0x41df('0x18')](function(_0x3cdd64){if(_0x3cdd64[_0x41df('0xe')]['length']>0x0){var _0x21f682=_0x3cdd64[_0x41df('0xe')][0x0][_0x41df('0xf')];_0x3e2aef(_0x21f682);}else{return createRemoteTag(_0x15c659,_0x5ed628,_0x2997ec,_0x7b3cd0)[_0x41df('0x18')](function(_0x2704dc){_0x3e2aef(_0x2704dc);});}});});}function assignTagToIncident(_0x4bd62a,_0x3713be,_0x5690d8,_0x11cbca,_0x64d3a1){return new Promise(function(_0x30d58e,_0x3b803c){var _0x572a1b={'method':_0x41df('0x22'),'uri':_0x5690d8+_0x41df('0x46')+'?'+_0x64d3a1,'body':{'label':_0x4bd62a,'table':_0x41df('0x47'),'id_type':'Incident','table_key':_0x11cbca['ticketId'],'title':'Incident\x20-\x20'+_0x11cbca['ticketNumber'],'id_display':_0x11cbca[_0x41df('0x42')]},'auth':_0x3713be,'json':!![]};return rp(_0x572a1b)[_0x41df('0x18')](function(_0xadce35){_0x30d58e();})[_0x41df('0x1f')](function(){_0x30d58e();});});}function manageTags(_0x2689f7,_0x19edd6,_0x571976,_0x4cbc6d,_0x115cfe,_0x2ee4bb,_0x5f0e00){return new Promise(function(_0x112bdd,_0x49822f){var _0x306700=[];_0x19edd6['forEach'](function(_0x13b812){_0x306700[_0x41df('0x48')](getRemoteTag(_0x13b812,_0x571976,_0x4cbc6d,_0x2ee4bb,_0x5f0e00));});return Promise[_0x41df('0x49')](_0x306700)['then'](function(_0x351ab4){if(_0x351ab4['length']){logger[_0x41df('0x10')]('['+[_0x2689f7[_0x41df('0x11')]()]+_0x41df('0x4a'),_0x351ab4);var _0x2e679e=[];_0x351ab4[_0x41df('0x4b')](function(_0xb00fd7){_0x2e679e[_0x41df('0x48')](assignTagToIncident(_0xb00fd7,_0x571976,_0x4cbc6d,_0x115cfe,_0x2ee4bb));});return Promise[_0x41df('0x49')](_0x2e679e)[_0x41df('0x18')](function(){_0x112bdd();})[_0x41df('0x1f')](function(){_0x112bdd();});}else{_0x112bdd();}});});}function getTags(_0x57c4f7,_0x21636b,_0x5a6bbd,_0x56f751,_0x53575e,_0x136983){return function(_0x40914f){return new Promise(function(_0x263470,_0x37ca20){var _0x5c26c0=[];var _0x311271=_0x56f751['Tags'];if(_0x311271&&_0x311271[_0x41df('0x1a')]>0x0){_0x5c26c0=_[_0x41df('0x4c')](_0x311271,_0x41df('0x3a'));}if(_0x5c26c0[_0x41df('0x1a')]>0x0){return manageTags(_0x57c4f7,_0x5c26c0,_0x21636b,_0x5a6bbd,_0x40914f,_0x53575e,_0x136983)[_0x41df('0x18')](function(){_0x263470(_0x40914f);});}else{_0x263470(_0x40914f);}});};}function emit(_0x93d1ed,_0x191192,_0x254eeb){var _0x24d1e1=_0x41df('0x4d')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x41df('0x4e');var _0x590ce9={'uri':_0x93d1ed+_0x41df('0x4f')+_0x254eeb+_0x24d1e1};io['to'](util['format'](_0x41df('0x50'),_0x191192))[_0x41df('0x51')](_0x41df('0x52'),_0x590ce9);}exports['cs']=function(_0x225528,_0x5432ce,_0x396aa6,_0x4482c3,_0x69f1fc,_0x24679d,_0x834d7d,_0x5805b4){var _0x95ef07={};var _0x5cbc71={'user':_0x24679d[_0x41df('0x53')],'pass':_0x24679d[_0x41df('0x54')]};var _0x46d197=_0x41df('0x55');var _0x468dab=_0x41df('0x56');_0x24679d[_0x41df('0x57')]=intUtil['stripTrailingSlash'](_0x24679d['remoteUri']);_0x24679d['serverUrl']=intUtil[_0x41df('0x58')](_0x24679d[_0x41df('0x59')]);var _0x42dcd8=util[_0x41df('0x5a')]('%s/api/now/table/',_0x24679d[_0x41df('0x57')]);_0x95ef07[_0x41df('0x16')]=!_[_0x41df('0x5b')](_0x4482c3)?_0x4482c3['email']:null;_0x95ef07[_0x41df('0x1d')]=_0x24679d[_0x41df('0x5c')];_0x95ef07['endUserNumber']=_0x5805b4[_0x41df('0x37')]()==='outbound'?_0x5432ce[_0x41df('0x5d')]:_0x5432ce[_0x41df('0x5e')];_0x95ef07[_0x41df('0x5f')]=_0x5805b4===_0x41df('0x60')||_0x5805b4===_0x41df('0x61')?_0x41df('0x60'):_0x41df('0x3c');var _0x1e1d7d=util[_0x41df('0x5a')](_0x41df('0x62'),_0x24679d[_0x41df('0x59')],_0x5432ce[_0x41df('0x63')],md5(_0x5432ce['uniqueid']));if(_0x69f1fc&&_0x69f1fc[_0x41df('0x64')]){logger[_0x41df('0x10')](_0x41df('0x65'),'Recording\x20is\x20enabled!');_0x5432ce[_0x41df('0x66')]=_0x1e1d7d;}else if(_0x834d7d&&_0x834d7d[_0x41df('0x67')]&&_0x834d7d['recordingFormat']!==_0x41df('0x68')){logger[_0x41df('0x10')](_0x41df('0x69'),_0x41df('0x6a'));_0x5432ce[_0x41df('0x66')]=_0x1e1d7d;}else{_0x5432ce['recordingURL']='';}return getAdminUser(_0x5805b4,_0x5cbc71,_0x95ef07,_0x42dcd8,_0x468dab,_0x46d197)[_0x41df('0x18')](getUser(_0x5805b4,_0x5cbc71,_0x42dcd8,_0x468dab,_0x46d197))[_0x41df('0x18')](getEndUser(_0x5805b4,_0x5cbc71,_0x42dcd8,_0x468dab,_0x46d197))[_0x41df('0x18')](getTicket(_0x5805b4,_0x5cbc71,_0x42dcd8,_0x396aa6,_0x5432ce,_0x468dab))[_0x41df('0x18')](function(_0x8a96d1){logger[_0x41df('0x10')](util[_0x41df('0x5a')](_0x41df('0x6b'),_0x8a96d1[_0x41df('0x6c')]));logger[_0x41df('0x10')](util['format'](_0x41df('0x6d'),_0x5805b4));if(_0x5805b4!=='unmanaged'){logger[_0x41df('0x10')]('['+[_0x5805b4['toUpperCase']()]+']',_0x41df('0x6e'));emit(_0x24679d['remoteUri'],_0x4482c3[_0x41df('0x3a')],_0x8a96d1[_0x41df('0x6c')]);}})[_0x41df('0x1f')](function(_0x5c1f7b){logger[_0x41df('0x13')]('['+[_0x5805b4[_0x41df('0x11')]()]+_0x41df('0x6f'),util[_0x41df('0x70')](_0x5c1f7b,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9386=['string','picklist','type','nameField','customField','toLowerCase','toString','idField','content','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','Subjects','getString','Descriptions','Fields','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','info','toUpperCase','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes'];(function(_0x550a65,_0x442179){var _0x33271c=function(_0x1b7e55){while(--_0x1b7e55){_0x550a65['push'](_0x550a65['shift']());}};_0x33271c(++_0x442179);}(_0x9386,0x197));var _0x6938=function(_0x342d22,_0x8bec36){_0x342d22=_0x342d22-0x0;var _0x5c2868=_0x9386[_0x342d22];return _0x5c2868;};'use strict';var _=require(_0x6938('0x0'));var Promise=require(_0x6938('0x1'));var rp=require(_0x6938('0x2'));var util=require('util');var md5=require(_0x6938('0x3'));var Redis=require(_0x6938('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x6938('0x5'))(_0x6938('0x6'));config[_0x6938('0x7')]=_[_0x6938('0x8')](config[_0x6938('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6938('0x9'))(new Redis(config[_0x6938('0x7')]));function getAdminUser(_0x5b66eb,_0x3f5232,_0x1b36bb,_0x27b91d,_0x3d197a,_0x137b1e){return new Promise(function(_0x3fc606,_0x5d484e){var _0x7a321a={'method':_0x6938('0xa'),'uri':_0x27b91d+_0x6938('0xb')+'&'+_0x3d197a+'&'+_0x137b1e,'auth':_0x3f5232,'json':!![]};return rp(_0x7a321a)[_0x6938('0xc')](function(_0x4d1664){if(_0x4d1664['result'][_0x6938('0xd')]>0x0){_0x1b36bb[_0x6938('0xe')]=_0x4d1664[_0x6938('0xf')][0x0][_0x6938('0x10')];}logger[_0x6938('0x11')]('['+[_0x5b66eb[_0x6938('0x12')]()]+'],\x20getAdminUser\x20crm',_0x1b36bb);_0x3fc606(_0x1b36bb);})[_0x6938('0x13')](function(_0x1f2051){logger[_0x6938('0x14')]('['+[_0x5b66eb[_0x6938('0x12')]()]+']',_0x1f2051[_0x6938('0x15')]);_0x5d484e(_0x1f2051['message']);});});}function getUser(_0x5981bc,_0x482faf,_0x4e261f,_0x250854,_0x25af91){return function(_0x4ab801){logger[_0x6938('0x11')]('['+[_0x5981bc['toUpperCase']()]+_0x6938('0x16'),_0x4ab801);return new Promise(function(_0x3b7216,_0x17fb02){if(intUtil[_0x6938('0x17')](_0x4ab801[_0x6938('0x18')])){var _0x23b7d3={'method':'GET','uri':_0x4e261f+'sys_user?sysparm_query=email%3D'+_0x4ab801['userEmail']+'&'+_0x250854+'&'+_0x25af91,'auth':_0x482faf,'json':!![]};logger['info']('['+[_0x5981bc[_0x6938('0x12')]()]+_0x6938('0x19'),_0x23b7d3);return rp(_0x23b7d3)[_0x6938('0xc')](function(_0x27c244){logger[_0x6938('0x11')]('['+[_0x5981bc[_0x6938('0x12')]()]+'],\x20getUser\x20entity',_0x27c244);if(_0x27c244['result'][_0x6938('0xd')]>0x0&&String(_0x27c244[_0x6938('0xf')][0x0][_0x6938('0x1a')])===_0x6938('0x1b')){_0x4ab801[_0x6938('0x1c')]=_0x27c244[_0x6938('0xf')][0x0][_0x6938('0x10')];}else{_0x4ab801[_0x6938('0x1c')]=_0x4ab801['adminId'];_0x4ab801['userEmail']=_0x4ab801[_0x6938('0x1d')];}logger[_0x6938('0x11')]('['+[_0x5981bc[_0x6938('0x12')]()]+_0x6938('0x1e'),_0x4ab801);_0x3b7216(_0x4ab801);})[_0x6938('0x13')](function(_0x566897){logger[_0x6938('0x14')]('['+[_0x5981bc[_0x6938('0x12')]()]+']',_0x566897[_0x6938('0x15')]);_0x17fb02(_0x566897['message']);});}else{logger[_0x6938('0x11')]('['+[_0x5981bc['toUpperCase']()]+_0x6938('0x1f'));_0x4ab801[_0x6938('0x1c')]=_0x4ab801[_0x6938('0xe')];_0x4ab801[_0x6938('0x18')]=_0x4ab801[_0x6938('0x1d')];_0x3b7216(_0x4ab801);}});};}function createEndUser(_0x3868f9,_0x200dd1,_0x26ed9e,_0x15e9a1,_0x18f779){logger['info']('['+[_0x3868f9[_0x6938('0x12')]()]+_0x6938('0x20'),_0x26ed9e);return new Promise(function(_0x1aa09b,_0x4d9f1e){var _0x5be139={'method':_0x6938('0x21'),'uri':_0x15e9a1+_0x6938('0x22')+_0x18f779,'body':{'user_name':_0x26ed9e[_0x6938('0x23')],'roles':_0x6938('0x24'),'first_name':_0x26ed9e[_0x6938('0x23')],'active':'true','date_format':_0x6938('0x25'),'phone':_0x26ed9e['endUserNumber']},'auth':_0x200dd1,'json':!![]};return rp(_0x5be139)[_0x6938('0xc')](function(_0x2d7884){logger[_0x6938('0x11')]('['+[_0x3868f9[_0x6938('0x12')]()]+_0x6938('0x26'),_0x2d7884[_0x6938('0xf')]);_0x26ed9e[_0x6938('0x27')]=_0x2d7884[_0x6938('0xf')][_0x6938('0x10')];_0x1aa09b(_0x26ed9e);})['catch'](function(_0x4d29e9){logger['error']('['+[_0x3868f9['toUpperCase']()]+']',_0x4d29e9['message']);_0x4d9f1e(_0x4d29e9['message']);});});}function getEndUser(_0x5e37f2,_0x422952,_0x3640d7,_0x5a02d6,_0x4b3d24){return function(_0x38c60c){logger[_0x6938('0x11')]('['+[_0x5e37f2['toUpperCase']()]+_0x6938('0x28'),_0x38c60c);return new Promise(function(_0x49e704,_0x52139d){var _0x3b395e={'method':_0x6938('0xa'),'uri':_0x3640d7+_0x6938('0x29')+_0x38c60c['endUserNumber']+'&'+_0x5a02d6+'&'+_0x4b3d24,'auth':_0x422952,'json':!![]};return rp(_0x3b395e)[_0x6938('0xc')](function(_0x899c64){if(_0x899c64[_0x6938('0xf')][_0x6938('0xd')]>0x0){_0x38c60c[_0x6938('0x27')]=_0x899c64[_0x6938('0xf')][0x0]['sys_id'];logger[_0x6938('0x11')]('['+[_0x5e37f2[_0x6938('0x12')]()]+_0x6938('0x2a'),_0x38c60c);_0x49e704(_0x38c60c);}else{return createEndUser(_0x5e37f2,_0x422952,_0x38c60c,_0x3640d7,_0x5a02d6)[_0x6938('0xc')](function(_0x49eda8){logger[_0x6938('0x11')]('['+[_0x5e37f2['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x49eda8);_0x49e704(_0x49eda8);});}})['catch'](function(_0x1e7f1c){logger[_0x6938('0x14')]('['+[_0x5e37f2['toUpperCase']()]+']',_0x1e7f1c[_0x6938('0x15')]);_0x52139d(_0x1e7f1c[_0x6938('0x15')]);});});};}function getCustomFields(_0x332bde,_0x1f4021){var _0x5a437f={};if(_0x332bde[_0x6938('0xd')]>0x0){_[_0x6938('0x2b')](_0x332bde,function(_0x28df91){if(_[_0x6938('0x2c')]([_0x6938('0x2d'),_0x6938('0x2e')],_0x28df91[_0x6938('0x2f')])&&_0x28df91[_0x6938('0x30')]&&!_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x30')][_0x6938('0x32')]()]=_0x28df91['content'][_0x6938('0x33')]();}else if(_['includes']([_0x6938('0x2d'),_0x6938('0x2e')],_0x28df91[_0x6938('0x2f')])&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')]['toLowerCase']()]=_0x28df91[_0x6938('0x35')][_0x6938('0x33')]();}else if(_0x28df91['type']===_0x6938('0x36')&&_0x28df91[_0x6938('0x37')]&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')][_0x6938('0x32')]()]=_0x1f4021[_0x28df91[_0x6938('0x37')]][_0x6938('0x33')]();}else if(_0x28df91[_0x6938('0x2f')]==='customVariable'&&_0x28df91[_0x6938('0x38')]&&_0x28df91[_0x6938('0x38')][_0x6938('0x39')]&&_0x28df91[_0x6938('0x34')]&&_0x28df91[_0x6938('0x31')]){_0x5a437f[_0x28df91[_0x6938('0x34')][_0x6938('0x32')]()]=_0x1f4021[_0x28df91[_0x6938('0x38')][_0x6938('0x39')]['toLowerCase']()]['toString']();}});}return _0x5a437f;}function getTicket(_0x103901,_0x2f4d32,_0x58e39b,_0x775ce9,_0x17bd00,_0x2902a7){return function(_0x2d57f8){logger[_0x6938('0x11')]('['+[_0x103901['toUpperCase']()]+_0x6938('0x3a'),_0x2d57f8);return new Promise(function(_0x169c13,_0x522f21){var _0x1c5e39=_0x103901[_0x6938('0x32')]()==='outbound'?_0x2d57f8[_0x6938('0x1c')]:_0x2d57f8[_0x6938('0x27')];var _0x50281a={'method':'POST','uri':_0x58e39b+'incident'+'?'+_0x2902a7,'body':Object['assign']({},{'active':_0x6938('0x1b'),'caller_id':_0x1c5e39,'assigned_to':_0x2d57f8[_0x6938('0x1c')],'short_description':intUtil['getString'](_0x775ce9[_0x6938('0x3b')],_0x17bd00,'\x20'),'description':intUtil[_0x6938('0x3c')](_0x775ce9[_0x6938('0x3d')],_0x17bd00,'\x0a')},getCustomFields(_0x775ce9[_0x6938('0x3e')],_0x17bd00)),'auth':_0x2f4d32,'json':!![]};return rp(_0x50281a)[_0x6938('0xc')](function(_0x24a16a){logger['info']('['+[_0x103901[_0x6938('0x12')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x24a16a[_0x6938('0xf')]);_0x2d57f8[_0x6938('0x3f')]=_0x24a16a[_0x6938('0xf')][_0x6938('0x10')];_0x2d57f8[_0x6938('0x40')]=_0x24a16a[_0x6938('0xf')][_0x6938('0x41')];logger[_0x6938('0x11')]('['+[_0x103901[_0x6938('0x12')]()]+_0x6938('0x42'),_0x2d57f8);_0x169c13(_0x2d57f8);})[_0x6938('0x13')](function(_0x294b95){logger['error']('['+[_0x103901[_0x6938('0x12')]()]+']',_0x294b95[_0x6938('0x15')]);_0x522f21(_0x294b95[_0x6938('0x15')]);});});};}function createRemoteTag(_0x45c652,_0x41e6a0,_0x38e356,_0x53d4e2){return new Promise(function(_0x1a76bf,_0x56ab0c){var _0x15d16c={'method':_0x6938('0x21'),'uri':_0x38e356+_0x6938('0x43')+'?'+_0x53d4e2,'body':{'short_description':_0x45c652,'global':!![],'active':!![],'name':_0x45c652},'auth':_0x41e6a0,'json':!![]};return rp(_0x15d16c)[_0x6938('0xc')](function(_0x1d1d1b){var _0xe77d3e=_0x1d1d1b[_0x6938('0xf')][_0x6938('0x10')];_0x1a76bf(_0xe77d3e);});});}function getRemoteTag(_0x226768,_0x334212,_0x467baf,_0x56eb83,_0x318c74){return new Promise(function(_0x18a029,_0x29fc68){var _0x27165e={'method':_0x6938('0xa'),'uri':_0x467baf+_0x6938('0x43')+_0x6938('0x44')+_0x226768+'&'+_0x56eb83,'auth':_0x334212,'json':!![]};return rp(_0x27165e)['then'](function(_0x4d7ed2){if(_0x4d7ed2[_0x6938('0xf')][_0x6938('0xd')]>0x0){var _0xab310d=_0x4d7ed2[_0x6938('0xf')][0x0][_0x6938('0x10')];_0x18a029(_0xab310d);}else{return createRemoteTag(_0x226768,_0x334212,_0x467baf,_0x56eb83)['then'](function(_0x549f5e){_0x18a029(_0x549f5e);});}});});}function assignTagToIncident(_0x39618f,_0x114f32,_0x59a13e,_0x5d4b84,_0x3a59dd){return new Promise(function(_0xbe361,_0xcc44b6){var _0xb7e32d={'method':_0x6938('0x21'),'uri':_0x59a13e+_0x6938('0x45')+'?'+_0x3a59dd,'body':{'label':_0x39618f,'table':_0x6938('0x46'),'id_type':_0x6938('0x47'),'table_key':_0x5d4b84['ticketId'],'title':'Incident\x20-\x20'+_0x5d4b84[_0x6938('0x40')],'id_display':_0x5d4b84[_0x6938('0x40')]},'auth':_0x114f32,'json':!![]};return rp(_0xb7e32d)[_0x6938('0xc')](function(_0x4e2df7){_0xbe361();})['catch'](function(){_0xbe361();});});}function manageTags(_0x6422f9,_0x278986,_0x5bc1dd,_0x2081df,_0x49cf88,_0x277e81,_0x5372c4){return new Promise(function(_0x51e3f,_0x377b4c){var _0x1d9c06=[];_0x278986['forEach'](function(_0x24c888){_0x1d9c06['push'](getRemoteTag(_0x24c888,_0x5bc1dd,_0x2081df,_0x277e81,_0x5372c4));});return Promise[_0x6938('0x48')](_0x1d9c06)['then'](function(_0x2a3173){if(_0x2a3173['length']){logger[_0x6938('0x11')]('['+[_0x6422f9[_0x6938('0x12')]()]+_0x6938('0x49'),_0x2a3173);var _0x16bb23=[];_0x2a3173['forEach'](function(_0x358d78){_0x16bb23[_0x6938('0x4a')](assignTagToIncident(_0x358d78,_0x5bc1dd,_0x2081df,_0x49cf88,_0x277e81));});return Promise[_0x6938('0x48')](_0x16bb23)[_0x6938('0xc')](function(){_0x51e3f();})[_0x6938('0x13')](function(){_0x51e3f();});}else{_0x51e3f();}});});}function getTags(_0x3a3aa2,_0x5b9691,_0x4efb9e,_0xaff3bb,_0xafeddd,_0x23c1d0){return function(_0x3c1a62){return new Promise(function(_0x5d6a1e,_0x104759){var _0x3a8403=[];var _0x1b8a34=_0xaff3bb[_0x6938('0x4b')];if(_0x1b8a34&&_0x1b8a34['length']>0x0){_0x3a8403=_[_0x6938('0x4c')](_0x1b8a34,'name');}if(_0x3a8403['length']>0x0){return manageTags(_0x3a3aa2,_0x3a8403,_0x5b9691,_0x4efb9e,_0x3c1a62,_0xafeddd,_0x23c1d0)[_0x6938('0xc')](function(){_0x5d6a1e(_0x3c1a62);});}else{_0x5d6a1e(_0x3c1a62);}});};}function emit(_0x5b213e,_0x41e740,_0x4df9ff){var _0x52d6dd=_0x6938('0x4d')+_0x6938('0x4e')+_0x6938('0x4f')+'%255EORDERBYDESCnumber';var _0x51517b={'uri':_0x5b213e+_0x6938('0x50')+_0x4df9ff+_0x52d6dd};io['to'](util[_0x6938('0x51')](_0x6938('0x52'),_0x41e740))[_0x6938('0x53')](_0x6938('0x54'),_0x51517b);}exports['cs']=function(_0x90f291,_0x365819,_0x531975,_0x17f338,_0x45d3a8,_0x3deb39,_0x4054fa,_0xbfce2b){var _0x17b89f={};var _0x541939={'user':_0x3deb39[_0x6938('0x55')],'pass':_0x3deb39[_0x6938('0x56')]};var _0x21b9e7=_0x6938('0x57');var _0x4d6d58=_0x6938('0x58');_0x3deb39[_0x6938('0x59')]=intUtil[_0x6938('0x5a')](_0x3deb39[_0x6938('0x59')]);_0x3deb39[_0x6938('0x5b')]=intUtil[_0x6938('0x5a')](_0x3deb39[_0x6938('0x5b')]);var _0x1ef7ad=util[_0x6938('0x51')](_0x6938('0x5c'),_0x3deb39[_0x6938('0x59')]);_0x17b89f[_0x6938('0x18')]=!_['isNil'](_0x17f338)?_0x17f338[_0x6938('0x5d')]:null;_0x17b89f[_0x6938('0x1d')]=_0x3deb39[_0x6938('0x5d')];_0x17b89f[_0x6938('0x23')]=_0xbfce2b[_0x6938('0x32')]()===_0x6938('0x5e')?_0x365819[_0x6938('0x5f')]:_0x365819[_0x6938('0x60')];_0x17b89f[_0x6938('0x61')]=_0xbfce2b===_0x6938('0x62')||_0xbfce2b==='unmanaged'?_0x6938('0x62'):_0x6938('0x5e');var _0x3c75d7=util[_0x6938('0x51')](_0x6938('0x63'),_0x3deb39[_0x6938('0x5b')],_0x365819['uniqueid'],md5(_0x365819['uniqueid']));if(_0x45d3a8&&_0x45d3a8[_0x6938('0x64')]){logger[_0x6938('0x11')](_0x6938('0x65'),_0x6938('0x66'));_0x365819['recordingURL']=_0x3c75d7;}else if(_0x4054fa&&_0x4054fa[_0x6938('0x67')]&&_0x4054fa[_0x6938('0x67')]!==_0x6938('0x68')){logger[_0x6938('0x11')](_0x6938('0x69'),_0x6938('0x66'));_0x365819['recordingURL']=_0x3c75d7;}else{_0x365819[_0x6938('0x6a')]='';}return getAdminUser(_0xbfce2b,_0x541939,_0x17b89f,_0x1ef7ad,_0x4d6d58,_0x21b9e7)[_0x6938('0xc')](getUser(_0xbfce2b,_0x541939,_0x1ef7ad,_0x4d6d58,_0x21b9e7))[_0x6938('0xc')](getEndUser(_0xbfce2b,_0x541939,_0x1ef7ad,_0x4d6d58,_0x21b9e7))[_0x6938('0xc')](getTicket(_0xbfce2b,_0x541939,_0x1ef7ad,_0x531975,_0x365819,_0x4d6d58))[_0x6938('0xc')](function(_0x39194e){logger[_0x6938('0x11')](util['format'](_0x6938('0x6b'),_0x39194e[_0x6938('0x3f')]));logger[_0x6938('0x11')](util[_0x6938('0x51')](_0x6938('0x6c'),_0xbfce2b));if(_0xbfce2b!==_0x6938('0x6d')){logger[_0x6938('0x11')]('['+[_0xbfce2b[_0x6938('0x12')]()]+']',_0x6938('0x6e'));emit(_0x3deb39['remoteUri'],_0x17f338[_0x6938('0x39')],_0x39194e['ticketId']);}})[_0x6938('0x13')](function(_0x91f575){logger[_0x6938('0x14')]('['+[_0xbfce2b['toUpperCase']()]+_0x6938('0x6f'),util[_0x6938('0x70')](_0x91f575,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 3b1ea8a..80df122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50d=['get_entry_list','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','Caller\x20-\x20%s','first_name','debug','[HTTP]','merge','type','string','nameField','toLowerCase','content','idField','custom_fields','variable','customField','customVariable','Variable','login','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','stripTrailingSlash','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','users','contacts','charAt','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','version','%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','lastevent','lodash','request-promise','bluebird','md5','util','ioredis','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','date_start','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','forEach','variableName','push','JSON','stringify','format','Basic\x20%s','apiKey','toString','get_server_info','isNil','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','name_value_list','info','Agent\x20found!','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id'];(function(_0x13336e,_0x189981){var _0x314245=function(_0x7b6d8b){while(--_0x7b6d8b){_0x13336e['push'](_0x13336e['shift']());}};_0x314245(++_0x189981);}(_0xe50d,0x127));var _0xde50=function(_0x500e6d,_0x4783e6){_0x500e6d=_0x500e6d-0x0;var _0x5289c6=_0xe50d[_0x500e6d];return _0x5289c6;};'use strict';var _=require(_0xde50('0x0'));var rp=require(_0xde50('0x1'));var BPromise=require(_0xde50('0x2'));var md5=require(_0xde50('0x3'));var util=require(_0xde50('0x4'));var Redis=require(_0xde50('0x5'));var intUtil=require('./util');var config=require(_0xde50('0x6'));var logger=require(_0xde50('0x7'))('sugarcrm');config[_0xde50('0x8')]=_['defaults'](config['redis'],{'host':_0xde50('0x9'),'port':0x18eb});var io=require(_0xde50('0xa'))(new Redis(config[_0xde50('0x8')]));var def={'method':_0xde50('0xb'),'json':!![]};function emit(_0x396eb0,_0x26ef19,_0x55dd0a){io['to'](_0x396eb0)[_0xde50('0xc')](_0x26ef19,_0x55dd0a);}function getTicket(_0x566539,_0x146b97,_0x4be293,_0xece31d,_0x310125,_0x4d3f74,_0x47087f,_0x5d104c){logger['info'](_0xde50('0xd'));var _0x59c40d=new Date();var _0x149802=[{'name':_0xde50('0xe'),'value':intUtil[_0xde50('0xf')](_0xece31d[_0xde50('0x10')],_0x310125,'\x20')},{'name':'assigned_user_id','value':_0x146b97['id']},{'name':_0xde50('0x11'),'value':_0x146b97['id']},{'name':_0xde50('0x12'),'value':intUtil[_0xde50('0xf')](_0xece31d['Descriptions'],_0x310125,'\x0a')},{'name':_0xde50('0x13'),'value':_0x59c40d['toISOString']()['slice'](0x0,0x13)[_0xde50('0x14')]('T','\x20')},{'name':_0xde50('0x15'),'value':'0'},{'name':_0xde50('0x16'),'value':'15'},{'name':_0xde50('0x17'),'value':_0x4be293['id']},{'name':_0xde50('0x18'),'value':'Contacts'},{'name':_0xde50('0x19'),'value':_0x4be293[_0xde50('0xe')]},{'name':_0xde50('0x1a'),'value':_0x5d104c}];if(_0x4d3f74['length']){_[_0xde50('0x1b')](_0x4d3f74,function(_0xfa044e){if(_0x310125[_0xfa044e[_0xde50('0x1c')]]){_0x149802[_0xde50('0x1d')]({'name':_0xfa044e['idField'],'value':_0x310125[_0xfa044e[_0xde50('0x1c')]]});}});}return request({'form':{'method':'set_entry','input_type':_0xde50('0x1e'),'response_type':_0xde50('0x1e'),'rest_data':JSON[_0xde50('0x1f')]({'session':_0x47087f['id'],'module_name':'Calls','name_value_list':_0x149802})}});}function getAuth(_0x183bb3){return util[_0xde50('0x20')](_0xde50('0x21'),new Buffer(_0x183bb3[_0xde50('0x22')]+':X')[_0xde50('0x23')]('base64'));}function getServerInfo(_0x5ddb0b){return request({'form':{'method':_0xde50('0x24'),'input_type':_0xde50('0x1e'),'response_type':_0xde50('0x1e'),'rest_data':JSON[_0xde50('0x1f')]({'session':_0x5ddb0b['id']})}});}function getUser(_0x221741,_0x70027b,_0x3833f3){if(!_[_0xde50('0x25')](_0x70027b)){logger['info'](_0xde50('0x26'),_0x70027b);return request({'form':{'method':'get_entry_list','input_type':_0xde50('0x1e'),'response_type':'JSON','rest_data':JSON[_0xde50('0x1f')]({'session':_0x3833f3['id'],'module_name':_0xde50('0x27'),'query':util[_0xde50('0x20')](_0xde50('0x28'),_0x70027b),'order_by':'','offset':'0','select_fields':['id',_0xde50('0xe'),_0xde50('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xde50('0x2a')](function(_0x292c7f){if(_0x292c7f[_0xde50('0x2b')][_0xde50('0x2c')]){var _0x3854df=_['find'](_0x292c7f[_0xde50('0x2b')],function(_0x6dc718){return _0x6dc718[_0xde50('0x2d')][_0xde50('0x29')]['value']===_0x70027b;});if(_0x3854df){logger[_0xde50('0x2e')](_0xde50('0x2f'));return BPromise['resolve']({'id':_0x3854df['name_value_list']['id'][_0xde50('0x30')],'name':_0x3854df['name_value_list'][_0xde50('0xe')][_0xde50('0x30')]});}}logger[_0xde50('0x2e')](_0xde50('0x31'));return BPromise[_0xde50('0x32')]({'id':_0x3833f3[_0xde50('0x2d')]['user_id'][_0xde50('0x30')],'name':_0x3833f3[_0xde50('0x2d')][_0xde50('0x29')][_0xde50('0x30')]});});}else{logger['info'](_0xde50('0x33'));return BPromise['resolve']({'id':_0x3833f3[_0xde50('0x2d')][_0xde50('0x34')]['value'],'name':_0x3833f3['name_value_list'][_0xde50('0x29')][_0xde50('0x30')]});}}function getEndUser(_0x4aee89,_0x22808a,_0x29af28,_0x3c1d60){logger[_0xde50('0x2e')]('Searching\x20enduser\x20with\x20phone',_0x29af28);return request({'form':{'method':_0xde50('0x35'),'input_type':'JSON','response_type':_0xde50('0x1e'),'rest_data':JSON[_0xde50('0x1f')]({'session':_0x3c1d60['id'],'module_name':_0xde50('0x36'),'query':util['format'](_0xde50('0x37'),_0x29af28),'order_by':'','offset':'0','select_fields':['id','name',_0xde50('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x5b3c2c){if(_0x5b3c2c[_0xde50('0x2b')][_0xde50('0x2c')]){var _0x21f17f=_['find'](_0x5b3c2c['entry_list'],function(_0x3b59d5){return _0x3b59d5[_0xde50('0x2d')][_0xde50('0x38')][_0xde50('0x30')]===_0x29af28;});if(_0x21f17f){logger[_0xde50('0x2e')](_0xde50('0x39'));return BPromise[_0xde50('0x32')]({'id':_0x21f17f[_0xde50('0x2d')]['id']['value'],'name':_0x21f17f['name_value_list'][_0xde50('0xe')][_0xde50('0x30')],'phone':_0x21f17f[_0xde50('0x2d')]['phone_home'][_0xde50('0x30')]});}}else{logger['info'](_0xde50('0x3a'));return request({'form':{'method':_0xde50('0x3b'),'input_type':_0xde50('0x1e'),'response_type':_0xde50('0x1e'),'rest_data':JSON['stringify']({'session':_0x3c1d60['id'],'module_name':_0xde50('0x36'),'name_value_list':[{'name':'first_name','value':_0x22808a!=='<unknown>'?_0x22808a:util['format'](_0xde50('0x3c'),_0x29af28)},{'name':'phone_home','value':_0x29af28}]})}})[_0xde50('0x2a')](function(_0x536ee6){logger[_0xde50('0x2e')]('Enduser\x20created.');return BPromise[_0xde50('0x32')]({'id':_0x536ee6['id'],'name':_0x536ee6[_0xde50('0x2b')][_0xde50('0x3d')][_0xde50('0x30')],'phone':_0x536ee6['entry_list'][_0xde50('0x38')][_0xde50('0x30')]});});}});}function request(_0x190cf2){logger[_0xde50('0x3e')](_0xde50('0x3f'),JSON[_0xde50('0x1f')](_0x190cf2));return rp(_[_0xde50('0x40')](def,_0x190cf2));}function getTags(_0x51eab8,_0x10fc64){var _0x386656=[];if(_0x51eab8&&_0x51eab8[_0xde50('0x2c')]>0x0){_0x386656=_['map'](_0x51eab8,_0x10fc64);}return _0x386656;}function getCustomFields(_0x458932,_0x346ab7){var _0x3fbe84=[];var _0x5057ca={'custom_fields':[]};if(_0x458932[_0xde50('0x2c')]>0x0){_[_0xde50('0x1b')](_0x458932,function(_0x227666){if(_0x227666[_0xde50('0x41')]===_0xde50('0x42')&&_0x227666[_0xde50('0x43')]&&!_0x227666['customField']){_0x5057ca[_0x227666[_0xde50('0x43')][_0xde50('0x44')]()]=_0x227666[_0xde50('0x45')][_0xde50('0x23')]();}else if(_0x227666[_0xde50('0x41')]===_0xde50('0x42')&&_0x227666[_0xde50('0x46')]&&_0x227666['customField']){_0x5057ca[_0xde50('0x47')][_0xde50('0x1d')]({'id':_0x227666['idField'],'value':_0x227666[_0xde50('0x45')][_0xde50('0x23')]()});}else if(_0x227666[_0xde50('0x41')]===_0xde50('0x48')&&_0x227666[_0xde50('0x1c')]&&_0x227666[_0xde50('0x46')]&&_0x227666[_0xde50('0x49')]){_0x346ab7[_0x227666['variableName']]&&_0x5057ca[_0xde50('0x47')][_0xde50('0x1d')]({'id':_0x227666[_0xde50('0x46')],'value':_0x346ab7[_0x227666[_0xde50('0x1c')]][_0xde50('0x23')]()});}else if(_0x227666[_0xde50('0x41')]===_0xde50('0x4a')&&_0x227666[_0xde50('0x4b')]&&_0x227666[_0xde50('0x4b')][_0xde50('0xe')]&&_0x227666['idField']&&_0x227666[_0xde50('0x49')]){_0x346ab7[_0x227666[_0xde50('0x4b')][_0xde50('0xe')][_0xde50('0x44')]()]&&_0x5057ca[_0xde50('0x47')][_0xde50('0x1d')]({'id':_0x227666[_0xde50('0x46')],'value':_0x346ab7[_0x227666['Variable'][_0xde50('0xe')][_0xde50('0x44')]()][_0xde50('0x23')]()});}});}return _0x5057ca;}function getConnection(_0x3d8076){return request({'method':_0xde50('0xb'),'form':{'method':_0xde50('0x4c'),'input_type':_0xde50('0x1e'),'response_type':_0xde50('0x1e'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x3d8076['username'],'password':_0x3d8076['password'],'encryption':_0xde50('0x4d')},'application':'xCALLY\x20Motion\x20integration'})}})[_0xde50('0x2a')](function(_0x31c7f0){var _0x412b36=_0x31c7f0;if(_0x412b36['id']){def[_0xde50('0x4e')]=_0x412b36['id'];return BPromise[_0xde50('0x32')](_0x412b36);}else{throw new Error(util['format'](_0xde50('0x4f'),_0x3d8076['id']));}});}function setRelationship(_0x46a04b,_0x3d85ad,_0x2cb0f6,_0x47c03b){return request({'form':{'method':'set_relationship','input_type':_0xde50('0x1e'),'response_type':_0xde50('0x1e'),'rest_data':JSON[_0xde50('0x1f')]({'session':_0x46a04b['id'],'module_name':'Calls','module_id':_0x2cb0f6['id'],'link_field_name':_0x47c03b,'related_ids':[_0x3d85ad['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x37ecdc,_0x1edc63,_0x446713,_0x31139e,_0x34f964,_0x1997a7){var _0x3f83cc,_0x460869,_0x3093f5,_0x18d94a;_0x1997a7['remoteUri']=intUtil[_0xde50('0x50')](_0x1997a7[_0xde50('0x51')]);_0x1997a7[_0xde50('0x52')]=intUtil[_0xde50('0x50')](_0x1997a7[_0xde50('0x52')]);def[_0xde50('0x53')]=util['format'](_0xde50('0x54'),_0x1997a7[_0xde50('0x51')]);if(_0x34f964&&_0x34f964[_0xde50('0x55')]){logger[_0xde50('0x2e')](_0xde50('0x56'),_0xde50('0x57'));_0x1edc63['recordingURL']=util[_0xde50('0x20')](_0xde50('0x58'),_0x1997a7['serverUrl'],_0x1edc63[_0xde50('0x59')],md5(_0x1edc63[_0xde50('0x59')]));}else{_0x1edc63[_0xde50('0x5a')]='';}return getConnection(_0x1997a7)[_0xde50('0x2a')](function(_0x356abb){_0x18d94a=_0x356abb;return getUser(_0x1997a7,_0x31139e[_0xde50('0xe')],_0x18d94a);})[_0xde50('0x2a')](function(_0x30200e){_0x3f83cc=_0x30200e;logger[_0xde50('0x2e')](_0xde50('0x5b'),_0x3f83cc['id']);return getEndUser(_0x1997a7,_0x1edc63[_0xde50('0x5c')],_0x1edc63[_0xde50('0x5d')],_0x18d94a);})[_0xde50('0x2a')](function(_0x5eacc7){_0x460869=_0x5eacc7;logger[_0xde50('0x2e')](_0xde50('0x5e'),_0x460869['id']);return getTicket(_0x1997a7,_0x3f83cc,_0x460869,_0x446713,_0x1edc63,_0x446713[_0xde50('0x5f')],_0x18d94a,_0xde50('0x60'));})[_0xde50('0x2a')](function(_0x39fd59){_0x3093f5=_0x39fd59;logger[_0xde50('0x2e')](_0xde50('0x61'));logger[_0xde50('0x2e')]('The\x20Ticket\x20ID\x20is:',_0x3093f5['id']);return setRelationship(_0x18d94a,_0x3f83cc,_0x3093f5,_0xde50('0x62'));})[_0xde50('0x2a')](function(){return setRelationship(_0x18d94a,_0x460869,_0x3093f5,_0xde50('0x63'));})['then'](function(){return getServerInfo(_0x18d94a);})[_0xde50('0x2a')](function(_0x5229cc){var _0x6b9cf=parseInt(_0x5229cc['version'][_0xde50('0x64')](0x0));var _0x1dcc93=util[_0xde50('0x20')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x1997a7[_0xde50('0x51')],_0x3093f5['id']);if(_0x6b9cf>0x6){_0x1dcc93=util[_0xde50('0x20')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x1997a7[_0xde50('0x51')],_0x3093f5['id']);}logger[_0xde50('0x2e')](_0xde50('0x56'),_0xde50('0x65'));emit(util[_0xde50('0x20')](_0xde50('0x66'),_0x31139e['name']),'trigger:browser:url',{'uri':_0x1dcc93});})[_0xde50('0x67')](function(_0x4a6bf2){logger[_0xde50('0x68')](_0xde50('0x56'),JSON['stringify'](_0x4a6bf2));});};exports[_0xde50('0x69')]=function(_0x5d5df8,_0x2c88c1,_0x4032fc,_0x3b62da,_0x25e0f3,_0x3e3fc5,_0x235c1e){var _0x1a1e17,_0x4e4249,_0x44c2d2,_0x2639f1;_0x3e3fc5['remoteUri']=intUtil[_0xde50('0x50')](_0x3e3fc5[_0xde50('0x51')]);_0x3e3fc5[_0xde50('0x52')]=intUtil[_0xde50('0x50')](_0x3e3fc5[_0xde50('0x52')]);def[_0xde50('0x53')]=util[_0xde50('0x20')](_0xde50('0x54'),_0x3e3fc5[_0xde50('0x51')]);if(_0x235c1e&&_0x235c1e[_0xde50('0x6a')]&&_0x235c1e[_0xde50('0x6a')]!==_0xde50('0x6b')){logger[_0xde50('0x2e')](_0xde50('0x6c'),_0xde50('0x57'));_0x2c88c1[_0xde50('0x5a')]=util[_0xde50('0x20')](_0xde50('0x58'),_0x3e3fc5[_0xde50('0x52')],_0x2c88c1[_0xde50('0x59')],md5(_0x2c88c1[_0xde50('0x59')]));}return getConnection(_0x3e3fc5)['then'](function(_0x1f0cdd){_0x2639f1=_0x1f0cdd;return getUser(_0x3e3fc5,_0x3b62da[_0xde50('0xe')],_0x2639f1);})[_0xde50('0x2a')](function(_0x538e3a){_0x1a1e17=_0x538e3a;logger[_0xde50('0x2e')](_0xde50('0x5b'),_0x1a1e17['id']);return getEndUser(_0x3e3fc5,_0x2c88c1['destcalleridname'],_0x2c88c1[_0xde50('0x6d')],_0x2639f1);})[_0xde50('0x2a')](function(_0x45880f){_0x4e4249=_0x45880f;logger[_0xde50('0x2e')]('The\x20Enduser\x20ID\x20is:',_0x4e4249['id']);return getTicket(_0x3e3fc5,_0x1a1e17,_0x4e4249,_0x4032fc,_0x2c88c1,_0x4032fc[_0xde50('0x5f')],_0x2639f1,_0xde50('0x6e'));})[_0xde50('0x2a')](function(_0x4c407b){_0x44c2d2=_0x4c407b;logger[_0xde50('0x2e')](_0xde50('0x61'));logger[_0xde50('0x2e')](_0xde50('0x6f'),_0x44c2d2['id']);return setRelationship(_0x2639f1,_0x1a1e17,_0x44c2d2,'users');})[_0xde50('0x2a')](function(){return setRelationship(_0x2639f1,_0x4e4249,_0x44c2d2,_0xde50('0x63'));})[_0xde50('0x2a')](function(){return getServerInfo(_0x2639f1);})[_0xde50('0x2a')](function(_0x5ef748){var _0x402755=parseInt(_0x5ef748[_0xde50('0x70')][_0xde50('0x64')](0x0));var _0x437eae=util['format'](_0xde50('0x71'),_0x3e3fc5['remoteUri'],_0x44c2d2['id']);if(_0x402755>0x6){_0x437eae=util[_0xde50('0x20')](_0xde50('0x72'),_0x3e3fc5[_0xde50('0x51')],_0x44c2d2['id']);}logger[_0xde50('0x2e')](_0xde50('0x6c'),_0xde50('0x65'));emit(util[_0xde50('0x20')](_0xde50('0x66'),_0x3b62da[_0xde50('0xe')]),'trigger:browser:url',{'uri':_0x437eae});})[_0xde50('0x67')](function(_0x334050){logger[_0xde50('0x68')](_0xde50('0x6c'),JSON['stringify'](_0x334050));});};exports['unmanaged']=function(_0x19b033,_0x2ee469,_0x84488e,_0x389b55,_0x2c8a29,_0x18ddf){var _0x9a5bac,_0x537a7d,_0x310fe4,_0x38cf6a;_0x18ddf[_0xde50('0x51')]=intUtil['stripTrailingSlash'](_0x18ddf[_0xde50('0x51')]);_0x18ddf[_0xde50('0x52')]=intUtil[_0xde50('0x50')](_0x18ddf[_0xde50('0x52')]);def[_0xde50('0x53')]=util[_0xde50('0x20')]('%s/service/v4_1/rest.php',_0x18ddf[_0xde50('0x51')]);if(_0x2c8a29&&_0x2c8a29['monitor_format']){logger[_0xde50('0x2e')]('['+_0x2ee469[_0xde50('0x73')]['toUpperCase']()+']',_0xde50('0x57'));_0x2ee469['recordingURL']=util[_0xde50('0x20')](_0xde50('0x58'),_0x18ddf[_0xde50('0x52')],_0x2ee469[_0xde50('0x59')],md5(_0x2ee469[_0xde50('0x59')]));}else{_0x2ee469[_0xde50('0x5a')]='';}return getConnection(_0x18ddf)['then'](function(_0x20e42d){_0x38cf6a=_0x20e42d;if(!_['isNil'](_0x389b55)){return getUser(_0x18ddf,_0x389b55[_0xde50('0xe')],_0x38cf6a);}else{return getUser(_0x18ddf,null,_0x38cf6a);}})[_0xde50('0x2a')](function(_0x203b12){_0x9a5bac=_0x203b12;logger['info'](_0xde50('0x5b'),_0x9a5bac['id']);return getEndUser(_0x18ddf,_0x2ee469['calleridname'],_0x2ee469[_0xde50('0x5d')],_0x38cf6a);})[_0xde50('0x2a')](function(_0x37fe75){_0x537a7d=_0x37fe75;logger[_0xde50('0x2e')](_0xde50('0x5e'),_0x537a7d['id']);return getTicket(_0x18ddf,_0x9a5bac,_0x537a7d,_0x84488e,_0x2ee469,_0x84488e[_0xde50('0x5f')],_0x38cf6a,_0xde50('0x60'));})[_0xde50('0x2a')](function(_0x35e177){_0x310fe4=_0x35e177;logger[_0xde50('0x2e')](_0xde50('0x61'));logger[_0xde50('0x2e')]('The\x20Ticket\x20ID\x20is:',_0x310fe4['id']);return setRelationship(_0x38cf6a,_0x9a5bac,_0x310fe4,_0xde50('0x62'));})[_0xde50('0x2a')](function(){return setRelationship(_0x38cf6a,_0x537a7d,_0x310fe4,_0xde50('0x63'));})[_0xde50('0x2a')](function(){return getServerInfo(_0x38cf6a);})[_0xde50('0x67')](function(_0x56765c){logger[_0xde50('0x68')]('['+_0x2ee469[_0xde50('0x73')]['toUpperCase']()+']',JSON[_0xde50('0x1f')](_0x56765c));});};
\ No newline at end of file
+var _0x0b0f=['apiKey','toString','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','value','Agent\x20found!','resolve','name_value_list','info','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','type','nameField','toLowerCase','content','string','custom_fields','variable','customVariable','Variable','customField','username','password','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','Outbound','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','unmanaged','monitor_format','lastevent','calleridnum','toUpperCase','bluebird','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','Subjects','created_by','description','getString','Descriptions','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','forEach','push','idField','variableName','set_entry','JSON','stringify','Calls','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b0f,0x1be));var _0xf0b0=function(_0x38f200,_0x41859e){_0x38f200=_0x38f200-0x0;var _0x365631=_0x0b0f[_0x38f200];return _0x365631;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0xf0b0('0x0'));var md5=require('md5');var util=require(_0xf0b0('0x1'));var Redis=require(_0xf0b0('0x2'));var intUtil=require('./util');var config=require(_0xf0b0('0x3'));var logger=require(_0xf0b0('0x4'))(_0xf0b0('0x5'));config[_0xf0b0('0x6')]=_[_0xf0b0('0x7')](config[_0xf0b0('0x6')],{'host':_0xf0b0('0x8'),'port':0x18eb});var io=require(_0xf0b0('0x9'))(new Redis(config['redis']));var def={'method':_0xf0b0('0xa'),'json':!![]};function emit(_0x42a871,_0x4ab31d,_0x25cc83){io['to'](_0x42a871)['emit'](_0x4ab31d,_0x25cc83);}function getTicket(_0x6f12e2,_0x32b9fc,_0x549c5a,_0x17cd75,_0x1fce3b,_0xa22564,_0x4a2792,_0xf74095){logger['info'](_0xf0b0('0xb'));var _0x4b02f0=new Date();var _0x33853e=[{'name':_0xf0b0('0xc'),'value':intUtil['getString'](_0x17cd75[_0xf0b0('0xd')],_0x1fce3b,'\x20')},{'name':'assigned_user_id','value':_0x32b9fc['id']},{'name':_0xf0b0('0xe'),'value':_0x32b9fc['id']},{'name':_0xf0b0('0xf'),'value':intUtil[_0xf0b0('0x10')](_0x17cd75[_0xf0b0('0x11')],_0x1fce3b,'\x0a')},{'name':'date_start','value':_0x4b02f0['toISOString']()[_0xf0b0('0x12')](0x0,0x13)['replace']('T','\x20')},{'name':_0xf0b0('0x13'),'value':'0'},{'name':_0xf0b0('0x14'),'value':'15'},{'name':_0xf0b0('0x15'),'value':_0x549c5a['id']},{'name':_0xf0b0('0x16'),'value':_0xf0b0('0x17')},{'name':'parent_name','value':_0x549c5a['name']},{'name':_0xf0b0('0x18'),'value':_0xf74095}];if(_0xa22564['length']){_[_0xf0b0('0x19')](_0xa22564,function(_0x3c193a){if(_0x1fce3b[_0x3c193a['variableName']]){_0x33853e[_0xf0b0('0x1a')]({'name':_0x3c193a[_0xf0b0('0x1b')],'value':_0x1fce3b[_0x3c193a[_0xf0b0('0x1c')]]});}});}return request({'form':{'method':_0xf0b0('0x1d'),'input_type':'JSON','response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x4a2792['id'],'module_name':_0xf0b0('0x20'),'name_value_list':_0x33853e})}});}function getAuth(_0x2712c9){return util[_0xf0b0('0x21')]('Basic\x20%s',new Buffer(_0x2712c9[_0xf0b0('0x22')]+':X')[_0xf0b0('0x23')]('base64'));}function getServerInfo(_0x40ef46){return request({'form':{'method':_0xf0b0('0x24'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x40ef46['id']})}});}function getUser(_0x53f084,_0x47ff04,_0x27b570){if(!_['isNil'](_0x47ff04)){logger['info'](_0xf0b0('0x25'),_0x47ff04);return request({'form':{'method':_0xf0b0('0x26'),'input_type':'JSON','response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x27b570['id'],'module_name':_0xf0b0('0x27'),'query':util['format'](_0xf0b0('0x28'),_0x47ff04),'order_by':'','offset':'0','select_fields':['id',_0xf0b0('0xc'),_0xf0b0('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf0b0('0x2a')](function(_0x157525){if(_0x157525[_0xf0b0('0x2b')][_0xf0b0('0x2c')]){var _0x2fa1b4=_[_0xf0b0('0x2d')](_0x157525[_0xf0b0('0x2b')],function(_0x189fd2){return _0x189fd2['name_value_list'][_0xf0b0('0x29')][_0xf0b0('0x2e')]===_0x47ff04;});if(_0x2fa1b4){logger['info'](_0xf0b0('0x2f'));return BPromise[_0xf0b0('0x30')]({'id':_0x2fa1b4[_0xf0b0('0x31')]['id']['value'],'name':_0x2fa1b4[_0xf0b0('0x31')][_0xf0b0('0xc')][_0xf0b0('0x2e')]});}}logger[_0xf0b0('0x32')](_0xf0b0('0x33'));return BPromise[_0xf0b0('0x30')]({'id':_0x27b570[_0xf0b0('0x31')][_0xf0b0('0x34')][_0xf0b0('0x2e')],'name':_0x27b570['name_value_list'][_0xf0b0('0x29')]['value']});});}else{logger[_0xf0b0('0x32')](_0xf0b0('0x35'));return BPromise[_0xf0b0('0x30')]({'id':_0x27b570[_0xf0b0('0x31')]['user_id'][_0xf0b0('0x2e')],'name':_0x27b570[_0xf0b0('0x31')][_0xf0b0('0x29')]['value']});}}function getEndUser(_0x1f4630,_0x34c2de,_0x282169,_0x56d99f){logger[_0xf0b0('0x32')](_0xf0b0('0x36'),_0x282169);return request({'form':{'method':_0xf0b0('0x26'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON[_0xf0b0('0x1f')]({'session':_0x56d99f['id'],'module_name':'Contacts','query':util[_0xf0b0('0x21')](_0xf0b0('0x37'),_0x282169),'order_by':'','offset':'0','select_fields':['id',_0xf0b0('0xc'),_0xf0b0('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf0b0('0x2a')](function(_0xc68d11){if(_0xc68d11[_0xf0b0('0x2b')][_0xf0b0('0x2c')]){var _0x140872=_[_0xf0b0('0x2d')](_0xc68d11[_0xf0b0('0x2b')],function(_0xd98343){return _0xd98343[_0xf0b0('0x31')][_0xf0b0('0x38')]['value']===_0x282169;});if(_0x140872){logger[_0xf0b0('0x32')](_0xf0b0('0x39'));return BPromise['resolve']({'id':_0x140872['name_value_list']['id'][_0xf0b0('0x2e')],'name':_0x140872['name_value_list'][_0xf0b0('0xc')][_0xf0b0('0x2e')],'phone':_0x140872[_0xf0b0('0x31')][_0xf0b0('0x38')][_0xf0b0('0x2e')]});}}else{logger[_0xf0b0('0x32')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0xf0b0('0x1d'),'input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON['stringify']({'session':_0x56d99f['id'],'module_name':'Contacts','name_value_list':[{'name':_0xf0b0('0x3a'),'value':_0x34c2de!==_0xf0b0('0x3b')?_0x34c2de:util[_0xf0b0('0x21')](_0xf0b0('0x3c'),_0x282169)},{'name':_0xf0b0('0x38'),'value':_0x282169}]})}})['then'](function(_0x70773d){logger[_0xf0b0('0x32')](_0xf0b0('0x3d'));return BPromise['resolve']({'id':_0x70773d['id'],'name':_0x70773d[_0xf0b0('0x2b')][_0xf0b0('0x3a')][_0xf0b0('0x2e')],'phone':_0x70773d[_0xf0b0('0x2b')][_0xf0b0('0x38')][_0xf0b0('0x2e')]});});}});}function request(_0x1b05ca){logger[_0xf0b0('0x3e')](_0xf0b0('0x3f'),JSON[_0xf0b0('0x1f')](_0x1b05ca));return rp(_['merge'](def,_0x1b05ca));}function getTags(_0x58927d,_0x3270dd){var _0x5c4514=[];if(_0x58927d&&_0x58927d['length']>0x0){_0x5c4514=_[_0xf0b0('0x40')](_0x58927d,_0x3270dd);}return _0x5c4514;}function getCustomFields(_0xfde6c0,_0x2bd854){var _0x2068ac=[];var _0x28f1f4={'custom_fields':[]};if(_0xfde6c0[_0xf0b0('0x2c')]>0x0){_[_0xf0b0('0x19')](_0xfde6c0,function(_0x5370fc){if(_0x5370fc[_0xf0b0('0x41')]==='string'&&_0x5370fc[_0xf0b0('0x42')]&&!_0x5370fc['customField']){_0x28f1f4[_0x5370fc['nameField'][_0xf0b0('0x43')]()]=_0x5370fc[_0xf0b0('0x44')]['toString']();}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x45')&&_0x5370fc['idField']&&_0x5370fc['customField']){_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc[_0xf0b0('0x1b')],'value':_0x5370fc[_0xf0b0('0x44')][_0xf0b0('0x23')]()});}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x47')&&_0x5370fc['variableName']&&_0x5370fc[_0xf0b0('0x1b')]&&_0x5370fc['customField']){_0x2bd854[_0x5370fc['variableName']]&&_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc[_0xf0b0('0x1b')],'value':_0x2bd854[_0x5370fc['variableName']][_0xf0b0('0x23')]()});}else if(_0x5370fc[_0xf0b0('0x41')]===_0xf0b0('0x48')&&_0x5370fc[_0xf0b0('0x49')]&&_0x5370fc[_0xf0b0('0x49')][_0xf0b0('0xc')]&&_0x5370fc[_0xf0b0('0x1b')]&&_0x5370fc[_0xf0b0('0x4a')]){_0x2bd854[_0x5370fc['Variable'][_0xf0b0('0xc')]['toLowerCase']()]&&_0x28f1f4[_0xf0b0('0x46')][_0xf0b0('0x1a')]({'id':_0x5370fc['idField'],'value':_0x2bd854[_0x5370fc[_0xf0b0('0x49')][_0xf0b0('0xc')][_0xf0b0('0x43')]()][_0xf0b0('0x23')]()});}});}return _0x28f1f4;}function getConnection(_0x25c083){return request({'method':_0xf0b0('0xa'),'form':{'method':'login','input_type':_0xf0b0('0x1e'),'response_type':_0xf0b0('0x1e'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x25c083[_0xf0b0('0x4b')],'password':_0x25c083[_0xf0b0('0x4c')],'encryption':'PLAIN'},'application':_0xf0b0('0x4d')})}})[_0xf0b0('0x2a')](function(_0x2d000c){var _0x57bc23=_0x2d000c;if(_0x57bc23['id']){def['sessionID']=_0x57bc23['id'];return BPromise[_0xf0b0('0x30')](_0x57bc23);}else{throw new Error(util[_0xf0b0('0x21')](_0xf0b0('0x4e'),_0x25c083['id']));}});}function setRelationship(_0x39b59a,_0xfb998b,_0x1ec969,_0x681533){return request({'form':{'method':_0xf0b0('0x4f'),'input_type':_0xf0b0('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x39b59a['id'],'module_name':'Calls','module_id':_0x1ec969['id'],'link_field_name':_0x681533,'related_ids':[_0xfb998b['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xf0b0('0x50')]=function(_0x15e410,_0x314a63,_0x3f616e,_0x1f7a51,_0x200361,_0x584ff6){var _0x5eea3a,_0x34a93f,_0x32a544,_0x2e0fa6;_0x584ff6[_0xf0b0('0x51')]=intUtil[_0xf0b0('0x52')](_0x584ff6[_0xf0b0('0x51')]);_0x584ff6[_0xf0b0('0x53')]=intUtil[_0xf0b0('0x52')](_0x584ff6[_0xf0b0('0x53')]);def[_0xf0b0('0x54')]=util['format'](_0xf0b0('0x55'),_0x584ff6['remoteUri']);if(_0x200361&&_0x200361['monitor_format']){logger[_0xf0b0('0x32')](_0xf0b0('0x56'),_0xf0b0('0x57'));_0x314a63[_0xf0b0('0x58')]=util[_0xf0b0('0x21')](_0xf0b0('0x59'),_0x584ff6[_0xf0b0('0x53')],_0x314a63['uniqueid'],md5(_0x314a63['uniqueid']));}else{_0x314a63[_0xf0b0('0x58')]='';}return getConnection(_0x584ff6)[_0xf0b0('0x2a')](function(_0x56693b){_0x2e0fa6=_0x56693b;return getUser(_0x584ff6,_0x1f7a51[_0xf0b0('0xc')],_0x2e0fa6);})[_0xf0b0('0x2a')](function(_0x4f4c46){_0x5eea3a=_0x4f4c46;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x5eea3a['id']);return getEndUser(_0x584ff6,_0x314a63[_0xf0b0('0x5b')],_0x314a63['calleridnum'],_0x2e0fa6);})['then'](function(_0x515b04){_0x34a93f=_0x515b04;logger['info'](_0xf0b0('0x5c'),_0x34a93f['id']);return getTicket(_0x584ff6,_0x5eea3a,_0x34a93f,_0x3f616e,_0x314a63,_0x3f616e[_0xf0b0('0x5d')],_0x2e0fa6,_0xf0b0('0x5e'));})['then'](function(_0x45438f){_0x32a544=_0x45438f;logger[_0xf0b0('0x32')](_0xf0b0('0x5f'));logger['info'](_0xf0b0('0x60'),_0x32a544['id']);return setRelationship(_0x2e0fa6,_0x5eea3a,_0x32a544,_0xf0b0('0x61'));})[_0xf0b0('0x2a')](function(){return setRelationship(_0x2e0fa6,_0x34a93f,_0x32a544,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x2e0fa6);})[_0xf0b0('0x2a')](function(_0x5080e8){var _0x1037e2=parseInt(_0x5080e8[_0xf0b0('0x63')][_0xf0b0('0x64')](0x0));var _0x38218a=util[_0xf0b0('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x584ff6[_0xf0b0('0x51')],_0x32a544['id']);if(_0x1037e2>0x6){_0x38218a=util[_0xf0b0('0x21')](_0xf0b0('0x65'),_0x584ff6['remoteUri'],_0x32a544['id']);}logger[_0xf0b0('0x32')](_0xf0b0('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf0b0('0x21')](_0xf0b0('0x66'),_0x1f7a51[_0xf0b0('0xc')]),_0xf0b0('0x67'),{'uri':_0x38218a});})['catch'](function(_0x27e242){logger['error'](_0xf0b0('0x56'),JSON[_0xf0b0('0x1f')](_0x27e242));});};exports['outbound']=function(_0x1a846e,_0x385163,_0x3e1c28,_0x3d3bc8,_0x504ff0,_0x539dc2,_0xf8a0d3){var _0x2683e4,_0x44386d,_0x335526,_0x5d92dd;_0x539dc2[_0xf0b0('0x51')]=intUtil[_0xf0b0('0x52')](_0x539dc2[_0xf0b0('0x51')]);_0x539dc2[_0xf0b0('0x53')]=intUtil[_0xf0b0('0x52')](_0x539dc2[_0xf0b0('0x53')]);def['uri']=util['format'](_0xf0b0('0x55'),_0x539dc2[_0xf0b0('0x51')]);if(_0xf8a0d3&&_0xf8a0d3[_0xf0b0('0x68')]&&_0xf8a0d3[_0xf0b0('0x68')]!==_0xf0b0('0x69')){logger[_0xf0b0('0x32')](_0xf0b0('0x6a'),'Recording\x20is\x20enabled!');_0x385163[_0xf0b0('0x58')]=util[_0xf0b0('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x539dc2[_0xf0b0('0x53')],_0x385163[_0xf0b0('0x6b')],md5(_0x385163['uniqueid']));}return getConnection(_0x539dc2)[_0xf0b0('0x2a')](function(_0x4da2b2){_0x5d92dd=_0x4da2b2;return getUser(_0x539dc2,_0x3d3bc8[_0xf0b0('0xc')],_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x2fef52){_0x2683e4=_0x2fef52;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x2683e4['id']);return getEndUser(_0x539dc2,_0x385163[_0xf0b0('0x6c')],_0x385163[_0xf0b0('0x6d')],_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x31a594){_0x44386d=_0x31a594;logger[_0xf0b0('0x32')]('The\x20Enduser\x20ID\x20is:',_0x44386d['id']);return getTicket(_0x539dc2,_0x2683e4,_0x44386d,_0x3e1c28,_0x385163,_0x3e1c28[_0xf0b0('0x5d')],_0x5d92dd,_0xf0b0('0x6e'));})[_0xf0b0('0x2a')](function(_0x4f71b1){_0x335526=_0x4f71b1;logger['info'](_0xf0b0('0x5f'));logger[_0xf0b0('0x32')]('The\x20Ticket\x20ID\x20is:',_0x335526['id']);return setRelationship(_0x5d92dd,_0x2683e4,_0x335526,_0xf0b0('0x61'));})['then'](function(){return setRelationship(_0x5d92dd,_0x44386d,_0x335526,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x5d92dd);})[_0xf0b0('0x2a')](function(_0x174bdb){var _0x572e44=parseInt(_0x174bdb['version'][_0xf0b0('0x64')](0x0));var _0xe0414a=util[_0xf0b0('0x21')](_0xf0b0('0x6f'),_0x539dc2[_0xf0b0('0x51')],_0x335526['id']);if(_0x572e44>0x6){_0xe0414a=util[_0xf0b0('0x21')](_0xf0b0('0x65'),_0x539dc2[_0xf0b0('0x51')],_0x335526['id']);}logger[_0xf0b0('0x32')]('[OUTBOUND]',_0xf0b0('0x70'));emit(util['format'](_0xf0b0('0x66'),_0x3d3bc8['name']),_0xf0b0('0x67'),{'uri':_0xe0414a});})[_0xf0b0('0x71')](function(_0x551cb7){logger[_0xf0b0('0x72')](_0xf0b0('0x6a'),JSON['stringify'](_0x551cb7));});};exports[_0xf0b0('0x73')]=function(_0x19a6b1,_0x1fc930,_0x38b928,_0xf9ffec,_0x36929e,_0x5373bc){var _0x4727f9,_0x3e3a2f,_0x4848dd,_0x341a35;_0x5373bc['remoteUri']=intUtil[_0xf0b0('0x52')](_0x5373bc[_0xf0b0('0x51')]);_0x5373bc['serverUrl']=intUtil[_0xf0b0('0x52')](_0x5373bc[_0xf0b0('0x53')]);def[_0xf0b0('0x54')]=util['format']('%s/service/v4_1/rest.php',_0x5373bc[_0xf0b0('0x51')]);if(_0x36929e&&_0x36929e[_0xf0b0('0x74')]){logger[_0xf0b0('0x32')]('['+_0x1fc930[_0xf0b0('0x75')]['toUpperCase']()+']',_0xf0b0('0x57'));_0x1fc930[_0xf0b0('0x58')]=util[_0xf0b0('0x21')](_0xf0b0('0x59'),_0x5373bc[_0xf0b0('0x53')],_0x1fc930[_0xf0b0('0x6b')],md5(_0x1fc930[_0xf0b0('0x6b')]));}else{_0x1fc930[_0xf0b0('0x58')]='';}return getConnection(_0x5373bc)['then'](function(_0x19ab73){_0x341a35=_0x19ab73;if(!_['isNil'](_0xf9ffec)){return getUser(_0x5373bc,_0xf9ffec[_0xf0b0('0xc')],_0x341a35);}else{return getUser(_0x5373bc,null,_0x341a35);}})[_0xf0b0('0x2a')](function(_0x5c475a){_0x4727f9=_0x5c475a;logger[_0xf0b0('0x32')](_0xf0b0('0x5a'),_0x4727f9['id']);return getEndUser(_0x5373bc,_0x1fc930[_0xf0b0('0x5b')],_0x1fc930[_0xf0b0('0x76')],_0x341a35);})[_0xf0b0('0x2a')](function(_0x57a3d6){_0x3e3a2f=_0x57a3d6;logger['info'](_0xf0b0('0x5c'),_0x3e3a2f['id']);return getTicket(_0x5373bc,_0x4727f9,_0x3e3a2f,_0x38b928,_0x1fc930,_0x38b928[_0xf0b0('0x5d')],_0x341a35,_0xf0b0('0x5e'));})[_0xf0b0('0x2a')](function(_0x384e51){_0x4848dd=_0x384e51;logger['info'](_0xf0b0('0x5f'));logger[_0xf0b0('0x32')](_0xf0b0('0x60'),_0x4848dd['id']);return setRelationship(_0x341a35,_0x4727f9,_0x4848dd,_0xf0b0('0x61'));})[_0xf0b0('0x2a')](function(){return setRelationship(_0x341a35,_0x3e3a2f,_0x4848dd,_0xf0b0('0x62'));})[_0xf0b0('0x2a')](function(){return getServerInfo(_0x341a35);})['catch'](function(_0x1befcb){logger[_0xf0b0('0x72')]('['+_0x1fc930[_0xf0b0('0x75')][_0xf0b0('0x77')]()+']',JSON[_0xf0b0('0x1f')](_0x1befcb));});};
\ No newline at end of file
index dfec7fa..ab7d47b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb437=['type','variableName','customVariable','Variable','name','keyType','string','key','format','%s:\x20%s','keyContent','variable','toLowerCase','join','stripTrailingSlash','slice','substring','lastIndexOf','isNil','test','lodash','length','sortBy','push','content'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xb437,0x159));var _0x7b43=function(_0x3f0dc6,_0x3b8c12){_0x3f0dc6=_0x3f0dc6-0x0;var _0x2a9828=_0xb437[_0x3f0dc6];return _0x2a9828;};'use strict';var _=require(_0x7b43('0x0'));var util=require('util');exports['getString']=function(_0x2e4114,_0x188b00,_0x29dd36){var _0x144d3d=[];if(_0x2e4114[_0x7b43('0x1')]>0x0){var _0x54da45=_[_0x7b43('0x2')](_0x2e4114,['id']);for(var _0x53b0d0=0x0;_0x53b0d0<_0x54da45[_0x7b43('0x1')];_0x53b0d0++){var _0xcd83a8=_0x54da45[_0x53b0d0];if(_0xcd83a8['type']==='string'){_0x144d3d[_0x7b43('0x3')](_0xcd83a8[_0x7b43('0x4')]);}else if(_0xcd83a8[_0x7b43('0x5')]==='variable'&&_0xcd83a8[_0x7b43('0x6')]){_0x188b00[_0xcd83a8[_0x7b43('0x6')]]&&_0x144d3d[_0x7b43('0x3')](_0x188b00[_0xcd83a8[_0x7b43('0x6')]]['toString']());}else if(_0xcd83a8[_0x7b43('0x5')]===_0x7b43('0x7')&&_0xcd83a8[_0x7b43('0x8')]&&_0xcd83a8[_0x7b43('0x8')]['name']){_0x188b00[_0xcd83a8[_0x7b43('0x8')][_0x7b43('0x9')]['toLowerCase']()]&&_0x144d3d[_0x7b43('0x3')](_0x188b00[_0xcd83a8[_0x7b43('0x8')]['name']['toLowerCase']()]['toString']());}else if(_0xcd83a8[_0x7b43('0x5')]==='keyValue'){if(_0xcd83a8[_0x7b43('0xa')]===_0x7b43('0xb')&&_0xcd83a8[_0x7b43('0xc')]){_0x144d3d['push'](util[_0x7b43('0xd')](_0x7b43('0xe'),_0xcd83a8[_0x7b43('0xc')],_0xcd83a8[_0x7b43('0xf')]));}else if(_0xcd83a8[_0x7b43('0xa')]===_0x7b43('0x10')&&_0xcd83a8[_0x7b43('0x6')]&&_0xcd83a8[_0x7b43('0xc')]){_0x188b00[_0xcd83a8[_0x7b43('0x6')]]&&_0x144d3d[_0x7b43('0x3')](util[_0x7b43('0xd')](_0x7b43('0xe'),_0xcd83a8[_0x7b43('0xc')],_0x188b00[_0xcd83a8[_0x7b43('0x6')]]));}else if(_0xcd83a8['keyType']===_0x7b43('0x7')&&_0xcd83a8[_0x7b43('0x8')]&&_0xcd83a8[_0x7b43('0x8')][_0x7b43('0x9')]&&_0xcd83a8['key']){_0x188b00[_0xcd83a8['Variable'][_0x7b43('0x9')][_0x7b43('0x11')]()]&&_0x144d3d[_0x7b43('0x3')](util[_0x7b43('0xd')](_0x7b43('0xe'),_0xcd83a8[_0x7b43('0xc')],_0x188b00[_0xcd83a8[_0x7b43('0x8')][_0x7b43('0x9')][_0x7b43('0x11')]()]));}}}}return _0x144d3d[_0x7b43('0x12')](_0x29dd36);};exports[_0x7b43('0x13')]=function(_0x5229bd){var _0x16a8a3=_0x5229bd[_0x7b43('0x14')](-0x1);if(_0x16a8a3==='/'){_0x5229bd=_0x5229bd[_0x7b43('0x15')](0x0,_0x5229bd[_0x7b43('0x16')](_0x16a8a3));}return _0x5229bd;};exports['validateEmail']=function(_0x1c1f07){if(!_[_0x7b43('0x17')](_0x1c1f07)&&_0x1c1f07!==''){var _0x25870a=/^(([^<>()\[\]\\.,;:\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 _0x25870a[_0x7b43('0x18')](String(_0x1c1f07)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xc051=['lodash','util','getString','length','sortBy','type','push','content','variable','variableName','toString','Variable','name','toLowerCase','keyValue','string','key','format','%s:\x20%s','keyContent','keyType','customVariable','join','stripTrailingSlash','slice','validateEmail','isNil'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0xc051,0x144));var _0x1c05=function(_0x3b3afd,_0x5099af){_0x3b3afd=_0x3b3afd-0x0;var _0x4ed32c=_0xc051[_0x3b3afd];return _0x4ed32c;};'use strict';var _=require(_0x1c05('0x0'));var util=require(_0x1c05('0x1'));exports[_0x1c05('0x2')]=function(_0x7f402c,_0x19da21,_0x194ce1){var _0x3db968=[];if(_0x7f402c[_0x1c05('0x3')]>0x0){var _0x5b59d8=_[_0x1c05('0x4')](_0x7f402c,['id']);for(var _0x10039b=0x0;_0x10039b<_0x5b59d8[_0x1c05('0x3')];_0x10039b++){var _0x3cf036=_0x5b59d8[_0x10039b];if(_0x3cf036[_0x1c05('0x5')]==='string'){_0x3db968[_0x1c05('0x6')](_0x3cf036[_0x1c05('0x7')]);}else if(_0x3cf036['type']===_0x1c05('0x8')&&_0x3cf036['variableName']){_0x19da21[_0x3cf036[_0x1c05('0x9')]]&&_0x3db968[_0x1c05('0x6')](_0x19da21[_0x3cf036[_0x1c05('0x9')]][_0x1c05('0xa')]());}else if(_0x3cf036['type']==='customVariable'&&_0x3cf036[_0x1c05('0xb')]&&_0x3cf036[_0x1c05('0xb')]['name']){_0x19da21[_0x3cf036[_0x1c05('0xb')][_0x1c05('0xc')][_0x1c05('0xd')]()]&&_0x3db968[_0x1c05('0x6')](_0x19da21[_0x3cf036['Variable'][_0x1c05('0xc')][_0x1c05('0xd')]()][_0x1c05('0xa')]());}else if(_0x3cf036[_0x1c05('0x5')]===_0x1c05('0xe')){if(_0x3cf036['keyType']===_0x1c05('0xf')&&_0x3cf036[_0x1c05('0x10')]){_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036['key'],_0x3cf036[_0x1c05('0x13')]));}else if(_0x3cf036[_0x1c05('0x14')]===_0x1c05('0x8')&&_0x3cf036[_0x1c05('0x9')]&&_0x3cf036[_0x1c05('0x10')]){_0x19da21[_0x3cf036[_0x1c05('0x9')]]&&_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036['key'],_0x19da21[_0x3cf036['variableName']]));}else if(_0x3cf036[_0x1c05('0x14')]===_0x1c05('0x15')&&_0x3cf036[_0x1c05('0xb')]&&_0x3cf036[_0x1c05('0xb')]['name']&&_0x3cf036[_0x1c05('0x10')]){_0x19da21[_0x3cf036[_0x1c05('0xb')][_0x1c05('0xc')]['toLowerCase']()]&&_0x3db968[_0x1c05('0x6')](util[_0x1c05('0x11')](_0x1c05('0x12'),_0x3cf036[_0x1c05('0x10')],_0x19da21[_0x3cf036['Variable'][_0x1c05('0xc')][_0x1c05('0xd')]()]));}}}}return _0x3db968[_0x1c05('0x16')](_0x194ce1);};exports[_0x1c05('0x17')]=function(_0x495d6e){var _0x40eb1a=_0x495d6e[_0x1c05('0x18')](-0x1);if(_0x40eb1a==='/'){_0x495d6e=_0x495d6e['substring'](0x0,_0x495d6e['lastIndexOf'](_0x40eb1a));}return _0x495d6e;};exports[_0x1c05('0x19')]=function(_0x146bec){if(!_[_0x1c05('0x1a')](_0x146bec)&&_0x146bec!==''){var _0x3bd3ff=/^(([^<>()\[\]\\.,;:\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 _0x3bd3ff['test'](String(_0x146bec)[_0x1c05('0xd')]());}else{return![];}};
\ No newline at end of file
index 71f17f9..2d5f1d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','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!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x451697,_0x20133b){var _0x53eaa9=function(_0x48dfa6){while(--_0x48dfa6){_0x451697['push'](_0x451697['shift']());}};_0x53eaa9(++_0x20133b);}(_0x34e8,0x12c));var _0x834e=function(_0x31fa11,_0x916433){_0x31fa11=_0x31fa11-0x0;var _0x501e00=_0x34e8[_0x31fa11];return _0x501e00;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','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!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x1371d8,_0x37d953){var _0x4c8cd0=function(_0x2520ea){while(--_0x2520ea){_0x1371d8['push'](_0x1371d8['shift']());}};_0x4c8cd0(++_0x37d953);}(_0x34e8,0x12c));var _0x834e=function(_0x298cec,_0xf8e296){_0x298cec=_0x298cec-0x0;var _0x50a669=_0x34e8[_0x298cec];return _0x50a669;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
index d9e212a..9fb1d3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5bb=['Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','username','authType','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','content','custom_fields','push','idField','variable','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:browser:url','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','application/json','info','Creating\x20new\x20ticket...','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','count','agent'];(function(_0x5c03c6,_0x243b7f){var _0xd99a3b=function(_0x133d24){while(--_0x133d24){_0x5c03c6['push'](_0x5c03c6['shift']());}};_0xd99a3b(++_0x243b7f);}(_0xa5bb,0x1ae));var _0xba5b=function(_0xd6e3ba,_0x8bdbb8){_0xd6e3ba=_0xd6e3ba-0x0;var _0x41af73=_0xa5bb[_0xd6e3ba];return _0x41af73;};'use strict';var _=require(_0xba5b('0x0'));var rp=require(_0xba5b('0x1'));var md5=require(_0xba5b('0x2'));var util=require(_0xba5b('0x3'));var Redis=require('ioredis');var intUtil=require(_0xba5b('0x4'));var config=require(_0xba5b('0x5'));var logger=require(_0xba5b('0x6'))(_0xba5b('0x7'));config[_0xba5b('0x8')]=_[_0xba5b('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xba5b('0x8')]));function emit(_0x3bc324,_0x26eb2a,_0x264fa4){io['to'](_0x3bc324)['emit'](_0x26eb2a,_0x264fa4);}var headers={'Content-Type':_0xba5b('0xa'),'Accept':_0xba5b('0xa')};function getTicket(_0x4ab1b1,_0x4f76ee,_0x5af514,_0x5166cf,_0x51717e){logger[_0xba5b('0xb')](_0xba5b('0xc'));return request({'uri':util['format']('%s/tickets.json',_0x4ab1b1[_0xba5b('0xd')]),'method':'POST','body':{'ticket':_[_0xba5b('0xe')]({'requester_id':_0x5af514['id'],'submitter_id':_0x4f76ee?_0x4f76ee['id']:undefined,'assignee_id':_0x4f76ee?_0x4f76ee['id']:undefined,'tags':getTags(_0x5166cf[_0xba5b('0xf')],_0xba5b('0x10')),'subject':intUtil[_0xba5b('0x11')](_0x5166cf[_0xba5b('0x12')],_0x51717e,'\x20'),'description':intUtil[_0xba5b('0x11')](_0x5166cf[_0xba5b('0x13')],_0x51717e,'\x0a'),'comment':{'public':![],'body':intUtil[_0xba5b('0x11')](_0x5166cf['Descriptions'],_0x51717e,'\x0a')}},getCustomFields(_0x5166cf['Fields'],_0x51717e))}})[_0xba5b('0x14')](function(_0x32edcd){logger['info'](_0xba5b('0x15'));return _0x32edcd[_0xba5b('0x16')];});}function getUser(_0x5d2cff,_0x5b45c3){if(intUtil[_0xba5b('0x17')](_0x5b45c3)){logger[_0xba5b('0xb')](_0xba5b('0x18'),_0x5b45c3);return request({'uri':util[_0xba5b('0x19')](_0xba5b('0x1a'),_0x5d2cff[_0xba5b('0xd')]),'qs':{'query':util['format'](_0xba5b('0x1b'),_0x5b45c3)}})['then'](function(_0x99ef0e){if(_0x99ef0e[_0xba5b('0x1c')]){logger[_0xba5b('0xb')]('Agent\x20found!');return _['find'](_0x99ef0e['results'],{'email':_0x5b45c3,'role':_0xba5b('0x1d')});}else{logger[_0xba5b('0xb')](_0xba5b('0x1e'));return request({'uri':util[_0xba5b('0x19')]('%s/users/me.json',_0x5d2cff['remoteUri'])})[_0xba5b('0x14')](function(_0x1cc7cb){logger[_0xba5b('0xb')](_0xba5b('0x1f'));return _0x1cc7cb[_0xba5b('0x20')];});}});}else{logger[_0xba5b('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xba5b('0x19')](_0xba5b('0x21'),_0x5d2cff[_0xba5b('0xd')])})[_0xba5b('0x14')](function(_0x138f78){logger[_0xba5b('0xb')](_0xba5b('0x1f'));return _0x138f78[_0xba5b('0x20')];});}}function getEndUser(_0x313746,_0x31bfb0,_0x34acf8){logger[_0xba5b('0xb')](_0xba5b('0x22'),_0x34acf8);return request({'uri':util[_0xba5b('0x19')]('%s/search.json',_0x313746[_0xba5b('0xd')]),'qs':{'query':util['format'](_0xba5b('0x23'),_0x34acf8)}})[_0xba5b('0x14')](function(_0x144016){var _0xef2da4;if(_0x144016[_0xba5b('0x24')][_0xba5b('0x25')]){_0x144016[_0xba5b('0x24')]=_[_0xba5b('0x26')](_0x144016['results'],{'suspended':![],'role':_0xba5b('0x27')});if(_0x144016[_0xba5b('0x24')][_0xba5b('0x25')]){_0xef2da4=_[_0xba5b('0x28')](_0x144016[_0xba5b('0x24')]);}}if(_0xef2da4){logger[_0xba5b('0xb')](_0xba5b('0x29'));return _0xef2da4;}else{logger[_0xba5b('0xb')](_0xba5b('0x2a'));return request({'uri':util[_0xba5b('0x19')](_0xba5b('0x2b'),_0x313746['remoteUri']),'method':'POST','body':{'user':{'role':'end-user','name':util['format'](_0xba5b('0x2c'),_0x31bfb0||_0x34acf8),'phone':_0x34acf8}}})[_0xba5b('0x14')](function(_0x141447){logger[_0xba5b('0xb')](_0xba5b('0x2d'));return _0x141447['user'];});}});}function getAuth(_0x48a94e){var _0x3b9a9a;if(_0x48a94e['authType']===_0xba5b('0x2e')){_0x3b9a9a=util[_0xba5b('0x19')]('%s:%s',_0x48a94e[_0xba5b('0x2f')],_0x48a94e[_0xba5b('0x2e')]);}else if(_0x48a94e[_0xba5b('0x30')]==='token'){_0x3b9a9a=util[_0xba5b('0x19')](_0xba5b('0x31'),_0x48a94e[_0xba5b('0x2f')],_0x48a94e['token']);}return util[_0xba5b('0x19')](_0xba5b('0x32'),new Buffer(_0x3b9a9a)[_0xba5b('0x33')](_0xba5b('0x34')));}function request(_0x41b1d9){logger[_0xba5b('0x35')](_0xba5b('0x36'),JSON[_0xba5b('0x37')](_0x41b1d9));return rp(_[_0xba5b('0x9')](_0x41b1d9,{'method':_0xba5b('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x23ae4e,_0x430673){var _0x1b2a6e=[];if(_0x23ae4e&&_0x23ae4e[_0xba5b('0x25')]>0x0){_0x1b2a6e=_[_0xba5b('0x39')](_0x23ae4e,_0x430673);}return _0x1b2a6e;}function getCustomFields(_0x2ee03a,_0x54cadd){var _0x17fe50=[];var _0x2d7253={'custom_fields':[]};if(_0x2ee03a['length']>0x0){_[_0xba5b('0x3a')](_0x2ee03a,function(_0x247a3f){if(_[_0xba5b('0x3b')]([_0xba5b('0x3c'),_0xba5b('0x3d')],_0x247a3f[_0xba5b('0x3e')])&&_0x247a3f[_0xba5b('0x3f')]&&!_0x247a3f[_0xba5b('0x40')]){_0x2d7253[_0x247a3f[_0xba5b('0x3f')]['toLowerCase']()]=_0x247a3f[_0xba5b('0x41')][_0xba5b('0x33')]();}else if(_[_0xba5b('0x3b')](['string',_0xba5b('0x3d')],_0x247a3f[_0xba5b('0x3e')])&&_0x247a3f['idField']&&_0x247a3f[_0xba5b('0x40')]){_0x2d7253[_0xba5b('0x42')][_0xba5b('0x43')]({'id':_0x247a3f[_0xba5b('0x44')],'value':_0x247a3f[_0xba5b('0x41')][_0xba5b('0x33')]()});}else if(_0x247a3f[_0xba5b('0x3e')]===_0xba5b('0x45')&&_0x247a3f['variableName']&&_0x247a3f[_0xba5b('0x44')]&&_0x247a3f[_0xba5b('0x40')]){_0x54cadd[_0x247a3f['variableName']]&&_0x2d7253['custom_fields'][_0xba5b('0x43')]({'id':_0x247a3f[_0xba5b('0x44')],'value':_0x54cadd[_0x247a3f[_0xba5b('0x46')]]['toString']()});}else if(_0x247a3f[_0xba5b('0x3e')]===_0xba5b('0x47')&&_0x247a3f[_0xba5b('0x48')]&&_0x247a3f[_0xba5b('0x48')][_0xba5b('0x10')]&&_0x247a3f[_0xba5b('0x44')]&&_0x247a3f['customField']){_0x54cadd[_0x247a3f[_0xba5b('0x48')][_0xba5b('0x10')]['toLowerCase']()]&&_0x2d7253[_0xba5b('0x42')][_0xba5b('0x43')]({'id':_0x247a3f[_0xba5b('0x44')],'value':_0x54cadd[_0x247a3f['Variable'][_0xba5b('0x10')][_0xba5b('0x49')]()][_0xba5b('0x33')]()});}});}return _0x2d7253;}exports[_0xba5b('0x4a')]=function(_0x592867,_0x182715,_0x3a0790,_0x574e88,_0x2e9ebb,_0x3a22a2){var _0x3f5f36,_0x4e3c87;_0x3a22a2[_0xba5b('0xd')]=intUtil[_0xba5b('0x4b')](_0x3a22a2[_0xba5b('0xd')]);_0x3a22a2[_0xba5b('0x4c')]=intUtil[_0xba5b('0x4b')](_0x3a22a2[_0xba5b('0x4c')]);if(_0x2e9ebb&&_0x2e9ebb[_0xba5b('0x4d')]){logger[_0xba5b('0xb')]('[QUEUE]',_0xba5b('0x4e'));_0x182715['recordingURL']=util[_0xba5b('0x19')](_0xba5b('0x4f'),_0x3a22a2[_0xba5b('0x4c')],_0x182715[_0xba5b('0x50')],md5(_0x182715[_0xba5b('0x50')]));}else{_0x182715[_0xba5b('0x51')]='';}headers[_0xba5b('0x52')]=getAuth(_0x3a22a2);return getUser(_0x3a22a2,_0x574e88[_0xba5b('0x53')])['then'](function(_0x4d360f){_0x3f5f36=_0x4d360f;logger['info'](_0xba5b('0x54'),_0x3f5f36['id']);return getEndUser(_0x3a22a2,_0x182715[_0xba5b('0x55')],_0x182715[_0xba5b('0x56')]);})[_0xba5b('0x14')](function(_0x41dffe){_0x4e3c87=_0x41dffe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4e3c87['id']);return getTicket(_0x3a22a2,_0x3f5f36,_0x4e3c87,_0x3a0790,_0x182715);})[_0xba5b('0x14')](function(_0x2cdf65){if(_0x2cdf65){logger[_0xba5b('0xb')](_0xba5b('0x57'),_0x2cdf65['id']);switch(_0x3a22a2[_0xba5b('0x3e')]){case _0xba5b('0x58'):logger[_0xba5b('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xba5b('0x19')](_0xba5b('0x59'),_0x3a22a2[_0xba5b('0xd')],_0x3f5f36['id'],_0x2cdf65['id']),'method':_0xba5b('0x5a')});case _0xba5b('0x5b'):logger[_0xba5b('0xb')](_0xba5b('0x5c'),_0xba5b('0x5d'));emit(util[_0xba5b('0x19')](_0xba5b('0x5e'),_0x574e88[_0xba5b('0x10')]),'trigger:browser:url',{'uri':util['format'](_0xba5b('0x5f'),_0x3a22a2[_0xba5b('0xd')][_0xba5b('0x60')](_0xba5b('0x61'),''),_0x2cdf65['id'])});break;default:logger[_0xba5b('0x62')](_0xba5b('0x5c'),_0xba5b('0x63'));}}})[_0xba5b('0x64')](function(_0x198c2b){logger['error'](_0xba5b('0x65'),util[_0xba5b('0x66')](_0x198c2b,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0xf5cb53,_0x3d6a2b,_0x1784bd,_0x5e97d2,_0xf4d87a,_0x2f3939,_0x5c4ac9){var _0x169e7e,_0x6e59c;_0x2f3939['remoteUri']=intUtil[_0xba5b('0x4b')](_0x2f3939[_0xba5b('0xd')]);_0x2f3939[_0xba5b('0x4c')]=intUtil[_0xba5b('0x4b')](_0x2f3939[_0xba5b('0x4c')]);if(_0x5c4ac9&&_0x5c4ac9[_0xba5b('0x67')]&&_0x5c4ac9[_0xba5b('0x67')]!==_0xba5b('0x68')){logger[_0xba5b('0xb')](_0xba5b('0x69'),_0xba5b('0x4e'));_0x3d6a2b[_0xba5b('0x51')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2f3939['serverUrl'],_0x3d6a2b[_0xba5b('0x50')],md5(_0x3d6a2b[_0xba5b('0x50')]));}headers[_0xba5b('0x52')]=getAuth(_0x2f3939);return getUser(_0x2f3939,_0x5e97d2[_0xba5b('0x53')])[_0xba5b('0x14')](function(_0x59bac3){_0x169e7e=_0x59bac3;logger[_0xba5b('0xb')]('The\x20User\x20ID\x20is:',_0x169e7e['id']);return getEndUser(_0x2f3939,_0x3d6a2b[_0xba5b('0x6a')],_0x3d6a2b[_0xba5b('0x6b')]);})[_0xba5b('0x14')](function(_0x23bebc){_0x6e59c=_0x23bebc;logger[_0xba5b('0xb')](_0xba5b('0x6c'),_0x6e59c['id']);return getTicket(_0x2f3939,_0x169e7e,_0x6e59c,_0x1784bd,_0x3d6a2b);})[_0xba5b('0x14')](function(_0x4e677d){if(_0x4e677d){logger[_0xba5b('0xb')]('The\x20Ticket\x20ID\x20is:',_0x4e677d['id']);switch(_0x2f3939[_0xba5b('0x3e')]){case _0xba5b('0x58'):logger[_0xba5b('0xb')](_0xba5b('0x69'),_0xba5b('0x6d'));return request({'uri':util[_0xba5b('0x19')](_0xba5b('0x59'),_0x2f3939[_0xba5b('0xd')],_0x169e7e['id'],_0x4e677d['id']),'method':'POST'});case'newTab':logger[_0xba5b('0xb')](_0xba5b('0x69'),_0xba5b('0x5d'));emit(util[_0xba5b('0x19')](_0xba5b('0x5e'),_0x5e97d2[_0xba5b('0x10')]),_0xba5b('0x6e'),{'uri':util[_0xba5b('0x19')](_0xba5b('0x5f'),_0x2f3939[_0xba5b('0xd')]['replace'](_0xba5b('0x61'),''),_0x4e677d['id'])});break;default:logger[_0xba5b('0x62')](_0xba5b('0x69'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xba5b('0x64')](function(_0x3a5916){logger[_0xba5b('0x62')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xba5b('0x66')](_0x3a5916,{'showHidden':!![],'depth':null}));});};exports[_0xba5b('0x6f')]=function(_0x43ff2a,_0x364ba5,_0x36a590,_0x2283b9,_0x12d823,_0x1affc1){var _0x5f40dc,_0xf3ef63;_0x1affc1[_0xba5b('0xd')]=intUtil[_0xba5b('0x4b')](_0x1affc1[_0xba5b('0xd')]);_0x1affc1[_0xba5b('0x4c')]=intUtil[_0xba5b('0x4b')](_0x1affc1[_0xba5b('0x4c')]);if(_0x12d823&&_0x12d823[_0xba5b('0x4d')]){logger[_0xba5b('0xb')]('['+_0x364ba5[_0xba5b('0x70')][_0xba5b('0x71')]()+']',_0xba5b('0x4e'));_0x364ba5[_0xba5b('0x51')]=util[_0xba5b('0x19')](_0xba5b('0x4f'),_0x1affc1['serverUrl'],_0x364ba5['uniqueid'],md5(_0x364ba5[_0xba5b('0x50')]));}else{_0x364ba5[_0xba5b('0x51')]='';}headers[_0xba5b('0x52')]=getAuth(_0x1affc1);return getUser(_0x1affc1)['then'](function(_0x2db040){_0x5f40dc=_0x2db040;logger['info'](_0xba5b('0x54'),_0x5f40dc['id']);return getEndUser(_0x1affc1,_0x364ba5[_0xba5b('0x55')],_0x364ba5[_0xba5b('0x56')]);})[_0xba5b('0x14')](function(_0x4ba8b8){_0xf3ef63=_0x4ba8b8;logger[_0xba5b('0xb')](_0xba5b('0x6c'),_0xf3ef63['id']);return getTicket(_0x1affc1,_0x5f40dc,_0xf3ef63,_0x36a590,_0x364ba5);})[_0xba5b('0x14')](function(_0x5bb139){if(_0x5bb139){logger['info'](_0xba5b('0x57'),_0x5bb139['id']);}})['catch'](function(_0x374eed){logger[_0xba5b('0x62')]('['+_0x364ba5[_0xba5b('0x70')][_0xba5b('0x71')]()+']'+_0xba5b('0x72'),util[_0xba5b('0x66')](_0x374eed,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xd35c=['stripTrailingSlash','[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\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','newTab','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','util','ioredis','./util','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','Tags','name','getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','%s/search.json','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','then','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','base64','debug','[HTTP]','defaults','GET','map','forEach','string','picklist','nameField','customField','toLowerCase','content','includes','type','idField','toString','variable','variableName','custom_fields','push','Variable','queue','serverUrl'];(function(_0x16cb03,_0x43ea58){var _0x10944e=function(_0x27ebaa){while(--_0x27ebaa){_0x16cb03['push'](_0x16cb03['shift']());}};_0x10944e(++_0x43ea58);}(_0xd35c,0x175));var _0xcd35=function(_0x268b30,_0x37c820){_0x268b30=_0x268b30-0x0;var _0x2429bf=_0xd35c[_0x268b30];return _0x2429bf;};'use strict';var _=require(_0xcd35('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xcd35('0x1'));var Redis=require(_0xcd35('0x2'));var intUtil=require(_0xcd35('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xcd35('0x4'));config[_0xcd35('0x5')]=_['defaults'](config[_0xcd35('0x5')],{'host':_0xcd35('0x6'),'port':0x18eb});var io=require(_0xcd35('0x7'))(new Redis(config['redis']));function emit(_0x9438c3,_0x2ea7e4,_0x3a93b2){io['to'](_0x9438c3)[_0xcd35('0x8')](_0x2ea7e4,_0x3a93b2);}var headers={'Content-Type':_0xcd35('0x9'),'Accept':_0xcd35('0x9')};function getTicket(_0x373dca,_0x135fbd,_0x37420d,_0x44c19d,_0x2d728d){logger[_0xcd35('0xa')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xcd35('0xb')](_0xcd35('0xc'),_0x373dca[_0xcd35('0xd')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x37420d['id'],'submitter_id':_0x135fbd?_0x135fbd['id']:undefined,'assignee_id':_0x135fbd?_0x135fbd['id']:undefined,'tags':getTags(_0x44c19d[_0xcd35('0xe')],_0xcd35('0xf')),'subject':intUtil[_0xcd35('0x10')](_0x44c19d[_0xcd35('0x11')],_0x2d728d,'\x20'),'description':intUtil[_0xcd35('0x10')](_0x44c19d[_0xcd35('0x12')],_0x2d728d,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x44c19d[_0xcd35('0x12')],_0x2d728d,'\x0a')}},getCustomFields(_0x44c19d[_0xcd35('0x13')],_0x2d728d))}})['then'](function(_0x116c84){logger[_0xcd35('0xa')](_0xcd35('0x14'));return _0x116c84[_0xcd35('0x15')];});}function getUser(_0x5d9969,_0xe68e5c){if(intUtil[_0xcd35('0x16')](_0xe68e5c)){logger[_0xcd35('0xa')]('Getting\x20agent\x20with\x20email',_0xe68e5c);return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x17'),_0x5d9969['remoteUri']),'qs':{'query':util[_0xcd35('0xb')]('type:user\x20role:agent\x20email:%s',_0xe68e5c)}})['then'](function(_0x1f93c1){if(_0x1f93c1[_0xcd35('0x18')]){logger[_0xcd35('0xa')](_0xcd35('0x19'));return _['find'](_0x1f93c1[_0xcd35('0x1a')],{'email':_0xe68e5c,'role':_0xcd35('0x1b')});}else{logger[_0xcd35('0xa')](_0xcd35('0x1c'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x1d'),_0x5d9969[_0xcd35('0xd')])})[_0xcd35('0x1e')](function(_0x590cdb){logger[_0xcd35('0xa')](_0xcd35('0x1f'));return _0x590cdb[_0xcd35('0x20')];});}});}else{logger[_0xcd35('0xa')](_0xcd35('0x1c'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x1d'),_0x5d9969['remoteUri'])})['then'](function(_0x15feb4){logger['info'](_0xcd35('0x1f'));return _0x15feb4[_0xcd35('0x20')];});}}function getEndUser(_0x3c34be,_0x45fbe4,_0x5ad26d){logger[_0xcd35('0xa')](_0xcd35('0x21'),_0x5ad26d);return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x17'),_0x3c34be[_0xcd35('0xd')]),'qs':{'query':util[_0xcd35('0xb')]('type:user\x20role:end-user\x20phone:%s',_0x5ad26d)}})[_0xcd35('0x1e')](function(_0x58acb7){var _0x4393e7;if(_0x58acb7[_0xcd35('0x1a')][_0xcd35('0x22')]){_0x58acb7['results']=_['filter'](_0x58acb7[_0xcd35('0x1a')],{'suspended':![],'role':'end-user'});if(_0x58acb7[_0xcd35('0x1a')]['length']){_0x4393e7=_[_0xcd35('0x23')](_0x58acb7[_0xcd35('0x1a')]);}}if(_0x4393e7){logger['info'](_0xcd35('0x24'));return _0x4393e7;}else{logger[_0xcd35('0xa')](_0xcd35('0x25'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x26'),_0x3c34be[_0xcd35('0xd')]),'method':'POST','body':{'user':{'role':_0xcd35('0x27'),'name':util[_0xcd35('0xb')](_0xcd35('0x28'),_0x45fbe4||_0x5ad26d),'phone':_0x5ad26d}}})[_0xcd35('0x1e')](function(_0x5cc057){logger[_0xcd35('0xa')](_0xcd35('0x29'));return _0x5cc057[_0xcd35('0x20')];});}});}function getAuth(_0x4d0500){var _0x2db716;if(_0x4d0500[_0xcd35('0x2a')]===_0xcd35('0x2b')){_0x2db716=util[_0xcd35('0xb')](_0xcd35('0x2c'),_0x4d0500[_0xcd35('0x2d')],_0x4d0500[_0xcd35('0x2b')]);}else if(_0x4d0500[_0xcd35('0x2a')]===_0xcd35('0x2e')){_0x2db716=util[_0xcd35('0xb')]('%s/token:%s',_0x4d0500[_0xcd35('0x2d')],_0x4d0500[_0xcd35('0x2e')]);}return util[_0xcd35('0xb')]('Basic\x20%s',new Buffer(_0x2db716)['toString'](_0xcd35('0x2f')));}function request(_0x70b021){logger[_0xcd35('0x30')](_0xcd35('0x31'),JSON['stringify'](_0x70b021));return rp(_[_0xcd35('0x32')](_0x70b021,{'method':_0xcd35('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x4d0e51,_0x139995){var _0x81ffc6=[];if(_0x4d0e51&&_0x4d0e51[_0xcd35('0x22')]>0x0){_0x81ffc6=_[_0xcd35('0x34')](_0x4d0e51,_0x139995);}return _0x81ffc6;}function getCustomFields(_0x2701b8,_0x1d7afd){var _0x24b67c=[];var _0x365f66={'custom_fields':[]};if(_0x2701b8['length']>0x0){_[_0xcd35('0x35')](_0x2701b8,function(_0x175534){if(_['includes']([_0xcd35('0x36'),_0xcd35('0x37')],_0x175534['type'])&&_0x175534[_0xcd35('0x38')]&&!_0x175534[_0xcd35('0x39')]){_0x365f66[_0x175534['nameField'][_0xcd35('0x3a')]()]=_0x175534[_0xcd35('0x3b')]['toString']();}else if(_[_0xcd35('0x3c')]([_0xcd35('0x36'),'picklist'],_0x175534[_0xcd35('0x3d')])&&_0x175534[_0xcd35('0x3e')]&&_0x175534[_0xcd35('0x39')]){_0x365f66['custom_fields']['push']({'id':_0x175534[_0xcd35('0x3e')],'value':_0x175534[_0xcd35('0x3b')][_0xcd35('0x3f')]()});}else if(_0x175534[_0xcd35('0x3d')]===_0xcd35('0x40')&&_0x175534[_0xcd35('0x41')]&&_0x175534['idField']&&_0x175534[_0xcd35('0x39')]){_0x1d7afd[_0x175534['variableName']]&&_0x365f66[_0xcd35('0x42')][_0xcd35('0x43')]({'id':_0x175534[_0xcd35('0x3e')],'value':_0x1d7afd[_0x175534[_0xcd35('0x41')]]['toString']()});}else if(_0x175534[_0xcd35('0x3d')]==='customVariable'&&_0x175534[_0xcd35('0x44')]&&_0x175534[_0xcd35('0x44')][_0xcd35('0xf')]&&_0x175534[_0xcd35('0x3e')]&&_0x175534['customField']){_0x1d7afd[_0x175534['Variable']['name']['toLowerCase']()]&&_0x365f66[_0xcd35('0x42')]['push']({'id':_0x175534['idField'],'value':_0x1d7afd[_0x175534['Variable'][_0xcd35('0xf')][_0xcd35('0x3a')]()][_0xcd35('0x3f')]()});}});}return _0x365f66;}exports[_0xcd35('0x45')]=function(_0xbe4644,_0x3c0827,_0xdf156,_0x87e096,_0x450ad4,_0x4d02ed){var _0x475b0c,_0x3de708;_0x4d02ed[_0xcd35('0xd')]=intUtil['stripTrailingSlash'](_0x4d02ed[_0xcd35('0xd')]);_0x4d02ed[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0x4d02ed[_0xcd35('0x46')]);if(_0x450ad4&&_0x450ad4['monitor_format']){logger[_0xcd35('0xa')](_0xcd35('0x48'),_0xcd35('0x49'));_0x3c0827[_0xcd35('0x4a')]=util[_0xcd35('0xb')](_0xcd35('0x4b'),_0x4d02ed[_0xcd35('0x46')],_0x3c0827[_0xcd35('0x4c')],md5(_0x3c0827[_0xcd35('0x4c')]));}else{_0x3c0827['recordingURL']='';}headers[_0xcd35('0x4d')]=getAuth(_0x4d02ed);return getUser(_0x4d02ed,_0x87e096[_0xcd35('0x4e')])[_0xcd35('0x1e')](function(_0x137285){_0x475b0c=_0x137285;logger[_0xcd35('0xa')](_0xcd35('0x4f'),_0x475b0c['id']);return getEndUser(_0x4d02ed,_0x3c0827[_0xcd35('0x50')],_0x3c0827[_0xcd35('0x51')]);})[_0xcd35('0x1e')](function(_0x14d500){_0x3de708=_0x14d500;logger[_0xcd35('0xa')]('The\x20Enduser\x20ID\x20is:',_0x3de708['id']);return getTicket(_0x4d02ed,_0x475b0c,_0x3de708,_0xdf156,_0x3c0827);})['then'](function(_0x5e1085){if(_0x5e1085){logger[_0xcd35('0xa')](_0xcd35('0x52'),_0x5e1085['id']);switch(_0x4d02ed[_0xcd35('0x3d')]){case _0xcd35('0x53'):logger['info']('[QUEUE]',_0xcd35('0x54'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x55'),_0x4d02ed[_0xcd35('0xd')],_0x475b0c['id'],_0x5e1085['id']),'method':_0xcd35('0x56')});case'newTab':logger[_0xcd35('0xa')](_0xcd35('0x48'),_0xcd35('0x57'));emit(util['format']('user:%s',_0x87e096['name']),_0xcd35('0x58'),{'uri':util[_0xcd35('0xb')](_0xcd35('0x59'),_0x4d02ed[_0xcd35('0xd')][_0xcd35('0x5a')](_0xcd35('0x5b'),''),_0x5e1085['id'])});break;default:logger[_0xcd35('0x5c')](_0xcd35('0x48'),_0xcd35('0x5d'));}}})[_0xcd35('0x5e')](function(_0x3f3e72){logger[_0xcd35('0x5c')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xcd35('0x5f')](_0x3f3e72,{'showHidden':!![],'depth':null}));});};exports[_0xcd35('0x60')]=function(_0x1fe6d5,_0x33e22f,_0x54daad,_0x5711ad,_0x25b2b7,_0xf37601,_0x27bfbb){var _0x49c156,_0x1703e8;_0xf37601[_0xcd35('0xd')]=intUtil[_0xcd35('0x47')](_0xf37601[_0xcd35('0xd')]);_0xf37601[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0xf37601[_0xcd35('0x46')]);if(_0x27bfbb&&_0x27bfbb[_0xcd35('0x61')]&&_0x27bfbb[_0xcd35('0x61')]!==_0xcd35('0x62')){logger[_0xcd35('0xa')](_0xcd35('0x63'),'Recording\x20is\x20enabled!');_0x33e22f['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf37601['serverUrl'],_0x33e22f[_0xcd35('0x4c')],md5(_0x33e22f[_0xcd35('0x4c')]));}headers[_0xcd35('0x4d')]=getAuth(_0xf37601);return getUser(_0xf37601,_0x5711ad[_0xcd35('0x4e')])[_0xcd35('0x1e')](function(_0x10f83a){_0x49c156=_0x10f83a;logger['info'](_0xcd35('0x4f'),_0x49c156['id']);return getEndUser(_0xf37601,_0x33e22f[_0xcd35('0x64')],_0x33e22f[_0xcd35('0x65')]);})[_0xcd35('0x1e')](function(_0x5cd1a4){_0x1703e8=_0x5cd1a4;logger[_0xcd35('0xa')](_0xcd35('0x66'),_0x1703e8['id']);return getTicket(_0xf37601,_0x49c156,_0x1703e8,_0x54daad,_0x33e22f);})[_0xcd35('0x1e')](function(_0xc78bc){if(_0xc78bc){logger[_0xcd35('0xa')](_0xcd35('0x52'),_0xc78bc['id']);switch(_0xf37601[_0xcd35('0x3d')]){case _0xcd35('0x53'):logger[_0xcd35('0xa')](_0xcd35('0x63'),_0xcd35('0x54'));return request({'uri':util[_0xcd35('0xb')](_0xcd35('0x55'),_0xf37601[_0xcd35('0xd')],_0x49c156['id'],_0xc78bc['id']),'method':'POST'});case _0xcd35('0x67'):logger[_0xcd35('0xa')](_0xcd35('0x63'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcd35('0xb')](_0xcd35('0x68'),_0x5711ad[_0xcd35('0xf')]),_0xcd35('0x58'),{'uri':util['format'](_0xcd35('0x59'),_0xf37601[_0xcd35('0xd')][_0xcd35('0x5a')](_0xcd35('0x5b'),''),_0xc78bc['id'])});break;default:logger[_0xcd35('0x5c')](_0xcd35('0x63'),_0xcd35('0x5d'));}}})['catch'](function(_0x7f8f5c){logger['error'](_0xcd35('0x69'),util[_0xcd35('0x5f')](_0x7f8f5c,{'showHidden':!![],'depth':null}));});};exports[_0xcd35('0x6a')]=function(_0x53ece4,_0xe5b655,_0x27555a,_0x1778d6,_0x2ddb36,_0x4dda3d){var _0x2a7460,_0xd19d85;_0x4dda3d[_0xcd35('0xd')]=intUtil['stripTrailingSlash'](_0x4dda3d['remoteUri']);_0x4dda3d[_0xcd35('0x46')]=intUtil[_0xcd35('0x47')](_0x4dda3d[_0xcd35('0x46')]);if(_0x2ddb36&&_0x2ddb36[_0xcd35('0x6b')]){logger[_0xcd35('0xa')]('['+_0xe5b655[_0xcd35('0x6c')][_0xcd35('0x6d')]()+']',_0xcd35('0x49'));_0xe5b655['recordingURL']=util[_0xcd35('0xb')](_0xcd35('0x4b'),_0x4dda3d[_0xcd35('0x46')],_0xe5b655[_0xcd35('0x4c')],md5(_0xe5b655['uniqueid']));}else{_0xe5b655[_0xcd35('0x4a')]='';}headers[_0xcd35('0x4d')]=getAuth(_0x4dda3d);return getUser(_0x4dda3d)['then'](function(_0x3e074b){_0x2a7460=_0x3e074b;logger[_0xcd35('0xa')](_0xcd35('0x4f'),_0x2a7460['id']);return getEndUser(_0x4dda3d,_0xe5b655['calleridname'],_0xe5b655[_0xcd35('0x51')]);})[_0xcd35('0x1e')](function(_0x23bf70){_0xd19d85=_0x23bf70;logger[_0xcd35('0xa')]('The\x20Enduser\x20ID\x20is:',_0xd19d85['id']);return getTicket(_0x4dda3d,_0x2a7460,_0xd19d85,_0x27555a,_0xe5b655);})['then'](function(_0x47a499){if(_0x47a499){logger[_0xcd35('0xa')]('The\x20Ticket\x20ID\x20is:',_0x47a499['id']);}})[_0xcd35('0x5e')](function(_0x59c72d){logger[_0xcd35('0x5c')]('['+_0xe5b655['lastevent'][_0xcd35('0x6d')]()+']'+_0xcd35('0x6e'),util[_0xcd35('0x5f')](_0x59c72d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 410bfb9..3f87faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf85=['agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Outbound','/crm/EntityInfo.do?module=Calls&id=','toUpperCase','calleridname','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','socket.io-emitter','emit','debug','stringify','forEach','includes','string','picklist','type','idField','content','toString','variable','customVariable','Variable','name','toLowerCase','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.com.cn','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','POST','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','details','Error:\x20','log','CREATE\x20ERROR','Zoho-oauthtoken\x20','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','Leads','Subject','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','lastevent','called','Call_Result','Called','complete','connect','Rejected','abandoned','timeout','Timeout','outbound','starttime'];(function(_0x458eef,_0x551783){var _0x2fb384=function(_0x28465e){while(--_0x28465e){_0x458eef['push'](_0x458eef['shift']());}};_0x2fb384(++_0x551783);}(_0xaf85,0x1e3));var _0x5af8=function(_0x356d1b,_0x2a9fb7){_0x356d1b=_0x356d1b-0x0;var _0x4c2ca4=_0xaf85[_0x356d1b];return _0x4c2ca4;};'use strict';var _=require('lodash');var rp=require(_0x5af8('0x0'));var md5=require('md5');var util=require(_0x5af8('0x1'));var intUtil=require(_0x5af8('0x2'));var moment=require(_0x5af8('0x3'));var Redis=require(_0x5af8('0x4'));var BPromise=require(_0x5af8('0x5'));var config=require(_0x5af8('0x6'));var logger=require(_0x5af8('0x7'))(_0x5af8('0x8'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5af8('0x9'))(new Redis(config['redis']));function emit(_0x3b21d8,_0x5e8137,_0x1a4ec2){io['to'](_0x3b21d8)[_0x5af8('0xa')](_0x5e8137,_0x1a4ec2);}function request(_0x7a52a5){logger[_0x5af8('0xb')]('[HTTP]',JSON[_0x5af8('0xc')](_0x7a52a5));return rp(_0x7a52a5);}function getCustomFields(_0x57caed,_0x20e691){var _0x45acf5={};if(_0x57caed['length']>0x0){_[_0x5af8('0xd')](_0x57caed,function(_0x5b0500){if(_[_0x5af8('0xe')]([_0x5af8('0xf'),_0x5af8('0x10')],_0x5b0500[_0x5af8('0x11')])&&_0x5b0500[_0x5af8('0x12')]){_0x45acf5[_0x5b0500[_0x5af8('0x12')]]=_0x5b0500[_0x5af8('0x13')][_0x5af8('0x14')]();}else if(_0x5b0500[_0x5af8('0x11')]===_0x5af8('0x15')&&_0x5b0500['variableName']&&_0x5b0500[_0x5af8('0x12')]&&_0x20e691[_0x5b0500['variableName']]){_0x45acf5[_0x5b0500['idField']]=_0x20e691[_0x5b0500['variableName']][_0x5af8('0x14')]();}else if(_0x5b0500[_0x5af8('0x11')]===_0x5af8('0x16')&&_0x5b0500[_0x5af8('0x17')]&&_0x5b0500[_0x5af8('0x17')][_0x5af8('0x18')]&&_0x5b0500[_0x5af8('0x12')]&&_0x20e691[_0x5b0500[_0x5af8('0x17')][_0x5af8('0x18')][_0x5af8('0x19')]()]){_0x45acf5[_0x5b0500['idField']]=_0x20e691[_0x5b0500[_0x5af8('0x17')][_0x5af8('0x18')][_0x5af8('0x19')]()][_0x5af8('0x14')]();}});}return _0x45acf5;}function getName(_0x5e43bb){if(_0x5e43bb['indexOf']('\x20')>0x0){var _0x2070cf=_0x5e43bb['split'](/ (.+)/);if(_0x2070cf[0x1]){return _0x2070cf;}}return[_0x5e43bb,_0x5e43bb];}var accountsTokens={};function getAccessToken(_0x525f15){return new Promise(function(_0x3c1b5d,_0xc7b4f){if(!_[_0x5af8('0x1a')](accountsTokens[_0x525f15['id']])&&!_['isNil'](accountsTokens[_0x525f15['id']][_0x5af8('0x1b')])){if(moment()[_0x5af8('0x1c')](accountsTokens[_0x525f15['id']][_0x5af8('0x1d')])){_0x3c1b5d(accountsTokens[_0x525f15['id']][_0x5af8('0x1b')]);}}var _0x466b3d;switch(_0x525f15[_0x5af8('0x1e')]){case'US':_0x466b3d=_0x5af8('0x1f');break;case'AU':_0x466b3d='https://accounts.zoho.com.au';break;case'EU':_0x466b3d=_0x5af8('0x20');break;case'IN':_0x466b3d='https://accounts.zoho.in';break;case'CN':_0x466b3d=_0x5af8('0x21');break;default:_0x466b3d='https://accounts.zoho.eu';break;}var _0xbb1179={'method':'POST','uri':_0x466b3d+'/oauth/v2/token','qs':{'refresh_token':_0x525f15[_0x5af8('0x22')],'client_id':_0x525f15[_0x5af8('0x23')],'client_secret':_0x525f15[_0x5af8('0x24')],'grant_type':_0x5af8('0x25')},'json':!![]};return rp(_0xbb1179)[_0x5af8('0x26')](function(_0x431165){accountsTokens[_0x525f15['id']]={'access_token':_0x431165[_0x5af8('0x1b')],'expires_in':moment()[_0x5af8('0x27')](_0x431165[_0x5af8('0x1d')],_0x5af8('0x28'))};_0x3c1b5d(_0x431165[_0x5af8('0x1b')]);})['catch'](function(_0x5ebf3c){logger['error']('Failing\x20creating\x20the\x20access_token',_0x5ebf3c[_0x5af8('0x29')]);_0xc7b4f(_0x5ebf3c);});});}function getUser(_0x1b741f,_0x3ae9c7,_0x2affb1,_0x5445c4){logger[_0x5af8('0x2a')](_0x5af8('0x2b'));return request({'method':_0x5af8('0x2c'),'uri':util[_0x5af8('0x2d')](_0x5af8('0x2e'),_0x3ae9c7),'qs':{'type':_0x5af8('0x2f')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1b741f},'json':!![]})[_0x5af8('0x26')](function(_0x3e9481){if(_0x3e9481[_0x5af8('0x30')]){var _0x403bdd=-0x1;if(_[_0x5af8('0x31')](_0x3e9481['users'])){if(!_[_0x5af8('0x1a')](_0x5445c4)){_0x403bdd=_[_0x5af8('0x32')](_0x3e9481[_0x5af8('0x30')],function(_0x3fedfd){return _0x3fedfd['email']===_0x5445c4;});}if(_0x403bdd>=0x0){logger[_0x5af8('0x2a')](_0x5af8('0x33'));}else{logger[_0x5af8('0x2a')](_0x5af8('0x34'));_0x403bdd=_[_0x5af8('0x32')](_0x3e9481['users'],function(_0x2711bd){return _0x2711bd[_0x5af8('0x35')][_0x5af8('0x18')]==='Administrator';});}return _0x3e9481[_0x5af8('0x30')][_0x403bdd];}else{if(_0x3e9481['user'][_0x5af8('0x35')][_0x5af8('0x18')]==='Administrator'){logger[_0x5af8('0x2a')](_0x5af8('0x34'));user=_0x3e9481[_0x5af8('0x36')];return user;}else{logger[_0x5af8('0x37')](_0x5af8('0x38'),JSON[_0x5af8('0xc')](_0x3e9481));throw new Error(_0x5af8('0x39')+JSON['stringify'](_0x3e9481));}}}else{logger[_0x5af8('0x37')](_0x5af8('0x38'),JSON[_0x5af8('0xc')](_0x3e9481));throw new Error(_0x5af8('0x39')+JSON['stringify'](_0x3e9481));}})[_0x5af8('0x3a')](function(_0x4ebfe6){console[_0x5af8('0x37')](_0x4ebfe6);});}function getZohoUser(_0x3ee75e,_0x35fb4d){return new BPromise(function(_0x492288,_0x26b1bd){request(_0x3ee75e)[_0x5af8('0x26')](function(_0x3dd2d1){var _0xd12557=null;if(_0x3dd2d1){_0xd12557=_0x3dd2d1[_0x5af8('0x3b')][0x0];_0xd12557[_0x5af8('0x3c')]=_0x35fb4d;}_0x492288(_0xd12557);})[_0x5af8('0x3a')](function(_0x1c400e){_0x26b1bd(_0x1c400e);});});}function createEndUser(_0x48237b,_0x1acdc8,_0x574d59,_0x4c54db,_0x16326b,_0x28625f){var _0x574d59=getName(_0x574d59);return request({'method':_0x5af8('0x3d'),'uri':_0x5af8('0x3e')+_0x1acdc8+_0x5af8('0x3f')+_[_0x5af8('0x40')](_0x28625f[_0x5af8('0x41')])+'s','body':{'data':[{'Last_Name':_0x574d59[0x1],'First_Name':_0x574d59[0x0],'Phone':_0x4c54db,'Owner':{'name':!_['isNil'](_0x16326b[_0x5af8('0x42')][_0x5af8('0x18')])?_0x16326b[_0x5af8('0x42')]['name']:!_[_0x5af8('0x1a')](_0x16326b[_0x5af8('0x43')])?_0x16326b[_0x5af8('0x43')]+'\x20'+_0x16326b[_0x5af8('0x44')]:_0x16326b['last_name'],'id':_0x16326b['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x48237b},'json':!![]})[_0x5af8('0x26')](function(_0x5a18b3){if(_0x5a18b3&&_0x5a18b3['data'][0x0][_0x5af8('0x45')]==='SUCCESS'){var _0x215c19=_0x5a18b3[_0x5af8('0x3b')][0x0][_0x5af8('0x46')];_0x215c19[_0x5af8('0x3c')]=_[_0x5af8('0x40')](_0x28625f[_0x5af8('0x41')])+'s';return _0x215c19;}logger[_0x5af8('0x37')](_0x5af8('0x38'),JSON[_0x5af8('0xc')](data));throw new Error(_0x5af8('0x47')+JSON[_0x5af8('0xc')](data));})[_0x5af8('0x3a')](function(_0x4d4093){console[_0x5af8('0x48')](_0x5af8('0x49'),_0x4d4093);});}function getEndUser(_0x2ecfc9,_0x575b23,_0x23c0f8,_0x4c63d5,_0x2aa118,_0x5710e8,_0x3e3500){var _0x31fb69={'method':'GET','uri':'','headers':{'Authorization':_0x5af8('0x4a')+_0x2ecfc9},'json':!![]};switch(_0x3e3500[_0x5af8('0x4b')]){case _0x5af8('0x4c'):_0x31fb69['uri']=_0x5af8('0x3e')+_0x575b23+_0x5af8('0x4d')+_0x2aa118+'))';return getZohoUser(_0x31fb69,_0x5af8('0x4e'))['then'](function(_0x2766af){if(_0x2766af)return _0x2766af;_0x31fb69[_0x5af8('0x4f')]='https://www.zohoapis.'+_0x575b23+_0x5af8('0x50')+_0x2aa118+'))';return getZohoUser(_0x31fb69,'Leads')[_0x5af8('0x26')](function(_0x50900d){if(_0x50900d)return _0x50900d;if(_0x3e3500['moduleCreate']!=_0x5af8('0x51')){return createEndUser(_0x2ecfc9,_0x575b23,_0x4c63d5,_0x2aa118,_0x5710e8,_0x3e3500);}else{return{};}});});break;case'contact':_0x31fb69[_0x5af8('0x4f')]='https://www.zohoapis.'+_0x575b23+_0x5af8('0x4d')+_0x2aa118+'))';return getZohoUser(_0x31fb69,'Contacts')['then'](function(_0x17257b){if(_0x17257b)return _0x17257b;if(_0x3e3500[_0x5af8('0x41')]!=_0x5af8('0x51')){return createEndUser(_0x2ecfc9,_0x575b23,_0x4c63d5,_0x2aa118,_0x5710e8,_0x3e3500);}else{return{};}});break;case'lead':_0x31fb69[_0x5af8('0x4f')]='https://www.zohoapis.'+_0x575b23+_0x5af8('0x50')+_0x2aa118+'))';return getZohoUser(_0x31fb69,_0x5af8('0x52'))[_0x5af8('0x26')](function(_0x59389f){if(_0x59389f)return _0x59389f;if(_0x3e3500[_0x5af8('0x41')]!=_0x5af8('0x51')){return createEndUser(_0x2ecfc9,_0x575b23,_0x4c63d5,_0x2aa118,_0x5710e8,_0x3e3500);}else{return{};}});break;}}function getCall(_0x564ce2,_0x3e454a,_0x46f76f,_0x1ce9c0,_0xbe009,_0x15a129,_0x131ed5,_0x472f7d){logger['info']('Creating\x20new\x20call...');var _0x2bea2d={};_0x2bea2d['Owner']={'name':!_[_0x5af8('0x1a')](_0x1ce9c0[_0x5af8('0x42')][_0x5af8('0x18')])&&!_[_0x5af8('0x1a')](_0x1ce9c0[_0x5af8('0x35')][_0x5af8('0x18')])&&_0x1ce9c0[_0x5af8('0x35')][_0x5af8('0x18')]==='administrator'?_0x1ce9c0['role'][_0x5af8('0x18')]:!_[_0x5af8('0x1a')](_0x1ce9c0[_0x5af8('0x43')])?_0x1ce9c0[_0x5af8('0x43')]+'\x20'+_0x1ce9c0[_0x5af8('0x44')]:_0x1ce9c0[_0x5af8('0x44')],'id':_0x1ce9c0['id']};_0x2bea2d[_0x5af8('0x53')]=intUtil['getString'](_0x15a129[_0x5af8('0x54')],_0x131ed5,'\x20');_0x2bea2d[_0x5af8('0x55')]=intUtil['getString'](_0x15a129[_0x5af8('0x56')],_0x131ed5,'\x0a');if(_0xbe009[_0x5af8('0x3c')]==='Contacts'){_0x2bea2d[_0x5af8('0x57')]={'name':!_[_0x5af8('0x1a')](_0xbe009[_0x5af8('0x58')])?_0xbe009[_0x5af8('0x58')]:!_[_0x5af8('0x1a')](_0xbe009[_0x5af8('0x59')])?_0xbe009[_0x5af8('0x59')]+'\x20'+_0xbe009[_0x5af8('0x5a')]:_0xbe009['Last_Name'],'id':_0xbe009['id']};}if(_0xbe009[_0x5af8('0x3c')]===_0x5af8('0x52')){_0x2bea2d[_0x5af8('0x5b')]={'name':!_[_0x5af8('0x1a')](_0xbe009[_0x5af8('0x58')])?_0xbe009[_0x5af8('0x58')]:!_[_0x5af8('0x1a')](_0xbe009[_0x5af8('0x59')])?_0xbe009['First_Name']+'\x20'+_0xbe009[_0x5af8('0x5a')]:_0xbe009[_0x5af8('0x5a')],'id':_0xbe009['id']};_0x2bea2d[_0x5af8('0x5c')]=_[_0x5af8('0x40')](_0xbe009[_0x5af8('0x3c')]);}if(_0x131ed5[_0x5af8('0x5d')]){_0x2bea2d[_0x5af8('0x5e')]=moment[_0x5af8('0x5f')](parseInt(_0x131ed5[_0x5af8('0x5d')])*0x3e8)['format'](_0x5af8('0x60'));}else if(_0x131ed5[_0x5af8('0x61')]&&_0x131ed5['endtime']){_0x2bea2d[_0x5af8('0x5e')]=moment[_0x5af8('0x5f')](moment(_0x131ed5[_0x5af8('0x62')],_0x5af8('0x63'))[_0x5af8('0x64')](moment(_0x131ed5['starttime'],_0x5af8('0x63'))))['format']('mm:ss');}switch(_0x131ed5[_0x5af8('0x65')]){case _0x5af8('0x66'):_0x2bea2d[_0x5af8('0x67')]=_0x5af8('0x68');break;case _0x5af8('0x69'):case _0x5af8('0x6a'):_0x2bea2d[_0x5af8('0x67')]='Answered';break;case'rejected':_0x2bea2d['Call_Result']=_0x5af8('0x6b');break;case _0x5af8('0x6c'):_0x2bea2d[_0x5af8('0x67')]='Abandoned';break;case _0x5af8('0x6d'):_0x2bea2d[_0x5af8('0x67')]=_0x5af8('0x6e');default:}_0x2bea2d['Call_Start_Time']=(_0x472f7d===_0x5af8('0x6f')?moment(_0x131ed5[_0x5af8('0x70')])[_0x5af8('0x2d')](_0x5af8('0x63')):moment(_0x131ed5[_0x5af8('0x71')])['format'](_0x5af8('0x63')))||moment()[_0x5af8('0x2d')]('YYYY-MM-DDTHH:mm:ss');_0x2bea2d[_0x5af8('0x72')]=_0x472f7d||_0x5af8('0x73');_0x2bea2d=_[_0x5af8('0x74')](_0x2bea2d,getCustomFields(_0x15a129[_0x5af8('0x75')],_0x131ed5));return request({'method':_0x5af8('0x3d'),'uri':_0x5af8('0x3e')+_0x3e454a+_0x5af8('0x76'),'headers':{'Authorization':_0x5af8('0x4a')+_0x564ce2},'body':{'data':[_0x2bea2d]},'json':!![]})['then'](function(_0x14a483){if(_0x14a483&&_0x14a483[_0x5af8('0x3b')][0x0]['code']==='SUCCESS'){logger[_0x5af8('0x2a')](_0x5af8('0x77'));return{'id':_0x14a483[_0x5af8('0x3b')][0x0][_0x5af8('0x46')]['id']};}})[_0x5af8('0x3a')](function(_0x32ad03){logger['info'](_0x5af8('0x78'),_0x32ad03[_0x5af8('0x29')]);console[_0x5af8('0x48')](_0x5af8('0x78'),_0x32ad03);});}exports[_0x5af8('0x79')]=function(_0x210e21,_0x7c5d26,_0x30cb50,_0x49eb28,_0x5a9b3c,_0x26ebf6){var _0x35fe10,_0x41cd66,_0x5e2986;_0x26ebf6[_0x5af8('0x7a')]=intUtil[_0x5af8('0x7b')](_0x26ebf6['host']);_0x26ebf6[_0x5af8('0x7c')]=intUtil[_0x5af8('0x7b')](_0x26ebf6[_0x5af8('0x7c')]);if(_0x5a9b3c&&_0x5a9b3c[_0x5af8('0x7d')]){logger[_0x5af8('0x2a')](_0x5af8('0x7e'),'Recording\x20is\x20enabled!');_0x7c5d26[_0x5af8('0x7f')]=_0x26ebf6[_0x5af8('0x7c')]+_0x5af8('0x80')+_0x7c5d26[_0x5af8('0x81')]+_0x5af8('0x82')+md5(_0x7c5d26['uniqueid']);}else{_0x7c5d26[_0x5af8('0x7f')]='';}var _0x112828=_0x26ebf6[_0x5af8('0x7a')]===_0x5af8('0x83')?'eu':_0x5af8('0x84');return getAccessToken(_0x26ebf6)[_0x5af8('0x26')](function(_0x1e7445){_0x5e2986=_0x1e7445;return getUser(_0x5e2986,_0x112828,_0x26ebf6,_0x49eb28[_0x5af8('0x85')]);})[_0x5af8('0x26')](function(_0x123104){_0x35fe10=_0x123104;logger[_0x5af8('0x2a')](_0x5af8('0x86'),_0x35fe10['id']);return getEndUser(_0x5e2986,_0x112828,_0x26ebf6,_0x7c5d26['calleridname'],_0x7c5d26[_0x5af8('0x87')],_0x35fe10,_0x30cb50);})[_0x5af8('0x26')](function(_0x9bba0a){_0x41cd66=_0x9bba0a;return getCall(_0x5e2986,_0x112828,_0x26ebf6,_0x35fe10,_0x41cd66,_0x30cb50,_0x7c5d26,_0x5af8('0x73'));})[_0x5af8('0x26')](function(_0x3a0927){if(_0x3a0927){logger['info'](_0x5af8('0x88'),_0x3a0927['id']);logger[_0x5af8('0x2a')]('[QUEUE]',_0x5af8('0x89'));emit(util[_0x5af8('0x2d')](_0x5af8('0x8a'),_0x49eb28[_0x5af8('0x18')]),'trigger:browser:url',{'uri':'https://crm.'+_0x26ebf6[_0x5af8('0x7a')]+'/crm/EntityInfo.do?module=Calls&id='+_0x3a0927['id']});}})[_0x5af8('0x3a')](function(_0x53458e){logger[_0x5af8('0x37')](_0x5af8('0x7e'),JSON[_0x5af8('0xc')](_0x53458e));});};exports[_0x5af8('0x6f')]=function(_0x2b40f1,_0x5728f0,_0x5cc150,_0x3c2d1f,_0x5ac01c,_0x2f4af5,_0x358291){var _0x3619f1,_0x5400ce,_0x1522c7;_0x2f4af5['host']=intUtil['stripTrailingSlash'](_0x2f4af5['host']);_0x2f4af5[_0x5af8('0x7c')]=intUtil[_0x5af8('0x7b')](_0x2f4af5[_0x5af8('0x7c')]);if(_0x358291&&_0x358291[_0x5af8('0x8b')]&&_0x358291[_0x5af8('0x8b')]!==_0x5af8('0x8c')){logger[_0x5af8('0x2a')](_0x5af8('0x8d'),_0x5af8('0x8e'));_0x5728f0[_0x5af8('0x7f')]=_0x2f4af5[_0x5af8('0x7c')]+_0x5af8('0x80')+_0x5728f0[_0x5af8('0x81')]+_0x5af8('0x82')+md5(_0x5728f0[_0x5af8('0x81')]);}var _0x3451e2=_0x2f4af5[_0x5af8('0x7a')]===_0x5af8('0x83')?'eu':_0x5af8('0x84');return getAccessToken(_0x2f4af5)[_0x5af8('0x26')](function(_0x386bc7){_0x1522c7=_0x386bc7;return getUser(_0x1522c7,_0x3451e2,_0x2f4af5,_0x3c2d1f[_0x5af8('0x85')]);})[_0x5af8('0x26')](function(_0x465a08){_0x3619f1=_0x465a08;logger[_0x5af8('0x2a')](_0x5af8('0x86'),_0x3619f1['id']);return getEndUser(_0x1522c7,_0x3451e2,_0x2f4af5,_0x5728f0[_0x5af8('0x8f')],_0x5728f0[_0x5af8('0x90')],_0x3619f1,_0x5cc150);})[_0x5af8('0x26')](function(_0x1b2bd8){_0x5400ce=_0x1b2bd8;return getCall(_0x1522c7,_0x3451e2,_0x2f4af5,_0x3619f1,_0x5400ce,_0x5cc150,_0x5728f0,_0x5af8('0x91'));})['then'](function(_0x1debe4){if(_0x1debe4){logger[_0x5af8('0x2a')](_0x5af8('0x88'),_0x1debe4['id']);logger[_0x5af8('0x2a')](_0x5af8('0x8d'),_0x5af8('0x89'));emit(util[_0x5af8('0x2d')](_0x5af8('0x8a'),_0x3c2d1f[_0x5af8('0x18')]),'trigger:browser:url',{'uri':'https://crm.'+_0x2f4af5[_0x5af8('0x7a')]+_0x5af8('0x92')+_0x1debe4['id']});}})['catch'](function(_0x495a93){logger['error'](_0x5af8('0x8d'),JSON[_0x5af8('0xc')](_0x495a93));});};exports['unmanaged']=function(_0x5d1dfb,_0x21911d,_0x21db85,_0x4f872f,_0x2349b8,_0x4694b7){var _0x268f18,_0x434aeb,_0xcfc87a;_0x4694b7[_0x5af8('0x7a')]=intUtil[_0x5af8('0x7b')](_0x4694b7[_0x5af8('0x7a')]);_0x4694b7['serverUrl']=intUtil['stripTrailingSlash'](_0x4694b7[_0x5af8('0x7c')]);if(_0x2349b8&&_0x2349b8[_0x5af8('0x7d')]){logger[_0x5af8('0x2a')]('['+_0x21911d['lastevent'][_0x5af8('0x93')]()+']','Recording\x20is\x20enabled!');_0x21911d[_0x5af8('0x7f')]=_0x4694b7[_0x5af8('0x7c')]+_0x5af8('0x80')+_0x21911d[_0x5af8('0x81')]+_0x5af8('0x82')+md5(_0x21911d['uniqueid']);}else{_0x21911d[_0x5af8('0x7f')]='';}var _0x398038=_0x4694b7[_0x5af8('0x7a')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x4694b7)[_0x5af8('0x26')](function(_0x554e96){_0xcfc87a=_0x554e96;return getUser(_0xcfc87a,_0x398038,_0x4694b7);})['then'](function(_0xa21437){_0x268f18=_0xa21437;logger['info'](_0x5af8('0x86'),_0x268f18['id']);return getEndUser(_0xcfc87a,_0x398038,_0x4694b7,_0x21911d[_0x5af8('0x94')],_0x21911d[_0x5af8('0x87')],_0x268f18,_0x21db85);})[_0x5af8('0x26')](function(_0xf9b03c){_0x434aeb=_0xf9b03c;return getCall(_0xcfc87a,_0x398038,_0x4694b7,_0x268f18,_0x434aeb,_0x21db85,_0x21911d,_0x5af8('0x73'));})[_0x5af8('0x26')](function(_0x4239ab){if(_0x4239ab){logger['info'](_0x5af8('0x88'),_0x4239ab['id']);}})[_0x5af8('0x3a')](function(_0x4274a9){logger[_0x5af8('0x37')]('['+_0x21911d[_0x5af8('0x65')][_0x5af8('0x93')]()+']',JSON[_0x5af8('0xc')](_0x4274a9));});};
\ No newline at end of file
+var _0x1edd=['talktime','Call_Duration','utc','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','starttime','lastevent','Called','complete','connect','Call_Result','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','/downloads?type=uniqueid&token=','recordingURL','zoho.eu','com','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','uniqueid','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','md5','util','./util','moment','bluebird','../../../../config/environment','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','seconds','error','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','startCase','moduleCreate','role','last_name','code','details','catch','log','CREATE\x20ERROR','uri','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','nothing','lead','Creating\x20new\x20call...','Owner','administrator','first_name','getString','Subjects','Description','Who_Id','Full_Name','First_Name','Last_Name'];(function(_0x544099,_0x372b30){var _0x20ab09=function(_0x149613){while(--_0x149613){_0x544099['push'](_0x544099['shift']());}};_0x20ab09(++_0x372b30);}(_0x1edd,0xcd));var _0xd1ed=function(_0xc14df7,_0x163f90){_0xc14df7=_0xc14df7-0x0;var _0x34a445=_0x1edd[_0xc14df7];return _0x34a445;};'use strict';var _=require(_0xd1ed('0x0'));var rp=require(_0xd1ed('0x1'));var md5=require(_0xd1ed('0x2'));var util=require(_0xd1ed('0x3'));var intUtil=require(_0xd1ed('0x4'));var moment=require(_0xd1ed('0x5'));var Redis=require('ioredis');var BPromise=require(_0xd1ed('0x6'));var config=require(_0xd1ed('0x7'));var logger=require('../../../../config/logger')(_0xd1ed('0x8'));config[_0xd1ed('0x9')]=_['defaults'](config['redis'],{'host':_0xd1ed('0xa'),'port':0x18eb});var io=require(_0xd1ed('0xb'))(new Redis(config[_0xd1ed('0x9')]));function emit(_0x43a437,_0x2d36e9,_0x4e7531){io['to'](_0x43a437)[_0xd1ed('0xc')](_0x2d36e9,_0x4e7531);}function request(_0x1a4ada){logger[_0xd1ed('0xd')](_0xd1ed('0xe'),JSON[_0xd1ed('0xf')](_0x1a4ada));return rp(_0x1a4ada);}function getCustomFields(_0x5107a6,_0x5ee467){var _0x28b255={};if(_0x5107a6['length']>0x0){_[_0xd1ed('0x10')](_0x5107a6,function(_0x57c97e){if(_[_0xd1ed('0x11')]([_0xd1ed('0x12'),'picklist'],_0x57c97e[_0xd1ed('0x13')])&&_0x57c97e[_0xd1ed('0x14')]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x57c97e[_0xd1ed('0x15')][_0xd1ed('0x16')]();}else if(_0x57c97e[_0xd1ed('0x13')]==='variable'&&_0x57c97e[_0xd1ed('0x17')]&&_0x57c97e['idField']&&_0x5ee467[_0x57c97e[_0xd1ed('0x17')]]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x5ee467[_0x57c97e[_0xd1ed('0x17')]]['toString']();}else if(_0x57c97e[_0xd1ed('0x13')]===_0xd1ed('0x18')&&_0x57c97e['Variable']&&_0x57c97e[_0xd1ed('0x19')][_0xd1ed('0x1a')]&&_0x57c97e['idField']&&_0x5ee467[_0x57c97e['Variable'][_0xd1ed('0x1a')][_0xd1ed('0x1b')]()]){_0x28b255[_0x57c97e[_0xd1ed('0x14')]]=_0x5ee467[_0x57c97e[_0xd1ed('0x19')]['name'][_0xd1ed('0x1b')]()][_0xd1ed('0x16')]();}});}return _0x28b255;}function getName(_0x43254a){if(_0x43254a[_0xd1ed('0x1c')]('\x20')>0x0){var _0x35a50a=_0x43254a['split'](/ (.+)/);if(_0x35a50a[0x1]){return _0x35a50a;}}return[_0x43254a,_0x43254a];}var accountsTokens={};function getAccessToken(_0x4b5a5e){return new Promise(function(_0x643fed,_0x3c7087){if(!_[_0xd1ed('0x1d')](accountsTokens[_0x4b5a5e['id']])&&!_['isNil'](accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x1e')])){if(moment()[_0xd1ed('0x1f')](accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x20')])){_0x643fed(accountsTokens[_0x4b5a5e['id']][_0xd1ed('0x1e')]);}}var _0x5e664f;switch(_0x4b5a5e[_0xd1ed('0x21')]){case'US':_0x5e664f=_0xd1ed('0x22');break;case'AU':_0x5e664f=_0xd1ed('0x23');break;case'EU':_0x5e664f='https://accounts.zoho.eu';break;case'IN':_0x5e664f=_0xd1ed('0x24');break;case'CN':_0x5e664f=_0xd1ed('0x25');break;default:_0x5e664f=_0xd1ed('0x26');break;}var _0x34f6d9={'method':_0xd1ed('0x27'),'uri':_0x5e664f+_0xd1ed('0x28'),'qs':{'refresh_token':_0x4b5a5e[_0xd1ed('0x29')],'client_id':_0x4b5a5e[_0xd1ed('0x2a')],'client_secret':_0x4b5a5e['clientSecret'],'grant_type':_0xd1ed('0x2b')},'json':!![]};return rp(_0x34f6d9)[_0xd1ed('0x2c')](function(_0x4797cc){accountsTokens[_0x4b5a5e['id']]={'access_token':_0x4797cc[_0xd1ed('0x1e')],'expires_in':moment()[_0xd1ed('0x2d')](_0x4797cc[_0xd1ed('0x20')],_0xd1ed('0x2e'))};_0x643fed(_0x4797cc[_0xd1ed('0x1e')]);})['catch'](function(_0x1bdb24){logger[_0xd1ed('0x2f')]('Failing\x20creating\x20the\x20access_token',_0x1bdb24['stack']);_0x3c7087(_0x1bdb24);});});}function getUser(_0x2d701f,_0x2f6dc1,_0x4e7b75,_0x429f8f){logger[_0xd1ed('0x30')](_0xd1ed('0x31'));return request({'method':_0xd1ed('0x32'),'uri':util[_0xd1ed('0x33')](_0xd1ed('0x34'),_0x2f6dc1),'qs':{'type':_0xd1ed('0x35')},'headers':{'Authorization':_0xd1ed('0x36')+_0x2d701f},'json':!![]})[_0xd1ed('0x2c')](function(_0x5ae1e1){if(_0x5ae1e1[_0xd1ed('0x37')]){var _0x3e9e73=-0x1;if(_[_0xd1ed('0x38')](_0x5ae1e1[_0xd1ed('0x37')])){if(!_['isNil'](_0x429f8f)){_0x3e9e73=_[_0xd1ed('0x39')](_0x5ae1e1['users'],function(_0x96697e){return _0x96697e[_0xd1ed('0x3a')]===_0x429f8f;});}if(_0x3e9e73>=0x0){logger['info'](_0xd1ed('0x3b'));}else{logger['info'](_0xd1ed('0x3c'));_0x3e9e73=_[_0xd1ed('0x39')](_0x5ae1e1['users'],function(_0x2e817c){return _0x2e817c[_0xd1ed('0x3d')][_0xd1ed('0x1a')]===_0xd1ed('0x3e');});}return _0x5ae1e1['users'][_0x3e9e73];}else{if(_0x5ae1e1[_0xd1ed('0x3f')][_0xd1ed('0x3d')][_0xd1ed('0x1a')]===_0xd1ed('0x3e')){logger['info'](_0xd1ed('0x3c'));user=_0x5ae1e1['user'];return user;}else{logger['error'](_0xd1ed('0x40'),JSON[_0xd1ed('0xf')](_0x5ae1e1));throw new Error(_0xd1ed('0x41')+JSON[_0xd1ed('0xf')](_0x5ae1e1));}}}else{logger[_0xd1ed('0x2f')](_0xd1ed('0x40'),JSON['stringify'](_0x5ae1e1));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON['stringify'](_0x5ae1e1));}})['catch'](function(_0x30afa0){console[_0xd1ed('0x2f')](_0x30afa0);});}function getZohoUser(_0x4b737f,_0x16248e){return new BPromise(function(_0x4f0c99,_0x42fd03){request(_0x4b737f)[_0xd1ed('0x2c')](function(_0x3aec31){var _0x338ea6=null;if(_0x3aec31){_0x338ea6=_0x3aec31[_0xd1ed('0x42')][0x0];_0x338ea6[_0xd1ed('0x43')]=_0x16248e;}_0x4f0c99(_0x338ea6);})['catch'](function(_0x826954){_0x42fd03(_0x826954);});});}function createEndUser(_0x1f2f15,_0x4ec267,_0x54149a,_0x54c9bb,_0x28f207,_0x1bb23a){var _0x54149a=getName(_0x54149a);return request({'method':'POST','uri':_0xd1ed('0x44')+_0x4ec267+'/crm/v2/'+_[_0xd1ed('0x45')](_0x1bb23a[_0xd1ed('0x46')])+'s','body':{'data':[{'Last_Name':_0x54149a[0x1],'First_Name':_0x54149a[0x0],'Phone':_0x54c9bb,'Owner':{'name':!_[_0xd1ed('0x1d')](_0x28f207[_0xd1ed('0x47')][_0xd1ed('0x1a')])?_0x28f207[_0xd1ed('0x47')]['name']:!_[_0xd1ed('0x1d')](_0x28f207['first_name'])?_0x28f207['first_name']+'\x20'+_0x28f207[_0xd1ed('0x48')]:_0x28f207[_0xd1ed('0x48')],'id':_0x28f207['id']}}]},'headers':{'Authorization':_0xd1ed('0x36')+_0x1f2f15},'json':!![]})[_0xd1ed('0x2c')](function(_0x1aeabd){if(_0x1aeabd&&_0x1aeabd['data'][0x0][_0xd1ed('0x49')]==='SUCCESS'){var _0xe6279e=_0x1aeabd[_0xd1ed('0x42')][0x0][_0xd1ed('0x4a')];_0xe6279e[_0xd1ed('0x43')]=_[_0xd1ed('0x45')](_0x1bb23a[_0xd1ed('0x46')])+'s';return _0xe6279e;}logger[_0xd1ed('0x2f')](_0xd1ed('0x40'),JSON[_0xd1ed('0xf')](data));throw new Error('Error:\x20'+JSON[_0xd1ed('0xf')](data));})[_0xd1ed('0x4b')](function(_0x2fc672){console[_0xd1ed('0x4c')](_0xd1ed('0x4d'),_0x2fc672);});}function getEndUser(_0x189aaf,_0x27bd30,_0x14d4ce,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff){var _0x1e2ed5={'method':'GET','uri':'','headers':{'Authorization':_0xd1ed('0x36')+_0x189aaf},'json':!![]};switch(_0x1e85ff['moduleSearch']){case'contact_lead':_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x4f'))['then'](function(_0x1ff97d){if(_0x1ff97d)return _0x1ff97d;_0x1e2ed5['uri']='https://www.zohoapis.'+_0x27bd30+_0xd1ed('0x50')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x51'))[_0xd1ed('0x2c')](function(_0xa2f036){if(_0xa2f036)return _0xa2f036;if(_0x1e85ff[_0xd1ed('0x46')]!='nothing'){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});});break;case _0xd1ed('0x52'):_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+_0xd1ed('0x53')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,'Contacts')['then'](function(_0x4deade){if(_0x4deade)return _0x4deade;if(_0x1e85ff[_0xd1ed('0x46')]!=_0xd1ed('0x54')){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});break;case _0xd1ed('0x55'):_0x1e2ed5[_0xd1ed('0x4e')]=_0xd1ed('0x44')+_0x27bd30+_0xd1ed('0x50')+_0x47b2aa+'))';return getZohoUser(_0x1e2ed5,_0xd1ed('0x51'))[_0xd1ed('0x2c')](function(_0x50ec7e){if(_0x50ec7e)return _0x50ec7e;if(_0x1e85ff[_0xd1ed('0x46')]!=_0xd1ed('0x54')){return createEndUser(_0x189aaf,_0x27bd30,_0x111e39,_0x47b2aa,_0x1fa50e,_0x1e85ff);}else{return{};}});break;}}function getCall(_0x425ccc,_0x31724d,_0x4579be,_0x4be686,_0x357b24,_0x2e4e31,_0x30b984,_0xf8691a){logger['info'](_0xd1ed('0x56'));var _0x236de0={};_0x236de0[_0xd1ed('0x57')]={'name':!_['isNil'](_0x4be686[_0xd1ed('0x47')][_0xd1ed('0x1a')])&&!_[_0xd1ed('0x1d')](_0x4be686[_0xd1ed('0x3d')][_0xd1ed('0x1a')])&&_0x4be686['profile'][_0xd1ed('0x1a')]===_0xd1ed('0x58')?_0x4be686[_0xd1ed('0x47')][_0xd1ed('0x1a')]:!_[_0xd1ed('0x1d')](_0x4be686[_0xd1ed('0x59')])?_0x4be686[_0xd1ed('0x59')]+'\x20'+_0x4be686['last_name']:_0x4be686['last_name'],'id':_0x4be686['id']};_0x236de0['Subject']=intUtil[_0xd1ed('0x5a')](_0x2e4e31[_0xd1ed('0x5b')],_0x30b984,'\x20');_0x236de0[_0xd1ed('0x5c')]=intUtil[_0xd1ed('0x5a')](_0x2e4e31['Descriptions'],_0x30b984,'\x0a');if(_0x357b24[_0xd1ed('0x43')]===_0xd1ed('0x4f')){_0x236de0[_0xd1ed('0x5d')]={'name':!_[_0xd1ed('0x1d')](_0x357b24['Full_Name'])?_0x357b24[_0xd1ed('0x5e')]:!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5f')])?_0x357b24[_0xd1ed('0x5f')]+'\x20'+_0x357b24[_0xd1ed('0x60')]:_0x357b24['Last_Name'],'id':_0x357b24['id']};}if(_0x357b24['enduserType']===_0xd1ed('0x51')){_0x236de0['What_Id']={'name':!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5e')])?_0x357b24['Full_Name']:!_[_0xd1ed('0x1d')](_0x357b24[_0xd1ed('0x5f')])?_0x357b24[_0xd1ed('0x5f')]+'\x20'+_0x357b24[_0xd1ed('0x60')]:_0x357b24[_0xd1ed('0x60')],'id':_0x357b24['id']};_0x236de0['$se_module']=_[_0xd1ed('0x45')](_0x357b24[_0xd1ed('0x43')]);}if(_0x30b984[_0xd1ed('0x61')]){_0x236de0[_0xd1ed('0x62')]=moment[_0xd1ed('0x63')](parseInt(_0x30b984[_0xd1ed('0x61')])*0x3e8)[_0xd1ed('0x33')](_0xd1ed('0x64'));}else if(_0x30b984['answertime']&&_0x30b984[_0xd1ed('0x65')]){_0x236de0['Call_Duration']=moment[_0xd1ed('0x63')](moment(_0x30b984[_0xd1ed('0x65')],_0xd1ed('0x66'))['diff'](moment(_0x30b984[_0xd1ed('0x67')],_0xd1ed('0x66'))))['format'](_0xd1ed('0x64'));}switch(_0x30b984[_0xd1ed('0x68')]){case'called':_0x236de0['Call_Result']=_0xd1ed('0x69');break;case _0xd1ed('0x6a'):case _0xd1ed('0x6b'):_0x236de0[_0xd1ed('0x6c')]=_0xd1ed('0x6d');break;case _0xd1ed('0x6e'):_0x236de0['Call_Result']=_0xd1ed('0x6f');break;case _0xd1ed('0x70'):_0x236de0[_0xd1ed('0x6c')]='Abandoned';break;case _0xd1ed('0x71'):_0x236de0['Call_Result']='Timeout';default:}_0x236de0[_0xd1ed('0x72')]=(_0xf8691a===_0xd1ed('0x73')?moment(_0x30b984[_0xd1ed('0x67')])[_0xd1ed('0x33')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x30b984[_0xd1ed('0x74')])[_0xd1ed('0x33')](_0xd1ed('0x66')))||moment()[_0xd1ed('0x33')]('YYYY-MM-DDTHH:mm:ss');_0x236de0[_0xd1ed('0x75')]=_0xf8691a||'Inbound';_0x236de0=_[_0xd1ed('0x76')](_0x236de0,getCustomFields(_0x2e4e31[_0xd1ed('0x77')],_0x30b984));return request({'method':_0xd1ed('0x27'),'uri':_0xd1ed('0x44')+_0x31724d+_0xd1ed('0x78'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x425ccc},'body':{'data':[_0x236de0]},'json':!![]})[_0xd1ed('0x2c')](function(_0x11bf72){if(_0x11bf72&&_0x11bf72[_0xd1ed('0x42')][0x0]['code']==='SUCCESS'){logger[_0xd1ed('0x30')](_0xd1ed('0x79'));return{'id':_0x11bf72['data'][0x0][_0xd1ed('0x4a')]['id']};}})[_0xd1ed('0x4b')](function(_0x5e72c4){logger['info'](_0xd1ed('0x7a'),_0x5e72c4['stack']);console[_0xd1ed('0x4c')](_0xd1ed('0x7a'),_0x5e72c4);});}exports[_0xd1ed('0x7b')]=function(_0x34e6bc,_0x2cbe52,_0x5b4800,_0x15e92b,_0x294c5b,_0x1a820f){var _0x332ad9,_0x45f1c8,_0x326536;_0x1a820f[_0xd1ed('0x7c')]=intUtil[_0xd1ed('0x7d')](_0x1a820f['host']);_0x1a820f[_0xd1ed('0x7e')]=intUtil['stripTrailingSlash'](_0x1a820f[_0xd1ed('0x7e')]);if(_0x294c5b&&_0x294c5b[_0xd1ed('0x7f')]){logger[_0xd1ed('0x30')](_0xd1ed('0x80'),_0xd1ed('0x81'));_0x2cbe52['recordingURL']=_0x1a820f[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x2cbe52['uniqueid']+_0xd1ed('0x83')+md5(_0x2cbe52['uniqueid']);}else{_0x2cbe52[_0xd1ed('0x84')]='';}var _0x1a8d42=_0x1a820f['host']===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x1a820f)[_0xd1ed('0x2c')](function(_0x56ec47){_0x326536=_0x56ec47;return getUser(_0x326536,_0x1a8d42,_0x1a820f,_0x15e92b[_0xd1ed('0x3a')]);})['then'](function(_0x5368d4){_0x332ad9=_0x5368d4;logger[_0xd1ed('0x30')]('The\x20User\x20ID\x20is:',_0x332ad9['id']);return getEndUser(_0x326536,_0x1a8d42,_0x1a820f,_0x2cbe52[_0xd1ed('0x87')],_0x2cbe52[_0xd1ed('0x88')],_0x332ad9,_0x5b4800);})[_0xd1ed('0x2c')](function(_0x4c1850){_0x45f1c8=_0x4c1850;return getCall(_0x326536,_0x1a8d42,_0x1a820f,_0x332ad9,_0x45f1c8,_0x5b4800,_0x2cbe52,_0xd1ed('0x89'));})[_0xd1ed('0x2c')](function(_0x141405){if(_0x141405){logger[_0xd1ed('0x30')](_0xd1ed('0x8a'),_0x141405['id']);logger[_0xd1ed('0x30')](_0xd1ed('0x80'),_0xd1ed('0x8b'));emit(util[_0xd1ed('0x33')](_0xd1ed('0x8c'),_0x15e92b[_0xd1ed('0x1a')]),_0xd1ed('0x8d'),{'uri':_0xd1ed('0x8e')+_0x1a820f[_0xd1ed('0x7c')]+_0xd1ed('0x8f')+_0x141405['id']});}})[_0xd1ed('0x4b')](function(_0x180d31){logger['error'](_0xd1ed('0x80'),JSON[_0xd1ed('0xf')](_0x180d31));});};exports[_0xd1ed('0x73')]=function(_0x2535bb,_0x346422,_0x4abfd0,_0x2a887b,_0x2ba7f5,_0x4173ce,_0x2de7de){var _0x2776f8,_0x199d8d,_0x122eaf;_0x4173ce[_0xd1ed('0x7c')]=intUtil[_0xd1ed('0x7d')](_0x4173ce[_0xd1ed('0x7c')]);_0x4173ce[_0xd1ed('0x7e')]=intUtil[_0xd1ed('0x7d')](_0x4173ce[_0xd1ed('0x7e')]);if(_0x2de7de&&_0x2de7de[_0xd1ed('0x90')]&&_0x2de7de[_0xd1ed('0x90')]!==_0xd1ed('0x91')){logger['info'](_0xd1ed('0x92'),_0xd1ed('0x81'));_0x346422[_0xd1ed('0x84')]=_0x4173ce[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x346422[_0xd1ed('0x93')]+_0xd1ed('0x83')+md5(_0x346422[_0xd1ed('0x93')]);}var _0x42b3d5=_0x4173ce[_0xd1ed('0x7c')]===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x4173ce)[_0xd1ed('0x2c')](function(_0xa30f59){_0x122eaf=_0xa30f59;return getUser(_0x122eaf,_0x42b3d5,_0x4173ce,_0x2a887b['email']);})[_0xd1ed('0x2c')](function(_0x16e444){_0x2776f8=_0x16e444;logger[_0xd1ed('0x30')]('The\x20User\x20ID\x20is:',_0x2776f8['id']);return getEndUser(_0x122eaf,_0x42b3d5,_0x4173ce,_0x346422['destcalleridname'],_0x346422['destcalleridnum'],_0x2776f8,_0x4abfd0);})['then'](function(_0x57776b){_0x199d8d=_0x57776b;return getCall(_0x122eaf,_0x42b3d5,_0x4173ce,_0x2776f8,_0x199d8d,_0x4abfd0,_0x346422,'Outbound');})['then'](function(_0xef3e10){if(_0xef3e10){logger[_0xd1ed('0x30')]('The\x20Call\x20ID\x20is:',_0xef3e10['id']);logger[_0xd1ed('0x30')](_0xd1ed('0x92'),_0xd1ed('0x8b'));emit(util[_0xd1ed('0x33')]('user:%s',_0x2a887b[_0xd1ed('0x1a')]),_0xd1ed('0x8d'),{'uri':_0xd1ed('0x8e')+_0x4173ce[_0xd1ed('0x7c')]+_0xd1ed('0x8f')+_0xef3e10['id']});}})['catch'](function(_0x6cdc98){logger[_0xd1ed('0x2f')](_0xd1ed('0x92'),JSON[_0xd1ed('0xf')](_0x6cdc98));});};exports[_0xd1ed('0x94')]=function(_0x1aba92,_0x43e818,_0x459114,_0x27e487,_0x3dd5b7,_0x452b88){var _0x410711,_0xb8392b,_0x23c3d8;_0x452b88[_0xd1ed('0x7c')]=intUtil['stripTrailingSlash'](_0x452b88[_0xd1ed('0x7c')]);_0x452b88[_0xd1ed('0x7e')]=intUtil['stripTrailingSlash'](_0x452b88[_0xd1ed('0x7e')]);if(_0x3dd5b7&&_0x3dd5b7[_0xd1ed('0x7f')]){logger[_0xd1ed('0x30')]('['+_0x43e818[_0xd1ed('0x68')][_0xd1ed('0x95')]()+']',_0xd1ed('0x81'));_0x43e818[_0xd1ed('0x84')]=_0x452b88[_0xd1ed('0x7e')]+_0xd1ed('0x82')+_0x43e818['uniqueid']+_0xd1ed('0x83')+md5(_0x43e818['uniqueid']);}else{_0x43e818[_0xd1ed('0x84')]='';}var _0x398ac1=_0x452b88[_0xd1ed('0x7c')]===_0xd1ed('0x85')?'eu':_0xd1ed('0x86');return getAccessToken(_0x452b88)[_0xd1ed('0x2c')](function(_0x1b5121){_0x23c3d8=_0x1b5121;return getUser(_0x23c3d8,_0x398ac1,_0x452b88);})[_0xd1ed('0x2c')](function(_0x1770f0){_0x410711=_0x1770f0;logger['info'](_0xd1ed('0x96'),_0x410711['id']);return getEndUser(_0x23c3d8,_0x398ac1,_0x452b88,_0x43e818[_0xd1ed('0x87')],_0x43e818[_0xd1ed('0x88')],_0x410711,_0x459114);})[_0xd1ed('0x2c')](function(_0x94e7f6){_0xb8392b=_0x94e7f6;return getCall(_0x23c3d8,_0x398ac1,_0x452b88,_0x410711,_0xb8392b,_0x459114,_0x43e818,_0xd1ed('0x89'));})[_0xd1ed('0x2c')](function(_0xfd6383){if(_0xfd6383){logger['info'](_0xd1ed('0x8a'),_0xfd6383['id']);}})['catch'](function(_0x202669){logger[_0xd1ed('0x2f')]('['+_0x43e818[_0xd1ed('0x68')][_0xd1ed('0x95')]()+']',JSON[_0xd1ed('0xf')](_0x202669));});};
\ No newline at end of file
index 1545751..04bd909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d3=['trigger','exec','data2','Script','data3','render','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x97d3,0x183));var _0x397d=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x97d3[_0x12fc8d];return _0x3f9d04;};'use strict';var util=require(_0x397d('0x0'));var sh=require(_0x397d('0x1'));var Mustache=require(_0x397d('0x2'));var logger=require('../../../../config/logger')(_0x397d('0x3'));exports[_0x397d('0x4')]=function(_0x39248f,_0x316bd8){var _0x388112=_0x39248f['data2']?_0x39248f[_0x397d('0x5')]:_0x397d('0x6');var _0x5d683b=_0x39248f[_0x397d('0x7')]?Mustache[_0x397d('0x8')](_0x39248f[_0x397d('0x7')],_0x316bd8):_0x316bd8;sh[_0x397d('0x4')](_0x5d683b,function(_0x5ba8a0,_0x5995e2,_0x16fbb8){if(_0x5ba8a0!==0x0){logger[_0x397d('0x9')](util['format'](_0x397d('0xa'),_0x388112,_0x5d683b,_0x5ba8a0,_0x16fbb8));}else{logger[_0x397d('0xb')](util['format'](_0x397d('0xc'),_0x388112,_0x5d683b,_0x5995e2));}});};
\ No newline at end of file
+var _0xc757=['exec','data2','data3','render','error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','../../../../config/logger','trigger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc757,0xbc));var _0x7c75=function(_0x326b61,_0x372310){_0x326b61=_0x326b61-0x0;var _0x4f4374=_0xc757[_0x326b61];return _0x4f4374;};'use strict';var util=require(_0x7c75('0x0'));var sh=require('shelljs');var Mustache=require(_0x7c75('0x1'));var logger=require(_0x7c75('0x2'))(_0x7c75('0x3'));exports[_0x7c75('0x4')]=function(_0xb781b4,_0x5aabac){var _0x31cc68=_0xb781b4['data2']?_0xb781b4[_0x7c75('0x5')]:'Script';var _0x5c6a1f=_0xb781b4[_0x7c75('0x6')]?Mustache[_0x7c75('0x7')](_0xb781b4['data3'],_0x5aabac):_0x5aabac;sh[_0x7c75('0x4')](_0x5c6a1f,function(_0x4bc868,_0x327f29,_0x4296b9){if(_0x4bc868!==0x0){logger[_0x7c75('0x8')](util[_0x7c75('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x31cc68,_0x5c6a1f,_0x4bc868,_0x4296b9));}else{logger[_0x7c75('0xa')](util[_0x7c75('0x9')](_0x7c75('0xb'),_0x31cc68,_0x5c6a1f,_0x327f29));}});};
\ No newline at end of file
index 3a9c72f..6701c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef91=['DELETE','POST','PUT','data7','body','error','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','stringify',',\x20request\x20body:\x20','object','format','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','request-promise','trigger','exec','data1','toUpperCase','render','data5','headers','data6','parse','stack','GET'];(function(_0x3ecf65,_0x3bac13){var _0x1907df=function(_0x247dd9){while(--_0x247dd9){_0x3ecf65['push'](_0x3ecf65['shift']());}};_0x1907df(++_0x3bac13);}(_0xef91,0xf9));var _0x1ef9=function(_0x5b4408,_0x3a13ff){_0x5b4408=_0x5b4408-0x0;var _0x39a1c7=_0xef91[_0x5b4408];return _0x39a1c7;};'use strict';var rp=require(_0x1ef9('0x0'));var util=require('util');var _=require('lodash');var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x1ef9('0x1'));exports[_0x1ef9('0x2')]=function(_0x7d2d4c,_0x3e90f6){var _0x4513aa,_0x2735ab;var _0x16d02a={'method':_0x7d2d4c[_0x1ef9('0x3')][_0x1ef9('0x4')](),'uri':Mustache[_0x1ef9('0x5')](_0x7d2d4c['data2'],_0x3e90f6),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x7d2d4c[_0x1ef9('0x6')])==='number'&&parseInt(_0x7d2d4c[_0x1ef9('0x6')])>=0x1&&parseInt(_0x7d2d4c[_0x1ef9('0x6')])<=0xa?parseInt(_0x7d2d4c[_0x1ef9('0x6')])*0x3e8:0x5*0x3e8};try{_0x16d02a[_0x1ef9('0x7')]=_0x7d2d4c[_0x1ef9('0x8')]?JSON[_0x1ef9('0x9')](Mustache['render'](_0x7d2d4c['data6'],_0x3e90f6)):{};}catch(_0x521703){logger['error'](_0x521703[_0x1ef9('0xa')]);}switch(_0x7d2d4c[_0x1ef9('0x3')]['toUpperCase']()){case _0x1ef9('0xb'):case _0x1ef9('0xc'):_0x4513aa=null;_0x16d02a['qs']=_0x3e90f6;break;case _0x1ef9('0xd'):case _0x1ef9('0xe'):if(_0x7d2d4c[_0x1ef9('0xf')]){try{_0x4513aa=JSON[_0x1ef9('0x9')](Mustache[_0x1ef9('0x5')](_0x7d2d4c[_0x1ef9('0xf')],_0x3e90f6));_0x16d02a[_0x1ef9('0x10')]=_0x4513aa;}catch(_0x669282){logger[_0x1ef9('0x11')](_0x669282[_0x1ef9('0xa')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x4513aa=_0x3e90f6;_0x16d02a[_0x1ef9('0x10')]=_0x4513aa;}break;}logger[_0x1ef9('0x12')](util['format'](_0x1ef9('0x13'),_0x7d2d4c['data1'],_0x7d2d4c[_0x1ef9('0x14')],JSON[_0x1ef9('0x15')](_0x16d02a)));rp(_0x16d02a)['then'](function(_0x4f8e98){_0x4513aa=!_['isNil'](_0x4513aa)?_0x1ef9('0x16')+_0x4513aa:'';_0x2735ab=typeof _0x4f8e98[_0x1ef9('0x10')]===_0x1ef9('0x17')?JSON['stringify'](_0x4f8e98[_0x1ef9('0x10')]):_0x4f8e98[_0x1ef9('0x10')];logger['info'](util[_0x1ef9('0x18')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x7d2d4c[_0x1ef9('0x3')],_0x7d2d4c['data2'],_0x4f8e98[_0x1ef9('0x19')],_0x2735ab));})[_0x1ef9('0x1a')](function(_0xea6310){logger[_0x1ef9('0x11')](util['format'](_0x1ef9('0x1b'),_0x7d2d4c[_0x1ef9('0x3')],_0x7d2d4c[_0x1ef9('0x14')],_0xea6310['statusCode'],_0xea6310['name'],_0xea6310[_0x1ef9('0x1c')]));});};
\ No newline at end of file
+var _0xb139=['data5','number','headers','data6','parse','render','error','GET','DELETE','POST','PUT','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','object','info','catch','statusCode','name','message','request-promise','util','mustache','trigger','data1','toUpperCase','data2'];(function(_0x3f661c,_0x294423){var _0x16cb8e=function(_0x984742){while(--_0x984742){_0x3f661c['push'](_0x3f661c['shift']());}};_0x16cb8e(++_0x294423);}(_0xb139,0x159));var _0x9b13=function(_0x575b4c,_0x3f1d33){_0x575b4c=_0x575b4c-0x0;var _0x169ce9=_0xb139[_0x575b4c];return _0x169ce9;};'use strict';var rp=require(_0x9b13('0x0'));var util=require(_0x9b13('0x1'));var _=require('lodash');var Mustache=require(_0x9b13('0x2'));var logger=require('../../../../config/logger')(_0x9b13('0x3'));exports['exec']=function(_0x22557f,_0x46ae0a){var _0x448ee9,_0x5be22a;var _0x519bfa={'method':_0x22557f[_0x9b13('0x4')][_0x9b13('0x5')](),'uri':Mustache['render'](_0x22557f[_0x9b13('0x6')],_0x46ae0a),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x22557f[_0x9b13('0x7')])===_0x9b13('0x8')&&parseInt(_0x22557f[_0x9b13('0x7')])>=0x1&&parseInt(_0x22557f[_0x9b13('0x7')])<=0xa?parseInt(_0x22557f[_0x9b13('0x7')])*0x3e8:0x5*0x3e8};try{_0x519bfa[_0x9b13('0x9')]=_0x22557f[_0x9b13('0xa')]?JSON[_0x9b13('0xb')](Mustache[_0x9b13('0xc')](_0x22557f[_0x9b13('0xa')],_0x46ae0a)):{};}catch(_0x15fbd1){logger[_0x9b13('0xd')](_0x15fbd1['stack']);}switch(_0x22557f[_0x9b13('0x4')][_0x9b13('0x5')]()){case _0x9b13('0xe'):case _0x9b13('0xf'):_0x448ee9=null;_0x519bfa['qs']=_0x46ae0a;break;case _0x9b13('0x10'):case _0x9b13('0x11'):if(_0x22557f[_0x9b13('0x12')]){try{_0x448ee9=JSON[_0x9b13('0xb')](Mustache['render'](_0x22557f[_0x9b13('0x12')],_0x46ae0a));_0x519bfa['body']=_0x448ee9;}catch(_0x5b1c89){logger[_0x9b13('0xd')](_0x5b1c89['stack']);logger['error'](_0x9b13('0x13'));}}else{_0x448ee9=_0x46ae0a;_0x519bfa[_0x9b13('0x14')]=_0x448ee9;}break;}logger['info'](util[_0x9b13('0x15')](_0x9b13('0x16'),_0x22557f[_0x9b13('0x4')],_0x22557f[_0x9b13('0x6')],JSON[_0x9b13('0x17')](_0x519bfa)));rp(_0x519bfa)[_0x9b13('0x18')](function(_0x4809ff){_0x448ee9=!_['isNil'](_0x448ee9)?_0x9b13('0x19')+_0x448ee9:'';_0x5be22a=typeof _0x4809ff[_0x9b13('0x14')]===_0x9b13('0x1a')?JSON[_0x9b13('0x17')](_0x4809ff[_0x9b13('0x14')]):_0x4809ff['body'];logger[_0x9b13('0x1b')](util[_0x9b13('0x15')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x22557f[_0x9b13('0x4')],_0x22557f[_0x9b13('0x6')],_0x4809ff['statusCode'],_0x5be22a));})[_0x9b13('0x1c')](function(_0x106fd1){logger[_0x9b13('0xd')](util[_0x9b13('0x15')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x22557f['data1'],_0x22557f[_0x9b13('0x6')],_0x106fd1[_0x9b13('0x1d')],_0x106fd1[_0x9b13('0x1e')],_0x106fd1[_0x9b13('0x1f')]));});};
\ No newline at end of file
index eece6a8..3351275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfde=['catch','exports','jayson/promise','bluebird','routing','client','http','Request','request','then','debug','rpc','error'];(function(_0x237bf7,_0xb851fc){var _0x5928ba=function(_0x14c0d0){while(--_0x14c0d0){_0x237bf7['push'](_0x237bf7['shift']());}};_0x5928ba(++_0xb851fc);}(_0xdfde,0x1f0));var _0xedfd=function(_0x1e4f2f,_0x35edfa){_0x1e4f2f=_0x1e4f2f-0x0;var _0xccea89=_0xdfde[_0x1e4f2f];return _0xccea89;};'use strict';var jayson=require(_0xedfd('0x0'));var BPromise=require(_0xedfd('0x1'));var logger=require('../../config/logger')(_0xedfd('0x2'));var client=jayson[_0xedfd('0x3')][_0xedfd('0x4')]({'port':0x2329});client[_0xedfd('0x5')]=function(_0x227f30,_0x3089f1){return new BPromise(function(_0x390526,_0x15e481){return client[_0xedfd('0x6')](_0x227f30,_0x3089f1)[_0xedfd('0x7')](function(_0x486cf3){logger[_0xedfd('0x8')](_0xedfd('0x9'),_0xedfd('0x2'),_0x227f30,_0x3089f1,_0x486cf3);if(_0x486cf3[_0xedfd('0xa')]){logger['error']('rpc','routing',_0x227f30,_0x486cf3['error']['message'],_0x3089f1);return _0x15e481(_0x486cf3['error']['message']);}else{return _0x390526(_0x486cf3['result']);}})[_0xedfd('0xb')](function(_0x53253b){logger[_0xedfd('0xa')](_0xedfd('0x9'),'routing',_0x227f30,_0x53253b,_0x3089f1);return _0x15e481(_0x53253b);});});};module[_0xedfd('0xc')]=client;
\ No newline at end of file
+var _0xdad7=['error','message','catch','exports','bluebird','../../config/logger','http','Request','then','rpc','routing'];(function(_0x1c0b34,_0x425ab7){var _0x148223=function(_0x5092fa){while(--_0x5092fa){_0x1c0b34['push'](_0x1c0b34['shift']());}};_0x148223(++_0x425ab7);}(_0xdad7,0x1e8));var _0x7dad=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xdad7[_0x3054be];return _0x3df150;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x7dad('0x0'));var logger=require(_0x7dad('0x1'))('routing');var client=jayson['client'][_0x7dad('0x2')]({'port':0x2329});client[_0x7dad('0x3')]=function(_0x4fc859,_0x430da3){return new BPromise(function(_0x46b246,_0x645292){return client['request'](_0x4fc859,_0x430da3)[_0x7dad('0x4')](function(_0x42ee8f){logger['debug'](_0x7dad('0x5'),_0x7dad('0x6'),_0x4fc859,_0x430da3,_0x42ee8f);if(_0x42ee8f['error']){logger[_0x7dad('0x7')](_0x7dad('0x5'),'routing',_0x4fc859,_0x42ee8f[_0x7dad('0x7')][_0x7dad('0x8')],_0x430da3);return _0x645292(_0x42ee8f[_0x7dad('0x7')][_0x7dad('0x8')]);}else{return _0x46b246(_0x42ee8f['result']);}})[_0x7dad('0x9')](function(_0x24a449){logger[_0x7dad('0x7')]('rpc',_0x7dad('0x6'),_0x4fc859,_0x24a449,_0x430da3);return _0x645292(_0x24a449);});});};module[_0x7dad('0xa')]=client;
\ No newline at end of file
index 9861976..8bab5f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e7=['mailAccounts','listen','getSettings','loginMailFrequency','catch','error','./server','./realtime','./lib/email','./rpc/mailAccount','email','resolve','then'];(function(_0x12949c,_0x22bfe6){var _0x5bfa4d=function(_0x696840){while(--_0x696840){_0x12949c['push'](_0x12949c['shift']());}};_0x5bfa4d(++_0x22bfe6);}(_0x26e7,0x18c));var _0x726e=function(_0x24a88e,_0x22a0b8){_0x24a88e=_0x24a88e-0x0;var _0x232cbb=_0x26e7[_0x24a88e];return _0x232cbb;};'use strict';var server=require(_0x726e('0x0'));var Realtime=require(_0x726e('0x1'));var EmailChannel=require(_0x726e('0x2'));var mailAccount=require(_0x726e('0x3'));var setting=require('./rpc/setting');var logger=require('../../config/logger')(_0x726e('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x726e('0x5')]()[_0x726e('0x6')](mailAccount['getMailAccounts']())[_0x726e('0x6')](realtime['initMailAccounts']())[_0x726e('0x6')](function(){email['refresh'](realtime[_0x726e('0x7')]);return realtime;});}function main(){return server[_0x726e('0x8')](realtime,email)['then'](function(){return initRealtime();})[_0x726e('0x6')](function(){return setting[_0x726e('0x9')]();})['then'](function(_0x48d371){return setInterval(initRealtime,_0x48d371[_0x726e('0xa')]*0x3e8);})[_0x726e('0xb')](function(_0x5e7705){logger[_0x726e('0xc')]('Email\x20service\x20initialization',_0x5e7705);});}main();
\ No newline at end of file
+var _0xc9f2=['getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xc9f2,0x107));var _0x2c9f=function(_0x7b4e87,_0x4e97dd){_0x7b4e87=_0x7b4e87-0x0;var _0x2309c7=_0xc9f2[_0x7b4e87];return _0x2309c7;};'use strict';var server=require(_0x2c9f('0x0'));var Realtime=require(_0x2c9f('0x1'));var EmailChannel=require(_0x2c9f('0x2'));var mailAccount=require(_0x2c9f('0x3'));var setting=require(_0x2c9f('0x4'));var logger=require(_0x2c9f('0x5'))(_0x2c9f('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x2c9f('0x7')]()[_0x2c9f('0x8')](mailAccount[_0x2c9f('0x9')]())[_0x2c9f('0x8')](realtime[_0x2c9f('0xa')]())['then'](function(){email[_0x2c9f('0xb')](realtime[_0x2c9f('0xc')]);return realtime;});}function main(){return server[_0x2c9f('0xd')](realtime,email)[_0x2c9f('0x8')](function(){return initRealtime();})[_0x2c9f('0x8')](function(){return setting['getSettings']();})[_0x2c9f('0x8')](function(_0x610fc7){return setInterval(initRealtime,_0x610fc7['loginMailFrequency']*0x3e8);})[_0x2c9f('0xe')](function(_0x2a213e){logger[_0x2c9f('0xf')](_0x2c9f('0x10'),_0x2a213e);});}main();
\ No newline at end of file
index 613eeec..19333d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50f=['custom','provider','imapAccounts','email','box','handleImapBox','bind','handleImapEmail','handleImapEnd','error','handleImapError','disabled','connected','messages','info','firstName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','sendMail','verifySmtp','Smtp','verify','exports','lodash','bluebird','ioredis','../../../config/logger','defaults','redis','localhost','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name','key','active','status','messageStatus','Imap','total','isNil','md5','mailAccount:update','hasOwnProperty','service'];(function(_0x3e0b45,_0x23995d){var _0x3f485f=function(_0x512ac5){while(--_0x512ac5){_0x3e0b45['push'](_0x3e0b45['shift']());}};_0x3f485f(++_0x23995d);}(_0xe50f,0x135));var _0xfe50=function(_0x16f809,_0x291e88){_0x16f809=_0x16f809-0x0;var _0xc69678=_0xe50f[_0x16f809];return _0xc69678;};'use strict';var _=require(_0xfe50('0x0'));var moment=require('moment');var BPromise=require(_0xfe50('0x1'));var md5=require('md5');var Redis=require(_0xfe50('0x2'));var config=require('../../../config/environment');var logger=require(_0xfe50('0x3'))('email');config['redis']=_[_0xfe50('0x4')](config[_0xfe50('0x5')],{'host':_0xfe50('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xfe50('0x5')]));var EmailImap=require(_0xfe50('0x7'));var EmailSmtp=require(_0xfe50('0x8'));var mailAccount=require(_0xfe50('0x9'));var md5Accounts={};function EmailChannel(_0x154231){logger['info'](_0xfe50('0xa'));this[_0xfe50('0xb')]=_0x154231[_0xfe50('0xb')];this['imapAccounts']={};this[_0xfe50('0xc')]=new EmailSmtp();}EmailChannel[_0xfe50('0xd')][_0xfe50('0xe')]=function(_0x34f3ec){var _0x153505=this[_0xfe50('0xb')][_0x34f3ec];var _0x32e2f7={'id':_0x153505['id'],'name':_0x153505[_0xfe50('0xf')],'key':_0x153505[_0xfe50('0x10')],'active':_0x153505[_0xfe50('0x11')],'Imap':{'status':_0x153505['Imap'][_0xfe50('0x12')],'messageStatus':_0x153505['Imap'][_0xfe50('0x13')],'total':_0x153505[_0xfe50('0x14')][_0xfe50('0x15')]}};if(_[_0xfe50('0x16')](md5Accounts[_0x34f3ec])){md5Accounts[_0x34f3ec]={};}var _0x3c0ff3=md5(JSON['stringify'](_0x32e2f7));if(md5Accounts[_0x34f3ec][_0xfe50('0x17')]!==_0x3c0ff3){md5Accounts[_0x34f3ec][_0xfe50('0x17')]=_0x3c0ff3;io['emit'](_0xfe50('0x18'),_0x32e2f7);}};EmailChannel['prototype']['refresh']=function(_0x4ea875){for(var _0x275858 in _0x4ea875){if(_0x4ea875[_0xfe50('0x19')](_0x275858)){if(_0x4ea875[_0x275858]['Imap']&&_0x4ea875[_0x275858][_0xfe50('0x11')]){var _0x2df666=_0x4ea875[_0x275858][_0xfe50('0x14')];if(!_0x2df666[_0xfe50('0x1a')]&&_0x4ea875[_0x275858]['provider']!==_0xfe50('0x1b'))_0x2df666[_0xfe50('0x1a')]=_0x4ea875[_0x275858][_0xfe50('0x1c')];if(!this[_0xfe50('0x1d')][_0xfe50('0x19')](_0x2df666['id'])){this[_0xfe50('0x1d')][_0x2df666['id']]=new EmailImap(_0x2df666,_0x4ea875[_0x275858][_0xfe50('0x1e')]);this[_0xfe50('0x1d')][_0x2df666['id']]['on'](_0xfe50('0x1f'),this[_0xfe50('0x20')][_0xfe50('0x21')](this,_0x275858));this[_0xfe50('0x1d')][_0x2df666['id']]['on']('email',this[_0xfe50('0x22')][_0xfe50('0x21')](this,_0x275858));this['imapAccounts'][_0x2df666['id']]['on']('end',this[_0xfe50('0x23')][_0xfe50('0x21')](this,_0x275858));this[_0xfe50('0x1d')][_0x2df666['id']]['on'](_0xfe50('0x24'),this[_0xfe50('0x25')]['bind'](this,_0x275858));}}else{if(_[_0xfe50('0x16')](this[_0xfe50('0xb')][_0x275858][_0xfe50('0x14')])){this[_0xfe50('0xb')][_0x275858][_0xfe50('0x14')]={};}this[_0xfe50('0xb')][_0x275858][_0xfe50('0x14')][_0xfe50('0x12')]=_0xfe50('0x26');this[_0xfe50('0xb')][_0x275858][_0xfe50('0x14')][_0xfe50('0x13')]='';this[_0xfe50('0xe')](_0x275858);}}}};EmailChannel[_0xfe50('0xd')][_0xfe50('0x20')]=function(_0x42ce83,_0x56f13d){if(this[_0xfe50('0xb')][_0x42ce83]){this[_0xfe50('0xb')][_0x42ce83][_0xfe50('0x14')][_0xfe50('0x12')]=_0xfe50('0x27');this['mailAccounts'][_0x42ce83][_0xfe50('0x14')]['messageStatus']=_0x56f13d[_0xfe50('0xf')];if(_0x56f13d[_0xfe50('0x28')]){this['mailAccounts'][_0x42ce83][_0xfe50('0x14')][_0xfe50('0x15')]=_0x56f13d['messages'][_0xfe50('0x15')];}return this['emit'](_0x42ce83);}};EmailChannel[_0xfe50('0xd')][_0xfe50('0x22')]=function(_0x316334,_0x2ac2fc){logger[_0xfe50('0x29')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x2ac2fc[_0xfe50('0x2a')],_0x2ac2fc['lastName'],_0x2ac2fc[_0xfe50('0x2b')],_0x316334);if(this[_0xfe50('0xb')][_0x316334]){return mailAccount[_0xfe50('0x2c')](_0x316334,_0x2ac2fc)[_0xfe50('0x2d')](function(_0xbaf098){if(_0xbaf098){logger[_0xfe50('0x29')](_0xfe50('0x2e'));}})[_0xfe50('0x2f')](function(_0x44dcfd){logger['error'](_0xfe50('0x30'),JSON[_0xfe50('0x31')](_0x44dcfd));});}};EmailChannel['prototype'][_0xfe50('0x23')]=function(_0x3840fe){if(this[_0xfe50('0xb')][_0x3840fe]&&this[_0xfe50('0xb')][_0x3840fe][_0xfe50('0x14')]){if(this[_0xfe50('0x1d')][this['mailAccounts'][_0x3840fe][_0xfe50('0x14')]['id']]){delete this[_0xfe50('0x1d')][this[_0xfe50('0xb')][_0x3840fe][_0xfe50('0x14')]['id']];}this[_0xfe50('0xb')][_0x3840fe][_0xfe50('0x14')][_0xfe50('0x32')]=moment();this[_0xfe50('0xe')](_0x3840fe);}};EmailChannel[_0xfe50('0xd')][_0xfe50('0x25')]=function(_0x4f8df5,_0x4c45e7){if(this[_0xfe50('0xb')][_0x4f8df5]){this[_0xfe50('0xb')][_0x4f8df5]['Imap'][_0xfe50('0x12')]=_0xfe50('0x24');this[_0xfe50('0xb')][_0x4f8df5][_0xfe50('0x14')]['messageStatus']=_0x4c45e7;return this[_0xfe50('0xe')](_0x4f8df5);}};EmailChannel[_0xfe50('0xd')][_0xfe50('0x33')]=function(_0x3997ed,_0x513a5e){return this[_0xfe50('0xc')]['send'](_0x3997ed,_0x513a5e);};EmailChannel[_0xfe50('0xd')][_0xfe50('0x34')]=function(_0x361bd1){var _0x2058f4=this;if(this['mailAccounts'][_0x361bd1['id']]){if(_[_0xfe50('0x16')](this[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')])){this[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')]={};}this[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')][_0xfe50('0x32')]=moment();return new BPromise(function(_0x197339,_0x220ba2){return _0x2058f4[_0xfe50('0xc')][_0xfe50('0x36')](_0x361bd1)['then'](function(_0x5175c8){_0x2058f4[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')][_0xfe50('0x12')]='verified';_0x2058f4[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')][_0xfe50('0x13')]='';_0x2058f4[_0xfe50('0xe')](_0x361bd1['id']);_0x197339(_0x5175c8);})[_0xfe50('0x2f')](function(_0x25dba4){_0x2058f4[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')]['status']=_0xfe50('0x24');_0x2058f4[_0xfe50('0xb')][_0x361bd1['id']][_0xfe50('0x35')][_0xfe50('0x13')]=_0x25dba4;_0x2058f4[_0xfe50('0xe')](_0x361bd1['id']);_0x220ba2(_0x25dba4);});});}return this['smtp']['verify'](_0x361bd1);};module[_0xfe50('0x37')]=EmailChannel;
\ No newline at end of file
+var _0x413b=['verified','exports','bluebird','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','./imap','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','emit','name','status','Imap','total','mailAccount:update','prototype','custom','provider','imapAccounts','email','handleImapBox','handleImapEmail','bind','end','handleImapEnd','error','handleImapError','disabled','messageStatus','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','sendMail','smtp','send','isNil','Smtp','verify','then'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x413b,0xc6));var _0xb413=function(_0xc41365,_0x35d774){_0xc41365=_0xc41365-0x0;var _0x388102=_0x413b[_0xc41365];return _0x388102;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0xb413('0x0'));var md5=require(_0xb413('0x1'));var Redis=require(_0xb413('0x2'));var config=require(_0xb413('0x3'));var logger=require('../../../config/logger')('email');config[_0xb413('0x4')]=_[_0xb413('0x5')](config[_0xb413('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xb413('0x6'))(new Redis(config[_0xb413('0x4')]));var EmailImap=require(_0xb413('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xb413('0x8'));var md5Accounts={};function EmailChannel(_0x314f86){logger['info'](_0xb413('0x9'));this[_0xb413('0xa')]=_0x314f86['mailAccounts'];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0xb413('0xb')]=function(_0x53ce02){var _0x5656eb=this[_0xb413('0xa')][_0x53ce02];var _0x4f33fa={'id':_0x5656eb['id'],'name':_0x5656eb[_0xb413('0xc')],'key':_0x5656eb['key'],'active':_0x5656eb['active'],'Imap':{'status':_0x5656eb['Imap'][_0xb413('0xd')],'messageStatus':_0x5656eb[_0xb413('0xe')]['messageStatus'],'total':_0x5656eb[_0xb413('0xe')][_0xb413('0xf')]}};if(_['isNil'](md5Accounts[_0x53ce02])){md5Accounts[_0x53ce02]={};}var _0x52f84b=md5(JSON['stringify'](_0x4f33fa));if(md5Accounts[_0x53ce02][_0xb413('0x1')]!==_0x52f84b){md5Accounts[_0x53ce02][_0xb413('0x1')]=_0x52f84b;io[_0xb413('0xb')](_0xb413('0x10'),_0x4f33fa);}};EmailChannel[_0xb413('0x11')]['refresh']=function(_0x56d19e){for(var _0x3aa579 in _0x56d19e){if(_0x56d19e['hasOwnProperty'](_0x3aa579)){if(_0x56d19e[_0x3aa579][_0xb413('0xe')]&&_0x56d19e[_0x3aa579]['active']){var _0xbad5b3=_0x56d19e[_0x3aa579][_0xb413('0xe')];if(!_0xbad5b3['service']&&_0x56d19e[_0x3aa579]['provider']!==_0xb413('0x12'))_0xbad5b3['service']=_0x56d19e[_0x3aa579][_0xb413('0x13')];if(!this[_0xb413('0x14')]['hasOwnProperty'](_0xbad5b3['id'])){this[_0xb413('0x14')][_0xbad5b3['id']]=new EmailImap(_0xbad5b3,_0x56d19e[_0x3aa579][_0xb413('0x15')]);this[_0xb413('0x14')][_0xbad5b3['id']]['on']('box',this[_0xb413('0x16')]['bind'](this,_0x3aa579));this[_0xb413('0x14')][_0xbad5b3['id']]['on'](_0xb413('0x15'),this[_0xb413('0x17')][_0xb413('0x18')](this,_0x3aa579));this['imapAccounts'][_0xbad5b3['id']]['on'](_0xb413('0x19'),this[_0xb413('0x1a')][_0xb413('0x18')](this,_0x3aa579));this['imapAccounts'][_0xbad5b3['id']]['on'](_0xb413('0x1b'),this[_0xb413('0x1c')][_0xb413('0x18')](this,_0x3aa579));}}else{if(_['isNil'](this['mailAccounts'][_0x3aa579][_0xb413('0xe')])){this[_0xb413('0xa')][_0x3aa579][_0xb413('0xe')]={};}this[_0xb413('0xa')][_0x3aa579]['Imap'][_0xb413('0xd')]=_0xb413('0x1d');this[_0xb413('0xa')][_0x3aa579]['Imap'][_0xb413('0x1e')]='';this[_0xb413('0xb')](_0x3aa579);}}}};EmailChannel[_0xb413('0x11')]['handleImapBox']=function(_0x37c10b,_0xd35453){if(this['mailAccounts'][_0x37c10b]){this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['status']='connected';this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['messageStatus']=_0xd35453[_0xb413('0xc')];if(_0xd35453['messages']){this[_0xb413('0xa')][_0x37c10b][_0xb413('0xe')]['total']=_0xd35453[_0xb413('0x1f')][_0xb413('0xf')];}return this[_0xb413('0xb')](_0x37c10b);}};EmailChannel[_0xb413('0x11')][_0xb413('0x17')]=function(_0x555a02,_0x58e3a4){logger[_0xb413('0x20')](_0xb413('0x21'),_0x58e3a4['firstName'],_0x58e3a4[_0xb413('0x22')],_0x58e3a4[_0xb413('0x23')],_0x555a02);if(this[_0xb413('0xa')][_0x555a02]){return mailAccount['notify'](_0x555a02,_0x58e3a4)['then'](function(_0x51947c){if(_0x51947c){logger[_0xb413('0x20')]('Mail\x20accepted\x20from\x20routing');}})[_0xb413('0x24')](function(_0x35e145){logger['error'](_0xb413('0x25'),JSON[_0xb413('0x26')](_0x35e145));});}};EmailChannel[_0xb413('0x11')][_0xb413('0x1a')]=function(_0x5363c7){if(this[_0xb413('0xa')][_0x5363c7]&&this['mailAccounts'][_0x5363c7][_0xb413('0xe')]){if(this[_0xb413('0x14')][this[_0xb413('0xa')][_0x5363c7][_0xb413('0xe')]['id']]){delete this[_0xb413('0x14')][this[_0xb413('0xa')][_0x5363c7]['Imap']['id']];}this[_0xb413('0xa')][_0x5363c7][_0xb413('0xe')][_0xb413('0x27')]=moment();this[_0xb413('0xb')](_0x5363c7);}};EmailChannel['prototype'][_0xb413('0x1c')]=function(_0x55e15a,_0x1bd05f){if(this[_0xb413('0xa')][_0x55e15a]){this[_0xb413('0xa')][_0x55e15a][_0xb413('0xe')][_0xb413('0xd')]=_0xb413('0x1b');this[_0xb413('0xa')][_0x55e15a][_0xb413('0xe')][_0xb413('0x1e')]=_0x1bd05f;return this[_0xb413('0xb')](_0x55e15a);}};EmailChannel[_0xb413('0x11')][_0xb413('0x28')]=function(_0x15f191,_0x57d460){return this[_0xb413('0x29')][_0xb413('0x2a')](_0x15f191,_0x57d460);};EmailChannel[_0xb413('0x11')]['verifySmtp']=function(_0x231189){var _0xa3dd62=this;if(this[_0xb413('0xa')][_0x231189['id']]){if(_[_0xb413('0x2b')](this[_0xb413('0xa')][_0x231189['id']]['Smtp'])){this['mailAccounts'][_0x231189['id']][_0xb413('0x2c')]={};}this[_0xb413('0xa')][_0x231189['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x1bc8fe,_0x44fd41){return _0xa3dd62['smtp'][_0xb413('0x2d')](_0x231189)[_0xb413('0x2e')](function(_0x3804e8){_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0xd')]=_0xb413('0x2f');_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0x1e')]='';_0xa3dd62['emit'](_0x231189['id']);_0x1bc8fe(_0x3804e8);})['catch'](function(_0x5a2eb8){_0xa3dd62[_0xb413('0xa')][_0x231189['id']][_0xb413('0x2c')][_0xb413('0xd')]='error';_0xa3dd62['mailAccounts'][_0x231189['id']][_0xb413('0x2c')][_0xb413('0x1e')]=_0x5a2eb8;_0xa3dd62[_0xb413('0xb')](_0x231189['id']);_0x44fd41(_0x5a2eb8);});});}return this[_0xb413('0x29')]['verify'](_0x231189);};module[_0xb413('0x30')]=EmailChannel;
\ No newline at end of file
index b771ba7..3778245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fba=['handleEnd','error','handleError','inherits','prototype','connTimeout','authTimeout','service','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','email','anonymous@xcally.com','host','port','tls','autotls','required','handleReady','openBox','handleOpenBox','emit','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','stringify','textCode','hasOwnProperty','upperFirst','lodash','imap','simpleParser','iconv','EventEmitter','./utils','account','getAccount','once','ready','bind','end'];(function(_0x3457c9,_0x440606){var _0x290e1b=function(_0x52c737){while(--_0x52c737){_0x3457c9['push'](_0x3457c9['shift']());}};_0x290e1b(++_0x440606);}(_0x1fba,0xe0));var _0xa1fb=function(_0x1c510a,_0x1413a9){_0x1c510a=_0x1c510a-0x0;var _0x23cedd=_0x1fba[_0x1c510a];return _0x23cedd;};'use strict';var _=require(_0xa1fb('0x0'));var util=require('util');var Imap=require(_0xa1fb('0x1'));var simpleParser=require('mailparser')[_0xa1fb('0x2')];var Iconv=require(_0xa1fb('0x3'))['Iconv'];var EventEmitter=require('events')[_0xa1fb('0x4')];var utils=require(_0xa1fb('0x5'));var logger=require('../../../config/logger')('email');function EmailImap(_0x27d0df,_0x546d7e){this['mailbox']=_0x27d0df['mailbox'];this[_0xa1fb('0x6')]=this[_0xa1fb('0x7')](_0x27d0df,_0x546d7e);this[_0xa1fb('0x1')]=new Imap(this['account']);this[_0xa1fb('0x1')][_0xa1fb('0x8')](_0xa1fb('0x9'),this['handleReady'][_0xa1fb('0xa')](this));this[_0xa1fb('0x1')][_0xa1fb('0x8')](_0xa1fb('0xb'),this[_0xa1fb('0xc')]['bind'](this));this[_0xa1fb('0x1')]['on'](_0xa1fb('0xd'),this[_0xa1fb('0xe')][_0xa1fb('0xa')](this));this['imap']['connect']();}util[_0xa1fb('0xf')](EmailImap,EventEmitter);EmailImap[_0xa1fb('0x10')][_0xa1fb('0x7')]=function(_0xb7db82,_0x236bbd){var _0x40ef1e={'connTimeout':_0xb7db82['connTimeout']?_0xb7db82[_0xa1fb('0x11')]*0x3e8:0x2710,'authTimeout':_0xb7db82[_0xa1fb('0x12')]?_0xb7db82[_0xa1fb('0x12')]*0x3e8:0x1388};if(_0xb7db82[_0xa1fb('0x13')]){_0x40ef1e['user']=_0xb7db82[_0xa1fb('0x14')];if(_0xb7db82['modernAuthentication']){_0x40ef1e[_0xa1fb('0x15')]=utils[_0xa1fb('0x16')](_0xb7db82[_0xa1fb('0x17')][_0xa1fb('0x18')],_0xb7db82[_0xa1fb('0x14')]);}else{_0x40ef1e[_0xa1fb('0x19')]=_0xb7db82[_0xa1fb('0x19')];}}else{if(_0xb7db82[_0xa1fb('0x1a')]){_0x40ef1e[_0xa1fb('0x14')]=_0xb7db82[_0xa1fb('0x14')];_0x40ef1e[_0xa1fb('0x19')]=_0xb7db82[_0xa1fb('0x19')];}}_0x40ef1e[_0xa1fb('0x1b')]=_0x236bbd||_0xb7db82[_0xa1fb('0x14')]||_0xa1fb('0x1c');_0x40ef1e[_0xa1fb('0x1d')]=_0xb7db82[_0xa1fb('0x1d')];_0x40ef1e[_0xa1fb('0x1e')]=_0xb7db82[_0xa1fb('0x1e')]||0x3e1;if(_0xb7db82[_0xa1fb('0x1f')]){_0x40ef1e[_0xa1fb('0x1f')]=!![];}else{_0x40ef1e[_0xa1fb('0x1f')]=![];_0x40ef1e[_0xa1fb('0x20')]=_0xa1fb('0x21');}return _0x40ef1e;};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x22')]=function(){this[_0xa1fb('0x1')][_0xa1fb('0x23')](this['mailbox'],![],this[_0xa1fb('0x24')][_0xa1fb('0xa')](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x24')]=function(_0x40a718,_0x4996c2){if(_0x40a718){this[_0xa1fb('0xe')](_0x40a718,!![]);}else{this[_0xa1fb('0x25')]('box',_0x4996c2);this[_0xa1fb('0x26')]();}};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x27')]=function(_0x1f0b8f){if(_0x1f0b8f){this[_0xa1fb('0xe')](_0x1f0b8f,!![]);}else{this['imap'][_0xa1fb('0xb')]();}};EmailImap[_0xa1fb('0x10')]['readUnseen']=function(){this[_0xa1fb('0x1')][_0xa1fb('0x28')]([_0xa1fb('0x29')],this[_0xa1fb('0x2a')]['bind'](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x2a')]=function(_0x4eedff,_0xe61796){if(_0x4eedff){this[_0xa1fb('0xe')](_0x4eedff,!![]);}else{if(_0xe61796[_0xa1fb('0x2b')]){try{var _0x38608c=this[_0xa1fb('0x1')]['fetch'](_0xe61796,{'bodies':'','markSeen':!![]});_0x38608c['on'](_0xa1fb('0x2c'),this[_0xa1fb('0x2d')][_0xa1fb('0xa')](this));_0x38608c[_0xa1fb('0x8')](_0xa1fb('0xd'),this[_0xa1fb('0x2e')][_0xa1fb('0xa')](this));_0x38608c[_0xa1fb('0x8')]('end',this[_0xa1fb('0x2f')][_0xa1fb('0xa')](this));}catch(_0x3e9c6f){logger['error'](_0x3e9c6f);}}else{this[_0xa1fb('0x1')][_0xa1fb('0x30')](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x2d')]=function(_0x4c51c3){_0x4c51c3['on'](_0xa1fb('0x31'),this[_0xa1fb('0x32')][_0xa1fb('0xa')](this));_0x4c51c3[_0xa1fb('0x8')](_0xa1fb('0x33'),this[_0xa1fb('0x34')]['bind'](this));_0x4c51c3[_0xa1fb('0x8')](_0xa1fb('0xb'),this[_0xa1fb('0x35')]['bind'](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x32')]=function(_0xf892ca){simpleParser(_0xf892ca,{'Iconv':Iconv},this[_0xa1fb('0x36')]['bind'](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x34')]=function(){};EmailImap[_0xa1fb('0x10')]['handleMessageEnd']=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0x5bf0af,_0x5a5084){if(_0x5bf0af){logger[_0xa1fb('0xd')](_0x5bf0af);}else{var _0x32cd47=this;utils['parser'](this['account'],_0x5a5084,function(_0x5eab26){_0x32cd47[_0xa1fb('0x25')](_0xa1fb('0x1b'),_0x5eab26);});}};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x2f')]=function(){this['imap'][_0xa1fb('0x30')](!![],this[_0xa1fb('0x27')][_0xa1fb('0xa')](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0x2e')]=function(_0x1dd101){this[_0xa1fb('0xe')](_0x1dd101);this['imap'][_0xa1fb('0x30')](!![],this[_0xa1fb('0x27')][_0xa1fb('0xa')](this));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0xc')]=function(){this[_0xa1fb('0x25')](_0xa1fb('0xb'));};EmailImap[_0xa1fb('0x10')][_0xa1fb('0xe')]=function(_0x20a2f3,_0x586f8d){logger['error'](_0xa1fb('0xe'),this[_0xa1fb('0x6')][_0xa1fb('0x1b')],JSON[_0xa1fb('0x37')](_0x20a2f3));var _0x3bfad1='';if(_0x20a2f3){if(_0x20a2f3[_0xa1fb('0x38')]){_0x3bfad1=_0x20a2f3[_0xa1fb('0x38')];}else{for(var _0x4fc246 in _0x20a2f3){if(_0x20a2f3[_0xa1fb('0x39')](_0x4fc246)){_0x3bfad1+=_[_0xa1fb('0x3a')](_0x4fc246)+':\x20'+_0x20a2f3[_0x4fc246]+'\x0a';}}}}if(_0x586f8d){this['imap']['end']();}else{this['emit']('error',_0x3bfad1);this['emit'](_0xa1fb('0xb'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x0192=['prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','authentication','password','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit','box','handleCloseBox','readUnseen','search','UNSEEN','fetch','message','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','mailparser','simpleParser','Iconv','events','./utils','email','mailbox','getAccount','account','once','handleReady','bind','imap','end','handleEnd','error','handleError','inherits'];(function(_0x56aa6c,_0x360d1c){var _0x580b72=function(_0x708e73){while(--_0x708e73){_0x56aa6c['push'](_0x56aa6c['shift']());}};_0x580b72(++_0x360d1c);}(_0x0192,0x1c5));var _0x2019=function(_0x2a0741,_0x95c750){_0x2a0741=_0x2a0741-0x0;var _0x2871aa=_0x0192[_0x2a0741];return _0x2871aa;};'use strict';var _=require(_0x2019('0x0'));var util=require('util');var Imap=require('imap');var simpleParser=require(_0x2019('0x1'))[_0x2019('0x2')];var Iconv=require('iconv')[_0x2019('0x3')];var EventEmitter=require(_0x2019('0x4'))['EventEmitter'];var utils=require(_0x2019('0x5'));var logger=require('../../../config/logger')(_0x2019('0x6'));function EmailImap(_0x2f8c9a,_0xc5f35d){this['mailbox']=_0x2f8c9a[_0x2019('0x7')];this['account']=this[_0x2019('0x8')](_0x2f8c9a,_0xc5f35d);this['imap']=new Imap(this[_0x2019('0x9')]);this['imap'][_0x2019('0xa')]('ready',this[_0x2019('0xb')][_0x2019('0xc')](this));this[_0x2019('0xd')]['once'](_0x2019('0xe'),this[_0x2019('0xf')]['bind'](this));this['imap']['on'](_0x2019('0x10'),this[_0x2019('0x11')]['bind'](this));this[_0x2019('0xd')]['connect']();}util[_0x2019('0x12')](EmailImap,EventEmitter);EmailImap[_0x2019('0x13')][_0x2019('0x8')]=function(_0x14cc97,_0x2a2535){var _0x4eb31d={'connTimeout':_0x14cc97[_0x2019('0x14')]?_0x14cc97[_0x2019('0x14')]*0x3e8:0x2710,'authTimeout':_0x14cc97[_0x2019('0x15')]?_0x14cc97[_0x2019('0x15')]*0x3e8:0x1388};if(_0x14cc97[_0x2019('0x16')]){_0x4eb31d[_0x2019('0x17')]=_0x14cc97[_0x2019('0x17')];if(_0x14cc97[_0x2019('0x18')]){_0x4eb31d[_0x2019('0x19')]=utils['generateXOAuth2Token'](_0x14cc97['CloudProvider']['data5'],_0x14cc97[_0x2019('0x17')]);}else{_0x4eb31d['password']=_0x14cc97['password'];}}else{if(_0x14cc97[_0x2019('0x1a')]){_0x4eb31d[_0x2019('0x17')]=_0x14cc97['user'];_0x4eb31d[_0x2019('0x1b')]=_0x14cc97['password'];}}_0x4eb31d[_0x2019('0x6')]=_0x2a2535||_0x14cc97[_0x2019('0x17')]||_0x2019('0x1c');_0x4eb31d[_0x2019('0x1d')]=_0x14cc97['host'];_0x4eb31d[_0x2019('0x1e')]=_0x14cc97[_0x2019('0x1e')]||0x3e1;if(_0x14cc97[_0x2019('0x1f')]){_0x4eb31d[_0x2019('0x1f')]=!![];}else{_0x4eb31d[_0x2019('0x1f')]=![];_0x4eb31d[_0x2019('0x20')]=_0x2019('0x21');}return _0x4eb31d;};EmailImap['prototype'][_0x2019('0xb')]=function(){this[_0x2019('0xd')][_0x2019('0x22')](this[_0x2019('0x7')],![],this[_0x2019('0x23')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')]['handleOpenBox']=function(_0x469345,_0x4405c9){if(_0x469345){this[_0x2019('0x11')](_0x469345,!![]);}else{this[_0x2019('0x24')](_0x2019('0x25'),_0x4405c9);this['readUnseen']();}};EmailImap[_0x2019('0x13')][_0x2019('0x26')]=function(_0x580c0c){if(_0x580c0c){this['handleError'](_0x580c0c,!![]);}else{this[_0x2019('0xd')][_0x2019('0xe')]();}};EmailImap['prototype'][_0x2019('0x27')]=function(){this[_0x2019('0xd')][_0x2019('0x28')]([_0x2019('0x29')],this['handleReadUnseen'][_0x2019('0xc')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0xf50d8b,_0x44ab96){if(_0xf50d8b){this[_0x2019('0x11')](_0xf50d8b,!![]);}else{if(_0x44ab96['length']){try{var _0x508db4=this['imap'][_0x2019('0x2a')](_0x44ab96,{'bodies':'','markSeen':!![]});_0x508db4['on'](_0x2019('0x2b'),this['handleFetchMessage'][_0x2019('0xc')](this));_0x508db4[_0x2019('0xa')]('error',this[_0x2019('0x2c')][_0x2019('0xc')](this));_0x508db4['once'](_0x2019('0xe'),this[_0x2019('0x2d')]['bind'](this));}catch(_0x1cb1eb){logger[_0x2019('0x10')](_0x1cb1eb);}}else{this['imap'][_0x2019('0x2e')](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0x2019('0x13')]['handleFetchMessage']=function(_0x50b5eb){_0x50b5eb['on'](_0x2019('0x2f'),this[_0x2019('0x30')][_0x2019('0xc')](this));_0x50b5eb[_0x2019('0xa')](_0x2019('0x31'),this[_0x2019('0x32')]['bind'](this));_0x50b5eb[_0x2019('0xa')](_0x2019('0xe'),this[_0x2019('0x33')][_0x2019('0xc')](this));};EmailImap['prototype'][_0x2019('0x30')]=function(_0x3a003f){simpleParser(_0x3a003f,{'Iconv':Iconv},this[_0x2019('0x34')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')][_0x2019('0x32')]=function(){};EmailImap[_0x2019('0x13')][_0x2019('0x33')]=function(){};EmailImap[_0x2019('0x13')]['handleSimpleParser']=function(_0x5d0567,_0x10a3a7){if(_0x5d0567){logger['error'](_0x5d0567);}else{var _0x5623db=this;utils[_0x2019('0x35')](this[_0x2019('0x9')],_0x10a3a7,function(_0x56447d){_0x5623db[_0x2019('0x24')]('email',_0x56447d);});}};EmailImap[_0x2019('0x13')][_0x2019('0x2d')]=function(){this[_0x2019('0xd')][_0x2019('0x2e')](!![],this['handleCloseBox'][_0x2019('0xc')](this));};EmailImap['prototype']['handleFetchError']=function(_0xe529b0){this[_0x2019('0x11')](_0xe529b0);this[_0x2019('0xd')][_0x2019('0x2e')](!![],this[_0x2019('0x26')][_0x2019('0xc')](this));};EmailImap[_0x2019('0x13')]['handleEnd']=function(){this[_0x2019('0x24')](_0x2019('0xe'));};EmailImap[_0x2019('0x13')][_0x2019('0x11')]=function(_0x13a96b,_0x29b16d){logger[_0x2019('0x10')](_0x2019('0x11'),this[_0x2019('0x9')][_0x2019('0x6')],JSON[_0x2019('0x36')](_0x13a96b));var _0x2fa56a='';if(_0x13a96b){if(_0x13a96b[_0x2019('0x37')]){_0x2fa56a=_0x13a96b[_0x2019('0x37')];}else{for(var _0x37280b in _0x13a96b){if(_0x13a96b[_0x2019('0x38')](_0x37280b)){_0x2fa56a+=_[_0x2019('0x39')](_0x37280b)+':\x20'+_0x13a96b[_0x37280b]+'\x0a';}}}}if(_0x29b16d){this[_0x2019('0xd')]['end']();}else{this[_0x2019('0x24')](_0x2019('0x10'),_0x2fa56a);this[_0x2019('0x24')](_0x2019('0xe'));}};module[_0x2019('0x3a')]=EmailImap;
\ No newline at end of file
index 4c7b7ae..58f0443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91e=['prototype','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','send','createTransport','use','compile','sendMail','toString'];(function(_0x2499ff,_0x178d70){var _0x3e3e72=function(_0x2f986b){while(--_0x2f986b){_0x2499ff['push'](_0x2499ff['shift']());}};_0x3e3e72(++_0x178d70);}(_0xe91e,0x1d8));var _0xee91=function(_0x344adc,_0x183c37){_0x344adc=_0x344adc-0x0;var _0x4014b2=_0xe91e[_0x344adc];return _0x4014b2;};'use strict';var nodemailer=require(_0xee91('0x0'));var inlineBase64=require(_0xee91('0x1'));function EmailSmtp(){}EmailSmtp['prototype'][_0xee91('0x2')]=function(_0x27475c,_0x13ee3){return new Promise(function(_0x32570c,_0x555f34){var _0x1c20f4=nodemailer[_0xee91('0x3')](_0x27475c);_0x1c20f4[_0xee91('0x4')](_0xee91('0x5'),inlineBase64());_0x1c20f4[_0xee91('0x6')](_0x13ee3,function(_0x14ec3d,_0x20fd4f){if(_0x14ec3d){_0x555f34(_0x14ec3d[_0xee91('0x7')]());}else{_0x32570c(_0x20fd4f);}});});};EmailSmtp[_0xee91('0x8')]['verify']=function(_0x2f1c4b){return new Promise(function(_0x225f99,_0x5392ff){var _0x312c5b=nodemailer[_0xee91('0x3')](_0x2f1c4b);_0x312c5b[_0xee91('0x9')](function(_0x328c80,_0x4b2c23){if(_0x328c80){_0x5392ff(_0x328c80[_0xee91('0x7')]());}else{if(_0x4b2c23){_0x225f99(_0x4b2c23);}else{_0x5392ff(_0xee91('0xa'));}}});});};module[_0xee91('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0x2c36=['toString','verify','createTransport','Not\x20verifired','exports','nodemailer','prototype','use','compile','sendMail'];(function(_0x104b8d,_0x7a1e3f){var _0x4a4363=function(_0x316a0b){while(--_0x316a0b){_0x104b8d['push'](_0x104b8d['shift']());}};_0x4a4363(++_0x7a1e3f);}(_0x2c36,0xd7));var _0x62c3=function(_0x5b64a1,_0x2ec810){_0x5b64a1=_0x5b64a1-0x0;var _0x4b6f55=_0x2c36[_0x5b64a1];return _0x4b6f55;};'use strict';var nodemailer=require(_0x62c3('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x62c3('0x1')]['send']=function(_0x2167a7,_0x2f6c37){return new Promise(function(_0x558a8c,_0x50484a){var _0x82d725=nodemailer['createTransport'](_0x2167a7);_0x82d725[_0x62c3('0x2')](_0x62c3('0x3'),inlineBase64());_0x82d725[_0x62c3('0x4')](_0x2f6c37,function(_0x40c2c,_0x1a1e87){if(_0x40c2c){_0x50484a(_0x40c2c[_0x62c3('0x5')]());}else{_0x558a8c(_0x1a1e87);}});});};EmailSmtp[_0x62c3('0x1')][_0x62c3('0x6')]=function(_0x57223f){return new Promise(function(_0x184152,_0x588baf){var _0x43657d=nodemailer[_0x62c3('0x7')](_0x57223f);_0x43657d[_0x62c3('0x6')](function(_0xac1b03,_0x2d1da4){if(_0xac1b03){_0x588baf(_0xac1b03[_0x62c3('0x5')]());}else{if(_0x2d1da4){_0x184152(_0x2d1da4);}else{_0x588baf(_0x62c3('0x8'));}}});});};module[_0x62c3('0x9')]=EmailSmtp;
\ No newline at end of file
index a0ad430..ac47ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7388=['attachment-','%s-%s','now','root','server/files/attachments/','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','parser','from','messageId','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','path','util','../../../config/logger','../../../config/environment','value','address','anonymous','generate','@xcally.com','head','name','substring','indexOf','length','slice','join','Anonymous','pop','isEmpty','test','html','replace','includes','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','email','originCc','originTo','attach','attachments','type'];(function(_0x3ef45e,_0xe84f33){var _0x69e7c=function(_0x43ba11){while(--_0x43ba11){_0x3ef45e['push'](_0x3ef45e['shift']());}};_0x69e7c(++_0xe84f33);}(_0x7388,0x14e));var _0x8738=function(_0x5e1864,_0x2a0dc3){_0x5e1864=_0x5e1864-0x0;var _0x29e801=_0x7388[_0x5e1864];return _0x29e801;};'use strict';var _=require(_0x8738('0x0'));var moment=require(_0x8738('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x8738('0x2'));var util=require(_0x8738('0x3'));var tnef=require('node-tnef');var logger=require(_0x8738('0x4'))('email');var config=require(_0x8738('0x5'));function getAddress(_0x24d5bf){var _0x1db078=_['head'](_0x24d5bf[_0x8738('0x6')]);return _0x1db078&&_0x1db078[_0x8738('0x7')]?_0x1db078[_0x8738('0x7')]:_0x8738('0x8')+random[_0x8738('0x9')](0x6)+_0x8738('0xa');}function getFirstName(_0x2369b3){var _0x67cfc8=_[_0x8738('0xb')](_0x2369b3[_0x8738('0x6')]);if(_0x67cfc8&&_0x67cfc8[_0x8738('0xc')]){if(_0x67cfc8[_0x8738('0xc')]==_0x67cfc8[_0x8738('0x7')]){return _0x67cfc8[_0x8738('0xc')][_0x8738('0xd')](0x0,_0x67cfc8[_0x8738('0xc')][_0x8738('0xe')]('@'));}var _0x2abf81=_0x67cfc8[_0x8738('0xc')]['split'](/\s+/);return _0x2abf81[_0x8738('0xf')]>0x1?_0x2abf81[_0x8738('0x10')](0x0,-0x1)[_0x8738('0x11')]('\x20'):_0x67cfc8[_0x8738('0xc')];}return _0x8738('0x12');}function getLastName(_0x4b0d5a){var _0x2ffc75=_[_0x8738('0xb')](_0x4b0d5a[_0x8738('0x6')]);if(_0x2ffc75&&_0x2ffc75[_0x8738('0xc')]){var _0x347088=_0x2ffc75['name']['split'](/\s+/);return _0x347088[_0x8738('0xf')]>0x1?_0x347088[_0x8738('0x13')]():'';}return'';}function getMails(_0x2b5d52,_0x267d63){var _0x4badbb='';for(var _0xac7904=0x0;_0xac7904<_0x267d63['value'][_0x8738('0xf')];_0xac7904+=0x1){if(_0x267d63[_0x8738('0x6')][_0xac7904][_0x8738('0x7')]!==_0x2b5d52){if(!_[_0x8738('0x14')](_0x4badbb)){_0x4badbb+=',';}_0x4badbb+=_0x267d63[_0x8738('0x6')][_0xac7904][_0x8738('0xc')]||_0x267d63['value'][_0xac7904][_0x8738('0x7')]||'';_0x4badbb+='\x20<';_0x4badbb+=_0x267d63[_0x8738('0x6')][_0xac7904][_0x8738('0x7')]?_0x267d63[_0x8738('0x6')][_0xac7904]['address']:_0x8738('0x8')+random[_0x8738('0x9')](0x6)+_0x8738('0xa');_0x4badbb+='>';}}return _0x4badbb;}function parseEmail(_0x913b72,_0x314d0f,_0x44a1cd){if(_0x314d0f['html']){var _0x3e7901=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3e7901[_0x8738('0x15')](_0x314d0f['html'])){_0x314d0f[_0x8738('0x16')]=_0x314d0f[_0x8738('0x16')][_0x8738('0x17')](_0x3e7901,'');}if(_0x314d0f['html'][_0x8738('0x18')]('<img')){var _0xa14e54=[];_0x314d0f['attachments'][_0x8738('0x19')](_0x1fc60a=>{_0xa14e54[_0x8738('0x1a')](_0x1fc60a[_0x8738('0x1b')]);});var _0x1efda2=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3b4374=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x180c56=_0x314d0f[_0x8738('0x16')][_0x8738('0x17')](_0x3b4374,'_SRC');var _0x193f24=_0x180c56['replace'](_0x1efda2,_0x8738('0x1c'));for(let _0x69b56c=0x0;_0x69b56c<_0xa14e54[_0x8738('0xf')];_0x69b56c++){var _0x167ac6=_0x193f24['replace']('_IMG',_0x8738('0x1d')+_0xa14e54[_0x69b56c]+_0x8738('0x1e'));_0x193f24=_0x167ac6;}_0x314d0f[_0x8738('0x16')]=_0x193f24;}_0x44a1cd[_0x8738('0x1f')]=_0x314d0f['html'];}else{_0x44a1cd[_0x8738('0x1f')]=_0x314d0f[_0x8738('0x20')];}if(_0x44a1cd[_0x8738('0x1f')]){_0x44a1cd[_0x8738('0x1f')]=_0x44a1cd[_0x8738('0x1f')][_0x8738('0x17')](/<a\s+/gi,_0x8738('0x21'));}if(_0x314d0f['to']){_0x44a1cd[_0x8738('0x22')]['originTo']=getMails(null,_0x314d0f['to']);var _0x16e2e9=getMails(_0x913b72[_0x8738('0x23')],_0x314d0f['to']);if(!_[_0x8738('0x14')](_0x16e2e9)){_0x44a1cd['message']['cc']+=_0x16e2e9;}}if(_0x314d0f['cc']){_0x44a1cd[_0x8738('0x22')][_0x8738('0x24')]=getMails(null,_0x314d0f['cc']);var _0x29373b=getMails(_0x913b72['email'],_0x314d0f['cc']);if(!_[_0x8738('0x14')](_0x29373b)){if(!_[_0x8738('0x14')](_0x44a1cd[_0x8738('0x22')]['cc'])){_0x44a1cd[_0x8738('0x22')]['cc']+=',';}_0x44a1cd[_0x8738('0x22')]['cc']+=_0x29373b;}}if(!_[_0x8738('0x18')](_0x44a1cd[_0x8738('0x22')][_0x8738('0x25')],_0x913b72['email'])&&!_['includes'](_0x44a1cd[_0x8738('0x22')]['originCc'],_0x913b72[_0x8738('0x23')])){_0x44a1cd['message']['bcc']=_0x913b72[_0x8738('0x23')];}if(_0x314d0f['attachments']&&_0x314d0f['attachments']['length']){_0x44a1cd[_0x8738('0x22')][_0x8738('0x26')]=_0x314d0f[_0x8738('0x27')][_0x8738('0xf')];for(var _0x3ace4e=0x0,_0x1a28fa,_0x435e2f,_0x152810;_0x3ace4e<_0x314d0f[_0x8738('0x27')][_0x8738('0xf')];_0x3ace4e+=0x1){if(_0x314d0f[_0x8738('0x27')][_0x3ace4e][_0x8738('0x28')]==='attachment'){_0x152810=_0x314d0f[_0x8738('0x27')][_0x3ace4e][_0x8738('0x1b')]||_0x8738('0x29')+_0x3ace4e;_0x1a28fa=util['format'](_0x8738('0x2a'),Date[_0x8738('0x2b')](),_0x152810);_0x435e2f=path[_0x8738('0x11')](config[_0x8738('0x2c')],_0x8738('0x2d'),_0x1a28fa);fs[_0x8738('0x2e')](_0x435e2f,_0x314d0f['attachments'][_0x3ace4e]['content']);_0x44a1cd[_0x8738('0x22')][_0x8738('0x27')][_0x8738('0x1a')]({'name':_0x152810,'basename':_0x1a28fa,'type':_0x314d0f[_0x8738('0x27')][_0x3ace4e]['contentType'],'filepath':_0x435e2f});}}}if(_0x314d0f[_0x8738('0x2f')]&&_0x314d0f[_0x8738('0x2f')][_0x8738('0xf')]>0x0){var _0xa16079=[_0x8738('0x30'),_0x8738('0x31'),_0x8738('0x32')];for(var _0x1fa276=0x0;_0x1fa276<_0x314d0f[_0x8738('0x2f')][_0x8738('0xf')];_0x1fa276++){var _0x222810=_[_0x8738('0xe')](_0xa16079,_0x314d0f[_0x8738('0x2f')][_0x1fa276][_0x8738('0x33')]);if(_0x222810>=0x0){_0x44a1cd['isAutoreply']=!![];}}}return _0x44a1cd;}exports[_0x8738('0x34')]=function(_0x13ed26,_0x53c15f,_0x211754){var _0x22ca21={'from':getAddress(_0x53c15f[_0x8738('0x35')]),'firstName':getFirstName(_0x53c15f[_0x8738('0x35')]),'lastName':getLastName(_0x53c15f[_0x8738('0x35')]),'mapKey':_0x8738('0x23'),'message':{'from':getMails(_0x13ed26[_0x8738('0x23')],_0x53c15f['from']),'to':_0x13ed26['email'],'cc':'','subject':_0x53c15f['subject']||'','messageId':_0x53c15f[_0x8738('0x36')],'inReplyTo':_0x53c15f[_0x8738('0x37')],'sentAt':moment(_0x53c15f[_0x8738('0x38')])[_0x8738('0x39')](_0x8738('0x3a')),'attach':![],'attachments':[]}};if(!_0x53c15f['html']&&!_0x53c15f[_0x8738('0x20')]){var _0x27c528=_[_0x8738('0x3b')](_0x53c15f[_0x8738('0x27')],{'contentType':_0x8738('0x3c')});if(_0x27c528['length']){logger['info'](util[_0x8738('0x39')](_0x8738('0x3d'),_0x53c15f['messageId']));tnef['parseBuffer'](_[_0x8738('0x3e')](_0x27c528)[_0x8738('0x3f')],function(_0xd4e6b8,_0x3b3706){if(_0x3b3706){_0x53c15f['html']=_0x3b3706[_0x8738('0x40')]||_0x8738('0x41');if(_0x3b3706[_0x8738('0x42')]){for(var _0x419d14=0x0;_0x419d14<_0x3b3706['Attachments'][_0x8738('0xf')];_0x419d14++){var _0x3459d0=_0x3b3706[_0x8738('0x42')][_0x419d14];_0x22ca21['message'][_0x8738('0x27')][_0x8738('0x1a')]({'filename':_0x3459d0[_0x8738('0x43')],'content':Buffer['from'](_0x3459d0[_0x8738('0x44')])});}}}_0x211754(parseEmail(_0x13ed26,_0x53c15f,_0x22ca21));});}else{_0x53c15f[_0x8738('0x16')]=_0x8738('0x41');_0x211754(parseEmail(_0x13ed26,_0x53c15f,_0x22ca21));}}else{_0x211754(parseEmail(_0x13ed26,_0x53c15f,_0x22ca21));}};exports[_0x8738('0x45')]=function(_0x31724b,_0x4807ef){var _0x50e323=[_0x8738('0x46')+(_0x4807ef||''),_0x8738('0x47')+_0x31724b,'',''];return Buffer[_0x8738('0x35')](_0x50e323[_0x8738('0x11')]('\ 1'),_0x8738('0x48'))[_0x8738('0x49')](_0x8738('0x4a'));};
\ No newline at end of file
+var _0xcd21=['inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','randomstring','path','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','slice','join','pop','test','html','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml','message','originTo','isEmpty','originCc','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','subject','messageId'];(function(_0x29a86f,_0x3053e0){var _0x565bf4=function(_0x2f4e54){while(--_0x2f4e54){_0x29a86f['push'](_0x29a86f['shift']());}};_0x565bf4(++_0x3053e0);}(_0xcd21,0x1cf));var _0x1cd2=function(_0x501cfd,_0x45600f){_0x501cfd=_0x501cfd-0x0;var _0x214f6a=_0xcd21[_0x501cfd];return _0x214f6a;};'use strict';var _=require('lodash');var moment=require('moment');var random=require(_0x1cd2('0x0'));var fs=require('fs');var path=require(_0x1cd2('0x1'));var util=require(_0x1cd2('0x2'));var tnef=require(_0x1cd2('0x3'));var logger=require('../../../config/logger')(_0x1cd2('0x4'));var config=require(_0x1cd2('0x5'));function getAddress(_0x5307fb){var _0x44ef9a=_[_0x1cd2('0x6')](_0x5307fb[_0x1cd2('0x7')]);return _0x44ef9a&&_0x44ef9a[_0x1cd2('0x8')]?_0x44ef9a[_0x1cd2('0x8')]:_0x1cd2('0x9')+random[_0x1cd2('0xa')](0x6)+_0x1cd2('0xb');}function getFirstName(_0x3d2c53){var _0x39febc=_[_0x1cd2('0x6')](_0x3d2c53[_0x1cd2('0x7')]);if(_0x39febc&&_0x39febc[_0x1cd2('0xc')]){if(_0x39febc[_0x1cd2('0xc')]==_0x39febc[_0x1cd2('0x8')]){return _0x39febc[_0x1cd2('0xc')][_0x1cd2('0xd')](0x0,_0x39febc[_0x1cd2('0xc')][_0x1cd2('0xe')]('@'));}var _0x2a0638=_0x39febc[_0x1cd2('0xc')][_0x1cd2('0xf')](/\s+/);return _0x2a0638[_0x1cd2('0x10')]>0x1?_0x2a0638[_0x1cd2('0x11')](0x0,-0x1)[_0x1cd2('0x12')]('\x20'):_0x39febc[_0x1cd2('0xc')];}return'Anonymous';}function getLastName(_0x4f85be){var _0x9937e9=_[_0x1cd2('0x6')](_0x4f85be[_0x1cd2('0x7')]);if(_0x9937e9&&_0x9937e9[_0x1cd2('0xc')]){var _0x46dc1c=_0x9937e9[_0x1cd2('0xc')][_0x1cd2('0xf')](/\s+/);return _0x46dc1c[_0x1cd2('0x10')]>0x1?_0x46dc1c[_0x1cd2('0x13')]():'';}return'';}function getMails(_0x4dc497,_0x2cb507){var _0x3c6b93='';for(var _0x144493=0x0;_0x144493<_0x2cb507['value'][_0x1cd2('0x10')];_0x144493+=0x1){if(_0x2cb507['value'][_0x144493][_0x1cd2('0x8')]!==_0x4dc497){if(!_['isEmpty'](_0x3c6b93)){_0x3c6b93+=',';}_0x3c6b93+=_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0xc')]||_0x2cb507['value'][_0x144493][_0x1cd2('0x8')]||'';_0x3c6b93+='\x20<';_0x3c6b93+=_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0x8')]?_0x2cb507[_0x1cd2('0x7')][_0x144493][_0x1cd2('0x8')]:'anonymous'+random[_0x1cd2('0xa')](0x6)+'@xcally.com';_0x3c6b93+='>';}}return _0x3c6b93;}function parseEmail(_0x270d9e,_0x1dfab8,_0x16ef44){if(_0x1dfab8['html']){var _0x4318c5=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4318c5[_0x1cd2('0x14')](_0x1dfab8[_0x1cd2('0x15')])){_0x1dfab8[_0x1cd2('0x15')]=_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x16')](_0x4318c5,'');}if(_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x17')]('<img')){var _0x301dbe=[];_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x19')](_0x4570f9=>{_0x301dbe[_0x1cd2('0x1a')](_0x4570f9[_0x1cd2('0x1b')]);});var _0xe2cbd5=/<img.*? _SRC(.*?)[^>]+>/g;var _0x187a47=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x11ef03=_0x1dfab8[_0x1cd2('0x15')][_0x1cd2('0x16')](_0x187a47,_0x1cd2('0x1c'));var _0x10249c=_0x11ef03[_0x1cd2('0x16')](_0xe2cbd5,'_IMG');for(let _0x2df4cf=0x0;_0x2df4cf<_0x301dbe[_0x1cd2('0x10')];_0x2df4cf++){var _0x3518cd=_0x10249c[_0x1cd2('0x16')](_0x1cd2('0x1d'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x301dbe[_0x2df4cf]+_0x1cd2('0x1e'));_0x10249c=_0x3518cd;}_0x1dfab8[_0x1cd2('0x15')]=_0x10249c;}_0x16ef44[_0x1cd2('0x1f')]=_0x1dfab8[_0x1cd2('0x15')];}else{_0x16ef44['body']=_0x1dfab8[_0x1cd2('0x20')];}if(_0x16ef44[_0x1cd2('0x1f')]){_0x16ef44['body']=_0x16ef44['body']['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x1dfab8['to']){_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x22')]=getMails(null,_0x1dfab8['to']);var _0x333609=getMails(_0x270d9e['email'],_0x1dfab8['to']);if(!_[_0x1cd2('0x23')](_0x333609)){_0x16ef44[_0x1cd2('0x21')]['cc']+=_0x333609;}}if(_0x1dfab8['cc']){_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x24')]=getMails(null,_0x1dfab8['cc']);var _0x2aa1a4=getMails(_0x270d9e[_0x1cd2('0x4')],_0x1dfab8['cc']);if(!_[_0x1cd2('0x23')](_0x2aa1a4)){if(!_['isEmpty'](_0x16ef44[_0x1cd2('0x21')]['cc'])){_0x16ef44[_0x1cd2('0x21')]['cc']+=',';}_0x16ef44[_0x1cd2('0x21')]['cc']+=_0x2aa1a4;}}if(!_[_0x1cd2('0x17')](_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x22')],_0x270d9e[_0x1cd2('0x4')])&&!_['includes'](_0x16ef44[_0x1cd2('0x21')][_0x1cd2('0x24')],_0x270d9e[_0x1cd2('0x4')])){_0x16ef44['message']['bcc']=_0x270d9e[_0x1cd2('0x4')];}if(_0x1dfab8[_0x1cd2('0x18')]&&_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x10')]){_0x16ef44[_0x1cd2('0x21')]['attach']=_0x1dfab8['attachments'][_0x1cd2('0x10')];for(var _0xd78f76=0x0,_0x5c947a,_0x91c0e3,_0x5c4d09;_0xd78f76<_0x1dfab8[_0x1cd2('0x18')][_0x1cd2('0x10')];_0xd78f76+=0x1){if(_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x25')]===_0x1cd2('0x26')){_0x5c4d09=_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x1b')]||'attachment-'+_0xd78f76;_0x5c947a=util[_0x1cd2('0x27')](_0x1cd2('0x28'),Date[_0x1cd2('0x29')](),_0x5c4d09);_0x91c0e3=path[_0x1cd2('0x12')](config[_0x1cd2('0x2a')],_0x1cd2('0x2b'),_0x5c947a);fs[_0x1cd2('0x2c')](_0x91c0e3,_0x1dfab8[_0x1cd2('0x18')][_0xd78f76][_0x1cd2('0x2d')]);_0x16ef44[_0x1cd2('0x21')]['attachments']['push']({'name':_0x5c4d09,'basename':_0x5c947a,'type':_0x1dfab8['attachments'][_0xd78f76]['contentType'],'filepath':_0x91c0e3});}}}if(_0x1dfab8[_0x1cd2('0x2e')]&&_0x1dfab8[_0x1cd2('0x2e')][_0x1cd2('0x10')]>0x0){var _0x597d0d=[_0x1cd2('0x2f'),_0x1cd2('0x30'),'Precedence:\x20auto_reply'];for(var _0x500da3=0x0;_0x500da3<_0x1dfab8[_0x1cd2('0x2e')]['length'];_0x500da3++){var _0x55cd1e=_[_0x1cd2('0xe')](_0x597d0d,_0x1dfab8[_0x1cd2('0x2e')][_0x500da3][_0x1cd2('0x31')]);if(_0x55cd1e>=0x0){_0x16ef44[_0x1cd2('0x32')]=!![];}}}return _0x16ef44;}exports[_0x1cd2('0x33')]=function(_0x40414f,_0x2ae8b4,_0x43ea2b){var _0x4aca2a={'from':getAddress(_0x2ae8b4['from']),'firstName':getFirstName(_0x2ae8b4[_0x1cd2('0x34')]),'lastName':getLastName(_0x2ae8b4[_0x1cd2('0x34')]),'mapKey':'email','message':{'from':getMails(_0x40414f[_0x1cd2('0x4')],_0x2ae8b4[_0x1cd2('0x34')]),'to':_0x40414f[_0x1cd2('0x4')],'cc':'','subject':_0x2ae8b4[_0x1cd2('0x35')]||'','messageId':_0x2ae8b4[_0x1cd2('0x36')],'inReplyTo':_0x2ae8b4[_0x1cd2('0x37')],'sentAt':moment(_0x2ae8b4[_0x1cd2('0x38')])[_0x1cd2('0x27')](_0x1cd2('0x39')),'attach':![],'attachments':[]}};if(!_0x2ae8b4[_0x1cd2('0x15')]&&!_0x2ae8b4[_0x1cd2('0x20')]){var _0x5d55d4=_[_0x1cd2('0x3a')](_0x2ae8b4[_0x1cd2('0x18')],{'contentType':_0x1cd2('0x3b')});if(_0x5d55d4['length']){logger['info'](util[_0x1cd2('0x27')](_0x1cd2('0x3c'),_0x2ae8b4[_0x1cd2('0x36')]));tnef[_0x1cd2('0x3d')](_[_0x1cd2('0x3e')](_0x5d55d4)['content'],function(_0x60a718,_0x5bcae8){if(_0x5bcae8){_0x2ae8b4['html']=_0x5bcae8[_0x1cd2('0x3f')]||_0x1cd2('0x40');if(_0x5bcae8[_0x1cd2('0x41')]){for(var _0x4d576a=0x0;_0x4d576a<_0x5bcae8[_0x1cd2('0x41')][_0x1cd2('0x10')];_0x4d576a++){var _0x5297be=_0x5bcae8[_0x1cd2('0x41')][_0x4d576a];_0x4aca2a[_0x1cd2('0x21')]['attachments'][_0x1cd2('0x1a')]({'filename':_0x5297be[_0x1cd2('0x42')],'content':Buffer[_0x1cd2('0x34')](_0x5297be[_0x1cd2('0x43')])});}}}_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));});}else{_0x2ae8b4[_0x1cd2('0x15')]=_0x1cd2('0x40');_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));}}else{_0x43ea2b(parseEmail(_0x40414f,_0x2ae8b4,_0x4aca2a));}};exports[_0x1cd2('0x44')]=function(_0x1f2032,_0x59dd65){var _0x4a422e=[_0x1cd2('0x45')+(_0x59dd65||''),_0x1cd2('0x46')+_0x1f2032,'',''];return Buffer[_0x1cd2('0x34')](_0x4a422e[_0x1cd2('0x12')]('\ 1'),_0x1cd2('0x47'))[_0x1cd2('0x48')](_0x1cd2('0x49'));};
\ No newline at end of file
index 7951985..b787005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d9=['Service','key','SERV','active','Imap','Smtp','exports','lodash','name'];(function(_0x403115,_0x2d6d03){var _0x596ef3=function(_0x145d97){while(--_0x145d97){_0x403115['push'](_0x403115['shift']());}};_0x596ef3(++_0x2d6d03);}(_0x98d9,0x1c9));var _0x998d=function(_0x43eb8d,_0x4ecf32){_0x43eb8d=_0x43eb8d-0x0;var _0x188b43=_0x98d9[_0x43eb8d];return _0x188b43;};'use strict';var _=require(_0x998d('0x0'));function MailAccount(_0x99146c){this['id']=_0x99146c['id']||0x0;this[_0x998d('0x1')]=_0x99146c[_0x998d('0x1')]||_0x998d('0x2');this[_0x998d('0x3')]=_0x99146c[_0x998d('0x3')]||_0x998d('0x4');this[_0x998d('0x5')]=_0x99146c['active']||![];this[_0x998d('0x6')]=_0x99146c['Imap']||[];this['Smtp']=_0x99146c[_0x998d('0x7')]||[];}module[_0x998d('0x8')]=MailAccount;
\ No newline at end of file
+var _0x2c4f=['Imap','Smtp','name','Service','key','SERV','active'];(function(_0x44b887,_0x298573){var _0x1383c5=function(_0x1b9645){while(--_0x1b9645){_0x44b887['push'](_0x44b887['shift']());}};_0x1383c5(++_0x298573);}(_0x2c4f,0x12f));var _0xf2c4=function(_0x20a761,_0x2ffd85){_0x20a761=_0x20a761-0x0;var _0x284a38=_0x2c4f[_0x20a761];return _0x284a38;};'use strict';var _=require('lodash');function MailAccount(_0xef6709){this['id']=_0xef6709['id']||0x0;this[_0xf2c4('0x0')]=_0xef6709[_0xf2c4('0x0')]||_0xf2c4('0x1');this[_0xf2c4('0x2')]=_0xef6709[_0xf2c4('0x2')]||_0xf2c4('0x3');this['active']=_0xef6709[_0xf2c4('0x4')]||![];this['Imap']=_0xef6709[_0xf2c4('0x5')]||[];this[_0xf2c4('0x6')]=_0xef6709['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
index 154d5f5..c020bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d4=['merge','exports','lodash','../model/mailAccount','hasOwnProperty','mergeFromDatabase','prototype','mailAccounts','length','isUndefined'];(function(_0x36c21a,_0x69ef9d){var _0x3b1b0b=function(_0x2c824d){while(--_0x2c824d){_0x36c21a['push'](_0x36c21a['shift']());}};_0x3b1b0b(++_0x69ef9d);}(_0xe4d4,0x174));var _0x4e4d=function(_0x4d06ad,_0x116dab){_0x4d06ad=_0x4d06ad-0x0;var _0x3f4c29=_0xe4d4[_0x4d06ad];return _0x3f4c29;};'use strict';var _=require(_0x4e4d('0x0'));var MailAccount=require(_0x4e4d('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0xa3a519,_0x423c06,_0x2e510){var _0x3d02f3=_['mapKeys'](_0xa3a519,function(_0x76bcaa,_0x43b4f4){return _0x76bcaa[_0x2e510];});for(var _0x15fe71 in _0x423c06){if(_0x423c06[_0x4e4d('0x2')](_0x15fe71)){if(!_0x3d02f3[_0x15fe71]){delete _0x423c06[_0x15fe71];}}}}Realtime['prototype'][_0x4e4d('0x3')]=function(_0x5ddb40,_0x4b8172){for(var _0xfcced0 in _0x4b8172){if(_0x5ddb40[_0x4e4d('0x2')](_0xfcced0)){_0x5ddb40[_0xfcced0]=_0x4b8172[_0xfcced0];}}};Realtime[_0x4e4d('0x4')]['initMailAccounts']=function(){var _0xd250f7=this;return function(_0xf55956){if(_0xf55956){freeIsNotKey(_0xf55956,_0xd250f7[_0x4e4d('0x5')],'id');for(var _0x38a179=0x0,_0x591ad7={},_0x1e5d46={};_0x38a179<_0xf55956[_0x4e4d('0x6')];_0x38a179+=0x1){_0x591ad7=_0xf55956[_0x38a179];if(_[_0x4e4d('0x7')](_0xd250f7[_0x4e4d('0x5')][_0x591ad7['id']])){_0xd250f7['mailAccounts'][_0x591ad7['id']]=new MailAccount(_0x591ad7);}else{_[_0x4e4d('0x8')](_0xd250f7[_0x4e4d('0x5')][_0x591ad7['id']],_0x591ad7);}}}return _0xd250f7[_0x4e4d('0x5')];};};module[_0x4e4d('0x9')]=Realtime;
\ No newline at end of file
+var _0x9012=['prototype','mergeFromDatabase','initMailAccounts','mailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mapKeys'];(function(_0x109a95,_0x4dd3ba){var _0x1881bb=function(_0x27d734){while(--_0x27d734){_0x109a95['push'](_0x109a95['shift']());}};_0x1881bb(++_0x4dd3ba);}(_0x9012,0x6c));var _0x2901=function(_0x296809,_0x1c9665){_0x296809=_0x296809-0x0;var _0x18c0d3=_0x9012[_0x296809];return _0x18c0d3;};'use strict';var _=require('lodash');var MailAccount=require(_0x2901('0x0'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5c262c,_0x3fdd7f,_0x41fdfd){var _0x4111d6=_[_0x2901('0x1')](_0x5c262c,function(_0x4df598,_0x75505f){return _0x4df598[_0x41fdfd];});for(var _0x99b57e in _0x3fdd7f){if(_0x3fdd7f['hasOwnProperty'](_0x99b57e)){if(!_0x4111d6[_0x99b57e]){delete _0x3fdd7f[_0x99b57e];}}}}Realtime[_0x2901('0x2')][_0x2901('0x3')]=function(_0x3ec2dd,_0x154cf0){for(var _0x3603ab in _0x154cf0){if(_0x3ec2dd['hasOwnProperty'](_0x3603ab)){_0x3ec2dd[_0x3603ab]=_0x154cf0[_0x3603ab];}}};Realtime[_0x2901('0x2')][_0x2901('0x4')]=function(){var _0x278376=this;return function(_0x1ddbf3){if(_0x1ddbf3){freeIsNotKey(_0x1ddbf3,_0x278376[_0x2901('0x5')],'id');for(var _0x4a5291=0x0,_0x4f2610={},_0x28a3e3={};_0x4a5291<_0x1ddbf3[_0x2901('0x6')];_0x4a5291+=0x1){_0x4f2610=_0x1ddbf3[_0x4a5291];if(_[_0x2901('0x7')](_0x278376[_0x2901('0x5')][_0x4f2610['id']])){_0x278376[_0x2901('0x5')][_0x4f2610['id']]=new MailAccount(_0x4f2610);}else{_[_0x2901('0x8')](_0x278376[_0x2901('0x5')][_0x4f2610['id']],_0x4f2610);}}}return _0x278376[_0x2901('0x5')];};};module[_0x2901('0x9')]=Realtime;
\ No newline at end of file
index 2dcabfa..77fb41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd3=['data5','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','provider','service','email','active','key','TemplateId','MailServerIn','CloudProvider'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcbd3,0x1eb));var _0x3cbd=function(_0x4755f2,_0x202a12){_0x4755f2=_0x4755f2-0x0;var _0x2d19b3=_0xcbd3[_0x4755f2];return _0x2d19b3;};'use strict';var client=require(_0x3cbd('0x0'));exports[_0x3cbd('0x1')]=function(){return function(){return client[_0x3cbd('0x2')](_0x3cbd('0x3'),{'options':{'attributes':['id',_0x3cbd('0x4'),_0x3cbd('0x5'),_0x3cbd('0x6'),_0x3cbd('0x7'),_0x3cbd('0x8'),_0x3cbd('0x9'),'ListId',_0x3cbd('0xa')],'raw':![],'include':[{'model':_0x3cbd('0xb'),'as':'Imap','include':[{'model':_0x3cbd('0xc'),'attributes':['id','name',_0x3cbd('0x6'),'type',_0x3cbd('0xd')],'as':_0x3cbd('0xc')}]},{'model':_0x3cbd('0xe'),'as':_0x3cbd('0xf'),'include':[{'model':_0x3cbd('0xc'),'attributes':['id','name',_0x3cbd('0x6'),'type',_0x3cbd('0xd')],'as':_0x3cbd('0xc')}]}]},'log':_0x3cbd('0x10')});};};exports['notify']=function(_0x4238c5,_0x26bb22){return client[_0x3cbd('0x2')](_0x3cbd('0x11'),{'account':{'id':_0x4238c5},'body':_0x26bb22,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0xa7ee=['TemplateId','MailServerIn','Imap','service','type','data5','CloudProvider','notify','NotifyMailAccount','../client','Request','GetMailAccount','name','provider','active','ListId'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa7ee,0x159));var _0xea7e=function(_0xe2ebaa,_0x138483){_0xe2ebaa=_0xe2ebaa-0x0;var _0x563838=_0xa7ee[_0xe2ebaa];return _0x563838;};'use strict';var client=require(_0xea7e('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xea7e('0x1')](_0xea7e('0x2'),{'options':{'attributes':['id',_0xea7e('0x3'),_0xea7e('0x4'),'service','email',_0xea7e('0x5'),'key',_0xea7e('0x6'),_0xea7e('0x7')],'raw':![],'include':[{'model':_0xea7e('0x8'),'as':_0xea7e('0x9'),'include':[{'model':'CloudProvider','attributes':['id',_0xea7e('0x3'),_0xea7e('0xa'),_0xea7e('0xb'),_0xea7e('0xc')],'as':_0xea7e('0xd')}]},{'model':'MailServerOut','as':'Smtp','include':[{'model':_0xea7e('0xd'),'attributes':['id','name',_0xea7e('0xa'),_0xea7e('0xb'),_0xea7e('0xc')],'as':_0xea7e('0xd')}]}]},'log':'getMailAccount'});};};exports[_0xea7e('0xe')]=function(_0x56a4e5,_0x335f29){return client[_0xea7e('0x1')](_0xea7e('0xf'),{'account':{'id':_0x56a4e5},'body':_0x335f29,'log':_0xea7e('0xf')});};
\ No newline at end of file
index fd8b669..007e267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3bd=['../client','getSettings','Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x4aabec,_0xf02f7e){var _0xc4ea3=function(_0x352942){while(--_0x352942){_0x4aabec['push'](_0x4aabec['shift']());}};_0xc4ea3(++_0xf02f7e);}(_0xe3bd,0x1c2));var _0xde3b=function(_0x8fa4bc,_0x5cd2af){_0x8fa4bc=_0x8fa4bc-0x0;var _0x35b6a7=_0xe3bd[_0x8fa4bc];return _0x35b6a7;};'use strict';var client=require(_0xde3b('0x0'));exports[_0xde3b('0x1')]=function(){return client[_0xde3b('0x2')](_0xde3b('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xde3b('0x4')]},'log':_0xde3b('0x5')});};
\ No newline at end of file
+var _0xfc8b=['Request','ShowSetting','loginMailFrequency','GetSettings','../client','getSettings'];(function(_0x474736,_0x1ed583){var _0x99dff0=function(_0x3dad70){while(--_0x3dad70){_0x474736['push'](_0x474736['shift']());}};_0x99dff0(++_0x1ed583);}(_0xfc8b,0x64));var _0xbfc8=function(_0x4a4460,_0x2d02e0){_0x4a4460=_0x4a4460-0x0;var _0x19cf76=_0xfc8b[_0x4a4460];return _0x19cf76;};'use strict';var client=require(_0xbfc8('0x0'));exports[_0xbfc8('0x1')]=function(){return client[_0xbfc8('0x2')](_0xbfc8('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xbfc8('0x4')]},'log':_0xbfc8('0x5')});};
\ No newline at end of file
index 9e035d3..71062a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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 37ade27..de4fc02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x719c=['sticky-session','ioredis','../../config/environment','createServer','timeout','port','socket.io','polling','redis','defaults','localhost','socket.io-redis','../../config/triggers','default','../../config/express','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash'];(function(_0x35e54a,_0x46953a){var _0x35c2b0=function(_0x3c0ab9){while(--_0x3c0ab9){_0x35e54a['push'](_0x35e54a['shift']());}};_0x35c2b0(++_0x46953a);}(_0x719c,0xdb));var _0xc719=function(_0x54c2af,_0x290438){_0x54c2af=_0x54c2af-0x0;var _0xa2aa=_0x719c[_0x54c2af];return _0xa2aa;};'use strict';var _=require(_0xc719('0x0'));var http=require('http');var express=require('express');var sticky=require(_0xc719('0x1'));var Redis=require(_0xc719('0x2'));var config=require(_0xc719('0x3'));var app=express();var server=http[_0xc719('0x4')](app);server[_0xc719('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0xc719('0x6')])){var socketio=require(_0xc719('0x7'))(server,{'transports':['websocket',_0xc719('0x8')]});config[_0xc719('0x9')]=_[_0xc719('0xa')](config['redis'],{'host':_0xc719('0xb'),'port':0x18eb});socketio['adapter'](require(_0xc719('0xc'))({'pubClient':new Redis(config[_0xc719('0x9')]),'subClient':new Redis(config['redis'])}));require(_0xc719('0xd'))[_0xc719('0xe')]();require('../../config/socketio')[_0xc719('0xe')](socketio);require(_0xc719('0xf'))[_0xc719('0xe')](app);require('../../routes')[_0xc719('0xe')](app);}else{server['once'](_0xc719('0x10'),function(){console[_0xc719('0x11')](_0xc719('0x12'),config[_0xc719('0x6')]);});}exports=module[_0xc719('0x13')]=app;
\ No newline at end of file
+var _0x1363=['exports','lodash','http','../../config/environment','timeout','port','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x4dd342,_0x24253d){var _0x290f10=function(_0x2937a6){while(--_0x2937a6){_0x4dd342['push'](_0x4dd342['shift']());}};_0x290f10(++_0x24253d);}(_0x1363,0x94));var _0x3136=function(_0xc63269,_0x1f4dce){_0xc63269=_0xc63269-0x0;var _0x14f56e=_0x1363[_0xc63269];return _0x14f56e;};'use strict';var _=require(_0x3136('0x0'));var http=require(_0x3136('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x3136('0x2'));var app=express();var server=http['createServer'](app);server[_0x3136('0x3')]=0xdbba0;if(sticky['listen'](server,config[_0x3136('0x4')])){var socketio=require('socket.io')(server,{'transports':['websocket',_0x3136('0x5')]});config[_0x3136('0x6')]=_[_0x3136('0x7')](config[_0x3136('0x6')],{'host':_0x3136('0x8'),'port':0x18eb});socketio[_0x3136('0x9')](require(_0x3136('0xa'))({'pubClient':new Redis(config[_0x3136('0x6')]),'subClient':new Redis(config[_0x3136('0x6')])}));require(_0x3136('0xb'))[_0x3136('0xc')]();require(_0x3136('0xd'))[_0x3136('0xc')](socketio);require(_0x3136('0xe'))[_0x3136('0xc')](app);require(_0x3136('0xf'))['default'](app);}else{server[_0x3136('0x10')](_0x3136('0x11'),function(){console[_0x3136('0x12')](_0x3136('0x13'),config[_0x3136('0x4')]);});}exports=module[_0x3136('0x14')]=app;
\ No newline at end of file
index 7ac19eb..d9cbe7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8420=['client','Request','request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x2199f1,_0x10c734){var _0x43436b=function(_0x524bf8){while(--_0x524bf8){_0x2199f1['push'](_0x2199f1['shift']());}};_0x43436b(++_0x10c734);}(_0x8420,0x1eb));var _0x0842=function(_0x51ab35,_0x1d9538){_0x51ab35=_0x51ab35-0x0;var _0x270f86=_0x8420[_0x51ab35];return _0x270f86;};'use strict';var jayson=require(_0x0842('0x0'));var BPromise=require(_0x0842('0x1'));var logger=require(_0x0842('0x2'))(_0x0842('0x3'));var client=jayson[_0x0842('0x4')]['http']({'port':0x2329});client[_0x0842('0x5')]=function(_0x10221b,_0x384c47){return new BPromise(function(_0x313897,_0xb18168){return client[_0x0842('0x6')](_0x10221b,_0x384c47)[_0x0842('0x7')](function(_0xc43bbf){logger[_0x0842('0x8')](_0x0842('0x9'),_0x0842('0x3'),_0x10221b,_0x384c47,_0xc43bbf);if(_0xc43bbf['error']){logger[_0x0842('0xa')]('rpc',_0x0842('0x3'),_0x10221b,_0xc43bbf['error'][_0x0842('0xb')],_0x384c47);return _0xb18168(_0xc43bbf[_0x0842('0xa')][_0x0842('0xb')]);}else{return _0x313897(_0xc43bbf[_0x0842('0xc')]);}})[_0x0842('0xd')](function(_0xe659e7){logger[_0x0842('0xa')](_0x0842('0x9'),_0x0842('0x3'),_0x10221b,_0xe659e7,_0x384c47);return _0xb18168(_0xe659e7);});});};module[_0x0842('0xe')]=client;
\ No newline at end of file
+var _0xbe17=['http','Request','then','debug','error','result','catch','rpc','exports','bluebird','../../config/logger','routing','client'];(function(_0x4ecbba,_0x3c366f){var _0x569384=function(_0x38a8a5){while(--_0x38a8a5){_0x4ecbba['push'](_0x4ecbba['shift']());}};_0x569384(++_0x3c366f);}(_0xbe17,0xd9));var _0x7be1=function(_0x5c0595,_0x4d4b47){_0x5c0595=_0x5c0595-0x0;var _0xf33f05=_0xbe17[_0x5c0595];return _0xf33f05;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x7be1('0x0'));var logger=require(_0x7be1('0x1'))(_0x7be1('0x2'));var client=jayson[_0x7be1('0x3')][_0x7be1('0x4')]({'port':0x2329});client[_0x7be1('0x5')]=function(_0x2a0d4f,_0x550075){return new BPromise(function(_0x2857a9,_0x3f9c02){return client['request'](_0x2a0d4f,_0x550075)[_0x7be1('0x6')](function(_0x403ea2){logger[_0x7be1('0x7')]('rpc',_0x7be1('0x2'),_0x2a0d4f,_0x550075,_0x403ea2);if(_0x403ea2[_0x7be1('0x8')]){logger[_0x7be1('0x8')]('rpc',_0x7be1('0x2'),_0x2a0d4f,_0x403ea2['error']['message'],_0x550075);return _0x3f9c02(_0x403ea2['error']['message']);}else{return _0x2857a9(_0x403ea2[_0x7be1('0x9')]);}})[_0x7be1('0xa')](function(_0x443068){logger[_0x7be1('0x8')](_0x7be1('0xb'),_0x7be1('0x2'),_0x2a0d4f,_0x443068,_0x550075);return _0x3f9c02(_0x443068);});});};module[_0x7be1('0xc')]=client;
\ No newline at end of file
index 74a84b0..4b58ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd271=['./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd271,0xf2));var _0x1d27=function(_0x357095,_0x33b4c3){_0x357095=_0x357095-0x0;var _0x3543e9=_0xd271[_0x357095];return _0x3543e9;};'use strict';var BPromise=require('bluebird');var server=require(_0x1d27('0x0'));var Realtime=require(_0x1d27('0x1'));var user=require(_0x1d27('0x2'));var interval=require(_0x1d27('0x3'));var openchannelQueue=require(_0x1d27('0x4'));var chatQueue=require(_0x1d27('0x5'));var smsQueue=require(_0x1d27('0x6'));var mailQueue=require(_0x1d27('0x7'));var faxQueue=require(_0x1d27('0x8'));var whatsappQueue=require(_0x1d27('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x1d27('0xa')]()[_0x1d27('0xb')](user[_0x1d27('0xc')]())['then'](realtime['initAgents']())[_0x1d27('0xb')](interval[_0x1d27('0xd')]())[_0x1d27('0xb')](realtime[_0x1d27('0xe')]())[_0x1d27('0xb')](openchannelQueue[_0x1d27('0xf')]())['then'](realtime['initOpenchannelQueues']())[_0x1d27('0xb')](chatQueue[_0x1d27('0x10')]())['then'](realtime[_0x1d27('0x11')]())[_0x1d27('0xb')](smsQueue['getSmsQueues']())[_0x1d27('0xb')](realtime[_0x1d27('0x12')]())[_0x1d27('0xb')](mailQueue['getMailQueues']())['then'](realtime[_0x1d27('0x13')]())[_0x1d27('0xb')](faxQueue[_0x1d27('0x14')]())[_0x1d27('0xb')](realtime[_0x1d27('0x15')]())[_0x1d27('0xb')](whatsappQueue['getWhatsappQueues']())[_0x1d27('0xb')](realtime['initWhatsappQueues']())[_0x1d27('0xb')](function(){return realtime;});}function main(){return server[_0x1d27('0x16')](realtime)[_0x1d27('0xb')](function(_0x3c11bb){return initRealtime();})[_0x1d27('0xb')](function(_0x2be520){return setInterval(initRealtime,0x1388);})[_0x1d27('0x17')](function(_0x545511){console[_0x1d27('0x18')](_0x545511);});}main();
\ No newline at end of file
+var _0x7aa4=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','getAgents','then','getIntervals','initIntervals'];(function(_0x42d501,_0x593932){var _0x3a7eb2=function(_0x2bd521){while(--_0x2bd521){_0x42d501['push'](_0x42d501['shift']());}};_0x3a7eb2(++_0x593932);}(_0x7aa4,0x179));var _0x47aa=function(_0x5badd3,_0x2f4b82){_0x5badd3=_0x5badd3-0x0;var _0x5b3848=_0x7aa4[_0x5badd3];return _0x5b3848;};'use strict';var BPromise=require('bluebird');var server=require(_0x47aa('0x0'));var Realtime=require('./realtime');var user=require(_0x47aa('0x1'));var interval=require(_0x47aa('0x2'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x47aa('0x3'));var smsQueue=require(_0x47aa('0x4'));var mailQueue=require(_0x47aa('0x5'));var faxQueue=require(_0x47aa('0x6'));var whatsappQueue=require(_0x47aa('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x47aa('0x8')]()['then'](user[_0x47aa('0x9')]())[_0x47aa('0xa')](realtime['initAgents']())[_0x47aa('0xa')](interval[_0x47aa('0xb')]())['then'](realtime[_0x47aa('0xc')]())[_0x47aa('0xa')](openchannelQueue[_0x47aa('0xd')]())[_0x47aa('0xa')](realtime[_0x47aa('0xe')]())[_0x47aa('0xa')](chatQueue[_0x47aa('0xf')]())['then'](realtime[_0x47aa('0x10')]())['then'](smsQueue[_0x47aa('0x11')]())[_0x47aa('0xa')](realtime[_0x47aa('0x12')]())[_0x47aa('0xa')](mailQueue['getMailQueues']())['then'](realtime['initMailQueues']())[_0x47aa('0xa')](faxQueue[_0x47aa('0x13')]())['then'](realtime[_0x47aa('0x14')]())[_0x47aa('0xa')](whatsappQueue[_0x47aa('0x15')]())['then'](realtime[_0x47aa('0x16')]())[_0x47aa('0xa')](function(){return realtime;});}function main(){return server[_0x47aa('0x17')](realtime)['then'](function(_0x44c79b){return initRealtime();})[_0x47aa('0xa')](function(_0x1737a1){return setInterval(initRealtime,0x1388);})[_0x47aa('0x18')](function(_0x2f051f){console[_0x47aa('0x19')](_0x2f051f);});}main();
\ No newline at end of file
index c2b192b..dc3a1ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x2e6ab8,_0x4ea85c){var _0x16cba0=function(_0x4b3776){while(--_0x4b3776){_0x2e6ab8['push'](_0x2e6ab8['shift']());}};_0x16cba0(++_0x4ea85c);}(_0x326f,0xd1));var _0xf326=function(_0x2626dc,_0x27289b){_0x2626dc=_0x2626dc-0x0;var _0x48cc16=_0x326f[_0x2626dc];return _0x48cc16;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x4aeb19,_0x203ac9){var _0x513693=function(_0x48d6c4){while(--_0x48d6c4){_0x4aeb19['push'](_0x4aeb19['shift']());}};_0x513693(++_0x203ac9);}(_0x814b,0x1a2));var _0xb814=function(_0x2bc2a2,_0x51e95f){_0x2bc2a2=_0x2bc2a2-0x0;var _0x20de67=_0x814b[_0x2bc2a2];return _0x20de67;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
index 27d5ff5..bde1937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57b=['sendMailMessage','SendMail','bluebird','jayson/promise','http','request','then','error','result','catch'];(function(_0xf82298,_0x59fb1f){var _0x4dabc6=function(_0x532614){while(--_0x532614){_0xf82298['push'](_0xf82298['shift']());}};_0x4dabc6(++_0x59fb1f);}(_0xb57b,0x110));var _0xbb57=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xb57b[_0x50007c];return _0x5c1ec7;};'use strict';var BPromise=require(_0xbb57('0x0'));var jayson=require(_0xbb57('0x1'));var client=jayson['client'][_0xbb57('0x2')]({'port':0x232b});function request(_0x3862aa,_0x5dce59){return new BPromise(function(_0xd4acee,_0x5bd0da){return client[_0xbb57('0x3')](_0x3862aa,_0x5dce59)[_0xbb57('0x4')](function(_0x3682a2){if(_0x3682a2['error']){return _0x5bd0da(_0x3682a2[_0xbb57('0x5')]['message']);}else{return _0xd4acee(_0x3682a2[_0xbb57('0x6')]);}})[_0xbb57('0x7')](function(_0x12f9fb){return _0x5bd0da(_0x12f9fb);});});}exports[_0xbb57('0x8')]=function(_0x5c2890,_0x10213a){return request(_0xbb57('0x9'),{'account':_0x5c2890,'message':_0x10213a});};
\ No newline at end of file
+var _0xe959=['error','message','result','catch','bluebird','client','http','request'];(function(_0x1cb973,_0x5e1645){var _0x564e7c=function(_0x1b2fa8){while(--_0x1b2fa8){_0x1cb973['push'](_0x1cb973['shift']());}};_0x564e7c(++_0x5e1645);}(_0xe959,0x17c));var _0x9e95=function(_0xfce1e,_0x29cef3){_0xfce1e=_0xfce1e-0x0;var _0x774129=_0xe959[_0xfce1e];return _0x774129;};'use strict';var BPromise=require(_0x9e95('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x9e95('0x1')][_0x9e95('0x2')]({'port':0x232b});function request(_0x318cb7,_0x2e51ab){return new BPromise(function(_0x265ca5,_0x1efd3c){return client[_0x9e95('0x3')](_0x318cb7,_0x2e51ab)['then'](function(_0x24fd67){if(_0x24fd67[_0x9e95('0x4')]){return _0x1efd3c(_0x24fd67[_0x9e95('0x4')][_0x9e95('0x5')]);}else{return _0x265ca5(_0x24fd67[_0x9e95('0x6')]);}})[_0x9e95('0x7')](function(_0x3580c2){return _0x1efd3c(_0x3580c2);});});}exports['sendMailMessage']=function(_0x554f32,_0x27702e){return request('SendMail',{'account':_0x554f32,'message':_0x27702e});};
\ No newline at end of file
index 1dade6e..490c2db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfefa=['busyQueue','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','fax','Status','format','mailStatusTime','mailCurrentCapacity','faxStatus','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','chatWaitingInteractions','stringify','emit','user:save','exports','lodash','moment','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy'];(function(_0x452968,_0x31e391){var _0xb6f9ae=function(_0x263987){while(--_0x263987){_0x452968['push'](_0x452968['shift']());}};_0xb6f9ae(++_0x31e391);}(_0xfefa,0xe3));var _0xafef=function(_0x4604f0,_0x34d0a7){_0x4604f0=_0x4604f0-0x0;var _0x3f39f5=_0xfefa[_0x4604f0];return _0x3f39f5;};'use strict';var _=require(_0xafef('0x0'));var moment=require(_0xafef('0x1'));var md5=require(_0xafef('0x2'));var Redis=require('ioredis');var config=require(_0xafef('0x3'));config[_0xafef('0x4')]=_[_0xafef('0x5')](config[_0xafef('0x4')],{'host':_0xafef('0x6'),'port':0x18eb});var io=require(_0xafef('0x7'))(new Redis(config[_0xafef('0x4')]));function Agent(_0x114729){this['id']=_0x114729['id']||0x0;this[_0xafef('0x8')]=_0x114729[_0xafef('0x8')]||'';this['online']=_0x114729[_0xafef('0x9')]||!![];this['voicePause']=_0x114729[_0xafef('0xa')]||![];this[_0xafef('0xb')]=_0x114729[_0xafef('0xb')]||![];this[_0xafef('0xc')]=_0x114729['mailPause']||![];this[_0xafef('0xd')]=_0x114729[_0xafef('0xd')]||![];this['smsPause']=_0x114729[_0xafef('0xe')]||![];this[_0xafef('0xf')]=_0x114729[_0xafef('0xf')]||![];this[_0xafef('0x10')]=_0xafef('0x11');this[_0xafef('0x12')]=0x0;this[_0xafef('0x13')]=_0x114729['chatCapacity']||0x0;this[_0xafef('0x14')]=0x0;this[_0xafef('0x15')]=_0xafef('0x11');this['mailStatusTime']=0x0;this[_0xafef('0x16')]=_0x114729[_0xafef('0x16')]||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']=_0xafef('0x11');this[_0xafef('0x17')]=0x0;this[_0xafef('0x18')]=_0x114729[_0xafef('0x18')]||0x0;this['faxCurrentCapacity']=0x0;this[_0xafef('0x19')]=_0xafef('0x11');this[_0xafef('0x1a')]=0x0;this[_0xafef('0x1b')]=_0x114729['smsCapacity']||0x0;this['smsCurrentCapacity']=0x0;this[_0xafef('0x1c')]=_0xafef('0x11');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x114729['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0xafef('0x11');this[_0xafef('0x1d')]=0x0;this[_0xafef('0x1e')]=_0x114729['openchannelCapacity']||0x0;this[_0xafef('0x1f')]=0x0;this[_0xafef('0x20')]=![];this[_0xafef('0x21')]=undefined;this[_0xafef('0x2')]='';this['chatWaitingInteractions']={};this[_0xafef('0x22')]={};this[_0xafef('0x23')]={};this[_0xafef('0x24')]={};this[_0xafef('0x25')]={};this[_0xafef('0x26')]={};this[_0xafef('0x27')]();}Agent[_0xafef('0x28')][_0xafef('0x29')]=function(_0x5ed474){if(this[_0x5ed474+_0xafef('0x2a')]>0x0){if(this[_0x5ed474+_0xafef('0x2b')]>0x0&&this[_0x5ed474+_0xafef('0x2a')]>=this[_0x5ed474+'Capacity']){return _0xafef('0x2c');}else{return _0xafef('0x2d');}}else{return _0xafef('0x2e');}};Agent['prototype'][_0xafef('0x27')]=function(){var _0x1a85bb=[_0xafef('0x2f'),_0xafef('0x30'),'openchannel',_0xafef('0x31'),'sms','whatsapp'];for(var _0x286c1f=0x0;_0x286c1f<_0x1a85bb['length'];_0x286c1f+=0x1){var _0x4bb063=this['getChannelStatus'](_0x1a85bb[_0x286c1f]);if(this[_0x1a85bb[_0x286c1f]+_0xafef('0x32')]!==_0x4bb063){this[_0x1a85bb[_0x286c1f]+'StatusTime']=_['toNumber'](moment()[_0xafef('0x33')]('x'));}this[_0x1a85bb[_0x286c1f]+_0xafef('0x32')]=_0x4bb063;}var _0x356228={'id':this['id'],'name':this[_0xafef('0x8')],'online':this[_0xafef('0x9')],'voicePause':this[_0xafef('0xa')],'chatPause':this[_0xafef('0xb')],'mailPause':this[_0xafef('0xc')],'smsPause':this[_0xafef('0xe')],'faxPause':this[_0xafef('0xd')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xafef('0x10')],'chatStatusTime':this[_0xafef('0x12')],'chatCapacity':this[_0xafef('0x13')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xafef('0x34')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xafef('0x35')],'faxStatus':this[_0xafef('0x36')],'faxStatusTime':this[_0xafef('0x17')],'faxCapacity':this[_0xafef('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0xafef('0x19')],'smsStatusTime':this[_0xafef('0x1a')],'smsCapacity':this[_0xafef('0x1b')],'smsCurrentCapacity':this[_0xafef('0x37')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0xafef('0x38')],'whatsappCapacity':this[_0xafef('0x39')],'whatsappCurrentCapacity':this[_0xafef('0x3a')],'openchannelStatus':this[_0xafef('0x3b')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xafef('0x1e')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0xafef('0x20')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0xafef('0x3c')],'faxWaitingInteractions':this[_0xafef('0x22')],'mailWaitingInteractions':this[_0xafef('0x23')],'openchannelWaitingInteractions':this[_0xafef('0x24')],'smsWaitingInteractions':this[_0xafef('0x25')],'whatsappWaitingInteractions':this[_0xafef('0x26')]};var _0x422d9d=md5(JSON[_0xafef('0x3d')](_0x356228));if(this['md5']!==_0x422d9d){this[_0xafef('0x2')]=_0x422d9d;io[_0xafef('0x3e')](_0xafef('0x3f'),_0x356228);}};module[_0xafef('0x40')]=Agent;
\ No newline at end of file
+var _0x1410=['whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','Status','StatusTime','toNumber','format','faxStatusTime','faxCurrentCapacity','whatsappStatusTime','busy','smsWaitingInteractions','md5','emit','user:save','exports','moment','ioredis','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','faxStatus','faxCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity'];(function(_0x559cbd,_0xd06ce2){var _0x4313df=function(_0x18cac8){while(--_0x18cac8){_0x559cbd['push'](_0x559cbd['shift']());}};_0x4313df(++_0xd06ce2);}(_0x1410,0x166));var _0x0141=function(_0x23b087,_0x55012f){_0x23b087=_0x23b087-0x0;var _0x366b37=_0x1410[_0x23b087];return _0x366b37;};'use strict';var _=require('lodash');var moment=require(_0x0141('0x0'));var md5=require('md5');var Redis=require(_0x0141('0x1'));var config=require('../../../config/environment');config[_0x0141('0x2')]=_['defaults'](config[_0x0141('0x2')],{'host':_0x0141('0x3'),'port':0x18eb});var io=require(_0x0141('0x4'))(new Redis(config['redis']));function Agent(_0x406627){this['id']=_0x406627['id']||0x0;this[_0x0141('0x5')]=_0x406627[_0x0141('0x5')]||'';this['online']=_0x406627[_0x0141('0x6')]||!![];this[_0x0141('0x7')]=_0x406627[_0x0141('0x7')]||![];this['chatPause']=_0x406627[_0x0141('0x8')]||![];this[_0x0141('0x9')]=_0x406627[_0x0141('0x9')]||![];this['faxPause']=_0x406627[_0x0141('0xa')]||![];this[_0x0141('0xb')]=_0x406627['smsPause']||![];this['openchannelPause']=_0x406627[_0x0141('0xc')]||![];this['chatStatus']=_0x0141('0xd');this[_0x0141('0xe')]=0x0;this[_0x0141('0xf')]=_0x406627[_0x0141('0xf')]||0x0;this[_0x0141('0x10')]=0x0;this[_0x0141('0x11')]=_0x0141('0xd');this['mailStatusTime']=0x0;this['mailCapacity']=_0x406627[_0x0141('0x12')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x0141('0x13')]='unknown';this['faxStatusTime']=0x0;this[_0x0141('0x14')]=_0x406627[_0x0141('0x14')]||0x0;this['faxCurrentCapacity']=0x0;this['smsStatus']=_0x0141('0xd');this[_0x0141('0x15')]=0x0;this[_0x0141('0x16')]=_0x406627['smsCapacity']||0x0;this[_0x0141('0x17')]=0x0;this[_0x0141('0x18')]=_0x0141('0xd');this['whatsappStatusTime']=0x0;this[_0x0141('0x19')]=_0x406627[_0x0141('0x19')]||0x0;this[_0x0141('0x1a')]=0x0;this[_0x0141('0x1b')]=_0x0141('0xd');this[_0x0141('0x1c')]=0x0;this[_0x0141('0x1d')]=_0x406627[_0x0141('0x1d')]||0x0;this[_0x0141('0x1e')]=0x0;this['busy']=![];this[_0x0141('0x1f')]=undefined;this['md5']='';this[_0x0141('0x20')]={};this[_0x0141('0x21')]={};this[_0x0141('0x22')]={};this[_0x0141('0x23')]={};this['smsWaitingInteractions']={};this[_0x0141('0x24')]={};this[_0x0141('0x25')]();}Agent[_0x0141('0x26')][_0x0141('0x27')]=function(_0x28c8db){if(this[_0x28c8db+_0x0141('0x28')]>0x0){if(this[_0x28c8db+'Capacity']>0x0&&this[_0x28c8db+_0x0141('0x28')]>=this[_0x28c8db+_0x0141('0x29')]){return _0x0141('0x2a');}else{return _0x0141('0x2b');}}else{return _0x0141('0x2c');}};Agent[_0x0141('0x26')][_0x0141('0x25')]=function(){var _0x122c51=[_0x0141('0x2d'),_0x0141('0x2e'),_0x0141('0x2f'),_0x0141('0x30'),_0x0141('0x31'),_0x0141('0x32')];for(var _0x3795ec=0x0;_0x3795ec<_0x122c51['length'];_0x3795ec+=0x1){var _0x15338a=this['getChannelStatus'](_0x122c51[_0x3795ec]);if(this[_0x122c51[_0x3795ec]+_0x0141('0x33')]!==_0x15338a){this[_0x122c51[_0x3795ec]+_0x0141('0x34')]=_[_0x0141('0x35')](moment()[_0x0141('0x36')]('x'));}this[_0x122c51[_0x3795ec]+_0x0141('0x33')]=_0x15338a;}var _0x35c635={'id':this['id'],'name':this[_0x0141('0x5')],'online':this[_0x0141('0x6')],'voicePause':this[_0x0141('0x7')],'chatPause':this[_0x0141('0x8')],'mailPause':this[_0x0141('0x9')],'smsPause':this[_0x0141('0xb')],'faxPause':this[_0x0141('0xa')],'openchannelPause':this[_0x0141('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x0141('0xf')],'chatCurrentCapacity':this[_0x0141('0x10')],'mailStatus':this['mailStatus'],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x0141('0x13')],'faxStatusTime':this[_0x0141('0x37')],'faxCapacity':this[_0x0141('0x14')],'faxCurrentCapacity':this[_0x0141('0x38')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x0141('0x15')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x0141('0x17')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x0141('0x39')],'whatsappCapacity':this[_0x0141('0x19')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x0141('0x1b')],'openchannelStatusTime':this[_0x0141('0x1c')],'openchannelCapacity':this[_0x0141('0x1d')],'openchannelCurrentCapacity':this[_0x0141('0x1e')],'busy':this[_0x0141('0x3a')],'busyQueue':this[_0x0141('0x1f')],'chatWaitingInteractions':this[_0x0141('0x20')],'faxWaitingInteractions':this[_0x0141('0x21')],'mailWaitingInteractions':this[_0x0141('0x22')],'openchannelWaitingInteractions':this[_0x0141('0x23')],'smsWaitingInteractions':this[_0x0141('0x3b')],'whatsappWaitingInteractions':this['whatsappWaitingInteractions']};var _0x2f3ab6=md5(JSON['stringify'](_0x35c635));if(this[_0x0141('0x3c')]!==_0x2f3ab6){this[_0x0141('0x3c')]=_0x2f3ab6;io[_0x0141('0x3d')](_0x0141('0x3e'),_0x35c635);}};module[_0x0141('0x3f')]=Agent;
\ No newline at end of file
index 60b4799..1194ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc39=['_rr','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','map'];(function(_0x1232a1,_0x1f8631){var _0x2f680c=function(_0x3aa431){while(--_0x3aa431){_0x1232a1['push'](_0x1232a1['shift']());}};_0x2f680c(++_0x1f8631);}(_0xbc39,0x68));var _0x9bc3=function(_0x5c25f7,_0x3a69dc){_0x5c25f7=_0x5c25f7-0x0;var _0x1d51d1=_0xbc39[_0x5c25f7];return _0x1d51d1;};'use strict';var _=require(_0x9bc3('0x0'));var md5=require(_0x9bc3('0x1'));var util=require(_0x9bc3('0x2'));var Redis=require(_0x9bc3('0x3'));var config=require(_0x9bc3('0x4'));config[_0x9bc3('0x5')]=_[_0x9bc3('0x6')](config[_0x9bc3('0x5')],{'host':_0x9bc3('0x7'),'port':0x18eb});var io=require(_0x9bc3('0x8'))(new Redis(config[_0x9bc3('0x5')]));function ChatQueue(_0x9b749e){this['id']=_0x9b749e['id']||0x0;this[_0x9bc3('0x9')]=_0x9b749e[_0x9bc3('0x9')]||'';this['timeout']=_0x9b749e[_0x9bc3('0xa')]||0xa;this[_0x9bc3('0xb')]=_0x9b749e[_0x9bc3('0xb')]||_0x9bc3('0xc');this['Agents']=_0x9b749e[_0x9bc3('0xd')];this[_0x9bc3('0xe')]={};this[_0x9bc3('0xf')]=0x0;this[_0x9bc3('0x1')]='';this['updateRouting']();this[_0x9bc3('0x10')]();}ChatQueue[_0x9bc3('0x11')][_0x9bc3('0x12')]=function(){var _0x136e48=this[_0x9bc3('0xe')]['_rr'];this[_0x9bc3('0xe')]=_[_0x9bc3('0x13')](this[_0x9bc3('0xd')],'id');this[_0x9bc3('0xe')][_0x9bc3('0x14')]=_0x136e48;};ChatQueue[_0x9bc3('0x11')]['updateRealtime']=function(){this[_0x9bc3('0x15')]=0x0;this[_0x9bc3('0x16')]=0x0;for(var _0xf355b0=0x0;_0xf355b0<this[_0x9bc3('0xd')][_0x9bc3('0x17')];_0xf355b0+=0x1){if(this[_0x9bc3('0xd')][_0xf355b0][_0x9bc3('0x18')]){this['loggedIn']+=0x1;}if(this[_0x9bc3('0xd')][_0xf355b0][_0x9bc3('0x19')]){this[_0x9bc3('0x16')]+=0x1;}}this[_0x9bc3('0x1a')]=this['loggedIn']-this[_0x9bc3('0x16')];this['available']=this[_0x9bc3('0x1a')]>=0x0?this[_0x9bc3('0x1a')]:0x0;var _0x271791={'id':this['id'],'available':this[_0x9bc3('0x1a')],'loggedIn':this[_0x9bc3('0x15')],'name':this[_0x9bc3('0x9')],'paused':this['paused'],'waiting':this[_0x9bc3('0xf')]};var _0x18a89a=md5(JSON[_0x9bc3('0x1b')](_0x271791));if(this['md5']!==_0x18a89a){this[_0x9bc3('0x1')]=_0x18a89a;io['to'](util[_0x9bc3('0x1c')](_0x9bc3('0x1d'),_0x271791[_0x9bc3('0x9')]))[_0x9bc3('0x1e')]('chat_queue:save',_0x271791);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x16bc=['md5','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','chatPause','available','stringify','format','chat:queue:%s','exports','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x16bc,0xa1));var _0xc16b=function(_0x12f4d8,_0x1f6d82){_0x12f4d8=_0x12f4d8-0x0;var _0x265413=_0x16bc[_0x12f4d8];return _0x265413;};'use strict';var _=require(_0xc16b('0x0'));var md5=require(_0xc16b('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xc16b('0x2'));config[_0xc16b('0x3')]=_[_0xc16b('0x4')](config[_0xc16b('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xc16b('0x5'))(new Redis(config[_0xc16b('0x3')]));function ChatQueue(_0x322e58){this['id']=_0x322e58['id']||0x0;this[_0xc16b('0x6')]=_0x322e58[_0xc16b('0x6')]||'';this['timeout']=_0x322e58[_0xc16b('0x7')]||0xa;this[_0xc16b('0x8')]=_0x322e58[_0xc16b('0x8')]||_0xc16b('0x9');this[_0xc16b('0xa')]=_0x322e58[_0xc16b('0xa')];this[_0xc16b('0xb')]={};this[_0xc16b('0xc')]=0x0;this[_0xc16b('0x1')]='';this[_0xc16b('0xd')]();this[_0xc16b('0xe')]();}ChatQueue[_0xc16b('0xf')][_0xc16b('0xd')]=function(){var _0x2b8468=this[_0xc16b('0xb')]['_rr'];this[_0xc16b('0xb')]=_[_0xc16b('0x10')](this[_0xc16b('0xa')],'id');this[_0xc16b('0xb')][_0xc16b('0x11')]=_0x2b8468;};ChatQueue[_0xc16b('0xf')][_0xc16b('0xe')]=function(){this[_0xc16b('0x12')]=0x0;this[_0xc16b('0x13')]=0x0;for(var _0x5ae771=0x0;_0x5ae771<this[_0xc16b('0xa')][_0xc16b('0x14')];_0x5ae771+=0x1){if(this['Agents'][_0x5ae771]['online']){this[_0xc16b('0x12')]+=0x1;}if(this[_0xc16b('0xa')][_0x5ae771][_0xc16b('0x15')]){this['paused']+=0x1;}}this[_0xc16b('0x16')]=this[_0xc16b('0x12')]-this[_0xc16b('0x13')];this['available']=this[_0xc16b('0x16')]>=0x0?this[_0xc16b('0x16')]:0x0;var _0xd95ff4={'id':this['id'],'available':this['available'],'loggedIn':this[_0xc16b('0x12')],'name':this[_0xc16b('0x6')],'paused':this[_0xc16b('0x13')],'waiting':this[_0xc16b('0xc')]};var _0x49fb58=md5(JSON[_0xc16b('0x17')](_0xd95ff4));if(this[_0xc16b('0x1')]!==_0x49fb58){this[_0xc16b('0x1')]=_0x49fb58;io['to'](util[_0xc16b('0x18')](_0xc16b('0x19'),_0xd95ff4[_0xc16b('0x6')]))['emit']('chat_queue:save',_0xd95ff4);}};module[_0xc16b('0x1a')]=ChatQueue;
\ No newline at end of file
index a07a882..e370bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eeb=['redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','updateRouting','_rr','map','prototype','paused','online','loggedIn','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','ioredis'];(function(_0x3e186f,_0x2eb7be){var _0x3595bf=function(_0x5cb578){while(--_0x5cb578){_0x3e186f['push'](_0x3e186f['shift']());}};_0x3595bf(++_0x2eb7be);}(_0x4eeb,0x175));var _0xb4ee=function(_0x1031a9,_0x59def3){_0x1031a9=_0x1031a9-0x0;var _0x138eb8=_0x4eeb[_0x1031a9];return _0x138eb8;};'use strict';var _=require(_0xb4ee('0x0'));var md5=require(_0xb4ee('0x1'));var util=require(_0xb4ee('0x2'));var Redis=require(_0xb4ee('0x3'));var config=require('../../../config/environment');config[_0xb4ee('0x4')]=_[_0xb4ee('0x5')](config['redis'],{'host':_0xb4ee('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb4ee('0x4')]));function FaxQueue(_0x4231ee){this['id']=_0x4231ee['id']||0x0;this[_0xb4ee('0x7')]=_0x4231ee['name']||'';this[_0xb4ee('0x8')]=_0x4231ee[_0xb4ee('0x8')]||0xa;this[_0xb4ee('0x9')]=_0x4231ee[_0xb4ee('0x9')]||'beepall';this[_0xb4ee('0xa')]=_0x4231ee[_0xb4ee('0xa')];this[_0xb4ee('0xb')]={};this[_0xb4ee('0xc')]=0x0;this[_0xb4ee('0x1')]='';this['updateRouting']();this[_0xb4ee('0xd')]();}FaxQueue['prototype'][_0xb4ee('0xe')]=function(){var _0x46e14e=this[_0xb4ee('0xb')][_0xb4ee('0xf')];this[_0xb4ee('0xb')]=_[_0xb4ee('0x10')](this[_0xb4ee('0xa')],'id');this[_0xb4ee('0xb')][_0xb4ee('0xf')]=_0x46e14e;};FaxQueue[_0xb4ee('0x11')][_0xb4ee('0xd')]=function(){this['loggedIn']=0x0;this[_0xb4ee('0x12')]=0x0;for(var _0x5bc86e=0x0;_0x5bc86e<this[_0xb4ee('0xa')]['length'];_0x5bc86e+=0x1){if(this[_0xb4ee('0xa')][_0x5bc86e][_0xb4ee('0x13')]){this[_0xb4ee('0x14')]+=0x1;}if(this[_0xb4ee('0xa')][_0x5bc86e][_0xb4ee('0x15')]){this[_0xb4ee('0x12')]+=0x1;}}this['available']=this[_0xb4ee('0x14')]-this[_0xb4ee('0x12')];this[_0xb4ee('0x16')]=this[_0xb4ee('0x16')]>=0x0?this[_0xb4ee('0x16')]:0x0;var _0x2a6df8={'id':this['id'],'available':this['available'],'loggedIn':this[_0xb4ee('0x14')],'name':this[_0xb4ee('0x7')],'paused':this[_0xb4ee('0x12')],'waiting':this[_0xb4ee('0xc')]};var _0x48e8cd=md5(JSON[_0xb4ee('0x17')](_0x2a6df8));if(this[_0xb4ee('0x1')]!==_0x48e8cd){this[_0xb4ee('0x1')]=_0x48e8cd;io['to'](util[_0xb4ee('0x18')](_0xb4ee('0x19'),_0x2a6df8[_0xb4ee('0x7')]))[_0xb4ee('0x1a')](_0xb4ee('0x1b'),_0x2a6df8);}};module[_0xb4ee('0x1c')]=FaxQueue;
\ No newline at end of file
+var _0x105c=['beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','prototype','paused','length','online','loggedIn','faxPause','available','name','stringify','format','fax:queue:%s','fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','defaults','socket.io-emitter','redis','timeout','strategy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x105c,0x1c6));var _0xc105=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x105c[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xc105('0x0'));var md5=require(_0xc105('0x1'));var util=require(_0xc105('0x2'));var Redis=require(_0xc105('0x3'));var config=require(_0xc105('0x4'));config['redis']=_[_0xc105('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc105('0x6'))(new Redis(config[_0xc105('0x7')]));function FaxQueue(_0x4d997b){this['id']=_0x4d997b['id']||0x0;this['name']=_0x4d997b['name']||'';this[_0xc105('0x8')]=_0x4d997b[_0xc105('0x8')]||0xa;this[_0xc105('0x9')]=_0x4d997b['strategy']||_0xc105('0xa');this['Agents']=_0x4d997b[_0xc105('0xb')];this['mapAgentsId']={};this[_0xc105('0xc')]=0x0;this[_0xc105('0x1')]='';this[_0xc105('0xd')]();this[_0xc105('0xe')]();}FaxQueue['prototype'][_0xc105('0xd')]=function(){var _0x3cad5b=this[_0xc105('0xf')][_0xc105('0x10')];this[_0xc105('0xf')]=_['map'](this[_0xc105('0xb')],'id');this[_0xc105('0xf')][_0xc105('0x10')]=_0x3cad5b;};FaxQueue[_0xc105('0x11')][_0xc105('0xe')]=function(){this['loggedIn']=0x0;this[_0xc105('0x12')]=0x0;for(var _0x41a1ef=0x0;_0x41a1ef<this[_0xc105('0xb')][_0xc105('0x13')];_0x41a1ef+=0x1){if(this['Agents'][_0x41a1ef][_0xc105('0x14')]){this[_0xc105('0x15')]+=0x1;}if(this[_0xc105('0xb')][_0x41a1ef][_0xc105('0x16')]){this[_0xc105('0x12')]+=0x1;}}this[_0xc105('0x17')]=this[_0xc105('0x15')]-this[_0xc105('0x12')];this[_0xc105('0x17')]=this[_0xc105('0x17')]>=0x0?this[_0xc105('0x17')]:0x0;var _0x2336c4={'id':this['id'],'available':this[_0xc105('0x17')],'loggedIn':this[_0xc105('0x15')],'name':this[_0xc105('0x18')],'paused':this[_0xc105('0x12')],'waiting':this[_0xc105('0xc')]};var _0x1be752=md5(JSON[_0xc105('0x19')](_0x2336c4));if(this['md5']!==_0x1be752){this[_0xc105('0x1')]=_0x1be752;io['to'](util[_0xc105('0x1a')](_0xc105('0x1b'),_0x2336c4['name']))['emit'](_0xc105('0x1c'),_0x2336c4);}};module['exports']=FaxQueue;
\ No newline at end of file
index 63a2a8a..84dcede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['name','Intervals'];(function(_0x4d30e9,_0x24f896){var _0x1eaa17=function(_0x35ba7b){while(--_0x35ba7b){_0x4d30e9['push'](_0x4d30e9['shift']());}};_0x1eaa17(++_0x24f896);}(_0x0abf,0x88));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};'use strict';function Interval(_0x5e97ef){this['id']=_0x5e97ef['id']||0x0;this[_0xf0ab('0x0')]=_0x5e97ef[_0xf0ab('0x0')]||'';this[_0xf0ab('0x1')]=_0x5e97ef[_0xf0ab('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x8143=['exports','name','Intervals'];(function(_0x8767d2,_0x1279e4){var _0x421bec=function(_0x14febc){while(--_0x14febc){_0x8767d2['push'](_0x8767d2['shift']());}};_0x421bec(++_0x1279e4);}(_0x8143,0x1a5));var _0x3814=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8143[_0x19950b];return _0x3c6b41;};'use strict';function Interval(_0x5e923a){this['id']=_0x5e923a['id']||0x0;this[_0x3814('0x0')]=_0x5e923a['name']||'';this[_0x3814('0x1')]=_0x5e923a[_0x3814('0x1')]||{};}module[_0x3814('0x2')]=Interval;
\ No newline at end of file
index 14ebc86..58d2544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b4=['strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','loggedIn','paused','length','online','mailPause','available','stringify','mail:queue:%s','emit','lodash','md5','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout'];(function(_0x34875b,_0x72599f){var _0xdc44d6=function(_0x5320eb){while(--_0x5320eb){_0x34875b['push'](_0x34875b['shift']());}};_0xdc44d6(++_0x72599f);}(_0x87b4,0x98));var _0x487b=function(_0x3fa204,_0x331111){_0x3fa204=_0x3fa204-0x0;var _0x2678ca=_0x87b4[_0x3fa204];return _0x2678ca;};'use strict';var _=require(_0x487b('0x0'));var md5=require(_0x487b('0x1'));var util=require(_0x487b('0x2'));var Redis=require('ioredis');var config=require(_0x487b('0x3'));config['redis']=_[_0x487b('0x4')](config[_0x487b('0x5')],{'host':_0x487b('0x6'),'port':0x18eb});var io=require(_0x487b('0x7'))(new Redis(config[_0x487b('0x5')]));function MailQueue(_0x19ff31){this['id']=_0x19ff31['id']||0x0;this['name']=_0x19ff31[_0x487b('0x8')]||'';this[_0x487b('0x9')]=_0x19ff31[_0x487b('0x9')]||0xa;this[_0x487b('0xa')]=_0x19ff31[_0x487b('0xa')]||'beepall';this['Agents']=_0x19ff31[_0x487b('0xb')];this[_0x487b('0xc')]={};this[_0x487b('0xd')]=0x0;this[_0x487b('0x1')]='';this[_0x487b('0xe')]();this[_0x487b('0xf')]();}MailQueue[_0x487b('0x10')]['updateRouting']=function(){var _0x35bc66=this[_0x487b('0xc')]['_rr'];this['mapAgentsId']=_[_0x487b('0x11')](this['Agents'],'id');this[_0x487b('0xc')]['_rr']=_0x35bc66;};MailQueue[_0x487b('0x10')][_0x487b('0xf')]=function(){this[_0x487b('0x12')]=0x0;this[_0x487b('0x13')]=0x0;for(var _0x595d25=0x0;_0x595d25<this[_0x487b('0xb')][_0x487b('0x14')];_0x595d25+=0x1){if(this[_0x487b('0xb')][_0x595d25][_0x487b('0x15')]){this[_0x487b('0x12')]+=0x1;}if(this[_0x487b('0xb')][_0x595d25][_0x487b('0x16')]){this['paused']+=0x1;}}this[_0x487b('0x17')]=this['loggedIn']-this[_0x487b('0x13')];this[_0x487b('0x17')]=this['available']>=0x0?this[_0x487b('0x17')]:0x0;var _0x4a29c8={'id':this['id'],'available':this[_0x487b('0x17')],'loggedIn':this[_0x487b('0x12')],'name':this[_0x487b('0x8')],'paused':this[_0x487b('0x13')],'waiting':this['waiting']};var _0x10cdd0=md5(JSON[_0x487b('0x18')](_0x4a29c8));if(this['md5']!==_0x10cdd0){this[_0x487b('0x1')]=_0x10cdd0;io['to'](util['format'](_0x487b('0x19'),_0x4a29c8[_0x487b('0x8')]))[_0x487b('0x1a')]('mail_queue:save',_0x4a29c8);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0xf93b=['mapAgentsId','map','Agents','paused','length','loggedIn','mailPause','available','stringify','mail:queue:%s','name','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','timeout','strategy','beepall','waiting','updateRouting','updateRealtime','prototype','_rr'];(function(_0x13cd29,_0x417cf7){var _0x111d55=function(_0x5245aa){while(--_0x5245aa){_0x13cd29['push'](_0x13cd29['shift']());}};_0x111d55(++_0x417cf7);}(_0xf93b,0x65));var _0xbf93=function(_0x3a9635,_0x1ab817){_0x3a9635=_0x3a9635-0x0;var _0x10d08c=_0xf93b[_0x3a9635];return _0x10d08c;};'use strict';var _=require('lodash');var md5=require(_0xbf93('0x0'));var util=require(_0xbf93('0x1'));var Redis=require(_0xbf93('0x2'));var config=require(_0xbf93('0x3'));config[_0xbf93('0x4')]=_['defaults'](config[_0xbf93('0x4')],{'host':_0xbf93('0x5'),'port':0x18eb});var io=require(_0xbf93('0x6'))(new Redis(config[_0xbf93('0x4')]));function MailQueue(_0x36298c){this['id']=_0x36298c['id']||0x0;this['name']=_0x36298c['name']||'';this[_0xbf93('0x7')]=_0x36298c[_0xbf93('0x7')]||0xa;this[_0xbf93('0x8')]=_0x36298c[_0xbf93('0x8')]||_0xbf93('0x9');this['Agents']=_0x36298c['Agents'];this['mapAgentsId']={};this[_0xbf93('0xa')]=0x0;this['md5']='';this[_0xbf93('0xb')]();this[_0xbf93('0xc')]();}MailQueue[_0xbf93('0xd')]['updateRouting']=function(){var _0x9c054c=this['mapAgentsId'][_0xbf93('0xe')];this[_0xbf93('0xf')]=_[_0xbf93('0x10')](this[_0xbf93('0x11')],'id');this['mapAgentsId'][_0xbf93('0xe')]=_0x9c054c;};MailQueue[_0xbf93('0xd')][_0xbf93('0xc')]=function(){this['loggedIn']=0x0;this[_0xbf93('0x12')]=0x0;for(var _0x5bca29=0x0;_0x5bca29<this[_0xbf93('0x11')][_0xbf93('0x13')];_0x5bca29+=0x1){if(this[_0xbf93('0x11')][_0x5bca29]['online']){this[_0xbf93('0x14')]+=0x1;}if(this[_0xbf93('0x11')][_0x5bca29][_0xbf93('0x15')]){this[_0xbf93('0x12')]+=0x1;}}this[_0xbf93('0x16')]=this[_0xbf93('0x14')]-this['paused'];this[_0xbf93('0x16')]=this[_0xbf93('0x16')]>=0x0?this[_0xbf93('0x16')]:0x0;var _0x3412a6={'id':this['id'],'available':this[_0xbf93('0x16')],'loggedIn':this[_0xbf93('0x14')],'name':this['name'],'paused':this[_0xbf93('0x12')],'waiting':this[_0xbf93('0xa')]};var _0x25a1f1=md5(JSON[_0xbf93('0x17')](_0x3412a6));if(this[_0xbf93('0x0')]!==_0x25a1f1){this[_0xbf93('0x0')]=_0x25a1f1;io['to'](util['format'](_0xbf93('0x18'),_0x3412a6[_0xbf93('0x19')]))[_0xbf93('0x1a')](_0xbf93('0x1b'),_0x3412a6);}};module[_0xbf93('0x1c')]=MailQueue;
\ No newline at end of file
index a86b961..59627d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x326f,0xd1));var _0xf326=function(_0x4fb117,_0x23881f){_0x4fb117=_0x4fb117-0x0;var _0x17af45=_0x326f[_0x4fb117];return _0x17af45;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x40dd56,_0x726ca5){var _0x4f850f=function(_0x5f899e){while(--_0x5f899e){_0x40dd56['push'](_0x40dd56['shift']());}};_0x4f850f(++_0x726ca5);}(_0x1261,0x144));var _0x1126=function(_0x4cfb78,_0x4c1da6){_0x4cfb78=_0x4cfb78-0x0;var _0xc1250e=_0x1261[_0x4cfb78];return _0xc1250e;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index bdbdd6d..490f45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd58c=['waiting','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','online','available','format','sms:queue:%s','sms_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents','mapAgentsId'];(function(_0x3aeb50,_0x5b7174){var _0x38518d=function(_0x448f3c){while(--_0x448f3c){_0x3aeb50['push'](_0x3aeb50['shift']());}};_0x38518d(++_0x5b7174);}(_0xd58c,0xb6));var _0xcd58=function(_0x816de3,_0x38d085){_0x816de3=_0x816de3-0x0;var _0x1e539e=_0xd58c[_0x816de3];return _0x1e539e;};'use strict';var _=require(_0xcd58('0x0'));var md5=require(_0xcd58('0x1'));var util=require(_0xcd58('0x2'));var Redis=require('ioredis');var config=require(_0xcd58('0x3'));config['redis']=_[_0xcd58('0x4')](config['redis'],{'host':_0xcd58('0x5'),'port':0x18eb});var io=require(_0xcd58('0x6'))(new Redis(config[_0xcd58('0x7')]));function SmsQueue(_0x159971){this['id']=_0x159971['id']||0x0;this[_0xcd58('0x8')]=_0x159971['name']||'';this['timeout']=_0x159971[_0xcd58('0x9')]||0xa;this[_0xcd58('0xa')]=_0x159971[_0xcd58('0xa')]||_0xcd58('0xb');this[_0xcd58('0xc')]=_0x159971['Agents'];this[_0xcd58('0xd')]={};this[_0xcd58('0xe')]=0x0;this['md5']='';this[_0xcd58('0xf')]();this['updateRealtime']();}SmsQueue[_0xcd58('0x10')][_0xcd58('0xf')]=function(){var _0x440cf1=this['mapAgentsId'][_0xcd58('0x11')];this['mapAgentsId']=_[_0xcd58('0x12')](this['Agents'],'id');this[_0xcd58('0xd')][_0xcd58('0x11')]=_0x440cf1;};SmsQueue[_0xcd58('0x10')][_0xcd58('0x13')]=function(){this[_0xcd58('0x14')]=0x0;this[_0xcd58('0x15')]=0x0;for(var _0xda9091=0x0;_0xda9091<this[_0xcd58('0xc')]['length'];_0xda9091+=0x1){if(this['Agents'][_0xda9091][_0xcd58('0x16')]){this[_0xcd58('0x14')]+=0x1;}if(this[_0xcd58('0xc')][_0xda9091]['smsPause']){this['paused']+=0x1;}}this[_0xcd58('0x17')]=this[_0xcd58('0x14')]-this[_0xcd58('0x15')];this['available']=this['available']>=0x0?this[_0xcd58('0x17')]:0x0;var _0x53ad6a={'id':this['id'],'available':this[_0xcd58('0x17')],'loggedIn':this[_0xcd58('0x14')],'name':this[_0xcd58('0x8')],'paused':this[_0xcd58('0x15')],'waiting':this['waiting']};var _0x2ec37e=md5(JSON['stringify'](_0x53ad6a));if(this['md5']!==_0x2ec37e){this['md5']=_0x2ec37e;io['to'](util[_0xcd58('0x18')](_0xcd58('0x19'),_0x53ad6a[_0xcd58('0x8')]))['emit'](_0xcd58('0x1a'),_0x53ad6a);}};module[_0xcd58('0x1b')]=SmsQueue;
\ No newline at end of file
+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(_0x4a0f35,_0x7d064){var _0x1253ed=function(_0x1c8d40){while(--_0x1c8d40){_0x4a0f35['push'](_0x4a0f35['shift']());}};_0x1253ed(++_0x7d064);}(_0x55e0,0xdc));var _0x055e=function(_0x1f3ee8,_0x38ee26){_0x1f3ee8=_0x1f3ee8-0x0;var _0x11ff83=_0x55e0[_0x1f3ee8];return _0x11ff83;};'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
index a847bd0..0683d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ebf=['strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','prototype','loggedIn','length','online','whatsappPause','paused','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout'];(function(_0x176259,_0x30e46f){var _0x48dc40=function(_0x3aa524){while(--_0x3aa524){_0x176259['push'](_0x176259['shift']());}};_0x48dc40(++_0x30e46f);}(_0x7ebf,0x90));var _0xf7eb=function(_0x252a30,_0x14fcb7){_0x252a30=_0x252a30-0x0;var _0x1e4b58=_0x7ebf[_0x252a30];return _0x1e4b58;};'use strict';var _=require(_0xf7eb('0x0'));var md5=require(_0xf7eb('0x1'));var util=require(_0xf7eb('0x2'));var Redis=require(_0xf7eb('0x3'));var config=require(_0xf7eb('0x4'));config['redis']=_[_0xf7eb('0x5')](config[_0xf7eb('0x6')],{'host':_0xf7eb('0x7'),'port':0x18eb});var io=require(_0xf7eb('0x8'))(new Redis(config[_0xf7eb('0x6')]));function WhatsappQueue(_0x5118b7){this['id']=_0x5118b7['id']||0x0;this[_0xf7eb('0x9')]=_0x5118b7['name']||'';this[_0xf7eb('0xa')]=_0x5118b7['timeout']||0xa;this[_0xf7eb('0xb')]=_0x5118b7[_0xf7eb('0xb')]||_0xf7eb('0xc');this[_0xf7eb('0xd')]=_0x5118b7[_0xf7eb('0xd')];this[_0xf7eb('0xe')]={};this[_0xf7eb('0xf')]=0x0;this[_0xf7eb('0x1')]='';this['updateRouting']();this['updateRealtime']();}WhatsappQueue['prototype'][_0xf7eb('0x10')]=function(){var _0x58b759=this[_0xf7eb('0xe')][_0xf7eb('0x11')];this['mapAgentsId']=_['map'](this[_0xf7eb('0xd')],'id');this[_0xf7eb('0xe')][_0xf7eb('0x11')]=_0x58b759;};WhatsappQueue[_0xf7eb('0x12')]['updateRealtime']=function(){this[_0xf7eb('0x13')]=0x0;this['paused']=0x0;for(var _0x4d8269=0x0;_0x4d8269<this[_0xf7eb('0xd')][_0xf7eb('0x14')];_0x4d8269+=0x1){if(this[_0xf7eb('0xd')][_0x4d8269][_0xf7eb('0x15')]){this[_0xf7eb('0x13')]+=0x1;}if(this['Agents'][_0x4d8269][_0xf7eb('0x16')]){this[_0xf7eb('0x17')]+=0x1;}}this[_0xf7eb('0x18')]=this[_0xf7eb('0x13')]-this['paused'];this['available']=this[_0xf7eb('0x18')]>=0x0?this[_0xf7eb('0x18')]:0x0;var _0x2b4abe={'id':this['id'],'available':this[_0xf7eb('0x18')],'loggedIn':this[_0xf7eb('0x13')],'name':this[_0xf7eb('0x9')],'paused':this[_0xf7eb('0x17')],'waiting':this[_0xf7eb('0xf')]};var _0x35ebb0=md5(JSON[_0xf7eb('0x19')](_0x2b4abe));if(this[_0xf7eb('0x1')]!==_0x35ebb0){this['md5']=_0x35ebb0;io['to'](util[_0xf7eb('0x1a')](_0xf7eb('0x1b'),_0x2b4abe[_0xf7eb('0x9')]))[_0xf7eb('0x1c')](_0xf7eb('0x1d'),_0x2b4abe);}};module[_0xf7eb('0x1e')]=WhatsappQueue;
\ No newline at end of file
+var _0x5428=['updateRouting','prototype','_rr','updateRealtime','paused','online','whatsappPause','available','loggedIn','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x5428,0xb5));var _0x8542=function(_0x27fd61,_0x561baf){_0x27fd61=_0x27fd61-0x0;var _0x39d922=_0x5428[_0x27fd61];return _0x39d922;};'use strict';var _=require(_0x8542('0x0'));var md5=require(_0x8542('0x1'));var util=require(_0x8542('0x2'));var Redis=require('ioredis');var config=require(_0x8542('0x3'));config[_0x8542('0x4')]=_[_0x8542('0x5')](config[_0x8542('0x4')],{'host':_0x8542('0x6'),'port':0x18eb});var io=require(_0x8542('0x7'))(new Redis(config[_0x8542('0x4')]));function WhatsappQueue(_0x37800c){this['id']=_0x37800c['id']||0x0;this[_0x8542('0x8')]=_0x37800c[_0x8542('0x8')]||'';this[_0x8542('0x9')]=_0x37800c[_0x8542('0x9')]||0xa;this['strategy']=_0x37800c[_0x8542('0xa')]||_0x8542('0xb');this[_0x8542('0xc')]=_0x37800c[_0x8542('0xc')];this[_0x8542('0xd')]={};this[_0x8542('0xe')]=0x0;this['md5']='';this[_0x8542('0xf')]();this['updateRealtime']();}WhatsappQueue[_0x8542('0x10')][_0x8542('0xf')]=function(){var _0x4f3b46=this[_0x8542('0xd')][_0x8542('0x11')];this[_0x8542('0xd')]=_['map'](this[_0x8542('0xc')],'id');this[_0x8542('0xd')][_0x8542('0x11')]=_0x4f3b46;};WhatsappQueue[_0x8542('0x10')][_0x8542('0x12')]=function(){this['loggedIn']=0x0;this[_0x8542('0x13')]=0x0;for(var _0x3193e9=0x0;_0x3193e9<this[_0x8542('0xc')]['length'];_0x3193e9+=0x1){if(this[_0x8542('0xc')][_0x3193e9][_0x8542('0x14')]){this['loggedIn']+=0x1;}if(this[_0x8542('0xc')][_0x3193e9][_0x8542('0x15')]){this[_0x8542('0x13')]+=0x1;}}this[_0x8542('0x16')]=this[_0x8542('0x17')]-this['paused'];this['available']=this['available']>=0x0?this[_0x8542('0x16')]:0x0;var _0x12c4d7={'id':this['id'],'available':this[_0x8542('0x16')],'loggedIn':this[_0x8542('0x17')],'name':this[_0x8542('0x8')],'paused':this[_0x8542('0x13')],'waiting':this[_0x8542('0xe')]};var _0x43bab0=md5(JSON['stringify'](_0x12c4d7));if(this['md5']!==_0x43bab0){this[_0x8542('0x1')]=_0x43bab0;io['to'](util[_0x8542('0x18')](_0x8542('0x19'),_0x12c4d7[_0x8542('0x8')]))['emit'](_0x8542('0x1a'),_0x12c4d7);}};module[_0x8542('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 2344e75..2dce961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x59b035,_0x2e99d9){var _0x4e02fa=function(_0x45f864){while(--_0x45f864){_0x59b035['push'](_0x59b035['shift']());}};_0x4e02fa(++_0x2e99d9);}(_0xb10b,0x12a));var _0xbb10=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0xb10b[_0x5519a9];return _0x32f2cc;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x5ae9d9,_0xf8babb){var _0x19b383=function(_0x49d171){while(--_0x49d171){_0x5ae9d9['push'](_0x5ae9d9['shift']());}};_0x19b383(++_0xf8babb);}(_0xb10b,0x12a));var _0xbb10=function(_0x2d8fdb,_0x30e70c){_0x2d8fdb=_0x2d8fdb-0x0;var _0x3bc1c2=_0xb10b[_0x2d8fdb];return _0x3bc1c2;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 1be28af..f8c6d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3208=['addTagsToChatInteraction','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x3b5ed6,_0xb7fefe){var _0x3b0cce=function(_0x36ee99){while(--_0x36ee99){_0x3b5ed6['push'](_0x3b5ed6['shift']());}};_0x3b0cce(++_0xb7fefe);}(_0x3208,0x1d6));var _0x8320=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x3208[_0x3ab51d];return _0x29a04e;};'use strict';var client=require('../client');exports[_0x8320('0x0')]=function(_0x2f5d4a,_0x242e39){return client[_0x8320('0x1')](_0x8320('0x2'),{'body':_0x242e39,'options':{'where':{'id':_0x2f5d4a}},'log':_0x8320('0x3')});};exports[_0x8320('0x4')]=function(_0x29b123,_0x500e26){return client[_0x8320('0x1')](_0x8320('0x5'),{'body':_0x500e26,'options':{'where':{'id':_0x29b123}},'log':_0x8320('0x6')});};
\ No newline at end of file
+var _0x072a=['UpdateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x236c2e,_0x4f590f){var _0x2b0588=function(_0x2d6c6e){while(--_0x2d6c6e){_0x236c2e['push'](_0x236c2e['shift']());}};_0x2b0588(++_0x4f590f);}(_0x072a,0x1bd));var _0xa072=function(_0x4fdf1d,_0x579c97){_0x4fdf1d=_0x4fdf1d-0x0;var _0x310eb7=_0x072a[_0x4fdf1d];return _0x310eb7;};'use strict';var client=require(_0xa072('0x0'));exports[_0xa072('0x1')]=function(_0x3885e4,_0x3490c1){return client[_0xa072('0x2')](_0xa072('0x3'),{'body':_0x3490c1,'options':{'where':{'id':_0x3885e4}},'log':'updateChatInteraction'});};exports[_0xa072('0x4')]=function(_0x32bbff,_0x3a35ea){return client['Request'](_0xa072('0x5'),{'body':_0x3a35ea,'options':{'where':{'id':_0x32bbff}},'log':_0xa072('0x6')});};
\ No newline at end of file
index 330e873..7bc67b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2570=['create','Request','CreateChatMessage','createChatMessage'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2570,0x1b4));var _0x0257=function(_0x1b8d87,_0x4168fb){_0x1b8d87=_0x1b8d87-0x0;var _0x182b74=_0x2570[_0x1b8d87];return _0x182b74;};'use strict';var client=require('../client');exports[_0x0257('0x0')]=function(_0x487cbb){return client[_0x0257('0x1')](_0x0257('0x2'),{'body':_0x487cbb,'log':_0x0257('0x3')});};
\ No newline at end of file
+var _0x3342=['create','CreateChatMessage','createChatMessage'];(function(_0x4490f4,_0x150e06){var _0x3e2a76=function(_0x19c0c5){while(--_0x19c0c5){_0x4490f4['push'](_0x4490f4['shift']());}};_0x3e2a76(++_0x150e06);}(_0x3342,0x105));var _0x2334=function(_0x31e2b1,_0x3e6a08){_0x31e2b1=_0x31e2b1-0x0;var _0x10c4fc=_0x3342[_0x31e2b1];return _0x10c4fc;};'use strict';var client=require('../client');exports[_0x2334('0x0')]=function(_0x1dec04){return client['Request'](_0x2334('0x1'),{'body':_0x1dec04,'log':_0x2334('0x2')});};
\ No newline at end of file
index 71ee3f4..97eb9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa276=['getChatQueues','Request','name','timeout','User','Agents','chatPause'];(function(_0x52ce93,_0x2fb43d){var _0x18c7d8=function(_0x2cbafa){while(--_0x2cbafa){_0x52ce93['push'](_0x52ce93['shift']());}};_0x18c7d8(++_0x2fb43d);}(_0xa276,0x9a));var _0x6a27=function(_0x1a2fd6,_0x8e57a6){_0x1a2fd6=_0x1a2fd6-0x0;var _0x345340=_0xa276[_0x1a2fd6];return _0x345340;};'use strict';var client=require('../client');exports[_0x6a27('0x0')]=function(){return function(){return client[_0x6a27('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x6a27('0x2'),_0x6a27('0x3'),'strategy'],'include':[{'model':_0x6a27('0x4'),'as':_0x6a27('0x5'),'attributes':['id',_0x6a27('0x2'),'online',_0x6a27('0x6')]}]},'log':_0x6a27('0x0')});};};
\ No newline at end of file
+var _0xa992=['../client','getChatQueues','Request','GetChatQueue','timeout','strategy','User','Agents','name','online','chatPause'];(function(_0x235a26,_0x19b391){var _0x2de83c=function(_0x155c8a){while(--_0x155c8a){_0x235a26['push'](_0x235a26['shift']());}};_0x2de83c(++_0x19b391);}(_0xa992,0x18c));var _0x2a99=function(_0x379c19,_0x38b6f5){_0x379c19=_0x379c19-0x0;var _0x50f850=_0xa992[_0x379c19];return _0x50f850;};'use strict';var client=require(_0x2a99('0x0'));exports[_0x2a99('0x1')]=function(){return function(){return client[_0x2a99('0x2')](_0x2a99('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x2a99('0x4'),_0x2a99('0x5')],'include':[{'model':_0x2a99('0x6'),'as':_0x2a99('0x7'),'attributes':['id',_0x2a99('0x8'),_0x2a99('0x9'),_0x2a99('0xa')]}]},'log':_0x2a99('0x1')});};};
\ No newline at end of file
index bc3cb76..a576678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063c=['UpdateChatQueueReport','create','Request','CreateChatQueueReport','update'];(function(_0x253c58,_0x54e7f5){var _0x43c12f=function(_0x256a22){while(--_0x256a22){_0x253c58['push'](_0x253c58['shift']());}};_0x43c12f(++_0x54e7f5);}(_0x063c,0xba));var _0xc063=function(_0x1aa214,_0x4bb380){_0x1aa214=_0x1aa214-0x0;var _0x559658=_0x063c[_0x1aa214];return _0x559658;};'use strict';var client=require('../client');exports[_0xc063('0x0')]=function(_0x3e8b5f){return client[_0xc063('0x1')](_0xc063('0x2'),{'body':_0x3e8b5f,'log':_0xc063('0x2')});};exports[_0xc063('0x3')]=function(_0x5aa766,_0x3803ac){return client['Request']('UpdateChatQueueReport',{'body':_0x3803ac,'options':{'where':{'uniqueid':_0x5aa766},'order':[['id','DESC']],'limit':0x1},'log':_0xc063('0x4')});};
\ No newline at end of file
+var _0x21a3=['../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC'];(function(_0x5711f0,_0x699293){var _0x5ee738=function(_0x5f1c1f){while(--_0x5f1c1f){_0x5711f0['push'](_0x5711f0['shift']());}};_0x5ee738(++_0x699293);}(_0x21a3,0x66));var _0x321a=function(_0x2a99ea,_0x1bfb13){_0x2a99ea=_0x2a99ea-0x0;var _0x5887ae=_0x21a3[_0x2a99ea];return _0x5887ae;};'use strict';var client=require(_0x321a('0x0'));exports['create']=function(_0x2b85b5){return client[_0x321a('0x1')](_0x321a('0x2'),{'body':_0x2b85b5,'log':_0x321a('0x2')});};exports[_0x321a('0x3')]=function(_0x185e2a,_0x5df495){return client['Request'](_0x321a('0x4'),{'body':_0x5df495,'options':{'where':{'uniqueid':_0x185e2a},'order':[['id',_0x321a('0x5')]],'limit':0x1},'log':_0x321a('0x4')});};
\ No newline at end of file
index ada07b0..9559e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x2e3dfc,_0x454d6c){var _0x4b1245=function(_0x5e9faa){while(--_0x5e9faa){_0x2e3dfc['push'](_0x2e3dfc['shift']());}};_0x4b1245(++_0x454d6c);}(_0x7a54,0x106));var _0x47a5=function(_0x1d8313,_0x27b7b0){_0x1d8313=_0x1d8313-0x0;var _0x2e87bb=_0x7a54[_0x1d8313];return _0x2e87bb;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4c06a3,_0x1e6b6f){var _0x7ff53c=function(_0x559eff){while(--_0x559eff){_0x4c06a3['push'](_0x4c06a3['shift']());}};_0x7ff53c(++_0x1e6b6f);}(_0x7a54,0x106));var _0x47a5=function(_0x16f131,_0xf2a607){_0x16f131=_0x16f131-0x0;var _0x25bc76=_0x7a54[_0x16f131];return _0x25bc76;};'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 7b81998..21ab4c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a4=['CreateFaxMessage','../client'];(function(_0xb99421,_0xaab133){var _0x4b3ec7=function(_0x591d1a){while(--_0x591d1a){_0xb99421['push'](_0xb99421['shift']());}};_0x4b3ec7(++_0xaab133);}(_0x61a4,0x6d));var _0x461a=function(_0x6c210e,_0x25aad3){_0x6c210e=_0x6c210e-0x0;var _0x77275e=_0x61a4[_0x6c210e];return _0x77275e;};'use strict';var client=require(_0x461a('0x0'));exports['create']=function(_0x13724a){return client['Request'](_0x461a('0x1'),{'body':_0x13724a,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x320a=['../client','create','Request','createFaxMessage'];(function(_0x49a91c,_0x35fda1){var _0x57b35d=function(_0x41ac8c){while(--_0x41ac8c){_0x49a91c['push'](_0x49a91c['shift']());}};_0x57b35d(++_0x35fda1);}(_0x320a,0xd0));var _0xa320=function(_0x56be74,_0x107139){_0x56be74=_0x56be74-0x0;var _0xd60624=_0x320a[_0x56be74];return _0xd60624;};'use strict';var client=require(_0xa320('0x0'));exports[_0xa320('0x1')]=function(_0x1b3670){return client[_0xa320('0x2')]('CreateFaxMessage',{'body':_0x1b3670,'log':_0xa320('0x3')});};
\ No newline at end of file
index 7f38f6e..fe32c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a5=['User','Agents','name','../client','Request','GetFaxQueue','timeout','strategy'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x20a5,0x1f3));var _0x520a=function(_0x5d42e9,_0xcda1d8){_0x5d42e9=_0x5d42e9-0x0;var _0x1604c8=_0x20a5[_0x5d42e9];return _0x1604c8;};'use strict';var client=require(_0x520a('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x520a('0x1')](_0x520a('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x520a('0x3'),_0x520a('0x4')],'include':[{'model':_0x520a('0x5'),'as':_0x520a('0x6'),'attributes':['id',_0x520a('0x7'),'online','faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0xaa0b=['Agents','online','faxPause','getFaxQueues','../client','Request','GetFaxQueue','name','strategy','User'];(function(_0x333037,_0x4a1c9c){var _0x3eefe3=function(_0x3b1b37){while(--_0x3b1b37){_0x333037['push'](_0x333037['shift']());}};_0x3eefe3(++_0x4a1c9c);}(_0xaa0b,0x176));var _0xbaa0=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xaa0b[_0x45d3f0];return _0x314b79;};'use strict';var client=require(_0xbaa0('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0xbaa0('0x1')](_0xbaa0('0x2'),{'options':{'raw':![],'attributes':['id',_0xbaa0('0x3'),'timeout',_0xbaa0('0x4')],'include':[{'model':_0xbaa0('0x5'),'as':_0xbaa0('0x6'),'attributes':['id','name',_0xbaa0('0x7'),_0xbaa0('0x8')]}]},'log':_0xbaa0('0x9')});};};
\ No newline at end of file
index feabcc4..478ad93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f4a=['../client','create','Request','CreateFaxQueueReport','UpdateFaxQueueReport','DESC'];(function(_0x541a67,_0x50728d){var _0x45da2a=function(_0x158929){while(--_0x158929){_0x541a67['push'](_0x541a67['shift']());}};_0x45da2a(++_0x50728d);}(_0x3f4a,0xb4));var _0xa3f4=function(_0x2c532b,_0x92ba25){_0x2c532b=_0x2c532b-0x0;var _0x26c8f7=_0x3f4a[_0x2c532b];return _0x26c8f7;};'use strict';var client=require(_0xa3f4('0x0'));exports[_0xa3f4('0x1')]=function(_0xcec789){return client[_0xa3f4('0x2')]('CreateFaxQueueReport',{'body':_0xcec789,'log':_0xa3f4('0x3')});};exports['update']=function(_0x54381a,_0x71b5cc){return client['Request'](_0xa3f4('0x4'),{'body':_0x71b5cc,'options':{'where':{'uniqueid':_0x54381a},'order':[['id',_0xa3f4('0x5')]],'limit':0x1},'log':_0xa3f4('0x4')});};
\ No newline at end of file
+var _0xe799=['update','Request','UpdateFaxQueueReport','DESC','CreateFaxQueueReport'];(function(_0xe11ab8,_0x13b6ca){var _0x5a1395=function(_0x36168c){while(--_0x36168c){_0xe11ab8['push'](_0xe11ab8['shift']());}};_0x5a1395(++_0x13b6ca);}(_0xe799,0x10d));var _0x9e79=function(_0x1853d5,_0x9ac8e0){_0x1853d5=_0x1853d5-0x0;var _0x11b31d=_0xe799[_0x1853d5];return _0x11b31d;};'use strict';var client=require('../client');exports['create']=function(_0x29adf5){return client['Request'](_0x9e79('0x0'),{'body':_0x29adf5,'log':_0x9e79('0x0')});};exports[_0x9e79('0x1')]=function(_0x50df12,_0x3fa719){return client[_0x9e79('0x2')](_0x9e79('0x3'),{'body':_0x3fa719,'options':{'where':{'uniqueid':_0x50df12},'order':[['id',_0x9e79('0x4')]],'limit':0x1},'log':_0x9e79('0x3')});};
\ No newline at end of file
index 6e06e67..b2c099d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9b8=['GetInterval','name','Intervals','interval','../client','getIntervals','Request'];(function(_0xefa0af,_0xe132e3){var _0x45aaf6=function(_0x17687c){while(--_0x17687c){_0xefa0af['push'](_0xefa0af['shift']());}};_0x45aaf6(++_0xe132e3);}(_0xb9b8,0x15b));var _0x8b9b=function(_0x172133,_0x10246b){_0x172133=_0x172133-0x0;var _0x2460e5=_0xb9b8[_0x172133];return _0x2460e5;};'use strict';var client=require(_0x8b9b('0x0'));exports[_0x8b9b('0x1')]=function(){return function(){return client[_0x8b9b('0x2')](_0x8b9b('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x8b9b('0x4')],'include':[{'model':'Interval','as':_0x8b9b('0x5'),'attributes':['id',_0x8b9b('0x4'),_0x8b9b('0x6')]}]},'log':_0x8b9b('0x1')});};};
\ No newline at end of file
+var _0xeb17=['getIntervals','../client','Request','GetInterval','Intervals','name','interval'];(function(_0x1d3a3b,_0x49e405){var _0x59b26f=function(_0x386d32){while(--_0x386d32){_0x1d3a3b['push'](_0x1d3a3b['shift']());}};_0x59b26f(++_0x49e405);}(_0xeb17,0x19e));var _0x7eb1=function(_0x2318d7,_0x4e3bdc){_0x2318d7=_0x2318d7-0x0;var _0x352f2d=_0xeb17[_0x2318d7];return _0x352f2d;};'use strict';var client=require(_0x7eb1('0x0'));exports['getIntervals']=function(){return function(){return client[_0x7eb1('0x1')](_0x7eb1('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':'Interval','as':_0x7eb1('0x3'),'attributes':['id',_0x7eb1('0x4'),_0x7eb1('0x5')]}]},'log':_0x7eb1('0x6')});};};
\ No newline at end of file
index c095c07..3477bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe820=['../client','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x2ab0a7,_0x270daa){var _0x7651fc=function(_0x585820){while(--_0x585820){_0x2ab0a7['push'](_0x2ab0a7['shift']());}};_0x7651fc(++_0x270daa);}(_0xe820,0xd2));var _0x0e82=function(_0x101ad5,_0x12f9bf){_0x101ad5=_0x101ad5-0x0;var _0xfaa4a5=_0xe820[_0x101ad5];return _0xfaa4a5;};'use strict';var client=require(_0x0e82('0x0'));exports['update']=function(_0x908a54,_0x4e6b50){return client['Request'](_0x0e82('0x1'),{'body':_0x4e6b50,'options':{'where':{'id':_0x908a54}},'log':_0x0e82('0x2')});};exports[_0x0e82('0x3')]=function(_0x59b28d,_0xc6d61e){return client['Request'](_0x0e82('0x4'),{'body':_0xc6d61e,'options':{'where':{'id':_0x59b28d}},'log':_0x0e82('0x5')});};
\ No newline at end of file
+var _0x1eba=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x4d7f3f,_0x4d2803){_0x4d7f3f=_0x4d7f3f-0x0;var _0x5d67cc=_0x1eba[_0x4d7f3f];return _0x5d67cc;};'use strict';var client=require(_0xa1eb('0x0'));exports[_0xa1eb('0x1')]=function(_0x406a58,_0x2158d5){return client[_0xa1eb('0x2')]('UpdateMailInteraction',{'body':_0x2158d5,'options':{'where':{'id':_0x406a58}},'log':'updateMailInteraction'});};exports[_0xa1eb('0x3')]=function(_0x34be5a,_0x16a13a){return client[_0xa1eb('0x2')](_0xa1eb('0x4'),{'body':_0x16a13a,'options':{'where':{'id':_0x34be5a}},'log':_0xa1eb('0x5')});};
\ No newline at end of file
index 4545bca..69d2f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62e7=['../client','CreateMailMessage','createMailMessage'];(function(_0xbd9928,_0x17eea0){var _0x4a2fca=function(_0x34191b){while(--_0x34191b){_0xbd9928['push'](_0xbd9928['shift']());}};_0x4a2fca(++_0x17eea0);}(_0x62e7,0x66));var _0x762e=function(_0x400833,_0x5749af){_0x400833=_0x400833-0x0;var _0x2fbaf4=_0x62e7[_0x400833];return _0x2fbaf4;};'use strict';var client=require(_0x762e('0x0'));exports['create']=function(_0x7dd5e2){return client['Request'](_0x762e('0x1'),{'body':_0x7dd5e2,'log':_0x762e('0x2')});};
\ No newline at end of file
+var _0x300d=['CreateMailMessage','createMailMessage','create'];(function(_0x1e6e4e,_0x2b1b09){var _0x3d746b=function(_0x4483dd){while(--_0x4483dd){_0x1e6e4e['push'](_0x1e6e4e['shift']());}};_0x3d746b(++_0x2b1b09);}(_0x300d,0xd4));var _0xd300=function(_0x2ea28f,_0x49b998){_0x2ea28f=_0x2ea28f-0x0;var _0x57cbc5=_0x300d[_0x2ea28f];return _0x57cbc5;};'use strict';var client=require('../client');exports[_0xd300('0x0')]=function(_0x580dd3){return client['Request'](_0xd300('0x1'),{'body':_0x580dd3,'log':_0xd300('0x2')});};
\ No newline at end of file
index e454921..d6a9f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9901=['GetMailQueue','name','timeout','strategy','Agents','mailPause','getMailQueues'];(function(_0xf16b1,_0x33c637){var _0x26f94d=function(_0x5643d7){while(--_0x5643d7){_0xf16b1['push'](_0xf16b1['shift']());}};_0x26f94d(++_0x33c637);}(_0x9901,0x1bf));var _0x1990=function(_0x469218,_0x440d05){_0x469218=_0x469218-0x0;var _0x187b4a=_0x9901[_0x469218];return _0x187b4a;};'use strict';var client=require('../client');exports[_0x1990('0x0')]=function(){return function(){return client['Request'](_0x1990('0x1'),{'options':{'raw':![],'attributes':['id',_0x1990('0x2'),_0x1990('0x3'),_0x1990('0x4')],'include':[{'model':'User','as':_0x1990('0x5'),'attributes':['id','name','online',_0x1990('0x6')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0x9244=['GetMailQueue','timeout','strategy','name','online','mailPause','../client','getMailQueues'];(function(_0x5a4ab5,_0x319454){var _0x10c740=function(_0x281e53){while(--_0x281e53){_0x5a4ab5['push'](_0x5a4ab5['shift']());}};_0x10c740(++_0x319454);}(_0x9244,0x1d6));var _0x4924=function(_0x59ec62,_0xda44bd){_0x59ec62=_0x59ec62-0x0;var _0x345215=_0x9244[_0x59ec62];return _0x345215;};'use strict';var client=require(_0x4924('0x0'));exports[_0x4924('0x1')]=function(){return function(){return client['Request'](_0x4924('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x4924('0x3'),_0x4924('0x4')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x4924('0x5'),_0x4924('0x6'),_0x4924('0x7')]}]},'log':_0x4924('0x1')});};};
\ No newline at end of file
index bbb7bb3..3ae97a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aec=['UpdateMailQueueReport','../client','create','Request','CreateMailQueueReport','update'];(function(_0x591a90,_0x5525b0){var _0x551587=function(_0xd6ad8e){while(--_0xd6ad8e){_0x591a90['push'](_0x591a90['shift']());}};_0x551587(++_0x5525b0);}(_0x1aec,0x16f));var _0xc1ae=function(_0x186bb2,_0x40e1a0){_0x186bb2=_0x186bb2-0x0;var _0x5ef25d=_0x1aec[_0x186bb2];return _0x5ef25d;};'use strict';var client=require(_0xc1ae('0x0'));exports[_0xc1ae('0x1')]=function(_0x2bf83f){return client[_0xc1ae('0x2')](_0xc1ae('0x3'),{'body':_0x2bf83f,'log':_0xc1ae('0x3')});};exports[_0xc1ae('0x4')]=function(_0x294a52,_0x34e274){return client[_0xc1ae('0x2')](_0xc1ae('0x5'),{'body':_0x34e274,'options':{'where':{'uniqueid':_0x294a52},'order':[['id','DESC']],'limit':0x1},'log':_0xc1ae('0x5')});};
\ No newline at end of file
+var _0x6057=['DESC','../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6057,0x71));var _0x7605=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0x6057[_0x2a7b8e];return _0x29b5c8;};'use strict';var client=require(_0x7605('0x0'));exports[_0x7605('0x1')]=function(_0x8e3ce8){return client[_0x7605('0x2')](_0x7605('0x3'),{'body':_0x8e3ce8,'log':_0x7605('0x3')});};exports[_0x7605('0x4')]=function(_0x4371a4,_0x349107){return client[_0x7605('0x2')](_0x7605('0x5'),{'body':_0x349107,'options':{'where':{'uniqueid':_0x4371a4},'order':[['id',_0x7605('0x6')]],'limit':0x1},'log':_0x7605('0x5')});};
\ No newline at end of file
index 2d8c515..fc90082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f1=['addTagsToChatInteraction','../client','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x28cd0e,_0x5d5c25){var _0x16cbbf=function(_0x1794e4){while(--_0x1794e4){_0x28cd0e['push'](_0x28cd0e['shift']());}};_0x16cbbf(++_0x5d5c25);}(_0x68f1,0x1a1));var _0x168f=function(_0x1a2de5,_0x283928){_0x1a2de5=_0x1a2de5-0x0;var _0x16b1ab=_0x68f1[_0x1a2de5];return _0x16b1ab;};'use strict';var client=require(_0x168f('0x0'));exports[_0x168f('0x1')]=function(_0x19349d,_0x337717){return client[_0x168f('0x2')](_0x168f('0x3'),{'body':_0x337717,'options':{'where':{'id':_0x19349d}},'log':_0x168f('0x4')});};exports[_0x168f('0x5')]=function(_0x12e3b7,_0xddc905){return client[_0x168f('0x2')](_0x168f('0x6'),{'body':_0xddc905,'options':{'where':{'id':_0x12e3b7}},'log':_0x168f('0x7')});};
\ No newline at end of file
+var _0x208f=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction'];(function(_0x2748b1,_0x46137c){var _0x5a5e2c=function(_0x1ecc52){while(--_0x1ecc52){_0x2748b1['push'](_0x2748b1['shift']());}};_0x5a5e2c(++_0x46137c);}(_0x208f,0x100));var _0xf208=function(_0x252714,_0x266564){_0x252714=_0x252714-0x0;var _0x2c71b4=_0x208f[_0x252714];return _0x2c71b4;};'use strict';var client=require('../client');exports[_0xf208('0x0')]=function(_0x1239f9,_0x20c728){return client[_0xf208('0x1')](_0xf208('0x2'),{'body':_0x20c728,'options':{'where':{'id':_0x1239f9}},'log':_0xf208('0x3')});};exports[_0xf208('0x4')]=function(_0x145f2d,_0x20e7b1){return client[_0xf208('0x1')](_0xf208('0x5'),{'body':_0x20e7b1,'options':{'where':{'id':_0x145f2d}},'log':_0xf208('0x6')});};
\ No newline at end of file
index 0be50fa..d8dada4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa15d=['../client','Request','CreateOpenchannelMessage'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0xa15d,0x9c));var _0xda15=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0xa15d[_0x14fad0];return _0x5c665f;};'use strict';var client=require(_0xda15('0x0'));exports['create']=function(_0x29c4ae){return client[_0xda15('0x1')](_0xda15('0x2'),{'body':_0x29c4ae,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x8c58=['../client','Request','CreateOpenchannelMessage'];(function(_0x14ec75,_0x56a3d4){var _0x40b9e9=function(_0x4d2f39){while(--_0x4d2f39){_0x14ec75['push'](_0x14ec75['shift']());}};_0x40b9e9(++_0x56a3d4);}(_0x8c58,0xba));var _0x88c5=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x8c58[_0x174ef5];return _0x1cc379;};'use strict';var client=require(_0x88c5('0x0'));exports['create']=function(_0x30a201){return client[_0x88c5('0x1')](_0x88c5('0x2'),{'body':_0x30a201,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 9a89b90..7e23679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0431=['GetOpenchannelQueue','name','strategy','User','online','openchannelPause','../client','getOpenchannelQueues','Request'];(function(_0x3bb1b5,_0x2f0aa7){var _0xceb40c=function(_0x1dedbe){while(--_0x1dedbe){_0x3bb1b5['push'](_0x3bb1b5['shift']());}};_0xceb40c(++_0x2f0aa7);}(_0x0431,0x11d));var _0x1043=function(_0x4e5552,_0x19ec4e){_0x4e5552=_0x4e5552-0x0;var _0x60a338=_0x0431[_0x4e5552];return _0x60a338;};'use strict';var client=require(_0x1043('0x0'));exports[_0x1043('0x1')]=function(){return function(){return client[_0x1043('0x2')](_0x1043('0x3'),{'options':{'raw':![],'attributes':['id',_0x1043('0x4'),'timeout',_0x1043('0x5')],'include':[{'model':_0x1043('0x6'),'as':'Agents','attributes':['id',_0x1043('0x4'),_0x1043('0x7'),_0x1043('0x8')]}]},'log':_0x1043('0x1')});};};
\ No newline at end of file
+var _0x0482=['name','timeout','strategy','User','online','openchannelPause','getOpenchannelQueues','../client','GetOpenchannelQueue'];(function(_0x4f431d,_0xd51a3b){var _0x4f31e1=function(_0x1c688d){while(--_0x1c688d){_0x4f431d['push'](_0x4f431d['shift']());}};_0x4f31e1(++_0xd51a3b);}(_0x0482,0xf1));var _0x2048=function(_0x5b87ce,_0x20b7f6){_0x5b87ce=_0x5b87ce-0x0;var _0x597aa7=_0x0482[_0x5b87ce];return _0x597aa7;};'use strict';var client=require(_0x2048('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x2048('0x1'),{'options':{'raw':![],'attributes':['id',_0x2048('0x2'),_0x2048('0x3'),_0x2048('0x4')],'include':[{'model':_0x2048('0x5'),'as':'Agents','attributes':['id',_0x2048('0x2'),_0x2048('0x6'),_0x2048('0x7')]}]},'log':_0x2048('0x8')});};};
\ No newline at end of file
index 7d7951d..24fbf7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec0=['CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport','../client','create','Request'];(function(_0x26510d,_0x3edafa){var _0x135068=function(_0x40f17e){while(--_0x40f17e){_0x26510d['push'](_0x26510d['shift']());}};_0x135068(++_0x3edafa);}(_0xaec0,0x100));var _0x0aec=function(_0x516cee,_0x13711f){_0x516cee=_0x516cee-0x0;var _0x5e9baa=_0xaec0[_0x516cee];return _0x5e9baa;};'use strict';var client=require(_0x0aec('0x0'));exports[_0x0aec('0x1')]=function(_0x160604){return client[_0x0aec('0x2')](_0x0aec('0x3'),{'body':_0x160604,'log':_0x0aec('0x3')});};exports[_0x0aec('0x4')]=function(_0x1b2736,_0x2900c4){return client[_0x0aec('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x2900c4,'options':{'where':{'uniqueid':_0x1b2736},'order':[['id',_0x0aec('0x5')]],'limit':0x1},'log':_0x0aec('0x6')});};
\ No newline at end of file
+var _0x4784=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create','Request'];(function(_0xf5a7d7,_0x1fc97d){var _0x122a60=function(_0x5a8548){while(--_0x5a8548){_0xf5a7d7['push'](_0xf5a7d7['shift']());}};_0x122a60(++_0x1fc97d);}(_0x4784,0x1ee));var _0x4478=function(_0x59f7cf,_0x5d5028){_0x59f7cf=_0x59f7cf-0x0;var _0x34e382=_0x4784[_0x59f7cf];return _0x34e382;};'use strict';var client=require(_0x4478('0x0'));exports[_0x4478('0x1')]=function(_0x635fac){return client[_0x4478('0x2')]('CreateOpenchannelQueueReport',{'body':_0x635fac,'log':_0x4478('0x3')});};exports[_0x4478('0x4')]=function(_0x4ee247,_0x247902){return client[_0x4478('0x2')](_0x4478('0x5'),{'body':_0x247902,'options':{'where':{'uniqueid':_0x4ee247},'order':[['id',_0x4478('0x6')]],'limit':0x1},'log':_0x4478('0x5')});};
\ No newline at end of file
index 2966363..e8933ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89fe=['UpdateSmsInteraction','updateSmsInteraction','Request','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0x89fe,0x83));var _0xe89f=function(_0x4cf4bd,_0x38d903){_0x4cf4bd=_0x4cf4bd-0x0;var _0x3f5592=_0x89fe[_0x4cf4bd];return _0x3f5592;};'use strict';var client=require(_0xe89f('0x0'));exports[_0xe89f('0x1')]=function(_0x2aac3e,_0x3420da){return client['Request'](_0xe89f('0x2'),{'body':_0x3420da,'options':{'where':{'id':_0x2aac3e}},'log':_0xe89f('0x3')});};exports['addTags']=function(_0x3d3aa8,_0x3d8b30){return client[_0xe89f('0x4')](_0xe89f('0x5'),{'body':_0x3d8b30,'options':{'where':{'id':_0x3d3aa8}},'log':_0xe89f('0x6')});};
\ No newline at end of file
+var _0xff96=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','../client'];(function(_0xca78f1,_0x2c90c8){var _0xda435e=function(_0x375d7a){while(--_0x375d7a){_0xca78f1['push'](_0xca78f1['shift']());}};_0xda435e(++_0x2c90c8);}(_0xff96,0x179));var _0x6ff9=function(_0x24106c,_0x367a6f){_0x24106c=_0x24106c-0x0;var _0xbaeb73=_0xff96[_0x24106c];return _0xbaeb73;};'use strict';var client=require(_0x6ff9('0x0'));exports[_0x6ff9('0x1')]=function(_0xadd107,_0x43f7f9){return client[_0x6ff9('0x2')](_0x6ff9('0x3'),{'body':_0x43f7f9,'options':{'where':{'id':_0xadd107}},'log':_0x6ff9('0x4')});};exports[_0x6ff9('0x5')]=function(_0x3561d7,_0x207c06){return client[_0x6ff9('0x2')](_0x6ff9('0x6'),{'body':_0x207c06,'options':{'where':{'id':_0x3561d7}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index 5a13e67..edce450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aec=['CreateSmsMessage'];(function(_0xe46f22,_0x1d463d){var _0x33112c=function(_0x47a8bf){while(--_0x47a8bf){_0xe46f22['push'](_0xe46f22['shift']());}};_0x33112c(++_0x1d463d);}(_0x6aec,0x1b6));var _0xc6ae=function(_0x5e1cee,_0x527d44){_0x5e1cee=_0x5e1cee-0x0;var _0x2bbf9a=_0x6aec[_0x5e1cee];return _0x2bbf9a;};'use strict';var client=require('../client');exports['create']=function(_0xc4d21b){return client['Request'](_0xc6ae('0x0'),{'body':_0xc4d21b,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0xcaab=['../client','create','createSmsMessage'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0xcaab,0x13b));var _0xbcaa=function(_0x726f6,_0x3dd79b){_0x726f6=_0x726f6-0x0;var _0x1e7668=_0xcaab[_0x726f6];return _0x1e7668;};'use strict';var client=require(_0xbcaa('0x0'));exports[_0xbcaa('0x1')]=function(_0x2bc713){return client['Request']('CreateSmsMessage',{'body':_0x2bc713,'log':_0xbcaa('0x2')});};
\ No newline at end of file
index 783f6ac..1e220fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Request','GetSmsQueue','name','timeout','strategy','User','online','getSmsQueues'];(function(_0x480303,_0x54f328){var _0x238eda=function(_0x52019e){while(--_0x52019e){_0x480303['push'](_0x480303['shift']());}};_0x238eda(++_0x54f328);}(_0x9c44,0x178));var _0x49c4=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x9c44[_0x68c979];return _0x4f0001;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'attributes':['id',_0x49c4('0x2'),_0x49c4('0x3'),_0x49c4('0x4')],'include':[{'model':_0x49c4('0x5'),'as':'Agents','attributes':['id','name',_0x49c4('0x6'),'smsPause']}]},'log':_0x49c4('0x7')});};};
\ No newline at end of file
+var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x2d9fde,_0x3f7ec9){var _0x5d3e7d=function(_0x211b9d){while(--_0x211b9d){_0x2d9fde['push'](_0x2d9fde['shift']());}};_0x5d3e7d(++_0x3f7ec9);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
index d485a3a..93ba6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x267e4a,_0x3ae7aa){var _0x431003=function(_0x23b4b7){while(--_0x23b4b7){_0x267e4a['push'](_0x267e4a['shift']());}};_0x431003(++_0x3ae7aa);}(_0x70e0,0x17b));var _0x070e=function(_0x517cf8,_0x15930a){_0x517cf8=_0x517cf8-0x0;var _0x1f6e3c=_0x70e0[_0x517cf8];return _0x1f6e3c;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
+var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x1fa666,_0x5c83e0){var _0x652c46=function(_0x3eafa0){while(--_0x3eafa0){_0x1fa666['push'](_0x1fa666['shift']());}};_0x652c46(++_0x5c83e0);}(_0x70e0,0x17b));var _0x070e=function(_0x3f021c,_0x15ec18){_0x3f021c=_0x3f021c-0x0;var _0x6ee323=_0x70e0[_0x3f021c];return _0x6ee323;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
index 56f1656..29e5167 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(_0x54d467,_0x1d9be7){var _0x1a14cd=function(_0x14d6e8){while(--_0x14d6e8){_0x54d467['push'](_0x54d467['shift']());}};_0x1a14cd(++_0x1d9be7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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(_0x3c74ec,_0x1dd020){var _0x361649=function(_0x4faea7){while(--_0x4faea7){_0x3c74ec['push'](_0x3c74ec['shift']());}};_0x361649(++_0x1dd020);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 16d2172..5f6b506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1574=['../client','update','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','Request','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x283669,_0x2f7691){var _0x18fed6=function(_0x76aed0){while(--_0x76aed0){_0x283669['push'](_0x283669['shift']());}};_0x18fed6(++_0x2f7691);}(_0x1574,0x148));var _0x4157=function(_0x24627c,_0x42991f){_0x24627c=_0x24627c-0x0;var _0x4fde47=_0x1574[_0x24627c];return _0x4fde47;};'use strict';var client=require(_0x4157('0x0'));exports[_0x4157('0x1')]=function(_0x1d7eae,_0x10fe7c){return client['Request'](_0x4157('0x2'),{'body':_0x10fe7c,'options':{'where':{'id':_0x1d7eae}},'log':_0x4157('0x3')});};exports[_0x4157('0x4')]=function(_0x1759d6,_0x2f0766){return client[_0x4157('0x5')](_0x4157('0x6'),{'body':_0x2f0766,'options':{'where':{'id':_0x1759d6}},'log':_0x4157('0x7')});};
\ No newline at end of file
+var _0x5353=['updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','../client','Request','UpdateWhatsappInteraction'];(function(_0x326539,_0x108886){var _0x2cbb6e=function(_0x47cfa4){while(--_0x47cfa4){_0x326539['push'](_0x326539['shift']());}};_0x2cbb6e(++_0x108886);}(_0x5353,0x12f));var _0x3535=function(_0x15a0c1,_0x595567){_0x15a0c1=_0x15a0c1-0x0;var _0x100e4f=_0x5353[_0x15a0c1];return _0x100e4f;};'use strict';var client=require(_0x3535('0x0'));exports['update']=function(_0x1c3c47,_0x3dd6d4){return client[_0x3535('0x1')](_0x3535('0x2'),{'body':_0x3dd6d4,'options':{'where':{'id':_0x1c3c47}},'log':_0x3535('0x3')});};exports[_0x3535('0x4')]=function(_0x21ad15,_0xd6adad){return client[_0x3535('0x1')](_0x3535('0x5'),{'body':_0xd6adad,'options':{'where':{'id':_0x21ad15}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index e482154..55a3223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c39=['CreateWhatsappMessage','createWhatsappMessage','../client','Request'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x0c39,0x156));var _0x90c3=function(_0x1084ff,_0x4d4a7e){_0x1084ff=_0x1084ff-0x0;var _0x56fddf=_0x0c39[_0x1084ff];return _0x56fddf;};'use strict';var client=require(_0x90c3('0x0'));exports['create']=function(_0x4e5119){return client[_0x90c3('0x1')](_0x90c3('0x2'),{'body':_0x4e5119,'log':_0x90c3('0x3')});};
\ No newline at end of file
+var _0x049d=['createWhatsappMessage','../client','CreateWhatsappMessage'];(function(_0x2159e6,_0x55c285){var _0x355dbb=function(_0x31dfa8){while(--_0x31dfa8){_0x2159e6['push'](_0x2159e6['shift']());}};_0x355dbb(++_0x55c285);}(_0x049d,0x9a));var _0xd049=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x049d[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xd049('0x0'));exports['create']=function(_0x52d7cc){return client['Request'](_0xd049('0x1'),{'body':_0x52d7cc,'log':_0xd049('0x2')});};
\ No newline at end of file
index 1136ab4..595c00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60ec=['GetWhatsappQueue','name','timeout','strategy','User','online','whatsappPause','getWhatsappQueues','../client','Request'];(function(_0x590b63,_0x14debb){var _0x3c9380=function(_0x58fc67){while(--_0x58fc67){_0x590b63['push'](_0x590b63['shift']());}};_0x3c9380(++_0x14debb);}(_0x60ec,0xa8));var _0xc60e=function(_0x57cf20,_0x552a25){_0x57cf20=_0x57cf20-0x0;var _0x400987=_0x60ec[_0x57cf20];return _0x400987;};'use strict';var client=require(_0xc60e('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xc60e('0x1')](_0xc60e('0x2'),{'options':{'raw':![],'attributes':['id',_0xc60e('0x3'),_0xc60e('0x4'),_0xc60e('0x5')],'include':[{'model':_0xc60e('0x6'),'as':'Agents','attributes':['id',_0xc60e('0x3'),_0xc60e('0x7'),_0xc60e('0x8')]}]},'log':_0xc60e('0x9')});};};
\ No newline at end of file
+var _0x2c27=['Agents','online','whatsappPause','../client','Request','GetWhatsappQueue','name','timeout','strategy','User'];(function(_0xf2d750,_0x4950cf){var _0x216db7=function(_0xec60a7){while(--_0xec60a7){_0xf2d750['push'](_0xf2d750['shift']());}};_0x216db7(++_0x4950cf);}(_0x2c27,0xe9));var _0x72c2=function(_0x3435d4,_0x2b7273){_0x3435d4=_0x3435d4-0x0;var _0x2a166a=_0x2c27[_0x3435d4];return _0x2a166a;};'use strict';var client=require(_0x72c2('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x72c2('0x1')](_0x72c2('0x2'),{'options':{'raw':![],'attributes':['id',_0x72c2('0x3'),_0x72c2('0x4'),_0x72c2('0x5')],'include':[{'model':_0x72c2('0x6'),'as':_0x72c2('0x7'),'attributes':['id',_0x72c2('0x3'),_0x72c2('0x8'),_0x72c2('0x9')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index 08b14b7..b42665d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1daa=['Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','DESC','../client','create'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x1daa,0x130));var _0xa1da=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x1daa[_0x288f5e];return _0x476cc9;};'use strict';var client=require(_0xa1da('0x0'));exports[_0xa1da('0x1')]=function(_0x553dd0){return client[_0xa1da('0x2')](_0xa1da('0x3'),{'body':_0x553dd0,'log':_0xa1da('0x3')});};exports['update']=function(_0x1e6fdc,_0x2a7ebd){return client[_0xa1da('0x2')](_0xa1da('0x4'),{'body':_0x2a7ebd,'options':{'where':{'uniqueid':_0x1e6fdc},'order':[['id',_0xa1da('0x5')]],'limit':0x1},'log':_0xa1da('0x4')});};
\ No newline at end of file
+var _0xecc6=['Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport'];(function(_0x41f89e,_0x1364a3){var _0x1b7e94=function(_0x47735e){while(--_0x47735e){_0x41f89e['push'](_0x41f89e['shift']());}};_0x1b7e94(++_0x1364a3);}(_0xecc6,0x1c2));var _0x6ecc=function(_0x465dc3,_0x3e6b11){_0x465dc3=_0x465dc3-0x0;var _0x3237eb=_0xecc6[_0x465dc3];return _0x3237eb;};'use strict';var client=require('../client');exports['create']=function(_0x140ddc){return client[_0x6ecc('0x0')](_0x6ecc('0x1'),{'body':_0x140ddc,'log':_0x6ecc('0x1')});};exports[_0x6ecc('0x2')]=function(_0x1b897e,_0x1a0d86){return client[_0x6ecc('0x0')]('UpdateWhatsappQueueReport',{'body':_0x1a0d86,'options':{'where':{'uniqueid':_0x1b897e},'order':[['id',_0x6ecc('0x3')]],'limit':0x1},'log':_0x6ecc('0x4')});};
\ No newline at end of file
index 732b848..71489de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fcb=['stop','find','agents','timeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][QUEUE]\x20%s','validate','lodash','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message'];(function(_0x24aa43,_0x5b5ec6){var _0x51dd33=function(_0x6ffd78){while(--_0x6ffd78){_0x24aa43['push'](_0x24aa43['shift']());}};_0x51dd33(++_0x5b5ec6);}(_0x1fcb,0x96));var _0xb1fc=function(_0x405552,_0x514c7d){_0x405552=_0x405552-0x0;var _0x103ab9=_0x1fcb[_0x405552];return _0x103ab9;};'use strict';var schema=require(_0xb1fc('0x0'));var _=require(_0xb1fc('0x1'));var util=require('util');var seqqueue=require(_0xb1fc('0x2'));var logger=require(_0xb1fc('0x3'))(_0xb1fc('0x4'));var strategy=require(_0xb1fc('0x5'));var queue=schema({'name':{'type':_0xb1fc('0x6'),'required':!![],'message':_0xb1fc('0x7')},'timeout':{'type':_0xb1fc('0x8'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x13f847,_0x4ea231,_0x2527c6){return logger[_0xb1fc('0x9')](util[_0xb1fc('0xa')](_0xb1fc('0xb'),_0x13f847,_0x4ea231['name'],_0x2527c6));}function handleFindAgent(_0x18557c){return function(_0x592c08){return _0x592c08[_0xb1fc('0xc')][_0xb1fc('0xd')]()===_0x18557c['toLowerCase']();};}exports[_0xb1fc('0xe')]=function(_0x357240,_0x197743,_0x5f4740,_0x75b948){return function(_0x5dfc65){try{var _0x2c0ba4={'name':_0x197743[0x0],'timeout':_0x197743[0x1]};var _0x216c8d=queue[_0xb1fc('0x0')](_0x2c0ba4,{'typecast':!![]});if(_0x216c8d[_0xb1fc('0xf')]){logger[_0xb1fc('0x10')](_0xb1fc('0x11'),_0x357240,_[_0xb1fc('0x12')](_0x216c8d,_0xb1fc('0x13'))['join'](',\x20'));_0x5dfc65[_0xb1fc('0x14')]();}else{var _0xdff7a5=_[_0xb1fc('0x15')](_0x5f4740[_0xb1fc('0x16')],handleFindAgent(_0x2c0ba4[_0xb1fc('0xc')]));if(_0xdff7a5){var _0x3752ae=(_0x2c0ba4[_0xb1fc('0x17')]||0xa)*0x3e8;var _0x533a5d,_0x2aa9e4;var _0x10f62f=seqqueue['createQueue'](_0x3752ae);_0x10f62f['id']=_0x357240;_0x10f62f['atimeout']=_0x3752ae;_0x10f62f[_0xb1fc('0x18')]=_0x75b948[_0xb1fc('0x18')];writeLog(_0x357240,_0xdff7a5,util[_0xb1fc('0xa')](_0xb1fc('0x19'),_0x3752ae));_0x5f4740[_0xb1fc('0x1a')][_0x357240]['on']('end',function(){logger[_0xb1fc('0x9')](_0xb1fc('0x1b'),_0x357240);clearTimeout(_0x2aa9e4);_0x2aa9e4=undefined;_0x10f62f[_0xb1fc('0x1c')]();if(_0x5f4740['rules'][_0x357240]){delete _0x5f4740[_0xb1fc('0x1a')][_0x357240];}_0x5dfc65[_0xb1fc('0x14')]();});_0x5f4740[_0xb1fc('0x1a')][_0x357240]['on'](_0xb1fc('0x1d'),function(){if(_0x5f4740[_0xb1fc('0x1a')][_0x357240]){delete _0x5f4740['rules'][_0x357240];}});_0x2aa9e4=setTimeout(function(){logger['info'](_0xb1fc('0x1e'),_0x357240);clearTimeout(_0x2aa9e4);_0x10f62f[_0xb1fc('0x1c')]();_0x5dfc65[_0xb1fc('0x1f')]();},_0x3752ae);strategy[_0xb1fc('0x20')](_0x10f62f,_0xdff7a5,_0x5f4740,_0x75b948);}else{logger[_0xb1fc('0x10')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x357240,_0x2c0ba4[_0xb1fc('0xc')]);_0x5dfc65[_0xb1fc('0x14')]();}}}catch(_0x25871f){console['log'](_0x25871f);logger[_0xb1fc('0x10')](_0xb1fc('0x21'),_0x357240,_0x25871f['stack']);_0x5dfc65[_0xb1fc('0x14')]();}};};
\ No newline at end of file
+var _0xc1e6=['complete','[%s][AGENT]\x20ROUTING\x20END','next','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','consequence','[%s][AGENT]\x20%s','map','message','join','stop','agents','timeout','createQueue','atimeout','channel','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED','rules'];(function(_0x204e3d,_0x465250){var _0x309146=function(_0x39f450){while(--_0x39f450){_0x204e3d['push'](_0x204e3d['shift']());}};_0x309146(++_0x465250);}(_0xc1e6,0xe6));var _0x6c1e=function(_0x240057,_0x572431){_0x240057=_0x240057-0x0;var _0x76f60d=_0xc1e6[_0x240057];return _0x76f60d;};'use strict';var schema=require(_0x6c1e('0x0'));var _=require(_0x6c1e('0x1'));var util=require(_0x6c1e('0x2'));var seqqueue=require(_0x6c1e('0x3'));var logger=require('../../../../config/logger')(_0x6c1e('0x4'));var strategy=require(_0x6c1e('0x5'));var queue=schema({'name':{'type':_0x6c1e('0x6'),'required':!![],'message':_0x6c1e('0x7')},'timeout':{'type':_0x6c1e('0x8'),'message':_0x6c1e('0x9')}});function writeLog(_0x91ff9,_0x28513b,_0x3d6fd4){return logger[_0x6c1e('0xa')](util[_0x6c1e('0xb')](_0x6c1e('0xc'),_0x91ff9,_0x28513b[_0x6c1e('0xd')],_0x3d6fd4));}function handleFindAgent(_0x466fc9){return function(_0x27cedc){return _0x27cedc[_0x6c1e('0xd')]['toLowerCase']()===_0x466fc9['toLowerCase']();};}exports[_0x6c1e('0xe')]=function(_0x5e7011,_0x5343d7,_0x102d14,_0x238ef9){return function(_0x513a6a){try{var _0x4e8ddf={'name':_0x5343d7[0x0],'timeout':_0x5343d7[0x1]};var _0x3b91c5=queue['validate'](_0x4e8ddf,{'typecast':!![]});if(_0x3b91c5['length']){logger['error'](_0x6c1e('0xf'),_0x5e7011,_[_0x6c1e('0x10')](_0x3b91c5,_0x6c1e('0x11'))[_0x6c1e('0x12')](',\x20'));_0x513a6a[_0x6c1e('0x13')]();}else{var _0x3ff9ce=_['find'](_0x102d14[_0x6c1e('0x14')],handleFindAgent(_0x4e8ddf[_0x6c1e('0xd')]));if(_0x3ff9ce){var _0x5d8d4a=(_0x4e8ddf[_0x6c1e('0x15')]||0xa)*0x3e8;var _0x272573,_0x381a6d;var _0x58941b=seqqueue[_0x6c1e('0x16')](_0x5d8d4a);_0x58941b['id']=_0x5e7011;_0x58941b[_0x6c1e('0x17')]=_0x5d8d4a;_0x58941b[_0x6c1e('0x18')]=_0x238ef9[_0x6c1e('0x18')];writeLog(_0x5e7011,_0x3ff9ce,util[_0x6c1e('0xb')](_0x6c1e('0x19'),_0x5d8d4a));_0x102d14['rules'][_0x5e7011]['on'](_0x6c1e('0x1a'),function(){logger[_0x6c1e('0xa')](_0x6c1e('0x1b'),_0x5e7011);clearTimeout(_0x381a6d);_0x381a6d=undefined;_0x58941b['close']();if(_0x102d14[_0x6c1e('0x1c')][_0x5e7011]){delete _0x102d14['rules'][_0x5e7011];}_0x513a6a[_0x6c1e('0x13')]();});_0x102d14[_0x6c1e('0x1c')][_0x5e7011]['on'](_0x6c1e('0x1d'),function(){if(_0x102d14[_0x6c1e('0x1c')][_0x5e7011]){delete _0x102d14[_0x6c1e('0x1c')][_0x5e7011];}});_0x381a6d=setTimeout(function(){logger[_0x6c1e('0xa')](_0x6c1e('0x1e'),_0x5e7011);clearTimeout(_0x381a6d);_0x58941b['close']();_0x513a6a[_0x6c1e('0x1f')]();},_0x5d8d4a);strategy['agent'](_0x58941b,_0x3ff9ce,_0x102d14,_0x238ef9);}else{logger[_0x6c1e('0x20')](_0x6c1e('0x21'),_0x5e7011,_0x4e8ddf[_0x6c1e('0xd')]);_0x513a6a[_0x6c1e('0x13')]();}}}catch(_0x26c5b4){console[_0x6c1e('0x22')](_0x26c5b4);logger['error'](_0x6c1e('0x23'),_0x5e7011,_0x26c5b4[_0x6c1e('0x24')]);_0x513a6a[_0x6c1e('0x13')]();}};};
\ No newline at end of file
index 8219cb8..7977a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c77=['toString','amazonlex','providerName','Message','Failed','lodash','moment','aws-sdk','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','upperFirst','AccountId','account','isEmpty','body','getMustacheRender','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message'];(function(_0x5e5527,_0x3fdf44){var _0x449673=function(_0x46bd11){while(--_0x46bd11){_0x5e5527['push'](_0x5e5527['shift']());}};_0x449673(++_0x3fdf44);}(_0x5c77,0xb5));var _0x75c7=function(_0x1712d2,_0x493af7){_0x1712d2=_0x1712d2-0x0;var _0x4538d6=_0x5c77[_0x1712d2];return _0x4538d6;};'use strict';var _=require(_0x75c7('0x0'));var moment=require(_0x75c7('0x1'));var AWS=require(_0x75c7('0x2'));var utils=require(_0x75c7('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x75c7('0x4')),'openchannelMessage':require(_0x75c7('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x75c7('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x75c7('0x7'))};exports[_0x75c7('0x8')]=function(_0x168b25,_0xd0662d){return function(_0x1857a1){try{if(!_['isNil'](this['interaction'][_0x75c7('0x9')])){logger[_0x75c7('0xa')](_0x75c7('0xb'),_0x168b25,_0x75c7('0xc'));return _0x1857a1[_0x75c7('0xd')]();}var _0x1c8452={'ContactId':this['contact']['id'],'sentAt':moment()[_0x75c7('0xe')](_0x75c7('0xf')),'direction':'out'};if(this[_0x75c7('0x10')]===_0x75c7('0x11')||this['channel']===_0x75c7('0x12')){_0x1c8452[_0x75c7('0x13')]=this[_0x75c7('0x14')][_0x75c7('0x13')];}var _0x442425=this[_0x75c7('0x10')];if(_0x442425===_0x75c7('0x15')){_0x1c8452[_0x75c7('0x16')]=this['account']['id'];}else{_0x1c8452[_[_0x75c7('0x17')](_0x442425)+_0x75c7('0x18')]=this[_0x75c7('0x19')]['id'];}_0x1c8452[_[_0x75c7('0x17')](_0x442425)+'InteractionId']=this[_0x75c7('0x14')]['id'];if(this[_0x75c7('0x14')]['created']){var _0x2e124b=_0xd0662d[0x4];if(!_[_0x75c7('0x1a')](_0x2e124b)){_0x1c8452[_0x75c7('0x1b')]=utils[_0x75c7('0x1c')](_0x2e124b,this);return rpc[_0x442425+'Message'][_0x75c7('0x1d')](_0x1c8452)[_0x75c7('0x1e')](function(_0x529b97){logger[_0x75c7('0xa')](_0x75c7('0xb'),_0x168b25,_0x1c8452[_0x75c7('0x1b')]);})[_0x75c7('0x1f')](function(_0x2fdb6a){logger[_0x75c7('0x20')](_0x75c7('0xb'),_0x168b25,JSON[_0x75c7('0x21')](_0x2fdb6a));})[_0x75c7('0x22')](function(){logger[_0x75c7('0xa')](_0x75c7('0x23'),_0x168b25);_0x1857a1[_0x75c7('0x24')]();});}else{logger[_0x75c7('0xa')](_0x75c7('0x25'),_0x168b25);_0x1857a1[_0x75c7('0x24')]();}}else{var _0x44d929=this;var _0x54c369=new AWS['LexRuntime']({'accessKeyId':_0xd0662d[0x0],'secretAccessKey':_0xd0662d[0x1],'region':_0xd0662d[0x2]});var _0x148c26={'botAlias':'$LATEST','botName':_0xd0662d[0x3],'inputText':this[_0x75c7('0x26')]['body'],'userId':this[_0x75c7('0x10')]+':'+this[_0x75c7('0x14')]['id'][_0x75c7('0x27')]()};_0x54c369['postText'](_0x148c26,function(_0x4b6e18,_0x545559){if(_0x4b6e18){logger[_0x75c7('0x20')](_0x75c7('0xb'),_0x168b25,_0x4b6e18[_0x75c7('0x26')]);_0x1857a1[_0x75c7('0xd')]();}else if(_0x545559&&_0x545559[_0x75c7('0x26')]){_0x44d929[_0x75c7('0x1b')][_0x75c7('0x28')]=_0x545559;_0x1c8452[_0x75c7('0x1b')]=_0x545559[_0x75c7('0x26')];_0x1c8452[_0x75c7('0x29')]=_0x75c7('0x28');_0x1c8452['providerResponse']=JSON[_0x75c7('0x21')](_0x545559);return rpc[_0x442425+_0x75c7('0x2a')][_0x75c7('0x1d')](_0x1c8452)['then'](function(_0x1a990a){logger['info'](_0x75c7('0xb'),_0x168b25,_0x1c8452[_0x75c7('0x1b')]);if(_0x545559['dialogState']==_0x75c7('0x2b')){_0x1857a1['next']();}else{_0x1857a1['stop']();}})[_0x75c7('0x1f')](function(_0x3a056f){logger['error'](_0x75c7('0xb'),_0x168b25,JSON[_0x75c7('0x21')](_0x3a056f));_0x1857a1[_0x75c7('0xd')]();});}else{_0x1857a1['next']();}});}}catch(_0x3f3c0d){logger[_0x75c7('0x20')](_0x75c7('0xb'),_0x168b25,JSON[_0x75c7('0x21')](_0x3f3c0d));_0x1857a1[_0x75c7('0x24')]();}};};
\ No newline at end of file
+var _0x2db1=['../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','info','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','ChatWebsiteId','account','AccountId','upperFirst','created','body','getMustacheRender','Message','create','then','catch','error','[%s][AMAZONLEX]\x20%s','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','toString','message','next','amazonlex','providerResponse','stringify','dialogState','Failed','lodash','moment','aws-sdk','./utils'];(function(_0x26c7c6,_0x2796bc){var _0x3130b7=function(_0x9381e4){while(--_0x9381e4){_0x26c7c6['push'](_0x26c7c6['shift']());}};_0x3130b7(++_0x2796bc);}(_0x2db1,0x1ac));var _0x12db=function(_0x3e6d97,_0xec789){_0x3e6d97=_0x3e6d97-0x0;var _0x45035e=_0x2db1[_0x3e6d97];return _0x45035e;};'use strict';var _=require(_0x12db('0x0'));var moment=require(_0x12db('0x1'));var AWS=require(_0x12db('0x2'));var utils=require(_0x12db('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x12db('0x4')),'openchannelMessage':require(_0x12db('0x5')),'mailMessage':require(_0x12db('0x6')),'smsMessage':require(_0x12db('0x7')),'faxMessage':require(_0x12db('0x8')),'whatsappMessage':require(_0x12db('0x9'))};exports[_0x12db('0xa')]=function(_0xc3150d,_0x4d2fc5){return function(_0x11a01d){try{if(!_[_0x12db('0xb')](this[_0x12db('0xc')]['UserId'])){logger[_0x12db('0xd')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x11a01d['next']();}var _0x3d4131={'ContactId':this[_0x12db('0xe')]['id'],'sentAt':moment()[_0x12db('0xf')](_0x12db('0x10')),'direction':_0x12db('0x11')};if(this['channel']===_0x12db('0x12')||this[_0x12db('0x13')]===_0x12db('0x14')){_0x3d4131[_0x12db('0x15')]=this[_0x12db('0xc')][_0x12db('0x15')];}var _0x4e2142=this[_0x12db('0x13')];if(_0x4e2142==='chat'){_0x3d4131[_0x12db('0x16')]=this[_0x12db('0x17')]['id'];}else{_0x3d4131[_['upperFirst'](_0x4e2142)+_0x12db('0x18')]=this['account']['id'];}_0x3d4131[_[_0x12db('0x19')](_0x4e2142)+'InteractionId']=this['interaction']['id'];if(this[_0x12db('0xc')][_0x12db('0x1a')]){var _0x1ef918=_0x4d2fc5[0x4];if(!_['isEmpty'](_0x1ef918)){_0x3d4131[_0x12db('0x1b')]=utils[_0x12db('0x1c')](_0x1ef918,this);return rpc[_0x4e2142+_0x12db('0x1d')][_0x12db('0x1e')](_0x3d4131)[_0x12db('0x1f')](function(_0x18985f){logger['info']('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x3d4131['body']);})[_0x12db('0x20')](function(_0x460d43){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON['stringify'](_0x460d43));})['finally'](function(){logger[_0x12db('0xd')](_0x12db('0x23'),_0xc3150d);_0x11a01d['stop']();});}else{logger[_0x12db('0xd')](_0x12db('0x24'),_0xc3150d);_0x11a01d[_0x12db('0x25')]();}}else{var _0x31fd2a=this;var _0x5ad331=new AWS[(_0x12db('0x26'))]({'accessKeyId':_0x4d2fc5[0x0],'secretAccessKey':_0x4d2fc5[0x1],'region':_0x4d2fc5[0x2]});var _0x46c663={'botAlias':_0x12db('0x27'),'botName':_0x4d2fc5[0x3],'inputText':this['message'][_0x12db('0x1b')],'userId':this[_0x12db('0x13')]+':'+this['interaction']['id'][_0x12db('0x28')]()};_0x5ad331['postText'](_0x46c663,function(_0x1dc7a5,_0x391009){if(_0x1dc7a5){logger[_0x12db('0x21')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x1dc7a5[_0x12db('0x29')]);_0x11a01d[_0x12db('0x2a')]();}else if(_0x391009&&_0x391009[_0x12db('0x29')]){_0x31fd2a[_0x12db('0x1b')][_0x12db('0x2b')]=_0x391009;_0x3d4131[_0x12db('0x1b')]=_0x391009[_0x12db('0x29')];_0x3d4131['providerName']=_0x12db('0x2b');_0x3d4131[_0x12db('0x2c')]=JSON[_0x12db('0x2d')](_0x391009);return rpc[_0x4e2142+_0x12db('0x1d')][_0x12db('0x1e')](_0x3d4131)['then'](function(_0x472a83){logger[_0x12db('0xd')]('[%s][AMAZONLEX]\x20%s',_0xc3150d,_0x3d4131[_0x12db('0x1b')]);if(_0x391009[_0x12db('0x2e')]==_0x12db('0x2f')){_0x11a01d[_0x12db('0x2a')]();}else{_0x11a01d['stop']();}})[_0x12db('0x20')](function(_0x316113){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON[_0x12db('0x2d')](_0x316113));_0x11a01d[_0x12db('0x2a')]();});}else{_0x11a01d[_0x12db('0x2a')]();}});}}catch(_0x5ed0f1){logger[_0x12db('0x21')](_0x12db('0x22'),_0xc3150d,JSON[_0x12db('0x2d')](_0x5ed0f1));_0x11a01d[_0x12db('0x25')]();}};};
\ No newline at end of file
index 3a6b5b2..bfde46a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb115=['chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','interaction','Message','inReplyTo','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','auto_reply','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','[%s][AUTOREPLY]\x20%s','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','created','Autoreply\x20already\x20sent','next','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','getMustacheRender','message','mail','from','phone','read','subject','startsWith','Re:','Re:\x20'];(function(_0x4dfe07,_0x308a23){var _0x570708=function(_0x531c3e){while(--_0x531c3e){_0x4dfe07['push'](_0x4dfe07['shift']());}};_0x570708(++_0x308a23);}(_0xb115,0x1dc));var _0x5b11=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb115[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var moment=require(_0x5b11('0x0'));var utils=require('./utils');var logger=require(_0x5b11('0x1'))(_0x5b11('0x2'));var rpc={'chatMessage':require(_0x5b11('0x3')),'openchannelMessage':require(_0x5b11('0x4')),'mailMessage':require(_0x5b11('0x5')),'smsMessage':require(_0x5b11('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x5b11('0x7')),'openchannelInteraction':require(_0x5b11('0x8')),'mailInteraction':require(_0x5b11('0x9')),'smsInteraction':require(_0x5b11('0xa')),'faxInteraction':require(_0x5b11('0xb')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x5b11('0xc'));exports[_0x5b11('0xd')]=function(_0x3629cb,_0x273ffa,_0x5933f5,_0x18fc7a){return function(_0x59d290){try{var _0x38a150=this[_0x5b11('0xe')];if(_0x38a150==='mail'&&_0x18fc7a[_0x5b11('0xf')][_0x5b11('0x10')]){logger[_0x5b11('0x11')]('[%s][AUTOREPLY]\x20%s',_0x3629cb,_0x5b11('0x12'));return _0x59d290['next']();}if(_0x273ffa[0x0]==='1'&&(_[_0x5b11('0x13')](this['interaction'][_0x5b11('0x14')])||!this['interaction']['created'])){logger[_0x5b11('0x11')]('[%s][AUTOREPLY]\x20%s',_0x3629cb,_0x5b11('0x15'));return _0x59d290[_0x5b11('0x16')]();}if(_0x273ffa[0x0]==='2'&&this['interaction']['autoreplyExecuted']){logger['info'](_0x5b11('0x17'),_0x3629cb,'One\x20Time\x20already\x20sent');return _0x59d290[_0x5b11('0x16')]();}var _0x46353f={'ContactId':this[_0x5b11('0x18')]['id'],'sentAt':moment()[_0x5b11('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x5b11('0xe')]==='mail'){_0x46353f[_0x5b11('0xf')]=utils[_0x5b11('0x1a')](_0x273ffa[0x2],this);}else{_0x46353f[_0x5b11('0xf')]=utils[_0x5b11('0x1a')](_0x273ffa[0x1],this);}if(this[_0x5b11('0x1b')]){_0x46353f['to']=this[_0x5b11('0x1b')]['from']||'';if(this[_0x5b11('0xe')]===_0x5b11('0x1c')&&_0x273ffa[0x1]==='1'){_0x46353f['cc']=this[_0x5b11('0x1b')]['cc']||'';}_0x46353f[_0x5b11('0x1d')]=this[_0x5b11('0x1b')]['to']||'';_0x46353f['phone']=this['message'][_0x5b11('0x1e')]||'';_0x46353f[_0x5b11('0x1f')]=!![];if(this[_0x5b11('0x1b')][_0x5b11('0x20')]){_0x46353f[_0x5b11('0x20')]='';_0x46353f['subject']+=_[_0x5b11('0x21')](this[_0x5b11('0x1b')]['subject'],_0x5b11('0x22'))?'':_0x5b11('0x23');_0x46353f['subject']+=this[_0x5b11('0x1b')][_0x5b11('0x20')];}}if(this['channel']===_0x5b11('0x24')){_0x46353f[_0x5b11('0x25')]=this[_0x5b11('0x26')]['id'];}else{_0x46353f[_['upperFirst'](this[_0x5b11('0xe')])+_0x5b11('0x27')]=this['account']['id'];}_0x46353f[_[_0x5b11('0x28')](this[_0x5b11('0xe')])+_0x5b11('0x29')]=this[_0x5b11('0x2a')]['id'];var _0x22cf1f=this[_0x5b11('0x2a')];if(rpc[this[_0x5b11('0xe')]+_0x5b11('0x2b')]){if(this[_0x5b11('0xe')]===_0x5b11('0x1c')){_0x46353f[_0x5b11('0x2c')]=this[_0x5b11('0x1b')][_0x5b11('0x2d')];_0x46353f[_0x5b11('0x2e')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0x5b11('0x2f')](_0x46353f[_0x5b11('0xf')],_0x5b11('0x30'),'<div')+'</div>';_0x46353f['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':'All','Precedence':_0x5b11('0x31')};return mailRpc['sendMailMessage'](this[_0x5b11('0x26')]['smtpOptions'],_0x46353f)[_0x5b11('0x32')](function(_0x1eb8b6){logger[_0x5b11('0x11')](_0x5b11('0x33'),_0x3629cb);_0x46353f[_0x5b11('0x2d')]=_0x1eb8b6[_0x5b11('0x1b')][_0x5b11('0x2d')];return rpc[_0x38a150+'Message'][_0x5b11('0x34')](_0x46353f);})['then'](function(_0x55a0b2){logger['info'](_0x5b11('0x35'),_0x3629cb,JSON[_0x5b11('0x36')](_0x55a0b2));})[_0x5b11('0x37')](function(_0x34e109){logger['error'](_0x5b11('0x38'),_0x3629cb,JSON[_0x5b11('0x36')](_0x34e109));})[_0x5b11('0x39')](function(){Promise[_0x5b11('0x3a')]()[_0x5b11('0x32')](function(){if(_0x273ffa[0x0]!=='2'||_0x22cf1f[_0x5b11('0x3b')])return;return rpc[_0x38a150+_0x5b11('0x3c')][_0x5b11('0x3d')](_0x22cf1f['id'],{'autoreplyExecuted':!![]})[_0x5b11('0x32')](function(_0x5d2a3b){logger['info'](_0x5b11('0x17'),_0x3629cb,JSON['stringify'](_0x5d2a3b));})[_0x5b11('0x37')](function(_0xaba314){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3629cb,JSON['stringify'](_0xaba314));});})[_0x5b11('0x32')](function(){_0x59d290[_0x5b11('0x16')]();});});}else{return rpc[this[_0x5b11('0xe')]+_0x5b11('0x2b')][_0x5b11('0x34')](_0x46353f)[_0x5b11('0x32')](function(){logger[_0x5b11('0x11')](_0x5b11('0x35'),_0x3629cb,_0x46353f[_0x5b11('0xf')]);})[_0x5b11('0x37')](function(_0x363647){logger['error'](_0x5b11('0x35'),_0x3629cb,JSON[_0x5b11('0x36')](_0x363647));})[_0x5b11('0x39')](function(){Promise[_0x5b11('0x3a')]()[_0x5b11('0x32')](function(){if(_0x273ffa[0x0]!=='2'||_0x22cf1f[_0x5b11('0x3b')])return;return rpc[_0x38a150+_0x5b11('0x3c')]['update'](_0x22cf1f['id'],{'autoreplyExecuted':!![]})[_0x5b11('0x32')](function(_0x1de51e){logger[_0x5b11('0x11')](_0x5b11('0x17'),_0x3629cb,JSON[_0x5b11('0x36')](_0x1de51e));})[_0x5b11('0x37')](function(_0x3daf2a){logger['error'](_0x5b11('0x3e'),_0x3629cb,JSON['stringify'](_0x3daf2a));});})[_0x5b11('0x32')](function(){_0x59d290[_0x5b11('0x16')]();});});}}}catch(_0xa498f6){logger['error'](_0x5b11('0x35'),_0x3629cb,JSON[_0x5b11('0x36')](_0xa498f6));_0x59d290[_0x5b11('0x3f')]();}};};
\ No newline at end of file
+var _0x0726=['routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../mailRpc','channel','mail','body','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','InteractionId','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0726,0x13d));var _0x6072=function(_0x1177f0,_0x3d4757){_0x1177f0=_0x1177f0-0x0;var _0x3ad3a3=_0x0726[_0x1177f0];return _0x3ad3a3;};'use strict';var _=require(_0x6072('0x0'));var moment=require('moment');var utils=require(_0x6072('0x1'));var logger=require(_0x6072('0x2'))(_0x6072('0x3'));var rpc={'chatMessage':require(_0x6072('0x4')),'openchannelMessage':require(_0x6072('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x6072('0x6')),'faxMessage':require(_0x6072('0x7')),'whatsappMessage':require(_0x6072('0x8')),'chatInteraction':require(_0x6072('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0x6072('0xa')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x6072('0xb'));exports['consequence']=function(_0x4aa68e,_0x30b177,_0x200282,_0x168fe1){return function(_0xd1cab8){try{var _0x19d8fa=this[_0x6072('0xc')];if(_0x19d8fa===_0x6072('0xd')&&_0x168fe1[_0x6072('0xe')][_0x6072('0xf')]){logger[_0x6072('0x10')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,_0x6072('0x11'));return _0xd1cab8[_0x6072('0x12')]();}if(_0x30b177[0x0]==='1'&&(_['isNil'](this[_0x6072('0x13')][_0x6072('0x14')])||!this[_0x6072('0x13')][_0x6072('0x14')])){logger[_0x6072('0x10')](_0x6072('0x15'),_0x4aa68e,_0x6072('0x16'));return _0xd1cab8[_0x6072('0x12')]();}if(_0x30b177[0x0]==='2'&&this[_0x6072('0x13')]['autoreplyExecuted']){logger[_0x6072('0x10')](_0x6072('0x17'),_0x4aa68e,_0x6072('0x18'));return _0xd1cab8[_0x6072('0x12')]();}var _0xc6eb5b={'ContactId':this[_0x6072('0x19')]['id'],'sentAt':moment()[_0x6072('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x6072('0xc')]===_0x6072('0xd')){_0xc6eb5b[_0x6072('0xe')]=utils[_0x6072('0x1b')](_0x30b177[0x2],this);}else{_0xc6eb5b[_0x6072('0xe')]=utils['getMustacheRender'](_0x30b177[0x1],this);}if(this[_0x6072('0x1c')]){_0xc6eb5b['to']=this[_0x6072('0x1c')][_0x6072('0x1d')]||'';if(this[_0x6072('0xc')]===_0x6072('0xd')&&_0x30b177[0x1]==='1'){_0xc6eb5b['cc']=this[_0x6072('0x1c')]['cc']||'';}_0xc6eb5b[_0x6072('0x1d')]=this[_0x6072('0x1c')]['to']||'';_0xc6eb5b[_0x6072('0x1e')]=this['message'][_0x6072('0x1e')]||'';_0xc6eb5b['read']=!![];if(this['message'][_0x6072('0x1f')]){_0xc6eb5b[_0x6072('0x1f')]='';_0xc6eb5b[_0x6072('0x1f')]+=_[_0x6072('0x20')](this['message'][_0x6072('0x1f')],_0x6072('0x21'))?'':_0x6072('0x22');_0xc6eb5b[_0x6072('0x1f')]+=this[_0x6072('0x1c')][_0x6072('0x1f')];}}if(this['channel']===_0x6072('0x23')){_0xc6eb5b['ChatWebsiteId']=this[_0x6072('0x24')]['id'];}else{_0xc6eb5b[_[_0x6072('0x25')](this['channel'])+'AccountId']=this[_0x6072('0x24')]['id'];}_0xc6eb5b[_[_0x6072('0x25')](this['channel'])+_0x6072('0x26')]=this[_0x6072('0x13')]['id'];var _0x2a3e5f=this[_0x6072('0x13')];if(rpc[this[_0x6072('0xc')]+'Message']){if(this['channel']===_0x6072('0xd')){_0xc6eb5b[_0x6072('0x27')]=this[_0x6072('0x1c')][_0x6072('0x28')];_0xc6eb5b[_0x6072('0x29')]=_0x6072('0x2a')+_['replace'](_0xc6eb5b['body'],'<div\x20id=\x22xm-mail-content\x22',_0x6072('0x2b'))+'</div>';_0xc6eb5b[_0x6072('0x2c')]={'Auto-Submitted':_0x6072('0x2d'),'X-Auto-Response-Suppress':_0x6072('0x2e'),'Precedence':_0x6072('0x2f')};return mailRpc[_0x6072('0x30')](this[_0x6072('0x24')]['smtpOptions'],_0xc6eb5b)[_0x6072('0x31')](function(_0x2ea446){logger[_0x6072('0x10')](_0x6072('0x32'),_0x4aa68e);_0xc6eb5b[_0x6072('0x28')]=_0x2ea446[_0x6072('0x1c')]['messageId'];return rpc[_0x19d8fa+_0x6072('0x33')][_0x6072('0x34')](_0xc6eb5b);})[_0x6072('0x31')](function(_0x5cdf58){logger['info'](_0x6072('0x15'),_0x4aa68e,JSON[_0x6072('0x35')](_0x5cdf58));})['catch'](function(_0x2948e0){logger[_0x6072('0x36')](_0x6072('0x37'),_0x4aa68e,JSON[_0x6072('0x35')](_0x2948e0));})[_0x6072('0x38')](function(){Promise[_0x6072('0x39')]()['then'](function(){if(_0x30b177[0x0]!=='2'||_0x2a3e5f[_0x6072('0x3a')])return;return rpc[_0x19d8fa+_0x6072('0x3b')][_0x6072('0x3c')](_0x2a3e5f['id'],{'autoreplyExecuted':!![]})['then'](function(_0x467a26){logger[_0x6072('0x10')](_0x6072('0x17'),_0x4aa68e,JSON[_0x6072('0x35')](_0x467a26));})[_0x6072('0x3d')](function(_0x2cff2a){logger[_0x6072('0x36')](_0x6072('0x3e'),_0x4aa68e,JSON['stringify'](_0x2cff2a));});})[_0x6072('0x31')](function(){_0xd1cab8[_0x6072('0x12')]();});});}else{return rpc[this[_0x6072('0xc')]+'Message'][_0x6072('0x34')](_0xc6eb5b)['then'](function(){logger[_0x6072('0x10')](_0x6072('0x15'),_0x4aa68e,_0xc6eb5b[_0x6072('0xe')]);})[_0x6072('0x3d')](function(_0x33e433){logger[_0x6072('0x36')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0x33e433));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x30b177[0x0]!=='2'||_0x2a3e5f['autoreplyExecuted'])return;return rpc[_0x19d8fa+_0x6072('0x3b')][_0x6072('0x3c')](_0x2a3e5f['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3f22cf){logger[_0x6072('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0x3f22cf));})['catch'](function(_0x5d172b){logger[_0x6072('0x36')](_0x6072('0x3e'),_0x4aa68e,JSON[_0x6072('0x35')](_0x5d172b));});})[_0x6072('0x31')](function(){_0xd1cab8['next']();});});}}}catch(_0xe43330){logger[_0x6072('0x36')]('[%s][AUTOREPLY]\x20%s',_0x4aa68e,JSON[_0x6072('0x35')](_0xe43330));_0xd1cab8[_0x6072('0x3f')]();}};};
\ No newline at end of file
index a69fb67..1366abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe59c=['../../rpc/whatsappInteraction','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','[%s][CLOSE]\x20%s','stringify','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction'];(function(_0x5509a8,_0xf56254){var _0x1a2c26=function(_0x3c0da2){while(--_0x3c0da2){_0x5509a8['push'](_0x5509a8['shift']());}};_0x1a2c26(++_0xf56254);}(_0xe59c,0x162));var _0xce59=function(_0x522bb4,_0x52dbf5){_0x522bb4=_0x522bb4-0x0;var _0x415bb5=_0xe59c[_0x522bb4];return _0x415bb5;};'use strict';var moment=require(_0xce59('0x0'));var logger=require(_0xce59('0x1'))(_0xce59('0x2'));var rpc={'chatInteraction':require(_0xce59('0x3')),'openchannelInteraction':require(_0xce59('0x4')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xce59('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xce59('0x6'))};exports['consequence']=function(_0x7a4ea7,_0x5b423c,_0x15e9c2,_0x1ef017){return function(_0x468bb4){try{logger[_0xce59('0x7')](_0xce59('0x8'),_0x7a4ea7,_0x5b423c[0x0]);var _0x1a4047={'closed':0x1,'closedAt':moment()[_0xce59('0x9')](_0xce59('0xa')),'closeReason':'system','disposition':_0x5b423c[0x0]};if(rpc[_0x1ef017[_0xce59('0xb')]+_0xce59('0xc')]){rpc[_0x1ef017[_0xce59('0xb')]+_0xce59('0xc')]['update'](_0x1ef017[_0xce59('0xd')]['id'],_0x1a4047)[_0xce59('0xe')](function(_0x7b7bb9){logger[_0xce59('0x7')](_0xce59('0xf'),_0x7a4ea7,_0x1ef017[_0xce59('0xd')]['id']);})[_0xce59('0x10')](function(_0x588a8d){logger['error'](_0xce59('0x11'),_0x7a4ea7,JSON[_0xce59('0x12')](_0x588a8d));})['finally'](function(){_0x468bb4[_0xce59('0x13')]();});}}catch(_0x28f1f9){logger['error'](_0xce59('0x11'),_0x7a4ea7,JSON[_0xce59('0x12')](_0x28f1f9));_0x468bb4[_0xce59('0x13')]();}};};
\ No newline at end of file
+var _0x7d74=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','info','[%s][CLOSE]\x20reason\x20%s'];(function(_0x320626,_0x3cc862){var _0x757d40=function(_0x282e60){while(--_0x282e60){_0x320626['push'](_0x320626['shift']());}};_0x757d40(++_0x3cc862);}(_0x7d74,0xe7));var _0x47d7=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x7d74[_0x1cc8fe];return _0x230054;};'use strict';var moment=require(_0x47d7('0x0'));var logger=require(_0x47d7('0x1'))(_0x47d7('0x2'));var rpc={'chatInteraction':require(_0x47d7('0x3')),'openchannelInteraction':require(_0x47d7('0x4')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x47d7('0x5')),'faxInteraction':require(_0x47d7('0x6')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x38fa3b,_0x59207c,_0x138481,_0x4e4f4b){return function(_0x1d7cf1){try{logger[_0x47d7('0x7')](_0x47d7('0x8'),_0x38fa3b,_0x59207c[0x0]);var _0x2dd9b2={'closed':0x1,'closedAt':moment()[_0x47d7('0x9')](_0x47d7('0xa')),'closeReason':_0x47d7('0xb'),'disposition':_0x59207c[0x0]};if(rpc[_0x4e4f4b[_0x47d7('0xc')]+_0x47d7('0xd')]){rpc[_0x4e4f4b['channel']+_0x47d7('0xd')][_0x47d7('0xe')](_0x4e4f4b['interaction']['id'],_0x2dd9b2)[_0x47d7('0xf')](function(_0x4e1c24){logger[_0x47d7('0x7')](_0x47d7('0x10'),_0x38fa3b,_0x4e4f4b[_0x47d7('0x11')]['id']);})[_0x47d7('0x12')](function(_0x42d3c5){logger[_0x47d7('0x13')](_0x47d7('0x14'),_0x38fa3b,JSON[_0x47d7('0x15')](_0x42d3c5));})[_0x47d7('0x16')](function(){_0x1d7cf1['stop']();});}}catch(_0x53cedc){logger['error'](_0x47d7('0x14'),_0x38fa3b,JSON['stringify'](_0x53cedc));_0x1d7cf1[_0x47d7('0x17')]();}};};
\ No newline at end of file
index b910d18..767b112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b2=['providerResponse','then','metadata','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','[%s][DIALOGFLOW]\x20%s','next','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','created','body','Message','create','catch','error','stringify','finally','info','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','dialogflow','result','fulfillment','speech','providerName'];(function(_0x5a0b2f,_0x5331af){var _0x4d9751=function(_0xfa210a){while(--_0xfa210a){_0x5a0b2f['push'](_0x5a0b2f['shift']());}};_0x4d9751(++_0x5331af);}(_0x14b2,0x1a1));var _0x214b=function(_0x2fc436,_0x8f3c7e){_0x2fc436=_0x2fc436-0x0;var _0x5de0da=_0x14b2[_0x2fc436];return _0x5de0da;};'use strict';var _=require(_0x214b('0x0'));var moment=require(_0x214b('0x1'));var apiai=require('apiai-promise');var md5=require(_0x214b('0x2'));var utils=require(_0x214b('0x3'));var logger=require(_0x214b('0x4'))(_0x214b('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x214b('0x6')),'mailMessage':require(_0x214b('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x214b('0x8'))};exports[_0x214b('0x9')]=function(_0x30867e,_0x3003ab){return function(_0x188bab){try{if(!_[_0x214b('0xa')](this['interaction'][_0x214b('0xb')])){logger['info'](_0x214b('0xc'),_0x30867e,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x188bab[_0x214b('0xd')]();}var _0x5256ad={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0x214b('0xe')),'direction':_0x214b('0xf')};if(this['channel']===_0x214b('0x10')||this[_0x214b('0x11')]===_0x214b('0x12')){_0x5256ad['phone']=this[_0x214b('0x13')]['phone'];}var _0x51b271=this[_0x214b('0x11')];if(_0x51b271===_0x214b('0x14')){_0x5256ad[_0x214b('0x15')]=this[_0x214b('0x16')]['id'];}else{_0x5256ad[_[_0x214b('0x17')](_0x51b271)+_0x214b('0x18')]=this['account']['id'];}_0x5256ad[_[_0x214b('0x17')](_0x51b271)+'InteractionId']=this[_0x214b('0x13')]['id'];if(this[_0x214b('0x13')][_0x214b('0x19')]){var _0x54b62e=_0x3003ab[0x2];if(!_['isEmpty'](_0x54b62e)){_0x5256ad[_0x214b('0x1a')]=utils['getMustacheRender'](_0x54b62e,this);return rpc[_0x51b271+_0x214b('0x1b')][_0x214b('0x1c')](_0x5256ad)['then'](function(_0x25e18a){logger['info'](_0x214b('0xc'),_0x30867e,_0x5256ad[_0x214b('0x1a')]);})[_0x214b('0x1d')](function(_0x4b0b9c){logger[_0x214b('0x1e')](_0x214b('0xc'),_0x30867e,JSON[_0x214b('0x1f')](_0x4b0b9c));})[_0x214b('0x20')](function(){logger[_0x214b('0x21')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x30867e);_0x188bab['stop']();});}else{logger[_0x214b('0x21')](_0x214b('0x22'),_0x30867e);_0x188bab[_0x214b('0x23')]();}}else{var _0x2ddfe4=this;var _0x4e31b6=apiai(_0x3003ab[0x0],{'language':_0x3003ab[0x1]||'en'});return _0x4e31b6[_0x214b('0x24')](this[_0x214b('0x25')][_0x214b('0x1a')],{'sessionId':md5(this[_0x214b('0x13')]['id'])})['then'](function(_0x36b7de){_0x2ddfe4[_0x214b('0x1a')][_0x214b('0x26')]=_0x36b7de;_0x5256ad[_0x214b('0x1a')]=_0x36b7de[_0x214b('0x27')][_0x214b('0x28')][_0x214b('0x29')];_0x5256ad[_0x214b('0x2a')]=_0x214b('0x26');_0x5256ad[_0x214b('0x2b')]=JSON[_0x214b('0x1f')](_0x36b7de);return rpc[_0x51b271+'Message']['create'](_0x5256ad)[_0x214b('0x2c')](function(_0x472d18){logger[_0x214b('0x21')](_0x214b('0xc'),_0x30867e,_0x5256ad['body']);if(_0x36b7de[_0x214b('0x27')][_0x214b('0x2d')]['endConversation']){_0x188bab['next']();}else{_0x188bab[_0x214b('0x23')]();}})[_0x214b('0x1d')](function(_0x2d7aea){logger['error'](_0x214b('0xc'),_0x30867e,JSON['stringify'](_0x2d7aea));_0x188bab['next']();});})[_0x214b('0x1d')](function(_0x361ed2){logger[_0x214b('0x1e')](_0x214b('0xc'),_0x30867e,_0x361ed2[_0x214b('0x25')]);_0x188bab[_0x214b('0xd')]();});}}catch(_0x351ac7){logger[_0x214b('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0x30867e,JSON['stringify'](_0x351ac7));_0x188bab[_0x214b('0x23')]();}};};
\ No newline at end of file
+var _0xbc48=['md5','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','InteractionId','body','getMustacheRender','Message','then','catch','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','result','fulfillment','providerName','create','endConversation','next','error','lodash','moment','apiai-promise'];(function(_0x328f1e,_0x5e9aa0){var _0xa51835=function(_0x385aeb){while(--_0x385aeb){_0x328f1e['push'](_0x328f1e['shift']());}};_0xa51835(++_0x5e9aa0);}(_0xbc48,0x111));var _0x8bc4=function(_0xbbf184,_0x44865b){_0xbbf184=_0xbbf184-0x0;var _0x5afcb0=_0xbc48[_0xbbf184];return _0x5afcb0;};'use strict';var _=require(_0x8bc4('0x0'));var moment=require(_0x8bc4('0x1'));var apiai=require(_0x8bc4('0x2'));var md5=require(_0x8bc4('0x3'));var utils=require('./utils');var logger=require(_0x8bc4('0x4'))(_0x8bc4('0x5'));var rpc={'chatMessage':require(_0x8bc4('0x6')),'openchannelMessage':require(_0x8bc4('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8bc4('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0xaaff2d,_0x5708fe){return function(_0x58df27){try{if(!_[_0x8bc4('0x9')](this['interaction'][_0x8bc4('0xa')])){logger[_0x8bc4('0xb')](_0x8bc4('0xc'),_0xaaff2d,_0x8bc4('0xd'));return _0x58df27['next']();}var _0x1595b2={'ContactId':this[_0x8bc4('0xe')]['id'],'sentAt':moment()[_0x8bc4('0xf')](_0x8bc4('0x10')),'direction':_0x8bc4('0x11')};if(this[_0x8bc4('0x12')]===_0x8bc4('0x13')||this[_0x8bc4('0x12')]===_0x8bc4('0x14')){_0x1595b2[_0x8bc4('0x15')]=this[_0x8bc4('0x16')][_0x8bc4('0x15')];}var _0x80c304=this[_0x8bc4('0x12')];if(_0x80c304===_0x8bc4('0x17')){_0x1595b2['ChatWebsiteId']=this[_0x8bc4('0x18')]['id'];}else{_0x1595b2[_[_0x8bc4('0x19')](_0x80c304)+_0x8bc4('0x1a')]=this[_0x8bc4('0x18')]['id'];}_0x1595b2[_[_0x8bc4('0x19')](_0x80c304)+_0x8bc4('0x1b')]=this['interaction']['id'];if(this['interaction']['created']){var _0x36714f=_0x5708fe[0x2];if(!_['isEmpty'](_0x36714f)){_0x1595b2[_0x8bc4('0x1c')]=utils[_0x8bc4('0x1d')](_0x36714f,this);return rpc[_0x80c304+_0x8bc4('0x1e')]['create'](_0x1595b2)[_0x8bc4('0x1f')](function(_0x968929){logger['info'](_0x8bc4('0xc'),_0xaaff2d,_0x1595b2['body']);})[_0x8bc4('0x20')](function(_0x54400a){logger['error'](_0x8bc4('0xc'),_0xaaff2d,JSON[_0x8bc4('0x21')](_0x54400a));})[_0x8bc4('0x22')](function(){logger[_0x8bc4('0xb')](_0x8bc4('0x23'),_0xaaff2d);_0x58df27[_0x8bc4('0x24')]();});}else{logger[_0x8bc4('0xb')](_0x8bc4('0x25'),_0xaaff2d);_0x58df27[_0x8bc4('0x24')]();}}else{var _0x3b402f=this;var _0x148fda=apiai(_0x5708fe[0x0],{'language':_0x5708fe[0x1]||'en'});return _0x148fda['textRequest'](this[_0x8bc4('0x26')][_0x8bc4('0x1c')],{'sessionId':md5(this[_0x8bc4('0x16')]['id'])})['then'](function(_0x327e90){_0x3b402f[_0x8bc4('0x1c')]['dialogflow']=_0x327e90;_0x1595b2[_0x8bc4('0x1c')]=_0x327e90[_0x8bc4('0x27')][_0x8bc4('0x28')]['speech'];_0x1595b2[_0x8bc4('0x29')]='dialogflow';_0x1595b2['providerResponse']=JSON[_0x8bc4('0x21')](_0x327e90);return rpc[_0x80c304+_0x8bc4('0x1e')][_0x8bc4('0x2a')](_0x1595b2)[_0x8bc4('0x1f')](function(_0x16c2a8){logger[_0x8bc4('0xb')](_0x8bc4('0xc'),_0xaaff2d,_0x1595b2[_0x8bc4('0x1c')]);if(_0x327e90['result']['metadata'][_0x8bc4('0x2b')]){_0x58df27[_0x8bc4('0x2c')]();}else{_0x58df27[_0x8bc4('0x24')]();}})[_0x8bc4('0x20')](function(_0x134760){logger[_0x8bc4('0x2d')]('[%s][DIALOGFLOW]\x20%s',_0xaaff2d,JSON[_0x8bc4('0x21')](_0x134760));_0x58df27[_0x8bc4('0x2c')]();});})[_0x8bc4('0x20')](function(_0x26452e){logger['error'](_0x8bc4('0xc'),_0xaaff2d,_0x26452e[_0x8bc4('0x26')]);_0x58df27[_0x8bc4('0x2c')]();});}}catch(_0x3af06f){logger[_0x8bc4('0x2d')]('[%s][DIALOGFLOW]\x20%s',_0xaaff2d,JSON[_0x8bc4('0x21')](_0x3af06f));_0x58df27['stop']();}};};
\ No newline at end of file
index d3c36cb..d373663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e40=['lodash','dialogflow','moment','bluebird','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','body','catch','stringify','consequence','isNil','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','out','channel','sms','whatsapp','phone','interaction','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','info','error','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','length','queryResult','diagnosticInfo','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','fields','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','providerName','dialogflowV2','providerResponse','fulfillmentText','all','stop','message'];(function(_0xfdcdb2,_0x16c473){var _0x1992cf=function(_0x375b9d){while(--_0x375b9d){_0xfdcdb2['push'](_0xfdcdb2['shift']());}};_0x1992cf(++_0x16c473);}(_0x5e40,0x1a4));var _0x05e4=function(_0x4fa0ea,_0x2cd534){_0x4fa0ea=_0x4fa0ea-0x0;var _0x51d027=_0x5e40[_0x4fa0ea];return _0x51d027;};'use strict';var _=require(_0x05e4('0x0'));var dialogflow=require(_0x05e4('0x1'));var md5=require('md5');var moment=require(_0x05e4('0x2'));var Promise=require(_0x05e4('0x3'));var logger=require(_0x05e4('0x4'))(_0x05e4('0x5'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x05e4('0x6')),'mailMessage':require(_0x05e4('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x05e4('0x8')),'whatsappMessage':require(_0x05e4('0x9'))};function createMessage(_0x5e1cb5,_0x4f44be,_0x3eec1d,_0x44e57b){return new Promise(function(_0x33625f,_0x2c7e9f){var _0x2e6ebb=_[_0x05e4('0xa')](_0x3eec1d);_0x2e6ebb['body']=_0x44e57b;return rpc[_0x4f44be+_0x05e4('0xb')][_0x05e4('0xc')](_0x2e6ebb)[_0x05e4('0xd')](function(){logger['info'](_0x05e4('0xe'),_0x5e1cb5,_0x2e6ebb[_0x05e4('0xf')]);_0x33625f();})[_0x05e4('0x10')](function(_0x5060f5){logger['error'](_0x05e4('0xe'),_0x5e1cb5,JSON[_0x05e4('0x11')](_0x5060f5));_0x2c7e9f(_0x5060f5);});});}exports[_0x05e4('0x12')]=function(_0x2b246a,_0x22c007){return function(_0x2eceec){try{if(!_[_0x05e4('0x13')](this['interaction']['UserId'])){logger['info'](_0x05e4('0xe'),_0x2b246a,_0x05e4('0x14'));return _0x2eceec[_0x05e4('0x15')]();}var _0x2b5f17={'ContactId':this[_0x05e4('0x16')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x05e4('0x17')};if(this[_0x05e4('0x18')]===_0x05e4('0x19')||this[_0x05e4('0x18')]===_0x05e4('0x1a')){_0x2b5f17[_0x05e4('0x1b')]=this[_0x05e4('0x1c')]['phone'];}var _0x3f1d42=this['channel'];if(_0x3f1d42==='chat'){_0x2b5f17[_0x05e4('0x1d')]=this[_0x05e4('0x1e')]['id'];}else{_0x2b5f17[_[_0x05e4('0x1f')](_0x3f1d42)+_0x05e4('0x20')]=this['account']['id'];}_0x2b5f17[_[_0x05e4('0x1f')](_0x3f1d42)+_0x05e4('0x21')]=this['interaction']['id'];if(this['interaction']['created']){var _0x5c43b9=_0x22c007[0x4];if(!_[_0x05e4('0x22')](_0x5c43b9)){_0x2b5f17['body']=utils[_0x05e4('0x23')](_0x5c43b9,this);return rpc[_0x3f1d42+_0x05e4('0xb')][_0x05e4('0xc')](_0x2b5f17)[_0x05e4('0xd')](function(_0x5ac109){logger[_0x05e4('0x24')]('[%s][DIALOGFLOWV2]\x20%s',_0x2b246a,_0x2b5f17[_0x05e4('0xf')]);})['catch'](function(_0xec62e5){logger[_0x05e4('0x25')](_0x05e4('0xe'),_0x2b246a,JSON[_0x05e4('0x11')](_0xec62e5));})[_0x05e4('0x26')](function(){logger[_0x05e4('0x24')](_0x05e4('0x27'),_0x2b246a);_0x2eceec['stop']();});}else{logger['info'](_0x05e4('0x28'),_0x2b246a);_0x2eceec['stop']();}}else{var _0x4249ac=this;var _0x1bc5e2=_0x22c007[0x2][_0x05e4('0x29')](/\\n/g,'\x0a');var _0x4f8880={'credentials':{'private_key':_0x1bc5e2,'client_email':_0x22c007[0x1]}};var _0x1a684e=new dialogflow[(_0x05e4('0x2a'))](_0x4f8880);var _0x13cae4=_0x1a684e[_0x05e4('0x2b')](_0x22c007[0x0],md5(_0x4249ac['interaction']['id']));var _0x332bcf={'session':_0x13cae4,'queryInput':{'text':{'text':_0x4249ac['message'][_0x05e4('0xf')],'languageCode':_0x22c007[0x3]||'en'}}};return _0x1a684e['detectIntent'](_0x332bcf)['then'](function(_0x2b1ccc){if(_0x2b1ccc&&_0x2b1ccc[_0x05e4('0x2c')]){_0x4249ac['body']['dialogflowV2']=_0x2b1ccc;var _0x5a85cd=_0x2b1ccc[0x0];var _0x2bd6e7=_0x5a85cd[_0x05e4('0x2d')]['diagnosticInfo']&&_0x5a85cd[_0x05e4('0x2d')][_0x05e4('0x2e')]['fields']?_0x5a85cd[_0x05e4('0x2d')][_0x05e4('0x2e')]['fields'][_0x05e4('0x2f')][_0x05e4('0x30')]:![];_0x4249ac['body'][_0x05e4('0x31')]=_0x5a85cd[_0x05e4('0x2d')][_0x05e4('0x32')];_0x4249ac['body'][_0x05e4('0x33')]=_0x5a85cd[_0x05e4('0x2d')][_0x05e4('0x34')];_0x4249ac[_0x05e4('0xf')][_0x05e4('0x35')]=_0x5a85cd['queryResult'][_0x05e4('0x2e')]&&_0x5a85cd['queryResult'][_0x05e4('0x2e')][_0x05e4('0x36')]?_0x5a85cd[_0x05e4('0x2d')]['diagnosticInfo']['fields'][_0x05e4('0x2f')][_0x05e4('0x30')]:![];_0x4249ac['body'][_0x05e4('0x37')]=_0x5a85cd[_0x05e4('0x2d')][_0x05e4('0x38')]['name'];_0x4249ac[_0x05e4('0xf')][_0x05e4('0x39')]=_0x5a85cd['queryResult'][_0x05e4('0x38')][_0x05e4('0x3a')];_0x4249ac[_0x05e4('0xf')][_0x05e4('0x3b')]=_0x5a85cd[_0x05e4('0x2d')]['intent']['isFallback'];_0x4249ac[_0x05e4('0xf')][_0x05e4('0x3c')]=_0x5a85cd[_0x05e4('0x2d')]['languageCode'];_0x4249ac['body'][_0x05e4('0x3d')]=_0x5a85cd[_0x05e4('0x2d')]['queryText'];_0x4249ac['body'][_0x05e4('0x3e')]=_0x5a85cd[_0x05e4('0x2d')]['intentDetectionConfidence'];_0x2b5f17[_0x05e4('0x3f')]=_0x05e4('0x40');_0x2b5f17[_0x05e4('0x41')]=JSON[_0x05e4('0x11')](_0x2b1ccc);var _0x4a09c3=[];for(var _0x2a9c7c=0x0;_0x2a9c7c<_0x2b1ccc[_0x05e4('0x2c')];_0x2a9c7c++){var _0x18cd8f=_0x2b1ccc[_0x2a9c7c];if(_0x18cd8f&&_0x18cd8f[_0x05e4('0x2d')]&&_0x18cd8f['queryResult'][_0x05e4('0x42')]){_0x4a09c3['push'](createMessage(_0x2b246a,_0x3f1d42,_0x2b5f17,_0x18cd8f[_0x05e4('0x2d')][_0x05e4('0x42')]));}}return Promise[_0x05e4('0x43')](_0x4a09c3)['then'](function(){if(_0x2bd6e7){_0x2eceec[_0x05e4('0x15')]();}else{_0x2eceec[_0x05e4('0x44')]();}})[_0x05e4('0x10')](function(_0x50defb){logger[_0x05e4('0x25')](_0x05e4('0xe'),_0x2b246a,JSON[_0x05e4('0x11')](_0x50defb));_0x2eceec[_0x05e4('0x15')]();});}})[_0x05e4('0x10')](function(_0x2353aa){logger[_0x05e4('0x25')](_0x05e4('0xe'),_0x2b246a,_0x2353aa[_0x05e4('0x45')]);_0x2eceec['next']();});}}catch(_0x2c2762){logger[_0x05e4('0x25')](_0x05e4('0xe'),_0x2b246a,JSON[_0x05e4('0x11')](_0x2c2762));_0x2eceec[_0x05e4('0x44')]();}};};
\ No newline at end of file
+var _0x5e87=['../../rpc/whatsappMessage','clone','body','Message','create','then','info','catch','error','stringify','isNil','[%s][DIALOGFLOWV2]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','getMustacheRender','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','message','dialogflow','md5','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x5e87,0x1da));var _0x75e8=function(_0x51e288,_0x3976fc){_0x51e288=_0x51e288-0x0;var _0x3fdf2c=_0x5e87[_0x51e288];return _0x3fdf2c;};'use strict';var _=require('lodash');var dialogflow=require(_0x75e8('0x0'));var md5=require(_0x75e8('0x1'));var moment=require('moment');var Promise=require(_0x75e8('0x2'));var logger=require(_0x75e8('0x3'))(_0x75e8('0x4'));var utils=require(_0x75e8('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x75e8('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x75e8('0x7')),'faxMessage':require(_0x75e8('0x8')),'whatsappMessage':require(_0x75e8('0x9'))};function createMessage(_0x21505d,_0x21aef8,_0x242bcd,_0x4f2fae){return new Promise(function(_0x4ac9ec,_0x5b6b94){var _0x385f78=_[_0x75e8('0xa')](_0x242bcd);_0x385f78[_0x75e8('0xb')]=_0x4f2fae;return rpc[_0x21aef8+_0x75e8('0xc')][_0x75e8('0xd')](_0x385f78)[_0x75e8('0xe')](function(){logger[_0x75e8('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21505d,_0x385f78[_0x75e8('0xb')]);_0x4ac9ec();})[_0x75e8('0x10')](function(_0x5d7d6b){logger[_0x75e8('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x21505d,JSON[_0x75e8('0x12')](_0x5d7d6b));_0x5b6b94(_0x5d7d6b);});});}exports['consequence']=function(_0x47f102,_0x55ef17){return function(_0x173133){try{if(!_[_0x75e8('0x13')](this['interaction']['UserId'])){logger[_0x75e8('0xf')](_0x75e8('0x14'),_0x47f102,_0x75e8('0x15'));return _0x173133[_0x75e8('0x16')]();}var _0x112433={'ContactId':this[_0x75e8('0x17')]['id'],'sentAt':moment()[_0x75e8('0x18')](_0x75e8('0x19')),'direction':'out'};if(this[_0x75e8('0x1a')]==='sms'||this[_0x75e8('0x1a')]===_0x75e8('0x1b')){_0x112433[_0x75e8('0x1c')]=this['interaction'][_0x75e8('0x1c')];}var _0x5c0a96=this[_0x75e8('0x1a')];if(_0x5c0a96===_0x75e8('0x1d')){_0x112433[_0x75e8('0x1e')]=this[_0x75e8('0x1f')]['id'];}else{_0x112433[_[_0x75e8('0x20')](_0x5c0a96)+_0x75e8('0x21')]=this[_0x75e8('0x1f')]['id'];}_0x112433[_['upperFirst'](_0x5c0a96)+_0x75e8('0x22')]=this['interaction']['id'];if(this[_0x75e8('0x23')]['created']){var _0x4ca30b=_0x55ef17[0x4];if(!_['isEmpty'](_0x4ca30b)){_0x112433[_0x75e8('0xb')]=utils[_0x75e8('0x24')](_0x4ca30b,this);return rpc[_0x5c0a96+_0x75e8('0xc')][_0x75e8('0xd')](_0x112433)[_0x75e8('0xe')](function(_0x5211fe){logger['info'](_0x75e8('0x14'),_0x47f102,_0x112433[_0x75e8('0xb')]);})[_0x75e8('0x10')](function(_0x1210af){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON[_0x75e8('0x12')](_0x1210af));})['finally'](function(){logger[_0x75e8('0xf')](_0x75e8('0x25'),_0x47f102);_0x173133[_0x75e8('0x26')]();});}else{logger['info'](_0x75e8('0x27'),_0x47f102);_0x173133['stop']();}}else{var _0x5805fc=this;var _0x4d934c=_0x55ef17[0x2][_0x75e8('0x28')](/\\n/g,'\x0a');var _0x429ac4={'credentials':{'private_key':_0x4d934c,'client_email':_0x55ef17[0x1]}};var _0x593f7c=new dialogflow[(_0x75e8('0x29'))](_0x429ac4);var _0x1de92e=_0x593f7c[_0x75e8('0x2a')](_0x55ef17[0x0],md5(_0x5805fc[_0x75e8('0x23')]['id']));var _0x50d826={'session':_0x1de92e,'queryInput':{'text':{'text':_0x5805fc['message'][_0x75e8('0xb')],'languageCode':_0x55ef17[0x3]||'en'}}};return _0x593f7c['detectIntent'](_0x50d826)['then'](function(_0x565d3e){if(_0x565d3e&&_0x565d3e[_0x75e8('0x2b')]){_0x5805fc['body'][_0x75e8('0x2c')]=_0x565d3e;var _0x5a4822=_0x565d3e[0x0];var _0x3ff50e=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')]&&_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')][_0x75e8('0x2f')]?_0x5a4822['queryResult'][_0x75e8('0x2e')][_0x75e8('0x2f')][_0x75e8('0x30')][_0x75e8('0x31')]:![];_0x5805fc[_0x75e8('0xb')]['DIALOGFLOWV2_ACTION']=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x32')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x33')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x34')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x35')]=_0x5a4822['queryResult'][_0x75e8('0x2e')]&&_0x5a4822['queryResult']['diagnosticInfo']['fields']?_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x2e')][_0x75e8('0x2f')][_0x75e8('0x30')][_0x75e8('0x31')]:![];_0x5805fc['body']['DIALOGFLOWV2_INTENTNAME']=_0x5a4822['queryResult'][_0x75e8('0x36')][_0x75e8('0x37')];_0x5805fc[_0x75e8('0xb')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5a4822[_0x75e8('0x2d')]['intent'][_0x75e8('0x38')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x39')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x36')][_0x75e8('0x3a')];_0x5805fc['body'][_0x75e8('0x3b')]=_0x5a4822['queryResult'][_0x75e8('0x3c')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x3d')]=_0x5a4822['queryResult'][_0x75e8('0x3e')];_0x5805fc[_0x75e8('0xb')][_0x75e8('0x3f')]=_0x5a4822[_0x75e8('0x2d')][_0x75e8('0x40')];_0x112433[_0x75e8('0x41')]=_0x75e8('0x2c');_0x112433['providerResponse']=JSON[_0x75e8('0x12')](_0x565d3e);var _0x37a79f=[];for(var _0x4ebefb=0x0;_0x4ebefb<_0x565d3e[_0x75e8('0x2b')];_0x4ebefb++){var _0x5c9004=_0x565d3e[_0x4ebefb];if(_0x5c9004&&_0x5c9004['queryResult']&&_0x5c9004['queryResult'][_0x75e8('0x42')]){_0x37a79f[_0x75e8('0x43')](createMessage(_0x47f102,_0x5c0a96,_0x112433,_0x5c9004[_0x75e8('0x2d')][_0x75e8('0x42')]));}}return Promise['all'](_0x37a79f)['then'](function(){if(_0x3ff50e){_0x173133[_0x75e8('0x16')]();}else{_0x173133[_0x75e8('0x26')]();}})[_0x75e8('0x10')](function(_0x4a8de9){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON[_0x75e8('0x12')](_0x4a8de9));_0x173133[_0x75e8('0x16')]();});}})[_0x75e8('0x10')](function(_0x2672d8){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,_0x2672d8[_0x75e8('0x44')]);_0x173133['next']();});}}catch(_0x311d67){logger[_0x75e8('0x11')](_0x75e8('0x14'),_0x47f102,JSON['stringify'](_0x311d67));_0x173133[_0x75e8('0x26')]();}};};
\ No newline at end of file
index e36f9a2..75e3662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa641=['error','[%s][GOTOIF]\x20%s','stringify','validate','lodash','html-to-text','./utils','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','consequence','fromString','getMustacheRender','length','map','message','join','condition','priorityTrue','priorityFalse','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop'];(function(_0x42e371,_0x2bb2e2){var _0x187c44=function(_0x37f8a3){while(--_0x37f8a3){_0x42e371['push'](_0x42e371['shift']());}};_0x187c44(++_0x2bb2e2);}(_0xa641,0x17d));var _0x1a64=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xa641[_0x819464];return _0x49dcc0;};'use strict';var schema=require(_0x1a64('0x0'));var _=require(_0x1a64('0x1'));var htmlToText=require(_0x1a64('0x2'));var utils=require(_0x1a64('0x3'));var logger=require('../../../../config/logger')(_0x1a64('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x1a64('0x5')},'priorityTrue':{'type':_0x1a64('0x6'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x1a64('0x6'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0x1a64('0x7')]=function(_0x466f9d,_0x1d9e61){return function(_0x1e94b3){try{var _0x5a805c={'condition':htmlToText[_0x1a64('0x8')](utils[_0x1a64('0x9')](_0x1d9e61[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1d9e61[0x1],'priorityFalse':_0x1d9e61[0x2]};var _0x3b2912=gotoif[_0x1a64('0x0')](_0x5a805c,{'typecast':!![]});if(_0x3b2912[_0x1a64('0xa')]){logger['error']('[%s][GOTOIF]\x20%s',_0x466f9d,_[_0x1a64('0xb')](_0x3b2912,_0x1a64('0xc'))[_0x1a64('0xd')](',\x20'));_0x1e94b3['stop']();}else{try{var _0x527312=eval('('+_0x5a805c[_0x1a64('0xe')]+')');var _0x186e12=_0x527312?_0x5a805c[_0x1a64('0xf')]:_0x5a805c[_0x1a64('0x10')];logger[_0x1a64('0x11')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x466f9d,_0x5a805c[_0x1a64('0xe')],_0x527312,_0x186e12||_0x1a64('0x12'));if(_0x186e12){var _0x59d22d=_[_0x1a64('0x13')](_0x1e94b3[_0x1a64('0x14')](),{'p':_0x186e12});if(_0x59d22d>=0x0){logger[_0x1a64('0x11')](_0x1a64('0x15'),_0x466f9d,_0x186e12||'next',_0x59d22d);_0x1e94b3[_0x1a64('0x12')](_0x59d22d);}else{logger['info'](_0x1a64('0x16'),_0x466f9d,_0x186e12||'next');_0x1e94b3[_0x1a64('0x17')]();}}else{_0x1e94b3[_0x1a64('0x12')]();}}catch(_0x252cf2){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x466f9d,_0x252cf2[_0x1a64('0xc')]);_0x1e94b3['stop']();}}}catch(_0xb390be){logger[_0x1a64('0x18')](_0x1a64('0x19'),_0x466f9d,JSON[_0x1a64('0x1a')](_0xb390be));_0x1e94b3['stop']();}};};
\ No newline at end of file
+var _0xf747=['fromString','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','lodash','html-to-text','./utils','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence'];(function(_0x12a528,_0x278c6c){var _0xad3b0c=function(_0x29a709){while(--_0x29a709){_0x12a528['push'](_0x12a528['shift']());}};_0xad3b0c(++_0x278c6c);}(_0xf747,0x170));var _0x7f74=function(_0x239812,_0x5ac3c1){_0x239812=_0x239812-0x0;var _0x1a9893=_0xf747[_0x239812];return _0x1a9893;};'use strict';var schema=require('validate');var _=require(_0x7f74('0x0'));var htmlToText=require(_0x7f74('0x1'));var utils=require(_0x7f74('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x7f74('0x3'),'required':!![],'message':_0x7f74('0x4')},'priorityTrue':{'type':'number','message':_0x7f74('0x5')},'priorityFalse':{'type':_0x7f74('0x6'),'message':_0x7f74('0x7')}});exports[_0x7f74('0x8')]=function(_0x11f1c4,_0xc29a5a){return function(_0x4aab05){try{var _0x5ea02d={'condition':htmlToText[_0x7f74('0x9')](utils['getMustacheRender'](_0xc29a5a[0x0],this),{'wordwrap':![]})[_0x7f74('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0xc29a5a[0x1],'priorityFalse':_0xc29a5a[0x2]};var _0x18d53c=gotoif['validate'](_0x5ea02d,{'typecast':!![]});if(_0x18d53c[_0x7f74('0xb')]){logger[_0x7f74('0xc')](_0x7f74('0xd'),_0x11f1c4,_[_0x7f74('0xe')](_0x18d53c,_0x7f74('0xf'))[_0x7f74('0x10')](',\x20'));_0x4aab05[_0x7f74('0x11')]();}else{try{var _0x419bc0=eval('('+_0x5ea02d[_0x7f74('0x12')]+')');var _0x2c6d16=_0x419bc0?_0x5ea02d[_0x7f74('0x13')]:_0x5ea02d[_0x7f74('0x14')];logger[_0x7f74('0x15')](_0x7f74('0x16'),_0x11f1c4,_0x5ea02d[_0x7f74('0x12')],_0x419bc0,_0x2c6d16||_0x7f74('0x17'));if(_0x2c6d16){var _0x5ba819=_[_0x7f74('0x18')](_0x4aab05[_0x7f74('0x19')](),{'p':_0x2c6d16});if(_0x5ba819>=0x0){logger[_0x7f74('0x15')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x11f1c4,_0x2c6d16||'next',_0x5ba819);_0x4aab05[_0x7f74('0x17')](_0x5ba819);}else{logger[_0x7f74('0x15')](_0x7f74('0x1a'),_0x11f1c4,_0x2c6d16||_0x7f74('0x17'));_0x4aab05[_0x7f74('0x11')]();}}else{_0x4aab05['next']();}}catch(_0x20e4e4){logger[_0x7f74('0xc')](_0x7f74('0x1b'),_0x11f1c4,_0x20e4e4['message']);_0x4aab05[_0x7f74('0x11')]();}}}catch(_0x49108d){logger['error'](_0x7f74('0xd'),_0x11f1c4,JSON[_0x7f74('0x1c')](_0x49108d));_0x4aab05[_0x7f74('0x11')]();}};};
\ No newline at end of file
index 1a46e09..0559257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a65=['join','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','validate','error','[%s][GOTOP]\x20%s','map','message'];(function(_0x240261,_0x4fe66c){var _0x45c332=function(_0x4f367a){while(--_0x4f367a){_0x240261['push'](_0x240261['shift']());}};_0x45c332(++_0x4fe66c);}(_0x5a65,0x6e));var _0x55a6=function(_0x3381dd,_0x4d3943){_0x3381dd=_0x3381dd-0x0;var _0x57b625=_0x5a65[_0x3381dd];return _0x57b625;};'use strict';var schema=require('validate');var _=require('lodash');var logger=require(_0x55a6('0x0'))(_0x55a6('0x1'));var gotop=schema({'priority':{'type':_0x55a6('0x2'),'required':!![],'message':_0x55a6('0x3')}});exports[_0x55a6('0x4')]=function(_0x4f4ed5,_0x3cd208){return function(_0x3e0f11){try{var _0x59e836={'priority':_0x3cd208[0x0]};var _0x43367a=gotop[_0x55a6('0x5')](_0x59e836,{'typecast':!![]});if(_0x43367a['length']){logger[_0x55a6('0x6')](_0x55a6('0x7'),_0x4f4ed5,_[_0x55a6('0x8')](_0x43367a,_0x55a6('0x9'))[_0x55a6('0xa')](',\x20'));_0x3e0f11['stop']();}else{logger['info'](_0x55a6('0xb'),_0x4f4ed5,_0x59e836[_0x55a6('0xc')]);if(_0x59e836[_0x55a6('0xc')]){var _0x3f2d3e=_[_0x55a6('0xd')](_0x3e0f11[_0x55a6('0xe')](),{'p':_0x59e836[_0x55a6('0xc')]});if(_0x3f2d3e>=0x0){logger['info'](_0x55a6('0xf'),_0x4f4ed5,_0x59e836[_0x55a6('0xc')]||_0x55a6('0x10'),_0x3f2d3e);_0x3e0f11[_0x55a6('0x10')](_0x3f2d3e);}else{logger['info'](_0x55a6('0x11'),_0x4f4ed5,_0x59e836[_0x55a6('0xc')]||_0x55a6('0x10'));_0x3e0f11[_0x55a6('0x12')]();}}else{_0x3e0f11[_0x55a6('0x10')]();}}}catch(_0x465438){logger['error']('[%s][GOTOP]\x20%s',_0x4f4ed5,JSON[_0x55a6('0x13')](_0x465438));_0x3e0f11[_0x55a6('0x12')]();}};};
\ No newline at end of file
+var _0x401f=['stop','info','[%s][GOTOP]\x20priority\x20%s','rules','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','join'];(function(_0x4ce8a4,_0x40c3aa){var _0x4200bb=function(_0x225fe9){while(--_0x225fe9){_0x4ce8a4['push'](_0x4ce8a4['shift']());}};_0x4200bb(++_0x40c3aa);}(_0x401f,0x1cb));var _0xf401=function(_0x2a5390,_0x503f73){_0x2a5390=_0x2a5390-0x0;var _0x585231=_0x401f[_0x2a5390];return _0x585231;};'use strict';var schema=require('validate');var _=require(_0xf401('0x0'));var logger=require(_0xf401('0x1'))(_0xf401('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xf401('0x3')}});exports['consequence']=function(_0xed33c7,_0x3cd1bf){return function(_0x356e31){try{var _0x163614={'priority':_0x3cd1bf[0x0]};var _0x334c4b=gotop[_0xf401('0x4')](_0x163614,{'typecast':!![]});if(_0x334c4b[_0xf401('0x5')]){logger[_0xf401('0x6')](_0xf401('0x7'),_0xed33c7,_['map'](_0x334c4b,'message')[_0xf401('0x8')](',\x20'));_0x356e31[_0xf401('0x9')]();}else{logger[_0xf401('0xa')](_0xf401('0xb'),_0xed33c7,_0x163614['priority']);if(_0x163614['priority']){var _0x3956c6=_['findIndex'](_0x356e31[_0xf401('0xc')](),{'p':_0x163614[_0xf401('0xd')]});if(_0x3956c6>=0x0){logger[_0xf401('0xa')](_0xf401('0xe'),_0xed33c7,_0x163614[_0xf401('0xd')]||_0xf401('0xf'),_0x3956c6);_0x356e31['next'](_0x3956c6);}else{logger[_0xf401('0xa')](_0xf401('0x10'),_0xed33c7,_0x163614['priority']||'next');_0x356e31[_0xf401('0x9')]();}}else{_0x356e31[_0xf401('0xf')]();}}}catch(_0xc8b4a8){logger[_0xf401('0x6')](_0xf401('0x7'),_0xed33c7,JSON[_0xf401('0x11')](_0xc8b4a8));_0x356e31[_0xf401('0x9')]();}};};
\ No newline at end of file
index 698ed80..1a4795b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccd7=['ChatWebsiteId','upperFirst','channel','account','Message','then','info','[%s][MESSAGE]\x20%s','body','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','contact'];(function(_0x5e7a7b,_0x2990dc){var _0x4268eb=function(_0xd49d6c){while(--_0xd49d6c){_0x5e7a7b['push'](_0x5e7a7b['shift']());}};_0x4268eb(++_0x2990dc);}(_0xccd7,0x185));var _0x7ccd=function(_0x434783,_0xff395d){_0x434783=_0x434783-0x0;var _0x13efcf=_0xccd7[_0x434783];return _0x13efcf;};'use strict';var _=require(_0x7ccd('0x0'));var utils=require(_0x7ccd('0x1'));var logger=require(_0x7ccd('0x2'))(_0x7ccd('0x3'));var rpc={'chatMessage':require(_0x7ccd('0x4')),'openchannelMessage':require(_0x7ccd('0x5')),'mailMessage':require(_0x7ccd('0x6')),'smsMessage':require(_0x7ccd('0x7')),'faxMessage':require(_0x7ccd('0x8')),'whatsappMessage':require(_0x7ccd('0x9'))};exports['consequence']=function(_0x50313f,_0x165799){return function(_0x5c1788){try{var _0x34ea24={'body':utils['getMustacheRender'](_0x165799[0x0],this),'ContactId':this[_0x7ccd('0xa')]['id']};if(this['channel']==='chat'){_0x34ea24[_0x7ccd('0xb')]=this['account']['id'];}else{_0x34ea24[_[_0x7ccd('0xc')](this[_0x7ccd('0xd')])+'AccountId']=this[_0x7ccd('0xe')]['id'];}_0x34ea24[_[_0x7ccd('0xc')](this[_0x7ccd('0xd')])+'InteractionId']=this['interaction']['id'];if(rpc[this[_0x7ccd('0xd')]+'Message']){return rpc[this[_0x7ccd('0xd')]+_0x7ccd('0xf')]['create'](_0x34ea24)[_0x7ccd('0x10')](function(_0x587169){logger[_0x7ccd('0x11')](_0x7ccd('0x12'),_0x50313f,_0x34ea24[_0x7ccd('0x13')]);_0x5c1788[_0x7ccd('0x14')]();})[_0x7ccd('0x15')](function(_0x65ee4a){logger['error'](_0x7ccd('0x12'),_0x50313f,JSON[_0x7ccd('0x16')](_0x65ee4a));_0x5c1788[_0x7ccd('0x17')]();});}}catch(_0x1ae41b){logger[_0x7ccd('0x18')](_0x7ccd('0x12'),_0x50313f,JSON[_0x7ccd('0x16')](_0x1ae41b));_0x5c1788[_0x7ccd('0x17')]();}};};
\ No newline at end of file
+var _0x3a6d=['ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','info','[%s][MESSAGE]\x20%s','body','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat'];(function(_0x46b3d6,_0x4b519e){var _0x77b4b0=function(_0x53ae75){while(--_0x53ae75){_0x46b3d6['push'](_0x46b3d6['shift']());}};_0x77b4b0(++_0x4b519e);}(_0x3a6d,0x196));var _0xd3a6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3a6d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd3a6('0x0'));var utils=require(_0xd3a6('0x1'));var logger=require(_0xd3a6('0x2'))(_0xd3a6('0x3'));var rpc={'chatMessage':require(_0xd3a6('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xd3a6('0x5')),'smsMessage':require(_0xd3a6('0x6')),'faxMessage':require(_0xd3a6('0x7')),'whatsappMessage':require(_0xd3a6('0x8'))};exports[_0xd3a6('0x9')]=function(_0x9abfad,_0x292432){return function(_0x496461){try{var _0x301161={'body':utils[_0xd3a6('0xa')](_0x292432[0x0],this),'ContactId':this[_0xd3a6('0xb')]['id']};if(this[_0xd3a6('0xc')]===_0xd3a6('0xd')){_0x301161[_0xd3a6('0xe')]=this[_0xd3a6('0xf')]['id'];}else{_0x301161[_[_0xd3a6('0x10')](this[_0xd3a6('0xc')])+'AccountId']=this[_0xd3a6('0xf')]['id'];}_0x301161[_[_0xd3a6('0x10')](this[_0xd3a6('0xc')])+_0xd3a6('0x11')]=this[_0xd3a6('0x12')]['id'];if(rpc[this['channel']+_0xd3a6('0x13')]){return rpc[this[_0xd3a6('0xc')]+'Message']['create'](_0x301161)['then'](function(_0x5f1d8b){logger[_0xd3a6('0x14')](_0xd3a6('0x15'),_0x9abfad,_0x301161[_0xd3a6('0x16')]);_0x496461[_0xd3a6('0x17')]();})[_0xd3a6('0x18')](function(_0x3caa07){logger['error'](_0xd3a6('0x15'),_0x9abfad,JSON[_0xd3a6('0x19')](_0x3caa07));_0x496461[_0xd3a6('0x1a')]();});}}catch(_0x403699){logger[_0xd3a6('0x1b')]('[%s][MESSAGE]\x20%s',_0x9abfad,JSON[_0xd3a6('0x19')](_0x403699));_0x496461[_0xd3a6('0x1a')]();}};};
\ No newline at end of file
index 0fd8814..698caf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab0=['[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','./utils','../../../../config/logger','routing'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbab0,0xdd));var _0x0bab=function(_0x3de62a,_0x55ce73){_0x3de62a=_0x3de62a-0x0;var _0x2ee39a=_0xbab0[_0x3de62a];return _0x2ee39a;};'use strict';var utils=require(_0x0bab('0x0'));var logger=require(_0x0bab('0x1'))(_0x0bab('0x2'));exports['consequence']=function(_0x42000c,_0x4b37f0){return function(_0x2eb48c){try{logger['info'](_0x0bab('0x3'),_0x42000c,utils[_0x0bab('0x4')](_0x4b37f0[0x0],this));_0x2eb48c[_0x0bab('0x5')]();}catch(_0x4b7cdd){logger[_0x0bab('0x6')]('[%s][NOOP]\x20%s',_0x42000c,JSON['stringify'](_0x4b7cdd));_0x2eb48c[_0x0bab('0x7')]();}};};
\ No newline at end of file
+var _0xc773=['./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop'];(function(_0xb7368b,_0xf11033){var _0x37d43b=function(_0x4562ed){while(--_0x4562ed){_0xb7368b['push'](_0xb7368b['shift']());}};_0x37d43b(++_0xf11033);}(_0xc773,0xa8));var _0x3c77=function(_0x26d503,_0x44dba7){_0x26d503=_0x26d503-0x0;var _0xcf4073=_0xc773[_0x26d503];return _0xcf4073;};'use strict';var utils=require(_0x3c77('0x0'));var logger=require(_0x3c77('0x1'))('routing');exports['consequence']=function(_0x2c9463,_0x1e932c){return function(_0x570cec){try{logger[_0x3c77('0x2')](_0x3c77('0x3'),_0x2c9463,utils[_0x3c77('0x4')](_0x1e932c[0x0],this));_0x570cec[_0x3c77('0x5')]();}catch(_0x683a51){logger[_0x3c77('0x6')]('[%s][NOOP]\x20%s',_0x2c9463,JSON['stringify'](_0x683a51));_0x570cec[_0x3c77('0x7')]();}};};
\ No newline at end of file
index ca72943..b4d3db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd666=['[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','routing','redis','localhost','queue_id','account','queue','from','joinAt','clone','push','InteractionId','format','%sQueuesWaitingInteractions','%s_queue_waiting_interaction:%s','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','list','upperFirst','QueueId','channel','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','timeout','[%s][END:QUEUE][NAME:%s]','update\x20queue\x20report','toLowerCase','consequence','length','map','find','Queues','qtimeout','rules'];(function(_0x5d1217,_0xaeae57){var _0x3e05a4=function(_0x5f0336){while(--_0x5f0336){_0x5d1217['push'](_0x5d1217['shift']());}};_0x3e05a4(++_0xaeae57);}(_0xd666,0x126));var _0x6d66=function(_0x5a06f8,_0x1ca6ae){_0x5a06f8=_0x5a06f8-0x0;var _0x5695ae=_0xd666[_0x5a06f8];return _0x5695ae;};'use strict';var schema=require(_0x6d66('0x0'));var _=require(_0x6d66('0x1'));var util=require(_0x6d66('0x2'));var seqqueue=require(_0x6d66('0x3'));var moment=require(_0x6d66('0x4'));var Redis=require(_0x6d66('0x5'));var config=require(_0x6d66('0x6'));var logger=require('../../../../config/logger')(_0x6d66('0x7'));var strategy=require('./strategy');config[_0x6d66('0x8')]=_['defaults'](config['redis'],{'host':_0x6d66('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6d66('0x8')]));var attributes=['id',_0x6d66('0xa'),_0x6d66('0xb'),_0x6d66('0xc'),_0x6d66('0xd'),_0x6d66('0xe')];function emit(_0x582fd7,_0x2b0eec,_0x217b3e){io['to'](_0x582fd7)['emit'](_0x2b0eec,_0x217b3e);}function emitChannelQueueInteraction(_0x372e90,_0x4ef428,_0x2e76f5,_0x3b7395,_0x28bf60,_0x492c7f,_0x2db4f7,_0x107f45){var _0x5c8ebd=_[_0x6d66('0xf')](_0x2e76f5);_0x5c8ebd[_0x6d66('0xa')]=_0x107f45;_0x5c8ebd[_0x6d66('0xc')]=_0x4ef428;_0x5c8ebd[_0x6d66('0xb')]=_0x3b7395;_0x5c8ebd['id']=_0x28bf60;if(_0x492c7f){attributes[_0x6d66('0x10')](_['capitalize'](_0x372e90)+_0x6d66('0x11'));_0x2db4f7[util[_0x6d66('0x12')](_0x6d66('0x13'),_0x372e90)][_0x28bf60]=_['pick'](_0x5c8ebd,attributes);}else{delete _0x2db4f7[util['format']('%sQueuesWaitingInteractions',_0x372e90)][_0x28bf60];}emit(util['format']('%s:queue:%s',_0x372e90,_0x4ef428),util['format'](_0x6d66('0x14'),_0x372e90,_0x492c7f?'save':_0x6d66('0x15')),_[_0x6d66('0x16')](_0x5c8ebd,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x6d66('0x17')),'chatQueueReport':require(_0x6d66('0x18')),'smsQueueReport':require(_0x6d66('0x19')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x6d66('0x1a'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x6d66('0x1b'),'message':_0x6d66('0x1c')}});function startRouting(_0x5a7381,_0x320eac,_0x44ff8e,_0x2f7018){if(_0x5a7381&&_0x320eac&&_0x44ff8e){_0x320eac[_0x6d66('0x1d')]+=0x1;var _0x38fca4={'uniqueid':_0x5a7381,'from':_0x44ff8e[_0x6d66('0x1e')]?_0x44ff8e[_0x6d66('0x1e')][_0x6d66('0xd')]:'','joinAt':moment()[_0x6d66('0x12')](_0x6d66('0x1f')),'ContactId':_0x44ff8e['contact']?_0x44ff8e['contact']['id']:null,'ListId':_0x44ff8e[_0x6d66('0x20')]?_0x44ff8e['list']['id']:null};_0x38fca4[_[_0x6d66('0x21')](_0x44ff8e['channel'])+_0x6d66('0x22')]=_0x320eac['id']||null;_0x38fca4[_[_0x6d66('0x21')](_0x44ff8e['channel'])+'InteractionId']=_0x44ff8e['interaction']?_0x44ff8e['interaction']['id']:null;_0x38fca4[_['upperFirst'](_0x44ff8e[_0x6d66('0x23')])+_0x6d66('0x24')]=_0x44ff8e[_0x6d66('0x25')]?_0x44ff8e[_0x6d66('0x25')]['id']:null;_0x38fca4[_['upperFirst'](_0x44ff8e[_0x6d66('0x23')])+(_0x44ff8e[_0x6d66('0x23')]!==_0x6d66('0x26')?_0x6d66('0x27'):'WebsiteId')]=_0x44ff8e[_0x6d66('0xb')]?_0x44ff8e[_0x6d66('0xb')]['id']:null;logger[_0x6d66('0x28')](util[_0x6d66('0x12')](_0x6d66('0x29'),_0x5a7381,_0x320eac[_0x6d66('0x2a')]));emitChannelQueueInteraction(_0x44ff8e[_0x6d66('0x23')],_0x320eac[_0x6d66('0x2a')],_0x38fca4,_0x44ff8e[_0x6d66('0xb')][_0x6d66('0x2a')],_0x44ff8e[_0x6d66('0x25')]['id'],!![],_0x2f7018,_0x320eac['id']);if(rpc[_0x44ff8e[_0x6d66('0x23')]+_0x6d66('0x2b')]){return rpc[_0x44ff8e[_0x6d66('0x23')]+'QueueReport']['create'](_0x38fca4)[_0x6d66('0x2c')](function(_0x26b916){logger[_0x6d66('0x2d')](_0x6d66('0x2e'));});}}}function stopRouting(_0x108d17,_0x2503c4,_0x5ebe45,_0x56a4c9){if(_0x108d17&&_0x2503c4){_0x2503c4[_0x6d66('0x1d')]-=0x1;var _0x4cf956={'leaveAt':moment()[_0x6d66('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x6d66('0x12')](_0x6d66('0x1f')),'reason':_0x6d66('0x2f')};logger[_0x6d66('0x28')](util[_0x6d66('0x12')](_0x6d66('0x30'),_0x108d17,_0x2503c4[_0x6d66('0x2a')]));emitChannelQueueInteraction(_0x5ebe45[_0x6d66('0x23')],_0x2503c4[_0x6d66('0x2a')],_0x5ebe45[_0x6d66('0x1e')],_0x5ebe45[_0x6d66('0xb')][_0x6d66('0x2a')],_0x5ebe45['message']['id'],![],_0x56a4c9,_0x2503c4['id']);if(rpc[_0x5ebe45[_0x6d66('0x23')]+'QueueReport']){return rpc[_0x5ebe45[_0x6d66('0x23')]+_0x6d66('0x2b')][_0x6d66('0x31')](_0x108d17,_0x4cf956)[_0x6d66('0x2c')](function(_0x581991){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x446868,_0x3b00e3,_0x3f7e43,_0x56bff2){if(_0x446868&&_0x3b00e3){_0x3b00e3[_0x6d66('0x1d')]-=0x1;var _0x48f4f5={'leaveAt':moment()[_0x6d66('0x12')](_0x6d66('0x1f')),'exitAt':moment()[_0x6d66('0x12')](_0x6d66('0x1f')),'reason':_0x6d66('0x32')};logger[_0x6d66('0x28')](util[_0x6d66('0x12')](_0x6d66('0x33'),_0x446868,_0x3b00e3['name']));emitChannelQueueInteraction(_0x3f7e43[_0x6d66('0x23')],_0x3b00e3[_0x6d66('0x2a')],_0x3f7e43[_0x6d66('0x1e')],_0x3f7e43[_0x6d66('0xb')][_0x6d66('0x2a')],_0x3f7e43[_0x6d66('0x25')]['id'],![],_0x56bff2);if(rpc[_0x3f7e43[_0x6d66('0x23')]+_0x6d66('0x2b')]){return rpc[_0x3f7e43[_0x6d66('0x23')]+'QueueReport'][_0x6d66('0x31')](_0x446868,_0x48f4f5)[_0x6d66('0x2c')](function(_0x3a33f0){logger[_0x6d66('0x2d')](_0x6d66('0x34'));});}}}function handleFindQueue(_0x2c5593){return function(_0x18d1f6){return _0x18d1f6[_0x6d66('0x2a')]['toLowerCase']()===_0x2c5593[_0x6d66('0x35')]();};}exports[_0x6d66('0x36')]=function(_0x3c17fa,_0x21c758,_0x7238c1,_0x5159a2){return function(_0x1040bd){try{var _0x2c197a={'name':_0x21c758[0x0],'timeout':_0x21c758[0x1]};var _0x3df598=queue['validate'](_0x2c197a,{'typecast':!![]});if(_0x3df598[_0x6d66('0x37')]){logger[_0x6d66('0x2d')]('[%s][QUEUE]\x20%s',_0x3c17fa,_[_0x6d66('0x38')](_0x3df598,_0x6d66('0x25'))['join'](',\x20'));_0x1040bd['stop']();}else{var _0x55539f=_[_0x6d66('0x39')](_0x7238c1[_0x5159a2['channel']+_0x6d66('0x3a')],handleFindQueue(_0x2c197a['name']));if(_0x55539f){startRouting(_0x3c17fa,_0x55539f,_0x5159a2,_0x7238c1);var _0x343952=(_0x55539f[_0x6d66('0x32')]||0xa)*0x3e8;var _0x1b304f=(_0x2c197a[_0x6d66('0x32')]||0x14)*0x3e8;var _0x15d959;if(_0x343952>_0x1b304f){_0x1b304f=_0x343952;}var _0x456523=seqqueue['createQueue'](_0x343952);_0x456523['id']=_0x3c17fa;_0x456523['atimeout']=_0x343952;_0x456523[_0x6d66('0x3b')]=_0x1b304f;_0x456523[_0x6d66('0x23')]=_0x5159a2[_0x6d66('0x23')];_0x7238c1[_0x6d66('0x3c')][_0x3c17fa]['on']('end',function(){logger[_0x6d66('0x28')](_0x6d66('0x3d'),_0x3c17fa);stopRouting(_0x3c17fa,_0x55539f,_0x5159a2,_0x7238c1);clearTimeout(_0x15d959);_0x15d959=undefined;_0x456523[_0x6d66('0x3e')](!![]);if(_0x7238c1['rules'][_0x3c17fa]){delete _0x7238c1[_0x6d66('0x3c')][_0x3c17fa];}_0x1040bd[_0x6d66('0x3f')]();});_0x7238c1[_0x6d66('0x3c')][_0x3c17fa]['on'](_0x6d66('0x40'),function(){if(_0x7238c1['rules'][_0x3c17fa]){delete _0x7238c1[_0x6d66('0x3c')][_0x3c17fa];}});_0x15d959=setTimeout(function(){logger[_0x6d66('0x28')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x3c17fa);endRouting(_0x3c17fa,_0x55539f,_0x5159a2,_0x7238c1);clearTimeout(_0x15d959);_0x456523[_0x6d66('0x3e')](!![]);_0x1040bd[_0x6d66('0x41')]();},_0x1b304f);switch(_0x55539f[_0x6d66('0x42')]){case _0x6d66('0x43'):strategy[_0x6d66('0x43')](_0x456523,_0x55539f,_0x7238c1,_0x5159a2);break;default:strategy['beepall'](_0x456523,_0x55539f,_0x7238c1,_0x5159a2);}}else{logger['error'](_0x6d66('0x44'),_0x3c17fa,_0x2c197a[_0x6d66('0x2a')]);_0x1040bd[_0x6d66('0x3f')]();}}}catch(_0x45f681){console['log'](_0x45f681);logger['error'](_0x6d66('0x45'),_0x3c17fa,_0x45f681[_0x6d66('0x46')]);_0x1040bd[_0x6d66('0x3f')]();}};};
\ No newline at end of file
+var _0x810f=['%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','map','stop','find','createQueue','atimeout','rules','complete','[%s][QUEUE]\x20APPLICATION\x20END','rrmemory','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/environment','../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','queue_id','queue','emit','account','capitalize','InteractionId','format'];(function(_0x5c5bf5,_0x2b3e1b){var _0x188b4b=function(_0x2e7ea8){while(--_0x2e7ea8){_0x5c5bf5['push'](_0x5c5bf5['shift']());}};_0x188b4b(++_0x2b3e1b);}(_0x810f,0x7c));var _0xf810=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x810f[_0x166742];return _0xb7814a;};'use strict';var schema=require(_0xf810('0x0'));var _=require(_0xf810('0x1'));var util=require(_0xf810('0x2'));var seqqueue=require(_0xf810('0x3'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0xf810('0x4'));var logger=require(_0xf810('0x5'))(_0xf810('0x6'));var strategy=require('./strategy');config[_0xf810('0x7')]=_[_0xf810('0x8')](config[_0xf810('0x7')],{'host':_0xf810('0x9'),'port':0x18eb});var io=require(_0xf810('0xa'))(new Redis(config[_0xf810('0x7')]));var attributes=['id',_0xf810('0xb'),'account',_0xf810('0xc'),'from','joinAt'];function emit(_0x3509d1,_0x22a21e,_0x35e976){io['to'](_0x3509d1)[_0xf810('0xd')](_0x22a21e,_0x35e976);}function emitChannelQueueInteraction(_0x2ba49a,_0xc6470f,_0x311d4c,_0x18a405,_0x435758,_0x401063,_0x43b4ed,_0x12b3fd){var _0x5ed1cb=_['clone'](_0x311d4c);_0x5ed1cb[_0xf810('0xb')]=_0x12b3fd;_0x5ed1cb[_0xf810('0xc')]=_0xc6470f;_0x5ed1cb[_0xf810('0xe')]=_0x18a405;_0x5ed1cb['id']=_0x435758;if(_0x401063){attributes['push'](_[_0xf810('0xf')](_0x2ba49a)+_0xf810('0x10'));_0x43b4ed[util[_0xf810('0x11')](_0xf810('0x12'),_0x2ba49a)][_0x435758]=_[_0xf810('0x13')](_0x5ed1cb,attributes);}else{delete _0x43b4ed[util[_0xf810('0x11')](_0xf810('0x12'),_0x2ba49a)][_0x435758];}emit(util[_0xf810('0x11')](_0xf810('0x14'),_0x2ba49a,_0xc6470f),util['format'](_0xf810('0x15'),_0x2ba49a,_0x401063?_0xf810('0x16'):_0xf810('0x17')),_[_0xf810('0x13')](_0x5ed1cb,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xf810('0x18')),'chatQueueReport':require(_0xf810('0x19')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xf810('0x1a')),'whatsappQueueReport':require(_0xf810('0x1b'))};var queue=schema({'name':{'type':_0xf810('0x1c'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xf810('0x1d'),'message':_0xf810('0x1e')}});function startRouting(_0x56e185,_0x2a86c5,_0x2fa3e8,_0x43b167){if(_0x56e185&&_0x2a86c5&&_0x2fa3e8){_0x2a86c5[_0xf810('0x1f')]+=0x1;var _0x329352={'uniqueid':_0x56e185,'from':_0x2fa3e8['body']?_0x2fa3e8[_0xf810('0x20')][_0xf810('0x21')]:'','joinAt':moment()[_0xf810('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2fa3e8[_0xf810('0x22')]?_0x2fa3e8[_0xf810('0x22')]['id']:null,'ListId':_0x2fa3e8[_0xf810('0x23')]?_0x2fa3e8[_0xf810('0x23')]['id']:null};_0x329352[_[_0xf810('0x24')](_0x2fa3e8[_0xf810('0x25')])+'QueueId']=_0x2a86c5['id']||null;_0x329352[_['upperFirst'](_0x2fa3e8[_0xf810('0x25')])+_0xf810('0x10')]=_0x2fa3e8[_0xf810('0x26')]?_0x2fa3e8[_0xf810('0x26')]['id']:null;_0x329352[_[_0xf810('0x24')](_0x2fa3e8[_0xf810('0x25')])+_0xf810('0x27')]=_0x2fa3e8[_0xf810('0x28')]?_0x2fa3e8[_0xf810('0x28')]['id']:null;_0x329352[_['upperFirst'](_0x2fa3e8[_0xf810('0x25')])+(_0x2fa3e8['channel']!==_0xf810('0x29')?_0xf810('0x2a'):'WebsiteId')]=_0x2fa3e8[_0xf810('0xe')]?_0x2fa3e8[_0xf810('0xe')]['id']:null;logger[_0xf810('0x2b')](util['format'](_0xf810('0x2c'),_0x56e185,_0x2a86c5[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x2fa3e8[_0xf810('0x25')],_0x2a86c5[_0xf810('0x2d')],_0x329352,_0x2fa3e8['account'][_0xf810('0x2d')],_0x2fa3e8['message']['id'],!![],_0x43b167,_0x2a86c5['id']);if(rpc[_0x2fa3e8['channel']+'QueueReport']){return rpc[_0x2fa3e8[_0xf810('0x25')]+_0xf810('0x2e')]['create'](_0x329352)['catch'](function(_0x4fa53f){logger[_0xf810('0x2f')](_0xf810('0x30'));});}}}function stopRouting(_0x35de53,_0x47038a,_0x1a2c0c,_0x425383){if(_0x35de53&&_0x47038a){_0x47038a[_0xf810('0x1f')]-=0x1;var _0x3a9ea3={'leaveAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'acceptAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'reason':_0xf810('0x32')};logger[_0xf810('0x2b')](util[_0xf810('0x11')](_0xf810('0x33'),_0x35de53,_0x47038a[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x1a2c0c['channel'],_0x47038a[_0xf810('0x2d')],_0x1a2c0c[_0xf810('0x20')],_0x1a2c0c[_0xf810('0xe')]['name'],_0x1a2c0c[_0xf810('0x28')]['id'],![],_0x425383,_0x47038a['id']);if(rpc[_0x1a2c0c[_0xf810('0x25')]+_0xf810('0x2e')]){return rpc[_0x1a2c0c[_0xf810('0x25')]+_0xf810('0x2e')]['update'](_0x35de53,_0x3a9ea3)[_0xf810('0x34')](function(_0x56982f){logger['error'](_0xf810('0x35'));});}}}function endRouting(_0x58b375,_0x5e2ea8,_0x74a3b6,_0x1481ca){if(_0x58b375&&_0x5e2ea8){_0x5e2ea8[_0xf810('0x1f')]-=0x1;var _0x472885={'leaveAt':moment()[_0xf810('0x11')](_0xf810('0x31')),'exitAt':moment()[_0xf810('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xf810('0x36')};logger[_0xf810('0x2b')](util['format'](_0xf810('0x37'),_0x58b375,_0x5e2ea8[_0xf810('0x2d')]));emitChannelQueueInteraction(_0x74a3b6[_0xf810('0x25')],_0x5e2ea8[_0xf810('0x2d')],_0x74a3b6[_0xf810('0x20')],_0x74a3b6['account'][_0xf810('0x2d')],_0x74a3b6['message']['id'],![],_0x1481ca);if(rpc[_0x74a3b6[_0xf810('0x25')]+'QueueReport']){return rpc[_0x74a3b6[_0xf810('0x25')]+'QueueReport']['update'](_0x58b375,_0x472885)['catch'](function(_0x1aa3c0){logger[_0xf810('0x2f')](_0xf810('0x35'));});}}}function handleFindQueue(_0x21ea9c){return function(_0x403774){return _0x403774[_0xf810('0x2d')]['toLowerCase']()===_0x21ea9c[_0xf810('0x38')]();};}exports[_0xf810('0x39')]=function(_0x41c626,_0x5a9204,_0xa8e4f0,_0x398f97){return function(_0x1fb6d1){try{var _0x4ad465={'name':_0x5a9204[0x0],'timeout':_0x5a9204[0x1]};var _0x134b99=queue[_0xf810('0x0')](_0x4ad465,{'typecast':!![]});if(_0x134b99[_0xf810('0x3a')]){logger['error']('[%s][QUEUE]\x20%s',_0x41c626,_[_0xf810('0x3b')](_0x134b99,_0xf810('0x28'))['join'](',\x20'));_0x1fb6d1[_0xf810('0x3c')]();}else{var _0x189a31=_[_0xf810('0x3d')](_0xa8e4f0[_0x398f97[_0xf810('0x25')]+'Queues'],handleFindQueue(_0x4ad465[_0xf810('0x2d')]));if(_0x189a31){startRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);var _0x42db87=(_0x189a31[_0xf810('0x36')]||0xa)*0x3e8;var _0x2b3432=(_0x4ad465[_0xf810('0x36')]||0x14)*0x3e8;var _0x488490;if(_0x42db87>_0x2b3432){_0x2b3432=_0x42db87;}var _0x13b251=seqqueue[_0xf810('0x3e')](_0x42db87);_0x13b251['id']=_0x41c626;_0x13b251[_0xf810('0x3f')]=_0x42db87;_0x13b251['qtimeout']=_0x2b3432;_0x13b251[_0xf810('0x25')]=_0x398f97['channel'];_0xa8e4f0[_0xf810('0x40')][_0x41c626]['on']('end',function(){logger[_0xf810('0x2b')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x41c626);stopRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);clearTimeout(_0x488490);_0x488490=undefined;_0x13b251['close'](!![]);if(_0xa8e4f0[_0xf810('0x40')][_0x41c626]){delete _0xa8e4f0[_0xf810('0x40')][_0x41c626];}_0x1fb6d1[_0xf810('0x3c')]();});_0xa8e4f0[_0xf810('0x40')][_0x41c626]['on'](_0xf810('0x41'),function(){if(_0xa8e4f0[_0xf810('0x40')][_0x41c626]){delete _0xa8e4f0['rules'][_0x41c626];}});_0x488490=setTimeout(function(){logger['info'](_0xf810('0x42'),_0x41c626);endRouting(_0x41c626,_0x189a31,_0x398f97,_0xa8e4f0);clearTimeout(_0x488490);_0x13b251['close'](!![]);_0x1fb6d1['next']();},_0x2b3432);switch(_0x189a31['strategy']){case _0xf810('0x43'):strategy[_0xf810('0x43')](_0x13b251,_0x189a31,_0xa8e4f0,_0x398f97);break;default:strategy['beepall'](_0x13b251,_0x189a31,_0xa8e4f0,_0x398f97);}}else{logger['error']('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x41c626,_0x4ad465[_0xf810('0x2d')]);_0x1fb6d1['stop']();}}}catch(_0x49a131){console[_0xf810('0x44')](_0x49a131);logger['error'](_0xf810('0x45'),_0x41c626,_0x49a131[_0xf810('0x46')]);_0x1fb6d1[_0xf810('0x3c')]();}};};
\ No newline at end of file
index 62288c7..93908f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['bind','drained','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','saveWaitingNotification','channel','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','busyQueue','removeWaitingNotification','STOP','TIMEOUT','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','handleRun','handleTimeout'];(function(_0x45d088,_0x2a812e){var _0x38fef6=function(_0x2c8e7c){while(--_0x2c8e7c){_0x45d088['push'](_0x45d088['shift']());}};_0x38fef6(++_0x2a812e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x3e0b8f,_0x1cddeb){_0x3e0b8f=_0x3e0b8f-0x0;var _0x22f742=_0x24ca[_0x3e0b8f];return _0x22f742;};'use strict';var _=require(_0xa24c('0x0'));var uuid=require('uuid');var util=require(_0xa24c('0x1'));var logger=require(_0xa24c('0x2'))(_0xa24c('0x3'));var Agent=function(_0x5876d6,_0x18497e,_0x8a54a0,_0x195e60){this[_0xa24c('0x4')]=uuid['v4']();this[_0xa24c('0x5')]=_0x5876d6;this[_0xa24c('0x6')]=_0x18497e;this[_0xa24c('0x7')]=_0x8a54a0;this[_0xa24c('0x3')]=_0x195e60;this[_0xa24c('0x5')][_0xa24c('0x8')](this[_0xa24c('0x9')]['bind'](this),this[_0xa24c('0xa')][_0xa24c('0xb')](this));this[_0xa24c('0x5')]['on']('timeout',this[_0xa24c('0xa')][_0xa24c('0xb')](this));this[_0xa24c('0x5')]['on'](_0xa24c('0xc'),this[_0xa24c('0xd')][_0xa24c('0xb')](this));};Agent[_0xa24c('0xe')][_0xa24c('0x8')]=function(){this[_0xa24c('0x5')]['push'](this[_0xa24c('0x9')][_0xa24c('0xb')](this),this[_0xa24c('0xa')][_0xa24c('0xb')](this));};Agent['prototype'][_0xa24c('0xd')]=function(){this[_0xa24c('0xa')](!![]);};Agent[_0xa24c('0xe')][_0xa24c('0x9')]=function(){logger[_0xa24c('0xf')](_0xa24c('0x10'),this[_0xa24c('0x5')]['id'],this['agent']['id']);if(_['isNil'](this[_0xa24c('0x7')][_0xa24c('0x11')][this['agent']['id']])){logger['debug'](_0xa24c('0x12'),this[_0xa24c('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xa24c('0x8')]['bind'](this),0x3e8);}else{if(this[_0xa24c('0x3')][_0xa24c('0x13')]||util[_0xa24c('0x14')](this[_0xa24c('0x5')]['id'],this['realtime'][_0xa24c('0x11')][this[_0xa24c('0x6')]['id']],this[_0xa24c('0x5')]['channel'],![])){this['realtime']['agents'][this['agent']['id']][_0xa24c('0x15')]=!![];this[_0xa24c('0x7')][_0xa24c('0x11')][this[_0xa24c('0x6')]['id']]['busyQueue']=undefined;util[_0xa24c('0x16')](this['realtime'],this[_0xa24c('0x3')],this[_0xa24c('0x6')],this['squeue'][_0xa24c('0x17')]);util[_0xa24c('0x18')](this[_0xa24c('0x4')],this[_0xa24c('0x5')]['id'],this[_0xa24c('0x7')]['agents'][this[_0xa24c('0x6')]['id']],null,this['routing']);util[_0xa24c('0x19')](this[_0xa24c('0x5')]['id'],this[_0xa24c('0x7')]['agents'][this[_0xa24c('0x6')]['id']],_0xa24c('0x1a')+(this[_0xa24c('0x3')][_0xa24c('0x13')]?_0xa24c('0x1b'):''));}else{logger[_0xa24c('0xf')](_0xa24c('0x1c'),this['squeue']['id'],this[_0xa24c('0x6')]['id']);setTimeout(this[_0xa24c('0x8')][_0xa24c('0xb')](this),0x3e8);}}};Agent[_0xa24c('0xe')]['handleTimeout']=function(_0x21d2a8){if(_[_0xa24c('0x1d')](this[_0xa24c('0x7')]['agents'][this[_0xa24c('0x6')]['id']])){return logger[_0xa24c('0xf')](_0xa24c('0x12'),this['squeue']['id'],this[_0xa24c('0x6')]['id']);}else{logger['debug'](_0xa24c('0x1e'),this[_0xa24c('0x5')]['id'],this[_0xa24c('0x6')]['id']);util['hideNotification'](this[_0xa24c('0x4')],this[_0xa24c('0x5')]['id'],this[_0xa24c('0x7')]['agents'][this[_0xa24c('0x6')]['id']],null,this['routing']);this[_0xa24c('0x7')][_0xa24c('0x11')][this['agent']['id']]['busy']=![];this[_0xa24c('0x7')][_0xa24c('0x11')][this[_0xa24c('0x6')]['id']][_0xa24c('0x1f')]=undefined;util[_0xa24c('0x20')](this[_0xa24c('0x7')],this[_0xa24c('0x3')],this['agent'],this[_0xa24c('0x5')][_0xa24c('0x17')]);util[_0xa24c('0x19')](this[_0xa24c('0x5')]['id'],this[_0xa24c('0x7')][_0xa24c('0x11')][this[_0xa24c('0x6')]['id']],_0x21d2a8?_0xa24c('0x21'):_0xa24c('0x22'));}if(!_0x21d2a8){setTimeout(this[_0xa24c('0x8')]['bind'](this),0x3e8);}};function agent(_0x70a957,_0x66f5a6,_0x2b362d,_0x1b0757){return new Agent(_0x70a957,_0x66f5a6,_0x2b362d,_0x1b0757);}module['exports']=agent;
\ No newline at end of file
+var _0x3e74=['./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','isNil','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','saveWaitingNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','STOP','exports','lodash'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x3e74,0x175));var _0x43e7=function(_0x2e5d28,_0x565ce8){_0x2e5d28=_0x2e5d28-0x0;var _0x2d3e67=_0x3e74[_0x2e5d28];return _0x2d3e67;};'use strict';var _=require(_0x43e7('0x0'));var uuid=require('uuid');var util=require(_0x43e7('0x1'));var logger=require(_0x43e7('0x2'))(_0x43e7('0x3'));var Agent=function(_0x494e45,_0x490ced,_0xc58479,_0x4f9bbe){this[_0x43e7('0x4')]=uuid['v4']();this[_0x43e7('0x5')]=_0x494e45;this[_0x43e7('0x6')]=_0x490ced;this[_0x43e7('0x7')]=_0xc58479;this[_0x43e7('0x3')]=_0x4f9bbe;this['squeue'][_0x43e7('0x8')](this[_0x43e7('0x9')][_0x43e7('0xa')](this),this[_0x43e7('0xb')][_0x43e7('0xa')](this));this['squeue']['on'](_0x43e7('0xc'),this['handleTimeout']['bind'](this));this[_0x43e7('0x5')]['on'](_0x43e7('0xd'),this['handleDrained'][_0x43e7('0xa')](this));};Agent['prototype'][_0x43e7('0x8')]=function(){this[_0x43e7('0x5')]['push'](this[_0x43e7('0x9')][_0x43e7('0xa')](this),this[_0x43e7('0xb')][_0x43e7('0xa')](this));};Agent['prototype']['handleDrained']=function(){this[_0x43e7('0xb')](!![]);};Agent[_0x43e7('0xe')][_0x43e7('0x9')]=function(){logger['debug']('[%s][AGENT]\x20try\x20with\x20%s',this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);if(_[_0x43e7('0xf')](this[_0x43e7('0x7')]['agents'][this['agent']['id']])){logger[_0x43e7('0x10')](_0x43e7('0x11'),this[_0x43e7('0x5')]['id'],this['agent']['id']);setTimeout(this['push'][_0x43e7('0xa')](this),0x3e8);}else{if(this[_0x43e7('0x3')][_0x43e7('0x12')]||util[_0x43e7('0x13')](this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']],this[_0x43e7('0x5')][_0x43e7('0x15')],![])){this[_0x43e7('0x7')][_0x43e7('0x14')][this['agent']['id']][_0x43e7('0x16')]=!![];this[_0x43e7('0x7')]['agents'][this[_0x43e7('0x6')]['id']][_0x43e7('0x17')]=undefined;util[_0x43e7('0x18')](this[_0x43e7('0x7')],this[_0x43e7('0x3')],this[_0x43e7('0x6')],this['squeue'][_0x43e7('0x15')]);util['showNotification'](this['notificationId'],this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')]['agents'][this[_0x43e7('0x6')]['id']],null,this['routing']);util[_0x43e7('0x19')](this['squeue']['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']],_0x43e7('0x1a')+(this['routing']['forcedOwnership']?_0x43e7('0x1b'):''));}else{logger['debug'](_0x43e7('0x1c'),this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);setTimeout(this[_0x43e7('0x8')]['bind'](this),0x3e8);}}};Agent[_0x43e7('0xe')][_0x43e7('0xb')]=function(_0x45b675){if(_[_0x43e7('0xf')](this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']])){return logger[_0x43e7('0x10')](_0x43e7('0x11'),this[_0x43e7('0x5')]['id'],this[_0x43e7('0x6')]['id']);}else{logger[_0x43e7('0x10')](_0x43e7('0x1d'),this[_0x43e7('0x5')]['id'],this['agent']['id']);util[_0x43e7('0x1e')](this[_0x43e7('0x4')],this[_0x43e7('0x5')]['id'],this[_0x43e7('0x7')][_0x43e7('0x14')][this['agent']['id']],null,this[_0x43e7('0x3')]);this[_0x43e7('0x7')][_0x43e7('0x14')][this[_0x43e7('0x6')]['id']]['busy']=![];this['realtime']['agents'][this[_0x43e7('0x6')]['id']][_0x43e7('0x17')]=undefined;util[_0x43e7('0x1f')](this[_0x43e7('0x7')],this[_0x43e7('0x3')],this[_0x43e7('0x6')],this['squeue']['channel']);util['writeLog'](this['squeue']['id'],this['realtime']['agents'][this['agent']['id']],_0x45b675?_0x43e7('0x20'):'TIMEOUT');}if(!_0x45b675){setTimeout(this[_0x43e7('0x8')][_0x43e7('0xa')](this),0x3e8);}};function agent(_0x31bc78,_0x50a2d0,_0x40f72f,_0x449803){return new Agent(_0x31bc78,_0x50a2d0,_0x40f72f,_0x449803);}module[_0x43e7('0x21')]=agent;
\ No newline at end of file
index e39bf74..46df2ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434f=['[%s][QUEUE]\x20EMPTY','hideNotification','STOP','busyQueue','removeWaitingNotification','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','isNil','Agents','length','agents','channel','RINGING','busy','name','saveWaitingNotification','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','debug'];(function(_0x5ad696,_0x2afd28){var _0x219c95=function(_0x30610a){while(--_0x30610a){_0x5ad696['push'](_0x5ad696['shift']());}};_0x219c95(++_0x2afd28);}(_0x434f,0x8d));var _0xf434=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x434f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf434('0x0'));var uuid=require(_0xf434('0x1'));var util=require(_0xf434('0x2'));var logger=require(_0xf434('0x3'))(_0xf434('0x4'));var Beepall=function(_0x1952e4,_0x49199f,_0x335957,_0x51a1b9){this[_0xf434('0x5')]=uuid['v4']();this[_0xf434('0x6')]=_0x1952e4;this[_0xf434('0x7')]=_0x49199f;this[_0xf434('0x8')]=_0x335957;this[_0xf434('0x4')]=_0x51a1b9;this[_0xf434('0x6')][_0xf434('0x9')](this['handleRun'][_0xf434('0xa')](this),this[_0xf434('0xb')]['bind'](this));this[_0xf434('0x6')]['on'](_0xf434('0xc'),this[_0xf434('0xb')][_0xf434('0xa')](this));this[_0xf434('0x6')]['on'](_0xf434('0xd'),this[_0xf434('0xe')]['bind'](this));};Beepall[_0xf434('0xf')]['push']=function(){this[_0xf434('0x6')][_0xf434('0x9')](this[_0xf434('0x10')][_0xf434('0xa')](this),this[_0xf434('0xb')][_0xf434('0xa')](this));};Beepall[_0xf434('0xf')][_0xf434('0xe')]=function(){this[_0xf434('0xb')](!![]);};Beepall[_0xf434('0xf')][_0xf434('0x10')]=function(){var _0xc95e2d=!![];if(!_['isNil'](this[_0xf434('0x7')])&&!_[_0xf434('0x11')](this[_0xf434('0x7')][_0xf434('0x12')])&&this[_0xf434('0x7')]['Agents'][_0xf434('0x13')]>0x0){for(var _0x34c5f3=0x0,_0x441cbf;_0x34c5f3<this[_0xf434('0x7')][_0xf434('0x12')][_0xf434('0x13')];_0x34c5f3+=0x1){_0x441cbf=this[_0xf434('0x7')][_0xf434('0x12')][_0x34c5f3]['id'];if(_[_0xf434('0x11')](this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf434('0x6')]['id'],_0x441cbf);}else{if(util['isAgentAvailable'](this[_0xf434('0x6')]['id'],this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf],this['squeue'][_0xf434('0x15')],!![])){_0xc95e2d=![];util['writeLog'](this['squeue']['id'],this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf],_0xf434('0x16'));this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf][_0xf434('0x17')]=!![];this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf]['busyQueue']=this[_0xf434('0x7')][_0xf434('0x18')];util[_0xf434('0x19')](this[_0xf434('0x8')],this[_0xf434('0x4')],this[_0xf434('0x7')][_0xf434('0x12')][_0x34c5f3],this[_0xf434('0x6')][_0xf434('0x15')]);util[_0xf434('0x1a')](this['notificationId'],this[_0xf434('0x6')]['id'],this[_0xf434('0x8')][_0xf434('0x14')][_0x441cbf],this[_0xf434('0x7')],this[_0xf434('0x4')]);}}}if(_0xc95e2d){logger['debug'](_0xf434('0x1b'),this[_0xf434('0x6')]['id']);setTimeout(this[_0xf434('0x9')][_0xf434('0xa')](this),0x3e8);}}else{logger[_0xf434('0x1c')](_0xf434('0x1d'),this[_0xf434('0x6')]['id']);setTimeout(this[_0xf434('0x9')][_0xf434('0xa')](this),0x3e8);}};Beepall[_0xf434('0xf')][_0xf434('0xb')]=function(_0x438ede){if(!_['isNil'](this[_0xf434('0x7')])&&!_[_0xf434('0x11')](this[_0xf434('0x7')][_0xf434('0x12')])){for(var _0x4c05c5=0x0,_0x1858ff;_0x4c05c5<this[_0xf434('0x7')][_0xf434('0x12')][_0xf434('0x13')];_0x4c05c5+=0x1){_0x1858ff=this[_0xf434('0x7')][_0xf434('0x12')][_0x4c05c5]['id'];if(_['isNil'](this[_0xf434('0x8')][_0xf434('0x14')][_0x1858ff])){logger[_0xf434('0x1c')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf434('0x6')]['id'],_0x1858ff);}else{util[_0xf434('0x1e')](this['notificationId'],this[_0xf434('0x6')]['id'],this[_0xf434('0x8')][_0xf434('0x14')][_0x1858ff],this[_0xf434('0x7')],this[_0xf434('0x4')]);util['writeLog'](this[_0xf434('0x6')]['id'],this[_0xf434('0x8')][_0xf434('0x14')][_0x1858ff],_0x438ede?_0xf434('0x1f'):'TIMEOUT');this[_0xf434('0x8')][_0xf434('0x14')][_0x1858ff][_0xf434('0x17')]=![];this[_0xf434('0x8')]['agents'][_0x1858ff][_0xf434('0x20')]=undefined;util[_0xf434('0x21')](this[_0xf434('0x8')],this[_0xf434('0x4')],this['realtime'][_0xf434('0x14')][_0x1858ff],this[_0xf434('0x6')][_0xf434('0x15')]);}}}if(!_0x438ede){setTimeout(this[_0xf434('0x9')][_0xf434('0xa')](this),0x3e8);}};function beepall(_0x4c27a8,_0x51c3ae,_0x5574d3,_0x1158fc){return new Beepall(_0x4c27a8,_0x51c3ae,_0x5574d3,_0x1158fc);}module['exports']=beepall;
\ No newline at end of file
+var _0xc2d7=['queue','routing','push','handleRun','bind','handleTimeout','drained','handleDrained','prototype','isNil','Agents','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','RINGING','name','channel','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','length','hideNotification','STOP','TIMEOUT','busy','removeWaitingNotification','exports','lodash','../../../../../config/logger','squeue'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xc2d7,0x81));var _0x7c2d=function(_0x2a25d9,_0x1accf4){_0x2a25d9=_0x2a25d9-0x0;var _0x4ddb5d=_0xc2d7[_0x2a25d9];return _0x4ddb5d;};'use strict';var _=require(_0x7c2d('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0x7c2d('0x1'))('routing');var Beepall=function(_0x2c982b,_0x4b3819,_0x1359f5,_0x2895f8){this['notificationId']=uuid['v4']();this[_0x7c2d('0x2')]=_0x2c982b;this[_0x7c2d('0x3')]=_0x4b3819;this['realtime']=_0x1359f5;this[_0x7c2d('0x4')]=_0x2895f8;this['squeue'][_0x7c2d('0x5')](this[_0x7c2d('0x6')][_0x7c2d('0x7')](this),this[_0x7c2d('0x8')]['bind'](this));this[_0x7c2d('0x2')]['on']('timeout',this['handleTimeout'][_0x7c2d('0x7')](this));this['squeue']['on'](_0x7c2d('0x9'),this[_0x7c2d('0xa')][_0x7c2d('0x7')](this));};Beepall[_0x7c2d('0xb')][_0x7c2d('0x5')]=function(){this[_0x7c2d('0x2')][_0x7c2d('0x5')](this[_0x7c2d('0x6')][_0x7c2d('0x7')](this),this[_0x7c2d('0x8')][_0x7c2d('0x7')](this));};Beepall['prototype']['handleDrained']=function(){this['handleTimeout'](!![]);};Beepall[_0x7c2d('0xb')][_0x7c2d('0x6')]=function(){var _0x3a44ce=!![];if(!_[_0x7c2d('0xc')](this[_0x7c2d('0x3')])&&!_[_0x7c2d('0xc')](this[_0x7c2d('0x3')][_0x7c2d('0xd')])&&this[_0x7c2d('0x3')][_0x7c2d('0xd')]['length']>0x0){for(var _0x34422d=0x0,_0x33a647;_0x34422d<this[_0x7c2d('0x3')][_0x7c2d('0xd')]['length'];_0x34422d+=0x1){_0x33a647=this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x34422d]['id'];if(_[_0x7c2d('0xc')](this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647])){logger[_0x7c2d('0x10')](_0x7c2d('0x11'),this[_0x7c2d('0x2')]['id'],_0x33a647);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647],this[_0x7c2d('0x2')]['channel'],!![])){_0x3a44ce=![];util[_0x7c2d('0x12')](this[_0x7c2d('0x2')]['id'],this['realtime'][_0x7c2d('0xf')][_0x33a647],_0x7c2d('0x13'));this['realtime'][_0x7c2d('0xf')][_0x33a647]['busy']=!![];this['realtime']['agents'][_0x33a647]['busyQueue']=this[_0x7c2d('0x3')][_0x7c2d('0x14')];util['saveWaitingNotification'](this['realtime'],this[_0x7c2d('0x4')],this[_0x7c2d('0x3')]['Agents'][_0x34422d],this[_0x7c2d('0x2')][_0x7c2d('0x15')]);util[_0x7c2d('0x16')](this[_0x7c2d('0x17')],this[_0x7c2d('0x2')]['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x33a647],this['queue'],this[_0x7c2d('0x4')]);}}}if(_0x3a44ce){logger[_0x7c2d('0x10')](_0x7c2d('0x18'),this[_0x7c2d('0x2')]['id']);setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}}else{logger[_0x7c2d('0x10')](_0x7c2d('0x19'),this[_0x7c2d('0x2')]['id']);setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}};Beepall['prototype'][_0x7c2d('0x8')]=function(_0x48b811){if(!_[_0x7c2d('0xc')](this['queue'])&&!_['isNil'](this['queue'][_0x7c2d('0xd')])){for(var _0x37e025=0x0,_0x517793;_0x37e025<this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x7c2d('0x1a')];_0x37e025+=0x1){_0x517793=this[_0x7c2d('0x3')][_0x7c2d('0xd')][_0x37e025]['id'];if(_[_0x7c2d('0xc')](this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793])){logger[_0x7c2d('0x10')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x7c2d('0x2')]['id'],_0x517793);}else{util[_0x7c2d('0x1b')](this[_0x7c2d('0x17')],this[_0x7c2d('0x2')]['id'],this['realtime'][_0x7c2d('0xf')][_0x517793],this[_0x7c2d('0x3')],this[_0x7c2d('0x4')]);util[_0x7c2d('0x12')](this[_0x7c2d('0x2')]['id'],this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793],_0x48b811?_0x7c2d('0x1c'):_0x7c2d('0x1d'));this[_0x7c2d('0xe')][_0x7c2d('0xf')][_0x517793][_0x7c2d('0x1e')]=![];this['realtime'][_0x7c2d('0xf')][_0x517793]['busyQueue']=undefined;util[_0x7c2d('0x1f')](this[_0x7c2d('0xe')],this[_0x7c2d('0x4')],this['realtime'][_0x7c2d('0xf')][_0x517793],this[_0x7c2d('0x2')][_0x7c2d('0x15')]);}}}if(!_0x48b811){setTimeout(this[_0x7c2d('0x5')][_0x7c2d('0x7')](this),0x3e8);}};function beepall(_0x3090fd,_0x158234,_0x318a43,_0x41c6bf){return new Beepall(_0x3090fd,_0x158234,_0x318a43,_0x41c6bf);}module[_0x7c2d('0x20')]=beepall;
\ No newline at end of file
index d7ba398..8d4067a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x646c=['./agent','./rrmemory'];(function(_0x373233,_0x56ba31){var _0x48c5b8=function(_0xeb4607){while(--_0xeb4607){_0x373233['push'](_0x373233['shift']());}};_0x48c5b8(++_0x56ba31);}(_0x646c,0x167));var _0xc646=function(_0x36ed3c,_0x44a00a){_0x36ed3c=_0x36ed3c-0x0;var _0x52a2e0=_0x646c[_0x36ed3c];return _0x52a2e0;};'use strict';module['exports']={'rrmemory':require(_0xc646('0x0')),'beepall':require('./beepall'),'agent':require(_0xc646('0x1'))};
\ No newline at end of file
+var _0x11d5=['./rrmemory','./beepall','./agent','exports'];(function(_0x42ca4d,_0x4a7870){var _0x53cd46=function(_0x83b745){while(--_0x83b745){_0x42ca4d['push'](_0x42ca4d['shift']());}};_0x53cd46(++_0x4a7870);}(_0x11d5,0x1db));var _0x511d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x11d5[_0x3947c9];return _0x2e7871;};'use strict';module[_0x511d('0x0')]={'rrmemory':require(_0x511d('0x1')),'beepall':require(_0x511d('0x2')),'agent':require(_0x511d('0x3'))};
\ No newline at end of file
index 2c68edb..91eeac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8213=['realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','isAgentAvailable','agents','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','name','saveWaitingNotification','routing','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','TIMEOUT','busyQueue','removeWaitingNotification','uuid','./util','../../../../../config/logger','notificationId','squeue','queue'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0x8213,0x1bd));var _0x3821=function(_0xd0eef9,_0x4e1375){_0xd0eef9=_0xd0eef9-0x0;var _0x757b57=_0x8213[_0xd0eef9];return _0x757b57;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x3821('0x0'));var util=require(_0x3821('0x1'));var logger=require(_0x3821('0x2'))('routing');var RRMemory=function(_0x13b818,_0x3694cd,_0x32f41d,_0x4e1528){this[_0x3821('0x3')]=uuid['v4']();this[_0x3821('0x4')]=_0x13b818;this[_0x3821('0x5')]=_0x3694cd;this[_0x3821('0x6')]=_0x32f41d;this['routing']=_0x4e1528;this[_0x3821('0x7')]={};this[_0x3821('0x4')][_0x3821('0x8')](this[_0x3821('0x9')][_0x3821('0xa')](this),this[_0x3821('0xb')][_0x3821('0xa')](this),this[_0x3821('0xc')]);this[_0x3821('0x4')]['on'](_0x3821('0xd'),this[_0x3821('0xb')][_0x3821('0xa')](this));this[_0x3821('0x4')]['on'](_0x3821('0xe'),this[_0x3821('0xf')][_0x3821('0xa')](this));};RRMemory[_0x3821('0x10')]['push']=function(){this['squeue']['push'](this[_0x3821('0x9')][_0x3821('0xa')](this),this['handleTimeout']['bind'](this));};RRMemory[_0x3821('0x10')]['handleDrained']=function(){this[_0x3821('0xb')](!![]);};RRMemory[_0x3821('0x10')]['handleCheckReject']=function(_0x1d3a1c){if(util[_0x3821('0x11')](this[_0x3821('0x4')]['id'],this['realtime'][_0x3821('0x12')][this[_0x3821('0x13')]],this[_0x3821('0x4')][_0x3821('0x14')],!![])){logger[_0x3821('0x15')](_0x3821('0x16'),this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);clearInterval(this['intervals'][this[_0x3821('0x13')]]);_0x1d3a1c[_0x3821('0x17')]();setTimeout(this['push'][_0x3821('0xa')](this),0x3e8);}};RRMemory[_0x3821('0x10')][_0x3821('0x9')]=function(_0x4d1052){this[_0x3821('0x13')]=rr(this[_0x3821('0x5')][_0x3821('0x18')]);logger[_0x3821('0x15')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);if(_['isNil'](this['realtime'][_0x3821('0x12')][this['agentId']])){logger[_0x3821('0x15')](_0x3821('0x19'),this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);_0x4d1052[_0x3821('0x17')]();setTimeout(this['push'][_0x3821('0xa')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x3821('0x4')]['id'],this['realtime'][_0x3821('0x12')][this[_0x3821('0x13')]],this[_0x3821('0x4')]['channel'],!![])){this[_0x3821('0x6')][_0x3821('0x12')][this[_0x3821('0x13')]][_0x3821('0x1a')]=!![];this['realtime'][_0x3821('0x12')][this[_0x3821('0x13')]]['busyQueue']=this[_0x3821('0x5')][_0x3821('0x1b')];util[_0x3821('0x1c')](this[_0x3821('0x6')],this[_0x3821('0x1d')],this[_0x3821('0x6')][_0x3821('0x12')][this[_0x3821('0x13')]],this['squeue'][_0x3821('0x14')]);util[_0x3821('0x1e')](this[_0x3821('0x3')],this[_0x3821('0x4')]['id'],this['realtime'][_0x3821('0x12')][this[_0x3821('0x13')]],this['queue'],this[_0x3821('0x1d')]);util[_0x3821('0x1f')](this['squeue']['id'],this['realtime']['agents'][this[_0x3821('0x13')]],_0x3821('0x20'));this[_0x3821('0x7')][this[_0x3821('0x13')]]=setInterval(this[_0x3821('0x21')]['bind'](this,_0x4d1052),0x3e8);}else{logger[_0x3821('0x15')](_0x3821('0x22'),this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);_0x4d1052[_0x3821('0x17')]();setTimeout(this[_0x3821('0x8')][_0x3821('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x3821('0xb')]=function(_0x3c1ddf){logger[_0x3821('0x15')](_0x3821('0x23'),this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);if(_[_0x3821('0x24')](this[_0x3821('0x6')][_0x3821('0x12')][this[_0x3821('0x13')]])){logger[_0x3821('0x15')](_0x3821('0x19'),this[_0x3821('0x4')]['id'],this[_0x3821('0x13')]);}else{clearInterval(this[_0x3821('0x7')][this['agentId']]);util[_0x3821('0x25')](this['notificationId'],this[_0x3821('0x4')]['id'],this[_0x3821('0x6')][_0x3821('0x12')][this['agentId']],this[_0x3821('0x5')],this[_0x3821('0x1d')]);util[_0x3821('0x1f')](this[_0x3821('0x4')]['id'],this[_0x3821('0x6')][_0x3821('0x12')][this['agentId']],_0x3821('0x26'));this[_0x3821('0x6')]['agents'][this[_0x3821('0x13')]][_0x3821('0x1a')]=![];this[_0x3821('0x6')]['agents'][this[_0x3821('0x13')]][_0x3821('0x27')]=undefined;util[_0x3821('0x28')](this['realtime'],this[_0x3821('0x1d')],this[_0x3821('0x6')][_0x3821('0x12')][this[_0x3821('0x13')]],this[_0x3821('0x4')][_0x3821('0x14')]);}if(!_0x3c1ddf){setTimeout(this[_0x3821('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0x5da33c,_0xcbc919,_0x230f3d,_0x441ec2){return new RRMemory(_0x5da33c,_0xcbc919,_0x230f3d,_0x441ec2);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xe105=['realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agents','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','[%s][QUEUE]\x20try\x20with\x20%s','busy','busyQueue','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe105,0xe3));var _0x5e10=function(_0xebec18,_0xbc99d0){_0xebec18=_0xebec18-0x0;var _0x1103fa=_0xe105[_0xebec18];return _0x1103fa;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x5e10('0x0'));var util=require(_0x5e10('0x1'));var logger=require(_0x5e10('0x2'))(_0x5e10('0x3'));var RRMemory=function(_0x3be054,_0x28e9b5,_0x273291,_0x25dd2a){this[_0x5e10('0x4')]=uuid['v4']();this[_0x5e10('0x5')]=_0x3be054;this[_0x5e10('0x6')]=_0x28e9b5;this[_0x5e10('0x7')]=_0x273291;this['routing']=_0x25dd2a;this[_0x5e10('0x8')]={};this['squeue'][_0x5e10('0x9')](this[_0x5e10('0xa')][_0x5e10('0xb')](this),this[_0x5e10('0xc')][_0x5e10('0xb')](this),this[_0x5e10('0xd')]);this[_0x5e10('0x5')]['on'](_0x5e10('0xe'),this[_0x5e10('0xc')][_0x5e10('0xb')](this));this[_0x5e10('0x5')]['on'](_0x5e10('0xf'),this['handleDrained']['bind'](this));};RRMemory['prototype'][_0x5e10('0x9')]=function(){this[_0x5e10('0x5')][_0x5e10('0x9')](this[_0x5e10('0xa')][_0x5e10('0xb')](this),this[_0x5e10('0xc')][_0x5e10('0xb')](this));};RRMemory['prototype'][_0x5e10('0x10')]=function(){this[_0x5e10('0xc')](!![]);};RRMemory[_0x5e10('0x11')][_0x5e10('0x12')]=function(_0x1a7b8a){if(util[_0x5e10('0x13')](this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')][_0x5e10('0x14')][this['agentId']],this[_0x5e10('0x5')][_0x5e10('0x15')],!![])){logger[_0x5e10('0x16')](_0x5e10('0x17'),this[_0x5e10('0x5')]['id'],this[_0x5e10('0x18')]);clearInterval(this[_0x5e10('0x8')][this[_0x5e10('0x18')]]);_0x1a7b8a[_0x5e10('0x19')]();setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}};RRMemory[_0x5e10('0x11')][_0x5e10('0xa')]=function(_0x2dd2e1){this[_0x5e10('0x18')]=rr(this[_0x5e10('0x6')]['mapAgentsId']);logger[_0x5e10('0x16')](_0x5e10('0x1a'),this[_0x5e10('0x5')]['id'],this['agentId']);if(_['isNil'](this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]])){logger[_0x5e10('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x5e10('0x18')]);_0x2dd2e1[_0x5e10('0x19')]();setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}else{if(util[_0x5e10('0x13')](this[_0x5e10('0x5')]['id'],this['realtime'][_0x5e10('0x14')][this[_0x5e10('0x18')]],this['squeue'][_0x5e10('0x15')],!![])){this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]][_0x5e10('0x1b')]=!![];this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]][_0x5e10('0x1c')]=this[_0x5e10('0x6')][_0x5e10('0x1d')];util['saveWaitingNotification'](this['realtime'],this['routing'],this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]],this[_0x5e10('0x5')]['channel']);util[_0x5e10('0x1e')](this[_0x5e10('0x4')],this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this[_0x5e10('0x6')],this['routing']);util[_0x5e10('0x1f')](this['squeue']['id'],this['realtime']['agents'][this[_0x5e10('0x18')]],'RINGING');this[_0x5e10('0x8')][this[_0x5e10('0x18')]]=setInterval(this[_0x5e10('0x12')]['bind'](this,_0x2dd2e1),0x3e8);}else{logger['debug'](_0x5e10('0x20'),this['squeue']['id'],this[_0x5e10('0x18')]);_0x2dd2e1['done']();setTimeout(this[_0x5e10('0x9')]['bind'](this),0x3e8);}}};RRMemory['prototype']['handleTimeout']=function(_0x1f393a){logger[_0x5e10('0x16')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agentId']);if(_[_0x5e10('0x21')](this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]])){logger[_0x5e10('0x16')](_0x5e10('0x22'),this[_0x5e10('0x5')]['id'],this[_0x5e10('0x18')]);}else{clearInterval(this[_0x5e10('0x8')][this[_0x5e10('0x18')]]);util[_0x5e10('0x23')](this['notificationId'],this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this['queue'],this['routing']);util['writeLog'](this[_0x5e10('0x5')]['id'],this[_0x5e10('0x7')][_0x5e10('0x14')][this[_0x5e10('0x18')]],_0x5e10('0x24'));this[_0x5e10('0x7')]['agents'][this['agentId']][_0x5e10('0x1b')]=![];this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]]['busyQueue']=undefined;util[_0x5e10('0x25')](this[_0x5e10('0x7')],this[_0x5e10('0x3')],this[_0x5e10('0x7')]['agents'][this[_0x5e10('0x18')]],this[_0x5e10('0x5')]['channel']);}if(!_0x1f393a){setTimeout(this[_0x5e10('0x9')][_0x5e10('0xb')](this),0x3e8);}};function rrmemory(_0x31a852,_0x45cd62,_0x30de2d,_0x493a9b){return new RRMemory(_0x31a852,_0x45cd62,_0x30de2d,_0x493a9b);}module[_0x5e10('0x26')]=rrmemory;
\ No newline at end of file
index e9f5824..6e4d0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf920=['hideNotification','checkWaitingNotifications','interaction','some','capitalize','channel','InteractionId','agents','WaitingInteractions','saveWaitingNotification','message','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','socket.io-emitter','format','user:%s','emit','user:save','split','\x20interaction','name','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','showNotification'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf920,0x72));var _0x0f92=function(_0x4adead,_0x3e7eef){_0x4adead=_0x4adead-0x0;var _0x34cfca=_0xf920[_0x4adead];return _0x34cfca;};'use strict';var _=require(_0x0f92('0x0'));var util=require(_0x0f92('0x1'));var utils=require(_0x0f92('0x2'));var Redis=require(_0x0f92('0x3'));var config=require(_0x0f92('0x4'));var logger=require(_0x0f92('0x5'))(_0x0f92('0x6'));config['redis']=_[_0x0f92('0x7')](config[_0x0f92('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x0f92('0x9'))(new Redis(config[_0x0f92('0x8')]));function sendNotification(_0xfdac7c,_0x1c7f6b,_0x58498b,_0x489b55,_0x56506c,_0x4bbf7d){io['to'](util[_0x0f92('0xa')](_0x0f92('0xb'),_0x489b55['name']))[_0x0f92('0xc')](_0x0f92('0xd'),_0x489b55);var _0x4a0ae6=_0x4bbf7d||{};var _0x3993f4=_0x58498b[_0x0f92('0xe')]('.');var _0x47b956={'uniqueid':_0x1c7f6b,'channel':_0x3993f4[0x0],'id':_0x3993f4[0x1],'title':_0x3993f4[0x0]+_0x0f92('0xf'),'interactionId':_0x3993f4[0x2],'queue':_0x56506c?_0x56506c[_0x0f92('0x10')]:null,'sound':_0x4a0ae6[_0x0f92('0x11')]['notificationSound'],'shake':_0x4a0ae6[_0x0f92('0x11')][_0x0f92('0x12')]};try{if(!_0x4a0ae6[_0x0f92('0x13')]){_0x4a0ae6[_0x0f92('0x13')]={};}if(_0x56506c){_0x4a0ae6[_0x0f92('0x13')][_0x0f92('0x14')]=_0x56506c;}else if(_0x4a0ae6['body'][_0x0f92('0x14')]){delete _0x4a0ae6[_0x0f92('0x13')][_0x0f92('0x14')];}_0x47b956[_0x0f92('0x15')]=utils[_0x0f92('0x16')](_0x4a0ae6[_0x0f92('0x11')][_0x0f92('0x17')],_0x4a0ae6);}catch(_0xf44876){_0x47b956[_0x0f92('0x15')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x0f92('0x18')](util['format'](_0x0f92('0x19'),_0x1c7f6b,_0xf44876['message']));}io['to'](util[_0x0f92('0xa')](_0x0f92('0xb'),_0x489b55[_0x0f92('0x10')]))['emit'](util['format'](_0x0f92('0x1a'),_0xfdac7c?_0x0f92('0x1b'):_0x0f92('0x1c')),_0x47b956);}function writeLog(_0x18ece0,_0x371fb4,_0x5bba28){return logger['debug'](util[_0x0f92('0xa')](_0x0f92('0x1d'),_0x18ece0,_0x371fb4[_0x0f92('0x10')],_0x5bba28));}exports[_0x0f92('0x1e')]=function(_0x57ba62,_0x4d97a2,_0x41a9e2,_0x3972bb){if(_0x4d97a2['busy']){writeLog(_0x57ba62,_0x4d97a2,_0x0f92('0x1f'));return![];}if(!_0x4d97a2[_0x0f92('0x20')]){writeLog(_0x57ba62,_0x4d97a2,_0x0f92('0x21'));return![];}if(_0x4d97a2[_0x41a9e2+'Pause']){writeLog(_0x57ba62,_0x4d97a2,_0x0f92('0x22'));return![];}if(_0x3972bb&&_0x4d97a2[_0x0f92('0x23')](_0x41a9e2+_0x0f92('0x24'))&&_0x4d97a2['hasOwnProperty'](_0x41a9e2+_0x0f92('0x25'))){if(_0x4d97a2[_0x41a9e2+_0x0f92('0x24')]>0x0&&_0x4d97a2[_0x41a9e2+_0x0f92('0x25')]>=_0x4d97a2[_0x41a9e2+'Capacity']){writeLog(_0x57ba62,_0x4d97a2,_0x41a9e2['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x0f92('0x26')]=function(_0x591aa2,_0x46b6ae,_0x17cbdc,_0x19aea7,_0x254491){return sendNotification(!![],_0x591aa2,_0x46b6ae,_0x17cbdc,_0x19aea7,_0x254491);};exports[_0x0f92('0x27')]=function(_0x3167d8,_0x50607b,_0x1d2735,_0x2cbc8b,_0x28aa24){return sendNotification(![],_0x3167d8,_0x50607b,_0x1d2735,_0x2cbc8b,_0x28aa24);};exports[_0x0f92('0x28')]=function(_0x55da1f,_0x194156,_0x6ae174){var _0x1cdf1d=_0x194156[_0x0f92('0x29')]['UserId'];if(!_0x1cdf1d&&_0x6ae174){_0x1cdf1d=_0x6ae174['id'];}var _0x568c9c=_[_0x0f92('0x2a')](_0x55da1f[_0x194156['channel']+'QueuesWaitingInteractions'],function(_0x148844){var _0x1bc287=_[_0x0f92('0x2b')](_0x194156[_0x0f92('0x2c')])+_0x0f92('0x2d');return _0x148844[_0x1bc287]===_0x194156[_0x0f92('0x29')]['id'];});if(!_0x568c9c&&_0x1cdf1d){_0x568c9c=_[_0x0f92('0x2a')](_0x55da1f[_0x0f92('0x2e')][_0x1cdf1d][_0x194156[_0x0f92('0x2c')]+_0x0f92('0x2f')],function(_0x2ee06d){return _0x2ee06d['id']===_0x194156[_0x0f92('0x29')]['id'];});}return _0x568c9c;};exports[_0x0f92('0x30')]=function(_0x3f9429,_0x40ce94,_0x77b763,_0x547de2){_0x3f9429[_0x0f92('0x2e')][_0x77b763['id']][_0x547de2+'WaitingInteractions'][_0x40ce94[_0x0f92('0x31')]['id']]={'id':_0x40ce94['interaction']['id']};};exports['removeWaitingNotification']=function(_0x589a84,_0x2b8d95,_0x53410f,_0x4da90f){delete _0x589a84[_0x0f92('0x2e')][_0x53410f['id']][_0x4da90f+'WaitingInteractions'][_0x2b8d95[_0x0f92('0x31')]['id']];};exports[_0x0f92('0x32')]=writeLog;
\ No newline at end of file
+var _0x105a=['lodash','util','../utils','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','format','user:%s','emit','user:save','\x20interaction','name','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','notification:%s','save','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','some','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','writeLog'];(function(_0x106166,_0xf8a087){var _0x2a9c4a=function(_0x513aeb){while(--_0x513aeb){_0x106166['push'](_0x106166['shift']());}};_0x2a9c4a(++_0xf8a087);}(_0x105a,0x1ea));var _0xa105=function(_0xdbf266,_0x4fc4e2){_0xdbf266=_0xdbf266-0x0;var _0x36d1b3=_0x105a[_0xdbf266];return _0x36d1b3;};'use strict';var _=require(_0xa105('0x0'));var util=require(_0xa105('0x1'));var utils=require(_0xa105('0x2'));var Redis=require('ioredis');var config=require('../../../../../config/environment');var logger=require(_0xa105('0x3'))(_0xa105('0x4'));config[_0xa105('0x5')]=_[_0xa105('0x6')](config['redis'],{'host':_0xa105('0x7'),'port':0x18eb});var io=require(_0xa105('0x8'))(new Redis(config['redis']));function sendNotification(_0x281a34,_0x322303,_0x2e8f61,_0x5c4845,_0x5af1ef,_0x27a8ba){io['to'](util[_0xa105('0x9')](_0xa105('0xa'),_0x5c4845['name']))[_0xa105('0xb')](_0xa105('0xc'),_0x5c4845);var _0x1f566e=_0x27a8ba||{};var _0x3f1331=_0x2e8f61['split']('.');var _0x2189ab={'uniqueid':_0x322303,'channel':_0x3f1331[0x0],'id':_0x3f1331[0x1],'title':_0x3f1331[0x0]+_0xa105('0xd'),'interactionId':_0x3f1331[0x2],'queue':_0x5af1ef?_0x5af1ef[_0xa105('0xe')]:null,'sound':_0x1f566e[_0xa105('0xf')]['notificationSound'],'shake':_0x1f566e[_0xa105('0xf')]['notificationShake']};try{if(!_0x1f566e[_0xa105('0x10')]){_0x1f566e[_0xa105('0x10')]={};}if(_0x5af1ef){_0x1f566e[_0xa105('0x10')][_0xa105('0x11')]=_0x5af1ef;}else if(_0x1f566e[_0xa105('0x10')]['queue']){delete _0x1f566e['body'][_0xa105('0x11')];}_0x2189ab[_0xa105('0x12')]=utils[_0xa105('0x13')](_0x1f566e[_0xa105('0xf')][_0xa105('0x14')],_0x1f566e);}catch(_0x561169){_0x2189ab[_0xa105('0x12')]=_0xa105('0x15');logger[_0xa105('0x16')](util[_0xa105('0x9')](_0xa105('0x17'),_0x322303,_0x561169['message']));}io['to'](util[_0xa105('0x9')]('user:%s',_0x5c4845[_0xa105('0xe')]))[_0xa105('0xb')](util[_0xa105('0x9')](_0xa105('0x18'),_0x281a34?_0xa105('0x19'):'remove'),_0x2189ab);}function writeLog(_0x4ab151,_0x52d4b2,_0x48c744){return logger[_0xa105('0x1a')](util[_0xa105('0x9')](_0xa105('0x1b'),_0x4ab151,_0x52d4b2['name'],_0x48c744));}exports[_0xa105('0x1c')]=function(_0x52fec4,_0x3b79b4,_0x26fd11,_0x52cf43){if(_0x3b79b4['busy']){writeLog(_0x52fec4,_0x3b79b4,_0xa105('0x1d'));return![];}if(!_0x3b79b4[_0xa105('0x1e')]){writeLog(_0x52fec4,_0x3b79b4,_0xa105('0x1f'));return![];}if(_0x3b79b4[_0x26fd11+'Pause']){writeLog(_0x52fec4,_0x3b79b4,'PAUSE');return![];}if(_0x52cf43&&_0x3b79b4[_0xa105('0x20')](_0x26fd11+'Capacity')&&_0x3b79b4[_0xa105('0x20')](_0x26fd11+_0xa105('0x21'))){if(_0x3b79b4[_0x26fd11+_0xa105('0x22')]>0x0&&_0x3b79b4[_0x26fd11+_0xa105('0x21')]>=_0x3b79b4[_0x26fd11+_0xa105('0x22')]){writeLog(_0x52fec4,_0x3b79b4,_0x26fd11[_0xa105('0x23')]()+_0xa105('0x24'));return![];}}return!![];};exports[_0xa105('0x25')]=function(_0x35bad1,_0x411da4,_0x4dc690,_0x38c3ab,_0x2c2bcc){return sendNotification(!![],_0x35bad1,_0x411da4,_0x4dc690,_0x38c3ab,_0x2c2bcc);};exports[_0xa105('0x26')]=function(_0xf86e4b,_0x975afa,_0x2741ae,_0x1c82c0,_0x4bab6d){return sendNotification(![],_0xf86e4b,_0x975afa,_0x2741ae,_0x1c82c0,_0x4bab6d);};exports[_0xa105('0x27')]=function(_0x5880df,_0x35711b,_0x2a80c1){var _0x4fff9c=_0x35711b[_0xa105('0x28')]['UserId'];if(!_0x4fff9c&&_0x2a80c1){_0x4fff9c=_0x2a80c1['id'];}var _0x573f1a=_[_0xa105('0x29')](_0x5880df[_0x35711b[_0xa105('0x2a')]+'QueuesWaitingInteractions'],function(_0x22356e){var _0x278d23=_['capitalize'](_0x35711b[_0xa105('0x2a')])+_0xa105('0x2b');return _0x22356e[_0x278d23]===_0x35711b['interaction']['id'];});if(!_0x573f1a&&_0x4fff9c){_0x573f1a=_[_0xa105('0x29')](_0x5880df[_0xa105('0x2c')][_0x4fff9c][_0x35711b[_0xa105('0x2a')]+'WaitingInteractions'],function(_0x337a51){return _0x337a51['id']===_0x35711b[_0xa105('0x28')]['id'];});}return _0x573f1a;};exports[_0xa105('0x2d')]=function(_0x20b614,_0x17c803,_0x494d6a,_0x3651fb){_0x20b614[_0xa105('0x2c')][_0x494d6a['id']][_0x3651fb+_0xa105('0x2e')][_0x17c803['message']['id']]={'id':_0x17c803[_0xa105('0x28')]['id']};};exports[_0xa105('0x2f')]=function(_0x570dd2,_0x177c9c,_0xba3e91,_0x3497fc){delete _0x570dd2[_0xa105('0x2c')][_0xba3e91['id']][_0x3497fc+_0xa105('0x2e')][_0x177c9c['message']['id']];};exports[_0xa105('0x30')]=writeLog;
\ No newline at end of file
index ade0108..d627225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x503c=['[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','routing','string','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','info','next','getMustacheRender','trim','replace','isEmpty'];(function(_0x111e88,_0x2f2300){var _0x2e0316=function(_0x7de613){while(--_0x7de613){_0x111e88['push'](_0x111e88['shift']());}};_0x2e0316(++_0x2f2300);}(_0x503c,0x1bd));var _0xc503=function(_0x154980,_0x2710e5){_0x154980=_0x154980-0x0;var _0x55a463=_0x503c[_0x154980];return _0x55a463;};'use strict';var schema=require('validate');var sh=require('shelljs');var _=require('lodash');var utils=require('./utils');var logger=require('../../../../config/logger')(_0xc503('0x0'));var system=schema({'command':{'type':_0xc503('0x1'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xc503('0x2')]=function(_0x2be69a,_0xecbfca){return function(_0x44350f){try{var _0x3cb881={'command':_0xecbfca[0x0]};var _0x5e1043=system['validate'](_0x3cb881,{'typecast':!![]});if(_0x5e1043[_0xc503('0x3')]){logger[_0xc503('0x4')](_0xc503('0x5'),_0x2be69a,_[_0xc503('0x6')](_0x5e1043,_0xc503('0x7'))['join'](',\x20'));logger[_0xc503('0x8')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2be69a);_0x44350f[_0xc503('0x9')]();}else{var _0x4dede1=this;var _0x321cb3=utils[_0xc503('0xa')](_0xecbfca[0x0],this);logger[_0xc503('0x8')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x2be69a,_0x321cb3);sh['exec'](_[_0xc503('0xb')](_0x321cb3),function(_0x2fa6e5,_0x169e3d){logger[_0xc503('0x8')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x2be69a,_0x2fa6e5);if(_0x2fa6e5==0x0){var _0xe34565=_0x169e3d[_0xc503('0xc')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0xecbfca[0x1])||_[_0xc503('0xd')](_0xecbfca[0x1])){logger[_0xc503('0x8')](_0xc503('0xe'),_0x2be69a);_0x4dede1[_0xc503('0xf')][_0xecbfca[0x1]]=_0xe34565;}else{logger[_0xc503('0x8')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x2be69a,_0xecbfca[0x1],_0xe34565);_0x4dede1[_0xc503('0xf')][_0xecbfca[0x1]]=_0xe34565;}}_0x44350f[_0xc503('0x9')]();});}}catch(_0x3f3b4b){logger[_0xc503('0x4')](_0xc503('0x5'),_0x2be69a,_['isObject'](_0x3f3b4b)?JSON['stringify'](_0x3f3b4b):_0x3f3b4b);logger[_0xc503('0x8')](_0xc503('0x10'),_0x2be69a);_0x44350f['next']();}};};
\ No newline at end of file
+var _0x7900=['stringify','validate','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][SYSTEM]\x20%s','join','info','next','[%s][SYSTEM]\x20commnad:\x20%s','trim','replace','isNil','isEmpty','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0x7900,0x7f));var _0x0790=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7900[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x0790('0x0'));var sh=require('shelljs');var _=require('lodash');var utils=require(_0x0790('0x1'));var logger=require(_0x0790('0x2'))(_0x0790('0x3'));var system=schema({'command':{'type':_0x0790('0x4'),'required':!![],'message':_0x0790('0x5')}});exports['consequence']=function(_0x4b41d4,_0x56d814){return function(_0x33913e){try{var _0xbeed1a={'command':_0x56d814[0x0]};var _0x2fc351=system[_0x0790('0x0')](_0xbeed1a,{'typecast':!![]});if(_0x2fc351[_0x0790('0x6')]){logger[_0x0790('0x7')](_0x0790('0x8'),_0x4b41d4,_['map'](_0x2fc351,'message')[_0x0790('0x9')](',\x20'));logger[_0x0790('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4b41d4);_0x33913e[_0x0790('0xb')]();}else{var _0x9adf8a=this;var _0x527a74=utils['getMustacheRender'](_0x56d814[0x0],this);logger[_0x0790('0xa')](_0x0790('0xc'),_0x4b41d4,_0x527a74);sh['exec'](_[_0x0790('0xd')](_0x527a74),function(_0x10db08,_0x237e63){logger[_0x0790('0xa')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x4b41d4,_0x10db08);if(_0x10db08==0x0){var _0x183e87=_0x237e63[_0x0790('0xe')](/(\r\n|\n|\r)/gm,'');if(_[_0x0790('0xf')](_0x56d814[0x1])||_[_0x0790('0x10')](_0x56d814[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x4b41d4);_0x9adf8a[_0x0790('0x11')][_0x56d814[0x1]]=_0x183e87;}else{logger[_0x0790('0xa')](_0x0790('0x12'),_0x4b41d4,_0x56d814[0x1],_0x183e87);_0x9adf8a[_0x0790('0x11')][_0x56d814[0x1]]=_0x183e87;}}_0x33913e[_0x0790('0xb')]();});}}catch(_0x224a9b){logger[_0x0790('0x7')](_0x0790('0x8'),_0x4b41d4,_[_0x0790('0x13')](_0x224a9b)?JSON[_0x0790('0x14')](_0x224a9b):_0x224a9b);logger[_0x0790('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4b41d4);_0x33913e[_0x0790('0xb')]();}};};
\ No newline at end of file
index 580c95c..44f2624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba05=['TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','Interaction','channel','interaction','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','finally','validate','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number'];(function(_0x34b28a,_0x229607){var _0xbbe2aa=function(_0x194301){while(--_0x194301){_0x34b28a['push'](_0x34b28a['shift']());}};_0xbbe2aa(++_0x229607);}(_0xba05,0xe2));var _0x5ba0=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xba05[_0x7e2eb0];return _0xd92de4;};'use strict';var schema=require(_0x5ba0('0x0'));var _=require(_0x5ba0('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x5ba0('0x2')),'smsInteraction':require(_0x5ba0('0x3')),'mailInteraction':require(_0x5ba0('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x5ba0('0x5'))};var logger=require(_0x5ba0('0x6'))('routing');var tag=schema({'tag':{'type':_0x5ba0('0x7'),'required':!![],'message':_0x5ba0('0x8')}});exports[_0x5ba0('0x9')]=function(_0x2788f9,_0x2c9229,_0xb4cbd5,_0x563461){return function(_0x3774fe){try{var _0x36aa49={'tag':_0x2c9229[0x0]};var _0x278898=tag[_0x5ba0('0x0')](_0x36aa49,{'typecast':!![]});if(_0x278898[_0x5ba0('0xa')]){logger[_0x5ba0('0xb')](_0x5ba0('0xc'),_0x2788f9,_[_0x5ba0('0xd')](_0x278898,_0x5ba0('0xe'))[_0x5ba0('0xf')](',\x20'));logger['info'](_0x5ba0('0x10'),_0x2788f9);_0x3774fe[_0x5ba0('0x11')]();}else{var _0x37126b={'ids':[_0x2c9229[0x0]]};if(rpc[_0x563461['channel']+_0x5ba0('0x12')]){rpc[_0x563461[_0x5ba0('0x13')]+_0x5ba0('0x12')]['addTags'](_0x563461[_0x5ba0('0x14')]['id'],_0x37126b)['then'](function(_0x1f6acc){logger[_0x5ba0('0x15')](_0x5ba0('0x16'),_0x2788f9,_0x2c9229[0x1],_0x563461['channel'],_0x563461['interaction']['id']);})[_0x5ba0('0x17')](function(_0x5a6694){logger['error'](_0x5ba0('0xc'),_0x2788f9,JSON[_0x5ba0('0x18')](_0x5a6694));logger[_0x5ba0('0x15')](_0x5ba0('0x10'),_0x2788f9);})[_0x5ba0('0x19')](function(){_0x3774fe['next']();});}}}catch(_0x382323){logger['error'](_0x5ba0('0xc'),_0x2788f9,_['isObject'](_0x382323)?JSON['stringify'](_0x382323):_0x382323);logger[_0x5ba0('0x15')](_0x5ba0('0x10'),_0x2788f9);_0x3774fe[_0x5ba0('0x11')]();}};};
\ No newline at end of file
+var _0x909d=['addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','error','stringify','finally','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','consequence','validate','length','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction'];(function(_0x79fb55,_0x2b48b9){var _0x5a1610=function(_0x1d3865){while(--_0x1d3865){_0x79fb55['push'](_0x79fb55['shift']());}};_0x5a1610(++_0x2b48b9);}(_0x909d,0x1d3));var _0xd909=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0x909d[_0x18cd5b];return _0x5eaa52;};'use strict';var schema=require('validate');var _=require(_0xd909('0x0'));var rpc={'chatInteraction':require(_0xd909('0x1')),'openchannelInteraction':require(_0xd909('0x2')),'smsInteraction':require(_0xd909('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xd909('0x4')),'whatsappInteraction':require(_0xd909('0x5'))};var logger=require(_0xd909('0x6'))('routing');var tag=schema({'tag':{'type':_0xd909('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xd909('0x8')]=function(_0x1ba795,_0x516740,_0x42fd54,_0x5d2437){return function(_0x3f38be){try{var _0xe0c92d={'tag':_0x516740[0x0]};var _0x392378=tag[_0xd909('0x9')](_0xe0c92d,{'typecast':!![]});if(_0x392378[_0xd909('0xa')]){logger['error'](_0xd909('0xb'),_0x1ba795,_[_0xd909('0xc')](_0x392378,_0xd909('0xd'))['join'](',\x20'));logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);_0x3f38be[_0xd909('0x10')]();}else{var _0x34108b={'ids':[_0x516740[0x0]]};if(rpc[_0x5d2437[_0xd909('0x11')]+_0xd909('0x12')]){rpc[_0x5d2437[_0xd909('0x11')]+_0xd909('0x12')][_0xd909('0x13')](_0x5d2437['interaction']['id'],_0x34108b)[_0xd909('0x14')](function(_0x3efc9d){logger[_0xd909('0xe')](_0xd909('0x15'),_0x1ba795,_0x516740[0x1],_0x5d2437[_0xd909('0x11')],_0x5d2437[_0xd909('0x16')]['id']);})[_0xd909('0x17')](function(_0x30728a){logger[_0xd909('0x18')](_0xd909('0xb'),_0x1ba795,JSON[_0xd909('0x19')](_0x30728a));logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);})[_0xd909('0x1a')](function(){_0x3f38be['next']();});}}}catch(_0x641199){logger[_0xd909('0x18')](_0xd909('0xb'),_0x1ba795,_['isObject'](_0x641199)?JSON[_0xd909('0x19')](_0x641199):_0x641199);logger[_0xd909('0xe')](_0xd909('0xf'),_0x1ba795);_0x3f38be[_0xd909('0x10')]();}};};
\ No newline at end of file
index 499d210..3141746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec9=['[%s][TVOX]\x20%s','isObject','next','request-promise','routing','consequence','replace','push','urlOnAnswer','?params=','urlOnRing','method','login','params','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','&sessionId=','&data=','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error'];(function(_0x1f616d,_0x1ddf5d){var _0x3219a6=function(_0x3e307e){while(--_0x3e307e){_0x1f616d['push'](_0x1f616d['shift']());}};_0x3219a6(++_0x1ddf5d);}(_0xaec9,0x85));var _0x9aec=function(_0x45b29d,_0x44ce43){_0x45b29d=_0x45b29d-0x0;var _0x32d74=_0xaec9[_0x45b29d];return _0x32d74;};'use strict';var rp=require(_0x9aec('0x0'));var logger=require('../../../../config/logger')(_0x9aec('0x1'));var _=require('lodash');var arr=[];exports[_0x9aec('0x2')]=function(_0x5d2f02,_0x1307ea){return function(_0x322690){var _0x28feeb=_0x1307ea[0xa];var _0x3da5a5=_0x1307ea[0xb];var _0x2e70f3=_0x1307ea[0xc];var _0xff0914=_0x1307ea[0xd];var _0x47b1aa=_0x1307ea[0xe];var _0x45c581=_0x1307ea[0xf]['replace'](/\n/g,'\x20-\x20');var _0x49840e=_0x1307ea[0x10][_0x9aec('0x3')](/\n/g,'\x20');if(!arr['includes'](_0x3da5a5)){arr[_0x9aec('0x4')](_0x3da5a5);var _0x18bccf=_0x1307ea[0x3];var _0x38c5be=_0x1307ea[0x4];var _0x14489d=_0x1307ea[0x1];var _0x482b15=_0x1307ea[0x0];var _0x8b9c98={};_0x8b9c98[_0x9aec('0x5')]=_0x1307ea[0x8]+_0x9aec('0x6')+_0x2e70f3+'|'+_0x28feeb+'|'+_0xff0914+'|'+_0x3da5a5+'|'+_0x47b1aa;_0x8b9c98[_0x9aec('0x7')]=_0x1307ea[0x7]+_0x9aec('0x6')+_0x2e70f3+'|'+_0x28feeb+'|'+_0xff0914+'|'+_0x3da5a5+'|'+_0x47b1aa+'|'+_0x45c581+'|'+_0x49840e;_0x8b9c98['title']=_0x1307ea[0x9];var _0xa5f7ef={};_0xa5f7ef['jsonrpc']='2.0';_0xa5f7ef[_0x9aec('0x8')]=_0x9aec('0x9');var _0x119fcc=[];_0x119fcc[_0x9aec('0x4')](_0x1307ea[0x2]);_0x119fcc[_0x9aec('0x4')](_0x1307ea[0x5]);_0x119fcc[_0x9aec('0x4')](_0x1307ea[0x6]);_0xa5f7ef[_0x9aec('0xa')]=_0x119fcc;_0xa5f7ef['id']=0x1;var _0x1e828b=JSON['stringify'](_0xa5f7ef);var _0x170133={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x18bccf,'headers':{'Content-Type':_0x9aec('0xb')},'body':_0x1e828b};return rp(_0x170133)[_0x9aec('0xc')](function(_0x57feb8){const _0x203fe1=JSON[_0x9aec('0xd')](_0x57feb8);if(!_0x203fe1[_0x9aec('0xe')][_0x9aec('0xf')]){throw new Error(_0x9aec('0x10'));}var _0x33bf9d=_0x3da5a5;var _0x17d9aa='channelId='+_0x14489d+'&serviceId='+_0x482b15+_0x9aec('0x11')+_0x33bf9d+_0x9aec('0x12')+JSON['stringify'](_0x8b9c98);var _0xdb6e9f=_0x38c5be+'?'+_0x17d9aa;return rp(_0xdb6e9f);})[_0x9aec('0xc')](function(_0x188323){logger['info'](_0x9aec('0x13'),_0x5d2f02,_0x188323);_0x322690[_0x9aec('0x14')]();})[_0x9aec('0x15')](function(_0x29b32d){logger[_0x9aec('0x16')](_0x9aec('0x17'),_0x5d2f02,_[_0x9aec('0x18')](_0x29b32d)?JSON['stringify'](_0x29b32d):_0x29b32d);_0x322690[_0x9aec('0x14')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x5d2f02);_0x322690[_0x9aec('0x19')]();}};};
\ No newline at end of file
+var _0xeb8a=['request-promise','routing','lodash','consequence','\x20-\x20','replace','includes','push','urlOnAnswer','?params=','urlOnRing','title','jsonrpc','params','utf8','POST','application/json-rpc','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','stringify','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next'];(function(_0x1f535b,_0xc42523){var _0x5bb329=function(_0xcaa78d){while(--_0xcaa78d){_0x1f535b['push'](_0x1f535b['shift']());}};_0x5bb329(++_0xc42523);}(_0xeb8a,0x155));var _0xaeb8=function(_0x119b7e,_0x13115e){_0x119b7e=_0x119b7e-0x0;var _0x3877af=_0xeb8a[_0x119b7e];return _0x3877af;};'use strict';var rp=require(_0xaeb8('0x0'));var logger=require('../../../../config/logger')(_0xaeb8('0x1'));var _=require(_0xaeb8('0x2'));var arr=[];exports[_0xaeb8('0x3')]=function(_0x228d03,_0x3c41c7){return function(_0x3cda4b){var _0x42267a=_0x3c41c7[0xa];var _0x501a08=_0x3c41c7[0xb];var _0x44fc7d=_0x3c41c7[0xc];var _0x1bd2b1=_0x3c41c7[0xd];var _0x411323=_0x3c41c7[0xe];var _0x3abe92=_0x3c41c7[0xf]['replace'](/\n/g,_0xaeb8('0x4'));var _0x40aa97=_0x3c41c7[0x10][_0xaeb8('0x5')](/\n/g,'\x20');if(!arr[_0xaeb8('0x6')](_0x501a08)){arr[_0xaeb8('0x7')](_0x501a08);var _0x13edb6=_0x3c41c7[0x3];var _0x213ee8=_0x3c41c7[0x4];var _0x135821=_0x3c41c7[0x1];var _0x350c28=_0x3c41c7[0x0];var _0x271577={};_0x271577[_0xaeb8('0x8')]=_0x3c41c7[0x8]+_0xaeb8('0x9')+_0x44fc7d+'|'+_0x42267a+'|'+_0x1bd2b1+'|'+_0x501a08+'|'+_0x411323;_0x271577[_0xaeb8('0xa')]=_0x3c41c7[0x7]+_0xaeb8('0x9')+_0x44fc7d+'|'+_0x42267a+'|'+_0x1bd2b1+'|'+_0x501a08+'|'+_0x411323+'|'+_0x3abe92+'|'+_0x40aa97;_0x271577[_0xaeb8('0xb')]=_0x3c41c7[0x9];var _0xbd4eac={};_0xbd4eac[_0xaeb8('0xc')]='2.0';_0xbd4eac['method']='login';var _0x10ca60=[];_0x10ca60[_0xaeb8('0x7')](_0x3c41c7[0x2]);_0x10ca60[_0xaeb8('0x7')](_0x3c41c7[0x5]);_0x10ca60['push'](_0x3c41c7[0x6]);_0xbd4eac[_0xaeb8('0xd')]=_0x10ca60;_0xbd4eac['id']=0x1;var _0x287766=JSON['stringify'](_0xbd4eac);var _0x362cae={'encoding':_0xaeb8('0xe'),'method':_0xaeb8('0xf'),'timeout':0x2710,'url':_0x13edb6,'headers':{'Content-Type':_0xaeb8('0x10')},'body':_0x287766};return rp(_0x362cae)['then'](function(_0x16105e){const _0x474f6c=JSON[_0xaeb8('0x11')](_0x16105e);if(!_0x474f6c['result'][_0xaeb8('0x12')]){throw new Error(_0xaeb8('0x13'));}var _0x284d9e=_0x501a08;var _0x4d25b4=_0xaeb8('0x14')+_0x135821+'&serviceId='+_0x350c28+_0xaeb8('0x15')+_0x284d9e+_0xaeb8('0x16')+JSON[_0xaeb8('0x17')](_0x271577);var _0x5519da=_0x213ee8+'?'+_0x4d25b4;return rp(_0x5519da);})['then'](function(_0x4172d7){logger[_0xaeb8('0x18')](_0xaeb8('0x19'),_0x228d03,_0x4172d7);_0x3cda4b[_0xaeb8('0x1a')]();})['catch'](function(_0x39988b){logger[_0xaeb8('0x1b')](_0xaeb8('0x1c'),_0x228d03,_[_0xaeb8('0x1d')](_0x39988b)?JSON[_0xaeb8('0x17')](_0x39988b):_0x39988b);_0x3cda4b['stop']();});}else{logger[_0xaeb8('0x18')](_0xaeb8('0x1e'),_0x228d03);_0x3cda4b['next']();}};};
\ No newline at end of file
index 923b3c7..d45c8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x5121d7,_0xd20d63){var _0x53eea5=function(_0x4ca269){while(--_0x4ca269){_0x5121d7['push'](_0x5121d7['shift']());}};_0x53eea5(++_0xd20d63);}(_0x9c44,0x178));var _0x49c4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x101e0c,_0x120640){var _0x277f2f=function(_0x50bfa1){while(--_0x50bfa1){_0x101e0c['push'](_0x101e0c['shift']());}};_0x277f2f(++_0x120640);}(_0xe706,0xa3));var _0x6e70=function(_0x4b4638,_0xe99cda){_0x4b4638=_0x4b4638-0x0;var _0x59e92b=_0xe706[_0x4b4638];return _0x59e92b;};'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 e8e5c01..8782fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb8f=['../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','push','slice','dialogflow','amazonlex','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','body','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','end','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','available','name','waiting','mailQueues','openchannelQueues','loggedIn','smsQueues','paused','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','bluebird','./applications/utils','./applications/strategy/util','../../../config/logger'];(function(_0x9c3a98,_0x5aa76d){var _0x6da6b8=function(_0x568b7b){while(--_0x568b7b){_0x9c3a98['push'](_0x9c3a98['shift']());}};_0x6da6b8(++_0x5aa76d);}(_0xdb8f,0x127));var _0xfdb8=function(_0x5d4818,_0x3ccae2){_0x5d4818=_0x5d4818-0x0;var _0x578a9c=_0xdb8f[_0x5d4818];return _0x578a9c;};'use strict';var _=require('lodash');var util=require(_0xfdb8('0x0'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xfdb8('0x1'));var utils=require(_0xfdb8('0x2'));var sUtils=require(_0xfdb8('0x3'));var logger=require(_0xfdb8('0x4'))('routing');var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xfdb8('0x5')),'chatQueueReport':require(_0xfdb8('0x6')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xfdb8('0x7')),'whatsappQueueReport':require(_0xfdb8('0x8'))};var RuleEngine=require(_0xfdb8('0x9'));function getId(_0x2cc358,_0x3b691f,_0x461184){return util['format'](_0xfdb8('0xa'),_0x2cc358,_0x3b691f||0x0,_0x461184||0x0);}function getIntervals(_0x44b333,_0x43d80f){var _0x306459=[];if(!_[_0xfdb8('0xb')](_0x43d80f['IntervalId'])&&!_['isNil'](_0x44b333[_0x43d80f[_0xfdb8('0xc')]])&&!_[_0xfdb8('0xb')](_0x44b333[_0x43d80f[_0xfdb8('0xc')]][_0xfdb8('0xd')])){_0x306459=_[_0xfdb8('0xe')](_0x44b333[_0x43d80f[_0xfdb8('0xc')]][_0xfdb8('0xd')],'interval');}else if(!_[_0xfdb8('0xb')](_0x43d80f[_0xfdb8('0xf')])){_0x306459=[_0x43d80f['interval']];}return _0x306459;}exports['listen']=function(_0x480795){_0x480795[_0xfdb8('0x10')]={};return new BPromise(function(_0x210a75,_0x1d86e9){var _0x5dfb37={'Start':function(_0x46c07c){var _0x1cafa5=this;return new Promise(function(_0x326e71,_0x2cf61c){if(_0x46c07c){try{var _0x19d158=[];var _0x3716c5=getId(_0x46c07c[_0xfdb8('0x11')],_0x46c07c[_0xfdb8('0x12')]?_0x46c07c[_0xfdb8('0x12')]['id']:0x0,_0x46c07c[_0xfdb8('0x13')]?_0x46c07c[_0xfdb8('0x13')]['id']:0x0);var _0x324721=sUtils['checkWaitingNotifications'](_0x480795,_0x46c07c);if(!_0x324721&&_0x46c07c[_0xfdb8('0x14')]&&_[_0xfdb8('0x15')](_0x46c07c[_0xfdb8('0x14')])&&_0x46c07c[_0xfdb8('0x14')][_0xfdb8('0x16')]){for(var _0x49883a=0x0;_0x49883a<_0x46c07c[_0xfdb8('0x14')][_0xfdb8('0x16')];_0x49883a+=0x1){var _0x449f39=_0x46c07c[_0xfdb8('0x14')][_0x49883a];if(fs[_0xfdb8('0x17')](path[_0xfdb8('0x18')](__dirname,'applications',_0x449f39[_0xfdb8('0x19')]+_0xfdb8('0x1a')))){var _0x7f811b=[];switch(_0x449f39[_0xfdb8('0x19')][_0xfdb8('0x1b')]()){case'autoreply':var _0xed9bc7=_0x449f39[_0xfdb8('0x1c')][_0xfdb8('0x1d')](',');if(_0x46c07c[_0xfdb8('0x11')]==='mail'){_0x7f811b[_0xfdb8('0x1e')](_0xed9bc7[0x0]);_0x7f811b[_0xfdb8('0x1e')](_0xed9bc7[0x1]);_0x7f811b[_0xfdb8('0x1e')](_0xed9bc7[_0xfdb8('0x1f')](0x2,_0xed9bc7['length'])[_0xfdb8('0x18')](','));}else{_0x7f811b['push'](_0xed9bc7[0x0]);_0x7f811b['push'](_0xed9bc7[_0xfdb8('0x1f')](0x1,_0xed9bc7['length'])['join'](','));}break;case _0xfdb8('0x20'):var _0x1a7219=_0x449f39[_0xfdb8('0x1c')]['split'](',');_0x7f811b['push'](_0x1a7219[0x0]);_0x7f811b[_0xfdb8('0x1e')](_0x1a7219[0x1]);_0x7f811b[_0xfdb8('0x1e')](_0x1a7219['slice'](0x2,_0x1a7219[_0xfdb8('0x16')])['join'](','));break;case'dialogflowv2':var _0x234ba3=_0x449f39[_0xfdb8('0x1c')][_0xfdb8('0x1d')](',');_0x7f811b[_0xfdb8('0x1e')](_0x234ba3[0x0]);_0x7f811b[_0xfdb8('0x1e')](_0x234ba3[0x1]);_0x7f811b[_0xfdb8('0x1e')](_0x234ba3[0x2]);_0x7f811b['push'](_0x234ba3[0x3]);_0x7f811b[_0xfdb8('0x1e')](_0x234ba3[_0xfdb8('0x1f')](0x4,_0x234ba3[_0xfdb8('0x16')])[_0xfdb8('0x18')](','));break;case _0xfdb8('0x21'):var _0x23ddfa=_0x449f39[_0xfdb8('0x1c')][_0xfdb8('0x1d')](',');_0x7f811b[_0xfdb8('0x1e')](_0x23ddfa[0x0]);_0x7f811b[_0xfdb8('0x1e')](_0x23ddfa[0x1]);_0x7f811b[_0xfdb8('0x1e')](_0x23ddfa[0x2]);_0x7f811b[_0xfdb8('0x1e')](_0x23ddfa[0x3]);_0x7f811b[_0xfdb8('0x1e')](_0x23ddfa[_0xfdb8('0x1f')](0x4,_0x23ddfa[_0xfdb8('0x16')])['join'](','));break;case _0xfdb8('0x12'):_0x7f811b[_0xfdb8('0x1e')](_0x449f39['appdata']);break;case'tag':_0x7f811b['push'](_0x449f39[_0xfdb8('0x22')]);_0x7f811b[_0xfdb8('0x1e')](_0x449f39[_0xfdb8('0x1c')]);break;case _0xfdb8('0x23'):var _0x513ad9=utils[_0xfdb8('0x24')](_0x46c07c[_0xfdb8('0x25')][_0xfdb8('0x26')],_0x46c07c);var _0x2bb5e7=_0x449f39[_0xfdb8('0x1c')][_0xfdb8('0x1d')](',');_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x0]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x1]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x2]);_0x7f811b['push'](_0x2bb5e7[0x3]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x4]);_0x7f811b['push'](_0x2bb5e7[0x5]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x6]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x7]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x8]);_0x7f811b[_0xfdb8('0x1e')](_0x2bb5e7[0x9]);_0x7f811b['push'](_0x2bb5e7[0xa]);_0x7f811b['push'](_0x46c07c[_0xfdb8('0x13')]['id']);_0x7f811b[_0xfdb8('0x1e')](_0x46c07c['message']['id']);_0x7f811b[_0xfdb8('0x1e')](_0x449f39[_0xfdb8('0x27')]);_0x7f811b['push'](_0x46c07c['interaction']['ContactId']);_0x7f811b[_0xfdb8('0x1e')](_0x46c07c[_0xfdb8('0x28')][_0xfdb8('0x28')]);_0x7f811b[_0xfdb8('0x1e')](_0x513ad9);break;default:_0x7f811b=_[_0xfdb8('0xb')](_0x449f39[_0xfdb8('0x1c')])?[]:_0x449f39[_0xfdb8('0x1c')][_0xfdb8('0x1d')](',');}var _0x1035ff={'id':util[_0xfdb8('0x29')](_0xfdb8('0x2a'),_0x3716c5,_0x449f39['id'],_0x449f39['app']),'condition':require(_0xfdb8('0x2b'))[_0xfdb8('0x2c')](_0x3716c5,getIntervals(_0x480795[_0xfdb8('0x2d')],_0x449f39),_0x480795),'consequence':require(_0xfdb8('0x2e')+_0x449f39[_0xfdb8('0x19')])[_0xfdb8('0x2f')](_0x3716c5,_0x7f811b,_0x480795,_0x46c07c),'p':_0x449f39[_0xfdb8('0x30')]||0x0};logger[_0xfdb8('0x31')](_0xfdb8('0x32'),_0x1035ff['id'],_0xfdb8('0x33'),getIntervals(_0x480795[_0xfdb8('0x2d')],_0x449f39)['join'](_0xfdb8('0x34')));_0x19d158[_0xfdb8('0x1e')](_0x1035ff);}else{logger[_0xfdb8('0x35')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xfdb8('0x18')](__dirname,_0xfdb8('0x14'),_0x449f39[_0xfdb8('0x19')]+_0xfdb8('0x1a')));}}_0x480795['rules'][_0x3716c5]=new RuleEngine(_0x19d158);_0x480795[_0xfdb8('0x10')][_0x3716c5][_0xfdb8('0x36')](_0x46c07c,function(_0x4f48c4){logger['info'](_0xfdb8('0x37'),JSON[_0xfdb8('0x38')](_0x4f48c4[_0xfdb8('0x39')]));if(_0x480795[_0xfdb8('0x10')][_0x3716c5]){_0x480795[_0xfdb8('0x10')][_0x3716c5][_0xfdb8('0x3a')](_0xfdb8('0x3b'));}});return _0x326e71({'code':0xc8,'message':_0x46c07c});}else{if(_0x324721){logger[_0xfdb8('0x31')](util['format']('Skipped\x20routing\x20for\x20%s',_0x3716c5));}else{logger[_0xfdb8('0x31')](_0xfdb8('0x3c'));}return _0x326e71({'code':0xc8,'message':_0x46c07c});}}catch(_0x48bab6){logger[_0xfdb8('0x35')](_0x48bab6[_0xfdb8('0x3d')]);return _0x2cf61c(_0x1cafa5[_0xfdb8('0x35')](0x1f4,_0x48bab6));}}return _0x2cf61c(_0xfdb8('0x3e'));});},'AcceptMessage':function(_0x261c0c){var _0x6e7a14=this;return new Promise(function(_0x4aac39,_0x2912f6){if(_0x261c0c['agent']&&_0x261c0c[_0xfdb8('0x3f')]['id']){if(_0x480795[_0xfdb8('0x40')][_0x261c0c[_0xfdb8('0x3f')]['id']]){_0x480795[_0xfdb8('0x40')][_0x261c0c[_0xfdb8('0x3f')]['id']][_0xfdb8('0x41')]=![];_0x480795[_0xfdb8('0x40')][_0x261c0c[_0xfdb8('0x3f')]['id']][_0xfdb8('0x42')]=undefined;}}if(_0x261c0c[_0xfdb8('0x12')]&&_0x261c0c[_0xfdb8('0x12')]['id']){try{var _0x1fbe4f=getId(_0x261c0c[_0xfdb8('0x11')],_0x261c0c[_0xfdb8('0x12')]?_0x261c0c[_0xfdb8('0x12')]['id']:0x0,_0x261c0c['interaction']?_0x261c0c[_0xfdb8('0x13')]['id']:0x0);if(_0x480795['rules'][_0x1fbe4f]){_0x480795[_0xfdb8('0x10')][_0x1fbe4f][_0xfdb8('0x3a')]('end');if(rpc[_0x261c0c[_0xfdb8('0x11')]+_0xfdb8('0x43')]){rpc[_0x261c0c[_0xfdb8('0x11')]+_0xfdb8('0x43')][_0xfdb8('0x44')](_0x1fbe4f,{'UserId':_0x261c0c[_0xfdb8('0x12')][_0xfdb8('0x45')]})['catch'](function(){logger[_0xfdb8('0x35')](_0xfdb8('0x46'));});}}return _0x4aac39({'code':0xc8,'message':_0x261c0c});}catch(_0xf80145){logger[_0xfdb8('0x35')](_0xf80145[_0xfdb8('0x3d')]);return _0x2912f6(_0x6e7a14['error'](0x1f4,_0xf80145));}}logger[_0xfdb8('0x35')](_0xfdb8('0x47'));return _0x2912f6(_0x6e7a14['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0xd71811){var _0x56189c=this;return new Promise(function(_0x148490,_0x450077){if(_0xd71811[_0xfdb8('0x3f')]&&_0xd71811['agent']['id']){try{if(_0x480795[_0xfdb8('0x40')][_0xd71811[_0xfdb8('0x3f')]['id']]){_0x480795[_0xfdb8('0x40')][_0xd71811[_0xfdb8('0x3f')]['id']][_0xfdb8('0x41')]=![];_0x480795[_0xfdb8('0x40')][_0xd71811[_0xfdb8('0x3f')]['id']][_0xfdb8('0x42')]=undefined;}return _0x148490({'code':0xc8,'message':_0xd71811});}catch(_0x3c8612){logger['error'](_0x3c8612[_0xfdb8('0x3d')]);return _0x450077(_0x56189c[_0xfdb8('0x35')](0x1f4,_0x3c8612));}}logger[_0xfdb8('0x35')](_0xfdb8('0x47'));return _0x450077(_0x56189c[_0xfdb8('0x35')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x1f1d12){var _0x47f87c=this;return new Promise(function(_0x5f756a,_0x549ba8){if(_0x1f1d12['channel']&&_0x1f1d12['interaction']&&_0x1f1d12['interaction']['id']){try{var _0x5eb034=getId(_0x1f1d12[_0xfdb8('0x11')],_0x1f1d12['message']?_0x1f1d12[_0xfdb8('0x12')]['id']:0x0,_0x1f1d12[_0xfdb8('0x13')]?_0x1f1d12[_0xfdb8('0x13')]['id']:0x0);if(_0x480795['rules'][_0x5eb034]){_0x480795[_0xfdb8('0x10')][_0x5eb034][_0xfdb8('0x3a')](_0xfdb8('0x48'));}return _0x5f756a({'code':0xc8,'message':_0x1f1d12});}catch(_0x540e4c){logger[_0xfdb8('0x35')](_0x540e4c[_0xfdb8('0x3d')]);return _0x549ba8(_0x47f87c['error'](0x1f4,_0x540e4c));}}logger[_0xfdb8('0x35')]('message\x20is\x20empty');return _0x549ba8(_0x47f87c[_0xfdb8('0x35')](0x1f4,_0xfdb8('0x47')));});},'AgentCapacity':function(_0x4c88ce){var _0x30ac81=this;return new Promise(function(_0x19cb6a,_0x5461f2){if(_0x480795[_0xfdb8('0x40')][_0xfdb8('0x49')](_0x4c88ce['id'])){for(var _0x3630b9 in _0x4c88ce['capacity']){if(_0x4c88ce[_0xfdb8('0x4a')][_0xfdb8('0x49')](_0x3630b9)){if(_0x480795['agents'][_0x4c88ce['id']][_0xfdb8('0x49')](_0x3630b9+_0xfdb8('0x4b'))){_0x480795[_0xfdb8('0x40')][_0x4c88ce['id']][_0x3630b9+_0xfdb8('0x4b')]=parseInt(_0x4c88ce['capacity'][_0x3630b9],0xa);}}}_0x480795[_0xfdb8('0x40')][_0x4c88ce['id']]['updateRealtime']();return _0x19cb6a({'code':0xc8,'message':_0x480795[_0xfdb8('0x40')][_0x4c88ce['id']]});}else{return _0x5461f2(_0x30ac81[_0xfdb8('0x35')](0x1f4,_0xfdb8('0x4c')));}});},'Agents':function(_0x408c18){return new Promise(function(_0x2210ca){var _0x1e529d=_[_0xfdb8('0x4d')](_0x480795['agents']);if(_0x408c18&&_0x408c18['id']){var _0x988dc1=_[_0xfdb8('0x4e')](_0x1e529d,function(_0x1d500b){return _0x1d500b['id']===_0x408c18['id'];});_0x2210ca(_0x988dc1);}else{_0x2210ca({'count':_0x1e529d[_0xfdb8('0x16')],'rows':_0x1e529d});}});},'ChatQueues':function(){return new Promise(function(_0x375cfd){var _0x3c3bf6=[];for(var _0x4938a3 in _0x480795['chatQueues']){if(_0x480795['chatQueues']['hasOwnProperty'](_0x4938a3)){var _0x5f2079=_0x480795[_0xfdb8('0x4f')][_0x4938a3];var _0x341c7b={'id':_0x5f2079['id'],'available':_0x5f2079[_0xfdb8('0x50')],'loggedIn':_0x5f2079['loggedIn'],'name':_0x5f2079[_0xfdb8('0x51')],'paused':_0x5f2079['paused'],'waiting':_0x5f2079[_0xfdb8('0x52')]};_0x3c3bf6[_0xfdb8('0x1e')](_0x341c7b);}}_0x375cfd({'count':_0x3c3bf6[_0xfdb8('0x16')],'rows':_0x3c3bf6});});},'MailQueues':function(){return new Promise(function(_0x552605){var _0xa726cb=[];for(var _0x27dfbf in _0x480795[_0xfdb8('0x53')]){if(_0x480795[_0xfdb8('0x53')][_0xfdb8('0x49')](_0x27dfbf)){var _0x43a6b9=_0x480795[_0xfdb8('0x53')][_0x27dfbf];var _0x50b0e3={'id':_0x43a6b9['id'],'available':_0x43a6b9['available'],'loggedIn':_0x43a6b9['loggedIn'],'name':_0x43a6b9['name'],'paused':_0x43a6b9['paused'],'waiting':_0x43a6b9[_0xfdb8('0x52')]};_0xa726cb['push'](_0x50b0e3);}}_0x552605({'count':_0xa726cb[_0xfdb8('0x16')],'rows':_0xa726cb});});},'OpenchannelQueues':function(){return new Promise(function(_0xa3ded4){var _0x20684b=[];for(var _0x110edf in _0x480795[_0xfdb8('0x54')]){if(_0x480795[_0xfdb8('0x54')][_0xfdb8('0x49')](_0x110edf)){var _0x258a11=_0x480795[_0xfdb8('0x54')][_0x110edf];var _0x275edd={'id':_0x258a11['id'],'available':_0x258a11[_0xfdb8('0x50')],'loggedIn':_0x258a11[_0xfdb8('0x55')],'name':_0x258a11[_0xfdb8('0x51')],'paused':_0x258a11['paused'],'waiting':_0x258a11[_0xfdb8('0x52')]};_0x20684b[_0xfdb8('0x1e')](_0x275edd);}}_0xa3ded4({'count':_0x20684b['length'],'rows':_0x20684b});});},'SmsQueues':function(){return new Promise(function(_0x46a622){var _0x179423=[];for(var _0x40dedb in _0x480795[_0xfdb8('0x56')]){if(_0x480795[_0xfdb8('0x56')][_0xfdb8('0x49')](_0x40dedb)){var _0x209d03=_0x480795['smsQueues'][_0x40dedb];var _0x4ab31e={'id':_0x209d03['id'],'available':_0x209d03[_0xfdb8('0x50')],'loggedIn':_0x209d03[_0xfdb8('0x55')],'name':_0x209d03['name'],'paused':_0x209d03[_0xfdb8('0x57')],'waiting':_0x209d03[_0xfdb8('0x52')]};_0x179423['push'](_0x4ab31e);}}_0x46a622({'count':_0x179423[_0xfdb8('0x16')],'rows':_0x179423});});},'FaxQueues':function(){return new Promise(function(_0xf67908){var _0x478738=[];for(var _0x182068 in _0x480795[_0xfdb8('0x58')]){if(_0x480795[_0xfdb8('0x58')]['hasOwnProperty'](_0x182068)){var _0x55db7e=_0x480795[_0xfdb8('0x58')][_0x182068];var _0x27bf22={'id':_0x55db7e['id'],'available':_0x55db7e[_0xfdb8('0x50')],'loggedIn':_0x55db7e[_0xfdb8('0x55')],'name':_0x55db7e[_0xfdb8('0x51')],'paused':_0x55db7e[_0xfdb8('0x57')],'waiting':_0x55db7e[_0xfdb8('0x52')]};_0x478738[_0xfdb8('0x1e')](_0x27bf22);}}_0xf67908({'count':_0x478738[_0xfdb8('0x16')],'rows':_0x478738});});},'WhatsappQueues':function(){return new Promise(function(_0x2226a9){var _0x5d715d=[];for(var _0x452b69 in _0x480795[_0xfdb8('0x59')]){if(_0x480795['whatsappQueues'][_0xfdb8('0x49')](_0x452b69)){var _0x41527f=_0x480795[_0xfdb8('0x59')][_0x452b69];var _0xc8df18={'id':_0x41527f['id'],'available':_0x41527f[_0xfdb8('0x50')],'loggedIn':_0x41527f[_0xfdb8('0x55')],'name':_0x41527f[_0xfdb8('0x51')],'paused':_0x41527f[_0xfdb8('0x57')],'waiting':_0x41527f[_0xfdb8('0x52')]};_0x5d715d[_0xfdb8('0x1e')](_0xc8df18);}}_0x2226a9({'count':_0x5d715d['length'],'rows':_0x5d715d});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x3de230){var _0x2174a9=_[_0xfdb8('0x4d')](_0x480795[_0xfdb8('0x5a')]);_0x3de230({'count':_0x2174a9[_0xfdb8('0x16')],'rows':_0x2174a9});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x39e247){var _0x53a009=_['values'](_0x480795['mailQueuesWaitingInteractions']);_0x39e247({'count':_0x53a009[_0xfdb8('0x16')],'rows':_0x53a009});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x37a102){var _0x50e1d2=_[_0xfdb8('0x4d')](_0x480795[_0xfdb8('0x5b')]);_0x37a102({'count':_0x50e1d2['length'],'rows':_0x50e1d2});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x571257){var _0x5d7e4b=_[_0xfdb8('0x4d')](_0x480795['smsQueuesWaitingInteractions']);_0x571257({'count':_0x5d7e4b['length'],'rows':_0x5d7e4b});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x3c6e93){var _0x3bad41=_[_0xfdb8('0x4d')](_0x480795[_0xfdb8('0x5c')]);_0x3c6e93({'count':_0x3bad41[_0xfdb8('0x16')],'rows':_0x3bad41});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x5e22e3){var _0x3a26b5=_[_0xfdb8('0x4d')](_0x480795[_0xfdb8('0x5d')]);_0x5e22e3({'count':_0x3a26b5[_0xfdb8('0x16')],'rows':_0x3a26b5});});}};var _0x533454=jayson[_0xfdb8('0x5e')](_0x5dfb37)['http']();_0x533454['on'](_0xfdb8('0x35'),function(_0x3e5729){logger[_0xfdb8('0x35')](JSON[_0xfdb8('0x38')](_0x3e5729));return _0x1d86e9(_0x3e5729);});_0x533454[_0xfdb8('0x5f')](0x232c,_0xfdb8('0x60'),function(){console[_0xfdb8('0x61')](_0xfdb8('0x62'),0x232c);return _0x210a75(_0xfdb8('0x63')+0x232c);});});};
\ No newline at end of file
+var _0x5760=['rules','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','.js','toLowerCase','autoreply','appdata','split','slice','join','push','dialogflow','dialogflowv2','amazonlex','TagId','tvox','account','notificationTemplate','ContactId','body','format','%s:%s:%s','app','./interval','intervals','./applications/','consequence','priority','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','find','available','paused','waiting','mailQueues','loggedIn','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen'];(function(_0x9543b0,_0x1e117e){var _0x53977a=function(_0x1a381d){while(--_0x1a381d){_0x9543b0['push'](_0x9543b0['shift']());}};_0x53977a(++_0x1e117e);}(_0x5760,0xbd));var _0x0576=function(_0x390185,_0x55fbe8){_0x390185=_0x390185-0x0;var _0x580502=_0x5760[_0x390185];return _0x580502;};'use strict';var _=require(_0x0576('0x0'));var util=require(_0x0576('0x1'));var path=require(_0x0576('0x2'));var fs=require('fs');var jayson=require(_0x0576('0x3'));var BPromise=require(_0x0576('0x4'));var utils=require(_0x0576('0x5'));var sUtils=require('./applications/strategy/util');var logger=require(_0x0576('0x6'))(_0x0576('0x7'));var rpc={'openchannelQueueReport':require(_0x0576('0x8')),'mailQueueReport':require(_0x0576('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x0576('0xa'))};var RuleEngine=require(_0x0576('0xb'));function getId(_0x1dda93,_0x4bf794,_0x1acee1){return util['format'](_0x0576('0xc'),_0x1dda93,_0x4bf794||0x0,_0x1acee1||0x0);}function getIntervals(_0x7cb230,_0x27d558){var _0x211c64=[];if(!_[_0x0576('0xd')](_0x27d558[_0x0576('0xe')])&&!_[_0x0576('0xd')](_0x7cb230[_0x27d558[_0x0576('0xe')]])&&!_[_0x0576('0xd')](_0x7cb230[_0x27d558['IntervalId']][_0x0576('0xf')])){_0x211c64=_[_0x0576('0x10')](_0x7cb230[_0x27d558['IntervalId']][_0x0576('0xf')],_0x0576('0x11'));}else if(!_[_0x0576('0xd')](_0x27d558[_0x0576('0x11')])){_0x211c64=[_0x27d558[_0x0576('0x11')]];}return _0x211c64;}exports[_0x0576('0x12')]=function(_0x75eed9){_0x75eed9[_0x0576('0x13')]={};return new BPromise(function(_0x4de949,_0x274eb9){var _0x3469fb={'Start':function(_0x37d328){var _0x3ab54e=this;return new Promise(function(_0x23190f,_0xe8f2f0){if(_0x37d328){try{var _0x31bfec=[];var _0x407a5d=getId(_0x37d328[_0x0576('0x14')],_0x37d328[_0x0576('0x15')]?_0x37d328[_0x0576('0x15')]['id']:0x0,_0x37d328[_0x0576('0x16')]?_0x37d328['interaction']['id']:0x0);var _0xfb361=sUtils[_0x0576('0x17')](_0x75eed9,_0x37d328);if(!_0xfb361&&_0x37d328[_0x0576('0x18')]&&_[_0x0576('0x19')](_0x37d328['applications'])&&_0x37d328[_0x0576('0x18')][_0x0576('0x1a')]){for(var _0x2e26d1=0x0;_0x2e26d1<_0x37d328[_0x0576('0x18')][_0x0576('0x1a')];_0x2e26d1+=0x1){var _0x57a952=_0x37d328['applications'][_0x2e26d1];if(fs[_0x0576('0x1b')](path['join'](__dirname,_0x0576('0x18'),_0x57a952['app']+_0x0576('0x1c')))){var _0x1c8ec4=[];switch(_0x57a952['app'][_0x0576('0x1d')]()){case _0x0576('0x1e'):var _0x1b8613=_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');if(_0x37d328[_0x0576('0x14')]==='mail'){_0x1c8ec4['push'](_0x1b8613[0x0]);_0x1c8ec4['push'](_0x1b8613[0x1]);_0x1c8ec4['push'](_0x1b8613[_0x0576('0x21')](0x2,_0x1b8613[_0x0576('0x1a')])[_0x0576('0x22')](','));}else{_0x1c8ec4[_0x0576('0x23')](_0x1b8613[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x1b8613[_0x0576('0x21')](0x1,_0x1b8613['length'])[_0x0576('0x22')](','));}break;case _0x0576('0x24'):var _0x46c6dd=_0x57a952['appdata'][_0x0576('0x20')](',');_0x1c8ec4[_0x0576('0x23')](_0x46c6dd[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x46c6dd[0x1]);_0x1c8ec4['push'](_0x46c6dd[_0x0576('0x21')](0x2,_0x46c6dd[_0x0576('0x1a')])[_0x0576('0x22')](','));break;case _0x0576('0x25'):var _0x56e65d=_0x57a952[_0x0576('0x1f')]['split'](',');_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[0x3]);_0x1c8ec4[_0x0576('0x23')](_0x56e65d[_0x0576('0x21')](0x4,_0x56e65d['length'])[_0x0576('0x22')](','));break;case _0x0576('0x26'):var _0x3701f3=_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');_0x1c8ec4['push'](_0x3701f3[0x0]);_0x1c8ec4['push'](_0x3701f3[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3[0x3]);_0x1c8ec4[_0x0576('0x23')](_0x3701f3['slice'](0x4,_0x3701f3[_0x0576('0x1a')])[_0x0576('0x22')](','));break;case'message':_0x1c8ec4['push'](_0x57a952['appdata']);break;case'tag':_0x1c8ec4[_0x0576('0x23')](_0x57a952[_0x0576('0x27')]);_0x1c8ec4[_0x0576('0x23')](_0x57a952[_0x0576('0x1f')]);break;case _0x0576('0x28'):var _0x11cb56=utils['getMustacheRender'](_0x37d328[_0x0576('0x29')][_0x0576('0x2a')],_0x37d328);var _0x428468=_0x57a952['appdata'][_0x0576('0x20')](',');_0x1c8ec4[_0x0576('0x23')](_0x428468[0x0]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x1]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x2]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x3]);_0x1c8ec4['push'](_0x428468[0x4]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x5]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x6]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x7]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x8]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0x9]);_0x1c8ec4[_0x0576('0x23')](_0x428468[0xa]);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x16')]['id']);_0x1c8ec4['push'](_0x37d328[_0x0576('0x15')]['id']);_0x1c8ec4[_0x0576('0x23')](_0x57a952['ChatWebsiteId']);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x16')][_0x0576('0x2b')]);_0x1c8ec4[_0x0576('0x23')](_0x37d328[_0x0576('0x2c')][_0x0576('0x2c')]);_0x1c8ec4[_0x0576('0x23')](_0x11cb56);break;default:_0x1c8ec4=_[_0x0576('0xd')](_0x57a952[_0x0576('0x1f')])?[]:_0x57a952[_0x0576('0x1f')][_0x0576('0x20')](',');}var _0xa0cba={'id':util[_0x0576('0x2d')](_0x0576('0x2e'),_0x407a5d,_0x57a952['id'],_0x57a952[_0x0576('0x2f')]),'condition':require(_0x0576('0x30'))['condition'](_0x407a5d,getIntervals(_0x75eed9[_0x0576('0x31')],_0x57a952),_0x75eed9),'consequence':require(_0x0576('0x32')+_0x57a952['app'])[_0x0576('0x33')](_0x407a5d,_0x1c8ec4,_0x75eed9,_0x37d328),'p':_0x57a952[_0x0576('0x34')]||0x0};logger[_0x0576('0x35')]('Push\x20new\x20rule',_0xa0cba['id'],_0x0576('0x36'),getIntervals(_0x75eed9['intervals'],_0x57a952)[_0x0576('0x22')](_0x0576('0x37')));_0x31bfec['push'](_0xa0cba);}else{logger[_0x0576('0x38')](_0x0576('0x39'),path[_0x0576('0x22')](__dirname,_0x0576('0x18'),_0x57a952[_0x0576('0x2f')]+_0x0576('0x1c')));}}_0x75eed9[_0x0576('0x13')][_0x407a5d]=new RuleEngine(_0x31bfec);_0x75eed9[_0x0576('0x13')][_0x407a5d][_0x0576('0x3a')](_0x37d328,function(_0x4ff554){logger[_0x0576('0x35')]('Applications\x20executed',JSON[_0x0576('0x3b')](_0x4ff554[_0x0576('0x3c')]));if(_0x75eed9[_0x0576('0x13')][_0x407a5d]){_0x75eed9[_0x0576('0x13')][_0x407a5d][_0x0576('0x3d')](_0x0576('0x3e'));}});return _0x23190f({'code':0xc8,'message':_0x37d328});}else{if(_0xfb361){logger['info'](util[_0x0576('0x2d')](_0x0576('0x3f'),_0x407a5d));}else{logger[_0x0576('0x35')](_0x0576('0x40'));}return _0x23190f({'code':0xc8,'message':_0x37d328});}}catch(_0x53d0aa){logger['error'](_0x53d0aa[_0x0576('0x41')]);return _0xe8f2f0(_0x3ab54e['error'](0x1f4,_0x53d0aa));}}return _0xe8f2f0(_0x0576('0x42'));});},'AcceptMessage':function(_0x215e0f){var _0x1d86e9=this;return new Promise(function(_0x3e9259,_0x223c9d){if(_0x215e0f[_0x0576('0x43')]&&_0x215e0f['agent']['id']){if(_0x75eed9['agents'][_0x215e0f['agent']['id']]){_0x75eed9[_0x0576('0x44')][_0x215e0f['agent']['id']][_0x0576('0x45')]=![];_0x75eed9[_0x0576('0x44')][_0x215e0f[_0x0576('0x43')]['id']][_0x0576('0x46')]=undefined;}}if(_0x215e0f[_0x0576('0x15')]&&_0x215e0f[_0x0576('0x15')]['id']){try{var _0x85a17d=getId(_0x215e0f[_0x0576('0x14')],_0x215e0f[_0x0576('0x15')]?_0x215e0f[_0x0576('0x15')]['id']:0x0,_0x215e0f['interaction']?_0x215e0f[_0x0576('0x16')]['id']:0x0);if(_0x75eed9['rules'][_0x85a17d]){_0x75eed9[_0x0576('0x13')][_0x85a17d][_0x0576('0x3d')](_0x0576('0x47'));if(rpc[_0x215e0f['channel']+_0x0576('0x48')]){rpc[_0x215e0f[_0x0576('0x14')]+_0x0576('0x48')][_0x0576('0x49')](_0x85a17d,{'UserId':_0x215e0f[_0x0576('0x15')][_0x0576('0x4a')]})[_0x0576('0x4b')](function(){logger[_0x0576('0x38')]('error\x20update\x20queue\x20report');});}}return _0x3e9259({'code':0xc8,'message':_0x215e0f});}catch(_0x49a616){logger['error'](_0x49a616[_0x0576('0x41')]);return _0x223c9d(_0x1d86e9[_0x0576('0x38')](0x1f4,_0x49a616));}}logger['error'](_0x0576('0x4c'));return _0x223c9d(_0x1d86e9[_0x0576('0x38')](0x1f4,_0x0576('0x4c')));});},'RejectMessage':function(_0x31d5a2){var _0x324b7c=this;return new Promise(function(_0x19ec3e,_0x2c14c2){if(_0x31d5a2[_0x0576('0x43')]&&_0x31d5a2[_0x0576('0x43')]['id']){try{if(_0x75eed9['agents'][_0x31d5a2[_0x0576('0x43')]['id']]){_0x75eed9[_0x0576('0x44')][_0x31d5a2[_0x0576('0x43')]['id']][_0x0576('0x45')]=![];_0x75eed9[_0x0576('0x44')][_0x31d5a2['agent']['id']][_0x0576('0x46')]=undefined;}return _0x19ec3e({'code':0xc8,'message':_0x31d5a2});}catch(_0x44a7d5){logger['error'](_0x44a7d5[_0x0576('0x41')]);return _0x2c14c2(_0x324b7c[_0x0576('0x38')](0x1f4,_0x44a7d5));}}logger[_0x0576('0x38')](_0x0576('0x4c'));return _0x2c14c2(_0x324b7c[_0x0576('0x38')](0x1f4,_0x0576('0x4c')));});},'AbandonInteraction':function(_0x3b10a1){var _0x44b416=this;return new Promise(function(_0x4f9213,_0xdca222){if(_0x3b10a1['channel']&&_0x3b10a1[_0x0576('0x16')]&&_0x3b10a1['interaction']['id']){try{var _0x57b43e=getId(_0x3b10a1[_0x0576('0x14')],_0x3b10a1[_0x0576('0x15')]?_0x3b10a1['message']['id']:0x0,_0x3b10a1[_0x0576('0x16')]?_0x3b10a1['interaction']['id']:0x0);if(_0x75eed9[_0x0576('0x13')][_0x57b43e]){_0x75eed9[_0x0576('0x13')][_0x57b43e][_0x0576('0x3d')](_0x0576('0x47'));}return _0x4f9213({'code':0xc8,'message':_0x3b10a1});}catch(_0x185d80){logger[_0x0576('0x38')](_0x185d80[_0x0576('0x41')]);return _0xdca222(_0x44b416['error'](0x1f4,_0x185d80));}}logger[_0x0576('0x38')](_0x0576('0x4c'));return _0xdca222(_0x44b416[_0x0576('0x38')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x3d1af8){var _0x215ec3=this;return new Promise(function(_0x2015bf,_0x3ac6ae){if(_0x75eed9[_0x0576('0x44')][_0x0576('0x4d')](_0x3d1af8['id'])){for(var _0x4e5346 in _0x3d1af8[_0x0576('0x4e')]){if(_0x3d1af8[_0x0576('0x4e')][_0x0576('0x4d')](_0x4e5346)){if(_0x75eed9['agents'][_0x3d1af8['id']][_0x0576('0x4d')](_0x4e5346+_0x0576('0x4f'))){_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']][_0x4e5346+_0x0576('0x4f')]=parseInt(_0x3d1af8[_0x0576('0x4e')][_0x4e5346],0xa);}}}_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']][_0x0576('0x50')]();return _0x2015bf({'code':0xc8,'message':_0x75eed9[_0x0576('0x44')][_0x3d1af8['id']]});}else{return _0x3ac6ae(_0x215ec3[_0x0576('0x38')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x742cdf){return new Promise(function(_0x1d1aa6){var _0x38b120=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x44')]);if(_0x742cdf&&_0x742cdf['id']){var _0x12ffd4=_[_0x0576('0x52')](_0x38b120,function(_0x37b014){return _0x37b014['id']===_0x742cdf['id'];});_0x1d1aa6(_0x12ffd4);}else{_0x1d1aa6({'count':_0x38b120[_0x0576('0x1a')],'rows':_0x38b120});}});},'ChatQueues':function(){return new Promise(function(_0x5a86e1){var _0x456b46=[];for(var _0x234b3f in _0x75eed9['chatQueues']){if(_0x75eed9['chatQueues']['hasOwnProperty'](_0x234b3f)){var _0x4ad963=_0x75eed9['chatQueues'][_0x234b3f];var _0x4b66c7={'id':_0x4ad963['id'],'available':_0x4ad963[_0x0576('0x53')],'loggedIn':_0x4ad963['loggedIn'],'name':_0x4ad963['name'],'paused':_0x4ad963[_0x0576('0x54')],'waiting':_0x4ad963[_0x0576('0x55')]};_0x456b46[_0x0576('0x23')](_0x4b66c7);}}_0x5a86e1({'count':_0x456b46['length'],'rows':_0x456b46});});},'MailQueues':function(){return new Promise(function(_0x158df7){var _0x4a1fa9=[];for(var _0x57a3a5 in _0x75eed9[_0x0576('0x56')]){if(_0x75eed9[_0x0576('0x56')]['hasOwnProperty'](_0x57a3a5)){var _0x146ee8=_0x75eed9['mailQueues'][_0x57a3a5];var _0x4f9764={'id':_0x146ee8['id'],'available':_0x146ee8[_0x0576('0x53')],'loggedIn':_0x146ee8[_0x0576('0x57')],'name':_0x146ee8[_0x0576('0x58')],'paused':_0x146ee8[_0x0576('0x54')],'waiting':_0x146ee8[_0x0576('0x55')]};_0x4a1fa9[_0x0576('0x23')](_0x4f9764);}}_0x158df7({'count':_0x4a1fa9[_0x0576('0x1a')],'rows':_0x4a1fa9});});},'OpenchannelQueues':function(){return new Promise(function(_0x282c32){var _0x54f538=[];for(var _0xf47e0e in _0x75eed9['openchannelQueues']){if(_0x75eed9[_0x0576('0x59')][_0x0576('0x4d')](_0xf47e0e)){var _0x36c7e4=_0x75eed9[_0x0576('0x59')][_0xf47e0e];var _0x60cb81={'id':_0x36c7e4['id'],'available':_0x36c7e4[_0x0576('0x53')],'loggedIn':_0x36c7e4[_0x0576('0x57')],'name':_0x36c7e4[_0x0576('0x58')],'paused':_0x36c7e4[_0x0576('0x54')],'waiting':_0x36c7e4['waiting']};_0x54f538[_0x0576('0x23')](_0x60cb81);}}_0x282c32({'count':_0x54f538['length'],'rows':_0x54f538});});},'SmsQueues':function(){return new Promise(function(_0x1f0bb0){var _0x4baa23=[];for(var _0x1fa83a in _0x75eed9[_0x0576('0x5a')]){if(_0x75eed9[_0x0576('0x5a')][_0x0576('0x4d')](_0x1fa83a)){var _0x4952c2=_0x75eed9['smsQueues'][_0x1fa83a];var _0x5a06fd={'id':_0x4952c2['id'],'available':_0x4952c2[_0x0576('0x53')],'loggedIn':_0x4952c2['loggedIn'],'name':_0x4952c2['name'],'paused':_0x4952c2[_0x0576('0x54')],'waiting':_0x4952c2['waiting']};_0x4baa23['push'](_0x5a06fd);}}_0x1f0bb0({'count':_0x4baa23[_0x0576('0x1a')],'rows':_0x4baa23});});},'FaxQueues':function(){return new Promise(function(_0x2f9989){var _0x3a3671=[];for(var _0x3d1f05 in _0x75eed9[_0x0576('0x5b')]){if(_0x75eed9[_0x0576('0x5b')][_0x0576('0x4d')](_0x3d1f05)){var _0x1fef0d=_0x75eed9[_0x0576('0x5b')][_0x3d1f05];var _0x32d9d5={'id':_0x1fef0d['id'],'available':_0x1fef0d[_0x0576('0x53')],'loggedIn':_0x1fef0d[_0x0576('0x57')],'name':_0x1fef0d['name'],'paused':_0x1fef0d['paused'],'waiting':_0x1fef0d[_0x0576('0x55')]};_0x3a3671[_0x0576('0x23')](_0x32d9d5);}}_0x2f9989({'count':_0x3a3671[_0x0576('0x1a')],'rows':_0x3a3671});});},'WhatsappQueues':function(){return new Promise(function(_0x3fdbee){var _0x3de18e=[];for(var _0x553ad7 in _0x75eed9['whatsappQueues']){if(_0x75eed9[_0x0576('0x5c')]['hasOwnProperty'](_0x553ad7)){var _0x544645=_0x75eed9[_0x0576('0x5c')][_0x553ad7];var _0x18605e={'id':_0x544645['id'],'available':_0x544645['available'],'loggedIn':_0x544645[_0x0576('0x57')],'name':_0x544645['name'],'paused':_0x544645[_0x0576('0x54')],'waiting':_0x544645['waiting']};_0x3de18e[_0x0576('0x23')](_0x18605e);}}_0x3fdbee({'count':_0x3de18e[_0x0576('0x1a')],'rows':_0x3de18e});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x74d762){var _0xee5362=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x5d')]);_0x74d762({'count':_0xee5362[_0x0576('0x1a')],'rows':_0xee5362});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x53b47d){var _0x263b6b=_[_0x0576('0x51')](_0x75eed9['mailQueuesWaitingInteractions']);_0x53b47d({'count':_0x263b6b[_0x0576('0x1a')],'rows':_0x263b6b});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x4ba569){var _0x4c7032=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x5e')]);_0x4ba569({'count':_0x4c7032[_0x0576('0x1a')],'rows':_0x4c7032});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0xe713ac){var _0x359f04=_['values'](_0x75eed9[_0x0576('0x5f')]);_0xe713ac({'count':_0x359f04[_0x0576('0x1a')],'rows':_0x359f04});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x939f5f){var _0x42146f=_['values'](_0x75eed9[_0x0576('0x60')]);_0x939f5f({'count':_0x42146f['length'],'rows':_0x42146f});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x378ffd){var _0x2aa86c=_[_0x0576('0x51')](_0x75eed9[_0x0576('0x61')]);_0x378ffd({'count':_0x2aa86c[_0x0576('0x1a')],'rows':_0x2aa86c});});}};var _0x23e0c3=jayson[_0x0576('0x62')](_0x3469fb)[_0x0576('0x63')]();_0x23e0c3['on'](_0x0576('0x38'),function(_0x475f45){logger[_0x0576('0x38')](JSON[_0x0576('0x3b')](_0x475f45));return _0x274eb9(_0x475f45);});_0x23e0c3[_0x0576('0x12')](0x232c,_0x0576('0x64'),function(){console[_0x0576('0x65')](_0x0576('0x66'),0x232c);return _0x4de949(_0x0576('0x67')+0x232c);});});};
\ No newline at end of file
index 2663a75..8ded453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1bc=['message','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','indexOf','true','[%s][INTERVAL]\x20%s','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error'];(function(_0x1da830,_0x4668c0){var _0x69421d=function(_0x42f29c){while(--_0x42f29c){_0x1da830['push'](_0x1da830['shift']());}};_0x69421d(++_0x4668c0);}(_0xb1bc,0x1b7));var _0xcb1b=function(_0x204ad4,_0x502841){_0x204ad4=_0x204ad4-0x0;var _0x50675f=_0xb1bc[_0x204ad4];return _0x50675f;};'use strict';var util=require(_0xcb1b('0x0'));var BPromise=require(_0xcb1b('0x1'));var jayson=require(_0xcb1b('0x2'));var _=require(_0xcb1b('0x3'));var logger=require(_0xcb1b('0x4'))(_0xcb1b('0x5'));var client=jayson[_0xcb1b('0x6')][_0xcb1b('0x7')]({'port':0x232a});function request(_0x327cfe,_0x6639f7){return new BPromise(function(_0x31d466,_0xeb7234){return client[_0xcb1b('0x8')](_0x327cfe,_0x6639f7)[_0xcb1b('0x9')](function(_0x598f7b){if(_0x598f7b[_0xcb1b('0xa')]){return _0xeb7234(_0x598f7b[_0xcb1b('0xa')][_0xcb1b('0xb')]);}else{return _0x31d466(_0x598f7b[_0xcb1b('0xc')]);}})[_0xcb1b('0xd')](function(_0x58a3d7){return _0xeb7234(_0x58a3d7);});});}exports['condition']=function(_0x50302c,_0x28eef3,_0x4bc299){return function(_0x2c8f39){if(_0x4bc299['rules']&&!_0x4bc299[_0xcb1b('0xe')][_0x50302c]){logger[_0xcb1b('0xf')](_0xcb1b('0x10'),_0x50302c);return _0x2c8f39[_0xcb1b('0x11')]();}var _0x4981f0=[];for(var _0x51db99=0x0;_0x51db99<_0x28eef3[_0xcb1b('0x12')];_0x51db99+=0x1){_0x4981f0[_0xcb1b('0x13')](request(_0xcb1b('0x14'),{'command':util[_0xcb1b('0x15')]('iftime\x20%s',_0x28eef3[_0x51db99])})[_0xcb1b('0x9')](function(_0x2593fe){return _0x2593fe&&_0x2593fe[_0xcb1b('0xb')]&&_0x2593fe['message'][_0xcb1b('0x16')](_0xcb1b('0x17'))>=0x0?!![]:![];})[_0xcb1b('0xd')](function(_0x313b09){logger[_0xcb1b('0xa')](_0xcb1b('0x18'),_0x50302c,_0x28eef3[_0x51db99]);}));}BPromise['all'](_0x4981f0)['then'](function(_0x37ce80){var _0x26a57a=_['some'](_0x37ce80);logger[_0xcb1b('0xf')](_0xcb1b('0x19'),_0x50302c,_0x28eef3[_0xcb1b('0x1a')](_0xcb1b('0x1b')),_0x26a57a);_0x2c8f39['when'](_0x26a57a);})[_0xcb1b('0xd')](function(_0x543d78){console[_0xcb1b('0x1c')](_0x543d78);logger[_0xcb1b('0xa')](_0xcb1b('0x19'),_0x50302c,_0x28eef3[_0xcb1b('0x1a')](_0xcb1b('0x1b')),_0x543d78[_0xcb1b('0x1d')]);_0x2c8f39[_0xcb1b('0x11')]();});};};
\ No newline at end of file
+var _0xbfa7=['stop','length','push','format','iftime\x20%s','then','message','indexOf','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','bluebird','../../../config/logger','routing','client','http','request','error','result','catch','condition','rules','info'];(function(_0x332e65,_0x368a12){var _0x1b19dc=function(_0x5be18f){while(--_0x5be18f){_0x332e65['push'](_0x332e65['shift']());}};_0x1b19dc(++_0x368a12);}(_0xbfa7,0x89));var _0x7bfa=function(_0x47024a,_0x341109){_0x47024a=_0x47024a-0x0;var _0x725c80=_0xbfa7[_0x47024a];return _0x725c80;};'use strict';var util=require(_0x7bfa('0x0'));var BPromise=require(_0x7bfa('0x1'));var jayson=require('jayson/promise');var _=require('lodash');var logger=require(_0x7bfa('0x2'))(_0x7bfa('0x3'));var client=jayson[_0x7bfa('0x4')][_0x7bfa('0x5')]({'port':0x232a});function request(_0x1e7407,_0x49290b){return new BPromise(function(_0x1cb089,_0x15c035){return client[_0x7bfa('0x6')](_0x1e7407,_0x49290b)['then'](function(_0x2ccd7f){if(_0x2ccd7f[_0x7bfa('0x7')]){return _0x15c035(_0x2ccd7f[_0x7bfa('0x7')]['message']);}else{return _0x1cb089(_0x2ccd7f[_0x7bfa('0x8')]);}})[_0x7bfa('0x9')](function(_0x5c2f0b){return _0x15c035(_0x5c2f0b);});});}exports[_0x7bfa('0xa')]=function(_0x11387f,_0xdade45,_0x5ceadd){return function(_0x1dc69d){if(_0x5ceadd[_0x7bfa('0xb')]&&!_0x5ceadd['rules'][_0x11387f]){logger[_0x7bfa('0xc')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x11387f);return _0x1dc69d[_0x7bfa('0xd')]();}var _0x58ac68=[];for(var _0x4be5c1=0x0;_0x4be5c1<_0xdade45[_0x7bfa('0xe')];_0x4be5c1+=0x1){_0x58ac68[_0x7bfa('0xf')](request('Command',{'command':util[_0x7bfa('0x10')](_0x7bfa('0x11'),_0xdade45[_0x4be5c1])})[_0x7bfa('0x12')](function(_0x3bace9){return _0x3bace9&&_0x3bace9[_0x7bfa('0x13')]&&_0x3bace9[_0x7bfa('0x13')][_0x7bfa('0x14')]('true')>=0x0?!![]:![];})[_0x7bfa('0x9')](function(_0xf890b8){logger[_0x7bfa('0x7')](_0x7bfa('0x15'),_0x11387f,_0xdade45[_0x4be5c1]);}));}BPromise[_0x7bfa('0x16')](_0x58ac68)[_0x7bfa('0x12')](function(_0x4ca900){var _0x26740a=_[_0x7bfa('0x17')](_0x4ca900);logger[_0x7bfa('0xc')](_0x7bfa('0x18'),_0x11387f,_0xdade45[_0x7bfa('0x19')](_0x7bfa('0x1a')),_0x26740a);_0x1dc69d[_0x7bfa('0x1b')](_0x26740a);})[_0x7bfa('0x9')](function(_0x24b26b){console[_0x7bfa('0x1c')](_0x24b26b);logger['error'](_0x7bfa('0x18'),_0x11387f,_0xdade45[_0x7bfa('0x19')]('\x20|\x20'),_0x24b26b[_0x7bfa('0x1d')]);_0x1dc69d[_0x7bfa('0xd')]();});};};
\ No newline at end of file
index 1f8715b..172e921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','lodash','./utils','format','uniqueid','channel','queue','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','destuniqueid','agentcalledAt','now','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','holdtime','ringtime','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','talktime','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere'];(function(_0x1a7e57,_0x5d0789){var _0x52e5af=function(_0x26c68d){while(--_0x26c68d){_0x1a7e57['push'](_0x1a7e57['shift']());}};_0x52e5af(++_0x5d0789);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb7e7[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var utils=require(_0x7b7e('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x518dc6,_0x1b7cc7){utils['info'](util[_0x7b7e('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x518dc6[_0x7b7e('0x3')],_0x518dc6[_0x7b7e('0x4')],_0x518dc6[_0x7b7e('0x5')],_0x518dc6['membername'],_0x518dc6['interface'],_0x518dc6[_0x7b7e('0x6')],_0x518dc6[_0x7b7e('0x7')],_0x518dc6[_0x7b7e('0x8')]));if(_0x518dc6['queue']){utils[_0x7b7e('0x9')](_0x518dc6[_0x7b7e('0x5')])[_0x7b7e('0xa')](function(_0x1647e5){if(_0x1647e5){_0x518dc6[_0x7b7e('0xb')]=_0x1647e5[_0x7b7e('0xb')];_0x518dc6[_0x7b7e('0xc')]=_0x518dc6['agentcomplete']?_0x1647e5[_0x7b7e('0xd')]:![];_0x518dc6[_0x7b7e('0xe')]=_0x518dc6[_0x7b7e('0xc')]?_0x1647e5[_0x7b7e('0xf')]:0x0;}utils[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x518dc6);});}else{utils[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x518dc6);}if(_0x1b7cc7){delete transfers[_0x518dc6[_0x7b7e('0x3')]];}else{delete agents[_0x518dc6['destuniqueid']];}}exports[_0x7b7e('0x12')]=function(_0x430eab){try{utils['debug'](util[_0x7b7e('0x2')]('[%s][agents][agentcalled]',_0x430eab['uniqueid']),_0x430eab);agents[_0x430eab[_0x7b7e('0x13')]]=_0x430eab;agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x14')]=utils[_0x7b7e('0x15')]();agents[_0x430eab[_0x7b7e('0x13')]]['lastevent']='called';agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x7')]=null;agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x16')]=null;utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x18'),_0x430eab[_0x7b7e('0x3')],agents[_0x430eab[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x430eab[_0x7b7e('0x13')]));}catch(_0x14f4fe){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x1b'),_0x430eab[_0x7b7e('0x3')]),_0x14f4fe);}};exports[_0x7b7e('0x1c')]=function(_0x49eddb){try{if(!_[_0x7b7e('0x1d')](agents[_0x49eddb[_0x7b7e('0x13')]])){utils[_0x7b7e('0x1e')](util['format'](_0x7b7e('0x1f'),_0x49eddb[_0x7b7e('0x3')]),_0x49eddb);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x20'),_0x49eddb[_0x7b7e('0x3')],agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x49eddb['destuniqueid']));agents[_0x49eddb['destuniqueid']]['agentringnoanswer']=!![];agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x21')]=utils[_0x7b7e('0x15')]();agents[_0x49eddb['destuniqueid']]['lastevent']='timeout';agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x22')]=_0x7b7e('0x23');agents[_0x49eddb[_0x7b7e('0x13')]][_0x7b7e('0x24')]=_0x49eddb['ringtime']?parseInt(_0x49eddb[_0x7b7e('0x25')])/0x3e8:0x0;agents[_0x49eddb[_0x7b7e('0x13')]]['talktime']=0x0;unanswered['push'](_0x49eddb['destuniqueid']);}}catch(_0x12ef0b){utils[_0x7b7e('0x1a')](util['format'](_0x7b7e('0x1f'),_0x49eddb['uniqueid']),_0x12ef0b);}};exports[_0x7b7e('0x26')]=function(_0xb9b6bf){try{_[_0x7b7e('0x27')](agents,function(_0x5515ca,_0x3960b8){if(_0x5515ca[_0x7b7e('0x3')]==_0xb9b6bf[_0x7b7e('0x3')]&&!_[_0x7b7e('0x28')](unanswered,_0x5515ca[_0x7b7e('0x13')])){utils['debug'](util[_0x7b7e('0x2')]('[%s][agents][queuecallerabandon]',_0xb9b6bf[_0x7b7e('0x3')]),_0xb9b6bf);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x29'),_0xb9b6bf[_0x7b7e('0x3')],_0x5515ca[_0x7b7e('0x19')],_0x5515ca[_0x7b7e('0x13')]));_0x5515ca['agentringnoanswer']=!![];_0x5515ca['agentringnoanswerAt']=utils[_0x7b7e('0x15')]();_0x5515ca[_0x7b7e('0x8')]='abandoned';_0x5515ca[_0x7b7e('0x22')]=_0x7b7e('0x2a');_0x5515ca[_0x7b7e('0x24')]=_0xb9b6bf['holdtime'];_0x5515ca[_0x7b7e('0x2b')]=0x0;writeDB(_0x5515ca);}});}catch(_0x256908){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x2c'),_0xb9b6bf[_0x7b7e('0x3')]),_0x256908);}};exports[_0x7b7e('0x2d')]=function(_0x202f04){try{if(agents[_0x202f04[_0x7b7e('0x13')]]){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x2e'),_0x202f04[_0x7b7e('0x3')]),_0x202f04);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x2f'),_0x202f04['uniqueid'],agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x19')],_0x202f04[_0x7b7e('0x13')]));agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x30')]=utils[_0x7b7e('0x15')]();agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x7')]=_0x202f04[_0x7b7e('0x7')];agents[_0x202f04[_0x7b7e('0x13')]]['connectedlinename']=_0x202f04[_0x7b7e('0x16')];agents[_0x202f04[_0x7b7e('0x13')]][_0x7b7e('0x24')]=_0x202f04[_0x7b7e('0x25')];agents[_0x202f04['destuniqueid']][_0x7b7e('0x8')]=_0x7b7e('0x31');_[_0x7b7e('0x27')](agents,function(_0x5c58c0,_0x4a2888){if(_0x5c58c0[_0x7b7e('0x13')]!=_0x202f04['destuniqueid']&&_0x5c58c0[_0x7b7e('0x3')]==_0x202f04[_0x7b7e('0x3')]){_0x5c58c0['talktime']=0x0;_0x5c58c0[_0x7b7e('0x24')]=_0x202f04[_0x7b7e('0x25')];_0x5c58c0[_0x7b7e('0x1c')]=!![];_0x5c58c0[_0x7b7e('0x21')]=utils[_0x7b7e('0x15')]();_0x5c58c0[_0x7b7e('0x8')]=_0x7b7e('0x32');_0x5c58c0[_0x7b7e('0x22')]=_0x7b7e('0x32');_0x5c58c0['answeredelsewheredestinationuniqueid']=_0x202f04['destuniqueid'];_0x5c58c0[_0x7b7e('0x33')]=_0x202f04['membername'];writeDB(_0x5c58c0);}});}}catch(_0x41c8a6){utils['error'](util['format'](_0x7b7e('0x2e'),_0x202f04['uniqueid']),_0x41c8a6);}};exports[_0x7b7e('0x34')]=function(_0x52051c){try{if(!_[_0x7b7e('0x1d')](agents[_0x52051c[_0x7b7e('0x13')]])){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')]('[%s][agents][agentcomplete]',_0x52051c[_0x7b7e('0x3')]),_0x52051c);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x35'),_0x52051c[_0x7b7e('0x3')],agents[_0x52051c[_0x7b7e('0x13')]]['membername'],_0x52051c['destuniqueid']));agents[_0x52051c['destuniqueid']][_0x7b7e('0x34')]=!![];agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x36')]=utils[_0x7b7e('0x15')]();agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x2b')]=utils['diffTime'](agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x36')],agents[_0x52051c['destuniqueid']]['agentconnectAt']);agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x22')]=_0x52051c[_0x7b7e('0x22')];agents[_0x52051c[_0x7b7e('0x13')]][_0x7b7e('0x8')]=_0x7b7e('0x37');writeDB(agents[_0x52051c['destuniqueid']]);}}catch(_0x2673eb){utils['error'](util[_0x7b7e('0x2')](_0x7b7e('0x38'),_0x52051c[_0x7b7e('0x3')]),_0x2673eb);}};exports[_0x7b7e('0x39')]=function(_0x58e4e6){try{if(!_[_0x7b7e('0x1d')](agents[_0x58e4e6[_0x7b7e('0x3a')]])){utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x3b'),_0x58e4e6['uniqueid']),_0x58e4e6);utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x3c'),_0x58e4e6[_0x7b7e('0x3')],agents[_0x58e4e6[_0x7b7e('0x3a')]]['membername'],agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3')]));agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3d')]=!![];agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x3e')]=_0x7b7e('0x3f');agents[_0x58e4e6['transfereruniqueid']][_0x7b7e('0x40')]=_0x58e4e6['extension'];agents[_0x58e4e6[_0x7b7e('0x3a')]][_0x7b7e('0x41')]=agents[_0x58e4e6['transfereruniqueid']][_0x7b7e('0x3')];}}catch(_0x44e3a0){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x3b'),_0x58e4e6[_0x7b7e('0x3')]),_0x44e3a0);}};exports[_0x7b7e('0x42')]=function(_0x5f15ce){try{utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x43'),_0x5f15ce[_0x7b7e('0x44')]),_0x5f15ce);if(_0x5f15ce['origtransfereruniqueid']==_0x5f15ce['origtransfererlinkedid']){if(!_['isNil'](agents[_0x5f15ce[_0x7b7e('0x45')]])){utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x5f15ce['origtransfereruniqueid'],agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x19')]));agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x3d')]=!![];agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x3e')]='ATTENDED';agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x40')]=_0x5f15ce['origtransfererexten'];agents[_0x5f15ce[_0x7b7e('0x45')]][_0x7b7e('0x41')]=_0x5f15ce[_0x7b7e('0x44')];}if(_0x5f15ce[_0x7b7e('0x46')]&&agents[_0x5f15ce[_0x7b7e('0x46')]]){agents[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x47')]=0x1;transfers[_0x5f15ce[_0x7b7e('0x46')]]=_[_0x7b7e('0x48')](agents[_0x5f15ce['transfereeuniqueid']]);transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x6')]=agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x6')];transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x49')]=agents[_0x5f15ce['secondtransfereruniqueid']][_0x7b7e('0x49')];transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x14')]=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x30')]=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce['transfereeuniqueid']][_0x7b7e('0x24')]=0x0;transfers[_0x5f15ce[_0x7b7e('0x46')]][_0x7b7e('0x47')]=0x2;}}else if(_0x5f15ce[_0x7b7e('0x45')]==_0x5f15ce['secondtransfererlinkedid']){if(!_[_0x7b7e('0x1d')](agents[_0x5f15ce[_0x7b7e('0x44')]])){utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x4a'),_0x5f15ce[_0x7b7e('0x44')],agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x19')]));agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x3d')]=!![];agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x3e')]='ATTENDED';agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x40')]=_0x5f15ce[_0x7b7e('0x4b')];agents[_0x5f15ce[_0x7b7e('0x44')]][_0x7b7e('0x41')]=_0x5f15ce['secondtransfereruniqueid'];}if(_0x5f15ce[_0x7b7e('0x4c')]&&agents[_0x5f15ce[_0x7b7e('0x4c')]]){agents[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x47')]=0x1;transfers[_0x5f15ce[_0x7b7e('0x4c')]]=_[_0x7b7e('0x48')](agents[_0x5f15ce['transfertargetuniqueid']]);transfers[_0x5f15ce[_0x7b7e('0x4c')]]['calleridnum']=agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x6')];transfers[_0x5f15ce['transfertargetuniqueid']][_0x7b7e('0x49')]=agents[_0x5f15ce['origtransfereruniqueid']][_0x7b7e('0x49')];transfers[_0x5f15ce[_0x7b7e('0x4c')]]['agentcalledAt']=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce[_0x7b7e('0x4c')]]['agentconnectAt']=utils[_0x7b7e('0x15')]();transfers[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x24')]=0x0;transfers[_0x5f15ce[_0x7b7e('0x4c')]][_0x7b7e('0x47')]=0x2;}}}catch(_0x2147d9){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x43'),_0x5f15ce[_0x7b7e('0x44')]),_0x2147d9);}};exports['hangup']=function(_0x59ecf9){try{utils[_0x7b7e('0x1e')](util[_0x7b7e('0x2')](_0x7b7e('0x4d'),_0x59ecf9[_0x7b7e('0x3')]),_0x59ecf9);if(agents[_0x59ecf9[_0x7b7e('0x3')]]&&agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]==='timeout'){if(_0x59ecf9[_0x7b7e('0x4e')]==='21'){agents[_0x59ecf9[_0x7b7e('0x3')]]['reason']=_0x7b7e('0x4f');agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]=_0x7b7e('0x4f');}utils[_0x7b7e('0x17')](util[_0x7b7e('0x2')](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],agents[_0x59ecf9[_0x7b7e('0x3')]]['reason'],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]));writeDB(agents[_0x59ecf9[_0x7b7e('0x3')]]);var _0x122053=unanswered[_0x7b7e('0x51')](_0x59ecf9[_0x7b7e('0x3')]);if(_0x122053>-0x1){unanswered[_0x7b7e('0x52')](_0x122053,0x1);}}if(transfers[_0x59ecf9['uniqueid']]){transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x34')]=!![];transfers[_0x59ecf9[_0x7b7e('0x3')]]['agentcompleteAt']=utils[_0x7b7e('0x15')]();transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x2b')]=utils[_0x7b7e('0x53')](transfers[_0x59ecf9[_0x7b7e('0x3')]]['agentcompleteAt'],transfers[_0x59ecf9['uniqueid']]['agentconnectAt']);transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]=_0x7b7e('0x54');transfers[_0x59ecf9['uniqueid']][_0x7b7e('0x8')]=_0x7b7e('0x37');utils[_0x7b7e('0x17')](util['format'](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],transfers[_0x59ecf9['uniqueid']][_0x7b7e('0x22')],transfers[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]));writeDB(transfers[_0x59ecf9[_0x7b7e('0x3')]],!![]);}if(agents[_0x59ecf9['uniqueid']]&&agents[_0x59ecf9['uniqueid']][_0x7b7e('0x30')]){agents[_0x59ecf9['uniqueid']][_0x7b7e('0x34')]=!![];agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x36')]=utils[_0x7b7e('0x15')]();agents[_0x59ecf9['uniqueid']][_0x7b7e('0x2b')]=utils[_0x7b7e('0x53')](agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x36')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x30')]);agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')]=agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x3d')]?_0x7b7e('0x3d'):_0x7b7e('0x54');agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x8')]=_0x7b7e('0x37');utils[_0x7b7e('0x17')](util['format'](_0x7b7e('0x50'),_0x59ecf9[_0x7b7e('0x3')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x19')],agents[_0x59ecf9[_0x7b7e('0x3')]][_0x7b7e('0x22')],agents[_0x59ecf9[_0x7b7e('0x3')]]['lastevent']));writeDB(agents[_0x59ecf9[_0x7b7e('0x3')]]);}}catch(_0x3880be){utils[_0x7b7e('0x1a')](util[_0x7b7e('0x2')](_0x7b7e('0x4d'),_0x59ecf9['uniqueid']),_0x3880be);}};
\ No newline at end of file
+var _0x3f8c=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','[%s][agents][hangup]','./utils','info','membername','interface','calleridnum','connectedlinenum','lastevent','queue','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','debug','format','[%s][agents][agentcalled]','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','isNil','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','cause','rejected','indexOf','splice','agent'];(function(_0x35843c,_0x291a51){var _0x3dfae3=function(_0x1c302c){while(--_0x1c302c){_0x35843c['push'](_0x35843c['shift']());}};_0x3dfae3(++_0x291a51);}(_0x3f8c,0x104));var _0xc3f8=function(_0x34be09,_0x15fc12){_0x34be09=_0x34be09-0x0;var _0x4dc9f6=_0x3f8c[_0x34be09];return _0x4dc9f6;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xc3f8('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3a1f6a,_0x2e70c4){utils[_0xc3f8('0x1')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3a1f6a['uniqueid'],_0x3a1f6a['channel'],_0x3a1f6a['queue'],_0x3a1f6a[_0xc3f8('0x2')],_0x3a1f6a[_0xc3f8('0x3')],_0x3a1f6a[_0xc3f8('0x4')],_0x3a1f6a[_0xc3f8('0x5')],_0x3a1f6a[_0xc3f8('0x6')]));if(_0x3a1f6a[_0xc3f8('0x7')]){utils['getVoiceQueueByName'](_0x3a1f6a[_0xc3f8('0x7')])[_0xc3f8('0x8')](function(_0x15cb3b){if(_0x15cb3b){_0x3a1f6a[_0xc3f8('0x9')]=_0x15cb3b[_0xc3f8('0x9')];_0x3a1f6a[_0xc3f8('0xa')]=_0x3a1f6a[_0xc3f8('0xb')]?_0x15cb3b['acw']:![];_0x3a1f6a[_0xc3f8('0xc')]=_0x3a1f6a[_0xc3f8('0xa')]?_0x15cb3b[_0xc3f8('0xd')]:0x0;}utils[_0xc3f8('0xe')]('CreateVoiceAgentReport',_0x3a1f6a);});}else{utils[_0xc3f8('0xe')](_0xc3f8('0xf'),_0x3a1f6a);}if(_0x2e70c4){delete transfers[_0x3a1f6a[_0xc3f8('0x10')]];}else{delete agents[_0x3a1f6a[_0xc3f8('0x11')]];}}exports['agentcalled']=function(_0x84f489){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x14'),_0x84f489[_0xc3f8('0x10')]),_0x84f489);agents[_0x84f489[_0xc3f8('0x11')]]=_0x84f489;agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x17');agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinenum']=null;agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinename']=null;utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x18'),_0x84f489[_0xc3f8('0x10')],agents[_0x84f489[_0xc3f8('0x11')]]['membername'],_0x84f489[_0xc3f8('0x11')]));}catch(_0x1db809){utils['error'](util[_0xc3f8('0x13')]('[%s][agents][agentcalled]',_0x84f489[_0xc3f8('0x10')]),_0x1db809);}};exports[_0xc3f8('0x19')]=function(_0x3b2e98){try{if(!_['isNil'](agents[_0x3b2e98['destuniqueid']])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98[_0xc3f8('0x10')]),_0x3b2e98);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x1b'),_0x3b2e98[_0xc3f8('0x10')],agents[_0x3b2e98['destuniqueid']]['membername'],_0x3b2e98['destuniqueid']));agents[_0x3b2e98[_0xc3f8('0x11')]]['agentringnoanswer']=!![];agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1c')]=utils['now']();agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1f')]=_0x3b2e98[_0xc3f8('0x20')]?parseInt(_0x3b2e98[_0xc3f8('0x20')])/0x3e8:0x0;agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x21')]=0x0;unanswered[_0xc3f8('0x22')](_0x3b2e98[_0xc3f8('0x11')]);}}catch(_0x59e4dd){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98['uniqueid']),_0x59e4dd);}};exports[_0xc3f8('0x24')]=function(_0x4d39a0){try{_[_0xc3f8('0x25')](agents,function(_0x32343e,_0x47ab53){if(_0x32343e['uniqueid']==_0x4d39a0[_0xc3f8('0x10')]&&!_[_0xc3f8('0x26')](unanswered,_0x32343e[_0xc3f8('0x11')])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0[_0xc3f8('0x10')]),_0x4d39a0);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x28'),_0x4d39a0['uniqueid'],_0x32343e[_0xc3f8('0x2')],_0x32343e[_0xc3f8('0x11')]));_0x32343e[_0xc3f8('0x19')]=!![];_0x32343e[_0xc3f8('0x1c')]=utils[_0xc3f8('0x16')]();_0x32343e['lastevent']='abandoned';_0x32343e[_0xc3f8('0x1e')]=_0xc3f8('0x29');_0x32343e[_0xc3f8('0x1f')]=_0x4d39a0[_0xc3f8('0x1f')];_0x32343e[_0xc3f8('0x21')]=0x0;writeDB(_0x32343e);}});}catch(_0x4e51ac){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0['uniqueid']),_0x4e51ac);}};exports[_0xc3f8('0x2a')]=function(_0x11ecc2){try{if(agents[_0x11ecc2[_0xc3f8('0x11')]]){utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x11ecc2);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x2c'),_0x11ecc2[_0xc3f8('0x10')],agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x11ecc2['destuniqueid']));agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x5')]=_0x11ecc2['connectedlinenum'];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2e')]=_0x11ecc2[_0xc3f8('0x2e')];agents[_0x11ecc2['destuniqueid']][_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x6')]='connect';_[_0xc3f8('0x25')](agents,function(_0x45d416,_0x2df096){if(_0x45d416[_0xc3f8('0x11')]!=_0x11ecc2['destuniqueid']&&_0x45d416[_0xc3f8('0x10')]==_0x11ecc2['uniqueid']){_0x45d416['talktime']=0x0;_0x45d416[_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];_0x45d416[_0xc3f8('0x19')]=!![];_0x45d416[_0xc3f8('0x1c')]=utils['now']();_0x45d416['lastevent']=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x1e')]=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x30')]=_0x11ecc2[_0xc3f8('0x11')];_0x45d416[_0xc3f8('0x31')]=_0x11ecc2[_0xc3f8('0x2')];writeDB(_0x45d416);}});}}catch(_0x45e6ea){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x45e6ea);}};exports[_0xc3f8('0xb')]=function(_0x22e9b3){try{if(!_['isNil'](agents[_0x22e9b3[_0xc3f8('0x11')]])){utils[_0xc3f8('0x12')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0x22e9b3);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x33'),_0x22e9b3[_0xc3f8('0x10')],agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x22e9b3[_0xc3f8('0x11')]));agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0xb')]=!![];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x34')],agents[_0x22e9b3['destuniqueid']]['agentconnectAt']);agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0x22e9b3[_0xc3f8('0x1e')];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x36');writeDB(agents[_0x22e9b3[_0xc3f8('0x11')]]);}}catch(_0xe3d5c4){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0xe3d5c4);}};exports['blindtransfer']=function(_0x1becae){try{if(!_[_0xc3f8('0x37')](agents[_0x1becae[_0xc3f8('0x38')]])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae[_0xc3f8('0x10')]),_0x1becae);utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x3a'),_0x1becae['uniqueid'],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x2')],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')]));agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3b')]=!![];agents[_0x1becae[_0xc3f8('0x38')]]['transfertype']=_0xc3f8('0x3c');agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3d')]=_0x1becae[_0xc3f8('0x3e')];agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3f')]=agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')];}}catch(_0x4fc02c){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae['uniqueid']),_0x4fc02c);}};exports['attendedtransfer']=function(_0x773d56){try{utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x773d56);if(_0x773d56['origtransfereruniqueid']==_0x773d56[_0xc3f8('0x42')]){if(!_['isNil'](agents[_0x773d56['secondtransfereruniqueid']])){utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x44')]]['membername']));agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56['secondtransfereruniqueid']]['transferexten']=_0x773d56[_0xc3f8('0x47')];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3f')]=_0x773d56[_0xc3f8('0x41')];}if(_0x773d56[_0xc3f8('0x48')]&&agents[_0x773d56['transfereeuniqueid']]){agents[_0x773d56[_0xc3f8('0x48')]]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x48')]]=_[_0xc3f8('0x49')](agents[_0x773d56[_0xc3f8('0x48')]]);transfers[_0x773d56[_0xc3f8('0x48')]]['calleridnum']=agents[_0x773d56[_0xc3f8('0x44')]]['calleridnum'];transfers[_0x773d56['transfereeuniqueid']]['calleridname']=agents[_0x773d56['secondtransfereruniqueid']][_0xc3f8('0x4a')];transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x4b')]=0x2;}}else if(_0x773d56[_0xc3f8('0x44')]==_0x773d56[_0xc3f8('0x4c')]){if(!_[_0xc3f8('0x37')](agents[_0x773d56['origtransfereruniqueid']])){utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x41')]]['membername']));agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56[_0xc3f8('0x41')]]['transferexten']=_0x773d56[_0xc3f8('0x4d')];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3f')]=_0x773d56['secondtransfereruniqueid'];}if(_0x773d56[_0xc3f8('0x4e')]&&agents[_0x773d56[_0xc3f8('0x4e')]]){agents[_0x773d56['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x4e')]]=_[_0xc3f8('0x49')](agents[_0x773d56['transfertargetuniqueid']]);transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4')];transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4a')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4a')];transfers[_0x773d56['transfertargetuniqueid']]['agentcalledAt']=utils[_0xc3f8('0x16')]();transfers[_0x773d56['transfertargetuniqueid']]['agentconnectAt']=utils['now']();transfers[_0x773d56['transfertargetuniqueid']]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4b')]=0x2;}}}catch(_0x188d39){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x188d39);}};exports['hangup']=function(_0x3b9b47){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')]('[%s][agents][hangup]',_0x3b9b47[_0xc3f8('0x10')]),_0x3b9b47);if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47['uniqueid']]['reason']===_0xc3f8('0x1d')){if(_0x3b9b47[_0xc3f8('0x4f')]==='21'){agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')]=_0xc3f8('0x50');agents[_0x3b9b47['uniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x50');}utils['info'](util[_0xc3f8('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47[_0xc3f8('0x10')]]['membername'],agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],agents[_0x3b9b47[_0xc3f8('0x10')]]['lastevent']));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);var _0x5de19e=unanswered[_0xc3f8('0x51')](_0x3b9b47['uniqueid']);if(_0x5de19e>-0x1){unanswered[_0xc3f8('0x52')](_0x5de19e,0x1);}}if(transfers[_0x3b9b47[_0xc3f8('0x10')]]){transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0xb')]=!![];transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x21')]=utils['diffTime'](transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]);transfers[_0x3b9b47[_0xc3f8('0x10')]]['reason']=_0xc3f8('0x53');transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],transfers[_0x3b9b47[_0xc3f8('0x10')]]['membername'],transfers[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(transfers[_0x3b9b47[_0xc3f8('0x10')]],!![]);}if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]){agents[_0x3b9b47[_0xc3f8('0x10')]]['agentcomplete']=!![];agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils['now']();agents[_0x3b9b47['uniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x3b9b47['uniqueid']][_0xc3f8('0x34')],agents[_0x3b9b47[_0xc3f8('0x10')]]['agentconnectAt']);agents[_0x3b9b47[_0xc3f8('0x10')]]['reason']=agents[_0x3b9b47[_0xc3f8('0x10')]]['transfer']?_0xc3f8('0x3b'):_0xc3f8('0x53');agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47['uniqueid']]['membername'],agents[_0x3b9b47[_0xc3f8('0x10')]]['reason'],agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);}}catch(_0xfb05eb){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x55'),_0x3b9b47[_0xc3f8('0x10')]),_0xfb05eb);}};
\ No newline at end of file
index b50c5eb..c3baca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b67=['FAILED','NO\x20ANSWER','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','format','channel','queue','membername','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','calleridnum','exten','now','error','newstate','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','channelstate','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','cause-txt','endtime','duration','diffTime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','transfertargetchannel','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','variable','value','source','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','appdata','toLowerCase','set','startsWith','cdr','includes','noop','execif','gotoif','application','lodash','./utils','./transfers.controller'];(function(_0x392cc2,_0x258e7f){var _0x3064d5=function(_0x4f5401){while(--_0x4f5401){_0x392cc2['push'](_0x392cc2['shift']());}};_0x3064d5(++_0x258e7f);}(_0x2b67,0x67));var _0x72b6=function(_0x249561,_0x2a98a4){_0x249561=_0x249561-0x0;var _0x19ed7b=_0x2b67[_0x249561];return _0x19ed7b;};'use strict';var _=require(_0x72b6('0x0'));var util=require('util');var utils=require(_0x72b6('0x1'));var transfers=require(_0x72b6('0x2'));var dispositions=['NO\x20ANSWER',_0x72b6('0x3'),'FAILED','NO\x20ANSWER',_0x72b6('0x4'),_0x72b6('0x4'),_0x72b6('0x5'),_0x72b6('0x6'),'FAILED',_0x72b6('0x3'),_0x72b6('0x3')];var channels={};function writeDB(_0x198bc6){var _0x1804e8;if(transfers['blinds'][_0x198bc6[_0x72b6('0x7')]]){_0x1804e8=_0x198bc6[_0x72b6('0x7')];_0x198bc6[_0x72b6('0x7')]=transfers[_0x72b6('0x8')][_0x198bc6[_0x72b6('0x7')]][_0x72b6('0x9')];}utils['info'](util[_0x72b6('0xa')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x198bc6[_0x72b6('0x7')],_0x198bc6[_0x72b6('0xb')],_0x198bc6[_0x72b6('0xc')],_0x198bc6[_0x72b6('0xd')],_0x198bc6['interface'],_0x198bc6['calleridnum'],_0x198bc6[_0x72b6('0xe')],_0x198bc6[_0x72b6('0xf')]));if(_0x198bc6[_0x72b6('0x10')]){utils[_0x72b6('0x11')](_0x198bc6[_0x72b6('0x10')])[_0x72b6('0x12')](function(_0x58c48a){if(_0x58c48a){_0x198bc6[_0x72b6('0x13')]=_0x58c48a['id'];}utils[_0x72b6('0x14')](_0x72b6('0x15'),_0x198bc6);});}else{utils[_0x72b6('0x14')](_0x72b6('0x15'),_0x198bc6);}if(channels[_0x198bc6['uniqueid']]){delete channels[_0x198bc6[_0x72b6('0x7')]];}else if(_0x1804e8&&channels[_0x1804e8]){if(!transfers[_0x72b6('0x8')][_0x1804e8][_0x72b6('0x16')])delete transfers['blinds'][_0x1804e8];delete channels[_0x1804e8];}}exports[_0x72b6('0x17')]=function(_0x2dcfc1){try{utils[_0x72b6('0x18')](util[_0x72b6('0xa')](_0x72b6('0x19'),_0x2dcfc1[_0x72b6('0x7')]),_0x2dcfc1);if(_0x2dcfc1[_0x72b6('0x7')]==_0x2dcfc1[_0x72b6('0x1a')]&&_0x2dcfc1[_0x72b6('0xb')]!='OutgoingSpoolFailed'){utils[_0x72b6('0x1b')](util['format'](_0x72b6('0x1c'),_0x2dcfc1[_0x72b6('0x7')],_0x2dcfc1[_0x72b6('0x1d')],_0x2dcfc1['exten']));channels[_0x2dcfc1[_0x72b6('0x7')]]={'uniqueid':_0x2dcfc1['uniqueid'],'accountcode':_0x2dcfc1[_0x72b6('0x10')],'source':_0x2dcfc1[_0x72b6('0x1e')],'destination':_0x2dcfc1[_0x72b6('0x1f')],'destinationcontext':_0x2dcfc1['context'],'channel':_0x2dcfc1[_0x72b6('0xb')],'starttime':utils[_0x72b6('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x72b6('0x4'),'amaflags':'DOCUMENTATION'};}}catch(_0x55c69f){utils[_0x72b6('0x21')](util['format'](_0x72b6('0x19'),_0x2dcfc1[_0x72b6('0x7')]),_0x55c69f);}};exports[_0x72b6('0x22')]=function(_0x44ee5b){try{utils['debug'](util[_0x72b6('0xa')](_0x72b6('0x23'),_0x44ee5b['uniqueid']),_0x44ee5b);if(!_[_0x72b6('0x24')](channels[_0x44ee5b[_0x72b6('0x7')]])&&_0x44ee5b['channelstate']==0x6){utils['info'](util['format'](_0x72b6('0x25'),_0x44ee5b['uniqueid'],_0x44ee5b[_0x72b6('0x1d')],_0x44ee5b[_0x72b6('0xb')]));if(_['isNil'](channels[_0x44ee5b[_0x72b6('0x7')]]['systemanswertime'])){channels[_0x44ee5b[_0x72b6('0x7')]]['systemanswertime']=utils[_0x72b6('0x20')]();}}else if(!_['isNil'](channels[_0x44ee5b['linkedid']])&&_0x44ee5b[_0x72b6('0x26')]==0x6&&_0x44ee5b[_0x72b6('0x1d')]!='transfer'){utils['info'](util[_0x72b6('0xa')](_0x72b6('0x27'),_0x44ee5b[_0x72b6('0x7')],_0x44ee5b[_0x72b6('0x1a')],_0x44ee5b['context'],_0x44ee5b[_0x72b6('0xb')]));channels[_0x44ee5b[_0x72b6('0x1a')]][_0x72b6('0x10')]=_0x44ee5b[_0x72b6('0x10')];channels[_0x44ee5b['linkedid']][_0x72b6('0x28')]=_0x44ee5b[_0x72b6('0xb')];if(_['isNil'](channels[_0x44ee5b[_0x72b6('0x1a')]]['answertime'])){channels[_0x44ee5b[_0x72b6('0x1a')]][_0x72b6('0x29')]=utils[_0x72b6('0x20')]();}channels[_0x44ee5b[_0x72b6('0x1a')]][_0x72b6('0x2a')]=dispositions[_[_0x72b6('0x2b')](_0x44ee5b[_0x72b6('0x26')])]||_0x72b6('0x5');}}catch(_0x5819bc){utils[_0x72b6('0x21')](util[_0x72b6('0xa')]('[%s][calls][newstate]',_0x44ee5b[_0x72b6('0x7')]),_0x5819bc);}};exports[_0x72b6('0x2c')]=function(_0x5cbf96){try{if(!_['isNil'](channels[_0x5cbf96['uniqueid']])){utils[_0x72b6('0x18')](util['format'](_0x72b6('0x2d'),_0x5cbf96[_0x72b6('0x7')]),_0x5cbf96);if(_[_0x72b6('0x24')](channels[_0x5cbf96['uniqueid']][_0x72b6('0x2e')])){channels[_0x5cbf96[_0x72b6('0x7')]]['callerid']=_0x5cbf96[_0x72b6('0x2f')]+'\x20<'+_0x5cbf96[_0x72b6('0x1e')]+'>';}utils[_0x72b6('0x1b')](util[_0x72b6('0xa')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x5cbf96[_0x72b6('0x7')],channels[_0x5cbf96['uniqueid']][_0x72b6('0x2e')],_0x5cbf96[_0x72b6('0x30')]));channels[_0x5cbf96['uniqueid']][_0x72b6('0x31')]=utils[_0x72b6('0x20')]();channels[_0x5cbf96[_0x72b6('0x7')]][_0x72b6('0x32')]=utils[_0x72b6('0x33')](channels[_0x5cbf96[_0x72b6('0x7')]]['endtime'],channels[_0x5cbf96['uniqueid']]['starttime']);channels[_0x5cbf96[_0x72b6('0x7')]]['billableseconds']=channels[_0x5cbf96[_0x72b6('0x7')]]['answertime']?utils['diffTime'](channels[_0x5cbf96[_0x72b6('0x7')]][_0x72b6('0x31')],channels[_0x5cbf96[_0x72b6('0x7')]][_0x72b6('0x29')]):0x0;writeDB(channels[_0x5cbf96[_0x72b6('0x7')]]);}}catch(_0x59f87e){utils[_0x72b6('0x21')](util[_0x72b6('0xa')](_0x72b6('0x2d'),_0x5cbf96[_0x72b6('0x7')]),_0x59f87e);}};exports[_0x72b6('0x34')]=function(_0x12c453){try{if(!_[_0x72b6('0x24')](channels[_0x12c453[_0x72b6('0x35')]])){utils['debug'](util['format'](_0x72b6('0x36'),_0x12c453['origtransfereruniqueid']),_0x12c453);if(channels[_0x12c453[_0x72b6('0x35')]][_0x72b6('0xb')]==_0x12c453[_0x72b6('0x37')]){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')](_0x72b6('0x38'),_0x12c453[_0x72b6('0x39')],_0x12c453[_0x72b6('0x35')],_0x12c453[_0x72b6('0x3a')]));channels[_0x12c453['localtwolinkedid']][_0x72b6('0x28')]=_0x12c453[_0x72b6('0x3a')];channels[_0x12c453[_0x72b6('0x35')]][_0x72b6('0x3b')]='_attended';}else if(channels[_0x12c453[_0x72b6('0x35')]][_0x72b6('0xb')]=_0x12c453[_0x72b6('0x3c')]){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')](_0x72b6('0x38'),_0x12c453[_0x72b6('0x39')],_0x12c453[_0x72b6('0x35')],_0x12c453[_0x72b6('0x3d')]));channels[_0x12c453[_0x72b6('0x35')]][_0x72b6('0x28')]=_0x12c453[_0x72b6('0x3d')];channels[_0x12c453[_0x72b6('0x35')]]['userfield']=_0x72b6('0x3e');}}}catch(_0x5235dd){utils[_0x72b6('0x21')](util[_0x72b6('0xa')](_0x72b6('0x36'),_0x12c453[_0x72b6('0x39')]),_0x5235dd);}};exports[_0x72b6('0x3f')]=function(_0x1432ce){try{if(!_['isNil'](channels[_0x1432ce[_0x72b6('0x7')]])){utils['debug'](util['format'](_0x72b6('0x40'),_0x1432ce['uniqueid']),_0x1432ce);channels[_0x1432ce[_0x72b6('0x7')]][_0x72b6('0x41')]=utils[_0x72b6('0x20')]();utils[_0x72b6('0x1b')](util['format'](_0x72b6('0x42'),_0x1432ce[_0x72b6('0x7')],channels[_0x1432ce[_0x72b6('0x7')]][_0x72b6('0x41')]));}}catch(_0x564613){utils[_0x72b6('0x21')](util[_0x72b6('0xa')]('[%s][calls][musiconholdstart]',_0x1432ce[_0x72b6('0x7')]),_0x564613);}};exports[_0x72b6('0x43')]=function(_0x3e88f5){try{if(!_[_0x72b6('0x24')](channels[_0x3e88f5[_0x72b6('0x7')]])){utils[_0x72b6('0x18')](util['format'](_0x72b6('0x44'),_0x3e88f5['uniqueid']),_0x3e88f5);if(!_[_0x72b6('0x24')](channels[_0x3e88f5[_0x72b6('0x7')]][_0x72b6('0x41')])){channels[_0x3e88f5[_0x72b6('0x7')]][_0x72b6('0x45')]+=utils[_0x72b6('0x33')](utils[_0x72b6('0x20')](),channels[_0x3e88f5['uniqueid']][_0x72b6('0x41')]);utils['info'](util['format'](_0x72b6('0x46'),_0x3e88f5['uniqueid'],channels[_0x3e88f5[_0x72b6('0x7')]]['mohtime']));delete channels[_0x3e88f5[_0x72b6('0x7')]][_0x72b6('0x41')];}}}catch(_0x2c86ce){utils['error'](util['format'](_0x72b6('0x44'),_0x3e88f5[_0x72b6('0x7')]),_0x2c86ce);}};exports['varset']=function(_0x238e56){try{if(!_['isNil'](channels[_0x238e56['uniqueid']])){utils['debug'](util[_0x72b6('0xa')](_0x72b6('0x47'),_0x238e56[_0x72b6('0x7')]),_0x238e56);if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')]['xmd-originatecalleridnum'])){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x238e56[_0x72b6('0x7')],_0x238e56[_0x72b6('0x49')]));channels[_0x238e56[_0x72b6('0x7')]][_0x72b6('0x4a')]=_0x238e56[_0x72b6('0x49')];}if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x4b')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x238e56[_0x72b6('0x7')],_0x238e56[_0x72b6('0x49')]));channels[_0x238e56['uniqueid']][_0x72b6('0x4c')]=_0x238e56[_0x72b6('0x49')];channels[_0x238e56[_0x72b6('0x7')]][_0x72b6('0x2e')]='\x22'+_0x238e56[_0x72b6('0x49')]+_0x72b6('0x4d')+_0x238e56[_0x72b6('0x49')]+'>';}if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x4e')])||!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x4f')])){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')](_0x72b6('0x50'),_0x238e56[_0x72b6('0x7')],!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x4e')])?_0x72b6('0x4e'):_0x72b6('0x4f'),_0x238e56[_0x72b6('0x49')]));channels[_0x238e56['uniqueid']][_0x72b6('0x2e')]=_0x238e56['value'];}if(!_[_0x72b6('0x24')](_0x238e56['variable'][_0x72b6('0x51')])||!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x52')])){utils[_0x72b6('0x1b')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x238e56[_0x72b6('0x7')],!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x51')])?_0x72b6('0x51'):_0x72b6('0x52'),_0x238e56[_0x72b6('0x49')]));channels[_0x238e56[_0x72b6('0x7')]][_0x72b6('0x53')]=_0x72b6('0x54');channels[_0x238e56[_0x72b6('0x7')]][_0x72b6('0x55')]=_0x238e56['value'];channels[_0x238e56['uniqueid']][_0x72b6('0xc')]=!![];}if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x56')])){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')](_0x72b6('0x57'),_0x238e56[_0x72b6('0x7')],_0x238e56['value']));channels[_0x238e56[_0x72b6('0x7')]]['ContactId']=_0x238e56[_0x72b6('0x49')];}if(!_[_0x72b6('0x24')](_0x238e56['variable']['xmd-cdrtype'])){utils['info'](util[_0x72b6('0xa')](_0x72b6('0x58'),_0x238e56['uniqueid'],_0x238e56[_0x72b6('0x49')]));channels[_0x238e56[_0x72b6('0x7')]][_0x72b6('0x59')]=_0x238e56[_0x72b6('0x49')];}if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x5a')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x238e56['uniqueid'],_0x238e56[_0x72b6('0x49')]));channels[_0x238e56['uniqueid']][_0x72b6('0x5b')]=_0x238e56[_0x72b6('0x49')];}if(!_[_0x72b6('0x24')](_0x238e56[_0x72b6('0x48')][_0x72b6('0x5c')])){utils[_0x72b6('0x1b')](util[_0x72b6('0xa')](_0x72b6('0x5d'),_0x238e56[_0x72b6('0x7')],_0x238e56[_0x72b6('0x49')]));channels[_0x238e56['uniqueid']][_0x72b6('0x5c')]=_0x238e56[_0x72b6('0x49')];}}}catch(_0x535268){utils[_0x72b6('0x21')](util[_0x72b6('0xa')](_0x72b6('0x47'),_0x238e56['uniqueid']),_0x535268);}};exports[_0x72b6('0x5e')]=function(_0x3fd008){try{if(!_['isNil'](channels[_0x3fd008[_0x72b6('0x7')]])){utils[_0x72b6('0x18')](util['format'](_0x72b6('0x5f'),_0x3fd008[_0x72b6('0x7')]),_0x3fd008);utils[_0x72b6('0x1b')](util[_0x72b6('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x3fd008['uniqueid'],_0x3fd008['application'],_0x3fd008[_0x72b6('0x60')]));if(_0x3fd008['application'][_0x72b6('0x61')]()==_0x72b6('0x62')&&_[_0x72b6('0x63')](_0x3fd008[_0x72b6('0x60')][_0x72b6('0x61')](),_0x72b6('0x64'))){var _0x440bcb=_0x3fd008[_0x72b6('0x60')]['split']('=');var _0x375c66=_0x440bcb[0x0]['substring'](_0x440bcb[0x0]['lastIndexOf']('(')+0x1,_0x440bcb[0x0]['lastIndexOf'](')'));var _0x29c23e=_0x440bcb[0x1];channels[_0x3fd008['uniqueid']][_0x375c66]=_0x29c23e;}if(!_[_0x72b6('0x65')](['hangup',_0x72b6('0x66'),_0x72b6('0x67'),_0x72b6('0x62'),_0x72b6('0x68')],_0x3fd008['application'][_0x72b6('0x61')]())){channels[_0x3fd008['uniqueid']][_0x72b6('0x53')]=_0x3fd008[_0x72b6('0x69')];channels[_0x3fd008[_0x72b6('0x7')]][_0x72b6('0x55')]=_0x3fd008[_0x72b6('0x60')];}}}catch(_0x29efec){utils[_0x72b6('0x21')](util['format'](_0x72b6('0x5f'),_0x3fd008[_0x72b6('0x7')]),_0x29efec);}};
\ No newline at end of file
+var _0xfb93=['transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','[%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','lastdata','queue','xmd-contactid','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','split','lastIndexOf','includes','noop','execif','lastapplication','lodash','util','./utils','./transfers.controller','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','channel','membername','interface','calleridnum','connectedlinenum','accountcode','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','linkedid','context','exten','now','NO\x20ANSWER','DOCUMENTATION','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','duration','diffTime','endtime','starttime','billableseconds','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','localtwolinkedid','secondtransfererchannel','userfield','_attended'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfb93,0x111));var _0x3fb9=function(_0x2dcd34,_0x532156){_0x2dcd34=_0x2dcd34-0x0;var _0x40a22f=_0xfb93[_0x2dcd34];return _0x40a22f;};'use strict';var _=require(_0x3fb9('0x0'));var util=require(_0x3fb9('0x1'));var utils=require(_0x3fb9('0x2'));var transfers=require(_0x3fb9('0x3'));var dispositions=['NO\x20ANSWER',_0x3fb9('0x4'),_0x3fb9('0x4'),'NO\x20ANSWER','NO\x20ANSWER','NO\x20ANSWER',_0x3fb9('0x5'),_0x3fb9('0x6'),_0x3fb9('0x4'),_0x3fb9('0x4'),'FAILED'];var channels={};function writeDB(_0x4c5a56){var _0x286d33;if(transfers[_0x3fb9('0x7')][_0x4c5a56[_0x3fb9('0x8')]]){_0x286d33=_0x4c5a56[_0x3fb9('0x8')];_0x4c5a56[_0x3fb9('0x8')]=transfers[_0x3fb9('0x7')][_0x4c5a56[_0x3fb9('0x8')]][_0x3fb9('0x9')];}utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x4c5a56[_0x3fb9('0x8')],_0x4c5a56[_0x3fb9('0xc')],_0x4c5a56['queue'],_0x4c5a56[_0x3fb9('0xd')],_0x4c5a56[_0x3fb9('0xe')],_0x4c5a56[_0x3fb9('0xf')],_0x4c5a56[_0x3fb9('0x10')],_0x4c5a56['lastevent']));if(_0x4c5a56[_0x3fb9('0x11')]){utils['getUserByInternal'](_0x4c5a56[_0x3fb9('0x11')])['then'](function(_0xa9888a){if(_0xa9888a){_0x4c5a56[_0x3fb9('0x12')]=_0xa9888a['id'];}utils[_0x3fb9('0x13')](_0x3fb9('0x14'),_0x4c5a56);});}else{utils[_0x3fb9('0x13')](_0x3fb9('0x14'),_0x4c5a56);}if(channels[_0x4c5a56[_0x3fb9('0x8')]]){delete channels[_0x4c5a56['uniqueid']];}else if(_0x286d33&&channels[_0x286d33]){if(!transfers[_0x3fb9('0x7')][_0x286d33][_0x3fb9('0x15')])delete transfers['blinds'][_0x286d33];delete channels[_0x286d33];}}exports[_0x3fb9('0x16')]=function(_0xd0528f){try{utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')]('[%s][calls][newchannel]',_0xd0528f[_0x3fb9('0x8')]),_0xd0528f);if(_0xd0528f[_0x3fb9('0x8')]==_0xd0528f[_0x3fb9('0x18')]&&_0xd0528f['channel']!='OutgoingSpoolFailed'){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0xd0528f[_0x3fb9('0x8')],_0xd0528f[_0x3fb9('0x19')],_0xd0528f[_0x3fb9('0x1a')]));channels[_0xd0528f[_0x3fb9('0x8')]]={'uniqueid':_0xd0528f[_0x3fb9('0x8')],'accountcode':_0xd0528f[_0x3fb9('0x11')],'source':_0xd0528f[_0x3fb9('0xf')],'destination':_0xd0528f[_0x3fb9('0x1a')],'destinationcontext':_0xd0528f[_0x3fb9('0x19')],'channel':_0xd0528f[_0x3fb9('0xc')],'starttime':utils[_0x3fb9('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x3fb9('0x1c'),'amaflags':_0x3fb9('0x1d')};}}catch(_0x433fda){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x1f'),_0xd0528f[_0x3fb9('0x8')]),_0x433fda);}};exports[_0x3fb9('0x20')]=function(_0x4bc7d9){try{utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x21'),_0x4bc7d9['uniqueid']),_0x4bc7d9);if(!_[_0x3fb9('0x22')](channels[_0x4bc7d9[_0x3fb9('0x8')]])&&_0x4bc7d9[_0x3fb9('0x23')]==0x6){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x24'),_0x4bc7d9[_0x3fb9('0x8')],_0x4bc7d9[_0x3fb9('0x19')],_0x4bc7d9[_0x3fb9('0xc')]));if(_[_0x3fb9('0x22')](channels[_0x4bc7d9[_0x3fb9('0x8')]][_0x3fb9('0x25')])){channels[_0x4bc7d9['uniqueid']][_0x3fb9('0x25')]=utils[_0x3fb9('0x1b')]();}}else if(!_[_0x3fb9('0x22')](channels[_0x4bc7d9['linkedid']])&&_0x4bc7d9[_0x3fb9('0x23')]==0x6&&_0x4bc7d9[_0x3fb9('0x19')]!=_0x3fb9('0x26')){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x27'),_0x4bc7d9[_0x3fb9('0x8')],_0x4bc7d9[_0x3fb9('0x18')],_0x4bc7d9[_0x3fb9('0x19')],_0x4bc7d9['channel']));channels[_0x4bc7d9[_0x3fb9('0x18')]]['accountcode']=_0x4bc7d9['accountcode'];channels[_0x4bc7d9[_0x3fb9('0x18')]][_0x3fb9('0x28')]=_0x4bc7d9[_0x3fb9('0xc')];if(_[_0x3fb9('0x22')](channels[_0x4bc7d9['linkedid']][_0x3fb9('0x29')])){channels[_0x4bc7d9['linkedid']]['answertime']=utils[_0x3fb9('0x1b')]();}channels[_0x4bc7d9[_0x3fb9('0x18')]][_0x3fb9('0x2a')]=dispositions[_[_0x3fb9('0x2b')](_0x4bc7d9['channelstate'])]||'ANSWERED';}}catch(_0x339f84){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x21'),_0x4bc7d9[_0x3fb9('0x8')]),_0x339f84);}};exports[_0x3fb9('0x2c')]=function(_0x2542c0){try{if(!_[_0x3fb9('0x22')](channels[_0x2542c0[_0x3fb9('0x8')]])){utils['debug'](util[_0x3fb9('0xb')](_0x3fb9('0x2d'),_0x2542c0[_0x3fb9('0x8')]),_0x2542c0);if(_[_0x3fb9('0x22')](channels[_0x2542c0[_0x3fb9('0x8')]]['callerid'])){channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x2e')]=_0x2542c0[_0x3fb9('0x2f')]+'\x20<'+_0x2542c0[_0x3fb9('0xf')]+'>';}utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x30'),_0x2542c0[_0x3fb9('0x8')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x2e')],_0x2542c0['cause-txt']));channels[_0x2542c0[_0x3fb9('0x8')]]['endtime']=utils[_0x3fb9('0x1b')]();channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x31')]=utils[_0x3fb9('0x32')](channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x33')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x34')]);channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x35')]=channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x29')]?utils[_0x3fb9('0x32')](channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x33')],channels[_0x2542c0[_0x3fb9('0x8')]][_0x3fb9('0x29')]):0x0;writeDB(channels[_0x2542c0[_0x3fb9('0x8')]]);}}catch(_0x1431fc){utils['error'](util[_0x3fb9('0xb')](_0x3fb9('0x2d'),_0x2542c0[_0x3fb9('0x8')]),_0x1431fc);}};exports[_0x3fb9('0x36')]=function(_0x20bb4f){try{if(!_[_0x3fb9('0x22')](channels[_0x20bb4f['localtwolinkedid']])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x37'),_0x20bb4f[_0x3fb9('0x38')]),_0x20bb4f);if(channels[_0x20bb4f['localtwolinkedid']][_0x3fb9('0xc')]==_0x20bb4f[_0x3fb9('0x39')]){utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x3a'),_0x20bb4f[_0x3fb9('0x38')],_0x20bb4f[_0x3fb9('0x3b')],_0x20bb4f[_0x3fb9('0x3c')]));channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x28')]=_0x20bb4f['secondtransfererchannel'];channels[_0x20bb4f['localtwolinkedid']][_0x3fb9('0x3d')]=_0x3fb9('0x3e');}else if(channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0xc')]=_0x20bb4f[_0x3fb9('0x3f')]){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x3a'),_0x20bb4f['origtransfereruniqueid'],_0x20bb4f[_0x3fb9('0x3b')],_0x20bb4f[_0x3fb9('0x40')]));channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x28')]=_0x20bb4f[_0x3fb9('0x40')];channels[_0x20bb4f[_0x3fb9('0x3b')]][_0x3fb9('0x3d')]=_0x3fb9('0x3e');}}}catch(_0x470a1b){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x37'),_0x20bb4f[_0x3fb9('0x38')]),_0x470a1b);}};exports[_0x3fb9('0x41')]=function(_0x22bfa6){try{if(!_[_0x3fb9('0x22')](channels[_0x22bfa6[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x42'),_0x22bfa6[_0x3fb9('0x8')]),_0x22bfa6);channels[_0x22bfa6[_0x3fb9('0x8')]][_0x3fb9('0x43')]=utils['now']();utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x44'),_0x22bfa6[_0x3fb9('0x8')],channels[_0x22bfa6[_0x3fb9('0x8')]][_0x3fb9('0x43')]));}}catch(_0x4b04a0){utils['error'](util[_0x3fb9('0xb')](_0x3fb9('0x42'),_0x22bfa6[_0x3fb9('0x8')]),_0x4b04a0);}};exports[_0x3fb9('0x45')]=function(_0x12b16a){try{if(!_[_0x3fb9('0x22')](channels[_0x12b16a[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x46'),_0x12b16a['uniqueid']),_0x12b16a);if(!_['isNil'](channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x43')])){channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x47')]+=utils['diffTime'](utils['now'](),channels[_0x12b16a[_0x3fb9('0x8')]][_0x3fb9('0x43')]);utils['info'](util[_0x3fb9('0xb')](_0x3fb9('0x48'),_0x12b16a[_0x3fb9('0x8')],channels[_0x12b16a['uniqueid']]['mohtime']));delete channels[_0x12b16a[_0x3fb9('0x8')]]['musiconholdstartAt'];}}}catch(_0x4128db){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x46'),_0x12b16a['uniqueid']),_0x4128db);}};exports['varset']=function(_0x3d575a){try{if(!_[_0x3fb9('0x22')](channels[_0x3d575a[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x49'),_0x3d575a['uniqueid']),_0x3d575a);if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')]['xmd-originatecalleridnum'])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x4b'),_0x3d575a[_0x3fb9('0x8')],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x4d')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a['variable']['xmd-phone'])){utils[_0x3fb9('0xa')](util['format'](_0x3fb9('0x4e'),_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x4f')]=_0x3d575a[_0x3fb9('0x4c')];channels[_0x3d575a['uniqueid']][_0x3fb9('0x2e')]='\x22'+_0x3d575a[_0x3fb9('0x4c')]+_0x3fb9('0x50')+_0x3d575a[_0x3fb9('0x4c')]+'>';}if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x51')])||!_[_0x3fb9('0x22')](_0x3d575a['variable'][_0x3fb9('0x52')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x53'),_0x3d575a[_0x3fb9('0x8')],!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x51')])?_0x3fb9('0x51'):_0x3fb9('0x52'),_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a['uniqueid']][_0x3fb9('0x2e')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x54')])||!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x55')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x53'),_0x3d575a[_0x3fb9('0x8')],!_['isNil'](_0x3d575a['variable'][_0x3fb9('0x54')])?_0x3fb9('0x54'):_0x3fb9('0x55'),_0x3d575a['value']));channels[_0x3d575a['uniqueid']]['lastapplication']=_0x3fb9('0x56');channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x57')]=_0x3d575a['value'];channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x58')]=!![];}if(!_['isNil'](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x59')])){utils[_0x3fb9('0xa')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5a')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x5b')])){utils['info'](util[_0x3fb9('0xb')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x3d575a[_0x3fb9('0x8')],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5c')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a['variable'][_0x3fb9('0x5d')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x5e'),_0x3d575a['uniqueid'],_0x3d575a[_0x3fb9('0x4c')]));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x5f')]=_0x3d575a[_0x3fb9('0x4c')];}if(!_[_0x3fb9('0x22')](_0x3d575a[_0x3fb9('0x4a')][_0x3fb9('0x60')])){utils[_0x3fb9('0xa')](util[_0x3fb9('0xb')](_0x3fb9('0x61'),_0x3d575a[_0x3fb9('0x8')],_0x3d575a['value']));channels[_0x3d575a[_0x3fb9('0x8')]][_0x3fb9('0x60')]=_0x3d575a[_0x3fb9('0x4c')];}}}catch(_0x4d1f8c){utils[_0x3fb9('0x1e')](util[_0x3fb9('0xb')](_0x3fb9('0x49'),_0x3d575a[_0x3fb9('0x8')]),_0x4d1f8c);}};exports[_0x3fb9('0x62')]=function(_0x40f70c){try{if(!_[_0x3fb9('0x22')](channels[_0x40f70c[_0x3fb9('0x8')]])){utils[_0x3fb9('0x17')](util[_0x3fb9('0xb')](_0x3fb9('0x63'),_0x40f70c[_0x3fb9('0x8')]),_0x40f70c);utils[_0x3fb9('0xa')](util['format'](_0x3fb9('0x64'),_0x40f70c[_0x3fb9('0x8')],_0x40f70c[_0x3fb9('0x65')],_0x40f70c['appdata']));if(_0x40f70c[_0x3fb9('0x65')][_0x3fb9('0x66')]()=='set'&&_[_0x3fb9('0x67')](_0x40f70c[_0x3fb9('0x68')][_0x3fb9('0x66')](),_0x3fb9('0x69'))){var _0x4c5f56=_0x40f70c[_0x3fb9('0x68')][_0x3fb9('0x6a')]('=');var _0x4873a9=_0x4c5f56[0x0]['substring'](_0x4c5f56[0x0]['lastIndexOf']('(')+0x1,_0x4c5f56[0x0][_0x3fb9('0x6b')](')'));var _0x49266e=_0x4c5f56[0x1];channels[_0x40f70c[_0x3fb9('0x8')]][_0x4873a9]=_0x49266e;}if(!_[_0x3fb9('0x6c')](['hangup',_0x3fb9('0x6d'),_0x3fb9('0x6e'),'set','gotoif'],_0x40f70c[_0x3fb9('0x65')][_0x3fb9('0x66')]())){channels[_0x40f70c['uniqueid']][_0x3fb9('0x6f')]=_0x40f70c[_0x3fb9('0x65')];channels[_0x40f70c['uniqueid']][_0x3fb9('0x57')]=_0x40f70c[_0x3fb9('0x68')];}}}catch(_0x3d9ebb){utils['error'](util['format']('[%s][calls][newexten]',_0x40f70c[_0x3fb9('0x8')]),_0x3d9ebb);}};
\ No newline at end of file
index 1870bf9..e124e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa728=['[core]\x20error','close','[core]\x20close','./utils','connect','info','[core]\x20connected','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xa728,0x142));var _0x8a72=function(_0x487476,_0x1f226c){_0x487476=_0x487476-0x0;var _0x4a41d1=_0xa728[_0x487476];return _0x4a41d1;};'use strict';var utils=require(_0x8a72('0x0'));exports[_0x8a72('0x1')]=function(){utils[_0x8a72('0x2')](_0x8a72('0x3'));};exports['shutdown']=function(){utils[_0x8a72('0x2')](_0x8a72('0x4'));};exports[_0x8a72('0x5')]=function(){utils['info'](_0x8a72('0x6'));};exports['error']=function(_0x5c2718){utils[_0x8a72('0x7')](_0x8a72('0x8'),_0x5c2718);};exports[_0x8a72('0x9')]=function(){utils[_0x8a72('0x2')](_0x8a72('0xa'));};exports['managerevent']=function(_0x391e10){};
\ No newline at end of file
+var _0xc665=['[core]\x20fullybooted','error','close','[core]\x20close','managerevent','connect','info','shutdown','fullybooted'];(function(_0x131640,_0x28e7d4){var _0x500df0=function(_0x138b88){while(--_0x138b88){_0x131640['push'](_0x131640['shift']());}};_0x500df0(++_0x28e7d4);}(_0xc665,0x1ac));var _0x5c66=function(_0x57d390,_0x37883d){_0x57d390=_0x57d390-0x0;var _0x415227=_0xc665[_0x57d390];return _0x415227;};'use strict';var utils=require('./utils');exports[_0x5c66('0x0')]=function(){utils[_0x5c66('0x1')]('[core]\x20connected');};exports[_0x5c66('0x2')]=function(){utils['info']('[core]\x20shutdown');};exports[_0x5c66('0x3')]=function(){utils[_0x5c66('0x1')](_0x5c66('0x4'));};exports[_0x5c66('0x5')]=function(_0x475615){utils[_0x5c66('0x5')]('[core]\x20error',_0x475615);};exports[_0x5c66('0x6')]=function(){utils['info'](_0x5c66('0x7'));};exports[_0x5c66('0x8')]=function(_0x32d75d){};
\ No newline at end of file
index ef46919..132e92e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf59=['dialstatus','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','appdata','varset','debug','[%s][dials][varset]','variable','outboundrouteid','value','dialbegin','[%s][dials][dialbegin]','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','error','dialend','[%s][dials][dialend]','ANSWER','assign','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','isNil','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum'];(function(_0x4f3cfb,_0x57598b){var _0x3b3ec7=function(_0x6effa3){while(--_0x6effa3){_0x4f3cfb['push'](_0x4f3cfb['shift']());}};_0x3b3ec7(++_0x57598b);}(_0xcf59,0x1df));var _0x9cf5=function(_0x4d4046,_0x195cf8){_0x4d4046=_0x4d4046-0x0;var _0x82d2b1=_0xcf59[_0x4d4046];return _0x82d2b1;};'use strict';var _=require(_0x9cf5('0x0'));var util=require(_0x9cf5('0x1'));var utils=require(_0x9cf5('0x2'));var dials={};function writeDB(_0x479c15){utils[_0x9cf5('0x3')](util[_0x9cf5('0x4')](_0x9cf5('0x5'),_0x479c15[_0x9cf5('0x6')],_0x479c15[_0x9cf5('0x7')],_0x479c15[_0x9cf5('0x8')],_0x479c15[_0x9cf5('0x9')],_0x479c15[_0x9cf5('0xa')],_0x479c15[_0x9cf5('0xb')]));utils[_0x9cf5('0xc')](_0x9cf5('0xd'),_0x479c15);delete dials[_0x479c15['uniqueid']];}exports[_0x9cf5('0xe')]=function(_0x558200){try{utils['debug'](util[_0x9cf5('0x4')](_0x9cf5('0xf'),_0x558200[_0x9cf5('0x6')]),_0x558200);utils[_0x9cf5('0x3')](util['format'](_0x9cf5('0x10'),_0x558200[_0x9cf5('0x6')],_0x558200[_0x9cf5('0x11')],_0x558200['appdata']));if(_0x558200[_0x9cf5('0x11')][_0x9cf5('0x12')]()=='set'&&_['startsWith'](_0x558200['appdata'][_0x9cf5('0x12')](),'cdr(routeid)')){var _0x50bca2=_0x558200[_0x9cf5('0x13')]['split']('=');dials[_0x558200['uniqueid']]={'routeId':_0x50bca2[0x1]};}}catch(_0x2a422b){utils['error'](util[_0x9cf5('0x4')]('[%s][dials][newexten]',_0x558200[_0x9cf5('0x6')]),_0x2a422b);}};exports[_0x9cf5('0x14')]=function(_0x3b0a63){try{utils[_0x9cf5('0x15')](util[_0x9cf5('0x4')](_0x9cf5('0x16'),_0x3b0a63[_0x9cf5('0x6')]),_0x3b0a63);if(!_['isNil'](_0x3b0a63[_0x9cf5('0x17')][_0x9cf5('0x18')])){utils[_0x9cf5('0x3')](util['format']('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x3b0a63[_0x9cf5('0x6')],_0x3b0a63['value']));dials[_0x3b0a63[_0x9cf5('0x6')]]={'routeId':_0x3b0a63[_0x9cf5('0x19')]};}}catch(_0x365394){utils['error'](util['format'](_0x9cf5('0x16'),_0x3b0a63[_0x9cf5('0x6')]),_0x365394);}};exports[_0x9cf5('0x1a')]=function(_0x510fd7){try{if(!_['isNil'](dials[_0x510fd7[_0x9cf5('0x6')]])){utils[_0x9cf5('0x15')](util[_0x9cf5('0x4')](_0x9cf5('0x1b'),_0x510fd7['uniqueid']),_0x510fd7);dials[_0x510fd7[_0x9cf5('0x6')]]=_['assign'](dials[_0x510fd7['uniqueid']],_0x510fd7);dials[_0x510fd7[_0x9cf5('0x6')]]['starttime']=utils[_0x9cf5('0x1c')]();dials[_0x510fd7[_0x9cf5('0x6')]][_0x9cf5('0x1d')]='called';utils['info'](util[_0x9cf5('0x4')](_0x9cf5('0x1e'),_0x510fd7['uniqueid'],dials[_0x510fd7[_0x9cf5('0x6')]][_0x9cf5('0x1f')]));}}catch(_0x1da5d8){utils[_0x9cf5('0x20')](util[_0x9cf5('0x4')]('[%s][dials][dialbegin]',_0x510fd7[_0x9cf5('0x6')]),_0x1da5d8);}};exports[_0x9cf5('0x21')]=function(_0x183a04){try{if(!_['isNil'](dials[_0x183a04[_0x9cf5('0x6')]])){utils['debug'](util[_0x9cf5('0x4')](_0x9cf5('0x22'),_0x183a04[_0x9cf5('0x6')]),_0x183a04);dials[_0x183a04[_0x9cf5('0x6')]][_0x9cf5('0xb')]=_0x183a04[_0x9cf5('0xb')];if(_0x183a04[_0x9cf5('0xb')]==_0x9cf5('0x23')){dials[_0x183a04[_0x9cf5('0x6')]]=_[_0x9cf5('0x24')](dials[_0x183a04[_0x9cf5('0x6')]],_0x183a04);dials[_0x183a04[_0x9cf5('0x6')]][_0x9cf5('0x25')]=utils[_0x9cf5('0x1c')]();dials[_0x183a04[_0x9cf5('0x6')]][_0x9cf5('0x1d')]='connect';utils[_0x9cf5('0x3')](util['format'](_0x9cf5('0x26'),_0x183a04['uniqueid'],_0x183a04[_0x9cf5('0xb')],dials[_0x183a04[_0x9cf5('0x6')]][_0x9cf5('0x25')]));}else{utils[_0x9cf5('0x3')](util[_0x9cf5('0x4')](_0x9cf5('0x27'),_0x183a04[_0x9cf5('0x6')],_0x183a04[_0x9cf5('0xb')]));}}}catch(_0x5efdcf){utils[_0x9cf5('0x20')](util['format'](_0x9cf5('0x22'),_0x183a04[_0x9cf5('0x6')]),_0x5efdcf);}};exports['hangup']=function(_0xa3b8bd){try{if(!_[_0x9cf5('0x28')](dials[_0xa3b8bd['uniqueid']])){utils[_0x9cf5('0x15')](util[_0x9cf5('0x4')](_0x9cf5('0x29'),_0xa3b8bd[_0x9cf5('0x6')]),_0xa3b8bd);utils[_0x9cf5('0x3')](util[_0x9cf5('0x4')](_0x9cf5('0x2a'),_0xa3b8bd[_0x9cf5('0x6')],_0xa3b8bd[_0x9cf5('0x9')],_0xa3b8bd[_0x9cf5('0x2b')],_0xa3b8bd[_0x9cf5('0x2c')]));dials[_0xa3b8bd['uniqueid']]=_[_0x9cf5('0x24')](dials[_0xa3b8bd[_0x9cf5('0x6')]],{'endtime':utils[_0x9cf5('0x1c')](),'lastevent':'complete'});dials[_0xa3b8bd[_0x9cf5('0x6')]]['duration']=utils[_0x9cf5('0x2d')](dials[_0xa3b8bd[_0x9cf5('0x6')]][_0x9cf5('0x2e')],dials[_0xa3b8bd['uniqueid']][_0x9cf5('0x1f')]);dials[_0xa3b8bd['uniqueid']][_0x9cf5('0x2f')]=utils[_0x9cf5('0x2d')](dials[_0xa3b8bd[_0x9cf5('0x6')]]['answertime']||dials[_0xa3b8bd[_0x9cf5('0x6')]]['endtime'],dials[_0xa3b8bd['uniqueid']]['starttime']);dials[_0xa3b8bd[_0x9cf5('0x6')]][_0x9cf5('0x30')]=dials[_0xa3b8bd[_0x9cf5('0x6')]][_0x9cf5('0x25')]?utils[_0x9cf5('0x2d')](dials[_0xa3b8bd[_0x9cf5('0x6')]]['endtime'],dials[_0xa3b8bd[_0x9cf5('0x6')]]['answertime']):0x0;writeDB(dials[_0xa3b8bd[_0x9cf5('0x6')]]);}}catch(_0x517044){utils['error'](util[_0x9cf5('0x4')](_0x9cf5('0x29'),_0xa3b8bd[_0x9cf5('0x6')]),_0x517044);}};
\ No newline at end of file
+var _0x4c7f=['[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','cdr(routeid)','error','varset','[%s][dials][varset]','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','dialstatus','answertime','connect','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','duration','endtime','holdtime','diffTime','billableseconds','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','request','CreateVoiceDialReport','uniqueid','newexten','debug','format','[%s][dials][newexten]'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x4c7f,0x123));var _0xf4c7=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x4c7f[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xf4c7('0x0'));var util=require(_0xf4c7('0x1'));var utils=require(_0xf4c7('0x2'));var dials={};function writeDB(_0x1de601){utils[_0xf4c7('0x3')](util['format'](_0xf4c7('0x4'),_0x1de601['uniqueid'],_0x1de601[_0xf4c7('0x5')],_0x1de601[_0xf4c7('0x6')],_0x1de601[_0xf4c7('0x7')],_0x1de601['connectedlinenum'],_0x1de601['dialstatus']));utils[_0xf4c7('0x8')](_0xf4c7('0x9'),_0x1de601);delete dials[_0x1de601[_0xf4c7('0xa')]];}exports[_0xf4c7('0xb')]=function(_0x22473a){try{utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0xe'),_0x22473a[_0xf4c7('0xa')]),_0x22473a);utils['info'](util['format'](_0xf4c7('0xf'),_0x22473a[_0xf4c7('0xa')],_0x22473a[_0xf4c7('0x10')],_0x22473a['appdata']));if(_0x22473a[_0xf4c7('0x10')][_0xf4c7('0x11')]()==_0xf4c7('0x12')&&_[_0xf4c7('0x13')](_0x22473a[_0xf4c7('0x14')][_0xf4c7('0x11')](),_0xf4c7('0x15'))){var _0x54ace3=_0x22473a['appdata']['split']('=');dials[_0x22473a['uniqueid']]={'routeId':_0x54ace3[0x1]};}}catch(_0x5e63c6){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0xe'),_0x22473a[_0xf4c7('0xa')]),_0x5e63c6);}};exports[_0xf4c7('0x17')]=function(_0x4fe45b){try{utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0x18'),_0x4fe45b[_0xf4c7('0xa')]),_0x4fe45b);if(!_[_0xf4c7('0x19')](_0x4fe45b[_0xf4c7('0x1a')]['outboundrouteid'])){utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x1b'),_0x4fe45b[_0xf4c7('0xa')],_0x4fe45b[_0xf4c7('0x1c')]));dials[_0x4fe45b[_0xf4c7('0xa')]]={'routeId':_0x4fe45b[_0xf4c7('0x1c')]};}}catch(_0x2bc005){utils[_0xf4c7('0x16')](util['format'](_0xf4c7('0x18'),_0x4fe45b['uniqueid']),_0x2bc005);}};exports[_0xf4c7('0x1d')]=function(_0x39edd1){try{if(!_[_0xf4c7('0x19')](dials[_0x39edd1[_0xf4c7('0xa')]])){utils['debug'](util[_0xf4c7('0xd')](_0xf4c7('0x1e'),_0x39edd1['uniqueid']),_0x39edd1);dials[_0x39edd1['uniqueid']]=_[_0xf4c7('0x1f')](dials[_0x39edd1[_0xf4c7('0xa')]],_0x39edd1);dials[_0x39edd1[_0xf4c7('0xa')]][_0xf4c7('0x20')]=utils[_0xf4c7('0x21')]();dials[_0x39edd1['uniqueid']][_0xf4c7('0x22')]=_0xf4c7('0x23');utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x24'),_0x39edd1['uniqueid'],dials[_0x39edd1[_0xf4c7('0xa')]]['starttime']));}}catch(_0x3c1a9d){utils['error'](util['format']('[%s][dials][dialbegin]',_0x39edd1[_0xf4c7('0xa')]),_0x3c1a9d);}};exports[_0xf4c7('0x25')]=function(_0x557275){try{if(!_[_0xf4c7('0x19')](dials[_0x557275[_0xf4c7('0xa')]])){utils['debug'](util[_0xf4c7('0xd')](_0xf4c7('0x26'),_0x557275['uniqueid']),_0x557275);dials[_0x557275['uniqueid']][_0xf4c7('0x27')]=_0x557275['dialstatus'];if(_0x557275[_0xf4c7('0x27')]=='ANSWER'){dials[_0x557275['uniqueid']]=_[_0xf4c7('0x1f')](dials[_0x557275[_0xf4c7('0xa')]],_0x557275);dials[_0x557275[_0xf4c7('0xa')]][_0xf4c7('0x28')]=utils['now']();dials[_0x557275[_0xf4c7('0xa')]][_0xf4c7('0x22')]=_0xf4c7('0x29');utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x557275['uniqueid'],_0x557275[_0xf4c7('0x27')],dials[_0x557275['uniqueid']][_0xf4c7('0x28')]));}else{utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')]('[%s][dials][dialend]\x20dialstatus:%s',_0x557275[_0xf4c7('0xa')],_0x557275[_0xf4c7('0x27')]));}}}catch(_0x1c1a95){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0x26'),_0x557275['uniqueid']),_0x1c1a95);}};exports[_0xf4c7('0x2a')]=function(_0x35db53){try{if(!_[_0xf4c7('0x19')](dials[_0x35db53['uniqueid']])){utils[_0xf4c7('0xc')](util[_0xf4c7('0xd')](_0xf4c7('0x2b'),_0x35db53[_0xf4c7('0xa')]),_0x35db53);utils[_0xf4c7('0x3')](util[_0xf4c7('0xd')](_0xf4c7('0x2c'),_0x35db53['uniqueid'],_0x35db53['calleridnum'],_0x35db53['calleridname'],_0x35db53[_0xf4c7('0x2d')]));dials[_0x35db53[_0xf4c7('0xa')]]=_[_0xf4c7('0x1f')](dials[_0x35db53[_0xf4c7('0xa')]],{'endtime':utils[_0xf4c7('0x21')](),'lastevent':'complete'});dials[_0x35db53['uniqueid']][_0xf4c7('0x2e')]=utils['diffTime'](dials[_0x35db53['uniqueid']][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]]['starttime']);dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x30')]=utils[_0xf4c7('0x31')](dials[_0x35db53['uniqueid']][_0xf4c7('0x28')]||dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x20')]);dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x32')]=dials[_0x35db53['uniqueid']][_0xf4c7('0x28')]?utils['diffTime'](dials[_0x35db53[_0xf4c7('0xa')]][_0xf4c7('0x2f')],dials[_0x35db53[_0xf4c7('0xa')]]['answertime']):0x0;writeDB(dials[_0x35db53['uniqueid']]);}}catch(_0x21da7f){utils[_0xf4c7('0x16')](util[_0xf4c7('0xd')](_0xf4c7('0x2b'),_0x35db53[_0xf4c7('0xa')]),_0x21da7f);}};
\ No newline at end of file
index 29c0a9d..e6f6b76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b43=['../../config/environment','./utils','util','xdr','disabled','env','production','local','asterisk','port','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./queues.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','debug','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','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','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager'];(function(_0x30b10a,_0x506695){var _0x160fd3=function(_0x479d54){while(--_0x479d54){_0x30b10a['push'](_0x30b10a['shift']());}};_0x160fd3(++_0x506695);}(_0x7b43,0x91));var _0x37b4=function(_0x24e1ee,_0x4bbeb2){_0x24e1ee=_0x24e1ee-0x0;var _0x44d431=_0x7b43[_0x24e1ee];return _0x44d431;};var AsteriskManager=require(_0x37b4('0x0'));var config=require(_0x37b4('0x1'));var utils=require(_0x37b4('0x2'));var util=require(_0x37b4('0x3'));var isXDREnabled=config['xdr']&&config[_0x37b4('0x4')][_0x37b4('0x5')]?!config[_0x37b4('0x4')][_0x37b4('0x5')]:!![];var isProduction=config[_0x37b4('0x6')]===_0x37b4('0x7')||![];var isLocalAsterisk=config[_0x37b4('0x4')]&&config[_0x37b4('0x4')][_0x37b4('0x8')]===!![]||![];var ami=new AsteriskManager(config[_0x37b4('0x9')][_0x37b4('0xa')],config[_0x37b4('0x9')]['ip'],config[_0x37b4('0x9')]['username'],config['asterisk'][_0x37b4('0xb')],!![]);ami[_0x37b4('0xc')]();if(!isXDREnabled){utils[_0x37b4('0xd')](_0x37b4('0xe'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x37b4('0xd')](_0x37b4('0xf'));}else{var agents=require(_0x37b4('0x10'));var calls=require('./calls.controller');var queues=require(_0x37b4('0x11'));var recordings=require('./recordings.controller');var members=require(_0x37b4('0x12'));var dials=require(_0x37b4('0x13'));var transfers=require(_0x37b4('0x14'));var core=require(_0x37b4('0x15'));ami['on'](_0x37b4('0x16'),core[_0x37b4('0x16')]);ami['on']('shutdown',core[_0x37b4('0x17')]);ami['on']('fullybooted',core['fullybooted']);ami['on'](_0x37b4('0x18'),core['error']);ami['on'](_0x37b4('0x19'),core[_0x37b4('0x19')]);ami['on'](_0x37b4('0x1a'),core[_0x37b4('0x1a')]);ami['on'](_0x37b4('0x1b'),function(_0x550274){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x1d'),_0x550274[_0x37b4('0x1e')]),_0x550274);members[_0x37b4('0x1b')](_0x550274);}catch(_0x3e50dc){utils[_0x37b4('0x18')](util['format'](_0x37b4('0x1d'),_0x550274[_0x37b4('0x1e')]),_0x3e50dc);}});ami['on']('agentcalled',function(_0x1e9032){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x1f'),_0x1e9032[_0x37b4('0x20')]),_0x1e9032);agents[_0x37b4('0x21')](_0x1e9032);}catch(_0x5de8b9){utils['error'](util[_0x37b4('0x1c')](_0x37b4('0x1f'),_0x1e9032[_0x37b4('0x20')]),_0x5de8b9);}});ami['on'](_0x37b4('0x22'),function(_0x45fc8e){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x24'),_0x45fc8e[_0x37b4('0x20')]),_0x45fc8e);agents[_0x37b4('0x22')](_0x45fc8e);}catch(_0x1b2a17){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')]('[%s][index][agentringnoanswer]',_0x45fc8e[_0x37b4('0x20')]),_0x1b2a17);}});ami['on'](_0x37b4('0x25'),function(_0x53a4ba){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')]('[%s][index][agentconnect]',_0x53a4ba[_0x37b4('0x20')]),_0x53a4ba);agents[_0x37b4('0x25')](_0x53a4ba);queues['agentconnect'](_0x53a4ba);}catch(_0x22ce51){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x26'),_0x53a4ba[_0x37b4('0x20')]),_0x22ce51);}});ami['on'](_0x37b4('0x27'),function(_0x425620){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x28'),_0x425620['uniqueid']),_0x425620);agents['agentcomplete'](_0x425620);queues[_0x37b4('0x27')](_0x425620);members[_0x37b4('0x27')](_0x425620);}catch(_0x1d1bf7){utils['error'](util[_0x37b4('0x1c')]('[%s][index][agentcomplete]',_0x425620['uniqueid']),_0x1d1bf7);}});ami['on'](_0x37b4('0x29'),function(_0x42882d){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x2a'),_0x42882d[_0x37b4('0x20')]),_0x42882d);agents[_0x37b4('0x29')](_0x42882d);queues[_0x37b4('0x29')](_0x42882d);}catch(_0x497148){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x2a'),_0x42882d['uniqueid']),_0x497148);}});ami['on'](_0x37b4('0x2b'),function(_0x1b60b9){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x2c'),_0x1b60b9['uniqueid']),_0x1b60b9);queues[_0x37b4('0x2b')](_0x1b60b9);recordings[_0x37b4('0x2b')](_0x1b60b9);}catch(_0x3ef37c){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x2c'),_0x1b60b9['uniqueid']),_0x3ef37c);}});ami['on'](_0x37b4('0x2d'),function(_0x29c192){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x2e'),_0x29c192[_0x37b4('0x20')]),_0x29c192);queues['queuecallerleave'](_0x29c192);}catch(_0x56de3){utils[_0x37b4('0x18')](util['format'](_0x37b4('0x2e'),_0x29c192['uniqueid']),_0x56de3);}});ami['on']('musiconholdstart',function(_0x4541fc){try{utils[_0x37b4('0x23')](util['format'](_0x37b4('0x2f'),_0x4541fc[_0x37b4('0x20')]),_0x4541fc);queues['musiconholdstart'](_0x4541fc);calls[_0x37b4('0x30')](_0x4541fc);}catch(_0x5cd7ee){utils['error'](util[_0x37b4('0x1c')](_0x37b4('0x2f'),_0x4541fc[_0x37b4('0x20')]),_0x5cd7ee);}});ami['on'](_0x37b4('0x31'),function(_0x2fcf90){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x32'),_0x2fcf90['uniqueid']),_0x2fcf90);queues[_0x37b4('0x31')](_0x2fcf90);calls[_0x37b4('0x31')](_0x2fcf90);}catch(_0x315009){utils['error'](util[_0x37b4('0x1c')](_0x37b4('0x32'),_0x2fcf90[_0x37b4('0x20')]),_0x315009);}});ami['on'](_0x37b4('0x33'),function(_0x2acf7e){try{utils['debug'](util['format'](_0x37b4('0x34'),_0x2acf7e['uniqueid']),_0x2acf7e);calls[_0x37b4('0x33')](_0x2acf7e);recordings[_0x37b4('0x33')](_0x2acf7e);}catch(_0x3735d3){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')]('[%s][index][newstate]',_0x2acf7e['uniqueid']),_0x3735d3);}});ami['on'](_0x37b4('0x35'),function(_0x283e9a){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x36'),_0x283e9a[_0x37b4('0x20')]),_0x283e9a);calls['hangup'](_0x283e9a);recordings[_0x37b4('0x35')](_0x283e9a);dials['hangup'](_0x283e9a);agents[_0x37b4('0x35')](_0x283e9a);queues[_0x37b4('0x35')](_0x283e9a);}catch(_0x546b22){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x36'),_0x283e9a[_0x37b4('0x20')]),_0x546b22);}});ami['on'](_0x37b4('0x37'),function(_0x4e0d29){try{utils[_0x37b4('0x23')](util['format'](_0x37b4('0x38'),_0x4e0d29[_0x37b4('0x20')]),_0x4e0d29);members[_0x37b4('0x37')](_0x4e0d29);}catch(_0x4a0af7){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x38'),_0x4e0d29[_0x37b4('0x20')]),_0x4a0af7);}});ami['on'](_0x37b4('0x39'),function(_0x393452){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x3a'),_0x393452['uniqueid']),_0x393452);queues[_0x37b4('0x39')](_0x393452);agents['blindtransfer'](_0x393452);transfers[_0x37b4('0x39')](_0x393452);recordings[_0x37b4('0x39')](_0x393452);}catch(_0x1c99d0){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x3a'),_0x393452[_0x37b4('0x20')]),_0x1c99d0);}});ami['on'](_0x37b4('0x3b'),function(_0x10bebf){try{utils['debug'](util[_0x37b4('0x1c')](_0x37b4('0x3c'),_0x10bebf[_0x37b4('0x3d')]),_0x10bebf);queues['attendedtransfer'](_0x10bebf);transfers['attendedtransfer'](_0x10bebf);agents['attendedtransfer'](_0x10bebf);calls['attendedtransfer'](_0x10bebf);}catch(_0x55c6ea){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x3c'),_0x10bebf[_0x37b4('0x3d')]),_0x55c6ea);}});ami['on'](_0x37b4('0x3e'),function(_0x369433){try{utils['debug'](util[_0x37b4('0x1c')]('[%s][index][varset]',_0x369433[_0x37b4('0x20')]),_0x369433);queues[_0x37b4('0x3e')](_0x369433);recordings[_0x37b4('0x3e')](_0x369433);calls['varset'](_0x369433);dials[_0x37b4('0x3e')](_0x369433);}catch(_0x11a126){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x3f'),_0x369433[_0x37b4('0x20')]),_0x11a126);}});ami['on'](_0x37b4('0x40'),function(_0x2d7196){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x41'),_0x2d7196['uniqueid']),_0x2d7196);calls[_0x37b4('0x40')](_0x2d7196);recordings[_0x37b4('0x40')](_0x2d7196);dials['newexten'](_0x2d7196);}catch(_0x4fc038){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')]('[%s][index][newexten]',_0x2d7196[_0x37b4('0x20')]),_0x4fc038);}});ami['on'](_0x37b4('0x42'),function(_0x3d948d){try{utils['debug'](util['format'](_0x37b4('0x43'),_0x3d948d[_0x37b4('0x20')]),_0x3d948d);calls[_0x37b4('0x42')](_0x3d948d);recordings[_0x37b4('0x42')](_0x3d948d);}catch(_0x3bf969){utils[_0x37b4('0x18')](util['format'](_0x37b4('0x43'),_0x3d948d[_0x37b4('0x20')]),_0x3bf969);}});ami['on']('dialbegin',function(_0xee5bfe){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x44'),_0xee5bfe[_0x37b4('0x20')]),_0xee5bfe);dials[_0x37b4('0x45')](_0xee5bfe);}catch(_0x2b3152){utils[_0x37b4('0x18')](util[_0x37b4('0x1c')](_0x37b4('0x46'),_0xee5bfe['uniqueid']),_0x2b3152);}});ami['on'](_0x37b4('0x47'),function(_0x5750cf){try{utils[_0x37b4('0x23')](util[_0x37b4('0x1c')](_0x37b4('0x48'),_0x5750cf[_0x37b4('0x20')]),_0x5750cf);dials[_0x37b4('0x47')](_0x5750cf);}catch(_0x302805){utils['error'](util[_0x37b4('0x1c')](_0x37b4('0x48'),_0x5750cf[_0x37b4('0x20')]),_0x302805);}});}
\ No newline at end of file
+var _0x13ed=['util','xdr','env','production','local','asterisk','password','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','device','uniqueid','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','./utils'];(function(_0x535dac,_0x12d678){var _0x21fc4b=function(_0x4b3cad){while(--_0x4b3cad){_0x535dac['push'](_0x535dac['shift']());}};_0x21fc4b(++_0x12d678);}(_0x13ed,0x1c6));var _0xd13e=function(_0x47b15f,_0x103e93){_0x47b15f=_0x47b15f-0x0;var _0x55bf25=_0x13ed[_0x47b15f];return _0x55bf25;};var AsteriskManager=require('asterisk-manager');var config=require('../../config/environment');var utils=require(_0xd13e('0x0'));var util=require(_0xd13e('0x1'));var isXDREnabled=config['xdr']&&config[_0xd13e('0x2')]['disabled']?!config[_0xd13e('0x2')]['disabled']:!![];var isProduction=config[_0xd13e('0x3')]===_0xd13e('0x4')||![];var isLocalAsterisk=config[_0xd13e('0x2')]&&config[_0xd13e('0x2')][_0xd13e('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0xd13e('0x6')]['port'],config['asterisk']['ip'],config[_0xd13e('0x6')]['username'],config['asterisk'][_0xd13e('0x7')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0xd13e('0x8')](_0xd13e('0x9'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xd13e('0x8')](_0xd13e('0xa'));}else{var agents=require(_0xd13e('0xb'));var calls=require(_0xd13e('0xc'));var queues=require(_0xd13e('0xd'));var recordings=require(_0xd13e('0xe'));var members=require(_0xd13e('0xf'));var dials=require('./dials.controller');var transfers=require(_0xd13e('0x10'));var core=require('./core.controller');ami['on'](_0xd13e('0x11'),core[_0xd13e('0x11')]);ami['on'](_0xd13e('0x12'),core[_0xd13e('0x12')]);ami['on'](_0xd13e('0x13'),core[_0xd13e('0x13')]);ami['on']('error',core[_0xd13e('0x14')]);ami['on'](_0xd13e('0x15'),core[_0xd13e('0x15')]);ami['on'](_0xd13e('0x16'),core['managerevent']);ami['on'](_0xd13e('0x17'),function(_0xd422d0){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][devicestatechange]',_0xd422d0[_0xd13e('0x1a')]),_0xd422d0);members[_0xd13e('0x17')](_0xd422d0);}catch(_0x5f4aeb){utils[_0xd13e('0x14')](util[_0xd13e('0x19')]('[%s][index][devicestatechange]',_0xd422d0[_0xd13e('0x1a')]),_0x5f4aeb);}});ami['on']('agentcalled',function(_0x1818b5){try{utils['debug'](util[_0xd13e('0x19')]('[%s][index][agentcalled]',_0x1818b5[_0xd13e('0x1b')]),_0x1818b5);agents[_0xd13e('0x1c')](_0x1818b5);}catch(_0x5b22f7){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x1d'),_0x1818b5[_0xd13e('0x1b')]),_0x5b22f7);}});ami['on'](_0xd13e('0x1e'),function(_0x4b18f9){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x1f'),_0x4b18f9[_0xd13e('0x1b')]),_0x4b18f9);agents[_0xd13e('0x1e')](_0x4b18f9);}catch(_0x11652c){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x1f'),_0x4b18f9[_0xd13e('0x1b')]),_0x11652c);}});ami['on'](_0xd13e('0x20'),function(_0x33c308){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x21'),_0x33c308[_0xd13e('0x1b')]),_0x33c308);agents[_0xd13e('0x20')](_0x33c308);queues['agentconnect'](_0x33c308);}catch(_0x1ab8b6){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x21'),_0x33c308[_0xd13e('0x1b')]),_0x1ab8b6);}});ami['on'](_0xd13e('0x22'),function(_0x286e42){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][agentcomplete]',_0x286e42[_0xd13e('0x1b')]),_0x286e42);agents[_0xd13e('0x22')](_0x286e42);queues[_0xd13e('0x22')](_0x286e42);members[_0xd13e('0x22')](_0x286e42);}catch(_0xbb0e4f){utils[_0xd13e('0x14')](util[_0xd13e('0x19')]('[%s][index][agentcomplete]',_0x286e42[_0xd13e('0x1b')]),_0xbb0e4f);}});ami['on'](_0xd13e('0x23'),function(_0x2b121c){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x24'),_0x2b121c[_0xd13e('0x1b')]),_0x2b121c);agents[_0xd13e('0x23')](_0x2b121c);queues['queuecallerabandon'](_0x2b121c);}catch(_0x1dd6cf){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x24'),_0x2b121c['uniqueid']),_0x1dd6cf);}});ami['on']('queuecallerjoin',function(_0x2beb12){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')]('[%s][index][queuecallerjoin]',_0x2beb12[_0xd13e('0x1b')]),_0x2beb12);queues['queuecallerjoin'](_0x2beb12);recordings['queuecallerjoin'](_0x2beb12);}catch(_0x50a5ce){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x25'),_0x2beb12[_0xd13e('0x1b')]),_0x50a5ce);}});ami['on'](_0xd13e('0x26'),function(_0x3f294d){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x27'),_0x3f294d[_0xd13e('0x1b')]),_0x3f294d);queues[_0xd13e('0x26')](_0x3f294d);}catch(_0x389f14){utils['error'](util[_0xd13e('0x19')](_0xd13e('0x27'),_0x3f294d[_0xd13e('0x1b')]),_0x389f14);}});ami['on'](_0xd13e('0x28'),function(_0x310bb5){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x29'),_0x310bb5[_0xd13e('0x1b')]),_0x310bb5);queues[_0xd13e('0x28')](_0x310bb5);calls['musiconholdstart'](_0x310bb5);}catch(_0x125071){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x29'),_0x310bb5['uniqueid']),_0x125071);}});ami['on'](_0xd13e('0x2a'),function(_0x5d6470){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x2b'),_0x5d6470['uniqueid']),_0x5d6470);queues[_0xd13e('0x2a')](_0x5d6470);calls[_0xd13e('0x2a')](_0x5d6470);}catch(_0x4273c7){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2b'),_0x5d6470[_0xd13e('0x1b')]),_0x4273c7);}});ami['on']('newstate',function(_0x2e289e){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x2c'),_0x2e289e[_0xd13e('0x1b')]),_0x2e289e);calls['newstate'](_0x2e289e);recordings[_0xd13e('0x2d')](_0x2e289e);}catch(_0x1a4cb0){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2c'),_0x2e289e['uniqueid']),_0x1a4cb0);}});ami['on']('hangup',function(_0x25dc1f){try{utils['debug'](util[_0xd13e('0x19')](_0xd13e('0x2e'),_0x25dc1f[_0xd13e('0x1b')]),_0x25dc1f);calls[_0xd13e('0x2f')](_0x25dc1f);recordings['hangup'](_0x25dc1f);dials[_0xd13e('0x2f')](_0x25dc1f);agents[_0xd13e('0x2f')](_0x25dc1f);queues[_0xd13e('0x2f')](_0x25dc1f);}catch(_0x43e227){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x2e'),_0x25dc1f[_0xd13e('0x1b')]),_0x43e227);}});ami['on']('cdr',function(_0x10f104){try{utils[_0xd13e('0x18')](util['format']('[%s][index][cdr]',_0x10f104[_0xd13e('0x1b')]),_0x10f104);members['cdr'](_0x10f104);}catch(_0x16a795){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x30'),_0x10f104[_0xd13e('0x1b')]),_0x16a795);}});ami['on']('blindtransfer',function(_0x4a5be9){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x31'),_0x4a5be9['uniqueid']),_0x4a5be9);queues['blindtransfer'](_0x4a5be9);agents['blindtransfer'](_0x4a5be9);transfers[_0xd13e('0x32')](_0x4a5be9);recordings['blindtransfer'](_0x4a5be9);}catch(_0x4c1da2){utils[_0xd13e('0x14')](util['format']('[%s][index][blindtransfer]',_0x4a5be9[_0xd13e('0x1b')]),_0x4c1da2);}});ami['on'](_0xd13e('0x33'),function(_0x405d40){try{utils[_0xd13e('0x18')](util['format']('[%s][index][attendedtransfer]',_0x405d40[_0xd13e('0x34')]),_0x405d40);queues[_0xd13e('0x33')](_0x405d40);transfers['attendedtransfer'](_0x405d40);agents[_0xd13e('0x33')](_0x405d40);calls['attendedtransfer'](_0x405d40);}catch(_0x334ca5){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x35'),_0x405d40[_0xd13e('0x34')]),_0x334ca5);}});ami['on']('varset',function(_0x706523){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x36'),_0x706523['uniqueid']),_0x706523);queues[_0xd13e('0x37')](_0x706523);recordings[_0xd13e('0x37')](_0x706523);calls['varset'](_0x706523);dials[_0xd13e('0x37')](_0x706523);}catch(_0x3b70f0){utils['error'](util['format'](_0xd13e('0x36'),_0x706523[_0xd13e('0x1b')]),_0x3b70f0);}});ami['on'](_0xd13e('0x38'),function(_0x9c518a){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x39'),_0x9c518a[_0xd13e('0x1b')]),_0x9c518a);calls['newexten'](_0x9c518a);recordings[_0xd13e('0x38')](_0x9c518a);dials[_0xd13e('0x38')](_0x9c518a);}catch(_0x335fff){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x39'),_0x9c518a[_0xd13e('0x1b')]),_0x335fff);}});ami['on'](_0xd13e('0x3a'),function(_0x4761b5){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x3b'),_0x4761b5[_0xd13e('0x1b')]),_0x4761b5);calls[_0xd13e('0x3a')](_0x4761b5);recordings['newchannel'](_0x4761b5);}catch(_0x52b06e){utils[_0xd13e('0x14')](util['format'](_0xd13e('0x3b'),_0x4761b5[_0xd13e('0x1b')]),_0x52b06e);}});ami['on'](_0xd13e('0x3c'),function(_0x50a0a1){try{utils[_0xd13e('0x18')](util['format'](_0xd13e('0x3d'),_0x50a0a1['uniqueid']),_0x50a0a1);dials[_0xd13e('0x3c')](_0x50a0a1);}catch(_0x346e01){utils['error'](util[_0xd13e('0x19')](_0xd13e('0x3e'),_0x50a0a1[_0xd13e('0x1b')]),_0x346e01);}});ami['on'](_0xd13e('0x3f'),function(_0x5db479){try{utils[_0xd13e('0x18')](util[_0xd13e('0x19')](_0xd13e('0x40'),_0x5db479['uniqueid']),_0x5db479);dials['dialend'](_0x5db479);}catch(_0x2c84e0){utils[_0xd13e('0x14')](util[_0xd13e('0x19')](_0xd13e('0x40'),_0x5db479[_0xd13e('0x1b')]),_0x2c84e0);}});}
\ No newline at end of file
index 7b5a26c..335a8ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e4e=['debug','[%s][members][agentcomplete]','queue','cdr','[%s][members][cdr]','channel','data1','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','data2','membername','type','then','name','internal','CreateMemberReport','getUserByName','interface','split','request','error','[%s][members][writeDB]','uniqueid','startsWith','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','TALKING','now','NOT_INUSE','exitAt','duration','diffTime','agentcomplete','isNil'];(function(_0x208d7f,_0x58ea1b){var _0x34aa59=function(_0x41f0be){while(--_0x41f0be){_0x208d7f['push'](_0x208d7f['shift']());}};_0x34aa59(++_0x58ea1b);}(_0x2e4e,0x9f));var _0xe2e4=function(_0x22c4d4,_0x35c134){_0x22c4d4=_0x22c4d4-0x0;var _0x2be11b=_0x2e4e[_0x22c4d4];return _0x2be11b;};'use strict';var _=require(_0xe2e4('0x0'));var util=require(_0xe2e4('0x1'));var utils=require(_0xe2e4('0x2'));var members={};var exclude=[_0xe2e4('0x3'),_0xe2e4('0x4')];function writeDB(_0x53dbf2){utils[_0xe2e4('0x5')](util[_0xe2e4('0x6')](_0xe2e4('0x7'),_0x53dbf2['uniqueid'],_0x53dbf2['interface'],_0x53dbf2['channel'],_0x53dbf2[_0xe2e4('0x8')],_0x53dbf2[_0xe2e4('0x9')],_0x53dbf2[_0xe2e4('0xa')]));if(_0x53dbf2['interface']){utils['getUserByInterface'](_0x53dbf2['interface'])[_0xe2e4('0xb')](function(_0x2af746){if(_0x2af746){_0x53dbf2[_0xe2e4('0x9')]=_0x2af746[_0xe2e4('0xc')];_0x53dbf2['internal']=_0x2af746[_0xe2e4('0xd')];utils['request'](_0xe2e4('0xe'),_0x53dbf2);}else{utils[_0xe2e4('0xf')](_0x53dbf2[_0xe2e4('0x10')][_0xe2e4('0x11')]('/')[0x1])[_0xe2e4('0xb')](function(_0x11ddb2){if(_0x11ddb2){_0x53dbf2['membername']=_0x11ddb2['name'];_0x53dbf2[_0xe2e4('0xd')]=_0x11ddb2['internal'];utils[_0xe2e4('0x12')](_0xe2e4('0xe'),_0x53dbf2);}});}})['catch'](function(_0x5b142e){utils[_0xe2e4('0x13')](util[_0xe2e4('0x6')](_0xe2e4('0x14'),_0x53dbf2[_0xe2e4('0x15')]),_0x5b142e);});}delete members[_0x53dbf2['interface']];}function startsWith(_0x49c367,_0x1eea42){return _['some'](_0x49c367,function(_0xc39128){return _[_0xe2e4('0x16')](_0x1eea42,_0xc39128);});}exports[_0xe2e4('0x17')]=function(_0x2638df){try{utils['debug'](util['format'](_0xe2e4('0x18'),members[_0x2638df[_0xe2e4('0x19')]]?members[_0x2638df[_0xe2e4('0x19')]][_0xe2e4('0x15')]:_0x2638df['device']),_0x2638df);utils['info'](util[_0xe2e4('0x6')](_0xe2e4('0x1a'),members[_0x2638df[_0xe2e4('0x19')]]?members[_0x2638df[_0xe2e4('0x19')]]['uniqueid']:_0x2638df['device'],_0x2638df[_0xe2e4('0x1b')],_0x2638df[_0xe2e4('0x19')]));switch(_0x2638df[_0xe2e4('0x1b')]){case _0xe2e4('0x1c'):case'BUSY':if(!startsWith(exclude,_0x2638df[_0xe2e4('0x19')])){members[_0x2638df[_0xe2e4('0x19')]]={'channel':'voice','interface':_0x2638df['device'],'type':_0xe2e4('0x1d'),'enterAt':utils[_0xe2e4('0x1e')](),'role':'agent'};}break;case _0xe2e4('0x1f'):if(!_['isNil'](members[_0x2638df['device']])){members[_0x2638df['device']][_0xe2e4('0x20')]=utils['now']();members[_0x2638df[_0xe2e4('0x19')]][_0xe2e4('0x21')]=utils[_0xe2e4('0x22')](members[_0x2638df[_0xe2e4('0x19')]][_0xe2e4('0x20')],members[_0x2638df[_0xe2e4('0x19')]]['enterAt']);if(members[_0x2638df['device']][_0xe2e4('0x15')]){writeDB(members[_0x2638df[_0xe2e4('0x19')]]);}}break;default:break;}}catch(_0x1650ea){utils[_0xe2e4('0x13')](util[_0xe2e4('0x6')]('[%s][members][devicestatechange]',members[_0x2638df['device']]?members[_0x2638df['device']][_0xe2e4('0x15')]:_0x2638df['device']),_0x1650ea);}};exports[_0xe2e4('0x23')]=function(_0x1c5e0e){try{if(!_[_0xe2e4('0x24')](members[_0x1c5e0e[_0xe2e4('0x10')]])){utils[_0xe2e4('0x25')](util['format'](_0xe2e4('0x26'),_0x1c5e0e[_0xe2e4('0x15')]),_0x1c5e0e);utils['info'](util[_0xe2e4('0x6')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x1c5e0e[_0xe2e4('0x15')],_0x1c5e0e['interface'],_0x1c5e0e['queue']));members[_0x1c5e0e[_0xe2e4('0x10')]]=_['assign'](members[_0x1c5e0e[_0xe2e4('0x10')]],{'data4':_0x1c5e0e[_0xe2e4('0x27')],'uniqueid':_0x1c5e0e['uniqueid']});}}catch(_0x1d06d2){utils[_0xe2e4('0x13')](util[_0xe2e4('0x6')]('[%s][members][agentcomplete]',_0x1c5e0e[_0xe2e4('0x15')]),_0x1d06d2);}};exports[_0xe2e4('0x28')]=function(_0x37d6ef){try{utils[_0xe2e4('0x25')](util['format'](_0xe2e4('0x29'),_0x37d6ef[_0xe2e4('0x15')]),_0x37d6ef);if(_0x37d6ef['channel']){var _0x2d137b=_0x37d6ef[_0xe2e4('0x2a')][_0xe2e4('0x11')]('-')[0x0];if(!_[_0xe2e4('0x24')](members[_0x2d137b])){members[_0x2d137b]=_['assign'](members[_0x2d137b],{'data1':members[_0x2d137b][_0xe2e4('0x2b')]||_0x37d6ef[_0xe2e4('0xa')],'data2':members[_0x2d137b][_0xe2e4('0x8')]||_0x37d6ef['source'],'data3':members[_0x2d137b][_0xe2e4('0x2c')]||_0x37d6ef[_0xe2e4('0x2d')],'uniqueid':members[_0x2d137b][_0xe2e4('0x15')]||_0x37d6ef[_0xe2e4('0x15')]});utils['info'](util[_0xe2e4('0x6')](_0xe2e4('0x2e'),_0x37d6ef[_0xe2e4('0x15')],members[_0x2d137b][_0xe2e4('0x2b')],members[_0x2d137b][_0xe2e4('0x8')],members[_0x2d137b][_0xe2e4('0x2c')]));if(members[_0x2d137b]['exitAt']){writeDB(members[_0x2d137b]);}}}if(_0x37d6ef['destinationchannel']){var _0x124e61=_0x37d6ef[_0xe2e4('0x2f')][_0xe2e4('0x11')]('-')[0x0];if(!_['isNil'](members[_0x124e61])){members[_0x124e61]=_[_0xe2e4('0x30')](members[_0x124e61],{'data1':members[_0x124e61][_0xe2e4('0x2b')]||_0x37d6ef[_0xe2e4('0xa')],'data2':members[_0x124e61][_0xe2e4('0x8')]||_0x37d6ef['source'],'data3':members[_0x124e61][_0xe2e4('0x2c')]||_0x37d6ef['destination'],'uniqueid':members[_0x124e61][_0xe2e4('0x15')]||_0x37d6ef[_0xe2e4('0x15')]});utils[_0xe2e4('0x5')](util[_0xe2e4('0x6')](_0xe2e4('0x2e'),_0x37d6ef[_0xe2e4('0x15')],members[_0x124e61][_0xe2e4('0x2b')],members[_0x124e61][_0xe2e4('0x8')],members[_0x124e61][_0xe2e4('0x2c')]));if(members[_0x124e61][_0xe2e4('0x20')]){writeDB(members[_0x124e61]);}}}}catch(_0x102e70){utils[_0xe2e4('0x13')](util[_0xe2e4('0x6')](_0xe2e4('0x29'),_0x37d6ef[_0xe2e4('0x15')]),_0x102e70);}};
\ No newline at end of file
+var _0x3d9e=['uniqueid','channel','data2','membername','getUserByInterface','interface','then','internal','request','CreateMemberReport','getUserByName','split','name','catch','error','[%s][members][writeDB]','some','startsWith','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','[%s][members][agentcomplete]','assign','data1','type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','[%s][members][cdr]','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s'];(function(_0x2cbc5d,_0x1d2845){var _0x467c8b=function(_0x4e5f53){while(--_0x4e5f53){_0x2cbc5d['push'](_0x2cbc5d['shift']());}};_0x467c8b(++_0x1d2845);}(_0x3d9e,0x181));var _0xe3d9=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x3d9e[_0x3a6efd];return _0x487b9a;};'use strict';var _=require('lodash');var util=require(_0xe3d9('0x0'));var utils=require(_0xe3d9('0x1'));var members={};var exclude=[_0xe3d9('0x2'),_0xe3d9('0x3')];function writeDB(_0x3d8a09){utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')](_0xe3d9('0x6'),_0x3d8a09[_0xe3d9('0x7')],_0x3d8a09['interface'],_0x3d8a09[_0xe3d9('0x8')],_0x3d8a09[_0xe3d9('0x9')],_0x3d8a09[_0xe3d9('0xa')],_0x3d8a09['type']));if(_0x3d8a09['interface']){utils[_0xe3d9('0xb')](_0x3d8a09[_0xe3d9('0xc')])[_0xe3d9('0xd')](function(_0x43f8b3){if(_0x43f8b3){_0x3d8a09[_0xe3d9('0xa')]=_0x43f8b3['name'];_0x3d8a09[_0xe3d9('0xe')]=_0x43f8b3['internal'];utils[_0xe3d9('0xf')](_0xe3d9('0x10'),_0x3d8a09);}else{utils[_0xe3d9('0x11')](_0x3d8a09[_0xe3d9('0xc')][_0xe3d9('0x12')]('/')[0x1])['then'](function(_0x29746a){if(_0x29746a){_0x3d8a09[_0xe3d9('0xa')]=_0x29746a[_0xe3d9('0x13')];_0x3d8a09[_0xe3d9('0xe')]=_0x29746a[_0xe3d9('0xe')];utils['request']('CreateMemberReport',_0x3d8a09);}});}})[_0xe3d9('0x14')](function(_0x4c96cc){utils[_0xe3d9('0x15')](util[_0xe3d9('0x5')](_0xe3d9('0x16'),_0x3d8a09[_0xe3d9('0x7')]),_0x4c96cc);});}delete members[_0x3d8a09[_0xe3d9('0xc')]];}function startsWith(_0xde08c3,_0x3d2860){return _[_0xe3d9('0x17')](_0xde08c3,function(_0x344efc){return _[_0xe3d9('0x18')](_0x3d2860,_0x344efc);});}exports['devicestatechange']=function(_0x5093db){try{utils[_0xe3d9('0x19')](util['format'](_0xe3d9('0x1a'),members[_0x5093db[_0xe3d9('0x1b')]]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db[_0xe3d9('0x1b')]),_0x5093db);utils['info'](util[_0xe3d9('0x5')](_0xe3d9('0x1c'),members[_0x5093db['device']]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db['device'],_0x5093db[_0xe3d9('0x1d')],_0x5093db[_0xe3d9('0x1b')]));switch(_0x5093db[_0xe3d9('0x1d')]){case _0xe3d9('0x1e'):case _0xe3d9('0x1f'):if(!startsWith(exclude,_0x5093db[_0xe3d9('0x1b')])){members[_0x5093db[_0xe3d9('0x1b')]]={'channel':'voice','interface':_0x5093db[_0xe3d9('0x1b')],'type':'TALKING','enterAt':utils[_0xe3d9('0x20')](),'role':_0xe3d9('0x21')};}break;case _0xe3d9('0x22'):if(!_[_0xe3d9('0x23')](members[_0x5093db[_0xe3d9('0x1b')]])){members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x24')]=utils[_0xe3d9('0x20')]();members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x25')]=utils[_0xe3d9('0x26')](members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x24')],members[_0x5093db[_0xe3d9('0x1b')]]['enterAt']);if(members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]){writeDB(members[_0x5093db[_0xe3d9('0x1b')]]);}}break;default:break;}}catch(_0x3b5648){utils['error'](util[_0xe3d9('0x5')](_0xe3d9('0x1a'),members[_0x5093db['device']]?members[_0x5093db[_0xe3d9('0x1b')]][_0xe3d9('0x7')]:_0x5093db['device']),_0x3b5648);}};exports['agentcomplete']=function(_0x4bb21c){try{if(!_[_0xe3d9('0x23')](members[_0x4bb21c[_0xe3d9('0xc')]])){utils['debug'](util[_0xe3d9('0x5')](_0xe3d9('0x27'),_0x4bb21c['uniqueid']),_0x4bb21c);utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x4bb21c[_0xe3d9('0x7')],_0x4bb21c[_0xe3d9('0xc')],_0x4bb21c['queue']));members[_0x4bb21c['interface']]=_[_0xe3d9('0x28')](members[_0x4bb21c[_0xe3d9('0xc')]],{'data4':_0x4bb21c['queue'],'uniqueid':_0x4bb21c[_0xe3d9('0x7')]});}}catch(_0xdabf4){utils[_0xe3d9('0x15')](util[_0xe3d9('0x5')](_0xe3d9('0x27'),_0x4bb21c[_0xe3d9('0x7')]),_0xdabf4);}};exports['cdr']=function(_0x22cb98){try{utils['debug'](util['format']('[%s][members][cdr]',_0x22cb98[_0xe3d9('0x7')]),_0x22cb98);if(_0x22cb98[_0xe3d9('0x8')]){var _0x104616=_0x22cb98[_0xe3d9('0x8')][_0xe3d9('0x12')]('-')[0x0];if(!_[_0xe3d9('0x23')](members[_0x104616])){members[_0x104616]=_[_0xe3d9('0x28')](members[_0x104616],{'data1':members[_0x104616][_0xe3d9('0x29')]||_0x22cb98[_0xe3d9('0x2a')],'data2':members[_0x104616]['data2']||_0x22cb98[_0xe3d9('0x2b')],'data3':members[_0x104616][_0xe3d9('0x2c')]||_0x22cb98[_0xe3d9('0x2d')],'uniqueid':members[_0x104616]['uniqueid']||_0x22cb98[_0xe3d9('0x7')]});utils[_0xe3d9('0x4')](util[_0xe3d9('0x5')](_0xe3d9('0x2e'),_0x22cb98[_0xe3d9('0x7')],members[_0x104616][_0xe3d9('0x29')],members[_0x104616]['data2'],members[_0x104616][_0xe3d9('0x2c')]));if(members[_0x104616]['exitAt']){writeDB(members[_0x104616]);}}}if(_0x22cb98[_0xe3d9('0x2f')]){var _0x354cef=_0x22cb98[_0xe3d9('0x2f')]['split']('-')[0x0];if(!_[_0xe3d9('0x23')](members[_0x354cef])){members[_0x354cef]=_[_0xe3d9('0x28')](members[_0x354cef],{'data1':members[_0x354cef]['data1']||_0x22cb98[_0xe3d9('0x2a')],'data2':members[_0x354cef][_0xe3d9('0x9')]||_0x22cb98[_0xe3d9('0x2b')],'data3':members[_0x354cef][_0xe3d9('0x2c')]||_0x22cb98[_0xe3d9('0x2d')],'uniqueid':members[_0x354cef][_0xe3d9('0x7')]||_0x22cb98[_0xe3d9('0x7')]});utils['info'](util[_0xe3d9('0x5')](_0xe3d9('0x2e'),_0x22cb98[_0xe3d9('0x7')],members[_0x354cef][_0xe3d9('0x29')],members[_0x354cef]['data2'],members[_0x354cef][_0xe3d9('0x2c')]));if(members[_0x354cef][_0xe3d9('0x24')]){writeDB(members[_0x354cef]);}}}}catch(_0x1b408f){utils[_0xe3d9('0x15')](util['format'](_0xe3d9('0x30'),_0x22cb98[_0xe3d9('0x7')]),_0x1b408f);}};
\ No newline at end of file
index 950b958..5dcbbe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe384=['[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','debug','format','position','error','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','now','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','variable','queuestatus','value','queuecallerabandonAt','queuecallerexitAt','toUpperCase','isNil','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','[%s][queues][agentconnect]','agentcomplete','[%s][queues][agentcomplete]','reason','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transfer','ATTENDED','transfereelinkedid','queuecallerenterreason','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info'];(function(_0xda419a,_0x509676){var _0x5aef50=function(_0x2ac99f){while(--_0x2ac99f){_0xda419a['push'](_0xda419a['shift']());}};_0x5aef50(++_0x509676);}(_0xe384,0x198));var _0x4e38=function(_0x486b75,_0x17e2bb){_0x486b75=_0x486b75-0x0;var _0x18f96c=_0xe384[_0x486b75];return _0x18f96c;};'use strict';var _=require(_0x4e38('0x0'));var util=require(_0x4e38('0x1'));var utils=require(_0x4e38('0x2'));var queues={};function writeDB(_0x2e7faf){utils[_0x4e38('0x3')](util['format'](_0x4e38('0x4'),_0x2e7faf[_0x4e38('0x5')],_0x2e7faf['channel'],_0x2e7faf[_0x4e38('0x6')],_0x2e7faf[_0x4e38('0x7')],_0x2e7faf[_0x4e38('0x8')],_0x2e7faf[_0x4e38('0x9')],_0x2e7faf[_0x4e38('0xa')]));if(_0x2e7faf[_0x4e38('0x6')]){utils[_0x4e38('0xb')](_0x2e7faf[_0x4e38('0x6')])[_0x4e38('0xc')](function(_0x33f201){if(_0x33f201){_0x2e7faf['type']=_0x33f201[_0x4e38('0xd')];}utils[_0x4e38('0xe')](_0x4e38('0xf'),_0x2e7faf);});}else{utils[_0x4e38('0xe')](_0x4e38('0xf'),_0x2e7faf);}if(_0x2e7faf['transfereduniqueid']){delete queues[_0x2e7faf[_0x4e38('0x10')]];}else{delete queues[_0x2e7faf[_0x4e38('0x5')]];}}exports['queuecallerjoin']=function(_0x32e5e6){try{utils[_0x4e38('0x11')](util[_0x4e38('0x12')]('[%s][queues][queuecallerjoin]',_0x32e5e6[_0x4e38('0x5')]),_0x32e5e6);utils[_0x4e38('0x3')](util[_0x4e38('0x12')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x32e5e6[_0x4e38('0x5')],_0x32e5e6['queue'],_0x32e5e6[_0x4e38('0x13')]));queues[_0x32e5e6[_0x4e38('0x5')]]=_['assign'](_0x32e5e6,{'originalposition':_0x32e5e6[_0x4e38('0x13')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x5a0023){utils[_0x4e38('0x14')](util[_0x4e38('0x12')](_0x4e38('0x15'),_0x32e5e6['uniqueid']),_0x5a0023);}};exports[_0x4e38('0x16')]=function(_0x1fd821){try{if(!_['isNil'](queues[_0x1fd821[_0x4e38('0x5')]])){utils['debug'](util['format'](_0x4e38('0x17'),_0x1fd821[_0x4e38('0x5')]),_0x1fd821);if(queues[_0x1fd821[_0x4e38('0x5')]][_0x4e38('0x18')]){if(!queues[_0x1fd821[_0x4e38('0x5')]][_0x4e38('0x19')]&&!queues[_0x1fd821['uniqueid']][_0x4e38('0x1a')]){queues[_0x1fd821['uniqueid']][_0x4e38('0x1b')]=!![];queues[_0x1fd821['uniqueid']][_0x4e38('0x1c')]=utils[_0x4e38('0x1d')]();queues[_0x1fd821['uniqueid']][_0x4e38('0xa')]='COMPLETEDBYAGENT';}utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x1e'),_0x1fd821[_0x4e38('0x5')],queues[_0x1fd821['uniqueid']][_0x4e38('0x1f')],queues[_0x1fd821[_0x4e38('0x5')]][_0x4e38('0xa')]));writeDB(queues[_0x1fd821[_0x4e38('0x5')]]);}else if(queues[_0x1fd821[_0x4e38('0x5')]][_0x4e38('0x10')]){utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x20'),_0x1fd821[_0x4e38('0x5')],queues[_0x1fd821['uniqueid']]['name'],queues[_0x1fd821['uniqueid']][_0x4e38('0x10')]));queues[queues[_0x1fd821['uniqueid']][_0x4e38('0x10')]]=queues[_0x1fd821['uniqueid']];queues[queues[_0x1fd821[_0x4e38('0x5')]][_0x4e38('0x10')]]['queuecallerenterreason']=0x2;delete queues[_0x1fd821[_0x4e38('0x5')]];}}}catch(_0x25ab1e){utils[_0x4e38('0x14')](util[_0x4e38('0x12')](_0x4e38('0x17'),_0x1fd821['uniqueid']),_0x25ab1e);}};exports[_0x4e38('0x21')]=function(_0x1d3601){try{utils['debug'](util[_0x4e38('0x12')]('[%s][queues][varset]',_0x1d3601[_0x4e38('0x5')]),_0x1d3601);if(!_['isNil'](_0x1d3601[_0x4e38('0x22')][_0x4e38('0x23')])&&_0x1d3601[_0x4e38('0x24')]['toUpperCase']()!=='CONTINUE'){if(!_['isNil'](queues[_0x1d3601['uniqueid']])){queues[_0x1d3601[_0x4e38('0x5')]]['queuecallerabandon']=![];queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x25')]=null;queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x1a')]=!![];queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x26')]=utils[_0x4e38('0x1d')]();queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0xa')]=_0x1d3601[_0x4e38('0x24')][_0x4e38('0x27')]();utils[_0x4e38('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x1d3601['uniqueid'],queues[_0x1d3601[_0x4e38('0x5')]]['name'],_0x1d3601[_0x4e38('0x24')],queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0xa')]));writeDB(queues[_0x1d3601[_0x4e38('0x5')]]);}}else if(!_[_0x4e38('0x28')](_0x1d3601[_0x4e38('0x22')][_0x4e38('0x29')])){if(!_[_0x4e38('0x28')](queues[_0x1d3601[_0x4e38('0x5')]])&&!queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x19')]){queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x19')]=![];queues[_0x1d3601['uniqueid']][_0x4e38('0x25')]=null;queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x1a')]=!![];queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x26')]=utils[_0x4e38('0x1d')]();queues[_0x1d3601['uniqueid']][_0x4e38('0xa')]='EXITWITHKEY';utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x2a'),_0x1d3601[_0x4e38('0x5')],queues[_0x1d3601[_0x4e38('0x5')]][_0x4e38('0x1f')],_0x1d3601[_0x4e38('0x24')],queues[_0x1d3601[_0x4e38('0x5')]]['queuecallerexitreason']));}}}catch(_0xcd1d52){utils[_0x4e38('0x14')](util[_0x4e38('0x12')](_0x4e38('0x2b'),_0x1d3601[_0x4e38('0x5')]),_0xcd1d52);}};exports[_0x4e38('0x19')]=function(_0x1e1432){try{if(!_['isNil'](queues[_0x1e1432[_0x4e38('0x5')]])){utils[_0x4e38('0x11')](util[_0x4e38('0x12')](_0x4e38('0x2c'),_0x1e1432[_0x4e38('0x5')]),_0x1e1432);queues[_0x1e1432[_0x4e38('0x5')]][_0x4e38('0x1a')]=![];queues[_0x1e1432['uniqueid']]['queuecallerexitAt']=null;queues[_0x1e1432[_0x4e38('0x5')]][_0x4e38('0x19')]=!![];queues[_0x1e1432[_0x4e38('0x5')]][_0x4e38('0x25')]=utils[_0x4e38('0x1d')]();queues[_0x1e1432[_0x4e38('0x5')]]['queuecallerexitreason']=_0x4e38('0x2d');utils['info'](util[_0x4e38('0x12')](_0x4e38('0x2e'),_0x1e1432[_0x4e38('0x5')],queues[_0x1e1432[_0x4e38('0x5')]]['name'],queues[_0x1e1432[_0x4e38('0x5')]][_0x4e38('0xa')]));}}catch(_0x2f2d2f){utils['error'](util[_0x4e38('0x12')](_0x4e38('0x2c'),_0x1e1432['uniqueid']),_0x2f2d2f);}};exports[_0x4e38('0x2f')]=function(_0x47e9a1){try{if(!_[_0x4e38('0x28')](queues[_0x47e9a1[_0x4e38('0x5')]])){utils[_0x4e38('0x11')](util[_0x4e38('0x12')]('[%s][queues][queuecallerleave]',_0x47e9a1[_0x4e38('0x5')]),_0x47e9a1);utils['info'](util[_0x4e38('0x12')](_0x4e38('0x30'),_0x47e9a1['uniqueid'],queues[_0x47e9a1[_0x4e38('0x5')]]['name'],_0x47e9a1[_0x4e38('0x31')],_0x47e9a1[_0x4e38('0x32')]));queues[_0x47e9a1[_0x4e38('0x5')]]['queuecallerleave']=!![];queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x18')]=utils['now']();queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x33')]=utils['diffTime'](queues[_0x47e9a1[_0x4e38('0x5')]]['queuecallerleaveAt'],queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x34')]);queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x13')]=_0x47e9a1[_0x4e38('0x13')];queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x35')]=_0x47e9a1[_0x4e38('0x35')];queues[_0x47e9a1['uniqueid']]['connectedlinenum']=_0x47e9a1[_0x4e38('0x31')];queues[_0x47e9a1[_0x4e38('0x5')]][_0x4e38('0x32')]=_0x47e9a1[_0x4e38('0x32')];}}catch(_0x284062){utils['error'](util['format'](_0x4e38('0x36'),_0x47e9a1[_0x4e38('0x5')]),_0x284062);}};exports[_0x4e38('0x37')]=function(_0x36ee0c){try{if(!_[_0x4e38('0x28')](queues[_0x36ee0c[_0x4e38('0x5')]])){utils[_0x4e38('0x11')](util[_0x4e38('0x12')]('[%s][queues][agentconnect]',_0x36ee0c['uniqueid']),_0x36ee0c);utils[_0x4e38('0x3')](util['format'](_0x4e38('0x38'),_0x36ee0c[_0x4e38('0x5')],queues[_0x36ee0c[_0x4e38('0x5')]]['name'],_0x36ee0c[_0x4e38('0x39')],_0x36ee0c['destaccountcode']));queues[_0x36ee0c['uniqueid']]['queuecallerabandon']=![];queues[_0x36ee0c[_0x4e38('0x5')]][_0x4e38('0x19')]=![];queues[_0x36ee0c[_0x4e38('0x5')]]['queuecallerabandonAt']=null;queues[_0x36ee0c[_0x4e38('0x5')]][_0x4e38('0x1a')]=![];queues[_0x36ee0c[_0x4e38('0x5')]][_0x4e38('0xa')]=null;queues[_0x36ee0c['uniqueid']][_0x4e38('0x26')]=null;queues[_0x36ee0c['uniqueid']][_0x4e38('0x3a')]=!![];queues[_0x36ee0c['uniqueid']][_0x4e38('0x9')]=_0x36ee0c[_0x4e38('0x3b')];queues[_0x36ee0c[_0x4e38('0x5')]][_0x4e38('0x7')]=_0x36ee0c[_0x4e38('0x39')];}}catch(_0x16aa93){utils[_0x4e38('0x14')](util[_0x4e38('0x12')](_0x4e38('0x3c'),_0x36ee0c[_0x4e38('0x5')]),_0x16aa93);}};exports[_0x4e38('0x3d')]=function(_0x2e9c65){try{if(!_[_0x4e38('0x28')](queues[_0x2e9c65[_0x4e38('0x5')]])){if(queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0x18')]){utils[_0x4e38('0x11')](util[_0x4e38('0x12')](_0x4e38('0x3e'),_0x2e9c65['uniqueid']),_0x2e9c65);queues[_0x2e9c65['uniqueid']][_0x4e38('0x19')]=![];queues[_0x2e9c65[_0x4e38('0x5')]]['queuecallerabandon']=![];queues[_0x2e9c65[_0x4e38('0x5')]]['queuecallerabandonAt']=null;queues[_0x2e9c65['uniqueid']][_0x4e38('0x1a')]=![];queues[_0x2e9c65[_0x4e38('0x5')]]['queuecallerexitAt']=null;queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0x3a')]=!![];queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0x7')]=_0x2e9c65[_0x4e38('0x39')];queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0x1b')]=!![];queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0x1c')]=utils[_0x4e38('0x1d')]();if(_0x2e9c65[_0x4e38('0x3f')]=='transfer'){if(!queues[_0x2e9c65['uniqueid']]['transfer']){queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0xa')]='TRANSFER';}}else{queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0xa')]=_0x4e38('0x40')+_0x2e9c65[_0x4e38('0x3f')][_0x4e38('0x27')]();}utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x41'),_0x2e9c65[_0x4e38('0x5')],queues[_0x2e9c65['uniqueid']][_0x4e38('0x1f')],_0x2e9c65['membername'],queues[_0x2e9c65[_0x4e38('0x5')]][_0x4e38('0xa')]));writeDB(queues[_0x2e9c65['uniqueid']]);}}}catch(_0x334bf3){utils[_0x4e38('0x14')](util[_0x4e38('0x12')]('[%s][queues][agentcomplete]',_0x2e9c65['uniqueid']),_0x334bf3);}};exports[_0x4e38('0x42')]=function(_0x4a5964){try{if(!_['isNil'](queues[_0x4a5964[_0x4e38('0x43')]])){utils[_0x4e38('0x11')](util[_0x4e38('0x12')](_0x4e38('0x44'),_0x4a5964['uniqueid']),_0x4a5964);queues[_0x4a5964[_0x4e38('0x43')]]['transfer']=!![];queues[_0x4a5964[_0x4e38('0x43')]][_0x4e38('0x45')]=_0x4e38('0x46');queues[_0x4a5964[_0x4e38('0x43')]][_0x4e38('0x47')]=_0x4a5964['extension'];queues[_0x4a5964[_0x4e38('0x43')]][_0x4e38('0x48')]=_0x4a5964['transfereeuniqueid'];queues[_0x4a5964[_0x4e38('0x43')]][_0x4e38('0xa')]='BLINDTRANSFER';utils['info'](util['format'](_0x4e38('0x49'),_0x4a5964['uniqueid'],queues[_0x4a5964['transfereeuniqueid']][_0x4e38('0x1f')],_0x4a5964[_0x4e38('0x43')],_0x4a5964['extension']));}}catch(_0x31d5dc){utils[_0x4e38('0x14')](util['format']('[%s][queues][blindtransfer]',_0x4a5964[_0x4e38('0x5')]),_0x31d5dc);}};exports[_0x4e38('0x4a')]=function(_0x23e487){try{utils[_0x4e38('0x11')](util[_0x4e38('0x12')]('[%s][queues][attendedtransfer]',_0x23e487[_0x4e38('0x4b')]),_0x23e487);if(_0x23e487[_0x4e38('0x4b')]==_0x23e487[_0x4e38('0x4c')]){if(!_[_0x4e38('0x28')](queues[_0x23e487[_0x4e38('0x4d')]])){utils[_0x4e38('0x3')](util[_0x4e38('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x23e487[_0x4e38('0x4b')],queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x1f')],_0x23e487[_0x4e38('0x4e')]));queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x4f')]=!![];queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x45')]=_0x4e38('0x50');queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x47')]=_0x23e487['origtransfererexten'];queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x48')]=_0x23e487[_0x4e38('0x4b')];queues[_0x23e487['secondtransfererlinkedid']][_0x4e38('0xa')]='ATTENDEDTRANSFER';}if(!_[_0x4e38('0x28')](queues[_0x23e487['origtransfererlinkedid']])){if(_0x23e487[_0x4e38('0x51')]&&queues[_0x23e487['transfereelinkedid']]){queues[_0x23e487[_0x4e38('0x51')]][_0x4e38('0x52')]=0x1;queues[_0x23e487[_0x4e38('0x43')]]=_['clone'](queues[_0x23e487[_0x4e38('0x51')]]);queues[_0x23e487[_0x4e38('0x43')]][_0x4e38('0x10')]=_0x23e487[_0x4e38('0x53')];queues[_0x23e487['transfereeuniqueid']]['queuecallerenterreason']=0x2;queues[_0x23e487[_0x4e38('0x43')]][_0x4e38('0x8')]=queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x8')];queues[_0x23e487[_0x4e38('0x43')]][_0x4e38('0x54')]=queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x54')];queues[_0x23e487[_0x4e38('0x43')]][_0x4e38('0x34')]=utils[_0x4e38('0x1d')]();queues[_0x23e487['transfereeuniqueid']]['queuecallerleaveAt']=utils[_0x4e38('0x1d')]();queues[_0x23e487[_0x4e38('0x43')]]['holdtime']=0x0;queues[_0x23e487['transfereeuniqueid']][_0x4e38('0x55')]=0x0;utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x56'),_0x23e487[_0x4e38('0x4b')],queues[_0x23e487['transfereeuniqueid']][_0x4e38('0x1f')],queues[_0x23e487['transfereeuniqueid']][_0x4e38('0x8')],queues[_0x23e487['transfereeuniqueid']][_0x4e38('0x54')]));}else{utils['info'](util[_0x4e38('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x23e487[_0x4e38('0x4b')],queues[_0x23e487['origtransfererlinkedid']][_0x4e38('0x1f')],_0x23e487[_0x4e38('0x4d')]));queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x10')]=_0x23e487['secondtransfererlinkedid'];}}}else if(_0x23e487[_0x4e38('0x57')]==_0x23e487[_0x4e38('0x4d')]){if(!_['isNil'](queues[_0x23e487[_0x4e38('0x4c')]])){utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x58'),_0x23e487['origtransfereruniqueid'],queues[_0x23e487[_0x4e38('0x4c')]]['name'],_0x23e487[_0x4e38('0x57')],_0x23e487[_0x4e38('0x59')]));queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x4f')]=!![];queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x45')]='ATTENDED';queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x47')]=_0x23e487['secondtransfererexten'];queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x48')]=_0x23e487[_0x4e38('0x57')];queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0xa')]=_0x4e38('0x5a');}if(!_['isNil'](queues[_0x23e487[_0x4e38('0x4d')]])){if(_0x23e487['transfertargetlinkedid']&&queues[_0x23e487[_0x4e38('0x5b')]]){queues[_0x23e487['transfertargetlinkedid']][_0x4e38('0x52')]=0x1;queues[_0x23e487['transfertargetuniqueid']]=_[_0x4e38('0x5c')](queues[_0x23e487[_0x4e38('0x5b')]]);queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x10')]=_0x23e487['transfertargetuniqueid'];queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x52')]=0x2;queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x8')]=queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x8')];queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x54')]=queues[_0x23e487[_0x4e38('0x4c')]][_0x4e38('0x54')];queues[_0x23e487['transfertargetuniqueid']][_0x4e38('0x34')]=utils[_0x4e38('0x1d')]();queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x18')]=utils[_0x4e38('0x1d')]();queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x33')]=0x0;queues[_0x23e487[_0x4e38('0x53')]]['mohtime']=0x0;utils[_0x4e38('0x3')](util[_0x4e38('0x12')](_0x4e38('0x5d'),_0x23e487[_0x4e38('0x4b')],queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x1f')],queues[_0x23e487[_0x4e38('0x53')]]['transfereduniqueid'],queues[_0x23e487['transfertargetuniqueid']][_0x4e38('0x8')],queues[_0x23e487[_0x4e38('0x53')]][_0x4e38('0x54')]));}else{utils[_0x4e38('0x3')](util[_0x4e38('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x23e487[_0x4e38('0x4b')],queues[_0x23e487[_0x4e38('0x4d')]][_0x4e38('0x1f')],_0x23e487[_0x4e38('0x4c')]));queues[_0x23e487[_0x4e38('0x4d')]]['transfereduniqueid']=_0x23e487[_0x4e38('0x4c')];}}}}catch(_0x1b30ac){utils[_0x4e38('0x14')](util[_0x4e38('0x12')](_0x4e38('0x5e'),_0x23e487[_0x4e38('0x4b')]),_0x1b30ac);}};exports[_0x4e38('0x5f')]=function(_0x3797ab){try{if(!_[_0x4e38('0x28')](queues[_0x3797ab[_0x4e38('0x5')]])){utils[_0x4e38('0x11')](util['format']('[%s][queues][musiconholdstart]',_0x3797ab[_0x4e38('0x5')]),_0x3797ab);queues[_0x3797ab['uniqueid']][_0x4e38('0x60')]=utils[_0x4e38('0x1d')]();utils['info'](util[_0x4e38('0x12')](_0x4e38('0x61'),_0x3797ab[_0x4e38('0x5')],queues[_0x3797ab[_0x4e38('0x5')]][_0x4e38('0x1f')],queues[_0x3797ab[_0x4e38('0x5')]]['musiconholdstartAt']));}}catch(_0x1ef2d5){utils['error'](util['format'](_0x4e38('0x62'),_0x3797ab[_0x4e38('0x5')]),_0x1ef2d5);}};exports[_0x4e38('0x63')]=function(_0x124fc0){try{if(!_['isNil'](queues[_0x124fc0['uniqueid']])){if(!_[_0x4e38('0x28')](queues[_0x124fc0[_0x4e38('0x5')]][_0x4e38('0x60')])){utils[_0x4e38('0x11')](util[_0x4e38('0x12')](_0x4e38('0x64'),_0x124fc0[_0x4e38('0x5')]),_0x124fc0);queues[_0x124fc0['uniqueid']]['mohtime']+=utils[_0x4e38('0x65')](utils[_0x4e38('0x1d')](),queues[_0x124fc0[_0x4e38('0x5')]][_0x4e38('0x60')]);utils['info'](util[_0x4e38('0x12')](_0x4e38('0x66'),_0x124fc0[_0x4e38('0x5')],queues[_0x124fc0[_0x4e38('0x5')]][_0x4e38('0x1f')],queues[_0x124fc0[_0x4e38('0x5')]][_0x4e38('0x55')]));delete queues[_0x124fc0[_0x4e38('0x5')]][_0x4e38('0x60')];}}}catch(_0x2ead69){utils[_0x4e38('0x14')](util[_0x4e38('0x12')]('[%s][queues][musiconholdstop]',_0x124fc0[_0x4e38('0x5')]),_0x2ead69);}};
\ No newline at end of file
+var _0x32b2=['EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','connectedlinenum','queuecallerleaveAt','diffTime','connectedlinename','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','transferexten','extension','BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','origtransfererexten','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridnum','calleridname','queuecallerjoinAt','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','accountcode','queuecallerexitreason','then','type','request','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','isNil','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','[%s][queues][varset]','queuestatus','CONTINUE','queuecallerabandonAt','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition'];(function(_0x540c99,_0x3ea1b4){var _0x10db11=function(_0x4723ab){while(--_0x4723ab){_0x540c99['push'](_0x540c99['shift']());}};_0x10db11(++_0x3ea1b4);}(_0x32b2,0x10b));var _0x232b=function(_0x375c0b,_0x567d67){_0x375c0b=_0x375c0b-0x0;var _0x4c4bec=_0x32b2[_0x375c0b];return _0x4c4bec;};'use strict';var _=require(_0x232b('0x0'));var util=require(_0x232b('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x219d75){utils[_0x232b('0x2')](util['format'](_0x232b('0x3'),_0x219d75[_0x232b('0x4')],_0x219d75[_0x232b('0x5')],_0x219d75[_0x232b('0x6')],_0x219d75[_0x232b('0x7')],_0x219d75['calleridnum'],_0x219d75[_0x232b('0x8')],_0x219d75[_0x232b('0x9')]));if(_0x219d75['queue']){utils['getVoiceQueueByName'](_0x219d75[_0x232b('0x6')])[_0x232b('0xa')](function(_0x1b100b){if(_0x1b100b){_0x219d75['type']=_0x1b100b[_0x232b('0xb')];}utils[_0x232b('0xc')]('CreateVoiceQueueReport',_0x219d75);});}else{utils[_0x232b('0xc')]('CreateVoiceQueueReport',_0x219d75);}if(_0x219d75[_0x232b('0xd')]){delete queues[_0x219d75[_0x232b('0xd')]];}else{delete queues[_0x219d75[_0x232b('0x4')]];}}exports[_0x232b('0xe')]=function(_0x5b7c3d){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x11'),_0x5b7c3d[_0x232b('0x4')]),_0x5b7c3d);utils['info'](util[_0x232b('0x10')](_0x232b('0x12'),_0x5b7c3d[_0x232b('0x4')],_0x5b7c3d[_0x232b('0x6')],_0x5b7c3d[_0x232b('0x13')]));queues[_0x5b7c3d[_0x232b('0x4')]]=_[_0x232b('0x14')](_0x5b7c3d,{'originalposition':_0x5b7c3d[_0x232b('0x13')],'queuecallerjoinAt':utils[_0x232b('0x15')](),'mohtime':0x0});}catch(_0x6b2cd0){utils[_0x232b('0x16')](util[_0x232b('0x10')]('[%s][queues][queuecallerjoin]',_0x5b7c3d[_0x232b('0x4')]),_0x6b2cd0);}};exports['hangup']=function(_0x472897){try{if(!_[_0x232b('0x17')](queues[_0x472897['uniqueid']])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x18'),_0x472897[_0x232b('0x4')]),_0x472897);if(queues[_0x472897[_0x232b('0x4')]]['queuecallerleaveAt']){if(!queues[_0x472897[_0x232b('0x4')]][_0x232b('0x19')]&&!queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1a')]){queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1b')]=!![];queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1c')]=utils[_0x232b('0x15')]();queues[_0x472897[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x1d');}utils[_0x232b('0x2')](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x472897[_0x232b('0x4')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0x1e')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x472897[_0x232b('0x4')]]);}else if(queues[_0x472897[_0x232b('0x4')]]['transfereduniqueid']){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x1f'),_0x472897[_0x232b('0x4')],queues[_0x472897['uniqueid']][_0x232b('0x1e')],queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]));queues[queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]]=queues[_0x472897[_0x232b('0x4')]];queues[queues[_0x472897[_0x232b('0x4')]][_0x232b('0xd')]]['queuecallerenterreason']=0x2;delete queues[_0x472897[_0x232b('0x4')]];}}}catch(_0x9ea11f){utils[_0x232b('0x16')](util['format'](_0x232b('0x18'),_0x472897[_0x232b('0x4')]),_0x9ea11f);}};exports[_0x232b('0x20')]=function(_0x283c2d){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x21'),_0x283c2d['uniqueid']),_0x283c2d);if(!_[_0x232b('0x17')](_0x283c2d['variable'][_0x232b('0x22')])&&_0x283c2d['value']['toUpperCase']()!==_0x232b('0x23')){if(!_[_0x232b('0x17')](queues[_0x283c2d[_0x232b('0x4')]])){queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x19')]=![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x24')]=null;queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x1a')]=!![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x25')]=utils[_0x232b('0x15')]();queues[_0x283c2d[_0x232b('0x4')]]['queuecallerexitreason']=_0x283c2d[_0x232b('0x26')]['toUpperCase']();utils[_0x232b('0x2')](util['format'](_0x232b('0x27'),_0x283c2d[_0x232b('0x4')],queues[_0x283c2d[_0x232b('0x4')]]['name'],_0x283c2d['value'],queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x283c2d[_0x232b('0x4')]]);}}else if(!_[_0x232b('0x17')](_0x283c2d[_0x232b('0x28')][_0x232b('0x29')])){if(!_[_0x232b('0x17')](queues[_0x283c2d[_0x232b('0x4')]])&&!queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x19')]){queues[_0x283c2d[_0x232b('0x4')]]['queuecallerabandon']=![];queues[_0x283c2d[_0x232b('0x4')]]['queuecallerabandonAt']=null;queues[_0x283c2d['uniqueid']][_0x232b('0x1a')]=!![];queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x25')]=utils[_0x232b('0x15')]();queues[_0x283c2d[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x2a');utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x2b'),_0x283c2d[_0x232b('0x4')],queues[_0x283c2d['uniqueid']][_0x232b('0x1e')],_0x283c2d['value'],queues[_0x283c2d['uniqueid']][_0x232b('0x9')]));}}}catch(_0x30c64d){utils['error'](util[_0x232b('0x10')]('[%s][queues][varset]',_0x283c2d['uniqueid']),_0x30c64d);}};exports['queuecallerabandon']=function(_0x49d04d){try{if(!_['isNil'](queues[_0x49d04d[_0x232b('0x4')]])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x2c'),_0x49d04d[_0x232b('0x4')]),_0x49d04d);queues[_0x49d04d['uniqueid']][_0x232b('0x1a')]=![];queues[_0x49d04d[_0x232b('0x4')]]['queuecallerexitAt']=null;queues[_0x49d04d['uniqueid']]['queuecallerabandon']=!![];queues[_0x49d04d[_0x232b('0x4')]]['queuecallerabandonAt']=utils[_0x232b('0x15')]();queues[_0x49d04d[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x2d');utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x2e'),_0x49d04d[_0x232b('0x4')],queues[_0x49d04d[_0x232b('0x4')]]['name'],queues[_0x49d04d[_0x232b('0x4')]][_0x232b('0x9')]));}}catch(_0x335897){utils[_0x232b('0x16')](util['format'](_0x232b('0x2c'),_0x49d04d[_0x232b('0x4')]),_0x335897);}};exports[_0x232b('0x2f')]=function(_0x5e0f0c){try{if(!_[_0x232b('0x17')](queues[_0x5e0f0c[_0x232b('0x4')]])){utils[_0x232b('0xf')](util['format']('[%s][queues][queuecallerleave]',_0x5e0f0c[_0x232b('0x4')]),_0x5e0f0c);utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x5e0f0c[_0x232b('0x4')],queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x1e')],_0x5e0f0c[_0x232b('0x30')],_0x5e0f0c['connectedlinename']));queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x2f')]=!![];queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x31')]=utils['now']();queues[_0x5e0f0c[_0x232b('0x4')]]['holdtime']=utils[_0x232b('0x32')](queues[_0x5e0f0c[_0x232b('0x4')]]['queuecallerleaveAt'],queues[_0x5e0f0c['uniqueid']]['queuecallerjoinAt']);queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x13')]=_0x5e0f0c[_0x232b('0x13')];queues[_0x5e0f0c[_0x232b('0x4')]]['count']=_0x5e0f0c['count'];queues[_0x5e0f0c[_0x232b('0x4')]][_0x232b('0x30')]=_0x5e0f0c[_0x232b('0x30')];queues[_0x5e0f0c[_0x232b('0x4')]]['connectedlinename']=_0x5e0f0c[_0x232b('0x33')];}}catch(_0x248d1d){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x34'),_0x5e0f0c[_0x232b('0x4')]),_0x248d1d);}};exports[_0x232b('0x35')]=function(_0x504c1c){try{if(!_['isNil'](queues[_0x504c1c['uniqueid']])){utils['debug'](util[_0x232b('0x10')]('[%s][queues][agentconnect]',_0x504c1c['uniqueid']),_0x504c1c);utils['info'](util[_0x232b('0x10')](_0x232b('0x36'),_0x504c1c[_0x232b('0x4')],queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x1e')],_0x504c1c[_0x232b('0x37')],_0x504c1c['destaccountcode']));queues[_0x504c1c['uniqueid']][_0x232b('0x19')]=![];queues[_0x504c1c['uniqueid']][_0x232b('0x19')]=![];queues[_0x504c1c['uniqueid']][_0x232b('0x24')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x1a')]=![];queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x9')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x25')]=null;queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x38')]=!![];queues[_0x504c1c[_0x232b('0x4')]]['accountcode']=_0x504c1c[_0x232b('0x39')];queues[_0x504c1c[_0x232b('0x4')]][_0x232b('0x7')]=_0x504c1c[_0x232b('0x37')];}}catch(_0x142609){utils[_0x232b('0x16')](util['format'](_0x232b('0x3a'),_0x504c1c['uniqueid']),_0x142609);}};exports['agentcomplete']=function(_0x53b342){try{if(!_[_0x232b('0x17')](queues[_0x53b342[_0x232b('0x4')]])){if(queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x31')]){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x3b'),_0x53b342[_0x232b('0x4')]),_0x53b342);queues[_0x53b342[_0x232b('0x4')]]['queuecallerabandon']=![];queues[_0x53b342['uniqueid']][_0x232b('0x19')]=![];queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x24')]=null;queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x1a')]=![];queues[_0x53b342[_0x232b('0x4')]]['queuecallerexitAt']=null;queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x38')]=!![];queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x7')]=_0x53b342[_0x232b('0x37')];queues[_0x53b342['uniqueid']]['queuecallercomplete']=!![];queues[_0x53b342['uniqueid']]['queuecallercompleteAt']=utils[_0x232b('0x15')]();if(_0x53b342[_0x232b('0x3c')]==_0x232b('0x3d')){if(!queues[_0x53b342['uniqueid']][_0x232b('0x3d')]){queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x9')]=_0x232b('0x3e');}}else{queues[_0x53b342['uniqueid']][_0x232b('0x9')]=_0x232b('0x3f')+_0x53b342['reason']['toUpperCase']();}utils['info'](util[_0x232b('0x10')](_0x232b('0x40'),_0x53b342[_0x232b('0x4')],queues[_0x53b342['uniqueid']][_0x232b('0x1e')],_0x53b342[_0x232b('0x37')],queues[_0x53b342[_0x232b('0x4')]][_0x232b('0x9')]));writeDB(queues[_0x53b342['uniqueid']]);}}}catch(_0x52ce8d){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x3b'),_0x53b342[_0x232b('0x4')]),_0x52ce8d);}};exports[_0x232b('0x41')]=function(_0x3ab7c2){try{if(!_[_0x232b('0x17')](queues[_0x3ab7c2[_0x232b('0x42')]])){utils[_0x232b('0xf')](util['format'](_0x232b('0x43'),_0x3ab7c2[_0x232b('0x4')]),_0x3ab7c2);queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x3d')]=!![];queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x44')]='BLIND';queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x45')]=_0x3ab7c2[_0x232b('0x46')];queues[_0x3ab7c2[_0x232b('0x42')]]['transferuniqueid']=_0x3ab7c2[_0x232b('0x42')];queues[_0x3ab7c2['transfereeuniqueid']]['queuecallerexitreason']=_0x232b('0x47');utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3ab7c2[_0x232b('0x4')],queues[_0x3ab7c2[_0x232b('0x42')]][_0x232b('0x1e')],_0x3ab7c2['transfereeuniqueid'],_0x3ab7c2['extension']));}}catch(_0x36ab44){utils['error'](util[_0x232b('0x10')](_0x232b('0x43'),_0x3ab7c2[_0x232b('0x4')]),_0x36ab44);}};exports[_0x232b('0x48')]=function(_0x50bbbb){try{utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x49'),_0x50bbbb[_0x232b('0x4a')]),_0x50bbbb);if(_0x50bbbb[_0x232b('0x4a')]==_0x50bbbb[_0x232b('0x4b')]){if(!_[_0x232b('0x17')](queues[_0x50bbbb[_0x232b('0x4c')]])){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x4d'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x1e')],_0x50bbbb['origtransfererexten']));queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x3d')]=!![];queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x44')]=_0x232b('0x4e');queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x45')]=_0x50bbbb[_0x232b('0x4f')];queues[_0x50bbbb['secondtransfererlinkedid']][_0x232b('0x50')]=_0x50bbbb[_0x232b('0x4a')];queues[_0x50bbbb[_0x232b('0x4c')]]['queuecallerexitreason']=_0x232b('0x51');}if(!_[_0x232b('0x17')](queues[_0x50bbbb['origtransfererlinkedid']])){if(_0x50bbbb[_0x232b('0x52')]&&queues[_0x50bbbb[_0x232b('0x52')]]){queues[_0x50bbbb['transfereelinkedid']][_0x232b('0x53')]=0x1;queues[_0x50bbbb[_0x232b('0x42')]]=_[_0x232b('0x54')](queues[_0x50bbbb[_0x232b('0x52')]]);queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x55')];queues[_0x50bbbb[_0x232b('0x42')]]['queuecallerenterreason']=0x2;queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x56')]=queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x56')];queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x57')]=queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0x57')];queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x58')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x31')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x59')]=0x0;queues[_0x50bbbb[_0x232b('0x42')]][_0x232b('0x5a')]=0x0;utils[_0x232b('0x2')](util[_0x232b('0x10')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x50bbbb['origtransfereruniqueid'],queues[_0x50bbbb['transfereeuniqueid']][_0x232b('0x1e')],queues[_0x50bbbb[_0x232b('0x42')]]['calleridnum'],queues[_0x50bbbb[_0x232b('0x42')]]['calleridname']));}else{utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x5b'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4b')]]['name'],_0x50bbbb['secondtransfererlinkedid']));queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x4c')];}}}else if(_0x50bbbb[_0x232b('0x5c')]==_0x50bbbb['secondtransfererlinkedid']){if(!_[_0x232b('0x17')](queues[_0x50bbbb[_0x232b('0x4b')]])){utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x5d'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb['origtransfererlinkedid']]['name'],_0x50bbbb[_0x232b('0x5c')],_0x50bbbb[_0x232b('0x5e')]));queues[_0x50bbbb['origtransfererlinkedid']][_0x232b('0x3d')]=!![];queues[_0x50bbbb['origtransfererlinkedid']]['transfertype']=_0x232b('0x4e');queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x45')]=_0x50bbbb[_0x232b('0x5e')];queues[_0x50bbbb[_0x232b('0x4b')]]['transferuniqueid']=_0x50bbbb[_0x232b('0x5c')];queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x232b('0x17')](queues[_0x50bbbb['secondtransfererlinkedid']])){if(_0x50bbbb['transfertargetlinkedid']&&queues[_0x50bbbb[_0x232b('0x5f')]]){queues[_0x50bbbb[_0x232b('0x5f')]][_0x232b('0x53')]=0x1;queues[_0x50bbbb['transfertargetuniqueid']]=_['clone'](queues[_0x50bbbb[_0x232b('0x5f')]]);queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x55')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x53')]=0x2;queues[_0x50bbbb[_0x232b('0x55')]]['calleridnum']=queues[_0x50bbbb[_0x232b('0x4b')]][_0x232b('0x56')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x57')]=queues[_0x50bbbb['origtransfererlinkedid']][_0x232b('0x57')];queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x58')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x31')]=utils[_0x232b('0x15')]();queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x59')]=0x0;queues[_0x50bbbb[_0x232b('0x55')]]['mohtime']=0x0;utils[_0x232b('0x2')](util['format'](_0x232b('0x60'),_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb['transfertargetuniqueid']][_0x232b('0x1e')],queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0xd')],queues[_0x50bbbb[_0x232b('0x55')]]['calleridnum'],queues[_0x50bbbb[_0x232b('0x55')]][_0x232b('0x57')]));}else{utils[_0x232b('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x50bbbb[_0x232b('0x4a')],queues[_0x50bbbb[_0x232b('0x4c')]]['name'],_0x50bbbb[_0x232b('0x4b')]));queues[_0x50bbbb[_0x232b('0x4c')]][_0x232b('0xd')]=_0x50bbbb[_0x232b('0x4b')];}}}}catch(_0x27ead9){utils['error'](util[_0x232b('0x10')](_0x232b('0x49'),_0x50bbbb[_0x232b('0x4a')]),_0x27ead9);}};exports[_0x232b('0x61')]=function(_0x4f056b){try{if(!_[_0x232b('0x17')](queues[_0x4f056b['uniqueid']])){utils[_0x232b('0xf')](util[_0x232b('0x10')](_0x232b('0x62'),_0x4f056b[_0x232b('0x4')]),_0x4f056b);queues[_0x4f056b['uniqueid']]['musiconholdstartAt']=utils[_0x232b('0x15')]();utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x63'),_0x4f056b[_0x232b('0x4')],queues[_0x4f056b[_0x232b('0x4')]]['name'],queues[_0x4f056b[_0x232b('0x4')]][_0x232b('0x64')]));}}catch(_0x45b912){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x62'),_0x4f056b[_0x232b('0x4')]),_0x45b912);}};exports['musiconholdstop']=function(_0x50f8c3){try{if(!_['isNil'](queues[_0x50f8c3[_0x232b('0x4')]])){if(!_[_0x232b('0x17')](queues[_0x50f8c3[_0x232b('0x4')]][_0x232b('0x64')])){utils['debug'](util['format'](_0x232b('0x65'),_0x50f8c3[_0x232b('0x4')]),_0x50f8c3);queues[_0x50f8c3[_0x232b('0x4')]]['mohtime']+=utils[_0x232b('0x32')](utils[_0x232b('0x15')](),queues[_0x50f8c3['uniqueid']][_0x232b('0x64')]);utils[_0x232b('0x2')](util[_0x232b('0x10')](_0x232b('0x66'),_0x50f8c3[_0x232b('0x4')],queues[_0x50f8c3['uniqueid']][_0x232b('0x1e')],queues[_0x50f8c3['uniqueid']][_0x232b('0x5a')]));delete queues[_0x50f8c3[_0x232b('0x4')]][_0x232b('0x64')];}}}catch(_0x1e133b){utils[_0x232b('0x16')](util[_0x232b('0x10')](_0x232b('0x65'),_0x50f8c3[_0x232b('0x4')]),_0x1e133b);}};
\ No newline at end of file
index 46a0de3..7734275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb87f=['context','accountcode','exten','error','newstate','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','value','endsWith','replace','.wav49','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','cdr','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereruniqueid','[%s][recordings][blindtransfer]','./utils','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','getUserByInternal','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','linkedid','info'];(function(_0x52c617,_0x285a92){var _0xc6e1f2=function(_0x55e607){while(--_0x55e607){_0x52c617['push'](_0x52c617['shift']());}};_0xc6e1f2(++_0x285a92);}(_0xb87f,0x1e7));var _0xfb87=function(_0x2abfb7,_0x1f6a6b){_0x2abfb7=_0x2abfb7-0x0;var _0x3cfb4e=_0xb87f[_0x2abfb7];return _0x3cfb4e;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xfb87('0x0'));var transfers=require(_0xfb87('0x1'));var recordings={};function writeDB(_0x187530){var _0x2098a4;utils['info'](util[_0xfb87('0x2')](_0xfb87('0x3'),_0x187530[_0xfb87('0x4')]));if(transfers['blinds'][_0x187530[_0xfb87('0x4')]]){_0x2098a4=_0x187530[_0xfb87('0x4')];_0x187530[_0xfb87('0x4')]=transfers[_0xfb87('0x5')][_0x187530[_0xfb87('0x4')]]['transfereeuniqueid'];}if(_0x187530['accountcode']){utils[_0xfb87('0x6')](_0x187530['accountcode'])['then'](function(_0x237b74){if(_0x237b74){_0x187530[_0xfb87('0x7')]=_0x237b74[_0xfb87('0x8')];_0x187530[_0xfb87('0x9')]=_0x237b74['id'];}utils['request'](_0xfb87('0xa'),_0x187530);});}else{utils[_0xfb87('0xb')]('CreateVoiceRecording',_0x187530);}if(_0x2098a4)delete transfers[_0xfb87('0x5')][_0x2098a4];}exports[_0xfb87('0xc')]=function(_0x3f9528){try{utils[_0xfb87('0xd')](util[_0xfb87('0x2')](_0xfb87('0xe'),_0x3f9528[_0xfb87('0x4')]),_0x3f9528);if(_0x3f9528[_0xfb87('0x4')]==_0x3f9528[_0xfb87('0xf')]){utils[_0xfb87('0x10')](util[_0xfb87('0x2')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x3f9528[_0xfb87('0x4')],_0x3f9528[_0xfb87('0x11')],_0x3f9528['exten']));recordings[_0x3f9528[_0xfb87('0x4')]]={'uniqueid':_0x3f9528[_0xfb87('0x4')],'accountcode':_0x3f9528[_0xfb87('0x12')],'exten':_0x3f9528[_0xfb87('0x13')],'context':_0x3f9528[_0xfb87('0x11')],'channel':_0x3f9528['channel'],'monitors':[]};}}catch(_0x4b78ae){utils[_0xfb87('0x14')](util[_0xfb87('0x2')](_0xfb87('0xe'),_0x3f9528[_0xfb87('0x4')]),_0x4b78ae);}};exports[_0xfb87('0x15')]=function(_0x41faf1){try{utils[_0xfb87('0xd')](util['format'](_0xfb87('0x16'),_0x41faf1[_0xfb87('0x4')]),_0x41faf1);if(!_[_0xfb87('0x17')](recordings[_0x41faf1[_0xfb87('0x4')]])&&_0x41faf1['channelstate']==0x6){utils[_0xfb87('0x10')](util[_0xfb87('0x2')](_0xfb87('0x18'),_0x41faf1[_0xfb87('0x4')],_0x41faf1['context'],_0x41faf1[_0xfb87('0x19')]));}else if(!_[_0xfb87('0x17')](recordings[_0x41faf1[_0xfb87('0xf')]])&&_0x41faf1[_0xfb87('0x1a')]==0x6&&_0x41faf1['context']!=_0xfb87('0x1b')){utils[_0xfb87('0x10')](util[_0xfb87('0x2')](_0xfb87('0x1c'),_0x41faf1[_0xfb87('0x4')],_0x41faf1[_0xfb87('0xf')],_0x41faf1[_0xfb87('0x11')],_0x41faf1[_0xfb87('0x19')]));recordings[_0x41faf1[_0xfb87('0xf')]][_0xfb87('0x12')]=_0x41faf1[_0xfb87('0x12')];}}catch(_0x50b644){utils['error'](util[_0xfb87('0x2')](_0xfb87('0x16'),_0x41faf1['uniqueid']),_0x50b644);}};exports[_0xfb87('0x1d')]=function(_0x132959){try{if(!_[_0xfb87('0x17')](_0x132959[_0xfb87('0x1e')])&&!_[_0xfb87('0x17')](_0x132959[_0xfb87('0x1e')][_0xfb87('0x1f')])){utils[_0xfb87('0xd')](util[_0xfb87('0x2')](_0xfb87('0x20'),_0x132959[_0xfb87('0x4')]),_0x132959);utils[_0xfb87('0x10')](util[_0xfb87('0x2')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x132959[_0xfb87('0x4')],_0x132959[_0xfb87('0x1e')],_0x132959[_0xfb87('0x21')]));if(_[_0xfb87('0x22')](_0x132959[_0xfb87('0x21')],'.wav49')){_0x132959['value']=_0x132959[_0xfb87('0x21')][_0xfb87('0x23')](_0xfb87('0x24'),'.WAV');}if(recordings[_0x132959['linkedid']]){var _0x3cc906=_[_0xfb87('0x25')](recordings[_0x132959[_0xfb87('0xf')]]['monitors'],{'value':_0x132959['value']});if(_['isNil'](_0x3cc906)){recordings[_0x132959[_0xfb87('0xf')]][_0xfb87('0x26')][_0xfb87('0x27')]({'value':_0x132959['value']});}}}}catch(_0x519c59){utils[_0xfb87('0x14')](util[_0xfb87('0x2')]('[%s][recordings][varset]',_0x132959['uniqueid']),_0x519c59);}};exports[_0xfb87('0x28')]=function(_0x5a51bf){try{if(!_[_0xfb87('0x17')](recordings[_0x5a51bf[_0xfb87('0x4')]])){utils[_0xfb87('0xd')](util[_0xfb87('0x2')](_0xfb87('0x29'),_0x5a51bf[_0xfb87('0x4')]),_0x5a51bf);utils[_0xfb87('0x10')](util['format'](_0xfb87('0x2a'),_0x5a51bf[_0xfb87('0x4')],_0x5a51bf[_0xfb87('0x2b')],_0x5a51bf[_0xfb87('0x2c')],_0x5a51bf[_0xfb87('0x2d')]));recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x2b')]=_0x5a51bf[_0xfb87('0x2b')];recordings[_0x5a51bf[_0xfb87('0x4')]]['calleridname']=_0x5a51bf[_0xfb87('0x2c')];recordings[_0x5a51bf[_0xfb87('0x4')]]['connectedlinenum']=_0x5a51bf[_0xfb87('0x2e')];recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x2f')]=_0x5a51bf[_0xfb87('0x2f')];if(recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x30')]==_0xfb87('0x31')&&recordings[_0x5a51bf['uniqueid']][_0xfb87('0x12')]){recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x2e')]=recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x12')];recordings[_0x5a51bf[_0xfb87('0x4')]][_0xfb87('0x2f')]='';}recordings[_0x5a51bf['uniqueid']][_0xfb87('0x26')][_0xfb87('0x32')](function(_0x582fc3){var _0x266eb4=_[_0xfb87('0x33')](recordings[_0x5a51bf[_0xfb87('0x4')]]);_0x266eb4['value']=_0x582fc3[_0xfb87('0x21')];writeDB(_0x266eb4);});delete recordings[_0x5a51bf[_0xfb87('0x4')]];}}catch(_0x5f2c70){utils[_0xfb87('0x14')](util[_0xfb87('0x2')](_0xfb87('0x29'),_0x5a51bf[_0xfb87('0x4')]),_0x5f2c70);}};exports[_0xfb87('0x34')]=function(_0x1a32af){try{if(!_[_0xfb87('0x17')](recordings[_0x1a32af['uniqueid']])){utils[_0xfb87('0xd')](util[_0xfb87('0x2')](_0xfb87('0x35'),_0x1a32af['uniqueid']),_0x1a32af);utils['info'](util[_0xfb87('0x2')](_0xfb87('0x36'),_0x1a32af[_0xfb87('0x4')],_0x1a32af[_0xfb87('0x37')],_0x1a32af[_0xfb87('0x38')]));if(_0x1a32af['application']['toLowerCase']()==_0xfb87('0x39')&&_[_0xfb87('0x3a')](_0x1a32af[_0xfb87('0x38')]['toLowerCase'](),_0xfb87('0x3b'))){var _0x2bab5b=_0x1a32af[_0xfb87('0x38')]['split']('=');var _0x1e8b69=_0x2bab5b[0x0]['substring'](_0x2bab5b[0x0][_0xfb87('0x3c')]('(')+0x1,_0x2bab5b[0x0][_0xfb87('0x3c')](')'));var _0x8e8155=_0x2bab5b[0x1];recordings[_0x1a32af['uniqueid']][_0x1e8b69]=_0x8e8155;}}}catch(_0x146603){utils[_0xfb87('0x14')](util[_0xfb87('0x2')](_0xfb87('0x35'),_0x1a32af[_0xfb87('0x4')]),_0x146603);}};exports[_0xfb87('0x3d')]=function(_0x52f796){try{if(!_[_0xfb87('0x17')](recordings[_0x52f796['uniqueid']])){utils[_0xfb87('0xd')](util[_0xfb87('0x2')](_0xfb87('0x3e'),_0x52f796[_0xfb87('0x4')]),_0x52f796);utils[_0xfb87('0x10')](util['format'](_0xfb87('0x3f'),_0x52f796[_0xfb87('0x4')],_0x52f796['queue']));recordings[_0x52f796['uniqueid']][_0xfb87('0x40')]=_0x52f796[_0xfb87('0x40')];}}catch(_0x3eaf0f){utils[_0xfb87('0x14')](util[_0xfb87('0x2')](_0xfb87('0x3e'),_0x52f796[_0xfb87('0x4')]),_0x3eaf0f);}};exports[_0xfb87('0x41')]=function(_0x3bcc08){try{utils[_0xfb87('0xd')](util[_0xfb87('0x2')]('[%s][recordings][blindtransfer]',_0x3bcc08[_0xfb87('0x4')]),_0x3bcc08);utils[_0xfb87('0x10')](util[_0xfb87('0x2')](_0xfb87('0x42'),_0x3bcc08[_0xfb87('0x4')],_0x3bcc08[_0xfb87('0x43')],_0x3bcc08[_0xfb87('0x44')],_0x3bcc08[_0xfb87('0x45')],_0x3bcc08['transfereecalleridname']));if(recordings[_0x3bcc08[_0xfb87('0x46')]]&&transfers[_0xfb87('0x5')][_0x3bcc08[_0xfb87('0x46')]]){transfers[_0xfb87('0x5')][_0x3bcc08[_0xfb87('0x46')]]['recording']=!![];}}catch(_0x77ceb6){utils[_0xfb87('0x14')](util['format'](_0xfb87('0x47'),_0x3bcc08['uniqueid']),_0x77ceb6);}};
\ No newline at end of file
+var _0xb734=['membername','name','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','debug','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','calleridname','connectedlinenum','connectedlinename','type','forEach','clone','newexten','[%s][recordings][newexten]','application','set','appdata','cdr','split','substring','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','util','./utils','info','uniqueid','blinds','transfereeuniqueid','accountcode','then'];(function(_0x511381,_0x238063){var _0x58fa61=function(_0x5c368e){while(--_0x5c368e){_0x511381['push'](_0x511381['shift']());}};_0x58fa61(++_0x238063);}(_0xb734,0x156));var _0x4b73=function(_0x5338fe,_0x5e71d1){_0x5338fe=_0x5338fe-0x0;var _0xf0a1be=_0xb734[_0x5338fe];return _0xf0a1be;};'use strict';var _=require('lodash');var util=require(_0x4b73('0x0'));var utils=require(_0x4b73('0x1'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x4be4a8){var _0x1536a0;utils[_0x4b73('0x2')](util['format']('[%s][recordings][writeDB]',_0x4be4a8[_0x4b73('0x3')]));if(transfers[_0x4b73('0x4')][_0x4be4a8[_0x4b73('0x3')]]){_0x1536a0=_0x4be4a8[_0x4b73('0x3')];_0x4be4a8[_0x4b73('0x3')]=transfers[_0x4b73('0x4')][_0x4be4a8[_0x4b73('0x3')]][_0x4b73('0x5')];}if(_0x4be4a8['accountcode']){utils['getUserByInternal'](_0x4be4a8[_0x4b73('0x6')])[_0x4b73('0x7')](function(_0x1df6d9){if(_0x1df6d9){_0x4be4a8[_0x4b73('0x8')]=_0x1df6d9[_0x4b73('0x9')];_0x4be4a8[_0x4b73('0xa')]=_0x1df6d9['id'];}utils[_0x4b73('0xb')](_0x4b73('0xc'),_0x4be4a8);});}else{utils[_0x4b73('0xb')](_0x4b73('0xc'),_0x4be4a8);}if(_0x1536a0)delete transfers[_0x4b73('0x4')][_0x1536a0];}exports[_0x4b73('0xd')]=function(_0x4caabd){try{utils['debug'](util['format'](_0x4b73('0xe'),_0x4caabd[_0x4b73('0x3')]),_0x4caabd);if(_0x4caabd[_0x4b73('0x3')]==_0x4caabd[_0x4b73('0xf')]){utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x11'),_0x4caabd[_0x4b73('0x3')],_0x4caabd[_0x4b73('0x12')],_0x4caabd[_0x4b73('0x13')]));recordings[_0x4caabd[_0x4b73('0x3')]]={'uniqueid':_0x4caabd[_0x4b73('0x3')],'accountcode':_0x4caabd[_0x4b73('0x6')],'exten':_0x4caabd[_0x4b73('0x13')],'context':_0x4caabd[_0x4b73('0x12')],'channel':_0x4caabd[_0x4b73('0x14')],'monitors':[]};}}catch(_0x3c8d3a){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0xe'),_0x4caabd['uniqueid']),_0x3c8d3a);}};exports['newstate']=function(_0x4aeb5c){try{utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x17'),_0x4aeb5c[_0x4b73('0x3')]),_0x4aeb5c);if(!_[_0x4b73('0x18')](recordings[_0x4aeb5c['uniqueid']])&&_0x4aeb5c[_0x4b73('0x19')]==0x6){utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x4aeb5c[_0x4b73('0x3')],_0x4aeb5c[_0x4b73('0x12')],_0x4aeb5c[_0x4b73('0x14')]));}else if(!_[_0x4b73('0x18')](recordings[_0x4aeb5c['linkedid']])&&_0x4aeb5c[_0x4b73('0x19')]==0x6&&_0x4aeb5c[_0x4b73('0x12')]!=_0x4b73('0x1a')){utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x1b'),_0x4aeb5c['uniqueid'],_0x4aeb5c[_0x4b73('0xf')],_0x4aeb5c[_0x4b73('0x12')],_0x4aeb5c[_0x4b73('0x14')]));recordings[_0x4aeb5c[_0x4b73('0xf')]]['accountcode']=_0x4aeb5c['accountcode'];}}catch(_0x92cd18){utils['error'](util['format'](_0x4b73('0x17'),_0x4aeb5c[_0x4b73('0x3')]),_0x92cd18);}};exports[_0x4b73('0x1c')]=function(_0x5cf6f0){try{if(!_[_0x4b73('0x18')](_0x5cf6f0[_0x4b73('0x1d')])&&!_[_0x4b73('0x18')](_0x5cf6f0[_0x4b73('0x1d')][_0x4b73('0x1e')])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')]('[%s][recordings][varset]',_0x5cf6f0[_0x4b73('0x3')]),_0x5cf6f0);utils[_0x4b73('0x2')](util['format'](_0x4b73('0x1f'),_0x5cf6f0[_0x4b73('0x3')],_0x5cf6f0[_0x4b73('0x1d')],_0x5cf6f0[_0x4b73('0x20')]));if(_[_0x4b73('0x21')](_0x5cf6f0[_0x4b73('0x20')],_0x4b73('0x22'))){_0x5cf6f0[_0x4b73('0x20')]=_0x5cf6f0['value'][_0x4b73('0x23')](_0x4b73('0x22'),'.WAV');}if(recordings[_0x5cf6f0[_0x4b73('0xf')]]){var _0x2a1911=_[_0x4b73('0x24')](recordings[_0x5cf6f0['linkedid']][_0x4b73('0x25')],{'value':_0x5cf6f0[_0x4b73('0x20')]});if(_[_0x4b73('0x18')](_0x2a1911)){recordings[_0x5cf6f0[_0x4b73('0xf')]][_0x4b73('0x25')][_0x4b73('0x26')]({'value':_0x5cf6f0[_0x4b73('0x20')]});}}}}catch(_0x4eb840){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x27'),_0x5cf6f0[_0x4b73('0x3')]),_0x4eb840);}};exports[_0x4b73('0x28')]=function(_0x498dee){try{if(!_['isNil'](recordings[_0x498dee['uniqueid']])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x29'),_0x498dee[_0x4b73('0x3')]),_0x498dee);utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x498dee[_0x4b73('0x3')],_0x498dee[_0x4b73('0x2a')],_0x498dee[_0x4b73('0x2b')],_0x498dee['cause-txt']));recordings[_0x498dee[_0x4b73('0x3')]]['calleridnum']=_0x498dee['calleridnum'];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2b')]=_0x498dee[_0x4b73('0x2b')];recordings[_0x498dee[_0x4b73('0x3')]]['connectedlinenum']=_0x498dee[_0x4b73('0x2c')];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2d')]=_0x498dee[_0x4b73('0x2d')];if(recordings[_0x498dee['uniqueid']][_0x4b73('0x2e')]=='outbound'&&recordings[_0x498dee['uniqueid']]['accountcode']){recordings[_0x498dee['uniqueid']][_0x4b73('0x2c')]=recordings[_0x498dee[_0x4b73('0x3')]]['accountcode'];recordings[_0x498dee[_0x4b73('0x3')]][_0x4b73('0x2d')]='';}recordings[_0x498dee[_0x4b73('0x3')]]['monitors'][_0x4b73('0x2f')](function(_0x1f5eac){var _0x207774=_[_0x4b73('0x30')](recordings[_0x498dee[_0x4b73('0x3')]]);_0x207774['value']=_0x1f5eac[_0x4b73('0x20')];writeDB(_0x207774);});delete recordings[_0x498dee['uniqueid']];}}catch(_0x1fffa2){utils[_0x4b73('0x15')](util['format'](_0x4b73('0x29'),_0x498dee[_0x4b73('0x3')]),_0x1fffa2);}};exports[_0x4b73('0x31')]=function(_0x146264){try{if(!_[_0x4b73('0x18')](recordings[_0x146264[_0x4b73('0x3')]])){utils[_0x4b73('0x16')](util[_0x4b73('0x10')](_0x4b73('0x32'),_0x146264[_0x4b73('0x3')]),_0x146264);utils[_0x4b73('0x2')](util[_0x4b73('0x10')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x146264['uniqueid'],_0x146264['application'],_0x146264['appdata']));if(_0x146264[_0x4b73('0x33')]['toLowerCase']()==_0x4b73('0x34')&&_['startsWith'](_0x146264[_0x4b73('0x35')]['toLowerCase'](),_0x4b73('0x36'))){var _0x42361a=_0x146264[_0x4b73('0x35')][_0x4b73('0x37')]('=');var _0x5ea922=_0x42361a[0x0][_0x4b73('0x38')](_0x42361a[0x0]['lastIndexOf']('(')+0x1,_0x42361a[0x0]['lastIndexOf'](')'));var _0xcf9509=_0x42361a[0x1];recordings[_0x146264[_0x4b73('0x3')]][_0x5ea922]=_0xcf9509;}}}catch(_0x1c3089){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x32'),_0x146264[_0x4b73('0x3')]),_0x1c3089);}};exports[_0x4b73('0x39')]=function(_0x23154d){try{if(!_['isNil'](recordings[_0x23154d['uniqueid']])){utils[_0x4b73('0x16')](util['format'](_0x4b73('0x3a'),_0x23154d[_0x4b73('0x3')]),_0x23154d);utils['info'](util[_0x4b73('0x10')](_0x4b73('0x3b'),_0x23154d[_0x4b73('0x3')],_0x23154d[_0x4b73('0x3c')]));recordings[_0x23154d['uniqueid']][_0x4b73('0x3c')]=_0x23154d['queue'];}}catch(_0x5a649d){utils[_0x4b73('0x15')](util[_0x4b73('0x10')]('[%s][recordings][queuecallerjoin]',_0x23154d[_0x4b73('0x3')]),_0x5a649d);}};exports[_0x4b73('0x3d')]=function(_0x3fd41e){try{utils[_0x4b73('0x16')](util[_0x4b73('0x10')]('[%s][recordings][blindtransfer]',_0x3fd41e['uniqueid']),_0x3fd41e);utils[_0x4b73('0x2')](util[_0x4b73('0x10')](_0x4b73('0x3e'),_0x3fd41e[_0x4b73('0x3')],_0x3fd41e[_0x4b73('0x3f')],_0x3fd41e[_0x4b73('0x40')],_0x3fd41e[_0x4b73('0x41')],_0x3fd41e[_0x4b73('0x42')]));if(recordings[_0x3fd41e['transfereruniqueid']]&&transfers[_0x4b73('0x4')][_0x3fd41e[_0x4b73('0x43')]]){transfers[_0x4b73('0x4')][_0x3fd41e[_0x4b73('0x43')]][_0x4b73('0x44')]=!![];}}catch(_0x4f18a6){utils[_0x4b73('0x15')](util[_0x4b73('0x10')](_0x4b73('0x45'),_0x3fd41e[_0x4b73('0x3')]),_0x4f18a6);}};
\ No newline at end of file
index 13c8b68..3353c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a6f=['[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransferercontext','origtransfererexten','transfertargetchannel','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','error','lodash','util','./utils','info','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','CreateVoiceTransferReport','blinds','format','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','attendedtransfer','debug'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1a6f,0xb9));var _0xf1a6=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x1a6f[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0xf1a6('0x0'));var util=require(_0xf1a6('0x1'));var utils=require(_0xf1a6('0x2'));function writeDB(_0x2687c8){utils[_0xf1a6('0x3')](util['format'](_0xf1a6('0x4'),_0x2687c8[_0xf1a6('0x5')]===_0xf1a6('0x6')?_0x2687c8['origtransfereruniqueid']:_0x2687c8[_0xf1a6('0x7')],_0x2687c8[_0xf1a6('0x5')]));utils['request'](_0xf1a6('0x8'),_0x2687c8);}exports[_0xf1a6('0x9')]={};exports['blindtransfer']=function(_0xab9c7b){try{utils['debug'](util[_0xf1a6('0xa')](_0xf1a6('0xb'),_0xab9c7b['uniqueid']),_0xab9c7b);utils[_0xf1a6('0x3')](util[_0xf1a6('0xa')](_0xf1a6('0xc'),_0xab9c7b[_0xf1a6('0x7')],_0xab9c7b[_0xf1a6('0xd')],_0xab9c7b['transferercalleridname'],_0xab9c7b[_0xf1a6('0xe')],_0xab9c7b[_0xf1a6('0xf')]));_0xab9c7b[_0xf1a6('0x5')]=_0xf1a6('0x10');exports[_0xf1a6('0x9')][_0xab9c7b[_0xf1a6('0x11')]]=_0xab9c7b;writeDB(_0xab9c7b);}catch(_0x7486cc){utils['error'](util[_0xf1a6('0xa')](_0xf1a6('0xb'),_0xab9c7b['uniqueid']),_0x7486cc);}};exports[_0xf1a6('0x12')]=function(_0x453227){try{utils[_0xf1a6('0x13')](util[_0xf1a6('0xa')](_0xf1a6('0x14'),_0x453227[_0xf1a6('0x15')]),_0x453227);utils['info'](util[_0xf1a6('0xa')](_0xf1a6('0x16'),_0x453227[_0xf1a6('0x15')],_0x453227['origtransferercalleridnum'],_0x453227['origtransferercalleridname'],_0x453227[_0xf1a6('0x17')],_0x453227[_0xf1a6('0x18')]));_0x453227=_['assign'](_0x453227,{'transfererchannel':_0x453227[_0xf1a6('0x19')],'transferercalleridnum':_0x453227[_0xf1a6('0x1a')],'transferercalleridname':_0x453227[_0xf1a6('0x1b')],'transfererconnectedlinenum':_0x453227[_0xf1a6('0x1c')],'transfererconnectedlinename':_0x453227[_0xf1a6('0x1d')],'transfereraccountcode':_0x453227[_0xf1a6('0x1e')],'transferercontext':_0x453227[_0xf1a6('0x1f')],'transfererexten':_0x453227['secondtransfererexten'],'transfererlinkedid':_0x453227[_0xf1a6('0x20')],'context':_0x453227[_0xf1a6('0x21')],'extension':_0x453227[_0xf1a6('0x22')],'type':_0xf1a6('0x6')});if(_['isNil'](_0x453227['transfereechannel'])){_0x453227=_['assign'](_0x453227,{'transfereechannel':_0x453227[_0xf1a6('0x23')],'transfereecalleridnum':_0x453227[_0xf1a6('0x17')],'transfereecalleridname':_0x453227[_0xf1a6('0x18')],'transfereeconnectedlinenum':_0x453227[_0xf1a6('0x24')],'transfereeconnectedlinename':_0x453227['transfertargetconnectedlinename'],'transfereeaccountcode':_0x453227[_0xf1a6('0x25')],'transfereecontext':_0x453227[_0xf1a6('0x26')],'transfereeexten':_0x453227[_0xf1a6('0x27')],'transfereelinkedid':_0x453227['transfertargetlinkedid']});}writeDB(_0x453227);}catch(_0x298907){utils[_0xf1a6('0x28')](util['format'](_0xf1a6('0x14'),_0x453227[_0xf1a6('0x15')]),_0x298907);}};
\ No newline at end of file
+var _0x5810=['blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','uniqueid','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','attended','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','request','blinds'];(function(_0x2e13b2,_0x116cbe){var _0x2a3707=function(_0x30601e){while(--_0x30601e){_0x2e13b2['push'](_0x2e13b2['shift']());}};_0x2a3707(++_0x116cbe);}(_0x5810,0x15f));var _0x0581=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5810[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0x0581('0x0'));var utils=require(_0x0581('0x1'));function writeDB(_0x2cca26){utils[_0x0581('0x2')](util[_0x0581('0x3')](_0x0581('0x4'),_0x2cca26[_0x0581('0x5')]==='attended'?_0x2cca26[_0x0581('0x6')]:_0x2cca26['uniqueid'],_0x2cca26[_0x0581('0x5')]));utils[_0x0581('0x7')]('CreateVoiceTransferReport',_0x2cca26);}exports[_0x0581('0x8')]={};exports[_0x0581('0x9')]=function(_0x19d342){try{utils[_0x0581('0xa')](util[_0x0581('0x3')](_0x0581('0xb'),_0x19d342['uniqueid']),_0x19d342);utils[_0x0581('0x2')](util[_0x0581('0x3')](_0x0581('0xc'),_0x19d342[_0x0581('0xd')],_0x19d342[_0x0581('0xe')],_0x19d342['transferercalleridname'],_0x19d342[_0x0581('0xf')],_0x19d342[_0x0581('0x10')]));_0x19d342[_0x0581('0x5')]=_0x0581('0x11');exports[_0x0581('0x8')][_0x19d342['transfereruniqueid']]=_0x19d342;writeDB(_0x19d342);}catch(_0x589998){utils[_0x0581('0x12')](util[_0x0581('0x3')](_0x0581('0xb'),_0x19d342[_0x0581('0xd')]),_0x589998);}};exports[_0x0581('0x13')]=function(_0x17af09){try{utils[_0x0581('0xa')](util[_0x0581('0x3')](_0x0581('0x14'),_0x17af09[_0x0581('0x6')]),_0x17af09);utils[_0x0581('0x2')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x17af09[_0x0581('0x6')],_0x17af09[_0x0581('0x15')],_0x17af09['origtransferercalleridname'],_0x17af09[_0x0581('0x16')],_0x17af09[_0x0581('0x17')]));_0x17af09=_[_0x0581('0x18')](_0x17af09,{'transfererchannel':_0x17af09['origtransfererchannel'],'transferercalleridnum':_0x17af09[_0x0581('0x15')],'transferercalleridname':_0x17af09[_0x0581('0x19')],'transfererconnectedlinenum':_0x17af09[_0x0581('0x1a')],'transfererconnectedlinename':_0x17af09[_0x0581('0x1b')],'transfereraccountcode':_0x17af09[_0x0581('0x1c')],'transferercontext':_0x17af09[_0x0581('0x1d')],'transfererexten':_0x17af09[_0x0581('0x1e')],'transfererlinkedid':_0x17af09[_0x0581('0x1f')],'context':_0x17af09['origtransferercontext'],'extension':_0x17af09['origtransfererexten'],'type':_0x0581('0x20')});if(_[_0x0581('0x21')](_0x17af09[_0x0581('0x22')])){_0x17af09=_['assign'](_0x17af09,{'transfereechannel':_0x17af09[_0x0581('0x23')],'transfereecalleridnum':_0x17af09[_0x0581('0x16')],'transfereecalleridname':_0x17af09[_0x0581('0x17')],'transfereeconnectedlinenum':_0x17af09['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x17af09[_0x0581('0x24')],'transfereeaccountcode':_0x17af09[_0x0581('0x25')],'transfereecontext':_0x17af09['transfertargetcontext'],'transfereeexten':_0x17af09[_0x0581('0x26')],'transfereelinkedid':_0x17af09[_0x0581('0x27')]});}writeDB(_0x17af09);}catch(_0x4ce14e){utils[_0x0581('0x12')](util['format'](_0x0581('0x14'),_0x17af09[_0x0581('0x6')]),_0x4ce14e);}};
\ No newline at end of file
index 7ac99e2..89d01c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e9=['[utils][getUserByInternal]\x20internal:%s\x20%s','found','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','result','length','getUserByInternal'];(function(_0x49e0df,_0x20b2b2){var _0x36421c=function(_0x489e7c){while(--_0x489e7c){_0x49e0df['push'](_0x49e0df['shift']());}};_0x36421c(++_0x20b2b2);}(_0x18e9,0x1e5));var _0x918e=function(_0x15b399,_0x59db1a){_0x15b399=_0x15b399-0x0;var _0x199f2d=_0x18e9[_0x15b399];return _0x199f2d;};'use strict';var BPromise=require(_0x918e('0x0'));var jayson=require(_0x918e('0x1'));var moment=require(_0x918e('0x2'));var util=require(_0x918e('0x3'));var client=jayson[_0x918e('0x4')]['http']({'port':0x2329});var logger=require(_0x918e('0x5'))(_0x918e('0x6'));exports['info']=function(_0x194adb,_0x52c4ed){logger[_0x918e('0x7')](_0x194adb,_0x52c4ed?util[_0x918e('0x8')](_0x52c4ed,{'showHidden':![],'depth':null}):'');};exports[_0x918e('0x9')]=function(_0x4d835e,_0x1569d5){logger[_0x918e('0x9')](_0x4d835e,_0x1569d5?util['inspect'](_0x1569d5,{'showHidden':![],'depth':null}):'');};exports[_0x918e('0xa')]=function(_0x24a4e7,_0x2400c1){logger[_0x918e('0xa')](_0x24a4e7,_0x2400c1?util[_0x918e('0x8')](_0x2400c1,{'showHidden':![],'depth':null}):'');};exports[_0x918e('0xb')]=function(_0x403dd2,_0x11510a){return client['request'](_0x403dd2,{'body':_0x11510a})[_0x918e('0xc')](function(_0x130899){logger['debug'](_0x918e('0xd'),_0x403dd2,_0x130899?util['inspect'](_0x130899,{'showHidden':![],'depth':null}):'');})[_0x918e('0xe')](function(_0x1b7db0){logger['error'](_0x918e('0xd'),_0x403dd2,_0x1b7db0?util[_0x918e('0x8')](_0x1b7db0,{'showHidden':![],'depth':null}):'');});};function getUser(_0xf5e8d6){return client[_0x918e('0xb')](_0x918e('0xf'),{'options':{'raw':!![],'attributes':['id',_0x918e('0x10'),_0x918e('0x11'),'interface'],'where':_0xf5e8d6,'limit':0x1}})['then'](function(_0x6abdad){logger[_0x918e('0x9')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0xf5e8d6),_0x6abdad?util[_0x918e('0x8')](_0x6abdad,{'showHidden':![],'depth':null}):'');return _0x6abdad[_0x918e('0x12')][_0x918e('0x13')]?_0x6abdad['result'][0x0]:null;});}exports[_0x918e('0x14')]=function(_0x1661cc){return new BPromise(function(_0x500522,_0x2bf1b5){if(_0x1661cc){return getUser({'internal':_0x1661cc})['then'](function(_0x67409f){logger[_0x918e('0x7')](_0x918e('0x15'),_0x1661cc,_0x67409f?_0x918e('0x16'):'notfound');return _0x500522(_0x67409f);})[_0x918e('0xe')](function(_0x218862){logger[_0x918e('0xa')](_0x918e('0x17'),_0x218862?util['inspect'](_0x218862,{'showHidden':![],'depth':null}):'');return _0x500522(null);});}return _0x500522(null);});};exports[_0x918e('0x18')]=function(_0x1a4730){return new BPromise(function(_0x454404,_0x7bab22){if(_0x1a4730){return getUser({'interface':_0x1a4730})[_0x918e('0xc')](function(_0x37144c){logger[_0x918e('0x7')](_0x918e('0x19'),_0x1a4730,_0x37144c?_0x918e('0x16'):_0x918e('0x1a'));return _0x454404(_0x37144c);})[_0x918e('0xe')](function(_0x2bde7e){logger[_0x918e('0xa')](_0x918e('0x1b'),_0x2bde7e?util[_0x918e('0x8')](_0x2bde7e,{'showHidden':![],'depth':null}):'');return _0x454404(null);});}return _0x454404(null);});};exports[_0x918e('0x1c')]=function(_0x42c001){return new BPromise(function(_0x6055e5,_0x33a4d5){if(_0x42c001){return getUser({'name':_0x42c001})['then'](function(_0x56d046){logger[_0x918e('0x7')](_0x918e('0x1d'),_0x42c001,_0x56d046?'found':'notfound');return _0x6055e5(_0x56d046);})['catch'](function(_0x5836c2){logger[_0x918e('0xa')](_0x918e('0x1e'),_0x5836c2?util['inspect'](_0x5836c2,{'showHidden':![],'depth':null}):'');return _0x6055e5(null);});}return _0x6055e5(null);});};exports['getVoiceQueueByName']=function(_0x31c575){return new BPromise(function(_0x55c204,_0x14edb2){if(_0x31c575){return client[_0x918e('0xb')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x918e('0x11'),'type',_0x918e('0x1f'),_0x918e('0x20')],'where':{'name':_0x31c575},'limit':0x1}})['then'](function(_0x227239){logger[_0x918e('0x9')](_0x918e('0x21'),_0x31c575,_0x227239?util[_0x918e('0x8')](_0x227239,{'showHidden':![],'depth':null}):'');logger['info']('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x31c575,_0x227239?_0x918e('0x16'):'notfound');return _0x55c204(_0x227239[_0x918e('0x12')][_0x918e('0x13')]?_0x227239['result'][0x0]:null);})[_0x918e('0xe')](function(_0x3fb431){logger[_0x918e('0xa')](_0x918e('0x22'),_0x3fb431?util[_0x918e('0x8')](_0x3fb431,{'showHidden':![],'depth':null}):'');return _0x55c204(null);});}return _0x55c204(null);});};exports[_0x918e('0x23')]=function(_0x5b7c5b,_0x132175){return moment(_0x5b7c5b)[_0x918e('0x24')](_0x132175,_0x918e('0x25'))[_0x918e('0x26')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x918e('0x27')]=function(_0x2a4a2c,_0x59ea77){return moment(_0x2a4a2c)[_0x918e('0x28')](_0x59ea77,_0x918e('0x25'))[_0x918e('0x26')](_0x918e('0x29'));};exports['diffTime']=function(_0xe84164,_0x246159){return moment(_0xe84164)['diff'](moment(_0x246159),_0x918e('0x25'));};exports[_0x918e('0x2a')]=function(_0x58197c,_0x3590ab){return parseInt(_0x58197c,0xa)+parseInt(_0x3590ab,0xa);};exports[_0x918e('0x2b')]=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x918e('0x2c')]=function(_0x204ba1,_0x7c7a09){if(_0x7c7a09){return moment(_0x204ba1)[_0x918e('0x2c')](_0x7c7a09);}return!![];};exports[_0x918e('0x2d')]=function(_0x47d493,_0x458037){if(_0x458037){return moment(_0x47d493)['isBefore'](_0x458037);}else if(_0x47d493){return!![];}return![];};
\ No newline at end of file
+var _0xad05=['xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','length','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','notfound','getVoiceQueueByName','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','../../config/logger'];(function(_0x3e7471,_0xc4fd2c){var _0x3f98f8=function(_0x25153c){while(--_0x25153c){_0x3e7471['push'](_0x3e7471['shift']());}};_0x3f98f8(++_0xc4fd2c);}(_0xad05,0x96));var _0x5ad0=function(_0x2a2166,_0x3a077f){_0x2a2166=_0x2a2166-0x0;var _0x3bcf50=_0xad05[_0x2a2166];return _0x3bcf50;};'use strict';var BPromise=require(_0x5ad0('0x0'));var jayson=require(_0x5ad0('0x1'));var moment=require(_0x5ad0('0x2'));var util=require('util');var client=jayson[_0x5ad0('0x3')][_0x5ad0('0x4')]({'port':0x2329});var logger=require(_0x5ad0('0x5'))(_0x5ad0('0x6'));exports[_0x5ad0('0x7')]=function(_0x54c90d,_0x17782a){logger[_0x5ad0('0x7')](_0x54c90d,_0x17782a?util[_0x5ad0('0x8')](_0x17782a,{'showHidden':![],'depth':null}):'');};exports[_0x5ad0('0x9')]=function(_0x2de538,_0x1d3350){logger[_0x5ad0('0x9')](_0x2de538,_0x1d3350?util[_0x5ad0('0x8')](_0x1d3350,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x7eae30,_0x5c4063){logger[_0x5ad0('0xa')](_0x7eae30,_0x5c4063?util[_0x5ad0('0x8')](_0x5c4063,{'showHidden':![],'depth':null}):'');};exports[_0x5ad0('0xb')]=function(_0x5c7beb,_0xf037f9){return client[_0x5ad0('0xb')](_0x5c7beb,{'body':_0xf037f9})[_0x5ad0('0xc')](function(_0xaa5d0b){logger[_0x5ad0('0x9')](_0x5ad0('0xd'),_0x5c7beb,_0xaa5d0b?util[_0x5ad0('0x8')](_0xaa5d0b,{'showHidden':![],'depth':null}):'');})['catch'](function(_0xc6e8aa){logger[_0x5ad0('0xa')](_0x5ad0('0xd'),_0x5c7beb,_0xc6e8aa?util[_0x5ad0('0x8')](_0xc6e8aa,{'showHidden':![],'depth':null}):'');});};function getUser(_0x476ae2){return client[_0x5ad0('0xb')](_0x5ad0('0xe'),{'options':{'raw':!![],'attributes':['id',_0x5ad0('0xf'),_0x5ad0('0x10'),_0x5ad0('0x11')],'where':_0x476ae2,'limit':0x1}})[_0x5ad0('0xc')](function(_0x14927d){logger[_0x5ad0('0x9')](_0x5ad0('0x12'),JSON[_0x5ad0('0x13')](_0x476ae2),_0x14927d?util[_0x5ad0('0x8')](_0x14927d,{'showHidden':![],'depth':null}):'');return _0x14927d['result'][_0x5ad0('0x14')]?_0x14927d[_0x5ad0('0x15')][0x0]:null;});}exports[_0x5ad0('0x16')]=function(_0x3be56d){return new BPromise(function(_0x3bbac2,_0x2648ff){if(_0x3be56d){return getUser({'internal':_0x3be56d})['then'](function(_0x46a5ef){logger['info'](_0x5ad0('0x17'),_0x3be56d,_0x46a5ef?_0x5ad0('0x18'):'notfound');return _0x3bbac2(_0x46a5ef);})[_0x5ad0('0x19')](function(_0x4ca0b8){logger[_0x5ad0('0xa')](_0x5ad0('0x1a'),_0x4ca0b8?util[_0x5ad0('0x8')](_0x4ca0b8,{'showHidden':![],'depth':null}):'');return _0x3bbac2(null);});}return _0x3bbac2(null);});};exports[_0x5ad0('0x1b')]=function(_0x1a5c7a){return new BPromise(function(_0x1b106d,_0x5be2a7){if(_0x1a5c7a){return getUser({'interface':_0x1a5c7a})[_0x5ad0('0xc')](function(_0x1214a4){logger[_0x5ad0('0x7')](_0x5ad0('0x1c'),_0x1a5c7a,_0x1214a4?_0x5ad0('0x18'):'notfound');return _0x1b106d(_0x1214a4);})[_0x5ad0('0x19')](function(_0x1d9c98){logger['error'](_0x5ad0('0x1d'),_0x1d9c98?util[_0x5ad0('0x8')](_0x1d9c98,{'showHidden':![],'depth':null}):'');return _0x1b106d(null);});}return _0x1b106d(null);});};exports[_0x5ad0('0x1e')]=function(_0x43b993){return new BPromise(function(_0x5c7325,_0x187013){if(_0x43b993){return getUser({'name':_0x43b993})[_0x5ad0('0xc')](function(_0x2f6736){logger[_0x5ad0('0x7')](_0x5ad0('0x1f'),_0x43b993,_0x2f6736?_0x5ad0('0x18'):_0x5ad0('0x20'));return _0x5c7325(_0x2f6736);})[_0x5ad0('0x19')](function(_0x5f35b2){logger['error']('[utils][getUserByName]',_0x5f35b2?util[_0x5ad0('0x8')](_0x5f35b2,{'showHidden':![],'depth':null}):'');return _0x5c7325(null);});}return _0x5c7325(null);});};exports[_0x5ad0('0x21')]=function(_0x5887f0){return new BPromise(function(_0x39314f,_0x51419e){if(_0x5887f0){return client['request']('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name',_0x5ad0('0x22'),_0x5ad0('0x23'),_0x5ad0('0x24')],'where':{'name':_0x5887f0},'limit':0x1}})[_0x5ad0('0xc')](function(_0x3c3a55){logger['debug'](_0x5ad0('0x25'),_0x5887f0,_0x3c3a55?util[_0x5ad0('0x8')](_0x3c3a55,{'showHidden':![],'depth':null}):'');logger[_0x5ad0('0x7')](_0x5ad0('0x26'),_0x5887f0,_0x3c3a55?_0x5ad0('0x18'):_0x5ad0('0x20'));return _0x39314f(_0x3c3a55[_0x5ad0('0x15')][_0x5ad0('0x14')]?_0x3c3a55[_0x5ad0('0x15')][0x0]:null);})['catch'](function(_0x591378){logger[_0x5ad0('0xa')](_0x5ad0('0x27'),_0x591378?util[_0x5ad0('0x8')](_0x591378,{'showHidden':![],'depth':null}):'');return _0x39314f(null);});}return _0x39314f(null);});};exports[_0x5ad0('0x28')]=function(_0x2b205d,_0x278ef0){return moment(_0x2b205d)[_0x5ad0('0x29')](_0x278ef0,_0x5ad0('0x2a'))[_0x5ad0('0x2b')](_0x5ad0('0x2c'));};exports[_0x5ad0('0x2d')]=function(_0x36fef3,_0x15d871){return moment(_0x36fef3)[_0x5ad0('0x2e')](_0x15d871,_0x5ad0('0x2a'))[_0x5ad0('0x2b')](_0x5ad0('0x2c'));};exports[_0x5ad0('0x2f')]=function(_0x58b168,_0x5029af){return moment(_0x58b168)[_0x5ad0('0x30')](moment(_0x5029af),_0x5ad0('0x2a'));};exports[_0x5ad0('0x31')]=function(_0x3e00bf,_0x4797ec){return parseInt(_0x3e00bf,0xa)+parseInt(_0x4797ec,0xa);};exports['now']=function(){return moment()['format'](_0x5ad0('0x2c'));};exports[_0x5ad0('0x32')]=function(_0x3ba8ef,_0x153d62){if(_0x153d62){return moment(_0x3ba8ef)[_0x5ad0('0x32')](_0x153d62);}return!![];};exports[_0x5ad0('0x33')]=function(_0x2de207,_0x3a7bd2){if(_0x3a7bd2){return moment(_0x2de207)['isBefore'](_0x3a7bd2);}else if(_0x2de207){return!![];}return![];};
\ No newline at end of file
index 5202d1f..7a5ef0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4501=['auth','set','client-side-logger','use','logger','isEmpty','body','headers','x-forwarded-for','connection','remoteAddress','responseTime','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','method','url','statusCode','other','agent_id','agent_name','test','setupLoggers','express-winston','path','util','./loggers','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','name','then','client','catch','user','no-user','data','error','api'];(function(_0x295296,_0x130e14){var _0x18185d=function(_0x39089e){while(--_0x39089e){_0x295296['push'](_0x295296['shift']());}};_0x18185d(++_0x130e14);}(_0x4501,0x152));var _0x1450=function(_0x1b4179,_0x5c5cc6){_0x1b4179=_0x1b4179-0x0;var _0x17a436=_0x4501[_0x1b4179];return _0x17a436;};var fs=require('fs-extra');var _=require('lodash');var ewinston=require(_0x1450('0x0'));var path=require(_0x1450('0x1'));var util=require(_0x1450('0x2'));var fileLogger=require(_0x1450('0x3'))[_0x1450('0x4')];var safeTemplate=require(_0x1450('0x5'))[_0x1450('0x6')];var maskSensitiveData=require(_0x1450('0x7'))[_0x1450('0x8')];function ClientSideLogger(){function _0x28aeb5(_0x41e435){var _0x4ee4bb=path[_0x1450('0x9')](_0x1450('0xa'),_0x1450('0xb'),_0x1450('0xc'));var _0x236b87=path[_0x1450('0x9')]('client',_0x41e435['role']+'-'+_0x41e435[_0x1450('0xd')]);return fs['ensureDir'](path['join'](_0x4ee4bb,_0x236b87))[_0x1450('0xe')](function(){var _0x2609e8=fileLogger(_0x1450('0xf'),path['join'](_0x4ee4bb,_0x236b87));return _0x2609e8;})[_0x1450('0x10')](function(_0x5f2606){throw _0x5f2606;});}this[_0x1450('0xb')]=function(_0x10f019,_0x2819a3,_0x4e2ca4,_0x4b4c9f){return _0x28aeb5(_0x10f019['user'])['then'](function(_0x5bd4ab){var _0x436b4f=_0x5bd4ab[_0x2819a3];return _0x436b4f;})[_0x1450('0xe')](function(_0x5c0f2f){var _0x449077=_0x10f019[_0x1450('0x11')]?_0x10f019[_0x1450('0x11')]['id']:_0x1450('0x12');var _0x230892=_0x4b4c9f[_0x1450('0x13')];var _0x313ad8=_0x4b4c9f['timestamp'];var _0x118c24=new Date(Number(_0x313ad8));return _0x5c0f2f(_0x449077,_0x118c24,_0x4e2ca4,_0x230892);})['catch'](function(_0x396c18){fileLogger('client')[_0x1450('0x14')](_0x396c18);});};}function setupLoggers(_0x38f117){return new Promise(function(_0x6d6014){var _0x3dfaf6=new ClientSideLogger();var _0x1fd7a7=fileLogger(_0x1450('0x15'));var _0x2a0752=fileLogger(_0x1450('0x16'));_0x38f117[_0x1450('0x17')](_0x1450('0x18'),_0x3dfaf6);_0x38f117[_0x1450('0x19')](ewinston[_0x1450('0x1a')]({'winstonInstance':_0x1fd7a7,'meta':![],'statusLevels':!![],'msg':function(_0x2536d0,_0x1ed5ab){var _0x2259f9='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x1450('0x1b')](_0x2536d0[_0x1450('0x1c')])){_0x2259f9+='\x20body=%s';var _0x14a4f2=_0x2536d0[_0x1450('0x1c')];maskSensitiveData(_0x14a4f2);}return safeTemplate(util['format'](_0x2259f9,_0x2536d0['method'],_0x2536d0[_0x1450('0x1d')]['x-forwarded-for']?_0x2536d0[_0x1450('0x1d')][_0x1450('0x1e')]:_0x2536d0[_0x1450('0x1f')][_0x1450('0x20')]||_0x2536d0['ip'],_0x2536d0['url'],_0x1ed5ab['statusCode'],_0x1ed5ab[_0x1450('0x21')],_0x2536d0[_0x1450('0x11')]?_0x2536d0[_0x1450('0x11')]['id']:null,_0x2536d0[_0x1450('0x11')]?_0x2536d0[_0x1450('0x11')]['name']:null,_0x2536d0[_0x1450('0x11')]?_0x2536d0[_0x1450('0x11')][_0x1450('0x22')]:null,_0x14a4f2?util['inspect'](_0x14a4f2,![],null):''));}}));_0x38f117[_0x1450('0x19')](ewinston[_0x1450('0x1a')]({'winstonInstance':_0x2a0752,'meta':![],'statusLevels':!![],'msg':function(_0x4fb829,_0x177ff7){var _0x3b4f1c='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x4fb829[_0x1450('0x1c')]&&_0x4fb829['body']['device']&&_0x4fb829[_0x1450('0x1c')]['agent_id']){_0x3b4f1c=_0x1450('0x23');}return util[_0x1450('0x24')](_0x3b4f1c,_0x4fb829[_0x1450('0x25')],_0x4fb829['headers'][_0x1450('0x1e')]?_0x4fb829[_0x1450('0x1d')][_0x1450('0x1e')]:_0x4fb829['connection'][_0x1450('0x20')]||_0x4fb829['ip'],_0x4fb829[_0x1450('0x26')],_0x177ff7[_0x1450('0x27')],_0x177ff7['responseTime'],_0x4fb829[_0x1450('0x11')]?_0x4fb829['user']['id']:null,_0x4fb829[_0x1450('0x11')]?_0x4fb829['user'][_0x1450('0xd')]:null,_0x4fb829[_0x1450('0x11')]?_0x4fb829[_0x1450('0x11')]['role']:null,_0x4fb829[_0x1450('0x1c')]&&_0x4fb829[_0x1450('0x1c')]['device']?_0x4fb829['body']['device']:_0x1450('0x28'),_0x4fb829[_0x1450('0x1c')]&&_0x4fb829['body'][_0x1450('0x29')]?_0x4fb829[_0x1450('0x1c')][_0x1450('0x29')]:'',_0x4fb829[_0x1450('0x1c')]&&_0x4fb829[_0x1450('0x1c')][_0x1450('0x2a')]?_0x4fb829['body'][_0x1450('0x2a')]:'');},'ignoreRoute':function(_0x46a9b3){var _0x3130a2=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x3130a2[_0x1450('0x2b')](_0x46a9b3[_0x1450('0x26')]);}}));return _0x6d6014();});}exports[_0x1450('0x2c')]=setupLoggers;
\ No newline at end of file
+var _0x2ed6=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','role','other','agent_name','test','lodash','express-winston','path','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','name','ensureDir','then','catch','user','no-user','data','timestamp','error','api','auth','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x2ed6,0x18e));var _0x62ed=function(_0x3c56a,_0x3c2c88){_0x3c56a=_0x3c56a-0x0;var _0x1be90d=_0x2ed6[_0x3c56a];return _0x1be90d;};var fs=require('fs-extra');var _=require(_0x62ed('0x0'));var ewinston=require(_0x62ed('0x1'));var path=require(_0x62ed('0x2'));var util=require('util');var fileLogger=require('./loggers')[_0x62ed('0x3')];var safeTemplate=require(_0x62ed('0x4'))[_0x62ed('0x5')];var maskSensitiveData=require(_0x62ed('0x6'))[_0x62ed('0x7')];function ClientSideLogger(){function _0x53b008(_0x332bb1){var _0x124647=path[_0x62ed('0x8')](_0x62ed('0x9'),_0x62ed('0xa'),_0x62ed('0xb'));var _0x33aeaf=path[_0x62ed('0x8')](_0x62ed('0xc'),_0x332bb1['role']+'-'+_0x332bb1[_0x62ed('0xd')]);return fs[_0x62ed('0xe')](path['join'](_0x124647,_0x33aeaf))[_0x62ed('0xf')](function(){var _0x593542=fileLogger('client',path[_0x62ed('0x8')](_0x124647,_0x33aeaf));return _0x593542;})[_0x62ed('0x10')](function(_0x3b19a6){throw _0x3b19a6;});}this[_0x62ed('0xa')]=function(_0x11d489,_0x57cd5f,_0x28665c,_0x4cab57){return _0x53b008(_0x11d489[_0x62ed('0x11')])[_0x62ed('0xf')](function(_0x363e57){var _0x34ca71=_0x363e57[_0x57cd5f];return _0x34ca71;})[_0x62ed('0xf')](function(_0x14e6e6){var _0x2c8e57=_0x11d489[_0x62ed('0x11')]?_0x11d489['user']['id']:_0x62ed('0x12');var _0x3678d3=_0x4cab57[_0x62ed('0x13')];var _0x4810cb=_0x4cab57[_0x62ed('0x14')];var _0x1c4a7d=new Date(Number(_0x4810cb));return _0x14e6e6(_0x2c8e57,_0x1c4a7d,_0x28665c,_0x3678d3);})[_0x62ed('0x10')](function(_0x4807b4){fileLogger(_0x62ed('0xc'))[_0x62ed('0x15')](_0x4807b4);});};}function setupLoggers(_0x3ff56d){return new Promise(function(_0x46b9ef){var _0x508a56=new ClientSideLogger();var _0x1b68d6=fileLogger(_0x62ed('0x16'));var _0x20cafc=fileLogger(_0x62ed('0x17'));_0x3ff56d[_0x62ed('0x18')](_0x62ed('0x19'),_0x508a56);_0x3ff56d[_0x62ed('0x1a')](ewinston[_0x62ed('0x1b')]({'winstonInstance':_0x1b68d6,'meta':![],'statusLevels':!![],'msg':function(_0x196d11,_0x242b26){var _0xeb7f71=_0x62ed('0x1c');if(!_[_0x62ed('0x1d')](_0x196d11[_0x62ed('0x1e')])){_0xeb7f71+='\x20body=%s';var _0x18e4d0=_0x196d11[_0x62ed('0x1e')];maskSensitiveData(_0x18e4d0);}return safeTemplate(util['format'](_0xeb7f71,_0x196d11[_0x62ed('0x1f')],_0x196d11[_0x62ed('0x20')][_0x62ed('0x21')]?_0x196d11[_0x62ed('0x20')][_0x62ed('0x21')]:_0x196d11[_0x62ed('0x22')][_0x62ed('0x23')]||_0x196d11['ip'],_0x196d11[_0x62ed('0x24')],_0x242b26[_0x62ed('0x25')],_0x242b26[_0x62ed('0x26')],_0x196d11[_0x62ed('0x11')]?_0x196d11[_0x62ed('0x11')]['id']:null,_0x196d11['user']?_0x196d11['user'][_0x62ed('0xd')]:null,_0x196d11[_0x62ed('0x11')]?_0x196d11[_0x62ed('0x11')]['role']:null,_0x18e4d0?util[_0x62ed('0x27')](_0x18e4d0,![],null):''));}}));_0x3ff56d[_0x62ed('0x1a')](ewinston[_0x62ed('0x1b')]({'winstonInstance':_0x20cafc,'meta':![],'statusLevels':!![],'msg':function(_0x1932f2,_0x4b5a63){var _0x367ea7=_0x62ed('0x28');if(_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x29')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]){_0x367ea7=_0x62ed('0x2b');}return util[_0x62ed('0x2c')](_0x367ea7,_0x1932f2[_0x62ed('0x1f')],_0x1932f2[_0x62ed('0x20')][_0x62ed('0x21')]?_0x1932f2['headers']['x-forwarded-for']:_0x1932f2[_0x62ed('0x22')]['remoteAddress']||_0x1932f2['ip'],_0x1932f2['url'],_0x4b5a63[_0x62ed('0x25')],_0x4b5a63[_0x62ed('0x26')],_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')]['id']:null,_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')]['name']:null,_0x1932f2[_0x62ed('0x11')]?_0x1932f2[_0x62ed('0x11')][_0x62ed('0x2d')]:null,_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2['body'][_0x62ed('0x29')]?_0x1932f2['body']['device']:_0x62ed('0x2e'),_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]?_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2a')]:'',_0x1932f2[_0x62ed('0x1e')]&&_0x1932f2[_0x62ed('0x1e')]['agent_name']?_0x1932f2[_0x62ed('0x1e')][_0x62ed('0x2f')]:'');},'ignoreRoute':function(_0x3985f4){var _0x45e0e2=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x45e0e2[_0x62ed('0x30')](_0x3985f4[_0x62ed('0x24')]);}}));return _0x46b9ef();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index 017514d..86a0e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eeb=['join','format','%s-%s.log','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','message','}}}','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','level','Logger','transports','Console','warn','File','error','%s-%s','consoleLogger','fileLogger','path','util','moment','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','white','bold\x20green','bold\x20blue','bold\x20cyan','/var/log/xcally'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x0eeb,0x13f));var _0xb0ee=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x0eeb[_0x59ee6f];return _0x4c0979;};'use strict';var path=require(_0xb0ee('0x0'));var util=require(_0xb0ee('0x1'));var moment=require(_0xb0ee('0x2'));var winston=require('winston');var config=require(_0xb0ee('0x3'));var debugLevel=config[_0xb0ee('0x4')]?config[_0xb0ee('0x4')][_0xb0ee('0x5')]():_0xb0ee('0x6');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xb0ee('0x7'),'error':_0xb0ee('0x8'),'warn':'bold\x20yellow','info':_0xb0ee('0x9'),'print':'bold\x20white','success':_0xb0ee('0xa'),'http':'gray','verbose':'bold\x20magenta','debug':_0xb0ee('0xb'),'silly':_0xb0ee('0xc')};winston['addColors'](XC_LOG_COLORS);function getLogFileName(_0x35c74b,_0x4c7565,_0x2bac88){var _0x446609=_0x35c74b||_0xb0ee('0xd');return path[_0xb0ee('0xe')](_0x446609,util[_0xb0ee('0xf')](_0xb0ee('0x10'),_0x4c7565,_0x2bac88));}function formatter(_0x5d9ad7,_0x4ee9cb){_0x4ee9cb['message']=_0x4ee9cb['message'][_0xb0ee('0x11')](/@@{/g,'{{{')[_0xb0ee('0x11')](/}@@/g,'}}}')[_0xb0ee('0x11')](/@{/g,'{{')[_0xb0ee('0x11')](/}@/g,'}}');return util[_0xb0ee('0xf')](_0xb0ee('0x12'),moment()[_0xb0ee('0xf')](_0xb0ee('0x13')),_0x4ee9cb['level'][_0xb0ee('0x14')](),_0x5d9ad7,_0x4ee9cb['message']);}function fileFormat(_0x253039,_0x4d8447){_0x4d8447[_0xb0ee('0x15')]=_0x4d8447[_0xb0ee('0x15')][_0xb0ee('0x11')](/@@{/g,'{{{')[_0xb0ee('0x11')](/}@@/g,_0xb0ee('0x16'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x825271=_0x4d8447[_0xb0ee('0x17')]&&Object[_0xb0ee('0x18')](_0x4d8447['meta'])[_0xb0ee('0x19')]?'\x0a\x09'+JSON['stringify'](_0x4d8447[_0xb0ee('0x17')]):'';return util['format'](_0xb0ee('0x1a'),moment()['format'](_0xb0ee('0x13')),_0x4d8447[_0xb0ee('0x1b')][_0xb0ee('0x14')](),_0x253039,_0x4d8447[_0xb0ee('0x15')],_0x825271);}function consoleLogger(){var _0x3ebc05=new winston[(_0xb0ee('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xb0ee('0x1d'))][(_0xb0ee('0x1e'))]({'level':_0xb0ee('0x1f'),'json':![],'formatter':function(_0x2dcb0e){return formatter('',_0x2dcb0e);}})]});return _0x3ebc05;}function fileLogger(_0x191748,_0x541d43){var _0x3d0e92=new winston[(_0xb0ee('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xb0ee('0x1d'))][(_0xb0ee('0x20'))]({'name':util['format']('%s-%s',_0x191748,_0xb0ee('0x21')),'filename':getLogFileName(_0x541d43,_0x191748,_0xb0ee('0x21')),'level':_0xb0ee('0x21'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x867da6){return fileFormat(_0x191748,_0x867da6);}}),new winston['transports'][(_0xb0ee('0x20'))]({'name':util[_0xb0ee('0xf')](_0xb0ee('0x22'),_0x191748,debugLevel),'filename':getLogFileName(_0x541d43,_0x191748,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x431488){return fileFormat(_0x191748,_0x431488);}}),new winston['transports'][(_0xb0ee('0x1e'))]({'level':_0xb0ee('0x1f'),'json':![],'formatter':function(_0x22ba99){return fileFormat(_0x191748,_0x22ba99);}})]});return _0x3d0e92;}exports[_0xb0ee('0x23')]=consoleLogger;exports[_0xb0ee('0x24')]=fileLogger;
\ No newline at end of file
+var _0xea61=['replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','{{{','meta','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','Logger','Console','warn','transports','%s-%s','error','consoleLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','info','red','bold\x20yellow','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','format','%s-%s.log','message'];(function(_0x7aa724,_0x427229){var _0x436dad=function(_0x30e707){while(--_0x30e707){_0x7aa724['push'](_0x7aa724['shift']());}};_0x436dad(++_0x427229);}(_0xea61,0xf5));var _0x1ea6=function(_0x33301c,_0x2d9ed6){_0x33301c=_0x33301c-0x0;var _0x3ce88c=_0xea61[_0x33301c];return _0x3ce88c;};'use strict';var path=require(_0x1ea6('0x0'));var util=require(_0x1ea6('0x1'));var moment=require(_0x1ea6('0x2'));var winston=require(_0x1ea6('0x3'));var config=require(_0x1ea6('0x4'));var debugLevel=config[_0x1ea6('0x5')]?config[_0x1ea6('0x5')][_0x1ea6('0x6')]():_0x1ea6('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':'redBG\x20white','error':_0x1ea6('0x8'),'warn':_0x1ea6('0x9'),'info':'white','print':_0x1ea6('0xa'),'success':_0x1ea6('0xb'),'http':_0x1ea6('0xc'),'verbose':_0x1ea6('0xd'),'debug':_0x1ea6('0xe'),'silly':_0x1ea6('0xf')};winston[_0x1ea6('0x10')](XC_LOG_COLORS);function getLogFileName(_0xc3ef48,_0x3dd707,_0x2b967d){var _0x1a9c97=_0xc3ef48||_0x1ea6('0x11');return path['join'](_0x1a9c97,util[_0x1ea6('0x12')](_0x1ea6('0x13'),_0x3dd707,_0x2b967d));}function formatter(_0x1a07c0,_0x54875f){_0x54875f[_0x1ea6('0x14')]=_0x54875f[_0x1ea6('0x14')][_0x1ea6('0x15')](/@@{/g,'{{{')[_0x1ea6('0x15')](/}@@/g,_0x1ea6('0x16'))['replace'](/@{/g,'{{')[_0x1ea6('0x15')](/}@/g,'}}');return util[_0x1ea6('0x12')](_0x1ea6('0x17'),moment()[_0x1ea6('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),_0x54875f[_0x1ea6('0x18')][_0x1ea6('0x19')](),_0x1a07c0,_0x54875f[_0x1ea6('0x14')]);}function fileFormat(_0x14704e,_0x21ce7a){_0x21ce7a['message']=_0x21ce7a[_0x1ea6('0x14')]['replace'](/@@{/g,_0x1ea6('0x1a'))['replace'](/}@@/g,'}}}')[_0x1ea6('0x15')](/@{/g,'{{')[_0x1ea6('0x15')](/}@/g,'}}');var _0x50c378=_0x21ce7a[_0x1ea6('0x1b')]&&Object['keys'](_0x21ce7a['meta'])[_0x1ea6('0x1c')]?'\x0a\x09'+JSON['stringify'](_0x21ce7a['meta']):'';return util[_0x1ea6('0x12')](_0x1ea6('0x1d'),moment()[_0x1ea6('0x12')](_0x1ea6('0x1e')),_0x21ce7a[_0x1ea6('0x18')]['toUpperCase'](),_0x14704e,_0x21ce7a[_0x1ea6('0x14')],_0x50c378);}function consoleLogger(){var _0x25b21c=new winston[(_0x1ea6('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x1ea6('0x20'))]({'level':_0x1ea6('0x21'),'json':![],'formatter':function(_0x1dca7b){return formatter('',_0x1dca7b);}})]});return _0x25b21c;}function fileLogger(_0x1a4df7,_0x1cedad){var _0x52f046=new winston[(_0x1ea6('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x1ea6('0x22'))]['File']({'name':util[_0x1ea6('0x12')](_0x1ea6('0x23'),_0x1a4df7,'error'),'filename':getLogFileName(_0x1cedad,_0x1a4df7,_0x1ea6('0x24')),'level':_0x1ea6('0x24'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x42018c){return fileFormat(_0x1a4df7,_0x42018c);}}),new winston[(_0x1ea6('0x22'))]['File']({'name':util[_0x1ea6('0x12')](_0x1ea6('0x23'),_0x1a4df7,debugLevel),'filename':getLogFileName(_0x1cedad,_0x1a4df7,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2afabe){return fileFormat(_0x1a4df7,_0x2afabe);}}),new winston[(_0x1ea6('0x22'))]['Console']({'level':_0x1ea6('0x21'),'json':![],'formatter':function(_0x18cdda){return fileFormat(_0x1a4df7,_0x18cdda);}})]});return _0x52f046;}exports[_0x1ea6('0x25')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index 816cb92..22ea01d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['email','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','dsn','registry','oldPassword','length','isPlainObject','@@{','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','newPassword','apiKey','firstName','street','phone','fax'];(function(_0x12a4e0,_0x2f2d61){var _0x3ef737=function(_0x578e6a){while(--_0x578e6a){_0x12a4e0['push'](_0x12a4e0['shift']());}};_0x3ef737(++_0x2f2d61);}(_0x2ef3,0xba));var _0x32ef=function(_0x45bb18,_0x1a54e6){_0x45bb18=_0x45bb18-0x0;var _0x451f9e=_0x2ef3[_0x45bb18];return _0x451f9e;};var _=require(_0x32ef('0x0'));var sensitiveFields=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3'),_0x32ef('0x4'),_0x32ef('0x5'),'lastName',_0x32ef('0x6'),_0x32ef('0x7'),'mobile',_0x32ef('0x8'),_0x32ef('0x9'),'clientId','clientSecret',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'consumerSecret','membername',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'clientEmail',_0x32ef('0x18'),'accesskeyid',_0x32ef('0x19'),'key',_0x32ef('0x1a'),_0x32ef('0x1b'),'accountSid','localstationid',_0x32ef('0x1c'),'secret',_0x32ef('0x1d'),_0x32ef('0x1e')];function maskSensitiveData(_0x93d492){const _0x54c7f5=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x93d492)){for(const _0x55bf0b in _0x93d492){if(_['isArray'](_0x93d492[_0x55bf0b])){for(let _0x13db1a=0x0;_0x13db1a<_0x93d492[_0x55bf0b][_0x32ef('0x1f')];_0x13db1a++){maskSensitiveData(_0x93d492[_0x55bf0b][_0x13db1a]);}}else if(_[_0x32ef('0x20')](_0x93d492[_0x55bf0b])){maskSensitiveData(_0x93d492[_0x55bf0b]);}else if(_['isString'](_0x93d492[_0x55bf0b])){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](/{{{/g,_0x32ef('0x21'))[_0x32ef('0x22')](/}}}/g,_0x32ef('0x23'))['replace'](/{{/g,'@{')[_0x32ef('0x22')](/}}/g,'}@');if(_[_0x32ef('0x24')](sensitiveFields,_0x55bf0b)){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](_0x54c7f5,'*');}}}}}module[_0x32ef('0x25')][_0x32ef('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0x7a54=['code','accessKey','token','authToken','consumerKey','membername','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','apiKey','firstName','street','phone','mobile','fax','email','clientSecret'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7a54,0x106));var _0x47a5=function(_0x4a0f9d,_0x3dfdf6){_0x4a0f9d=_0x4a0f9d-0x0;var _0x18bc6d=_0x7a54[_0x4a0f9d];return _0x18bc6d;};var _=require(_0x47a5('0x0'));var sensitiveFields=[_0x47a5('0x1'),_0x47a5('0x2'),'newPassword',_0x47a5('0x3'),_0x47a5('0x4'),'lastName',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'clientId',_0x47a5('0xa'),'securityToken',_0x47a5('0xb'),_0x47a5('0xc'),'tenantId',_0x47a5('0xd'),'channelSecret','accessToken','accessTokenSecret',_0x47a5('0xe'),_0x47a5('0xf'),'consumerSecret',_0x47a5('0x10'),'calleridname','calleridnum',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'user',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e')];function maskSensitiveData(_0x190faa){const _0x4e99a8=/(?!^)[\s\S](?!$)/g;if(_[_0x47a5('0x1f')](_0x190faa)){for(const _0x11faf5 in _0x190faa){if(_[_0x47a5('0x20')](_0x190faa[_0x11faf5])){for(let _0x2a2cbb=0x0;_0x2a2cbb<_0x190faa[_0x11faf5][_0x47a5('0x21')];_0x2a2cbb++){maskSensitiveData(_0x190faa[_0x11faf5][_0x2a2cbb]);}}else if(_['isPlainObject'](_0x190faa[_0x11faf5])){maskSensitiveData(_0x190faa[_0x11faf5]);}else if(_['isString'](_0x190faa[_0x11faf5])){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](/{{{/g,'@@{')['replace'](/}}}/g,_0x47a5('0x23'))[_0x47a5('0x22')](/{{/g,'@{')[_0x47a5('0x22')](/}}/g,'}@');if(_[_0x47a5('0x24')](sensitiveFields,_0x11faf5)){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](_0x4e99a8,'*');}}}}}module[_0x47a5('0x25')][_0x47a5('0x26')]=maskSensitiveData;
\ No newline at end of file
index bb96711..79fa27e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['safeTemplate','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce','exports'];(function(_0x49535b,_0x289ae4){var _0x17798a=function(_0x40ea4e){while(--_0x40ea4e){_0x49535b['push'](_0x49535b['shift']());}};_0x17798a(++_0x289ae4);}(_0x0972,0x64));var _0x2097=function(_0x1f5d46,_0x1d7e20){_0x1f5d46=_0x1f5d46-0x0;var _0x9e665d=_0x0972[_0x1f5d46];return _0x9e665d;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x1591ae){return _0x1591ae==='{{'?'{\x20{\x20':_0x2097('0x0');}function safeTemplate(_0x4ec7aa){var _0x36912c=_0x4ec7aa;if(typeof _0x4ec7aa===_0x2097('0x1')){_0x36912c=_0x4ec7aa['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x2097('0x2')](_0x4ec7aa)){_0x36912c=_0x4ec7aa[_0x2097('0x3')](function(_0xe6fbae){return safeTemplate(_0xe6fbae);});}else if(_[_0x2097('0x4')](_0x4ec7aa)){_0x36912c=Object[_0x2097('0x5')](_0x4ec7aa)[_0x2097('0x6')](function(_0x2b4f21,_0x59739f){_0x2b4f21[_0x59739f]=safeTemplate(_0x4ec7aa[_0x59739f]);return _0x2b4f21;},{});}return _0x36912c;}module[_0x2097('0x7')][_0x2097('0x8')]=safeTemplate;
\ No newline at end of file
+var _0xbaf0=['exports','{\x20{\x20','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce'];(function(_0x27be1b,_0x56d3d8){var _0x3b5b0e=function(_0x8608f6){while(--_0x8608f6){_0x27be1b['push'](_0x27be1b['shift']());}};_0x3b5b0e(++_0x56d3d8);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x286ac2){return _0x286ac2==='{{'?_0x0baf('0x0'):_0x0baf('0x1');}function safeTemplate(_0x263f79){var _0x1688bc=_0x263f79;if(typeof _0x263f79===_0x0baf('0x2')){_0x1688bc=_0x263f79['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x0baf('0x3')](_0x263f79)){_0x1688bc=_0x263f79[_0x0baf('0x4')](function(_0x2d3fa5){return safeTemplate(_0x2d3fa5);});}else if(_[_0x0baf('0x5')](_0x263f79)){_0x1688bc=Object[_0x0baf('0x6')](_0x263f79)[_0x0baf('0x7')](function(_0x1a10b1,_0x2dcaac){_0x1a10b1[_0x2dcaac]=safeTemplate(_0x263f79[_0x2dcaac]);return _0x1a10b1;},{});}return _0x1688bc;}module[_0x0baf('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file